DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00707_AAD_S_000020_PKG

Source


1 PACKAGE BODY XLA_00707_AAD_S_000020_PKG AS
2 --
3 /*======================================================================+
4 |                Copyright (c) 1997 Oracle Corporation                  |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | Package Name                                                          |
9 |     XLA_00707_AAD_S_000020_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Permanent Inventory Cost Management Encumbrance        |
14 |      Code    : PI_COST_MANAGEMENT_ENC                                 |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 06:03:03 by user ANONYMOUS             |
20 +=======================================================================*/
21 --
22 --
23 TYPE t_rec_array_event IS RECORD
24    (array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
25    ,array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
26    ,array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
27    ,array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
28    ,array_event_id                       xla_number_array_type --XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
29    ,array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
30    ,array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
31    ,array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
32    ,array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
33    ,array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
34    ,array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
35    ,array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
36    ,array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
37    ,array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
38    ,array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
39    ,array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
40    ,array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
41    ,array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
42    ,array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
43    ,array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
44    ,array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
45    ,array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L
46    );
47 --
48 type t_array_value_num is table of number index by varchar2(30);
49 type t_array_value_char is table of varchar2(240) index by varchar2(30);
50 type t_array_value_date is table of date index by varchar2(30);
51 
52 type t_rec_value is record
53  (array_value_num     t_array_value_num
54  ,array_value_char    t_array_value_char
55  ,array_value_date    t_array_value_date);
56 
57 type t_array_event is table of  t_rec_value index by binary_integer;
58 
59 g_array_event   t_array_event;
60 
61 --=============================================================================
62 --               *********** Diagnostics **********
63 --=============================================================================
64 
65 g_diagnostics_mode          VARCHAR2(1);
66 g_last_hdr_idx              NUMBER;        -- 4262811 MPA
67 g_hdr_extract_count         PLS_INTEGER;
68 
69 --=============================================================================
70 --               *********** Local Trace Routine **********
71 --=============================================================================
72 
73 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
74 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
75 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
76 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
77 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
78 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
79 
80 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
81 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.XLA_00707_AAD_S_000020_PKG';
82 
83 C_CHAR                CONSTANT       VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM                 CONSTANT       NUMBER       := 9.99E125;                 -- 4219869 Business flow
85 
86 g_log_level           NUMBER;
87 g_log_enabled         BOOLEAN;
88 
89 PROCEDURE trace
90            (p_msg                        IN VARCHAR2
91            ,p_level                      IN NUMBER
92            ,p_module                     IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98           fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100           fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102 
103 EXCEPTION
104        WHEN xla_exceptions_pkg.application_exception THEN
105           RAISE;
106        WHEN OTHERS THEN
107           xla_exceptions_pkg.raise_message
108              (p_location   => 'XLA_00707_AAD_S_000020_PKG.trace');
109 END trace;
110 
111 --
112 --+============================================+
113 --|                                            |
114 --|  PRIVATE  PROCEDURES/FUNCTIONS             |
115 --|                                            |
116 --+============================================+
117 --
118 
119 --
120 /*======================================================================+
121 |                                                                       |
122 | Private Function                                                      |
123 |    ValidateLookupMeaning                                              |
124 |                                                                       |
125 +======================================================================*/
126 FUNCTION ValidateLookupMeaning(
127   p_meaning                IN VARCHAR2
128 , p_lookup_code            IN VARCHAR2
129 , p_lookup_type            IN VARCHAR2
130 , p_source_code            IN VARCHAR2
131 , p_source_type_code       IN VARCHAR2
132 , p_source_application_id  IN INTEGER
133 )
134 RETURN VARCHAR2
135 IS
136 l_log_module         VARCHAR2(240);
137 BEGIN
138 IF g_log_enabled THEN
139       l_log_module := C_DEFAULT_MODULE||'.ValidateLookupMeaning';
140 END IF;
141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142       trace
143          (p_msg      => 'BEGIN of ValidateLookupMeaning'
144          ,p_level    => C_LEVEL_PROCEDURE
145          ,p_module   => l_log_module);
146 END IF;
147 --
148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149     trace
150          (p_msg      => 'p_source_code = '|| p_source_code||
151                         ' - p_source_type_code = '|| p_source_type_code||
152                         ' - p_source_application_id = '|| p_source_application_id||
153                         ' - p_lookup_code = '|| p_lookup_code||
154                         ' - p_lookup_type = '|| p_lookup_type||
155                         ' - p_meaning = '|| p_meaning
156          ,p_level    => C_LEVEL_PROCEDURE
157          ,p_module   => l_log_module);
158 
159 END IF;
160 
161 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
162    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163    xla_accounting_err_pkg. build_message
164                (p_appli_s_name            => 'XLA'
165                ,p_msg_name                => 'XLA_AP_NO_LOOKUP_MEANING'
166                ,p_token_1                 => 'SOURCE_NAME'
167                ,p_value_1                 =>  xla_ae_sources_pkg.GetSourceName(
168                                                            p_source_code
169                                                          , p_source_type_code
170                                                          , p_source_application_id
171                                                          )
172                ,p_token_2                 => 'LOOKUP_CODE'
173                ,p_value_2                 =>  p_lookup_code
174                ,p_token_3                 => 'LOOKUP_TYPE'
175                ,p_value_3                 =>  p_lookup_type
176                ,p_token_4                 => 'PRODUCT_NAME'
177                ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178                ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179                ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180                ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
181        );
182 
183    IF (C_LEVEL_ERROR >= g_log_level) THEN
184            trace
185                 (p_msg      => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
186                 ,p_level    => C_LEVEL_ERROR
187                 ,p_module   => l_log_module);
188    END IF;
189 END IF;
190 
191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192         trace
193           (p_msg      => 'END of ValidateLookupMeaning'
194           ,p_level    => C_LEVEL_PROCEDURE
195           ,p_module   => l_log_module);
196 END IF;
197 RETURN p_meaning;
198 EXCEPTION
199 WHEN xla_exceptions_pkg.application_exception THEN
200   RETURN p_meaning;
201 WHEN OTHERS  THEN
202    xla_exceptions_pkg.raise_message
203            (p_location => 'XLA_00707_AAD_S_000020_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 1009615 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(1009615) AND
267        l_array_meaning(1009615).array_flex_value.EXISTS(l_Idx) AND
268        l_array_meaning(1009615).array_flex_value(l_Idx)   = p_flex_value        THEN
269 
270        l_meaning_meaning    := l_array_meaning(1009615).array_meaning(l_Idx);
271 
272     ELSE
273 
274      SELECT COST_ELEMENT
275      INTO   l_meaning_meaning
276      FROM   CST_COST_ELEMENTS
277      WHERE  COST_ELEMENT_ID = p_flex_value
278      ;
279 
280      l_array_meaning(1009615).array_flex_value(l_Idx)       := p_flex_value;
281      l_array_meaning(1009615).array_meaning(l_Idx)          := l_meaning_meaning;
282 
283     END IF;
284 
285    WHEN 1009622 THEN
286 
287     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
288 
289       trace
290          (p_msg      => '-> CALL  DBMS_UTILITY.get_hash_value'
291          ,p_level    => C_LEVEL_PROCEDURE
292          ,p_module   => l_log_module);
293 
294     END IF;
295 
296     l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
297 
298     IF l_array_meaning.EXISTS(1009622) AND
299        l_array_meaning(1009622).array_flex_value.EXISTS(l_Idx) AND
300        l_array_meaning(1009622).array_flex_value(l_Idx)   = p_flex_value        THEN
301 
302        l_meaning_meaning    := l_array_meaning(1009622).array_meaning(l_Idx);
303 
304     ELSE
305 
306      SELECT msi.secondary_inventory_name
307      INTO   l_meaning_meaning
308      FROM   MTL_SECONDARY_INVENTORIES MSI, MTL_PARAMETERS MP
309      WHERE  msi.secondary_inventory_name = p_flex_value      AND  msi.organization_id = mp.organization_id     ;
310 
311      l_array_meaning(1009622).array_flex_value(l_Idx)       := p_flex_value;
312      l_array_meaning(1009622).array_meaning(l_Idx)          := l_meaning_meaning;
313 
314     END IF;
315 
316    WHEN 1010619 THEN
317 
318     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
319 
320       trace
321          (p_msg      => '-> CALL  DBMS_UTILITY.get_hash_value'
322          ,p_level    => C_LEVEL_PROCEDURE
323          ,p_module   => l_log_module);
324 
325     END IF;
326 
327     l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
328 
329     IF l_array_meaning.EXISTS(1010619) AND
330        l_array_meaning(1010619).array_flex_value.EXISTS(l_Idx) AND
331        l_array_meaning(1010619).array_flex_value(l_Idx)   = p_flex_value        THEN
332 
333        l_meaning_meaning    := l_array_meaning(1010619).array_meaning(l_Idx);
334 
335     ELSE
336 
337      SELECT ORGANIZATION_CODE
338      INTO   l_meaning_meaning
339      FROM   ORG_ORGANIZATION_DEFINITIONS
340      WHERE  ORGANIZATION_ID = p_flex_value
341      ;
342 
343      l_array_meaning(1010619).array_flex_value(l_Idx)       := p_flex_value;
344      l_array_meaning(1010619).array_meaning(l_Idx)          := l_meaning_meaning;
345 
346     END IF;
347 
348    WHEN 1010619 THEN
349 
350     IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
351 
352       trace
353          (p_msg      => '-> CALL  DBMS_UTILITY.get_hash_value'
354          ,p_level    => C_LEVEL_PROCEDURE
355          ,p_module   => l_log_module);
356 
357     END IF;
358 
359     l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
360 
361     IF l_array_meaning.EXISTS(1010619) AND
362        l_array_meaning(1010619).array_flex_value.EXISTS(l_Idx) AND
363        l_array_meaning(1010619).array_flex_value(l_Idx)   = p_flex_value        THEN
364 
365        l_meaning_meaning    := l_array_meaning(1010619).array_meaning(l_Idx);
366 
367     ELSE
368 
369      SELECT ORGANIZATION_CODE
370      INTO   l_meaning_meaning
371      FROM   ORG_ORGANIZATION_DEFINITIONS
372      WHERE  ORGANIZATION_ID = p_flex_value
373      ;
374 
375      l_array_meaning(1010619).array_flex_value(l_Idx)       := p_flex_value;
376      l_array_meaning(1010619).array_meaning(l_Idx)          := l_meaning_meaning;
377 
378     END IF;
379 
380  ELSE
381          l_meaning_meaning  := NULL;
382          xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
383          xla_accounting_err_pkg.build_message
384                         (p_appli_s_name            => 'XLA'
385                         ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
386                         ,p_token_1                 => 'VALUE_SET_NAME'
387                         ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
388                         ,p_token_2                 => 'FLEX_VALUE'
389                         ,p_value_2                 =>  p_flex_value
390                         ,p_token_3                 => 'SOURCE_NAME'
391                         ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
392                                                      p_source_code
393                                                    , p_source_type_code
394                                                    , p_source_application_id
395                                                      )
396                         ,p_token_4                 => 'PRODUCT_NAME'
397                         ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
398                         ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
399                         ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
400                         ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
401         );
402       IF (C_LEVEL_ERROR >= g_log_level) THEN
403                          trace
404                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
405                             ,p_level    => C_LEVEL_ERROR
406                             ,p_module   => l_log_module);
407      END IF;
408  END CASE;
409 --
410 END IF;
411 --
412 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
413 
414       trace
415          (p_msg      => 'return value. meaning = '||l_meaning_meaning
416          ,p_level    => C_LEVEL_PROCEDURE
417          ,p_module   => l_log_module);
418 
419       trace
420          (p_msg      => 'END of GetMeaning'
421          ,p_level    => C_LEVEL_PROCEDURE
422          ,p_module   => l_log_module);
423 END IF;
424 --
425 xla_ae_sources_pkg.g_array_meaning := l_array_meaning ;
426 --
427 RETURN l_meaning_meaning ;
428 --
429 EXCEPTION
430 WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
431  --
432       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
433       xla_accounting_err_pkg.build_message
434                 (p_appli_s_name            => 'XLA'
435                 ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
436                 ,p_token_1                 => 'VALUE_SET_NAME'
437                 ,p_value_1                 =>  xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
438                 ,p_token_2                 => 'FLEX_VALUE'
439                 ,p_value_2                 =>  p_flex_value
440                 ,p_token_3                 => 'SOURCE_NAME'
441                 ,p_value_3                 =>  xla_ae_sources_pkg.GetSourceName(
442                                                      p_source_code
443                                                    , p_source_type_code
444                                                    , p_source_application_id
445                                                      )
446                 ,p_token_4                 => 'PRODUCT_NAME'
447                 ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
448                 ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
449                 ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
450                 ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
451         );
452 
453      IF (C_LEVEL_ERROR >= g_log_level) THEN
454                          trace
455                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
456                             ,p_level    => C_LEVEL_ERROR
457                             ,p_module   => l_log_module);
458      END IF;
459 
460      RETURN NULL;
461   WHEN xla_exceptions_pkg.application_exception THEN
462       RAISE;
463   WHEN OTHERS THEN
464        xla_exceptions_pkg.raise_message
465            (p_location => 'XLA_00707_AAD_S_000020_PKG.GetMeaning');
466 END GetMeaning;
467 --
468 
469 ---------------------------------------
470 --
471 -- PRIVATE FUNCTION
472 --         Description_1
473 --
474 ---------------------------------------
475 FUNCTION Description_1 (
476   p_application_id      IN NUMBER
477 , p_ae_header_id        IN NUMBER DEFAULT NULL 
478 --TRANSACTION_ID
479  , p_source_1            IN NUMBER
480 --Item Concatenated Segments
481  , p_source_2            IN VARCHAR2
482 --Transaction Quantity
483  , p_source_3            IN NUMBER
484 --Transaction Unit of Measure Code
485  , p_source_4            IN VARCHAR2
486 --Inventory Transaction Type Description
487  , p_source_5            IN VARCHAR2
488 )
489 RETURN VARCHAR2
490 IS
491 l_component_type        VARCHAR2(80)   ;
492 l_component_code        VARCHAR2(30)   ;
493 l_component_type_code   VARCHAR2(1)    ;
494 l_component_appl_id     INTEGER        ;
495 l_amb_context_code      VARCHAR2(30)   ;
496 l_ledger_language       VARCHAR2(30)   ;
497 l_source                VARCHAR2(1996) ;
498 l_description           VARCHAR2(2000) ;
499 l_log_module            VARCHAR2(240)  ;
500 BEGIN
501 IF g_log_enabled THEN
502       l_log_module := C_DEFAULT_MODULE||'.Description_1';
503 END IF;
504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
505       trace
506          (p_msg      => 'BEGIN of Description_1'
507          ,p_level    => C_LEVEL_PROCEDURE
508          ,p_module   => l_log_module);
509 END IF;
510 
511 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
512 l_component_type        := 'AMB_DESCRIPTION';
513 l_component_code        := 'PI_MATERIAL_TRANSACTION';
514 l_component_type_code   := 'S';
515 l_component_appl_id     :=  707;
516 l_amb_context_code      := 'DEFAULT';
517 l_source                := NULL;
518 l_description           := NULL;
519 
520 
521   
522   l_source := SUBSTR(TO_CHAR(p_source_1),1,1996);
523   IF l_source IS NOT NULL THEN
524     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
525     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
526   END IF;  
527  IF 
528 l_ledger_language = 'US' THEN
529     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
530     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
531  END IF;   
532   l_source := SUBSTR(p_source_2,1,1996);
533   IF l_source IS NOT NULL THEN
534     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
535     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
536   END IF;  
537  IF 
538 l_ledger_language = 'US' THEN
539     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
540     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
541  END IF;   
542   l_source := SUBSTR(TO_CHAR(p_source_3),1,1996);
543   IF l_source IS NOT NULL THEN
544     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
545     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
546   END IF;  
547  IF 
548 l_ledger_language = 'US' THEN
549     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
550     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
551  END IF;   
552   l_source := SUBSTR(p_source_4,1,1996);
553   IF l_source IS NOT NULL THEN
554     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
555     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
556   END IF;  
557  IF 
558 l_ledger_language = 'US' THEN
559     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
560     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
561  END IF;   
562   l_source := SUBSTR(p_source_5,1,1996);
563   IF l_source IS NOT NULL THEN
564     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
565     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
566   END IF; 
567  l_description := SUBSTR(l_description,1,1996);
568   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
569         trace
570            (p_msg      => 'END of Description_1'
571            ,p_level    => C_LEVEL_PROCEDURE
572            ,p_module   => l_log_module);
573 
574   END IF;
575   RETURN l_description;
576 
577 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
578       trace
579          (p_msg      => 'END of Description_1'
580          ,p_level    => C_LEVEL_PROCEDURE
581          ,p_module   => l_log_module);
582 END IF;
583 RETURN NULL;
584 EXCEPTION
585   WHEN VALUE_ERROR THEN
586      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
587             trace
588                (p_msg      => 'ERROR: '||sqlerrm
589                ,p_level    => C_LEVEL_EXCEPTION
590                ,p_module   => l_log_module);
591      END IF;
592      RAISE;
593  WHEN xla_exceptions_pkg.application_exception THEN
594       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
595       trace
596          (p_msg      => 'ERROR: '||sqlerrm
597          ,p_level    => C_LEVEL_EXCEPTION
598          ,p_module   => l_log_module);
599       END IF;
600       RAISE;
601  WHEN OTHERS THEN
602        xla_exceptions_pkg.raise_message
603            (p_location => 'XLA_00707_AAD_S_000020_PKG.Description_1');
604 END Description_1;
605 
606 ---------------------------------------
607 --
608 -- PRIVATE FUNCTION
609 --         Description_2
610 --
611 ---------------------------------------
612 FUNCTION Description_2 (
613   p_application_id      IN NUMBER
614 , p_ae_header_id        IN NUMBER DEFAULT NULL 
615 --TRANSACTION_ID
616  , p_source_1            IN NUMBER
617 --Transaction Unit of Measure Code
618  , p_source_4            IN VARCHAR2
619 --Primary Quantity of the Transaction
620  , p_source_6            IN NUMBER
621 --WIP Transaction Type
622  , p_source_7            IN NUMBER
623  , p_source_7_meaning    IN VARCHAR2
624 )
625 RETURN VARCHAR2
626 IS
627 l_component_type        VARCHAR2(80)   ;
628 l_component_code        VARCHAR2(30)   ;
629 l_component_type_code   VARCHAR2(1)    ;
630 l_component_appl_id     INTEGER        ;
631 l_amb_context_code      VARCHAR2(30)   ;
632 l_ledger_language       VARCHAR2(30)   ;
633 l_source                VARCHAR2(1996) ;
634 l_description           VARCHAR2(2000) ;
635 l_log_module            VARCHAR2(240)  ;
636 BEGIN
637 IF g_log_enabled THEN
638       l_log_module := C_DEFAULT_MODULE||'.Description_2';
639 END IF;
640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
641       trace
642          (p_msg      => 'BEGIN of Description_2'
643          ,p_level    => C_LEVEL_PROCEDURE
644          ,p_module   => l_log_module);
645 END IF;
646 
647 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
648 l_component_type        := 'AMB_DESCRIPTION';
649 l_component_code        := 'PI_OUTSIDE_PROCESSING';
650 l_component_type_code   := 'S';
651 l_component_appl_id     :=  707;
652 l_amb_context_code      := 'DEFAULT';
653 l_source                := NULL;
654 l_description           := NULL;
655 
656 
657   
658   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
659   IF l_source IS NOT NULL THEN
660     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
661     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
662   END IF;  
663  IF 
664 l_ledger_language = 'US' THEN
665     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
666     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
667  END IF;   
668   l_source := SUBSTR(p_source_4,1,1996);
669   IF l_source IS NOT NULL THEN
670     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
671     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
672   END IF;  
673  IF 
674 l_ledger_language = 'US' THEN
675     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
676     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
677  END IF;   
678   l_source := SUBSTR(TO_CHAR(p_source_1),1,1996);
679   IF l_source IS NOT NULL THEN
680     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
681     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
682   END IF;  
683  IF 
684 l_ledger_language = 'US' THEN
685     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
686     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
687  END IF;   
688   l_source := SUBSTR(TO_CHAR(
689 ValidateLookupMeaning(
690   p_meaning                => p_source_7_meaning
691 , p_lookup_code            => TO_CHAR(p_source_7)
692 , p_lookup_type            => 'WIP_TRANSACTION_TYPE'
693 , p_source_code            => 'WIP_TRANSACTION_TYPE_ID'
694 , p_source_type_code       => 'S'
695 , p_source_application_id  => 707
696 )
697 ),1,1996);
698   IF l_source IS NOT NULL THEN
699     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
700     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
701   END IF; 
702  l_description := SUBSTR(l_description,1,1996);
703   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
704         trace
705            (p_msg      => 'END of Description_2'
706            ,p_level    => C_LEVEL_PROCEDURE
707            ,p_module   => l_log_module);
708 
709   END IF;
710   RETURN l_description;
711 
712 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
713       trace
714          (p_msg      => 'END of Description_2'
715          ,p_level    => C_LEVEL_PROCEDURE
716          ,p_module   => l_log_module);
717 END IF;
718 RETURN NULL;
719 EXCEPTION
720   WHEN VALUE_ERROR THEN
721      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
722             trace
723                (p_msg      => 'ERROR: '||sqlerrm
724                ,p_level    => C_LEVEL_EXCEPTION
725                ,p_module   => l_log_module);
726      END IF;
727      RAISE;
728  WHEN xla_exceptions_pkg.application_exception THEN
729       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
730       trace
731          (p_msg      => 'ERROR: '||sqlerrm
732          ,p_level    => C_LEVEL_EXCEPTION
733          ,p_module   => l_log_module);
734       END IF;
735       RAISE;
736  WHEN OTHERS THEN
737        xla_exceptions_pkg.raise_message
738            (p_location => 'XLA_00707_AAD_S_000020_PKG.Description_2');
739 END Description_2;
740 
741 ---------------------------------------
742 --
743 -- PRIVATE FUNCTION
744 --         AcctDerRule_3
745 --
746 ---------------------------------------
747 FUNCTION AcctDerRule_3 (
748   p_application_id              IN NUMBER
749 , p_ae_header_id                IN NUMBER
750 , p_side                        IN VARCHAR2 
751 --Accrual Account for the Write Off
752  , p_source_8            IN NUMBER
753 , x_transaction_coa_id         OUT NOCOPY NUMBER
754 , x_accounting_coa_id          OUT NOCOPY NUMBER
755 , x_value_type_code            OUT NOCOPY VARCHAR2
756 )
757 RETURN NUMBER
758 IS
759 l_component_type       VARCHAR2(80)  ;
760 l_component_code       VARCHAR2(30)  ;
761 l_component_type_code  VARCHAR2(1)   ;
762 l_component_appl_id    INTEGER       ;
763 l_amb_context_code     VARCHAR2(30)  ;
764 l_log_module           VARCHAR2(240) ;
765 l_output_value         NUMBER        ;
766 BEGIN
767 IF g_log_enabled THEN
768       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
769 END IF;
770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
771       trace
772          (p_msg      => 'BEGIN of AcctDerRule_3'
773          ,p_level    => C_LEVEL_PROCEDURE
774          ,p_module   => l_log_module);
775 END IF;
776 --
777 l_component_type         := 'AMB_ADR';
778 l_component_code         := 'CST_AWO_ACCRUAL';
779 l_component_type_code    := 'S';
780 l_component_appl_id      :=  707;
781 l_amb_context_code       := 'DEFAULT';
782 x_transaction_coa_id     :=  null;
783 x_accounting_coa_id      :=  null;
784 --
785 
786  --
787   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
788       trace
789          (p_msg      => 'END of AcctDerRule_3'
790          ,p_level    => C_LEVEL_PROCEDURE
791          ,p_module   => l_log_module);
792   END IF;
793   x_value_type_code := 'S';
794   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_8));
795   RETURN l_output_value;
796 
797 --
798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
799       trace
800          (p_msg      => 'END of AcctDerRule_3(invalid)'
801          ,p_level    => C_LEVEL_PROCEDURE
802          ,p_module   => l_log_module);
803 END IF;
804 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
805 x_value_type_code := null;
806 l_output_value    := null;
807 xla_accounting_err_pkg.build_message
808                  (p_appli_s_name            => 'XLA'
809                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
810                  ,p_token_1                 => 'COMPONENT_NAME'
811                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
812                                                             l_component_type
813                                                           , l_component_code
814                                                           , l_component_type_code
815                                                           , l_component_appl_id
816                                                           , l_amb_context_code
817                                                           )
818                  ,p_token_2                 => 'OWNER'
819                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
820                                                         'XLA_OWNER_TYPE'
821                                                         ,l_component_type_code
822                                                         )
823                  ,p_token_3                 => 'PAD_NAME'
824                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
825                  ,p_token_4                 => 'PAD_OWNER'
826                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
827                                                         'XLA_OWNER_TYPE'
828                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
829                                                         )
830                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
831                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
832                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
833                  ,p_ae_header_id            => NULL
834 );
835 RETURN l_output_value;
836 EXCEPTION
837   WHEN xla_exceptions_pkg.application_exception THEN
838       RAISE;
839   WHEN OTHERS THEN
840        xla_exceptions_pkg.raise_message
841            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_3');
842 END AcctDerRule_3;
843 --
844 
845 ---------------------------------------
846 --
847 -- PRIVATE FUNCTION
848 --         AcctDerRule_4
849 --
850 ---------------------------------------
851 FUNCTION AcctDerRule_4 (
852   p_application_id              IN NUMBER
853 , p_ae_header_id                IN NUMBER
854 , p_side                        IN VARCHAR2 
855 --Write-Off Variance Account
856  , p_source_9            IN NUMBER
857 , x_transaction_coa_id         OUT NOCOPY NUMBER
858 , x_accounting_coa_id          OUT NOCOPY NUMBER
859 , x_value_type_code            OUT NOCOPY VARCHAR2
860 )
861 RETURN NUMBER
862 IS
863 l_component_type       VARCHAR2(80)  ;
864 l_component_code       VARCHAR2(30)  ;
865 l_component_type_code  VARCHAR2(1)   ;
866 l_component_appl_id    INTEGER       ;
867 l_amb_context_code     VARCHAR2(30)  ;
868 l_log_module           VARCHAR2(240) ;
869 l_output_value         NUMBER        ;
870 BEGIN
871 IF g_log_enabled THEN
872       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
873 END IF;
874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
875       trace
876          (p_msg      => 'BEGIN of AcctDerRule_4'
877          ,p_level    => C_LEVEL_PROCEDURE
878          ,p_module   => l_log_module);
879 END IF;
880 --
881 l_component_type         := 'AMB_ADR';
882 l_component_code         := 'CST_AWO_ERV';
883 l_component_type_code    := 'S';
884 l_component_appl_id      :=  707;
885 l_amb_context_code       := 'DEFAULT';
886 x_transaction_coa_id     :=  null;
887 x_accounting_coa_id      :=  null;
888 --
889 
890  --
891   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
892       trace
893          (p_msg      => 'END of AcctDerRule_4'
894          ,p_level    => C_LEVEL_PROCEDURE
895          ,p_module   => l_log_module);
896   END IF;
897   x_value_type_code := 'S';
898   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_9));
899   RETURN l_output_value;
900 
901 --
902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
903       trace
904          (p_msg      => 'END of AcctDerRule_4(invalid)'
905          ,p_level    => C_LEVEL_PROCEDURE
906          ,p_module   => l_log_module);
907 END IF;
908 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
909 x_value_type_code := null;
910 l_output_value    := null;
911 xla_accounting_err_pkg.build_message
912                  (p_appli_s_name            => 'XLA'
913                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
914                  ,p_token_1                 => 'COMPONENT_NAME'
915                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
916                                                             l_component_type
917                                                           , l_component_code
918                                                           , l_component_type_code
919                                                           , l_component_appl_id
920                                                           , l_amb_context_code
921                                                           )
922                  ,p_token_2                 => 'OWNER'
923                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
924                                                         'XLA_OWNER_TYPE'
925                                                         ,l_component_type_code
926                                                         )
927                  ,p_token_3                 => 'PAD_NAME'
928                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
929                  ,p_token_4                 => 'PAD_OWNER'
930                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
931                                                         'XLA_OWNER_TYPE'
932                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
933                                                         )
934                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
935                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
936                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
937                  ,p_ae_header_id            => NULL
938 );
939 RETURN l_output_value;
940 EXCEPTION
941   WHEN xla_exceptions_pkg.application_exception THEN
942       RAISE;
943   WHEN OTHERS THEN
944        xla_exceptions_pkg.raise_message
945            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_4');
946 END AcctDerRule_4;
947 --
948 
949 ---------------------------------------
950 --
951 -- PRIVATE FUNCTION
952 --         AcctDerRule_5
953 --
954 ---------------------------------------
955 FUNCTION AcctDerRule_5 (
956   p_application_id              IN NUMBER
957 , p_ae_header_id                IN NUMBER
958 , p_side                        IN VARCHAR2 
959 --Offset Account for the Write Off
960  , p_source_10            IN NUMBER
961 , x_transaction_coa_id         OUT NOCOPY NUMBER
962 , x_accounting_coa_id          OUT NOCOPY NUMBER
963 , x_value_type_code            OUT NOCOPY VARCHAR2
964 )
965 RETURN NUMBER
966 IS
967 l_component_type       VARCHAR2(80)  ;
968 l_component_code       VARCHAR2(30)  ;
969 l_component_type_code  VARCHAR2(1)   ;
970 l_component_appl_id    INTEGER       ;
971 l_amb_context_code     VARCHAR2(30)  ;
972 l_log_module           VARCHAR2(240) ;
973 l_output_value         NUMBER        ;
974 BEGIN
975 IF g_log_enabled THEN
976       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
977 END IF;
978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
979       trace
980          (p_msg      => 'BEGIN of AcctDerRule_5'
981          ,p_level    => C_LEVEL_PROCEDURE
982          ,p_module   => l_log_module);
983 END IF;
984 --
985 l_component_type         := 'AMB_ADR';
986 l_component_code         := 'CST_AWO_OFFSET';
987 l_component_type_code    := 'S';
988 l_component_appl_id      :=  707;
989 l_amb_context_code       := 'DEFAULT';
990 x_transaction_coa_id     :=  null;
991 x_accounting_coa_id      :=  null;
992 --
993 
994  --
995   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
996       trace
997          (p_msg      => 'END of AcctDerRule_5'
998          ,p_level    => C_LEVEL_PROCEDURE
999          ,p_module   => l_log_module);
1000   END IF;
1001   x_value_type_code := 'S';
1002   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_10));
1003   RETURN l_output_value;
1004 
1005 --
1006 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1007       trace
1008          (p_msg      => 'END of AcctDerRule_5(invalid)'
1009          ,p_level    => C_LEVEL_PROCEDURE
1010          ,p_module   => l_log_module);
1011 END IF;
1012 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1013 x_value_type_code := null;
1014 l_output_value    := null;
1015 xla_accounting_err_pkg.build_message
1016                  (p_appli_s_name            => 'XLA'
1017                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1018                  ,p_token_1                 => 'COMPONENT_NAME'
1019                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1020                                                             l_component_type
1021                                                           , l_component_code
1022                                                           , l_component_type_code
1023                                                           , l_component_appl_id
1024                                                           , l_amb_context_code
1025                                                           )
1026                  ,p_token_2                 => 'OWNER'
1027                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1028                                                         'XLA_OWNER_TYPE'
1029                                                         ,l_component_type_code
1030                                                         )
1031                  ,p_token_3                 => 'PAD_NAME'
1032                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1033                  ,p_token_4                 => 'PAD_OWNER'
1034                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1035                                                         'XLA_OWNER_TYPE'
1036                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1037                                                         )
1038                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1039                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1040                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1041                  ,p_ae_header_id            => NULL
1042 );
1043 RETURN l_output_value;
1044 EXCEPTION
1045   WHEN xla_exceptions_pkg.application_exception THEN
1046       RAISE;
1047   WHEN OTHERS THEN
1048        xla_exceptions_pkg.raise_message
1049            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_5');
1050 END AcctDerRule_5;
1051 --
1052 
1053 ---------------------------------------
1054 --
1055 -- PRIVATE FUNCTION
1056 --         AcctDerRule_6
1057 --
1058 ---------------------------------------
1059 FUNCTION AcctDerRule_6 (
1060   p_application_id              IN NUMBER
1061 , p_ae_header_id                IN NUMBER
1062 , p_side                        IN VARCHAR2 
1063 --Cost Management Default Account
1064  , p_source_11            IN NUMBER
1065 , x_transaction_coa_id         OUT NOCOPY NUMBER
1066 , x_accounting_coa_id          OUT NOCOPY NUMBER
1067 , x_value_type_code            OUT NOCOPY VARCHAR2
1068 )
1069 RETURN NUMBER
1070 IS
1071 l_component_type       VARCHAR2(80)  ;
1072 l_component_code       VARCHAR2(30)  ;
1073 l_component_type_code  VARCHAR2(1)   ;
1074 l_component_appl_id    INTEGER       ;
1075 l_amb_context_code     VARCHAR2(30)  ;
1076 l_log_module           VARCHAR2(240) ;
1077 l_output_value         NUMBER        ;
1078 BEGIN
1079 IF g_log_enabled THEN
1080       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
1081 END IF;
1082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1083       trace
1084          (p_msg      => 'BEGIN of AcctDerRule_6'
1085          ,p_level    => C_LEVEL_PROCEDURE
1086          ,p_module   => l_log_module);
1087 END IF;
1088 --
1089 l_component_type         := 'AMB_ADR';
1090 l_component_code         := 'CST_DEFAULT';
1091 l_component_type_code    := 'S';
1092 l_component_appl_id      :=  707;
1093 l_amb_context_code       := 'DEFAULT';
1094 x_transaction_coa_id     :=  null;
1095 x_accounting_coa_id      :=  null;
1096 --
1097 
1098  --
1099   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1100       trace
1101          (p_msg      => 'END of AcctDerRule_6'
1102          ,p_level    => C_LEVEL_PROCEDURE
1103          ,p_module   => l_log_module);
1104   END IF;
1105   x_value_type_code := 'S';
1106   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
1107   RETURN l_output_value;
1108 
1109 --
1110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1111       trace
1112          (p_msg      => 'END of AcctDerRule_6(invalid)'
1113          ,p_level    => C_LEVEL_PROCEDURE
1114          ,p_module   => l_log_module);
1115 END IF;
1116 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1117 x_value_type_code := null;
1118 l_output_value    := null;
1119 xla_accounting_err_pkg.build_message
1120                  (p_appli_s_name            => 'XLA'
1121                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1122                  ,p_token_1                 => 'COMPONENT_NAME'
1123                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1124                                                             l_component_type
1125                                                           , l_component_code
1126                                                           , l_component_type_code
1127                                                           , l_component_appl_id
1128                                                           , l_amb_context_code
1129                                                           )
1130                  ,p_token_2                 => 'OWNER'
1131                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1132                                                         'XLA_OWNER_TYPE'
1133                                                         ,l_component_type_code
1134                                                         )
1135                  ,p_token_3                 => 'PAD_NAME'
1136                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1137                  ,p_token_4                 => 'PAD_OWNER'
1138                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1139                                                         'XLA_OWNER_TYPE'
1140                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1141                                                         )
1142                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1143                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1144                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1145                  ,p_ae_header_id            => NULL
1146 );
1147 RETURN l_output_value;
1148 EXCEPTION
1149   WHEN xla_exceptions_pkg.application_exception THEN
1150       RAISE;
1151   WHEN OTHERS THEN
1152        xla_exceptions_pkg.raise_message
1153            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_6');
1154 END AcctDerRule_6;
1155 --
1156 
1157 ---------------------------------------
1158 --
1159 -- PRIVATE FUNCTION
1160 --         AcctDerRule_7
1161 --
1162 ---------------------------------------
1163 FUNCTION AcctDerRule_7 (
1164   p_application_id              IN NUMBER
1165 , p_ae_header_id                IN NUMBER
1166 , p_side                        IN VARCHAR2 
1167 --Discrete Job WIP accounting class expense account
1168  , p_source_12            IN NUMBER
1169 , x_transaction_coa_id         OUT NOCOPY NUMBER
1170 , x_accounting_coa_id          OUT NOCOPY NUMBER
1171 , x_value_type_code            OUT NOCOPY VARCHAR2
1172 )
1173 RETURN NUMBER
1174 IS
1175 l_component_type       VARCHAR2(80)  ;
1176 l_component_code       VARCHAR2(30)  ;
1177 l_component_type_code  VARCHAR2(1)   ;
1178 l_component_appl_id    INTEGER       ;
1179 l_amb_context_code     VARCHAR2(30)  ;
1180 l_log_module           VARCHAR2(240) ;
1181 l_output_value         NUMBER        ;
1182 BEGIN
1183 IF g_log_enabled THEN
1184       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
1185 END IF;
1186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1187       trace
1188          (p_msg      => 'BEGIN of AcctDerRule_7'
1189          ,p_level    => C_LEVEL_PROCEDURE
1190          ,p_module   => l_log_module);
1191 END IF;
1192 --
1193 l_component_type         := 'AMB_ADR';
1194 l_component_code         := 'DIS_JOB_WIP_ACCT_CLASS_EXP';
1195 l_component_type_code    := 'S';
1196 l_component_appl_id      :=  707;
1197 l_amb_context_code       := 'DEFAULT';
1198 x_transaction_coa_id     :=  null;
1199 x_accounting_coa_id      :=  null;
1200 --
1201 
1202  --
1203   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1204       trace
1205          (p_msg      => 'END of AcctDerRule_7'
1206          ,p_level    => C_LEVEL_PROCEDURE
1207          ,p_module   => l_log_module);
1208   END IF;
1209   x_value_type_code := 'S';
1210   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_12));
1211   RETURN l_output_value;
1212 
1213 --
1214 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1215       trace
1216          (p_msg      => 'END of AcctDerRule_7(invalid)'
1217          ,p_level    => C_LEVEL_PROCEDURE
1218          ,p_module   => l_log_module);
1219 END IF;
1220 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1221 x_value_type_code := null;
1222 l_output_value    := null;
1223 xla_accounting_err_pkg.build_message
1224                  (p_appli_s_name            => 'XLA'
1225                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1226                  ,p_token_1                 => 'COMPONENT_NAME'
1227                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1228                                                             l_component_type
1229                                                           , l_component_code
1230                                                           , l_component_type_code
1231                                                           , l_component_appl_id
1232                                                           , l_amb_context_code
1233                                                           )
1234                  ,p_token_2                 => 'OWNER'
1235                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1236                                                         'XLA_OWNER_TYPE'
1237                                                         ,l_component_type_code
1238                                                         )
1239                  ,p_token_3                 => 'PAD_NAME'
1240                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1241                  ,p_token_4                 => 'PAD_OWNER'
1242                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1243                                                         'XLA_OWNER_TYPE'
1244                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1245                                                         )
1246                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1247                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1248                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1249                  ,p_ae_header_id            => NULL
1250 );
1251 RETURN l_output_value;
1252 EXCEPTION
1253   WHEN xla_exceptions_pkg.application_exception THEN
1254       RAISE;
1255   WHEN OTHERS THEN
1256        xla_exceptions_pkg.raise_message
1257            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_7');
1258 END AcctDerRule_7;
1259 --
1260 
1261 ---------------------------------------
1262 --
1263 -- PRIVATE FUNCTION
1264 --         AcctDerRule_8
1265 --
1266 ---------------------------------------
1267 FUNCTION AcctDerRule_8 (
1268   p_application_id              IN NUMBER
1269 , p_ae_header_id                IN NUMBER
1270 , p_side                        IN VARCHAR2 
1271 --Resource/ Overhead Absorption Account
1272  , p_source_13            IN NUMBER
1273 , x_transaction_coa_id         OUT NOCOPY NUMBER
1274 , x_accounting_coa_id          OUT NOCOPY NUMBER
1275 , x_value_type_code            OUT NOCOPY VARCHAR2
1276 )
1277 RETURN NUMBER
1278 IS
1279 l_component_type       VARCHAR2(80)  ;
1280 l_component_code       VARCHAR2(30)  ;
1281 l_component_type_code  VARCHAR2(1)   ;
1282 l_component_appl_id    INTEGER       ;
1283 l_amb_context_code     VARCHAR2(30)  ;
1284 l_log_module           VARCHAR2(240) ;
1285 l_output_value         NUMBER        ;
1286 BEGIN
1287 IF g_log_enabled THEN
1288       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1289 END IF;
1290 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1291       trace
1292          (p_msg      => 'BEGIN of AcctDerRule_8'
1293          ,p_level    => C_LEVEL_PROCEDURE
1294          ,p_module   => l_log_module);
1295 END IF;
1296 --
1297 l_component_type         := 'AMB_ADR';
1298 l_component_code         := 'PI_ABSORPTION';
1299 l_component_type_code    := 'S';
1300 l_component_appl_id      :=  707;
1301 l_amb_context_code       := 'DEFAULT';
1302 x_transaction_coa_id     :=  null;
1303 x_accounting_coa_id      :=  null;
1304 --
1305 
1306  --
1307   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1308       trace
1309          (p_msg      => 'END of AcctDerRule_8'
1310          ,p_level    => C_LEVEL_PROCEDURE
1311          ,p_module   => l_log_module);
1312   END IF;
1313   x_value_type_code := 'S';
1314   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_13));
1315   RETURN l_output_value;
1316 
1317 --
1318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1319       trace
1320          (p_msg      => 'END of AcctDerRule_8(invalid)'
1321          ,p_level    => C_LEVEL_PROCEDURE
1322          ,p_module   => l_log_module);
1323 END IF;
1324 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1325 x_value_type_code := null;
1326 l_output_value    := null;
1327 xla_accounting_err_pkg.build_message
1328                  (p_appli_s_name            => 'XLA'
1329                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1330                  ,p_token_1                 => 'COMPONENT_NAME'
1331                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1332                                                             l_component_type
1333                                                           , l_component_code
1334                                                           , l_component_type_code
1335                                                           , l_component_appl_id
1336                                                           , l_amb_context_code
1337                                                           )
1338                  ,p_token_2                 => 'OWNER'
1339                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1340                                                         'XLA_OWNER_TYPE'
1341                                                         ,l_component_type_code
1342                                                         )
1343                  ,p_token_3                 => 'PAD_NAME'
1344                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1345                  ,p_token_4                 => 'PAD_OWNER'
1346                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1347                                                         'XLA_OWNER_TYPE'
1348                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1349                                                         )
1350                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1351                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1352                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1353                  ,p_ae_header_id            => NULL
1354 );
1355 RETURN l_output_value;
1356 EXCEPTION
1357   WHEN xla_exceptions_pkg.application_exception THEN
1358       RAISE;
1359   WHEN OTHERS THEN
1360        xla_exceptions_pkg.raise_message
1361            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_8');
1362 END AcctDerRule_8;
1363 --
1364 
1365 ---------------------------------------
1366 --
1367 -- PRIVATE FUNCTION
1368 --         AcctDerRule_9
1369 --
1370 ---------------------------------------
1371 FUNCTION AcctDerRule_9 (
1372   p_application_id              IN NUMBER
1373 , p_ae_header_id                IN NUMBER
1374 , p_side                        IN VARCHAR2 
1375 --Transaction Material Account
1376  , p_source_14            IN NUMBER
1377 --Cost Element Name
1378  , p_source_15            IN NUMBER
1379 --Transaction Material Overhead Account
1380  , p_source_16            IN NUMBER
1381 --Transaction Resource Account
1382  , p_source_17            IN NUMBER
1383 --Transaction Outside Processing Account
1384  , p_source_18            IN NUMBER
1385 --Transaction Overhead Account
1386  , p_source_19            IN NUMBER
1387 --Transaction Distribution Account
1388  , p_source_20            IN NUMBER
1389 , x_transaction_coa_id         OUT NOCOPY NUMBER
1390 , x_accounting_coa_id          OUT NOCOPY NUMBER
1391 , x_value_type_code            OUT NOCOPY VARCHAR2
1392 )
1393 RETURN NUMBER
1394 IS
1395 l_component_type       VARCHAR2(80)  ;
1396 l_component_code       VARCHAR2(30)  ;
1397 l_component_type_code  VARCHAR2(1)   ;
1398 l_component_appl_id    INTEGER       ;
1399 l_amb_context_code     VARCHAR2(30)  ;
1400 l_log_module           VARCHAR2(240) ;
1401 l_output_value         NUMBER        ;
1402 BEGIN
1403 IF g_log_enabled THEN
1404       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_9';
1405 END IF;
1406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1407       trace
1408          (p_msg      => 'BEGIN of AcctDerRule_9'
1409          ,p_level    => C_LEVEL_PROCEDURE
1410          ,p_module   => l_log_module);
1411 END IF;
1412 --
1413 l_component_type         := 'AMB_ADR';
1414 l_component_code         := 'PI_AVG_COST_UPT_OFFSET';
1415 l_component_type_code    := 'S';
1416 l_component_appl_id      :=  707;
1417 l_amb_context_code       := 'DEFAULT';
1418 x_transaction_coa_id     :=  null;
1419 x_accounting_coa_id      :=  null;
1420 --
1421 
1422  IF NVL(p_source_15,9E125) =  1
1423  THEN 
1424  --
1425   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1426       trace
1427          (p_msg      => 'END of AcctDerRule_9'
1428          ,p_level    => C_LEVEL_PROCEDURE
1429          ,p_module   => l_log_module);
1430   END IF;
1431   x_value_type_code := 'S';
1432   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_14));
1433   RETURN l_output_value;
1434 
1435  ELSIF NVL(p_source_15,9E125) =  2
1436  THEN 
1437  --
1438   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1439       trace
1440          (p_msg      => 'END of AcctDerRule_9'
1441          ,p_level    => C_LEVEL_PROCEDURE
1442          ,p_module   => l_log_module);
1443   END IF;
1444   x_value_type_code := 'S';
1445   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_16));
1446   RETURN l_output_value;
1447 
1448  ELSIF NVL(p_source_15,9E125) =  3
1449  THEN 
1450  --
1451   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1452       trace
1453          (p_msg      => 'END of AcctDerRule_9'
1454          ,p_level    => C_LEVEL_PROCEDURE
1455          ,p_module   => l_log_module);
1456   END IF;
1457   x_value_type_code := 'S';
1458   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_17));
1459   RETURN l_output_value;
1460 
1461  ELSIF NVL(p_source_15,9E125) =  4
1462  THEN 
1463  --
1464   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1465       trace
1466          (p_msg      => 'END of AcctDerRule_9'
1467          ,p_level    => C_LEVEL_PROCEDURE
1468          ,p_module   => l_log_module);
1469   END IF;
1470   x_value_type_code := 'S';
1471   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_18));
1472   RETURN l_output_value;
1473 
1474  ELSIF NVL(p_source_15,9E125) =  5
1475  THEN 
1476  --
1477   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1478       trace
1479          (p_msg      => 'END of AcctDerRule_9'
1480          ,p_level    => C_LEVEL_PROCEDURE
1481          ,p_module   => l_log_module);
1482   END IF;
1483   x_value_type_code := 'S';
1484   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_19));
1485   RETURN l_output_value;
1486 
1487 END IF;
1488 
1489  --
1490   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1491       trace
1492          (p_msg      => 'END of AcctDerRule_9'
1493          ,p_level    => C_LEVEL_PROCEDURE
1494          ,p_module   => l_log_module);
1495   END IF;
1496   x_value_type_code := 'S';
1497   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_20));
1498   RETURN l_output_value;
1499 
1500 --
1501 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1502       trace
1503          (p_msg      => 'END of AcctDerRule_9(invalid)'
1504          ,p_level    => C_LEVEL_PROCEDURE
1505          ,p_module   => l_log_module);
1506 END IF;
1507 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1508 x_value_type_code := null;
1509 l_output_value    := null;
1510 xla_accounting_err_pkg.build_message
1511                  (p_appli_s_name            => 'XLA'
1512                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1513                  ,p_token_1                 => 'COMPONENT_NAME'
1514                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1515                                                             l_component_type
1516                                                           , l_component_code
1517                                                           , l_component_type_code
1518                                                           , l_component_appl_id
1519                                                           , l_amb_context_code
1520                                                           )
1521                  ,p_token_2                 => 'OWNER'
1522                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1523                                                         'XLA_OWNER_TYPE'
1524                                                         ,l_component_type_code
1525                                                         )
1526                  ,p_token_3                 => 'PAD_NAME'
1527                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1528                  ,p_token_4                 => 'PAD_OWNER'
1529                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1530                                                         'XLA_OWNER_TYPE'
1531                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1532                                                         )
1533                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1534                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1535                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1536                  ,p_ae_header_id            => NULL
1537 );
1538 RETURN l_output_value;
1539 EXCEPTION
1540   WHEN xla_exceptions_pkg.application_exception THEN
1541       RAISE;
1542   WHEN OTHERS THEN
1543        xla_exceptions_pkg.raise_message
1544            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_9');
1545 END AcctDerRule_9;
1546 --
1547 
1548 ---------------------------------------
1549 --
1550 -- PRIVATE FUNCTION
1551 --         AcctDerRule_10
1552 --
1553 ---------------------------------------
1554 FUNCTION AcctDerRule_10 (
1555   p_application_id              IN NUMBER
1556 , p_ae_header_id                IN NUMBER
1557 , p_side                        IN VARCHAR2 
1558 --Inventory Organization Average Cost Variance Account
1559  , p_source_21            IN NUMBER
1560 , x_transaction_coa_id         OUT NOCOPY NUMBER
1561 , x_accounting_coa_id          OUT NOCOPY NUMBER
1562 , x_value_type_code            OUT NOCOPY VARCHAR2
1563 )
1564 RETURN NUMBER
1565 IS
1566 l_component_type       VARCHAR2(80)  ;
1567 l_component_code       VARCHAR2(30)  ;
1568 l_component_type_code  VARCHAR2(1)   ;
1569 l_component_appl_id    INTEGER       ;
1570 l_amb_context_code     VARCHAR2(30)  ;
1571 l_log_module           VARCHAR2(240) ;
1572 l_output_value         NUMBER        ;
1573 BEGIN
1574 IF g_log_enabled THEN
1575       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_10';
1576 END IF;
1577 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1578       trace
1579          (p_msg      => 'BEGIN of AcctDerRule_10'
1580          ,p_level    => C_LEVEL_PROCEDURE
1581          ,p_module   => l_log_module);
1582 END IF;
1583 --
1584 l_component_type         := 'AMB_ADR';
1585 l_component_code         := 'PI_AVG_CST_VARIANCE';
1586 l_component_type_code    := 'S';
1587 l_component_appl_id      :=  707;
1588 l_amb_context_code       := 'DEFAULT';
1589 x_transaction_coa_id     :=  null;
1590 x_accounting_coa_id      :=  null;
1591 --
1592 
1593  --
1594   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1595       trace
1596          (p_msg      => 'END of AcctDerRule_10'
1597          ,p_level    => C_LEVEL_PROCEDURE
1598          ,p_module   => l_log_module);
1599   END IF;
1600   x_value_type_code := 'S';
1601   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_21));
1602   RETURN l_output_value;
1603 
1604 --
1605 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1606       trace
1607          (p_msg      => 'END of AcctDerRule_10(invalid)'
1608          ,p_level    => C_LEVEL_PROCEDURE
1609          ,p_module   => l_log_module);
1610 END IF;
1611 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1612 x_value_type_code := null;
1613 l_output_value    := null;
1614 xla_accounting_err_pkg.build_message
1615                  (p_appli_s_name            => 'XLA'
1616                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1617                  ,p_token_1                 => 'COMPONENT_NAME'
1618                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1619                                                             l_component_type
1620                                                           , l_component_code
1621                                                           , l_component_type_code
1622                                                           , l_component_appl_id
1623                                                           , l_amb_context_code
1624                                                           )
1625                  ,p_token_2                 => 'OWNER'
1626                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1627                                                         'XLA_OWNER_TYPE'
1628                                                         ,l_component_type_code
1629                                                         )
1630                  ,p_token_3                 => 'PAD_NAME'
1631                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1632                  ,p_token_4                 => 'PAD_OWNER'
1633                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1634                                                         'XLA_OWNER_TYPE'
1635                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1636                                                         )
1637                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1638                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1639                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1640                  ,p_ae_header_id            => NULL
1641 );
1642 RETURN l_output_value;
1643 EXCEPTION
1644   WHEN xla_exceptions_pkg.application_exception THEN
1645       RAISE;
1646   WHEN OTHERS THEN
1647        xla_exceptions_pkg.raise_message
1648            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_10');
1649 END AcctDerRule_10;
1650 --
1651 
1652 ---------------------------------------
1653 --
1654 -- PRIVATE FUNCTION
1655 --         AcctDerRule_11
1656 --
1657 ---------------------------------------
1658 FUNCTION AcctDerRule_11 (
1659   p_application_id              IN NUMBER
1660 , p_ae_header_id                IN NUMBER
1661 , p_side                        IN VARCHAR2 
1662 --Product Line Accounting Category Bridging Account
1663  , p_source_22            IN NUMBER
1664 , x_transaction_coa_id         OUT NOCOPY NUMBER
1665 , x_accounting_coa_id          OUT NOCOPY NUMBER
1666 , x_value_type_code            OUT NOCOPY VARCHAR2
1667 )
1668 RETURN NUMBER
1669 IS
1670 l_component_type       VARCHAR2(80)  ;
1671 l_component_code       VARCHAR2(30)  ;
1672 l_component_type_code  VARCHAR2(1)   ;
1673 l_component_appl_id    INTEGER       ;
1674 l_amb_context_code     VARCHAR2(30)  ;
1675 l_log_module           VARCHAR2(240) ;
1676 l_output_value         NUMBER        ;
1677 BEGIN
1678 IF g_log_enabled THEN
1679       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_11';
1680 END IF;
1681 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1682       trace
1683          (p_msg      => 'BEGIN of AcctDerRule_11'
1684          ,p_level    => C_LEVEL_PROCEDURE
1685          ,p_module   => l_log_module);
1686 END IF;
1687 --
1688 l_component_type         := 'AMB_ADR';
1689 l_component_code         := 'PI_BRIDGING_ACCOUNT';
1690 l_component_type_code    := 'S';
1691 l_component_appl_id      :=  707;
1692 l_amb_context_code       := 'DEFAULT';
1693 x_transaction_coa_id     :=  null;
1694 x_accounting_coa_id      :=  null;
1695 --
1696 
1697  --
1698   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1699       trace
1700          (p_msg      => 'END of AcctDerRule_11'
1701          ,p_level    => C_LEVEL_PROCEDURE
1702          ,p_module   => l_log_module);
1703   END IF;
1704   x_value_type_code := 'S';
1705   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_22));
1706   RETURN l_output_value;
1707 
1708 --
1709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1710       trace
1711          (p_msg      => 'END of AcctDerRule_11(invalid)'
1712          ,p_level    => C_LEVEL_PROCEDURE
1713          ,p_module   => l_log_module);
1714 END IF;
1715 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1716 x_value_type_code := null;
1717 l_output_value    := null;
1718 xla_accounting_err_pkg.build_message
1719                  (p_appli_s_name            => 'XLA'
1720                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1721                  ,p_token_1                 => 'COMPONENT_NAME'
1722                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1723                                                             l_component_type
1724                                                           , l_component_code
1725                                                           , l_component_type_code
1726                                                           , l_component_appl_id
1727                                                           , l_amb_context_code
1728                                                           )
1729                  ,p_token_2                 => 'OWNER'
1730                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1731                                                         'XLA_OWNER_TYPE'
1732                                                         ,l_component_type_code
1733                                                         )
1734                  ,p_token_3                 => 'PAD_NAME'
1735                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1736                  ,p_token_4                 => 'PAD_OWNER'
1737                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1738                                                         'XLA_OWNER_TYPE'
1739                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1740                                                         )
1741                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1742                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1743                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1744                  ,p_ae_header_id            => NULL
1745 );
1746 RETURN l_output_value;
1747 EXCEPTION
1748   WHEN xla_exceptions_pkg.application_exception THEN
1749       RAISE;
1750   WHEN OTHERS THEN
1751        xla_exceptions_pkg.raise_message
1752            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_11');
1753 END AcctDerRule_11;
1754 --
1755 
1756 ---------------------------------------
1757 --
1758 -- PRIVATE FUNCTION
1759 --         AcctDerRule_12
1760 --
1761 ---------------------------------------
1762 FUNCTION AcctDerRule_12 (
1763   p_application_id              IN NUMBER
1764 , p_ae_header_id                IN NUMBER
1765 , p_side                        IN VARCHAR2 
1766 --Product Line Accounting Category Average Cost Variance Account
1767  , p_source_23            IN NUMBER
1768 , x_transaction_coa_id         OUT NOCOPY NUMBER
1769 , x_accounting_coa_id          OUT NOCOPY NUMBER
1770 , x_value_type_code            OUT NOCOPY VARCHAR2
1771 )
1772 RETURN NUMBER
1773 IS
1774 l_component_type       VARCHAR2(80)  ;
1775 l_component_code       VARCHAR2(30)  ;
1776 l_component_type_code  VARCHAR2(1)   ;
1777 l_component_appl_id    INTEGER       ;
1778 l_amb_context_code     VARCHAR2(30)  ;
1779 l_log_module           VARCHAR2(240) ;
1780 l_output_value         NUMBER        ;
1781 BEGIN
1782 IF g_log_enabled THEN
1783       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1784 END IF;
1785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1786       trace
1787          (p_msg      => 'BEGIN of AcctDerRule_12'
1788          ,p_level    => C_LEVEL_PROCEDURE
1789          ,p_module   => l_log_module);
1790 END IF;
1791 --
1792 l_component_type         := 'AMB_ADR';
1793 l_component_code         := 'PI_CATEGORY_ACV_ADR';
1794 l_component_type_code    := 'S';
1795 l_component_appl_id      :=  707;
1796 l_amb_context_code       := 'DEFAULT';
1797 x_transaction_coa_id     :=  null;
1798 x_accounting_coa_id      :=  null;
1799 --
1800 
1801  --
1802   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1803       trace
1804          (p_msg      => 'END of AcctDerRule_12'
1805          ,p_level    => C_LEVEL_PROCEDURE
1806          ,p_module   => l_log_module);
1807   END IF;
1808   x_value_type_code := 'S';
1809   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_23));
1810   RETURN l_output_value;
1811 
1812 --
1813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1814       trace
1815          (p_msg      => 'END of AcctDerRule_12(invalid)'
1816          ,p_level    => C_LEVEL_PROCEDURE
1817          ,p_module   => l_log_module);
1818 END IF;
1819 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1820 x_value_type_code := null;
1821 l_output_value    := null;
1822 xla_accounting_err_pkg.build_message
1823                  (p_appli_s_name            => 'XLA'
1824                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1825                  ,p_token_1                 => 'COMPONENT_NAME'
1826                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1827                                                             l_component_type
1828                                                           , l_component_code
1829                                                           , l_component_type_code
1830                                                           , l_component_appl_id
1831                                                           , l_amb_context_code
1832                                                           )
1833                  ,p_token_2                 => 'OWNER'
1834                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1835                                                         'XLA_OWNER_TYPE'
1836                                                         ,l_component_type_code
1837                                                         )
1838                  ,p_token_3                 => 'PAD_NAME'
1839                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1840                  ,p_token_4                 => 'PAD_OWNER'
1841                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1842                                                         'XLA_OWNER_TYPE'
1843                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1844                                                         )
1845                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1846                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1847                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1848                  ,p_ae_header_id            => NULL
1849 );
1850 RETURN l_output_value;
1851 EXCEPTION
1852   WHEN xla_exceptions_pkg.application_exception THEN
1853       RAISE;
1854   WHEN OTHERS THEN
1855        xla_exceptions_pkg.raise_message
1856            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_12');
1857 END AcctDerRule_12;
1858 --
1859 
1860 ---------------------------------------
1861 --
1862 -- PRIVATE FUNCTION
1863 --         AcctDerRule_13
1864 --
1865 ---------------------------------------
1866 FUNCTION AcctDerRule_13 (
1867   p_application_id              IN NUMBER
1868 , p_ae_header_id                IN NUMBER
1869 , p_side                        IN VARCHAR2 
1870 --Product Line Accounting Category Expense Account
1871  , p_source_24            IN NUMBER
1872 , x_transaction_coa_id         OUT NOCOPY NUMBER
1873 , x_accounting_coa_id          OUT NOCOPY NUMBER
1874 , x_value_type_code            OUT NOCOPY VARCHAR2
1875 )
1876 RETURN NUMBER
1877 IS
1878 l_component_type       VARCHAR2(80)  ;
1879 l_component_code       VARCHAR2(30)  ;
1880 l_component_type_code  VARCHAR2(1)   ;
1881 l_component_appl_id    INTEGER       ;
1882 l_amb_context_code     VARCHAR2(30)  ;
1883 l_log_module           VARCHAR2(240) ;
1884 l_output_value         NUMBER        ;
1885 BEGIN
1886 IF g_log_enabled THEN
1887       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1888 END IF;
1889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1890       trace
1891          (p_msg      => 'BEGIN of AcctDerRule_13'
1892          ,p_level    => C_LEVEL_PROCEDURE
1893          ,p_module   => l_log_module);
1894 END IF;
1895 --
1896 l_component_type         := 'AMB_ADR';
1897 l_component_code         := 'PI_CATEGORY_EXPENSE';
1898 l_component_type_code    := 'S';
1899 l_component_appl_id      :=  707;
1900 l_amb_context_code       := 'DEFAULT';
1901 x_transaction_coa_id     :=  null;
1902 x_accounting_coa_id      :=  null;
1903 --
1904 
1905  --
1906   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1907       trace
1908          (p_msg      => 'END of AcctDerRule_13'
1909          ,p_level    => C_LEVEL_PROCEDURE
1910          ,p_module   => l_log_module);
1911   END IF;
1912   x_value_type_code := 'S';
1913   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
1914   RETURN l_output_value;
1915 
1916 --
1917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1918       trace
1919          (p_msg      => 'END of AcctDerRule_13(invalid)'
1920          ,p_level    => C_LEVEL_PROCEDURE
1921          ,p_module   => l_log_module);
1922 END IF;
1923 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1924 x_value_type_code := null;
1925 l_output_value    := null;
1926 xla_accounting_err_pkg.build_message
1927                  (p_appli_s_name            => 'XLA'
1928                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1929                  ,p_token_1                 => 'COMPONENT_NAME'
1930                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1931                                                             l_component_type
1932                                                           , l_component_code
1933                                                           , l_component_type_code
1934                                                           , l_component_appl_id
1935                                                           , l_amb_context_code
1936                                                           )
1937                  ,p_token_2                 => 'OWNER'
1938                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1939                                                         'XLA_OWNER_TYPE'
1940                                                         ,l_component_type_code
1941                                                         )
1942                  ,p_token_3                 => 'PAD_NAME'
1943                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1944                  ,p_token_4                 => 'PAD_OWNER'
1945                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1946                                                         'XLA_OWNER_TYPE'
1947                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1948                                                         )
1949                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1950                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1951                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1952                  ,p_ae_header_id            => NULL
1953 );
1954 RETURN l_output_value;
1955 EXCEPTION
1956   WHEN xla_exceptions_pkg.application_exception THEN
1957       RAISE;
1958   WHEN OTHERS THEN
1959        xla_exceptions_pkg.raise_message
1960            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_13');
1961 END AcctDerRule_13;
1962 --
1963 
1964 ---------------------------------------
1965 --
1966 -- PRIVATE FUNCTION
1967 --         AcctDerRule_14
1968 --
1969 ---------------------------------------
1970 FUNCTION AcctDerRule_14 (
1971   p_application_id              IN NUMBER
1972 , p_ae_header_id                IN NUMBER
1973 , p_side                        IN VARCHAR2 
1974 --Product Line Accounting Category Expense Account
1975  , p_source_24            IN NUMBER
1976 --Transfer to Subinventory or Cost Group category expense account
1977  , p_source_25            IN NUMBER
1978 --Cost Group Identifier
1979  , p_source_26            IN NUMBER
1980 --INV Header Transfer Cost Group ID
1981  , p_source_27            IN NUMBER
1982 --INV Header Cost Group ID
1983  , p_source_28            IN NUMBER
1984 --Subinventory Name
1985  , p_source_29            IN VARCHAR2
1986 --INV Header Subinventory
1987  , p_source_30            IN VARCHAR2
1988 , x_transaction_coa_id         OUT NOCOPY NUMBER
1989 , x_accounting_coa_id          OUT NOCOPY NUMBER
1990 , x_value_type_code            OUT NOCOPY VARCHAR2
1991 )
1992 RETURN NUMBER
1993 IS
1994 l_component_type       VARCHAR2(80)  ;
1995 l_component_code       VARCHAR2(30)  ;
1996 l_component_type_code  VARCHAR2(1)   ;
1997 l_component_appl_id    INTEGER       ;
1998 l_amb_context_code     VARCHAR2(30)  ;
1999 l_log_module           VARCHAR2(240) ;
2000 l_output_value         NUMBER        ;
2001 BEGIN
2002 IF g_log_enabled THEN
2003       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_14';
2004 END IF;
2005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2006       trace
2007          (p_msg      => 'BEGIN of AcctDerRule_14'
2008          ,p_level    => C_LEVEL_PROCEDURE
2009          ,p_module   => l_log_module);
2010 END IF;
2011 --
2012 l_component_type         := 'AMB_ADR';
2013 l_component_code         := 'PI_CATEGORY_EXPENSE_ADR';
2014 l_component_type_code    := 'S';
2015 l_component_appl_id      :=  707;
2016 l_amb_context_code       := 'DEFAULT';
2017 x_transaction_coa_id     :=  null;
2018 x_accounting_coa_id      :=  null;
2019 --
2020 
2021  IF p_source_26 IS NOT NULL AND 
2022 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
2023  THEN 
2024  --
2025   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2026       trace
2027          (p_msg      => 'END of AcctDerRule_14'
2028          ,p_level    => C_LEVEL_PROCEDURE
2029          ,p_module   => l_log_module);
2030   END IF;
2031   x_value_type_code := 'S';
2032   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_25));
2033   RETURN l_output_value;
2034 
2035  ELSIF p_source_26 IS NOT NULL AND 
2036 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
2037  THEN 
2038  --
2039   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2040       trace
2041          (p_msg      => 'END of AcctDerRule_14'
2042          ,p_level    => C_LEVEL_PROCEDURE
2043          ,p_module   => l_log_module);
2044   END IF;
2045   x_value_type_code := 'S';
2046   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
2047   RETURN l_output_value;
2048 
2049  ELSIF p_source_29 IS NOT NULL AND 
2050 NVL(p_source_29,'
2051 ') = NVL(p_source_30,'
2052 ') 
2053  THEN 
2054  --
2055   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2056       trace
2057          (p_msg      => 'END of AcctDerRule_14'
2058          ,p_level    => C_LEVEL_PROCEDURE
2059          ,p_module   => l_log_module);
2060   END IF;
2061   x_value_type_code := 'S';
2062   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
2063   RETURN l_output_value;
2064 
2065 END IF;
2066 
2067  --
2068   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2069       trace
2070          (p_msg      => 'END of AcctDerRule_14'
2071          ,p_level    => C_LEVEL_PROCEDURE
2072          ,p_module   => l_log_module);
2073   END IF;
2074   x_value_type_code := 'S';
2075   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_25));
2076   RETURN l_output_value;
2077 
2078 --
2079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2080       trace
2081          (p_msg      => 'END of AcctDerRule_14(invalid)'
2082          ,p_level    => C_LEVEL_PROCEDURE
2083          ,p_module   => l_log_module);
2084 END IF;
2085 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2086 x_value_type_code := null;
2087 l_output_value    := null;
2088 xla_accounting_err_pkg.build_message
2089                  (p_appli_s_name            => 'XLA'
2090                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2091                  ,p_token_1                 => 'COMPONENT_NAME'
2092                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2093                                                             l_component_type
2094                                                           , l_component_code
2095                                                           , l_component_type_code
2096                                                           , l_component_appl_id
2097                                                           , l_amb_context_code
2098                                                           )
2099                  ,p_token_2                 => 'OWNER'
2100                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2101                                                         'XLA_OWNER_TYPE'
2102                                                         ,l_component_type_code
2103                                                         )
2104                  ,p_token_3                 => 'PAD_NAME'
2105                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2106                  ,p_token_4                 => 'PAD_OWNER'
2107                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2108                                                         'XLA_OWNER_TYPE'
2109                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2110                                                         )
2111                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2112                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2113                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2114                  ,p_ae_header_id            => NULL
2115 );
2116 RETURN l_output_value;
2117 EXCEPTION
2118   WHEN xla_exceptions_pkg.application_exception THEN
2119       RAISE;
2120   WHEN OTHERS THEN
2121        xla_exceptions_pkg.raise_message
2122            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_14');
2123 END AcctDerRule_14;
2124 --
2125 
2126 ---------------------------------------
2127 --
2128 -- PRIVATE FUNCTION
2129 --         AcctDerRule_15
2130 --
2131 ---------------------------------------
2132 FUNCTION AcctDerRule_15 (
2133   p_application_id              IN NUMBER
2134 , p_ae_header_id                IN NUMBER
2135 , p_side                        IN VARCHAR2 
2136 --Product Line Accounting Category Expense Account
2137  , p_source_24            IN NUMBER
2138 --Transfer to Subinventory or Cost Group category expense account
2139  , p_source_25            IN NUMBER
2140 --Cost Group Identifier
2141  , p_source_26            IN NUMBER
2142 --INV Header Transfer Cost Group ID
2143  , p_source_27            IN NUMBER
2144 --INV Header Cost Group ID
2145  , p_source_28            IN NUMBER
2146 --Subinventory Name
2147  , p_source_29            IN VARCHAR2
2148 --INV Header Transfer Subinventory
2149  , p_source_31            IN VARCHAR2
2150 , x_transaction_coa_id         OUT NOCOPY NUMBER
2151 , x_accounting_coa_id          OUT NOCOPY NUMBER
2152 , x_value_type_code            OUT NOCOPY VARCHAR2
2153 )
2154 RETURN NUMBER
2155 IS
2156 l_component_type       VARCHAR2(80)  ;
2157 l_component_code       VARCHAR2(30)  ;
2158 l_component_type_code  VARCHAR2(1)   ;
2159 l_component_appl_id    INTEGER       ;
2160 l_amb_context_code     VARCHAR2(30)  ;
2161 l_log_module           VARCHAR2(240) ;
2162 l_output_value         NUMBER        ;
2163 BEGIN
2164 IF g_log_enabled THEN
2165       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
2166 END IF;
2167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2168       trace
2169          (p_msg      => 'BEGIN of AcctDerRule_15'
2170          ,p_level    => C_LEVEL_PROCEDURE
2171          ,p_module   => l_log_module);
2172 END IF;
2173 --
2174 l_component_type         := 'AMB_ADR';
2175 l_component_code         := 'PI_CATEGORY_OFFSET_ADR';
2176 l_component_type_code    := 'S';
2177 l_component_appl_id      :=  707;
2178 l_amb_context_code       := 'DEFAULT';
2179 x_transaction_coa_id     :=  null;
2180 x_accounting_coa_id      :=  null;
2181 --
2182 
2183  IF p_source_26 IS NOT NULL AND 
2184 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
2185  THEN 
2186  --
2187   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2188       trace
2189          (p_msg      => 'END of AcctDerRule_15'
2190          ,p_level    => C_LEVEL_PROCEDURE
2191          ,p_module   => l_log_module);
2192   END IF;
2193   x_value_type_code := 'S';
2194   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_25));
2195   RETURN l_output_value;
2196 
2197  ELSIF p_source_26 IS NOT NULL AND 
2198 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
2199  THEN 
2200  --
2201   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2202       trace
2203          (p_msg      => 'END of AcctDerRule_15'
2204          ,p_level    => C_LEVEL_PROCEDURE
2205          ,p_module   => l_log_module);
2206   END IF;
2207   x_value_type_code := 'S';
2208   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
2209   RETURN l_output_value;
2210 
2211  ELSIF p_source_29 IS NOT NULL AND 
2212 NVL(p_source_29,'
2213 ') = NVL(p_source_31,'
2214 ') 
2215  THEN 
2216  --
2217   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2218       trace
2219          (p_msg      => 'END of AcctDerRule_15'
2220          ,p_level    => C_LEVEL_PROCEDURE
2221          ,p_module   => l_log_module);
2222   END IF;
2223   x_value_type_code := 'S';
2224   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_25));
2225   RETURN l_output_value;
2226 
2227 END IF;
2228 
2229  --
2230   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2231       trace
2232          (p_msg      => 'END of AcctDerRule_15'
2233          ,p_level    => C_LEVEL_PROCEDURE
2234          ,p_module   => l_log_module);
2235   END IF;
2236   x_value_type_code := 'S';
2237   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
2238   RETURN l_output_value;
2239 
2240 --
2241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2242       trace
2243          (p_msg      => 'END of AcctDerRule_15(invalid)'
2244          ,p_level    => C_LEVEL_PROCEDURE
2245          ,p_module   => l_log_module);
2246 END IF;
2247 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2248 x_value_type_code := null;
2249 l_output_value    := null;
2250 xla_accounting_err_pkg.build_message
2251                  (p_appli_s_name            => 'XLA'
2252                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2253                  ,p_token_1                 => 'COMPONENT_NAME'
2254                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2255                                                             l_component_type
2256                                                           , l_component_code
2257                                                           , l_component_type_code
2258                                                           , l_component_appl_id
2259                                                           , l_amb_context_code
2260                                                           )
2261                  ,p_token_2                 => 'OWNER'
2262                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2263                                                         'XLA_OWNER_TYPE'
2264                                                         ,l_component_type_code
2265                                                         )
2266                  ,p_token_3                 => 'PAD_NAME'
2267                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2268                  ,p_token_4                 => 'PAD_OWNER'
2269                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2270                                                         'XLA_OWNER_TYPE'
2271                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2272                                                         )
2273                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2274                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2275                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2276                  ,p_ae_header_id            => NULL
2277 );
2278 RETURN l_output_value;
2279 EXCEPTION
2280   WHEN xla_exceptions_pkg.application_exception THEN
2281       RAISE;
2282   WHEN OTHERS THEN
2283        xla_exceptions_pkg.raise_message
2284            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_15');
2285 END AcctDerRule_15;
2286 --
2287 
2288 ---------------------------------------
2289 --
2290 -- PRIVATE FUNCTION
2291 --         AcctDerRule_16
2292 --
2293 ---------------------------------------
2294 FUNCTION AcctDerRule_16 (
2295   p_application_id              IN NUMBER
2296 , p_ae_header_id                IN NUMBER
2297 , p_side                        IN VARCHAR2 
2298 --Transaction Distribution Account
2299  , p_source_20            IN NUMBER
2300 , x_transaction_coa_id         OUT NOCOPY NUMBER
2301 , x_accounting_coa_id          OUT NOCOPY NUMBER
2302 , x_value_type_code            OUT NOCOPY VARCHAR2
2303 )
2304 RETURN NUMBER
2305 IS
2306 l_component_type       VARCHAR2(80)  ;
2307 l_component_code       VARCHAR2(30)  ;
2308 l_component_type_code  VARCHAR2(1)   ;
2309 l_component_appl_id    INTEGER       ;
2310 l_amb_context_code     VARCHAR2(30)  ;
2311 l_log_module           VARCHAR2(240) ;
2312 l_output_value         NUMBER        ;
2313 BEGIN
2314 IF g_log_enabled THEN
2315       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_16';
2316 END IF;
2317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2318       trace
2319          (p_msg      => 'BEGIN of AcctDerRule_16'
2320          ,p_level    => C_LEVEL_PROCEDURE
2321          ,p_module   => l_log_module);
2322 END IF;
2323 --
2324 l_component_type         := 'AMB_ADR';
2325 l_component_code         := 'PI_DISTRIBUTION';
2326 l_component_type_code    := 'S';
2327 l_component_appl_id      :=  707;
2328 l_amb_context_code       := 'DEFAULT';
2329 x_transaction_coa_id     :=  null;
2330 x_accounting_coa_id      :=  null;
2331 --
2332 
2333  --
2334   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2335       trace
2336          (p_msg      => 'END of AcctDerRule_16'
2337          ,p_level    => C_LEVEL_PROCEDURE
2338          ,p_module   => l_log_module);
2339   END IF;
2340   x_value_type_code := 'S';
2341   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_20));
2342   RETURN l_output_value;
2343 
2344 --
2345 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2346       trace
2347          (p_msg      => 'END of AcctDerRule_16(invalid)'
2348          ,p_level    => C_LEVEL_PROCEDURE
2349          ,p_module   => l_log_module);
2350 END IF;
2351 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2352 x_value_type_code := null;
2353 l_output_value    := null;
2354 xla_accounting_err_pkg.build_message
2355                  (p_appli_s_name            => 'XLA'
2356                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2357                  ,p_token_1                 => 'COMPONENT_NAME'
2358                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2359                                                             l_component_type
2360                                                           , l_component_code
2361                                                           , l_component_type_code
2362                                                           , l_component_appl_id
2363                                                           , l_amb_context_code
2364                                                           )
2365                  ,p_token_2                 => 'OWNER'
2366                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2367                                                         'XLA_OWNER_TYPE'
2368                                                         ,l_component_type_code
2369                                                         )
2370                  ,p_token_3                 => 'PAD_NAME'
2371                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2372                  ,p_token_4                 => 'PAD_OWNER'
2373                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2374                                                         'XLA_OWNER_TYPE'
2375                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2376                                                         )
2377                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2378                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2379                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2380                  ,p_ae_header_id            => NULL
2381 );
2382 RETURN l_output_value;
2383 EXCEPTION
2384   WHEN xla_exceptions_pkg.application_exception THEN
2385       RAISE;
2386   WHEN OTHERS THEN
2387        xla_exceptions_pkg.raise_message
2388            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_16');
2389 END AcctDerRule_16;
2390 --
2391 
2392 ---------------------------------------
2393 --
2394 -- PRIVATE FUNCTION
2395 --         AcctDerRule_17
2396 --
2397 ---------------------------------------
2398 FUNCTION AcctDerRule_17 (
2399   p_application_id              IN NUMBER
2400 , p_ae_header_id                IN NUMBER
2401 , p_side                        IN VARCHAR2 
2402 --Transaction Transportation Distribution Account
2403  , p_source_32            IN NUMBER
2404 , x_transaction_coa_id         OUT NOCOPY NUMBER
2405 , x_accounting_coa_id          OUT NOCOPY NUMBER
2406 , x_value_type_code            OUT NOCOPY VARCHAR2
2407 )
2408 RETURN NUMBER
2409 IS
2410 l_component_type       VARCHAR2(80)  ;
2411 l_component_code       VARCHAR2(30)  ;
2412 l_component_type_code  VARCHAR2(1)   ;
2413 l_component_appl_id    INTEGER       ;
2414 l_amb_context_code     VARCHAR2(30)  ;
2415 l_log_module           VARCHAR2(240) ;
2416 l_output_value         NUMBER        ;
2417 BEGIN
2418 IF g_log_enabled THEN
2419       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_17';
2420 END IF;
2421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2422       trace
2423          (p_msg      => 'BEGIN of AcctDerRule_17'
2424          ,p_level    => C_LEVEL_PROCEDURE
2425          ,p_module   => l_log_module);
2426 END IF;
2427 --
2428 l_component_type         := 'AMB_ADR';
2429 l_component_code         := 'PI_FREIGHT';
2430 l_component_type_code    := 'S';
2431 l_component_appl_id      :=  707;
2432 l_amb_context_code       := 'DEFAULT';
2433 x_transaction_coa_id     :=  null;
2434 x_accounting_coa_id      :=  null;
2435 --
2436 
2437  --
2438   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2439       trace
2440          (p_msg      => 'END of AcctDerRule_17'
2441          ,p_level    => C_LEVEL_PROCEDURE
2442          ,p_module   => l_log_module);
2443   END IF;
2444   x_value_type_code := 'S';
2445   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_32));
2446   RETURN l_output_value;
2447 
2448 --
2449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2450       trace
2451          (p_msg      => 'END of AcctDerRule_17(invalid)'
2452          ,p_level    => C_LEVEL_PROCEDURE
2453          ,p_module   => l_log_module);
2454 END IF;
2455 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2456 x_value_type_code := null;
2457 l_output_value    := null;
2458 xla_accounting_err_pkg.build_message
2459                  (p_appli_s_name            => 'XLA'
2460                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2461                  ,p_token_1                 => 'COMPONENT_NAME'
2462                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2463                                                             l_component_type
2464                                                           , l_component_code
2465                                                           , l_component_type_code
2466                                                           , l_component_appl_id
2467                                                           , l_amb_context_code
2468                                                           )
2469                  ,p_token_2                 => 'OWNER'
2470                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2471                                                         'XLA_OWNER_TYPE'
2472                                                         ,l_component_type_code
2473                                                         )
2474                  ,p_token_3                 => 'PAD_NAME'
2475                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2476                  ,p_token_4                 => 'PAD_OWNER'
2477                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2478                                                         'XLA_OWNER_TYPE'
2479                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2480                                                         )
2481                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2482                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2483                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2484                  ,p_ae_header_id            => NULL
2485 );
2486 RETURN l_output_value;
2487 EXCEPTION
2488   WHEN xla_exceptions_pkg.application_exception THEN
2489       RAISE;
2490   WHEN OTHERS THEN
2491        xla_exceptions_pkg.raise_message
2492            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_17');
2493 END AcctDerRule_17;
2494 --
2495 
2496 ---------------------------------------
2497 --
2498 -- PRIVATE FUNCTION
2499 --         AcctDerRule_18
2500 --
2501 ---------------------------------------
2502 FUNCTION AcctDerRule_18 (
2503   p_application_id              IN NUMBER
2504 , p_ae_header_id                IN NUMBER
2505 , p_side                        IN VARCHAR2 
2506 --Interorg Revenue Account
2507  , p_source_33            IN NUMBER
2508 , x_transaction_coa_id         OUT NOCOPY NUMBER
2509 , x_accounting_coa_id          OUT NOCOPY NUMBER
2510 , x_value_type_code            OUT NOCOPY VARCHAR2
2511 )
2512 RETURN NUMBER
2513 IS
2514 l_component_type       VARCHAR2(80)  ;
2515 l_component_code       VARCHAR2(30)  ;
2516 l_component_type_code  VARCHAR2(1)   ;
2517 l_component_appl_id    INTEGER       ;
2518 l_amb_context_code     VARCHAR2(30)  ;
2519 l_log_module           VARCHAR2(240) ;
2520 l_output_value         NUMBER        ;
2521 BEGIN
2522 IF g_log_enabled THEN
2523       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_18';
2524 END IF;
2525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2526       trace
2527          (p_msg      => 'BEGIN of AcctDerRule_18'
2528          ,p_level    => C_LEVEL_PROCEDURE
2529          ,p_module   => l_log_module);
2530 END IF;
2531 --
2532 l_component_type         := 'AMB_ADR';
2533 l_component_code         := 'PI_INTEROG_REVENUE';
2534 l_component_type_code    := 'S';
2535 l_component_appl_id      :=  707;
2536 l_amb_context_code       := 'DEFAULT';
2537 x_transaction_coa_id     :=  null;
2538 x_accounting_coa_id      :=  null;
2539 --
2540 
2541  --
2542   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2543       trace
2544          (p_msg      => 'END of AcctDerRule_18'
2545          ,p_level    => C_LEVEL_PROCEDURE
2546          ,p_module   => l_log_module);
2547   END IF;
2548   x_value_type_code := 'S';
2549   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_33));
2550   RETURN l_output_value;
2551 
2552 --
2553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2554       trace
2555          (p_msg      => 'END of AcctDerRule_18(invalid)'
2556          ,p_level    => C_LEVEL_PROCEDURE
2557          ,p_module   => l_log_module);
2558 END IF;
2559 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2560 x_value_type_code := null;
2561 l_output_value    := null;
2562 xla_accounting_err_pkg.build_message
2563                  (p_appli_s_name            => 'XLA'
2564                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2565                  ,p_token_1                 => 'COMPONENT_NAME'
2566                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2567                                                             l_component_type
2568                                                           , l_component_code
2569                                                           , l_component_type_code
2570                                                           , l_component_appl_id
2571                                                           , l_amb_context_code
2572                                                           )
2573                  ,p_token_2                 => 'OWNER'
2574                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2575                                                         'XLA_OWNER_TYPE'
2576                                                         ,l_component_type_code
2577                                                         )
2578                  ,p_token_3                 => 'PAD_NAME'
2579                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2580                  ,p_token_4                 => 'PAD_OWNER'
2581                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2582                                                         'XLA_OWNER_TYPE'
2583                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2584                                                         )
2585                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2586                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2587                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2588                  ,p_ae_header_id            => NULL
2589 );
2590 RETURN l_output_value;
2591 EXCEPTION
2592   WHEN xla_exceptions_pkg.application_exception THEN
2593       RAISE;
2594   WHEN OTHERS THEN
2595        xla_exceptions_pkg.raise_message
2596            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_18');
2597 END AcctDerRule_18;
2598 --
2599 
2600 ---------------------------------------
2601 --
2602 -- PRIVATE FUNCTION
2603 --         AcctDerRule_19
2604 --
2605 ---------------------------------------
2606 FUNCTION AcctDerRule_19 (
2607   p_application_id              IN NUMBER
2608 , p_ae_header_id                IN NUMBER
2609 , p_side                        IN VARCHAR2 
2610 --Interorg Expense Account
2611  , p_source_34            IN NUMBER
2612 , x_transaction_coa_id         OUT NOCOPY NUMBER
2613 , x_accounting_coa_id          OUT NOCOPY NUMBER
2614 , x_value_type_code            OUT NOCOPY VARCHAR2
2615 )
2616 RETURN NUMBER
2617 IS
2618 l_component_type       VARCHAR2(80)  ;
2619 l_component_code       VARCHAR2(30)  ;
2620 l_component_type_code  VARCHAR2(1)   ;
2621 l_component_appl_id    INTEGER       ;
2622 l_amb_context_code     VARCHAR2(30)  ;
2623 l_log_module           VARCHAR2(240) ;
2624 l_output_value         NUMBER        ;
2625 BEGIN
2626 IF g_log_enabled THEN
2627       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_19';
2628 END IF;
2629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2630       trace
2631          (p_msg      => 'BEGIN of AcctDerRule_19'
2632          ,p_level    => C_LEVEL_PROCEDURE
2633          ,p_module   => l_log_module);
2634 END IF;
2635 --
2636 l_component_type         := 'AMB_ADR';
2637 l_component_code         := 'PI_INTERORG_EXPENSE';
2638 l_component_type_code    := 'S';
2639 l_component_appl_id      :=  707;
2640 l_amb_context_code       := 'DEFAULT';
2641 x_transaction_coa_id     :=  null;
2642 x_accounting_coa_id      :=  null;
2643 --
2644 
2645  --
2646   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2647       trace
2648          (p_msg      => 'END of AcctDerRule_19'
2649          ,p_level    => C_LEVEL_PROCEDURE
2650          ,p_module   => l_log_module);
2651   END IF;
2652   x_value_type_code := 'S';
2653   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_34));
2654   RETURN l_output_value;
2655 
2656 --
2657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2658       trace
2659          (p_msg      => 'END of AcctDerRule_19(invalid)'
2660          ,p_level    => C_LEVEL_PROCEDURE
2661          ,p_module   => l_log_module);
2662 END IF;
2663 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2664 x_value_type_code := null;
2665 l_output_value    := null;
2666 xla_accounting_err_pkg.build_message
2667                  (p_appli_s_name            => 'XLA'
2668                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2669                  ,p_token_1                 => 'COMPONENT_NAME'
2670                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2671                                                             l_component_type
2672                                                           , l_component_code
2673                                                           , l_component_type_code
2674                                                           , l_component_appl_id
2675                                                           , l_amb_context_code
2676                                                           )
2677                  ,p_token_2                 => 'OWNER'
2678                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2679                                                         'XLA_OWNER_TYPE'
2680                                                         ,l_component_type_code
2681                                                         )
2682                  ,p_token_3                 => 'PAD_NAME'
2683                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2684                  ,p_token_4                 => 'PAD_OWNER'
2685                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2686                                                         'XLA_OWNER_TYPE'
2687                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2688                                                         )
2689                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2690                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2691                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2692                  ,p_ae_header_id            => NULL
2693 );
2694 RETURN l_output_value;
2695 EXCEPTION
2696   WHEN xla_exceptions_pkg.application_exception THEN
2697       RAISE;
2698   WHEN OTHERS THEN
2699        xla_exceptions_pkg.raise_message
2700            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_19');
2701 END AcctDerRule_19;
2702 --
2703 
2704 ---------------------------------------
2705 --
2706 -- PRIVATE FUNCTION
2707 --         AcctDerRule_20
2708 --
2709 ---------------------------------------
2710 FUNCTION AcctDerRule_20 (
2711   p_application_id              IN NUMBER
2712 , p_ae_header_id                IN NUMBER
2713 , p_side                        IN VARCHAR2 
2714 --Interorg Payables Account
2715  , p_source_35            IN NUMBER
2716 , x_transaction_coa_id         OUT NOCOPY NUMBER
2717 , x_accounting_coa_id          OUT NOCOPY NUMBER
2718 , x_value_type_code            OUT NOCOPY VARCHAR2
2719 )
2720 RETURN NUMBER
2721 IS
2722 l_component_type       VARCHAR2(80)  ;
2723 l_component_code       VARCHAR2(30)  ;
2724 l_component_type_code  VARCHAR2(1)   ;
2725 l_component_appl_id    INTEGER       ;
2726 l_amb_context_code     VARCHAR2(30)  ;
2727 l_log_module           VARCHAR2(240) ;
2728 l_output_value         NUMBER        ;
2729 BEGIN
2730 IF g_log_enabled THEN
2731       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_20';
2732 END IF;
2733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2734       trace
2735          (p_msg      => 'BEGIN of AcctDerRule_20'
2736          ,p_level    => C_LEVEL_PROCEDURE
2737          ,p_module   => l_log_module);
2738 END IF;
2739 --
2740 l_component_type         := 'AMB_ADR';
2741 l_component_code         := 'PI_INTERORG_PAYABLES';
2742 l_component_type_code    := 'S';
2743 l_component_appl_id      :=  707;
2744 l_amb_context_code       := 'DEFAULT';
2745 x_transaction_coa_id     :=  null;
2746 x_accounting_coa_id      :=  null;
2747 --
2748 
2749  --
2750   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2751       trace
2752          (p_msg      => 'END of AcctDerRule_20'
2753          ,p_level    => C_LEVEL_PROCEDURE
2754          ,p_module   => l_log_module);
2755   END IF;
2756   x_value_type_code := 'S';
2757   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_35));
2758   RETURN l_output_value;
2759 
2760 --
2761 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2762       trace
2763          (p_msg      => 'END of AcctDerRule_20(invalid)'
2764          ,p_level    => C_LEVEL_PROCEDURE
2765          ,p_module   => l_log_module);
2766 END IF;
2767 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2768 x_value_type_code := null;
2769 l_output_value    := null;
2770 xla_accounting_err_pkg.build_message
2771                  (p_appli_s_name            => 'XLA'
2772                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2773                  ,p_token_1                 => 'COMPONENT_NAME'
2774                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2775                                                             l_component_type
2776                                                           , l_component_code
2777                                                           , l_component_type_code
2778                                                           , l_component_appl_id
2779                                                           , l_amb_context_code
2780                                                           )
2781                  ,p_token_2                 => 'OWNER'
2782                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2783                                                         'XLA_OWNER_TYPE'
2784                                                         ,l_component_type_code
2785                                                         )
2786                  ,p_token_3                 => 'PAD_NAME'
2787                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2788                  ,p_token_4                 => 'PAD_OWNER'
2789                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2790                                                         'XLA_OWNER_TYPE'
2791                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2792                                                         )
2793                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2794                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2795                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2796                  ,p_ae_header_id            => NULL
2797 );
2798 RETURN l_output_value;
2799 EXCEPTION
2800   WHEN xla_exceptions_pkg.application_exception THEN
2801       RAISE;
2802   WHEN OTHERS THEN
2803        xla_exceptions_pkg.raise_message
2804            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_20');
2805 END AcctDerRule_20;
2806 --
2807 
2808 ---------------------------------------
2809 --
2810 -- PRIVATE FUNCTION
2811 --         AcctDerRule_21
2812 --
2813 ---------------------------------------
2814 FUNCTION AcctDerRule_21 (
2815   p_application_id              IN NUMBER
2816 , p_ae_header_id                IN NUMBER
2817 , p_side                        IN VARCHAR2 
2818 --Interorg Price Variance Account
2819  , p_source_36            IN NUMBER
2820 , x_transaction_coa_id         OUT NOCOPY NUMBER
2821 , x_accounting_coa_id          OUT NOCOPY NUMBER
2822 , x_value_type_code            OUT NOCOPY VARCHAR2
2823 )
2824 RETURN NUMBER
2825 IS
2826 l_component_type       VARCHAR2(80)  ;
2827 l_component_code       VARCHAR2(30)  ;
2828 l_component_type_code  VARCHAR2(1)   ;
2829 l_component_appl_id    INTEGER       ;
2830 l_amb_context_code     VARCHAR2(30)  ;
2831 l_log_module           VARCHAR2(240) ;
2832 l_output_value         NUMBER        ;
2833 BEGIN
2834 IF g_log_enabled THEN
2835       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_21';
2836 END IF;
2837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2838       trace
2839          (p_msg      => 'BEGIN of AcctDerRule_21'
2840          ,p_level    => C_LEVEL_PROCEDURE
2841          ,p_module   => l_log_module);
2842 END IF;
2843 --
2844 l_component_type         := 'AMB_ADR';
2845 l_component_code         := 'PI_INTERORG_PRICE_VARIANCE';
2846 l_component_type_code    := 'S';
2847 l_component_appl_id      :=  707;
2848 l_amb_context_code       := 'DEFAULT';
2849 x_transaction_coa_id     :=  null;
2850 x_accounting_coa_id      :=  null;
2851 --
2852 
2853  --
2854   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2855       trace
2856          (p_msg      => 'END of AcctDerRule_21'
2857          ,p_level    => C_LEVEL_PROCEDURE
2858          ,p_module   => l_log_module);
2859   END IF;
2860   x_value_type_code := 'S';
2861   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_36));
2862   RETURN l_output_value;
2863 
2864 --
2865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2866       trace
2867          (p_msg      => 'END of AcctDerRule_21(invalid)'
2868          ,p_level    => C_LEVEL_PROCEDURE
2869          ,p_module   => l_log_module);
2870 END IF;
2871 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2872 x_value_type_code := null;
2873 l_output_value    := null;
2874 xla_accounting_err_pkg.build_message
2875                  (p_appli_s_name            => 'XLA'
2876                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2877                  ,p_token_1                 => 'COMPONENT_NAME'
2878                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2879                                                             l_component_type
2880                                                           , l_component_code
2881                                                           , l_component_type_code
2882                                                           , l_component_appl_id
2883                                                           , l_amb_context_code
2884                                                           )
2885                  ,p_token_2                 => 'OWNER'
2886                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2887                                                         'XLA_OWNER_TYPE'
2888                                                         ,l_component_type_code
2889                                                         )
2890                  ,p_token_3                 => 'PAD_NAME'
2891                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2892                  ,p_token_4                 => 'PAD_OWNER'
2893                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2894                                                         'XLA_OWNER_TYPE'
2895                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2896                                                         )
2897                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2898                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2899                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2900                  ,p_ae_header_id            => NULL
2901 );
2902 RETURN l_output_value;
2903 EXCEPTION
2904   WHEN xla_exceptions_pkg.application_exception THEN
2905       RAISE;
2906   WHEN OTHERS THEN
2907        xla_exceptions_pkg.raise_message
2908            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_21');
2909 END AcctDerRule_21;
2910 --
2911 
2912 ---------------------------------------
2913 --
2914 -- PRIVATE FUNCTION
2915 --         AcctDerRule_22
2916 --
2917 ---------------------------------------
2918 FUNCTION AcctDerRule_22 (
2919   p_application_id              IN NUMBER
2920 , p_ae_header_id                IN NUMBER
2921 , p_side                        IN VARCHAR2 
2922 --Profit in Inventory Account
2923  , p_source_37            IN NUMBER
2924 , x_transaction_coa_id         OUT NOCOPY NUMBER
2925 , x_accounting_coa_id          OUT NOCOPY NUMBER
2926 , x_value_type_code            OUT NOCOPY VARCHAR2
2927 )
2928 RETURN NUMBER
2929 IS
2930 l_component_type       VARCHAR2(80)  ;
2931 l_component_code       VARCHAR2(30)  ;
2932 l_component_type_code  VARCHAR2(1)   ;
2933 l_component_appl_id    INTEGER       ;
2934 l_amb_context_code     VARCHAR2(30)  ;
2935 l_log_module           VARCHAR2(240) ;
2936 l_output_value         NUMBER        ;
2937 BEGIN
2938 IF g_log_enabled THEN
2939       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_22';
2940 END IF;
2941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2942       trace
2943          (p_msg      => 'BEGIN of AcctDerRule_22'
2944          ,p_level    => C_LEVEL_PROCEDURE
2945          ,p_module   => l_log_module);
2946 END IF;
2947 --
2948 l_component_type         := 'AMB_ADR';
2949 l_component_code         := 'PI_INTERORG_PROFIT';
2950 l_component_type_code    := 'S';
2951 l_component_appl_id      :=  707;
2952 l_amb_context_code       := 'DEFAULT';
2953 x_transaction_coa_id     :=  null;
2954 x_accounting_coa_id      :=  null;
2955 --
2956 
2957  --
2958   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2959       trace
2960          (p_msg      => 'END of AcctDerRule_22'
2961          ,p_level    => C_LEVEL_PROCEDURE
2962          ,p_module   => l_log_module);
2963   END IF;
2964   x_value_type_code := 'S';
2965   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_37));
2966   RETURN l_output_value;
2967 
2968 --
2969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2970       trace
2971          (p_msg      => 'END of AcctDerRule_22(invalid)'
2972          ,p_level    => C_LEVEL_PROCEDURE
2973          ,p_module   => l_log_module);
2974 END IF;
2975 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2976 x_value_type_code := null;
2977 l_output_value    := null;
2978 xla_accounting_err_pkg.build_message
2979                  (p_appli_s_name            => 'XLA'
2980                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2981                  ,p_token_1                 => 'COMPONENT_NAME'
2982                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2983                                                             l_component_type
2984                                                           , l_component_code
2985                                                           , l_component_type_code
2986                                                           , l_component_appl_id
2987                                                           , l_amb_context_code
2988                                                           )
2989                  ,p_token_2                 => 'OWNER'
2990                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2991                                                         'XLA_OWNER_TYPE'
2992                                                         ,l_component_type_code
2993                                                         )
2994                  ,p_token_3                 => 'PAD_NAME'
2995                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2996                  ,p_token_4                 => 'PAD_OWNER'
2997                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2998                                                         'XLA_OWNER_TYPE'
2999                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3000                                                         )
3001                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3002                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3003                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3004                  ,p_ae_header_id            => NULL
3005 );
3006 RETURN l_output_value;
3007 EXCEPTION
3008   WHEN xla_exceptions_pkg.application_exception THEN
3009       RAISE;
3010   WHEN OTHERS THEN
3011        xla_exceptions_pkg.raise_message
3012            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_22');
3013 END AcctDerRule_22;
3014 --
3015 
3016 ---------------------------------------
3017 --
3018 -- PRIVATE FUNCTION
3019 --         AcctDerRule_23
3020 --
3021 ---------------------------------------
3022 FUNCTION AcctDerRule_23 (
3023   p_application_id              IN NUMBER
3024 , p_ae_header_id                IN NUMBER
3025 , p_side                        IN VARCHAR2 
3026 --Product Line Accounting Category Expense Account
3027  , p_source_24            IN NUMBER
3028 --Inventory Organization Expense Account
3029  , p_source_38            IN NUMBER
3030 --Primary Cost Method
3031  , p_source_39            IN NUMBER
3032  , p_source_39_meaning    IN VARCHAR2
3033 , x_transaction_coa_id         OUT NOCOPY NUMBER
3034 , x_accounting_coa_id          OUT NOCOPY NUMBER
3035 , x_value_type_code            OUT NOCOPY VARCHAR2
3036 )
3037 RETURN NUMBER
3038 IS
3039 l_component_type       VARCHAR2(80)  ;
3040 l_component_code       VARCHAR2(30)  ;
3041 l_component_type_code  VARCHAR2(1)   ;
3042 l_component_appl_id    INTEGER       ;
3043 l_amb_context_code     VARCHAR2(30)  ;
3044 l_log_module           VARCHAR2(240) ;
3045 l_output_value         NUMBER        ;
3046 BEGIN
3047 IF g_log_enabled THEN
3048       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_23';
3049 END IF;
3050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3051       trace
3052          (p_msg      => 'BEGIN of AcctDerRule_23'
3053          ,p_level    => C_LEVEL_PROCEDURE
3054          ,p_module   => l_log_module);
3055 END IF;
3056 --
3057 l_component_type         := 'AMB_ADR';
3058 l_component_code         := 'PI_INTERORG_SHIP_EXPENSE';
3059 l_component_type_code    := 'S';
3060 l_component_appl_id      :=  707;
3061 l_amb_context_code       := 'DEFAULT';
3062 x_transaction_coa_id     :=  null;
3063 x_accounting_coa_id      :=  null;
3064 --
3065 
3066  IF NVL(p_source_39,9E125) =  1
3067  THEN 
3068  --
3069   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3070       trace
3071          (p_msg      => 'END of AcctDerRule_23'
3072          ,p_level    => C_LEVEL_PROCEDURE
3073          ,p_module   => l_log_module);
3074   END IF;
3075   x_value_type_code := 'S';
3076   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_38));
3077   RETURN l_output_value;
3078 
3079  ELSIF NVL(p_source_39,9E125) <>  1
3080  THEN 
3081  --
3082   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3083       trace
3084          (p_msg      => 'END of AcctDerRule_23'
3085          ,p_level    => C_LEVEL_PROCEDURE
3086          ,p_module   => l_log_module);
3087   END IF;
3088   x_value_type_code := 'S';
3089   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
3090   RETURN l_output_value;
3091 
3092  END IF;
3093 --
3094 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3095       trace
3096          (p_msg      => 'END of AcctDerRule_23(invalid)'
3097          ,p_level    => C_LEVEL_PROCEDURE
3098          ,p_module   => l_log_module);
3099 END IF;
3100 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3101 x_value_type_code := null;
3102 l_output_value    := null;
3103 xla_accounting_err_pkg.build_message
3104                  (p_appli_s_name            => 'XLA'
3105                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3106                  ,p_token_1                 => 'COMPONENT_NAME'
3107                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3108                                                             l_component_type
3109                                                           , l_component_code
3110                                                           , l_component_type_code
3111                                                           , l_component_appl_id
3112                                                           , l_amb_context_code
3113                                                           )
3114                  ,p_token_2                 => 'OWNER'
3115                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3116                                                         'XLA_OWNER_TYPE'
3117                                                         ,l_component_type_code
3118                                                         )
3119                  ,p_token_3                 => 'PAD_NAME'
3120                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3121                  ,p_token_4                 => 'PAD_OWNER'
3122                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3123                                                         'XLA_OWNER_TYPE'
3124                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3125                                                         )
3126                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3127                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3128                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3129                  ,p_ae_header_id            => NULL
3130 );
3131 RETURN l_output_value;
3132 EXCEPTION
3133   WHEN xla_exceptions_pkg.application_exception THEN
3134       RAISE;
3135   WHEN OTHERS THEN
3136        xla_exceptions_pkg.raise_message
3137            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_23');
3138 END AcctDerRule_23;
3139 --
3140 
3141 ---------------------------------------
3142 --
3143 -- PRIVATE FUNCTION
3144 --         AcctDerRule_24
3145 --
3146 ---------------------------------------
3147 FUNCTION AcctDerRule_24 (
3148   p_application_id              IN NUMBER
3149 , p_ae_header_id                IN NUMBER
3150 , p_side                        IN VARCHAR2 
3151 --Interorg Transfer Credit Account
3152  , p_source_40            IN NUMBER
3153 , x_transaction_coa_id         OUT NOCOPY NUMBER
3154 , x_accounting_coa_id          OUT NOCOPY NUMBER
3155 , x_value_type_code            OUT NOCOPY VARCHAR2
3156 )
3157 RETURN NUMBER
3158 IS
3159 l_component_type       VARCHAR2(80)  ;
3160 l_component_code       VARCHAR2(30)  ;
3161 l_component_type_code  VARCHAR2(1)   ;
3162 l_component_appl_id    INTEGER       ;
3163 l_amb_context_code     VARCHAR2(30)  ;
3164 l_log_module           VARCHAR2(240) ;
3165 l_output_value         NUMBER        ;
3166 BEGIN
3167 IF g_log_enabled THEN
3168       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_24';
3169 END IF;
3170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3171       trace
3172          (p_msg      => 'BEGIN of AcctDerRule_24'
3173          ,p_level    => C_LEVEL_PROCEDURE
3174          ,p_module   => l_log_module);
3175 END IF;
3176 --
3177 l_component_type         := 'AMB_ADR';
3178 l_component_code         := 'PI_INTERORG_TRANSFER';
3179 l_component_type_code    := 'S';
3180 l_component_appl_id      :=  707;
3181 l_amb_context_code       := 'DEFAULT';
3182 x_transaction_coa_id     :=  null;
3183 x_accounting_coa_id      :=  null;
3184 --
3185 
3186  --
3187   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3188       trace
3189          (p_msg      => 'END of AcctDerRule_24'
3190          ,p_level    => C_LEVEL_PROCEDURE
3191          ,p_module   => l_log_module);
3192   END IF;
3193   x_value_type_code := 'S';
3194   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_40));
3195   RETURN l_output_value;
3196 
3197 --
3198 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3199       trace
3200          (p_msg      => 'END of AcctDerRule_24(invalid)'
3201          ,p_level    => C_LEVEL_PROCEDURE
3202          ,p_module   => l_log_module);
3203 END IF;
3204 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3205 x_value_type_code := null;
3206 l_output_value    := null;
3207 xla_accounting_err_pkg.build_message
3208                  (p_appli_s_name            => 'XLA'
3209                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3210                  ,p_token_1                 => 'COMPONENT_NAME'
3211                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3212                                                             l_component_type
3213                                                           , l_component_code
3214                                                           , l_component_type_code
3215                                                           , l_component_appl_id
3216                                                           , l_amb_context_code
3217                                                           )
3218                  ,p_token_2                 => 'OWNER'
3219                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3220                                                         'XLA_OWNER_TYPE'
3221                                                         ,l_component_type_code
3222                                                         )
3223                  ,p_token_3                 => 'PAD_NAME'
3224                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3225                  ,p_token_4                 => 'PAD_OWNER'
3226                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3227                                                         'XLA_OWNER_TYPE'
3228                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3229                                                         )
3230                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3231                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3232                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3233                  ,p_ae_header_id            => NULL
3234 );
3235 RETURN l_output_value;
3236 EXCEPTION
3237   WHEN xla_exceptions_pkg.application_exception THEN
3238       RAISE;
3239   WHEN OTHERS THEN
3240        xla_exceptions_pkg.raise_message
3241            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_24');
3242 END AcctDerRule_24;
3243 --
3244 
3245 ---------------------------------------
3246 --
3247 -- PRIVATE FUNCTION
3248 --         AcctDerRule_25
3249 --
3250 ---------------------------------------
3251 FUNCTION AcctDerRule_25 (
3252   p_application_id              IN NUMBER
3253 , p_ae_header_id                IN NUMBER
3254 , p_side                        IN VARCHAR2 
3255 --Cost Management Default Account
3256  , p_source_11            IN NUMBER
3257 --Cost Element Name
3258  , p_source_15            IN NUMBER
3259 --Primary Cost Method
3260  , p_source_39            IN NUMBER
3261  , p_source_39_meaning    IN VARCHAR2
3262 --Product Line Accounting Category Material Account
3263  , p_source_41            IN NUMBER
3264 --Product Line Accounting Category Material Overhead Account
3265  , p_source_42            IN NUMBER
3266 --Product Line Accounting Category Resource Account
3267  , p_source_43            IN NUMBER
3268 --Product Line Accounting Category Outside Processing Account
3269  , p_source_44            IN NUMBER
3270 --Product Line Accounting Category Overhead Account
3271  , p_source_45            IN NUMBER
3272 , x_transaction_coa_id         OUT NOCOPY NUMBER
3273 , x_accounting_coa_id          OUT NOCOPY NUMBER
3274 , x_value_type_code            OUT NOCOPY VARCHAR2
3275 )
3276 RETURN NUMBER
3277 IS
3278 l_component_type       VARCHAR2(80)  ;
3279 l_component_code       VARCHAR2(30)  ;
3280 l_component_type_code  VARCHAR2(1)   ;
3281 l_component_appl_id    INTEGER       ;
3282 l_amb_context_code     VARCHAR2(30)  ;
3283 l_log_module           VARCHAR2(240) ;
3284 l_output_value         NUMBER        ;
3285 BEGIN
3286 IF g_log_enabled THEN
3287       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_25';
3288 END IF;
3289 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3290       trace
3291          (p_msg      => 'BEGIN of AcctDerRule_25'
3292          ,p_level    => C_LEVEL_PROCEDURE
3293          ,p_module   => l_log_module);
3294 END IF;
3295 --
3296 l_component_type         := 'AMB_ADR';
3297 l_component_code         := 'PI_INTRANSIT_ACCOUNT';
3298 l_component_type_code    := 'S';
3299 l_component_appl_id      :=  707;
3300 l_amb_context_code       := 'DEFAULT';
3301 x_transaction_coa_id     :=  null;
3302 x_accounting_coa_id      :=  null;
3303 --
3304 
3305  IF NVL(p_source_39,9E125) =  1
3306  THEN 
3307  --
3308   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3309       trace
3310          (p_msg      => 'END of AcctDerRule_25'
3311          ,p_level    => C_LEVEL_PROCEDURE
3312          ,p_module   => l_log_module);
3313   END IF;
3314   x_value_type_code := 'S';
3315   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
3316   RETURN l_output_value;
3317 
3318  ELSIF NVL(p_source_15,9E125) =  1 AND 
3319 NVL(p_source_39,9E125) <>  1
3320  THEN 
3321  --
3322   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3323       trace
3324          (p_msg      => 'END of AcctDerRule_25'
3325          ,p_level    => C_LEVEL_PROCEDURE
3326          ,p_module   => l_log_module);
3327   END IF;
3328   x_value_type_code := 'S';
3329   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_41));
3330   RETURN l_output_value;
3331 
3332  ELSIF NVL(p_source_15,9E125) =  2 AND 
3333 NVL(p_source_39,9E125) <>  1
3334  THEN 
3335  --
3336   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3337       trace
3338          (p_msg      => 'END of AcctDerRule_25'
3339          ,p_level    => C_LEVEL_PROCEDURE
3340          ,p_module   => l_log_module);
3341   END IF;
3342   x_value_type_code := 'S';
3343   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_42));
3344   RETURN l_output_value;
3345 
3346  ELSIF NVL(p_source_15,9E125) =  3 AND 
3347 NVL(p_source_39,9E125) <>  1
3348  THEN 
3349  --
3350   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3351       trace
3352          (p_msg      => 'END of AcctDerRule_25'
3353          ,p_level    => C_LEVEL_PROCEDURE
3354          ,p_module   => l_log_module);
3355   END IF;
3356   x_value_type_code := 'S';
3357   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_43));
3358   RETURN l_output_value;
3359 
3360  ELSIF NVL(p_source_15,9E125) =  4 AND 
3361 NVL(p_source_39,9E125) <>  1
3362  THEN 
3363  --
3364   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3365       trace
3366          (p_msg      => 'END of AcctDerRule_25'
3367          ,p_level    => C_LEVEL_PROCEDURE
3368          ,p_module   => l_log_module);
3369   END IF;
3370   x_value_type_code := 'S';
3371   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_44));
3372   RETURN l_output_value;
3373 
3374  ELSIF NVL(p_source_15,9E125) =  5 AND 
3375 NVL(p_source_39,9E125) <>  1
3376  THEN 
3377  --
3378   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3379       trace
3380          (p_msg      => 'END of AcctDerRule_25'
3381          ,p_level    => C_LEVEL_PROCEDURE
3382          ,p_module   => l_log_module);
3383   END IF;
3384   x_value_type_code := 'S';
3385   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_45));
3386   RETURN l_output_value;
3387 
3388  END IF;
3389 --
3390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3391       trace
3392          (p_msg      => 'END of AcctDerRule_25(invalid)'
3393          ,p_level    => C_LEVEL_PROCEDURE
3394          ,p_module   => l_log_module);
3395 END IF;
3396 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3397 x_value_type_code := null;
3398 l_output_value    := null;
3399 xla_accounting_err_pkg.build_message
3400                  (p_appli_s_name            => 'XLA'
3401                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3402                  ,p_token_1                 => 'COMPONENT_NAME'
3403                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3404                                                             l_component_type
3405                                                           , l_component_code
3406                                                           , l_component_type_code
3407                                                           , l_component_appl_id
3408                                                           , l_amb_context_code
3409                                                           )
3410                  ,p_token_2                 => 'OWNER'
3411                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3412                                                         'XLA_OWNER_TYPE'
3413                                                         ,l_component_type_code
3414                                                         )
3415                  ,p_token_3                 => 'PAD_NAME'
3416                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3417                  ,p_token_4                 => 'PAD_OWNER'
3418                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3419                                                         'XLA_OWNER_TYPE'
3420                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3421                                                         )
3422                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3423                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3424                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3425                  ,p_ae_header_id            => NULL
3426 );
3427 RETURN l_output_value;
3428 EXCEPTION
3429   WHEN xla_exceptions_pkg.application_exception THEN
3430       RAISE;
3431   WHEN OTHERS THEN
3432        xla_exceptions_pkg.raise_message
3433            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_25');
3434 END AcctDerRule_25;
3435 --
3436 
3437 ---------------------------------------
3438 --
3439 -- PRIVATE FUNCTION
3440 --         AcctDerRule_26
3441 --
3442 ---------------------------------------
3443 FUNCTION AcctDerRule_26 (
3444   p_application_id              IN NUMBER
3445 , p_ae_header_id                IN NUMBER
3446 , p_side                        IN VARCHAR2 
3447 --Interorg Bridging Account
3448  , p_source_46            IN NUMBER
3449 , x_transaction_coa_id         OUT NOCOPY NUMBER
3450 , x_accounting_coa_id          OUT NOCOPY NUMBER
3451 , x_value_type_code            OUT NOCOPY VARCHAR2
3452 )
3453 RETURN NUMBER
3454 IS
3455 l_component_type       VARCHAR2(80)  ;
3456 l_component_code       VARCHAR2(30)  ;
3457 l_component_type_code  VARCHAR2(1)   ;
3458 l_component_appl_id    INTEGER       ;
3459 l_amb_context_code     VARCHAR2(30)  ;
3460 l_log_module           VARCHAR2(240) ;
3461 l_output_value         NUMBER        ;
3462 BEGIN
3463 IF g_log_enabled THEN
3464       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_26';
3465 END IF;
3466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3467       trace
3468          (p_msg      => 'BEGIN of AcctDerRule_26'
3469          ,p_level    => C_LEVEL_PROCEDURE
3470          ,p_module   => l_log_module);
3471 END IF;
3472 --
3473 l_component_type         := 'AMB_ADR';
3474 l_component_code         := 'PI_INTRANSIT_BRIDGING';
3475 l_component_type_code    := 'S';
3476 l_component_appl_id      :=  707;
3477 l_amb_context_code       := 'DEFAULT';
3478 x_transaction_coa_id     :=  null;
3479 x_accounting_coa_id      :=  null;
3480 --
3481 
3482  --
3483   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3484       trace
3485          (p_msg      => 'END of AcctDerRule_26'
3486          ,p_level    => C_LEVEL_PROCEDURE
3487          ,p_module   => l_log_module);
3488   END IF;
3489   x_value_type_code := 'S';
3490   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_46));
3491   RETURN l_output_value;
3492 
3493 --
3494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3495       trace
3496          (p_msg      => 'END of AcctDerRule_26(invalid)'
3497          ,p_level    => C_LEVEL_PROCEDURE
3498          ,p_module   => l_log_module);
3499 END IF;
3500 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3501 x_value_type_code := null;
3502 l_output_value    := null;
3503 xla_accounting_err_pkg.build_message
3504                  (p_appli_s_name            => 'XLA'
3505                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3506                  ,p_token_1                 => 'COMPONENT_NAME'
3507                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3508                                                             l_component_type
3509                                                           , l_component_code
3510                                                           , l_component_type_code
3511                                                           , l_component_appl_id
3512                                                           , l_amb_context_code
3513                                                           )
3514                  ,p_token_2                 => 'OWNER'
3515                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3516                                                         'XLA_OWNER_TYPE'
3517                                                         ,l_component_type_code
3518                                                         )
3519                  ,p_token_3                 => 'PAD_NAME'
3520                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3521                  ,p_token_4                 => 'PAD_OWNER'
3522                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3523                                                         'XLA_OWNER_TYPE'
3524                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3525                                                         )
3526                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3527                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3528                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3529                  ,p_ae_header_id            => NULL
3530 );
3531 RETURN l_output_value;
3532 EXCEPTION
3533   WHEN xla_exceptions_pkg.application_exception THEN
3534       RAISE;
3535   WHEN OTHERS THEN
3536        xla_exceptions_pkg.raise_message
3537            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_26');
3538 END AcctDerRule_26;
3539 --
3540 
3541 ---------------------------------------
3542 --
3543 -- PRIVATE FUNCTION
3544 --         AcctDerRule_27
3545 --
3546 ---------------------------------------
3547 FUNCTION AcctDerRule_27 (
3548   p_application_id              IN NUMBER
3549 , p_ae_header_id                IN NUMBER
3550 , p_side                        IN VARCHAR2 
3551 --Product Line Accounting Category Bridging Account
3552  , p_source_22            IN NUMBER
3553 --Cost Group Identifier
3554  , p_source_26            IN NUMBER
3555 --INV Header Transfer Cost Group ID
3556  , p_source_27            IN NUMBER
3557 --INV Header Cost Group ID
3558  , p_source_28            IN NUMBER
3559 --Subinventory Name
3560  , p_source_29            IN VARCHAR2
3561 --INV Header Subinventory
3562  , p_source_30            IN VARCHAR2
3563 --Transfer to Subinventory or Cost Group category bridging account
3564  , p_source_47            IN NUMBER
3565 , x_transaction_coa_id         OUT NOCOPY NUMBER
3566 , x_accounting_coa_id          OUT NOCOPY NUMBER
3567 , x_value_type_code            OUT NOCOPY VARCHAR2
3568 )
3569 RETURN NUMBER
3570 IS
3571 l_component_type       VARCHAR2(80)  ;
3572 l_component_code       VARCHAR2(30)  ;
3573 l_component_type_code  VARCHAR2(1)   ;
3574 l_component_appl_id    INTEGER       ;
3575 l_amb_context_code     VARCHAR2(30)  ;
3576 l_log_module           VARCHAR2(240) ;
3577 l_output_value         NUMBER        ;
3578 BEGIN
3579 IF g_log_enabled THEN
3580       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_27';
3581 END IF;
3582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3583       trace
3584          (p_msg      => 'BEGIN of AcctDerRule_27'
3585          ,p_level    => C_LEVEL_PROCEDURE
3586          ,p_module   => l_log_module);
3587 END IF;
3588 --
3589 l_component_type         := 'AMB_ADR';
3590 l_component_code         := 'PI_INTRAORG_TRX_BRIDGING_ADR';
3591 l_component_type_code    := 'S';
3592 l_component_appl_id      :=  707;
3593 l_amb_context_code       := 'DEFAULT';
3594 x_transaction_coa_id     :=  null;
3595 x_accounting_coa_id      :=  null;
3596 --
3597 
3598  IF p_source_26 IS NOT NULL AND 
3599 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
3600  THEN 
3601  --
3602   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3603       trace
3604          (p_msg      => 'END of AcctDerRule_27'
3605          ,p_level    => C_LEVEL_PROCEDURE
3606          ,p_module   => l_log_module);
3607   END IF;
3608   x_value_type_code := 'S';
3609   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_47));
3610   RETURN l_output_value;
3611 
3612  ELSIF p_source_26 IS NOT NULL AND 
3613 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
3614  THEN 
3615  --
3616   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3617       trace
3618          (p_msg      => 'END of AcctDerRule_27'
3619          ,p_level    => C_LEVEL_PROCEDURE
3620          ,p_module   => l_log_module);
3621   END IF;
3622   x_value_type_code := 'S';
3623   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_22));
3624   RETURN l_output_value;
3625 
3626  ELSIF p_source_29 IS NOT NULL AND 
3627 NVL(p_source_29,'
3628 ') = NVL(p_source_30,'
3629 ') 
3630  THEN 
3631  --
3632   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3633       trace
3634          (p_msg      => 'END of AcctDerRule_27'
3635          ,p_level    => C_LEVEL_PROCEDURE
3636          ,p_module   => l_log_module);
3637   END IF;
3638   x_value_type_code := 'S';
3639   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_22));
3640   RETURN l_output_value;
3641 
3642 END IF;
3643 
3644  --
3645   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3646       trace
3647          (p_msg      => 'END of AcctDerRule_27'
3648          ,p_level    => C_LEVEL_PROCEDURE
3649          ,p_module   => l_log_module);
3650   END IF;
3651   x_value_type_code := 'S';
3652   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_47));
3653   RETURN l_output_value;
3654 
3655 --
3656 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3657       trace
3658          (p_msg      => 'END of AcctDerRule_27(invalid)'
3659          ,p_level    => C_LEVEL_PROCEDURE
3660          ,p_module   => l_log_module);
3661 END IF;
3662 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3663 x_value_type_code := null;
3664 l_output_value    := null;
3665 xla_accounting_err_pkg.build_message
3666                  (p_appli_s_name            => 'XLA'
3667                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3668                  ,p_token_1                 => 'COMPONENT_NAME'
3669                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3670                                                             l_component_type
3671                                                           , l_component_code
3672                                                           , l_component_type_code
3673                                                           , l_component_appl_id
3674                                                           , l_amb_context_code
3675                                                           )
3676                  ,p_token_2                 => 'OWNER'
3677                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3678                                                         'XLA_OWNER_TYPE'
3679                                                         ,l_component_type_code
3680                                                         )
3681                  ,p_token_3                 => 'PAD_NAME'
3682                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3683                  ,p_token_4                 => 'PAD_OWNER'
3684                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3685                                                         'XLA_OWNER_TYPE'
3686                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3687                                                         )
3688                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3689                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3690                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3691                  ,p_ae_header_id            => NULL
3692 );
3693 RETURN l_output_value;
3694 EXCEPTION
3695   WHEN xla_exceptions_pkg.application_exception THEN
3696       RAISE;
3697   WHEN OTHERS THEN
3698        xla_exceptions_pkg.raise_message
3699            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_27');
3700 END AcctDerRule_27;
3701 --
3702 
3703 ---------------------------------------
3704 --
3705 -- PRIVATE FUNCTION
3706 --         AcctDerRule_28
3707 --
3708 ---------------------------------------
3709 FUNCTION AcctDerRule_28 (
3710   p_application_id              IN NUMBER
3711 , p_ae_header_id                IN NUMBER
3712 , p_side                        IN VARCHAR2 
3713 --Cost Element Name
3714  , p_source_15            IN NUMBER
3715 --Product Line Accounting Category Material Account
3716  , p_source_41            IN NUMBER
3717 --Product Line Accounting Category Material Overhead Account
3718  , p_source_42            IN NUMBER
3719 --Product Line Accounting Category Resource Account
3720  , p_source_43            IN NUMBER
3721 --Product Line Accounting Category Outside Processing Account
3722  , p_source_44            IN NUMBER
3723 --Product Line Accounting Category Overhead Account
3724  , p_source_45            IN NUMBER
3725 , x_transaction_coa_id         OUT NOCOPY NUMBER
3726 , x_accounting_coa_id          OUT NOCOPY NUMBER
3727 , x_value_type_code            OUT NOCOPY VARCHAR2
3728 )
3729 RETURN NUMBER
3730 IS
3731 l_component_type       VARCHAR2(80)  ;
3732 l_component_code       VARCHAR2(30)  ;
3733 l_component_type_code  VARCHAR2(1)   ;
3734 l_component_appl_id    INTEGER       ;
3735 l_amb_context_code     VARCHAR2(30)  ;
3736 l_log_module           VARCHAR2(240) ;
3737 l_output_value         NUMBER        ;
3738 BEGIN
3739 IF g_log_enabled THEN
3740       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_28';
3741 END IF;
3742 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3743       trace
3744          (p_msg      => 'BEGIN of AcctDerRule_28'
3745          ,p_level    => C_LEVEL_PROCEDURE
3746          ,p_module   => l_log_module);
3747 END IF;
3748 --
3749 l_component_type         := 'AMB_ADR';
3750 l_component_code         := 'PI_INVENTORY_ACCOUNT';
3751 l_component_type_code    := 'S';
3752 l_component_appl_id      :=  707;
3753 l_amb_context_code       := 'DEFAULT';
3754 x_transaction_coa_id     :=  null;
3755 x_accounting_coa_id      :=  null;
3756 --
3757 
3758  IF NVL(p_source_15,9E125) =  1
3759  THEN 
3760  --
3761   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3762       trace
3763          (p_msg      => 'END of AcctDerRule_28'
3764          ,p_level    => C_LEVEL_PROCEDURE
3765          ,p_module   => l_log_module);
3766   END IF;
3767   x_value_type_code := 'S';
3768   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_41));
3769   RETURN l_output_value;
3770 
3771  ELSIF NVL(p_source_15,9E125) =  2
3772  THEN 
3773  --
3774   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3775       trace
3776          (p_msg      => 'END of AcctDerRule_28'
3777          ,p_level    => C_LEVEL_PROCEDURE
3778          ,p_module   => l_log_module);
3779   END IF;
3780   x_value_type_code := 'S';
3781   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_42));
3782   RETURN l_output_value;
3783 
3784  ELSIF NVL(p_source_15,9E125) =  3
3785  THEN 
3786  --
3787   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3788       trace
3789          (p_msg      => 'END of AcctDerRule_28'
3790          ,p_level    => C_LEVEL_PROCEDURE
3791          ,p_module   => l_log_module);
3792   END IF;
3793   x_value_type_code := 'S';
3794   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_43));
3795   RETURN l_output_value;
3796 
3797  ELSIF NVL(p_source_15,9E125) =  4
3798  THEN 
3799  --
3800   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3801       trace
3802          (p_msg      => 'END of AcctDerRule_28'
3803          ,p_level    => C_LEVEL_PROCEDURE
3804          ,p_module   => l_log_module);
3805   END IF;
3806   x_value_type_code := 'S';
3807   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_44));
3808   RETURN l_output_value;
3809 
3810  ELSIF NVL(p_source_15,9E125) =  5
3811  THEN 
3812  --
3813   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3814       trace
3815          (p_msg      => 'END of AcctDerRule_28'
3816          ,p_level    => C_LEVEL_PROCEDURE
3817          ,p_module   => l_log_module);
3818   END IF;
3819   x_value_type_code := 'S';
3820   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_45));
3821   RETURN l_output_value;
3822 
3823  END IF;
3824 --
3825 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3826       trace
3827          (p_msg      => 'END of AcctDerRule_28(invalid)'
3828          ,p_level    => C_LEVEL_PROCEDURE
3829          ,p_module   => l_log_module);
3830 END IF;
3831 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3832 x_value_type_code := null;
3833 l_output_value    := null;
3834 xla_accounting_err_pkg.build_message
3835                  (p_appli_s_name            => 'XLA'
3836                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3837                  ,p_token_1                 => 'COMPONENT_NAME'
3838                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3839                                                             l_component_type
3840                                                           , l_component_code
3841                                                           , l_component_type_code
3842                                                           , l_component_appl_id
3843                                                           , l_amb_context_code
3844                                                           )
3845                  ,p_token_2                 => 'OWNER'
3846                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3847                                                         'XLA_OWNER_TYPE'
3848                                                         ,l_component_type_code
3849                                                         )
3850                  ,p_token_3                 => 'PAD_NAME'
3851                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3852                  ,p_token_4                 => 'PAD_OWNER'
3853                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3854                                                         'XLA_OWNER_TYPE'
3855                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3856                                                         )
3857                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3858                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3859                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3860                  ,p_ae_header_id            => NULL
3861 );
3862 RETURN l_output_value;
3863 EXCEPTION
3864   WHEN xla_exceptions_pkg.application_exception THEN
3865       RAISE;
3866   WHEN OTHERS THEN
3867        xla_exceptions_pkg.raise_message
3868            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_28');
3869 END AcctDerRule_28;
3870 --
3871 
3872 ---------------------------------------
3873 --
3874 -- PRIVATE FUNCTION
3875 --         AcctDerRule_29
3876 --
3877 ---------------------------------------
3878 FUNCTION AcctDerRule_29 (
3879   p_application_id              IN NUMBER
3880 , p_ae_header_id                IN NUMBER
3881 , p_side                        IN VARCHAR2 
3882 --Cost Element Name
3883  , p_source_15            IN NUMBER
3884 --Cost Group Identifier
3885  , p_source_26            IN NUMBER
3886 --INV Header Transfer Cost Group ID
3887  , p_source_27            IN NUMBER
3888 --INV Header Cost Group ID
3889  , p_source_28            IN NUMBER
3890 --Subinventory Name
3891  , p_source_29            IN VARCHAR2
3892 --INV Header Transfer Subinventory
3893  , p_source_31            IN VARCHAR2
3894 --Product Line Accounting Category Material Account
3895  , p_source_41            IN NUMBER
3896 --Product Line Accounting Category Material Overhead Account
3897  , p_source_42            IN NUMBER
3898 --Product Line Accounting Category Resource Account
3899  , p_source_43            IN NUMBER
3900 --Product Line Accounting Category Outside Processing Account
3901  , p_source_44            IN NUMBER
3902 --Product Line Accounting Category Overhead Account
3903  , p_source_45            IN NUMBER
3904 --Transfer to Subinventory or Cost Group category material account
3905  , p_source_48            IN NUMBER
3906 --Transfer to Subinventory or Cost Group category material overhead account
3907  , p_source_49            IN NUMBER
3908 --Transfer to Subinventory or Cost Group category resource account
3909  , p_source_50            IN NUMBER
3910 --Transfer to Subinventory or Cost Group category outside processing account
3911  , p_source_51            IN NUMBER
3912 --Transfer to Subinventory or Cost Group category overhead account
3913  , p_source_52            IN NUMBER
3914 , x_transaction_coa_id         OUT NOCOPY NUMBER
3915 , x_accounting_coa_id          OUT NOCOPY NUMBER
3916 , x_value_type_code            OUT NOCOPY VARCHAR2
3917 )
3918 RETURN NUMBER
3919 IS
3920 l_component_type       VARCHAR2(80)  ;
3921 l_component_code       VARCHAR2(30)  ;
3922 l_component_type_code  VARCHAR2(1)   ;
3923 l_component_appl_id    INTEGER       ;
3924 l_amb_context_code     VARCHAR2(30)  ;
3925 l_log_module           VARCHAR2(240) ;
3926 l_output_value         NUMBER        ;
3927 BEGIN
3928 IF g_log_enabled THEN
3929       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_29';
3930 END IF;
3931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3932       trace
3933          (p_msg      => 'BEGIN of AcctDerRule_29'
3934          ,p_level    => C_LEVEL_PROCEDURE
3935          ,p_module   => l_log_module);
3936 END IF;
3937 --
3938 l_component_type         := 'AMB_ADR';
3939 l_component_code         := 'PI_INVENTORY_ACCOUNT_ADR';
3940 l_component_type_code    := 'S';
3941 l_component_appl_id      :=  707;
3942 l_amb_context_code       := 'DEFAULT';
3943 x_transaction_coa_id     :=  null;
3944 x_accounting_coa_id      :=  null;
3945 --
3946 
3947  IF NVL(p_source_15,9E125) =  1 AND 
3948 p_source_26 IS NOT NULL AND 
3949 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
3950  THEN 
3951  --
3952   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3953       trace
3954          (p_msg      => 'END of AcctDerRule_29'
3955          ,p_level    => C_LEVEL_PROCEDURE
3956          ,p_module   => l_log_module);
3957   END IF;
3958   x_value_type_code := 'S';
3959   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_48));
3960   RETURN l_output_value;
3961 
3962  ELSIF NVL(p_source_15,9E125) =  1 AND 
3963 p_source_26 IS NOT NULL AND 
3964 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
3965  THEN 
3966  --
3967   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3968       trace
3969          (p_msg      => 'END of AcctDerRule_29'
3970          ,p_level    => C_LEVEL_PROCEDURE
3971          ,p_module   => l_log_module);
3972   END IF;
3973   x_value_type_code := 'S';
3974   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_41));
3975   RETURN l_output_value;
3976 
3977  ELSIF NVL(p_source_15,9E125) =  1 AND 
3978 p_source_29 IS NOT NULL AND 
3979 NVL(p_source_29,'
3980 ') = NVL(p_source_31,'
3981 ') 
3982  THEN 
3983  --
3984   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3985       trace
3986          (p_msg      => 'END of AcctDerRule_29'
3987          ,p_level    => C_LEVEL_PROCEDURE
3988          ,p_module   => l_log_module);
3989   END IF;
3990   x_value_type_code := 'S';
3991   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_48));
3992   RETURN l_output_value;
3993 
3994  ELSIF NVL(p_source_15,9E125) =  1
3995  THEN 
3996  --
3997   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3998       trace
3999          (p_msg      => 'END of AcctDerRule_29'
4000          ,p_level    => C_LEVEL_PROCEDURE
4001          ,p_module   => l_log_module);
4002   END IF;
4003   x_value_type_code := 'S';
4004   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_41));
4005   RETURN l_output_value;
4006 
4007  ELSIF NVL(p_source_15,9E125) =  2 AND 
4008 p_source_26 IS NOT NULL AND 
4009 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
4010  THEN 
4011  --
4012   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4013       trace
4014          (p_msg      => 'END of AcctDerRule_29'
4015          ,p_level    => C_LEVEL_PROCEDURE
4016          ,p_module   => l_log_module);
4017   END IF;
4018   x_value_type_code := 'S';
4019   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_49));
4020   RETURN l_output_value;
4021 
4022  ELSIF NVL(p_source_15,9E125) =  2 AND 
4023 p_source_26 IS NOT NULL AND 
4024 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
4025  THEN 
4026  --
4027   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4028       trace
4029          (p_msg      => 'END of AcctDerRule_29'
4030          ,p_level    => C_LEVEL_PROCEDURE
4031          ,p_module   => l_log_module);
4032   END IF;
4033   x_value_type_code := 'S';
4034   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_42));
4035   RETURN l_output_value;
4036 
4037  ELSIF NVL(p_source_15,9E125) =  2 AND 
4038 p_source_29 IS NOT NULL AND 
4039 NVL(p_source_29,'
4040 ') = NVL(p_source_31,'
4041 ') 
4042  THEN 
4043  --
4044   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4045       trace
4046          (p_msg      => 'END of AcctDerRule_29'
4047          ,p_level    => C_LEVEL_PROCEDURE
4048          ,p_module   => l_log_module);
4049   END IF;
4050   x_value_type_code := 'S';
4051   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_49));
4052   RETURN l_output_value;
4053 
4054  ELSIF NVL(p_source_15,9E125) =  2
4055  THEN 
4056  --
4057   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4058       trace
4059          (p_msg      => 'END of AcctDerRule_29'
4060          ,p_level    => C_LEVEL_PROCEDURE
4061          ,p_module   => l_log_module);
4062   END IF;
4063   x_value_type_code := 'S';
4064   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_42));
4065   RETURN l_output_value;
4066 
4067  ELSIF NVL(p_source_15,9E125) =  3 AND 
4068 p_source_26 IS NOT NULL AND 
4069 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
4070  THEN 
4071  --
4072   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4073       trace
4074          (p_msg      => 'END of AcctDerRule_29'
4075          ,p_level    => C_LEVEL_PROCEDURE
4076          ,p_module   => l_log_module);
4077   END IF;
4078   x_value_type_code := 'S';
4079   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_50));
4080   RETURN l_output_value;
4081 
4082  ELSIF NVL(p_source_15,9E125) =  3 AND 
4083 p_source_26 IS NOT NULL AND 
4084 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
4085  THEN 
4086  --
4087   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4088       trace
4089          (p_msg      => 'END of AcctDerRule_29'
4090          ,p_level    => C_LEVEL_PROCEDURE
4091          ,p_module   => l_log_module);
4092   END IF;
4093   x_value_type_code := 'S';
4094   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_43));
4095   RETURN l_output_value;
4096 
4097  ELSIF NVL(p_source_15,9E125) =  3 AND 
4098 p_source_29 IS NOT NULL AND 
4099 NVL(p_source_29,'
4100 ') = NVL(p_source_31,'
4101 ') 
4102  THEN 
4103  --
4104   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4105       trace
4106          (p_msg      => 'END of AcctDerRule_29'
4107          ,p_level    => C_LEVEL_PROCEDURE
4108          ,p_module   => l_log_module);
4109   END IF;
4110   x_value_type_code := 'S';
4111   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_50));
4112   RETURN l_output_value;
4113 
4114  ELSIF NVL(p_source_15,9E125) =  3
4115  THEN 
4116  --
4117   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4118       trace
4119          (p_msg      => 'END of AcctDerRule_29'
4120          ,p_level    => C_LEVEL_PROCEDURE
4121          ,p_module   => l_log_module);
4122   END IF;
4123   x_value_type_code := 'S';
4124   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_43));
4125   RETURN l_output_value;
4126 
4127  ELSIF NVL(p_source_15,9E125) =  4 AND 
4128 p_source_26 IS NOT NULL AND 
4129 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
4130  THEN 
4131  --
4132   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4133       trace
4134          (p_msg      => 'END of AcctDerRule_29'
4135          ,p_level    => C_LEVEL_PROCEDURE
4136          ,p_module   => l_log_module);
4137   END IF;
4138   x_value_type_code := 'S';
4139   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_51));
4140   RETURN l_output_value;
4141 
4142  ELSIF NVL(p_source_15,9E125) =  4 AND 
4143 p_source_26 IS NOT NULL AND 
4144 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
4145  THEN 
4146  --
4147   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4148       trace
4149          (p_msg      => 'END of AcctDerRule_29'
4150          ,p_level    => C_LEVEL_PROCEDURE
4151          ,p_module   => l_log_module);
4152   END IF;
4153   x_value_type_code := 'S';
4154   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_44));
4155   RETURN l_output_value;
4156 
4157  ELSIF NVL(p_source_15,9E125) =  4 AND 
4158 p_source_29 IS NOT NULL AND 
4159 NVL(p_source_29,'
4160 ') = NVL(p_source_31,'
4161 ') 
4162  THEN 
4163  --
4164   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4165       trace
4166          (p_msg      => 'END of AcctDerRule_29'
4167          ,p_level    => C_LEVEL_PROCEDURE
4168          ,p_module   => l_log_module);
4169   END IF;
4170   x_value_type_code := 'S';
4171   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_51));
4172   RETURN l_output_value;
4173 
4174  ELSIF NVL(p_source_15,9E125) =  4
4175  THEN 
4176  --
4177   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4178       trace
4179          (p_msg      => 'END of AcctDerRule_29'
4180          ,p_level    => C_LEVEL_PROCEDURE
4181          ,p_module   => l_log_module);
4182   END IF;
4183   x_value_type_code := 'S';
4184   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_44));
4185   RETURN l_output_value;
4186 
4187  ELSIF NVL(p_source_15,9E125) =  5 AND 
4188 p_source_26 IS NOT NULL AND 
4189 NVL(p_source_26,9E125) = NVL(p_source_27,9E125) 
4190  THEN 
4191  --
4192   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4193       trace
4194          (p_msg      => 'END of AcctDerRule_29'
4195          ,p_level    => C_LEVEL_PROCEDURE
4196          ,p_module   => l_log_module);
4197   END IF;
4198   x_value_type_code := 'S';
4199   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_52));
4200   RETURN l_output_value;
4201 
4202  ELSIF NVL(p_source_15,9E125) =  5 AND 
4203 p_source_26 IS NOT NULL AND 
4204 NVL(p_source_26,9E125) = NVL(p_source_28,9E125) 
4205  THEN 
4206  --
4207   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4208       trace
4209          (p_msg      => 'END of AcctDerRule_29'
4210          ,p_level    => C_LEVEL_PROCEDURE
4211          ,p_module   => l_log_module);
4212   END IF;
4213   x_value_type_code := 'S';
4214   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_45));
4215   RETURN l_output_value;
4216 
4217  ELSIF NVL(p_source_15,9E125) =  5 AND 
4218 p_source_29 IS NOT NULL AND 
4219 NVL(p_source_29,'
4220 ') = NVL(p_source_31,'
4221 ') 
4222  THEN 
4223  --
4224   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4225       trace
4226          (p_msg      => 'END of AcctDerRule_29'
4227          ,p_level    => C_LEVEL_PROCEDURE
4228          ,p_module   => l_log_module);
4229   END IF;
4230   x_value_type_code := 'S';
4231   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_52));
4232   RETURN l_output_value;
4233 
4234  ELSIF NVL(p_source_15,9E125) =  5
4235  THEN 
4236  --
4237   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4238       trace
4239          (p_msg      => 'END of AcctDerRule_29'
4240          ,p_level    => C_LEVEL_PROCEDURE
4241          ,p_module   => l_log_module);
4242   END IF;
4243   x_value_type_code := 'S';
4244   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_45));
4245   RETURN l_output_value;
4246 
4247  END IF;
4248 --
4249 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4250       trace
4251          (p_msg      => 'END of AcctDerRule_29(invalid)'
4252          ,p_level    => C_LEVEL_PROCEDURE
4253          ,p_module   => l_log_module);
4254 END IF;
4255 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4256 x_value_type_code := null;
4257 l_output_value    := null;
4258 xla_accounting_err_pkg.build_message
4259                  (p_appli_s_name            => 'XLA'
4260                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4261                  ,p_token_1                 => 'COMPONENT_NAME'
4262                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4263                                                             l_component_type
4264                                                           , l_component_code
4265                                                           , l_component_type_code
4266                                                           , l_component_appl_id
4267                                                           , l_amb_context_code
4268                                                           )
4269                  ,p_token_2                 => 'OWNER'
4270                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4271                                                         'XLA_OWNER_TYPE'
4272                                                         ,l_component_type_code
4273                                                         )
4274                  ,p_token_3                 => 'PAD_NAME'
4275                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4276                  ,p_token_4                 => 'PAD_OWNER'
4277                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4278                                                         'XLA_OWNER_TYPE'
4279                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4280                                                         )
4281                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4282                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4283                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4284                  ,p_ae_header_id            => NULL
4285 );
4286 RETURN l_output_value;
4287 EXCEPTION
4288   WHEN xla_exceptions_pkg.application_exception THEN
4289       RAISE;
4290   WHEN OTHERS THEN
4291        xla_exceptions_pkg.raise_message
4292            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_29');
4293 END AcctDerRule_29;
4294 --
4295 
4296 ---------------------------------------
4297 --
4298 -- PRIVATE FUNCTION
4299 --         AcctDerRule_30
4300 --
4301 ---------------------------------------
4302 FUNCTION AcctDerRule_30 (
4303   p_application_id              IN NUMBER
4304 , p_ae_header_id                IN NUMBER
4305 , p_side                        IN VARCHAR2 
4306 --Inventory Item Expense Account
4307  , p_source_53            IN NUMBER
4308 , x_transaction_coa_id         OUT NOCOPY NUMBER
4309 , x_accounting_coa_id          OUT NOCOPY NUMBER
4310 , x_value_type_code            OUT NOCOPY VARCHAR2
4311 )
4312 RETURN NUMBER
4313 IS
4314 l_component_type       VARCHAR2(80)  ;
4315 l_component_code       VARCHAR2(30)  ;
4316 l_component_type_code  VARCHAR2(1)   ;
4317 l_component_appl_id    INTEGER       ;
4318 l_amb_context_code     VARCHAR2(30)  ;
4319 l_log_module           VARCHAR2(240) ;
4320 l_output_value         NUMBER        ;
4321 BEGIN
4322 IF g_log_enabled THEN
4323       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_30';
4324 END IF;
4325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4326       trace
4327          (p_msg      => 'BEGIN of AcctDerRule_30'
4328          ,p_level    => C_LEVEL_PROCEDURE
4329          ,p_module   => l_log_module);
4330 END IF;
4331 --
4332 l_component_type         := 'AMB_ADR';
4333 l_component_code         := 'PI_ITEM_EXPENSE';
4334 l_component_type_code    := 'S';
4335 l_component_appl_id      :=  707;
4336 l_amb_context_code       := 'DEFAULT';
4337 x_transaction_coa_id     :=  null;
4338 x_accounting_coa_id      :=  null;
4339 --
4340 
4341  --
4342   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4343       trace
4344          (p_msg      => 'END of AcctDerRule_30'
4345          ,p_level    => C_LEVEL_PROCEDURE
4346          ,p_module   => l_log_module);
4347   END IF;
4348   x_value_type_code := 'S';
4349   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_53));
4350   RETURN l_output_value;
4351 
4352 --
4353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4354       trace
4355          (p_msg      => 'END of AcctDerRule_30(invalid)'
4356          ,p_level    => C_LEVEL_PROCEDURE
4357          ,p_module   => l_log_module);
4358 END IF;
4359 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4360 x_value_type_code := null;
4361 l_output_value    := null;
4362 xla_accounting_err_pkg.build_message
4363                  (p_appli_s_name            => 'XLA'
4364                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4365                  ,p_token_1                 => 'COMPONENT_NAME'
4366                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4367                                                             l_component_type
4368                                                           , l_component_code
4369                                                           , l_component_type_code
4370                                                           , l_component_appl_id
4371                                                           , l_amb_context_code
4372                                                           )
4373                  ,p_token_2                 => 'OWNER'
4374                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4375                                                         'XLA_OWNER_TYPE'
4376                                                         ,l_component_type_code
4377                                                         )
4378                  ,p_token_3                 => 'PAD_NAME'
4379                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4380                  ,p_token_4                 => 'PAD_OWNER'
4381                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4382                                                         'XLA_OWNER_TYPE'
4383                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4384                                                         )
4385                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4386                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4387                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4388                  ,p_ae_header_id            => NULL
4389 );
4390 RETURN l_output_value;
4391 EXCEPTION
4392   WHEN xla_exceptions_pkg.application_exception THEN
4393       RAISE;
4394   WHEN OTHERS THEN
4395        xla_exceptions_pkg.raise_message
4396            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_30');
4397 END AcctDerRule_30;
4398 --
4399 
4400 ---------------------------------------
4401 --
4402 -- PRIVATE FUNCTION
4403 --         AcctDerRule_31
4404 --
4405 ---------------------------------------
4406 FUNCTION AcctDerRule_31 (
4407   p_application_id              IN NUMBER
4408 , p_ae_header_id                IN NUMBER
4409 , p_side                        IN VARCHAR2 
4410 --Discrete Job Bridging Account
4411  , p_source_54            IN NUMBER
4412 --WIP Entity Type
4413  , p_source_55            IN NUMBER
4414  , p_source_55_meaning    IN VARCHAR2
4415 --Flow Schedule Bridging Account
4416  , p_source_56            IN NUMBER
4417 --Repetitive Item Bridging Account
4418  , p_source_57            IN NUMBER
4419 , x_transaction_coa_id         OUT NOCOPY NUMBER
4420 , x_accounting_coa_id          OUT NOCOPY NUMBER
4421 , x_value_type_code            OUT NOCOPY VARCHAR2
4422 )
4423 RETURN NUMBER
4424 IS
4425 l_component_type       VARCHAR2(80)  ;
4426 l_component_code       VARCHAR2(30)  ;
4427 l_component_type_code  VARCHAR2(1)   ;
4428 l_component_appl_id    INTEGER       ;
4429 l_amb_context_code     VARCHAR2(30)  ;
4430 l_log_module           VARCHAR2(240) ;
4431 l_output_value         NUMBER        ;
4432 BEGIN
4433 IF g_log_enabled THEN
4434       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_31';
4435 END IF;
4436 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4437       trace
4438          (p_msg      => 'BEGIN of AcctDerRule_31'
4439          ,p_level    => C_LEVEL_PROCEDURE
4440          ,p_module   => l_log_module);
4441 END IF;
4442 --
4443 l_component_type         := 'AMB_ADR';
4444 l_component_code         := 'PI_OSP_BRIDGING';
4445 l_component_type_code    := 'S';
4446 l_component_appl_id      :=  707;
4447 l_amb_context_code       := 'DEFAULT';
4448 x_transaction_coa_id     :=  null;
4449 x_accounting_coa_id      :=  null;
4450 --
4451 
4452  IF NVL(p_source_55,9E125) =  1 OR 
4453 NVL(p_source_55,9E125) =  3
4454  THEN 
4455  --
4456   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4457       trace
4458          (p_msg      => 'END of AcctDerRule_31'
4459          ,p_level    => C_LEVEL_PROCEDURE
4460          ,p_module   => l_log_module);
4461   END IF;
4462   x_value_type_code := 'S';
4463   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_54));
4464   RETURN l_output_value;
4465 
4466  ELSIF NVL(p_source_55,9E125) =  4
4467  THEN 
4468  --
4469   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4470       trace
4471          (p_msg      => 'END of AcctDerRule_31'
4472          ,p_level    => C_LEVEL_PROCEDURE
4473          ,p_module   => l_log_module);
4474   END IF;
4475   x_value_type_code := 'S';
4476   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_56));
4477   RETURN l_output_value;
4478 
4479  ELSIF NVL(p_source_55,9E125) =  2
4480  THEN 
4481  --
4482   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4483       trace
4484          (p_msg      => 'END of AcctDerRule_31'
4485          ,p_level    => C_LEVEL_PROCEDURE
4486          ,p_module   => l_log_module);
4487   END IF;
4488   x_value_type_code := 'S';
4489   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_57));
4490   RETURN l_output_value;
4491 
4492  END IF;
4493 --
4494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4495       trace
4496          (p_msg      => 'END of AcctDerRule_31(invalid)'
4497          ,p_level    => C_LEVEL_PROCEDURE
4498          ,p_module   => l_log_module);
4499 END IF;
4500 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4501 x_value_type_code := null;
4502 l_output_value    := null;
4503 xla_accounting_err_pkg.build_message
4504                  (p_appli_s_name            => 'XLA'
4505                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4506                  ,p_token_1                 => 'COMPONENT_NAME'
4507                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4508                                                             l_component_type
4509                                                           , l_component_code
4510                                                           , l_component_type_code
4511                                                           , l_component_appl_id
4512                                                           , l_amb_context_code
4513                                                           )
4514                  ,p_token_2                 => 'OWNER'
4515                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4516                                                         'XLA_OWNER_TYPE'
4517                                                         ,l_component_type_code
4518                                                         )
4519                  ,p_token_3                 => 'PAD_NAME'
4520                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4521                  ,p_token_4                 => 'PAD_OWNER'
4522                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4523                                                         'XLA_OWNER_TYPE'
4524                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4525                                                         )
4526                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4527                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4528                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4529                  ,p_ae_header_id            => NULL
4530 );
4531 RETURN l_output_value;
4532 EXCEPTION
4533   WHEN xla_exceptions_pkg.application_exception THEN
4534       RAISE;
4535   WHEN OTHERS THEN
4536        xla_exceptions_pkg.raise_message
4537            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_31');
4538 END AcctDerRule_31;
4539 --
4540 
4541 ---------------------------------------
4542 --
4543 -- PRIVATE FUNCTION
4544 --         AcctDerRule_32
4545 --
4546 ---------------------------------------
4547 FUNCTION AcctDerRule_32 (
4548   p_application_id              IN NUMBER
4549 , p_ae_header_id                IN NUMBER
4550 , p_side                        IN VARCHAR2 
4551 --Inventory Organization Purchase Price Variance Account
4552  , p_source_58            IN NUMBER
4553 , x_transaction_coa_id         OUT NOCOPY NUMBER
4554 , x_accounting_coa_id          OUT NOCOPY NUMBER
4555 , x_value_type_code            OUT NOCOPY VARCHAR2
4556 )
4557 RETURN NUMBER
4558 IS
4559 l_component_type       VARCHAR2(80)  ;
4560 l_component_code       VARCHAR2(30)  ;
4561 l_component_type_code  VARCHAR2(1)   ;
4562 l_component_appl_id    INTEGER       ;
4563 l_amb_context_code     VARCHAR2(30)  ;
4564 l_log_module           VARCHAR2(240) ;
4565 l_output_value         NUMBER        ;
4566 BEGIN
4567 IF g_log_enabled THEN
4568       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_32';
4569 END IF;
4570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4571       trace
4572          (p_msg      => 'BEGIN of AcctDerRule_32'
4573          ,p_level    => C_LEVEL_PROCEDURE
4574          ,p_module   => l_log_module);
4575 END IF;
4576 --
4577 l_component_type         := 'AMB_ADR';
4578 l_component_code         := 'PI_PURCHASE_PRICE_VAR';
4579 l_component_type_code    := 'S';
4580 l_component_appl_id      :=  707;
4581 l_amb_context_code       := 'DEFAULT';
4582 x_transaction_coa_id     :=  null;
4583 x_accounting_coa_id      :=  null;
4584 --
4585 
4586  --
4587   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4588       trace
4589          (p_msg      => 'END of AcctDerRule_32'
4590          ,p_level    => C_LEVEL_PROCEDURE
4591          ,p_module   => l_log_module);
4592   END IF;
4593   x_value_type_code := 'S';
4594   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_58));
4595   RETURN l_output_value;
4596 
4597 --
4598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4599       trace
4600          (p_msg      => 'END of AcctDerRule_32(invalid)'
4601          ,p_level    => C_LEVEL_PROCEDURE
4602          ,p_module   => l_log_module);
4603 END IF;
4604 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4605 x_value_type_code := null;
4606 l_output_value    := null;
4607 xla_accounting_err_pkg.build_message
4608                  (p_appli_s_name            => 'XLA'
4609                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4610                  ,p_token_1                 => 'COMPONENT_NAME'
4611                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4612                                                             l_component_type
4613                                                           , l_component_code
4614                                                           , l_component_type_code
4615                                                           , l_component_appl_id
4616                                                           , l_amb_context_code
4617                                                           )
4618                  ,p_token_2                 => 'OWNER'
4619                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4620                                                         'XLA_OWNER_TYPE'
4621                                                         ,l_component_type_code
4622                                                         )
4623                  ,p_token_3                 => 'PAD_NAME'
4624                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4625                  ,p_token_4                 => 'PAD_OWNER'
4626                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4627                                                         'XLA_OWNER_TYPE'
4628                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4629                                                         )
4630                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4631                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4632                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4633                  ,p_ae_header_id            => NULL
4634 );
4635 RETURN l_output_value;
4636 EXCEPTION
4637   WHEN xla_exceptions_pkg.application_exception THEN
4638       RAISE;
4639   WHEN OTHERS THEN
4640        xla_exceptions_pkg.raise_message
4641            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_32');
4642 END AcctDerRule_32;
4643 --
4644 
4645 ---------------------------------------
4646 --
4647 -- PRIVATE FUNCTION
4648 --         AcctDerRule_33
4649 --
4650 ---------------------------------------
4651 FUNCTION AcctDerRule_33 (
4652   p_application_id              IN NUMBER
4653 , p_ae_header_id                IN NUMBER
4654 , p_side                        IN VARCHAR2 
4655 --Interorg Receivables Account
4656  , p_source_59            IN NUMBER
4657 , x_transaction_coa_id         OUT NOCOPY NUMBER
4658 , x_accounting_coa_id          OUT NOCOPY NUMBER
4659 , x_value_type_code            OUT NOCOPY VARCHAR2
4660 )
4661 RETURN NUMBER
4662 IS
4663 l_component_type       VARCHAR2(80)  ;
4664 l_component_code       VARCHAR2(30)  ;
4665 l_component_type_code  VARCHAR2(1)   ;
4666 l_component_appl_id    INTEGER       ;
4667 l_amb_context_code     VARCHAR2(30)  ;
4668 l_log_module           VARCHAR2(240) ;
4669 l_output_value         NUMBER        ;
4670 BEGIN
4671 IF g_log_enabled THEN
4672       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_33';
4673 END IF;
4674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4675       trace
4676          (p_msg      => 'BEGIN of AcctDerRule_33'
4677          ,p_level    => C_LEVEL_PROCEDURE
4678          ,p_module   => l_log_module);
4679 END IF;
4680 --
4681 l_component_type         := 'AMB_ADR';
4682 l_component_code         := 'PI_RECEIVABLES';
4683 l_component_type_code    := 'S';
4684 l_component_appl_id      :=  707;
4685 l_amb_context_code       := 'DEFAULT';
4686 x_transaction_coa_id     :=  null;
4687 x_accounting_coa_id      :=  null;
4688 --
4689 
4690  --
4691   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4692       trace
4693          (p_msg      => 'END of AcctDerRule_33'
4694          ,p_level    => C_LEVEL_PROCEDURE
4695          ,p_module   => l_log_module);
4696   END IF;
4697   x_value_type_code := 'S';
4698   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_59));
4699   RETURN l_output_value;
4700 
4701 --
4702 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4703       trace
4704          (p_msg      => 'END of AcctDerRule_33(invalid)'
4705          ,p_level    => C_LEVEL_PROCEDURE
4706          ,p_module   => l_log_module);
4707 END IF;
4708 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4709 x_value_type_code := null;
4710 l_output_value    := null;
4711 xla_accounting_err_pkg.build_message
4712                  (p_appli_s_name            => 'XLA'
4713                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4714                  ,p_token_1                 => 'COMPONENT_NAME'
4715                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4716                                                             l_component_type
4717                                                           , l_component_code
4718                                                           , l_component_type_code
4719                                                           , l_component_appl_id
4720                                                           , l_amb_context_code
4721                                                           )
4722                  ,p_token_2                 => 'OWNER'
4723                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4724                                                         'XLA_OWNER_TYPE'
4725                                                         ,l_component_type_code
4726                                                         )
4727                  ,p_token_3                 => 'PAD_NAME'
4728                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4729                  ,p_token_4                 => 'PAD_OWNER'
4730                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4731                                                         'XLA_OWNER_TYPE'
4732                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4733                                                         )
4734                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4735                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4736                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4737                  ,p_ae_header_id            => NULL
4738 );
4739 RETURN l_output_value;
4740 EXCEPTION
4741   WHEN xla_exceptions_pkg.application_exception THEN
4742       RAISE;
4743   WHEN OTHERS THEN
4744        xla_exceptions_pkg.raise_message
4745            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_33');
4746 END AcctDerRule_33;
4747 --
4748 
4749 ---------------------------------------
4750 --
4751 -- PRIVATE FUNCTION
4752 --         AcctDerRule_34
4753 --
4754 ---------------------------------------
4755 FUNCTION AcctDerRule_34 (
4756   p_application_id              IN NUMBER
4757 , p_ae_header_id                IN NUMBER
4758 , p_side                        IN VARCHAR2 
4759 --Transaction Expense Account
4760  , p_source_60            IN NUMBER
4761 , x_transaction_coa_id         OUT NOCOPY NUMBER
4762 , x_accounting_coa_id          OUT NOCOPY NUMBER
4763 , x_value_type_code            OUT NOCOPY VARCHAR2
4764 )
4765 RETURN NUMBER
4766 IS
4767 l_component_type       VARCHAR2(80)  ;
4768 l_component_code       VARCHAR2(30)  ;
4769 l_component_type_code  VARCHAR2(1)   ;
4770 l_component_appl_id    INTEGER       ;
4771 l_amb_context_code     VARCHAR2(30)  ;
4772 l_log_module           VARCHAR2(240) ;
4773 l_output_value         NUMBER        ;
4774 BEGIN
4775 IF g_log_enabled THEN
4776       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_34';
4777 END IF;
4778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4779       trace
4780          (p_msg      => 'BEGIN of AcctDerRule_34'
4781          ,p_level    => C_LEVEL_PROCEDURE
4782          ,p_module   => l_log_module);
4783 END IF;
4784 --
4785 l_component_type         := 'AMB_ADR';
4786 l_component_code         := 'PI_TRANSACTION_EXPENSE';
4787 l_component_type_code    := 'S';
4788 l_component_appl_id      :=  707;
4789 l_amb_context_code       := 'DEFAULT';
4790 x_transaction_coa_id     :=  null;
4791 x_accounting_coa_id      :=  null;
4792 --
4793 
4794  --
4795   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4796       trace
4797          (p_msg      => 'END of AcctDerRule_34'
4798          ,p_level    => C_LEVEL_PROCEDURE
4799          ,p_module   => l_log_module);
4800   END IF;
4801   x_value_type_code := 'S';
4802   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_60));
4803   RETURN l_output_value;
4804 
4805 --
4806 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4807       trace
4808          (p_msg      => 'END of AcctDerRule_34(invalid)'
4809          ,p_level    => C_LEVEL_PROCEDURE
4810          ,p_module   => l_log_module);
4811 END IF;
4812 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4813 x_value_type_code := null;
4814 l_output_value    := null;
4815 xla_accounting_err_pkg.build_message
4816                  (p_appli_s_name            => 'XLA'
4817                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4818                  ,p_token_1                 => 'COMPONENT_NAME'
4819                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4820                                                             l_component_type
4821                                                           , l_component_code
4822                                                           , l_component_type_code
4823                                                           , l_component_appl_id
4824                                                           , l_amb_context_code
4825                                                           )
4826                  ,p_token_2                 => 'OWNER'
4827                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4828                                                         'XLA_OWNER_TYPE'
4829                                                         ,l_component_type_code
4830                                                         )
4831                  ,p_token_3                 => 'PAD_NAME'
4832                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4833                  ,p_token_4                 => 'PAD_OWNER'
4834                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4835                                                         'XLA_OWNER_TYPE'
4836                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4837                                                         )
4838                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4839                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4840                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4841                  ,p_ae_header_id            => NULL
4842 );
4843 RETURN l_output_value;
4844 EXCEPTION
4845   WHEN xla_exceptions_pkg.application_exception THEN
4846       RAISE;
4847   WHEN OTHERS THEN
4848        xla_exceptions_pkg.raise_message
4849            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_34');
4850 END AcctDerRule_34;
4851 --
4852 
4853 ---------------------------------------
4854 --
4855 -- PRIVATE FUNCTION
4856 --         AcctDerRule_35
4857 --
4858 ---------------------------------------
4859 FUNCTION AcctDerRule_35 (
4860   p_application_id              IN NUMBER
4861 , p_ae_header_id                IN NUMBER
4862 , p_side                        IN VARCHAR2 
4863 --Transaction Distribution Account
4864  , p_source_20            IN NUMBER
4865 --Discrete Job Bridging Account
4866  , p_source_54            IN NUMBER
4867 --WIP Entity Type
4868  , p_source_55            IN NUMBER
4869  , p_source_55_meaning    IN VARCHAR2
4870 --Flow Schedule Bridging Account
4871  , p_source_56            IN NUMBER
4872 --Repetitive Item Bridging Account
4873  , p_source_57            IN NUMBER
4874 --TRANSACTION_SOURCE_ID
4875  , p_source_61            IN NUMBER
4876 --Transaction Action Name
4877  , p_source_62            IN NUMBER
4878  , p_source_62_meaning    IN VARCHAR2
4879 , x_transaction_coa_id         OUT NOCOPY NUMBER
4880 , x_accounting_coa_id          OUT NOCOPY NUMBER
4881 , x_value_type_code            OUT NOCOPY VARCHAR2
4882 )
4883 RETURN NUMBER
4884 IS
4885 l_component_type       VARCHAR2(80)  ;
4886 l_component_code       VARCHAR2(30)  ;
4887 l_component_type_code  VARCHAR2(1)   ;
4888 l_component_appl_id    INTEGER       ;
4889 l_amb_context_code     VARCHAR2(30)  ;
4890 l_log_module           VARCHAR2(240) ;
4891 l_output_value         NUMBER        ;
4892 BEGIN
4893 IF g_log_enabled THEN
4894       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_35';
4895 END IF;
4896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4897       trace
4898          (p_msg      => 'BEGIN of AcctDerRule_35'
4899          ,p_level    => C_LEVEL_PROCEDURE
4900          ,p_module   => l_log_module);
4901 END IF;
4902 --
4903 l_component_type         := 'AMB_ADR';
4904 l_component_code         := 'PI_WIP_BRIDGING';
4905 l_component_type_code    := 'S';
4906 l_component_appl_id      :=  707;
4907 l_amb_context_code       := 'DEFAULT';
4908 x_transaction_coa_id     :=  null;
4909 x_accounting_coa_id      :=  null;
4910 --
4911 
4912  IF NVL(p_source_61,9E125) =  5 AND 
4913 NVL(p_source_62,9E125) =  30
4914  THEN 
4915  --
4916   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4917       trace
4918          (p_msg      => 'END of AcctDerRule_35'
4919          ,p_level    => C_LEVEL_PROCEDURE
4920          ,p_module   => l_log_module);
4921   END IF;
4922   x_value_type_code := 'S';
4923   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_20));
4924   RETURN l_output_value;
4925 
4926  ELSIF NVL(p_source_55,9E125) =  1 OR 
4927 NVL(p_source_55,9E125) =  3 OR 
4928 NVL(p_source_55,9E125) =  5 OR 
4929 NVL(p_source_55,9E125) =  8
4930  THEN 
4931  --
4932   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4933       trace
4934          (p_msg      => 'END of AcctDerRule_35'
4935          ,p_level    => C_LEVEL_PROCEDURE
4936          ,p_module   => l_log_module);
4937   END IF;
4938   x_value_type_code := 'S';
4939   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_54));
4940   RETURN l_output_value;
4941 
4942  ELSIF NVL(p_source_55,9E125) =  4
4943  THEN 
4944  --
4945   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4946       trace
4947          (p_msg      => 'END of AcctDerRule_35'
4948          ,p_level    => C_LEVEL_PROCEDURE
4949          ,p_module   => l_log_module);
4950   END IF;
4951   x_value_type_code := 'S';
4952   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_56));
4953   RETURN l_output_value;
4954 
4955  ELSIF NVL(p_source_55,9E125) =  2
4956  THEN 
4957  --
4958   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4959       trace
4960          (p_msg      => 'END of AcctDerRule_35'
4961          ,p_level    => C_LEVEL_PROCEDURE
4962          ,p_module   => l_log_module);
4963   END IF;
4964   x_value_type_code := 'S';
4965   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_57));
4966   RETURN l_output_value;
4967 
4968  END IF;
4969 --
4970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4971       trace
4972          (p_msg      => 'END of AcctDerRule_35(invalid)'
4973          ,p_level    => C_LEVEL_PROCEDURE
4974          ,p_module   => l_log_module);
4975 END IF;
4976 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4977 x_value_type_code := null;
4978 l_output_value    := null;
4979 xla_accounting_err_pkg.build_message
4980                  (p_appli_s_name            => 'XLA'
4981                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4982                  ,p_token_1                 => 'COMPONENT_NAME'
4983                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4984                                                             l_component_type
4985                                                           , l_component_code
4986                                                           , l_component_type_code
4987                                                           , l_component_appl_id
4988                                                           , l_amb_context_code
4989                                                           )
4990                  ,p_token_2                 => 'OWNER'
4991                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4992                                                         'XLA_OWNER_TYPE'
4993                                                         ,l_component_type_code
4994                                                         )
4995                  ,p_token_3                 => 'PAD_NAME'
4996                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4997                  ,p_token_4                 => 'PAD_OWNER'
4998                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4999                                                         'XLA_OWNER_TYPE'
5000                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
5001                                                         )
5002                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
5003                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
5004                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
5005                  ,p_ae_header_id            => NULL
5006 );
5007 RETURN l_output_value;
5008 EXCEPTION
5009   WHEN xla_exceptions_pkg.application_exception THEN
5010       RAISE;
5011   WHEN OTHERS THEN
5012        xla_exceptions_pkg.raise_message
5013            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_35');
5014 END AcctDerRule_35;
5015 --
5016 
5017 ---------------------------------------
5018 --
5019 -- PRIVATE FUNCTION
5020 --         AcctDerRule_36
5021 --
5022 ---------------------------------------
5023 FUNCTION AcctDerRule_36 (
5024   p_application_id              IN NUMBER
5025 , p_ae_header_id                IN NUMBER
5026 , p_side                        IN VARCHAR2 
5027 --Cost Element Name
5028  , p_source_15            IN NUMBER
5029 --WIP Entity Type
5030  , p_source_55            IN NUMBER
5031  , p_source_55_meaning    IN VARCHAR2
5032 --Discrete Job Material Account
5033  , p_source_63            IN NUMBER
5034 --Discrete Job Material Overhead Account
5035  , p_source_64            IN NUMBER
5036 --Discrete Job Resource Account
5037  , p_source_65            IN NUMBER
5038 --Discrete Job Outside Processing Account
5039  , p_source_66            IN NUMBER
5040 --Discrete Job Overhead Account
5041  , p_source_67            IN NUMBER
5042 --Repetitive Schedule Material Account
5043  , p_source_68            IN NUMBER
5044 --Repetitive Schedule Material Overhead Account
5045  , p_source_69            IN NUMBER
5046 --Repetitive Schedule Resource Account
5047  , p_source_70            IN NUMBER
5048 --Repetitive Schedule Outside Processing Account
5049  , p_source_71            IN NUMBER
5050 --Repetitive Schedule Overhead Account
5051  , p_source_72            IN NUMBER
5052 --Flow Schedule Material Account
5053  , p_source_73            IN NUMBER
5054 --Flow Schedule Material Overhead Account
5055  , p_source_74            IN NUMBER
5056 --Flow Schedule Resource Account
5057  , p_source_75            IN NUMBER
5058 --Flow Schedule Outside Processing Account
5059  , p_source_76            IN NUMBER
5060 --Flow Schedule Overhead Account
5061  , p_source_77            IN NUMBER
5062 , x_transaction_coa_id         OUT NOCOPY NUMBER
5063 , x_accounting_coa_id          OUT NOCOPY NUMBER
5064 , x_value_type_code            OUT NOCOPY VARCHAR2
5065 )
5066 RETURN NUMBER
5067 IS
5068 l_component_type       VARCHAR2(80)  ;
5069 l_component_code       VARCHAR2(30)  ;
5070 l_component_type_code  VARCHAR2(1)   ;
5071 l_component_appl_id    INTEGER       ;
5072 l_amb_context_code     VARCHAR2(30)  ;
5073 l_log_module           VARCHAR2(240) ;
5074 l_output_value         NUMBER        ;
5075 BEGIN
5076 IF g_log_enabled THEN
5077       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_36';
5078 END IF;
5079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5080       trace
5081          (p_msg      => 'BEGIN of AcctDerRule_36'
5082          ,p_level    => C_LEVEL_PROCEDURE
5083          ,p_module   => l_log_module);
5084 END IF;
5085 --
5086 l_component_type         := 'AMB_ADR';
5087 l_component_code         := 'PI_WIP_VALUATION';
5088 l_component_type_code    := 'S';
5089 l_component_appl_id      :=  707;
5090 l_amb_context_code       := 'DEFAULT';
5091 x_transaction_coa_id     :=  null;
5092 x_accounting_coa_id      :=  null;
5093 --
5094 
5095  IF (NVL(p_source_55,9E125) =  1 OR 
5096 NVL(p_source_55,9E125) =  3 OR 
5097 NVL(p_source_55,9E125) =  5 OR 
5098 NVL(p_source_55,9E125) =  8) AND 
5099 NVL(p_source_15,9E125) =  1
5100  THEN 
5101  --
5102   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5103       trace
5104          (p_msg      => 'END of AcctDerRule_36'
5105          ,p_level    => C_LEVEL_PROCEDURE
5106          ,p_module   => l_log_module);
5107   END IF;
5108   x_value_type_code := 'S';
5109   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_63));
5110   RETURN l_output_value;
5111 
5112  ELSIF (NVL(p_source_55,9E125) =  1 OR 
5113 NVL(p_source_55,9E125) =  3 OR 
5114 NVL(p_source_55,9E125) =  5 OR 
5115 NVL(p_source_55,9E125) =  8) AND 
5116 NVL(p_source_15,9E125) =  2
5117  THEN 
5118  --
5119   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5120       trace
5121          (p_msg      => 'END of AcctDerRule_36'
5122          ,p_level    => C_LEVEL_PROCEDURE
5123          ,p_module   => l_log_module);
5124   END IF;
5125   x_value_type_code := 'S';
5126   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_64));
5127   RETURN l_output_value;
5128 
5129  ELSIF (NVL(p_source_55,9E125) =  1 OR 
5130 NVL(p_source_55,9E125) =  3 OR 
5131 NVL(p_source_55,9E125) =  5 OR 
5132 NVL(p_source_55,9E125) =  8) AND 
5133 NVL(p_source_15,9E125) =  3
5134  THEN 
5135  --
5136   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5137       trace
5138          (p_msg      => 'END of AcctDerRule_36'
5139          ,p_level    => C_LEVEL_PROCEDURE
5140          ,p_module   => l_log_module);
5141   END IF;
5142   x_value_type_code := 'S';
5143   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_65));
5144   RETURN l_output_value;
5145 
5146  ELSIF (NVL(p_source_55,9E125) =  1 OR 
5147 NVL(p_source_55,9E125) =  3 OR 
5148 NVL(p_source_55,9E125) =  5 OR 
5149 NVL(p_source_55,9E125) =  8) AND 
5150 NVL(p_source_15,9E125) =  4
5151  THEN 
5152  --
5153   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5154       trace
5155          (p_msg      => 'END of AcctDerRule_36'
5156          ,p_level    => C_LEVEL_PROCEDURE
5157          ,p_module   => l_log_module);
5158   END IF;
5159   x_value_type_code := 'S';
5160   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_66));
5161   RETURN l_output_value;
5162 
5163  ELSIF (NVL(p_source_55,9E125) =  1 OR 
5164 NVL(p_source_55,9E125) =  3 OR 
5165 NVL(p_source_55,9E125) =  5 OR 
5166 NVL(p_source_55,9E125) =  8) AND 
5167 NVL(p_source_15,9E125) =  5
5168  THEN 
5169  --
5170   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5171       trace
5172          (p_msg      => 'END of AcctDerRule_36'
5173          ,p_level    => C_LEVEL_PROCEDURE
5174          ,p_module   => l_log_module);
5175   END IF;
5176   x_value_type_code := 'S';
5177   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_67));
5178   RETURN l_output_value;
5179 
5180  ELSIF NVL(p_source_55,9E125) =  2 AND 
5181 NVL(p_source_15,9E125) =  1
5182  THEN 
5183  --
5184   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5185       trace
5186          (p_msg      => 'END of AcctDerRule_36'
5187          ,p_level    => C_LEVEL_PROCEDURE
5188          ,p_module   => l_log_module);
5189   END IF;
5190   x_value_type_code := 'S';
5191   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_68));
5192   RETURN l_output_value;
5193 
5194  ELSIF NVL(p_source_55,9E125) =  2 AND 
5195 NVL(p_source_15,9E125) =  2
5196  THEN 
5197  --
5198   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5199       trace
5200          (p_msg      => 'END of AcctDerRule_36'
5201          ,p_level    => C_LEVEL_PROCEDURE
5202          ,p_module   => l_log_module);
5203   END IF;
5204   x_value_type_code := 'S';
5205   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_69));
5206   RETURN l_output_value;
5207 
5208  ELSIF NVL(p_source_55,9E125) =  2 AND 
5209 NVL(p_source_15,9E125) =  3
5210  THEN 
5211  --
5212   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5213       trace
5214          (p_msg      => 'END of AcctDerRule_36'
5215          ,p_level    => C_LEVEL_PROCEDURE
5216          ,p_module   => l_log_module);
5217   END IF;
5218   x_value_type_code := 'S';
5219   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_70));
5220   RETURN l_output_value;
5221 
5222  ELSIF NVL(p_source_55,9E125) =  2 AND 
5223 NVL(p_source_15,9E125) =  4
5224  THEN 
5225  --
5226   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5227       trace
5228          (p_msg      => 'END of AcctDerRule_36'
5229          ,p_level    => C_LEVEL_PROCEDURE
5230          ,p_module   => l_log_module);
5231   END IF;
5232   x_value_type_code := 'S';
5233   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_71));
5234   RETURN l_output_value;
5235 
5236  ELSIF NVL(p_source_55,9E125) =  2 AND 
5237 NVL(p_source_15,9E125) =  5
5238  THEN 
5239  --
5240   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5241       trace
5242          (p_msg      => 'END of AcctDerRule_36'
5243          ,p_level    => C_LEVEL_PROCEDURE
5244          ,p_module   => l_log_module);
5245   END IF;
5246   x_value_type_code := 'S';
5247   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_72));
5248   RETURN l_output_value;
5249 
5250  ELSIF NVL(p_source_55,9E125) =  4 AND 
5251 NVL(p_source_15,9E125) =  1
5252  THEN 
5253  --
5254   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5255       trace
5256          (p_msg      => 'END of AcctDerRule_36'
5257          ,p_level    => C_LEVEL_PROCEDURE
5258          ,p_module   => l_log_module);
5259   END IF;
5260   x_value_type_code := 'S';
5261   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_73));
5262   RETURN l_output_value;
5263 
5264  ELSIF NVL(p_source_55,9E125) =  4 AND 
5265 NVL(p_source_15,9E125) =  2
5266  THEN 
5267  --
5268   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5269       trace
5270          (p_msg      => 'END of AcctDerRule_36'
5271          ,p_level    => C_LEVEL_PROCEDURE
5272          ,p_module   => l_log_module);
5273   END IF;
5274   x_value_type_code := 'S';
5275   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_74));
5276   RETURN l_output_value;
5277 
5278  ELSIF NVL(p_source_55,9E125) =  4 AND 
5279 NVL(p_source_15,9E125) =  3
5280  THEN 
5281  --
5282   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5283       trace
5284          (p_msg      => 'END of AcctDerRule_36'
5285          ,p_level    => C_LEVEL_PROCEDURE
5286          ,p_module   => l_log_module);
5287   END IF;
5288   x_value_type_code := 'S';
5289   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_75));
5290   RETURN l_output_value;
5291 
5292  ELSIF NVL(p_source_55,9E125) =  4 AND 
5293 NVL(p_source_15,9E125) =  4
5294  THEN 
5295  --
5296   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5297       trace
5298          (p_msg      => 'END of AcctDerRule_36'
5299          ,p_level    => C_LEVEL_PROCEDURE
5300          ,p_module   => l_log_module);
5301   END IF;
5302   x_value_type_code := 'S';
5303   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_76));
5304   RETURN l_output_value;
5305 
5306  ELSIF NVL(p_source_55,9E125) =  4 AND 
5307 NVL(p_source_15,9E125) =  5
5308  THEN 
5309  --
5310   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5311       trace
5312          (p_msg      => 'END of AcctDerRule_36'
5313          ,p_level    => C_LEVEL_PROCEDURE
5314          ,p_module   => l_log_module);
5315   END IF;
5316   x_value_type_code := 'S';
5317   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_77));
5318   RETURN l_output_value;
5319 
5320  END IF;
5321 --
5322 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5323       trace
5324          (p_msg      => 'END of AcctDerRule_36(invalid)'
5325          ,p_level    => C_LEVEL_PROCEDURE
5326          ,p_module   => l_log_module);
5327 END IF;
5328 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
5329 x_value_type_code := null;
5330 l_output_value    := null;
5331 xla_accounting_err_pkg.build_message
5332                  (p_appli_s_name            => 'XLA'
5333                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
5334                  ,p_token_1                 => 'COMPONENT_NAME'
5335                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
5336                                                             l_component_type
5337                                                           , l_component_code
5338                                                           , l_component_type_code
5339                                                           , l_component_appl_id
5340                                                           , l_amb_context_code
5341                                                           )
5342                  ,p_token_2                 => 'OWNER'
5343                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
5344                                                         'XLA_OWNER_TYPE'
5345                                                         ,l_component_type_code
5346                                                         )
5347                  ,p_token_3                 => 'PAD_NAME'
5348                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
5349                  ,p_token_4                 => 'PAD_OWNER'
5350                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
5351                                                         'XLA_OWNER_TYPE'
5352                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
5353                                                         )
5354                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
5355                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
5356                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
5357                  ,p_ae_header_id            => NULL
5358 );
5359 RETURN l_output_value;
5360 EXCEPTION
5361   WHEN xla_exceptions_pkg.application_exception THEN
5362       RAISE;
5363   WHEN OTHERS THEN
5364        xla_exceptions_pkg.raise_message
5365            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctDerRule_36');
5366 END AcctDerRule_36;
5367 --
5368 
5369 ---------------------------------------
5370 --
5371 -- PRIVATE FUNCTION
5372 --         AcctLineType_37
5373 --
5374 ---------------------------------------
5375 PROCEDURE AcctLineType_37 (
5376   p_application_id        IN NUMBER
5377  ,p_event_id              IN NUMBER
5378  ,p_calculate_acctd_flag  IN VARCHAR2
5379  ,p_calculate_g_l_flag    IN VARCHAR2
5380  ,p_actual_flag           IN OUT VARCHAR2
5381  ,p_balance_type_code     OUT VARCHAR2
5382  ,p_gain_or_loss_ref      OUT VARCHAR2
5383  
5384 --Cost Management Default Account
5385  , p_source_11            IN NUMBER
5386 --Receiving Accounting Line Type
5387  , p_source_78            IN VARCHAR2
5388 --Applied to Application ID
5389  , p_source_79            IN NUMBER
5390 --Applied to Distribution Link Type
5391  , p_source_80            IN VARCHAR2
5392 --Applied to Entity Code
5393  , p_source_81            IN VARCHAR2
5394 --PO_DISTRIBUTION_ID
5395  , p_source_82            IN NUMBER
5396 --Applied To Purchase Document Identifier
5397  , p_source_83            IN NUMBER
5398 --DISTRIBUTION_IDENTIFIER
5399  , p_source_84            IN NUMBER
5400 --Distribution Type
5401  , p_source_85            IN VARCHAR2
5402  , p_source_85_meaning    IN VARCHAR2
5403 --PO Budget Account
5404  , p_source_86            IN NUMBER
5405 --Encumbrance Reversal Amount Entered
5406  , p_source_87            IN NUMBER
5407 --Entered Currency Code
5408  , p_source_88            IN VARCHAR2
5409 --Transaction Encumbrance Reversal Amount
5410  , p_source_89            IN NUMBER
5411 --Costing Period End Accrual Encumbrance Upgrade Option
5412  , p_source_90            IN VARCHAR2
5413 --Entered Amount
5414  , p_source_91            IN NUMBER
5415 --Currency Conversion Date
5416  , p_source_92            IN DATE
5417 --Currency Conversion Rate
5418  , p_source_93            IN NUMBER
5419 --Currency Conversion Type
5420  , p_source_94            IN VARCHAR2
5421 --Accounted Amount
5422  , p_source_95            IN NUMBER
5423 --Purchasing Encumbrance Type Identifier
5424  , p_source_96            IN NUMBER
5425 )
5426 IS
5427 
5428 l_component_type              VARCHAR2(80);
5429 l_component_code              VARCHAR2(30);
5430 l_component_type_code         VARCHAR2(1);
5431 l_component_appl_id           INTEGER;
5432 l_amb_context_code            VARCHAR2(30);
5433 l_entity_code                 VARCHAR2(30);
5434 l_event_class_code            VARCHAR2(30);
5435 l_ae_header_id                NUMBER;
5436 l_event_type_code             VARCHAR2(30);
5437 l_line_definition_code        VARCHAR2(30);
5438 l_line_definition_owner_code  VARCHAR2(1);
5439 --
5440 -- adr variables
5441 l_segment                     VARCHAR2(30);
5442 l_ccid                        NUMBER;
5443 l_adr_transaction_coa_id      NUMBER;
5444 l_adr_accounting_coa_id       NUMBER;
5445 l_adr_flexfield_segment_code  VARCHAR2(30);
5446 l_adr_flex_value_set_id       NUMBER;
5447 l_adr_value_type_code         VARCHAR2(30);
5448 l_adr_value_combination_id    NUMBER;
5449 l_adr_value_segment_code      VARCHAR2(30);
5450 
5451 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5452 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5453 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5454 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5455 
5456 -- 4262811 Variables ------------------------------------------------------------------------------------------
5457 l_entered_amt_idx             NUMBER;
5458 l_accted_amt_idx              NUMBER;
5459 l_acc_rev_flag                VARCHAR2(1);
5460 l_accrual_line_num            NUMBER;
5461 l_tmp_amt                     NUMBER;
5462 l_acc_rev_natural_side_code   VARCHAR2(1);
5463 
5464 l_num_entries                 NUMBER;
5465 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5466 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5467 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5468 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5469 l_recog_line_1                NUMBER;
5470 l_recog_line_2                NUMBER;
5471 
5472 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5473 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5474 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5475 
5476 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5477 
5478 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5479 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5480 
5481 ---------------------------------------------------------------------------------------------------------------
5482 
5483 
5484 --
5485 -- bulk performance
5486 --
5487 l_balance_type_code           VARCHAR2(1);
5488 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5489 l_log_module                  VARCHAR2(240);
5490 
5491 --
5492 -- Upgrade strategy
5493 --
5494 l_actual_upg_option           VARCHAR2(1);
5495 l_enc_upg_option           VARCHAR2(1);
5496 
5497 --
5498 BEGIN
5499 --
5500 IF g_log_enabled THEN
5501       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
5502 END IF;
5503 --
5504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5505 
5506       trace
5507          (p_msg      => 'BEGIN of AcctLineType_37'
5508          ,p_level    => C_LEVEL_PROCEDURE
5509          ,p_module   => l_log_module);
5510 
5511 END IF;
5512 --
5513 l_component_type             := 'AMB_JLT';
5514 l_component_code             := 'ACCRUAL';
5515 l_component_type_code        := 'S';
5516 l_component_appl_id          :=  707;
5517 l_amb_context_code           := 'DEFAULT';
5518 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
5519 l_event_class_code           := 'PERIOD_END_ACCRUAL';
5520 l_event_type_code            := 'PERIOD_END_ACCRUAL_ALL';
5521 l_line_definition_owner_code := 'S';
5522 l_line_definition_code       := 'PERIOD_END_ACCRUAL';
5523 --
5524 l_balance_type_code          := 'A';
5525 l_segment                     := NULL;
5526 l_ccid                        := NULL;
5527 l_adr_transaction_coa_id      := NULL;
5528 l_adr_accounting_coa_id       := NULL;
5529 l_adr_flexfield_segment_code  := NULL;
5530 l_adr_flex_value_set_id       := NULL;
5531 l_adr_value_type_code         := NULL;
5532 l_adr_value_combination_id    := NULL;
5533 l_adr_value_segment_code      := NULL;
5534 
5535 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5536 l_bflow_class_code           := '';    -- 4219869 Business Flow
5537 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5538 l_budgetary_control_flag     := 'N';
5539 
5540 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5541 l_bflow_applied_to_amt       := NULL; -- 5132302
5542 l_entered_amt_idx            := NULL;          -- 4262811
5543 l_accted_amt_idx             := NULL;          -- 4262811
5544 l_acc_rev_flag               := NULL;          -- 4262811
5545 l_accrual_line_num           := NULL;          -- 4262811
5546 l_tmp_amt                    := NULL;          -- 4262811
5547 --
5548  
5549 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5550     l_balance_type_code <> 'B' THEN
5551 IF NVL(p_source_78,'
5552 ') =  'Accrual'
5553  THEN 
5554 
5555    --
5556    XLA_AE_LINES_PKG.SetNewLine;
5557 
5558    p_balance_type_code          := l_balance_type_code;
5559    -- set the flag so later we will know whether the gain loss line needs to be created
5560    
5561    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5562      p_actual_flag :='A';
5563    END IF;
5564 
5565    --
5566    -- bulk performance
5567    --
5568    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5569                                       p_header_num   => 0); -- 4262811
5570    --
5571    -- set accounting line options
5572    --
5573    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5574            p_natural_side_code          => 'D'
5575          , p_gain_or_loss_flag          => 'N'
5576          , p_gl_transfer_mode_code      => 'S'
5577          , p_acct_entry_type_code       => 'A'
5578          , p_switch_side_flag           => 'Y'
5579          , p_merge_duplicate_code       => 'N'
5580          );
5581    --
5582    l_acc_rev_natural_side_code := 'C';  -- 4262811
5583    -- 
5584    --
5585    -- set accounting line type info
5586    --
5587    xla_ae_lines_pkg.SetAcctLineType
5588       (p_component_type             => l_component_type
5589       ,p_event_type_code            => l_event_type_code
5590       ,p_line_definition_owner_code => l_line_definition_owner_code
5591       ,p_line_definition_code       => l_line_definition_code
5592       ,p_accounting_line_code       => l_component_code
5593       ,p_accounting_line_type_code  => l_component_type_code
5594       ,p_accounting_line_appl_id    => l_component_appl_id
5595       ,p_amb_context_code           => l_amb_context_code
5596       ,p_entity_code                => l_entity_code
5597       ,p_event_class_code           => l_event_class_code);
5598    --
5599    -- set accounting class
5600    --
5601    xla_ae_lines_pkg.SetAcctClass(
5602            p_accounting_class_code  => 'ACCRUAL'
5603          , p_ae_header_id           => l_ae_header_id
5604          );
5605 
5606    --
5607    -- set rounding class
5608    --
5609    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5610                       'ACCRUAL';
5611 
5612    --
5613    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5614    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5615    --
5616    -- bulk performance
5617    --
5618    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5619 
5620    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5621       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5622 
5623    -- 4955764
5624    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5625       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5626 
5627    -- 4458381 Public Sector Enh
5628    
5629    --
5630    -- set accounting attributes for the line type
5631    --
5632    l_entered_amt_idx := 17;
5633    l_accted_amt_idx  := 22;
5634    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5635    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
5636    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
5637    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5638    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
5639    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
5640    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
5641    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
5642    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_82);
5643    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5644    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
5645    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
5646    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
5647    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
5648    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
5649    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
5650    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
5651    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
5652    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
5653    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
5654    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
5655    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
5656    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
5657    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
5658    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
5659    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
5660    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
5661    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
5662    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
5663    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
5664    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
5665    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
5666    l_rec_acct_attrs.array_char_value(16)  := p_source_90;
5667    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
5668    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
5669    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
5670    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
5671    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
5672    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
5673    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
5674    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
5675    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
5676    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
5677    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
5678    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
5679    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
5680    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
5681    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
5682    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
5683 
5684    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5685    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5686 
5687    ---------------------------------------------------------------------------------------------------------------
5688    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5689    ---------------------------------------------------------------------------------------------------------------
5690    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5691 
5692    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5693    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5694 
5695    IF xla_accounting_cache_pkg.GetValueChar
5696          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5697          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5698    AND l_bflow_method_code = 'PRIOR_ENTRY'
5699 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5700    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5701          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5702        )
5703    THEN
5704          xla_ae_lines_pkg.BflowUpgEntry
5705            (p_business_method_code    => l_bflow_method_code
5706            ,p_business_class_code     => l_bflow_class_code
5707            ,p_balance_type            => l_balance_type_code);
5708    ELSE
5709       NULL;
5710 -- No business flow processing for business flow method of NONE.
5711    END IF;
5712 
5713    --
5714    -- call analytical criteria
5715    --
5716    
5717    --
5718    -- call description
5719    --
5720    -- No description or it is inherited.
5721    --
5722    -- call ADRs
5723    -- Bug 4922099
5724    --
5725    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5726         (NVL(l_actual_upg_option, 'N') = 'O') OR
5727         (NVL(l_enc_upg_option, 'N') = 'O')
5728       )
5729    THEN
5730    NULL;
5731    --
5732    --
5733    
5734   l_ccid := AcctDerRule_6(
5735            p_application_id           => p_application_id
5736          , p_ae_header_id             => l_ae_header_id 
5737 , p_source_11 => p_source_11
5738          , x_transaction_coa_id       => l_adr_transaction_coa_id
5739          , x_accounting_coa_id        => l_adr_accounting_coa_id
5740          , x_value_type_code          => l_adr_value_type_code
5741          , p_side                     => 'NA'
5742    );
5743 
5744    xla_ae_lines_pkg.set_ccid(
5745     p_code_combination_id          => l_ccid
5746   , p_value_type_code              => l_adr_value_type_code
5747   , p_transaction_coa_id           => l_adr_transaction_coa_id
5748   , p_accounting_coa_id            => l_adr_accounting_coa_id
5749   , p_adr_code                     => 'CST_DEFAULT'
5750   , p_adr_type_code                => 'S'
5751   , p_component_type               => l_component_type
5752   , p_component_code               => l_component_code
5753   , p_component_type_code          => l_component_type_code
5754   , p_component_appl_id            => l_component_appl_id
5755   , p_amb_context_code             => l_amb_context_code
5756   , p_side                         => 'NA'
5757   );
5758 
5759 
5760    --
5761    --
5762    END IF;
5763    --
5764    -- Bug 4922099
5765    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5766           (NVL(l_enc_upg_option, 'N') = 'O')
5767         ) AND
5768         (l_bflow_method_code = 'PRIOR_ENTRY')
5769       )
5770    THEN
5771       IF
5772       --
5773       1 = 2
5774       --
5775       THEN
5776       xla_accounting_err_pkg.build_message
5777                                     (p_appli_s_name            => 'XLA'
5778                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5779                                     ,p_token_1                 => 'LINE_NUMBER'
5780                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5781                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5782                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5783                                                                              l_component_type
5784                                                                             ,l_component_code
5785                                                                             ,l_component_type_code
5786                                                                             ,l_component_appl_id
5787                                                                             ,l_amb_context_code
5788                                                                             ,l_entity_code
5789                                                                             ,l_event_class_code
5790                                                                            )
5791                                     ,p_token_3                 => 'OWNER'
5792                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5793                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5794                                                                           ,p_lookup_code    => l_component_type_code
5795                                                                          )
5796                                     ,p_token_4                 => 'PRODUCT_NAME'
5797                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5798                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5799                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5800                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5801                                     ,p_ae_header_id            =>  NULL
5802                                        );
5803 
5804         IF (C_LEVEL_ERROR>= g_log_level) THEN
5805                  trace
5806                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5807                       ,p_level    => C_LEVEL_ERROR
5808                       ,p_module   => l_log_module);
5809         END IF;
5810       END IF;
5811    END IF;
5812    --
5813    --
5814    ------------------------------------------------------------------------------------------------
5815    -- 4219869 Business Flow
5816    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5817    -- Prior Entry.  Currently, the following code is always generated.
5818    ------------------------------------------------------------------------------------------------
5819    XLA_AE_LINES_PKG.ValidateCurrentLine;
5820 
5821    ------------------------------------------------------------------------------------
5822    -- 4219869 Business Flow
5823    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5824    ------------------------------------------------------------------------------------
5825    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5826 
5827    ----------------------------------------------------------------------------------
5828    -- 4219869 Business Flow
5829    -- Update journal entry status -- Need to generate this within IF <condition>
5830    ----------------------------------------------------------------------------------
5831    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5832          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5833          ,p_balance_type_code => l_balance_type_code
5834          );
5835 
5836    -------------------------------------------------------------------------------------------
5837    -- 4262811 - Generate the Accrual Reversal lines
5838    -------------------------------------------------------------------------------------------
5839    BEGIN
5840       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5841                               (g_array_event(p_event_id).array_value_num('header_index'));
5842       IF l_acc_rev_flag IS NULL THEN
5843          l_acc_rev_flag := 'N';
5844       END IF;
5845    EXCEPTION
5846       WHEN OTHERS THEN
5847          l_acc_rev_flag := 'N';
5848    END;
5849    --
5850    IF (l_acc_rev_flag = 'Y') THEN
5851 
5852        -- 4645092  ------------------------------------------------------------------------------
5853        -- To allow MPA report to determine if it should generate report process
5854        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5855        ------------------------------------------------------------------------------------------
5856 
5857        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5858        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5859    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5860    -- call ADRs
5861    -- Bug 4922099
5862    --
5863    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5864         (NVL(l_actual_upg_option, 'N') = 'O') OR
5865         (NVL(l_enc_upg_option, 'N') = 'O')
5866       )
5867    THEN
5868    NULL;
5869    --
5870    --
5871    
5872   l_ccid := AcctDerRule_6(
5873            p_application_id           => p_application_id
5874          , p_ae_header_id             => l_ae_header_id 
5875 , p_source_11 => p_source_11
5876          , x_transaction_coa_id       => l_adr_transaction_coa_id
5877          , x_accounting_coa_id        => l_adr_accounting_coa_id
5878          , x_value_type_code          => l_adr_value_type_code
5879          , p_side                     => 'NA'
5880    );
5881 
5882    xla_ae_lines_pkg.set_ccid(
5883     p_code_combination_id          => l_ccid
5884   , p_value_type_code              => l_adr_value_type_code
5885   , p_transaction_coa_id           => l_adr_transaction_coa_id
5886   , p_accounting_coa_id            => l_adr_accounting_coa_id
5887   , p_adr_code                     => 'CST_DEFAULT'
5888   , p_adr_type_code                => 'S'
5889   , p_component_type               => l_component_type
5890   , p_component_code               => l_component_code
5891   , p_component_type_code          => l_component_type_code
5892   , p_component_appl_id            => l_component_appl_id
5893   , p_amb_context_code             => l_amb_context_code
5894   , p_side                         => 'NA'
5895   );
5896 
5897 
5898    --
5899    --
5900    END IF;
5901 
5902        --
5903        -- Update the line information that should be overwritten
5904        --
5905        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5906                                          p_header_num   => 1);
5907        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5908 
5909        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5910 
5911        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5912           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5913        END IF;
5914 
5915       --
5916       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5917       --
5918       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5919           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5920       ELSE
5921           ---------------------------------------------------------------------------------------------------
5922           -- 4262811a Switch Sign
5923           ---------------------------------------------------------------------------------------------------
5924           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5925           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5926                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5927           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5928                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5929           -- 5132302
5930           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5931                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5932 
5933       END IF;
5934 
5935       -- 4955764
5936       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5937       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5938 
5939 
5940       XLA_AE_LINES_PKG.ValidateCurrentLine;
5941       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5942 
5943       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5944                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5945                ,p_balance_type_code => l_balance_type_code);
5946 
5947    END IF;
5948 
5949    -----------------------------------------------------------------------------------------
5950    -- 4262811 Multiperiod Accounting
5951    -----------------------------------------------------------------------------------------
5952      -- No MPA option is assigned.
5953 
5954 
5955 END IF;
5956 END IF;
5957 --
5958 
5959 --
5960 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5961    trace
5962       (p_msg      => 'END of AcctLineType_37'
5963       ,p_level    => C_LEVEL_PROCEDURE
5964       ,p_module   => l_log_module);
5965 END IF;
5966 --
5967 EXCEPTION
5968   WHEN xla_exceptions_pkg.application_exception THEN
5969       RAISE;
5970   WHEN OTHERS THEN
5971        xla_exceptions_pkg.raise_message
5972            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_37');
5973 END AcctLineType_37;
5974 --
5975 
5976 ---------------------------------------
5977 --
5978 -- PRIVATE FUNCTION
5979 --         AcctLineType_38
5980 --
5981 ---------------------------------------
5982 PROCEDURE AcctLineType_38 (
5983   p_application_id        IN NUMBER
5984  ,p_event_id              IN NUMBER
5985  ,p_calculate_acctd_flag  IN VARCHAR2
5986  ,p_calculate_g_l_flag    IN VARCHAR2
5987  ,p_actual_flag           IN OUT VARCHAR2
5988  ,p_balance_type_code     OUT VARCHAR2
5989  ,p_gain_or_loss_ref      OUT VARCHAR2
5990  
5991 --TRANSACTION_ID
5992  , p_source_1            IN NUMBER
5993 --Item Concatenated Segments
5994  , p_source_2            IN VARCHAR2
5995 --Transaction Quantity
5996  , p_source_3            IN NUMBER
5997 --Transaction Unit of Measure Code
5998  , p_source_4            IN VARCHAR2
5999 --Inventory Transaction Type Description
6000  , p_source_5            IN VARCHAR2
6001 --Transaction Distribution Account
6002  , p_source_20            IN NUMBER
6003 --DISTRIBUTION_IDENTIFIER
6004  , p_source_84            IN NUMBER
6005 --Distribution Type
6006  , p_source_85            IN VARCHAR2
6007  , p_source_85_meaning    IN VARCHAR2
6008 --Entered Currency Code
6009  , p_source_88            IN VARCHAR2
6010 --Entered Amount
6011  , p_source_91            IN NUMBER
6012 --Currency Conversion Date
6013  , p_source_92            IN DATE
6014 --Currency Conversion Rate
6015  , p_source_93            IN NUMBER
6016 --Currency Conversion Type
6017  , p_source_94            IN VARCHAR2
6018 --Accounted Amount
6019  , p_source_95            IN NUMBER
6020 --Accounting Line Type
6021  , p_source_97            IN NUMBER
6022 )
6023 IS
6024 
6025 l_component_type              VARCHAR2(80);
6026 l_component_code              VARCHAR2(30);
6027 l_component_type_code         VARCHAR2(1);
6028 l_component_appl_id           INTEGER;
6029 l_amb_context_code            VARCHAR2(30);
6030 l_entity_code                 VARCHAR2(30);
6031 l_event_class_code            VARCHAR2(30);
6032 l_ae_header_id                NUMBER;
6033 l_event_type_code             VARCHAR2(30);
6034 l_line_definition_code        VARCHAR2(30);
6035 l_line_definition_owner_code  VARCHAR2(1);
6036 --
6037 -- adr variables
6038 l_segment                     VARCHAR2(30);
6039 l_ccid                        NUMBER;
6040 l_adr_transaction_coa_id      NUMBER;
6041 l_adr_accounting_coa_id       NUMBER;
6042 l_adr_flexfield_segment_code  VARCHAR2(30);
6043 l_adr_flex_value_set_id       NUMBER;
6044 l_adr_value_type_code         VARCHAR2(30);
6045 l_adr_value_combination_id    NUMBER;
6046 l_adr_value_segment_code      VARCHAR2(30);
6047 
6048 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6049 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6050 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6051 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6052 
6053 -- 4262811 Variables ------------------------------------------------------------------------------------------
6054 l_entered_amt_idx             NUMBER;
6055 l_accted_amt_idx              NUMBER;
6056 l_acc_rev_flag                VARCHAR2(1);
6057 l_accrual_line_num            NUMBER;
6058 l_tmp_amt                     NUMBER;
6059 l_acc_rev_natural_side_code   VARCHAR2(1);
6060 
6061 l_num_entries                 NUMBER;
6062 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6063 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6064 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6065 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6066 l_recog_line_1                NUMBER;
6067 l_recog_line_2                NUMBER;
6068 
6069 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6070 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6071 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6072 
6073 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6074 
6075 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6076 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6077 
6078 ---------------------------------------------------------------------------------------------------------------
6079 
6080 
6081 --
6082 -- bulk performance
6083 --
6084 l_balance_type_code           VARCHAR2(1);
6085 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6086 l_log_module                  VARCHAR2(240);
6087 
6088 --
6089 -- Upgrade strategy
6090 --
6091 l_actual_upg_option           VARCHAR2(1);
6092 l_enc_upg_option           VARCHAR2(1);
6093 
6094 --
6095 BEGIN
6096 --
6097 IF g_log_enabled THEN
6098       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
6099 END IF;
6100 --
6101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6102 
6103       trace
6104          (p_msg      => 'BEGIN of AcctLineType_38'
6105          ,p_level    => C_LEVEL_PROCEDURE
6106          ,p_module   => l_log_module);
6107 
6108 END IF;
6109 --
6110 l_component_type             := 'AMB_JLT';
6111 l_component_code             := 'ACCRUAL';
6112 l_component_type_code        := 'S';
6113 l_component_appl_id          :=  707;
6114 l_amb_context_code           := 'DEFAULT';
6115 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
6116 l_event_class_code           := 'CON_INV_OWNR_TXFR';
6117 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
6118 l_line_definition_owner_code := 'S';
6119 l_line_definition_code       := 'PI_CON_INV_OWNR_TRFR';
6120 --
6121 l_balance_type_code          := 'A';
6122 l_segment                     := NULL;
6123 l_ccid                        := NULL;
6124 l_adr_transaction_coa_id      := NULL;
6125 l_adr_accounting_coa_id       := NULL;
6126 l_adr_flexfield_segment_code  := NULL;
6127 l_adr_flex_value_set_id       := NULL;
6128 l_adr_value_type_code         := NULL;
6129 l_adr_value_combination_id    := NULL;
6130 l_adr_value_segment_code      := NULL;
6131 
6132 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6133 l_bflow_class_code           := '';    -- 4219869 Business Flow
6134 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6135 l_budgetary_control_flag     := 'N';
6136 
6137 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6138 l_bflow_applied_to_amt       := NULL; -- 5132302
6139 l_entered_amt_idx            := NULL;          -- 4262811
6140 l_accted_amt_idx             := NULL;          -- 4262811
6141 l_acc_rev_flag               := NULL;          -- 4262811
6142 l_accrual_line_num           := NULL;          -- 4262811
6143 l_tmp_amt                    := NULL;          -- 4262811
6144 --
6145  
6146 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6147     l_balance_type_code <> 'B' THEN
6148 IF NVL(p_source_97,9E125) =  16
6149  THEN 
6150 
6151    --
6152    XLA_AE_LINES_PKG.SetNewLine;
6153 
6154    p_balance_type_code          := l_balance_type_code;
6155    -- set the flag so later we will know whether the gain loss line needs to be created
6156    
6157    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6158      p_actual_flag :='A';
6159    END IF;
6160 
6161    --
6162    -- bulk performance
6163    --
6164    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6165                                       p_header_num   => 0); -- 4262811
6166    --
6167    -- set accounting line options
6168    --
6169    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6170            p_natural_side_code          => 'D'
6171          , p_gain_or_loss_flag          => 'N'
6172          , p_gl_transfer_mode_code      => 'S'
6173          , p_acct_entry_type_code       => 'A'
6174          , p_switch_side_flag           => 'Y'
6175          , p_merge_duplicate_code       => 'N'
6176          );
6177    --
6178    l_acc_rev_natural_side_code := 'C';  -- 4262811
6179    -- 
6180    --
6181    -- set accounting line type info
6182    --
6183    xla_ae_lines_pkg.SetAcctLineType
6184       (p_component_type             => l_component_type
6185       ,p_event_type_code            => l_event_type_code
6186       ,p_line_definition_owner_code => l_line_definition_owner_code
6187       ,p_line_definition_code       => l_line_definition_code
6188       ,p_accounting_line_code       => l_component_code
6189       ,p_accounting_line_type_code  => l_component_type_code
6190       ,p_accounting_line_appl_id    => l_component_appl_id
6191       ,p_amb_context_code           => l_amb_context_code
6192       ,p_entity_code                => l_entity_code
6193       ,p_event_class_code           => l_event_class_code);
6194    --
6195    -- set accounting class
6196    --
6197    xla_ae_lines_pkg.SetAcctClass(
6198            p_accounting_class_code  => 'ACCRUAL'
6199          , p_ae_header_id           => l_ae_header_id
6200          );
6201 
6202    --
6203    -- set rounding class
6204    --
6205    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6206                       'ACCRUAL';
6207 
6208    --
6209    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6210    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6211    --
6212    -- bulk performance
6213    --
6214    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6215 
6216    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6217       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6218 
6219    -- 4955764
6220    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6221       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6222 
6223    -- 4458381 Public Sector Enh
6224    
6225    --
6226    -- set accounting attributes for the line type
6227    --
6228    l_entered_amt_idx := 3;
6229    l_accted_amt_idx  := 8;
6230    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6231    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6232    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
6233    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6234    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
6235    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6236    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
6237    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6238    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
6239    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6240    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
6241    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6242    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
6243    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6244    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
6245    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6246    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
6247 
6248    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6249    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6250 
6251    ---------------------------------------------------------------------------------------------------------------
6252    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6253    ---------------------------------------------------------------------------------------------------------------
6254    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6255 
6256    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6257    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6258 
6259    IF xla_accounting_cache_pkg.GetValueChar
6260          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6261          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6262    AND l_bflow_method_code = 'PRIOR_ENTRY'
6263 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6264    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6265          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6266        )
6267    THEN
6268          xla_ae_lines_pkg.BflowUpgEntry
6269            (p_business_method_code    => l_bflow_method_code
6270            ,p_business_class_code     => l_bflow_class_code
6271            ,p_balance_type            => l_balance_type_code);
6272    ELSE
6273       NULL;
6274 -- No business flow processing for business flow method of NONE.
6275    END IF;
6276 
6277    --
6278    -- call analytical criteria
6279    --
6280    
6281    --
6282    -- call description
6283    --
6284    
6285 xla_ae_lines_pkg.SetLineDescription(
6286    p_ae_header_id => l_ae_header_id
6287   ,p_description  => Description_1 (
6288      p_application_id         => p_application_id
6289    , p_ae_header_id           => l_ae_header_id 
6290 , p_source_1 => p_source_1
6291 , p_source_2 => p_source_2
6292 , p_source_3 => p_source_3
6293 , p_source_4 => p_source_4
6294 , p_source_5 => p_source_5
6295    )
6296 );
6297 
6298 
6299    --
6300    -- call ADRs
6301    -- Bug 4922099
6302    --
6303    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6304         (NVL(l_actual_upg_option, 'N') = 'O') OR
6305         (NVL(l_enc_upg_option, 'N') = 'O')
6306       )
6307    THEN
6308    NULL;
6309    --
6310    --
6311    
6312   l_ccid := AcctDerRule_16(
6313            p_application_id           => p_application_id
6314          , p_ae_header_id             => l_ae_header_id 
6315 , p_source_20 => p_source_20
6316          , x_transaction_coa_id       => l_adr_transaction_coa_id
6317          , x_accounting_coa_id        => l_adr_accounting_coa_id
6318          , x_value_type_code          => l_adr_value_type_code
6319          , p_side                     => 'NA'
6320    );
6321 
6322    xla_ae_lines_pkg.set_ccid(
6323     p_code_combination_id          => l_ccid
6324   , p_value_type_code              => l_adr_value_type_code
6325   , p_transaction_coa_id           => l_adr_transaction_coa_id
6326   , p_accounting_coa_id            => l_adr_accounting_coa_id
6327   , p_adr_code                     => 'PI_DISTRIBUTION'
6328   , p_adr_type_code                => 'S'
6329   , p_component_type               => l_component_type
6330   , p_component_code               => l_component_code
6331   , p_component_type_code          => l_component_type_code
6332   , p_component_appl_id            => l_component_appl_id
6333   , p_amb_context_code             => l_amb_context_code
6334   , p_side                         => 'NA'
6335   );
6336 
6337 
6338    --
6339    --
6340    END IF;
6341    --
6342    -- Bug 4922099
6343    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6344           (NVL(l_enc_upg_option, 'N') = 'O')
6345         ) AND
6346         (l_bflow_method_code = 'PRIOR_ENTRY')
6347       )
6348    THEN
6349       IF
6350       --
6351       1 = 2
6352       --
6353       THEN
6354       xla_accounting_err_pkg.build_message
6355                                     (p_appli_s_name            => 'XLA'
6356                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6357                                     ,p_token_1                 => 'LINE_NUMBER'
6358                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6359                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6360                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6361                                                                              l_component_type
6362                                                                             ,l_component_code
6363                                                                             ,l_component_type_code
6364                                                                             ,l_component_appl_id
6365                                                                             ,l_amb_context_code
6366                                                                             ,l_entity_code
6367                                                                             ,l_event_class_code
6368                                                                            )
6369                                     ,p_token_3                 => 'OWNER'
6370                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6371                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6372                                                                           ,p_lookup_code    => l_component_type_code
6373                                                                          )
6374                                     ,p_token_4                 => 'PRODUCT_NAME'
6375                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6376                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6377                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6378                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6379                                     ,p_ae_header_id            =>  NULL
6380                                        );
6381 
6382         IF (C_LEVEL_ERROR>= g_log_level) THEN
6383                  trace
6384                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6385                       ,p_level    => C_LEVEL_ERROR
6386                       ,p_module   => l_log_module);
6387         END IF;
6388       END IF;
6389    END IF;
6390    --
6391    --
6392    ------------------------------------------------------------------------------------------------
6393    -- 4219869 Business Flow
6394    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6395    -- Prior Entry.  Currently, the following code is always generated.
6396    ------------------------------------------------------------------------------------------------
6397    XLA_AE_LINES_PKG.ValidateCurrentLine;
6398 
6399    ------------------------------------------------------------------------------------
6400    -- 4219869 Business Flow
6401    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6402    ------------------------------------------------------------------------------------
6403    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6404 
6405    ----------------------------------------------------------------------------------
6406    -- 4219869 Business Flow
6407    -- Update journal entry status -- Need to generate this within IF <condition>
6408    ----------------------------------------------------------------------------------
6409    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6410          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6411          ,p_balance_type_code => l_balance_type_code
6412          );
6413 
6414    -------------------------------------------------------------------------------------------
6415    -- 4262811 - Generate the Accrual Reversal lines
6416    -------------------------------------------------------------------------------------------
6417    BEGIN
6418       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6419                               (g_array_event(p_event_id).array_value_num('header_index'));
6420       IF l_acc_rev_flag IS NULL THEN
6421          l_acc_rev_flag := 'N';
6422       END IF;
6423    EXCEPTION
6424       WHEN OTHERS THEN
6425          l_acc_rev_flag := 'N';
6426    END;
6427    --
6428    IF (l_acc_rev_flag = 'Y') THEN
6429 
6430        -- 4645092  ------------------------------------------------------------------------------
6431        -- To allow MPA report to determine if it should generate report process
6432        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6433        ------------------------------------------------------------------------------------------
6434 
6435        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6436        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6437    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6438    -- call ADRs
6439    -- Bug 4922099
6440    --
6441    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6442         (NVL(l_actual_upg_option, 'N') = 'O') OR
6443         (NVL(l_enc_upg_option, 'N') = 'O')
6444       )
6445    THEN
6446    NULL;
6447    --
6448    --
6449    
6450   l_ccid := AcctDerRule_16(
6451            p_application_id           => p_application_id
6452          , p_ae_header_id             => l_ae_header_id 
6453 , p_source_20 => p_source_20
6454          , x_transaction_coa_id       => l_adr_transaction_coa_id
6455          , x_accounting_coa_id        => l_adr_accounting_coa_id
6456          , x_value_type_code          => l_adr_value_type_code
6457          , p_side                     => 'NA'
6458    );
6459 
6460    xla_ae_lines_pkg.set_ccid(
6461     p_code_combination_id          => l_ccid
6462   , p_value_type_code              => l_adr_value_type_code
6463   , p_transaction_coa_id           => l_adr_transaction_coa_id
6464   , p_accounting_coa_id            => l_adr_accounting_coa_id
6465   , p_adr_code                     => 'PI_DISTRIBUTION'
6466   , p_adr_type_code                => 'S'
6467   , p_component_type               => l_component_type
6468   , p_component_code               => l_component_code
6469   , p_component_type_code          => l_component_type_code
6470   , p_component_appl_id            => l_component_appl_id
6471   , p_amb_context_code             => l_amb_context_code
6472   , p_side                         => 'NA'
6473   );
6474 
6475 
6476    --
6477    --
6478    END IF;
6479 
6480        --
6481        -- Update the line information that should be overwritten
6482        --
6483        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6484                                          p_header_num   => 1);
6485        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6486 
6487        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6488 
6489        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6490           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6491        END IF;
6492 
6493       --
6494       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6495       --
6496       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6497           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6498       ELSE
6499           ---------------------------------------------------------------------------------------------------
6500           -- 4262811a Switch Sign
6501           ---------------------------------------------------------------------------------------------------
6502           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6503           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6504                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6505           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6506                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6507           -- 5132302
6508           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6509                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6510 
6511       END IF;
6512 
6513       -- 4955764
6514       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6515       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6516 
6517 
6518       XLA_AE_LINES_PKG.ValidateCurrentLine;
6519       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6520 
6521       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6522                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6523                ,p_balance_type_code => l_balance_type_code);
6524 
6525    END IF;
6526 
6527    -----------------------------------------------------------------------------------------
6528    -- 4262811 Multiperiod Accounting
6529    -----------------------------------------------------------------------------------------
6530      -- No MPA option is assigned.
6531 
6532 
6533 END IF;
6534 END IF;
6535 --
6536 
6537 --
6538 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6539    trace
6540       (p_msg      => 'END of AcctLineType_38'
6541       ,p_level    => C_LEVEL_PROCEDURE
6542       ,p_module   => l_log_module);
6543 END IF;
6544 --
6545 EXCEPTION
6546   WHEN xla_exceptions_pkg.application_exception THEN
6547       RAISE;
6548   WHEN OTHERS THEN
6549        xla_exceptions_pkg.raise_message
6550            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_38');
6551 END AcctLineType_38;
6552 --
6553 
6554 ---------------------------------------
6555 --
6556 -- PRIVATE FUNCTION
6557 --         AcctLineType_39
6558 --
6559 ---------------------------------------
6560 PROCEDURE AcctLineType_39 (
6561   p_application_id        IN NUMBER
6562  ,p_event_id              IN NUMBER
6563  ,p_calculate_acctd_flag  IN VARCHAR2
6564  ,p_calculate_g_l_flag    IN VARCHAR2
6565  ,p_actual_flag           IN OUT VARCHAR2
6566  ,p_balance_type_code     OUT VARCHAR2
6567  ,p_gain_or_loss_ref      OUT VARCHAR2
6568  
6569 --Accrual Account for the Write Off
6570  , p_source_8            IN NUMBER
6571 --Distribution Type
6572  , p_source_85            IN VARCHAR2
6573  , p_source_85_meaning    IN VARCHAR2
6574 --Entered Currency Code
6575  , p_source_88            IN VARCHAR2
6576 --Entered Amount
6577  , p_source_91            IN NUMBER
6578 --Currency Conversion Date
6579  , p_source_92            IN DATE
6580 --Currency Conversion Rate
6581  , p_source_93            IN NUMBER
6582 --Currency Conversion Type
6583  , p_source_94            IN VARCHAR2
6584 --Accounted Amount
6585  , p_source_95            IN NUMBER
6586 --Line Number
6587  , p_source_98            IN NUMBER
6588 --WRITE_OFF_ID
6589  , p_source_99            IN NUMBER
6590 )
6591 IS
6592 
6593 l_component_type              VARCHAR2(80);
6594 l_component_code              VARCHAR2(30);
6595 l_component_type_code         VARCHAR2(1);
6596 l_component_appl_id           INTEGER;
6597 l_amb_context_code            VARCHAR2(30);
6598 l_entity_code                 VARCHAR2(30);
6599 l_event_class_code            VARCHAR2(30);
6600 l_ae_header_id                NUMBER;
6601 l_event_type_code             VARCHAR2(30);
6602 l_line_definition_code        VARCHAR2(30);
6603 l_line_definition_owner_code  VARCHAR2(1);
6604 --
6605 -- adr variables
6606 l_segment                     VARCHAR2(30);
6607 l_ccid                        NUMBER;
6608 l_adr_transaction_coa_id      NUMBER;
6609 l_adr_accounting_coa_id       NUMBER;
6610 l_adr_flexfield_segment_code  VARCHAR2(30);
6611 l_adr_flex_value_set_id       NUMBER;
6612 l_adr_value_type_code         VARCHAR2(30);
6613 l_adr_value_combination_id    NUMBER;
6614 l_adr_value_segment_code      VARCHAR2(30);
6615 
6616 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6617 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6618 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6619 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6620 
6621 -- 4262811 Variables ------------------------------------------------------------------------------------------
6622 l_entered_amt_idx             NUMBER;
6623 l_accted_amt_idx              NUMBER;
6624 l_acc_rev_flag                VARCHAR2(1);
6625 l_accrual_line_num            NUMBER;
6626 l_tmp_amt                     NUMBER;
6627 l_acc_rev_natural_side_code   VARCHAR2(1);
6628 
6629 l_num_entries                 NUMBER;
6630 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6631 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6632 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6633 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6634 l_recog_line_1                NUMBER;
6635 l_recog_line_2                NUMBER;
6636 
6637 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6638 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6639 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6640 
6641 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6642 
6643 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6644 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6645 
6646 ---------------------------------------------------------------------------------------------------------------
6647 
6648 
6649 --
6650 -- bulk performance
6651 --
6652 l_balance_type_code           VARCHAR2(1);
6653 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6654 l_log_module                  VARCHAR2(240);
6655 
6656 --
6657 -- Upgrade strategy
6658 --
6659 l_actual_upg_option           VARCHAR2(1);
6660 l_enc_upg_option           VARCHAR2(1);
6661 
6662 --
6663 BEGIN
6664 --
6665 IF g_log_enabled THEN
6666       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
6667 END IF;
6668 --
6669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6670 
6671       trace
6672          (p_msg      => 'BEGIN of AcctLineType_39'
6673          ,p_level    => C_LEVEL_PROCEDURE
6674          ,p_module   => l_log_module);
6675 
6676 END IF;
6677 --
6678 l_component_type             := 'AMB_JLT';
6679 l_component_code             := 'ACCRUAL';
6680 l_component_type_code        := 'S';
6681 l_component_appl_id          :=  707;
6682 l_amb_context_code           := 'DEFAULT';
6683 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
6684 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
6685 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
6686 l_line_definition_owner_code := 'S';
6687 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
6688 --
6689 l_balance_type_code          := 'A';
6690 l_segment                     := NULL;
6691 l_ccid                        := NULL;
6692 l_adr_transaction_coa_id      := NULL;
6693 l_adr_accounting_coa_id       := NULL;
6694 l_adr_flexfield_segment_code  := NULL;
6695 l_adr_flex_value_set_id       := NULL;
6696 l_adr_value_type_code         := NULL;
6697 l_adr_value_combination_id    := NULL;
6698 l_adr_value_segment_code      := NULL;
6699 
6700 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6701 l_bflow_class_code           := '';    -- 4219869 Business Flow
6702 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6703 l_budgetary_control_flag     := 'N';
6704 
6705 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6706 l_bflow_applied_to_amt       := NULL; -- 5132302
6707 l_entered_amt_idx            := NULL;          -- 4262811
6708 l_accted_amt_idx             := NULL;          -- 4262811
6709 l_acc_rev_flag               := NULL;          -- 4262811
6710 l_accrual_line_num           := NULL;          -- 4262811
6711 l_tmp_amt                    := NULL;          -- 4262811
6712 --
6713  
6714 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6715     l_balance_type_code <> 'B' THEN
6716 IF NVL(p_source_98,9E125) =  1
6717  THEN 
6718 
6719    --
6720    XLA_AE_LINES_PKG.SetNewLine;
6721 
6722    p_balance_type_code          := l_balance_type_code;
6723    -- set the flag so later we will know whether the gain loss line needs to be created
6724    
6725    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6726      p_actual_flag :='A';
6727    END IF;
6728 
6729    --
6730    -- bulk performance
6731    --
6732    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6733                                       p_header_num   => 0); -- 4262811
6734    --
6735    -- set accounting line options
6736    --
6737    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6738            p_natural_side_code          => 'D'
6739          , p_gain_or_loss_flag          => 'N'
6740          , p_gl_transfer_mode_code      => 'S'
6741          , p_acct_entry_type_code       => 'A'
6742          , p_switch_side_flag           => 'Y'
6743          , p_merge_duplicate_code       => 'N'
6744          );
6745    --
6746    l_acc_rev_natural_side_code := 'C';  -- 4262811
6747    -- 
6748    --
6749    -- set accounting line type info
6750    --
6751    xla_ae_lines_pkg.SetAcctLineType
6752       (p_component_type             => l_component_type
6753       ,p_event_type_code            => l_event_type_code
6754       ,p_line_definition_owner_code => l_line_definition_owner_code
6755       ,p_line_definition_code       => l_line_definition_code
6756       ,p_accounting_line_code       => l_component_code
6757       ,p_accounting_line_type_code  => l_component_type_code
6758       ,p_accounting_line_appl_id    => l_component_appl_id
6759       ,p_amb_context_code           => l_amb_context_code
6760       ,p_entity_code                => l_entity_code
6761       ,p_event_class_code           => l_event_class_code);
6762    --
6763    -- set accounting class
6764    --
6765    xla_ae_lines_pkg.SetAcctClass(
6766            p_accounting_class_code  => 'ACCRUAL'
6767          , p_ae_header_id           => l_ae_header_id
6768          );
6769 
6770    --
6771    -- set rounding class
6772    --
6773    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6774                       'ACCRUAL';
6775 
6776    --
6777    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6778    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6779    --
6780    -- bulk performance
6781    --
6782    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6783 
6784    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6785       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6786 
6787    -- 4955764
6788    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6789       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6790 
6791    -- 4458381 Public Sector Enh
6792    
6793    --
6794    -- set accounting attributes for the line type
6795    --
6796    l_entered_amt_idx := 3;
6797    l_accted_amt_idx  := 8;
6798    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6799    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6800    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_99);
6801    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6802    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
6803    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6804    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
6805    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6806    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
6807    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6808    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
6809    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6810    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
6811    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6812    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
6813    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6814    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
6815 
6816    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6817    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6818 
6819    ---------------------------------------------------------------------------------------------------------------
6820    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6821    ---------------------------------------------------------------------------------------------------------------
6822    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6823 
6824    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6825    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6826 
6827    IF xla_accounting_cache_pkg.GetValueChar
6828          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6829          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6830    AND l_bflow_method_code = 'PRIOR_ENTRY'
6831 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6832    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6833          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6834        )
6835    THEN
6836          xla_ae_lines_pkg.BflowUpgEntry
6837            (p_business_method_code    => l_bflow_method_code
6838            ,p_business_class_code     => l_bflow_class_code
6839            ,p_balance_type            => l_balance_type_code);
6840    ELSE
6841       NULL;
6842 -- No business flow processing for business flow method of NONE.
6843    END IF;
6844 
6845    --
6846    -- call analytical criteria
6847    --
6848    
6849    --
6850    -- call description
6851    --
6852    -- No description or it is inherited.
6853    --
6854    -- call ADRs
6855    -- Bug 4922099
6856    --
6857    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6858         (NVL(l_actual_upg_option, 'N') = 'O') OR
6859         (NVL(l_enc_upg_option, 'N') = 'O')
6860       )
6861    THEN
6862    NULL;
6863    --
6864    --
6865    
6866   l_ccid := AcctDerRule_3(
6867            p_application_id           => p_application_id
6868          , p_ae_header_id             => l_ae_header_id 
6869 , p_source_8 => p_source_8
6870          , x_transaction_coa_id       => l_adr_transaction_coa_id
6871          , x_accounting_coa_id        => l_adr_accounting_coa_id
6872          , x_value_type_code          => l_adr_value_type_code
6873          , p_side                     => 'NA'
6874    );
6875 
6876    xla_ae_lines_pkg.set_ccid(
6877     p_code_combination_id          => l_ccid
6878   , p_value_type_code              => l_adr_value_type_code
6879   , p_transaction_coa_id           => l_adr_transaction_coa_id
6880   , p_accounting_coa_id            => l_adr_accounting_coa_id
6881   , p_adr_code                     => 'CST_AWO_ACCRUAL'
6882   , p_adr_type_code                => 'S'
6883   , p_component_type               => l_component_type
6884   , p_component_code               => l_component_code
6885   , p_component_type_code          => l_component_type_code
6886   , p_component_appl_id            => l_component_appl_id
6887   , p_amb_context_code             => l_amb_context_code
6888   , p_side                         => 'NA'
6889   );
6890 
6891 
6892    --
6893    --
6894    END IF;
6895    --
6896    -- Bug 4922099
6897    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6898           (NVL(l_enc_upg_option, 'N') = 'O')
6899         ) AND
6900         (l_bflow_method_code = 'PRIOR_ENTRY')
6901       )
6902    THEN
6903       IF
6904       --
6905       1 = 2
6906       --
6907       THEN
6908       xla_accounting_err_pkg.build_message
6909                                     (p_appli_s_name            => 'XLA'
6910                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6911                                     ,p_token_1                 => 'LINE_NUMBER'
6912                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6913                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6914                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6915                                                                              l_component_type
6916                                                                             ,l_component_code
6917                                                                             ,l_component_type_code
6918                                                                             ,l_component_appl_id
6919                                                                             ,l_amb_context_code
6920                                                                             ,l_entity_code
6921                                                                             ,l_event_class_code
6922                                                                            )
6923                                     ,p_token_3                 => 'OWNER'
6924                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6925                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6926                                                                           ,p_lookup_code    => l_component_type_code
6927                                                                          )
6928                                     ,p_token_4                 => 'PRODUCT_NAME'
6929                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6930                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6931                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6932                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6933                                     ,p_ae_header_id            =>  NULL
6934                                        );
6935 
6936         IF (C_LEVEL_ERROR>= g_log_level) THEN
6937                  trace
6938                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6939                       ,p_level    => C_LEVEL_ERROR
6940                       ,p_module   => l_log_module);
6941         END IF;
6942       END IF;
6943    END IF;
6944    --
6945    --
6946    ------------------------------------------------------------------------------------------------
6947    -- 4219869 Business Flow
6948    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6949    -- Prior Entry.  Currently, the following code is always generated.
6950    ------------------------------------------------------------------------------------------------
6951    XLA_AE_LINES_PKG.ValidateCurrentLine;
6952 
6953    ------------------------------------------------------------------------------------
6954    -- 4219869 Business Flow
6955    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6956    ------------------------------------------------------------------------------------
6957    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6958 
6959    ----------------------------------------------------------------------------------
6960    -- 4219869 Business Flow
6961    -- Update journal entry status -- Need to generate this within IF <condition>
6962    ----------------------------------------------------------------------------------
6963    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6964          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6965          ,p_balance_type_code => l_balance_type_code
6966          );
6967 
6968    -------------------------------------------------------------------------------------------
6969    -- 4262811 - Generate the Accrual Reversal lines
6970    -------------------------------------------------------------------------------------------
6971    BEGIN
6972       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6973                               (g_array_event(p_event_id).array_value_num('header_index'));
6974       IF l_acc_rev_flag IS NULL THEN
6975          l_acc_rev_flag := 'N';
6976       END IF;
6977    EXCEPTION
6978       WHEN OTHERS THEN
6979          l_acc_rev_flag := 'N';
6980    END;
6981    --
6982    IF (l_acc_rev_flag = 'Y') THEN
6983 
6984        -- 4645092  ------------------------------------------------------------------------------
6985        -- To allow MPA report to determine if it should generate report process
6986        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6987        ------------------------------------------------------------------------------------------
6988 
6989        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6990        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6991    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6992    -- call ADRs
6993    -- Bug 4922099
6994    --
6995    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6996         (NVL(l_actual_upg_option, 'N') = 'O') OR
6997         (NVL(l_enc_upg_option, 'N') = 'O')
6998       )
6999    THEN
7000    NULL;
7001    --
7002    --
7003    
7004   l_ccid := AcctDerRule_3(
7005            p_application_id           => p_application_id
7006          , p_ae_header_id             => l_ae_header_id 
7007 , p_source_8 => p_source_8
7008          , x_transaction_coa_id       => l_adr_transaction_coa_id
7009          , x_accounting_coa_id        => l_adr_accounting_coa_id
7010          , x_value_type_code          => l_adr_value_type_code
7011          , p_side                     => 'NA'
7012    );
7013 
7014    xla_ae_lines_pkg.set_ccid(
7015     p_code_combination_id          => l_ccid
7016   , p_value_type_code              => l_adr_value_type_code
7017   , p_transaction_coa_id           => l_adr_transaction_coa_id
7018   , p_accounting_coa_id            => l_adr_accounting_coa_id
7019   , p_adr_code                     => 'CST_AWO_ACCRUAL'
7020   , p_adr_type_code                => 'S'
7021   , p_component_type               => l_component_type
7022   , p_component_code               => l_component_code
7023   , p_component_type_code          => l_component_type_code
7024   , p_component_appl_id            => l_component_appl_id
7025   , p_amb_context_code             => l_amb_context_code
7026   , p_side                         => 'NA'
7027   );
7028 
7029 
7030    --
7031    --
7032    END IF;
7033 
7034        --
7035        -- Update the line information that should be overwritten
7036        --
7037        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7038                                          p_header_num   => 1);
7039        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7040 
7041        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7042 
7043        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7044           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7045        END IF;
7046 
7047       --
7048       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7049       --
7050       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7051           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7052       ELSE
7053           ---------------------------------------------------------------------------------------------------
7054           -- 4262811a Switch Sign
7055           ---------------------------------------------------------------------------------------------------
7056           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7057           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7058                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7059           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7060                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7061           -- 5132302
7062           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7063                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7064 
7065       END IF;
7066 
7067       -- 4955764
7068       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7069       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7070 
7071 
7072       XLA_AE_LINES_PKG.ValidateCurrentLine;
7073       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7074 
7075       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7076                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7077                ,p_balance_type_code => l_balance_type_code);
7078 
7079    END IF;
7080 
7081    -----------------------------------------------------------------------------------------
7082    -- 4262811 Multiperiod Accounting
7083    -----------------------------------------------------------------------------------------
7084      -- No MPA option is assigned.
7085 
7086 
7087 END IF;
7088 END IF;
7089 --
7090 
7091 --
7092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7093    trace
7094       (p_msg      => 'END of AcctLineType_39'
7095       ,p_level    => C_LEVEL_PROCEDURE
7096       ,p_module   => l_log_module);
7097 END IF;
7098 --
7099 EXCEPTION
7100   WHEN xla_exceptions_pkg.application_exception THEN
7101       RAISE;
7102   WHEN OTHERS THEN
7103        xla_exceptions_pkg.raise_message
7104            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_39');
7105 END AcctLineType_39;
7106 --
7107 
7108 ---------------------------------------
7109 --
7110 -- PRIVATE FUNCTION
7111 --         AcctLineType_40
7112 --
7113 ---------------------------------------
7114 PROCEDURE AcctLineType_40 (
7115   p_application_id        IN NUMBER
7116  ,p_event_id              IN NUMBER
7117  ,p_calculate_acctd_flag  IN VARCHAR2
7118  ,p_calculate_g_l_flag    IN VARCHAR2
7119  ,p_actual_flag           IN OUT VARCHAR2
7120  ,p_balance_type_code     OUT VARCHAR2
7121  ,p_gain_or_loss_ref      OUT VARCHAR2
7122  
7123 --Cost Management Default Account
7124  , p_source_11            IN NUMBER
7125 --DISTRIBUTION_IDENTIFIER
7126  , p_source_84            IN NUMBER
7127 --Distribution Type
7128  , p_source_85            IN VARCHAR2
7129  , p_source_85_meaning    IN VARCHAR2
7130 --Entered Currency Code
7131  , p_source_88            IN VARCHAR2
7132 --Entered Amount
7133  , p_source_91            IN NUMBER
7134 --Currency Conversion Date
7135  , p_source_92            IN DATE
7136 --Currency Conversion Rate
7137  , p_source_93            IN NUMBER
7138 --Currency Conversion Type
7139  , p_source_94            IN VARCHAR2
7140 --Accounted Amount
7141  , p_source_95            IN NUMBER
7142 --Accounting Line Type
7143  , p_source_97            IN NUMBER
7144 )
7145 IS
7146 
7147 l_component_type              VARCHAR2(80);
7148 l_component_code              VARCHAR2(30);
7149 l_component_type_code         VARCHAR2(1);
7150 l_component_appl_id           INTEGER;
7151 l_amb_context_code            VARCHAR2(30);
7152 l_entity_code                 VARCHAR2(30);
7153 l_event_class_code            VARCHAR2(30);
7154 l_ae_header_id                NUMBER;
7155 l_event_type_code             VARCHAR2(30);
7156 l_line_definition_code        VARCHAR2(30);
7157 l_line_definition_owner_code  VARCHAR2(1);
7158 --
7159 -- adr variables
7160 l_segment                     VARCHAR2(30);
7161 l_ccid                        NUMBER;
7162 l_adr_transaction_coa_id      NUMBER;
7163 l_adr_accounting_coa_id       NUMBER;
7164 l_adr_flexfield_segment_code  VARCHAR2(30);
7165 l_adr_flex_value_set_id       NUMBER;
7166 l_adr_value_type_code         VARCHAR2(30);
7167 l_adr_value_combination_id    NUMBER;
7168 l_adr_value_segment_code      VARCHAR2(30);
7169 
7170 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7171 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7172 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7173 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7174 
7175 -- 4262811 Variables ------------------------------------------------------------------------------------------
7176 l_entered_amt_idx             NUMBER;
7177 l_accted_amt_idx              NUMBER;
7178 l_acc_rev_flag                VARCHAR2(1);
7179 l_accrual_line_num            NUMBER;
7180 l_tmp_amt                     NUMBER;
7181 l_acc_rev_natural_side_code   VARCHAR2(1);
7182 
7183 l_num_entries                 NUMBER;
7184 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7185 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7186 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7187 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7188 l_recog_line_1                NUMBER;
7189 l_recog_line_2                NUMBER;
7190 
7191 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7192 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7193 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7194 
7195 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7196 
7197 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7198 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7199 
7200 ---------------------------------------------------------------------------------------------------------------
7201 
7202 
7203 --
7204 -- bulk performance
7205 --
7206 l_balance_type_code           VARCHAR2(1);
7207 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7208 l_log_module                  VARCHAR2(240);
7209 
7210 --
7211 -- Upgrade strategy
7212 --
7213 l_actual_upg_option           VARCHAR2(1);
7214 l_enc_upg_option           VARCHAR2(1);
7215 
7216 --
7217 BEGIN
7218 --
7219 IF g_log_enabled THEN
7220       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
7221 END IF;
7222 --
7223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7224 
7225       trace
7226          (p_msg      => 'BEGIN of AcctLineType_40'
7227          ,p_level    => C_LEVEL_PROCEDURE
7228          ,p_module   => l_log_module);
7229 
7230 END IF;
7231 --
7232 l_component_type             := 'AMB_JLT';
7233 l_component_code             := 'ACCRUAL';
7234 l_component_type_code        := 'S';
7235 l_component_appl_id          :=  707;
7236 l_amb_context_code           := 'DEFAULT';
7237 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
7238 l_event_class_code           := 'RETR_PRICE_ADJ';
7239 l_event_type_code            := 'RETR_PRICE_ADJ_ALL';
7240 l_line_definition_owner_code := 'S';
7241 l_line_definition_code       := 'RETR_PRICE_ADJ';
7242 --
7243 l_balance_type_code          := 'A';
7244 l_segment                     := NULL;
7245 l_ccid                        := NULL;
7246 l_adr_transaction_coa_id      := NULL;
7247 l_adr_accounting_coa_id       := NULL;
7248 l_adr_flexfield_segment_code  := NULL;
7249 l_adr_flex_value_set_id       := NULL;
7250 l_adr_value_type_code         := NULL;
7251 l_adr_value_combination_id    := NULL;
7252 l_adr_value_segment_code      := NULL;
7253 
7254 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7255 l_bflow_class_code           := '';    -- 4219869 Business Flow
7256 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7257 l_budgetary_control_flag     := 'N';
7258 
7259 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7260 l_bflow_applied_to_amt       := NULL; -- 5132302
7261 l_entered_amt_idx            := NULL;          -- 4262811
7262 l_accted_amt_idx             := NULL;          -- 4262811
7263 l_acc_rev_flag               := NULL;          -- 4262811
7264 l_accrual_line_num           := NULL;          -- 4262811
7265 l_tmp_amt                    := NULL;          -- 4262811
7266 --
7267  
7268 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7269     l_balance_type_code <> 'B' THEN
7270 IF NVL(p_source_97,9E125) =  16
7271  THEN 
7272 
7273    --
7274    XLA_AE_LINES_PKG.SetNewLine;
7275 
7276    p_balance_type_code          := l_balance_type_code;
7277    -- set the flag so later we will know whether the gain loss line needs to be created
7278    
7279    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7280      p_actual_flag :='A';
7281    END IF;
7282 
7283    --
7284    -- bulk performance
7285    --
7286    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7287                                       p_header_num   => 0); -- 4262811
7288    --
7289    -- set accounting line options
7290    --
7291    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7292            p_natural_side_code          => 'D'
7293          , p_gain_or_loss_flag          => 'N'
7294          , p_gl_transfer_mode_code      => 'S'
7295          , p_acct_entry_type_code       => 'A'
7296          , p_switch_side_flag           => 'Y'
7297          , p_merge_duplicate_code       => 'N'
7298          );
7299    --
7300    l_acc_rev_natural_side_code := 'C';  -- 4262811
7301    -- 
7302    --
7303    -- set accounting line type info
7304    --
7305    xla_ae_lines_pkg.SetAcctLineType
7306       (p_component_type             => l_component_type
7307       ,p_event_type_code            => l_event_type_code
7308       ,p_line_definition_owner_code => l_line_definition_owner_code
7309       ,p_line_definition_code       => l_line_definition_code
7310       ,p_accounting_line_code       => l_component_code
7311       ,p_accounting_line_type_code  => l_component_type_code
7312       ,p_accounting_line_appl_id    => l_component_appl_id
7313       ,p_amb_context_code           => l_amb_context_code
7314       ,p_entity_code                => l_entity_code
7315       ,p_event_class_code           => l_event_class_code);
7316    --
7317    -- set accounting class
7318    --
7319    xla_ae_lines_pkg.SetAcctClass(
7320            p_accounting_class_code  => 'ACCRUAL'
7321          , p_ae_header_id           => l_ae_header_id
7322          );
7323 
7324    --
7325    -- set rounding class
7326    --
7327    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7328                       'ACCRUAL';
7329 
7330    --
7331    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7332    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7333    --
7334    -- bulk performance
7335    --
7336    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7337 
7338    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7339       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7340 
7341    -- 4955764
7342    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7343       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7344 
7345    -- 4458381 Public Sector Enh
7346    
7347    --
7348    -- set accounting attributes for the line type
7349    --
7350    l_entered_amt_idx := 3;
7351    l_accted_amt_idx  := 8;
7352    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7353    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7354    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
7355    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7356    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
7357    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7358    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
7359    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7360    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
7361    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7362    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
7363    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7364    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
7365    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7366    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
7367    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7368    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
7369 
7370    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7371    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7372 
7373    ---------------------------------------------------------------------------------------------------------------
7374    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7375    ---------------------------------------------------------------------------------------------------------------
7376    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7377 
7378    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7379    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7380 
7381    IF xla_accounting_cache_pkg.GetValueChar
7382          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7383          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7384    AND l_bflow_method_code = 'PRIOR_ENTRY'
7385 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7386    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7387          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7388        )
7389    THEN
7390          xla_ae_lines_pkg.BflowUpgEntry
7391            (p_business_method_code    => l_bflow_method_code
7392            ,p_business_class_code     => l_bflow_class_code
7393            ,p_balance_type            => l_balance_type_code);
7394    ELSE
7395       NULL;
7396 -- No business flow processing for business flow method of NONE.
7397    END IF;
7398 
7399    --
7400    -- call analytical criteria
7401    --
7402    
7403    --
7404    -- call description
7405    --
7406    -- No description or it is inherited.
7407    --
7408    -- call ADRs
7409    -- Bug 4922099
7410    --
7411    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7412         (NVL(l_actual_upg_option, 'N') = 'O') OR
7413         (NVL(l_enc_upg_option, 'N') = 'O')
7414       )
7415    THEN
7416    NULL;
7417    --
7418    --
7419    
7420   l_ccid := AcctDerRule_6(
7421            p_application_id           => p_application_id
7422          , p_ae_header_id             => l_ae_header_id 
7423 , p_source_11 => p_source_11
7424          , x_transaction_coa_id       => l_adr_transaction_coa_id
7425          , x_accounting_coa_id        => l_adr_accounting_coa_id
7426          , x_value_type_code          => l_adr_value_type_code
7427          , p_side                     => 'NA'
7428    );
7429 
7430    xla_ae_lines_pkg.set_ccid(
7431     p_code_combination_id          => l_ccid
7432   , p_value_type_code              => l_adr_value_type_code
7433   , p_transaction_coa_id           => l_adr_transaction_coa_id
7434   , p_accounting_coa_id            => l_adr_accounting_coa_id
7435   , p_adr_code                     => 'CST_DEFAULT'
7436   , p_adr_type_code                => 'S'
7437   , p_component_type               => l_component_type
7438   , p_component_code               => l_component_code
7439   , p_component_type_code          => l_component_type_code
7440   , p_component_appl_id            => l_component_appl_id
7441   , p_amb_context_code             => l_amb_context_code
7442   , p_side                         => 'NA'
7443   );
7444 
7445 
7446    --
7447    --
7448    END IF;
7449    --
7450    -- Bug 4922099
7451    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7452           (NVL(l_enc_upg_option, 'N') = 'O')
7453         ) AND
7454         (l_bflow_method_code = 'PRIOR_ENTRY')
7455       )
7456    THEN
7457       IF
7458       --
7459       1 = 2
7460       --
7461       THEN
7462       xla_accounting_err_pkg.build_message
7463                                     (p_appli_s_name            => 'XLA'
7464                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7465                                     ,p_token_1                 => 'LINE_NUMBER'
7466                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7467                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7468                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7469                                                                              l_component_type
7470                                                                             ,l_component_code
7471                                                                             ,l_component_type_code
7472                                                                             ,l_component_appl_id
7473                                                                             ,l_amb_context_code
7474                                                                             ,l_entity_code
7475                                                                             ,l_event_class_code
7476                                                                            )
7477                                     ,p_token_3                 => 'OWNER'
7478                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7479                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7480                                                                           ,p_lookup_code    => l_component_type_code
7481                                                                          )
7482                                     ,p_token_4                 => 'PRODUCT_NAME'
7483                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7484                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7485                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7486                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7487                                     ,p_ae_header_id            =>  NULL
7488                                        );
7489 
7490         IF (C_LEVEL_ERROR>= g_log_level) THEN
7491                  trace
7492                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7493                       ,p_level    => C_LEVEL_ERROR
7494                       ,p_module   => l_log_module);
7495         END IF;
7496       END IF;
7497    END IF;
7498    --
7499    --
7500    ------------------------------------------------------------------------------------------------
7501    -- 4219869 Business Flow
7502    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7503    -- Prior Entry.  Currently, the following code is always generated.
7504    ------------------------------------------------------------------------------------------------
7505    XLA_AE_LINES_PKG.ValidateCurrentLine;
7506 
7507    ------------------------------------------------------------------------------------
7508    -- 4219869 Business Flow
7509    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7510    ------------------------------------------------------------------------------------
7511    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7512 
7513    ----------------------------------------------------------------------------------
7514    -- 4219869 Business Flow
7515    -- Update journal entry status -- Need to generate this within IF <condition>
7516    ----------------------------------------------------------------------------------
7517    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7518          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7519          ,p_balance_type_code => l_balance_type_code
7520          );
7521 
7522    -------------------------------------------------------------------------------------------
7523    -- 4262811 - Generate the Accrual Reversal lines
7524    -------------------------------------------------------------------------------------------
7525    BEGIN
7526       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7527                               (g_array_event(p_event_id).array_value_num('header_index'));
7528       IF l_acc_rev_flag IS NULL THEN
7529          l_acc_rev_flag := 'N';
7530       END IF;
7531    EXCEPTION
7532       WHEN OTHERS THEN
7533          l_acc_rev_flag := 'N';
7534    END;
7535    --
7536    IF (l_acc_rev_flag = 'Y') THEN
7537 
7538        -- 4645092  ------------------------------------------------------------------------------
7539        -- To allow MPA report to determine if it should generate report process
7540        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7541        ------------------------------------------------------------------------------------------
7542 
7543        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7544        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7545    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7546    -- call ADRs
7547    -- Bug 4922099
7548    --
7549    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7550         (NVL(l_actual_upg_option, 'N') = 'O') OR
7551         (NVL(l_enc_upg_option, 'N') = 'O')
7552       )
7553    THEN
7554    NULL;
7555    --
7556    --
7557    
7558   l_ccid := AcctDerRule_6(
7559            p_application_id           => p_application_id
7560          , p_ae_header_id             => l_ae_header_id 
7561 , p_source_11 => p_source_11
7562          , x_transaction_coa_id       => l_adr_transaction_coa_id
7563          , x_accounting_coa_id        => l_adr_accounting_coa_id
7564          , x_value_type_code          => l_adr_value_type_code
7565          , p_side                     => 'NA'
7566    );
7567 
7568    xla_ae_lines_pkg.set_ccid(
7569     p_code_combination_id          => l_ccid
7570   , p_value_type_code              => l_adr_value_type_code
7571   , p_transaction_coa_id           => l_adr_transaction_coa_id
7572   , p_accounting_coa_id            => l_adr_accounting_coa_id
7573   , p_adr_code                     => 'CST_DEFAULT'
7574   , p_adr_type_code                => 'S'
7575   , p_component_type               => l_component_type
7576   , p_component_code               => l_component_code
7577   , p_component_type_code          => l_component_type_code
7578   , p_component_appl_id            => l_component_appl_id
7579   , p_amb_context_code             => l_amb_context_code
7580   , p_side                         => 'NA'
7581   );
7582 
7583 
7584    --
7585    --
7586    END IF;
7587 
7588        --
7589        -- Update the line information that should be overwritten
7590        --
7591        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7592                                          p_header_num   => 1);
7593        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7594 
7595        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7596 
7597        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7598           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7599        END IF;
7600 
7601       --
7602       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7603       --
7604       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7605           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7606       ELSE
7607           ---------------------------------------------------------------------------------------------------
7608           -- 4262811a Switch Sign
7609           ---------------------------------------------------------------------------------------------------
7610           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7611           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7612                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7613           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7614                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7615           -- 5132302
7616           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7617                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7618 
7619       END IF;
7620 
7621       -- 4955764
7622       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7623       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7624 
7625 
7626       XLA_AE_LINES_PKG.ValidateCurrentLine;
7627       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7628 
7629       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7630                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7631                ,p_balance_type_code => l_balance_type_code);
7632 
7633    END IF;
7634 
7635    -----------------------------------------------------------------------------------------
7636    -- 4262811 Multiperiod Accounting
7637    -----------------------------------------------------------------------------------------
7638      -- No MPA option is assigned.
7639 
7640 
7641 END IF;
7642 END IF;
7643 --
7644 
7645 --
7646 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7647    trace
7648       (p_msg      => 'END of AcctLineType_40'
7649       ,p_level    => C_LEVEL_PROCEDURE
7650       ,p_module   => l_log_module);
7651 END IF;
7652 --
7653 EXCEPTION
7654   WHEN xla_exceptions_pkg.application_exception THEN
7655       RAISE;
7656   WHEN OTHERS THEN
7657        xla_exceptions_pkg.raise_message
7658            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_40');
7659 END AcctLineType_40;
7660 --
7661 
7662 ---------------------------------------
7663 --
7664 -- PRIVATE FUNCTION
7665 --         AcctLineType_41
7666 --
7667 ---------------------------------------
7668 PROCEDURE AcctLineType_41 (
7669   p_application_id        IN NUMBER
7670  ,p_event_id              IN NUMBER
7671  ,p_calculate_acctd_flag  IN VARCHAR2
7672  ,p_calculate_g_l_flag    IN VARCHAR2
7673  ,p_actual_flag           IN OUT VARCHAR2
7674  ,p_balance_type_code     OUT VARCHAR2
7675  ,p_gain_or_loss_ref      OUT VARCHAR2
7676  
7677 --Cost Management Default Account
7678  , p_source_11            IN NUMBER
7679 --Receiving Accounting Line Type
7680  , p_source_78            IN VARCHAR2
7681 --DISTRIBUTION_IDENTIFIER
7682  , p_source_84            IN NUMBER
7683 --Distribution Type
7684  , p_source_85            IN VARCHAR2
7685  , p_source_85_meaning    IN VARCHAR2
7686 --Entered Currency Code
7687  , p_source_88            IN VARCHAR2
7688 --Entered Amount
7689  , p_source_91            IN NUMBER
7690 --Currency Conversion Date
7691  , p_source_92            IN DATE
7692 --Currency Conversion Rate
7693  , p_source_93            IN NUMBER
7694 --Currency Conversion Type
7695  , p_source_94            IN VARCHAR2
7696 --Accounted Amount
7697  , p_source_95            IN NUMBER
7698 )
7699 IS
7700 
7701 l_component_type              VARCHAR2(80);
7702 l_component_code              VARCHAR2(30);
7703 l_component_type_code         VARCHAR2(1);
7704 l_component_appl_id           INTEGER;
7705 l_amb_context_code            VARCHAR2(30);
7706 l_entity_code                 VARCHAR2(30);
7707 l_event_class_code            VARCHAR2(30);
7708 l_ae_header_id                NUMBER;
7709 l_event_type_code             VARCHAR2(30);
7710 l_line_definition_code        VARCHAR2(30);
7711 l_line_definition_owner_code  VARCHAR2(1);
7712 --
7713 -- adr variables
7714 l_segment                     VARCHAR2(30);
7715 l_ccid                        NUMBER;
7716 l_adr_transaction_coa_id      NUMBER;
7717 l_adr_accounting_coa_id       NUMBER;
7718 l_adr_flexfield_segment_code  VARCHAR2(30);
7719 l_adr_flex_value_set_id       NUMBER;
7720 l_adr_value_type_code         VARCHAR2(30);
7721 l_adr_value_combination_id    NUMBER;
7722 l_adr_value_segment_code      VARCHAR2(30);
7723 
7724 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7725 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7726 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7727 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7728 
7729 -- 4262811 Variables ------------------------------------------------------------------------------------------
7730 l_entered_amt_idx             NUMBER;
7731 l_accted_amt_idx              NUMBER;
7732 l_acc_rev_flag                VARCHAR2(1);
7733 l_accrual_line_num            NUMBER;
7734 l_tmp_amt                     NUMBER;
7735 l_acc_rev_natural_side_code   VARCHAR2(1);
7736 
7737 l_num_entries                 NUMBER;
7738 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7739 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7740 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7741 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7742 l_recog_line_1                NUMBER;
7743 l_recog_line_2                NUMBER;
7744 
7745 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7746 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7747 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7748 
7749 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7750 
7751 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7752 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7753 
7754 ---------------------------------------------------------------------------------------------------------------
7755 
7756 
7757 --
7758 -- bulk performance
7759 --
7760 l_balance_type_code           VARCHAR2(1);
7761 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7762 l_log_module                  VARCHAR2(240);
7763 
7764 --
7765 -- Upgrade strategy
7766 --
7767 l_actual_upg_option           VARCHAR2(1);
7768 l_enc_upg_option           VARCHAR2(1);
7769 
7770 --
7771 BEGIN
7772 --
7773 IF g_log_enabled THEN
7774       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
7775 END IF;
7776 --
7777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7778 
7779       trace
7780          (p_msg      => 'BEGIN of AcctLineType_41'
7781          ,p_level    => C_LEVEL_PROCEDURE
7782          ,p_module   => l_log_module);
7783 
7784 END IF;
7785 --
7786 l_component_type             := 'AMB_JLT';
7787 l_component_code             := 'ACCRUAL';
7788 l_component_type_code        := 'S';
7789 l_component_appl_id          :=  707;
7790 l_amb_context_code           := 'DEFAULT';
7791 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
7792 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
7793 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
7794 l_line_definition_owner_code := 'S';
7795 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
7796 --
7797 l_balance_type_code          := 'A';
7798 l_segment                     := NULL;
7799 l_ccid                        := NULL;
7800 l_adr_transaction_coa_id      := NULL;
7801 l_adr_accounting_coa_id       := NULL;
7802 l_adr_flexfield_segment_code  := NULL;
7803 l_adr_flex_value_set_id       := NULL;
7804 l_adr_value_type_code         := NULL;
7805 l_adr_value_combination_id    := NULL;
7806 l_adr_value_segment_code      := NULL;
7807 
7808 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7809 l_bflow_class_code           := '';    -- 4219869 Business Flow
7810 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7811 l_budgetary_control_flag     := 'N';
7812 
7813 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7814 l_bflow_applied_to_amt       := NULL; -- 5132302
7815 l_entered_amt_idx            := NULL;          -- 4262811
7816 l_accted_amt_idx             := NULL;          -- 4262811
7817 l_acc_rev_flag               := NULL;          -- 4262811
7818 l_accrual_line_num           := NULL;          -- 4262811
7819 l_tmp_amt                    := NULL;          -- 4262811
7820 --
7821  
7822 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7823     l_balance_type_code <> 'B' THEN
7824 IF NVL(p_source_78,'
7825 ') =  'Accrual'
7826  THEN 
7827 
7828    --
7829    XLA_AE_LINES_PKG.SetNewLine;
7830 
7831    p_balance_type_code          := l_balance_type_code;
7832    -- set the flag so later we will know whether the gain loss line needs to be created
7833    
7834    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7835      p_actual_flag :='A';
7836    END IF;
7837 
7838    --
7839    -- bulk performance
7840    --
7841    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7842                                       p_header_num   => 0); -- 4262811
7843    --
7844    -- set accounting line options
7845    --
7846    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7847            p_natural_side_code          => 'D'
7848          , p_gain_or_loss_flag          => 'N'
7849          , p_gl_transfer_mode_code      => 'S'
7850          , p_acct_entry_type_code       => 'A'
7851          , p_switch_side_flag           => 'Y'
7852          , p_merge_duplicate_code       => 'N'
7853          );
7854    --
7855    l_acc_rev_natural_side_code := 'C';  -- 4262811
7856    -- 
7857    --
7858    -- set accounting line type info
7859    --
7860    xla_ae_lines_pkg.SetAcctLineType
7861       (p_component_type             => l_component_type
7862       ,p_event_type_code            => l_event_type_code
7863       ,p_line_definition_owner_code => l_line_definition_owner_code
7864       ,p_line_definition_code       => l_line_definition_code
7865       ,p_accounting_line_code       => l_component_code
7866       ,p_accounting_line_type_code  => l_component_type_code
7867       ,p_accounting_line_appl_id    => l_component_appl_id
7868       ,p_amb_context_code           => l_amb_context_code
7869       ,p_entity_code                => l_entity_code
7870       ,p_event_class_code           => l_event_class_code);
7871    --
7872    -- set accounting class
7873    --
7874    xla_ae_lines_pkg.SetAcctClass(
7875            p_accounting_class_code  => 'ACCRUAL'
7876          , p_ae_header_id           => l_ae_header_id
7877          );
7878 
7879    --
7880    -- set rounding class
7881    --
7882    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7883                       'ACCRUAL';
7884 
7885    --
7886    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7887    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7888    --
7889    -- bulk performance
7890    --
7891    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7892 
7893    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7894       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7895 
7896    -- 4955764
7897    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7898       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7899 
7900    -- 4458381 Public Sector Enh
7901    
7902    --
7903    -- set accounting attributes for the line type
7904    --
7905    l_entered_amt_idx := 3;
7906    l_accted_amt_idx  := 8;
7907    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7908    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7909    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
7910    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7911    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
7912    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7913    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
7914    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7915    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
7916    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7917    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
7918    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7919    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
7920    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7921    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
7922    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7923    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
7924 
7925    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7926    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7927 
7928    ---------------------------------------------------------------------------------------------------------------
7929    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7930    ---------------------------------------------------------------------------------------------------------------
7931    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7932 
7933    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7934    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7935 
7936    IF xla_accounting_cache_pkg.GetValueChar
7937          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7938          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7939    AND l_bflow_method_code = 'PRIOR_ENTRY'
7940 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7941    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7942          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7943        )
7944    THEN
7945          xla_ae_lines_pkg.BflowUpgEntry
7946            (p_business_method_code    => l_bflow_method_code
7947            ,p_business_class_code     => l_bflow_class_code
7948            ,p_balance_type            => l_balance_type_code);
7949    ELSE
7950       NULL;
7951 -- No business flow processing for business flow method of NONE.
7952    END IF;
7953 
7954    --
7955    -- call analytical criteria
7956    --
7957    
7958    --
7959    -- call description
7960    --
7961    -- No description or it is inherited.
7962    --
7963    -- call ADRs
7964    -- Bug 4922099
7965    --
7966    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7967         (NVL(l_actual_upg_option, 'N') = 'O') OR
7968         (NVL(l_enc_upg_option, 'N') = 'O')
7969       )
7970    THEN
7971    NULL;
7972    --
7973    --
7974    
7975   l_ccid := AcctDerRule_6(
7976            p_application_id           => p_application_id
7977          , p_ae_header_id             => l_ae_header_id 
7978 , p_source_11 => p_source_11
7979          , x_transaction_coa_id       => l_adr_transaction_coa_id
7980          , x_accounting_coa_id        => l_adr_accounting_coa_id
7981          , x_value_type_code          => l_adr_value_type_code
7982          , p_side                     => 'NA'
7983    );
7984 
7985    xla_ae_lines_pkg.set_ccid(
7986     p_code_combination_id          => l_ccid
7987   , p_value_type_code              => l_adr_value_type_code
7988   , p_transaction_coa_id           => l_adr_transaction_coa_id
7989   , p_accounting_coa_id            => l_adr_accounting_coa_id
7990   , p_adr_code                     => 'CST_DEFAULT'
7991   , p_adr_type_code                => 'S'
7992   , p_component_type               => l_component_type
7993   , p_component_code               => l_component_code
7994   , p_component_type_code          => l_component_type_code
7995   , p_component_appl_id            => l_component_appl_id
7996   , p_amb_context_code             => l_amb_context_code
7997   , p_side                         => 'NA'
7998   );
7999 
8000 
8001    --
8002    --
8003    END IF;
8004    --
8005    -- Bug 4922099
8006    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8007           (NVL(l_enc_upg_option, 'N') = 'O')
8008         ) AND
8009         (l_bflow_method_code = 'PRIOR_ENTRY')
8010       )
8011    THEN
8012       IF
8013       --
8014       1 = 2
8015       --
8016       THEN
8017       xla_accounting_err_pkg.build_message
8018                                     (p_appli_s_name            => 'XLA'
8019                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8020                                     ,p_token_1                 => 'LINE_NUMBER'
8021                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8022                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8023                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8024                                                                              l_component_type
8025                                                                             ,l_component_code
8026                                                                             ,l_component_type_code
8027                                                                             ,l_component_appl_id
8028                                                                             ,l_amb_context_code
8029                                                                             ,l_entity_code
8030                                                                             ,l_event_class_code
8031                                                                            )
8032                                     ,p_token_3                 => 'OWNER'
8033                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8034                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8035                                                                           ,p_lookup_code    => l_component_type_code
8036                                                                          )
8037                                     ,p_token_4                 => 'PRODUCT_NAME'
8038                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8039                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8040                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8041                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8042                                     ,p_ae_header_id            =>  NULL
8043                                        );
8044 
8045         IF (C_LEVEL_ERROR>= g_log_level) THEN
8046                  trace
8047                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8048                       ,p_level    => C_LEVEL_ERROR
8049                       ,p_module   => l_log_module);
8050         END IF;
8051       END IF;
8052    END IF;
8053    --
8054    --
8055    ------------------------------------------------------------------------------------------------
8056    -- 4219869 Business Flow
8057    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8058    -- Prior Entry.  Currently, the following code is always generated.
8059    ------------------------------------------------------------------------------------------------
8060    XLA_AE_LINES_PKG.ValidateCurrentLine;
8061 
8062    ------------------------------------------------------------------------------------
8063    -- 4219869 Business Flow
8064    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8065    ------------------------------------------------------------------------------------
8066    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8067 
8068    ----------------------------------------------------------------------------------
8069    -- 4219869 Business Flow
8070    -- Update journal entry status -- Need to generate this within IF <condition>
8071    ----------------------------------------------------------------------------------
8072    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8073          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8074          ,p_balance_type_code => l_balance_type_code
8075          );
8076 
8077    -------------------------------------------------------------------------------------------
8078    -- 4262811 - Generate the Accrual Reversal lines
8079    -------------------------------------------------------------------------------------------
8080    BEGIN
8081       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8082                               (g_array_event(p_event_id).array_value_num('header_index'));
8083       IF l_acc_rev_flag IS NULL THEN
8084          l_acc_rev_flag := 'N';
8085       END IF;
8086    EXCEPTION
8087       WHEN OTHERS THEN
8088          l_acc_rev_flag := 'N';
8089    END;
8090    --
8091    IF (l_acc_rev_flag = 'Y') THEN
8092 
8093        -- 4645092  ------------------------------------------------------------------------------
8094        -- To allow MPA report to determine if it should generate report process
8095        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8096        ------------------------------------------------------------------------------------------
8097 
8098        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8099        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8100    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8101    -- call ADRs
8102    -- Bug 4922099
8103    --
8104    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8105         (NVL(l_actual_upg_option, 'N') = 'O') OR
8106         (NVL(l_enc_upg_option, 'N') = 'O')
8107       )
8108    THEN
8109    NULL;
8110    --
8111    --
8112    
8113   l_ccid := AcctDerRule_6(
8114            p_application_id           => p_application_id
8115          , p_ae_header_id             => l_ae_header_id 
8116 , p_source_11 => p_source_11
8117          , x_transaction_coa_id       => l_adr_transaction_coa_id
8118          , x_accounting_coa_id        => l_adr_accounting_coa_id
8119          , x_value_type_code          => l_adr_value_type_code
8120          , p_side                     => 'NA'
8121    );
8122 
8123    xla_ae_lines_pkg.set_ccid(
8124     p_code_combination_id          => l_ccid
8125   , p_value_type_code              => l_adr_value_type_code
8126   , p_transaction_coa_id           => l_adr_transaction_coa_id
8127   , p_accounting_coa_id            => l_adr_accounting_coa_id
8128   , p_adr_code                     => 'CST_DEFAULT'
8129   , p_adr_type_code                => 'S'
8130   , p_component_type               => l_component_type
8131   , p_component_code               => l_component_code
8132   , p_component_type_code          => l_component_type_code
8133   , p_component_appl_id            => l_component_appl_id
8134   , p_amb_context_code             => l_amb_context_code
8135   , p_side                         => 'NA'
8136   );
8137 
8138 
8139    --
8140    --
8141    END IF;
8142 
8143        --
8144        -- Update the line information that should be overwritten
8145        --
8146        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8147                                          p_header_num   => 1);
8148        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8149 
8150        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8151 
8152        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8153           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8154        END IF;
8155 
8156       --
8157       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8158       --
8159       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8160           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8161       ELSE
8162           ---------------------------------------------------------------------------------------------------
8163           -- 4262811a Switch Sign
8164           ---------------------------------------------------------------------------------------------------
8165           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8166           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8167                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8168           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8169                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8170           -- 5132302
8171           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8172                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8173 
8174       END IF;
8175 
8176       -- 4955764
8177       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8178       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8179 
8180 
8181       XLA_AE_LINES_PKG.ValidateCurrentLine;
8182       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8183 
8184       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8185                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8186                ,p_balance_type_code => l_balance_type_code);
8187 
8188    END IF;
8189 
8190    -----------------------------------------------------------------------------------------
8191    -- 4262811 Multiperiod Accounting
8192    -----------------------------------------------------------------------------------------
8193      -- No MPA option is assigned.
8194 
8195 
8196 END IF;
8197 END IF;
8198 --
8199 
8200 --
8201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8202    trace
8203       (p_msg      => 'END of AcctLineType_41'
8204       ,p_level    => C_LEVEL_PROCEDURE
8205       ,p_module   => l_log_module);
8206 END IF;
8207 --
8208 EXCEPTION
8209   WHEN xla_exceptions_pkg.application_exception THEN
8210       RAISE;
8211   WHEN OTHERS THEN
8212        xla_exceptions_pkg.raise_message
8213            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_41');
8214 END AcctLineType_41;
8215 --
8216 
8217 ---------------------------------------
8218 --
8219 -- PRIVATE FUNCTION
8220 --         AcctLineType_42
8221 --
8222 ---------------------------------------
8223 PROCEDURE AcctLineType_42 (
8224   p_application_id        IN NUMBER
8225  ,p_event_id              IN NUMBER
8226  ,p_calculate_acctd_flag  IN VARCHAR2
8227  ,p_calculate_g_l_flag    IN VARCHAR2
8228  ,p_actual_flag           IN OUT VARCHAR2
8229  ,p_balance_type_code     OUT VARCHAR2
8230  ,p_gain_or_loss_ref      OUT VARCHAR2
8231  
8232 --Cost Management Default Account
8233  , p_source_11            IN NUMBER
8234 --Receiving Accounting Line Type
8235  , p_source_78            IN VARCHAR2
8236 --DISTRIBUTION_IDENTIFIER
8237  , p_source_84            IN NUMBER
8238 --Distribution Type
8239  , p_source_85            IN VARCHAR2
8240  , p_source_85_meaning    IN VARCHAR2
8241 --Entered Currency Code
8242  , p_source_88            IN VARCHAR2
8243 --Entered Amount
8244  , p_source_91            IN NUMBER
8245 --Currency Conversion Date
8246  , p_source_92            IN DATE
8247 --Currency Conversion Rate
8248  , p_source_93            IN NUMBER
8249 --Currency Conversion Type
8250  , p_source_94            IN VARCHAR2
8251 --Accounted Amount
8252  , p_source_95            IN NUMBER
8253 )
8254 IS
8255 
8256 l_component_type              VARCHAR2(80);
8257 l_component_code              VARCHAR2(30);
8258 l_component_type_code         VARCHAR2(1);
8259 l_component_appl_id           INTEGER;
8260 l_amb_context_code            VARCHAR2(30);
8261 l_entity_code                 VARCHAR2(30);
8262 l_event_class_code            VARCHAR2(30);
8263 l_ae_header_id                NUMBER;
8264 l_event_type_code             VARCHAR2(30);
8265 l_line_definition_code        VARCHAR2(30);
8266 l_line_definition_owner_code  VARCHAR2(1);
8267 --
8268 -- adr variables
8269 l_segment                     VARCHAR2(30);
8270 l_ccid                        NUMBER;
8271 l_adr_transaction_coa_id      NUMBER;
8272 l_adr_accounting_coa_id       NUMBER;
8273 l_adr_flexfield_segment_code  VARCHAR2(30);
8274 l_adr_flex_value_set_id       NUMBER;
8275 l_adr_value_type_code         VARCHAR2(30);
8276 l_adr_value_combination_id    NUMBER;
8277 l_adr_value_segment_code      VARCHAR2(30);
8278 
8279 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8280 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8281 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8282 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8283 
8284 -- 4262811 Variables ------------------------------------------------------------------------------------------
8285 l_entered_amt_idx             NUMBER;
8286 l_accted_amt_idx              NUMBER;
8287 l_acc_rev_flag                VARCHAR2(1);
8288 l_accrual_line_num            NUMBER;
8289 l_tmp_amt                     NUMBER;
8290 l_acc_rev_natural_side_code   VARCHAR2(1);
8291 
8292 l_num_entries                 NUMBER;
8293 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8294 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8295 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8296 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8297 l_recog_line_1                NUMBER;
8298 l_recog_line_2                NUMBER;
8299 
8300 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8301 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8302 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8303 
8304 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8305 
8306 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8307 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8308 
8309 ---------------------------------------------------------------------------------------------------------------
8310 
8311 
8312 --
8313 -- bulk performance
8314 --
8315 l_balance_type_code           VARCHAR2(1);
8316 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8317 l_log_module                  VARCHAR2(240);
8318 
8319 --
8320 -- Upgrade strategy
8321 --
8322 l_actual_upg_option           VARCHAR2(1);
8323 l_enc_upg_option           VARCHAR2(1);
8324 
8325 --
8326 BEGIN
8327 --
8328 IF g_log_enabled THEN
8329       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
8330 END IF;
8331 --
8332 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8333 
8334       trace
8335          (p_msg      => 'BEGIN of AcctLineType_42'
8336          ,p_level    => C_LEVEL_PROCEDURE
8337          ,p_module   => l_log_module);
8338 
8339 END IF;
8340 --
8341 l_component_type             := 'AMB_JLT';
8342 l_component_code             := 'ACCRUAL';
8343 l_component_type_code        := 'S';
8344 l_component_appl_id          :=  707;
8345 l_amb_context_code           := 'DEFAULT';
8346 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
8347 l_event_class_code           := 'RCPT_REC_INSP';
8348 l_event_type_code            := 'RCPT_REC_INSP_ALL';
8349 l_line_definition_owner_code := 'S';
8350 l_line_definition_code       := 'RCPT_REC_INSP';
8351 --
8352 l_balance_type_code          := 'A';
8353 l_segment                     := NULL;
8354 l_ccid                        := NULL;
8355 l_adr_transaction_coa_id      := NULL;
8356 l_adr_accounting_coa_id       := NULL;
8357 l_adr_flexfield_segment_code  := NULL;
8358 l_adr_flex_value_set_id       := NULL;
8359 l_adr_value_type_code         := NULL;
8360 l_adr_value_combination_id    := NULL;
8361 l_adr_value_segment_code      := NULL;
8362 
8363 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8364 l_bflow_class_code           := '';    -- 4219869 Business Flow
8365 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8366 l_budgetary_control_flag     := 'N';
8367 
8368 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8369 l_bflow_applied_to_amt       := NULL; -- 5132302
8370 l_entered_amt_idx            := NULL;          -- 4262811
8371 l_accted_amt_idx             := NULL;          -- 4262811
8372 l_acc_rev_flag               := NULL;          -- 4262811
8373 l_accrual_line_num           := NULL;          -- 4262811
8374 l_tmp_amt                    := NULL;          -- 4262811
8375 --
8376  
8377 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8378     l_balance_type_code <> 'B' THEN
8379 IF NVL(p_source_78,'
8380 ') =  'Accrual'
8381  THEN 
8382 
8383    --
8384    XLA_AE_LINES_PKG.SetNewLine;
8385 
8386    p_balance_type_code          := l_balance_type_code;
8387    -- set the flag so later we will know whether the gain loss line needs to be created
8388    
8389    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8390      p_actual_flag :='A';
8391    END IF;
8392 
8393    --
8394    -- bulk performance
8395    --
8396    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8397                                       p_header_num   => 0); -- 4262811
8398    --
8399    -- set accounting line options
8400    --
8401    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8402            p_natural_side_code          => 'D'
8403          , p_gain_or_loss_flag          => 'N'
8404          , p_gl_transfer_mode_code      => 'S'
8405          , p_acct_entry_type_code       => 'A'
8406          , p_switch_side_flag           => 'Y'
8407          , p_merge_duplicate_code       => 'N'
8408          );
8409    --
8410    l_acc_rev_natural_side_code := 'C';  -- 4262811
8411    -- 
8412    --
8413    -- set accounting line type info
8414    --
8415    xla_ae_lines_pkg.SetAcctLineType
8416       (p_component_type             => l_component_type
8417       ,p_event_type_code            => l_event_type_code
8418       ,p_line_definition_owner_code => l_line_definition_owner_code
8419       ,p_line_definition_code       => l_line_definition_code
8420       ,p_accounting_line_code       => l_component_code
8421       ,p_accounting_line_type_code  => l_component_type_code
8422       ,p_accounting_line_appl_id    => l_component_appl_id
8423       ,p_amb_context_code           => l_amb_context_code
8424       ,p_entity_code                => l_entity_code
8425       ,p_event_class_code           => l_event_class_code);
8426    --
8427    -- set accounting class
8428    --
8429    xla_ae_lines_pkg.SetAcctClass(
8430            p_accounting_class_code  => 'ACCRUAL'
8431          , p_ae_header_id           => l_ae_header_id
8432          );
8433 
8434    --
8435    -- set rounding class
8436    --
8437    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8438                       'ACCRUAL';
8439 
8440    --
8441    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8442    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8443    --
8444    -- bulk performance
8445    --
8446    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8447 
8448    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8449       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8450 
8451    -- 4955764
8452    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8453       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8454 
8455    -- 4458381 Public Sector Enh
8456    
8457    --
8458    -- set accounting attributes for the line type
8459    --
8460    l_entered_amt_idx := 3;
8461    l_accted_amt_idx  := 8;
8462    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8463    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8464    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
8465    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8466    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
8467    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8468    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
8469    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8470    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
8471    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8472    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
8473    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8474    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
8475    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8476    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
8477    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8478    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
8479 
8480    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8481    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8482 
8483    ---------------------------------------------------------------------------------------------------------------
8484    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8485    ---------------------------------------------------------------------------------------------------------------
8486    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8487 
8488    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8489    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8490 
8491    IF xla_accounting_cache_pkg.GetValueChar
8492          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8493          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8494    AND l_bflow_method_code = 'PRIOR_ENTRY'
8495 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8496    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8497          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8498        )
8499    THEN
8500          xla_ae_lines_pkg.BflowUpgEntry
8501            (p_business_method_code    => l_bflow_method_code
8502            ,p_business_class_code     => l_bflow_class_code
8503            ,p_balance_type            => l_balance_type_code);
8504    ELSE
8505       NULL;
8506 -- No business flow processing for business flow method of NONE.
8507    END IF;
8508 
8509    --
8510    -- call analytical criteria
8511    --
8512    
8513    --
8514    -- call description
8515    --
8516    -- No description or it is inherited.
8517    --
8518    -- call ADRs
8519    -- Bug 4922099
8520    --
8521    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8522         (NVL(l_actual_upg_option, 'N') = 'O') OR
8523         (NVL(l_enc_upg_option, 'N') = 'O')
8524       )
8525    THEN
8526    NULL;
8527    --
8528    --
8529    
8530   l_ccid := AcctDerRule_6(
8531            p_application_id           => p_application_id
8532          , p_ae_header_id             => l_ae_header_id 
8533 , p_source_11 => p_source_11
8534          , x_transaction_coa_id       => l_adr_transaction_coa_id
8535          , x_accounting_coa_id        => l_adr_accounting_coa_id
8536          , x_value_type_code          => l_adr_value_type_code
8537          , p_side                     => 'NA'
8538    );
8539 
8540    xla_ae_lines_pkg.set_ccid(
8541     p_code_combination_id          => l_ccid
8542   , p_value_type_code              => l_adr_value_type_code
8543   , p_transaction_coa_id           => l_adr_transaction_coa_id
8544   , p_accounting_coa_id            => l_adr_accounting_coa_id
8545   , p_adr_code                     => 'CST_DEFAULT'
8546   , p_adr_type_code                => 'S'
8547   , p_component_type               => l_component_type
8548   , p_component_code               => l_component_code
8549   , p_component_type_code          => l_component_type_code
8550   , p_component_appl_id            => l_component_appl_id
8551   , p_amb_context_code             => l_amb_context_code
8552   , p_side                         => 'NA'
8553   );
8554 
8555 
8556    --
8557    --
8558    END IF;
8559    --
8560    -- Bug 4922099
8561    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8562           (NVL(l_enc_upg_option, 'N') = 'O')
8563         ) AND
8564         (l_bflow_method_code = 'PRIOR_ENTRY')
8565       )
8566    THEN
8567       IF
8568       --
8569       1 = 2
8570       --
8571       THEN
8572       xla_accounting_err_pkg.build_message
8573                                     (p_appli_s_name            => 'XLA'
8574                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8575                                     ,p_token_1                 => 'LINE_NUMBER'
8576                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8577                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8578                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8579                                                                              l_component_type
8580                                                                             ,l_component_code
8581                                                                             ,l_component_type_code
8582                                                                             ,l_component_appl_id
8583                                                                             ,l_amb_context_code
8584                                                                             ,l_entity_code
8585                                                                             ,l_event_class_code
8586                                                                            )
8587                                     ,p_token_3                 => 'OWNER'
8588                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8589                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8590                                                                           ,p_lookup_code    => l_component_type_code
8591                                                                          )
8592                                     ,p_token_4                 => 'PRODUCT_NAME'
8593                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8594                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8595                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8596                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8597                                     ,p_ae_header_id            =>  NULL
8598                                        );
8599 
8600         IF (C_LEVEL_ERROR>= g_log_level) THEN
8601                  trace
8602                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8603                       ,p_level    => C_LEVEL_ERROR
8604                       ,p_module   => l_log_module);
8605         END IF;
8606       END IF;
8607    END IF;
8608    --
8609    --
8610    ------------------------------------------------------------------------------------------------
8611    -- 4219869 Business Flow
8612    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8613    -- Prior Entry.  Currently, the following code is always generated.
8614    ------------------------------------------------------------------------------------------------
8615    XLA_AE_LINES_PKG.ValidateCurrentLine;
8616 
8617    ------------------------------------------------------------------------------------
8618    -- 4219869 Business Flow
8619    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8620    ------------------------------------------------------------------------------------
8621    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8622 
8623    ----------------------------------------------------------------------------------
8624    -- 4219869 Business Flow
8625    -- Update journal entry status -- Need to generate this within IF <condition>
8626    ----------------------------------------------------------------------------------
8627    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8628          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8629          ,p_balance_type_code => l_balance_type_code
8630          );
8631 
8632    -------------------------------------------------------------------------------------------
8633    -- 4262811 - Generate the Accrual Reversal lines
8634    -------------------------------------------------------------------------------------------
8635    BEGIN
8636       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8637                               (g_array_event(p_event_id).array_value_num('header_index'));
8638       IF l_acc_rev_flag IS NULL THEN
8639          l_acc_rev_flag := 'N';
8640       END IF;
8641    EXCEPTION
8642       WHEN OTHERS THEN
8643          l_acc_rev_flag := 'N';
8644    END;
8645    --
8646    IF (l_acc_rev_flag = 'Y') THEN
8647 
8648        -- 4645092  ------------------------------------------------------------------------------
8649        -- To allow MPA report to determine if it should generate report process
8650        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8651        ------------------------------------------------------------------------------------------
8652 
8653        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8654        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8655    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8656    -- call ADRs
8657    -- Bug 4922099
8658    --
8659    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8660         (NVL(l_actual_upg_option, 'N') = 'O') OR
8661         (NVL(l_enc_upg_option, 'N') = 'O')
8662       )
8663    THEN
8664    NULL;
8665    --
8666    --
8667    
8668   l_ccid := AcctDerRule_6(
8669            p_application_id           => p_application_id
8670          , p_ae_header_id             => l_ae_header_id 
8671 , p_source_11 => p_source_11
8672          , x_transaction_coa_id       => l_adr_transaction_coa_id
8673          , x_accounting_coa_id        => l_adr_accounting_coa_id
8674          , x_value_type_code          => l_adr_value_type_code
8675          , p_side                     => 'NA'
8676    );
8677 
8678    xla_ae_lines_pkg.set_ccid(
8679     p_code_combination_id          => l_ccid
8680   , p_value_type_code              => l_adr_value_type_code
8681   , p_transaction_coa_id           => l_adr_transaction_coa_id
8682   , p_accounting_coa_id            => l_adr_accounting_coa_id
8683   , p_adr_code                     => 'CST_DEFAULT'
8684   , p_adr_type_code                => 'S'
8685   , p_component_type               => l_component_type
8686   , p_component_code               => l_component_code
8687   , p_component_type_code          => l_component_type_code
8688   , p_component_appl_id            => l_component_appl_id
8689   , p_amb_context_code             => l_amb_context_code
8690   , p_side                         => 'NA'
8691   );
8692 
8693 
8694    --
8695    --
8696    END IF;
8697 
8698        --
8699        -- Update the line information that should be overwritten
8700        --
8701        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8702                                          p_header_num   => 1);
8703        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8704 
8705        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8706 
8707        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8708           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8709        END IF;
8710 
8711       --
8712       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8713       --
8714       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8715           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8716       ELSE
8717           ---------------------------------------------------------------------------------------------------
8718           -- 4262811a Switch Sign
8719           ---------------------------------------------------------------------------------------------------
8720           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8721           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8722                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8723           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8724                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8725           -- 5132302
8726           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8727                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8728 
8729       END IF;
8730 
8731       -- 4955764
8732       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8733       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8734 
8735 
8736       XLA_AE_LINES_PKG.ValidateCurrentLine;
8737       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8738 
8739       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8740                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8741                ,p_balance_type_code => l_balance_type_code);
8742 
8743    END IF;
8744 
8745    -----------------------------------------------------------------------------------------
8746    -- 4262811 Multiperiod Accounting
8747    -----------------------------------------------------------------------------------------
8748      -- No MPA option is assigned.
8749 
8750 
8751 END IF;
8752 END IF;
8753 --
8754 
8755 --
8756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8757    trace
8758       (p_msg      => 'END of AcctLineType_42'
8759       ,p_level    => C_LEVEL_PROCEDURE
8760       ,p_module   => l_log_module);
8761 END IF;
8762 --
8763 EXCEPTION
8764   WHEN xla_exceptions_pkg.application_exception THEN
8765       RAISE;
8766   WHEN OTHERS THEN
8767        xla_exceptions_pkg.raise_message
8768            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_42');
8769 END AcctLineType_42;
8770 --
8771 
8772 ---------------------------------------
8773 --
8774 -- PRIVATE FUNCTION
8775 --         AcctLineType_43
8776 --
8777 ---------------------------------------
8778 PROCEDURE AcctLineType_43 (
8779   p_application_id        IN NUMBER
8780  ,p_event_id              IN NUMBER
8781  ,p_calculate_acctd_flag  IN VARCHAR2
8782  ,p_calculate_g_l_flag    IN VARCHAR2
8783  ,p_actual_flag           IN OUT VARCHAR2
8784  ,p_balance_type_code     OUT VARCHAR2
8785  ,p_gain_or_loss_ref      OUT VARCHAR2
8786  
8787 --Cost Management Default Account
8788  , p_source_11            IN NUMBER
8789 --Receiving Accounting Line Type
8790  , p_source_78            IN VARCHAR2
8791 --Applied to Application ID
8792  , p_source_79            IN NUMBER
8793 --Applied to Distribution Link Type
8794  , p_source_80            IN VARCHAR2
8795 --Applied to Entity Code
8796  , p_source_81            IN VARCHAR2
8797 --PO_DISTRIBUTION_ID
8798  , p_source_82            IN NUMBER
8799 --Applied To Purchase Document Identifier
8800  , p_source_83            IN NUMBER
8801 --DISTRIBUTION_IDENTIFIER
8802  , p_source_84            IN NUMBER
8803 --Distribution Type
8804  , p_source_85            IN VARCHAR2
8805  , p_source_85_meaning    IN VARCHAR2
8806 --PO Budget Account
8807  , p_source_86            IN NUMBER
8808 --Encumbrance Reversal Amount Entered
8809  , p_source_87            IN NUMBER
8810 --Entered Currency Code
8811  , p_source_88            IN VARCHAR2
8812 --Transaction Encumbrance Reversal Amount
8813  , p_source_89            IN NUMBER
8814 --Costing Period End Accrual Encumbrance Upgrade Option
8815  , p_source_90            IN VARCHAR2
8816 --Entered Amount
8817  , p_source_91            IN NUMBER
8818 --Currency Conversion Date
8819  , p_source_92            IN DATE
8820 --Currency Conversion Rate
8821  , p_source_93            IN NUMBER
8822 --Currency Conversion Type
8823  , p_source_94            IN VARCHAR2
8824 --Accounted Amount
8825  , p_source_95            IN NUMBER
8826 --Purchasing Encumbrance Type Identifier
8827  , p_source_96            IN NUMBER
8828 )
8829 IS
8830 
8831 l_component_type              VARCHAR2(80);
8832 l_component_code              VARCHAR2(30);
8833 l_component_type_code         VARCHAR2(1);
8834 l_component_appl_id           INTEGER;
8835 l_amb_context_code            VARCHAR2(30);
8836 l_entity_code                 VARCHAR2(30);
8837 l_event_class_code            VARCHAR2(30);
8838 l_ae_header_id                NUMBER;
8839 l_event_type_code             VARCHAR2(30);
8840 l_line_definition_code        VARCHAR2(30);
8841 l_line_definition_owner_code  VARCHAR2(1);
8842 --
8843 -- adr variables
8844 l_segment                     VARCHAR2(30);
8845 l_ccid                        NUMBER;
8846 l_adr_transaction_coa_id      NUMBER;
8847 l_adr_accounting_coa_id       NUMBER;
8848 l_adr_flexfield_segment_code  VARCHAR2(30);
8849 l_adr_flex_value_set_id       NUMBER;
8850 l_adr_value_type_code         VARCHAR2(30);
8851 l_adr_value_combination_id    NUMBER;
8852 l_adr_value_segment_code      VARCHAR2(30);
8853 
8854 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8855 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8856 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8857 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8858 
8859 -- 4262811 Variables ------------------------------------------------------------------------------------------
8860 l_entered_amt_idx             NUMBER;
8861 l_accted_amt_idx              NUMBER;
8862 l_acc_rev_flag                VARCHAR2(1);
8863 l_accrual_line_num            NUMBER;
8864 l_tmp_amt                     NUMBER;
8865 l_acc_rev_natural_side_code   VARCHAR2(1);
8866 
8867 l_num_entries                 NUMBER;
8868 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8869 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8870 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8871 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8872 l_recog_line_1                NUMBER;
8873 l_recog_line_2                NUMBER;
8874 
8875 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8876 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8877 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8878 
8879 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8880 
8881 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8882 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8883 
8884 ---------------------------------------------------------------------------------------------------------------
8885 
8886 
8887 --
8888 -- bulk performance
8889 --
8890 l_balance_type_code           VARCHAR2(1);
8891 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8892 l_log_module                  VARCHAR2(240);
8893 
8894 --
8895 -- Upgrade strategy
8896 --
8897 l_actual_upg_option           VARCHAR2(1);
8898 l_enc_upg_option           VARCHAR2(1);
8899 
8900 --
8901 BEGIN
8902 --
8903 IF g_log_enabled THEN
8904       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
8905 END IF;
8906 --
8907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8908 
8909       trace
8910          (p_msg      => 'BEGIN of AcctLineType_43'
8911          ,p_level    => C_LEVEL_PROCEDURE
8912          ,p_module   => l_log_module);
8913 
8914 END IF;
8915 --
8916 l_component_type             := 'AMB_JLT';
8917 l_component_code             := 'CHARGE';
8918 l_component_type_code        := 'S';
8919 l_component_appl_id          :=  707;
8920 l_amb_context_code           := 'DEFAULT';
8921 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
8922 l_event_class_code           := 'PERIOD_END_ACCRUAL';
8923 l_event_type_code            := 'PERIOD_END_ACCRUAL_ALL';
8924 l_line_definition_owner_code := 'S';
8925 l_line_definition_code       := 'PERIOD_END_ACCRUAL';
8926 --
8927 l_balance_type_code          := 'A';
8928 l_segment                     := NULL;
8929 l_ccid                        := NULL;
8930 l_adr_transaction_coa_id      := NULL;
8931 l_adr_accounting_coa_id       := NULL;
8932 l_adr_flexfield_segment_code  := NULL;
8933 l_adr_flex_value_set_id       := NULL;
8934 l_adr_value_type_code         := NULL;
8935 l_adr_value_combination_id    := NULL;
8936 l_adr_value_segment_code      := NULL;
8937 
8938 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8939 l_bflow_class_code           := '';    -- 4219869 Business Flow
8940 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8941 l_budgetary_control_flag     := 'N';
8942 
8943 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8944 l_bflow_applied_to_amt       := NULL; -- 5132302
8945 l_entered_amt_idx            := NULL;          -- 4262811
8946 l_accted_amt_idx             := NULL;          -- 4262811
8947 l_acc_rev_flag               := NULL;          -- 4262811
8948 l_accrual_line_num           := NULL;          -- 4262811
8949 l_tmp_amt                    := NULL;          -- 4262811
8950 --
8951  
8952 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8953     l_balance_type_code <> 'B' THEN
8954 IF NVL(p_source_78,'
8955 ') =  'Charge'
8956  THEN 
8957 
8958    --
8959    XLA_AE_LINES_PKG.SetNewLine;
8960 
8961    p_balance_type_code          := l_balance_type_code;
8962    -- set the flag so later we will know whether the gain loss line needs to be created
8963    
8964    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8965      p_actual_flag :='A';
8966    END IF;
8967 
8968    --
8969    -- bulk performance
8970    --
8971    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8972                                       p_header_num   => 0); -- 4262811
8973    --
8974    -- set accounting line options
8975    --
8976    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8977            p_natural_side_code          => 'D'
8978          , p_gain_or_loss_flag          => 'N'
8979          , p_gl_transfer_mode_code      => 'S'
8980          , p_acct_entry_type_code       => 'A'
8981          , p_switch_side_flag           => 'Y'
8982          , p_merge_duplicate_code       => 'N'
8983          );
8984    --
8985    l_acc_rev_natural_side_code := 'C';  -- 4262811
8986    -- 
8987    --
8988    -- set accounting line type info
8989    --
8990    xla_ae_lines_pkg.SetAcctLineType
8991       (p_component_type             => l_component_type
8992       ,p_event_type_code            => l_event_type_code
8993       ,p_line_definition_owner_code => l_line_definition_owner_code
8994       ,p_line_definition_code       => l_line_definition_code
8995       ,p_accounting_line_code       => l_component_code
8996       ,p_accounting_line_type_code  => l_component_type_code
8997       ,p_accounting_line_appl_id    => l_component_appl_id
8998       ,p_amb_context_code           => l_amb_context_code
8999       ,p_entity_code                => l_entity_code
9000       ,p_event_class_code           => l_event_class_code);
9001    --
9002    -- set accounting class
9003    --
9004    xla_ae_lines_pkg.SetAcctClass(
9005            p_accounting_class_code  => 'CHARGE'
9006          , p_ae_header_id           => l_ae_header_id
9007          );
9008 
9009    --
9010    -- set rounding class
9011    --
9012    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9013                       'CHARGE';
9014 
9015    --
9016    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9017    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9018    --
9019    -- bulk performance
9020    --
9021    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9022 
9023    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9024       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9025 
9026    -- 4955764
9027    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9028       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9029 
9030    -- 4458381 Public Sector Enh
9031    
9032    --
9033    -- set accounting attributes for the line type
9034    --
9035    l_entered_amt_idx := 17;
9036    l_accted_amt_idx  := 22;
9037    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9038    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
9039    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
9040    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9041    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
9042    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
9043    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
9044    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
9045    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_82);
9046    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9047    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
9048    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
9049    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
9050    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
9051    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
9052    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
9053    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
9054    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
9055    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
9056    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
9057    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
9058    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
9059    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
9060    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
9061    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
9062    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
9063    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
9064    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
9065    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
9066    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
9067    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
9068    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
9069    l_rec_acct_attrs.array_char_value(16)  := p_source_90;
9070    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
9071    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
9072    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
9073    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
9074    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
9075    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
9076    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
9077    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
9078    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
9079    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
9080    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
9081    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
9082    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
9083    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
9084    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
9085    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
9086 
9087    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9088    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9089 
9090    ---------------------------------------------------------------------------------------------------------------
9091    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9092    ---------------------------------------------------------------------------------------------------------------
9093    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9094 
9095    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9096    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9097 
9098    IF xla_accounting_cache_pkg.GetValueChar
9099          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9100          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9101    AND l_bflow_method_code = 'PRIOR_ENTRY'
9102 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9103    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9104          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9105        )
9106    THEN
9107          xla_ae_lines_pkg.BflowUpgEntry
9108            (p_business_method_code    => l_bflow_method_code
9109            ,p_business_class_code     => l_bflow_class_code
9110            ,p_balance_type            => l_balance_type_code);
9111    ELSE
9112       NULL;
9113 -- No business flow processing for business flow method of NONE.
9114    END IF;
9115 
9116    --
9117    -- call analytical criteria
9118    --
9119    
9120    --
9121    -- call description
9122    --
9123    -- No description or it is inherited.
9124    --
9125    -- call ADRs
9126    -- Bug 4922099
9127    --
9128    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9129         (NVL(l_actual_upg_option, 'N') = 'O') OR
9130         (NVL(l_enc_upg_option, 'N') = 'O')
9131       )
9132    THEN
9133    NULL;
9134    --
9135    --
9136    
9137   l_ccid := AcctDerRule_6(
9138            p_application_id           => p_application_id
9139          , p_ae_header_id             => l_ae_header_id 
9140 , p_source_11 => p_source_11
9141          , x_transaction_coa_id       => l_adr_transaction_coa_id
9142          , x_accounting_coa_id        => l_adr_accounting_coa_id
9143          , x_value_type_code          => l_adr_value_type_code
9144          , p_side                     => 'NA'
9145    );
9146 
9147    xla_ae_lines_pkg.set_ccid(
9148     p_code_combination_id          => l_ccid
9149   , p_value_type_code              => l_adr_value_type_code
9150   , p_transaction_coa_id           => l_adr_transaction_coa_id
9151   , p_accounting_coa_id            => l_adr_accounting_coa_id
9152   , p_adr_code                     => 'CST_DEFAULT'
9153   , p_adr_type_code                => 'S'
9154   , p_component_type               => l_component_type
9155   , p_component_code               => l_component_code
9156   , p_component_type_code          => l_component_type_code
9157   , p_component_appl_id            => l_component_appl_id
9158   , p_amb_context_code             => l_amb_context_code
9159   , p_side                         => 'NA'
9160   );
9161 
9162 
9163    --
9164    --
9165    END IF;
9166    --
9167    -- Bug 4922099
9168    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9169           (NVL(l_enc_upg_option, 'N') = 'O')
9170         ) AND
9171         (l_bflow_method_code = 'PRIOR_ENTRY')
9172       )
9173    THEN
9174       IF
9175       --
9176       1 = 2
9177       --
9178       THEN
9179       xla_accounting_err_pkg.build_message
9180                                     (p_appli_s_name            => 'XLA'
9181                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9182                                     ,p_token_1                 => 'LINE_NUMBER'
9183                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9184                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9185                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9186                                                                              l_component_type
9187                                                                             ,l_component_code
9188                                                                             ,l_component_type_code
9189                                                                             ,l_component_appl_id
9190                                                                             ,l_amb_context_code
9191                                                                             ,l_entity_code
9192                                                                             ,l_event_class_code
9193                                                                            )
9194                                     ,p_token_3                 => 'OWNER'
9195                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9196                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9197                                                                           ,p_lookup_code    => l_component_type_code
9198                                                                          )
9199                                     ,p_token_4                 => 'PRODUCT_NAME'
9200                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9201                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9202                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9203                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9204                                     ,p_ae_header_id            =>  NULL
9205                                        );
9206 
9207         IF (C_LEVEL_ERROR>= g_log_level) THEN
9208                  trace
9209                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9210                       ,p_level    => C_LEVEL_ERROR
9211                       ,p_module   => l_log_module);
9212         END IF;
9213       END IF;
9214    END IF;
9215    --
9216    --
9217    ------------------------------------------------------------------------------------------------
9218    -- 4219869 Business Flow
9219    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9220    -- Prior Entry.  Currently, the following code is always generated.
9221    ------------------------------------------------------------------------------------------------
9222    XLA_AE_LINES_PKG.ValidateCurrentLine;
9223 
9224    ------------------------------------------------------------------------------------
9225    -- 4219869 Business Flow
9226    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9227    ------------------------------------------------------------------------------------
9228    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9229 
9230    ----------------------------------------------------------------------------------
9231    -- 4219869 Business Flow
9232    -- Update journal entry status -- Need to generate this within IF <condition>
9233    ----------------------------------------------------------------------------------
9234    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9235          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9236          ,p_balance_type_code => l_balance_type_code
9237          );
9238 
9239    -------------------------------------------------------------------------------------------
9240    -- 4262811 - Generate the Accrual Reversal lines
9241    -------------------------------------------------------------------------------------------
9242    BEGIN
9243       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9244                               (g_array_event(p_event_id).array_value_num('header_index'));
9245       IF l_acc_rev_flag IS NULL THEN
9246          l_acc_rev_flag := 'N';
9247       END IF;
9248    EXCEPTION
9249       WHEN OTHERS THEN
9250          l_acc_rev_flag := 'N';
9251    END;
9252    --
9253    IF (l_acc_rev_flag = 'Y') THEN
9254 
9255        -- 4645092  ------------------------------------------------------------------------------
9256        -- To allow MPA report to determine if it should generate report process
9257        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9258        ------------------------------------------------------------------------------------------
9259 
9260        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9261        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9262    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9263    -- call ADRs
9264    -- Bug 4922099
9265    --
9266    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9267         (NVL(l_actual_upg_option, 'N') = 'O') OR
9268         (NVL(l_enc_upg_option, 'N') = 'O')
9269       )
9270    THEN
9271    NULL;
9272    --
9273    --
9274    
9275   l_ccid := AcctDerRule_6(
9276            p_application_id           => p_application_id
9277          , p_ae_header_id             => l_ae_header_id 
9278 , p_source_11 => p_source_11
9279          , x_transaction_coa_id       => l_adr_transaction_coa_id
9280          , x_accounting_coa_id        => l_adr_accounting_coa_id
9281          , x_value_type_code          => l_adr_value_type_code
9282          , p_side                     => 'NA'
9283    );
9284 
9285    xla_ae_lines_pkg.set_ccid(
9286     p_code_combination_id          => l_ccid
9287   , p_value_type_code              => l_adr_value_type_code
9288   , p_transaction_coa_id           => l_adr_transaction_coa_id
9289   , p_accounting_coa_id            => l_adr_accounting_coa_id
9290   , p_adr_code                     => 'CST_DEFAULT'
9291   , p_adr_type_code                => 'S'
9292   , p_component_type               => l_component_type
9293   , p_component_code               => l_component_code
9294   , p_component_type_code          => l_component_type_code
9295   , p_component_appl_id            => l_component_appl_id
9296   , p_amb_context_code             => l_amb_context_code
9297   , p_side                         => 'NA'
9298   );
9299 
9300 
9301    --
9302    --
9303    END IF;
9304 
9305        --
9306        -- Update the line information that should be overwritten
9307        --
9308        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9309                                          p_header_num   => 1);
9310        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9311 
9312        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9313 
9314        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9315           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9316        END IF;
9317 
9318       --
9319       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9320       --
9321       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9322           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9323       ELSE
9324           ---------------------------------------------------------------------------------------------------
9325           -- 4262811a Switch Sign
9326           ---------------------------------------------------------------------------------------------------
9327           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9328           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9329                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9330           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9331                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9332           -- 5132302
9333           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9334                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9335 
9336       END IF;
9337 
9338       -- 4955764
9339       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9340       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9341 
9342 
9343       XLA_AE_LINES_PKG.ValidateCurrentLine;
9344       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9345 
9346       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9347                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9348                ,p_balance_type_code => l_balance_type_code);
9349 
9350    END IF;
9351 
9352    -----------------------------------------------------------------------------------------
9353    -- 4262811 Multiperiod Accounting
9354    -----------------------------------------------------------------------------------------
9355      -- No MPA option is assigned.
9356 
9357 
9358 END IF;
9359 END IF;
9360 --
9361 
9362 --
9363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9364    trace
9365       (p_msg      => 'END of AcctLineType_43'
9366       ,p_level    => C_LEVEL_PROCEDURE
9367       ,p_module   => l_log_module);
9368 END IF;
9369 --
9370 EXCEPTION
9371   WHEN xla_exceptions_pkg.application_exception THEN
9372       RAISE;
9373   WHEN OTHERS THEN
9374        xla_exceptions_pkg.raise_message
9375            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_43');
9376 END AcctLineType_43;
9377 --
9378 
9379 ---------------------------------------
9380 --
9381 -- PRIVATE FUNCTION
9382 --         AcctLineType_44
9383 --
9384 ---------------------------------------
9385 PROCEDURE AcctLineType_44 (
9386   p_application_id        IN NUMBER
9387  ,p_event_id              IN NUMBER
9388  ,p_calculate_acctd_flag  IN VARCHAR2
9389  ,p_calculate_g_l_flag    IN VARCHAR2
9390  ,p_actual_flag           IN OUT VARCHAR2
9391  ,p_balance_type_code     OUT VARCHAR2
9392  ,p_gain_or_loss_ref      OUT VARCHAR2
9393  
9394 --Cost Management Default Account
9395  , p_source_11            IN NUMBER
9396 --Receiving Accounting Line Type
9397  , p_source_78            IN VARCHAR2
9398 --Applied to Application ID
9399  , p_source_79            IN NUMBER
9400 --Applied to Distribution Link Type
9401  , p_source_80            IN VARCHAR2
9402 --Applied to Entity Code
9403  , p_source_81            IN VARCHAR2
9404 --PO_DISTRIBUTION_ID
9405  , p_source_82            IN NUMBER
9406 --Applied To Purchase Document Identifier
9407  , p_source_83            IN NUMBER
9408 --DISTRIBUTION_IDENTIFIER
9409  , p_source_84            IN NUMBER
9410 --Distribution Type
9411  , p_source_85            IN VARCHAR2
9412  , p_source_85_meaning    IN VARCHAR2
9413 --PO Budget Account
9414  , p_source_86            IN NUMBER
9415 --Encumbrance Reversal Amount Entered
9416  , p_source_87            IN NUMBER
9417 --Entered Currency Code
9418  , p_source_88            IN VARCHAR2
9419 --Transaction Encumbrance Reversal Amount
9420  , p_source_89            IN NUMBER
9421 --Entered Amount
9422  , p_source_91            IN NUMBER
9423 --Currency Conversion Date
9424  , p_source_92            IN DATE
9425 --Currency Conversion Rate
9426  , p_source_93            IN NUMBER
9427 --Currency Conversion Type
9428  , p_source_94            IN VARCHAR2
9429 --Accounted Amount
9430  , p_source_95            IN NUMBER
9431 --Purchasing Encumbrance Type Identifier
9432  , p_source_96            IN NUMBER
9433 --Costing Encumbrance Upgrade Option
9434  , p_source_100            IN VARCHAR2
9435 )
9436 IS
9437 
9438 l_component_type              VARCHAR2(80);
9439 l_component_code              VARCHAR2(30);
9440 l_component_type_code         VARCHAR2(1);
9441 l_component_appl_id           INTEGER;
9442 l_amb_context_code            VARCHAR2(30);
9443 l_entity_code                 VARCHAR2(30);
9444 l_event_class_code            VARCHAR2(30);
9445 l_ae_header_id                NUMBER;
9446 l_event_type_code             VARCHAR2(30);
9447 l_line_definition_code        VARCHAR2(30);
9448 l_line_definition_owner_code  VARCHAR2(1);
9449 --
9450 -- adr variables
9451 l_segment                     VARCHAR2(30);
9452 l_ccid                        NUMBER;
9453 l_adr_transaction_coa_id      NUMBER;
9454 l_adr_accounting_coa_id       NUMBER;
9455 l_adr_flexfield_segment_code  VARCHAR2(30);
9456 l_adr_flex_value_set_id       NUMBER;
9457 l_adr_value_type_code         VARCHAR2(30);
9458 l_adr_value_combination_id    NUMBER;
9459 l_adr_value_segment_code      VARCHAR2(30);
9460 
9461 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9462 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9463 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9464 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9465 
9466 -- 4262811 Variables ------------------------------------------------------------------------------------------
9467 l_entered_amt_idx             NUMBER;
9468 l_accted_amt_idx              NUMBER;
9469 l_acc_rev_flag                VARCHAR2(1);
9470 l_accrual_line_num            NUMBER;
9471 l_tmp_amt                     NUMBER;
9472 l_acc_rev_natural_side_code   VARCHAR2(1);
9473 
9474 l_num_entries                 NUMBER;
9475 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9476 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9477 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9478 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9479 l_recog_line_1                NUMBER;
9480 l_recog_line_2                NUMBER;
9481 
9482 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9483 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9484 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9485 
9486 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9487 
9488 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9489 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9490 
9491 ---------------------------------------------------------------------------------------------------------------
9492 
9493 
9494 --
9495 -- bulk performance
9496 --
9497 l_balance_type_code           VARCHAR2(1);
9498 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9499 l_log_module                  VARCHAR2(240);
9500 
9501 --
9502 -- Upgrade strategy
9503 --
9504 l_actual_upg_option           VARCHAR2(1);
9505 l_enc_upg_option           VARCHAR2(1);
9506 
9507 --
9508 BEGIN
9509 --
9510 IF g_log_enabled THEN
9511       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
9512 END IF;
9513 --
9514 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9515 
9516       trace
9517          (p_msg      => 'BEGIN of AcctLineType_44'
9518          ,p_level    => C_LEVEL_PROCEDURE
9519          ,p_module   => l_log_module);
9520 
9521 END IF;
9522 --
9523 l_component_type             := 'AMB_JLT';
9524 l_component_code             := 'CHARGE';
9525 l_component_type_code        := 'S';
9526 l_component_appl_id          :=  707;
9527 l_amb_context_code           := 'DEFAULT';
9528 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
9529 l_event_class_code           := 'DELIVER_EXPENSE';
9530 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
9531 l_line_definition_owner_code := 'S';
9532 l_line_definition_code       := 'DELIVER_EXPENSE';
9533 --
9534 l_balance_type_code          := 'A';
9535 l_segment                     := NULL;
9536 l_ccid                        := NULL;
9537 l_adr_transaction_coa_id      := NULL;
9538 l_adr_accounting_coa_id       := NULL;
9539 l_adr_flexfield_segment_code  := NULL;
9540 l_adr_flex_value_set_id       := NULL;
9541 l_adr_value_type_code         := NULL;
9542 l_adr_value_combination_id    := NULL;
9543 l_adr_value_segment_code      := NULL;
9544 
9545 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9546 l_bflow_class_code           := '';    -- 4219869 Business Flow
9547 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9548 l_budgetary_control_flag     := 'N';
9549 
9550 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9551 l_bflow_applied_to_amt       := NULL; -- 5132302
9552 l_entered_amt_idx            := NULL;          -- 4262811
9553 l_accted_amt_idx             := NULL;          -- 4262811
9554 l_acc_rev_flag               := NULL;          -- 4262811
9555 l_accrual_line_num           := NULL;          -- 4262811
9556 l_tmp_amt                    := NULL;          -- 4262811
9557 --
9558  
9559 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9560     l_balance_type_code <> 'B' THEN
9561 IF NVL(p_source_78,'
9562 ') =  'Charge'
9563  THEN 
9564 
9565    --
9566    XLA_AE_LINES_PKG.SetNewLine;
9567 
9568    p_balance_type_code          := l_balance_type_code;
9569    -- set the flag so later we will know whether the gain loss line needs to be created
9570    
9571    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9572      p_actual_flag :='A';
9573    END IF;
9574 
9575    --
9576    -- bulk performance
9577    --
9578    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9579                                       p_header_num   => 0); -- 4262811
9580    --
9581    -- set accounting line options
9582    --
9583    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9584            p_natural_side_code          => 'D'
9585          , p_gain_or_loss_flag          => 'N'
9586          , p_gl_transfer_mode_code      => 'S'
9587          , p_acct_entry_type_code       => 'A'
9588          , p_switch_side_flag           => 'Y'
9589          , p_merge_duplicate_code       => 'N'
9590          );
9591    --
9592    l_acc_rev_natural_side_code := 'C';  -- 4262811
9593    -- 
9594    --
9595    -- set accounting line type info
9596    --
9597    xla_ae_lines_pkg.SetAcctLineType
9598       (p_component_type             => l_component_type
9599       ,p_event_type_code            => l_event_type_code
9600       ,p_line_definition_owner_code => l_line_definition_owner_code
9601       ,p_line_definition_code       => l_line_definition_code
9602       ,p_accounting_line_code       => l_component_code
9603       ,p_accounting_line_type_code  => l_component_type_code
9604       ,p_accounting_line_appl_id    => l_component_appl_id
9605       ,p_amb_context_code           => l_amb_context_code
9606       ,p_entity_code                => l_entity_code
9607       ,p_event_class_code           => l_event_class_code);
9608    --
9609    -- set accounting class
9610    --
9611    xla_ae_lines_pkg.SetAcctClass(
9612            p_accounting_class_code  => 'CHARGE'
9613          , p_ae_header_id           => l_ae_header_id
9614          );
9615 
9616    --
9617    -- set rounding class
9618    --
9619    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9620                       'CHARGE';
9621 
9622    --
9623    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9624    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9625    --
9626    -- bulk performance
9627    --
9628    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9629 
9630    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9631       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9632 
9633    -- 4955764
9634    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9635       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9636 
9637    -- 4458381 Public Sector Enh
9638    
9639    --
9640    -- set accounting attributes for the line type
9641    --
9642    l_entered_amt_idx := 17;
9643    l_accted_amt_idx  := 22;
9644    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9645    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
9646    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
9647    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9648    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
9649    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
9650    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
9651    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
9652    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_82);
9653    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9654    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
9655    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
9656    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
9657    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
9658    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
9659    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
9660    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
9661    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
9662    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
9663    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
9664    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
9665    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
9666    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
9667    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
9668    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
9669    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
9670    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
9671    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
9672    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
9673    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
9674    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
9675    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
9676    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
9677    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
9678    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
9679    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
9680    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
9681    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
9682    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
9683    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
9684    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
9685    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
9686    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
9687    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
9688    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
9689    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
9690    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
9691    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
9692    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
9693 
9694    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9695    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9696 
9697    ---------------------------------------------------------------------------------------------------------------
9698    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9699    ---------------------------------------------------------------------------------------------------------------
9700    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9701 
9702    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9703    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9704 
9705    IF xla_accounting_cache_pkg.GetValueChar
9706          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9707          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9708    AND l_bflow_method_code = 'PRIOR_ENTRY'
9709 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9710    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9711          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9712        )
9713    THEN
9714          xla_ae_lines_pkg.BflowUpgEntry
9715            (p_business_method_code    => l_bflow_method_code
9716            ,p_business_class_code     => l_bflow_class_code
9717            ,p_balance_type            => l_balance_type_code);
9718    ELSE
9719       NULL;
9720 -- No business flow processing for business flow method of NONE.
9721    END IF;
9722 
9723    --
9724    -- call analytical criteria
9725    --
9726    
9727    --
9728    -- call description
9729    --
9730    -- No description or it is inherited.
9731    --
9732    -- call ADRs
9733    -- Bug 4922099
9734    --
9735    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9736         (NVL(l_actual_upg_option, 'N') = 'O') OR
9737         (NVL(l_enc_upg_option, 'N') = 'O')
9738       )
9739    THEN
9740    NULL;
9741    --
9742    --
9743    
9744   l_ccid := AcctDerRule_6(
9745            p_application_id           => p_application_id
9746          , p_ae_header_id             => l_ae_header_id 
9747 , p_source_11 => p_source_11
9748          , x_transaction_coa_id       => l_adr_transaction_coa_id
9749          , x_accounting_coa_id        => l_adr_accounting_coa_id
9750          , x_value_type_code          => l_adr_value_type_code
9751          , p_side                     => 'NA'
9752    );
9753 
9754    xla_ae_lines_pkg.set_ccid(
9755     p_code_combination_id          => l_ccid
9756   , p_value_type_code              => l_adr_value_type_code
9757   , p_transaction_coa_id           => l_adr_transaction_coa_id
9758   , p_accounting_coa_id            => l_adr_accounting_coa_id
9759   , p_adr_code                     => 'CST_DEFAULT'
9760   , p_adr_type_code                => 'S'
9761   , p_component_type               => l_component_type
9762   , p_component_code               => l_component_code
9763   , p_component_type_code          => l_component_type_code
9764   , p_component_appl_id            => l_component_appl_id
9765   , p_amb_context_code             => l_amb_context_code
9766   , p_side                         => 'NA'
9767   );
9768 
9769 
9770    --
9771    --
9772    END IF;
9773    --
9774    -- Bug 4922099
9775    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9776           (NVL(l_enc_upg_option, 'N') = 'O')
9777         ) AND
9778         (l_bflow_method_code = 'PRIOR_ENTRY')
9779       )
9780    THEN
9781       IF
9782       --
9783       1 = 2
9784       --
9785       THEN
9786       xla_accounting_err_pkg.build_message
9787                                     (p_appli_s_name            => 'XLA'
9788                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9789                                     ,p_token_1                 => 'LINE_NUMBER'
9790                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9791                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9792                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9793                                                                              l_component_type
9794                                                                             ,l_component_code
9795                                                                             ,l_component_type_code
9796                                                                             ,l_component_appl_id
9797                                                                             ,l_amb_context_code
9798                                                                             ,l_entity_code
9799                                                                             ,l_event_class_code
9800                                                                            )
9801                                     ,p_token_3                 => 'OWNER'
9802                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9803                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9804                                                                           ,p_lookup_code    => l_component_type_code
9805                                                                          )
9806                                     ,p_token_4                 => 'PRODUCT_NAME'
9807                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9808                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9809                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9810                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9811                                     ,p_ae_header_id            =>  NULL
9812                                        );
9813 
9814         IF (C_LEVEL_ERROR>= g_log_level) THEN
9815                  trace
9816                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9817                       ,p_level    => C_LEVEL_ERROR
9818                       ,p_module   => l_log_module);
9819         END IF;
9820       END IF;
9821    END IF;
9822    --
9823    --
9824    ------------------------------------------------------------------------------------------------
9825    -- 4219869 Business Flow
9826    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9827    -- Prior Entry.  Currently, the following code is always generated.
9828    ------------------------------------------------------------------------------------------------
9829    XLA_AE_LINES_PKG.ValidateCurrentLine;
9830 
9831    ------------------------------------------------------------------------------------
9832    -- 4219869 Business Flow
9833    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9834    ------------------------------------------------------------------------------------
9835    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9836 
9837    ----------------------------------------------------------------------------------
9838    -- 4219869 Business Flow
9839    -- Update journal entry status -- Need to generate this within IF <condition>
9840    ----------------------------------------------------------------------------------
9841    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9842          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9843          ,p_balance_type_code => l_balance_type_code
9844          );
9845 
9846    -------------------------------------------------------------------------------------------
9847    -- 4262811 - Generate the Accrual Reversal lines
9848    -------------------------------------------------------------------------------------------
9849    BEGIN
9850       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9851                               (g_array_event(p_event_id).array_value_num('header_index'));
9852       IF l_acc_rev_flag IS NULL THEN
9853          l_acc_rev_flag := 'N';
9854       END IF;
9855    EXCEPTION
9856       WHEN OTHERS THEN
9857          l_acc_rev_flag := 'N';
9858    END;
9859    --
9860    IF (l_acc_rev_flag = 'Y') THEN
9861 
9862        -- 4645092  ------------------------------------------------------------------------------
9863        -- To allow MPA report to determine if it should generate report process
9864        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9865        ------------------------------------------------------------------------------------------
9866 
9867        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9868        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9869    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9870    -- call ADRs
9871    -- Bug 4922099
9872    --
9873    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9874         (NVL(l_actual_upg_option, 'N') = 'O') OR
9875         (NVL(l_enc_upg_option, 'N') = 'O')
9876       )
9877    THEN
9878    NULL;
9879    --
9880    --
9881    
9882   l_ccid := AcctDerRule_6(
9883            p_application_id           => p_application_id
9884          , p_ae_header_id             => l_ae_header_id 
9885 , p_source_11 => p_source_11
9886          , x_transaction_coa_id       => l_adr_transaction_coa_id
9887          , x_accounting_coa_id        => l_adr_accounting_coa_id
9888          , x_value_type_code          => l_adr_value_type_code
9889          , p_side                     => 'NA'
9890    );
9891 
9892    xla_ae_lines_pkg.set_ccid(
9893     p_code_combination_id          => l_ccid
9894   , p_value_type_code              => l_adr_value_type_code
9895   , p_transaction_coa_id           => l_adr_transaction_coa_id
9896   , p_accounting_coa_id            => l_adr_accounting_coa_id
9897   , p_adr_code                     => 'CST_DEFAULT'
9898   , p_adr_type_code                => 'S'
9899   , p_component_type               => l_component_type
9900   , p_component_code               => l_component_code
9901   , p_component_type_code          => l_component_type_code
9902   , p_component_appl_id            => l_component_appl_id
9903   , p_amb_context_code             => l_amb_context_code
9904   , p_side                         => 'NA'
9905   );
9906 
9907 
9908    --
9909    --
9910    END IF;
9911 
9912        --
9913        -- Update the line information that should be overwritten
9914        --
9915        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9916                                          p_header_num   => 1);
9917        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9918 
9919        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9920 
9921        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9922           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9923        END IF;
9924 
9925       --
9926       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9927       --
9928       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9929           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9930       ELSE
9931           ---------------------------------------------------------------------------------------------------
9932           -- 4262811a Switch Sign
9933           ---------------------------------------------------------------------------------------------------
9934           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9935           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9936                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9937           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9938                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9939           -- 5132302
9940           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9941                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9942 
9943       END IF;
9944 
9945       -- 4955764
9946       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9947       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9948 
9949 
9950       XLA_AE_LINES_PKG.ValidateCurrentLine;
9951       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9952 
9953       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9954                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9955                ,p_balance_type_code => l_balance_type_code);
9956 
9957    END IF;
9958 
9959    -----------------------------------------------------------------------------------------
9960    -- 4262811 Multiperiod Accounting
9961    -----------------------------------------------------------------------------------------
9962      -- No MPA option is assigned.
9963 
9964 
9965 END IF;
9966 END IF;
9967 --
9968 
9969 --
9970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9971    trace
9972       (p_msg      => 'END of AcctLineType_44'
9973       ,p_level    => C_LEVEL_PROCEDURE
9974       ,p_module   => l_log_module);
9975 END IF;
9976 --
9977 EXCEPTION
9978   WHEN xla_exceptions_pkg.application_exception THEN
9979       RAISE;
9980   WHEN OTHERS THEN
9981        xla_exceptions_pkg.raise_message
9982            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_44');
9983 END AcctLineType_44;
9984 --
9985 
9986 ---------------------------------------
9987 --
9988 -- PRIVATE FUNCTION
9989 --         AcctLineType_45
9990 --
9991 ---------------------------------------
9992 PROCEDURE AcctLineType_45 (
9993   p_application_id        IN NUMBER
9994  ,p_event_id              IN NUMBER
9995  ,p_calculate_acctd_flag  IN VARCHAR2
9996  ,p_calculate_g_l_flag    IN VARCHAR2
9997  ,p_actual_flag           IN OUT VARCHAR2
9998  ,p_balance_type_code     OUT VARCHAR2
9999  ,p_gain_or_loss_ref      OUT VARCHAR2
10000  
10001 --Cost Management Default Account
10002  , p_source_11            IN NUMBER
10003 --Receiving Accounting Line Type
10004  , p_source_78            IN VARCHAR2
10005 --DISTRIBUTION_IDENTIFIER
10006  , p_source_84            IN NUMBER
10007 --Distribution Type
10008  , p_source_85            IN VARCHAR2
10009  , p_source_85_meaning    IN VARCHAR2
10010 --Entered Currency Code
10011  , p_source_88            IN VARCHAR2
10012 --Entered Amount
10013  , p_source_91            IN NUMBER
10014 --Currency Conversion Date
10015  , p_source_92            IN DATE
10016 --Currency Conversion Rate
10017  , p_source_93            IN NUMBER
10018 --Accounted Amount
10019  , p_source_95            IN NUMBER
10020 )
10021 IS
10022 
10023 l_component_type              VARCHAR2(80);
10024 l_component_code              VARCHAR2(30);
10025 l_component_type_code         VARCHAR2(1);
10026 l_component_appl_id           INTEGER;
10027 l_amb_context_code            VARCHAR2(30);
10028 l_entity_code                 VARCHAR2(30);
10029 l_event_class_code            VARCHAR2(30);
10030 l_ae_header_id                NUMBER;
10031 l_event_type_code             VARCHAR2(30);
10032 l_line_definition_code        VARCHAR2(30);
10033 l_line_definition_owner_code  VARCHAR2(1);
10034 --
10035 -- adr variables
10036 l_segment                     VARCHAR2(30);
10037 l_ccid                        NUMBER;
10038 l_adr_transaction_coa_id      NUMBER;
10039 l_adr_accounting_coa_id       NUMBER;
10040 l_adr_flexfield_segment_code  VARCHAR2(30);
10041 l_adr_flex_value_set_id       NUMBER;
10042 l_adr_value_type_code         VARCHAR2(30);
10043 l_adr_value_combination_id    NUMBER;
10044 l_adr_value_segment_code      VARCHAR2(30);
10045 
10046 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10047 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10048 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10049 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10050 
10051 -- 4262811 Variables ------------------------------------------------------------------------------------------
10052 l_entered_amt_idx             NUMBER;
10053 l_accted_amt_idx              NUMBER;
10054 l_acc_rev_flag                VARCHAR2(1);
10055 l_accrual_line_num            NUMBER;
10056 l_tmp_amt                     NUMBER;
10057 l_acc_rev_natural_side_code   VARCHAR2(1);
10058 
10059 l_num_entries                 NUMBER;
10060 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10061 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10062 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10063 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10064 l_recog_line_1                NUMBER;
10065 l_recog_line_2                NUMBER;
10066 
10067 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10068 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10069 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10070 
10071 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10072 
10073 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10074 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10075 
10076 ---------------------------------------------------------------------------------------------------------------
10077 
10078 
10079 --
10080 -- bulk performance
10081 --
10082 l_balance_type_code           VARCHAR2(1);
10083 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10084 l_log_module                  VARCHAR2(240);
10085 
10086 --
10087 -- Upgrade strategy
10088 --
10089 l_actual_upg_option           VARCHAR2(1);
10090 l_enc_upg_option           VARCHAR2(1);
10091 
10092 --
10093 BEGIN
10094 --
10095 IF g_log_enabled THEN
10096       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
10097 END IF;
10098 --
10099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10100 
10101       trace
10102          (p_msg      => 'BEGIN of AcctLineType_45'
10103          ,p_level    => C_LEVEL_PROCEDURE
10104          ,p_module   => l_log_module);
10105 
10106 END IF;
10107 --
10108 l_component_type             := 'AMB_JLT';
10109 l_component_code             := 'CHARGE';
10110 l_component_type_code        := 'S';
10111 l_component_appl_id          :=  707;
10112 l_amb_context_code           := 'DEFAULT';
10113 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
10114 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
10115 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
10116 l_line_definition_owner_code := 'S';
10117 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
10118 --
10119 l_balance_type_code          := 'A';
10120 l_segment                     := NULL;
10121 l_ccid                        := NULL;
10122 l_adr_transaction_coa_id      := NULL;
10123 l_adr_accounting_coa_id       := NULL;
10124 l_adr_flexfield_segment_code  := NULL;
10125 l_adr_flex_value_set_id       := NULL;
10126 l_adr_value_type_code         := NULL;
10127 l_adr_value_combination_id    := NULL;
10128 l_adr_value_segment_code      := NULL;
10129 
10130 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10131 l_bflow_class_code           := '';    -- 4219869 Business Flow
10132 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10133 l_budgetary_control_flag     := 'N';
10134 
10135 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10136 l_bflow_applied_to_amt       := NULL; -- 5132302
10137 l_entered_amt_idx            := NULL;          -- 4262811
10138 l_accted_amt_idx             := NULL;          -- 4262811
10139 l_acc_rev_flag               := NULL;          -- 4262811
10140 l_accrual_line_num           := NULL;          -- 4262811
10141 l_tmp_amt                    := NULL;          -- 4262811
10142 --
10143  
10144 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10145     l_balance_type_code <> 'B' THEN
10146 IF NVL(p_source_78,'
10147 ') =  'Charge'
10148  THEN 
10149 
10150    --
10151    XLA_AE_LINES_PKG.SetNewLine;
10152 
10153    p_balance_type_code          := l_balance_type_code;
10154    -- set the flag so later we will know whether the gain loss line needs to be created
10155    
10156    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10157      p_actual_flag :='A';
10158    END IF;
10159 
10160    --
10161    -- bulk performance
10162    --
10163    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10164                                       p_header_num   => 0); -- 4262811
10165    --
10166    -- set accounting line options
10167    --
10168    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10169            p_natural_side_code          => 'D'
10170          , p_gain_or_loss_flag          => 'N'
10171          , p_gl_transfer_mode_code      => 'S'
10172          , p_acct_entry_type_code       => 'A'
10173          , p_switch_side_flag           => 'Y'
10174          , p_merge_duplicate_code       => 'N'
10175          );
10176    --
10177    l_acc_rev_natural_side_code := 'C';  -- 4262811
10178    -- 
10179    --
10180    -- set accounting line type info
10181    --
10182    xla_ae_lines_pkg.SetAcctLineType
10183       (p_component_type             => l_component_type
10184       ,p_event_type_code            => l_event_type_code
10185       ,p_line_definition_owner_code => l_line_definition_owner_code
10186       ,p_line_definition_code       => l_line_definition_code
10187       ,p_accounting_line_code       => l_component_code
10188       ,p_accounting_line_type_code  => l_component_type_code
10189       ,p_accounting_line_appl_id    => l_component_appl_id
10190       ,p_amb_context_code           => l_amb_context_code
10191       ,p_entity_code                => l_entity_code
10192       ,p_event_class_code           => l_event_class_code);
10193    --
10194    -- set accounting class
10195    --
10196    xla_ae_lines_pkg.SetAcctClass(
10197            p_accounting_class_code  => 'CHARGE'
10198          , p_ae_header_id           => l_ae_header_id
10199          );
10200 
10201    --
10202    -- set rounding class
10203    --
10204    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10205                       'CHARGE';
10206 
10207    --
10208    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10209    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10210    --
10211    -- bulk performance
10212    --
10213    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10214 
10215    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10216       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10217 
10218    -- 4955764
10219    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10220       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10221 
10222    -- 4458381 Public Sector Enh
10223    
10224    --
10225    -- set accounting attributes for the line type
10226    --
10227    l_entered_amt_idx := 3;
10228    l_accted_amt_idx  := 8;
10229    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10230    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10231    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
10232    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10233    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
10234    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10235    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
10236    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10237    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
10238    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10239    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
10240    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10241    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
10242    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10243    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
10244    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10245    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
10246 
10247    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10248    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10249 
10250    ---------------------------------------------------------------------------------------------------------------
10251    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10252    ---------------------------------------------------------------------------------------------------------------
10253    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10254 
10255    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10256    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10257 
10258    IF xla_accounting_cache_pkg.GetValueChar
10259          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10260          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10261    AND l_bflow_method_code = 'PRIOR_ENTRY'
10262 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10263    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10264          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10265        )
10266    THEN
10267          xla_ae_lines_pkg.BflowUpgEntry
10268            (p_business_method_code    => l_bflow_method_code
10269            ,p_business_class_code     => l_bflow_class_code
10270            ,p_balance_type            => l_balance_type_code);
10271    ELSE
10272       NULL;
10273 -- No business flow processing for business flow method of NONE.
10274    END IF;
10275 
10276    --
10277    -- call analytical criteria
10278    --
10279    
10280    --
10281    -- call description
10282    --
10283    -- No description or it is inherited.
10284    --
10285    -- call ADRs
10286    -- Bug 4922099
10287    --
10288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10289         (NVL(l_actual_upg_option, 'N') = 'O') OR
10290         (NVL(l_enc_upg_option, 'N') = 'O')
10291       )
10292    THEN
10293    NULL;
10294    --
10295    --
10296    
10297   l_ccid := AcctDerRule_6(
10298            p_application_id           => p_application_id
10299          , p_ae_header_id             => l_ae_header_id 
10300 , p_source_11 => p_source_11
10301          , x_transaction_coa_id       => l_adr_transaction_coa_id
10302          , x_accounting_coa_id        => l_adr_accounting_coa_id
10303          , x_value_type_code          => l_adr_value_type_code
10304          , p_side                     => 'NA'
10305    );
10306 
10307    xla_ae_lines_pkg.set_ccid(
10308     p_code_combination_id          => l_ccid
10309   , p_value_type_code              => l_adr_value_type_code
10310   , p_transaction_coa_id           => l_adr_transaction_coa_id
10311   , p_accounting_coa_id            => l_adr_accounting_coa_id
10312   , p_adr_code                     => 'CST_DEFAULT'
10313   , p_adr_type_code                => 'S'
10314   , p_component_type               => l_component_type
10315   , p_component_code               => l_component_code
10316   , p_component_type_code          => l_component_type_code
10317   , p_component_appl_id            => l_component_appl_id
10318   , p_amb_context_code             => l_amb_context_code
10319   , p_side                         => 'NA'
10320   );
10321 
10322 
10323    --
10324    --
10325    END IF;
10326    --
10327    -- Bug 4922099
10328    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10329           (NVL(l_enc_upg_option, 'N') = 'O')
10330         ) AND
10331         (l_bflow_method_code = 'PRIOR_ENTRY')
10332       )
10333    THEN
10334       IF
10335       --
10336       1 = 2
10337       --
10338       THEN
10339       xla_accounting_err_pkg.build_message
10340                                     (p_appli_s_name            => 'XLA'
10341                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10342                                     ,p_token_1                 => 'LINE_NUMBER'
10343                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10344                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10345                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10346                                                                              l_component_type
10347                                                                             ,l_component_code
10348                                                                             ,l_component_type_code
10349                                                                             ,l_component_appl_id
10350                                                                             ,l_amb_context_code
10351                                                                             ,l_entity_code
10352                                                                             ,l_event_class_code
10353                                                                            )
10354                                     ,p_token_3                 => 'OWNER'
10355                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10356                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10357                                                                           ,p_lookup_code    => l_component_type_code
10358                                                                          )
10359                                     ,p_token_4                 => 'PRODUCT_NAME'
10360                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10361                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10362                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10363                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10364                                     ,p_ae_header_id            =>  NULL
10365                                        );
10366 
10367         IF (C_LEVEL_ERROR>= g_log_level) THEN
10368                  trace
10369                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10370                       ,p_level    => C_LEVEL_ERROR
10371                       ,p_module   => l_log_module);
10372         END IF;
10373       END IF;
10374    END IF;
10375    --
10376    --
10377    ------------------------------------------------------------------------------------------------
10378    -- 4219869 Business Flow
10379    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10380    -- Prior Entry.  Currently, the following code is always generated.
10381    ------------------------------------------------------------------------------------------------
10382    XLA_AE_LINES_PKG.ValidateCurrentLine;
10383 
10384    ------------------------------------------------------------------------------------
10385    -- 4219869 Business Flow
10386    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10387    ------------------------------------------------------------------------------------
10388    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10389 
10390    ----------------------------------------------------------------------------------
10391    -- 4219869 Business Flow
10392    -- Update journal entry status -- Need to generate this within IF <condition>
10393    ----------------------------------------------------------------------------------
10394    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10395          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10396          ,p_balance_type_code => l_balance_type_code
10397          );
10398 
10399    -------------------------------------------------------------------------------------------
10400    -- 4262811 - Generate the Accrual Reversal lines
10401    -------------------------------------------------------------------------------------------
10402    BEGIN
10403       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10404                               (g_array_event(p_event_id).array_value_num('header_index'));
10405       IF l_acc_rev_flag IS NULL THEN
10406          l_acc_rev_flag := 'N';
10407       END IF;
10408    EXCEPTION
10409       WHEN OTHERS THEN
10410          l_acc_rev_flag := 'N';
10411    END;
10412    --
10413    IF (l_acc_rev_flag = 'Y') THEN
10414 
10415        -- 4645092  ------------------------------------------------------------------------------
10416        -- To allow MPA report to determine if it should generate report process
10417        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10418        ------------------------------------------------------------------------------------------
10419 
10420        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10421        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10422    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10423    -- call ADRs
10424    -- Bug 4922099
10425    --
10426    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10427         (NVL(l_actual_upg_option, 'N') = 'O') OR
10428         (NVL(l_enc_upg_option, 'N') = 'O')
10429       )
10430    THEN
10431    NULL;
10432    --
10433    --
10434    
10435   l_ccid := AcctDerRule_6(
10436            p_application_id           => p_application_id
10437          , p_ae_header_id             => l_ae_header_id 
10438 , p_source_11 => p_source_11
10439          , x_transaction_coa_id       => l_adr_transaction_coa_id
10440          , x_accounting_coa_id        => l_adr_accounting_coa_id
10441          , x_value_type_code          => l_adr_value_type_code
10442          , p_side                     => 'NA'
10443    );
10444 
10445    xla_ae_lines_pkg.set_ccid(
10446     p_code_combination_id          => l_ccid
10447   , p_value_type_code              => l_adr_value_type_code
10448   , p_transaction_coa_id           => l_adr_transaction_coa_id
10449   , p_accounting_coa_id            => l_adr_accounting_coa_id
10450   , p_adr_code                     => 'CST_DEFAULT'
10451   , p_adr_type_code                => 'S'
10452   , p_component_type               => l_component_type
10453   , p_component_code               => l_component_code
10454   , p_component_type_code          => l_component_type_code
10455   , p_component_appl_id            => l_component_appl_id
10456   , p_amb_context_code             => l_amb_context_code
10457   , p_side                         => 'NA'
10458   );
10459 
10460 
10461    --
10462    --
10463    END IF;
10464 
10465        --
10466        -- Update the line information that should be overwritten
10467        --
10468        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10469                                          p_header_num   => 1);
10470        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10471 
10472        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10473 
10474        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10475           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10476        END IF;
10477 
10478       --
10479       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10480       --
10481       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10482           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10483       ELSE
10484           ---------------------------------------------------------------------------------------------------
10485           -- 4262811a Switch Sign
10486           ---------------------------------------------------------------------------------------------------
10487           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10488           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10489                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10490           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10491                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10492           -- 5132302
10493           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10494                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10495 
10496       END IF;
10497 
10498       -- 4955764
10499       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10501 
10502 
10503       XLA_AE_LINES_PKG.ValidateCurrentLine;
10504       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10505 
10506       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10507                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10508                ,p_balance_type_code => l_balance_type_code);
10509 
10510    END IF;
10511 
10512    -----------------------------------------------------------------------------------------
10513    -- 4262811 Multiperiod Accounting
10514    -----------------------------------------------------------------------------------------
10515      -- No MPA option is assigned.
10516 
10517 
10518 END IF;
10519 END IF;
10520 --
10521 
10522 --
10523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10524    trace
10525       (p_msg      => 'END of AcctLineType_45'
10526       ,p_level    => C_LEVEL_PROCEDURE
10527       ,p_module   => l_log_module);
10528 END IF;
10529 --
10530 EXCEPTION
10531   WHEN xla_exceptions_pkg.application_exception THEN
10532       RAISE;
10533   WHEN OTHERS THEN
10534        xla_exceptions_pkg.raise_message
10535            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_45');
10536 END AcctLineType_45;
10537 --
10538 
10539 ---------------------------------------
10540 --
10541 -- PRIVATE FUNCTION
10542 --         AcctLineType_46
10543 --
10544 ---------------------------------------
10545 PROCEDURE AcctLineType_46 (
10546   p_application_id        IN NUMBER
10547  ,p_event_id              IN NUMBER
10548  ,p_calculate_acctd_flag  IN VARCHAR2
10549  ,p_calculate_g_l_flag    IN VARCHAR2
10550  ,p_actual_flag           IN OUT VARCHAR2
10551  ,p_balance_type_code     OUT VARCHAR2
10552  ,p_gain_or_loss_ref      OUT VARCHAR2
10553  
10554 --TRANSACTION_ID
10555  , p_source_1            IN NUMBER
10556 --Item Concatenated Segments
10557  , p_source_2            IN VARCHAR2
10558 --Transaction Quantity
10559  , p_source_3            IN NUMBER
10560 --Transaction Unit of Measure Code
10561  , p_source_4            IN VARCHAR2
10562 --Inventory Transaction Type Description
10563  , p_source_5            IN VARCHAR2
10564 --Cost Management Default Account
10565  , p_source_11            IN NUMBER
10566 --DISTRIBUTION_IDENTIFIER
10567  , p_source_84            IN NUMBER
10568 --Distribution Type
10569  , p_source_85            IN VARCHAR2
10570  , p_source_85_meaning    IN VARCHAR2
10571 --Entered Currency Code
10572  , p_source_88            IN VARCHAR2
10573 --Entered Amount
10574  , p_source_91            IN NUMBER
10575 --Currency Conversion Date
10576  , p_source_92            IN DATE
10577 --Currency Conversion Rate
10578  , p_source_93            IN NUMBER
10579 --Currency Conversion Type
10580  , p_source_94            IN VARCHAR2
10581 --Accounted Amount
10582  , p_source_95            IN NUMBER
10583 --Accounting Line Type
10584  , p_source_97            IN NUMBER
10585 )
10586 IS
10587 
10588 l_component_type              VARCHAR2(80);
10589 l_component_code              VARCHAR2(30);
10590 l_component_type_code         VARCHAR2(1);
10591 l_component_appl_id           INTEGER;
10592 l_amb_context_code            VARCHAR2(30);
10593 l_entity_code                 VARCHAR2(30);
10594 l_event_class_code            VARCHAR2(30);
10595 l_ae_header_id                NUMBER;
10596 l_event_type_code             VARCHAR2(30);
10597 l_line_definition_code        VARCHAR2(30);
10598 l_line_definition_owner_code  VARCHAR2(1);
10599 --
10600 -- adr variables
10601 l_segment                     VARCHAR2(30);
10602 l_ccid                        NUMBER;
10603 l_adr_transaction_coa_id      NUMBER;
10604 l_adr_accounting_coa_id       NUMBER;
10605 l_adr_flexfield_segment_code  VARCHAR2(30);
10606 l_adr_flex_value_set_id       NUMBER;
10607 l_adr_value_type_code         VARCHAR2(30);
10608 l_adr_value_combination_id    NUMBER;
10609 l_adr_value_segment_code      VARCHAR2(30);
10610 
10611 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10612 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10613 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10614 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10615 
10616 -- 4262811 Variables ------------------------------------------------------------------------------------------
10617 l_entered_amt_idx             NUMBER;
10618 l_accted_amt_idx              NUMBER;
10619 l_acc_rev_flag                VARCHAR2(1);
10620 l_accrual_line_num            NUMBER;
10621 l_tmp_amt                     NUMBER;
10622 l_acc_rev_natural_side_code   VARCHAR2(1);
10623 
10624 l_num_entries                 NUMBER;
10625 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10626 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10627 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10628 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10629 l_recog_line_1                NUMBER;
10630 l_recog_line_2                NUMBER;
10631 
10632 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10633 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10634 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10635 
10636 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10637 
10638 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10639 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10640 
10641 ---------------------------------------------------------------------------------------------------------------
10642 
10643 
10644 --
10645 -- bulk performance
10646 --
10647 l_balance_type_code           VARCHAR2(1);
10648 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10649 l_log_module                  VARCHAR2(240);
10650 
10651 --
10652 -- Upgrade strategy
10653 --
10654 l_actual_upg_option           VARCHAR2(1);
10655 l_enc_upg_option           VARCHAR2(1);
10656 
10657 --
10658 BEGIN
10659 --
10660 IF g_log_enabled THEN
10661       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
10662 END IF;
10663 --
10664 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10665 
10666       trace
10667          (p_msg      => 'BEGIN of AcctLineType_46'
10668          ,p_level    => C_LEVEL_PROCEDURE
10669          ,p_module   => l_log_module);
10670 
10671 END IF;
10672 --
10673 l_component_type             := 'AMB_JLT';
10674 l_component_code             := 'CLEARING';
10675 l_component_type_code        := 'S';
10676 l_component_appl_id          :=  707;
10677 l_amb_context_code           := 'DEFAULT';
10678 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
10679 l_event_class_code           := 'LOG_INTERCOMPANY';
10680 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
10681 l_line_definition_owner_code := 'S';
10682 l_line_definition_code       := 'PI_LOG_IC_SHIPMENT_RCPT';
10683 --
10684 l_balance_type_code          := 'A';
10685 l_segment                     := NULL;
10686 l_ccid                        := NULL;
10687 l_adr_transaction_coa_id      := NULL;
10688 l_adr_accounting_coa_id       := NULL;
10689 l_adr_flexfield_segment_code  := NULL;
10690 l_adr_flex_value_set_id       := NULL;
10691 l_adr_value_type_code         := NULL;
10692 l_adr_value_combination_id    := NULL;
10693 l_adr_value_segment_code      := NULL;
10694 
10695 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10696 l_bflow_class_code           := '';    -- 4219869 Business Flow
10697 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10698 l_budgetary_control_flag     := 'N';
10699 
10700 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10701 l_bflow_applied_to_amt       := NULL; -- 5132302
10702 l_entered_amt_idx            := NULL;          -- 4262811
10703 l_accted_amt_idx             := NULL;          -- 4262811
10704 l_acc_rev_flag               := NULL;          -- 4262811
10705 l_accrual_line_num           := NULL;          -- 4262811
10706 l_tmp_amt                    := NULL;          -- 4262811
10707 --
10708  
10709 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10710     l_balance_type_code <> 'B' THEN
10711 IF NVL(p_source_97,9E125) =  31
10712  THEN 
10713 
10714    --
10715    XLA_AE_LINES_PKG.SetNewLine;
10716 
10717    p_balance_type_code          := l_balance_type_code;
10718    -- set the flag so later we will know whether the gain loss line needs to be created
10719    
10720    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10721      p_actual_flag :='A';
10722    END IF;
10723 
10724    --
10725    -- bulk performance
10726    --
10727    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10728                                       p_header_num   => 0); -- 4262811
10729    --
10730    -- set accounting line options
10731    --
10732    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10733            p_natural_side_code          => 'D'
10734          , p_gain_or_loss_flag          => 'N'
10735          , p_gl_transfer_mode_code      => 'S'
10736          , p_acct_entry_type_code       => 'A'
10737          , p_switch_side_flag           => 'Y'
10738          , p_merge_duplicate_code       => 'N'
10739          );
10740    --
10741    l_acc_rev_natural_side_code := 'C';  -- 4262811
10742    -- 
10743    --
10744    -- set accounting line type info
10745    --
10746    xla_ae_lines_pkg.SetAcctLineType
10747       (p_component_type             => l_component_type
10748       ,p_event_type_code            => l_event_type_code
10749       ,p_line_definition_owner_code => l_line_definition_owner_code
10750       ,p_line_definition_code       => l_line_definition_code
10751       ,p_accounting_line_code       => l_component_code
10752       ,p_accounting_line_type_code  => l_component_type_code
10753       ,p_accounting_line_appl_id    => l_component_appl_id
10754       ,p_amb_context_code           => l_amb_context_code
10755       ,p_entity_code                => l_entity_code
10756       ,p_event_class_code           => l_event_class_code);
10757    --
10758    -- set accounting class
10759    --
10760    xla_ae_lines_pkg.SetAcctClass(
10761            p_accounting_class_code  => 'CLEARING'
10762          , p_ae_header_id           => l_ae_header_id
10763          );
10764 
10765    --
10766    -- set rounding class
10767    --
10768    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10769                       'CLEARING';
10770 
10771    --
10772    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10773    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10774    --
10775    -- bulk performance
10776    --
10777    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10778 
10779    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10780       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10781 
10782    -- 4955764
10783    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10784       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10785 
10786    -- 4458381 Public Sector Enh
10787    
10788    --
10789    -- set accounting attributes for the line type
10790    --
10791    l_entered_amt_idx := 3;
10792    l_accted_amt_idx  := 8;
10793    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10794    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10795    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
10796    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10797    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
10798    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10799    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
10800    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10801    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
10802    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10803    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
10804    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10805    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
10806    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10807    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
10808    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10809    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
10810 
10811    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10812    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10813 
10814    ---------------------------------------------------------------------------------------------------------------
10815    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10816    ---------------------------------------------------------------------------------------------------------------
10817    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10818 
10819    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10820    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10821 
10822    IF xla_accounting_cache_pkg.GetValueChar
10823          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10824          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10825    AND l_bflow_method_code = 'PRIOR_ENTRY'
10826 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10827    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10828          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10829        )
10830    THEN
10831          xla_ae_lines_pkg.BflowUpgEntry
10832            (p_business_method_code    => l_bflow_method_code
10833            ,p_business_class_code     => l_bflow_class_code
10834            ,p_balance_type            => l_balance_type_code);
10835    ELSE
10836       NULL;
10837 -- No business flow processing for business flow method of NONE.
10838    END IF;
10839 
10840    --
10841    -- call analytical criteria
10842    --
10843    
10844    --
10845    -- call description
10846    --
10847    
10848 xla_ae_lines_pkg.SetLineDescription(
10849    p_ae_header_id => l_ae_header_id
10850   ,p_description  => Description_1 (
10851      p_application_id         => p_application_id
10852    , p_ae_header_id           => l_ae_header_id 
10853 , p_source_1 => p_source_1
10854 , p_source_2 => p_source_2
10855 , p_source_3 => p_source_3
10856 , p_source_4 => p_source_4
10857 , p_source_5 => p_source_5
10858    )
10859 );
10860 
10861 
10862    --
10863    -- call ADRs
10864    -- Bug 4922099
10865    --
10866    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10867         (NVL(l_actual_upg_option, 'N') = 'O') OR
10868         (NVL(l_enc_upg_option, 'N') = 'O')
10869       )
10870    THEN
10871    NULL;
10872    --
10873    --
10874    
10875   l_ccid := AcctDerRule_6(
10876            p_application_id           => p_application_id
10877          , p_ae_header_id             => l_ae_header_id 
10878 , p_source_11 => p_source_11
10879          , x_transaction_coa_id       => l_adr_transaction_coa_id
10880          , x_accounting_coa_id        => l_adr_accounting_coa_id
10881          , x_value_type_code          => l_adr_value_type_code
10882          , p_side                     => 'NA'
10883    );
10884 
10885    xla_ae_lines_pkg.set_ccid(
10886     p_code_combination_id          => l_ccid
10887   , p_value_type_code              => l_adr_value_type_code
10888   , p_transaction_coa_id           => l_adr_transaction_coa_id
10889   , p_accounting_coa_id            => l_adr_accounting_coa_id
10890   , p_adr_code                     => 'CST_DEFAULT'
10891   , p_adr_type_code                => 'S'
10892   , p_component_type               => l_component_type
10893   , p_component_code               => l_component_code
10894   , p_component_type_code          => l_component_type_code
10895   , p_component_appl_id            => l_component_appl_id
10896   , p_amb_context_code             => l_amb_context_code
10897   , p_side                         => 'NA'
10898   );
10899 
10900 
10901    --
10902    --
10903    END IF;
10904    --
10905    -- Bug 4922099
10906    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10907           (NVL(l_enc_upg_option, 'N') = 'O')
10908         ) AND
10909         (l_bflow_method_code = 'PRIOR_ENTRY')
10910       )
10911    THEN
10912       IF
10913       --
10914       1 = 2
10915       --
10916       THEN
10917       xla_accounting_err_pkg.build_message
10918                                     (p_appli_s_name            => 'XLA'
10919                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10920                                     ,p_token_1                 => 'LINE_NUMBER'
10921                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10922                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10923                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10924                                                                              l_component_type
10925                                                                             ,l_component_code
10926                                                                             ,l_component_type_code
10927                                                                             ,l_component_appl_id
10928                                                                             ,l_amb_context_code
10929                                                                             ,l_entity_code
10930                                                                             ,l_event_class_code
10931                                                                            )
10932                                     ,p_token_3                 => 'OWNER'
10933                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10934                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10935                                                                           ,p_lookup_code    => l_component_type_code
10936                                                                          )
10937                                     ,p_token_4                 => 'PRODUCT_NAME'
10938                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10939                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10940                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10941                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10942                                     ,p_ae_header_id            =>  NULL
10943                                        );
10944 
10945         IF (C_LEVEL_ERROR>= g_log_level) THEN
10946                  trace
10947                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10948                       ,p_level    => C_LEVEL_ERROR
10949                       ,p_module   => l_log_module);
10950         END IF;
10951       END IF;
10952    END IF;
10953    --
10954    --
10955    ------------------------------------------------------------------------------------------------
10956    -- 4219869 Business Flow
10957    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10958    -- Prior Entry.  Currently, the following code is always generated.
10959    ------------------------------------------------------------------------------------------------
10960    XLA_AE_LINES_PKG.ValidateCurrentLine;
10961 
10962    ------------------------------------------------------------------------------------
10963    -- 4219869 Business Flow
10964    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10965    ------------------------------------------------------------------------------------
10966    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10967 
10968    ----------------------------------------------------------------------------------
10969    -- 4219869 Business Flow
10970    -- Update journal entry status -- Need to generate this within IF <condition>
10971    ----------------------------------------------------------------------------------
10972    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10973          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10974          ,p_balance_type_code => l_balance_type_code
10975          );
10976 
10977    -------------------------------------------------------------------------------------------
10978    -- 4262811 - Generate the Accrual Reversal lines
10979    -------------------------------------------------------------------------------------------
10980    BEGIN
10981       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10982                               (g_array_event(p_event_id).array_value_num('header_index'));
10983       IF l_acc_rev_flag IS NULL THEN
10984          l_acc_rev_flag := 'N';
10985       END IF;
10986    EXCEPTION
10987       WHEN OTHERS THEN
10988          l_acc_rev_flag := 'N';
10989    END;
10990    --
10991    IF (l_acc_rev_flag = 'Y') THEN
10992 
10993        -- 4645092  ------------------------------------------------------------------------------
10994        -- To allow MPA report to determine if it should generate report process
10995        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10996        ------------------------------------------------------------------------------------------
10997 
10998        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10999        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11000    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11001    -- call ADRs
11002    -- Bug 4922099
11003    --
11004    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11005         (NVL(l_actual_upg_option, 'N') = 'O') OR
11006         (NVL(l_enc_upg_option, 'N') = 'O')
11007       )
11008    THEN
11009    NULL;
11010    --
11011    --
11012    
11013   l_ccid := AcctDerRule_6(
11014            p_application_id           => p_application_id
11015          , p_ae_header_id             => l_ae_header_id 
11016 , p_source_11 => p_source_11
11017          , x_transaction_coa_id       => l_adr_transaction_coa_id
11018          , x_accounting_coa_id        => l_adr_accounting_coa_id
11019          , x_value_type_code          => l_adr_value_type_code
11020          , p_side                     => 'NA'
11021    );
11022 
11023    xla_ae_lines_pkg.set_ccid(
11024     p_code_combination_id          => l_ccid
11025   , p_value_type_code              => l_adr_value_type_code
11026   , p_transaction_coa_id           => l_adr_transaction_coa_id
11027   , p_accounting_coa_id            => l_adr_accounting_coa_id
11028   , p_adr_code                     => 'CST_DEFAULT'
11029   , p_adr_type_code                => 'S'
11030   , p_component_type               => l_component_type
11031   , p_component_code               => l_component_code
11032   , p_component_type_code          => l_component_type_code
11033   , p_component_appl_id            => l_component_appl_id
11034   , p_amb_context_code             => l_amb_context_code
11035   , p_side                         => 'NA'
11036   );
11037 
11038 
11039    --
11040    --
11041    END IF;
11042 
11043        --
11044        -- Update the line information that should be overwritten
11045        --
11046        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11047                                          p_header_num   => 1);
11048        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11049 
11050        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11051 
11052        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11053           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11054        END IF;
11055 
11056       --
11057       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11058       --
11059       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11060           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11061       ELSE
11062           ---------------------------------------------------------------------------------------------------
11063           -- 4262811a Switch Sign
11064           ---------------------------------------------------------------------------------------------------
11065           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11066           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11067                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11068           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11069                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11070           -- 5132302
11071           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11072                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11073 
11074       END IF;
11075 
11076       -- 4955764
11077       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11078       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11079 
11080 
11081       XLA_AE_LINES_PKG.ValidateCurrentLine;
11082       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11083 
11084       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11085                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11086                ,p_balance_type_code => l_balance_type_code);
11087 
11088    END IF;
11089 
11090    -----------------------------------------------------------------------------------------
11091    -- 4262811 Multiperiod Accounting
11092    -----------------------------------------------------------------------------------------
11093      -- No MPA option is assigned.
11094 
11095 
11096 END IF;
11097 END IF;
11098 --
11099 
11100 --
11101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11102    trace
11103       (p_msg      => 'END of AcctLineType_46'
11104       ,p_level    => C_LEVEL_PROCEDURE
11105       ,p_module   => l_log_module);
11106 END IF;
11107 --
11108 EXCEPTION
11109   WHEN xla_exceptions_pkg.application_exception THEN
11110       RAISE;
11111   WHEN OTHERS THEN
11112        xla_exceptions_pkg.raise_message
11113            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_46');
11114 END AcctLineType_46;
11115 --
11116 
11117 ---------------------------------------
11118 --
11119 -- PRIVATE FUNCTION
11120 --         AcctLineType_47
11121 --
11122 ---------------------------------------
11123 PROCEDURE AcctLineType_47 (
11124   p_application_id        IN NUMBER
11125  ,p_event_id              IN NUMBER
11126  ,p_calculate_acctd_flag  IN VARCHAR2
11127  ,p_calculate_g_l_flag    IN VARCHAR2
11128  ,p_actual_flag           IN OUT VARCHAR2
11129  ,p_balance_type_code     OUT VARCHAR2
11130  ,p_gain_or_loss_ref      OUT VARCHAR2
11131  
11132 --TRANSACTION_ID
11133  , p_source_1            IN NUMBER
11134 --Item Concatenated Segments
11135  , p_source_2            IN VARCHAR2
11136 --Transaction Quantity
11137  , p_source_3            IN NUMBER
11138 --Transaction Unit of Measure Code
11139  , p_source_4            IN VARCHAR2
11140 --Inventory Transaction Type Description
11141  , p_source_5            IN VARCHAR2
11142 --Cost Management Default Account
11143  , p_source_11            IN NUMBER
11144 --Applied to Application ID
11145  , p_source_79            IN NUMBER
11146 --Applied to Distribution Link Type
11147  , p_source_80            IN VARCHAR2
11148 --Applied to Entity Code
11149  , p_source_81            IN VARCHAR2
11150 --Applied To Purchase Document Identifier
11151  , p_source_83            IN NUMBER
11152 --DISTRIBUTION_IDENTIFIER
11153  , p_source_84            IN NUMBER
11154 --Distribution Type
11155  , p_source_85            IN VARCHAR2
11156  , p_source_85_meaning    IN VARCHAR2
11157 --PO Budget Account
11158  , p_source_86            IN NUMBER
11159 --Encumbrance Reversal Amount Entered
11160  , p_source_87            IN NUMBER
11161 --Entered Currency Code
11162  , p_source_88            IN VARCHAR2
11163 --Transaction Encumbrance Reversal Amount
11164  , p_source_89            IN NUMBER
11165 --Entered Amount
11166  , p_source_91            IN NUMBER
11167 --Currency Conversion Date
11168  , p_source_92            IN DATE
11169 --Currency Conversion Rate
11170  , p_source_93            IN NUMBER
11171 --Currency Conversion Type
11172  , p_source_94            IN VARCHAR2
11173 --Accounted Amount
11174  , p_source_95            IN NUMBER
11175 --Purchasing Encumbrance Type Identifier
11176  , p_source_96            IN NUMBER
11177 --Accounting Line Type
11178  , p_source_97            IN NUMBER
11179 --Costing Encumbrance Upgrade Option
11180  , p_source_100            IN VARCHAR2
11181 --TXN_PO_DISTRIBUTION_ID
11182  , p_source_101            IN NUMBER
11183 )
11184 IS
11185 
11186 l_component_type              VARCHAR2(80);
11187 l_component_code              VARCHAR2(30);
11188 l_component_type_code         VARCHAR2(1);
11189 l_component_appl_id           INTEGER;
11190 l_amb_context_code            VARCHAR2(30);
11191 l_entity_code                 VARCHAR2(30);
11192 l_event_class_code            VARCHAR2(30);
11193 l_ae_header_id                NUMBER;
11194 l_event_type_code             VARCHAR2(30);
11195 l_line_definition_code        VARCHAR2(30);
11196 l_line_definition_owner_code  VARCHAR2(1);
11197 --
11198 -- adr variables
11199 l_segment                     VARCHAR2(30);
11200 l_ccid                        NUMBER;
11201 l_adr_transaction_coa_id      NUMBER;
11202 l_adr_accounting_coa_id       NUMBER;
11203 l_adr_flexfield_segment_code  VARCHAR2(30);
11204 l_adr_flex_value_set_id       NUMBER;
11205 l_adr_value_type_code         VARCHAR2(30);
11206 l_adr_value_combination_id    NUMBER;
11207 l_adr_value_segment_code      VARCHAR2(30);
11208 
11209 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11210 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11211 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11212 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11213 
11214 -- 4262811 Variables ------------------------------------------------------------------------------------------
11215 l_entered_amt_idx             NUMBER;
11216 l_accted_amt_idx              NUMBER;
11217 l_acc_rev_flag                VARCHAR2(1);
11218 l_accrual_line_num            NUMBER;
11219 l_tmp_amt                     NUMBER;
11220 l_acc_rev_natural_side_code   VARCHAR2(1);
11221 
11222 l_num_entries                 NUMBER;
11223 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11224 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11225 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11226 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11227 l_recog_line_1                NUMBER;
11228 l_recog_line_2                NUMBER;
11229 
11230 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11231 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11232 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11233 
11234 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11235 
11236 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11237 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11238 
11239 ---------------------------------------------------------------------------------------------------------------
11240 
11241 
11242 --
11243 -- bulk performance
11244 --
11245 l_balance_type_code           VARCHAR2(1);
11246 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11247 l_log_module                  VARCHAR2(240);
11248 
11249 --
11250 -- Upgrade strategy
11251 --
11252 l_actual_upg_option           VARCHAR2(1);
11253 l_enc_upg_option           VARCHAR2(1);
11254 
11255 --
11256 BEGIN
11257 --
11258 IF g_log_enabled THEN
11259       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
11260 END IF;
11261 --
11262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11263 
11264       trace
11265          (p_msg      => 'BEGIN of AcctLineType_47'
11266          ,p_level    => C_LEVEL_PROCEDURE
11267          ,p_module   => l_log_module);
11268 
11269 END IF;
11270 --
11271 l_component_type             := 'AMB_JLT';
11272 l_component_code             := 'CLEARING';
11273 l_component_type_code        := 'S';
11274 l_component_appl_id          :=  707;
11275 l_amb_context_code           := 'DEFAULT';
11276 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
11277 l_event_class_code           := 'PURCHASE_ORDER';
11278 l_event_type_code            := 'LOG_RET_RI_INV';
11279 l_line_definition_owner_code := 'S';
11280 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
11281 --
11282 l_balance_type_code          := 'A';
11283 l_segment                     := NULL;
11284 l_ccid                        := NULL;
11285 l_adr_transaction_coa_id      := NULL;
11286 l_adr_accounting_coa_id       := NULL;
11287 l_adr_flexfield_segment_code  := NULL;
11288 l_adr_flex_value_set_id       := NULL;
11289 l_adr_value_type_code         := NULL;
11290 l_adr_value_combination_id    := NULL;
11291 l_adr_value_segment_code      := NULL;
11292 
11293 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11294 l_bflow_class_code           := '';    -- 4219869 Business Flow
11295 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11296 l_budgetary_control_flag     := 'N';
11297 
11298 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11299 l_bflow_applied_to_amt       := NULL; -- 5132302
11300 l_entered_amt_idx            := NULL;          -- 4262811
11301 l_accted_amt_idx             := NULL;          -- 4262811
11302 l_acc_rev_flag               := NULL;          -- 4262811
11303 l_accrual_line_num           := NULL;          -- 4262811
11304 l_tmp_amt                    := NULL;          -- 4262811
11305 --
11306  
11307 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11308     l_balance_type_code <> 'B' THEN
11309 IF NVL(p_source_97,9E125) =  31
11310  THEN 
11311 
11312    --
11313    XLA_AE_LINES_PKG.SetNewLine;
11314 
11315    p_balance_type_code          := l_balance_type_code;
11316    -- set the flag so later we will know whether the gain loss line needs to be created
11317    
11318    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11319      p_actual_flag :='A';
11320    END IF;
11321 
11322    --
11323    -- bulk performance
11324    --
11325    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11326                                       p_header_num   => 0); -- 4262811
11327    --
11328    -- set accounting line options
11329    --
11330    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11331            p_natural_side_code          => 'D'
11332          , p_gain_or_loss_flag          => 'N'
11333          , p_gl_transfer_mode_code      => 'S'
11334          , p_acct_entry_type_code       => 'A'
11335          , p_switch_side_flag           => 'Y'
11336          , p_merge_duplicate_code       => 'N'
11337          );
11338    --
11339    l_acc_rev_natural_side_code := 'C';  -- 4262811
11340    -- 
11341    --
11342    -- set accounting line type info
11343    --
11344    xla_ae_lines_pkg.SetAcctLineType
11345       (p_component_type             => l_component_type
11346       ,p_event_type_code            => l_event_type_code
11347       ,p_line_definition_owner_code => l_line_definition_owner_code
11348       ,p_line_definition_code       => l_line_definition_code
11349       ,p_accounting_line_code       => l_component_code
11350       ,p_accounting_line_type_code  => l_component_type_code
11351       ,p_accounting_line_appl_id    => l_component_appl_id
11352       ,p_amb_context_code           => l_amb_context_code
11353       ,p_entity_code                => l_entity_code
11354       ,p_event_class_code           => l_event_class_code);
11355    --
11356    -- set accounting class
11357    --
11358    xla_ae_lines_pkg.SetAcctClass(
11359            p_accounting_class_code  => 'CLEARING'
11360          , p_ae_header_id           => l_ae_header_id
11361          );
11362 
11363    --
11364    -- set rounding class
11365    --
11366    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11367                       'CLEARING';
11368 
11369    --
11370    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11371    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11372    --
11373    -- bulk performance
11374    --
11375    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11376 
11377    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11378       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11379 
11380    -- 4955764
11381    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11382       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11383 
11384    -- 4458381 Public Sector Enh
11385    
11386    --
11387    -- set accounting attributes for the line type
11388    --
11389    l_entered_amt_idx := 17;
11390    l_accted_amt_idx  := 22;
11391    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11392    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
11393    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
11394    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11395    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
11396    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
11397    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
11398    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
11399    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
11400    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11401    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
11402    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
11403    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
11404    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
11405    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
11406    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
11407    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
11408    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
11409    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
11410    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
11411    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
11412    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
11413    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
11414    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
11415    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
11416    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
11417    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
11418    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
11419    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
11420    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
11421    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
11422    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
11423    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
11424    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
11425    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
11426    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
11427    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
11428    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
11429    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
11430    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
11431    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
11432    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
11433    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
11434    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
11435    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
11436    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
11437    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
11438    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
11439    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
11440 
11441    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11442    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11443 
11444    ---------------------------------------------------------------------------------------------------------------
11445    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11446    ---------------------------------------------------------------------------------------------------------------
11447    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11448 
11449    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11450    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11451 
11452    IF xla_accounting_cache_pkg.GetValueChar
11453          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11454          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11455    AND l_bflow_method_code = 'PRIOR_ENTRY'
11456 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11457    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11458          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11459        )
11460    THEN
11461          xla_ae_lines_pkg.BflowUpgEntry
11462            (p_business_method_code    => l_bflow_method_code
11463            ,p_business_class_code     => l_bflow_class_code
11464            ,p_balance_type            => l_balance_type_code);
11465    ELSE
11466       NULL;
11467 -- No business flow processing for business flow method of NONE.
11468    END IF;
11469 
11470    --
11471    -- call analytical criteria
11472    --
11473    
11474    --
11475    -- call description
11476    --
11477    
11478 xla_ae_lines_pkg.SetLineDescription(
11479    p_ae_header_id => l_ae_header_id
11480   ,p_description  => Description_1 (
11481      p_application_id         => p_application_id
11482    , p_ae_header_id           => l_ae_header_id 
11483 , p_source_1 => p_source_1
11484 , p_source_2 => p_source_2
11485 , p_source_3 => p_source_3
11486 , p_source_4 => p_source_4
11487 , p_source_5 => p_source_5
11488    )
11489 );
11490 
11491 
11492    --
11493    -- call ADRs
11494    -- Bug 4922099
11495    --
11496    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11497         (NVL(l_actual_upg_option, 'N') = 'O') OR
11498         (NVL(l_enc_upg_option, 'N') = 'O')
11499       )
11500    THEN
11501    NULL;
11502    --
11503    --
11504    
11505   l_ccid := AcctDerRule_6(
11506            p_application_id           => p_application_id
11507          , p_ae_header_id             => l_ae_header_id 
11508 , p_source_11 => p_source_11
11509          , x_transaction_coa_id       => l_adr_transaction_coa_id
11510          , x_accounting_coa_id        => l_adr_accounting_coa_id
11511          , x_value_type_code          => l_adr_value_type_code
11512          , p_side                     => 'NA'
11513    );
11514 
11515    xla_ae_lines_pkg.set_ccid(
11516     p_code_combination_id          => l_ccid
11517   , p_value_type_code              => l_adr_value_type_code
11518   , p_transaction_coa_id           => l_adr_transaction_coa_id
11519   , p_accounting_coa_id            => l_adr_accounting_coa_id
11520   , p_adr_code                     => 'CST_DEFAULT'
11521   , p_adr_type_code                => 'S'
11522   , p_component_type               => l_component_type
11523   , p_component_code               => l_component_code
11524   , p_component_type_code          => l_component_type_code
11525   , p_component_appl_id            => l_component_appl_id
11526   , p_amb_context_code             => l_amb_context_code
11527   , p_side                         => 'NA'
11528   );
11529 
11530 
11531    --
11532    --
11533    END IF;
11534    --
11535    -- Bug 4922099
11536    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11537           (NVL(l_enc_upg_option, 'N') = 'O')
11538         ) AND
11539         (l_bflow_method_code = 'PRIOR_ENTRY')
11540       )
11541    THEN
11542       IF
11543       --
11544       1 = 2
11545       --
11546       THEN
11547       xla_accounting_err_pkg.build_message
11548                                     (p_appli_s_name            => 'XLA'
11549                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11550                                     ,p_token_1                 => 'LINE_NUMBER'
11551                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11552                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11553                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11554                                                                              l_component_type
11555                                                                             ,l_component_code
11556                                                                             ,l_component_type_code
11557                                                                             ,l_component_appl_id
11558                                                                             ,l_amb_context_code
11559                                                                             ,l_entity_code
11560                                                                             ,l_event_class_code
11561                                                                            )
11562                                     ,p_token_3                 => 'OWNER'
11563                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11564                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11565                                                                           ,p_lookup_code    => l_component_type_code
11566                                                                          )
11567                                     ,p_token_4                 => 'PRODUCT_NAME'
11568                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11569                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11570                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11571                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11572                                     ,p_ae_header_id            =>  NULL
11573                                        );
11574 
11575         IF (C_LEVEL_ERROR>= g_log_level) THEN
11576                  trace
11577                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11578                       ,p_level    => C_LEVEL_ERROR
11579                       ,p_module   => l_log_module);
11580         END IF;
11581       END IF;
11582    END IF;
11583    --
11584    --
11585    ------------------------------------------------------------------------------------------------
11586    -- 4219869 Business Flow
11587    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11588    -- Prior Entry.  Currently, the following code is always generated.
11589    ------------------------------------------------------------------------------------------------
11590    XLA_AE_LINES_PKG.ValidateCurrentLine;
11591 
11592    ------------------------------------------------------------------------------------
11593    -- 4219869 Business Flow
11594    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11595    ------------------------------------------------------------------------------------
11596    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11597 
11598    ----------------------------------------------------------------------------------
11599    -- 4219869 Business Flow
11600    -- Update journal entry status -- Need to generate this within IF <condition>
11601    ----------------------------------------------------------------------------------
11602    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11603          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11604          ,p_balance_type_code => l_balance_type_code
11605          );
11606 
11607    -------------------------------------------------------------------------------------------
11608    -- 4262811 - Generate the Accrual Reversal lines
11609    -------------------------------------------------------------------------------------------
11610    BEGIN
11611       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11612                               (g_array_event(p_event_id).array_value_num('header_index'));
11613       IF l_acc_rev_flag IS NULL THEN
11614          l_acc_rev_flag := 'N';
11615       END IF;
11616    EXCEPTION
11617       WHEN OTHERS THEN
11618          l_acc_rev_flag := 'N';
11619    END;
11620    --
11621    IF (l_acc_rev_flag = 'Y') THEN
11622 
11623        -- 4645092  ------------------------------------------------------------------------------
11624        -- To allow MPA report to determine if it should generate report process
11625        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11626        ------------------------------------------------------------------------------------------
11627 
11628        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11629        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11630    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11631    -- call ADRs
11632    -- Bug 4922099
11633    --
11634    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11635         (NVL(l_actual_upg_option, 'N') = 'O') OR
11636         (NVL(l_enc_upg_option, 'N') = 'O')
11637       )
11638    THEN
11639    NULL;
11640    --
11641    --
11642    
11643   l_ccid := AcctDerRule_6(
11644            p_application_id           => p_application_id
11645          , p_ae_header_id             => l_ae_header_id 
11646 , p_source_11 => p_source_11
11647          , x_transaction_coa_id       => l_adr_transaction_coa_id
11648          , x_accounting_coa_id        => l_adr_accounting_coa_id
11649          , x_value_type_code          => l_adr_value_type_code
11650          , p_side                     => 'NA'
11651    );
11652 
11653    xla_ae_lines_pkg.set_ccid(
11654     p_code_combination_id          => l_ccid
11655   , p_value_type_code              => l_adr_value_type_code
11656   , p_transaction_coa_id           => l_adr_transaction_coa_id
11657   , p_accounting_coa_id            => l_adr_accounting_coa_id
11658   , p_adr_code                     => 'CST_DEFAULT'
11659   , p_adr_type_code                => 'S'
11660   , p_component_type               => l_component_type
11661   , p_component_code               => l_component_code
11662   , p_component_type_code          => l_component_type_code
11663   , p_component_appl_id            => l_component_appl_id
11664   , p_amb_context_code             => l_amb_context_code
11665   , p_side                         => 'NA'
11666   );
11667 
11668 
11669    --
11670    --
11671    END IF;
11672 
11673        --
11674        -- Update the line information that should be overwritten
11675        --
11676        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11677                                          p_header_num   => 1);
11678        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11679 
11680        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11681 
11682        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11683           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11684        END IF;
11685 
11686       --
11687       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11688       --
11689       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11690           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11691       ELSE
11692           ---------------------------------------------------------------------------------------------------
11693           -- 4262811a Switch Sign
11694           ---------------------------------------------------------------------------------------------------
11695           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11696           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11697                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11698           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11699                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11700           -- 5132302
11701           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11702                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11703 
11704       END IF;
11705 
11706       -- 4955764
11707       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11709 
11710 
11711       XLA_AE_LINES_PKG.ValidateCurrentLine;
11712       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11713 
11714       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11715                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11716                ,p_balance_type_code => l_balance_type_code);
11717 
11718    END IF;
11719 
11720    -----------------------------------------------------------------------------------------
11721    -- 4262811 Multiperiod Accounting
11722    -----------------------------------------------------------------------------------------
11723      -- No MPA option is assigned.
11724 
11725 
11726 END IF;
11727 END IF;
11728 --
11729 
11730 --
11731 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11732    trace
11733       (p_msg      => 'END of AcctLineType_47'
11734       ,p_level    => C_LEVEL_PROCEDURE
11735       ,p_module   => l_log_module);
11736 END IF;
11737 --
11738 EXCEPTION
11739   WHEN xla_exceptions_pkg.application_exception THEN
11740       RAISE;
11741   WHEN OTHERS THEN
11742        xla_exceptions_pkg.raise_message
11743            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_47');
11744 END AcctLineType_47;
11745 --
11746 
11747 ---------------------------------------
11748 --
11749 -- PRIVATE FUNCTION
11750 --         AcctLineType_48
11751 --
11752 ---------------------------------------
11753 PROCEDURE AcctLineType_48 (
11754   p_application_id        IN NUMBER
11755  ,p_event_id              IN NUMBER
11756  ,p_calculate_acctd_flag  IN VARCHAR2
11757  ,p_calculate_g_l_flag    IN VARCHAR2
11758  ,p_actual_flag           IN OUT VARCHAR2
11759  ,p_balance_type_code     OUT VARCHAR2
11760  ,p_gain_or_loss_ref      OUT VARCHAR2
11761  
11762 --TRANSACTION_ID
11763  , p_source_1            IN NUMBER
11764 --Item Concatenated Segments
11765  , p_source_2            IN VARCHAR2
11766 --Transaction Quantity
11767  , p_source_3            IN NUMBER
11768 --Transaction Unit of Measure Code
11769  , p_source_4            IN VARCHAR2
11770 --Inventory Transaction Type Description
11771  , p_source_5            IN VARCHAR2
11772 --Cost Management Default Account
11773  , p_source_11            IN NUMBER
11774 --Applied to Application ID
11775  , p_source_79            IN NUMBER
11776 --Applied to Distribution Link Type
11777  , p_source_80            IN VARCHAR2
11778 --Applied to Entity Code
11779  , p_source_81            IN VARCHAR2
11780 --Applied To Purchase Document Identifier
11781  , p_source_83            IN NUMBER
11782 --DISTRIBUTION_IDENTIFIER
11783  , p_source_84            IN NUMBER
11784 --Distribution Type
11785  , p_source_85            IN VARCHAR2
11786  , p_source_85_meaning    IN VARCHAR2
11787 --PO Budget Account
11788  , p_source_86            IN NUMBER
11789 --Encumbrance Reversal Amount Entered
11790  , p_source_87            IN NUMBER
11791 --Entered Currency Code
11792  , p_source_88            IN VARCHAR2
11793 --Transaction Encumbrance Reversal Amount
11794  , p_source_89            IN NUMBER
11795 --Entered Amount
11796  , p_source_91            IN NUMBER
11797 --Currency Conversion Date
11798  , p_source_92            IN DATE
11799 --Currency Conversion Rate
11800  , p_source_93            IN NUMBER
11801 --Currency Conversion Type
11802  , p_source_94            IN VARCHAR2
11803 --Accounted Amount
11804  , p_source_95            IN NUMBER
11805 --Purchasing Encumbrance Type Identifier
11806  , p_source_96            IN NUMBER
11807 --Accounting Line Type
11808  , p_source_97            IN NUMBER
11809 --Costing Encumbrance Upgrade Option
11810  , p_source_100            IN VARCHAR2
11811 --TXN_PO_DISTRIBUTION_ID
11812  , p_source_101            IN NUMBER
11813 )
11814 IS
11815 
11816 l_component_type              VARCHAR2(80);
11817 l_component_code              VARCHAR2(30);
11818 l_component_type_code         VARCHAR2(1);
11819 l_component_appl_id           INTEGER;
11820 l_amb_context_code            VARCHAR2(30);
11821 l_entity_code                 VARCHAR2(30);
11822 l_event_class_code            VARCHAR2(30);
11823 l_ae_header_id                NUMBER;
11824 l_event_type_code             VARCHAR2(30);
11825 l_line_definition_code        VARCHAR2(30);
11826 l_line_definition_owner_code  VARCHAR2(1);
11827 --
11828 -- adr variables
11829 l_segment                     VARCHAR2(30);
11830 l_ccid                        NUMBER;
11831 l_adr_transaction_coa_id      NUMBER;
11832 l_adr_accounting_coa_id       NUMBER;
11833 l_adr_flexfield_segment_code  VARCHAR2(30);
11834 l_adr_flex_value_set_id       NUMBER;
11835 l_adr_value_type_code         VARCHAR2(30);
11836 l_adr_value_combination_id    NUMBER;
11837 l_adr_value_segment_code      VARCHAR2(30);
11838 
11839 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11840 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11841 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11842 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11843 
11844 -- 4262811 Variables ------------------------------------------------------------------------------------------
11845 l_entered_amt_idx             NUMBER;
11846 l_accted_amt_idx              NUMBER;
11847 l_acc_rev_flag                VARCHAR2(1);
11848 l_accrual_line_num            NUMBER;
11849 l_tmp_amt                     NUMBER;
11850 l_acc_rev_natural_side_code   VARCHAR2(1);
11851 
11852 l_num_entries                 NUMBER;
11853 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11854 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11855 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11856 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11857 l_recog_line_1                NUMBER;
11858 l_recog_line_2                NUMBER;
11859 
11860 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11861 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11862 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11863 
11864 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11865 
11866 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11867 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11868 
11869 ---------------------------------------------------------------------------------------------------------------
11870 
11871 
11872 --
11873 -- bulk performance
11874 --
11875 l_balance_type_code           VARCHAR2(1);
11876 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11877 l_log_module                  VARCHAR2(240);
11878 
11879 --
11880 -- Upgrade strategy
11881 --
11882 l_actual_upg_option           VARCHAR2(1);
11883 l_enc_upg_option           VARCHAR2(1);
11884 
11885 --
11886 BEGIN
11887 --
11888 IF g_log_enabled THEN
11889       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
11890 END IF;
11891 --
11892 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11893 
11894       trace
11895          (p_msg      => 'BEGIN of AcctLineType_48'
11896          ,p_level    => C_LEVEL_PROCEDURE
11897          ,p_module   => l_log_module);
11898 
11899 END IF;
11900 --
11901 l_component_type             := 'AMB_JLT';
11902 l_component_code             := 'CLEARING';
11903 l_component_type_code        := 'S';
11904 l_component_appl_id          :=  707;
11905 l_amb_context_code           := 'DEFAULT';
11906 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
11907 l_event_class_code           := 'PURCHASE_ORDER';
11908 l_event_type_code            := 'LOG_PO_DEL_INV';
11909 l_line_definition_owner_code := 'S';
11910 l_line_definition_code       := 'PI_LOG_DEL_INV';
11911 --
11912 l_balance_type_code          := 'A';
11913 l_segment                     := NULL;
11914 l_ccid                        := NULL;
11915 l_adr_transaction_coa_id      := NULL;
11916 l_adr_accounting_coa_id       := NULL;
11917 l_adr_flexfield_segment_code  := NULL;
11918 l_adr_flex_value_set_id       := NULL;
11919 l_adr_value_type_code         := NULL;
11920 l_adr_value_combination_id    := NULL;
11921 l_adr_value_segment_code      := NULL;
11922 
11923 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11924 l_bflow_class_code           := '';    -- 4219869 Business Flow
11925 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11926 l_budgetary_control_flag     := 'N';
11927 
11928 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11929 l_bflow_applied_to_amt       := NULL; -- 5132302
11930 l_entered_amt_idx            := NULL;          -- 4262811
11931 l_accted_amt_idx             := NULL;          -- 4262811
11932 l_acc_rev_flag               := NULL;          -- 4262811
11933 l_accrual_line_num           := NULL;          -- 4262811
11934 l_tmp_amt                    := NULL;          -- 4262811
11935 --
11936  
11937 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11938     l_balance_type_code <> 'B' THEN
11939 IF NVL(p_source_97,9E125) =  31
11940  THEN 
11941 
11942    --
11943    XLA_AE_LINES_PKG.SetNewLine;
11944 
11945    p_balance_type_code          := l_balance_type_code;
11946    -- set the flag so later we will know whether the gain loss line needs to be created
11947    
11948    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11949      p_actual_flag :='A';
11950    END IF;
11951 
11952    --
11953    -- bulk performance
11954    --
11955    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11956                                       p_header_num   => 0); -- 4262811
11957    --
11958    -- set accounting line options
11959    --
11960    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11961            p_natural_side_code          => 'D'
11962          , p_gain_or_loss_flag          => 'N'
11963          , p_gl_transfer_mode_code      => 'S'
11964          , p_acct_entry_type_code       => 'A'
11965          , p_switch_side_flag           => 'Y'
11966          , p_merge_duplicate_code       => 'N'
11967          );
11968    --
11969    l_acc_rev_natural_side_code := 'C';  -- 4262811
11970    -- 
11971    --
11972    -- set accounting line type info
11973    --
11974    xla_ae_lines_pkg.SetAcctLineType
11975       (p_component_type             => l_component_type
11976       ,p_event_type_code            => l_event_type_code
11977       ,p_line_definition_owner_code => l_line_definition_owner_code
11978       ,p_line_definition_code       => l_line_definition_code
11979       ,p_accounting_line_code       => l_component_code
11980       ,p_accounting_line_type_code  => l_component_type_code
11981       ,p_accounting_line_appl_id    => l_component_appl_id
11982       ,p_amb_context_code           => l_amb_context_code
11983       ,p_entity_code                => l_entity_code
11984       ,p_event_class_code           => l_event_class_code);
11985    --
11986    -- set accounting class
11987    --
11988    xla_ae_lines_pkg.SetAcctClass(
11989            p_accounting_class_code  => 'CLEARING'
11990          , p_ae_header_id           => l_ae_header_id
11991          );
11992 
11993    --
11994    -- set rounding class
11995    --
11996    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11997                       'CLEARING';
11998 
11999    --
12000    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12001    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12002    --
12003    -- bulk performance
12004    --
12005    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12006 
12007    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12008       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12009 
12010    -- 4955764
12011    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12012       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12013 
12014    -- 4458381 Public Sector Enh
12015    
12016    --
12017    -- set accounting attributes for the line type
12018    --
12019    l_entered_amt_idx := 17;
12020    l_accted_amt_idx  := 22;
12021    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12022    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
12023    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
12024    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12025    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
12026    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
12027    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
12028    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
12029    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
12030    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12031    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
12032    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
12033    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
12034    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
12035    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
12036    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
12037    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
12038    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
12039    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
12040    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
12041    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
12042    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
12043    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
12044    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
12045    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
12046    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
12047    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
12048    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
12049    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
12050    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
12051    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
12052    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
12053    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
12054    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
12055    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
12056    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
12057    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
12058    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
12059    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
12060    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
12061    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
12062    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
12063    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
12064    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
12065    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
12066    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
12067    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
12068    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
12069    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
12070 
12071    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12072    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12073 
12074    ---------------------------------------------------------------------------------------------------------------
12075    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12076    ---------------------------------------------------------------------------------------------------------------
12077    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12078 
12079    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12080    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12081 
12082    IF xla_accounting_cache_pkg.GetValueChar
12083          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12084          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12085    AND l_bflow_method_code = 'PRIOR_ENTRY'
12086 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12087    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12088          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12089        )
12090    THEN
12091          xla_ae_lines_pkg.BflowUpgEntry
12092            (p_business_method_code    => l_bflow_method_code
12093            ,p_business_class_code     => l_bflow_class_code
12094            ,p_balance_type            => l_balance_type_code);
12095    ELSE
12096       NULL;
12097 -- No business flow processing for business flow method of NONE.
12098    END IF;
12099 
12100    --
12101    -- call analytical criteria
12102    --
12103    
12104    --
12105    -- call description
12106    --
12107    
12108 xla_ae_lines_pkg.SetLineDescription(
12109    p_ae_header_id => l_ae_header_id
12110   ,p_description  => Description_1 (
12111      p_application_id         => p_application_id
12112    , p_ae_header_id           => l_ae_header_id 
12113 , p_source_1 => p_source_1
12114 , p_source_2 => p_source_2
12115 , p_source_3 => p_source_3
12116 , p_source_4 => p_source_4
12117 , p_source_5 => p_source_5
12118    )
12119 );
12120 
12121 
12122    --
12123    -- call ADRs
12124    -- Bug 4922099
12125    --
12126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12127         (NVL(l_actual_upg_option, 'N') = 'O') OR
12128         (NVL(l_enc_upg_option, 'N') = 'O')
12129       )
12130    THEN
12131    NULL;
12132    --
12133    --
12134    
12135   l_ccid := AcctDerRule_6(
12136            p_application_id           => p_application_id
12137          , p_ae_header_id             => l_ae_header_id 
12138 , p_source_11 => p_source_11
12139          , x_transaction_coa_id       => l_adr_transaction_coa_id
12140          , x_accounting_coa_id        => l_adr_accounting_coa_id
12141          , x_value_type_code          => l_adr_value_type_code
12142          , p_side                     => 'NA'
12143    );
12144 
12145    xla_ae_lines_pkg.set_ccid(
12146     p_code_combination_id          => l_ccid
12147   , p_value_type_code              => l_adr_value_type_code
12148   , p_transaction_coa_id           => l_adr_transaction_coa_id
12149   , p_accounting_coa_id            => l_adr_accounting_coa_id
12150   , p_adr_code                     => 'CST_DEFAULT'
12151   , p_adr_type_code                => 'S'
12152   , p_component_type               => l_component_type
12153   , p_component_code               => l_component_code
12154   , p_component_type_code          => l_component_type_code
12155   , p_component_appl_id            => l_component_appl_id
12156   , p_amb_context_code             => l_amb_context_code
12157   , p_side                         => 'NA'
12158   );
12159 
12160 
12161    --
12162    --
12163    END IF;
12164    --
12165    -- Bug 4922099
12166    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12167           (NVL(l_enc_upg_option, 'N') = 'O')
12168         ) AND
12169         (l_bflow_method_code = 'PRIOR_ENTRY')
12170       )
12171    THEN
12172       IF
12173       --
12174       1 = 2
12175       --
12176       THEN
12177       xla_accounting_err_pkg.build_message
12178                                     (p_appli_s_name            => 'XLA'
12179                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12180                                     ,p_token_1                 => 'LINE_NUMBER'
12181                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12182                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12183                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12184                                                                              l_component_type
12185                                                                             ,l_component_code
12186                                                                             ,l_component_type_code
12187                                                                             ,l_component_appl_id
12188                                                                             ,l_amb_context_code
12189                                                                             ,l_entity_code
12190                                                                             ,l_event_class_code
12191                                                                            )
12192                                     ,p_token_3                 => 'OWNER'
12193                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12194                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12195                                                                           ,p_lookup_code    => l_component_type_code
12196                                                                          )
12197                                     ,p_token_4                 => 'PRODUCT_NAME'
12198                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12199                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12200                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12201                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12202                                     ,p_ae_header_id            =>  NULL
12203                                        );
12204 
12205         IF (C_LEVEL_ERROR>= g_log_level) THEN
12206                  trace
12207                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12208                       ,p_level    => C_LEVEL_ERROR
12209                       ,p_module   => l_log_module);
12210         END IF;
12211       END IF;
12212    END IF;
12213    --
12214    --
12215    ------------------------------------------------------------------------------------------------
12216    -- 4219869 Business Flow
12217    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12218    -- Prior Entry.  Currently, the following code is always generated.
12219    ------------------------------------------------------------------------------------------------
12220    XLA_AE_LINES_PKG.ValidateCurrentLine;
12221 
12222    ------------------------------------------------------------------------------------
12223    -- 4219869 Business Flow
12224    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12225    ------------------------------------------------------------------------------------
12226    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12227 
12228    ----------------------------------------------------------------------------------
12229    -- 4219869 Business Flow
12230    -- Update journal entry status -- Need to generate this within IF <condition>
12231    ----------------------------------------------------------------------------------
12232    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12233          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12234          ,p_balance_type_code => l_balance_type_code
12235          );
12236 
12237    -------------------------------------------------------------------------------------------
12238    -- 4262811 - Generate the Accrual Reversal lines
12239    -------------------------------------------------------------------------------------------
12240    BEGIN
12241       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12242                               (g_array_event(p_event_id).array_value_num('header_index'));
12243       IF l_acc_rev_flag IS NULL THEN
12244          l_acc_rev_flag := 'N';
12245       END IF;
12246    EXCEPTION
12247       WHEN OTHERS THEN
12248          l_acc_rev_flag := 'N';
12249    END;
12250    --
12251    IF (l_acc_rev_flag = 'Y') THEN
12252 
12253        -- 4645092  ------------------------------------------------------------------------------
12254        -- To allow MPA report to determine if it should generate report process
12255        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12256        ------------------------------------------------------------------------------------------
12257 
12258        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12259        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12260    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12261    -- call ADRs
12262    -- Bug 4922099
12263    --
12264    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12265         (NVL(l_actual_upg_option, 'N') = 'O') OR
12266         (NVL(l_enc_upg_option, 'N') = 'O')
12267       )
12268    THEN
12269    NULL;
12270    --
12271    --
12272    
12273   l_ccid := AcctDerRule_6(
12274            p_application_id           => p_application_id
12275          , p_ae_header_id             => l_ae_header_id 
12276 , p_source_11 => p_source_11
12277          , x_transaction_coa_id       => l_adr_transaction_coa_id
12278          , x_accounting_coa_id        => l_adr_accounting_coa_id
12279          , x_value_type_code          => l_adr_value_type_code
12280          , p_side                     => 'NA'
12281    );
12282 
12283    xla_ae_lines_pkg.set_ccid(
12284     p_code_combination_id          => l_ccid
12285   , p_value_type_code              => l_adr_value_type_code
12286   , p_transaction_coa_id           => l_adr_transaction_coa_id
12287   , p_accounting_coa_id            => l_adr_accounting_coa_id
12288   , p_adr_code                     => 'CST_DEFAULT'
12289   , p_adr_type_code                => 'S'
12290   , p_component_type               => l_component_type
12291   , p_component_code               => l_component_code
12292   , p_component_type_code          => l_component_type_code
12293   , p_component_appl_id            => l_component_appl_id
12294   , p_amb_context_code             => l_amb_context_code
12295   , p_side                         => 'NA'
12296   );
12297 
12298 
12299    --
12300    --
12301    END IF;
12302 
12303        --
12304        -- Update the line information that should be overwritten
12305        --
12306        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12307                                          p_header_num   => 1);
12308        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12309 
12310        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12311 
12312        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12313           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12314        END IF;
12315 
12316       --
12317       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12318       --
12319       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12320           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12321       ELSE
12322           ---------------------------------------------------------------------------------------------------
12323           -- 4262811a Switch Sign
12324           ---------------------------------------------------------------------------------------------------
12325           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12326           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12327                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12328           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12329                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12330           -- 5132302
12331           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12332                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12333 
12334       END IF;
12335 
12336       -- 4955764
12337       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12338       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12339 
12340 
12341       XLA_AE_LINES_PKG.ValidateCurrentLine;
12342       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12343 
12344       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12345                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12346                ,p_balance_type_code => l_balance_type_code);
12347 
12348    END IF;
12349 
12350    -----------------------------------------------------------------------------------------
12351    -- 4262811 Multiperiod Accounting
12352    -----------------------------------------------------------------------------------------
12353      -- No MPA option is assigned.
12354 
12355 
12356 END IF;
12357 END IF;
12358 --
12359 
12360 --
12361 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12362    trace
12363       (p_msg      => 'END of AcctLineType_48'
12364       ,p_level    => C_LEVEL_PROCEDURE
12365       ,p_module   => l_log_module);
12366 END IF;
12367 --
12368 EXCEPTION
12369   WHEN xla_exceptions_pkg.application_exception THEN
12370       RAISE;
12371   WHEN OTHERS THEN
12372        xla_exceptions_pkg.raise_message
12373            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_48');
12374 END AcctLineType_48;
12375 --
12376 
12377 ---------------------------------------
12378 --
12379 -- PRIVATE FUNCTION
12380 --         AcctLineType_49
12381 --
12382 ---------------------------------------
12383 PROCEDURE AcctLineType_49 (
12384   p_application_id        IN NUMBER
12385  ,p_event_id              IN NUMBER
12386  ,p_calculate_acctd_flag  IN VARCHAR2
12387  ,p_calculate_g_l_flag    IN VARCHAR2
12388  ,p_actual_flag           IN OUT VARCHAR2
12389  ,p_balance_type_code     OUT VARCHAR2
12390  ,p_gain_or_loss_ref      OUT VARCHAR2
12391  
12392 --TRANSACTION_ID
12393  , p_source_1            IN NUMBER
12394 --Item Concatenated Segments
12395  , p_source_2            IN VARCHAR2
12396 --Transaction Quantity
12397  , p_source_3            IN NUMBER
12398 --Transaction Unit of Measure Code
12399  , p_source_4            IN VARCHAR2
12400 --Inventory Transaction Type Description
12401  , p_source_5            IN VARCHAR2
12402 --Cost Management Default Account
12403  , p_source_11            IN NUMBER
12404 --Applied to Application ID
12405  , p_source_79            IN NUMBER
12406 --Applied to Distribution Link Type
12407  , p_source_80            IN VARCHAR2
12408 --Applied to Entity Code
12409  , p_source_81            IN VARCHAR2
12410 --Applied To Purchase Document Identifier
12411  , p_source_83            IN NUMBER
12412 --DISTRIBUTION_IDENTIFIER
12413  , p_source_84            IN NUMBER
12414 --Distribution Type
12415  , p_source_85            IN VARCHAR2
12416  , p_source_85_meaning    IN VARCHAR2
12417 --PO Budget Account
12418  , p_source_86            IN NUMBER
12419 --Encumbrance Reversal Amount Entered
12420  , p_source_87            IN NUMBER
12421 --Entered Currency Code
12422  , p_source_88            IN VARCHAR2
12423 --Transaction Encumbrance Reversal Amount
12424  , p_source_89            IN NUMBER
12425 --Entered Amount
12426  , p_source_91            IN NUMBER
12427 --Currency Conversion Date
12428  , p_source_92            IN DATE
12429 --Currency Conversion Rate
12430  , p_source_93            IN NUMBER
12431 --Currency Conversion Type
12432  , p_source_94            IN VARCHAR2
12433 --Accounted Amount
12434  , p_source_95            IN NUMBER
12435 --Purchasing Encumbrance Type Identifier
12436  , p_source_96            IN NUMBER
12437 --Accounting Line Type
12438  , p_source_97            IN NUMBER
12439 --Costing Encumbrance Upgrade Option
12440  , p_source_100            IN VARCHAR2
12441 --TXN_PO_DISTRIBUTION_ID
12442  , p_source_101            IN NUMBER
12443 )
12444 IS
12445 
12446 l_component_type              VARCHAR2(80);
12447 l_component_code              VARCHAR2(30);
12448 l_component_type_code         VARCHAR2(1);
12449 l_component_appl_id           INTEGER;
12450 l_amb_context_code            VARCHAR2(30);
12451 l_entity_code                 VARCHAR2(30);
12452 l_event_class_code            VARCHAR2(30);
12453 l_ae_header_id                NUMBER;
12454 l_event_type_code             VARCHAR2(30);
12455 l_line_definition_code        VARCHAR2(30);
12456 l_line_definition_owner_code  VARCHAR2(1);
12457 --
12458 -- adr variables
12459 l_segment                     VARCHAR2(30);
12460 l_ccid                        NUMBER;
12461 l_adr_transaction_coa_id      NUMBER;
12462 l_adr_accounting_coa_id       NUMBER;
12463 l_adr_flexfield_segment_code  VARCHAR2(30);
12464 l_adr_flex_value_set_id       NUMBER;
12465 l_adr_value_type_code         VARCHAR2(30);
12466 l_adr_value_combination_id    NUMBER;
12467 l_adr_value_segment_code      VARCHAR2(30);
12468 
12469 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12470 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12471 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12472 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12473 
12474 -- 4262811 Variables ------------------------------------------------------------------------------------------
12475 l_entered_amt_idx             NUMBER;
12476 l_accted_amt_idx              NUMBER;
12477 l_acc_rev_flag                VARCHAR2(1);
12478 l_accrual_line_num            NUMBER;
12479 l_tmp_amt                     NUMBER;
12480 l_acc_rev_natural_side_code   VARCHAR2(1);
12481 
12482 l_num_entries                 NUMBER;
12483 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12484 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12485 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12486 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12487 l_recog_line_1                NUMBER;
12488 l_recog_line_2                NUMBER;
12489 
12490 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12491 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12492 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12493 
12494 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12495 
12496 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12497 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12498 
12499 ---------------------------------------------------------------------------------------------------------------
12500 
12501 
12502 --
12503 -- bulk performance
12504 --
12505 l_balance_type_code           VARCHAR2(1);
12506 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12507 l_log_module                  VARCHAR2(240);
12508 
12509 --
12510 -- Upgrade strategy
12511 --
12512 l_actual_upg_option           VARCHAR2(1);
12513 l_enc_upg_option           VARCHAR2(1);
12514 
12515 --
12516 BEGIN
12517 --
12518 IF g_log_enabled THEN
12519       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
12520 END IF;
12521 --
12522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12523 
12524       trace
12525          (p_msg      => 'BEGIN of AcctLineType_49'
12526          ,p_level    => C_LEVEL_PROCEDURE
12527          ,p_module   => l_log_module);
12528 
12529 END IF;
12530 --
12531 l_component_type             := 'AMB_JLT';
12532 l_component_code             := 'CLEARING';
12533 l_component_type_code        := 'S';
12534 l_component_appl_id          :=  707;
12535 l_amb_context_code           := 'DEFAULT';
12536 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
12537 l_event_class_code           := 'PURCHASE_ORDER';
12538 l_event_type_code            := 'RET_RI_INV';
12539 l_line_definition_owner_code := 'S';
12540 l_line_definition_code       := 'PI_RET_RI_INV';
12541 --
12542 l_balance_type_code          := 'A';
12543 l_segment                     := NULL;
12544 l_ccid                        := NULL;
12545 l_adr_transaction_coa_id      := NULL;
12546 l_adr_accounting_coa_id       := NULL;
12547 l_adr_flexfield_segment_code  := NULL;
12548 l_adr_flex_value_set_id       := NULL;
12549 l_adr_value_type_code         := NULL;
12550 l_adr_value_combination_id    := NULL;
12551 l_adr_value_segment_code      := NULL;
12552 
12553 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12554 l_bflow_class_code           := '';    -- 4219869 Business Flow
12555 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12556 l_budgetary_control_flag     := 'N';
12557 
12558 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12559 l_bflow_applied_to_amt       := NULL; -- 5132302
12560 l_entered_amt_idx            := NULL;          -- 4262811
12561 l_accted_amt_idx             := NULL;          -- 4262811
12562 l_acc_rev_flag               := NULL;          -- 4262811
12563 l_accrual_line_num           := NULL;          -- 4262811
12564 l_tmp_amt                    := NULL;          -- 4262811
12565 --
12566  
12567 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12568     l_balance_type_code <> 'B' THEN
12569 IF NVL(p_source_97,9E125) =  31
12570  THEN 
12571 
12572    --
12573    XLA_AE_LINES_PKG.SetNewLine;
12574 
12575    p_balance_type_code          := l_balance_type_code;
12576    -- set the flag so later we will know whether the gain loss line needs to be created
12577    
12578    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12579      p_actual_flag :='A';
12580    END IF;
12581 
12582    --
12583    -- bulk performance
12584    --
12585    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12586                                       p_header_num   => 0); -- 4262811
12587    --
12588    -- set accounting line options
12589    --
12590    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12591            p_natural_side_code          => 'D'
12592          , p_gain_or_loss_flag          => 'N'
12593          , p_gl_transfer_mode_code      => 'S'
12594          , p_acct_entry_type_code       => 'A'
12595          , p_switch_side_flag           => 'Y'
12596          , p_merge_duplicate_code       => 'N'
12597          );
12598    --
12599    l_acc_rev_natural_side_code := 'C';  -- 4262811
12600    -- 
12601    --
12602    -- set accounting line type info
12603    --
12604    xla_ae_lines_pkg.SetAcctLineType
12605       (p_component_type             => l_component_type
12606       ,p_event_type_code            => l_event_type_code
12607       ,p_line_definition_owner_code => l_line_definition_owner_code
12608       ,p_line_definition_code       => l_line_definition_code
12609       ,p_accounting_line_code       => l_component_code
12610       ,p_accounting_line_type_code  => l_component_type_code
12611       ,p_accounting_line_appl_id    => l_component_appl_id
12612       ,p_amb_context_code           => l_amb_context_code
12613       ,p_entity_code                => l_entity_code
12614       ,p_event_class_code           => l_event_class_code);
12615    --
12616    -- set accounting class
12617    --
12618    xla_ae_lines_pkg.SetAcctClass(
12619            p_accounting_class_code  => 'CLEARING'
12620          , p_ae_header_id           => l_ae_header_id
12621          );
12622 
12623    --
12624    -- set rounding class
12625    --
12626    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12627                       'CLEARING';
12628 
12629    --
12630    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12631    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12632    --
12633    -- bulk performance
12634    --
12635    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12636 
12637    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12638       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
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('header_index'));
12643 
12644    -- 4458381 Public Sector Enh
12645    
12646    --
12647    -- set accounting attributes for the line type
12648    --
12649    l_entered_amt_idx := 17;
12650    l_accted_amt_idx  := 22;
12651    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12652    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
12653    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
12654    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12655    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
12656    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
12657    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
12658    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
12659    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
12660    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12661    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
12662    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
12663    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
12664    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
12665    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
12666    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
12667    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
12668    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
12669    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
12670    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
12671    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
12672    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
12673    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
12674    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
12675    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
12676    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
12677    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
12678    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
12679    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
12680    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
12681    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
12682    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
12683    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
12684    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
12685    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
12686    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
12687    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
12688    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
12689    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
12690    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
12691    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
12692    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
12693    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
12694    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
12695    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
12696    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
12697    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
12698    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
12699    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
12700 
12701    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12702    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12703 
12704    ---------------------------------------------------------------------------------------------------------------
12705    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12706    ---------------------------------------------------------------------------------------------------------------
12707    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12708 
12709    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12710    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12711 
12712    IF xla_accounting_cache_pkg.GetValueChar
12713          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12714          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12715    AND l_bflow_method_code = 'PRIOR_ENTRY'
12716 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12717    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12718          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12719        )
12720    THEN
12721          xla_ae_lines_pkg.BflowUpgEntry
12722            (p_business_method_code    => l_bflow_method_code
12723            ,p_business_class_code     => l_bflow_class_code
12724            ,p_balance_type            => l_balance_type_code);
12725    ELSE
12726       NULL;
12727 -- No business flow processing for business flow method of NONE.
12728    END IF;
12729 
12730    --
12731    -- call analytical criteria
12732    --
12733    
12734    --
12735    -- call description
12736    --
12737    
12738 xla_ae_lines_pkg.SetLineDescription(
12739    p_ae_header_id => l_ae_header_id
12740   ,p_description  => Description_1 (
12741      p_application_id         => p_application_id
12742    , p_ae_header_id           => l_ae_header_id 
12743 , p_source_1 => p_source_1
12744 , p_source_2 => p_source_2
12745 , p_source_3 => p_source_3
12746 , p_source_4 => p_source_4
12747 , p_source_5 => p_source_5
12748    )
12749 );
12750 
12751 
12752    --
12753    -- call ADRs
12754    -- Bug 4922099
12755    --
12756    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12757         (NVL(l_actual_upg_option, 'N') = 'O') OR
12758         (NVL(l_enc_upg_option, 'N') = 'O')
12759       )
12760    THEN
12761    NULL;
12762    --
12763    --
12764    
12765   l_ccid := AcctDerRule_6(
12766            p_application_id           => p_application_id
12767          , p_ae_header_id             => l_ae_header_id 
12768 , p_source_11 => p_source_11
12769          , x_transaction_coa_id       => l_adr_transaction_coa_id
12770          , x_accounting_coa_id        => l_adr_accounting_coa_id
12771          , x_value_type_code          => l_adr_value_type_code
12772          , p_side                     => 'NA'
12773    );
12774 
12775    xla_ae_lines_pkg.set_ccid(
12776     p_code_combination_id          => l_ccid
12777   , p_value_type_code              => l_adr_value_type_code
12778   , p_transaction_coa_id           => l_adr_transaction_coa_id
12779   , p_accounting_coa_id            => l_adr_accounting_coa_id
12780   , p_adr_code                     => 'CST_DEFAULT'
12781   , p_adr_type_code                => 'S'
12782   , p_component_type               => l_component_type
12783   , p_component_code               => l_component_code
12784   , p_component_type_code          => l_component_type_code
12785   , p_component_appl_id            => l_component_appl_id
12786   , p_amb_context_code             => l_amb_context_code
12787   , p_side                         => 'NA'
12788   );
12789 
12790 
12791    --
12792    --
12793    END IF;
12794    --
12795    -- Bug 4922099
12796    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12797           (NVL(l_enc_upg_option, 'N') = 'O')
12798         ) AND
12799         (l_bflow_method_code = 'PRIOR_ENTRY')
12800       )
12801    THEN
12802       IF
12803       --
12804       1 = 2
12805       --
12806       THEN
12807       xla_accounting_err_pkg.build_message
12808                                     (p_appli_s_name            => 'XLA'
12809                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12810                                     ,p_token_1                 => 'LINE_NUMBER'
12811                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12812                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12813                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12814                                                                              l_component_type
12815                                                                             ,l_component_code
12816                                                                             ,l_component_type_code
12817                                                                             ,l_component_appl_id
12818                                                                             ,l_amb_context_code
12819                                                                             ,l_entity_code
12820                                                                             ,l_event_class_code
12821                                                                            )
12822                                     ,p_token_3                 => 'OWNER'
12823                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12824                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12825                                                                           ,p_lookup_code    => l_component_type_code
12826                                                                          )
12827                                     ,p_token_4                 => 'PRODUCT_NAME'
12828                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12829                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12830                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12831                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12832                                     ,p_ae_header_id            =>  NULL
12833                                        );
12834 
12835         IF (C_LEVEL_ERROR>= g_log_level) THEN
12836                  trace
12837                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12838                       ,p_level    => C_LEVEL_ERROR
12839                       ,p_module   => l_log_module);
12840         END IF;
12841       END IF;
12842    END IF;
12843    --
12844    --
12845    ------------------------------------------------------------------------------------------------
12846    -- 4219869 Business Flow
12847    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12848    -- Prior Entry.  Currently, the following code is always generated.
12849    ------------------------------------------------------------------------------------------------
12850    XLA_AE_LINES_PKG.ValidateCurrentLine;
12851 
12852    ------------------------------------------------------------------------------------
12853    -- 4219869 Business Flow
12854    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12855    ------------------------------------------------------------------------------------
12856    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12857 
12858    ----------------------------------------------------------------------------------
12859    -- 4219869 Business Flow
12860    -- Update journal entry status -- Need to generate this within IF <condition>
12861    ----------------------------------------------------------------------------------
12862    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12863          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12864          ,p_balance_type_code => l_balance_type_code
12865          );
12866 
12867    -------------------------------------------------------------------------------------------
12868    -- 4262811 - Generate the Accrual Reversal lines
12869    -------------------------------------------------------------------------------------------
12870    BEGIN
12871       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12872                               (g_array_event(p_event_id).array_value_num('header_index'));
12873       IF l_acc_rev_flag IS NULL THEN
12874          l_acc_rev_flag := 'N';
12875       END IF;
12876    EXCEPTION
12877       WHEN OTHERS THEN
12878          l_acc_rev_flag := 'N';
12879    END;
12880    --
12881    IF (l_acc_rev_flag = 'Y') THEN
12882 
12883        -- 4645092  ------------------------------------------------------------------------------
12884        -- To allow MPA report to determine if it should generate report process
12885        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12886        ------------------------------------------------------------------------------------------
12887 
12888        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12889        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12890    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12891    -- call ADRs
12892    -- Bug 4922099
12893    --
12894    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12895         (NVL(l_actual_upg_option, 'N') = 'O') OR
12896         (NVL(l_enc_upg_option, 'N') = 'O')
12897       )
12898    THEN
12899    NULL;
12900    --
12901    --
12902    
12903   l_ccid := AcctDerRule_6(
12904            p_application_id           => p_application_id
12905          , p_ae_header_id             => l_ae_header_id 
12906 , p_source_11 => p_source_11
12907          , x_transaction_coa_id       => l_adr_transaction_coa_id
12908          , x_accounting_coa_id        => l_adr_accounting_coa_id
12909          , x_value_type_code          => l_adr_value_type_code
12910          , p_side                     => 'NA'
12911    );
12912 
12913    xla_ae_lines_pkg.set_ccid(
12914     p_code_combination_id          => l_ccid
12915   , p_value_type_code              => l_adr_value_type_code
12916   , p_transaction_coa_id           => l_adr_transaction_coa_id
12917   , p_accounting_coa_id            => l_adr_accounting_coa_id
12918   , p_adr_code                     => 'CST_DEFAULT'
12919   , p_adr_type_code                => 'S'
12920   , p_component_type               => l_component_type
12921   , p_component_code               => l_component_code
12922   , p_component_type_code          => l_component_type_code
12923   , p_component_appl_id            => l_component_appl_id
12924   , p_amb_context_code             => l_amb_context_code
12925   , p_side                         => 'NA'
12926   );
12927 
12928 
12929    --
12930    --
12931    END IF;
12932 
12933        --
12934        -- Update the line information that should be overwritten
12935        --
12936        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12937                                          p_header_num   => 1);
12938        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12939 
12940        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12941 
12942        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12943           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12944        END IF;
12945 
12946       --
12947       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12948       --
12949       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12950           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12951       ELSE
12952           ---------------------------------------------------------------------------------------------------
12953           -- 4262811a Switch Sign
12954           ---------------------------------------------------------------------------------------------------
12955           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12956           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12957                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12958           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12959                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12960           -- 5132302
12961           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12962                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12963 
12964       END IF;
12965 
12966       -- 4955764
12967       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12968       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12969 
12970 
12971       XLA_AE_LINES_PKG.ValidateCurrentLine;
12972       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12973 
12974       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12975                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12976                ,p_balance_type_code => l_balance_type_code);
12977 
12978    END IF;
12979 
12980    -----------------------------------------------------------------------------------------
12981    -- 4262811 Multiperiod Accounting
12982    -----------------------------------------------------------------------------------------
12983      -- No MPA option is assigned.
12984 
12985 
12986 END IF;
12987 END IF;
12988 --
12989 
12990 --
12991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12992    trace
12993       (p_msg      => 'END of AcctLineType_49'
12994       ,p_level    => C_LEVEL_PROCEDURE
12995       ,p_module   => l_log_module);
12996 END IF;
12997 --
12998 EXCEPTION
12999   WHEN xla_exceptions_pkg.application_exception THEN
13000       RAISE;
13001   WHEN OTHERS THEN
13002        xla_exceptions_pkg.raise_message
13003            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_49');
13004 END AcctLineType_49;
13005 --
13006 
13007 ---------------------------------------
13008 --
13009 -- PRIVATE FUNCTION
13010 --         AcctLineType_50
13011 --
13012 ---------------------------------------
13013 PROCEDURE AcctLineType_50 (
13014   p_application_id        IN NUMBER
13015  ,p_event_id              IN NUMBER
13016  ,p_calculate_acctd_flag  IN VARCHAR2
13017  ,p_calculate_g_l_flag    IN VARCHAR2
13018  ,p_actual_flag           IN OUT VARCHAR2
13019  ,p_balance_type_code     OUT VARCHAR2
13020  ,p_gain_or_loss_ref      OUT VARCHAR2
13021  
13022 --TRANSACTION_ID
13023  , p_source_1            IN NUMBER
13024 --Item Concatenated Segments
13025  , p_source_2            IN VARCHAR2
13026 --Transaction Quantity
13027  , p_source_3            IN NUMBER
13028 --Transaction Unit of Measure Code
13029  , p_source_4            IN VARCHAR2
13030 --Inventory Transaction Type Description
13031  , p_source_5            IN VARCHAR2
13032 --Cost Management Default Account
13033  , p_source_11            IN NUMBER
13034 --Applied to Application ID
13035  , p_source_79            IN NUMBER
13036 --Applied to Distribution Link Type
13037  , p_source_80            IN VARCHAR2
13038 --Applied to Entity Code
13039  , p_source_81            IN VARCHAR2
13040 --Applied To Purchase Document Identifier
13041  , p_source_83            IN NUMBER
13042 --DISTRIBUTION_IDENTIFIER
13043  , p_source_84            IN NUMBER
13044 --Distribution Type
13045  , p_source_85            IN VARCHAR2
13046  , p_source_85_meaning    IN VARCHAR2
13047 --PO Budget Account
13048  , p_source_86            IN NUMBER
13049 --Encumbrance Reversal Amount Entered
13050  , p_source_87            IN NUMBER
13051 --Entered Currency Code
13052  , p_source_88            IN VARCHAR2
13053 --Transaction Encumbrance Reversal Amount
13054  , p_source_89            IN NUMBER
13055 --Entered Amount
13056  , p_source_91            IN NUMBER
13057 --Currency Conversion Date
13058  , p_source_92            IN DATE
13059 --Currency Conversion Rate
13060  , p_source_93            IN NUMBER
13061 --Currency Conversion Type
13062  , p_source_94            IN VARCHAR2
13063 --Accounted Amount
13064  , p_source_95            IN NUMBER
13065 --Purchasing Encumbrance Type Identifier
13066  , p_source_96            IN NUMBER
13067 --Accounting Line Type
13068  , p_source_97            IN NUMBER
13069 --Costing Encumbrance Upgrade Option
13070  , p_source_100            IN VARCHAR2
13071 --TXN_PO_DISTRIBUTION_ID
13072  , p_source_101            IN NUMBER
13073 )
13074 IS
13075 
13076 l_component_type              VARCHAR2(80);
13077 l_component_code              VARCHAR2(30);
13078 l_component_type_code         VARCHAR2(1);
13079 l_component_appl_id           INTEGER;
13080 l_amb_context_code            VARCHAR2(30);
13081 l_entity_code                 VARCHAR2(30);
13082 l_event_class_code            VARCHAR2(30);
13083 l_ae_header_id                NUMBER;
13084 l_event_type_code             VARCHAR2(30);
13085 l_line_definition_code        VARCHAR2(30);
13086 l_line_definition_owner_code  VARCHAR2(1);
13087 --
13088 -- adr variables
13089 l_segment                     VARCHAR2(30);
13090 l_ccid                        NUMBER;
13091 l_adr_transaction_coa_id      NUMBER;
13092 l_adr_accounting_coa_id       NUMBER;
13093 l_adr_flexfield_segment_code  VARCHAR2(30);
13094 l_adr_flex_value_set_id       NUMBER;
13095 l_adr_value_type_code         VARCHAR2(30);
13096 l_adr_value_combination_id    NUMBER;
13097 l_adr_value_segment_code      VARCHAR2(30);
13098 
13099 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13100 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13101 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13102 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13103 
13104 -- 4262811 Variables ------------------------------------------------------------------------------------------
13105 l_entered_amt_idx             NUMBER;
13106 l_accted_amt_idx              NUMBER;
13107 l_acc_rev_flag                VARCHAR2(1);
13108 l_accrual_line_num            NUMBER;
13109 l_tmp_amt                     NUMBER;
13110 l_acc_rev_natural_side_code   VARCHAR2(1);
13111 
13112 l_num_entries                 NUMBER;
13113 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13114 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13115 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13116 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13117 l_recog_line_1                NUMBER;
13118 l_recog_line_2                NUMBER;
13119 
13120 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13121 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13122 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13123 
13124 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13125 
13126 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13127 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13128 
13129 ---------------------------------------------------------------------------------------------------------------
13130 
13131 
13132 --
13133 -- bulk performance
13134 --
13135 l_balance_type_code           VARCHAR2(1);
13136 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13137 l_log_module                  VARCHAR2(240);
13138 
13139 --
13140 -- Upgrade strategy
13141 --
13142 l_actual_upg_option           VARCHAR2(1);
13143 l_enc_upg_option           VARCHAR2(1);
13144 
13145 --
13146 BEGIN
13147 --
13148 IF g_log_enabled THEN
13149       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
13150 END IF;
13151 --
13152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13153 
13154       trace
13155          (p_msg      => 'BEGIN of AcctLineType_50'
13156          ,p_level    => C_LEVEL_PROCEDURE
13157          ,p_module   => l_log_module);
13158 
13159 END IF;
13160 --
13161 l_component_type             := 'AMB_JLT';
13162 l_component_code             := 'CLEARING';
13163 l_component_type_code        := 'S';
13164 l_component_appl_id          :=  707;
13165 l_amb_context_code           := 'DEFAULT';
13166 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
13167 l_event_class_code           := 'PURCHASE_ORDER';
13168 l_event_type_code            := 'PO_DEL_INV';
13169 l_line_definition_owner_code := 'S';
13170 l_line_definition_code       := 'PI_PO_DEL_INV';
13171 --
13172 l_balance_type_code          := 'A';
13173 l_segment                     := NULL;
13174 l_ccid                        := NULL;
13175 l_adr_transaction_coa_id      := NULL;
13176 l_adr_accounting_coa_id       := NULL;
13177 l_adr_flexfield_segment_code  := NULL;
13178 l_adr_flex_value_set_id       := NULL;
13179 l_adr_value_type_code         := NULL;
13180 l_adr_value_combination_id    := NULL;
13181 l_adr_value_segment_code      := NULL;
13182 
13183 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13184 l_bflow_class_code           := '';    -- 4219869 Business Flow
13185 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13186 l_budgetary_control_flag     := 'N';
13187 
13188 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13189 l_bflow_applied_to_amt       := NULL; -- 5132302
13190 l_entered_amt_idx            := NULL;          -- 4262811
13191 l_accted_amt_idx             := NULL;          -- 4262811
13192 l_acc_rev_flag               := NULL;          -- 4262811
13193 l_accrual_line_num           := NULL;          -- 4262811
13194 l_tmp_amt                    := NULL;          -- 4262811
13195 --
13196  
13197 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13198     l_balance_type_code <> 'B' THEN
13199 IF NVL(p_source_97,9E125) =  31
13200  THEN 
13201 
13202    --
13203    XLA_AE_LINES_PKG.SetNewLine;
13204 
13205    p_balance_type_code          := l_balance_type_code;
13206    -- set the flag so later we will know whether the gain loss line needs to be created
13207    
13208    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13209      p_actual_flag :='A';
13210    END IF;
13211 
13212    --
13213    -- bulk performance
13214    --
13215    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13216                                       p_header_num   => 0); -- 4262811
13217    --
13218    -- set accounting line options
13219    --
13220    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13221            p_natural_side_code          => 'D'
13222          , p_gain_or_loss_flag          => 'N'
13223          , p_gl_transfer_mode_code      => 'S'
13224          , p_acct_entry_type_code       => 'A'
13225          , p_switch_side_flag           => 'Y'
13226          , p_merge_duplicate_code       => 'N'
13227          );
13228    --
13229    l_acc_rev_natural_side_code := 'C';  -- 4262811
13230    -- 
13231    --
13232    -- set accounting line type info
13233    --
13234    xla_ae_lines_pkg.SetAcctLineType
13235       (p_component_type             => l_component_type
13236       ,p_event_type_code            => l_event_type_code
13237       ,p_line_definition_owner_code => l_line_definition_owner_code
13238       ,p_line_definition_code       => l_line_definition_code
13239       ,p_accounting_line_code       => l_component_code
13240       ,p_accounting_line_type_code  => l_component_type_code
13241       ,p_accounting_line_appl_id    => l_component_appl_id
13242       ,p_amb_context_code           => l_amb_context_code
13243       ,p_entity_code                => l_entity_code
13244       ,p_event_class_code           => l_event_class_code);
13245    --
13246    -- set accounting class
13247    --
13248    xla_ae_lines_pkg.SetAcctClass(
13249            p_accounting_class_code  => 'CLEARING'
13250          , p_ae_header_id           => l_ae_header_id
13251          );
13252 
13253    --
13254    -- set rounding class
13255    --
13256    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13257                       'CLEARING';
13258 
13259    --
13260    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13261    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13262    --
13263    -- bulk performance
13264    --
13265    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13266 
13267    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13268       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13269 
13270    -- 4955764
13271    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13272       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13273 
13274    -- 4458381 Public Sector Enh
13275    
13276    --
13277    -- set accounting attributes for the line type
13278    --
13279    l_entered_amt_idx := 17;
13280    l_accted_amt_idx  := 22;
13281    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13282    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
13283    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
13284    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13285    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
13286    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
13287    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
13288    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
13289    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
13290    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13291    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
13292    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
13293    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
13294    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
13295    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
13296    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
13297    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
13298    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
13299    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
13300    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
13301    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
13302    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
13303    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
13304    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
13305    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
13306    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
13307    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
13308    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
13309    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
13310    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
13311    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
13312    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
13313    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
13314    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
13315    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
13316    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
13317    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
13318    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
13319    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
13320    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
13321    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
13322    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
13323    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
13324    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
13325    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
13326    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
13327    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
13328    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
13329    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
13330 
13331    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13332    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13333 
13334    ---------------------------------------------------------------------------------------------------------------
13335    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13336    ---------------------------------------------------------------------------------------------------------------
13337    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13338 
13339    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13340    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13341 
13342    IF xla_accounting_cache_pkg.GetValueChar
13343          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13344          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13345    AND l_bflow_method_code = 'PRIOR_ENTRY'
13346 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13347    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13348          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13349        )
13350    THEN
13351          xla_ae_lines_pkg.BflowUpgEntry
13352            (p_business_method_code    => l_bflow_method_code
13353            ,p_business_class_code     => l_bflow_class_code
13354            ,p_balance_type            => l_balance_type_code);
13355    ELSE
13356       NULL;
13357 -- No business flow processing for business flow method of NONE.
13358    END IF;
13359 
13360    --
13361    -- call analytical criteria
13362    --
13363    
13364    --
13365    -- call description
13366    --
13367    
13368 xla_ae_lines_pkg.SetLineDescription(
13369    p_ae_header_id => l_ae_header_id
13370   ,p_description  => Description_1 (
13371      p_application_id         => p_application_id
13372    , p_ae_header_id           => l_ae_header_id 
13373 , p_source_1 => p_source_1
13374 , p_source_2 => p_source_2
13375 , p_source_3 => p_source_3
13376 , p_source_4 => p_source_4
13377 , p_source_5 => p_source_5
13378    )
13379 );
13380 
13381 
13382    --
13383    -- call ADRs
13384    -- Bug 4922099
13385    --
13386    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13387         (NVL(l_actual_upg_option, 'N') = 'O') OR
13388         (NVL(l_enc_upg_option, 'N') = 'O')
13389       )
13390    THEN
13391    NULL;
13392    --
13393    --
13394    
13395   l_ccid := AcctDerRule_6(
13396            p_application_id           => p_application_id
13397          , p_ae_header_id             => l_ae_header_id 
13398 , p_source_11 => p_source_11
13399          , x_transaction_coa_id       => l_adr_transaction_coa_id
13400          , x_accounting_coa_id        => l_adr_accounting_coa_id
13401          , x_value_type_code          => l_adr_value_type_code
13402          , p_side                     => 'NA'
13403    );
13404 
13405    xla_ae_lines_pkg.set_ccid(
13406     p_code_combination_id          => l_ccid
13407   , p_value_type_code              => l_adr_value_type_code
13408   , p_transaction_coa_id           => l_adr_transaction_coa_id
13409   , p_accounting_coa_id            => l_adr_accounting_coa_id
13410   , p_adr_code                     => 'CST_DEFAULT'
13411   , p_adr_type_code                => 'S'
13412   , p_component_type               => l_component_type
13413   , p_component_code               => l_component_code
13414   , p_component_type_code          => l_component_type_code
13415   , p_component_appl_id            => l_component_appl_id
13416   , p_amb_context_code             => l_amb_context_code
13417   , p_side                         => 'NA'
13418   );
13419 
13420 
13421    --
13422    --
13423    END IF;
13424    --
13425    -- Bug 4922099
13426    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13427           (NVL(l_enc_upg_option, 'N') = 'O')
13428         ) AND
13429         (l_bflow_method_code = 'PRIOR_ENTRY')
13430       )
13431    THEN
13432       IF
13433       --
13434       1 = 2
13435       --
13436       THEN
13437       xla_accounting_err_pkg.build_message
13438                                     (p_appli_s_name            => 'XLA'
13439                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13440                                     ,p_token_1                 => 'LINE_NUMBER'
13441                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13442                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13443                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13444                                                                              l_component_type
13445                                                                             ,l_component_code
13446                                                                             ,l_component_type_code
13447                                                                             ,l_component_appl_id
13448                                                                             ,l_amb_context_code
13449                                                                             ,l_entity_code
13450                                                                             ,l_event_class_code
13451                                                                            )
13452                                     ,p_token_3                 => 'OWNER'
13453                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13454                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13455                                                                           ,p_lookup_code    => l_component_type_code
13456                                                                          )
13457                                     ,p_token_4                 => 'PRODUCT_NAME'
13458                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13459                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13460                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13461                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13462                                     ,p_ae_header_id            =>  NULL
13463                                        );
13464 
13465         IF (C_LEVEL_ERROR>= g_log_level) THEN
13466                  trace
13467                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13468                       ,p_level    => C_LEVEL_ERROR
13469                       ,p_module   => l_log_module);
13470         END IF;
13471       END IF;
13472    END IF;
13473    --
13474    --
13475    ------------------------------------------------------------------------------------------------
13476    -- 4219869 Business Flow
13477    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13478    -- Prior Entry.  Currently, the following code is always generated.
13479    ------------------------------------------------------------------------------------------------
13480    XLA_AE_LINES_PKG.ValidateCurrentLine;
13481 
13482    ------------------------------------------------------------------------------------
13483    -- 4219869 Business Flow
13484    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13485    ------------------------------------------------------------------------------------
13486    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13487 
13488    ----------------------------------------------------------------------------------
13489    -- 4219869 Business Flow
13490    -- Update journal entry status -- Need to generate this within IF <condition>
13491    ----------------------------------------------------------------------------------
13492    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13493          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13494          ,p_balance_type_code => l_balance_type_code
13495          );
13496 
13497    -------------------------------------------------------------------------------------------
13498    -- 4262811 - Generate the Accrual Reversal lines
13499    -------------------------------------------------------------------------------------------
13500    BEGIN
13501       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13502                               (g_array_event(p_event_id).array_value_num('header_index'));
13503       IF l_acc_rev_flag IS NULL THEN
13504          l_acc_rev_flag := 'N';
13505       END IF;
13506    EXCEPTION
13507       WHEN OTHERS THEN
13508          l_acc_rev_flag := 'N';
13509    END;
13510    --
13511    IF (l_acc_rev_flag = 'Y') THEN
13512 
13513        -- 4645092  ------------------------------------------------------------------------------
13514        -- To allow MPA report to determine if it should generate report process
13515        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13516        ------------------------------------------------------------------------------------------
13517 
13518        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13519        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13520    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13521    -- call ADRs
13522    -- Bug 4922099
13523    --
13524    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13525         (NVL(l_actual_upg_option, 'N') = 'O') OR
13526         (NVL(l_enc_upg_option, 'N') = 'O')
13527       )
13528    THEN
13529    NULL;
13530    --
13531    --
13532    
13533   l_ccid := AcctDerRule_6(
13534            p_application_id           => p_application_id
13535          , p_ae_header_id             => l_ae_header_id 
13536 , p_source_11 => p_source_11
13537          , x_transaction_coa_id       => l_adr_transaction_coa_id
13538          , x_accounting_coa_id        => l_adr_accounting_coa_id
13539          , x_value_type_code          => l_adr_value_type_code
13540          , p_side                     => 'NA'
13541    );
13542 
13543    xla_ae_lines_pkg.set_ccid(
13544     p_code_combination_id          => l_ccid
13545   , p_value_type_code              => l_adr_value_type_code
13546   , p_transaction_coa_id           => l_adr_transaction_coa_id
13547   , p_accounting_coa_id            => l_adr_accounting_coa_id
13548   , p_adr_code                     => 'CST_DEFAULT'
13549   , p_adr_type_code                => 'S'
13550   , p_component_type               => l_component_type
13551   , p_component_code               => l_component_code
13552   , p_component_type_code          => l_component_type_code
13553   , p_component_appl_id            => l_component_appl_id
13554   , p_amb_context_code             => l_amb_context_code
13555   , p_side                         => 'NA'
13556   );
13557 
13558 
13559    --
13560    --
13561    END IF;
13562 
13563        --
13564        -- Update the line information that should be overwritten
13565        --
13566        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13567                                          p_header_num   => 1);
13568        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13569 
13570        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13571 
13572        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13573           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13574        END IF;
13575 
13576       --
13577       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13578       --
13579       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13580           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13581       ELSE
13582           ---------------------------------------------------------------------------------------------------
13583           -- 4262811a Switch Sign
13584           ---------------------------------------------------------------------------------------------------
13585           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13586           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13587                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13588           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13589                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13590           -- 5132302
13591           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13592                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13593 
13594       END IF;
13595 
13596       -- 4955764
13597       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13598       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13599 
13600 
13601       XLA_AE_LINES_PKG.ValidateCurrentLine;
13602       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13603 
13604       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13605                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13606                ,p_balance_type_code => l_balance_type_code);
13607 
13608    END IF;
13609 
13610    -----------------------------------------------------------------------------------------
13611    -- 4262811 Multiperiod Accounting
13612    -----------------------------------------------------------------------------------------
13613      -- No MPA option is assigned.
13614 
13615 
13616 END IF;
13617 END IF;
13618 --
13619 
13620 --
13621 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13622    trace
13623       (p_msg      => 'END of AcctLineType_50'
13624       ,p_level    => C_LEVEL_PROCEDURE
13625       ,p_module   => l_log_module);
13626 END IF;
13627 --
13628 EXCEPTION
13629   WHEN xla_exceptions_pkg.application_exception THEN
13630       RAISE;
13631   WHEN OTHERS THEN
13632        xla_exceptions_pkg.raise_message
13633            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_50');
13634 END AcctLineType_50;
13635 --
13636 
13637 ---------------------------------------
13638 --
13639 -- PRIVATE FUNCTION
13640 --         AcctLineType_51
13641 --
13642 ---------------------------------------
13643 PROCEDURE AcctLineType_51 (
13644   p_application_id        IN NUMBER
13645  ,p_event_id              IN NUMBER
13646  ,p_calculate_acctd_flag  IN VARCHAR2
13647  ,p_calculate_g_l_flag    IN VARCHAR2
13648  ,p_actual_flag           IN OUT VARCHAR2
13649  ,p_balance_type_code     OUT VARCHAR2
13650  ,p_gain_or_loss_ref      OUT VARCHAR2
13651  
13652 --TRANSACTION_ID
13653  , p_source_1            IN NUMBER
13654 --Item Concatenated Segments
13655  , p_source_2            IN VARCHAR2
13656 --Transaction Quantity
13657  , p_source_3            IN NUMBER
13658 --Transaction Unit of Measure Code
13659  , p_source_4            IN VARCHAR2
13660 --Inventory Transaction Type Description
13661  , p_source_5            IN VARCHAR2
13662 --Cost Management Default Account
13663  , p_source_11            IN NUMBER
13664 --DISTRIBUTION_IDENTIFIER
13665  , p_source_84            IN NUMBER
13666 --Distribution Type
13667  , p_source_85            IN VARCHAR2
13668  , p_source_85_meaning    IN VARCHAR2
13669 --Entered Currency Code
13670  , p_source_88            IN VARCHAR2
13671 --Entered Amount
13672  , p_source_91            IN NUMBER
13673 --Currency Conversion Date
13674  , p_source_92            IN DATE
13675 --Currency Conversion Rate
13676  , p_source_93            IN NUMBER
13677 --Currency Conversion Type
13678  , p_source_94            IN VARCHAR2
13679 --Accounted Amount
13680  , p_source_95            IN NUMBER
13681 --Accounting Line Type
13682  , p_source_97            IN NUMBER
13683 )
13684 IS
13685 
13686 l_component_type              VARCHAR2(80);
13687 l_component_code              VARCHAR2(30);
13688 l_component_type_code         VARCHAR2(1);
13689 l_component_appl_id           INTEGER;
13690 l_amb_context_code            VARCHAR2(30);
13691 l_entity_code                 VARCHAR2(30);
13692 l_event_class_code            VARCHAR2(30);
13693 l_ae_header_id                NUMBER;
13694 l_event_type_code             VARCHAR2(30);
13695 l_line_definition_code        VARCHAR2(30);
13696 l_line_definition_owner_code  VARCHAR2(1);
13697 --
13698 -- adr variables
13699 l_segment                     VARCHAR2(30);
13700 l_ccid                        NUMBER;
13701 l_adr_transaction_coa_id      NUMBER;
13702 l_adr_accounting_coa_id       NUMBER;
13703 l_adr_flexfield_segment_code  VARCHAR2(30);
13704 l_adr_flex_value_set_id       NUMBER;
13705 l_adr_value_type_code         VARCHAR2(30);
13706 l_adr_value_combination_id    NUMBER;
13707 l_adr_value_segment_code      VARCHAR2(30);
13708 
13709 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13710 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13711 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13712 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13713 
13714 -- 4262811 Variables ------------------------------------------------------------------------------------------
13715 l_entered_amt_idx             NUMBER;
13716 l_accted_amt_idx              NUMBER;
13717 l_acc_rev_flag                VARCHAR2(1);
13718 l_accrual_line_num            NUMBER;
13719 l_tmp_amt                     NUMBER;
13720 l_acc_rev_natural_side_code   VARCHAR2(1);
13721 
13722 l_num_entries                 NUMBER;
13723 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13724 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13725 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13726 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13727 l_recog_line_1                NUMBER;
13728 l_recog_line_2                NUMBER;
13729 
13730 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13731 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13732 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13733 
13734 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13735 
13736 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13737 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13738 
13739 ---------------------------------------------------------------------------------------------------------------
13740 
13741 
13742 --
13743 -- bulk performance
13744 --
13745 l_balance_type_code           VARCHAR2(1);
13746 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13747 l_log_module                  VARCHAR2(240);
13748 
13749 --
13750 -- Upgrade strategy
13751 --
13752 l_actual_upg_option           VARCHAR2(1);
13753 l_enc_upg_option           VARCHAR2(1);
13754 
13755 --
13756 BEGIN
13757 --
13758 IF g_log_enabled THEN
13759       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
13760 END IF;
13761 --
13762 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13763 
13764       trace
13765          (p_msg      => 'BEGIN of AcctLineType_51'
13766          ,p_level    => C_LEVEL_PROCEDURE
13767          ,p_module   => l_log_module);
13768 
13769 END IF;
13770 --
13771 l_component_type             := 'AMB_JLT';
13772 l_component_code             := 'CLEARING';
13773 l_component_type_code        := 'S';
13774 l_component_appl_id          :=  707;
13775 l_amb_context_code           := 'DEFAULT';
13776 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
13777 l_event_class_code           := 'LOG_INTERCOMPANY';
13778 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
13779 l_line_definition_owner_code := 'S';
13780 l_line_definition_code       := 'PI_LOG_IC_RCPT_RETURN';
13781 --
13782 l_balance_type_code          := 'A';
13783 l_segment                     := NULL;
13784 l_ccid                        := NULL;
13785 l_adr_transaction_coa_id      := NULL;
13786 l_adr_accounting_coa_id       := NULL;
13787 l_adr_flexfield_segment_code  := NULL;
13788 l_adr_flex_value_set_id       := NULL;
13789 l_adr_value_type_code         := NULL;
13790 l_adr_value_combination_id    := NULL;
13791 l_adr_value_segment_code      := NULL;
13792 
13793 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13794 l_bflow_class_code           := '';    -- 4219869 Business Flow
13795 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13796 l_budgetary_control_flag     := 'N';
13797 
13798 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13799 l_bflow_applied_to_amt       := NULL; -- 5132302
13800 l_entered_amt_idx            := NULL;          -- 4262811
13801 l_accted_amt_idx             := NULL;          -- 4262811
13802 l_acc_rev_flag               := NULL;          -- 4262811
13803 l_accrual_line_num           := NULL;          -- 4262811
13804 l_tmp_amt                    := NULL;          -- 4262811
13805 --
13806  
13807 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13808     l_balance_type_code <> 'B' THEN
13809 IF NVL(p_source_97,9E125) =  31
13810  THEN 
13811 
13812    --
13813    XLA_AE_LINES_PKG.SetNewLine;
13814 
13815    p_balance_type_code          := l_balance_type_code;
13816    -- set the flag so later we will know whether the gain loss line needs to be created
13817    
13818    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13819      p_actual_flag :='A';
13820    END IF;
13821 
13822    --
13823    -- bulk performance
13824    --
13825    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13826                                       p_header_num   => 0); -- 4262811
13827    --
13828    -- set accounting line options
13829    --
13830    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13831            p_natural_side_code          => 'D'
13832          , p_gain_or_loss_flag          => 'N'
13833          , p_gl_transfer_mode_code      => 'S'
13834          , p_acct_entry_type_code       => 'A'
13835          , p_switch_side_flag           => 'Y'
13836          , p_merge_duplicate_code       => 'N'
13837          );
13838    --
13839    l_acc_rev_natural_side_code := 'C';  -- 4262811
13840    -- 
13841    --
13842    -- set accounting line type info
13843    --
13844    xla_ae_lines_pkg.SetAcctLineType
13845       (p_component_type             => l_component_type
13846       ,p_event_type_code            => l_event_type_code
13847       ,p_line_definition_owner_code => l_line_definition_owner_code
13848       ,p_line_definition_code       => l_line_definition_code
13849       ,p_accounting_line_code       => l_component_code
13850       ,p_accounting_line_type_code  => l_component_type_code
13851       ,p_accounting_line_appl_id    => l_component_appl_id
13852       ,p_amb_context_code           => l_amb_context_code
13853       ,p_entity_code                => l_entity_code
13854       ,p_event_class_code           => l_event_class_code);
13855    --
13856    -- set accounting class
13857    --
13858    xla_ae_lines_pkg.SetAcctClass(
13859            p_accounting_class_code  => 'CLEARING'
13860          , p_ae_header_id           => l_ae_header_id
13861          );
13862 
13863    --
13864    -- set rounding class
13865    --
13866    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13867                       'CLEARING';
13868 
13869    --
13870    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13871    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13872    --
13873    -- bulk performance
13874    --
13875    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13876 
13877    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13878       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13879 
13880    -- 4955764
13881    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13882       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13883 
13884    -- 4458381 Public Sector Enh
13885    
13886    --
13887    -- set accounting attributes for the line type
13888    --
13889    l_entered_amt_idx := 3;
13890    l_accted_amt_idx  := 8;
13891    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13892    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13893    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
13894    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13895    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
13896    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13897    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
13898    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13899    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
13900    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13901    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
13902    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13903    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
13904    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13905    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
13906    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13907    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
13908 
13909    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13910    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13911 
13912    ---------------------------------------------------------------------------------------------------------------
13913    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13914    ---------------------------------------------------------------------------------------------------------------
13915    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13916 
13917    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13918    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13919 
13920    IF xla_accounting_cache_pkg.GetValueChar
13921          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13922          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13923    AND l_bflow_method_code = 'PRIOR_ENTRY'
13924 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13925    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13926          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13927        )
13928    THEN
13929          xla_ae_lines_pkg.BflowUpgEntry
13930            (p_business_method_code    => l_bflow_method_code
13931            ,p_business_class_code     => l_bflow_class_code
13932            ,p_balance_type            => l_balance_type_code);
13933    ELSE
13934       NULL;
13935 -- No business flow processing for business flow method of NONE.
13936    END IF;
13937 
13938    --
13939    -- call analytical criteria
13940    --
13941    
13942    --
13943    -- call description
13944    --
13945    
13946 xla_ae_lines_pkg.SetLineDescription(
13947    p_ae_header_id => l_ae_header_id
13948   ,p_description  => Description_1 (
13949      p_application_id         => p_application_id
13950    , p_ae_header_id           => l_ae_header_id 
13951 , p_source_1 => p_source_1
13952 , p_source_2 => p_source_2
13953 , p_source_3 => p_source_3
13954 , p_source_4 => p_source_4
13955 , p_source_5 => p_source_5
13956    )
13957 );
13958 
13959 
13960    --
13961    -- call ADRs
13962    -- Bug 4922099
13963    --
13964    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13965         (NVL(l_actual_upg_option, 'N') = 'O') OR
13966         (NVL(l_enc_upg_option, 'N') = 'O')
13967       )
13968    THEN
13969    NULL;
13970    --
13971    --
13972    
13973   l_ccid := AcctDerRule_6(
13974            p_application_id           => p_application_id
13975          , p_ae_header_id             => l_ae_header_id 
13976 , p_source_11 => p_source_11
13977          , x_transaction_coa_id       => l_adr_transaction_coa_id
13978          , x_accounting_coa_id        => l_adr_accounting_coa_id
13979          , x_value_type_code          => l_adr_value_type_code
13980          , p_side                     => 'NA'
13981    );
13982 
13983    xla_ae_lines_pkg.set_ccid(
13984     p_code_combination_id          => l_ccid
13985   , p_value_type_code              => l_adr_value_type_code
13986   , p_transaction_coa_id           => l_adr_transaction_coa_id
13987   , p_accounting_coa_id            => l_adr_accounting_coa_id
13988   , p_adr_code                     => 'CST_DEFAULT'
13989   , p_adr_type_code                => 'S'
13990   , p_component_type               => l_component_type
13991   , p_component_code               => l_component_code
13992   , p_component_type_code          => l_component_type_code
13993   , p_component_appl_id            => l_component_appl_id
13994   , p_amb_context_code             => l_amb_context_code
13995   , p_side                         => 'NA'
13996   );
13997 
13998 
13999    --
14000    --
14001    END IF;
14002    --
14003    -- Bug 4922099
14004    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14005           (NVL(l_enc_upg_option, 'N') = 'O')
14006         ) AND
14007         (l_bflow_method_code = 'PRIOR_ENTRY')
14008       )
14009    THEN
14010       IF
14011       --
14012       1 = 2
14013       --
14014       THEN
14015       xla_accounting_err_pkg.build_message
14016                                     (p_appli_s_name            => 'XLA'
14017                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14018                                     ,p_token_1                 => 'LINE_NUMBER'
14019                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14020                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14021                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14022                                                                              l_component_type
14023                                                                             ,l_component_code
14024                                                                             ,l_component_type_code
14025                                                                             ,l_component_appl_id
14026                                                                             ,l_amb_context_code
14027                                                                             ,l_entity_code
14028                                                                             ,l_event_class_code
14029                                                                            )
14030                                     ,p_token_3                 => 'OWNER'
14031                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14032                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14033                                                                           ,p_lookup_code    => l_component_type_code
14034                                                                          )
14035                                     ,p_token_4                 => 'PRODUCT_NAME'
14036                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14037                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14038                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14039                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14040                                     ,p_ae_header_id            =>  NULL
14041                                        );
14042 
14043         IF (C_LEVEL_ERROR>= g_log_level) THEN
14044                  trace
14045                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14046                       ,p_level    => C_LEVEL_ERROR
14047                       ,p_module   => l_log_module);
14048         END IF;
14049       END IF;
14050    END IF;
14051    --
14052    --
14053    ------------------------------------------------------------------------------------------------
14054    -- 4219869 Business Flow
14055    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14056    -- Prior Entry.  Currently, the following code is always generated.
14057    ------------------------------------------------------------------------------------------------
14058    XLA_AE_LINES_PKG.ValidateCurrentLine;
14059 
14060    ------------------------------------------------------------------------------------
14061    -- 4219869 Business Flow
14062    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14063    ------------------------------------------------------------------------------------
14064    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14065 
14066    ----------------------------------------------------------------------------------
14067    -- 4219869 Business Flow
14068    -- Update journal entry status -- Need to generate this within IF <condition>
14069    ----------------------------------------------------------------------------------
14070    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14071          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14072          ,p_balance_type_code => l_balance_type_code
14073          );
14074 
14075    -------------------------------------------------------------------------------------------
14076    -- 4262811 - Generate the Accrual Reversal lines
14077    -------------------------------------------------------------------------------------------
14078    BEGIN
14079       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14080                               (g_array_event(p_event_id).array_value_num('header_index'));
14081       IF l_acc_rev_flag IS NULL THEN
14082          l_acc_rev_flag := 'N';
14083       END IF;
14084    EXCEPTION
14085       WHEN OTHERS THEN
14086          l_acc_rev_flag := 'N';
14087    END;
14088    --
14089    IF (l_acc_rev_flag = 'Y') THEN
14090 
14091        -- 4645092  ------------------------------------------------------------------------------
14092        -- To allow MPA report to determine if it should generate report process
14093        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14094        ------------------------------------------------------------------------------------------
14095 
14096        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14097        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14098    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14099    -- call ADRs
14100    -- Bug 4922099
14101    --
14102    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14103         (NVL(l_actual_upg_option, 'N') = 'O') OR
14104         (NVL(l_enc_upg_option, 'N') = 'O')
14105       )
14106    THEN
14107    NULL;
14108    --
14109    --
14110    
14111   l_ccid := AcctDerRule_6(
14112            p_application_id           => p_application_id
14113          , p_ae_header_id             => l_ae_header_id 
14114 , p_source_11 => p_source_11
14115          , x_transaction_coa_id       => l_adr_transaction_coa_id
14116          , x_accounting_coa_id        => l_adr_accounting_coa_id
14117          , x_value_type_code          => l_adr_value_type_code
14118          , p_side                     => 'NA'
14119    );
14120 
14121    xla_ae_lines_pkg.set_ccid(
14122     p_code_combination_id          => l_ccid
14123   , p_value_type_code              => l_adr_value_type_code
14124   , p_transaction_coa_id           => l_adr_transaction_coa_id
14125   , p_accounting_coa_id            => l_adr_accounting_coa_id
14126   , p_adr_code                     => 'CST_DEFAULT'
14127   , p_adr_type_code                => 'S'
14128   , p_component_type               => l_component_type
14129   , p_component_code               => l_component_code
14130   , p_component_type_code          => l_component_type_code
14131   , p_component_appl_id            => l_component_appl_id
14132   , p_amb_context_code             => l_amb_context_code
14133   , p_side                         => 'NA'
14134   );
14135 
14136 
14137    --
14138    --
14139    END IF;
14140 
14141        --
14142        -- Update the line information that should be overwritten
14143        --
14144        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14145                                          p_header_num   => 1);
14146        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14147 
14148        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14149 
14150        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14151           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14152        END IF;
14153 
14154       --
14155       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14156       --
14157       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14158           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14159       ELSE
14160           ---------------------------------------------------------------------------------------------------
14161           -- 4262811a Switch Sign
14162           ---------------------------------------------------------------------------------------------------
14163           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14164           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14165                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14166           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14167                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14168           -- 5132302
14169           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14170                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14171 
14172       END IF;
14173 
14174       -- 4955764
14175       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14176       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14177 
14178 
14179       XLA_AE_LINES_PKG.ValidateCurrentLine;
14180       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14181 
14182       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14183                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14184                ,p_balance_type_code => l_balance_type_code);
14185 
14186    END IF;
14187 
14188    -----------------------------------------------------------------------------------------
14189    -- 4262811 Multiperiod Accounting
14190    -----------------------------------------------------------------------------------------
14191      -- No MPA option is assigned.
14192 
14193 
14194 END IF;
14195 END IF;
14196 --
14197 
14198 --
14199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14200    trace
14201       (p_msg      => 'END of AcctLineType_51'
14202       ,p_level    => C_LEVEL_PROCEDURE
14203       ,p_module   => l_log_module);
14204 END IF;
14205 --
14206 EXCEPTION
14207   WHEN xla_exceptions_pkg.application_exception THEN
14208       RAISE;
14209   WHEN OTHERS THEN
14210        xla_exceptions_pkg.raise_message
14211            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_51');
14212 END AcctLineType_51;
14213 --
14214 
14215 ---------------------------------------
14216 --
14217 -- PRIVATE FUNCTION
14218 --         AcctLineType_52
14219 --
14220 ---------------------------------------
14221 PROCEDURE AcctLineType_52 (
14222   p_application_id        IN NUMBER
14223  ,p_event_id              IN NUMBER
14224  ,p_calculate_acctd_flag  IN VARCHAR2
14225  ,p_calculate_g_l_flag    IN VARCHAR2
14226  ,p_actual_flag           IN OUT VARCHAR2
14227  ,p_balance_type_code     OUT VARCHAR2
14228  ,p_gain_or_loss_ref      OUT VARCHAR2
14229  
14230 --TRANSACTION_ID
14231  , p_source_1            IN NUMBER
14232 --Item Concatenated Segments
14233  , p_source_2            IN VARCHAR2
14234 --Transaction Quantity
14235  , p_source_3            IN NUMBER
14236 --Transaction Unit of Measure Code
14237  , p_source_4            IN VARCHAR2
14238 --Inventory Transaction Type Description
14239  , p_source_5            IN VARCHAR2
14240 --Cost Management Default Account
14241  , p_source_11            IN NUMBER
14242 --Applied to Application ID
14243  , p_source_79            IN NUMBER
14244 --Applied to Distribution Link Type
14245  , p_source_80            IN VARCHAR2
14246 --Applied to Entity Code
14247  , p_source_81            IN VARCHAR2
14248 --Applied To Purchase Document Identifier
14249  , p_source_83            IN NUMBER
14250 --DISTRIBUTION_IDENTIFIER
14251  , p_source_84            IN NUMBER
14252 --Distribution Type
14253  , p_source_85            IN VARCHAR2
14254  , p_source_85_meaning    IN VARCHAR2
14255 --PO Budget Account
14256  , p_source_86            IN NUMBER
14257 --Encumbrance Reversal Amount Entered
14258  , p_source_87            IN NUMBER
14259 --Entered Currency Code
14260  , p_source_88            IN VARCHAR2
14261 --Transaction Encumbrance Reversal Amount
14262  , p_source_89            IN NUMBER
14263 --Entered Amount
14264  , p_source_91            IN NUMBER
14265 --Currency Conversion Date
14266  , p_source_92            IN DATE
14267 --Currency Conversion Rate
14268  , p_source_93            IN NUMBER
14269 --Currency Conversion Type
14270  , p_source_94            IN VARCHAR2
14271 --Accounted Amount
14272  , p_source_95            IN NUMBER
14273 --Purchasing Encumbrance Type Identifier
14274  , p_source_96            IN NUMBER
14275 --Accounting Line Type
14276  , p_source_97            IN NUMBER
14277 --Costing Encumbrance Upgrade Option
14278  , p_source_100            IN VARCHAR2
14279 --TXN_PO_DISTRIBUTION_ID
14280  , p_source_101            IN NUMBER
14281 )
14282 IS
14283 
14284 l_component_type              VARCHAR2(80);
14285 l_component_code              VARCHAR2(30);
14286 l_component_type_code         VARCHAR2(1);
14287 l_component_appl_id           INTEGER;
14288 l_amb_context_code            VARCHAR2(30);
14289 l_entity_code                 VARCHAR2(30);
14290 l_event_class_code            VARCHAR2(30);
14291 l_ae_header_id                NUMBER;
14292 l_event_type_code             VARCHAR2(30);
14293 l_line_definition_code        VARCHAR2(30);
14294 l_line_definition_owner_code  VARCHAR2(1);
14295 --
14296 -- adr variables
14297 l_segment                     VARCHAR2(30);
14298 l_ccid                        NUMBER;
14299 l_adr_transaction_coa_id      NUMBER;
14300 l_adr_accounting_coa_id       NUMBER;
14301 l_adr_flexfield_segment_code  VARCHAR2(30);
14302 l_adr_flex_value_set_id       NUMBER;
14303 l_adr_value_type_code         VARCHAR2(30);
14304 l_adr_value_combination_id    NUMBER;
14305 l_adr_value_segment_code      VARCHAR2(30);
14306 
14307 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14308 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14309 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14310 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14311 
14312 -- 4262811 Variables ------------------------------------------------------------------------------------------
14313 l_entered_amt_idx             NUMBER;
14314 l_accted_amt_idx              NUMBER;
14315 l_acc_rev_flag                VARCHAR2(1);
14316 l_accrual_line_num            NUMBER;
14317 l_tmp_amt                     NUMBER;
14318 l_acc_rev_natural_side_code   VARCHAR2(1);
14319 
14320 l_num_entries                 NUMBER;
14321 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14322 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14323 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14324 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14325 l_recog_line_1                NUMBER;
14326 l_recog_line_2                NUMBER;
14327 
14328 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14329 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14330 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14331 
14332 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14333 
14334 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14335 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14336 
14337 ---------------------------------------------------------------------------------------------------------------
14338 
14339 
14340 --
14341 -- bulk performance
14342 --
14343 l_balance_type_code           VARCHAR2(1);
14344 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14345 l_log_module                  VARCHAR2(240);
14346 
14347 --
14348 -- Upgrade strategy
14349 --
14350 l_actual_upg_option           VARCHAR2(1);
14351 l_enc_upg_option           VARCHAR2(1);
14352 
14353 --
14354 BEGIN
14355 --
14356 IF g_log_enabled THEN
14357       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
14358 END IF;
14359 --
14360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14361 
14362       trace
14363          (p_msg      => 'BEGIN of AcctLineType_52'
14364          ,p_level    => C_LEVEL_PROCEDURE
14365          ,p_module   => l_log_module);
14366 
14367 END IF;
14368 --
14369 l_component_type             := 'AMB_JLT';
14370 l_component_code             := 'CLEARING';
14371 l_component_type_code        := 'S';
14372 l_component_appl_id          :=  707;
14373 l_amb_context_code           := 'DEFAULT';
14374 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
14375 l_event_class_code           := 'PURCHASE_ORDER';
14376 l_event_type_code            := 'LOG_PO_DEL_ADJ';
14377 l_line_definition_owner_code := 'S';
14378 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
14379 --
14380 l_balance_type_code          := 'A';
14381 l_segment                     := NULL;
14382 l_ccid                        := NULL;
14383 l_adr_transaction_coa_id      := NULL;
14384 l_adr_accounting_coa_id       := NULL;
14385 l_adr_flexfield_segment_code  := NULL;
14386 l_adr_flex_value_set_id       := NULL;
14387 l_adr_value_type_code         := NULL;
14388 l_adr_value_combination_id    := NULL;
14389 l_adr_value_segment_code      := NULL;
14390 
14391 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14392 l_bflow_class_code           := '';    -- 4219869 Business Flow
14393 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14394 l_budgetary_control_flag     := 'N';
14395 
14396 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14397 l_bflow_applied_to_amt       := NULL; -- 5132302
14398 l_entered_amt_idx            := NULL;          -- 4262811
14399 l_accted_amt_idx             := NULL;          -- 4262811
14400 l_acc_rev_flag               := NULL;          -- 4262811
14401 l_accrual_line_num           := NULL;          -- 4262811
14402 l_tmp_amt                    := NULL;          -- 4262811
14403 --
14404  
14405 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14406     l_balance_type_code <> 'B' THEN
14407 IF NVL(p_source_97,9E125) =  31
14408  THEN 
14409 
14410    --
14411    XLA_AE_LINES_PKG.SetNewLine;
14412 
14413    p_balance_type_code          := l_balance_type_code;
14414    -- set the flag so later we will know whether the gain loss line needs to be created
14415    
14416    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14417      p_actual_flag :='A';
14418    END IF;
14419 
14420    --
14421    -- bulk performance
14422    --
14423    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14424                                       p_header_num   => 0); -- 4262811
14425    --
14426    -- set accounting line options
14427    --
14428    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14429            p_natural_side_code          => 'D'
14430          , p_gain_or_loss_flag          => 'N'
14431          , p_gl_transfer_mode_code      => 'S'
14432          , p_acct_entry_type_code       => 'A'
14433          , p_switch_side_flag           => 'Y'
14434          , p_merge_duplicate_code       => 'N'
14435          );
14436    --
14437    l_acc_rev_natural_side_code := 'C';  -- 4262811
14438    -- 
14439    --
14440    -- set accounting line type info
14441    --
14442    xla_ae_lines_pkg.SetAcctLineType
14443       (p_component_type             => l_component_type
14444       ,p_event_type_code            => l_event_type_code
14445       ,p_line_definition_owner_code => l_line_definition_owner_code
14446       ,p_line_definition_code       => l_line_definition_code
14447       ,p_accounting_line_code       => l_component_code
14448       ,p_accounting_line_type_code  => l_component_type_code
14449       ,p_accounting_line_appl_id    => l_component_appl_id
14450       ,p_amb_context_code           => l_amb_context_code
14451       ,p_entity_code                => l_entity_code
14452       ,p_event_class_code           => l_event_class_code);
14453    --
14454    -- set accounting class
14455    --
14456    xla_ae_lines_pkg.SetAcctClass(
14457            p_accounting_class_code  => 'CLEARING'
14458          , p_ae_header_id           => l_ae_header_id
14459          );
14460 
14461    --
14462    -- set rounding class
14463    --
14464    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14465                       'CLEARING';
14466 
14467    --
14468    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14469    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14470    --
14471    -- bulk performance
14472    --
14473    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14474 
14475    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14476       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14477 
14478    -- 4955764
14479    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14481 
14482    -- 4458381 Public Sector Enh
14483    
14484    --
14485    -- set accounting attributes for the line type
14486    --
14487    l_entered_amt_idx := 17;
14488    l_accted_amt_idx  := 22;
14489    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14490    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
14491    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
14492    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
14493    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
14494    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
14495    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
14496    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
14497    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
14498    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
14499    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
14500    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
14501    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
14502    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
14503    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
14504    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
14505    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
14506    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
14507    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
14508    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
14509    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
14510    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
14511    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
14512    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
14513    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
14514    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
14515    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
14516    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
14517    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
14518    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
14519    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
14520    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
14521    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
14522    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
14523    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
14524    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
14525    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
14526    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
14527    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
14528    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
14529    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
14530    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
14531    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
14532    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
14533    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
14534    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
14535    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
14536    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
14537    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
14538 
14539    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14540    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14541 
14542    ---------------------------------------------------------------------------------------------------------------
14543    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14544    ---------------------------------------------------------------------------------------------------------------
14545    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14546 
14547    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14548    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14549 
14550    IF xla_accounting_cache_pkg.GetValueChar
14551          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14552          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14553    AND l_bflow_method_code = 'PRIOR_ENTRY'
14554 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14555    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14556          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14557        )
14558    THEN
14559          xla_ae_lines_pkg.BflowUpgEntry
14560            (p_business_method_code    => l_bflow_method_code
14561            ,p_business_class_code     => l_bflow_class_code
14562            ,p_balance_type            => l_balance_type_code);
14563    ELSE
14564       NULL;
14565 -- No business flow processing for business flow method of NONE.
14566    END IF;
14567 
14568    --
14569    -- call analytical criteria
14570    --
14571    
14572    --
14573    -- call description
14574    --
14575    
14576 xla_ae_lines_pkg.SetLineDescription(
14577    p_ae_header_id => l_ae_header_id
14578   ,p_description  => Description_1 (
14579      p_application_id         => p_application_id
14580    , p_ae_header_id           => l_ae_header_id 
14581 , p_source_1 => p_source_1
14582 , p_source_2 => p_source_2
14583 , p_source_3 => p_source_3
14584 , p_source_4 => p_source_4
14585 , p_source_5 => p_source_5
14586    )
14587 );
14588 
14589 
14590    --
14591    -- call ADRs
14592    -- Bug 4922099
14593    --
14594    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14595         (NVL(l_actual_upg_option, 'N') = 'O') OR
14596         (NVL(l_enc_upg_option, 'N') = 'O')
14597       )
14598    THEN
14599    NULL;
14600    --
14601    --
14602    
14603   l_ccid := AcctDerRule_6(
14604            p_application_id           => p_application_id
14605          , p_ae_header_id             => l_ae_header_id 
14606 , p_source_11 => p_source_11
14607          , x_transaction_coa_id       => l_adr_transaction_coa_id
14608          , x_accounting_coa_id        => l_adr_accounting_coa_id
14609          , x_value_type_code          => l_adr_value_type_code
14610          , p_side                     => 'NA'
14611    );
14612 
14613    xla_ae_lines_pkg.set_ccid(
14614     p_code_combination_id          => l_ccid
14615   , p_value_type_code              => l_adr_value_type_code
14616   , p_transaction_coa_id           => l_adr_transaction_coa_id
14617   , p_accounting_coa_id            => l_adr_accounting_coa_id
14618   , p_adr_code                     => 'CST_DEFAULT'
14619   , p_adr_type_code                => 'S'
14620   , p_component_type               => l_component_type
14621   , p_component_code               => l_component_code
14622   , p_component_type_code          => l_component_type_code
14623   , p_component_appl_id            => l_component_appl_id
14624   , p_amb_context_code             => l_amb_context_code
14625   , p_side                         => 'NA'
14626   );
14627 
14628 
14629    --
14630    --
14631    END IF;
14632    --
14633    -- Bug 4922099
14634    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14635           (NVL(l_enc_upg_option, 'N') = 'O')
14636         ) AND
14637         (l_bflow_method_code = 'PRIOR_ENTRY')
14638       )
14639    THEN
14640       IF
14641       --
14642       1 = 2
14643       --
14644       THEN
14645       xla_accounting_err_pkg.build_message
14646                                     (p_appli_s_name            => 'XLA'
14647                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14648                                     ,p_token_1                 => 'LINE_NUMBER'
14649                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14650                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14651                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14652                                                                              l_component_type
14653                                                                             ,l_component_code
14654                                                                             ,l_component_type_code
14655                                                                             ,l_component_appl_id
14656                                                                             ,l_amb_context_code
14657                                                                             ,l_entity_code
14658                                                                             ,l_event_class_code
14659                                                                            )
14660                                     ,p_token_3                 => 'OWNER'
14661                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14662                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14663                                                                           ,p_lookup_code    => l_component_type_code
14664                                                                          )
14665                                     ,p_token_4                 => 'PRODUCT_NAME'
14666                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14667                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14668                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14669                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14670                                     ,p_ae_header_id            =>  NULL
14671                                        );
14672 
14673         IF (C_LEVEL_ERROR>= g_log_level) THEN
14674                  trace
14675                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14676                       ,p_level    => C_LEVEL_ERROR
14677                       ,p_module   => l_log_module);
14678         END IF;
14679       END IF;
14680    END IF;
14681    --
14682    --
14683    ------------------------------------------------------------------------------------------------
14684    -- 4219869 Business Flow
14685    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14686    -- Prior Entry.  Currently, the following code is always generated.
14687    ------------------------------------------------------------------------------------------------
14688    XLA_AE_LINES_PKG.ValidateCurrentLine;
14689 
14690    ------------------------------------------------------------------------------------
14691    -- 4219869 Business Flow
14692    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14693    ------------------------------------------------------------------------------------
14694    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14695 
14696    ----------------------------------------------------------------------------------
14697    -- 4219869 Business Flow
14698    -- Update journal entry status -- Need to generate this within IF <condition>
14699    ----------------------------------------------------------------------------------
14700    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14701          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14702          ,p_balance_type_code => l_balance_type_code
14703          );
14704 
14705    -------------------------------------------------------------------------------------------
14706    -- 4262811 - Generate the Accrual Reversal lines
14707    -------------------------------------------------------------------------------------------
14708    BEGIN
14709       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14710                               (g_array_event(p_event_id).array_value_num('header_index'));
14711       IF l_acc_rev_flag IS NULL THEN
14712          l_acc_rev_flag := 'N';
14713       END IF;
14714    EXCEPTION
14715       WHEN OTHERS THEN
14716          l_acc_rev_flag := 'N';
14717    END;
14718    --
14719    IF (l_acc_rev_flag = 'Y') THEN
14720 
14721        -- 4645092  ------------------------------------------------------------------------------
14722        -- To allow MPA report to determine if it should generate report process
14723        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14724        ------------------------------------------------------------------------------------------
14725 
14726        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14727        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14728    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14729    -- call ADRs
14730    -- Bug 4922099
14731    --
14732    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14733         (NVL(l_actual_upg_option, 'N') = 'O') OR
14734         (NVL(l_enc_upg_option, 'N') = 'O')
14735       )
14736    THEN
14737    NULL;
14738    --
14739    --
14740    
14741   l_ccid := AcctDerRule_6(
14742            p_application_id           => p_application_id
14743          , p_ae_header_id             => l_ae_header_id 
14744 , p_source_11 => p_source_11
14745          , x_transaction_coa_id       => l_adr_transaction_coa_id
14746          , x_accounting_coa_id        => l_adr_accounting_coa_id
14747          , x_value_type_code          => l_adr_value_type_code
14748          , p_side                     => 'NA'
14749    );
14750 
14751    xla_ae_lines_pkg.set_ccid(
14752     p_code_combination_id          => l_ccid
14753   , p_value_type_code              => l_adr_value_type_code
14754   , p_transaction_coa_id           => l_adr_transaction_coa_id
14755   , p_accounting_coa_id            => l_adr_accounting_coa_id
14756   , p_adr_code                     => 'CST_DEFAULT'
14757   , p_adr_type_code                => 'S'
14758   , p_component_type               => l_component_type
14759   , p_component_code               => l_component_code
14760   , p_component_type_code          => l_component_type_code
14761   , p_component_appl_id            => l_component_appl_id
14762   , p_amb_context_code             => l_amb_context_code
14763   , p_side                         => 'NA'
14764   );
14765 
14766 
14767    --
14768    --
14769    END IF;
14770 
14771        --
14772        -- Update the line information that should be overwritten
14773        --
14774        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14775                                          p_header_num   => 1);
14776        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14777 
14778        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14779 
14780        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14781           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14782        END IF;
14783 
14784       --
14785       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14786       --
14787       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14788           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14789       ELSE
14790           ---------------------------------------------------------------------------------------------------
14791           -- 4262811a Switch Sign
14792           ---------------------------------------------------------------------------------------------------
14793           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14794           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14795                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14796           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14797                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14798           -- 5132302
14799           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14800                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14801 
14802       END IF;
14803 
14804       -- 4955764
14805       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14806       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14807 
14808 
14809       XLA_AE_LINES_PKG.ValidateCurrentLine;
14810       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14811 
14812       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14813                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14814                ,p_balance_type_code => l_balance_type_code);
14815 
14816    END IF;
14817 
14818    -----------------------------------------------------------------------------------------
14819    -- 4262811 Multiperiod Accounting
14820    -----------------------------------------------------------------------------------------
14821      -- No MPA option is assigned.
14822 
14823 
14824 END IF;
14825 END IF;
14826 --
14827 
14828 --
14829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14830    trace
14831       (p_msg      => 'END of AcctLineType_52'
14832       ,p_level    => C_LEVEL_PROCEDURE
14833       ,p_module   => l_log_module);
14834 END IF;
14835 --
14836 EXCEPTION
14837   WHEN xla_exceptions_pkg.application_exception THEN
14838       RAISE;
14839   WHEN OTHERS THEN
14840        xla_exceptions_pkg.raise_message
14841            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_52');
14842 END AcctLineType_52;
14843 --
14844 
14845 ---------------------------------------
14846 --
14847 -- PRIVATE FUNCTION
14848 --         AcctLineType_53
14849 --
14850 ---------------------------------------
14851 PROCEDURE AcctLineType_53 (
14852   p_application_id        IN NUMBER
14853  ,p_event_id              IN NUMBER
14854  ,p_calculate_acctd_flag  IN VARCHAR2
14855  ,p_calculate_g_l_flag    IN VARCHAR2
14856  ,p_actual_flag           IN OUT VARCHAR2
14857  ,p_balance_type_code     OUT VARCHAR2
14858  ,p_gain_or_loss_ref      OUT VARCHAR2
14859  
14860 --TRANSACTION_ID
14861  , p_source_1            IN NUMBER
14862 --Item Concatenated Segments
14863  , p_source_2            IN VARCHAR2
14864 --Transaction Quantity
14865  , p_source_3            IN NUMBER
14866 --Transaction Unit of Measure Code
14867  , p_source_4            IN VARCHAR2
14868 --Inventory Transaction Type Description
14869  , p_source_5            IN VARCHAR2
14870 --Cost Management Default Account
14871  , p_source_11            IN NUMBER
14872 --Applied to Application ID
14873  , p_source_79            IN NUMBER
14874 --Applied to Distribution Link Type
14875  , p_source_80            IN VARCHAR2
14876 --Applied to Entity Code
14877  , p_source_81            IN VARCHAR2
14878 --Applied To Purchase Document Identifier
14879  , p_source_83            IN NUMBER
14880 --DISTRIBUTION_IDENTIFIER
14881  , p_source_84            IN NUMBER
14882 --Distribution Type
14883  , p_source_85            IN VARCHAR2
14884  , p_source_85_meaning    IN VARCHAR2
14885 --PO Budget Account
14886  , p_source_86            IN NUMBER
14887 --Encumbrance Reversal Amount Entered
14888  , p_source_87            IN NUMBER
14889 --Entered Currency Code
14890  , p_source_88            IN VARCHAR2
14891 --Transaction Encumbrance Reversal Amount
14892  , p_source_89            IN NUMBER
14893 --Entered Amount
14894  , p_source_91            IN NUMBER
14895 --Currency Conversion Date
14896  , p_source_92            IN DATE
14897 --Currency Conversion Rate
14898  , p_source_93            IN NUMBER
14899 --Currency Conversion Type
14900  , p_source_94            IN VARCHAR2
14901 --Accounted Amount
14902  , p_source_95            IN NUMBER
14903 --Purchasing Encumbrance Type Identifier
14904  , p_source_96            IN NUMBER
14905 --Accounting Line Type
14906  , p_source_97            IN NUMBER
14907 --Costing Encumbrance Upgrade Option
14908  , p_source_100            IN VARCHAR2
14909 --TXN_PO_DISTRIBUTION_ID
14910  , p_source_101            IN NUMBER
14911 )
14912 IS
14913 
14914 l_component_type              VARCHAR2(80);
14915 l_component_code              VARCHAR2(30);
14916 l_component_type_code         VARCHAR2(1);
14917 l_component_appl_id           INTEGER;
14918 l_amb_context_code            VARCHAR2(30);
14919 l_entity_code                 VARCHAR2(30);
14920 l_event_class_code            VARCHAR2(30);
14921 l_ae_header_id                NUMBER;
14922 l_event_type_code             VARCHAR2(30);
14923 l_line_definition_code        VARCHAR2(30);
14924 l_line_definition_owner_code  VARCHAR2(1);
14925 --
14926 -- adr variables
14927 l_segment                     VARCHAR2(30);
14928 l_ccid                        NUMBER;
14929 l_adr_transaction_coa_id      NUMBER;
14930 l_adr_accounting_coa_id       NUMBER;
14931 l_adr_flexfield_segment_code  VARCHAR2(30);
14932 l_adr_flex_value_set_id       NUMBER;
14933 l_adr_value_type_code         VARCHAR2(30);
14934 l_adr_value_combination_id    NUMBER;
14935 l_adr_value_segment_code      VARCHAR2(30);
14936 
14937 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14938 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14939 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14940 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14941 
14942 -- 4262811 Variables ------------------------------------------------------------------------------------------
14943 l_entered_amt_idx             NUMBER;
14944 l_accted_amt_idx              NUMBER;
14945 l_acc_rev_flag                VARCHAR2(1);
14946 l_accrual_line_num            NUMBER;
14947 l_tmp_amt                     NUMBER;
14948 l_acc_rev_natural_side_code   VARCHAR2(1);
14949 
14950 l_num_entries                 NUMBER;
14951 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14952 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14953 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14954 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14955 l_recog_line_1                NUMBER;
14956 l_recog_line_2                NUMBER;
14957 
14958 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14959 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14960 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14961 
14962 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14963 
14964 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14965 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14966 
14967 ---------------------------------------------------------------------------------------------------------------
14968 
14969 
14970 --
14971 -- bulk performance
14972 --
14973 l_balance_type_code           VARCHAR2(1);
14974 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14975 l_log_module                  VARCHAR2(240);
14976 
14977 --
14978 -- Upgrade strategy
14979 --
14980 l_actual_upg_option           VARCHAR2(1);
14981 l_enc_upg_option           VARCHAR2(1);
14982 
14983 --
14984 BEGIN
14985 --
14986 IF g_log_enabled THEN
14987       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
14988 END IF;
14989 --
14990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14991 
14992       trace
14993          (p_msg      => 'BEGIN of AcctLineType_53'
14994          ,p_level    => C_LEVEL_PROCEDURE
14995          ,p_module   => l_log_module);
14996 
14997 END IF;
14998 --
14999 l_component_type             := 'AMB_JLT';
15000 l_component_code             := 'CLEARING';
15001 l_component_type_code        := 'S';
15002 l_component_appl_id          :=  707;
15003 l_amb_context_code           := 'DEFAULT';
15004 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
15005 l_event_class_code           := 'PURCHASE_ORDER';
15006 l_event_type_code            := 'PO_DEL_ADJ';
15007 l_line_definition_owner_code := 'S';
15008 l_line_definition_code       := 'PI_PO_DEL_ADJ';
15009 --
15010 l_balance_type_code          := 'A';
15011 l_segment                     := NULL;
15012 l_ccid                        := NULL;
15013 l_adr_transaction_coa_id      := NULL;
15014 l_adr_accounting_coa_id       := NULL;
15015 l_adr_flexfield_segment_code  := NULL;
15016 l_adr_flex_value_set_id       := NULL;
15017 l_adr_value_type_code         := NULL;
15018 l_adr_value_combination_id    := NULL;
15019 l_adr_value_segment_code      := NULL;
15020 
15021 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15022 l_bflow_class_code           := '';    -- 4219869 Business Flow
15023 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15024 l_budgetary_control_flag     := 'N';
15025 
15026 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15027 l_bflow_applied_to_amt       := NULL; -- 5132302
15028 l_entered_amt_idx            := NULL;          -- 4262811
15029 l_accted_amt_idx             := NULL;          -- 4262811
15030 l_acc_rev_flag               := NULL;          -- 4262811
15031 l_accrual_line_num           := NULL;          -- 4262811
15032 l_tmp_amt                    := NULL;          -- 4262811
15033 --
15034  
15035 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15036     l_balance_type_code <> 'B' THEN
15037 IF NVL(p_source_97,9E125) =  31
15038  THEN 
15039 
15040    --
15041    XLA_AE_LINES_PKG.SetNewLine;
15042 
15043    p_balance_type_code          := l_balance_type_code;
15044    -- set the flag so later we will know whether the gain loss line needs to be created
15045    
15046    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15047      p_actual_flag :='A';
15048    END IF;
15049 
15050    --
15051    -- bulk performance
15052    --
15053    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15054                                       p_header_num   => 0); -- 4262811
15055    --
15056    -- set accounting line options
15057    --
15058    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15059            p_natural_side_code          => 'D'
15060          , p_gain_or_loss_flag          => 'N'
15061          , p_gl_transfer_mode_code      => 'S'
15062          , p_acct_entry_type_code       => 'A'
15063          , p_switch_side_flag           => 'Y'
15064          , p_merge_duplicate_code       => 'N'
15065          );
15066    --
15067    l_acc_rev_natural_side_code := 'C';  -- 4262811
15068    -- 
15069    --
15070    -- set accounting line type info
15071    --
15072    xla_ae_lines_pkg.SetAcctLineType
15073       (p_component_type             => l_component_type
15074       ,p_event_type_code            => l_event_type_code
15075       ,p_line_definition_owner_code => l_line_definition_owner_code
15076       ,p_line_definition_code       => l_line_definition_code
15077       ,p_accounting_line_code       => l_component_code
15078       ,p_accounting_line_type_code  => l_component_type_code
15079       ,p_accounting_line_appl_id    => l_component_appl_id
15080       ,p_amb_context_code           => l_amb_context_code
15081       ,p_entity_code                => l_entity_code
15082       ,p_event_class_code           => l_event_class_code);
15083    --
15084    -- set accounting class
15085    --
15086    xla_ae_lines_pkg.SetAcctClass(
15087            p_accounting_class_code  => 'CLEARING'
15088          , p_ae_header_id           => l_ae_header_id
15089          );
15090 
15091    --
15092    -- set rounding class
15093    --
15094    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15095                       'CLEARING';
15096 
15097    --
15098    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15099    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15100    --
15101    -- bulk performance
15102    --
15103    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15104 
15105    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15106       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15107 
15108    -- 4955764
15109    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15110       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15111 
15112    -- 4458381 Public Sector Enh
15113    
15114    --
15115    -- set accounting attributes for the line type
15116    --
15117    l_entered_amt_idx := 17;
15118    l_accted_amt_idx  := 22;
15119    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15120    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
15121    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
15122    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
15123    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
15124    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
15125    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
15126    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
15127    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
15128    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
15129    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
15130    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
15131    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
15132    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
15133    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
15134    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
15135    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
15136    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
15137    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
15138    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
15139    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
15140    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
15141    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
15142    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
15143    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
15144    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
15145    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
15146    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
15147    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
15148    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
15149    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
15150    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
15151    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
15152    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
15153    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
15154    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
15155    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
15156    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
15157    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
15158    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
15159    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
15160    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
15161    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
15162    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
15163    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
15164    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
15165    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
15166    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
15167    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
15168 
15169    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15170    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15171 
15172    ---------------------------------------------------------------------------------------------------------------
15173    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15174    ---------------------------------------------------------------------------------------------------------------
15175    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15176 
15177    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15178    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15179 
15180    IF xla_accounting_cache_pkg.GetValueChar
15181          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15182          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15183    AND l_bflow_method_code = 'PRIOR_ENTRY'
15184 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15185    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15186          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15187        )
15188    THEN
15189          xla_ae_lines_pkg.BflowUpgEntry
15190            (p_business_method_code    => l_bflow_method_code
15191            ,p_business_class_code     => l_bflow_class_code
15192            ,p_balance_type            => l_balance_type_code);
15193    ELSE
15194       NULL;
15195 -- No business flow processing for business flow method of NONE.
15196    END IF;
15197 
15198    --
15199    -- call analytical criteria
15200    --
15201    
15202    --
15203    -- call description
15204    --
15205    
15206 xla_ae_lines_pkg.SetLineDescription(
15207    p_ae_header_id => l_ae_header_id
15208   ,p_description  => Description_1 (
15209      p_application_id         => p_application_id
15210    , p_ae_header_id           => l_ae_header_id 
15211 , p_source_1 => p_source_1
15212 , p_source_2 => p_source_2
15213 , p_source_3 => p_source_3
15214 , p_source_4 => p_source_4
15215 , p_source_5 => p_source_5
15216    )
15217 );
15218 
15219 
15220    --
15221    -- call ADRs
15222    -- Bug 4922099
15223    --
15224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15225         (NVL(l_actual_upg_option, 'N') = 'O') OR
15226         (NVL(l_enc_upg_option, 'N') = 'O')
15227       )
15228    THEN
15229    NULL;
15230    --
15231    --
15232    
15233   l_ccid := AcctDerRule_6(
15234            p_application_id           => p_application_id
15235          , p_ae_header_id             => l_ae_header_id 
15236 , p_source_11 => p_source_11
15237          , x_transaction_coa_id       => l_adr_transaction_coa_id
15238          , x_accounting_coa_id        => l_adr_accounting_coa_id
15239          , x_value_type_code          => l_adr_value_type_code
15240          , p_side                     => 'NA'
15241    );
15242 
15243    xla_ae_lines_pkg.set_ccid(
15244     p_code_combination_id          => l_ccid
15245   , p_value_type_code              => l_adr_value_type_code
15246   , p_transaction_coa_id           => l_adr_transaction_coa_id
15247   , p_accounting_coa_id            => l_adr_accounting_coa_id
15248   , p_adr_code                     => 'CST_DEFAULT'
15249   , p_adr_type_code                => 'S'
15250   , p_component_type               => l_component_type
15251   , p_component_code               => l_component_code
15252   , p_component_type_code          => l_component_type_code
15253   , p_component_appl_id            => l_component_appl_id
15254   , p_amb_context_code             => l_amb_context_code
15255   , p_side                         => 'NA'
15256   );
15257 
15258 
15259    --
15260    --
15261    END IF;
15262    --
15263    -- Bug 4922099
15264    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15265           (NVL(l_enc_upg_option, 'N') = 'O')
15266         ) AND
15267         (l_bflow_method_code = 'PRIOR_ENTRY')
15268       )
15269    THEN
15270       IF
15271       --
15272       1 = 2
15273       --
15274       THEN
15275       xla_accounting_err_pkg.build_message
15276                                     (p_appli_s_name            => 'XLA'
15277                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15278                                     ,p_token_1                 => 'LINE_NUMBER'
15279                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15280                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15281                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15282                                                                              l_component_type
15283                                                                             ,l_component_code
15284                                                                             ,l_component_type_code
15285                                                                             ,l_component_appl_id
15286                                                                             ,l_amb_context_code
15287                                                                             ,l_entity_code
15288                                                                             ,l_event_class_code
15289                                                                            )
15290                                     ,p_token_3                 => 'OWNER'
15291                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15292                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15293                                                                           ,p_lookup_code    => l_component_type_code
15294                                                                          )
15295                                     ,p_token_4                 => 'PRODUCT_NAME'
15296                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15297                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15298                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15299                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15300                                     ,p_ae_header_id            =>  NULL
15301                                        );
15302 
15303         IF (C_LEVEL_ERROR>= g_log_level) THEN
15304                  trace
15305                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15306                       ,p_level    => C_LEVEL_ERROR
15307                       ,p_module   => l_log_module);
15308         END IF;
15309       END IF;
15310    END IF;
15311    --
15312    --
15313    ------------------------------------------------------------------------------------------------
15314    -- 4219869 Business Flow
15315    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15316    -- Prior Entry.  Currently, the following code is always generated.
15317    ------------------------------------------------------------------------------------------------
15318    XLA_AE_LINES_PKG.ValidateCurrentLine;
15319 
15320    ------------------------------------------------------------------------------------
15321    -- 4219869 Business Flow
15322    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15323    ------------------------------------------------------------------------------------
15324    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15325 
15326    ----------------------------------------------------------------------------------
15327    -- 4219869 Business Flow
15328    -- Update journal entry status -- Need to generate this within IF <condition>
15329    ----------------------------------------------------------------------------------
15330    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15331          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15332          ,p_balance_type_code => l_balance_type_code
15333          );
15334 
15335    -------------------------------------------------------------------------------------------
15336    -- 4262811 - Generate the Accrual Reversal lines
15337    -------------------------------------------------------------------------------------------
15338    BEGIN
15339       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15340                               (g_array_event(p_event_id).array_value_num('header_index'));
15341       IF l_acc_rev_flag IS NULL THEN
15342          l_acc_rev_flag := 'N';
15343       END IF;
15344    EXCEPTION
15345       WHEN OTHERS THEN
15346          l_acc_rev_flag := 'N';
15347    END;
15348    --
15349    IF (l_acc_rev_flag = 'Y') THEN
15350 
15351        -- 4645092  ------------------------------------------------------------------------------
15352        -- To allow MPA report to determine if it should generate report process
15353        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15354        ------------------------------------------------------------------------------------------
15355 
15356        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15357        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15358    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15359    -- call ADRs
15360    -- Bug 4922099
15361    --
15362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15363         (NVL(l_actual_upg_option, 'N') = 'O') OR
15364         (NVL(l_enc_upg_option, 'N') = 'O')
15365       )
15366    THEN
15367    NULL;
15368    --
15369    --
15370    
15371   l_ccid := AcctDerRule_6(
15372            p_application_id           => p_application_id
15373          , p_ae_header_id             => l_ae_header_id 
15374 , p_source_11 => p_source_11
15375          , x_transaction_coa_id       => l_adr_transaction_coa_id
15376          , x_accounting_coa_id        => l_adr_accounting_coa_id
15377          , x_value_type_code          => l_adr_value_type_code
15378          , p_side                     => 'NA'
15379    );
15380 
15381    xla_ae_lines_pkg.set_ccid(
15382     p_code_combination_id          => l_ccid
15383   , p_value_type_code              => l_adr_value_type_code
15384   , p_transaction_coa_id           => l_adr_transaction_coa_id
15385   , p_accounting_coa_id            => l_adr_accounting_coa_id
15386   , p_adr_code                     => 'CST_DEFAULT'
15387   , p_adr_type_code                => 'S'
15388   , p_component_type               => l_component_type
15389   , p_component_code               => l_component_code
15390   , p_component_type_code          => l_component_type_code
15391   , p_component_appl_id            => l_component_appl_id
15392   , p_amb_context_code             => l_amb_context_code
15393   , p_side                         => 'NA'
15394   );
15395 
15396 
15397    --
15398    --
15399    END IF;
15400 
15401        --
15402        -- Update the line information that should be overwritten
15403        --
15404        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15405                                          p_header_num   => 1);
15406        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15407 
15408        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15409 
15410        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15411           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15412        END IF;
15413 
15414       --
15415       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15416       --
15417       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15418           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15419       ELSE
15420           ---------------------------------------------------------------------------------------------------
15421           -- 4262811a Switch Sign
15422           ---------------------------------------------------------------------------------------------------
15423           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15424           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15425                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15426           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15427                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15428           -- 5132302
15429           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15430                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15431 
15432       END IF;
15433 
15434       -- 4955764
15435       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15436       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15437 
15438 
15439       XLA_AE_LINES_PKG.ValidateCurrentLine;
15440       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15441 
15442       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15443                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15444                ,p_balance_type_code => l_balance_type_code);
15445 
15446    END IF;
15447 
15448    -----------------------------------------------------------------------------------------
15449    -- 4262811 Multiperiod Accounting
15450    -----------------------------------------------------------------------------------------
15451      -- No MPA option is assigned.
15452 
15453 
15454 END IF;
15455 END IF;
15456 --
15457 
15458 --
15459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15460    trace
15461       (p_msg      => 'END of AcctLineType_53'
15462       ,p_level    => C_LEVEL_PROCEDURE
15463       ,p_module   => l_log_module);
15464 END IF;
15465 --
15466 EXCEPTION
15467   WHEN xla_exceptions_pkg.application_exception THEN
15468       RAISE;
15469   WHEN OTHERS THEN
15470        xla_exceptions_pkg.raise_message
15471            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_53');
15472 END AcctLineType_53;
15473 --
15474 
15475 ---------------------------------------
15476 --
15477 -- PRIVATE FUNCTION
15478 --         AcctLineType_54
15479 --
15480 ---------------------------------------
15481 PROCEDURE AcctLineType_54 (
15482   p_application_id        IN NUMBER
15483  ,p_event_id              IN NUMBER
15484  ,p_calculate_acctd_flag  IN VARCHAR2
15485  ,p_calculate_g_l_flag    IN VARCHAR2
15486  ,p_actual_flag           IN OUT VARCHAR2
15487  ,p_balance_type_code     OUT VARCHAR2
15488  ,p_gain_or_loss_ref      OUT VARCHAR2
15489  
15490 --Cost Management Default Account
15491  , p_source_11            IN NUMBER
15492 --Receiving Accounting Line Type
15493  , p_source_78            IN VARCHAR2
15494 --DISTRIBUTION_IDENTIFIER
15495  , p_source_84            IN NUMBER
15496 --Distribution Type
15497  , p_source_85            IN VARCHAR2
15498  , p_source_85_meaning    IN VARCHAR2
15499 --Entered Currency Code
15500  , p_source_88            IN VARCHAR2
15501 --Entered Amount
15502  , p_source_91            IN NUMBER
15503 --Currency Conversion Date
15504  , p_source_92            IN DATE
15505 --Currency Conversion Rate
15506  , p_source_93            IN NUMBER
15507 --Currency Conversion Type
15508  , p_source_94            IN VARCHAR2
15509 --Accounted Amount
15510  , p_source_95            IN NUMBER
15511 )
15512 IS
15513 
15514 l_component_type              VARCHAR2(80);
15515 l_component_code              VARCHAR2(30);
15516 l_component_type_code         VARCHAR2(1);
15517 l_component_appl_id           INTEGER;
15518 l_amb_context_code            VARCHAR2(30);
15519 l_entity_code                 VARCHAR2(30);
15520 l_event_class_code            VARCHAR2(30);
15521 l_ae_header_id                NUMBER;
15522 l_event_type_code             VARCHAR2(30);
15523 l_line_definition_code        VARCHAR2(30);
15524 l_line_definition_owner_code  VARCHAR2(1);
15525 --
15526 -- adr variables
15527 l_segment                     VARCHAR2(30);
15528 l_ccid                        NUMBER;
15529 l_adr_transaction_coa_id      NUMBER;
15530 l_adr_accounting_coa_id       NUMBER;
15531 l_adr_flexfield_segment_code  VARCHAR2(30);
15532 l_adr_flex_value_set_id       NUMBER;
15533 l_adr_value_type_code         VARCHAR2(30);
15534 l_adr_value_combination_id    NUMBER;
15535 l_adr_value_segment_code      VARCHAR2(30);
15536 
15537 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15538 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15539 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15540 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15541 
15542 -- 4262811 Variables ------------------------------------------------------------------------------------------
15543 l_entered_amt_idx             NUMBER;
15544 l_accted_amt_idx              NUMBER;
15545 l_acc_rev_flag                VARCHAR2(1);
15546 l_accrual_line_num            NUMBER;
15547 l_tmp_amt                     NUMBER;
15548 l_acc_rev_natural_side_code   VARCHAR2(1);
15549 
15550 l_num_entries                 NUMBER;
15551 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15552 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15553 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15554 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15555 l_recog_line_1                NUMBER;
15556 l_recog_line_2                NUMBER;
15557 
15558 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15559 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15560 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15561 
15562 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15563 
15564 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15565 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15566 
15567 ---------------------------------------------------------------------------------------------------------------
15568 
15569 
15570 --
15571 -- bulk performance
15572 --
15573 l_balance_type_code           VARCHAR2(1);
15574 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15575 l_log_module                  VARCHAR2(240);
15576 
15577 --
15578 -- Upgrade strategy
15579 --
15580 l_actual_upg_option           VARCHAR2(1);
15581 l_enc_upg_option           VARCHAR2(1);
15582 
15583 --
15584 BEGIN
15585 --
15586 IF g_log_enabled THEN
15587       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
15588 END IF;
15589 --
15590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15591 
15592       trace
15593          (p_msg      => 'BEGIN of AcctLineType_54'
15594          ,p_level    => C_LEVEL_PROCEDURE
15595          ,p_module   => l_log_module);
15596 
15597 END IF;
15598 --
15599 l_component_type             := 'AMB_JLT';
15600 l_component_code             := 'CLEARING';
15601 l_component_type_code        := 'S';
15602 l_component_appl_id          :=  707;
15603 l_amb_context_code           := 'DEFAULT';
15604 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
15605 l_event_class_code           := 'RCPT_REC_INSP';
15606 l_event_type_code            := 'RCPT_REC_INSP_ALL';
15607 l_line_definition_owner_code := 'S';
15608 l_line_definition_code       := 'RCPT_REC_INSP';
15609 --
15610 l_balance_type_code          := 'A';
15611 l_segment                     := NULL;
15612 l_ccid                        := NULL;
15613 l_adr_transaction_coa_id      := NULL;
15614 l_adr_accounting_coa_id       := NULL;
15615 l_adr_flexfield_segment_code  := NULL;
15616 l_adr_flex_value_set_id       := NULL;
15617 l_adr_value_type_code         := NULL;
15618 l_adr_value_combination_id    := NULL;
15619 l_adr_value_segment_code      := NULL;
15620 
15621 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15622 l_bflow_class_code           := '';    -- 4219869 Business Flow
15623 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15624 l_budgetary_control_flag     := 'N';
15625 
15626 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15627 l_bflow_applied_to_amt       := NULL; -- 5132302
15628 l_entered_amt_idx            := NULL;          -- 4262811
15629 l_accted_amt_idx             := NULL;          -- 4262811
15630 l_acc_rev_flag               := NULL;          -- 4262811
15631 l_accrual_line_num           := NULL;          -- 4262811
15632 l_tmp_amt                    := NULL;          -- 4262811
15633 --
15634  
15635 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15636     l_balance_type_code <> 'B' THEN
15637 IF NVL(p_source_78,'
15638 ') =  'Clearing'
15639  THEN 
15640 
15641    --
15642    XLA_AE_LINES_PKG.SetNewLine;
15643 
15644    p_balance_type_code          := l_balance_type_code;
15645    -- set the flag so later we will know whether the gain loss line needs to be created
15646    
15647    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15648      p_actual_flag :='A';
15649    END IF;
15650 
15651    --
15652    -- bulk performance
15653    --
15654    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15655                                       p_header_num   => 0); -- 4262811
15656    --
15657    -- set accounting line options
15658    --
15659    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15660            p_natural_side_code          => 'D'
15661          , p_gain_or_loss_flag          => 'N'
15662          , p_gl_transfer_mode_code      => 'S'
15663          , p_acct_entry_type_code       => 'A'
15664          , p_switch_side_flag           => 'Y'
15665          , p_merge_duplicate_code       => 'N'
15666          );
15667    --
15668    l_acc_rev_natural_side_code := 'C';  -- 4262811
15669    -- 
15670    --
15671    -- set accounting line type info
15672    --
15673    xla_ae_lines_pkg.SetAcctLineType
15674       (p_component_type             => l_component_type
15675       ,p_event_type_code            => l_event_type_code
15676       ,p_line_definition_owner_code => l_line_definition_owner_code
15677       ,p_line_definition_code       => l_line_definition_code
15678       ,p_accounting_line_code       => l_component_code
15679       ,p_accounting_line_type_code  => l_component_type_code
15680       ,p_accounting_line_appl_id    => l_component_appl_id
15681       ,p_amb_context_code           => l_amb_context_code
15682       ,p_entity_code                => l_entity_code
15683       ,p_event_class_code           => l_event_class_code);
15684    --
15685    -- set accounting class
15686    --
15687    xla_ae_lines_pkg.SetAcctClass(
15688            p_accounting_class_code  => 'CLEARING'
15689          , p_ae_header_id           => l_ae_header_id
15690          );
15691 
15692    --
15693    -- set rounding class
15694    --
15695    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15696                       'CLEARING';
15697 
15698    --
15699    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15700    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15701    --
15702    -- bulk performance
15703    --
15704    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15705 
15706    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15707       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15708 
15709    -- 4955764
15710    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15711       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15712 
15713    -- 4458381 Public Sector Enh
15714    
15715    --
15716    -- set accounting attributes for the line type
15717    --
15718    l_entered_amt_idx := 3;
15719    l_accted_amt_idx  := 8;
15720    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15721    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15722    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
15723    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15724    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
15725    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15726    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
15727    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15728    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
15729    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15730    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
15731    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15732    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
15733    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15734    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
15735    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15736    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
15737 
15738    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15739    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15740 
15741    ---------------------------------------------------------------------------------------------------------------
15742    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15743    ---------------------------------------------------------------------------------------------------------------
15744    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15745 
15746    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15747    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15748 
15749    IF xla_accounting_cache_pkg.GetValueChar
15750          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15751          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15752    AND l_bflow_method_code = 'PRIOR_ENTRY'
15753 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15754    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15755          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15756        )
15757    THEN
15758          xla_ae_lines_pkg.BflowUpgEntry
15759            (p_business_method_code    => l_bflow_method_code
15760            ,p_business_class_code     => l_bflow_class_code
15761            ,p_balance_type            => l_balance_type_code);
15762    ELSE
15763       NULL;
15764 -- No business flow processing for business flow method of NONE.
15765    END IF;
15766 
15767    --
15768    -- call analytical criteria
15769    --
15770    
15771    --
15772    -- call description
15773    --
15774    -- No description or it is inherited.
15775    --
15776    -- call ADRs
15777    -- Bug 4922099
15778    --
15779    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15780         (NVL(l_actual_upg_option, 'N') = 'O') OR
15781         (NVL(l_enc_upg_option, 'N') = 'O')
15782       )
15783    THEN
15784    NULL;
15785    --
15786    --
15787    
15788   l_ccid := AcctDerRule_6(
15789            p_application_id           => p_application_id
15790          , p_ae_header_id             => l_ae_header_id 
15791 , p_source_11 => p_source_11
15792          , x_transaction_coa_id       => l_adr_transaction_coa_id
15793          , x_accounting_coa_id        => l_adr_accounting_coa_id
15794          , x_value_type_code          => l_adr_value_type_code
15795          , p_side                     => 'NA'
15796    );
15797 
15798    xla_ae_lines_pkg.set_ccid(
15799     p_code_combination_id          => l_ccid
15800   , p_value_type_code              => l_adr_value_type_code
15801   , p_transaction_coa_id           => l_adr_transaction_coa_id
15802   , p_accounting_coa_id            => l_adr_accounting_coa_id
15803   , p_adr_code                     => 'CST_DEFAULT'
15804   , p_adr_type_code                => 'S'
15805   , p_component_type               => l_component_type
15806   , p_component_code               => l_component_code
15807   , p_component_type_code          => l_component_type_code
15808   , p_component_appl_id            => l_component_appl_id
15809   , p_amb_context_code             => l_amb_context_code
15810   , p_side                         => 'NA'
15811   );
15812 
15813 
15814    --
15815    --
15816    END IF;
15817    --
15818    -- Bug 4922099
15819    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15820           (NVL(l_enc_upg_option, 'N') = 'O')
15821         ) AND
15822         (l_bflow_method_code = 'PRIOR_ENTRY')
15823       )
15824    THEN
15825       IF
15826       --
15827       1 = 2
15828       --
15829       THEN
15830       xla_accounting_err_pkg.build_message
15831                                     (p_appli_s_name            => 'XLA'
15832                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15833                                     ,p_token_1                 => 'LINE_NUMBER'
15834                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15835                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15836                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15837                                                                              l_component_type
15838                                                                             ,l_component_code
15839                                                                             ,l_component_type_code
15840                                                                             ,l_component_appl_id
15841                                                                             ,l_amb_context_code
15842                                                                             ,l_entity_code
15843                                                                             ,l_event_class_code
15844                                                                            )
15845                                     ,p_token_3                 => 'OWNER'
15846                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15847                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15848                                                                           ,p_lookup_code    => l_component_type_code
15849                                                                          )
15850                                     ,p_token_4                 => 'PRODUCT_NAME'
15851                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15852                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15853                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15854                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15855                                     ,p_ae_header_id            =>  NULL
15856                                        );
15857 
15858         IF (C_LEVEL_ERROR>= g_log_level) THEN
15859                  trace
15860                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15861                       ,p_level    => C_LEVEL_ERROR
15862                       ,p_module   => l_log_module);
15863         END IF;
15864       END IF;
15865    END IF;
15866    --
15867    --
15868    ------------------------------------------------------------------------------------------------
15869    -- 4219869 Business Flow
15870    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15871    -- Prior Entry.  Currently, the following code is always generated.
15872    ------------------------------------------------------------------------------------------------
15873    XLA_AE_LINES_PKG.ValidateCurrentLine;
15874 
15875    ------------------------------------------------------------------------------------
15876    -- 4219869 Business Flow
15877    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15878    ------------------------------------------------------------------------------------
15879    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15880 
15881    ----------------------------------------------------------------------------------
15882    -- 4219869 Business Flow
15883    -- Update journal entry status -- Need to generate this within IF <condition>
15884    ----------------------------------------------------------------------------------
15885    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15886          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15887          ,p_balance_type_code => l_balance_type_code
15888          );
15889 
15890    -------------------------------------------------------------------------------------------
15891    -- 4262811 - Generate the Accrual Reversal lines
15892    -------------------------------------------------------------------------------------------
15893    BEGIN
15894       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15895                               (g_array_event(p_event_id).array_value_num('header_index'));
15896       IF l_acc_rev_flag IS NULL THEN
15897          l_acc_rev_flag := 'N';
15898       END IF;
15899    EXCEPTION
15900       WHEN OTHERS THEN
15901          l_acc_rev_flag := 'N';
15902    END;
15903    --
15904    IF (l_acc_rev_flag = 'Y') THEN
15905 
15906        -- 4645092  ------------------------------------------------------------------------------
15907        -- To allow MPA report to determine if it should generate report process
15908        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15909        ------------------------------------------------------------------------------------------
15910 
15911        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15912        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15913    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15914    -- call ADRs
15915    -- Bug 4922099
15916    --
15917    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15918         (NVL(l_actual_upg_option, 'N') = 'O') OR
15919         (NVL(l_enc_upg_option, 'N') = 'O')
15920       )
15921    THEN
15922    NULL;
15923    --
15924    --
15925    
15926   l_ccid := AcctDerRule_6(
15927            p_application_id           => p_application_id
15928          , p_ae_header_id             => l_ae_header_id 
15929 , p_source_11 => p_source_11
15930          , x_transaction_coa_id       => l_adr_transaction_coa_id
15931          , x_accounting_coa_id        => l_adr_accounting_coa_id
15932          , x_value_type_code          => l_adr_value_type_code
15933          , p_side                     => 'NA'
15934    );
15935 
15936    xla_ae_lines_pkg.set_ccid(
15937     p_code_combination_id          => l_ccid
15938   , p_value_type_code              => l_adr_value_type_code
15939   , p_transaction_coa_id           => l_adr_transaction_coa_id
15940   , p_accounting_coa_id            => l_adr_accounting_coa_id
15941   , p_adr_code                     => 'CST_DEFAULT'
15942   , p_adr_type_code                => 'S'
15943   , p_component_type               => l_component_type
15944   , p_component_code               => l_component_code
15945   , p_component_type_code          => l_component_type_code
15946   , p_component_appl_id            => l_component_appl_id
15947   , p_amb_context_code             => l_amb_context_code
15948   , p_side                         => 'NA'
15949   );
15950 
15951 
15952    --
15953    --
15954    END IF;
15955 
15956        --
15957        -- Update the line information that should be overwritten
15958        --
15959        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15960                                          p_header_num   => 1);
15961        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15962 
15963        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15964 
15965        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15966           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15967        END IF;
15968 
15969       --
15970       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15971       --
15972       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15973           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15974       ELSE
15975           ---------------------------------------------------------------------------------------------------
15976           -- 4262811a Switch Sign
15977           ---------------------------------------------------------------------------------------------------
15978           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15979           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15980                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15981           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15982                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15983           -- 5132302
15984           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15985                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15986 
15987       END IF;
15988 
15989       -- 4955764
15990       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15991       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15992 
15993 
15994       XLA_AE_LINES_PKG.ValidateCurrentLine;
15995       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15996 
15997       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15998                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15999                ,p_balance_type_code => l_balance_type_code);
16000 
16001    END IF;
16002 
16003    -----------------------------------------------------------------------------------------
16004    -- 4262811 Multiperiod Accounting
16005    -----------------------------------------------------------------------------------------
16006      -- No MPA option is assigned.
16007 
16008 
16009 END IF;
16010 END IF;
16011 --
16012 
16013 --
16014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16015    trace
16016       (p_msg      => 'END of AcctLineType_54'
16017       ,p_level    => C_LEVEL_PROCEDURE
16018       ,p_module   => l_log_module);
16019 END IF;
16020 --
16021 EXCEPTION
16022   WHEN xla_exceptions_pkg.application_exception THEN
16023       RAISE;
16024   WHEN OTHERS THEN
16025        xla_exceptions_pkg.raise_message
16026            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_54');
16027 END AcctLineType_54;
16028 --
16029 
16030 ---------------------------------------
16031 --
16032 -- PRIVATE FUNCTION
16033 --         AcctLineType_55
16034 --
16035 ---------------------------------------
16036 PROCEDURE AcctLineType_55 (
16037   p_application_id        IN NUMBER
16038  ,p_event_id              IN NUMBER
16039  ,p_calculate_acctd_flag  IN VARCHAR2
16040  ,p_calculate_g_l_flag    IN VARCHAR2
16041  ,p_actual_flag           IN OUT VARCHAR2
16042  ,p_balance_type_code     OUT VARCHAR2
16043  ,p_gain_or_loss_ref      OUT VARCHAR2
16044  
16045 --Cost Management Default Account
16046  , p_source_11            IN NUMBER
16047 --DISTRIBUTION_IDENTIFIER
16048  , p_source_84            IN NUMBER
16049 --Distribution Type
16050  , p_source_85            IN VARCHAR2
16051  , p_source_85_meaning    IN VARCHAR2
16052 --Entered Currency Code
16053  , p_source_88            IN VARCHAR2
16054 --Entered Amount
16055  , p_source_91            IN NUMBER
16056 --Currency Conversion Date
16057  , p_source_92            IN DATE
16058 --Currency Conversion Rate
16059  , p_source_93            IN NUMBER
16060 --Currency Conversion Type
16061  , p_source_94            IN VARCHAR2
16062 --Accounted Amount
16063  , p_source_95            IN NUMBER
16064 --Accounting Line Type
16065  , p_source_97            IN NUMBER
16066 )
16067 IS
16068 
16069 l_component_type              VARCHAR2(80);
16070 l_component_code              VARCHAR2(30);
16071 l_component_type_code         VARCHAR2(1);
16072 l_component_appl_id           INTEGER;
16073 l_amb_context_code            VARCHAR2(30);
16074 l_entity_code                 VARCHAR2(30);
16075 l_event_class_code            VARCHAR2(30);
16076 l_ae_header_id                NUMBER;
16077 l_event_type_code             VARCHAR2(30);
16078 l_line_definition_code        VARCHAR2(30);
16079 l_line_definition_owner_code  VARCHAR2(1);
16080 --
16081 -- adr variables
16082 l_segment                     VARCHAR2(30);
16083 l_ccid                        NUMBER;
16084 l_adr_transaction_coa_id      NUMBER;
16085 l_adr_accounting_coa_id       NUMBER;
16086 l_adr_flexfield_segment_code  VARCHAR2(30);
16087 l_adr_flex_value_set_id       NUMBER;
16088 l_adr_value_type_code         VARCHAR2(30);
16089 l_adr_value_combination_id    NUMBER;
16090 l_adr_value_segment_code      VARCHAR2(30);
16091 
16092 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16093 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16094 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16095 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16096 
16097 -- 4262811 Variables ------------------------------------------------------------------------------------------
16098 l_entered_amt_idx             NUMBER;
16099 l_accted_amt_idx              NUMBER;
16100 l_acc_rev_flag                VARCHAR2(1);
16101 l_accrual_line_num            NUMBER;
16102 l_tmp_amt                     NUMBER;
16103 l_acc_rev_natural_side_code   VARCHAR2(1);
16104 
16105 l_num_entries                 NUMBER;
16106 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16107 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16108 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16109 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16110 l_recog_line_1                NUMBER;
16111 l_recog_line_2                NUMBER;
16112 
16113 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16114 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16115 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16116 
16117 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16118 
16119 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16120 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16121 
16122 ---------------------------------------------------------------------------------------------------------------
16123 
16124 
16125 --
16126 -- bulk performance
16127 --
16128 l_balance_type_code           VARCHAR2(1);
16129 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16130 l_log_module                  VARCHAR2(240);
16131 
16132 --
16133 -- Upgrade strategy
16134 --
16135 l_actual_upg_option           VARCHAR2(1);
16136 l_enc_upg_option           VARCHAR2(1);
16137 
16138 --
16139 BEGIN
16140 --
16141 IF g_log_enabled THEN
16142       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
16143 END IF;
16144 --
16145 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16146 
16147       trace
16148          (p_msg      => 'BEGIN of AcctLineType_55'
16149          ,p_level    => C_LEVEL_PROCEDURE
16150          ,p_module   => l_log_module);
16151 
16152 END IF;
16153 --
16154 l_component_type             := 'AMB_JLT';
16155 l_component_code             := 'COST_OF_GOODS_SOLD';
16156 l_component_type_code        := 'S';
16157 l_component_appl_id          :=  707;
16158 l_amb_context_code           := 'DEFAULT';
16159 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
16160 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
16161 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
16162 l_line_definition_owner_code := 'S';
16163 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
16164 --
16165 l_balance_type_code          := 'A';
16166 l_segment                     := NULL;
16167 l_ccid                        := NULL;
16168 l_adr_transaction_coa_id      := NULL;
16169 l_adr_accounting_coa_id       := NULL;
16170 l_adr_flexfield_segment_code  := NULL;
16171 l_adr_flex_value_set_id       := NULL;
16172 l_adr_value_type_code         := NULL;
16173 l_adr_value_combination_id    := NULL;
16174 l_adr_value_segment_code      := NULL;
16175 
16176 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16177 l_bflow_class_code           := '';    -- 4219869 Business Flow
16178 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16179 l_budgetary_control_flag     := 'N';
16180 
16181 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16182 l_bflow_applied_to_amt       := NULL; -- 5132302
16183 l_entered_amt_idx            := NULL;          -- 4262811
16184 l_accted_amt_idx             := NULL;          -- 4262811
16185 l_acc_rev_flag               := NULL;          -- 4262811
16186 l_accrual_line_num           := NULL;          -- 4262811
16187 l_tmp_amt                    := NULL;          -- 4262811
16188 --
16189  
16190 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16191     l_balance_type_code <> 'B' THEN
16192 IF NVL(p_source_97,9E125) =  2 AND 
16193 p_source_95 >  0
16194  THEN 
16195 
16196    --
16197    XLA_AE_LINES_PKG.SetNewLine;
16198 
16199    p_balance_type_code          := l_balance_type_code;
16200    -- set the flag so later we will know whether the gain loss line needs to be created
16201    
16202    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16203      p_actual_flag :='A';
16204    END IF;
16205 
16206    --
16207    -- bulk performance
16208    --
16209    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16210                                       p_header_num   => 0); -- 4262811
16211    --
16212    -- set accounting line options
16213    --
16214    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16215            p_natural_side_code          => 'D'
16216          , p_gain_or_loss_flag          => 'N'
16217          , p_gl_transfer_mode_code      => 'S'
16218          , p_acct_entry_type_code       => 'A'
16219          , p_switch_side_flag           => 'Y'
16220          , p_merge_duplicate_code       => 'N'
16221          );
16222    --
16223    l_acc_rev_natural_side_code := 'C';  -- 4262811
16224    -- 
16225    --
16226    -- set accounting line type info
16227    --
16228    xla_ae_lines_pkg.SetAcctLineType
16229       (p_component_type             => l_component_type
16230       ,p_event_type_code            => l_event_type_code
16231       ,p_line_definition_owner_code => l_line_definition_owner_code
16232       ,p_line_definition_code       => l_line_definition_code
16233       ,p_accounting_line_code       => l_component_code
16234       ,p_accounting_line_type_code  => l_component_type_code
16235       ,p_accounting_line_appl_id    => l_component_appl_id
16236       ,p_amb_context_code           => l_amb_context_code
16237       ,p_entity_code                => l_entity_code
16238       ,p_event_class_code           => l_event_class_code);
16239    --
16240    -- set accounting class
16241    --
16242    xla_ae_lines_pkg.SetAcctClass(
16243            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
16244          , p_ae_header_id           => l_ae_header_id
16245          );
16246 
16247    --
16248    -- set rounding class
16249    --
16250    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16251                       'COST_OF_GOODS_SOLD';
16252 
16253    --
16254    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16255    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16256    --
16257    -- bulk performance
16258    --
16259    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16260 
16261    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16262       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16263 
16264    -- 4955764
16265    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16266       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16267 
16268    -- 4458381 Public Sector Enh
16269    
16270    --
16271    -- set accounting attributes for the line type
16272    --
16273    l_entered_amt_idx := 3;
16274    l_accted_amt_idx  := 8;
16275    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16276    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16277    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
16278    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16279    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
16280    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16281    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
16282    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16283    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
16284    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16285    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
16286    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16287    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
16288    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16289    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
16290    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16291    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
16292 
16293    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16294    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16295 
16296    ---------------------------------------------------------------------------------------------------------------
16297    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16298    ---------------------------------------------------------------------------------------------------------------
16299    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16300 
16301    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16302    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16303 
16304    IF xla_accounting_cache_pkg.GetValueChar
16305          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16306          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16307    AND l_bflow_method_code = 'PRIOR_ENTRY'
16308 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16309    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16310          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16311        )
16312    THEN
16313          xla_ae_lines_pkg.BflowUpgEntry
16314            (p_business_method_code    => l_bflow_method_code
16315            ,p_business_class_code     => l_bflow_class_code
16316            ,p_balance_type            => l_balance_type_code);
16317    ELSE
16318       NULL;
16319 -- No business flow processing for business flow method of NONE.
16320    END IF;
16321 
16322    --
16323    -- call analytical criteria
16324    --
16325    
16326    --
16327    -- call description
16328    --
16329    -- No description or it is inherited.
16330    --
16331    -- call ADRs
16332    -- Bug 4922099
16333    --
16334    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16335         (NVL(l_actual_upg_option, 'N') = 'O') OR
16336         (NVL(l_enc_upg_option, 'N') = 'O')
16337       )
16338    THEN
16339    NULL;
16340    --
16341    --
16342    
16343   l_ccid := AcctDerRule_6(
16344            p_application_id           => p_application_id
16345          , p_ae_header_id             => l_ae_header_id 
16346 , p_source_11 => p_source_11
16347          , x_transaction_coa_id       => l_adr_transaction_coa_id
16348          , x_accounting_coa_id        => l_adr_accounting_coa_id
16349          , x_value_type_code          => l_adr_value_type_code
16350          , p_side                     => 'NA'
16351    );
16352 
16353    xla_ae_lines_pkg.set_ccid(
16354     p_code_combination_id          => l_ccid
16355   , p_value_type_code              => l_adr_value_type_code
16356   , p_transaction_coa_id           => l_adr_transaction_coa_id
16357   , p_accounting_coa_id            => l_adr_accounting_coa_id
16358   , p_adr_code                     => 'CST_DEFAULT'
16359   , p_adr_type_code                => 'S'
16360   , p_component_type               => l_component_type
16361   , p_component_code               => l_component_code
16362   , p_component_type_code          => l_component_type_code
16363   , p_component_appl_id            => l_component_appl_id
16364   , p_amb_context_code             => l_amb_context_code
16365   , p_side                         => 'NA'
16366   );
16367 
16368 
16369    --
16370    --
16371    END IF;
16372    --
16373    -- Bug 4922099
16374    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16375           (NVL(l_enc_upg_option, 'N') = 'O')
16376         ) AND
16377         (l_bflow_method_code = 'PRIOR_ENTRY')
16378       )
16379    THEN
16380       IF
16381       --
16382       1 = 2
16383       --
16384       THEN
16385       xla_accounting_err_pkg.build_message
16386                                     (p_appli_s_name            => 'XLA'
16387                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16388                                     ,p_token_1                 => 'LINE_NUMBER'
16389                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16390                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16391                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16392                                                                              l_component_type
16393                                                                             ,l_component_code
16394                                                                             ,l_component_type_code
16395                                                                             ,l_component_appl_id
16396                                                                             ,l_amb_context_code
16397                                                                             ,l_entity_code
16398                                                                             ,l_event_class_code
16399                                                                            )
16400                                     ,p_token_3                 => 'OWNER'
16401                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16402                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16403                                                                           ,p_lookup_code    => l_component_type_code
16404                                                                          )
16405                                     ,p_token_4                 => 'PRODUCT_NAME'
16406                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16407                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16408                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16409                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16410                                     ,p_ae_header_id            =>  NULL
16411                                        );
16412 
16413         IF (C_LEVEL_ERROR>= g_log_level) THEN
16414                  trace
16415                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16416                       ,p_level    => C_LEVEL_ERROR
16417                       ,p_module   => l_log_module);
16418         END IF;
16419       END IF;
16420    END IF;
16421    --
16422    --
16423    ------------------------------------------------------------------------------------------------
16424    -- 4219869 Business Flow
16425    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16426    -- Prior Entry.  Currently, the following code is always generated.
16427    ------------------------------------------------------------------------------------------------
16428    XLA_AE_LINES_PKG.ValidateCurrentLine;
16429 
16430    ------------------------------------------------------------------------------------
16431    -- 4219869 Business Flow
16432    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16433    ------------------------------------------------------------------------------------
16434    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16435 
16436    ----------------------------------------------------------------------------------
16437    -- 4219869 Business Flow
16438    -- Update journal entry status -- Need to generate this within IF <condition>
16439    ----------------------------------------------------------------------------------
16440    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16441          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16442          ,p_balance_type_code => l_balance_type_code
16443          );
16444 
16445    -------------------------------------------------------------------------------------------
16446    -- 4262811 - Generate the Accrual Reversal lines
16447    -------------------------------------------------------------------------------------------
16448    BEGIN
16449       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16450                               (g_array_event(p_event_id).array_value_num('header_index'));
16451       IF l_acc_rev_flag IS NULL THEN
16452          l_acc_rev_flag := 'N';
16453       END IF;
16454    EXCEPTION
16455       WHEN OTHERS THEN
16456          l_acc_rev_flag := 'N';
16457    END;
16458    --
16459    IF (l_acc_rev_flag = 'Y') THEN
16460 
16461        -- 4645092  ------------------------------------------------------------------------------
16462        -- To allow MPA report to determine if it should generate report process
16463        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16464        ------------------------------------------------------------------------------------------
16465 
16466        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16467        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16468    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16469    -- call ADRs
16470    -- Bug 4922099
16471    --
16472    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16473         (NVL(l_actual_upg_option, 'N') = 'O') OR
16474         (NVL(l_enc_upg_option, 'N') = 'O')
16475       )
16476    THEN
16477    NULL;
16478    --
16479    --
16480    
16481   l_ccid := AcctDerRule_6(
16482            p_application_id           => p_application_id
16483          , p_ae_header_id             => l_ae_header_id 
16484 , p_source_11 => p_source_11
16485          , x_transaction_coa_id       => l_adr_transaction_coa_id
16486          , x_accounting_coa_id        => l_adr_accounting_coa_id
16487          , x_value_type_code          => l_adr_value_type_code
16488          , p_side                     => 'NA'
16489    );
16490 
16491    xla_ae_lines_pkg.set_ccid(
16492     p_code_combination_id          => l_ccid
16493   , p_value_type_code              => l_adr_value_type_code
16494   , p_transaction_coa_id           => l_adr_transaction_coa_id
16495   , p_accounting_coa_id            => l_adr_accounting_coa_id
16496   , p_adr_code                     => 'CST_DEFAULT'
16497   , p_adr_type_code                => 'S'
16498   , p_component_type               => l_component_type
16499   , p_component_code               => l_component_code
16500   , p_component_type_code          => l_component_type_code
16501   , p_component_appl_id            => l_component_appl_id
16502   , p_amb_context_code             => l_amb_context_code
16503   , p_side                         => 'NA'
16504   );
16505 
16506 
16507    --
16508    --
16509    END IF;
16510 
16511        --
16512        -- Update the line information that should be overwritten
16513        --
16514        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16515                                          p_header_num   => 1);
16516        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16517 
16518        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16519 
16520        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16521           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16522        END IF;
16523 
16524       --
16525       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16526       --
16527       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16528           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16529       ELSE
16530           ---------------------------------------------------------------------------------------------------
16531           -- 4262811a Switch Sign
16532           ---------------------------------------------------------------------------------------------------
16533           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16534           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16535                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16536           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16537                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16538           -- 5132302
16539           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16540                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16541 
16542       END IF;
16543 
16544       -- 4955764
16545       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16546       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16547 
16548 
16549       XLA_AE_LINES_PKG.ValidateCurrentLine;
16550       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16551 
16552       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16553                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16554                ,p_balance_type_code => l_balance_type_code);
16555 
16556    END IF;
16557 
16558    -----------------------------------------------------------------------------------------
16559    -- 4262811 Multiperiod Accounting
16560    -----------------------------------------------------------------------------------------
16561      -- No MPA option is assigned.
16562 
16563 
16564 END IF;
16565 END IF;
16566 --
16567 
16568 --
16569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16570    trace
16571       (p_msg      => 'END of AcctLineType_55'
16572       ,p_level    => C_LEVEL_PROCEDURE
16573       ,p_module   => l_log_module);
16574 END IF;
16575 --
16576 EXCEPTION
16577   WHEN xla_exceptions_pkg.application_exception THEN
16578       RAISE;
16579   WHEN OTHERS THEN
16580        xla_exceptions_pkg.raise_message
16581            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_55');
16582 END AcctLineType_55;
16583 --
16584 
16585 ---------------------------------------
16586 --
16587 -- PRIVATE FUNCTION
16588 --         AcctLineType_56
16589 --
16590 ---------------------------------------
16591 PROCEDURE AcctLineType_56 (
16592   p_application_id        IN NUMBER
16593  ,p_event_id              IN NUMBER
16594  ,p_calculate_acctd_flag  IN VARCHAR2
16595  ,p_calculate_g_l_flag    IN VARCHAR2
16596  ,p_actual_flag           IN OUT VARCHAR2
16597  ,p_balance_type_code     OUT VARCHAR2
16598  ,p_gain_or_loss_ref      OUT VARCHAR2
16599  
16600 --TRANSACTION_ID
16601  , p_source_1            IN NUMBER
16602 --Item Concatenated Segments
16603  , p_source_2            IN VARCHAR2
16604 --Transaction Quantity
16605  , p_source_3            IN NUMBER
16606 --Transaction Unit of Measure Code
16607  , p_source_4            IN VARCHAR2
16608 --Inventory Transaction Type Description
16609  , p_source_5            IN VARCHAR2
16610 --Cost Management Default Account
16611  , p_source_11            IN NUMBER
16612 --DISTRIBUTION_IDENTIFIER
16613  , p_source_84            IN NUMBER
16614 --Distribution Type
16615  , p_source_85            IN VARCHAR2
16616  , p_source_85_meaning    IN VARCHAR2
16617 --Entered Currency Code
16618  , p_source_88            IN VARCHAR2
16619 --Entered Amount
16620  , p_source_91            IN NUMBER
16621 --Currency Conversion Date
16622  , p_source_92            IN DATE
16623 --Currency Conversion Rate
16624  , p_source_93            IN NUMBER
16625 --Currency Conversion Type
16626  , p_source_94            IN VARCHAR2
16627 --Accounted Amount
16628  , p_source_95            IN NUMBER
16629 --Accounting Line Type
16630  , p_source_97            IN NUMBER
16631 )
16632 IS
16633 
16634 l_component_type              VARCHAR2(80);
16635 l_component_code              VARCHAR2(30);
16636 l_component_type_code         VARCHAR2(1);
16637 l_component_appl_id           INTEGER;
16638 l_amb_context_code            VARCHAR2(30);
16639 l_entity_code                 VARCHAR2(30);
16640 l_event_class_code            VARCHAR2(30);
16641 l_ae_header_id                NUMBER;
16642 l_event_type_code             VARCHAR2(30);
16643 l_line_definition_code        VARCHAR2(30);
16644 l_line_definition_owner_code  VARCHAR2(1);
16645 --
16646 -- adr variables
16647 l_segment                     VARCHAR2(30);
16648 l_ccid                        NUMBER;
16649 l_adr_transaction_coa_id      NUMBER;
16650 l_adr_accounting_coa_id       NUMBER;
16651 l_adr_flexfield_segment_code  VARCHAR2(30);
16652 l_adr_flex_value_set_id       NUMBER;
16653 l_adr_value_type_code         VARCHAR2(30);
16654 l_adr_value_combination_id    NUMBER;
16655 l_adr_value_segment_code      VARCHAR2(30);
16656 
16657 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16658 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16659 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16660 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16661 
16662 -- 4262811 Variables ------------------------------------------------------------------------------------------
16663 l_entered_amt_idx             NUMBER;
16664 l_accted_amt_idx              NUMBER;
16665 l_acc_rev_flag                VARCHAR2(1);
16666 l_accrual_line_num            NUMBER;
16667 l_tmp_amt                     NUMBER;
16668 l_acc_rev_natural_side_code   VARCHAR2(1);
16669 
16670 l_num_entries                 NUMBER;
16671 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16672 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16673 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16674 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16675 l_recog_line_1                NUMBER;
16676 l_recog_line_2                NUMBER;
16677 
16678 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16679 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16680 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16681 
16682 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16683 
16684 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16685 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16686 
16687 ---------------------------------------------------------------------------------------------------------------
16688 
16689 
16690 --
16691 -- bulk performance
16692 --
16693 l_balance_type_code           VARCHAR2(1);
16694 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16695 l_log_module                  VARCHAR2(240);
16696 
16697 --
16698 -- Upgrade strategy
16699 --
16700 l_actual_upg_option           VARCHAR2(1);
16701 l_enc_upg_option           VARCHAR2(1);
16702 
16703 --
16704 BEGIN
16705 --
16706 IF g_log_enabled THEN
16707       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
16708 END IF;
16709 --
16710 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16711 
16712       trace
16713          (p_msg      => 'BEGIN of AcctLineType_56'
16714          ,p_level    => C_LEVEL_PROCEDURE
16715          ,p_module   => l_log_module);
16716 
16717 END IF;
16718 --
16719 l_component_type             := 'AMB_JLT';
16720 l_component_code             := 'COST_OF_GOODS_SOLD';
16721 l_component_type_code        := 'S';
16722 l_component_appl_id          :=  707;
16723 l_amb_context_code           := 'DEFAULT';
16724 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
16725 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
16726 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
16727 l_line_definition_owner_code := 'S';
16728 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
16729 --
16730 l_balance_type_code          := 'A';
16731 l_segment                     := NULL;
16732 l_ccid                        := NULL;
16733 l_adr_transaction_coa_id      := NULL;
16734 l_adr_accounting_coa_id       := NULL;
16735 l_adr_flexfield_segment_code  := NULL;
16736 l_adr_flex_value_set_id       := NULL;
16737 l_adr_value_type_code         := NULL;
16738 l_adr_value_combination_id    := NULL;
16739 l_adr_value_segment_code      := NULL;
16740 
16741 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16742 l_bflow_class_code           := '';    -- 4219869 Business Flow
16743 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16744 l_budgetary_control_flag     := 'N';
16745 
16746 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16747 l_bflow_applied_to_amt       := NULL; -- 5132302
16748 l_entered_amt_idx            := NULL;          -- 4262811
16749 l_accted_amt_idx             := NULL;          -- 4262811
16750 l_acc_rev_flag               := NULL;          -- 4262811
16751 l_accrual_line_num           := NULL;          -- 4262811
16752 l_tmp_amt                    := NULL;          -- 4262811
16753 --
16754  
16755 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16756     l_balance_type_code <> 'B' THEN
16757 IF NVL(p_source_97,9E125) =  2 AND 
16758 p_source_95 >  0
16759  THEN 
16760 
16761    --
16762    XLA_AE_LINES_PKG.SetNewLine;
16763 
16764    p_balance_type_code          := l_balance_type_code;
16765    -- set the flag so later we will know whether the gain loss line needs to be created
16766    
16767    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16768      p_actual_flag :='A';
16769    END IF;
16770 
16771    --
16772    -- bulk performance
16773    --
16774    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16775                                       p_header_num   => 0); -- 4262811
16776    --
16777    -- set accounting line options
16778    --
16779    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16780            p_natural_side_code          => 'D'
16781          , p_gain_or_loss_flag          => 'N'
16782          , p_gl_transfer_mode_code      => 'S'
16783          , p_acct_entry_type_code       => 'A'
16784          , p_switch_side_flag           => 'Y'
16785          , p_merge_duplicate_code       => 'N'
16786          );
16787    --
16788    l_acc_rev_natural_side_code := 'C';  -- 4262811
16789    -- 
16790    --
16791    -- set accounting line type info
16792    --
16793    xla_ae_lines_pkg.SetAcctLineType
16794       (p_component_type             => l_component_type
16795       ,p_event_type_code            => l_event_type_code
16796       ,p_line_definition_owner_code => l_line_definition_owner_code
16797       ,p_line_definition_code       => l_line_definition_code
16798       ,p_accounting_line_code       => l_component_code
16799       ,p_accounting_line_type_code  => l_component_type_code
16800       ,p_accounting_line_appl_id    => l_component_appl_id
16801       ,p_amb_context_code           => l_amb_context_code
16802       ,p_entity_code                => l_entity_code
16803       ,p_event_class_code           => l_event_class_code);
16804    --
16805    -- set accounting class
16806    --
16807    xla_ae_lines_pkg.SetAcctClass(
16808            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
16809          , p_ae_header_id           => l_ae_header_id
16810          );
16811 
16812    --
16813    -- set rounding class
16814    --
16815    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16816                       'COST_OF_GOODS_SOLD';
16817 
16818    --
16819    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16820    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16821    --
16822    -- bulk performance
16823    --
16824    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16825 
16826    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16827       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16828 
16829    -- 4955764
16830    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16831       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16832 
16833    -- 4458381 Public Sector Enh
16834    
16835    --
16836    -- set accounting attributes for the line type
16837    --
16838    l_entered_amt_idx := 3;
16839    l_accted_amt_idx  := 8;
16840    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16841    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16842    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
16843    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16844    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
16845    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16846    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
16847    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16848    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
16849    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16850    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
16851    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16852    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
16853    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16854    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
16855    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16856    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
16857 
16858    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16859    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16860 
16861    ---------------------------------------------------------------------------------------------------------------
16862    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16863    ---------------------------------------------------------------------------------------------------------------
16864    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16865 
16866    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16867    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16868 
16869    IF xla_accounting_cache_pkg.GetValueChar
16870          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16871          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16872    AND l_bflow_method_code = 'PRIOR_ENTRY'
16873 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16874    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16875          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16876        )
16877    THEN
16878          xla_ae_lines_pkg.BflowUpgEntry
16879            (p_business_method_code    => l_bflow_method_code
16880            ,p_business_class_code     => l_bflow_class_code
16881            ,p_balance_type            => l_balance_type_code);
16882    ELSE
16883       NULL;
16884 -- No business flow processing for business flow method of NONE.
16885    END IF;
16886 
16887    --
16888    -- call analytical criteria
16889    --
16890    
16891    --
16892    -- call description
16893    --
16894    
16895 xla_ae_lines_pkg.SetLineDescription(
16896    p_ae_header_id => l_ae_header_id
16897   ,p_description  => Description_1 (
16898      p_application_id         => p_application_id
16899    , p_ae_header_id           => l_ae_header_id 
16900 , p_source_1 => p_source_1
16901 , p_source_2 => p_source_2
16902 , p_source_3 => p_source_3
16903 , p_source_4 => p_source_4
16904 , p_source_5 => p_source_5
16905    )
16906 );
16907 
16908 
16909    --
16910    -- call ADRs
16911    -- Bug 4922099
16912    --
16913    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16914         (NVL(l_actual_upg_option, 'N') = 'O') OR
16915         (NVL(l_enc_upg_option, 'N') = 'O')
16916       )
16917    THEN
16918    NULL;
16919    --
16920    --
16921    
16922   l_ccid := AcctDerRule_6(
16923            p_application_id           => p_application_id
16924          , p_ae_header_id             => l_ae_header_id 
16925 , p_source_11 => p_source_11
16926          , x_transaction_coa_id       => l_adr_transaction_coa_id
16927          , x_accounting_coa_id        => l_adr_accounting_coa_id
16928          , x_value_type_code          => l_adr_value_type_code
16929          , p_side                     => 'NA'
16930    );
16931 
16932    xla_ae_lines_pkg.set_ccid(
16933     p_code_combination_id          => l_ccid
16934   , p_value_type_code              => l_adr_value_type_code
16935   , p_transaction_coa_id           => l_adr_transaction_coa_id
16936   , p_accounting_coa_id            => l_adr_accounting_coa_id
16937   , p_adr_code                     => 'CST_DEFAULT'
16938   , p_adr_type_code                => 'S'
16939   , p_component_type               => l_component_type
16940   , p_component_code               => l_component_code
16941   , p_component_type_code          => l_component_type_code
16942   , p_component_appl_id            => l_component_appl_id
16943   , p_amb_context_code             => l_amb_context_code
16944   , p_side                         => 'NA'
16945   );
16946 
16947 
16948    --
16949    --
16950    END IF;
16951    --
16952    -- Bug 4922099
16953    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16954           (NVL(l_enc_upg_option, 'N') = 'O')
16955         ) AND
16956         (l_bflow_method_code = 'PRIOR_ENTRY')
16957       )
16958    THEN
16959       IF
16960       --
16961       1 = 2
16962       --
16963       THEN
16964       xla_accounting_err_pkg.build_message
16965                                     (p_appli_s_name            => 'XLA'
16966                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16967                                     ,p_token_1                 => 'LINE_NUMBER'
16968                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16969                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16970                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16971                                                                              l_component_type
16972                                                                             ,l_component_code
16973                                                                             ,l_component_type_code
16974                                                                             ,l_component_appl_id
16975                                                                             ,l_amb_context_code
16976                                                                             ,l_entity_code
16977                                                                             ,l_event_class_code
16978                                                                            )
16979                                     ,p_token_3                 => 'OWNER'
16980                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16981                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16982                                                                           ,p_lookup_code    => l_component_type_code
16983                                                                          )
16984                                     ,p_token_4                 => 'PRODUCT_NAME'
16985                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16986                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16987                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16988                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16989                                     ,p_ae_header_id            =>  NULL
16990                                        );
16991 
16992         IF (C_LEVEL_ERROR>= g_log_level) THEN
16993                  trace
16994                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16995                       ,p_level    => C_LEVEL_ERROR
16996                       ,p_module   => l_log_module);
16997         END IF;
16998       END IF;
16999    END IF;
17000    --
17001    --
17002    ------------------------------------------------------------------------------------------------
17003    -- 4219869 Business Flow
17004    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17005    -- Prior Entry.  Currently, the following code is always generated.
17006    ------------------------------------------------------------------------------------------------
17007    XLA_AE_LINES_PKG.ValidateCurrentLine;
17008 
17009    ------------------------------------------------------------------------------------
17010    -- 4219869 Business Flow
17011    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17012    ------------------------------------------------------------------------------------
17013    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17014 
17015    ----------------------------------------------------------------------------------
17016    -- 4219869 Business Flow
17017    -- Update journal entry status -- Need to generate this within IF <condition>
17018    ----------------------------------------------------------------------------------
17019    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17020          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17021          ,p_balance_type_code => l_balance_type_code
17022          );
17023 
17024    -------------------------------------------------------------------------------------------
17025    -- 4262811 - Generate the Accrual Reversal lines
17026    -------------------------------------------------------------------------------------------
17027    BEGIN
17028       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17029                               (g_array_event(p_event_id).array_value_num('header_index'));
17030       IF l_acc_rev_flag IS NULL THEN
17031          l_acc_rev_flag := 'N';
17032       END IF;
17033    EXCEPTION
17034       WHEN OTHERS THEN
17035          l_acc_rev_flag := 'N';
17036    END;
17037    --
17038    IF (l_acc_rev_flag = 'Y') THEN
17039 
17040        -- 4645092  ------------------------------------------------------------------------------
17041        -- To allow MPA report to determine if it should generate report process
17042        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17043        ------------------------------------------------------------------------------------------
17044 
17045        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17046        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17047    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17048    -- call ADRs
17049    -- Bug 4922099
17050    --
17051    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17052         (NVL(l_actual_upg_option, 'N') = 'O') OR
17053         (NVL(l_enc_upg_option, 'N') = 'O')
17054       )
17055    THEN
17056    NULL;
17057    --
17058    --
17059    
17060   l_ccid := AcctDerRule_6(
17061            p_application_id           => p_application_id
17062          , p_ae_header_id             => l_ae_header_id 
17063 , p_source_11 => p_source_11
17064          , x_transaction_coa_id       => l_adr_transaction_coa_id
17065          , x_accounting_coa_id        => l_adr_accounting_coa_id
17066          , x_value_type_code          => l_adr_value_type_code
17067          , p_side                     => 'NA'
17068    );
17069 
17070    xla_ae_lines_pkg.set_ccid(
17071     p_code_combination_id          => l_ccid
17072   , p_value_type_code              => l_adr_value_type_code
17073   , p_transaction_coa_id           => l_adr_transaction_coa_id
17074   , p_accounting_coa_id            => l_adr_accounting_coa_id
17075   , p_adr_code                     => 'CST_DEFAULT'
17076   , p_adr_type_code                => 'S'
17077   , p_component_type               => l_component_type
17078   , p_component_code               => l_component_code
17079   , p_component_type_code          => l_component_type_code
17080   , p_component_appl_id            => l_component_appl_id
17081   , p_amb_context_code             => l_amb_context_code
17082   , p_side                         => 'NA'
17083   );
17084 
17085 
17086    --
17087    --
17088    END IF;
17089 
17090        --
17091        -- Update the line information that should be overwritten
17092        --
17093        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17094                                          p_header_num   => 1);
17095        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17096 
17097        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17098 
17099        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17100           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17101        END IF;
17102 
17103       --
17104       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17105       --
17106       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17107           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17108       ELSE
17109           ---------------------------------------------------------------------------------------------------
17110           -- 4262811a Switch Sign
17111           ---------------------------------------------------------------------------------------------------
17112           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17113           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17114                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17115           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17116                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17117           -- 5132302
17118           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17119                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17120 
17121       END IF;
17122 
17123       -- 4955764
17124       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17125       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17126 
17127 
17128       XLA_AE_LINES_PKG.ValidateCurrentLine;
17129       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17130 
17131       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17132                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17133                ,p_balance_type_code => l_balance_type_code);
17134 
17135    END IF;
17136 
17137    -----------------------------------------------------------------------------------------
17138    -- 4262811 Multiperiod Accounting
17139    -----------------------------------------------------------------------------------------
17140      -- No MPA option is assigned.
17141 
17142 
17143 END IF;
17144 END IF;
17145 --
17146 
17147 --
17148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17149    trace
17150       (p_msg      => 'END of AcctLineType_56'
17151       ,p_level    => C_LEVEL_PROCEDURE
17152       ,p_module   => l_log_module);
17153 END IF;
17154 --
17155 EXCEPTION
17156   WHEN xla_exceptions_pkg.application_exception THEN
17157       RAISE;
17158   WHEN OTHERS THEN
17159        xla_exceptions_pkg.raise_message
17160            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_56');
17161 END AcctLineType_56;
17162 --
17163 
17164 ---------------------------------------
17165 --
17166 -- PRIVATE FUNCTION
17167 --         AcctLineType_57
17168 --
17169 ---------------------------------------
17170 PROCEDURE AcctLineType_57 (
17171   p_application_id        IN NUMBER
17172  ,p_event_id              IN NUMBER
17173  ,p_calculate_acctd_flag  IN VARCHAR2
17174  ,p_calculate_g_l_flag    IN VARCHAR2
17175  ,p_actual_flag           IN OUT VARCHAR2
17176  ,p_balance_type_code     OUT VARCHAR2
17177  ,p_gain_or_loss_ref      OUT VARCHAR2
17178  
17179 --Cost Management Default Account
17180  , p_source_11            IN NUMBER
17181 --DISTRIBUTION_IDENTIFIER
17182  , p_source_84            IN NUMBER
17183 --Distribution Type
17184  , p_source_85            IN VARCHAR2
17185  , p_source_85_meaning    IN VARCHAR2
17186 --Entered Currency Code
17187  , p_source_88            IN VARCHAR2
17188 --Entered Amount
17189  , p_source_91            IN NUMBER
17190 --Currency Conversion Date
17191  , p_source_92            IN DATE
17192 --Currency Conversion Rate
17193  , p_source_93            IN NUMBER
17194 --Currency Conversion Type
17195  , p_source_94            IN VARCHAR2
17196 --Accounted Amount
17197  , p_source_95            IN NUMBER
17198 --Accounting Line Type
17199  , p_source_97            IN NUMBER
17200 )
17201 IS
17202 
17203 l_component_type              VARCHAR2(80);
17204 l_component_code              VARCHAR2(30);
17205 l_component_type_code         VARCHAR2(1);
17206 l_component_appl_id           INTEGER;
17207 l_amb_context_code            VARCHAR2(30);
17208 l_entity_code                 VARCHAR2(30);
17209 l_event_class_code            VARCHAR2(30);
17210 l_ae_header_id                NUMBER;
17211 l_event_type_code             VARCHAR2(30);
17212 l_line_definition_code        VARCHAR2(30);
17213 l_line_definition_owner_code  VARCHAR2(1);
17214 --
17215 -- adr variables
17216 l_segment                     VARCHAR2(30);
17217 l_ccid                        NUMBER;
17218 l_adr_transaction_coa_id      NUMBER;
17219 l_adr_accounting_coa_id       NUMBER;
17220 l_adr_flexfield_segment_code  VARCHAR2(30);
17221 l_adr_flex_value_set_id       NUMBER;
17222 l_adr_value_type_code         VARCHAR2(30);
17223 l_adr_value_combination_id    NUMBER;
17224 l_adr_value_segment_code      VARCHAR2(30);
17225 
17226 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17227 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17228 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17229 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17230 
17231 -- 4262811 Variables ------------------------------------------------------------------------------------------
17232 l_entered_amt_idx             NUMBER;
17233 l_accted_amt_idx              NUMBER;
17234 l_acc_rev_flag                VARCHAR2(1);
17235 l_accrual_line_num            NUMBER;
17236 l_tmp_amt                     NUMBER;
17237 l_acc_rev_natural_side_code   VARCHAR2(1);
17238 
17239 l_num_entries                 NUMBER;
17240 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17241 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17242 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17243 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17244 l_recog_line_1                NUMBER;
17245 l_recog_line_2                NUMBER;
17246 
17247 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17248 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17249 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17250 
17251 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17252 
17253 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17254 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17255 
17256 ---------------------------------------------------------------------------------------------------------------
17257 
17258 
17259 --
17260 -- bulk performance
17261 --
17262 l_balance_type_code           VARCHAR2(1);
17263 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17264 l_log_module                  VARCHAR2(240);
17265 
17266 --
17267 -- Upgrade strategy
17268 --
17269 l_actual_upg_option           VARCHAR2(1);
17270 l_enc_upg_option           VARCHAR2(1);
17271 
17272 --
17273 BEGIN
17274 --
17275 IF g_log_enabled THEN
17276       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
17277 END IF;
17278 --
17279 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17280 
17281       trace
17282          (p_msg      => 'BEGIN of AcctLineType_57'
17283          ,p_level    => C_LEVEL_PROCEDURE
17284          ,p_module   => l_log_module);
17285 
17286 END IF;
17287 --
17288 l_component_type             := 'AMB_JLT';
17289 l_component_code             := 'COST_OF_GOODS_SOLD';
17290 l_component_type_code        := 'S';
17291 l_component_appl_id          :=  707;
17292 l_amb_context_code           := 'DEFAULT';
17293 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
17294 l_event_class_code           := 'SALES_ORDER';
17295 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
17296 l_line_definition_owner_code := 'S';
17297 l_line_definition_code       := 'PI_COGS_RECOGNITION_ADJ';
17298 --
17299 l_balance_type_code          := 'A';
17300 l_segment                     := NULL;
17301 l_ccid                        := NULL;
17302 l_adr_transaction_coa_id      := NULL;
17303 l_adr_accounting_coa_id       := NULL;
17304 l_adr_flexfield_segment_code  := NULL;
17305 l_adr_flex_value_set_id       := NULL;
17306 l_adr_value_type_code         := NULL;
17307 l_adr_value_combination_id    := NULL;
17308 l_adr_value_segment_code      := NULL;
17309 
17310 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17311 l_bflow_class_code           := '';    -- 4219869 Business Flow
17312 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17313 l_budgetary_control_flag     := 'N';
17314 
17315 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17316 l_bflow_applied_to_amt       := NULL; -- 5132302
17317 l_entered_amt_idx            := NULL;          -- 4262811
17318 l_accted_amt_idx             := NULL;          -- 4262811
17319 l_acc_rev_flag               := NULL;          -- 4262811
17320 l_accrual_line_num           := NULL;          -- 4262811
17321 l_tmp_amt                    := NULL;          -- 4262811
17322 --
17323  
17324 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17325     l_balance_type_code <> 'B' THEN
17326 IF NVL(p_source_97,9E125) =  35
17327  THEN 
17328 
17329    --
17330    XLA_AE_LINES_PKG.SetNewLine;
17331 
17332    p_balance_type_code          := l_balance_type_code;
17333    -- set the flag so later we will know whether the gain loss line needs to be created
17334    
17335    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17336      p_actual_flag :='A';
17337    END IF;
17338 
17339    --
17340    -- bulk performance
17341    --
17342    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17343                                       p_header_num   => 0); -- 4262811
17344    --
17345    -- set accounting line options
17346    --
17347    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17348            p_natural_side_code          => 'D'
17349          , p_gain_or_loss_flag          => 'N'
17350          , p_gl_transfer_mode_code      => 'S'
17351          , p_acct_entry_type_code       => 'A'
17352          , p_switch_side_flag           => 'Y'
17353          , p_merge_duplicate_code       => 'N'
17354          );
17355    --
17356    l_acc_rev_natural_side_code := 'C';  -- 4262811
17357    -- 
17358    --
17359    -- set accounting line type info
17360    --
17361    xla_ae_lines_pkg.SetAcctLineType
17362       (p_component_type             => l_component_type
17363       ,p_event_type_code            => l_event_type_code
17364       ,p_line_definition_owner_code => l_line_definition_owner_code
17365       ,p_line_definition_code       => l_line_definition_code
17366       ,p_accounting_line_code       => l_component_code
17367       ,p_accounting_line_type_code  => l_component_type_code
17368       ,p_accounting_line_appl_id    => l_component_appl_id
17369       ,p_amb_context_code           => l_amb_context_code
17370       ,p_entity_code                => l_entity_code
17371       ,p_event_class_code           => l_event_class_code);
17372    --
17373    -- set accounting class
17374    --
17375    xla_ae_lines_pkg.SetAcctClass(
17376            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
17377          , p_ae_header_id           => l_ae_header_id
17378          );
17379 
17380    --
17381    -- set rounding class
17382    --
17383    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17384                       'COST_OF_GOODS_SOLD';
17385 
17386    --
17387    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17388    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17389    --
17390    -- bulk performance
17391    --
17392    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17393 
17394    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17395       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17396 
17397    -- 4955764
17398    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17399       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17400 
17401    -- 4458381 Public Sector Enh
17402    
17403    --
17404    -- set accounting attributes for the line type
17405    --
17406    l_entered_amt_idx := 3;
17407    l_accted_amt_idx  := 8;
17408    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17409    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17410    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
17411    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17412    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
17413    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17414    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
17415    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17416    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
17417    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17418    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
17419    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17420    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
17421    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17422    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
17423    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17424    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
17425 
17426    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17427    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17428 
17429    ---------------------------------------------------------------------------------------------------------------
17430    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17431    ---------------------------------------------------------------------------------------------------------------
17432    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17433 
17434    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17435    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17436 
17437    IF xla_accounting_cache_pkg.GetValueChar
17438          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17439          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17440    AND l_bflow_method_code = 'PRIOR_ENTRY'
17441 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17442    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17443          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17444        )
17445    THEN
17446          xla_ae_lines_pkg.BflowUpgEntry
17447            (p_business_method_code    => l_bflow_method_code
17448            ,p_business_class_code     => l_bflow_class_code
17449            ,p_balance_type            => l_balance_type_code);
17450    ELSE
17451       NULL;
17452 -- No business flow processing for business flow method of NONE.
17453    END IF;
17454 
17455    --
17456    -- call analytical criteria
17457    --
17458    
17459    --
17460    -- call description
17461    --
17462    -- No description or it is inherited.
17463    --
17464    -- call ADRs
17465    -- Bug 4922099
17466    --
17467    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17468         (NVL(l_actual_upg_option, 'N') = 'O') OR
17469         (NVL(l_enc_upg_option, 'N') = 'O')
17470       )
17471    THEN
17472    NULL;
17473    --
17474    --
17475    
17476   l_ccid := AcctDerRule_6(
17477            p_application_id           => p_application_id
17478          , p_ae_header_id             => l_ae_header_id 
17479 , p_source_11 => p_source_11
17480          , x_transaction_coa_id       => l_adr_transaction_coa_id
17481          , x_accounting_coa_id        => l_adr_accounting_coa_id
17482          , x_value_type_code          => l_adr_value_type_code
17483          , p_side                     => 'NA'
17484    );
17485 
17486    xla_ae_lines_pkg.set_ccid(
17487     p_code_combination_id          => l_ccid
17488   , p_value_type_code              => l_adr_value_type_code
17489   , p_transaction_coa_id           => l_adr_transaction_coa_id
17490   , p_accounting_coa_id            => l_adr_accounting_coa_id
17491   , p_adr_code                     => 'CST_DEFAULT'
17492   , p_adr_type_code                => 'S'
17493   , p_component_type               => l_component_type
17494   , p_component_code               => l_component_code
17495   , p_component_type_code          => l_component_type_code
17496   , p_component_appl_id            => l_component_appl_id
17497   , p_amb_context_code             => l_amb_context_code
17498   , p_side                         => 'NA'
17499   );
17500 
17501 
17502    --
17503    --
17504    END IF;
17505    --
17506    -- Bug 4922099
17507    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17508           (NVL(l_enc_upg_option, 'N') = 'O')
17509         ) AND
17510         (l_bflow_method_code = 'PRIOR_ENTRY')
17511       )
17512    THEN
17513       IF
17514       --
17515       1 = 2
17516       --
17517       THEN
17518       xla_accounting_err_pkg.build_message
17519                                     (p_appli_s_name            => 'XLA'
17520                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17521                                     ,p_token_1                 => 'LINE_NUMBER'
17522                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17523                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17524                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17525                                                                              l_component_type
17526                                                                             ,l_component_code
17527                                                                             ,l_component_type_code
17528                                                                             ,l_component_appl_id
17529                                                                             ,l_amb_context_code
17530                                                                             ,l_entity_code
17531                                                                             ,l_event_class_code
17532                                                                            )
17533                                     ,p_token_3                 => 'OWNER'
17534                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17535                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17536                                                                           ,p_lookup_code    => l_component_type_code
17537                                                                          )
17538                                     ,p_token_4                 => 'PRODUCT_NAME'
17539                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17540                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17541                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17542                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17543                                     ,p_ae_header_id            =>  NULL
17544                                        );
17545 
17546         IF (C_LEVEL_ERROR>= g_log_level) THEN
17547                  trace
17548                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17549                       ,p_level    => C_LEVEL_ERROR
17550                       ,p_module   => l_log_module);
17551         END IF;
17552       END IF;
17553    END IF;
17554    --
17555    --
17556    ------------------------------------------------------------------------------------------------
17557    -- 4219869 Business Flow
17558    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17559    -- Prior Entry.  Currently, the following code is always generated.
17560    ------------------------------------------------------------------------------------------------
17561    XLA_AE_LINES_PKG.ValidateCurrentLine;
17562 
17563    ------------------------------------------------------------------------------------
17564    -- 4219869 Business Flow
17565    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17566    ------------------------------------------------------------------------------------
17567    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17568 
17569    ----------------------------------------------------------------------------------
17570    -- 4219869 Business Flow
17571    -- Update journal entry status -- Need to generate this within IF <condition>
17572    ----------------------------------------------------------------------------------
17573    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17574          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17575          ,p_balance_type_code => l_balance_type_code
17576          );
17577 
17578    -------------------------------------------------------------------------------------------
17579    -- 4262811 - Generate the Accrual Reversal lines
17580    -------------------------------------------------------------------------------------------
17581    BEGIN
17582       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17583                               (g_array_event(p_event_id).array_value_num('header_index'));
17584       IF l_acc_rev_flag IS NULL THEN
17585          l_acc_rev_flag := 'N';
17586       END IF;
17587    EXCEPTION
17588       WHEN OTHERS THEN
17589          l_acc_rev_flag := 'N';
17590    END;
17591    --
17592    IF (l_acc_rev_flag = 'Y') THEN
17593 
17594        -- 4645092  ------------------------------------------------------------------------------
17595        -- To allow MPA report to determine if it should generate report process
17596        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17597        ------------------------------------------------------------------------------------------
17598 
17599        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17600        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17601    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17602    -- call ADRs
17603    -- Bug 4922099
17604    --
17605    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17606         (NVL(l_actual_upg_option, 'N') = 'O') OR
17607         (NVL(l_enc_upg_option, 'N') = 'O')
17608       )
17609    THEN
17610    NULL;
17611    --
17612    --
17613    
17614   l_ccid := AcctDerRule_6(
17615            p_application_id           => p_application_id
17616          , p_ae_header_id             => l_ae_header_id 
17617 , p_source_11 => p_source_11
17618          , x_transaction_coa_id       => l_adr_transaction_coa_id
17619          , x_accounting_coa_id        => l_adr_accounting_coa_id
17620          , x_value_type_code          => l_adr_value_type_code
17621          , p_side                     => 'NA'
17622    );
17623 
17624    xla_ae_lines_pkg.set_ccid(
17625     p_code_combination_id          => l_ccid
17626   , p_value_type_code              => l_adr_value_type_code
17627   , p_transaction_coa_id           => l_adr_transaction_coa_id
17628   , p_accounting_coa_id            => l_adr_accounting_coa_id
17629   , p_adr_code                     => 'CST_DEFAULT'
17630   , p_adr_type_code                => 'S'
17631   , p_component_type               => l_component_type
17632   , p_component_code               => l_component_code
17633   , p_component_type_code          => l_component_type_code
17634   , p_component_appl_id            => l_component_appl_id
17635   , p_amb_context_code             => l_amb_context_code
17636   , p_side                         => 'NA'
17637   );
17638 
17639 
17640    --
17641    --
17642    END IF;
17643 
17644        --
17645        -- Update the line information that should be overwritten
17646        --
17647        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17648                                          p_header_num   => 1);
17649        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17650 
17651        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17652 
17653        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17654           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17655        END IF;
17656 
17657       --
17658       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17659       --
17660       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17661           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17662       ELSE
17663           ---------------------------------------------------------------------------------------------------
17664           -- 4262811a Switch Sign
17665           ---------------------------------------------------------------------------------------------------
17666           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17667           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17668                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17669           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17670                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17671           -- 5132302
17672           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17673                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17674 
17675       END IF;
17676 
17677       -- 4955764
17678       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17679       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17680 
17681 
17682       XLA_AE_LINES_PKG.ValidateCurrentLine;
17683       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17684 
17685       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17686                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17687                ,p_balance_type_code => l_balance_type_code);
17688 
17689    END IF;
17690 
17691    -----------------------------------------------------------------------------------------
17692    -- 4262811 Multiperiod Accounting
17693    -----------------------------------------------------------------------------------------
17694      -- No MPA option is assigned.
17695 
17696 
17697 END IF;
17698 END IF;
17699 --
17700 
17701 --
17702 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17703    trace
17704       (p_msg      => 'END of AcctLineType_57'
17705       ,p_level    => C_LEVEL_PROCEDURE
17706       ,p_module   => l_log_module);
17707 END IF;
17708 --
17709 EXCEPTION
17710   WHEN xla_exceptions_pkg.application_exception THEN
17711       RAISE;
17712   WHEN OTHERS THEN
17713        xla_exceptions_pkg.raise_message
17714            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_57');
17715 END AcctLineType_57;
17716 --
17717 
17718 ---------------------------------------
17719 --
17720 -- PRIVATE FUNCTION
17721 --         AcctLineType_58
17722 --
17723 ---------------------------------------
17724 PROCEDURE AcctLineType_58 (
17725   p_application_id        IN NUMBER
17726  ,p_event_id              IN NUMBER
17727  ,p_calculate_acctd_flag  IN VARCHAR2
17728  ,p_calculate_g_l_flag    IN VARCHAR2
17729  ,p_actual_flag           IN OUT VARCHAR2
17730  ,p_balance_type_code     OUT VARCHAR2
17731  ,p_gain_or_loss_ref      OUT VARCHAR2
17732  
17733 --TRANSACTION_ID
17734  , p_source_1            IN NUMBER
17735 --Item Concatenated Segments
17736  , p_source_2            IN VARCHAR2
17737 --Transaction Quantity
17738  , p_source_3            IN NUMBER
17739 --Transaction Unit of Measure Code
17740  , p_source_4            IN VARCHAR2
17741 --Inventory Transaction Type Description
17742  , p_source_5            IN VARCHAR2
17743 --Cost Management Default Account
17744  , p_source_11            IN NUMBER
17745 --DISTRIBUTION_IDENTIFIER
17746  , p_source_84            IN NUMBER
17747 --Distribution Type
17748  , p_source_85            IN VARCHAR2
17749  , p_source_85_meaning    IN VARCHAR2
17750 --Entered Currency Code
17751  , p_source_88            IN VARCHAR2
17752 --Entered Amount
17753  , p_source_91            IN NUMBER
17754 --Currency Conversion Date
17755  , p_source_92            IN DATE
17756 --Currency Conversion Rate
17757  , p_source_93            IN NUMBER
17758 --Currency Conversion Type
17759  , p_source_94            IN VARCHAR2
17760 --Accounted Amount
17761  , p_source_95            IN NUMBER
17762 --Accounting Line Type
17763  , p_source_97            IN NUMBER
17764 )
17765 IS
17766 
17767 l_component_type              VARCHAR2(80);
17768 l_component_code              VARCHAR2(30);
17769 l_component_type_code         VARCHAR2(1);
17770 l_component_appl_id           INTEGER;
17771 l_amb_context_code            VARCHAR2(30);
17772 l_entity_code                 VARCHAR2(30);
17773 l_event_class_code            VARCHAR2(30);
17774 l_ae_header_id                NUMBER;
17775 l_event_type_code             VARCHAR2(30);
17776 l_line_definition_code        VARCHAR2(30);
17777 l_line_definition_owner_code  VARCHAR2(1);
17778 --
17779 -- adr variables
17780 l_segment                     VARCHAR2(30);
17781 l_ccid                        NUMBER;
17782 l_adr_transaction_coa_id      NUMBER;
17783 l_adr_accounting_coa_id       NUMBER;
17784 l_adr_flexfield_segment_code  VARCHAR2(30);
17785 l_adr_flex_value_set_id       NUMBER;
17786 l_adr_value_type_code         VARCHAR2(30);
17787 l_adr_value_combination_id    NUMBER;
17788 l_adr_value_segment_code      VARCHAR2(30);
17789 
17790 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17791 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17792 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17793 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17794 
17795 -- 4262811 Variables ------------------------------------------------------------------------------------------
17796 l_entered_amt_idx             NUMBER;
17797 l_accted_amt_idx              NUMBER;
17798 l_acc_rev_flag                VARCHAR2(1);
17799 l_accrual_line_num            NUMBER;
17800 l_tmp_amt                     NUMBER;
17801 l_acc_rev_natural_side_code   VARCHAR2(1);
17802 
17803 l_num_entries                 NUMBER;
17804 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17805 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17806 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17807 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17808 l_recog_line_1                NUMBER;
17809 l_recog_line_2                NUMBER;
17810 
17811 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17812 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17813 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17814 
17815 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17816 
17817 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17818 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17819 
17820 ---------------------------------------------------------------------------------------------------------------
17821 
17822 
17823 --
17824 -- bulk performance
17825 --
17826 l_balance_type_code           VARCHAR2(1);
17827 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17828 l_log_module                  VARCHAR2(240);
17829 
17830 --
17831 -- Upgrade strategy
17832 --
17833 l_actual_upg_option           VARCHAR2(1);
17834 l_enc_upg_option           VARCHAR2(1);
17835 
17836 --
17837 BEGIN
17838 --
17839 IF g_log_enabled THEN
17840       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
17841 END IF;
17842 --
17843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17844 
17845       trace
17846          (p_msg      => 'BEGIN of AcctLineType_58'
17847          ,p_level    => C_LEVEL_PROCEDURE
17848          ,p_module   => l_log_module);
17849 
17850 END IF;
17851 --
17852 l_component_type             := 'AMB_JLT';
17853 l_component_code             := 'COST_OF_GOODS_SOLD';
17854 l_component_type_code        := 'S';
17855 l_component_appl_id          :=  707;
17856 l_amb_context_code           := 'DEFAULT';
17857 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
17858 l_event_class_code           := 'SALES_ORDER';
17859 l_event_type_code            := 'RMA_RETURN';
17860 l_line_definition_owner_code := 'S';
17861 l_line_definition_code       := 'PI_RMA_RETURN';
17862 --
17863 l_balance_type_code          := 'A';
17864 l_segment                     := NULL;
17865 l_ccid                        := NULL;
17866 l_adr_transaction_coa_id      := NULL;
17867 l_adr_accounting_coa_id       := NULL;
17868 l_adr_flexfield_segment_code  := NULL;
17869 l_adr_flex_value_set_id       := NULL;
17870 l_adr_value_type_code         := NULL;
17871 l_adr_value_combination_id    := NULL;
17872 l_adr_value_segment_code      := NULL;
17873 
17874 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17875 l_bflow_class_code           := '';    -- 4219869 Business Flow
17876 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17877 l_budgetary_control_flag     := 'N';
17878 
17879 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17880 l_bflow_applied_to_amt       := NULL; -- 5132302
17881 l_entered_amt_idx            := NULL;          -- 4262811
17882 l_accted_amt_idx             := NULL;          -- 4262811
17883 l_acc_rev_flag               := NULL;          -- 4262811
17884 l_accrual_line_num           := NULL;          -- 4262811
17885 l_tmp_amt                    := NULL;          -- 4262811
17886 --
17887  
17888 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17889     l_balance_type_code <> 'B' THEN
17890 IF NVL(p_source_97,9E125) =  35
17891  THEN 
17892 
17893    --
17894    XLA_AE_LINES_PKG.SetNewLine;
17895 
17896    p_balance_type_code          := l_balance_type_code;
17897    -- set the flag so later we will know whether the gain loss line needs to be created
17898    
17899    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17900      p_actual_flag :='A';
17901    END IF;
17902 
17903    --
17904    -- bulk performance
17905    --
17906    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17907                                       p_header_num   => 0); -- 4262811
17908    --
17909    -- set accounting line options
17910    --
17911    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17912            p_natural_side_code          => 'D'
17913          , p_gain_or_loss_flag          => 'N'
17914          , p_gl_transfer_mode_code      => 'S'
17915          , p_acct_entry_type_code       => 'A'
17916          , p_switch_side_flag           => 'Y'
17917          , p_merge_duplicate_code       => 'N'
17918          );
17919    --
17920    l_acc_rev_natural_side_code := 'C';  -- 4262811
17921    -- 
17922    --
17923    -- set accounting line type info
17924    --
17925    xla_ae_lines_pkg.SetAcctLineType
17926       (p_component_type             => l_component_type
17927       ,p_event_type_code            => l_event_type_code
17928       ,p_line_definition_owner_code => l_line_definition_owner_code
17929       ,p_line_definition_code       => l_line_definition_code
17930       ,p_accounting_line_code       => l_component_code
17931       ,p_accounting_line_type_code  => l_component_type_code
17932       ,p_accounting_line_appl_id    => l_component_appl_id
17933       ,p_amb_context_code           => l_amb_context_code
17934       ,p_entity_code                => l_entity_code
17935       ,p_event_class_code           => l_event_class_code);
17936    --
17937    -- set accounting class
17938    --
17939    xla_ae_lines_pkg.SetAcctClass(
17940            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
17941          , p_ae_header_id           => l_ae_header_id
17942          );
17943 
17944    --
17945    -- set rounding class
17946    --
17947    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17948                       'COST_OF_GOODS_SOLD';
17949 
17950    --
17951    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17952    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17953    --
17954    -- bulk performance
17955    --
17956    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17957 
17958    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17959       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17960 
17961    -- 4955764
17962    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17963       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17964 
17965    -- 4458381 Public Sector Enh
17966    
17967    --
17968    -- set accounting attributes for the line type
17969    --
17970    l_entered_amt_idx := 3;
17971    l_accted_amt_idx  := 8;
17972    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17973    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17974    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
17975    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17976    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
17977    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17978    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
17979    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17980    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
17981    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17982    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
17983    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17984    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
17985    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17986    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
17987    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17988    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
17989 
17990    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17991    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17992 
17993    ---------------------------------------------------------------------------------------------------------------
17994    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17995    ---------------------------------------------------------------------------------------------------------------
17996    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17997 
17998    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17999    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18000 
18001    IF xla_accounting_cache_pkg.GetValueChar
18002          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18003          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18004    AND l_bflow_method_code = 'PRIOR_ENTRY'
18005 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18006    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18007          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18008        )
18009    THEN
18010          xla_ae_lines_pkg.BflowUpgEntry
18011            (p_business_method_code    => l_bflow_method_code
18012            ,p_business_class_code     => l_bflow_class_code
18013            ,p_balance_type            => l_balance_type_code);
18014    ELSE
18015       NULL;
18016 -- No business flow processing for business flow method of NONE.
18017    END IF;
18018 
18019    --
18020    -- call analytical criteria
18021    --
18022    
18023    --
18024    -- call description
18025    --
18026    
18027 xla_ae_lines_pkg.SetLineDescription(
18028    p_ae_header_id => l_ae_header_id
18029   ,p_description  => Description_1 (
18030      p_application_id         => p_application_id
18031    , p_ae_header_id           => l_ae_header_id 
18032 , p_source_1 => p_source_1
18033 , p_source_2 => p_source_2
18034 , p_source_3 => p_source_3
18035 , p_source_4 => p_source_4
18036 , p_source_5 => p_source_5
18037    )
18038 );
18039 
18040 
18041    --
18042    -- call ADRs
18043    -- Bug 4922099
18044    --
18045    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18046         (NVL(l_actual_upg_option, 'N') = 'O') OR
18047         (NVL(l_enc_upg_option, 'N') = 'O')
18048       )
18049    THEN
18050    NULL;
18051    --
18052    --
18053    
18054   l_ccid := AcctDerRule_6(
18055            p_application_id           => p_application_id
18056          , p_ae_header_id             => l_ae_header_id 
18057 , p_source_11 => p_source_11
18058          , x_transaction_coa_id       => l_adr_transaction_coa_id
18059          , x_accounting_coa_id        => l_adr_accounting_coa_id
18060          , x_value_type_code          => l_adr_value_type_code
18061          , p_side                     => 'NA'
18062    );
18063 
18064    xla_ae_lines_pkg.set_ccid(
18065     p_code_combination_id          => l_ccid
18066   , p_value_type_code              => l_adr_value_type_code
18067   , p_transaction_coa_id           => l_adr_transaction_coa_id
18068   , p_accounting_coa_id            => l_adr_accounting_coa_id
18069   , p_adr_code                     => 'CST_DEFAULT'
18070   , p_adr_type_code                => 'S'
18071   , p_component_type               => l_component_type
18072   , p_component_code               => l_component_code
18073   , p_component_type_code          => l_component_type_code
18074   , p_component_appl_id            => l_component_appl_id
18075   , p_amb_context_code             => l_amb_context_code
18076   , p_side                         => 'NA'
18077   );
18078 
18079 
18080    --
18081    --
18082    END IF;
18083    --
18084    -- Bug 4922099
18085    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18086           (NVL(l_enc_upg_option, 'N') = 'O')
18087         ) AND
18088         (l_bflow_method_code = 'PRIOR_ENTRY')
18089       )
18090    THEN
18091       IF
18092       --
18093       1 = 2
18094       --
18095       THEN
18096       xla_accounting_err_pkg.build_message
18097                                     (p_appli_s_name            => 'XLA'
18098                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18099                                     ,p_token_1                 => 'LINE_NUMBER'
18100                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18101                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18102                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18103                                                                              l_component_type
18104                                                                             ,l_component_code
18105                                                                             ,l_component_type_code
18106                                                                             ,l_component_appl_id
18107                                                                             ,l_amb_context_code
18108                                                                             ,l_entity_code
18109                                                                             ,l_event_class_code
18110                                                                            )
18111                                     ,p_token_3                 => 'OWNER'
18112                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18113                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18114                                                                           ,p_lookup_code    => l_component_type_code
18115                                                                          )
18116                                     ,p_token_4                 => 'PRODUCT_NAME'
18117                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18118                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18119                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18120                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18121                                     ,p_ae_header_id            =>  NULL
18122                                        );
18123 
18124         IF (C_LEVEL_ERROR>= g_log_level) THEN
18125                  trace
18126                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18127                       ,p_level    => C_LEVEL_ERROR
18128                       ,p_module   => l_log_module);
18129         END IF;
18130       END IF;
18131    END IF;
18132    --
18133    --
18134    ------------------------------------------------------------------------------------------------
18135    -- 4219869 Business Flow
18136    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18137    -- Prior Entry.  Currently, the following code is always generated.
18138    ------------------------------------------------------------------------------------------------
18139    XLA_AE_LINES_PKG.ValidateCurrentLine;
18140 
18141    ------------------------------------------------------------------------------------
18142    -- 4219869 Business Flow
18143    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18144    ------------------------------------------------------------------------------------
18145    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18146 
18147    ----------------------------------------------------------------------------------
18148    -- 4219869 Business Flow
18149    -- Update journal entry status -- Need to generate this within IF <condition>
18150    ----------------------------------------------------------------------------------
18151    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18152          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18153          ,p_balance_type_code => l_balance_type_code
18154          );
18155 
18156    -------------------------------------------------------------------------------------------
18157    -- 4262811 - Generate the Accrual Reversal lines
18158    -------------------------------------------------------------------------------------------
18159    BEGIN
18160       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18161                               (g_array_event(p_event_id).array_value_num('header_index'));
18162       IF l_acc_rev_flag IS NULL THEN
18163          l_acc_rev_flag := 'N';
18164       END IF;
18165    EXCEPTION
18166       WHEN OTHERS THEN
18167          l_acc_rev_flag := 'N';
18168    END;
18169    --
18170    IF (l_acc_rev_flag = 'Y') THEN
18171 
18172        -- 4645092  ------------------------------------------------------------------------------
18173        -- To allow MPA report to determine if it should generate report process
18174        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18175        ------------------------------------------------------------------------------------------
18176 
18177        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18178        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18179    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18180    -- call ADRs
18181    -- Bug 4922099
18182    --
18183    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18184         (NVL(l_actual_upg_option, 'N') = 'O') OR
18185         (NVL(l_enc_upg_option, 'N') = 'O')
18186       )
18187    THEN
18188    NULL;
18189    --
18190    --
18191    
18192   l_ccid := AcctDerRule_6(
18193            p_application_id           => p_application_id
18194          , p_ae_header_id             => l_ae_header_id 
18195 , p_source_11 => p_source_11
18196          , x_transaction_coa_id       => l_adr_transaction_coa_id
18197          , x_accounting_coa_id        => l_adr_accounting_coa_id
18198          , x_value_type_code          => l_adr_value_type_code
18199          , p_side                     => 'NA'
18200    );
18201 
18202    xla_ae_lines_pkg.set_ccid(
18203     p_code_combination_id          => l_ccid
18204   , p_value_type_code              => l_adr_value_type_code
18205   , p_transaction_coa_id           => l_adr_transaction_coa_id
18206   , p_accounting_coa_id            => l_adr_accounting_coa_id
18207   , p_adr_code                     => 'CST_DEFAULT'
18208   , p_adr_type_code                => 'S'
18209   , p_component_type               => l_component_type
18210   , p_component_code               => l_component_code
18211   , p_component_type_code          => l_component_type_code
18212   , p_component_appl_id            => l_component_appl_id
18213   , p_amb_context_code             => l_amb_context_code
18214   , p_side                         => 'NA'
18215   );
18216 
18217 
18218    --
18219    --
18220    END IF;
18221 
18222        --
18223        -- Update the line information that should be overwritten
18224        --
18225        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18226                                          p_header_num   => 1);
18227        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18228 
18229        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18230 
18231        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18232           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18233        END IF;
18234 
18235       --
18236       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18237       --
18238       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18239           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18240       ELSE
18241           ---------------------------------------------------------------------------------------------------
18242           -- 4262811a Switch Sign
18243           ---------------------------------------------------------------------------------------------------
18244           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18245           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18246                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18247           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18248                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18249           -- 5132302
18250           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18251                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18252 
18253       END IF;
18254 
18255       -- 4955764
18256       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18257       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18258 
18259 
18260       XLA_AE_LINES_PKG.ValidateCurrentLine;
18261       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18262 
18263       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18264                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18265                ,p_balance_type_code => l_balance_type_code);
18266 
18267    END IF;
18268 
18269    -----------------------------------------------------------------------------------------
18270    -- 4262811 Multiperiod Accounting
18271    -----------------------------------------------------------------------------------------
18272      -- No MPA option is assigned.
18273 
18274 
18275 END IF;
18276 END IF;
18277 --
18278 
18279 --
18280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18281    trace
18282       (p_msg      => 'END of AcctLineType_58'
18283       ,p_level    => C_LEVEL_PROCEDURE
18284       ,p_module   => l_log_module);
18285 END IF;
18286 --
18287 EXCEPTION
18288   WHEN xla_exceptions_pkg.application_exception THEN
18289       RAISE;
18290   WHEN OTHERS THEN
18291        xla_exceptions_pkg.raise_message
18292            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_58');
18293 END AcctLineType_58;
18294 --
18295 
18296 ---------------------------------------
18297 --
18298 -- PRIVATE FUNCTION
18299 --         AcctLineType_59
18300 --
18301 ---------------------------------------
18302 PROCEDURE AcctLineType_59 (
18303   p_application_id        IN NUMBER
18304  ,p_event_id              IN NUMBER
18305  ,p_calculate_acctd_flag  IN VARCHAR2
18306  ,p_calculate_g_l_flag    IN VARCHAR2
18307  ,p_actual_flag           IN OUT VARCHAR2
18308  ,p_balance_type_code     OUT VARCHAR2
18309  ,p_gain_or_loss_ref      OUT VARCHAR2
18310  
18311 --TRANSACTION_ID
18312  , p_source_1            IN NUMBER
18313 --Item Concatenated Segments
18314  , p_source_2            IN VARCHAR2
18315 --Transaction Quantity
18316  , p_source_3            IN NUMBER
18317 --Transaction Unit of Measure Code
18318  , p_source_4            IN VARCHAR2
18319 --Inventory Transaction Type Description
18320  , p_source_5            IN VARCHAR2
18321 --Cost Management Default Account
18322  , p_source_11            IN NUMBER
18323 --DISTRIBUTION_IDENTIFIER
18324  , p_source_84            IN NUMBER
18325 --Distribution Type
18326  , p_source_85            IN VARCHAR2
18327  , p_source_85_meaning    IN VARCHAR2
18328 --Entered Currency Code
18329  , p_source_88            IN VARCHAR2
18330 --Entered Amount
18331  , p_source_91            IN NUMBER
18332 --Currency Conversion Date
18333  , p_source_92            IN DATE
18334 --Currency Conversion Rate
18335  , p_source_93            IN NUMBER
18336 --Currency Conversion Type
18337  , p_source_94            IN VARCHAR2
18338 --Accounted Amount
18339  , p_source_95            IN NUMBER
18340 --Accounting Line Type
18341  , p_source_97            IN NUMBER
18342 )
18343 IS
18344 
18345 l_component_type              VARCHAR2(80);
18346 l_component_code              VARCHAR2(30);
18347 l_component_type_code         VARCHAR2(1);
18348 l_component_appl_id           INTEGER;
18349 l_amb_context_code            VARCHAR2(30);
18350 l_entity_code                 VARCHAR2(30);
18351 l_event_class_code            VARCHAR2(30);
18352 l_ae_header_id                NUMBER;
18353 l_event_type_code             VARCHAR2(30);
18354 l_line_definition_code        VARCHAR2(30);
18355 l_line_definition_owner_code  VARCHAR2(1);
18356 --
18357 -- adr variables
18358 l_segment                     VARCHAR2(30);
18359 l_ccid                        NUMBER;
18360 l_adr_transaction_coa_id      NUMBER;
18361 l_adr_accounting_coa_id       NUMBER;
18362 l_adr_flexfield_segment_code  VARCHAR2(30);
18363 l_adr_flex_value_set_id       NUMBER;
18364 l_adr_value_type_code         VARCHAR2(30);
18365 l_adr_value_combination_id    NUMBER;
18366 l_adr_value_segment_code      VARCHAR2(30);
18367 
18368 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18369 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18370 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18371 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18372 
18373 -- 4262811 Variables ------------------------------------------------------------------------------------------
18374 l_entered_amt_idx             NUMBER;
18375 l_accted_amt_idx              NUMBER;
18376 l_acc_rev_flag                VARCHAR2(1);
18377 l_accrual_line_num            NUMBER;
18378 l_tmp_amt                     NUMBER;
18379 l_acc_rev_natural_side_code   VARCHAR2(1);
18380 
18381 l_num_entries                 NUMBER;
18382 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18383 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18384 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18385 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18386 l_recog_line_1                NUMBER;
18387 l_recog_line_2                NUMBER;
18388 
18389 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18390 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18391 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18392 
18393 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18394 
18395 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18396 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18397 
18398 ---------------------------------------------------------------------------------------------------------------
18399 
18400 
18401 --
18402 -- bulk performance
18403 --
18404 l_balance_type_code           VARCHAR2(1);
18405 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18406 l_log_module                  VARCHAR2(240);
18407 
18408 --
18409 -- Upgrade strategy
18410 --
18411 l_actual_upg_option           VARCHAR2(1);
18412 l_enc_upg_option           VARCHAR2(1);
18413 
18414 --
18415 BEGIN
18416 --
18417 IF g_log_enabled THEN
18418       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
18419 END IF;
18420 --
18421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18422 
18423       trace
18424          (p_msg      => 'BEGIN of AcctLineType_59'
18425          ,p_level    => C_LEVEL_PROCEDURE
18426          ,p_module   => l_log_module);
18427 
18428 END IF;
18429 --
18430 l_component_type             := 'AMB_JLT';
18431 l_component_code             := 'COST_OF_GOODS_SOLD';
18432 l_component_type_code        := 'S';
18433 l_component_appl_id          :=  707;
18434 l_amb_context_code           := 'DEFAULT';
18435 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
18436 l_event_class_code           := 'USER_DEFINE';
18437 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
18438 l_line_definition_owner_code := 'S';
18439 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
18440 --
18441 l_balance_type_code          := 'A';
18442 l_segment                     := NULL;
18443 l_ccid                        := NULL;
18444 l_adr_transaction_coa_id      := NULL;
18445 l_adr_accounting_coa_id       := NULL;
18446 l_adr_flexfield_segment_code  := NULL;
18447 l_adr_flex_value_set_id       := NULL;
18448 l_adr_value_type_code         := NULL;
18449 l_adr_value_combination_id    := NULL;
18450 l_adr_value_segment_code      := NULL;
18451 
18452 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18453 l_bflow_class_code           := '';    -- 4219869 Business Flow
18454 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18455 l_budgetary_control_flag     := 'N';
18456 
18457 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18458 l_bflow_applied_to_amt       := NULL; -- 5132302
18459 l_entered_amt_idx            := NULL;          -- 4262811
18460 l_accted_amt_idx             := NULL;          -- 4262811
18461 l_acc_rev_flag               := NULL;          -- 4262811
18462 l_accrual_line_num           := NULL;          -- 4262811
18463 l_tmp_amt                    := NULL;          -- 4262811
18464 --
18465  
18466 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18467     l_balance_type_code <> 'B' THEN
18468 IF NVL(p_source_97,9E125) =  2 AND 
18469 p_source_95 >  0
18470  THEN 
18471 
18472    --
18473    XLA_AE_LINES_PKG.SetNewLine;
18474 
18475    p_balance_type_code          := l_balance_type_code;
18476    -- set the flag so later we will know whether the gain loss line needs to be created
18477    
18478    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18479      p_actual_flag :='A';
18480    END IF;
18481 
18482    --
18483    -- bulk performance
18484    --
18485    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18486                                       p_header_num   => 0); -- 4262811
18487    --
18488    -- set accounting line options
18489    --
18490    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18491            p_natural_side_code          => 'D'
18492          , p_gain_or_loss_flag          => 'N'
18493          , p_gl_transfer_mode_code      => 'S'
18494          , p_acct_entry_type_code       => 'A'
18495          , p_switch_side_flag           => 'Y'
18496          , p_merge_duplicate_code       => 'N'
18497          );
18498    --
18499    l_acc_rev_natural_side_code := 'C';  -- 4262811
18500    -- 
18501    --
18502    -- set accounting line type info
18503    --
18504    xla_ae_lines_pkg.SetAcctLineType
18505       (p_component_type             => l_component_type
18506       ,p_event_type_code            => l_event_type_code
18507       ,p_line_definition_owner_code => l_line_definition_owner_code
18508       ,p_line_definition_code       => l_line_definition_code
18509       ,p_accounting_line_code       => l_component_code
18510       ,p_accounting_line_type_code  => l_component_type_code
18511       ,p_accounting_line_appl_id    => l_component_appl_id
18512       ,p_amb_context_code           => l_amb_context_code
18513       ,p_entity_code                => l_entity_code
18514       ,p_event_class_code           => l_event_class_code);
18515    --
18516    -- set accounting class
18517    --
18518    xla_ae_lines_pkg.SetAcctClass(
18519            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
18520          , p_ae_header_id           => l_ae_header_id
18521          );
18522 
18523    --
18524    -- set rounding class
18525    --
18526    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18527                       'COST_OF_GOODS_SOLD';
18528 
18529    --
18530    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18531    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18532    --
18533    -- bulk performance
18534    --
18535    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18536 
18537    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18538       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18539 
18540    -- 4955764
18541    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18543 
18544    -- 4458381 Public Sector Enh
18545    
18546    --
18547    -- set accounting attributes for the line type
18548    --
18549    l_entered_amt_idx := 3;
18550    l_accted_amt_idx  := 8;
18551    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18552    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18553    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
18554    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18555    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
18556    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18557    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
18558    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18559    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
18560    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18561    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
18562    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18563    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
18564    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18565    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
18566    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
18567    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
18568 
18569    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18570    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18571 
18572    ---------------------------------------------------------------------------------------------------------------
18573    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18574    ---------------------------------------------------------------------------------------------------------------
18575    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18576 
18577    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18578    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18579 
18580    IF xla_accounting_cache_pkg.GetValueChar
18581          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18582          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18583    AND l_bflow_method_code = 'PRIOR_ENTRY'
18584 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18585    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18586          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18587        )
18588    THEN
18589          xla_ae_lines_pkg.BflowUpgEntry
18590            (p_business_method_code    => l_bflow_method_code
18591            ,p_business_class_code     => l_bflow_class_code
18592            ,p_balance_type            => l_balance_type_code);
18593    ELSE
18594       NULL;
18595 -- No business flow processing for business flow method of NONE.
18596    END IF;
18597 
18598    --
18599    -- call analytical criteria
18600    --
18601    
18602    --
18603    -- call description
18604    --
18605    
18606 xla_ae_lines_pkg.SetLineDescription(
18607    p_ae_header_id => l_ae_header_id
18608   ,p_description  => Description_1 (
18609      p_application_id         => p_application_id
18610    , p_ae_header_id           => l_ae_header_id 
18611 , p_source_1 => p_source_1
18612 , p_source_2 => p_source_2
18613 , p_source_3 => p_source_3
18614 , p_source_4 => p_source_4
18615 , p_source_5 => p_source_5
18616    )
18617 );
18618 
18619 
18620    --
18621    -- call ADRs
18622    -- Bug 4922099
18623    --
18624    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18625         (NVL(l_actual_upg_option, 'N') = 'O') OR
18626         (NVL(l_enc_upg_option, 'N') = 'O')
18627       )
18628    THEN
18629    NULL;
18630    --
18631    --
18632    
18633   l_ccid := AcctDerRule_6(
18634            p_application_id           => p_application_id
18635          , p_ae_header_id             => l_ae_header_id 
18636 , p_source_11 => p_source_11
18637          , x_transaction_coa_id       => l_adr_transaction_coa_id
18638          , x_accounting_coa_id        => l_adr_accounting_coa_id
18639          , x_value_type_code          => l_adr_value_type_code
18640          , p_side                     => 'NA'
18641    );
18642 
18643    xla_ae_lines_pkg.set_ccid(
18644     p_code_combination_id          => l_ccid
18645   , p_value_type_code              => l_adr_value_type_code
18646   , p_transaction_coa_id           => l_adr_transaction_coa_id
18647   , p_accounting_coa_id            => l_adr_accounting_coa_id
18648   , p_adr_code                     => 'CST_DEFAULT'
18649   , p_adr_type_code                => 'S'
18650   , p_component_type               => l_component_type
18651   , p_component_code               => l_component_code
18652   , p_component_type_code          => l_component_type_code
18653   , p_component_appl_id            => l_component_appl_id
18654   , p_amb_context_code             => l_amb_context_code
18655   , p_side                         => 'NA'
18656   );
18657 
18658 
18659    --
18660    --
18661    END IF;
18662    --
18663    -- Bug 4922099
18664    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18665           (NVL(l_enc_upg_option, 'N') = 'O')
18666         ) AND
18667         (l_bflow_method_code = 'PRIOR_ENTRY')
18668       )
18669    THEN
18670       IF
18671       --
18672       1 = 2
18673       --
18674       THEN
18675       xla_accounting_err_pkg.build_message
18676                                     (p_appli_s_name            => 'XLA'
18677                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18678                                     ,p_token_1                 => 'LINE_NUMBER'
18679                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18680                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18681                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18682                                                                              l_component_type
18683                                                                             ,l_component_code
18684                                                                             ,l_component_type_code
18685                                                                             ,l_component_appl_id
18686                                                                             ,l_amb_context_code
18687                                                                             ,l_entity_code
18688                                                                             ,l_event_class_code
18689                                                                            )
18690                                     ,p_token_3                 => 'OWNER'
18691                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18692                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18693                                                                           ,p_lookup_code    => l_component_type_code
18694                                                                          )
18695                                     ,p_token_4                 => 'PRODUCT_NAME'
18696                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18697                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18698                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18699                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18700                                     ,p_ae_header_id            =>  NULL
18701                                        );
18702 
18703         IF (C_LEVEL_ERROR>= g_log_level) THEN
18704                  trace
18705                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18706                       ,p_level    => C_LEVEL_ERROR
18707                       ,p_module   => l_log_module);
18708         END IF;
18709       END IF;
18710    END IF;
18711    --
18712    --
18713    ------------------------------------------------------------------------------------------------
18714    -- 4219869 Business Flow
18715    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18716    -- Prior Entry.  Currently, the following code is always generated.
18717    ------------------------------------------------------------------------------------------------
18718    XLA_AE_LINES_PKG.ValidateCurrentLine;
18719 
18720    ------------------------------------------------------------------------------------
18721    -- 4219869 Business Flow
18722    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18723    ------------------------------------------------------------------------------------
18724    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18725 
18726    ----------------------------------------------------------------------------------
18727    -- 4219869 Business Flow
18728    -- Update journal entry status -- Need to generate this within IF <condition>
18729    ----------------------------------------------------------------------------------
18730    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18731          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18732          ,p_balance_type_code => l_balance_type_code
18733          );
18734 
18735    -------------------------------------------------------------------------------------------
18736    -- 4262811 - Generate the Accrual Reversal lines
18737    -------------------------------------------------------------------------------------------
18738    BEGIN
18739       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18740                               (g_array_event(p_event_id).array_value_num('header_index'));
18741       IF l_acc_rev_flag IS NULL THEN
18742          l_acc_rev_flag := 'N';
18743       END IF;
18744    EXCEPTION
18745       WHEN OTHERS THEN
18746          l_acc_rev_flag := 'N';
18747    END;
18748    --
18749    IF (l_acc_rev_flag = 'Y') THEN
18750 
18751        -- 4645092  ------------------------------------------------------------------------------
18752        -- To allow MPA report to determine if it should generate report process
18753        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18754        ------------------------------------------------------------------------------------------
18755 
18756        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18757        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18758    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18759    -- call ADRs
18760    -- Bug 4922099
18761    --
18762    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18763         (NVL(l_actual_upg_option, 'N') = 'O') OR
18764         (NVL(l_enc_upg_option, 'N') = 'O')
18765       )
18766    THEN
18767    NULL;
18768    --
18769    --
18770    
18771   l_ccid := AcctDerRule_6(
18772            p_application_id           => p_application_id
18773          , p_ae_header_id             => l_ae_header_id 
18774 , p_source_11 => p_source_11
18775          , x_transaction_coa_id       => l_adr_transaction_coa_id
18776          , x_accounting_coa_id        => l_adr_accounting_coa_id
18777          , x_value_type_code          => l_adr_value_type_code
18778          , p_side                     => 'NA'
18779    );
18780 
18781    xla_ae_lines_pkg.set_ccid(
18782     p_code_combination_id          => l_ccid
18783   , p_value_type_code              => l_adr_value_type_code
18784   , p_transaction_coa_id           => l_adr_transaction_coa_id
18785   , p_accounting_coa_id            => l_adr_accounting_coa_id
18786   , p_adr_code                     => 'CST_DEFAULT'
18787   , p_adr_type_code                => 'S'
18788   , p_component_type               => l_component_type
18789   , p_component_code               => l_component_code
18790   , p_component_type_code          => l_component_type_code
18791   , p_component_appl_id            => l_component_appl_id
18792   , p_amb_context_code             => l_amb_context_code
18793   , p_side                         => 'NA'
18794   );
18795 
18796 
18797    --
18798    --
18799    END IF;
18800 
18801        --
18802        -- Update the line information that should be overwritten
18803        --
18804        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18805                                          p_header_num   => 1);
18806        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18807 
18808        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18809 
18810        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18811           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18812        END IF;
18813 
18814       --
18815       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18816       --
18817       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18818           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18819       ELSE
18820           ---------------------------------------------------------------------------------------------------
18821           -- 4262811a Switch Sign
18822           ---------------------------------------------------------------------------------------------------
18823           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18824           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18825                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18826           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18827                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18828           -- 5132302
18829           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18830                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18831 
18832       END IF;
18833 
18834       -- 4955764
18835       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18836       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18837 
18838 
18839       XLA_AE_LINES_PKG.ValidateCurrentLine;
18840       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18841 
18842       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18843                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18844                ,p_balance_type_code => l_balance_type_code);
18845 
18846    END IF;
18847 
18848    -----------------------------------------------------------------------------------------
18849    -- 4262811 Multiperiod Accounting
18850    -----------------------------------------------------------------------------------------
18851      -- No MPA option is assigned.
18852 
18853 
18854 END IF;
18855 END IF;
18856 --
18857 
18858 --
18859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18860    trace
18861       (p_msg      => 'END of AcctLineType_59'
18862       ,p_level    => C_LEVEL_PROCEDURE
18863       ,p_module   => l_log_module);
18864 END IF;
18865 --
18866 EXCEPTION
18867   WHEN xla_exceptions_pkg.application_exception THEN
18868       RAISE;
18869   WHEN OTHERS THEN
18870        xla_exceptions_pkg.raise_message
18871            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_59');
18872 END AcctLineType_59;
18873 --
18874 
18875 ---------------------------------------
18876 --
18877 -- PRIVATE FUNCTION
18878 --         AcctLineType_60
18879 --
18880 ---------------------------------------
18881 PROCEDURE AcctLineType_60 (
18882   p_application_id        IN NUMBER
18883  ,p_event_id              IN NUMBER
18884  ,p_calculate_acctd_flag  IN VARCHAR2
18885  ,p_calculate_g_l_flag    IN VARCHAR2
18886  ,p_actual_flag           IN OUT VARCHAR2
18887  ,p_balance_type_code     OUT VARCHAR2
18888  ,p_gain_or_loss_ref      OUT VARCHAR2
18889  
18890 --TRANSACTION_ID
18891  , p_source_1            IN NUMBER
18892 --Item Concatenated Segments
18893  , p_source_2            IN VARCHAR2
18894 --Transaction Quantity
18895  , p_source_3            IN NUMBER
18896 --Transaction Unit of Measure Code
18897  , p_source_4            IN VARCHAR2
18898 --Inventory Transaction Type Description
18899  , p_source_5            IN VARCHAR2
18900 --Cost Management Default Account
18901  , p_source_11            IN NUMBER
18902 --DISTRIBUTION_IDENTIFIER
18903  , p_source_84            IN NUMBER
18904 --Distribution Type
18905  , p_source_85            IN VARCHAR2
18906  , p_source_85_meaning    IN VARCHAR2
18907 --Entered Currency Code
18908  , p_source_88            IN VARCHAR2
18909 --Entered Amount
18910  , p_source_91            IN NUMBER
18911 --Currency Conversion Date
18912  , p_source_92            IN DATE
18913 --Currency Conversion Rate
18914  , p_source_93            IN NUMBER
18915 --Currency Conversion Type
18916  , p_source_94            IN VARCHAR2
18917 --Accounted Amount
18918  , p_source_95            IN NUMBER
18919 --Accounting Line Type
18920  , p_source_97            IN NUMBER
18921 )
18922 IS
18923 
18924 l_component_type              VARCHAR2(80);
18925 l_component_code              VARCHAR2(30);
18926 l_component_type_code         VARCHAR2(1);
18927 l_component_appl_id           INTEGER;
18928 l_amb_context_code            VARCHAR2(30);
18929 l_entity_code                 VARCHAR2(30);
18930 l_event_class_code            VARCHAR2(30);
18931 l_ae_header_id                NUMBER;
18932 l_event_type_code             VARCHAR2(30);
18933 l_line_definition_code        VARCHAR2(30);
18934 l_line_definition_owner_code  VARCHAR2(1);
18935 --
18936 -- adr variables
18937 l_segment                     VARCHAR2(30);
18938 l_ccid                        NUMBER;
18939 l_adr_transaction_coa_id      NUMBER;
18940 l_adr_accounting_coa_id       NUMBER;
18941 l_adr_flexfield_segment_code  VARCHAR2(30);
18942 l_adr_flex_value_set_id       NUMBER;
18943 l_adr_value_type_code         VARCHAR2(30);
18944 l_adr_value_combination_id    NUMBER;
18945 l_adr_value_segment_code      VARCHAR2(30);
18946 
18947 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18948 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18949 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18950 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18951 
18952 -- 4262811 Variables ------------------------------------------------------------------------------------------
18953 l_entered_amt_idx             NUMBER;
18954 l_accted_amt_idx              NUMBER;
18955 l_acc_rev_flag                VARCHAR2(1);
18956 l_accrual_line_num            NUMBER;
18957 l_tmp_amt                     NUMBER;
18958 l_acc_rev_natural_side_code   VARCHAR2(1);
18959 
18960 l_num_entries                 NUMBER;
18961 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18962 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18963 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18964 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18965 l_recog_line_1                NUMBER;
18966 l_recog_line_2                NUMBER;
18967 
18968 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18969 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18970 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18971 
18972 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18973 
18974 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18975 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18976 
18977 ---------------------------------------------------------------------------------------------------------------
18978 
18979 
18980 --
18981 -- bulk performance
18982 --
18983 l_balance_type_code           VARCHAR2(1);
18984 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18985 l_log_module                  VARCHAR2(240);
18986 
18987 --
18988 -- Upgrade strategy
18989 --
18990 l_actual_upg_option           VARCHAR2(1);
18991 l_enc_upg_option           VARCHAR2(1);
18992 
18993 --
18994 BEGIN
18995 --
18996 IF g_log_enabled THEN
18997       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
18998 END IF;
18999 --
19000 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19001 
19002       trace
19003          (p_msg      => 'BEGIN of AcctLineType_60'
19004          ,p_level    => C_LEVEL_PROCEDURE
19005          ,p_module   => l_log_module);
19006 
19007 END IF;
19008 --
19009 l_component_type             := 'AMB_JLT';
19010 l_component_code             := 'COST_OF_GOODS_SOLD';
19011 l_component_type_code        := 'S';
19012 l_component_appl_id          :=  707;
19013 l_amb_context_code           := 'DEFAULT';
19014 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
19015 l_event_class_code           := 'SALES_ORDER';
19016 l_event_type_code            := 'RMA_RCPT';
19017 l_line_definition_owner_code := 'S';
19018 l_line_definition_code       := 'PI_RMA_RCPT';
19019 --
19020 l_balance_type_code          := 'A';
19021 l_segment                     := NULL;
19022 l_ccid                        := NULL;
19023 l_adr_transaction_coa_id      := NULL;
19024 l_adr_accounting_coa_id       := NULL;
19025 l_adr_flexfield_segment_code  := NULL;
19026 l_adr_flex_value_set_id       := NULL;
19027 l_adr_value_type_code         := NULL;
19028 l_adr_value_combination_id    := NULL;
19029 l_adr_value_segment_code      := NULL;
19030 
19031 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19032 l_bflow_class_code           := '';    -- 4219869 Business Flow
19033 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19034 l_budgetary_control_flag     := 'N';
19035 
19036 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19037 l_bflow_applied_to_amt       := NULL; -- 5132302
19038 l_entered_amt_idx            := NULL;          -- 4262811
19039 l_accted_amt_idx             := NULL;          -- 4262811
19040 l_acc_rev_flag               := NULL;          -- 4262811
19041 l_accrual_line_num           := NULL;          -- 4262811
19042 l_tmp_amt                    := NULL;          -- 4262811
19043 --
19044  
19045 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19046     l_balance_type_code <> 'B' THEN
19047 IF NVL(p_source_97,9E125) =  35
19048  THEN 
19049 
19050    --
19051    XLA_AE_LINES_PKG.SetNewLine;
19052 
19053    p_balance_type_code          := l_balance_type_code;
19054    -- set the flag so later we will know whether the gain loss line needs to be created
19055    
19056    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19057      p_actual_flag :='A';
19058    END IF;
19059 
19060    --
19061    -- bulk performance
19062    --
19063    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19064                                       p_header_num   => 0); -- 4262811
19065    --
19066    -- set accounting line options
19067    --
19068    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19069            p_natural_side_code          => 'D'
19070          , p_gain_or_loss_flag          => 'N'
19071          , p_gl_transfer_mode_code      => 'S'
19072          , p_acct_entry_type_code       => 'A'
19073          , p_switch_side_flag           => 'Y'
19074          , p_merge_duplicate_code       => 'N'
19075          );
19076    --
19077    l_acc_rev_natural_side_code := 'C';  -- 4262811
19078    -- 
19079    --
19080    -- set accounting line type info
19081    --
19082    xla_ae_lines_pkg.SetAcctLineType
19083       (p_component_type             => l_component_type
19084       ,p_event_type_code            => l_event_type_code
19085       ,p_line_definition_owner_code => l_line_definition_owner_code
19086       ,p_line_definition_code       => l_line_definition_code
19087       ,p_accounting_line_code       => l_component_code
19088       ,p_accounting_line_type_code  => l_component_type_code
19089       ,p_accounting_line_appl_id    => l_component_appl_id
19090       ,p_amb_context_code           => l_amb_context_code
19091       ,p_entity_code                => l_entity_code
19092       ,p_event_class_code           => l_event_class_code);
19093    --
19094    -- set accounting class
19095    --
19096    xla_ae_lines_pkg.SetAcctClass(
19097            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
19098          , p_ae_header_id           => l_ae_header_id
19099          );
19100 
19101    --
19102    -- set rounding class
19103    --
19104    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19105                       'COST_OF_GOODS_SOLD';
19106 
19107    --
19108    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19109    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19110    --
19111    -- bulk performance
19112    --
19113    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19114 
19115    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19116       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19117 
19118    -- 4955764
19119    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19120       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19121 
19122    -- 4458381 Public Sector Enh
19123    
19124    --
19125    -- set accounting attributes for the line type
19126    --
19127    l_entered_amt_idx := 3;
19128    l_accted_amt_idx  := 8;
19129    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19130    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19131    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
19132    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19133    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
19134    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19135    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
19136    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19137    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
19138    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19139    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
19140    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19141    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
19142    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19143    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
19144    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19145    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
19146 
19147    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19148    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19149 
19150    ---------------------------------------------------------------------------------------------------------------
19151    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19152    ---------------------------------------------------------------------------------------------------------------
19153    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19154 
19155    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19156    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19157 
19158    IF xla_accounting_cache_pkg.GetValueChar
19159          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19160          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19161    AND l_bflow_method_code = 'PRIOR_ENTRY'
19162 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19163    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19164          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19165        )
19166    THEN
19167          xla_ae_lines_pkg.BflowUpgEntry
19168            (p_business_method_code    => l_bflow_method_code
19169            ,p_business_class_code     => l_bflow_class_code
19170            ,p_balance_type            => l_balance_type_code);
19171    ELSE
19172       NULL;
19173 -- No business flow processing for business flow method of NONE.
19174    END IF;
19175 
19176    --
19177    -- call analytical criteria
19178    --
19179    
19180    --
19181    -- call description
19182    --
19183    
19184 xla_ae_lines_pkg.SetLineDescription(
19185    p_ae_header_id => l_ae_header_id
19186   ,p_description  => Description_1 (
19187      p_application_id         => p_application_id
19188    , p_ae_header_id           => l_ae_header_id 
19189 , p_source_1 => p_source_1
19190 , p_source_2 => p_source_2
19191 , p_source_3 => p_source_3
19192 , p_source_4 => p_source_4
19193 , p_source_5 => p_source_5
19194    )
19195 );
19196 
19197 
19198    --
19199    -- call ADRs
19200    -- Bug 4922099
19201    --
19202    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19203         (NVL(l_actual_upg_option, 'N') = 'O') OR
19204         (NVL(l_enc_upg_option, 'N') = 'O')
19205       )
19206    THEN
19207    NULL;
19208    --
19209    --
19210    
19211   l_ccid := AcctDerRule_6(
19212            p_application_id           => p_application_id
19213          , p_ae_header_id             => l_ae_header_id 
19214 , p_source_11 => p_source_11
19215          , x_transaction_coa_id       => l_adr_transaction_coa_id
19216          , x_accounting_coa_id        => l_adr_accounting_coa_id
19217          , x_value_type_code          => l_adr_value_type_code
19218          , p_side                     => 'NA'
19219    );
19220 
19221    xla_ae_lines_pkg.set_ccid(
19222     p_code_combination_id          => l_ccid
19223   , p_value_type_code              => l_adr_value_type_code
19224   , p_transaction_coa_id           => l_adr_transaction_coa_id
19225   , p_accounting_coa_id            => l_adr_accounting_coa_id
19226   , p_adr_code                     => 'CST_DEFAULT'
19227   , p_adr_type_code                => 'S'
19228   , p_component_type               => l_component_type
19229   , p_component_code               => l_component_code
19230   , p_component_type_code          => l_component_type_code
19231   , p_component_appl_id            => l_component_appl_id
19232   , p_amb_context_code             => l_amb_context_code
19233   , p_side                         => 'NA'
19234   );
19235 
19236 
19237    --
19238    --
19239    END IF;
19240    --
19241    -- Bug 4922099
19242    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19243           (NVL(l_enc_upg_option, 'N') = 'O')
19244         ) AND
19245         (l_bflow_method_code = 'PRIOR_ENTRY')
19246       )
19247    THEN
19248       IF
19249       --
19250       1 = 2
19251       --
19252       THEN
19253       xla_accounting_err_pkg.build_message
19254                                     (p_appli_s_name            => 'XLA'
19255                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19256                                     ,p_token_1                 => 'LINE_NUMBER'
19257                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19258                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19259                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19260                                                                              l_component_type
19261                                                                             ,l_component_code
19262                                                                             ,l_component_type_code
19263                                                                             ,l_component_appl_id
19264                                                                             ,l_amb_context_code
19265                                                                             ,l_entity_code
19266                                                                             ,l_event_class_code
19267                                                                            )
19268                                     ,p_token_3                 => 'OWNER'
19269                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19270                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19271                                                                           ,p_lookup_code    => l_component_type_code
19272                                                                          )
19273                                     ,p_token_4                 => 'PRODUCT_NAME'
19274                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19275                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19276                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19277                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19278                                     ,p_ae_header_id            =>  NULL
19279                                        );
19280 
19281         IF (C_LEVEL_ERROR>= g_log_level) THEN
19282                  trace
19283                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19284                       ,p_level    => C_LEVEL_ERROR
19285                       ,p_module   => l_log_module);
19286         END IF;
19287       END IF;
19288    END IF;
19289    --
19290    --
19291    ------------------------------------------------------------------------------------------------
19292    -- 4219869 Business Flow
19293    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19294    -- Prior Entry.  Currently, the following code is always generated.
19295    ------------------------------------------------------------------------------------------------
19296    XLA_AE_LINES_PKG.ValidateCurrentLine;
19297 
19298    ------------------------------------------------------------------------------------
19299    -- 4219869 Business Flow
19300    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19301    ------------------------------------------------------------------------------------
19302    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19303 
19304    ----------------------------------------------------------------------------------
19305    -- 4219869 Business Flow
19306    -- Update journal entry status -- Need to generate this within IF <condition>
19307    ----------------------------------------------------------------------------------
19308    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19309          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19310          ,p_balance_type_code => l_balance_type_code
19311          );
19312 
19313    -------------------------------------------------------------------------------------------
19314    -- 4262811 - Generate the Accrual Reversal lines
19315    -------------------------------------------------------------------------------------------
19316    BEGIN
19317       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19318                               (g_array_event(p_event_id).array_value_num('header_index'));
19319       IF l_acc_rev_flag IS NULL THEN
19320          l_acc_rev_flag := 'N';
19321       END IF;
19322    EXCEPTION
19323       WHEN OTHERS THEN
19324          l_acc_rev_flag := 'N';
19325    END;
19326    --
19327    IF (l_acc_rev_flag = 'Y') THEN
19328 
19329        -- 4645092  ------------------------------------------------------------------------------
19330        -- To allow MPA report to determine if it should generate report process
19331        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19332        ------------------------------------------------------------------------------------------
19333 
19334        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19335        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19336    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19337    -- call ADRs
19338    -- Bug 4922099
19339    --
19340    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19341         (NVL(l_actual_upg_option, 'N') = 'O') OR
19342         (NVL(l_enc_upg_option, 'N') = 'O')
19343       )
19344    THEN
19345    NULL;
19346    --
19347    --
19348    
19349   l_ccid := AcctDerRule_6(
19350            p_application_id           => p_application_id
19351          , p_ae_header_id             => l_ae_header_id 
19352 , p_source_11 => p_source_11
19353          , x_transaction_coa_id       => l_adr_transaction_coa_id
19354          , x_accounting_coa_id        => l_adr_accounting_coa_id
19355          , x_value_type_code          => l_adr_value_type_code
19356          , p_side                     => 'NA'
19357    );
19358 
19359    xla_ae_lines_pkg.set_ccid(
19360     p_code_combination_id          => l_ccid
19361   , p_value_type_code              => l_adr_value_type_code
19362   , p_transaction_coa_id           => l_adr_transaction_coa_id
19363   , p_accounting_coa_id            => l_adr_accounting_coa_id
19364   , p_adr_code                     => 'CST_DEFAULT'
19365   , p_adr_type_code                => 'S'
19366   , p_component_type               => l_component_type
19367   , p_component_code               => l_component_code
19368   , p_component_type_code          => l_component_type_code
19369   , p_component_appl_id            => l_component_appl_id
19370   , p_amb_context_code             => l_amb_context_code
19371   , p_side                         => 'NA'
19372   );
19373 
19374 
19375    --
19376    --
19377    END IF;
19378 
19379        --
19380        -- Update the line information that should be overwritten
19381        --
19382        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19383                                          p_header_num   => 1);
19384        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19385 
19386        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19387 
19388        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19389           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19390        END IF;
19391 
19392       --
19393       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19394       --
19395       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19396           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19397       ELSE
19398           ---------------------------------------------------------------------------------------------------
19399           -- 4262811a Switch Sign
19400           ---------------------------------------------------------------------------------------------------
19401           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19402           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19403                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19404           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19405                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19406           -- 5132302
19407           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19408                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19409 
19410       END IF;
19411 
19412       -- 4955764
19413       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19414       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19415 
19416 
19417       XLA_AE_LINES_PKG.ValidateCurrentLine;
19418       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19419 
19420       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19421                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19422                ,p_balance_type_code => l_balance_type_code);
19423 
19424    END IF;
19425 
19426    -----------------------------------------------------------------------------------------
19427    -- 4262811 Multiperiod Accounting
19428    -----------------------------------------------------------------------------------------
19429      -- No MPA option is assigned.
19430 
19431 
19432 END IF;
19433 END IF;
19434 --
19435 
19436 --
19437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19438    trace
19439       (p_msg      => 'END of AcctLineType_60'
19440       ,p_level    => C_LEVEL_PROCEDURE
19441       ,p_module   => l_log_module);
19442 END IF;
19443 --
19444 EXCEPTION
19445   WHEN xla_exceptions_pkg.application_exception THEN
19446       RAISE;
19447   WHEN OTHERS THEN
19448        xla_exceptions_pkg.raise_message
19449            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_60');
19450 END AcctLineType_60;
19451 --
19452 
19453 ---------------------------------------
19454 --
19455 -- PRIVATE FUNCTION
19456 --         AcctLineType_61
19457 --
19458 ---------------------------------------
19459 PROCEDURE AcctLineType_61 (
19460   p_application_id        IN NUMBER
19461  ,p_event_id              IN NUMBER
19462  ,p_calculate_acctd_flag  IN VARCHAR2
19463  ,p_calculate_g_l_flag    IN VARCHAR2
19464  ,p_actual_flag           IN OUT VARCHAR2
19465  ,p_balance_type_code     OUT VARCHAR2
19466  ,p_gain_or_loss_ref      OUT VARCHAR2
19467  
19468 --TRANSACTION_ID
19469  , p_source_1            IN NUMBER
19470 --Item Concatenated Segments
19471  , p_source_2            IN VARCHAR2
19472 --Transaction Quantity
19473  , p_source_3            IN NUMBER
19474 --Transaction Unit of Measure Code
19475  , p_source_4            IN VARCHAR2
19476 --Inventory Transaction Type Description
19477  , p_source_5            IN VARCHAR2
19478 --Cost Management Default Account
19479  , p_source_11            IN NUMBER
19480 --DISTRIBUTION_IDENTIFIER
19481  , p_source_84            IN NUMBER
19482 --Distribution Type
19483  , p_source_85            IN VARCHAR2
19484  , p_source_85_meaning    IN VARCHAR2
19485 --Entered Currency Code
19486  , p_source_88            IN VARCHAR2
19487 --Entered Amount
19488  , p_source_91            IN NUMBER
19489 --Currency Conversion Date
19490  , p_source_92            IN DATE
19491 --Currency Conversion Rate
19492  , p_source_93            IN NUMBER
19493 --Currency Conversion Type
19494  , p_source_94            IN VARCHAR2
19495 --Accounted Amount
19496  , p_source_95            IN NUMBER
19497 --Accounting Line Type
19498  , p_source_97            IN NUMBER
19499 )
19500 IS
19501 
19502 l_component_type              VARCHAR2(80);
19503 l_component_code              VARCHAR2(30);
19504 l_component_type_code         VARCHAR2(1);
19505 l_component_appl_id           INTEGER;
19506 l_amb_context_code            VARCHAR2(30);
19507 l_entity_code                 VARCHAR2(30);
19508 l_event_class_code            VARCHAR2(30);
19509 l_ae_header_id                NUMBER;
19510 l_event_type_code             VARCHAR2(30);
19511 l_line_definition_code        VARCHAR2(30);
19512 l_line_definition_owner_code  VARCHAR2(1);
19513 --
19514 -- adr variables
19515 l_segment                     VARCHAR2(30);
19516 l_ccid                        NUMBER;
19517 l_adr_transaction_coa_id      NUMBER;
19518 l_adr_accounting_coa_id       NUMBER;
19519 l_adr_flexfield_segment_code  VARCHAR2(30);
19520 l_adr_flex_value_set_id       NUMBER;
19521 l_adr_value_type_code         VARCHAR2(30);
19522 l_adr_value_combination_id    NUMBER;
19523 l_adr_value_segment_code      VARCHAR2(30);
19524 
19525 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19526 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19527 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19528 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19529 
19530 -- 4262811 Variables ------------------------------------------------------------------------------------------
19531 l_entered_amt_idx             NUMBER;
19532 l_accted_amt_idx              NUMBER;
19533 l_acc_rev_flag                VARCHAR2(1);
19534 l_accrual_line_num            NUMBER;
19535 l_tmp_amt                     NUMBER;
19536 l_acc_rev_natural_side_code   VARCHAR2(1);
19537 
19538 l_num_entries                 NUMBER;
19539 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19540 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19541 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19542 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19543 l_recog_line_1                NUMBER;
19544 l_recog_line_2                NUMBER;
19545 
19546 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19547 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19548 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19549 
19550 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19551 
19552 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19553 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19554 
19555 ---------------------------------------------------------------------------------------------------------------
19556 
19557 
19558 --
19559 -- bulk performance
19560 --
19561 l_balance_type_code           VARCHAR2(1);
19562 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19563 l_log_module                  VARCHAR2(240);
19564 
19565 --
19566 -- Upgrade strategy
19567 --
19568 l_actual_upg_option           VARCHAR2(1);
19569 l_enc_upg_option           VARCHAR2(1);
19570 
19571 --
19572 BEGIN
19573 --
19574 IF g_log_enabled THEN
19575       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
19576 END IF;
19577 --
19578 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19579 
19580       trace
19581          (p_msg      => 'BEGIN of AcctLineType_61'
19582          ,p_level    => C_LEVEL_PROCEDURE
19583          ,p_module   => l_log_module);
19584 
19585 END IF;
19586 --
19587 l_component_type             := 'AMB_JLT';
19588 l_component_code             := 'COST_OF_GOODS_SOLD';
19589 l_component_type_code        := 'S';
19590 l_component_appl_id          :=  707;
19591 l_amb_context_code           := 'DEFAULT';
19592 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
19593 l_event_class_code           := 'SALES_ORDER';
19594 l_event_type_code            := 'LOG_RMA_RCPT';
19595 l_line_definition_owner_code := 'S';
19596 l_line_definition_code       := 'PI_LOG_RMA_RCPT';
19597 --
19598 l_balance_type_code          := 'A';
19599 l_segment                     := NULL;
19600 l_ccid                        := NULL;
19601 l_adr_transaction_coa_id      := NULL;
19602 l_adr_accounting_coa_id       := NULL;
19603 l_adr_flexfield_segment_code  := NULL;
19604 l_adr_flex_value_set_id       := NULL;
19605 l_adr_value_type_code         := NULL;
19606 l_adr_value_combination_id    := NULL;
19607 l_adr_value_segment_code      := NULL;
19608 
19609 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19610 l_bflow_class_code           := '';    -- 4219869 Business Flow
19611 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19612 l_budgetary_control_flag     := 'N';
19613 
19614 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19615 l_bflow_applied_to_amt       := NULL; -- 5132302
19616 l_entered_amt_idx            := NULL;          -- 4262811
19617 l_accted_amt_idx             := NULL;          -- 4262811
19618 l_acc_rev_flag               := NULL;          -- 4262811
19619 l_accrual_line_num           := NULL;          -- 4262811
19620 l_tmp_amt                    := NULL;          -- 4262811
19621 --
19622  
19623 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19624     l_balance_type_code <> 'B' THEN
19625 IF NVL(p_source_97,9E125) =  35
19626  THEN 
19627 
19628    --
19629    XLA_AE_LINES_PKG.SetNewLine;
19630 
19631    p_balance_type_code          := l_balance_type_code;
19632    -- set the flag so later we will know whether the gain loss line needs to be created
19633    
19634    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19635      p_actual_flag :='A';
19636    END IF;
19637 
19638    --
19639    -- bulk performance
19640    --
19641    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19642                                       p_header_num   => 0); -- 4262811
19643    --
19644    -- set accounting line options
19645    --
19646    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19647            p_natural_side_code          => 'D'
19648          , p_gain_or_loss_flag          => 'N'
19649          , p_gl_transfer_mode_code      => 'S'
19650          , p_acct_entry_type_code       => 'A'
19651          , p_switch_side_flag           => 'Y'
19652          , p_merge_duplicate_code       => 'N'
19653          );
19654    --
19655    l_acc_rev_natural_side_code := 'C';  -- 4262811
19656    -- 
19657    --
19658    -- set accounting line type info
19659    --
19660    xla_ae_lines_pkg.SetAcctLineType
19661       (p_component_type             => l_component_type
19662       ,p_event_type_code            => l_event_type_code
19663       ,p_line_definition_owner_code => l_line_definition_owner_code
19664       ,p_line_definition_code       => l_line_definition_code
19665       ,p_accounting_line_code       => l_component_code
19666       ,p_accounting_line_type_code  => l_component_type_code
19667       ,p_accounting_line_appl_id    => l_component_appl_id
19668       ,p_amb_context_code           => l_amb_context_code
19669       ,p_entity_code                => l_entity_code
19670       ,p_event_class_code           => l_event_class_code);
19671    --
19672    -- set accounting class
19673    --
19674    xla_ae_lines_pkg.SetAcctClass(
19675            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
19676          , p_ae_header_id           => l_ae_header_id
19677          );
19678 
19679    --
19680    -- set rounding class
19681    --
19682    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19683                       'COST_OF_GOODS_SOLD';
19684 
19685    --
19686    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19687    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19688    --
19689    -- bulk performance
19690    --
19691    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19692 
19693    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19694       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19695 
19696    -- 4955764
19697    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19698       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19699 
19700    -- 4458381 Public Sector Enh
19701    
19702    --
19703    -- set accounting attributes for the line type
19704    --
19705    l_entered_amt_idx := 3;
19706    l_accted_amt_idx  := 8;
19707    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19708    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19709    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
19710    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19711    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
19712    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19713    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
19714    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19715    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
19716    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19717    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
19718    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19719    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
19720    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19721    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
19722    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19723    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
19724 
19725    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19726    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19727 
19728    ---------------------------------------------------------------------------------------------------------------
19729    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19730    ---------------------------------------------------------------------------------------------------------------
19731    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19732 
19733    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19734    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19735 
19736    IF xla_accounting_cache_pkg.GetValueChar
19737          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19738          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19739    AND l_bflow_method_code = 'PRIOR_ENTRY'
19740 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19741    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19742          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19743        )
19744    THEN
19745          xla_ae_lines_pkg.BflowUpgEntry
19746            (p_business_method_code    => l_bflow_method_code
19747            ,p_business_class_code     => l_bflow_class_code
19748            ,p_balance_type            => l_balance_type_code);
19749    ELSE
19750       NULL;
19751 -- No business flow processing for business flow method of NONE.
19752    END IF;
19753 
19754    --
19755    -- call analytical criteria
19756    --
19757    
19758    --
19759    -- call description
19760    --
19761    
19762 xla_ae_lines_pkg.SetLineDescription(
19763    p_ae_header_id => l_ae_header_id
19764   ,p_description  => Description_1 (
19765      p_application_id         => p_application_id
19766    , p_ae_header_id           => l_ae_header_id 
19767 , p_source_1 => p_source_1
19768 , p_source_2 => p_source_2
19769 , p_source_3 => p_source_3
19770 , p_source_4 => p_source_4
19771 , p_source_5 => p_source_5
19772    )
19773 );
19774 
19775 
19776    --
19777    -- call ADRs
19778    -- Bug 4922099
19779    --
19780    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19781         (NVL(l_actual_upg_option, 'N') = 'O') OR
19782         (NVL(l_enc_upg_option, 'N') = 'O')
19783       )
19784    THEN
19785    NULL;
19786    --
19787    --
19788    
19789   l_ccid := AcctDerRule_6(
19790            p_application_id           => p_application_id
19791          , p_ae_header_id             => l_ae_header_id 
19792 , p_source_11 => p_source_11
19793          , x_transaction_coa_id       => l_adr_transaction_coa_id
19794          , x_accounting_coa_id        => l_adr_accounting_coa_id
19795          , x_value_type_code          => l_adr_value_type_code
19796          , p_side                     => 'NA'
19797    );
19798 
19799    xla_ae_lines_pkg.set_ccid(
19800     p_code_combination_id          => l_ccid
19801   , p_value_type_code              => l_adr_value_type_code
19802   , p_transaction_coa_id           => l_adr_transaction_coa_id
19803   , p_accounting_coa_id            => l_adr_accounting_coa_id
19804   , p_adr_code                     => 'CST_DEFAULT'
19805   , p_adr_type_code                => 'S'
19806   , p_component_type               => l_component_type
19807   , p_component_code               => l_component_code
19808   , p_component_type_code          => l_component_type_code
19809   , p_component_appl_id            => l_component_appl_id
19810   , p_amb_context_code             => l_amb_context_code
19811   , p_side                         => 'NA'
19812   );
19813 
19814 
19815    --
19816    --
19817    END IF;
19818    --
19819    -- Bug 4922099
19820    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19821           (NVL(l_enc_upg_option, 'N') = 'O')
19822         ) AND
19823         (l_bflow_method_code = 'PRIOR_ENTRY')
19824       )
19825    THEN
19826       IF
19827       --
19828       1 = 2
19829       --
19830       THEN
19831       xla_accounting_err_pkg.build_message
19832                                     (p_appli_s_name            => 'XLA'
19833                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19834                                     ,p_token_1                 => 'LINE_NUMBER'
19835                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19836                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19837                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19838                                                                              l_component_type
19839                                                                             ,l_component_code
19840                                                                             ,l_component_type_code
19841                                                                             ,l_component_appl_id
19842                                                                             ,l_amb_context_code
19843                                                                             ,l_entity_code
19844                                                                             ,l_event_class_code
19845                                                                            )
19846                                     ,p_token_3                 => 'OWNER'
19847                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19848                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19849                                                                           ,p_lookup_code    => l_component_type_code
19850                                                                          )
19851                                     ,p_token_4                 => 'PRODUCT_NAME'
19852                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19853                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19854                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19855                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19856                                     ,p_ae_header_id            =>  NULL
19857                                        );
19858 
19859         IF (C_LEVEL_ERROR>= g_log_level) THEN
19860                  trace
19861                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19862                       ,p_level    => C_LEVEL_ERROR
19863                       ,p_module   => l_log_module);
19864         END IF;
19865       END IF;
19866    END IF;
19867    --
19868    --
19869    ------------------------------------------------------------------------------------------------
19870    -- 4219869 Business Flow
19871    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19872    -- Prior Entry.  Currently, the following code is always generated.
19873    ------------------------------------------------------------------------------------------------
19874    XLA_AE_LINES_PKG.ValidateCurrentLine;
19875 
19876    ------------------------------------------------------------------------------------
19877    -- 4219869 Business Flow
19878    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19879    ------------------------------------------------------------------------------------
19880    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19881 
19882    ----------------------------------------------------------------------------------
19883    -- 4219869 Business Flow
19884    -- Update journal entry status -- Need to generate this within IF <condition>
19885    ----------------------------------------------------------------------------------
19886    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19887          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19888          ,p_balance_type_code => l_balance_type_code
19889          );
19890 
19891    -------------------------------------------------------------------------------------------
19892    -- 4262811 - Generate the Accrual Reversal lines
19893    -------------------------------------------------------------------------------------------
19894    BEGIN
19895       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19896                               (g_array_event(p_event_id).array_value_num('header_index'));
19897       IF l_acc_rev_flag IS NULL THEN
19898          l_acc_rev_flag := 'N';
19899       END IF;
19900    EXCEPTION
19901       WHEN OTHERS THEN
19902          l_acc_rev_flag := 'N';
19903    END;
19904    --
19905    IF (l_acc_rev_flag = 'Y') THEN
19906 
19907        -- 4645092  ------------------------------------------------------------------------------
19908        -- To allow MPA report to determine if it should generate report process
19909        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19910        ------------------------------------------------------------------------------------------
19911 
19912        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19913        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19914    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19915    -- call ADRs
19916    -- Bug 4922099
19917    --
19918    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19919         (NVL(l_actual_upg_option, 'N') = 'O') OR
19920         (NVL(l_enc_upg_option, 'N') = 'O')
19921       )
19922    THEN
19923    NULL;
19924    --
19925    --
19926    
19927   l_ccid := AcctDerRule_6(
19928            p_application_id           => p_application_id
19929          , p_ae_header_id             => l_ae_header_id 
19930 , p_source_11 => p_source_11
19931          , x_transaction_coa_id       => l_adr_transaction_coa_id
19932          , x_accounting_coa_id        => l_adr_accounting_coa_id
19933          , x_value_type_code          => l_adr_value_type_code
19934          , p_side                     => 'NA'
19935    );
19936 
19937    xla_ae_lines_pkg.set_ccid(
19938     p_code_combination_id          => l_ccid
19939   , p_value_type_code              => l_adr_value_type_code
19940   , p_transaction_coa_id           => l_adr_transaction_coa_id
19941   , p_accounting_coa_id            => l_adr_accounting_coa_id
19942   , p_adr_code                     => 'CST_DEFAULT'
19943   , p_adr_type_code                => 'S'
19944   , p_component_type               => l_component_type
19945   , p_component_code               => l_component_code
19946   , p_component_type_code          => l_component_type_code
19947   , p_component_appl_id            => l_component_appl_id
19948   , p_amb_context_code             => l_amb_context_code
19949   , p_side                         => 'NA'
19950   );
19951 
19952 
19953    --
19954    --
19955    END IF;
19956 
19957        --
19958        -- Update the line information that should be overwritten
19959        --
19960        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19961                                          p_header_num   => 1);
19962        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19963 
19964        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19965 
19966        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19967           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19968        END IF;
19969 
19970       --
19971       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19972       --
19973       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19974           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19975       ELSE
19976           ---------------------------------------------------------------------------------------------------
19977           -- 4262811a Switch Sign
19978           ---------------------------------------------------------------------------------------------------
19979           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19980           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19981                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19982           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19983                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19984           -- 5132302
19985           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19986                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19987 
19988       END IF;
19989 
19990       -- 4955764
19991       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19992       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19993 
19994 
19995       XLA_AE_LINES_PKG.ValidateCurrentLine;
19996       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19997 
19998       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19999                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20000                ,p_balance_type_code => l_balance_type_code);
20001 
20002    END IF;
20003 
20004    -----------------------------------------------------------------------------------------
20005    -- 4262811 Multiperiod Accounting
20006    -----------------------------------------------------------------------------------------
20007      -- No MPA option is assigned.
20008 
20009 
20010 END IF;
20011 END IF;
20012 --
20013 
20014 --
20015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20016    trace
20017       (p_msg      => 'END of AcctLineType_61'
20018       ,p_level    => C_LEVEL_PROCEDURE
20019       ,p_module   => l_log_module);
20020 END IF;
20021 --
20022 EXCEPTION
20023   WHEN xla_exceptions_pkg.application_exception THEN
20024       RAISE;
20025   WHEN OTHERS THEN
20026        xla_exceptions_pkg.raise_message
20027            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_61');
20028 END AcctLineType_61;
20029 --
20030 
20031 ---------------------------------------
20032 --
20033 -- PRIVATE FUNCTION
20034 --         AcctLineType_62
20035 --
20036 ---------------------------------------
20037 PROCEDURE AcctLineType_62 (
20038   p_application_id        IN NUMBER
20039  ,p_event_id              IN NUMBER
20040  ,p_calculate_acctd_flag  IN VARCHAR2
20041  ,p_calculate_g_l_flag    IN VARCHAR2
20042  ,p_actual_flag           IN OUT VARCHAR2
20043  ,p_balance_type_code     OUT VARCHAR2
20044  ,p_gain_or_loss_ref      OUT VARCHAR2
20045  
20046 --TRANSACTION_ID
20047  , p_source_1            IN NUMBER
20048 --Item Concatenated Segments
20049  , p_source_2            IN VARCHAR2
20050 --Transaction Quantity
20051  , p_source_3            IN NUMBER
20052 --Transaction Unit of Measure Code
20053  , p_source_4            IN VARCHAR2
20054 --Inventory Transaction Type Description
20055  , p_source_5            IN VARCHAR2
20056 --Cost Management Default Account
20057  , p_source_11            IN NUMBER
20058 --DISTRIBUTION_IDENTIFIER
20059  , p_source_84            IN NUMBER
20060 --Distribution Type
20061  , p_source_85            IN VARCHAR2
20062  , p_source_85_meaning    IN VARCHAR2
20063 --Entered Currency Code
20064  , p_source_88            IN VARCHAR2
20065 --Entered Amount
20066  , p_source_91            IN NUMBER
20067 --Currency Conversion Date
20068  , p_source_92            IN DATE
20069 --Currency Conversion Rate
20070  , p_source_93            IN NUMBER
20071 --Currency Conversion Type
20072  , p_source_94            IN VARCHAR2
20073 --Accounted Amount
20074  , p_source_95            IN NUMBER
20075 --Accounting Line Type
20076  , p_source_97            IN NUMBER
20077 )
20078 IS
20079 
20080 l_component_type              VARCHAR2(80);
20081 l_component_code              VARCHAR2(30);
20082 l_component_type_code         VARCHAR2(1);
20083 l_component_appl_id           INTEGER;
20084 l_amb_context_code            VARCHAR2(30);
20085 l_entity_code                 VARCHAR2(30);
20086 l_event_class_code            VARCHAR2(30);
20087 l_ae_header_id                NUMBER;
20088 l_event_type_code             VARCHAR2(30);
20089 l_line_definition_code        VARCHAR2(30);
20090 l_line_definition_owner_code  VARCHAR2(1);
20091 --
20092 -- adr variables
20093 l_segment                     VARCHAR2(30);
20094 l_ccid                        NUMBER;
20095 l_adr_transaction_coa_id      NUMBER;
20096 l_adr_accounting_coa_id       NUMBER;
20097 l_adr_flexfield_segment_code  VARCHAR2(30);
20098 l_adr_flex_value_set_id       NUMBER;
20099 l_adr_value_type_code         VARCHAR2(30);
20100 l_adr_value_combination_id    NUMBER;
20101 l_adr_value_segment_code      VARCHAR2(30);
20102 
20103 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20104 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20105 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20106 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20107 
20108 -- 4262811 Variables ------------------------------------------------------------------------------------------
20109 l_entered_amt_idx             NUMBER;
20110 l_accted_amt_idx              NUMBER;
20111 l_acc_rev_flag                VARCHAR2(1);
20112 l_accrual_line_num            NUMBER;
20113 l_tmp_amt                     NUMBER;
20114 l_acc_rev_natural_side_code   VARCHAR2(1);
20115 
20116 l_num_entries                 NUMBER;
20117 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20118 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20119 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20120 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20121 l_recog_line_1                NUMBER;
20122 l_recog_line_2                NUMBER;
20123 
20124 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20125 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20126 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20127 
20128 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20129 
20130 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20131 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20132 
20133 ---------------------------------------------------------------------------------------------------------------
20134 
20135 
20136 --
20137 -- bulk performance
20138 --
20139 l_balance_type_code           VARCHAR2(1);
20140 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20141 l_log_module                  VARCHAR2(240);
20142 
20143 --
20144 -- Upgrade strategy
20145 --
20146 l_actual_upg_option           VARCHAR2(1);
20147 l_enc_upg_option           VARCHAR2(1);
20148 
20149 --
20150 BEGIN
20151 --
20152 IF g_log_enabled THEN
20153       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
20154 END IF;
20155 --
20156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20157 
20158       trace
20159          (p_msg      => 'BEGIN of AcctLineType_62'
20160          ,p_level    => C_LEVEL_PROCEDURE
20161          ,p_module   => l_log_module);
20162 
20163 END IF;
20164 --
20165 l_component_type             := 'AMB_JLT';
20166 l_component_code             := 'COST_OF_GOODS_SOLD';
20167 l_component_type_code        := 'S';
20168 l_component_appl_id          :=  707;
20169 l_amb_context_code           := 'DEFAULT';
20170 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
20171 l_event_class_code           := 'SALES_ORDER';
20172 l_event_type_code            := 'SO_ISSUE';
20173 l_line_definition_owner_code := 'S';
20174 l_line_definition_code       := 'PI_SO_ISSUE';
20175 --
20176 l_balance_type_code          := 'A';
20177 l_segment                     := NULL;
20178 l_ccid                        := NULL;
20179 l_adr_transaction_coa_id      := NULL;
20180 l_adr_accounting_coa_id       := NULL;
20181 l_adr_flexfield_segment_code  := NULL;
20182 l_adr_flex_value_set_id       := NULL;
20183 l_adr_value_type_code         := NULL;
20184 l_adr_value_combination_id    := NULL;
20185 l_adr_value_segment_code      := NULL;
20186 
20187 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20188 l_bflow_class_code           := '';    -- 4219869 Business Flow
20189 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20190 l_budgetary_control_flag     := 'N';
20191 
20192 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20193 l_bflow_applied_to_amt       := NULL; -- 5132302
20194 l_entered_amt_idx            := NULL;          -- 4262811
20195 l_accted_amt_idx             := NULL;          -- 4262811
20196 l_acc_rev_flag               := NULL;          -- 4262811
20197 l_accrual_line_num           := NULL;          -- 4262811
20198 l_tmp_amt                    := NULL;          -- 4262811
20199 --
20200  
20201 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20202     l_balance_type_code <> 'B' THEN
20203 IF NVL(p_source_97,9E125) =  35
20204  THEN 
20205 
20206    --
20207    XLA_AE_LINES_PKG.SetNewLine;
20208 
20209    p_balance_type_code          := l_balance_type_code;
20210    -- set the flag so later we will know whether the gain loss line needs to be created
20211    
20212    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20213      p_actual_flag :='A';
20214    END IF;
20215 
20216    --
20217    -- bulk performance
20218    --
20219    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20220                                       p_header_num   => 0); -- 4262811
20221    --
20222    -- set accounting line options
20223    --
20224    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20225            p_natural_side_code          => 'D'
20226          , p_gain_or_loss_flag          => 'N'
20227          , p_gl_transfer_mode_code      => 'S'
20228          , p_acct_entry_type_code       => 'A'
20229          , p_switch_side_flag           => 'Y'
20230          , p_merge_duplicate_code       => 'N'
20231          );
20232    --
20233    l_acc_rev_natural_side_code := 'C';  -- 4262811
20234    -- 
20235    --
20236    -- set accounting line type info
20237    --
20238    xla_ae_lines_pkg.SetAcctLineType
20239       (p_component_type             => l_component_type
20240       ,p_event_type_code            => l_event_type_code
20241       ,p_line_definition_owner_code => l_line_definition_owner_code
20242       ,p_line_definition_code       => l_line_definition_code
20243       ,p_accounting_line_code       => l_component_code
20244       ,p_accounting_line_type_code  => l_component_type_code
20245       ,p_accounting_line_appl_id    => l_component_appl_id
20246       ,p_amb_context_code           => l_amb_context_code
20247       ,p_entity_code                => l_entity_code
20248       ,p_event_class_code           => l_event_class_code);
20249    --
20250    -- set accounting class
20251    --
20252    xla_ae_lines_pkg.SetAcctClass(
20253            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
20254          , p_ae_header_id           => l_ae_header_id
20255          );
20256 
20257    --
20258    -- set rounding class
20259    --
20260    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20261                       'COST_OF_GOODS_SOLD';
20262 
20263    --
20264    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20265    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20266    --
20267    -- bulk performance
20268    --
20269    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20270 
20271    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20272       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20273 
20274    -- 4955764
20275    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20276       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20277 
20278    -- 4458381 Public Sector Enh
20279    
20280    --
20281    -- set accounting attributes for the line type
20282    --
20283    l_entered_amt_idx := 3;
20284    l_accted_amt_idx  := 8;
20285    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20286    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20287    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
20288    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20289    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
20290    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20291    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
20292    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20293    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
20294    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20295    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
20296    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20297    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
20298    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20299    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
20300    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20301    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
20302 
20303    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20304    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20305 
20306    ---------------------------------------------------------------------------------------------------------------
20307    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20308    ---------------------------------------------------------------------------------------------------------------
20309    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20310 
20311    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20312    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20313 
20314    IF xla_accounting_cache_pkg.GetValueChar
20315          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20316          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20317    AND l_bflow_method_code = 'PRIOR_ENTRY'
20318 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20319    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20320          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20321        )
20322    THEN
20323          xla_ae_lines_pkg.BflowUpgEntry
20324            (p_business_method_code    => l_bflow_method_code
20325            ,p_business_class_code     => l_bflow_class_code
20326            ,p_balance_type            => l_balance_type_code);
20327    ELSE
20328       NULL;
20329 -- No business flow processing for business flow method of NONE.
20330    END IF;
20331 
20332    --
20333    -- call analytical criteria
20334    --
20335    
20336    --
20337    -- call description
20338    --
20339    
20340 xla_ae_lines_pkg.SetLineDescription(
20341    p_ae_header_id => l_ae_header_id
20342   ,p_description  => Description_1 (
20343      p_application_id         => p_application_id
20344    , p_ae_header_id           => l_ae_header_id 
20345 , p_source_1 => p_source_1
20346 , p_source_2 => p_source_2
20347 , p_source_3 => p_source_3
20348 , p_source_4 => p_source_4
20349 , p_source_5 => p_source_5
20350    )
20351 );
20352 
20353 
20354    --
20355    -- call ADRs
20356    -- Bug 4922099
20357    --
20358    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20359         (NVL(l_actual_upg_option, 'N') = 'O') OR
20360         (NVL(l_enc_upg_option, 'N') = 'O')
20361       )
20362    THEN
20363    NULL;
20364    --
20365    --
20366    
20367   l_ccid := AcctDerRule_6(
20368            p_application_id           => p_application_id
20369          , p_ae_header_id             => l_ae_header_id 
20370 , p_source_11 => p_source_11
20371          , x_transaction_coa_id       => l_adr_transaction_coa_id
20372          , x_accounting_coa_id        => l_adr_accounting_coa_id
20373          , x_value_type_code          => l_adr_value_type_code
20374          , p_side                     => 'NA'
20375    );
20376 
20377    xla_ae_lines_pkg.set_ccid(
20378     p_code_combination_id          => l_ccid
20379   , p_value_type_code              => l_adr_value_type_code
20380   , p_transaction_coa_id           => l_adr_transaction_coa_id
20381   , p_accounting_coa_id            => l_adr_accounting_coa_id
20382   , p_adr_code                     => 'CST_DEFAULT'
20383   , p_adr_type_code                => 'S'
20384   , p_component_type               => l_component_type
20385   , p_component_code               => l_component_code
20386   , p_component_type_code          => l_component_type_code
20387   , p_component_appl_id            => l_component_appl_id
20388   , p_amb_context_code             => l_amb_context_code
20389   , p_side                         => 'NA'
20390   );
20391 
20392 
20393    --
20394    --
20395    END IF;
20396    --
20397    -- Bug 4922099
20398    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20399           (NVL(l_enc_upg_option, 'N') = 'O')
20400         ) AND
20401         (l_bflow_method_code = 'PRIOR_ENTRY')
20402       )
20403    THEN
20404       IF
20405       --
20406       1 = 2
20407       --
20408       THEN
20409       xla_accounting_err_pkg.build_message
20410                                     (p_appli_s_name            => 'XLA'
20411                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20412                                     ,p_token_1                 => 'LINE_NUMBER'
20413                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20414                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20415                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20416                                                                              l_component_type
20417                                                                             ,l_component_code
20418                                                                             ,l_component_type_code
20419                                                                             ,l_component_appl_id
20420                                                                             ,l_amb_context_code
20421                                                                             ,l_entity_code
20422                                                                             ,l_event_class_code
20423                                                                            )
20424                                     ,p_token_3                 => 'OWNER'
20425                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20426                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20427                                                                           ,p_lookup_code    => l_component_type_code
20428                                                                          )
20429                                     ,p_token_4                 => 'PRODUCT_NAME'
20430                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20431                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20432                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20433                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20434                                     ,p_ae_header_id            =>  NULL
20435                                        );
20436 
20437         IF (C_LEVEL_ERROR>= g_log_level) THEN
20438                  trace
20439                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20440                       ,p_level    => C_LEVEL_ERROR
20441                       ,p_module   => l_log_module);
20442         END IF;
20443       END IF;
20444    END IF;
20445    --
20446    --
20447    ------------------------------------------------------------------------------------------------
20448    -- 4219869 Business Flow
20449    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20450    -- Prior Entry.  Currently, the following code is always generated.
20451    ------------------------------------------------------------------------------------------------
20452    XLA_AE_LINES_PKG.ValidateCurrentLine;
20453 
20454    ------------------------------------------------------------------------------------
20455    -- 4219869 Business Flow
20456    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20457    ------------------------------------------------------------------------------------
20458    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20459 
20460    ----------------------------------------------------------------------------------
20461    -- 4219869 Business Flow
20462    -- Update journal entry status -- Need to generate this within IF <condition>
20463    ----------------------------------------------------------------------------------
20464    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20465          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20466          ,p_balance_type_code => l_balance_type_code
20467          );
20468 
20469    -------------------------------------------------------------------------------------------
20470    -- 4262811 - Generate the Accrual Reversal lines
20471    -------------------------------------------------------------------------------------------
20472    BEGIN
20473       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20474                               (g_array_event(p_event_id).array_value_num('header_index'));
20475       IF l_acc_rev_flag IS NULL THEN
20476          l_acc_rev_flag := 'N';
20477       END IF;
20478    EXCEPTION
20479       WHEN OTHERS THEN
20480          l_acc_rev_flag := 'N';
20481    END;
20482    --
20483    IF (l_acc_rev_flag = 'Y') THEN
20484 
20485        -- 4645092  ------------------------------------------------------------------------------
20486        -- To allow MPA report to determine if it should generate report process
20487        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20488        ------------------------------------------------------------------------------------------
20489 
20490        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20491        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20492    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20493    -- call ADRs
20494    -- Bug 4922099
20495    --
20496    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20497         (NVL(l_actual_upg_option, 'N') = 'O') OR
20498         (NVL(l_enc_upg_option, 'N') = 'O')
20499       )
20500    THEN
20501    NULL;
20502    --
20503    --
20504    
20505   l_ccid := AcctDerRule_6(
20506            p_application_id           => p_application_id
20507          , p_ae_header_id             => l_ae_header_id 
20508 , p_source_11 => p_source_11
20509          , x_transaction_coa_id       => l_adr_transaction_coa_id
20510          , x_accounting_coa_id        => l_adr_accounting_coa_id
20511          , x_value_type_code          => l_adr_value_type_code
20512          , p_side                     => 'NA'
20513    );
20514 
20515    xla_ae_lines_pkg.set_ccid(
20516     p_code_combination_id          => l_ccid
20517   , p_value_type_code              => l_adr_value_type_code
20518   , p_transaction_coa_id           => l_adr_transaction_coa_id
20519   , p_accounting_coa_id            => l_adr_accounting_coa_id
20520   , p_adr_code                     => 'CST_DEFAULT'
20521   , p_adr_type_code                => 'S'
20522   , p_component_type               => l_component_type
20523   , p_component_code               => l_component_code
20524   , p_component_type_code          => l_component_type_code
20525   , p_component_appl_id            => l_component_appl_id
20526   , p_amb_context_code             => l_amb_context_code
20527   , p_side                         => 'NA'
20528   );
20529 
20530 
20531    --
20532    --
20533    END IF;
20534 
20535        --
20536        -- Update the line information that should be overwritten
20537        --
20538        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20539                                          p_header_num   => 1);
20540        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20541 
20542        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20543 
20544        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20545           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20546        END IF;
20547 
20548       --
20549       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20550       --
20551       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20552           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20553       ELSE
20554           ---------------------------------------------------------------------------------------------------
20555           -- 4262811a Switch Sign
20556           ---------------------------------------------------------------------------------------------------
20557           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20558           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20559                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20560           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20561                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20562           -- 5132302
20563           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20564                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20565 
20566       END IF;
20567 
20568       -- 4955764
20569       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20570       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20571 
20572 
20573       XLA_AE_LINES_PKG.ValidateCurrentLine;
20574       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20575 
20576       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20577                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20578                ,p_balance_type_code => l_balance_type_code);
20579 
20580    END IF;
20581 
20582    -----------------------------------------------------------------------------------------
20583    -- 4262811 Multiperiod Accounting
20584    -----------------------------------------------------------------------------------------
20585      -- No MPA option is assigned.
20586 
20587 
20588 END IF;
20589 END IF;
20590 --
20591 
20592 --
20593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20594    trace
20595       (p_msg      => 'END of AcctLineType_62'
20596       ,p_level    => C_LEVEL_PROCEDURE
20597       ,p_module   => l_log_module);
20598 END IF;
20599 --
20600 EXCEPTION
20601   WHEN xla_exceptions_pkg.application_exception THEN
20602       RAISE;
20603   WHEN OTHERS THEN
20604        xla_exceptions_pkg.raise_message
20605            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_62');
20606 END AcctLineType_62;
20607 --
20608 
20609 ---------------------------------------
20610 --
20611 -- PRIVATE FUNCTION
20612 --         AcctLineType_63
20613 --
20614 ---------------------------------------
20615 PROCEDURE AcctLineType_63 (
20616   p_application_id        IN NUMBER
20617  ,p_event_id              IN NUMBER
20618  ,p_calculate_acctd_flag  IN VARCHAR2
20619  ,p_calculate_g_l_flag    IN VARCHAR2
20620  ,p_actual_flag           IN OUT VARCHAR2
20621  ,p_balance_type_code     OUT VARCHAR2
20622  ,p_gain_or_loss_ref      OUT VARCHAR2
20623  
20624 --Cost Management Default Account
20625  , p_source_11            IN NUMBER
20626 --DISTRIBUTION_IDENTIFIER
20627  , p_source_84            IN NUMBER
20628 --Distribution Type
20629  , p_source_85            IN VARCHAR2
20630  , p_source_85_meaning    IN VARCHAR2
20631 --Entered Currency Code
20632  , p_source_88            IN VARCHAR2
20633 --Entered Amount
20634  , p_source_91            IN NUMBER
20635 --Currency Conversion Date
20636  , p_source_92            IN DATE
20637 --Currency Conversion Rate
20638  , p_source_93            IN NUMBER
20639 --Currency Conversion Type
20640  , p_source_94            IN VARCHAR2
20641 --Accounted Amount
20642  , p_source_95            IN NUMBER
20643 --Accounting Line Type
20644  , p_source_97            IN NUMBER
20645 )
20646 IS
20647 
20648 l_component_type              VARCHAR2(80);
20649 l_component_code              VARCHAR2(30);
20650 l_component_type_code         VARCHAR2(1);
20651 l_component_appl_id           INTEGER;
20652 l_amb_context_code            VARCHAR2(30);
20653 l_entity_code                 VARCHAR2(30);
20654 l_event_class_code            VARCHAR2(30);
20655 l_ae_header_id                NUMBER;
20656 l_event_type_code             VARCHAR2(30);
20657 l_line_definition_code        VARCHAR2(30);
20658 l_line_definition_owner_code  VARCHAR2(1);
20659 --
20660 -- adr variables
20661 l_segment                     VARCHAR2(30);
20662 l_ccid                        NUMBER;
20663 l_adr_transaction_coa_id      NUMBER;
20664 l_adr_accounting_coa_id       NUMBER;
20665 l_adr_flexfield_segment_code  VARCHAR2(30);
20666 l_adr_flex_value_set_id       NUMBER;
20667 l_adr_value_type_code         VARCHAR2(30);
20668 l_adr_value_combination_id    NUMBER;
20669 l_adr_value_segment_code      VARCHAR2(30);
20670 
20671 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20672 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20673 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20674 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20675 
20676 -- 4262811 Variables ------------------------------------------------------------------------------------------
20677 l_entered_amt_idx             NUMBER;
20678 l_accted_amt_idx              NUMBER;
20679 l_acc_rev_flag                VARCHAR2(1);
20680 l_accrual_line_num            NUMBER;
20681 l_tmp_amt                     NUMBER;
20682 l_acc_rev_natural_side_code   VARCHAR2(1);
20683 
20684 l_num_entries                 NUMBER;
20685 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20686 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20687 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20688 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20689 l_recog_line_1                NUMBER;
20690 l_recog_line_2                NUMBER;
20691 
20692 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20693 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20694 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20695 
20696 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20697 
20698 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20699 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20700 
20701 ---------------------------------------------------------------------------------------------------------------
20702 
20703 
20704 --
20705 -- bulk performance
20706 --
20707 l_balance_type_code           VARCHAR2(1);
20708 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20709 l_log_module                  VARCHAR2(240);
20710 
20711 --
20712 -- Upgrade strategy
20713 --
20714 l_actual_upg_option           VARCHAR2(1);
20715 l_enc_upg_option           VARCHAR2(1);
20716 
20717 --
20718 BEGIN
20719 --
20720 IF g_log_enabled THEN
20721       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
20722 END IF;
20723 --
20724 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20725 
20726       trace
20727          (p_msg      => 'BEGIN of AcctLineType_63'
20728          ,p_level    => C_LEVEL_PROCEDURE
20729          ,p_module   => l_log_module);
20730 
20731 END IF;
20732 --
20733 l_component_type             := 'AMB_JLT';
20734 l_component_code             := 'COST_OF_GOODS_SOLD';
20735 l_component_type_code        := 'S';
20736 l_component_appl_id          :=  707;
20737 l_amb_context_code           := 'DEFAULT';
20738 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
20739 l_event_class_code           := 'SALES_ORDER';
20740 l_event_type_code            := 'COGS_RECOGNITION';
20741 l_line_definition_owner_code := 'S';
20742 l_line_definition_code       := 'PI_COGS_RECOGNITION';
20743 --
20744 l_balance_type_code          := 'A';
20745 l_segment                     := NULL;
20746 l_ccid                        := NULL;
20747 l_adr_transaction_coa_id      := NULL;
20748 l_adr_accounting_coa_id       := NULL;
20749 l_adr_flexfield_segment_code  := NULL;
20750 l_adr_flex_value_set_id       := NULL;
20751 l_adr_value_type_code         := NULL;
20752 l_adr_value_combination_id    := NULL;
20753 l_adr_value_segment_code      := NULL;
20754 
20755 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20756 l_bflow_class_code           := '';    -- 4219869 Business Flow
20757 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20758 l_budgetary_control_flag     := 'N';
20759 
20760 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20761 l_bflow_applied_to_amt       := NULL; -- 5132302
20762 l_entered_amt_idx            := NULL;          -- 4262811
20763 l_accted_amt_idx             := NULL;          -- 4262811
20764 l_acc_rev_flag               := NULL;          -- 4262811
20765 l_accrual_line_num           := NULL;          -- 4262811
20766 l_tmp_amt                    := NULL;          -- 4262811
20767 --
20768  
20769 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20770     l_balance_type_code <> 'B' THEN
20771 IF NVL(p_source_97,9E125) =  35
20772  THEN 
20773 
20774    --
20775    XLA_AE_LINES_PKG.SetNewLine;
20776 
20777    p_balance_type_code          := l_balance_type_code;
20778    -- set the flag so later we will know whether the gain loss line needs to be created
20779    
20780    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20781      p_actual_flag :='A';
20782    END IF;
20783 
20784    --
20785    -- bulk performance
20786    --
20787    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20788                                       p_header_num   => 0); -- 4262811
20789    --
20790    -- set accounting line options
20791    --
20792    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20793            p_natural_side_code          => 'D'
20794          , p_gain_or_loss_flag          => 'N'
20795          , p_gl_transfer_mode_code      => 'S'
20796          , p_acct_entry_type_code       => 'A'
20797          , p_switch_side_flag           => 'Y'
20798          , p_merge_duplicate_code       => 'N'
20799          );
20800    --
20801    l_acc_rev_natural_side_code := 'C';  -- 4262811
20802    -- 
20803    --
20804    -- set accounting line type info
20805    --
20806    xla_ae_lines_pkg.SetAcctLineType
20807       (p_component_type             => l_component_type
20808       ,p_event_type_code            => l_event_type_code
20809       ,p_line_definition_owner_code => l_line_definition_owner_code
20810       ,p_line_definition_code       => l_line_definition_code
20811       ,p_accounting_line_code       => l_component_code
20812       ,p_accounting_line_type_code  => l_component_type_code
20813       ,p_accounting_line_appl_id    => l_component_appl_id
20814       ,p_amb_context_code           => l_amb_context_code
20815       ,p_entity_code                => l_entity_code
20816       ,p_event_class_code           => l_event_class_code);
20817    --
20818    -- set accounting class
20819    --
20820    xla_ae_lines_pkg.SetAcctClass(
20821            p_accounting_class_code  => 'COST_OF_GOODS_SOLD'
20822          , p_ae_header_id           => l_ae_header_id
20823          );
20824 
20825    --
20826    -- set rounding class
20827    --
20828    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20829                       'COST_OF_GOODS_SOLD';
20830 
20831    --
20832    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20833    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20834    --
20835    -- bulk performance
20836    --
20837    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20838 
20839    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20840       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20841 
20842    -- 4955764
20843    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20844       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20845 
20846    -- 4458381 Public Sector Enh
20847    
20848    --
20849    -- set accounting attributes for the line type
20850    --
20851    l_entered_amt_idx := 3;
20852    l_accted_amt_idx  := 8;
20853    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20854    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20855    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
20856    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20857    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
20858    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20859    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
20860    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20861    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
20862    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20863    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
20864    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20865    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
20866    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20867    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
20868    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20869    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
20870 
20871    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20872    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20873 
20874    ---------------------------------------------------------------------------------------------------------------
20875    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20876    ---------------------------------------------------------------------------------------------------------------
20877    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20878 
20879    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20880    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20881 
20882    IF xla_accounting_cache_pkg.GetValueChar
20883          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20884          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20885    AND l_bflow_method_code = 'PRIOR_ENTRY'
20886 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20887    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20888          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20889        )
20890    THEN
20891          xla_ae_lines_pkg.BflowUpgEntry
20892            (p_business_method_code    => l_bflow_method_code
20893            ,p_business_class_code     => l_bflow_class_code
20894            ,p_balance_type            => l_balance_type_code);
20895    ELSE
20896       NULL;
20897 -- No business flow processing for business flow method of NONE.
20898    END IF;
20899 
20900    --
20901    -- call analytical criteria
20902    --
20903    
20904    --
20905    -- call description
20906    --
20907    -- No description or it is inherited.
20908    --
20909    -- call ADRs
20910    -- Bug 4922099
20911    --
20912    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20913         (NVL(l_actual_upg_option, 'N') = 'O') OR
20914         (NVL(l_enc_upg_option, 'N') = 'O')
20915       )
20916    THEN
20917    NULL;
20918    --
20919    --
20920    
20921   l_ccid := AcctDerRule_6(
20922            p_application_id           => p_application_id
20923          , p_ae_header_id             => l_ae_header_id 
20924 , p_source_11 => p_source_11
20925          , x_transaction_coa_id       => l_adr_transaction_coa_id
20926          , x_accounting_coa_id        => l_adr_accounting_coa_id
20927          , x_value_type_code          => l_adr_value_type_code
20928          , p_side                     => 'NA'
20929    );
20930 
20931    xla_ae_lines_pkg.set_ccid(
20932     p_code_combination_id          => l_ccid
20933   , p_value_type_code              => l_adr_value_type_code
20934   , p_transaction_coa_id           => l_adr_transaction_coa_id
20935   , p_accounting_coa_id            => l_adr_accounting_coa_id
20936   , p_adr_code                     => 'CST_DEFAULT'
20937   , p_adr_type_code                => 'S'
20938   , p_component_type               => l_component_type
20939   , p_component_code               => l_component_code
20940   , p_component_type_code          => l_component_type_code
20941   , p_component_appl_id            => l_component_appl_id
20942   , p_amb_context_code             => l_amb_context_code
20943   , p_side                         => 'NA'
20944   );
20945 
20946 
20947    --
20948    --
20949    END IF;
20950    --
20951    -- Bug 4922099
20952    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20953           (NVL(l_enc_upg_option, 'N') = 'O')
20954         ) AND
20955         (l_bflow_method_code = 'PRIOR_ENTRY')
20956       )
20957    THEN
20958       IF
20959       --
20960       1 = 2
20961       --
20962       THEN
20963       xla_accounting_err_pkg.build_message
20964                                     (p_appli_s_name            => 'XLA'
20965                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20966                                     ,p_token_1                 => 'LINE_NUMBER'
20967                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20968                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20969                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20970                                                                              l_component_type
20971                                                                             ,l_component_code
20972                                                                             ,l_component_type_code
20973                                                                             ,l_component_appl_id
20974                                                                             ,l_amb_context_code
20975                                                                             ,l_entity_code
20976                                                                             ,l_event_class_code
20977                                                                            )
20978                                     ,p_token_3                 => 'OWNER'
20979                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20980                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20981                                                                           ,p_lookup_code    => l_component_type_code
20982                                                                          )
20983                                     ,p_token_4                 => 'PRODUCT_NAME'
20984                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20985                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20986                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20987                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20988                                     ,p_ae_header_id            =>  NULL
20989                                        );
20990 
20991         IF (C_LEVEL_ERROR>= g_log_level) THEN
20992                  trace
20993                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20994                       ,p_level    => C_LEVEL_ERROR
20995                       ,p_module   => l_log_module);
20996         END IF;
20997       END IF;
20998    END IF;
20999    --
21000    --
21001    ------------------------------------------------------------------------------------------------
21002    -- 4219869 Business Flow
21003    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21004    -- Prior Entry.  Currently, the following code is always generated.
21005    ------------------------------------------------------------------------------------------------
21006    XLA_AE_LINES_PKG.ValidateCurrentLine;
21007 
21008    ------------------------------------------------------------------------------------
21009    -- 4219869 Business Flow
21010    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21011    ------------------------------------------------------------------------------------
21012    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21013 
21014    ----------------------------------------------------------------------------------
21015    -- 4219869 Business Flow
21016    -- Update journal entry status -- Need to generate this within IF <condition>
21017    ----------------------------------------------------------------------------------
21018    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21019          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21020          ,p_balance_type_code => l_balance_type_code
21021          );
21022 
21023    -------------------------------------------------------------------------------------------
21024    -- 4262811 - Generate the Accrual Reversal lines
21025    -------------------------------------------------------------------------------------------
21026    BEGIN
21027       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21028                               (g_array_event(p_event_id).array_value_num('header_index'));
21029       IF l_acc_rev_flag IS NULL THEN
21030          l_acc_rev_flag := 'N';
21031       END IF;
21032    EXCEPTION
21033       WHEN OTHERS THEN
21034          l_acc_rev_flag := 'N';
21035    END;
21036    --
21037    IF (l_acc_rev_flag = 'Y') THEN
21038 
21039        -- 4645092  ------------------------------------------------------------------------------
21040        -- To allow MPA report to determine if it should generate report process
21041        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21042        ------------------------------------------------------------------------------------------
21043 
21044        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21045        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21046    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21047    -- call ADRs
21048    -- Bug 4922099
21049    --
21050    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21051         (NVL(l_actual_upg_option, 'N') = 'O') OR
21052         (NVL(l_enc_upg_option, 'N') = 'O')
21053       )
21054    THEN
21055    NULL;
21056    --
21057    --
21058    
21059   l_ccid := AcctDerRule_6(
21060            p_application_id           => p_application_id
21061          , p_ae_header_id             => l_ae_header_id 
21062 , p_source_11 => p_source_11
21063          , x_transaction_coa_id       => l_adr_transaction_coa_id
21064          , x_accounting_coa_id        => l_adr_accounting_coa_id
21065          , x_value_type_code          => l_adr_value_type_code
21066          , p_side                     => 'NA'
21067    );
21068 
21069    xla_ae_lines_pkg.set_ccid(
21070     p_code_combination_id          => l_ccid
21071   , p_value_type_code              => l_adr_value_type_code
21072   , p_transaction_coa_id           => l_adr_transaction_coa_id
21073   , p_accounting_coa_id            => l_adr_accounting_coa_id
21074   , p_adr_code                     => 'CST_DEFAULT'
21075   , p_adr_type_code                => 'S'
21076   , p_component_type               => l_component_type
21077   , p_component_code               => l_component_code
21078   , p_component_type_code          => l_component_type_code
21079   , p_component_appl_id            => l_component_appl_id
21080   , p_amb_context_code             => l_amb_context_code
21081   , p_side                         => 'NA'
21082   );
21083 
21084 
21085    --
21086    --
21087    END IF;
21088 
21089        --
21090        -- Update the line information that should be overwritten
21091        --
21092        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21093                                          p_header_num   => 1);
21094        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21095 
21096        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21097 
21098        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21099           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21100        END IF;
21101 
21102       --
21103       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21104       --
21105       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21106           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21107       ELSE
21108           ---------------------------------------------------------------------------------------------------
21109           -- 4262811a Switch Sign
21110           ---------------------------------------------------------------------------------------------------
21111           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21112           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21113                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21114           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21115                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21116           -- 5132302
21117           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21118                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21119 
21120       END IF;
21121 
21122       -- 4955764
21123       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21124       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21125 
21126 
21127       XLA_AE_LINES_PKG.ValidateCurrentLine;
21128       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21129 
21130       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21131                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21132                ,p_balance_type_code => l_balance_type_code);
21133 
21134    END IF;
21135 
21136    -----------------------------------------------------------------------------------------
21137    -- 4262811 Multiperiod Accounting
21138    -----------------------------------------------------------------------------------------
21139      -- No MPA option is assigned.
21140 
21141 
21142 END IF;
21143 END IF;
21144 --
21145 
21146 --
21147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21148    trace
21149       (p_msg      => 'END of AcctLineType_63'
21150       ,p_level    => C_LEVEL_PROCEDURE
21151       ,p_module   => l_log_module);
21152 END IF;
21153 --
21154 EXCEPTION
21155   WHEN xla_exceptions_pkg.application_exception THEN
21156       RAISE;
21157   WHEN OTHERS THEN
21158        xla_exceptions_pkg.raise_message
21159            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_63');
21160 END AcctLineType_63;
21161 --
21162 
21163 ---------------------------------------
21164 --
21165 -- PRIVATE FUNCTION
21166 --         AcctLineType_64
21167 --
21168 ---------------------------------------
21169 PROCEDURE AcctLineType_64 (
21170   p_application_id        IN NUMBER
21171  ,p_event_id              IN NUMBER
21172  ,p_calculate_acctd_flag  IN VARCHAR2
21173  ,p_calculate_g_l_flag    IN VARCHAR2
21174  ,p_actual_flag           IN OUT VARCHAR2
21175  ,p_balance_type_code     OUT VARCHAR2
21176  ,p_gain_or_loss_ref      OUT VARCHAR2
21177  
21178 --TRANSACTION_ID
21179  , p_source_1            IN NUMBER
21180 --Item Concatenated Segments
21181  , p_source_2            IN VARCHAR2
21182 --Transaction Quantity
21183  , p_source_3            IN NUMBER
21184 --Transaction Unit of Measure Code
21185  , p_source_4            IN VARCHAR2
21186 --Inventory Transaction Type Description
21187  , p_source_5            IN VARCHAR2
21188 --Cost Management Default Account
21189  , p_source_11            IN NUMBER
21190 --DISTRIBUTION_IDENTIFIER
21191  , p_source_84            IN NUMBER
21192 --Distribution Type
21193  , p_source_85            IN VARCHAR2
21194  , p_source_85_meaning    IN VARCHAR2
21195 --Entered Currency Code
21196  , p_source_88            IN VARCHAR2
21197 --Entered Amount
21198  , p_source_91            IN NUMBER
21199 --Currency Conversion Date
21200  , p_source_92            IN DATE
21201 --Currency Conversion Rate
21202  , p_source_93            IN NUMBER
21203 --Currency Conversion Type
21204  , p_source_94            IN VARCHAR2
21205 --Accounted Amount
21206  , p_source_95            IN NUMBER
21207 --Accounting Line Type
21208  , p_source_97            IN NUMBER
21209 )
21210 IS
21211 
21212 l_component_type              VARCHAR2(80);
21213 l_component_code              VARCHAR2(30);
21214 l_component_type_code         VARCHAR2(1);
21215 l_component_appl_id           INTEGER;
21216 l_amb_context_code            VARCHAR2(30);
21217 l_entity_code                 VARCHAR2(30);
21218 l_event_class_code            VARCHAR2(30);
21219 l_ae_header_id                NUMBER;
21220 l_event_type_code             VARCHAR2(30);
21221 l_line_definition_code        VARCHAR2(30);
21222 l_line_definition_owner_code  VARCHAR2(1);
21223 --
21224 -- adr variables
21225 l_segment                     VARCHAR2(30);
21226 l_ccid                        NUMBER;
21227 l_adr_transaction_coa_id      NUMBER;
21228 l_adr_accounting_coa_id       NUMBER;
21229 l_adr_flexfield_segment_code  VARCHAR2(30);
21230 l_adr_flex_value_set_id       NUMBER;
21231 l_adr_value_type_code         VARCHAR2(30);
21232 l_adr_value_combination_id    NUMBER;
21233 l_adr_value_segment_code      VARCHAR2(30);
21234 
21235 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21236 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21237 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21238 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21239 
21240 -- 4262811 Variables ------------------------------------------------------------------------------------------
21241 l_entered_amt_idx             NUMBER;
21242 l_accted_amt_idx              NUMBER;
21243 l_acc_rev_flag                VARCHAR2(1);
21244 l_accrual_line_num            NUMBER;
21245 l_tmp_amt                     NUMBER;
21246 l_acc_rev_natural_side_code   VARCHAR2(1);
21247 
21248 l_num_entries                 NUMBER;
21249 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21250 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21251 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21252 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21253 l_recog_line_1                NUMBER;
21254 l_recog_line_2                NUMBER;
21255 
21256 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21257 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21258 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21259 
21260 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21261 
21262 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21263 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21264 
21265 ---------------------------------------------------------------------------------------------------------------
21266 
21267 
21268 --
21269 -- bulk performance
21270 --
21271 l_balance_type_code           VARCHAR2(1);
21272 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21273 l_log_module                  VARCHAR2(240);
21274 
21275 --
21276 -- Upgrade strategy
21277 --
21278 l_actual_upg_option           VARCHAR2(1);
21279 l_enc_upg_option           VARCHAR2(1);
21280 
21281 --
21282 BEGIN
21283 --
21284 IF g_log_enabled THEN
21285       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
21286 END IF;
21287 --
21288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21289 
21290       trace
21291          (p_msg      => 'BEGIN of AcctLineType_64'
21292          ,p_level    => C_LEVEL_PROCEDURE
21293          ,p_module   => l_log_module);
21294 
21295 END IF;
21296 --
21297 l_component_type             := 'AMB_JLT';
21298 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
21299 l_component_type_code        := 'S';
21300 l_component_appl_id          :=  707;
21301 l_amb_context_code           := 'DEFAULT';
21302 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
21303 l_event_class_code           := 'MTL_COST_UPD';
21304 l_event_type_code            := 'LAYER_COST_UPD';
21305 l_line_definition_owner_code := 'S';
21306 l_line_definition_code       := 'PI_LAYER_COST_UPDATE';
21307 --
21308 l_balance_type_code          := 'A';
21309 l_segment                     := NULL;
21310 l_ccid                        := NULL;
21311 l_adr_transaction_coa_id      := NULL;
21312 l_adr_accounting_coa_id       := NULL;
21313 l_adr_flexfield_segment_code  := NULL;
21314 l_adr_flex_value_set_id       := NULL;
21315 l_adr_value_type_code         := NULL;
21316 l_adr_value_combination_id    := NULL;
21317 l_adr_value_segment_code      := NULL;
21318 
21319 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21320 l_bflow_class_code           := '';    -- 4219869 Business Flow
21321 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21322 l_budgetary_control_flag     := 'N';
21323 
21324 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21325 l_bflow_applied_to_amt       := NULL; -- 5132302
21326 l_entered_amt_idx            := NULL;          -- 4262811
21327 l_accted_amt_idx             := NULL;          -- 4262811
21328 l_acc_rev_flag               := NULL;          -- 4262811
21329 l_accrual_line_num           := NULL;          -- 4262811
21330 l_tmp_amt                    := NULL;          -- 4262811
21331 --
21332  
21333 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21334     l_balance_type_code <> 'B' THEN
21335 IF NVL(p_source_97,9E125) =  2
21336  THEN 
21337 
21338    --
21339    XLA_AE_LINES_PKG.SetNewLine;
21340 
21341    p_balance_type_code          := l_balance_type_code;
21342    -- set the flag so later we will know whether the gain loss line needs to be created
21343    
21344    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21345      p_actual_flag :='A';
21346    END IF;
21347 
21348    --
21349    -- bulk performance
21350    --
21351    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21352                                       p_header_num   => 0); -- 4262811
21353    --
21354    -- set accounting line options
21355    --
21356    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21357            p_natural_side_code          => 'D'
21358          , p_gain_or_loss_flag          => 'N'
21359          , p_gl_transfer_mode_code      => 'S'
21360          , p_acct_entry_type_code       => 'A'
21361          , p_switch_side_flag           => 'Y'
21362          , p_merge_duplicate_code       => 'N'
21363          );
21364    --
21365    l_acc_rev_natural_side_code := 'C';  -- 4262811
21366    -- 
21367    --
21368    -- set accounting line type info
21369    --
21370    xla_ae_lines_pkg.SetAcctLineType
21371       (p_component_type             => l_component_type
21372       ,p_event_type_code            => l_event_type_code
21373       ,p_line_definition_owner_code => l_line_definition_owner_code
21374       ,p_line_definition_code       => l_line_definition_code
21375       ,p_accounting_line_code       => l_component_code
21376       ,p_accounting_line_type_code  => l_component_type_code
21377       ,p_accounting_line_appl_id    => l_component_appl_id
21378       ,p_amb_context_code           => l_amb_context_code
21379       ,p_entity_code                => l_entity_code
21380       ,p_event_class_code           => l_event_class_code);
21381    --
21382    -- set accounting class
21383    --
21384    xla_ae_lines_pkg.SetAcctClass(
21385            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
21386          , p_ae_header_id           => l_ae_header_id
21387          );
21388 
21389    --
21390    -- set rounding class
21391    --
21392    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21393                       'COST_UPDATE_ADJUSTMENT';
21394 
21395    --
21396    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21397    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21398    --
21399    -- bulk performance
21400    --
21401    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21402 
21403    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21404       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21405 
21406    -- 4955764
21407    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21408       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21409 
21410    -- 4458381 Public Sector Enh
21411    
21412    --
21413    -- set accounting attributes for the line type
21414    --
21415    l_entered_amt_idx := 3;
21416    l_accted_amt_idx  := 8;
21417    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21418    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21419    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
21420    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21421    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
21422    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21423    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
21424    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21425    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
21426    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21427    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
21428    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21429    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
21430    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21431    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
21432    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21433    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
21434 
21435    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21436    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21437 
21438    ---------------------------------------------------------------------------------------------------------------
21439    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21440    ---------------------------------------------------------------------------------------------------------------
21441    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21442 
21443    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21444    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21445 
21446    IF xla_accounting_cache_pkg.GetValueChar
21447          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21448          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21449    AND l_bflow_method_code = 'PRIOR_ENTRY'
21450 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21451    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21452          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21453        )
21454    THEN
21455          xla_ae_lines_pkg.BflowUpgEntry
21456            (p_business_method_code    => l_bflow_method_code
21457            ,p_business_class_code     => l_bflow_class_code
21458            ,p_balance_type            => l_balance_type_code);
21459    ELSE
21460       NULL;
21461 -- No business flow processing for business flow method of NONE.
21462    END IF;
21463 
21464    --
21465    -- call analytical criteria
21466    --
21467    
21468    --
21469    -- call description
21470    --
21471    
21472 xla_ae_lines_pkg.SetLineDescription(
21473    p_ae_header_id => l_ae_header_id
21474   ,p_description  => Description_1 (
21475      p_application_id         => p_application_id
21476    , p_ae_header_id           => l_ae_header_id 
21477 , p_source_1 => p_source_1
21478 , p_source_2 => p_source_2
21479 , p_source_3 => p_source_3
21480 , p_source_4 => p_source_4
21481 , p_source_5 => p_source_5
21482    )
21483 );
21484 
21485 
21486    --
21487    -- call ADRs
21488    -- Bug 4922099
21489    --
21490    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21491         (NVL(l_actual_upg_option, 'N') = 'O') OR
21492         (NVL(l_enc_upg_option, 'N') = 'O')
21493       )
21494    THEN
21495    NULL;
21496    --
21497    --
21498    
21499   l_ccid := AcctDerRule_6(
21500            p_application_id           => p_application_id
21501          , p_ae_header_id             => l_ae_header_id 
21502 , p_source_11 => p_source_11
21503          , x_transaction_coa_id       => l_adr_transaction_coa_id
21504          , x_accounting_coa_id        => l_adr_accounting_coa_id
21505          , x_value_type_code          => l_adr_value_type_code
21506          , p_side                     => 'NA'
21507    );
21508 
21509    xla_ae_lines_pkg.set_ccid(
21510     p_code_combination_id          => l_ccid
21511   , p_value_type_code              => l_adr_value_type_code
21512   , p_transaction_coa_id           => l_adr_transaction_coa_id
21513   , p_accounting_coa_id            => l_adr_accounting_coa_id
21514   , p_adr_code                     => 'CST_DEFAULT'
21515   , p_adr_type_code                => 'S'
21516   , p_component_type               => l_component_type
21517   , p_component_code               => l_component_code
21518   , p_component_type_code          => l_component_type_code
21519   , p_component_appl_id            => l_component_appl_id
21520   , p_amb_context_code             => l_amb_context_code
21521   , p_side                         => 'NA'
21522   );
21523 
21524 
21525    --
21526    --
21527    END IF;
21528    --
21529    -- Bug 4922099
21530    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21531           (NVL(l_enc_upg_option, 'N') = 'O')
21532         ) AND
21533         (l_bflow_method_code = 'PRIOR_ENTRY')
21534       )
21535    THEN
21536       IF
21537       --
21538       1 = 2
21539       --
21540       THEN
21541       xla_accounting_err_pkg.build_message
21542                                     (p_appli_s_name            => 'XLA'
21543                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21544                                     ,p_token_1                 => 'LINE_NUMBER'
21545                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21546                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21547                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21548                                                                              l_component_type
21549                                                                             ,l_component_code
21550                                                                             ,l_component_type_code
21551                                                                             ,l_component_appl_id
21552                                                                             ,l_amb_context_code
21553                                                                             ,l_entity_code
21554                                                                             ,l_event_class_code
21555                                                                            )
21556                                     ,p_token_3                 => 'OWNER'
21557                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21558                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21559                                                                           ,p_lookup_code    => l_component_type_code
21560                                                                          )
21561                                     ,p_token_4                 => 'PRODUCT_NAME'
21562                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21563                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21564                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21565                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21566                                     ,p_ae_header_id            =>  NULL
21567                                        );
21568 
21569         IF (C_LEVEL_ERROR>= g_log_level) THEN
21570                  trace
21571                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21572                       ,p_level    => C_LEVEL_ERROR
21573                       ,p_module   => l_log_module);
21574         END IF;
21575       END IF;
21576    END IF;
21577    --
21578    --
21579    ------------------------------------------------------------------------------------------------
21580    -- 4219869 Business Flow
21581    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21582    -- Prior Entry.  Currently, the following code is always generated.
21583    ------------------------------------------------------------------------------------------------
21584    XLA_AE_LINES_PKG.ValidateCurrentLine;
21585 
21586    ------------------------------------------------------------------------------------
21587    -- 4219869 Business Flow
21588    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21589    ------------------------------------------------------------------------------------
21590    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21591 
21592    ----------------------------------------------------------------------------------
21593    -- 4219869 Business Flow
21594    -- Update journal entry status -- Need to generate this within IF <condition>
21595    ----------------------------------------------------------------------------------
21596    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21597          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21598          ,p_balance_type_code => l_balance_type_code
21599          );
21600 
21601    -------------------------------------------------------------------------------------------
21602    -- 4262811 - Generate the Accrual Reversal lines
21603    -------------------------------------------------------------------------------------------
21604    BEGIN
21605       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21606                               (g_array_event(p_event_id).array_value_num('header_index'));
21607       IF l_acc_rev_flag IS NULL THEN
21608          l_acc_rev_flag := 'N';
21609       END IF;
21610    EXCEPTION
21611       WHEN OTHERS THEN
21612          l_acc_rev_flag := 'N';
21613    END;
21614    --
21615    IF (l_acc_rev_flag = 'Y') THEN
21616 
21617        -- 4645092  ------------------------------------------------------------------------------
21618        -- To allow MPA report to determine if it should generate report process
21619        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21620        ------------------------------------------------------------------------------------------
21621 
21622        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21623        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21624    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21625    -- call ADRs
21626    -- Bug 4922099
21627    --
21628    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21629         (NVL(l_actual_upg_option, 'N') = 'O') OR
21630         (NVL(l_enc_upg_option, 'N') = 'O')
21631       )
21632    THEN
21633    NULL;
21634    --
21635    --
21636    
21637   l_ccid := AcctDerRule_6(
21638            p_application_id           => p_application_id
21639          , p_ae_header_id             => l_ae_header_id 
21640 , p_source_11 => p_source_11
21641          , x_transaction_coa_id       => l_adr_transaction_coa_id
21642          , x_accounting_coa_id        => l_adr_accounting_coa_id
21643          , x_value_type_code          => l_adr_value_type_code
21644          , p_side                     => 'NA'
21645    );
21646 
21647    xla_ae_lines_pkg.set_ccid(
21648     p_code_combination_id          => l_ccid
21649   , p_value_type_code              => l_adr_value_type_code
21650   , p_transaction_coa_id           => l_adr_transaction_coa_id
21651   , p_accounting_coa_id            => l_adr_accounting_coa_id
21652   , p_adr_code                     => 'CST_DEFAULT'
21653   , p_adr_type_code                => 'S'
21654   , p_component_type               => l_component_type
21655   , p_component_code               => l_component_code
21656   , p_component_type_code          => l_component_type_code
21657   , p_component_appl_id            => l_component_appl_id
21658   , p_amb_context_code             => l_amb_context_code
21659   , p_side                         => 'NA'
21660   );
21661 
21662 
21663    --
21664    --
21665    END IF;
21666 
21667        --
21668        -- Update the line information that should be overwritten
21669        --
21670        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21671                                          p_header_num   => 1);
21672        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21673 
21674        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21675 
21676        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21677           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21678        END IF;
21679 
21680       --
21681       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21682       --
21683       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21684           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21685       ELSE
21686           ---------------------------------------------------------------------------------------------------
21687           -- 4262811a Switch Sign
21688           ---------------------------------------------------------------------------------------------------
21689           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21690           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21691                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21692           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21693                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21694           -- 5132302
21695           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21696                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21697 
21698       END IF;
21699 
21700       -- 4955764
21701       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21702       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21703 
21704 
21705       XLA_AE_LINES_PKG.ValidateCurrentLine;
21706       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21707 
21708       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21709                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21710                ,p_balance_type_code => l_balance_type_code);
21711 
21712    END IF;
21713 
21714    -----------------------------------------------------------------------------------------
21715    -- 4262811 Multiperiod Accounting
21716    -----------------------------------------------------------------------------------------
21717      -- No MPA option is assigned.
21718 
21719 
21720 END IF;
21721 END IF;
21722 --
21723 
21724 --
21725 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21726    trace
21727       (p_msg      => 'END of AcctLineType_64'
21728       ,p_level    => C_LEVEL_PROCEDURE
21729       ,p_module   => l_log_module);
21730 END IF;
21731 --
21732 EXCEPTION
21733   WHEN xla_exceptions_pkg.application_exception THEN
21734       RAISE;
21735   WHEN OTHERS THEN
21736        xla_exceptions_pkg.raise_message
21737            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_64');
21738 END AcctLineType_64;
21739 --
21740 
21741 ---------------------------------------
21742 --
21743 -- PRIVATE FUNCTION
21744 --         AcctLineType_65
21745 --
21746 ---------------------------------------
21747 PROCEDURE AcctLineType_65 (
21748   p_application_id        IN NUMBER
21749  ,p_event_id              IN NUMBER
21750  ,p_calculate_acctd_flag  IN VARCHAR2
21751  ,p_calculate_g_l_flag    IN VARCHAR2
21752  ,p_actual_flag           IN OUT VARCHAR2
21753  ,p_balance_type_code     OUT VARCHAR2
21754  ,p_gain_or_loss_ref      OUT VARCHAR2
21755  
21756 --TRANSACTION_ID
21757  , p_source_1            IN NUMBER
21758 --Item Concatenated Segments
21759  , p_source_2            IN VARCHAR2
21760 --Transaction Quantity
21761  , p_source_3            IN NUMBER
21762 --Transaction Unit of Measure Code
21763  , p_source_4            IN VARCHAR2
21764 --Inventory Transaction Type Description
21765  , p_source_5            IN VARCHAR2
21766 --Cost Management Default Account
21767  , p_source_11            IN NUMBER
21768 --DISTRIBUTION_IDENTIFIER
21769  , p_source_84            IN NUMBER
21770 --Distribution Type
21771  , p_source_85            IN VARCHAR2
21772  , p_source_85_meaning    IN VARCHAR2
21773 --Entered Currency Code
21774  , p_source_88            IN VARCHAR2
21775 --Entered Amount
21776  , p_source_91            IN NUMBER
21777 --Currency Conversion Date
21778  , p_source_92            IN DATE
21779 --Currency Conversion Rate
21780  , p_source_93            IN NUMBER
21781 --Currency Conversion Type
21782  , p_source_94            IN VARCHAR2
21783 --Accounted Amount
21784  , p_source_95            IN NUMBER
21785 --Accounting Line Type
21786  , p_source_97            IN NUMBER
21787 )
21788 IS
21789 
21790 l_component_type              VARCHAR2(80);
21791 l_component_code              VARCHAR2(30);
21792 l_component_type_code         VARCHAR2(1);
21793 l_component_appl_id           INTEGER;
21794 l_amb_context_code            VARCHAR2(30);
21795 l_entity_code                 VARCHAR2(30);
21796 l_event_class_code            VARCHAR2(30);
21797 l_ae_header_id                NUMBER;
21798 l_event_type_code             VARCHAR2(30);
21799 l_line_definition_code        VARCHAR2(30);
21800 l_line_definition_owner_code  VARCHAR2(1);
21801 --
21802 -- adr variables
21803 l_segment                     VARCHAR2(30);
21804 l_ccid                        NUMBER;
21805 l_adr_transaction_coa_id      NUMBER;
21806 l_adr_accounting_coa_id       NUMBER;
21807 l_adr_flexfield_segment_code  VARCHAR2(30);
21808 l_adr_flex_value_set_id       NUMBER;
21809 l_adr_value_type_code         VARCHAR2(30);
21810 l_adr_value_combination_id    NUMBER;
21811 l_adr_value_segment_code      VARCHAR2(30);
21812 
21813 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21814 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21815 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21816 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21817 
21818 -- 4262811 Variables ------------------------------------------------------------------------------------------
21819 l_entered_amt_idx             NUMBER;
21820 l_accted_amt_idx              NUMBER;
21821 l_acc_rev_flag                VARCHAR2(1);
21822 l_accrual_line_num            NUMBER;
21823 l_tmp_amt                     NUMBER;
21824 l_acc_rev_natural_side_code   VARCHAR2(1);
21825 
21826 l_num_entries                 NUMBER;
21827 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21828 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21829 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21830 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21831 l_recog_line_1                NUMBER;
21832 l_recog_line_2                NUMBER;
21833 
21834 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21835 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21836 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21837 
21838 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21839 
21840 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21841 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21842 
21843 ---------------------------------------------------------------------------------------------------------------
21844 
21845 
21846 --
21847 -- bulk performance
21848 --
21849 l_balance_type_code           VARCHAR2(1);
21850 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21851 l_log_module                  VARCHAR2(240);
21852 
21853 --
21854 -- Upgrade strategy
21855 --
21856 l_actual_upg_option           VARCHAR2(1);
21857 l_enc_upg_option           VARCHAR2(1);
21858 
21859 --
21860 BEGIN
21861 --
21862 IF g_log_enabled THEN
21863       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
21864 END IF;
21865 --
21866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21867 
21868       trace
21869          (p_msg      => 'BEGIN of AcctLineType_65'
21870          ,p_level    => C_LEVEL_PROCEDURE
21871          ,p_module   => l_log_module);
21872 
21873 END IF;
21874 --
21875 l_component_type             := 'AMB_JLT';
21876 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
21877 l_component_type_code        := 'S';
21878 l_component_appl_id          :=  707;
21879 l_amb_context_code           := 'DEFAULT';
21880 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
21881 l_event_class_code           := 'SALES_ORDER';
21882 l_event_type_code            := 'LOG_RMA_RCPT';
21883 l_line_definition_owner_code := 'S';
21884 l_line_definition_code       := 'PI_LOG_RMA_RCPT';
21885 --
21886 l_balance_type_code          := 'A';
21887 l_segment                     := NULL;
21888 l_ccid                        := NULL;
21889 l_adr_transaction_coa_id      := NULL;
21890 l_adr_accounting_coa_id       := NULL;
21891 l_adr_flexfield_segment_code  := NULL;
21892 l_adr_flex_value_set_id       := NULL;
21893 l_adr_value_type_code         := NULL;
21894 l_adr_value_combination_id    := NULL;
21895 l_adr_value_segment_code      := NULL;
21896 
21897 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21898 l_bflow_class_code           := '';    -- 4219869 Business Flow
21899 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21900 l_budgetary_control_flag     := 'N';
21901 
21902 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21903 l_bflow_applied_to_amt       := NULL; -- 5132302
21904 l_entered_amt_idx            := NULL;          -- 4262811
21905 l_accted_amt_idx             := NULL;          -- 4262811
21906 l_acc_rev_flag               := NULL;          -- 4262811
21907 l_accrual_line_num           := NULL;          -- 4262811
21908 l_tmp_amt                    := NULL;          -- 4262811
21909 --
21910  
21911 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21912     l_balance_type_code <> 'B' THEN
21913 IF NVL(p_source_97,9E125) =  37
21914  THEN 
21915 
21916    --
21917    XLA_AE_LINES_PKG.SetNewLine;
21918 
21919    p_balance_type_code          := l_balance_type_code;
21920    -- set the flag so later we will know whether the gain loss line needs to be created
21921    
21922    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21923      p_actual_flag :='A';
21924    END IF;
21925 
21926    --
21927    -- bulk performance
21928    --
21929    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21930                                       p_header_num   => 0); -- 4262811
21931    --
21932    -- set accounting line options
21933    --
21934    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21935            p_natural_side_code          => 'D'
21936          , p_gain_or_loss_flag          => 'N'
21937          , p_gl_transfer_mode_code      => 'S'
21938          , p_acct_entry_type_code       => 'A'
21939          , p_switch_side_flag           => 'Y'
21940          , p_merge_duplicate_code       => 'N'
21941          );
21942    --
21943    l_acc_rev_natural_side_code := 'C';  -- 4262811
21944    -- 
21945    --
21946    -- set accounting line type info
21947    --
21948    xla_ae_lines_pkg.SetAcctLineType
21949       (p_component_type             => l_component_type
21950       ,p_event_type_code            => l_event_type_code
21951       ,p_line_definition_owner_code => l_line_definition_owner_code
21952       ,p_line_definition_code       => l_line_definition_code
21953       ,p_accounting_line_code       => l_component_code
21954       ,p_accounting_line_type_code  => l_component_type_code
21955       ,p_accounting_line_appl_id    => l_component_appl_id
21956       ,p_amb_context_code           => l_amb_context_code
21957       ,p_entity_code                => l_entity_code
21958       ,p_event_class_code           => l_event_class_code);
21959    --
21960    -- set accounting class
21961    --
21962    xla_ae_lines_pkg.SetAcctClass(
21963            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
21964          , p_ae_header_id           => l_ae_header_id
21965          );
21966 
21967    --
21968    -- set rounding class
21969    --
21970    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21971                       'COST_UPDATE_ADJUSTMENT';
21972 
21973    --
21974    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21975    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21976    --
21977    -- bulk performance
21978    --
21979    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21980 
21981    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21982       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21983 
21984    -- 4955764
21985    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21986       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21987 
21988    -- 4458381 Public Sector Enh
21989    
21990    --
21991    -- set accounting attributes for the line type
21992    --
21993    l_entered_amt_idx := 3;
21994    l_accted_amt_idx  := 8;
21995    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21996    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21997    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
21998    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21999    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
22000    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22001    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
22002    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22003    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
22004    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22005    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
22006    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22007    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
22008    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22009    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
22010    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22011    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
22012 
22013    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22014    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22015 
22016    ---------------------------------------------------------------------------------------------------------------
22017    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22018    ---------------------------------------------------------------------------------------------------------------
22019    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22020 
22021    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22022    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22023 
22024    IF xla_accounting_cache_pkg.GetValueChar
22025          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22026          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22027    AND l_bflow_method_code = 'PRIOR_ENTRY'
22028 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22029    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22030          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22031        )
22032    THEN
22033          xla_ae_lines_pkg.BflowUpgEntry
22034            (p_business_method_code    => l_bflow_method_code
22035            ,p_business_class_code     => l_bflow_class_code
22036            ,p_balance_type            => l_balance_type_code);
22037    ELSE
22038       NULL;
22039 -- No business flow processing for business flow method of NONE.
22040    END IF;
22041 
22042    --
22043    -- call analytical criteria
22044    --
22045    
22046    --
22047    -- call description
22048    --
22049    
22050 xla_ae_lines_pkg.SetLineDescription(
22051    p_ae_header_id => l_ae_header_id
22052   ,p_description  => Description_1 (
22053      p_application_id         => p_application_id
22054    , p_ae_header_id           => l_ae_header_id 
22055 , p_source_1 => p_source_1
22056 , p_source_2 => p_source_2
22057 , p_source_3 => p_source_3
22058 , p_source_4 => p_source_4
22059 , p_source_5 => p_source_5
22060    )
22061 );
22062 
22063 
22064    --
22065    -- call ADRs
22066    -- Bug 4922099
22067    --
22068    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22069         (NVL(l_actual_upg_option, 'N') = 'O') OR
22070         (NVL(l_enc_upg_option, 'N') = 'O')
22071       )
22072    THEN
22073    NULL;
22074    --
22075    --
22076    
22077   l_ccid := AcctDerRule_6(
22078            p_application_id           => p_application_id
22079          , p_ae_header_id             => l_ae_header_id 
22080 , p_source_11 => p_source_11
22081          , x_transaction_coa_id       => l_adr_transaction_coa_id
22082          , x_accounting_coa_id        => l_adr_accounting_coa_id
22083          , x_value_type_code          => l_adr_value_type_code
22084          , p_side                     => 'NA'
22085    );
22086 
22087    xla_ae_lines_pkg.set_ccid(
22088     p_code_combination_id          => l_ccid
22089   , p_value_type_code              => l_adr_value_type_code
22090   , p_transaction_coa_id           => l_adr_transaction_coa_id
22091   , p_accounting_coa_id            => l_adr_accounting_coa_id
22092   , p_adr_code                     => 'CST_DEFAULT'
22093   , p_adr_type_code                => 'S'
22094   , p_component_type               => l_component_type
22095   , p_component_code               => l_component_code
22096   , p_component_type_code          => l_component_type_code
22097   , p_component_appl_id            => l_component_appl_id
22098   , p_amb_context_code             => l_amb_context_code
22099   , p_side                         => 'NA'
22100   );
22101 
22102 
22103    --
22104    --
22105    END IF;
22106    --
22107    -- Bug 4922099
22108    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22109           (NVL(l_enc_upg_option, 'N') = 'O')
22110         ) AND
22111         (l_bflow_method_code = 'PRIOR_ENTRY')
22112       )
22113    THEN
22114       IF
22115       --
22116       1 = 2
22117       --
22118       THEN
22119       xla_accounting_err_pkg.build_message
22120                                     (p_appli_s_name            => 'XLA'
22121                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22122                                     ,p_token_1                 => 'LINE_NUMBER'
22123                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22124                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22125                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22126                                                                              l_component_type
22127                                                                             ,l_component_code
22128                                                                             ,l_component_type_code
22129                                                                             ,l_component_appl_id
22130                                                                             ,l_amb_context_code
22131                                                                             ,l_entity_code
22132                                                                             ,l_event_class_code
22133                                                                            )
22134                                     ,p_token_3                 => 'OWNER'
22135                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22136                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22137                                                                           ,p_lookup_code    => l_component_type_code
22138                                                                          )
22139                                     ,p_token_4                 => 'PRODUCT_NAME'
22140                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22141                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22142                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22143                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22144                                     ,p_ae_header_id            =>  NULL
22145                                        );
22146 
22147         IF (C_LEVEL_ERROR>= g_log_level) THEN
22148                  trace
22149                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22150                       ,p_level    => C_LEVEL_ERROR
22151                       ,p_module   => l_log_module);
22152         END IF;
22153       END IF;
22154    END IF;
22155    --
22156    --
22157    ------------------------------------------------------------------------------------------------
22158    -- 4219869 Business Flow
22159    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22160    -- Prior Entry.  Currently, the following code is always generated.
22161    ------------------------------------------------------------------------------------------------
22162    XLA_AE_LINES_PKG.ValidateCurrentLine;
22163 
22164    ------------------------------------------------------------------------------------
22165    -- 4219869 Business Flow
22166    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22167    ------------------------------------------------------------------------------------
22168    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22169 
22170    ----------------------------------------------------------------------------------
22171    -- 4219869 Business Flow
22172    -- Update journal entry status -- Need to generate this within IF <condition>
22173    ----------------------------------------------------------------------------------
22174    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22175          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22176          ,p_balance_type_code => l_balance_type_code
22177          );
22178 
22179    -------------------------------------------------------------------------------------------
22180    -- 4262811 - Generate the Accrual Reversal lines
22181    -------------------------------------------------------------------------------------------
22182    BEGIN
22183       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22184                               (g_array_event(p_event_id).array_value_num('header_index'));
22185       IF l_acc_rev_flag IS NULL THEN
22186          l_acc_rev_flag := 'N';
22187       END IF;
22188    EXCEPTION
22189       WHEN OTHERS THEN
22190          l_acc_rev_flag := 'N';
22191    END;
22192    --
22193    IF (l_acc_rev_flag = 'Y') THEN
22194 
22195        -- 4645092  ------------------------------------------------------------------------------
22196        -- To allow MPA report to determine if it should generate report process
22197        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22198        ------------------------------------------------------------------------------------------
22199 
22200        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22201        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22202    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22203    -- call ADRs
22204    -- Bug 4922099
22205    --
22206    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22207         (NVL(l_actual_upg_option, 'N') = 'O') OR
22208         (NVL(l_enc_upg_option, 'N') = 'O')
22209       )
22210    THEN
22211    NULL;
22212    --
22213    --
22214    
22215   l_ccid := AcctDerRule_6(
22216            p_application_id           => p_application_id
22217          , p_ae_header_id             => l_ae_header_id 
22218 , p_source_11 => p_source_11
22219          , x_transaction_coa_id       => l_adr_transaction_coa_id
22220          , x_accounting_coa_id        => l_adr_accounting_coa_id
22221          , x_value_type_code          => l_adr_value_type_code
22222          , p_side                     => 'NA'
22223    );
22224 
22225    xla_ae_lines_pkg.set_ccid(
22226     p_code_combination_id          => l_ccid
22227   , p_value_type_code              => l_adr_value_type_code
22228   , p_transaction_coa_id           => l_adr_transaction_coa_id
22229   , p_accounting_coa_id            => l_adr_accounting_coa_id
22230   , p_adr_code                     => 'CST_DEFAULT'
22231   , p_adr_type_code                => 'S'
22232   , p_component_type               => l_component_type
22233   , p_component_code               => l_component_code
22234   , p_component_type_code          => l_component_type_code
22235   , p_component_appl_id            => l_component_appl_id
22236   , p_amb_context_code             => l_amb_context_code
22237   , p_side                         => 'NA'
22238   );
22239 
22240 
22241    --
22242    --
22243    END IF;
22244 
22245        --
22246        -- Update the line information that should be overwritten
22247        --
22248        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22249                                          p_header_num   => 1);
22250        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22251 
22252        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22253 
22254        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22255           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22256        END IF;
22257 
22258       --
22259       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22260       --
22261       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22262           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22263       ELSE
22264           ---------------------------------------------------------------------------------------------------
22265           -- 4262811a Switch Sign
22266           ---------------------------------------------------------------------------------------------------
22267           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22268           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22269                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22270           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22271                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22272           -- 5132302
22273           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22274                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22275 
22276       END IF;
22277 
22278       -- 4955764
22279       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22280       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22281 
22282 
22283       XLA_AE_LINES_PKG.ValidateCurrentLine;
22284       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22285 
22286       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22287                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22288                ,p_balance_type_code => l_balance_type_code);
22289 
22290    END IF;
22291 
22292    -----------------------------------------------------------------------------------------
22293    -- 4262811 Multiperiod Accounting
22294    -----------------------------------------------------------------------------------------
22295      -- No MPA option is assigned.
22296 
22297 
22298 END IF;
22299 END IF;
22300 --
22301 
22302 --
22303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22304    trace
22305       (p_msg      => 'END of AcctLineType_65'
22306       ,p_level    => C_LEVEL_PROCEDURE
22307       ,p_module   => l_log_module);
22308 END IF;
22309 --
22310 EXCEPTION
22311   WHEN xla_exceptions_pkg.application_exception THEN
22312       RAISE;
22313   WHEN OTHERS THEN
22314        xla_exceptions_pkg.raise_message
22315            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_65');
22316 END AcctLineType_65;
22317 --
22318 
22319 ---------------------------------------
22320 --
22321 -- PRIVATE FUNCTION
22322 --         AcctLineType_66
22323 --
22324 ---------------------------------------
22325 PROCEDURE AcctLineType_66 (
22326   p_application_id        IN NUMBER
22327  ,p_event_id              IN NUMBER
22328  ,p_calculate_acctd_flag  IN VARCHAR2
22329  ,p_calculate_g_l_flag    IN VARCHAR2
22330  ,p_actual_flag           IN OUT VARCHAR2
22331  ,p_balance_type_code     OUT VARCHAR2
22332  ,p_gain_or_loss_ref      OUT VARCHAR2
22333  
22334 --Cost Management Default Account
22335  , p_source_11            IN NUMBER
22336 --DISTRIBUTION_IDENTIFIER
22337  , p_source_84            IN NUMBER
22338 --Distribution Type
22339  , p_source_85            IN VARCHAR2
22340  , p_source_85_meaning    IN VARCHAR2
22341 --Entered Currency Code
22342  , p_source_88            IN VARCHAR2
22343 --Entered Amount
22344  , p_source_91            IN NUMBER
22345 --Currency Conversion Date
22346  , p_source_92            IN DATE
22347 --Currency Conversion Rate
22348  , p_source_93            IN NUMBER
22349 --Currency Conversion Type
22350  , p_source_94            IN VARCHAR2
22351 --Accounted Amount
22352  , p_source_95            IN NUMBER
22353 --Accounting Line Type
22354  , p_source_97            IN NUMBER
22355 )
22356 IS
22357 
22358 l_component_type              VARCHAR2(80);
22359 l_component_code              VARCHAR2(30);
22360 l_component_type_code         VARCHAR2(1);
22361 l_component_appl_id           INTEGER;
22362 l_amb_context_code            VARCHAR2(30);
22363 l_entity_code                 VARCHAR2(30);
22364 l_event_class_code            VARCHAR2(30);
22365 l_ae_header_id                NUMBER;
22366 l_event_type_code             VARCHAR2(30);
22367 l_line_definition_code        VARCHAR2(30);
22368 l_line_definition_owner_code  VARCHAR2(1);
22369 --
22370 -- adr variables
22371 l_segment                     VARCHAR2(30);
22372 l_ccid                        NUMBER;
22373 l_adr_transaction_coa_id      NUMBER;
22374 l_adr_accounting_coa_id       NUMBER;
22375 l_adr_flexfield_segment_code  VARCHAR2(30);
22376 l_adr_flex_value_set_id       NUMBER;
22377 l_adr_value_type_code         VARCHAR2(30);
22378 l_adr_value_combination_id    NUMBER;
22379 l_adr_value_segment_code      VARCHAR2(30);
22380 
22381 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22382 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22383 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22384 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22385 
22386 -- 4262811 Variables ------------------------------------------------------------------------------------------
22387 l_entered_amt_idx             NUMBER;
22388 l_accted_amt_idx              NUMBER;
22389 l_acc_rev_flag                VARCHAR2(1);
22390 l_accrual_line_num            NUMBER;
22391 l_tmp_amt                     NUMBER;
22392 l_acc_rev_natural_side_code   VARCHAR2(1);
22393 
22394 l_num_entries                 NUMBER;
22395 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22396 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22397 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22398 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22399 l_recog_line_1                NUMBER;
22400 l_recog_line_2                NUMBER;
22401 
22402 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22403 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22404 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22405 
22406 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22407 
22408 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22409 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22410 
22411 ---------------------------------------------------------------------------------------------------------------
22412 
22413 
22414 --
22415 -- bulk performance
22416 --
22417 l_balance_type_code           VARCHAR2(1);
22418 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22419 l_log_module                  VARCHAR2(240);
22420 
22421 --
22422 -- Upgrade strategy
22423 --
22424 l_actual_upg_option           VARCHAR2(1);
22425 l_enc_upg_option           VARCHAR2(1);
22426 
22427 --
22428 BEGIN
22429 --
22430 IF g_log_enabled THEN
22431       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
22432 END IF;
22433 --
22434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22435 
22436       trace
22437          (p_msg      => 'BEGIN of AcctLineType_66'
22438          ,p_level    => C_LEVEL_PROCEDURE
22439          ,p_module   => l_log_module);
22440 
22441 END IF;
22442 --
22443 l_component_type             := 'AMB_JLT';
22444 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
22445 l_component_type_code        := 'S';
22446 l_component_appl_id          :=  707;
22447 l_amb_context_code           := 'DEFAULT';
22448 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
22449 l_event_class_code           := 'WIP_COST_UPD';
22450 l_event_type_code            := 'WIP_COST_UPD_ALL';
22451 l_line_definition_owner_code := 'S';
22452 l_line_definition_code       := 'COST_UPDATE';
22453 --
22454 l_balance_type_code          := 'A';
22455 l_segment                     := NULL;
22456 l_ccid                        := NULL;
22457 l_adr_transaction_coa_id      := NULL;
22458 l_adr_accounting_coa_id       := NULL;
22459 l_adr_flexfield_segment_code  := NULL;
22460 l_adr_flex_value_set_id       := NULL;
22461 l_adr_value_type_code         := NULL;
22462 l_adr_value_combination_id    := NULL;
22463 l_adr_value_segment_code      := NULL;
22464 
22465 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22466 l_bflow_class_code           := '';    -- 4219869 Business Flow
22467 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22468 l_budgetary_control_flag     := 'N';
22469 
22470 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22471 l_bflow_applied_to_amt       := NULL; -- 5132302
22472 l_entered_amt_idx            := NULL;          -- 4262811
22473 l_accted_amt_idx             := NULL;          -- 4262811
22474 l_acc_rev_flag               := NULL;          -- 4262811
22475 l_accrual_line_num           := NULL;          -- 4262811
22476 l_tmp_amt                    := NULL;          -- 4262811
22477 --
22478  
22479 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22480     l_balance_type_code <> 'B' THEN
22481 IF NVL(p_source_97,9E125) =  2
22482  THEN 
22483 
22484    --
22485    XLA_AE_LINES_PKG.SetNewLine;
22486 
22487    p_balance_type_code          := l_balance_type_code;
22488    -- set the flag so later we will know whether the gain loss line needs to be created
22489    
22490    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22491      p_actual_flag :='A';
22492    END IF;
22493 
22494    --
22495    -- bulk performance
22496    --
22497    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22498                                       p_header_num   => 0); -- 4262811
22499    --
22500    -- set accounting line options
22501    --
22502    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22503            p_natural_side_code          => 'D'
22504          , p_gain_or_loss_flag          => 'N'
22505          , p_gl_transfer_mode_code      => 'S'
22506          , p_acct_entry_type_code       => 'A'
22507          , p_switch_side_flag           => 'Y'
22508          , p_merge_duplicate_code       => 'N'
22509          );
22510    --
22511    l_acc_rev_natural_side_code := 'C';  -- 4262811
22512    -- 
22513    --
22514    -- set accounting line type info
22515    --
22516    xla_ae_lines_pkg.SetAcctLineType
22517       (p_component_type             => l_component_type
22518       ,p_event_type_code            => l_event_type_code
22519       ,p_line_definition_owner_code => l_line_definition_owner_code
22520       ,p_line_definition_code       => l_line_definition_code
22521       ,p_accounting_line_code       => l_component_code
22522       ,p_accounting_line_type_code  => l_component_type_code
22523       ,p_accounting_line_appl_id    => l_component_appl_id
22524       ,p_amb_context_code           => l_amb_context_code
22525       ,p_entity_code                => l_entity_code
22526       ,p_event_class_code           => l_event_class_code);
22527    --
22528    -- set accounting class
22529    --
22530    xla_ae_lines_pkg.SetAcctClass(
22531            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
22532          , p_ae_header_id           => l_ae_header_id
22533          );
22534 
22535    --
22536    -- set rounding class
22537    --
22538    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22539                       'COST_UPDATE_ADJUSTMENT';
22540 
22541    --
22542    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22543    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22544    --
22545    -- bulk performance
22546    --
22547    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22548 
22549    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22550       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22551 
22552    -- 4955764
22553    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22554       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22555 
22556    -- 4458381 Public Sector Enh
22557    
22558    --
22559    -- set accounting attributes for the line type
22560    --
22561    l_entered_amt_idx := 3;
22562    l_accted_amt_idx  := 8;
22563    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22564    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22565    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
22566    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22567    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
22568    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22569    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
22570    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22571    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
22572    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22573    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
22574    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22575    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
22576    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22577    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
22578    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22579    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
22580 
22581    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22582    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22583 
22584    ---------------------------------------------------------------------------------------------------------------
22585    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22586    ---------------------------------------------------------------------------------------------------------------
22587    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22588 
22589    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22590    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22591 
22592    IF xla_accounting_cache_pkg.GetValueChar
22593          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22594          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22595    AND l_bflow_method_code = 'PRIOR_ENTRY'
22596 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22597    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22598          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22599        )
22600    THEN
22601          xla_ae_lines_pkg.BflowUpgEntry
22602            (p_business_method_code    => l_bflow_method_code
22603            ,p_business_class_code     => l_bflow_class_code
22604            ,p_balance_type            => l_balance_type_code);
22605    ELSE
22606       NULL;
22607 -- No business flow processing for business flow method of NONE.
22608    END IF;
22609 
22610    --
22611    -- call analytical criteria
22612    --
22613    
22614    --
22615    -- call description
22616    --
22617    -- No description or it is inherited.
22618    --
22619    -- call ADRs
22620    -- Bug 4922099
22621    --
22622    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22623         (NVL(l_actual_upg_option, 'N') = 'O') OR
22624         (NVL(l_enc_upg_option, 'N') = 'O')
22625       )
22626    THEN
22627    NULL;
22628    --
22629    --
22630    
22631   l_ccid := AcctDerRule_6(
22632            p_application_id           => p_application_id
22633          , p_ae_header_id             => l_ae_header_id 
22634 , p_source_11 => p_source_11
22635          , x_transaction_coa_id       => l_adr_transaction_coa_id
22636          , x_accounting_coa_id        => l_adr_accounting_coa_id
22637          , x_value_type_code          => l_adr_value_type_code
22638          , p_side                     => 'NA'
22639    );
22640 
22641    xla_ae_lines_pkg.set_ccid(
22642     p_code_combination_id          => l_ccid
22643   , p_value_type_code              => l_adr_value_type_code
22644   , p_transaction_coa_id           => l_adr_transaction_coa_id
22645   , p_accounting_coa_id            => l_adr_accounting_coa_id
22646   , p_adr_code                     => 'CST_DEFAULT'
22647   , p_adr_type_code                => 'S'
22648   , p_component_type               => l_component_type
22649   , p_component_code               => l_component_code
22650   , p_component_type_code          => l_component_type_code
22651   , p_component_appl_id            => l_component_appl_id
22652   , p_amb_context_code             => l_amb_context_code
22653   , p_side                         => 'NA'
22654   );
22655 
22656 
22657    --
22658    --
22659    END IF;
22660    --
22661    -- Bug 4922099
22662    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22663           (NVL(l_enc_upg_option, 'N') = 'O')
22664         ) AND
22665         (l_bflow_method_code = 'PRIOR_ENTRY')
22666       )
22667    THEN
22668       IF
22669       --
22670       1 = 2
22671       --
22672       THEN
22673       xla_accounting_err_pkg.build_message
22674                                     (p_appli_s_name            => 'XLA'
22675                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22676                                     ,p_token_1                 => 'LINE_NUMBER'
22677                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22678                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22679                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22680                                                                              l_component_type
22681                                                                             ,l_component_code
22682                                                                             ,l_component_type_code
22683                                                                             ,l_component_appl_id
22684                                                                             ,l_amb_context_code
22685                                                                             ,l_entity_code
22686                                                                             ,l_event_class_code
22687                                                                            )
22688                                     ,p_token_3                 => 'OWNER'
22689                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22690                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22691                                                                           ,p_lookup_code    => l_component_type_code
22692                                                                          )
22693                                     ,p_token_4                 => 'PRODUCT_NAME'
22694                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22695                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22696                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22697                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22698                                     ,p_ae_header_id            =>  NULL
22699                                        );
22700 
22701         IF (C_LEVEL_ERROR>= g_log_level) THEN
22702                  trace
22703                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22704                       ,p_level    => C_LEVEL_ERROR
22705                       ,p_module   => l_log_module);
22706         END IF;
22707       END IF;
22708    END IF;
22709    --
22710    --
22711    ------------------------------------------------------------------------------------------------
22712    -- 4219869 Business Flow
22713    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22714    -- Prior Entry.  Currently, the following code is always generated.
22715    ------------------------------------------------------------------------------------------------
22716    XLA_AE_LINES_PKG.ValidateCurrentLine;
22717 
22718    ------------------------------------------------------------------------------------
22719    -- 4219869 Business Flow
22720    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22721    ------------------------------------------------------------------------------------
22722    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22723 
22724    ----------------------------------------------------------------------------------
22725    -- 4219869 Business Flow
22726    -- Update journal entry status -- Need to generate this within IF <condition>
22727    ----------------------------------------------------------------------------------
22728    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22729          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22730          ,p_balance_type_code => l_balance_type_code
22731          );
22732 
22733    -------------------------------------------------------------------------------------------
22734    -- 4262811 - Generate the Accrual Reversal lines
22735    -------------------------------------------------------------------------------------------
22736    BEGIN
22737       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22738                               (g_array_event(p_event_id).array_value_num('header_index'));
22739       IF l_acc_rev_flag IS NULL THEN
22740          l_acc_rev_flag := 'N';
22741       END IF;
22742    EXCEPTION
22743       WHEN OTHERS THEN
22744          l_acc_rev_flag := 'N';
22745    END;
22746    --
22747    IF (l_acc_rev_flag = 'Y') THEN
22748 
22749        -- 4645092  ------------------------------------------------------------------------------
22750        -- To allow MPA report to determine if it should generate report process
22751        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22752        ------------------------------------------------------------------------------------------
22753 
22754        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22755        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22756    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22757    -- call ADRs
22758    -- Bug 4922099
22759    --
22760    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22761         (NVL(l_actual_upg_option, 'N') = 'O') OR
22762         (NVL(l_enc_upg_option, 'N') = 'O')
22763       )
22764    THEN
22765    NULL;
22766    --
22767    --
22768    
22769   l_ccid := AcctDerRule_6(
22770            p_application_id           => p_application_id
22771          , p_ae_header_id             => l_ae_header_id 
22772 , p_source_11 => p_source_11
22773          , x_transaction_coa_id       => l_adr_transaction_coa_id
22774          , x_accounting_coa_id        => l_adr_accounting_coa_id
22775          , x_value_type_code          => l_adr_value_type_code
22776          , p_side                     => 'NA'
22777    );
22778 
22779    xla_ae_lines_pkg.set_ccid(
22780     p_code_combination_id          => l_ccid
22781   , p_value_type_code              => l_adr_value_type_code
22782   , p_transaction_coa_id           => l_adr_transaction_coa_id
22783   , p_accounting_coa_id            => l_adr_accounting_coa_id
22784   , p_adr_code                     => 'CST_DEFAULT'
22785   , p_adr_type_code                => 'S'
22786   , p_component_type               => l_component_type
22787   , p_component_code               => l_component_code
22788   , p_component_type_code          => l_component_type_code
22789   , p_component_appl_id            => l_component_appl_id
22790   , p_amb_context_code             => l_amb_context_code
22791   , p_side                         => 'NA'
22792   );
22793 
22794 
22795    --
22796    --
22797    END IF;
22798 
22799        --
22800        -- Update the line information that should be overwritten
22801        --
22802        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22803                                          p_header_num   => 1);
22804        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22805 
22806        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22807 
22808        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22809           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22810        END IF;
22811 
22812       --
22813       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22814       --
22815       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22816           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22817       ELSE
22818           ---------------------------------------------------------------------------------------------------
22819           -- 4262811a Switch Sign
22820           ---------------------------------------------------------------------------------------------------
22821           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22822           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22823                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22824           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22825                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22826           -- 5132302
22827           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22828                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22829 
22830       END IF;
22831 
22832       -- 4955764
22833       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22834       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22835 
22836 
22837       XLA_AE_LINES_PKG.ValidateCurrentLine;
22838       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22839 
22840       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22841                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22842                ,p_balance_type_code => l_balance_type_code);
22843 
22844    END IF;
22845 
22846    -----------------------------------------------------------------------------------------
22847    -- 4262811 Multiperiod Accounting
22848    -----------------------------------------------------------------------------------------
22849      -- No MPA option is assigned.
22850 
22851 
22852 END IF;
22853 END IF;
22854 --
22855 
22856 --
22857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22858    trace
22859       (p_msg      => 'END of AcctLineType_66'
22860       ,p_level    => C_LEVEL_PROCEDURE
22861       ,p_module   => l_log_module);
22862 END IF;
22863 --
22864 EXCEPTION
22865   WHEN xla_exceptions_pkg.application_exception THEN
22866       RAISE;
22867   WHEN OTHERS THEN
22868        xla_exceptions_pkg.raise_message
22869            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_66');
22870 END AcctLineType_66;
22871 --
22872 
22873 ---------------------------------------
22874 --
22875 -- PRIVATE FUNCTION
22876 --         AcctLineType_67
22877 --
22878 ---------------------------------------
22879 PROCEDURE AcctLineType_67 (
22880   p_application_id        IN NUMBER
22881  ,p_event_id              IN NUMBER
22882  ,p_calculate_acctd_flag  IN VARCHAR2
22883  ,p_calculate_g_l_flag    IN VARCHAR2
22884  ,p_actual_flag           IN OUT VARCHAR2
22885  ,p_balance_type_code     OUT VARCHAR2
22886  ,p_gain_or_loss_ref      OUT VARCHAR2
22887  
22888 --Cost Management Default Account
22889  , p_source_11            IN NUMBER
22890 --DISTRIBUTION_IDENTIFIER
22891  , p_source_84            IN NUMBER
22892 --Distribution Type
22893  , p_source_85            IN VARCHAR2
22894  , p_source_85_meaning    IN VARCHAR2
22895 --Entered Currency Code
22896  , p_source_88            IN VARCHAR2
22897 --Entered Amount
22898  , p_source_91            IN NUMBER
22899 --Currency Conversion Date
22900  , p_source_92            IN DATE
22901 --Currency Conversion Rate
22902  , p_source_93            IN NUMBER
22903 --Currency Conversion Type
22904  , p_source_94            IN VARCHAR2
22905 --Accounted Amount
22906  , p_source_95            IN NUMBER
22907 --Accounting Line Type
22908  , p_source_97            IN NUMBER
22909 )
22910 IS
22911 
22912 l_component_type              VARCHAR2(80);
22913 l_component_code              VARCHAR2(30);
22914 l_component_type_code         VARCHAR2(1);
22915 l_component_appl_id           INTEGER;
22916 l_amb_context_code            VARCHAR2(30);
22917 l_entity_code                 VARCHAR2(30);
22918 l_event_class_code            VARCHAR2(30);
22919 l_ae_header_id                NUMBER;
22920 l_event_type_code             VARCHAR2(30);
22921 l_line_definition_code        VARCHAR2(30);
22922 l_line_definition_owner_code  VARCHAR2(1);
22923 --
22924 -- adr variables
22925 l_segment                     VARCHAR2(30);
22926 l_ccid                        NUMBER;
22927 l_adr_transaction_coa_id      NUMBER;
22928 l_adr_accounting_coa_id       NUMBER;
22929 l_adr_flexfield_segment_code  VARCHAR2(30);
22930 l_adr_flex_value_set_id       NUMBER;
22931 l_adr_value_type_code         VARCHAR2(30);
22932 l_adr_value_combination_id    NUMBER;
22933 l_adr_value_segment_code      VARCHAR2(30);
22934 
22935 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22936 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22937 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22938 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22939 
22940 -- 4262811 Variables ------------------------------------------------------------------------------------------
22941 l_entered_amt_idx             NUMBER;
22942 l_accted_amt_idx              NUMBER;
22943 l_acc_rev_flag                VARCHAR2(1);
22944 l_accrual_line_num            NUMBER;
22945 l_tmp_amt                     NUMBER;
22946 l_acc_rev_natural_side_code   VARCHAR2(1);
22947 
22948 l_num_entries                 NUMBER;
22949 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22950 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22951 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22952 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22953 l_recog_line_1                NUMBER;
22954 l_recog_line_2                NUMBER;
22955 
22956 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22957 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22958 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22959 
22960 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22961 
22962 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22963 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22964 
22965 ---------------------------------------------------------------------------------------------------------------
22966 
22967 
22968 --
22969 -- bulk performance
22970 --
22971 l_balance_type_code           VARCHAR2(1);
22972 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22973 l_log_module                  VARCHAR2(240);
22974 
22975 --
22976 -- Upgrade strategy
22977 --
22978 l_actual_upg_option           VARCHAR2(1);
22979 l_enc_upg_option           VARCHAR2(1);
22980 
22981 --
22982 BEGIN
22983 --
22984 IF g_log_enabled THEN
22985       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
22986 END IF;
22987 --
22988 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22989 
22990       trace
22991          (p_msg      => 'BEGIN of AcctLineType_67'
22992          ,p_level    => C_LEVEL_PROCEDURE
22993          ,p_module   => l_log_module);
22994 
22995 END IF;
22996 --
22997 l_component_type             := 'AMB_JLT';
22998 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
22999 l_component_type_code        := 'S';
23000 l_component_appl_id          :=  707;
23001 l_amb_context_code           := 'DEFAULT';
23002 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
23003 l_event_class_code           := 'SALES_ORDER';
23004 l_event_type_code            := 'COGS_RECOGNITION';
23005 l_line_definition_owner_code := 'S';
23006 l_line_definition_code       := 'PI_COGS_RECOGNITION';
23007 --
23008 l_balance_type_code          := 'A';
23009 l_segment                     := NULL;
23010 l_ccid                        := NULL;
23011 l_adr_transaction_coa_id      := NULL;
23012 l_adr_accounting_coa_id       := NULL;
23013 l_adr_flexfield_segment_code  := NULL;
23014 l_adr_flex_value_set_id       := NULL;
23015 l_adr_value_type_code         := NULL;
23016 l_adr_value_combination_id    := NULL;
23017 l_adr_value_segment_code      := NULL;
23018 
23019 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23020 l_bflow_class_code           := '';    -- 4219869 Business Flow
23021 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23022 l_budgetary_control_flag     := 'N';
23023 
23024 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23025 l_bflow_applied_to_amt       := NULL; -- 5132302
23026 l_entered_amt_idx            := NULL;          -- 4262811
23027 l_accted_amt_idx             := NULL;          -- 4262811
23028 l_acc_rev_flag               := NULL;          -- 4262811
23029 l_accrual_line_num           := NULL;          -- 4262811
23030 l_tmp_amt                    := NULL;          -- 4262811
23031 --
23032  
23033 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23034     l_balance_type_code <> 'B' THEN
23035 IF NVL(p_source_97,9E125) =  37
23036  THEN 
23037 
23038    --
23039    XLA_AE_LINES_PKG.SetNewLine;
23040 
23041    p_balance_type_code          := l_balance_type_code;
23042    -- set the flag so later we will know whether the gain loss line needs to be created
23043    
23044    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23045      p_actual_flag :='A';
23046    END IF;
23047 
23048    --
23049    -- bulk performance
23050    --
23051    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23052                                       p_header_num   => 0); -- 4262811
23053    --
23054    -- set accounting line options
23055    --
23056    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23057            p_natural_side_code          => 'D'
23058          , p_gain_or_loss_flag          => 'N'
23059          , p_gl_transfer_mode_code      => 'S'
23060          , p_acct_entry_type_code       => 'A'
23061          , p_switch_side_flag           => 'Y'
23062          , p_merge_duplicate_code       => 'N'
23063          );
23064    --
23065    l_acc_rev_natural_side_code := 'C';  -- 4262811
23066    -- 
23067    --
23068    -- set accounting line type info
23069    --
23070    xla_ae_lines_pkg.SetAcctLineType
23071       (p_component_type             => l_component_type
23072       ,p_event_type_code            => l_event_type_code
23073       ,p_line_definition_owner_code => l_line_definition_owner_code
23074       ,p_line_definition_code       => l_line_definition_code
23075       ,p_accounting_line_code       => l_component_code
23076       ,p_accounting_line_type_code  => l_component_type_code
23077       ,p_accounting_line_appl_id    => l_component_appl_id
23078       ,p_amb_context_code           => l_amb_context_code
23079       ,p_entity_code                => l_entity_code
23080       ,p_event_class_code           => l_event_class_code);
23081    --
23082    -- set accounting class
23083    --
23084    xla_ae_lines_pkg.SetAcctClass(
23085            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
23086          , p_ae_header_id           => l_ae_header_id
23087          );
23088 
23089    --
23090    -- set rounding class
23091    --
23092    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23093                       'COST_UPDATE_ADJUSTMENT';
23094 
23095    --
23096    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23097    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23098    --
23099    -- bulk performance
23100    --
23101    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23102 
23103    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23104       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23105 
23106    -- 4955764
23107    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23108       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23109 
23110    -- 4458381 Public Sector Enh
23111    
23112    --
23113    -- set accounting attributes for the line type
23114    --
23115    l_entered_amt_idx := 3;
23116    l_accted_amt_idx  := 8;
23117    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23118    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23119    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
23120    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23121    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
23122    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23123    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
23124    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23125    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
23126    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23127    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
23128    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23129    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
23130    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23131    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
23132    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23133    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
23134 
23135    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23136    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23137 
23138    ---------------------------------------------------------------------------------------------------------------
23139    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23140    ---------------------------------------------------------------------------------------------------------------
23141    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23142 
23143    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23144    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23145 
23146    IF xla_accounting_cache_pkg.GetValueChar
23147          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23148          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23149    AND l_bflow_method_code = 'PRIOR_ENTRY'
23150 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23151    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23152          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23153        )
23154    THEN
23155          xla_ae_lines_pkg.BflowUpgEntry
23156            (p_business_method_code    => l_bflow_method_code
23157            ,p_business_class_code     => l_bflow_class_code
23158            ,p_balance_type            => l_balance_type_code);
23159    ELSE
23160       NULL;
23161 -- No business flow processing for business flow method of NONE.
23162    END IF;
23163 
23164    --
23165    -- call analytical criteria
23166    --
23167    
23168    --
23169    -- call description
23170    --
23171    -- No description or it is inherited.
23172    --
23173    -- call ADRs
23174    -- Bug 4922099
23175    --
23176    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23177         (NVL(l_actual_upg_option, 'N') = 'O') OR
23178         (NVL(l_enc_upg_option, 'N') = 'O')
23179       )
23180    THEN
23181    NULL;
23182    --
23183    --
23184    
23185   l_ccid := AcctDerRule_6(
23186            p_application_id           => p_application_id
23187          , p_ae_header_id             => l_ae_header_id 
23188 , p_source_11 => p_source_11
23189          , x_transaction_coa_id       => l_adr_transaction_coa_id
23190          , x_accounting_coa_id        => l_adr_accounting_coa_id
23191          , x_value_type_code          => l_adr_value_type_code
23192          , p_side                     => 'NA'
23193    );
23194 
23195    xla_ae_lines_pkg.set_ccid(
23196     p_code_combination_id          => l_ccid
23197   , p_value_type_code              => l_adr_value_type_code
23198   , p_transaction_coa_id           => l_adr_transaction_coa_id
23199   , p_accounting_coa_id            => l_adr_accounting_coa_id
23200   , p_adr_code                     => 'CST_DEFAULT'
23201   , p_adr_type_code                => 'S'
23202   , p_component_type               => l_component_type
23203   , p_component_code               => l_component_code
23204   , p_component_type_code          => l_component_type_code
23205   , p_component_appl_id            => l_component_appl_id
23206   , p_amb_context_code             => l_amb_context_code
23207   , p_side                         => 'NA'
23208   );
23209 
23210 
23211    --
23212    --
23213    END IF;
23214    --
23215    -- Bug 4922099
23216    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23217           (NVL(l_enc_upg_option, 'N') = 'O')
23218         ) AND
23219         (l_bflow_method_code = 'PRIOR_ENTRY')
23220       )
23221    THEN
23222       IF
23223       --
23224       1 = 2
23225       --
23226       THEN
23227       xla_accounting_err_pkg.build_message
23228                                     (p_appli_s_name            => 'XLA'
23229                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23230                                     ,p_token_1                 => 'LINE_NUMBER'
23231                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23232                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23233                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23234                                                                              l_component_type
23235                                                                             ,l_component_code
23236                                                                             ,l_component_type_code
23237                                                                             ,l_component_appl_id
23238                                                                             ,l_amb_context_code
23239                                                                             ,l_entity_code
23240                                                                             ,l_event_class_code
23241                                                                            )
23242                                     ,p_token_3                 => 'OWNER'
23243                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23244                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23245                                                                           ,p_lookup_code    => l_component_type_code
23246                                                                          )
23247                                     ,p_token_4                 => 'PRODUCT_NAME'
23248                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23249                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23250                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23251                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23252                                     ,p_ae_header_id            =>  NULL
23253                                        );
23254 
23255         IF (C_LEVEL_ERROR>= g_log_level) THEN
23256                  trace
23257                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23258                       ,p_level    => C_LEVEL_ERROR
23259                       ,p_module   => l_log_module);
23260         END IF;
23261       END IF;
23262    END IF;
23263    --
23264    --
23265    ------------------------------------------------------------------------------------------------
23266    -- 4219869 Business Flow
23267    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23268    -- Prior Entry.  Currently, the following code is always generated.
23269    ------------------------------------------------------------------------------------------------
23270    XLA_AE_LINES_PKG.ValidateCurrentLine;
23271 
23272    ------------------------------------------------------------------------------------
23273    -- 4219869 Business Flow
23274    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23275    ------------------------------------------------------------------------------------
23276    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23277 
23278    ----------------------------------------------------------------------------------
23279    -- 4219869 Business Flow
23280    -- Update journal entry status -- Need to generate this within IF <condition>
23281    ----------------------------------------------------------------------------------
23282    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23283          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23284          ,p_balance_type_code => l_balance_type_code
23285          );
23286 
23287    -------------------------------------------------------------------------------------------
23288    -- 4262811 - Generate the Accrual Reversal lines
23289    -------------------------------------------------------------------------------------------
23290    BEGIN
23291       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23292                               (g_array_event(p_event_id).array_value_num('header_index'));
23293       IF l_acc_rev_flag IS NULL THEN
23294          l_acc_rev_flag := 'N';
23295       END IF;
23296    EXCEPTION
23297       WHEN OTHERS THEN
23298          l_acc_rev_flag := 'N';
23299    END;
23300    --
23301    IF (l_acc_rev_flag = 'Y') THEN
23302 
23303        -- 4645092  ------------------------------------------------------------------------------
23304        -- To allow MPA report to determine if it should generate report process
23305        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23306        ------------------------------------------------------------------------------------------
23307 
23308        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23309        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23310    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23311    -- call ADRs
23312    -- Bug 4922099
23313    --
23314    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23315         (NVL(l_actual_upg_option, 'N') = 'O') OR
23316         (NVL(l_enc_upg_option, 'N') = 'O')
23317       )
23318    THEN
23319    NULL;
23320    --
23321    --
23322    
23323   l_ccid := AcctDerRule_6(
23324            p_application_id           => p_application_id
23325          , p_ae_header_id             => l_ae_header_id 
23326 , p_source_11 => p_source_11
23327          , x_transaction_coa_id       => l_adr_transaction_coa_id
23328          , x_accounting_coa_id        => l_adr_accounting_coa_id
23329          , x_value_type_code          => l_adr_value_type_code
23330          , p_side                     => 'NA'
23331    );
23332 
23333    xla_ae_lines_pkg.set_ccid(
23334     p_code_combination_id          => l_ccid
23335   , p_value_type_code              => l_adr_value_type_code
23336   , p_transaction_coa_id           => l_adr_transaction_coa_id
23337   , p_accounting_coa_id            => l_adr_accounting_coa_id
23338   , p_adr_code                     => 'CST_DEFAULT'
23339   , p_adr_type_code                => 'S'
23340   , p_component_type               => l_component_type
23341   , p_component_code               => l_component_code
23342   , p_component_type_code          => l_component_type_code
23343   , p_component_appl_id            => l_component_appl_id
23344   , p_amb_context_code             => l_amb_context_code
23345   , p_side                         => 'NA'
23346   );
23347 
23348 
23349    --
23350    --
23351    END IF;
23352 
23353        --
23354        -- Update the line information that should be overwritten
23355        --
23356        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23357                                          p_header_num   => 1);
23358        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23359 
23360        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23361 
23362        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23363           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23364        END IF;
23365 
23366       --
23367       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23368       --
23369       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23370           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23371       ELSE
23372           ---------------------------------------------------------------------------------------------------
23373           -- 4262811a Switch Sign
23374           ---------------------------------------------------------------------------------------------------
23375           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23376           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23377                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23378           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23379                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23380           -- 5132302
23381           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23382                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23383 
23384       END IF;
23385 
23386       -- 4955764
23387       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23388       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23389 
23390 
23391       XLA_AE_LINES_PKG.ValidateCurrentLine;
23392       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23393 
23394       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23395                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23396                ,p_balance_type_code => l_balance_type_code);
23397 
23398    END IF;
23399 
23400    -----------------------------------------------------------------------------------------
23401    -- 4262811 Multiperiod Accounting
23402    -----------------------------------------------------------------------------------------
23403      -- No MPA option is assigned.
23404 
23405 
23406 END IF;
23407 END IF;
23408 --
23409 
23410 --
23411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23412    trace
23413       (p_msg      => 'END of AcctLineType_67'
23414       ,p_level    => C_LEVEL_PROCEDURE
23415       ,p_module   => l_log_module);
23416 END IF;
23417 --
23418 EXCEPTION
23419   WHEN xla_exceptions_pkg.application_exception THEN
23420       RAISE;
23421   WHEN OTHERS THEN
23422        xla_exceptions_pkg.raise_message
23423            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_67');
23424 END AcctLineType_67;
23425 --
23426 
23427 ---------------------------------------
23428 --
23429 -- PRIVATE FUNCTION
23430 --         AcctLineType_68
23431 --
23432 ---------------------------------------
23433 PROCEDURE AcctLineType_68 (
23434   p_application_id        IN NUMBER
23435  ,p_event_id              IN NUMBER
23436  ,p_calculate_acctd_flag  IN VARCHAR2
23437  ,p_calculate_g_l_flag    IN VARCHAR2
23438  ,p_actual_flag           IN OUT VARCHAR2
23439  ,p_balance_type_code     OUT VARCHAR2
23440  ,p_gain_or_loss_ref      OUT VARCHAR2
23441  
23442 --Cost Management Default Account
23443  , p_source_11            IN NUMBER
23444 --DISTRIBUTION_IDENTIFIER
23445  , p_source_84            IN NUMBER
23446 --Distribution Type
23447  , p_source_85            IN VARCHAR2
23448  , p_source_85_meaning    IN VARCHAR2
23449 --Entered Currency Code
23450  , p_source_88            IN VARCHAR2
23451 --Entered Amount
23452  , p_source_91            IN NUMBER
23453 --Currency Conversion Date
23454  , p_source_92            IN DATE
23455 --Currency Conversion Rate
23456  , p_source_93            IN NUMBER
23457 --Currency Conversion Type
23458  , p_source_94            IN VARCHAR2
23459 --Accounted Amount
23460  , p_source_95            IN NUMBER
23461 --Accounting Line Type
23462  , p_source_97            IN NUMBER
23463 )
23464 IS
23465 
23466 l_component_type              VARCHAR2(80);
23467 l_component_code              VARCHAR2(30);
23468 l_component_type_code         VARCHAR2(1);
23469 l_component_appl_id           INTEGER;
23470 l_amb_context_code            VARCHAR2(30);
23471 l_entity_code                 VARCHAR2(30);
23472 l_event_class_code            VARCHAR2(30);
23473 l_ae_header_id                NUMBER;
23474 l_event_type_code             VARCHAR2(30);
23475 l_line_definition_code        VARCHAR2(30);
23476 l_line_definition_owner_code  VARCHAR2(1);
23477 --
23478 -- adr variables
23479 l_segment                     VARCHAR2(30);
23480 l_ccid                        NUMBER;
23481 l_adr_transaction_coa_id      NUMBER;
23482 l_adr_accounting_coa_id       NUMBER;
23483 l_adr_flexfield_segment_code  VARCHAR2(30);
23484 l_adr_flex_value_set_id       NUMBER;
23485 l_adr_value_type_code         VARCHAR2(30);
23486 l_adr_value_combination_id    NUMBER;
23487 l_adr_value_segment_code      VARCHAR2(30);
23488 
23489 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23490 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23491 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23492 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23493 
23494 -- 4262811 Variables ------------------------------------------------------------------------------------------
23495 l_entered_amt_idx             NUMBER;
23496 l_accted_amt_idx              NUMBER;
23497 l_acc_rev_flag                VARCHAR2(1);
23498 l_accrual_line_num            NUMBER;
23499 l_tmp_amt                     NUMBER;
23500 l_acc_rev_natural_side_code   VARCHAR2(1);
23501 
23502 l_num_entries                 NUMBER;
23503 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23504 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23505 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23506 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23507 l_recog_line_1                NUMBER;
23508 l_recog_line_2                NUMBER;
23509 
23510 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23511 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23512 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23513 
23514 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23515 
23516 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23517 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23518 
23519 ---------------------------------------------------------------------------------------------------------------
23520 
23521 
23522 --
23523 -- bulk performance
23524 --
23525 l_balance_type_code           VARCHAR2(1);
23526 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23527 l_log_module                  VARCHAR2(240);
23528 
23529 --
23530 -- Upgrade strategy
23531 --
23532 l_actual_upg_option           VARCHAR2(1);
23533 l_enc_upg_option           VARCHAR2(1);
23534 
23535 --
23536 BEGIN
23537 --
23538 IF g_log_enabled THEN
23539       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
23540 END IF;
23541 --
23542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23543 
23544       trace
23545          (p_msg      => 'BEGIN of AcctLineType_68'
23546          ,p_level    => C_LEVEL_PROCEDURE
23547          ,p_module   => l_log_module);
23548 
23549 END IF;
23550 --
23551 l_component_type             := 'AMB_JLT';
23552 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
23553 l_component_type_code        := 'S';
23554 l_component_appl_id          :=  707;
23555 l_amb_context_code           := 'DEFAULT';
23556 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
23557 l_event_class_code           := 'SALES_ORDER';
23558 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
23559 l_line_definition_owner_code := 'S';
23560 l_line_definition_code       := 'PI_COGS_RECOGNITION_ADJ';
23561 --
23562 l_balance_type_code          := 'A';
23563 l_segment                     := NULL;
23564 l_ccid                        := NULL;
23565 l_adr_transaction_coa_id      := NULL;
23566 l_adr_accounting_coa_id       := NULL;
23567 l_adr_flexfield_segment_code  := NULL;
23568 l_adr_flex_value_set_id       := NULL;
23569 l_adr_value_type_code         := NULL;
23570 l_adr_value_combination_id    := NULL;
23571 l_adr_value_segment_code      := NULL;
23572 
23573 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23574 l_bflow_class_code           := '';    -- 4219869 Business Flow
23575 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23576 l_budgetary_control_flag     := 'N';
23577 
23578 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23579 l_bflow_applied_to_amt       := NULL; -- 5132302
23580 l_entered_amt_idx            := NULL;          -- 4262811
23581 l_accted_amt_idx             := NULL;          -- 4262811
23582 l_acc_rev_flag               := NULL;          -- 4262811
23583 l_accrual_line_num           := NULL;          -- 4262811
23584 l_tmp_amt                    := NULL;          -- 4262811
23585 --
23586  
23587 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23588     l_balance_type_code <> 'B' THEN
23589 IF NVL(p_source_97,9E125) =  37
23590  THEN 
23591 
23592    --
23593    XLA_AE_LINES_PKG.SetNewLine;
23594 
23595    p_balance_type_code          := l_balance_type_code;
23596    -- set the flag so later we will know whether the gain loss line needs to be created
23597    
23598    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23599      p_actual_flag :='A';
23600    END IF;
23601 
23602    --
23603    -- bulk performance
23604    --
23605    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23606                                       p_header_num   => 0); -- 4262811
23607    --
23608    -- set accounting line options
23609    --
23610    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23611            p_natural_side_code          => 'D'
23612          , p_gain_or_loss_flag          => 'N'
23613          , p_gl_transfer_mode_code      => 'S'
23614          , p_acct_entry_type_code       => 'A'
23615          , p_switch_side_flag           => 'Y'
23616          , p_merge_duplicate_code       => 'N'
23617          );
23618    --
23619    l_acc_rev_natural_side_code := 'C';  -- 4262811
23620    -- 
23621    --
23622    -- set accounting line type info
23623    --
23624    xla_ae_lines_pkg.SetAcctLineType
23625       (p_component_type             => l_component_type
23626       ,p_event_type_code            => l_event_type_code
23627       ,p_line_definition_owner_code => l_line_definition_owner_code
23628       ,p_line_definition_code       => l_line_definition_code
23629       ,p_accounting_line_code       => l_component_code
23630       ,p_accounting_line_type_code  => l_component_type_code
23631       ,p_accounting_line_appl_id    => l_component_appl_id
23632       ,p_amb_context_code           => l_amb_context_code
23633       ,p_entity_code                => l_entity_code
23634       ,p_event_class_code           => l_event_class_code);
23635    --
23636    -- set accounting class
23637    --
23638    xla_ae_lines_pkg.SetAcctClass(
23639            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
23640          , p_ae_header_id           => l_ae_header_id
23641          );
23642 
23643    --
23644    -- set rounding class
23645    --
23646    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23647                       'COST_UPDATE_ADJUSTMENT';
23648 
23649    --
23650    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23651    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23652    --
23653    -- bulk performance
23654    --
23655    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23656 
23657    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23658       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23659 
23660    -- 4955764
23661    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23663 
23664    -- 4458381 Public Sector Enh
23665    
23666    --
23667    -- set accounting attributes for the line type
23668    --
23669    l_entered_amt_idx := 3;
23670    l_accted_amt_idx  := 8;
23671    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23672    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23673    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
23674    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23675    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
23676    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23677    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
23678    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23679    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
23680    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23681    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
23682    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23683    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
23684    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23685    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
23686    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23687    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
23688 
23689    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23690    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23691 
23692    ---------------------------------------------------------------------------------------------------------------
23693    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23694    ---------------------------------------------------------------------------------------------------------------
23695    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23696 
23697    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23698    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23699 
23700    IF xla_accounting_cache_pkg.GetValueChar
23701          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23702          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23703    AND l_bflow_method_code = 'PRIOR_ENTRY'
23704 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23705    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23706          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23707        )
23708    THEN
23709          xla_ae_lines_pkg.BflowUpgEntry
23710            (p_business_method_code    => l_bflow_method_code
23711            ,p_business_class_code     => l_bflow_class_code
23712            ,p_balance_type            => l_balance_type_code);
23713    ELSE
23714       NULL;
23715 -- No business flow processing for business flow method of NONE.
23716    END IF;
23717 
23718    --
23719    -- call analytical criteria
23720    --
23721    
23722    --
23723    -- call description
23724    --
23725    -- No description or it is inherited.
23726    --
23727    -- call ADRs
23728    -- Bug 4922099
23729    --
23730    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23731         (NVL(l_actual_upg_option, 'N') = 'O') OR
23732         (NVL(l_enc_upg_option, 'N') = 'O')
23733       )
23734    THEN
23735    NULL;
23736    --
23737    --
23738    
23739   l_ccid := AcctDerRule_6(
23740            p_application_id           => p_application_id
23741          , p_ae_header_id             => l_ae_header_id 
23742 , p_source_11 => p_source_11
23743          , x_transaction_coa_id       => l_adr_transaction_coa_id
23744          , x_accounting_coa_id        => l_adr_accounting_coa_id
23745          , x_value_type_code          => l_adr_value_type_code
23746          , p_side                     => 'NA'
23747    );
23748 
23749    xla_ae_lines_pkg.set_ccid(
23750     p_code_combination_id          => l_ccid
23751   , p_value_type_code              => l_adr_value_type_code
23752   , p_transaction_coa_id           => l_adr_transaction_coa_id
23753   , p_accounting_coa_id            => l_adr_accounting_coa_id
23754   , p_adr_code                     => 'CST_DEFAULT'
23755   , p_adr_type_code                => 'S'
23756   , p_component_type               => l_component_type
23757   , p_component_code               => l_component_code
23758   , p_component_type_code          => l_component_type_code
23759   , p_component_appl_id            => l_component_appl_id
23760   , p_amb_context_code             => l_amb_context_code
23761   , p_side                         => 'NA'
23762   );
23763 
23764 
23765    --
23766    --
23767    END IF;
23768    --
23769    -- Bug 4922099
23770    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23771           (NVL(l_enc_upg_option, 'N') = 'O')
23772         ) AND
23773         (l_bflow_method_code = 'PRIOR_ENTRY')
23774       )
23775    THEN
23776       IF
23777       --
23778       1 = 2
23779       --
23780       THEN
23781       xla_accounting_err_pkg.build_message
23782                                     (p_appli_s_name            => 'XLA'
23783                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23784                                     ,p_token_1                 => 'LINE_NUMBER'
23785                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23786                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23787                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23788                                                                              l_component_type
23789                                                                             ,l_component_code
23790                                                                             ,l_component_type_code
23791                                                                             ,l_component_appl_id
23792                                                                             ,l_amb_context_code
23793                                                                             ,l_entity_code
23794                                                                             ,l_event_class_code
23795                                                                            )
23796                                     ,p_token_3                 => 'OWNER'
23797                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23798                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23799                                                                           ,p_lookup_code    => l_component_type_code
23800                                                                          )
23801                                     ,p_token_4                 => 'PRODUCT_NAME'
23802                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23803                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23804                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23805                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23806                                     ,p_ae_header_id            =>  NULL
23807                                        );
23808 
23809         IF (C_LEVEL_ERROR>= g_log_level) THEN
23810                  trace
23811                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23812                       ,p_level    => C_LEVEL_ERROR
23813                       ,p_module   => l_log_module);
23814         END IF;
23815       END IF;
23816    END IF;
23817    --
23818    --
23819    ------------------------------------------------------------------------------------------------
23820    -- 4219869 Business Flow
23821    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23822    -- Prior Entry.  Currently, the following code is always generated.
23823    ------------------------------------------------------------------------------------------------
23824    XLA_AE_LINES_PKG.ValidateCurrentLine;
23825 
23826    ------------------------------------------------------------------------------------
23827    -- 4219869 Business Flow
23828    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23829    ------------------------------------------------------------------------------------
23830    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23831 
23832    ----------------------------------------------------------------------------------
23833    -- 4219869 Business Flow
23834    -- Update journal entry status -- Need to generate this within IF <condition>
23835    ----------------------------------------------------------------------------------
23836    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23837          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23838          ,p_balance_type_code => l_balance_type_code
23839          );
23840 
23841    -------------------------------------------------------------------------------------------
23842    -- 4262811 - Generate the Accrual Reversal lines
23843    -------------------------------------------------------------------------------------------
23844    BEGIN
23845       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23846                               (g_array_event(p_event_id).array_value_num('header_index'));
23847       IF l_acc_rev_flag IS NULL THEN
23848          l_acc_rev_flag := 'N';
23849       END IF;
23850    EXCEPTION
23851       WHEN OTHERS THEN
23852          l_acc_rev_flag := 'N';
23853    END;
23854    --
23855    IF (l_acc_rev_flag = 'Y') THEN
23856 
23857        -- 4645092  ------------------------------------------------------------------------------
23858        -- To allow MPA report to determine if it should generate report process
23859        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23860        ------------------------------------------------------------------------------------------
23861 
23862        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23863        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23864    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23865    -- call ADRs
23866    -- Bug 4922099
23867    --
23868    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23869         (NVL(l_actual_upg_option, 'N') = 'O') OR
23870         (NVL(l_enc_upg_option, 'N') = 'O')
23871       )
23872    THEN
23873    NULL;
23874    --
23875    --
23876    
23877   l_ccid := AcctDerRule_6(
23878            p_application_id           => p_application_id
23879          , p_ae_header_id             => l_ae_header_id 
23880 , p_source_11 => p_source_11
23881          , x_transaction_coa_id       => l_adr_transaction_coa_id
23882          , x_accounting_coa_id        => l_adr_accounting_coa_id
23883          , x_value_type_code          => l_adr_value_type_code
23884          , p_side                     => 'NA'
23885    );
23886 
23887    xla_ae_lines_pkg.set_ccid(
23888     p_code_combination_id          => l_ccid
23889   , p_value_type_code              => l_adr_value_type_code
23890   , p_transaction_coa_id           => l_adr_transaction_coa_id
23891   , p_accounting_coa_id            => l_adr_accounting_coa_id
23892   , p_adr_code                     => 'CST_DEFAULT'
23893   , p_adr_type_code                => 'S'
23894   , p_component_type               => l_component_type
23895   , p_component_code               => l_component_code
23896   , p_component_type_code          => l_component_type_code
23897   , p_component_appl_id            => l_component_appl_id
23898   , p_amb_context_code             => l_amb_context_code
23899   , p_side                         => 'NA'
23900   );
23901 
23902 
23903    --
23904    --
23905    END IF;
23906 
23907        --
23908        -- Update the line information that should be overwritten
23909        --
23910        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23911                                          p_header_num   => 1);
23912        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23913 
23914        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23915 
23916        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23917           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23918        END IF;
23919 
23920       --
23921       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23922       --
23923       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23924           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23925       ELSE
23926           ---------------------------------------------------------------------------------------------------
23927           -- 4262811a Switch Sign
23928           ---------------------------------------------------------------------------------------------------
23929           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23930           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23931                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23932           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23933                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23934           -- 5132302
23935           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23936                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23937 
23938       END IF;
23939 
23940       -- 4955764
23941       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23942       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23943 
23944 
23945       XLA_AE_LINES_PKG.ValidateCurrentLine;
23946       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23947 
23948       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23949                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23950                ,p_balance_type_code => l_balance_type_code);
23951 
23952    END IF;
23953 
23954    -----------------------------------------------------------------------------------------
23955    -- 4262811 Multiperiod Accounting
23956    -----------------------------------------------------------------------------------------
23957      -- No MPA option is assigned.
23958 
23959 
23960 END IF;
23961 END IF;
23962 --
23963 
23964 --
23965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23966    trace
23967       (p_msg      => 'END of AcctLineType_68'
23968       ,p_level    => C_LEVEL_PROCEDURE
23969       ,p_module   => l_log_module);
23970 END IF;
23971 --
23972 EXCEPTION
23973   WHEN xla_exceptions_pkg.application_exception THEN
23974       RAISE;
23975   WHEN OTHERS THEN
23976        xla_exceptions_pkg.raise_message
23977            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_68');
23978 END AcctLineType_68;
23979 --
23980 
23981 ---------------------------------------
23982 --
23983 -- PRIVATE FUNCTION
23984 --         AcctLineType_69
23985 --
23986 ---------------------------------------
23987 PROCEDURE AcctLineType_69 (
23988   p_application_id        IN NUMBER
23989  ,p_event_id              IN NUMBER
23990  ,p_calculate_acctd_flag  IN VARCHAR2
23991  ,p_calculate_g_l_flag    IN VARCHAR2
23992  ,p_actual_flag           IN OUT VARCHAR2
23993  ,p_balance_type_code     OUT VARCHAR2
23994  ,p_gain_or_loss_ref      OUT VARCHAR2
23995  
23996 --TRANSACTION_ID
23997  , p_source_1            IN NUMBER
23998 --Item Concatenated Segments
23999  , p_source_2            IN VARCHAR2
24000 --Transaction Quantity
24001  , p_source_3            IN NUMBER
24002 --Transaction Unit of Measure Code
24003  , p_source_4            IN VARCHAR2
24004 --Inventory Transaction Type Description
24005  , p_source_5            IN VARCHAR2
24006 --Transaction Material Account
24007  , p_source_14            IN NUMBER
24008 --Cost Element Name
24009  , p_source_15            IN NUMBER
24010 --Transaction Material Overhead Account
24011  , p_source_16            IN NUMBER
24012 --Transaction Resource Account
24013  , p_source_17            IN NUMBER
24014 --Transaction Outside Processing Account
24015  , p_source_18            IN NUMBER
24016 --Transaction Overhead Account
24017  , p_source_19            IN NUMBER
24018 --Transaction Distribution Account
24019  , p_source_20            IN NUMBER
24020 --DISTRIBUTION_IDENTIFIER
24021  , p_source_84            IN NUMBER
24022 --Distribution Type
24023  , p_source_85            IN VARCHAR2
24024  , p_source_85_meaning    IN VARCHAR2
24025 --Entered Currency Code
24026  , p_source_88            IN VARCHAR2
24027 --Entered Amount
24028  , p_source_91            IN NUMBER
24029 --Currency Conversion Date
24030  , p_source_92            IN DATE
24031 --Currency Conversion Rate
24032  , p_source_93            IN NUMBER
24033 --Currency Conversion Type
24034  , p_source_94            IN VARCHAR2
24035 --Accounted Amount
24036  , p_source_95            IN NUMBER
24037 --Accounting Line Type
24038  , p_source_97            IN NUMBER
24039 )
24040 IS
24041 
24042 l_component_type              VARCHAR2(80);
24043 l_component_code              VARCHAR2(30);
24044 l_component_type_code         VARCHAR2(1);
24045 l_component_appl_id           INTEGER;
24046 l_amb_context_code            VARCHAR2(30);
24047 l_entity_code                 VARCHAR2(30);
24048 l_event_class_code            VARCHAR2(30);
24049 l_ae_header_id                NUMBER;
24050 l_event_type_code             VARCHAR2(30);
24051 l_line_definition_code        VARCHAR2(30);
24052 l_line_definition_owner_code  VARCHAR2(1);
24053 --
24054 -- adr variables
24055 l_segment                     VARCHAR2(30);
24056 l_ccid                        NUMBER;
24057 l_adr_transaction_coa_id      NUMBER;
24058 l_adr_accounting_coa_id       NUMBER;
24059 l_adr_flexfield_segment_code  VARCHAR2(30);
24060 l_adr_flex_value_set_id       NUMBER;
24061 l_adr_value_type_code         VARCHAR2(30);
24062 l_adr_value_combination_id    NUMBER;
24063 l_adr_value_segment_code      VARCHAR2(30);
24064 
24065 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24066 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24067 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24068 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24069 
24070 -- 4262811 Variables ------------------------------------------------------------------------------------------
24071 l_entered_amt_idx             NUMBER;
24072 l_accted_amt_idx              NUMBER;
24073 l_acc_rev_flag                VARCHAR2(1);
24074 l_accrual_line_num            NUMBER;
24075 l_tmp_amt                     NUMBER;
24076 l_acc_rev_natural_side_code   VARCHAR2(1);
24077 
24078 l_num_entries                 NUMBER;
24079 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24080 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24081 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24082 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24083 l_recog_line_1                NUMBER;
24084 l_recog_line_2                NUMBER;
24085 
24086 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24087 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24088 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24089 
24090 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24091 
24092 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24093 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24094 
24095 ---------------------------------------------------------------------------------------------------------------
24096 
24097 
24098 --
24099 -- bulk performance
24100 --
24101 l_balance_type_code           VARCHAR2(1);
24102 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24103 l_log_module                  VARCHAR2(240);
24104 
24105 --
24106 -- Upgrade strategy
24107 --
24108 l_actual_upg_option           VARCHAR2(1);
24109 l_enc_upg_option           VARCHAR2(1);
24110 
24111 --
24112 BEGIN
24113 --
24114 IF g_log_enabled THEN
24115       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
24116 END IF;
24117 --
24118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24119 
24120       trace
24121          (p_msg      => 'BEGIN of AcctLineType_69'
24122          ,p_level    => C_LEVEL_PROCEDURE
24123          ,p_module   => l_log_module);
24124 
24125 END IF;
24126 --
24127 l_component_type             := 'AMB_JLT';
24128 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
24129 l_component_type_code        := 'S';
24130 l_component_appl_id          :=  707;
24131 l_amb_context_code           := 'DEFAULT';
24132 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
24133 l_event_class_code           := 'USER_DEFINE';
24134 l_event_type_code            := 'UAVG_COST_UPD';
24135 l_line_definition_owner_code := 'S';
24136 l_line_definition_code       := 'PI_COST_UPD';
24137 --
24138 l_balance_type_code          := 'A';
24139 l_segment                     := NULL;
24140 l_ccid                        := NULL;
24141 l_adr_transaction_coa_id      := NULL;
24142 l_adr_accounting_coa_id       := NULL;
24143 l_adr_flexfield_segment_code  := NULL;
24144 l_adr_flex_value_set_id       := NULL;
24145 l_adr_value_type_code         := NULL;
24146 l_adr_value_combination_id    := NULL;
24147 l_adr_value_segment_code      := NULL;
24148 
24149 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24150 l_bflow_class_code           := '';    -- 4219869 Business Flow
24151 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24152 l_budgetary_control_flag     := 'N';
24153 
24154 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24155 l_bflow_applied_to_amt       := NULL; -- 5132302
24156 l_entered_amt_idx            := NULL;          -- 4262811
24157 l_accted_amt_idx             := NULL;          -- 4262811
24158 l_acc_rev_flag               := NULL;          -- 4262811
24159 l_accrual_line_num           := NULL;          -- 4262811
24160 l_tmp_amt                    := NULL;          -- 4262811
24161 --
24162  
24163 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24164     l_balance_type_code <> 'B' THEN
24165 IF NVL(p_source_97,9E125) =  2
24166  THEN 
24167 
24168    --
24169    XLA_AE_LINES_PKG.SetNewLine;
24170 
24171    p_balance_type_code          := l_balance_type_code;
24172    -- set the flag so later we will know whether the gain loss line needs to be created
24173    
24174    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24175      p_actual_flag :='A';
24176    END IF;
24177 
24178    --
24179    -- bulk performance
24180    --
24181    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24182                                       p_header_num   => 0); -- 4262811
24183    --
24184    -- set accounting line options
24185    --
24186    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24187            p_natural_side_code          => 'D'
24188          , p_gain_or_loss_flag          => 'N'
24189          , p_gl_transfer_mode_code      => 'S'
24190          , p_acct_entry_type_code       => 'A'
24191          , p_switch_side_flag           => 'Y'
24192          , p_merge_duplicate_code       => 'N'
24193          );
24194    --
24195    l_acc_rev_natural_side_code := 'C';  -- 4262811
24196    -- 
24197    --
24198    -- set accounting line type info
24199    --
24200    xla_ae_lines_pkg.SetAcctLineType
24201       (p_component_type             => l_component_type
24202       ,p_event_type_code            => l_event_type_code
24203       ,p_line_definition_owner_code => l_line_definition_owner_code
24204       ,p_line_definition_code       => l_line_definition_code
24205       ,p_accounting_line_code       => l_component_code
24206       ,p_accounting_line_type_code  => l_component_type_code
24207       ,p_accounting_line_appl_id    => l_component_appl_id
24208       ,p_amb_context_code           => l_amb_context_code
24209       ,p_entity_code                => l_entity_code
24210       ,p_event_class_code           => l_event_class_code);
24211    --
24212    -- set accounting class
24213    --
24214    xla_ae_lines_pkg.SetAcctClass(
24215            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
24216          , p_ae_header_id           => l_ae_header_id
24217          );
24218 
24219    --
24220    -- set rounding class
24221    --
24222    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24223                       'COST_UPDATE_ADJUSTMENT';
24224 
24225    --
24226    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24227    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24228    --
24229    -- bulk performance
24230    --
24231    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24232 
24233    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24234       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24235 
24236    -- 4955764
24237    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24238       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24239 
24240    -- 4458381 Public Sector Enh
24241    
24242    --
24243    -- set accounting attributes for the line type
24244    --
24245    l_entered_amt_idx := 3;
24246    l_accted_amt_idx  := 8;
24247    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24248    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24249    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
24250    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24251    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
24252    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24253    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
24254    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24255    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
24256    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24257    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
24258    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24259    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
24260    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24261    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
24262    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24263    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
24264 
24265    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24266    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24267 
24268    ---------------------------------------------------------------------------------------------------------------
24269    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24270    ---------------------------------------------------------------------------------------------------------------
24271    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24272 
24273    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24274    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24275 
24276    IF xla_accounting_cache_pkg.GetValueChar
24277          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24278          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24279    AND l_bflow_method_code = 'PRIOR_ENTRY'
24280 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24281    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24282          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24283        )
24284    THEN
24285          xla_ae_lines_pkg.BflowUpgEntry
24286            (p_business_method_code    => l_bflow_method_code
24287            ,p_business_class_code     => l_bflow_class_code
24288            ,p_balance_type            => l_balance_type_code);
24289    ELSE
24290       NULL;
24291 -- No business flow processing for business flow method of NONE.
24292    END IF;
24293 
24294    --
24295    -- call analytical criteria
24296    --
24297    
24298    --
24299    -- call description
24300    --
24301    
24302 xla_ae_lines_pkg.SetLineDescription(
24303    p_ae_header_id => l_ae_header_id
24304   ,p_description  => Description_1 (
24305      p_application_id         => p_application_id
24306    , p_ae_header_id           => l_ae_header_id 
24307 , p_source_1 => p_source_1
24308 , p_source_2 => p_source_2
24309 , p_source_3 => p_source_3
24310 , p_source_4 => p_source_4
24311 , p_source_5 => p_source_5
24312    )
24313 );
24314 
24315 
24316    --
24317    -- call ADRs
24318    -- Bug 4922099
24319    --
24320    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24321         (NVL(l_actual_upg_option, 'N') = 'O') OR
24322         (NVL(l_enc_upg_option, 'N') = 'O')
24323       )
24324    THEN
24325    NULL;
24326    --
24327    --
24328    
24329   l_ccid := AcctDerRule_9(
24330            p_application_id           => p_application_id
24331          , p_ae_header_id             => l_ae_header_id 
24332 , p_source_14 => p_source_14
24333 , p_source_15 => p_source_15
24334 , p_source_16 => p_source_16
24335 , p_source_17 => p_source_17
24336 , p_source_18 => p_source_18
24337 , p_source_19 => p_source_19
24338 , p_source_20 => p_source_20
24339          , x_transaction_coa_id       => l_adr_transaction_coa_id
24340          , x_accounting_coa_id        => l_adr_accounting_coa_id
24341          , x_value_type_code          => l_adr_value_type_code
24342          , p_side                     => 'NA'
24343    );
24344 
24345    xla_ae_lines_pkg.set_ccid(
24346     p_code_combination_id          => l_ccid
24347   , p_value_type_code              => l_adr_value_type_code
24348   , p_transaction_coa_id           => l_adr_transaction_coa_id
24349   , p_accounting_coa_id            => l_adr_accounting_coa_id
24350   , p_adr_code                     => 'PI_AVG_COST_UPT_OFFSET'
24351   , p_adr_type_code                => 'S'
24352   , p_component_type               => l_component_type
24353   , p_component_code               => l_component_code
24354   , p_component_type_code          => l_component_type_code
24355   , p_component_appl_id            => l_component_appl_id
24356   , p_amb_context_code             => l_amb_context_code
24357   , p_side                         => 'NA'
24358   );
24359 
24360 
24361    --
24362    --
24363    END IF;
24364    --
24365    -- Bug 4922099
24366    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24367           (NVL(l_enc_upg_option, 'N') = 'O')
24368         ) AND
24369         (l_bflow_method_code = 'PRIOR_ENTRY')
24370       )
24371    THEN
24372       IF
24373       --
24374       1 = 2
24375       --
24376       THEN
24377       xla_accounting_err_pkg.build_message
24378                                     (p_appli_s_name            => 'XLA'
24379                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24380                                     ,p_token_1                 => 'LINE_NUMBER'
24381                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24382                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24383                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24384                                                                              l_component_type
24385                                                                             ,l_component_code
24386                                                                             ,l_component_type_code
24387                                                                             ,l_component_appl_id
24388                                                                             ,l_amb_context_code
24389                                                                             ,l_entity_code
24390                                                                             ,l_event_class_code
24391                                                                            )
24392                                     ,p_token_3                 => 'OWNER'
24393                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24394                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24395                                                                           ,p_lookup_code    => l_component_type_code
24396                                                                          )
24397                                     ,p_token_4                 => 'PRODUCT_NAME'
24398                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24399                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24400                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24401                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24402                                     ,p_ae_header_id            =>  NULL
24403                                        );
24404 
24405         IF (C_LEVEL_ERROR>= g_log_level) THEN
24406                  trace
24407                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24408                       ,p_level    => C_LEVEL_ERROR
24409                       ,p_module   => l_log_module);
24410         END IF;
24411       END IF;
24412    END IF;
24413    --
24414    --
24415    ------------------------------------------------------------------------------------------------
24416    -- 4219869 Business Flow
24417    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24418    -- Prior Entry.  Currently, the following code is always generated.
24419    ------------------------------------------------------------------------------------------------
24420    XLA_AE_LINES_PKG.ValidateCurrentLine;
24421 
24422    ------------------------------------------------------------------------------------
24423    -- 4219869 Business Flow
24424    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24425    ------------------------------------------------------------------------------------
24426    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24427 
24428    ----------------------------------------------------------------------------------
24429    -- 4219869 Business Flow
24430    -- Update journal entry status -- Need to generate this within IF <condition>
24431    ----------------------------------------------------------------------------------
24432    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24433          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24434          ,p_balance_type_code => l_balance_type_code
24435          );
24436 
24437    -------------------------------------------------------------------------------------------
24438    -- 4262811 - Generate the Accrual Reversal lines
24439    -------------------------------------------------------------------------------------------
24440    BEGIN
24441       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24442                               (g_array_event(p_event_id).array_value_num('header_index'));
24443       IF l_acc_rev_flag IS NULL THEN
24444          l_acc_rev_flag := 'N';
24445       END IF;
24446    EXCEPTION
24447       WHEN OTHERS THEN
24448          l_acc_rev_flag := 'N';
24449    END;
24450    --
24451    IF (l_acc_rev_flag = 'Y') THEN
24452 
24453        -- 4645092  ------------------------------------------------------------------------------
24454        -- To allow MPA report to determine if it should generate report process
24455        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24456        ------------------------------------------------------------------------------------------
24457 
24458        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24459        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24460    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24461    -- call ADRs
24462    -- Bug 4922099
24463    --
24464    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24465         (NVL(l_actual_upg_option, 'N') = 'O') OR
24466         (NVL(l_enc_upg_option, 'N') = 'O')
24467       )
24468    THEN
24469    NULL;
24470    --
24471    --
24472    
24473   l_ccid := AcctDerRule_9(
24474            p_application_id           => p_application_id
24475          , p_ae_header_id             => l_ae_header_id 
24476 , p_source_14 => p_source_14
24477 , p_source_15 => p_source_15
24478 , p_source_16 => p_source_16
24479 , p_source_17 => p_source_17
24480 , p_source_18 => p_source_18
24481 , p_source_19 => p_source_19
24482 , p_source_20 => p_source_20
24483          , x_transaction_coa_id       => l_adr_transaction_coa_id
24484          , x_accounting_coa_id        => l_adr_accounting_coa_id
24485          , x_value_type_code          => l_adr_value_type_code
24486          , p_side                     => 'NA'
24487    );
24488 
24489    xla_ae_lines_pkg.set_ccid(
24490     p_code_combination_id          => l_ccid
24491   , p_value_type_code              => l_adr_value_type_code
24492   , p_transaction_coa_id           => l_adr_transaction_coa_id
24493   , p_accounting_coa_id            => l_adr_accounting_coa_id
24494   , p_adr_code                     => 'PI_AVG_COST_UPT_OFFSET'
24495   , p_adr_type_code                => 'S'
24496   , p_component_type               => l_component_type
24497   , p_component_code               => l_component_code
24498   , p_component_type_code          => l_component_type_code
24499   , p_component_appl_id            => l_component_appl_id
24500   , p_amb_context_code             => l_amb_context_code
24501   , p_side                         => 'NA'
24502   );
24503 
24504 
24505    --
24506    --
24507    END IF;
24508 
24509        --
24510        -- Update the line information that should be overwritten
24511        --
24512        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24513                                          p_header_num   => 1);
24514        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24515 
24516        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24517 
24518        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24519           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24520        END IF;
24521 
24522       --
24523       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24524       --
24525       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24526           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24527       ELSE
24528           ---------------------------------------------------------------------------------------------------
24529           -- 4262811a Switch Sign
24530           ---------------------------------------------------------------------------------------------------
24531           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24532           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24533                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24534           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24535                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24536           -- 5132302
24537           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24538                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24539 
24540       END IF;
24541 
24542       -- 4955764
24543       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24544       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24545 
24546 
24547       XLA_AE_LINES_PKG.ValidateCurrentLine;
24548       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24549 
24550       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24551                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24552                ,p_balance_type_code => l_balance_type_code);
24553 
24554    END IF;
24555 
24556    -----------------------------------------------------------------------------------------
24557    -- 4262811 Multiperiod Accounting
24558    -----------------------------------------------------------------------------------------
24559      -- No MPA option is assigned.
24560 
24561 
24562 END IF;
24563 END IF;
24564 --
24565 
24566 --
24567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24568    trace
24569       (p_msg      => 'END of AcctLineType_69'
24570       ,p_level    => C_LEVEL_PROCEDURE
24571       ,p_module   => l_log_module);
24572 END IF;
24573 --
24574 EXCEPTION
24575   WHEN xla_exceptions_pkg.application_exception THEN
24576       RAISE;
24577   WHEN OTHERS THEN
24578        xla_exceptions_pkg.raise_message
24579            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_69');
24580 END AcctLineType_69;
24581 --
24582 
24583 ---------------------------------------
24584 --
24585 -- PRIVATE FUNCTION
24586 --         AcctLineType_70
24587 --
24588 ---------------------------------------
24589 PROCEDURE AcctLineType_70 (
24590   p_application_id        IN NUMBER
24591  ,p_event_id              IN NUMBER
24592  ,p_calculate_acctd_flag  IN VARCHAR2
24593  ,p_calculate_g_l_flag    IN VARCHAR2
24594  ,p_actual_flag           IN OUT VARCHAR2
24595  ,p_balance_type_code     OUT VARCHAR2
24596  ,p_gain_or_loss_ref      OUT VARCHAR2
24597  
24598 --TRANSACTION_ID
24599  , p_source_1            IN NUMBER
24600 --Item Concatenated Segments
24601  , p_source_2            IN VARCHAR2
24602 --Transaction Quantity
24603  , p_source_3            IN NUMBER
24604 --Transaction Unit of Measure Code
24605  , p_source_4            IN VARCHAR2
24606 --Inventory Transaction Type Description
24607  , p_source_5            IN VARCHAR2
24608 --Cost Management Default Account
24609  , p_source_11            IN NUMBER
24610 --DISTRIBUTION_IDENTIFIER
24611  , p_source_84            IN NUMBER
24612 --Distribution Type
24613  , p_source_85            IN VARCHAR2
24614  , p_source_85_meaning    IN VARCHAR2
24615 --Entered Currency Code
24616  , p_source_88            IN VARCHAR2
24617 --Entered Amount
24618  , p_source_91            IN NUMBER
24619 --Currency Conversion Date
24620  , p_source_92            IN DATE
24621 --Currency Conversion Rate
24622  , p_source_93            IN NUMBER
24623 --Currency Conversion Type
24624  , p_source_94            IN VARCHAR2
24625 --Accounted Amount
24626  , p_source_95            IN NUMBER
24627 --Accounting Line Type
24628  , p_source_97            IN NUMBER
24629 )
24630 IS
24631 
24632 l_component_type              VARCHAR2(80);
24633 l_component_code              VARCHAR2(30);
24634 l_component_type_code         VARCHAR2(1);
24635 l_component_appl_id           INTEGER;
24636 l_amb_context_code            VARCHAR2(30);
24637 l_entity_code                 VARCHAR2(30);
24638 l_event_class_code            VARCHAR2(30);
24639 l_ae_header_id                NUMBER;
24640 l_event_type_code             VARCHAR2(30);
24641 l_line_definition_code        VARCHAR2(30);
24642 l_line_definition_owner_code  VARCHAR2(1);
24643 --
24644 -- adr variables
24645 l_segment                     VARCHAR2(30);
24646 l_ccid                        NUMBER;
24647 l_adr_transaction_coa_id      NUMBER;
24648 l_adr_accounting_coa_id       NUMBER;
24649 l_adr_flexfield_segment_code  VARCHAR2(30);
24650 l_adr_flex_value_set_id       NUMBER;
24651 l_adr_value_type_code         VARCHAR2(30);
24652 l_adr_value_combination_id    NUMBER;
24653 l_adr_value_segment_code      VARCHAR2(30);
24654 
24655 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24656 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24657 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24658 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24659 
24660 -- 4262811 Variables ------------------------------------------------------------------------------------------
24661 l_entered_amt_idx             NUMBER;
24662 l_accted_amt_idx              NUMBER;
24663 l_acc_rev_flag                VARCHAR2(1);
24664 l_accrual_line_num            NUMBER;
24665 l_tmp_amt                     NUMBER;
24666 l_acc_rev_natural_side_code   VARCHAR2(1);
24667 
24668 l_num_entries                 NUMBER;
24669 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24670 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24671 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24672 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24673 l_recog_line_1                NUMBER;
24674 l_recog_line_2                NUMBER;
24675 
24676 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24677 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24678 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24679 
24680 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24681 
24682 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24683 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24684 
24685 ---------------------------------------------------------------------------------------------------------------
24686 
24687 
24688 --
24689 -- bulk performance
24690 --
24691 l_balance_type_code           VARCHAR2(1);
24692 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24693 l_log_module                  VARCHAR2(240);
24694 
24695 --
24696 -- Upgrade strategy
24697 --
24698 l_actual_upg_option           VARCHAR2(1);
24699 l_enc_upg_option           VARCHAR2(1);
24700 
24701 --
24702 BEGIN
24703 --
24704 IF g_log_enabled THEN
24705       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
24706 END IF;
24707 --
24708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24709 
24710       trace
24711          (p_msg      => 'BEGIN of AcctLineType_70'
24712          ,p_level    => C_LEVEL_PROCEDURE
24713          ,p_module   => l_log_module);
24714 
24715 END IF;
24716 --
24717 l_component_type             := 'AMB_JLT';
24718 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
24719 l_component_type_code        := 'S';
24720 l_component_appl_id          :=  707;
24721 l_amb_context_code           := 'DEFAULT';
24722 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
24723 l_event_class_code           := 'MTL_COST_UPD';
24724 l_event_type_code            := 'AVG_COST_UPD';
24725 l_line_definition_owner_code := 'S';
24726 l_line_definition_code       := 'PI_AVG_COST_UPD';
24727 --
24728 l_balance_type_code          := 'A';
24729 l_segment                     := NULL;
24730 l_ccid                        := NULL;
24731 l_adr_transaction_coa_id      := NULL;
24732 l_adr_accounting_coa_id       := NULL;
24733 l_adr_flexfield_segment_code  := NULL;
24734 l_adr_flex_value_set_id       := NULL;
24735 l_adr_value_type_code         := NULL;
24736 l_adr_value_combination_id    := NULL;
24737 l_adr_value_segment_code      := NULL;
24738 
24739 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24740 l_bflow_class_code           := '';    -- 4219869 Business Flow
24741 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24742 l_budgetary_control_flag     := 'N';
24743 
24744 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24745 l_bflow_applied_to_amt       := NULL; -- 5132302
24746 l_entered_amt_idx            := NULL;          -- 4262811
24747 l_accted_amt_idx             := NULL;          -- 4262811
24748 l_acc_rev_flag               := NULL;          -- 4262811
24749 l_accrual_line_num           := NULL;          -- 4262811
24750 l_tmp_amt                    := NULL;          -- 4262811
24751 --
24752  
24753 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24754     l_balance_type_code <> 'B' THEN
24755 IF NVL(p_source_97,9E125) =  2
24756  THEN 
24757 
24758    --
24759    XLA_AE_LINES_PKG.SetNewLine;
24760 
24761    p_balance_type_code          := l_balance_type_code;
24762    -- set the flag so later we will know whether the gain loss line needs to be created
24763    
24764    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24765      p_actual_flag :='A';
24766    END IF;
24767 
24768    --
24769    -- bulk performance
24770    --
24771    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24772                                       p_header_num   => 0); -- 4262811
24773    --
24774    -- set accounting line options
24775    --
24776    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24777            p_natural_side_code          => 'D'
24778          , p_gain_or_loss_flag          => 'N'
24779          , p_gl_transfer_mode_code      => 'S'
24780          , p_acct_entry_type_code       => 'A'
24781          , p_switch_side_flag           => 'Y'
24782          , p_merge_duplicate_code       => 'N'
24783          );
24784    --
24785    l_acc_rev_natural_side_code := 'C';  -- 4262811
24786    -- 
24787    --
24788    -- set accounting line type info
24789    --
24790    xla_ae_lines_pkg.SetAcctLineType
24791       (p_component_type             => l_component_type
24792       ,p_event_type_code            => l_event_type_code
24793       ,p_line_definition_owner_code => l_line_definition_owner_code
24794       ,p_line_definition_code       => l_line_definition_code
24795       ,p_accounting_line_code       => l_component_code
24796       ,p_accounting_line_type_code  => l_component_type_code
24797       ,p_accounting_line_appl_id    => l_component_appl_id
24798       ,p_amb_context_code           => l_amb_context_code
24799       ,p_entity_code                => l_entity_code
24800       ,p_event_class_code           => l_event_class_code);
24801    --
24802    -- set accounting class
24803    --
24804    xla_ae_lines_pkg.SetAcctClass(
24805            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
24806          , p_ae_header_id           => l_ae_header_id
24807          );
24808 
24809    --
24810    -- set rounding class
24811    --
24812    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24813                       'COST_UPDATE_ADJUSTMENT';
24814 
24815    --
24816    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24817    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24818    --
24819    -- bulk performance
24820    --
24821    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24822 
24823    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24824       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24825 
24826    -- 4955764
24827    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24828       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24829 
24830    -- 4458381 Public Sector Enh
24831    
24832    --
24833    -- set accounting attributes for the line type
24834    --
24835    l_entered_amt_idx := 3;
24836    l_accted_amt_idx  := 8;
24837    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24838    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24839    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
24840    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24841    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
24842    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24843    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
24844    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24845    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
24846    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24847    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
24848    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24849    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
24850    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24851    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
24852    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24853    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
24854 
24855    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24856    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24857 
24858    ---------------------------------------------------------------------------------------------------------------
24859    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24860    ---------------------------------------------------------------------------------------------------------------
24861    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24862 
24863    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24864    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24865 
24866    IF xla_accounting_cache_pkg.GetValueChar
24867          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24868          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24869    AND l_bflow_method_code = 'PRIOR_ENTRY'
24870 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24871    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24872          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24873        )
24874    THEN
24875          xla_ae_lines_pkg.BflowUpgEntry
24876            (p_business_method_code    => l_bflow_method_code
24877            ,p_business_class_code     => l_bflow_class_code
24878            ,p_balance_type            => l_balance_type_code);
24879    ELSE
24880       NULL;
24881 -- No business flow processing for business flow method of NONE.
24882    END IF;
24883 
24884    --
24885    -- call analytical criteria
24886    --
24887    
24888    --
24889    -- call description
24890    --
24891    
24892 xla_ae_lines_pkg.SetLineDescription(
24893    p_ae_header_id => l_ae_header_id
24894   ,p_description  => Description_1 (
24895      p_application_id         => p_application_id
24896    , p_ae_header_id           => l_ae_header_id 
24897 , p_source_1 => p_source_1
24898 , p_source_2 => p_source_2
24899 , p_source_3 => p_source_3
24900 , p_source_4 => p_source_4
24901 , p_source_5 => p_source_5
24902    )
24903 );
24904 
24905 
24906    --
24907    -- call ADRs
24908    -- Bug 4922099
24909    --
24910    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24911         (NVL(l_actual_upg_option, 'N') = 'O') OR
24912         (NVL(l_enc_upg_option, 'N') = 'O')
24913       )
24914    THEN
24915    NULL;
24916    --
24917    --
24918    
24919   l_ccid := AcctDerRule_6(
24920            p_application_id           => p_application_id
24921          , p_ae_header_id             => l_ae_header_id 
24922 , p_source_11 => p_source_11
24923          , x_transaction_coa_id       => l_adr_transaction_coa_id
24924          , x_accounting_coa_id        => l_adr_accounting_coa_id
24925          , x_value_type_code          => l_adr_value_type_code
24926          , p_side                     => 'NA'
24927    );
24928 
24929    xla_ae_lines_pkg.set_ccid(
24930     p_code_combination_id          => l_ccid
24931   , p_value_type_code              => l_adr_value_type_code
24932   , p_transaction_coa_id           => l_adr_transaction_coa_id
24933   , p_accounting_coa_id            => l_adr_accounting_coa_id
24934   , p_adr_code                     => 'CST_DEFAULT'
24935   , p_adr_type_code                => 'S'
24936   , p_component_type               => l_component_type
24937   , p_component_code               => l_component_code
24938   , p_component_type_code          => l_component_type_code
24939   , p_component_appl_id            => l_component_appl_id
24940   , p_amb_context_code             => l_amb_context_code
24941   , p_side                         => 'NA'
24942   );
24943 
24944 
24945    --
24946    --
24947    END IF;
24948    --
24949    -- Bug 4922099
24950    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24951           (NVL(l_enc_upg_option, 'N') = 'O')
24952         ) AND
24953         (l_bflow_method_code = 'PRIOR_ENTRY')
24954       )
24955    THEN
24956       IF
24957       --
24958       1 = 2
24959       --
24960       THEN
24961       xla_accounting_err_pkg.build_message
24962                                     (p_appli_s_name            => 'XLA'
24963                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24964                                     ,p_token_1                 => 'LINE_NUMBER'
24965                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24966                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24967                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24968                                                                              l_component_type
24969                                                                             ,l_component_code
24970                                                                             ,l_component_type_code
24971                                                                             ,l_component_appl_id
24972                                                                             ,l_amb_context_code
24973                                                                             ,l_entity_code
24974                                                                             ,l_event_class_code
24975                                                                            )
24976                                     ,p_token_3                 => 'OWNER'
24977                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24978                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24979                                                                           ,p_lookup_code    => l_component_type_code
24980                                                                          )
24981                                     ,p_token_4                 => 'PRODUCT_NAME'
24982                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24983                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24984                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24985                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24986                                     ,p_ae_header_id            =>  NULL
24987                                        );
24988 
24989         IF (C_LEVEL_ERROR>= g_log_level) THEN
24990                  trace
24991                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24992                       ,p_level    => C_LEVEL_ERROR
24993                       ,p_module   => l_log_module);
24994         END IF;
24995       END IF;
24996    END IF;
24997    --
24998    --
24999    ------------------------------------------------------------------------------------------------
25000    -- 4219869 Business Flow
25001    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25002    -- Prior Entry.  Currently, the following code is always generated.
25003    ------------------------------------------------------------------------------------------------
25004    XLA_AE_LINES_PKG.ValidateCurrentLine;
25005 
25006    ------------------------------------------------------------------------------------
25007    -- 4219869 Business Flow
25008    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25009    ------------------------------------------------------------------------------------
25010    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25011 
25012    ----------------------------------------------------------------------------------
25013    -- 4219869 Business Flow
25014    -- Update journal entry status -- Need to generate this within IF <condition>
25015    ----------------------------------------------------------------------------------
25016    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25017          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25018          ,p_balance_type_code => l_balance_type_code
25019          );
25020 
25021    -------------------------------------------------------------------------------------------
25022    -- 4262811 - Generate the Accrual Reversal lines
25023    -------------------------------------------------------------------------------------------
25024    BEGIN
25025       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25026                               (g_array_event(p_event_id).array_value_num('header_index'));
25027       IF l_acc_rev_flag IS NULL THEN
25028          l_acc_rev_flag := 'N';
25029       END IF;
25030    EXCEPTION
25031       WHEN OTHERS THEN
25032          l_acc_rev_flag := 'N';
25033    END;
25034    --
25035    IF (l_acc_rev_flag = 'Y') THEN
25036 
25037        -- 4645092  ------------------------------------------------------------------------------
25038        -- To allow MPA report to determine if it should generate report process
25039        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25040        ------------------------------------------------------------------------------------------
25041 
25042        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25043        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25044    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25045    -- call ADRs
25046    -- Bug 4922099
25047    --
25048    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25049         (NVL(l_actual_upg_option, 'N') = 'O') OR
25050         (NVL(l_enc_upg_option, 'N') = 'O')
25051       )
25052    THEN
25053    NULL;
25054    --
25055    --
25056    
25057   l_ccid := AcctDerRule_6(
25058            p_application_id           => p_application_id
25059          , p_ae_header_id             => l_ae_header_id 
25060 , p_source_11 => p_source_11
25061          , x_transaction_coa_id       => l_adr_transaction_coa_id
25062          , x_accounting_coa_id        => l_adr_accounting_coa_id
25063          , x_value_type_code          => l_adr_value_type_code
25064          , p_side                     => 'NA'
25065    );
25066 
25067    xla_ae_lines_pkg.set_ccid(
25068     p_code_combination_id          => l_ccid
25069   , p_value_type_code              => l_adr_value_type_code
25070   , p_transaction_coa_id           => l_adr_transaction_coa_id
25071   , p_accounting_coa_id            => l_adr_accounting_coa_id
25072   , p_adr_code                     => 'CST_DEFAULT'
25073   , p_adr_type_code                => 'S'
25074   , p_component_type               => l_component_type
25075   , p_component_code               => l_component_code
25076   , p_component_type_code          => l_component_type_code
25077   , p_component_appl_id            => l_component_appl_id
25078   , p_amb_context_code             => l_amb_context_code
25079   , p_side                         => 'NA'
25080   );
25081 
25082 
25083    --
25084    --
25085    END IF;
25086 
25087        --
25088        -- Update the line information that should be overwritten
25089        --
25090        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25091                                          p_header_num   => 1);
25092        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25093 
25094        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25095 
25096        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25097           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25098        END IF;
25099 
25100       --
25101       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25102       --
25103       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25104           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25105       ELSE
25106           ---------------------------------------------------------------------------------------------------
25107           -- 4262811a Switch Sign
25108           ---------------------------------------------------------------------------------------------------
25109           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25110           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25111                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25112           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25113                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25114           -- 5132302
25115           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25116                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25117 
25118       END IF;
25119 
25120       -- 4955764
25121       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25122       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25123 
25124 
25125       XLA_AE_LINES_PKG.ValidateCurrentLine;
25126       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25127 
25128       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25129                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25130                ,p_balance_type_code => l_balance_type_code);
25131 
25132    END IF;
25133 
25134    -----------------------------------------------------------------------------------------
25135    -- 4262811 Multiperiod Accounting
25136    -----------------------------------------------------------------------------------------
25137      -- No MPA option is assigned.
25138 
25139 
25140 END IF;
25141 END IF;
25142 --
25143 
25144 --
25145 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25146    trace
25147       (p_msg      => 'END of AcctLineType_70'
25148       ,p_level    => C_LEVEL_PROCEDURE
25149       ,p_module   => l_log_module);
25150 END IF;
25151 --
25152 EXCEPTION
25153   WHEN xla_exceptions_pkg.application_exception THEN
25154       RAISE;
25155   WHEN OTHERS THEN
25156        xla_exceptions_pkg.raise_message
25157            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_70');
25158 END AcctLineType_70;
25159 --
25160 
25161 ---------------------------------------
25162 --
25163 -- PRIVATE FUNCTION
25164 --         AcctLineType_71
25165 --
25166 ---------------------------------------
25167 PROCEDURE AcctLineType_71 (
25168   p_application_id        IN NUMBER
25169  ,p_event_id              IN NUMBER
25170  ,p_calculate_acctd_flag  IN VARCHAR2
25171  ,p_calculate_g_l_flag    IN VARCHAR2
25172  ,p_actual_flag           IN OUT VARCHAR2
25173  ,p_balance_type_code     OUT VARCHAR2
25174  ,p_gain_or_loss_ref      OUT VARCHAR2
25175  
25176 --TRANSACTION_ID
25177  , p_source_1            IN NUMBER
25178 --Item Concatenated Segments
25179  , p_source_2            IN VARCHAR2
25180 --Transaction Quantity
25181  , p_source_3            IN NUMBER
25182 --Transaction Unit of Measure Code
25183  , p_source_4            IN VARCHAR2
25184 --Inventory Transaction Type Description
25185  , p_source_5            IN VARCHAR2
25186 --Cost Management Default Account
25187  , p_source_11            IN NUMBER
25188 --DISTRIBUTION_IDENTIFIER
25189  , p_source_84            IN NUMBER
25190 --Distribution Type
25191  , p_source_85            IN VARCHAR2
25192  , p_source_85_meaning    IN VARCHAR2
25193 --Entered Currency Code
25194  , p_source_88            IN VARCHAR2
25195 --Entered Amount
25196  , p_source_91            IN NUMBER
25197 --Currency Conversion Date
25198  , p_source_92            IN DATE
25199 --Currency Conversion Rate
25200  , p_source_93            IN NUMBER
25201 --Currency Conversion Type
25202  , p_source_94            IN VARCHAR2
25203 --Accounted Amount
25204  , p_source_95            IN NUMBER
25205 --Accounting Line Type
25206  , p_source_97            IN NUMBER
25207 )
25208 IS
25209 
25210 l_component_type              VARCHAR2(80);
25211 l_component_code              VARCHAR2(30);
25212 l_component_type_code         VARCHAR2(1);
25213 l_component_appl_id           INTEGER;
25214 l_amb_context_code            VARCHAR2(30);
25215 l_entity_code                 VARCHAR2(30);
25216 l_event_class_code            VARCHAR2(30);
25217 l_ae_header_id                NUMBER;
25218 l_event_type_code             VARCHAR2(30);
25219 l_line_definition_code        VARCHAR2(30);
25220 l_line_definition_owner_code  VARCHAR2(1);
25221 --
25222 -- adr variables
25223 l_segment                     VARCHAR2(30);
25224 l_ccid                        NUMBER;
25225 l_adr_transaction_coa_id      NUMBER;
25226 l_adr_accounting_coa_id       NUMBER;
25227 l_adr_flexfield_segment_code  VARCHAR2(30);
25228 l_adr_flex_value_set_id       NUMBER;
25229 l_adr_value_type_code         VARCHAR2(30);
25230 l_adr_value_combination_id    NUMBER;
25231 l_adr_value_segment_code      VARCHAR2(30);
25232 
25233 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25234 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25235 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25236 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25237 
25238 -- 4262811 Variables ------------------------------------------------------------------------------------------
25239 l_entered_amt_idx             NUMBER;
25240 l_accted_amt_idx              NUMBER;
25241 l_acc_rev_flag                VARCHAR2(1);
25242 l_accrual_line_num            NUMBER;
25243 l_tmp_amt                     NUMBER;
25244 l_acc_rev_natural_side_code   VARCHAR2(1);
25245 
25246 l_num_entries                 NUMBER;
25247 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25248 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25249 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25250 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25251 l_recog_line_1                NUMBER;
25252 l_recog_line_2                NUMBER;
25253 
25254 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25255 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25256 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25257 
25258 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25259 
25260 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25261 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25262 
25263 ---------------------------------------------------------------------------------------------------------------
25264 
25265 
25266 --
25267 -- bulk performance
25268 --
25269 l_balance_type_code           VARCHAR2(1);
25270 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25271 l_log_module                  VARCHAR2(240);
25272 
25273 --
25274 -- Upgrade strategy
25275 --
25276 l_actual_upg_option           VARCHAR2(1);
25277 l_enc_upg_option           VARCHAR2(1);
25278 
25279 --
25280 BEGIN
25281 --
25282 IF g_log_enabled THEN
25283       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
25284 END IF;
25285 --
25286 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25287 
25288       trace
25289          (p_msg      => 'BEGIN of AcctLineType_71'
25290          ,p_level    => C_LEVEL_PROCEDURE
25291          ,p_module   => l_log_module);
25292 
25293 END IF;
25294 --
25295 l_component_type             := 'AMB_JLT';
25296 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
25297 l_component_type_code        := 'S';
25298 l_component_appl_id          :=  707;
25299 l_amb_context_code           := 'DEFAULT';
25300 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
25301 l_event_class_code           := 'SALES_ORDER';
25302 l_event_type_code            := 'RMA_RCPT';
25303 l_line_definition_owner_code := 'S';
25304 l_line_definition_code       := 'PI_RMA_RCPT';
25305 --
25306 l_balance_type_code          := 'A';
25307 l_segment                     := NULL;
25308 l_ccid                        := NULL;
25309 l_adr_transaction_coa_id      := NULL;
25310 l_adr_accounting_coa_id       := NULL;
25311 l_adr_flexfield_segment_code  := NULL;
25312 l_adr_flex_value_set_id       := NULL;
25313 l_adr_value_type_code         := NULL;
25314 l_adr_value_combination_id    := NULL;
25315 l_adr_value_segment_code      := NULL;
25316 
25317 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25318 l_bflow_class_code           := '';    -- 4219869 Business Flow
25319 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25320 l_budgetary_control_flag     := 'N';
25321 
25322 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25323 l_bflow_applied_to_amt       := NULL; -- 5132302
25324 l_entered_amt_idx            := NULL;          -- 4262811
25325 l_accted_amt_idx             := NULL;          -- 4262811
25326 l_acc_rev_flag               := NULL;          -- 4262811
25327 l_accrual_line_num           := NULL;          -- 4262811
25328 l_tmp_amt                    := NULL;          -- 4262811
25329 --
25330  
25331 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25332     l_balance_type_code <> 'B' THEN
25333 IF NVL(p_source_97,9E125) =  37
25334  THEN 
25335 
25336    --
25337    XLA_AE_LINES_PKG.SetNewLine;
25338 
25339    p_balance_type_code          := l_balance_type_code;
25340    -- set the flag so later we will know whether the gain loss line needs to be created
25341    
25342    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25343      p_actual_flag :='A';
25344    END IF;
25345 
25346    --
25347    -- bulk performance
25348    --
25349    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25350                                       p_header_num   => 0); -- 4262811
25351    --
25352    -- set accounting line options
25353    --
25354    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25355            p_natural_side_code          => 'D'
25356          , p_gain_or_loss_flag          => 'N'
25357          , p_gl_transfer_mode_code      => 'S'
25358          , p_acct_entry_type_code       => 'A'
25359          , p_switch_side_flag           => 'Y'
25360          , p_merge_duplicate_code       => 'N'
25361          );
25362    --
25363    l_acc_rev_natural_side_code := 'C';  -- 4262811
25364    -- 
25365    --
25366    -- set accounting line type info
25367    --
25368    xla_ae_lines_pkg.SetAcctLineType
25369       (p_component_type             => l_component_type
25370       ,p_event_type_code            => l_event_type_code
25371       ,p_line_definition_owner_code => l_line_definition_owner_code
25372       ,p_line_definition_code       => l_line_definition_code
25373       ,p_accounting_line_code       => l_component_code
25374       ,p_accounting_line_type_code  => l_component_type_code
25375       ,p_accounting_line_appl_id    => l_component_appl_id
25376       ,p_amb_context_code           => l_amb_context_code
25377       ,p_entity_code                => l_entity_code
25378       ,p_event_class_code           => l_event_class_code);
25379    --
25380    -- set accounting class
25381    --
25382    xla_ae_lines_pkg.SetAcctClass(
25383            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
25384          , p_ae_header_id           => l_ae_header_id
25385          );
25386 
25387    --
25388    -- set rounding class
25389    --
25390    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25391                       'COST_UPDATE_ADJUSTMENT';
25392 
25393    --
25394    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25395    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25396    --
25397    -- bulk performance
25398    --
25399    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25400 
25401    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25402       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25403 
25404    -- 4955764
25405    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25406       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25407 
25408    -- 4458381 Public Sector Enh
25409    
25410    --
25411    -- set accounting attributes for the line type
25412    --
25413    l_entered_amt_idx := 3;
25414    l_accted_amt_idx  := 8;
25415    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25416    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25417    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
25418    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25419    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
25420    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25421    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
25422    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25423    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
25424    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25425    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
25426    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25427    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
25428    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25429    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
25430    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25431    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
25432 
25433    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25434    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25435 
25436    ---------------------------------------------------------------------------------------------------------------
25437    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25438    ---------------------------------------------------------------------------------------------------------------
25439    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25440 
25441    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25442    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25443 
25444    IF xla_accounting_cache_pkg.GetValueChar
25445          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25446          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25447    AND l_bflow_method_code = 'PRIOR_ENTRY'
25448 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25449    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25450          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25451        )
25452    THEN
25453          xla_ae_lines_pkg.BflowUpgEntry
25454            (p_business_method_code    => l_bflow_method_code
25455            ,p_business_class_code     => l_bflow_class_code
25456            ,p_balance_type            => l_balance_type_code);
25457    ELSE
25458       NULL;
25459 -- No business flow processing for business flow method of NONE.
25460    END IF;
25461 
25462    --
25463    -- call analytical criteria
25464    --
25465    
25466    --
25467    -- call description
25468    --
25469    
25470 xla_ae_lines_pkg.SetLineDescription(
25471    p_ae_header_id => l_ae_header_id
25472   ,p_description  => Description_1 (
25473      p_application_id         => p_application_id
25474    , p_ae_header_id           => l_ae_header_id 
25475 , p_source_1 => p_source_1
25476 , p_source_2 => p_source_2
25477 , p_source_3 => p_source_3
25478 , p_source_4 => p_source_4
25479 , p_source_5 => p_source_5
25480    )
25481 );
25482 
25483 
25484    --
25485    -- call ADRs
25486    -- Bug 4922099
25487    --
25488    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25489         (NVL(l_actual_upg_option, 'N') = 'O') OR
25490         (NVL(l_enc_upg_option, 'N') = 'O')
25491       )
25492    THEN
25493    NULL;
25494    --
25495    --
25496    
25497   l_ccid := AcctDerRule_6(
25498            p_application_id           => p_application_id
25499          , p_ae_header_id             => l_ae_header_id 
25500 , p_source_11 => p_source_11
25501          , x_transaction_coa_id       => l_adr_transaction_coa_id
25502          , x_accounting_coa_id        => l_adr_accounting_coa_id
25503          , x_value_type_code          => l_adr_value_type_code
25504          , p_side                     => 'NA'
25505    );
25506 
25507    xla_ae_lines_pkg.set_ccid(
25508     p_code_combination_id          => l_ccid
25509   , p_value_type_code              => l_adr_value_type_code
25510   , p_transaction_coa_id           => l_adr_transaction_coa_id
25511   , p_accounting_coa_id            => l_adr_accounting_coa_id
25512   , p_adr_code                     => 'CST_DEFAULT'
25513   , p_adr_type_code                => 'S'
25514   , p_component_type               => l_component_type
25515   , p_component_code               => l_component_code
25516   , p_component_type_code          => l_component_type_code
25517   , p_component_appl_id            => l_component_appl_id
25518   , p_amb_context_code             => l_amb_context_code
25519   , p_side                         => 'NA'
25520   );
25521 
25522 
25523    --
25524    --
25525    END IF;
25526    --
25527    -- Bug 4922099
25528    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25529           (NVL(l_enc_upg_option, 'N') = 'O')
25530         ) AND
25531         (l_bflow_method_code = 'PRIOR_ENTRY')
25532       )
25533    THEN
25534       IF
25535       --
25536       1 = 2
25537       --
25538       THEN
25539       xla_accounting_err_pkg.build_message
25540                                     (p_appli_s_name            => 'XLA'
25541                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25542                                     ,p_token_1                 => 'LINE_NUMBER'
25543                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25544                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25545                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25546                                                                              l_component_type
25547                                                                             ,l_component_code
25548                                                                             ,l_component_type_code
25549                                                                             ,l_component_appl_id
25550                                                                             ,l_amb_context_code
25551                                                                             ,l_entity_code
25552                                                                             ,l_event_class_code
25553                                                                            )
25554                                     ,p_token_3                 => 'OWNER'
25555                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25556                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25557                                                                           ,p_lookup_code    => l_component_type_code
25558                                                                          )
25559                                     ,p_token_4                 => 'PRODUCT_NAME'
25560                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25561                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25562                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25563                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25564                                     ,p_ae_header_id            =>  NULL
25565                                        );
25566 
25567         IF (C_LEVEL_ERROR>= g_log_level) THEN
25568                  trace
25569                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25570                       ,p_level    => C_LEVEL_ERROR
25571                       ,p_module   => l_log_module);
25572         END IF;
25573       END IF;
25574    END IF;
25575    --
25576    --
25577    ------------------------------------------------------------------------------------------------
25578    -- 4219869 Business Flow
25579    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25580    -- Prior Entry.  Currently, the following code is always generated.
25581    ------------------------------------------------------------------------------------------------
25582    XLA_AE_LINES_PKG.ValidateCurrentLine;
25583 
25584    ------------------------------------------------------------------------------------
25585    -- 4219869 Business Flow
25586    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25587    ------------------------------------------------------------------------------------
25588    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25589 
25590    ----------------------------------------------------------------------------------
25591    -- 4219869 Business Flow
25592    -- Update journal entry status -- Need to generate this within IF <condition>
25593    ----------------------------------------------------------------------------------
25594    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25595          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25596          ,p_balance_type_code => l_balance_type_code
25597          );
25598 
25599    -------------------------------------------------------------------------------------------
25600    -- 4262811 - Generate the Accrual Reversal lines
25601    -------------------------------------------------------------------------------------------
25602    BEGIN
25603       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25604                               (g_array_event(p_event_id).array_value_num('header_index'));
25605       IF l_acc_rev_flag IS NULL THEN
25606          l_acc_rev_flag := 'N';
25607       END IF;
25608    EXCEPTION
25609       WHEN OTHERS THEN
25610          l_acc_rev_flag := 'N';
25611    END;
25612    --
25613    IF (l_acc_rev_flag = 'Y') THEN
25614 
25615        -- 4645092  ------------------------------------------------------------------------------
25616        -- To allow MPA report to determine if it should generate report process
25617        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25618        ------------------------------------------------------------------------------------------
25619 
25620        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25621        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25622    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25623    -- call ADRs
25624    -- Bug 4922099
25625    --
25626    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25627         (NVL(l_actual_upg_option, 'N') = 'O') OR
25628         (NVL(l_enc_upg_option, 'N') = 'O')
25629       )
25630    THEN
25631    NULL;
25632    --
25633    --
25634    
25635   l_ccid := AcctDerRule_6(
25636            p_application_id           => p_application_id
25637          , p_ae_header_id             => l_ae_header_id 
25638 , p_source_11 => p_source_11
25639          , x_transaction_coa_id       => l_adr_transaction_coa_id
25640          , x_accounting_coa_id        => l_adr_accounting_coa_id
25641          , x_value_type_code          => l_adr_value_type_code
25642          , p_side                     => 'NA'
25643    );
25644 
25645    xla_ae_lines_pkg.set_ccid(
25646     p_code_combination_id          => l_ccid
25647   , p_value_type_code              => l_adr_value_type_code
25648   , p_transaction_coa_id           => l_adr_transaction_coa_id
25649   , p_accounting_coa_id            => l_adr_accounting_coa_id
25650   , p_adr_code                     => 'CST_DEFAULT'
25651   , p_adr_type_code                => 'S'
25652   , p_component_type               => l_component_type
25653   , p_component_code               => l_component_code
25654   , p_component_type_code          => l_component_type_code
25655   , p_component_appl_id            => l_component_appl_id
25656   , p_amb_context_code             => l_amb_context_code
25657   , p_side                         => 'NA'
25658   );
25659 
25660 
25661    --
25662    --
25663    END IF;
25664 
25665        --
25666        -- Update the line information that should be overwritten
25667        --
25668        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25669                                          p_header_num   => 1);
25670        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25671 
25672        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25673 
25674        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25675           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25676        END IF;
25677 
25678       --
25679       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25680       --
25681       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25682           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25683       ELSE
25684           ---------------------------------------------------------------------------------------------------
25685           -- 4262811a Switch Sign
25686           ---------------------------------------------------------------------------------------------------
25687           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25688           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25689                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25690           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25691                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25692           -- 5132302
25693           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25694                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25695 
25696       END IF;
25697 
25698       -- 4955764
25699       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25700       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25701 
25702 
25703       XLA_AE_LINES_PKG.ValidateCurrentLine;
25704       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25705 
25706       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25707                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25708                ,p_balance_type_code => l_balance_type_code);
25709 
25710    END IF;
25711 
25712    -----------------------------------------------------------------------------------------
25713    -- 4262811 Multiperiod Accounting
25714    -----------------------------------------------------------------------------------------
25715      -- No MPA option is assigned.
25716 
25717 
25718 END IF;
25719 END IF;
25720 --
25721 
25722 --
25723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25724    trace
25725       (p_msg      => 'END of AcctLineType_71'
25726       ,p_level    => C_LEVEL_PROCEDURE
25727       ,p_module   => l_log_module);
25728 END IF;
25729 --
25730 EXCEPTION
25731   WHEN xla_exceptions_pkg.application_exception THEN
25732       RAISE;
25733   WHEN OTHERS THEN
25734        xla_exceptions_pkg.raise_message
25735            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_71');
25736 END AcctLineType_71;
25737 --
25738 
25739 ---------------------------------------
25740 --
25741 -- PRIVATE FUNCTION
25742 --         AcctLineType_72
25743 --
25744 ---------------------------------------
25745 PROCEDURE AcctLineType_72 (
25746   p_application_id        IN NUMBER
25747  ,p_event_id              IN NUMBER
25748  ,p_calculate_acctd_flag  IN VARCHAR2
25749  ,p_calculate_g_l_flag    IN VARCHAR2
25750  ,p_actual_flag           IN OUT VARCHAR2
25751  ,p_balance_type_code     OUT VARCHAR2
25752  ,p_gain_or_loss_ref      OUT VARCHAR2
25753  
25754 --TRANSACTION_ID
25755  , p_source_1            IN NUMBER
25756 --Item Concatenated Segments
25757  , p_source_2            IN VARCHAR2
25758 --Transaction Quantity
25759  , p_source_3            IN NUMBER
25760 --Transaction Unit of Measure Code
25761  , p_source_4            IN VARCHAR2
25762 --Inventory Transaction Type Description
25763  , p_source_5            IN VARCHAR2
25764 --Cost Management Default Account
25765  , p_source_11            IN NUMBER
25766 --DISTRIBUTION_IDENTIFIER
25767  , p_source_84            IN NUMBER
25768 --Distribution Type
25769  , p_source_85            IN VARCHAR2
25770  , p_source_85_meaning    IN VARCHAR2
25771 --Entered Currency Code
25772  , p_source_88            IN VARCHAR2
25773 --Entered Amount
25774  , p_source_91            IN NUMBER
25775 --Currency Conversion Date
25776  , p_source_92            IN DATE
25777 --Currency Conversion Rate
25778  , p_source_93            IN NUMBER
25779 --Currency Conversion Type
25780  , p_source_94            IN VARCHAR2
25781 --Accounted Amount
25782  , p_source_95            IN NUMBER
25783 --Accounting Line Type
25784  , p_source_97            IN NUMBER
25785 )
25786 IS
25787 
25788 l_component_type              VARCHAR2(80);
25789 l_component_code              VARCHAR2(30);
25790 l_component_type_code         VARCHAR2(1);
25791 l_component_appl_id           INTEGER;
25792 l_amb_context_code            VARCHAR2(30);
25793 l_entity_code                 VARCHAR2(30);
25794 l_event_class_code            VARCHAR2(30);
25795 l_ae_header_id                NUMBER;
25796 l_event_type_code             VARCHAR2(30);
25797 l_line_definition_code        VARCHAR2(30);
25798 l_line_definition_owner_code  VARCHAR2(1);
25799 --
25800 -- adr variables
25801 l_segment                     VARCHAR2(30);
25802 l_ccid                        NUMBER;
25803 l_adr_transaction_coa_id      NUMBER;
25804 l_adr_accounting_coa_id       NUMBER;
25805 l_adr_flexfield_segment_code  VARCHAR2(30);
25806 l_adr_flex_value_set_id       NUMBER;
25807 l_adr_value_type_code         VARCHAR2(30);
25808 l_adr_value_combination_id    NUMBER;
25809 l_adr_value_segment_code      VARCHAR2(30);
25810 
25811 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25812 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25813 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25814 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25815 
25816 -- 4262811 Variables ------------------------------------------------------------------------------------------
25817 l_entered_amt_idx             NUMBER;
25818 l_accted_amt_idx              NUMBER;
25819 l_acc_rev_flag                VARCHAR2(1);
25820 l_accrual_line_num            NUMBER;
25821 l_tmp_amt                     NUMBER;
25822 l_acc_rev_natural_side_code   VARCHAR2(1);
25823 
25824 l_num_entries                 NUMBER;
25825 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25826 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25827 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25828 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25829 l_recog_line_1                NUMBER;
25830 l_recog_line_2                NUMBER;
25831 
25832 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25833 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25834 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25835 
25836 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25837 
25838 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25839 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25840 
25841 ---------------------------------------------------------------------------------------------------------------
25842 
25843 
25844 --
25845 -- bulk performance
25846 --
25847 l_balance_type_code           VARCHAR2(1);
25848 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25849 l_log_module                  VARCHAR2(240);
25850 
25851 --
25852 -- Upgrade strategy
25853 --
25854 l_actual_upg_option           VARCHAR2(1);
25855 l_enc_upg_option           VARCHAR2(1);
25856 
25857 --
25858 BEGIN
25859 --
25860 IF g_log_enabled THEN
25861       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
25862 END IF;
25863 --
25864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25865 
25866       trace
25867          (p_msg      => 'BEGIN of AcctLineType_72'
25868          ,p_level    => C_LEVEL_PROCEDURE
25869          ,p_module   => l_log_module);
25870 
25871 END IF;
25872 --
25873 l_component_type             := 'AMB_JLT';
25874 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
25875 l_component_type_code        := 'S';
25876 l_component_appl_id          :=  707;
25877 l_amb_context_code           := 'DEFAULT';
25878 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
25879 l_event_class_code           := 'SALES_ORDER';
25880 l_event_type_code            := 'RMA_RETURN';
25881 l_line_definition_owner_code := 'S';
25882 l_line_definition_code       := 'PI_RMA_RETURN';
25883 --
25884 l_balance_type_code          := 'A';
25885 l_segment                     := NULL;
25886 l_ccid                        := NULL;
25887 l_adr_transaction_coa_id      := NULL;
25888 l_adr_accounting_coa_id       := NULL;
25889 l_adr_flexfield_segment_code  := NULL;
25890 l_adr_flex_value_set_id       := NULL;
25891 l_adr_value_type_code         := NULL;
25892 l_adr_value_combination_id    := NULL;
25893 l_adr_value_segment_code      := NULL;
25894 
25895 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25896 l_bflow_class_code           := '';    -- 4219869 Business Flow
25897 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25898 l_budgetary_control_flag     := 'N';
25899 
25900 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25901 l_bflow_applied_to_amt       := NULL; -- 5132302
25902 l_entered_amt_idx            := NULL;          -- 4262811
25903 l_accted_amt_idx             := NULL;          -- 4262811
25904 l_acc_rev_flag               := NULL;          -- 4262811
25905 l_accrual_line_num           := NULL;          -- 4262811
25906 l_tmp_amt                    := NULL;          -- 4262811
25907 --
25908  
25909 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25910     l_balance_type_code <> 'B' THEN
25911 IF NVL(p_source_97,9E125) =  37
25912  THEN 
25913 
25914    --
25915    XLA_AE_LINES_PKG.SetNewLine;
25916 
25917    p_balance_type_code          := l_balance_type_code;
25918    -- set the flag so later we will know whether the gain loss line needs to be created
25919    
25920    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25921      p_actual_flag :='A';
25922    END IF;
25923 
25924    --
25925    -- bulk performance
25926    --
25927    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25928                                       p_header_num   => 0); -- 4262811
25929    --
25930    -- set accounting line options
25931    --
25932    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25933            p_natural_side_code          => 'D'
25934          , p_gain_or_loss_flag          => 'N'
25935          , p_gl_transfer_mode_code      => 'S'
25936          , p_acct_entry_type_code       => 'A'
25937          , p_switch_side_flag           => 'Y'
25938          , p_merge_duplicate_code       => 'N'
25939          );
25940    --
25941    l_acc_rev_natural_side_code := 'C';  -- 4262811
25942    -- 
25943    --
25944    -- set accounting line type info
25945    --
25946    xla_ae_lines_pkg.SetAcctLineType
25947       (p_component_type             => l_component_type
25948       ,p_event_type_code            => l_event_type_code
25949       ,p_line_definition_owner_code => l_line_definition_owner_code
25950       ,p_line_definition_code       => l_line_definition_code
25951       ,p_accounting_line_code       => l_component_code
25952       ,p_accounting_line_type_code  => l_component_type_code
25953       ,p_accounting_line_appl_id    => l_component_appl_id
25954       ,p_amb_context_code           => l_amb_context_code
25955       ,p_entity_code                => l_entity_code
25956       ,p_event_class_code           => l_event_class_code);
25957    --
25958    -- set accounting class
25959    --
25960    xla_ae_lines_pkg.SetAcctClass(
25961            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
25962          , p_ae_header_id           => l_ae_header_id
25963          );
25964 
25965    --
25966    -- set rounding class
25967    --
25968    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25969                       'COST_UPDATE_ADJUSTMENT';
25970 
25971    --
25972    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25973    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25974    --
25975    -- bulk performance
25976    --
25977    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25978 
25979    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25980       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25981 
25982    -- 4955764
25983    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25984       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25985 
25986    -- 4458381 Public Sector Enh
25987    
25988    --
25989    -- set accounting attributes for the line type
25990    --
25991    l_entered_amt_idx := 3;
25992    l_accted_amt_idx  := 8;
25993    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25994    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25995    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
25996    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25997    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
25998    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25999    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
26000    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26001    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
26002    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26003    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
26004    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26005    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
26006    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26007    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
26008    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26009    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
26010 
26011    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26012    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26013 
26014    ---------------------------------------------------------------------------------------------------------------
26015    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26016    ---------------------------------------------------------------------------------------------------------------
26017    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26018 
26019    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26020    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26021 
26022    IF xla_accounting_cache_pkg.GetValueChar
26023          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26024          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26025    AND l_bflow_method_code = 'PRIOR_ENTRY'
26026 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26027    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26028          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26029        )
26030    THEN
26031          xla_ae_lines_pkg.BflowUpgEntry
26032            (p_business_method_code    => l_bflow_method_code
26033            ,p_business_class_code     => l_bflow_class_code
26034            ,p_balance_type            => l_balance_type_code);
26035    ELSE
26036       NULL;
26037 -- No business flow processing for business flow method of NONE.
26038    END IF;
26039 
26040    --
26041    -- call analytical criteria
26042    --
26043    
26044    --
26045    -- call description
26046    --
26047    
26048 xla_ae_lines_pkg.SetLineDescription(
26049    p_ae_header_id => l_ae_header_id
26050   ,p_description  => Description_1 (
26051      p_application_id         => p_application_id
26052    , p_ae_header_id           => l_ae_header_id 
26053 , p_source_1 => p_source_1
26054 , p_source_2 => p_source_2
26055 , p_source_3 => p_source_3
26056 , p_source_4 => p_source_4
26057 , p_source_5 => p_source_5
26058    )
26059 );
26060 
26061 
26062    --
26063    -- call ADRs
26064    -- Bug 4922099
26065    --
26066    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26067         (NVL(l_actual_upg_option, 'N') = 'O') OR
26068         (NVL(l_enc_upg_option, 'N') = 'O')
26069       )
26070    THEN
26071    NULL;
26072    --
26073    --
26074    
26075   l_ccid := AcctDerRule_6(
26076            p_application_id           => p_application_id
26077          , p_ae_header_id             => l_ae_header_id 
26078 , p_source_11 => p_source_11
26079          , x_transaction_coa_id       => l_adr_transaction_coa_id
26080          , x_accounting_coa_id        => l_adr_accounting_coa_id
26081          , x_value_type_code          => l_adr_value_type_code
26082          , p_side                     => 'NA'
26083    );
26084 
26085    xla_ae_lines_pkg.set_ccid(
26086     p_code_combination_id          => l_ccid
26087   , p_value_type_code              => l_adr_value_type_code
26088   , p_transaction_coa_id           => l_adr_transaction_coa_id
26089   , p_accounting_coa_id            => l_adr_accounting_coa_id
26090   , p_adr_code                     => 'CST_DEFAULT'
26091   , p_adr_type_code                => 'S'
26092   , p_component_type               => l_component_type
26093   , p_component_code               => l_component_code
26094   , p_component_type_code          => l_component_type_code
26095   , p_component_appl_id            => l_component_appl_id
26096   , p_amb_context_code             => l_amb_context_code
26097   , p_side                         => 'NA'
26098   );
26099 
26100 
26101    --
26102    --
26103    END IF;
26104    --
26105    -- Bug 4922099
26106    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26107           (NVL(l_enc_upg_option, 'N') = 'O')
26108         ) AND
26109         (l_bflow_method_code = 'PRIOR_ENTRY')
26110       )
26111    THEN
26112       IF
26113       --
26114       1 = 2
26115       --
26116       THEN
26117       xla_accounting_err_pkg.build_message
26118                                     (p_appli_s_name            => 'XLA'
26119                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26120                                     ,p_token_1                 => 'LINE_NUMBER'
26121                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26122                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26123                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26124                                                                              l_component_type
26125                                                                             ,l_component_code
26126                                                                             ,l_component_type_code
26127                                                                             ,l_component_appl_id
26128                                                                             ,l_amb_context_code
26129                                                                             ,l_entity_code
26130                                                                             ,l_event_class_code
26131                                                                            )
26132                                     ,p_token_3                 => 'OWNER'
26133                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26134                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26135                                                                           ,p_lookup_code    => l_component_type_code
26136                                                                          )
26137                                     ,p_token_4                 => 'PRODUCT_NAME'
26138                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26139                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26140                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26141                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26142                                     ,p_ae_header_id            =>  NULL
26143                                        );
26144 
26145         IF (C_LEVEL_ERROR>= g_log_level) THEN
26146                  trace
26147                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26148                       ,p_level    => C_LEVEL_ERROR
26149                       ,p_module   => l_log_module);
26150         END IF;
26151       END IF;
26152    END IF;
26153    --
26154    --
26155    ------------------------------------------------------------------------------------------------
26156    -- 4219869 Business Flow
26157    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26158    -- Prior Entry.  Currently, the following code is always generated.
26159    ------------------------------------------------------------------------------------------------
26160    XLA_AE_LINES_PKG.ValidateCurrentLine;
26161 
26162    ------------------------------------------------------------------------------------
26163    -- 4219869 Business Flow
26164    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26165    ------------------------------------------------------------------------------------
26166    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26167 
26168    ----------------------------------------------------------------------------------
26169    -- 4219869 Business Flow
26170    -- Update journal entry status -- Need to generate this within IF <condition>
26171    ----------------------------------------------------------------------------------
26172    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26173          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26174          ,p_balance_type_code => l_balance_type_code
26175          );
26176 
26177    -------------------------------------------------------------------------------------------
26178    -- 4262811 - Generate the Accrual Reversal lines
26179    -------------------------------------------------------------------------------------------
26180    BEGIN
26181       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26182                               (g_array_event(p_event_id).array_value_num('header_index'));
26183       IF l_acc_rev_flag IS NULL THEN
26184          l_acc_rev_flag := 'N';
26185       END IF;
26186    EXCEPTION
26187       WHEN OTHERS THEN
26188          l_acc_rev_flag := 'N';
26189    END;
26190    --
26191    IF (l_acc_rev_flag = 'Y') THEN
26192 
26193        -- 4645092  ------------------------------------------------------------------------------
26194        -- To allow MPA report to determine if it should generate report process
26195        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26196        ------------------------------------------------------------------------------------------
26197 
26198        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26199        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26200    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26201    -- call ADRs
26202    -- Bug 4922099
26203    --
26204    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26205         (NVL(l_actual_upg_option, 'N') = 'O') OR
26206         (NVL(l_enc_upg_option, 'N') = 'O')
26207       )
26208    THEN
26209    NULL;
26210    --
26211    --
26212    
26213   l_ccid := AcctDerRule_6(
26214            p_application_id           => p_application_id
26215          , p_ae_header_id             => l_ae_header_id 
26216 , p_source_11 => p_source_11
26217          , x_transaction_coa_id       => l_adr_transaction_coa_id
26218          , x_accounting_coa_id        => l_adr_accounting_coa_id
26219          , x_value_type_code          => l_adr_value_type_code
26220          , p_side                     => 'NA'
26221    );
26222 
26223    xla_ae_lines_pkg.set_ccid(
26224     p_code_combination_id          => l_ccid
26225   , p_value_type_code              => l_adr_value_type_code
26226   , p_transaction_coa_id           => l_adr_transaction_coa_id
26227   , p_accounting_coa_id            => l_adr_accounting_coa_id
26228   , p_adr_code                     => 'CST_DEFAULT'
26229   , p_adr_type_code                => 'S'
26230   , p_component_type               => l_component_type
26231   , p_component_code               => l_component_code
26232   , p_component_type_code          => l_component_type_code
26233   , p_component_appl_id            => l_component_appl_id
26234   , p_amb_context_code             => l_amb_context_code
26235   , p_side                         => 'NA'
26236   );
26237 
26238 
26239    --
26240    --
26241    END IF;
26242 
26243        --
26244        -- Update the line information that should be overwritten
26245        --
26246        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26247                                          p_header_num   => 1);
26248        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26249 
26250        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26251 
26252        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26253           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26254        END IF;
26255 
26256       --
26257       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26258       --
26259       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26260           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26261       ELSE
26262           ---------------------------------------------------------------------------------------------------
26263           -- 4262811a Switch Sign
26264           ---------------------------------------------------------------------------------------------------
26265           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26266           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26267                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26268           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26269                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26270           -- 5132302
26271           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26272                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26273 
26274       END IF;
26275 
26276       -- 4955764
26277       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26278       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26279 
26280 
26281       XLA_AE_LINES_PKG.ValidateCurrentLine;
26282       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26283 
26284       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26285                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26286                ,p_balance_type_code => l_balance_type_code);
26287 
26288    END IF;
26289 
26290    -----------------------------------------------------------------------------------------
26291    -- 4262811 Multiperiod Accounting
26292    -----------------------------------------------------------------------------------------
26293      -- No MPA option is assigned.
26294 
26295 
26296 END IF;
26297 END IF;
26298 --
26299 
26300 --
26301 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26302    trace
26303       (p_msg      => 'END of AcctLineType_72'
26304       ,p_level    => C_LEVEL_PROCEDURE
26305       ,p_module   => l_log_module);
26306 END IF;
26307 --
26308 EXCEPTION
26309   WHEN xla_exceptions_pkg.application_exception THEN
26310       RAISE;
26311   WHEN OTHERS THEN
26312        xla_exceptions_pkg.raise_message
26313            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_72');
26314 END AcctLineType_72;
26315 --
26316 
26317 ---------------------------------------
26318 --
26319 -- PRIVATE FUNCTION
26320 --         AcctLineType_73
26321 --
26322 ---------------------------------------
26323 PROCEDURE AcctLineType_73 (
26324   p_application_id        IN NUMBER
26325  ,p_event_id              IN NUMBER
26326  ,p_calculate_acctd_flag  IN VARCHAR2
26327  ,p_calculate_g_l_flag    IN VARCHAR2
26328  ,p_actual_flag           IN OUT VARCHAR2
26329  ,p_balance_type_code     OUT VARCHAR2
26330  ,p_gain_or_loss_ref      OUT VARCHAR2
26331  
26332 --TRANSACTION_ID
26333  , p_source_1            IN NUMBER
26334 --Item Concatenated Segments
26335  , p_source_2            IN VARCHAR2
26336 --Transaction Quantity
26337  , p_source_3            IN NUMBER
26338 --Transaction Unit of Measure Code
26339  , p_source_4            IN VARCHAR2
26340 --Inventory Transaction Type Description
26341  , p_source_5            IN VARCHAR2
26342 --Cost Management Default Account
26343  , p_source_11            IN NUMBER
26344 --DISTRIBUTION_IDENTIFIER
26345  , p_source_84            IN NUMBER
26346 --Distribution Type
26347  , p_source_85            IN VARCHAR2
26348  , p_source_85_meaning    IN VARCHAR2
26349 --Entered Currency Code
26350  , p_source_88            IN VARCHAR2
26351 --Entered Amount
26352  , p_source_91            IN NUMBER
26353 --Currency Conversion Date
26354  , p_source_92            IN DATE
26355 --Currency Conversion Rate
26356  , p_source_93            IN NUMBER
26357 --Currency Conversion Type
26358  , p_source_94            IN VARCHAR2
26359 --Accounted Amount
26360  , p_source_95            IN NUMBER
26361 --Accounting Line Type
26362  , p_source_97            IN NUMBER
26363 )
26364 IS
26365 
26366 l_component_type              VARCHAR2(80);
26367 l_component_code              VARCHAR2(30);
26368 l_component_type_code         VARCHAR2(1);
26369 l_component_appl_id           INTEGER;
26370 l_amb_context_code            VARCHAR2(30);
26371 l_entity_code                 VARCHAR2(30);
26372 l_event_class_code            VARCHAR2(30);
26373 l_ae_header_id                NUMBER;
26374 l_event_type_code             VARCHAR2(30);
26375 l_line_definition_code        VARCHAR2(30);
26376 l_line_definition_owner_code  VARCHAR2(1);
26377 --
26378 -- adr variables
26379 l_segment                     VARCHAR2(30);
26380 l_ccid                        NUMBER;
26381 l_adr_transaction_coa_id      NUMBER;
26382 l_adr_accounting_coa_id       NUMBER;
26383 l_adr_flexfield_segment_code  VARCHAR2(30);
26384 l_adr_flex_value_set_id       NUMBER;
26385 l_adr_value_type_code         VARCHAR2(30);
26386 l_adr_value_combination_id    NUMBER;
26387 l_adr_value_segment_code      VARCHAR2(30);
26388 
26389 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26390 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26391 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26392 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26393 
26394 -- 4262811 Variables ------------------------------------------------------------------------------------------
26395 l_entered_amt_idx             NUMBER;
26396 l_accted_amt_idx              NUMBER;
26397 l_acc_rev_flag                VARCHAR2(1);
26398 l_accrual_line_num            NUMBER;
26399 l_tmp_amt                     NUMBER;
26400 l_acc_rev_natural_side_code   VARCHAR2(1);
26401 
26402 l_num_entries                 NUMBER;
26403 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26404 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26405 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26406 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26407 l_recog_line_1                NUMBER;
26408 l_recog_line_2                NUMBER;
26409 
26410 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26411 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26412 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26413 
26414 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26415 
26416 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26417 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26418 
26419 ---------------------------------------------------------------------------------------------------------------
26420 
26421 
26422 --
26423 -- bulk performance
26424 --
26425 l_balance_type_code           VARCHAR2(1);
26426 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26427 l_log_module                  VARCHAR2(240);
26428 
26429 --
26430 -- Upgrade strategy
26431 --
26432 l_actual_upg_option           VARCHAR2(1);
26433 l_enc_upg_option           VARCHAR2(1);
26434 
26435 --
26436 BEGIN
26437 --
26438 IF g_log_enabled THEN
26439       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
26440 END IF;
26441 --
26442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26443 
26444       trace
26445          (p_msg      => 'BEGIN of AcctLineType_73'
26446          ,p_level    => C_LEVEL_PROCEDURE
26447          ,p_module   => l_log_module);
26448 
26449 END IF;
26450 --
26451 l_component_type             := 'AMB_JLT';
26452 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
26453 l_component_type_code        := 'S';
26454 l_component_appl_id          :=  707;
26455 l_amb_context_code           := 'DEFAULT';
26456 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
26457 l_event_class_code           := 'MTL_COST_UPD';
26458 l_event_type_code            := 'STD_COST_UPD';
26459 l_line_definition_owner_code := 'S';
26460 l_line_definition_code       := 'PI_STD_COST_UPD';
26461 --
26462 l_balance_type_code          := 'A';
26463 l_segment                     := NULL;
26464 l_ccid                        := NULL;
26465 l_adr_transaction_coa_id      := NULL;
26466 l_adr_accounting_coa_id       := NULL;
26467 l_adr_flexfield_segment_code  := NULL;
26468 l_adr_flex_value_set_id       := NULL;
26469 l_adr_value_type_code         := NULL;
26470 l_adr_value_combination_id    := NULL;
26471 l_adr_value_segment_code      := NULL;
26472 
26473 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26474 l_bflow_class_code           := '';    -- 4219869 Business Flow
26475 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26476 l_budgetary_control_flag     := 'N';
26477 
26478 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26479 l_bflow_applied_to_amt       := NULL; -- 5132302
26480 l_entered_amt_idx            := NULL;          -- 4262811
26481 l_accted_amt_idx             := NULL;          -- 4262811
26482 l_acc_rev_flag               := NULL;          -- 4262811
26483 l_accrual_line_num           := NULL;          -- 4262811
26484 l_tmp_amt                    := NULL;          -- 4262811
26485 --
26486  
26487 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26488     l_balance_type_code <> 'B' THEN
26489 IF NVL(p_source_97,9E125) =  2
26490  THEN 
26491 
26492    --
26493    XLA_AE_LINES_PKG.SetNewLine;
26494 
26495    p_balance_type_code          := l_balance_type_code;
26496    -- set the flag so later we will know whether the gain loss line needs to be created
26497    
26498    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26499      p_actual_flag :='A';
26500    END IF;
26501 
26502    --
26503    -- bulk performance
26504    --
26505    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26506                                       p_header_num   => 0); -- 4262811
26507    --
26508    -- set accounting line options
26509    --
26510    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26511            p_natural_side_code          => 'D'
26512          , p_gain_or_loss_flag          => 'N'
26513          , p_gl_transfer_mode_code      => 'S'
26514          , p_acct_entry_type_code       => 'A'
26515          , p_switch_side_flag           => 'Y'
26516          , p_merge_duplicate_code       => 'N'
26517          );
26518    --
26519    l_acc_rev_natural_side_code := 'C';  -- 4262811
26520    -- 
26521    --
26522    -- set accounting line type info
26523    --
26524    xla_ae_lines_pkg.SetAcctLineType
26525       (p_component_type             => l_component_type
26526       ,p_event_type_code            => l_event_type_code
26527       ,p_line_definition_owner_code => l_line_definition_owner_code
26528       ,p_line_definition_code       => l_line_definition_code
26529       ,p_accounting_line_code       => l_component_code
26530       ,p_accounting_line_type_code  => l_component_type_code
26531       ,p_accounting_line_appl_id    => l_component_appl_id
26532       ,p_amb_context_code           => l_amb_context_code
26533       ,p_entity_code                => l_entity_code
26534       ,p_event_class_code           => l_event_class_code);
26535    --
26536    -- set accounting class
26537    --
26538    xla_ae_lines_pkg.SetAcctClass(
26539            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
26540          , p_ae_header_id           => l_ae_header_id
26541          );
26542 
26543    --
26544    -- set rounding class
26545    --
26546    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26547                       'COST_UPDATE_ADJUSTMENT';
26548 
26549    --
26550    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26551    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26552    --
26553    -- bulk performance
26554    --
26555    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26556 
26557    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26558       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26559 
26560    -- 4955764
26561    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26563 
26564    -- 4458381 Public Sector Enh
26565    
26566    --
26567    -- set accounting attributes for the line type
26568    --
26569    l_entered_amt_idx := 3;
26570    l_accted_amt_idx  := 8;
26571    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26572    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26573    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
26574    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26575    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
26576    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26577    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
26578    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26579    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
26580    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26581    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
26582    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26583    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
26584    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26585    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
26586    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26587    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
26588 
26589    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26590    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26591 
26592    ---------------------------------------------------------------------------------------------------------------
26593    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26594    ---------------------------------------------------------------------------------------------------------------
26595    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26596 
26597    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26598    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26599 
26600    IF xla_accounting_cache_pkg.GetValueChar
26601          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26602          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26603    AND l_bflow_method_code = 'PRIOR_ENTRY'
26604 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26605    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26606          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26607        )
26608    THEN
26609          xla_ae_lines_pkg.BflowUpgEntry
26610            (p_business_method_code    => l_bflow_method_code
26611            ,p_business_class_code     => l_bflow_class_code
26612            ,p_balance_type            => l_balance_type_code);
26613    ELSE
26614       NULL;
26615 -- No business flow processing for business flow method of NONE.
26616    END IF;
26617 
26618    --
26619    -- call analytical criteria
26620    --
26621    
26622    --
26623    -- call description
26624    --
26625    
26626 xla_ae_lines_pkg.SetLineDescription(
26627    p_ae_header_id => l_ae_header_id
26628   ,p_description  => Description_1 (
26629      p_application_id         => p_application_id
26630    , p_ae_header_id           => l_ae_header_id 
26631 , p_source_1 => p_source_1
26632 , p_source_2 => p_source_2
26633 , p_source_3 => p_source_3
26634 , p_source_4 => p_source_4
26635 , p_source_5 => p_source_5
26636    )
26637 );
26638 
26639 
26640    --
26641    -- call ADRs
26642    -- Bug 4922099
26643    --
26644    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26645         (NVL(l_actual_upg_option, 'N') = 'O') OR
26646         (NVL(l_enc_upg_option, 'N') = 'O')
26647       )
26648    THEN
26649    NULL;
26650    --
26651    --
26652    
26653   l_ccid := AcctDerRule_6(
26654            p_application_id           => p_application_id
26655          , p_ae_header_id             => l_ae_header_id 
26656 , p_source_11 => p_source_11
26657          , x_transaction_coa_id       => l_adr_transaction_coa_id
26658          , x_accounting_coa_id        => l_adr_accounting_coa_id
26659          , x_value_type_code          => l_adr_value_type_code
26660          , p_side                     => 'NA'
26661    );
26662 
26663    xla_ae_lines_pkg.set_ccid(
26664     p_code_combination_id          => l_ccid
26665   , p_value_type_code              => l_adr_value_type_code
26666   , p_transaction_coa_id           => l_adr_transaction_coa_id
26667   , p_accounting_coa_id            => l_adr_accounting_coa_id
26668   , p_adr_code                     => 'CST_DEFAULT'
26669   , p_adr_type_code                => 'S'
26670   , p_component_type               => l_component_type
26671   , p_component_code               => l_component_code
26672   , p_component_type_code          => l_component_type_code
26673   , p_component_appl_id            => l_component_appl_id
26674   , p_amb_context_code             => l_amb_context_code
26675   , p_side                         => 'NA'
26676   );
26677 
26678 
26679    --
26680    --
26681    END IF;
26682    --
26683    -- Bug 4922099
26684    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26685           (NVL(l_enc_upg_option, 'N') = 'O')
26686         ) AND
26687         (l_bflow_method_code = 'PRIOR_ENTRY')
26688       )
26689    THEN
26690       IF
26691       --
26692       1 = 2
26693       --
26694       THEN
26695       xla_accounting_err_pkg.build_message
26696                                     (p_appli_s_name            => 'XLA'
26697                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26698                                     ,p_token_1                 => 'LINE_NUMBER'
26699                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26700                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26701                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26702                                                                              l_component_type
26703                                                                             ,l_component_code
26704                                                                             ,l_component_type_code
26705                                                                             ,l_component_appl_id
26706                                                                             ,l_amb_context_code
26707                                                                             ,l_entity_code
26708                                                                             ,l_event_class_code
26709                                                                            )
26710                                     ,p_token_3                 => 'OWNER'
26711                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26712                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26713                                                                           ,p_lookup_code    => l_component_type_code
26714                                                                          )
26715                                     ,p_token_4                 => 'PRODUCT_NAME'
26716                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26717                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26718                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26719                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26720                                     ,p_ae_header_id            =>  NULL
26721                                        );
26722 
26723         IF (C_LEVEL_ERROR>= g_log_level) THEN
26724                  trace
26725                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26726                       ,p_level    => C_LEVEL_ERROR
26727                       ,p_module   => l_log_module);
26728         END IF;
26729       END IF;
26730    END IF;
26731    --
26732    --
26733    ------------------------------------------------------------------------------------------------
26734    -- 4219869 Business Flow
26735    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26736    -- Prior Entry.  Currently, the following code is always generated.
26737    ------------------------------------------------------------------------------------------------
26738    XLA_AE_LINES_PKG.ValidateCurrentLine;
26739 
26740    ------------------------------------------------------------------------------------
26741    -- 4219869 Business Flow
26742    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26743    ------------------------------------------------------------------------------------
26744    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26745 
26746    ----------------------------------------------------------------------------------
26747    -- 4219869 Business Flow
26748    -- Update journal entry status -- Need to generate this within IF <condition>
26749    ----------------------------------------------------------------------------------
26750    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26751          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26752          ,p_balance_type_code => l_balance_type_code
26753          );
26754 
26755    -------------------------------------------------------------------------------------------
26756    -- 4262811 - Generate the Accrual Reversal lines
26757    -------------------------------------------------------------------------------------------
26758    BEGIN
26759       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26760                               (g_array_event(p_event_id).array_value_num('header_index'));
26761       IF l_acc_rev_flag IS NULL THEN
26762          l_acc_rev_flag := 'N';
26763       END IF;
26764    EXCEPTION
26765       WHEN OTHERS THEN
26766          l_acc_rev_flag := 'N';
26767    END;
26768    --
26769    IF (l_acc_rev_flag = 'Y') THEN
26770 
26771        -- 4645092  ------------------------------------------------------------------------------
26772        -- To allow MPA report to determine if it should generate report process
26773        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26774        ------------------------------------------------------------------------------------------
26775 
26776        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26777        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26778    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26779    -- call ADRs
26780    -- Bug 4922099
26781    --
26782    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26783         (NVL(l_actual_upg_option, 'N') = 'O') OR
26784         (NVL(l_enc_upg_option, 'N') = 'O')
26785       )
26786    THEN
26787    NULL;
26788    --
26789    --
26790    
26791   l_ccid := AcctDerRule_6(
26792            p_application_id           => p_application_id
26793          , p_ae_header_id             => l_ae_header_id 
26794 , p_source_11 => p_source_11
26795          , x_transaction_coa_id       => l_adr_transaction_coa_id
26796          , x_accounting_coa_id        => l_adr_accounting_coa_id
26797          , x_value_type_code          => l_adr_value_type_code
26798          , p_side                     => 'NA'
26799    );
26800 
26801    xla_ae_lines_pkg.set_ccid(
26802     p_code_combination_id          => l_ccid
26803   , p_value_type_code              => l_adr_value_type_code
26804   , p_transaction_coa_id           => l_adr_transaction_coa_id
26805   , p_accounting_coa_id            => l_adr_accounting_coa_id
26806   , p_adr_code                     => 'CST_DEFAULT'
26807   , p_adr_type_code                => 'S'
26808   , p_component_type               => l_component_type
26809   , p_component_code               => l_component_code
26810   , p_component_type_code          => l_component_type_code
26811   , p_component_appl_id            => l_component_appl_id
26812   , p_amb_context_code             => l_amb_context_code
26813   , p_side                         => 'NA'
26814   );
26815 
26816 
26817    --
26818    --
26819    END IF;
26820 
26821        --
26822        -- Update the line information that should be overwritten
26823        --
26824        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26825                                          p_header_num   => 1);
26826        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26827 
26828        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26829 
26830        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26831           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26832        END IF;
26833 
26834       --
26835       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26836       --
26837       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26838           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26839       ELSE
26840           ---------------------------------------------------------------------------------------------------
26841           -- 4262811a Switch Sign
26842           ---------------------------------------------------------------------------------------------------
26843           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26844           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26845                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26846           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26847                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26848           -- 5132302
26849           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26850                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26851 
26852       END IF;
26853 
26854       -- 4955764
26855       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26856       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26857 
26858 
26859       XLA_AE_LINES_PKG.ValidateCurrentLine;
26860       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26861 
26862       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26863                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26864                ,p_balance_type_code => l_balance_type_code);
26865 
26866    END IF;
26867 
26868    -----------------------------------------------------------------------------------------
26869    -- 4262811 Multiperiod Accounting
26870    -----------------------------------------------------------------------------------------
26871      -- No MPA option is assigned.
26872 
26873 
26874 END IF;
26875 END IF;
26876 --
26877 
26878 --
26879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26880    trace
26881       (p_msg      => 'END of AcctLineType_73'
26882       ,p_level    => C_LEVEL_PROCEDURE
26883       ,p_module   => l_log_module);
26884 END IF;
26885 --
26886 EXCEPTION
26887   WHEN xla_exceptions_pkg.application_exception THEN
26888       RAISE;
26889   WHEN OTHERS THEN
26890        xla_exceptions_pkg.raise_message
26891            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_73');
26892 END AcctLineType_73;
26893 --
26894 
26895 ---------------------------------------
26896 --
26897 -- PRIVATE FUNCTION
26898 --         AcctLineType_74
26899 --
26900 ---------------------------------------
26901 PROCEDURE AcctLineType_74 (
26902   p_application_id        IN NUMBER
26903  ,p_event_id              IN NUMBER
26904  ,p_calculate_acctd_flag  IN VARCHAR2
26905  ,p_calculate_g_l_flag    IN VARCHAR2
26906  ,p_actual_flag           IN OUT VARCHAR2
26907  ,p_balance_type_code     OUT VARCHAR2
26908  ,p_gain_or_loss_ref      OUT VARCHAR2
26909  
26910 --TRANSACTION_ID
26911  , p_source_1            IN NUMBER
26912 --Item Concatenated Segments
26913  , p_source_2            IN VARCHAR2
26914 --Transaction Quantity
26915  , p_source_3            IN NUMBER
26916 --Transaction Unit of Measure Code
26917  , p_source_4            IN VARCHAR2
26918 --Inventory Transaction Type Description
26919  , p_source_5            IN VARCHAR2
26920 --Cost Management Default Account
26921  , p_source_11            IN NUMBER
26922 --DISTRIBUTION_IDENTIFIER
26923  , p_source_84            IN NUMBER
26924 --Distribution Type
26925  , p_source_85            IN VARCHAR2
26926  , p_source_85_meaning    IN VARCHAR2
26927 --Entered Currency Code
26928  , p_source_88            IN VARCHAR2
26929 --Entered Amount
26930  , p_source_91            IN NUMBER
26931 --Currency Conversion Date
26932  , p_source_92            IN DATE
26933 --Currency Conversion Rate
26934  , p_source_93            IN NUMBER
26935 --Currency Conversion Type
26936  , p_source_94            IN VARCHAR2
26937 --Accounted Amount
26938  , p_source_95            IN NUMBER
26939 --Accounting Line Type
26940  , p_source_97            IN NUMBER
26941 )
26942 IS
26943 
26944 l_component_type              VARCHAR2(80);
26945 l_component_code              VARCHAR2(30);
26946 l_component_type_code         VARCHAR2(1);
26947 l_component_appl_id           INTEGER;
26948 l_amb_context_code            VARCHAR2(30);
26949 l_entity_code                 VARCHAR2(30);
26950 l_event_class_code            VARCHAR2(30);
26951 l_ae_header_id                NUMBER;
26952 l_event_type_code             VARCHAR2(30);
26953 l_line_definition_code        VARCHAR2(30);
26954 l_line_definition_owner_code  VARCHAR2(1);
26955 --
26956 -- adr variables
26957 l_segment                     VARCHAR2(30);
26958 l_ccid                        NUMBER;
26959 l_adr_transaction_coa_id      NUMBER;
26960 l_adr_accounting_coa_id       NUMBER;
26961 l_adr_flexfield_segment_code  VARCHAR2(30);
26962 l_adr_flex_value_set_id       NUMBER;
26963 l_adr_value_type_code         VARCHAR2(30);
26964 l_adr_value_combination_id    NUMBER;
26965 l_adr_value_segment_code      VARCHAR2(30);
26966 
26967 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26968 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26969 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26970 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26971 
26972 -- 4262811 Variables ------------------------------------------------------------------------------------------
26973 l_entered_amt_idx             NUMBER;
26974 l_accted_amt_idx              NUMBER;
26975 l_acc_rev_flag                VARCHAR2(1);
26976 l_accrual_line_num            NUMBER;
26977 l_tmp_amt                     NUMBER;
26978 l_acc_rev_natural_side_code   VARCHAR2(1);
26979 
26980 l_num_entries                 NUMBER;
26981 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26982 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26983 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26984 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26985 l_recog_line_1                NUMBER;
26986 l_recog_line_2                NUMBER;
26987 
26988 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26989 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26990 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26991 
26992 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26993 
26994 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26995 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26996 
26997 ---------------------------------------------------------------------------------------------------------------
26998 
26999 
27000 --
27001 -- bulk performance
27002 --
27003 l_balance_type_code           VARCHAR2(1);
27004 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27005 l_log_module                  VARCHAR2(240);
27006 
27007 --
27008 -- Upgrade strategy
27009 --
27010 l_actual_upg_option           VARCHAR2(1);
27011 l_enc_upg_option           VARCHAR2(1);
27012 
27013 --
27014 BEGIN
27015 --
27016 IF g_log_enabled THEN
27017       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
27018 END IF;
27019 --
27020 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27021 
27022       trace
27023          (p_msg      => 'BEGIN of AcctLineType_74'
27024          ,p_level    => C_LEVEL_PROCEDURE
27025          ,p_module   => l_log_module);
27026 
27027 END IF;
27028 --
27029 l_component_type             := 'AMB_JLT';
27030 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
27031 l_component_type_code        := 'S';
27032 l_component_appl_id          :=  707;
27033 l_amb_context_code           := 'DEFAULT';
27034 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
27035 l_event_class_code           := 'SALES_ORDER';
27036 l_event_type_code            := 'SO_ISSUE';
27037 l_line_definition_owner_code := 'S';
27038 l_line_definition_code       := 'PI_SO_ISSUE';
27039 --
27040 l_balance_type_code          := 'A';
27041 l_segment                     := NULL;
27042 l_ccid                        := NULL;
27043 l_adr_transaction_coa_id      := NULL;
27044 l_adr_accounting_coa_id       := NULL;
27045 l_adr_flexfield_segment_code  := NULL;
27046 l_adr_flex_value_set_id       := NULL;
27047 l_adr_value_type_code         := NULL;
27048 l_adr_value_combination_id    := NULL;
27049 l_adr_value_segment_code      := NULL;
27050 
27051 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27052 l_bflow_class_code           := '';    -- 4219869 Business Flow
27053 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27054 l_budgetary_control_flag     := 'N';
27055 
27056 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27057 l_bflow_applied_to_amt       := NULL; -- 5132302
27058 l_entered_amt_idx            := NULL;          -- 4262811
27059 l_accted_amt_idx             := NULL;          -- 4262811
27060 l_acc_rev_flag               := NULL;          -- 4262811
27061 l_accrual_line_num           := NULL;          -- 4262811
27062 l_tmp_amt                    := NULL;          -- 4262811
27063 --
27064  
27065 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27066     l_balance_type_code <> 'B' THEN
27067 IF NVL(p_source_97,9E125) =  37
27068  THEN 
27069 
27070    --
27071    XLA_AE_LINES_PKG.SetNewLine;
27072 
27073    p_balance_type_code          := l_balance_type_code;
27074    -- set the flag so later we will know whether the gain loss line needs to be created
27075    
27076    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27077      p_actual_flag :='A';
27078    END IF;
27079 
27080    --
27081    -- bulk performance
27082    --
27083    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27084                                       p_header_num   => 0); -- 4262811
27085    --
27086    -- set accounting line options
27087    --
27088    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27089            p_natural_side_code          => 'D'
27090          , p_gain_or_loss_flag          => 'N'
27091          , p_gl_transfer_mode_code      => 'S'
27092          , p_acct_entry_type_code       => 'A'
27093          , p_switch_side_flag           => 'Y'
27094          , p_merge_duplicate_code       => 'N'
27095          );
27096    --
27097    l_acc_rev_natural_side_code := 'C';  -- 4262811
27098    -- 
27099    --
27100    -- set accounting line type info
27101    --
27102    xla_ae_lines_pkg.SetAcctLineType
27103       (p_component_type             => l_component_type
27104       ,p_event_type_code            => l_event_type_code
27105       ,p_line_definition_owner_code => l_line_definition_owner_code
27106       ,p_line_definition_code       => l_line_definition_code
27107       ,p_accounting_line_code       => l_component_code
27108       ,p_accounting_line_type_code  => l_component_type_code
27109       ,p_accounting_line_appl_id    => l_component_appl_id
27110       ,p_amb_context_code           => l_amb_context_code
27111       ,p_entity_code                => l_entity_code
27112       ,p_event_class_code           => l_event_class_code);
27113    --
27114    -- set accounting class
27115    --
27116    xla_ae_lines_pkg.SetAcctClass(
27117            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
27118          , p_ae_header_id           => l_ae_header_id
27119          );
27120 
27121    --
27122    -- set rounding class
27123    --
27124    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27125                       'COST_UPDATE_ADJUSTMENT';
27126 
27127    --
27128    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27129    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27130    --
27131    -- bulk performance
27132    --
27133    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27134 
27135    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27136       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27137 
27138    -- 4955764
27139    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27140       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27141 
27142    -- 4458381 Public Sector Enh
27143    
27144    --
27145    -- set accounting attributes for the line type
27146    --
27147    l_entered_amt_idx := 3;
27148    l_accted_amt_idx  := 8;
27149    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27150    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27151    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
27152    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27153    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
27154    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27155    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
27156    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27157    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
27158    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27159    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
27160    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27161    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
27162    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27163    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
27164    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27165    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
27166 
27167    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27168    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27169 
27170    ---------------------------------------------------------------------------------------------------------------
27171    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27172    ---------------------------------------------------------------------------------------------------------------
27173    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27174 
27175    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27176    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27177 
27178    IF xla_accounting_cache_pkg.GetValueChar
27179          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27180          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27181    AND l_bflow_method_code = 'PRIOR_ENTRY'
27182 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27183    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27184          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27185        )
27186    THEN
27187          xla_ae_lines_pkg.BflowUpgEntry
27188            (p_business_method_code    => l_bflow_method_code
27189            ,p_business_class_code     => l_bflow_class_code
27190            ,p_balance_type            => l_balance_type_code);
27191    ELSE
27192       NULL;
27193 -- No business flow processing for business flow method of NONE.
27194    END IF;
27195 
27196    --
27197    -- call analytical criteria
27198    --
27199    
27200    --
27201    -- call description
27202    --
27203    
27204 xla_ae_lines_pkg.SetLineDescription(
27205    p_ae_header_id => l_ae_header_id
27206   ,p_description  => Description_1 (
27207      p_application_id         => p_application_id
27208    , p_ae_header_id           => l_ae_header_id 
27209 , p_source_1 => p_source_1
27210 , p_source_2 => p_source_2
27211 , p_source_3 => p_source_3
27212 , p_source_4 => p_source_4
27213 , p_source_5 => p_source_5
27214    )
27215 );
27216 
27217 
27218    --
27219    -- call ADRs
27220    -- Bug 4922099
27221    --
27222    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27223         (NVL(l_actual_upg_option, 'N') = 'O') OR
27224         (NVL(l_enc_upg_option, 'N') = 'O')
27225       )
27226    THEN
27227    NULL;
27228    --
27229    --
27230    
27231   l_ccid := AcctDerRule_6(
27232            p_application_id           => p_application_id
27233          , p_ae_header_id             => l_ae_header_id 
27234 , p_source_11 => p_source_11
27235          , x_transaction_coa_id       => l_adr_transaction_coa_id
27236          , x_accounting_coa_id        => l_adr_accounting_coa_id
27237          , x_value_type_code          => l_adr_value_type_code
27238          , p_side                     => 'NA'
27239    );
27240 
27241    xla_ae_lines_pkg.set_ccid(
27242     p_code_combination_id          => l_ccid
27243   , p_value_type_code              => l_adr_value_type_code
27244   , p_transaction_coa_id           => l_adr_transaction_coa_id
27245   , p_accounting_coa_id            => l_adr_accounting_coa_id
27246   , p_adr_code                     => 'CST_DEFAULT'
27247   , p_adr_type_code                => 'S'
27248   , p_component_type               => l_component_type
27249   , p_component_code               => l_component_code
27250   , p_component_type_code          => l_component_type_code
27251   , p_component_appl_id            => l_component_appl_id
27252   , p_amb_context_code             => l_amb_context_code
27253   , p_side                         => 'NA'
27254   );
27255 
27256 
27257    --
27258    --
27259    END IF;
27260    --
27261    -- Bug 4922099
27262    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27263           (NVL(l_enc_upg_option, 'N') = 'O')
27264         ) AND
27265         (l_bflow_method_code = 'PRIOR_ENTRY')
27266       )
27267    THEN
27268       IF
27269       --
27270       1 = 2
27271       --
27272       THEN
27273       xla_accounting_err_pkg.build_message
27274                                     (p_appli_s_name            => 'XLA'
27275                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27276                                     ,p_token_1                 => 'LINE_NUMBER'
27277                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27278                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27279                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27280                                                                              l_component_type
27281                                                                             ,l_component_code
27282                                                                             ,l_component_type_code
27283                                                                             ,l_component_appl_id
27284                                                                             ,l_amb_context_code
27285                                                                             ,l_entity_code
27286                                                                             ,l_event_class_code
27287                                                                            )
27288                                     ,p_token_3                 => 'OWNER'
27289                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27290                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27291                                                                           ,p_lookup_code    => l_component_type_code
27292                                                                          )
27293                                     ,p_token_4                 => 'PRODUCT_NAME'
27294                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27295                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27296                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27297                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27298                                     ,p_ae_header_id            =>  NULL
27299                                        );
27300 
27301         IF (C_LEVEL_ERROR>= g_log_level) THEN
27302                  trace
27303                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27304                       ,p_level    => C_LEVEL_ERROR
27305                       ,p_module   => l_log_module);
27306         END IF;
27307       END IF;
27308    END IF;
27309    --
27310    --
27311    ------------------------------------------------------------------------------------------------
27312    -- 4219869 Business Flow
27313    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27314    -- Prior Entry.  Currently, the following code is always generated.
27315    ------------------------------------------------------------------------------------------------
27316    XLA_AE_LINES_PKG.ValidateCurrentLine;
27317 
27318    ------------------------------------------------------------------------------------
27319    -- 4219869 Business Flow
27320    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27321    ------------------------------------------------------------------------------------
27322    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27323 
27324    ----------------------------------------------------------------------------------
27325    -- 4219869 Business Flow
27326    -- Update journal entry status -- Need to generate this within IF <condition>
27327    ----------------------------------------------------------------------------------
27328    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27329          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27330          ,p_balance_type_code => l_balance_type_code
27331          );
27332 
27333    -------------------------------------------------------------------------------------------
27334    -- 4262811 - Generate the Accrual Reversal lines
27335    -------------------------------------------------------------------------------------------
27336    BEGIN
27337       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27338                               (g_array_event(p_event_id).array_value_num('header_index'));
27339       IF l_acc_rev_flag IS NULL THEN
27340          l_acc_rev_flag := 'N';
27341       END IF;
27342    EXCEPTION
27343       WHEN OTHERS THEN
27344          l_acc_rev_flag := 'N';
27345    END;
27346    --
27347    IF (l_acc_rev_flag = 'Y') THEN
27348 
27349        -- 4645092  ------------------------------------------------------------------------------
27350        -- To allow MPA report to determine if it should generate report process
27351        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27352        ------------------------------------------------------------------------------------------
27353 
27354        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27355        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27356    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27357    -- call ADRs
27358    -- Bug 4922099
27359    --
27360    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27361         (NVL(l_actual_upg_option, 'N') = 'O') OR
27362         (NVL(l_enc_upg_option, 'N') = 'O')
27363       )
27364    THEN
27365    NULL;
27366    --
27367    --
27368    
27369   l_ccid := AcctDerRule_6(
27370            p_application_id           => p_application_id
27371          , p_ae_header_id             => l_ae_header_id 
27372 , p_source_11 => p_source_11
27373          , x_transaction_coa_id       => l_adr_transaction_coa_id
27374          , x_accounting_coa_id        => l_adr_accounting_coa_id
27375          , x_value_type_code          => l_adr_value_type_code
27376          , p_side                     => 'NA'
27377    );
27378 
27379    xla_ae_lines_pkg.set_ccid(
27380     p_code_combination_id          => l_ccid
27381   , p_value_type_code              => l_adr_value_type_code
27382   , p_transaction_coa_id           => l_adr_transaction_coa_id
27383   , p_accounting_coa_id            => l_adr_accounting_coa_id
27384   , p_adr_code                     => 'CST_DEFAULT'
27385   , p_adr_type_code                => 'S'
27386   , p_component_type               => l_component_type
27387   , p_component_code               => l_component_code
27388   , p_component_type_code          => l_component_type_code
27389   , p_component_appl_id            => l_component_appl_id
27390   , p_amb_context_code             => l_amb_context_code
27391   , p_side                         => 'NA'
27392   );
27393 
27394 
27395    --
27396    --
27397    END IF;
27398 
27399        --
27400        -- Update the line information that should be overwritten
27401        --
27402        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27403                                          p_header_num   => 1);
27404        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27405 
27406        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27407 
27408        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27409           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27410        END IF;
27411 
27412       --
27413       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27414       --
27415       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27416           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27417       ELSE
27418           ---------------------------------------------------------------------------------------------------
27419           -- 4262811a Switch Sign
27420           ---------------------------------------------------------------------------------------------------
27421           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27422           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27423                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27424           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27425                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27426           -- 5132302
27427           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27428                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27429 
27430       END IF;
27431 
27432       -- 4955764
27433       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27434       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27435 
27436 
27437       XLA_AE_LINES_PKG.ValidateCurrentLine;
27438       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27439 
27440       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27441                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27442                ,p_balance_type_code => l_balance_type_code);
27443 
27444    END IF;
27445 
27446    -----------------------------------------------------------------------------------------
27447    -- 4262811 Multiperiod Accounting
27448    -----------------------------------------------------------------------------------------
27449      -- No MPA option is assigned.
27450 
27451 
27452 END IF;
27453 END IF;
27454 --
27455 
27456 --
27457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27458    trace
27459       (p_msg      => 'END of AcctLineType_74'
27460       ,p_level    => C_LEVEL_PROCEDURE
27461       ,p_module   => l_log_module);
27462 END IF;
27463 --
27464 EXCEPTION
27465   WHEN xla_exceptions_pkg.application_exception THEN
27466       RAISE;
27467   WHEN OTHERS THEN
27468        xla_exceptions_pkg.raise_message
27469            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_74');
27470 END AcctLineType_74;
27471 --
27472 
27473 ---------------------------------------
27474 --
27475 -- PRIVATE FUNCTION
27476 --         AcctLineType_75
27477 --
27478 ---------------------------------------
27479 PROCEDURE AcctLineType_75 (
27480   p_application_id        IN NUMBER
27481  ,p_event_id              IN NUMBER
27482  ,p_calculate_acctd_flag  IN VARCHAR2
27483  ,p_calculate_g_l_flag    IN VARCHAR2
27484  ,p_actual_flag           IN OUT VARCHAR2
27485  ,p_balance_type_code     OUT VARCHAR2
27486  ,p_gain_or_loss_ref      OUT VARCHAR2
27487  
27488 --TRANSACTION_ID
27489  , p_source_1            IN NUMBER
27490 --Item Concatenated Segments
27491  , p_source_2            IN VARCHAR2
27492 --Transaction Quantity
27493  , p_source_3            IN NUMBER
27494 --Transaction Unit of Measure Code
27495  , p_source_4            IN VARCHAR2
27496 --Inventory Transaction Type Description
27497  , p_source_5            IN VARCHAR2
27498 --Cost Management Default Account
27499  , p_source_11            IN NUMBER
27500 --DISTRIBUTION_IDENTIFIER
27501  , p_source_84            IN NUMBER
27502 --Distribution Type
27503  , p_source_85            IN VARCHAR2
27504  , p_source_85_meaning    IN VARCHAR2
27505 --Entered Currency Code
27506  , p_source_88            IN VARCHAR2
27507 --Entered Amount
27508  , p_source_91            IN NUMBER
27509 --Currency Conversion Date
27510  , p_source_92            IN DATE
27511 --Currency Conversion Rate
27512  , p_source_93            IN NUMBER
27513 --Currency Conversion Type
27514  , p_source_94            IN VARCHAR2
27515 --Accounted Amount
27516  , p_source_95            IN NUMBER
27517 --Accounting Line Type
27518  , p_source_97            IN NUMBER
27519 )
27520 IS
27521 
27522 l_component_type              VARCHAR2(80);
27523 l_component_code              VARCHAR2(30);
27524 l_component_type_code         VARCHAR2(1);
27525 l_component_appl_id           INTEGER;
27526 l_amb_context_code            VARCHAR2(30);
27527 l_entity_code                 VARCHAR2(30);
27528 l_event_class_code            VARCHAR2(30);
27529 l_ae_header_id                NUMBER;
27530 l_event_type_code             VARCHAR2(30);
27531 l_line_definition_code        VARCHAR2(30);
27532 l_line_definition_owner_code  VARCHAR2(1);
27533 --
27534 -- adr variables
27535 l_segment                     VARCHAR2(30);
27536 l_ccid                        NUMBER;
27537 l_adr_transaction_coa_id      NUMBER;
27538 l_adr_accounting_coa_id       NUMBER;
27539 l_adr_flexfield_segment_code  VARCHAR2(30);
27540 l_adr_flex_value_set_id       NUMBER;
27541 l_adr_value_type_code         VARCHAR2(30);
27542 l_adr_value_combination_id    NUMBER;
27543 l_adr_value_segment_code      VARCHAR2(30);
27544 
27545 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27546 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27547 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27548 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27549 
27550 -- 4262811 Variables ------------------------------------------------------------------------------------------
27551 l_entered_amt_idx             NUMBER;
27552 l_accted_amt_idx              NUMBER;
27553 l_acc_rev_flag                VARCHAR2(1);
27554 l_accrual_line_num            NUMBER;
27555 l_tmp_amt                     NUMBER;
27556 l_acc_rev_natural_side_code   VARCHAR2(1);
27557 
27558 l_num_entries                 NUMBER;
27559 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27560 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27561 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27562 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27563 l_recog_line_1                NUMBER;
27564 l_recog_line_2                NUMBER;
27565 
27566 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27567 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27568 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27569 
27570 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27571 
27572 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27573 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27574 
27575 ---------------------------------------------------------------------------------------------------------------
27576 
27577 
27578 --
27579 -- bulk performance
27580 --
27581 l_balance_type_code           VARCHAR2(1);
27582 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27583 l_log_module                  VARCHAR2(240);
27584 
27585 --
27586 -- Upgrade strategy
27587 --
27588 l_actual_upg_option           VARCHAR2(1);
27589 l_enc_upg_option           VARCHAR2(1);
27590 
27591 --
27592 BEGIN
27593 --
27594 IF g_log_enabled THEN
27595       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
27596 END IF;
27597 --
27598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27599 
27600       trace
27601          (p_msg      => 'BEGIN of AcctLineType_75'
27602          ,p_level    => C_LEVEL_PROCEDURE
27603          ,p_module   => l_log_module);
27604 
27605 END IF;
27606 --
27607 l_component_type             := 'AMB_JLT';
27608 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
27609 l_component_type_code        := 'S';
27610 l_component_appl_id          :=  707;
27611 l_amb_context_code           := 'DEFAULT';
27612 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
27613 l_event_class_code           := 'MTL_COST_UPD';
27614 l_event_type_code            := 'IPV_TXFR';
27615 l_line_definition_owner_code := 'S';
27616 l_line_definition_code       := 'PI_IPV_TXFR';
27617 --
27618 l_balance_type_code          := 'A';
27619 l_segment                     := NULL;
27620 l_ccid                        := NULL;
27621 l_adr_transaction_coa_id      := NULL;
27622 l_adr_accounting_coa_id       := NULL;
27623 l_adr_flexfield_segment_code  := NULL;
27624 l_adr_flex_value_set_id       := NULL;
27625 l_adr_value_type_code         := NULL;
27626 l_adr_value_combination_id    := NULL;
27627 l_adr_value_segment_code      := NULL;
27628 
27629 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27630 l_bflow_class_code           := '';    -- 4219869 Business Flow
27631 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27632 l_budgetary_control_flag     := 'N';
27633 
27634 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27635 l_bflow_applied_to_amt       := NULL; -- 5132302
27636 l_entered_amt_idx            := NULL;          -- 4262811
27637 l_accted_amt_idx             := NULL;          -- 4262811
27638 l_acc_rev_flag               := NULL;          -- 4262811
27639 l_accrual_line_num           := NULL;          -- 4262811
27640 l_tmp_amt                    := NULL;          -- 4262811
27641 --
27642  
27643 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27644     l_balance_type_code <> 'B' THEN
27645 IF NVL(p_source_97,9E125) =  2
27646  THEN 
27647 
27648    --
27649    XLA_AE_LINES_PKG.SetNewLine;
27650 
27651    p_balance_type_code          := l_balance_type_code;
27652    -- set the flag so later we will know whether the gain loss line needs to be created
27653    
27654    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27655      p_actual_flag :='A';
27656    END IF;
27657 
27658    --
27659    -- bulk performance
27660    --
27661    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27662                                       p_header_num   => 0); -- 4262811
27663    --
27664    -- set accounting line options
27665    --
27666    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27667            p_natural_side_code          => 'D'
27668          , p_gain_or_loss_flag          => 'N'
27669          , p_gl_transfer_mode_code      => 'S'
27670          , p_acct_entry_type_code       => 'A'
27671          , p_switch_side_flag           => 'Y'
27672          , p_merge_duplicate_code       => 'N'
27673          );
27674    --
27675    l_acc_rev_natural_side_code := 'C';  -- 4262811
27676    -- 
27677    --
27678    -- set accounting line type info
27679    --
27680    xla_ae_lines_pkg.SetAcctLineType
27681       (p_component_type             => l_component_type
27682       ,p_event_type_code            => l_event_type_code
27683       ,p_line_definition_owner_code => l_line_definition_owner_code
27684       ,p_line_definition_code       => l_line_definition_code
27685       ,p_accounting_line_code       => l_component_code
27686       ,p_accounting_line_type_code  => l_component_type_code
27687       ,p_accounting_line_appl_id    => l_component_appl_id
27688       ,p_amb_context_code           => l_amb_context_code
27689       ,p_entity_code                => l_entity_code
27690       ,p_event_class_code           => l_event_class_code);
27691    --
27692    -- set accounting class
27693    --
27694    xla_ae_lines_pkg.SetAcctClass(
27695            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
27696          , p_ae_header_id           => l_ae_header_id
27697          );
27698 
27699    --
27700    -- set rounding class
27701    --
27702    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27703                       'COST_UPDATE_ADJUSTMENT';
27704 
27705    --
27706    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27707    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27708    --
27709    -- bulk performance
27710    --
27711    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27712 
27713    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27714       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27715 
27716    -- 4955764
27717    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27718       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27719 
27720    -- 4458381 Public Sector Enh
27721    
27722    --
27723    -- set accounting attributes for the line type
27724    --
27725    l_entered_amt_idx := 3;
27726    l_accted_amt_idx  := 8;
27727    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27728    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27729    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
27730    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27731    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
27732    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27733    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
27734    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27735    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
27736    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27737    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
27738    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27739    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
27740    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27741    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
27742    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27743    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
27744 
27745    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27746    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27747 
27748    ---------------------------------------------------------------------------------------------------------------
27749    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27750    ---------------------------------------------------------------------------------------------------------------
27751    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27752 
27753    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27754    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27755 
27756    IF xla_accounting_cache_pkg.GetValueChar
27757          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27758          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27759    AND l_bflow_method_code = 'PRIOR_ENTRY'
27760 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27761    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27762          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27763        )
27764    THEN
27765          xla_ae_lines_pkg.BflowUpgEntry
27766            (p_business_method_code    => l_bflow_method_code
27767            ,p_business_class_code     => l_bflow_class_code
27768            ,p_balance_type            => l_balance_type_code);
27769    ELSE
27770       NULL;
27771 -- No business flow processing for business flow method of NONE.
27772    END IF;
27773 
27774    --
27775    -- call analytical criteria
27776    --
27777    
27778    --
27779    -- call description
27780    --
27781    
27782 xla_ae_lines_pkg.SetLineDescription(
27783    p_ae_header_id => l_ae_header_id
27784   ,p_description  => Description_1 (
27785      p_application_id         => p_application_id
27786    , p_ae_header_id           => l_ae_header_id 
27787 , p_source_1 => p_source_1
27788 , p_source_2 => p_source_2
27789 , p_source_3 => p_source_3
27790 , p_source_4 => p_source_4
27791 , p_source_5 => p_source_5
27792    )
27793 );
27794 
27795 
27796    --
27797    -- call ADRs
27798    -- Bug 4922099
27799    --
27800    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27801         (NVL(l_actual_upg_option, 'N') = 'O') OR
27802         (NVL(l_enc_upg_option, 'N') = 'O')
27803       )
27804    THEN
27805    NULL;
27806    --
27807    --
27808    
27809   l_ccid := AcctDerRule_6(
27810            p_application_id           => p_application_id
27811          , p_ae_header_id             => l_ae_header_id 
27812 , p_source_11 => p_source_11
27813          , x_transaction_coa_id       => l_adr_transaction_coa_id
27814          , x_accounting_coa_id        => l_adr_accounting_coa_id
27815          , x_value_type_code          => l_adr_value_type_code
27816          , p_side                     => 'NA'
27817    );
27818 
27819    xla_ae_lines_pkg.set_ccid(
27820     p_code_combination_id          => l_ccid
27821   , p_value_type_code              => l_adr_value_type_code
27822   , p_transaction_coa_id           => l_adr_transaction_coa_id
27823   , p_accounting_coa_id            => l_adr_accounting_coa_id
27824   , p_adr_code                     => 'CST_DEFAULT'
27825   , p_adr_type_code                => 'S'
27826   , p_component_type               => l_component_type
27827   , p_component_code               => l_component_code
27828   , p_component_type_code          => l_component_type_code
27829   , p_component_appl_id            => l_component_appl_id
27830   , p_amb_context_code             => l_amb_context_code
27831   , p_side                         => 'NA'
27832   );
27833 
27834 
27835    --
27836    --
27837    END IF;
27838    --
27839    -- Bug 4922099
27840    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27841           (NVL(l_enc_upg_option, 'N') = 'O')
27842         ) AND
27843         (l_bflow_method_code = 'PRIOR_ENTRY')
27844       )
27845    THEN
27846       IF
27847       --
27848       1 = 2
27849       --
27850       THEN
27851       xla_accounting_err_pkg.build_message
27852                                     (p_appli_s_name            => 'XLA'
27853                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27854                                     ,p_token_1                 => 'LINE_NUMBER'
27855                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27856                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27857                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27858                                                                              l_component_type
27859                                                                             ,l_component_code
27860                                                                             ,l_component_type_code
27861                                                                             ,l_component_appl_id
27862                                                                             ,l_amb_context_code
27863                                                                             ,l_entity_code
27864                                                                             ,l_event_class_code
27865                                                                            )
27866                                     ,p_token_3                 => 'OWNER'
27867                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27868                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27869                                                                           ,p_lookup_code    => l_component_type_code
27870                                                                          )
27871                                     ,p_token_4                 => 'PRODUCT_NAME'
27872                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27873                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27874                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27875                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27876                                     ,p_ae_header_id            =>  NULL
27877                                        );
27878 
27879         IF (C_LEVEL_ERROR>= g_log_level) THEN
27880                  trace
27881                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27882                       ,p_level    => C_LEVEL_ERROR
27883                       ,p_module   => l_log_module);
27884         END IF;
27885       END IF;
27886    END IF;
27887    --
27888    --
27889    ------------------------------------------------------------------------------------------------
27890    -- 4219869 Business Flow
27891    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27892    -- Prior Entry.  Currently, the following code is always generated.
27893    ------------------------------------------------------------------------------------------------
27894    XLA_AE_LINES_PKG.ValidateCurrentLine;
27895 
27896    ------------------------------------------------------------------------------------
27897    -- 4219869 Business Flow
27898    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27899    ------------------------------------------------------------------------------------
27900    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27901 
27902    ----------------------------------------------------------------------------------
27903    -- 4219869 Business Flow
27904    -- Update journal entry status -- Need to generate this within IF <condition>
27905    ----------------------------------------------------------------------------------
27906    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27907          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27908          ,p_balance_type_code => l_balance_type_code
27909          );
27910 
27911    -------------------------------------------------------------------------------------------
27912    -- 4262811 - Generate the Accrual Reversal lines
27913    -------------------------------------------------------------------------------------------
27914    BEGIN
27915       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27916                               (g_array_event(p_event_id).array_value_num('header_index'));
27917       IF l_acc_rev_flag IS NULL THEN
27918          l_acc_rev_flag := 'N';
27919       END IF;
27920    EXCEPTION
27921       WHEN OTHERS THEN
27922          l_acc_rev_flag := 'N';
27923    END;
27924    --
27925    IF (l_acc_rev_flag = 'Y') THEN
27926 
27927        -- 4645092  ------------------------------------------------------------------------------
27928        -- To allow MPA report to determine if it should generate report process
27929        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27930        ------------------------------------------------------------------------------------------
27931 
27932        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27933        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27934    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27935    -- call ADRs
27936    -- Bug 4922099
27937    --
27938    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27939         (NVL(l_actual_upg_option, 'N') = 'O') OR
27940         (NVL(l_enc_upg_option, 'N') = 'O')
27941       )
27942    THEN
27943    NULL;
27944    --
27945    --
27946    
27947   l_ccid := AcctDerRule_6(
27948            p_application_id           => p_application_id
27949          , p_ae_header_id             => l_ae_header_id 
27950 , p_source_11 => p_source_11
27951          , x_transaction_coa_id       => l_adr_transaction_coa_id
27952          , x_accounting_coa_id        => l_adr_accounting_coa_id
27953          , x_value_type_code          => l_adr_value_type_code
27954          , p_side                     => 'NA'
27955    );
27956 
27957    xla_ae_lines_pkg.set_ccid(
27958     p_code_combination_id          => l_ccid
27959   , p_value_type_code              => l_adr_value_type_code
27960   , p_transaction_coa_id           => l_adr_transaction_coa_id
27961   , p_accounting_coa_id            => l_adr_accounting_coa_id
27962   , p_adr_code                     => 'CST_DEFAULT'
27963   , p_adr_type_code                => 'S'
27964   , p_component_type               => l_component_type
27965   , p_component_code               => l_component_code
27966   , p_component_type_code          => l_component_type_code
27967   , p_component_appl_id            => l_component_appl_id
27968   , p_amb_context_code             => l_amb_context_code
27969   , p_side                         => 'NA'
27970   );
27971 
27972 
27973    --
27974    --
27975    END IF;
27976 
27977        --
27978        -- Update the line information that should be overwritten
27979        --
27980        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27981                                          p_header_num   => 1);
27982        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27983 
27984        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27985 
27986        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27987           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27988        END IF;
27989 
27990       --
27991       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27992       --
27993       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27994           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27995       ELSE
27996           ---------------------------------------------------------------------------------------------------
27997           -- 4262811a Switch Sign
27998           ---------------------------------------------------------------------------------------------------
27999           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28000           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28001                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28002           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28003                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28004           -- 5132302
28005           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28006                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28007 
28008       END IF;
28009 
28010       -- 4955764
28011       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28012       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28013 
28014 
28015       XLA_AE_LINES_PKG.ValidateCurrentLine;
28016       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28017 
28018       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28019                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28020                ,p_balance_type_code => l_balance_type_code);
28021 
28022    END IF;
28023 
28024    -----------------------------------------------------------------------------------------
28025    -- 4262811 Multiperiod Accounting
28026    -----------------------------------------------------------------------------------------
28027      -- No MPA option is assigned.
28028 
28029 
28030 END IF;
28031 END IF;
28032 --
28033 
28034 --
28035 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28036    trace
28037       (p_msg      => 'END of AcctLineType_75'
28038       ,p_level    => C_LEVEL_PROCEDURE
28039       ,p_module   => l_log_module);
28040 END IF;
28041 --
28042 EXCEPTION
28043   WHEN xla_exceptions_pkg.application_exception THEN
28044       RAISE;
28045   WHEN OTHERS THEN
28046        xla_exceptions_pkg.raise_message
28047            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_75');
28048 END AcctLineType_75;
28049 --
28050 
28051 ---------------------------------------
28052 --
28053 -- PRIVATE FUNCTION
28054 --         AcctLineType_76
28055 --
28056 ---------------------------------------
28057 PROCEDURE AcctLineType_76 (
28058   p_application_id        IN NUMBER
28059  ,p_event_id              IN NUMBER
28060  ,p_calculate_acctd_flag  IN VARCHAR2
28061  ,p_calculate_g_l_flag    IN VARCHAR2
28062  ,p_actual_flag           IN OUT VARCHAR2
28063  ,p_balance_type_code     OUT VARCHAR2
28064  ,p_gain_or_loss_ref      OUT VARCHAR2
28065  
28066 --TRANSACTION_ID
28067  , p_source_1            IN NUMBER
28068 --Item Concatenated Segments
28069  , p_source_2            IN VARCHAR2
28070 --Transaction Quantity
28071  , p_source_3            IN NUMBER
28072 --Transaction Unit of Measure Code
28073  , p_source_4            IN VARCHAR2
28074 --Inventory Transaction Type Description
28075  , p_source_5            IN VARCHAR2
28076 --Transaction Material Account
28077  , p_source_14            IN NUMBER
28078 --Cost Element Name
28079  , p_source_15            IN NUMBER
28080 --Transaction Material Overhead Account
28081  , p_source_16            IN NUMBER
28082 --Transaction Resource Account
28083  , p_source_17            IN NUMBER
28084 --Transaction Outside Processing Account
28085  , p_source_18            IN NUMBER
28086 --Transaction Overhead Account
28087  , p_source_19            IN NUMBER
28088 --Transaction Distribution Account
28089  , p_source_20            IN NUMBER
28090 --DISTRIBUTION_IDENTIFIER
28091  , p_source_84            IN NUMBER
28092 --Distribution Type
28093  , p_source_85            IN VARCHAR2
28094  , p_source_85_meaning    IN VARCHAR2
28095 --Entered Currency Code
28096  , p_source_88            IN VARCHAR2
28097 --Entered Amount
28098  , p_source_91            IN NUMBER
28099 --Currency Conversion Date
28100  , p_source_92            IN DATE
28101 --Currency Conversion Rate
28102  , p_source_93            IN NUMBER
28103 --Currency Conversion Type
28104  , p_source_94            IN VARCHAR2
28105 --Accounted Amount
28106  , p_source_95            IN NUMBER
28107 --Accounting Line Type
28108  , p_source_97            IN NUMBER
28109 )
28110 IS
28111 
28112 l_component_type              VARCHAR2(80);
28113 l_component_code              VARCHAR2(30);
28114 l_component_type_code         VARCHAR2(1);
28115 l_component_appl_id           INTEGER;
28116 l_amb_context_code            VARCHAR2(30);
28117 l_entity_code                 VARCHAR2(30);
28118 l_event_class_code            VARCHAR2(30);
28119 l_ae_header_id                NUMBER;
28120 l_event_type_code             VARCHAR2(30);
28121 l_line_definition_code        VARCHAR2(30);
28122 l_line_definition_owner_code  VARCHAR2(1);
28123 --
28124 -- adr variables
28125 l_segment                     VARCHAR2(30);
28126 l_ccid                        NUMBER;
28127 l_adr_transaction_coa_id      NUMBER;
28128 l_adr_accounting_coa_id       NUMBER;
28129 l_adr_flexfield_segment_code  VARCHAR2(30);
28130 l_adr_flex_value_set_id       NUMBER;
28131 l_adr_value_type_code         VARCHAR2(30);
28132 l_adr_value_combination_id    NUMBER;
28133 l_adr_value_segment_code      VARCHAR2(30);
28134 
28135 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28136 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28137 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28138 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28139 
28140 -- 4262811 Variables ------------------------------------------------------------------------------------------
28141 l_entered_amt_idx             NUMBER;
28142 l_accted_amt_idx              NUMBER;
28143 l_acc_rev_flag                VARCHAR2(1);
28144 l_accrual_line_num            NUMBER;
28145 l_tmp_amt                     NUMBER;
28146 l_acc_rev_natural_side_code   VARCHAR2(1);
28147 
28148 l_num_entries                 NUMBER;
28149 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28150 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28151 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28152 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28153 l_recog_line_1                NUMBER;
28154 l_recog_line_2                NUMBER;
28155 
28156 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28157 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28158 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28159 
28160 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28161 
28162 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28163 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28164 
28165 ---------------------------------------------------------------------------------------------------------------
28166 
28167 
28168 --
28169 -- bulk performance
28170 --
28171 l_balance_type_code           VARCHAR2(1);
28172 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28173 l_log_module                  VARCHAR2(240);
28174 
28175 --
28176 -- Upgrade strategy
28177 --
28178 l_actual_upg_option           VARCHAR2(1);
28179 l_enc_upg_option           VARCHAR2(1);
28180 
28181 --
28182 BEGIN
28183 --
28184 IF g_log_enabled THEN
28185       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
28186 END IF;
28187 --
28188 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28189 
28190       trace
28191          (p_msg      => 'BEGIN of AcctLineType_76'
28192          ,p_level    => C_LEVEL_PROCEDURE
28193          ,p_module   => l_log_module);
28194 
28195 END IF;
28196 --
28197 l_component_type             := 'AMB_JLT';
28198 l_component_code             := 'COST_UPDATE_ADJUSTMENT';
28199 l_component_type_code        := 'S';
28200 l_component_appl_id          :=  707;
28201 l_amb_context_code           := 'DEFAULT';
28202 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
28203 l_event_class_code           := 'USER_DEFINE';
28204 l_event_type_code            := 'UIPV_TXFR';
28205 l_line_definition_owner_code := 'S';
28206 l_line_definition_code       := 'PI_IPV_TXFR';
28207 --
28208 l_balance_type_code          := 'A';
28209 l_segment                     := NULL;
28210 l_ccid                        := NULL;
28211 l_adr_transaction_coa_id      := NULL;
28212 l_adr_accounting_coa_id       := NULL;
28213 l_adr_flexfield_segment_code  := NULL;
28214 l_adr_flex_value_set_id       := NULL;
28215 l_adr_value_type_code         := NULL;
28216 l_adr_value_combination_id    := NULL;
28217 l_adr_value_segment_code      := NULL;
28218 
28219 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28220 l_bflow_class_code           := '';    -- 4219869 Business Flow
28221 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28222 l_budgetary_control_flag     := 'N';
28223 
28224 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28225 l_bflow_applied_to_amt       := NULL; -- 5132302
28226 l_entered_amt_idx            := NULL;          -- 4262811
28227 l_accted_amt_idx             := NULL;          -- 4262811
28228 l_acc_rev_flag               := NULL;          -- 4262811
28229 l_accrual_line_num           := NULL;          -- 4262811
28230 l_tmp_amt                    := NULL;          -- 4262811
28231 --
28232  
28233 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28234     l_balance_type_code <> 'B' THEN
28235 IF NVL(p_source_97,9E125) =  2
28236  THEN 
28237 
28238    --
28239    XLA_AE_LINES_PKG.SetNewLine;
28240 
28241    p_balance_type_code          := l_balance_type_code;
28242    -- set the flag so later we will know whether the gain loss line needs to be created
28243    
28244    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28245      p_actual_flag :='A';
28246    END IF;
28247 
28248    --
28249    -- bulk performance
28250    --
28251    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28252                                       p_header_num   => 0); -- 4262811
28253    --
28254    -- set accounting line options
28255    --
28256    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28257            p_natural_side_code          => 'D'
28258          , p_gain_or_loss_flag          => 'N'
28259          , p_gl_transfer_mode_code      => 'S'
28260          , p_acct_entry_type_code       => 'A'
28261          , p_switch_side_flag           => 'Y'
28262          , p_merge_duplicate_code       => 'N'
28263          );
28264    --
28265    l_acc_rev_natural_side_code := 'C';  -- 4262811
28266    -- 
28267    --
28268    -- set accounting line type info
28269    --
28270    xla_ae_lines_pkg.SetAcctLineType
28271       (p_component_type             => l_component_type
28272       ,p_event_type_code            => l_event_type_code
28273       ,p_line_definition_owner_code => l_line_definition_owner_code
28274       ,p_line_definition_code       => l_line_definition_code
28275       ,p_accounting_line_code       => l_component_code
28276       ,p_accounting_line_type_code  => l_component_type_code
28277       ,p_accounting_line_appl_id    => l_component_appl_id
28278       ,p_amb_context_code           => l_amb_context_code
28279       ,p_entity_code                => l_entity_code
28280       ,p_event_class_code           => l_event_class_code);
28281    --
28282    -- set accounting class
28283    --
28284    xla_ae_lines_pkg.SetAcctClass(
28285            p_accounting_class_code  => 'COST_UPDATE_ADJUSTMENT'
28286          , p_ae_header_id           => l_ae_header_id
28287          );
28288 
28289    --
28290    -- set rounding class
28291    --
28292    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28293                       'COST_UPDATE_ADJUSTMENT';
28294 
28295    --
28296    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28297    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28298    --
28299    -- bulk performance
28300    --
28301    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28302 
28303    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28304       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28305 
28306    -- 4955764
28307    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28308       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28309 
28310    -- 4458381 Public Sector Enh
28311    
28312    --
28313    -- set accounting attributes for the line type
28314    --
28315    l_entered_amt_idx := 3;
28316    l_accted_amt_idx  := 8;
28317    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28318    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28319    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
28320    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28321    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
28322    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28323    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
28324    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28325    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
28326    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28327    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
28328    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28329    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
28330    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28331    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
28332    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28333    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
28334 
28335    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28336    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28337 
28338    ---------------------------------------------------------------------------------------------------------------
28339    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28340    ---------------------------------------------------------------------------------------------------------------
28341    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28342 
28343    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28344    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28345 
28346    IF xla_accounting_cache_pkg.GetValueChar
28347          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28348          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28349    AND l_bflow_method_code = 'PRIOR_ENTRY'
28350 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28351    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28352          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28353        )
28354    THEN
28355          xla_ae_lines_pkg.BflowUpgEntry
28356            (p_business_method_code    => l_bflow_method_code
28357            ,p_business_class_code     => l_bflow_class_code
28358            ,p_balance_type            => l_balance_type_code);
28359    ELSE
28360       NULL;
28361 -- No business flow processing for business flow method of NONE.
28362    END IF;
28363 
28364    --
28365    -- call analytical criteria
28366    --
28367    
28368    --
28369    -- call description
28370    --
28371    
28372 xla_ae_lines_pkg.SetLineDescription(
28373    p_ae_header_id => l_ae_header_id
28374   ,p_description  => Description_1 (
28375      p_application_id         => p_application_id
28376    , p_ae_header_id           => l_ae_header_id 
28377 , p_source_1 => p_source_1
28378 , p_source_2 => p_source_2
28379 , p_source_3 => p_source_3
28380 , p_source_4 => p_source_4
28381 , p_source_5 => p_source_5
28382    )
28383 );
28384 
28385 
28386    --
28387    -- call ADRs
28388    -- Bug 4922099
28389    --
28390    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28391         (NVL(l_actual_upg_option, 'N') = 'O') OR
28392         (NVL(l_enc_upg_option, 'N') = 'O')
28393       )
28394    THEN
28395    NULL;
28396    --
28397    --
28398    
28399   l_ccid := AcctDerRule_9(
28400            p_application_id           => p_application_id
28401          , p_ae_header_id             => l_ae_header_id 
28402 , p_source_14 => p_source_14
28403 , p_source_15 => p_source_15
28404 , p_source_16 => p_source_16
28405 , p_source_17 => p_source_17
28406 , p_source_18 => p_source_18
28407 , p_source_19 => p_source_19
28408 , p_source_20 => p_source_20
28409          , x_transaction_coa_id       => l_adr_transaction_coa_id
28410          , x_accounting_coa_id        => l_adr_accounting_coa_id
28411          , x_value_type_code          => l_adr_value_type_code
28412          , p_side                     => 'NA'
28413    );
28414 
28415    xla_ae_lines_pkg.set_ccid(
28416     p_code_combination_id          => l_ccid
28417   , p_value_type_code              => l_adr_value_type_code
28418   , p_transaction_coa_id           => l_adr_transaction_coa_id
28419   , p_accounting_coa_id            => l_adr_accounting_coa_id
28420   , p_adr_code                     => 'PI_AVG_COST_UPT_OFFSET'
28421   , p_adr_type_code                => 'S'
28422   , p_component_type               => l_component_type
28423   , p_component_code               => l_component_code
28424   , p_component_type_code          => l_component_type_code
28425   , p_component_appl_id            => l_component_appl_id
28426   , p_amb_context_code             => l_amb_context_code
28427   , p_side                         => 'NA'
28428   );
28429 
28430 
28431    --
28432    --
28433    END IF;
28434    --
28435    -- Bug 4922099
28436    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28437           (NVL(l_enc_upg_option, 'N') = 'O')
28438         ) AND
28439         (l_bflow_method_code = 'PRIOR_ENTRY')
28440       )
28441    THEN
28442       IF
28443       --
28444       1 = 2
28445       --
28446       THEN
28447       xla_accounting_err_pkg.build_message
28448                                     (p_appli_s_name            => 'XLA'
28449                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28450                                     ,p_token_1                 => 'LINE_NUMBER'
28451                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28452                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28453                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28454                                                                              l_component_type
28455                                                                             ,l_component_code
28456                                                                             ,l_component_type_code
28457                                                                             ,l_component_appl_id
28458                                                                             ,l_amb_context_code
28459                                                                             ,l_entity_code
28460                                                                             ,l_event_class_code
28461                                                                            )
28462                                     ,p_token_3                 => 'OWNER'
28463                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28464                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28465                                                                           ,p_lookup_code    => l_component_type_code
28466                                                                          )
28467                                     ,p_token_4                 => 'PRODUCT_NAME'
28468                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28469                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28470                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28471                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28472                                     ,p_ae_header_id            =>  NULL
28473                                        );
28474 
28475         IF (C_LEVEL_ERROR>= g_log_level) THEN
28476                  trace
28477                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28478                       ,p_level    => C_LEVEL_ERROR
28479                       ,p_module   => l_log_module);
28480         END IF;
28481       END IF;
28482    END IF;
28483    --
28484    --
28485    ------------------------------------------------------------------------------------------------
28486    -- 4219869 Business Flow
28487    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28488    -- Prior Entry.  Currently, the following code is always generated.
28489    ------------------------------------------------------------------------------------------------
28490    XLA_AE_LINES_PKG.ValidateCurrentLine;
28491 
28492    ------------------------------------------------------------------------------------
28493    -- 4219869 Business Flow
28494    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28495    ------------------------------------------------------------------------------------
28496    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28497 
28498    ----------------------------------------------------------------------------------
28499    -- 4219869 Business Flow
28500    -- Update journal entry status -- Need to generate this within IF <condition>
28501    ----------------------------------------------------------------------------------
28502    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28503          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28504          ,p_balance_type_code => l_balance_type_code
28505          );
28506 
28507    -------------------------------------------------------------------------------------------
28508    -- 4262811 - Generate the Accrual Reversal lines
28509    -------------------------------------------------------------------------------------------
28510    BEGIN
28511       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28512                               (g_array_event(p_event_id).array_value_num('header_index'));
28513       IF l_acc_rev_flag IS NULL THEN
28514          l_acc_rev_flag := 'N';
28515       END IF;
28516    EXCEPTION
28517       WHEN OTHERS THEN
28518          l_acc_rev_flag := 'N';
28519    END;
28520    --
28521    IF (l_acc_rev_flag = 'Y') THEN
28522 
28523        -- 4645092  ------------------------------------------------------------------------------
28524        -- To allow MPA report to determine if it should generate report process
28525        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28526        ------------------------------------------------------------------------------------------
28527 
28528        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28529        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28530    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28531    -- call ADRs
28532    -- Bug 4922099
28533    --
28534    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28535         (NVL(l_actual_upg_option, 'N') = 'O') OR
28536         (NVL(l_enc_upg_option, 'N') = 'O')
28537       )
28538    THEN
28539    NULL;
28540    --
28541    --
28542    
28543   l_ccid := AcctDerRule_9(
28544            p_application_id           => p_application_id
28545          , p_ae_header_id             => l_ae_header_id 
28546 , p_source_14 => p_source_14
28547 , p_source_15 => p_source_15
28548 , p_source_16 => p_source_16
28549 , p_source_17 => p_source_17
28550 , p_source_18 => p_source_18
28551 , p_source_19 => p_source_19
28552 , p_source_20 => p_source_20
28553          , x_transaction_coa_id       => l_adr_transaction_coa_id
28554          , x_accounting_coa_id        => l_adr_accounting_coa_id
28555          , x_value_type_code          => l_adr_value_type_code
28556          , p_side                     => 'NA'
28557    );
28558 
28559    xla_ae_lines_pkg.set_ccid(
28560     p_code_combination_id          => l_ccid
28561   , p_value_type_code              => l_adr_value_type_code
28562   , p_transaction_coa_id           => l_adr_transaction_coa_id
28563   , p_accounting_coa_id            => l_adr_accounting_coa_id
28564   , p_adr_code                     => 'PI_AVG_COST_UPT_OFFSET'
28565   , p_adr_type_code                => 'S'
28566   , p_component_type               => l_component_type
28567   , p_component_code               => l_component_code
28568   , p_component_type_code          => l_component_type_code
28569   , p_component_appl_id            => l_component_appl_id
28570   , p_amb_context_code             => l_amb_context_code
28571   , p_side                         => 'NA'
28572   );
28573 
28574 
28575    --
28576    --
28577    END IF;
28578 
28579        --
28580        -- Update the line information that should be overwritten
28581        --
28582        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28583                                          p_header_num   => 1);
28584        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28585 
28586        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28587 
28588        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28589           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28590        END IF;
28591 
28592       --
28593       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28594       --
28595       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28596           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28597       ELSE
28598           ---------------------------------------------------------------------------------------------------
28599           -- 4262811a Switch Sign
28600           ---------------------------------------------------------------------------------------------------
28601           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28602           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28603                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28604           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28605                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28606           -- 5132302
28607           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28608                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28609 
28610       END IF;
28611 
28612       -- 4955764
28613       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28614       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28615 
28616 
28617       XLA_AE_LINES_PKG.ValidateCurrentLine;
28618       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28619 
28620       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28621                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28622                ,p_balance_type_code => l_balance_type_code);
28623 
28624    END IF;
28625 
28626    -----------------------------------------------------------------------------------------
28627    -- 4262811 Multiperiod Accounting
28628    -----------------------------------------------------------------------------------------
28629      -- No MPA option is assigned.
28630 
28631 
28632 END IF;
28633 END IF;
28634 --
28635 
28636 --
28637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28638    trace
28639       (p_msg      => 'END of AcctLineType_76'
28640       ,p_level    => C_LEVEL_PROCEDURE
28641       ,p_module   => l_log_module);
28642 END IF;
28643 --
28644 EXCEPTION
28645   WHEN xla_exceptions_pkg.application_exception THEN
28646       RAISE;
28647   WHEN OTHERS THEN
28648        xla_exceptions_pkg.raise_message
28649            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_76');
28650 END AcctLineType_76;
28651 --
28652 
28653 ---------------------------------------
28654 --
28655 -- PRIVATE FUNCTION
28656 --         AcctLineType_77
28657 --
28658 ---------------------------------------
28659 PROCEDURE AcctLineType_77 (
28660   p_application_id        IN NUMBER
28661  ,p_event_id              IN NUMBER
28662  ,p_calculate_acctd_flag  IN VARCHAR2
28663  ,p_calculate_g_l_flag    IN VARCHAR2
28664  ,p_actual_flag           IN OUT VARCHAR2
28665  ,p_balance_type_code     OUT VARCHAR2
28666  ,p_gain_or_loss_ref      OUT VARCHAR2
28667  
28668 --TRANSACTION_ID
28669  , p_source_1            IN NUMBER
28670 --Item Concatenated Segments
28671  , p_source_2            IN VARCHAR2
28672 --Transaction Quantity
28673  , p_source_3            IN NUMBER
28674 --Transaction Unit of Measure Code
28675  , p_source_4            IN VARCHAR2
28676 --Inventory Transaction Type Description
28677  , p_source_5            IN VARCHAR2
28678 --Cost Management Default Account
28679  , p_source_11            IN NUMBER
28680 --Applied to Application ID
28681  , p_source_79            IN NUMBER
28682 --Applied to Distribution Link Type
28683  , p_source_80            IN VARCHAR2
28684 --Applied to Entity Code
28685  , p_source_81            IN VARCHAR2
28686 --DISTRIBUTION_IDENTIFIER
28687  , p_source_84            IN NUMBER
28688 --Distribution Type
28689  , p_source_85            IN VARCHAR2
28690  , p_source_85_meaning    IN VARCHAR2
28691 --Encumbrance Reversal Amount Entered
28692  , p_source_87            IN NUMBER
28693 --Entered Currency Code
28694  , p_source_88            IN VARCHAR2
28695 --Transaction Encumbrance Reversal Amount
28696  , p_source_89            IN NUMBER
28697 --Entered Amount
28698  , p_source_91            IN NUMBER
28699 --Currency Conversion Date
28700  , p_source_92            IN DATE
28701 --Currency Conversion Rate
28702  , p_source_93            IN NUMBER
28703 --Currency Conversion Type
28704  , p_source_94            IN VARCHAR2
28705 --Accounted Amount
28706  , p_source_95            IN NUMBER
28707 --Accounting Line Type
28708  , p_source_97            IN NUMBER
28709 --Costing Encumbrance Upgrade Option
28710  , p_source_100            IN VARCHAR2
28711 --TXN_PO_DISTRIBUTION_ID
28712  , p_source_101            IN NUMBER
28713 --TXN_PO_HEADER_ID
28714  , p_source_102            IN NUMBER
28715 --Requisition Budget Account
28716  , p_source_103            IN NUMBER
28717 --Requisition Encumbrance Type Identifier
28718  , p_source_104            IN NUMBER
28719 )
28720 IS
28721 
28722 l_component_type              VARCHAR2(80);
28723 l_component_code              VARCHAR2(30);
28724 l_component_type_code         VARCHAR2(1);
28725 l_component_appl_id           INTEGER;
28726 l_amb_context_code            VARCHAR2(30);
28727 l_entity_code                 VARCHAR2(30);
28728 l_event_class_code            VARCHAR2(30);
28729 l_ae_header_id                NUMBER;
28730 l_event_type_code             VARCHAR2(30);
28731 l_line_definition_code        VARCHAR2(30);
28732 l_line_definition_owner_code  VARCHAR2(1);
28733 --
28734 -- adr variables
28735 l_segment                     VARCHAR2(30);
28736 l_ccid                        NUMBER;
28737 l_adr_transaction_coa_id      NUMBER;
28738 l_adr_accounting_coa_id       NUMBER;
28739 l_adr_flexfield_segment_code  VARCHAR2(30);
28740 l_adr_flex_value_set_id       NUMBER;
28741 l_adr_value_type_code         VARCHAR2(30);
28742 l_adr_value_combination_id    NUMBER;
28743 l_adr_value_segment_code      VARCHAR2(30);
28744 
28745 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28746 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28747 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28748 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28749 
28750 -- 4262811 Variables ------------------------------------------------------------------------------------------
28751 l_entered_amt_idx             NUMBER;
28752 l_accted_amt_idx              NUMBER;
28753 l_acc_rev_flag                VARCHAR2(1);
28754 l_accrual_line_num            NUMBER;
28755 l_tmp_amt                     NUMBER;
28756 l_acc_rev_natural_side_code   VARCHAR2(1);
28757 
28758 l_num_entries                 NUMBER;
28759 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28760 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28761 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28762 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28763 l_recog_line_1                NUMBER;
28764 l_recog_line_2                NUMBER;
28765 
28766 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28767 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28768 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28769 
28770 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28771 
28772 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28773 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28774 
28775 ---------------------------------------------------------------------------------------------------------------
28776 
28777 
28778 --
28779 -- bulk performance
28780 --
28781 l_balance_type_code           VARCHAR2(1);
28782 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28783 l_log_module                  VARCHAR2(240);
28784 
28785 --
28786 -- Upgrade strategy
28787 --
28788 l_actual_upg_option           VARCHAR2(1);
28789 l_enc_upg_option           VARCHAR2(1);
28790 
28791 --
28792 BEGIN
28793 --
28794 IF g_log_enabled THEN
28795       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
28796 END IF;
28797 --
28798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28799 
28800       trace
28801          (p_msg      => 'BEGIN of AcctLineType_77'
28802          ,p_level    => C_LEVEL_PROCEDURE
28803          ,p_module   => l_log_module);
28804 
28805 END IF;
28806 --
28807 l_component_type             := 'AMB_JLT';
28808 l_component_code             := 'COST_VARIANCE';
28809 l_component_type_code        := 'S';
28810 l_component_appl_id          :=  707;
28811 l_amb_context_code           := 'DEFAULT';
28812 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
28813 l_event_class_code           := 'DIR_INTERORG_RCPT';
28814 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
28815 l_line_definition_owner_code := 'S';
28816 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
28817 --
28818 l_balance_type_code          := 'A';
28819 l_segment                     := NULL;
28820 l_ccid                        := NULL;
28821 l_adr_transaction_coa_id      := NULL;
28822 l_adr_accounting_coa_id       := NULL;
28823 l_adr_flexfield_segment_code  := NULL;
28824 l_adr_flex_value_set_id       := NULL;
28825 l_adr_value_type_code         := NULL;
28826 l_adr_value_combination_id    := NULL;
28827 l_adr_value_segment_code      := NULL;
28828 
28829 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28830 l_bflow_class_code           := '';    -- 4219869 Business Flow
28831 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28832 l_budgetary_control_flag     := 'N';
28833 
28834 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28835 l_bflow_applied_to_amt       := NULL; -- 5132302
28836 l_entered_amt_idx            := NULL;          -- 4262811
28837 l_accted_amt_idx             := NULL;          -- 4262811
28838 l_acc_rev_flag               := NULL;          -- 4262811
28839 l_accrual_line_num           := NULL;          -- 4262811
28840 l_tmp_amt                    := NULL;          -- 4262811
28841 --
28842  
28843 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28844     l_balance_type_code <> 'B' THEN
28845 IF NVL(p_source_97,9E125) =  13
28846  THEN 
28847 
28848    --
28849    XLA_AE_LINES_PKG.SetNewLine;
28850 
28851    p_balance_type_code          := l_balance_type_code;
28852    -- set the flag so later we will know whether the gain loss line needs to be created
28853    
28854    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28855      p_actual_flag :='A';
28856    END IF;
28857 
28858    --
28859    -- bulk performance
28860    --
28861    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28862                                       p_header_num   => 0); -- 4262811
28863    --
28864    -- set accounting line options
28865    --
28866    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28867            p_natural_side_code          => 'D'
28868          , p_gain_or_loss_flag          => 'N'
28869          , p_gl_transfer_mode_code      => 'S'
28870          , p_acct_entry_type_code       => 'A'
28871          , p_switch_side_flag           => 'Y'
28872          , p_merge_duplicate_code       => 'N'
28873          );
28874    --
28875    l_acc_rev_natural_side_code := 'C';  -- 4262811
28876    -- 
28877    --
28878    -- set accounting line type info
28879    --
28880    xla_ae_lines_pkg.SetAcctLineType
28881       (p_component_type             => l_component_type
28882       ,p_event_type_code            => l_event_type_code
28883       ,p_line_definition_owner_code => l_line_definition_owner_code
28884       ,p_line_definition_code       => l_line_definition_code
28885       ,p_accounting_line_code       => l_component_code
28886       ,p_accounting_line_type_code  => l_component_type_code
28887       ,p_accounting_line_appl_id    => l_component_appl_id
28888       ,p_amb_context_code           => l_amb_context_code
28889       ,p_entity_code                => l_entity_code
28890       ,p_event_class_code           => l_event_class_code);
28891    --
28892    -- set accounting class
28893    --
28894    xla_ae_lines_pkg.SetAcctClass(
28895            p_accounting_class_code  => 'COST_VARIANCE'
28896          , p_ae_header_id           => l_ae_header_id
28897          );
28898 
28899    --
28900    -- set rounding class
28901    --
28902    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28903                       'COST_VARIANCE';
28904 
28905    --
28906    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28907    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28908    --
28909    -- bulk performance
28910    --
28911    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28912 
28913    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28914       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28915 
28916    -- 4955764
28917    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28918       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28919 
28920    -- 4458381 Public Sector Enh
28921    
28922    --
28923    -- set accounting attributes for the line type
28924    --
28925    l_entered_amt_idx := 17;
28926    l_accted_amt_idx  := 22;
28927    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28928    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
28929    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
28930    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28931    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
28932    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
28933    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
28934    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
28935    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
28936    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28937    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
28938    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
28939    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
28940    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
28941    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
28942    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
28943    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
28944    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
28945    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
28946    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
28947    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
28948    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
28949    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
28950    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
28951    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
28952    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
28953    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
28954    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
28955    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
28956    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
28957    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
28958    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
28959    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
28960    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
28961    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
28962    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
28963    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
28964    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
28965    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
28966    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
28967    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
28968    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
28969    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
28970    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
28971    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
28972    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
28973    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
28974    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
28975    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
28976 
28977    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28978    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28979 
28980    ---------------------------------------------------------------------------------------------------------------
28981    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28982    ---------------------------------------------------------------------------------------------------------------
28983    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28984 
28985    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28986    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28987 
28988    IF xla_accounting_cache_pkg.GetValueChar
28989          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28990          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28991    AND l_bflow_method_code = 'PRIOR_ENTRY'
28992 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28993    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28994          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28995        )
28996    THEN
28997          xla_ae_lines_pkg.BflowUpgEntry
28998            (p_business_method_code    => l_bflow_method_code
28999            ,p_business_class_code     => l_bflow_class_code
29000            ,p_balance_type            => l_balance_type_code);
29001    ELSE
29002       NULL;
29003 -- No business flow processing for business flow method of NONE.
29004    END IF;
29005 
29006    --
29007    -- call analytical criteria
29008    --
29009    
29010    --
29011    -- call description
29012    --
29013    
29014 xla_ae_lines_pkg.SetLineDescription(
29015    p_ae_header_id => l_ae_header_id
29016   ,p_description  => Description_1 (
29017      p_application_id         => p_application_id
29018    , p_ae_header_id           => l_ae_header_id 
29019 , p_source_1 => p_source_1
29020 , p_source_2 => p_source_2
29021 , p_source_3 => p_source_3
29022 , p_source_4 => p_source_4
29023 , p_source_5 => p_source_5
29024    )
29025 );
29026 
29027 
29028    --
29029    -- call ADRs
29030    -- Bug 4922099
29031    --
29032    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29033         (NVL(l_actual_upg_option, 'N') = 'O') OR
29034         (NVL(l_enc_upg_option, 'N') = 'O')
29035       )
29036    THEN
29037    NULL;
29038    --
29039    --
29040    
29041   l_ccid := AcctDerRule_6(
29042            p_application_id           => p_application_id
29043          , p_ae_header_id             => l_ae_header_id 
29044 , p_source_11 => p_source_11
29045          , x_transaction_coa_id       => l_adr_transaction_coa_id
29046          , x_accounting_coa_id        => l_adr_accounting_coa_id
29047          , x_value_type_code          => l_adr_value_type_code
29048          , p_side                     => 'NA'
29049    );
29050 
29051    xla_ae_lines_pkg.set_ccid(
29052     p_code_combination_id          => l_ccid
29053   , p_value_type_code              => l_adr_value_type_code
29054   , p_transaction_coa_id           => l_adr_transaction_coa_id
29055   , p_accounting_coa_id            => l_adr_accounting_coa_id
29056   , p_adr_code                     => 'CST_DEFAULT'
29057   , p_adr_type_code                => 'S'
29058   , p_component_type               => l_component_type
29059   , p_component_code               => l_component_code
29060   , p_component_type_code          => l_component_type_code
29061   , p_component_appl_id            => l_component_appl_id
29062   , p_amb_context_code             => l_amb_context_code
29063   , p_side                         => 'NA'
29064   );
29065 
29066 
29067    --
29068    --
29069    END IF;
29070    --
29071    -- Bug 4922099
29072    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29073           (NVL(l_enc_upg_option, 'N') = 'O')
29074         ) AND
29075         (l_bflow_method_code = 'PRIOR_ENTRY')
29076       )
29077    THEN
29078       IF
29079       --
29080       1 = 2
29081       --
29082       THEN
29083       xla_accounting_err_pkg.build_message
29084                                     (p_appli_s_name            => 'XLA'
29085                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29086                                     ,p_token_1                 => 'LINE_NUMBER'
29087                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29088                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29089                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29090                                                                              l_component_type
29091                                                                             ,l_component_code
29092                                                                             ,l_component_type_code
29093                                                                             ,l_component_appl_id
29094                                                                             ,l_amb_context_code
29095                                                                             ,l_entity_code
29096                                                                             ,l_event_class_code
29097                                                                            )
29098                                     ,p_token_3                 => 'OWNER'
29099                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29100                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29101                                                                           ,p_lookup_code    => l_component_type_code
29102                                                                          )
29103                                     ,p_token_4                 => 'PRODUCT_NAME'
29104                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29105                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29106                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29107                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29108                                     ,p_ae_header_id            =>  NULL
29109                                        );
29110 
29111         IF (C_LEVEL_ERROR>= g_log_level) THEN
29112                  trace
29113                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29114                       ,p_level    => C_LEVEL_ERROR
29115                       ,p_module   => l_log_module);
29116         END IF;
29117       END IF;
29118    END IF;
29119    --
29120    --
29121    ------------------------------------------------------------------------------------------------
29122    -- 4219869 Business Flow
29123    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29124    -- Prior Entry.  Currently, the following code is always generated.
29125    ------------------------------------------------------------------------------------------------
29126    XLA_AE_LINES_PKG.ValidateCurrentLine;
29127 
29128    ------------------------------------------------------------------------------------
29129    -- 4219869 Business Flow
29130    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29131    ------------------------------------------------------------------------------------
29132    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29133 
29134    ----------------------------------------------------------------------------------
29135    -- 4219869 Business Flow
29136    -- Update journal entry status -- Need to generate this within IF <condition>
29137    ----------------------------------------------------------------------------------
29138    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29139          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29140          ,p_balance_type_code => l_balance_type_code
29141          );
29142 
29143    -------------------------------------------------------------------------------------------
29144    -- 4262811 - Generate the Accrual Reversal lines
29145    -------------------------------------------------------------------------------------------
29146    BEGIN
29147       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29148                               (g_array_event(p_event_id).array_value_num('header_index'));
29149       IF l_acc_rev_flag IS NULL THEN
29150          l_acc_rev_flag := 'N';
29151       END IF;
29152    EXCEPTION
29153       WHEN OTHERS THEN
29154          l_acc_rev_flag := 'N';
29155    END;
29156    --
29157    IF (l_acc_rev_flag = 'Y') THEN
29158 
29159        -- 4645092  ------------------------------------------------------------------------------
29160        -- To allow MPA report to determine if it should generate report process
29161        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29162        ------------------------------------------------------------------------------------------
29163 
29164        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29165        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29166    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29167    -- call ADRs
29168    -- Bug 4922099
29169    --
29170    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29171         (NVL(l_actual_upg_option, 'N') = 'O') OR
29172         (NVL(l_enc_upg_option, 'N') = 'O')
29173       )
29174    THEN
29175    NULL;
29176    --
29177    --
29178    
29179   l_ccid := AcctDerRule_6(
29180            p_application_id           => p_application_id
29181          , p_ae_header_id             => l_ae_header_id 
29182 , p_source_11 => p_source_11
29183          , x_transaction_coa_id       => l_adr_transaction_coa_id
29184          , x_accounting_coa_id        => l_adr_accounting_coa_id
29185          , x_value_type_code          => l_adr_value_type_code
29186          , p_side                     => 'NA'
29187    );
29188 
29189    xla_ae_lines_pkg.set_ccid(
29190     p_code_combination_id          => l_ccid
29191   , p_value_type_code              => l_adr_value_type_code
29192   , p_transaction_coa_id           => l_adr_transaction_coa_id
29193   , p_accounting_coa_id            => l_adr_accounting_coa_id
29194   , p_adr_code                     => 'CST_DEFAULT'
29195   , p_adr_type_code                => 'S'
29196   , p_component_type               => l_component_type
29197   , p_component_code               => l_component_code
29198   , p_component_type_code          => l_component_type_code
29199   , p_component_appl_id            => l_component_appl_id
29200   , p_amb_context_code             => l_amb_context_code
29201   , p_side                         => 'NA'
29202   );
29203 
29204 
29205    --
29206    --
29207    END IF;
29208 
29209        --
29210        -- Update the line information that should be overwritten
29211        --
29212        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29213                                          p_header_num   => 1);
29214        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29215 
29216        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29217 
29218        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29219           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29220        END IF;
29221 
29222       --
29223       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29224       --
29225       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29226           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29227       ELSE
29228           ---------------------------------------------------------------------------------------------------
29229           -- 4262811a Switch Sign
29230           ---------------------------------------------------------------------------------------------------
29231           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29232           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29233                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29234           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29235                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29236           -- 5132302
29237           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29238                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29239 
29240       END IF;
29241 
29242       -- 4955764
29243       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29245 
29246 
29247       XLA_AE_LINES_PKG.ValidateCurrentLine;
29248       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29249 
29250       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29251                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29252                ,p_balance_type_code => l_balance_type_code);
29253 
29254    END IF;
29255 
29256    -----------------------------------------------------------------------------------------
29257    -- 4262811 Multiperiod Accounting
29258    -----------------------------------------------------------------------------------------
29259      -- No MPA option is assigned.
29260 
29261 
29262 END IF;
29263 END IF;
29264 --
29265 
29266 --
29267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29268    trace
29269       (p_msg      => 'END of AcctLineType_77'
29270       ,p_level    => C_LEVEL_PROCEDURE
29271       ,p_module   => l_log_module);
29272 END IF;
29273 --
29274 EXCEPTION
29275   WHEN xla_exceptions_pkg.application_exception THEN
29276       RAISE;
29277   WHEN OTHERS THEN
29278        xla_exceptions_pkg.raise_message
29279            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_77');
29280 END AcctLineType_77;
29281 --
29282 
29283 ---------------------------------------
29284 --
29285 -- PRIVATE FUNCTION
29286 --         AcctLineType_78
29287 --
29288 ---------------------------------------
29289 PROCEDURE AcctLineType_78 (
29290   p_application_id        IN NUMBER
29291  ,p_event_id              IN NUMBER
29292  ,p_calculate_acctd_flag  IN VARCHAR2
29293  ,p_calculate_g_l_flag    IN VARCHAR2
29294  ,p_actual_flag           IN OUT VARCHAR2
29295  ,p_balance_type_code     OUT VARCHAR2
29296  ,p_gain_or_loss_ref      OUT VARCHAR2
29297  
29298 --TRANSACTION_ID
29299  , p_source_1            IN NUMBER
29300 --Item Concatenated Segments
29301  , p_source_2            IN VARCHAR2
29302 --Transaction Quantity
29303  , p_source_3            IN NUMBER
29304 --Transaction Unit of Measure Code
29305  , p_source_4            IN VARCHAR2
29306 --Inventory Transaction Type Description
29307  , p_source_5            IN VARCHAR2
29308 --Cost Management Default Account
29309  , p_source_11            IN NUMBER
29310 --Applied to Application ID
29311  , p_source_79            IN NUMBER
29312 --Applied to Distribution Link Type
29313  , p_source_80            IN VARCHAR2
29314 --Applied to Entity Code
29315  , p_source_81            IN VARCHAR2
29316 --DISTRIBUTION_IDENTIFIER
29317  , p_source_84            IN NUMBER
29318 --Distribution Type
29319  , p_source_85            IN VARCHAR2
29320  , p_source_85_meaning    IN VARCHAR2
29321 --Encumbrance Reversal Amount Entered
29322  , p_source_87            IN NUMBER
29323 --Entered Currency Code
29324  , p_source_88            IN VARCHAR2
29325 --Transaction Encumbrance Reversal Amount
29326  , p_source_89            IN NUMBER
29327 --Entered Amount
29328  , p_source_91            IN NUMBER
29329 --Currency Conversion Date
29330  , p_source_92            IN DATE
29331 --Currency Conversion Rate
29332  , p_source_93            IN NUMBER
29333 --Currency Conversion Type
29334  , p_source_94            IN VARCHAR2
29335 --Accounted Amount
29336  , p_source_95            IN NUMBER
29337 --Accounting Line Type
29338  , p_source_97            IN NUMBER
29339 --Costing Encumbrance Upgrade Option
29340  , p_source_100            IN VARCHAR2
29341 --TXN_PO_DISTRIBUTION_ID
29342  , p_source_101            IN NUMBER
29343 --TXN_PO_HEADER_ID
29344  , p_source_102            IN NUMBER
29345 --Requisition Budget Account
29346  , p_source_103            IN NUMBER
29347 --Requisition Encumbrance Type Identifier
29348  , p_source_104            IN NUMBER
29349 )
29350 IS
29351 
29352 l_component_type              VARCHAR2(80);
29353 l_component_code              VARCHAR2(30);
29354 l_component_type_code         VARCHAR2(1);
29355 l_component_appl_id           INTEGER;
29356 l_amb_context_code            VARCHAR2(30);
29357 l_entity_code                 VARCHAR2(30);
29358 l_event_class_code            VARCHAR2(30);
29359 l_ae_header_id                NUMBER;
29360 l_event_type_code             VARCHAR2(30);
29361 l_line_definition_code        VARCHAR2(30);
29362 l_line_definition_owner_code  VARCHAR2(1);
29363 --
29364 -- adr variables
29365 l_segment                     VARCHAR2(30);
29366 l_ccid                        NUMBER;
29367 l_adr_transaction_coa_id      NUMBER;
29368 l_adr_accounting_coa_id       NUMBER;
29369 l_adr_flexfield_segment_code  VARCHAR2(30);
29370 l_adr_flex_value_set_id       NUMBER;
29371 l_adr_value_type_code         VARCHAR2(30);
29372 l_adr_value_combination_id    NUMBER;
29373 l_adr_value_segment_code      VARCHAR2(30);
29374 
29375 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29376 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29377 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29378 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29379 
29380 -- 4262811 Variables ------------------------------------------------------------------------------------------
29381 l_entered_amt_idx             NUMBER;
29382 l_accted_amt_idx              NUMBER;
29383 l_acc_rev_flag                VARCHAR2(1);
29384 l_accrual_line_num            NUMBER;
29385 l_tmp_amt                     NUMBER;
29386 l_acc_rev_natural_side_code   VARCHAR2(1);
29387 
29388 l_num_entries                 NUMBER;
29389 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29390 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29391 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29392 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29393 l_recog_line_1                NUMBER;
29394 l_recog_line_2                NUMBER;
29395 
29396 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29397 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29398 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29399 
29400 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29401 
29402 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29403 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29404 
29405 ---------------------------------------------------------------------------------------------------------------
29406 
29407 
29408 --
29409 -- bulk performance
29410 --
29411 l_balance_type_code           VARCHAR2(1);
29412 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29413 l_log_module                  VARCHAR2(240);
29414 
29415 --
29416 -- Upgrade strategy
29417 --
29418 l_actual_upg_option           VARCHAR2(1);
29419 l_enc_upg_option           VARCHAR2(1);
29420 
29421 --
29422 BEGIN
29423 --
29424 IF g_log_enabled THEN
29425       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
29426 END IF;
29427 --
29428 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29429 
29430       trace
29431          (p_msg      => 'BEGIN of AcctLineType_78'
29432          ,p_level    => C_LEVEL_PROCEDURE
29433          ,p_module   => l_log_module);
29434 
29435 END IF;
29436 --
29437 l_component_type             := 'AMB_JLT';
29438 l_component_code             := 'COST_VARIANCE';
29439 l_component_type_code        := 'S';
29440 l_component_appl_id          :=  707;
29441 l_amb_context_code           := 'DEFAULT';
29442 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
29443 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
29444 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
29445 l_line_definition_owner_code := 'S';
29446 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
29447 --
29448 l_balance_type_code          := 'A';
29449 l_segment                     := NULL;
29450 l_ccid                        := NULL;
29451 l_adr_transaction_coa_id      := NULL;
29452 l_adr_accounting_coa_id       := NULL;
29453 l_adr_flexfield_segment_code  := NULL;
29454 l_adr_flex_value_set_id       := NULL;
29455 l_adr_value_type_code         := NULL;
29456 l_adr_value_combination_id    := NULL;
29457 l_adr_value_segment_code      := NULL;
29458 
29459 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29460 l_bflow_class_code           := '';    -- 4219869 Business Flow
29461 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29462 l_budgetary_control_flag     := 'N';
29463 
29464 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29465 l_bflow_applied_to_amt       := NULL; -- 5132302
29466 l_entered_amt_idx            := NULL;          -- 4262811
29467 l_accted_amt_idx             := NULL;          -- 4262811
29468 l_acc_rev_flag               := NULL;          -- 4262811
29469 l_accrual_line_num           := NULL;          -- 4262811
29470 l_tmp_amt                    := NULL;          -- 4262811
29471 --
29472  
29473 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29474     l_balance_type_code <> 'B' THEN
29475 IF NVL(p_source_97,9E125) =  13
29476  THEN 
29477 
29478    --
29479    XLA_AE_LINES_PKG.SetNewLine;
29480 
29481    p_balance_type_code          := l_balance_type_code;
29482    -- set the flag so later we will know whether the gain loss line needs to be created
29483    
29484    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29485      p_actual_flag :='A';
29486    END IF;
29487 
29488    --
29489    -- bulk performance
29490    --
29491    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29492                                       p_header_num   => 0); -- 4262811
29493    --
29494    -- set accounting line options
29495    --
29496    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29497            p_natural_side_code          => 'D'
29498          , p_gain_or_loss_flag          => 'N'
29499          , p_gl_transfer_mode_code      => 'S'
29500          , p_acct_entry_type_code       => 'A'
29501          , p_switch_side_flag           => 'Y'
29502          , p_merge_duplicate_code       => 'N'
29503          );
29504    --
29505    l_acc_rev_natural_side_code := 'C';  -- 4262811
29506    -- 
29507    --
29508    -- set accounting line type info
29509    --
29510    xla_ae_lines_pkg.SetAcctLineType
29511       (p_component_type             => l_component_type
29512       ,p_event_type_code            => l_event_type_code
29513       ,p_line_definition_owner_code => l_line_definition_owner_code
29514       ,p_line_definition_code       => l_line_definition_code
29515       ,p_accounting_line_code       => l_component_code
29516       ,p_accounting_line_type_code  => l_component_type_code
29517       ,p_accounting_line_appl_id    => l_component_appl_id
29518       ,p_amb_context_code           => l_amb_context_code
29519       ,p_entity_code                => l_entity_code
29520       ,p_event_class_code           => l_event_class_code);
29521    --
29522    -- set accounting class
29523    --
29524    xla_ae_lines_pkg.SetAcctClass(
29525            p_accounting_class_code  => 'COST_VARIANCE'
29526          , p_ae_header_id           => l_ae_header_id
29527          );
29528 
29529    --
29530    -- set rounding class
29531    --
29532    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29533                       'COST_VARIANCE';
29534 
29535    --
29536    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29537    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29538    --
29539    -- bulk performance
29540    --
29541    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29542 
29543    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29544       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29545 
29546    -- 4955764
29547    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29548       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29549 
29550    -- 4458381 Public Sector Enh
29551    
29552    --
29553    -- set accounting attributes for the line type
29554    --
29555    l_entered_amt_idx := 17;
29556    l_accted_amt_idx  := 22;
29557    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29558    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
29559    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
29560    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29561    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
29562    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
29563    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
29564    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
29565    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
29566    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29567    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
29568    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
29569    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
29570    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
29571    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
29572    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
29573    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
29574    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
29575    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
29576    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
29577    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
29578    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
29579    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
29580    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
29581    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
29582    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
29583    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
29584    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
29585    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
29586    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
29587    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
29588    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
29589    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
29590    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
29591    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
29592    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
29593    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
29594    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
29595    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
29596    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
29597    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
29598    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
29599    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
29600    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
29601    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
29602    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
29603    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
29604    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
29605    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
29606 
29607    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29608    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29609 
29610    ---------------------------------------------------------------------------------------------------------------
29611    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29612    ---------------------------------------------------------------------------------------------------------------
29613    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29614 
29615    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29616    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29617 
29618    IF xla_accounting_cache_pkg.GetValueChar
29619          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29620          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29621    AND l_bflow_method_code = 'PRIOR_ENTRY'
29622 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29623    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29624          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29625        )
29626    THEN
29627          xla_ae_lines_pkg.BflowUpgEntry
29628            (p_business_method_code    => l_bflow_method_code
29629            ,p_business_class_code     => l_bflow_class_code
29630            ,p_balance_type            => l_balance_type_code);
29631    ELSE
29632       NULL;
29633 -- No business flow processing for business flow method of NONE.
29634    END IF;
29635 
29636    --
29637    -- call analytical criteria
29638    --
29639    
29640    --
29641    -- call description
29642    --
29643    
29644 xla_ae_lines_pkg.SetLineDescription(
29645    p_ae_header_id => l_ae_header_id
29646   ,p_description  => Description_1 (
29647      p_application_id         => p_application_id
29648    , p_ae_header_id           => l_ae_header_id 
29649 , p_source_1 => p_source_1
29650 , p_source_2 => p_source_2
29651 , p_source_3 => p_source_3
29652 , p_source_4 => p_source_4
29653 , p_source_5 => p_source_5
29654    )
29655 );
29656 
29657 
29658    --
29659    -- call ADRs
29660    -- Bug 4922099
29661    --
29662    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29663         (NVL(l_actual_upg_option, 'N') = 'O') OR
29664         (NVL(l_enc_upg_option, 'N') = 'O')
29665       )
29666    THEN
29667    NULL;
29668    --
29669    --
29670    
29671   l_ccid := AcctDerRule_6(
29672            p_application_id           => p_application_id
29673          , p_ae_header_id             => l_ae_header_id 
29674 , p_source_11 => p_source_11
29675          , x_transaction_coa_id       => l_adr_transaction_coa_id
29676          , x_accounting_coa_id        => l_adr_accounting_coa_id
29677          , x_value_type_code          => l_adr_value_type_code
29678          , p_side                     => 'NA'
29679    );
29680 
29681    xla_ae_lines_pkg.set_ccid(
29682     p_code_combination_id          => l_ccid
29683   , p_value_type_code              => l_adr_value_type_code
29684   , p_transaction_coa_id           => l_adr_transaction_coa_id
29685   , p_accounting_coa_id            => l_adr_accounting_coa_id
29686   , p_adr_code                     => 'CST_DEFAULT'
29687   , p_adr_type_code                => 'S'
29688   , p_component_type               => l_component_type
29689   , p_component_code               => l_component_code
29690   , p_component_type_code          => l_component_type_code
29691   , p_component_appl_id            => l_component_appl_id
29692   , p_amb_context_code             => l_amb_context_code
29693   , p_side                         => 'NA'
29694   );
29695 
29696 
29697    --
29698    --
29699    END IF;
29700    --
29701    -- Bug 4922099
29702    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29703           (NVL(l_enc_upg_option, 'N') = 'O')
29704         ) AND
29705         (l_bflow_method_code = 'PRIOR_ENTRY')
29706       )
29707    THEN
29708       IF
29709       --
29710       1 = 2
29711       --
29712       THEN
29713       xla_accounting_err_pkg.build_message
29714                                     (p_appli_s_name            => 'XLA'
29715                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29716                                     ,p_token_1                 => 'LINE_NUMBER'
29717                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29718                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29719                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29720                                                                              l_component_type
29721                                                                             ,l_component_code
29722                                                                             ,l_component_type_code
29723                                                                             ,l_component_appl_id
29724                                                                             ,l_amb_context_code
29725                                                                             ,l_entity_code
29726                                                                             ,l_event_class_code
29727                                                                            )
29728                                     ,p_token_3                 => 'OWNER'
29729                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29730                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29731                                                                           ,p_lookup_code    => l_component_type_code
29732                                                                          )
29733                                     ,p_token_4                 => 'PRODUCT_NAME'
29734                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29735                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29736                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29737                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29738                                     ,p_ae_header_id            =>  NULL
29739                                        );
29740 
29741         IF (C_LEVEL_ERROR>= g_log_level) THEN
29742                  trace
29743                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29744                       ,p_level    => C_LEVEL_ERROR
29745                       ,p_module   => l_log_module);
29746         END IF;
29747       END IF;
29748    END IF;
29749    --
29750    --
29751    ------------------------------------------------------------------------------------------------
29752    -- 4219869 Business Flow
29753    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29754    -- Prior Entry.  Currently, the following code is always generated.
29755    ------------------------------------------------------------------------------------------------
29756    XLA_AE_LINES_PKG.ValidateCurrentLine;
29757 
29758    ------------------------------------------------------------------------------------
29759    -- 4219869 Business Flow
29760    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29761    ------------------------------------------------------------------------------------
29762    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29763 
29764    ----------------------------------------------------------------------------------
29765    -- 4219869 Business Flow
29766    -- Update journal entry status -- Need to generate this within IF <condition>
29767    ----------------------------------------------------------------------------------
29768    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29769          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29770          ,p_balance_type_code => l_balance_type_code
29771          );
29772 
29773    -------------------------------------------------------------------------------------------
29774    -- 4262811 - Generate the Accrual Reversal lines
29775    -------------------------------------------------------------------------------------------
29776    BEGIN
29777       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29778                               (g_array_event(p_event_id).array_value_num('header_index'));
29779       IF l_acc_rev_flag IS NULL THEN
29780          l_acc_rev_flag := 'N';
29781       END IF;
29782    EXCEPTION
29783       WHEN OTHERS THEN
29784          l_acc_rev_flag := 'N';
29785    END;
29786    --
29787    IF (l_acc_rev_flag = 'Y') THEN
29788 
29789        -- 4645092  ------------------------------------------------------------------------------
29790        -- To allow MPA report to determine if it should generate report process
29791        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29792        ------------------------------------------------------------------------------------------
29793 
29794        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29795        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29796    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29797    -- call ADRs
29798    -- Bug 4922099
29799    --
29800    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29801         (NVL(l_actual_upg_option, 'N') = 'O') OR
29802         (NVL(l_enc_upg_option, 'N') = 'O')
29803       )
29804    THEN
29805    NULL;
29806    --
29807    --
29808    
29809   l_ccid := AcctDerRule_6(
29810            p_application_id           => p_application_id
29811          , p_ae_header_id             => l_ae_header_id 
29812 , p_source_11 => p_source_11
29813          , x_transaction_coa_id       => l_adr_transaction_coa_id
29814          , x_accounting_coa_id        => l_adr_accounting_coa_id
29815          , x_value_type_code          => l_adr_value_type_code
29816          , p_side                     => 'NA'
29817    );
29818 
29819    xla_ae_lines_pkg.set_ccid(
29820     p_code_combination_id          => l_ccid
29821   , p_value_type_code              => l_adr_value_type_code
29822   , p_transaction_coa_id           => l_adr_transaction_coa_id
29823   , p_accounting_coa_id            => l_adr_accounting_coa_id
29824   , p_adr_code                     => 'CST_DEFAULT'
29825   , p_adr_type_code                => 'S'
29826   , p_component_type               => l_component_type
29827   , p_component_code               => l_component_code
29828   , p_component_type_code          => l_component_type_code
29829   , p_component_appl_id            => l_component_appl_id
29830   , p_amb_context_code             => l_amb_context_code
29831   , p_side                         => 'NA'
29832   );
29833 
29834 
29835    --
29836    --
29837    END IF;
29838 
29839        --
29840        -- Update the line information that should be overwritten
29841        --
29842        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29843                                          p_header_num   => 1);
29844        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29845 
29846        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29847 
29848        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29849           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29850        END IF;
29851 
29852       --
29853       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29854       --
29855       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29856           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29857       ELSE
29858           ---------------------------------------------------------------------------------------------------
29859           -- 4262811a Switch Sign
29860           ---------------------------------------------------------------------------------------------------
29861           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29862           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29863                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29864           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29865                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29866           -- 5132302
29867           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29868                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29869 
29870       END IF;
29871 
29872       -- 4955764
29873       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29874       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29875 
29876 
29877       XLA_AE_LINES_PKG.ValidateCurrentLine;
29878       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29879 
29880       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29881                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29882                ,p_balance_type_code => l_balance_type_code);
29883 
29884    END IF;
29885 
29886    -----------------------------------------------------------------------------------------
29887    -- 4262811 Multiperiod Accounting
29888    -----------------------------------------------------------------------------------------
29889      -- No MPA option is assigned.
29890 
29891 
29892 END IF;
29893 END IF;
29894 --
29895 
29896 --
29897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29898    trace
29899       (p_msg      => 'END of AcctLineType_78'
29900       ,p_level    => C_LEVEL_PROCEDURE
29901       ,p_module   => l_log_module);
29902 END IF;
29903 --
29904 EXCEPTION
29905   WHEN xla_exceptions_pkg.application_exception THEN
29906       RAISE;
29907   WHEN OTHERS THEN
29908        xla_exceptions_pkg.raise_message
29909            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_78');
29910 END AcctLineType_78;
29911 --
29912 
29913 ---------------------------------------
29914 --
29915 -- PRIVATE FUNCTION
29916 --         AcctLineType_79
29917 --
29918 ---------------------------------------
29919 PROCEDURE AcctLineType_79 (
29920   p_application_id        IN NUMBER
29921  ,p_event_id              IN NUMBER
29922  ,p_calculate_acctd_flag  IN VARCHAR2
29923  ,p_calculate_g_l_flag    IN VARCHAR2
29924  ,p_actual_flag           IN OUT VARCHAR2
29925  ,p_balance_type_code     OUT VARCHAR2
29926  ,p_gain_or_loss_ref      OUT VARCHAR2
29927  
29928 --Cost Management Default Account
29929  , p_source_11            IN NUMBER
29930 --DISTRIBUTION_IDENTIFIER
29931  , p_source_84            IN NUMBER
29932 --Distribution Type
29933  , p_source_85            IN VARCHAR2
29934  , p_source_85_meaning    IN VARCHAR2
29935 --Entered Currency Code
29936  , p_source_88            IN VARCHAR2
29937 --Entered Amount
29938  , p_source_91            IN NUMBER
29939 --Currency Conversion Date
29940  , p_source_92            IN DATE
29941 --Currency Conversion Rate
29942  , p_source_93            IN NUMBER
29943 --Currency Conversion Type
29944  , p_source_94            IN VARCHAR2
29945 --Accounted Amount
29946  , p_source_95            IN NUMBER
29947 --Accounting Line Type
29948  , p_source_97            IN NUMBER
29949 )
29950 IS
29951 
29952 l_component_type              VARCHAR2(80);
29953 l_component_code              VARCHAR2(30);
29954 l_component_type_code         VARCHAR2(1);
29955 l_component_appl_id           INTEGER;
29956 l_amb_context_code            VARCHAR2(30);
29957 l_entity_code                 VARCHAR2(30);
29958 l_event_class_code            VARCHAR2(30);
29959 l_ae_header_id                NUMBER;
29960 l_event_type_code             VARCHAR2(30);
29961 l_line_definition_code        VARCHAR2(30);
29962 l_line_definition_owner_code  VARCHAR2(1);
29963 --
29964 -- adr variables
29965 l_segment                     VARCHAR2(30);
29966 l_ccid                        NUMBER;
29967 l_adr_transaction_coa_id      NUMBER;
29968 l_adr_accounting_coa_id       NUMBER;
29969 l_adr_flexfield_segment_code  VARCHAR2(30);
29970 l_adr_flex_value_set_id       NUMBER;
29971 l_adr_value_type_code         VARCHAR2(30);
29972 l_adr_value_combination_id    NUMBER;
29973 l_adr_value_segment_code      VARCHAR2(30);
29974 
29975 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29976 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29977 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29978 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29979 
29980 -- 4262811 Variables ------------------------------------------------------------------------------------------
29981 l_entered_amt_idx             NUMBER;
29982 l_accted_amt_idx              NUMBER;
29983 l_acc_rev_flag                VARCHAR2(1);
29984 l_accrual_line_num            NUMBER;
29985 l_tmp_amt                     NUMBER;
29986 l_acc_rev_natural_side_code   VARCHAR2(1);
29987 
29988 l_num_entries                 NUMBER;
29989 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29990 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29991 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29992 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29993 l_recog_line_1                NUMBER;
29994 l_recog_line_2                NUMBER;
29995 
29996 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29997 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29998 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29999 
30000 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30001 
30002 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30003 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30004 
30005 ---------------------------------------------------------------------------------------------------------------
30006 
30007 
30008 --
30009 -- bulk performance
30010 --
30011 l_balance_type_code           VARCHAR2(1);
30012 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30013 l_log_module                  VARCHAR2(240);
30014 
30015 --
30016 -- Upgrade strategy
30017 --
30018 l_actual_upg_option           VARCHAR2(1);
30019 l_enc_upg_option           VARCHAR2(1);
30020 
30021 --
30022 BEGIN
30023 --
30024 IF g_log_enabled THEN
30025       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
30026 END IF;
30027 --
30028 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30029 
30030       trace
30031          (p_msg      => 'BEGIN of AcctLineType_79'
30032          ,p_level    => C_LEVEL_PROCEDURE
30033          ,p_module   => l_log_module);
30034 
30035 END IF;
30036 --
30037 l_component_type             := 'AMB_JLT';
30038 l_component_code             := 'COST_VARIANCE';
30039 l_component_type_code        := 'S';
30040 l_component_appl_id          :=  707;
30041 l_amb_context_code           := 'DEFAULT';
30042 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
30043 l_event_class_code           := 'SALES_ORDER';
30044 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
30045 l_line_definition_owner_code := 'S';
30046 l_line_definition_code       := 'PI_COGS_RECOGNITION_ADJ';
30047 --
30048 l_balance_type_code          := 'A';
30049 l_segment                     := NULL;
30050 l_ccid                        := NULL;
30051 l_adr_transaction_coa_id      := NULL;
30052 l_adr_accounting_coa_id       := NULL;
30053 l_adr_flexfield_segment_code  := NULL;
30054 l_adr_flex_value_set_id       := NULL;
30055 l_adr_value_type_code         := NULL;
30056 l_adr_value_combination_id    := NULL;
30057 l_adr_value_segment_code      := NULL;
30058 
30059 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30060 l_bflow_class_code           := '';    -- 4219869 Business Flow
30061 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30062 l_budgetary_control_flag     := 'N';
30063 
30064 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30065 l_bflow_applied_to_amt       := NULL; -- 5132302
30066 l_entered_amt_idx            := NULL;          -- 4262811
30067 l_accted_amt_idx             := NULL;          -- 4262811
30068 l_acc_rev_flag               := NULL;          -- 4262811
30069 l_accrual_line_num           := NULL;          -- 4262811
30070 l_tmp_amt                    := NULL;          -- 4262811
30071 --
30072  
30073 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30074     l_balance_type_code <> 'B' THEN
30075 IF NVL(p_source_97,9E125) =  13
30076  THEN 
30077 
30078    --
30079    XLA_AE_LINES_PKG.SetNewLine;
30080 
30081    p_balance_type_code          := l_balance_type_code;
30082    -- set the flag so later we will know whether the gain loss line needs to be created
30083    
30084    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30085      p_actual_flag :='A';
30086    END IF;
30087 
30088    --
30089    -- bulk performance
30090    --
30091    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30092                                       p_header_num   => 0); -- 4262811
30093    --
30094    -- set accounting line options
30095    --
30096    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30097            p_natural_side_code          => 'D'
30098          , p_gain_or_loss_flag          => 'N'
30099          , p_gl_transfer_mode_code      => 'S'
30100          , p_acct_entry_type_code       => 'A'
30101          , p_switch_side_flag           => 'Y'
30102          , p_merge_duplicate_code       => 'N'
30103          );
30104    --
30105    l_acc_rev_natural_side_code := 'C';  -- 4262811
30106    -- 
30107    --
30108    -- set accounting line type info
30109    --
30110    xla_ae_lines_pkg.SetAcctLineType
30111       (p_component_type             => l_component_type
30112       ,p_event_type_code            => l_event_type_code
30113       ,p_line_definition_owner_code => l_line_definition_owner_code
30114       ,p_line_definition_code       => l_line_definition_code
30115       ,p_accounting_line_code       => l_component_code
30116       ,p_accounting_line_type_code  => l_component_type_code
30117       ,p_accounting_line_appl_id    => l_component_appl_id
30118       ,p_amb_context_code           => l_amb_context_code
30119       ,p_entity_code                => l_entity_code
30120       ,p_event_class_code           => l_event_class_code);
30121    --
30122    -- set accounting class
30123    --
30124    xla_ae_lines_pkg.SetAcctClass(
30125            p_accounting_class_code  => 'COST_VARIANCE'
30126          , p_ae_header_id           => l_ae_header_id
30127          );
30128 
30129    --
30130    -- set rounding class
30131    --
30132    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30133                       'COST_VARIANCE';
30134 
30135    --
30136    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30137    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30138    --
30139    -- bulk performance
30140    --
30141    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30142 
30143    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30144       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30145 
30146    -- 4955764
30147    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30148       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30149 
30150    -- 4458381 Public Sector Enh
30151    
30152    --
30153    -- set accounting attributes for the line type
30154    --
30155    l_entered_amt_idx := 3;
30156    l_accted_amt_idx  := 8;
30157    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30158    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30159    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
30160    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30161    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
30162    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30163    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
30164    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30165    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
30166    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30167    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
30168    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30169    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
30170    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30171    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
30172    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30173    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
30174 
30175    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30176    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30177 
30178    ---------------------------------------------------------------------------------------------------------------
30179    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30180    ---------------------------------------------------------------------------------------------------------------
30181    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30182 
30183    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30184    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30185 
30186    IF xla_accounting_cache_pkg.GetValueChar
30187          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30188          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30189    AND l_bflow_method_code = 'PRIOR_ENTRY'
30190 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30191    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30192          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30193        )
30194    THEN
30195          xla_ae_lines_pkg.BflowUpgEntry
30196            (p_business_method_code    => l_bflow_method_code
30197            ,p_business_class_code     => l_bflow_class_code
30198            ,p_balance_type            => l_balance_type_code);
30199    ELSE
30200       NULL;
30201 -- No business flow processing for business flow method of NONE.
30202    END IF;
30203 
30204    --
30205    -- call analytical criteria
30206    --
30207    
30208    --
30209    -- call description
30210    --
30211    -- No description or it is inherited.
30212    --
30213    -- call ADRs
30214    -- Bug 4922099
30215    --
30216    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30217         (NVL(l_actual_upg_option, 'N') = 'O') OR
30218         (NVL(l_enc_upg_option, 'N') = 'O')
30219       )
30220    THEN
30221    NULL;
30222    --
30223    --
30224    
30225   l_ccid := AcctDerRule_6(
30226            p_application_id           => p_application_id
30227          , p_ae_header_id             => l_ae_header_id 
30228 , p_source_11 => p_source_11
30229          , x_transaction_coa_id       => l_adr_transaction_coa_id
30230          , x_accounting_coa_id        => l_adr_accounting_coa_id
30231          , x_value_type_code          => l_adr_value_type_code
30232          , p_side                     => 'NA'
30233    );
30234 
30235    xla_ae_lines_pkg.set_ccid(
30236     p_code_combination_id          => l_ccid
30237   , p_value_type_code              => l_adr_value_type_code
30238   , p_transaction_coa_id           => l_adr_transaction_coa_id
30239   , p_accounting_coa_id            => l_adr_accounting_coa_id
30240   , p_adr_code                     => 'CST_DEFAULT'
30241   , p_adr_type_code                => 'S'
30242   , p_component_type               => l_component_type
30243   , p_component_code               => l_component_code
30244   , p_component_type_code          => l_component_type_code
30245   , p_component_appl_id            => l_component_appl_id
30246   , p_amb_context_code             => l_amb_context_code
30247   , p_side                         => 'NA'
30248   );
30249 
30250 
30251    --
30252    --
30253    END IF;
30254    --
30255    -- Bug 4922099
30256    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30257           (NVL(l_enc_upg_option, 'N') = 'O')
30258         ) AND
30259         (l_bflow_method_code = 'PRIOR_ENTRY')
30260       )
30261    THEN
30262       IF
30263       --
30264       1 = 2
30265       --
30266       THEN
30267       xla_accounting_err_pkg.build_message
30268                                     (p_appli_s_name            => 'XLA'
30269                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30270                                     ,p_token_1                 => 'LINE_NUMBER'
30271                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30272                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30273                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30274                                                                              l_component_type
30275                                                                             ,l_component_code
30276                                                                             ,l_component_type_code
30277                                                                             ,l_component_appl_id
30278                                                                             ,l_amb_context_code
30279                                                                             ,l_entity_code
30280                                                                             ,l_event_class_code
30281                                                                            )
30282                                     ,p_token_3                 => 'OWNER'
30283                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30284                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30285                                                                           ,p_lookup_code    => l_component_type_code
30286                                                                          )
30287                                     ,p_token_4                 => 'PRODUCT_NAME'
30288                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30289                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30290                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30291                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30292                                     ,p_ae_header_id            =>  NULL
30293                                        );
30294 
30295         IF (C_LEVEL_ERROR>= g_log_level) THEN
30296                  trace
30297                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30298                       ,p_level    => C_LEVEL_ERROR
30299                       ,p_module   => l_log_module);
30300         END IF;
30301       END IF;
30302    END IF;
30303    --
30304    --
30305    ------------------------------------------------------------------------------------------------
30306    -- 4219869 Business Flow
30307    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30308    -- Prior Entry.  Currently, the following code is always generated.
30309    ------------------------------------------------------------------------------------------------
30310    XLA_AE_LINES_PKG.ValidateCurrentLine;
30311 
30312    ------------------------------------------------------------------------------------
30313    -- 4219869 Business Flow
30314    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30315    ------------------------------------------------------------------------------------
30316    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30317 
30318    ----------------------------------------------------------------------------------
30319    -- 4219869 Business Flow
30320    -- Update journal entry status -- Need to generate this within IF <condition>
30321    ----------------------------------------------------------------------------------
30322    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30323          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30324          ,p_balance_type_code => l_balance_type_code
30325          );
30326 
30327    -------------------------------------------------------------------------------------------
30328    -- 4262811 - Generate the Accrual Reversal lines
30329    -------------------------------------------------------------------------------------------
30330    BEGIN
30331       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30332                               (g_array_event(p_event_id).array_value_num('header_index'));
30333       IF l_acc_rev_flag IS NULL THEN
30334          l_acc_rev_flag := 'N';
30335       END IF;
30336    EXCEPTION
30337       WHEN OTHERS THEN
30338          l_acc_rev_flag := 'N';
30339    END;
30340    --
30341    IF (l_acc_rev_flag = 'Y') THEN
30342 
30343        -- 4645092  ------------------------------------------------------------------------------
30344        -- To allow MPA report to determine if it should generate report process
30345        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30346        ------------------------------------------------------------------------------------------
30347 
30348        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30349        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30350    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30351    -- call ADRs
30352    -- Bug 4922099
30353    --
30354    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30355         (NVL(l_actual_upg_option, 'N') = 'O') OR
30356         (NVL(l_enc_upg_option, 'N') = 'O')
30357       )
30358    THEN
30359    NULL;
30360    --
30361    --
30362    
30363   l_ccid := AcctDerRule_6(
30364            p_application_id           => p_application_id
30365          , p_ae_header_id             => l_ae_header_id 
30366 , p_source_11 => p_source_11
30367          , x_transaction_coa_id       => l_adr_transaction_coa_id
30368          , x_accounting_coa_id        => l_adr_accounting_coa_id
30369          , x_value_type_code          => l_adr_value_type_code
30370          , p_side                     => 'NA'
30371    );
30372 
30373    xla_ae_lines_pkg.set_ccid(
30374     p_code_combination_id          => l_ccid
30375   , p_value_type_code              => l_adr_value_type_code
30376   , p_transaction_coa_id           => l_adr_transaction_coa_id
30377   , p_accounting_coa_id            => l_adr_accounting_coa_id
30378   , p_adr_code                     => 'CST_DEFAULT'
30379   , p_adr_type_code                => 'S'
30380   , p_component_type               => l_component_type
30381   , p_component_code               => l_component_code
30382   , p_component_type_code          => l_component_type_code
30383   , p_component_appl_id            => l_component_appl_id
30384   , p_amb_context_code             => l_amb_context_code
30385   , p_side                         => 'NA'
30386   );
30387 
30388 
30389    --
30390    --
30391    END IF;
30392 
30393        --
30394        -- Update the line information that should be overwritten
30395        --
30396        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30397                                          p_header_num   => 1);
30398        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30399 
30400        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30401 
30402        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30403           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30404        END IF;
30405 
30406       --
30407       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30408       --
30409       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30410           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30411       ELSE
30412           ---------------------------------------------------------------------------------------------------
30413           -- 4262811a Switch Sign
30414           ---------------------------------------------------------------------------------------------------
30415           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30416           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30417                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30418           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30419                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30420           -- 5132302
30421           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30422                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30423 
30424       END IF;
30425 
30426       -- 4955764
30427       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30428       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30429 
30430 
30431       XLA_AE_LINES_PKG.ValidateCurrentLine;
30432       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30433 
30434       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30435                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30436                ,p_balance_type_code => l_balance_type_code);
30437 
30438    END IF;
30439 
30440    -----------------------------------------------------------------------------------------
30441    -- 4262811 Multiperiod Accounting
30442    -----------------------------------------------------------------------------------------
30443      -- No MPA option is assigned.
30444 
30445 
30446 END IF;
30447 END IF;
30448 --
30449 
30450 --
30451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30452    trace
30453       (p_msg      => 'END of AcctLineType_79'
30454       ,p_level    => C_LEVEL_PROCEDURE
30455       ,p_module   => l_log_module);
30456 END IF;
30457 --
30458 EXCEPTION
30459   WHEN xla_exceptions_pkg.application_exception THEN
30460       RAISE;
30461   WHEN OTHERS THEN
30462        xla_exceptions_pkg.raise_message
30463            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_79');
30464 END AcctLineType_79;
30465 --
30466 
30467 ---------------------------------------
30468 --
30469 -- PRIVATE FUNCTION
30470 --         AcctLineType_80
30471 --
30472 ---------------------------------------
30473 PROCEDURE AcctLineType_80 (
30474   p_application_id        IN NUMBER
30475  ,p_event_id              IN NUMBER
30476  ,p_calculate_acctd_flag  IN VARCHAR2
30477  ,p_calculate_g_l_flag    IN VARCHAR2
30478  ,p_actual_flag           IN OUT VARCHAR2
30479  ,p_balance_type_code     OUT VARCHAR2
30480  ,p_gain_or_loss_ref      OUT VARCHAR2
30481  
30482 --TRANSACTION_ID
30483  , p_source_1            IN NUMBER
30484 --Item Concatenated Segments
30485  , p_source_2            IN VARCHAR2
30486 --Transaction Quantity
30487  , p_source_3            IN NUMBER
30488 --Transaction Unit of Measure Code
30489  , p_source_4            IN VARCHAR2
30490 --Inventory Transaction Type Description
30491  , p_source_5            IN VARCHAR2
30492 --Cost Management Default Account
30493  , p_source_11            IN NUMBER
30494 --DISTRIBUTION_IDENTIFIER
30495  , p_source_84            IN NUMBER
30496 --Distribution Type
30497  , p_source_85            IN VARCHAR2
30498  , p_source_85_meaning    IN VARCHAR2
30499 --Entered Currency Code
30500  , p_source_88            IN VARCHAR2
30501 --Entered Amount
30502  , p_source_91            IN NUMBER
30503 --Currency Conversion Date
30504  , p_source_92            IN DATE
30505 --Currency Conversion Rate
30506  , p_source_93            IN NUMBER
30507 --Currency Conversion Type
30508  , p_source_94            IN VARCHAR2
30509 --Accounted Amount
30510  , p_source_95            IN NUMBER
30511 --Accounting Line Type
30512  , p_source_97            IN NUMBER
30513 )
30514 IS
30515 
30516 l_component_type              VARCHAR2(80);
30517 l_component_code              VARCHAR2(30);
30518 l_component_type_code         VARCHAR2(1);
30519 l_component_appl_id           INTEGER;
30520 l_amb_context_code            VARCHAR2(30);
30521 l_entity_code                 VARCHAR2(30);
30522 l_event_class_code            VARCHAR2(30);
30523 l_ae_header_id                NUMBER;
30524 l_event_type_code             VARCHAR2(30);
30525 l_line_definition_code        VARCHAR2(30);
30526 l_line_definition_owner_code  VARCHAR2(1);
30527 --
30528 -- adr variables
30529 l_segment                     VARCHAR2(30);
30530 l_ccid                        NUMBER;
30531 l_adr_transaction_coa_id      NUMBER;
30532 l_adr_accounting_coa_id       NUMBER;
30533 l_adr_flexfield_segment_code  VARCHAR2(30);
30534 l_adr_flex_value_set_id       NUMBER;
30535 l_adr_value_type_code         VARCHAR2(30);
30536 l_adr_value_combination_id    NUMBER;
30537 l_adr_value_segment_code      VARCHAR2(30);
30538 
30539 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30540 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30541 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30542 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30543 
30544 -- 4262811 Variables ------------------------------------------------------------------------------------------
30545 l_entered_amt_idx             NUMBER;
30546 l_accted_amt_idx              NUMBER;
30547 l_acc_rev_flag                VARCHAR2(1);
30548 l_accrual_line_num            NUMBER;
30549 l_tmp_amt                     NUMBER;
30550 l_acc_rev_natural_side_code   VARCHAR2(1);
30551 
30552 l_num_entries                 NUMBER;
30553 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30554 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30555 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30556 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30557 l_recog_line_1                NUMBER;
30558 l_recog_line_2                NUMBER;
30559 
30560 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30561 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30562 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30563 
30564 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30565 
30566 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30567 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30568 
30569 ---------------------------------------------------------------------------------------------------------------
30570 
30571 
30572 --
30573 -- bulk performance
30574 --
30575 l_balance_type_code           VARCHAR2(1);
30576 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30577 l_log_module                  VARCHAR2(240);
30578 
30579 --
30580 -- Upgrade strategy
30581 --
30582 l_actual_upg_option           VARCHAR2(1);
30583 l_enc_upg_option           VARCHAR2(1);
30584 
30585 --
30586 BEGIN
30587 --
30588 IF g_log_enabled THEN
30589       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
30590 END IF;
30591 --
30592 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30593 
30594       trace
30595          (p_msg      => 'BEGIN of AcctLineType_80'
30596          ,p_level    => C_LEVEL_PROCEDURE
30597          ,p_module   => l_log_module);
30598 
30599 END IF;
30600 --
30601 l_component_type             := 'AMB_JLT';
30602 l_component_code             := 'COST_VARIANCE';
30603 l_component_type_code        := 'S';
30604 l_component_appl_id          :=  707;
30605 l_amb_context_code           := 'DEFAULT';
30606 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
30607 l_event_class_code           := 'USER_DEFINE';
30608 l_event_type_code            := 'UDIR_INTERORG_RCPT';
30609 l_line_definition_owner_code := 'S';
30610 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
30611 --
30612 l_balance_type_code          := 'A';
30613 l_segment                     := NULL;
30614 l_ccid                        := NULL;
30615 l_adr_transaction_coa_id      := NULL;
30616 l_adr_accounting_coa_id       := NULL;
30617 l_adr_flexfield_segment_code  := NULL;
30618 l_adr_flex_value_set_id       := NULL;
30619 l_adr_value_type_code         := NULL;
30620 l_adr_value_combination_id    := NULL;
30621 l_adr_value_segment_code      := NULL;
30622 
30623 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30624 l_bflow_class_code           := '';    -- 4219869 Business Flow
30625 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30626 l_budgetary_control_flag     := 'N';
30627 
30628 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30629 l_bflow_applied_to_amt       := NULL; -- 5132302
30630 l_entered_amt_idx            := NULL;          -- 4262811
30631 l_accted_amt_idx             := NULL;          -- 4262811
30632 l_acc_rev_flag               := NULL;          -- 4262811
30633 l_accrual_line_num           := NULL;          -- 4262811
30634 l_tmp_amt                    := NULL;          -- 4262811
30635 --
30636  
30637 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30638     l_balance_type_code <> 'B' THEN
30639 IF NVL(p_source_97,9E125) =  13
30640  THEN 
30641 
30642    --
30643    XLA_AE_LINES_PKG.SetNewLine;
30644 
30645    p_balance_type_code          := l_balance_type_code;
30646    -- set the flag so later we will know whether the gain loss line needs to be created
30647    
30648    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30649      p_actual_flag :='A';
30650    END IF;
30651 
30652    --
30653    -- bulk performance
30654    --
30655    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30656                                       p_header_num   => 0); -- 4262811
30657    --
30658    -- set accounting line options
30659    --
30660    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30661            p_natural_side_code          => 'D'
30662          , p_gain_or_loss_flag          => 'N'
30663          , p_gl_transfer_mode_code      => 'S'
30664          , p_acct_entry_type_code       => 'A'
30665          , p_switch_side_flag           => 'Y'
30666          , p_merge_duplicate_code       => 'N'
30667          );
30668    --
30669    l_acc_rev_natural_side_code := 'C';  -- 4262811
30670    -- 
30671    --
30672    -- set accounting line type info
30673    --
30674    xla_ae_lines_pkg.SetAcctLineType
30675       (p_component_type             => l_component_type
30676       ,p_event_type_code            => l_event_type_code
30677       ,p_line_definition_owner_code => l_line_definition_owner_code
30678       ,p_line_definition_code       => l_line_definition_code
30679       ,p_accounting_line_code       => l_component_code
30680       ,p_accounting_line_type_code  => l_component_type_code
30681       ,p_accounting_line_appl_id    => l_component_appl_id
30682       ,p_amb_context_code           => l_amb_context_code
30683       ,p_entity_code                => l_entity_code
30684       ,p_event_class_code           => l_event_class_code);
30685    --
30686    -- set accounting class
30687    --
30688    xla_ae_lines_pkg.SetAcctClass(
30689            p_accounting_class_code  => 'COST_VARIANCE'
30690          , p_ae_header_id           => l_ae_header_id
30691          );
30692 
30693    --
30694    -- set rounding class
30695    --
30696    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30697                       'COST_VARIANCE';
30698 
30699    --
30700    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30701    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30702    --
30703    -- bulk performance
30704    --
30705    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30706 
30707    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30708       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30709 
30710    -- 4955764
30711    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30712       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30713 
30714    -- 4458381 Public Sector Enh
30715    
30716    --
30717    -- set accounting attributes for the line type
30718    --
30719    l_entered_amt_idx := 3;
30720    l_accted_amt_idx  := 8;
30721    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30722    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30723    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
30724    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30725    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
30726    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30727    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
30728    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30729    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
30730    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30731    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
30732    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30733    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
30734    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30735    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
30736    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30737    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
30738 
30739    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30740    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30741 
30742    ---------------------------------------------------------------------------------------------------------------
30743    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30744    ---------------------------------------------------------------------------------------------------------------
30745    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30746 
30747    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30748    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30749 
30750    IF xla_accounting_cache_pkg.GetValueChar
30751          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30752          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30753    AND l_bflow_method_code = 'PRIOR_ENTRY'
30754 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30755    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30756          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30757        )
30758    THEN
30759          xla_ae_lines_pkg.BflowUpgEntry
30760            (p_business_method_code    => l_bflow_method_code
30761            ,p_business_class_code     => l_bflow_class_code
30762            ,p_balance_type            => l_balance_type_code);
30763    ELSE
30764       NULL;
30765 -- No business flow processing for business flow method of NONE.
30766    END IF;
30767 
30768    --
30769    -- call analytical criteria
30770    --
30771    
30772    --
30773    -- call description
30774    --
30775    
30776 xla_ae_lines_pkg.SetLineDescription(
30777    p_ae_header_id => l_ae_header_id
30778   ,p_description  => Description_1 (
30779      p_application_id         => p_application_id
30780    , p_ae_header_id           => l_ae_header_id 
30781 , p_source_1 => p_source_1
30782 , p_source_2 => p_source_2
30783 , p_source_3 => p_source_3
30784 , p_source_4 => p_source_4
30785 , p_source_5 => p_source_5
30786    )
30787 );
30788 
30789 
30790    --
30791    -- call ADRs
30792    -- Bug 4922099
30793    --
30794    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30795         (NVL(l_actual_upg_option, 'N') = 'O') OR
30796         (NVL(l_enc_upg_option, 'N') = 'O')
30797       )
30798    THEN
30799    NULL;
30800    --
30801    --
30802    
30803   l_ccid := AcctDerRule_6(
30804            p_application_id           => p_application_id
30805          , p_ae_header_id             => l_ae_header_id 
30806 , p_source_11 => p_source_11
30807          , x_transaction_coa_id       => l_adr_transaction_coa_id
30808          , x_accounting_coa_id        => l_adr_accounting_coa_id
30809          , x_value_type_code          => l_adr_value_type_code
30810          , p_side                     => 'NA'
30811    );
30812 
30813    xla_ae_lines_pkg.set_ccid(
30814     p_code_combination_id          => l_ccid
30815   , p_value_type_code              => l_adr_value_type_code
30816   , p_transaction_coa_id           => l_adr_transaction_coa_id
30817   , p_accounting_coa_id            => l_adr_accounting_coa_id
30818   , p_adr_code                     => 'CST_DEFAULT'
30819   , p_adr_type_code                => 'S'
30820   , p_component_type               => l_component_type
30821   , p_component_code               => l_component_code
30822   , p_component_type_code          => l_component_type_code
30823   , p_component_appl_id            => l_component_appl_id
30824   , p_amb_context_code             => l_amb_context_code
30825   , p_side                         => 'NA'
30826   );
30827 
30828 
30829    --
30830    --
30831    END IF;
30832    --
30833    -- Bug 4922099
30834    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30835           (NVL(l_enc_upg_option, 'N') = 'O')
30836         ) AND
30837         (l_bflow_method_code = 'PRIOR_ENTRY')
30838       )
30839    THEN
30840       IF
30841       --
30842       1 = 2
30843       --
30844       THEN
30845       xla_accounting_err_pkg.build_message
30846                                     (p_appli_s_name            => 'XLA'
30847                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30848                                     ,p_token_1                 => 'LINE_NUMBER'
30849                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30850                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30851                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30852                                                                              l_component_type
30853                                                                             ,l_component_code
30854                                                                             ,l_component_type_code
30855                                                                             ,l_component_appl_id
30856                                                                             ,l_amb_context_code
30857                                                                             ,l_entity_code
30858                                                                             ,l_event_class_code
30859                                                                            )
30860                                     ,p_token_3                 => 'OWNER'
30861                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30862                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30863                                                                           ,p_lookup_code    => l_component_type_code
30864                                                                          )
30865                                     ,p_token_4                 => 'PRODUCT_NAME'
30866                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30867                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30868                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30869                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30870                                     ,p_ae_header_id            =>  NULL
30871                                        );
30872 
30873         IF (C_LEVEL_ERROR>= g_log_level) THEN
30874                  trace
30875                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30876                       ,p_level    => C_LEVEL_ERROR
30877                       ,p_module   => l_log_module);
30878         END IF;
30879       END IF;
30880    END IF;
30881    --
30882    --
30883    ------------------------------------------------------------------------------------------------
30884    -- 4219869 Business Flow
30885    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30886    -- Prior Entry.  Currently, the following code is always generated.
30887    ------------------------------------------------------------------------------------------------
30888    XLA_AE_LINES_PKG.ValidateCurrentLine;
30889 
30890    ------------------------------------------------------------------------------------
30891    -- 4219869 Business Flow
30892    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30893    ------------------------------------------------------------------------------------
30894    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30895 
30896    ----------------------------------------------------------------------------------
30897    -- 4219869 Business Flow
30898    -- Update journal entry status -- Need to generate this within IF <condition>
30899    ----------------------------------------------------------------------------------
30900    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30901          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30902          ,p_balance_type_code => l_balance_type_code
30903          );
30904 
30905    -------------------------------------------------------------------------------------------
30906    -- 4262811 - Generate the Accrual Reversal lines
30907    -------------------------------------------------------------------------------------------
30908    BEGIN
30909       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30910                               (g_array_event(p_event_id).array_value_num('header_index'));
30911       IF l_acc_rev_flag IS NULL THEN
30912          l_acc_rev_flag := 'N';
30913       END IF;
30914    EXCEPTION
30915       WHEN OTHERS THEN
30916          l_acc_rev_flag := 'N';
30917    END;
30918    --
30919    IF (l_acc_rev_flag = 'Y') THEN
30920 
30921        -- 4645092  ------------------------------------------------------------------------------
30922        -- To allow MPA report to determine if it should generate report process
30923        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30924        ------------------------------------------------------------------------------------------
30925 
30926        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30927        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30928    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30929    -- call ADRs
30930    -- Bug 4922099
30931    --
30932    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30933         (NVL(l_actual_upg_option, 'N') = 'O') OR
30934         (NVL(l_enc_upg_option, 'N') = 'O')
30935       )
30936    THEN
30937    NULL;
30938    --
30939    --
30940    
30941   l_ccid := AcctDerRule_6(
30942            p_application_id           => p_application_id
30943          , p_ae_header_id             => l_ae_header_id 
30944 , p_source_11 => p_source_11
30945          , x_transaction_coa_id       => l_adr_transaction_coa_id
30946          , x_accounting_coa_id        => l_adr_accounting_coa_id
30947          , x_value_type_code          => l_adr_value_type_code
30948          , p_side                     => 'NA'
30949    );
30950 
30951    xla_ae_lines_pkg.set_ccid(
30952     p_code_combination_id          => l_ccid
30953   , p_value_type_code              => l_adr_value_type_code
30954   , p_transaction_coa_id           => l_adr_transaction_coa_id
30955   , p_accounting_coa_id            => l_adr_accounting_coa_id
30956   , p_adr_code                     => 'CST_DEFAULT'
30957   , p_adr_type_code                => 'S'
30958   , p_component_type               => l_component_type
30959   , p_component_code               => l_component_code
30960   , p_component_type_code          => l_component_type_code
30961   , p_component_appl_id            => l_component_appl_id
30962   , p_amb_context_code             => l_amb_context_code
30963   , p_side                         => 'NA'
30964   );
30965 
30966 
30967    --
30968    --
30969    END IF;
30970 
30971        --
30972        -- Update the line information that should be overwritten
30973        --
30974        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30975                                          p_header_num   => 1);
30976        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30977 
30978        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30979 
30980        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30981           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30982        END IF;
30983 
30984       --
30985       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30986       --
30987       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30988           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30989       ELSE
30990           ---------------------------------------------------------------------------------------------------
30991           -- 4262811a Switch Sign
30992           ---------------------------------------------------------------------------------------------------
30993           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30994           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30995                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30996           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30997                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30998           -- 5132302
30999           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31000                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31001 
31002       END IF;
31003 
31004       -- 4955764
31005       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31006       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31007 
31008 
31009       XLA_AE_LINES_PKG.ValidateCurrentLine;
31010       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31011 
31012       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31013                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31014                ,p_balance_type_code => l_balance_type_code);
31015 
31016    END IF;
31017 
31018    -----------------------------------------------------------------------------------------
31019    -- 4262811 Multiperiod Accounting
31020    -----------------------------------------------------------------------------------------
31021      -- No MPA option is assigned.
31022 
31023 
31024 END IF;
31025 END IF;
31026 --
31027 
31028 --
31029 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31030    trace
31031       (p_msg      => 'END of AcctLineType_80'
31032       ,p_level    => C_LEVEL_PROCEDURE
31033       ,p_module   => l_log_module);
31034 END IF;
31035 --
31036 EXCEPTION
31037   WHEN xla_exceptions_pkg.application_exception THEN
31038       RAISE;
31039   WHEN OTHERS THEN
31040        xla_exceptions_pkg.raise_message
31041            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_80');
31042 END AcctLineType_80;
31043 --
31044 
31045 ---------------------------------------
31046 --
31047 -- PRIVATE FUNCTION
31048 --         AcctLineType_81
31049 --
31050 ---------------------------------------
31051 PROCEDURE AcctLineType_81 (
31052   p_application_id        IN NUMBER
31053  ,p_event_id              IN NUMBER
31054  ,p_calculate_acctd_flag  IN VARCHAR2
31055  ,p_calculate_g_l_flag    IN VARCHAR2
31056  ,p_actual_flag           IN OUT VARCHAR2
31057  ,p_balance_type_code     OUT VARCHAR2
31058  ,p_gain_or_loss_ref      OUT VARCHAR2
31059  
31060 --TRANSACTION_ID
31061  , p_source_1            IN NUMBER
31062 --Item Concatenated Segments
31063  , p_source_2            IN VARCHAR2
31064 --Transaction Quantity
31065  , p_source_3            IN NUMBER
31066 --Transaction Unit of Measure Code
31067  , p_source_4            IN VARCHAR2
31068 --Inventory Transaction Type Description
31069  , p_source_5            IN VARCHAR2
31070 --Cost Management Default Account
31071  , p_source_11            IN NUMBER
31072 --DISTRIBUTION_IDENTIFIER
31073  , p_source_84            IN NUMBER
31074 --Distribution Type
31075  , p_source_85            IN VARCHAR2
31076  , p_source_85_meaning    IN VARCHAR2
31077 --Entered Currency Code
31078  , p_source_88            IN VARCHAR2
31079 --Entered Amount
31080  , p_source_91            IN NUMBER
31081 --Currency Conversion Date
31082  , p_source_92            IN DATE
31083 --Currency Conversion Rate
31084  , p_source_93            IN NUMBER
31085 --Currency Conversion Type
31086  , p_source_94            IN VARCHAR2
31087 --Accounted Amount
31088  , p_source_95            IN NUMBER
31089 --Accounting Line Type
31090  , p_source_97            IN NUMBER
31091 )
31092 IS
31093 
31094 l_component_type              VARCHAR2(80);
31095 l_component_code              VARCHAR2(30);
31096 l_component_type_code         VARCHAR2(1);
31097 l_component_appl_id           INTEGER;
31098 l_amb_context_code            VARCHAR2(30);
31099 l_entity_code                 VARCHAR2(30);
31100 l_event_class_code            VARCHAR2(30);
31101 l_ae_header_id                NUMBER;
31102 l_event_type_code             VARCHAR2(30);
31103 l_line_definition_code        VARCHAR2(30);
31104 l_line_definition_owner_code  VARCHAR2(1);
31105 --
31106 -- adr variables
31107 l_segment                     VARCHAR2(30);
31108 l_ccid                        NUMBER;
31109 l_adr_transaction_coa_id      NUMBER;
31110 l_adr_accounting_coa_id       NUMBER;
31111 l_adr_flexfield_segment_code  VARCHAR2(30);
31112 l_adr_flex_value_set_id       NUMBER;
31113 l_adr_value_type_code         VARCHAR2(30);
31114 l_adr_value_combination_id    NUMBER;
31115 l_adr_value_segment_code      VARCHAR2(30);
31116 
31117 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31118 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31119 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31120 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31121 
31122 -- 4262811 Variables ------------------------------------------------------------------------------------------
31123 l_entered_amt_idx             NUMBER;
31124 l_accted_amt_idx              NUMBER;
31125 l_acc_rev_flag                VARCHAR2(1);
31126 l_accrual_line_num            NUMBER;
31127 l_tmp_amt                     NUMBER;
31128 l_acc_rev_natural_side_code   VARCHAR2(1);
31129 
31130 l_num_entries                 NUMBER;
31131 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31132 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31133 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31134 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31135 l_recog_line_1                NUMBER;
31136 l_recog_line_2                NUMBER;
31137 
31138 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31139 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31140 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31141 
31142 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31143 
31144 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31145 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31146 
31147 ---------------------------------------------------------------------------------------------------------------
31148 
31149 
31150 --
31151 -- bulk performance
31152 --
31153 l_balance_type_code           VARCHAR2(1);
31154 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31155 l_log_module                  VARCHAR2(240);
31156 
31157 --
31158 -- Upgrade strategy
31159 --
31160 l_actual_upg_option           VARCHAR2(1);
31161 l_enc_upg_option           VARCHAR2(1);
31162 
31163 --
31164 BEGIN
31165 --
31166 IF g_log_enabled THEN
31167       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
31168 END IF;
31169 --
31170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31171 
31172       trace
31173          (p_msg      => 'BEGIN of AcctLineType_81'
31174          ,p_level    => C_LEVEL_PROCEDURE
31175          ,p_module   => l_log_module);
31176 
31177 END IF;
31178 --
31179 l_component_type             := 'AMB_JLT';
31180 l_component_code             := 'COST_VARIANCE';
31181 l_component_type_code        := 'S';
31182 l_component_appl_id          :=  707;
31183 l_amb_context_code           := 'DEFAULT';
31184 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
31185 l_event_class_code           := 'WIP_MTL';
31186 l_event_type_code            := 'WIP_NEG_COMP_ISSUE';
31187 l_line_definition_owner_code := 'S';
31188 l_line_definition_code       := 'PI_WIP_NEG_COMP_ISSUE';
31189 --
31190 l_balance_type_code          := 'A';
31191 l_segment                     := NULL;
31192 l_ccid                        := NULL;
31193 l_adr_transaction_coa_id      := NULL;
31194 l_adr_accounting_coa_id       := NULL;
31195 l_adr_flexfield_segment_code  := NULL;
31196 l_adr_flex_value_set_id       := NULL;
31197 l_adr_value_type_code         := NULL;
31198 l_adr_value_combination_id    := NULL;
31199 l_adr_value_segment_code      := NULL;
31200 
31201 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31202 l_bflow_class_code           := '';    -- 4219869 Business Flow
31203 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31204 l_budgetary_control_flag     := 'N';
31205 
31206 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31207 l_bflow_applied_to_amt       := NULL; -- 5132302
31208 l_entered_amt_idx            := NULL;          -- 4262811
31209 l_accted_amt_idx             := NULL;          -- 4262811
31210 l_acc_rev_flag               := NULL;          -- 4262811
31211 l_accrual_line_num           := NULL;          -- 4262811
31212 l_tmp_amt                    := NULL;          -- 4262811
31213 --
31214  
31215 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31216     l_balance_type_code <> 'B' THEN
31217 IF NVL(p_source_97,9E125) =  13
31218  THEN 
31219 
31220    --
31221    XLA_AE_LINES_PKG.SetNewLine;
31222 
31223    p_balance_type_code          := l_balance_type_code;
31224    -- set the flag so later we will know whether the gain loss line needs to be created
31225    
31226    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31227      p_actual_flag :='A';
31228    END IF;
31229 
31230    --
31231    -- bulk performance
31232    --
31233    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31234                                       p_header_num   => 0); -- 4262811
31235    --
31236    -- set accounting line options
31237    --
31238    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31239            p_natural_side_code          => 'D'
31240          , p_gain_or_loss_flag          => 'N'
31241          , p_gl_transfer_mode_code      => 'S'
31242          , p_acct_entry_type_code       => 'A'
31243          , p_switch_side_flag           => 'Y'
31244          , p_merge_duplicate_code       => 'N'
31245          );
31246    --
31247    l_acc_rev_natural_side_code := 'C';  -- 4262811
31248    -- 
31249    --
31250    -- set accounting line type info
31251    --
31252    xla_ae_lines_pkg.SetAcctLineType
31253       (p_component_type             => l_component_type
31254       ,p_event_type_code            => l_event_type_code
31255       ,p_line_definition_owner_code => l_line_definition_owner_code
31256       ,p_line_definition_code       => l_line_definition_code
31257       ,p_accounting_line_code       => l_component_code
31258       ,p_accounting_line_type_code  => l_component_type_code
31259       ,p_accounting_line_appl_id    => l_component_appl_id
31260       ,p_amb_context_code           => l_amb_context_code
31261       ,p_entity_code                => l_entity_code
31262       ,p_event_class_code           => l_event_class_code);
31263    --
31264    -- set accounting class
31265    --
31266    xla_ae_lines_pkg.SetAcctClass(
31267            p_accounting_class_code  => 'COST_VARIANCE'
31268          , p_ae_header_id           => l_ae_header_id
31269          );
31270 
31271    --
31272    -- set rounding class
31273    --
31274    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31275                       'COST_VARIANCE';
31276 
31277    --
31278    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31279    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31280    --
31281    -- bulk performance
31282    --
31283    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31284 
31285    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31286       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31287 
31288    -- 4955764
31289    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31290       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31291 
31292    -- 4458381 Public Sector Enh
31293    
31294    --
31295    -- set accounting attributes for the line type
31296    --
31297    l_entered_amt_idx := 3;
31298    l_accted_amt_idx  := 8;
31299    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31300    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31301    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
31302    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31303    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
31304    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31305    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
31306    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31307    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
31308    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31309    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
31310    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31311    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
31312    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31313    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
31314    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31315    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
31316 
31317    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31318    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31319 
31320    ---------------------------------------------------------------------------------------------------------------
31321    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31322    ---------------------------------------------------------------------------------------------------------------
31323    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31324 
31325    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31326    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31327 
31328    IF xla_accounting_cache_pkg.GetValueChar
31329          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31330          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31331    AND l_bflow_method_code = 'PRIOR_ENTRY'
31332 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31333    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31334          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31335        )
31336    THEN
31337          xla_ae_lines_pkg.BflowUpgEntry
31338            (p_business_method_code    => l_bflow_method_code
31339            ,p_business_class_code     => l_bflow_class_code
31340            ,p_balance_type            => l_balance_type_code);
31341    ELSE
31342       NULL;
31343 -- No business flow processing for business flow method of NONE.
31344    END IF;
31345 
31346    --
31347    -- call analytical criteria
31348    --
31349    
31350    --
31351    -- call description
31352    --
31353    
31354 xla_ae_lines_pkg.SetLineDescription(
31355    p_ae_header_id => l_ae_header_id
31356   ,p_description  => Description_1 (
31357      p_application_id         => p_application_id
31358    , p_ae_header_id           => l_ae_header_id 
31359 , p_source_1 => p_source_1
31360 , p_source_2 => p_source_2
31361 , p_source_3 => p_source_3
31362 , p_source_4 => p_source_4
31363 , p_source_5 => p_source_5
31364    )
31365 );
31366 
31367 
31368    --
31369    -- call ADRs
31370    -- Bug 4922099
31371    --
31372    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31373         (NVL(l_actual_upg_option, 'N') = 'O') OR
31374         (NVL(l_enc_upg_option, 'N') = 'O')
31375       )
31376    THEN
31377    NULL;
31378    --
31379    --
31380    
31381   l_ccid := AcctDerRule_6(
31382            p_application_id           => p_application_id
31383          , p_ae_header_id             => l_ae_header_id 
31384 , p_source_11 => p_source_11
31385          , x_transaction_coa_id       => l_adr_transaction_coa_id
31386          , x_accounting_coa_id        => l_adr_accounting_coa_id
31387          , x_value_type_code          => l_adr_value_type_code
31388          , p_side                     => 'NA'
31389    );
31390 
31391    xla_ae_lines_pkg.set_ccid(
31392     p_code_combination_id          => l_ccid
31393   , p_value_type_code              => l_adr_value_type_code
31394   , p_transaction_coa_id           => l_adr_transaction_coa_id
31395   , p_accounting_coa_id            => l_adr_accounting_coa_id
31396   , p_adr_code                     => 'CST_DEFAULT'
31397   , p_adr_type_code                => 'S'
31398   , p_component_type               => l_component_type
31399   , p_component_code               => l_component_code
31400   , p_component_type_code          => l_component_type_code
31401   , p_component_appl_id            => l_component_appl_id
31402   , p_amb_context_code             => l_amb_context_code
31403   , p_side                         => 'NA'
31404   );
31405 
31406 
31407    --
31408    --
31409    END IF;
31410    --
31411    -- Bug 4922099
31412    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31413           (NVL(l_enc_upg_option, 'N') = 'O')
31414         ) AND
31415         (l_bflow_method_code = 'PRIOR_ENTRY')
31416       )
31417    THEN
31418       IF
31419       --
31420       1 = 2
31421       --
31422       THEN
31423       xla_accounting_err_pkg.build_message
31424                                     (p_appli_s_name            => 'XLA'
31425                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31426                                     ,p_token_1                 => 'LINE_NUMBER'
31427                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31428                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31429                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31430                                                                              l_component_type
31431                                                                             ,l_component_code
31432                                                                             ,l_component_type_code
31433                                                                             ,l_component_appl_id
31434                                                                             ,l_amb_context_code
31435                                                                             ,l_entity_code
31436                                                                             ,l_event_class_code
31437                                                                            )
31438                                     ,p_token_3                 => 'OWNER'
31439                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31440                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31441                                                                           ,p_lookup_code    => l_component_type_code
31442                                                                          )
31443                                     ,p_token_4                 => 'PRODUCT_NAME'
31444                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31445                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31446                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31447                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31448                                     ,p_ae_header_id            =>  NULL
31449                                        );
31450 
31451         IF (C_LEVEL_ERROR>= g_log_level) THEN
31452                  trace
31453                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31454                       ,p_level    => C_LEVEL_ERROR
31455                       ,p_module   => l_log_module);
31456         END IF;
31457       END IF;
31458    END IF;
31459    --
31460    --
31461    ------------------------------------------------------------------------------------------------
31462    -- 4219869 Business Flow
31463    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31464    -- Prior Entry.  Currently, the following code is always generated.
31465    ------------------------------------------------------------------------------------------------
31466    XLA_AE_LINES_PKG.ValidateCurrentLine;
31467 
31468    ------------------------------------------------------------------------------------
31469    -- 4219869 Business Flow
31470    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31471    ------------------------------------------------------------------------------------
31472    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31473 
31474    ----------------------------------------------------------------------------------
31475    -- 4219869 Business Flow
31476    -- Update journal entry status -- Need to generate this within IF <condition>
31477    ----------------------------------------------------------------------------------
31478    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31479          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31480          ,p_balance_type_code => l_balance_type_code
31481          );
31482 
31483    -------------------------------------------------------------------------------------------
31484    -- 4262811 - Generate the Accrual Reversal lines
31485    -------------------------------------------------------------------------------------------
31486    BEGIN
31487       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31488                               (g_array_event(p_event_id).array_value_num('header_index'));
31489       IF l_acc_rev_flag IS NULL THEN
31490          l_acc_rev_flag := 'N';
31491       END IF;
31492    EXCEPTION
31493       WHEN OTHERS THEN
31494          l_acc_rev_flag := 'N';
31495    END;
31496    --
31497    IF (l_acc_rev_flag = 'Y') THEN
31498 
31499        -- 4645092  ------------------------------------------------------------------------------
31500        -- To allow MPA report to determine if it should generate report process
31501        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31502        ------------------------------------------------------------------------------------------
31503 
31504        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31505        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31506    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31507    -- call ADRs
31508    -- Bug 4922099
31509    --
31510    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31511         (NVL(l_actual_upg_option, 'N') = 'O') OR
31512         (NVL(l_enc_upg_option, 'N') = 'O')
31513       )
31514    THEN
31515    NULL;
31516    --
31517    --
31518    
31519   l_ccid := AcctDerRule_6(
31520            p_application_id           => p_application_id
31521          , p_ae_header_id             => l_ae_header_id 
31522 , p_source_11 => p_source_11
31523          , x_transaction_coa_id       => l_adr_transaction_coa_id
31524          , x_accounting_coa_id        => l_adr_accounting_coa_id
31525          , x_value_type_code          => l_adr_value_type_code
31526          , p_side                     => 'NA'
31527    );
31528 
31529    xla_ae_lines_pkg.set_ccid(
31530     p_code_combination_id          => l_ccid
31531   , p_value_type_code              => l_adr_value_type_code
31532   , p_transaction_coa_id           => l_adr_transaction_coa_id
31533   , p_accounting_coa_id            => l_adr_accounting_coa_id
31534   , p_adr_code                     => 'CST_DEFAULT'
31535   , p_adr_type_code                => 'S'
31536   , p_component_type               => l_component_type
31537   , p_component_code               => l_component_code
31538   , p_component_type_code          => l_component_type_code
31539   , p_component_appl_id            => l_component_appl_id
31540   , p_amb_context_code             => l_amb_context_code
31541   , p_side                         => 'NA'
31542   );
31543 
31544 
31545    --
31546    --
31547    END IF;
31548 
31549        --
31550        -- Update the line information that should be overwritten
31551        --
31552        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31553                                          p_header_num   => 1);
31554        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31555 
31556        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31557 
31558        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31559           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31560        END IF;
31561 
31562       --
31563       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31564       --
31565       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31566           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31567       ELSE
31568           ---------------------------------------------------------------------------------------------------
31569           -- 4262811a Switch Sign
31570           ---------------------------------------------------------------------------------------------------
31571           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31572           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31573                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31574           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31575                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31576           -- 5132302
31577           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31578                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31579 
31580       END IF;
31581 
31582       -- 4955764
31583       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31585 
31586 
31587       XLA_AE_LINES_PKG.ValidateCurrentLine;
31588       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31589 
31590       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31591                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31592                ,p_balance_type_code => l_balance_type_code);
31593 
31594    END IF;
31595 
31596    -----------------------------------------------------------------------------------------
31597    -- 4262811 Multiperiod Accounting
31598    -----------------------------------------------------------------------------------------
31599      -- No MPA option is assigned.
31600 
31601 
31602 END IF;
31603 END IF;
31604 --
31605 
31606 --
31607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31608    trace
31609       (p_msg      => 'END of AcctLineType_81'
31610       ,p_level    => C_LEVEL_PROCEDURE
31611       ,p_module   => l_log_module);
31612 END IF;
31613 --
31614 EXCEPTION
31615   WHEN xla_exceptions_pkg.application_exception THEN
31616       RAISE;
31617   WHEN OTHERS THEN
31618        xla_exceptions_pkg.raise_message
31619            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_81');
31620 END AcctLineType_81;
31621 --
31622 
31623 ---------------------------------------
31624 --
31625 -- PRIVATE FUNCTION
31626 --         AcctLineType_82
31627 --
31628 ---------------------------------------
31629 PROCEDURE AcctLineType_82 (
31630   p_application_id        IN NUMBER
31631  ,p_event_id              IN NUMBER
31632  ,p_calculate_acctd_flag  IN VARCHAR2
31633  ,p_calculate_g_l_flag    IN VARCHAR2
31634  ,p_actual_flag           IN OUT VARCHAR2
31635  ,p_balance_type_code     OUT VARCHAR2
31636  ,p_gain_or_loss_ref      OUT VARCHAR2
31637  
31638 --TRANSACTION_ID
31639  , p_source_1            IN NUMBER
31640 --Item Concatenated Segments
31641  , p_source_2            IN VARCHAR2
31642 --Transaction Quantity
31643  , p_source_3            IN NUMBER
31644 --Transaction Unit of Measure Code
31645  , p_source_4            IN VARCHAR2
31646 --Inventory Transaction Type Description
31647  , p_source_5            IN VARCHAR2
31648 --Cost Management Default Account
31649  , p_source_11            IN NUMBER
31650 --DISTRIBUTION_IDENTIFIER
31651  , p_source_84            IN NUMBER
31652 --Distribution Type
31653  , p_source_85            IN VARCHAR2
31654  , p_source_85_meaning    IN VARCHAR2
31655 --Entered Currency Code
31656  , p_source_88            IN VARCHAR2
31657 --Entered Amount
31658  , p_source_91            IN NUMBER
31659 --Currency Conversion Date
31660  , p_source_92            IN DATE
31661 --Currency Conversion Rate
31662  , p_source_93            IN NUMBER
31663 --Currency Conversion Type
31664  , p_source_94            IN VARCHAR2
31665 --Accounted Amount
31666  , p_source_95            IN NUMBER
31667 --Accounting Line Type
31668  , p_source_97            IN NUMBER
31669 )
31670 IS
31671 
31672 l_component_type              VARCHAR2(80);
31673 l_component_code              VARCHAR2(30);
31674 l_component_type_code         VARCHAR2(1);
31675 l_component_appl_id           INTEGER;
31676 l_amb_context_code            VARCHAR2(30);
31677 l_entity_code                 VARCHAR2(30);
31678 l_event_class_code            VARCHAR2(30);
31679 l_ae_header_id                NUMBER;
31680 l_event_type_code             VARCHAR2(30);
31681 l_line_definition_code        VARCHAR2(30);
31682 l_line_definition_owner_code  VARCHAR2(1);
31683 --
31684 -- adr variables
31685 l_segment                     VARCHAR2(30);
31686 l_ccid                        NUMBER;
31687 l_adr_transaction_coa_id      NUMBER;
31688 l_adr_accounting_coa_id       NUMBER;
31689 l_adr_flexfield_segment_code  VARCHAR2(30);
31690 l_adr_flex_value_set_id       NUMBER;
31691 l_adr_value_type_code         VARCHAR2(30);
31692 l_adr_value_combination_id    NUMBER;
31693 l_adr_value_segment_code      VARCHAR2(30);
31694 
31695 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31696 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31697 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31698 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31699 
31700 -- 4262811 Variables ------------------------------------------------------------------------------------------
31701 l_entered_amt_idx             NUMBER;
31702 l_accted_amt_idx              NUMBER;
31703 l_acc_rev_flag                VARCHAR2(1);
31704 l_accrual_line_num            NUMBER;
31705 l_tmp_amt                     NUMBER;
31706 l_acc_rev_natural_side_code   VARCHAR2(1);
31707 
31708 l_num_entries                 NUMBER;
31709 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31710 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31711 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31712 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31713 l_recog_line_1                NUMBER;
31714 l_recog_line_2                NUMBER;
31715 
31716 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31717 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31718 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31719 
31720 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31721 
31722 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31723 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31724 
31725 ---------------------------------------------------------------------------------------------------------------
31726 
31727 
31728 --
31729 -- bulk performance
31730 --
31731 l_balance_type_code           VARCHAR2(1);
31732 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31733 l_log_module                  VARCHAR2(240);
31734 
31735 --
31736 -- Upgrade strategy
31737 --
31738 l_actual_upg_option           VARCHAR2(1);
31739 l_enc_upg_option           VARCHAR2(1);
31740 
31741 --
31742 BEGIN
31743 --
31744 IF g_log_enabled THEN
31745       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
31746 END IF;
31747 --
31748 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31749 
31750       trace
31751          (p_msg      => 'BEGIN of AcctLineType_82'
31752          ,p_level    => C_LEVEL_PROCEDURE
31753          ,p_module   => l_log_module);
31754 
31755 END IF;
31756 --
31757 l_component_type             := 'AMB_JLT';
31758 l_component_code             := 'COST_VARIANCE';
31759 l_component_type_code        := 'S';
31760 l_component_appl_id          :=  707;
31761 l_amb_context_code           := 'DEFAULT';
31762 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
31763 l_event_class_code           := 'MTL_COST_UPD';
31764 l_event_type_code            := 'IPV_TXFR';
31765 l_line_definition_owner_code := 'S';
31766 l_line_definition_code       := 'PI_IPV_TXFR';
31767 --
31768 l_balance_type_code          := 'A';
31769 l_segment                     := NULL;
31770 l_ccid                        := NULL;
31771 l_adr_transaction_coa_id      := NULL;
31772 l_adr_accounting_coa_id       := NULL;
31773 l_adr_flexfield_segment_code  := NULL;
31774 l_adr_flex_value_set_id       := NULL;
31775 l_adr_value_type_code         := NULL;
31776 l_adr_value_combination_id    := NULL;
31777 l_adr_value_segment_code      := NULL;
31778 
31779 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31780 l_bflow_class_code           := '';    -- 4219869 Business Flow
31781 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31782 l_budgetary_control_flag     := 'N';
31783 
31784 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31785 l_bflow_applied_to_amt       := NULL; -- 5132302
31786 l_entered_amt_idx            := NULL;          -- 4262811
31787 l_accted_amt_idx             := NULL;          -- 4262811
31788 l_acc_rev_flag               := NULL;          -- 4262811
31789 l_accrual_line_num           := NULL;          -- 4262811
31790 l_tmp_amt                    := NULL;          -- 4262811
31791 --
31792  
31793 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31794     l_balance_type_code <> 'B' THEN
31795 IF NVL(p_source_97,9E125) =  13
31796  THEN 
31797 
31798    --
31799    XLA_AE_LINES_PKG.SetNewLine;
31800 
31801    p_balance_type_code          := l_balance_type_code;
31802    -- set the flag so later we will know whether the gain loss line needs to be created
31803    
31804    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31805      p_actual_flag :='A';
31806    END IF;
31807 
31808    --
31809    -- bulk performance
31810    --
31811    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31812                                       p_header_num   => 0); -- 4262811
31813    --
31814    -- set accounting line options
31815    --
31816    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31817            p_natural_side_code          => 'D'
31818          , p_gain_or_loss_flag          => 'N'
31819          , p_gl_transfer_mode_code      => 'S'
31820          , p_acct_entry_type_code       => 'A'
31821          , p_switch_side_flag           => 'Y'
31822          , p_merge_duplicate_code       => 'N'
31823          );
31824    --
31825    l_acc_rev_natural_side_code := 'C';  -- 4262811
31826    -- 
31827    --
31828    -- set accounting line type info
31829    --
31830    xla_ae_lines_pkg.SetAcctLineType
31831       (p_component_type             => l_component_type
31832       ,p_event_type_code            => l_event_type_code
31833       ,p_line_definition_owner_code => l_line_definition_owner_code
31834       ,p_line_definition_code       => l_line_definition_code
31835       ,p_accounting_line_code       => l_component_code
31836       ,p_accounting_line_type_code  => l_component_type_code
31837       ,p_accounting_line_appl_id    => l_component_appl_id
31838       ,p_amb_context_code           => l_amb_context_code
31839       ,p_entity_code                => l_entity_code
31840       ,p_event_class_code           => l_event_class_code);
31841    --
31842    -- set accounting class
31843    --
31844    xla_ae_lines_pkg.SetAcctClass(
31845            p_accounting_class_code  => 'COST_VARIANCE'
31846          , p_ae_header_id           => l_ae_header_id
31847          );
31848 
31849    --
31850    -- set rounding class
31851    --
31852    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31853                       'COST_VARIANCE';
31854 
31855    --
31856    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31857    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31858    --
31859    -- bulk performance
31860    --
31861    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31862 
31863    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31864       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31865 
31866    -- 4955764
31867    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31868       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31869 
31870    -- 4458381 Public Sector Enh
31871    
31872    --
31873    -- set accounting attributes for the line type
31874    --
31875    l_entered_amt_idx := 3;
31876    l_accted_amt_idx  := 8;
31877    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31878    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31879    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
31880    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31881    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
31882    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31883    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
31884    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31885    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
31886    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31887    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
31888    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31889    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
31890    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31891    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
31892    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31893    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
31894 
31895    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31896    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31897 
31898    ---------------------------------------------------------------------------------------------------------------
31899    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31900    ---------------------------------------------------------------------------------------------------------------
31901    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31902 
31903    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31904    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31905 
31906    IF xla_accounting_cache_pkg.GetValueChar
31907          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31908          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31909    AND l_bflow_method_code = 'PRIOR_ENTRY'
31910 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31911    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31912          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31913        )
31914    THEN
31915          xla_ae_lines_pkg.BflowUpgEntry
31916            (p_business_method_code    => l_bflow_method_code
31917            ,p_business_class_code     => l_bflow_class_code
31918            ,p_balance_type            => l_balance_type_code);
31919    ELSE
31920       NULL;
31921 -- No business flow processing for business flow method of NONE.
31922    END IF;
31923 
31924    --
31925    -- call analytical criteria
31926    --
31927    
31928    --
31929    -- call description
31930    --
31931    
31932 xla_ae_lines_pkg.SetLineDescription(
31933    p_ae_header_id => l_ae_header_id
31934   ,p_description  => Description_1 (
31935      p_application_id         => p_application_id
31936    , p_ae_header_id           => l_ae_header_id 
31937 , p_source_1 => p_source_1
31938 , p_source_2 => p_source_2
31939 , p_source_3 => p_source_3
31940 , p_source_4 => p_source_4
31941 , p_source_5 => p_source_5
31942    )
31943 );
31944 
31945 
31946    --
31947    -- call ADRs
31948    -- Bug 4922099
31949    --
31950    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31951         (NVL(l_actual_upg_option, 'N') = 'O') OR
31952         (NVL(l_enc_upg_option, 'N') = 'O')
31953       )
31954    THEN
31955    NULL;
31956    --
31957    --
31958    
31959   l_ccid := AcctDerRule_6(
31960            p_application_id           => p_application_id
31961          , p_ae_header_id             => l_ae_header_id 
31962 , p_source_11 => p_source_11
31963          , x_transaction_coa_id       => l_adr_transaction_coa_id
31964          , x_accounting_coa_id        => l_adr_accounting_coa_id
31965          , x_value_type_code          => l_adr_value_type_code
31966          , p_side                     => 'NA'
31967    );
31968 
31969    xla_ae_lines_pkg.set_ccid(
31970     p_code_combination_id          => l_ccid
31971   , p_value_type_code              => l_adr_value_type_code
31972   , p_transaction_coa_id           => l_adr_transaction_coa_id
31973   , p_accounting_coa_id            => l_adr_accounting_coa_id
31974   , p_adr_code                     => 'CST_DEFAULT'
31975   , p_adr_type_code                => 'S'
31976   , p_component_type               => l_component_type
31977   , p_component_code               => l_component_code
31978   , p_component_type_code          => l_component_type_code
31979   , p_component_appl_id            => l_component_appl_id
31980   , p_amb_context_code             => l_amb_context_code
31981   , p_side                         => 'NA'
31982   );
31983 
31984 
31985    --
31986    --
31987    END IF;
31988    --
31989    -- Bug 4922099
31990    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31991           (NVL(l_enc_upg_option, 'N') = 'O')
31992         ) AND
31993         (l_bflow_method_code = 'PRIOR_ENTRY')
31994       )
31995    THEN
31996       IF
31997       --
31998       1 = 2
31999       --
32000       THEN
32001       xla_accounting_err_pkg.build_message
32002                                     (p_appli_s_name            => 'XLA'
32003                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32004                                     ,p_token_1                 => 'LINE_NUMBER'
32005                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32006                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32007                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32008                                                                              l_component_type
32009                                                                             ,l_component_code
32010                                                                             ,l_component_type_code
32011                                                                             ,l_component_appl_id
32012                                                                             ,l_amb_context_code
32013                                                                             ,l_entity_code
32014                                                                             ,l_event_class_code
32015                                                                            )
32016                                     ,p_token_3                 => 'OWNER'
32017                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32018                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32019                                                                           ,p_lookup_code    => l_component_type_code
32020                                                                          )
32021                                     ,p_token_4                 => 'PRODUCT_NAME'
32022                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32023                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32024                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32025                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32026                                     ,p_ae_header_id            =>  NULL
32027                                        );
32028 
32029         IF (C_LEVEL_ERROR>= g_log_level) THEN
32030                  trace
32031                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32032                       ,p_level    => C_LEVEL_ERROR
32033                       ,p_module   => l_log_module);
32034         END IF;
32035       END IF;
32036    END IF;
32037    --
32038    --
32039    ------------------------------------------------------------------------------------------------
32040    -- 4219869 Business Flow
32041    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32042    -- Prior Entry.  Currently, the following code is always generated.
32043    ------------------------------------------------------------------------------------------------
32044    XLA_AE_LINES_PKG.ValidateCurrentLine;
32045 
32046    ------------------------------------------------------------------------------------
32047    -- 4219869 Business Flow
32048    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32049    ------------------------------------------------------------------------------------
32050    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32051 
32052    ----------------------------------------------------------------------------------
32053    -- 4219869 Business Flow
32054    -- Update journal entry status -- Need to generate this within IF <condition>
32055    ----------------------------------------------------------------------------------
32056    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32057          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32058          ,p_balance_type_code => l_balance_type_code
32059          );
32060 
32061    -------------------------------------------------------------------------------------------
32062    -- 4262811 - Generate the Accrual Reversal lines
32063    -------------------------------------------------------------------------------------------
32064    BEGIN
32065       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32066                               (g_array_event(p_event_id).array_value_num('header_index'));
32067       IF l_acc_rev_flag IS NULL THEN
32068          l_acc_rev_flag := 'N';
32069       END IF;
32070    EXCEPTION
32071       WHEN OTHERS THEN
32072          l_acc_rev_flag := 'N';
32073    END;
32074    --
32075    IF (l_acc_rev_flag = 'Y') THEN
32076 
32077        -- 4645092  ------------------------------------------------------------------------------
32078        -- To allow MPA report to determine if it should generate report process
32079        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32080        ------------------------------------------------------------------------------------------
32081 
32082        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32083        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32084    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32085    -- call ADRs
32086    -- Bug 4922099
32087    --
32088    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32089         (NVL(l_actual_upg_option, 'N') = 'O') OR
32090         (NVL(l_enc_upg_option, 'N') = 'O')
32091       )
32092    THEN
32093    NULL;
32094    --
32095    --
32096    
32097   l_ccid := AcctDerRule_6(
32098            p_application_id           => p_application_id
32099          , p_ae_header_id             => l_ae_header_id 
32100 , p_source_11 => p_source_11
32101          , x_transaction_coa_id       => l_adr_transaction_coa_id
32102          , x_accounting_coa_id        => l_adr_accounting_coa_id
32103          , x_value_type_code          => l_adr_value_type_code
32104          , p_side                     => 'NA'
32105    );
32106 
32107    xla_ae_lines_pkg.set_ccid(
32108     p_code_combination_id          => l_ccid
32109   , p_value_type_code              => l_adr_value_type_code
32110   , p_transaction_coa_id           => l_adr_transaction_coa_id
32111   , p_accounting_coa_id            => l_adr_accounting_coa_id
32112   , p_adr_code                     => 'CST_DEFAULT'
32113   , p_adr_type_code                => 'S'
32114   , p_component_type               => l_component_type
32115   , p_component_code               => l_component_code
32116   , p_component_type_code          => l_component_type_code
32117   , p_component_appl_id            => l_component_appl_id
32118   , p_amb_context_code             => l_amb_context_code
32119   , p_side                         => 'NA'
32120   );
32121 
32122 
32123    --
32124    --
32125    END IF;
32126 
32127        --
32128        -- Update the line information that should be overwritten
32129        --
32130        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32131                                          p_header_num   => 1);
32132        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32133 
32134        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32135 
32136        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32137           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32138        END IF;
32139 
32140       --
32141       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32142       --
32143       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32144           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32145       ELSE
32146           ---------------------------------------------------------------------------------------------------
32147           -- 4262811a Switch Sign
32148           ---------------------------------------------------------------------------------------------------
32149           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32150           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32151                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32152           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32153                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32154           -- 5132302
32155           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32156                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32157 
32158       END IF;
32159 
32160       -- 4955764
32161       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32162       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32163 
32164 
32165       XLA_AE_LINES_PKG.ValidateCurrentLine;
32166       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32167 
32168       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32169                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32170                ,p_balance_type_code => l_balance_type_code);
32171 
32172    END IF;
32173 
32174    -----------------------------------------------------------------------------------------
32175    -- 4262811 Multiperiod Accounting
32176    -----------------------------------------------------------------------------------------
32177      -- No MPA option is assigned.
32178 
32179 
32180 END IF;
32181 END IF;
32182 --
32183 
32184 --
32185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32186    trace
32187       (p_msg      => 'END of AcctLineType_82'
32188       ,p_level    => C_LEVEL_PROCEDURE
32189       ,p_module   => l_log_module);
32190 END IF;
32191 --
32192 EXCEPTION
32193   WHEN xla_exceptions_pkg.application_exception THEN
32194       RAISE;
32195   WHEN OTHERS THEN
32196        xla_exceptions_pkg.raise_message
32197            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_82');
32198 END AcctLineType_82;
32199 --
32200 
32201 ---------------------------------------
32202 --
32203 -- PRIVATE FUNCTION
32204 --         AcctLineType_83
32205 --
32206 ---------------------------------------
32207 PROCEDURE AcctLineType_83 (
32208   p_application_id        IN NUMBER
32209  ,p_event_id              IN NUMBER
32210  ,p_calculate_acctd_flag  IN VARCHAR2
32211  ,p_calculate_g_l_flag    IN VARCHAR2
32212  ,p_actual_flag           IN OUT VARCHAR2
32213  ,p_balance_type_code     OUT VARCHAR2
32214  ,p_gain_or_loss_ref      OUT VARCHAR2
32215  
32216 --TRANSACTION_ID
32217  , p_source_1            IN NUMBER
32218 --Item Concatenated Segments
32219  , p_source_2            IN VARCHAR2
32220 --Transaction Quantity
32221  , p_source_3            IN NUMBER
32222 --Transaction Unit of Measure Code
32223  , p_source_4            IN VARCHAR2
32224 --Inventory Transaction Type Description
32225  , p_source_5            IN VARCHAR2
32226 --Cost Management Default Account
32227  , p_source_11            IN NUMBER
32228 --Applied to Application ID
32229  , p_source_79            IN NUMBER
32230 --Applied to Distribution Link Type
32231  , p_source_80            IN VARCHAR2
32232 --Applied to Entity Code
32233  , p_source_81            IN VARCHAR2
32234 --Applied To Purchase Document Identifier
32235  , p_source_83            IN NUMBER
32236 --DISTRIBUTION_IDENTIFIER
32237  , p_source_84            IN NUMBER
32238 --Distribution Type
32239  , p_source_85            IN VARCHAR2
32240  , p_source_85_meaning    IN VARCHAR2
32241 --PO Budget Account
32242  , p_source_86            IN NUMBER
32243 --Encumbrance Reversal Amount Entered
32244  , p_source_87            IN NUMBER
32245 --Entered Currency Code
32246  , p_source_88            IN VARCHAR2
32247 --Transaction Encumbrance Reversal Amount
32248  , p_source_89            IN NUMBER
32249 --Entered Amount
32250  , p_source_91            IN NUMBER
32251 --Currency Conversion Date
32252  , p_source_92            IN DATE
32253 --Currency Conversion Rate
32254  , p_source_93            IN NUMBER
32255 --Currency Conversion Type
32256  , p_source_94            IN VARCHAR2
32257 --Accounted Amount
32258  , p_source_95            IN NUMBER
32259 --Purchasing Encumbrance Type Identifier
32260  , p_source_96            IN NUMBER
32261 --Accounting Line Type
32262  , p_source_97            IN NUMBER
32263 --Costing Encumbrance Upgrade Option
32264  , p_source_100            IN VARCHAR2
32265 --TXN_PO_DISTRIBUTION_ID
32266  , p_source_101            IN NUMBER
32267 )
32268 IS
32269 
32270 l_component_type              VARCHAR2(80);
32271 l_component_code              VARCHAR2(30);
32272 l_component_type_code         VARCHAR2(1);
32273 l_component_appl_id           INTEGER;
32274 l_amb_context_code            VARCHAR2(30);
32275 l_entity_code                 VARCHAR2(30);
32276 l_event_class_code            VARCHAR2(30);
32277 l_ae_header_id                NUMBER;
32278 l_event_type_code             VARCHAR2(30);
32279 l_line_definition_code        VARCHAR2(30);
32280 l_line_definition_owner_code  VARCHAR2(1);
32281 --
32282 -- adr variables
32283 l_segment                     VARCHAR2(30);
32284 l_ccid                        NUMBER;
32285 l_adr_transaction_coa_id      NUMBER;
32286 l_adr_accounting_coa_id       NUMBER;
32287 l_adr_flexfield_segment_code  VARCHAR2(30);
32288 l_adr_flex_value_set_id       NUMBER;
32289 l_adr_value_type_code         VARCHAR2(30);
32290 l_adr_value_combination_id    NUMBER;
32291 l_adr_value_segment_code      VARCHAR2(30);
32292 
32293 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32294 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32295 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32296 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32297 
32298 -- 4262811 Variables ------------------------------------------------------------------------------------------
32299 l_entered_amt_idx             NUMBER;
32300 l_accted_amt_idx              NUMBER;
32301 l_acc_rev_flag                VARCHAR2(1);
32302 l_accrual_line_num            NUMBER;
32303 l_tmp_amt                     NUMBER;
32304 l_acc_rev_natural_side_code   VARCHAR2(1);
32305 
32306 l_num_entries                 NUMBER;
32307 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32308 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32309 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32310 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32311 l_recog_line_1                NUMBER;
32312 l_recog_line_2                NUMBER;
32313 
32314 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32315 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32316 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32317 
32318 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32319 
32320 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32321 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32322 
32323 ---------------------------------------------------------------------------------------------------------------
32324 
32325 
32326 --
32327 -- bulk performance
32328 --
32329 l_balance_type_code           VARCHAR2(1);
32330 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32331 l_log_module                  VARCHAR2(240);
32332 
32333 --
32334 -- Upgrade strategy
32335 --
32336 l_actual_upg_option           VARCHAR2(1);
32337 l_enc_upg_option           VARCHAR2(1);
32338 
32339 --
32340 BEGIN
32341 --
32342 IF g_log_enabled THEN
32343       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
32344 END IF;
32345 --
32346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32347 
32348       trace
32349          (p_msg      => 'BEGIN of AcctLineType_83'
32350          ,p_level    => C_LEVEL_PROCEDURE
32351          ,p_module   => l_log_module);
32352 
32353 END IF;
32354 --
32355 l_component_type             := 'AMB_JLT';
32356 l_component_code             := 'COST_VARIANCE';
32357 l_component_type_code        := 'S';
32358 l_component_appl_id          :=  707;
32359 l_amb_context_code           := 'DEFAULT';
32360 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
32361 l_event_class_code           := 'PURCHASE_ORDER';
32362 l_event_type_code            := 'LOG_PO_DEL_ADJ';
32363 l_line_definition_owner_code := 'S';
32364 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
32365 --
32366 l_balance_type_code          := 'A';
32367 l_segment                     := NULL;
32368 l_ccid                        := NULL;
32369 l_adr_transaction_coa_id      := NULL;
32370 l_adr_accounting_coa_id       := NULL;
32371 l_adr_flexfield_segment_code  := NULL;
32372 l_adr_flex_value_set_id       := NULL;
32373 l_adr_value_type_code         := NULL;
32374 l_adr_value_combination_id    := NULL;
32375 l_adr_value_segment_code      := NULL;
32376 
32377 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32378 l_bflow_class_code           := '';    -- 4219869 Business Flow
32379 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32380 l_budgetary_control_flag     := 'N';
32381 
32382 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32383 l_bflow_applied_to_amt       := NULL; -- 5132302
32384 l_entered_amt_idx            := NULL;          -- 4262811
32385 l_accted_amt_idx             := NULL;          -- 4262811
32386 l_acc_rev_flag               := NULL;          -- 4262811
32387 l_accrual_line_num           := NULL;          -- 4262811
32388 l_tmp_amt                    := NULL;          -- 4262811
32389 --
32390  
32391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32392     l_balance_type_code <> 'B' THEN
32393 IF NVL(p_source_97,9E125) =  13
32394  THEN 
32395 
32396    --
32397    XLA_AE_LINES_PKG.SetNewLine;
32398 
32399    p_balance_type_code          := l_balance_type_code;
32400    -- set the flag so later we will know whether the gain loss line needs to be created
32401    
32402    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32403      p_actual_flag :='A';
32404    END IF;
32405 
32406    --
32407    -- bulk performance
32408    --
32409    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32410                                       p_header_num   => 0); -- 4262811
32411    --
32412    -- set accounting line options
32413    --
32414    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32415            p_natural_side_code          => 'D'
32416          , p_gain_or_loss_flag          => 'N'
32417          , p_gl_transfer_mode_code      => 'S'
32418          , p_acct_entry_type_code       => 'A'
32419          , p_switch_side_flag           => 'Y'
32420          , p_merge_duplicate_code       => 'N'
32421          );
32422    --
32423    l_acc_rev_natural_side_code := 'C';  -- 4262811
32424    -- 
32425    --
32426    -- set accounting line type info
32427    --
32428    xla_ae_lines_pkg.SetAcctLineType
32429       (p_component_type             => l_component_type
32430       ,p_event_type_code            => l_event_type_code
32431       ,p_line_definition_owner_code => l_line_definition_owner_code
32432       ,p_line_definition_code       => l_line_definition_code
32433       ,p_accounting_line_code       => l_component_code
32434       ,p_accounting_line_type_code  => l_component_type_code
32435       ,p_accounting_line_appl_id    => l_component_appl_id
32436       ,p_amb_context_code           => l_amb_context_code
32437       ,p_entity_code                => l_entity_code
32438       ,p_event_class_code           => l_event_class_code);
32439    --
32440    -- set accounting class
32441    --
32442    xla_ae_lines_pkg.SetAcctClass(
32443            p_accounting_class_code  => 'COST_VARIANCE'
32444          , p_ae_header_id           => l_ae_header_id
32445          );
32446 
32447    --
32448    -- set rounding class
32449    --
32450    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32451                       'COST_VARIANCE';
32452 
32453    --
32454    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32455    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32456    --
32457    -- bulk performance
32458    --
32459    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32460 
32461    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32462       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32463 
32464    -- 4955764
32465    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32466       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32467 
32468    -- 4458381 Public Sector Enh
32469    
32470    --
32471    -- set accounting attributes for the line type
32472    --
32473    l_entered_amt_idx := 17;
32474    l_accted_amt_idx  := 22;
32475    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32476    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
32477    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
32478    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32479    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
32480    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
32481    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
32482    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
32483    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
32484    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32485    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
32486    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
32487    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
32488    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
32489    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
32490    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
32491    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
32492    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
32493    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
32494    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
32495    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
32496    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
32497    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
32498    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
32499    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
32500    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
32501    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
32502    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
32503    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
32504    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
32505    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
32506    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
32507    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
32508    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
32509    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
32510    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
32511    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
32512    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
32513    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
32514    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
32515    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
32516    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
32517    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
32518    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
32519    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
32520    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
32521    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
32522    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
32523    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
32524 
32525    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32526    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32527 
32528    ---------------------------------------------------------------------------------------------------------------
32529    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32530    ---------------------------------------------------------------------------------------------------------------
32531    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32532 
32533    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32534    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32535 
32536    IF xla_accounting_cache_pkg.GetValueChar
32537          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32538          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32539    AND l_bflow_method_code = 'PRIOR_ENTRY'
32540 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32541    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32542          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32543        )
32544    THEN
32545          xla_ae_lines_pkg.BflowUpgEntry
32546            (p_business_method_code    => l_bflow_method_code
32547            ,p_business_class_code     => l_bflow_class_code
32548            ,p_balance_type            => l_balance_type_code);
32549    ELSE
32550       NULL;
32551 -- No business flow processing for business flow method of NONE.
32552    END IF;
32553 
32554    --
32555    -- call analytical criteria
32556    --
32557    
32558    --
32559    -- call description
32560    --
32561    
32562 xla_ae_lines_pkg.SetLineDescription(
32563    p_ae_header_id => l_ae_header_id
32564   ,p_description  => Description_1 (
32565      p_application_id         => p_application_id
32566    , p_ae_header_id           => l_ae_header_id 
32567 , p_source_1 => p_source_1
32568 , p_source_2 => p_source_2
32569 , p_source_3 => p_source_3
32570 , p_source_4 => p_source_4
32571 , p_source_5 => p_source_5
32572    )
32573 );
32574 
32575 
32576    --
32577    -- call ADRs
32578    -- Bug 4922099
32579    --
32580    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32581         (NVL(l_actual_upg_option, 'N') = 'O') OR
32582         (NVL(l_enc_upg_option, 'N') = 'O')
32583       )
32584    THEN
32585    NULL;
32586    --
32587    --
32588    
32589   l_ccid := AcctDerRule_6(
32590            p_application_id           => p_application_id
32591          , p_ae_header_id             => l_ae_header_id 
32592 , p_source_11 => p_source_11
32593          , x_transaction_coa_id       => l_adr_transaction_coa_id
32594          , x_accounting_coa_id        => l_adr_accounting_coa_id
32595          , x_value_type_code          => l_adr_value_type_code
32596          , p_side                     => 'NA'
32597    );
32598 
32599    xla_ae_lines_pkg.set_ccid(
32600     p_code_combination_id          => l_ccid
32601   , p_value_type_code              => l_adr_value_type_code
32602   , p_transaction_coa_id           => l_adr_transaction_coa_id
32603   , p_accounting_coa_id            => l_adr_accounting_coa_id
32604   , p_adr_code                     => 'CST_DEFAULT'
32605   , p_adr_type_code                => 'S'
32606   , p_component_type               => l_component_type
32607   , p_component_code               => l_component_code
32608   , p_component_type_code          => l_component_type_code
32609   , p_component_appl_id            => l_component_appl_id
32610   , p_amb_context_code             => l_amb_context_code
32611   , p_side                         => 'NA'
32612   );
32613 
32614 
32615    --
32616    --
32617    END IF;
32618    --
32619    -- Bug 4922099
32620    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32621           (NVL(l_enc_upg_option, 'N') = 'O')
32622         ) AND
32623         (l_bflow_method_code = 'PRIOR_ENTRY')
32624       )
32625    THEN
32626       IF
32627       --
32628       1 = 2
32629       --
32630       THEN
32631       xla_accounting_err_pkg.build_message
32632                                     (p_appli_s_name            => 'XLA'
32633                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32634                                     ,p_token_1                 => 'LINE_NUMBER'
32635                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32636                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32637                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32638                                                                              l_component_type
32639                                                                             ,l_component_code
32640                                                                             ,l_component_type_code
32641                                                                             ,l_component_appl_id
32642                                                                             ,l_amb_context_code
32643                                                                             ,l_entity_code
32644                                                                             ,l_event_class_code
32645                                                                            )
32646                                     ,p_token_3                 => 'OWNER'
32647                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32648                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32649                                                                           ,p_lookup_code    => l_component_type_code
32650                                                                          )
32651                                     ,p_token_4                 => 'PRODUCT_NAME'
32652                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32653                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32654                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32655                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32656                                     ,p_ae_header_id            =>  NULL
32657                                        );
32658 
32659         IF (C_LEVEL_ERROR>= g_log_level) THEN
32660                  trace
32661                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32662                       ,p_level    => C_LEVEL_ERROR
32663                       ,p_module   => l_log_module);
32664         END IF;
32665       END IF;
32666    END IF;
32667    --
32668    --
32669    ------------------------------------------------------------------------------------------------
32670    -- 4219869 Business Flow
32671    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32672    -- Prior Entry.  Currently, the following code is always generated.
32673    ------------------------------------------------------------------------------------------------
32674    XLA_AE_LINES_PKG.ValidateCurrentLine;
32675 
32676    ------------------------------------------------------------------------------------
32677    -- 4219869 Business Flow
32678    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32679    ------------------------------------------------------------------------------------
32680    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32681 
32682    ----------------------------------------------------------------------------------
32683    -- 4219869 Business Flow
32684    -- Update journal entry status -- Need to generate this within IF <condition>
32685    ----------------------------------------------------------------------------------
32686    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32687          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32688          ,p_balance_type_code => l_balance_type_code
32689          );
32690 
32691    -------------------------------------------------------------------------------------------
32692    -- 4262811 - Generate the Accrual Reversal lines
32693    -------------------------------------------------------------------------------------------
32694    BEGIN
32695       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32696                               (g_array_event(p_event_id).array_value_num('header_index'));
32697       IF l_acc_rev_flag IS NULL THEN
32698          l_acc_rev_flag := 'N';
32699       END IF;
32700    EXCEPTION
32701       WHEN OTHERS THEN
32702          l_acc_rev_flag := 'N';
32703    END;
32704    --
32705    IF (l_acc_rev_flag = 'Y') THEN
32706 
32707        -- 4645092  ------------------------------------------------------------------------------
32708        -- To allow MPA report to determine if it should generate report process
32709        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32710        ------------------------------------------------------------------------------------------
32711 
32712        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32713        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32714    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32715    -- call ADRs
32716    -- Bug 4922099
32717    --
32718    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32719         (NVL(l_actual_upg_option, 'N') = 'O') OR
32720         (NVL(l_enc_upg_option, 'N') = 'O')
32721       )
32722    THEN
32723    NULL;
32724    --
32725    --
32726    
32727   l_ccid := AcctDerRule_6(
32728            p_application_id           => p_application_id
32729          , p_ae_header_id             => l_ae_header_id 
32730 , p_source_11 => p_source_11
32731          , x_transaction_coa_id       => l_adr_transaction_coa_id
32732          , x_accounting_coa_id        => l_adr_accounting_coa_id
32733          , x_value_type_code          => l_adr_value_type_code
32734          , p_side                     => 'NA'
32735    );
32736 
32737    xla_ae_lines_pkg.set_ccid(
32738     p_code_combination_id          => l_ccid
32739   , p_value_type_code              => l_adr_value_type_code
32740   , p_transaction_coa_id           => l_adr_transaction_coa_id
32741   , p_accounting_coa_id            => l_adr_accounting_coa_id
32742   , p_adr_code                     => 'CST_DEFAULT'
32743   , p_adr_type_code                => 'S'
32744   , p_component_type               => l_component_type
32745   , p_component_code               => l_component_code
32746   , p_component_type_code          => l_component_type_code
32747   , p_component_appl_id            => l_component_appl_id
32748   , p_amb_context_code             => l_amb_context_code
32749   , p_side                         => 'NA'
32750   );
32751 
32752 
32753    --
32754    --
32755    END IF;
32756 
32757        --
32758        -- Update the line information that should be overwritten
32759        --
32760        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32761                                          p_header_num   => 1);
32762        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32763 
32764        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32765 
32766        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32767           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32768        END IF;
32769 
32770       --
32771       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32772       --
32773       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32774           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32775       ELSE
32776           ---------------------------------------------------------------------------------------------------
32777           -- 4262811a Switch Sign
32778           ---------------------------------------------------------------------------------------------------
32779           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32780           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32781                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32782           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32783                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32784           -- 5132302
32785           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32786                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32787 
32788       END IF;
32789 
32790       -- 4955764
32791       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32792       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32793 
32794 
32795       XLA_AE_LINES_PKG.ValidateCurrentLine;
32796       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32797 
32798       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32799                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32800                ,p_balance_type_code => l_balance_type_code);
32801 
32802    END IF;
32803 
32804    -----------------------------------------------------------------------------------------
32805    -- 4262811 Multiperiod Accounting
32806    -----------------------------------------------------------------------------------------
32807      -- No MPA option is assigned.
32808 
32809 
32810 END IF;
32811 END IF;
32812 --
32813 
32814 --
32815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32816    trace
32817       (p_msg      => 'END of AcctLineType_83'
32818       ,p_level    => C_LEVEL_PROCEDURE
32819       ,p_module   => l_log_module);
32820 END IF;
32821 --
32822 EXCEPTION
32823   WHEN xla_exceptions_pkg.application_exception THEN
32824       RAISE;
32825   WHEN OTHERS THEN
32826        xla_exceptions_pkg.raise_message
32827            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_83');
32828 END AcctLineType_83;
32829 --
32830 
32831 ---------------------------------------
32832 --
32833 -- PRIVATE FUNCTION
32834 --         AcctLineType_84
32835 --
32836 ---------------------------------------
32837 PROCEDURE AcctLineType_84 (
32838   p_application_id        IN NUMBER
32839  ,p_event_id              IN NUMBER
32840  ,p_calculate_acctd_flag  IN VARCHAR2
32841  ,p_calculate_g_l_flag    IN VARCHAR2
32842  ,p_actual_flag           IN OUT VARCHAR2
32843  ,p_balance_type_code     OUT VARCHAR2
32844  ,p_gain_or_loss_ref      OUT VARCHAR2
32845  
32846 --TRANSACTION_ID
32847  , p_source_1            IN NUMBER
32848 --Item Concatenated Segments
32849  , p_source_2            IN VARCHAR2
32850 --Transaction Quantity
32851  , p_source_3            IN NUMBER
32852 --Transaction Unit of Measure Code
32853  , p_source_4            IN VARCHAR2
32854 --Inventory Transaction Type Description
32855  , p_source_5            IN VARCHAR2
32856 --Cost Management Default Account
32857  , p_source_11            IN NUMBER
32858 --Applied to Application ID
32859  , p_source_79            IN NUMBER
32860 --Applied to Distribution Link Type
32861  , p_source_80            IN VARCHAR2
32862 --Applied to Entity Code
32863  , p_source_81            IN VARCHAR2
32864 --Applied To Purchase Document Identifier
32865  , p_source_83            IN NUMBER
32866 --DISTRIBUTION_IDENTIFIER
32867  , p_source_84            IN NUMBER
32868 --Distribution Type
32869  , p_source_85            IN VARCHAR2
32870  , p_source_85_meaning    IN VARCHAR2
32871 --PO Budget Account
32872  , p_source_86            IN NUMBER
32873 --Encumbrance Reversal Amount Entered
32874  , p_source_87            IN NUMBER
32875 --Entered Currency Code
32876  , p_source_88            IN VARCHAR2
32877 --Transaction Encumbrance Reversal Amount
32878  , p_source_89            IN NUMBER
32879 --Entered Amount
32880  , p_source_91            IN NUMBER
32881 --Currency Conversion Date
32882  , p_source_92            IN DATE
32883 --Currency Conversion Rate
32884  , p_source_93            IN NUMBER
32885 --Currency Conversion Type
32886  , p_source_94            IN VARCHAR2
32887 --Accounted Amount
32888  , p_source_95            IN NUMBER
32889 --Purchasing Encumbrance Type Identifier
32890  , p_source_96            IN NUMBER
32891 --Accounting Line Type
32892  , p_source_97            IN NUMBER
32893 --Costing Encumbrance Upgrade Option
32894  , p_source_100            IN VARCHAR2
32895 --TXN_PO_DISTRIBUTION_ID
32896  , p_source_101            IN NUMBER
32897 )
32898 IS
32899 
32900 l_component_type              VARCHAR2(80);
32901 l_component_code              VARCHAR2(30);
32902 l_component_type_code         VARCHAR2(1);
32903 l_component_appl_id           INTEGER;
32904 l_amb_context_code            VARCHAR2(30);
32905 l_entity_code                 VARCHAR2(30);
32906 l_event_class_code            VARCHAR2(30);
32907 l_ae_header_id                NUMBER;
32908 l_event_type_code             VARCHAR2(30);
32909 l_line_definition_code        VARCHAR2(30);
32910 l_line_definition_owner_code  VARCHAR2(1);
32911 --
32912 -- adr variables
32913 l_segment                     VARCHAR2(30);
32914 l_ccid                        NUMBER;
32915 l_adr_transaction_coa_id      NUMBER;
32916 l_adr_accounting_coa_id       NUMBER;
32917 l_adr_flexfield_segment_code  VARCHAR2(30);
32918 l_adr_flex_value_set_id       NUMBER;
32919 l_adr_value_type_code         VARCHAR2(30);
32920 l_adr_value_combination_id    NUMBER;
32921 l_adr_value_segment_code      VARCHAR2(30);
32922 
32923 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32924 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32925 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32926 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32927 
32928 -- 4262811 Variables ------------------------------------------------------------------------------------------
32929 l_entered_amt_idx             NUMBER;
32930 l_accted_amt_idx              NUMBER;
32931 l_acc_rev_flag                VARCHAR2(1);
32932 l_accrual_line_num            NUMBER;
32933 l_tmp_amt                     NUMBER;
32934 l_acc_rev_natural_side_code   VARCHAR2(1);
32935 
32936 l_num_entries                 NUMBER;
32937 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32938 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32939 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32940 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32941 l_recog_line_1                NUMBER;
32942 l_recog_line_2                NUMBER;
32943 
32944 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32945 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32946 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32947 
32948 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32949 
32950 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32951 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32952 
32953 ---------------------------------------------------------------------------------------------------------------
32954 
32955 
32956 --
32957 -- bulk performance
32958 --
32959 l_balance_type_code           VARCHAR2(1);
32960 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32961 l_log_module                  VARCHAR2(240);
32962 
32963 --
32964 -- Upgrade strategy
32965 --
32966 l_actual_upg_option           VARCHAR2(1);
32967 l_enc_upg_option           VARCHAR2(1);
32968 
32969 --
32970 BEGIN
32971 --
32972 IF g_log_enabled THEN
32973       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
32974 END IF;
32975 --
32976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32977 
32978       trace
32979          (p_msg      => 'BEGIN of AcctLineType_84'
32980          ,p_level    => C_LEVEL_PROCEDURE
32981          ,p_module   => l_log_module);
32982 
32983 END IF;
32984 --
32985 l_component_type             := 'AMB_JLT';
32986 l_component_code             := 'COST_VARIANCE';
32987 l_component_type_code        := 'S';
32988 l_component_appl_id          :=  707;
32989 l_amb_context_code           := 'DEFAULT';
32990 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
32991 l_event_class_code           := 'PURCHASE_ORDER';
32992 l_event_type_code            := 'LOG_RET_RI_INV';
32993 l_line_definition_owner_code := 'S';
32994 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
32995 --
32996 l_balance_type_code          := 'A';
32997 l_segment                     := NULL;
32998 l_ccid                        := NULL;
32999 l_adr_transaction_coa_id      := NULL;
33000 l_adr_accounting_coa_id       := NULL;
33001 l_adr_flexfield_segment_code  := NULL;
33002 l_adr_flex_value_set_id       := NULL;
33003 l_adr_value_type_code         := NULL;
33004 l_adr_value_combination_id    := NULL;
33005 l_adr_value_segment_code      := NULL;
33006 
33007 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33008 l_bflow_class_code           := '';    -- 4219869 Business Flow
33009 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33010 l_budgetary_control_flag     := 'N';
33011 
33012 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33013 l_bflow_applied_to_amt       := NULL; -- 5132302
33014 l_entered_amt_idx            := NULL;          -- 4262811
33015 l_accted_amt_idx             := NULL;          -- 4262811
33016 l_acc_rev_flag               := NULL;          -- 4262811
33017 l_accrual_line_num           := NULL;          -- 4262811
33018 l_tmp_amt                    := NULL;          -- 4262811
33019 --
33020  
33021 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33022     l_balance_type_code <> 'B' THEN
33023 IF NVL(p_source_97,9E125) =  13
33024  THEN 
33025 
33026    --
33027    XLA_AE_LINES_PKG.SetNewLine;
33028 
33029    p_balance_type_code          := l_balance_type_code;
33030    -- set the flag so later we will know whether the gain loss line needs to be created
33031    
33032    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33033      p_actual_flag :='A';
33034    END IF;
33035 
33036    --
33037    -- bulk performance
33038    --
33039    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33040                                       p_header_num   => 0); -- 4262811
33041    --
33042    -- set accounting line options
33043    --
33044    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33045            p_natural_side_code          => 'D'
33046          , p_gain_or_loss_flag          => 'N'
33047          , p_gl_transfer_mode_code      => 'S'
33048          , p_acct_entry_type_code       => 'A'
33049          , p_switch_side_flag           => 'Y'
33050          , p_merge_duplicate_code       => 'N'
33051          );
33052    --
33053    l_acc_rev_natural_side_code := 'C';  -- 4262811
33054    -- 
33055    --
33056    -- set accounting line type info
33057    --
33058    xla_ae_lines_pkg.SetAcctLineType
33059       (p_component_type             => l_component_type
33060       ,p_event_type_code            => l_event_type_code
33061       ,p_line_definition_owner_code => l_line_definition_owner_code
33062       ,p_line_definition_code       => l_line_definition_code
33063       ,p_accounting_line_code       => l_component_code
33064       ,p_accounting_line_type_code  => l_component_type_code
33065       ,p_accounting_line_appl_id    => l_component_appl_id
33066       ,p_amb_context_code           => l_amb_context_code
33067       ,p_entity_code                => l_entity_code
33068       ,p_event_class_code           => l_event_class_code);
33069    --
33070    -- set accounting class
33071    --
33072    xla_ae_lines_pkg.SetAcctClass(
33073            p_accounting_class_code  => 'COST_VARIANCE'
33074          , p_ae_header_id           => l_ae_header_id
33075          );
33076 
33077    --
33078    -- set rounding class
33079    --
33080    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33081                       'COST_VARIANCE';
33082 
33083    --
33084    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33085    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33086    --
33087    -- bulk performance
33088    --
33089    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33090 
33091    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33092       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33093 
33094    -- 4955764
33095    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33096       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33097 
33098    -- 4458381 Public Sector Enh
33099    
33100    --
33101    -- set accounting attributes for the line type
33102    --
33103    l_entered_amt_idx := 17;
33104    l_accted_amt_idx  := 22;
33105    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33106    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
33107    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
33108    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33109    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
33110    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
33111    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
33112    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
33113    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
33114    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33115    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
33116    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
33117    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
33118    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
33119    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
33120    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
33121    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
33122    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
33123    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
33124    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
33125    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
33126    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
33127    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
33128    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
33129    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
33130    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
33131    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
33132    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
33133    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
33134    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
33135    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
33136    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
33137    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
33138    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
33139    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
33140    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
33141    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
33142    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
33143    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
33144    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
33145    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
33146    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
33147    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
33148    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
33149    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
33150    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
33151    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
33152    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
33153    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
33154 
33155    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33156    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33157 
33158    ---------------------------------------------------------------------------------------------------------------
33159    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33160    ---------------------------------------------------------------------------------------------------------------
33161    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33162 
33163    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33164    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33165 
33166    IF xla_accounting_cache_pkg.GetValueChar
33167          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33168          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33169    AND l_bflow_method_code = 'PRIOR_ENTRY'
33170 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33171    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33172          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33173        )
33174    THEN
33175          xla_ae_lines_pkg.BflowUpgEntry
33176            (p_business_method_code    => l_bflow_method_code
33177            ,p_business_class_code     => l_bflow_class_code
33178            ,p_balance_type            => l_balance_type_code);
33179    ELSE
33180       NULL;
33181 -- No business flow processing for business flow method of NONE.
33182    END IF;
33183 
33184    --
33185    -- call analytical criteria
33186    --
33187    
33188    --
33189    -- call description
33190    --
33191    
33192 xla_ae_lines_pkg.SetLineDescription(
33193    p_ae_header_id => l_ae_header_id
33194   ,p_description  => Description_1 (
33195      p_application_id         => p_application_id
33196    , p_ae_header_id           => l_ae_header_id 
33197 , p_source_1 => p_source_1
33198 , p_source_2 => p_source_2
33199 , p_source_3 => p_source_3
33200 , p_source_4 => p_source_4
33201 , p_source_5 => p_source_5
33202    )
33203 );
33204 
33205 
33206    --
33207    -- call ADRs
33208    -- Bug 4922099
33209    --
33210    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33211         (NVL(l_actual_upg_option, 'N') = 'O') OR
33212         (NVL(l_enc_upg_option, 'N') = 'O')
33213       )
33214    THEN
33215    NULL;
33216    --
33217    --
33218    
33219   l_ccid := AcctDerRule_6(
33220            p_application_id           => p_application_id
33221          , p_ae_header_id             => l_ae_header_id 
33222 , p_source_11 => p_source_11
33223          , x_transaction_coa_id       => l_adr_transaction_coa_id
33224          , x_accounting_coa_id        => l_adr_accounting_coa_id
33225          , x_value_type_code          => l_adr_value_type_code
33226          , p_side                     => 'NA'
33227    );
33228 
33229    xla_ae_lines_pkg.set_ccid(
33230     p_code_combination_id          => l_ccid
33231   , p_value_type_code              => l_adr_value_type_code
33232   , p_transaction_coa_id           => l_adr_transaction_coa_id
33233   , p_accounting_coa_id            => l_adr_accounting_coa_id
33234   , p_adr_code                     => 'CST_DEFAULT'
33235   , p_adr_type_code                => 'S'
33236   , p_component_type               => l_component_type
33237   , p_component_code               => l_component_code
33238   , p_component_type_code          => l_component_type_code
33239   , p_component_appl_id            => l_component_appl_id
33240   , p_amb_context_code             => l_amb_context_code
33241   , p_side                         => 'NA'
33242   );
33243 
33244 
33245    --
33246    --
33247    END IF;
33248    --
33249    -- Bug 4922099
33250    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33251           (NVL(l_enc_upg_option, 'N') = 'O')
33252         ) AND
33253         (l_bflow_method_code = 'PRIOR_ENTRY')
33254       )
33255    THEN
33256       IF
33257       --
33258       1 = 2
33259       --
33260       THEN
33261       xla_accounting_err_pkg.build_message
33262                                     (p_appli_s_name            => 'XLA'
33263                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33264                                     ,p_token_1                 => 'LINE_NUMBER'
33265                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33266                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33267                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33268                                                                              l_component_type
33269                                                                             ,l_component_code
33270                                                                             ,l_component_type_code
33271                                                                             ,l_component_appl_id
33272                                                                             ,l_amb_context_code
33273                                                                             ,l_entity_code
33274                                                                             ,l_event_class_code
33275                                                                            )
33276                                     ,p_token_3                 => 'OWNER'
33277                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33278                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33279                                                                           ,p_lookup_code    => l_component_type_code
33280                                                                          )
33281                                     ,p_token_4                 => 'PRODUCT_NAME'
33282                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33283                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33284                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33285                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33286                                     ,p_ae_header_id            =>  NULL
33287                                        );
33288 
33289         IF (C_LEVEL_ERROR>= g_log_level) THEN
33290                  trace
33291                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33292                       ,p_level    => C_LEVEL_ERROR
33293                       ,p_module   => l_log_module);
33294         END IF;
33295       END IF;
33296    END IF;
33297    --
33298    --
33299    ------------------------------------------------------------------------------------------------
33300    -- 4219869 Business Flow
33301    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33302    -- Prior Entry.  Currently, the following code is always generated.
33303    ------------------------------------------------------------------------------------------------
33304    XLA_AE_LINES_PKG.ValidateCurrentLine;
33305 
33306    ------------------------------------------------------------------------------------
33307    -- 4219869 Business Flow
33308    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33309    ------------------------------------------------------------------------------------
33310    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33311 
33312    ----------------------------------------------------------------------------------
33313    -- 4219869 Business Flow
33314    -- Update journal entry status -- Need to generate this within IF <condition>
33315    ----------------------------------------------------------------------------------
33316    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33317          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33318          ,p_balance_type_code => l_balance_type_code
33319          );
33320 
33321    -------------------------------------------------------------------------------------------
33322    -- 4262811 - Generate the Accrual Reversal lines
33323    -------------------------------------------------------------------------------------------
33324    BEGIN
33325       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33326                               (g_array_event(p_event_id).array_value_num('header_index'));
33327       IF l_acc_rev_flag IS NULL THEN
33328          l_acc_rev_flag := 'N';
33329       END IF;
33330    EXCEPTION
33331       WHEN OTHERS THEN
33332          l_acc_rev_flag := 'N';
33333    END;
33334    --
33335    IF (l_acc_rev_flag = 'Y') THEN
33336 
33337        -- 4645092  ------------------------------------------------------------------------------
33338        -- To allow MPA report to determine if it should generate report process
33339        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33340        ------------------------------------------------------------------------------------------
33341 
33342        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33343        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33344    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33345    -- call ADRs
33346    -- Bug 4922099
33347    --
33348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33349         (NVL(l_actual_upg_option, 'N') = 'O') OR
33350         (NVL(l_enc_upg_option, 'N') = 'O')
33351       )
33352    THEN
33353    NULL;
33354    --
33355    --
33356    
33357   l_ccid := AcctDerRule_6(
33358            p_application_id           => p_application_id
33359          , p_ae_header_id             => l_ae_header_id 
33360 , p_source_11 => p_source_11
33361          , x_transaction_coa_id       => l_adr_transaction_coa_id
33362          , x_accounting_coa_id        => l_adr_accounting_coa_id
33363          , x_value_type_code          => l_adr_value_type_code
33364          , p_side                     => 'NA'
33365    );
33366 
33367    xla_ae_lines_pkg.set_ccid(
33368     p_code_combination_id          => l_ccid
33369   , p_value_type_code              => l_adr_value_type_code
33370   , p_transaction_coa_id           => l_adr_transaction_coa_id
33371   , p_accounting_coa_id            => l_adr_accounting_coa_id
33372   , p_adr_code                     => 'CST_DEFAULT'
33373   , p_adr_type_code                => 'S'
33374   , p_component_type               => l_component_type
33375   , p_component_code               => l_component_code
33376   , p_component_type_code          => l_component_type_code
33377   , p_component_appl_id            => l_component_appl_id
33378   , p_amb_context_code             => l_amb_context_code
33379   , p_side                         => 'NA'
33380   );
33381 
33382 
33383    --
33384    --
33385    END IF;
33386 
33387        --
33388        -- Update the line information that should be overwritten
33389        --
33390        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33391                                          p_header_num   => 1);
33392        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33393 
33394        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33395 
33396        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33397           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33398        END IF;
33399 
33400       --
33401       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33402       --
33403       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33404           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33405       ELSE
33406           ---------------------------------------------------------------------------------------------------
33407           -- 4262811a Switch Sign
33408           ---------------------------------------------------------------------------------------------------
33409           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33410           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33411                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33412           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33413                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33414           -- 5132302
33415           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33416                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33417 
33418       END IF;
33419 
33420       -- 4955764
33421       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33422       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33423 
33424 
33425       XLA_AE_LINES_PKG.ValidateCurrentLine;
33426       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33427 
33428       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33429                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33430                ,p_balance_type_code => l_balance_type_code);
33431 
33432    END IF;
33433 
33434    -----------------------------------------------------------------------------------------
33435    -- 4262811 Multiperiod Accounting
33436    -----------------------------------------------------------------------------------------
33437      -- No MPA option is assigned.
33438 
33439 
33440 END IF;
33441 END IF;
33442 --
33443 
33444 --
33445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33446    trace
33447       (p_msg      => 'END of AcctLineType_84'
33448       ,p_level    => C_LEVEL_PROCEDURE
33449       ,p_module   => l_log_module);
33450 END IF;
33451 --
33452 EXCEPTION
33453   WHEN xla_exceptions_pkg.application_exception THEN
33454       RAISE;
33455   WHEN OTHERS THEN
33456        xla_exceptions_pkg.raise_message
33457            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_84');
33458 END AcctLineType_84;
33459 --
33460 
33461 ---------------------------------------
33462 --
33463 -- PRIVATE FUNCTION
33464 --         AcctLineType_85
33465 --
33466 ---------------------------------------
33467 PROCEDURE AcctLineType_85 (
33468   p_application_id        IN NUMBER
33469  ,p_event_id              IN NUMBER
33470  ,p_calculate_acctd_flag  IN VARCHAR2
33471  ,p_calculate_g_l_flag    IN VARCHAR2
33472  ,p_actual_flag           IN OUT VARCHAR2
33473  ,p_balance_type_code     OUT VARCHAR2
33474  ,p_gain_or_loss_ref      OUT VARCHAR2
33475  
33476 --TRANSACTION_ID
33477  , p_source_1            IN NUMBER
33478 --Item Concatenated Segments
33479  , p_source_2            IN VARCHAR2
33480 --Transaction Quantity
33481  , p_source_3            IN NUMBER
33482 --Transaction Unit of Measure Code
33483  , p_source_4            IN VARCHAR2
33484 --Inventory Transaction Type Description
33485  , p_source_5            IN VARCHAR2
33486 --Cost Management Default Account
33487  , p_source_11            IN NUMBER
33488 --Applied to Application ID
33489  , p_source_79            IN NUMBER
33490 --Applied to Distribution Link Type
33491  , p_source_80            IN VARCHAR2
33492 --Applied to Entity Code
33493  , p_source_81            IN VARCHAR2
33494 --Applied To Purchase Document Identifier
33495  , p_source_83            IN NUMBER
33496 --DISTRIBUTION_IDENTIFIER
33497  , p_source_84            IN NUMBER
33498 --Distribution Type
33499  , p_source_85            IN VARCHAR2
33500  , p_source_85_meaning    IN VARCHAR2
33501 --PO Budget Account
33502  , p_source_86            IN NUMBER
33503 --Encumbrance Reversal Amount Entered
33504  , p_source_87            IN NUMBER
33505 --Entered Currency Code
33506  , p_source_88            IN VARCHAR2
33507 --Transaction Encumbrance Reversal Amount
33508  , p_source_89            IN NUMBER
33509 --Entered Amount
33510  , p_source_91            IN NUMBER
33511 --Currency Conversion Date
33512  , p_source_92            IN DATE
33513 --Currency Conversion Rate
33514  , p_source_93            IN NUMBER
33515 --Currency Conversion Type
33516  , p_source_94            IN VARCHAR2
33517 --Accounted Amount
33518  , p_source_95            IN NUMBER
33519 --Purchasing Encumbrance Type Identifier
33520  , p_source_96            IN NUMBER
33521 --Accounting Line Type
33522  , p_source_97            IN NUMBER
33523 --Costing Encumbrance Upgrade Option
33524  , p_source_100            IN VARCHAR2
33525 --TXN_PO_DISTRIBUTION_ID
33526  , p_source_101            IN NUMBER
33527 )
33528 IS
33529 
33530 l_component_type              VARCHAR2(80);
33531 l_component_code              VARCHAR2(30);
33532 l_component_type_code         VARCHAR2(1);
33533 l_component_appl_id           INTEGER;
33534 l_amb_context_code            VARCHAR2(30);
33535 l_entity_code                 VARCHAR2(30);
33536 l_event_class_code            VARCHAR2(30);
33537 l_ae_header_id                NUMBER;
33538 l_event_type_code             VARCHAR2(30);
33539 l_line_definition_code        VARCHAR2(30);
33540 l_line_definition_owner_code  VARCHAR2(1);
33541 --
33542 -- adr variables
33543 l_segment                     VARCHAR2(30);
33544 l_ccid                        NUMBER;
33545 l_adr_transaction_coa_id      NUMBER;
33546 l_adr_accounting_coa_id       NUMBER;
33547 l_adr_flexfield_segment_code  VARCHAR2(30);
33548 l_adr_flex_value_set_id       NUMBER;
33549 l_adr_value_type_code         VARCHAR2(30);
33550 l_adr_value_combination_id    NUMBER;
33551 l_adr_value_segment_code      VARCHAR2(30);
33552 
33553 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33554 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33555 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33556 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33557 
33558 -- 4262811 Variables ------------------------------------------------------------------------------------------
33559 l_entered_amt_idx             NUMBER;
33560 l_accted_amt_idx              NUMBER;
33561 l_acc_rev_flag                VARCHAR2(1);
33562 l_accrual_line_num            NUMBER;
33563 l_tmp_amt                     NUMBER;
33564 l_acc_rev_natural_side_code   VARCHAR2(1);
33565 
33566 l_num_entries                 NUMBER;
33567 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33568 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33569 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33570 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33571 l_recog_line_1                NUMBER;
33572 l_recog_line_2                NUMBER;
33573 
33574 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33575 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33576 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33577 
33578 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33579 
33580 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33581 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33582 
33583 ---------------------------------------------------------------------------------------------------------------
33584 
33585 
33586 --
33587 -- bulk performance
33588 --
33589 l_balance_type_code           VARCHAR2(1);
33590 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33591 l_log_module                  VARCHAR2(240);
33592 
33593 --
33594 -- Upgrade strategy
33595 --
33596 l_actual_upg_option           VARCHAR2(1);
33597 l_enc_upg_option           VARCHAR2(1);
33598 
33599 --
33600 BEGIN
33601 --
33602 IF g_log_enabled THEN
33603       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
33604 END IF;
33605 --
33606 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33607 
33608       trace
33609          (p_msg      => 'BEGIN of AcctLineType_85'
33610          ,p_level    => C_LEVEL_PROCEDURE
33611          ,p_module   => l_log_module);
33612 
33613 END IF;
33614 --
33615 l_component_type             := 'AMB_JLT';
33616 l_component_code             := 'COST_VARIANCE';
33617 l_component_type_code        := 'S';
33618 l_component_appl_id          :=  707;
33619 l_amb_context_code           := 'DEFAULT';
33620 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
33621 l_event_class_code           := 'PURCHASE_ORDER';
33622 l_event_type_code            := 'PO_DEL_ADJ';
33623 l_line_definition_owner_code := 'S';
33624 l_line_definition_code       := 'PI_PO_DEL_ADJ';
33625 --
33626 l_balance_type_code          := 'A';
33627 l_segment                     := NULL;
33628 l_ccid                        := NULL;
33629 l_adr_transaction_coa_id      := NULL;
33630 l_adr_accounting_coa_id       := NULL;
33631 l_adr_flexfield_segment_code  := NULL;
33632 l_adr_flex_value_set_id       := NULL;
33633 l_adr_value_type_code         := NULL;
33634 l_adr_value_combination_id    := NULL;
33635 l_adr_value_segment_code      := NULL;
33636 
33637 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33638 l_bflow_class_code           := '';    -- 4219869 Business Flow
33639 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33640 l_budgetary_control_flag     := 'N';
33641 
33642 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33643 l_bflow_applied_to_amt       := NULL; -- 5132302
33644 l_entered_amt_idx            := NULL;          -- 4262811
33645 l_accted_amt_idx             := NULL;          -- 4262811
33646 l_acc_rev_flag               := NULL;          -- 4262811
33647 l_accrual_line_num           := NULL;          -- 4262811
33648 l_tmp_amt                    := NULL;          -- 4262811
33649 --
33650  
33651 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33652     l_balance_type_code <> 'B' THEN
33653 IF NVL(p_source_97,9E125) =  13
33654  THEN 
33655 
33656    --
33657    XLA_AE_LINES_PKG.SetNewLine;
33658 
33659    p_balance_type_code          := l_balance_type_code;
33660    -- set the flag so later we will know whether the gain loss line needs to be created
33661    
33662    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33663      p_actual_flag :='A';
33664    END IF;
33665 
33666    --
33667    -- bulk performance
33668    --
33669    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33670                                       p_header_num   => 0); -- 4262811
33671    --
33672    -- set accounting line options
33673    --
33674    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33675            p_natural_side_code          => 'D'
33676          , p_gain_or_loss_flag          => 'N'
33677          , p_gl_transfer_mode_code      => 'S'
33678          , p_acct_entry_type_code       => 'A'
33679          , p_switch_side_flag           => 'Y'
33680          , p_merge_duplicate_code       => 'N'
33681          );
33682    --
33683    l_acc_rev_natural_side_code := 'C';  -- 4262811
33684    -- 
33685    --
33686    -- set accounting line type info
33687    --
33688    xla_ae_lines_pkg.SetAcctLineType
33689       (p_component_type             => l_component_type
33690       ,p_event_type_code            => l_event_type_code
33691       ,p_line_definition_owner_code => l_line_definition_owner_code
33692       ,p_line_definition_code       => l_line_definition_code
33693       ,p_accounting_line_code       => l_component_code
33694       ,p_accounting_line_type_code  => l_component_type_code
33695       ,p_accounting_line_appl_id    => l_component_appl_id
33696       ,p_amb_context_code           => l_amb_context_code
33697       ,p_entity_code                => l_entity_code
33698       ,p_event_class_code           => l_event_class_code);
33699    --
33700    -- set accounting class
33701    --
33702    xla_ae_lines_pkg.SetAcctClass(
33703            p_accounting_class_code  => 'COST_VARIANCE'
33704          , p_ae_header_id           => l_ae_header_id
33705          );
33706 
33707    --
33708    -- set rounding class
33709    --
33710    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33711                       'COST_VARIANCE';
33712 
33713    --
33714    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33715    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33716    --
33717    -- bulk performance
33718    --
33719    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33720 
33721    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33722       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33723 
33724    -- 4955764
33725    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33726       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33727 
33728    -- 4458381 Public Sector Enh
33729    
33730    --
33731    -- set accounting attributes for the line type
33732    --
33733    l_entered_amt_idx := 17;
33734    l_accted_amt_idx  := 22;
33735    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33736    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
33737    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
33738    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33739    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
33740    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
33741    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
33742    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
33743    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
33744    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33745    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
33746    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
33747    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
33748    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
33749    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
33750    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
33751    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
33752    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
33753    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
33754    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
33755    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
33756    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
33757    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
33758    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
33759    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
33760    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
33761    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
33762    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
33763    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
33764    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
33765    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
33766    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
33767    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
33768    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
33769    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
33770    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
33771    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
33772    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
33773    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
33774    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
33775    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
33776    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
33777    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
33778    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
33779    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
33780    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
33781    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
33782    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
33783    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
33784 
33785    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33786    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33787 
33788    ---------------------------------------------------------------------------------------------------------------
33789    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33790    ---------------------------------------------------------------------------------------------------------------
33791    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33792 
33793    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33794    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33795 
33796    IF xla_accounting_cache_pkg.GetValueChar
33797          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33798          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33799    AND l_bflow_method_code = 'PRIOR_ENTRY'
33800 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33801    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33802          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33803        )
33804    THEN
33805          xla_ae_lines_pkg.BflowUpgEntry
33806            (p_business_method_code    => l_bflow_method_code
33807            ,p_business_class_code     => l_bflow_class_code
33808            ,p_balance_type            => l_balance_type_code);
33809    ELSE
33810       NULL;
33811 -- No business flow processing for business flow method of NONE.
33812    END IF;
33813 
33814    --
33815    -- call analytical criteria
33816    --
33817    
33818    --
33819    -- call description
33820    --
33821    
33822 xla_ae_lines_pkg.SetLineDescription(
33823    p_ae_header_id => l_ae_header_id
33824   ,p_description  => Description_1 (
33825      p_application_id         => p_application_id
33826    , p_ae_header_id           => l_ae_header_id 
33827 , p_source_1 => p_source_1
33828 , p_source_2 => p_source_2
33829 , p_source_3 => p_source_3
33830 , p_source_4 => p_source_4
33831 , p_source_5 => p_source_5
33832    )
33833 );
33834 
33835 
33836    --
33837    -- call ADRs
33838    -- Bug 4922099
33839    --
33840    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33841         (NVL(l_actual_upg_option, 'N') = 'O') OR
33842         (NVL(l_enc_upg_option, 'N') = 'O')
33843       )
33844    THEN
33845    NULL;
33846    --
33847    --
33848    
33849   l_ccid := AcctDerRule_6(
33850            p_application_id           => p_application_id
33851          , p_ae_header_id             => l_ae_header_id 
33852 , p_source_11 => p_source_11
33853          , x_transaction_coa_id       => l_adr_transaction_coa_id
33854          , x_accounting_coa_id        => l_adr_accounting_coa_id
33855          , x_value_type_code          => l_adr_value_type_code
33856          , p_side                     => 'NA'
33857    );
33858 
33859    xla_ae_lines_pkg.set_ccid(
33860     p_code_combination_id          => l_ccid
33861   , p_value_type_code              => l_adr_value_type_code
33862   , p_transaction_coa_id           => l_adr_transaction_coa_id
33863   , p_accounting_coa_id            => l_adr_accounting_coa_id
33864   , p_adr_code                     => 'CST_DEFAULT'
33865   , p_adr_type_code                => 'S'
33866   , p_component_type               => l_component_type
33867   , p_component_code               => l_component_code
33868   , p_component_type_code          => l_component_type_code
33869   , p_component_appl_id            => l_component_appl_id
33870   , p_amb_context_code             => l_amb_context_code
33871   , p_side                         => 'NA'
33872   );
33873 
33874 
33875    --
33876    --
33877    END IF;
33878    --
33879    -- Bug 4922099
33880    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33881           (NVL(l_enc_upg_option, 'N') = 'O')
33882         ) AND
33883         (l_bflow_method_code = 'PRIOR_ENTRY')
33884       )
33885    THEN
33886       IF
33887       --
33888       1 = 2
33889       --
33890       THEN
33891       xla_accounting_err_pkg.build_message
33892                                     (p_appli_s_name            => 'XLA'
33893                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33894                                     ,p_token_1                 => 'LINE_NUMBER'
33895                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33896                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33897                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33898                                                                              l_component_type
33899                                                                             ,l_component_code
33900                                                                             ,l_component_type_code
33901                                                                             ,l_component_appl_id
33902                                                                             ,l_amb_context_code
33903                                                                             ,l_entity_code
33904                                                                             ,l_event_class_code
33905                                                                            )
33906                                     ,p_token_3                 => 'OWNER'
33907                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33908                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33909                                                                           ,p_lookup_code    => l_component_type_code
33910                                                                          )
33911                                     ,p_token_4                 => 'PRODUCT_NAME'
33912                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33913                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33914                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33915                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33916                                     ,p_ae_header_id            =>  NULL
33917                                        );
33918 
33919         IF (C_LEVEL_ERROR>= g_log_level) THEN
33920                  trace
33921                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33922                       ,p_level    => C_LEVEL_ERROR
33923                       ,p_module   => l_log_module);
33924         END IF;
33925       END IF;
33926    END IF;
33927    --
33928    --
33929    ------------------------------------------------------------------------------------------------
33930    -- 4219869 Business Flow
33931    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33932    -- Prior Entry.  Currently, the following code is always generated.
33933    ------------------------------------------------------------------------------------------------
33934    XLA_AE_LINES_PKG.ValidateCurrentLine;
33935 
33936    ------------------------------------------------------------------------------------
33937    -- 4219869 Business Flow
33938    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33939    ------------------------------------------------------------------------------------
33940    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33941 
33942    ----------------------------------------------------------------------------------
33943    -- 4219869 Business Flow
33944    -- Update journal entry status -- Need to generate this within IF <condition>
33945    ----------------------------------------------------------------------------------
33946    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33947          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33948          ,p_balance_type_code => l_balance_type_code
33949          );
33950 
33951    -------------------------------------------------------------------------------------------
33952    -- 4262811 - Generate the Accrual Reversal lines
33953    -------------------------------------------------------------------------------------------
33954    BEGIN
33955       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33956                               (g_array_event(p_event_id).array_value_num('header_index'));
33957       IF l_acc_rev_flag IS NULL THEN
33958          l_acc_rev_flag := 'N';
33959       END IF;
33960    EXCEPTION
33961       WHEN OTHERS THEN
33962          l_acc_rev_flag := 'N';
33963    END;
33964    --
33965    IF (l_acc_rev_flag = 'Y') THEN
33966 
33967        -- 4645092  ------------------------------------------------------------------------------
33968        -- To allow MPA report to determine if it should generate report process
33969        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33970        ------------------------------------------------------------------------------------------
33971 
33972        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33973        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33974    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33975    -- call ADRs
33976    -- Bug 4922099
33977    --
33978    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33979         (NVL(l_actual_upg_option, 'N') = 'O') OR
33980         (NVL(l_enc_upg_option, 'N') = 'O')
33981       )
33982    THEN
33983    NULL;
33984    --
33985    --
33986    
33987   l_ccid := AcctDerRule_6(
33988            p_application_id           => p_application_id
33989          , p_ae_header_id             => l_ae_header_id 
33990 , p_source_11 => p_source_11
33991          , x_transaction_coa_id       => l_adr_transaction_coa_id
33992          , x_accounting_coa_id        => l_adr_accounting_coa_id
33993          , x_value_type_code          => l_adr_value_type_code
33994          , p_side                     => 'NA'
33995    );
33996 
33997    xla_ae_lines_pkg.set_ccid(
33998     p_code_combination_id          => l_ccid
33999   , p_value_type_code              => l_adr_value_type_code
34000   , p_transaction_coa_id           => l_adr_transaction_coa_id
34001   , p_accounting_coa_id            => l_adr_accounting_coa_id
34002   , p_adr_code                     => 'CST_DEFAULT'
34003   , p_adr_type_code                => 'S'
34004   , p_component_type               => l_component_type
34005   , p_component_code               => l_component_code
34006   , p_component_type_code          => l_component_type_code
34007   , p_component_appl_id            => l_component_appl_id
34008   , p_amb_context_code             => l_amb_context_code
34009   , p_side                         => 'NA'
34010   );
34011 
34012 
34013    --
34014    --
34015    END IF;
34016 
34017        --
34018        -- Update the line information that should be overwritten
34019        --
34020        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34021                                          p_header_num   => 1);
34022        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34023 
34024        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34025 
34026        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34027           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34028        END IF;
34029 
34030       --
34031       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34032       --
34033       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34034           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34035       ELSE
34036           ---------------------------------------------------------------------------------------------------
34037           -- 4262811a Switch Sign
34038           ---------------------------------------------------------------------------------------------------
34039           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34040           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34041                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34042           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34043                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34044           -- 5132302
34045           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34046                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34047 
34048       END IF;
34049 
34050       -- 4955764
34051       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34052       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34053 
34054 
34055       XLA_AE_LINES_PKG.ValidateCurrentLine;
34056       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34057 
34058       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34059                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34060                ,p_balance_type_code => l_balance_type_code);
34061 
34062    END IF;
34063 
34064    -----------------------------------------------------------------------------------------
34065    -- 4262811 Multiperiod Accounting
34066    -----------------------------------------------------------------------------------------
34067      -- No MPA option is assigned.
34068 
34069 
34070 END IF;
34071 END IF;
34072 --
34073 
34074 --
34075 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34076    trace
34077       (p_msg      => 'END of AcctLineType_85'
34078       ,p_level    => C_LEVEL_PROCEDURE
34079       ,p_module   => l_log_module);
34080 END IF;
34081 --
34082 EXCEPTION
34083   WHEN xla_exceptions_pkg.application_exception THEN
34084       RAISE;
34085   WHEN OTHERS THEN
34086        xla_exceptions_pkg.raise_message
34087            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_85');
34088 END AcctLineType_85;
34089 --
34090 
34091 ---------------------------------------
34092 --
34093 -- PRIVATE FUNCTION
34094 --         AcctLineType_86
34095 --
34096 ---------------------------------------
34097 PROCEDURE AcctLineType_86 (
34098   p_application_id        IN NUMBER
34099  ,p_event_id              IN NUMBER
34100  ,p_calculate_acctd_flag  IN VARCHAR2
34101  ,p_calculate_g_l_flag    IN VARCHAR2
34102  ,p_actual_flag           IN OUT VARCHAR2
34103  ,p_balance_type_code     OUT VARCHAR2
34104  ,p_gain_or_loss_ref      OUT VARCHAR2
34105  
34106 --TRANSACTION_ID
34107  , p_source_1            IN NUMBER
34108 --Item Concatenated Segments
34109  , p_source_2            IN VARCHAR2
34110 --Transaction Quantity
34111  , p_source_3            IN NUMBER
34112 --Transaction Unit of Measure Code
34113  , p_source_4            IN VARCHAR2
34114 --Inventory Transaction Type Description
34115  , p_source_5            IN VARCHAR2
34116 --Inventory Organization Average Cost Variance Account
34117  , p_source_21            IN NUMBER
34118 --DISTRIBUTION_IDENTIFIER
34119  , p_source_84            IN NUMBER
34120 --Distribution Type
34121  , p_source_85            IN VARCHAR2
34122  , p_source_85_meaning    IN VARCHAR2
34123 --Entered Currency Code
34124  , p_source_88            IN VARCHAR2
34125 --Entered Amount
34126  , p_source_91            IN NUMBER
34127 --Currency Conversion Date
34128  , p_source_92            IN DATE
34129 --Currency Conversion Rate
34130  , p_source_93            IN NUMBER
34131 --Currency Conversion Type
34132  , p_source_94            IN VARCHAR2
34133 --Accounted Amount
34134  , p_source_95            IN NUMBER
34135 --Accounting Line Type
34136  , p_source_97            IN NUMBER
34137 )
34138 IS
34139 
34140 l_component_type              VARCHAR2(80);
34141 l_component_code              VARCHAR2(30);
34142 l_component_type_code         VARCHAR2(1);
34143 l_component_appl_id           INTEGER;
34144 l_amb_context_code            VARCHAR2(30);
34145 l_entity_code                 VARCHAR2(30);
34146 l_event_class_code            VARCHAR2(30);
34147 l_ae_header_id                NUMBER;
34148 l_event_type_code             VARCHAR2(30);
34149 l_line_definition_code        VARCHAR2(30);
34150 l_line_definition_owner_code  VARCHAR2(1);
34151 --
34152 -- adr variables
34153 l_segment                     VARCHAR2(30);
34154 l_ccid                        NUMBER;
34155 l_adr_transaction_coa_id      NUMBER;
34156 l_adr_accounting_coa_id       NUMBER;
34157 l_adr_flexfield_segment_code  VARCHAR2(30);
34158 l_adr_flex_value_set_id       NUMBER;
34159 l_adr_value_type_code         VARCHAR2(30);
34160 l_adr_value_combination_id    NUMBER;
34161 l_adr_value_segment_code      VARCHAR2(30);
34162 
34163 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34164 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34165 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34166 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34167 
34168 -- 4262811 Variables ------------------------------------------------------------------------------------------
34169 l_entered_amt_idx             NUMBER;
34170 l_accted_amt_idx              NUMBER;
34171 l_acc_rev_flag                VARCHAR2(1);
34172 l_accrual_line_num            NUMBER;
34173 l_tmp_amt                     NUMBER;
34174 l_acc_rev_natural_side_code   VARCHAR2(1);
34175 
34176 l_num_entries                 NUMBER;
34177 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34178 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34179 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34180 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34181 l_recog_line_1                NUMBER;
34182 l_recog_line_2                NUMBER;
34183 
34184 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34185 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34186 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34187 
34188 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34189 
34190 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34191 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34192 
34193 ---------------------------------------------------------------------------------------------------------------
34194 
34195 
34196 --
34197 -- bulk performance
34198 --
34199 l_balance_type_code           VARCHAR2(1);
34200 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34201 l_log_module                  VARCHAR2(240);
34202 
34203 --
34204 -- Upgrade strategy
34205 --
34206 l_actual_upg_option           VARCHAR2(1);
34207 l_enc_upg_option           VARCHAR2(1);
34208 
34209 --
34210 BEGIN
34211 --
34212 IF g_log_enabled THEN
34213       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
34214 END IF;
34215 --
34216 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34217 
34218       trace
34219          (p_msg      => 'BEGIN of AcctLineType_86'
34220          ,p_level    => C_LEVEL_PROCEDURE
34221          ,p_module   => l_log_module);
34222 
34223 END IF;
34224 --
34225 l_component_type             := 'AMB_JLT';
34226 l_component_code             := 'COST_VARIANCE';
34227 l_component_type_code        := 'S';
34228 l_component_appl_id          :=  707;
34229 l_amb_context_code           := 'DEFAULT';
34230 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
34231 l_event_class_code           := 'WIP_MTL';
34232 l_event_type_code            := 'WIP_ASSEMBLY_RETURN';
34233 l_line_definition_owner_code := 'S';
34234 l_line_definition_code       := 'PI_WIP_ASSEMBLY_RETURN';
34235 --
34236 l_balance_type_code          := 'A';
34237 l_segment                     := NULL;
34238 l_ccid                        := NULL;
34239 l_adr_transaction_coa_id      := NULL;
34240 l_adr_accounting_coa_id       := NULL;
34241 l_adr_flexfield_segment_code  := NULL;
34242 l_adr_flex_value_set_id       := NULL;
34243 l_adr_value_type_code         := NULL;
34244 l_adr_value_combination_id    := NULL;
34245 l_adr_value_segment_code      := NULL;
34246 
34247 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34248 l_bflow_class_code           := '';    -- 4219869 Business Flow
34249 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34250 l_budgetary_control_flag     := 'N';
34251 
34252 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34253 l_bflow_applied_to_amt       := NULL; -- 5132302
34254 l_entered_amt_idx            := NULL;          -- 4262811
34255 l_accted_amt_idx             := NULL;          -- 4262811
34256 l_acc_rev_flag               := NULL;          -- 4262811
34257 l_accrual_line_num           := NULL;          -- 4262811
34258 l_tmp_amt                    := NULL;          -- 4262811
34259 --
34260  
34261 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34262     l_balance_type_code <> 'B' THEN
34263 IF NVL(p_source_97,9E125) =  13
34264  THEN 
34265 
34266    --
34267    XLA_AE_LINES_PKG.SetNewLine;
34268 
34269    p_balance_type_code          := l_balance_type_code;
34270    -- set the flag so later we will know whether the gain loss line needs to be created
34271    
34272    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34273      p_actual_flag :='A';
34274    END IF;
34275 
34276    --
34277    -- bulk performance
34278    --
34279    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34280                                       p_header_num   => 0); -- 4262811
34281    --
34282    -- set accounting line options
34283    --
34284    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34285            p_natural_side_code          => 'D'
34286          , p_gain_or_loss_flag          => 'N'
34287          , p_gl_transfer_mode_code      => 'S'
34288          , p_acct_entry_type_code       => 'A'
34289          , p_switch_side_flag           => 'Y'
34290          , p_merge_duplicate_code       => 'N'
34291          );
34292    --
34293    l_acc_rev_natural_side_code := 'C';  -- 4262811
34294    -- 
34295    --
34296    -- set accounting line type info
34297    --
34298    xla_ae_lines_pkg.SetAcctLineType
34299       (p_component_type             => l_component_type
34300       ,p_event_type_code            => l_event_type_code
34301       ,p_line_definition_owner_code => l_line_definition_owner_code
34302       ,p_line_definition_code       => l_line_definition_code
34303       ,p_accounting_line_code       => l_component_code
34304       ,p_accounting_line_type_code  => l_component_type_code
34305       ,p_accounting_line_appl_id    => l_component_appl_id
34306       ,p_amb_context_code           => l_amb_context_code
34307       ,p_entity_code                => l_entity_code
34308       ,p_event_class_code           => l_event_class_code);
34309    --
34310    -- set accounting class
34311    --
34312    xla_ae_lines_pkg.SetAcctClass(
34313            p_accounting_class_code  => 'COST_VARIANCE'
34314          , p_ae_header_id           => l_ae_header_id
34315          );
34316 
34317    --
34318    -- set rounding class
34319    --
34320    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34321                       'COST_VARIANCE';
34322 
34323    --
34324    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34325    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34326    --
34327    -- bulk performance
34328    --
34329    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34330 
34331    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34332       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34333 
34334    -- 4955764
34335    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34336       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34337 
34338    -- 4458381 Public Sector Enh
34339    
34340    --
34341    -- set accounting attributes for the line type
34342    --
34343    l_entered_amt_idx := 3;
34344    l_accted_amt_idx  := 8;
34345    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34346    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34347    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
34348    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34349    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
34350    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34351    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
34352    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34353    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
34354    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34355    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
34356    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34357    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
34358    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34359    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
34360    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34361    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
34362 
34363    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34364    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34365 
34366    ---------------------------------------------------------------------------------------------------------------
34367    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34368    ---------------------------------------------------------------------------------------------------------------
34369    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34370 
34371    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34372    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34373 
34374    IF xla_accounting_cache_pkg.GetValueChar
34375          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34376          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34377    AND l_bflow_method_code = 'PRIOR_ENTRY'
34378 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34379    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34380          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34381        )
34382    THEN
34383          xla_ae_lines_pkg.BflowUpgEntry
34384            (p_business_method_code    => l_bflow_method_code
34385            ,p_business_class_code     => l_bflow_class_code
34386            ,p_balance_type            => l_balance_type_code);
34387    ELSE
34388       NULL;
34389 -- No business flow processing for business flow method of NONE.
34390    END IF;
34391 
34392    --
34393    -- call analytical criteria
34394    --
34395    
34396    --
34397    -- call description
34398    --
34399    
34400 xla_ae_lines_pkg.SetLineDescription(
34401    p_ae_header_id => l_ae_header_id
34402   ,p_description  => Description_1 (
34403      p_application_id         => p_application_id
34404    , p_ae_header_id           => l_ae_header_id 
34405 , p_source_1 => p_source_1
34406 , p_source_2 => p_source_2
34407 , p_source_3 => p_source_3
34408 , p_source_4 => p_source_4
34409 , p_source_5 => p_source_5
34410    )
34411 );
34412 
34413 
34414    --
34415    -- call ADRs
34416    -- Bug 4922099
34417    --
34418    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34419         (NVL(l_actual_upg_option, 'N') = 'O') OR
34420         (NVL(l_enc_upg_option, 'N') = 'O')
34421       )
34422    THEN
34423    NULL;
34424    --
34425    --
34426    
34427   l_ccid := AcctDerRule_10(
34428            p_application_id           => p_application_id
34429          , p_ae_header_id             => l_ae_header_id 
34430 , p_source_21 => p_source_21
34431          , x_transaction_coa_id       => l_adr_transaction_coa_id
34432          , x_accounting_coa_id        => l_adr_accounting_coa_id
34433          , x_value_type_code          => l_adr_value_type_code
34434          , p_side                     => 'NA'
34435    );
34436 
34437    xla_ae_lines_pkg.set_ccid(
34438     p_code_combination_id          => l_ccid
34439   , p_value_type_code              => l_adr_value_type_code
34440   , p_transaction_coa_id           => l_adr_transaction_coa_id
34441   , p_accounting_coa_id            => l_adr_accounting_coa_id
34442   , p_adr_code                     => 'PI_AVG_CST_VARIANCE'
34443   , p_adr_type_code                => 'S'
34444   , p_component_type               => l_component_type
34445   , p_component_code               => l_component_code
34446   , p_component_type_code          => l_component_type_code
34447   , p_component_appl_id            => l_component_appl_id
34448   , p_amb_context_code             => l_amb_context_code
34449   , p_side                         => 'NA'
34450   );
34451 
34452 
34453    --
34454    --
34455    END IF;
34456    --
34457    -- Bug 4922099
34458    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34459           (NVL(l_enc_upg_option, 'N') = 'O')
34460         ) AND
34461         (l_bflow_method_code = 'PRIOR_ENTRY')
34462       )
34463    THEN
34464       IF
34465       --
34466       1 = 2
34467       --
34468       THEN
34469       xla_accounting_err_pkg.build_message
34470                                     (p_appli_s_name            => 'XLA'
34471                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34472                                     ,p_token_1                 => 'LINE_NUMBER'
34473                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34474                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34475                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34476                                                                              l_component_type
34477                                                                             ,l_component_code
34478                                                                             ,l_component_type_code
34479                                                                             ,l_component_appl_id
34480                                                                             ,l_amb_context_code
34481                                                                             ,l_entity_code
34482                                                                             ,l_event_class_code
34483                                                                            )
34484                                     ,p_token_3                 => 'OWNER'
34485                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34486                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34487                                                                           ,p_lookup_code    => l_component_type_code
34488                                                                          )
34489                                     ,p_token_4                 => 'PRODUCT_NAME'
34490                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34491                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34492                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34493                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34494                                     ,p_ae_header_id            =>  NULL
34495                                        );
34496 
34497         IF (C_LEVEL_ERROR>= g_log_level) THEN
34498                  trace
34499                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34500                       ,p_level    => C_LEVEL_ERROR
34501                       ,p_module   => l_log_module);
34502         END IF;
34503       END IF;
34504    END IF;
34505    --
34506    --
34507    ------------------------------------------------------------------------------------------------
34508    -- 4219869 Business Flow
34509    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34510    -- Prior Entry.  Currently, the following code is always generated.
34511    ------------------------------------------------------------------------------------------------
34512    XLA_AE_LINES_PKG.ValidateCurrentLine;
34513 
34514    ------------------------------------------------------------------------------------
34515    -- 4219869 Business Flow
34516    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34517    ------------------------------------------------------------------------------------
34518    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34519 
34520    ----------------------------------------------------------------------------------
34521    -- 4219869 Business Flow
34522    -- Update journal entry status -- Need to generate this within IF <condition>
34523    ----------------------------------------------------------------------------------
34524    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34525          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34526          ,p_balance_type_code => l_balance_type_code
34527          );
34528 
34529    -------------------------------------------------------------------------------------------
34530    -- 4262811 - Generate the Accrual Reversal lines
34531    -------------------------------------------------------------------------------------------
34532    BEGIN
34533       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34534                               (g_array_event(p_event_id).array_value_num('header_index'));
34535       IF l_acc_rev_flag IS NULL THEN
34536          l_acc_rev_flag := 'N';
34537       END IF;
34538    EXCEPTION
34539       WHEN OTHERS THEN
34540          l_acc_rev_flag := 'N';
34541    END;
34542    --
34543    IF (l_acc_rev_flag = 'Y') THEN
34544 
34545        -- 4645092  ------------------------------------------------------------------------------
34546        -- To allow MPA report to determine if it should generate report process
34547        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34548        ------------------------------------------------------------------------------------------
34549 
34550        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34551        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34552    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34553    -- call ADRs
34554    -- Bug 4922099
34555    --
34556    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34557         (NVL(l_actual_upg_option, 'N') = 'O') OR
34558         (NVL(l_enc_upg_option, 'N') = 'O')
34559       )
34560    THEN
34561    NULL;
34562    --
34563    --
34564    
34565   l_ccid := AcctDerRule_10(
34566            p_application_id           => p_application_id
34567          , p_ae_header_id             => l_ae_header_id 
34568 , p_source_21 => p_source_21
34569          , x_transaction_coa_id       => l_adr_transaction_coa_id
34570          , x_accounting_coa_id        => l_adr_accounting_coa_id
34571          , x_value_type_code          => l_adr_value_type_code
34572          , p_side                     => 'NA'
34573    );
34574 
34575    xla_ae_lines_pkg.set_ccid(
34576     p_code_combination_id          => l_ccid
34577   , p_value_type_code              => l_adr_value_type_code
34578   , p_transaction_coa_id           => l_adr_transaction_coa_id
34579   , p_accounting_coa_id            => l_adr_accounting_coa_id
34580   , p_adr_code                     => 'PI_AVG_CST_VARIANCE'
34581   , p_adr_type_code                => 'S'
34582   , p_component_type               => l_component_type
34583   , p_component_code               => l_component_code
34584   , p_component_type_code          => l_component_type_code
34585   , p_component_appl_id            => l_component_appl_id
34586   , p_amb_context_code             => l_amb_context_code
34587   , p_side                         => 'NA'
34588   );
34589 
34590 
34591    --
34592    --
34593    END IF;
34594 
34595        --
34596        -- Update the line information that should be overwritten
34597        --
34598        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34599                                          p_header_num   => 1);
34600        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34601 
34602        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34603 
34604        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34605           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34606        END IF;
34607 
34608       --
34609       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34610       --
34611       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34612           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34613       ELSE
34614           ---------------------------------------------------------------------------------------------------
34615           -- 4262811a Switch Sign
34616           ---------------------------------------------------------------------------------------------------
34617           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34618           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34619                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34620           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34621                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34622           -- 5132302
34623           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34624                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34625 
34626       END IF;
34627 
34628       -- 4955764
34629       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34630       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34631 
34632 
34633       XLA_AE_LINES_PKG.ValidateCurrentLine;
34634       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34635 
34636       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34637                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34638                ,p_balance_type_code => l_balance_type_code);
34639 
34640    END IF;
34641 
34642    -----------------------------------------------------------------------------------------
34643    -- 4262811 Multiperiod Accounting
34644    -----------------------------------------------------------------------------------------
34645      -- No MPA option is assigned.
34646 
34647 
34648 END IF;
34649 END IF;
34650 --
34651 
34652 --
34653 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34654    trace
34655       (p_msg      => 'END of AcctLineType_86'
34656       ,p_level    => C_LEVEL_PROCEDURE
34657       ,p_module   => l_log_module);
34658 END IF;
34659 --
34660 EXCEPTION
34661   WHEN xla_exceptions_pkg.application_exception THEN
34662       RAISE;
34663   WHEN OTHERS THEN
34664        xla_exceptions_pkg.raise_message
34665            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_86');
34666 END AcctLineType_86;
34667 --
34668 
34669 ---------------------------------------
34670 --
34671 -- PRIVATE FUNCTION
34672 --         AcctLineType_87
34673 --
34674 ---------------------------------------
34675 PROCEDURE AcctLineType_87 (
34676   p_application_id        IN NUMBER
34677  ,p_event_id              IN NUMBER
34678  ,p_calculate_acctd_flag  IN VARCHAR2
34679  ,p_calculate_g_l_flag    IN VARCHAR2
34680  ,p_actual_flag           IN OUT VARCHAR2
34681  ,p_balance_type_code     OUT VARCHAR2
34682  ,p_gain_or_loss_ref      OUT VARCHAR2
34683  
34684 --TRANSACTION_ID
34685  , p_source_1            IN NUMBER
34686 --Item Concatenated Segments
34687  , p_source_2            IN VARCHAR2
34688 --Transaction Quantity
34689  , p_source_3            IN NUMBER
34690 --Transaction Unit of Measure Code
34691  , p_source_4            IN VARCHAR2
34692 --Inventory Transaction Type Description
34693  , p_source_5            IN VARCHAR2
34694 --Cost Management Default Account
34695  , p_source_11            IN NUMBER
34696 --DISTRIBUTION_IDENTIFIER
34697  , p_source_84            IN NUMBER
34698 --Distribution Type
34699  , p_source_85            IN VARCHAR2
34700  , p_source_85_meaning    IN VARCHAR2
34701 --Entered Currency Code
34702  , p_source_88            IN VARCHAR2
34703 --Entered Amount
34704  , p_source_91            IN NUMBER
34705 --Currency Conversion Date
34706  , p_source_92            IN DATE
34707 --Currency Conversion Rate
34708  , p_source_93            IN NUMBER
34709 --Currency Conversion Type
34710  , p_source_94            IN VARCHAR2
34711 --Accounted Amount
34712  , p_source_95            IN NUMBER
34713 --Accounting Line Type
34714  , p_source_97            IN NUMBER
34715 )
34716 IS
34717 
34718 l_component_type              VARCHAR2(80);
34719 l_component_code              VARCHAR2(30);
34720 l_component_type_code         VARCHAR2(1);
34721 l_component_appl_id           INTEGER;
34722 l_amb_context_code            VARCHAR2(30);
34723 l_entity_code                 VARCHAR2(30);
34724 l_event_class_code            VARCHAR2(30);
34725 l_ae_header_id                NUMBER;
34726 l_event_type_code             VARCHAR2(30);
34727 l_line_definition_code        VARCHAR2(30);
34728 l_line_definition_owner_code  VARCHAR2(1);
34729 --
34730 -- adr variables
34731 l_segment                     VARCHAR2(30);
34732 l_ccid                        NUMBER;
34733 l_adr_transaction_coa_id      NUMBER;
34734 l_adr_accounting_coa_id       NUMBER;
34735 l_adr_flexfield_segment_code  VARCHAR2(30);
34736 l_adr_flex_value_set_id       NUMBER;
34737 l_adr_value_type_code         VARCHAR2(30);
34738 l_adr_value_combination_id    NUMBER;
34739 l_adr_value_segment_code      VARCHAR2(30);
34740 
34741 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34742 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34743 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34744 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34745 
34746 -- 4262811 Variables ------------------------------------------------------------------------------------------
34747 l_entered_amt_idx             NUMBER;
34748 l_accted_amt_idx              NUMBER;
34749 l_acc_rev_flag                VARCHAR2(1);
34750 l_accrual_line_num            NUMBER;
34751 l_tmp_amt                     NUMBER;
34752 l_acc_rev_natural_side_code   VARCHAR2(1);
34753 
34754 l_num_entries                 NUMBER;
34755 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34756 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34757 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34758 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34759 l_recog_line_1                NUMBER;
34760 l_recog_line_2                NUMBER;
34761 
34762 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34763 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34764 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34765 
34766 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34767 
34768 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34769 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34770 
34771 ---------------------------------------------------------------------------------------------------------------
34772 
34773 
34774 --
34775 -- bulk performance
34776 --
34777 l_balance_type_code           VARCHAR2(1);
34778 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34779 l_log_module                  VARCHAR2(240);
34780 
34781 --
34782 -- Upgrade strategy
34783 --
34784 l_actual_upg_option           VARCHAR2(1);
34785 l_enc_upg_option           VARCHAR2(1);
34786 
34787 --
34788 BEGIN
34789 --
34790 IF g_log_enabled THEN
34791       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
34792 END IF;
34793 --
34794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34795 
34796       trace
34797          (p_msg      => 'BEGIN of AcctLineType_87'
34798          ,p_level    => C_LEVEL_PROCEDURE
34799          ,p_module   => l_log_module);
34800 
34801 END IF;
34802 --
34803 l_component_type             := 'AMB_JLT';
34804 l_component_code             := 'COST_VARIANCE';
34805 l_component_type_code        := 'S';
34806 l_component_appl_id          :=  707;
34807 l_amb_context_code           := 'DEFAULT';
34808 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
34809 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
34810 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
34811 l_line_definition_owner_code := 'S';
34812 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
34813 --
34814 l_balance_type_code          := 'A';
34815 l_segment                     := NULL;
34816 l_ccid                        := NULL;
34817 l_adr_transaction_coa_id      := NULL;
34818 l_adr_accounting_coa_id       := NULL;
34819 l_adr_flexfield_segment_code  := NULL;
34820 l_adr_flex_value_set_id       := NULL;
34821 l_adr_value_type_code         := NULL;
34822 l_adr_value_combination_id    := NULL;
34823 l_adr_value_segment_code      := NULL;
34824 
34825 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34826 l_bflow_class_code           := '';    -- 4219869 Business Flow
34827 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34828 l_budgetary_control_flag     := 'N';
34829 
34830 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34831 l_bflow_applied_to_amt       := NULL; -- 5132302
34832 l_entered_amt_idx            := NULL;          -- 4262811
34833 l_accted_amt_idx             := NULL;          -- 4262811
34834 l_acc_rev_flag               := NULL;          -- 4262811
34835 l_accrual_line_num           := NULL;          -- 4262811
34836 l_tmp_amt                    := NULL;          -- 4262811
34837 --
34838  
34839 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34840     l_balance_type_code <> 'B' THEN
34841 IF NVL(p_source_97,9E125) =  13
34842  THEN 
34843 
34844    --
34845    XLA_AE_LINES_PKG.SetNewLine;
34846 
34847    p_balance_type_code          := l_balance_type_code;
34848    -- set the flag so later we will know whether the gain loss line needs to be created
34849    
34850    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34851      p_actual_flag :='A';
34852    END IF;
34853 
34854    --
34855    -- bulk performance
34856    --
34857    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34858                                       p_header_num   => 0); -- 4262811
34859    --
34860    -- set accounting line options
34861    --
34862    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34863            p_natural_side_code          => 'D'
34864          , p_gain_or_loss_flag          => 'N'
34865          , p_gl_transfer_mode_code      => 'S'
34866          , p_acct_entry_type_code       => 'A'
34867          , p_switch_side_flag           => 'Y'
34868          , p_merge_duplicate_code       => 'N'
34869          );
34870    --
34871    l_acc_rev_natural_side_code := 'C';  -- 4262811
34872    -- 
34873    --
34874    -- set accounting line type info
34875    --
34876    xla_ae_lines_pkg.SetAcctLineType
34877       (p_component_type             => l_component_type
34878       ,p_event_type_code            => l_event_type_code
34879       ,p_line_definition_owner_code => l_line_definition_owner_code
34880       ,p_line_definition_code       => l_line_definition_code
34881       ,p_accounting_line_code       => l_component_code
34882       ,p_accounting_line_type_code  => l_component_type_code
34883       ,p_accounting_line_appl_id    => l_component_appl_id
34884       ,p_amb_context_code           => l_amb_context_code
34885       ,p_entity_code                => l_entity_code
34886       ,p_event_class_code           => l_event_class_code);
34887    --
34888    -- set accounting class
34889    --
34890    xla_ae_lines_pkg.SetAcctClass(
34891            p_accounting_class_code  => 'COST_VARIANCE'
34892          , p_ae_header_id           => l_ae_header_id
34893          );
34894 
34895    --
34896    -- set rounding class
34897    --
34898    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34899                       'COST_VARIANCE';
34900 
34901    --
34902    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34903    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34904    --
34905    -- bulk performance
34906    --
34907    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34908 
34909    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34910       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34911 
34912    -- 4955764
34913    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34914       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34915 
34916    -- 4458381 Public Sector Enh
34917    
34918    --
34919    -- set accounting attributes for the line type
34920    --
34921    l_entered_amt_idx := 3;
34922    l_accted_amt_idx  := 8;
34923    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34924    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34925    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
34926    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34927    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
34928    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34929    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
34930    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34931    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
34932    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34933    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
34934    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34935    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
34936    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34937    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
34938    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34939    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
34940 
34941    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34942    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34943 
34944    ---------------------------------------------------------------------------------------------------------------
34945    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34946    ---------------------------------------------------------------------------------------------------------------
34947    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34948 
34949    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34950    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34951 
34952    IF xla_accounting_cache_pkg.GetValueChar
34953          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34954          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34955    AND l_bflow_method_code = 'PRIOR_ENTRY'
34956 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34957    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34958          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34959        )
34960    THEN
34961          xla_ae_lines_pkg.BflowUpgEntry
34962            (p_business_method_code    => l_bflow_method_code
34963            ,p_business_class_code     => l_bflow_class_code
34964            ,p_balance_type            => l_balance_type_code);
34965    ELSE
34966       NULL;
34967 -- No business flow processing for business flow method of NONE.
34968    END IF;
34969 
34970    --
34971    -- call analytical criteria
34972    --
34973    
34974    --
34975    -- call description
34976    --
34977    
34978 xla_ae_lines_pkg.SetLineDescription(
34979    p_ae_header_id => l_ae_header_id
34980   ,p_description  => Description_1 (
34981      p_application_id         => p_application_id
34982    , p_ae_header_id           => l_ae_header_id 
34983 , p_source_1 => p_source_1
34984 , p_source_2 => p_source_2
34985 , p_source_3 => p_source_3
34986 , p_source_4 => p_source_4
34987 , p_source_5 => p_source_5
34988    )
34989 );
34990 
34991 
34992    --
34993    -- call ADRs
34994    -- Bug 4922099
34995    --
34996    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34997         (NVL(l_actual_upg_option, 'N') = 'O') OR
34998         (NVL(l_enc_upg_option, 'N') = 'O')
34999       )
35000    THEN
35001    NULL;
35002    --
35003    --
35004    
35005   l_ccid := AcctDerRule_6(
35006            p_application_id           => p_application_id
35007          , p_ae_header_id             => l_ae_header_id 
35008 , p_source_11 => p_source_11
35009          , x_transaction_coa_id       => l_adr_transaction_coa_id
35010          , x_accounting_coa_id        => l_adr_accounting_coa_id
35011          , x_value_type_code          => l_adr_value_type_code
35012          , p_side                     => 'NA'
35013    );
35014 
35015    xla_ae_lines_pkg.set_ccid(
35016     p_code_combination_id          => l_ccid
35017   , p_value_type_code              => l_adr_value_type_code
35018   , p_transaction_coa_id           => l_adr_transaction_coa_id
35019   , p_accounting_coa_id            => l_adr_accounting_coa_id
35020   , p_adr_code                     => 'CST_DEFAULT'
35021   , p_adr_type_code                => 'S'
35022   , p_component_type               => l_component_type
35023   , p_component_code               => l_component_code
35024   , p_component_type_code          => l_component_type_code
35025   , p_component_appl_id            => l_component_appl_id
35026   , p_amb_context_code             => l_amb_context_code
35027   , p_side                         => 'NA'
35028   );
35029 
35030 
35031    --
35032    --
35033    END IF;
35034    --
35035    -- Bug 4922099
35036    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35037           (NVL(l_enc_upg_option, 'N') = 'O')
35038         ) AND
35039         (l_bflow_method_code = 'PRIOR_ENTRY')
35040       )
35041    THEN
35042       IF
35043       --
35044       1 = 2
35045       --
35046       THEN
35047       xla_accounting_err_pkg.build_message
35048                                     (p_appli_s_name            => 'XLA'
35049                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35050                                     ,p_token_1                 => 'LINE_NUMBER'
35051                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35052                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35053                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35054                                                                              l_component_type
35055                                                                             ,l_component_code
35056                                                                             ,l_component_type_code
35057                                                                             ,l_component_appl_id
35058                                                                             ,l_amb_context_code
35059                                                                             ,l_entity_code
35060                                                                             ,l_event_class_code
35061                                                                            )
35062                                     ,p_token_3                 => 'OWNER'
35063                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35064                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35065                                                                           ,p_lookup_code    => l_component_type_code
35066                                                                          )
35067                                     ,p_token_4                 => 'PRODUCT_NAME'
35068                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35069                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35070                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35071                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35072                                     ,p_ae_header_id            =>  NULL
35073                                        );
35074 
35075         IF (C_LEVEL_ERROR>= g_log_level) THEN
35076                  trace
35077                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35078                       ,p_level    => C_LEVEL_ERROR
35079                       ,p_module   => l_log_module);
35080         END IF;
35081       END IF;
35082    END IF;
35083    --
35084    --
35085    ------------------------------------------------------------------------------------------------
35086    -- 4219869 Business Flow
35087    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35088    -- Prior Entry.  Currently, the following code is always generated.
35089    ------------------------------------------------------------------------------------------------
35090    XLA_AE_LINES_PKG.ValidateCurrentLine;
35091 
35092    ------------------------------------------------------------------------------------
35093    -- 4219869 Business Flow
35094    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35095    ------------------------------------------------------------------------------------
35096    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35097 
35098    ----------------------------------------------------------------------------------
35099    -- 4219869 Business Flow
35100    -- Update journal entry status -- Need to generate this within IF <condition>
35101    ----------------------------------------------------------------------------------
35102    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35103          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35104          ,p_balance_type_code => l_balance_type_code
35105          );
35106 
35107    -------------------------------------------------------------------------------------------
35108    -- 4262811 - Generate the Accrual Reversal lines
35109    -------------------------------------------------------------------------------------------
35110    BEGIN
35111       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35112                               (g_array_event(p_event_id).array_value_num('header_index'));
35113       IF l_acc_rev_flag IS NULL THEN
35114          l_acc_rev_flag := 'N';
35115       END IF;
35116    EXCEPTION
35117       WHEN OTHERS THEN
35118          l_acc_rev_flag := 'N';
35119    END;
35120    --
35121    IF (l_acc_rev_flag = 'Y') THEN
35122 
35123        -- 4645092  ------------------------------------------------------------------------------
35124        -- To allow MPA report to determine if it should generate report process
35125        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35126        ------------------------------------------------------------------------------------------
35127 
35128        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35129        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35130    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35131    -- call ADRs
35132    -- Bug 4922099
35133    --
35134    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35135         (NVL(l_actual_upg_option, 'N') = 'O') OR
35136         (NVL(l_enc_upg_option, 'N') = 'O')
35137       )
35138    THEN
35139    NULL;
35140    --
35141    --
35142    
35143   l_ccid := AcctDerRule_6(
35144            p_application_id           => p_application_id
35145          , p_ae_header_id             => l_ae_header_id 
35146 , p_source_11 => p_source_11
35147          , x_transaction_coa_id       => l_adr_transaction_coa_id
35148          , x_accounting_coa_id        => l_adr_accounting_coa_id
35149          , x_value_type_code          => l_adr_value_type_code
35150          , p_side                     => 'NA'
35151    );
35152 
35153    xla_ae_lines_pkg.set_ccid(
35154     p_code_combination_id          => l_ccid
35155   , p_value_type_code              => l_adr_value_type_code
35156   , p_transaction_coa_id           => l_adr_transaction_coa_id
35157   , p_accounting_coa_id            => l_adr_accounting_coa_id
35158   , p_adr_code                     => 'CST_DEFAULT'
35159   , p_adr_type_code                => 'S'
35160   , p_component_type               => l_component_type
35161   , p_component_code               => l_component_code
35162   , p_component_type_code          => l_component_type_code
35163   , p_component_appl_id            => l_component_appl_id
35164   , p_amb_context_code             => l_amb_context_code
35165   , p_side                         => 'NA'
35166   );
35167 
35168 
35169    --
35170    --
35171    END IF;
35172 
35173        --
35174        -- Update the line information that should be overwritten
35175        --
35176        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35177                                          p_header_num   => 1);
35178        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35179 
35180        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35181 
35182        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35183           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35184        END IF;
35185 
35186       --
35187       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35188       --
35189       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35190           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35191       ELSE
35192           ---------------------------------------------------------------------------------------------------
35193           -- 4262811a Switch Sign
35194           ---------------------------------------------------------------------------------------------------
35195           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35196           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35197                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35198           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35199                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35200           -- 5132302
35201           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35202                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35203 
35204       END IF;
35205 
35206       -- 4955764
35207       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35208       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35209 
35210 
35211       XLA_AE_LINES_PKG.ValidateCurrentLine;
35212       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35213 
35214       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35215                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35216                ,p_balance_type_code => l_balance_type_code);
35217 
35218    END IF;
35219 
35220    -----------------------------------------------------------------------------------------
35221    -- 4262811 Multiperiod Accounting
35222    -----------------------------------------------------------------------------------------
35223      -- No MPA option is assigned.
35224 
35225 
35226 END IF;
35227 END IF;
35228 --
35229 
35230 --
35231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35232    trace
35233       (p_msg      => 'END of AcctLineType_87'
35234       ,p_level    => C_LEVEL_PROCEDURE
35235       ,p_module   => l_log_module);
35236 END IF;
35237 --
35238 EXCEPTION
35239   WHEN xla_exceptions_pkg.application_exception THEN
35240       RAISE;
35241   WHEN OTHERS THEN
35242        xla_exceptions_pkg.raise_message
35243            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_87');
35244 END AcctLineType_87;
35245 --
35246 
35247 ---------------------------------------
35248 --
35249 -- PRIVATE FUNCTION
35250 --         AcctLineType_88
35251 --
35252 ---------------------------------------
35253 PROCEDURE AcctLineType_88 (
35254   p_application_id        IN NUMBER
35255  ,p_event_id              IN NUMBER
35256  ,p_calculate_acctd_flag  IN VARCHAR2
35257  ,p_calculate_g_l_flag    IN VARCHAR2
35258  ,p_actual_flag           IN OUT VARCHAR2
35259  ,p_balance_type_code     OUT VARCHAR2
35260  ,p_gain_or_loss_ref      OUT VARCHAR2
35261  
35262 --Cost Management Default Account
35263  , p_source_11            IN NUMBER
35264 --DISTRIBUTION_IDENTIFIER
35265  , p_source_84            IN NUMBER
35266 --Distribution Type
35267  , p_source_85            IN VARCHAR2
35268  , p_source_85_meaning    IN VARCHAR2
35269 --Entered Currency Code
35270  , p_source_88            IN VARCHAR2
35271 --Entered Amount
35272  , p_source_91            IN NUMBER
35273 --Currency Conversion Date
35274  , p_source_92            IN DATE
35275 --Currency Conversion Rate
35276  , p_source_93            IN NUMBER
35277 --Currency Conversion Type
35278  , p_source_94            IN VARCHAR2
35279 --Accounted Amount
35280  , p_source_95            IN NUMBER
35281 --Accounting Line Type
35282  , p_source_97            IN NUMBER
35283 )
35284 IS
35285 
35286 l_component_type              VARCHAR2(80);
35287 l_component_code              VARCHAR2(30);
35288 l_component_type_code         VARCHAR2(1);
35289 l_component_appl_id           INTEGER;
35290 l_amb_context_code            VARCHAR2(30);
35291 l_entity_code                 VARCHAR2(30);
35292 l_event_class_code            VARCHAR2(30);
35293 l_ae_header_id                NUMBER;
35294 l_event_type_code             VARCHAR2(30);
35295 l_line_definition_code        VARCHAR2(30);
35296 l_line_definition_owner_code  VARCHAR2(1);
35297 --
35298 -- adr variables
35299 l_segment                     VARCHAR2(30);
35300 l_ccid                        NUMBER;
35301 l_adr_transaction_coa_id      NUMBER;
35302 l_adr_accounting_coa_id       NUMBER;
35303 l_adr_flexfield_segment_code  VARCHAR2(30);
35304 l_adr_flex_value_set_id       NUMBER;
35305 l_adr_value_type_code         VARCHAR2(30);
35306 l_adr_value_combination_id    NUMBER;
35307 l_adr_value_segment_code      VARCHAR2(30);
35308 
35309 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35310 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35311 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35312 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35313 
35314 -- 4262811 Variables ------------------------------------------------------------------------------------------
35315 l_entered_amt_idx             NUMBER;
35316 l_accted_amt_idx              NUMBER;
35317 l_acc_rev_flag                VARCHAR2(1);
35318 l_accrual_line_num            NUMBER;
35319 l_tmp_amt                     NUMBER;
35320 l_acc_rev_natural_side_code   VARCHAR2(1);
35321 
35322 l_num_entries                 NUMBER;
35323 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35324 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35325 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35326 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35327 l_recog_line_1                NUMBER;
35328 l_recog_line_2                NUMBER;
35329 
35330 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35331 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35332 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35333 
35334 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35335 
35336 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35337 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35338 
35339 ---------------------------------------------------------------------------------------------------------------
35340 
35341 
35342 --
35343 -- bulk performance
35344 --
35345 l_balance_type_code           VARCHAR2(1);
35346 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35347 l_log_module                  VARCHAR2(240);
35348 
35349 --
35350 -- Upgrade strategy
35351 --
35352 l_actual_upg_option           VARCHAR2(1);
35353 l_enc_upg_option           VARCHAR2(1);
35354 
35355 --
35356 BEGIN
35357 --
35358 IF g_log_enabled THEN
35359       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
35360 END IF;
35361 --
35362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35363 
35364       trace
35365          (p_msg      => 'BEGIN of AcctLineType_88'
35366          ,p_level    => C_LEVEL_PROCEDURE
35367          ,p_module   => l_log_module);
35368 
35369 END IF;
35370 --
35371 l_component_type             := 'AMB_JLT';
35372 l_component_code             := 'COST_VARIANCE';
35373 l_component_type_code        := 'S';
35374 l_component_appl_id          :=  707;
35375 l_amb_context_code           := 'DEFAULT';
35376 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
35377 l_event_class_code           := 'USER_DEFINE';
35378 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
35379 l_line_definition_owner_code := 'S';
35380 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
35381 --
35382 l_balance_type_code          := 'A';
35383 l_segment                     := NULL;
35384 l_ccid                        := NULL;
35385 l_adr_transaction_coa_id      := NULL;
35386 l_adr_accounting_coa_id       := NULL;
35387 l_adr_flexfield_segment_code  := NULL;
35388 l_adr_flex_value_set_id       := NULL;
35389 l_adr_value_type_code         := NULL;
35390 l_adr_value_combination_id    := NULL;
35391 l_adr_value_segment_code      := NULL;
35392 
35393 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35394 l_bflow_class_code           := '';    -- 4219869 Business Flow
35395 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35396 l_budgetary_control_flag     := 'N';
35397 
35398 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35399 l_bflow_applied_to_amt       := NULL; -- 5132302
35400 l_entered_amt_idx            := NULL;          -- 4262811
35401 l_accted_amt_idx             := NULL;          -- 4262811
35402 l_acc_rev_flag               := NULL;          -- 4262811
35403 l_accrual_line_num           := NULL;          -- 4262811
35404 l_tmp_amt                    := NULL;          -- 4262811
35405 --
35406  
35407 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35408     l_balance_type_code <> 'B' THEN
35409 IF NVL(p_source_97,9E125) =  13
35410  THEN 
35411 
35412    --
35413    XLA_AE_LINES_PKG.SetNewLine;
35414 
35415    p_balance_type_code          := l_balance_type_code;
35416    -- set the flag so later we will know whether the gain loss line needs to be created
35417    
35418    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35419      p_actual_flag :='A';
35420    END IF;
35421 
35422    --
35423    -- bulk performance
35424    --
35425    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35426                                       p_header_num   => 0); -- 4262811
35427    --
35428    -- set accounting line options
35429    --
35430    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35431            p_natural_side_code          => 'D'
35432          , p_gain_or_loss_flag          => 'N'
35433          , p_gl_transfer_mode_code      => 'S'
35434          , p_acct_entry_type_code       => 'A'
35435          , p_switch_side_flag           => 'Y'
35436          , p_merge_duplicate_code       => 'N'
35437          );
35438    --
35439    l_acc_rev_natural_side_code := 'C';  -- 4262811
35440    -- 
35441    --
35442    -- set accounting line type info
35443    --
35444    xla_ae_lines_pkg.SetAcctLineType
35445       (p_component_type             => l_component_type
35446       ,p_event_type_code            => l_event_type_code
35447       ,p_line_definition_owner_code => l_line_definition_owner_code
35448       ,p_line_definition_code       => l_line_definition_code
35449       ,p_accounting_line_code       => l_component_code
35450       ,p_accounting_line_type_code  => l_component_type_code
35451       ,p_accounting_line_appl_id    => l_component_appl_id
35452       ,p_amb_context_code           => l_amb_context_code
35453       ,p_entity_code                => l_entity_code
35454       ,p_event_class_code           => l_event_class_code);
35455    --
35456    -- set accounting class
35457    --
35458    xla_ae_lines_pkg.SetAcctClass(
35459            p_accounting_class_code  => 'COST_VARIANCE'
35460          , p_ae_header_id           => l_ae_header_id
35461          );
35462 
35463    --
35464    -- set rounding class
35465    --
35466    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35467                       'COST_VARIANCE';
35468 
35469    --
35470    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35471    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35472    --
35473    -- bulk performance
35474    --
35475    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35476 
35477    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35478       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35479 
35480    -- 4955764
35481    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35482       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35483 
35484    -- 4458381 Public Sector Enh
35485    
35486    --
35487    -- set accounting attributes for the line type
35488    --
35489    l_entered_amt_idx := 3;
35490    l_accted_amt_idx  := 8;
35491    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35492    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35493    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
35494    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35495    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
35496    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35497    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
35498    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35499    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
35500    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35501    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
35502    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35503    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
35504    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35505    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
35506    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35507    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
35508 
35509    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35510    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35511 
35512    ---------------------------------------------------------------------------------------------------------------
35513    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35514    ---------------------------------------------------------------------------------------------------------------
35515    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35516 
35517    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35518    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35519 
35520    IF xla_accounting_cache_pkg.GetValueChar
35521          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35522          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35523    AND l_bflow_method_code = 'PRIOR_ENTRY'
35524 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35525    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35526          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35527        )
35528    THEN
35529          xla_ae_lines_pkg.BflowUpgEntry
35530            (p_business_method_code    => l_bflow_method_code
35531            ,p_business_class_code     => l_bflow_class_code
35532            ,p_balance_type            => l_balance_type_code);
35533    ELSE
35534       NULL;
35535 -- No business flow processing for business flow method of NONE.
35536    END IF;
35537 
35538    --
35539    -- call analytical criteria
35540    --
35541    
35542    --
35543    -- call description
35544    --
35545    -- No description or it is inherited.
35546    --
35547    -- call ADRs
35548    -- Bug 4922099
35549    --
35550    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35551         (NVL(l_actual_upg_option, 'N') = 'O') OR
35552         (NVL(l_enc_upg_option, 'N') = 'O')
35553       )
35554    THEN
35555    NULL;
35556    --
35557    --
35558    
35559   l_ccid := AcctDerRule_6(
35560            p_application_id           => p_application_id
35561          , p_ae_header_id             => l_ae_header_id 
35562 , p_source_11 => p_source_11
35563          , x_transaction_coa_id       => l_adr_transaction_coa_id
35564          , x_accounting_coa_id        => l_adr_accounting_coa_id
35565          , x_value_type_code          => l_adr_value_type_code
35566          , p_side                     => 'NA'
35567    );
35568 
35569    xla_ae_lines_pkg.set_ccid(
35570     p_code_combination_id          => l_ccid
35571   , p_value_type_code              => l_adr_value_type_code
35572   , p_transaction_coa_id           => l_adr_transaction_coa_id
35573   , p_accounting_coa_id            => l_adr_accounting_coa_id
35574   , p_adr_code                     => 'CST_DEFAULT'
35575   , p_adr_type_code                => 'S'
35576   , p_component_type               => l_component_type
35577   , p_component_code               => l_component_code
35578   , p_component_type_code          => l_component_type_code
35579   , p_component_appl_id            => l_component_appl_id
35580   , p_amb_context_code             => l_amb_context_code
35581   , p_side                         => 'NA'
35582   );
35583 
35584 
35585    --
35586    --
35587    END IF;
35588    --
35589    -- Bug 4922099
35590    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35591           (NVL(l_enc_upg_option, 'N') = 'O')
35592         ) AND
35593         (l_bflow_method_code = 'PRIOR_ENTRY')
35594       )
35595    THEN
35596       IF
35597       --
35598       1 = 2
35599       --
35600       THEN
35601       xla_accounting_err_pkg.build_message
35602                                     (p_appli_s_name            => 'XLA'
35603                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35604                                     ,p_token_1                 => 'LINE_NUMBER'
35605                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35606                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35607                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35608                                                                              l_component_type
35609                                                                             ,l_component_code
35610                                                                             ,l_component_type_code
35611                                                                             ,l_component_appl_id
35612                                                                             ,l_amb_context_code
35613                                                                             ,l_entity_code
35614                                                                             ,l_event_class_code
35615                                                                            )
35616                                     ,p_token_3                 => 'OWNER'
35617                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35618                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35619                                                                           ,p_lookup_code    => l_component_type_code
35620                                                                          )
35621                                     ,p_token_4                 => 'PRODUCT_NAME'
35622                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35623                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35624                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35625                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35626                                     ,p_ae_header_id            =>  NULL
35627                                        );
35628 
35629         IF (C_LEVEL_ERROR>= g_log_level) THEN
35630                  trace
35631                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35632                       ,p_level    => C_LEVEL_ERROR
35633                       ,p_module   => l_log_module);
35634         END IF;
35635       END IF;
35636    END IF;
35637    --
35638    --
35639    ------------------------------------------------------------------------------------------------
35640    -- 4219869 Business Flow
35641    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35642    -- Prior Entry.  Currently, the following code is always generated.
35643    ------------------------------------------------------------------------------------------------
35644    XLA_AE_LINES_PKG.ValidateCurrentLine;
35645 
35646    ------------------------------------------------------------------------------------
35647    -- 4219869 Business Flow
35648    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35649    ------------------------------------------------------------------------------------
35650    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35651 
35652    ----------------------------------------------------------------------------------
35653    -- 4219869 Business Flow
35654    -- Update journal entry status -- Need to generate this within IF <condition>
35655    ----------------------------------------------------------------------------------
35656    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35657          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35658          ,p_balance_type_code => l_balance_type_code
35659          );
35660 
35661    -------------------------------------------------------------------------------------------
35662    -- 4262811 - Generate the Accrual Reversal lines
35663    -------------------------------------------------------------------------------------------
35664    BEGIN
35665       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35666                               (g_array_event(p_event_id).array_value_num('header_index'));
35667       IF l_acc_rev_flag IS NULL THEN
35668          l_acc_rev_flag := 'N';
35669       END IF;
35670    EXCEPTION
35671       WHEN OTHERS THEN
35672          l_acc_rev_flag := 'N';
35673    END;
35674    --
35675    IF (l_acc_rev_flag = 'Y') THEN
35676 
35677        -- 4645092  ------------------------------------------------------------------------------
35678        -- To allow MPA report to determine if it should generate report process
35679        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35680        ------------------------------------------------------------------------------------------
35681 
35682        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35683        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35684    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35685    -- call ADRs
35686    -- Bug 4922099
35687    --
35688    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35689         (NVL(l_actual_upg_option, 'N') = 'O') OR
35690         (NVL(l_enc_upg_option, 'N') = 'O')
35691       )
35692    THEN
35693    NULL;
35694    --
35695    --
35696    
35697   l_ccid := AcctDerRule_6(
35698            p_application_id           => p_application_id
35699          , p_ae_header_id             => l_ae_header_id 
35700 , p_source_11 => p_source_11
35701          , x_transaction_coa_id       => l_adr_transaction_coa_id
35702          , x_accounting_coa_id        => l_adr_accounting_coa_id
35703          , x_value_type_code          => l_adr_value_type_code
35704          , p_side                     => 'NA'
35705    );
35706 
35707    xla_ae_lines_pkg.set_ccid(
35708     p_code_combination_id          => l_ccid
35709   , p_value_type_code              => l_adr_value_type_code
35710   , p_transaction_coa_id           => l_adr_transaction_coa_id
35711   , p_accounting_coa_id            => l_adr_accounting_coa_id
35712   , p_adr_code                     => 'CST_DEFAULT'
35713   , p_adr_type_code                => 'S'
35714   , p_component_type               => l_component_type
35715   , p_component_code               => l_component_code
35716   , p_component_type_code          => l_component_type_code
35717   , p_component_appl_id            => l_component_appl_id
35718   , p_amb_context_code             => l_amb_context_code
35719   , p_side                         => 'NA'
35720   );
35721 
35722 
35723    --
35724    --
35725    END IF;
35726 
35727        --
35728        -- Update the line information that should be overwritten
35729        --
35730        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35731                                          p_header_num   => 1);
35732        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35733 
35734        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35735 
35736        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35737           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35738        END IF;
35739 
35740       --
35741       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35742       --
35743       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35744           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35745       ELSE
35746           ---------------------------------------------------------------------------------------------------
35747           -- 4262811a Switch Sign
35748           ---------------------------------------------------------------------------------------------------
35749           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35750           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35751                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35752           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35753                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35754           -- 5132302
35755           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35756                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35757 
35758       END IF;
35759 
35760       -- 4955764
35761       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35763 
35764 
35765       XLA_AE_LINES_PKG.ValidateCurrentLine;
35766       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35767 
35768       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35769                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35770                ,p_balance_type_code => l_balance_type_code);
35771 
35772    END IF;
35773 
35774    -----------------------------------------------------------------------------------------
35775    -- 4262811 Multiperiod Accounting
35776    -----------------------------------------------------------------------------------------
35777      -- No MPA option is assigned.
35778 
35779 
35780 END IF;
35781 END IF;
35782 --
35783 
35784 --
35785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35786    trace
35787       (p_msg      => 'END of AcctLineType_88'
35788       ,p_level    => C_LEVEL_PROCEDURE
35789       ,p_module   => l_log_module);
35790 END IF;
35791 --
35792 EXCEPTION
35793   WHEN xla_exceptions_pkg.application_exception THEN
35794       RAISE;
35795   WHEN OTHERS THEN
35796        xla_exceptions_pkg.raise_message
35797            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_88');
35798 END AcctLineType_88;
35799 --
35800 
35801 ---------------------------------------
35802 --
35803 -- PRIVATE FUNCTION
35804 --         AcctLineType_89
35805 --
35806 ---------------------------------------
35807 PROCEDURE AcctLineType_89 (
35808   p_application_id        IN NUMBER
35809  ,p_event_id              IN NUMBER
35810  ,p_calculate_acctd_flag  IN VARCHAR2
35811  ,p_calculate_g_l_flag    IN VARCHAR2
35812  ,p_actual_flag           IN OUT VARCHAR2
35813  ,p_balance_type_code     OUT VARCHAR2
35814  ,p_gain_or_loss_ref      OUT VARCHAR2
35815  
35816 --TRANSACTION_ID
35817  , p_source_1            IN NUMBER
35818 --Item Concatenated Segments
35819  , p_source_2            IN VARCHAR2
35820 --Transaction Quantity
35821  , p_source_3            IN NUMBER
35822 --Transaction Unit of Measure Code
35823  , p_source_4            IN VARCHAR2
35824 --Inventory Transaction Type Description
35825  , p_source_5            IN VARCHAR2
35826 --Inventory Organization Average Cost Variance Account
35827  , p_source_21            IN NUMBER
35828 --DISTRIBUTION_IDENTIFIER
35829  , p_source_84            IN NUMBER
35830 --Distribution Type
35831  , p_source_85            IN VARCHAR2
35832  , p_source_85_meaning    IN VARCHAR2
35833 --Entered Currency Code
35834  , p_source_88            IN VARCHAR2
35835 --Entered Amount
35836  , p_source_91            IN NUMBER
35837 --Currency Conversion Date
35838  , p_source_92            IN DATE
35839 --Currency Conversion Rate
35840  , p_source_93            IN NUMBER
35841 --Currency Conversion Type
35842  , p_source_94            IN VARCHAR2
35843 --Accounted Amount
35844  , p_source_95            IN NUMBER
35845 --Accounting Line Type
35846  , p_source_97            IN NUMBER
35847 )
35848 IS
35849 
35850 l_component_type              VARCHAR2(80);
35851 l_component_code              VARCHAR2(30);
35852 l_component_type_code         VARCHAR2(1);
35853 l_component_appl_id           INTEGER;
35854 l_amb_context_code            VARCHAR2(30);
35855 l_entity_code                 VARCHAR2(30);
35856 l_event_class_code            VARCHAR2(30);
35857 l_ae_header_id                NUMBER;
35858 l_event_type_code             VARCHAR2(30);
35859 l_line_definition_code        VARCHAR2(30);
35860 l_line_definition_owner_code  VARCHAR2(1);
35861 --
35862 -- adr variables
35863 l_segment                     VARCHAR2(30);
35864 l_ccid                        NUMBER;
35865 l_adr_transaction_coa_id      NUMBER;
35866 l_adr_accounting_coa_id       NUMBER;
35867 l_adr_flexfield_segment_code  VARCHAR2(30);
35868 l_adr_flex_value_set_id       NUMBER;
35869 l_adr_value_type_code         VARCHAR2(30);
35870 l_adr_value_combination_id    NUMBER;
35871 l_adr_value_segment_code      VARCHAR2(30);
35872 
35873 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35874 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35875 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35876 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35877 
35878 -- 4262811 Variables ------------------------------------------------------------------------------------------
35879 l_entered_amt_idx             NUMBER;
35880 l_accted_amt_idx              NUMBER;
35881 l_acc_rev_flag                VARCHAR2(1);
35882 l_accrual_line_num            NUMBER;
35883 l_tmp_amt                     NUMBER;
35884 l_acc_rev_natural_side_code   VARCHAR2(1);
35885 
35886 l_num_entries                 NUMBER;
35887 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35888 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35889 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35890 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35891 l_recog_line_1                NUMBER;
35892 l_recog_line_2                NUMBER;
35893 
35894 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35895 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35896 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35897 
35898 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35899 
35900 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35901 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35902 
35903 ---------------------------------------------------------------------------------------------------------------
35904 
35905 
35906 --
35907 -- bulk performance
35908 --
35909 l_balance_type_code           VARCHAR2(1);
35910 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35911 l_log_module                  VARCHAR2(240);
35912 
35913 --
35914 -- Upgrade strategy
35915 --
35916 l_actual_upg_option           VARCHAR2(1);
35917 l_enc_upg_option           VARCHAR2(1);
35918 
35919 --
35920 BEGIN
35921 --
35922 IF g_log_enabled THEN
35923       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
35924 END IF;
35925 --
35926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35927 
35928       trace
35929          (p_msg      => 'BEGIN of AcctLineType_89'
35930          ,p_level    => C_LEVEL_PROCEDURE
35931          ,p_module   => l_log_module);
35932 
35933 END IF;
35934 --
35935 l_component_type             := 'AMB_JLT';
35936 l_component_code             := 'COST_VARIANCE';
35937 l_component_type_code        := 'S';
35938 l_component_appl_id          :=  707;
35939 l_amb_context_code           := 'DEFAULT';
35940 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
35941 l_event_class_code           := 'WIP_MTL';
35942 l_event_type_code            := 'WIP_ASSEMBLY_COMPLETION';
35943 l_line_definition_owner_code := 'S';
35944 l_line_definition_code       := 'PI_WIP_ASSEMBLY_COMPLETION';
35945 --
35946 l_balance_type_code          := 'A';
35947 l_segment                     := NULL;
35948 l_ccid                        := NULL;
35949 l_adr_transaction_coa_id      := NULL;
35950 l_adr_accounting_coa_id       := NULL;
35951 l_adr_flexfield_segment_code  := NULL;
35952 l_adr_flex_value_set_id       := NULL;
35953 l_adr_value_type_code         := NULL;
35954 l_adr_value_combination_id    := NULL;
35955 l_adr_value_segment_code      := NULL;
35956 
35957 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35958 l_bflow_class_code           := '';    -- 4219869 Business Flow
35959 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35960 l_budgetary_control_flag     := 'N';
35961 
35962 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35963 l_bflow_applied_to_amt       := NULL; -- 5132302
35964 l_entered_amt_idx            := NULL;          -- 4262811
35965 l_accted_amt_idx             := NULL;          -- 4262811
35966 l_acc_rev_flag               := NULL;          -- 4262811
35967 l_accrual_line_num           := NULL;          -- 4262811
35968 l_tmp_amt                    := NULL;          -- 4262811
35969 --
35970  
35971 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35972     l_balance_type_code <> 'B' THEN
35973 IF NVL(p_source_97,9E125) =  13
35974  THEN 
35975 
35976    --
35977    XLA_AE_LINES_PKG.SetNewLine;
35978 
35979    p_balance_type_code          := l_balance_type_code;
35980    -- set the flag so later we will know whether the gain loss line needs to be created
35981    
35982    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35983      p_actual_flag :='A';
35984    END IF;
35985 
35986    --
35987    -- bulk performance
35988    --
35989    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35990                                       p_header_num   => 0); -- 4262811
35991    --
35992    -- set accounting line options
35993    --
35994    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35995            p_natural_side_code          => 'D'
35996          , p_gain_or_loss_flag          => 'N'
35997          , p_gl_transfer_mode_code      => 'S'
35998          , p_acct_entry_type_code       => 'A'
35999          , p_switch_side_flag           => 'Y'
36000          , p_merge_duplicate_code       => 'N'
36001          );
36002    --
36003    l_acc_rev_natural_side_code := 'C';  -- 4262811
36004    -- 
36005    --
36006    -- set accounting line type info
36007    --
36008    xla_ae_lines_pkg.SetAcctLineType
36009       (p_component_type             => l_component_type
36010       ,p_event_type_code            => l_event_type_code
36011       ,p_line_definition_owner_code => l_line_definition_owner_code
36012       ,p_line_definition_code       => l_line_definition_code
36013       ,p_accounting_line_code       => l_component_code
36014       ,p_accounting_line_type_code  => l_component_type_code
36015       ,p_accounting_line_appl_id    => l_component_appl_id
36016       ,p_amb_context_code           => l_amb_context_code
36017       ,p_entity_code                => l_entity_code
36018       ,p_event_class_code           => l_event_class_code);
36019    --
36020    -- set accounting class
36021    --
36022    xla_ae_lines_pkg.SetAcctClass(
36023            p_accounting_class_code  => 'COST_VARIANCE'
36024          , p_ae_header_id           => l_ae_header_id
36025          );
36026 
36027    --
36028    -- set rounding class
36029    --
36030    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36031                       'COST_VARIANCE';
36032 
36033    --
36034    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36035    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36036    --
36037    -- bulk performance
36038    --
36039    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36040 
36041    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36042       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36043 
36044    -- 4955764
36045    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36046       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36047 
36048    -- 4458381 Public Sector Enh
36049    
36050    --
36051    -- set accounting attributes for the line type
36052    --
36053    l_entered_amt_idx := 3;
36054    l_accted_amt_idx  := 8;
36055    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36056    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36057    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
36058    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36059    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
36060    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36061    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
36062    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36063    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
36064    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36065    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
36066    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36067    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
36068    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36069    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
36070    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36071    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
36072 
36073    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36074    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36075 
36076    ---------------------------------------------------------------------------------------------------------------
36077    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36078    ---------------------------------------------------------------------------------------------------------------
36079    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36080 
36081    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36082    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36083 
36084    IF xla_accounting_cache_pkg.GetValueChar
36085          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36086          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36087    AND l_bflow_method_code = 'PRIOR_ENTRY'
36088 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36089    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36090          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36091        )
36092    THEN
36093          xla_ae_lines_pkg.BflowUpgEntry
36094            (p_business_method_code    => l_bflow_method_code
36095            ,p_business_class_code     => l_bflow_class_code
36096            ,p_balance_type            => l_balance_type_code);
36097    ELSE
36098       NULL;
36099 -- No business flow processing for business flow method of NONE.
36100    END IF;
36101 
36102    --
36103    -- call analytical criteria
36104    --
36105    
36106    --
36107    -- call description
36108    --
36109    
36110 xla_ae_lines_pkg.SetLineDescription(
36111    p_ae_header_id => l_ae_header_id
36112   ,p_description  => Description_1 (
36113      p_application_id         => p_application_id
36114    , p_ae_header_id           => l_ae_header_id 
36115 , p_source_1 => p_source_1
36116 , p_source_2 => p_source_2
36117 , p_source_3 => p_source_3
36118 , p_source_4 => p_source_4
36119 , p_source_5 => p_source_5
36120    )
36121 );
36122 
36123 
36124    --
36125    -- call ADRs
36126    -- Bug 4922099
36127    --
36128    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36129         (NVL(l_actual_upg_option, 'N') = 'O') OR
36130         (NVL(l_enc_upg_option, 'N') = 'O')
36131       )
36132    THEN
36133    NULL;
36134    --
36135    --
36136    
36137   l_ccid := AcctDerRule_10(
36138            p_application_id           => p_application_id
36139          , p_ae_header_id             => l_ae_header_id 
36140 , p_source_21 => p_source_21
36141          , x_transaction_coa_id       => l_adr_transaction_coa_id
36142          , x_accounting_coa_id        => l_adr_accounting_coa_id
36143          , x_value_type_code          => l_adr_value_type_code
36144          , p_side                     => 'NA'
36145    );
36146 
36147    xla_ae_lines_pkg.set_ccid(
36148     p_code_combination_id          => l_ccid
36149   , p_value_type_code              => l_adr_value_type_code
36150   , p_transaction_coa_id           => l_adr_transaction_coa_id
36151   , p_accounting_coa_id            => l_adr_accounting_coa_id
36152   , p_adr_code                     => 'PI_AVG_CST_VARIANCE'
36153   , p_adr_type_code                => 'S'
36154   , p_component_type               => l_component_type
36155   , p_component_code               => l_component_code
36156   , p_component_type_code          => l_component_type_code
36157   , p_component_appl_id            => l_component_appl_id
36158   , p_amb_context_code             => l_amb_context_code
36159   , p_side                         => 'NA'
36160   );
36161 
36162 
36163    --
36164    --
36165    END IF;
36166    --
36167    -- Bug 4922099
36168    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36169           (NVL(l_enc_upg_option, 'N') = 'O')
36170         ) AND
36171         (l_bflow_method_code = 'PRIOR_ENTRY')
36172       )
36173    THEN
36174       IF
36175       --
36176       1 = 2
36177       --
36178       THEN
36179       xla_accounting_err_pkg.build_message
36180                                     (p_appli_s_name            => 'XLA'
36181                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36182                                     ,p_token_1                 => 'LINE_NUMBER'
36183                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36184                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36185                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36186                                                                              l_component_type
36187                                                                             ,l_component_code
36188                                                                             ,l_component_type_code
36189                                                                             ,l_component_appl_id
36190                                                                             ,l_amb_context_code
36191                                                                             ,l_entity_code
36192                                                                             ,l_event_class_code
36193                                                                            )
36194                                     ,p_token_3                 => 'OWNER'
36195                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36196                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36197                                                                           ,p_lookup_code    => l_component_type_code
36198                                                                          )
36199                                     ,p_token_4                 => 'PRODUCT_NAME'
36200                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36201                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36202                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36203                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36204                                     ,p_ae_header_id            =>  NULL
36205                                        );
36206 
36207         IF (C_LEVEL_ERROR>= g_log_level) THEN
36208                  trace
36209                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36210                       ,p_level    => C_LEVEL_ERROR
36211                       ,p_module   => l_log_module);
36212         END IF;
36213       END IF;
36214    END IF;
36215    --
36216    --
36217    ------------------------------------------------------------------------------------------------
36218    -- 4219869 Business Flow
36219    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36220    -- Prior Entry.  Currently, the following code is always generated.
36221    ------------------------------------------------------------------------------------------------
36222    XLA_AE_LINES_PKG.ValidateCurrentLine;
36223 
36224    ------------------------------------------------------------------------------------
36225    -- 4219869 Business Flow
36226    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36227    ------------------------------------------------------------------------------------
36228    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36229 
36230    ----------------------------------------------------------------------------------
36231    -- 4219869 Business Flow
36232    -- Update journal entry status -- Need to generate this within IF <condition>
36233    ----------------------------------------------------------------------------------
36234    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36235          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36236          ,p_balance_type_code => l_balance_type_code
36237          );
36238 
36239    -------------------------------------------------------------------------------------------
36240    -- 4262811 - Generate the Accrual Reversal lines
36241    -------------------------------------------------------------------------------------------
36242    BEGIN
36243       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36244                               (g_array_event(p_event_id).array_value_num('header_index'));
36245       IF l_acc_rev_flag IS NULL THEN
36246          l_acc_rev_flag := 'N';
36247       END IF;
36248    EXCEPTION
36249       WHEN OTHERS THEN
36250          l_acc_rev_flag := 'N';
36251    END;
36252    --
36253    IF (l_acc_rev_flag = 'Y') THEN
36254 
36255        -- 4645092  ------------------------------------------------------------------------------
36256        -- To allow MPA report to determine if it should generate report process
36257        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36258        ------------------------------------------------------------------------------------------
36259 
36260        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36261        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36262    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36263    -- call ADRs
36264    -- Bug 4922099
36265    --
36266    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36267         (NVL(l_actual_upg_option, 'N') = 'O') OR
36268         (NVL(l_enc_upg_option, 'N') = 'O')
36269       )
36270    THEN
36271    NULL;
36272    --
36273    --
36274    
36275   l_ccid := AcctDerRule_10(
36276            p_application_id           => p_application_id
36277          , p_ae_header_id             => l_ae_header_id 
36278 , p_source_21 => p_source_21
36279          , x_transaction_coa_id       => l_adr_transaction_coa_id
36280          , x_accounting_coa_id        => l_adr_accounting_coa_id
36281          , x_value_type_code          => l_adr_value_type_code
36282          , p_side                     => 'NA'
36283    );
36284 
36285    xla_ae_lines_pkg.set_ccid(
36286     p_code_combination_id          => l_ccid
36287   , p_value_type_code              => l_adr_value_type_code
36288   , p_transaction_coa_id           => l_adr_transaction_coa_id
36289   , p_accounting_coa_id            => l_adr_accounting_coa_id
36290   , p_adr_code                     => 'PI_AVG_CST_VARIANCE'
36291   , p_adr_type_code                => 'S'
36292   , p_component_type               => l_component_type
36293   , p_component_code               => l_component_code
36294   , p_component_type_code          => l_component_type_code
36295   , p_component_appl_id            => l_component_appl_id
36296   , p_amb_context_code             => l_amb_context_code
36297   , p_side                         => 'NA'
36298   );
36299 
36300 
36301    --
36302    --
36303    END IF;
36304 
36305        --
36306        -- Update the line information that should be overwritten
36307        --
36308        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36309                                          p_header_num   => 1);
36310        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36311 
36312        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36313 
36314        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36315           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36316        END IF;
36317 
36318       --
36319       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36320       --
36321       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36322           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36323       ELSE
36324           ---------------------------------------------------------------------------------------------------
36325           -- 4262811a Switch Sign
36326           ---------------------------------------------------------------------------------------------------
36327           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36328           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36329                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36330           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36331                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36332           -- 5132302
36333           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36334                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36335 
36336       END IF;
36337 
36338       -- 4955764
36339       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36340       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36341 
36342 
36343       XLA_AE_LINES_PKG.ValidateCurrentLine;
36344       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36345 
36346       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36347                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36348                ,p_balance_type_code => l_balance_type_code);
36349 
36350    END IF;
36351 
36352    -----------------------------------------------------------------------------------------
36353    -- 4262811 Multiperiod Accounting
36354    -----------------------------------------------------------------------------------------
36355      -- No MPA option is assigned.
36356 
36357 
36358 END IF;
36359 END IF;
36360 --
36361 
36362 --
36363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36364    trace
36365       (p_msg      => 'END of AcctLineType_89'
36366       ,p_level    => C_LEVEL_PROCEDURE
36367       ,p_module   => l_log_module);
36368 END IF;
36369 --
36370 EXCEPTION
36371   WHEN xla_exceptions_pkg.application_exception THEN
36372       RAISE;
36373   WHEN OTHERS THEN
36374        xla_exceptions_pkg.raise_message
36375            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_89');
36376 END AcctLineType_89;
36377 --
36378 
36379 ---------------------------------------
36380 --
36381 -- PRIVATE FUNCTION
36382 --         AcctLineType_90
36383 --
36384 ---------------------------------------
36385 PROCEDURE AcctLineType_90 (
36386   p_application_id        IN NUMBER
36387  ,p_event_id              IN NUMBER
36388  ,p_calculate_acctd_flag  IN VARCHAR2
36389  ,p_calculate_g_l_flag    IN VARCHAR2
36390  ,p_actual_flag           IN OUT VARCHAR2
36391  ,p_balance_type_code     OUT VARCHAR2
36392  ,p_gain_or_loss_ref      OUT VARCHAR2
36393  
36394 --TRANSACTION_ID
36395  , p_source_1            IN NUMBER
36396 --Item Concatenated Segments
36397  , p_source_2            IN VARCHAR2
36398 --Transaction Quantity
36399  , p_source_3            IN NUMBER
36400 --Transaction Unit of Measure Code
36401  , p_source_4            IN VARCHAR2
36402 --Inventory Transaction Type Description
36403  , p_source_5            IN VARCHAR2
36404 --Cost Management Default Account
36405  , p_source_11            IN NUMBER
36406 --DISTRIBUTION_IDENTIFIER
36407  , p_source_84            IN NUMBER
36408 --Distribution Type
36409  , p_source_85            IN VARCHAR2
36410  , p_source_85_meaning    IN VARCHAR2
36411 --Entered Currency Code
36412  , p_source_88            IN VARCHAR2
36413 --Entered Amount
36414  , p_source_91            IN NUMBER
36415 --Currency Conversion Date
36416  , p_source_92            IN DATE
36417 --Currency Conversion Rate
36418  , p_source_93            IN NUMBER
36419 --Currency Conversion Type
36420  , p_source_94            IN VARCHAR2
36421 --Accounted Amount
36422  , p_source_95            IN NUMBER
36423 --Accounting Line Type
36424  , p_source_97            IN NUMBER
36425 )
36426 IS
36427 
36428 l_component_type              VARCHAR2(80);
36429 l_component_code              VARCHAR2(30);
36430 l_component_type_code         VARCHAR2(1);
36431 l_component_appl_id           INTEGER;
36432 l_amb_context_code            VARCHAR2(30);
36433 l_entity_code                 VARCHAR2(30);
36434 l_event_class_code            VARCHAR2(30);
36435 l_ae_header_id                NUMBER;
36436 l_event_type_code             VARCHAR2(30);
36437 l_line_definition_code        VARCHAR2(30);
36438 l_line_definition_owner_code  VARCHAR2(1);
36439 --
36440 -- adr variables
36441 l_segment                     VARCHAR2(30);
36442 l_ccid                        NUMBER;
36443 l_adr_transaction_coa_id      NUMBER;
36444 l_adr_accounting_coa_id       NUMBER;
36445 l_adr_flexfield_segment_code  VARCHAR2(30);
36446 l_adr_flex_value_set_id       NUMBER;
36447 l_adr_value_type_code         VARCHAR2(30);
36448 l_adr_value_combination_id    NUMBER;
36449 l_adr_value_segment_code      VARCHAR2(30);
36450 
36451 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36452 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36453 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36454 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36455 
36456 -- 4262811 Variables ------------------------------------------------------------------------------------------
36457 l_entered_amt_idx             NUMBER;
36458 l_accted_amt_idx              NUMBER;
36459 l_acc_rev_flag                VARCHAR2(1);
36460 l_accrual_line_num            NUMBER;
36461 l_tmp_amt                     NUMBER;
36462 l_acc_rev_natural_side_code   VARCHAR2(1);
36463 
36464 l_num_entries                 NUMBER;
36465 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36466 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36467 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36468 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36469 l_recog_line_1                NUMBER;
36470 l_recog_line_2                NUMBER;
36471 
36472 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36473 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36474 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36475 
36476 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36477 
36478 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36479 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36480 
36481 ---------------------------------------------------------------------------------------------------------------
36482 
36483 
36484 --
36485 -- bulk performance
36486 --
36487 l_balance_type_code           VARCHAR2(1);
36488 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36489 l_log_module                  VARCHAR2(240);
36490 
36491 --
36492 -- Upgrade strategy
36493 --
36494 l_actual_upg_option           VARCHAR2(1);
36495 l_enc_upg_option           VARCHAR2(1);
36496 
36497 --
36498 BEGIN
36499 --
36500 IF g_log_enabled THEN
36501       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
36502 END IF;
36503 --
36504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36505 
36506       trace
36507          (p_msg      => 'BEGIN of AcctLineType_90'
36508          ,p_level    => C_LEVEL_PROCEDURE
36509          ,p_module   => l_log_module);
36510 
36511 END IF;
36512 --
36513 l_component_type             := 'AMB_JLT';
36514 l_component_code             := 'COST_VARIANCE';
36515 l_component_type_code        := 'S';
36516 l_component_appl_id          :=  707;
36517 l_amb_context_code           := 'DEFAULT';
36518 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
36519 l_event_class_code           := 'WIP_MTL';
36520 l_event_type_code            := 'WIP_COMP_ISSUE';
36521 l_line_definition_owner_code := 'S';
36522 l_line_definition_code       := 'PI_WIP_COMP_ISSUE';
36523 --
36524 l_balance_type_code          := 'A';
36525 l_segment                     := NULL;
36526 l_ccid                        := NULL;
36527 l_adr_transaction_coa_id      := NULL;
36528 l_adr_accounting_coa_id       := NULL;
36529 l_adr_flexfield_segment_code  := NULL;
36530 l_adr_flex_value_set_id       := NULL;
36531 l_adr_value_type_code         := NULL;
36532 l_adr_value_combination_id    := NULL;
36533 l_adr_value_segment_code      := NULL;
36534 
36535 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36536 l_bflow_class_code           := '';    -- 4219869 Business Flow
36537 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36538 l_budgetary_control_flag     := 'N';
36539 
36540 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36541 l_bflow_applied_to_amt       := NULL; -- 5132302
36542 l_entered_amt_idx            := NULL;          -- 4262811
36543 l_accted_amt_idx             := NULL;          -- 4262811
36544 l_acc_rev_flag               := NULL;          -- 4262811
36545 l_accrual_line_num           := NULL;          -- 4262811
36546 l_tmp_amt                    := NULL;          -- 4262811
36547 --
36548  
36549 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36550     l_balance_type_code <> 'B' THEN
36551 IF NVL(p_source_97,9E125) =  13
36552  THEN 
36553 
36554    --
36555    XLA_AE_LINES_PKG.SetNewLine;
36556 
36557    p_balance_type_code          := l_balance_type_code;
36558    -- set the flag so later we will know whether the gain loss line needs to be created
36559    
36560    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36561      p_actual_flag :='A';
36562    END IF;
36563 
36564    --
36565    -- bulk performance
36566    --
36567    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36568                                       p_header_num   => 0); -- 4262811
36569    --
36570    -- set accounting line options
36571    --
36572    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36573            p_natural_side_code          => 'D'
36574          , p_gain_or_loss_flag          => 'N'
36575          , p_gl_transfer_mode_code      => 'S'
36576          , p_acct_entry_type_code       => 'A'
36577          , p_switch_side_flag           => 'Y'
36578          , p_merge_duplicate_code       => 'N'
36579          );
36580    --
36581    l_acc_rev_natural_side_code := 'C';  -- 4262811
36582    -- 
36583    --
36584    -- set accounting line type info
36585    --
36586    xla_ae_lines_pkg.SetAcctLineType
36587       (p_component_type             => l_component_type
36588       ,p_event_type_code            => l_event_type_code
36589       ,p_line_definition_owner_code => l_line_definition_owner_code
36590       ,p_line_definition_code       => l_line_definition_code
36591       ,p_accounting_line_code       => l_component_code
36592       ,p_accounting_line_type_code  => l_component_type_code
36593       ,p_accounting_line_appl_id    => l_component_appl_id
36594       ,p_amb_context_code           => l_amb_context_code
36595       ,p_entity_code                => l_entity_code
36596       ,p_event_class_code           => l_event_class_code);
36597    --
36598    -- set accounting class
36599    --
36600    xla_ae_lines_pkg.SetAcctClass(
36601            p_accounting_class_code  => 'COST_VARIANCE'
36602          , p_ae_header_id           => l_ae_header_id
36603          );
36604 
36605    --
36606    -- set rounding class
36607    --
36608    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36609                       'COST_VARIANCE';
36610 
36611    --
36612    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36613    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36614    --
36615    -- bulk performance
36616    --
36617    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36618 
36619    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36620       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36621 
36622    -- 4955764
36623    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36624       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36625 
36626    -- 4458381 Public Sector Enh
36627    
36628    --
36629    -- set accounting attributes for the line type
36630    --
36631    l_entered_amt_idx := 3;
36632    l_accted_amt_idx  := 8;
36633    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36634    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36635    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
36636    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36637    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
36638    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36639    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
36640    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36641    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
36642    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36643    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
36644    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36645    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
36646    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36647    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
36648    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36649    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
36650 
36651    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36652    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36653 
36654    ---------------------------------------------------------------------------------------------------------------
36655    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36656    ---------------------------------------------------------------------------------------------------------------
36657    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36658 
36659    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36660    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36661 
36662    IF xla_accounting_cache_pkg.GetValueChar
36663          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36664          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36665    AND l_bflow_method_code = 'PRIOR_ENTRY'
36666 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36667    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36668          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36669        )
36670    THEN
36671          xla_ae_lines_pkg.BflowUpgEntry
36672            (p_business_method_code    => l_bflow_method_code
36673            ,p_business_class_code     => l_bflow_class_code
36674            ,p_balance_type            => l_balance_type_code);
36675    ELSE
36676       NULL;
36677 -- No business flow processing for business flow method of NONE.
36678    END IF;
36679 
36680    --
36681    -- call analytical criteria
36682    --
36683    
36684    --
36685    -- call description
36686    --
36687    
36688 xla_ae_lines_pkg.SetLineDescription(
36689    p_ae_header_id => l_ae_header_id
36690   ,p_description  => Description_1 (
36691      p_application_id         => p_application_id
36692    , p_ae_header_id           => l_ae_header_id 
36693 , p_source_1 => p_source_1
36694 , p_source_2 => p_source_2
36695 , p_source_3 => p_source_3
36696 , p_source_4 => p_source_4
36697 , p_source_5 => p_source_5
36698    )
36699 );
36700 
36701 
36702    --
36703    -- call ADRs
36704    -- Bug 4922099
36705    --
36706    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36707         (NVL(l_actual_upg_option, 'N') = 'O') OR
36708         (NVL(l_enc_upg_option, 'N') = 'O')
36709       )
36710    THEN
36711    NULL;
36712    --
36713    --
36714    
36715   l_ccid := AcctDerRule_6(
36716            p_application_id           => p_application_id
36717          , p_ae_header_id             => l_ae_header_id 
36718 , p_source_11 => p_source_11
36719          , x_transaction_coa_id       => l_adr_transaction_coa_id
36720          , x_accounting_coa_id        => l_adr_accounting_coa_id
36721          , x_value_type_code          => l_adr_value_type_code
36722          , p_side                     => 'NA'
36723    );
36724 
36725    xla_ae_lines_pkg.set_ccid(
36726     p_code_combination_id          => l_ccid
36727   , p_value_type_code              => l_adr_value_type_code
36728   , p_transaction_coa_id           => l_adr_transaction_coa_id
36729   , p_accounting_coa_id            => l_adr_accounting_coa_id
36730   , p_adr_code                     => 'CST_DEFAULT'
36731   , p_adr_type_code                => 'S'
36732   , p_component_type               => l_component_type
36733   , p_component_code               => l_component_code
36734   , p_component_type_code          => l_component_type_code
36735   , p_component_appl_id            => l_component_appl_id
36736   , p_amb_context_code             => l_amb_context_code
36737   , p_side                         => 'NA'
36738   );
36739 
36740 
36741    --
36742    --
36743    END IF;
36744    --
36745    -- Bug 4922099
36746    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36747           (NVL(l_enc_upg_option, 'N') = 'O')
36748         ) AND
36749         (l_bflow_method_code = 'PRIOR_ENTRY')
36750       )
36751    THEN
36752       IF
36753       --
36754       1 = 2
36755       --
36756       THEN
36757       xla_accounting_err_pkg.build_message
36758                                     (p_appli_s_name            => 'XLA'
36759                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36760                                     ,p_token_1                 => 'LINE_NUMBER'
36761                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36762                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36763                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36764                                                                              l_component_type
36765                                                                             ,l_component_code
36766                                                                             ,l_component_type_code
36767                                                                             ,l_component_appl_id
36768                                                                             ,l_amb_context_code
36769                                                                             ,l_entity_code
36770                                                                             ,l_event_class_code
36771                                                                            )
36772                                     ,p_token_3                 => 'OWNER'
36773                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36774                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36775                                                                           ,p_lookup_code    => l_component_type_code
36776                                                                          )
36777                                     ,p_token_4                 => 'PRODUCT_NAME'
36778                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36779                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36780                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36781                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36782                                     ,p_ae_header_id            =>  NULL
36783                                        );
36784 
36785         IF (C_LEVEL_ERROR>= g_log_level) THEN
36786                  trace
36787                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36788                       ,p_level    => C_LEVEL_ERROR
36789                       ,p_module   => l_log_module);
36790         END IF;
36791       END IF;
36792    END IF;
36793    --
36794    --
36795    ------------------------------------------------------------------------------------------------
36796    -- 4219869 Business Flow
36797    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36798    -- Prior Entry.  Currently, the following code is always generated.
36799    ------------------------------------------------------------------------------------------------
36800    XLA_AE_LINES_PKG.ValidateCurrentLine;
36801 
36802    ------------------------------------------------------------------------------------
36803    -- 4219869 Business Flow
36804    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36805    ------------------------------------------------------------------------------------
36806    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36807 
36808    ----------------------------------------------------------------------------------
36809    -- 4219869 Business Flow
36810    -- Update journal entry status -- Need to generate this within IF <condition>
36811    ----------------------------------------------------------------------------------
36812    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36813          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36814          ,p_balance_type_code => l_balance_type_code
36815          );
36816 
36817    -------------------------------------------------------------------------------------------
36818    -- 4262811 - Generate the Accrual Reversal lines
36819    -------------------------------------------------------------------------------------------
36820    BEGIN
36821       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36822                               (g_array_event(p_event_id).array_value_num('header_index'));
36823       IF l_acc_rev_flag IS NULL THEN
36824          l_acc_rev_flag := 'N';
36825       END IF;
36826    EXCEPTION
36827       WHEN OTHERS THEN
36828          l_acc_rev_flag := 'N';
36829    END;
36830    --
36831    IF (l_acc_rev_flag = 'Y') THEN
36832 
36833        -- 4645092  ------------------------------------------------------------------------------
36834        -- To allow MPA report to determine if it should generate report process
36835        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36836        ------------------------------------------------------------------------------------------
36837 
36838        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36839        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36840    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36841    -- call ADRs
36842    -- Bug 4922099
36843    --
36844    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36845         (NVL(l_actual_upg_option, 'N') = 'O') OR
36846         (NVL(l_enc_upg_option, 'N') = 'O')
36847       )
36848    THEN
36849    NULL;
36850    --
36851    --
36852    
36853   l_ccid := AcctDerRule_6(
36854            p_application_id           => p_application_id
36855          , p_ae_header_id             => l_ae_header_id 
36856 , p_source_11 => p_source_11
36857          , x_transaction_coa_id       => l_adr_transaction_coa_id
36858          , x_accounting_coa_id        => l_adr_accounting_coa_id
36859          , x_value_type_code          => l_adr_value_type_code
36860          , p_side                     => 'NA'
36861    );
36862 
36863    xla_ae_lines_pkg.set_ccid(
36864     p_code_combination_id          => l_ccid
36865   , p_value_type_code              => l_adr_value_type_code
36866   , p_transaction_coa_id           => l_adr_transaction_coa_id
36867   , p_accounting_coa_id            => l_adr_accounting_coa_id
36868   , p_adr_code                     => 'CST_DEFAULT'
36869   , p_adr_type_code                => 'S'
36870   , p_component_type               => l_component_type
36871   , p_component_code               => l_component_code
36872   , p_component_type_code          => l_component_type_code
36873   , p_component_appl_id            => l_component_appl_id
36874   , p_amb_context_code             => l_amb_context_code
36875   , p_side                         => 'NA'
36876   );
36877 
36878 
36879    --
36880    --
36881    END IF;
36882 
36883        --
36884        -- Update the line information that should be overwritten
36885        --
36886        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36887                                          p_header_num   => 1);
36888        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36889 
36890        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36891 
36892        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36893           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36894        END IF;
36895 
36896       --
36897       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36898       --
36899       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36900           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36901       ELSE
36902           ---------------------------------------------------------------------------------------------------
36903           -- 4262811a Switch Sign
36904           ---------------------------------------------------------------------------------------------------
36905           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36906           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36907                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36908           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36909                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36910           -- 5132302
36911           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36912                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36913 
36914       END IF;
36915 
36916       -- 4955764
36917       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36918       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36919 
36920 
36921       XLA_AE_LINES_PKG.ValidateCurrentLine;
36922       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36923 
36924       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36925                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36926                ,p_balance_type_code => l_balance_type_code);
36927 
36928    END IF;
36929 
36930    -----------------------------------------------------------------------------------------
36931    -- 4262811 Multiperiod Accounting
36932    -----------------------------------------------------------------------------------------
36933      -- No MPA option is assigned.
36934 
36935 
36936 END IF;
36937 END IF;
36938 --
36939 
36940 --
36941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36942    trace
36943       (p_msg      => 'END of AcctLineType_90'
36944       ,p_level    => C_LEVEL_PROCEDURE
36945       ,p_module   => l_log_module);
36946 END IF;
36947 --
36948 EXCEPTION
36949   WHEN xla_exceptions_pkg.application_exception THEN
36950       RAISE;
36951   WHEN OTHERS THEN
36952        xla_exceptions_pkg.raise_message
36953            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_90');
36954 END AcctLineType_90;
36955 --
36956 
36957 ---------------------------------------
36958 --
36959 -- PRIVATE FUNCTION
36960 --         AcctLineType_91
36961 --
36962 ---------------------------------------
36963 PROCEDURE AcctLineType_91 (
36964   p_application_id        IN NUMBER
36965  ,p_event_id              IN NUMBER
36966  ,p_calculate_acctd_flag  IN VARCHAR2
36967  ,p_calculate_g_l_flag    IN VARCHAR2
36968  ,p_actual_flag           IN OUT VARCHAR2
36969  ,p_balance_type_code     OUT VARCHAR2
36970  ,p_gain_or_loss_ref      OUT VARCHAR2
36971  
36972 --TRANSACTION_ID
36973  , p_source_1            IN NUMBER
36974 --Item Concatenated Segments
36975  , p_source_2            IN VARCHAR2
36976 --Transaction Quantity
36977  , p_source_3            IN NUMBER
36978 --Transaction Unit of Measure Code
36979  , p_source_4            IN VARCHAR2
36980 --Inventory Transaction Type Description
36981  , p_source_5            IN VARCHAR2
36982 --Cost Management Default Account
36983  , p_source_11            IN NUMBER
36984 --DISTRIBUTION_IDENTIFIER
36985  , p_source_84            IN NUMBER
36986 --Distribution Type
36987  , p_source_85            IN VARCHAR2
36988  , p_source_85_meaning    IN VARCHAR2
36989 --Entered Currency Code
36990  , p_source_88            IN VARCHAR2
36991 --Entered Amount
36992  , p_source_91            IN NUMBER
36993 --Currency Conversion Date
36994  , p_source_92            IN DATE
36995 --Currency Conversion Rate
36996  , p_source_93            IN NUMBER
36997 --Currency Conversion Type
36998  , p_source_94            IN VARCHAR2
36999 --Accounted Amount
37000  , p_source_95            IN NUMBER
37001 --Accounting Line Type
37002  , p_source_97            IN NUMBER
37003 )
37004 IS
37005 
37006 l_component_type              VARCHAR2(80);
37007 l_component_code              VARCHAR2(30);
37008 l_component_type_code         VARCHAR2(1);
37009 l_component_appl_id           INTEGER;
37010 l_amb_context_code            VARCHAR2(30);
37011 l_entity_code                 VARCHAR2(30);
37012 l_event_class_code            VARCHAR2(30);
37013 l_ae_header_id                NUMBER;
37014 l_event_type_code             VARCHAR2(30);
37015 l_line_definition_code        VARCHAR2(30);
37016 l_line_definition_owner_code  VARCHAR2(1);
37017 --
37018 -- adr variables
37019 l_segment                     VARCHAR2(30);
37020 l_ccid                        NUMBER;
37021 l_adr_transaction_coa_id      NUMBER;
37022 l_adr_accounting_coa_id       NUMBER;
37023 l_adr_flexfield_segment_code  VARCHAR2(30);
37024 l_adr_flex_value_set_id       NUMBER;
37025 l_adr_value_type_code         VARCHAR2(30);
37026 l_adr_value_combination_id    NUMBER;
37027 l_adr_value_segment_code      VARCHAR2(30);
37028 
37029 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37030 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37031 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37032 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37033 
37034 -- 4262811 Variables ------------------------------------------------------------------------------------------
37035 l_entered_amt_idx             NUMBER;
37036 l_accted_amt_idx              NUMBER;
37037 l_acc_rev_flag                VARCHAR2(1);
37038 l_accrual_line_num            NUMBER;
37039 l_tmp_amt                     NUMBER;
37040 l_acc_rev_natural_side_code   VARCHAR2(1);
37041 
37042 l_num_entries                 NUMBER;
37043 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37044 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37045 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37046 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37047 l_recog_line_1                NUMBER;
37048 l_recog_line_2                NUMBER;
37049 
37050 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37051 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37052 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37053 
37054 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37055 
37056 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37057 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37058 
37059 ---------------------------------------------------------------------------------------------------------------
37060 
37061 
37062 --
37063 -- bulk performance
37064 --
37065 l_balance_type_code           VARCHAR2(1);
37066 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37067 l_log_module                  VARCHAR2(240);
37068 
37069 --
37070 -- Upgrade strategy
37071 --
37072 l_actual_upg_option           VARCHAR2(1);
37073 l_enc_upg_option           VARCHAR2(1);
37074 
37075 --
37076 BEGIN
37077 --
37078 IF g_log_enabled THEN
37079       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
37080 END IF;
37081 --
37082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37083 
37084       trace
37085          (p_msg      => 'BEGIN of AcctLineType_91'
37086          ,p_level    => C_LEVEL_PROCEDURE
37087          ,p_module   => l_log_module);
37088 
37089 END IF;
37090 --
37091 l_component_type             := 'AMB_JLT';
37092 l_component_code             := 'COST_VARIANCE';
37093 l_component_type_code        := 'S';
37094 l_component_appl_id          :=  707;
37095 l_amb_context_code           := 'DEFAULT';
37096 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
37097 l_event_class_code           := 'MTL_COST_UPD';
37098 l_event_type_code            := 'AVG_COST_UPD';
37099 l_line_definition_owner_code := 'S';
37100 l_line_definition_code       := 'PI_AVG_COST_UPD';
37101 --
37102 l_balance_type_code          := 'A';
37103 l_segment                     := NULL;
37104 l_ccid                        := NULL;
37105 l_adr_transaction_coa_id      := NULL;
37106 l_adr_accounting_coa_id       := NULL;
37107 l_adr_flexfield_segment_code  := NULL;
37108 l_adr_flex_value_set_id       := NULL;
37109 l_adr_value_type_code         := NULL;
37110 l_adr_value_combination_id    := NULL;
37111 l_adr_value_segment_code      := NULL;
37112 
37113 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37114 l_bflow_class_code           := '';    -- 4219869 Business Flow
37115 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37116 l_budgetary_control_flag     := 'N';
37117 
37118 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37119 l_bflow_applied_to_amt       := NULL; -- 5132302
37120 l_entered_amt_idx            := NULL;          -- 4262811
37121 l_accted_amt_idx             := NULL;          -- 4262811
37122 l_acc_rev_flag               := NULL;          -- 4262811
37123 l_accrual_line_num           := NULL;          -- 4262811
37124 l_tmp_amt                    := NULL;          -- 4262811
37125 --
37126  
37127 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37128     l_balance_type_code <> 'B' THEN
37129 IF NVL(p_source_97,9E125) =  13
37130  THEN 
37131 
37132    --
37133    XLA_AE_LINES_PKG.SetNewLine;
37134 
37135    p_balance_type_code          := l_balance_type_code;
37136    -- set the flag so later we will know whether the gain loss line needs to be created
37137    
37138    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37139      p_actual_flag :='A';
37140    END IF;
37141 
37142    --
37143    -- bulk performance
37144    --
37145    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37146                                       p_header_num   => 0); -- 4262811
37147    --
37148    -- set accounting line options
37149    --
37150    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37151            p_natural_side_code          => 'D'
37152          , p_gain_or_loss_flag          => 'N'
37153          , p_gl_transfer_mode_code      => 'S'
37154          , p_acct_entry_type_code       => 'A'
37155          , p_switch_side_flag           => 'Y'
37156          , p_merge_duplicate_code       => 'N'
37157          );
37158    --
37159    l_acc_rev_natural_side_code := 'C';  -- 4262811
37160    -- 
37161    --
37162    -- set accounting line type info
37163    --
37164    xla_ae_lines_pkg.SetAcctLineType
37165       (p_component_type             => l_component_type
37166       ,p_event_type_code            => l_event_type_code
37167       ,p_line_definition_owner_code => l_line_definition_owner_code
37168       ,p_line_definition_code       => l_line_definition_code
37169       ,p_accounting_line_code       => l_component_code
37170       ,p_accounting_line_type_code  => l_component_type_code
37171       ,p_accounting_line_appl_id    => l_component_appl_id
37172       ,p_amb_context_code           => l_amb_context_code
37173       ,p_entity_code                => l_entity_code
37174       ,p_event_class_code           => l_event_class_code);
37175    --
37176    -- set accounting class
37177    --
37178    xla_ae_lines_pkg.SetAcctClass(
37179            p_accounting_class_code  => 'COST_VARIANCE'
37180          , p_ae_header_id           => l_ae_header_id
37181          );
37182 
37183    --
37184    -- set rounding class
37185    --
37186    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37187                       'COST_VARIANCE';
37188 
37189    --
37190    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37191    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37192    --
37193    -- bulk performance
37194    --
37195    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37196 
37197    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37198       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37199 
37200    -- 4955764
37201    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37202       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37203 
37204    -- 4458381 Public Sector Enh
37205    
37206    --
37207    -- set accounting attributes for the line type
37208    --
37209    l_entered_amt_idx := 3;
37210    l_accted_amt_idx  := 8;
37211    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37212    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37213    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
37214    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37215    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
37216    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37217    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
37218    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37219    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
37220    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37221    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
37222    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37223    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
37224    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37225    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
37226    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37227    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
37228 
37229    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37230    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37231 
37232    ---------------------------------------------------------------------------------------------------------------
37233    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37234    ---------------------------------------------------------------------------------------------------------------
37235    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37236 
37237    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37238    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37239 
37240    IF xla_accounting_cache_pkg.GetValueChar
37241          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37242          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37243    AND l_bflow_method_code = 'PRIOR_ENTRY'
37244 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37245    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37246          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37247        )
37248    THEN
37249          xla_ae_lines_pkg.BflowUpgEntry
37250            (p_business_method_code    => l_bflow_method_code
37251            ,p_business_class_code     => l_bflow_class_code
37252            ,p_balance_type            => l_balance_type_code);
37253    ELSE
37254       NULL;
37255 -- No business flow processing for business flow method of NONE.
37256    END IF;
37257 
37258    --
37259    -- call analytical criteria
37260    --
37261    
37262    --
37263    -- call description
37264    --
37265    
37266 xla_ae_lines_pkg.SetLineDescription(
37267    p_ae_header_id => l_ae_header_id
37268   ,p_description  => Description_1 (
37269      p_application_id         => p_application_id
37270    , p_ae_header_id           => l_ae_header_id 
37271 , p_source_1 => p_source_1
37272 , p_source_2 => p_source_2
37273 , p_source_3 => p_source_3
37274 , p_source_4 => p_source_4
37275 , p_source_5 => p_source_5
37276    )
37277 );
37278 
37279 
37280    --
37281    -- call ADRs
37282    -- Bug 4922099
37283    --
37284    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37285         (NVL(l_actual_upg_option, 'N') = 'O') OR
37286         (NVL(l_enc_upg_option, 'N') = 'O')
37287       )
37288    THEN
37289    NULL;
37290    --
37291    --
37292    
37293   l_ccid := AcctDerRule_6(
37294            p_application_id           => p_application_id
37295          , p_ae_header_id             => l_ae_header_id 
37296 , p_source_11 => p_source_11
37297          , x_transaction_coa_id       => l_adr_transaction_coa_id
37298          , x_accounting_coa_id        => l_adr_accounting_coa_id
37299          , x_value_type_code          => l_adr_value_type_code
37300          , p_side                     => 'NA'
37301    );
37302 
37303    xla_ae_lines_pkg.set_ccid(
37304     p_code_combination_id          => l_ccid
37305   , p_value_type_code              => l_adr_value_type_code
37306   , p_transaction_coa_id           => l_adr_transaction_coa_id
37307   , p_accounting_coa_id            => l_adr_accounting_coa_id
37308   , p_adr_code                     => 'CST_DEFAULT'
37309   , p_adr_type_code                => 'S'
37310   , p_component_type               => l_component_type
37311   , p_component_code               => l_component_code
37312   , p_component_type_code          => l_component_type_code
37313   , p_component_appl_id            => l_component_appl_id
37314   , p_amb_context_code             => l_amb_context_code
37315   , p_side                         => 'NA'
37316   );
37317 
37318 
37319    --
37320    --
37321    END IF;
37322    --
37323    -- Bug 4922099
37324    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37325           (NVL(l_enc_upg_option, 'N') = 'O')
37326         ) AND
37327         (l_bflow_method_code = 'PRIOR_ENTRY')
37328       )
37329    THEN
37330       IF
37331       --
37332       1 = 2
37333       --
37334       THEN
37335       xla_accounting_err_pkg.build_message
37336                                     (p_appli_s_name            => 'XLA'
37337                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37338                                     ,p_token_1                 => 'LINE_NUMBER'
37339                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37340                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37341                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37342                                                                              l_component_type
37343                                                                             ,l_component_code
37344                                                                             ,l_component_type_code
37345                                                                             ,l_component_appl_id
37346                                                                             ,l_amb_context_code
37347                                                                             ,l_entity_code
37348                                                                             ,l_event_class_code
37349                                                                            )
37350                                     ,p_token_3                 => 'OWNER'
37351                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37352                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37353                                                                           ,p_lookup_code    => l_component_type_code
37354                                                                          )
37355                                     ,p_token_4                 => 'PRODUCT_NAME'
37356                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37357                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37358                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37359                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37360                                     ,p_ae_header_id            =>  NULL
37361                                        );
37362 
37363         IF (C_LEVEL_ERROR>= g_log_level) THEN
37364                  trace
37365                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37366                       ,p_level    => C_LEVEL_ERROR
37367                       ,p_module   => l_log_module);
37368         END IF;
37369       END IF;
37370    END IF;
37371    --
37372    --
37373    ------------------------------------------------------------------------------------------------
37374    -- 4219869 Business Flow
37375    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37376    -- Prior Entry.  Currently, the following code is always generated.
37377    ------------------------------------------------------------------------------------------------
37378    XLA_AE_LINES_PKG.ValidateCurrentLine;
37379 
37380    ------------------------------------------------------------------------------------
37381    -- 4219869 Business Flow
37382    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37383    ------------------------------------------------------------------------------------
37384    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37385 
37386    ----------------------------------------------------------------------------------
37387    -- 4219869 Business Flow
37388    -- Update journal entry status -- Need to generate this within IF <condition>
37389    ----------------------------------------------------------------------------------
37390    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37391          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37392          ,p_balance_type_code => l_balance_type_code
37393          );
37394 
37395    -------------------------------------------------------------------------------------------
37396    -- 4262811 - Generate the Accrual Reversal lines
37397    -------------------------------------------------------------------------------------------
37398    BEGIN
37399       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37400                               (g_array_event(p_event_id).array_value_num('header_index'));
37401       IF l_acc_rev_flag IS NULL THEN
37402          l_acc_rev_flag := 'N';
37403       END IF;
37404    EXCEPTION
37405       WHEN OTHERS THEN
37406          l_acc_rev_flag := 'N';
37407    END;
37408    --
37409    IF (l_acc_rev_flag = 'Y') THEN
37410 
37411        -- 4645092  ------------------------------------------------------------------------------
37412        -- To allow MPA report to determine if it should generate report process
37413        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37414        ------------------------------------------------------------------------------------------
37415 
37416        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37417        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37418    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37419    -- call ADRs
37420    -- Bug 4922099
37421    --
37422    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37423         (NVL(l_actual_upg_option, 'N') = 'O') OR
37424         (NVL(l_enc_upg_option, 'N') = 'O')
37425       )
37426    THEN
37427    NULL;
37428    --
37429    --
37430    
37431   l_ccid := AcctDerRule_6(
37432            p_application_id           => p_application_id
37433          , p_ae_header_id             => l_ae_header_id 
37434 , p_source_11 => p_source_11
37435          , x_transaction_coa_id       => l_adr_transaction_coa_id
37436          , x_accounting_coa_id        => l_adr_accounting_coa_id
37437          , x_value_type_code          => l_adr_value_type_code
37438          , p_side                     => 'NA'
37439    );
37440 
37441    xla_ae_lines_pkg.set_ccid(
37442     p_code_combination_id          => l_ccid
37443   , p_value_type_code              => l_adr_value_type_code
37444   , p_transaction_coa_id           => l_adr_transaction_coa_id
37445   , p_accounting_coa_id            => l_adr_accounting_coa_id
37446   , p_adr_code                     => 'CST_DEFAULT'
37447   , p_adr_type_code                => 'S'
37448   , p_component_type               => l_component_type
37449   , p_component_code               => l_component_code
37450   , p_component_type_code          => l_component_type_code
37451   , p_component_appl_id            => l_component_appl_id
37452   , p_amb_context_code             => l_amb_context_code
37453   , p_side                         => 'NA'
37454   );
37455 
37456 
37457    --
37458    --
37459    END IF;
37460 
37461        --
37462        -- Update the line information that should be overwritten
37463        --
37464        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37465                                          p_header_num   => 1);
37466        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37467 
37468        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37469 
37470        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37471           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37472        END IF;
37473 
37474       --
37475       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37476       --
37477       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37478           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37479       ELSE
37480           ---------------------------------------------------------------------------------------------------
37481           -- 4262811a Switch Sign
37482           ---------------------------------------------------------------------------------------------------
37483           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37484           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37485                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37486           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37487                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37488           -- 5132302
37489           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37490                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37491 
37492       END IF;
37493 
37494       -- 4955764
37495       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37496       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37497 
37498 
37499       XLA_AE_LINES_PKG.ValidateCurrentLine;
37500       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37501 
37502       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37503                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37504                ,p_balance_type_code => l_balance_type_code);
37505 
37506    END IF;
37507 
37508    -----------------------------------------------------------------------------------------
37509    -- 4262811 Multiperiod Accounting
37510    -----------------------------------------------------------------------------------------
37511      -- No MPA option is assigned.
37512 
37513 
37514 END IF;
37515 END IF;
37516 --
37517 
37518 --
37519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37520    trace
37521       (p_msg      => 'END of AcctLineType_91'
37522       ,p_level    => C_LEVEL_PROCEDURE
37523       ,p_module   => l_log_module);
37524 END IF;
37525 --
37526 EXCEPTION
37527   WHEN xla_exceptions_pkg.application_exception THEN
37528       RAISE;
37529   WHEN OTHERS THEN
37530        xla_exceptions_pkg.raise_message
37531            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_91');
37532 END AcctLineType_91;
37533 --
37534 
37535 ---------------------------------------
37536 --
37537 -- PRIVATE FUNCTION
37538 --         AcctLineType_92
37539 --
37540 ---------------------------------------
37541 PROCEDURE AcctLineType_92 (
37542   p_application_id        IN NUMBER
37543  ,p_event_id              IN NUMBER
37544  ,p_calculate_acctd_flag  IN VARCHAR2
37545  ,p_calculate_g_l_flag    IN VARCHAR2
37546  ,p_actual_flag           IN OUT VARCHAR2
37547  ,p_balance_type_code     OUT VARCHAR2
37548  ,p_gain_or_loss_ref      OUT VARCHAR2
37549  
37550 --TRANSACTION_ID
37551  , p_source_1            IN NUMBER
37552 --Item Concatenated Segments
37553  , p_source_2            IN VARCHAR2
37554 --Transaction Quantity
37555  , p_source_3            IN NUMBER
37556 --Transaction Unit of Measure Code
37557  , p_source_4            IN VARCHAR2
37558 --Inventory Transaction Type Description
37559  , p_source_5            IN VARCHAR2
37560 --Cost Management Default Account
37561  , p_source_11            IN NUMBER
37562 --Applied to Application ID
37563  , p_source_79            IN NUMBER
37564 --Applied to Distribution Link Type
37565  , p_source_80            IN VARCHAR2
37566 --Applied to Entity Code
37567  , p_source_81            IN VARCHAR2
37568 --Applied To Purchase Document Identifier
37569  , p_source_83            IN NUMBER
37570 --DISTRIBUTION_IDENTIFIER
37571  , p_source_84            IN NUMBER
37572 --Distribution Type
37573  , p_source_85            IN VARCHAR2
37574  , p_source_85_meaning    IN VARCHAR2
37575 --PO Budget Account
37576  , p_source_86            IN NUMBER
37577 --Encumbrance Reversal Amount Entered
37578  , p_source_87            IN NUMBER
37579 --Entered Currency Code
37580  , p_source_88            IN VARCHAR2
37581 --Transaction Encumbrance Reversal Amount
37582  , p_source_89            IN NUMBER
37583 --Entered Amount
37584  , p_source_91            IN NUMBER
37585 --Currency Conversion Date
37586  , p_source_92            IN DATE
37587 --Currency Conversion Rate
37588  , p_source_93            IN NUMBER
37589 --Currency Conversion Type
37590  , p_source_94            IN VARCHAR2
37591 --Accounted Amount
37592  , p_source_95            IN NUMBER
37593 --Purchasing Encumbrance Type Identifier
37594  , p_source_96            IN NUMBER
37595 --Accounting Line Type
37596  , p_source_97            IN NUMBER
37597 --Costing Encumbrance Upgrade Option
37598  , p_source_100            IN VARCHAR2
37599 --TXN_PO_DISTRIBUTION_ID
37600  , p_source_101            IN NUMBER
37601 )
37602 IS
37603 
37604 l_component_type              VARCHAR2(80);
37605 l_component_code              VARCHAR2(30);
37606 l_component_type_code         VARCHAR2(1);
37607 l_component_appl_id           INTEGER;
37608 l_amb_context_code            VARCHAR2(30);
37609 l_entity_code                 VARCHAR2(30);
37610 l_event_class_code            VARCHAR2(30);
37611 l_ae_header_id                NUMBER;
37612 l_event_type_code             VARCHAR2(30);
37613 l_line_definition_code        VARCHAR2(30);
37614 l_line_definition_owner_code  VARCHAR2(1);
37615 --
37616 -- adr variables
37617 l_segment                     VARCHAR2(30);
37618 l_ccid                        NUMBER;
37619 l_adr_transaction_coa_id      NUMBER;
37620 l_adr_accounting_coa_id       NUMBER;
37621 l_adr_flexfield_segment_code  VARCHAR2(30);
37622 l_adr_flex_value_set_id       NUMBER;
37623 l_adr_value_type_code         VARCHAR2(30);
37624 l_adr_value_combination_id    NUMBER;
37625 l_adr_value_segment_code      VARCHAR2(30);
37626 
37627 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37628 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37629 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37630 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37631 
37632 -- 4262811 Variables ------------------------------------------------------------------------------------------
37633 l_entered_amt_idx             NUMBER;
37634 l_accted_amt_idx              NUMBER;
37635 l_acc_rev_flag                VARCHAR2(1);
37636 l_accrual_line_num            NUMBER;
37637 l_tmp_amt                     NUMBER;
37638 l_acc_rev_natural_side_code   VARCHAR2(1);
37639 
37640 l_num_entries                 NUMBER;
37641 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37642 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37643 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37644 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37645 l_recog_line_1                NUMBER;
37646 l_recog_line_2                NUMBER;
37647 
37648 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37649 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37650 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37651 
37652 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37653 
37654 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37655 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37656 
37657 ---------------------------------------------------------------------------------------------------------------
37658 
37659 
37660 --
37661 -- bulk performance
37662 --
37663 l_balance_type_code           VARCHAR2(1);
37664 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37665 l_log_module                  VARCHAR2(240);
37666 
37667 --
37668 -- Upgrade strategy
37669 --
37670 l_actual_upg_option           VARCHAR2(1);
37671 l_enc_upg_option           VARCHAR2(1);
37672 
37673 --
37674 BEGIN
37675 --
37676 IF g_log_enabled THEN
37677       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
37678 END IF;
37679 --
37680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37681 
37682       trace
37683          (p_msg      => 'BEGIN of AcctLineType_92'
37684          ,p_level    => C_LEVEL_PROCEDURE
37685          ,p_module   => l_log_module);
37686 
37687 END IF;
37688 --
37689 l_component_type             := 'AMB_JLT';
37690 l_component_code             := 'COST_VARIANCE';
37691 l_component_type_code        := 'S';
37692 l_component_appl_id          :=  707;
37693 l_amb_context_code           := 'DEFAULT';
37694 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
37695 l_event_class_code           := 'PURCHASE_ORDER';
37696 l_event_type_code            := 'RET_RI_INV';
37697 l_line_definition_owner_code := 'S';
37698 l_line_definition_code       := 'PI_RET_RI_INV';
37699 --
37700 l_balance_type_code          := 'A';
37701 l_segment                     := NULL;
37702 l_ccid                        := NULL;
37703 l_adr_transaction_coa_id      := NULL;
37704 l_adr_accounting_coa_id       := NULL;
37705 l_adr_flexfield_segment_code  := NULL;
37706 l_adr_flex_value_set_id       := NULL;
37707 l_adr_value_type_code         := NULL;
37708 l_adr_value_combination_id    := NULL;
37709 l_adr_value_segment_code      := NULL;
37710 
37711 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37712 l_bflow_class_code           := '';    -- 4219869 Business Flow
37713 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37714 l_budgetary_control_flag     := 'N';
37715 
37716 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37717 l_bflow_applied_to_amt       := NULL; -- 5132302
37718 l_entered_amt_idx            := NULL;          -- 4262811
37719 l_accted_amt_idx             := NULL;          -- 4262811
37720 l_acc_rev_flag               := NULL;          -- 4262811
37721 l_accrual_line_num           := NULL;          -- 4262811
37722 l_tmp_amt                    := NULL;          -- 4262811
37723 --
37724  
37725 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37726     l_balance_type_code <> 'B' THEN
37727 IF NVL(p_source_97,9E125) =  13
37728  THEN 
37729 
37730    --
37731    XLA_AE_LINES_PKG.SetNewLine;
37732 
37733    p_balance_type_code          := l_balance_type_code;
37734    -- set the flag so later we will know whether the gain loss line needs to be created
37735    
37736    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37737      p_actual_flag :='A';
37738    END IF;
37739 
37740    --
37741    -- bulk performance
37742    --
37743    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37744                                       p_header_num   => 0); -- 4262811
37745    --
37746    -- set accounting line options
37747    --
37748    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37749            p_natural_side_code          => 'D'
37750          , p_gain_or_loss_flag          => 'N'
37751          , p_gl_transfer_mode_code      => 'S'
37752          , p_acct_entry_type_code       => 'A'
37753          , p_switch_side_flag           => 'Y'
37754          , p_merge_duplicate_code       => 'N'
37755          );
37756    --
37757    l_acc_rev_natural_side_code := 'C';  -- 4262811
37758    -- 
37759    --
37760    -- set accounting line type info
37761    --
37762    xla_ae_lines_pkg.SetAcctLineType
37763       (p_component_type             => l_component_type
37764       ,p_event_type_code            => l_event_type_code
37765       ,p_line_definition_owner_code => l_line_definition_owner_code
37766       ,p_line_definition_code       => l_line_definition_code
37767       ,p_accounting_line_code       => l_component_code
37768       ,p_accounting_line_type_code  => l_component_type_code
37769       ,p_accounting_line_appl_id    => l_component_appl_id
37770       ,p_amb_context_code           => l_amb_context_code
37771       ,p_entity_code                => l_entity_code
37772       ,p_event_class_code           => l_event_class_code);
37773    --
37774    -- set accounting class
37775    --
37776    xla_ae_lines_pkg.SetAcctClass(
37777            p_accounting_class_code  => 'COST_VARIANCE'
37778          , p_ae_header_id           => l_ae_header_id
37779          );
37780 
37781    --
37782    -- set rounding class
37783    --
37784    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37785                       'COST_VARIANCE';
37786 
37787    --
37788    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37789    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37790    --
37791    -- bulk performance
37792    --
37793    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37794 
37795    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37796       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37797 
37798    -- 4955764
37799    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37801 
37802    -- 4458381 Public Sector Enh
37803    
37804    --
37805    -- set accounting attributes for the line type
37806    --
37807    l_entered_amt_idx := 17;
37808    l_accted_amt_idx  := 22;
37809    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37810    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
37811    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
37812    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
37813    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
37814    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
37815    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
37816    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
37817    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
37818    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
37819    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
37820    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
37821    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
37822    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
37823    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
37824    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
37825    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
37826    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
37827    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
37828    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
37829    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
37830    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
37831    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
37832    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
37833    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
37834    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
37835    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
37836    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
37837    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
37838    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
37839    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
37840    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
37841    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
37842    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
37843    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
37844    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
37845    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
37846    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
37847    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
37848    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
37849    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
37850    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
37851    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
37852    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
37853    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
37854    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
37855    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
37856    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
37857    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
37858 
37859    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37860    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37861 
37862    ---------------------------------------------------------------------------------------------------------------
37863    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37864    ---------------------------------------------------------------------------------------------------------------
37865    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37866 
37867    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37868    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37869 
37870    IF xla_accounting_cache_pkg.GetValueChar
37871          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37872          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37873    AND l_bflow_method_code = 'PRIOR_ENTRY'
37874 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37875    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37876          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37877        )
37878    THEN
37879          xla_ae_lines_pkg.BflowUpgEntry
37880            (p_business_method_code    => l_bflow_method_code
37881            ,p_business_class_code     => l_bflow_class_code
37882            ,p_balance_type            => l_balance_type_code);
37883    ELSE
37884       NULL;
37885 -- No business flow processing for business flow method of NONE.
37886    END IF;
37887 
37888    --
37889    -- call analytical criteria
37890    --
37891    
37892    --
37893    -- call description
37894    --
37895    
37896 xla_ae_lines_pkg.SetLineDescription(
37897    p_ae_header_id => l_ae_header_id
37898   ,p_description  => Description_1 (
37899      p_application_id         => p_application_id
37900    , p_ae_header_id           => l_ae_header_id 
37901 , p_source_1 => p_source_1
37902 , p_source_2 => p_source_2
37903 , p_source_3 => p_source_3
37904 , p_source_4 => p_source_4
37905 , p_source_5 => p_source_5
37906    )
37907 );
37908 
37909 
37910    --
37911    -- call ADRs
37912    -- Bug 4922099
37913    --
37914    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37915         (NVL(l_actual_upg_option, 'N') = 'O') OR
37916         (NVL(l_enc_upg_option, 'N') = 'O')
37917       )
37918    THEN
37919    NULL;
37920    --
37921    --
37922    
37923   l_ccid := AcctDerRule_6(
37924            p_application_id           => p_application_id
37925          , p_ae_header_id             => l_ae_header_id 
37926 , p_source_11 => p_source_11
37927          , x_transaction_coa_id       => l_adr_transaction_coa_id
37928          , x_accounting_coa_id        => l_adr_accounting_coa_id
37929          , x_value_type_code          => l_adr_value_type_code
37930          , p_side                     => 'NA'
37931    );
37932 
37933    xla_ae_lines_pkg.set_ccid(
37934     p_code_combination_id          => l_ccid
37935   , p_value_type_code              => l_adr_value_type_code
37936   , p_transaction_coa_id           => l_adr_transaction_coa_id
37937   , p_accounting_coa_id            => l_adr_accounting_coa_id
37938   , p_adr_code                     => 'CST_DEFAULT'
37939   , p_adr_type_code                => 'S'
37940   , p_component_type               => l_component_type
37941   , p_component_code               => l_component_code
37942   , p_component_type_code          => l_component_type_code
37943   , p_component_appl_id            => l_component_appl_id
37944   , p_amb_context_code             => l_amb_context_code
37945   , p_side                         => 'NA'
37946   );
37947 
37948 
37949    --
37950    --
37951    END IF;
37952    --
37953    -- Bug 4922099
37954    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37955           (NVL(l_enc_upg_option, 'N') = 'O')
37956         ) AND
37957         (l_bflow_method_code = 'PRIOR_ENTRY')
37958       )
37959    THEN
37960       IF
37961       --
37962       1 = 2
37963       --
37964       THEN
37965       xla_accounting_err_pkg.build_message
37966                                     (p_appli_s_name            => 'XLA'
37967                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37968                                     ,p_token_1                 => 'LINE_NUMBER'
37969                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37970                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37971                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37972                                                                              l_component_type
37973                                                                             ,l_component_code
37974                                                                             ,l_component_type_code
37975                                                                             ,l_component_appl_id
37976                                                                             ,l_amb_context_code
37977                                                                             ,l_entity_code
37978                                                                             ,l_event_class_code
37979                                                                            )
37980                                     ,p_token_3                 => 'OWNER'
37981                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37982                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37983                                                                           ,p_lookup_code    => l_component_type_code
37984                                                                          )
37985                                     ,p_token_4                 => 'PRODUCT_NAME'
37986                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37987                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37988                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37989                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37990                                     ,p_ae_header_id            =>  NULL
37991                                        );
37992 
37993         IF (C_LEVEL_ERROR>= g_log_level) THEN
37994                  trace
37995                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37996                       ,p_level    => C_LEVEL_ERROR
37997                       ,p_module   => l_log_module);
37998         END IF;
37999       END IF;
38000    END IF;
38001    --
38002    --
38003    ------------------------------------------------------------------------------------------------
38004    -- 4219869 Business Flow
38005    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38006    -- Prior Entry.  Currently, the following code is always generated.
38007    ------------------------------------------------------------------------------------------------
38008    XLA_AE_LINES_PKG.ValidateCurrentLine;
38009 
38010    ------------------------------------------------------------------------------------
38011    -- 4219869 Business Flow
38012    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38013    ------------------------------------------------------------------------------------
38014    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38015 
38016    ----------------------------------------------------------------------------------
38017    -- 4219869 Business Flow
38018    -- Update journal entry status -- Need to generate this within IF <condition>
38019    ----------------------------------------------------------------------------------
38020    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38021          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38022          ,p_balance_type_code => l_balance_type_code
38023          );
38024 
38025    -------------------------------------------------------------------------------------------
38026    -- 4262811 - Generate the Accrual Reversal lines
38027    -------------------------------------------------------------------------------------------
38028    BEGIN
38029       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38030                               (g_array_event(p_event_id).array_value_num('header_index'));
38031       IF l_acc_rev_flag IS NULL THEN
38032          l_acc_rev_flag := 'N';
38033       END IF;
38034    EXCEPTION
38035       WHEN OTHERS THEN
38036          l_acc_rev_flag := 'N';
38037    END;
38038    --
38039    IF (l_acc_rev_flag = 'Y') THEN
38040 
38041        -- 4645092  ------------------------------------------------------------------------------
38042        -- To allow MPA report to determine if it should generate report process
38043        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38044        ------------------------------------------------------------------------------------------
38045 
38046        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38047        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38048    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38049    -- call ADRs
38050    -- Bug 4922099
38051    --
38052    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38053         (NVL(l_actual_upg_option, 'N') = 'O') OR
38054         (NVL(l_enc_upg_option, 'N') = 'O')
38055       )
38056    THEN
38057    NULL;
38058    --
38059    --
38060    
38061   l_ccid := AcctDerRule_6(
38062            p_application_id           => p_application_id
38063          , p_ae_header_id             => l_ae_header_id 
38064 , p_source_11 => p_source_11
38065          , x_transaction_coa_id       => l_adr_transaction_coa_id
38066          , x_accounting_coa_id        => l_adr_accounting_coa_id
38067          , x_value_type_code          => l_adr_value_type_code
38068          , p_side                     => 'NA'
38069    );
38070 
38071    xla_ae_lines_pkg.set_ccid(
38072     p_code_combination_id          => l_ccid
38073   , p_value_type_code              => l_adr_value_type_code
38074   , p_transaction_coa_id           => l_adr_transaction_coa_id
38075   , p_accounting_coa_id            => l_adr_accounting_coa_id
38076   , p_adr_code                     => 'CST_DEFAULT'
38077   , p_adr_type_code                => 'S'
38078   , p_component_type               => l_component_type
38079   , p_component_code               => l_component_code
38080   , p_component_type_code          => l_component_type_code
38081   , p_component_appl_id            => l_component_appl_id
38082   , p_amb_context_code             => l_amb_context_code
38083   , p_side                         => 'NA'
38084   );
38085 
38086 
38087    --
38088    --
38089    END IF;
38090 
38091        --
38092        -- Update the line information that should be overwritten
38093        --
38094        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38095                                          p_header_num   => 1);
38096        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38097 
38098        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38099 
38100        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38101           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38102        END IF;
38103 
38104       --
38105       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38106       --
38107       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38108           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38109       ELSE
38110           ---------------------------------------------------------------------------------------------------
38111           -- 4262811a Switch Sign
38112           ---------------------------------------------------------------------------------------------------
38113           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38114           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38115                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38116           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38117                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38118           -- 5132302
38119           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38120                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38121 
38122       END IF;
38123 
38124       -- 4955764
38125       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38126       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38127 
38128 
38129       XLA_AE_LINES_PKG.ValidateCurrentLine;
38130       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38131 
38132       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38133                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38134                ,p_balance_type_code => l_balance_type_code);
38135 
38136    END IF;
38137 
38138    -----------------------------------------------------------------------------------------
38139    -- 4262811 Multiperiod Accounting
38140    -----------------------------------------------------------------------------------------
38141      -- No MPA option is assigned.
38142 
38143 
38144 END IF;
38145 END IF;
38146 --
38147 
38148 --
38149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38150    trace
38151       (p_msg      => 'END of AcctLineType_92'
38152       ,p_level    => C_LEVEL_PROCEDURE
38153       ,p_module   => l_log_module);
38154 END IF;
38155 --
38156 EXCEPTION
38157   WHEN xla_exceptions_pkg.application_exception THEN
38158       RAISE;
38159   WHEN OTHERS THEN
38160        xla_exceptions_pkg.raise_message
38161            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_92');
38162 END AcctLineType_92;
38163 --
38164 
38165 ---------------------------------------
38166 --
38167 -- PRIVATE FUNCTION
38168 --         AcctLineType_93
38169 --
38170 ---------------------------------------
38171 PROCEDURE AcctLineType_93 (
38172   p_application_id        IN NUMBER
38173  ,p_event_id              IN NUMBER
38174  ,p_calculate_acctd_flag  IN VARCHAR2
38175  ,p_calculate_g_l_flag    IN VARCHAR2
38176  ,p_actual_flag           IN OUT VARCHAR2
38177  ,p_balance_type_code     OUT VARCHAR2
38178  ,p_gain_or_loss_ref      OUT VARCHAR2
38179  
38180 --Cost Management Default Account
38181  , p_source_11            IN NUMBER
38182 --DISTRIBUTION_IDENTIFIER
38183  , p_source_84            IN NUMBER
38184 --Distribution Type
38185  , p_source_85            IN VARCHAR2
38186  , p_source_85_meaning    IN VARCHAR2
38187 --Entered Currency Code
38188  , p_source_88            IN VARCHAR2
38189 --Entered Amount
38190  , p_source_91            IN NUMBER
38191 --Currency Conversion Date
38192  , p_source_92            IN DATE
38193 --Currency Conversion Rate
38194  , p_source_93            IN NUMBER
38195 --Currency Conversion Type
38196  , p_source_94            IN VARCHAR2
38197 --Accounted Amount
38198  , p_source_95            IN NUMBER
38199 --Accounting Line Type
38200  , p_source_97            IN NUMBER
38201 )
38202 IS
38203 
38204 l_component_type              VARCHAR2(80);
38205 l_component_code              VARCHAR2(30);
38206 l_component_type_code         VARCHAR2(1);
38207 l_component_appl_id           INTEGER;
38208 l_amb_context_code            VARCHAR2(30);
38209 l_entity_code                 VARCHAR2(30);
38210 l_event_class_code            VARCHAR2(30);
38211 l_ae_header_id                NUMBER;
38212 l_event_type_code             VARCHAR2(30);
38213 l_line_definition_code        VARCHAR2(30);
38214 l_line_definition_owner_code  VARCHAR2(1);
38215 --
38216 -- adr variables
38217 l_segment                     VARCHAR2(30);
38218 l_ccid                        NUMBER;
38219 l_adr_transaction_coa_id      NUMBER;
38220 l_adr_accounting_coa_id       NUMBER;
38221 l_adr_flexfield_segment_code  VARCHAR2(30);
38222 l_adr_flex_value_set_id       NUMBER;
38223 l_adr_value_type_code         VARCHAR2(30);
38224 l_adr_value_combination_id    NUMBER;
38225 l_adr_value_segment_code      VARCHAR2(30);
38226 
38227 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38228 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38229 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38230 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38231 
38232 -- 4262811 Variables ------------------------------------------------------------------------------------------
38233 l_entered_amt_idx             NUMBER;
38234 l_accted_amt_idx              NUMBER;
38235 l_acc_rev_flag                VARCHAR2(1);
38236 l_accrual_line_num            NUMBER;
38237 l_tmp_amt                     NUMBER;
38238 l_acc_rev_natural_side_code   VARCHAR2(1);
38239 
38240 l_num_entries                 NUMBER;
38241 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38242 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38243 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38244 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38245 l_recog_line_1                NUMBER;
38246 l_recog_line_2                NUMBER;
38247 
38248 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38249 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38250 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38251 
38252 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38253 
38254 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38255 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38256 
38257 ---------------------------------------------------------------------------------------------------------------
38258 
38259 
38260 --
38261 -- bulk performance
38262 --
38263 l_balance_type_code           VARCHAR2(1);
38264 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38265 l_log_module                  VARCHAR2(240);
38266 
38267 --
38268 -- Upgrade strategy
38269 --
38270 l_actual_upg_option           VARCHAR2(1);
38271 l_enc_upg_option           VARCHAR2(1);
38272 
38273 --
38274 BEGIN
38275 --
38276 IF g_log_enabled THEN
38277       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
38278 END IF;
38279 --
38280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38281 
38282       trace
38283          (p_msg      => 'BEGIN of AcctLineType_93'
38284          ,p_level    => C_LEVEL_PROCEDURE
38285          ,p_module   => l_log_module);
38286 
38287 END IF;
38288 --
38289 l_component_type             := 'AMB_JLT';
38290 l_component_code             := 'COST_VARIANCE';
38291 l_component_type_code        := 'S';
38292 l_component_appl_id          :=  707;
38293 l_amb_context_code           := 'DEFAULT';
38294 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
38295 l_event_class_code           := 'SALES_ORDER';
38296 l_event_type_code            := 'COGS_RECOGNITION';
38297 l_line_definition_owner_code := 'S';
38298 l_line_definition_code       := 'PI_COGS_RECOGNITION';
38299 --
38300 l_balance_type_code          := 'A';
38301 l_segment                     := NULL;
38302 l_ccid                        := NULL;
38303 l_adr_transaction_coa_id      := NULL;
38304 l_adr_accounting_coa_id       := NULL;
38305 l_adr_flexfield_segment_code  := NULL;
38306 l_adr_flex_value_set_id       := NULL;
38307 l_adr_value_type_code         := NULL;
38308 l_adr_value_combination_id    := NULL;
38309 l_adr_value_segment_code      := NULL;
38310 
38311 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38312 l_bflow_class_code           := '';    -- 4219869 Business Flow
38313 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38314 l_budgetary_control_flag     := 'N';
38315 
38316 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38317 l_bflow_applied_to_amt       := NULL; -- 5132302
38318 l_entered_amt_idx            := NULL;          -- 4262811
38319 l_accted_amt_idx             := NULL;          -- 4262811
38320 l_acc_rev_flag               := NULL;          -- 4262811
38321 l_accrual_line_num           := NULL;          -- 4262811
38322 l_tmp_amt                    := NULL;          -- 4262811
38323 --
38324  
38325 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38326     l_balance_type_code <> 'B' THEN
38327 IF NVL(p_source_97,9E125) =  13
38328  THEN 
38329 
38330    --
38331    XLA_AE_LINES_PKG.SetNewLine;
38332 
38333    p_balance_type_code          := l_balance_type_code;
38334    -- set the flag so later we will know whether the gain loss line needs to be created
38335    
38336    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38337      p_actual_flag :='A';
38338    END IF;
38339 
38340    --
38341    -- bulk performance
38342    --
38343    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38344                                       p_header_num   => 0); -- 4262811
38345    --
38346    -- set accounting line options
38347    --
38348    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38349            p_natural_side_code          => 'D'
38350          , p_gain_or_loss_flag          => 'N'
38351          , p_gl_transfer_mode_code      => 'S'
38352          , p_acct_entry_type_code       => 'A'
38353          , p_switch_side_flag           => 'Y'
38354          , p_merge_duplicate_code       => 'N'
38355          );
38356    --
38357    l_acc_rev_natural_side_code := 'C';  -- 4262811
38358    -- 
38359    --
38360    -- set accounting line type info
38361    --
38362    xla_ae_lines_pkg.SetAcctLineType
38363       (p_component_type             => l_component_type
38364       ,p_event_type_code            => l_event_type_code
38365       ,p_line_definition_owner_code => l_line_definition_owner_code
38366       ,p_line_definition_code       => l_line_definition_code
38367       ,p_accounting_line_code       => l_component_code
38368       ,p_accounting_line_type_code  => l_component_type_code
38369       ,p_accounting_line_appl_id    => l_component_appl_id
38370       ,p_amb_context_code           => l_amb_context_code
38371       ,p_entity_code                => l_entity_code
38372       ,p_event_class_code           => l_event_class_code);
38373    --
38374    -- set accounting class
38375    --
38376    xla_ae_lines_pkg.SetAcctClass(
38377            p_accounting_class_code  => 'COST_VARIANCE'
38378          , p_ae_header_id           => l_ae_header_id
38379          );
38380 
38381    --
38382    -- set rounding class
38383    --
38384    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38385                       'COST_VARIANCE';
38386 
38387    --
38388    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38389    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38390    --
38391    -- bulk performance
38392    --
38393    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38394 
38395    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38396       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38397 
38398    -- 4955764
38399    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38400       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38401 
38402    -- 4458381 Public Sector Enh
38403    
38404    --
38405    -- set accounting attributes for the line type
38406    --
38407    l_entered_amt_idx := 3;
38408    l_accted_amt_idx  := 8;
38409    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38410    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38411    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
38412    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38413    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
38414    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38415    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
38416    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38417    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
38418    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38419    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
38420    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38421    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
38422    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38423    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
38424    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38425    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
38426 
38427    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38428    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38429 
38430    ---------------------------------------------------------------------------------------------------------------
38431    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38432    ---------------------------------------------------------------------------------------------------------------
38433    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38434 
38435    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38436    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38437 
38438    IF xla_accounting_cache_pkg.GetValueChar
38439          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38440          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38441    AND l_bflow_method_code = 'PRIOR_ENTRY'
38442 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38443    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38444          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38445        )
38446    THEN
38447          xla_ae_lines_pkg.BflowUpgEntry
38448            (p_business_method_code    => l_bflow_method_code
38449            ,p_business_class_code     => l_bflow_class_code
38450            ,p_balance_type            => l_balance_type_code);
38451    ELSE
38452       NULL;
38453 -- No business flow processing for business flow method of NONE.
38454    END IF;
38455 
38456    --
38457    -- call analytical criteria
38458    --
38459    
38460    --
38461    -- call description
38462    --
38463    -- No description or it is inherited.
38464    --
38465    -- call ADRs
38466    -- Bug 4922099
38467    --
38468    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38469         (NVL(l_actual_upg_option, 'N') = 'O') OR
38470         (NVL(l_enc_upg_option, 'N') = 'O')
38471       )
38472    THEN
38473    NULL;
38474    --
38475    --
38476    
38477   l_ccid := AcctDerRule_6(
38478            p_application_id           => p_application_id
38479          , p_ae_header_id             => l_ae_header_id 
38480 , p_source_11 => p_source_11
38481          , x_transaction_coa_id       => l_adr_transaction_coa_id
38482          , x_accounting_coa_id        => l_adr_accounting_coa_id
38483          , x_value_type_code          => l_adr_value_type_code
38484          , p_side                     => 'NA'
38485    );
38486 
38487    xla_ae_lines_pkg.set_ccid(
38488     p_code_combination_id          => l_ccid
38489   , p_value_type_code              => l_adr_value_type_code
38490   , p_transaction_coa_id           => l_adr_transaction_coa_id
38491   , p_accounting_coa_id            => l_adr_accounting_coa_id
38492   , p_adr_code                     => 'CST_DEFAULT'
38493   , p_adr_type_code                => 'S'
38494   , p_component_type               => l_component_type
38495   , p_component_code               => l_component_code
38496   , p_component_type_code          => l_component_type_code
38497   , p_component_appl_id            => l_component_appl_id
38498   , p_amb_context_code             => l_amb_context_code
38499   , p_side                         => 'NA'
38500   );
38501 
38502 
38503    --
38504    --
38505    END IF;
38506    --
38507    -- Bug 4922099
38508    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38509           (NVL(l_enc_upg_option, 'N') = 'O')
38510         ) AND
38511         (l_bflow_method_code = 'PRIOR_ENTRY')
38512       )
38513    THEN
38514       IF
38515       --
38516       1 = 2
38517       --
38518       THEN
38519       xla_accounting_err_pkg.build_message
38520                                     (p_appli_s_name            => 'XLA'
38521                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38522                                     ,p_token_1                 => 'LINE_NUMBER'
38523                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38524                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38525                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38526                                                                              l_component_type
38527                                                                             ,l_component_code
38528                                                                             ,l_component_type_code
38529                                                                             ,l_component_appl_id
38530                                                                             ,l_amb_context_code
38531                                                                             ,l_entity_code
38532                                                                             ,l_event_class_code
38533                                                                            )
38534                                     ,p_token_3                 => 'OWNER'
38535                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38536                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38537                                                                           ,p_lookup_code    => l_component_type_code
38538                                                                          )
38539                                     ,p_token_4                 => 'PRODUCT_NAME'
38540                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38541                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38542                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38543                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38544                                     ,p_ae_header_id            =>  NULL
38545                                        );
38546 
38547         IF (C_LEVEL_ERROR>= g_log_level) THEN
38548                  trace
38549                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38550                       ,p_level    => C_LEVEL_ERROR
38551                       ,p_module   => l_log_module);
38552         END IF;
38553       END IF;
38554    END IF;
38555    --
38556    --
38557    ------------------------------------------------------------------------------------------------
38558    -- 4219869 Business Flow
38559    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38560    -- Prior Entry.  Currently, the following code is always generated.
38561    ------------------------------------------------------------------------------------------------
38562    XLA_AE_LINES_PKG.ValidateCurrentLine;
38563 
38564    ------------------------------------------------------------------------------------
38565    -- 4219869 Business Flow
38566    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38567    ------------------------------------------------------------------------------------
38568    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38569 
38570    ----------------------------------------------------------------------------------
38571    -- 4219869 Business Flow
38572    -- Update journal entry status -- Need to generate this within IF <condition>
38573    ----------------------------------------------------------------------------------
38574    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38575          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38576          ,p_balance_type_code => l_balance_type_code
38577          );
38578 
38579    -------------------------------------------------------------------------------------------
38580    -- 4262811 - Generate the Accrual Reversal lines
38581    -------------------------------------------------------------------------------------------
38582    BEGIN
38583       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38584                               (g_array_event(p_event_id).array_value_num('header_index'));
38585       IF l_acc_rev_flag IS NULL THEN
38586          l_acc_rev_flag := 'N';
38587       END IF;
38588    EXCEPTION
38589       WHEN OTHERS THEN
38590          l_acc_rev_flag := 'N';
38591    END;
38592    --
38593    IF (l_acc_rev_flag = 'Y') THEN
38594 
38595        -- 4645092  ------------------------------------------------------------------------------
38596        -- To allow MPA report to determine if it should generate report process
38597        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38598        ------------------------------------------------------------------------------------------
38599 
38600        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38601        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38602    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38603    -- call ADRs
38604    -- Bug 4922099
38605    --
38606    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38607         (NVL(l_actual_upg_option, 'N') = 'O') OR
38608         (NVL(l_enc_upg_option, 'N') = 'O')
38609       )
38610    THEN
38611    NULL;
38612    --
38613    --
38614    
38615   l_ccid := AcctDerRule_6(
38616            p_application_id           => p_application_id
38617          , p_ae_header_id             => l_ae_header_id 
38618 , p_source_11 => p_source_11
38619          , x_transaction_coa_id       => l_adr_transaction_coa_id
38620          , x_accounting_coa_id        => l_adr_accounting_coa_id
38621          , x_value_type_code          => l_adr_value_type_code
38622          , p_side                     => 'NA'
38623    );
38624 
38625    xla_ae_lines_pkg.set_ccid(
38626     p_code_combination_id          => l_ccid
38627   , p_value_type_code              => l_adr_value_type_code
38628   , p_transaction_coa_id           => l_adr_transaction_coa_id
38629   , p_accounting_coa_id            => l_adr_accounting_coa_id
38630   , p_adr_code                     => 'CST_DEFAULT'
38631   , p_adr_type_code                => 'S'
38632   , p_component_type               => l_component_type
38633   , p_component_code               => l_component_code
38634   , p_component_type_code          => l_component_type_code
38635   , p_component_appl_id            => l_component_appl_id
38636   , p_amb_context_code             => l_amb_context_code
38637   , p_side                         => 'NA'
38638   );
38639 
38640 
38641    --
38642    --
38643    END IF;
38644 
38645        --
38646        -- Update the line information that should be overwritten
38647        --
38648        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38649                                          p_header_num   => 1);
38650        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38651 
38652        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38653 
38654        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38655           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38656        END IF;
38657 
38658       --
38659       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38660       --
38661       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38662           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38663       ELSE
38664           ---------------------------------------------------------------------------------------------------
38665           -- 4262811a Switch Sign
38666           ---------------------------------------------------------------------------------------------------
38667           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38668           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38669                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38670           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38671                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38672           -- 5132302
38673           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38674                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38675 
38676       END IF;
38677 
38678       -- 4955764
38679       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38680       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38681 
38682 
38683       XLA_AE_LINES_PKG.ValidateCurrentLine;
38684       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38685 
38686       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38687                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38688                ,p_balance_type_code => l_balance_type_code);
38689 
38690    END IF;
38691 
38692    -----------------------------------------------------------------------------------------
38693    -- 4262811 Multiperiod Accounting
38694    -----------------------------------------------------------------------------------------
38695      -- No MPA option is assigned.
38696 
38697 
38698 END IF;
38699 END IF;
38700 --
38701 
38702 --
38703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38704    trace
38705       (p_msg      => 'END of AcctLineType_93'
38706       ,p_level    => C_LEVEL_PROCEDURE
38707       ,p_module   => l_log_module);
38708 END IF;
38709 --
38710 EXCEPTION
38711   WHEN xla_exceptions_pkg.application_exception THEN
38712       RAISE;
38713   WHEN OTHERS THEN
38714        xla_exceptions_pkg.raise_message
38715            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_93');
38716 END AcctLineType_93;
38717 --
38718 
38719 ---------------------------------------
38720 --
38721 -- PRIVATE FUNCTION
38722 --         AcctLineType_94
38723 --
38724 ---------------------------------------
38725 PROCEDURE AcctLineType_94 (
38726   p_application_id        IN NUMBER
38727  ,p_event_id              IN NUMBER
38728  ,p_calculate_acctd_flag  IN VARCHAR2
38729  ,p_calculate_g_l_flag    IN VARCHAR2
38730  ,p_actual_flag           IN OUT VARCHAR2
38731  ,p_balance_type_code     OUT VARCHAR2
38732  ,p_gain_or_loss_ref      OUT VARCHAR2
38733  
38734 --TRANSACTION_ID
38735  , p_source_1            IN NUMBER
38736 --Item Concatenated Segments
38737  , p_source_2            IN VARCHAR2
38738 --Transaction Quantity
38739  , p_source_3            IN NUMBER
38740 --Transaction Unit of Measure Code
38741  , p_source_4            IN VARCHAR2
38742 --Inventory Transaction Type Description
38743  , p_source_5            IN VARCHAR2
38744 --Cost Management Default Account
38745  , p_source_11            IN NUMBER
38746 --DISTRIBUTION_IDENTIFIER
38747  , p_source_84            IN NUMBER
38748 --Distribution Type
38749  , p_source_85            IN VARCHAR2
38750  , p_source_85_meaning    IN VARCHAR2
38751 --Entered Currency Code
38752  , p_source_88            IN VARCHAR2
38753 --Entered Amount
38754  , p_source_91            IN NUMBER
38755 --Currency Conversion Date
38756  , p_source_92            IN DATE
38757 --Currency Conversion Rate
38758  , p_source_93            IN NUMBER
38759 --Currency Conversion Type
38760  , p_source_94            IN VARCHAR2
38761 --Accounted Amount
38762  , p_source_95            IN NUMBER
38763 --Accounting Line Type
38764  , p_source_97            IN NUMBER
38765 )
38766 IS
38767 
38768 l_component_type              VARCHAR2(80);
38769 l_component_code              VARCHAR2(30);
38770 l_component_type_code         VARCHAR2(1);
38771 l_component_appl_id           INTEGER;
38772 l_amb_context_code            VARCHAR2(30);
38773 l_entity_code                 VARCHAR2(30);
38774 l_event_class_code            VARCHAR2(30);
38775 l_ae_header_id                NUMBER;
38776 l_event_type_code             VARCHAR2(30);
38777 l_line_definition_code        VARCHAR2(30);
38778 l_line_definition_owner_code  VARCHAR2(1);
38779 --
38780 -- adr variables
38781 l_segment                     VARCHAR2(30);
38782 l_ccid                        NUMBER;
38783 l_adr_transaction_coa_id      NUMBER;
38784 l_adr_accounting_coa_id       NUMBER;
38785 l_adr_flexfield_segment_code  VARCHAR2(30);
38786 l_adr_flex_value_set_id       NUMBER;
38787 l_adr_value_type_code         VARCHAR2(30);
38788 l_adr_value_combination_id    NUMBER;
38789 l_adr_value_segment_code      VARCHAR2(30);
38790 
38791 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38792 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38793 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38794 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38795 
38796 -- 4262811 Variables ------------------------------------------------------------------------------------------
38797 l_entered_amt_idx             NUMBER;
38798 l_accted_amt_idx              NUMBER;
38799 l_acc_rev_flag                VARCHAR2(1);
38800 l_accrual_line_num            NUMBER;
38801 l_tmp_amt                     NUMBER;
38802 l_acc_rev_natural_side_code   VARCHAR2(1);
38803 
38804 l_num_entries                 NUMBER;
38805 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38806 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38807 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38808 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38809 l_recog_line_1                NUMBER;
38810 l_recog_line_2                NUMBER;
38811 
38812 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38813 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38814 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38815 
38816 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38817 
38818 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38819 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38820 
38821 ---------------------------------------------------------------------------------------------------------------
38822 
38823 
38824 --
38825 -- bulk performance
38826 --
38827 l_balance_type_code           VARCHAR2(1);
38828 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38829 l_log_module                  VARCHAR2(240);
38830 
38831 --
38832 -- Upgrade strategy
38833 --
38834 l_actual_upg_option           VARCHAR2(1);
38835 l_enc_upg_option           VARCHAR2(1);
38836 
38837 --
38838 BEGIN
38839 --
38840 IF g_log_enabled THEN
38841       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
38842 END IF;
38843 --
38844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38845 
38846       trace
38847          (p_msg      => 'BEGIN of AcctLineType_94'
38848          ,p_level    => C_LEVEL_PROCEDURE
38849          ,p_module   => l_log_module);
38850 
38851 END IF;
38852 --
38853 l_component_type             := 'AMB_JLT';
38854 l_component_code             := 'COST_VARIANCE';
38855 l_component_type_code        := 'S';
38856 l_component_appl_id          :=  707;
38857 l_amb_context_code           := 'DEFAULT';
38858 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
38859 l_event_class_code           := 'WIP_MTL';
38860 l_event_type_code            := 'WIP_COMP_RETURN';
38861 l_line_definition_owner_code := 'S';
38862 l_line_definition_code       := 'PI_WIP_COMP_RETURN';
38863 --
38864 l_balance_type_code          := 'A';
38865 l_segment                     := NULL;
38866 l_ccid                        := NULL;
38867 l_adr_transaction_coa_id      := NULL;
38868 l_adr_accounting_coa_id       := NULL;
38869 l_adr_flexfield_segment_code  := NULL;
38870 l_adr_flex_value_set_id       := NULL;
38871 l_adr_value_type_code         := NULL;
38872 l_adr_value_combination_id    := NULL;
38873 l_adr_value_segment_code      := NULL;
38874 
38875 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38876 l_bflow_class_code           := '';    -- 4219869 Business Flow
38877 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38878 l_budgetary_control_flag     := 'N';
38879 
38880 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38881 l_bflow_applied_to_amt       := NULL; -- 5132302
38882 l_entered_amt_idx            := NULL;          -- 4262811
38883 l_accted_amt_idx             := NULL;          -- 4262811
38884 l_acc_rev_flag               := NULL;          -- 4262811
38885 l_accrual_line_num           := NULL;          -- 4262811
38886 l_tmp_amt                    := NULL;          -- 4262811
38887 --
38888  
38889 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38890     l_balance_type_code <> 'B' THEN
38891 IF NVL(p_source_97,9E125) =  13
38892  THEN 
38893 
38894    --
38895    XLA_AE_LINES_PKG.SetNewLine;
38896 
38897    p_balance_type_code          := l_balance_type_code;
38898    -- set the flag so later we will know whether the gain loss line needs to be created
38899    
38900    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38901      p_actual_flag :='A';
38902    END IF;
38903 
38904    --
38905    -- bulk performance
38906    --
38907    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38908                                       p_header_num   => 0); -- 4262811
38909    --
38910    -- set accounting line options
38911    --
38912    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38913            p_natural_side_code          => 'D'
38914          , p_gain_or_loss_flag          => 'N'
38915          , p_gl_transfer_mode_code      => 'S'
38916          , p_acct_entry_type_code       => 'A'
38917          , p_switch_side_flag           => 'Y'
38918          , p_merge_duplicate_code       => 'N'
38919          );
38920    --
38921    l_acc_rev_natural_side_code := 'C';  -- 4262811
38922    -- 
38923    --
38924    -- set accounting line type info
38925    --
38926    xla_ae_lines_pkg.SetAcctLineType
38927       (p_component_type             => l_component_type
38928       ,p_event_type_code            => l_event_type_code
38929       ,p_line_definition_owner_code => l_line_definition_owner_code
38930       ,p_line_definition_code       => l_line_definition_code
38931       ,p_accounting_line_code       => l_component_code
38932       ,p_accounting_line_type_code  => l_component_type_code
38933       ,p_accounting_line_appl_id    => l_component_appl_id
38934       ,p_amb_context_code           => l_amb_context_code
38935       ,p_entity_code                => l_entity_code
38936       ,p_event_class_code           => l_event_class_code);
38937    --
38938    -- set accounting class
38939    --
38940    xla_ae_lines_pkg.SetAcctClass(
38941            p_accounting_class_code  => 'COST_VARIANCE'
38942          , p_ae_header_id           => l_ae_header_id
38943          );
38944 
38945    --
38946    -- set rounding class
38947    --
38948    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38949                       'COST_VARIANCE';
38950 
38951    --
38952    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38953    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38954    --
38955    -- bulk performance
38956    --
38957    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38958 
38959    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38960       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38961 
38962    -- 4955764
38963    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38964       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38965 
38966    -- 4458381 Public Sector Enh
38967    
38968    --
38969    -- set accounting attributes for the line type
38970    --
38971    l_entered_amt_idx := 3;
38972    l_accted_amt_idx  := 8;
38973    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38974    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38975    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
38976    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38977    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
38978    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38979    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
38980    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38981    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
38982    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38983    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
38984    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38985    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
38986    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38987    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
38988    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38989    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
38990 
38991    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38992    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38993 
38994    ---------------------------------------------------------------------------------------------------------------
38995    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38996    ---------------------------------------------------------------------------------------------------------------
38997    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38998 
38999    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39000    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39001 
39002    IF xla_accounting_cache_pkg.GetValueChar
39003          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39004          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39005    AND l_bflow_method_code = 'PRIOR_ENTRY'
39006 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39007    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39008          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39009        )
39010    THEN
39011          xla_ae_lines_pkg.BflowUpgEntry
39012            (p_business_method_code    => l_bflow_method_code
39013            ,p_business_class_code     => l_bflow_class_code
39014            ,p_balance_type            => l_balance_type_code);
39015    ELSE
39016       NULL;
39017 -- No business flow processing for business flow method of NONE.
39018    END IF;
39019 
39020    --
39021    -- call analytical criteria
39022    --
39023    
39024    --
39025    -- call description
39026    --
39027    
39028 xla_ae_lines_pkg.SetLineDescription(
39029    p_ae_header_id => l_ae_header_id
39030   ,p_description  => Description_1 (
39031      p_application_id         => p_application_id
39032    , p_ae_header_id           => l_ae_header_id 
39033 , p_source_1 => p_source_1
39034 , p_source_2 => p_source_2
39035 , p_source_3 => p_source_3
39036 , p_source_4 => p_source_4
39037 , p_source_5 => p_source_5
39038    )
39039 );
39040 
39041 
39042    --
39043    -- call ADRs
39044    -- Bug 4922099
39045    --
39046    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39047         (NVL(l_actual_upg_option, 'N') = 'O') OR
39048         (NVL(l_enc_upg_option, 'N') = 'O')
39049       )
39050    THEN
39051    NULL;
39052    --
39053    --
39054    
39055   l_ccid := AcctDerRule_6(
39056            p_application_id           => p_application_id
39057          , p_ae_header_id             => l_ae_header_id 
39058 , p_source_11 => p_source_11
39059          , x_transaction_coa_id       => l_adr_transaction_coa_id
39060          , x_accounting_coa_id        => l_adr_accounting_coa_id
39061          , x_value_type_code          => l_adr_value_type_code
39062          , p_side                     => 'NA'
39063    );
39064 
39065    xla_ae_lines_pkg.set_ccid(
39066     p_code_combination_id          => l_ccid
39067   , p_value_type_code              => l_adr_value_type_code
39068   , p_transaction_coa_id           => l_adr_transaction_coa_id
39069   , p_accounting_coa_id            => l_adr_accounting_coa_id
39070   , p_adr_code                     => 'CST_DEFAULT'
39071   , p_adr_type_code                => 'S'
39072   , p_component_type               => l_component_type
39073   , p_component_code               => l_component_code
39074   , p_component_type_code          => l_component_type_code
39075   , p_component_appl_id            => l_component_appl_id
39076   , p_amb_context_code             => l_amb_context_code
39077   , p_side                         => 'NA'
39078   );
39079 
39080 
39081    --
39082    --
39083    END IF;
39084    --
39085    -- Bug 4922099
39086    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39087           (NVL(l_enc_upg_option, 'N') = 'O')
39088         ) AND
39089         (l_bflow_method_code = 'PRIOR_ENTRY')
39090       )
39091    THEN
39092       IF
39093       --
39094       1 = 2
39095       --
39096       THEN
39097       xla_accounting_err_pkg.build_message
39098                                     (p_appli_s_name            => 'XLA'
39099                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39100                                     ,p_token_1                 => 'LINE_NUMBER'
39101                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39102                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39103                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39104                                                                              l_component_type
39105                                                                             ,l_component_code
39106                                                                             ,l_component_type_code
39107                                                                             ,l_component_appl_id
39108                                                                             ,l_amb_context_code
39109                                                                             ,l_entity_code
39110                                                                             ,l_event_class_code
39111                                                                            )
39112                                     ,p_token_3                 => 'OWNER'
39113                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39114                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39115                                                                           ,p_lookup_code    => l_component_type_code
39116                                                                          )
39117                                     ,p_token_4                 => 'PRODUCT_NAME'
39118                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39119                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39120                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39121                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39122                                     ,p_ae_header_id            =>  NULL
39123                                        );
39124 
39125         IF (C_LEVEL_ERROR>= g_log_level) THEN
39126                  trace
39127                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39128                       ,p_level    => C_LEVEL_ERROR
39129                       ,p_module   => l_log_module);
39130         END IF;
39131       END IF;
39132    END IF;
39133    --
39134    --
39135    ------------------------------------------------------------------------------------------------
39136    -- 4219869 Business Flow
39137    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39138    -- Prior Entry.  Currently, the following code is always generated.
39139    ------------------------------------------------------------------------------------------------
39140    XLA_AE_LINES_PKG.ValidateCurrentLine;
39141 
39142    ------------------------------------------------------------------------------------
39143    -- 4219869 Business Flow
39144    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39145    ------------------------------------------------------------------------------------
39146    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39147 
39148    ----------------------------------------------------------------------------------
39149    -- 4219869 Business Flow
39150    -- Update journal entry status -- Need to generate this within IF <condition>
39151    ----------------------------------------------------------------------------------
39152    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39153          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39154          ,p_balance_type_code => l_balance_type_code
39155          );
39156 
39157    -------------------------------------------------------------------------------------------
39158    -- 4262811 - Generate the Accrual Reversal lines
39159    -------------------------------------------------------------------------------------------
39160    BEGIN
39161       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39162                               (g_array_event(p_event_id).array_value_num('header_index'));
39163       IF l_acc_rev_flag IS NULL THEN
39164          l_acc_rev_flag := 'N';
39165       END IF;
39166    EXCEPTION
39167       WHEN OTHERS THEN
39168          l_acc_rev_flag := 'N';
39169    END;
39170    --
39171    IF (l_acc_rev_flag = 'Y') THEN
39172 
39173        -- 4645092  ------------------------------------------------------------------------------
39174        -- To allow MPA report to determine if it should generate report process
39175        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39176        ------------------------------------------------------------------------------------------
39177 
39178        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39179        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39180    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39181    -- call ADRs
39182    -- Bug 4922099
39183    --
39184    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39185         (NVL(l_actual_upg_option, 'N') = 'O') OR
39186         (NVL(l_enc_upg_option, 'N') = 'O')
39187       )
39188    THEN
39189    NULL;
39190    --
39191    --
39192    
39193   l_ccid := AcctDerRule_6(
39194            p_application_id           => p_application_id
39195          , p_ae_header_id             => l_ae_header_id 
39196 , p_source_11 => p_source_11
39197          , x_transaction_coa_id       => l_adr_transaction_coa_id
39198          , x_accounting_coa_id        => l_adr_accounting_coa_id
39199          , x_value_type_code          => l_adr_value_type_code
39200          , p_side                     => 'NA'
39201    );
39202 
39203    xla_ae_lines_pkg.set_ccid(
39204     p_code_combination_id          => l_ccid
39205   , p_value_type_code              => l_adr_value_type_code
39206   , p_transaction_coa_id           => l_adr_transaction_coa_id
39207   , p_accounting_coa_id            => l_adr_accounting_coa_id
39208   , p_adr_code                     => 'CST_DEFAULT'
39209   , p_adr_type_code                => 'S'
39210   , p_component_type               => l_component_type
39211   , p_component_code               => l_component_code
39212   , p_component_type_code          => l_component_type_code
39213   , p_component_appl_id            => l_component_appl_id
39214   , p_amb_context_code             => l_amb_context_code
39215   , p_side                         => 'NA'
39216   );
39217 
39218 
39219    --
39220    --
39221    END IF;
39222 
39223        --
39224        -- Update the line information that should be overwritten
39225        --
39226        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39227                                          p_header_num   => 1);
39228        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39229 
39230        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39231 
39232        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39233           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39234        END IF;
39235 
39236       --
39237       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39238       --
39239       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39240           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39241       ELSE
39242           ---------------------------------------------------------------------------------------------------
39243           -- 4262811a Switch Sign
39244           ---------------------------------------------------------------------------------------------------
39245           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39246           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39247                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39248           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39249                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39250           -- 5132302
39251           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39252                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39253 
39254       END IF;
39255 
39256       -- 4955764
39257       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39258       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39259 
39260 
39261       XLA_AE_LINES_PKG.ValidateCurrentLine;
39262       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39263 
39264       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39265                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39266                ,p_balance_type_code => l_balance_type_code);
39267 
39268    END IF;
39269 
39270    -----------------------------------------------------------------------------------------
39271    -- 4262811 Multiperiod Accounting
39272    -----------------------------------------------------------------------------------------
39273      -- No MPA option is assigned.
39274 
39275 
39276 END IF;
39277 END IF;
39278 --
39279 
39280 --
39281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39282    trace
39283       (p_msg      => 'END of AcctLineType_94'
39284       ,p_level    => C_LEVEL_PROCEDURE
39285       ,p_module   => l_log_module);
39286 END IF;
39287 --
39288 EXCEPTION
39289   WHEN xla_exceptions_pkg.application_exception THEN
39290       RAISE;
39291   WHEN OTHERS THEN
39292        xla_exceptions_pkg.raise_message
39293            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_94');
39294 END AcctLineType_94;
39295 --
39296 
39297 ---------------------------------------
39298 --
39299 -- PRIVATE FUNCTION
39300 --         AcctLineType_95
39301 --
39302 ---------------------------------------
39303 PROCEDURE AcctLineType_95 (
39304   p_application_id        IN NUMBER
39305  ,p_event_id              IN NUMBER
39306  ,p_calculate_acctd_flag  IN VARCHAR2
39307  ,p_calculate_g_l_flag    IN VARCHAR2
39308  ,p_actual_flag           IN OUT VARCHAR2
39309  ,p_balance_type_code     OUT VARCHAR2
39310  ,p_gain_or_loss_ref      OUT VARCHAR2
39311  
39312 --TRANSACTION_ID
39313  , p_source_1            IN NUMBER
39314 --Item Concatenated Segments
39315  , p_source_2            IN VARCHAR2
39316 --Transaction Quantity
39317  , p_source_3            IN NUMBER
39318 --Transaction Unit of Measure Code
39319  , p_source_4            IN VARCHAR2
39320 --Inventory Transaction Type Description
39321  , p_source_5            IN VARCHAR2
39322 --Cost Management Default Account
39323  , p_source_11            IN NUMBER
39324 --DISTRIBUTION_IDENTIFIER
39325  , p_source_84            IN NUMBER
39326 --Distribution Type
39327  , p_source_85            IN VARCHAR2
39328  , p_source_85_meaning    IN VARCHAR2
39329 --Entered Currency Code
39330  , p_source_88            IN VARCHAR2
39331 --Entered Amount
39332  , p_source_91            IN NUMBER
39333 --Currency Conversion Date
39334  , p_source_92            IN DATE
39335 --Currency Conversion Rate
39336  , p_source_93            IN NUMBER
39337 --Currency Conversion Type
39338  , p_source_94            IN VARCHAR2
39339 --Accounted Amount
39340  , p_source_95            IN NUMBER
39341 --Accounting Line Type
39342  , p_source_97            IN NUMBER
39343 )
39344 IS
39345 
39346 l_component_type              VARCHAR2(80);
39347 l_component_code              VARCHAR2(30);
39348 l_component_type_code         VARCHAR2(1);
39349 l_component_appl_id           INTEGER;
39350 l_amb_context_code            VARCHAR2(30);
39351 l_entity_code                 VARCHAR2(30);
39352 l_event_class_code            VARCHAR2(30);
39353 l_ae_header_id                NUMBER;
39354 l_event_type_code             VARCHAR2(30);
39355 l_line_definition_code        VARCHAR2(30);
39356 l_line_definition_owner_code  VARCHAR2(1);
39357 --
39358 -- adr variables
39359 l_segment                     VARCHAR2(30);
39360 l_ccid                        NUMBER;
39361 l_adr_transaction_coa_id      NUMBER;
39362 l_adr_accounting_coa_id       NUMBER;
39363 l_adr_flexfield_segment_code  VARCHAR2(30);
39364 l_adr_flex_value_set_id       NUMBER;
39365 l_adr_value_type_code         VARCHAR2(30);
39366 l_adr_value_combination_id    NUMBER;
39367 l_adr_value_segment_code      VARCHAR2(30);
39368 
39369 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39370 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39371 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39372 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39373 
39374 -- 4262811 Variables ------------------------------------------------------------------------------------------
39375 l_entered_amt_idx             NUMBER;
39376 l_accted_amt_idx              NUMBER;
39377 l_acc_rev_flag                VARCHAR2(1);
39378 l_accrual_line_num            NUMBER;
39379 l_tmp_amt                     NUMBER;
39380 l_acc_rev_natural_side_code   VARCHAR2(1);
39381 
39382 l_num_entries                 NUMBER;
39383 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39384 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39385 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39386 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39387 l_recog_line_1                NUMBER;
39388 l_recog_line_2                NUMBER;
39389 
39390 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39391 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39392 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39393 
39394 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39395 
39396 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39397 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39398 
39399 ---------------------------------------------------------------------------------------------------------------
39400 
39401 
39402 --
39403 -- bulk performance
39404 --
39405 l_balance_type_code           VARCHAR2(1);
39406 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39407 l_log_module                  VARCHAR2(240);
39408 
39409 --
39410 -- Upgrade strategy
39411 --
39412 l_actual_upg_option           VARCHAR2(1);
39413 l_enc_upg_option           VARCHAR2(1);
39414 
39415 --
39416 BEGIN
39417 --
39418 IF g_log_enabled THEN
39419       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
39420 END IF;
39421 --
39422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39423 
39424       trace
39425          (p_msg      => 'BEGIN of AcctLineType_95'
39426          ,p_level    => C_LEVEL_PROCEDURE
39427          ,p_module   => l_log_module);
39428 
39429 END IF;
39430 --
39431 l_component_type             := 'AMB_JLT';
39432 l_component_code             := 'COST_VARIANCE';
39433 l_component_type_code        := 'S';
39434 l_component_appl_id          :=  707;
39435 l_amb_context_code           := 'DEFAULT';
39436 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
39437 l_event_class_code           := 'MTL_COST_UPD';
39438 l_event_type_code            := 'LAYER_COST_UPD';
39439 l_line_definition_owner_code := 'S';
39440 l_line_definition_code       := 'PI_LAYER_COST_UPDATE';
39441 --
39442 l_balance_type_code          := 'A';
39443 l_segment                     := NULL;
39444 l_ccid                        := NULL;
39445 l_adr_transaction_coa_id      := NULL;
39446 l_adr_accounting_coa_id       := NULL;
39447 l_adr_flexfield_segment_code  := NULL;
39448 l_adr_flex_value_set_id       := NULL;
39449 l_adr_value_type_code         := NULL;
39450 l_adr_value_combination_id    := NULL;
39451 l_adr_value_segment_code      := NULL;
39452 
39453 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39454 l_bflow_class_code           := '';    -- 4219869 Business Flow
39455 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39456 l_budgetary_control_flag     := 'N';
39457 
39458 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39459 l_bflow_applied_to_amt       := NULL; -- 5132302
39460 l_entered_amt_idx            := NULL;          -- 4262811
39461 l_accted_amt_idx             := NULL;          -- 4262811
39462 l_acc_rev_flag               := NULL;          -- 4262811
39463 l_accrual_line_num           := NULL;          -- 4262811
39464 l_tmp_amt                    := NULL;          -- 4262811
39465 --
39466  
39467 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39468     l_balance_type_code <> 'B' THEN
39469 IF NVL(p_source_97,9E125) =  13
39470  THEN 
39471 
39472    --
39473    XLA_AE_LINES_PKG.SetNewLine;
39474 
39475    p_balance_type_code          := l_balance_type_code;
39476    -- set the flag so later we will know whether the gain loss line needs to be created
39477    
39478    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39479      p_actual_flag :='A';
39480    END IF;
39481 
39482    --
39483    -- bulk performance
39484    --
39485    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39486                                       p_header_num   => 0); -- 4262811
39487    --
39488    -- set accounting line options
39489    --
39490    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39491            p_natural_side_code          => 'D'
39492          , p_gain_or_loss_flag          => 'N'
39493          , p_gl_transfer_mode_code      => 'S'
39494          , p_acct_entry_type_code       => 'A'
39495          , p_switch_side_flag           => 'Y'
39496          , p_merge_duplicate_code       => 'N'
39497          );
39498    --
39499    l_acc_rev_natural_side_code := 'C';  -- 4262811
39500    -- 
39501    --
39502    -- set accounting line type info
39503    --
39504    xla_ae_lines_pkg.SetAcctLineType
39505       (p_component_type             => l_component_type
39506       ,p_event_type_code            => l_event_type_code
39507       ,p_line_definition_owner_code => l_line_definition_owner_code
39508       ,p_line_definition_code       => l_line_definition_code
39509       ,p_accounting_line_code       => l_component_code
39510       ,p_accounting_line_type_code  => l_component_type_code
39511       ,p_accounting_line_appl_id    => l_component_appl_id
39512       ,p_amb_context_code           => l_amb_context_code
39513       ,p_entity_code                => l_entity_code
39514       ,p_event_class_code           => l_event_class_code);
39515    --
39516    -- set accounting class
39517    --
39518    xla_ae_lines_pkg.SetAcctClass(
39519            p_accounting_class_code  => 'COST_VARIANCE'
39520          , p_ae_header_id           => l_ae_header_id
39521          );
39522 
39523    --
39524    -- set rounding class
39525    --
39526    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39527                       'COST_VARIANCE';
39528 
39529    --
39530    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39531    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39532    --
39533    -- bulk performance
39534    --
39535    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39536 
39537    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39538       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39539 
39540    -- 4955764
39541    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39542       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39543 
39544    -- 4458381 Public Sector Enh
39545    
39546    --
39547    -- set accounting attributes for the line type
39548    --
39549    l_entered_amt_idx := 3;
39550    l_accted_amt_idx  := 8;
39551    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39552    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39553    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
39554    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39555    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
39556    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39557    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
39558    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39559    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
39560    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39561    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
39562    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39563    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
39564    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39565    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
39566    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39567    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
39568 
39569    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39570    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39571 
39572    ---------------------------------------------------------------------------------------------------------------
39573    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39574    ---------------------------------------------------------------------------------------------------------------
39575    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39576 
39577    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39578    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39579 
39580    IF xla_accounting_cache_pkg.GetValueChar
39581          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39582          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39583    AND l_bflow_method_code = 'PRIOR_ENTRY'
39584 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39585    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39586          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39587        )
39588    THEN
39589          xla_ae_lines_pkg.BflowUpgEntry
39590            (p_business_method_code    => l_bflow_method_code
39591            ,p_business_class_code     => l_bflow_class_code
39592            ,p_balance_type            => l_balance_type_code);
39593    ELSE
39594       NULL;
39595 -- No business flow processing for business flow method of NONE.
39596    END IF;
39597 
39598    --
39599    -- call analytical criteria
39600    --
39601    
39602    --
39603    -- call description
39604    --
39605    
39606 xla_ae_lines_pkg.SetLineDescription(
39607    p_ae_header_id => l_ae_header_id
39608   ,p_description  => Description_1 (
39609      p_application_id         => p_application_id
39610    , p_ae_header_id           => l_ae_header_id 
39611 , p_source_1 => p_source_1
39612 , p_source_2 => p_source_2
39613 , p_source_3 => p_source_3
39614 , p_source_4 => p_source_4
39615 , p_source_5 => p_source_5
39616    )
39617 );
39618 
39619 
39620    --
39621    -- call ADRs
39622    -- Bug 4922099
39623    --
39624    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39625         (NVL(l_actual_upg_option, 'N') = 'O') OR
39626         (NVL(l_enc_upg_option, 'N') = 'O')
39627       )
39628    THEN
39629    NULL;
39630    --
39631    --
39632    
39633   l_ccid := AcctDerRule_6(
39634            p_application_id           => p_application_id
39635          , p_ae_header_id             => l_ae_header_id 
39636 , p_source_11 => p_source_11
39637          , x_transaction_coa_id       => l_adr_transaction_coa_id
39638          , x_accounting_coa_id        => l_adr_accounting_coa_id
39639          , x_value_type_code          => l_adr_value_type_code
39640          , p_side                     => 'NA'
39641    );
39642 
39643    xla_ae_lines_pkg.set_ccid(
39644     p_code_combination_id          => l_ccid
39645   , p_value_type_code              => l_adr_value_type_code
39646   , p_transaction_coa_id           => l_adr_transaction_coa_id
39647   , p_accounting_coa_id            => l_adr_accounting_coa_id
39648   , p_adr_code                     => 'CST_DEFAULT'
39649   , p_adr_type_code                => 'S'
39650   , p_component_type               => l_component_type
39651   , p_component_code               => l_component_code
39652   , p_component_type_code          => l_component_type_code
39653   , p_component_appl_id            => l_component_appl_id
39654   , p_amb_context_code             => l_amb_context_code
39655   , p_side                         => 'NA'
39656   );
39657 
39658 
39659    --
39660    --
39661    END IF;
39662    --
39663    -- Bug 4922099
39664    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39665           (NVL(l_enc_upg_option, 'N') = 'O')
39666         ) AND
39667         (l_bflow_method_code = 'PRIOR_ENTRY')
39668       )
39669    THEN
39670       IF
39671       --
39672       1 = 2
39673       --
39674       THEN
39675       xla_accounting_err_pkg.build_message
39676                                     (p_appli_s_name            => 'XLA'
39677                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39678                                     ,p_token_1                 => 'LINE_NUMBER'
39679                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39680                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39681                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39682                                                                              l_component_type
39683                                                                             ,l_component_code
39684                                                                             ,l_component_type_code
39685                                                                             ,l_component_appl_id
39686                                                                             ,l_amb_context_code
39687                                                                             ,l_entity_code
39688                                                                             ,l_event_class_code
39689                                                                            )
39690                                     ,p_token_3                 => 'OWNER'
39691                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39692                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39693                                                                           ,p_lookup_code    => l_component_type_code
39694                                                                          )
39695                                     ,p_token_4                 => 'PRODUCT_NAME'
39696                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39697                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39698                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39699                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39700                                     ,p_ae_header_id            =>  NULL
39701                                        );
39702 
39703         IF (C_LEVEL_ERROR>= g_log_level) THEN
39704                  trace
39705                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39706                       ,p_level    => C_LEVEL_ERROR
39707                       ,p_module   => l_log_module);
39708         END IF;
39709       END IF;
39710    END IF;
39711    --
39712    --
39713    ------------------------------------------------------------------------------------------------
39714    -- 4219869 Business Flow
39715    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39716    -- Prior Entry.  Currently, the following code is always generated.
39717    ------------------------------------------------------------------------------------------------
39718    XLA_AE_LINES_PKG.ValidateCurrentLine;
39719 
39720    ------------------------------------------------------------------------------------
39721    -- 4219869 Business Flow
39722    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39723    ------------------------------------------------------------------------------------
39724    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39725 
39726    ----------------------------------------------------------------------------------
39727    -- 4219869 Business Flow
39728    -- Update journal entry status -- Need to generate this within IF <condition>
39729    ----------------------------------------------------------------------------------
39730    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39731          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39732          ,p_balance_type_code => l_balance_type_code
39733          );
39734 
39735    -------------------------------------------------------------------------------------------
39736    -- 4262811 - Generate the Accrual Reversal lines
39737    -------------------------------------------------------------------------------------------
39738    BEGIN
39739       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39740                               (g_array_event(p_event_id).array_value_num('header_index'));
39741       IF l_acc_rev_flag IS NULL THEN
39742          l_acc_rev_flag := 'N';
39743       END IF;
39744    EXCEPTION
39745       WHEN OTHERS THEN
39746          l_acc_rev_flag := 'N';
39747    END;
39748    --
39749    IF (l_acc_rev_flag = 'Y') THEN
39750 
39751        -- 4645092  ------------------------------------------------------------------------------
39752        -- To allow MPA report to determine if it should generate report process
39753        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39754        ------------------------------------------------------------------------------------------
39755 
39756        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39757        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39758    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39759    -- call ADRs
39760    -- Bug 4922099
39761    --
39762    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39763         (NVL(l_actual_upg_option, 'N') = 'O') OR
39764         (NVL(l_enc_upg_option, 'N') = 'O')
39765       )
39766    THEN
39767    NULL;
39768    --
39769    --
39770    
39771   l_ccid := AcctDerRule_6(
39772            p_application_id           => p_application_id
39773          , p_ae_header_id             => l_ae_header_id 
39774 , p_source_11 => p_source_11
39775          , x_transaction_coa_id       => l_adr_transaction_coa_id
39776          , x_accounting_coa_id        => l_adr_accounting_coa_id
39777          , x_value_type_code          => l_adr_value_type_code
39778          , p_side                     => 'NA'
39779    );
39780 
39781    xla_ae_lines_pkg.set_ccid(
39782     p_code_combination_id          => l_ccid
39783   , p_value_type_code              => l_adr_value_type_code
39784   , p_transaction_coa_id           => l_adr_transaction_coa_id
39785   , p_accounting_coa_id            => l_adr_accounting_coa_id
39786   , p_adr_code                     => 'CST_DEFAULT'
39787   , p_adr_type_code                => 'S'
39788   , p_component_type               => l_component_type
39789   , p_component_code               => l_component_code
39790   , p_component_type_code          => l_component_type_code
39791   , p_component_appl_id            => l_component_appl_id
39792   , p_amb_context_code             => l_amb_context_code
39793   , p_side                         => 'NA'
39794   );
39795 
39796 
39797    --
39798    --
39799    END IF;
39800 
39801        --
39802        -- Update the line information that should be overwritten
39803        --
39804        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39805                                          p_header_num   => 1);
39806        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39807 
39808        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39809 
39810        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39811           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39812        END IF;
39813 
39814       --
39815       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39816       --
39817       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39818           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39819       ELSE
39820           ---------------------------------------------------------------------------------------------------
39821           -- 4262811a Switch Sign
39822           ---------------------------------------------------------------------------------------------------
39823           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39824           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39825                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39826           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39827                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39828           -- 5132302
39829           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39830                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39831 
39832       END IF;
39833 
39834       -- 4955764
39835       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39836       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39837 
39838 
39839       XLA_AE_LINES_PKG.ValidateCurrentLine;
39840       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39841 
39842       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39843                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39844                ,p_balance_type_code => l_balance_type_code);
39845 
39846    END IF;
39847 
39848    -----------------------------------------------------------------------------------------
39849    -- 4262811 Multiperiod Accounting
39850    -----------------------------------------------------------------------------------------
39851      -- No MPA option is assigned.
39852 
39853 
39854 END IF;
39855 END IF;
39856 --
39857 
39858 --
39859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39860    trace
39861       (p_msg      => 'END of AcctLineType_95'
39862       ,p_level    => C_LEVEL_PROCEDURE
39863       ,p_module   => l_log_module);
39864 END IF;
39865 --
39866 EXCEPTION
39867   WHEN xla_exceptions_pkg.application_exception THEN
39868       RAISE;
39869   WHEN OTHERS THEN
39870        xla_exceptions_pkg.raise_message
39871            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_95');
39872 END AcctLineType_95;
39873 --
39874 
39875 ---------------------------------------
39876 --
39877 -- PRIVATE FUNCTION
39878 --         AcctLineType_96
39879 --
39880 ---------------------------------------
39881 PROCEDURE AcctLineType_96 (
39882   p_application_id        IN NUMBER
39883  ,p_event_id              IN NUMBER
39884  ,p_calculate_acctd_flag  IN VARCHAR2
39885  ,p_calculate_g_l_flag    IN VARCHAR2
39886  ,p_actual_flag           IN OUT VARCHAR2
39887  ,p_balance_type_code     OUT VARCHAR2
39888  ,p_gain_or_loss_ref      OUT VARCHAR2
39889  
39890 --TRANSACTION_ID
39891  , p_source_1            IN NUMBER
39892 --Item Concatenated Segments
39893  , p_source_2            IN VARCHAR2
39894 --Transaction Quantity
39895  , p_source_3            IN NUMBER
39896 --Transaction Unit of Measure Code
39897  , p_source_4            IN VARCHAR2
39898 --Inventory Transaction Type Description
39899  , p_source_5            IN VARCHAR2
39900 --Cost Management Default Account
39901  , p_source_11            IN NUMBER
39902 --DISTRIBUTION_IDENTIFIER
39903  , p_source_84            IN NUMBER
39904 --Distribution Type
39905  , p_source_85            IN VARCHAR2
39906  , p_source_85_meaning    IN VARCHAR2
39907 --Entered Currency Code
39908  , p_source_88            IN VARCHAR2
39909 --Entered Amount
39910  , p_source_91            IN NUMBER
39911 --Currency Conversion Date
39912  , p_source_92            IN DATE
39913 --Currency Conversion Rate
39914  , p_source_93            IN NUMBER
39915 --Currency Conversion Type
39916  , p_source_94            IN VARCHAR2
39917 --Accounted Amount
39918  , p_source_95            IN NUMBER
39919 --Accounting Line Type
39920  , p_source_97            IN NUMBER
39921 )
39922 IS
39923 
39924 l_component_type              VARCHAR2(80);
39925 l_component_code              VARCHAR2(30);
39926 l_component_type_code         VARCHAR2(1);
39927 l_component_appl_id           INTEGER;
39928 l_amb_context_code            VARCHAR2(30);
39929 l_entity_code                 VARCHAR2(30);
39930 l_event_class_code            VARCHAR2(30);
39931 l_ae_header_id                NUMBER;
39932 l_event_type_code             VARCHAR2(30);
39933 l_line_definition_code        VARCHAR2(30);
39934 l_line_definition_owner_code  VARCHAR2(1);
39935 --
39936 -- adr variables
39937 l_segment                     VARCHAR2(30);
39938 l_ccid                        NUMBER;
39939 l_adr_transaction_coa_id      NUMBER;
39940 l_adr_accounting_coa_id       NUMBER;
39941 l_adr_flexfield_segment_code  VARCHAR2(30);
39942 l_adr_flex_value_set_id       NUMBER;
39943 l_adr_value_type_code         VARCHAR2(30);
39944 l_adr_value_combination_id    NUMBER;
39945 l_adr_value_segment_code      VARCHAR2(30);
39946 
39947 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39948 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39949 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39950 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39951 
39952 -- 4262811 Variables ------------------------------------------------------------------------------------------
39953 l_entered_amt_idx             NUMBER;
39954 l_accted_amt_idx              NUMBER;
39955 l_acc_rev_flag                VARCHAR2(1);
39956 l_accrual_line_num            NUMBER;
39957 l_tmp_amt                     NUMBER;
39958 l_acc_rev_natural_side_code   VARCHAR2(1);
39959 
39960 l_num_entries                 NUMBER;
39961 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39962 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39963 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39964 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39965 l_recog_line_1                NUMBER;
39966 l_recog_line_2                NUMBER;
39967 
39968 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39969 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39970 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39971 
39972 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39973 
39974 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39975 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39976 
39977 ---------------------------------------------------------------------------------------------------------------
39978 
39979 
39980 --
39981 -- bulk performance
39982 --
39983 l_balance_type_code           VARCHAR2(1);
39984 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39985 l_log_module                  VARCHAR2(240);
39986 
39987 --
39988 -- Upgrade strategy
39989 --
39990 l_actual_upg_option           VARCHAR2(1);
39991 l_enc_upg_option           VARCHAR2(1);
39992 
39993 --
39994 BEGIN
39995 --
39996 IF g_log_enabled THEN
39997       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
39998 END IF;
39999 --
40000 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40001 
40002       trace
40003          (p_msg      => 'BEGIN of AcctLineType_96'
40004          ,p_level    => C_LEVEL_PROCEDURE
40005          ,p_module   => l_log_module);
40006 
40007 END IF;
40008 --
40009 l_component_type             := 'AMB_JLT';
40010 l_component_code             := 'COST_VARIANCE';
40011 l_component_type_code        := 'S';
40012 l_component_appl_id          :=  707;
40013 l_amb_context_code           := 'DEFAULT';
40014 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
40015 l_event_class_code           := 'MTL_COST_UPD';
40016 l_event_type_code            := 'STD_COST_UPD';
40017 l_line_definition_owner_code := 'S';
40018 l_line_definition_code       := 'PI_STD_COST_UPD';
40019 --
40020 l_balance_type_code          := 'A';
40021 l_segment                     := NULL;
40022 l_ccid                        := NULL;
40023 l_adr_transaction_coa_id      := NULL;
40024 l_adr_accounting_coa_id       := NULL;
40025 l_adr_flexfield_segment_code  := NULL;
40026 l_adr_flex_value_set_id       := NULL;
40027 l_adr_value_type_code         := NULL;
40028 l_adr_value_combination_id    := NULL;
40029 l_adr_value_segment_code      := NULL;
40030 
40031 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40032 l_bflow_class_code           := '';    -- 4219869 Business Flow
40033 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40034 l_budgetary_control_flag     := 'N';
40035 
40036 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40037 l_bflow_applied_to_amt       := NULL; -- 5132302
40038 l_entered_amt_idx            := NULL;          -- 4262811
40039 l_accted_amt_idx             := NULL;          -- 4262811
40040 l_acc_rev_flag               := NULL;          -- 4262811
40041 l_accrual_line_num           := NULL;          -- 4262811
40042 l_tmp_amt                    := NULL;          -- 4262811
40043 --
40044  
40045 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40046     l_balance_type_code <> 'B' THEN
40047 IF NVL(p_source_97,9E125) =  13
40048  THEN 
40049 
40050    --
40051    XLA_AE_LINES_PKG.SetNewLine;
40052 
40053    p_balance_type_code          := l_balance_type_code;
40054    -- set the flag so later we will know whether the gain loss line needs to be created
40055    
40056    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40057      p_actual_flag :='A';
40058    END IF;
40059 
40060    --
40061    -- bulk performance
40062    --
40063    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40064                                       p_header_num   => 0); -- 4262811
40065    --
40066    -- set accounting line options
40067    --
40068    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40069            p_natural_side_code          => 'D'
40070          , p_gain_or_loss_flag          => 'N'
40071          , p_gl_transfer_mode_code      => 'S'
40072          , p_acct_entry_type_code       => 'A'
40073          , p_switch_side_flag           => 'Y'
40074          , p_merge_duplicate_code       => 'N'
40075          );
40076    --
40077    l_acc_rev_natural_side_code := 'C';  -- 4262811
40078    -- 
40079    --
40080    -- set accounting line type info
40081    --
40082    xla_ae_lines_pkg.SetAcctLineType
40083       (p_component_type             => l_component_type
40084       ,p_event_type_code            => l_event_type_code
40085       ,p_line_definition_owner_code => l_line_definition_owner_code
40086       ,p_line_definition_code       => l_line_definition_code
40087       ,p_accounting_line_code       => l_component_code
40088       ,p_accounting_line_type_code  => l_component_type_code
40089       ,p_accounting_line_appl_id    => l_component_appl_id
40090       ,p_amb_context_code           => l_amb_context_code
40091       ,p_entity_code                => l_entity_code
40092       ,p_event_class_code           => l_event_class_code);
40093    --
40094    -- set accounting class
40095    --
40096    xla_ae_lines_pkg.SetAcctClass(
40097            p_accounting_class_code  => 'COST_VARIANCE'
40098          , p_ae_header_id           => l_ae_header_id
40099          );
40100 
40101    --
40102    -- set rounding class
40103    --
40104    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40105                       'COST_VARIANCE';
40106 
40107    --
40108    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40109    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40110    --
40111    -- bulk performance
40112    --
40113    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40114 
40115    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40116       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40117 
40118    -- 4955764
40119    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40120       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40121 
40122    -- 4458381 Public Sector Enh
40123    
40124    --
40125    -- set accounting attributes for the line type
40126    --
40127    l_entered_amt_idx := 3;
40128    l_accted_amt_idx  := 8;
40129    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40130    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40131    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
40132    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40133    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
40134    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40135    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
40136    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40137    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
40138    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40139    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
40140    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40141    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
40142    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40143    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
40144    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40145    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
40146 
40147    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40148    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40149 
40150    ---------------------------------------------------------------------------------------------------------------
40151    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40152    ---------------------------------------------------------------------------------------------------------------
40153    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40154 
40155    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40156    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40157 
40158    IF xla_accounting_cache_pkg.GetValueChar
40159          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40160          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40161    AND l_bflow_method_code = 'PRIOR_ENTRY'
40162 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40163    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40164          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40165        )
40166    THEN
40167          xla_ae_lines_pkg.BflowUpgEntry
40168            (p_business_method_code    => l_bflow_method_code
40169            ,p_business_class_code     => l_bflow_class_code
40170            ,p_balance_type            => l_balance_type_code);
40171    ELSE
40172       NULL;
40173 -- No business flow processing for business flow method of NONE.
40174    END IF;
40175 
40176    --
40177    -- call analytical criteria
40178    --
40179    
40180    --
40181    -- call description
40182    --
40183    
40184 xla_ae_lines_pkg.SetLineDescription(
40185    p_ae_header_id => l_ae_header_id
40186   ,p_description  => Description_1 (
40187      p_application_id         => p_application_id
40188    , p_ae_header_id           => l_ae_header_id 
40189 , p_source_1 => p_source_1
40190 , p_source_2 => p_source_2
40191 , p_source_3 => p_source_3
40192 , p_source_4 => p_source_4
40193 , p_source_5 => p_source_5
40194    )
40195 );
40196 
40197 
40198    --
40199    -- call ADRs
40200    -- Bug 4922099
40201    --
40202    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40203         (NVL(l_actual_upg_option, 'N') = 'O') OR
40204         (NVL(l_enc_upg_option, 'N') = 'O')
40205       )
40206    THEN
40207    NULL;
40208    --
40209    --
40210    
40211   l_ccid := AcctDerRule_6(
40212            p_application_id           => p_application_id
40213          , p_ae_header_id             => l_ae_header_id 
40214 , p_source_11 => p_source_11
40215          , x_transaction_coa_id       => l_adr_transaction_coa_id
40216          , x_accounting_coa_id        => l_adr_accounting_coa_id
40217          , x_value_type_code          => l_adr_value_type_code
40218          , p_side                     => 'NA'
40219    );
40220 
40221    xla_ae_lines_pkg.set_ccid(
40222     p_code_combination_id          => l_ccid
40223   , p_value_type_code              => l_adr_value_type_code
40224   , p_transaction_coa_id           => l_adr_transaction_coa_id
40225   , p_accounting_coa_id            => l_adr_accounting_coa_id
40226   , p_adr_code                     => 'CST_DEFAULT'
40227   , p_adr_type_code                => 'S'
40228   , p_component_type               => l_component_type
40229   , p_component_code               => l_component_code
40230   , p_component_type_code          => l_component_type_code
40231   , p_component_appl_id            => l_component_appl_id
40232   , p_amb_context_code             => l_amb_context_code
40233   , p_side                         => 'NA'
40234   );
40235 
40236 
40237    --
40238    --
40239    END IF;
40240    --
40241    -- Bug 4922099
40242    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40243           (NVL(l_enc_upg_option, 'N') = 'O')
40244         ) AND
40245         (l_bflow_method_code = 'PRIOR_ENTRY')
40246       )
40247    THEN
40248       IF
40249       --
40250       1 = 2
40251       --
40252       THEN
40253       xla_accounting_err_pkg.build_message
40254                                     (p_appli_s_name            => 'XLA'
40255                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40256                                     ,p_token_1                 => 'LINE_NUMBER'
40257                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40258                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40259                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40260                                                                              l_component_type
40261                                                                             ,l_component_code
40262                                                                             ,l_component_type_code
40263                                                                             ,l_component_appl_id
40264                                                                             ,l_amb_context_code
40265                                                                             ,l_entity_code
40266                                                                             ,l_event_class_code
40267                                                                            )
40268                                     ,p_token_3                 => 'OWNER'
40269                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40270                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40271                                                                           ,p_lookup_code    => l_component_type_code
40272                                                                          )
40273                                     ,p_token_4                 => 'PRODUCT_NAME'
40274                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40275                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40276                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40277                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40278                                     ,p_ae_header_id            =>  NULL
40279                                        );
40280 
40281         IF (C_LEVEL_ERROR>= g_log_level) THEN
40282                  trace
40283                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40284                       ,p_level    => C_LEVEL_ERROR
40285                       ,p_module   => l_log_module);
40286         END IF;
40287       END IF;
40288    END IF;
40289    --
40290    --
40291    ------------------------------------------------------------------------------------------------
40292    -- 4219869 Business Flow
40293    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40294    -- Prior Entry.  Currently, the following code is always generated.
40295    ------------------------------------------------------------------------------------------------
40296    XLA_AE_LINES_PKG.ValidateCurrentLine;
40297 
40298    ------------------------------------------------------------------------------------
40299    -- 4219869 Business Flow
40300    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40301    ------------------------------------------------------------------------------------
40302    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40303 
40304    ----------------------------------------------------------------------------------
40305    -- 4219869 Business Flow
40306    -- Update journal entry status -- Need to generate this within IF <condition>
40307    ----------------------------------------------------------------------------------
40308    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40309          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40310          ,p_balance_type_code => l_balance_type_code
40311          );
40312 
40313    -------------------------------------------------------------------------------------------
40314    -- 4262811 - Generate the Accrual Reversal lines
40315    -------------------------------------------------------------------------------------------
40316    BEGIN
40317       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40318                               (g_array_event(p_event_id).array_value_num('header_index'));
40319       IF l_acc_rev_flag IS NULL THEN
40320          l_acc_rev_flag := 'N';
40321       END IF;
40322    EXCEPTION
40323       WHEN OTHERS THEN
40324          l_acc_rev_flag := 'N';
40325    END;
40326    --
40327    IF (l_acc_rev_flag = 'Y') THEN
40328 
40329        -- 4645092  ------------------------------------------------------------------------------
40330        -- To allow MPA report to determine if it should generate report process
40331        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40332        ------------------------------------------------------------------------------------------
40333 
40334        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40335        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40336    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40337    -- call ADRs
40338    -- Bug 4922099
40339    --
40340    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40341         (NVL(l_actual_upg_option, 'N') = 'O') OR
40342         (NVL(l_enc_upg_option, 'N') = 'O')
40343       )
40344    THEN
40345    NULL;
40346    --
40347    --
40348    
40349   l_ccid := AcctDerRule_6(
40350            p_application_id           => p_application_id
40351          , p_ae_header_id             => l_ae_header_id 
40352 , p_source_11 => p_source_11
40353          , x_transaction_coa_id       => l_adr_transaction_coa_id
40354          , x_accounting_coa_id        => l_adr_accounting_coa_id
40355          , x_value_type_code          => l_adr_value_type_code
40356          , p_side                     => 'NA'
40357    );
40358 
40359    xla_ae_lines_pkg.set_ccid(
40360     p_code_combination_id          => l_ccid
40361   , p_value_type_code              => l_adr_value_type_code
40362   , p_transaction_coa_id           => l_adr_transaction_coa_id
40363   , p_accounting_coa_id            => l_adr_accounting_coa_id
40364   , p_adr_code                     => 'CST_DEFAULT'
40365   , p_adr_type_code                => 'S'
40366   , p_component_type               => l_component_type
40367   , p_component_code               => l_component_code
40368   , p_component_type_code          => l_component_type_code
40369   , p_component_appl_id            => l_component_appl_id
40370   , p_amb_context_code             => l_amb_context_code
40371   , p_side                         => 'NA'
40372   );
40373 
40374 
40375    --
40376    --
40377    END IF;
40378 
40379        --
40380        -- Update the line information that should be overwritten
40381        --
40382        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40383                                          p_header_num   => 1);
40384        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40385 
40386        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40387 
40388        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40389           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40390        END IF;
40391 
40392       --
40393       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40394       --
40395       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40396           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40397       ELSE
40398           ---------------------------------------------------------------------------------------------------
40399           -- 4262811a Switch Sign
40400           ---------------------------------------------------------------------------------------------------
40401           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40402           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40403                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40404           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40405                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40406           -- 5132302
40407           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40408                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40409 
40410       END IF;
40411 
40412       -- 4955764
40413       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40414       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40415 
40416 
40417       XLA_AE_LINES_PKG.ValidateCurrentLine;
40418       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40419 
40420       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40421                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40422                ,p_balance_type_code => l_balance_type_code);
40423 
40424    END IF;
40425 
40426    -----------------------------------------------------------------------------------------
40427    -- 4262811 Multiperiod Accounting
40428    -----------------------------------------------------------------------------------------
40429      -- No MPA option is assigned.
40430 
40431 
40432 END IF;
40433 END IF;
40434 --
40435 
40436 --
40437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40438    trace
40439       (p_msg      => 'END of AcctLineType_96'
40440       ,p_level    => C_LEVEL_PROCEDURE
40441       ,p_module   => l_log_module);
40442 END IF;
40443 --
40444 EXCEPTION
40445   WHEN xla_exceptions_pkg.application_exception THEN
40446       RAISE;
40447   WHEN OTHERS THEN
40448        xla_exceptions_pkg.raise_message
40449            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_96');
40450 END AcctLineType_96;
40451 --
40452 
40453 ---------------------------------------
40454 --
40455 -- PRIVATE FUNCTION
40456 --         AcctLineType_97
40457 --
40458 ---------------------------------------
40459 PROCEDURE AcctLineType_97 (
40460   p_application_id        IN NUMBER
40461  ,p_event_id              IN NUMBER
40462  ,p_calculate_acctd_flag  IN VARCHAR2
40463  ,p_calculate_g_l_flag    IN VARCHAR2
40464  ,p_actual_flag           IN OUT VARCHAR2
40465  ,p_balance_type_code     OUT VARCHAR2
40466  ,p_gain_or_loss_ref      OUT VARCHAR2
40467  
40468 --TRANSACTION_ID
40469  , p_source_1            IN NUMBER
40470 --Item Concatenated Segments
40471  , p_source_2            IN VARCHAR2
40472 --Transaction Quantity
40473  , p_source_3            IN NUMBER
40474 --Transaction Unit of Measure Code
40475  , p_source_4            IN VARCHAR2
40476 --Inventory Transaction Type Description
40477  , p_source_5            IN VARCHAR2
40478 --Cost Management Default Account
40479  , p_source_11            IN NUMBER
40480 --DISTRIBUTION_IDENTIFIER
40481  , p_source_84            IN NUMBER
40482 --Distribution Type
40483  , p_source_85            IN VARCHAR2
40484  , p_source_85_meaning    IN VARCHAR2
40485 --Entered Currency Code
40486  , p_source_88            IN VARCHAR2
40487 --Entered Amount
40488  , p_source_91            IN NUMBER
40489 --Currency Conversion Date
40490  , p_source_92            IN DATE
40491 --Currency Conversion Rate
40492  , p_source_93            IN NUMBER
40493 --Currency Conversion Type
40494  , p_source_94            IN VARCHAR2
40495 --Accounted Amount
40496  , p_source_95            IN NUMBER
40497 --Accounting Line Type
40498  , p_source_97            IN NUMBER
40499 )
40500 IS
40501 
40502 l_component_type              VARCHAR2(80);
40503 l_component_code              VARCHAR2(30);
40504 l_component_type_code         VARCHAR2(1);
40505 l_component_appl_id           INTEGER;
40506 l_amb_context_code            VARCHAR2(30);
40507 l_entity_code                 VARCHAR2(30);
40508 l_event_class_code            VARCHAR2(30);
40509 l_ae_header_id                NUMBER;
40510 l_event_type_code             VARCHAR2(30);
40511 l_line_definition_code        VARCHAR2(30);
40512 l_line_definition_owner_code  VARCHAR2(1);
40513 --
40514 -- adr variables
40515 l_segment                     VARCHAR2(30);
40516 l_ccid                        NUMBER;
40517 l_adr_transaction_coa_id      NUMBER;
40518 l_adr_accounting_coa_id       NUMBER;
40519 l_adr_flexfield_segment_code  VARCHAR2(30);
40520 l_adr_flex_value_set_id       NUMBER;
40521 l_adr_value_type_code         VARCHAR2(30);
40522 l_adr_value_combination_id    NUMBER;
40523 l_adr_value_segment_code      VARCHAR2(30);
40524 
40525 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40526 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40527 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40528 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40529 
40530 -- 4262811 Variables ------------------------------------------------------------------------------------------
40531 l_entered_amt_idx             NUMBER;
40532 l_accted_amt_idx              NUMBER;
40533 l_acc_rev_flag                VARCHAR2(1);
40534 l_accrual_line_num            NUMBER;
40535 l_tmp_amt                     NUMBER;
40536 l_acc_rev_natural_side_code   VARCHAR2(1);
40537 
40538 l_num_entries                 NUMBER;
40539 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40540 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40541 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40542 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40543 l_recog_line_1                NUMBER;
40544 l_recog_line_2                NUMBER;
40545 
40546 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40547 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40548 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40549 
40550 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40551 
40552 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40553 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40554 
40555 ---------------------------------------------------------------------------------------------------------------
40556 
40557 
40558 --
40559 -- bulk performance
40560 --
40561 l_balance_type_code           VARCHAR2(1);
40562 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40563 l_log_module                  VARCHAR2(240);
40564 
40565 --
40566 -- Upgrade strategy
40567 --
40568 l_actual_upg_option           VARCHAR2(1);
40569 l_enc_upg_option           VARCHAR2(1);
40570 
40571 --
40572 BEGIN
40573 --
40574 IF g_log_enabled THEN
40575       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
40576 END IF;
40577 --
40578 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40579 
40580       trace
40581          (p_msg      => 'BEGIN of AcctLineType_97'
40582          ,p_level    => C_LEVEL_PROCEDURE
40583          ,p_module   => l_log_module);
40584 
40585 END IF;
40586 --
40587 l_component_type             := 'AMB_JLT';
40588 l_component_code             := 'COST_VARIANCE';
40589 l_component_type_code        := 'S';
40590 l_component_appl_id          :=  707;
40591 l_amb_context_code           := 'DEFAULT';
40592 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
40593 l_event_class_code           := 'USER_DEFINE';
40594 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
40595 l_line_definition_owner_code := 'S';
40596 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
40597 --
40598 l_balance_type_code          := 'A';
40599 l_segment                     := NULL;
40600 l_ccid                        := NULL;
40601 l_adr_transaction_coa_id      := NULL;
40602 l_adr_accounting_coa_id       := NULL;
40603 l_adr_flexfield_segment_code  := NULL;
40604 l_adr_flex_value_set_id       := NULL;
40605 l_adr_value_type_code         := NULL;
40606 l_adr_value_combination_id    := NULL;
40607 l_adr_value_segment_code      := NULL;
40608 
40609 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40610 l_bflow_class_code           := '';    -- 4219869 Business Flow
40611 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40612 l_budgetary_control_flag     := 'N';
40613 
40614 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40615 l_bflow_applied_to_amt       := NULL; -- 5132302
40616 l_entered_amt_idx            := NULL;          -- 4262811
40617 l_accted_amt_idx             := NULL;          -- 4262811
40618 l_acc_rev_flag               := NULL;          -- 4262811
40619 l_accrual_line_num           := NULL;          -- 4262811
40620 l_tmp_amt                    := NULL;          -- 4262811
40621 --
40622  
40623 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40624     l_balance_type_code <> 'B' THEN
40625 IF NVL(p_source_97,9E125) =  13
40626  THEN 
40627 
40628    --
40629    XLA_AE_LINES_PKG.SetNewLine;
40630 
40631    p_balance_type_code          := l_balance_type_code;
40632    -- set the flag so later we will know whether the gain loss line needs to be created
40633    
40634    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40635      p_actual_flag :='A';
40636    END IF;
40637 
40638    --
40639    -- bulk performance
40640    --
40641    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40642                                       p_header_num   => 0); -- 4262811
40643    --
40644    -- set accounting line options
40645    --
40646    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40647            p_natural_side_code          => 'D'
40648          , p_gain_or_loss_flag          => 'N'
40649          , p_gl_transfer_mode_code      => 'S'
40650          , p_acct_entry_type_code       => 'A'
40651          , p_switch_side_flag           => 'Y'
40652          , p_merge_duplicate_code       => 'N'
40653          );
40654    --
40655    l_acc_rev_natural_side_code := 'C';  -- 4262811
40656    -- 
40657    --
40658    -- set accounting line type info
40659    --
40660    xla_ae_lines_pkg.SetAcctLineType
40661       (p_component_type             => l_component_type
40662       ,p_event_type_code            => l_event_type_code
40663       ,p_line_definition_owner_code => l_line_definition_owner_code
40664       ,p_line_definition_code       => l_line_definition_code
40665       ,p_accounting_line_code       => l_component_code
40666       ,p_accounting_line_type_code  => l_component_type_code
40667       ,p_accounting_line_appl_id    => l_component_appl_id
40668       ,p_amb_context_code           => l_amb_context_code
40669       ,p_entity_code                => l_entity_code
40670       ,p_event_class_code           => l_event_class_code);
40671    --
40672    -- set accounting class
40673    --
40674    xla_ae_lines_pkg.SetAcctClass(
40675            p_accounting_class_code  => 'COST_VARIANCE'
40676          , p_ae_header_id           => l_ae_header_id
40677          );
40678 
40679    --
40680    -- set rounding class
40681    --
40682    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40683                       'COST_VARIANCE';
40684 
40685    --
40686    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40687    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40688    --
40689    -- bulk performance
40690    --
40691    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40692 
40693    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40694       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40695 
40696    -- 4955764
40697    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40698       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40699 
40700    -- 4458381 Public Sector Enh
40701    
40702    --
40703    -- set accounting attributes for the line type
40704    --
40705    l_entered_amt_idx := 3;
40706    l_accted_amt_idx  := 8;
40707    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40708    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40709    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
40710    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40711    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
40712    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40713    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
40714    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40715    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
40716    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40717    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
40718    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40719    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
40720    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40721    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
40722    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40723    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
40724 
40725    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40726    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40727 
40728    ---------------------------------------------------------------------------------------------------------------
40729    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40730    ---------------------------------------------------------------------------------------------------------------
40731    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40732 
40733    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40734    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40735 
40736    IF xla_accounting_cache_pkg.GetValueChar
40737          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40738          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40739    AND l_bflow_method_code = 'PRIOR_ENTRY'
40740 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40741    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40742          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40743        )
40744    THEN
40745          xla_ae_lines_pkg.BflowUpgEntry
40746            (p_business_method_code    => l_bflow_method_code
40747            ,p_business_class_code     => l_bflow_class_code
40748            ,p_balance_type            => l_balance_type_code);
40749    ELSE
40750       NULL;
40751 -- No business flow processing for business flow method of NONE.
40752    END IF;
40753 
40754    --
40755    -- call analytical criteria
40756    --
40757    
40758    --
40759    -- call description
40760    --
40761    
40762 xla_ae_lines_pkg.SetLineDescription(
40763    p_ae_header_id => l_ae_header_id
40764   ,p_description  => Description_1 (
40765      p_application_id         => p_application_id
40766    , p_ae_header_id           => l_ae_header_id 
40767 , p_source_1 => p_source_1
40768 , p_source_2 => p_source_2
40769 , p_source_3 => p_source_3
40770 , p_source_4 => p_source_4
40771 , p_source_5 => p_source_5
40772    )
40773 );
40774 
40775 
40776    --
40777    -- call ADRs
40778    -- Bug 4922099
40779    --
40780    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40781         (NVL(l_actual_upg_option, 'N') = 'O') OR
40782         (NVL(l_enc_upg_option, 'N') = 'O')
40783       )
40784    THEN
40785    NULL;
40786    --
40787    --
40788    
40789   l_ccid := AcctDerRule_6(
40790            p_application_id           => p_application_id
40791          , p_ae_header_id             => l_ae_header_id 
40792 , p_source_11 => p_source_11
40793          , x_transaction_coa_id       => l_adr_transaction_coa_id
40794          , x_accounting_coa_id        => l_adr_accounting_coa_id
40795          , x_value_type_code          => l_adr_value_type_code
40796          , p_side                     => 'NA'
40797    );
40798 
40799    xla_ae_lines_pkg.set_ccid(
40800     p_code_combination_id          => l_ccid
40801   , p_value_type_code              => l_adr_value_type_code
40802   , p_transaction_coa_id           => l_adr_transaction_coa_id
40803   , p_accounting_coa_id            => l_adr_accounting_coa_id
40804   , p_adr_code                     => 'CST_DEFAULT'
40805   , p_adr_type_code                => 'S'
40806   , p_component_type               => l_component_type
40807   , p_component_code               => l_component_code
40808   , p_component_type_code          => l_component_type_code
40809   , p_component_appl_id            => l_component_appl_id
40810   , p_amb_context_code             => l_amb_context_code
40811   , p_side                         => 'NA'
40812   );
40813 
40814 
40815    --
40816    --
40817    END IF;
40818    --
40819    -- Bug 4922099
40820    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40821           (NVL(l_enc_upg_option, 'N') = 'O')
40822         ) AND
40823         (l_bflow_method_code = 'PRIOR_ENTRY')
40824       )
40825    THEN
40826       IF
40827       --
40828       1 = 2
40829       --
40830       THEN
40831       xla_accounting_err_pkg.build_message
40832                                     (p_appli_s_name            => 'XLA'
40833                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40834                                     ,p_token_1                 => 'LINE_NUMBER'
40835                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40836                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40837                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40838                                                                              l_component_type
40839                                                                             ,l_component_code
40840                                                                             ,l_component_type_code
40841                                                                             ,l_component_appl_id
40842                                                                             ,l_amb_context_code
40843                                                                             ,l_entity_code
40844                                                                             ,l_event_class_code
40845                                                                            )
40846                                     ,p_token_3                 => 'OWNER'
40847                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40848                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40849                                                                           ,p_lookup_code    => l_component_type_code
40850                                                                          )
40851                                     ,p_token_4                 => 'PRODUCT_NAME'
40852                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40853                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40854                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40855                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40856                                     ,p_ae_header_id            =>  NULL
40857                                        );
40858 
40859         IF (C_LEVEL_ERROR>= g_log_level) THEN
40860                  trace
40861                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40862                       ,p_level    => C_LEVEL_ERROR
40863                       ,p_module   => l_log_module);
40864         END IF;
40865       END IF;
40866    END IF;
40867    --
40868    --
40869    ------------------------------------------------------------------------------------------------
40870    -- 4219869 Business Flow
40871    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40872    -- Prior Entry.  Currently, the following code is always generated.
40873    ------------------------------------------------------------------------------------------------
40874    XLA_AE_LINES_PKG.ValidateCurrentLine;
40875 
40876    ------------------------------------------------------------------------------------
40877    -- 4219869 Business Flow
40878    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40879    ------------------------------------------------------------------------------------
40880    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40881 
40882    ----------------------------------------------------------------------------------
40883    -- 4219869 Business Flow
40884    -- Update journal entry status -- Need to generate this within IF <condition>
40885    ----------------------------------------------------------------------------------
40886    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40887          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40888          ,p_balance_type_code => l_balance_type_code
40889          );
40890 
40891    -------------------------------------------------------------------------------------------
40892    -- 4262811 - Generate the Accrual Reversal lines
40893    -------------------------------------------------------------------------------------------
40894    BEGIN
40895       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40896                               (g_array_event(p_event_id).array_value_num('header_index'));
40897       IF l_acc_rev_flag IS NULL THEN
40898          l_acc_rev_flag := 'N';
40899       END IF;
40900    EXCEPTION
40901       WHEN OTHERS THEN
40902          l_acc_rev_flag := 'N';
40903    END;
40904    --
40905    IF (l_acc_rev_flag = 'Y') THEN
40906 
40907        -- 4645092  ------------------------------------------------------------------------------
40908        -- To allow MPA report to determine if it should generate report process
40909        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40910        ------------------------------------------------------------------------------------------
40911 
40912        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40913        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40914    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40915    -- call ADRs
40916    -- Bug 4922099
40917    --
40918    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40919         (NVL(l_actual_upg_option, 'N') = 'O') OR
40920         (NVL(l_enc_upg_option, 'N') = 'O')
40921       )
40922    THEN
40923    NULL;
40924    --
40925    --
40926    
40927   l_ccid := AcctDerRule_6(
40928            p_application_id           => p_application_id
40929          , p_ae_header_id             => l_ae_header_id 
40930 , p_source_11 => p_source_11
40931          , x_transaction_coa_id       => l_adr_transaction_coa_id
40932          , x_accounting_coa_id        => l_adr_accounting_coa_id
40933          , x_value_type_code          => l_adr_value_type_code
40934          , p_side                     => 'NA'
40935    );
40936 
40937    xla_ae_lines_pkg.set_ccid(
40938     p_code_combination_id          => l_ccid
40939   , p_value_type_code              => l_adr_value_type_code
40940   , p_transaction_coa_id           => l_adr_transaction_coa_id
40941   , p_accounting_coa_id            => l_adr_accounting_coa_id
40942   , p_adr_code                     => 'CST_DEFAULT'
40943   , p_adr_type_code                => 'S'
40944   , p_component_type               => l_component_type
40945   , p_component_code               => l_component_code
40946   , p_component_type_code          => l_component_type_code
40947   , p_component_appl_id            => l_component_appl_id
40948   , p_amb_context_code             => l_amb_context_code
40949   , p_side                         => 'NA'
40950   );
40951 
40952 
40953    --
40954    --
40955    END IF;
40956 
40957        --
40958        -- Update the line information that should be overwritten
40959        --
40960        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40961                                          p_header_num   => 1);
40962        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40963 
40964        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40965 
40966        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40967           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40968        END IF;
40969 
40970       --
40971       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40972       --
40973       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40974           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40975       ELSE
40976           ---------------------------------------------------------------------------------------------------
40977           -- 4262811a Switch Sign
40978           ---------------------------------------------------------------------------------------------------
40979           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40980           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40981                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40982           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40983                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40984           -- 5132302
40985           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40986                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40987 
40988       END IF;
40989 
40990       -- 4955764
40991       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40992       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40993 
40994 
40995       XLA_AE_LINES_PKG.ValidateCurrentLine;
40996       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40997 
40998       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40999                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41000                ,p_balance_type_code => l_balance_type_code);
41001 
41002    END IF;
41003 
41004    -----------------------------------------------------------------------------------------
41005    -- 4262811 Multiperiod Accounting
41006    -----------------------------------------------------------------------------------------
41007      -- No MPA option is assigned.
41008 
41009 
41010 END IF;
41011 END IF;
41012 --
41013 
41014 --
41015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41016    trace
41017       (p_msg      => 'END of AcctLineType_97'
41018       ,p_level    => C_LEVEL_PROCEDURE
41019       ,p_module   => l_log_module);
41020 END IF;
41021 --
41022 EXCEPTION
41023   WHEN xla_exceptions_pkg.application_exception THEN
41024       RAISE;
41025   WHEN OTHERS THEN
41026        xla_exceptions_pkg.raise_message
41027            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_97');
41028 END AcctLineType_97;
41029 --
41030 
41031 ---------------------------------------
41032 --
41033 -- PRIVATE FUNCTION
41034 --         AcctLineType_98
41035 --
41036 ---------------------------------------
41037 PROCEDURE AcctLineType_98 (
41038   p_application_id        IN NUMBER
41039  ,p_event_id              IN NUMBER
41040  ,p_calculate_acctd_flag  IN VARCHAR2
41041  ,p_calculate_g_l_flag    IN VARCHAR2
41042  ,p_actual_flag           IN OUT VARCHAR2
41043  ,p_balance_type_code     OUT VARCHAR2
41044  ,p_gain_or_loss_ref      OUT VARCHAR2
41045  
41046 --TRANSACTION_ID
41047  , p_source_1            IN NUMBER
41048 --Item Concatenated Segments
41049  , p_source_2            IN VARCHAR2
41050 --Transaction Quantity
41051  , p_source_3            IN NUMBER
41052 --Transaction Unit of Measure Code
41053  , p_source_4            IN VARCHAR2
41054 --Inventory Transaction Type Description
41055  , p_source_5            IN VARCHAR2
41056 --Product Line Accounting Category Average Cost Variance Account
41057  , p_source_23            IN NUMBER
41058 --DISTRIBUTION_IDENTIFIER
41059  , p_source_84            IN NUMBER
41060 --Distribution Type
41061  , p_source_85            IN VARCHAR2
41062  , p_source_85_meaning    IN VARCHAR2
41063 --Entered Currency Code
41064  , p_source_88            IN VARCHAR2
41065 --Entered Amount
41066  , p_source_91            IN NUMBER
41067 --Currency Conversion Date
41068  , p_source_92            IN DATE
41069 --Currency Conversion Rate
41070  , p_source_93            IN NUMBER
41071 --Currency Conversion Type
41072  , p_source_94            IN VARCHAR2
41073 --Accounted Amount
41074  , p_source_95            IN NUMBER
41075 --Accounting Line Type
41076  , p_source_97            IN NUMBER
41077 )
41078 IS
41079 
41080 l_component_type              VARCHAR2(80);
41081 l_component_code              VARCHAR2(30);
41082 l_component_type_code         VARCHAR2(1);
41083 l_component_appl_id           INTEGER;
41084 l_amb_context_code            VARCHAR2(30);
41085 l_entity_code                 VARCHAR2(30);
41086 l_event_class_code            VARCHAR2(30);
41087 l_ae_header_id                NUMBER;
41088 l_event_type_code             VARCHAR2(30);
41089 l_line_definition_code        VARCHAR2(30);
41090 l_line_definition_owner_code  VARCHAR2(1);
41091 --
41092 -- adr variables
41093 l_segment                     VARCHAR2(30);
41094 l_ccid                        NUMBER;
41095 l_adr_transaction_coa_id      NUMBER;
41096 l_adr_accounting_coa_id       NUMBER;
41097 l_adr_flexfield_segment_code  VARCHAR2(30);
41098 l_adr_flex_value_set_id       NUMBER;
41099 l_adr_value_type_code         VARCHAR2(30);
41100 l_adr_value_combination_id    NUMBER;
41101 l_adr_value_segment_code      VARCHAR2(30);
41102 
41103 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41104 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41105 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41106 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41107 
41108 -- 4262811 Variables ------------------------------------------------------------------------------------------
41109 l_entered_amt_idx             NUMBER;
41110 l_accted_amt_idx              NUMBER;
41111 l_acc_rev_flag                VARCHAR2(1);
41112 l_accrual_line_num            NUMBER;
41113 l_tmp_amt                     NUMBER;
41114 l_acc_rev_natural_side_code   VARCHAR2(1);
41115 
41116 l_num_entries                 NUMBER;
41117 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41118 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41119 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41120 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41121 l_recog_line_1                NUMBER;
41122 l_recog_line_2                NUMBER;
41123 
41124 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41125 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41126 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41127 
41128 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41129 
41130 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41131 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41132 
41133 ---------------------------------------------------------------------------------------------------------------
41134 
41135 
41136 --
41137 -- bulk performance
41138 --
41139 l_balance_type_code           VARCHAR2(1);
41140 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41141 l_log_module                  VARCHAR2(240);
41142 
41143 --
41144 -- Upgrade strategy
41145 --
41146 l_actual_upg_option           VARCHAR2(1);
41147 l_enc_upg_option           VARCHAR2(1);
41148 
41149 --
41150 BEGIN
41151 --
41152 IF g_log_enabled THEN
41153       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
41154 END IF;
41155 --
41156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41157 
41158       trace
41159          (p_msg      => 'BEGIN of AcctLineType_98'
41160          ,p_level    => C_LEVEL_PROCEDURE
41161          ,p_module   => l_log_module);
41162 
41163 END IF;
41164 --
41165 l_component_type             := 'AMB_JLT';
41166 l_component_code             := 'COST_VARIANCE';
41167 l_component_type_code        := 'S';
41168 l_component_appl_id          :=  707;
41169 l_amb_context_code           := 'DEFAULT';
41170 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
41171 l_event_class_code           := 'USER_DEFINE';
41172 l_event_type_code            := 'UMISC_ISSUE';
41173 l_line_definition_owner_code := 'S';
41174 l_line_definition_code       := 'PI_USER_ISSUE';
41175 --
41176 l_balance_type_code          := 'A';
41177 l_segment                     := NULL;
41178 l_ccid                        := NULL;
41179 l_adr_transaction_coa_id      := NULL;
41180 l_adr_accounting_coa_id       := NULL;
41181 l_adr_flexfield_segment_code  := NULL;
41182 l_adr_flex_value_set_id       := NULL;
41183 l_adr_value_type_code         := NULL;
41184 l_adr_value_combination_id    := NULL;
41185 l_adr_value_segment_code      := NULL;
41186 
41187 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41188 l_bflow_class_code           := '';    -- 4219869 Business Flow
41189 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41190 l_budgetary_control_flag     := 'N';
41191 
41192 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41193 l_bflow_applied_to_amt       := NULL; -- 5132302
41194 l_entered_amt_idx            := NULL;          -- 4262811
41195 l_accted_amt_idx             := NULL;          -- 4262811
41196 l_acc_rev_flag               := NULL;          -- 4262811
41197 l_accrual_line_num           := NULL;          -- 4262811
41198 l_tmp_amt                    := NULL;          -- 4262811
41199 --
41200  
41201 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41202     l_balance_type_code <> 'B' THEN
41203 IF NVL(p_source_97,9E125) =  13
41204  THEN 
41205 
41206    --
41207    XLA_AE_LINES_PKG.SetNewLine;
41208 
41209    p_balance_type_code          := l_balance_type_code;
41210    -- set the flag so later we will know whether the gain loss line needs to be created
41211    
41212    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41213      p_actual_flag :='A';
41214    END IF;
41215 
41216    --
41217    -- bulk performance
41218    --
41219    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41220                                       p_header_num   => 0); -- 4262811
41221    --
41222    -- set accounting line options
41223    --
41224    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41225            p_natural_side_code          => 'D'
41226          , p_gain_or_loss_flag          => 'N'
41227          , p_gl_transfer_mode_code      => 'S'
41228          , p_acct_entry_type_code       => 'A'
41229          , p_switch_side_flag           => 'Y'
41230          , p_merge_duplicate_code       => 'N'
41231          );
41232    --
41233    l_acc_rev_natural_side_code := 'C';  -- 4262811
41234    -- 
41235    --
41236    -- set accounting line type info
41237    --
41238    xla_ae_lines_pkg.SetAcctLineType
41239       (p_component_type             => l_component_type
41240       ,p_event_type_code            => l_event_type_code
41241       ,p_line_definition_owner_code => l_line_definition_owner_code
41242       ,p_line_definition_code       => l_line_definition_code
41243       ,p_accounting_line_code       => l_component_code
41244       ,p_accounting_line_type_code  => l_component_type_code
41245       ,p_accounting_line_appl_id    => l_component_appl_id
41246       ,p_amb_context_code           => l_amb_context_code
41247       ,p_entity_code                => l_entity_code
41248       ,p_event_class_code           => l_event_class_code);
41249    --
41250    -- set accounting class
41251    --
41252    xla_ae_lines_pkg.SetAcctClass(
41253            p_accounting_class_code  => 'COST_VARIANCE'
41254          , p_ae_header_id           => l_ae_header_id
41255          );
41256 
41257    --
41258    -- set rounding class
41259    --
41260    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41261                       'COST_VARIANCE';
41262 
41263    --
41264    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41265    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41266    --
41267    -- bulk performance
41268    --
41269    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41270 
41271    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41272       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41273 
41274    -- 4955764
41275    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41276       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41277 
41278    -- 4458381 Public Sector Enh
41279    
41280    --
41281    -- set accounting attributes for the line type
41282    --
41283    l_entered_amt_idx := 3;
41284    l_accted_amt_idx  := 8;
41285    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41286    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41287    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
41288    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41289    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
41290    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41291    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
41292    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41293    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
41294    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41295    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
41296    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41297    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
41298    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41299    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
41300    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41301    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
41302 
41303    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41304    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41305 
41306    ---------------------------------------------------------------------------------------------------------------
41307    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41308    ---------------------------------------------------------------------------------------------------------------
41309    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41310 
41311    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41312    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41313 
41314    IF xla_accounting_cache_pkg.GetValueChar
41315          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41316          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41317    AND l_bflow_method_code = 'PRIOR_ENTRY'
41318 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41319    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41320          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41321        )
41322    THEN
41323          xla_ae_lines_pkg.BflowUpgEntry
41324            (p_business_method_code    => l_bflow_method_code
41325            ,p_business_class_code     => l_bflow_class_code
41326            ,p_balance_type            => l_balance_type_code);
41327    ELSE
41328       NULL;
41329 -- No business flow processing for business flow method of NONE.
41330    END IF;
41331 
41332    --
41333    -- call analytical criteria
41334    --
41335    
41336    --
41337    -- call description
41338    --
41339    
41340 xla_ae_lines_pkg.SetLineDescription(
41341    p_ae_header_id => l_ae_header_id
41342   ,p_description  => Description_1 (
41343      p_application_id         => p_application_id
41344    , p_ae_header_id           => l_ae_header_id 
41345 , p_source_1 => p_source_1
41346 , p_source_2 => p_source_2
41347 , p_source_3 => p_source_3
41348 , p_source_4 => p_source_4
41349 , p_source_5 => p_source_5
41350    )
41351 );
41352 
41353 
41354    --
41355    -- call ADRs
41356    -- Bug 4922099
41357    --
41358    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41359         (NVL(l_actual_upg_option, 'N') = 'O') OR
41360         (NVL(l_enc_upg_option, 'N') = 'O')
41361       )
41362    THEN
41363    NULL;
41364    --
41365    --
41366    
41367   l_ccid := AcctDerRule_12(
41368            p_application_id           => p_application_id
41369          , p_ae_header_id             => l_ae_header_id 
41370 , p_source_23 => p_source_23
41371          , x_transaction_coa_id       => l_adr_transaction_coa_id
41372          , x_accounting_coa_id        => l_adr_accounting_coa_id
41373          , x_value_type_code          => l_adr_value_type_code
41374          , p_side                     => 'NA'
41375    );
41376 
41377    xla_ae_lines_pkg.set_ccid(
41378     p_code_combination_id          => l_ccid
41379   , p_value_type_code              => l_adr_value_type_code
41380   , p_transaction_coa_id           => l_adr_transaction_coa_id
41381   , p_accounting_coa_id            => l_adr_accounting_coa_id
41382   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
41383   , p_adr_type_code                => 'S'
41384   , p_component_type               => l_component_type
41385   , p_component_code               => l_component_code
41386   , p_component_type_code          => l_component_type_code
41387   , p_component_appl_id            => l_component_appl_id
41388   , p_amb_context_code             => l_amb_context_code
41389   , p_side                         => 'NA'
41390   );
41391 
41392 
41393    --
41394    --
41395    END IF;
41396    --
41397    -- Bug 4922099
41398    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41399           (NVL(l_enc_upg_option, 'N') = 'O')
41400         ) AND
41401         (l_bflow_method_code = 'PRIOR_ENTRY')
41402       )
41403    THEN
41404       IF
41405       --
41406       1 = 2
41407       --
41408       THEN
41409       xla_accounting_err_pkg.build_message
41410                                     (p_appli_s_name            => 'XLA'
41411                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41412                                     ,p_token_1                 => 'LINE_NUMBER'
41413                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41414                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41415                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41416                                                                              l_component_type
41417                                                                             ,l_component_code
41418                                                                             ,l_component_type_code
41419                                                                             ,l_component_appl_id
41420                                                                             ,l_amb_context_code
41421                                                                             ,l_entity_code
41422                                                                             ,l_event_class_code
41423                                                                            )
41424                                     ,p_token_3                 => 'OWNER'
41425                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41426                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41427                                                                           ,p_lookup_code    => l_component_type_code
41428                                                                          )
41429                                     ,p_token_4                 => 'PRODUCT_NAME'
41430                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41431                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41432                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41433                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41434                                     ,p_ae_header_id            =>  NULL
41435                                        );
41436 
41437         IF (C_LEVEL_ERROR>= g_log_level) THEN
41438                  trace
41439                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41440                       ,p_level    => C_LEVEL_ERROR
41441                       ,p_module   => l_log_module);
41442         END IF;
41443       END IF;
41444    END IF;
41445    --
41446    --
41447    ------------------------------------------------------------------------------------------------
41448    -- 4219869 Business Flow
41449    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41450    -- Prior Entry.  Currently, the following code is always generated.
41451    ------------------------------------------------------------------------------------------------
41452    XLA_AE_LINES_PKG.ValidateCurrentLine;
41453 
41454    ------------------------------------------------------------------------------------
41455    -- 4219869 Business Flow
41456    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41457    ------------------------------------------------------------------------------------
41458    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41459 
41460    ----------------------------------------------------------------------------------
41461    -- 4219869 Business Flow
41462    -- Update journal entry status -- Need to generate this within IF <condition>
41463    ----------------------------------------------------------------------------------
41464    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41465          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41466          ,p_balance_type_code => l_balance_type_code
41467          );
41468 
41469    -------------------------------------------------------------------------------------------
41470    -- 4262811 - Generate the Accrual Reversal lines
41471    -------------------------------------------------------------------------------------------
41472    BEGIN
41473       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41474                               (g_array_event(p_event_id).array_value_num('header_index'));
41475       IF l_acc_rev_flag IS NULL THEN
41476          l_acc_rev_flag := 'N';
41477       END IF;
41478    EXCEPTION
41479       WHEN OTHERS THEN
41480          l_acc_rev_flag := 'N';
41481    END;
41482    --
41483    IF (l_acc_rev_flag = 'Y') THEN
41484 
41485        -- 4645092  ------------------------------------------------------------------------------
41486        -- To allow MPA report to determine if it should generate report process
41487        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41488        ------------------------------------------------------------------------------------------
41489 
41490        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41491        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41492    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41493    -- call ADRs
41494    -- Bug 4922099
41495    --
41496    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41497         (NVL(l_actual_upg_option, 'N') = 'O') OR
41498         (NVL(l_enc_upg_option, 'N') = 'O')
41499       )
41500    THEN
41501    NULL;
41502    --
41503    --
41504    
41505   l_ccid := AcctDerRule_12(
41506            p_application_id           => p_application_id
41507          , p_ae_header_id             => l_ae_header_id 
41508 , p_source_23 => p_source_23
41509          , x_transaction_coa_id       => l_adr_transaction_coa_id
41510          , x_accounting_coa_id        => l_adr_accounting_coa_id
41511          , x_value_type_code          => l_adr_value_type_code
41512          , p_side                     => 'NA'
41513    );
41514 
41515    xla_ae_lines_pkg.set_ccid(
41516     p_code_combination_id          => l_ccid
41517   , p_value_type_code              => l_adr_value_type_code
41518   , p_transaction_coa_id           => l_adr_transaction_coa_id
41519   , p_accounting_coa_id            => l_adr_accounting_coa_id
41520   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
41521   , p_adr_type_code                => 'S'
41522   , p_component_type               => l_component_type
41523   , p_component_code               => l_component_code
41524   , p_component_type_code          => l_component_type_code
41525   , p_component_appl_id            => l_component_appl_id
41526   , p_amb_context_code             => l_amb_context_code
41527   , p_side                         => 'NA'
41528   );
41529 
41530 
41531    --
41532    --
41533    END IF;
41534 
41535        --
41536        -- Update the line information that should be overwritten
41537        --
41538        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41539                                          p_header_num   => 1);
41540        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41541 
41542        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41543 
41544        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41545           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41546        END IF;
41547 
41548       --
41549       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41550       --
41551       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41552           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41553       ELSE
41554           ---------------------------------------------------------------------------------------------------
41555           -- 4262811a Switch Sign
41556           ---------------------------------------------------------------------------------------------------
41557           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41558           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41559                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41560           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41561                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41562           -- 5132302
41563           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41564                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41565 
41566       END IF;
41567 
41568       -- 4955764
41569       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41570       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41571 
41572 
41573       XLA_AE_LINES_PKG.ValidateCurrentLine;
41574       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41575 
41576       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41577                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41578                ,p_balance_type_code => l_balance_type_code);
41579 
41580    END IF;
41581 
41582    -----------------------------------------------------------------------------------------
41583    -- 4262811 Multiperiod Accounting
41584    -----------------------------------------------------------------------------------------
41585      -- No MPA option is assigned.
41586 
41587 
41588 END IF;
41589 END IF;
41590 --
41591 
41592 --
41593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41594    trace
41595       (p_msg      => 'END of AcctLineType_98'
41596       ,p_level    => C_LEVEL_PROCEDURE
41597       ,p_module   => l_log_module);
41598 END IF;
41599 --
41600 EXCEPTION
41601   WHEN xla_exceptions_pkg.application_exception THEN
41602       RAISE;
41603   WHEN OTHERS THEN
41604        xla_exceptions_pkg.raise_message
41605            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_98');
41606 END AcctLineType_98;
41607 --
41608 
41609 ---------------------------------------
41610 --
41611 -- PRIVATE FUNCTION
41612 --         AcctLineType_99
41613 --
41614 ---------------------------------------
41615 PROCEDURE AcctLineType_99 (
41616   p_application_id        IN NUMBER
41617  ,p_event_id              IN NUMBER
41618  ,p_calculate_acctd_flag  IN VARCHAR2
41619  ,p_calculate_g_l_flag    IN VARCHAR2
41620  ,p_actual_flag           IN OUT VARCHAR2
41621  ,p_balance_type_code     OUT VARCHAR2
41622  ,p_gain_or_loss_ref      OUT VARCHAR2
41623  
41624 --TRANSACTION_ID
41625  , p_source_1            IN NUMBER
41626 --Item Concatenated Segments
41627  , p_source_2            IN VARCHAR2
41628 --Transaction Quantity
41629  , p_source_3            IN NUMBER
41630 --Transaction Unit of Measure Code
41631  , p_source_4            IN VARCHAR2
41632 --Inventory Transaction Type Description
41633  , p_source_5            IN VARCHAR2
41634 --Cost Management Default Account
41635  , p_source_11            IN NUMBER
41636 --Applied to Application ID
41637  , p_source_79            IN NUMBER
41638 --Applied to Distribution Link Type
41639  , p_source_80            IN VARCHAR2
41640 --Applied to Entity Code
41641  , p_source_81            IN VARCHAR2
41642 --DISTRIBUTION_IDENTIFIER
41643  , p_source_84            IN NUMBER
41644 --Distribution Type
41645  , p_source_85            IN VARCHAR2
41646  , p_source_85_meaning    IN VARCHAR2
41647 --Encumbrance Reversal Amount Entered
41648  , p_source_87            IN NUMBER
41649 --Entered Currency Code
41650  , p_source_88            IN VARCHAR2
41651 --Transaction Encumbrance Reversal Amount
41652  , p_source_89            IN NUMBER
41653 --Entered Amount
41654  , p_source_91            IN NUMBER
41655 --Currency Conversion Date
41656  , p_source_92            IN DATE
41657 --Currency Conversion Rate
41658  , p_source_93            IN NUMBER
41659 --Currency Conversion Type
41660  , p_source_94            IN VARCHAR2
41661 --Accounted Amount
41662  , p_source_95            IN NUMBER
41663 --Accounting Line Type
41664  , p_source_97            IN NUMBER
41665 --Costing Encumbrance Upgrade Option
41666  , p_source_100            IN VARCHAR2
41667 --TXN_PO_DISTRIBUTION_ID
41668  , p_source_101            IN NUMBER
41669 --TXN_PO_HEADER_ID
41670  , p_source_102            IN NUMBER
41671 --Requisition Budget Account
41672  , p_source_103            IN NUMBER
41673 --Requisition Encumbrance Type Identifier
41674  , p_source_104            IN NUMBER
41675 )
41676 IS
41677 
41678 l_component_type              VARCHAR2(80);
41679 l_component_code              VARCHAR2(30);
41680 l_component_type_code         VARCHAR2(1);
41681 l_component_appl_id           INTEGER;
41682 l_amb_context_code            VARCHAR2(30);
41683 l_entity_code                 VARCHAR2(30);
41684 l_event_class_code            VARCHAR2(30);
41685 l_ae_header_id                NUMBER;
41686 l_event_type_code             VARCHAR2(30);
41687 l_line_definition_code        VARCHAR2(30);
41688 l_line_definition_owner_code  VARCHAR2(1);
41689 --
41690 -- adr variables
41691 l_segment                     VARCHAR2(30);
41692 l_ccid                        NUMBER;
41693 l_adr_transaction_coa_id      NUMBER;
41694 l_adr_accounting_coa_id       NUMBER;
41695 l_adr_flexfield_segment_code  VARCHAR2(30);
41696 l_adr_flex_value_set_id       NUMBER;
41697 l_adr_value_type_code         VARCHAR2(30);
41698 l_adr_value_combination_id    NUMBER;
41699 l_adr_value_segment_code      VARCHAR2(30);
41700 
41701 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41702 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41703 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41704 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41705 
41706 -- 4262811 Variables ------------------------------------------------------------------------------------------
41707 l_entered_amt_idx             NUMBER;
41708 l_accted_amt_idx              NUMBER;
41709 l_acc_rev_flag                VARCHAR2(1);
41710 l_accrual_line_num            NUMBER;
41711 l_tmp_amt                     NUMBER;
41712 l_acc_rev_natural_side_code   VARCHAR2(1);
41713 
41714 l_num_entries                 NUMBER;
41715 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41716 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41717 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41718 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41719 l_recog_line_1                NUMBER;
41720 l_recog_line_2                NUMBER;
41721 
41722 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41723 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41724 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41725 
41726 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41727 
41728 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41729 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41730 
41731 ---------------------------------------------------------------------------------------------------------------
41732 
41733 
41734 --
41735 -- bulk performance
41736 --
41737 l_balance_type_code           VARCHAR2(1);
41738 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41739 l_log_module                  VARCHAR2(240);
41740 
41741 --
41742 -- Upgrade strategy
41743 --
41744 l_actual_upg_option           VARCHAR2(1);
41745 l_enc_upg_option           VARCHAR2(1);
41746 
41747 --
41748 BEGIN
41749 --
41750 IF g_log_enabled THEN
41751       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
41752 END IF;
41753 --
41754 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41755 
41756       trace
41757          (p_msg      => 'BEGIN of AcctLineType_99'
41758          ,p_level    => C_LEVEL_PROCEDURE
41759          ,p_module   => l_log_module);
41760 
41761 END IF;
41762 --
41763 l_component_type             := 'AMB_JLT';
41764 l_component_code             := 'COST_VARIANCE';
41765 l_component_type_code        := 'S';
41766 l_component_appl_id          :=  707;
41767 l_amb_context_code           := 'DEFAULT';
41768 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
41769 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
41770 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
41771 l_line_definition_owner_code := 'S';
41772 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
41773 --
41774 l_balance_type_code          := 'A';
41775 l_segment                     := NULL;
41776 l_ccid                        := NULL;
41777 l_adr_transaction_coa_id      := NULL;
41778 l_adr_accounting_coa_id       := NULL;
41779 l_adr_flexfield_segment_code  := NULL;
41780 l_adr_flex_value_set_id       := NULL;
41781 l_adr_value_type_code         := NULL;
41782 l_adr_value_combination_id    := NULL;
41783 l_adr_value_segment_code      := NULL;
41784 
41785 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41786 l_bflow_class_code           := '';    -- 4219869 Business Flow
41787 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41788 l_budgetary_control_flag     := 'N';
41789 
41790 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41791 l_bflow_applied_to_amt       := NULL; -- 5132302
41792 l_entered_amt_idx            := NULL;          -- 4262811
41793 l_accted_amt_idx             := NULL;          -- 4262811
41794 l_acc_rev_flag               := NULL;          -- 4262811
41795 l_accrual_line_num           := NULL;          -- 4262811
41796 l_tmp_amt                    := NULL;          -- 4262811
41797 --
41798  
41799 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41800     l_balance_type_code <> 'B' THEN
41801 IF NVL(p_source_97,9E125) =  13
41802  THEN 
41803 
41804    --
41805    XLA_AE_LINES_PKG.SetNewLine;
41806 
41807    p_balance_type_code          := l_balance_type_code;
41808    -- set the flag so later we will know whether the gain loss line needs to be created
41809    
41810    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41811      p_actual_flag :='A';
41812    END IF;
41813 
41814    --
41815    -- bulk performance
41816    --
41817    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41818                                       p_header_num   => 0); -- 4262811
41819    --
41820    -- set accounting line options
41821    --
41822    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41823            p_natural_side_code          => 'D'
41824          , p_gain_or_loss_flag          => 'N'
41825          , p_gl_transfer_mode_code      => 'S'
41826          , p_acct_entry_type_code       => 'A'
41827          , p_switch_side_flag           => 'Y'
41828          , p_merge_duplicate_code       => 'N'
41829          );
41830    --
41831    l_acc_rev_natural_side_code := 'C';  -- 4262811
41832    -- 
41833    --
41834    -- set accounting line type info
41835    --
41836    xla_ae_lines_pkg.SetAcctLineType
41837       (p_component_type             => l_component_type
41838       ,p_event_type_code            => l_event_type_code
41839       ,p_line_definition_owner_code => l_line_definition_owner_code
41840       ,p_line_definition_code       => l_line_definition_code
41841       ,p_accounting_line_code       => l_component_code
41842       ,p_accounting_line_type_code  => l_component_type_code
41843       ,p_accounting_line_appl_id    => l_component_appl_id
41844       ,p_amb_context_code           => l_amb_context_code
41845       ,p_entity_code                => l_entity_code
41846       ,p_event_class_code           => l_event_class_code);
41847    --
41848    -- set accounting class
41849    --
41850    xla_ae_lines_pkg.SetAcctClass(
41851            p_accounting_class_code  => 'COST_VARIANCE'
41852          , p_ae_header_id           => l_ae_header_id
41853          );
41854 
41855    --
41856    -- set rounding class
41857    --
41858    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41859                       'COST_VARIANCE';
41860 
41861    --
41862    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41863    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41864    --
41865    -- bulk performance
41866    --
41867    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41868 
41869    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41870       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41871 
41872    -- 4955764
41873    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41874       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41875 
41876    -- 4458381 Public Sector Enh
41877    
41878    --
41879    -- set accounting attributes for the line type
41880    --
41881    l_entered_amt_idx := 17;
41882    l_accted_amt_idx  := 22;
41883    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41884    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
41885    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
41886    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
41887    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
41888    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
41889    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
41890    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
41891    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
41892    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
41893    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
41894    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
41895    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
41896    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
41897    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
41898    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
41899    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
41900    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
41901    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
41902    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
41903    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
41904    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
41905    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
41906    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
41907    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
41908    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
41909    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
41910    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
41911    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
41912    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
41913    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
41914    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
41915    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
41916    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
41917    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
41918    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
41919    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
41920    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
41921    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
41922    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
41923    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
41924    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
41925    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
41926    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
41927    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
41928    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
41929    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
41930    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
41931    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
41932 
41933    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41934    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41935 
41936    ---------------------------------------------------------------------------------------------------------------
41937    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41938    ---------------------------------------------------------------------------------------------------------------
41939    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41940 
41941    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41942    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41943 
41944    IF xla_accounting_cache_pkg.GetValueChar
41945          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41946          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41947    AND l_bflow_method_code = 'PRIOR_ENTRY'
41948 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41949    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41950          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41951        )
41952    THEN
41953          xla_ae_lines_pkg.BflowUpgEntry
41954            (p_business_method_code    => l_bflow_method_code
41955            ,p_business_class_code     => l_bflow_class_code
41956            ,p_balance_type            => l_balance_type_code);
41957    ELSE
41958       NULL;
41959 -- No business flow processing for business flow method of NONE.
41960    END IF;
41961 
41962    --
41963    -- call analytical criteria
41964    --
41965    
41966    --
41967    -- call description
41968    --
41969    
41970 xla_ae_lines_pkg.SetLineDescription(
41971    p_ae_header_id => l_ae_header_id
41972   ,p_description  => Description_1 (
41973      p_application_id         => p_application_id
41974    , p_ae_header_id           => l_ae_header_id 
41975 , p_source_1 => p_source_1
41976 , p_source_2 => p_source_2
41977 , p_source_3 => p_source_3
41978 , p_source_4 => p_source_4
41979 , p_source_5 => p_source_5
41980    )
41981 );
41982 
41983 
41984    --
41985    -- call ADRs
41986    -- Bug 4922099
41987    --
41988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41989         (NVL(l_actual_upg_option, 'N') = 'O') OR
41990         (NVL(l_enc_upg_option, 'N') = 'O')
41991       )
41992    THEN
41993    NULL;
41994    --
41995    --
41996    
41997   l_ccid := AcctDerRule_6(
41998            p_application_id           => p_application_id
41999          , p_ae_header_id             => l_ae_header_id 
42000 , p_source_11 => p_source_11
42001          , x_transaction_coa_id       => l_adr_transaction_coa_id
42002          , x_accounting_coa_id        => l_adr_accounting_coa_id
42003          , x_value_type_code          => l_adr_value_type_code
42004          , p_side                     => 'NA'
42005    );
42006 
42007    xla_ae_lines_pkg.set_ccid(
42008     p_code_combination_id          => l_ccid
42009   , p_value_type_code              => l_adr_value_type_code
42010   , p_transaction_coa_id           => l_adr_transaction_coa_id
42011   , p_accounting_coa_id            => l_adr_accounting_coa_id
42012   , p_adr_code                     => 'CST_DEFAULT'
42013   , p_adr_type_code                => 'S'
42014   , p_component_type               => l_component_type
42015   , p_component_code               => l_component_code
42016   , p_component_type_code          => l_component_type_code
42017   , p_component_appl_id            => l_component_appl_id
42018   , p_amb_context_code             => l_amb_context_code
42019   , p_side                         => 'NA'
42020   );
42021 
42022 
42023    --
42024    --
42025    END IF;
42026    --
42027    -- Bug 4922099
42028    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42029           (NVL(l_enc_upg_option, 'N') = 'O')
42030         ) AND
42031         (l_bflow_method_code = 'PRIOR_ENTRY')
42032       )
42033    THEN
42034       IF
42035       --
42036       1 = 2
42037       --
42038       THEN
42039       xla_accounting_err_pkg.build_message
42040                                     (p_appli_s_name            => 'XLA'
42041                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42042                                     ,p_token_1                 => 'LINE_NUMBER'
42043                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42044                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42045                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42046                                                                              l_component_type
42047                                                                             ,l_component_code
42048                                                                             ,l_component_type_code
42049                                                                             ,l_component_appl_id
42050                                                                             ,l_amb_context_code
42051                                                                             ,l_entity_code
42052                                                                             ,l_event_class_code
42053                                                                            )
42054                                     ,p_token_3                 => 'OWNER'
42055                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42056                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42057                                                                           ,p_lookup_code    => l_component_type_code
42058                                                                          )
42059                                     ,p_token_4                 => 'PRODUCT_NAME'
42060                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42061                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42062                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42063                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42064                                     ,p_ae_header_id            =>  NULL
42065                                        );
42066 
42067         IF (C_LEVEL_ERROR>= g_log_level) THEN
42068                  trace
42069                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42070                       ,p_level    => C_LEVEL_ERROR
42071                       ,p_module   => l_log_module);
42072         END IF;
42073       END IF;
42074    END IF;
42075    --
42076    --
42077    ------------------------------------------------------------------------------------------------
42078    -- 4219869 Business Flow
42079    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42080    -- Prior Entry.  Currently, the following code is always generated.
42081    ------------------------------------------------------------------------------------------------
42082    XLA_AE_LINES_PKG.ValidateCurrentLine;
42083 
42084    ------------------------------------------------------------------------------------
42085    -- 4219869 Business Flow
42086    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42087    ------------------------------------------------------------------------------------
42088    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42089 
42090    ----------------------------------------------------------------------------------
42091    -- 4219869 Business Flow
42092    -- Update journal entry status -- Need to generate this within IF <condition>
42093    ----------------------------------------------------------------------------------
42094    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42095          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42096          ,p_balance_type_code => l_balance_type_code
42097          );
42098 
42099    -------------------------------------------------------------------------------------------
42100    -- 4262811 - Generate the Accrual Reversal lines
42101    -------------------------------------------------------------------------------------------
42102    BEGIN
42103       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42104                               (g_array_event(p_event_id).array_value_num('header_index'));
42105       IF l_acc_rev_flag IS NULL THEN
42106          l_acc_rev_flag := 'N';
42107       END IF;
42108    EXCEPTION
42109       WHEN OTHERS THEN
42110          l_acc_rev_flag := 'N';
42111    END;
42112    --
42113    IF (l_acc_rev_flag = 'Y') THEN
42114 
42115        -- 4645092  ------------------------------------------------------------------------------
42116        -- To allow MPA report to determine if it should generate report process
42117        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42118        ------------------------------------------------------------------------------------------
42119 
42120        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42121        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42122    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42123    -- call ADRs
42124    -- Bug 4922099
42125    --
42126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42127         (NVL(l_actual_upg_option, 'N') = 'O') OR
42128         (NVL(l_enc_upg_option, 'N') = 'O')
42129       )
42130    THEN
42131    NULL;
42132    --
42133    --
42134    
42135   l_ccid := AcctDerRule_6(
42136            p_application_id           => p_application_id
42137          , p_ae_header_id             => l_ae_header_id 
42138 , p_source_11 => p_source_11
42139          , x_transaction_coa_id       => l_adr_transaction_coa_id
42140          , x_accounting_coa_id        => l_adr_accounting_coa_id
42141          , x_value_type_code          => l_adr_value_type_code
42142          , p_side                     => 'NA'
42143    );
42144 
42145    xla_ae_lines_pkg.set_ccid(
42146     p_code_combination_id          => l_ccid
42147   , p_value_type_code              => l_adr_value_type_code
42148   , p_transaction_coa_id           => l_adr_transaction_coa_id
42149   , p_accounting_coa_id            => l_adr_accounting_coa_id
42150   , p_adr_code                     => 'CST_DEFAULT'
42151   , p_adr_type_code                => 'S'
42152   , p_component_type               => l_component_type
42153   , p_component_code               => l_component_code
42154   , p_component_type_code          => l_component_type_code
42155   , p_component_appl_id            => l_component_appl_id
42156   , p_amb_context_code             => l_amb_context_code
42157   , p_side                         => 'NA'
42158   );
42159 
42160 
42161    --
42162    --
42163    END IF;
42164 
42165        --
42166        -- Update the line information that should be overwritten
42167        --
42168        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42169                                          p_header_num   => 1);
42170        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42171 
42172        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42173 
42174        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42175           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42176        END IF;
42177 
42178       --
42179       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42180       --
42181       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42182           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42183       ELSE
42184           ---------------------------------------------------------------------------------------------------
42185           -- 4262811a Switch Sign
42186           ---------------------------------------------------------------------------------------------------
42187           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42188           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42189                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42190           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42191                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42192           -- 5132302
42193           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42194                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42195 
42196       END IF;
42197 
42198       -- 4955764
42199       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42201 
42202 
42203       XLA_AE_LINES_PKG.ValidateCurrentLine;
42204       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42205 
42206       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42207                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42208                ,p_balance_type_code => l_balance_type_code);
42209 
42210    END IF;
42211 
42212    -----------------------------------------------------------------------------------------
42213    -- 4262811 Multiperiod Accounting
42214    -----------------------------------------------------------------------------------------
42215      -- No MPA option is assigned.
42216 
42217 
42218 END IF;
42219 END IF;
42220 --
42221 
42222 --
42223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42224    trace
42225       (p_msg      => 'END of AcctLineType_99'
42226       ,p_level    => C_LEVEL_PROCEDURE
42227       ,p_module   => l_log_module);
42228 END IF;
42229 --
42230 EXCEPTION
42231   WHEN xla_exceptions_pkg.application_exception THEN
42232       RAISE;
42233   WHEN OTHERS THEN
42234        xla_exceptions_pkg.raise_message
42235            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_99');
42236 END AcctLineType_99;
42237 --
42238 
42239 ---------------------------------------
42240 --
42241 -- PRIVATE FUNCTION
42242 --         AcctLineType_100
42243 --
42244 ---------------------------------------
42245 PROCEDURE AcctLineType_100 (
42246   p_application_id        IN NUMBER
42247  ,p_event_id              IN NUMBER
42248  ,p_calculate_acctd_flag  IN VARCHAR2
42249  ,p_calculate_g_l_flag    IN VARCHAR2
42250  ,p_actual_flag           IN OUT VARCHAR2
42251  ,p_balance_type_code     OUT VARCHAR2
42252  ,p_gain_or_loss_ref      OUT VARCHAR2
42253  
42254 --TRANSACTION_ID
42255  , p_source_1            IN NUMBER
42256 --Item Concatenated Segments
42257  , p_source_2            IN VARCHAR2
42258 --Transaction Quantity
42259  , p_source_3            IN NUMBER
42260 --Transaction Unit of Measure Code
42261  , p_source_4            IN VARCHAR2
42262 --Inventory Transaction Type Description
42263  , p_source_5            IN VARCHAR2
42264 --Cost Management Default Account
42265  , p_source_11            IN NUMBER
42266 --DISTRIBUTION_IDENTIFIER
42267  , p_source_84            IN NUMBER
42268 --Distribution Type
42269  , p_source_85            IN VARCHAR2
42270  , p_source_85_meaning    IN VARCHAR2
42271 --Entered Currency Code
42272  , p_source_88            IN VARCHAR2
42273 --Entered Amount
42274  , p_source_91            IN NUMBER
42275 --Currency Conversion Date
42276  , p_source_92            IN DATE
42277 --Currency Conversion Rate
42278  , p_source_93            IN NUMBER
42279 --Currency Conversion Type
42280  , p_source_94            IN VARCHAR2
42281 --Accounted Amount
42282  , p_source_95            IN NUMBER
42283 --Accounting Line Type
42284  , p_source_97            IN NUMBER
42285 )
42286 IS
42287 
42288 l_component_type              VARCHAR2(80);
42289 l_component_code              VARCHAR2(30);
42290 l_component_type_code         VARCHAR2(1);
42291 l_component_appl_id           INTEGER;
42292 l_amb_context_code            VARCHAR2(30);
42293 l_entity_code                 VARCHAR2(30);
42294 l_event_class_code            VARCHAR2(30);
42295 l_ae_header_id                NUMBER;
42296 l_event_type_code             VARCHAR2(30);
42297 l_line_definition_code        VARCHAR2(30);
42298 l_line_definition_owner_code  VARCHAR2(1);
42299 --
42300 -- adr variables
42301 l_segment                     VARCHAR2(30);
42302 l_ccid                        NUMBER;
42303 l_adr_transaction_coa_id      NUMBER;
42304 l_adr_accounting_coa_id       NUMBER;
42305 l_adr_flexfield_segment_code  VARCHAR2(30);
42306 l_adr_flex_value_set_id       NUMBER;
42307 l_adr_value_type_code         VARCHAR2(30);
42308 l_adr_value_combination_id    NUMBER;
42309 l_adr_value_segment_code      VARCHAR2(30);
42310 
42311 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42312 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42313 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42314 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42315 
42316 -- 4262811 Variables ------------------------------------------------------------------------------------------
42317 l_entered_amt_idx             NUMBER;
42318 l_accted_amt_idx              NUMBER;
42319 l_acc_rev_flag                VARCHAR2(1);
42320 l_accrual_line_num            NUMBER;
42321 l_tmp_amt                     NUMBER;
42322 l_acc_rev_natural_side_code   VARCHAR2(1);
42323 
42324 l_num_entries                 NUMBER;
42325 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42326 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42327 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42328 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42329 l_recog_line_1                NUMBER;
42330 l_recog_line_2                NUMBER;
42331 
42332 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42333 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42334 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42335 
42336 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42337 
42338 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42339 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42340 
42341 ---------------------------------------------------------------------------------------------------------------
42342 
42343 
42344 --
42345 -- bulk performance
42346 --
42347 l_balance_type_code           VARCHAR2(1);
42348 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42349 l_log_module                  VARCHAR2(240);
42350 
42351 --
42352 -- Upgrade strategy
42353 --
42354 l_actual_upg_option           VARCHAR2(1);
42355 l_enc_upg_option           VARCHAR2(1);
42356 
42357 --
42358 BEGIN
42359 --
42360 IF g_log_enabled THEN
42361       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
42362 END IF;
42363 --
42364 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42365 
42366       trace
42367          (p_msg      => 'BEGIN of AcctLineType_100'
42368          ,p_level    => C_LEVEL_PROCEDURE
42369          ,p_module   => l_log_module);
42370 
42371 END IF;
42372 --
42373 l_component_type             := 'AMB_JLT';
42374 l_component_code             := 'COST_VARIANCE';
42375 l_component_type_code        := 'S';
42376 l_component_appl_id          :=  707;
42377 l_amb_context_code           := 'DEFAULT';
42378 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
42379 l_event_class_code           := 'MISC_ISSUE_RCPT';
42380 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
42381 l_line_definition_owner_code := 'S';
42382 l_line_definition_code       := 'PI_MISC_ISSUE_RCPT';
42383 --
42384 l_balance_type_code          := 'A';
42385 l_segment                     := NULL;
42386 l_ccid                        := NULL;
42387 l_adr_transaction_coa_id      := NULL;
42388 l_adr_accounting_coa_id       := NULL;
42389 l_adr_flexfield_segment_code  := NULL;
42390 l_adr_flex_value_set_id       := NULL;
42391 l_adr_value_type_code         := NULL;
42392 l_adr_value_combination_id    := NULL;
42393 l_adr_value_segment_code      := NULL;
42394 
42395 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42396 l_bflow_class_code           := '';    -- 4219869 Business Flow
42397 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42398 l_budgetary_control_flag     := 'N';
42399 
42400 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42401 l_bflow_applied_to_amt       := NULL; -- 5132302
42402 l_entered_amt_idx            := NULL;          -- 4262811
42403 l_accted_amt_idx             := NULL;          -- 4262811
42404 l_acc_rev_flag               := NULL;          -- 4262811
42405 l_accrual_line_num           := NULL;          -- 4262811
42406 l_tmp_amt                    := NULL;          -- 4262811
42407 --
42408  
42409 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42410     l_balance_type_code <> 'B' THEN
42411 IF NVL(p_source_97,9E125) =  13
42412  THEN 
42413 
42414    --
42415    XLA_AE_LINES_PKG.SetNewLine;
42416 
42417    p_balance_type_code          := l_balance_type_code;
42418    -- set the flag so later we will know whether the gain loss line needs to be created
42419    
42420    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42421      p_actual_flag :='A';
42422    END IF;
42423 
42424    --
42425    -- bulk performance
42426    --
42427    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42428                                       p_header_num   => 0); -- 4262811
42429    --
42430    -- set accounting line options
42431    --
42432    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42433            p_natural_side_code          => 'D'
42434          , p_gain_or_loss_flag          => 'N'
42435          , p_gl_transfer_mode_code      => 'S'
42436          , p_acct_entry_type_code       => 'A'
42437          , p_switch_side_flag           => 'Y'
42438          , p_merge_duplicate_code       => 'N'
42439          );
42440    --
42441    l_acc_rev_natural_side_code := 'C';  -- 4262811
42442    -- 
42443    --
42444    -- set accounting line type info
42445    --
42446    xla_ae_lines_pkg.SetAcctLineType
42447       (p_component_type             => l_component_type
42448       ,p_event_type_code            => l_event_type_code
42449       ,p_line_definition_owner_code => l_line_definition_owner_code
42450       ,p_line_definition_code       => l_line_definition_code
42451       ,p_accounting_line_code       => l_component_code
42452       ,p_accounting_line_type_code  => l_component_type_code
42453       ,p_accounting_line_appl_id    => l_component_appl_id
42454       ,p_amb_context_code           => l_amb_context_code
42455       ,p_entity_code                => l_entity_code
42456       ,p_event_class_code           => l_event_class_code);
42457    --
42458    -- set accounting class
42459    --
42460    xla_ae_lines_pkg.SetAcctClass(
42461            p_accounting_class_code  => 'COST_VARIANCE'
42462          , p_ae_header_id           => l_ae_header_id
42463          );
42464 
42465    --
42466    -- set rounding class
42467    --
42468    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42469                       'COST_VARIANCE';
42470 
42471    --
42472    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42473    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42474    --
42475    -- bulk performance
42476    --
42477    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42478 
42479    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42480       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42481 
42482    -- 4955764
42483    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42484       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42485 
42486    -- 4458381 Public Sector Enh
42487    
42488    --
42489    -- set accounting attributes for the line type
42490    --
42491    l_entered_amt_idx := 3;
42492    l_accted_amt_idx  := 8;
42493    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42494    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42495    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
42496    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42497    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
42498    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42499    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
42500    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42501    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
42502    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42503    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
42504    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42505    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
42506    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42507    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
42508    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42509    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
42510 
42511    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42512    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42513 
42514    ---------------------------------------------------------------------------------------------------------------
42515    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42516    ---------------------------------------------------------------------------------------------------------------
42517    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42518 
42519    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42520    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42521 
42522    IF xla_accounting_cache_pkg.GetValueChar
42523          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42524          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42525    AND l_bflow_method_code = 'PRIOR_ENTRY'
42526 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42527    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42528          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42529        )
42530    THEN
42531          xla_ae_lines_pkg.BflowUpgEntry
42532            (p_business_method_code    => l_bflow_method_code
42533            ,p_business_class_code     => l_bflow_class_code
42534            ,p_balance_type            => l_balance_type_code);
42535    ELSE
42536       NULL;
42537 -- No business flow processing for business flow method of NONE.
42538    END IF;
42539 
42540    --
42541    -- call analytical criteria
42542    --
42543    
42544    --
42545    -- call description
42546    --
42547    
42548 xla_ae_lines_pkg.SetLineDescription(
42549    p_ae_header_id => l_ae_header_id
42550   ,p_description  => Description_1 (
42551      p_application_id         => p_application_id
42552    , p_ae_header_id           => l_ae_header_id 
42553 , p_source_1 => p_source_1
42554 , p_source_2 => p_source_2
42555 , p_source_3 => p_source_3
42556 , p_source_4 => p_source_4
42557 , p_source_5 => p_source_5
42558    )
42559 );
42560 
42561 
42562    --
42563    -- call ADRs
42564    -- Bug 4922099
42565    --
42566    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42567         (NVL(l_actual_upg_option, 'N') = 'O') OR
42568         (NVL(l_enc_upg_option, 'N') = 'O')
42569       )
42570    THEN
42571    NULL;
42572    --
42573    --
42574    
42575   l_ccid := AcctDerRule_6(
42576            p_application_id           => p_application_id
42577          , p_ae_header_id             => l_ae_header_id 
42578 , p_source_11 => p_source_11
42579          , x_transaction_coa_id       => l_adr_transaction_coa_id
42580          , x_accounting_coa_id        => l_adr_accounting_coa_id
42581          , x_value_type_code          => l_adr_value_type_code
42582          , p_side                     => 'NA'
42583    );
42584 
42585    xla_ae_lines_pkg.set_ccid(
42586     p_code_combination_id          => l_ccid
42587   , p_value_type_code              => l_adr_value_type_code
42588   , p_transaction_coa_id           => l_adr_transaction_coa_id
42589   , p_accounting_coa_id            => l_adr_accounting_coa_id
42590   , p_adr_code                     => 'CST_DEFAULT'
42591   , p_adr_type_code                => 'S'
42592   , p_component_type               => l_component_type
42593   , p_component_code               => l_component_code
42594   , p_component_type_code          => l_component_type_code
42595   , p_component_appl_id            => l_component_appl_id
42596   , p_amb_context_code             => l_amb_context_code
42597   , p_side                         => 'NA'
42598   );
42599 
42600 
42601    --
42602    --
42603    END IF;
42604    --
42605    -- Bug 4922099
42606    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42607           (NVL(l_enc_upg_option, 'N') = 'O')
42608         ) AND
42609         (l_bflow_method_code = 'PRIOR_ENTRY')
42610       )
42611    THEN
42612       IF
42613       --
42614       1 = 2
42615       --
42616       THEN
42617       xla_accounting_err_pkg.build_message
42618                                     (p_appli_s_name            => 'XLA'
42619                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42620                                     ,p_token_1                 => 'LINE_NUMBER'
42621                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42622                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42623                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42624                                                                              l_component_type
42625                                                                             ,l_component_code
42626                                                                             ,l_component_type_code
42627                                                                             ,l_component_appl_id
42628                                                                             ,l_amb_context_code
42629                                                                             ,l_entity_code
42630                                                                             ,l_event_class_code
42631                                                                            )
42632                                     ,p_token_3                 => 'OWNER'
42633                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42634                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42635                                                                           ,p_lookup_code    => l_component_type_code
42636                                                                          )
42637                                     ,p_token_4                 => 'PRODUCT_NAME'
42638                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42639                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42640                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42641                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42642                                     ,p_ae_header_id            =>  NULL
42643                                        );
42644 
42645         IF (C_LEVEL_ERROR>= g_log_level) THEN
42646                  trace
42647                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42648                       ,p_level    => C_LEVEL_ERROR
42649                       ,p_module   => l_log_module);
42650         END IF;
42651       END IF;
42652    END IF;
42653    --
42654    --
42655    ------------------------------------------------------------------------------------------------
42656    -- 4219869 Business Flow
42657    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42658    -- Prior Entry.  Currently, the following code is always generated.
42659    ------------------------------------------------------------------------------------------------
42660    XLA_AE_LINES_PKG.ValidateCurrentLine;
42661 
42662    ------------------------------------------------------------------------------------
42663    -- 4219869 Business Flow
42664    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42665    ------------------------------------------------------------------------------------
42666    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42667 
42668    ----------------------------------------------------------------------------------
42669    -- 4219869 Business Flow
42670    -- Update journal entry status -- Need to generate this within IF <condition>
42671    ----------------------------------------------------------------------------------
42672    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42673          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42674          ,p_balance_type_code => l_balance_type_code
42675          );
42676 
42677    -------------------------------------------------------------------------------------------
42678    -- 4262811 - Generate the Accrual Reversal lines
42679    -------------------------------------------------------------------------------------------
42680    BEGIN
42681       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42682                               (g_array_event(p_event_id).array_value_num('header_index'));
42683       IF l_acc_rev_flag IS NULL THEN
42684          l_acc_rev_flag := 'N';
42685       END IF;
42686    EXCEPTION
42687       WHEN OTHERS THEN
42688          l_acc_rev_flag := 'N';
42689    END;
42690    --
42691    IF (l_acc_rev_flag = 'Y') THEN
42692 
42693        -- 4645092  ------------------------------------------------------------------------------
42694        -- To allow MPA report to determine if it should generate report process
42695        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42696        ------------------------------------------------------------------------------------------
42697 
42698        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42699        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42700    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42701    -- call ADRs
42702    -- Bug 4922099
42703    --
42704    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42705         (NVL(l_actual_upg_option, 'N') = 'O') OR
42706         (NVL(l_enc_upg_option, 'N') = 'O')
42707       )
42708    THEN
42709    NULL;
42710    --
42711    --
42712    
42713   l_ccid := AcctDerRule_6(
42714            p_application_id           => p_application_id
42715          , p_ae_header_id             => l_ae_header_id 
42716 , p_source_11 => p_source_11
42717          , x_transaction_coa_id       => l_adr_transaction_coa_id
42718          , x_accounting_coa_id        => l_adr_accounting_coa_id
42719          , x_value_type_code          => l_adr_value_type_code
42720          , p_side                     => 'NA'
42721    );
42722 
42723    xla_ae_lines_pkg.set_ccid(
42724     p_code_combination_id          => l_ccid
42725   , p_value_type_code              => l_adr_value_type_code
42726   , p_transaction_coa_id           => l_adr_transaction_coa_id
42727   , p_accounting_coa_id            => l_adr_accounting_coa_id
42728   , p_adr_code                     => 'CST_DEFAULT'
42729   , p_adr_type_code                => 'S'
42730   , p_component_type               => l_component_type
42731   , p_component_code               => l_component_code
42732   , p_component_type_code          => l_component_type_code
42733   , p_component_appl_id            => l_component_appl_id
42734   , p_amb_context_code             => l_amb_context_code
42735   , p_side                         => 'NA'
42736   );
42737 
42738 
42739    --
42740    --
42741    END IF;
42742 
42743        --
42744        -- Update the line information that should be overwritten
42745        --
42746        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42747                                          p_header_num   => 1);
42748        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42749 
42750        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42751 
42752        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42753           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42754        END IF;
42755 
42756       --
42757       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42758       --
42759       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42760           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42761       ELSE
42762           ---------------------------------------------------------------------------------------------------
42763           -- 4262811a Switch Sign
42764           ---------------------------------------------------------------------------------------------------
42765           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42766           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42767                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42768           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42769                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42770           -- 5132302
42771           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42772                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42773 
42774       END IF;
42775 
42776       -- 4955764
42777       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42778       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42779 
42780 
42781       XLA_AE_LINES_PKG.ValidateCurrentLine;
42782       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42783 
42784       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42785                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42786                ,p_balance_type_code => l_balance_type_code);
42787 
42788    END IF;
42789 
42790    -----------------------------------------------------------------------------------------
42791    -- 4262811 Multiperiod Accounting
42792    -----------------------------------------------------------------------------------------
42793      -- No MPA option is assigned.
42794 
42795 
42796 END IF;
42797 END IF;
42798 --
42799 
42800 --
42801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42802    trace
42803       (p_msg      => 'END of AcctLineType_100'
42804       ,p_level    => C_LEVEL_PROCEDURE
42805       ,p_module   => l_log_module);
42806 END IF;
42807 --
42808 EXCEPTION
42809   WHEN xla_exceptions_pkg.application_exception THEN
42810       RAISE;
42811   WHEN OTHERS THEN
42812        xla_exceptions_pkg.raise_message
42813            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_100');
42814 END AcctLineType_100;
42815 --
42816 
42817 ---------------------------------------
42818 --
42819 -- PRIVATE FUNCTION
42820 --         AcctLineType_101
42821 --
42822 ---------------------------------------
42823 PROCEDURE AcctLineType_101 (
42824   p_application_id        IN NUMBER
42825  ,p_event_id              IN NUMBER
42826  ,p_calculate_acctd_flag  IN VARCHAR2
42827  ,p_calculate_g_l_flag    IN VARCHAR2
42828  ,p_actual_flag           IN OUT VARCHAR2
42829  ,p_balance_type_code     OUT VARCHAR2
42830  ,p_gain_or_loss_ref      OUT VARCHAR2
42831  
42832 --TRANSACTION_ID
42833  , p_source_1            IN NUMBER
42834 --Item Concatenated Segments
42835  , p_source_2            IN VARCHAR2
42836 --Transaction Quantity
42837  , p_source_3            IN NUMBER
42838 --Transaction Unit of Measure Code
42839  , p_source_4            IN VARCHAR2
42840 --Inventory Transaction Type Description
42841  , p_source_5            IN VARCHAR2
42842 --Cost Management Default Account
42843  , p_source_11            IN NUMBER
42844 --Applied to Application ID
42845  , p_source_79            IN NUMBER
42846 --Applied to Distribution Link Type
42847  , p_source_80            IN VARCHAR2
42848 --Applied to Entity Code
42849  , p_source_81            IN VARCHAR2
42850 --Applied To Purchase Document Identifier
42851  , p_source_83            IN NUMBER
42852 --DISTRIBUTION_IDENTIFIER
42853  , p_source_84            IN NUMBER
42854 --Distribution Type
42855  , p_source_85            IN VARCHAR2
42856  , p_source_85_meaning    IN VARCHAR2
42857 --PO Budget Account
42858  , p_source_86            IN NUMBER
42859 --Encumbrance Reversal Amount Entered
42860  , p_source_87            IN NUMBER
42861 --Entered Currency Code
42862  , p_source_88            IN VARCHAR2
42863 --Transaction Encumbrance Reversal Amount
42864  , p_source_89            IN NUMBER
42865 --Entered Amount
42866  , p_source_91            IN NUMBER
42867 --Currency Conversion Date
42868  , p_source_92            IN DATE
42869 --Currency Conversion Rate
42870  , p_source_93            IN NUMBER
42871 --Currency Conversion Type
42872  , p_source_94            IN VARCHAR2
42873 --Accounted Amount
42874  , p_source_95            IN NUMBER
42875 --Purchasing Encumbrance Type Identifier
42876  , p_source_96            IN NUMBER
42877 --Accounting Line Type
42878  , p_source_97            IN NUMBER
42879 --Costing Encumbrance Upgrade Option
42880  , p_source_100            IN VARCHAR2
42881 --TXN_PO_DISTRIBUTION_ID
42882  , p_source_101            IN NUMBER
42883 )
42884 IS
42885 
42886 l_component_type              VARCHAR2(80);
42887 l_component_code              VARCHAR2(30);
42888 l_component_type_code         VARCHAR2(1);
42889 l_component_appl_id           INTEGER;
42890 l_amb_context_code            VARCHAR2(30);
42891 l_entity_code                 VARCHAR2(30);
42892 l_event_class_code            VARCHAR2(30);
42893 l_ae_header_id                NUMBER;
42894 l_event_type_code             VARCHAR2(30);
42895 l_line_definition_code        VARCHAR2(30);
42896 l_line_definition_owner_code  VARCHAR2(1);
42897 --
42898 -- adr variables
42899 l_segment                     VARCHAR2(30);
42900 l_ccid                        NUMBER;
42901 l_adr_transaction_coa_id      NUMBER;
42902 l_adr_accounting_coa_id       NUMBER;
42903 l_adr_flexfield_segment_code  VARCHAR2(30);
42904 l_adr_flex_value_set_id       NUMBER;
42905 l_adr_value_type_code         VARCHAR2(30);
42906 l_adr_value_combination_id    NUMBER;
42907 l_adr_value_segment_code      VARCHAR2(30);
42908 
42909 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42910 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42911 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42912 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42913 
42914 -- 4262811 Variables ------------------------------------------------------------------------------------------
42915 l_entered_amt_idx             NUMBER;
42916 l_accted_amt_idx              NUMBER;
42917 l_acc_rev_flag                VARCHAR2(1);
42918 l_accrual_line_num            NUMBER;
42919 l_tmp_amt                     NUMBER;
42920 l_acc_rev_natural_side_code   VARCHAR2(1);
42921 
42922 l_num_entries                 NUMBER;
42923 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42924 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42925 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42926 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42927 l_recog_line_1                NUMBER;
42928 l_recog_line_2                NUMBER;
42929 
42930 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42931 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42932 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42933 
42934 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42935 
42936 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42937 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42938 
42939 ---------------------------------------------------------------------------------------------------------------
42940 
42941 
42942 --
42943 -- bulk performance
42944 --
42945 l_balance_type_code           VARCHAR2(1);
42946 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42947 l_log_module                  VARCHAR2(240);
42948 
42949 --
42950 -- Upgrade strategy
42951 --
42952 l_actual_upg_option           VARCHAR2(1);
42953 l_enc_upg_option           VARCHAR2(1);
42954 
42955 --
42956 BEGIN
42957 --
42958 IF g_log_enabled THEN
42959       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
42960 END IF;
42961 --
42962 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42963 
42964       trace
42965          (p_msg      => 'BEGIN of AcctLineType_101'
42966          ,p_level    => C_LEVEL_PROCEDURE
42967          ,p_module   => l_log_module);
42968 
42969 END IF;
42970 --
42971 l_component_type             := 'AMB_JLT';
42972 l_component_code             := 'COST_VARIANCE';
42973 l_component_type_code        := 'S';
42974 l_component_appl_id          :=  707;
42975 l_amb_context_code           := 'DEFAULT';
42976 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
42977 l_event_class_code           := 'PURCHASE_ORDER';
42978 l_event_type_code            := 'PO_DEL_INV';
42979 l_line_definition_owner_code := 'S';
42980 l_line_definition_code       := 'PI_PO_DEL_INV';
42981 --
42982 l_balance_type_code          := 'A';
42983 l_segment                     := NULL;
42984 l_ccid                        := NULL;
42985 l_adr_transaction_coa_id      := NULL;
42986 l_adr_accounting_coa_id       := NULL;
42987 l_adr_flexfield_segment_code  := NULL;
42988 l_adr_flex_value_set_id       := NULL;
42989 l_adr_value_type_code         := NULL;
42990 l_adr_value_combination_id    := NULL;
42991 l_adr_value_segment_code      := NULL;
42992 
42993 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42994 l_bflow_class_code           := '';    -- 4219869 Business Flow
42995 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42996 l_budgetary_control_flag     := 'N';
42997 
42998 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42999 l_bflow_applied_to_amt       := NULL; -- 5132302
43000 l_entered_amt_idx            := NULL;          -- 4262811
43001 l_accted_amt_idx             := NULL;          -- 4262811
43002 l_acc_rev_flag               := NULL;          -- 4262811
43003 l_accrual_line_num           := NULL;          -- 4262811
43004 l_tmp_amt                    := NULL;          -- 4262811
43005 --
43006  
43007 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43008     l_balance_type_code <> 'B' THEN
43009 IF NVL(p_source_97,9E125) =  13
43010  THEN 
43011 
43012    --
43013    XLA_AE_LINES_PKG.SetNewLine;
43014 
43015    p_balance_type_code          := l_balance_type_code;
43016    -- set the flag so later we will know whether the gain loss line needs to be created
43017    
43018    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43019      p_actual_flag :='A';
43020    END IF;
43021 
43022    --
43023    -- bulk performance
43024    --
43025    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43026                                       p_header_num   => 0); -- 4262811
43027    --
43028    -- set accounting line options
43029    --
43030    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43031            p_natural_side_code          => 'D'
43032          , p_gain_or_loss_flag          => 'N'
43033          , p_gl_transfer_mode_code      => 'S'
43034          , p_acct_entry_type_code       => 'A'
43035          , p_switch_side_flag           => 'Y'
43036          , p_merge_duplicate_code       => 'N'
43037          );
43038    --
43039    l_acc_rev_natural_side_code := 'C';  -- 4262811
43040    -- 
43041    --
43042    -- set accounting line type info
43043    --
43044    xla_ae_lines_pkg.SetAcctLineType
43045       (p_component_type             => l_component_type
43046       ,p_event_type_code            => l_event_type_code
43047       ,p_line_definition_owner_code => l_line_definition_owner_code
43048       ,p_line_definition_code       => l_line_definition_code
43049       ,p_accounting_line_code       => l_component_code
43050       ,p_accounting_line_type_code  => l_component_type_code
43051       ,p_accounting_line_appl_id    => l_component_appl_id
43052       ,p_amb_context_code           => l_amb_context_code
43053       ,p_entity_code                => l_entity_code
43054       ,p_event_class_code           => l_event_class_code);
43055    --
43056    -- set accounting class
43057    --
43058    xla_ae_lines_pkg.SetAcctClass(
43059            p_accounting_class_code  => 'COST_VARIANCE'
43060          , p_ae_header_id           => l_ae_header_id
43061          );
43062 
43063    --
43064    -- set rounding class
43065    --
43066    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43067                       'COST_VARIANCE';
43068 
43069    --
43070    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43071    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43072    --
43073    -- bulk performance
43074    --
43075    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43076 
43077    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43078       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43079 
43080    -- 4955764
43081    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43082       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43083 
43084    -- 4458381 Public Sector Enh
43085    
43086    --
43087    -- set accounting attributes for the line type
43088    --
43089    l_entered_amt_idx := 17;
43090    l_accted_amt_idx  := 22;
43091    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43092    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
43093    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
43094    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
43095    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
43096    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
43097    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
43098    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
43099    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
43100    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
43101    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
43102    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
43103    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
43104    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
43105    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
43106    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
43107    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
43108    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
43109    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
43110    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
43111    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
43112    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
43113    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
43114    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
43115    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
43116    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
43117    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
43118    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
43119    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
43120    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
43121    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
43122    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
43123    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
43124    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
43125    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
43126    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
43127    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
43128    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
43129    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
43130    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
43131    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
43132    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
43133    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
43134    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
43135    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
43136    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
43137    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
43138    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
43139    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
43140 
43141    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43142    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43143 
43144    ---------------------------------------------------------------------------------------------------------------
43145    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43146    ---------------------------------------------------------------------------------------------------------------
43147    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43148 
43149    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43150    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43151 
43152    IF xla_accounting_cache_pkg.GetValueChar
43153          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43154          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43155    AND l_bflow_method_code = 'PRIOR_ENTRY'
43156 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43157    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43158          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43159        )
43160    THEN
43161          xla_ae_lines_pkg.BflowUpgEntry
43162            (p_business_method_code    => l_bflow_method_code
43163            ,p_business_class_code     => l_bflow_class_code
43164            ,p_balance_type            => l_balance_type_code);
43165    ELSE
43166       NULL;
43167 -- No business flow processing for business flow method of NONE.
43168    END IF;
43169 
43170    --
43171    -- call analytical criteria
43172    --
43173    
43174    --
43175    -- call description
43176    --
43177    
43178 xla_ae_lines_pkg.SetLineDescription(
43179    p_ae_header_id => l_ae_header_id
43180   ,p_description  => Description_1 (
43181      p_application_id         => p_application_id
43182    , p_ae_header_id           => l_ae_header_id 
43183 , p_source_1 => p_source_1
43184 , p_source_2 => p_source_2
43185 , p_source_3 => p_source_3
43186 , p_source_4 => p_source_4
43187 , p_source_5 => p_source_5
43188    )
43189 );
43190 
43191 
43192    --
43193    -- call ADRs
43194    -- Bug 4922099
43195    --
43196    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43197         (NVL(l_actual_upg_option, 'N') = 'O') OR
43198         (NVL(l_enc_upg_option, 'N') = 'O')
43199       )
43200    THEN
43201    NULL;
43202    --
43203    --
43204    
43205   l_ccid := AcctDerRule_6(
43206            p_application_id           => p_application_id
43207          , p_ae_header_id             => l_ae_header_id 
43208 , p_source_11 => p_source_11
43209          , x_transaction_coa_id       => l_adr_transaction_coa_id
43210          , x_accounting_coa_id        => l_adr_accounting_coa_id
43211          , x_value_type_code          => l_adr_value_type_code
43212          , p_side                     => 'NA'
43213    );
43214 
43215    xla_ae_lines_pkg.set_ccid(
43216     p_code_combination_id          => l_ccid
43217   , p_value_type_code              => l_adr_value_type_code
43218   , p_transaction_coa_id           => l_adr_transaction_coa_id
43219   , p_accounting_coa_id            => l_adr_accounting_coa_id
43220   , p_adr_code                     => 'CST_DEFAULT'
43221   , p_adr_type_code                => 'S'
43222   , p_component_type               => l_component_type
43223   , p_component_code               => l_component_code
43224   , p_component_type_code          => l_component_type_code
43225   , p_component_appl_id            => l_component_appl_id
43226   , p_amb_context_code             => l_amb_context_code
43227   , p_side                         => 'NA'
43228   );
43229 
43230 
43231    --
43232    --
43233    END IF;
43234    --
43235    -- Bug 4922099
43236    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43237           (NVL(l_enc_upg_option, 'N') = 'O')
43238         ) AND
43239         (l_bflow_method_code = 'PRIOR_ENTRY')
43240       )
43241    THEN
43242       IF
43243       --
43244       1 = 2
43245       --
43246       THEN
43247       xla_accounting_err_pkg.build_message
43248                                     (p_appli_s_name            => 'XLA'
43249                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43250                                     ,p_token_1                 => 'LINE_NUMBER'
43251                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43252                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43253                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43254                                                                              l_component_type
43255                                                                             ,l_component_code
43256                                                                             ,l_component_type_code
43257                                                                             ,l_component_appl_id
43258                                                                             ,l_amb_context_code
43259                                                                             ,l_entity_code
43260                                                                             ,l_event_class_code
43261                                                                            )
43262                                     ,p_token_3                 => 'OWNER'
43263                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43264                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43265                                                                           ,p_lookup_code    => l_component_type_code
43266                                                                          )
43267                                     ,p_token_4                 => 'PRODUCT_NAME'
43268                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43269                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43270                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43271                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43272                                     ,p_ae_header_id            =>  NULL
43273                                        );
43274 
43275         IF (C_LEVEL_ERROR>= g_log_level) THEN
43276                  trace
43277                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43278                       ,p_level    => C_LEVEL_ERROR
43279                       ,p_module   => l_log_module);
43280         END IF;
43281       END IF;
43282    END IF;
43283    --
43284    --
43285    ------------------------------------------------------------------------------------------------
43286    -- 4219869 Business Flow
43287    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43288    -- Prior Entry.  Currently, the following code is always generated.
43289    ------------------------------------------------------------------------------------------------
43290    XLA_AE_LINES_PKG.ValidateCurrentLine;
43291 
43292    ------------------------------------------------------------------------------------
43293    -- 4219869 Business Flow
43294    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43295    ------------------------------------------------------------------------------------
43296    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43297 
43298    ----------------------------------------------------------------------------------
43299    -- 4219869 Business Flow
43300    -- Update journal entry status -- Need to generate this within IF <condition>
43301    ----------------------------------------------------------------------------------
43302    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43303          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43304          ,p_balance_type_code => l_balance_type_code
43305          );
43306 
43307    -------------------------------------------------------------------------------------------
43308    -- 4262811 - Generate the Accrual Reversal lines
43309    -------------------------------------------------------------------------------------------
43310    BEGIN
43311       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43312                               (g_array_event(p_event_id).array_value_num('header_index'));
43313       IF l_acc_rev_flag IS NULL THEN
43314          l_acc_rev_flag := 'N';
43315       END IF;
43316    EXCEPTION
43317       WHEN OTHERS THEN
43318          l_acc_rev_flag := 'N';
43319    END;
43320    --
43321    IF (l_acc_rev_flag = 'Y') THEN
43322 
43323        -- 4645092  ------------------------------------------------------------------------------
43324        -- To allow MPA report to determine if it should generate report process
43325        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43326        ------------------------------------------------------------------------------------------
43327 
43328        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43329        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43330    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43331    -- call ADRs
43332    -- Bug 4922099
43333    --
43334    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43335         (NVL(l_actual_upg_option, 'N') = 'O') OR
43336         (NVL(l_enc_upg_option, 'N') = 'O')
43337       )
43338    THEN
43339    NULL;
43340    --
43341    --
43342    
43343   l_ccid := AcctDerRule_6(
43344            p_application_id           => p_application_id
43345          , p_ae_header_id             => l_ae_header_id 
43346 , p_source_11 => p_source_11
43347          , x_transaction_coa_id       => l_adr_transaction_coa_id
43348          , x_accounting_coa_id        => l_adr_accounting_coa_id
43349          , x_value_type_code          => l_adr_value_type_code
43350          , p_side                     => 'NA'
43351    );
43352 
43353    xla_ae_lines_pkg.set_ccid(
43354     p_code_combination_id          => l_ccid
43355   , p_value_type_code              => l_adr_value_type_code
43356   , p_transaction_coa_id           => l_adr_transaction_coa_id
43357   , p_accounting_coa_id            => l_adr_accounting_coa_id
43358   , p_adr_code                     => 'CST_DEFAULT'
43359   , p_adr_type_code                => 'S'
43360   , p_component_type               => l_component_type
43361   , p_component_code               => l_component_code
43362   , p_component_type_code          => l_component_type_code
43363   , p_component_appl_id            => l_component_appl_id
43364   , p_amb_context_code             => l_amb_context_code
43365   , p_side                         => 'NA'
43366   );
43367 
43368 
43369    --
43370    --
43371    END IF;
43372 
43373        --
43374        -- Update the line information that should be overwritten
43375        --
43376        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43377                                          p_header_num   => 1);
43378        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43379 
43380        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43381 
43382        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43383           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43384        END IF;
43385 
43386       --
43387       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43388       --
43389       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43390           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43391       ELSE
43392           ---------------------------------------------------------------------------------------------------
43393           -- 4262811a Switch Sign
43394           ---------------------------------------------------------------------------------------------------
43395           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43396           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43397                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43398           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43399                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43400           -- 5132302
43401           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43402                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43403 
43404       END IF;
43405 
43406       -- 4955764
43407       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43408       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43409 
43410 
43411       XLA_AE_LINES_PKG.ValidateCurrentLine;
43412       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43413 
43414       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43415                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43416                ,p_balance_type_code => l_balance_type_code);
43417 
43418    END IF;
43419 
43420    -----------------------------------------------------------------------------------------
43421    -- 4262811 Multiperiod Accounting
43422    -----------------------------------------------------------------------------------------
43423      -- No MPA option is assigned.
43424 
43425 
43426 END IF;
43427 END IF;
43428 --
43429 
43430 --
43431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43432    trace
43433       (p_msg      => 'END of AcctLineType_101'
43434       ,p_level    => C_LEVEL_PROCEDURE
43435       ,p_module   => l_log_module);
43436 END IF;
43437 --
43438 EXCEPTION
43439   WHEN xla_exceptions_pkg.application_exception THEN
43440       RAISE;
43441   WHEN OTHERS THEN
43442        xla_exceptions_pkg.raise_message
43443            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_101');
43444 END AcctLineType_101;
43445 --
43446 
43447 ---------------------------------------
43448 --
43449 -- PRIVATE FUNCTION
43450 --         AcctLineType_102
43451 --
43452 ---------------------------------------
43453 PROCEDURE AcctLineType_102 (
43454   p_application_id        IN NUMBER
43455  ,p_event_id              IN NUMBER
43456  ,p_calculate_acctd_flag  IN VARCHAR2
43457  ,p_calculate_g_l_flag    IN VARCHAR2
43458  ,p_actual_flag           IN OUT VARCHAR2
43459  ,p_balance_type_code     OUT VARCHAR2
43460  ,p_gain_or_loss_ref      OUT VARCHAR2
43461  
43462 --TRANSACTION_ID
43463  , p_source_1            IN NUMBER
43464 --Item Concatenated Segments
43465  , p_source_2            IN VARCHAR2
43466 --Transaction Quantity
43467  , p_source_3            IN NUMBER
43468 --Transaction Unit of Measure Code
43469  , p_source_4            IN VARCHAR2
43470 --Inventory Transaction Type Description
43471  , p_source_5            IN VARCHAR2
43472 --Cost Management Default Account
43473  , p_source_11            IN NUMBER
43474 --DISTRIBUTION_IDENTIFIER
43475  , p_source_84            IN NUMBER
43476 --Distribution Type
43477  , p_source_85            IN VARCHAR2
43478  , p_source_85_meaning    IN VARCHAR2
43479 --Entered Currency Code
43480  , p_source_88            IN VARCHAR2
43481 --Entered Amount
43482  , p_source_91            IN NUMBER
43483 --Currency Conversion Date
43484  , p_source_92            IN DATE
43485 --Currency Conversion Rate
43486  , p_source_93            IN NUMBER
43487 --Currency Conversion Type
43488  , p_source_94            IN VARCHAR2
43489 --Accounted Amount
43490  , p_source_95            IN NUMBER
43491 --Accounting Line Type
43492  , p_source_97            IN NUMBER
43493 )
43494 IS
43495 
43496 l_component_type              VARCHAR2(80);
43497 l_component_code              VARCHAR2(30);
43498 l_component_type_code         VARCHAR2(1);
43499 l_component_appl_id           INTEGER;
43500 l_amb_context_code            VARCHAR2(30);
43501 l_entity_code                 VARCHAR2(30);
43502 l_event_class_code            VARCHAR2(30);
43503 l_ae_header_id                NUMBER;
43504 l_event_type_code             VARCHAR2(30);
43505 l_line_definition_code        VARCHAR2(30);
43506 l_line_definition_owner_code  VARCHAR2(1);
43507 --
43508 -- adr variables
43509 l_segment                     VARCHAR2(30);
43510 l_ccid                        NUMBER;
43511 l_adr_transaction_coa_id      NUMBER;
43512 l_adr_accounting_coa_id       NUMBER;
43513 l_adr_flexfield_segment_code  VARCHAR2(30);
43514 l_adr_flex_value_set_id       NUMBER;
43515 l_adr_value_type_code         VARCHAR2(30);
43516 l_adr_value_combination_id    NUMBER;
43517 l_adr_value_segment_code      VARCHAR2(30);
43518 
43519 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43520 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43521 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43522 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43523 
43524 -- 4262811 Variables ------------------------------------------------------------------------------------------
43525 l_entered_amt_idx             NUMBER;
43526 l_accted_amt_idx              NUMBER;
43527 l_acc_rev_flag                VARCHAR2(1);
43528 l_accrual_line_num            NUMBER;
43529 l_tmp_amt                     NUMBER;
43530 l_acc_rev_natural_side_code   VARCHAR2(1);
43531 
43532 l_num_entries                 NUMBER;
43533 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43534 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43535 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43536 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43537 l_recog_line_1                NUMBER;
43538 l_recog_line_2                NUMBER;
43539 
43540 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43541 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43542 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43543 
43544 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43545 
43546 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43547 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43548 
43549 ---------------------------------------------------------------------------------------------------------------
43550 
43551 
43552 --
43553 -- bulk performance
43554 --
43555 l_balance_type_code           VARCHAR2(1);
43556 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43557 l_log_module                  VARCHAR2(240);
43558 
43559 --
43560 -- Upgrade strategy
43561 --
43562 l_actual_upg_option           VARCHAR2(1);
43563 l_enc_upg_option           VARCHAR2(1);
43564 
43565 --
43566 BEGIN
43567 --
43568 IF g_log_enabled THEN
43569       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
43570 END IF;
43571 --
43572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43573 
43574       trace
43575          (p_msg      => 'BEGIN of AcctLineType_102'
43576          ,p_level    => C_LEVEL_PROCEDURE
43577          ,p_module   => l_log_module);
43578 
43579 END IF;
43580 --
43581 l_component_type             := 'AMB_JLT';
43582 l_component_code             := 'COST_VARIANCE';
43583 l_component_type_code        := 'S';
43584 l_component_appl_id          :=  707;
43585 l_amb_context_code           := 'DEFAULT';
43586 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
43587 l_event_class_code           := 'SALES_ORDER';
43588 l_event_type_code            := 'RMA_RCPT';
43589 l_line_definition_owner_code := 'S';
43590 l_line_definition_code       := 'PI_RMA_RCPT';
43591 --
43592 l_balance_type_code          := 'A';
43593 l_segment                     := NULL;
43594 l_ccid                        := NULL;
43595 l_adr_transaction_coa_id      := NULL;
43596 l_adr_accounting_coa_id       := NULL;
43597 l_adr_flexfield_segment_code  := NULL;
43598 l_adr_flex_value_set_id       := NULL;
43599 l_adr_value_type_code         := NULL;
43600 l_adr_value_combination_id    := NULL;
43601 l_adr_value_segment_code      := NULL;
43602 
43603 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43604 l_bflow_class_code           := '';    -- 4219869 Business Flow
43605 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43606 l_budgetary_control_flag     := 'N';
43607 
43608 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43609 l_bflow_applied_to_amt       := NULL; -- 5132302
43610 l_entered_amt_idx            := NULL;          -- 4262811
43611 l_accted_amt_idx             := NULL;          -- 4262811
43612 l_acc_rev_flag               := NULL;          -- 4262811
43613 l_accrual_line_num           := NULL;          -- 4262811
43614 l_tmp_amt                    := NULL;          -- 4262811
43615 --
43616  
43617 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43618     l_balance_type_code <> 'B' THEN
43619 IF NVL(p_source_97,9E125) =  13
43620  THEN 
43621 
43622    --
43623    XLA_AE_LINES_PKG.SetNewLine;
43624 
43625    p_balance_type_code          := l_balance_type_code;
43626    -- set the flag so later we will know whether the gain loss line needs to be created
43627    
43628    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43629      p_actual_flag :='A';
43630    END IF;
43631 
43632    --
43633    -- bulk performance
43634    --
43635    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43636                                       p_header_num   => 0); -- 4262811
43637    --
43638    -- set accounting line options
43639    --
43640    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43641            p_natural_side_code          => 'D'
43642          , p_gain_or_loss_flag          => 'N'
43643          , p_gl_transfer_mode_code      => 'S'
43644          , p_acct_entry_type_code       => 'A'
43645          , p_switch_side_flag           => 'Y'
43646          , p_merge_duplicate_code       => 'N'
43647          );
43648    --
43649    l_acc_rev_natural_side_code := 'C';  -- 4262811
43650    -- 
43651    --
43652    -- set accounting line type info
43653    --
43654    xla_ae_lines_pkg.SetAcctLineType
43655       (p_component_type             => l_component_type
43656       ,p_event_type_code            => l_event_type_code
43657       ,p_line_definition_owner_code => l_line_definition_owner_code
43658       ,p_line_definition_code       => l_line_definition_code
43659       ,p_accounting_line_code       => l_component_code
43660       ,p_accounting_line_type_code  => l_component_type_code
43661       ,p_accounting_line_appl_id    => l_component_appl_id
43662       ,p_amb_context_code           => l_amb_context_code
43663       ,p_entity_code                => l_entity_code
43664       ,p_event_class_code           => l_event_class_code);
43665    --
43666    -- set accounting class
43667    --
43668    xla_ae_lines_pkg.SetAcctClass(
43669            p_accounting_class_code  => 'COST_VARIANCE'
43670          , p_ae_header_id           => l_ae_header_id
43671          );
43672 
43673    --
43674    -- set rounding class
43675    --
43676    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43677                       'COST_VARIANCE';
43678 
43679    --
43680    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43681    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43682    --
43683    -- bulk performance
43684    --
43685    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43686 
43687    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43688       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43689 
43690    -- 4955764
43691    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43692       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43693 
43694    -- 4458381 Public Sector Enh
43695    
43696    --
43697    -- set accounting attributes for the line type
43698    --
43699    l_entered_amt_idx := 3;
43700    l_accted_amt_idx  := 8;
43701    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43702    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43703    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
43704    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43705    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
43706    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43707    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
43708    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43709    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
43710    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43711    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
43712    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43713    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
43714    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43715    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
43716    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43717    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
43718 
43719    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43720    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43721 
43722    ---------------------------------------------------------------------------------------------------------------
43723    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43724    ---------------------------------------------------------------------------------------------------------------
43725    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43726 
43727    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43728    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43729 
43730    IF xla_accounting_cache_pkg.GetValueChar
43731          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43732          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43733    AND l_bflow_method_code = 'PRIOR_ENTRY'
43734 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43735    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43736          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43737        )
43738    THEN
43739          xla_ae_lines_pkg.BflowUpgEntry
43740            (p_business_method_code    => l_bflow_method_code
43741            ,p_business_class_code     => l_bflow_class_code
43742            ,p_balance_type            => l_balance_type_code);
43743    ELSE
43744       NULL;
43745 -- No business flow processing for business flow method of NONE.
43746    END IF;
43747 
43748    --
43749    -- call analytical criteria
43750    --
43751    
43752    --
43753    -- call description
43754    --
43755    
43756 xla_ae_lines_pkg.SetLineDescription(
43757    p_ae_header_id => l_ae_header_id
43758   ,p_description  => Description_1 (
43759      p_application_id         => p_application_id
43760    , p_ae_header_id           => l_ae_header_id 
43761 , p_source_1 => p_source_1
43762 , p_source_2 => p_source_2
43763 , p_source_3 => p_source_3
43764 , p_source_4 => p_source_4
43765 , p_source_5 => p_source_5
43766    )
43767 );
43768 
43769 
43770    --
43771    -- call ADRs
43772    -- Bug 4922099
43773    --
43774    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43775         (NVL(l_actual_upg_option, 'N') = 'O') OR
43776         (NVL(l_enc_upg_option, 'N') = 'O')
43777       )
43778    THEN
43779    NULL;
43780    --
43781    --
43782    
43783   l_ccid := AcctDerRule_6(
43784            p_application_id           => p_application_id
43785          , p_ae_header_id             => l_ae_header_id 
43786 , p_source_11 => p_source_11
43787          , x_transaction_coa_id       => l_adr_transaction_coa_id
43788          , x_accounting_coa_id        => l_adr_accounting_coa_id
43789          , x_value_type_code          => l_adr_value_type_code
43790          , p_side                     => 'NA'
43791    );
43792 
43793    xla_ae_lines_pkg.set_ccid(
43794     p_code_combination_id          => l_ccid
43795   , p_value_type_code              => l_adr_value_type_code
43796   , p_transaction_coa_id           => l_adr_transaction_coa_id
43797   , p_accounting_coa_id            => l_adr_accounting_coa_id
43798   , p_adr_code                     => 'CST_DEFAULT'
43799   , p_adr_type_code                => 'S'
43800   , p_component_type               => l_component_type
43801   , p_component_code               => l_component_code
43802   , p_component_type_code          => l_component_type_code
43803   , p_component_appl_id            => l_component_appl_id
43804   , p_amb_context_code             => l_amb_context_code
43805   , p_side                         => 'NA'
43806   );
43807 
43808 
43809    --
43810    --
43811    END IF;
43812    --
43813    -- Bug 4922099
43814    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43815           (NVL(l_enc_upg_option, 'N') = 'O')
43816         ) AND
43817         (l_bflow_method_code = 'PRIOR_ENTRY')
43818       )
43819    THEN
43820       IF
43821       --
43822       1 = 2
43823       --
43824       THEN
43825       xla_accounting_err_pkg.build_message
43826                                     (p_appli_s_name            => 'XLA'
43827                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43828                                     ,p_token_1                 => 'LINE_NUMBER'
43829                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43830                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43831                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43832                                                                              l_component_type
43833                                                                             ,l_component_code
43834                                                                             ,l_component_type_code
43835                                                                             ,l_component_appl_id
43836                                                                             ,l_amb_context_code
43837                                                                             ,l_entity_code
43838                                                                             ,l_event_class_code
43839                                                                            )
43840                                     ,p_token_3                 => 'OWNER'
43841                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43842                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43843                                                                           ,p_lookup_code    => l_component_type_code
43844                                                                          )
43845                                     ,p_token_4                 => 'PRODUCT_NAME'
43846                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43847                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43848                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43849                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43850                                     ,p_ae_header_id            =>  NULL
43851                                        );
43852 
43853         IF (C_LEVEL_ERROR>= g_log_level) THEN
43854                  trace
43855                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43856                       ,p_level    => C_LEVEL_ERROR
43857                       ,p_module   => l_log_module);
43858         END IF;
43859       END IF;
43860    END IF;
43861    --
43862    --
43863    ------------------------------------------------------------------------------------------------
43864    -- 4219869 Business Flow
43865    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43866    -- Prior Entry.  Currently, the following code is always generated.
43867    ------------------------------------------------------------------------------------------------
43868    XLA_AE_LINES_PKG.ValidateCurrentLine;
43869 
43870    ------------------------------------------------------------------------------------
43871    -- 4219869 Business Flow
43872    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43873    ------------------------------------------------------------------------------------
43874    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43875 
43876    ----------------------------------------------------------------------------------
43877    -- 4219869 Business Flow
43878    -- Update journal entry status -- Need to generate this within IF <condition>
43879    ----------------------------------------------------------------------------------
43880    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43881          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43882          ,p_balance_type_code => l_balance_type_code
43883          );
43884 
43885    -------------------------------------------------------------------------------------------
43886    -- 4262811 - Generate the Accrual Reversal lines
43887    -------------------------------------------------------------------------------------------
43888    BEGIN
43889       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43890                               (g_array_event(p_event_id).array_value_num('header_index'));
43891       IF l_acc_rev_flag IS NULL THEN
43892          l_acc_rev_flag := 'N';
43893       END IF;
43894    EXCEPTION
43895       WHEN OTHERS THEN
43896          l_acc_rev_flag := 'N';
43897    END;
43898    --
43899    IF (l_acc_rev_flag = 'Y') THEN
43900 
43901        -- 4645092  ------------------------------------------------------------------------------
43902        -- To allow MPA report to determine if it should generate report process
43903        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43904        ------------------------------------------------------------------------------------------
43905 
43906        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43907        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43908    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43909    -- call ADRs
43910    -- Bug 4922099
43911    --
43912    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43913         (NVL(l_actual_upg_option, 'N') = 'O') OR
43914         (NVL(l_enc_upg_option, 'N') = 'O')
43915       )
43916    THEN
43917    NULL;
43918    --
43919    --
43920    
43921   l_ccid := AcctDerRule_6(
43922            p_application_id           => p_application_id
43923          , p_ae_header_id             => l_ae_header_id 
43924 , p_source_11 => p_source_11
43925          , x_transaction_coa_id       => l_adr_transaction_coa_id
43926          , x_accounting_coa_id        => l_adr_accounting_coa_id
43927          , x_value_type_code          => l_adr_value_type_code
43928          , p_side                     => 'NA'
43929    );
43930 
43931    xla_ae_lines_pkg.set_ccid(
43932     p_code_combination_id          => l_ccid
43933   , p_value_type_code              => l_adr_value_type_code
43934   , p_transaction_coa_id           => l_adr_transaction_coa_id
43935   , p_accounting_coa_id            => l_adr_accounting_coa_id
43936   , p_adr_code                     => 'CST_DEFAULT'
43937   , p_adr_type_code                => 'S'
43938   , p_component_type               => l_component_type
43939   , p_component_code               => l_component_code
43940   , p_component_type_code          => l_component_type_code
43941   , p_component_appl_id            => l_component_appl_id
43942   , p_amb_context_code             => l_amb_context_code
43943   , p_side                         => 'NA'
43944   );
43945 
43946 
43947    --
43948    --
43949    END IF;
43950 
43951        --
43952        -- Update the line information that should be overwritten
43953        --
43954        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43955                                          p_header_num   => 1);
43956        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43957 
43958        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43959 
43960        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43961           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43962        END IF;
43963 
43964       --
43965       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43966       --
43967       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43968           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43969       ELSE
43970           ---------------------------------------------------------------------------------------------------
43971           -- 4262811a Switch Sign
43972           ---------------------------------------------------------------------------------------------------
43973           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43974           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43975                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43976           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43977                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43978           -- 5132302
43979           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43980                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43981 
43982       END IF;
43983 
43984       -- 4955764
43985       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43986       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43987 
43988 
43989       XLA_AE_LINES_PKG.ValidateCurrentLine;
43990       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43991 
43992       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43993                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43994                ,p_balance_type_code => l_balance_type_code);
43995 
43996    END IF;
43997 
43998    -----------------------------------------------------------------------------------------
43999    -- 4262811 Multiperiod Accounting
44000    -----------------------------------------------------------------------------------------
44001      -- No MPA option is assigned.
44002 
44003 
44004 END IF;
44005 END IF;
44006 --
44007 
44008 --
44009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44010    trace
44011       (p_msg      => 'END of AcctLineType_102'
44012       ,p_level    => C_LEVEL_PROCEDURE
44013       ,p_module   => l_log_module);
44014 END IF;
44015 --
44016 EXCEPTION
44017   WHEN xla_exceptions_pkg.application_exception THEN
44018       RAISE;
44019   WHEN OTHERS THEN
44020        xla_exceptions_pkg.raise_message
44021            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_102');
44022 END AcctLineType_102;
44023 --
44024 
44025 ---------------------------------------
44026 --
44027 -- PRIVATE FUNCTION
44028 --         AcctLineType_103
44029 --
44030 ---------------------------------------
44031 PROCEDURE AcctLineType_103 (
44032   p_application_id        IN NUMBER
44033  ,p_event_id              IN NUMBER
44034  ,p_calculate_acctd_flag  IN VARCHAR2
44035  ,p_calculate_g_l_flag    IN VARCHAR2
44036  ,p_actual_flag           IN OUT VARCHAR2
44037  ,p_balance_type_code     OUT VARCHAR2
44038  ,p_gain_or_loss_ref      OUT VARCHAR2
44039  
44040 --TRANSACTION_ID
44041  , p_source_1            IN NUMBER
44042 --Item Concatenated Segments
44043  , p_source_2            IN VARCHAR2
44044 --Transaction Quantity
44045  , p_source_3            IN NUMBER
44046 --Transaction Unit of Measure Code
44047  , p_source_4            IN VARCHAR2
44048 --Inventory Transaction Type Description
44049  , p_source_5            IN VARCHAR2
44050 --Product Line Accounting Category Average Cost Variance Account
44051  , p_source_23            IN NUMBER
44052 --DISTRIBUTION_IDENTIFIER
44053  , p_source_84            IN NUMBER
44054 --Distribution Type
44055  , p_source_85            IN VARCHAR2
44056  , p_source_85_meaning    IN VARCHAR2
44057 --Entered Currency Code
44058  , p_source_88            IN VARCHAR2
44059 --Entered Amount
44060  , p_source_91            IN NUMBER
44061 --Currency Conversion Date
44062  , p_source_92            IN DATE
44063 --Currency Conversion Rate
44064  , p_source_93            IN NUMBER
44065 --Currency Conversion Type
44066  , p_source_94            IN VARCHAR2
44067 --Accounted Amount
44068  , p_source_95            IN NUMBER
44069 --Accounting Line Type
44070  , p_source_97            IN NUMBER
44071 )
44072 IS
44073 
44074 l_component_type              VARCHAR2(80);
44075 l_component_code              VARCHAR2(30);
44076 l_component_type_code         VARCHAR2(1);
44077 l_component_appl_id           INTEGER;
44078 l_amb_context_code            VARCHAR2(30);
44079 l_entity_code                 VARCHAR2(30);
44080 l_event_class_code            VARCHAR2(30);
44081 l_ae_header_id                NUMBER;
44082 l_event_type_code             VARCHAR2(30);
44083 l_line_definition_code        VARCHAR2(30);
44084 l_line_definition_owner_code  VARCHAR2(1);
44085 --
44086 -- adr variables
44087 l_segment                     VARCHAR2(30);
44088 l_ccid                        NUMBER;
44089 l_adr_transaction_coa_id      NUMBER;
44090 l_adr_accounting_coa_id       NUMBER;
44091 l_adr_flexfield_segment_code  VARCHAR2(30);
44092 l_adr_flex_value_set_id       NUMBER;
44093 l_adr_value_type_code         VARCHAR2(30);
44094 l_adr_value_combination_id    NUMBER;
44095 l_adr_value_segment_code      VARCHAR2(30);
44096 
44097 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44098 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44099 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44100 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44101 
44102 -- 4262811 Variables ------------------------------------------------------------------------------------------
44103 l_entered_amt_idx             NUMBER;
44104 l_accted_amt_idx              NUMBER;
44105 l_acc_rev_flag                VARCHAR2(1);
44106 l_accrual_line_num            NUMBER;
44107 l_tmp_amt                     NUMBER;
44108 l_acc_rev_natural_side_code   VARCHAR2(1);
44109 
44110 l_num_entries                 NUMBER;
44111 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44112 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44113 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44114 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44115 l_recog_line_1                NUMBER;
44116 l_recog_line_2                NUMBER;
44117 
44118 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44119 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44120 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44121 
44122 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44123 
44124 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44125 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44126 
44127 ---------------------------------------------------------------------------------------------------------------
44128 
44129 
44130 --
44131 -- bulk performance
44132 --
44133 l_balance_type_code           VARCHAR2(1);
44134 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44135 l_log_module                  VARCHAR2(240);
44136 
44137 --
44138 -- Upgrade strategy
44139 --
44140 l_actual_upg_option           VARCHAR2(1);
44141 l_enc_upg_option           VARCHAR2(1);
44142 
44143 --
44144 BEGIN
44145 --
44146 IF g_log_enabled THEN
44147       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
44148 END IF;
44149 --
44150 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44151 
44152       trace
44153          (p_msg      => 'BEGIN of AcctLineType_103'
44154          ,p_level    => C_LEVEL_PROCEDURE
44155          ,p_module   => l_log_module);
44156 
44157 END IF;
44158 --
44159 l_component_type             := 'AMB_JLT';
44160 l_component_code             := 'COST_VARIANCE';
44161 l_component_type_code        := 'S';
44162 l_component_appl_id          :=  707;
44163 l_amb_context_code           := 'DEFAULT';
44164 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
44165 l_event_class_code           := 'USER_DEFINE';
44166 l_event_type_code            := 'UCG_TXFR';
44167 l_line_definition_owner_code := 'S';
44168 l_line_definition_code       := 'PI_CG_TXFR';
44169 --
44170 l_balance_type_code          := 'A';
44171 l_segment                     := NULL;
44172 l_ccid                        := NULL;
44173 l_adr_transaction_coa_id      := NULL;
44174 l_adr_accounting_coa_id       := NULL;
44175 l_adr_flexfield_segment_code  := NULL;
44176 l_adr_flex_value_set_id       := NULL;
44177 l_adr_value_type_code         := NULL;
44178 l_adr_value_combination_id    := NULL;
44179 l_adr_value_segment_code      := NULL;
44180 
44181 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44182 l_bflow_class_code           := '';    -- 4219869 Business Flow
44183 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44184 l_budgetary_control_flag     := 'N';
44185 
44186 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44187 l_bflow_applied_to_amt       := NULL; -- 5132302
44188 l_entered_amt_idx            := NULL;          -- 4262811
44189 l_accted_amt_idx             := NULL;          -- 4262811
44190 l_acc_rev_flag               := NULL;          -- 4262811
44191 l_accrual_line_num           := NULL;          -- 4262811
44192 l_tmp_amt                    := NULL;          -- 4262811
44193 --
44194  
44195 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44196     l_balance_type_code <> 'B' THEN
44197 IF NVL(p_source_97,9E125) =  13
44198  THEN 
44199 
44200    --
44201    XLA_AE_LINES_PKG.SetNewLine;
44202 
44203    p_balance_type_code          := l_balance_type_code;
44204    -- set the flag so later we will know whether the gain loss line needs to be created
44205    
44206    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44207      p_actual_flag :='A';
44208    END IF;
44209 
44210    --
44211    -- bulk performance
44212    --
44213    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44214                                       p_header_num   => 0); -- 4262811
44215    --
44216    -- set accounting line options
44217    --
44218    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44219            p_natural_side_code          => 'D'
44220          , p_gain_or_loss_flag          => 'N'
44221          , p_gl_transfer_mode_code      => 'S'
44222          , p_acct_entry_type_code       => 'A'
44223          , p_switch_side_flag           => 'Y'
44224          , p_merge_duplicate_code       => 'N'
44225          );
44226    --
44227    l_acc_rev_natural_side_code := 'C';  -- 4262811
44228    -- 
44229    --
44230    -- set accounting line type info
44231    --
44232    xla_ae_lines_pkg.SetAcctLineType
44233       (p_component_type             => l_component_type
44234       ,p_event_type_code            => l_event_type_code
44235       ,p_line_definition_owner_code => l_line_definition_owner_code
44236       ,p_line_definition_code       => l_line_definition_code
44237       ,p_accounting_line_code       => l_component_code
44238       ,p_accounting_line_type_code  => l_component_type_code
44239       ,p_accounting_line_appl_id    => l_component_appl_id
44240       ,p_amb_context_code           => l_amb_context_code
44241       ,p_entity_code                => l_entity_code
44242       ,p_event_class_code           => l_event_class_code);
44243    --
44244    -- set accounting class
44245    --
44246    xla_ae_lines_pkg.SetAcctClass(
44247            p_accounting_class_code  => 'COST_VARIANCE'
44248          , p_ae_header_id           => l_ae_header_id
44249          );
44250 
44251    --
44252    -- set rounding class
44253    --
44254    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44255                       'COST_VARIANCE';
44256 
44257    --
44258    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44259    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44260    --
44261    -- bulk performance
44262    --
44263    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44264 
44265    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44266       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44267 
44268    -- 4955764
44269    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44270       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44271 
44272    -- 4458381 Public Sector Enh
44273    
44274    --
44275    -- set accounting attributes for the line type
44276    --
44277    l_entered_amt_idx := 3;
44278    l_accted_amt_idx  := 8;
44279    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44280    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44281    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
44282    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44283    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
44284    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44285    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
44286    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44287    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
44288    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44289    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
44290    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44291    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
44292    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44293    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
44294    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44295    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
44296 
44297    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44298    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44299 
44300    ---------------------------------------------------------------------------------------------------------------
44301    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44302    ---------------------------------------------------------------------------------------------------------------
44303    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44304 
44305    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44306    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44307 
44308    IF xla_accounting_cache_pkg.GetValueChar
44309          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44310          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44311    AND l_bflow_method_code = 'PRIOR_ENTRY'
44312 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44313    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44314          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44315        )
44316    THEN
44317          xla_ae_lines_pkg.BflowUpgEntry
44318            (p_business_method_code    => l_bflow_method_code
44319            ,p_business_class_code     => l_bflow_class_code
44320            ,p_balance_type            => l_balance_type_code);
44321    ELSE
44322       NULL;
44323 -- No business flow processing for business flow method of NONE.
44324    END IF;
44325 
44326    --
44327    -- call analytical criteria
44328    --
44329    
44330    --
44331    -- call description
44332    --
44333    
44334 xla_ae_lines_pkg.SetLineDescription(
44335    p_ae_header_id => l_ae_header_id
44336   ,p_description  => Description_1 (
44337      p_application_id         => p_application_id
44338    , p_ae_header_id           => l_ae_header_id 
44339 , p_source_1 => p_source_1
44340 , p_source_2 => p_source_2
44341 , p_source_3 => p_source_3
44342 , p_source_4 => p_source_4
44343 , p_source_5 => p_source_5
44344    )
44345 );
44346 
44347 
44348    --
44349    -- call ADRs
44350    -- Bug 4922099
44351    --
44352    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44353         (NVL(l_actual_upg_option, 'N') = 'O') OR
44354         (NVL(l_enc_upg_option, 'N') = 'O')
44355       )
44356    THEN
44357    NULL;
44358    --
44359    --
44360    
44361   l_ccid := AcctDerRule_12(
44362            p_application_id           => p_application_id
44363          , p_ae_header_id             => l_ae_header_id 
44364 , p_source_23 => p_source_23
44365          , x_transaction_coa_id       => l_adr_transaction_coa_id
44366          , x_accounting_coa_id        => l_adr_accounting_coa_id
44367          , x_value_type_code          => l_adr_value_type_code
44368          , p_side                     => 'NA'
44369    );
44370 
44371    xla_ae_lines_pkg.set_ccid(
44372     p_code_combination_id          => l_ccid
44373   , p_value_type_code              => l_adr_value_type_code
44374   , p_transaction_coa_id           => l_adr_transaction_coa_id
44375   , p_accounting_coa_id            => l_adr_accounting_coa_id
44376   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
44377   , p_adr_type_code                => 'S'
44378   , p_component_type               => l_component_type
44379   , p_component_code               => l_component_code
44380   , p_component_type_code          => l_component_type_code
44381   , p_component_appl_id            => l_component_appl_id
44382   , p_amb_context_code             => l_amb_context_code
44383   , p_side                         => 'NA'
44384   );
44385 
44386 
44387    --
44388    --
44389    END IF;
44390    --
44391    -- Bug 4922099
44392    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44393           (NVL(l_enc_upg_option, 'N') = 'O')
44394         ) AND
44395         (l_bflow_method_code = 'PRIOR_ENTRY')
44396       )
44397    THEN
44398       IF
44399       --
44400       1 = 2
44401       --
44402       THEN
44403       xla_accounting_err_pkg.build_message
44404                                     (p_appli_s_name            => 'XLA'
44405                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44406                                     ,p_token_1                 => 'LINE_NUMBER'
44407                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44408                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44409                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44410                                                                              l_component_type
44411                                                                             ,l_component_code
44412                                                                             ,l_component_type_code
44413                                                                             ,l_component_appl_id
44414                                                                             ,l_amb_context_code
44415                                                                             ,l_entity_code
44416                                                                             ,l_event_class_code
44417                                                                            )
44418                                     ,p_token_3                 => 'OWNER'
44419                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44420                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44421                                                                           ,p_lookup_code    => l_component_type_code
44422                                                                          )
44423                                     ,p_token_4                 => 'PRODUCT_NAME'
44424                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44425                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44426                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44427                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44428                                     ,p_ae_header_id            =>  NULL
44429                                        );
44430 
44431         IF (C_LEVEL_ERROR>= g_log_level) THEN
44432                  trace
44433                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44434                       ,p_level    => C_LEVEL_ERROR
44435                       ,p_module   => l_log_module);
44436         END IF;
44437       END IF;
44438    END IF;
44439    --
44440    --
44441    ------------------------------------------------------------------------------------------------
44442    -- 4219869 Business Flow
44443    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44444    -- Prior Entry.  Currently, the following code is always generated.
44445    ------------------------------------------------------------------------------------------------
44446    XLA_AE_LINES_PKG.ValidateCurrentLine;
44447 
44448    ------------------------------------------------------------------------------------
44449    -- 4219869 Business Flow
44450    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44451    ------------------------------------------------------------------------------------
44452    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44453 
44454    ----------------------------------------------------------------------------------
44455    -- 4219869 Business Flow
44456    -- Update journal entry status -- Need to generate this within IF <condition>
44457    ----------------------------------------------------------------------------------
44458    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44459          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44460          ,p_balance_type_code => l_balance_type_code
44461          );
44462 
44463    -------------------------------------------------------------------------------------------
44464    -- 4262811 - Generate the Accrual Reversal lines
44465    -------------------------------------------------------------------------------------------
44466    BEGIN
44467       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44468                               (g_array_event(p_event_id).array_value_num('header_index'));
44469       IF l_acc_rev_flag IS NULL THEN
44470          l_acc_rev_flag := 'N';
44471       END IF;
44472    EXCEPTION
44473       WHEN OTHERS THEN
44474          l_acc_rev_flag := 'N';
44475    END;
44476    --
44477    IF (l_acc_rev_flag = 'Y') THEN
44478 
44479        -- 4645092  ------------------------------------------------------------------------------
44480        -- To allow MPA report to determine if it should generate report process
44481        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44482        ------------------------------------------------------------------------------------------
44483 
44484        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44485        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44486    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44487    -- call ADRs
44488    -- Bug 4922099
44489    --
44490    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44491         (NVL(l_actual_upg_option, 'N') = 'O') OR
44492         (NVL(l_enc_upg_option, 'N') = 'O')
44493       )
44494    THEN
44495    NULL;
44496    --
44497    --
44498    
44499   l_ccid := AcctDerRule_12(
44500            p_application_id           => p_application_id
44501          , p_ae_header_id             => l_ae_header_id 
44502 , p_source_23 => p_source_23
44503          , x_transaction_coa_id       => l_adr_transaction_coa_id
44504          , x_accounting_coa_id        => l_adr_accounting_coa_id
44505          , x_value_type_code          => l_adr_value_type_code
44506          , p_side                     => 'NA'
44507    );
44508 
44509    xla_ae_lines_pkg.set_ccid(
44510     p_code_combination_id          => l_ccid
44511   , p_value_type_code              => l_adr_value_type_code
44512   , p_transaction_coa_id           => l_adr_transaction_coa_id
44513   , p_accounting_coa_id            => l_adr_accounting_coa_id
44514   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
44515   , p_adr_type_code                => 'S'
44516   , p_component_type               => l_component_type
44517   , p_component_code               => l_component_code
44518   , p_component_type_code          => l_component_type_code
44519   , p_component_appl_id            => l_component_appl_id
44520   , p_amb_context_code             => l_amb_context_code
44521   , p_side                         => 'NA'
44522   );
44523 
44524 
44525    --
44526    --
44527    END IF;
44528 
44529        --
44530        -- Update the line information that should be overwritten
44531        --
44532        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44533                                          p_header_num   => 1);
44534        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44535 
44536        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44537 
44538        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44539           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44540        END IF;
44541 
44542       --
44543       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44544       --
44545       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44546           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44547       ELSE
44548           ---------------------------------------------------------------------------------------------------
44549           -- 4262811a Switch Sign
44550           ---------------------------------------------------------------------------------------------------
44551           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44552           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44553                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44554           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44555                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44556           -- 5132302
44557           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44558                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44559 
44560       END IF;
44561 
44562       -- 4955764
44563       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44564       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44565 
44566 
44567       XLA_AE_LINES_PKG.ValidateCurrentLine;
44568       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44569 
44570       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44571                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44572                ,p_balance_type_code => l_balance_type_code);
44573 
44574    END IF;
44575 
44576    -----------------------------------------------------------------------------------------
44577    -- 4262811 Multiperiod Accounting
44578    -----------------------------------------------------------------------------------------
44579      -- No MPA option is assigned.
44580 
44581 
44582 END IF;
44583 END IF;
44584 --
44585 
44586 --
44587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44588    trace
44589       (p_msg      => 'END of AcctLineType_103'
44590       ,p_level    => C_LEVEL_PROCEDURE
44591       ,p_module   => l_log_module);
44592 END IF;
44593 --
44594 EXCEPTION
44595   WHEN xla_exceptions_pkg.application_exception THEN
44596       RAISE;
44597   WHEN OTHERS THEN
44598        xla_exceptions_pkg.raise_message
44599            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_103');
44600 END AcctLineType_103;
44601 --
44602 
44603 ---------------------------------------
44604 --
44605 -- PRIVATE FUNCTION
44606 --         AcctLineType_104
44607 --
44608 ---------------------------------------
44609 PROCEDURE AcctLineType_104 (
44610   p_application_id        IN NUMBER
44611  ,p_event_id              IN NUMBER
44612  ,p_calculate_acctd_flag  IN VARCHAR2
44613  ,p_calculate_g_l_flag    IN VARCHAR2
44614  ,p_actual_flag           IN OUT VARCHAR2
44615  ,p_balance_type_code     OUT VARCHAR2
44616  ,p_gain_or_loss_ref      OUT VARCHAR2
44617  
44618 --TRANSACTION_ID
44619  , p_source_1            IN NUMBER
44620 --Item Concatenated Segments
44621  , p_source_2            IN VARCHAR2
44622 --Transaction Quantity
44623  , p_source_3            IN NUMBER
44624 --Transaction Unit of Measure Code
44625  , p_source_4            IN VARCHAR2
44626 --Inventory Transaction Type Description
44627  , p_source_5            IN VARCHAR2
44628 --Cost Management Default Account
44629  , p_source_11            IN NUMBER
44630 --DISTRIBUTION_IDENTIFIER
44631  , p_source_84            IN NUMBER
44632 --Distribution Type
44633  , p_source_85            IN VARCHAR2
44634  , p_source_85_meaning    IN VARCHAR2
44635 --Entered Currency Code
44636  , p_source_88            IN VARCHAR2
44637 --Entered Amount
44638  , p_source_91            IN NUMBER
44639 --Currency Conversion Date
44640  , p_source_92            IN DATE
44641 --Currency Conversion Rate
44642  , p_source_93            IN NUMBER
44643 --Currency Conversion Type
44644  , p_source_94            IN VARCHAR2
44645 --Accounted Amount
44646  , p_source_95            IN NUMBER
44647 --Accounting Line Type
44648  , p_source_97            IN NUMBER
44649 )
44650 IS
44651 
44652 l_component_type              VARCHAR2(80);
44653 l_component_code              VARCHAR2(30);
44654 l_component_type_code         VARCHAR2(1);
44655 l_component_appl_id           INTEGER;
44656 l_amb_context_code            VARCHAR2(30);
44657 l_entity_code                 VARCHAR2(30);
44658 l_event_class_code            VARCHAR2(30);
44659 l_ae_header_id                NUMBER;
44660 l_event_type_code             VARCHAR2(30);
44661 l_line_definition_code        VARCHAR2(30);
44662 l_line_definition_owner_code  VARCHAR2(1);
44663 --
44664 -- adr variables
44665 l_segment                     VARCHAR2(30);
44666 l_ccid                        NUMBER;
44667 l_adr_transaction_coa_id      NUMBER;
44668 l_adr_accounting_coa_id       NUMBER;
44669 l_adr_flexfield_segment_code  VARCHAR2(30);
44670 l_adr_flex_value_set_id       NUMBER;
44671 l_adr_value_type_code         VARCHAR2(30);
44672 l_adr_value_combination_id    NUMBER;
44673 l_adr_value_segment_code      VARCHAR2(30);
44674 
44675 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44676 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44677 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44678 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44679 
44680 -- 4262811 Variables ------------------------------------------------------------------------------------------
44681 l_entered_amt_idx             NUMBER;
44682 l_accted_amt_idx              NUMBER;
44683 l_acc_rev_flag                VARCHAR2(1);
44684 l_accrual_line_num            NUMBER;
44685 l_tmp_amt                     NUMBER;
44686 l_acc_rev_natural_side_code   VARCHAR2(1);
44687 
44688 l_num_entries                 NUMBER;
44689 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44690 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44691 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44692 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44693 l_recog_line_1                NUMBER;
44694 l_recog_line_2                NUMBER;
44695 
44696 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44697 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44698 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44699 
44700 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44701 
44702 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44703 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44704 
44705 ---------------------------------------------------------------------------------------------------------------
44706 
44707 
44708 --
44709 -- bulk performance
44710 --
44711 l_balance_type_code           VARCHAR2(1);
44712 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44713 l_log_module                  VARCHAR2(240);
44714 
44715 --
44716 -- Upgrade strategy
44717 --
44718 l_actual_upg_option           VARCHAR2(1);
44719 l_enc_upg_option           VARCHAR2(1);
44720 
44721 --
44722 BEGIN
44723 --
44724 IF g_log_enabled THEN
44725       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
44726 END IF;
44727 --
44728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44729 
44730       trace
44731          (p_msg      => 'BEGIN of AcctLineType_104'
44732          ,p_level    => C_LEVEL_PROCEDURE
44733          ,p_module   => l_log_module);
44734 
44735 END IF;
44736 --
44737 l_component_type             := 'AMB_JLT';
44738 l_component_code             := 'COST_VARIANCE';
44739 l_component_type_code        := 'S';
44740 l_component_appl_id          :=  707;
44741 l_amb_context_code           := 'DEFAULT';
44742 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
44743 l_event_class_code           := 'USER_DEFINE';
44744 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
44745 l_line_definition_owner_code := 'S';
44746 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
44747 --
44748 l_balance_type_code          := 'A';
44749 l_segment                     := NULL;
44750 l_ccid                        := NULL;
44751 l_adr_transaction_coa_id      := NULL;
44752 l_adr_accounting_coa_id       := NULL;
44753 l_adr_flexfield_segment_code  := NULL;
44754 l_adr_flex_value_set_id       := NULL;
44755 l_adr_value_type_code         := NULL;
44756 l_adr_value_combination_id    := NULL;
44757 l_adr_value_segment_code      := NULL;
44758 
44759 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44760 l_bflow_class_code           := '';    -- 4219869 Business Flow
44761 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44762 l_budgetary_control_flag     := 'N';
44763 
44764 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44765 l_bflow_applied_to_amt       := NULL; -- 5132302
44766 l_entered_amt_idx            := NULL;          -- 4262811
44767 l_accted_amt_idx             := NULL;          -- 4262811
44768 l_acc_rev_flag               := NULL;          -- 4262811
44769 l_accrual_line_num           := NULL;          -- 4262811
44770 l_tmp_amt                    := NULL;          -- 4262811
44771 --
44772  
44773 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44774     l_balance_type_code <> 'B' THEN
44775 IF NVL(p_source_97,9E125) =  13
44776  THEN 
44777 
44778    --
44779    XLA_AE_LINES_PKG.SetNewLine;
44780 
44781    p_balance_type_code          := l_balance_type_code;
44782    -- set the flag so later we will know whether the gain loss line needs to be created
44783    
44784    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44785      p_actual_flag :='A';
44786    END IF;
44787 
44788    --
44789    -- bulk performance
44790    --
44791    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44792                                       p_header_num   => 0); -- 4262811
44793    --
44794    -- set accounting line options
44795    --
44796    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44797            p_natural_side_code          => 'D'
44798          , p_gain_or_loss_flag          => 'N'
44799          , p_gl_transfer_mode_code      => 'S'
44800          , p_acct_entry_type_code       => 'A'
44801          , p_switch_side_flag           => 'Y'
44802          , p_merge_duplicate_code       => 'N'
44803          );
44804    --
44805    l_acc_rev_natural_side_code := 'C';  -- 4262811
44806    -- 
44807    --
44808    -- set accounting line type info
44809    --
44810    xla_ae_lines_pkg.SetAcctLineType
44811       (p_component_type             => l_component_type
44812       ,p_event_type_code            => l_event_type_code
44813       ,p_line_definition_owner_code => l_line_definition_owner_code
44814       ,p_line_definition_code       => l_line_definition_code
44815       ,p_accounting_line_code       => l_component_code
44816       ,p_accounting_line_type_code  => l_component_type_code
44817       ,p_accounting_line_appl_id    => l_component_appl_id
44818       ,p_amb_context_code           => l_amb_context_code
44819       ,p_entity_code                => l_entity_code
44820       ,p_event_class_code           => l_event_class_code);
44821    --
44822    -- set accounting class
44823    --
44824    xla_ae_lines_pkg.SetAcctClass(
44825            p_accounting_class_code  => 'COST_VARIANCE'
44826          , p_ae_header_id           => l_ae_header_id
44827          );
44828 
44829    --
44830    -- set rounding class
44831    --
44832    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44833                       'COST_VARIANCE';
44834 
44835    --
44836    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44837    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44838    --
44839    -- bulk performance
44840    --
44841    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44842 
44843    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44844       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44845 
44846    -- 4955764
44847    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44848       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44849 
44850    -- 4458381 Public Sector Enh
44851    
44852    --
44853    -- set accounting attributes for the line type
44854    --
44855    l_entered_amt_idx := 3;
44856    l_accted_amt_idx  := 8;
44857    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44858    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44859    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
44860    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44861    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
44862    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44863    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
44864    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44865    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
44866    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44867    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
44868    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44869    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
44870    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44871    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
44872    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44873    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
44874 
44875    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44876    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44877 
44878    ---------------------------------------------------------------------------------------------------------------
44879    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44880    ---------------------------------------------------------------------------------------------------------------
44881    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44882 
44883    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44884    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44885 
44886    IF xla_accounting_cache_pkg.GetValueChar
44887          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44888          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44889    AND l_bflow_method_code = 'PRIOR_ENTRY'
44890 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44891    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44892          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44893        )
44894    THEN
44895          xla_ae_lines_pkg.BflowUpgEntry
44896            (p_business_method_code    => l_bflow_method_code
44897            ,p_business_class_code     => l_bflow_class_code
44898            ,p_balance_type            => l_balance_type_code);
44899    ELSE
44900       NULL;
44901 -- No business flow processing for business flow method of NONE.
44902    END IF;
44903 
44904    --
44905    -- call analytical criteria
44906    --
44907    
44908    --
44909    -- call description
44910    --
44911    
44912 xla_ae_lines_pkg.SetLineDescription(
44913    p_ae_header_id => l_ae_header_id
44914   ,p_description  => Description_1 (
44915      p_application_id         => p_application_id
44916    , p_ae_header_id           => l_ae_header_id 
44917 , p_source_1 => p_source_1
44918 , p_source_2 => p_source_2
44919 , p_source_3 => p_source_3
44920 , p_source_4 => p_source_4
44921 , p_source_5 => p_source_5
44922    )
44923 );
44924 
44925 
44926    --
44927    -- call ADRs
44928    -- Bug 4922099
44929    --
44930    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44931         (NVL(l_actual_upg_option, 'N') = 'O') OR
44932         (NVL(l_enc_upg_option, 'N') = 'O')
44933       )
44934    THEN
44935    NULL;
44936    --
44937    --
44938    
44939   l_ccid := AcctDerRule_6(
44940            p_application_id           => p_application_id
44941          , p_ae_header_id             => l_ae_header_id 
44942 , p_source_11 => p_source_11
44943          , x_transaction_coa_id       => l_adr_transaction_coa_id
44944          , x_accounting_coa_id        => l_adr_accounting_coa_id
44945          , x_value_type_code          => l_adr_value_type_code
44946          , p_side                     => 'NA'
44947    );
44948 
44949    xla_ae_lines_pkg.set_ccid(
44950     p_code_combination_id          => l_ccid
44951   , p_value_type_code              => l_adr_value_type_code
44952   , p_transaction_coa_id           => l_adr_transaction_coa_id
44953   , p_accounting_coa_id            => l_adr_accounting_coa_id
44954   , p_adr_code                     => 'CST_DEFAULT'
44955   , p_adr_type_code                => 'S'
44956   , p_component_type               => l_component_type
44957   , p_component_code               => l_component_code
44958   , p_component_type_code          => l_component_type_code
44959   , p_component_appl_id            => l_component_appl_id
44960   , p_amb_context_code             => l_amb_context_code
44961   , p_side                         => 'NA'
44962   );
44963 
44964 
44965    --
44966    --
44967    END IF;
44968    --
44969    -- Bug 4922099
44970    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44971           (NVL(l_enc_upg_option, 'N') = 'O')
44972         ) AND
44973         (l_bflow_method_code = 'PRIOR_ENTRY')
44974       )
44975    THEN
44976       IF
44977       --
44978       1 = 2
44979       --
44980       THEN
44981       xla_accounting_err_pkg.build_message
44982                                     (p_appli_s_name            => 'XLA'
44983                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44984                                     ,p_token_1                 => 'LINE_NUMBER'
44985                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44986                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44987                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44988                                                                              l_component_type
44989                                                                             ,l_component_code
44990                                                                             ,l_component_type_code
44991                                                                             ,l_component_appl_id
44992                                                                             ,l_amb_context_code
44993                                                                             ,l_entity_code
44994                                                                             ,l_event_class_code
44995                                                                            )
44996                                     ,p_token_3                 => 'OWNER'
44997                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44998                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44999                                                                           ,p_lookup_code    => l_component_type_code
45000                                                                          )
45001                                     ,p_token_4                 => 'PRODUCT_NAME'
45002                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45003                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45004                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45005                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45006                                     ,p_ae_header_id            =>  NULL
45007                                        );
45008 
45009         IF (C_LEVEL_ERROR>= g_log_level) THEN
45010                  trace
45011                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45012                       ,p_level    => C_LEVEL_ERROR
45013                       ,p_module   => l_log_module);
45014         END IF;
45015       END IF;
45016    END IF;
45017    --
45018    --
45019    ------------------------------------------------------------------------------------------------
45020    -- 4219869 Business Flow
45021    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45022    -- Prior Entry.  Currently, the following code is always generated.
45023    ------------------------------------------------------------------------------------------------
45024    XLA_AE_LINES_PKG.ValidateCurrentLine;
45025 
45026    ------------------------------------------------------------------------------------
45027    -- 4219869 Business Flow
45028    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45029    ------------------------------------------------------------------------------------
45030    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45031 
45032    ----------------------------------------------------------------------------------
45033    -- 4219869 Business Flow
45034    -- Update journal entry status -- Need to generate this within IF <condition>
45035    ----------------------------------------------------------------------------------
45036    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45037          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45038          ,p_balance_type_code => l_balance_type_code
45039          );
45040 
45041    -------------------------------------------------------------------------------------------
45042    -- 4262811 - Generate the Accrual Reversal lines
45043    -------------------------------------------------------------------------------------------
45044    BEGIN
45045       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45046                               (g_array_event(p_event_id).array_value_num('header_index'));
45047       IF l_acc_rev_flag IS NULL THEN
45048          l_acc_rev_flag := 'N';
45049       END IF;
45050    EXCEPTION
45051       WHEN OTHERS THEN
45052          l_acc_rev_flag := 'N';
45053    END;
45054    --
45055    IF (l_acc_rev_flag = 'Y') THEN
45056 
45057        -- 4645092  ------------------------------------------------------------------------------
45058        -- To allow MPA report to determine if it should generate report process
45059        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45060        ------------------------------------------------------------------------------------------
45061 
45062        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45063        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45064    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45065    -- call ADRs
45066    -- Bug 4922099
45067    --
45068    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45069         (NVL(l_actual_upg_option, 'N') = 'O') OR
45070         (NVL(l_enc_upg_option, 'N') = 'O')
45071       )
45072    THEN
45073    NULL;
45074    --
45075    --
45076    
45077   l_ccid := AcctDerRule_6(
45078            p_application_id           => p_application_id
45079          , p_ae_header_id             => l_ae_header_id 
45080 , p_source_11 => p_source_11
45081          , x_transaction_coa_id       => l_adr_transaction_coa_id
45082          , x_accounting_coa_id        => l_adr_accounting_coa_id
45083          , x_value_type_code          => l_adr_value_type_code
45084          , p_side                     => 'NA'
45085    );
45086 
45087    xla_ae_lines_pkg.set_ccid(
45088     p_code_combination_id          => l_ccid
45089   , p_value_type_code              => l_adr_value_type_code
45090   , p_transaction_coa_id           => l_adr_transaction_coa_id
45091   , p_accounting_coa_id            => l_adr_accounting_coa_id
45092   , p_adr_code                     => 'CST_DEFAULT'
45093   , p_adr_type_code                => 'S'
45094   , p_component_type               => l_component_type
45095   , p_component_code               => l_component_code
45096   , p_component_type_code          => l_component_type_code
45097   , p_component_appl_id            => l_component_appl_id
45098   , p_amb_context_code             => l_amb_context_code
45099   , p_side                         => 'NA'
45100   );
45101 
45102 
45103    --
45104    --
45105    END IF;
45106 
45107        --
45108        -- Update the line information that should be overwritten
45109        --
45110        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45111                                          p_header_num   => 1);
45112        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45113 
45114        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45115 
45116        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45117           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45118        END IF;
45119 
45120       --
45121       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45122       --
45123       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45124           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45125       ELSE
45126           ---------------------------------------------------------------------------------------------------
45127           -- 4262811a Switch Sign
45128           ---------------------------------------------------------------------------------------------------
45129           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45130           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45131                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45132           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45133                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45134           -- 5132302
45135           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45136                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45137 
45138       END IF;
45139 
45140       -- 4955764
45141       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45142       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45143 
45144 
45145       XLA_AE_LINES_PKG.ValidateCurrentLine;
45146       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45147 
45148       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45149                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45150                ,p_balance_type_code => l_balance_type_code);
45151 
45152    END IF;
45153 
45154    -----------------------------------------------------------------------------------------
45155    -- 4262811 Multiperiod Accounting
45156    -----------------------------------------------------------------------------------------
45157      -- No MPA option is assigned.
45158 
45159 
45160 END IF;
45161 END IF;
45162 --
45163 
45164 --
45165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45166    trace
45167       (p_msg      => 'END of AcctLineType_104'
45168       ,p_level    => C_LEVEL_PROCEDURE
45169       ,p_module   => l_log_module);
45170 END IF;
45171 --
45172 EXCEPTION
45173   WHEN xla_exceptions_pkg.application_exception THEN
45174       RAISE;
45175   WHEN OTHERS THEN
45176        xla_exceptions_pkg.raise_message
45177            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_104');
45178 END AcctLineType_104;
45179 --
45180 
45181 ---------------------------------------
45182 --
45183 -- PRIVATE FUNCTION
45184 --         AcctLineType_105
45185 --
45186 ---------------------------------------
45187 PROCEDURE AcctLineType_105 (
45188   p_application_id        IN NUMBER
45189  ,p_event_id              IN NUMBER
45190  ,p_calculate_acctd_flag  IN VARCHAR2
45191  ,p_calculate_g_l_flag    IN VARCHAR2
45192  ,p_actual_flag           IN OUT VARCHAR2
45193  ,p_balance_type_code     OUT VARCHAR2
45194  ,p_gain_or_loss_ref      OUT VARCHAR2
45195  
45196 --TRANSACTION_ID
45197  , p_source_1            IN NUMBER
45198 --Item Concatenated Segments
45199  , p_source_2            IN VARCHAR2
45200 --Transaction Quantity
45201  , p_source_3            IN NUMBER
45202 --Transaction Unit of Measure Code
45203  , p_source_4            IN VARCHAR2
45204 --Inventory Transaction Type Description
45205  , p_source_5            IN VARCHAR2
45206 --Cost Management Default Account
45207  , p_source_11            IN NUMBER
45208 --DISTRIBUTION_IDENTIFIER
45209  , p_source_84            IN NUMBER
45210 --Distribution Type
45211  , p_source_85            IN VARCHAR2
45212  , p_source_85_meaning    IN VARCHAR2
45213 --Entered Currency Code
45214  , p_source_88            IN VARCHAR2
45215 --Entered Amount
45216  , p_source_91            IN NUMBER
45217 --Currency Conversion Date
45218  , p_source_92            IN DATE
45219 --Currency Conversion Rate
45220  , p_source_93            IN NUMBER
45221 --Currency Conversion Type
45222  , p_source_94            IN VARCHAR2
45223 --Accounted Amount
45224  , p_source_95            IN NUMBER
45225 --Accounting Line Type
45226  , p_source_97            IN NUMBER
45227 )
45228 IS
45229 
45230 l_component_type              VARCHAR2(80);
45231 l_component_code              VARCHAR2(30);
45232 l_component_type_code         VARCHAR2(1);
45233 l_component_appl_id           INTEGER;
45234 l_amb_context_code            VARCHAR2(30);
45235 l_entity_code                 VARCHAR2(30);
45236 l_event_class_code            VARCHAR2(30);
45237 l_ae_header_id                NUMBER;
45238 l_event_type_code             VARCHAR2(30);
45239 l_line_definition_code        VARCHAR2(30);
45240 l_line_definition_owner_code  VARCHAR2(1);
45241 --
45242 -- adr variables
45243 l_segment                     VARCHAR2(30);
45244 l_ccid                        NUMBER;
45245 l_adr_transaction_coa_id      NUMBER;
45246 l_adr_accounting_coa_id       NUMBER;
45247 l_adr_flexfield_segment_code  VARCHAR2(30);
45248 l_adr_flex_value_set_id       NUMBER;
45249 l_adr_value_type_code         VARCHAR2(30);
45250 l_adr_value_combination_id    NUMBER;
45251 l_adr_value_segment_code      VARCHAR2(30);
45252 
45253 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45254 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45255 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45256 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45257 
45258 -- 4262811 Variables ------------------------------------------------------------------------------------------
45259 l_entered_amt_idx             NUMBER;
45260 l_accted_amt_idx              NUMBER;
45261 l_acc_rev_flag                VARCHAR2(1);
45262 l_accrual_line_num            NUMBER;
45263 l_tmp_amt                     NUMBER;
45264 l_acc_rev_natural_side_code   VARCHAR2(1);
45265 
45266 l_num_entries                 NUMBER;
45267 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45268 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45269 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45270 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45271 l_recog_line_1                NUMBER;
45272 l_recog_line_2                NUMBER;
45273 
45274 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45275 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45276 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45277 
45278 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45279 
45280 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45281 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45282 
45283 ---------------------------------------------------------------------------------------------------------------
45284 
45285 
45286 --
45287 -- bulk performance
45288 --
45289 l_balance_type_code           VARCHAR2(1);
45290 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45291 l_log_module                  VARCHAR2(240);
45292 
45293 --
45294 -- Upgrade strategy
45295 --
45296 l_actual_upg_option           VARCHAR2(1);
45297 l_enc_upg_option           VARCHAR2(1);
45298 
45299 --
45300 BEGIN
45301 --
45302 IF g_log_enabled THEN
45303       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
45304 END IF;
45305 --
45306 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45307 
45308       trace
45309          (p_msg      => 'BEGIN of AcctLineType_105'
45310          ,p_level    => C_LEVEL_PROCEDURE
45311          ,p_module   => l_log_module);
45312 
45313 END IF;
45314 --
45315 l_component_type             := 'AMB_JLT';
45316 l_component_code             := 'COST_VARIANCE';
45317 l_component_type_code        := 'S';
45318 l_component_appl_id          :=  707;
45319 l_amb_context_code           := 'DEFAULT';
45320 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
45321 l_event_class_code           := 'USER_DEFINE';
45322 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
45323 l_line_definition_owner_code := 'S';
45324 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
45325 --
45326 l_balance_type_code          := 'A';
45327 l_segment                     := NULL;
45328 l_ccid                        := NULL;
45329 l_adr_transaction_coa_id      := NULL;
45330 l_adr_accounting_coa_id       := NULL;
45331 l_adr_flexfield_segment_code  := NULL;
45332 l_adr_flex_value_set_id       := NULL;
45333 l_adr_value_type_code         := NULL;
45334 l_adr_value_combination_id    := NULL;
45335 l_adr_value_segment_code      := NULL;
45336 
45337 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45338 l_bflow_class_code           := '';    -- 4219869 Business Flow
45339 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45340 l_budgetary_control_flag     := 'N';
45341 
45342 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45343 l_bflow_applied_to_amt       := NULL; -- 5132302
45344 l_entered_amt_idx            := NULL;          -- 4262811
45345 l_accted_amt_idx             := NULL;          -- 4262811
45346 l_acc_rev_flag               := NULL;          -- 4262811
45347 l_accrual_line_num           := NULL;          -- 4262811
45348 l_tmp_amt                    := NULL;          -- 4262811
45349 --
45350  
45351 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45352     l_balance_type_code <> 'B' THEN
45353 IF NVL(p_source_97,9E125) =  13
45354  THEN 
45355 
45356    --
45357    XLA_AE_LINES_PKG.SetNewLine;
45358 
45359    p_balance_type_code          := l_balance_type_code;
45360    -- set the flag so later we will know whether the gain loss line needs to be created
45361    
45362    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45363      p_actual_flag :='A';
45364    END IF;
45365 
45366    --
45367    -- bulk performance
45368    --
45369    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45370                                       p_header_num   => 0); -- 4262811
45371    --
45372    -- set accounting line options
45373    --
45374    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45375            p_natural_side_code          => 'D'
45376          , p_gain_or_loss_flag          => 'N'
45377          , p_gl_transfer_mode_code      => 'S'
45378          , p_acct_entry_type_code       => 'A'
45379          , p_switch_side_flag           => 'Y'
45380          , p_merge_duplicate_code       => 'N'
45381          );
45382    --
45383    l_acc_rev_natural_side_code := 'C';  -- 4262811
45384    -- 
45385    --
45386    -- set accounting line type info
45387    --
45388    xla_ae_lines_pkg.SetAcctLineType
45389       (p_component_type             => l_component_type
45390       ,p_event_type_code            => l_event_type_code
45391       ,p_line_definition_owner_code => l_line_definition_owner_code
45392       ,p_line_definition_code       => l_line_definition_code
45393       ,p_accounting_line_code       => l_component_code
45394       ,p_accounting_line_type_code  => l_component_type_code
45395       ,p_accounting_line_appl_id    => l_component_appl_id
45396       ,p_amb_context_code           => l_amb_context_code
45397       ,p_entity_code                => l_entity_code
45398       ,p_event_class_code           => l_event_class_code);
45399    --
45400    -- set accounting class
45401    --
45402    xla_ae_lines_pkg.SetAcctClass(
45403            p_accounting_class_code  => 'COST_VARIANCE'
45404          , p_ae_header_id           => l_ae_header_id
45405          );
45406 
45407    --
45408    -- set rounding class
45409    --
45410    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45411                       'COST_VARIANCE';
45412 
45413    --
45414    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45415    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45416    --
45417    -- bulk performance
45418    --
45419    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45420 
45421    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45422       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45423 
45424    -- 4955764
45425    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45426       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45427 
45428    -- 4458381 Public Sector Enh
45429    
45430    --
45431    -- set accounting attributes for the line type
45432    --
45433    l_entered_amt_idx := 3;
45434    l_accted_amt_idx  := 8;
45435    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45436    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45437    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
45438    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45439    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
45440    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45441    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
45442    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45443    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
45444    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45445    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
45446    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45447    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
45448    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45449    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
45450    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45451    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
45452 
45453    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45454    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45455 
45456    ---------------------------------------------------------------------------------------------------------------
45457    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45458    ---------------------------------------------------------------------------------------------------------------
45459    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45460 
45461    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45462    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45463 
45464    IF xla_accounting_cache_pkg.GetValueChar
45465          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45466          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45467    AND l_bflow_method_code = 'PRIOR_ENTRY'
45468 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45469    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45470          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45471        )
45472    THEN
45473          xla_ae_lines_pkg.BflowUpgEntry
45474            (p_business_method_code    => l_bflow_method_code
45475            ,p_business_class_code     => l_bflow_class_code
45476            ,p_balance_type            => l_balance_type_code);
45477    ELSE
45478       NULL;
45479 -- No business flow processing for business flow method of NONE.
45480    END IF;
45481 
45482    --
45483    -- call analytical criteria
45484    --
45485    
45486    --
45487    -- call description
45488    --
45489    
45490 xla_ae_lines_pkg.SetLineDescription(
45491    p_ae_header_id => l_ae_header_id
45492   ,p_description  => Description_1 (
45493      p_application_id         => p_application_id
45494    , p_ae_header_id           => l_ae_header_id 
45495 , p_source_1 => p_source_1
45496 , p_source_2 => p_source_2
45497 , p_source_3 => p_source_3
45498 , p_source_4 => p_source_4
45499 , p_source_5 => p_source_5
45500    )
45501 );
45502 
45503 
45504    --
45505    -- call ADRs
45506    -- Bug 4922099
45507    --
45508    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45509         (NVL(l_actual_upg_option, 'N') = 'O') OR
45510         (NVL(l_enc_upg_option, 'N') = 'O')
45511       )
45512    THEN
45513    NULL;
45514    --
45515    --
45516    
45517   l_ccid := AcctDerRule_6(
45518            p_application_id           => p_application_id
45519          , p_ae_header_id             => l_ae_header_id 
45520 , p_source_11 => p_source_11
45521          , x_transaction_coa_id       => l_adr_transaction_coa_id
45522          , x_accounting_coa_id        => l_adr_accounting_coa_id
45523          , x_value_type_code          => l_adr_value_type_code
45524          , p_side                     => 'NA'
45525    );
45526 
45527    xla_ae_lines_pkg.set_ccid(
45528     p_code_combination_id          => l_ccid
45529   , p_value_type_code              => l_adr_value_type_code
45530   , p_transaction_coa_id           => l_adr_transaction_coa_id
45531   , p_accounting_coa_id            => l_adr_accounting_coa_id
45532   , p_adr_code                     => 'CST_DEFAULT'
45533   , p_adr_type_code                => 'S'
45534   , p_component_type               => l_component_type
45535   , p_component_code               => l_component_code
45536   , p_component_type_code          => l_component_type_code
45537   , p_component_appl_id            => l_component_appl_id
45538   , p_amb_context_code             => l_amb_context_code
45539   , p_side                         => 'NA'
45540   );
45541 
45542 
45543    --
45544    --
45545    END IF;
45546    --
45547    -- Bug 4922099
45548    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45549           (NVL(l_enc_upg_option, 'N') = 'O')
45550         ) AND
45551         (l_bflow_method_code = 'PRIOR_ENTRY')
45552       )
45553    THEN
45554       IF
45555       --
45556       1 = 2
45557       --
45558       THEN
45559       xla_accounting_err_pkg.build_message
45560                                     (p_appli_s_name            => 'XLA'
45561                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45562                                     ,p_token_1                 => 'LINE_NUMBER'
45563                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45564                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45565                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45566                                                                              l_component_type
45567                                                                             ,l_component_code
45568                                                                             ,l_component_type_code
45569                                                                             ,l_component_appl_id
45570                                                                             ,l_amb_context_code
45571                                                                             ,l_entity_code
45572                                                                             ,l_event_class_code
45573                                                                            )
45574                                     ,p_token_3                 => 'OWNER'
45575                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45576                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45577                                                                           ,p_lookup_code    => l_component_type_code
45578                                                                          )
45579                                     ,p_token_4                 => 'PRODUCT_NAME'
45580                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45581                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45582                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45583                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45584                                     ,p_ae_header_id            =>  NULL
45585                                        );
45586 
45587         IF (C_LEVEL_ERROR>= g_log_level) THEN
45588                  trace
45589                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45590                       ,p_level    => C_LEVEL_ERROR
45591                       ,p_module   => l_log_module);
45592         END IF;
45593       END IF;
45594    END IF;
45595    --
45596    --
45597    ------------------------------------------------------------------------------------------------
45598    -- 4219869 Business Flow
45599    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45600    -- Prior Entry.  Currently, the following code is always generated.
45601    ------------------------------------------------------------------------------------------------
45602    XLA_AE_LINES_PKG.ValidateCurrentLine;
45603 
45604    ------------------------------------------------------------------------------------
45605    -- 4219869 Business Flow
45606    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45607    ------------------------------------------------------------------------------------
45608    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45609 
45610    ----------------------------------------------------------------------------------
45611    -- 4219869 Business Flow
45612    -- Update journal entry status -- Need to generate this within IF <condition>
45613    ----------------------------------------------------------------------------------
45614    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45615          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45616          ,p_balance_type_code => l_balance_type_code
45617          );
45618 
45619    -------------------------------------------------------------------------------------------
45620    -- 4262811 - Generate the Accrual Reversal lines
45621    -------------------------------------------------------------------------------------------
45622    BEGIN
45623       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45624                               (g_array_event(p_event_id).array_value_num('header_index'));
45625       IF l_acc_rev_flag IS NULL THEN
45626          l_acc_rev_flag := 'N';
45627       END IF;
45628    EXCEPTION
45629       WHEN OTHERS THEN
45630          l_acc_rev_flag := 'N';
45631    END;
45632    --
45633    IF (l_acc_rev_flag = 'Y') THEN
45634 
45635        -- 4645092  ------------------------------------------------------------------------------
45636        -- To allow MPA report to determine if it should generate report process
45637        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45638        ------------------------------------------------------------------------------------------
45639 
45640        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45641        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45642    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45643    -- call ADRs
45644    -- Bug 4922099
45645    --
45646    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45647         (NVL(l_actual_upg_option, 'N') = 'O') OR
45648         (NVL(l_enc_upg_option, 'N') = 'O')
45649       )
45650    THEN
45651    NULL;
45652    --
45653    --
45654    
45655   l_ccid := AcctDerRule_6(
45656            p_application_id           => p_application_id
45657          , p_ae_header_id             => l_ae_header_id 
45658 , p_source_11 => p_source_11
45659          , x_transaction_coa_id       => l_adr_transaction_coa_id
45660          , x_accounting_coa_id        => l_adr_accounting_coa_id
45661          , x_value_type_code          => l_adr_value_type_code
45662          , p_side                     => 'NA'
45663    );
45664 
45665    xla_ae_lines_pkg.set_ccid(
45666     p_code_combination_id          => l_ccid
45667   , p_value_type_code              => l_adr_value_type_code
45668   , p_transaction_coa_id           => l_adr_transaction_coa_id
45669   , p_accounting_coa_id            => l_adr_accounting_coa_id
45670   , p_adr_code                     => 'CST_DEFAULT'
45671   , p_adr_type_code                => 'S'
45672   , p_component_type               => l_component_type
45673   , p_component_code               => l_component_code
45674   , p_component_type_code          => l_component_type_code
45675   , p_component_appl_id            => l_component_appl_id
45676   , p_amb_context_code             => l_amb_context_code
45677   , p_side                         => 'NA'
45678   );
45679 
45680 
45681    --
45682    --
45683    END IF;
45684 
45685        --
45686        -- Update the line information that should be overwritten
45687        --
45688        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45689                                          p_header_num   => 1);
45690        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45691 
45692        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45693 
45694        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45695           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45696        END IF;
45697 
45698       --
45699       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45700       --
45701       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45702           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45703       ELSE
45704           ---------------------------------------------------------------------------------------------------
45705           -- 4262811a Switch Sign
45706           ---------------------------------------------------------------------------------------------------
45707           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45708           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45709                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45710           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45711                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45712           -- 5132302
45713           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45714                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45715 
45716       END IF;
45717 
45718       -- 4955764
45719       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45720       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45721 
45722 
45723       XLA_AE_LINES_PKG.ValidateCurrentLine;
45724       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45725 
45726       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45727                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45728                ,p_balance_type_code => l_balance_type_code);
45729 
45730    END IF;
45731 
45732    -----------------------------------------------------------------------------------------
45733    -- 4262811 Multiperiod Accounting
45734    -----------------------------------------------------------------------------------------
45735      -- No MPA option is assigned.
45736 
45737 
45738 END IF;
45739 END IF;
45740 --
45741 
45742 --
45743 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45744    trace
45745       (p_msg      => 'END of AcctLineType_105'
45746       ,p_level    => C_LEVEL_PROCEDURE
45747       ,p_module   => l_log_module);
45748 END IF;
45749 --
45750 EXCEPTION
45751   WHEN xla_exceptions_pkg.application_exception THEN
45752       RAISE;
45753   WHEN OTHERS THEN
45754        xla_exceptions_pkg.raise_message
45755            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_105');
45756 END AcctLineType_105;
45757 --
45758 
45759 ---------------------------------------
45760 --
45761 -- PRIVATE FUNCTION
45762 --         AcctLineType_106
45763 --
45764 ---------------------------------------
45765 PROCEDURE AcctLineType_106 (
45766   p_application_id        IN NUMBER
45767  ,p_event_id              IN NUMBER
45768  ,p_calculate_acctd_flag  IN VARCHAR2
45769  ,p_calculate_g_l_flag    IN VARCHAR2
45770  ,p_actual_flag           IN OUT VARCHAR2
45771  ,p_balance_type_code     OUT VARCHAR2
45772  ,p_gain_or_loss_ref      OUT VARCHAR2
45773  
45774 --TRANSACTION_ID
45775  , p_source_1            IN NUMBER
45776 --Item Concatenated Segments
45777  , p_source_2            IN VARCHAR2
45778 --Transaction Quantity
45779  , p_source_3            IN NUMBER
45780 --Transaction Unit of Measure Code
45781  , p_source_4            IN VARCHAR2
45782 --Inventory Transaction Type Description
45783  , p_source_5            IN VARCHAR2
45784 --Cost Management Default Account
45785  , p_source_11            IN NUMBER
45786 --DISTRIBUTION_IDENTIFIER
45787  , p_source_84            IN NUMBER
45788 --Distribution Type
45789  , p_source_85            IN VARCHAR2
45790  , p_source_85_meaning    IN VARCHAR2
45791 --Entered Currency Code
45792  , p_source_88            IN VARCHAR2
45793 --Entered Amount
45794  , p_source_91            IN NUMBER
45795 --Currency Conversion Date
45796  , p_source_92            IN DATE
45797 --Currency Conversion Rate
45798  , p_source_93            IN NUMBER
45799 --Currency Conversion Type
45800  , p_source_94            IN VARCHAR2
45801 --Accounted Amount
45802  , p_source_95            IN NUMBER
45803 --Accounting Line Type
45804  , p_source_97            IN NUMBER
45805 )
45806 IS
45807 
45808 l_component_type              VARCHAR2(80);
45809 l_component_code              VARCHAR2(30);
45810 l_component_type_code         VARCHAR2(1);
45811 l_component_appl_id           INTEGER;
45812 l_amb_context_code            VARCHAR2(30);
45813 l_entity_code                 VARCHAR2(30);
45814 l_event_class_code            VARCHAR2(30);
45815 l_ae_header_id                NUMBER;
45816 l_event_type_code             VARCHAR2(30);
45817 l_line_definition_code        VARCHAR2(30);
45818 l_line_definition_owner_code  VARCHAR2(1);
45819 --
45820 -- adr variables
45821 l_segment                     VARCHAR2(30);
45822 l_ccid                        NUMBER;
45823 l_adr_transaction_coa_id      NUMBER;
45824 l_adr_accounting_coa_id       NUMBER;
45825 l_adr_flexfield_segment_code  VARCHAR2(30);
45826 l_adr_flex_value_set_id       NUMBER;
45827 l_adr_value_type_code         VARCHAR2(30);
45828 l_adr_value_combination_id    NUMBER;
45829 l_adr_value_segment_code      VARCHAR2(30);
45830 
45831 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45832 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45833 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45834 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45835 
45836 -- 4262811 Variables ------------------------------------------------------------------------------------------
45837 l_entered_amt_idx             NUMBER;
45838 l_accted_amt_idx              NUMBER;
45839 l_acc_rev_flag                VARCHAR2(1);
45840 l_accrual_line_num            NUMBER;
45841 l_tmp_amt                     NUMBER;
45842 l_acc_rev_natural_side_code   VARCHAR2(1);
45843 
45844 l_num_entries                 NUMBER;
45845 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45846 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45847 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45848 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45849 l_recog_line_1                NUMBER;
45850 l_recog_line_2                NUMBER;
45851 
45852 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45853 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45854 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45855 
45856 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45857 
45858 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45859 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45860 
45861 ---------------------------------------------------------------------------------------------------------------
45862 
45863 
45864 --
45865 -- bulk performance
45866 --
45867 l_balance_type_code           VARCHAR2(1);
45868 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45869 l_log_module                  VARCHAR2(240);
45870 
45871 --
45872 -- Upgrade strategy
45873 --
45874 l_actual_upg_option           VARCHAR2(1);
45875 l_enc_upg_option           VARCHAR2(1);
45876 
45877 --
45878 BEGIN
45879 --
45880 IF g_log_enabled THEN
45881       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
45882 END IF;
45883 --
45884 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45885 
45886       trace
45887          (p_msg      => 'BEGIN of AcctLineType_106'
45888          ,p_level    => C_LEVEL_PROCEDURE
45889          ,p_module   => l_log_module);
45890 
45891 END IF;
45892 --
45893 l_component_type             := 'AMB_JLT';
45894 l_component_code             := 'COST_VARIANCE';
45895 l_component_type_code        := 'S';
45896 l_component_appl_id          :=  707;
45897 l_amb_context_code           := 'DEFAULT';
45898 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
45899 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
45900 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
45901 l_line_definition_owner_code := 'S';
45902 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
45903 --
45904 l_balance_type_code          := 'A';
45905 l_segment                     := NULL;
45906 l_ccid                        := NULL;
45907 l_adr_transaction_coa_id      := NULL;
45908 l_adr_accounting_coa_id       := NULL;
45909 l_adr_flexfield_segment_code  := NULL;
45910 l_adr_flex_value_set_id       := NULL;
45911 l_adr_value_type_code         := NULL;
45912 l_adr_value_combination_id    := NULL;
45913 l_adr_value_segment_code      := NULL;
45914 
45915 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45916 l_bflow_class_code           := '';    -- 4219869 Business Flow
45917 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45918 l_budgetary_control_flag     := 'N';
45919 
45920 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45921 l_bflow_applied_to_amt       := NULL; -- 5132302
45922 l_entered_amt_idx            := NULL;          -- 4262811
45923 l_accted_amt_idx             := NULL;          -- 4262811
45924 l_acc_rev_flag               := NULL;          -- 4262811
45925 l_accrual_line_num           := NULL;          -- 4262811
45926 l_tmp_amt                    := NULL;          -- 4262811
45927 --
45928  
45929 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45930     l_balance_type_code <> 'B' THEN
45931 IF NVL(p_source_97,9E125) =  13
45932  THEN 
45933 
45934    --
45935    XLA_AE_LINES_PKG.SetNewLine;
45936 
45937    p_balance_type_code          := l_balance_type_code;
45938    -- set the flag so later we will know whether the gain loss line needs to be created
45939    
45940    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45941      p_actual_flag :='A';
45942    END IF;
45943 
45944    --
45945    -- bulk performance
45946    --
45947    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45948                                       p_header_num   => 0); -- 4262811
45949    --
45950    -- set accounting line options
45951    --
45952    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45953            p_natural_side_code          => 'D'
45954          , p_gain_or_loss_flag          => 'N'
45955          , p_gl_transfer_mode_code      => 'S'
45956          , p_acct_entry_type_code       => 'A'
45957          , p_switch_side_flag           => 'Y'
45958          , p_merge_duplicate_code       => 'N'
45959          );
45960    --
45961    l_acc_rev_natural_side_code := 'C';  -- 4262811
45962    -- 
45963    --
45964    -- set accounting line type info
45965    --
45966    xla_ae_lines_pkg.SetAcctLineType
45967       (p_component_type             => l_component_type
45968       ,p_event_type_code            => l_event_type_code
45969       ,p_line_definition_owner_code => l_line_definition_owner_code
45970       ,p_line_definition_code       => l_line_definition_code
45971       ,p_accounting_line_code       => l_component_code
45972       ,p_accounting_line_type_code  => l_component_type_code
45973       ,p_accounting_line_appl_id    => l_component_appl_id
45974       ,p_amb_context_code           => l_amb_context_code
45975       ,p_entity_code                => l_entity_code
45976       ,p_event_class_code           => l_event_class_code);
45977    --
45978    -- set accounting class
45979    --
45980    xla_ae_lines_pkg.SetAcctClass(
45981            p_accounting_class_code  => 'COST_VARIANCE'
45982          , p_ae_header_id           => l_ae_header_id
45983          );
45984 
45985    --
45986    -- set rounding class
45987    --
45988    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45989                       'COST_VARIANCE';
45990 
45991    --
45992    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45993    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45994    --
45995    -- bulk performance
45996    --
45997    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45998 
45999    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46000       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46001 
46002    -- 4955764
46003    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46004       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46005 
46006    -- 4458381 Public Sector Enh
46007    
46008    --
46009    -- set accounting attributes for the line type
46010    --
46011    l_entered_amt_idx := 3;
46012    l_accted_amt_idx  := 8;
46013    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46014    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46015    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
46016    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46017    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
46018    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46019    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
46020    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46021    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
46022    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46023    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
46024    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46025    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
46026    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46027    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
46028    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46029    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
46030 
46031    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46032    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46033 
46034    ---------------------------------------------------------------------------------------------------------------
46035    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46036    ---------------------------------------------------------------------------------------------------------------
46037    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46038 
46039    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46040    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46041 
46042    IF xla_accounting_cache_pkg.GetValueChar
46043          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46044          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46045    AND l_bflow_method_code = 'PRIOR_ENTRY'
46046 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46047    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46048          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46049        )
46050    THEN
46051          xla_ae_lines_pkg.BflowUpgEntry
46052            (p_business_method_code    => l_bflow_method_code
46053            ,p_business_class_code     => l_bflow_class_code
46054            ,p_balance_type            => l_balance_type_code);
46055    ELSE
46056       NULL;
46057 -- No business flow processing for business flow method of NONE.
46058    END IF;
46059 
46060    --
46061    -- call analytical criteria
46062    --
46063    
46064    --
46065    -- call description
46066    --
46067    
46068 xla_ae_lines_pkg.SetLineDescription(
46069    p_ae_header_id => l_ae_header_id
46070   ,p_description  => Description_1 (
46071      p_application_id         => p_application_id
46072    , p_ae_header_id           => l_ae_header_id 
46073 , p_source_1 => p_source_1
46074 , p_source_2 => p_source_2
46075 , p_source_3 => p_source_3
46076 , p_source_4 => p_source_4
46077 , p_source_5 => p_source_5
46078    )
46079 );
46080 
46081 
46082    --
46083    -- call ADRs
46084    -- Bug 4922099
46085    --
46086    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46087         (NVL(l_actual_upg_option, 'N') = 'O') OR
46088         (NVL(l_enc_upg_option, 'N') = 'O')
46089       )
46090    THEN
46091    NULL;
46092    --
46093    --
46094    
46095   l_ccid := AcctDerRule_6(
46096            p_application_id           => p_application_id
46097          , p_ae_header_id             => l_ae_header_id 
46098 , p_source_11 => p_source_11
46099          , x_transaction_coa_id       => l_adr_transaction_coa_id
46100          , x_accounting_coa_id        => l_adr_accounting_coa_id
46101          , x_value_type_code          => l_adr_value_type_code
46102          , p_side                     => 'NA'
46103    );
46104 
46105    xla_ae_lines_pkg.set_ccid(
46106     p_code_combination_id          => l_ccid
46107   , p_value_type_code              => l_adr_value_type_code
46108   , p_transaction_coa_id           => l_adr_transaction_coa_id
46109   , p_accounting_coa_id            => l_adr_accounting_coa_id
46110   , p_adr_code                     => 'CST_DEFAULT'
46111   , p_adr_type_code                => 'S'
46112   , p_component_type               => l_component_type
46113   , p_component_code               => l_component_code
46114   , p_component_type_code          => l_component_type_code
46115   , p_component_appl_id            => l_component_appl_id
46116   , p_amb_context_code             => l_amb_context_code
46117   , p_side                         => 'NA'
46118   );
46119 
46120 
46121    --
46122    --
46123    END IF;
46124    --
46125    -- Bug 4922099
46126    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46127           (NVL(l_enc_upg_option, 'N') = 'O')
46128         ) AND
46129         (l_bflow_method_code = 'PRIOR_ENTRY')
46130       )
46131    THEN
46132       IF
46133       --
46134       1 = 2
46135       --
46136       THEN
46137       xla_accounting_err_pkg.build_message
46138                                     (p_appli_s_name            => 'XLA'
46139                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46140                                     ,p_token_1                 => 'LINE_NUMBER'
46141                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46142                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46143                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46144                                                                              l_component_type
46145                                                                             ,l_component_code
46146                                                                             ,l_component_type_code
46147                                                                             ,l_component_appl_id
46148                                                                             ,l_amb_context_code
46149                                                                             ,l_entity_code
46150                                                                             ,l_event_class_code
46151                                                                            )
46152                                     ,p_token_3                 => 'OWNER'
46153                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46154                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46155                                                                           ,p_lookup_code    => l_component_type_code
46156                                                                          )
46157                                     ,p_token_4                 => 'PRODUCT_NAME'
46158                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46159                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46160                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46161                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46162                                     ,p_ae_header_id            =>  NULL
46163                                        );
46164 
46165         IF (C_LEVEL_ERROR>= g_log_level) THEN
46166                  trace
46167                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46168                       ,p_level    => C_LEVEL_ERROR
46169                       ,p_module   => l_log_module);
46170         END IF;
46171       END IF;
46172    END IF;
46173    --
46174    --
46175    ------------------------------------------------------------------------------------------------
46176    -- 4219869 Business Flow
46177    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46178    -- Prior Entry.  Currently, the following code is always generated.
46179    ------------------------------------------------------------------------------------------------
46180    XLA_AE_LINES_PKG.ValidateCurrentLine;
46181 
46182    ------------------------------------------------------------------------------------
46183    -- 4219869 Business Flow
46184    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46185    ------------------------------------------------------------------------------------
46186    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46187 
46188    ----------------------------------------------------------------------------------
46189    -- 4219869 Business Flow
46190    -- Update journal entry status -- Need to generate this within IF <condition>
46191    ----------------------------------------------------------------------------------
46192    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46193          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46194          ,p_balance_type_code => l_balance_type_code
46195          );
46196 
46197    -------------------------------------------------------------------------------------------
46198    -- 4262811 - Generate the Accrual Reversal lines
46199    -------------------------------------------------------------------------------------------
46200    BEGIN
46201       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46202                               (g_array_event(p_event_id).array_value_num('header_index'));
46203       IF l_acc_rev_flag IS NULL THEN
46204          l_acc_rev_flag := 'N';
46205       END IF;
46206    EXCEPTION
46207       WHEN OTHERS THEN
46208          l_acc_rev_flag := 'N';
46209    END;
46210    --
46211    IF (l_acc_rev_flag = 'Y') THEN
46212 
46213        -- 4645092  ------------------------------------------------------------------------------
46214        -- To allow MPA report to determine if it should generate report process
46215        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46216        ------------------------------------------------------------------------------------------
46217 
46218        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46219        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46220    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46221    -- call ADRs
46222    -- Bug 4922099
46223    --
46224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46225         (NVL(l_actual_upg_option, 'N') = 'O') OR
46226         (NVL(l_enc_upg_option, 'N') = 'O')
46227       )
46228    THEN
46229    NULL;
46230    --
46231    --
46232    
46233   l_ccid := AcctDerRule_6(
46234            p_application_id           => p_application_id
46235          , p_ae_header_id             => l_ae_header_id 
46236 , p_source_11 => p_source_11
46237          , x_transaction_coa_id       => l_adr_transaction_coa_id
46238          , x_accounting_coa_id        => l_adr_accounting_coa_id
46239          , x_value_type_code          => l_adr_value_type_code
46240          , p_side                     => 'NA'
46241    );
46242 
46243    xla_ae_lines_pkg.set_ccid(
46244     p_code_combination_id          => l_ccid
46245   , p_value_type_code              => l_adr_value_type_code
46246   , p_transaction_coa_id           => l_adr_transaction_coa_id
46247   , p_accounting_coa_id            => l_adr_accounting_coa_id
46248   , p_adr_code                     => 'CST_DEFAULT'
46249   , p_adr_type_code                => 'S'
46250   , p_component_type               => l_component_type
46251   , p_component_code               => l_component_code
46252   , p_component_type_code          => l_component_type_code
46253   , p_component_appl_id            => l_component_appl_id
46254   , p_amb_context_code             => l_amb_context_code
46255   , p_side                         => 'NA'
46256   );
46257 
46258 
46259    --
46260    --
46261    END IF;
46262 
46263        --
46264        -- Update the line information that should be overwritten
46265        --
46266        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46267                                          p_header_num   => 1);
46268        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46269 
46270        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46271 
46272        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46273           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46274        END IF;
46275 
46276       --
46277       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46278       --
46279       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46280           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46281       ELSE
46282           ---------------------------------------------------------------------------------------------------
46283           -- 4262811a Switch Sign
46284           ---------------------------------------------------------------------------------------------------
46285           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46286           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46287                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46288           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46289                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46290           -- 5132302
46291           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46292                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46293 
46294       END IF;
46295 
46296       -- 4955764
46297       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46298       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46299 
46300 
46301       XLA_AE_LINES_PKG.ValidateCurrentLine;
46302       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46303 
46304       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46305                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46306                ,p_balance_type_code => l_balance_type_code);
46307 
46308    END IF;
46309 
46310    -----------------------------------------------------------------------------------------
46311    -- 4262811 Multiperiod Accounting
46312    -----------------------------------------------------------------------------------------
46313      -- No MPA option is assigned.
46314 
46315 
46316 END IF;
46317 END IF;
46318 --
46319 
46320 --
46321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46322    trace
46323       (p_msg      => 'END of AcctLineType_106'
46324       ,p_level    => C_LEVEL_PROCEDURE
46325       ,p_module   => l_log_module);
46326 END IF;
46327 --
46328 EXCEPTION
46329   WHEN xla_exceptions_pkg.application_exception THEN
46330       RAISE;
46331   WHEN OTHERS THEN
46332        xla_exceptions_pkg.raise_message
46333            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_106');
46334 END AcctLineType_106;
46335 --
46336 
46337 ---------------------------------------
46338 --
46339 -- PRIVATE FUNCTION
46340 --         AcctLineType_107
46341 --
46342 ---------------------------------------
46343 PROCEDURE AcctLineType_107 (
46344   p_application_id        IN NUMBER
46345  ,p_event_id              IN NUMBER
46346  ,p_calculate_acctd_flag  IN VARCHAR2
46347  ,p_calculate_g_l_flag    IN VARCHAR2
46348  ,p_actual_flag           IN OUT VARCHAR2
46349  ,p_balance_type_code     OUT VARCHAR2
46350  ,p_gain_or_loss_ref      OUT VARCHAR2
46351  
46352 --TRANSACTION_ID
46353  , p_source_1            IN NUMBER
46354 --Item Concatenated Segments
46355  , p_source_2            IN VARCHAR2
46356 --Transaction Quantity
46357  , p_source_3            IN NUMBER
46358 --Transaction Unit of Measure Code
46359  , p_source_4            IN VARCHAR2
46360 --Inventory Transaction Type Description
46361  , p_source_5            IN VARCHAR2
46362 --Cost Management Default Account
46363  , p_source_11            IN NUMBER
46364 --Applied to Application ID
46365  , p_source_79            IN NUMBER
46366 --Applied to Distribution Link Type
46367  , p_source_80            IN VARCHAR2
46368 --Applied to Entity Code
46369  , p_source_81            IN VARCHAR2
46370 --Applied To Purchase Document Identifier
46371  , p_source_83            IN NUMBER
46372 --DISTRIBUTION_IDENTIFIER
46373  , p_source_84            IN NUMBER
46374 --Distribution Type
46375  , p_source_85            IN VARCHAR2
46376  , p_source_85_meaning    IN VARCHAR2
46377 --PO Budget Account
46378  , p_source_86            IN NUMBER
46379 --Encumbrance Reversal Amount Entered
46380  , p_source_87            IN NUMBER
46381 --Entered Currency Code
46382  , p_source_88            IN VARCHAR2
46383 --Transaction Encumbrance Reversal Amount
46384  , p_source_89            IN NUMBER
46385 --Entered Amount
46386  , p_source_91            IN NUMBER
46387 --Currency Conversion Date
46388  , p_source_92            IN DATE
46389 --Currency Conversion Rate
46390  , p_source_93            IN NUMBER
46391 --Currency Conversion Type
46392  , p_source_94            IN VARCHAR2
46393 --Accounted Amount
46394  , p_source_95            IN NUMBER
46395 --Purchasing Encumbrance Type Identifier
46396  , p_source_96            IN NUMBER
46397 --Accounting Line Type
46398  , p_source_97            IN NUMBER
46399 --Costing Encumbrance Upgrade Option
46400  , p_source_100            IN VARCHAR2
46401 --TXN_PO_DISTRIBUTION_ID
46402  , p_source_101            IN NUMBER
46403 )
46404 IS
46405 
46406 l_component_type              VARCHAR2(80);
46407 l_component_code              VARCHAR2(30);
46408 l_component_type_code         VARCHAR2(1);
46409 l_component_appl_id           INTEGER;
46410 l_amb_context_code            VARCHAR2(30);
46411 l_entity_code                 VARCHAR2(30);
46412 l_event_class_code            VARCHAR2(30);
46413 l_ae_header_id                NUMBER;
46414 l_event_type_code             VARCHAR2(30);
46415 l_line_definition_code        VARCHAR2(30);
46416 l_line_definition_owner_code  VARCHAR2(1);
46417 --
46418 -- adr variables
46419 l_segment                     VARCHAR2(30);
46420 l_ccid                        NUMBER;
46421 l_adr_transaction_coa_id      NUMBER;
46422 l_adr_accounting_coa_id       NUMBER;
46423 l_adr_flexfield_segment_code  VARCHAR2(30);
46424 l_adr_flex_value_set_id       NUMBER;
46425 l_adr_value_type_code         VARCHAR2(30);
46426 l_adr_value_combination_id    NUMBER;
46427 l_adr_value_segment_code      VARCHAR2(30);
46428 
46429 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46430 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46431 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46432 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46433 
46434 -- 4262811 Variables ------------------------------------------------------------------------------------------
46435 l_entered_amt_idx             NUMBER;
46436 l_accted_amt_idx              NUMBER;
46437 l_acc_rev_flag                VARCHAR2(1);
46438 l_accrual_line_num            NUMBER;
46439 l_tmp_amt                     NUMBER;
46440 l_acc_rev_natural_side_code   VARCHAR2(1);
46441 
46442 l_num_entries                 NUMBER;
46443 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46444 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46445 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46446 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46447 l_recog_line_1                NUMBER;
46448 l_recog_line_2                NUMBER;
46449 
46450 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46451 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46452 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46453 
46454 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46455 
46456 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46457 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46458 
46459 ---------------------------------------------------------------------------------------------------------------
46460 
46461 
46462 --
46463 -- bulk performance
46464 --
46465 l_balance_type_code           VARCHAR2(1);
46466 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46467 l_log_module                  VARCHAR2(240);
46468 
46469 --
46470 -- Upgrade strategy
46471 --
46472 l_actual_upg_option           VARCHAR2(1);
46473 l_enc_upg_option           VARCHAR2(1);
46474 
46475 --
46476 BEGIN
46477 --
46478 IF g_log_enabled THEN
46479       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
46480 END IF;
46481 --
46482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46483 
46484       trace
46485          (p_msg      => 'BEGIN of AcctLineType_107'
46486          ,p_level    => C_LEVEL_PROCEDURE
46487          ,p_module   => l_log_module);
46488 
46489 END IF;
46490 --
46491 l_component_type             := 'AMB_JLT';
46492 l_component_code             := 'COST_VARIANCE';
46493 l_component_type_code        := 'S';
46494 l_component_appl_id          :=  707;
46495 l_amb_context_code           := 'DEFAULT';
46496 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
46497 l_event_class_code           := 'PURCHASE_ORDER';
46498 l_event_type_code            := 'LOG_PO_DEL_INV';
46499 l_line_definition_owner_code := 'S';
46500 l_line_definition_code       := 'PI_LOG_DEL_INV';
46501 --
46502 l_balance_type_code          := 'A';
46503 l_segment                     := NULL;
46504 l_ccid                        := NULL;
46505 l_adr_transaction_coa_id      := NULL;
46506 l_adr_accounting_coa_id       := NULL;
46507 l_adr_flexfield_segment_code  := NULL;
46508 l_adr_flex_value_set_id       := NULL;
46509 l_adr_value_type_code         := NULL;
46510 l_adr_value_combination_id    := NULL;
46511 l_adr_value_segment_code      := NULL;
46512 
46513 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46514 l_bflow_class_code           := '';    -- 4219869 Business Flow
46515 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46516 l_budgetary_control_flag     := 'N';
46517 
46518 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46519 l_bflow_applied_to_amt       := NULL; -- 5132302
46520 l_entered_amt_idx            := NULL;          -- 4262811
46521 l_accted_amt_idx             := NULL;          -- 4262811
46522 l_acc_rev_flag               := NULL;          -- 4262811
46523 l_accrual_line_num           := NULL;          -- 4262811
46524 l_tmp_amt                    := NULL;          -- 4262811
46525 --
46526  
46527 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46528     l_balance_type_code <> 'B' THEN
46529 IF NVL(p_source_97,9E125) =  13
46530  THEN 
46531 
46532    --
46533    XLA_AE_LINES_PKG.SetNewLine;
46534 
46535    p_balance_type_code          := l_balance_type_code;
46536    -- set the flag so later we will know whether the gain loss line needs to be created
46537    
46538    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46539      p_actual_flag :='A';
46540    END IF;
46541 
46542    --
46543    -- bulk performance
46544    --
46545    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46546                                       p_header_num   => 0); -- 4262811
46547    --
46548    -- set accounting line options
46549    --
46550    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46551            p_natural_side_code          => 'D'
46552          , p_gain_or_loss_flag          => 'N'
46553          , p_gl_transfer_mode_code      => 'S'
46554          , p_acct_entry_type_code       => 'A'
46555          , p_switch_side_flag           => 'Y'
46556          , p_merge_duplicate_code       => 'N'
46557          );
46558    --
46559    l_acc_rev_natural_side_code := 'C';  -- 4262811
46560    -- 
46561    --
46562    -- set accounting line type info
46563    --
46564    xla_ae_lines_pkg.SetAcctLineType
46565       (p_component_type             => l_component_type
46566       ,p_event_type_code            => l_event_type_code
46567       ,p_line_definition_owner_code => l_line_definition_owner_code
46568       ,p_line_definition_code       => l_line_definition_code
46569       ,p_accounting_line_code       => l_component_code
46570       ,p_accounting_line_type_code  => l_component_type_code
46571       ,p_accounting_line_appl_id    => l_component_appl_id
46572       ,p_amb_context_code           => l_amb_context_code
46573       ,p_entity_code                => l_entity_code
46574       ,p_event_class_code           => l_event_class_code);
46575    --
46576    -- set accounting class
46577    --
46578    xla_ae_lines_pkg.SetAcctClass(
46579            p_accounting_class_code  => 'COST_VARIANCE'
46580          , p_ae_header_id           => l_ae_header_id
46581          );
46582 
46583    --
46584    -- set rounding class
46585    --
46586    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46587                       'COST_VARIANCE';
46588 
46589    --
46590    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46591    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46592    --
46593    -- bulk performance
46594    --
46595    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46596 
46597    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46598       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46599 
46600    -- 4955764
46601    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46602       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46603 
46604    -- 4458381 Public Sector Enh
46605    
46606    --
46607    -- set accounting attributes for the line type
46608    --
46609    l_entered_amt_idx := 17;
46610    l_accted_amt_idx  := 22;
46611    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46612    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
46613    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
46614    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46615    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
46616    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
46617    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
46618    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
46619    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
46620    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46621    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
46622    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
46623    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
46624    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
46625    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
46626    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
46627    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
46628    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
46629    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
46630    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
46631    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
46632    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
46633    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
46634    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
46635    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
46636    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
46637    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
46638    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
46639    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
46640    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
46641    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
46642    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
46643    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
46644    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
46645    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
46646    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
46647    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
46648    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
46649    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
46650    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
46651    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
46652    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
46653    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
46654    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
46655    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
46656    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
46657    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
46658    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
46659    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
46660 
46661    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46662    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46663 
46664    ---------------------------------------------------------------------------------------------------------------
46665    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46666    ---------------------------------------------------------------------------------------------------------------
46667    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46668 
46669    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46670    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46671 
46672    IF xla_accounting_cache_pkg.GetValueChar
46673          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46674          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46675    AND l_bflow_method_code = 'PRIOR_ENTRY'
46676 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46677    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46678          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46679        )
46680    THEN
46681          xla_ae_lines_pkg.BflowUpgEntry
46682            (p_business_method_code    => l_bflow_method_code
46683            ,p_business_class_code     => l_bflow_class_code
46684            ,p_balance_type            => l_balance_type_code);
46685    ELSE
46686       NULL;
46687 -- No business flow processing for business flow method of NONE.
46688    END IF;
46689 
46690    --
46691    -- call analytical criteria
46692    --
46693    
46694    --
46695    -- call description
46696    --
46697    
46698 xla_ae_lines_pkg.SetLineDescription(
46699    p_ae_header_id => l_ae_header_id
46700   ,p_description  => Description_1 (
46701      p_application_id         => p_application_id
46702    , p_ae_header_id           => l_ae_header_id 
46703 , p_source_1 => p_source_1
46704 , p_source_2 => p_source_2
46705 , p_source_3 => p_source_3
46706 , p_source_4 => p_source_4
46707 , p_source_5 => p_source_5
46708    )
46709 );
46710 
46711 
46712    --
46713    -- call ADRs
46714    -- Bug 4922099
46715    --
46716    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46717         (NVL(l_actual_upg_option, 'N') = 'O') OR
46718         (NVL(l_enc_upg_option, 'N') = 'O')
46719       )
46720    THEN
46721    NULL;
46722    --
46723    --
46724    
46725   l_ccid := AcctDerRule_6(
46726            p_application_id           => p_application_id
46727          , p_ae_header_id             => l_ae_header_id 
46728 , p_source_11 => p_source_11
46729          , x_transaction_coa_id       => l_adr_transaction_coa_id
46730          , x_accounting_coa_id        => l_adr_accounting_coa_id
46731          , x_value_type_code          => l_adr_value_type_code
46732          , p_side                     => 'NA'
46733    );
46734 
46735    xla_ae_lines_pkg.set_ccid(
46736     p_code_combination_id          => l_ccid
46737   , p_value_type_code              => l_adr_value_type_code
46738   , p_transaction_coa_id           => l_adr_transaction_coa_id
46739   , p_accounting_coa_id            => l_adr_accounting_coa_id
46740   , p_adr_code                     => 'CST_DEFAULT'
46741   , p_adr_type_code                => 'S'
46742   , p_component_type               => l_component_type
46743   , p_component_code               => l_component_code
46744   , p_component_type_code          => l_component_type_code
46745   , p_component_appl_id            => l_component_appl_id
46746   , p_amb_context_code             => l_amb_context_code
46747   , p_side                         => 'NA'
46748   );
46749 
46750 
46751    --
46752    --
46753    END IF;
46754    --
46755    -- Bug 4922099
46756    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46757           (NVL(l_enc_upg_option, 'N') = 'O')
46758         ) AND
46759         (l_bflow_method_code = 'PRIOR_ENTRY')
46760       )
46761    THEN
46762       IF
46763       --
46764       1 = 2
46765       --
46766       THEN
46767       xla_accounting_err_pkg.build_message
46768                                     (p_appli_s_name            => 'XLA'
46769                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46770                                     ,p_token_1                 => 'LINE_NUMBER'
46771                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46772                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46773                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46774                                                                              l_component_type
46775                                                                             ,l_component_code
46776                                                                             ,l_component_type_code
46777                                                                             ,l_component_appl_id
46778                                                                             ,l_amb_context_code
46779                                                                             ,l_entity_code
46780                                                                             ,l_event_class_code
46781                                                                            )
46782                                     ,p_token_3                 => 'OWNER'
46783                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46784                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46785                                                                           ,p_lookup_code    => l_component_type_code
46786                                                                          )
46787                                     ,p_token_4                 => 'PRODUCT_NAME'
46788                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46789                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46790                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46791                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46792                                     ,p_ae_header_id            =>  NULL
46793                                        );
46794 
46795         IF (C_LEVEL_ERROR>= g_log_level) THEN
46796                  trace
46797                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46798                       ,p_level    => C_LEVEL_ERROR
46799                       ,p_module   => l_log_module);
46800         END IF;
46801       END IF;
46802    END IF;
46803    --
46804    --
46805    ------------------------------------------------------------------------------------------------
46806    -- 4219869 Business Flow
46807    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46808    -- Prior Entry.  Currently, the following code is always generated.
46809    ------------------------------------------------------------------------------------------------
46810    XLA_AE_LINES_PKG.ValidateCurrentLine;
46811 
46812    ------------------------------------------------------------------------------------
46813    -- 4219869 Business Flow
46814    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46815    ------------------------------------------------------------------------------------
46816    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46817 
46818    ----------------------------------------------------------------------------------
46819    -- 4219869 Business Flow
46820    -- Update journal entry status -- Need to generate this within IF <condition>
46821    ----------------------------------------------------------------------------------
46822    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46823          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46824          ,p_balance_type_code => l_balance_type_code
46825          );
46826 
46827    -------------------------------------------------------------------------------------------
46828    -- 4262811 - Generate the Accrual Reversal lines
46829    -------------------------------------------------------------------------------------------
46830    BEGIN
46831       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46832                               (g_array_event(p_event_id).array_value_num('header_index'));
46833       IF l_acc_rev_flag IS NULL THEN
46834          l_acc_rev_flag := 'N';
46835       END IF;
46836    EXCEPTION
46837       WHEN OTHERS THEN
46838          l_acc_rev_flag := 'N';
46839    END;
46840    --
46841    IF (l_acc_rev_flag = 'Y') THEN
46842 
46843        -- 4645092  ------------------------------------------------------------------------------
46844        -- To allow MPA report to determine if it should generate report process
46845        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46846        ------------------------------------------------------------------------------------------
46847 
46848        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46849        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46850    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46851    -- call ADRs
46852    -- Bug 4922099
46853    --
46854    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46855         (NVL(l_actual_upg_option, 'N') = 'O') OR
46856         (NVL(l_enc_upg_option, 'N') = 'O')
46857       )
46858    THEN
46859    NULL;
46860    --
46861    --
46862    
46863   l_ccid := AcctDerRule_6(
46864            p_application_id           => p_application_id
46865          , p_ae_header_id             => l_ae_header_id 
46866 , p_source_11 => p_source_11
46867          , x_transaction_coa_id       => l_adr_transaction_coa_id
46868          , x_accounting_coa_id        => l_adr_accounting_coa_id
46869          , x_value_type_code          => l_adr_value_type_code
46870          , p_side                     => 'NA'
46871    );
46872 
46873    xla_ae_lines_pkg.set_ccid(
46874     p_code_combination_id          => l_ccid
46875   , p_value_type_code              => l_adr_value_type_code
46876   , p_transaction_coa_id           => l_adr_transaction_coa_id
46877   , p_accounting_coa_id            => l_adr_accounting_coa_id
46878   , p_adr_code                     => 'CST_DEFAULT'
46879   , p_adr_type_code                => 'S'
46880   , p_component_type               => l_component_type
46881   , p_component_code               => l_component_code
46882   , p_component_type_code          => l_component_type_code
46883   , p_component_appl_id            => l_component_appl_id
46884   , p_amb_context_code             => l_amb_context_code
46885   , p_side                         => 'NA'
46886   );
46887 
46888 
46889    --
46890    --
46891    END IF;
46892 
46893        --
46894        -- Update the line information that should be overwritten
46895        --
46896        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46897                                          p_header_num   => 1);
46898        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46899 
46900        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46901 
46902        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46903           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46904        END IF;
46905 
46906       --
46907       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46908       --
46909       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46910           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46911       ELSE
46912           ---------------------------------------------------------------------------------------------------
46913           -- 4262811a Switch Sign
46914           ---------------------------------------------------------------------------------------------------
46915           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46916           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46917                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46918           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46919                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46920           -- 5132302
46921           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46922                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46923 
46924       END IF;
46925 
46926       -- 4955764
46927       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46928       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46929 
46930 
46931       XLA_AE_LINES_PKG.ValidateCurrentLine;
46932       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46933 
46934       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46935                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46936                ,p_balance_type_code => l_balance_type_code);
46937 
46938    END IF;
46939 
46940    -----------------------------------------------------------------------------------------
46941    -- 4262811 Multiperiod Accounting
46942    -----------------------------------------------------------------------------------------
46943      -- No MPA option is assigned.
46944 
46945 
46946 END IF;
46947 END IF;
46948 --
46949 
46950 --
46951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46952    trace
46953       (p_msg      => 'END of AcctLineType_107'
46954       ,p_level    => C_LEVEL_PROCEDURE
46955       ,p_module   => l_log_module);
46956 END IF;
46957 --
46958 EXCEPTION
46959   WHEN xla_exceptions_pkg.application_exception THEN
46960       RAISE;
46961   WHEN OTHERS THEN
46962        xla_exceptions_pkg.raise_message
46963            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_107');
46964 END AcctLineType_107;
46965 --
46966 
46967 ---------------------------------------
46968 --
46969 -- PRIVATE FUNCTION
46970 --         AcctLineType_108
46971 --
46972 ---------------------------------------
46973 PROCEDURE AcctLineType_108 (
46974   p_application_id        IN NUMBER
46975  ,p_event_id              IN NUMBER
46976  ,p_calculate_acctd_flag  IN VARCHAR2
46977  ,p_calculate_g_l_flag    IN VARCHAR2
46978  ,p_actual_flag           IN OUT VARCHAR2
46979  ,p_balance_type_code     OUT VARCHAR2
46980  ,p_gain_or_loss_ref      OUT VARCHAR2
46981  
46982 --TRANSACTION_ID
46983  , p_source_1            IN NUMBER
46984 --Item Concatenated Segments
46985  , p_source_2            IN VARCHAR2
46986 --Transaction Quantity
46987  , p_source_3            IN NUMBER
46988 --Transaction Unit of Measure Code
46989  , p_source_4            IN VARCHAR2
46990 --Inventory Transaction Type Description
46991  , p_source_5            IN VARCHAR2
46992 --Cost Management Default Account
46993  , p_source_11            IN NUMBER
46994 --DISTRIBUTION_IDENTIFIER
46995  , p_source_84            IN NUMBER
46996 --Distribution Type
46997  , p_source_85            IN VARCHAR2
46998  , p_source_85_meaning    IN VARCHAR2
46999 --Entered Currency Code
47000  , p_source_88            IN VARCHAR2
47001 --Entered Amount
47002  , p_source_91            IN NUMBER
47003 --Currency Conversion Date
47004  , p_source_92            IN DATE
47005 --Currency Conversion Rate
47006  , p_source_93            IN NUMBER
47007 --Currency Conversion Type
47008  , p_source_94            IN VARCHAR2
47009 --Accounted Amount
47010  , p_source_95            IN NUMBER
47011 --Accounting Line Type
47012  , p_source_97            IN NUMBER
47013 )
47014 IS
47015 
47016 l_component_type              VARCHAR2(80);
47017 l_component_code              VARCHAR2(30);
47018 l_component_type_code         VARCHAR2(1);
47019 l_component_appl_id           INTEGER;
47020 l_amb_context_code            VARCHAR2(30);
47021 l_entity_code                 VARCHAR2(30);
47022 l_event_class_code            VARCHAR2(30);
47023 l_ae_header_id                NUMBER;
47024 l_event_type_code             VARCHAR2(30);
47025 l_line_definition_code        VARCHAR2(30);
47026 l_line_definition_owner_code  VARCHAR2(1);
47027 --
47028 -- adr variables
47029 l_segment                     VARCHAR2(30);
47030 l_ccid                        NUMBER;
47031 l_adr_transaction_coa_id      NUMBER;
47032 l_adr_accounting_coa_id       NUMBER;
47033 l_adr_flexfield_segment_code  VARCHAR2(30);
47034 l_adr_flex_value_set_id       NUMBER;
47035 l_adr_value_type_code         VARCHAR2(30);
47036 l_adr_value_combination_id    NUMBER;
47037 l_adr_value_segment_code      VARCHAR2(30);
47038 
47039 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47040 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47041 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47042 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47043 
47044 -- 4262811 Variables ------------------------------------------------------------------------------------------
47045 l_entered_amt_idx             NUMBER;
47046 l_accted_amt_idx              NUMBER;
47047 l_acc_rev_flag                VARCHAR2(1);
47048 l_accrual_line_num            NUMBER;
47049 l_tmp_amt                     NUMBER;
47050 l_acc_rev_natural_side_code   VARCHAR2(1);
47051 
47052 l_num_entries                 NUMBER;
47053 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47054 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47055 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47056 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47057 l_recog_line_1                NUMBER;
47058 l_recog_line_2                NUMBER;
47059 
47060 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47061 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47062 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47063 
47064 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47065 
47066 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47067 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47068 
47069 ---------------------------------------------------------------------------------------------------------------
47070 
47071 
47072 --
47073 -- bulk performance
47074 --
47075 l_balance_type_code           VARCHAR2(1);
47076 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47077 l_log_module                  VARCHAR2(240);
47078 
47079 --
47080 -- Upgrade strategy
47081 --
47082 l_actual_upg_option           VARCHAR2(1);
47083 l_enc_upg_option           VARCHAR2(1);
47084 
47085 --
47086 BEGIN
47087 --
47088 IF g_log_enabled THEN
47089       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
47090 END IF;
47091 --
47092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47093 
47094       trace
47095          (p_msg      => 'BEGIN of AcctLineType_108'
47096          ,p_level    => C_LEVEL_PROCEDURE
47097          ,p_module   => l_log_module);
47098 
47099 END IF;
47100 --
47101 l_component_type             := 'AMB_JLT';
47102 l_component_code             := 'COST_VARIANCE';
47103 l_component_type_code        := 'S';
47104 l_component_appl_id          :=  707;
47105 l_amb_context_code           := 'DEFAULT';
47106 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
47107 l_event_class_code           := 'SALES_ORDER';
47108 l_event_type_code            := 'RMA_RETURN';
47109 l_line_definition_owner_code := 'S';
47110 l_line_definition_code       := 'PI_RMA_RETURN';
47111 --
47112 l_balance_type_code          := 'A';
47113 l_segment                     := NULL;
47114 l_ccid                        := NULL;
47115 l_adr_transaction_coa_id      := NULL;
47116 l_adr_accounting_coa_id       := NULL;
47117 l_adr_flexfield_segment_code  := NULL;
47118 l_adr_flex_value_set_id       := NULL;
47119 l_adr_value_type_code         := NULL;
47120 l_adr_value_combination_id    := NULL;
47121 l_adr_value_segment_code      := NULL;
47122 
47123 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47124 l_bflow_class_code           := '';    -- 4219869 Business Flow
47125 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47126 l_budgetary_control_flag     := 'N';
47127 
47128 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47129 l_bflow_applied_to_amt       := NULL; -- 5132302
47130 l_entered_amt_idx            := NULL;          -- 4262811
47131 l_accted_amt_idx             := NULL;          -- 4262811
47132 l_acc_rev_flag               := NULL;          -- 4262811
47133 l_accrual_line_num           := NULL;          -- 4262811
47134 l_tmp_amt                    := NULL;          -- 4262811
47135 --
47136  
47137 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47138     l_balance_type_code <> 'B' THEN
47139 IF NVL(p_source_97,9E125) =  13
47140  THEN 
47141 
47142    --
47143    XLA_AE_LINES_PKG.SetNewLine;
47144 
47145    p_balance_type_code          := l_balance_type_code;
47146    -- set the flag so later we will know whether the gain loss line needs to be created
47147    
47148    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47149      p_actual_flag :='A';
47150    END IF;
47151 
47152    --
47153    -- bulk performance
47154    --
47155    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47156                                       p_header_num   => 0); -- 4262811
47157    --
47158    -- set accounting line options
47159    --
47160    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47161            p_natural_side_code          => 'D'
47162          , p_gain_or_loss_flag          => 'N'
47163          , p_gl_transfer_mode_code      => 'S'
47164          , p_acct_entry_type_code       => 'A'
47165          , p_switch_side_flag           => 'Y'
47166          , p_merge_duplicate_code       => 'N'
47167          );
47168    --
47169    l_acc_rev_natural_side_code := 'C';  -- 4262811
47170    -- 
47171    --
47172    -- set accounting line type info
47173    --
47174    xla_ae_lines_pkg.SetAcctLineType
47175       (p_component_type             => l_component_type
47176       ,p_event_type_code            => l_event_type_code
47177       ,p_line_definition_owner_code => l_line_definition_owner_code
47178       ,p_line_definition_code       => l_line_definition_code
47179       ,p_accounting_line_code       => l_component_code
47180       ,p_accounting_line_type_code  => l_component_type_code
47181       ,p_accounting_line_appl_id    => l_component_appl_id
47182       ,p_amb_context_code           => l_amb_context_code
47183       ,p_entity_code                => l_entity_code
47184       ,p_event_class_code           => l_event_class_code);
47185    --
47186    -- set accounting class
47187    --
47188    xla_ae_lines_pkg.SetAcctClass(
47189            p_accounting_class_code  => 'COST_VARIANCE'
47190          , p_ae_header_id           => l_ae_header_id
47191          );
47192 
47193    --
47194    -- set rounding class
47195    --
47196    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47197                       'COST_VARIANCE';
47198 
47199    --
47200    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47201    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47202    --
47203    -- bulk performance
47204    --
47205    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47206 
47207    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47208       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47209 
47210    -- 4955764
47211    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47212       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47213 
47214    -- 4458381 Public Sector Enh
47215    
47216    --
47217    -- set accounting attributes for the line type
47218    --
47219    l_entered_amt_idx := 3;
47220    l_accted_amt_idx  := 8;
47221    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47222    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47223    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
47224    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47225    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
47226    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47227    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
47228    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47229    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
47230    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47231    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
47232    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47233    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
47234    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47235    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
47236    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47237    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
47238 
47239    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47240    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47241 
47242    ---------------------------------------------------------------------------------------------------------------
47243    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47244    ---------------------------------------------------------------------------------------------------------------
47245    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47246 
47247    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47248    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47249 
47250    IF xla_accounting_cache_pkg.GetValueChar
47251          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47252          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47253    AND l_bflow_method_code = 'PRIOR_ENTRY'
47254 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47255    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47256          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47257        )
47258    THEN
47259          xla_ae_lines_pkg.BflowUpgEntry
47260            (p_business_method_code    => l_bflow_method_code
47261            ,p_business_class_code     => l_bflow_class_code
47262            ,p_balance_type            => l_balance_type_code);
47263    ELSE
47264       NULL;
47265 -- No business flow processing for business flow method of NONE.
47266    END IF;
47267 
47268    --
47269    -- call analytical criteria
47270    --
47271    
47272    --
47273    -- call description
47274    --
47275    
47276 xla_ae_lines_pkg.SetLineDescription(
47277    p_ae_header_id => l_ae_header_id
47278   ,p_description  => Description_1 (
47279      p_application_id         => p_application_id
47280    , p_ae_header_id           => l_ae_header_id 
47281 , p_source_1 => p_source_1
47282 , p_source_2 => p_source_2
47283 , p_source_3 => p_source_3
47284 , p_source_4 => p_source_4
47285 , p_source_5 => p_source_5
47286    )
47287 );
47288 
47289 
47290    --
47291    -- call ADRs
47292    -- Bug 4922099
47293    --
47294    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47295         (NVL(l_actual_upg_option, 'N') = 'O') OR
47296         (NVL(l_enc_upg_option, 'N') = 'O')
47297       )
47298    THEN
47299    NULL;
47300    --
47301    --
47302    
47303   l_ccid := AcctDerRule_6(
47304            p_application_id           => p_application_id
47305          , p_ae_header_id             => l_ae_header_id 
47306 , p_source_11 => p_source_11
47307          , x_transaction_coa_id       => l_adr_transaction_coa_id
47308          , x_accounting_coa_id        => l_adr_accounting_coa_id
47309          , x_value_type_code          => l_adr_value_type_code
47310          , p_side                     => 'NA'
47311    );
47312 
47313    xla_ae_lines_pkg.set_ccid(
47314     p_code_combination_id          => l_ccid
47315   , p_value_type_code              => l_adr_value_type_code
47316   , p_transaction_coa_id           => l_adr_transaction_coa_id
47317   , p_accounting_coa_id            => l_adr_accounting_coa_id
47318   , p_adr_code                     => 'CST_DEFAULT'
47319   , p_adr_type_code                => 'S'
47320   , p_component_type               => l_component_type
47321   , p_component_code               => l_component_code
47322   , p_component_type_code          => l_component_type_code
47323   , p_component_appl_id            => l_component_appl_id
47324   , p_amb_context_code             => l_amb_context_code
47325   , p_side                         => 'NA'
47326   );
47327 
47328 
47329    --
47330    --
47331    END IF;
47332    --
47333    -- Bug 4922099
47334    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47335           (NVL(l_enc_upg_option, 'N') = 'O')
47336         ) AND
47337         (l_bflow_method_code = 'PRIOR_ENTRY')
47338       )
47339    THEN
47340       IF
47341       --
47342       1 = 2
47343       --
47344       THEN
47345       xla_accounting_err_pkg.build_message
47346                                     (p_appli_s_name            => 'XLA'
47347                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47348                                     ,p_token_1                 => 'LINE_NUMBER'
47349                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47350                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47351                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47352                                                                              l_component_type
47353                                                                             ,l_component_code
47354                                                                             ,l_component_type_code
47355                                                                             ,l_component_appl_id
47356                                                                             ,l_amb_context_code
47357                                                                             ,l_entity_code
47358                                                                             ,l_event_class_code
47359                                                                            )
47360                                     ,p_token_3                 => 'OWNER'
47361                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47362                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47363                                                                           ,p_lookup_code    => l_component_type_code
47364                                                                          )
47365                                     ,p_token_4                 => 'PRODUCT_NAME'
47366                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47367                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47368                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47369                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47370                                     ,p_ae_header_id            =>  NULL
47371                                        );
47372 
47373         IF (C_LEVEL_ERROR>= g_log_level) THEN
47374                  trace
47375                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47376                       ,p_level    => C_LEVEL_ERROR
47377                       ,p_module   => l_log_module);
47378         END IF;
47379       END IF;
47380    END IF;
47381    --
47382    --
47383    ------------------------------------------------------------------------------------------------
47384    -- 4219869 Business Flow
47385    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47386    -- Prior Entry.  Currently, the following code is always generated.
47387    ------------------------------------------------------------------------------------------------
47388    XLA_AE_LINES_PKG.ValidateCurrentLine;
47389 
47390    ------------------------------------------------------------------------------------
47391    -- 4219869 Business Flow
47392    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47393    ------------------------------------------------------------------------------------
47394    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47395 
47396    ----------------------------------------------------------------------------------
47397    -- 4219869 Business Flow
47398    -- Update journal entry status -- Need to generate this within IF <condition>
47399    ----------------------------------------------------------------------------------
47400    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47401          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47402          ,p_balance_type_code => l_balance_type_code
47403          );
47404 
47405    -------------------------------------------------------------------------------------------
47406    -- 4262811 - Generate the Accrual Reversal lines
47407    -------------------------------------------------------------------------------------------
47408    BEGIN
47409       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47410                               (g_array_event(p_event_id).array_value_num('header_index'));
47411       IF l_acc_rev_flag IS NULL THEN
47412          l_acc_rev_flag := 'N';
47413       END IF;
47414    EXCEPTION
47415       WHEN OTHERS THEN
47416          l_acc_rev_flag := 'N';
47417    END;
47418    --
47419    IF (l_acc_rev_flag = 'Y') THEN
47420 
47421        -- 4645092  ------------------------------------------------------------------------------
47422        -- To allow MPA report to determine if it should generate report process
47423        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47424        ------------------------------------------------------------------------------------------
47425 
47426        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47427        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47428    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47429    -- call ADRs
47430    -- Bug 4922099
47431    --
47432    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47433         (NVL(l_actual_upg_option, 'N') = 'O') OR
47434         (NVL(l_enc_upg_option, 'N') = 'O')
47435       )
47436    THEN
47437    NULL;
47438    --
47439    --
47440    
47441   l_ccid := AcctDerRule_6(
47442            p_application_id           => p_application_id
47443          , p_ae_header_id             => l_ae_header_id 
47444 , p_source_11 => p_source_11
47445          , x_transaction_coa_id       => l_adr_transaction_coa_id
47446          , x_accounting_coa_id        => l_adr_accounting_coa_id
47447          , x_value_type_code          => l_adr_value_type_code
47448          , p_side                     => 'NA'
47449    );
47450 
47451    xla_ae_lines_pkg.set_ccid(
47452     p_code_combination_id          => l_ccid
47453   , p_value_type_code              => l_adr_value_type_code
47454   , p_transaction_coa_id           => l_adr_transaction_coa_id
47455   , p_accounting_coa_id            => l_adr_accounting_coa_id
47456   , p_adr_code                     => 'CST_DEFAULT'
47457   , p_adr_type_code                => 'S'
47458   , p_component_type               => l_component_type
47459   , p_component_code               => l_component_code
47460   , p_component_type_code          => l_component_type_code
47461   , p_component_appl_id            => l_component_appl_id
47462   , p_amb_context_code             => l_amb_context_code
47463   , p_side                         => 'NA'
47464   );
47465 
47466 
47467    --
47468    --
47469    END IF;
47470 
47471        --
47472        -- Update the line information that should be overwritten
47473        --
47474        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47475                                          p_header_num   => 1);
47476        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47477 
47478        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47479 
47480        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47481           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47482        END IF;
47483 
47484       --
47485       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47486       --
47487       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47488           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47489       ELSE
47490           ---------------------------------------------------------------------------------------------------
47491           -- 4262811a Switch Sign
47492           ---------------------------------------------------------------------------------------------------
47493           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47494           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47495                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47496           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47497                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47498           -- 5132302
47499           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47500                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47501 
47502       END IF;
47503 
47504       -- 4955764
47505       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47506       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47507 
47508 
47509       XLA_AE_LINES_PKG.ValidateCurrentLine;
47510       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47511 
47512       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47513                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47514                ,p_balance_type_code => l_balance_type_code);
47515 
47516    END IF;
47517 
47518    -----------------------------------------------------------------------------------------
47519    -- 4262811 Multiperiod Accounting
47520    -----------------------------------------------------------------------------------------
47521      -- No MPA option is assigned.
47522 
47523 
47524 END IF;
47525 END IF;
47526 --
47527 
47528 --
47529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47530    trace
47531       (p_msg      => 'END of AcctLineType_108'
47532       ,p_level    => C_LEVEL_PROCEDURE
47533       ,p_module   => l_log_module);
47534 END IF;
47535 --
47536 EXCEPTION
47537   WHEN xla_exceptions_pkg.application_exception THEN
47538       RAISE;
47539   WHEN OTHERS THEN
47540        xla_exceptions_pkg.raise_message
47541            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_108');
47542 END AcctLineType_108;
47543 --
47544 
47545 ---------------------------------------
47546 --
47547 -- PRIVATE FUNCTION
47548 --         AcctLineType_109
47549 --
47550 ---------------------------------------
47551 PROCEDURE AcctLineType_109 (
47552   p_application_id        IN NUMBER
47553  ,p_event_id              IN NUMBER
47554  ,p_calculate_acctd_flag  IN VARCHAR2
47555  ,p_calculate_g_l_flag    IN VARCHAR2
47556  ,p_actual_flag           IN OUT VARCHAR2
47557  ,p_balance_type_code     OUT VARCHAR2
47558  ,p_gain_or_loss_ref      OUT VARCHAR2
47559  
47560 --TRANSACTION_ID
47561  , p_source_1            IN NUMBER
47562 --Item Concatenated Segments
47563  , p_source_2            IN VARCHAR2
47564 --Transaction Quantity
47565  , p_source_3            IN NUMBER
47566 --Transaction Unit of Measure Code
47567  , p_source_4            IN VARCHAR2
47568 --Inventory Transaction Type Description
47569  , p_source_5            IN VARCHAR2
47570 --Cost Management Default Account
47571  , p_source_11            IN NUMBER
47572 --DISTRIBUTION_IDENTIFIER
47573  , p_source_84            IN NUMBER
47574 --Distribution Type
47575  , p_source_85            IN VARCHAR2
47576  , p_source_85_meaning    IN VARCHAR2
47577 --Entered Currency Code
47578  , p_source_88            IN VARCHAR2
47579 --Entered Amount
47580  , p_source_91            IN NUMBER
47581 --Currency Conversion Date
47582  , p_source_92            IN DATE
47583 --Currency Conversion Rate
47584  , p_source_93            IN NUMBER
47585 --Currency Conversion Type
47586  , p_source_94            IN VARCHAR2
47587 --Accounted Amount
47588  , p_source_95            IN NUMBER
47589 --Accounting Line Type
47590  , p_source_97            IN NUMBER
47591 )
47592 IS
47593 
47594 l_component_type              VARCHAR2(80);
47595 l_component_code              VARCHAR2(30);
47596 l_component_type_code         VARCHAR2(1);
47597 l_component_appl_id           INTEGER;
47598 l_amb_context_code            VARCHAR2(30);
47599 l_entity_code                 VARCHAR2(30);
47600 l_event_class_code            VARCHAR2(30);
47601 l_ae_header_id                NUMBER;
47602 l_event_type_code             VARCHAR2(30);
47603 l_line_definition_code        VARCHAR2(30);
47604 l_line_definition_owner_code  VARCHAR2(1);
47605 --
47606 -- adr variables
47607 l_segment                     VARCHAR2(30);
47608 l_ccid                        NUMBER;
47609 l_adr_transaction_coa_id      NUMBER;
47610 l_adr_accounting_coa_id       NUMBER;
47611 l_adr_flexfield_segment_code  VARCHAR2(30);
47612 l_adr_flex_value_set_id       NUMBER;
47613 l_adr_value_type_code         VARCHAR2(30);
47614 l_adr_value_combination_id    NUMBER;
47615 l_adr_value_segment_code      VARCHAR2(30);
47616 
47617 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47618 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47619 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47620 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47621 
47622 -- 4262811 Variables ------------------------------------------------------------------------------------------
47623 l_entered_amt_idx             NUMBER;
47624 l_accted_amt_idx              NUMBER;
47625 l_acc_rev_flag                VARCHAR2(1);
47626 l_accrual_line_num            NUMBER;
47627 l_tmp_amt                     NUMBER;
47628 l_acc_rev_natural_side_code   VARCHAR2(1);
47629 
47630 l_num_entries                 NUMBER;
47631 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47632 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47633 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47634 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47635 l_recog_line_1                NUMBER;
47636 l_recog_line_2                NUMBER;
47637 
47638 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47639 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47640 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47641 
47642 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47643 
47644 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47645 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47646 
47647 ---------------------------------------------------------------------------------------------------------------
47648 
47649 
47650 --
47651 -- bulk performance
47652 --
47653 l_balance_type_code           VARCHAR2(1);
47654 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47655 l_log_module                  VARCHAR2(240);
47656 
47657 --
47658 -- Upgrade strategy
47659 --
47660 l_actual_upg_option           VARCHAR2(1);
47661 l_enc_upg_option           VARCHAR2(1);
47662 
47663 --
47664 BEGIN
47665 --
47666 IF g_log_enabled THEN
47667       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
47668 END IF;
47669 --
47670 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47671 
47672       trace
47673          (p_msg      => 'BEGIN of AcctLineType_109'
47674          ,p_level    => C_LEVEL_PROCEDURE
47675          ,p_module   => l_log_module);
47676 
47677 END IF;
47678 --
47679 l_component_type             := 'AMB_JLT';
47680 l_component_code             := 'COST_VARIANCE';
47681 l_component_type_code        := 'S';
47682 l_component_appl_id          :=  707;
47683 l_amb_context_code           := 'DEFAULT';
47684 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
47685 l_event_class_code           := 'SALES_ORDER';
47686 l_event_type_code            := 'SO_ISSUE';
47687 l_line_definition_owner_code := 'S';
47688 l_line_definition_code       := 'PI_SO_ISSUE';
47689 --
47690 l_balance_type_code          := 'A';
47691 l_segment                     := NULL;
47692 l_ccid                        := NULL;
47693 l_adr_transaction_coa_id      := NULL;
47694 l_adr_accounting_coa_id       := NULL;
47695 l_adr_flexfield_segment_code  := NULL;
47696 l_adr_flex_value_set_id       := NULL;
47697 l_adr_value_type_code         := NULL;
47698 l_adr_value_combination_id    := NULL;
47699 l_adr_value_segment_code      := NULL;
47700 
47701 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47702 l_bflow_class_code           := '';    -- 4219869 Business Flow
47703 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47704 l_budgetary_control_flag     := 'N';
47705 
47706 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47707 l_bflow_applied_to_amt       := NULL; -- 5132302
47708 l_entered_amt_idx            := NULL;          -- 4262811
47709 l_accted_amt_idx             := NULL;          -- 4262811
47710 l_acc_rev_flag               := NULL;          -- 4262811
47711 l_accrual_line_num           := NULL;          -- 4262811
47712 l_tmp_amt                    := NULL;          -- 4262811
47713 --
47714  
47715 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47716     l_balance_type_code <> 'B' THEN
47717 IF NVL(p_source_97,9E125) =  13
47718  THEN 
47719 
47720    --
47721    XLA_AE_LINES_PKG.SetNewLine;
47722 
47723    p_balance_type_code          := l_balance_type_code;
47724    -- set the flag so later we will know whether the gain loss line needs to be created
47725    
47726    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47727      p_actual_flag :='A';
47728    END IF;
47729 
47730    --
47731    -- bulk performance
47732    --
47733    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47734                                       p_header_num   => 0); -- 4262811
47735    --
47736    -- set accounting line options
47737    --
47738    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47739            p_natural_side_code          => 'D'
47740          , p_gain_or_loss_flag          => 'N'
47741          , p_gl_transfer_mode_code      => 'S'
47742          , p_acct_entry_type_code       => 'A'
47743          , p_switch_side_flag           => 'Y'
47744          , p_merge_duplicate_code       => 'N'
47745          );
47746    --
47747    l_acc_rev_natural_side_code := 'C';  -- 4262811
47748    -- 
47749    --
47750    -- set accounting line type info
47751    --
47752    xla_ae_lines_pkg.SetAcctLineType
47753       (p_component_type             => l_component_type
47754       ,p_event_type_code            => l_event_type_code
47755       ,p_line_definition_owner_code => l_line_definition_owner_code
47756       ,p_line_definition_code       => l_line_definition_code
47757       ,p_accounting_line_code       => l_component_code
47758       ,p_accounting_line_type_code  => l_component_type_code
47759       ,p_accounting_line_appl_id    => l_component_appl_id
47760       ,p_amb_context_code           => l_amb_context_code
47761       ,p_entity_code                => l_entity_code
47762       ,p_event_class_code           => l_event_class_code);
47763    --
47764    -- set accounting class
47765    --
47766    xla_ae_lines_pkg.SetAcctClass(
47767            p_accounting_class_code  => 'COST_VARIANCE'
47768          , p_ae_header_id           => l_ae_header_id
47769          );
47770 
47771    --
47772    -- set rounding class
47773    --
47774    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47775                       'COST_VARIANCE';
47776 
47777    --
47778    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47779    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47780    --
47781    -- bulk performance
47782    --
47783    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47784 
47785    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47786       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47787 
47788    -- 4955764
47789    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47790       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47791 
47792    -- 4458381 Public Sector Enh
47793    
47794    --
47795    -- set accounting attributes for the line type
47796    --
47797    l_entered_amt_idx := 3;
47798    l_accted_amt_idx  := 8;
47799    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47800    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47801    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
47802    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47803    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
47804    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47805    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
47806    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47807    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
47808    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47809    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
47810    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47811    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
47812    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47813    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
47814    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47815    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
47816 
47817    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47818    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47819 
47820    ---------------------------------------------------------------------------------------------------------------
47821    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47822    ---------------------------------------------------------------------------------------------------------------
47823    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47824 
47825    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47826    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47827 
47828    IF xla_accounting_cache_pkg.GetValueChar
47829          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47830          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47831    AND l_bflow_method_code = 'PRIOR_ENTRY'
47832 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47833    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47834          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47835        )
47836    THEN
47837          xla_ae_lines_pkg.BflowUpgEntry
47838            (p_business_method_code    => l_bflow_method_code
47839            ,p_business_class_code     => l_bflow_class_code
47840            ,p_balance_type            => l_balance_type_code);
47841    ELSE
47842       NULL;
47843 -- No business flow processing for business flow method of NONE.
47844    END IF;
47845 
47846    --
47847    -- call analytical criteria
47848    --
47849    
47850    --
47851    -- call description
47852    --
47853    
47854 xla_ae_lines_pkg.SetLineDescription(
47855    p_ae_header_id => l_ae_header_id
47856   ,p_description  => Description_1 (
47857      p_application_id         => p_application_id
47858    , p_ae_header_id           => l_ae_header_id 
47859 , p_source_1 => p_source_1
47860 , p_source_2 => p_source_2
47861 , p_source_3 => p_source_3
47862 , p_source_4 => p_source_4
47863 , p_source_5 => p_source_5
47864    )
47865 );
47866 
47867 
47868    --
47869    -- call ADRs
47870    -- Bug 4922099
47871    --
47872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47873         (NVL(l_actual_upg_option, 'N') = 'O') OR
47874         (NVL(l_enc_upg_option, 'N') = 'O')
47875       )
47876    THEN
47877    NULL;
47878    --
47879    --
47880    
47881   l_ccid := AcctDerRule_6(
47882            p_application_id           => p_application_id
47883          , p_ae_header_id             => l_ae_header_id 
47884 , p_source_11 => p_source_11
47885          , x_transaction_coa_id       => l_adr_transaction_coa_id
47886          , x_accounting_coa_id        => l_adr_accounting_coa_id
47887          , x_value_type_code          => l_adr_value_type_code
47888          , p_side                     => 'NA'
47889    );
47890 
47891    xla_ae_lines_pkg.set_ccid(
47892     p_code_combination_id          => l_ccid
47893   , p_value_type_code              => l_adr_value_type_code
47894   , p_transaction_coa_id           => l_adr_transaction_coa_id
47895   , p_accounting_coa_id            => l_adr_accounting_coa_id
47896   , p_adr_code                     => 'CST_DEFAULT'
47897   , p_adr_type_code                => 'S'
47898   , p_component_type               => l_component_type
47899   , p_component_code               => l_component_code
47900   , p_component_type_code          => l_component_type_code
47901   , p_component_appl_id            => l_component_appl_id
47902   , p_amb_context_code             => l_amb_context_code
47903   , p_side                         => 'NA'
47904   );
47905 
47906 
47907    --
47908    --
47909    END IF;
47910    --
47911    -- Bug 4922099
47912    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47913           (NVL(l_enc_upg_option, 'N') = 'O')
47914         ) AND
47915         (l_bflow_method_code = 'PRIOR_ENTRY')
47916       )
47917    THEN
47918       IF
47919       --
47920       1 = 2
47921       --
47922       THEN
47923       xla_accounting_err_pkg.build_message
47924                                     (p_appli_s_name            => 'XLA'
47925                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47926                                     ,p_token_1                 => 'LINE_NUMBER'
47927                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47928                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47929                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47930                                                                              l_component_type
47931                                                                             ,l_component_code
47932                                                                             ,l_component_type_code
47933                                                                             ,l_component_appl_id
47934                                                                             ,l_amb_context_code
47935                                                                             ,l_entity_code
47936                                                                             ,l_event_class_code
47937                                                                            )
47938                                     ,p_token_3                 => 'OWNER'
47939                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47940                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47941                                                                           ,p_lookup_code    => l_component_type_code
47942                                                                          )
47943                                     ,p_token_4                 => 'PRODUCT_NAME'
47944                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47945                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47946                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47947                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47948                                     ,p_ae_header_id            =>  NULL
47949                                        );
47950 
47951         IF (C_LEVEL_ERROR>= g_log_level) THEN
47952                  trace
47953                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47954                       ,p_level    => C_LEVEL_ERROR
47955                       ,p_module   => l_log_module);
47956         END IF;
47957       END IF;
47958    END IF;
47959    --
47960    --
47961    ------------------------------------------------------------------------------------------------
47962    -- 4219869 Business Flow
47963    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47964    -- Prior Entry.  Currently, the following code is always generated.
47965    ------------------------------------------------------------------------------------------------
47966    XLA_AE_LINES_PKG.ValidateCurrentLine;
47967 
47968    ------------------------------------------------------------------------------------
47969    -- 4219869 Business Flow
47970    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47971    ------------------------------------------------------------------------------------
47972    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47973 
47974    ----------------------------------------------------------------------------------
47975    -- 4219869 Business Flow
47976    -- Update journal entry status -- Need to generate this within IF <condition>
47977    ----------------------------------------------------------------------------------
47978    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47979          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47980          ,p_balance_type_code => l_balance_type_code
47981          );
47982 
47983    -------------------------------------------------------------------------------------------
47984    -- 4262811 - Generate the Accrual Reversal lines
47985    -------------------------------------------------------------------------------------------
47986    BEGIN
47987       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47988                               (g_array_event(p_event_id).array_value_num('header_index'));
47989       IF l_acc_rev_flag IS NULL THEN
47990          l_acc_rev_flag := 'N';
47991       END IF;
47992    EXCEPTION
47993       WHEN OTHERS THEN
47994          l_acc_rev_flag := 'N';
47995    END;
47996    --
47997    IF (l_acc_rev_flag = 'Y') THEN
47998 
47999        -- 4645092  ------------------------------------------------------------------------------
48000        -- To allow MPA report to determine if it should generate report process
48001        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48002        ------------------------------------------------------------------------------------------
48003 
48004        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48005        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48006    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48007    -- call ADRs
48008    -- Bug 4922099
48009    --
48010    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48011         (NVL(l_actual_upg_option, 'N') = 'O') OR
48012         (NVL(l_enc_upg_option, 'N') = 'O')
48013       )
48014    THEN
48015    NULL;
48016    --
48017    --
48018    
48019   l_ccid := AcctDerRule_6(
48020            p_application_id           => p_application_id
48021          , p_ae_header_id             => l_ae_header_id 
48022 , p_source_11 => p_source_11
48023          , x_transaction_coa_id       => l_adr_transaction_coa_id
48024          , x_accounting_coa_id        => l_adr_accounting_coa_id
48025          , x_value_type_code          => l_adr_value_type_code
48026          , p_side                     => 'NA'
48027    );
48028 
48029    xla_ae_lines_pkg.set_ccid(
48030     p_code_combination_id          => l_ccid
48031   , p_value_type_code              => l_adr_value_type_code
48032   , p_transaction_coa_id           => l_adr_transaction_coa_id
48033   , p_accounting_coa_id            => l_adr_accounting_coa_id
48034   , p_adr_code                     => 'CST_DEFAULT'
48035   , p_adr_type_code                => 'S'
48036   , p_component_type               => l_component_type
48037   , p_component_code               => l_component_code
48038   , p_component_type_code          => l_component_type_code
48039   , p_component_appl_id            => l_component_appl_id
48040   , p_amb_context_code             => l_amb_context_code
48041   , p_side                         => 'NA'
48042   );
48043 
48044 
48045    --
48046    --
48047    END IF;
48048 
48049        --
48050        -- Update the line information that should be overwritten
48051        --
48052        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48053                                          p_header_num   => 1);
48054        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48055 
48056        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48057 
48058        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48059           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48060        END IF;
48061 
48062       --
48063       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48064       --
48065       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48066           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48067       ELSE
48068           ---------------------------------------------------------------------------------------------------
48069           -- 4262811a Switch Sign
48070           ---------------------------------------------------------------------------------------------------
48071           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48072           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48073                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48074           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48075                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48076           -- 5132302
48077           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48078                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48079 
48080       END IF;
48081 
48082       -- 4955764
48083       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48084       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48085 
48086 
48087       XLA_AE_LINES_PKG.ValidateCurrentLine;
48088       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48089 
48090       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48091                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48092                ,p_balance_type_code => l_balance_type_code);
48093 
48094    END IF;
48095 
48096    -----------------------------------------------------------------------------------------
48097    -- 4262811 Multiperiod Accounting
48098    -----------------------------------------------------------------------------------------
48099      -- No MPA option is assigned.
48100 
48101 
48102 END IF;
48103 END IF;
48104 --
48105 
48106 --
48107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48108    trace
48109       (p_msg      => 'END of AcctLineType_109'
48110       ,p_level    => C_LEVEL_PROCEDURE
48111       ,p_module   => l_log_module);
48112 END IF;
48113 --
48114 EXCEPTION
48115   WHEN xla_exceptions_pkg.application_exception THEN
48116       RAISE;
48117   WHEN OTHERS THEN
48118        xla_exceptions_pkg.raise_message
48119            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_109');
48120 END AcctLineType_109;
48121 --
48122 
48123 ---------------------------------------
48124 --
48125 -- PRIVATE FUNCTION
48126 --         AcctLineType_110
48127 --
48128 ---------------------------------------
48129 PROCEDURE AcctLineType_110 (
48130   p_application_id        IN NUMBER
48131  ,p_event_id              IN NUMBER
48132  ,p_calculate_acctd_flag  IN VARCHAR2
48133  ,p_calculate_g_l_flag    IN VARCHAR2
48134  ,p_actual_flag           IN OUT VARCHAR2
48135  ,p_balance_type_code     OUT VARCHAR2
48136  ,p_gain_or_loss_ref      OUT VARCHAR2
48137  
48138 --TRANSACTION_ID
48139  , p_source_1            IN NUMBER
48140 --Item Concatenated Segments
48141  , p_source_2            IN VARCHAR2
48142 --Transaction Quantity
48143  , p_source_3            IN NUMBER
48144 --Transaction Unit of Measure Code
48145  , p_source_4            IN VARCHAR2
48146 --Inventory Transaction Type Description
48147  , p_source_5            IN VARCHAR2
48148 --Product Line Accounting Category Average Cost Variance Account
48149  , p_source_23            IN NUMBER
48150 --DISTRIBUTION_IDENTIFIER
48151  , p_source_84            IN NUMBER
48152 --Distribution Type
48153  , p_source_85            IN VARCHAR2
48154  , p_source_85_meaning    IN VARCHAR2
48155 --Entered Currency Code
48156  , p_source_88            IN VARCHAR2
48157 --Entered Amount
48158  , p_source_91            IN NUMBER
48159 --Currency Conversion Date
48160  , p_source_92            IN DATE
48161 --Currency Conversion Rate
48162  , p_source_93            IN NUMBER
48163 --Currency Conversion Type
48164  , p_source_94            IN VARCHAR2
48165 --Accounted Amount
48166  , p_source_95            IN NUMBER
48167 --Accounting Line Type
48168  , p_source_97            IN NUMBER
48169 )
48170 IS
48171 
48172 l_component_type              VARCHAR2(80);
48173 l_component_code              VARCHAR2(30);
48174 l_component_type_code         VARCHAR2(1);
48175 l_component_appl_id           INTEGER;
48176 l_amb_context_code            VARCHAR2(30);
48177 l_entity_code                 VARCHAR2(30);
48178 l_event_class_code            VARCHAR2(30);
48179 l_ae_header_id                NUMBER;
48180 l_event_type_code             VARCHAR2(30);
48181 l_line_definition_code        VARCHAR2(30);
48182 l_line_definition_owner_code  VARCHAR2(1);
48183 --
48184 -- adr variables
48185 l_segment                     VARCHAR2(30);
48186 l_ccid                        NUMBER;
48187 l_adr_transaction_coa_id      NUMBER;
48188 l_adr_accounting_coa_id       NUMBER;
48189 l_adr_flexfield_segment_code  VARCHAR2(30);
48190 l_adr_flex_value_set_id       NUMBER;
48191 l_adr_value_type_code         VARCHAR2(30);
48192 l_adr_value_combination_id    NUMBER;
48193 l_adr_value_segment_code      VARCHAR2(30);
48194 
48195 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48196 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48197 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48198 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48199 
48200 -- 4262811 Variables ------------------------------------------------------------------------------------------
48201 l_entered_amt_idx             NUMBER;
48202 l_accted_amt_idx              NUMBER;
48203 l_acc_rev_flag                VARCHAR2(1);
48204 l_accrual_line_num            NUMBER;
48205 l_tmp_amt                     NUMBER;
48206 l_acc_rev_natural_side_code   VARCHAR2(1);
48207 
48208 l_num_entries                 NUMBER;
48209 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48210 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48211 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48212 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48213 l_recog_line_1                NUMBER;
48214 l_recog_line_2                NUMBER;
48215 
48216 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48217 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48218 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48219 
48220 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48221 
48222 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48223 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48224 
48225 ---------------------------------------------------------------------------------------------------------------
48226 
48227 
48228 --
48229 -- bulk performance
48230 --
48231 l_balance_type_code           VARCHAR2(1);
48232 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48233 l_log_module                  VARCHAR2(240);
48234 
48235 --
48236 -- Upgrade strategy
48237 --
48238 l_actual_upg_option           VARCHAR2(1);
48239 l_enc_upg_option           VARCHAR2(1);
48240 
48241 --
48242 BEGIN
48243 --
48244 IF g_log_enabled THEN
48245       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
48246 END IF;
48247 --
48248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48249 
48250       trace
48251          (p_msg      => 'BEGIN of AcctLineType_110'
48252          ,p_level    => C_LEVEL_PROCEDURE
48253          ,p_module   => l_log_module);
48254 
48255 END IF;
48256 --
48257 l_component_type             := 'AMB_JLT';
48258 l_component_code             := 'COST_VARIANCE';
48259 l_component_type_code        := 'S';
48260 l_component_appl_id          :=  707;
48261 l_amb_context_code           := 'DEFAULT';
48262 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
48263 l_event_class_code           := 'USER_DEFINE';
48264 l_event_type_code            := 'UAVG_COST_UPD';
48265 l_line_definition_owner_code := 'S';
48266 l_line_definition_code       := 'PI_COST_UPD';
48267 --
48268 l_balance_type_code          := 'A';
48269 l_segment                     := NULL;
48270 l_ccid                        := NULL;
48271 l_adr_transaction_coa_id      := NULL;
48272 l_adr_accounting_coa_id       := NULL;
48273 l_adr_flexfield_segment_code  := NULL;
48274 l_adr_flex_value_set_id       := NULL;
48275 l_adr_value_type_code         := NULL;
48276 l_adr_value_combination_id    := NULL;
48277 l_adr_value_segment_code      := NULL;
48278 
48279 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48280 l_bflow_class_code           := '';    -- 4219869 Business Flow
48281 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48282 l_budgetary_control_flag     := 'N';
48283 
48284 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48285 l_bflow_applied_to_amt       := NULL; -- 5132302
48286 l_entered_amt_idx            := NULL;          -- 4262811
48287 l_accted_amt_idx             := NULL;          -- 4262811
48288 l_acc_rev_flag               := NULL;          -- 4262811
48289 l_accrual_line_num           := NULL;          -- 4262811
48290 l_tmp_amt                    := NULL;          -- 4262811
48291 --
48292  
48293 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48294     l_balance_type_code <> 'B' THEN
48295 IF NVL(p_source_97,9E125) =  13
48296  THEN 
48297 
48298    --
48299    XLA_AE_LINES_PKG.SetNewLine;
48300 
48301    p_balance_type_code          := l_balance_type_code;
48302    -- set the flag so later we will know whether the gain loss line needs to be created
48303    
48304    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48305      p_actual_flag :='A';
48306    END IF;
48307 
48308    --
48309    -- bulk performance
48310    --
48311    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48312                                       p_header_num   => 0); -- 4262811
48313    --
48314    -- set accounting line options
48315    --
48316    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48317            p_natural_side_code          => 'D'
48318          , p_gain_or_loss_flag          => 'N'
48319          , p_gl_transfer_mode_code      => 'S'
48320          , p_acct_entry_type_code       => 'A'
48321          , p_switch_side_flag           => 'Y'
48322          , p_merge_duplicate_code       => 'N'
48323          );
48324    --
48325    l_acc_rev_natural_side_code := 'C';  -- 4262811
48326    -- 
48327    --
48328    -- set accounting line type info
48329    --
48330    xla_ae_lines_pkg.SetAcctLineType
48331       (p_component_type             => l_component_type
48332       ,p_event_type_code            => l_event_type_code
48333       ,p_line_definition_owner_code => l_line_definition_owner_code
48334       ,p_line_definition_code       => l_line_definition_code
48335       ,p_accounting_line_code       => l_component_code
48336       ,p_accounting_line_type_code  => l_component_type_code
48337       ,p_accounting_line_appl_id    => l_component_appl_id
48338       ,p_amb_context_code           => l_amb_context_code
48339       ,p_entity_code                => l_entity_code
48340       ,p_event_class_code           => l_event_class_code);
48341    --
48342    -- set accounting class
48343    --
48344    xla_ae_lines_pkg.SetAcctClass(
48345            p_accounting_class_code  => 'COST_VARIANCE'
48346          , p_ae_header_id           => l_ae_header_id
48347          );
48348 
48349    --
48350    -- set rounding class
48351    --
48352    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48353                       'COST_VARIANCE';
48354 
48355    --
48356    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48357    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48358    --
48359    -- bulk performance
48360    --
48361    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48362 
48363    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48364       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48365 
48366    -- 4955764
48367    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48369 
48370    -- 4458381 Public Sector Enh
48371    
48372    --
48373    -- set accounting attributes for the line type
48374    --
48375    l_entered_amt_idx := 3;
48376    l_accted_amt_idx  := 8;
48377    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48378    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48379    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
48380    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48381    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
48382    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48383    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
48384    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48385    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
48386    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48387    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
48388    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48389    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
48390    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48391    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
48392    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48393    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
48394 
48395    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48396    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48397 
48398    ---------------------------------------------------------------------------------------------------------------
48399    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48400    ---------------------------------------------------------------------------------------------------------------
48401    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48402 
48403    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48404    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48405 
48406    IF xla_accounting_cache_pkg.GetValueChar
48407          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48408          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48409    AND l_bflow_method_code = 'PRIOR_ENTRY'
48410 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48411    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48412          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48413        )
48414    THEN
48415          xla_ae_lines_pkg.BflowUpgEntry
48416            (p_business_method_code    => l_bflow_method_code
48417            ,p_business_class_code     => l_bflow_class_code
48418            ,p_balance_type            => l_balance_type_code);
48419    ELSE
48420       NULL;
48421 -- No business flow processing for business flow method of NONE.
48422    END IF;
48423 
48424    --
48425    -- call analytical criteria
48426    --
48427    
48428    --
48429    -- call description
48430    --
48431    
48432 xla_ae_lines_pkg.SetLineDescription(
48433    p_ae_header_id => l_ae_header_id
48434   ,p_description  => Description_1 (
48435      p_application_id         => p_application_id
48436    , p_ae_header_id           => l_ae_header_id 
48437 , p_source_1 => p_source_1
48438 , p_source_2 => p_source_2
48439 , p_source_3 => p_source_3
48440 , p_source_4 => p_source_4
48441 , p_source_5 => p_source_5
48442    )
48443 );
48444 
48445 
48446    --
48447    -- call ADRs
48448    -- Bug 4922099
48449    --
48450    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48451         (NVL(l_actual_upg_option, 'N') = 'O') OR
48452         (NVL(l_enc_upg_option, 'N') = 'O')
48453       )
48454    THEN
48455    NULL;
48456    --
48457    --
48458    
48459   l_ccid := AcctDerRule_12(
48460            p_application_id           => p_application_id
48461          , p_ae_header_id             => l_ae_header_id 
48462 , p_source_23 => p_source_23
48463          , x_transaction_coa_id       => l_adr_transaction_coa_id
48464          , x_accounting_coa_id        => l_adr_accounting_coa_id
48465          , x_value_type_code          => l_adr_value_type_code
48466          , p_side                     => 'NA'
48467    );
48468 
48469    xla_ae_lines_pkg.set_ccid(
48470     p_code_combination_id          => l_ccid
48471   , p_value_type_code              => l_adr_value_type_code
48472   , p_transaction_coa_id           => l_adr_transaction_coa_id
48473   , p_accounting_coa_id            => l_adr_accounting_coa_id
48474   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
48475   , p_adr_type_code                => 'S'
48476   , p_component_type               => l_component_type
48477   , p_component_code               => l_component_code
48478   , p_component_type_code          => l_component_type_code
48479   , p_component_appl_id            => l_component_appl_id
48480   , p_amb_context_code             => l_amb_context_code
48481   , p_side                         => 'NA'
48482   );
48483 
48484 
48485    --
48486    --
48487    END IF;
48488    --
48489    -- Bug 4922099
48490    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48491           (NVL(l_enc_upg_option, 'N') = 'O')
48492         ) AND
48493         (l_bflow_method_code = 'PRIOR_ENTRY')
48494       )
48495    THEN
48496       IF
48497       --
48498       1 = 2
48499       --
48500       THEN
48501       xla_accounting_err_pkg.build_message
48502                                     (p_appli_s_name            => 'XLA'
48503                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48504                                     ,p_token_1                 => 'LINE_NUMBER'
48505                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48506                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48507                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48508                                                                              l_component_type
48509                                                                             ,l_component_code
48510                                                                             ,l_component_type_code
48511                                                                             ,l_component_appl_id
48512                                                                             ,l_amb_context_code
48513                                                                             ,l_entity_code
48514                                                                             ,l_event_class_code
48515                                                                            )
48516                                     ,p_token_3                 => 'OWNER'
48517                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48518                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48519                                                                           ,p_lookup_code    => l_component_type_code
48520                                                                          )
48521                                     ,p_token_4                 => 'PRODUCT_NAME'
48522                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48523                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48524                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48525                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48526                                     ,p_ae_header_id            =>  NULL
48527                                        );
48528 
48529         IF (C_LEVEL_ERROR>= g_log_level) THEN
48530                  trace
48531                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48532                       ,p_level    => C_LEVEL_ERROR
48533                       ,p_module   => l_log_module);
48534         END IF;
48535       END IF;
48536    END IF;
48537    --
48538    --
48539    ------------------------------------------------------------------------------------------------
48540    -- 4219869 Business Flow
48541    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48542    -- Prior Entry.  Currently, the following code is always generated.
48543    ------------------------------------------------------------------------------------------------
48544    XLA_AE_LINES_PKG.ValidateCurrentLine;
48545 
48546    ------------------------------------------------------------------------------------
48547    -- 4219869 Business Flow
48548    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48549    ------------------------------------------------------------------------------------
48550    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48551 
48552    ----------------------------------------------------------------------------------
48553    -- 4219869 Business Flow
48554    -- Update journal entry status -- Need to generate this within IF <condition>
48555    ----------------------------------------------------------------------------------
48556    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48557          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48558          ,p_balance_type_code => l_balance_type_code
48559          );
48560 
48561    -------------------------------------------------------------------------------------------
48562    -- 4262811 - Generate the Accrual Reversal lines
48563    -------------------------------------------------------------------------------------------
48564    BEGIN
48565       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48566                               (g_array_event(p_event_id).array_value_num('header_index'));
48567       IF l_acc_rev_flag IS NULL THEN
48568          l_acc_rev_flag := 'N';
48569       END IF;
48570    EXCEPTION
48571       WHEN OTHERS THEN
48572          l_acc_rev_flag := 'N';
48573    END;
48574    --
48575    IF (l_acc_rev_flag = 'Y') THEN
48576 
48577        -- 4645092  ------------------------------------------------------------------------------
48578        -- To allow MPA report to determine if it should generate report process
48579        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48580        ------------------------------------------------------------------------------------------
48581 
48582        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48583        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48584    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48585    -- call ADRs
48586    -- Bug 4922099
48587    --
48588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48589         (NVL(l_actual_upg_option, 'N') = 'O') OR
48590         (NVL(l_enc_upg_option, 'N') = 'O')
48591       )
48592    THEN
48593    NULL;
48594    --
48595    --
48596    
48597   l_ccid := AcctDerRule_12(
48598            p_application_id           => p_application_id
48599          , p_ae_header_id             => l_ae_header_id 
48600 , p_source_23 => p_source_23
48601          , x_transaction_coa_id       => l_adr_transaction_coa_id
48602          , x_accounting_coa_id        => l_adr_accounting_coa_id
48603          , x_value_type_code          => l_adr_value_type_code
48604          , p_side                     => 'NA'
48605    );
48606 
48607    xla_ae_lines_pkg.set_ccid(
48608     p_code_combination_id          => l_ccid
48609   , p_value_type_code              => l_adr_value_type_code
48610   , p_transaction_coa_id           => l_adr_transaction_coa_id
48611   , p_accounting_coa_id            => l_adr_accounting_coa_id
48612   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
48613   , p_adr_type_code                => 'S'
48614   , p_component_type               => l_component_type
48615   , p_component_code               => l_component_code
48616   , p_component_type_code          => l_component_type_code
48617   , p_component_appl_id            => l_component_appl_id
48618   , p_amb_context_code             => l_amb_context_code
48619   , p_side                         => 'NA'
48620   );
48621 
48622 
48623    --
48624    --
48625    END IF;
48626 
48627        --
48628        -- Update the line information that should be overwritten
48629        --
48630        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48631                                          p_header_num   => 1);
48632        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48633 
48634        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48635 
48636        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48637           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48638        END IF;
48639 
48640       --
48641       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48642       --
48643       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48644           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48645       ELSE
48646           ---------------------------------------------------------------------------------------------------
48647           -- 4262811a Switch Sign
48648           ---------------------------------------------------------------------------------------------------
48649           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48650           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48651                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48652           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48653                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48654           -- 5132302
48655           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48656                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48657 
48658       END IF;
48659 
48660       -- 4955764
48661       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48663 
48664 
48665       XLA_AE_LINES_PKG.ValidateCurrentLine;
48666       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48667 
48668       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48669                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48670                ,p_balance_type_code => l_balance_type_code);
48671 
48672    END IF;
48673 
48674    -----------------------------------------------------------------------------------------
48675    -- 4262811 Multiperiod Accounting
48676    -----------------------------------------------------------------------------------------
48677      -- No MPA option is assigned.
48678 
48679 
48680 END IF;
48681 END IF;
48682 --
48683 
48684 --
48685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48686    trace
48687       (p_msg      => 'END of AcctLineType_110'
48688       ,p_level    => C_LEVEL_PROCEDURE
48689       ,p_module   => l_log_module);
48690 END IF;
48691 --
48692 EXCEPTION
48693   WHEN xla_exceptions_pkg.application_exception THEN
48694       RAISE;
48695   WHEN OTHERS THEN
48696        xla_exceptions_pkg.raise_message
48697            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_110');
48698 END AcctLineType_110;
48699 --
48700 
48701 ---------------------------------------
48702 --
48703 -- PRIVATE FUNCTION
48704 --         AcctLineType_111
48705 --
48706 ---------------------------------------
48707 PROCEDURE AcctLineType_111 (
48708   p_application_id        IN NUMBER
48709  ,p_event_id              IN NUMBER
48710  ,p_calculate_acctd_flag  IN VARCHAR2
48711  ,p_calculate_g_l_flag    IN VARCHAR2
48712  ,p_actual_flag           IN OUT VARCHAR2
48713  ,p_balance_type_code     OUT VARCHAR2
48714  ,p_gain_or_loss_ref      OUT VARCHAR2
48715  
48716 --TRANSACTION_ID
48717  , p_source_1            IN NUMBER
48718 --Item Concatenated Segments
48719  , p_source_2            IN VARCHAR2
48720 --Transaction Quantity
48721  , p_source_3            IN NUMBER
48722 --Transaction Unit of Measure Code
48723  , p_source_4            IN VARCHAR2
48724 --Inventory Transaction Type Description
48725  , p_source_5            IN VARCHAR2
48726 --Product Line Accounting Category Average Cost Variance Account
48727  , p_source_23            IN NUMBER
48728 --DISTRIBUTION_IDENTIFIER
48729  , p_source_84            IN NUMBER
48730 --Distribution Type
48731  , p_source_85            IN VARCHAR2
48732  , p_source_85_meaning    IN VARCHAR2
48733 --Entered Currency Code
48734  , p_source_88            IN VARCHAR2
48735 --Entered Amount
48736  , p_source_91            IN NUMBER
48737 --Currency Conversion Date
48738  , p_source_92            IN DATE
48739 --Currency Conversion Rate
48740  , p_source_93            IN NUMBER
48741 --Currency Conversion Type
48742  , p_source_94            IN VARCHAR2
48743 --Accounted Amount
48744  , p_source_95            IN NUMBER
48745 --Accounting Line Type
48746  , p_source_97            IN NUMBER
48747 )
48748 IS
48749 
48750 l_component_type              VARCHAR2(80);
48751 l_component_code              VARCHAR2(30);
48752 l_component_type_code         VARCHAR2(1);
48753 l_component_appl_id           INTEGER;
48754 l_amb_context_code            VARCHAR2(30);
48755 l_entity_code                 VARCHAR2(30);
48756 l_event_class_code            VARCHAR2(30);
48757 l_ae_header_id                NUMBER;
48758 l_event_type_code             VARCHAR2(30);
48759 l_line_definition_code        VARCHAR2(30);
48760 l_line_definition_owner_code  VARCHAR2(1);
48761 --
48762 -- adr variables
48763 l_segment                     VARCHAR2(30);
48764 l_ccid                        NUMBER;
48765 l_adr_transaction_coa_id      NUMBER;
48766 l_adr_accounting_coa_id       NUMBER;
48767 l_adr_flexfield_segment_code  VARCHAR2(30);
48768 l_adr_flex_value_set_id       NUMBER;
48769 l_adr_value_type_code         VARCHAR2(30);
48770 l_adr_value_combination_id    NUMBER;
48771 l_adr_value_segment_code      VARCHAR2(30);
48772 
48773 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48774 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48775 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48776 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48777 
48778 -- 4262811 Variables ------------------------------------------------------------------------------------------
48779 l_entered_amt_idx             NUMBER;
48780 l_accted_amt_idx              NUMBER;
48781 l_acc_rev_flag                VARCHAR2(1);
48782 l_accrual_line_num            NUMBER;
48783 l_tmp_amt                     NUMBER;
48784 l_acc_rev_natural_side_code   VARCHAR2(1);
48785 
48786 l_num_entries                 NUMBER;
48787 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48788 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48789 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48790 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48791 l_recog_line_1                NUMBER;
48792 l_recog_line_2                NUMBER;
48793 
48794 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48795 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48796 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48797 
48798 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48799 
48800 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48801 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48802 
48803 ---------------------------------------------------------------------------------------------------------------
48804 
48805 
48806 --
48807 -- bulk performance
48808 --
48809 l_balance_type_code           VARCHAR2(1);
48810 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48811 l_log_module                  VARCHAR2(240);
48812 
48813 --
48814 -- Upgrade strategy
48815 --
48816 l_actual_upg_option           VARCHAR2(1);
48817 l_enc_upg_option           VARCHAR2(1);
48818 
48819 --
48820 BEGIN
48821 --
48822 IF g_log_enabled THEN
48823       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
48824 END IF;
48825 --
48826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48827 
48828       trace
48829          (p_msg      => 'BEGIN of AcctLineType_111'
48830          ,p_level    => C_LEVEL_PROCEDURE
48831          ,p_module   => l_log_module);
48832 
48833 END IF;
48834 --
48835 l_component_type             := 'AMB_JLT';
48836 l_component_code             := 'COST_VARIANCE';
48837 l_component_type_code        := 'S';
48838 l_component_appl_id          :=  707;
48839 l_amb_context_code           := 'DEFAULT';
48840 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
48841 l_event_class_code           := 'USER_DEFINE';
48842 l_event_type_code            := 'UIPV_TXFR';
48843 l_line_definition_owner_code := 'S';
48844 l_line_definition_code       := 'PI_IPV_TXFR';
48845 --
48846 l_balance_type_code          := 'A';
48847 l_segment                     := NULL;
48848 l_ccid                        := NULL;
48849 l_adr_transaction_coa_id      := NULL;
48850 l_adr_accounting_coa_id       := NULL;
48851 l_adr_flexfield_segment_code  := NULL;
48852 l_adr_flex_value_set_id       := NULL;
48853 l_adr_value_type_code         := NULL;
48854 l_adr_value_combination_id    := NULL;
48855 l_adr_value_segment_code      := NULL;
48856 
48857 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48858 l_bflow_class_code           := '';    -- 4219869 Business Flow
48859 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48860 l_budgetary_control_flag     := 'N';
48861 
48862 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48863 l_bflow_applied_to_amt       := NULL; -- 5132302
48864 l_entered_amt_idx            := NULL;          -- 4262811
48865 l_accted_amt_idx             := NULL;          -- 4262811
48866 l_acc_rev_flag               := NULL;          -- 4262811
48867 l_accrual_line_num           := NULL;          -- 4262811
48868 l_tmp_amt                    := NULL;          -- 4262811
48869 --
48870  
48871 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48872     l_balance_type_code <> 'B' THEN
48873 IF NVL(p_source_97,9E125) =  13
48874  THEN 
48875 
48876    --
48877    XLA_AE_LINES_PKG.SetNewLine;
48878 
48879    p_balance_type_code          := l_balance_type_code;
48880    -- set the flag so later we will know whether the gain loss line needs to be created
48881    
48882    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48883      p_actual_flag :='A';
48884    END IF;
48885 
48886    --
48887    -- bulk performance
48888    --
48889    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48890                                       p_header_num   => 0); -- 4262811
48891    --
48892    -- set accounting line options
48893    --
48894    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48895            p_natural_side_code          => 'D'
48896          , p_gain_or_loss_flag          => 'N'
48897          , p_gl_transfer_mode_code      => 'S'
48898          , p_acct_entry_type_code       => 'A'
48899          , p_switch_side_flag           => 'Y'
48900          , p_merge_duplicate_code       => 'N'
48901          );
48902    --
48903    l_acc_rev_natural_side_code := 'C';  -- 4262811
48904    -- 
48905    --
48906    -- set accounting line type info
48907    --
48908    xla_ae_lines_pkg.SetAcctLineType
48909       (p_component_type             => l_component_type
48910       ,p_event_type_code            => l_event_type_code
48911       ,p_line_definition_owner_code => l_line_definition_owner_code
48912       ,p_line_definition_code       => l_line_definition_code
48913       ,p_accounting_line_code       => l_component_code
48914       ,p_accounting_line_type_code  => l_component_type_code
48915       ,p_accounting_line_appl_id    => l_component_appl_id
48916       ,p_amb_context_code           => l_amb_context_code
48917       ,p_entity_code                => l_entity_code
48918       ,p_event_class_code           => l_event_class_code);
48919    --
48920    -- set accounting class
48921    --
48922    xla_ae_lines_pkg.SetAcctClass(
48923            p_accounting_class_code  => 'COST_VARIANCE'
48924          , p_ae_header_id           => l_ae_header_id
48925          );
48926 
48927    --
48928    -- set rounding class
48929    --
48930    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48931                       'COST_VARIANCE';
48932 
48933    --
48934    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48935    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48936    --
48937    -- bulk performance
48938    --
48939    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48940 
48941    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48942       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48943 
48944    -- 4955764
48945    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48946       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48947 
48948    -- 4458381 Public Sector Enh
48949    
48950    --
48951    -- set accounting attributes for the line type
48952    --
48953    l_entered_amt_idx := 3;
48954    l_accted_amt_idx  := 8;
48955    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48956    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48957    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
48958    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48959    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
48960    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48961    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
48962    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48963    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
48964    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48965    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
48966    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48967    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
48968    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48969    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
48970    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48971    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
48972 
48973    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48974    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48975 
48976    ---------------------------------------------------------------------------------------------------------------
48977    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48978    ---------------------------------------------------------------------------------------------------------------
48979    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48980 
48981    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48982    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48983 
48984    IF xla_accounting_cache_pkg.GetValueChar
48985          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48986          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48987    AND l_bflow_method_code = 'PRIOR_ENTRY'
48988 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48989    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48990          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48991        )
48992    THEN
48993          xla_ae_lines_pkg.BflowUpgEntry
48994            (p_business_method_code    => l_bflow_method_code
48995            ,p_business_class_code     => l_bflow_class_code
48996            ,p_balance_type            => l_balance_type_code);
48997    ELSE
48998       NULL;
48999 -- No business flow processing for business flow method of NONE.
49000    END IF;
49001 
49002    --
49003    -- call analytical criteria
49004    --
49005    
49006    --
49007    -- call description
49008    --
49009    
49010 xla_ae_lines_pkg.SetLineDescription(
49011    p_ae_header_id => l_ae_header_id
49012   ,p_description  => Description_1 (
49013      p_application_id         => p_application_id
49014    , p_ae_header_id           => l_ae_header_id 
49015 , p_source_1 => p_source_1
49016 , p_source_2 => p_source_2
49017 , p_source_3 => p_source_3
49018 , p_source_4 => p_source_4
49019 , p_source_5 => p_source_5
49020    )
49021 );
49022 
49023 
49024    --
49025    -- call ADRs
49026    -- Bug 4922099
49027    --
49028    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49029         (NVL(l_actual_upg_option, 'N') = 'O') OR
49030         (NVL(l_enc_upg_option, 'N') = 'O')
49031       )
49032    THEN
49033    NULL;
49034    --
49035    --
49036    
49037   l_ccid := AcctDerRule_12(
49038            p_application_id           => p_application_id
49039          , p_ae_header_id             => l_ae_header_id 
49040 , p_source_23 => p_source_23
49041          , x_transaction_coa_id       => l_adr_transaction_coa_id
49042          , x_accounting_coa_id        => l_adr_accounting_coa_id
49043          , x_value_type_code          => l_adr_value_type_code
49044          , p_side                     => 'NA'
49045    );
49046 
49047    xla_ae_lines_pkg.set_ccid(
49048     p_code_combination_id          => l_ccid
49049   , p_value_type_code              => l_adr_value_type_code
49050   , p_transaction_coa_id           => l_adr_transaction_coa_id
49051   , p_accounting_coa_id            => l_adr_accounting_coa_id
49052   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
49053   , p_adr_type_code                => 'S'
49054   , p_component_type               => l_component_type
49055   , p_component_code               => l_component_code
49056   , p_component_type_code          => l_component_type_code
49057   , p_component_appl_id            => l_component_appl_id
49058   , p_amb_context_code             => l_amb_context_code
49059   , p_side                         => 'NA'
49060   );
49061 
49062 
49063    --
49064    --
49065    END IF;
49066    --
49067    -- Bug 4922099
49068    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49069           (NVL(l_enc_upg_option, 'N') = 'O')
49070         ) AND
49071         (l_bflow_method_code = 'PRIOR_ENTRY')
49072       )
49073    THEN
49074       IF
49075       --
49076       1 = 2
49077       --
49078       THEN
49079       xla_accounting_err_pkg.build_message
49080                                     (p_appli_s_name            => 'XLA'
49081                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49082                                     ,p_token_1                 => 'LINE_NUMBER'
49083                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49084                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49085                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49086                                                                              l_component_type
49087                                                                             ,l_component_code
49088                                                                             ,l_component_type_code
49089                                                                             ,l_component_appl_id
49090                                                                             ,l_amb_context_code
49091                                                                             ,l_entity_code
49092                                                                             ,l_event_class_code
49093                                                                            )
49094                                     ,p_token_3                 => 'OWNER'
49095                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49096                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49097                                                                           ,p_lookup_code    => l_component_type_code
49098                                                                          )
49099                                     ,p_token_4                 => 'PRODUCT_NAME'
49100                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49101                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49102                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49103                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49104                                     ,p_ae_header_id            =>  NULL
49105                                        );
49106 
49107         IF (C_LEVEL_ERROR>= g_log_level) THEN
49108                  trace
49109                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49110                       ,p_level    => C_LEVEL_ERROR
49111                       ,p_module   => l_log_module);
49112         END IF;
49113       END IF;
49114    END IF;
49115    --
49116    --
49117    ------------------------------------------------------------------------------------------------
49118    -- 4219869 Business Flow
49119    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49120    -- Prior Entry.  Currently, the following code is always generated.
49121    ------------------------------------------------------------------------------------------------
49122    XLA_AE_LINES_PKG.ValidateCurrentLine;
49123 
49124    ------------------------------------------------------------------------------------
49125    -- 4219869 Business Flow
49126    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49127    ------------------------------------------------------------------------------------
49128    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49129 
49130    ----------------------------------------------------------------------------------
49131    -- 4219869 Business Flow
49132    -- Update journal entry status -- Need to generate this within IF <condition>
49133    ----------------------------------------------------------------------------------
49134    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49135          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49136          ,p_balance_type_code => l_balance_type_code
49137          );
49138 
49139    -------------------------------------------------------------------------------------------
49140    -- 4262811 - Generate the Accrual Reversal lines
49141    -------------------------------------------------------------------------------------------
49142    BEGIN
49143       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49144                               (g_array_event(p_event_id).array_value_num('header_index'));
49145       IF l_acc_rev_flag IS NULL THEN
49146          l_acc_rev_flag := 'N';
49147       END IF;
49148    EXCEPTION
49149       WHEN OTHERS THEN
49150          l_acc_rev_flag := 'N';
49151    END;
49152    --
49153    IF (l_acc_rev_flag = 'Y') THEN
49154 
49155        -- 4645092  ------------------------------------------------------------------------------
49156        -- To allow MPA report to determine if it should generate report process
49157        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49158        ------------------------------------------------------------------------------------------
49159 
49160        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49161        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49162    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49163    -- call ADRs
49164    -- Bug 4922099
49165    --
49166    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49167         (NVL(l_actual_upg_option, 'N') = 'O') OR
49168         (NVL(l_enc_upg_option, 'N') = 'O')
49169       )
49170    THEN
49171    NULL;
49172    --
49173    --
49174    
49175   l_ccid := AcctDerRule_12(
49176            p_application_id           => p_application_id
49177          , p_ae_header_id             => l_ae_header_id 
49178 , p_source_23 => p_source_23
49179          , x_transaction_coa_id       => l_adr_transaction_coa_id
49180          , x_accounting_coa_id        => l_adr_accounting_coa_id
49181          , x_value_type_code          => l_adr_value_type_code
49182          , p_side                     => 'NA'
49183    );
49184 
49185    xla_ae_lines_pkg.set_ccid(
49186     p_code_combination_id          => l_ccid
49187   , p_value_type_code              => l_adr_value_type_code
49188   , p_transaction_coa_id           => l_adr_transaction_coa_id
49189   , p_accounting_coa_id            => l_adr_accounting_coa_id
49190   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
49191   , p_adr_type_code                => 'S'
49192   , p_component_type               => l_component_type
49193   , p_component_code               => l_component_code
49194   , p_component_type_code          => l_component_type_code
49195   , p_component_appl_id            => l_component_appl_id
49196   , p_amb_context_code             => l_amb_context_code
49197   , p_side                         => 'NA'
49198   );
49199 
49200 
49201    --
49202    --
49203    END IF;
49204 
49205        --
49206        -- Update the line information that should be overwritten
49207        --
49208        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49209                                          p_header_num   => 1);
49210        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49211 
49212        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49213 
49214        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49215           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49216        END IF;
49217 
49218       --
49219       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49220       --
49221       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49222           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49223       ELSE
49224           ---------------------------------------------------------------------------------------------------
49225           -- 4262811a Switch Sign
49226           ---------------------------------------------------------------------------------------------------
49227           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49228           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49229                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49230           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49231                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49232           -- 5132302
49233           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49234                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49235 
49236       END IF;
49237 
49238       -- 4955764
49239       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49240       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49241 
49242 
49243       XLA_AE_LINES_PKG.ValidateCurrentLine;
49244       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49245 
49246       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49247                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49248                ,p_balance_type_code => l_balance_type_code);
49249 
49250    END IF;
49251 
49252    -----------------------------------------------------------------------------------------
49253    -- 4262811 Multiperiod Accounting
49254    -----------------------------------------------------------------------------------------
49255      -- No MPA option is assigned.
49256 
49257 
49258 END IF;
49259 END IF;
49260 --
49261 
49262 --
49263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49264    trace
49265       (p_msg      => 'END of AcctLineType_111'
49266       ,p_level    => C_LEVEL_PROCEDURE
49267       ,p_module   => l_log_module);
49268 END IF;
49269 --
49270 EXCEPTION
49271   WHEN xla_exceptions_pkg.application_exception THEN
49272       RAISE;
49273   WHEN OTHERS THEN
49274        xla_exceptions_pkg.raise_message
49275            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_111');
49276 END AcctLineType_111;
49277 --
49278 
49279 ---------------------------------------
49280 --
49281 -- PRIVATE FUNCTION
49282 --         AcctLineType_112
49283 --
49284 ---------------------------------------
49285 PROCEDURE AcctLineType_112 (
49286   p_application_id        IN NUMBER
49287  ,p_event_id              IN NUMBER
49288  ,p_calculate_acctd_flag  IN VARCHAR2
49289  ,p_calculate_g_l_flag    IN VARCHAR2
49290  ,p_actual_flag           IN OUT VARCHAR2
49291  ,p_balance_type_code     OUT VARCHAR2
49292  ,p_gain_or_loss_ref      OUT VARCHAR2
49293  
49294 --Product Line Accounting Category Average Cost Variance Account
49295  , p_source_23            IN NUMBER
49296 --DISTRIBUTION_IDENTIFIER
49297  , p_source_84            IN NUMBER
49298 --Distribution Type
49299  , p_source_85            IN VARCHAR2
49300  , p_source_85_meaning    IN VARCHAR2
49301 --Entered Currency Code
49302  , p_source_88            IN VARCHAR2
49303 --Entered Amount
49304  , p_source_91            IN NUMBER
49305 --Currency Conversion Date
49306  , p_source_92            IN DATE
49307 --Currency Conversion Rate
49308  , p_source_93            IN NUMBER
49309 --Currency Conversion Type
49310  , p_source_94            IN VARCHAR2
49311 --Accounted Amount
49312  , p_source_95            IN NUMBER
49313 --Accounting Line Type
49314  , p_source_97            IN NUMBER
49315 )
49316 IS
49317 
49318 l_component_type              VARCHAR2(80);
49319 l_component_code              VARCHAR2(30);
49320 l_component_type_code         VARCHAR2(1);
49321 l_component_appl_id           INTEGER;
49322 l_amb_context_code            VARCHAR2(30);
49323 l_entity_code                 VARCHAR2(30);
49324 l_event_class_code            VARCHAR2(30);
49325 l_ae_header_id                NUMBER;
49326 l_event_type_code             VARCHAR2(30);
49327 l_line_definition_code        VARCHAR2(30);
49328 l_line_definition_owner_code  VARCHAR2(1);
49329 --
49330 -- adr variables
49331 l_segment                     VARCHAR2(30);
49332 l_ccid                        NUMBER;
49333 l_adr_transaction_coa_id      NUMBER;
49334 l_adr_accounting_coa_id       NUMBER;
49335 l_adr_flexfield_segment_code  VARCHAR2(30);
49336 l_adr_flex_value_set_id       NUMBER;
49337 l_adr_value_type_code         VARCHAR2(30);
49338 l_adr_value_combination_id    NUMBER;
49339 l_adr_value_segment_code      VARCHAR2(30);
49340 
49341 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49342 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49343 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49344 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49345 
49346 -- 4262811 Variables ------------------------------------------------------------------------------------------
49347 l_entered_amt_idx             NUMBER;
49348 l_accted_amt_idx              NUMBER;
49349 l_acc_rev_flag                VARCHAR2(1);
49350 l_accrual_line_num            NUMBER;
49351 l_tmp_amt                     NUMBER;
49352 l_acc_rev_natural_side_code   VARCHAR2(1);
49353 
49354 l_num_entries                 NUMBER;
49355 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49356 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49357 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49358 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49359 l_recog_line_1                NUMBER;
49360 l_recog_line_2                NUMBER;
49361 
49362 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49363 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49364 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49365 
49366 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49367 
49368 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49369 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49370 
49371 ---------------------------------------------------------------------------------------------------------------
49372 
49373 
49374 --
49375 -- bulk performance
49376 --
49377 l_balance_type_code           VARCHAR2(1);
49378 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49379 l_log_module                  VARCHAR2(240);
49380 
49381 --
49382 -- Upgrade strategy
49383 --
49384 l_actual_upg_option           VARCHAR2(1);
49385 l_enc_upg_option           VARCHAR2(1);
49386 
49387 --
49388 BEGIN
49389 --
49390 IF g_log_enabled THEN
49391       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
49392 END IF;
49393 --
49394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49395 
49396       trace
49397          (p_msg      => 'BEGIN of AcctLineType_112'
49398          ,p_level    => C_LEVEL_PROCEDURE
49399          ,p_module   => l_log_module);
49400 
49401 END IF;
49402 --
49403 l_component_type             := 'AMB_JLT';
49404 l_component_code             := 'COST_VARIANCE';
49405 l_component_type_code        := 'S';
49406 l_component_appl_id          :=  707;
49407 l_amb_context_code           := 'DEFAULT';
49408 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
49409 l_event_class_code           := 'USER_DEFINE';
49410 l_event_type_code            := 'UMISC_RCPT';
49411 l_line_definition_owner_code := 'S';
49412 l_line_definition_code       := 'PI_USER_RCPT';
49413 --
49414 l_balance_type_code          := 'A';
49415 l_segment                     := NULL;
49416 l_ccid                        := NULL;
49417 l_adr_transaction_coa_id      := NULL;
49418 l_adr_accounting_coa_id       := NULL;
49419 l_adr_flexfield_segment_code  := NULL;
49420 l_adr_flex_value_set_id       := NULL;
49421 l_adr_value_type_code         := NULL;
49422 l_adr_value_combination_id    := NULL;
49423 l_adr_value_segment_code      := NULL;
49424 
49425 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49426 l_bflow_class_code           := '';    -- 4219869 Business Flow
49427 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49428 l_budgetary_control_flag     := 'N';
49429 
49430 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49431 l_bflow_applied_to_amt       := NULL; -- 5132302
49432 l_entered_amt_idx            := NULL;          -- 4262811
49433 l_accted_amt_idx             := NULL;          -- 4262811
49434 l_acc_rev_flag               := NULL;          -- 4262811
49435 l_accrual_line_num           := NULL;          -- 4262811
49436 l_tmp_amt                    := NULL;          -- 4262811
49437 --
49438  
49439 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49440     l_balance_type_code <> 'B' THEN
49441 IF NVL(p_source_97,9E125) =  13
49442  THEN 
49443 
49444    --
49445    XLA_AE_LINES_PKG.SetNewLine;
49446 
49447    p_balance_type_code          := l_balance_type_code;
49448    -- set the flag so later we will know whether the gain loss line needs to be created
49449    
49450    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49451      p_actual_flag :='A';
49452    END IF;
49453 
49454    --
49455    -- bulk performance
49456    --
49457    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49458                                       p_header_num   => 0); -- 4262811
49459    --
49460    -- set accounting line options
49461    --
49462    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49463            p_natural_side_code          => 'D'
49464          , p_gain_or_loss_flag          => 'N'
49465          , p_gl_transfer_mode_code      => 'S'
49466          , p_acct_entry_type_code       => 'A'
49467          , p_switch_side_flag           => 'Y'
49468          , p_merge_duplicate_code       => 'N'
49469          );
49470    --
49471    l_acc_rev_natural_side_code := 'C';  -- 4262811
49472    -- 
49473    --
49474    -- set accounting line type info
49475    --
49476    xla_ae_lines_pkg.SetAcctLineType
49477       (p_component_type             => l_component_type
49478       ,p_event_type_code            => l_event_type_code
49479       ,p_line_definition_owner_code => l_line_definition_owner_code
49480       ,p_line_definition_code       => l_line_definition_code
49481       ,p_accounting_line_code       => l_component_code
49482       ,p_accounting_line_type_code  => l_component_type_code
49483       ,p_accounting_line_appl_id    => l_component_appl_id
49484       ,p_amb_context_code           => l_amb_context_code
49485       ,p_entity_code                => l_entity_code
49486       ,p_event_class_code           => l_event_class_code);
49487    --
49488    -- set accounting class
49489    --
49490    xla_ae_lines_pkg.SetAcctClass(
49491            p_accounting_class_code  => 'COST_VARIANCE'
49492          , p_ae_header_id           => l_ae_header_id
49493          );
49494 
49495    --
49496    -- set rounding class
49497    --
49498    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49499                       'COST_VARIANCE';
49500 
49501    --
49502    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49503    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49504    --
49505    -- bulk performance
49506    --
49507    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49508 
49509    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49510       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49511 
49512    -- 4955764
49513    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49514       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49515 
49516    -- 4458381 Public Sector Enh
49517    
49518    --
49519    -- set accounting attributes for the line type
49520    --
49521    l_entered_amt_idx := 3;
49522    l_accted_amt_idx  := 8;
49523    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49524    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49525    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
49526    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49527    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
49528    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49529    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
49530    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49531    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
49532    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49533    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
49534    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49535    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
49536    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49537    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
49538    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49539    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
49540 
49541    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49542    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49543 
49544    ---------------------------------------------------------------------------------------------------------------
49545    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49546    ---------------------------------------------------------------------------------------------------------------
49547    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49548 
49549    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49550    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49551 
49552    IF xla_accounting_cache_pkg.GetValueChar
49553          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49554          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49555    AND l_bflow_method_code = 'PRIOR_ENTRY'
49556 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49557    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49558          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49559        )
49560    THEN
49561          xla_ae_lines_pkg.BflowUpgEntry
49562            (p_business_method_code    => l_bflow_method_code
49563            ,p_business_class_code     => l_bflow_class_code
49564            ,p_balance_type            => l_balance_type_code);
49565    ELSE
49566       NULL;
49567 -- No business flow processing for business flow method of NONE.
49568    END IF;
49569 
49570    --
49571    -- call analytical criteria
49572    --
49573    
49574    --
49575    -- call description
49576    --
49577    -- No description or it is inherited.
49578    --
49579    -- call ADRs
49580    -- Bug 4922099
49581    --
49582    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49583         (NVL(l_actual_upg_option, 'N') = 'O') OR
49584         (NVL(l_enc_upg_option, 'N') = 'O')
49585       )
49586    THEN
49587    NULL;
49588    --
49589    --
49590    
49591   l_ccid := AcctDerRule_12(
49592            p_application_id           => p_application_id
49593          , p_ae_header_id             => l_ae_header_id 
49594 , p_source_23 => p_source_23
49595          , x_transaction_coa_id       => l_adr_transaction_coa_id
49596          , x_accounting_coa_id        => l_adr_accounting_coa_id
49597          , x_value_type_code          => l_adr_value_type_code
49598          , p_side                     => 'NA'
49599    );
49600 
49601    xla_ae_lines_pkg.set_ccid(
49602     p_code_combination_id          => l_ccid
49603   , p_value_type_code              => l_adr_value_type_code
49604   , p_transaction_coa_id           => l_adr_transaction_coa_id
49605   , p_accounting_coa_id            => l_adr_accounting_coa_id
49606   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
49607   , p_adr_type_code                => 'S'
49608   , p_component_type               => l_component_type
49609   , p_component_code               => l_component_code
49610   , p_component_type_code          => l_component_type_code
49611   , p_component_appl_id            => l_component_appl_id
49612   , p_amb_context_code             => l_amb_context_code
49613   , p_side                         => 'NA'
49614   );
49615 
49616 
49617    --
49618    --
49619    END IF;
49620    --
49621    -- Bug 4922099
49622    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49623           (NVL(l_enc_upg_option, 'N') = 'O')
49624         ) AND
49625         (l_bflow_method_code = 'PRIOR_ENTRY')
49626       )
49627    THEN
49628       IF
49629       --
49630       1 = 2
49631       --
49632       THEN
49633       xla_accounting_err_pkg.build_message
49634                                     (p_appli_s_name            => 'XLA'
49635                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49636                                     ,p_token_1                 => 'LINE_NUMBER'
49637                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49638                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49639                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49640                                                                              l_component_type
49641                                                                             ,l_component_code
49642                                                                             ,l_component_type_code
49643                                                                             ,l_component_appl_id
49644                                                                             ,l_amb_context_code
49645                                                                             ,l_entity_code
49646                                                                             ,l_event_class_code
49647                                                                            )
49648                                     ,p_token_3                 => 'OWNER'
49649                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49650                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49651                                                                           ,p_lookup_code    => l_component_type_code
49652                                                                          )
49653                                     ,p_token_4                 => 'PRODUCT_NAME'
49654                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49655                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49656                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49657                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49658                                     ,p_ae_header_id            =>  NULL
49659                                        );
49660 
49661         IF (C_LEVEL_ERROR>= g_log_level) THEN
49662                  trace
49663                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49664                       ,p_level    => C_LEVEL_ERROR
49665                       ,p_module   => l_log_module);
49666         END IF;
49667       END IF;
49668    END IF;
49669    --
49670    --
49671    ------------------------------------------------------------------------------------------------
49672    -- 4219869 Business Flow
49673    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49674    -- Prior Entry.  Currently, the following code is always generated.
49675    ------------------------------------------------------------------------------------------------
49676    XLA_AE_LINES_PKG.ValidateCurrentLine;
49677 
49678    ------------------------------------------------------------------------------------
49679    -- 4219869 Business Flow
49680    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49681    ------------------------------------------------------------------------------------
49682    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49683 
49684    ----------------------------------------------------------------------------------
49685    -- 4219869 Business Flow
49686    -- Update journal entry status -- Need to generate this within IF <condition>
49687    ----------------------------------------------------------------------------------
49688    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49689          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49690          ,p_balance_type_code => l_balance_type_code
49691          );
49692 
49693    -------------------------------------------------------------------------------------------
49694    -- 4262811 - Generate the Accrual Reversal lines
49695    -------------------------------------------------------------------------------------------
49696    BEGIN
49697       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49698                               (g_array_event(p_event_id).array_value_num('header_index'));
49699       IF l_acc_rev_flag IS NULL THEN
49700          l_acc_rev_flag := 'N';
49701       END IF;
49702    EXCEPTION
49703       WHEN OTHERS THEN
49704          l_acc_rev_flag := 'N';
49705    END;
49706    --
49707    IF (l_acc_rev_flag = 'Y') THEN
49708 
49709        -- 4645092  ------------------------------------------------------------------------------
49710        -- To allow MPA report to determine if it should generate report process
49711        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49712        ------------------------------------------------------------------------------------------
49713 
49714        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49715        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49716    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49717    -- call ADRs
49718    -- Bug 4922099
49719    --
49720    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49721         (NVL(l_actual_upg_option, 'N') = 'O') OR
49722         (NVL(l_enc_upg_option, 'N') = 'O')
49723       )
49724    THEN
49725    NULL;
49726    --
49727    --
49728    
49729   l_ccid := AcctDerRule_12(
49730            p_application_id           => p_application_id
49731          , p_ae_header_id             => l_ae_header_id 
49732 , p_source_23 => p_source_23
49733          , x_transaction_coa_id       => l_adr_transaction_coa_id
49734          , x_accounting_coa_id        => l_adr_accounting_coa_id
49735          , x_value_type_code          => l_adr_value_type_code
49736          , p_side                     => 'NA'
49737    );
49738 
49739    xla_ae_lines_pkg.set_ccid(
49740     p_code_combination_id          => l_ccid
49741   , p_value_type_code              => l_adr_value_type_code
49742   , p_transaction_coa_id           => l_adr_transaction_coa_id
49743   , p_accounting_coa_id            => l_adr_accounting_coa_id
49744   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
49745   , p_adr_type_code                => 'S'
49746   , p_component_type               => l_component_type
49747   , p_component_code               => l_component_code
49748   , p_component_type_code          => l_component_type_code
49749   , p_component_appl_id            => l_component_appl_id
49750   , p_amb_context_code             => l_amb_context_code
49751   , p_side                         => 'NA'
49752   );
49753 
49754 
49755    --
49756    --
49757    END IF;
49758 
49759        --
49760        -- Update the line information that should be overwritten
49761        --
49762        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49763                                          p_header_num   => 1);
49764        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49765 
49766        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49767 
49768        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49769           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49770        END IF;
49771 
49772       --
49773       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49774       --
49775       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49776           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49777       ELSE
49778           ---------------------------------------------------------------------------------------------------
49779           -- 4262811a Switch Sign
49780           ---------------------------------------------------------------------------------------------------
49781           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49782           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49783                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49784           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49785                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49786           -- 5132302
49787           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49788                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49789 
49790       END IF;
49791 
49792       -- 4955764
49793       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49794       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49795 
49796 
49797       XLA_AE_LINES_PKG.ValidateCurrentLine;
49798       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49799 
49800       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49801                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49802                ,p_balance_type_code => l_balance_type_code);
49803 
49804    END IF;
49805 
49806    -----------------------------------------------------------------------------------------
49807    -- 4262811 Multiperiod Accounting
49808    -----------------------------------------------------------------------------------------
49809      -- No MPA option is assigned.
49810 
49811 
49812 END IF;
49813 END IF;
49814 --
49815 
49816 --
49817 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49818    trace
49819       (p_msg      => 'END of AcctLineType_112'
49820       ,p_level    => C_LEVEL_PROCEDURE
49821       ,p_module   => l_log_module);
49822 END IF;
49823 --
49824 EXCEPTION
49825   WHEN xla_exceptions_pkg.application_exception THEN
49826       RAISE;
49827   WHEN OTHERS THEN
49828        xla_exceptions_pkg.raise_message
49829            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_112');
49830 END AcctLineType_112;
49831 --
49832 
49833 ---------------------------------------
49834 --
49835 -- PRIVATE FUNCTION
49836 --         AcctLineType_113
49837 --
49838 ---------------------------------------
49839 PROCEDURE AcctLineType_113 (
49840   p_application_id        IN NUMBER
49841  ,p_event_id              IN NUMBER
49842  ,p_calculate_acctd_flag  IN VARCHAR2
49843  ,p_calculate_g_l_flag    IN VARCHAR2
49844  ,p_actual_flag           IN OUT VARCHAR2
49845  ,p_balance_type_code     OUT VARCHAR2
49846  ,p_gain_or_loss_ref      OUT VARCHAR2
49847  
49848 --TRANSACTION_ID
49849  , p_source_1            IN NUMBER
49850 --Item Concatenated Segments
49851  , p_source_2            IN VARCHAR2
49852 --Transaction Quantity
49853  , p_source_3            IN NUMBER
49854 --Transaction Unit of Measure Code
49855  , p_source_4            IN VARCHAR2
49856 --Inventory Transaction Type Description
49857  , p_source_5            IN VARCHAR2
49858 --Product Line Accounting Category Average Cost Variance Account
49859  , p_source_23            IN NUMBER
49860 --DISTRIBUTION_IDENTIFIER
49861  , p_source_84            IN NUMBER
49862 --Distribution Type
49863  , p_source_85            IN VARCHAR2
49864  , p_source_85_meaning    IN VARCHAR2
49865 --Entered Currency Code
49866  , p_source_88            IN VARCHAR2
49867 --Entered Amount
49868  , p_source_91            IN NUMBER
49869 --Currency Conversion Date
49870  , p_source_92            IN DATE
49871 --Currency Conversion Rate
49872  , p_source_93            IN NUMBER
49873 --Currency Conversion Type
49874  , p_source_94            IN VARCHAR2
49875 --Accounted Amount
49876  , p_source_95            IN NUMBER
49877 --Accounting Line Type
49878  , p_source_97            IN NUMBER
49879 )
49880 IS
49881 
49882 l_component_type              VARCHAR2(80);
49883 l_component_code              VARCHAR2(30);
49884 l_component_type_code         VARCHAR2(1);
49885 l_component_appl_id           INTEGER;
49886 l_amb_context_code            VARCHAR2(30);
49887 l_entity_code                 VARCHAR2(30);
49888 l_event_class_code            VARCHAR2(30);
49889 l_ae_header_id                NUMBER;
49890 l_event_type_code             VARCHAR2(30);
49891 l_line_definition_code        VARCHAR2(30);
49892 l_line_definition_owner_code  VARCHAR2(1);
49893 --
49894 -- adr variables
49895 l_segment                     VARCHAR2(30);
49896 l_ccid                        NUMBER;
49897 l_adr_transaction_coa_id      NUMBER;
49898 l_adr_accounting_coa_id       NUMBER;
49899 l_adr_flexfield_segment_code  VARCHAR2(30);
49900 l_adr_flex_value_set_id       NUMBER;
49901 l_adr_value_type_code         VARCHAR2(30);
49902 l_adr_value_combination_id    NUMBER;
49903 l_adr_value_segment_code      VARCHAR2(30);
49904 
49905 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49906 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49907 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49908 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49909 
49910 -- 4262811 Variables ------------------------------------------------------------------------------------------
49911 l_entered_amt_idx             NUMBER;
49912 l_accted_amt_idx              NUMBER;
49913 l_acc_rev_flag                VARCHAR2(1);
49914 l_accrual_line_num            NUMBER;
49915 l_tmp_amt                     NUMBER;
49916 l_acc_rev_natural_side_code   VARCHAR2(1);
49917 
49918 l_num_entries                 NUMBER;
49919 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49920 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49921 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49922 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49923 l_recog_line_1                NUMBER;
49924 l_recog_line_2                NUMBER;
49925 
49926 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49927 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49928 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49929 
49930 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49931 
49932 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49933 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49934 
49935 ---------------------------------------------------------------------------------------------------------------
49936 
49937 
49938 --
49939 -- bulk performance
49940 --
49941 l_balance_type_code           VARCHAR2(1);
49942 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49943 l_log_module                  VARCHAR2(240);
49944 
49945 --
49946 -- Upgrade strategy
49947 --
49948 l_actual_upg_option           VARCHAR2(1);
49949 l_enc_upg_option           VARCHAR2(1);
49950 
49951 --
49952 BEGIN
49953 --
49954 IF g_log_enabled THEN
49955       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
49956 END IF;
49957 --
49958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49959 
49960       trace
49961          (p_msg      => 'BEGIN of AcctLineType_113'
49962          ,p_level    => C_LEVEL_PROCEDURE
49963          ,p_module   => l_log_module);
49964 
49965 END IF;
49966 --
49967 l_component_type             := 'AMB_JLT';
49968 l_component_code             := 'COST_VARIANCE';
49969 l_component_type_code        := 'S';
49970 l_component_appl_id          :=  707;
49971 l_amb_context_code           := 'DEFAULT';
49972 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
49973 l_event_class_code           := 'USER_DEFINE';
49974 l_event_type_code            := 'USUB_TXFR';
49975 l_line_definition_owner_code := 'S';
49976 l_line_definition_code       := 'PI_INTRAORG_TXFR';
49977 --
49978 l_balance_type_code          := 'A';
49979 l_segment                     := NULL;
49980 l_ccid                        := NULL;
49981 l_adr_transaction_coa_id      := NULL;
49982 l_adr_accounting_coa_id       := NULL;
49983 l_adr_flexfield_segment_code  := NULL;
49984 l_adr_flex_value_set_id       := NULL;
49985 l_adr_value_type_code         := NULL;
49986 l_adr_value_combination_id    := NULL;
49987 l_adr_value_segment_code      := NULL;
49988 
49989 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49990 l_bflow_class_code           := '';    -- 4219869 Business Flow
49991 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49992 l_budgetary_control_flag     := 'N';
49993 
49994 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49995 l_bflow_applied_to_amt       := NULL; -- 5132302
49996 l_entered_amt_idx            := NULL;          -- 4262811
49997 l_accted_amt_idx             := NULL;          -- 4262811
49998 l_acc_rev_flag               := NULL;          -- 4262811
49999 l_accrual_line_num           := NULL;          -- 4262811
50000 l_tmp_amt                    := NULL;          -- 4262811
50001 --
50002  
50003 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50004     l_balance_type_code <> 'B' THEN
50005 IF NVL(p_source_97,9E125) =  13
50006  THEN 
50007 
50008    --
50009    XLA_AE_LINES_PKG.SetNewLine;
50010 
50011    p_balance_type_code          := l_balance_type_code;
50012    -- set the flag so later we will know whether the gain loss line needs to be created
50013    
50014    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50015      p_actual_flag :='A';
50016    END IF;
50017 
50018    --
50019    -- bulk performance
50020    --
50021    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50022                                       p_header_num   => 0); -- 4262811
50023    --
50024    -- set accounting line options
50025    --
50026    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50027            p_natural_side_code          => 'D'
50028          , p_gain_or_loss_flag          => 'N'
50029          , p_gl_transfer_mode_code      => 'S'
50030          , p_acct_entry_type_code       => 'A'
50031          , p_switch_side_flag           => 'Y'
50032          , p_merge_duplicate_code       => 'N'
50033          );
50034    --
50035    l_acc_rev_natural_side_code := 'C';  -- 4262811
50036    -- 
50037    --
50038    -- set accounting line type info
50039    --
50040    xla_ae_lines_pkg.SetAcctLineType
50041       (p_component_type             => l_component_type
50042       ,p_event_type_code            => l_event_type_code
50043       ,p_line_definition_owner_code => l_line_definition_owner_code
50044       ,p_line_definition_code       => l_line_definition_code
50045       ,p_accounting_line_code       => l_component_code
50046       ,p_accounting_line_type_code  => l_component_type_code
50047       ,p_accounting_line_appl_id    => l_component_appl_id
50048       ,p_amb_context_code           => l_amb_context_code
50049       ,p_entity_code                => l_entity_code
50050       ,p_event_class_code           => l_event_class_code);
50051    --
50052    -- set accounting class
50053    --
50054    xla_ae_lines_pkg.SetAcctClass(
50055            p_accounting_class_code  => 'COST_VARIANCE'
50056          , p_ae_header_id           => l_ae_header_id
50057          );
50058 
50059    --
50060    -- set rounding class
50061    --
50062    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50063                       'COST_VARIANCE';
50064 
50065    --
50066    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50067    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50068    --
50069    -- bulk performance
50070    --
50071    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50072 
50073    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50074       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50075 
50076    -- 4955764
50077    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50078       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50079 
50080    -- 4458381 Public Sector Enh
50081    
50082    --
50083    -- set accounting attributes for the line type
50084    --
50085    l_entered_amt_idx := 3;
50086    l_accted_amt_idx  := 8;
50087    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50088    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50089    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
50090    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50091    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
50092    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50093    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
50094    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50095    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
50096    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50097    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
50098    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50099    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
50100    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50101    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
50102    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50103    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
50104 
50105    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50106    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50107 
50108    ---------------------------------------------------------------------------------------------------------------
50109    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50110    ---------------------------------------------------------------------------------------------------------------
50111    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50112 
50113    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50114    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50115 
50116    IF xla_accounting_cache_pkg.GetValueChar
50117          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50118          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50119    AND l_bflow_method_code = 'PRIOR_ENTRY'
50120 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50121    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50122          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50123        )
50124    THEN
50125          xla_ae_lines_pkg.BflowUpgEntry
50126            (p_business_method_code    => l_bflow_method_code
50127            ,p_business_class_code     => l_bflow_class_code
50128            ,p_balance_type            => l_balance_type_code);
50129    ELSE
50130       NULL;
50131 -- No business flow processing for business flow method of NONE.
50132    END IF;
50133 
50134    --
50135    -- call analytical criteria
50136    --
50137    
50138    --
50139    -- call description
50140    --
50141    
50142 xla_ae_lines_pkg.SetLineDescription(
50143    p_ae_header_id => l_ae_header_id
50144   ,p_description  => Description_1 (
50145      p_application_id         => p_application_id
50146    , p_ae_header_id           => l_ae_header_id 
50147 , p_source_1 => p_source_1
50148 , p_source_2 => p_source_2
50149 , p_source_3 => p_source_3
50150 , p_source_4 => p_source_4
50151 , p_source_5 => p_source_5
50152    )
50153 );
50154 
50155 
50156    --
50157    -- call ADRs
50158    -- Bug 4922099
50159    --
50160    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50161         (NVL(l_actual_upg_option, 'N') = 'O') OR
50162         (NVL(l_enc_upg_option, 'N') = 'O')
50163       )
50164    THEN
50165    NULL;
50166    --
50167    --
50168    
50169   l_ccid := AcctDerRule_12(
50170            p_application_id           => p_application_id
50171          , p_ae_header_id             => l_ae_header_id 
50172 , p_source_23 => p_source_23
50173          , x_transaction_coa_id       => l_adr_transaction_coa_id
50174          , x_accounting_coa_id        => l_adr_accounting_coa_id
50175          , x_value_type_code          => l_adr_value_type_code
50176          , p_side                     => 'NA'
50177    );
50178 
50179    xla_ae_lines_pkg.set_ccid(
50180     p_code_combination_id          => l_ccid
50181   , p_value_type_code              => l_adr_value_type_code
50182   , p_transaction_coa_id           => l_adr_transaction_coa_id
50183   , p_accounting_coa_id            => l_adr_accounting_coa_id
50184   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
50185   , p_adr_type_code                => 'S'
50186   , p_component_type               => l_component_type
50187   , p_component_code               => l_component_code
50188   , p_component_type_code          => l_component_type_code
50189   , p_component_appl_id            => l_component_appl_id
50190   , p_amb_context_code             => l_amb_context_code
50191   , p_side                         => 'NA'
50192   );
50193 
50194 
50195    --
50196    --
50197    END IF;
50198    --
50199    -- Bug 4922099
50200    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50201           (NVL(l_enc_upg_option, 'N') = 'O')
50202         ) AND
50203         (l_bflow_method_code = 'PRIOR_ENTRY')
50204       )
50205    THEN
50206       IF
50207       --
50208       1 = 2
50209       --
50210       THEN
50211       xla_accounting_err_pkg.build_message
50212                                     (p_appli_s_name            => 'XLA'
50213                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50214                                     ,p_token_1                 => 'LINE_NUMBER'
50215                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50216                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50217                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50218                                                                              l_component_type
50219                                                                             ,l_component_code
50220                                                                             ,l_component_type_code
50221                                                                             ,l_component_appl_id
50222                                                                             ,l_amb_context_code
50223                                                                             ,l_entity_code
50224                                                                             ,l_event_class_code
50225                                                                            )
50226                                     ,p_token_3                 => 'OWNER'
50227                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50228                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50229                                                                           ,p_lookup_code    => l_component_type_code
50230                                                                          )
50231                                     ,p_token_4                 => 'PRODUCT_NAME'
50232                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50233                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50234                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50235                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50236                                     ,p_ae_header_id            =>  NULL
50237                                        );
50238 
50239         IF (C_LEVEL_ERROR>= g_log_level) THEN
50240                  trace
50241                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50242                       ,p_level    => C_LEVEL_ERROR
50243                       ,p_module   => l_log_module);
50244         END IF;
50245       END IF;
50246    END IF;
50247    --
50248    --
50249    ------------------------------------------------------------------------------------------------
50250    -- 4219869 Business Flow
50251    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50252    -- Prior Entry.  Currently, the following code is always generated.
50253    ------------------------------------------------------------------------------------------------
50254    XLA_AE_LINES_PKG.ValidateCurrentLine;
50255 
50256    ------------------------------------------------------------------------------------
50257    -- 4219869 Business Flow
50258    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50259    ------------------------------------------------------------------------------------
50260    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50261 
50262    ----------------------------------------------------------------------------------
50263    -- 4219869 Business Flow
50264    -- Update journal entry status -- Need to generate this within IF <condition>
50265    ----------------------------------------------------------------------------------
50266    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50267          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50268          ,p_balance_type_code => l_balance_type_code
50269          );
50270 
50271    -------------------------------------------------------------------------------------------
50272    -- 4262811 - Generate the Accrual Reversal lines
50273    -------------------------------------------------------------------------------------------
50274    BEGIN
50275       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50276                               (g_array_event(p_event_id).array_value_num('header_index'));
50277       IF l_acc_rev_flag IS NULL THEN
50278          l_acc_rev_flag := 'N';
50279       END IF;
50280    EXCEPTION
50281       WHEN OTHERS THEN
50282          l_acc_rev_flag := 'N';
50283    END;
50284    --
50285    IF (l_acc_rev_flag = 'Y') THEN
50286 
50287        -- 4645092  ------------------------------------------------------------------------------
50288        -- To allow MPA report to determine if it should generate report process
50289        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50290        ------------------------------------------------------------------------------------------
50291 
50292        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50293        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50294    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50295    -- call ADRs
50296    -- Bug 4922099
50297    --
50298    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50299         (NVL(l_actual_upg_option, 'N') = 'O') OR
50300         (NVL(l_enc_upg_option, 'N') = 'O')
50301       )
50302    THEN
50303    NULL;
50304    --
50305    --
50306    
50307   l_ccid := AcctDerRule_12(
50308            p_application_id           => p_application_id
50309          , p_ae_header_id             => l_ae_header_id 
50310 , p_source_23 => p_source_23
50311          , x_transaction_coa_id       => l_adr_transaction_coa_id
50312          , x_accounting_coa_id        => l_adr_accounting_coa_id
50313          , x_value_type_code          => l_adr_value_type_code
50314          , p_side                     => 'NA'
50315    );
50316 
50317    xla_ae_lines_pkg.set_ccid(
50318     p_code_combination_id          => l_ccid
50319   , p_value_type_code              => l_adr_value_type_code
50320   , p_transaction_coa_id           => l_adr_transaction_coa_id
50321   , p_accounting_coa_id            => l_adr_accounting_coa_id
50322   , p_adr_code                     => 'PI_CATEGORY_ACV_ADR'
50323   , p_adr_type_code                => 'S'
50324   , p_component_type               => l_component_type
50325   , p_component_code               => l_component_code
50326   , p_component_type_code          => l_component_type_code
50327   , p_component_appl_id            => l_component_appl_id
50328   , p_amb_context_code             => l_amb_context_code
50329   , p_side                         => 'NA'
50330   );
50331 
50332 
50333    --
50334    --
50335    END IF;
50336 
50337        --
50338        -- Update the line information that should be overwritten
50339        --
50340        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50341                                          p_header_num   => 1);
50342        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50343 
50344        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50345 
50346        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50347           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50348        END IF;
50349 
50350       --
50351       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50352       --
50353       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50354           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50355       ELSE
50356           ---------------------------------------------------------------------------------------------------
50357           -- 4262811a Switch Sign
50358           ---------------------------------------------------------------------------------------------------
50359           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50360           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50361                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50362           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50363                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50364           -- 5132302
50365           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50366                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50367 
50368       END IF;
50369 
50370       -- 4955764
50371       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50373 
50374 
50375       XLA_AE_LINES_PKG.ValidateCurrentLine;
50376       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50377 
50378       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50379                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50380                ,p_balance_type_code => l_balance_type_code);
50381 
50382    END IF;
50383 
50384    -----------------------------------------------------------------------------------------
50385    -- 4262811 Multiperiod Accounting
50386    -----------------------------------------------------------------------------------------
50387      -- No MPA option is assigned.
50388 
50389 
50390 END IF;
50391 END IF;
50392 --
50393 
50394 --
50395 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50396    trace
50397       (p_msg      => 'END of AcctLineType_113'
50398       ,p_level    => C_LEVEL_PROCEDURE
50399       ,p_module   => l_log_module);
50400 END IF;
50401 --
50402 EXCEPTION
50403   WHEN xla_exceptions_pkg.application_exception THEN
50404       RAISE;
50405   WHEN OTHERS THEN
50406        xla_exceptions_pkg.raise_message
50407            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_113');
50408 END AcctLineType_113;
50409 --
50410 
50411 ---------------------------------------
50412 --
50413 -- PRIVATE FUNCTION
50414 --         AcctLineType_114
50415 --
50416 ---------------------------------------
50417 PROCEDURE AcctLineType_114 (
50418   p_application_id        IN NUMBER
50419  ,p_event_id              IN NUMBER
50420  ,p_calculate_acctd_flag  IN VARCHAR2
50421  ,p_calculate_g_l_flag    IN VARCHAR2
50422  ,p_actual_flag           IN OUT VARCHAR2
50423  ,p_balance_type_code     OUT VARCHAR2
50424  ,p_gain_or_loss_ref      OUT VARCHAR2
50425  
50426 --TRANSACTION_ID
50427  , p_source_1            IN NUMBER
50428 --Item Concatenated Segments
50429  , p_source_2            IN VARCHAR2
50430 --Transaction Quantity
50431  , p_source_3            IN NUMBER
50432 --Transaction Unit of Measure Code
50433  , p_source_4            IN VARCHAR2
50434 --Inventory Transaction Type Description
50435  , p_source_5            IN VARCHAR2
50436 --Cost Management Default Account
50437  , p_source_11            IN NUMBER
50438 --DISTRIBUTION_IDENTIFIER
50439  , p_source_84            IN NUMBER
50440 --Distribution Type
50441  , p_source_85            IN VARCHAR2
50442  , p_source_85_meaning    IN VARCHAR2
50443 --Entered Currency Code
50444  , p_source_88            IN VARCHAR2
50445 --Entered Amount
50446  , p_source_91            IN NUMBER
50447 --Currency Conversion Date
50448  , p_source_92            IN DATE
50449 --Currency Conversion Rate
50450  , p_source_93            IN NUMBER
50451 --Currency Conversion Type
50452  , p_source_94            IN VARCHAR2
50453 --Accounted Amount
50454  , p_source_95            IN NUMBER
50455 --Accounting Line Type
50456  , p_source_97            IN NUMBER
50457 )
50458 IS
50459 
50460 l_component_type              VARCHAR2(80);
50461 l_component_code              VARCHAR2(30);
50462 l_component_type_code         VARCHAR2(1);
50463 l_component_appl_id           INTEGER;
50464 l_amb_context_code            VARCHAR2(30);
50465 l_entity_code                 VARCHAR2(30);
50466 l_event_class_code            VARCHAR2(30);
50467 l_ae_header_id                NUMBER;
50468 l_event_type_code             VARCHAR2(30);
50469 l_line_definition_code        VARCHAR2(30);
50470 l_line_definition_owner_code  VARCHAR2(1);
50471 --
50472 -- adr variables
50473 l_segment                     VARCHAR2(30);
50474 l_ccid                        NUMBER;
50475 l_adr_transaction_coa_id      NUMBER;
50476 l_adr_accounting_coa_id       NUMBER;
50477 l_adr_flexfield_segment_code  VARCHAR2(30);
50478 l_adr_flex_value_set_id       NUMBER;
50479 l_adr_value_type_code         VARCHAR2(30);
50480 l_adr_value_combination_id    NUMBER;
50481 l_adr_value_segment_code      VARCHAR2(30);
50482 
50483 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50484 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50485 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50486 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50487 
50488 -- 4262811 Variables ------------------------------------------------------------------------------------------
50489 l_entered_amt_idx             NUMBER;
50490 l_accted_amt_idx              NUMBER;
50491 l_acc_rev_flag                VARCHAR2(1);
50492 l_accrual_line_num            NUMBER;
50493 l_tmp_amt                     NUMBER;
50494 l_acc_rev_natural_side_code   VARCHAR2(1);
50495 
50496 l_num_entries                 NUMBER;
50497 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50498 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50499 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50500 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50501 l_recog_line_1                NUMBER;
50502 l_recog_line_2                NUMBER;
50503 
50504 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50505 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50506 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50507 
50508 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50509 
50510 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50511 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50512 
50513 ---------------------------------------------------------------------------------------------------------------
50514 
50515 
50516 --
50517 -- bulk performance
50518 --
50519 l_balance_type_code           VARCHAR2(1);
50520 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50521 l_log_module                  VARCHAR2(240);
50522 
50523 --
50524 -- Upgrade strategy
50525 --
50526 l_actual_upg_option           VARCHAR2(1);
50527 l_enc_upg_option           VARCHAR2(1);
50528 
50529 --
50530 BEGIN
50531 --
50532 IF g_log_enabled THEN
50533       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
50534 END IF;
50535 --
50536 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50537 
50538       trace
50539          (p_msg      => 'BEGIN of AcctLineType_114'
50540          ,p_level    => C_LEVEL_PROCEDURE
50541          ,p_module   => l_log_module);
50542 
50543 END IF;
50544 --
50545 l_component_type             := 'AMB_JLT';
50546 l_component_code             := 'COST_VARIANCE';
50547 l_component_type_code        := 'S';
50548 l_component_appl_id          :=  707;
50549 l_amb_context_code           := 'DEFAULT';
50550 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
50551 l_event_class_code           := 'WIP_MTL';
50552 l_event_type_code            := 'WIP_NEG_COMP_RETURN';
50553 l_line_definition_owner_code := 'S';
50554 l_line_definition_code       := 'PI_WIP_NEG_COMP_RETURN';
50555 --
50556 l_balance_type_code          := 'A';
50557 l_segment                     := NULL;
50558 l_ccid                        := NULL;
50559 l_adr_transaction_coa_id      := NULL;
50560 l_adr_accounting_coa_id       := NULL;
50561 l_adr_flexfield_segment_code  := NULL;
50562 l_adr_flex_value_set_id       := NULL;
50563 l_adr_value_type_code         := NULL;
50564 l_adr_value_combination_id    := NULL;
50565 l_adr_value_segment_code      := NULL;
50566 
50567 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50568 l_bflow_class_code           := '';    -- 4219869 Business Flow
50569 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50570 l_budgetary_control_flag     := 'N';
50571 
50572 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50573 l_bflow_applied_to_amt       := NULL; -- 5132302
50574 l_entered_amt_idx            := NULL;          -- 4262811
50575 l_accted_amt_idx             := NULL;          -- 4262811
50576 l_acc_rev_flag               := NULL;          -- 4262811
50577 l_accrual_line_num           := NULL;          -- 4262811
50578 l_tmp_amt                    := NULL;          -- 4262811
50579 --
50580  
50581 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50582     l_balance_type_code <> 'B' THEN
50583 IF NVL(p_source_97,9E125) =  13
50584  THEN 
50585 
50586    --
50587    XLA_AE_LINES_PKG.SetNewLine;
50588 
50589    p_balance_type_code          := l_balance_type_code;
50590    -- set the flag so later we will know whether the gain loss line needs to be created
50591    
50592    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50593      p_actual_flag :='A';
50594    END IF;
50595 
50596    --
50597    -- bulk performance
50598    --
50599    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50600                                       p_header_num   => 0); -- 4262811
50601    --
50602    -- set accounting line options
50603    --
50604    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50605            p_natural_side_code          => 'D'
50606          , p_gain_or_loss_flag          => 'N'
50607          , p_gl_transfer_mode_code      => 'S'
50608          , p_acct_entry_type_code       => 'A'
50609          , p_switch_side_flag           => 'Y'
50610          , p_merge_duplicate_code       => 'N'
50611          );
50612    --
50613    l_acc_rev_natural_side_code := 'C';  -- 4262811
50614    -- 
50615    --
50616    -- set accounting line type info
50617    --
50618    xla_ae_lines_pkg.SetAcctLineType
50619       (p_component_type             => l_component_type
50620       ,p_event_type_code            => l_event_type_code
50621       ,p_line_definition_owner_code => l_line_definition_owner_code
50622       ,p_line_definition_code       => l_line_definition_code
50623       ,p_accounting_line_code       => l_component_code
50624       ,p_accounting_line_type_code  => l_component_type_code
50625       ,p_accounting_line_appl_id    => l_component_appl_id
50626       ,p_amb_context_code           => l_amb_context_code
50627       ,p_entity_code                => l_entity_code
50628       ,p_event_class_code           => l_event_class_code);
50629    --
50630    -- set accounting class
50631    --
50632    xla_ae_lines_pkg.SetAcctClass(
50633            p_accounting_class_code  => 'COST_VARIANCE'
50634          , p_ae_header_id           => l_ae_header_id
50635          );
50636 
50637    --
50638    -- set rounding class
50639    --
50640    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50641                       'COST_VARIANCE';
50642 
50643    --
50644    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50645    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50646    --
50647    -- bulk performance
50648    --
50649    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50650 
50651    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50652       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50653 
50654    -- 4955764
50655    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50656       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50657 
50658    -- 4458381 Public Sector Enh
50659    
50660    --
50661    -- set accounting attributes for the line type
50662    --
50663    l_entered_amt_idx := 3;
50664    l_accted_amt_idx  := 8;
50665    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50666    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50667    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
50668    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50669    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
50670    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50671    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
50672    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50673    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
50674    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50675    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
50676    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50677    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
50678    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50679    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
50680    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50681    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
50682 
50683    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50684    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50685 
50686    ---------------------------------------------------------------------------------------------------------------
50687    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50688    ---------------------------------------------------------------------------------------------------------------
50689    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50690 
50691    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50692    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50693 
50694    IF xla_accounting_cache_pkg.GetValueChar
50695          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50696          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50697    AND l_bflow_method_code = 'PRIOR_ENTRY'
50698 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50699    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50700          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50701        )
50702    THEN
50703          xla_ae_lines_pkg.BflowUpgEntry
50704            (p_business_method_code    => l_bflow_method_code
50705            ,p_business_class_code     => l_bflow_class_code
50706            ,p_balance_type            => l_balance_type_code);
50707    ELSE
50708       NULL;
50709 -- No business flow processing for business flow method of NONE.
50710    END IF;
50711 
50712    --
50713    -- call analytical criteria
50714    --
50715    
50716    --
50717    -- call description
50718    --
50719    
50720 xla_ae_lines_pkg.SetLineDescription(
50721    p_ae_header_id => l_ae_header_id
50722   ,p_description  => Description_1 (
50723      p_application_id         => p_application_id
50724    , p_ae_header_id           => l_ae_header_id 
50725 , p_source_1 => p_source_1
50726 , p_source_2 => p_source_2
50727 , p_source_3 => p_source_3
50728 , p_source_4 => p_source_4
50729 , p_source_5 => p_source_5
50730    )
50731 );
50732 
50733 
50734    --
50735    -- call ADRs
50736    -- Bug 4922099
50737    --
50738    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50739         (NVL(l_actual_upg_option, 'N') = 'O') OR
50740         (NVL(l_enc_upg_option, 'N') = 'O')
50741       )
50742    THEN
50743    NULL;
50744    --
50745    --
50746    
50747   l_ccid := AcctDerRule_6(
50748            p_application_id           => p_application_id
50749          , p_ae_header_id             => l_ae_header_id 
50750 , p_source_11 => p_source_11
50751          , x_transaction_coa_id       => l_adr_transaction_coa_id
50752          , x_accounting_coa_id        => l_adr_accounting_coa_id
50753          , x_value_type_code          => l_adr_value_type_code
50754          , p_side                     => 'NA'
50755    );
50756 
50757    xla_ae_lines_pkg.set_ccid(
50758     p_code_combination_id          => l_ccid
50759   , p_value_type_code              => l_adr_value_type_code
50760   , p_transaction_coa_id           => l_adr_transaction_coa_id
50761   , p_accounting_coa_id            => l_adr_accounting_coa_id
50762   , p_adr_code                     => 'CST_DEFAULT'
50763   , p_adr_type_code                => 'S'
50764   , p_component_type               => l_component_type
50765   , p_component_code               => l_component_code
50766   , p_component_type_code          => l_component_type_code
50767   , p_component_appl_id            => l_component_appl_id
50768   , p_amb_context_code             => l_amb_context_code
50769   , p_side                         => 'NA'
50770   );
50771 
50772 
50773    --
50774    --
50775    END IF;
50776    --
50777    -- Bug 4922099
50778    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50779           (NVL(l_enc_upg_option, 'N') = 'O')
50780         ) AND
50781         (l_bflow_method_code = 'PRIOR_ENTRY')
50782       )
50783    THEN
50784       IF
50785       --
50786       1 = 2
50787       --
50788       THEN
50789       xla_accounting_err_pkg.build_message
50790                                     (p_appli_s_name            => 'XLA'
50791                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50792                                     ,p_token_1                 => 'LINE_NUMBER'
50793                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50794                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50795                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50796                                                                              l_component_type
50797                                                                             ,l_component_code
50798                                                                             ,l_component_type_code
50799                                                                             ,l_component_appl_id
50800                                                                             ,l_amb_context_code
50801                                                                             ,l_entity_code
50802                                                                             ,l_event_class_code
50803                                                                            )
50804                                     ,p_token_3                 => 'OWNER'
50805                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50806                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50807                                                                           ,p_lookup_code    => l_component_type_code
50808                                                                          )
50809                                     ,p_token_4                 => 'PRODUCT_NAME'
50810                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50811                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50812                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50813                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50814                                     ,p_ae_header_id            =>  NULL
50815                                        );
50816 
50817         IF (C_LEVEL_ERROR>= g_log_level) THEN
50818                  trace
50819                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50820                       ,p_level    => C_LEVEL_ERROR
50821                       ,p_module   => l_log_module);
50822         END IF;
50823       END IF;
50824    END IF;
50825    --
50826    --
50827    ------------------------------------------------------------------------------------------------
50828    -- 4219869 Business Flow
50829    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50830    -- Prior Entry.  Currently, the following code is always generated.
50831    ------------------------------------------------------------------------------------------------
50832    XLA_AE_LINES_PKG.ValidateCurrentLine;
50833 
50834    ------------------------------------------------------------------------------------
50835    -- 4219869 Business Flow
50836    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50837    ------------------------------------------------------------------------------------
50838    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50839 
50840    ----------------------------------------------------------------------------------
50841    -- 4219869 Business Flow
50842    -- Update journal entry status -- Need to generate this within IF <condition>
50843    ----------------------------------------------------------------------------------
50844    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50845          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50846          ,p_balance_type_code => l_balance_type_code
50847          );
50848 
50849    -------------------------------------------------------------------------------------------
50850    -- 4262811 - Generate the Accrual Reversal lines
50851    -------------------------------------------------------------------------------------------
50852    BEGIN
50853       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50854                               (g_array_event(p_event_id).array_value_num('header_index'));
50855       IF l_acc_rev_flag IS NULL THEN
50856          l_acc_rev_flag := 'N';
50857       END IF;
50858    EXCEPTION
50859       WHEN OTHERS THEN
50860          l_acc_rev_flag := 'N';
50861    END;
50862    --
50863    IF (l_acc_rev_flag = 'Y') THEN
50864 
50865        -- 4645092  ------------------------------------------------------------------------------
50866        -- To allow MPA report to determine if it should generate report process
50867        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50868        ------------------------------------------------------------------------------------------
50869 
50870        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50871        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50872    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50873    -- call ADRs
50874    -- Bug 4922099
50875    --
50876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50877         (NVL(l_actual_upg_option, 'N') = 'O') OR
50878         (NVL(l_enc_upg_option, 'N') = 'O')
50879       )
50880    THEN
50881    NULL;
50882    --
50883    --
50884    
50885   l_ccid := AcctDerRule_6(
50886            p_application_id           => p_application_id
50887          , p_ae_header_id             => l_ae_header_id 
50888 , p_source_11 => p_source_11
50889          , x_transaction_coa_id       => l_adr_transaction_coa_id
50890          , x_accounting_coa_id        => l_adr_accounting_coa_id
50891          , x_value_type_code          => l_adr_value_type_code
50892          , p_side                     => 'NA'
50893    );
50894 
50895    xla_ae_lines_pkg.set_ccid(
50896     p_code_combination_id          => l_ccid
50897   , p_value_type_code              => l_adr_value_type_code
50898   , p_transaction_coa_id           => l_adr_transaction_coa_id
50899   , p_accounting_coa_id            => l_adr_accounting_coa_id
50900   , p_adr_code                     => 'CST_DEFAULT'
50901   , p_adr_type_code                => 'S'
50902   , p_component_type               => l_component_type
50903   , p_component_code               => l_component_code
50904   , p_component_type_code          => l_component_type_code
50905   , p_component_appl_id            => l_component_appl_id
50906   , p_amb_context_code             => l_amb_context_code
50907   , p_side                         => 'NA'
50908   );
50909 
50910 
50911    --
50912    --
50913    END IF;
50914 
50915        --
50916        -- Update the line information that should be overwritten
50917        --
50918        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50919                                          p_header_num   => 1);
50920        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50921 
50922        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50923 
50924        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50925           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50926        END IF;
50927 
50928       --
50929       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50930       --
50931       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50932           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50933       ELSE
50934           ---------------------------------------------------------------------------------------------------
50935           -- 4262811a Switch Sign
50936           ---------------------------------------------------------------------------------------------------
50937           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50938           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50939                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50940           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50941                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50942           -- 5132302
50943           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50944                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50945 
50946       END IF;
50947 
50948       -- 4955764
50949       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50951 
50952 
50953       XLA_AE_LINES_PKG.ValidateCurrentLine;
50954       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50955 
50956       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50957                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50958                ,p_balance_type_code => l_balance_type_code);
50959 
50960    END IF;
50961 
50962    -----------------------------------------------------------------------------------------
50963    -- 4262811 Multiperiod Accounting
50964    -----------------------------------------------------------------------------------------
50965      -- No MPA option is assigned.
50966 
50967 
50968 END IF;
50969 END IF;
50970 --
50971 
50972 --
50973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50974    trace
50975       (p_msg      => 'END of AcctLineType_114'
50976       ,p_level    => C_LEVEL_PROCEDURE
50977       ,p_module   => l_log_module);
50978 END IF;
50979 --
50980 EXCEPTION
50981   WHEN xla_exceptions_pkg.application_exception THEN
50982       RAISE;
50983   WHEN OTHERS THEN
50984        xla_exceptions_pkg.raise_message
50985            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_114');
50986 END AcctLineType_114;
50987 --
50988 
50989 ---------------------------------------
50990 --
50991 -- PRIVATE FUNCTION
50992 --         AcctLineType_115
50993 --
50994 ---------------------------------------
50995 PROCEDURE AcctLineType_115 (
50996   p_application_id        IN NUMBER
50997  ,p_event_id              IN NUMBER
50998  ,p_calculate_acctd_flag  IN VARCHAR2
50999  ,p_calculate_g_l_flag    IN VARCHAR2
51000  ,p_actual_flag           IN OUT VARCHAR2
51001  ,p_balance_type_code     OUT VARCHAR2
51002  ,p_gain_or_loss_ref      OUT VARCHAR2
51003  
51004 --TRANSACTION_ID
51005  , p_source_1            IN NUMBER
51006 --Item Concatenated Segments
51007  , p_source_2            IN VARCHAR2
51008 --Transaction Quantity
51009  , p_source_3            IN NUMBER
51010 --Transaction Unit of Measure Code
51011  , p_source_4            IN VARCHAR2
51012 --Inventory Transaction Type Description
51013  , p_source_5            IN VARCHAR2
51014 --Inventory Organization Average Cost Variance Account
51015  , p_source_21            IN NUMBER
51016 --DISTRIBUTION_IDENTIFIER
51017  , p_source_84            IN NUMBER
51018 --Distribution Type
51019  , p_source_85            IN VARCHAR2
51020  , p_source_85_meaning    IN VARCHAR2
51021 --Entered Currency Code
51022  , p_source_88            IN VARCHAR2
51023 --Entered Amount
51024  , p_source_91            IN NUMBER
51025 --Currency Conversion Date
51026  , p_source_92            IN DATE
51027 --Currency Conversion Rate
51028  , p_source_93            IN NUMBER
51029 --Currency Conversion Type
51030  , p_source_94            IN VARCHAR2
51031 --Accounted Amount
51032  , p_source_95            IN NUMBER
51033 --Accounting Line Type
51034  , p_source_97            IN NUMBER
51035 )
51036 IS
51037 
51038 l_component_type              VARCHAR2(80);
51039 l_component_code              VARCHAR2(30);
51040 l_component_type_code         VARCHAR2(1);
51041 l_component_appl_id           INTEGER;
51042 l_amb_context_code            VARCHAR2(30);
51043 l_entity_code                 VARCHAR2(30);
51044 l_event_class_code            VARCHAR2(30);
51045 l_ae_header_id                NUMBER;
51046 l_event_type_code             VARCHAR2(30);
51047 l_line_definition_code        VARCHAR2(30);
51048 l_line_definition_owner_code  VARCHAR2(1);
51049 --
51050 -- adr variables
51051 l_segment                     VARCHAR2(30);
51052 l_ccid                        NUMBER;
51053 l_adr_transaction_coa_id      NUMBER;
51054 l_adr_accounting_coa_id       NUMBER;
51055 l_adr_flexfield_segment_code  VARCHAR2(30);
51056 l_adr_flex_value_set_id       NUMBER;
51057 l_adr_value_type_code         VARCHAR2(30);
51058 l_adr_value_combination_id    NUMBER;
51059 l_adr_value_segment_code      VARCHAR2(30);
51060 
51061 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51062 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51063 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51064 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51065 
51066 -- 4262811 Variables ------------------------------------------------------------------------------------------
51067 l_entered_amt_idx             NUMBER;
51068 l_accted_amt_idx              NUMBER;
51069 l_acc_rev_flag                VARCHAR2(1);
51070 l_accrual_line_num            NUMBER;
51071 l_tmp_amt                     NUMBER;
51072 l_acc_rev_natural_side_code   VARCHAR2(1);
51073 
51074 l_num_entries                 NUMBER;
51075 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51076 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51077 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51078 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51079 l_recog_line_1                NUMBER;
51080 l_recog_line_2                NUMBER;
51081 
51082 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51083 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51084 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51085 
51086 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51087 
51088 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51089 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51090 
51091 ---------------------------------------------------------------------------------------------------------------
51092 
51093 
51094 --
51095 -- bulk performance
51096 --
51097 l_balance_type_code           VARCHAR2(1);
51098 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51099 l_log_module                  VARCHAR2(240);
51100 
51101 --
51102 -- Upgrade strategy
51103 --
51104 l_actual_upg_option           VARCHAR2(1);
51105 l_enc_upg_option           VARCHAR2(1);
51106 
51107 --
51108 BEGIN
51109 --
51110 IF g_log_enabled THEN
51111       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
51112 END IF;
51113 --
51114 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51115 
51116       trace
51117          (p_msg      => 'BEGIN of AcctLineType_115'
51118          ,p_level    => C_LEVEL_PROCEDURE
51119          ,p_module   => l_log_module);
51120 
51121 END IF;
51122 --
51123 l_component_type             := 'AMB_JLT';
51124 l_component_code             := 'COST_VARIANCE';
51125 l_component_type_code        := 'S';
51126 l_component_appl_id          :=  707;
51127 l_amb_context_code           := 'DEFAULT';
51128 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
51129 l_event_class_code           := 'CON_INV_OWNR_TXFR';
51130 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
51131 l_line_definition_owner_code := 'S';
51132 l_line_definition_code       := 'PI_CON_INV_OWNR_TRFR';
51133 --
51134 l_balance_type_code          := 'A';
51135 l_segment                     := NULL;
51136 l_ccid                        := NULL;
51137 l_adr_transaction_coa_id      := NULL;
51138 l_adr_accounting_coa_id       := NULL;
51139 l_adr_flexfield_segment_code  := NULL;
51140 l_adr_flex_value_set_id       := NULL;
51141 l_adr_value_type_code         := NULL;
51142 l_adr_value_combination_id    := NULL;
51143 l_adr_value_segment_code      := NULL;
51144 
51145 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51146 l_bflow_class_code           := '';    -- 4219869 Business Flow
51147 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51148 l_budgetary_control_flag     := 'N';
51149 
51150 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51151 l_bflow_applied_to_amt       := NULL; -- 5132302
51152 l_entered_amt_idx            := NULL;          -- 4262811
51153 l_accted_amt_idx             := NULL;          -- 4262811
51154 l_acc_rev_flag               := NULL;          -- 4262811
51155 l_accrual_line_num           := NULL;          -- 4262811
51156 l_tmp_amt                    := NULL;          -- 4262811
51157 --
51158  
51159 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51160     l_balance_type_code <> 'B' THEN
51161 IF NVL(p_source_97,9E125) =  13
51162  THEN 
51163 
51164    --
51165    XLA_AE_LINES_PKG.SetNewLine;
51166 
51167    p_balance_type_code          := l_balance_type_code;
51168    -- set the flag so later we will know whether the gain loss line needs to be created
51169    
51170    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51171      p_actual_flag :='A';
51172    END IF;
51173 
51174    --
51175    -- bulk performance
51176    --
51177    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51178                                       p_header_num   => 0); -- 4262811
51179    --
51180    -- set accounting line options
51181    --
51182    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51183            p_natural_side_code          => 'D'
51184          , p_gain_or_loss_flag          => 'N'
51185          , p_gl_transfer_mode_code      => 'S'
51186          , p_acct_entry_type_code       => 'A'
51187          , p_switch_side_flag           => 'Y'
51188          , p_merge_duplicate_code       => 'N'
51189          );
51190    --
51191    l_acc_rev_natural_side_code := 'C';  -- 4262811
51192    -- 
51193    --
51194    -- set accounting line type info
51195    --
51196    xla_ae_lines_pkg.SetAcctLineType
51197       (p_component_type             => l_component_type
51198       ,p_event_type_code            => l_event_type_code
51199       ,p_line_definition_owner_code => l_line_definition_owner_code
51200       ,p_line_definition_code       => l_line_definition_code
51201       ,p_accounting_line_code       => l_component_code
51202       ,p_accounting_line_type_code  => l_component_type_code
51203       ,p_accounting_line_appl_id    => l_component_appl_id
51204       ,p_amb_context_code           => l_amb_context_code
51205       ,p_entity_code                => l_entity_code
51206       ,p_event_class_code           => l_event_class_code);
51207    --
51208    -- set accounting class
51209    --
51210    xla_ae_lines_pkg.SetAcctClass(
51211            p_accounting_class_code  => 'COST_VARIANCE'
51212          , p_ae_header_id           => l_ae_header_id
51213          );
51214 
51215    --
51216    -- set rounding class
51217    --
51218    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51219                       'COST_VARIANCE';
51220 
51221    --
51222    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51223    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51224    --
51225    -- bulk performance
51226    --
51227    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51228 
51229    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51230       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51231 
51232    -- 4955764
51233    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51234       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51235 
51236    -- 4458381 Public Sector Enh
51237    
51238    --
51239    -- set accounting attributes for the line type
51240    --
51241    l_entered_amt_idx := 3;
51242    l_accted_amt_idx  := 8;
51243    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51244    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51245    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
51246    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51247    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
51248    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51249    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
51250    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51251    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
51252    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51253    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
51254    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51255    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
51256    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51257    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
51258    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51259    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
51260 
51261    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51262    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51263 
51264    ---------------------------------------------------------------------------------------------------------------
51265    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51266    ---------------------------------------------------------------------------------------------------------------
51267    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51268 
51269    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51270    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51271 
51272    IF xla_accounting_cache_pkg.GetValueChar
51273          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51274          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51275    AND l_bflow_method_code = 'PRIOR_ENTRY'
51276 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51277    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51278          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51279        )
51280    THEN
51281          xla_ae_lines_pkg.BflowUpgEntry
51282            (p_business_method_code    => l_bflow_method_code
51283            ,p_business_class_code     => l_bflow_class_code
51284            ,p_balance_type            => l_balance_type_code);
51285    ELSE
51286       NULL;
51287 -- No business flow processing for business flow method of NONE.
51288    END IF;
51289 
51290    --
51291    -- call analytical criteria
51292    --
51293    
51294    --
51295    -- call description
51296    --
51297    
51298 xla_ae_lines_pkg.SetLineDescription(
51299    p_ae_header_id => l_ae_header_id
51300   ,p_description  => Description_1 (
51301      p_application_id         => p_application_id
51302    , p_ae_header_id           => l_ae_header_id 
51303 , p_source_1 => p_source_1
51304 , p_source_2 => p_source_2
51305 , p_source_3 => p_source_3
51306 , p_source_4 => p_source_4
51307 , p_source_5 => p_source_5
51308    )
51309 );
51310 
51311 
51312    --
51313    -- call ADRs
51314    -- Bug 4922099
51315    --
51316    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51317         (NVL(l_actual_upg_option, 'N') = 'O') OR
51318         (NVL(l_enc_upg_option, 'N') = 'O')
51319       )
51320    THEN
51321    NULL;
51322    --
51323    --
51324    
51325   l_ccid := AcctDerRule_10(
51326            p_application_id           => p_application_id
51327          , p_ae_header_id             => l_ae_header_id 
51328 , p_source_21 => p_source_21
51329          , x_transaction_coa_id       => l_adr_transaction_coa_id
51330          , x_accounting_coa_id        => l_adr_accounting_coa_id
51331          , x_value_type_code          => l_adr_value_type_code
51332          , p_side                     => 'NA'
51333    );
51334 
51335    xla_ae_lines_pkg.set_ccid(
51336     p_code_combination_id          => l_ccid
51337   , p_value_type_code              => l_adr_value_type_code
51338   , p_transaction_coa_id           => l_adr_transaction_coa_id
51339   , p_accounting_coa_id            => l_adr_accounting_coa_id
51340   , p_adr_code                     => 'PI_AVG_CST_VARIANCE'
51341   , p_adr_type_code                => 'S'
51342   , p_component_type               => l_component_type
51343   , p_component_code               => l_component_code
51344   , p_component_type_code          => l_component_type_code
51345   , p_component_appl_id            => l_component_appl_id
51346   , p_amb_context_code             => l_amb_context_code
51347   , p_side                         => 'NA'
51348   );
51349 
51350 
51351    --
51352    --
51353    END IF;
51354    --
51355    -- Bug 4922099
51356    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51357           (NVL(l_enc_upg_option, 'N') = 'O')
51358         ) AND
51359         (l_bflow_method_code = 'PRIOR_ENTRY')
51360       )
51361    THEN
51362       IF
51363       --
51364       1 = 2
51365       --
51366       THEN
51367       xla_accounting_err_pkg.build_message
51368                                     (p_appli_s_name            => 'XLA'
51369                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51370                                     ,p_token_1                 => 'LINE_NUMBER'
51371                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51372                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51373                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51374                                                                              l_component_type
51375                                                                             ,l_component_code
51376                                                                             ,l_component_type_code
51377                                                                             ,l_component_appl_id
51378                                                                             ,l_amb_context_code
51379                                                                             ,l_entity_code
51380                                                                             ,l_event_class_code
51381                                                                            )
51382                                     ,p_token_3                 => 'OWNER'
51383                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51384                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51385                                                                           ,p_lookup_code    => l_component_type_code
51386                                                                          )
51387                                     ,p_token_4                 => 'PRODUCT_NAME'
51388                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51389                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51390                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51391                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51392                                     ,p_ae_header_id            =>  NULL
51393                                        );
51394 
51395         IF (C_LEVEL_ERROR>= g_log_level) THEN
51396                  trace
51397                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51398                       ,p_level    => C_LEVEL_ERROR
51399                       ,p_module   => l_log_module);
51400         END IF;
51401       END IF;
51402    END IF;
51403    --
51404    --
51405    ------------------------------------------------------------------------------------------------
51406    -- 4219869 Business Flow
51407    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51408    -- Prior Entry.  Currently, the following code is always generated.
51409    ------------------------------------------------------------------------------------------------
51410    XLA_AE_LINES_PKG.ValidateCurrentLine;
51411 
51412    ------------------------------------------------------------------------------------
51413    -- 4219869 Business Flow
51414    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51415    ------------------------------------------------------------------------------------
51416    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51417 
51418    ----------------------------------------------------------------------------------
51419    -- 4219869 Business Flow
51420    -- Update journal entry status -- Need to generate this within IF <condition>
51421    ----------------------------------------------------------------------------------
51422    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51423          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51424          ,p_balance_type_code => l_balance_type_code
51425          );
51426 
51427    -------------------------------------------------------------------------------------------
51428    -- 4262811 - Generate the Accrual Reversal lines
51429    -------------------------------------------------------------------------------------------
51430    BEGIN
51431       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51432                               (g_array_event(p_event_id).array_value_num('header_index'));
51433       IF l_acc_rev_flag IS NULL THEN
51434          l_acc_rev_flag := 'N';
51435       END IF;
51436    EXCEPTION
51437       WHEN OTHERS THEN
51438          l_acc_rev_flag := 'N';
51439    END;
51440    --
51441    IF (l_acc_rev_flag = 'Y') THEN
51442 
51443        -- 4645092  ------------------------------------------------------------------------------
51444        -- To allow MPA report to determine if it should generate report process
51445        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51446        ------------------------------------------------------------------------------------------
51447 
51448        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51449        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51450    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
51451    -- call ADRs
51452    -- Bug 4922099
51453    --
51454    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51455         (NVL(l_actual_upg_option, 'N') = 'O') OR
51456         (NVL(l_enc_upg_option, 'N') = 'O')
51457       )
51458    THEN
51459    NULL;
51460    --
51461    --
51462    
51463   l_ccid := AcctDerRule_10(
51464            p_application_id           => p_application_id
51465          , p_ae_header_id             => l_ae_header_id 
51466 , p_source_21 => p_source_21
51467          , x_transaction_coa_id       => l_adr_transaction_coa_id
51468          , x_accounting_coa_id        => l_adr_accounting_coa_id
51469          , x_value_type_code          => l_adr_value_type_code
51470          , p_side                     => 'NA'
51471    );
51472 
51473    xla_ae_lines_pkg.set_ccid(
51474     p_code_combination_id          => l_ccid
51475   , p_value_type_code              => l_adr_value_type_code
51476   , p_transaction_coa_id           => l_adr_transaction_coa_id
51477   , p_accounting_coa_id            => l_adr_accounting_coa_id
51478   , p_adr_code                     => 'PI_AVG_CST_VARIANCE'
51479   , p_adr_type_code                => 'S'
51480   , p_component_type               => l_component_type
51481   , p_component_code               => l_component_code
51482   , p_component_type_code          => l_component_type_code
51483   , p_component_appl_id            => l_component_appl_id
51484   , p_amb_context_code             => l_amb_context_code
51485   , p_side                         => 'NA'
51486   );
51487 
51488 
51489    --
51490    --
51491    END IF;
51492 
51493        --
51494        -- Update the line information that should be overwritten
51495        --
51496        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51497                                          p_header_num   => 1);
51498        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51499 
51500        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51501 
51502        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51503           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51504        END IF;
51505 
51506       --
51507       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51508       --
51509       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51510           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51511       ELSE
51512           ---------------------------------------------------------------------------------------------------
51513           -- 4262811a Switch Sign
51514           ---------------------------------------------------------------------------------------------------
51515           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51516           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51517                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51518           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51519                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51520           -- 5132302
51521           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51522                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51523 
51524       END IF;
51525 
51526       -- 4955764
51527       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51528       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51529 
51530 
51531       XLA_AE_LINES_PKG.ValidateCurrentLine;
51532       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51533 
51534       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51535                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51536                ,p_balance_type_code => l_balance_type_code);
51537 
51538    END IF;
51539 
51540    -----------------------------------------------------------------------------------------
51541    -- 4262811 Multiperiod Accounting
51542    -----------------------------------------------------------------------------------------
51543      -- No MPA option is assigned.
51544 
51545 
51546 END IF;
51547 END IF;
51548 --
51549 
51550 --
51551 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51552    trace
51553       (p_msg      => 'END of AcctLineType_115'
51554       ,p_level    => C_LEVEL_PROCEDURE
51555       ,p_module   => l_log_module);
51556 END IF;
51557 --
51558 EXCEPTION
51559   WHEN xla_exceptions_pkg.application_exception THEN
51560       RAISE;
51561   WHEN OTHERS THEN
51562        xla_exceptions_pkg.raise_message
51563            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_115');
51564 END AcctLineType_115;
51565 --
51566 
51567 ---------------------------------------
51568 --
51569 -- PRIVATE FUNCTION
51570 --         AcctLineType_116
51571 --
51572 ---------------------------------------
51573 PROCEDURE AcctLineType_116 (
51574   p_application_id        IN NUMBER
51575  ,p_event_id              IN NUMBER
51576  ,p_calculate_acctd_flag  IN VARCHAR2
51577  ,p_calculate_g_l_flag    IN VARCHAR2
51578  ,p_actual_flag           IN OUT VARCHAR2
51579  ,p_balance_type_code     OUT VARCHAR2
51580  ,p_gain_or_loss_ref      OUT VARCHAR2
51581  
51582 --Cost Management Default Account
51583  , p_source_11            IN NUMBER
51584 --DISTRIBUTION_IDENTIFIER
51585  , p_source_84            IN NUMBER
51586 --Distribution Type
51587  , p_source_85            IN VARCHAR2
51588  , p_source_85_meaning    IN VARCHAR2
51589 --Entered Currency Code
51590  , p_source_88            IN VARCHAR2
51591 --Entered Amount
51592  , p_source_91            IN NUMBER
51593 --Currency Conversion Date
51594  , p_source_92            IN DATE
51595 --Currency Conversion Rate
51596  , p_source_93            IN NUMBER
51597 --Currency Conversion Type
51598  , p_source_94            IN VARCHAR2
51599 --Accounted Amount
51600  , p_source_95            IN NUMBER
51601 --Accounting Line Type
51602  , p_source_97            IN NUMBER
51603 )
51604 IS
51605 
51606 l_component_type              VARCHAR2(80);
51607 l_component_code              VARCHAR2(30);
51608 l_component_type_code         VARCHAR2(1);
51609 l_component_appl_id           INTEGER;
51610 l_amb_context_code            VARCHAR2(30);
51611 l_entity_code                 VARCHAR2(30);
51612 l_event_class_code            VARCHAR2(30);
51613 l_ae_header_id                NUMBER;
51614 l_event_type_code             VARCHAR2(30);
51615 l_line_definition_code        VARCHAR2(30);
51616 l_line_definition_owner_code  VARCHAR2(1);
51617 --
51618 -- adr variables
51619 l_segment                     VARCHAR2(30);
51620 l_ccid                        NUMBER;
51621 l_adr_transaction_coa_id      NUMBER;
51622 l_adr_accounting_coa_id       NUMBER;
51623 l_adr_flexfield_segment_code  VARCHAR2(30);
51624 l_adr_flex_value_set_id       NUMBER;
51625 l_adr_value_type_code         VARCHAR2(30);
51626 l_adr_value_combination_id    NUMBER;
51627 l_adr_value_segment_code      VARCHAR2(30);
51628 
51629 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51630 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51631 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51632 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51633 
51634 -- 4262811 Variables ------------------------------------------------------------------------------------------
51635 l_entered_amt_idx             NUMBER;
51636 l_accted_amt_idx              NUMBER;
51637 l_acc_rev_flag                VARCHAR2(1);
51638 l_accrual_line_num            NUMBER;
51639 l_tmp_amt                     NUMBER;
51640 l_acc_rev_natural_side_code   VARCHAR2(1);
51641 
51642 l_num_entries                 NUMBER;
51643 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51644 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51645 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51646 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51647 l_recog_line_1                NUMBER;
51648 l_recog_line_2                NUMBER;
51649 
51650 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51651 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51652 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51653 
51654 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51655 
51656 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51657 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51658 
51659 ---------------------------------------------------------------------------------------------------------------
51660 
51661 
51662 --
51663 -- bulk performance
51664 --
51665 l_balance_type_code           VARCHAR2(1);
51666 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51667 l_log_module                  VARCHAR2(240);
51668 
51669 --
51670 -- Upgrade strategy
51671 --
51672 l_actual_upg_option           VARCHAR2(1);
51673 l_enc_upg_option           VARCHAR2(1);
51674 
51675 --
51676 BEGIN
51677 --
51678 IF g_log_enabled THEN
51679       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
51680 END IF;
51681 --
51682 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51683 
51684       trace
51685          (p_msg      => 'BEGIN of AcctLineType_116'
51686          ,p_level    => C_LEVEL_PROCEDURE
51687          ,p_module   => l_log_module);
51688 
51689 END IF;
51690 --
51691 l_component_type             := 'AMB_JLT';
51692 l_component_code             := 'DEFERRED_COGS';
51693 l_component_type_code        := 'S';
51694 l_component_appl_id          :=  707;
51695 l_amb_context_code           := 'DEFAULT';
51696 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
51697 l_event_class_code           := 'SALES_ORDER';
51698 l_event_type_code            := 'COGS_RECOGNITION';
51699 l_line_definition_owner_code := 'S';
51700 l_line_definition_code       := 'PI_COGS_RECOGNITION';
51701 --
51702 l_balance_type_code          := 'A';
51703 l_segment                     := NULL;
51704 l_ccid                        := NULL;
51705 l_adr_transaction_coa_id      := NULL;
51706 l_adr_accounting_coa_id       := NULL;
51707 l_adr_flexfield_segment_code  := NULL;
51708 l_adr_flex_value_set_id       := NULL;
51709 l_adr_value_type_code         := NULL;
51710 l_adr_value_combination_id    := NULL;
51711 l_adr_value_segment_code      := NULL;
51712 
51713 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51714 l_bflow_class_code           := '';    -- 4219869 Business Flow
51715 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51716 l_budgetary_control_flag     := 'N';
51717 
51718 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51719 l_bflow_applied_to_amt       := NULL; -- 5132302
51720 l_entered_amt_idx            := NULL;          -- 4262811
51721 l_accted_amt_idx             := NULL;          -- 4262811
51722 l_acc_rev_flag               := NULL;          -- 4262811
51723 l_accrual_line_num           := NULL;          -- 4262811
51724 l_tmp_amt                    := NULL;          -- 4262811
51725 --
51726  
51727 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51728     l_balance_type_code <> 'B' THEN
51729 IF NVL(p_source_97,9E125) =  36
51730  THEN 
51731 
51732    --
51733    XLA_AE_LINES_PKG.SetNewLine;
51734 
51735    p_balance_type_code          := l_balance_type_code;
51736    -- set the flag so later we will know whether the gain loss line needs to be created
51737    
51738    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51739      p_actual_flag :='A';
51740    END IF;
51741 
51742    --
51743    -- bulk performance
51744    --
51745    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51746                                       p_header_num   => 0); -- 4262811
51747    --
51748    -- set accounting line options
51749    --
51750    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51751            p_natural_side_code          => 'D'
51752          , p_gain_or_loss_flag          => 'N'
51753          , p_gl_transfer_mode_code      => 'S'
51754          , p_acct_entry_type_code       => 'A'
51755          , p_switch_side_flag           => 'Y'
51756          , p_merge_duplicate_code       => 'N'
51757          );
51758    --
51759    l_acc_rev_natural_side_code := 'C';  -- 4262811
51760    -- 
51761    --
51762    -- set accounting line type info
51763    --
51764    xla_ae_lines_pkg.SetAcctLineType
51765       (p_component_type             => l_component_type
51766       ,p_event_type_code            => l_event_type_code
51767       ,p_line_definition_owner_code => l_line_definition_owner_code
51768       ,p_line_definition_code       => l_line_definition_code
51769       ,p_accounting_line_code       => l_component_code
51770       ,p_accounting_line_type_code  => l_component_type_code
51771       ,p_accounting_line_appl_id    => l_component_appl_id
51772       ,p_amb_context_code           => l_amb_context_code
51773       ,p_entity_code                => l_entity_code
51774       ,p_event_class_code           => l_event_class_code);
51775    --
51776    -- set accounting class
51777    --
51778    xla_ae_lines_pkg.SetAcctClass(
51779            p_accounting_class_code  => 'DEFERRED_COGS'
51780          , p_ae_header_id           => l_ae_header_id
51781          );
51782 
51783    --
51784    -- set rounding class
51785    --
51786    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51787                       'DEFERRED_COGS';
51788 
51789    --
51790    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51791    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51792    --
51793    -- bulk performance
51794    --
51795    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51796 
51797    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51798       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51799 
51800    -- 4955764
51801    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51802       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51803 
51804    -- 4458381 Public Sector Enh
51805    
51806    --
51807    -- set accounting attributes for the line type
51808    --
51809    l_entered_amt_idx := 3;
51810    l_accted_amt_idx  := 8;
51811    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51812    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51813    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
51814    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51815    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
51816    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51817    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
51818    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51819    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
51820    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51821    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
51822    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51823    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
51824    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51825    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
51826    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51827    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
51828 
51829    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51830    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51831 
51832    ---------------------------------------------------------------------------------------------------------------
51833    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51834    ---------------------------------------------------------------------------------------------------------------
51835    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51836 
51837    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51838    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51839 
51840    IF xla_accounting_cache_pkg.GetValueChar
51841          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51842          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51843    AND l_bflow_method_code = 'PRIOR_ENTRY'
51844 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51845    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51846          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51847        )
51848    THEN
51849          xla_ae_lines_pkg.BflowUpgEntry
51850            (p_business_method_code    => l_bflow_method_code
51851            ,p_business_class_code     => l_bflow_class_code
51852            ,p_balance_type            => l_balance_type_code);
51853    ELSE
51854       NULL;
51855 -- No business flow processing for business flow method of NONE.
51856    END IF;
51857 
51858    --
51859    -- call analytical criteria
51860    --
51861    
51862    --
51863    -- call description
51864    --
51865    -- No description or it is inherited.
51866    --
51867    -- call ADRs
51868    -- Bug 4922099
51869    --
51870    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51871         (NVL(l_actual_upg_option, 'N') = 'O') OR
51872         (NVL(l_enc_upg_option, 'N') = 'O')
51873       )
51874    THEN
51875    NULL;
51876    --
51877    --
51878    
51879   l_ccid := AcctDerRule_6(
51880            p_application_id           => p_application_id
51881          , p_ae_header_id             => l_ae_header_id 
51882 , p_source_11 => p_source_11
51883          , x_transaction_coa_id       => l_adr_transaction_coa_id
51884          , x_accounting_coa_id        => l_adr_accounting_coa_id
51885          , x_value_type_code          => l_adr_value_type_code
51886          , p_side                     => 'NA'
51887    );
51888 
51889    xla_ae_lines_pkg.set_ccid(
51890     p_code_combination_id          => l_ccid
51891   , p_value_type_code              => l_adr_value_type_code
51892   , p_transaction_coa_id           => l_adr_transaction_coa_id
51893   , p_accounting_coa_id            => l_adr_accounting_coa_id
51894   , p_adr_code                     => 'CST_DEFAULT'
51895   , p_adr_type_code                => 'S'
51896   , p_component_type               => l_component_type
51897   , p_component_code               => l_component_code
51898   , p_component_type_code          => l_component_type_code
51899   , p_component_appl_id            => l_component_appl_id
51900   , p_amb_context_code             => l_amb_context_code
51901   , p_side                         => 'NA'
51902   );
51903 
51904 
51905    --
51906    --
51907    END IF;
51908    --
51909    -- Bug 4922099
51910    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51911           (NVL(l_enc_upg_option, 'N') = 'O')
51912         ) AND
51913         (l_bflow_method_code = 'PRIOR_ENTRY')
51914       )
51915    THEN
51916       IF
51917       --
51918       1 = 2
51919       --
51920       THEN
51921       xla_accounting_err_pkg.build_message
51922                                     (p_appli_s_name            => 'XLA'
51923                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51924                                     ,p_token_1                 => 'LINE_NUMBER'
51925                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51926                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51927                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51928                                                                              l_component_type
51929                                                                             ,l_component_code
51930                                                                             ,l_component_type_code
51931                                                                             ,l_component_appl_id
51932                                                                             ,l_amb_context_code
51933                                                                             ,l_entity_code
51934                                                                             ,l_event_class_code
51935                                                                            )
51936                                     ,p_token_3                 => 'OWNER'
51937                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51938                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51939                                                                           ,p_lookup_code    => l_component_type_code
51940                                                                          )
51941                                     ,p_token_4                 => 'PRODUCT_NAME'
51942                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51943                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51944                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51945                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51946                                     ,p_ae_header_id            =>  NULL
51947                                        );
51948 
51949         IF (C_LEVEL_ERROR>= g_log_level) THEN
51950                  trace
51951                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51952                       ,p_level    => C_LEVEL_ERROR
51953                       ,p_module   => l_log_module);
51954         END IF;
51955       END IF;
51956    END IF;
51957    --
51958    --
51959    ------------------------------------------------------------------------------------------------
51960    -- 4219869 Business Flow
51961    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51962    -- Prior Entry.  Currently, the following code is always generated.
51963    ------------------------------------------------------------------------------------------------
51964    XLA_AE_LINES_PKG.ValidateCurrentLine;
51965 
51966    ------------------------------------------------------------------------------------
51967    -- 4219869 Business Flow
51968    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51969    ------------------------------------------------------------------------------------
51970    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51971 
51972    ----------------------------------------------------------------------------------
51973    -- 4219869 Business Flow
51974    -- Update journal entry status -- Need to generate this within IF <condition>
51975    ----------------------------------------------------------------------------------
51976    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51977          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51978          ,p_balance_type_code => l_balance_type_code
51979          );
51980 
51981    -------------------------------------------------------------------------------------------
51982    -- 4262811 - Generate the Accrual Reversal lines
51983    -------------------------------------------------------------------------------------------
51984    BEGIN
51985       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51986                               (g_array_event(p_event_id).array_value_num('header_index'));
51987       IF l_acc_rev_flag IS NULL THEN
51988          l_acc_rev_flag := 'N';
51989       END IF;
51990    EXCEPTION
51991       WHEN OTHERS THEN
51992          l_acc_rev_flag := 'N';
51993    END;
51994    --
51995    IF (l_acc_rev_flag = 'Y') THEN
51996 
51997        -- 4645092  ------------------------------------------------------------------------------
51998        -- To allow MPA report to determine if it should generate report process
51999        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52000        ------------------------------------------------------------------------------------------
52001 
52002        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52003        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52004    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52005    -- call ADRs
52006    -- Bug 4922099
52007    --
52008    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52009         (NVL(l_actual_upg_option, 'N') = 'O') OR
52010         (NVL(l_enc_upg_option, 'N') = 'O')
52011       )
52012    THEN
52013    NULL;
52014    --
52015    --
52016    
52017   l_ccid := AcctDerRule_6(
52018            p_application_id           => p_application_id
52019          , p_ae_header_id             => l_ae_header_id 
52020 , p_source_11 => p_source_11
52021          , x_transaction_coa_id       => l_adr_transaction_coa_id
52022          , x_accounting_coa_id        => l_adr_accounting_coa_id
52023          , x_value_type_code          => l_adr_value_type_code
52024          , p_side                     => 'NA'
52025    );
52026 
52027    xla_ae_lines_pkg.set_ccid(
52028     p_code_combination_id          => l_ccid
52029   , p_value_type_code              => l_adr_value_type_code
52030   , p_transaction_coa_id           => l_adr_transaction_coa_id
52031   , p_accounting_coa_id            => l_adr_accounting_coa_id
52032   , p_adr_code                     => 'CST_DEFAULT'
52033   , p_adr_type_code                => 'S'
52034   , p_component_type               => l_component_type
52035   , p_component_code               => l_component_code
52036   , p_component_type_code          => l_component_type_code
52037   , p_component_appl_id            => l_component_appl_id
52038   , p_amb_context_code             => l_amb_context_code
52039   , p_side                         => 'NA'
52040   );
52041 
52042 
52043    --
52044    --
52045    END IF;
52046 
52047        --
52048        -- Update the line information that should be overwritten
52049        --
52050        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52051                                          p_header_num   => 1);
52052        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52053 
52054        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52055 
52056        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52057           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52058        END IF;
52059 
52060       --
52061       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52062       --
52063       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52064           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52065       ELSE
52066           ---------------------------------------------------------------------------------------------------
52067           -- 4262811a Switch Sign
52068           ---------------------------------------------------------------------------------------------------
52069           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52070           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52071                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52072           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52073                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52074           -- 5132302
52075           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52076                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52077 
52078       END IF;
52079 
52080       -- 4955764
52081       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52082       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52083 
52084 
52085       XLA_AE_LINES_PKG.ValidateCurrentLine;
52086       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52087 
52088       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52089                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52090                ,p_balance_type_code => l_balance_type_code);
52091 
52092    END IF;
52093 
52094    -----------------------------------------------------------------------------------------
52095    -- 4262811 Multiperiod Accounting
52096    -----------------------------------------------------------------------------------------
52097      -- No MPA option is assigned.
52098 
52099 
52100 END IF;
52101 END IF;
52102 --
52103 
52104 --
52105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52106    trace
52107       (p_msg      => 'END of AcctLineType_116'
52108       ,p_level    => C_LEVEL_PROCEDURE
52109       ,p_module   => l_log_module);
52110 END IF;
52111 --
52112 EXCEPTION
52113   WHEN xla_exceptions_pkg.application_exception THEN
52114       RAISE;
52115   WHEN OTHERS THEN
52116        xla_exceptions_pkg.raise_message
52117            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_116');
52118 END AcctLineType_116;
52119 --
52120 
52121 ---------------------------------------
52122 --
52123 -- PRIVATE FUNCTION
52124 --         AcctLineType_117
52125 --
52126 ---------------------------------------
52127 PROCEDURE AcctLineType_117 (
52128   p_application_id        IN NUMBER
52129  ,p_event_id              IN NUMBER
52130  ,p_calculate_acctd_flag  IN VARCHAR2
52131  ,p_calculate_g_l_flag    IN VARCHAR2
52132  ,p_actual_flag           IN OUT VARCHAR2
52133  ,p_balance_type_code     OUT VARCHAR2
52134  ,p_gain_or_loss_ref      OUT VARCHAR2
52135  
52136 --Cost Management Default Account
52137  , p_source_11            IN NUMBER
52138 --DISTRIBUTION_IDENTIFIER
52139  , p_source_84            IN NUMBER
52140 --Distribution Type
52141  , p_source_85            IN VARCHAR2
52142  , p_source_85_meaning    IN VARCHAR2
52143 --Entered Currency Code
52144  , p_source_88            IN VARCHAR2
52145 --Entered Amount
52146  , p_source_91            IN NUMBER
52147 --Currency Conversion Date
52148  , p_source_92            IN DATE
52149 --Currency Conversion Rate
52150  , p_source_93            IN NUMBER
52151 --Currency Conversion Type
52152  , p_source_94            IN VARCHAR2
52153 --Accounted Amount
52154  , p_source_95            IN NUMBER
52155 --Accounting Line Type
52156  , p_source_97            IN NUMBER
52157 )
52158 IS
52159 
52160 l_component_type              VARCHAR2(80);
52161 l_component_code              VARCHAR2(30);
52162 l_component_type_code         VARCHAR2(1);
52163 l_component_appl_id           INTEGER;
52164 l_amb_context_code            VARCHAR2(30);
52165 l_entity_code                 VARCHAR2(30);
52166 l_event_class_code            VARCHAR2(30);
52167 l_ae_header_id                NUMBER;
52168 l_event_type_code             VARCHAR2(30);
52169 l_line_definition_code        VARCHAR2(30);
52170 l_line_definition_owner_code  VARCHAR2(1);
52171 --
52172 -- adr variables
52173 l_segment                     VARCHAR2(30);
52174 l_ccid                        NUMBER;
52175 l_adr_transaction_coa_id      NUMBER;
52176 l_adr_accounting_coa_id       NUMBER;
52177 l_adr_flexfield_segment_code  VARCHAR2(30);
52178 l_adr_flex_value_set_id       NUMBER;
52179 l_adr_value_type_code         VARCHAR2(30);
52180 l_adr_value_combination_id    NUMBER;
52181 l_adr_value_segment_code      VARCHAR2(30);
52182 
52183 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52184 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52185 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52186 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52187 
52188 -- 4262811 Variables ------------------------------------------------------------------------------------------
52189 l_entered_amt_idx             NUMBER;
52190 l_accted_amt_idx              NUMBER;
52191 l_acc_rev_flag                VARCHAR2(1);
52192 l_accrual_line_num            NUMBER;
52193 l_tmp_amt                     NUMBER;
52194 l_acc_rev_natural_side_code   VARCHAR2(1);
52195 
52196 l_num_entries                 NUMBER;
52197 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52198 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52199 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52200 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52201 l_recog_line_1                NUMBER;
52202 l_recog_line_2                NUMBER;
52203 
52204 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52205 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52206 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52207 
52208 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52209 
52210 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52211 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52212 
52213 ---------------------------------------------------------------------------------------------------------------
52214 
52215 
52216 --
52217 -- bulk performance
52218 --
52219 l_balance_type_code           VARCHAR2(1);
52220 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52221 l_log_module                  VARCHAR2(240);
52222 
52223 --
52224 -- Upgrade strategy
52225 --
52226 l_actual_upg_option           VARCHAR2(1);
52227 l_enc_upg_option           VARCHAR2(1);
52228 
52229 --
52230 BEGIN
52231 --
52232 IF g_log_enabled THEN
52233       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
52234 END IF;
52235 --
52236 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52237 
52238       trace
52239          (p_msg      => 'BEGIN of AcctLineType_117'
52240          ,p_level    => C_LEVEL_PROCEDURE
52241          ,p_module   => l_log_module);
52242 
52243 END IF;
52244 --
52245 l_component_type             := 'AMB_JLT';
52246 l_component_code             := 'DEFERRED_COGS';
52247 l_component_type_code        := 'S';
52248 l_component_appl_id          :=  707;
52249 l_amb_context_code           := 'DEFAULT';
52250 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
52251 l_event_class_code           := 'SALES_ORDER';
52252 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
52253 l_line_definition_owner_code := 'S';
52254 l_line_definition_code       := 'PI_COGS_RECOGNITION_ADJ';
52255 --
52256 l_balance_type_code          := 'A';
52257 l_segment                     := NULL;
52258 l_ccid                        := NULL;
52259 l_adr_transaction_coa_id      := NULL;
52260 l_adr_accounting_coa_id       := NULL;
52261 l_adr_flexfield_segment_code  := NULL;
52262 l_adr_flex_value_set_id       := NULL;
52263 l_adr_value_type_code         := NULL;
52264 l_adr_value_combination_id    := NULL;
52265 l_adr_value_segment_code      := NULL;
52266 
52267 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52268 l_bflow_class_code           := '';    -- 4219869 Business Flow
52269 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52270 l_budgetary_control_flag     := 'N';
52271 
52272 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52273 l_bflow_applied_to_amt       := NULL; -- 5132302
52274 l_entered_amt_idx            := NULL;          -- 4262811
52275 l_accted_amt_idx             := NULL;          -- 4262811
52276 l_acc_rev_flag               := NULL;          -- 4262811
52277 l_accrual_line_num           := NULL;          -- 4262811
52278 l_tmp_amt                    := NULL;          -- 4262811
52279 --
52280  
52281 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52282     l_balance_type_code <> 'B' THEN
52283 IF NVL(p_source_97,9E125) =  36
52284  THEN 
52285 
52286    --
52287    XLA_AE_LINES_PKG.SetNewLine;
52288 
52289    p_balance_type_code          := l_balance_type_code;
52290    -- set the flag so later we will know whether the gain loss line needs to be created
52291    
52292    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52293      p_actual_flag :='A';
52294    END IF;
52295 
52296    --
52297    -- bulk performance
52298    --
52299    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52300                                       p_header_num   => 0); -- 4262811
52301    --
52302    -- set accounting line options
52303    --
52304    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52305            p_natural_side_code          => 'D'
52306          , p_gain_or_loss_flag          => 'N'
52307          , p_gl_transfer_mode_code      => 'S'
52308          , p_acct_entry_type_code       => 'A'
52309          , p_switch_side_flag           => 'Y'
52310          , p_merge_duplicate_code       => 'N'
52311          );
52312    --
52313    l_acc_rev_natural_side_code := 'C';  -- 4262811
52314    -- 
52315    --
52316    -- set accounting line type info
52317    --
52318    xla_ae_lines_pkg.SetAcctLineType
52319       (p_component_type             => l_component_type
52320       ,p_event_type_code            => l_event_type_code
52321       ,p_line_definition_owner_code => l_line_definition_owner_code
52322       ,p_line_definition_code       => l_line_definition_code
52323       ,p_accounting_line_code       => l_component_code
52324       ,p_accounting_line_type_code  => l_component_type_code
52325       ,p_accounting_line_appl_id    => l_component_appl_id
52326       ,p_amb_context_code           => l_amb_context_code
52327       ,p_entity_code                => l_entity_code
52328       ,p_event_class_code           => l_event_class_code);
52329    --
52330    -- set accounting class
52331    --
52332    xla_ae_lines_pkg.SetAcctClass(
52333            p_accounting_class_code  => 'DEFERRED_COGS'
52334          , p_ae_header_id           => l_ae_header_id
52335          );
52336 
52337    --
52338    -- set rounding class
52339    --
52340    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52341                       'DEFERRED_COGS';
52342 
52343    --
52344    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52345    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52346    --
52347    -- bulk performance
52348    --
52349    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52350 
52351    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52352       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52353 
52354    -- 4955764
52355    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52356       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52357 
52358    -- 4458381 Public Sector Enh
52359    
52360    --
52361    -- set accounting attributes for the line type
52362    --
52363    l_entered_amt_idx := 3;
52364    l_accted_amt_idx  := 8;
52365    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52366    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52367    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
52368    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52369    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
52370    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52371    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
52372    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52373    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
52374    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52375    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
52376    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52377    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
52378    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52379    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
52380    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52381    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
52382 
52383    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52384    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52385 
52386    ---------------------------------------------------------------------------------------------------------------
52387    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52388    ---------------------------------------------------------------------------------------------------------------
52389    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52390 
52391    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52392    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52393 
52394    IF xla_accounting_cache_pkg.GetValueChar
52395          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52396          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52397    AND l_bflow_method_code = 'PRIOR_ENTRY'
52398 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52399    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52400          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52401        )
52402    THEN
52403          xla_ae_lines_pkg.BflowUpgEntry
52404            (p_business_method_code    => l_bflow_method_code
52405            ,p_business_class_code     => l_bflow_class_code
52406            ,p_balance_type            => l_balance_type_code);
52407    ELSE
52408       NULL;
52409 -- No business flow processing for business flow method of NONE.
52410    END IF;
52411 
52412    --
52413    -- call analytical criteria
52414    --
52415    
52416    --
52417    -- call description
52418    --
52419    -- No description or it is inherited.
52420    --
52421    -- call ADRs
52422    -- Bug 4922099
52423    --
52424    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52425         (NVL(l_actual_upg_option, 'N') = 'O') OR
52426         (NVL(l_enc_upg_option, 'N') = 'O')
52427       )
52428    THEN
52429    NULL;
52430    --
52431    --
52432    
52433   l_ccid := AcctDerRule_6(
52434            p_application_id           => p_application_id
52435          , p_ae_header_id             => l_ae_header_id 
52436 , p_source_11 => p_source_11
52437          , x_transaction_coa_id       => l_adr_transaction_coa_id
52438          , x_accounting_coa_id        => l_adr_accounting_coa_id
52439          , x_value_type_code          => l_adr_value_type_code
52440          , p_side                     => 'NA'
52441    );
52442 
52443    xla_ae_lines_pkg.set_ccid(
52444     p_code_combination_id          => l_ccid
52445   , p_value_type_code              => l_adr_value_type_code
52446   , p_transaction_coa_id           => l_adr_transaction_coa_id
52447   , p_accounting_coa_id            => l_adr_accounting_coa_id
52448   , p_adr_code                     => 'CST_DEFAULT'
52449   , p_adr_type_code                => 'S'
52450   , p_component_type               => l_component_type
52451   , p_component_code               => l_component_code
52452   , p_component_type_code          => l_component_type_code
52453   , p_component_appl_id            => l_component_appl_id
52454   , p_amb_context_code             => l_amb_context_code
52455   , p_side                         => 'NA'
52456   );
52457 
52458 
52459    --
52460    --
52461    END IF;
52462    --
52463    -- Bug 4922099
52464    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52465           (NVL(l_enc_upg_option, 'N') = 'O')
52466         ) AND
52467         (l_bflow_method_code = 'PRIOR_ENTRY')
52468       )
52469    THEN
52470       IF
52471       --
52472       1 = 2
52473       --
52474       THEN
52475       xla_accounting_err_pkg.build_message
52476                                     (p_appli_s_name            => 'XLA'
52477                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52478                                     ,p_token_1                 => 'LINE_NUMBER'
52479                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52480                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52481                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52482                                                                              l_component_type
52483                                                                             ,l_component_code
52484                                                                             ,l_component_type_code
52485                                                                             ,l_component_appl_id
52486                                                                             ,l_amb_context_code
52487                                                                             ,l_entity_code
52488                                                                             ,l_event_class_code
52489                                                                            )
52490                                     ,p_token_3                 => 'OWNER'
52491                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52492                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52493                                                                           ,p_lookup_code    => l_component_type_code
52494                                                                          )
52495                                     ,p_token_4                 => 'PRODUCT_NAME'
52496                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52497                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52498                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52499                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52500                                     ,p_ae_header_id            =>  NULL
52501                                        );
52502 
52503         IF (C_LEVEL_ERROR>= g_log_level) THEN
52504                  trace
52505                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52506                       ,p_level    => C_LEVEL_ERROR
52507                       ,p_module   => l_log_module);
52508         END IF;
52509       END IF;
52510    END IF;
52511    --
52512    --
52513    ------------------------------------------------------------------------------------------------
52514    -- 4219869 Business Flow
52515    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52516    -- Prior Entry.  Currently, the following code is always generated.
52517    ------------------------------------------------------------------------------------------------
52518    XLA_AE_LINES_PKG.ValidateCurrentLine;
52519 
52520    ------------------------------------------------------------------------------------
52521    -- 4219869 Business Flow
52522    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52523    ------------------------------------------------------------------------------------
52524    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52525 
52526    ----------------------------------------------------------------------------------
52527    -- 4219869 Business Flow
52528    -- Update journal entry status -- Need to generate this within IF <condition>
52529    ----------------------------------------------------------------------------------
52530    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52531          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52532          ,p_balance_type_code => l_balance_type_code
52533          );
52534 
52535    -------------------------------------------------------------------------------------------
52536    -- 4262811 - Generate the Accrual Reversal lines
52537    -------------------------------------------------------------------------------------------
52538    BEGIN
52539       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52540                               (g_array_event(p_event_id).array_value_num('header_index'));
52541       IF l_acc_rev_flag IS NULL THEN
52542          l_acc_rev_flag := 'N';
52543       END IF;
52544    EXCEPTION
52545       WHEN OTHERS THEN
52546          l_acc_rev_flag := 'N';
52547    END;
52548    --
52549    IF (l_acc_rev_flag = 'Y') THEN
52550 
52551        -- 4645092  ------------------------------------------------------------------------------
52552        -- To allow MPA report to determine if it should generate report process
52553        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52554        ------------------------------------------------------------------------------------------
52555 
52556        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52557        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52558    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52559    -- call ADRs
52560    -- Bug 4922099
52561    --
52562    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52563         (NVL(l_actual_upg_option, 'N') = 'O') OR
52564         (NVL(l_enc_upg_option, 'N') = 'O')
52565       )
52566    THEN
52567    NULL;
52568    --
52569    --
52570    
52571   l_ccid := AcctDerRule_6(
52572            p_application_id           => p_application_id
52573          , p_ae_header_id             => l_ae_header_id 
52574 , p_source_11 => p_source_11
52575          , x_transaction_coa_id       => l_adr_transaction_coa_id
52576          , x_accounting_coa_id        => l_adr_accounting_coa_id
52577          , x_value_type_code          => l_adr_value_type_code
52578          , p_side                     => 'NA'
52579    );
52580 
52581    xla_ae_lines_pkg.set_ccid(
52582     p_code_combination_id          => l_ccid
52583   , p_value_type_code              => l_adr_value_type_code
52584   , p_transaction_coa_id           => l_adr_transaction_coa_id
52585   , p_accounting_coa_id            => l_adr_accounting_coa_id
52586   , p_adr_code                     => 'CST_DEFAULT'
52587   , p_adr_type_code                => 'S'
52588   , p_component_type               => l_component_type
52589   , p_component_code               => l_component_code
52590   , p_component_type_code          => l_component_type_code
52591   , p_component_appl_id            => l_component_appl_id
52592   , p_amb_context_code             => l_amb_context_code
52593   , p_side                         => 'NA'
52594   );
52595 
52596 
52597    --
52598    --
52599    END IF;
52600 
52601        --
52602        -- Update the line information that should be overwritten
52603        --
52604        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52605                                          p_header_num   => 1);
52606        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52607 
52608        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52609 
52610        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52611           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52612        END IF;
52613 
52614       --
52615       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52616       --
52617       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52618           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52619       ELSE
52620           ---------------------------------------------------------------------------------------------------
52621           -- 4262811a Switch Sign
52622           ---------------------------------------------------------------------------------------------------
52623           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52624           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52625                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52626           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52627                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52628           -- 5132302
52629           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52630                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52631 
52632       END IF;
52633 
52634       -- 4955764
52635       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52636       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52637 
52638 
52639       XLA_AE_LINES_PKG.ValidateCurrentLine;
52640       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52641 
52642       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52643                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52644                ,p_balance_type_code => l_balance_type_code);
52645 
52646    END IF;
52647 
52648    -----------------------------------------------------------------------------------------
52649    -- 4262811 Multiperiod Accounting
52650    -----------------------------------------------------------------------------------------
52651      -- No MPA option is assigned.
52652 
52653 
52654 END IF;
52655 END IF;
52656 --
52657 
52658 --
52659 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52660    trace
52661       (p_msg      => 'END of AcctLineType_117'
52662       ,p_level    => C_LEVEL_PROCEDURE
52663       ,p_module   => l_log_module);
52664 END IF;
52665 --
52666 EXCEPTION
52667   WHEN xla_exceptions_pkg.application_exception THEN
52668       RAISE;
52669   WHEN OTHERS THEN
52670        xla_exceptions_pkg.raise_message
52671            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_117');
52672 END AcctLineType_117;
52673 --
52674 
52675 ---------------------------------------
52676 --
52677 -- PRIVATE FUNCTION
52678 --         AcctLineType_118
52679 --
52680 ---------------------------------------
52681 PROCEDURE AcctLineType_118 (
52682   p_application_id        IN NUMBER
52683  ,p_event_id              IN NUMBER
52684  ,p_calculate_acctd_flag  IN VARCHAR2
52685  ,p_calculate_g_l_flag    IN VARCHAR2
52686  ,p_actual_flag           IN OUT VARCHAR2
52687  ,p_balance_type_code     OUT VARCHAR2
52688  ,p_gain_or_loss_ref      OUT VARCHAR2
52689  
52690 --TRANSACTION_ID
52691  , p_source_1            IN NUMBER
52692 --Item Concatenated Segments
52693  , p_source_2            IN VARCHAR2
52694 --Transaction Quantity
52695  , p_source_3            IN NUMBER
52696 --Transaction Unit of Measure Code
52697  , p_source_4            IN VARCHAR2
52698 --Inventory Transaction Type Description
52699  , p_source_5            IN VARCHAR2
52700 --Cost Management Default Account
52701  , p_source_11            IN NUMBER
52702 --DISTRIBUTION_IDENTIFIER
52703  , p_source_84            IN NUMBER
52704 --Distribution Type
52705  , p_source_85            IN VARCHAR2
52706  , p_source_85_meaning    IN VARCHAR2
52707 --Entered Currency Code
52708  , p_source_88            IN VARCHAR2
52709 --Entered Amount
52710  , p_source_91            IN NUMBER
52711 --Currency Conversion Date
52712  , p_source_92            IN DATE
52713 --Currency Conversion Rate
52714  , p_source_93            IN NUMBER
52715 --Currency Conversion Type
52716  , p_source_94            IN VARCHAR2
52717 --Accounted Amount
52718  , p_source_95            IN NUMBER
52719 --Accounting Line Type
52720  , p_source_97            IN NUMBER
52721 )
52722 IS
52723 
52724 l_component_type              VARCHAR2(80);
52725 l_component_code              VARCHAR2(30);
52726 l_component_type_code         VARCHAR2(1);
52727 l_component_appl_id           INTEGER;
52728 l_amb_context_code            VARCHAR2(30);
52729 l_entity_code                 VARCHAR2(30);
52730 l_event_class_code            VARCHAR2(30);
52731 l_ae_header_id                NUMBER;
52732 l_event_type_code             VARCHAR2(30);
52733 l_line_definition_code        VARCHAR2(30);
52734 l_line_definition_owner_code  VARCHAR2(1);
52735 --
52736 -- adr variables
52737 l_segment                     VARCHAR2(30);
52738 l_ccid                        NUMBER;
52739 l_adr_transaction_coa_id      NUMBER;
52740 l_adr_accounting_coa_id       NUMBER;
52741 l_adr_flexfield_segment_code  VARCHAR2(30);
52742 l_adr_flex_value_set_id       NUMBER;
52743 l_adr_value_type_code         VARCHAR2(30);
52744 l_adr_value_combination_id    NUMBER;
52745 l_adr_value_segment_code      VARCHAR2(30);
52746 
52747 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52748 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52749 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52750 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52751 
52752 -- 4262811 Variables ------------------------------------------------------------------------------------------
52753 l_entered_amt_idx             NUMBER;
52754 l_accted_amt_idx              NUMBER;
52755 l_acc_rev_flag                VARCHAR2(1);
52756 l_accrual_line_num            NUMBER;
52757 l_tmp_amt                     NUMBER;
52758 l_acc_rev_natural_side_code   VARCHAR2(1);
52759 
52760 l_num_entries                 NUMBER;
52761 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52762 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52763 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52764 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52765 l_recog_line_1                NUMBER;
52766 l_recog_line_2                NUMBER;
52767 
52768 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52769 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52770 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52771 
52772 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52773 
52774 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52775 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52776 
52777 ---------------------------------------------------------------------------------------------------------------
52778 
52779 
52780 --
52781 -- bulk performance
52782 --
52783 l_balance_type_code           VARCHAR2(1);
52784 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52785 l_log_module                  VARCHAR2(240);
52786 
52787 --
52788 -- Upgrade strategy
52789 --
52790 l_actual_upg_option           VARCHAR2(1);
52791 l_enc_upg_option           VARCHAR2(1);
52792 
52793 --
52794 BEGIN
52795 --
52796 IF g_log_enabled THEN
52797       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
52798 END IF;
52799 --
52800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52801 
52802       trace
52803          (p_msg      => 'BEGIN of AcctLineType_118'
52804          ,p_level    => C_LEVEL_PROCEDURE
52805          ,p_module   => l_log_module);
52806 
52807 END IF;
52808 --
52809 l_component_type             := 'AMB_JLT';
52810 l_component_code             := 'DEFERRED_COGS';
52811 l_component_type_code        := 'S';
52812 l_component_appl_id          :=  707;
52813 l_amb_context_code           := 'DEFAULT';
52814 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
52815 l_event_class_code           := 'SALES_ORDER';
52816 l_event_type_code            := 'LOG_SO_ISSUE';
52817 l_line_definition_owner_code := 'S';
52818 l_line_definition_code       := 'PI_LOG_SO_ISSUE';
52819 --
52820 l_balance_type_code          := 'A';
52821 l_segment                     := NULL;
52822 l_ccid                        := NULL;
52823 l_adr_transaction_coa_id      := NULL;
52824 l_adr_accounting_coa_id       := NULL;
52825 l_adr_flexfield_segment_code  := NULL;
52826 l_adr_flex_value_set_id       := NULL;
52827 l_adr_value_type_code         := NULL;
52828 l_adr_value_combination_id    := NULL;
52829 l_adr_value_segment_code      := NULL;
52830 
52831 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52832 l_bflow_class_code           := '';    -- 4219869 Business Flow
52833 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52834 l_budgetary_control_flag     := 'N';
52835 
52836 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52837 l_bflow_applied_to_amt       := NULL; -- 5132302
52838 l_entered_amt_idx            := NULL;          -- 4262811
52839 l_accted_amt_idx             := NULL;          -- 4262811
52840 l_acc_rev_flag               := NULL;          -- 4262811
52841 l_accrual_line_num           := NULL;          -- 4262811
52842 l_tmp_amt                    := NULL;          -- 4262811
52843 --
52844  
52845 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52846     l_balance_type_code <> 'B' THEN
52847 IF NVL(p_source_97,9E125) =  36
52848  THEN 
52849 
52850    --
52851    XLA_AE_LINES_PKG.SetNewLine;
52852 
52853    p_balance_type_code          := l_balance_type_code;
52854    -- set the flag so later we will know whether the gain loss line needs to be created
52855    
52856    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52857      p_actual_flag :='A';
52858    END IF;
52859 
52860    --
52861    -- bulk performance
52862    --
52863    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52864                                       p_header_num   => 0); -- 4262811
52865    --
52866    -- set accounting line options
52867    --
52868    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52869            p_natural_side_code          => 'D'
52870          , p_gain_or_loss_flag          => 'N'
52871          , p_gl_transfer_mode_code      => 'S'
52872          , p_acct_entry_type_code       => 'A'
52873          , p_switch_side_flag           => 'Y'
52874          , p_merge_duplicate_code       => 'N'
52875          );
52876    --
52877    l_acc_rev_natural_side_code := 'C';  -- 4262811
52878    -- 
52879    --
52880    -- set accounting line type info
52881    --
52882    xla_ae_lines_pkg.SetAcctLineType
52883       (p_component_type             => l_component_type
52884       ,p_event_type_code            => l_event_type_code
52885       ,p_line_definition_owner_code => l_line_definition_owner_code
52886       ,p_line_definition_code       => l_line_definition_code
52887       ,p_accounting_line_code       => l_component_code
52888       ,p_accounting_line_type_code  => l_component_type_code
52889       ,p_accounting_line_appl_id    => l_component_appl_id
52890       ,p_amb_context_code           => l_amb_context_code
52891       ,p_entity_code                => l_entity_code
52892       ,p_event_class_code           => l_event_class_code);
52893    --
52894    -- set accounting class
52895    --
52896    xla_ae_lines_pkg.SetAcctClass(
52897            p_accounting_class_code  => 'DEFERRED_COGS'
52898          , p_ae_header_id           => l_ae_header_id
52899          );
52900 
52901    --
52902    -- set rounding class
52903    --
52904    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52905                       'DEFERRED_COGS';
52906 
52907    --
52908    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52909    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52910    --
52911    -- bulk performance
52912    --
52913    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52914 
52915    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52916       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52917 
52918    -- 4955764
52919    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52920       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52921 
52922    -- 4458381 Public Sector Enh
52923    
52924    --
52925    -- set accounting attributes for the line type
52926    --
52927    l_entered_amt_idx := 3;
52928    l_accted_amt_idx  := 8;
52929    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52930    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52931    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
52932    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52933    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
52934    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52935    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
52936    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52937    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
52938    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52939    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
52940    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52941    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
52942    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52943    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
52944    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52945    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
52946 
52947    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52948    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52949 
52950    ---------------------------------------------------------------------------------------------------------------
52951    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52952    ---------------------------------------------------------------------------------------------------------------
52953    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52954 
52955    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52956    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52957 
52958    IF xla_accounting_cache_pkg.GetValueChar
52959          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52960          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52961    AND l_bflow_method_code = 'PRIOR_ENTRY'
52962 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52963    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52964          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52965        )
52966    THEN
52967          xla_ae_lines_pkg.BflowUpgEntry
52968            (p_business_method_code    => l_bflow_method_code
52969            ,p_business_class_code     => l_bflow_class_code
52970            ,p_balance_type            => l_balance_type_code);
52971    ELSE
52972       NULL;
52973 -- No business flow processing for business flow method of NONE.
52974    END IF;
52975 
52976    --
52977    -- call analytical criteria
52978    --
52979    
52980    --
52981    -- call description
52982    --
52983    
52984 xla_ae_lines_pkg.SetLineDescription(
52985    p_ae_header_id => l_ae_header_id
52986   ,p_description  => Description_1 (
52987      p_application_id         => p_application_id
52988    , p_ae_header_id           => l_ae_header_id 
52989 , p_source_1 => p_source_1
52990 , p_source_2 => p_source_2
52991 , p_source_3 => p_source_3
52992 , p_source_4 => p_source_4
52993 , p_source_5 => p_source_5
52994    )
52995 );
52996 
52997 
52998    --
52999    -- call ADRs
53000    -- Bug 4922099
53001    --
53002    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53003         (NVL(l_actual_upg_option, 'N') = 'O') OR
53004         (NVL(l_enc_upg_option, 'N') = 'O')
53005       )
53006    THEN
53007    NULL;
53008    --
53009    --
53010    
53011   l_ccid := AcctDerRule_6(
53012            p_application_id           => p_application_id
53013          , p_ae_header_id             => l_ae_header_id 
53014 , p_source_11 => p_source_11
53015          , x_transaction_coa_id       => l_adr_transaction_coa_id
53016          , x_accounting_coa_id        => l_adr_accounting_coa_id
53017          , x_value_type_code          => l_adr_value_type_code
53018          , p_side                     => 'NA'
53019    );
53020 
53021    xla_ae_lines_pkg.set_ccid(
53022     p_code_combination_id          => l_ccid
53023   , p_value_type_code              => l_adr_value_type_code
53024   , p_transaction_coa_id           => l_adr_transaction_coa_id
53025   , p_accounting_coa_id            => l_adr_accounting_coa_id
53026   , p_adr_code                     => 'CST_DEFAULT'
53027   , p_adr_type_code                => 'S'
53028   , p_component_type               => l_component_type
53029   , p_component_code               => l_component_code
53030   , p_component_type_code          => l_component_type_code
53031   , p_component_appl_id            => l_component_appl_id
53032   , p_amb_context_code             => l_amb_context_code
53033   , p_side                         => 'NA'
53034   );
53035 
53036 
53037    --
53038    --
53039    END IF;
53040    --
53041    -- Bug 4922099
53042    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53043           (NVL(l_enc_upg_option, 'N') = 'O')
53044         ) AND
53045         (l_bflow_method_code = 'PRIOR_ENTRY')
53046       )
53047    THEN
53048       IF
53049       --
53050       1 = 2
53051       --
53052       THEN
53053       xla_accounting_err_pkg.build_message
53054                                     (p_appli_s_name            => 'XLA'
53055                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53056                                     ,p_token_1                 => 'LINE_NUMBER'
53057                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53058                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53059                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53060                                                                              l_component_type
53061                                                                             ,l_component_code
53062                                                                             ,l_component_type_code
53063                                                                             ,l_component_appl_id
53064                                                                             ,l_amb_context_code
53065                                                                             ,l_entity_code
53066                                                                             ,l_event_class_code
53067                                                                            )
53068                                     ,p_token_3                 => 'OWNER'
53069                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53070                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53071                                                                           ,p_lookup_code    => l_component_type_code
53072                                                                          )
53073                                     ,p_token_4                 => 'PRODUCT_NAME'
53074                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53075                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53076                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53077                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53078                                     ,p_ae_header_id            =>  NULL
53079                                        );
53080 
53081         IF (C_LEVEL_ERROR>= g_log_level) THEN
53082                  trace
53083                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53084                       ,p_level    => C_LEVEL_ERROR
53085                       ,p_module   => l_log_module);
53086         END IF;
53087       END IF;
53088    END IF;
53089    --
53090    --
53091    ------------------------------------------------------------------------------------------------
53092    -- 4219869 Business Flow
53093    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53094    -- Prior Entry.  Currently, the following code is always generated.
53095    ------------------------------------------------------------------------------------------------
53096    XLA_AE_LINES_PKG.ValidateCurrentLine;
53097 
53098    ------------------------------------------------------------------------------------
53099    -- 4219869 Business Flow
53100    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53101    ------------------------------------------------------------------------------------
53102    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53103 
53104    ----------------------------------------------------------------------------------
53105    -- 4219869 Business Flow
53106    -- Update journal entry status -- Need to generate this within IF <condition>
53107    ----------------------------------------------------------------------------------
53108    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53109          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53110          ,p_balance_type_code => l_balance_type_code
53111          );
53112 
53113    -------------------------------------------------------------------------------------------
53114    -- 4262811 - Generate the Accrual Reversal lines
53115    -------------------------------------------------------------------------------------------
53116    BEGIN
53117       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53118                               (g_array_event(p_event_id).array_value_num('header_index'));
53119       IF l_acc_rev_flag IS NULL THEN
53120          l_acc_rev_flag := 'N';
53121       END IF;
53122    EXCEPTION
53123       WHEN OTHERS THEN
53124          l_acc_rev_flag := 'N';
53125    END;
53126    --
53127    IF (l_acc_rev_flag = 'Y') THEN
53128 
53129        -- 4645092  ------------------------------------------------------------------------------
53130        -- To allow MPA report to determine if it should generate report process
53131        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53132        ------------------------------------------------------------------------------------------
53133 
53134        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53135        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53136    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53137    -- call ADRs
53138    -- Bug 4922099
53139    --
53140    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53141         (NVL(l_actual_upg_option, 'N') = 'O') OR
53142         (NVL(l_enc_upg_option, 'N') = 'O')
53143       )
53144    THEN
53145    NULL;
53146    --
53147    --
53148    
53149   l_ccid := AcctDerRule_6(
53150            p_application_id           => p_application_id
53151          , p_ae_header_id             => l_ae_header_id 
53152 , p_source_11 => p_source_11
53153          , x_transaction_coa_id       => l_adr_transaction_coa_id
53154          , x_accounting_coa_id        => l_adr_accounting_coa_id
53155          , x_value_type_code          => l_adr_value_type_code
53156          , p_side                     => 'NA'
53157    );
53158 
53159    xla_ae_lines_pkg.set_ccid(
53160     p_code_combination_id          => l_ccid
53161   , p_value_type_code              => l_adr_value_type_code
53162   , p_transaction_coa_id           => l_adr_transaction_coa_id
53163   , p_accounting_coa_id            => l_adr_accounting_coa_id
53164   , p_adr_code                     => 'CST_DEFAULT'
53165   , p_adr_type_code                => 'S'
53166   , p_component_type               => l_component_type
53167   , p_component_code               => l_component_code
53168   , p_component_type_code          => l_component_type_code
53169   , p_component_appl_id            => l_component_appl_id
53170   , p_amb_context_code             => l_amb_context_code
53171   , p_side                         => 'NA'
53172   );
53173 
53174 
53175    --
53176    --
53177    END IF;
53178 
53179        --
53180        -- Update the line information that should be overwritten
53181        --
53182        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53183                                          p_header_num   => 1);
53184        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53185 
53186        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53187 
53188        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53189           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53190        END IF;
53191 
53192       --
53193       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53194       --
53195       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53196           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53197       ELSE
53198           ---------------------------------------------------------------------------------------------------
53199           -- 4262811a Switch Sign
53200           ---------------------------------------------------------------------------------------------------
53201           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53202           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53203                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53204           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53205                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53206           -- 5132302
53207           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53208                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53209 
53210       END IF;
53211 
53212       -- 4955764
53213       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53214       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53215 
53216 
53217       XLA_AE_LINES_PKG.ValidateCurrentLine;
53218       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53219 
53220       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53221                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53222                ,p_balance_type_code => l_balance_type_code);
53223 
53224    END IF;
53225 
53226    -----------------------------------------------------------------------------------------
53227    -- 4262811 Multiperiod Accounting
53228    -----------------------------------------------------------------------------------------
53229      -- No MPA option is assigned.
53230 
53231 
53232 END IF;
53233 END IF;
53234 --
53235 
53236 --
53237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53238    trace
53239       (p_msg      => 'END of AcctLineType_118'
53240       ,p_level    => C_LEVEL_PROCEDURE
53241       ,p_module   => l_log_module);
53242 END IF;
53243 --
53244 EXCEPTION
53245   WHEN xla_exceptions_pkg.application_exception THEN
53246       RAISE;
53247   WHEN OTHERS THEN
53248        xla_exceptions_pkg.raise_message
53249            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_118');
53250 END AcctLineType_118;
53251 --
53252 
53253 ---------------------------------------
53254 --
53255 -- PRIVATE FUNCTION
53256 --         AcctLineType_119
53257 --
53258 ---------------------------------------
53259 PROCEDURE AcctLineType_119 (
53260   p_application_id        IN NUMBER
53261  ,p_event_id              IN NUMBER
53262  ,p_calculate_acctd_flag  IN VARCHAR2
53263  ,p_calculate_g_l_flag    IN VARCHAR2
53264  ,p_actual_flag           IN OUT VARCHAR2
53265  ,p_balance_type_code     OUT VARCHAR2
53266  ,p_gain_or_loss_ref      OUT VARCHAR2
53267  
53268 --TRANSACTION_ID
53269  , p_source_1            IN NUMBER
53270 --Item Concatenated Segments
53271  , p_source_2            IN VARCHAR2
53272 --Transaction Quantity
53273  , p_source_3            IN NUMBER
53274 --Transaction Unit of Measure Code
53275  , p_source_4            IN VARCHAR2
53276 --Inventory Transaction Type Description
53277  , p_source_5            IN VARCHAR2
53278 --Cost Management Default Account
53279  , p_source_11            IN NUMBER
53280 --DISTRIBUTION_IDENTIFIER
53281  , p_source_84            IN NUMBER
53282 --Distribution Type
53283  , p_source_85            IN VARCHAR2
53284  , p_source_85_meaning    IN VARCHAR2
53285 --Entered Currency Code
53286  , p_source_88            IN VARCHAR2
53287 --Entered Amount
53288  , p_source_91            IN NUMBER
53289 --Currency Conversion Date
53290  , p_source_92            IN DATE
53291 --Currency Conversion Rate
53292  , p_source_93            IN NUMBER
53293 --Currency Conversion Type
53294  , p_source_94            IN VARCHAR2
53295 --Accounted Amount
53296  , p_source_95            IN NUMBER
53297 --Accounting Line Type
53298  , p_source_97            IN NUMBER
53299 )
53300 IS
53301 
53302 l_component_type              VARCHAR2(80);
53303 l_component_code              VARCHAR2(30);
53304 l_component_type_code         VARCHAR2(1);
53305 l_component_appl_id           INTEGER;
53306 l_amb_context_code            VARCHAR2(30);
53307 l_entity_code                 VARCHAR2(30);
53308 l_event_class_code            VARCHAR2(30);
53309 l_ae_header_id                NUMBER;
53310 l_event_type_code             VARCHAR2(30);
53311 l_line_definition_code        VARCHAR2(30);
53312 l_line_definition_owner_code  VARCHAR2(1);
53313 --
53314 -- adr variables
53315 l_segment                     VARCHAR2(30);
53316 l_ccid                        NUMBER;
53317 l_adr_transaction_coa_id      NUMBER;
53318 l_adr_accounting_coa_id       NUMBER;
53319 l_adr_flexfield_segment_code  VARCHAR2(30);
53320 l_adr_flex_value_set_id       NUMBER;
53321 l_adr_value_type_code         VARCHAR2(30);
53322 l_adr_value_combination_id    NUMBER;
53323 l_adr_value_segment_code      VARCHAR2(30);
53324 
53325 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53326 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53327 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53328 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53329 
53330 -- 4262811 Variables ------------------------------------------------------------------------------------------
53331 l_entered_amt_idx             NUMBER;
53332 l_accted_amt_idx              NUMBER;
53333 l_acc_rev_flag                VARCHAR2(1);
53334 l_accrual_line_num            NUMBER;
53335 l_tmp_amt                     NUMBER;
53336 l_acc_rev_natural_side_code   VARCHAR2(1);
53337 
53338 l_num_entries                 NUMBER;
53339 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53340 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53341 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53342 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53343 l_recog_line_1                NUMBER;
53344 l_recog_line_2                NUMBER;
53345 
53346 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53347 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53348 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53349 
53350 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53351 
53352 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53353 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53354 
53355 ---------------------------------------------------------------------------------------------------------------
53356 
53357 
53358 --
53359 -- bulk performance
53360 --
53361 l_balance_type_code           VARCHAR2(1);
53362 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53363 l_log_module                  VARCHAR2(240);
53364 
53365 --
53366 -- Upgrade strategy
53367 --
53368 l_actual_upg_option           VARCHAR2(1);
53369 l_enc_upg_option           VARCHAR2(1);
53370 
53371 --
53372 BEGIN
53373 --
53374 IF g_log_enabled THEN
53375       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
53376 END IF;
53377 --
53378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53379 
53380       trace
53381          (p_msg      => 'BEGIN of AcctLineType_119'
53382          ,p_level    => C_LEVEL_PROCEDURE
53383          ,p_module   => l_log_module);
53384 
53385 END IF;
53386 --
53387 l_component_type             := 'AMB_JLT';
53388 l_component_code             := 'DEFERRED_COGS';
53389 l_component_type_code        := 'S';
53390 l_component_appl_id          :=  707;
53391 l_amb_context_code           := 'DEFAULT';
53392 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
53393 l_event_class_code           := 'SALES_ORDER';
53394 l_event_type_code            := 'SO_ISSUE';
53395 l_line_definition_owner_code := 'S';
53396 l_line_definition_code       := 'PI_SO_ISSUE';
53397 --
53398 l_balance_type_code          := 'A';
53399 l_segment                     := NULL;
53400 l_ccid                        := NULL;
53401 l_adr_transaction_coa_id      := NULL;
53402 l_adr_accounting_coa_id       := NULL;
53403 l_adr_flexfield_segment_code  := NULL;
53404 l_adr_flex_value_set_id       := NULL;
53405 l_adr_value_type_code         := NULL;
53406 l_adr_value_combination_id    := NULL;
53407 l_adr_value_segment_code      := NULL;
53408 
53409 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53410 l_bflow_class_code           := '';    -- 4219869 Business Flow
53411 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53412 l_budgetary_control_flag     := 'N';
53413 
53414 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53415 l_bflow_applied_to_amt       := NULL; -- 5132302
53416 l_entered_amt_idx            := NULL;          -- 4262811
53417 l_accted_amt_idx             := NULL;          -- 4262811
53418 l_acc_rev_flag               := NULL;          -- 4262811
53419 l_accrual_line_num           := NULL;          -- 4262811
53420 l_tmp_amt                    := NULL;          -- 4262811
53421 --
53422  
53423 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53424     l_balance_type_code <> 'B' THEN
53425 IF NVL(p_source_97,9E125) =  36
53426  THEN 
53427 
53428    --
53429    XLA_AE_LINES_PKG.SetNewLine;
53430 
53431    p_balance_type_code          := l_balance_type_code;
53432    -- set the flag so later we will know whether the gain loss line needs to be created
53433    
53434    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53435      p_actual_flag :='A';
53436    END IF;
53437 
53438    --
53439    -- bulk performance
53440    --
53441    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53442                                       p_header_num   => 0); -- 4262811
53443    --
53444    -- set accounting line options
53445    --
53446    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53447            p_natural_side_code          => 'D'
53448          , p_gain_or_loss_flag          => 'N'
53449          , p_gl_transfer_mode_code      => 'S'
53450          , p_acct_entry_type_code       => 'A'
53451          , p_switch_side_flag           => 'Y'
53452          , p_merge_duplicate_code       => 'N'
53453          );
53454    --
53455    l_acc_rev_natural_side_code := 'C';  -- 4262811
53456    -- 
53457    --
53458    -- set accounting line type info
53459    --
53460    xla_ae_lines_pkg.SetAcctLineType
53461       (p_component_type             => l_component_type
53462       ,p_event_type_code            => l_event_type_code
53463       ,p_line_definition_owner_code => l_line_definition_owner_code
53464       ,p_line_definition_code       => l_line_definition_code
53465       ,p_accounting_line_code       => l_component_code
53466       ,p_accounting_line_type_code  => l_component_type_code
53467       ,p_accounting_line_appl_id    => l_component_appl_id
53468       ,p_amb_context_code           => l_amb_context_code
53469       ,p_entity_code                => l_entity_code
53470       ,p_event_class_code           => l_event_class_code);
53471    --
53472    -- set accounting class
53473    --
53474    xla_ae_lines_pkg.SetAcctClass(
53475            p_accounting_class_code  => 'DEFERRED_COGS'
53476          , p_ae_header_id           => l_ae_header_id
53477          );
53478 
53479    --
53480    -- set rounding class
53481    --
53482    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53483                       'DEFERRED_COGS';
53484 
53485    --
53486    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53487    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53488    --
53489    -- bulk performance
53490    --
53491    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53492 
53493    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53494       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53495 
53496    -- 4955764
53497    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53498       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53499 
53500    -- 4458381 Public Sector Enh
53501    
53502    --
53503    -- set accounting attributes for the line type
53504    --
53505    l_entered_amt_idx := 3;
53506    l_accted_amt_idx  := 8;
53507    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53508    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53509    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
53510    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53511    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
53512    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
53513    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
53514    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
53515    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
53516    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
53517    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
53518    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
53519    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
53520    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
53521    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
53522    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
53523    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
53524 
53525    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53526    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53527 
53528    ---------------------------------------------------------------------------------------------------------------
53529    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53530    ---------------------------------------------------------------------------------------------------------------
53531    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53532 
53533    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53534    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53535 
53536    IF xla_accounting_cache_pkg.GetValueChar
53537          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53538          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53539    AND l_bflow_method_code = 'PRIOR_ENTRY'
53540 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53541    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53542          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53543        )
53544    THEN
53545          xla_ae_lines_pkg.BflowUpgEntry
53546            (p_business_method_code    => l_bflow_method_code
53547            ,p_business_class_code     => l_bflow_class_code
53548            ,p_balance_type            => l_balance_type_code);
53549    ELSE
53550       NULL;
53551 -- No business flow processing for business flow method of NONE.
53552    END IF;
53553 
53554    --
53555    -- call analytical criteria
53556    --
53557    
53558    --
53559    -- call description
53560    --
53561    
53562 xla_ae_lines_pkg.SetLineDescription(
53563    p_ae_header_id => l_ae_header_id
53564   ,p_description  => Description_1 (
53565      p_application_id         => p_application_id
53566    , p_ae_header_id           => l_ae_header_id 
53567 , p_source_1 => p_source_1
53568 , p_source_2 => p_source_2
53569 , p_source_3 => p_source_3
53570 , p_source_4 => p_source_4
53571 , p_source_5 => p_source_5
53572    )
53573 );
53574 
53575 
53576    --
53577    -- call ADRs
53578    -- Bug 4922099
53579    --
53580    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53581         (NVL(l_actual_upg_option, 'N') = 'O') OR
53582         (NVL(l_enc_upg_option, 'N') = 'O')
53583       )
53584    THEN
53585    NULL;
53586    --
53587    --
53588    
53589   l_ccid := AcctDerRule_6(
53590            p_application_id           => p_application_id
53591          , p_ae_header_id             => l_ae_header_id 
53592 , p_source_11 => p_source_11
53593          , x_transaction_coa_id       => l_adr_transaction_coa_id
53594          , x_accounting_coa_id        => l_adr_accounting_coa_id
53595          , x_value_type_code          => l_adr_value_type_code
53596          , p_side                     => 'NA'
53597    );
53598 
53599    xla_ae_lines_pkg.set_ccid(
53600     p_code_combination_id          => l_ccid
53601   , p_value_type_code              => l_adr_value_type_code
53602   , p_transaction_coa_id           => l_adr_transaction_coa_id
53603   , p_accounting_coa_id            => l_adr_accounting_coa_id
53604   , p_adr_code                     => 'CST_DEFAULT'
53605   , p_adr_type_code                => 'S'
53606   , p_component_type               => l_component_type
53607   , p_component_code               => l_component_code
53608   , p_component_type_code          => l_component_type_code
53609   , p_component_appl_id            => l_component_appl_id
53610   , p_amb_context_code             => l_amb_context_code
53611   , p_side                         => 'NA'
53612   );
53613 
53614 
53615    --
53616    --
53617    END IF;
53618    --
53619    -- Bug 4922099
53620    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53621           (NVL(l_enc_upg_option, 'N') = 'O')
53622         ) AND
53623         (l_bflow_method_code = 'PRIOR_ENTRY')
53624       )
53625    THEN
53626       IF
53627       --
53628       1 = 2
53629       --
53630       THEN
53631       xla_accounting_err_pkg.build_message
53632                                     (p_appli_s_name            => 'XLA'
53633                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53634                                     ,p_token_1                 => 'LINE_NUMBER'
53635                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53636                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53637                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53638                                                                              l_component_type
53639                                                                             ,l_component_code
53640                                                                             ,l_component_type_code
53641                                                                             ,l_component_appl_id
53642                                                                             ,l_amb_context_code
53643                                                                             ,l_entity_code
53644                                                                             ,l_event_class_code
53645                                                                            )
53646                                     ,p_token_3                 => 'OWNER'
53647                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53648                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53649                                                                           ,p_lookup_code    => l_component_type_code
53650                                                                          )
53651                                     ,p_token_4                 => 'PRODUCT_NAME'
53652                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53653                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53654                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53655                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53656                                     ,p_ae_header_id            =>  NULL
53657                                        );
53658 
53659         IF (C_LEVEL_ERROR>= g_log_level) THEN
53660                  trace
53661                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53662                       ,p_level    => C_LEVEL_ERROR
53663                       ,p_module   => l_log_module);
53664         END IF;
53665       END IF;
53666    END IF;
53667    --
53668    --
53669    ------------------------------------------------------------------------------------------------
53670    -- 4219869 Business Flow
53671    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53672    -- Prior Entry.  Currently, the following code is always generated.
53673    ------------------------------------------------------------------------------------------------
53674    XLA_AE_LINES_PKG.ValidateCurrentLine;
53675 
53676    ------------------------------------------------------------------------------------
53677    -- 4219869 Business Flow
53678    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53679    ------------------------------------------------------------------------------------
53680    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53681 
53682    ----------------------------------------------------------------------------------
53683    -- 4219869 Business Flow
53684    -- Update journal entry status -- Need to generate this within IF <condition>
53685    ----------------------------------------------------------------------------------
53686    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53687          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53688          ,p_balance_type_code => l_balance_type_code
53689          );
53690 
53691    -------------------------------------------------------------------------------------------
53692    -- 4262811 - Generate the Accrual Reversal lines
53693    -------------------------------------------------------------------------------------------
53694    BEGIN
53695       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53696                               (g_array_event(p_event_id).array_value_num('header_index'));
53697       IF l_acc_rev_flag IS NULL THEN
53698          l_acc_rev_flag := 'N';
53699       END IF;
53700    EXCEPTION
53701       WHEN OTHERS THEN
53702          l_acc_rev_flag := 'N';
53703    END;
53704    --
53705    IF (l_acc_rev_flag = 'Y') THEN
53706 
53707        -- 4645092  ------------------------------------------------------------------------------
53708        -- To allow MPA report to determine if it should generate report process
53709        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53710        ------------------------------------------------------------------------------------------
53711 
53712        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53713        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53714    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53715    -- call ADRs
53716    -- Bug 4922099
53717    --
53718    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53719         (NVL(l_actual_upg_option, 'N') = 'O') OR
53720         (NVL(l_enc_upg_option, 'N') = 'O')
53721       )
53722    THEN
53723    NULL;
53724    --
53725    --
53726    
53727   l_ccid := AcctDerRule_6(
53728            p_application_id           => p_application_id
53729          , p_ae_header_id             => l_ae_header_id 
53730 , p_source_11 => p_source_11
53731          , x_transaction_coa_id       => l_adr_transaction_coa_id
53732          , x_accounting_coa_id        => l_adr_accounting_coa_id
53733          , x_value_type_code          => l_adr_value_type_code
53734          , p_side                     => 'NA'
53735    );
53736 
53737    xla_ae_lines_pkg.set_ccid(
53738     p_code_combination_id          => l_ccid
53739   , p_value_type_code              => l_adr_value_type_code
53740   , p_transaction_coa_id           => l_adr_transaction_coa_id
53741   , p_accounting_coa_id            => l_adr_accounting_coa_id
53742   , p_adr_code                     => 'CST_DEFAULT'
53743   , p_adr_type_code                => 'S'
53744   , p_component_type               => l_component_type
53745   , p_component_code               => l_component_code
53746   , p_component_type_code          => l_component_type_code
53747   , p_component_appl_id            => l_component_appl_id
53748   , p_amb_context_code             => l_amb_context_code
53749   , p_side                         => 'NA'
53750   );
53751 
53752 
53753    --
53754    --
53755    END IF;
53756 
53757        --
53758        -- Update the line information that should be overwritten
53759        --
53760        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53761                                          p_header_num   => 1);
53762        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53763 
53764        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53765 
53766        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53767           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53768        END IF;
53769 
53770       --
53771       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53772       --
53773       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53774           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53775       ELSE
53776           ---------------------------------------------------------------------------------------------------
53777           -- 4262811a Switch Sign
53778           ---------------------------------------------------------------------------------------------------
53779           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53780           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53781                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53782           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53783                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53784           -- 5132302
53785           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53786                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53787 
53788       END IF;
53789 
53790       -- 4955764
53791       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53792       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53793 
53794 
53795       XLA_AE_LINES_PKG.ValidateCurrentLine;
53796       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53797 
53798       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53799                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53800                ,p_balance_type_code => l_balance_type_code);
53801 
53802    END IF;
53803 
53804    -----------------------------------------------------------------------------------------
53805    -- 4262811 Multiperiod Accounting
53806    -----------------------------------------------------------------------------------------
53807      -- No MPA option is assigned.
53808 
53809 
53810 END IF;
53811 END IF;
53812 --
53813 
53814 --
53815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53816    trace
53817       (p_msg      => 'END of AcctLineType_119'
53818       ,p_level    => C_LEVEL_PROCEDURE
53819       ,p_module   => l_log_module);
53820 END IF;
53821 --
53822 EXCEPTION
53823   WHEN xla_exceptions_pkg.application_exception THEN
53824       RAISE;
53825   WHEN OTHERS THEN
53826        xla_exceptions_pkg.raise_message
53827            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_119');
53828 END AcctLineType_119;
53829 --
53830 
53831 ---------------------------------------
53832 --
53833 -- PRIVATE FUNCTION
53834 --         AcctLineType_120
53835 --
53836 ---------------------------------------
53837 PROCEDURE AcctLineType_120 (
53838   p_application_id        IN NUMBER
53839  ,p_event_id              IN NUMBER
53840  ,p_calculate_acctd_flag  IN VARCHAR2
53841  ,p_calculate_g_l_flag    IN VARCHAR2
53842  ,p_actual_flag           IN OUT VARCHAR2
53843  ,p_balance_type_code     OUT VARCHAR2
53844  ,p_gain_or_loss_ref      OUT VARCHAR2
53845  
53846 --TRANSACTION_ID
53847  , p_source_1            IN NUMBER
53848 --Item Concatenated Segments
53849  , p_source_2            IN VARCHAR2
53850 --Transaction Quantity
53851  , p_source_3            IN NUMBER
53852 --Transaction Unit of Measure Code
53853  , p_source_4            IN VARCHAR2
53854 --Inventory Transaction Type Description
53855  , p_source_5            IN VARCHAR2
53856 --Cost Management Default Account
53857  , p_source_11            IN NUMBER
53858 --DISTRIBUTION_IDENTIFIER
53859  , p_source_84            IN NUMBER
53860 --Distribution Type
53861  , p_source_85            IN VARCHAR2
53862  , p_source_85_meaning    IN VARCHAR2
53863 --Entered Currency Code
53864  , p_source_88            IN VARCHAR2
53865 --Entered Amount
53866  , p_source_91            IN NUMBER
53867 --Currency Conversion Date
53868  , p_source_92            IN DATE
53869 --Currency Conversion Rate
53870  , p_source_93            IN NUMBER
53871 --Currency Conversion Type
53872  , p_source_94            IN VARCHAR2
53873 --Accounted Amount
53874  , p_source_95            IN NUMBER
53875 --Accounting Line Type
53876  , p_source_97            IN NUMBER
53877 )
53878 IS
53879 
53880 l_component_type              VARCHAR2(80);
53881 l_component_code              VARCHAR2(30);
53882 l_component_type_code         VARCHAR2(1);
53883 l_component_appl_id           INTEGER;
53884 l_amb_context_code            VARCHAR2(30);
53885 l_entity_code                 VARCHAR2(30);
53886 l_event_class_code            VARCHAR2(30);
53887 l_ae_header_id                NUMBER;
53888 l_event_type_code             VARCHAR2(30);
53889 l_line_definition_code        VARCHAR2(30);
53890 l_line_definition_owner_code  VARCHAR2(1);
53891 --
53892 -- adr variables
53893 l_segment                     VARCHAR2(30);
53894 l_ccid                        NUMBER;
53895 l_adr_transaction_coa_id      NUMBER;
53896 l_adr_accounting_coa_id       NUMBER;
53897 l_adr_flexfield_segment_code  VARCHAR2(30);
53898 l_adr_flex_value_set_id       NUMBER;
53899 l_adr_value_type_code         VARCHAR2(30);
53900 l_adr_value_combination_id    NUMBER;
53901 l_adr_value_segment_code      VARCHAR2(30);
53902 
53903 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53904 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53905 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53906 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53907 
53908 -- 4262811 Variables ------------------------------------------------------------------------------------------
53909 l_entered_amt_idx             NUMBER;
53910 l_accted_amt_idx              NUMBER;
53911 l_acc_rev_flag                VARCHAR2(1);
53912 l_accrual_line_num            NUMBER;
53913 l_tmp_amt                     NUMBER;
53914 l_acc_rev_natural_side_code   VARCHAR2(1);
53915 
53916 l_num_entries                 NUMBER;
53917 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53918 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53919 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53920 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53921 l_recog_line_1                NUMBER;
53922 l_recog_line_2                NUMBER;
53923 
53924 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53925 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53926 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53927 
53928 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53929 
53930 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53931 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53932 
53933 ---------------------------------------------------------------------------------------------------------------
53934 
53935 
53936 --
53937 -- bulk performance
53938 --
53939 l_balance_type_code           VARCHAR2(1);
53940 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53941 l_log_module                  VARCHAR2(240);
53942 
53943 --
53944 -- Upgrade strategy
53945 --
53946 l_actual_upg_option           VARCHAR2(1);
53947 l_enc_upg_option           VARCHAR2(1);
53948 
53949 --
53950 BEGIN
53951 --
53952 IF g_log_enabled THEN
53953       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
53954 END IF;
53955 --
53956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53957 
53958       trace
53959          (p_msg      => 'BEGIN of AcctLineType_120'
53960          ,p_level    => C_LEVEL_PROCEDURE
53961          ,p_module   => l_log_module);
53962 
53963 END IF;
53964 --
53965 l_component_type             := 'AMB_JLT';
53966 l_component_code             := 'DEFERRED_COGS';
53967 l_component_type_code        := 'S';
53968 l_component_appl_id          :=  707;
53969 l_amb_context_code           := 'DEFAULT';
53970 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
53971 l_event_class_code           := 'SALES_ORDER';
53972 l_event_type_code            := 'RMA_RCPT';
53973 l_line_definition_owner_code := 'S';
53974 l_line_definition_code       := 'PI_RMA_RCPT';
53975 --
53976 l_balance_type_code          := 'A';
53977 l_segment                     := NULL;
53978 l_ccid                        := NULL;
53979 l_adr_transaction_coa_id      := NULL;
53980 l_adr_accounting_coa_id       := NULL;
53981 l_adr_flexfield_segment_code  := NULL;
53982 l_adr_flex_value_set_id       := NULL;
53983 l_adr_value_type_code         := NULL;
53984 l_adr_value_combination_id    := NULL;
53985 l_adr_value_segment_code      := NULL;
53986 
53987 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53988 l_bflow_class_code           := '';    -- 4219869 Business Flow
53989 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53990 l_budgetary_control_flag     := 'N';
53991 
53992 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53993 l_bflow_applied_to_amt       := NULL; -- 5132302
53994 l_entered_amt_idx            := NULL;          -- 4262811
53995 l_accted_amt_idx             := NULL;          -- 4262811
53996 l_acc_rev_flag               := NULL;          -- 4262811
53997 l_accrual_line_num           := NULL;          -- 4262811
53998 l_tmp_amt                    := NULL;          -- 4262811
53999 --
54000  
54001 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54002     l_balance_type_code <> 'B' THEN
54003 IF NVL(p_source_97,9E125) =  36
54004  THEN 
54005 
54006    --
54007    XLA_AE_LINES_PKG.SetNewLine;
54008 
54009    p_balance_type_code          := l_balance_type_code;
54010    -- set the flag so later we will know whether the gain loss line needs to be created
54011    
54012    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54013      p_actual_flag :='A';
54014    END IF;
54015 
54016    --
54017    -- bulk performance
54018    --
54019    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54020                                       p_header_num   => 0); -- 4262811
54021    --
54022    -- set accounting line options
54023    --
54024    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54025            p_natural_side_code          => 'D'
54026          , p_gain_or_loss_flag          => 'N'
54027          , p_gl_transfer_mode_code      => 'S'
54028          , p_acct_entry_type_code       => 'A'
54029          , p_switch_side_flag           => 'Y'
54030          , p_merge_duplicate_code       => 'N'
54031          );
54032    --
54033    l_acc_rev_natural_side_code := 'C';  -- 4262811
54034    -- 
54035    --
54036    -- set accounting line type info
54037    --
54038    xla_ae_lines_pkg.SetAcctLineType
54039       (p_component_type             => l_component_type
54040       ,p_event_type_code            => l_event_type_code
54041       ,p_line_definition_owner_code => l_line_definition_owner_code
54042       ,p_line_definition_code       => l_line_definition_code
54043       ,p_accounting_line_code       => l_component_code
54044       ,p_accounting_line_type_code  => l_component_type_code
54045       ,p_accounting_line_appl_id    => l_component_appl_id
54046       ,p_amb_context_code           => l_amb_context_code
54047       ,p_entity_code                => l_entity_code
54048       ,p_event_class_code           => l_event_class_code);
54049    --
54050    -- set accounting class
54051    --
54052    xla_ae_lines_pkg.SetAcctClass(
54053            p_accounting_class_code  => 'DEFERRED_COGS'
54054          , p_ae_header_id           => l_ae_header_id
54055          );
54056 
54057    --
54058    -- set rounding class
54059    --
54060    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54061                       'DEFERRED_COGS';
54062 
54063    --
54064    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54065    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54066    --
54067    -- bulk performance
54068    --
54069    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54070 
54071    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54072       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54073 
54074    -- 4955764
54075    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54076       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54077 
54078    -- 4458381 Public Sector Enh
54079    
54080    --
54081    -- set accounting attributes for the line type
54082    --
54083    l_entered_amt_idx := 3;
54084    l_accted_amt_idx  := 8;
54085    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54086    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54087    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
54088    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54089    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
54090    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54091    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
54092    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54093    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
54094    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54095    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
54096    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54097    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
54098    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54099    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
54100    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54101    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
54102 
54103    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54104    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54105 
54106    ---------------------------------------------------------------------------------------------------------------
54107    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54108    ---------------------------------------------------------------------------------------------------------------
54109    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54110 
54111    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54112    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54113 
54114    IF xla_accounting_cache_pkg.GetValueChar
54115          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54116          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54117    AND l_bflow_method_code = 'PRIOR_ENTRY'
54118 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54119    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54120          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54121        )
54122    THEN
54123          xla_ae_lines_pkg.BflowUpgEntry
54124            (p_business_method_code    => l_bflow_method_code
54125            ,p_business_class_code     => l_bflow_class_code
54126            ,p_balance_type            => l_balance_type_code);
54127    ELSE
54128       NULL;
54129 -- No business flow processing for business flow method of NONE.
54130    END IF;
54131 
54132    --
54133    -- call analytical criteria
54134    --
54135    
54136    --
54137    -- call description
54138    --
54139    
54140 xla_ae_lines_pkg.SetLineDescription(
54141    p_ae_header_id => l_ae_header_id
54142   ,p_description  => Description_1 (
54143      p_application_id         => p_application_id
54144    , p_ae_header_id           => l_ae_header_id 
54145 , p_source_1 => p_source_1
54146 , p_source_2 => p_source_2
54147 , p_source_3 => p_source_3
54148 , p_source_4 => p_source_4
54149 , p_source_5 => p_source_5
54150    )
54151 );
54152 
54153 
54154    --
54155    -- call ADRs
54156    -- Bug 4922099
54157    --
54158    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54159         (NVL(l_actual_upg_option, 'N') = 'O') OR
54160         (NVL(l_enc_upg_option, 'N') = 'O')
54161       )
54162    THEN
54163    NULL;
54164    --
54165    --
54166    
54167   l_ccid := AcctDerRule_6(
54168            p_application_id           => p_application_id
54169          , p_ae_header_id             => l_ae_header_id 
54170 , p_source_11 => p_source_11
54171          , x_transaction_coa_id       => l_adr_transaction_coa_id
54172          , x_accounting_coa_id        => l_adr_accounting_coa_id
54173          , x_value_type_code          => l_adr_value_type_code
54174          , p_side                     => 'NA'
54175    );
54176 
54177    xla_ae_lines_pkg.set_ccid(
54178     p_code_combination_id          => l_ccid
54179   , p_value_type_code              => l_adr_value_type_code
54180   , p_transaction_coa_id           => l_adr_transaction_coa_id
54181   , p_accounting_coa_id            => l_adr_accounting_coa_id
54182   , p_adr_code                     => 'CST_DEFAULT'
54183   , p_adr_type_code                => 'S'
54184   , p_component_type               => l_component_type
54185   , p_component_code               => l_component_code
54186   , p_component_type_code          => l_component_type_code
54187   , p_component_appl_id            => l_component_appl_id
54188   , p_amb_context_code             => l_amb_context_code
54189   , p_side                         => 'NA'
54190   );
54191 
54192 
54193    --
54194    --
54195    END IF;
54196    --
54197    -- Bug 4922099
54198    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54199           (NVL(l_enc_upg_option, 'N') = 'O')
54200         ) AND
54201         (l_bflow_method_code = 'PRIOR_ENTRY')
54202       )
54203    THEN
54204       IF
54205       --
54206       1 = 2
54207       --
54208       THEN
54209       xla_accounting_err_pkg.build_message
54210                                     (p_appli_s_name            => 'XLA'
54211                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54212                                     ,p_token_1                 => 'LINE_NUMBER'
54213                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54214                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54215                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54216                                                                              l_component_type
54217                                                                             ,l_component_code
54218                                                                             ,l_component_type_code
54219                                                                             ,l_component_appl_id
54220                                                                             ,l_amb_context_code
54221                                                                             ,l_entity_code
54222                                                                             ,l_event_class_code
54223                                                                            )
54224                                     ,p_token_3                 => 'OWNER'
54225                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54226                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54227                                                                           ,p_lookup_code    => l_component_type_code
54228                                                                          )
54229                                     ,p_token_4                 => 'PRODUCT_NAME'
54230                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54231                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54232                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54233                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54234                                     ,p_ae_header_id            =>  NULL
54235                                        );
54236 
54237         IF (C_LEVEL_ERROR>= g_log_level) THEN
54238                  trace
54239                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54240                       ,p_level    => C_LEVEL_ERROR
54241                       ,p_module   => l_log_module);
54242         END IF;
54243       END IF;
54244    END IF;
54245    --
54246    --
54247    ------------------------------------------------------------------------------------------------
54248    -- 4219869 Business Flow
54249    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54250    -- Prior Entry.  Currently, the following code is always generated.
54251    ------------------------------------------------------------------------------------------------
54252    XLA_AE_LINES_PKG.ValidateCurrentLine;
54253 
54254    ------------------------------------------------------------------------------------
54255    -- 4219869 Business Flow
54256    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54257    ------------------------------------------------------------------------------------
54258    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54259 
54260    ----------------------------------------------------------------------------------
54261    -- 4219869 Business Flow
54262    -- Update journal entry status -- Need to generate this within IF <condition>
54263    ----------------------------------------------------------------------------------
54264    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54265          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54266          ,p_balance_type_code => l_balance_type_code
54267          );
54268 
54269    -------------------------------------------------------------------------------------------
54270    -- 4262811 - Generate the Accrual Reversal lines
54271    -------------------------------------------------------------------------------------------
54272    BEGIN
54273       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54274                               (g_array_event(p_event_id).array_value_num('header_index'));
54275       IF l_acc_rev_flag IS NULL THEN
54276          l_acc_rev_flag := 'N';
54277       END IF;
54278    EXCEPTION
54279       WHEN OTHERS THEN
54280          l_acc_rev_flag := 'N';
54281    END;
54282    --
54283    IF (l_acc_rev_flag = 'Y') THEN
54284 
54285        -- 4645092  ------------------------------------------------------------------------------
54286        -- To allow MPA report to determine if it should generate report process
54287        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54288        ------------------------------------------------------------------------------------------
54289 
54290        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54291        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54292    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54293    -- call ADRs
54294    -- Bug 4922099
54295    --
54296    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54297         (NVL(l_actual_upg_option, 'N') = 'O') OR
54298         (NVL(l_enc_upg_option, 'N') = 'O')
54299       )
54300    THEN
54301    NULL;
54302    --
54303    --
54304    
54305   l_ccid := AcctDerRule_6(
54306            p_application_id           => p_application_id
54307          , p_ae_header_id             => l_ae_header_id 
54308 , p_source_11 => p_source_11
54309          , x_transaction_coa_id       => l_adr_transaction_coa_id
54310          , x_accounting_coa_id        => l_adr_accounting_coa_id
54311          , x_value_type_code          => l_adr_value_type_code
54312          , p_side                     => 'NA'
54313    );
54314 
54315    xla_ae_lines_pkg.set_ccid(
54316     p_code_combination_id          => l_ccid
54317   , p_value_type_code              => l_adr_value_type_code
54318   , p_transaction_coa_id           => l_adr_transaction_coa_id
54319   , p_accounting_coa_id            => l_adr_accounting_coa_id
54320   , p_adr_code                     => 'CST_DEFAULT'
54321   , p_adr_type_code                => 'S'
54322   , p_component_type               => l_component_type
54323   , p_component_code               => l_component_code
54324   , p_component_type_code          => l_component_type_code
54325   , p_component_appl_id            => l_component_appl_id
54326   , p_amb_context_code             => l_amb_context_code
54327   , p_side                         => 'NA'
54328   );
54329 
54330 
54331    --
54332    --
54333    END IF;
54334 
54335        --
54336        -- Update the line information that should be overwritten
54337        --
54338        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54339                                          p_header_num   => 1);
54340        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54341 
54342        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54343 
54344        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54345           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54346        END IF;
54347 
54348       --
54349       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54350       --
54351       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54352           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54353       ELSE
54354           ---------------------------------------------------------------------------------------------------
54355           -- 4262811a Switch Sign
54356           ---------------------------------------------------------------------------------------------------
54357           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54358           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54359                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54360           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54361                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54362           -- 5132302
54363           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54364                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54365 
54366       END IF;
54367 
54368       -- 4955764
54369       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54370       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54371 
54372 
54373       XLA_AE_LINES_PKG.ValidateCurrentLine;
54374       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54375 
54376       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54377                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54378                ,p_balance_type_code => l_balance_type_code);
54379 
54380    END IF;
54381 
54382    -----------------------------------------------------------------------------------------
54383    -- 4262811 Multiperiod Accounting
54384    -----------------------------------------------------------------------------------------
54385      -- No MPA option is assigned.
54386 
54387 
54388 END IF;
54389 END IF;
54390 --
54391 
54392 --
54393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54394    trace
54395       (p_msg      => 'END of AcctLineType_120'
54396       ,p_level    => C_LEVEL_PROCEDURE
54397       ,p_module   => l_log_module);
54398 END IF;
54399 --
54400 EXCEPTION
54401   WHEN xla_exceptions_pkg.application_exception THEN
54402       RAISE;
54403   WHEN OTHERS THEN
54404        xla_exceptions_pkg.raise_message
54405            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_120');
54406 END AcctLineType_120;
54407 --
54408 
54409 ---------------------------------------
54410 --
54411 -- PRIVATE FUNCTION
54412 --         AcctLineType_121
54413 --
54414 ---------------------------------------
54415 PROCEDURE AcctLineType_121 (
54416   p_application_id        IN NUMBER
54417  ,p_event_id              IN NUMBER
54418  ,p_calculate_acctd_flag  IN VARCHAR2
54419  ,p_calculate_g_l_flag    IN VARCHAR2
54420  ,p_actual_flag           IN OUT VARCHAR2
54421  ,p_balance_type_code     OUT VARCHAR2
54422  ,p_gain_or_loss_ref      OUT VARCHAR2
54423  
54424 --TRANSACTION_ID
54425  , p_source_1            IN NUMBER
54426 --Item Concatenated Segments
54427  , p_source_2            IN VARCHAR2
54428 --Transaction Quantity
54429  , p_source_3            IN NUMBER
54430 --Transaction Unit of Measure Code
54431  , p_source_4            IN VARCHAR2
54432 --Inventory Transaction Type Description
54433  , p_source_5            IN VARCHAR2
54434 --Cost Management Default Account
54435  , p_source_11            IN NUMBER
54436 --DISTRIBUTION_IDENTIFIER
54437  , p_source_84            IN NUMBER
54438 --Distribution Type
54439  , p_source_85            IN VARCHAR2
54440  , p_source_85_meaning    IN VARCHAR2
54441 --Entered Currency Code
54442  , p_source_88            IN VARCHAR2
54443 --Entered Amount
54444  , p_source_91            IN NUMBER
54445 --Currency Conversion Date
54446  , p_source_92            IN DATE
54447 --Currency Conversion Rate
54448  , p_source_93            IN NUMBER
54449 --Currency Conversion Type
54450  , p_source_94            IN VARCHAR2
54451 --Accounted Amount
54452  , p_source_95            IN NUMBER
54453 --Accounting Line Type
54454  , p_source_97            IN NUMBER
54455 )
54456 IS
54457 
54458 l_component_type              VARCHAR2(80);
54459 l_component_code              VARCHAR2(30);
54460 l_component_type_code         VARCHAR2(1);
54461 l_component_appl_id           INTEGER;
54462 l_amb_context_code            VARCHAR2(30);
54463 l_entity_code                 VARCHAR2(30);
54464 l_event_class_code            VARCHAR2(30);
54465 l_ae_header_id                NUMBER;
54466 l_event_type_code             VARCHAR2(30);
54467 l_line_definition_code        VARCHAR2(30);
54468 l_line_definition_owner_code  VARCHAR2(1);
54469 --
54470 -- adr variables
54471 l_segment                     VARCHAR2(30);
54472 l_ccid                        NUMBER;
54473 l_adr_transaction_coa_id      NUMBER;
54474 l_adr_accounting_coa_id       NUMBER;
54475 l_adr_flexfield_segment_code  VARCHAR2(30);
54476 l_adr_flex_value_set_id       NUMBER;
54477 l_adr_value_type_code         VARCHAR2(30);
54478 l_adr_value_combination_id    NUMBER;
54479 l_adr_value_segment_code      VARCHAR2(30);
54480 
54481 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54482 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54483 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54484 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54485 
54486 -- 4262811 Variables ------------------------------------------------------------------------------------------
54487 l_entered_amt_idx             NUMBER;
54488 l_accted_amt_idx              NUMBER;
54489 l_acc_rev_flag                VARCHAR2(1);
54490 l_accrual_line_num            NUMBER;
54491 l_tmp_amt                     NUMBER;
54492 l_acc_rev_natural_side_code   VARCHAR2(1);
54493 
54494 l_num_entries                 NUMBER;
54495 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54496 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54497 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54498 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54499 l_recog_line_1                NUMBER;
54500 l_recog_line_2                NUMBER;
54501 
54502 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54503 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54504 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54505 
54506 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54507 
54508 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54509 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54510 
54511 ---------------------------------------------------------------------------------------------------------------
54512 
54513 
54514 --
54515 -- bulk performance
54516 --
54517 l_balance_type_code           VARCHAR2(1);
54518 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54519 l_log_module                  VARCHAR2(240);
54520 
54521 --
54522 -- Upgrade strategy
54523 --
54524 l_actual_upg_option           VARCHAR2(1);
54525 l_enc_upg_option           VARCHAR2(1);
54526 
54527 --
54528 BEGIN
54529 --
54530 IF g_log_enabled THEN
54531       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
54532 END IF;
54533 --
54534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54535 
54536       trace
54537          (p_msg      => 'BEGIN of AcctLineType_121'
54538          ,p_level    => C_LEVEL_PROCEDURE
54539          ,p_module   => l_log_module);
54540 
54541 END IF;
54542 --
54543 l_component_type             := 'AMB_JLT';
54544 l_component_code             := 'DEFERRED_COGS';
54545 l_component_type_code        := 'S';
54546 l_component_appl_id          :=  707;
54547 l_amb_context_code           := 'DEFAULT';
54548 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
54549 l_event_class_code           := 'SALES_ORDER';
54550 l_event_type_code            := 'RMA_RETURN';
54551 l_line_definition_owner_code := 'S';
54552 l_line_definition_code       := 'PI_RMA_RETURN';
54553 --
54554 l_balance_type_code          := 'A';
54555 l_segment                     := NULL;
54556 l_ccid                        := NULL;
54557 l_adr_transaction_coa_id      := NULL;
54558 l_adr_accounting_coa_id       := NULL;
54559 l_adr_flexfield_segment_code  := NULL;
54560 l_adr_flex_value_set_id       := NULL;
54561 l_adr_value_type_code         := NULL;
54562 l_adr_value_combination_id    := NULL;
54563 l_adr_value_segment_code      := NULL;
54564 
54565 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54566 l_bflow_class_code           := '';    -- 4219869 Business Flow
54567 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54568 l_budgetary_control_flag     := 'N';
54569 
54570 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54571 l_bflow_applied_to_amt       := NULL; -- 5132302
54572 l_entered_amt_idx            := NULL;          -- 4262811
54573 l_accted_amt_idx             := NULL;          -- 4262811
54574 l_acc_rev_flag               := NULL;          -- 4262811
54575 l_accrual_line_num           := NULL;          -- 4262811
54576 l_tmp_amt                    := NULL;          -- 4262811
54577 --
54578  
54579 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54580     l_balance_type_code <> 'B' THEN
54581 IF NVL(p_source_97,9E125) =  36
54582  THEN 
54583 
54584    --
54585    XLA_AE_LINES_PKG.SetNewLine;
54586 
54587    p_balance_type_code          := l_balance_type_code;
54588    -- set the flag so later we will know whether the gain loss line needs to be created
54589    
54590    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54591      p_actual_flag :='A';
54592    END IF;
54593 
54594    --
54595    -- bulk performance
54596    --
54597    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54598                                       p_header_num   => 0); -- 4262811
54599    --
54600    -- set accounting line options
54601    --
54602    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54603            p_natural_side_code          => 'D'
54604          , p_gain_or_loss_flag          => 'N'
54605          , p_gl_transfer_mode_code      => 'S'
54606          , p_acct_entry_type_code       => 'A'
54607          , p_switch_side_flag           => 'Y'
54608          , p_merge_duplicate_code       => 'N'
54609          );
54610    --
54611    l_acc_rev_natural_side_code := 'C';  -- 4262811
54612    -- 
54613    --
54614    -- set accounting line type info
54615    --
54616    xla_ae_lines_pkg.SetAcctLineType
54617       (p_component_type             => l_component_type
54618       ,p_event_type_code            => l_event_type_code
54619       ,p_line_definition_owner_code => l_line_definition_owner_code
54620       ,p_line_definition_code       => l_line_definition_code
54621       ,p_accounting_line_code       => l_component_code
54622       ,p_accounting_line_type_code  => l_component_type_code
54623       ,p_accounting_line_appl_id    => l_component_appl_id
54624       ,p_amb_context_code           => l_amb_context_code
54625       ,p_entity_code                => l_entity_code
54626       ,p_event_class_code           => l_event_class_code);
54627    --
54628    -- set accounting class
54629    --
54630    xla_ae_lines_pkg.SetAcctClass(
54631            p_accounting_class_code  => 'DEFERRED_COGS'
54632          , p_ae_header_id           => l_ae_header_id
54633          );
54634 
54635    --
54636    -- set rounding class
54637    --
54638    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54639                       'DEFERRED_COGS';
54640 
54641    --
54642    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54643    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54644    --
54645    -- bulk performance
54646    --
54647    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54648 
54649    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54650       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54651 
54652    -- 4955764
54653    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54654       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54655 
54656    -- 4458381 Public Sector Enh
54657    
54658    --
54659    -- set accounting attributes for the line type
54660    --
54661    l_entered_amt_idx := 3;
54662    l_accted_amt_idx  := 8;
54663    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54664    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54665    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
54666    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54667    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
54668    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54669    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
54670    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54671    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
54672    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54673    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
54674    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54675    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
54676    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54677    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
54678    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54679    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
54680 
54681    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54682    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54683 
54684    ---------------------------------------------------------------------------------------------------------------
54685    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54686    ---------------------------------------------------------------------------------------------------------------
54687    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54688 
54689    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54690    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54691 
54692    IF xla_accounting_cache_pkg.GetValueChar
54693          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54694          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54695    AND l_bflow_method_code = 'PRIOR_ENTRY'
54696 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54697    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54698          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54699        )
54700    THEN
54701          xla_ae_lines_pkg.BflowUpgEntry
54702            (p_business_method_code    => l_bflow_method_code
54703            ,p_business_class_code     => l_bflow_class_code
54704            ,p_balance_type            => l_balance_type_code);
54705    ELSE
54706       NULL;
54707 -- No business flow processing for business flow method of NONE.
54708    END IF;
54709 
54710    --
54711    -- call analytical criteria
54712    --
54713    
54714    --
54715    -- call description
54716    --
54717    
54718 xla_ae_lines_pkg.SetLineDescription(
54719    p_ae_header_id => l_ae_header_id
54720   ,p_description  => Description_1 (
54721      p_application_id         => p_application_id
54722    , p_ae_header_id           => l_ae_header_id 
54723 , p_source_1 => p_source_1
54724 , p_source_2 => p_source_2
54725 , p_source_3 => p_source_3
54726 , p_source_4 => p_source_4
54727 , p_source_5 => p_source_5
54728    )
54729 );
54730 
54731 
54732    --
54733    -- call ADRs
54734    -- Bug 4922099
54735    --
54736    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54737         (NVL(l_actual_upg_option, 'N') = 'O') OR
54738         (NVL(l_enc_upg_option, 'N') = 'O')
54739       )
54740    THEN
54741    NULL;
54742    --
54743    --
54744    
54745   l_ccid := AcctDerRule_6(
54746            p_application_id           => p_application_id
54747          , p_ae_header_id             => l_ae_header_id 
54748 , p_source_11 => p_source_11
54749          , x_transaction_coa_id       => l_adr_transaction_coa_id
54750          , x_accounting_coa_id        => l_adr_accounting_coa_id
54751          , x_value_type_code          => l_adr_value_type_code
54752          , p_side                     => 'NA'
54753    );
54754 
54755    xla_ae_lines_pkg.set_ccid(
54756     p_code_combination_id          => l_ccid
54757   , p_value_type_code              => l_adr_value_type_code
54758   , p_transaction_coa_id           => l_adr_transaction_coa_id
54759   , p_accounting_coa_id            => l_adr_accounting_coa_id
54760   , p_adr_code                     => 'CST_DEFAULT'
54761   , p_adr_type_code                => 'S'
54762   , p_component_type               => l_component_type
54763   , p_component_code               => l_component_code
54764   , p_component_type_code          => l_component_type_code
54765   , p_component_appl_id            => l_component_appl_id
54766   , p_amb_context_code             => l_amb_context_code
54767   , p_side                         => 'NA'
54768   );
54769 
54770 
54771    --
54772    --
54773    END IF;
54774    --
54775    -- Bug 4922099
54776    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54777           (NVL(l_enc_upg_option, 'N') = 'O')
54778         ) AND
54779         (l_bflow_method_code = 'PRIOR_ENTRY')
54780       )
54781    THEN
54782       IF
54783       --
54784       1 = 2
54785       --
54786       THEN
54787       xla_accounting_err_pkg.build_message
54788                                     (p_appli_s_name            => 'XLA'
54789                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54790                                     ,p_token_1                 => 'LINE_NUMBER'
54791                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54792                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54793                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54794                                                                              l_component_type
54795                                                                             ,l_component_code
54796                                                                             ,l_component_type_code
54797                                                                             ,l_component_appl_id
54798                                                                             ,l_amb_context_code
54799                                                                             ,l_entity_code
54800                                                                             ,l_event_class_code
54801                                                                            )
54802                                     ,p_token_3                 => 'OWNER'
54803                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54804                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54805                                                                           ,p_lookup_code    => l_component_type_code
54806                                                                          )
54807                                     ,p_token_4                 => 'PRODUCT_NAME'
54808                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54809                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54810                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54811                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54812                                     ,p_ae_header_id            =>  NULL
54813                                        );
54814 
54815         IF (C_LEVEL_ERROR>= g_log_level) THEN
54816                  trace
54817                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54818                       ,p_level    => C_LEVEL_ERROR
54819                       ,p_module   => l_log_module);
54820         END IF;
54821       END IF;
54822    END IF;
54823    --
54824    --
54825    ------------------------------------------------------------------------------------------------
54826    -- 4219869 Business Flow
54827    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54828    -- Prior Entry.  Currently, the following code is always generated.
54829    ------------------------------------------------------------------------------------------------
54830    XLA_AE_LINES_PKG.ValidateCurrentLine;
54831 
54832    ------------------------------------------------------------------------------------
54833    -- 4219869 Business Flow
54834    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54835    ------------------------------------------------------------------------------------
54836    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54837 
54838    ----------------------------------------------------------------------------------
54839    -- 4219869 Business Flow
54840    -- Update journal entry status -- Need to generate this within IF <condition>
54841    ----------------------------------------------------------------------------------
54842    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54843          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54844          ,p_balance_type_code => l_balance_type_code
54845          );
54846 
54847    -------------------------------------------------------------------------------------------
54848    -- 4262811 - Generate the Accrual Reversal lines
54849    -------------------------------------------------------------------------------------------
54850    BEGIN
54851       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54852                               (g_array_event(p_event_id).array_value_num('header_index'));
54853       IF l_acc_rev_flag IS NULL THEN
54854          l_acc_rev_flag := 'N';
54855       END IF;
54856    EXCEPTION
54857       WHEN OTHERS THEN
54858          l_acc_rev_flag := 'N';
54859    END;
54860    --
54861    IF (l_acc_rev_flag = 'Y') THEN
54862 
54863        -- 4645092  ------------------------------------------------------------------------------
54864        -- To allow MPA report to determine if it should generate report process
54865        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54866        ------------------------------------------------------------------------------------------
54867 
54868        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54869        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54870    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54871    -- call ADRs
54872    -- Bug 4922099
54873    --
54874    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54875         (NVL(l_actual_upg_option, 'N') = 'O') OR
54876         (NVL(l_enc_upg_option, 'N') = 'O')
54877       )
54878    THEN
54879    NULL;
54880    --
54881    --
54882    
54883   l_ccid := AcctDerRule_6(
54884            p_application_id           => p_application_id
54885          , p_ae_header_id             => l_ae_header_id 
54886 , p_source_11 => p_source_11
54887          , x_transaction_coa_id       => l_adr_transaction_coa_id
54888          , x_accounting_coa_id        => l_adr_accounting_coa_id
54889          , x_value_type_code          => l_adr_value_type_code
54890          , p_side                     => 'NA'
54891    );
54892 
54893    xla_ae_lines_pkg.set_ccid(
54894     p_code_combination_id          => l_ccid
54895   , p_value_type_code              => l_adr_value_type_code
54896   , p_transaction_coa_id           => l_adr_transaction_coa_id
54897   , p_accounting_coa_id            => l_adr_accounting_coa_id
54898   , p_adr_code                     => 'CST_DEFAULT'
54899   , p_adr_type_code                => 'S'
54900   , p_component_type               => l_component_type
54901   , p_component_code               => l_component_code
54902   , p_component_type_code          => l_component_type_code
54903   , p_component_appl_id            => l_component_appl_id
54904   , p_amb_context_code             => l_amb_context_code
54905   , p_side                         => 'NA'
54906   );
54907 
54908 
54909    --
54910    --
54911    END IF;
54912 
54913        --
54914        -- Update the line information that should be overwritten
54915        --
54916        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54917                                          p_header_num   => 1);
54918        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54919 
54920        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54921 
54922        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54923           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54924        END IF;
54925 
54926       --
54927       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54928       --
54929       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54930           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54931       ELSE
54932           ---------------------------------------------------------------------------------------------------
54933           -- 4262811a Switch Sign
54934           ---------------------------------------------------------------------------------------------------
54935           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54936           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54937                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54938           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54939                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54940           -- 5132302
54941           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54942                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54943 
54944       END IF;
54945 
54946       -- 4955764
54947       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54948       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54949 
54950 
54951       XLA_AE_LINES_PKG.ValidateCurrentLine;
54952       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54953 
54954       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54955                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54956                ,p_balance_type_code => l_balance_type_code);
54957 
54958    END IF;
54959 
54960    -----------------------------------------------------------------------------------------
54961    -- 4262811 Multiperiod Accounting
54962    -----------------------------------------------------------------------------------------
54963      -- No MPA option is assigned.
54964 
54965 
54966 END IF;
54967 END IF;
54968 --
54969 
54970 --
54971 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54972    trace
54973       (p_msg      => 'END of AcctLineType_121'
54974       ,p_level    => C_LEVEL_PROCEDURE
54975       ,p_module   => l_log_module);
54976 END IF;
54977 --
54978 EXCEPTION
54979   WHEN xla_exceptions_pkg.application_exception THEN
54980       RAISE;
54981   WHEN OTHERS THEN
54982        xla_exceptions_pkg.raise_message
54983            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_121');
54984 END AcctLineType_121;
54985 --
54986 
54987 ---------------------------------------
54988 --
54989 -- PRIVATE FUNCTION
54990 --         AcctLineType_122
54991 --
54992 ---------------------------------------
54993 PROCEDURE AcctLineType_122 (
54994   p_application_id        IN NUMBER
54995  ,p_event_id              IN NUMBER
54996  ,p_calculate_acctd_flag  IN VARCHAR2
54997  ,p_calculate_g_l_flag    IN VARCHAR2
54998  ,p_actual_flag           IN OUT VARCHAR2
54999  ,p_balance_type_code     OUT VARCHAR2
55000  ,p_gain_or_loss_ref      OUT VARCHAR2
55001  
55002 --TRANSACTION_ID
55003  , p_source_1            IN NUMBER
55004 --Item Concatenated Segments
55005  , p_source_2            IN VARCHAR2
55006 --Transaction Quantity
55007  , p_source_3            IN NUMBER
55008 --Transaction Unit of Measure Code
55009  , p_source_4            IN VARCHAR2
55010 --Inventory Transaction Type Description
55011  , p_source_5            IN VARCHAR2
55012 --Cost Management Default Account
55013  , p_source_11            IN NUMBER
55014 --DISTRIBUTION_IDENTIFIER
55015  , p_source_84            IN NUMBER
55016 --Distribution Type
55017  , p_source_85            IN VARCHAR2
55018  , p_source_85_meaning    IN VARCHAR2
55019 --Entered Currency Code
55020  , p_source_88            IN VARCHAR2
55021 --Entered Amount
55022  , p_source_91            IN NUMBER
55023 --Currency Conversion Date
55024  , p_source_92            IN DATE
55025 --Currency Conversion Rate
55026  , p_source_93            IN NUMBER
55027 --Currency Conversion Type
55028  , p_source_94            IN VARCHAR2
55029 --Accounted Amount
55030  , p_source_95            IN NUMBER
55031 --Accounting Line Type
55032  , p_source_97            IN NUMBER
55033 )
55034 IS
55035 
55036 l_component_type              VARCHAR2(80);
55037 l_component_code              VARCHAR2(30);
55038 l_component_type_code         VARCHAR2(1);
55039 l_component_appl_id           INTEGER;
55040 l_amb_context_code            VARCHAR2(30);
55041 l_entity_code                 VARCHAR2(30);
55042 l_event_class_code            VARCHAR2(30);
55043 l_ae_header_id                NUMBER;
55044 l_event_type_code             VARCHAR2(30);
55045 l_line_definition_code        VARCHAR2(30);
55046 l_line_definition_owner_code  VARCHAR2(1);
55047 --
55048 -- adr variables
55049 l_segment                     VARCHAR2(30);
55050 l_ccid                        NUMBER;
55051 l_adr_transaction_coa_id      NUMBER;
55052 l_adr_accounting_coa_id       NUMBER;
55053 l_adr_flexfield_segment_code  VARCHAR2(30);
55054 l_adr_flex_value_set_id       NUMBER;
55055 l_adr_value_type_code         VARCHAR2(30);
55056 l_adr_value_combination_id    NUMBER;
55057 l_adr_value_segment_code      VARCHAR2(30);
55058 
55059 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55060 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55061 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55062 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55063 
55064 -- 4262811 Variables ------------------------------------------------------------------------------------------
55065 l_entered_amt_idx             NUMBER;
55066 l_accted_amt_idx              NUMBER;
55067 l_acc_rev_flag                VARCHAR2(1);
55068 l_accrual_line_num            NUMBER;
55069 l_tmp_amt                     NUMBER;
55070 l_acc_rev_natural_side_code   VARCHAR2(1);
55071 
55072 l_num_entries                 NUMBER;
55073 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55074 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55075 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55076 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55077 l_recog_line_1                NUMBER;
55078 l_recog_line_2                NUMBER;
55079 
55080 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55081 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55082 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55083 
55084 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55085 
55086 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55087 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55088 
55089 ---------------------------------------------------------------------------------------------------------------
55090 
55091 
55092 --
55093 -- bulk performance
55094 --
55095 l_balance_type_code           VARCHAR2(1);
55096 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55097 l_log_module                  VARCHAR2(240);
55098 
55099 --
55100 -- Upgrade strategy
55101 --
55102 l_actual_upg_option           VARCHAR2(1);
55103 l_enc_upg_option           VARCHAR2(1);
55104 
55105 --
55106 BEGIN
55107 --
55108 IF g_log_enabled THEN
55109       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
55110 END IF;
55111 --
55112 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55113 
55114       trace
55115          (p_msg      => 'BEGIN of AcctLineType_122'
55116          ,p_level    => C_LEVEL_PROCEDURE
55117          ,p_module   => l_log_module);
55118 
55119 END IF;
55120 --
55121 l_component_type             := 'AMB_JLT';
55122 l_component_code             := 'DEFERRED_COGS';
55123 l_component_type_code        := 'S';
55124 l_component_appl_id          :=  707;
55125 l_amb_context_code           := 'DEFAULT';
55126 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
55127 l_event_class_code           := 'SALES_ORDER';
55128 l_event_type_code            := 'LOG_RMA_RCPT';
55129 l_line_definition_owner_code := 'S';
55130 l_line_definition_code       := 'PI_LOG_RMA_RCPT';
55131 --
55132 l_balance_type_code          := 'A';
55133 l_segment                     := NULL;
55134 l_ccid                        := NULL;
55135 l_adr_transaction_coa_id      := NULL;
55136 l_adr_accounting_coa_id       := NULL;
55137 l_adr_flexfield_segment_code  := NULL;
55138 l_adr_flex_value_set_id       := NULL;
55139 l_adr_value_type_code         := NULL;
55140 l_adr_value_combination_id    := NULL;
55141 l_adr_value_segment_code      := NULL;
55142 
55143 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55144 l_bflow_class_code           := '';    -- 4219869 Business Flow
55145 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55146 l_budgetary_control_flag     := 'N';
55147 
55148 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55149 l_bflow_applied_to_amt       := NULL; -- 5132302
55150 l_entered_amt_idx            := NULL;          -- 4262811
55151 l_accted_amt_idx             := NULL;          -- 4262811
55152 l_acc_rev_flag               := NULL;          -- 4262811
55153 l_accrual_line_num           := NULL;          -- 4262811
55154 l_tmp_amt                    := NULL;          -- 4262811
55155 --
55156  
55157 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55158     l_balance_type_code <> 'B' THEN
55159 IF NVL(p_source_97,9E125) =  36
55160  THEN 
55161 
55162    --
55163    XLA_AE_LINES_PKG.SetNewLine;
55164 
55165    p_balance_type_code          := l_balance_type_code;
55166    -- set the flag so later we will know whether the gain loss line needs to be created
55167    
55168    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55169      p_actual_flag :='A';
55170    END IF;
55171 
55172    --
55173    -- bulk performance
55174    --
55175    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55176                                       p_header_num   => 0); -- 4262811
55177    --
55178    -- set accounting line options
55179    --
55180    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55181            p_natural_side_code          => 'D'
55182          , p_gain_or_loss_flag          => 'N'
55183          , p_gl_transfer_mode_code      => 'S'
55184          , p_acct_entry_type_code       => 'A'
55185          , p_switch_side_flag           => 'Y'
55186          , p_merge_duplicate_code       => 'N'
55187          );
55188    --
55189    l_acc_rev_natural_side_code := 'C';  -- 4262811
55190    -- 
55191    --
55192    -- set accounting line type info
55193    --
55194    xla_ae_lines_pkg.SetAcctLineType
55195       (p_component_type             => l_component_type
55196       ,p_event_type_code            => l_event_type_code
55197       ,p_line_definition_owner_code => l_line_definition_owner_code
55198       ,p_line_definition_code       => l_line_definition_code
55199       ,p_accounting_line_code       => l_component_code
55200       ,p_accounting_line_type_code  => l_component_type_code
55201       ,p_accounting_line_appl_id    => l_component_appl_id
55202       ,p_amb_context_code           => l_amb_context_code
55203       ,p_entity_code                => l_entity_code
55204       ,p_event_class_code           => l_event_class_code);
55205    --
55206    -- set accounting class
55207    --
55208    xla_ae_lines_pkg.SetAcctClass(
55209            p_accounting_class_code  => 'DEFERRED_COGS'
55210          , p_ae_header_id           => l_ae_header_id
55211          );
55212 
55213    --
55214    -- set rounding class
55215    --
55216    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55217                       'DEFERRED_COGS';
55218 
55219    --
55220    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55221    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55222    --
55223    -- bulk performance
55224    --
55225    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55226 
55227    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55228       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55229 
55230    -- 4955764
55231    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55232       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55233 
55234    -- 4458381 Public Sector Enh
55235    
55236    --
55237    -- set accounting attributes for the line type
55238    --
55239    l_entered_amt_idx := 3;
55240    l_accted_amt_idx  := 8;
55241    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55242    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55243    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
55244    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55245    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
55246    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55247    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
55248    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55249    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
55250    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55251    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
55252    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55253    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
55254    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55255    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
55256    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55257    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
55258 
55259    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55260    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55261 
55262    ---------------------------------------------------------------------------------------------------------------
55263    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55264    ---------------------------------------------------------------------------------------------------------------
55265    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55266 
55267    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55268    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55269 
55270    IF xla_accounting_cache_pkg.GetValueChar
55271          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55272          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55273    AND l_bflow_method_code = 'PRIOR_ENTRY'
55274 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55275    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55276          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55277        )
55278    THEN
55279          xla_ae_lines_pkg.BflowUpgEntry
55280            (p_business_method_code    => l_bflow_method_code
55281            ,p_business_class_code     => l_bflow_class_code
55282            ,p_balance_type            => l_balance_type_code);
55283    ELSE
55284       NULL;
55285 -- No business flow processing for business flow method of NONE.
55286    END IF;
55287 
55288    --
55289    -- call analytical criteria
55290    --
55291    
55292    --
55293    -- call description
55294    --
55295    
55296 xla_ae_lines_pkg.SetLineDescription(
55297    p_ae_header_id => l_ae_header_id
55298   ,p_description  => Description_1 (
55299      p_application_id         => p_application_id
55300    , p_ae_header_id           => l_ae_header_id 
55301 , p_source_1 => p_source_1
55302 , p_source_2 => p_source_2
55303 , p_source_3 => p_source_3
55304 , p_source_4 => p_source_4
55305 , p_source_5 => p_source_5
55306    )
55307 );
55308 
55309 
55310    --
55311    -- call ADRs
55312    -- Bug 4922099
55313    --
55314    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55315         (NVL(l_actual_upg_option, 'N') = 'O') OR
55316         (NVL(l_enc_upg_option, 'N') = 'O')
55317       )
55318    THEN
55319    NULL;
55320    --
55321    --
55322    
55323   l_ccid := AcctDerRule_6(
55324            p_application_id           => p_application_id
55325          , p_ae_header_id             => l_ae_header_id 
55326 , p_source_11 => p_source_11
55327          , x_transaction_coa_id       => l_adr_transaction_coa_id
55328          , x_accounting_coa_id        => l_adr_accounting_coa_id
55329          , x_value_type_code          => l_adr_value_type_code
55330          , p_side                     => 'NA'
55331    );
55332 
55333    xla_ae_lines_pkg.set_ccid(
55334     p_code_combination_id          => l_ccid
55335   , p_value_type_code              => l_adr_value_type_code
55336   , p_transaction_coa_id           => l_adr_transaction_coa_id
55337   , p_accounting_coa_id            => l_adr_accounting_coa_id
55338   , p_adr_code                     => 'CST_DEFAULT'
55339   , p_adr_type_code                => 'S'
55340   , p_component_type               => l_component_type
55341   , p_component_code               => l_component_code
55342   , p_component_type_code          => l_component_type_code
55343   , p_component_appl_id            => l_component_appl_id
55344   , p_amb_context_code             => l_amb_context_code
55345   , p_side                         => 'NA'
55346   );
55347 
55348 
55349    --
55350    --
55351    END IF;
55352    --
55353    -- Bug 4922099
55354    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55355           (NVL(l_enc_upg_option, 'N') = 'O')
55356         ) AND
55357         (l_bflow_method_code = 'PRIOR_ENTRY')
55358       )
55359    THEN
55360       IF
55361       --
55362       1 = 2
55363       --
55364       THEN
55365       xla_accounting_err_pkg.build_message
55366                                     (p_appli_s_name            => 'XLA'
55367                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55368                                     ,p_token_1                 => 'LINE_NUMBER'
55369                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55370                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55371                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55372                                                                              l_component_type
55373                                                                             ,l_component_code
55374                                                                             ,l_component_type_code
55375                                                                             ,l_component_appl_id
55376                                                                             ,l_amb_context_code
55377                                                                             ,l_entity_code
55378                                                                             ,l_event_class_code
55379                                                                            )
55380                                     ,p_token_3                 => 'OWNER'
55381                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55382                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55383                                                                           ,p_lookup_code    => l_component_type_code
55384                                                                          )
55385                                     ,p_token_4                 => 'PRODUCT_NAME'
55386                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55387                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55388                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55389                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55390                                     ,p_ae_header_id            =>  NULL
55391                                        );
55392 
55393         IF (C_LEVEL_ERROR>= g_log_level) THEN
55394                  trace
55395                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55396                       ,p_level    => C_LEVEL_ERROR
55397                       ,p_module   => l_log_module);
55398         END IF;
55399       END IF;
55400    END IF;
55401    --
55402    --
55403    ------------------------------------------------------------------------------------------------
55404    -- 4219869 Business Flow
55405    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55406    -- Prior Entry.  Currently, the following code is always generated.
55407    ------------------------------------------------------------------------------------------------
55408    XLA_AE_LINES_PKG.ValidateCurrentLine;
55409 
55410    ------------------------------------------------------------------------------------
55411    -- 4219869 Business Flow
55412    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55413    ------------------------------------------------------------------------------------
55414    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55415 
55416    ----------------------------------------------------------------------------------
55417    -- 4219869 Business Flow
55418    -- Update journal entry status -- Need to generate this within IF <condition>
55419    ----------------------------------------------------------------------------------
55420    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55421          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55422          ,p_balance_type_code => l_balance_type_code
55423          );
55424 
55425    -------------------------------------------------------------------------------------------
55426    -- 4262811 - Generate the Accrual Reversal lines
55427    -------------------------------------------------------------------------------------------
55428    BEGIN
55429       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55430                               (g_array_event(p_event_id).array_value_num('header_index'));
55431       IF l_acc_rev_flag IS NULL THEN
55432          l_acc_rev_flag := 'N';
55433       END IF;
55434    EXCEPTION
55435       WHEN OTHERS THEN
55436          l_acc_rev_flag := 'N';
55437    END;
55438    --
55439    IF (l_acc_rev_flag = 'Y') THEN
55440 
55441        -- 4645092  ------------------------------------------------------------------------------
55442        -- To allow MPA report to determine if it should generate report process
55443        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55444        ------------------------------------------------------------------------------------------
55445 
55446        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55447        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55448    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55449    -- call ADRs
55450    -- Bug 4922099
55451    --
55452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55453         (NVL(l_actual_upg_option, 'N') = 'O') OR
55454         (NVL(l_enc_upg_option, 'N') = 'O')
55455       )
55456    THEN
55457    NULL;
55458    --
55459    --
55460    
55461   l_ccid := AcctDerRule_6(
55462            p_application_id           => p_application_id
55463          , p_ae_header_id             => l_ae_header_id 
55464 , p_source_11 => p_source_11
55465          , x_transaction_coa_id       => l_adr_transaction_coa_id
55466          , x_accounting_coa_id        => l_adr_accounting_coa_id
55467          , x_value_type_code          => l_adr_value_type_code
55468          , p_side                     => 'NA'
55469    );
55470 
55471    xla_ae_lines_pkg.set_ccid(
55472     p_code_combination_id          => l_ccid
55473   , p_value_type_code              => l_adr_value_type_code
55474   , p_transaction_coa_id           => l_adr_transaction_coa_id
55475   , p_accounting_coa_id            => l_adr_accounting_coa_id
55476   , p_adr_code                     => 'CST_DEFAULT'
55477   , p_adr_type_code                => 'S'
55478   , p_component_type               => l_component_type
55479   , p_component_code               => l_component_code
55480   , p_component_type_code          => l_component_type_code
55481   , p_component_appl_id            => l_component_appl_id
55482   , p_amb_context_code             => l_amb_context_code
55483   , p_side                         => 'NA'
55484   );
55485 
55486 
55487    --
55488    --
55489    END IF;
55490 
55491        --
55492        -- Update the line information that should be overwritten
55493        --
55494        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55495                                          p_header_num   => 1);
55496        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55497 
55498        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55499 
55500        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55501           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55502        END IF;
55503 
55504       --
55505       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55506       --
55507       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55508           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55509       ELSE
55510           ---------------------------------------------------------------------------------------------------
55511           -- 4262811a Switch Sign
55512           ---------------------------------------------------------------------------------------------------
55513           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55514           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55515                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55516           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55517                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55518           -- 5132302
55519           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55520                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55521 
55522       END IF;
55523 
55524       -- 4955764
55525       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55526       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55527 
55528 
55529       XLA_AE_LINES_PKG.ValidateCurrentLine;
55530       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55531 
55532       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55533                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55534                ,p_balance_type_code => l_balance_type_code);
55535 
55536    END IF;
55537 
55538    -----------------------------------------------------------------------------------------
55539    -- 4262811 Multiperiod Accounting
55540    -----------------------------------------------------------------------------------------
55541      -- No MPA option is assigned.
55542 
55543 
55544 END IF;
55545 END IF;
55546 --
55547 
55548 --
55549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55550    trace
55551       (p_msg      => 'END of AcctLineType_122'
55552       ,p_level    => C_LEVEL_PROCEDURE
55553       ,p_module   => l_log_module);
55554 END IF;
55555 --
55556 EXCEPTION
55557   WHEN xla_exceptions_pkg.application_exception THEN
55558       RAISE;
55559   WHEN OTHERS THEN
55560        xla_exceptions_pkg.raise_message
55561            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_122');
55562 END AcctLineType_122;
55563 --
55564 
55565 ---------------------------------------
55566 --
55567 -- PRIVATE FUNCTION
55568 --         AcctLineType_123
55569 --
55570 ---------------------------------------
55571 PROCEDURE AcctLineType_123 (
55572   p_application_id        IN NUMBER
55573  ,p_event_id              IN NUMBER
55574  ,p_calculate_acctd_flag  IN VARCHAR2
55575  ,p_calculate_g_l_flag    IN VARCHAR2
55576  ,p_actual_flag           IN OUT VARCHAR2
55577  ,p_balance_type_code     OUT VARCHAR2
55578  ,p_gain_or_loss_ref      OUT VARCHAR2
55579  
55580 --Cost Management Default Account
55581  , p_source_11            IN NUMBER
55582 --DISTRIBUTION_IDENTIFIER
55583  , p_source_84            IN NUMBER
55584 --Distribution Type
55585  , p_source_85            IN VARCHAR2
55586  , p_source_85_meaning    IN VARCHAR2
55587 --Entered Currency Code
55588  , p_source_88            IN VARCHAR2
55589 --Entered Amount
55590  , p_source_91            IN NUMBER
55591 --Currency Conversion Date
55592  , p_source_92            IN DATE
55593 --Currency Conversion Rate
55594  , p_source_93            IN NUMBER
55595 --Currency Conversion Type
55596  , p_source_94            IN VARCHAR2
55597 --Accounted Amount
55598  , p_source_95            IN NUMBER
55599 --Accounting Line Type
55600  , p_source_97            IN NUMBER
55601 )
55602 IS
55603 
55604 l_component_type              VARCHAR2(80);
55605 l_component_code              VARCHAR2(30);
55606 l_component_type_code         VARCHAR2(1);
55607 l_component_appl_id           INTEGER;
55608 l_amb_context_code            VARCHAR2(30);
55609 l_entity_code                 VARCHAR2(30);
55610 l_event_class_code            VARCHAR2(30);
55611 l_ae_header_id                NUMBER;
55612 l_event_type_code             VARCHAR2(30);
55613 l_line_definition_code        VARCHAR2(30);
55614 l_line_definition_owner_code  VARCHAR2(1);
55615 --
55616 -- adr variables
55617 l_segment                     VARCHAR2(30);
55618 l_ccid                        NUMBER;
55619 l_adr_transaction_coa_id      NUMBER;
55620 l_adr_accounting_coa_id       NUMBER;
55621 l_adr_flexfield_segment_code  VARCHAR2(30);
55622 l_adr_flex_value_set_id       NUMBER;
55623 l_adr_value_type_code         VARCHAR2(30);
55624 l_adr_value_combination_id    NUMBER;
55625 l_adr_value_segment_code      VARCHAR2(30);
55626 
55627 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55628 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55629 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55630 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55631 
55632 -- 4262811 Variables ------------------------------------------------------------------------------------------
55633 l_entered_amt_idx             NUMBER;
55634 l_accted_amt_idx              NUMBER;
55635 l_acc_rev_flag                VARCHAR2(1);
55636 l_accrual_line_num            NUMBER;
55637 l_tmp_amt                     NUMBER;
55638 l_acc_rev_natural_side_code   VARCHAR2(1);
55639 
55640 l_num_entries                 NUMBER;
55641 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55642 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55643 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55644 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55645 l_recog_line_1                NUMBER;
55646 l_recog_line_2                NUMBER;
55647 
55648 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55649 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55650 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55651 
55652 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55653 
55654 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55655 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55656 
55657 ---------------------------------------------------------------------------------------------------------------
55658 
55659 
55660 --
55661 -- bulk performance
55662 --
55663 l_balance_type_code           VARCHAR2(1);
55664 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55665 l_log_module                  VARCHAR2(240);
55666 
55667 --
55668 -- Upgrade strategy
55669 --
55670 l_actual_upg_option           VARCHAR2(1);
55671 l_enc_upg_option           VARCHAR2(1);
55672 
55673 --
55674 BEGIN
55675 --
55676 IF g_log_enabled THEN
55677       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
55678 END IF;
55679 --
55680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55681 
55682       trace
55683          (p_msg      => 'BEGIN of AcctLineType_123'
55684          ,p_level    => C_LEVEL_PROCEDURE
55685          ,p_module   => l_log_module);
55686 
55687 END IF;
55688 --
55689 l_component_type             := 'AMB_JLT';
55690 l_component_code             := 'EST_SCRAP_ABSORPTION';
55691 l_component_type_code        := 'S';
55692 l_component_appl_id          :=  707;
55693 l_amb_context_code           := 'DEFAULT';
55694 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
55695 l_event_class_code           := 'ABSORPTION';
55696 l_event_type_code            := 'ABSORPTION_ALL';
55697 l_line_definition_owner_code := 'S';
55698 l_line_definition_code       := 'ABSORPTION';
55699 --
55700 l_balance_type_code          := 'A';
55701 l_segment                     := NULL;
55702 l_ccid                        := NULL;
55703 l_adr_transaction_coa_id      := NULL;
55704 l_adr_accounting_coa_id       := NULL;
55705 l_adr_flexfield_segment_code  := NULL;
55706 l_adr_flex_value_set_id       := NULL;
55707 l_adr_value_type_code         := NULL;
55708 l_adr_value_combination_id    := NULL;
55709 l_adr_value_segment_code      := NULL;
55710 
55711 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55712 l_bflow_class_code           := '';    -- 4219869 Business Flow
55713 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55714 l_budgetary_control_flag     := 'N';
55715 
55716 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55717 l_bflow_applied_to_amt       := NULL; -- 5132302
55718 l_entered_amt_idx            := NULL;          -- 4262811
55719 l_accted_amt_idx             := NULL;          -- 4262811
55720 l_acc_rev_flag               := NULL;          -- 4262811
55721 l_accrual_line_num           := NULL;          -- 4262811
55722 l_tmp_amt                    := NULL;          -- 4262811
55723 --
55724  
55725 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55726     l_balance_type_code <> 'B' THEN
55727 IF NVL(p_source_97,9E125) =  29
55728  THEN 
55729 
55730    --
55731    XLA_AE_LINES_PKG.SetNewLine;
55732 
55733    p_balance_type_code          := l_balance_type_code;
55734    -- set the flag so later we will know whether the gain loss line needs to be created
55735    
55736    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55737      p_actual_flag :='A';
55738    END IF;
55739 
55740    --
55741    -- bulk performance
55742    --
55743    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55744                                       p_header_num   => 0); -- 4262811
55745    --
55746    -- set accounting line options
55747    --
55748    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55749            p_natural_side_code          => 'D'
55750          , p_gain_or_loss_flag          => 'N'
55751          , p_gl_transfer_mode_code      => 'S'
55752          , p_acct_entry_type_code       => 'A'
55753          , p_switch_side_flag           => 'Y'
55754          , p_merge_duplicate_code       => 'N'
55755          );
55756    --
55757    l_acc_rev_natural_side_code := 'C';  -- 4262811
55758    -- 
55759    --
55760    -- set accounting line type info
55761    --
55762    xla_ae_lines_pkg.SetAcctLineType
55763       (p_component_type             => l_component_type
55764       ,p_event_type_code            => l_event_type_code
55765       ,p_line_definition_owner_code => l_line_definition_owner_code
55766       ,p_line_definition_code       => l_line_definition_code
55767       ,p_accounting_line_code       => l_component_code
55768       ,p_accounting_line_type_code  => l_component_type_code
55769       ,p_accounting_line_appl_id    => l_component_appl_id
55770       ,p_amb_context_code           => l_amb_context_code
55771       ,p_entity_code                => l_entity_code
55772       ,p_event_class_code           => l_event_class_code);
55773    --
55774    -- set accounting class
55775    --
55776    xla_ae_lines_pkg.SetAcctClass(
55777            p_accounting_class_code  => 'ESTIMATED_SCRAP_ABSORPTION'
55778          , p_ae_header_id           => l_ae_header_id
55779          );
55780 
55781    --
55782    -- set rounding class
55783    --
55784    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55785                       'ESTIMATED_SCRAP_ABSORPTION';
55786 
55787    --
55788    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55789    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55790    --
55791    -- bulk performance
55792    --
55793    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55794 
55795    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55796       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55797 
55798    -- 4955764
55799    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55801 
55802    -- 4458381 Public Sector Enh
55803    
55804    --
55805    -- set accounting attributes for the line type
55806    --
55807    l_entered_amt_idx := 3;
55808    l_accted_amt_idx  := 8;
55809    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55810    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55811    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
55812    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55813    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
55814    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55815    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
55816    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55817    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
55818    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55819    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
55820    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55821    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
55822    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55823    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
55824    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55825    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
55826 
55827    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55828    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55829 
55830    ---------------------------------------------------------------------------------------------------------------
55831    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55832    ---------------------------------------------------------------------------------------------------------------
55833    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55834 
55835    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55836    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55837 
55838    IF xla_accounting_cache_pkg.GetValueChar
55839          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55840          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55841    AND l_bflow_method_code = 'PRIOR_ENTRY'
55842 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55843    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55844          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55845        )
55846    THEN
55847          xla_ae_lines_pkg.BflowUpgEntry
55848            (p_business_method_code    => l_bflow_method_code
55849            ,p_business_class_code     => l_bflow_class_code
55850            ,p_balance_type            => l_balance_type_code);
55851    ELSE
55852       NULL;
55853 -- No business flow processing for business flow method of NONE.
55854    END IF;
55855 
55856    --
55857    -- call analytical criteria
55858    --
55859    
55860    --
55861    -- call description
55862    --
55863    -- No description or it is inherited.
55864    --
55865    -- call ADRs
55866    -- Bug 4922099
55867    --
55868    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55869         (NVL(l_actual_upg_option, 'N') = 'O') OR
55870         (NVL(l_enc_upg_option, 'N') = 'O')
55871       )
55872    THEN
55873    NULL;
55874    --
55875    --
55876    
55877   l_ccid := AcctDerRule_6(
55878            p_application_id           => p_application_id
55879          , p_ae_header_id             => l_ae_header_id 
55880 , p_source_11 => p_source_11
55881          , x_transaction_coa_id       => l_adr_transaction_coa_id
55882          , x_accounting_coa_id        => l_adr_accounting_coa_id
55883          , x_value_type_code          => l_adr_value_type_code
55884          , p_side                     => 'NA'
55885    );
55886 
55887    xla_ae_lines_pkg.set_ccid(
55888     p_code_combination_id          => l_ccid
55889   , p_value_type_code              => l_adr_value_type_code
55890   , p_transaction_coa_id           => l_adr_transaction_coa_id
55891   , p_accounting_coa_id            => l_adr_accounting_coa_id
55892   , p_adr_code                     => 'CST_DEFAULT'
55893   , p_adr_type_code                => 'S'
55894   , p_component_type               => l_component_type
55895   , p_component_code               => l_component_code
55896   , p_component_type_code          => l_component_type_code
55897   , p_component_appl_id            => l_component_appl_id
55898   , p_amb_context_code             => l_amb_context_code
55899   , p_side                         => 'NA'
55900   );
55901 
55902 
55903    --
55904    --
55905    END IF;
55906    --
55907    -- Bug 4922099
55908    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55909           (NVL(l_enc_upg_option, 'N') = 'O')
55910         ) AND
55911         (l_bflow_method_code = 'PRIOR_ENTRY')
55912       )
55913    THEN
55914       IF
55915       --
55916       1 = 2
55917       --
55918       THEN
55919       xla_accounting_err_pkg.build_message
55920                                     (p_appli_s_name            => 'XLA'
55921                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55922                                     ,p_token_1                 => 'LINE_NUMBER'
55923                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55924                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55925                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55926                                                                              l_component_type
55927                                                                             ,l_component_code
55928                                                                             ,l_component_type_code
55929                                                                             ,l_component_appl_id
55930                                                                             ,l_amb_context_code
55931                                                                             ,l_entity_code
55932                                                                             ,l_event_class_code
55933                                                                            )
55934                                     ,p_token_3                 => 'OWNER'
55935                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55936                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55937                                                                           ,p_lookup_code    => l_component_type_code
55938                                                                          )
55939                                     ,p_token_4                 => 'PRODUCT_NAME'
55940                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55941                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55942                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55943                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55944                                     ,p_ae_header_id            =>  NULL
55945                                        );
55946 
55947         IF (C_LEVEL_ERROR>= g_log_level) THEN
55948                  trace
55949                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55950                       ,p_level    => C_LEVEL_ERROR
55951                       ,p_module   => l_log_module);
55952         END IF;
55953       END IF;
55954    END IF;
55955    --
55956    --
55957    ------------------------------------------------------------------------------------------------
55958    -- 4219869 Business Flow
55959    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55960    -- Prior Entry.  Currently, the following code is always generated.
55961    ------------------------------------------------------------------------------------------------
55962    XLA_AE_LINES_PKG.ValidateCurrentLine;
55963 
55964    ------------------------------------------------------------------------------------
55965    -- 4219869 Business Flow
55966    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55967    ------------------------------------------------------------------------------------
55968    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55969 
55970    ----------------------------------------------------------------------------------
55971    -- 4219869 Business Flow
55972    -- Update journal entry status -- Need to generate this within IF <condition>
55973    ----------------------------------------------------------------------------------
55974    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55975          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55976          ,p_balance_type_code => l_balance_type_code
55977          );
55978 
55979    -------------------------------------------------------------------------------------------
55980    -- 4262811 - Generate the Accrual Reversal lines
55981    -------------------------------------------------------------------------------------------
55982    BEGIN
55983       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55984                               (g_array_event(p_event_id).array_value_num('header_index'));
55985       IF l_acc_rev_flag IS NULL THEN
55986          l_acc_rev_flag := 'N';
55987       END IF;
55988    EXCEPTION
55989       WHEN OTHERS THEN
55990          l_acc_rev_flag := 'N';
55991    END;
55992    --
55993    IF (l_acc_rev_flag = 'Y') THEN
55994 
55995        -- 4645092  ------------------------------------------------------------------------------
55996        -- To allow MPA report to determine if it should generate report process
55997        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55998        ------------------------------------------------------------------------------------------
55999 
56000        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56001        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56002    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56003    -- call ADRs
56004    -- Bug 4922099
56005    --
56006    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56007         (NVL(l_actual_upg_option, 'N') = 'O') OR
56008         (NVL(l_enc_upg_option, 'N') = 'O')
56009       )
56010    THEN
56011    NULL;
56012    --
56013    --
56014    
56015   l_ccid := AcctDerRule_6(
56016            p_application_id           => p_application_id
56017          , p_ae_header_id             => l_ae_header_id 
56018 , p_source_11 => p_source_11
56019          , x_transaction_coa_id       => l_adr_transaction_coa_id
56020          , x_accounting_coa_id        => l_adr_accounting_coa_id
56021          , x_value_type_code          => l_adr_value_type_code
56022          , p_side                     => 'NA'
56023    );
56024 
56025    xla_ae_lines_pkg.set_ccid(
56026     p_code_combination_id          => l_ccid
56027   , p_value_type_code              => l_adr_value_type_code
56028   , p_transaction_coa_id           => l_adr_transaction_coa_id
56029   , p_accounting_coa_id            => l_adr_accounting_coa_id
56030   , p_adr_code                     => 'CST_DEFAULT'
56031   , p_adr_type_code                => 'S'
56032   , p_component_type               => l_component_type
56033   , p_component_code               => l_component_code
56034   , p_component_type_code          => l_component_type_code
56035   , p_component_appl_id            => l_component_appl_id
56036   , p_amb_context_code             => l_amb_context_code
56037   , p_side                         => 'NA'
56038   );
56039 
56040 
56041    --
56042    --
56043    END IF;
56044 
56045        --
56046        -- Update the line information that should be overwritten
56047        --
56048        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56049                                          p_header_num   => 1);
56050        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56051 
56052        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56053 
56054        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56055           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56056        END IF;
56057 
56058       --
56059       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56060       --
56061       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56062           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56063       ELSE
56064           ---------------------------------------------------------------------------------------------------
56065           -- 4262811a Switch Sign
56066           ---------------------------------------------------------------------------------------------------
56067           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56068           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56069                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56070           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56071                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56072           -- 5132302
56073           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56074                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56075 
56076       END IF;
56077 
56078       -- 4955764
56079       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56080       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56081 
56082 
56083       XLA_AE_LINES_PKG.ValidateCurrentLine;
56084       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56085 
56086       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56087                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56088                ,p_balance_type_code => l_balance_type_code);
56089 
56090    END IF;
56091 
56092    -----------------------------------------------------------------------------------------
56093    -- 4262811 Multiperiod Accounting
56094    -----------------------------------------------------------------------------------------
56095      -- No MPA option is assigned.
56096 
56097 
56098 END IF;
56099 END IF;
56100 --
56101 
56102 --
56103 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56104    trace
56105       (p_msg      => 'END of AcctLineType_123'
56106       ,p_level    => C_LEVEL_PROCEDURE
56107       ,p_module   => l_log_module);
56108 END IF;
56109 --
56110 EXCEPTION
56111   WHEN xla_exceptions_pkg.application_exception THEN
56112       RAISE;
56113   WHEN OTHERS THEN
56114        xla_exceptions_pkg.raise_message
56115            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_123');
56116 END AcctLineType_123;
56117 --
56118 
56119 ---------------------------------------
56120 --
56121 -- PRIVATE FUNCTION
56122 --         AcctLineType_124
56123 --
56124 ---------------------------------------
56125 PROCEDURE AcctLineType_124 (
56126   p_application_id        IN NUMBER
56127  ,p_event_id              IN NUMBER
56128  ,p_calculate_acctd_flag  IN VARCHAR2
56129  ,p_calculate_g_l_flag    IN VARCHAR2
56130  ,p_actual_flag           IN OUT VARCHAR2
56131  ,p_balance_type_code     OUT VARCHAR2
56132  ,p_gain_or_loss_ref      OUT VARCHAR2
56133  
56134 --TRANSACTION_ID
56135  , p_source_1            IN NUMBER
56136 --Item Concatenated Segments
56137  , p_source_2            IN VARCHAR2
56138 --Transaction Quantity
56139  , p_source_3            IN NUMBER
56140 --Transaction Unit of Measure Code
56141  , p_source_4            IN VARCHAR2
56142 --Inventory Transaction Type Description
56143  , p_source_5            IN VARCHAR2
56144 --Cost Management Default Account
56145  , p_source_11            IN NUMBER
56146 --DISTRIBUTION_IDENTIFIER
56147  , p_source_84            IN NUMBER
56148 --Distribution Type
56149  , p_source_85            IN VARCHAR2
56150  , p_source_85_meaning    IN VARCHAR2
56151 --Entered Currency Code
56152  , p_source_88            IN VARCHAR2
56153 --Entered Amount
56154  , p_source_91            IN NUMBER
56155 --Currency Conversion Date
56156  , p_source_92            IN DATE
56157 --Currency Conversion Rate
56158  , p_source_93            IN NUMBER
56159 --Currency Conversion Type
56160  , p_source_94            IN VARCHAR2
56161 --Accounted Amount
56162  , p_source_95            IN NUMBER
56163 --Accounting Line Type
56164  , p_source_97            IN NUMBER
56165 )
56166 IS
56167 
56168 l_component_type              VARCHAR2(80);
56169 l_component_code              VARCHAR2(30);
56170 l_component_type_code         VARCHAR2(1);
56171 l_component_appl_id           INTEGER;
56172 l_amb_context_code            VARCHAR2(30);
56173 l_entity_code                 VARCHAR2(30);
56174 l_event_class_code            VARCHAR2(30);
56175 l_ae_header_id                NUMBER;
56176 l_event_type_code             VARCHAR2(30);
56177 l_line_definition_code        VARCHAR2(30);
56178 l_line_definition_owner_code  VARCHAR2(1);
56179 --
56180 -- adr variables
56181 l_segment                     VARCHAR2(30);
56182 l_ccid                        NUMBER;
56183 l_adr_transaction_coa_id      NUMBER;
56184 l_adr_accounting_coa_id       NUMBER;
56185 l_adr_flexfield_segment_code  VARCHAR2(30);
56186 l_adr_flex_value_set_id       NUMBER;
56187 l_adr_value_type_code         VARCHAR2(30);
56188 l_adr_value_combination_id    NUMBER;
56189 l_adr_value_segment_code      VARCHAR2(30);
56190 
56191 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56192 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56193 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56194 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56195 
56196 -- 4262811 Variables ------------------------------------------------------------------------------------------
56197 l_entered_amt_idx             NUMBER;
56198 l_accted_amt_idx              NUMBER;
56199 l_acc_rev_flag                VARCHAR2(1);
56200 l_accrual_line_num            NUMBER;
56201 l_tmp_amt                     NUMBER;
56202 l_acc_rev_natural_side_code   VARCHAR2(1);
56203 
56204 l_num_entries                 NUMBER;
56205 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56206 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56207 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56208 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56209 l_recog_line_1                NUMBER;
56210 l_recog_line_2                NUMBER;
56211 
56212 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56213 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56214 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56215 
56216 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56217 
56218 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56219 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56220 
56221 ---------------------------------------------------------------------------------------------------------------
56222 
56223 
56224 --
56225 -- bulk performance
56226 --
56227 l_balance_type_code           VARCHAR2(1);
56228 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56229 l_log_module                  VARCHAR2(240);
56230 
56231 --
56232 -- Upgrade strategy
56233 --
56234 l_actual_upg_option           VARCHAR2(1);
56235 l_enc_upg_option           VARCHAR2(1);
56236 
56237 --
56238 BEGIN
56239 --
56240 IF g_log_enabled THEN
56241       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
56242 END IF;
56243 --
56244 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56245 
56246       trace
56247          (p_msg      => 'BEGIN of AcctLineType_124'
56248          ,p_level    => C_LEVEL_PROCEDURE
56249          ,p_module   => l_log_module);
56250 
56251 END IF;
56252 --
56253 l_component_type             := 'AMB_JLT';
56254 l_component_code             := 'EXPENSE';
56255 l_component_type_code        := 'S';
56256 l_component_appl_id          :=  707;
56257 l_amb_context_code           := 'DEFAULT';
56258 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
56259 l_event_class_code           := 'USER_DEFINE';
56260 l_event_type_code            := 'UAVG_COST_UPD';
56261 l_line_definition_owner_code := 'S';
56262 l_line_definition_code       := 'PI_COST_UPD';
56263 --
56264 l_balance_type_code          := 'A';
56265 l_segment                     := NULL;
56266 l_ccid                        := NULL;
56267 l_adr_transaction_coa_id      := NULL;
56268 l_adr_accounting_coa_id       := NULL;
56269 l_adr_flexfield_segment_code  := NULL;
56270 l_adr_flex_value_set_id       := NULL;
56271 l_adr_value_type_code         := NULL;
56272 l_adr_value_combination_id    := NULL;
56273 l_adr_value_segment_code      := NULL;
56274 
56275 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56276 l_bflow_class_code           := '';    -- 4219869 Business Flow
56277 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56278 l_budgetary_control_flag     := 'N';
56279 
56280 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56281 l_bflow_applied_to_amt       := NULL; -- 5132302
56282 l_entered_amt_idx            := NULL;          -- 4262811
56283 l_accted_amt_idx             := NULL;          -- 4262811
56284 l_acc_rev_flag               := NULL;          -- 4262811
56285 l_accrual_line_num           := NULL;          -- 4262811
56286 l_tmp_amt                    := NULL;          -- 4262811
56287 --
56288  
56289 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56290     l_balance_type_code <> 'B' THEN
56291 IF NVL(p_source_97,9E125) =  20
56292  THEN 
56293 
56294    --
56295    XLA_AE_LINES_PKG.SetNewLine;
56296 
56297    p_balance_type_code          := l_balance_type_code;
56298    -- set the flag so later we will know whether the gain loss line needs to be created
56299    
56300    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56301      p_actual_flag :='A';
56302    END IF;
56303 
56304    --
56305    -- bulk performance
56306    --
56307    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56308                                       p_header_num   => 0); -- 4262811
56309    --
56310    -- set accounting line options
56311    --
56312    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56313            p_natural_side_code          => 'D'
56314          , p_gain_or_loss_flag          => 'N'
56315          , p_gl_transfer_mode_code      => 'S'
56316          , p_acct_entry_type_code       => 'A'
56317          , p_switch_side_flag           => 'Y'
56318          , p_merge_duplicate_code       => 'N'
56319          );
56320    --
56321    l_acc_rev_natural_side_code := 'C';  -- 4262811
56322    -- 
56323    --
56324    -- set accounting line type info
56325    --
56326    xla_ae_lines_pkg.SetAcctLineType
56327       (p_component_type             => l_component_type
56328       ,p_event_type_code            => l_event_type_code
56329       ,p_line_definition_owner_code => l_line_definition_owner_code
56330       ,p_line_definition_code       => l_line_definition_code
56331       ,p_accounting_line_code       => l_component_code
56332       ,p_accounting_line_type_code  => l_component_type_code
56333       ,p_accounting_line_appl_id    => l_component_appl_id
56334       ,p_amb_context_code           => l_amb_context_code
56335       ,p_entity_code                => l_entity_code
56336       ,p_event_class_code           => l_event_class_code);
56337    --
56338    -- set accounting class
56339    --
56340    xla_ae_lines_pkg.SetAcctClass(
56341            p_accounting_class_code  => 'EXPENSE'
56342          , p_ae_header_id           => l_ae_header_id
56343          );
56344 
56345    --
56346    -- set rounding class
56347    --
56348    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56349                       'EXPENSE';
56350 
56351    --
56352    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56353    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56354    --
56355    -- bulk performance
56356    --
56357    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56358 
56359    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56360       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56361 
56362    -- 4955764
56363    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56364       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56365 
56366    -- 4458381 Public Sector Enh
56367    
56368    --
56369    -- set accounting attributes for the line type
56370    --
56371    l_entered_amt_idx := 3;
56372    l_accted_amt_idx  := 8;
56373    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56374    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56375    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
56376    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56377    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
56378    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56379    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
56380    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56381    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
56382    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56383    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
56384    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56385    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
56386    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56387    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
56388    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56389    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
56390 
56391    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56392    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56393 
56394    ---------------------------------------------------------------------------------------------------------------
56395    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56396    ---------------------------------------------------------------------------------------------------------------
56397    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56398 
56399    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56400    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56401 
56402    IF xla_accounting_cache_pkg.GetValueChar
56403          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56404          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56405    AND l_bflow_method_code = 'PRIOR_ENTRY'
56406 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56407    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56408          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56409        )
56410    THEN
56411          xla_ae_lines_pkg.BflowUpgEntry
56412            (p_business_method_code    => l_bflow_method_code
56413            ,p_business_class_code     => l_bflow_class_code
56414            ,p_balance_type            => l_balance_type_code);
56415    ELSE
56416       NULL;
56417 -- No business flow processing for business flow method of NONE.
56418    END IF;
56419 
56420    --
56421    -- call analytical criteria
56422    --
56423    
56424    --
56425    -- call description
56426    --
56427    
56428 xla_ae_lines_pkg.SetLineDescription(
56429    p_ae_header_id => l_ae_header_id
56430   ,p_description  => Description_1 (
56431      p_application_id         => p_application_id
56432    , p_ae_header_id           => l_ae_header_id 
56433 , p_source_1 => p_source_1
56434 , p_source_2 => p_source_2
56435 , p_source_3 => p_source_3
56436 , p_source_4 => p_source_4
56437 , p_source_5 => p_source_5
56438    )
56439 );
56440 
56441 
56442    --
56443    -- call ADRs
56444    -- Bug 4922099
56445    --
56446    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56447         (NVL(l_actual_upg_option, 'N') = 'O') OR
56448         (NVL(l_enc_upg_option, 'N') = 'O')
56449       )
56450    THEN
56451    NULL;
56452    --
56453    --
56454    
56455   l_ccid := AcctDerRule_6(
56456            p_application_id           => p_application_id
56457          , p_ae_header_id             => l_ae_header_id 
56458 , p_source_11 => p_source_11
56459          , x_transaction_coa_id       => l_adr_transaction_coa_id
56460          , x_accounting_coa_id        => l_adr_accounting_coa_id
56461          , x_value_type_code          => l_adr_value_type_code
56462          , p_side                     => 'NA'
56463    );
56464 
56465    xla_ae_lines_pkg.set_ccid(
56466     p_code_combination_id          => l_ccid
56467   , p_value_type_code              => l_adr_value_type_code
56468   , p_transaction_coa_id           => l_adr_transaction_coa_id
56469   , p_accounting_coa_id            => l_adr_accounting_coa_id
56470   , p_adr_code                     => 'CST_DEFAULT'
56471   , p_adr_type_code                => 'S'
56472   , p_component_type               => l_component_type
56473   , p_component_code               => l_component_code
56474   , p_component_type_code          => l_component_type_code
56475   , p_component_appl_id            => l_component_appl_id
56476   , p_amb_context_code             => l_amb_context_code
56477   , p_side                         => 'NA'
56478   );
56479 
56480 
56481    --
56482    --
56483    END IF;
56484    --
56485    -- Bug 4922099
56486    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56487           (NVL(l_enc_upg_option, 'N') = 'O')
56488         ) AND
56489         (l_bflow_method_code = 'PRIOR_ENTRY')
56490       )
56491    THEN
56492       IF
56493       --
56494       1 = 2
56495       --
56496       THEN
56497       xla_accounting_err_pkg.build_message
56498                                     (p_appli_s_name            => 'XLA'
56499                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56500                                     ,p_token_1                 => 'LINE_NUMBER'
56501                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56502                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56503                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56504                                                                              l_component_type
56505                                                                             ,l_component_code
56506                                                                             ,l_component_type_code
56507                                                                             ,l_component_appl_id
56508                                                                             ,l_amb_context_code
56509                                                                             ,l_entity_code
56510                                                                             ,l_event_class_code
56511                                                                            )
56512                                     ,p_token_3                 => 'OWNER'
56513                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56514                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56515                                                                           ,p_lookup_code    => l_component_type_code
56516                                                                          )
56517                                     ,p_token_4                 => 'PRODUCT_NAME'
56518                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56519                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56520                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56521                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56522                                     ,p_ae_header_id            =>  NULL
56523                                        );
56524 
56525         IF (C_LEVEL_ERROR>= g_log_level) THEN
56526                  trace
56527                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56528                       ,p_level    => C_LEVEL_ERROR
56529                       ,p_module   => l_log_module);
56530         END IF;
56531       END IF;
56532    END IF;
56533    --
56534    --
56535    ------------------------------------------------------------------------------------------------
56536    -- 4219869 Business Flow
56537    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56538    -- Prior Entry.  Currently, the following code is always generated.
56539    ------------------------------------------------------------------------------------------------
56540    XLA_AE_LINES_PKG.ValidateCurrentLine;
56541 
56542    ------------------------------------------------------------------------------------
56543    -- 4219869 Business Flow
56544    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56545    ------------------------------------------------------------------------------------
56546    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56547 
56548    ----------------------------------------------------------------------------------
56549    -- 4219869 Business Flow
56550    -- Update journal entry status -- Need to generate this within IF <condition>
56551    ----------------------------------------------------------------------------------
56552    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56553          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56554          ,p_balance_type_code => l_balance_type_code
56555          );
56556 
56557    -------------------------------------------------------------------------------------------
56558    -- 4262811 - Generate the Accrual Reversal lines
56559    -------------------------------------------------------------------------------------------
56560    BEGIN
56561       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56562                               (g_array_event(p_event_id).array_value_num('header_index'));
56563       IF l_acc_rev_flag IS NULL THEN
56564          l_acc_rev_flag := 'N';
56565       END IF;
56566    EXCEPTION
56567       WHEN OTHERS THEN
56568          l_acc_rev_flag := 'N';
56569    END;
56570    --
56571    IF (l_acc_rev_flag = 'Y') THEN
56572 
56573        -- 4645092  ------------------------------------------------------------------------------
56574        -- To allow MPA report to determine if it should generate report process
56575        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56576        ------------------------------------------------------------------------------------------
56577 
56578        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56579        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56580    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56581    -- call ADRs
56582    -- Bug 4922099
56583    --
56584    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56585         (NVL(l_actual_upg_option, 'N') = 'O') OR
56586         (NVL(l_enc_upg_option, 'N') = 'O')
56587       )
56588    THEN
56589    NULL;
56590    --
56591    --
56592    
56593   l_ccid := AcctDerRule_6(
56594            p_application_id           => p_application_id
56595          , p_ae_header_id             => l_ae_header_id 
56596 , p_source_11 => p_source_11
56597          , x_transaction_coa_id       => l_adr_transaction_coa_id
56598          , x_accounting_coa_id        => l_adr_accounting_coa_id
56599          , x_value_type_code          => l_adr_value_type_code
56600          , p_side                     => 'NA'
56601    );
56602 
56603    xla_ae_lines_pkg.set_ccid(
56604     p_code_combination_id          => l_ccid
56605   , p_value_type_code              => l_adr_value_type_code
56606   , p_transaction_coa_id           => l_adr_transaction_coa_id
56607   , p_accounting_coa_id            => l_adr_accounting_coa_id
56608   , p_adr_code                     => 'CST_DEFAULT'
56609   , p_adr_type_code                => 'S'
56610   , p_component_type               => l_component_type
56611   , p_component_code               => l_component_code
56612   , p_component_type_code          => l_component_type_code
56613   , p_component_appl_id            => l_component_appl_id
56614   , p_amb_context_code             => l_amb_context_code
56615   , p_side                         => 'NA'
56616   );
56617 
56618 
56619    --
56620    --
56621    END IF;
56622 
56623        --
56624        -- Update the line information that should be overwritten
56625        --
56626        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56627                                          p_header_num   => 1);
56628        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56629 
56630        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56631 
56632        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56633           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56634        END IF;
56635 
56636       --
56637       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56638       --
56639       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56640           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56641       ELSE
56642           ---------------------------------------------------------------------------------------------------
56643           -- 4262811a Switch Sign
56644           ---------------------------------------------------------------------------------------------------
56645           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56646           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56647                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56648           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56649                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56650           -- 5132302
56651           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56652                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56653 
56654       END IF;
56655 
56656       -- 4955764
56657       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56658       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56659 
56660 
56661       XLA_AE_LINES_PKG.ValidateCurrentLine;
56662       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56663 
56664       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56665                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56666                ,p_balance_type_code => l_balance_type_code);
56667 
56668    END IF;
56669 
56670    -----------------------------------------------------------------------------------------
56671    -- 4262811 Multiperiod Accounting
56672    -----------------------------------------------------------------------------------------
56673      -- No MPA option is assigned.
56674 
56675 
56676 END IF;
56677 END IF;
56678 --
56679 
56680 --
56681 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56682    trace
56683       (p_msg      => 'END of AcctLineType_124'
56684       ,p_level    => C_LEVEL_PROCEDURE
56685       ,p_module   => l_log_module);
56686 END IF;
56687 --
56688 EXCEPTION
56689   WHEN xla_exceptions_pkg.application_exception THEN
56690       RAISE;
56691   WHEN OTHERS THEN
56692        xla_exceptions_pkg.raise_message
56693            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_124');
56694 END AcctLineType_124;
56695 --
56696 
56697 ---------------------------------------
56698 --
56699 -- PRIVATE FUNCTION
56700 --         AcctLineType_125
56701 --
56702 ---------------------------------------
56703 PROCEDURE AcctLineType_125 (
56704   p_application_id        IN NUMBER
56705  ,p_event_id              IN NUMBER
56706  ,p_calculate_acctd_flag  IN VARCHAR2
56707  ,p_calculate_g_l_flag    IN VARCHAR2
56708  ,p_actual_flag           IN OUT VARCHAR2
56709  ,p_balance_type_code     OUT VARCHAR2
56710  ,p_gain_or_loss_ref      OUT VARCHAR2
56711  
56712 --Cost Management Default Account
56713  , p_source_11            IN NUMBER
56714 --Receiving Accounting Line Type
56715  , p_source_78            IN VARCHAR2
56716 --DISTRIBUTION_IDENTIFIER
56717  , p_source_84            IN NUMBER
56718 --Distribution Type
56719  , p_source_85            IN VARCHAR2
56720  , p_source_85_meaning    IN VARCHAR2
56721 --Entered Amount
56722  , p_source_91            IN NUMBER
56723 --Accounted Amount
56724  , p_source_95            IN NUMBER
56725 --Entered Currency Code
56726  , p_source_105            IN VARCHAR2
56727 --Currency Conversion Date
56728  , p_source_106            IN DATE
56729 --Currency Conversion Rate
56730  , p_source_107            IN NUMBER
56731 )
56732 IS
56733 
56734 l_component_type              VARCHAR2(80);
56735 l_component_code              VARCHAR2(30);
56736 l_component_type_code         VARCHAR2(1);
56737 l_component_appl_id           INTEGER;
56738 l_amb_context_code            VARCHAR2(30);
56739 l_entity_code                 VARCHAR2(30);
56740 l_event_class_code            VARCHAR2(30);
56741 l_ae_header_id                NUMBER;
56742 l_event_type_code             VARCHAR2(30);
56743 l_line_definition_code        VARCHAR2(30);
56744 l_line_definition_owner_code  VARCHAR2(1);
56745 --
56746 -- adr variables
56747 l_segment                     VARCHAR2(30);
56748 l_ccid                        NUMBER;
56749 l_adr_transaction_coa_id      NUMBER;
56750 l_adr_accounting_coa_id       NUMBER;
56751 l_adr_flexfield_segment_code  VARCHAR2(30);
56752 l_adr_flex_value_set_id       NUMBER;
56753 l_adr_value_type_code         VARCHAR2(30);
56754 l_adr_value_combination_id    NUMBER;
56755 l_adr_value_segment_code      VARCHAR2(30);
56756 
56757 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56758 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56759 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56760 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56761 
56762 -- 4262811 Variables ------------------------------------------------------------------------------------------
56763 l_entered_amt_idx             NUMBER;
56764 l_accted_amt_idx              NUMBER;
56765 l_acc_rev_flag                VARCHAR2(1);
56766 l_accrual_line_num            NUMBER;
56767 l_tmp_amt                     NUMBER;
56768 l_acc_rev_natural_side_code   VARCHAR2(1);
56769 
56770 l_num_entries                 NUMBER;
56771 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56772 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56773 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56774 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56775 l_recog_line_1                NUMBER;
56776 l_recog_line_2                NUMBER;
56777 
56778 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56779 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56780 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56781 
56782 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56783 
56784 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56785 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56786 
56787 ---------------------------------------------------------------------------------------------------------------
56788 
56789 
56790 --
56791 -- bulk performance
56792 --
56793 l_balance_type_code           VARCHAR2(1);
56794 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56795 l_log_module                  VARCHAR2(240);
56796 
56797 --
56798 -- Upgrade strategy
56799 --
56800 l_actual_upg_option           VARCHAR2(1);
56801 l_enc_upg_option           VARCHAR2(1);
56802 
56803 --
56804 BEGIN
56805 --
56806 IF g_log_enabled THEN
56807       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
56808 END IF;
56809 --
56810 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56811 
56812       trace
56813          (p_msg      => 'BEGIN of AcctLineType_125'
56814          ,p_level    => C_LEVEL_PROCEDURE
56815          ,p_module   => l_log_module);
56816 
56817 END IF;
56818 --
56819 l_component_type             := 'AMB_JLT';
56820 l_component_code             := 'EXPENSE';
56821 l_component_type_code        := 'S';
56822 l_component_appl_id          :=  707;
56823 l_amb_context_code           := 'DEFAULT';
56824 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
56825 l_event_class_code           := 'LDD_COST_ADJ_DEL';
56826 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
56827 l_line_definition_owner_code := 'S';
56828 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
56829 --
56830 l_balance_type_code          := 'A';
56831 l_segment                     := NULL;
56832 l_ccid                        := NULL;
56833 l_adr_transaction_coa_id      := NULL;
56834 l_adr_accounting_coa_id       := NULL;
56835 l_adr_flexfield_segment_code  := NULL;
56836 l_adr_flex_value_set_id       := NULL;
56837 l_adr_value_type_code         := NULL;
56838 l_adr_value_combination_id    := NULL;
56839 l_adr_value_segment_code      := NULL;
56840 
56841 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56842 l_bflow_class_code           := '';    -- 4219869 Business Flow
56843 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56844 l_budgetary_control_flag     := 'N';
56845 
56846 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56847 l_bflow_applied_to_amt       := NULL; -- 5132302
56848 l_entered_amt_idx            := NULL;          -- 4262811
56849 l_accted_amt_idx             := NULL;          -- 4262811
56850 l_acc_rev_flag               := NULL;          -- 4262811
56851 l_accrual_line_num           := NULL;          -- 4262811
56852 l_tmp_amt                    := NULL;          -- 4262811
56853 --
56854  
56855 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56856     l_balance_type_code <> 'B' THEN
56857 IF NVL(p_source_78,'
56858 ') =  'Expense'
56859  THEN 
56860 
56861    --
56862    XLA_AE_LINES_PKG.SetNewLine;
56863 
56864    p_balance_type_code          := l_balance_type_code;
56865    -- set the flag so later we will know whether the gain loss line needs to be created
56866    
56867    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56868      p_actual_flag :='A';
56869    END IF;
56870 
56871    --
56872    -- bulk performance
56873    --
56874    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56875                                       p_header_num   => 0); -- 4262811
56876    --
56877    -- set accounting line options
56878    --
56879    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56880            p_natural_side_code          => 'D'
56881          , p_gain_or_loss_flag          => 'N'
56882          , p_gl_transfer_mode_code      => 'S'
56883          , p_acct_entry_type_code       => 'A'
56884          , p_switch_side_flag           => 'Y'
56885          , p_merge_duplicate_code       => 'N'
56886          );
56887    --
56888    l_acc_rev_natural_side_code := 'C';  -- 4262811
56889    -- 
56890    --
56891    -- set accounting line type info
56892    --
56893    xla_ae_lines_pkg.SetAcctLineType
56894       (p_component_type             => l_component_type
56895       ,p_event_type_code            => l_event_type_code
56896       ,p_line_definition_owner_code => l_line_definition_owner_code
56897       ,p_line_definition_code       => l_line_definition_code
56898       ,p_accounting_line_code       => l_component_code
56899       ,p_accounting_line_type_code  => l_component_type_code
56900       ,p_accounting_line_appl_id    => l_component_appl_id
56901       ,p_amb_context_code           => l_amb_context_code
56902       ,p_entity_code                => l_entity_code
56903       ,p_event_class_code           => l_event_class_code);
56904    --
56905    -- set accounting class
56906    --
56907    xla_ae_lines_pkg.SetAcctClass(
56908            p_accounting_class_code  => 'EXPENSE'
56909          , p_ae_header_id           => l_ae_header_id
56910          );
56911 
56912    --
56913    -- set rounding class
56914    --
56915    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56916                       'EXPENSE';
56917 
56918    --
56919    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56920    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56921    --
56922    -- bulk performance
56923    --
56924    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56925 
56926    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56927       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56928 
56929    -- 4955764
56930    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56931       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56932 
56933    -- 4458381 Public Sector Enh
56934    
56935    --
56936    -- set accounting attributes for the line type
56937    --
56938    l_entered_amt_idx := 3;
56939    l_accted_amt_idx  := 7;
56940    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56941    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56942    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
56943    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56944    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
56945    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56946    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
56947    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56948    l_rec_acct_attrs.array_char_value(4)  := p_source_105;
56949    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56950    l_rec_acct_attrs.array_date_value(5)  := p_source_106;
56951    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56952    l_rec_acct_attrs.array_num_value(6)  := p_source_107;
56953    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
56954    l_rec_acct_attrs.array_num_value(7)  := p_source_95;
56955 
56956    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56957    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56958 
56959    ---------------------------------------------------------------------------------------------------------------
56960    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56961    ---------------------------------------------------------------------------------------------------------------
56962    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56963 
56964    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56965    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56966 
56967    IF xla_accounting_cache_pkg.GetValueChar
56968          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56969          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56970    AND l_bflow_method_code = 'PRIOR_ENTRY'
56971 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56972    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56973          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56974        )
56975    THEN
56976          xla_ae_lines_pkg.BflowUpgEntry
56977            (p_business_method_code    => l_bflow_method_code
56978            ,p_business_class_code     => l_bflow_class_code
56979            ,p_balance_type            => l_balance_type_code);
56980    ELSE
56981       NULL;
56982 -- No business flow processing for business flow method of NONE.
56983    END IF;
56984 
56985    --
56986    -- call analytical criteria
56987    --
56988    
56989    --
56990    -- call description
56991    --
56992    -- No description or it is inherited.
56993    --
56994    -- call ADRs
56995    -- Bug 4922099
56996    --
56997    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56998         (NVL(l_actual_upg_option, 'N') = 'O') OR
56999         (NVL(l_enc_upg_option, 'N') = 'O')
57000       )
57001    THEN
57002    NULL;
57003    --
57004    --
57005    
57006   l_ccid := AcctDerRule_6(
57007            p_application_id           => p_application_id
57008          , p_ae_header_id             => l_ae_header_id 
57009 , p_source_11 => p_source_11
57010          , x_transaction_coa_id       => l_adr_transaction_coa_id
57011          , x_accounting_coa_id        => l_adr_accounting_coa_id
57012          , x_value_type_code          => l_adr_value_type_code
57013          , p_side                     => 'NA'
57014    );
57015 
57016    xla_ae_lines_pkg.set_ccid(
57017     p_code_combination_id          => l_ccid
57018   , p_value_type_code              => l_adr_value_type_code
57019   , p_transaction_coa_id           => l_adr_transaction_coa_id
57020   , p_accounting_coa_id            => l_adr_accounting_coa_id
57021   , p_adr_code                     => 'CST_DEFAULT'
57022   , p_adr_type_code                => 'S'
57023   , p_component_type               => l_component_type
57024   , p_component_code               => l_component_code
57025   , p_component_type_code          => l_component_type_code
57026   , p_component_appl_id            => l_component_appl_id
57027   , p_amb_context_code             => l_amb_context_code
57028   , p_side                         => 'NA'
57029   );
57030 
57031 
57032    --
57033    --
57034    END IF;
57035    --
57036    -- Bug 4922099
57037    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57038           (NVL(l_enc_upg_option, 'N') = 'O')
57039         ) AND
57040         (l_bflow_method_code = 'PRIOR_ENTRY')
57041       )
57042    THEN
57043       IF
57044       --
57045       1 = 2
57046       --
57047       THEN
57048       xla_accounting_err_pkg.build_message
57049                                     (p_appli_s_name            => 'XLA'
57050                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57051                                     ,p_token_1                 => 'LINE_NUMBER'
57052                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57053                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57054                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57055                                                                              l_component_type
57056                                                                             ,l_component_code
57057                                                                             ,l_component_type_code
57058                                                                             ,l_component_appl_id
57059                                                                             ,l_amb_context_code
57060                                                                             ,l_entity_code
57061                                                                             ,l_event_class_code
57062                                                                            )
57063                                     ,p_token_3                 => 'OWNER'
57064                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57065                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57066                                                                           ,p_lookup_code    => l_component_type_code
57067                                                                          )
57068                                     ,p_token_4                 => 'PRODUCT_NAME'
57069                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57070                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57071                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57072                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57073                                     ,p_ae_header_id            =>  NULL
57074                                        );
57075 
57076         IF (C_LEVEL_ERROR>= g_log_level) THEN
57077                  trace
57078                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57079                       ,p_level    => C_LEVEL_ERROR
57080                       ,p_module   => l_log_module);
57081         END IF;
57082       END IF;
57083    END IF;
57084    --
57085    --
57086    ------------------------------------------------------------------------------------------------
57087    -- 4219869 Business Flow
57088    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57089    -- Prior Entry.  Currently, the following code is always generated.
57090    ------------------------------------------------------------------------------------------------
57091    XLA_AE_LINES_PKG.ValidateCurrentLine;
57092 
57093    ------------------------------------------------------------------------------------
57094    -- 4219869 Business Flow
57095    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57096    ------------------------------------------------------------------------------------
57097    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57098 
57099    ----------------------------------------------------------------------------------
57100    -- 4219869 Business Flow
57101    -- Update journal entry status -- Need to generate this within IF <condition>
57102    ----------------------------------------------------------------------------------
57103    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57104          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57105          ,p_balance_type_code => l_balance_type_code
57106          );
57107 
57108    -------------------------------------------------------------------------------------------
57109    -- 4262811 - Generate the Accrual Reversal lines
57110    -------------------------------------------------------------------------------------------
57111    BEGIN
57112       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57113                               (g_array_event(p_event_id).array_value_num('header_index'));
57114       IF l_acc_rev_flag IS NULL THEN
57115          l_acc_rev_flag := 'N';
57116       END IF;
57117    EXCEPTION
57118       WHEN OTHERS THEN
57119          l_acc_rev_flag := 'N';
57120    END;
57121    --
57122    IF (l_acc_rev_flag = 'Y') THEN
57123 
57124        -- 4645092  ------------------------------------------------------------------------------
57125        -- To allow MPA report to determine if it should generate report process
57126        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57127        ------------------------------------------------------------------------------------------
57128 
57129        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57130        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57131    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57132    -- call ADRs
57133    -- Bug 4922099
57134    --
57135    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57136         (NVL(l_actual_upg_option, 'N') = 'O') OR
57137         (NVL(l_enc_upg_option, 'N') = 'O')
57138       )
57139    THEN
57140    NULL;
57141    --
57142    --
57143    
57144   l_ccid := AcctDerRule_6(
57145            p_application_id           => p_application_id
57146          , p_ae_header_id             => l_ae_header_id 
57147 , p_source_11 => p_source_11
57148          , x_transaction_coa_id       => l_adr_transaction_coa_id
57149          , x_accounting_coa_id        => l_adr_accounting_coa_id
57150          , x_value_type_code          => l_adr_value_type_code
57151          , p_side                     => 'NA'
57152    );
57153 
57154    xla_ae_lines_pkg.set_ccid(
57155     p_code_combination_id          => l_ccid
57156   , p_value_type_code              => l_adr_value_type_code
57157   , p_transaction_coa_id           => l_adr_transaction_coa_id
57158   , p_accounting_coa_id            => l_adr_accounting_coa_id
57159   , p_adr_code                     => 'CST_DEFAULT'
57160   , p_adr_type_code                => 'S'
57161   , p_component_type               => l_component_type
57162   , p_component_code               => l_component_code
57163   , p_component_type_code          => l_component_type_code
57164   , p_component_appl_id            => l_component_appl_id
57165   , p_amb_context_code             => l_amb_context_code
57166   , p_side                         => 'NA'
57167   );
57168 
57169 
57170    --
57171    --
57172    END IF;
57173 
57174        --
57175        -- Update the line information that should be overwritten
57176        --
57177        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57178                                          p_header_num   => 1);
57179        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57180 
57181        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57182 
57183        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57184           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57185        END IF;
57186 
57187       --
57188       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57189       --
57190       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57191           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57192       ELSE
57193           ---------------------------------------------------------------------------------------------------
57194           -- 4262811a Switch Sign
57195           ---------------------------------------------------------------------------------------------------
57196           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57197           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57198                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57199           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57200                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57201           -- 5132302
57202           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57203                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57204 
57205       END IF;
57206 
57207       -- 4955764
57208       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57209       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57210 
57211 
57212       XLA_AE_LINES_PKG.ValidateCurrentLine;
57213       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57214 
57215       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57216                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57217                ,p_balance_type_code => l_balance_type_code);
57218 
57219    END IF;
57220 
57221    -----------------------------------------------------------------------------------------
57222    -- 4262811 Multiperiod Accounting
57223    -----------------------------------------------------------------------------------------
57224      -- No MPA option is assigned.
57225 
57226 
57227 END IF;
57228 END IF;
57229 --
57230 
57231 --
57232 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57233    trace
57234       (p_msg      => 'END of AcctLineType_125'
57235       ,p_level    => C_LEVEL_PROCEDURE
57236       ,p_module   => l_log_module);
57237 END IF;
57238 --
57239 EXCEPTION
57240   WHEN xla_exceptions_pkg.application_exception THEN
57241       RAISE;
57242   WHEN OTHERS THEN
57243        xla_exceptions_pkg.raise_message
57244            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_125');
57245 END AcctLineType_125;
57246 --
57247 
57248 ---------------------------------------
57249 --
57250 -- PRIVATE FUNCTION
57251 --         AcctLineType_126
57252 --
57253 ---------------------------------------
57254 PROCEDURE AcctLineType_126 (
57255   p_application_id        IN NUMBER
57256  ,p_event_id              IN NUMBER
57257  ,p_calculate_acctd_flag  IN VARCHAR2
57258  ,p_calculate_g_l_flag    IN VARCHAR2
57259  ,p_actual_flag           IN OUT VARCHAR2
57260  ,p_balance_type_code     OUT VARCHAR2
57261  ,p_gain_or_loss_ref      OUT VARCHAR2
57262  
57263 --TRANSACTION_ID
57264  , p_source_1            IN NUMBER
57265 --Item Concatenated Segments
57266  , p_source_2            IN VARCHAR2
57267 --Transaction Quantity
57268  , p_source_3            IN NUMBER
57269 --Transaction Unit of Measure Code
57270  , p_source_4            IN VARCHAR2
57271 --Inventory Transaction Type Description
57272  , p_source_5            IN VARCHAR2
57273 --Cost Management Default Account
57274  , p_source_11            IN NUMBER
57275 --DISTRIBUTION_IDENTIFIER
57276  , p_source_84            IN NUMBER
57277 --Distribution Type
57278  , p_source_85            IN VARCHAR2
57279  , p_source_85_meaning    IN VARCHAR2
57280 --Entered Currency Code
57281  , p_source_88            IN VARCHAR2
57282 --Entered Amount
57283  , p_source_91            IN NUMBER
57284 --Currency Conversion Date
57285  , p_source_92            IN DATE
57286 --Currency Conversion Rate
57287  , p_source_93            IN NUMBER
57288 --Currency Conversion Type
57289  , p_source_94            IN VARCHAR2
57290 --Accounted Amount
57291  , p_source_95            IN NUMBER
57292 --Accounting Line Type
57293  , p_source_97            IN NUMBER
57294 )
57295 IS
57296 
57297 l_component_type              VARCHAR2(80);
57298 l_component_code              VARCHAR2(30);
57299 l_component_type_code         VARCHAR2(1);
57300 l_component_appl_id           INTEGER;
57301 l_amb_context_code            VARCHAR2(30);
57302 l_entity_code                 VARCHAR2(30);
57303 l_event_class_code            VARCHAR2(30);
57304 l_ae_header_id                NUMBER;
57305 l_event_type_code             VARCHAR2(30);
57306 l_line_definition_code        VARCHAR2(30);
57307 l_line_definition_owner_code  VARCHAR2(1);
57308 --
57309 -- adr variables
57310 l_segment                     VARCHAR2(30);
57311 l_ccid                        NUMBER;
57312 l_adr_transaction_coa_id      NUMBER;
57313 l_adr_accounting_coa_id       NUMBER;
57314 l_adr_flexfield_segment_code  VARCHAR2(30);
57315 l_adr_flex_value_set_id       NUMBER;
57316 l_adr_value_type_code         VARCHAR2(30);
57317 l_adr_value_combination_id    NUMBER;
57318 l_adr_value_segment_code      VARCHAR2(30);
57319 
57320 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57321 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57322 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57323 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57324 
57325 -- 4262811 Variables ------------------------------------------------------------------------------------------
57326 l_entered_amt_idx             NUMBER;
57327 l_accted_amt_idx              NUMBER;
57328 l_acc_rev_flag                VARCHAR2(1);
57329 l_accrual_line_num            NUMBER;
57330 l_tmp_amt                     NUMBER;
57331 l_acc_rev_natural_side_code   VARCHAR2(1);
57332 
57333 l_num_entries                 NUMBER;
57334 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57335 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57336 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57337 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57338 l_recog_line_1                NUMBER;
57339 l_recog_line_2                NUMBER;
57340 
57341 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57342 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57343 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57344 
57345 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57346 
57347 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57348 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57349 
57350 ---------------------------------------------------------------------------------------------------------------
57351 
57352 
57353 --
57354 -- bulk performance
57355 --
57356 l_balance_type_code           VARCHAR2(1);
57357 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57358 l_log_module                  VARCHAR2(240);
57359 
57360 --
57361 -- Upgrade strategy
57362 --
57363 l_actual_upg_option           VARCHAR2(1);
57364 l_enc_upg_option           VARCHAR2(1);
57365 
57366 --
57367 BEGIN
57368 --
57369 IF g_log_enabled THEN
57370       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
57371 END IF;
57372 --
57373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57374 
57375       trace
57376          (p_msg      => 'BEGIN of AcctLineType_126'
57377          ,p_level    => C_LEVEL_PROCEDURE
57378          ,p_module   => l_log_module);
57379 
57380 END IF;
57381 --
57382 l_component_type             := 'AMB_JLT';
57383 l_component_code             := 'EXPENSE';
57384 l_component_type_code        := 'S';
57385 l_component_appl_id          :=  707;
57386 l_amb_context_code           := 'DEFAULT';
57387 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
57388 l_event_class_code           := 'MTL_COST_UPD';
57389 l_event_type_code            := 'AVG_COST_UPD';
57390 l_line_definition_owner_code := 'S';
57391 l_line_definition_code       := 'PI_AVG_COST_UPD';
57392 --
57393 l_balance_type_code          := 'A';
57394 l_segment                     := NULL;
57395 l_ccid                        := NULL;
57396 l_adr_transaction_coa_id      := NULL;
57397 l_adr_accounting_coa_id       := NULL;
57398 l_adr_flexfield_segment_code  := NULL;
57399 l_adr_flex_value_set_id       := NULL;
57400 l_adr_value_type_code         := NULL;
57401 l_adr_value_combination_id    := NULL;
57402 l_adr_value_segment_code      := NULL;
57403 
57404 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57405 l_bflow_class_code           := '';    -- 4219869 Business Flow
57406 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57407 l_budgetary_control_flag     := 'N';
57408 
57409 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57410 l_bflow_applied_to_amt       := NULL; -- 5132302
57411 l_entered_amt_idx            := NULL;          -- 4262811
57412 l_accted_amt_idx             := NULL;          -- 4262811
57413 l_acc_rev_flag               := NULL;          -- 4262811
57414 l_accrual_line_num           := NULL;          -- 4262811
57415 l_tmp_amt                    := NULL;          -- 4262811
57416 --
57417  
57418 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57419     l_balance_type_code <> 'B' THEN
57420 IF NVL(p_source_97,9E125) =  20
57421  THEN 
57422 
57423    --
57424    XLA_AE_LINES_PKG.SetNewLine;
57425 
57426    p_balance_type_code          := l_balance_type_code;
57427    -- set the flag so later we will know whether the gain loss line needs to be created
57428    
57429    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57430      p_actual_flag :='A';
57431    END IF;
57432 
57433    --
57434    -- bulk performance
57435    --
57436    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57437                                       p_header_num   => 0); -- 4262811
57438    --
57439    -- set accounting line options
57440    --
57441    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57442            p_natural_side_code          => 'D'
57443          , p_gain_or_loss_flag          => 'N'
57444          , p_gl_transfer_mode_code      => 'S'
57445          , p_acct_entry_type_code       => 'A'
57446          , p_switch_side_flag           => 'Y'
57447          , p_merge_duplicate_code       => 'N'
57448          );
57449    --
57450    l_acc_rev_natural_side_code := 'C';  -- 4262811
57451    -- 
57452    --
57453    -- set accounting line type info
57454    --
57455    xla_ae_lines_pkg.SetAcctLineType
57456       (p_component_type             => l_component_type
57457       ,p_event_type_code            => l_event_type_code
57458       ,p_line_definition_owner_code => l_line_definition_owner_code
57459       ,p_line_definition_code       => l_line_definition_code
57460       ,p_accounting_line_code       => l_component_code
57461       ,p_accounting_line_type_code  => l_component_type_code
57462       ,p_accounting_line_appl_id    => l_component_appl_id
57463       ,p_amb_context_code           => l_amb_context_code
57464       ,p_entity_code                => l_entity_code
57465       ,p_event_class_code           => l_event_class_code);
57466    --
57467    -- set accounting class
57468    --
57469    xla_ae_lines_pkg.SetAcctClass(
57470            p_accounting_class_code  => 'EXPENSE'
57471          , p_ae_header_id           => l_ae_header_id
57472          );
57473 
57474    --
57475    -- set rounding class
57476    --
57477    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57478                       'EXPENSE';
57479 
57480    --
57481    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57482    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57483    --
57484    -- bulk performance
57485    --
57486    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57487 
57488    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57489       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57490 
57491    -- 4955764
57492    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57493       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57494 
57495    -- 4458381 Public Sector Enh
57496    
57497    --
57498    -- set accounting attributes for the line type
57499    --
57500    l_entered_amt_idx := 3;
57501    l_accted_amt_idx  := 8;
57502    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57503    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
57504    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
57505    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
57506    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
57507    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
57508    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
57509    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
57510    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
57511    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
57512    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
57513    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
57514    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
57515    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
57516    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
57517    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
57518    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
57519 
57520    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57521    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57522 
57523    ---------------------------------------------------------------------------------------------------------------
57524    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57525    ---------------------------------------------------------------------------------------------------------------
57526    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57527 
57528    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57529    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57530 
57531    IF xla_accounting_cache_pkg.GetValueChar
57532          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57533          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57534    AND l_bflow_method_code = 'PRIOR_ENTRY'
57535 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57536    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57537          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57538        )
57539    THEN
57540          xla_ae_lines_pkg.BflowUpgEntry
57541            (p_business_method_code    => l_bflow_method_code
57542            ,p_business_class_code     => l_bflow_class_code
57543            ,p_balance_type            => l_balance_type_code);
57544    ELSE
57545       NULL;
57546 -- No business flow processing for business flow method of NONE.
57547    END IF;
57548 
57549    --
57550    -- call analytical criteria
57551    --
57552    
57553    --
57554    -- call description
57555    --
57556    
57557 xla_ae_lines_pkg.SetLineDescription(
57558    p_ae_header_id => l_ae_header_id
57559   ,p_description  => Description_1 (
57560      p_application_id         => p_application_id
57561    , p_ae_header_id           => l_ae_header_id 
57562 , p_source_1 => p_source_1
57563 , p_source_2 => p_source_2
57564 , p_source_3 => p_source_3
57565 , p_source_4 => p_source_4
57566 , p_source_5 => p_source_5
57567    )
57568 );
57569 
57570 
57571    --
57572    -- call ADRs
57573    -- Bug 4922099
57574    --
57575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57576         (NVL(l_actual_upg_option, 'N') = 'O') OR
57577         (NVL(l_enc_upg_option, 'N') = 'O')
57578       )
57579    THEN
57580    NULL;
57581    --
57582    --
57583    
57584   l_ccid := AcctDerRule_6(
57585            p_application_id           => p_application_id
57586          , p_ae_header_id             => l_ae_header_id 
57587 , p_source_11 => p_source_11
57588          , x_transaction_coa_id       => l_adr_transaction_coa_id
57589          , x_accounting_coa_id        => l_adr_accounting_coa_id
57590          , x_value_type_code          => l_adr_value_type_code
57591          , p_side                     => 'NA'
57592    );
57593 
57594    xla_ae_lines_pkg.set_ccid(
57595     p_code_combination_id          => l_ccid
57596   , p_value_type_code              => l_adr_value_type_code
57597   , p_transaction_coa_id           => l_adr_transaction_coa_id
57598   , p_accounting_coa_id            => l_adr_accounting_coa_id
57599   , p_adr_code                     => 'CST_DEFAULT'
57600   , p_adr_type_code                => 'S'
57601   , p_component_type               => l_component_type
57602   , p_component_code               => l_component_code
57603   , p_component_type_code          => l_component_type_code
57604   , p_component_appl_id            => l_component_appl_id
57605   , p_amb_context_code             => l_amb_context_code
57606   , p_side                         => 'NA'
57607   );
57608 
57609 
57610    --
57611    --
57612    END IF;
57613    --
57614    -- Bug 4922099
57615    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57616           (NVL(l_enc_upg_option, 'N') = 'O')
57617         ) AND
57618         (l_bflow_method_code = 'PRIOR_ENTRY')
57619       )
57620    THEN
57621       IF
57622       --
57623       1 = 2
57624       --
57625       THEN
57626       xla_accounting_err_pkg.build_message
57627                                     (p_appli_s_name            => 'XLA'
57628                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57629                                     ,p_token_1                 => 'LINE_NUMBER'
57630                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57631                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57632                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57633                                                                              l_component_type
57634                                                                             ,l_component_code
57635                                                                             ,l_component_type_code
57636                                                                             ,l_component_appl_id
57637                                                                             ,l_amb_context_code
57638                                                                             ,l_entity_code
57639                                                                             ,l_event_class_code
57640                                                                            )
57641                                     ,p_token_3                 => 'OWNER'
57642                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57643                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57644                                                                           ,p_lookup_code    => l_component_type_code
57645                                                                          )
57646                                     ,p_token_4                 => 'PRODUCT_NAME'
57647                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57648                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57649                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57650                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57651                                     ,p_ae_header_id            =>  NULL
57652                                        );
57653 
57654         IF (C_LEVEL_ERROR>= g_log_level) THEN
57655                  trace
57656                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57657                       ,p_level    => C_LEVEL_ERROR
57658                       ,p_module   => l_log_module);
57659         END IF;
57660       END IF;
57661    END IF;
57662    --
57663    --
57664    ------------------------------------------------------------------------------------------------
57665    -- 4219869 Business Flow
57666    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57667    -- Prior Entry.  Currently, the following code is always generated.
57668    ------------------------------------------------------------------------------------------------
57669    XLA_AE_LINES_PKG.ValidateCurrentLine;
57670 
57671    ------------------------------------------------------------------------------------
57672    -- 4219869 Business Flow
57673    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57674    ------------------------------------------------------------------------------------
57675    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57676 
57677    ----------------------------------------------------------------------------------
57678    -- 4219869 Business Flow
57679    -- Update journal entry status -- Need to generate this within IF <condition>
57680    ----------------------------------------------------------------------------------
57681    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57682          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57683          ,p_balance_type_code => l_balance_type_code
57684          );
57685 
57686    -------------------------------------------------------------------------------------------
57687    -- 4262811 - Generate the Accrual Reversal lines
57688    -------------------------------------------------------------------------------------------
57689    BEGIN
57690       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57691                               (g_array_event(p_event_id).array_value_num('header_index'));
57692       IF l_acc_rev_flag IS NULL THEN
57693          l_acc_rev_flag := 'N';
57694       END IF;
57695    EXCEPTION
57696       WHEN OTHERS THEN
57697          l_acc_rev_flag := 'N';
57698    END;
57699    --
57700    IF (l_acc_rev_flag = 'Y') THEN
57701 
57702        -- 4645092  ------------------------------------------------------------------------------
57703        -- To allow MPA report to determine if it should generate report process
57704        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57705        ------------------------------------------------------------------------------------------
57706 
57707        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57708        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57709    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57710    -- call ADRs
57711    -- Bug 4922099
57712    --
57713    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57714         (NVL(l_actual_upg_option, 'N') = 'O') OR
57715         (NVL(l_enc_upg_option, 'N') = 'O')
57716       )
57717    THEN
57718    NULL;
57719    --
57720    --
57721    
57722   l_ccid := AcctDerRule_6(
57723            p_application_id           => p_application_id
57724          , p_ae_header_id             => l_ae_header_id 
57725 , p_source_11 => p_source_11
57726          , x_transaction_coa_id       => l_adr_transaction_coa_id
57727          , x_accounting_coa_id        => l_adr_accounting_coa_id
57728          , x_value_type_code          => l_adr_value_type_code
57729          , p_side                     => 'NA'
57730    );
57731 
57732    xla_ae_lines_pkg.set_ccid(
57733     p_code_combination_id          => l_ccid
57734   , p_value_type_code              => l_adr_value_type_code
57735   , p_transaction_coa_id           => l_adr_transaction_coa_id
57736   , p_accounting_coa_id            => l_adr_accounting_coa_id
57737   , p_adr_code                     => 'CST_DEFAULT'
57738   , p_adr_type_code                => 'S'
57739   , p_component_type               => l_component_type
57740   , p_component_code               => l_component_code
57741   , p_component_type_code          => l_component_type_code
57742   , p_component_appl_id            => l_component_appl_id
57743   , p_amb_context_code             => l_amb_context_code
57744   , p_side                         => 'NA'
57745   );
57746 
57747 
57748    --
57749    --
57750    END IF;
57751 
57752        --
57753        -- Update the line information that should be overwritten
57754        --
57755        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57756                                          p_header_num   => 1);
57757        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57758 
57759        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57760 
57761        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57762           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57763        END IF;
57764 
57765       --
57766       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57767       --
57768       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57769           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57770       ELSE
57771           ---------------------------------------------------------------------------------------------------
57772           -- 4262811a Switch Sign
57773           ---------------------------------------------------------------------------------------------------
57774           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57775           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57776                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57777           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57778                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57779           -- 5132302
57780           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57781                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57782 
57783       END IF;
57784 
57785       -- 4955764
57786       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57787       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57788 
57789 
57790       XLA_AE_LINES_PKG.ValidateCurrentLine;
57791       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57792 
57793       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57794                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57795                ,p_balance_type_code => l_balance_type_code);
57796 
57797    END IF;
57798 
57799    -----------------------------------------------------------------------------------------
57800    -- 4262811 Multiperiod Accounting
57801    -----------------------------------------------------------------------------------------
57802      -- No MPA option is assigned.
57803 
57804 
57805 END IF;
57806 END IF;
57807 --
57808 
57809 --
57810 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57811    trace
57812       (p_msg      => 'END of AcctLineType_126'
57813       ,p_level    => C_LEVEL_PROCEDURE
57814       ,p_module   => l_log_module);
57815 END IF;
57816 --
57817 EXCEPTION
57818   WHEN xla_exceptions_pkg.application_exception THEN
57819       RAISE;
57820   WHEN OTHERS THEN
57821        xla_exceptions_pkg.raise_message
57822            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_126');
57823 END AcctLineType_126;
57824 --
57825 
57826 ---------------------------------------
57827 --
57828 -- PRIVATE FUNCTION
57829 --         AcctLineType_127
57830 --
57831 ---------------------------------------
57832 PROCEDURE AcctLineType_127 (
57833   p_application_id        IN NUMBER
57834  ,p_event_id              IN NUMBER
57835  ,p_calculate_acctd_flag  IN VARCHAR2
57836  ,p_calculate_g_l_flag    IN VARCHAR2
57837  ,p_actual_flag           IN OUT VARCHAR2
57838  ,p_balance_type_code     OUT VARCHAR2
57839  ,p_gain_or_loss_ref      OUT VARCHAR2
57840  
57841 --TRANSACTION_ID
57842  , p_source_1            IN NUMBER
57843 --Item Concatenated Segments
57844  , p_source_2            IN VARCHAR2
57845 --Transaction Quantity
57846  , p_source_3            IN NUMBER
57847 --Transaction Unit of Measure Code
57848  , p_source_4            IN VARCHAR2
57849 --Inventory Transaction Type Description
57850  , p_source_5            IN VARCHAR2
57851 --Cost Management Default Account
57852  , p_source_11            IN NUMBER
57853 --DISTRIBUTION_IDENTIFIER
57854  , p_source_84            IN NUMBER
57855 --Distribution Type
57856  , p_source_85            IN VARCHAR2
57857  , p_source_85_meaning    IN VARCHAR2
57858 --Entered Currency Code
57859  , p_source_88            IN VARCHAR2
57860 --Entered Amount
57861  , p_source_91            IN NUMBER
57862 --Currency Conversion Date
57863  , p_source_92            IN DATE
57864 --Currency Conversion Rate
57865  , p_source_93            IN NUMBER
57866 --Currency Conversion Type
57867  , p_source_94            IN VARCHAR2
57868 --Accounted Amount
57869  , p_source_95            IN NUMBER
57870 --Accounting Line Type
57871  , p_source_97            IN NUMBER
57872 )
57873 IS
57874 
57875 l_component_type              VARCHAR2(80);
57876 l_component_code              VARCHAR2(30);
57877 l_component_type_code         VARCHAR2(1);
57878 l_component_appl_id           INTEGER;
57879 l_amb_context_code            VARCHAR2(30);
57880 l_entity_code                 VARCHAR2(30);
57881 l_event_class_code            VARCHAR2(30);
57882 l_ae_header_id                NUMBER;
57883 l_event_type_code             VARCHAR2(30);
57884 l_line_definition_code        VARCHAR2(30);
57885 l_line_definition_owner_code  VARCHAR2(1);
57886 --
57887 -- adr variables
57888 l_segment                     VARCHAR2(30);
57889 l_ccid                        NUMBER;
57890 l_adr_transaction_coa_id      NUMBER;
57891 l_adr_accounting_coa_id       NUMBER;
57892 l_adr_flexfield_segment_code  VARCHAR2(30);
57893 l_adr_flex_value_set_id       NUMBER;
57894 l_adr_value_type_code         VARCHAR2(30);
57895 l_adr_value_combination_id    NUMBER;
57896 l_adr_value_segment_code      VARCHAR2(30);
57897 
57898 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57899 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57900 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57901 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57902 
57903 -- 4262811 Variables ------------------------------------------------------------------------------------------
57904 l_entered_amt_idx             NUMBER;
57905 l_accted_amt_idx              NUMBER;
57906 l_acc_rev_flag                VARCHAR2(1);
57907 l_accrual_line_num            NUMBER;
57908 l_tmp_amt                     NUMBER;
57909 l_acc_rev_natural_side_code   VARCHAR2(1);
57910 
57911 l_num_entries                 NUMBER;
57912 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57913 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57914 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57915 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57916 l_recog_line_1                NUMBER;
57917 l_recog_line_2                NUMBER;
57918 
57919 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57920 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57921 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57922 
57923 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57924 
57925 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57926 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57927 
57928 ---------------------------------------------------------------------------------------------------------------
57929 
57930 
57931 --
57932 -- bulk performance
57933 --
57934 l_balance_type_code           VARCHAR2(1);
57935 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57936 l_log_module                  VARCHAR2(240);
57937 
57938 --
57939 -- Upgrade strategy
57940 --
57941 l_actual_upg_option           VARCHAR2(1);
57942 l_enc_upg_option           VARCHAR2(1);
57943 
57944 --
57945 BEGIN
57946 --
57947 IF g_log_enabled THEN
57948       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
57949 END IF;
57950 --
57951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57952 
57953       trace
57954          (p_msg      => 'BEGIN of AcctLineType_127'
57955          ,p_level    => C_LEVEL_PROCEDURE
57956          ,p_module   => l_log_module);
57957 
57958 END IF;
57959 --
57960 l_component_type             := 'AMB_JLT';
57961 l_component_code             := 'EXPENSE';
57962 l_component_type_code        := 'S';
57963 l_component_appl_id          :=  707;
57964 l_amb_context_code           := 'DEFAULT';
57965 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
57966 l_event_class_code           := 'MTL_COST_UPD';
57967 l_event_type_code            := 'LAYER_COST_UPD';
57968 l_line_definition_owner_code := 'S';
57969 l_line_definition_code       := 'PI_LAYER_COST_UPDATE';
57970 --
57971 l_balance_type_code          := 'A';
57972 l_segment                     := NULL;
57973 l_ccid                        := NULL;
57974 l_adr_transaction_coa_id      := NULL;
57975 l_adr_accounting_coa_id       := NULL;
57976 l_adr_flexfield_segment_code  := NULL;
57977 l_adr_flex_value_set_id       := NULL;
57978 l_adr_value_type_code         := NULL;
57979 l_adr_value_combination_id    := NULL;
57980 l_adr_value_segment_code      := NULL;
57981 
57982 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57983 l_bflow_class_code           := '';    -- 4219869 Business Flow
57984 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57985 l_budgetary_control_flag     := 'N';
57986 
57987 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57988 l_bflow_applied_to_amt       := NULL; -- 5132302
57989 l_entered_amt_idx            := NULL;          -- 4262811
57990 l_accted_amt_idx             := NULL;          -- 4262811
57991 l_acc_rev_flag               := NULL;          -- 4262811
57992 l_accrual_line_num           := NULL;          -- 4262811
57993 l_tmp_amt                    := NULL;          -- 4262811
57994 --
57995  
57996 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57997     l_balance_type_code <> 'B' THEN
57998 IF NVL(p_source_97,9E125) =  20
57999  THEN 
58000 
58001    --
58002    XLA_AE_LINES_PKG.SetNewLine;
58003 
58004    p_balance_type_code          := l_balance_type_code;
58005    -- set the flag so later we will know whether the gain loss line needs to be created
58006    
58007    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58008      p_actual_flag :='A';
58009    END IF;
58010 
58011    --
58012    -- bulk performance
58013    --
58014    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58015                                       p_header_num   => 0); -- 4262811
58016    --
58017    -- set accounting line options
58018    --
58019    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58020            p_natural_side_code          => 'D'
58021          , p_gain_or_loss_flag          => 'N'
58022          , p_gl_transfer_mode_code      => 'S'
58023          , p_acct_entry_type_code       => 'A'
58024          , p_switch_side_flag           => 'Y'
58025          , p_merge_duplicate_code       => 'N'
58026          );
58027    --
58028    l_acc_rev_natural_side_code := 'C';  -- 4262811
58029    -- 
58030    --
58031    -- set accounting line type info
58032    --
58033    xla_ae_lines_pkg.SetAcctLineType
58034       (p_component_type             => l_component_type
58035       ,p_event_type_code            => l_event_type_code
58036       ,p_line_definition_owner_code => l_line_definition_owner_code
58037       ,p_line_definition_code       => l_line_definition_code
58038       ,p_accounting_line_code       => l_component_code
58039       ,p_accounting_line_type_code  => l_component_type_code
58040       ,p_accounting_line_appl_id    => l_component_appl_id
58041       ,p_amb_context_code           => l_amb_context_code
58042       ,p_entity_code                => l_entity_code
58043       ,p_event_class_code           => l_event_class_code);
58044    --
58045    -- set accounting class
58046    --
58047    xla_ae_lines_pkg.SetAcctClass(
58048            p_accounting_class_code  => 'EXPENSE'
58049          , p_ae_header_id           => l_ae_header_id
58050          );
58051 
58052    --
58053    -- set rounding class
58054    --
58055    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58056                       'EXPENSE';
58057 
58058    --
58059    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58060    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58061    --
58062    -- bulk performance
58063    --
58064    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58065 
58066    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58067       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58068 
58069    -- 4955764
58070    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58071       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58072 
58073    -- 4458381 Public Sector Enh
58074    
58075    --
58076    -- set accounting attributes for the line type
58077    --
58078    l_entered_amt_idx := 3;
58079    l_accted_amt_idx  := 8;
58080    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58081    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58082    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
58083    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58084    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
58085    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58086    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
58087    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58088    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
58089    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58090    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
58091    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58092    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
58093    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58094    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
58095    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58096    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
58097 
58098    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58099    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58100 
58101    ---------------------------------------------------------------------------------------------------------------
58102    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58103    ---------------------------------------------------------------------------------------------------------------
58104    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58105 
58106    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58107    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58108 
58109    IF xla_accounting_cache_pkg.GetValueChar
58110          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58111          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58112    AND l_bflow_method_code = 'PRIOR_ENTRY'
58113 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58114    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58115          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58116        )
58117    THEN
58118          xla_ae_lines_pkg.BflowUpgEntry
58119            (p_business_method_code    => l_bflow_method_code
58120            ,p_business_class_code     => l_bflow_class_code
58121            ,p_balance_type            => l_balance_type_code);
58122    ELSE
58123       NULL;
58124 -- No business flow processing for business flow method of NONE.
58125    END IF;
58126 
58127    --
58128    -- call analytical criteria
58129    --
58130    
58131    --
58132    -- call description
58133    --
58134    
58135 xla_ae_lines_pkg.SetLineDescription(
58136    p_ae_header_id => l_ae_header_id
58137   ,p_description  => Description_1 (
58138      p_application_id         => p_application_id
58139    , p_ae_header_id           => l_ae_header_id 
58140 , p_source_1 => p_source_1
58141 , p_source_2 => p_source_2
58142 , p_source_3 => p_source_3
58143 , p_source_4 => p_source_4
58144 , p_source_5 => p_source_5
58145    )
58146 );
58147 
58148 
58149    --
58150    -- call ADRs
58151    -- Bug 4922099
58152    --
58153    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58154         (NVL(l_actual_upg_option, 'N') = 'O') OR
58155         (NVL(l_enc_upg_option, 'N') = 'O')
58156       )
58157    THEN
58158    NULL;
58159    --
58160    --
58161    
58162   l_ccid := AcctDerRule_6(
58163            p_application_id           => p_application_id
58164          , p_ae_header_id             => l_ae_header_id 
58165 , p_source_11 => p_source_11
58166          , x_transaction_coa_id       => l_adr_transaction_coa_id
58167          , x_accounting_coa_id        => l_adr_accounting_coa_id
58168          , x_value_type_code          => l_adr_value_type_code
58169          , p_side                     => 'NA'
58170    );
58171 
58172    xla_ae_lines_pkg.set_ccid(
58173     p_code_combination_id          => l_ccid
58174   , p_value_type_code              => l_adr_value_type_code
58175   , p_transaction_coa_id           => l_adr_transaction_coa_id
58176   , p_accounting_coa_id            => l_adr_accounting_coa_id
58177   , p_adr_code                     => 'CST_DEFAULT'
58178   , p_adr_type_code                => 'S'
58179   , p_component_type               => l_component_type
58180   , p_component_code               => l_component_code
58181   , p_component_type_code          => l_component_type_code
58182   , p_component_appl_id            => l_component_appl_id
58183   , p_amb_context_code             => l_amb_context_code
58184   , p_side                         => 'NA'
58185   );
58186 
58187 
58188    --
58189    --
58190    END IF;
58191    --
58192    -- Bug 4922099
58193    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58194           (NVL(l_enc_upg_option, 'N') = 'O')
58195         ) AND
58196         (l_bflow_method_code = 'PRIOR_ENTRY')
58197       )
58198    THEN
58199       IF
58200       --
58201       1 = 2
58202       --
58203       THEN
58204       xla_accounting_err_pkg.build_message
58205                                     (p_appli_s_name            => 'XLA'
58206                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58207                                     ,p_token_1                 => 'LINE_NUMBER'
58208                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58209                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58210                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58211                                                                              l_component_type
58212                                                                             ,l_component_code
58213                                                                             ,l_component_type_code
58214                                                                             ,l_component_appl_id
58215                                                                             ,l_amb_context_code
58216                                                                             ,l_entity_code
58217                                                                             ,l_event_class_code
58218                                                                            )
58219                                     ,p_token_3                 => 'OWNER'
58220                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58221                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58222                                                                           ,p_lookup_code    => l_component_type_code
58223                                                                          )
58224                                     ,p_token_4                 => 'PRODUCT_NAME'
58225                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58226                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58227                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58228                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58229                                     ,p_ae_header_id            =>  NULL
58230                                        );
58231 
58232         IF (C_LEVEL_ERROR>= g_log_level) THEN
58233                  trace
58234                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58235                       ,p_level    => C_LEVEL_ERROR
58236                       ,p_module   => l_log_module);
58237         END IF;
58238       END IF;
58239    END IF;
58240    --
58241    --
58242    ------------------------------------------------------------------------------------------------
58243    -- 4219869 Business Flow
58244    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58245    -- Prior Entry.  Currently, the following code is always generated.
58246    ------------------------------------------------------------------------------------------------
58247    XLA_AE_LINES_PKG.ValidateCurrentLine;
58248 
58249    ------------------------------------------------------------------------------------
58250    -- 4219869 Business Flow
58251    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58252    ------------------------------------------------------------------------------------
58253    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58254 
58255    ----------------------------------------------------------------------------------
58256    -- 4219869 Business Flow
58257    -- Update journal entry status -- Need to generate this within IF <condition>
58258    ----------------------------------------------------------------------------------
58259    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58260          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58261          ,p_balance_type_code => l_balance_type_code
58262          );
58263 
58264    -------------------------------------------------------------------------------------------
58265    -- 4262811 - Generate the Accrual Reversal lines
58266    -------------------------------------------------------------------------------------------
58267    BEGIN
58268       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58269                               (g_array_event(p_event_id).array_value_num('header_index'));
58270       IF l_acc_rev_flag IS NULL THEN
58271          l_acc_rev_flag := 'N';
58272       END IF;
58273    EXCEPTION
58274       WHEN OTHERS THEN
58275          l_acc_rev_flag := 'N';
58276    END;
58277    --
58278    IF (l_acc_rev_flag = 'Y') THEN
58279 
58280        -- 4645092  ------------------------------------------------------------------------------
58281        -- To allow MPA report to determine if it should generate report process
58282        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58283        ------------------------------------------------------------------------------------------
58284 
58285        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58286        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58287    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58288    -- call ADRs
58289    -- Bug 4922099
58290    --
58291    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58292         (NVL(l_actual_upg_option, 'N') = 'O') OR
58293         (NVL(l_enc_upg_option, 'N') = 'O')
58294       )
58295    THEN
58296    NULL;
58297    --
58298    --
58299    
58300   l_ccid := AcctDerRule_6(
58301            p_application_id           => p_application_id
58302          , p_ae_header_id             => l_ae_header_id 
58303 , p_source_11 => p_source_11
58304          , x_transaction_coa_id       => l_adr_transaction_coa_id
58305          , x_accounting_coa_id        => l_adr_accounting_coa_id
58306          , x_value_type_code          => l_adr_value_type_code
58307          , p_side                     => 'NA'
58308    );
58309 
58310    xla_ae_lines_pkg.set_ccid(
58311     p_code_combination_id          => l_ccid
58312   , p_value_type_code              => l_adr_value_type_code
58313   , p_transaction_coa_id           => l_adr_transaction_coa_id
58314   , p_accounting_coa_id            => l_adr_accounting_coa_id
58315   , p_adr_code                     => 'CST_DEFAULT'
58316   , p_adr_type_code                => 'S'
58317   , p_component_type               => l_component_type
58318   , p_component_code               => l_component_code
58319   , p_component_type_code          => l_component_type_code
58320   , p_component_appl_id            => l_component_appl_id
58321   , p_amb_context_code             => l_amb_context_code
58322   , p_side                         => 'NA'
58323   );
58324 
58325 
58326    --
58327    --
58328    END IF;
58329 
58330        --
58331        -- Update the line information that should be overwritten
58332        --
58333        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58334                                          p_header_num   => 1);
58335        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58336 
58337        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58338 
58339        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58340           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58341        END IF;
58342 
58343       --
58344       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58345       --
58346       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58347           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58348       ELSE
58349           ---------------------------------------------------------------------------------------------------
58350           -- 4262811a Switch Sign
58351           ---------------------------------------------------------------------------------------------------
58352           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58353           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58354                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58355           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58356                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58357           -- 5132302
58358           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58359                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58360 
58361       END IF;
58362 
58363       -- 4955764
58364       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58365       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58366 
58367 
58368       XLA_AE_LINES_PKG.ValidateCurrentLine;
58369       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58370 
58371       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58372                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58373                ,p_balance_type_code => l_balance_type_code);
58374 
58375    END IF;
58376 
58377    -----------------------------------------------------------------------------------------
58378    -- 4262811 Multiperiod Accounting
58379    -----------------------------------------------------------------------------------------
58380      -- No MPA option is assigned.
58381 
58382 
58383 END IF;
58384 END IF;
58385 --
58386 
58387 --
58388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58389    trace
58390       (p_msg      => 'END of AcctLineType_127'
58391       ,p_level    => C_LEVEL_PROCEDURE
58392       ,p_module   => l_log_module);
58393 END IF;
58394 --
58395 EXCEPTION
58396   WHEN xla_exceptions_pkg.application_exception THEN
58397       RAISE;
58398   WHEN OTHERS THEN
58399        xla_exceptions_pkg.raise_message
58400            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_127');
58401 END AcctLineType_127;
58402 --
58403 
58404 ---------------------------------------
58405 --
58406 -- PRIVATE FUNCTION
58407 --         AcctLineType_128
58408 --
58409 ---------------------------------------
58410 PROCEDURE AcctLineType_128 (
58411   p_application_id        IN NUMBER
58412  ,p_event_id              IN NUMBER
58413  ,p_calculate_acctd_flag  IN VARCHAR2
58414  ,p_calculate_g_l_flag    IN VARCHAR2
58415  ,p_actual_flag           IN OUT VARCHAR2
58416  ,p_balance_type_code     OUT VARCHAR2
58417  ,p_gain_or_loss_ref      OUT VARCHAR2
58418  
58419 --TRANSACTION_ID
58420  , p_source_1            IN NUMBER
58421 --Item Concatenated Segments
58422  , p_source_2            IN VARCHAR2
58423 --Transaction Quantity
58424  , p_source_3            IN NUMBER
58425 --Transaction Unit of Measure Code
58426  , p_source_4            IN VARCHAR2
58427 --Inventory Transaction Type Description
58428  , p_source_5            IN VARCHAR2
58429 --Cost Management Default Account
58430  , p_source_11            IN NUMBER
58431 --DISTRIBUTION_IDENTIFIER
58432  , p_source_84            IN NUMBER
58433 --Distribution Type
58434  , p_source_85            IN VARCHAR2
58435  , p_source_85_meaning    IN VARCHAR2
58436 --Entered Currency Code
58437  , p_source_88            IN VARCHAR2
58438 --Entered Amount
58439  , p_source_91            IN NUMBER
58440 --Currency Conversion Date
58441  , p_source_92            IN DATE
58442 --Currency Conversion Rate
58443  , p_source_93            IN NUMBER
58444 --Currency Conversion Type
58445  , p_source_94            IN VARCHAR2
58446 --Accounted Amount
58447  , p_source_95            IN NUMBER
58448 --Accounting Line Type
58449  , p_source_97            IN NUMBER
58450 )
58451 IS
58452 
58453 l_component_type              VARCHAR2(80);
58454 l_component_code              VARCHAR2(30);
58455 l_component_type_code         VARCHAR2(1);
58456 l_component_appl_id           INTEGER;
58457 l_amb_context_code            VARCHAR2(30);
58458 l_entity_code                 VARCHAR2(30);
58459 l_event_class_code            VARCHAR2(30);
58460 l_ae_header_id                NUMBER;
58461 l_event_type_code             VARCHAR2(30);
58462 l_line_definition_code        VARCHAR2(30);
58463 l_line_definition_owner_code  VARCHAR2(1);
58464 --
58465 -- adr variables
58466 l_segment                     VARCHAR2(30);
58467 l_ccid                        NUMBER;
58468 l_adr_transaction_coa_id      NUMBER;
58469 l_adr_accounting_coa_id       NUMBER;
58470 l_adr_flexfield_segment_code  VARCHAR2(30);
58471 l_adr_flex_value_set_id       NUMBER;
58472 l_adr_value_type_code         VARCHAR2(30);
58473 l_adr_value_combination_id    NUMBER;
58474 l_adr_value_segment_code      VARCHAR2(30);
58475 
58476 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58477 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58478 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58479 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58480 
58481 -- 4262811 Variables ------------------------------------------------------------------------------------------
58482 l_entered_amt_idx             NUMBER;
58483 l_accted_amt_idx              NUMBER;
58484 l_acc_rev_flag                VARCHAR2(1);
58485 l_accrual_line_num            NUMBER;
58486 l_tmp_amt                     NUMBER;
58487 l_acc_rev_natural_side_code   VARCHAR2(1);
58488 
58489 l_num_entries                 NUMBER;
58490 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58491 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58492 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58493 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58494 l_recog_line_1                NUMBER;
58495 l_recog_line_2                NUMBER;
58496 
58497 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58498 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58499 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58500 
58501 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58502 
58503 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58504 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58505 
58506 ---------------------------------------------------------------------------------------------------------------
58507 
58508 
58509 --
58510 -- bulk performance
58511 --
58512 l_balance_type_code           VARCHAR2(1);
58513 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58514 l_log_module                  VARCHAR2(240);
58515 
58516 --
58517 -- Upgrade strategy
58518 --
58519 l_actual_upg_option           VARCHAR2(1);
58520 l_enc_upg_option           VARCHAR2(1);
58521 
58522 --
58523 BEGIN
58524 --
58525 IF g_log_enabled THEN
58526       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
58527 END IF;
58528 --
58529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58530 
58531       trace
58532          (p_msg      => 'BEGIN of AcctLineType_128'
58533          ,p_level    => C_LEVEL_PROCEDURE
58534          ,p_module   => l_log_module);
58535 
58536 END IF;
58537 --
58538 l_component_type             := 'AMB_JLT';
58539 l_component_code             := 'INTERCOMPANY_ACCRUAL';
58540 l_component_type_code        := 'S';
58541 l_component_appl_id          :=  707;
58542 l_amb_context_code           := 'DEFAULT';
58543 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
58544 l_event_class_code           := 'LOG_INTERCOMPANY';
58545 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
58546 l_line_definition_owner_code := 'S';
58547 l_line_definition_code       := 'PI_LOG_IC_RCPT_RETURN';
58548 --
58549 l_balance_type_code          := 'A';
58550 l_segment                     := NULL;
58551 l_ccid                        := NULL;
58552 l_adr_transaction_coa_id      := NULL;
58553 l_adr_accounting_coa_id       := NULL;
58554 l_adr_flexfield_segment_code  := NULL;
58555 l_adr_flex_value_set_id       := NULL;
58556 l_adr_value_type_code         := NULL;
58557 l_adr_value_combination_id    := NULL;
58558 l_adr_value_segment_code      := NULL;
58559 
58560 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58561 l_bflow_class_code           := '';    -- 4219869 Business Flow
58562 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58563 l_budgetary_control_flag     := 'N';
58564 
58565 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58566 l_bflow_applied_to_amt       := NULL; -- 5132302
58567 l_entered_amt_idx            := NULL;          -- 4262811
58568 l_accted_amt_idx             := NULL;          -- 4262811
58569 l_acc_rev_flag               := NULL;          -- 4262811
58570 l_accrual_line_num           := NULL;          -- 4262811
58571 l_tmp_amt                    := NULL;          -- 4262811
58572 --
58573  
58574 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58575     l_balance_type_code <> 'B' THEN
58576 IF NVL(p_source_97,9E125) =  16
58577  THEN 
58578 
58579    --
58580    XLA_AE_LINES_PKG.SetNewLine;
58581 
58582    p_balance_type_code          := l_balance_type_code;
58583    -- set the flag so later we will know whether the gain loss line needs to be created
58584    
58585    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58586      p_actual_flag :='A';
58587    END IF;
58588 
58589    --
58590    -- bulk performance
58591    --
58592    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58593                                       p_header_num   => 0); -- 4262811
58594    --
58595    -- set accounting line options
58596    --
58597    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58598            p_natural_side_code          => 'D'
58599          , p_gain_or_loss_flag          => 'N'
58600          , p_gl_transfer_mode_code      => 'S'
58601          , p_acct_entry_type_code       => 'A'
58602          , p_switch_side_flag           => 'Y'
58603          , p_merge_duplicate_code       => 'N'
58604          );
58605    --
58606    l_acc_rev_natural_side_code := 'C';  -- 4262811
58607    -- 
58608    --
58609    -- set accounting line type info
58610    --
58611    xla_ae_lines_pkg.SetAcctLineType
58612       (p_component_type             => l_component_type
58613       ,p_event_type_code            => l_event_type_code
58614       ,p_line_definition_owner_code => l_line_definition_owner_code
58615       ,p_line_definition_code       => l_line_definition_code
58616       ,p_accounting_line_code       => l_component_code
58617       ,p_accounting_line_type_code  => l_component_type_code
58618       ,p_accounting_line_appl_id    => l_component_appl_id
58619       ,p_amb_context_code           => l_amb_context_code
58620       ,p_entity_code                => l_entity_code
58621       ,p_event_class_code           => l_event_class_code);
58622    --
58623    -- set accounting class
58624    --
58625    xla_ae_lines_pkg.SetAcctClass(
58626            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
58627          , p_ae_header_id           => l_ae_header_id
58628          );
58629 
58630    --
58631    -- set rounding class
58632    --
58633    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58634                       'INTERCOMPANY_ACCRUAL';
58635 
58636    --
58637    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58638    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58639    --
58640    -- bulk performance
58641    --
58642    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58643 
58644    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58645       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58646 
58647    -- 4955764
58648    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58649       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58650 
58651    -- 4458381 Public Sector Enh
58652    
58653    --
58654    -- set accounting attributes for the line type
58655    --
58656    l_entered_amt_idx := 3;
58657    l_accted_amt_idx  := 8;
58658    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58659    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58660    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
58661    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58662    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
58663    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58664    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
58665    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58666    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
58667    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58668    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
58669    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58670    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
58671    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58672    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
58673    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58674    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
58675 
58676    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58677    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58678 
58679    ---------------------------------------------------------------------------------------------------------------
58680    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58681    ---------------------------------------------------------------------------------------------------------------
58682    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58683 
58684    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58685    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58686 
58687    IF xla_accounting_cache_pkg.GetValueChar
58688          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58689          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58690    AND l_bflow_method_code = 'PRIOR_ENTRY'
58691 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58692    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58693          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58694        )
58695    THEN
58696          xla_ae_lines_pkg.BflowUpgEntry
58697            (p_business_method_code    => l_bflow_method_code
58698            ,p_business_class_code     => l_bflow_class_code
58699            ,p_balance_type            => l_balance_type_code);
58700    ELSE
58701       NULL;
58702 -- No business flow processing for business flow method of NONE.
58703    END IF;
58704 
58705    --
58706    -- call analytical criteria
58707    --
58708    
58709    --
58710    -- call description
58711    --
58712    
58713 xla_ae_lines_pkg.SetLineDescription(
58714    p_ae_header_id => l_ae_header_id
58715   ,p_description  => Description_1 (
58716      p_application_id         => p_application_id
58717    , p_ae_header_id           => l_ae_header_id 
58718 , p_source_1 => p_source_1
58719 , p_source_2 => p_source_2
58720 , p_source_3 => p_source_3
58721 , p_source_4 => p_source_4
58722 , p_source_5 => p_source_5
58723    )
58724 );
58725 
58726 
58727    --
58728    -- call ADRs
58729    -- Bug 4922099
58730    --
58731    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58732         (NVL(l_actual_upg_option, 'N') = 'O') OR
58733         (NVL(l_enc_upg_option, 'N') = 'O')
58734       )
58735    THEN
58736    NULL;
58737    --
58738    --
58739    
58740   l_ccid := AcctDerRule_6(
58741            p_application_id           => p_application_id
58742          , p_ae_header_id             => l_ae_header_id 
58743 , p_source_11 => p_source_11
58744          , x_transaction_coa_id       => l_adr_transaction_coa_id
58745          , x_accounting_coa_id        => l_adr_accounting_coa_id
58746          , x_value_type_code          => l_adr_value_type_code
58747          , p_side                     => 'NA'
58748    );
58749 
58750    xla_ae_lines_pkg.set_ccid(
58751     p_code_combination_id          => l_ccid
58752   , p_value_type_code              => l_adr_value_type_code
58753   , p_transaction_coa_id           => l_adr_transaction_coa_id
58754   , p_accounting_coa_id            => l_adr_accounting_coa_id
58755   , p_adr_code                     => 'CST_DEFAULT'
58756   , p_adr_type_code                => 'S'
58757   , p_component_type               => l_component_type
58758   , p_component_code               => l_component_code
58759   , p_component_type_code          => l_component_type_code
58760   , p_component_appl_id            => l_component_appl_id
58761   , p_amb_context_code             => l_amb_context_code
58762   , p_side                         => 'NA'
58763   );
58764 
58765 
58766    --
58767    --
58768    END IF;
58769    --
58770    -- Bug 4922099
58771    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58772           (NVL(l_enc_upg_option, 'N') = 'O')
58773         ) AND
58774         (l_bflow_method_code = 'PRIOR_ENTRY')
58775       )
58776    THEN
58777       IF
58778       --
58779       1 = 2
58780       --
58781       THEN
58782       xla_accounting_err_pkg.build_message
58783                                     (p_appli_s_name            => 'XLA'
58784                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58785                                     ,p_token_1                 => 'LINE_NUMBER'
58786                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58787                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58788                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58789                                                                              l_component_type
58790                                                                             ,l_component_code
58791                                                                             ,l_component_type_code
58792                                                                             ,l_component_appl_id
58793                                                                             ,l_amb_context_code
58794                                                                             ,l_entity_code
58795                                                                             ,l_event_class_code
58796                                                                            )
58797                                     ,p_token_3                 => 'OWNER'
58798                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58799                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58800                                                                           ,p_lookup_code    => l_component_type_code
58801                                                                          )
58802                                     ,p_token_4                 => 'PRODUCT_NAME'
58803                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58804                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58805                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58806                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58807                                     ,p_ae_header_id            =>  NULL
58808                                        );
58809 
58810         IF (C_LEVEL_ERROR>= g_log_level) THEN
58811                  trace
58812                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58813                       ,p_level    => C_LEVEL_ERROR
58814                       ,p_module   => l_log_module);
58815         END IF;
58816       END IF;
58817    END IF;
58818    --
58819    --
58820    ------------------------------------------------------------------------------------------------
58821    -- 4219869 Business Flow
58822    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58823    -- Prior Entry.  Currently, the following code is always generated.
58824    ------------------------------------------------------------------------------------------------
58825    XLA_AE_LINES_PKG.ValidateCurrentLine;
58826 
58827    ------------------------------------------------------------------------------------
58828    -- 4219869 Business Flow
58829    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58830    ------------------------------------------------------------------------------------
58831    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58832 
58833    ----------------------------------------------------------------------------------
58834    -- 4219869 Business Flow
58835    -- Update journal entry status -- Need to generate this within IF <condition>
58836    ----------------------------------------------------------------------------------
58837    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58838          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58839          ,p_balance_type_code => l_balance_type_code
58840          );
58841 
58842    -------------------------------------------------------------------------------------------
58843    -- 4262811 - Generate the Accrual Reversal lines
58844    -------------------------------------------------------------------------------------------
58845    BEGIN
58846       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58847                               (g_array_event(p_event_id).array_value_num('header_index'));
58848       IF l_acc_rev_flag IS NULL THEN
58849          l_acc_rev_flag := 'N';
58850       END IF;
58851    EXCEPTION
58852       WHEN OTHERS THEN
58853          l_acc_rev_flag := 'N';
58854    END;
58855    --
58856    IF (l_acc_rev_flag = 'Y') THEN
58857 
58858        -- 4645092  ------------------------------------------------------------------------------
58859        -- To allow MPA report to determine if it should generate report process
58860        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58861        ------------------------------------------------------------------------------------------
58862 
58863        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58864        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58865    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58866    -- call ADRs
58867    -- Bug 4922099
58868    --
58869    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58870         (NVL(l_actual_upg_option, 'N') = 'O') OR
58871         (NVL(l_enc_upg_option, 'N') = 'O')
58872       )
58873    THEN
58874    NULL;
58875    --
58876    --
58877    
58878   l_ccid := AcctDerRule_6(
58879            p_application_id           => p_application_id
58880          , p_ae_header_id             => l_ae_header_id 
58881 , p_source_11 => p_source_11
58882          , x_transaction_coa_id       => l_adr_transaction_coa_id
58883          , x_accounting_coa_id        => l_adr_accounting_coa_id
58884          , x_value_type_code          => l_adr_value_type_code
58885          , p_side                     => 'NA'
58886    );
58887 
58888    xla_ae_lines_pkg.set_ccid(
58889     p_code_combination_id          => l_ccid
58890   , p_value_type_code              => l_adr_value_type_code
58891   , p_transaction_coa_id           => l_adr_transaction_coa_id
58892   , p_accounting_coa_id            => l_adr_accounting_coa_id
58893   , p_adr_code                     => 'CST_DEFAULT'
58894   , p_adr_type_code                => 'S'
58895   , p_component_type               => l_component_type
58896   , p_component_code               => l_component_code
58897   , p_component_type_code          => l_component_type_code
58898   , p_component_appl_id            => l_component_appl_id
58899   , p_amb_context_code             => l_amb_context_code
58900   , p_side                         => 'NA'
58901   );
58902 
58903 
58904    --
58905    --
58906    END IF;
58907 
58908        --
58909        -- Update the line information that should be overwritten
58910        --
58911        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58912                                          p_header_num   => 1);
58913        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58914 
58915        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58916 
58917        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58918           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58919        END IF;
58920 
58921       --
58922       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58923       --
58924       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58925           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58926       ELSE
58927           ---------------------------------------------------------------------------------------------------
58928           -- 4262811a Switch Sign
58929           ---------------------------------------------------------------------------------------------------
58930           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58931           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58932                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58933           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58934                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58935           -- 5132302
58936           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58937                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58938 
58939       END IF;
58940 
58941       -- 4955764
58942       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58943       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58944 
58945 
58946       XLA_AE_LINES_PKG.ValidateCurrentLine;
58947       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58948 
58949       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58950                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58951                ,p_balance_type_code => l_balance_type_code);
58952 
58953    END IF;
58954 
58955    -----------------------------------------------------------------------------------------
58956    -- 4262811 Multiperiod Accounting
58957    -----------------------------------------------------------------------------------------
58958      -- No MPA option is assigned.
58959 
58960 
58961 END IF;
58962 END IF;
58963 --
58964 
58965 --
58966 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58967    trace
58968       (p_msg      => 'END of AcctLineType_128'
58969       ,p_level    => C_LEVEL_PROCEDURE
58970       ,p_module   => l_log_module);
58971 END IF;
58972 --
58973 EXCEPTION
58974   WHEN xla_exceptions_pkg.application_exception THEN
58975       RAISE;
58976   WHEN OTHERS THEN
58977        xla_exceptions_pkg.raise_message
58978            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_128');
58979 END AcctLineType_128;
58980 --
58981 
58982 ---------------------------------------
58983 --
58984 -- PRIVATE FUNCTION
58985 --         AcctLineType_129
58986 --
58987 ---------------------------------------
58988 PROCEDURE AcctLineType_129 (
58989   p_application_id        IN NUMBER
58990  ,p_event_id              IN NUMBER
58991  ,p_calculate_acctd_flag  IN VARCHAR2
58992  ,p_calculate_g_l_flag    IN VARCHAR2
58993  ,p_actual_flag           IN OUT VARCHAR2
58994  ,p_balance_type_code     OUT VARCHAR2
58995  ,p_gain_or_loss_ref      OUT VARCHAR2
58996  
58997 --TRANSACTION_ID
58998  , p_source_1            IN NUMBER
58999 --Item Concatenated Segments
59000  , p_source_2            IN VARCHAR2
59001 --Transaction Quantity
59002  , p_source_3            IN NUMBER
59003 --Transaction Unit of Measure Code
59004  , p_source_4            IN VARCHAR2
59005 --Inventory Transaction Type Description
59006  , p_source_5            IN VARCHAR2
59007 --Transaction Expense Account
59008  , p_source_60            IN NUMBER
59009 --Applied to Application ID
59010  , p_source_79            IN NUMBER
59011 --Applied to Distribution Link Type
59012  , p_source_80            IN VARCHAR2
59013 --Applied to Entity Code
59014  , p_source_81            IN VARCHAR2
59015 --DISTRIBUTION_IDENTIFIER
59016  , p_source_84            IN NUMBER
59017 --Distribution Type
59018  , p_source_85            IN VARCHAR2
59019  , p_source_85_meaning    IN VARCHAR2
59020 --Encumbrance Reversal Amount Entered
59021  , p_source_87            IN NUMBER
59022 --Entered Currency Code
59023  , p_source_88            IN VARCHAR2
59024 --Transaction Encumbrance Reversal Amount
59025  , p_source_89            IN NUMBER
59026 --Entered Amount
59027  , p_source_91            IN NUMBER
59028 --Currency Conversion Date
59029  , p_source_92            IN DATE
59030 --Currency Conversion Rate
59031  , p_source_93            IN NUMBER
59032 --Currency Conversion Type
59033  , p_source_94            IN VARCHAR2
59034 --Accounted Amount
59035  , p_source_95            IN NUMBER
59036 --Accounting Line Type
59037  , p_source_97            IN NUMBER
59038 --Costing Encumbrance Upgrade Option
59039  , p_source_100            IN VARCHAR2
59040 --TXN_PO_DISTRIBUTION_ID
59041  , p_source_101            IN NUMBER
59042 --TXN_PO_HEADER_ID
59043  , p_source_102            IN NUMBER
59044 --Requisition Budget Account
59045  , p_source_103            IN NUMBER
59046 --Requisition Encumbrance Type Identifier
59047  , p_source_104            IN NUMBER
59048 )
59049 IS
59050 
59051 l_component_type              VARCHAR2(80);
59052 l_component_code              VARCHAR2(30);
59053 l_component_type_code         VARCHAR2(1);
59054 l_component_appl_id           INTEGER;
59055 l_amb_context_code            VARCHAR2(30);
59056 l_entity_code                 VARCHAR2(30);
59057 l_event_class_code            VARCHAR2(30);
59058 l_ae_header_id                NUMBER;
59059 l_event_type_code             VARCHAR2(30);
59060 l_line_definition_code        VARCHAR2(30);
59061 l_line_definition_owner_code  VARCHAR2(1);
59062 --
59063 -- adr variables
59064 l_segment                     VARCHAR2(30);
59065 l_ccid                        NUMBER;
59066 l_adr_transaction_coa_id      NUMBER;
59067 l_adr_accounting_coa_id       NUMBER;
59068 l_adr_flexfield_segment_code  VARCHAR2(30);
59069 l_adr_flex_value_set_id       NUMBER;
59070 l_adr_value_type_code         VARCHAR2(30);
59071 l_adr_value_combination_id    NUMBER;
59072 l_adr_value_segment_code      VARCHAR2(30);
59073 
59074 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59075 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59076 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59077 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59078 
59079 -- 4262811 Variables ------------------------------------------------------------------------------------------
59080 l_entered_amt_idx             NUMBER;
59081 l_accted_amt_idx              NUMBER;
59082 l_acc_rev_flag                VARCHAR2(1);
59083 l_accrual_line_num            NUMBER;
59084 l_tmp_amt                     NUMBER;
59085 l_acc_rev_natural_side_code   VARCHAR2(1);
59086 
59087 l_num_entries                 NUMBER;
59088 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59089 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59090 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59091 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59092 l_recog_line_1                NUMBER;
59093 l_recog_line_2                NUMBER;
59094 
59095 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59096 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59097 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59098 
59099 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59100 
59101 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59102 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59103 
59104 ---------------------------------------------------------------------------------------------------------------
59105 
59106 
59107 --
59108 -- bulk performance
59109 --
59110 l_balance_type_code           VARCHAR2(1);
59111 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59112 l_log_module                  VARCHAR2(240);
59113 
59114 --
59115 -- Upgrade strategy
59116 --
59117 l_actual_upg_option           VARCHAR2(1);
59118 l_enc_upg_option           VARCHAR2(1);
59119 
59120 --
59121 BEGIN
59122 --
59123 IF g_log_enabled THEN
59124       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
59125 END IF;
59126 --
59127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59128 
59129       trace
59130          (p_msg      => 'BEGIN of AcctLineType_129'
59131          ,p_level    => C_LEVEL_PROCEDURE
59132          ,p_module   => l_log_module);
59133 
59134 END IF;
59135 --
59136 l_component_type             := 'AMB_JLT';
59137 l_component_code             := 'INTERCOMPANY_ACCRUAL';
59138 l_component_type_code        := 'S';
59139 l_component_appl_id          :=  707;
59140 l_amb_context_code           := 'DEFAULT';
59141 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
59142 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
59143 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
59144 l_line_definition_owner_code := 'S';
59145 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
59146 --
59147 l_balance_type_code          := 'A';
59148 l_segment                     := NULL;
59149 l_ccid                        := NULL;
59150 l_adr_transaction_coa_id      := NULL;
59151 l_adr_accounting_coa_id       := NULL;
59152 l_adr_flexfield_segment_code  := NULL;
59153 l_adr_flex_value_set_id       := NULL;
59154 l_adr_value_type_code         := NULL;
59155 l_adr_value_combination_id    := NULL;
59156 l_adr_value_segment_code      := NULL;
59157 
59158 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59159 l_bflow_class_code           := '';    -- 4219869 Business Flow
59160 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59161 l_budgetary_control_flag     := 'N';
59162 
59163 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59164 l_bflow_applied_to_amt       := NULL; -- 5132302
59165 l_entered_amt_idx            := NULL;          -- 4262811
59166 l_accted_amt_idx             := NULL;          -- 4262811
59167 l_acc_rev_flag               := NULL;          -- 4262811
59168 l_accrual_line_num           := NULL;          -- 4262811
59169 l_tmp_amt                    := NULL;          -- 4262811
59170 --
59171  
59172 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59173     l_balance_type_code <> 'B' THEN
59174 IF NVL(p_source_97,9E125) =  2 AND 
59175 p_source_95 <  0
59176  THEN 
59177 
59178    --
59179    XLA_AE_LINES_PKG.SetNewLine;
59180 
59181    p_balance_type_code          := l_balance_type_code;
59182    -- set the flag so later we will know whether the gain loss line needs to be created
59183    
59184    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59185      p_actual_flag :='A';
59186    END IF;
59187 
59188    --
59189    -- bulk performance
59190    --
59191    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59192                                       p_header_num   => 0); -- 4262811
59193    --
59194    -- set accounting line options
59195    --
59196    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59197            p_natural_side_code          => 'D'
59198          , p_gain_or_loss_flag          => 'N'
59199          , p_gl_transfer_mode_code      => 'S'
59200          , p_acct_entry_type_code       => 'A'
59201          , p_switch_side_flag           => 'Y'
59202          , p_merge_duplicate_code       => 'N'
59203          );
59204    --
59205    l_acc_rev_natural_side_code := 'C';  -- 4262811
59206    -- 
59207    --
59208    -- set accounting line type info
59209    --
59210    xla_ae_lines_pkg.SetAcctLineType
59211       (p_component_type             => l_component_type
59212       ,p_event_type_code            => l_event_type_code
59213       ,p_line_definition_owner_code => l_line_definition_owner_code
59214       ,p_line_definition_code       => l_line_definition_code
59215       ,p_accounting_line_code       => l_component_code
59216       ,p_accounting_line_type_code  => l_component_type_code
59217       ,p_accounting_line_appl_id    => l_component_appl_id
59218       ,p_amb_context_code           => l_amb_context_code
59219       ,p_entity_code                => l_entity_code
59220       ,p_event_class_code           => l_event_class_code);
59221    --
59222    -- set accounting class
59223    --
59224    xla_ae_lines_pkg.SetAcctClass(
59225            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
59226          , p_ae_header_id           => l_ae_header_id
59227          );
59228 
59229    --
59230    -- set rounding class
59231    --
59232    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59233                       'INTERCOMPANY_ACCRUAL';
59234 
59235    --
59236    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59237    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59238    --
59239    -- bulk performance
59240    --
59241    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59242 
59243    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59244       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59245 
59246    -- 4955764
59247    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59248       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59249 
59250    -- 4458381 Public Sector Enh
59251    
59252    --
59253    -- set accounting attributes for the line type
59254    --
59255    l_entered_amt_idx := 17;
59256    l_accted_amt_idx  := 22;
59257    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59258    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
59259    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
59260    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
59261    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
59262    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
59263    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
59264    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
59265    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
59266    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
59267    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
59268    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
59269    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
59270    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
59271    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
59272    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
59273    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
59274    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
59275    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
59276    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
59277    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
59278    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
59279    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
59280    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
59281    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
59282    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
59283    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
59284    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
59285    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
59286    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
59287    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
59288    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
59289    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
59290    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
59291    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
59292    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
59293    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
59294    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
59295    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
59296    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
59297    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
59298    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
59299    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
59300    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
59301    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
59302    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
59303    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
59304    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
59305    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
59306 
59307    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59308    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59309 
59310    ---------------------------------------------------------------------------------------------------------------
59311    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59312    ---------------------------------------------------------------------------------------------------------------
59313    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59314 
59315    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59316    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59317 
59318    IF xla_accounting_cache_pkg.GetValueChar
59319          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59320          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59321    AND l_bflow_method_code = 'PRIOR_ENTRY'
59322 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59323    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59324          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59325        )
59326    THEN
59327          xla_ae_lines_pkg.BflowUpgEntry
59328            (p_business_method_code    => l_bflow_method_code
59329            ,p_business_class_code     => l_bflow_class_code
59330            ,p_balance_type            => l_balance_type_code);
59331    ELSE
59332       NULL;
59333 -- No business flow processing for business flow method of NONE.
59334    END IF;
59335 
59336    --
59337    -- call analytical criteria
59338    --
59339    
59340    --
59341    -- call description
59342    --
59343    
59344 xla_ae_lines_pkg.SetLineDescription(
59345    p_ae_header_id => l_ae_header_id
59346   ,p_description  => Description_1 (
59347      p_application_id         => p_application_id
59348    , p_ae_header_id           => l_ae_header_id 
59349 , p_source_1 => p_source_1
59350 , p_source_2 => p_source_2
59351 , p_source_3 => p_source_3
59352 , p_source_4 => p_source_4
59353 , p_source_5 => p_source_5
59354    )
59355 );
59356 
59357 
59358    --
59359    -- call ADRs
59360    -- Bug 4922099
59361    --
59362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59363         (NVL(l_actual_upg_option, 'N') = 'O') OR
59364         (NVL(l_enc_upg_option, 'N') = 'O')
59365       )
59366    THEN
59367    NULL;
59368    --
59369    --
59370    
59371   l_ccid := AcctDerRule_34(
59372            p_application_id           => p_application_id
59373          , p_ae_header_id             => l_ae_header_id 
59374 , p_source_60 => p_source_60
59375          , x_transaction_coa_id       => l_adr_transaction_coa_id
59376          , x_accounting_coa_id        => l_adr_accounting_coa_id
59377          , x_value_type_code          => l_adr_value_type_code
59378          , p_side                     => 'NA'
59379    );
59380 
59381    xla_ae_lines_pkg.set_ccid(
59382     p_code_combination_id          => l_ccid
59383   , p_value_type_code              => l_adr_value_type_code
59384   , p_transaction_coa_id           => l_adr_transaction_coa_id
59385   , p_accounting_coa_id            => l_adr_accounting_coa_id
59386   , p_adr_code                     => 'PI_TRANSACTION_EXPENSE'
59387   , p_adr_type_code                => 'S'
59388   , p_component_type               => l_component_type
59389   , p_component_code               => l_component_code
59390   , p_component_type_code          => l_component_type_code
59391   , p_component_appl_id            => l_component_appl_id
59392   , p_amb_context_code             => l_amb_context_code
59393   , p_side                         => 'NA'
59394   );
59395 
59396 
59397    --
59398    --
59399    END IF;
59400    --
59401    -- Bug 4922099
59402    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59403           (NVL(l_enc_upg_option, 'N') = 'O')
59404         ) AND
59405         (l_bflow_method_code = 'PRIOR_ENTRY')
59406       )
59407    THEN
59408       IF
59409       --
59410       1 = 2
59411       --
59412       THEN
59413       xla_accounting_err_pkg.build_message
59414                                     (p_appli_s_name            => 'XLA'
59415                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59416                                     ,p_token_1                 => 'LINE_NUMBER'
59417                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59418                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59419                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59420                                                                              l_component_type
59421                                                                             ,l_component_code
59422                                                                             ,l_component_type_code
59423                                                                             ,l_component_appl_id
59424                                                                             ,l_amb_context_code
59425                                                                             ,l_entity_code
59426                                                                             ,l_event_class_code
59427                                                                            )
59428                                     ,p_token_3                 => 'OWNER'
59429                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59430                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59431                                                                           ,p_lookup_code    => l_component_type_code
59432                                                                          )
59433                                     ,p_token_4                 => 'PRODUCT_NAME'
59434                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59435                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59436                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59437                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59438                                     ,p_ae_header_id            =>  NULL
59439                                        );
59440 
59441         IF (C_LEVEL_ERROR>= g_log_level) THEN
59442                  trace
59443                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59444                       ,p_level    => C_LEVEL_ERROR
59445                       ,p_module   => l_log_module);
59446         END IF;
59447       END IF;
59448    END IF;
59449    --
59450    --
59451    ------------------------------------------------------------------------------------------------
59452    -- 4219869 Business Flow
59453    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59454    -- Prior Entry.  Currently, the following code is always generated.
59455    ------------------------------------------------------------------------------------------------
59456    XLA_AE_LINES_PKG.ValidateCurrentLine;
59457 
59458    ------------------------------------------------------------------------------------
59459    -- 4219869 Business Flow
59460    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59461    ------------------------------------------------------------------------------------
59462    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59463 
59464    ----------------------------------------------------------------------------------
59465    -- 4219869 Business Flow
59466    -- Update journal entry status -- Need to generate this within IF <condition>
59467    ----------------------------------------------------------------------------------
59468    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59469          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59470          ,p_balance_type_code => l_balance_type_code
59471          );
59472 
59473    -------------------------------------------------------------------------------------------
59474    -- 4262811 - Generate the Accrual Reversal lines
59475    -------------------------------------------------------------------------------------------
59476    BEGIN
59477       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59478                               (g_array_event(p_event_id).array_value_num('header_index'));
59479       IF l_acc_rev_flag IS NULL THEN
59480          l_acc_rev_flag := 'N';
59481       END IF;
59482    EXCEPTION
59483       WHEN OTHERS THEN
59484          l_acc_rev_flag := 'N';
59485    END;
59486    --
59487    IF (l_acc_rev_flag = 'Y') THEN
59488 
59489        -- 4645092  ------------------------------------------------------------------------------
59490        -- To allow MPA report to determine if it should generate report process
59491        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59492        ------------------------------------------------------------------------------------------
59493 
59494        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59495        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59496    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59497    -- call ADRs
59498    -- Bug 4922099
59499    --
59500    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59501         (NVL(l_actual_upg_option, 'N') = 'O') OR
59502         (NVL(l_enc_upg_option, 'N') = 'O')
59503       )
59504    THEN
59505    NULL;
59506    --
59507    --
59508    
59509   l_ccid := AcctDerRule_34(
59510            p_application_id           => p_application_id
59511          , p_ae_header_id             => l_ae_header_id 
59512 , p_source_60 => p_source_60
59513          , x_transaction_coa_id       => l_adr_transaction_coa_id
59514          , x_accounting_coa_id        => l_adr_accounting_coa_id
59515          , x_value_type_code          => l_adr_value_type_code
59516          , p_side                     => 'NA'
59517    );
59518 
59519    xla_ae_lines_pkg.set_ccid(
59520     p_code_combination_id          => l_ccid
59521   , p_value_type_code              => l_adr_value_type_code
59522   , p_transaction_coa_id           => l_adr_transaction_coa_id
59523   , p_accounting_coa_id            => l_adr_accounting_coa_id
59524   , p_adr_code                     => 'PI_TRANSACTION_EXPENSE'
59525   , p_adr_type_code                => 'S'
59526   , p_component_type               => l_component_type
59527   , p_component_code               => l_component_code
59528   , p_component_type_code          => l_component_type_code
59529   , p_component_appl_id            => l_component_appl_id
59530   , p_amb_context_code             => l_amb_context_code
59531   , p_side                         => 'NA'
59532   );
59533 
59534 
59535    --
59536    --
59537    END IF;
59538 
59539        --
59540        -- Update the line information that should be overwritten
59541        --
59542        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59543                                          p_header_num   => 1);
59544        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59545 
59546        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59547 
59548        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59549           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59550        END IF;
59551 
59552       --
59553       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59554       --
59555       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59556           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59557       ELSE
59558           ---------------------------------------------------------------------------------------------------
59559           -- 4262811a Switch Sign
59560           ---------------------------------------------------------------------------------------------------
59561           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59562           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59563                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59564           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59565                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59566           -- 5132302
59567           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59568                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59569 
59570       END IF;
59571 
59572       -- 4955764
59573       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59575 
59576 
59577       XLA_AE_LINES_PKG.ValidateCurrentLine;
59578       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59579 
59580       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59581                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59582                ,p_balance_type_code => l_balance_type_code);
59583 
59584    END IF;
59585 
59586    -----------------------------------------------------------------------------------------
59587    -- 4262811 Multiperiod Accounting
59588    -----------------------------------------------------------------------------------------
59589      -- No MPA option is assigned.
59590 
59591 
59592 END IF;
59593 END IF;
59594 --
59595 
59596 --
59597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59598    trace
59599       (p_msg      => 'END of AcctLineType_129'
59600       ,p_level    => C_LEVEL_PROCEDURE
59601       ,p_module   => l_log_module);
59602 END IF;
59603 --
59604 EXCEPTION
59605   WHEN xla_exceptions_pkg.application_exception THEN
59606       RAISE;
59607   WHEN OTHERS THEN
59608        xla_exceptions_pkg.raise_message
59609            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_129');
59610 END AcctLineType_129;
59611 --
59612 
59613 ---------------------------------------
59614 --
59615 -- PRIVATE FUNCTION
59616 --         AcctLineType_130
59617 --
59618 ---------------------------------------
59619 PROCEDURE AcctLineType_130 (
59620   p_application_id        IN NUMBER
59621  ,p_event_id              IN NUMBER
59622  ,p_calculate_acctd_flag  IN VARCHAR2
59623  ,p_calculate_g_l_flag    IN VARCHAR2
59624  ,p_actual_flag           IN OUT VARCHAR2
59625  ,p_balance_type_code     OUT VARCHAR2
59626  ,p_gain_or_loss_ref      OUT VARCHAR2
59627  
59628 --TRANSACTION_ID
59629  , p_source_1            IN NUMBER
59630 --Item Concatenated Segments
59631  , p_source_2            IN VARCHAR2
59632 --Transaction Quantity
59633  , p_source_3            IN NUMBER
59634 --Transaction Unit of Measure Code
59635  , p_source_4            IN VARCHAR2
59636 --Inventory Transaction Type Description
59637  , p_source_5            IN VARCHAR2
59638 --Cost Management Default Account
59639  , p_source_11            IN NUMBER
59640 --DISTRIBUTION_IDENTIFIER
59641  , p_source_84            IN NUMBER
59642 --Distribution Type
59643  , p_source_85            IN VARCHAR2
59644  , p_source_85_meaning    IN VARCHAR2
59645 --Entered Currency Code
59646  , p_source_88            IN VARCHAR2
59647 --Entered Amount
59648  , p_source_91            IN NUMBER
59649 --Currency Conversion Date
59650  , p_source_92            IN DATE
59651 --Currency Conversion Rate
59652  , p_source_93            IN NUMBER
59653 --Currency Conversion Type
59654  , p_source_94            IN VARCHAR2
59655 --Accounted Amount
59656  , p_source_95            IN NUMBER
59657 --Accounting Line Type
59658  , p_source_97            IN NUMBER
59659 )
59660 IS
59661 
59662 l_component_type              VARCHAR2(80);
59663 l_component_code              VARCHAR2(30);
59664 l_component_type_code         VARCHAR2(1);
59665 l_component_appl_id           INTEGER;
59666 l_amb_context_code            VARCHAR2(30);
59667 l_entity_code                 VARCHAR2(30);
59668 l_event_class_code            VARCHAR2(30);
59669 l_ae_header_id                NUMBER;
59670 l_event_type_code             VARCHAR2(30);
59671 l_line_definition_code        VARCHAR2(30);
59672 l_line_definition_owner_code  VARCHAR2(1);
59673 --
59674 -- adr variables
59675 l_segment                     VARCHAR2(30);
59676 l_ccid                        NUMBER;
59677 l_adr_transaction_coa_id      NUMBER;
59678 l_adr_accounting_coa_id       NUMBER;
59679 l_adr_flexfield_segment_code  VARCHAR2(30);
59680 l_adr_flex_value_set_id       NUMBER;
59681 l_adr_value_type_code         VARCHAR2(30);
59682 l_adr_value_combination_id    NUMBER;
59683 l_adr_value_segment_code      VARCHAR2(30);
59684 
59685 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59686 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59687 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59688 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59689 
59690 -- 4262811 Variables ------------------------------------------------------------------------------------------
59691 l_entered_amt_idx             NUMBER;
59692 l_accted_amt_idx              NUMBER;
59693 l_acc_rev_flag                VARCHAR2(1);
59694 l_accrual_line_num            NUMBER;
59695 l_tmp_amt                     NUMBER;
59696 l_acc_rev_natural_side_code   VARCHAR2(1);
59697 
59698 l_num_entries                 NUMBER;
59699 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59700 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59701 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59702 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59703 l_recog_line_1                NUMBER;
59704 l_recog_line_2                NUMBER;
59705 
59706 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59707 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59708 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59709 
59710 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59711 
59712 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59713 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59714 
59715 ---------------------------------------------------------------------------------------------------------------
59716 
59717 
59718 --
59719 -- bulk performance
59720 --
59721 l_balance_type_code           VARCHAR2(1);
59722 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59723 l_log_module                  VARCHAR2(240);
59724 
59725 --
59726 -- Upgrade strategy
59727 --
59728 l_actual_upg_option           VARCHAR2(1);
59729 l_enc_upg_option           VARCHAR2(1);
59730 
59731 --
59732 BEGIN
59733 --
59734 IF g_log_enabled THEN
59735       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_130';
59736 END IF;
59737 --
59738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59739 
59740       trace
59741          (p_msg      => 'BEGIN of AcctLineType_130'
59742          ,p_level    => C_LEVEL_PROCEDURE
59743          ,p_module   => l_log_module);
59744 
59745 END IF;
59746 --
59747 l_component_type             := 'AMB_JLT';
59748 l_component_code             := 'INTERCOMPANY_ACCRUAL';
59749 l_component_type_code        := 'S';
59750 l_component_appl_id          :=  707;
59751 l_amb_context_code           := 'DEFAULT';
59752 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
59753 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
59754 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
59755 l_line_definition_owner_code := 'S';
59756 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
59757 --
59758 l_balance_type_code          := 'A';
59759 l_segment                     := NULL;
59760 l_ccid                        := NULL;
59761 l_adr_transaction_coa_id      := NULL;
59762 l_adr_accounting_coa_id       := NULL;
59763 l_adr_flexfield_segment_code  := NULL;
59764 l_adr_flex_value_set_id       := NULL;
59765 l_adr_value_type_code         := NULL;
59766 l_adr_value_combination_id    := NULL;
59767 l_adr_value_segment_code      := NULL;
59768 
59769 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59770 l_bflow_class_code           := '';    -- 4219869 Business Flow
59771 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59772 l_budgetary_control_flag     := 'N';
59773 
59774 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59775 l_bflow_applied_to_amt       := NULL; -- 5132302
59776 l_entered_amt_idx            := NULL;          -- 4262811
59777 l_accted_amt_idx             := NULL;          -- 4262811
59778 l_acc_rev_flag               := NULL;          -- 4262811
59779 l_accrual_line_num           := NULL;          -- 4262811
59780 l_tmp_amt                    := NULL;          -- 4262811
59781 --
59782  
59783 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59784     l_balance_type_code <> 'B' THEN
59785 IF NVL(p_source_97,9E125) =  2 AND 
59786 p_source_95 <  0
59787  THEN 
59788 
59789    --
59790    XLA_AE_LINES_PKG.SetNewLine;
59791 
59792    p_balance_type_code          := l_balance_type_code;
59793    -- set the flag so later we will know whether the gain loss line needs to be created
59794    
59795    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59796      p_actual_flag :='A';
59797    END IF;
59798 
59799    --
59800    -- bulk performance
59801    --
59802    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59803                                       p_header_num   => 0); -- 4262811
59804    --
59805    -- set accounting line options
59806    --
59807    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59808            p_natural_side_code          => 'D'
59809          , p_gain_or_loss_flag          => 'N'
59810          , p_gl_transfer_mode_code      => 'S'
59811          , p_acct_entry_type_code       => 'A'
59812          , p_switch_side_flag           => 'Y'
59813          , p_merge_duplicate_code       => 'N'
59814          );
59815    --
59816    l_acc_rev_natural_side_code := 'C';  -- 4262811
59817    -- 
59818    --
59819    -- set accounting line type info
59820    --
59821    xla_ae_lines_pkg.SetAcctLineType
59822       (p_component_type             => l_component_type
59823       ,p_event_type_code            => l_event_type_code
59824       ,p_line_definition_owner_code => l_line_definition_owner_code
59825       ,p_line_definition_code       => l_line_definition_code
59826       ,p_accounting_line_code       => l_component_code
59827       ,p_accounting_line_type_code  => l_component_type_code
59828       ,p_accounting_line_appl_id    => l_component_appl_id
59829       ,p_amb_context_code           => l_amb_context_code
59830       ,p_entity_code                => l_entity_code
59831       ,p_event_class_code           => l_event_class_code);
59832    --
59833    -- set accounting class
59834    --
59835    xla_ae_lines_pkg.SetAcctClass(
59836            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
59837          , p_ae_header_id           => l_ae_header_id
59838          );
59839 
59840    --
59841    -- set rounding class
59842    --
59843    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59844                       'INTERCOMPANY_ACCRUAL';
59845 
59846    --
59847    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59848    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59849    --
59850    -- bulk performance
59851    --
59852    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59853 
59854    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59855       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59856 
59857    -- 4955764
59858    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59859       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59860 
59861    -- 4458381 Public Sector Enh
59862    
59863    --
59864    -- set accounting attributes for the line type
59865    --
59866    l_entered_amt_idx := 3;
59867    l_accted_amt_idx  := 8;
59868    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59869    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59870    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
59871    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59872    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
59873    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59874    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
59875    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59876    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
59877    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59878    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
59879    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59880    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
59881    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59882    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
59883    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59884    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
59885 
59886    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59887    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59888 
59889    ---------------------------------------------------------------------------------------------------------------
59890    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59891    ---------------------------------------------------------------------------------------------------------------
59892    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59893 
59894    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59895    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59896 
59897    IF xla_accounting_cache_pkg.GetValueChar
59898          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59899          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59900    AND l_bflow_method_code = 'PRIOR_ENTRY'
59901 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59902    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59903          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59904        )
59905    THEN
59906          xla_ae_lines_pkg.BflowUpgEntry
59907            (p_business_method_code    => l_bflow_method_code
59908            ,p_business_class_code     => l_bflow_class_code
59909            ,p_balance_type            => l_balance_type_code);
59910    ELSE
59911       NULL;
59912 -- No business flow processing for business flow method of NONE.
59913    END IF;
59914 
59915    --
59916    -- call analytical criteria
59917    --
59918    
59919    --
59920    -- call description
59921    --
59922    
59923 xla_ae_lines_pkg.SetLineDescription(
59924    p_ae_header_id => l_ae_header_id
59925   ,p_description  => Description_1 (
59926      p_application_id         => p_application_id
59927    , p_ae_header_id           => l_ae_header_id 
59928 , p_source_1 => p_source_1
59929 , p_source_2 => p_source_2
59930 , p_source_3 => p_source_3
59931 , p_source_4 => p_source_4
59932 , p_source_5 => p_source_5
59933    )
59934 );
59935 
59936 
59937    --
59938    -- call ADRs
59939    -- Bug 4922099
59940    --
59941    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59942         (NVL(l_actual_upg_option, 'N') = 'O') OR
59943         (NVL(l_enc_upg_option, 'N') = 'O')
59944       )
59945    THEN
59946    NULL;
59947    --
59948    --
59949    
59950   l_ccid := AcctDerRule_6(
59951            p_application_id           => p_application_id
59952          , p_ae_header_id             => l_ae_header_id 
59953 , p_source_11 => p_source_11
59954          , x_transaction_coa_id       => l_adr_transaction_coa_id
59955          , x_accounting_coa_id        => l_adr_accounting_coa_id
59956          , x_value_type_code          => l_adr_value_type_code
59957          , p_side                     => 'NA'
59958    );
59959 
59960    xla_ae_lines_pkg.set_ccid(
59961     p_code_combination_id          => l_ccid
59962   , p_value_type_code              => l_adr_value_type_code
59963   , p_transaction_coa_id           => l_adr_transaction_coa_id
59964   , p_accounting_coa_id            => l_adr_accounting_coa_id
59965   , p_adr_code                     => 'CST_DEFAULT'
59966   , p_adr_type_code                => 'S'
59967   , p_component_type               => l_component_type
59968   , p_component_code               => l_component_code
59969   , p_component_type_code          => l_component_type_code
59970   , p_component_appl_id            => l_component_appl_id
59971   , p_amb_context_code             => l_amb_context_code
59972   , p_side                         => 'NA'
59973   );
59974 
59975 
59976    --
59977    --
59978    END IF;
59979    --
59980    -- Bug 4922099
59981    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59982           (NVL(l_enc_upg_option, 'N') = 'O')
59983         ) AND
59984         (l_bflow_method_code = 'PRIOR_ENTRY')
59985       )
59986    THEN
59987       IF
59988       --
59989       1 = 2
59990       --
59991       THEN
59992       xla_accounting_err_pkg.build_message
59993                                     (p_appli_s_name            => 'XLA'
59994                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59995                                     ,p_token_1                 => 'LINE_NUMBER'
59996                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59997                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59998                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59999                                                                              l_component_type
60000                                                                             ,l_component_code
60001                                                                             ,l_component_type_code
60002                                                                             ,l_component_appl_id
60003                                                                             ,l_amb_context_code
60004                                                                             ,l_entity_code
60005                                                                             ,l_event_class_code
60006                                                                            )
60007                                     ,p_token_3                 => 'OWNER'
60008                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60009                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60010                                                                           ,p_lookup_code    => l_component_type_code
60011                                                                          )
60012                                     ,p_token_4                 => 'PRODUCT_NAME'
60013                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60014                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60015                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60016                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60017                                     ,p_ae_header_id            =>  NULL
60018                                        );
60019 
60020         IF (C_LEVEL_ERROR>= g_log_level) THEN
60021                  trace
60022                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60023                       ,p_level    => C_LEVEL_ERROR
60024                       ,p_module   => l_log_module);
60025         END IF;
60026       END IF;
60027    END IF;
60028    --
60029    --
60030    ------------------------------------------------------------------------------------------------
60031    -- 4219869 Business Flow
60032    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60033    -- Prior Entry.  Currently, the following code is always generated.
60034    ------------------------------------------------------------------------------------------------
60035    XLA_AE_LINES_PKG.ValidateCurrentLine;
60036 
60037    ------------------------------------------------------------------------------------
60038    -- 4219869 Business Flow
60039    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60040    ------------------------------------------------------------------------------------
60041    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60042 
60043    ----------------------------------------------------------------------------------
60044    -- 4219869 Business Flow
60045    -- Update journal entry status -- Need to generate this within IF <condition>
60046    ----------------------------------------------------------------------------------
60047    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60048          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60049          ,p_balance_type_code => l_balance_type_code
60050          );
60051 
60052    -------------------------------------------------------------------------------------------
60053    -- 4262811 - Generate the Accrual Reversal lines
60054    -------------------------------------------------------------------------------------------
60055    BEGIN
60056       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60057                               (g_array_event(p_event_id).array_value_num('header_index'));
60058       IF l_acc_rev_flag IS NULL THEN
60059          l_acc_rev_flag := 'N';
60060       END IF;
60061    EXCEPTION
60062       WHEN OTHERS THEN
60063          l_acc_rev_flag := 'N';
60064    END;
60065    --
60066    IF (l_acc_rev_flag = 'Y') THEN
60067 
60068        -- 4645092  ------------------------------------------------------------------------------
60069        -- To allow MPA report to determine if it should generate report process
60070        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60071        ------------------------------------------------------------------------------------------
60072 
60073        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60074        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60075    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60076    -- call ADRs
60077    -- Bug 4922099
60078    --
60079    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60080         (NVL(l_actual_upg_option, 'N') = 'O') OR
60081         (NVL(l_enc_upg_option, 'N') = 'O')
60082       )
60083    THEN
60084    NULL;
60085    --
60086    --
60087    
60088   l_ccid := AcctDerRule_6(
60089            p_application_id           => p_application_id
60090          , p_ae_header_id             => l_ae_header_id 
60091 , p_source_11 => p_source_11
60092          , x_transaction_coa_id       => l_adr_transaction_coa_id
60093          , x_accounting_coa_id        => l_adr_accounting_coa_id
60094          , x_value_type_code          => l_adr_value_type_code
60095          , p_side                     => 'NA'
60096    );
60097 
60098    xla_ae_lines_pkg.set_ccid(
60099     p_code_combination_id          => l_ccid
60100   , p_value_type_code              => l_adr_value_type_code
60101   , p_transaction_coa_id           => l_adr_transaction_coa_id
60102   , p_accounting_coa_id            => l_adr_accounting_coa_id
60103   , p_adr_code                     => 'CST_DEFAULT'
60104   , p_adr_type_code                => 'S'
60105   , p_component_type               => l_component_type
60106   , p_component_code               => l_component_code
60107   , p_component_type_code          => l_component_type_code
60108   , p_component_appl_id            => l_component_appl_id
60109   , p_amb_context_code             => l_amb_context_code
60110   , p_side                         => 'NA'
60111   );
60112 
60113 
60114    --
60115    --
60116    END IF;
60117 
60118        --
60119        -- Update the line information that should be overwritten
60120        --
60121        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60122                                          p_header_num   => 1);
60123        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60124 
60125        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60126 
60127        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60128           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60129        END IF;
60130 
60131       --
60132       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60133       --
60134       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60135           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60136       ELSE
60137           ---------------------------------------------------------------------------------------------------
60138           -- 4262811a Switch Sign
60139           ---------------------------------------------------------------------------------------------------
60140           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60141           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60142                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60143           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60144                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60145           -- 5132302
60146           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60147                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60148 
60149       END IF;
60150 
60151       -- 4955764
60152       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60153       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60154 
60155 
60156       XLA_AE_LINES_PKG.ValidateCurrentLine;
60157       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60158 
60159       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60160                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60161                ,p_balance_type_code => l_balance_type_code);
60162 
60163    END IF;
60164 
60165    -----------------------------------------------------------------------------------------
60166    -- 4262811 Multiperiod Accounting
60167    -----------------------------------------------------------------------------------------
60168      -- No MPA option is assigned.
60169 
60170 
60171 END IF;
60172 END IF;
60173 --
60174 
60175 --
60176 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60177    trace
60178       (p_msg      => 'END of AcctLineType_130'
60179       ,p_level    => C_LEVEL_PROCEDURE
60180       ,p_module   => l_log_module);
60181 END IF;
60182 --
60183 EXCEPTION
60184   WHEN xla_exceptions_pkg.application_exception THEN
60185       RAISE;
60186   WHEN OTHERS THEN
60187        xla_exceptions_pkg.raise_message
60188            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_130');
60189 END AcctLineType_130;
60190 --
60191 
60192 ---------------------------------------
60193 --
60194 -- PRIVATE FUNCTION
60195 --         AcctLineType_131
60196 --
60197 ---------------------------------------
60198 PROCEDURE AcctLineType_131 (
60199   p_application_id        IN NUMBER
60200  ,p_event_id              IN NUMBER
60201  ,p_calculate_acctd_flag  IN VARCHAR2
60202  ,p_calculate_g_l_flag    IN VARCHAR2
60203  ,p_actual_flag           IN OUT VARCHAR2
60204  ,p_balance_type_code     OUT VARCHAR2
60205  ,p_gain_or_loss_ref      OUT VARCHAR2
60206  
60207 --TRANSACTION_ID
60208  , p_source_1            IN NUMBER
60209 --Item Concatenated Segments
60210  , p_source_2            IN VARCHAR2
60211 --Transaction Quantity
60212  , p_source_3            IN NUMBER
60213 --Transaction Unit of Measure Code
60214  , p_source_4            IN VARCHAR2
60215 --Inventory Transaction Type Description
60216  , p_source_5            IN VARCHAR2
60217 --Transaction Expense Account
60218  , p_source_60            IN NUMBER
60219 --DISTRIBUTION_IDENTIFIER
60220  , p_source_84            IN NUMBER
60221 --Distribution Type
60222  , p_source_85            IN VARCHAR2
60223  , p_source_85_meaning    IN VARCHAR2
60224 --Entered Currency Code
60225  , p_source_88            IN VARCHAR2
60226 --Entered Amount
60227  , p_source_91            IN NUMBER
60228 --Currency Conversion Date
60229  , p_source_92            IN DATE
60230 --Currency Conversion Rate
60231  , p_source_93            IN NUMBER
60232 --Currency Conversion Type
60233  , p_source_94            IN VARCHAR2
60234 --Accounted Amount
60235  , p_source_95            IN NUMBER
60236 --Accounting Line Type
60237  , p_source_97            IN NUMBER
60238 )
60239 IS
60240 
60241 l_component_type              VARCHAR2(80);
60242 l_component_code              VARCHAR2(30);
60243 l_component_type_code         VARCHAR2(1);
60244 l_component_appl_id           INTEGER;
60245 l_amb_context_code            VARCHAR2(30);
60246 l_entity_code                 VARCHAR2(30);
60247 l_event_class_code            VARCHAR2(30);
60248 l_ae_header_id                NUMBER;
60249 l_event_type_code             VARCHAR2(30);
60250 l_line_definition_code        VARCHAR2(30);
60251 l_line_definition_owner_code  VARCHAR2(1);
60252 --
60253 -- adr variables
60254 l_segment                     VARCHAR2(30);
60255 l_ccid                        NUMBER;
60256 l_adr_transaction_coa_id      NUMBER;
60257 l_adr_accounting_coa_id       NUMBER;
60258 l_adr_flexfield_segment_code  VARCHAR2(30);
60259 l_adr_flex_value_set_id       NUMBER;
60260 l_adr_value_type_code         VARCHAR2(30);
60261 l_adr_value_combination_id    NUMBER;
60262 l_adr_value_segment_code      VARCHAR2(30);
60263 
60264 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60265 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60266 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60267 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60268 
60269 -- 4262811 Variables ------------------------------------------------------------------------------------------
60270 l_entered_amt_idx             NUMBER;
60271 l_accted_amt_idx              NUMBER;
60272 l_acc_rev_flag                VARCHAR2(1);
60273 l_accrual_line_num            NUMBER;
60274 l_tmp_amt                     NUMBER;
60275 l_acc_rev_natural_side_code   VARCHAR2(1);
60276 
60277 l_num_entries                 NUMBER;
60278 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60279 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60280 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60281 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60282 l_recog_line_1                NUMBER;
60283 l_recog_line_2                NUMBER;
60284 
60285 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60286 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60287 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60288 
60289 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60290 
60291 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60292 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60293 
60294 ---------------------------------------------------------------------------------------------------------------
60295 
60296 
60297 --
60298 -- bulk performance
60299 --
60300 l_balance_type_code           VARCHAR2(1);
60301 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60302 l_log_module                  VARCHAR2(240);
60303 
60304 --
60305 -- Upgrade strategy
60306 --
60307 l_actual_upg_option           VARCHAR2(1);
60308 l_enc_upg_option           VARCHAR2(1);
60309 
60310 --
60311 BEGIN
60312 --
60313 IF g_log_enabled THEN
60314       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_131';
60315 END IF;
60316 --
60317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60318 
60319       trace
60320          (p_msg      => 'BEGIN of AcctLineType_131'
60321          ,p_level    => C_LEVEL_PROCEDURE
60322          ,p_module   => l_log_module);
60323 
60324 END IF;
60325 --
60326 l_component_type             := 'AMB_JLT';
60327 l_component_code             := 'INTERCOMPANY_ACCRUAL';
60328 l_component_type_code        := 'S';
60329 l_component_appl_id          :=  707;
60330 l_amb_context_code           := 'DEFAULT';
60331 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
60332 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
60333 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
60334 l_line_definition_owner_code := 'S';
60335 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
60336 --
60337 l_balance_type_code          := 'A';
60338 l_segment                     := NULL;
60339 l_ccid                        := NULL;
60340 l_adr_transaction_coa_id      := NULL;
60341 l_adr_accounting_coa_id       := NULL;
60342 l_adr_flexfield_segment_code  := NULL;
60343 l_adr_flex_value_set_id       := NULL;
60344 l_adr_value_type_code         := NULL;
60345 l_adr_value_combination_id    := NULL;
60346 l_adr_value_segment_code      := NULL;
60347 
60348 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60349 l_bflow_class_code           := '';    -- 4219869 Business Flow
60350 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60351 l_budgetary_control_flag     := 'N';
60352 
60353 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60354 l_bflow_applied_to_amt       := NULL; -- 5132302
60355 l_entered_amt_idx            := NULL;          -- 4262811
60356 l_accted_amt_idx             := NULL;          -- 4262811
60357 l_acc_rev_flag               := NULL;          -- 4262811
60358 l_accrual_line_num           := NULL;          -- 4262811
60359 l_tmp_amt                    := NULL;          -- 4262811
60360 --
60361  
60362 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60363     l_balance_type_code <> 'B' THEN
60364 IF NVL(p_source_97,9E125) =  2 AND 
60365 p_source_95 <  0
60366  THEN 
60367 
60368    --
60369    XLA_AE_LINES_PKG.SetNewLine;
60370 
60371    p_balance_type_code          := l_balance_type_code;
60372    -- set the flag so later we will know whether the gain loss line needs to be created
60373    
60374    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60375      p_actual_flag :='A';
60376    END IF;
60377 
60378    --
60379    -- bulk performance
60380    --
60381    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60382                                       p_header_num   => 0); -- 4262811
60383    --
60384    -- set accounting line options
60385    --
60386    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60387            p_natural_side_code          => 'D'
60388          , p_gain_or_loss_flag          => 'N'
60389          , p_gl_transfer_mode_code      => 'S'
60390          , p_acct_entry_type_code       => 'A'
60391          , p_switch_side_flag           => 'Y'
60392          , p_merge_duplicate_code       => 'N'
60393          );
60394    --
60395    l_acc_rev_natural_side_code := 'C';  -- 4262811
60396    -- 
60397    --
60398    -- set accounting line type info
60399    --
60400    xla_ae_lines_pkg.SetAcctLineType
60401       (p_component_type             => l_component_type
60402       ,p_event_type_code            => l_event_type_code
60403       ,p_line_definition_owner_code => l_line_definition_owner_code
60404       ,p_line_definition_code       => l_line_definition_code
60405       ,p_accounting_line_code       => l_component_code
60406       ,p_accounting_line_type_code  => l_component_type_code
60407       ,p_accounting_line_appl_id    => l_component_appl_id
60408       ,p_amb_context_code           => l_amb_context_code
60409       ,p_entity_code                => l_entity_code
60410       ,p_event_class_code           => l_event_class_code);
60411    --
60412    -- set accounting class
60413    --
60414    xla_ae_lines_pkg.SetAcctClass(
60415            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
60416          , p_ae_header_id           => l_ae_header_id
60417          );
60418 
60419    --
60420    -- set rounding class
60421    --
60422    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60423                       'INTERCOMPANY_ACCRUAL';
60424 
60425    --
60426    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60427    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60428    --
60429    -- bulk performance
60430    --
60431    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60432 
60433    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60434       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60435 
60436    -- 4955764
60437    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60438       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60439 
60440    -- 4458381 Public Sector Enh
60441    
60442    --
60443    -- set accounting attributes for the line type
60444    --
60445    l_entered_amt_idx := 3;
60446    l_accted_amt_idx  := 8;
60447    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60448    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60449    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
60450    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60451    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
60452    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60453    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
60454    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60455    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
60456    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60457    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
60458    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60459    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
60460    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60461    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
60462    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60463    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
60464 
60465    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60466    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60467 
60468    ---------------------------------------------------------------------------------------------------------------
60469    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60470    ---------------------------------------------------------------------------------------------------------------
60471    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60472 
60473    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60474    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60475 
60476    IF xla_accounting_cache_pkg.GetValueChar
60477          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60478          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60479    AND l_bflow_method_code = 'PRIOR_ENTRY'
60480 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60481    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60482          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60483        )
60484    THEN
60485          xla_ae_lines_pkg.BflowUpgEntry
60486            (p_business_method_code    => l_bflow_method_code
60487            ,p_business_class_code     => l_bflow_class_code
60488            ,p_balance_type            => l_balance_type_code);
60489    ELSE
60490       NULL;
60491 -- No business flow processing for business flow method of NONE.
60492    END IF;
60493 
60494    --
60495    -- call analytical criteria
60496    --
60497    
60498    --
60499    -- call description
60500    --
60501    
60502 xla_ae_lines_pkg.SetLineDescription(
60503    p_ae_header_id => l_ae_header_id
60504   ,p_description  => Description_1 (
60505      p_application_id         => p_application_id
60506    , p_ae_header_id           => l_ae_header_id 
60507 , p_source_1 => p_source_1
60508 , p_source_2 => p_source_2
60509 , p_source_3 => p_source_3
60510 , p_source_4 => p_source_4
60511 , p_source_5 => p_source_5
60512    )
60513 );
60514 
60515 
60516    --
60517    -- call ADRs
60518    -- Bug 4922099
60519    --
60520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60521         (NVL(l_actual_upg_option, 'N') = 'O') OR
60522         (NVL(l_enc_upg_option, 'N') = 'O')
60523       )
60524    THEN
60525    NULL;
60526    --
60527    --
60528    
60529   l_ccid := AcctDerRule_34(
60530            p_application_id           => p_application_id
60531          , p_ae_header_id             => l_ae_header_id 
60532 , p_source_60 => p_source_60
60533          , x_transaction_coa_id       => l_adr_transaction_coa_id
60534          , x_accounting_coa_id        => l_adr_accounting_coa_id
60535          , x_value_type_code          => l_adr_value_type_code
60536          , p_side                     => 'NA'
60537    );
60538 
60539    xla_ae_lines_pkg.set_ccid(
60540     p_code_combination_id          => l_ccid
60541   , p_value_type_code              => l_adr_value_type_code
60542   , p_transaction_coa_id           => l_adr_transaction_coa_id
60543   , p_accounting_coa_id            => l_adr_accounting_coa_id
60544   , p_adr_code                     => 'PI_TRANSACTION_EXPENSE'
60545   , p_adr_type_code                => 'S'
60546   , p_component_type               => l_component_type
60547   , p_component_code               => l_component_code
60548   , p_component_type_code          => l_component_type_code
60549   , p_component_appl_id            => l_component_appl_id
60550   , p_amb_context_code             => l_amb_context_code
60551   , p_side                         => 'NA'
60552   );
60553 
60554 
60555    --
60556    --
60557    END IF;
60558    --
60559    -- Bug 4922099
60560    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60561           (NVL(l_enc_upg_option, 'N') = 'O')
60562         ) AND
60563         (l_bflow_method_code = 'PRIOR_ENTRY')
60564       )
60565    THEN
60566       IF
60567       --
60568       1 = 2
60569       --
60570       THEN
60571       xla_accounting_err_pkg.build_message
60572                                     (p_appli_s_name            => 'XLA'
60573                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60574                                     ,p_token_1                 => 'LINE_NUMBER'
60575                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60576                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60577                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60578                                                                              l_component_type
60579                                                                             ,l_component_code
60580                                                                             ,l_component_type_code
60581                                                                             ,l_component_appl_id
60582                                                                             ,l_amb_context_code
60583                                                                             ,l_entity_code
60584                                                                             ,l_event_class_code
60585                                                                            )
60586                                     ,p_token_3                 => 'OWNER'
60587                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60588                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60589                                                                           ,p_lookup_code    => l_component_type_code
60590                                                                          )
60591                                     ,p_token_4                 => 'PRODUCT_NAME'
60592                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60593                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60594                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60595                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60596                                     ,p_ae_header_id            =>  NULL
60597                                        );
60598 
60599         IF (C_LEVEL_ERROR>= g_log_level) THEN
60600                  trace
60601                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60602                       ,p_level    => C_LEVEL_ERROR
60603                       ,p_module   => l_log_module);
60604         END IF;
60605       END IF;
60606    END IF;
60607    --
60608    --
60609    ------------------------------------------------------------------------------------------------
60610    -- 4219869 Business Flow
60611    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60612    -- Prior Entry.  Currently, the following code is always generated.
60613    ------------------------------------------------------------------------------------------------
60614    XLA_AE_LINES_PKG.ValidateCurrentLine;
60615 
60616    ------------------------------------------------------------------------------------
60617    -- 4219869 Business Flow
60618    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60619    ------------------------------------------------------------------------------------
60620    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60621 
60622    ----------------------------------------------------------------------------------
60623    -- 4219869 Business Flow
60624    -- Update journal entry status -- Need to generate this within IF <condition>
60625    ----------------------------------------------------------------------------------
60626    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60627          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60628          ,p_balance_type_code => l_balance_type_code
60629          );
60630 
60631    -------------------------------------------------------------------------------------------
60632    -- 4262811 - Generate the Accrual Reversal lines
60633    -------------------------------------------------------------------------------------------
60634    BEGIN
60635       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60636                               (g_array_event(p_event_id).array_value_num('header_index'));
60637       IF l_acc_rev_flag IS NULL THEN
60638          l_acc_rev_flag := 'N';
60639       END IF;
60640    EXCEPTION
60641       WHEN OTHERS THEN
60642          l_acc_rev_flag := 'N';
60643    END;
60644    --
60645    IF (l_acc_rev_flag = 'Y') THEN
60646 
60647        -- 4645092  ------------------------------------------------------------------------------
60648        -- To allow MPA report to determine if it should generate report process
60649        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60650        ------------------------------------------------------------------------------------------
60651 
60652        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60653        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60654    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60655    -- call ADRs
60656    -- Bug 4922099
60657    --
60658    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60659         (NVL(l_actual_upg_option, 'N') = 'O') OR
60660         (NVL(l_enc_upg_option, 'N') = 'O')
60661       )
60662    THEN
60663    NULL;
60664    --
60665    --
60666    
60667   l_ccid := AcctDerRule_34(
60668            p_application_id           => p_application_id
60669          , p_ae_header_id             => l_ae_header_id 
60670 , p_source_60 => p_source_60
60671          , x_transaction_coa_id       => l_adr_transaction_coa_id
60672          , x_accounting_coa_id        => l_adr_accounting_coa_id
60673          , x_value_type_code          => l_adr_value_type_code
60674          , p_side                     => 'NA'
60675    );
60676 
60677    xla_ae_lines_pkg.set_ccid(
60678     p_code_combination_id          => l_ccid
60679   , p_value_type_code              => l_adr_value_type_code
60680   , p_transaction_coa_id           => l_adr_transaction_coa_id
60681   , p_accounting_coa_id            => l_adr_accounting_coa_id
60682   , p_adr_code                     => 'PI_TRANSACTION_EXPENSE'
60683   , p_adr_type_code                => 'S'
60684   , p_component_type               => l_component_type
60685   , p_component_code               => l_component_code
60686   , p_component_type_code          => l_component_type_code
60687   , p_component_appl_id            => l_component_appl_id
60688   , p_amb_context_code             => l_amb_context_code
60689   , p_side                         => 'NA'
60690   );
60691 
60692 
60693    --
60694    --
60695    END IF;
60696 
60697        --
60698        -- Update the line information that should be overwritten
60699        --
60700        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60701                                          p_header_num   => 1);
60702        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60703 
60704        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60705 
60706        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60707           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60708        END IF;
60709 
60710       --
60711       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60712       --
60713       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60714           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60715       ELSE
60716           ---------------------------------------------------------------------------------------------------
60717           -- 4262811a Switch Sign
60718           ---------------------------------------------------------------------------------------------------
60719           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60720           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60721                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60722           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60723                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60724           -- 5132302
60725           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60726                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60727 
60728       END IF;
60729 
60730       -- 4955764
60731       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60732       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60733 
60734 
60735       XLA_AE_LINES_PKG.ValidateCurrentLine;
60736       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60737 
60738       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60739                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60740                ,p_balance_type_code => l_balance_type_code);
60741 
60742    END IF;
60743 
60744    -----------------------------------------------------------------------------------------
60745    -- 4262811 Multiperiod Accounting
60746    -----------------------------------------------------------------------------------------
60747      -- No MPA option is assigned.
60748 
60749 
60750 END IF;
60751 END IF;
60752 --
60753 
60754 --
60755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60756    trace
60757       (p_msg      => 'END of AcctLineType_131'
60758       ,p_level    => C_LEVEL_PROCEDURE
60759       ,p_module   => l_log_module);
60760 END IF;
60761 --
60762 EXCEPTION
60763   WHEN xla_exceptions_pkg.application_exception THEN
60764       RAISE;
60765   WHEN OTHERS THEN
60766        xla_exceptions_pkg.raise_message
60767            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_131');
60768 END AcctLineType_131;
60769 --
60770 
60771 ---------------------------------------
60772 --
60773 -- PRIVATE FUNCTION
60774 --         AcctLineType_132
60775 --
60776 ---------------------------------------
60777 PROCEDURE AcctLineType_132 (
60778   p_application_id        IN NUMBER
60779  ,p_event_id              IN NUMBER
60780  ,p_calculate_acctd_flag  IN VARCHAR2
60781  ,p_calculate_g_l_flag    IN VARCHAR2
60782  ,p_actual_flag           IN OUT VARCHAR2
60783  ,p_balance_type_code     OUT VARCHAR2
60784  ,p_gain_or_loss_ref      OUT VARCHAR2
60785  
60786 --TRANSACTION_ID
60787  , p_source_1            IN NUMBER
60788 --Item Concatenated Segments
60789  , p_source_2            IN VARCHAR2
60790 --Transaction Quantity
60791  , p_source_3            IN NUMBER
60792 --Transaction Unit of Measure Code
60793  , p_source_4            IN VARCHAR2
60794 --Inventory Transaction Type Description
60795  , p_source_5            IN VARCHAR2
60796 --Transaction Expense Account
60797  , p_source_60            IN NUMBER
60798 --DISTRIBUTION_IDENTIFIER
60799  , p_source_84            IN NUMBER
60800 --Distribution Type
60801  , p_source_85            IN VARCHAR2
60802  , p_source_85_meaning    IN VARCHAR2
60803 --Entered Currency Code
60804  , p_source_88            IN VARCHAR2
60805 --Entered Amount
60806  , p_source_91            IN NUMBER
60807 --Currency Conversion Date
60808  , p_source_92            IN DATE
60809 --Currency Conversion Rate
60810  , p_source_93            IN NUMBER
60811 --Currency Conversion Type
60812  , p_source_94            IN VARCHAR2
60813 --Accounted Amount
60814  , p_source_95            IN NUMBER
60815 --Accounting Line Type
60816  , p_source_97            IN NUMBER
60817 )
60818 IS
60819 
60820 l_component_type              VARCHAR2(80);
60821 l_component_code              VARCHAR2(30);
60822 l_component_type_code         VARCHAR2(1);
60823 l_component_appl_id           INTEGER;
60824 l_amb_context_code            VARCHAR2(30);
60825 l_entity_code                 VARCHAR2(30);
60826 l_event_class_code            VARCHAR2(30);
60827 l_ae_header_id                NUMBER;
60828 l_event_type_code             VARCHAR2(30);
60829 l_line_definition_code        VARCHAR2(30);
60830 l_line_definition_owner_code  VARCHAR2(1);
60831 --
60832 -- adr variables
60833 l_segment                     VARCHAR2(30);
60834 l_ccid                        NUMBER;
60835 l_adr_transaction_coa_id      NUMBER;
60836 l_adr_accounting_coa_id       NUMBER;
60837 l_adr_flexfield_segment_code  VARCHAR2(30);
60838 l_adr_flex_value_set_id       NUMBER;
60839 l_adr_value_type_code         VARCHAR2(30);
60840 l_adr_value_combination_id    NUMBER;
60841 l_adr_value_segment_code      VARCHAR2(30);
60842 
60843 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60844 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60845 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60846 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60847 
60848 -- 4262811 Variables ------------------------------------------------------------------------------------------
60849 l_entered_amt_idx             NUMBER;
60850 l_accted_amt_idx              NUMBER;
60851 l_acc_rev_flag                VARCHAR2(1);
60852 l_accrual_line_num            NUMBER;
60853 l_tmp_amt                     NUMBER;
60854 l_acc_rev_natural_side_code   VARCHAR2(1);
60855 
60856 l_num_entries                 NUMBER;
60857 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60858 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60859 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60860 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60861 l_recog_line_1                NUMBER;
60862 l_recog_line_2                NUMBER;
60863 
60864 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60865 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60866 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60867 
60868 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60869 
60870 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60871 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60872 
60873 ---------------------------------------------------------------------------------------------------------------
60874 
60875 
60876 --
60877 -- bulk performance
60878 --
60879 l_balance_type_code           VARCHAR2(1);
60880 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60881 l_log_module                  VARCHAR2(240);
60882 
60883 --
60884 -- Upgrade strategy
60885 --
60886 l_actual_upg_option           VARCHAR2(1);
60887 l_enc_upg_option           VARCHAR2(1);
60888 
60889 --
60890 BEGIN
60891 --
60892 IF g_log_enabled THEN
60893       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_132';
60894 END IF;
60895 --
60896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60897 
60898       trace
60899          (p_msg      => 'BEGIN of AcctLineType_132'
60900          ,p_level    => C_LEVEL_PROCEDURE
60901          ,p_module   => l_log_module);
60902 
60903 END IF;
60904 --
60905 l_component_type             := 'AMB_JLT';
60906 l_component_code             := 'INTERCOMPANY_ACCRUAL';
60907 l_component_type_code        := 'S';
60908 l_component_appl_id          :=  707;
60909 l_amb_context_code           := 'DEFAULT';
60910 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
60911 l_event_class_code           := 'USER_DEFINE';
60912 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
60913 l_line_definition_owner_code := 'S';
60914 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
60915 --
60916 l_balance_type_code          := 'A';
60917 l_segment                     := NULL;
60918 l_ccid                        := NULL;
60919 l_adr_transaction_coa_id      := NULL;
60920 l_adr_accounting_coa_id       := NULL;
60921 l_adr_flexfield_segment_code  := NULL;
60922 l_adr_flex_value_set_id       := NULL;
60923 l_adr_value_type_code         := NULL;
60924 l_adr_value_combination_id    := NULL;
60925 l_adr_value_segment_code      := NULL;
60926 
60927 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60928 l_bflow_class_code           := '';    -- 4219869 Business Flow
60929 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60930 l_budgetary_control_flag     := 'N';
60931 
60932 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60933 l_bflow_applied_to_amt       := NULL; -- 5132302
60934 l_entered_amt_idx            := NULL;          -- 4262811
60935 l_accted_amt_idx             := NULL;          -- 4262811
60936 l_acc_rev_flag               := NULL;          -- 4262811
60937 l_accrual_line_num           := NULL;          -- 4262811
60938 l_tmp_amt                    := NULL;          -- 4262811
60939 --
60940  
60941 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60942     l_balance_type_code <> 'B' THEN
60943 IF NVL(p_source_97,9E125) =  2 AND 
60944 p_source_95 <  0
60945  THEN 
60946 
60947    --
60948    XLA_AE_LINES_PKG.SetNewLine;
60949 
60950    p_balance_type_code          := l_balance_type_code;
60951    -- set the flag so later we will know whether the gain loss line needs to be created
60952    
60953    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60954      p_actual_flag :='A';
60955    END IF;
60956 
60957    --
60958    -- bulk performance
60959    --
60960    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60961                                       p_header_num   => 0); -- 4262811
60962    --
60963    -- set accounting line options
60964    --
60965    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60966            p_natural_side_code          => 'D'
60967          , p_gain_or_loss_flag          => 'N'
60968          , p_gl_transfer_mode_code      => 'S'
60969          , p_acct_entry_type_code       => 'A'
60970          , p_switch_side_flag           => 'Y'
60971          , p_merge_duplicate_code       => 'N'
60972          );
60973    --
60974    l_acc_rev_natural_side_code := 'C';  -- 4262811
60975    -- 
60976    --
60977    -- set accounting line type info
60978    --
60979    xla_ae_lines_pkg.SetAcctLineType
60980       (p_component_type             => l_component_type
60981       ,p_event_type_code            => l_event_type_code
60982       ,p_line_definition_owner_code => l_line_definition_owner_code
60983       ,p_line_definition_code       => l_line_definition_code
60984       ,p_accounting_line_code       => l_component_code
60985       ,p_accounting_line_type_code  => l_component_type_code
60986       ,p_accounting_line_appl_id    => l_component_appl_id
60987       ,p_amb_context_code           => l_amb_context_code
60988       ,p_entity_code                => l_entity_code
60989       ,p_event_class_code           => l_event_class_code);
60990    --
60991    -- set accounting class
60992    --
60993    xla_ae_lines_pkg.SetAcctClass(
60994            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
60995          , p_ae_header_id           => l_ae_header_id
60996          );
60997 
60998    --
60999    -- set rounding class
61000    --
61001    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61002                       'INTERCOMPANY_ACCRUAL';
61003 
61004    --
61005    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61006    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61007    --
61008    -- bulk performance
61009    --
61010    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61011 
61012    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61013       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61014 
61015    -- 4955764
61016    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61017       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61018 
61019    -- 4458381 Public Sector Enh
61020    
61021    --
61022    -- set accounting attributes for the line type
61023    --
61024    l_entered_amt_idx := 3;
61025    l_accted_amt_idx  := 8;
61026    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61027    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61028    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
61029    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61030    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
61031    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61032    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
61033    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61034    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
61035    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61036    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
61037    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61038    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
61039    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61040    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
61041    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61042    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
61043 
61044    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61045    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61046 
61047    ---------------------------------------------------------------------------------------------------------------
61048    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61049    ---------------------------------------------------------------------------------------------------------------
61050    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61051 
61052    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61053    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61054 
61055    IF xla_accounting_cache_pkg.GetValueChar
61056          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61057          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61058    AND l_bflow_method_code = 'PRIOR_ENTRY'
61059 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61060    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61061          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61062        )
61063    THEN
61064          xla_ae_lines_pkg.BflowUpgEntry
61065            (p_business_method_code    => l_bflow_method_code
61066            ,p_business_class_code     => l_bflow_class_code
61067            ,p_balance_type            => l_balance_type_code);
61068    ELSE
61069       NULL;
61070 -- No business flow processing for business flow method of NONE.
61071    END IF;
61072 
61073    --
61074    -- call analytical criteria
61075    --
61076    
61077    --
61078    -- call description
61079    --
61080    
61081 xla_ae_lines_pkg.SetLineDescription(
61082    p_ae_header_id => l_ae_header_id
61083   ,p_description  => Description_1 (
61084      p_application_id         => p_application_id
61085    , p_ae_header_id           => l_ae_header_id 
61086 , p_source_1 => p_source_1
61087 , p_source_2 => p_source_2
61088 , p_source_3 => p_source_3
61089 , p_source_4 => p_source_4
61090 , p_source_5 => p_source_5
61091    )
61092 );
61093 
61094 
61095    --
61096    -- call ADRs
61097    -- Bug 4922099
61098    --
61099    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61100         (NVL(l_actual_upg_option, 'N') = 'O') OR
61101         (NVL(l_enc_upg_option, 'N') = 'O')
61102       )
61103    THEN
61104    NULL;
61105    --
61106    --
61107    
61108   l_ccid := AcctDerRule_34(
61109            p_application_id           => p_application_id
61110          , p_ae_header_id             => l_ae_header_id 
61111 , p_source_60 => p_source_60
61112          , x_transaction_coa_id       => l_adr_transaction_coa_id
61113          , x_accounting_coa_id        => l_adr_accounting_coa_id
61114          , x_value_type_code          => l_adr_value_type_code
61115          , p_side                     => 'NA'
61116    );
61117 
61118    xla_ae_lines_pkg.set_ccid(
61119     p_code_combination_id          => l_ccid
61120   , p_value_type_code              => l_adr_value_type_code
61121   , p_transaction_coa_id           => l_adr_transaction_coa_id
61122   , p_accounting_coa_id            => l_adr_accounting_coa_id
61123   , p_adr_code                     => 'PI_TRANSACTION_EXPENSE'
61124   , p_adr_type_code                => 'S'
61125   , p_component_type               => l_component_type
61126   , p_component_code               => l_component_code
61127   , p_component_type_code          => l_component_type_code
61128   , p_component_appl_id            => l_component_appl_id
61129   , p_amb_context_code             => l_amb_context_code
61130   , p_side                         => 'NA'
61131   );
61132 
61133 
61134    --
61135    --
61136    END IF;
61137    --
61138    -- Bug 4922099
61139    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61140           (NVL(l_enc_upg_option, 'N') = 'O')
61141         ) AND
61142         (l_bflow_method_code = 'PRIOR_ENTRY')
61143       )
61144    THEN
61145       IF
61146       --
61147       1 = 2
61148       --
61149       THEN
61150       xla_accounting_err_pkg.build_message
61151                                     (p_appli_s_name            => 'XLA'
61152                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61153                                     ,p_token_1                 => 'LINE_NUMBER'
61154                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61155                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61156                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61157                                                                              l_component_type
61158                                                                             ,l_component_code
61159                                                                             ,l_component_type_code
61160                                                                             ,l_component_appl_id
61161                                                                             ,l_amb_context_code
61162                                                                             ,l_entity_code
61163                                                                             ,l_event_class_code
61164                                                                            )
61165                                     ,p_token_3                 => 'OWNER'
61166                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61167                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61168                                                                           ,p_lookup_code    => l_component_type_code
61169                                                                          )
61170                                     ,p_token_4                 => 'PRODUCT_NAME'
61171                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61172                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61173                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61174                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61175                                     ,p_ae_header_id            =>  NULL
61176                                        );
61177 
61178         IF (C_LEVEL_ERROR>= g_log_level) THEN
61179                  trace
61180                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61181                       ,p_level    => C_LEVEL_ERROR
61182                       ,p_module   => l_log_module);
61183         END IF;
61184       END IF;
61185    END IF;
61186    --
61187    --
61188    ------------------------------------------------------------------------------------------------
61189    -- 4219869 Business Flow
61190    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61191    -- Prior Entry.  Currently, the following code is always generated.
61192    ------------------------------------------------------------------------------------------------
61193    XLA_AE_LINES_PKG.ValidateCurrentLine;
61194 
61195    ------------------------------------------------------------------------------------
61196    -- 4219869 Business Flow
61197    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61198    ------------------------------------------------------------------------------------
61199    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61200 
61201    ----------------------------------------------------------------------------------
61202    -- 4219869 Business Flow
61203    -- Update journal entry status -- Need to generate this within IF <condition>
61204    ----------------------------------------------------------------------------------
61205    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61206          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61207          ,p_balance_type_code => l_balance_type_code
61208          );
61209 
61210    -------------------------------------------------------------------------------------------
61211    -- 4262811 - Generate the Accrual Reversal lines
61212    -------------------------------------------------------------------------------------------
61213    BEGIN
61214       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61215                               (g_array_event(p_event_id).array_value_num('header_index'));
61216       IF l_acc_rev_flag IS NULL THEN
61217          l_acc_rev_flag := 'N';
61218       END IF;
61219    EXCEPTION
61220       WHEN OTHERS THEN
61221          l_acc_rev_flag := 'N';
61222    END;
61223    --
61224    IF (l_acc_rev_flag = 'Y') THEN
61225 
61226        -- 4645092  ------------------------------------------------------------------------------
61227        -- To allow MPA report to determine if it should generate report process
61228        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61229        ------------------------------------------------------------------------------------------
61230 
61231        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61232        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61233    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61234    -- call ADRs
61235    -- Bug 4922099
61236    --
61237    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61238         (NVL(l_actual_upg_option, 'N') = 'O') OR
61239         (NVL(l_enc_upg_option, 'N') = 'O')
61240       )
61241    THEN
61242    NULL;
61243    --
61244    --
61245    
61246   l_ccid := AcctDerRule_34(
61247            p_application_id           => p_application_id
61248          , p_ae_header_id             => l_ae_header_id 
61249 , p_source_60 => p_source_60
61250          , x_transaction_coa_id       => l_adr_transaction_coa_id
61251          , x_accounting_coa_id        => l_adr_accounting_coa_id
61252          , x_value_type_code          => l_adr_value_type_code
61253          , p_side                     => 'NA'
61254    );
61255 
61256    xla_ae_lines_pkg.set_ccid(
61257     p_code_combination_id          => l_ccid
61258   , p_value_type_code              => l_adr_value_type_code
61259   , p_transaction_coa_id           => l_adr_transaction_coa_id
61260   , p_accounting_coa_id            => l_adr_accounting_coa_id
61261   , p_adr_code                     => 'PI_TRANSACTION_EXPENSE'
61262   , p_adr_type_code                => 'S'
61263   , p_component_type               => l_component_type
61264   , p_component_code               => l_component_code
61265   , p_component_type_code          => l_component_type_code
61266   , p_component_appl_id            => l_component_appl_id
61267   , p_amb_context_code             => l_amb_context_code
61268   , p_side                         => 'NA'
61269   );
61270 
61271 
61272    --
61273    --
61274    END IF;
61275 
61276        --
61277        -- Update the line information that should be overwritten
61278        --
61279        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61280                                          p_header_num   => 1);
61281        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61282 
61283        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61284 
61285        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61286           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61287        END IF;
61288 
61289       --
61290       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61291       --
61292       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61293           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61294       ELSE
61295           ---------------------------------------------------------------------------------------------------
61296           -- 4262811a Switch Sign
61297           ---------------------------------------------------------------------------------------------------
61298           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61299           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61300                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61301           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61302                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61303           -- 5132302
61304           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61305                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61306 
61307       END IF;
61308 
61309       -- 4955764
61310       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61311       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61312 
61313 
61314       XLA_AE_LINES_PKG.ValidateCurrentLine;
61315       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61316 
61317       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61318                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61319                ,p_balance_type_code => l_balance_type_code);
61320 
61321    END IF;
61322 
61323    -----------------------------------------------------------------------------------------
61324    -- 4262811 Multiperiod Accounting
61325    -----------------------------------------------------------------------------------------
61326      -- No MPA option is assigned.
61327 
61328 
61329 END IF;
61330 END IF;
61331 --
61332 
61333 --
61334 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61335    trace
61336       (p_msg      => 'END of AcctLineType_132'
61337       ,p_level    => C_LEVEL_PROCEDURE
61338       ,p_module   => l_log_module);
61339 END IF;
61340 --
61341 EXCEPTION
61342   WHEN xla_exceptions_pkg.application_exception THEN
61343       RAISE;
61344   WHEN OTHERS THEN
61345        xla_exceptions_pkg.raise_message
61346            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_132');
61347 END AcctLineType_132;
61348 --
61349 
61350 ---------------------------------------
61351 --
61352 -- PRIVATE FUNCTION
61353 --         AcctLineType_133
61354 --
61355 ---------------------------------------
61356 PROCEDURE AcctLineType_133 (
61357   p_application_id        IN NUMBER
61358  ,p_event_id              IN NUMBER
61359  ,p_calculate_acctd_flag  IN VARCHAR2
61360  ,p_calculate_g_l_flag    IN VARCHAR2
61361  ,p_actual_flag           IN OUT VARCHAR2
61362  ,p_balance_type_code     OUT VARCHAR2
61363  ,p_gain_or_loss_ref      OUT VARCHAR2
61364  
61365 --TRANSACTION_ID
61366  , p_source_1            IN NUMBER
61367 --Item Concatenated Segments
61368  , p_source_2            IN VARCHAR2
61369 --Transaction Quantity
61370  , p_source_3            IN NUMBER
61371 --Transaction Unit of Measure Code
61372  , p_source_4            IN VARCHAR2
61373 --Inventory Transaction Type Description
61374  , p_source_5            IN VARCHAR2
61375 --Cost Management Default Account
61376  , p_source_11            IN NUMBER
61377 --DISTRIBUTION_IDENTIFIER
61378  , p_source_84            IN NUMBER
61379 --Distribution Type
61380  , p_source_85            IN VARCHAR2
61381  , p_source_85_meaning    IN VARCHAR2
61382 --Entered Currency Code
61383  , p_source_88            IN VARCHAR2
61384 --Entered Amount
61385  , p_source_91            IN NUMBER
61386 --Currency Conversion Date
61387  , p_source_92            IN DATE
61388 --Currency Conversion Rate
61389  , p_source_93            IN NUMBER
61390 --Currency Conversion Type
61391  , p_source_94            IN VARCHAR2
61392 --Accounted Amount
61393  , p_source_95            IN NUMBER
61394 --Accounting Line Type
61395  , p_source_97            IN NUMBER
61396 )
61397 IS
61398 
61399 l_component_type              VARCHAR2(80);
61400 l_component_code              VARCHAR2(30);
61401 l_component_type_code         VARCHAR2(1);
61402 l_component_appl_id           INTEGER;
61403 l_amb_context_code            VARCHAR2(30);
61404 l_entity_code                 VARCHAR2(30);
61405 l_event_class_code            VARCHAR2(30);
61406 l_ae_header_id                NUMBER;
61407 l_event_type_code             VARCHAR2(30);
61408 l_line_definition_code        VARCHAR2(30);
61409 l_line_definition_owner_code  VARCHAR2(1);
61410 --
61411 -- adr variables
61412 l_segment                     VARCHAR2(30);
61413 l_ccid                        NUMBER;
61414 l_adr_transaction_coa_id      NUMBER;
61415 l_adr_accounting_coa_id       NUMBER;
61416 l_adr_flexfield_segment_code  VARCHAR2(30);
61417 l_adr_flex_value_set_id       NUMBER;
61418 l_adr_value_type_code         VARCHAR2(30);
61419 l_adr_value_combination_id    NUMBER;
61420 l_adr_value_segment_code      VARCHAR2(30);
61421 
61422 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61423 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61424 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61425 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61426 
61427 -- 4262811 Variables ------------------------------------------------------------------------------------------
61428 l_entered_amt_idx             NUMBER;
61429 l_accted_amt_idx              NUMBER;
61430 l_acc_rev_flag                VARCHAR2(1);
61431 l_accrual_line_num            NUMBER;
61432 l_tmp_amt                     NUMBER;
61433 l_acc_rev_natural_side_code   VARCHAR2(1);
61434 
61435 l_num_entries                 NUMBER;
61436 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61437 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61438 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61439 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61440 l_recog_line_1                NUMBER;
61441 l_recog_line_2                NUMBER;
61442 
61443 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61444 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61445 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61446 
61447 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61448 
61449 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61450 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61451 
61452 ---------------------------------------------------------------------------------------------------------------
61453 
61454 
61455 --
61456 -- bulk performance
61457 --
61458 l_balance_type_code           VARCHAR2(1);
61459 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61460 l_log_module                  VARCHAR2(240);
61461 
61462 --
61463 -- Upgrade strategy
61464 --
61465 l_actual_upg_option           VARCHAR2(1);
61466 l_enc_upg_option           VARCHAR2(1);
61467 
61468 --
61469 BEGIN
61470 --
61471 IF g_log_enabled THEN
61472       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_133';
61473 END IF;
61474 --
61475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61476 
61477       trace
61478          (p_msg      => 'BEGIN of AcctLineType_133'
61479          ,p_level    => C_LEVEL_PROCEDURE
61480          ,p_module   => l_log_module);
61481 
61482 END IF;
61483 --
61484 l_component_type             := 'AMB_JLT';
61485 l_component_code             := 'INTERCOMPANY_ACCRUAL';
61486 l_component_type_code        := 'S';
61487 l_component_appl_id          :=  707;
61488 l_amb_context_code           := 'DEFAULT';
61489 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
61490 l_event_class_code           := 'LOG_INTERCOMPANY';
61491 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
61492 l_line_definition_owner_code := 'S';
61493 l_line_definition_code       := 'PI_LOG_IC_SHIPMENT_RCPT';
61494 --
61495 l_balance_type_code          := 'A';
61496 l_segment                     := NULL;
61497 l_ccid                        := NULL;
61498 l_adr_transaction_coa_id      := NULL;
61499 l_adr_accounting_coa_id       := NULL;
61500 l_adr_flexfield_segment_code  := NULL;
61501 l_adr_flex_value_set_id       := NULL;
61502 l_adr_value_type_code         := NULL;
61503 l_adr_value_combination_id    := NULL;
61504 l_adr_value_segment_code      := NULL;
61505 
61506 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61507 l_bflow_class_code           := '';    -- 4219869 Business Flow
61508 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61509 l_budgetary_control_flag     := 'N';
61510 
61511 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61512 l_bflow_applied_to_amt       := NULL; -- 5132302
61513 l_entered_amt_idx            := NULL;          -- 4262811
61514 l_accted_amt_idx             := NULL;          -- 4262811
61515 l_acc_rev_flag               := NULL;          -- 4262811
61516 l_accrual_line_num           := NULL;          -- 4262811
61517 l_tmp_amt                    := NULL;          -- 4262811
61518 --
61519  
61520 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61521     l_balance_type_code <> 'B' THEN
61522 IF NVL(p_source_97,9E125) =  16
61523  THEN 
61524 
61525    --
61526    XLA_AE_LINES_PKG.SetNewLine;
61527 
61528    p_balance_type_code          := l_balance_type_code;
61529    -- set the flag so later we will know whether the gain loss line needs to be created
61530    
61531    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61532      p_actual_flag :='A';
61533    END IF;
61534 
61535    --
61536    -- bulk performance
61537    --
61538    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61539                                       p_header_num   => 0); -- 4262811
61540    --
61541    -- set accounting line options
61542    --
61543    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61544            p_natural_side_code          => 'D'
61545          , p_gain_or_loss_flag          => 'N'
61546          , p_gl_transfer_mode_code      => 'S'
61547          , p_acct_entry_type_code       => 'A'
61548          , p_switch_side_flag           => 'Y'
61549          , p_merge_duplicate_code       => 'N'
61550          );
61551    --
61552    l_acc_rev_natural_side_code := 'C';  -- 4262811
61553    -- 
61554    --
61555    -- set accounting line type info
61556    --
61557    xla_ae_lines_pkg.SetAcctLineType
61558       (p_component_type             => l_component_type
61559       ,p_event_type_code            => l_event_type_code
61560       ,p_line_definition_owner_code => l_line_definition_owner_code
61561       ,p_line_definition_code       => l_line_definition_code
61562       ,p_accounting_line_code       => l_component_code
61563       ,p_accounting_line_type_code  => l_component_type_code
61564       ,p_accounting_line_appl_id    => l_component_appl_id
61565       ,p_amb_context_code           => l_amb_context_code
61566       ,p_entity_code                => l_entity_code
61567       ,p_event_class_code           => l_event_class_code);
61568    --
61569    -- set accounting class
61570    --
61571    xla_ae_lines_pkg.SetAcctClass(
61572            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
61573          , p_ae_header_id           => l_ae_header_id
61574          );
61575 
61576    --
61577    -- set rounding class
61578    --
61579    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61580                       'INTERCOMPANY_ACCRUAL';
61581 
61582    --
61583    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61584    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61585    --
61586    -- bulk performance
61587    --
61588    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61589 
61590    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61591       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61592 
61593    -- 4955764
61594    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61595       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61596 
61597    -- 4458381 Public Sector Enh
61598    
61599    --
61600    -- set accounting attributes for the line type
61601    --
61602    l_entered_amt_idx := 3;
61603    l_accted_amt_idx  := 8;
61604    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61605    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61606    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
61607    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61608    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
61609    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61610    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
61611    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61612    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
61613    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61614    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
61615    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61616    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
61617    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61618    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
61619    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61620    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
61621 
61622    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61623    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61624 
61625    ---------------------------------------------------------------------------------------------------------------
61626    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61627    ---------------------------------------------------------------------------------------------------------------
61628    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61629 
61630    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61631    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61632 
61633    IF xla_accounting_cache_pkg.GetValueChar
61634          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61635          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61636    AND l_bflow_method_code = 'PRIOR_ENTRY'
61637 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61638    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61639          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61640        )
61641    THEN
61642          xla_ae_lines_pkg.BflowUpgEntry
61643            (p_business_method_code    => l_bflow_method_code
61644            ,p_business_class_code     => l_bflow_class_code
61645            ,p_balance_type            => l_balance_type_code);
61646    ELSE
61647       NULL;
61648 -- No business flow processing for business flow method of NONE.
61649    END IF;
61650 
61651    --
61652    -- call analytical criteria
61653    --
61654    
61655    --
61656    -- call description
61657    --
61658    
61659 xla_ae_lines_pkg.SetLineDescription(
61660    p_ae_header_id => l_ae_header_id
61661   ,p_description  => Description_1 (
61662      p_application_id         => p_application_id
61663    , p_ae_header_id           => l_ae_header_id 
61664 , p_source_1 => p_source_1
61665 , p_source_2 => p_source_2
61666 , p_source_3 => p_source_3
61667 , p_source_4 => p_source_4
61668 , p_source_5 => p_source_5
61669    )
61670 );
61671 
61672 
61673    --
61674    -- call ADRs
61675    -- Bug 4922099
61676    --
61677    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61678         (NVL(l_actual_upg_option, 'N') = 'O') OR
61679         (NVL(l_enc_upg_option, 'N') = 'O')
61680       )
61681    THEN
61682    NULL;
61683    --
61684    --
61685    
61686   l_ccid := AcctDerRule_6(
61687            p_application_id           => p_application_id
61688          , p_ae_header_id             => l_ae_header_id 
61689 , p_source_11 => p_source_11
61690          , x_transaction_coa_id       => l_adr_transaction_coa_id
61691          , x_accounting_coa_id        => l_adr_accounting_coa_id
61692          , x_value_type_code          => l_adr_value_type_code
61693          , p_side                     => 'NA'
61694    );
61695 
61696    xla_ae_lines_pkg.set_ccid(
61697     p_code_combination_id          => l_ccid
61698   , p_value_type_code              => l_adr_value_type_code
61699   , p_transaction_coa_id           => l_adr_transaction_coa_id
61700   , p_accounting_coa_id            => l_adr_accounting_coa_id
61701   , p_adr_code                     => 'CST_DEFAULT'
61702   , p_adr_type_code                => 'S'
61703   , p_component_type               => l_component_type
61704   , p_component_code               => l_component_code
61705   , p_component_type_code          => l_component_type_code
61706   , p_component_appl_id            => l_component_appl_id
61707   , p_amb_context_code             => l_amb_context_code
61708   , p_side                         => 'NA'
61709   );
61710 
61711 
61712    --
61713    --
61714    END IF;
61715    --
61716    -- Bug 4922099
61717    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61718           (NVL(l_enc_upg_option, 'N') = 'O')
61719         ) AND
61720         (l_bflow_method_code = 'PRIOR_ENTRY')
61721       )
61722    THEN
61723       IF
61724       --
61725       1 = 2
61726       --
61727       THEN
61728       xla_accounting_err_pkg.build_message
61729                                     (p_appli_s_name            => 'XLA'
61730                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61731                                     ,p_token_1                 => 'LINE_NUMBER'
61732                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61733                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61734                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61735                                                                              l_component_type
61736                                                                             ,l_component_code
61737                                                                             ,l_component_type_code
61738                                                                             ,l_component_appl_id
61739                                                                             ,l_amb_context_code
61740                                                                             ,l_entity_code
61741                                                                             ,l_event_class_code
61742                                                                            )
61743                                     ,p_token_3                 => 'OWNER'
61744                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61745                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61746                                                                           ,p_lookup_code    => l_component_type_code
61747                                                                          )
61748                                     ,p_token_4                 => 'PRODUCT_NAME'
61749                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61750                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61751                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61752                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61753                                     ,p_ae_header_id            =>  NULL
61754                                        );
61755 
61756         IF (C_LEVEL_ERROR>= g_log_level) THEN
61757                  trace
61758                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61759                       ,p_level    => C_LEVEL_ERROR
61760                       ,p_module   => l_log_module);
61761         END IF;
61762       END IF;
61763    END IF;
61764    --
61765    --
61766    ------------------------------------------------------------------------------------------------
61767    -- 4219869 Business Flow
61768    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61769    -- Prior Entry.  Currently, the following code is always generated.
61770    ------------------------------------------------------------------------------------------------
61771    XLA_AE_LINES_PKG.ValidateCurrentLine;
61772 
61773    ------------------------------------------------------------------------------------
61774    -- 4219869 Business Flow
61775    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61776    ------------------------------------------------------------------------------------
61777    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61778 
61779    ----------------------------------------------------------------------------------
61780    -- 4219869 Business Flow
61781    -- Update journal entry status -- Need to generate this within IF <condition>
61782    ----------------------------------------------------------------------------------
61783    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61784          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61785          ,p_balance_type_code => l_balance_type_code
61786          );
61787 
61788    -------------------------------------------------------------------------------------------
61789    -- 4262811 - Generate the Accrual Reversal lines
61790    -------------------------------------------------------------------------------------------
61791    BEGIN
61792       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61793                               (g_array_event(p_event_id).array_value_num('header_index'));
61794       IF l_acc_rev_flag IS NULL THEN
61795          l_acc_rev_flag := 'N';
61796       END IF;
61797    EXCEPTION
61798       WHEN OTHERS THEN
61799          l_acc_rev_flag := 'N';
61800    END;
61801    --
61802    IF (l_acc_rev_flag = 'Y') THEN
61803 
61804        -- 4645092  ------------------------------------------------------------------------------
61805        -- To allow MPA report to determine if it should generate report process
61806        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61807        ------------------------------------------------------------------------------------------
61808 
61809        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61810        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61811    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61812    -- call ADRs
61813    -- Bug 4922099
61814    --
61815    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61816         (NVL(l_actual_upg_option, 'N') = 'O') OR
61817         (NVL(l_enc_upg_option, 'N') = 'O')
61818       )
61819    THEN
61820    NULL;
61821    --
61822    --
61823    
61824   l_ccid := AcctDerRule_6(
61825            p_application_id           => p_application_id
61826          , p_ae_header_id             => l_ae_header_id 
61827 , p_source_11 => p_source_11
61828          , x_transaction_coa_id       => l_adr_transaction_coa_id
61829          , x_accounting_coa_id        => l_adr_accounting_coa_id
61830          , x_value_type_code          => l_adr_value_type_code
61831          , p_side                     => 'NA'
61832    );
61833 
61834    xla_ae_lines_pkg.set_ccid(
61835     p_code_combination_id          => l_ccid
61836   , p_value_type_code              => l_adr_value_type_code
61837   , p_transaction_coa_id           => l_adr_transaction_coa_id
61838   , p_accounting_coa_id            => l_adr_accounting_coa_id
61839   , p_adr_code                     => 'CST_DEFAULT'
61840   , p_adr_type_code                => 'S'
61841   , p_component_type               => l_component_type
61842   , p_component_code               => l_component_code
61843   , p_component_type_code          => l_component_type_code
61844   , p_component_appl_id            => l_component_appl_id
61845   , p_amb_context_code             => l_amb_context_code
61846   , p_side                         => 'NA'
61847   );
61848 
61849 
61850    --
61851    --
61852    END IF;
61853 
61854        --
61855        -- Update the line information that should be overwritten
61856        --
61857        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61858                                          p_header_num   => 1);
61859        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61860 
61861        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61862 
61863        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61864           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61865        END IF;
61866 
61867       --
61868       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61869       --
61870       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61871           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61872       ELSE
61873           ---------------------------------------------------------------------------------------------------
61874           -- 4262811a Switch Sign
61875           ---------------------------------------------------------------------------------------------------
61876           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61877           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61878                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61879           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61880                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61881           -- 5132302
61882           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61883                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61884 
61885       END IF;
61886 
61887       -- 4955764
61888       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61889       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61890 
61891 
61892       XLA_AE_LINES_PKG.ValidateCurrentLine;
61893       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61894 
61895       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61896                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61897                ,p_balance_type_code => l_balance_type_code);
61898 
61899    END IF;
61900 
61901    -----------------------------------------------------------------------------------------
61902    -- 4262811 Multiperiod Accounting
61903    -----------------------------------------------------------------------------------------
61904      -- No MPA option is assigned.
61905 
61906 
61907 END IF;
61908 END IF;
61909 --
61910 
61911 --
61912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61913    trace
61914       (p_msg      => 'END of AcctLineType_133'
61915       ,p_level    => C_LEVEL_PROCEDURE
61916       ,p_module   => l_log_module);
61917 END IF;
61918 --
61919 EXCEPTION
61920   WHEN xla_exceptions_pkg.application_exception THEN
61921       RAISE;
61922   WHEN OTHERS THEN
61923        xla_exceptions_pkg.raise_message
61924            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_133');
61925 END AcctLineType_133;
61926 --
61927 
61928 ---------------------------------------
61929 --
61930 -- PRIVATE FUNCTION
61931 --         AcctLineType_134
61932 --
61933 ---------------------------------------
61934 PROCEDURE AcctLineType_134 (
61935   p_application_id        IN NUMBER
61936  ,p_event_id              IN NUMBER
61937  ,p_calculate_acctd_flag  IN VARCHAR2
61938  ,p_calculate_g_l_flag    IN VARCHAR2
61939  ,p_actual_flag           IN OUT VARCHAR2
61940  ,p_balance_type_code     OUT VARCHAR2
61941  ,p_gain_or_loss_ref      OUT VARCHAR2
61942  
61943 --TRANSACTION_ID
61944  , p_source_1            IN NUMBER
61945 --Item Concatenated Segments
61946  , p_source_2            IN VARCHAR2
61947 --Transaction Quantity
61948  , p_source_3            IN NUMBER
61949 --Transaction Unit of Measure Code
61950  , p_source_4            IN VARCHAR2
61951 --Inventory Transaction Type Description
61952  , p_source_5            IN VARCHAR2
61953 --Cost Management Default Account
61954  , p_source_11            IN NUMBER
61955 --Applied to Application ID
61956  , p_source_79            IN NUMBER
61957 --Applied to Distribution Link Type
61958  , p_source_80            IN VARCHAR2
61959 --Applied to Entity Code
61960  , p_source_81            IN VARCHAR2
61961 --DISTRIBUTION_IDENTIFIER
61962  , p_source_84            IN NUMBER
61963 --Distribution Type
61964  , p_source_85            IN VARCHAR2
61965  , p_source_85_meaning    IN VARCHAR2
61966 --Encumbrance Reversal Amount Entered
61967  , p_source_87            IN NUMBER
61968 --Entered Currency Code
61969  , p_source_88            IN VARCHAR2
61970 --Transaction Encumbrance Reversal Amount
61971  , p_source_89            IN NUMBER
61972 --Entered Amount
61973  , p_source_91            IN NUMBER
61974 --Currency Conversion Date
61975  , p_source_92            IN DATE
61976 --Currency Conversion Rate
61977  , p_source_93            IN NUMBER
61978 --Currency Conversion Type
61979  , p_source_94            IN VARCHAR2
61980 --Accounted Amount
61981  , p_source_95            IN NUMBER
61982 --Accounting Line Type
61983  , p_source_97            IN NUMBER
61984 --Costing Encumbrance Upgrade Option
61985  , p_source_100            IN VARCHAR2
61986 --TXN_PO_DISTRIBUTION_ID
61987  , p_source_101            IN NUMBER
61988 --TXN_PO_HEADER_ID
61989  , p_source_102            IN NUMBER
61990 --Requisition Budget Account
61991  , p_source_103            IN NUMBER
61992 --Requisition Encumbrance Type Identifier
61993  , p_source_104            IN NUMBER
61994 )
61995 IS
61996 
61997 l_component_type              VARCHAR2(80);
61998 l_component_code              VARCHAR2(30);
61999 l_component_type_code         VARCHAR2(1);
62000 l_component_appl_id           INTEGER;
62001 l_amb_context_code            VARCHAR2(30);
62002 l_entity_code                 VARCHAR2(30);
62003 l_event_class_code            VARCHAR2(30);
62004 l_ae_header_id                NUMBER;
62005 l_event_type_code             VARCHAR2(30);
62006 l_line_definition_code        VARCHAR2(30);
62007 l_line_definition_owner_code  VARCHAR2(1);
62008 --
62009 -- adr variables
62010 l_segment                     VARCHAR2(30);
62011 l_ccid                        NUMBER;
62012 l_adr_transaction_coa_id      NUMBER;
62013 l_adr_accounting_coa_id       NUMBER;
62014 l_adr_flexfield_segment_code  VARCHAR2(30);
62015 l_adr_flex_value_set_id       NUMBER;
62016 l_adr_value_type_code         VARCHAR2(30);
62017 l_adr_value_combination_id    NUMBER;
62018 l_adr_value_segment_code      VARCHAR2(30);
62019 
62020 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62021 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62022 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62023 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62024 
62025 -- 4262811 Variables ------------------------------------------------------------------------------------------
62026 l_entered_amt_idx             NUMBER;
62027 l_accted_amt_idx              NUMBER;
62028 l_acc_rev_flag                VARCHAR2(1);
62029 l_accrual_line_num            NUMBER;
62030 l_tmp_amt                     NUMBER;
62031 l_acc_rev_natural_side_code   VARCHAR2(1);
62032 
62033 l_num_entries                 NUMBER;
62034 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62035 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62036 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62037 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62038 l_recog_line_1                NUMBER;
62039 l_recog_line_2                NUMBER;
62040 
62041 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62042 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62043 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62044 
62045 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62046 
62047 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62048 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62049 
62050 ---------------------------------------------------------------------------------------------------------------
62051 
62052 
62053 --
62054 -- bulk performance
62055 --
62056 l_balance_type_code           VARCHAR2(1);
62057 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62058 l_log_module                  VARCHAR2(240);
62059 
62060 --
62061 -- Upgrade strategy
62062 --
62063 l_actual_upg_option           VARCHAR2(1);
62064 l_enc_upg_option           VARCHAR2(1);
62065 
62066 --
62067 BEGIN
62068 --
62069 IF g_log_enabled THEN
62070       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_134';
62071 END IF;
62072 --
62073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62074 
62075       trace
62076          (p_msg      => 'BEGIN of AcctLineType_134'
62077          ,p_level    => C_LEVEL_PROCEDURE
62078          ,p_module   => l_log_module);
62079 
62080 END IF;
62081 --
62082 l_component_type             := 'AMB_JLT';
62083 l_component_code             := 'INTERCOMPANY_ACCRUAL';
62084 l_component_type_code        := 'S';
62085 l_component_appl_id          :=  707;
62086 l_amb_context_code           := 'DEFAULT';
62087 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
62088 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
62089 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
62090 l_line_definition_owner_code := 'S';
62091 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
62092 --
62093 l_balance_type_code          := 'A';
62094 l_segment                     := NULL;
62095 l_ccid                        := NULL;
62096 l_adr_transaction_coa_id      := NULL;
62097 l_adr_accounting_coa_id       := NULL;
62098 l_adr_flexfield_segment_code  := NULL;
62099 l_adr_flex_value_set_id       := NULL;
62100 l_adr_value_type_code         := NULL;
62101 l_adr_value_combination_id    := NULL;
62102 l_adr_value_segment_code      := NULL;
62103 
62104 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62105 l_bflow_class_code           := '';    -- 4219869 Business Flow
62106 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62107 l_budgetary_control_flag     := 'N';
62108 
62109 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62110 l_bflow_applied_to_amt       := NULL; -- 5132302
62111 l_entered_amt_idx            := NULL;          -- 4262811
62112 l_accted_amt_idx             := NULL;          -- 4262811
62113 l_acc_rev_flag               := NULL;          -- 4262811
62114 l_accrual_line_num           := NULL;          -- 4262811
62115 l_tmp_amt                    := NULL;          -- 4262811
62116 --
62117  
62118 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62119     l_balance_type_code <> 'B' THEN
62120 IF NVL(p_source_97,9E125) =  2 AND 
62121 p_source_95 <  0
62122  THEN 
62123 
62124    --
62125    XLA_AE_LINES_PKG.SetNewLine;
62126 
62127    p_balance_type_code          := l_balance_type_code;
62128    -- set the flag so later we will know whether the gain loss line needs to be created
62129    
62130    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62131      p_actual_flag :='A';
62132    END IF;
62133 
62134    --
62135    -- bulk performance
62136    --
62137    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62138                                       p_header_num   => 0); -- 4262811
62139    --
62140    -- set accounting line options
62141    --
62142    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62143            p_natural_side_code          => 'D'
62144          , p_gain_or_loss_flag          => 'N'
62145          , p_gl_transfer_mode_code      => 'S'
62146          , p_acct_entry_type_code       => 'A'
62147          , p_switch_side_flag           => 'Y'
62148          , p_merge_duplicate_code       => 'N'
62149          );
62150    --
62151    l_acc_rev_natural_side_code := 'C';  -- 4262811
62152    -- 
62153    --
62154    -- set accounting line type info
62155    --
62156    xla_ae_lines_pkg.SetAcctLineType
62157       (p_component_type             => l_component_type
62158       ,p_event_type_code            => l_event_type_code
62159       ,p_line_definition_owner_code => l_line_definition_owner_code
62160       ,p_line_definition_code       => l_line_definition_code
62161       ,p_accounting_line_code       => l_component_code
62162       ,p_accounting_line_type_code  => l_component_type_code
62163       ,p_accounting_line_appl_id    => l_component_appl_id
62164       ,p_amb_context_code           => l_amb_context_code
62165       ,p_entity_code                => l_entity_code
62166       ,p_event_class_code           => l_event_class_code);
62167    --
62168    -- set accounting class
62169    --
62170    xla_ae_lines_pkg.SetAcctClass(
62171            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
62172          , p_ae_header_id           => l_ae_header_id
62173          );
62174 
62175    --
62176    -- set rounding class
62177    --
62178    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62179                       'INTERCOMPANY_ACCRUAL';
62180 
62181    --
62182    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62183    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62184    --
62185    -- bulk performance
62186    --
62187    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62188 
62189    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62190       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62191 
62192    -- 4955764
62193    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62194       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62195 
62196    -- 4458381 Public Sector Enh
62197    
62198    --
62199    -- set accounting attributes for the line type
62200    --
62201    l_entered_amt_idx := 17;
62202    l_accted_amt_idx  := 22;
62203    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62204    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
62205    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
62206    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
62207    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
62208    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
62209    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
62210    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
62211    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
62212    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
62213    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
62214    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
62215    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
62216    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
62217    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
62218    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
62219    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
62220    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
62221    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
62222    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
62223    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
62224    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
62225    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
62226    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
62227    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
62228    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
62229    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
62230    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
62231    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
62232    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
62233    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
62234    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
62235    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
62236    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
62237    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
62238    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
62239    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
62240    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
62241    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
62242    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
62243    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
62244    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
62245    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
62246    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
62247    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
62248    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
62249    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
62250    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
62251    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
62252 
62253    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62254    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62255 
62256    ---------------------------------------------------------------------------------------------------------------
62257    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62258    ---------------------------------------------------------------------------------------------------------------
62259    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62260 
62261    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62262    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62263 
62264    IF xla_accounting_cache_pkg.GetValueChar
62265          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62266          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62267    AND l_bflow_method_code = 'PRIOR_ENTRY'
62268 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62269    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62270          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62271        )
62272    THEN
62273          xla_ae_lines_pkg.BflowUpgEntry
62274            (p_business_method_code    => l_bflow_method_code
62275            ,p_business_class_code     => l_bflow_class_code
62276            ,p_balance_type            => l_balance_type_code);
62277    ELSE
62278       NULL;
62279 -- No business flow processing for business flow method of NONE.
62280    END IF;
62281 
62282    --
62283    -- call analytical criteria
62284    --
62285    
62286    --
62287    -- call description
62288    --
62289    
62290 xla_ae_lines_pkg.SetLineDescription(
62291    p_ae_header_id => l_ae_header_id
62292   ,p_description  => Description_1 (
62293      p_application_id         => p_application_id
62294    , p_ae_header_id           => l_ae_header_id 
62295 , p_source_1 => p_source_1
62296 , p_source_2 => p_source_2
62297 , p_source_3 => p_source_3
62298 , p_source_4 => p_source_4
62299 , p_source_5 => p_source_5
62300    )
62301 );
62302 
62303 
62304    --
62305    -- call ADRs
62306    -- Bug 4922099
62307    --
62308    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62309         (NVL(l_actual_upg_option, 'N') = 'O') OR
62310         (NVL(l_enc_upg_option, 'N') = 'O')
62311       )
62312    THEN
62313    NULL;
62314    --
62315    --
62316    
62317   l_ccid := AcctDerRule_6(
62318            p_application_id           => p_application_id
62319          , p_ae_header_id             => l_ae_header_id 
62320 , p_source_11 => p_source_11
62321          , x_transaction_coa_id       => l_adr_transaction_coa_id
62322          , x_accounting_coa_id        => l_adr_accounting_coa_id
62323          , x_value_type_code          => l_adr_value_type_code
62324          , p_side                     => 'NA'
62325    );
62326 
62327    xla_ae_lines_pkg.set_ccid(
62328     p_code_combination_id          => l_ccid
62329   , p_value_type_code              => l_adr_value_type_code
62330   , p_transaction_coa_id           => l_adr_transaction_coa_id
62331   , p_accounting_coa_id            => l_adr_accounting_coa_id
62332   , p_adr_code                     => 'CST_DEFAULT'
62333   , p_adr_type_code                => 'S'
62334   , p_component_type               => l_component_type
62335   , p_component_code               => l_component_code
62336   , p_component_type_code          => l_component_type_code
62337   , p_component_appl_id            => l_component_appl_id
62338   , p_amb_context_code             => l_amb_context_code
62339   , p_side                         => 'NA'
62340   );
62341 
62342 
62343    --
62344    --
62345    END IF;
62346    --
62347    -- Bug 4922099
62348    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62349           (NVL(l_enc_upg_option, 'N') = 'O')
62350         ) AND
62351         (l_bflow_method_code = 'PRIOR_ENTRY')
62352       )
62353    THEN
62354       IF
62355       --
62356       1 = 2
62357       --
62358       THEN
62359       xla_accounting_err_pkg.build_message
62360                                     (p_appli_s_name            => 'XLA'
62361                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62362                                     ,p_token_1                 => 'LINE_NUMBER'
62363                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62364                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62365                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62366                                                                              l_component_type
62367                                                                             ,l_component_code
62368                                                                             ,l_component_type_code
62369                                                                             ,l_component_appl_id
62370                                                                             ,l_amb_context_code
62371                                                                             ,l_entity_code
62372                                                                             ,l_event_class_code
62373                                                                            )
62374                                     ,p_token_3                 => 'OWNER'
62375                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62376                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62377                                                                           ,p_lookup_code    => l_component_type_code
62378                                                                          )
62379                                     ,p_token_4                 => 'PRODUCT_NAME'
62380                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62381                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62382                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62383                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62384                                     ,p_ae_header_id            =>  NULL
62385                                        );
62386 
62387         IF (C_LEVEL_ERROR>= g_log_level) THEN
62388                  trace
62389                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62390                       ,p_level    => C_LEVEL_ERROR
62391                       ,p_module   => l_log_module);
62392         END IF;
62393       END IF;
62394    END IF;
62395    --
62396    --
62397    ------------------------------------------------------------------------------------------------
62398    -- 4219869 Business Flow
62399    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62400    -- Prior Entry.  Currently, the following code is always generated.
62401    ------------------------------------------------------------------------------------------------
62402    XLA_AE_LINES_PKG.ValidateCurrentLine;
62403 
62404    ------------------------------------------------------------------------------------
62405    -- 4219869 Business Flow
62406    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62407    ------------------------------------------------------------------------------------
62408    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62409 
62410    ----------------------------------------------------------------------------------
62411    -- 4219869 Business Flow
62412    -- Update journal entry status -- Need to generate this within IF <condition>
62413    ----------------------------------------------------------------------------------
62414    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62415          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62416          ,p_balance_type_code => l_balance_type_code
62417          );
62418 
62419    -------------------------------------------------------------------------------------------
62420    -- 4262811 - Generate the Accrual Reversal lines
62421    -------------------------------------------------------------------------------------------
62422    BEGIN
62423       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62424                               (g_array_event(p_event_id).array_value_num('header_index'));
62425       IF l_acc_rev_flag IS NULL THEN
62426          l_acc_rev_flag := 'N';
62427       END IF;
62428    EXCEPTION
62429       WHEN OTHERS THEN
62430          l_acc_rev_flag := 'N';
62431    END;
62432    --
62433    IF (l_acc_rev_flag = 'Y') THEN
62434 
62435        -- 4645092  ------------------------------------------------------------------------------
62436        -- To allow MPA report to determine if it should generate report process
62437        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62438        ------------------------------------------------------------------------------------------
62439 
62440        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62441        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62442    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62443    -- call ADRs
62444    -- Bug 4922099
62445    --
62446    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62447         (NVL(l_actual_upg_option, 'N') = 'O') OR
62448         (NVL(l_enc_upg_option, 'N') = 'O')
62449       )
62450    THEN
62451    NULL;
62452    --
62453    --
62454    
62455   l_ccid := AcctDerRule_6(
62456            p_application_id           => p_application_id
62457          , p_ae_header_id             => l_ae_header_id 
62458 , p_source_11 => p_source_11
62459          , x_transaction_coa_id       => l_adr_transaction_coa_id
62460          , x_accounting_coa_id        => l_adr_accounting_coa_id
62461          , x_value_type_code          => l_adr_value_type_code
62462          , p_side                     => 'NA'
62463    );
62464 
62465    xla_ae_lines_pkg.set_ccid(
62466     p_code_combination_id          => l_ccid
62467   , p_value_type_code              => l_adr_value_type_code
62468   , p_transaction_coa_id           => l_adr_transaction_coa_id
62469   , p_accounting_coa_id            => l_adr_accounting_coa_id
62470   , p_adr_code                     => 'CST_DEFAULT'
62471   , p_adr_type_code                => 'S'
62472   , p_component_type               => l_component_type
62473   , p_component_code               => l_component_code
62474   , p_component_type_code          => l_component_type_code
62475   , p_component_appl_id            => l_component_appl_id
62476   , p_amb_context_code             => l_amb_context_code
62477   , p_side                         => 'NA'
62478   );
62479 
62480 
62481    --
62482    --
62483    END IF;
62484 
62485        --
62486        -- Update the line information that should be overwritten
62487        --
62488        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62489                                          p_header_num   => 1);
62490        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62491 
62492        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62493 
62494        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62495           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62496        END IF;
62497 
62498       --
62499       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62500       --
62501       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62502           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62503       ELSE
62504           ---------------------------------------------------------------------------------------------------
62505           -- 4262811a Switch Sign
62506           ---------------------------------------------------------------------------------------------------
62507           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62508           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62509                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62510           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62511                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62512           -- 5132302
62513           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62514                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62515 
62516       END IF;
62517 
62518       -- 4955764
62519       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62520       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62521 
62522 
62523       XLA_AE_LINES_PKG.ValidateCurrentLine;
62524       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62525 
62526       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62527                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62528                ,p_balance_type_code => l_balance_type_code);
62529 
62530    END IF;
62531 
62532    -----------------------------------------------------------------------------------------
62533    -- 4262811 Multiperiod Accounting
62534    -----------------------------------------------------------------------------------------
62535      -- No MPA option is assigned.
62536 
62537 
62538 END IF;
62539 END IF;
62540 --
62541 
62542 --
62543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62544    trace
62545       (p_msg      => 'END of AcctLineType_134'
62546       ,p_level    => C_LEVEL_PROCEDURE
62547       ,p_module   => l_log_module);
62548 END IF;
62549 --
62550 EXCEPTION
62551   WHEN xla_exceptions_pkg.application_exception THEN
62552       RAISE;
62553   WHEN OTHERS THEN
62554        xla_exceptions_pkg.raise_message
62555            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_134');
62556 END AcctLineType_134;
62557 --
62558 
62559 ---------------------------------------
62560 --
62561 -- PRIVATE FUNCTION
62562 --         AcctLineType_135
62563 --
62564 ---------------------------------------
62565 PROCEDURE AcctLineType_135 (
62566   p_application_id        IN NUMBER
62567  ,p_event_id              IN NUMBER
62568  ,p_calculate_acctd_flag  IN VARCHAR2
62569  ,p_calculate_g_l_flag    IN VARCHAR2
62570  ,p_actual_flag           IN OUT VARCHAR2
62571  ,p_balance_type_code     OUT VARCHAR2
62572  ,p_gain_or_loss_ref      OUT VARCHAR2
62573  
62574 --Cost Management Default Account
62575  , p_source_11            IN NUMBER
62576 --Receiving Accounting Line Type
62577  , p_source_78            IN VARCHAR2
62578 --DISTRIBUTION_IDENTIFIER
62579  , p_source_84            IN NUMBER
62580 --Distribution Type
62581  , p_source_85            IN VARCHAR2
62582  , p_source_85_meaning    IN VARCHAR2
62583 --Entered Currency Code
62584  , p_source_88            IN VARCHAR2
62585 --Entered Amount
62586  , p_source_91            IN NUMBER
62587 --Currency Conversion Date
62588  , p_source_92            IN DATE
62589 --Currency Conversion Rate
62590  , p_source_93            IN NUMBER
62591 --Currency Conversion Type
62592  , p_source_94            IN VARCHAR2
62593 --Accounted Amount
62594  , p_source_95            IN NUMBER
62595 )
62596 IS
62597 
62598 l_component_type              VARCHAR2(80);
62599 l_component_code              VARCHAR2(30);
62600 l_component_type_code         VARCHAR2(1);
62601 l_component_appl_id           INTEGER;
62602 l_amb_context_code            VARCHAR2(30);
62603 l_entity_code                 VARCHAR2(30);
62604 l_event_class_code            VARCHAR2(30);
62605 l_ae_header_id                NUMBER;
62606 l_event_type_code             VARCHAR2(30);
62607 l_line_definition_code        VARCHAR2(30);
62608 l_line_definition_owner_code  VARCHAR2(1);
62609 --
62610 -- adr variables
62611 l_segment                     VARCHAR2(30);
62612 l_ccid                        NUMBER;
62613 l_adr_transaction_coa_id      NUMBER;
62614 l_adr_accounting_coa_id       NUMBER;
62615 l_adr_flexfield_segment_code  VARCHAR2(30);
62616 l_adr_flex_value_set_id       NUMBER;
62617 l_adr_value_type_code         VARCHAR2(30);
62618 l_adr_value_combination_id    NUMBER;
62619 l_adr_value_segment_code      VARCHAR2(30);
62620 
62621 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62622 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62623 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62624 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62625 
62626 -- 4262811 Variables ------------------------------------------------------------------------------------------
62627 l_entered_amt_idx             NUMBER;
62628 l_accted_amt_idx              NUMBER;
62629 l_acc_rev_flag                VARCHAR2(1);
62630 l_accrual_line_num            NUMBER;
62631 l_tmp_amt                     NUMBER;
62632 l_acc_rev_natural_side_code   VARCHAR2(1);
62633 
62634 l_num_entries                 NUMBER;
62635 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62636 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62637 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62638 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62639 l_recog_line_1                NUMBER;
62640 l_recog_line_2                NUMBER;
62641 
62642 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62643 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62644 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62645 
62646 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62647 
62648 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62649 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62650 
62651 ---------------------------------------------------------------------------------------------------------------
62652 
62653 
62654 --
62655 -- bulk performance
62656 --
62657 l_balance_type_code           VARCHAR2(1);
62658 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62659 l_log_module                  VARCHAR2(240);
62660 
62661 --
62662 -- Upgrade strategy
62663 --
62664 l_actual_upg_option           VARCHAR2(1);
62665 l_enc_upg_option           VARCHAR2(1);
62666 
62667 --
62668 BEGIN
62669 --
62670 IF g_log_enabled THEN
62671       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_135';
62672 END IF;
62673 --
62674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62675 
62676       trace
62677          (p_msg      => 'BEGIN of AcctLineType_135'
62678          ,p_level    => C_LEVEL_PROCEDURE
62679          ,p_module   => l_log_module);
62680 
62681 END IF;
62682 --
62683 l_component_type             := 'AMB_JLT';
62684 l_component_code             := 'INTERCOMPANY_ACCRUAL';
62685 l_component_type_code        := 'S';
62686 l_component_appl_id          :=  707;
62687 l_amb_context_code           := 'DEFAULT';
62688 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
62689 l_event_class_code           := 'RCPT_REC_INSP';
62690 l_event_type_code            := 'RCPT_REC_INSP_ALL';
62691 l_line_definition_owner_code := 'S';
62692 l_line_definition_code       := 'RCPT_REC_INSP';
62693 --
62694 l_balance_type_code          := 'A';
62695 l_segment                     := NULL;
62696 l_ccid                        := NULL;
62697 l_adr_transaction_coa_id      := NULL;
62698 l_adr_accounting_coa_id       := NULL;
62699 l_adr_flexfield_segment_code  := NULL;
62700 l_adr_flex_value_set_id       := NULL;
62701 l_adr_value_type_code         := NULL;
62702 l_adr_value_combination_id    := NULL;
62703 l_adr_value_segment_code      := NULL;
62704 
62705 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62706 l_bflow_class_code           := '';    -- 4219869 Business Flow
62707 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62708 l_budgetary_control_flag     := 'N';
62709 
62710 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62711 l_bflow_applied_to_amt       := NULL; -- 5132302
62712 l_entered_amt_idx            := NULL;          -- 4262811
62713 l_accted_amt_idx             := NULL;          -- 4262811
62714 l_acc_rev_flag               := NULL;          -- 4262811
62715 l_accrual_line_num           := NULL;          -- 4262811
62716 l_tmp_amt                    := NULL;          -- 4262811
62717 --
62718  
62719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62720     l_balance_type_code <> 'B' THEN
62721 IF NVL(p_source_78,'
62722 ') =  'IC Accrual'
62723  THEN 
62724 
62725    --
62726    XLA_AE_LINES_PKG.SetNewLine;
62727 
62728    p_balance_type_code          := l_balance_type_code;
62729    -- set the flag so later we will know whether the gain loss line needs to be created
62730    
62731    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62732      p_actual_flag :='A';
62733    END IF;
62734 
62735    --
62736    -- bulk performance
62737    --
62738    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62739                                       p_header_num   => 0); -- 4262811
62740    --
62741    -- set accounting line options
62742    --
62743    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62744            p_natural_side_code          => 'D'
62745          , p_gain_or_loss_flag          => 'N'
62746          , p_gl_transfer_mode_code      => 'S'
62747          , p_acct_entry_type_code       => 'A'
62748          , p_switch_side_flag           => 'Y'
62749          , p_merge_duplicate_code       => 'N'
62750          );
62751    --
62752    l_acc_rev_natural_side_code := 'C';  -- 4262811
62753    -- 
62754    --
62755    -- set accounting line type info
62756    --
62757    xla_ae_lines_pkg.SetAcctLineType
62758       (p_component_type             => l_component_type
62759       ,p_event_type_code            => l_event_type_code
62760       ,p_line_definition_owner_code => l_line_definition_owner_code
62761       ,p_line_definition_code       => l_line_definition_code
62762       ,p_accounting_line_code       => l_component_code
62763       ,p_accounting_line_type_code  => l_component_type_code
62764       ,p_accounting_line_appl_id    => l_component_appl_id
62765       ,p_amb_context_code           => l_amb_context_code
62766       ,p_entity_code                => l_entity_code
62767       ,p_event_class_code           => l_event_class_code);
62768    --
62769    -- set accounting class
62770    --
62771    xla_ae_lines_pkg.SetAcctClass(
62772            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
62773          , p_ae_header_id           => l_ae_header_id
62774          );
62775 
62776    --
62777    -- set rounding class
62778    --
62779    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62780                       'INTERCOMPANY_ACCRUAL';
62781 
62782    --
62783    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62784    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62785    --
62786    -- bulk performance
62787    --
62788    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62789 
62790    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62791       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62792 
62793    -- 4955764
62794    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62795       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62796 
62797    -- 4458381 Public Sector Enh
62798    
62799    --
62800    -- set accounting attributes for the line type
62801    --
62802    l_entered_amt_idx := 3;
62803    l_accted_amt_idx  := 8;
62804    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62805    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62806    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
62807    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62808    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
62809    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62810    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
62811    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62812    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
62813    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62814    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
62815    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62816    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
62817    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62818    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
62819    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62820    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
62821 
62822    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62823    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62824 
62825    ---------------------------------------------------------------------------------------------------------------
62826    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62827    ---------------------------------------------------------------------------------------------------------------
62828    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62829 
62830    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62831    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62832 
62833    IF xla_accounting_cache_pkg.GetValueChar
62834          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62835          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62836    AND l_bflow_method_code = 'PRIOR_ENTRY'
62837 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62838    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62839          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62840        )
62841    THEN
62842          xla_ae_lines_pkg.BflowUpgEntry
62843            (p_business_method_code    => l_bflow_method_code
62844            ,p_business_class_code     => l_bflow_class_code
62845            ,p_balance_type            => l_balance_type_code);
62846    ELSE
62847       NULL;
62848 -- No business flow processing for business flow method of NONE.
62849    END IF;
62850 
62851    --
62852    -- call analytical criteria
62853    --
62854    
62855    --
62856    -- call description
62857    --
62858    -- No description or it is inherited.
62859    --
62860    -- call ADRs
62861    -- Bug 4922099
62862    --
62863    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62864         (NVL(l_actual_upg_option, 'N') = 'O') OR
62865         (NVL(l_enc_upg_option, 'N') = 'O')
62866       )
62867    THEN
62868    NULL;
62869    --
62870    --
62871    
62872   l_ccid := AcctDerRule_6(
62873            p_application_id           => p_application_id
62874          , p_ae_header_id             => l_ae_header_id 
62875 , p_source_11 => p_source_11
62876          , x_transaction_coa_id       => l_adr_transaction_coa_id
62877          , x_accounting_coa_id        => l_adr_accounting_coa_id
62878          , x_value_type_code          => l_adr_value_type_code
62879          , p_side                     => 'NA'
62880    );
62881 
62882    xla_ae_lines_pkg.set_ccid(
62883     p_code_combination_id          => l_ccid
62884   , p_value_type_code              => l_adr_value_type_code
62885   , p_transaction_coa_id           => l_adr_transaction_coa_id
62886   , p_accounting_coa_id            => l_adr_accounting_coa_id
62887   , p_adr_code                     => 'CST_DEFAULT'
62888   , p_adr_type_code                => 'S'
62889   , p_component_type               => l_component_type
62890   , p_component_code               => l_component_code
62891   , p_component_type_code          => l_component_type_code
62892   , p_component_appl_id            => l_component_appl_id
62893   , p_amb_context_code             => l_amb_context_code
62894   , p_side                         => 'NA'
62895   );
62896 
62897 
62898    --
62899    --
62900    END IF;
62901    --
62902    -- Bug 4922099
62903    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62904           (NVL(l_enc_upg_option, 'N') = 'O')
62905         ) AND
62906         (l_bflow_method_code = 'PRIOR_ENTRY')
62907       )
62908    THEN
62909       IF
62910       --
62911       1 = 2
62912       --
62913       THEN
62914       xla_accounting_err_pkg.build_message
62915                                     (p_appli_s_name            => 'XLA'
62916                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62917                                     ,p_token_1                 => 'LINE_NUMBER'
62918                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62919                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62920                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62921                                                                              l_component_type
62922                                                                             ,l_component_code
62923                                                                             ,l_component_type_code
62924                                                                             ,l_component_appl_id
62925                                                                             ,l_amb_context_code
62926                                                                             ,l_entity_code
62927                                                                             ,l_event_class_code
62928                                                                            )
62929                                     ,p_token_3                 => 'OWNER'
62930                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62931                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62932                                                                           ,p_lookup_code    => l_component_type_code
62933                                                                          )
62934                                     ,p_token_4                 => 'PRODUCT_NAME'
62935                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62936                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62937                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62938                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62939                                     ,p_ae_header_id            =>  NULL
62940                                        );
62941 
62942         IF (C_LEVEL_ERROR>= g_log_level) THEN
62943                  trace
62944                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62945                       ,p_level    => C_LEVEL_ERROR
62946                       ,p_module   => l_log_module);
62947         END IF;
62948       END IF;
62949    END IF;
62950    --
62951    --
62952    ------------------------------------------------------------------------------------------------
62953    -- 4219869 Business Flow
62954    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62955    -- Prior Entry.  Currently, the following code is always generated.
62956    ------------------------------------------------------------------------------------------------
62957    XLA_AE_LINES_PKG.ValidateCurrentLine;
62958 
62959    ------------------------------------------------------------------------------------
62960    -- 4219869 Business Flow
62961    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62962    ------------------------------------------------------------------------------------
62963    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62964 
62965    ----------------------------------------------------------------------------------
62966    -- 4219869 Business Flow
62967    -- Update journal entry status -- Need to generate this within IF <condition>
62968    ----------------------------------------------------------------------------------
62969    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62970          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62971          ,p_balance_type_code => l_balance_type_code
62972          );
62973 
62974    -------------------------------------------------------------------------------------------
62975    -- 4262811 - Generate the Accrual Reversal lines
62976    -------------------------------------------------------------------------------------------
62977    BEGIN
62978       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62979                               (g_array_event(p_event_id).array_value_num('header_index'));
62980       IF l_acc_rev_flag IS NULL THEN
62981          l_acc_rev_flag := 'N';
62982       END IF;
62983    EXCEPTION
62984       WHEN OTHERS THEN
62985          l_acc_rev_flag := 'N';
62986    END;
62987    --
62988    IF (l_acc_rev_flag = 'Y') THEN
62989 
62990        -- 4645092  ------------------------------------------------------------------------------
62991        -- To allow MPA report to determine if it should generate report process
62992        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62993        ------------------------------------------------------------------------------------------
62994 
62995        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62996        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62997    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62998    -- call ADRs
62999    -- Bug 4922099
63000    --
63001    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63002         (NVL(l_actual_upg_option, 'N') = 'O') OR
63003         (NVL(l_enc_upg_option, 'N') = 'O')
63004       )
63005    THEN
63006    NULL;
63007    --
63008    --
63009    
63010   l_ccid := AcctDerRule_6(
63011            p_application_id           => p_application_id
63012          , p_ae_header_id             => l_ae_header_id 
63013 , p_source_11 => p_source_11
63014          , x_transaction_coa_id       => l_adr_transaction_coa_id
63015          , x_accounting_coa_id        => l_adr_accounting_coa_id
63016          , x_value_type_code          => l_adr_value_type_code
63017          , p_side                     => 'NA'
63018    );
63019 
63020    xla_ae_lines_pkg.set_ccid(
63021     p_code_combination_id          => l_ccid
63022   , p_value_type_code              => l_adr_value_type_code
63023   , p_transaction_coa_id           => l_adr_transaction_coa_id
63024   , p_accounting_coa_id            => l_adr_accounting_coa_id
63025   , p_adr_code                     => 'CST_DEFAULT'
63026   , p_adr_type_code                => 'S'
63027   , p_component_type               => l_component_type
63028   , p_component_code               => l_component_code
63029   , p_component_type_code          => l_component_type_code
63030   , p_component_appl_id            => l_component_appl_id
63031   , p_amb_context_code             => l_amb_context_code
63032   , p_side                         => 'NA'
63033   );
63034 
63035 
63036    --
63037    --
63038    END IF;
63039 
63040        --
63041        -- Update the line information that should be overwritten
63042        --
63043        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63044                                          p_header_num   => 1);
63045        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63046 
63047        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63048 
63049        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63050           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63051        END IF;
63052 
63053       --
63054       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63055       --
63056       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63057           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63058       ELSE
63059           ---------------------------------------------------------------------------------------------------
63060           -- 4262811a Switch Sign
63061           ---------------------------------------------------------------------------------------------------
63062           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63063           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63064                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63065           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63066                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63067           -- 5132302
63068           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63069                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63070 
63071       END IF;
63072 
63073       -- 4955764
63074       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63075       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63076 
63077 
63078       XLA_AE_LINES_PKG.ValidateCurrentLine;
63079       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63080 
63081       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63082                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63083                ,p_balance_type_code => l_balance_type_code);
63084 
63085    END IF;
63086 
63087    -----------------------------------------------------------------------------------------
63088    -- 4262811 Multiperiod Accounting
63089    -----------------------------------------------------------------------------------------
63090      -- No MPA option is assigned.
63091 
63092 
63093 END IF;
63094 END IF;
63095 --
63096 
63097 --
63098 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63099    trace
63100       (p_msg      => 'END of AcctLineType_135'
63101       ,p_level    => C_LEVEL_PROCEDURE
63102       ,p_module   => l_log_module);
63103 END IF;
63104 --
63105 EXCEPTION
63106   WHEN xla_exceptions_pkg.application_exception THEN
63107       RAISE;
63108   WHEN OTHERS THEN
63109        xla_exceptions_pkg.raise_message
63110            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_135');
63111 END AcctLineType_135;
63112 --
63113 
63114 ---------------------------------------
63115 --
63116 -- PRIVATE FUNCTION
63117 --         AcctLineType_136
63118 --
63119 ---------------------------------------
63120 PROCEDURE AcctLineType_136 (
63121   p_application_id        IN NUMBER
63122  ,p_event_id              IN NUMBER
63123  ,p_calculate_acctd_flag  IN VARCHAR2
63124  ,p_calculate_g_l_flag    IN VARCHAR2
63125  ,p_actual_flag           IN OUT VARCHAR2
63126  ,p_balance_type_code     OUT VARCHAR2
63127  ,p_gain_or_loss_ref      OUT VARCHAR2
63128  
63129 --TRANSACTION_ID
63130  , p_source_1            IN NUMBER
63131 --Item Concatenated Segments
63132  , p_source_2            IN VARCHAR2
63133 --Transaction Quantity
63134  , p_source_3            IN NUMBER
63135 --Transaction Unit of Measure Code
63136  , p_source_4            IN VARCHAR2
63137 --Inventory Transaction Type Description
63138  , p_source_5            IN VARCHAR2
63139 --Cost Management Default Account
63140  , p_source_11            IN NUMBER
63141 --DISTRIBUTION_IDENTIFIER
63142  , p_source_84            IN NUMBER
63143 --Distribution Type
63144  , p_source_85            IN VARCHAR2
63145  , p_source_85_meaning    IN VARCHAR2
63146 --Entered Currency Code
63147  , p_source_88            IN VARCHAR2
63148 --Entered Amount
63149  , p_source_91            IN NUMBER
63150 --Currency Conversion Date
63151  , p_source_92            IN DATE
63152 --Currency Conversion Rate
63153  , p_source_93            IN NUMBER
63154 --Currency Conversion Type
63155  , p_source_94            IN VARCHAR2
63156 --Accounted Amount
63157  , p_source_95            IN NUMBER
63158 --Accounting Line Type
63159  , p_source_97            IN NUMBER
63160 )
63161 IS
63162 
63163 l_component_type              VARCHAR2(80);
63164 l_component_code              VARCHAR2(30);
63165 l_component_type_code         VARCHAR2(1);
63166 l_component_appl_id           INTEGER;
63167 l_amb_context_code            VARCHAR2(30);
63168 l_entity_code                 VARCHAR2(30);
63169 l_event_class_code            VARCHAR2(30);
63170 l_ae_header_id                NUMBER;
63171 l_event_type_code             VARCHAR2(30);
63172 l_line_definition_code        VARCHAR2(30);
63173 l_line_definition_owner_code  VARCHAR2(1);
63174 --
63175 -- adr variables
63176 l_segment                     VARCHAR2(30);
63177 l_ccid                        NUMBER;
63178 l_adr_transaction_coa_id      NUMBER;
63179 l_adr_accounting_coa_id       NUMBER;
63180 l_adr_flexfield_segment_code  VARCHAR2(30);
63181 l_adr_flex_value_set_id       NUMBER;
63182 l_adr_value_type_code         VARCHAR2(30);
63183 l_adr_value_combination_id    NUMBER;
63184 l_adr_value_segment_code      VARCHAR2(30);
63185 
63186 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63187 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63188 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63189 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63190 
63191 -- 4262811 Variables ------------------------------------------------------------------------------------------
63192 l_entered_amt_idx             NUMBER;
63193 l_accted_amt_idx              NUMBER;
63194 l_acc_rev_flag                VARCHAR2(1);
63195 l_accrual_line_num            NUMBER;
63196 l_tmp_amt                     NUMBER;
63197 l_acc_rev_natural_side_code   VARCHAR2(1);
63198 
63199 l_num_entries                 NUMBER;
63200 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63201 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63202 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63203 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63204 l_recog_line_1                NUMBER;
63205 l_recog_line_2                NUMBER;
63206 
63207 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63208 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63209 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63210 
63211 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63212 
63213 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63214 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63215 
63216 ---------------------------------------------------------------------------------------------------------------
63217 
63218 
63219 --
63220 -- bulk performance
63221 --
63222 l_balance_type_code           VARCHAR2(1);
63223 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63224 l_log_module                  VARCHAR2(240);
63225 
63226 --
63227 -- Upgrade strategy
63228 --
63229 l_actual_upg_option           VARCHAR2(1);
63230 l_enc_upg_option           VARCHAR2(1);
63231 
63232 --
63233 BEGIN
63234 --
63235 IF g_log_enabled THEN
63236       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
63237 END IF;
63238 --
63239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63240 
63241       trace
63242          (p_msg      => 'BEGIN of AcctLineType_136'
63243          ,p_level    => C_LEVEL_PROCEDURE
63244          ,p_module   => l_log_module);
63245 
63246 END IF;
63247 --
63248 l_component_type             := 'AMB_JLT';
63249 l_component_code             := 'INTERCOMPANY_ACCRUAL';
63250 l_component_type_code        := 'S';
63251 l_component_appl_id          :=  707;
63252 l_amb_context_code           := 'DEFAULT';
63253 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
63254 l_event_class_code           := 'USER_DEFINE';
63255 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
63256 l_line_definition_owner_code := 'S';
63257 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
63258 --
63259 l_balance_type_code          := 'A';
63260 l_segment                     := NULL;
63261 l_ccid                        := NULL;
63262 l_adr_transaction_coa_id      := NULL;
63263 l_adr_accounting_coa_id       := NULL;
63264 l_adr_flexfield_segment_code  := NULL;
63265 l_adr_flex_value_set_id       := NULL;
63266 l_adr_value_type_code         := NULL;
63267 l_adr_value_combination_id    := NULL;
63268 l_adr_value_segment_code      := NULL;
63269 
63270 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63271 l_bflow_class_code           := '';    -- 4219869 Business Flow
63272 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63273 l_budgetary_control_flag     := 'N';
63274 
63275 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63276 l_bflow_applied_to_amt       := NULL; -- 5132302
63277 l_entered_amt_idx            := NULL;          -- 4262811
63278 l_accted_amt_idx             := NULL;          -- 4262811
63279 l_acc_rev_flag               := NULL;          -- 4262811
63280 l_accrual_line_num           := NULL;          -- 4262811
63281 l_tmp_amt                    := NULL;          -- 4262811
63282 --
63283  
63284 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63285     l_balance_type_code <> 'B' THEN
63286 IF NVL(p_source_97,9E125) =  2 AND 
63287 p_source_95 <  0
63288  THEN 
63289 
63290    --
63291    XLA_AE_LINES_PKG.SetNewLine;
63292 
63293    p_balance_type_code          := l_balance_type_code;
63294    -- set the flag so later we will know whether the gain loss line needs to be created
63295    
63296    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63297      p_actual_flag :='A';
63298    END IF;
63299 
63300    --
63301    -- bulk performance
63302    --
63303    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63304                                       p_header_num   => 0); -- 4262811
63305    --
63306    -- set accounting line options
63307    --
63308    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63309            p_natural_side_code          => 'D'
63310          , p_gain_or_loss_flag          => 'N'
63311          , p_gl_transfer_mode_code      => 'S'
63312          , p_acct_entry_type_code       => 'A'
63313          , p_switch_side_flag           => 'Y'
63314          , p_merge_duplicate_code       => 'N'
63315          );
63316    --
63317    l_acc_rev_natural_side_code := 'C';  -- 4262811
63318    -- 
63319    --
63320    -- set accounting line type info
63321    --
63322    xla_ae_lines_pkg.SetAcctLineType
63323       (p_component_type             => l_component_type
63324       ,p_event_type_code            => l_event_type_code
63325       ,p_line_definition_owner_code => l_line_definition_owner_code
63326       ,p_line_definition_code       => l_line_definition_code
63327       ,p_accounting_line_code       => l_component_code
63328       ,p_accounting_line_type_code  => l_component_type_code
63329       ,p_accounting_line_appl_id    => l_component_appl_id
63330       ,p_amb_context_code           => l_amb_context_code
63331       ,p_entity_code                => l_entity_code
63332       ,p_event_class_code           => l_event_class_code);
63333    --
63334    -- set accounting class
63335    --
63336    xla_ae_lines_pkg.SetAcctClass(
63337            p_accounting_class_code  => 'INTERCOMPANY_ACCRUAL'
63338          , p_ae_header_id           => l_ae_header_id
63339          );
63340 
63341    --
63342    -- set rounding class
63343    --
63344    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63345                       'INTERCOMPANY_ACCRUAL';
63346 
63347    --
63348    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63349    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63350    --
63351    -- bulk performance
63352    --
63353    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63354 
63355    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63356       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63357 
63358    -- 4955764
63359    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63361 
63362    -- 4458381 Public Sector Enh
63363    
63364    --
63365    -- set accounting attributes for the line type
63366    --
63367    l_entered_amt_idx := 3;
63368    l_accted_amt_idx  := 8;
63369    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63370    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63371    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
63372    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63373    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
63374    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63375    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
63376    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63377    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
63378    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63379    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
63380    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63381    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
63382    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63383    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
63384    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63385    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
63386 
63387    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63388    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63389 
63390    ---------------------------------------------------------------------------------------------------------------
63391    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63392    ---------------------------------------------------------------------------------------------------------------
63393    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63394 
63395    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63396    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63397 
63398    IF xla_accounting_cache_pkg.GetValueChar
63399          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63400          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63401    AND l_bflow_method_code = 'PRIOR_ENTRY'
63402 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63403    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63404          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63405        )
63406    THEN
63407          xla_ae_lines_pkg.BflowUpgEntry
63408            (p_business_method_code    => l_bflow_method_code
63409            ,p_business_class_code     => l_bflow_class_code
63410            ,p_balance_type            => l_balance_type_code);
63411    ELSE
63412       NULL;
63413 -- No business flow processing for business flow method of NONE.
63414    END IF;
63415 
63416    --
63417    -- call analytical criteria
63418    --
63419    
63420    --
63421    -- call description
63422    --
63423    
63424 xla_ae_lines_pkg.SetLineDescription(
63425    p_ae_header_id => l_ae_header_id
63426   ,p_description  => Description_1 (
63427      p_application_id         => p_application_id
63428    , p_ae_header_id           => l_ae_header_id 
63429 , p_source_1 => p_source_1
63430 , p_source_2 => p_source_2
63431 , p_source_3 => p_source_3
63432 , p_source_4 => p_source_4
63433 , p_source_5 => p_source_5
63434    )
63435 );
63436 
63437 
63438    --
63439    -- call ADRs
63440    -- Bug 4922099
63441    --
63442    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63443         (NVL(l_actual_upg_option, 'N') = 'O') OR
63444         (NVL(l_enc_upg_option, 'N') = 'O')
63445       )
63446    THEN
63447    NULL;
63448    --
63449    --
63450    
63451   l_ccid := AcctDerRule_6(
63452            p_application_id           => p_application_id
63453          , p_ae_header_id             => l_ae_header_id 
63454 , p_source_11 => p_source_11
63455          , x_transaction_coa_id       => l_adr_transaction_coa_id
63456          , x_accounting_coa_id        => l_adr_accounting_coa_id
63457          , x_value_type_code          => l_adr_value_type_code
63458          , p_side                     => 'NA'
63459    );
63460 
63461    xla_ae_lines_pkg.set_ccid(
63462     p_code_combination_id          => l_ccid
63463   , p_value_type_code              => l_adr_value_type_code
63464   , p_transaction_coa_id           => l_adr_transaction_coa_id
63465   , p_accounting_coa_id            => l_adr_accounting_coa_id
63466   , p_adr_code                     => 'CST_DEFAULT'
63467   , p_adr_type_code                => 'S'
63468   , p_component_type               => l_component_type
63469   , p_component_code               => l_component_code
63470   , p_component_type_code          => l_component_type_code
63471   , p_component_appl_id            => l_component_appl_id
63472   , p_amb_context_code             => l_amb_context_code
63473   , p_side                         => 'NA'
63474   );
63475 
63476 
63477    --
63478    --
63479    END IF;
63480    --
63481    -- Bug 4922099
63482    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63483           (NVL(l_enc_upg_option, 'N') = 'O')
63484         ) AND
63485         (l_bflow_method_code = 'PRIOR_ENTRY')
63486       )
63487    THEN
63488       IF
63489       --
63490       1 = 2
63491       --
63492       THEN
63493       xla_accounting_err_pkg.build_message
63494                                     (p_appli_s_name            => 'XLA'
63495                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63496                                     ,p_token_1                 => 'LINE_NUMBER'
63497                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63498                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63499                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63500                                                                              l_component_type
63501                                                                             ,l_component_code
63502                                                                             ,l_component_type_code
63503                                                                             ,l_component_appl_id
63504                                                                             ,l_amb_context_code
63505                                                                             ,l_entity_code
63506                                                                             ,l_event_class_code
63507                                                                            )
63508                                     ,p_token_3                 => 'OWNER'
63509                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63510                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63511                                                                           ,p_lookup_code    => l_component_type_code
63512                                                                          )
63513                                     ,p_token_4                 => 'PRODUCT_NAME'
63514                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63515                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63516                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63517                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63518                                     ,p_ae_header_id            =>  NULL
63519                                        );
63520 
63521         IF (C_LEVEL_ERROR>= g_log_level) THEN
63522                  trace
63523                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63524                       ,p_level    => C_LEVEL_ERROR
63525                       ,p_module   => l_log_module);
63526         END IF;
63527       END IF;
63528    END IF;
63529    --
63530    --
63531    ------------------------------------------------------------------------------------------------
63532    -- 4219869 Business Flow
63533    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63534    -- Prior Entry.  Currently, the following code is always generated.
63535    ------------------------------------------------------------------------------------------------
63536    XLA_AE_LINES_PKG.ValidateCurrentLine;
63537 
63538    ------------------------------------------------------------------------------------
63539    -- 4219869 Business Flow
63540    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63541    ------------------------------------------------------------------------------------
63542    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63543 
63544    ----------------------------------------------------------------------------------
63545    -- 4219869 Business Flow
63546    -- Update journal entry status -- Need to generate this within IF <condition>
63547    ----------------------------------------------------------------------------------
63548    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63549          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63550          ,p_balance_type_code => l_balance_type_code
63551          );
63552 
63553    -------------------------------------------------------------------------------------------
63554    -- 4262811 - Generate the Accrual Reversal lines
63555    -------------------------------------------------------------------------------------------
63556    BEGIN
63557       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63558                               (g_array_event(p_event_id).array_value_num('header_index'));
63559       IF l_acc_rev_flag IS NULL THEN
63560          l_acc_rev_flag := 'N';
63561       END IF;
63562    EXCEPTION
63563       WHEN OTHERS THEN
63564          l_acc_rev_flag := 'N';
63565    END;
63566    --
63567    IF (l_acc_rev_flag = 'Y') THEN
63568 
63569        -- 4645092  ------------------------------------------------------------------------------
63570        -- To allow MPA report to determine if it should generate report process
63571        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63572        ------------------------------------------------------------------------------------------
63573 
63574        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63575        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63576    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63577    -- call ADRs
63578    -- Bug 4922099
63579    --
63580    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63581         (NVL(l_actual_upg_option, 'N') = 'O') OR
63582         (NVL(l_enc_upg_option, 'N') = 'O')
63583       )
63584    THEN
63585    NULL;
63586    --
63587    --
63588    
63589   l_ccid := AcctDerRule_6(
63590            p_application_id           => p_application_id
63591          , p_ae_header_id             => l_ae_header_id 
63592 , p_source_11 => p_source_11
63593          , x_transaction_coa_id       => l_adr_transaction_coa_id
63594          , x_accounting_coa_id        => l_adr_accounting_coa_id
63595          , x_value_type_code          => l_adr_value_type_code
63596          , p_side                     => 'NA'
63597    );
63598 
63599    xla_ae_lines_pkg.set_ccid(
63600     p_code_combination_id          => l_ccid
63601   , p_value_type_code              => l_adr_value_type_code
63602   , p_transaction_coa_id           => l_adr_transaction_coa_id
63603   , p_accounting_coa_id            => l_adr_accounting_coa_id
63604   , p_adr_code                     => 'CST_DEFAULT'
63605   , p_adr_type_code                => 'S'
63606   , p_component_type               => l_component_type
63607   , p_component_code               => l_component_code
63608   , p_component_type_code          => l_component_type_code
63609   , p_component_appl_id            => l_component_appl_id
63610   , p_amb_context_code             => l_amb_context_code
63611   , p_side                         => 'NA'
63612   );
63613 
63614 
63615    --
63616    --
63617    END IF;
63618 
63619        --
63620        -- Update the line information that should be overwritten
63621        --
63622        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63623                                          p_header_num   => 1);
63624        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63625 
63626        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63627 
63628        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63629           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63630        END IF;
63631 
63632       --
63633       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63634       --
63635       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63636           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63637       ELSE
63638           ---------------------------------------------------------------------------------------------------
63639           -- 4262811a Switch Sign
63640           ---------------------------------------------------------------------------------------------------
63641           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63642           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63643                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63644           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63645                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63646           -- 5132302
63647           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63648                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63649 
63650       END IF;
63651 
63652       -- 4955764
63653       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63654       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63655 
63656 
63657       XLA_AE_LINES_PKG.ValidateCurrentLine;
63658       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63659 
63660       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63661                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63662                ,p_balance_type_code => l_balance_type_code);
63663 
63664    END IF;
63665 
63666    -----------------------------------------------------------------------------------------
63667    -- 4262811 Multiperiod Accounting
63668    -----------------------------------------------------------------------------------------
63669      -- No MPA option is assigned.
63670 
63671 
63672 END IF;
63673 END IF;
63674 --
63675 
63676 --
63677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63678    trace
63679       (p_msg      => 'END of AcctLineType_136'
63680       ,p_level    => C_LEVEL_PROCEDURE
63681       ,p_module   => l_log_module);
63682 END IF;
63683 --
63684 EXCEPTION
63685   WHEN xla_exceptions_pkg.application_exception THEN
63686       RAISE;
63687   WHEN OTHERS THEN
63688        xla_exceptions_pkg.raise_message
63689            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_136');
63690 END AcctLineType_136;
63691 --
63692 
63693 ---------------------------------------
63694 --
63695 -- PRIVATE FUNCTION
63696 --         AcctLineType_137
63697 --
63698 ---------------------------------------
63699 PROCEDURE AcctLineType_137 (
63700   p_application_id        IN NUMBER
63701  ,p_event_id              IN NUMBER
63702  ,p_calculate_acctd_flag  IN VARCHAR2
63703  ,p_calculate_g_l_flag    IN VARCHAR2
63704  ,p_actual_flag           IN OUT VARCHAR2
63705  ,p_balance_type_code     OUT VARCHAR2
63706  ,p_gain_or_loss_ref      OUT VARCHAR2
63707  
63708 --TRANSACTION_ID
63709  , p_source_1            IN NUMBER
63710 --Item Concatenated Segments
63711  , p_source_2            IN VARCHAR2
63712 --Transaction Quantity
63713  , p_source_3            IN NUMBER
63714 --Transaction Unit of Measure Code
63715  , p_source_4            IN VARCHAR2
63716 --Inventory Transaction Type Description
63717  , p_source_5            IN VARCHAR2
63718 --Cost Management Default Account
63719  , p_source_11            IN NUMBER
63720 --Transaction Action Name
63721  , p_source_62            IN NUMBER
63722  , p_source_62_meaning    IN VARCHAR2
63723 --DISTRIBUTION_IDENTIFIER
63724  , p_source_84            IN NUMBER
63725 --Distribution Type
63726  , p_source_85            IN VARCHAR2
63727  , p_source_85_meaning    IN VARCHAR2
63728 --Entered Currency Code
63729  , p_source_88            IN VARCHAR2
63730 --Entered Amount
63731  , p_source_91            IN NUMBER
63732 --Currency Conversion Date
63733  , p_source_92            IN DATE
63734 --Currency Conversion Rate
63735  , p_source_93            IN NUMBER
63736 --Currency Conversion Type
63737  , p_source_94            IN VARCHAR2
63738 --Accounted Amount
63739  , p_source_95            IN NUMBER
63740 --Accounting Line Type
63741  , p_source_97            IN NUMBER
63742 )
63743 IS
63744 
63745 l_component_type              VARCHAR2(80);
63746 l_component_code              VARCHAR2(30);
63747 l_component_type_code         VARCHAR2(1);
63748 l_component_appl_id           INTEGER;
63749 l_amb_context_code            VARCHAR2(30);
63750 l_entity_code                 VARCHAR2(30);
63751 l_event_class_code            VARCHAR2(30);
63752 l_ae_header_id                NUMBER;
63753 l_event_type_code             VARCHAR2(30);
63754 l_line_definition_code        VARCHAR2(30);
63755 l_line_definition_owner_code  VARCHAR2(1);
63756 --
63757 -- adr variables
63758 l_segment                     VARCHAR2(30);
63759 l_ccid                        NUMBER;
63760 l_adr_transaction_coa_id      NUMBER;
63761 l_adr_accounting_coa_id       NUMBER;
63762 l_adr_flexfield_segment_code  VARCHAR2(30);
63763 l_adr_flex_value_set_id       NUMBER;
63764 l_adr_value_type_code         VARCHAR2(30);
63765 l_adr_value_combination_id    NUMBER;
63766 l_adr_value_segment_code      VARCHAR2(30);
63767 
63768 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63769 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63770 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63771 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63772 
63773 -- 4262811 Variables ------------------------------------------------------------------------------------------
63774 l_entered_amt_idx             NUMBER;
63775 l_accted_amt_idx              NUMBER;
63776 l_acc_rev_flag                VARCHAR2(1);
63777 l_accrual_line_num            NUMBER;
63778 l_tmp_amt                     NUMBER;
63779 l_acc_rev_natural_side_code   VARCHAR2(1);
63780 
63781 l_num_entries                 NUMBER;
63782 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63783 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63784 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63785 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63786 l_recog_line_1                NUMBER;
63787 l_recog_line_2                NUMBER;
63788 
63789 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63790 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63791 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63792 
63793 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63794 
63795 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63796 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63797 
63798 ---------------------------------------------------------------------------------------------------------------
63799 
63800 
63801 --
63802 -- bulk performance
63803 --
63804 l_balance_type_code           VARCHAR2(1);
63805 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63806 l_log_module                  VARCHAR2(240);
63807 
63808 --
63809 -- Upgrade strategy
63810 --
63811 l_actual_upg_option           VARCHAR2(1);
63812 l_enc_upg_option           VARCHAR2(1);
63813 
63814 --
63815 BEGIN
63816 --
63817 IF g_log_enabled THEN
63818       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
63819 END IF;
63820 --
63821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63822 
63823       trace
63824          (p_msg      => 'BEGIN of AcctLineType_137'
63825          ,p_level    => C_LEVEL_PROCEDURE
63826          ,p_module   => l_log_module);
63827 
63828 END IF;
63829 --
63830 l_component_type             := 'AMB_JLT';
63831 l_component_code             := 'INTERCOMPANY_COGS';
63832 l_component_type_code        := 'S';
63833 l_component_appl_id          :=  707;
63834 l_amb_context_code           := 'DEFAULT';
63835 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
63836 l_event_class_code           := 'LOG_INTERCOMPANY';
63837 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
63838 l_line_definition_owner_code := 'S';
63839 l_line_definition_code       := 'PI_LOG_IC_SHIPMENT_RCPT';
63840 --
63841 l_balance_type_code          := 'A';
63842 l_segment                     := NULL;
63843 l_ccid                        := NULL;
63844 l_adr_transaction_coa_id      := NULL;
63845 l_adr_accounting_coa_id       := NULL;
63846 l_adr_flexfield_segment_code  := NULL;
63847 l_adr_flex_value_set_id       := NULL;
63848 l_adr_value_type_code         := NULL;
63849 l_adr_value_combination_id    := NULL;
63850 l_adr_value_segment_code      := NULL;
63851 
63852 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63853 l_bflow_class_code           := '';    -- 4219869 Business Flow
63854 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63855 l_budgetary_control_flag     := 'N';
63856 
63857 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63858 l_bflow_applied_to_amt       := NULL; -- 5132302
63859 l_entered_amt_idx            := NULL;          -- 4262811
63860 l_accted_amt_idx             := NULL;          -- 4262811
63861 l_acc_rev_flag               := NULL;          -- 4262811
63862 l_accrual_line_num           := NULL;          -- 4262811
63863 l_tmp_amt                    := NULL;          -- 4262811
63864 --
63865  
63866 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63867     l_balance_type_code <> 'B' THEN
63868 IF NVL(p_source_97,9E125) =  2 AND 
63869 ((p_source_95 >=  0 AND 
63870 NVL(p_source_62,9E125) =  9) OR 
63871 (p_source_95 <=  0 AND 
63872 NVL(p_source_62,9E125) =  14)
63873 ) THEN 
63874 
63875    --
63876    XLA_AE_LINES_PKG.SetNewLine;
63877 
63878    p_balance_type_code          := l_balance_type_code;
63879    -- set the flag so later we will know whether the gain loss line needs to be created
63880    
63881    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63882      p_actual_flag :='A';
63883    END IF;
63884 
63885    --
63886    -- bulk performance
63887    --
63888    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63889                                       p_header_num   => 0); -- 4262811
63890    --
63891    -- set accounting line options
63892    --
63893    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63894            p_natural_side_code          => 'D'
63895          , p_gain_or_loss_flag          => 'N'
63896          , p_gl_transfer_mode_code      => 'S'
63897          , p_acct_entry_type_code       => 'A'
63898          , p_switch_side_flag           => 'Y'
63899          , p_merge_duplicate_code       => 'N'
63900          );
63901    --
63902    l_acc_rev_natural_side_code := 'C';  -- 4262811
63903    -- 
63904    --
63905    -- set accounting line type info
63906    --
63907    xla_ae_lines_pkg.SetAcctLineType
63908       (p_component_type             => l_component_type
63909       ,p_event_type_code            => l_event_type_code
63910       ,p_line_definition_owner_code => l_line_definition_owner_code
63911       ,p_line_definition_code       => l_line_definition_code
63912       ,p_accounting_line_code       => l_component_code
63913       ,p_accounting_line_type_code  => l_component_type_code
63914       ,p_accounting_line_appl_id    => l_component_appl_id
63915       ,p_amb_context_code           => l_amb_context_code
63916       ,p_entity_code                => l_entity_code
63917       ,p_event_class_code           => l_event_class_code);
63918    --
63919    -- set accounting class
63920    --
63921    xla_ae_lines_pkg.SetAcctClass(
63922            p_accounting_class_code  => 'INTERCOMPANY_COGS'
63923          , p_ae_header_id           => l_ae_header_id
63924          );
63925 
63926    --
63927    -- set rounding class
63928    --
63929    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63930                       'INTERCOMPANY_COGS';
63931 
63932    --
63933    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63934    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63935    --
63936    -- bulk performance
63937    --
63938    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63939 
63940    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63941       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63942 
63943    -- 4955764
63944    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63945       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63946 
63947    -- 4458381 Public Sector Enh
63948    
63949    --
63950    -- set accounting attributes for the line type
63951    --
63952    l_entered_amt_idx := 3;
63953    l_accted_amt_idx  := 8;
63954    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63955    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63956    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
63957    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63958    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
63959    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63960    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
63961    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63962    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
63963    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63964    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
63965    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63966    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
63967    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63968    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
63969    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63970    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
63971 
63972    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63973    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63974 
63975    ---------------------------------------------------------------------------------------------------------------
63976    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63977    ---------------------------------------------------------------------------------------------------------------
63978    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63979 
63980    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63981    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63982 
63983    IF xla_accounting_cache_pkg.GetValueChar
63984          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63985          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63986    AND l_bflow_method_code = 'PRIOR_ENTRY'
63987 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63988    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63989          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63990        )
63991    THEN
63992          xla_ae_lines_pkg.BflowUpgEntry
63993            (p_business_method_code    => l_bflow_method_code
63994            ,p_business_class_code     => l_bflow_class_code
63995            ,p_balance_type            => l_balance_type_code);
63996    ELSE
63997       NULL;
63998 -- No business flow processing for business flow method of NONE.
63999    END IF;
64000 
64001    --
64002    -- call analytical criteria
64003    --
64004    
64005    --
64006    -- call description
64007    --
64008    
64009 xla_ae_lines_pkg.SetLineDescription(
64010    p_ae_header_id => l_ae_header_id
64011   ,p_description  => Description_1 (
64012      p_application_id         => p_application_id
64013    , p_ae_header_id           => l_ae_header_id 
64014 , p_source_1 => p_source_1
64015 , p_source_2 => p_source_2
64016 , p_source_3 => p_source_3
64017 , p_source_4 => p_source_4
64018 , p_source_5 => p_source_5
64019    )
64020 );
64021 
64022 
64023    --
64024    -- call ADRs
64025    -- Bug 4922099
64026    --
64027    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64028         (NVL(l_actual_upg_option, 'N') = 'O') OR
64029         (NVL(l_enc_upg_option, 'N') = 'O')
64030       )
64031    THEN
64032    NULL;
64033    --
64034    --
64035    
64036   l_ccid := AcctDerRule_6(
64037            p_application_id           => p_application_id
64038          , p_ae_header_id             => l_ae_header_id 
64039 , p_source_11 => p_source_11
64040          , x_transaction_coa_id       => l_adr_transaction_coa_id
64041          , x_accounting_coa_id        => l_adr_accounting_coa_id
64042          , x_value_type_code          => l_adr_value_type_code
64043          , p_side                     => 'NA'
64044    );
64045 
64046    xla_ae_lines_pkg.set_ccid(
64047     p_code_combination_id          => l_ccid
64048   , p_value_type_code              => l_adr_value_type_code
64049   , p_transaction_coa_id           => l_adr_transaction_coa_id
64050   , p_accounting_coa_id            => l_adr_accounting_coa_id
64051   , p_adr_code                     => 'CST_DEFAULT'
64052   , p_adr_type_code                => 'S'
64053   , p_component_type               => l_component_type
64054   , p_component_code               => l_component_code
64055   , p_component_type_code          => l_component_type_code
64056   , p_component_appl_id            => l_component_appl_id
64057   , p_amb_context_code             => l_amb_context_code
64058   , p_side                         => 'NA'
64059   );
64060 
64061 
64062    --
64063    --
64064    END IF;
64065    --
64066    -- Bug 4922099
64067    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64068           (NVL(l_enc_upg_option, 'N') = 'O')
64069         ) AND
64070         (l_bflow_method_code = 'PRIOR_ENTRY')
64071       )
64072    THEN
64073       IF
64074       --
64075       1 = 2
64076       --
64077       THEN
64078       xla_accounting_err_pkg.build_message
64079                                     (p_appli_s_name            => 'XLA'
64080                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64081                                     ,p_token_1                 => 'LINE_NUMBER'
64082                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64083                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64084                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64085                                                                              l_component_type
64086                                                                             ,l_component_code
64087                                                                             ,l_component_type_code
64088                                                                             ,l_component_appl_id
64089                                                                             ,l_amb_context_code
64090                                                                             ,l_entity_code
64091                                                                             ,l_event_class_code
64092                                                                            )
64093                                     ,p_token_3                 => 'OWNER'
64094                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64095                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64096                                                                           ,p_lookup_code    => l_component_type_code
64097                                                                          )
64098                                     ,p_token_4                 => 'PRODUCT_NAME'
64099                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64100                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64101                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64102                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64103                                     ,p_ae_header_id            =>  NULL
64104                                        );
64105 
64106         IF (C_LEVEL_ERROR>= g_log_level) THEN
64107                  trace
64108                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64109                       ,p_level    => C_LEVEL_ERROR
64110                       ,p_module   => l_log_module);
64111         END IF;
64112       END IF;
64113    END IF;
64114    --
64115    --
64116    ------------------------------------------------------------------------------------------------
64117    -- 4219869 Business Flow
64118    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64119    -- Prior Entry.  Currently, the following code is always generated.
64120    ------------------------------------------------------------------------------------------------
64121    XLA_AE_LINES_PKG.ValidateCurrentLine;
64122 
64123    ------------------------------------------------------------------------------------
64124    -- 4219869 Business Flow
64125    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64126    ------------------------------------------------------------------------------------
64127    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64128 
64129    ----------------------------------------------------------------------------------
64130    -- 4219869 Business Flow
64131    -- Update journal entry status -- Need to generate this within IF <condition>
64132    ----------------------------------------------------------------------------------
64133    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64134          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64135          ,p_balance_type_code => l_balance_type_code
64136          );
64137 
64138    -------------------------------------------------------------------------------------------
64139    -- 4262811 - Generate the Accrual Reversal lines
64140    -------------------------------------------------------------------------------------------
64141    BEGIN
64142       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64143                               (g_array_event(p_event_id).array_value_num('header_index'));
64144       IF l_acc_rev_flag IS NULL THEN
64145          l_acc_rev_flag := 'N';
64146       END IF;
64147    EXCEPTION
64148       WHEN OTHERS THEN
64149          l_acc_rev_flag := 'N';
64150    END;
64151    --
64152    IF (l_acc_rev_flag = 'Y') THEN
64153 
64154        -- 4645092  ------------------------------------------------------------------------------
64155        -- To allow MPA report to determine if it should generate report process
64156        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64157        ------------------------------------------------------------------------------------------
64158 
64159        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64160        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64161    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64162    -- call ADRs
64163    -- Bug 4922099
64164    --
64165    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64166         (NVL(l_actual_upg_option, 'N') = 'O') OR
64167         (NVL(l_enc_upg_option, 'N') = 'O')
64168       )
64169    THEN
64170    NULL;
64171    --
64172    --
64173    
64174   l_ccid := AcctDerRule_6(
64175            p_application_id           => p_application_id
64176          , p_ae_header_id             => l_ae_header_id 
64177 , p_source_11 => p_source_11
64178          , x_transaction_coa_id       => l_adr_transaction_coa_id
64179          , x_accounting_coa_id        => l_adr_accounting_coa_id
64180          , x_value_type_code          => l_adr_value_type_code
64181          , p_side                     => 'NA'
64182    );
64183 
64184    xla_ae_lines_pkg.set_ccid(
64185     p_code_combination_id          => l_ccid
64186   , p_value_type_code              => l_adr_value_type_code
64187   , p_transaction_coa_id           => l_adr_transaction_coa_id
64188   , p_accounting_coa_id            => l_adr_accounting_coa_id
64189   , p_adr_code                     => 'CST_DEFAULT'
64190   , p_adr_type_code                => 'S'
64191   , p_component_type               => l_component_type
64192   , p_component_code               => l_component_code
64193   , p_component_type_code          => l_component_type_code
64194   , p_component_appl_id            => l_component_appl_id
64195   , p_amb_context_code             => l_amb_context_code
64196   , p_side                         => 'NA'
64197   );
64198 
64199 
64200    --
64201    --
64202    END IF;
64203 
64204        --
64205        -- Update the line information that should be overwritten
64206        --
64207        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64208                                          p_header_num   => 1);
64209        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64210 
64211        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64212 
64213        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64214           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64215        END IF;
64216 
64217       --
64218       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64219       --
64220       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64221           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64222       ELSE
64223           ---------------------------------------------------------------------------------------------------
64224           -- 4262811a Switch Sign
64225           ---------------------------------------------------------------------------------------------------
64226           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64227           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64228                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64229           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64230                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64231           -- 5132302
64232           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64233                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64234 
64235       END IF;
64236 
64237       -- 4955764
64238       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64239       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64240 
64241 
64242       XLA_AE_LINES_PKG.ValidateCurrentLine;
64243       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64244 
64245       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64246                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64247                ,p_balance_type_code => l_balance_type_code);
64248 
64249    END IF;
64250 
64251    -----------------------------------------------------------------------------------------
64252    -- 4262811 Multiperiod Accounting
64253    -----------------------------------------------------------------------------------------
64254      -- No MPA option is assigned.
64255 
64256 
64257 END IF;
64258 END IF;
64259 --
64260 
64261 --
64262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64263    trace
64264       (p_msg      => 'END of AcctLineType_137'
64265       ,p_level    => C_LEVEL_PROCEDURE
64266       ,p_module   => l_log_module);
64267 END IF;
64268 --
64269 EXCEPTION
64270   WHEN xla_exceptions_pkg.application_exception THEN
64271       RAISE;
64272   WHEN OTHERS THEN
64273        xla_exceptions_pkg.raise_message
64274            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_137');
64275 END AcctLineType_137;
64276 --
64277 
64278 ---------------------------------------
64279 --
64280 -- PRIVATE FUNCTION
64281 --         AcctLineType_138
64282 --
64283 ---------------------------------------
64284 PROCEDURE AcctLineType_138 (
64285   p_application_id        IN NUMBER
64286  ,p_event_id              IN NUMBER
64287  ,p_calculate_acctd_flag  IN VARCHAR2
64288  ,p_calculate_g_l_flag    IN VARCHAR2
64289  ,p_actual_flag           IN OUT VARCHAR2
64290  ,p_balance_type_code     OUT VARCHAR2
64291  ,p_gain_or_loss_ref      OUT VARCHAR2
64292  
64293 --TRANSACTION_ID
64294  , p_source_1            IN NUMBER
64295 --Item Concatenated Segments
64296  , p_source_2            IN VARCHAR2
64297 --Transaction Quantity
64298  , p_source_3            IN NUMBER
64299 --Transaction Unit of Measure Code
64300  , p_source_4            IN VARCHAR2
64301 --Inventory Transaction Type Description
64302  , p_source_5            IN VARCHAR2
64303 --Cost Management Default Account
64304  , p_source_11            IN NUMBER
64305 --Transaction Action Name
64306  , p_source_62            IN NUMBER
64307  , p_source_62_meaning    IN VARCHAR2
64308 --DISTRIBUTION_IDENTIFIER
64309  , p_source_84            IN NUMBER
64310 --Distribution Type
64311  , p_source_85            IN VARCHAR2
64312  , p_source_85_meaning    IN VARCHAR2
64313 --Entered Currency Code
64314  , p_source_88            IN VARCHAR2
64315 --Entered Amount
64316  , p_source_91            IN NUMBER
64317 --Currency Conversion Date
64318  , p_source_92            IN DATE
64319 --Currency Conversion Rate
64320  , p_source_93            IN NUMBER
64321 --Currency Conversion Type
64322  , p_source_94            IN VARCHAR2
64323 --Accounted Amount
64324  , p_source_95            IN NUMBER
64325 --Accounting Line Type
64326  , p_source_97            IN NUMBER
64327 )
64328 IS
64329 
64330 l_component_type              VARCHAR2(80);
64331 l_component_code              VARCHAR2(30);
64332 l_component_type_code         VARCHAR2(1);
64333 l_component_appl_id           INTEGER;
64334 l_amb_context_code            VARCHAR2(30);
64335 l_entity_code                 VARCHAR2(30);
64336 l_event_class_code            VARCHAR2(30);
64337 l_ae_header_id                NUMBER;
64338 l_event_type_code             VARCHAR2(30);
64339 l_line_definition_code        VARCHAR2(30);
64340 l_line_definition_owner_code  VARCHAR2(1);
64341 --
64342 -- adr variables
64343 l_segment                     VARCHAR2(30);
64344 l_ccid                        NUMBER;
64345 l_adr_transaction_coa_id      NUMBER;
64346 l_adr_accounting_coa_id       NUMBER;
64347 l_adr_flexfield_segment_code  VARCHAR2(30);
64348 l_adr_flex_value_set_id       NUMBER;
64349 l_adr_value_type_code         VARCHAR2(30);
64350 l_adr_value_combination_id    NUMBER;
64351 l_adr_value_segment_code      VARCHAR2(30);
64352 
64353 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64354 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64355 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64356 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64357 
64358 -- 4262811 Variables ------------------------------------------------------------------------------------------
64359 l_entered_amt_idx             NUMBER;
64360 l_accted_amt_idx              NUMBER;
64361 l_acc_rev_flag                VARCHAR2(1);
64362 l_accrual_line_num            NUMBER;
64363 l_tmp_amt                     NUMBER;
64364 l_acc_rev_natural_side_code   VARCHAR2(1);
64365 
64366 l_num_entries                 NUMBER;
64367 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64368 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64369 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64370 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64371 l_recog_line_1                NUMBER;
64372 l_recog_line_2                NUMBER;
64373 
64374 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64375 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64376 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64377 
64378 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64379 
64380 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64381 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64382 
64383 ---------------------------------------------------------------------------------------------------------------
64384 
64385 
64386 --
64387 -- bulk performance
64388 --
64389 l_balance_type_code           VARCHAR2(1);
64390 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64391 l_log_module                  VARCHAR2(240);
64392 
64393 --
64394 -- Upgrade strategy
64395 --
64396 l_actual_upg_option           VARCHAR2(1);
64397 l_enc_upg_option           VARCHAR2(1);
64398 
64399 --
64400 BEGIN
64401 --
64402 IF g_log_enabled THEN
64403       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
64404 END IF;
64405 --
64406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64407 
64408       trace
64409          (p_msg      => 'BEGIN of AcctLineType_138'
64410          ,p_level    => C_LEVEL_PROCEDURE
64411          ,p_module   => l_log_module);
64412 
64413 END IF;
64414 --
64415 l_component_type             := 'AMB_JLT';
64416 l_component_code             := 'INTERCOMPANY_COGS';
64417 l_component_type_code        := 'S';
64418 l_component_appl_id          :=  707;
64419 l_amb_context_code           := 'DEFAULT';
64420 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
64421 l_event_class_code           := 'LOG_INTERCOMPANY';
64422 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
64423 l_line_definition_owner_code := 'S';
64424 l_line_definition_code       := 'PI_LOG_IC_RCPT_RETURN';
64425 --
64426 l_balance_type_code          := 'A';
64427 l_segment                     := NULL;
64428 l_ccid                        := NULL;
64429 l_adr_transaction_coa_id      := NULL;
64430 l_adr_accounting_coa_id       := NULL;
64431 l_adr_flexfield_segment_code  := NULL;
64432 l_adr_flex_value_set_id       := NULL;
64433 l_adr_value_type_code         := NULL;
64434 l_adr_value_combination_id    := NULL;
64435 l_adr_value_segment_code      := NULL;
64436 
64437 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64438 l_bflow_class_code           := '';    -- 4219869 Business Flow
64439 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64440 l_budgetary_control_flag     := 'N';
64441 
64442 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64443 l_bflow_applied_to_amt       := NULL; -- 5132302
64444 l_entered_amt_idx            := NULL;          -- 4262811
64445 l_accted_amt_idx             := NULL;          -- 4262811
64446 l_acc_rev_flag               := NULL;          -- 4262811
64447 l_accrual_line_num           := NULL;          -- 4262811
64448 l_tmp_amt                    := NULL;          -- 4262811
64449 --
64450  
64451 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64452     l_balance_type_code <> 'B' THEN
64453 IF NVL(p_source_97,9E125) =  2 AND 
64454 ((p_source_95 >=  0 AND 
64455 NVL(p_source_62,9E125) =  9) OR 
64456 (p_source_95 <=  0 AND 
64457 NVL(p_source_62,9E125) =  14)
64458 ) THEN 
64459 
64460    --
64461    XLA_AE_LINES_PKG.SetNewLine;
64462 
64463    p_balance_type_code          := l_balance_type_code;
64464    -- set the flag so later we will know whether the gain loss line needs to be created
64465    
64466    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64467      p_actual_flag :='A';
64468    END IF;
64469 
64470    --
64471    -- bulk performance
64472    --
64473    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64474                                       p_header_num   => 0); -- 4262811
64475    --
64476    -- set accounting line options
64477    --
64478    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64479            p_natural_side_code          => 'D'
64480          , p_gain_or_loss_flag          => 'N'
64481          , p_gl_transfer_mode_code      => 'S'
64482          , p_acct_entry_type_code       => 'A'
64483          , p_switch_side_flag           => 'Y'
64484          , p_merge_duplicate_code       => 'N'
64485          );
64486    --
64487    l_acc_rev_natural_side_code := 'C';  -- 4262811
64488    -- 
64489    --
64490    -- set accounting line type info
64491    --
64492    xla_ae_lines_pkg.SetAcctLineType
64493       (p_component_type             => l_component_type
64494       ,p_event_type_code            => l_event_type_code
64495       ,p_line_definition_owner_code => l_line_definition_owner_code
64496       ,p_line_definition_code       => l_line_definition_code
64497       ,p_accounting_line_code       => l_component_code
64498       ,p_accounting_line_type_code  => l_component_type_code
64499       ,p_accounting_line_appl_id    => l_component_appl_id
64500       ,p_amb_context_code           => l_amb_context_code
64501       ,p_entity_code                => l_entity_code
64502       ,p_event_class_code           => l_event_class_code);
64503    --
64504    -- set accounting class
64505    --
64506    xla_ae_lines_pkg.SetAcctClass(
64507            p_accounting_class_code  => 'INTERCOMPANY_COGS'
64508          , p_ae_header_id           => l_ae_header_id
64509          );
64510 
64511    --
64512    -- set rounding class
64513    --
64514    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64515                       'INTERCOMPANY_COGS';
64516 
64517    --
64518    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64519    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64520    --
64521    -- bulk performance
64522    --
64523    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64524 
64525    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64526       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64527 
64528    -- 4955764
64529    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64531 
64532    -- 4458381 Public Sector Enh
64533    
64534    --
64535    -- set accounting attributes for the line type
64536    --
64537    l_entered_amt_idx := 3;
64538    l_accted_amt_idx  := 8;
64539    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64540    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64541    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
64542    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64543    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
64544    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64545    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
64546    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64547    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
64548    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64549    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
64550    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64551    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
64552    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64553    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
64554    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64555    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
64556 
64557    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64558    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64559 
64560    ---------------------------------------------------------------------------------------------------------------
64561    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64562    ---------------------------------------------------------------------------------------------------------------
64563    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64564 
64565    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64566    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64567 
64568    IF xla_accounting_cache_pkg.GetValueChar
64569          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64570          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64571    AND l_bflow_method_code = 'PRIOR_ENTRY'
64572 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64573    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64574          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64575        )
64576    THEN
64577          xla_ae_lines_pkg.BflowUpgEntry
64578            (p_business_method_code    => l_bflow_method_code
64579            ,p_business_class_code     => l_bflow_class_code
64580            ,p_balance_type            => l_balance_type_code);
64581    ELSE
64582       NULL;
64583 -- No business flow processing for business flow method of NONE.
64584    END IF;
64585 
64586    --
64587    -- call analytical criteria
64588    --
64589    
64590    --
64591    -- call description
64592    --
64593    
64594 xla_ae_lines_pkg.SetLineDescription(
64595    p_ae_header_id => l_ae_header_id
64596   ,p_description  => Description_1 (
64597      p_application_id         => p_application_id
64598    , p_ae_header_id           => l_ae_header_id 
64599 , p_source_1 => p_source_1
64600 , p_source_2 => p_source_2
64601 , p_source_3 => p_source_3
64602 , p_source_4 => p_source_4
64603 , p_source_5 => p_source_5
64604    )
64605 );
64606 
64607 
64608    --
64609    -- call ADRs
64610    -- Bug 4922099
64611    --
64612    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64613         (NVL(l_actual_upg_option, 'N') = 'O') OR
64614         (NVL(l_enc_upg_option, 'N') = 'O')
64615       )
64616    THEN
64617    NULL;
64618    --
64619    --
64620    
64621   l_ccid := AcctDerRule_6(
64622            p_application_id           => p_application_id
64623          , p_ae_header_id             => l_ae_header_id 
64624 , p_source_11 => p_source_11
64625          , x_transaction_coa_id       => l_adr_transaction_coa_id
64626          , x_accounting_coa_id        => l_adr_accounting_coa_id
64627          , x_value_type_code          => l_adr_value_type_code
64628          , p_side                     => 'NA'
64629    );
64630 
64631    xla_ae_lines_pkg.set_ccid(
64632     p_code_combination_id          => l_ccid
64633   , p_value_type_code              => l_adr_value_type_code
64634   , p_transaction_coa_id           => l_adr_transaction_coa_id
64635   , p_accounting_coa_id            => l_adr_accounting_coa_id
64636   , p_adr_code                     => 'CST_DEFAULT'
64637   , p_adr_type_code                => 'S'
64638   , p_component_type               => l_component_type
64639   , p_component_code               => l_component_code
64640   , p_component_type_code          => l_component_type_code
64641   , p_component_appl_id            => l_component_appl_id
64642   , p_amb_context_code             => l_amb_context_code
64643   , p_side                         => 'NA'
64644   );
64645 
64646 
64647    --
64648    --
64649    END IF;
64650    --
64651    -- Bug 4922099
64652    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64653           (NVL(l_enc_upg_option, 'N') = 'O')
64654         ) AND
64655         (l_bflow_method_code = 'PRIOR_ENTRY')
64656       )
64657    THEN
64658       IF
64659       --
64660       1 = 2
64661       --
64662       THEN
64663       xla_accounting_err_pkg.build_message
64664                                     (p_appli_s_name            => 'XLA'
64665                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64666                                     ,p_token_1                 => 'LINE_NUMBER'
64667                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64668                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64669                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64670                                                                              l_component_type
64671                                                                             ,l_component_code
64672                                                                             ,l_component_type_code
64673                                                                             ,l_component_appl_id
64674                                                                             ,l_amb_context_code
64675                                                                             ,l_entity_code
64676                                                                             ,l_event_class_code
64677                                                                            )
64678                                     ,p_token_3                 => 'OWNER'
64679                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64680                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64681                                                                           ,p_lookup_code    => l_component_type_code
64682                                                                          )
64683                                     ,p_token_4                 => 'PRODUCT_NAME'
64684                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64685                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64686                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64687                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64688                                     ,p_ae_header_id            =>  NULL
64689                                        );
64690 
64691         IF (C_LEVEL_ERROR>= g_log_level) THEN
64692                  trace
64693                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64694                       ,p_level    => C_LEVEL_ERROR
64695                       ,p_module   => l_log_module);
64696         END IF;
64697       END IF;
64698    END IF;
64699    --
64700    --
64701    ------------------------------------------------------------------------------------------------
64702    -- 4219869 Business Flow
64703    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64704    -- Prior Entry.  Currently, the following code is always generated.
64705    ------------------------------------------------------------------------------------------------
64706    XLA_AE_LINES_PKG.ValidateCurrentLine;
64707 
64708    ------------------------------------------------------------------------------------
64709    -- 4219869 Business Flow
64710    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64711    ------------------------------------------------------------------------------------
64712    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64713 
64714    ----------------------------------------------------------------------------------
64715    -- 4219869 Business Flow
64716    -- Update journal entry status -- Need to generate this within IF <condition>
64717    ----------------------------------------------------------------------------------
64718    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64719          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64720          ,p_balance_type_code => l_balance_type_code
64721          );
64722 
64723    -------------------------------------------------------------------------------------------
64724    -- 4262811 - Generate the Accrual Reversal lines
64725    -------------------------------------------------------------------------------------------
64726    BEGIN
64727       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64728                               (g_array_event(p_event_id).array_value_num('header_index'));
64729       IF l_acc_rev_flag IS NULL THEN
64730          l_acc_rev_flag := 'N';
64731       END IF;
64732    EXCEPTION
64733       WHEN OTHERS THEN
64734          l_acc_rev_flag := 'N';
64735    END;
64736    --
64737    IF (l_acc_rev_flag = 'Y') THEN
64738 
64739        -- 4645092  ------------------------------------------------------------------------------
64740        -- To allow MPA report to determine if it should generate report process
64741        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64742        ------------------------------------------------------------------------------------------
64743 
64744        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64745        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64746    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64747    -- call ADRs
64748    -- Bug 4922099
64749    --
64750    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64751         (NVL(l_actual_upg_option, 'N') = 'O') OR
64752         (NVL(l_enc_upg_option, 'N') = 'O')
64753       )
64754    THEN
64755    NULL;
64756    --
64757    --
64758    
64759   l_ccid := AcctDerRule_6(
64760            p_application_id           => p_application_id
64761          , p_ae_header_id             => l_ae_header_id 
64762 , p_source_11 => p_source_11
64763          , x_transaction_coa_id       => l_adr_transaction_coa_id
64764          , x_accounting_coa_id        => l_adr_accounting_coa_id
64765          , x_value_type_code          => l_adr_value_type_code
64766          , p_side                     => 'NA'
64767    );
64768 
64769    xla_ae_lines_pkg.set_ccid(
64770     p_code_combination_id          => l_ccid
64771   , p_value_type_code              => l_adr_value_type_code
64772   , p_transaction_coa_id           => l_adr_transaction_coa_id
64773   , p_accounting_coa_id            => l_adr_accounting_coa_id
64774   , p_adr_code                     => 'CST_DEFAULT'
64775   , p_adr_type_code                => 'S'
64776   , p_component_type               => l_component_type
64777   , p_component_code               => l_component_code
64778   , p_component_type_code          => l_component_type_code
64779   , p_component_appl_id            => l_component_appl_id
64780   , p_amb_context_code             => l_amb_context_code
64781   , p_side                         => 'NA'
64782   );
64783 
64784 
64785    --
64786    --
64787    END IF;
64788 
64789        --
64790        -- Update the line information that should be overwritten
64791        --
64792        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64793                                          p_header_num   => 1);
64794        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64795 
64796        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64797 
64798        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64799           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64800        END IF;
64801 
64802       --
64803       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64804       --
64805       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64806           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64807       ELSE
64808           ---------------------------------------------------------------------------------------------------
64809           -- 4262811a Switch Sign
64810           ---------------------------------------------------------------------------------------------------
64811           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64812           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64813                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64814           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64815                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64816           -- 5132302
64817           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64818                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64819 
64820       END IF;
64821 
64822       -- 4955764
64823       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64824       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64825 
64826 
64827       XLA_AE_LINES_PKG.ValidateCurrentLine;
64828       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64829 
64830       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64831                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64832                ,p_balance_type_code => l_balance_type_code);
64833 
64834    END IF;
64835 
64836    -----------------------------------------------------------------------------------------
64837    -- 4262811 Multiperiod Accounting
64838    -----------------------------------------------------------------------------------------
64839      -- No MPA option is assigned.
64840 
64841 
64842 END IF;
64843 END IF;
64844 --
64845 
64846 --
64847 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64848    trace
64849       (p_msg      => 'END of AcctLineType_138'
64850       ,p_level    => C_LEVEL_PROCEDURE
64851       ,p_module   => l_log_module);
64852 END IF;
64853 --
64854 EXCEPTION
64855   WHEN xla_exceptions_pkg.application_exception THEN
64856       RAISE;
64857   WHEN OTHERS THEN
64858        xla_exceptions_pkg.raise_message
64859            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_138');
64860 END AcctLineType_138;
64861 --
64862 
64863 ---------------------------------------
64864 --
64865 -- PRIVATE FUNCTION
64866 --         AcctLineType_139
64867 --
64868 ---------------------------------------
64869 PROCEDURE AcctLineType_139 (
64870   p_application_id        IN NUMBER
64871  ,p_event_id              IN NUMBER
64872  ,p_calculate_acctd_flag  IN VARCHAR2
64873  ,p_calculate_g_l_flag    IN VARCHAR2
64874  ,p_actual_flag           IN OUT VARCHAR2
64875  ,p_balance_type_code     OUT VARCHAR2
64876  ,p_gain_or_loss_ref      OUT VARCHAR2
64877  
64878 --Cost Management Default Account
64879  , p_source_11            IN NUMBER
64880 --Receiving Accounting Line Type
64881  , p_source_78            IN VARCHAR2
64882 --DISTRIBUTION_IDENTIFIER
64883  , p_source_84            IN NUMBER
64884 --Distribution Type
64885  , p_source_85            IN VARCHAR2
64886  , p_source_85_meaning    IN VARCHAR2
64887 --Entered Currency Code
64888  , p_source_88            IN VARCHAR2
64889 --Entered Amount
64890  , p_source_91            IN NUMBER
64891 --Currency Conversion Date
64892  , p_source_92            IN DATE
64893 --Currency Conversion Rate
64894  , p_source_93            IN NUMBER
64895 --Currency Conversion Type
64896  , p_source_94            IN VARCHAR2
64897 --Accounted Amount
64898  , p_source_95            IN NUMBER
64899 )
64900 IS
64901 
64902 l_component_type              VARCHAR2(80);
64903 l_component_code              VARCHAR2(30);
64904 l_component_type_code         VARCHAR2(1);
64905 l_component_appl_id           INTEGER;
64906 l_amb_context_code            VARCHAR2(30);
64907 l_entity_code                 VARCHAR2(30);
64908 l_event_class_code            VARCHAR2(30);
64909 l_ae_header_id                NUMBER;
64910 l_event_type_code             VARCHAR2(30);
64911 l_line_definition_code        VARCHAR2(30);
64912 l_line_definition_owner_code  VARCHAR2(1);
64913 --
64914 -- adr variables
64915 l_segment                     VARCHAR2(30);
64916 l_ccid                        NUMBER;
64917 l_adr_transaction_coa_id      NUMBER;
64918 l_adr_accounting_coa_id       NUMBER;
64919 l_adr_flexfield_segment_code  VARCHAR2(30);
64920 l_adr_flex_value_set_id       NUMBER;
64921 l_adr_value_type_code         VARCHAR2(30);
64922 l_adr_value_combination_id    NUMBER;
64923 l_adr_value_segment_code      VARCHAR2(30);
64924 
64925 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64926 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64927 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64928 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64929 
64930 -- 4262811 Variables ------------------------------------------------------------------------------------------
64931 l_entered_amt_idx             NUMBER;
64932 l_accted_amt_idx              NUMBER;
64933 l_acc_rev_flag                VARCHAR2(1);
64934 l_accrual_line_num            NUMBER;
64935 l_tmp_amt                     NUMBER;
64936 l_acc_rev_natural_side_code   VARCHAR2(1);
64937 
64938 l_num_entries                 NUMBER;
64939 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64940 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64941 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64942 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64943 l_recog_line_1                NUMBER;
64944 l_recog_line_2                NUMBER;
64945 
64946 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64947 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64948 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64949 
64950 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64951 
64952 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64953 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64954 
64955 ---------------------------------------------------------------------------------------------------------------
64956 
64957 
64958 --
64959 -- bulk performance
64960 --
64961 l_balance_type_code           VARCHAR2(1);
64962 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64963 l_log_module                  VARCHAR2(240);
64964 
64965 --
64966 -- Upgrade strategy
64967 --
64968 l_actual_upg_option           VARCHAR2(1);
64969 l_enc_upg_option           VARCHAR2(1);
64970 
64971 --
64972 BEGIN
64973 --
64974 IF g_log_enabled THEN
64975       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
64976 END IF;
64977 --
64978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64979 
64980       trace
64981          (p_msg      => 'BEGIN of AcctLineType_139'
64982          ,p_level    => C_LEVEL_PROCEDURE
64983          ,p_module   => l_log_module);
64984 
64985 END IF;
64986 --
64987 l_component_type             := 'AMB_JLT';
64988 l_component_code             := 'INTERCOMPANY_COGS';
64989 l_component_type_code        := 'S';
64990 l_component_appl_id          :=  707;
64991 l_amb_context_code           := 'DEFAULT';
64992 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
64993 l_event_class_code           := 'RCPT_REC_INSP';
64994 l_event_type_code            := 'RCPT_REC_INSP_ALL';
64995 l_line_definition_owner_code := 'S';
64996 l_line_definition_code       := 'RCPT_REC_INSP';
64997 --
64998 l_balance_type_code          := 'A';
64999 l_segment                     := NULL;
65000 l_ccid                        := NULL;
65001 l_adr_transaction_coa_id      := NULL;
65002 l_adr_accounting_coa_id       := NULL;
65003 l_adr_flexfield_segment_code  := NULL;
65004 l_adr_flex_value_set_id       := NULL;
65005 l_adr_value_type_code         := NULL;
65006 l_adr_value_combination_id    := NULL;
65007 l_adr_value_segment_code      := NULL;
65008 
65009 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65010 l_bflow_class_code           := '';    -- 4219869 Business Flow
65011 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65012 l_budgetary_control_flag     := 'N';
65013 
65014 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65015 l_bflow_applied_to_amt       := NULL; -- 5132302
65016 l_entered_amt_idx            := NULL;          -- 4262811
65017 l_accted_amt_idx             := NULL;          -- 4262811
65018 l_acc_rev_flag               := NULL;          -- 4262811
65019 l_accrual_line_num           := NULL;          -- 4262811
65020 l_tmp_amt                    := NULL;          -- 4262811
65021 --
65022  
65023 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65024     l_balance_type_code <> 'B' THEN
65025 IF NVL(p_source_78,'
65026 ') =  'IC Cost of Sales'
65027  THEN 
65028 
65029    --
65030    XLA_AE_LINES_PKG.SetNewLine;
65031 
65032    p_balance_type_code          := l_balance_type_code;
65033    -- set the flag so later we will know whether the gain loss line needs to be created
65034    
65035    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65036      p_actual_flag :='A';
65037    END IF;
65038 
65039    --
65040    -- bulk performance
65041    --
65042    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65043                                       p_header_num   => 0); -- 4262811
65044    --
65045    -- set accounting line options
65046    --
65047    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65048            p_natural_side_code          => 'D'
65049          , p_gain_or_loss_flag          => 'N'
65050          , p_gl_transfer_mode_code      => 'S'
65051          , p_acct_entry_type_code       => 'A'
65052          , p_switch_side_flag           => 'Y'
65053          , p_merge_duplicate_code       => 'N'
65054          );
65055    --
65056    l_acc_rev_natural_side_code := 'C';  -- 4262811
65057    -- 
65058    --
65059    -- set accounting line type info
65060    --
65061    xla_ae_lines_pkg.SetAcctLineType
65062       (p_component_type             => l_component_type
65063       ,p_event_type_code            => l_event_type_code
65064       ,p_line_definition_owner_code => l_line_definition_owner_code
65065       ,p_line_definition_code       => l_line_definition_code
65066       ,p_accounting_line_code       => l_component_code
65067       ,p_accounting_line_type_code  => l_component_type_code
65068       ,p_accounting_line_appl_id    => l_component_appl_id
65069       ,p_amb_context_code           => l_amb_context_code
65070       ,p_entity_code                => l_entity_code
65071       ,p_event_class_code           => l_event_class_code);
65072    --
65073    -- set accounting class
65074    --
65075    xla_ae_lines_pkg.SetAcctClass(
65076            p_accounting_class_code  => 'INTERCOMPANY_COGS'
65077          , p_ae_header_id           => l_ae_header_id
65078          );
65079 
65080    --
65081    -- set rounding class
65082    --
65083    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65084                       'INTERCOMPANY_COGS';
65085 
65086    --
65087    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65088    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65089    --
65090    -- bulk performance
65091    --
65092    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65093 
65094    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65095       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65096 
65097    -- 4955764
65098    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65099       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65100 
65101    -- 4458381 Public Sector Enh
65102    
65103    --
65104    -- set accounting attributes for the line type
65105    --
65106    l_entered_amt_idx := 3;
65107    l_accted_amt_idx  := 8;
65108    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65109    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65110    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
65111    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65112    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
65113    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65114    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
65115    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65116    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
65117    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65118    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
65119    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65120    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
65121    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65122    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
65123    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65124    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
65125 
65126    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65127    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65128 
65129    ---------------------------------------------------------------------------------------------------------------
65130    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65131    ---------------------------------------------------------------------------------------------------------------
65132    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65133 
65134    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65135    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65136 
65137    IF xla_accounting_cache_pkg.GetValueChar
65138          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65139          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65140    AND l_bflow_method_code = 'PRIOR_ENTRY'
65141 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65142    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65143          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65144        )
65145    THEN
65146          xla_ae_lines_pkg.BflowUpgEntry
65147            (p_business_method_code    => l_bflow_method_code
65148            ,p_business_class_code     => l_bflow_class_code
65149            ,p_balance_type            => l_balance_type_code);
65150    ELSE
65151       NULL;
65152 -- No business flow processing for business flow method of NONE.
65153    END IF;
65154 
65155    --
65156    -- call analytical criteria
65157    --
65158    
65159    --
65160    -- call description
65161    --
65162    -- No description or it is inherited.
65163    --
65164    -- call ADRs
65165    -- Bug 4922099
65166    --
65167    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65168         (NVL(l_actual_upg_option, 'N') = 'O') OR
65169         (NVL(l_enc_upg_option, 'N') = 'O')
65170       )
65171    THEN
65172    NULL;
65173    --
65174    --
65175    
65176   l_ccid := AcctDerRule_6(
65177            p_application_id           => p_application_id
65178          , p_ae_header_id             => l_ae_header_id 
65179 , p_source_11 => p_source_11
65180          , x_transaction_coa_id       => l_adr_transaction_coa_id
65181          , x_accounting_coa_id        => l_adr_accounting_coa_id
65182          , x_value_type_code          => l_adr_value_type_code
65183          , p_side                     => 'NA'
65184    );
65185 
65186    xla_ae_lines_pkg.set_ccid(
65187     p_code_combination_id          => l_ccid
65188   , p_value_type_code              => l_adr_value_type_code
65189   , p_transaction_coa_id           => l_adr_transaction_coa_id
65190   , p_accounting_coa_id            => l_adr_accounting_coa_id
65191   , p_adr_code                     => 'CST_DEFAULT'
65192   , p_adr_type_code                => 'S'
65193   , p_component_type               => l_component_type
65194   , p_component_code               => l_component_code
65195   , p_component_type_code          => l_component_type_code
65196   , p_component_appl_id            => l_component_appl_id
65197   , p_amb_context_code             => l_amb_context_code
65198   , p_side                         => 'NA'
65199   );
65200 
65201 
65202    --
65203    --
65204    END IF;
65205    --
65206    -- Bug 4922099
65207    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65208           (NVL(l_enc_upg_option, 'N') = 'O')
65209         ) AND
65210         (l_bflow_method_code = 'PRIOR_ENTRY')
65211       )
65212    THEN
65213       IF
65214       --
65215       1 = 2
65216       --
65217       THEN
65218       xla_accounting_err_pkg.build_message
65219                                     (p_appli_s_name            => 'XLA'
65220                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65221                                     ,p_token_1                 => 'LINE_NUMBER'
65222                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65223                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65224                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65225                                                                              l_component_type
65226                                                                             ,l_component_code
65227                                                                             ,l_component_type_code
65228                                                                             ,l_component_appl_id
65229                                                                             ,l_amb_context_code
65230                                                                             ,l_entity_code
65231                                                                             ,l_event_class_code
65232                                                                            )
65233                                     ,p_token_3                 => 'OWNER'
65234                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65235                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65236                                                                           ,p_lookup_code    => l_component_type_code
65237                                                                          )
65238                                     ,p_token_4                 => 'PRODUCT_NAME'
65239                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65240                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65241                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65242                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65243                                     ,p_ae_header_id            =>  NULL
65244                                        );
65245 
65246         IF (C_LEVEL_ERROR>= g_log_level) THEN
65247                  trace
65248                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65249                       ,p_level    => C_LEVEL_ERROR
65250                       ,p_module   => l_log_module);
65251         END IF;
65252       END IF;
65253    END IF;
65254    --
65255    --
65256    ------------------------------------------------------------------------------------------------
65257    -- 4219869 Business Flow
65258    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65259    -- Prior Entry.  Currently, the following code is always generated.
65260    ------------------------------------------------------------------------------------------------
65261    XLA_AE_LINES_PKG.ValidateCurrentLine;
65262 
65263    ------------------------------------------------------------------------------------
65264    -- 4219869 Business Flow
65265    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65266    ------------------------------------------------------------------------------------
65267    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65268 
65269    ----------------------------------------------------------------------------------
65270    -- 4219869 Business Flow
65271    -- Update journal entry status -- Need to generate this within IF <condition>
65272    ----------------------------------------------------------------------------------
65273    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65274          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65275          ,p_balance_type_code => l_balance_type_code
65276          );
65277 
65278    -------------------------------------------------------------------------------------------
65279    -- 4262811 - Generate the Accrual Reversal lines
65280    -------------------------------------------------------------------------------------------
65281    BEGIN
65282       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65283                               (g_array_event(p_event_id).array_value_num('header_index'));
65284       IF l_acc_rev_flag IS NULL THEN
65285          l_acc_rev_flag := 'N';
65286       END IF;
65287    EXCEPTION
65288       WHEN OTHERS THEN
65289          l_acc_rev_flag := 'N';
65290    END;
65291    --
65292    IF (l_acc_rev_flag = 'Y') THEN
65293 
65294        -- 4645092  ------------------------------------------------------------------------------
65295        -- To allow MPA report to determine if it should generate report process
65296        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65297        ------------------------------------------------------------------------------------------
65298 
65299        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65300        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65301    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65302    -- call ADRs
65303    -- Bug 4922099
65304    --
65305    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65306         (NVL(l_actual_upg_option, 'N') = 'O') OR
65307         (NVL(l_enc_upg_option, 'N') = 'O')
65308       )
65309    THEN
65310    NULL;
65311    --
65312    --
65313    
65314   l_ccid := AcctDerRule_6(
65315            p_application_id           => p_application_id
65316          , p_ae_header_id             => l_ae_header_id 
65317 , p_source_11 => p_source_11
65318          , x_transaction_coa_id       => l_adr_transaction_coa_id
65319          , x_accounting_coa_id        => l_adr_accounting_coa_id
65320          , x_value_type_code          => l_adr_value_type_code
65321          , p_side                     => 'NA'
65322    );
65323 
65324    xla_ae_lines_pkg.set_ccid(
65325     p_code_combination_id          => l_ccid
65326   , p_value_type_code              => l_adr_value_type_code
65327   , p_transaction_coa_id           => l_adr_transaction_coa_id
65328   , p_accounting_coa_id            => l_adr_accounting_coa_id
65329   , p_adr_code                     => 'CST_DEFAULT'
65330   , p_adr_type_code                => 'S'
65331   , p_component_type               => l_component_type
65332   , p_component_code               => l_component_code
65333   , p_component_type_code          => l_component_type_code
65334   , p_component_appl_id            => l_component_appl_id
65335   , p_amb_context_code             => l_amb_context_code
65336   , p_side                         => 'NA'
65337   );
65338 
65339 
65340    --
65341    --
65342    END IF;
65343 
65344        --
65345        -- Update the line information that should be overwritten
65346        --
65347        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65348                                          p_header_num   => 1);
65349        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65350 
65351        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65352 
65353        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65354           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65355        END IF;
65356 
65357       --
65358       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65359       --
65360       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65361           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65362       ELSE
65363           ---------------------------------------------------------------------------------------------------
65364           -- 4262811a Switch Sign
65365           ---------------------------------------------------------------------------------------------------
65366           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65367           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65368                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65369           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65370                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65371           -- 5132302
65372           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65373                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65374 
65375       END IF;
65376 
65377       -- 4955764
65378       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65379       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65380 
65381 
65382       XLA_AE_LINES_PKG.ValidateCurrentLine;
65383       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65384 
65385       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65386                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65387                ,p_balance_type_code => l_balance_type_code);
65388 
65389    END IF;
65390 
65391    -----------------------------------------------------------------------------------------
65392    -- 4262811 Multiperiod Accounting
65393    -----------------------------------------------------------------------------------------
65394      -- No MPA option is assigned.
65395 
65396 
65397 END IF;
65398 END IF;
65399 --
65400 
65401 --
65402 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65403    trace
65404       (p_msg      => 'END of AcctLineType_139'
65405       ,p_level    => C_LEVEL_PROCEDURE
65406       ,p_module   => l_log_module);
65407 END IF;
65408 --
65409 EXCEPTION
65410   WHEN xla_exceptions_pkg.application_exception THEN
65411       RAISE;
65412   WHEN OTHERS THEN
65413        xla_exceptions_pkg.raise_message
65414            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_139');
65415 END AcctLineType_139;
65416 --
65417 
65418 ---------------------------------------
65419 --
65420 -- PRIVATE FUNCTION
65421 --         AcctLineType_140
65422 --
65423 ---------------------------------------
65424 PROCEDURE AcctLineType_140 (
65425   p_application_id        IN NUMBER
65426  ,p_event_id              IN NUMBER
65427  ,p_calculate_acctd_flag  IN VARCHAR2
65428  ,p_calculate_g_l_flag    IN VARCHAR2
65429  ,p_actual_flag           IN OUT VARCHAR2
65430  ,p_balance_type_code     OUT VARCHAR2
65431  ,p_gain_or_loss_ref      OUT VARCHAR2
65432  
65433 --Cost Management Default Account
65434  , p_source_11            IN NUMBER
65435 --Receiving Accounting Line Type
65436  , p_source_78            IN VARCHAR2
65437 --DISTRIBUTION_IDENTIFIER
65438  , p_source_84            IN NUMBER
65439 --Distribution Type
65440  , p_source_85            IN VARCHAR2
65441  , p_source_85_meaning    IN VARCHAR2
65442 --Entered Currency Code
65443  , p_source_88            IN VARCHAR2
65444 --Entered Amount
65445  , p_source_91            IN NUMBER
65446 --Currency Conversion Date
65447  , p_source_92            IN DATE
65448 --Currency Conversion Rate
65449  , p_source_93            IN NUMBER
65450 --Currency Conversion Type
65451  , p_source_94            IN VARCHAR2
65452 --Accounted Amount
65453  , p_source_95            IN NUMBER
65454 )
65455 IS
65456 
65457 l_component_type              VARCHAR2(80);
65458 l_component_code              VARCHAR2(30);
65459 l_component_type_code         VARCHAR2(1);
65460 l_component_appl_id           INTEGER;
65461 l_amb_context_code            VARCHAR2(30);
65462 l_entity_code                 VARCHAR2(30);
65463 l_event_class_code            VARCHAR2(30);
65464 l_ae_header_id                NUMBER;
65465 l_event_type_code             VARCHAR2(30);
65466 l_line_definition_code        VARCHAR2(30);
65467 l_line_definition_owner_code  VARCHAR2(1);
65468 --
65469 -- adr variables
65470 l_segment                     VARCHAR2(30);
65471 l_ccid                        NUMBER;
65472 l_adr_transaction_coa_id      NUMBER;
65473 l_adr_accounting_coa_id       NUMBER;
65474 l_adr_flexfield_segment_code  VARCHAR2(30);
65475 l_adr_flex_value_set_id       NUMBER;
65476 l_adr_value_type_code         VARCHAR2(30);
65477 l_adr_value_combination_id    NUMBER;
65478 l_adr_value_segment_code      VARCHAR2(30);
65479 
65480 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65481 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65482 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65483 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65484 
65485 -- 4262811 Variables ------------------------------------------------------------------------------------------
65486 l_entered_amt_idx             NUMBER;
65487 l_accted_amt_idx              NUMBER;
65488 l_acc_rev_flag                VARCHAR2(1);
65489 l_accrual_line_num            NUMBER;
65490 l_tmp_amt                     NUMBER;
65491 l_acc_rev_natural_side_code   VARCHAR2(1);
65492 
65493 l_num_entries                 NUMBER;
65494 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65495 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65496 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65497 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65498 l_recog_line_1                NUMBER;
65499 l_recog_line_2                NUMBER;
65500 
65501 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65502 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65503 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65504 
65505 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65506 
65507 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65508 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65509 
65510 ---------------------------------------------------------------------------------------------------------------
65511 
65512 
65513 --
65514 -- bulk performance
65515 --
65516 l_balance_type_code           VARCHAR2(1);
65517 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65518 l_log_module                  VARCHAR2(240);
65519 
65520 --
65521 -- Upgrade strategy
65522 --
65523 l_actual_upg_option           VARCHAR2(1);
65524 l_enc_upg_option           VARCHAR2(1);
65525 
65526 --
65527 BEGIN
65528 --
65529 IF g_log_enabled THEN
65530       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
65531 END IF;
65532 --
65533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65534 
65535       trace
65536          (p_msg      => 'BEGIN of AcctLineType_140'
65537          ,p_level    => C_LEVEL_PROCEDURE
65538          ,p_module   => l_log_module);
65539 
65540 END IF;
65541 --
65542 l_component_type             := 'AMB_JLT';
65543 l_component_code             := 'INTERCOMPANY_COGS';
65544 l_component_type_code        := 'S';
65545 l_component_appl_id          :=  707;
65546 l_amb_context_code           := 'DEFAULT';
65547 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
65548 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
65549 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
65550 l_line_definition_owner_code := 'S';
65551 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
65552 --
65553 l_balance_type_code          := 'A';
65554 l_segment                     := NULL;
65555 l_ccid                        := NULL;
65556 l_adr_transaction_coa_id      := NULL;
65557 l_adr_accounting_coa_id       := NULL;
65558 l_adr_flexfield_segment_code  := NULL;
65559 l_adr_flex_value_set_id       := NULL;
65560 l_adr_value_type_code         := NULL;
65561 l_adr_value_combination_id    := NULL;
65562 l_adr_value_segment_code      := NULL;
65563 
65564 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65565 l_bflow_class_code           := '';    -- 4219869 Business Flow
65566 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65567 l_budgetary_control_flag     := 'N';
65568 
65569 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65570 l_bflow_applied_to_amt       := NULL; -- 5132302
65571 l_entered_amt_idx            := NULL;          -- 4262811
65572 l_accted_amt_idx             := NULL;          -- 4262811
65573 l_acc_rev_flag               := NULL;          -- 4262811
65574 l_accrual_line_num           := NULL;          -- 4262811
65575 l_tmp_amt                    := NULL;          -- 4262811
65576 --
65577  
65578 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65579     l_balance_type_code <> 'B' THEN
65580 IF NVL(p_source_78,'
65581 ') =  'IC Cost of Sales'
65582  THEN 
65583 
65584    --
65585    XLA_AE_LINES_PKG.SetNewLine;
65586 
65587    p_balance_type_code          := l_balance_type_code;
65588    -- set the flag so later we will know whether the gain loss line needs to be created
65589    
65590    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65591      p_actual_flag :='A';
65592    END IF;
65593 
65594    --
65595    -- bulk performance
65596    --
65597    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65598                                       p_header_num   => 0); -- 4262811
65599    --
65600    -- set accounting line options
65601    --
65602    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65603            p_natural_side_code          => 'D'
65604          , p_gain_or_loss_flag          => 'N'
65605          , p_gl_transfer_mode_code      => 'S'
65606          , p_acct_entry_type_code       => 'A'
65607          , p_switch_side_flag           => 'Y'
65608          , p_merge_duplicate_code       => 'N'
65609          );
65610    --
65611    l_acc_rev_natural_side_code := 'C';  -- 4262811
65612    -- 
65613    --
65614    -- set accounting line type info
65615    --
65616    xla_ae_lines_pkg.SetAcctLineType
65617       (p_component_type             => l_component_type
65618       ,p_event_type_code            => l_event_type_code
65619       ,p_line_definition_owner_code => l_line_definition_owner_code
65620       ,p_line_definition_code       => l_line_definition_code
65621       ,p_accounting_line_code       => l_component_code
65622       ,p_accounting_line_type_code  => l_component_type_code
65623       ,p_accounting_line_appl_id    => l_component_appl_id
65624       ,p_amb_context_code           => l_amb_context_code
65625       ,p_entity_code                => l_entity_code
65626       ,p_event_class_code           => l_event_class_code);
65627    --
65628    -- set accounting class
65629    --
65630    xla_ae_lines_pkg.SetAcctClass(
65631            p_accounting_class_code  => 'INTERCOMPANY_COGS'
65632          , p_ae_header_id           => l_ae_header_id
65633          );
65634 
65635    --
65636    -- set rounding class
65637    --
65638    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65639                       'INTERCOMPANY_COGS';
65640 
65641    --
65642    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65643    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65644    --
65645    -- bulk performance
65646    --
65647    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65648 
65649    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65650       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65651 
65652    -- 4955764
65653    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65654       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65655 
65656    -- 4458381 Public Sector Enh
65657    
65658    --
65659    -- set accounting attributes for the line type
65660    --
65661    l_entered_amt_idx := 3;
65662    l_accted_amt_idx  := 8;
65663    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65664    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65665    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
65666    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65667    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
65668    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65669    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
65670    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65671    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
65672    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65673    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
65674    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65675    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
65676    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65677    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
65678    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65679    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
65680 
65681    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65682    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65683 
65684    ---------------------------------------------------------------------------------------------------------------
65685    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65686    ---------------------------------------------------------------------------------------------------------------
65687    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65688 
65689    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65690    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65691 
65692    IF xla_accounting_cache_pkg.GetValueChar
65693          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65694          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65695    AND l_bflow_method_code = 'PRIOR_ENTRY'
65696 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65697    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65698          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65699        )
65700    THEN
65701          xla_ae_lines_pkg.BflowUpgEntry
65702            (p_business_method_code    => l_bflow_method_code
65703            ,p_business_class_code     => l_bflow_class_code
65704            ,p_balance_type            => l_balance_type_code);
65705    ELSE
65706       NULL;
65707 -- No business flow processing for business flow method of NONE.
65708    END IF;
65709 
65710    --
65711    -- call analytical criteria
65712    --
65713    
65714    --
65715    -- call description
65716    --
65717    -- No description or it is inherited.
65718    --
65719    -- call ADRs
65720    -- Bug 4922099
65721    --
65722    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65723         (NVL(l_actual_upg_option, 'N') = 'O') OR
65724         (NVL(l_enc_upg_option, 'N') = 'O')
65725       )
65726    THEN
65727    NULL;
65728    --
65729    --
65730    
65731   l_ccid := AcctDerRule_6(
65732            p_application_id           => p_application_id
65733          , p_ae_header_id             => l_ae_header_id 
65734 , p_source_11 => p_source_11
65735          , x_transaction_coa_id       => l_adr_transaction_coa_id
65736          , x_accounting_coa_id        => l_adr_accounting_coa_id
65737          , x_value_type_code          => l_adr_value_type_code
65738          , p_side                     => 'NA'
65739    );
65740 
65741    xla_ae_lines_pkg.set_ccid(
65742     p_code_combination_id          => l_ccid
65743   , p_value_type_code              => l_adr_value_type_code
65744   , p_transaction_coa_id           => l_adr_transaction_coa_id
65745   , p_accounting_coa_id            => l_adr_accounting_coa_id
65746   , p_adr_code                     => 'CST_DEFAULT'
65747   , p_adr_type_code                => 'S'
65748   , p_component_type               => l_component_type
65749   , p_component_code               => l_component_code
65750   , p_component_type_code          => l_component_type_code
65751   , p_component_appl_id            => l_component_appl_id
65752   , p_amb_context_code             => l_amb_context_code
65753   , p_side                         => 'NA'
65754   );
65755 
65756 
65757    --
65758    --
65759    END IF;
65760    --
65761    -- Bug 4922099
65762    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65763           (NVL(l_enc_upg_option, 'N') = 'O')
65764         ) AND
65765         (l_bflow_method_code = 'PRIOR_ENTRY')
65766       )
65767    THEN
65768       IF
65769       --
65770       1 = 2
65771       --
65772       THEN
65773       xla_accounting_err_pkg.build_message
65774                                     (p_appli_s_name            => 'XLA'
65775                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65776                                     ,p_token_1                 => 'LINE_NUMBER'
65777                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65778                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65779                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65780                                                                              l_component_type
65781                                                                             ,l_component_code
65782                                                                             ,l_component_type_code
65783                                                                             ,l_component_appl_id
65784                                                                             ,l_amb_context_code
65785                                                                             ,l_entity_code
65786                                                                             ,l_event_class_code
65787                                                                            )
65788                                     ,p_token_3                 => 'OWNER'
65789                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65790                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65791                                                                           ,p_lookup_code    => l_component_type_code
65792                                                                          )
65793                                     ,p_token_4                 => 'PRODUCT_NAME'
65794                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65795                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65796                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65797                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65798                                     ,p_ae_header_id            =>  NULL
65799                                        );
65800 
65801         IF (C_LEVEL_ERROR>= g_log_level) THEN
65802                  trace
65803                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65804                       ,p_level    => C_LEVEL_ERROR
65805                       ,p_module   => l_log_module);
65806         END IF;
65807       END IF;
65808    END IF;
65809    --
65810    --
65811    ------------------------------------------------------------------------------------------------
65812    -- 4219869 Business Flow
65813    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65814    -- Prior Entry.  Currently, the following code is always generated.
65815    ------------------------------------------------------------------------------------------------
65816    XLA_AE_LINES_PKG.ValidateCurrentLine;
65817 
65818    ------------------------------------------------------------------------------------
65819    -- 4219869 Business Flow
65820    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65821    ------------------------------------------------------------------------------------
65822    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65823 
65824    ----------------------------------------------------------------------------------
65825    -- 4219869 Business Flow
65826    -- Update journal entry status -- Need to generate this within IF <condition>
65827    ----------------------------------------------------------------------------------
65828    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65829          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65830          ,p_balance_type_code => l_balance_type_code
65831          );
65832 
65833    -------------------------------------------------------------------------------------------
65834    -- 4262811 - Generate the Accrual Reversal lines
65835    -------------------------------------------------------------------------------------------
65836    BEGIN
65837       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65838                               (g_array_event(p_event_id).array_value_num('header_index'));
65839       IF l_acc_rev_flag IS NULL THEN
65840          l_acc_rev_flag := 'N';
65841       END IF;
65842    EXCEPTION
65843       WHEN OTHERS THEN
65844          l_acc_rev_flag := 'N';
65845    END;
65846    --
65847    IF (l_acc_rev_flag = 'Y') THEN
65848 
65849        -- 4645092  ------------------------------------------------------------------------------
65850        -- To allow MPA report to determine if it should generate report process
65851        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65852        ------------------------------------------------------------------------------------------
65853 
65854        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65855        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65856    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65857    -- call ADRs
65858    -- Bug 4922099
65859    --
65860    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65861         (NVL(l_actual_upg_option, 'N') = 'O') OR
65862         (NVL(l_enc_upg_option, 'N') = 'O')
65863       )
65864    THEN
65865    NULL;
65866    --
65867    --
65868    
65869   l_ccid := AcctDerRule_6(
65870            p_application_id           => p_application_id
65871          , p_ae_header_id             => l_ae_header_id 
65872 , p_source_11 => p_source_11
65873          , x_transaction_coa_id       => l_adr_transaction_coa_id
65874          , x_accounting_coa_id        => l_adr_accounting_coa_id
65875          , x_value_type_code          => l_adr_value_type_code
65876          , p_side                     => 'NA'
65877    );
65878 
65879    xla_ae_lines_pkg.set_ccid(
65880     p_code_combination_id          => l_ccid
65881   , p_value_type_code              => l_adr_value_type_code
65882   , p_transaction_coa_id           => l_adr_transaction_coa_id
65883   , p_accounting_coa_id            => l_adr_accounting_coa_id
65884   , p_adr_code                     => 'CST_DEFAULT'
65885   , p_adr_type_code                => 'S'
65886   , p_component_type               => l_component_type
65887   , p_component_code               => l_component_code
65888   , p_component_type_code          => l_component_type_code
65889   , p_component_appl_id            => l_component_appl_id
65890   , p_amb_context_code             => l_amb_context_code
65891   , p_side                         => 'NA'
65892   );
65893 
65894 
65895    --
65896    --
65897    END IF;
65898 
65899        --
65900        -- Update the line information that should be overwritten
65901        --
65902        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65903                                          p_header_num   => 1);
65904        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65905 
65906        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65907 
65908        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65909           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65910        END IF;
65911 
65912       --
65913       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65914       --
65915       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65916           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65917       ELSE
65918           ---------------------------------------------------------------------------------------------------
65919           -- 4262811a Switch Sign
65920           ---------------------------------------------------------------------------------------------------
65921           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65922           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65923                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65924           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65925                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65926           -- 5132302
65927           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65928                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65929 
65930       END IF;
65931 
65932       -- 4955764
65933       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65934       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65935 
65936 
65937       XLA_AE_LINES_PKG.ValidateCurrentLine;
65938       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65939 
65940       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65941                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65942                ,p_balance_type_code => l_balance_type_code);
65943 
65944    END IF;
65945 
65946    -----------------------------------------------------------------------------------------
65947    -- 4262811 Multiperiod Accounting
65948    -----------------------------------------------------------------------------------------
65949      -- No MPA option is assigned.
65950 
65951 
65952 END IF;
65953 END IF;
65954 --
65955 
65956 --
65957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65958    trace
65959       (p_msg      => 'END of AcctLineType_140'
65960       ,p_level    => C_LEVEL_PROCEDURE
65961       ,p_module   => l_log_module);
65962 END IF;
65963 --
65964 EXCEPTION
65965   WHEN xla_exceptions_pkg.application_exception THEN
65966       RAISE;
65967   WHEN OTHERS THEN
65968        xla_exceptions_pkg.raise_message
65969            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_140');
65970 END AcctLineType_140;
65971 --
65972 
65973 ---------------------------------------
65974 --
65975 -- PRIVATE FUNCTION
65976 --         AcctLineType_141
65977 --
65978 ---------------------------------------
65979 PROCEDURE AcctLineType_141 (
65980   p_application_id        IN NUMBER
65981  ,p_event_id              IN NUMBER
65982  ,p_calculate_acctd_flag  IN VARCHAR2
65983  ,p_calculate_g_l_flag    IN VARCHAR2
65984  ,p_actual_flag           IN OUT VARCHAR2
65985  ,p_balance_type_code     OUT VARCHAR2
65986  ,p_gain_or_loss_ref      OUT VARCHAR2
65987  
65988 --TRANSACTION_ID
65989  , p_source_1            IN NUMBER
65990 --Item Concatenated Segments
65991  , p_source_2            IN VARCHAR2
65992 --Transaction Quantity
65993  , p_source_3            IN NUMBER
65994 --Transaction Unit of Measure Code
65995  , p_source_4            IN VARCHAR2
65996 --Inventory Transaction Type Description
65997  , p_source_5            IN VARCHAR2
65998 --Cost Management Default Account
65999  , p_source_11            IN NUMBER
66000 --Transaction Action Name
66001  , p_source_62            IN NUMBER
66002  , p_source_62_meaning    IN VARCHAR2
66003 --DISTRIBUTION_IDENTIFIER
66004  , p_source_84            IN NUMBER
66005 --Distribution Type
66006  , p_source_85            IN VARCHAR2
66007  , p_source_85_meaning    IN VARCHAR2
66008 --Entered Currency Code
66009  , p_source_88            IN VARCHAR2
66010 --Entered Amount
66011  , p_source_91            IN NUMBER
66012 --Currency Conversion Date
66013  , p_source_92            IN DATE
66014 --Currency Conversion Rate
66015  , p_source_93            IN NUMBER
66016 --Currency Conversion Type
66017  , p_source_94            IN VARCHAR2
66018 --Accounted Amount
66019  , p_source_95            IN NUMBER
66020 --Accounting Line Type
66021  , p_source_97            IN NUMBER
66022 )
66023 IS
66024 
66025 l_component_type              VARCHAR2(80);
66026 l_component_code              VARCHAR2(30);
66027 l_component_type_code         VARCHAR2(1);
66028 l_component_appl_id           INTEGER;
66029 l_amb_context_code            VARCHAR2(30);
66030 l_entity_code                 VARCHAR2(30);
66031 l_event_class_code            VARCHAR2(30);
66032 l_ae_header_id                NUMBER;
66033 l_event_type_code             VARCHAR2(30);
66034 l_line_definition_code        VARCHAR2(30);
66035 l_line_definition_owner_code  VARCHAR2(1);
66036 --
66037 -- adr variables
66038 l_segment                     VARCHAR2(30);
66039 l_ccid                        NUMBER;
66040 l_adr_transaction_coa_id      NUMBER;
66041 l_adr_accounting_coa_id       NUMBER;
66042 l_adr_flexfield_segment_code  VARCHAR2(30);
66043 l_adr_flex_value_set_id       NUMBER;
66044 l_adr_value_type_code         VARCHAR2(30);
66045 l_adr_value_combination_id    NUMBER;
66046 l_adr_value_segment_code      VARCHAR2(30);
66047 
66048 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66049 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66050 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66051 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66052 
66053 -- 4262811 Variables ------------------------------------------------------------------------------------------
66054 l_entered_amt_idx             NUMBER;
66055 l_accted_amt_idx              NUMBER;
66056 l_acc_rev_flag                VARCHAR2(1);
66057 l_accrual_line_num            NUMBER;
66058 l_tmp_amt                     NUMBER;
66059 l_acc_rev_natural_side_code   VARCHAR2(1);
66060 
66061 l_num_entries                 NUMBER;
66062 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66063 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66064 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66065 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66066 l_recog_line_1                NUMBER;
66067 l_recog_line_2                NUMBER;
66068 
66069 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66070 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66071 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66072 
66073 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66074 
66075 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66076 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66077 
66078 ---------------------------------------------------------------------------------------------------------------
66079 
66080 
66081 --
66082 -- bulk performance
66083 --
66084 l_balance_type_code           VARCHAR2(1);
66085 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66086 l_log_module                  VARCHAR2(240);
66087 
66088 --
66089 -- Upgrade strategy
66090 --
66091 l_actual_upg_option           VARCHAR2(1);
66092 l_enc_upg_option           VARCHAR2(1);
66093 
66094 --
66095 BEGIN
66096 --
66097 IF g_log_enabled THEN
66098       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
66099 END IF;
66100 --
66101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66102 
66103       trace
66104          (p_msg      => 'BEGIN of AcctLineType_141'
66105          ,p_level    => C_LEVEL_PROCEDURE
66106          ,p_module   => l_log_module);
66107 
66108 END IF;
66109 --
66110 l_component_type             := 'AMB_JLT';
66111 l_component_code             := 'INTERCOMPANY_COGS';
66112 l_component_type_code        := 'S';
66113 l_component_appl_id          :=  707;
66114 l_amb_context_code           := 'DEFAULT';
66115 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
66116 l_event_class_code           := 'LOG_INTERCOMPANY';
66117 l_event_type_code            := 'LOG_IC_SALES_ISSUE';
66118 l_line_definition_owner_code := 'S';
66119 l_line_definition_code       := 'PI_LOG_IC_SALES_ISSUE';
66120 --
66121 l_balance_type_code          := 'A';
66122 l_segment                     := NULL;
66123 l_ccid                        := NULL;
66124 l_adr_transaction_coa_id      := NULL;
66125 l_adr_accounting_coa_id       := NULL;
66126 l_adr_flexfield_segment_code  := NULL;
66127 l_adr_flex_value_set_id       := NULL;
66128 l_adr_value_type_code         := NULL;
66129 l_adr_value_combination_id    := NULL;
66130 l_adr_value_segment_code      := NULL;
66131 
66132 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66133 l_bflow_class_code           := '';    -- 4219869 Business Flow
66134 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66135 l_budgetary_control_flag     := 'N';
66136 
66137 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66138 l_bflow_applied_to_amt       := NULL; -- 5132302
66139 l_entered_amt_idx            := NULL;          -- 4262811
66140 l_accted_amt_idx             := NULL;          -- 4262811
66141 l_acc_rev_flag               := NULL;          -- 4262811
66142 l_accrual_line_num           := NULL;          -- 4262811
66143 l_tmp_amt                    := NULL;          -- 4262811
66144 --
66145  
66146 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66147     l_balance_type_code <> 'B' THEN
66148 IF NVL(p_source_97,9E125) =  2 AND 
66149 ((p_source_95 >=  0 AND 
66150 NVL(p_source_62,9E125) =  9) OR 
66151 (p_source_95 <=  0 AND 
66152 NVL(p_source_62,9E125) =  14)
66153 ) THEN 
66154 
66155    --
66156    XLA_AE_LINES_PKG.SetNewLine;
66157 
66158    p_balance_type_code          := l_balance_type_code;
66159    -- set the flag so later we will know whether the gain loss line needs to be created
66160    
66161    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66162      p_actual_flag :='A';
66163    END IF;
66164 
66165    --
66166    -- bulk performance
66167    --
66168    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66169                                       p_header_num   => 0); -- 4262811
66170    --
66171    -- set accounting line options
66172    --
66173    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66174            p_natural_side_code          => 'D'
66175          , p_gain_or_loss_flag          => 'N'
66176          , p_gl_transfer_mode_code      => 'S'
66177          , p_acct_entry_type_code       => 'A'
66178          , p_switch_side_flag           => 'Y'
66179          , p_merge_duplicate_code       => 'N'
66180          );
66181    --
66182    l_acc_rev_natural_side_code := 'C';  -- 4262811
66183    -- 
66184    --
66185    -- set accounting line type info
66186    --
66187    xla_ae_lines_pkg.SetAcctLineType
66188       (p_component_type             => l_component_type
66189       ,p_event_type_code            => l_event_type_code
66190       ,p_line_definition_owner_code => l_line_definition_owner_code
66191       ,p_line_definition_code       => l_line_definition_code
66192       ,p_accounting_line_code       => l_component_code
66193       ,p_accounting_line_type_code  => l_component_type_code
66194       ,p_accounting_line_appl_id    => l_component_appl_id
66195       ,p_amb_context_code           => l_amb_context_code
66196       ,p_entity_code                => l_entity_code
66197       ,p_event_class_code           => l_event_class_code);
66198    --
66199    -- set accounting class
66200    --
66201    xla_ae_lines_pkg.SetAcctClass(
66202            p_accounting_class_code  => 'INTERCOMPANY_COGS'
66203          , p_ae_header_id           => l_ae_header_id
66204          );
66205 
66206    --
66207    -- set rounding class
66208    --
66209    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66210                       'INTERCOMPANY_COGS';
66211 
66212    --
66213    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66214    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66215    --
66216    -- bulk performance
66217    --
66218    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66219 
66220    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66221       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66222 
66223    -- 4955764
66224    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66225       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66226 
66227    -- 4458381 Public Sector Enh
66228    
66229    --
66230    -- set accounting attributes for the line type
66231    --
66232    l_entered_amt_idx := 3;
66233    l_accted_amt_idx  := 8;
66234    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66235    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66236    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
66237    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66238    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
66239    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66240    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
66241    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66242    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
66243    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66244    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
66245    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66246    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
66247    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66248    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
66249    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66250    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
66251 
66252    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66253    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66254 
66255    ---------------------------------------------------------------------------------------------------------------
66256    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66257    ---------------------------------------------------------------------------------------------------------------
66258    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66259 
66260    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66261    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66262 
66263    IF xla_accounting_cache_pkg.GetValueChar
66264          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66265          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66266    AND l_bflow_method_code = 'PRIOR_ENTRY'
66267 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66268    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66269          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66270        )
66271    THEN
66272          xla_ae_lines_pkg.BflowUpgEntry
66273            (p_business_method_code    => l_bflow_method_code
66274            ,p_business_class_code     => l_bflow_class_code
66275            ,p_balance_type            => l_balance_type_code);
66276    ELSE
66277       NULL;
66278 -- No business flow processing for business flow method of NONE.
66279    END IF;
66280 
66281    --
66282    -- call analytical criteria
66283    --
66284    
66285    --
66286    -- call description
66287    --
66288    
66289 xla_ae_lines_pkg.SetLineDescription(
66290    p_ae_header_id => l_ae_header_id
66291   ,p_description  => Description_1 (
66292      p_application_id         => p_application_id
66293    , p_ae_header_id           => l_ae_header_id 
66294 , p_source_1 => p_source_1
66295 , p_source_2 => p_source_2
66296 , p_source_3 => p_source_3
66297 , p_source_4 => p_source_4
66298 , p_source_5 => p_source_5
66299    )
66300 );
66301 
66302 
66303    --
66304    -- call ADRs
66305    -- Bug 4922099
66306    --
66307    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66308         (NVL(l_actual_upg_option, 'N') = 'O') OR
66309         (NVL(l_enc_upg_option, 'N') = 'O')
66310       )
66311    THEN
66312    NULL;
66313    --
66314    --
66315    
66316   l_ccid := AcctDerRule_6(
66317            p_application_id           => p_application_id
66318          , p_ae_header_id             => l_ae_header_id 
66319 , p_source_11 => p_source_11
66320          , x_transaction_coa_id       => l_adr_transaction_coa_id
66321          , x_accounting_coa_id        => l_adr_accounting_coa_id
66322          , x_value_type_code          => l_adr_value_type_code
66323          , p_side                     => 'NA'
66324    );
66325 
66326    xla_ae_lines_pkg.set_ccid(
66327     p_code_combination_id          => l_ccid
66328   , p_value_type_code              => l_adr_value_type_code
66329   , p_transaction_coa_id           => l_adr_transaction_coa_id
66330   , p_accounting_coa_id            => l_adr_accounting_coa_id
66331   , p_adr_code                     => 'CST_DEFAULT'
66332   , p_adr_type_code                => 'S'
66333   , p_component_type               => l_component_type
66334   , p_component_code               => l_component_code
66335   , p_component_type_code          => l_component_type_code
66336   , p_component_appl_id            => l_component_appl_id
66337   , p_amb_context_code             => l_amb_context_code
66338   , p_side                         => 'NA'
66339   );
66340 
66341 
66342    --
66343    --
66344    END IF;
66345    --
66346    -- Bug 4922099
66347    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66348           (NVL(l_enc_upg_option, 'N') = 'O')
66349         ) AND
66350         (l_bflow_method_code = 'PRIOR_ENTRY')
66351       )
66352    THEN
66353       IF
66354       --
66355       1 = 2
66356       --
66357       THEN
66358       xla_accounting_err_pkg.build_message
66359                                     (p_appli_s_name            => 'XLA'
66360                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66361                                     ,p_token_1                 => 'LINE_NUMBER'
66362                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66363                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66364                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66365                                                                              l_component_type
66366                                                                             ,l_component_code
66367                                                                             ,l_component_type_code
66368                                                                             ,l_component_appl_id
66369                                                                             ,l_amb_context_code
66370                                                                             ,l_entity_code
66371                                                                             ,l_event_class_code
66372                                                                            )
66373                                     ,p_token_3                 => 'OWNER'
66374                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66375                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66376                                                                           ,p_lookup_code    => l_component_type_code
66377                                                                          )
66378                                     ,p_token_4                 => 'PRODUCT_NAME'
66379                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66380                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66381                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66382                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66383                                     ,p_ae_header_id            =>  NULL
66384                                        );
66385 
66386         IF (C_LEVEL_ERROR>= g_log_level) THEN
66387                  trace
66388                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66389                       ,p_level    => C_LEVEL_ERROR
66390                       ,p_module   => l_log_module);
66391         END IF;
66392       END IF;
66393    END IF;
66394    --
66395    --
66396    ------------------------------------------------------------------------------------------------
66397    -- 4219869 Business Flow
66398    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66399    -- Prior Entry.  Currently, the following code is always generated.
66400    ------------------------------------------------------------------------------------------------
66401    XLA_AE_LINES_PKG.ValidateCurrentLine;
66402 
66403    ------------------------------------------------------------------------------------
66404    -- 4219869 Business Flow
66405    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66406    ------------------------------------------------------------------------------------
66407    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66408 
66409    ----------------------------------------------------------------------------------
66410    -- 4219869 Business Flow
66411    -- Update journal entry status -- Need to generate this within IF <condition>
66412    ----------------------------------------------------------------------------------
66413    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66414          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66415          ,p_balance_type_code => l_balance_type_code
66416          );
66417 
66418    -------------------------------------------------------------------------------------------
66419    -- 4262811 - Generate the Accrual Reversal lines
66420    -------------------------------------------------------------------------------------------
66421    BEGIN
66422       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66423                               (g_array_event(p_event_id).array_value_num('header_index'));
66424       IF l_acc_rev_flag IS NULL THEN
66425          l_acc_rev_flag := 'N';
66426       END IF;
66427    EXCEPTION
66428       WHEN OTHERS THEN
66429          l_acc_rev_flag := 'N';
66430    END;
66431    --
66432    IF (l_acc_rev_flag = 'Y') THEN
66433 
66434        -- 4645092  ------------------------------------------------------------------------------
66435        -- To allow MPA report to determine if it should generate report process
66436        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66437        ------------------------------------------------------------------------------------------
66438 
66439        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66440        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66441    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
66442    -- call ADRs
66443    -- Bug 4922099
66444    --
66445    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66446         (NVL(l_actual_upg_option, 'N') = 'O') OR
66447         (NVL(l_enc_upg_option, 'N') = 'O')
66448       )
66449    THEN
66450    NULL;
66451    --
66452    --
66453    
66454   l_ccid := AcctDerRule_6(
66455            p_application_id           => p_application_id
66456          , p_ae_header_id             => l_ae_header_id 
66457 , p_source_11 => p_source_11
66458          , x_transaction_coa_id       => l_adr_transaction_coa_id
66459          , x_accounting_coa_id        => l_adr_accounting_coa_id
66460          , x_value_type_code          => l_adr_value_type_code
66461          , p_side                     => 'NA'
66462    );
66463 
66464    xla_ae_lines_pkg.set_ccid(
66465     p_code_combination_id          => l_ccid
66466   , p_value_type_code              => l_adr_value_type_code
66467   , p_transaction_coa_id           => l_adr_transaction_coa_id
66468   , p_accounting_coa_id            => l_adr_accounting_coa_id
66469   , p_adr_code                     => 'CST_DEFAULT'
66470   , p_adr_type_code                => 'S'
66471   , p_component_type               => l_component_type
66472   , p_component_code               => l_component_code
66473   , p_component_type_code          => l_component_type_code
66474   , p_component_appl_id            => l_component_appl_id
66475   , p_amb_context_code             => l_amb_context_code
66476   , p_side                         => 'NA'
66477   );
66478 
66479 
66480    --
66481    --
66482    END IF;
66483 
66484        --
66485        -- Update the line information that should be overwritten
66486        --
66487        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66488                                          p_header_num   => 1);
66489        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66490 
66491        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66492 
66493        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66494           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66495        END IF;
66496 
66497       --
66498       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66499       --
66500       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66501           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66502       ELSE
66503           ---------------------------------------------------------------------------------------------------
66504           -- 4262811a Switch Sign
66505           ---------------------------------------------------------------------------------------------------
66506           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66507           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66508                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66509           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66510                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66511           -- 5132302
66512           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66513                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66514 
66515       END IF;
66516 
66517       -- 4955764
66518       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66519       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66520 
66521 
66522       XLA_AE_LINES_PKG.ValidateCurrentLine;
66523       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66524 
66525       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66526                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66527                ,p_balance_type_code => l_balance_type_code);
66528 
66529    END IF;
66530 
66531    -----------------------------------------------------------------------------------------
66532    -- 4262811 Multiperiod Accounting
66533    -----------------------------------------------------------------------------------------
66534      -- No MPA option is assigned.
66535 
66536 
66537 END IF;
66538 END IF;
66539 --
66540 
66541 --
66542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66543    trace
66544       (p_msg      => 'END of AcctLineType_141'
66545       ,p_level    => C_LEVEL_PROCEDURE
66546       ,p_module   => l_log_module);
66547 END IF;
66548 --
66549 EXCEPTION
66550   WHEN xla_exceptions_pkg.application_exception THEN
66551       RAISE;
66552   WHEN OTHERS THEN
66553        xla_exceptions_pkg.raise_message
66554            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_141');
66555 END AcctLineType_141;
66556 --
66557 
66558 ---------------------------------------
66559 --
66560 -- PRIVATE FUNCTION
66561 --         AcctLineType_142
66562 --
66563 ---------------------------------------
66564 PROCEDURE AcctLineType_142 (
66565   p_application_id        IN NUMBER
66566  ,p_event_id              IN NUMBER
66567  ,p_calculate_acctd_flag  IN VARCHAR2
66568  ,p_calculate_g_l_flag    IN VARCHAR2
66569  ,p_actual_flag           IN OUT VARCHAR2
66570  ,p_balance_type_code     OUT VARCHAR2
66571  ,p_gain_or_loss_ref      OUT VARCHAR2
66572  
66573 --TRANSACTION_ID
66574  , p_source_1            IN NUMBER
66575 --Item Concatenated Segments
66576  , p_source_2            IN VARCHAR2
66577 --Transaction Quantity
66578  , p_source_3            IN NUMBER
66579 --Transaction Unit of Measure Code
66580  , p_source_4            IN VARCHAR2
66581 --Inventory Transaction Type Description
66582  , p_source_5            IN VARCHAR2
66583 --Cost Management Default Account
66584  , p_source_11            IN NUMBER
66585 --Transaction Action Name
66586  , p_source_62            IN NUMBER
66587  , p_source_62_meaning    IN VARCHAR2
66588 --DISTRIBUTION_IDENTIFIER
66589  , p_source_84            IN NUMBER
66590 --Distribution Type
66591  , p_source_85            IN VARCHAR2
66592  , p_source_85_meaning    IN VARCHAR2
66593 --Entered Currency Code
66594  , p_source_88            IN VARCHAR2
66595 --Entered Amount
66596  , p_source_91            IN NUMBER
66597 --Currency Conversion Date
66598  , p_source_92            IN DATE
66599 --Currency Conversion Rate
66600  , p_source_93            IN NUMBER
66601 --Currency Conversion Type
66602  , p_source_94            IN VARCHAR2
66603 --Accounted Amount
66604  , p_source_95            IN NUMBER
66605 --Accounting Line Type
66606  , p_source_97            IN NUMBER
66607 )
66608 IS
66609 
66610 l_component_type              VARCHAR2(80);
66611 l_component_code              VARCHAR2(30);
66612 l_component_type_code         VARCHAR2(1);
66613 l_component_appl_id           INTEGER;
66614 l_amb_context_code            VARCHAR2(30);
66615 l_entity_code                 VARCHAR2(30);
66616 l_event_class_code            VARCHAR2(30);
66617 l_ae_header_id                NUMBER;
66618 l_event_type_code             VARCHAR2(30);
66619 l_line_definition_code        VARCHAR2(30);
66620 l_line_definition_owner_code  VARCHAR2(1);
66621 --
66622 -- adr variables
66623 l_segment                     VARCHAR2(30);
66624 l_ccid                        NUMBER;
66625 l_adr_transaction_coa_id      NUMBER;
66626 l_adr_accounting_coa_id       NUMBER;
66627 l_adr_flexfield_segment_code  VARCHAR2(30);
66628 l_adr_flex_value_set_id       NUMBER;
66629 l_adr_value_type_code         VARCHAR2(30);
66630 l_adr_value_combination_id    NUMBER;
66631 l_adr_value_segment_code      VARCHAR2(30);
66632 
66633 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66634 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66635 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66636 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66637 
66638 -- 4262811 Variables ------------------------------------------------------------------------------------------
66639 l_entered_amt_idx             NUMBER;
66640 l_accted_amt_idx              NUMBER;
66641 l_acc_rev_flag                VARCHAR2(1);
66642 l_accrual_line_num            NUMBER;
66643 l_tmp_amt                     NUMBER;
66644 l_acc_rev_natural_side_code   VARCHAR2(1);
66645 
66646 l_num_entries                 NUMBER;
66647 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66648 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66649 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66650 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66651 l_recog_line_1                NUMBER;
66652 l_recog_line_2                NUMBER;
66653 
66654 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66655 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66656 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66657 
66658 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66659 
66660 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66661 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66662 
66663 ---------------------------------------------------------------------------------------------------------------
66664 
66665 
66666 --
66667 -- bulk performance
66668 --
66669 l_balance_type_code           VARCHAR2(1);
66670 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66671 l_log_module                  VARCHAR2(240);
66672 
66673 --
66674 -- Upgrade strategy
66675 --
66676 l_actual_upg_option           VARCHAR2(1);
66677 l_enc_upg_option           VARCHAR2(1);
66678 
66679 --
66680 BEGIN
66681 --
66682 IF g_log_enabled THEN
66683       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
66684 END IF;
66685 --
66686 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66687 
66688       trace
66689          (p_msg      => 'BEGIN of AcctLineType_142'
66690          ,p_level    => C_LEVEL_PROCEDURE
66691          ,p_module   => l_log_module);
66692 
66693 END IF;
66694 --
66695 l_component_type             := 'AMB_JLT';
66696 l_component_code             := 'INTERCOMPANY_COGS';
66697 l_component_type_code        := 'S';
66698 l_component_appl_id          :=  707;
66699 l_amb_context_code           := 'DEFAULT';
66700 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
66701 l_event_class_code           := 'LOG_INTERCOMPANY';
66702 l_event_type_code            := 'LOG_IC_SALES_RETURN';
66703 l_line_definition_owner_code := 'S';
66704 l_line_definition_code       := 'PI_LOG_IC_SALES_RETURN';
66705 --
66706 l_balance_type_code          := 'A';
66707 l_segment                     := NULL;
66708 l_ccid                        := NULL;
66709 l_adr_transaction_coa_id      := NULL;
66710 l_adr_accounting_coa_id       := NULL;
66711 l_adr_flexfield_segment_code  := NULL;
66712 l_adr_flex_value_set_id       := NULL;
66713 l_adr_value_type_code         := NULL;
66714 l_adr_value_combination_id    := NULL;
66715 l_adr_value_segment_code      := NULL;
66716 
66717 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66718 l_bflow_class_code           := '';    -- 4219869 Business Flow
66719 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66720 l_budgetary_control_flag     := 'N';
66721 
66722 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66723 l_bflow_applied_to_amt       := NULL; -- 5132302
66724 l_entered_amt_idx            := NULL;          -- 4262811
66725 l_accted_amt_idx             := NULL;          -- 4262811
66726 l_acc_rev_flag               := NULL;          -- 4262811
66727 l_accrual_line_num           := NULL;          -- 4262811
66728 l_tmp_amt                    := NULL;          -- 4262811
66729 --
66730  
66731 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66732     l_balance_type_code <> 'B' THEN
66733 IF NVL(p_source_97,9E125) =  2 AND 
66734 ((p_source_95 >=  0 AND 
66735 NVL(p_source_62,9E125) =  9) OR 
66736 (p_source_95 <=  0 AND 
66737 NVL(p_source_62,9E125) =  14)
66738 ) THEN 
66739 
66740    --
66741    XLA_AE_LINES_PKG.SetNewLine;
66742 
66743    p_balance_type_code          := l_balance_type_code;
66744    -- set the flag so later we will know whether the gain loss line needs to be created
66745    
66746    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66747      p_actual_flag :='A';
66748    END IF;
66749 
66750    --
66751    -- bulk performance
66752    --
66753    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66754                                       p_header_num   => 0); -- 4262811
66755    --
66756    -- set accounting line options
66757    --
66758    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66759            p_natural_side_code          => 'D'
66760          , p_gain_or_loss_flag          => 'N'
66761          , p_gl_transfer_mode_code      => 'S'
66762          , p_acct_entry_type_code       => 'A'
66763          , p_switch_side_flag           => 'Y'
66764          , p_merge_duplicate_code       => 'N'
66765          );
66766    --
66767    l_acc_rev_natural_side_code := 'C';  -- 4262811
66768    -- 
66769    --
66770    -- set accounting line type info
66771    --
66772    xla_ae_lines_pkg.SetAcctLineType
66773       (p_component_type             => l_component_type
66774       ,p_event_type_code            => l_event_type_code
66775       ,p_line_definition_owner_code => l_line_definition_owner_code
66776       ,p_line_definition_code       => l_line_definition_code
66777       ,p_accounting_line_code       => l_component_code
66778       ,p_accounting_line_type_code  => l_component_type_code
66779       ,p_accounting_line_appl_id    => l_component_appl_id
66780       ,p_amb_context_code           => l_amb_context_code
66781       ,p_entity_code                => l_entity_code
66782       ,p_event_class_code           => l_event_class_code);
66783    --
66784    -- set accounting class
66785    --
66786    xla_ae_lines_pkg.SetAcctClass(
66787            p_accounting_class_code  => 'INTERCOMPANY_COGS'
66788          , p_ae_header_id           => l_ae_header_id
66789          );
66790 
66791    --
66792    -- set rounding class
66793    --
66794    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66795                       'INTERCOMPANY_COGS';
66796 
66797    --
66798    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66799    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66800    --
66801    -- bulk performance
66802    --
66803    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66804 
66805    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66806       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66807 
66808    -- 4955764
66809    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66810       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66811 
66812    -- 4458381 Public Sector Enh
66813    
66814    --
66815    -- set accounting attributes for the line type
66816    --
66817    l_entered_amt_idx := 3;
66818    l_accted_amt_idx  := 8;
66819    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66820    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66821    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
66822    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66823    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
66824    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66825    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
66826    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66827    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
66828    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66829    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
66830    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66831    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
66832    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66833    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
66834    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66835    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
66836 
66837    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66838    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66839 
66840    ---------------------------------------------------------------------------------------------------------------
66841    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66842    ---------------------------------------------------------------------------------------------------------------
66843    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66844 
66845    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66846    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66847 
66848    IF xla_accounting_cache_pkg.GetValueChar
66849          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66850          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66851    AND l_bflow_method_code = 'PRIOR_ENTRY'
66852 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66853    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66854          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66855        )
66856    THEN
66857          xla_ae_lines_pkg.BflowUpgEntry
66858            (p_business_method_code    => l_bflow_method_code
66859            ,p_business_class_code     => l_bflow_class_code
66860            ,p_balance_type            => l_balance_type_code);
66861    ELSE
66862       NULL;
66863 -- No business flow processing for business flow method of NONE.
66864    END IF;
66865 
66866    --
66867    -- call analytical criteria
66868    --
66869    
66870    --
66871    -- call description
66872    --
66873    
66874 xla_ae_lines_pkg.SetLineDescription(
66875    p_ae_header_id => l_ae_header_id
66876   ,p_description  => Description_1 (
66877      p_application_id         => p_application_id
66878    , p_ae_header_id           => l_ae_header_id 
66879 , p_source_1 => p_source_1
66880 , p_source_2 => p_source_2
66881 , p_source_3 => p_source_3
66882 , p_source_4 => p_source_4
66883 , p_source_5 => p_source_5
66884    )
66885 );
66886 
66887 
66888    --
66889    -- call ADRs
66890    -- Bug 4922099
66891    --
66892    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66893         (NVL(l_actual_upg_option, 'N') = 'O') OR
66894         (NVL(l_enc_upg_option, 'N') = 'O')
66895       )
66896    THEN
66897    NULL;
66898    --
66899    --
66900    
66901   l_ccid := AcctDerRule_6(
66902            p_application_id           => p_application_id
66903          , p_ae_header_id             => l_ae_header_id 
66904 , p_source_11 => p_source_11
66905          , x_transaction_coa_id       => l_adr_transaction_coa_id
66906          , x_accounting_coa_id        => l_adr_accounting_coa_id
66907          , x_value_type_code          => l_adr_value_type_code
66908          , p_side                     => 'NA'
66909    );
66910 
66911    xla_ae_lines_pkg.set_ccid(
66912     p_code_combination_id          => l_ccid
66913   , p_value_type_code              => l_adr_value_type_code
66914   , p_transaction_coa_id           => l_adr_transaction_coa_id
66915   , p_accounting_coa_id            => l_adr_accounting_coa_id
66916   , p_adr_code                     => 'CST_DEFAULT'
66917   , p_adr_type_code                => 'S'
66918   , p_component_type               => l_component_type
66919   , p_component_code               => l_component_code
66920   , p_component_type_code          => l_component_type_code
66921   , p_component_appl_id            => l_component_appl_id
66922   , p_amb_context_code             => l_amb_context_code
66923   , p_side                         => 'NA'
66924   );
66925 
66926 
66927    --
66928    --
66929    END IF;
66930    --
66931    -- Bug 4922099
66932    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66933           (NVL(l_enc_upg_option, 'N') = 'O')
66934         ) AND
66935         (l_bflow_method_code = 'PRIOR_ENTRY')
66936       )
66937    THEN
66938       IF
66939       --
66940       1 = 2
66941       --
66942       THEN
66943       xla_accounting_err_pkg.build_message
66944                                     (p_appli_s_name            => 'XLA'
66945                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66946                                     ,p_token_1                 => 'LINE_NUMBER'
66947                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66948                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66949                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66950                                                                              l_component_type
66951                                                                             ,l_component_code
66952                                                                             ,l_component_type_code
66953                                                                             ,l_component_appl_id
66954                                                                             ,l_amb_context_code
66955                                                                             ,l_entity_code
66956                                                                             ,l_event_class_code
66957                                                                            )
66958                                     ,p_token_3                 => 'OWNER'
66959                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66960                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66961                                                                           ,p_lookup_code    => l_component_type_code
66962                                                                          )
66963                                     ,p_token_4                 => 'PRODUCT_NAME'
66964                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66965                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66966                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66967                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66968                                     ,p_ae_header_id            =>  NULL
66969                                        );
66970 
66971         IF (C_LEVEL_ERROR>= g_log_level) THEN
66972                  trace
66973                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66974                       ,p_level    => C_LEVEL_ERROR
66975                       ,p_module   => l_log_module);
66976         END IF;
66977       END IF;
66978    END IF;
66979    --
66980    --
66981    ------------------------------------------------------------------------------------------------
66982    -- 4219869 Business Flow
66983    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66984    -- Prior Entry.  Currently, the following code is always generated.
66985    ------------------------------------------------------------------------------------------------
66986    XLA_AE_LINES_PKG.ValidateCurrentLine;
66987 
66988    ------------------------------------------------------------------------------------
66989    -- 4219869 Business Flow
66990    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66991    ------------------------------------------------------------------------------------
66992    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66993 
66994    ----------------------------------------------------------------------------------
66995    -- 4219869 Business Flow
66996    -- Update journal entry status -- Need to generate this within IF <condition>
66997    ----------------------------------------------------------------------------------
66998    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66999          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67000          ,p_balance_type_code => l_balance_type_code
67001          );
67002 
67003    -------------------------------------------------------------------------------------------
67004    -- 4262811 - Generate the Accrual Reversal lines
67005    -------------------------------------------------------------------------------------------
67006    BEGIN
67007       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67008                               (g_array_event(p_event_id).array_value_num('header_index'));
67009       IF l_acc_rev_flag IS NULL THEN
67010          l_acc_rev_flag := 'N';
67011       END IF;
67012    EXCEPTION
67013       WHEN OTHERS THEN
67014          l_acc_rev_flag := 'N';
67015    END;
67016    --
67017    IF (l_acc_rev_flag = 'Y') THEN
67018 
67019        -- 4645092  ------------------------------------------------------------------------------
67020        -- To allow MPA report to determine if it should generate report process
67021        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67022        ------------------------------------------------------------------------------------------
67023 
67024        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67025        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67026    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67027    -- call ADRs
67028    -- Bug 4922099
67029    --
67030    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67031         (NVL(l_actual_upg_option, 'N') = 'O') OR
67032         (NVL(l_enc_upg_option, 'N') = 'O')
67033       )
67034    THEN
67035    NULL;
67036    --
67037    --
67038    
67039   l_ccid := AcctDerRule_6(
67040            p_application_id           => p_application_id
67041          , p_ae_header_id             => l_ae_header_id 
67042 , p_source_11 => p_source_11
67043          , x_transaction_coa_id       => l_adr_transaction_coa_id
67044          , x_accounting_coa_id        => l_adr_accounting_coa_id
67045          , x_value_type_code          => l_adr_value_type_code
67046          , p_side                     => 'NA'
67047    );
67048 
67049    xla_ae_lines_pkg.set_ccid(
67050     p_code_combination_id          => l_ccid
67051   , p_value_type_code              => l_adr_value_type_code
67052   , p_transaction_coa_id           => l_adr_transaction_coa_id
67053   , p_accounting_coa_id            => l_adr_accounting_coa_id
67054   , p_adr_code                     => 'CST_DEFAULT'
67055   , p_adr_type_code                => 'S'
67056   , p_component_type               => l_component_type
67057   , p_component_code               => l_component_code
67058   , p_component_type_code          => l_component_type_code
67059   , p_component_appl_id            => l_component_appl_id
67060   , p_amb_context_code             => l_amb_context_code
67061   , p_side                         => 'NA'
67062   );
67063 
67064 
67065    --
67066    --
67067    END IF;
67068 
67069        --
67070        -- Update the line information that should be overwritten
67071        --
67072        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67073                                          p_header_num   => 1);
67074        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67075 
67076        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67077 
67078        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67079           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67080        END IF;
67081 
67082       --
67083       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67084       --
67085       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67086           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67087       ELSE
67088           ---------------------------------------------------------------------------------------------------
67089           -- 4262811a Switch Sign
67090           ---------------------------------------------------------------------------------------------------
67091           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67092           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67093                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67094           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67095                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67096           -- 5132302
67097           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67098                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67099 
67100       END IF;
67101 
67102       -- 4955764
67103       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67104       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67105 
67106 
67107       XLA_AE_LINES_PKG.ValidateCurrentLine;
67108       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67109 
67110       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67111                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67112                ,p_balance_type_code => l_balance_type_code);
67113 
67114    END IF;
67115 
67116    -----------------------------------------------------------------------------------------
67117    -- 4262811 Multiperiod Accounting
67118    -----------------------------------------------------------------------------------------
67119      -- No MPA option is assigned.
67120 
67121 
67122 END IF;
67123 END IF;
67124 --
67125 
67126 --
67127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67128    trace
67129       (p_msg      => 'END of AcctLineType_142'
67130       ,p_level    => C_LEVEL_PROCEDURE
67131       ,p_module   => l_log_module);
67132 END IF;
67133 --
67134 EXCEPTION
67135   WHEN xla_exceptions_pkg.application_exception THEN
67136       RAISE;
67137   WHEN OTHERS THEN
67138        xla_exceptions_pkg.raise_message
67139            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_142');
67140 END AcctLineType_142;
67141 --
67142 
67143 ---------------------------------------
67144 --
67145 -- PRIVATE FUNCTION
67146 --         AcctLineType_143
67147 --
67148 ---------------------------------------
67149 PROCEDURE AcctLineType_143 (
67150   p_application_id        IN NUMBER
67151  ,p_event_id              IN NUMBER
67152  ,p_calculate_acctd_flag  IN VARCHAR2
67153  ,p_calculate_g_l_flag    IN VARCHAR2
67154  ,p_actual_flag           IN OUT VARCHAR2
67155  ,p_balance_type_code     OUT VARCHAR2
67156  ,p_gain_or_loss_ref      OUT VARCHAR2
67157  
67158 --TRANSACTION_ID
67159  , p_source_1            IN NUMBER
67160 --Item Concatenated Segments
67161  , p_source_2            IN VARCHAR2
67162 --Transaction Quantity
67163  , p_source_3            IN NUMBER
67164 --Transaction Unit of Measure Code
67165  , p_source_4            IN VARCHAR2
67166 --Inventory Transaction Type Description
67167  , p_source_5            IN VARCHAR2
67168 --Transaction Transportation Distribution Account
67169  , p_source_32            IN NUMBER
67170 --DISTRIBUTION_IDENTIFIER
67171  , p_source_84            IN NUMBER
67172 --Distribution Type
67173  , p_source_85            IN VARCHAR2
67174  , p_source_85_meaning    IN VARCHAR2
67175 --Entered Currency Code
67176  , p_source_88            IN VARCHAR2
67177 --Entered Amount
67178  , p_source_91            IN NUMBER
67179 --Currency Conversion Date
67180  , p_source_92            IN DATE
67181 --Currency Conversion Rate
67182  , p_source_93            IN NUMBER
67183 --Currency Conversion Type
67184  , p_source_94            IN VARCHAR2
67185 --Accounted Amount
67186  , p_source_95            IN NUMBER
67187 --Accounting Line Type
67188  , p_source_97            IN NUMBER
67189 )
67190 IS
67191 
67192 l_component_type              VARCHAR2(80);
67193 l_component_code              VARCHAR2(30);
67194 l_component_type_code         VARCHAR2(1);
67195 l_component_appl_id           INTEGER;
67196 l_amb_context_code            VARCHAR2(30);
67197 l_entity_code                 VARCHAR2(30);
67198 l_event_class_code            VARCHAR2(30);
67199 l_ae_header_id                NUMBER;
67200 l_event_type_code             VARCHAR2(30);
67201 l_line_definition_code        VARCHAR2(30);
67202 l_line_definition_owner_code  VARCHAR2(1);
67203 --
67204 -- adr variables
67205 l_segment                     VARCHAR2(30);
67206 l_ccid                        NUMBER;
67207 l_adr_transaction_coa_id      NUMBER;
67208 l_adr_accounting_coa_id       NUMBER;
67209 l_adr_flexfield_segment_code  VARCHAR2(30);
67210 l_adr_flex_value_set_id       NUMBER;
67211 l_adr_value_type_code         VARCHAR2(30);
67212 l_adr_value_combination_id    NUMBER;
67213 l_adr_value_segment_code      VARCHAR2(30);
67214 
67215 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67216 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67217 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67218 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67219 
67220 -- 4262811 Variables ------------------------------------------------------------------------------------------
67221 l_entered_amt_idx             NUMBER;
67222 l_accted_amt_idx              NUMBER;
67223 l_acc_rev_flag                VARCHAR2(1);
67224 l_accrual_line_num            NUMBER;
67225 l_tmp_amt                     NUMBER;
67226 l_acc_rev_natural_side_code   VARCHAR2(1);
67227 
67228 l_num_entries                 NUMBER;
67229 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67230 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67231 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67232 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67233 l_recog_line_1                NUMBER;
67234 l_recog_line_2                NUMBER;
67235 
67236 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67237 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67238 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67239 
67240 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67241 
67242 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67243 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67244 
67245 ---------------------------------------------------------------------------------------------------------------
67246 
67247 
67248 --
67249 -- bulk performance
67250 --
67251 l_balance_type_code           VARCHAR2(1);
67252 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67253 l_log_module                  VARCHAR2(240);
67254 
67255 --
67256 -- Upgrade strategy
67257 --
67258 l_actual_upg_option           VARCHAR2(1);
67259 l_enc_upg_option           VARCHAR2(1);
67260 
67261 --
67262 BEGIN
67263 --
67264 IF g_log_enabled THEN
67265       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
67266 END IF;
67267 --
67268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67269 
67270       trace
67271          (p_msg      => 'BEGIN of AcctLineType_143'
67272          ,p_level    => C_LEVEL_PROCEDURE
67273          ,p_module   => l_log_module);
67274 
67275 END IF;
67276 --
67277 l_component_type             := 'AMB_JLT';
67278 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
67279 l_component_type_code        := 'S';
67280 l_component_appl_id          :=  707;
67281 l_amb_context_code           := 'DEFAULT';
67282 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
67283 l_event_class_code           := 'DIR_INTERORG_SHIP';
67284 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
67285 l_line_definition_owner_code := 'S';
67286 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
67287 --
67288 l_balance_type_code          := 'A';
67289 l_segment                     := NULL;
67290 l_ccid                        := NULL;
67291 l_adr_transaction_coa_id      := NULL;
67292 l_adr_accounting_coa_id       := NULL;
67293 l_adr_flexfield_segment_code  := NULL;
67294 l_adr_flex_value_set_id       := NULL;
67295 l_adr_value_type_code         := NULL;
67296 l_adr_value_combination_id    := NULL;
67297 l_adr_value_segment_code      := NULL;
67298 
67299 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67300 l_bflow_class_code           := '';    -- 4219869 Business Flow
67301 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67302 l_budgetary_control_flag     := 'N';
67303 
67304 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67305 l_bflow_applied_to_amt       := NULL; -- 5132302
67306 l_entered_amt_idx            := NULL;          -- 4262811
67307 l_accted_amt_idx             := NULL;          -- 4262811
67308 l_acc_rev_flag               := NULL;          -- 4262811
67309 l_accrual_line_num           := NULL;          -- 4262811
67310 l_tmp_amt                    := NULL;          -- 4262811
67311 --
67312  
67313 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67314     l_balance_type_code <> 'B' THEN
67315 IF NVL(p_source_97,9E125) =  12
67316  THEN 
67317 
67318    --
67319    XLA_AE_LINES_PKG.SetNewLine;
67320 
67321    p_balance_type_code          := l_balance_type_code;
67322    -- set the flag so later we will know whether the gain loss line needs to be created
67323    
67324    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67325      p_actual_flag :='A';
67326    END IF;
67327 
67328    --
67329    -- bulk performance
67330    --
67331    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67332                                       p_header_num   => 0); -- 4262811
67333    --
67334    -- set accounting line options
67335    --
67336    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67337            p_natural_side_code          => 'D'
67338          , p_gain_or_loss_flag          => 'N'
67339          , p_gl_transfer_mode_code      => 'S'
67340          , p_acct_entry_type_code       => 'A'
67341          , p_switch_side_flag           => 'Y'
67342          , p_merge_duplicate_code       => 'N'
67343          );
67344    --
67345    l_acc_rev_natural_side_code := 'C';  -- 4262811
67346    -- 
67347    --
67348    -- set accounting line type info
67349    --
67350    xla_ae_lines_pkg.SetAcctLineType
67351       (p_component_type             => l_component_type
67352       ,p_event_type_code            => l_event_type_code
67353       ,p_line_definition_owner_code => l_line_definition_owner_code
67354       ,p_line_definition_code       => l_line_definition_code
67355       ,p_accounting_line_code       => l_component_code
67356       ,p_accounting_line_type_code  => l_component_type_code
67357       ,p_accounting_line_appl_id    => l_component_appl_id
67358       ,p_amb_context_code           => l_amb_context_code
67359       ,p_entity_code                => l_entity_code
67360       ,p_event_class_code           => l_event_class_code);
67361    --
67362    -- set accounting class
67363    --
67364    xla_ae_lines_pkg.SetAcctClass(
67365            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
67366          , p_ae_header_id           => l_ae_header_id
67367          );
67368 
67369    --
67370    -- set rounding class
67371    --
67372    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67373                       'INTERORG_FREIGHT_CHARGE';
67374 
67375    --
67376    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67377    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67378    --
67379    -- bulk performance
67380    --
67381    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67382 
67383    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67384       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67385 
67386    -- 4955764
67387    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67388       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67389 
67390    -- 4458381 Public Sector Enh
67391    
67392    --
67393    -- set accounting attributes for the line type
67394    --
67395    l_entered_amt_idx := 3;
67396    l_accted_amt_idx  := 8;
67397    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67398    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67399    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
67400    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67401    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
67402    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67403    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
67404    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67405    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
67406    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67407    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
67408    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67409    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
67410    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67411    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
67412    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67413    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
67414 
67415    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67416    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67417 
67418    ---------------------------------------------------------------------------------------------------------------
67419    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67420    ---------------------------------------------------------------------------------------------------------------
67421    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67422 
67423    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67424    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67425 
67426    IF xla_accounting_cache_pkg.GetValueChar
67427          (p_source_code         => 'LEDGER_CATEGORY_CODE'
67428          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67429    AND l_bflow_method_code = 'PRIOR_ENTRY'
67430 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67431    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67432          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67433        )
67434    THEN
67435          xla_ae_lines_pkg.BflowUpgEntry
67436            (p_business_method_code    => l_bflow_method_code
67437            ,p_business_class_code     => l_bflow_class_code
67438            ,p_balance_type            => l_balance_type_code);
67439    ELSE
67440       NULL;
67441 -- No business flow processing for business flow method of NONE.
67442    END IF;
67443 
67444    --
67445    -- call analytical criteria
67446    --
67447    
67448    --
67449    -- call description
67450    --
67451    
67452 xla_ae_lines_pkg.SetLineDescription(
67453    p_ae_header_id => l_ae_header_id
67454   ,p_description  => Description_1 (
67455      p_application_id         => p_application_id
67456    , p_ae_header_id           => l_ae_header_id 
67457 , p_source_1 => p_source_1
67458 , p_source_2 => p_source_2
67459 , p_source_3 => p_source_3
67460 , p_source_4 => p_source_4
67461 , p_source_5 => p_source_5
67462    )
67463 );
67464 
67465 
67466    --
67467    -- call ADRs
67468    -- Bug 4922099
67469    --
67470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67471         (NVL(l_actual_upg_option, 'N') = 'O') OR
67472         (NVL(l_enc_upg_option, 'N') = 'O')
67473       )
67474    THEN
67475    NULL;
67476    --
67477    --
67478    
67479   l_ccid := AcctDerRule_17(
67480            p_application_id           => p_application_id
67481          , p_ae_header_id             => l_ae_header_id 
67482 , p_source_32 => p_source_32
67483          , x_transaction_coa_id       => l_adr_transaction_coa_id
67484          , x_accounting_coa_id        => l_adr_accounting_coa_id
67485          , x_value_type_code          => l_adr_value_type_code
67486          , p_side                     => 'NA'
67487    );
67488 
67489    xla_ae_lines_pkg.set_ccid(
67490     p_code_combination_id          => l_ccid
67491   , p_value_type_code              => l_adr_value_type_code
67492   , p_transaction_coa_id           => l_adr_transaction_coa_id
67493   , p_accounting_coa_id            => l_adr_accounting_coa_id
67494   , p_adr_code                     => 'PI_FREIGHT'
67495   , p_adr_type_code                => 'S'
67496   , p_component_type               => l_component_type
67497   , p_component_code               => l_component_code
67498   , p_component_type_code          => l_component_type_code
67499   , p_component_appl_id            => l_component_appl_id
67500   , p_amb_context_code             => l_amb_context_code
67501   , p_side                         => 'NA'
67502   );
67503 
67504 
67505    --
67506    --
67507    END IF;
67508    --
67509    -- Bug 4922099
67510    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67511           (NVL(l_enc_upg_option, 'N') = 'O')
67512         ) AND
67513         (l_bflow_method_code = 'PRIOR_ENTRY')
67514       )
67515    THEN
67516       IF
67517       --
67518       1 = 2
67519       --
67520       THEN
67521       xla_accounting_err_pkg.build_message
67522                                     (p_appli_s_name            => 'XLA'
67523                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67524                                     ,p_token_1                 => 'LINE_NUMBER'
67525                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67526                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67527                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67528                                                                              l_component_type
67529                                                                             ,l_component_code
67530                                                                             ,l_component_type_code
67531                                                                             ,l_component_appl_id
67532                                                                             ,l_amb_context_code
67533                                                                             ,l_entity_code
67534                                                                             ,l_event_class_code
67535                                                                            )
67536                                     ,p_token_3                 => 'OWNER'
67537                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67538                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67539                                                                           ,p_lookup_code    => l_component_type_code
67540                                                                          )
67541                                     ,p_token_4                 => 'PRODUCT_NAME'
67542                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67543                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67544                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67545                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67546                                     ,p_ae_header_id            =>  NULL
67547                                        );
67548 
67549         IF (C_LEVEL_ERROR>= g_log_level) THEN
67550                  trace
67551                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67552                       ,p_level    => C_LEVEL_ERROR
67553                       ,p_module   => l_log_module);
67554         END IF;
67555       END IF;
67556    END IF;
67557    --
67558    --
67559    ------------------------------------------------------------------------------------------------
67560    -- 4219869 Business Flow
67561    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67562    -- Prior Entry.  Currently, the following code is always generated.
67563    ------------------------------------------------------------------------------------------------
67564    XLA_AE_LINES_PKG.ValidateCurrentLine;
67565 
67566    ------------------------------------------------------------------------------------
67567    -- 4219869 Business Flow
67568    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67569    ------------------------------------------------------------------------------------
67570    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67571 
67572    ----------------------------------------------------------------------------------
67573    -- 4219869 Business Flow
67574    -- Update journal entry status -- Need to generate this within IF <condition>
67575    ----------------------------------------------------------------------------------
67576    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67577          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67578          ,p_balance_type_code => l_balance_type_code
67579          );
67580 
67581    -------------------------------------------------------------------------------------------
67582    -- 4262811 - Generate the Accrual Reversal lines
67583    -------------------------------------------------------------------------------------------
67584    BEGIN
67585       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67586                               (g_array_event(p_event_id).array_value_num('header_index'));
67587       IF l_acc_rev_flag IS NULL THEN
67588          l_acc_rev_flag := 'N';
67589       END IF;
67590    EXCEPTION
67591       WHEN OTHERS THEN
67592          l_acc_rev_flag := 'N';
67593    END;
67594    --
67595    IF (l_acc_rev_flag = 'Y') THEN
67596 
67597        -- 4645092  ------------------------------------------------------------------------------
67598        -- To allow MPA report to determine if it should generate report process
67599        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67600        ------------------------------------------------------------------------------------------
67601 
67602        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67603        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67604    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
67605    -- call ADRs
67606    -- Bug 4922099
67607    --
67608    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67609         (NVL(l_actual_upg_option, 'N') = 'O') OR
67610         (NVL(l_enc_upg_option, 'N') = 'O')
67611       )
67612    THEN
67613    NULL;
67614    --
67615    --
67616    
67617   l_ccid := AcctDerRule_17(
67618            p_application_id           => p_application_id
67619          , p_ae_header_id             => l_ae_header_id 
67620 , p_source_32 => p_source_32
67621          , x_transaction_coa_id       => l_adr_transaction_coa_id
67622          , x_accounting_coa_id        => l_adr_accounting_coa_id
67623          , x_value_type_code          => l_adr_value_type_code
67624          , p_side                     => 'NA'
67625    );
67626 
67627    xla_ae_lines_pkg.set_ccid(
67628     p_code_combination_id          => l_ccid
67629   , p_value_type_code              => l_adr_value_type_code
67630   , p_transaction_coa_id           => l_adr_transaction_coa_id
67631   , p_accounting_coa_id            => l_adr_accounting_coa_id
67632   , p_adr_code                     => 'PI_FREIGHT'
67633   , p_adr_type_code                => 'S'
67634   , p_component_type               => l_component_type
67635   , p_component_code               => l_component_code
67636   , p_component_type_code          => l_component_type_code
67637   , p_component_appl_id            => l_component_appl_id
67638   , p_amb_context_code             => l_amb_context_code
67639   , p_side                         => 'NA'
67640   );
67641 
67642 
67643    --
67644    --
67645    END IF;
67646 
67647        --
67648        -- Update the line information that should be overwritten
67649        --
67650        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67651                                          p_header_num   => 1);
67652        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67653 
67654        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67655 
67656        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67657           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67658        END IF;
67659 
67660       --
67661       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67662       --
67663       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67664           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67665       ELSE
67666           ---------------------------------------------------------------------------------------------------
67667           -- 4262811a Switch Sign
67668           ---------------------------------------------------------------------------------------------------
67669           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67670           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67671                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67672           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67673                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67674           -- 5132302
67675           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67676                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67677 
67678       END IF;
67679 
67680       -- 4955764
67681       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67682       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67683 
67684 
67685       XLA_AE_LINES_PKG.ValidateCurrentLine;
67686       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67687 
67688       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67689                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67690                ,p_balance_type_code => l_balance_type_code);
67691 
67692    END IF;
67693 
67694    -----------------------------------------------------------------------------------------
67695    -- 4262811 Multiperiod Accounting
67696    -----------------------------------------------------------------------------------------
67697      -- No MPA option is assigned.
67698 
67699 
67700 END IF;
67701 END IF;
67702 --
67703 
67704 --
67705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67706    trace
67707       (p_msg      => 'END of AcctLineType_143'
67708       ,p_level    => C_LEVEL_PROCEDURE
67709       ,p_module   => l_log_module);
67710 END IF;
67711 --
67712 EXCEPTION
67713   WHEN xla_exceptions_pkg.application_exception THEN
67714       RAISE;
67715   WHEN OTHERS THEN
67716        xla_exceptions_pkg.raise_message
67717            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_143');
67718 END AcctLineType_143;
67719 --
67720 
67721 ---------------------------------------
67722 --
67723 -- PRIVATE FUNCTION
67724 --         AcctLineType_144
67725 --
67726 ---------------------------------------
67727 PROCEDURE AcctLineType_144 (
67728   p_application_id        IN NUMBER
67729  ,p_event_id              IN NUMBER
67730  ,p_calculate_acctd_flag  IN VARCHAR2
67731  ,p_calculate_g_l_flag    IN VARCHAR2
67732  ,p_actual_flag           IN OUT VARCHAR2
67733  ,p_balance_type_code     OUT VARCHAR2
67734  ,p_gain_or_loss_ref      OUT VARCHAR2
67735  
67736 --TRANSACTION_ID
67737  , p_source_1            IN NUMBER
67738 --Item Concatenated Segments
67739  , p_source_2            IN VARCHAR2
67740 --Transaction Quantity
67741  , p_source_3            IN NUMBER
67742 --Transaction Unit of Measure Code
67743  , p_source_4            IN VARCHAR2
67744 --Inventory Transaction Type Description
67745  , p_source_5            IN VARCHAR2
67746 --Transaction Transportation Distribution Account
67747  , p_source_32            IN NUMBER
67748 --DISTRIBUTION_IDENTIFIER
67749  , p_source_84            IN NUMBER
67750 --Distribution Type
67751  , p_source_85            IN VARCHAR2
67752  , p_source_85_meaning    IN VARCHAR2
67753 --Entered Currency Code
67754  , p_source_88            IN VARCHAR2
67755 --Entered Amount
67756  , p_source_91            IN NUMBER
67757 --Currency Conversion Date
67758  , p_source_92            IN DATE
67759 --Currency Conversion Rate
67760  , p_source_93            IN NUMBER
67761 --Currency Conversion Type
67762  , p_source_94            IN VARCHAR2
67763 --Accounted Amount
67764  , p_source_95            IN NUMBER
67765 --Accounting Line Type
67766  , p_source_97            IN NUMBER
67767 )
67768 IS
67769 
67770 l_component_type              VARCHAR2(80);
67771 l_component_code              VARCHAR2(30);
67772 l_component_type_code         VARCHAR2(1);
67773 l_component_appl_id           INTEGER;
67774 l_amb_context_code            VARCHAR2(30);
67775 l_entity_code                 VARCHAR2(30);
67776 l_event_class_code            VARCHAR2(30);
67777 l_ae_header_id                NUMBER;
67778 l_event_type_code             VARCHAR2(30);
67779 l_line_definition_code        VARCHAR2(30);
67780 l_line_definition_owner_code  VARCHAR2(1);
67781 --
67782 -- adr variables
67783 l_segment                     VARCHAR2(30);
67784 l_ccid                        NUMBER;
67785 l_adr_transaction_coa_id      NUMBER;
67786 l_adr_accounting_coa_id       NUMBER;
67787 l_adr_flexfield_segment_code  VARCHAR2(30);
67788 l_adr_flex_value_set_id       NUMBER;
67789 l_adr_value_type_code         VARCHAR2(30);
67790 l_adr_value_combination_id    NUMBER;
67791 l_adr_value_segment_code      VARCHAR2(30);
67792 
67793 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67794 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67795 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67796 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67797 
67798 -- 4262811 Variables ------------------------------------------------------------------------------------------
67799 l_entered_amt_idx             NUMBER;
67800 l_accted_amt_idx              NUMBER;
67801 l_acc_rev_flag                VARCHAR2(1);
67802 l_accrual_line_num            NUMBER;
67803 l_tmp_amt                     NUMBER;
67804 l_acc_rev_natural_side_code   VARCHAR2(1);
67805 
67806 l_num_entries                 NUMBER;
67807 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67808 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67809 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67810 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67811 l_recog_line_1                NUMBER;
67812 l_recog_line_2                NUMBER;
67813 
67814 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67815 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67816 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67817 
67818 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67819 
67820 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67821 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67822 
67823 ---------------------------------------------------------------------------------------------------------------
67824 
67825 
67826 --
67827 -- bulk performance
67828 --
67829 l_balance_type_code           VARCHAR2(1);
67830 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67831 l_log_module                  VARCHAR2(240);
67832 
67833 --
67834 -- Upgrade strategy
67835 --
67836 l_actual_upg_option           VARCHAR2(1);
67837 l_enc_upg_option           VARCHAR2(1);
67838 
67839 --
67840 BEGIN
67841 --
67842 IF g_log_enabled THEN
67843       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
67844 END IF;
67845 --
67846 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67847 
67848       trace
67849          (p_msg      => 'BEGIN of AcctLineType_144'
67850          ,p_level    => C_LEVEL_PROCEDURE
67851          ,p_module   => l_log_module);
67852 
67853 END IF;
67854 --
67855 l_component_type             := 'AMB_JLT';
67856 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
67857 l_component_type_code        := 'S';
67858 l_component_appl_id          :=  707;
67859 l_amb_context_code           := 'DEFAULT';
67860 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
67861 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
67862 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
67863 l_line_definition_owner_code := 'S';
67864 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
67865 --
67866 l_balance_type_code          := 'A';
67867 l_segment                     := NULL;
67868 l_ccid                        := NULL;
67869 l_adr_transaction_coa_id      := NULL;
67870 l_adr_accounting_coa_id       := NULL;
67871 l_adr_flexfield_segment_code  := NULL;
67872 l_adr_flex_value_set_id       := NULL;
67873 l_adr_value_type_code         := NULL;
67874 l_adr_value_combination_id    := NULL;
67875 l_adr_value_segment_code      := NULL;
67876 
67877 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67878 l_bflow_class_code           := '';    -- 4219869 Business Flow
67879 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67880 l_budgetary_control_flag     := 'N';
67881 
67882 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67883 l_bflow_applied_to_amt       := NULL; -- 5132302
67884 l_entered_amt_idx            := NULL;          -- 4262811
67885 l_accted_amt_idx             := NULL;          -- 4262811
67886 l_acc_rev_flag               := NULL;          -- 4262811
67887 l_accrual_line_num           := NULL;          -- 4262811
67888 l_tmp_amt                    := NULL;          -- 4262811
67889 --
67890  
67891 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67892     l_balance_type_code <> 'B' THEN
67893 IF NVL(p_source_97,9E125) =  12
67894  THEN 
67895 
67896    --
67897    XLA_AE_LINES_PKG.SetNewLine;
67898 
67899    p_balance_type_code          := l_balance_type_code;
67900    -- set the flag so later we will know whether the gain loss line needs to be created
67901    
67902    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67903      p_actual_flag :='A';
67904    END IF;
67905 
67906    --
67907    -- bulk performance
67908    --
67909    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67910                                       p_header_num   => 0); -- 4262811
67911    --
67912    -- set accounting line options
67913    --
67914    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67915            p_natural_side_code          => 'D'
67916          , p_gain_or_loss_flag          => 'N'
67917          , p_gl_transfer_mode_code      => 'S'
67918          , p_acct_entry_type_code       => 'A'
67919          , p_switch_side_flag           => 'Y'
67920          , p_merge_duplicate_code       => 'N'
67921          );
67922    --
67923    l_acc_rev_natural_side_code := 'C';  -- 4262811
67924    -- 
67925    --
67926    -- set accounting line type info
67927    --
67928    xla_ae_lines_pkg.SetAcctLineType
67929       (p_component_type             => l_component_type
67930       ,p_event_type_code            => l_event_type_code
67931       ,p_line_definition_owner_code => l_line_definition_owner_code
67932       ,p_line_definition_code       => l_line_definition_code
67933       ,p_accounting_line_code       => l_component_code
67934       ,p_accounting_line_type_code  => l_component_type_code
67935       ,p_accounting_line_appl_id    => l_component_appl_id
67936       ,p_amb_context_code           => l_amb_context_code
67937       ,p_entity_code                => l_entity_code
67938       ,p_event_class_code           => l_event_class_code);
67939    --
67940    -- set accounting class
67941    --
67942    xla_ae_lines_pkg.SetAcctClass(
67943            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
67944          , p_ae_header_id           => l_ae_header_id
67945          );
67946 
67947    --
67948    -- set rounding class
67949    --
67950    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67951                       'INTERORG_FREIGHT_CHARGE';
67952 
67953    --
67954    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67955    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67956    --
67957    -- bulk performance
67958    --
67959    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67960 
67961    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67962       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67963 
67964    -- 4955764
67965    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67966       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67967 
67968    -- 4458381 Public Sector Enh
67969    
67970    --
67971    -- set accounting attributes for the line type
67972    --
67973    l_entered_amt_idx := 3;
67974    l_accted_amt_idx  := 8;
67975    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67976    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67977    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
67978    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67979    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
67980    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67981    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
67982    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67983    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
67984    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67985    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
67986    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67987    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
67988    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67989    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
67990    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67991    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
67992 
67993    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67994    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67995 
67996    ---------------------------------------------------------------------------------------------------------------
67997    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67998    ---------------------------------------------------------------------------------------------------------------
67999    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68000 
68001    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68002    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68003 
68004    IF xla_accounting_cache_pkg.GetValueChar
68005          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68006          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68007    AND l_bflow_method_code = 'PRIOR_ENTRY'
68008 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68009    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68010          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68011        )
68012    THEN
68013          xla_ae_lines_pkg.BflowUpgEntry
68014            (p_business_method_code    => l_bflow_method_code
68015            ,p_business_class_code     => l_bflow_class_code
68016            ,p_balance_type            => l_balance_type_code);
68017    ELSE
68018       NULL;
68019 -- No business flow processing for business flow method of NONE.
68020    END IF;
68021 
68022    --
68023    -- call analytical criteria
68024    --
68025    
68026    --
68027    -- call description
68028    --
68029    
68030 xla_ae_lines_pkg.SetLineDescription(
68031    p_ae_header_id => l_ae_header_id
68032   ,p_description  => Description_1 (
68033      p_application_id         => p_application_id
68034    , p_ae_header_id           => l_ae_header_id 
68035 , p_source_1 => p_source_1
68036 , p_source_2 => p_source_2
68037 , p_source_3 => p_source_3
68038 , p_source_4 => p_source_4
68039 , p_source_5 => p_source_5
68040    )
68041 );
68042 
68043 
68044    --
68045    -- call ADRs
68046    -- Bug 4922099
68047    --
68048    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68049         (NVL(l_actual_upg_option, 'N') = 'O') OR
68050         (NVL(l_enc_upg_option, 'N') = 'O')
68051       )
68052    THEN
68053    NULL;
68054    --
68055    --
68056    
68057   l_ccid := AcctDerRule_17(
68058            p_application_id           => p_application_id
68059          , p_ae_header_id             => l_ae_header_id 
68060 , p_source_32 => p_source_32
68061          , x_transaction_coa_id       => l_adr_transaction_coa_id
68062          , x_accounting_coa_id        => l_adr_accounting_coa_id
68063          , x_value_type_code          => l_adr_value_type_code
68064          , p_side                     => 'NA'
68065    );
68066 
68067    xla_ae_lines_pkg.set_ccid(
68068     p_code_combination_id          => l_ccid
68069   , p_value_type_code              => l_adr_value_type_code
68070   , p_transaction_coa_id           => l_adr_transaction_coa_id
68071   , p_accounting_coa_id            => l_adr_accounting_coa_id
68072   , p_adr_code                     => 'PI_FREIGHT'
68073   , p_adr_type_code                => 'S'
68074   , p_component_type               => l_component_type
68075   , p_component_code               => l_component_code
68076   , p_component_type_code          => l_component_type_code
68077   , p_component_appl_id            => l_component_appl_id
68078   , p_amb_context_code             => l_amb_context_code
68079   , p_side                         => 'NA'
68080   );
68081 
68082 
68083    --
68084    --
68085    END IF;
68086    --
68087    -- Bug 4922099
68088    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68089           (NVL(l_enc_upg_option, 'N') = 'O')
68090         ) AND
68091         (l_bflow_method_code = 'PRIOR_ENTRY')
68092       )
68093    THEN
68094       IF
68095       --
68096       1 = 2
68097       --
68098       THEN
68099       xla_accounting_err_pkg.build_message
68100                                     (p_appli_s_name            => 'XLA'
68101                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68102                                     ,p_token_1                 => 'LINE_NUMBER'
68103                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68104                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68105                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68106                                                                              l_component_type
68107                                                                             ,l_component_code
68108                                                                             ,l_component_type_code
68109                                                                             ,l_component_appl_id
68110                                                                             ,l_amb_context_code
68111                                                                             ,l_entity_code
68112                                                                             ,l_event_class_code
68113                                                                            )
68114                                     ,p_token_3                 => 'OWNER'
68115                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68116                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68117                                                                           ,p_lookup_code    => l_component_type_code
68118                                                                          )
68119                                     ,p_token_4                 => 'PRODUCT_NAME'
68120                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68121                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68122                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68123                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68124                                     ,p_ae_header_id            =>  NULL
68125                                        );
68126 
68127         IF (C_LEVEL_ERROR>= g_log_level) THEN
68128                  trace
68129                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68130                       ,p_level    => C_LEVEL_ERROR
68131                       ,p_module   => l_log_module);
68132         END IF;
68133       END IF;
68134    END IF;
68135    --
68136    --
68137    ------------------------------------------------------------------------------------------------
68138    -- 4219869 Business Flow
68139    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68140    -- Prior Entry.  Currently, the following code is always generated.
68141    ------------------------------------------------------------------------------------------------
68142    XLA_AE_LINES_PKG.ValidateCurrentLine;
68143 
68144    ------------------------------------------------------------------------------------
68145    -- 4219869 Business Flow
68146    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68147    ------------------------------------------------------------------------------------
68148    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68149 
68150    ----------------------------------------------------------------------------------
68151    -- 4219869 Business Flow
68152    -- Update journal entry status -- Need to generate this within IF <condition>
68153    ----------------------------------------------------------------------------------
68154    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68155          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68156          ,p_balance_type_code => l_balance_type_code
68157          );
68158 
68159    -------------------------------------------------------------------------------------------
68160    -- 4262811 - Generate the Accrual Reversal lines
68161    -------------------------------------------------------------------------------------------
68162    BEGIN
68163       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68164                               (g_array_event(p_event_id).array_value_num('header_index'));
68165       IF l_acc_rev_flag IS NULL THEN
68166          l_acc_rev_flag := 'N';
68167       END IF;
68168    EXCEPTION
68169       WHEN OTHERS THEN
68170          l_acc_rev_flag := 'N';
68171    END;
68172    --
68173    IF (l_acc_rev_flag = 'Y') THEN
68174 
68175        -- 4645092  ------------------------------------------------------------------------------
68176        -- To allow MPA report to determine if it should generate report process
68177        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68178        ------------------------------------------------------------------------------------------
68179 
68180        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68181        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68182    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68183    -- call ADRs
68184    -- Bug 4922099
68185    --
68186    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68187         (NVL(l_actual_upg_option, 'N') = 'O') OR
68188         (NVL(l_enc_upg_option, 'N') = 'O')
68189       )
68190    THEN
68191    NULL;
68192    --
68193    --
68194    
68195   l_ccid := AcctDerRule_17(
68196            p_application_id           => p_application_id
68197          , p_ae_header_id             => l_ae_header_id 
68198 , p_source_32 => p_source_32
68199          , x_transaction_coa_id       => l_adr_transaction_coa_id
68200          , x_accounting_coa_id        => l_adr_accounting_coa_id
68201          , x_value_type_code          => l_adr_value_type_code
68202          , p_side                     => 'NA'
68203    );
68204 
68205    xla_ae_lines_pkg.set_ccid(
68206     p_code_combination_id          => l_ccid
68207   , p_value_type_code              => l_adr_value_type_code
68208   , p_transaction_coa_id           => l_adr_transaction_coa_id
68209   , p_accounting_coa_id            => l_adr_accounting_coa_id
68210   , p_adr_code                     => 'PI_FREIGHT'
68211   , p_adr_type_code                => 'S'
68212   , p_component_type               => l_component_type
68213   , p_component_code               => l_component_code
68214   , p_component_type_code          => l_component_type_code
68215   , p_component_appl_id            => l_component_appl_id
68216   , p_amb_context_code             => l_amb_context_code
68217   , p_side                         => 'NA'
68218   );
68219 
68220 
68221    --
68222    --
68223    END IF;
68224 
68225        --
68226        -- Update the line information that should be overwritten
68227        --
68228        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68229                                          p_header_num   => 1);
68230        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68231 
68232        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68233 
68234        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68235           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68236        END IF;
68237 
68238       --
68239       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68240       --
68241       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68242           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68243       ELSE
68244           ---------------------------------------------------------------------------------------------------
68245           -- 4262811a Switch Sign
68246           ---------------------------------------------------------------------------------------------------
68247           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68248           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68249                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68250           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68251                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68252           -- 5132302
68253           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68254                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68255 
68256       END IF;
68257 
68258       -- 4955764
68259       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68260       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68261 
68262 
68263       XLA_AE_LINES_PKG.ValidateCurrentLine;
68264       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68265 
68266       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68267                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68268                ,p_balance_type_code => l_balance_type_code);
68269 
68270    END IF;
68271 
68272    -----------------------------------------------------------------------------------------
68273    -- 4262811 Multiperiod Accounting
68274    -----------------------------------------------------------------------------------------
68275      -- No MPA option is assigned.
68276 
68277 
68278 END IF;
68279 END IF;
68280 --
68281 
68282 --
68283 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68284    trace
68285       (p_msg      => 'END of AcctLineType_144'
68286       ,p_level    => C_LEVEL_PROCEDURE
68287       ,p_module   => l_log_module);
68288 END IF;
68289 --
68290 EXCEPTION
68291   WHEN xla_exceptions_pkg.application_exception THEN
68292       RAISE;
68293   WHEN OTHERS THEN
68294        xla_exceptions_pkg.raise_message
68295            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_144');
68296 END AcctLineType_144;
68297 --
68298 
68299 ---------------------------------------
68300 --
68301 -- PRIVATE FUNCTION
68302 --         AcctLineType_145
68303 --
68304 ---------------------------------------
68305 PROCEDURE AcctLineType_145 (
68306   p_application_id        IN NUMBER
68307  ,p_event_id              IN NUMBER
68308  ,p_calculate_acctd_flag  IN VARCHAR2
68309  ,p_calculate_g_l_flag    IN VARCHAR2
68310  ,p_actual_flag           IN OUT VARCHAR2
68311  ,p_balance_type_code     OUT VARCHAR2
68312  ,p_gain_or_loss_ref      OUT VARCHAR2
68313  
68314 --TRANSACTION_ID
68315  , p_source_1            IN NUMBER
68316 --Item Concatenated Segments
68317  , p_source_2            IN VARCHAR2
68318 --Transaction Quantity
68319  , p_source_3            IN NUMBER
68320 --Transaction Unit of Measure Code
68321  , p_source_4            IN VARCHAR2
68322 --Inventory Transaction Type Description
68323  , p_source_5            IN VARCHAR2
68324 --Cost Management Default Account
68325  , p_source_11            IN NUMBER
68326 --DISTRIBUTION_IDENTIFIER
68327  , p_source_84            IN NUMBER
68328 --Distribution Type
68329  , p_source_85            IN VARCHAR2
68330  , p_source_85_meaning    IN VARCHAR2
68331 --Entered Currency Code
68332  , p_source_88            IN VARCHAR2
68333 --Entered Amount
68334  , p_source_91            IN NUMBER
68335 --Currency Conversion Date
68336  , p_source_92            IN DATE
68337 --Currency Conversion Rate
68338  , p_source_93            IN NUMBER
68339 --Currency Conversion Type
68340  , p_source_94            IN VARCHAR2
68341 --Accounted Amount
68342  , p_source_95            IN NUMBER
68343 --Accounting Line Type
68344  , p_source_97            IN NUMBER
68345 )
68346 IS
68347 
68348 l_component_type              VARCHAR2(80);
68349 l_component_code              VARCHAR2(30);
68350 l_component_type_code         VARCHAR2(1);
68351 l_component_appl_id           INTEGER;
68352 l_amb_context_code            VARCHAR2(30);
68353 l_entity_code                 VARCHAR2(30);
68354 l_event_class_code            VARCHAR2(30);
68355 l_ae_header_id                NUMBER;
68356 l_event_type_code             VARCHAR2(30);
68357 l_line_definition_code        VARCHAR2(30);
68358 l_line_definition_owner_code  VARCHAR2(1);
68359 --
68360 -- adr variables
68361 l_segment                     VARCHAR2(30);
68362 l_ccid                        NUMBER;
68363 l_adr_transaction_coa_id      NUMBER;
68364 l_adr_accounting_coa_id       NUMBER;
68365 l_adr_flexfield_segment_code  VARCHAR2(30);
68366 l_adr_flex_value_set_id       NUMBER;
68367 l_adr_value_type_code         VARCHAR2(30);
68368 l_adr_value_combination_id    NUMBER;
68369 l_adr_value_segment_code      VARCHAR2(30);
68370 
68371 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68372 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68373 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68374 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68375 
68376 -- 4262811 Variables ------------------------------------------------------------------------------------------
68377 l_entered_amt_idx             NUMBER;
68378 l_accted_amt_idx              NUMBER;
68379 l_acc_rev_flag                VARCHAR2(1);
68380 l_accrual_line_num            NUMBER;
68381 l_tmp_amt                     NUMBER;
68382 l_acc_rev_natural_side_code   VARCHAR2(1);
68383 
68384 l_num_entries                 NUMBER;
68385 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
68386 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
68387 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
68388 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
68389 l_recog_line_1                NUMBER;
68390 l_recog_line_2                NUMBER;
68391 
68392 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
68393 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
68394 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
68395 
68396 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68397 
68398 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
68399 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
68400 
68401 ---------------------------------------------------------------------------------------------------------------
68402 
68403 
68404 --
68405 -- bulk performance
68406 --
68407 l_balance_type_code           VARCHAR2(1);
68408 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
68409 l_log_module                  VARCHAR2(240);
68410 
68411 --
68412 -- Upgrade strategy
68413 --
68414 l_actual_upg_option           VARCHAR2(1);
68415 l_enc_upg_option           VARCHAR2(1);
68416 
68417 --
68418 BEGIN
68419 --
68420 IF g_log_enabled THEN
68421       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
68422 END IF;
68423 --
68424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68425 
68426       trace
68427          (p_msg      => 'BEGIN of AcctLineType_145'
68428          ,p_level    => C_LEVEL_PROCEDURE
68429          ,p_module   => l_log_module);
68430 
68431 END IF;
68432 --
68433 l_component_type             := 'AMB_JLT';
68434 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
68435 l_component_type_code        := 'S';
68436 l_component_appl_id          :=  707;
68437 l_amb_context_code           := 'DEFAULT';
68438 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
68439 l_event_class_code           := 'USER_DEFINE';
68440 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
68441 l_line_definition_owner_code := 'S';
68442 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
68443 --
68444 l_balance_type_code          := 'A';
68445 l_segment                     := NULL;
68446 l_ccid                        := NULL;
68447 l_adr_transaction_coa_id      := NULL;
68448 l_adr_accounting_coa_id       := NULL;
68449 l_adr_flexfield_segment_code  := NULL;
68450 l_adr_flex_value_set_id       := NULL;
68451 l_adr_value_type_code         := NULL;
68452 l_adr_value_combination_id    := NULL;
68453 l_adr_value_segment_code      := NULL;
68454 
68455 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
68456 l_bflow_class_code           := '';    -- 4219869 Business Flow
68457 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
68458 l_budgetary_control_flag     := 'N';
68459 
68460 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
68461 l_bflow_applied_to_amt       := NULL; -- 5132302
68462 l_entered_amt_idx            := NULL;          -- 4262811
68463 l_accted_amt_idx             := NULL;          -- 4262811
68464 l_acc_rev_flag               := NULL;          -- 4262811
68465 l_accrual_line_num           := NULL;          -- 4262811
68466 l_tmp_amt                    := NULL;          -- 4262811
68467 --
68468  
68469 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68470     l_balance_type_code <> 'B' THEN
68471 IF NVL(p_source_97,9E125) =  12
68472  THEN 
68473 
68474    --
68475    XLA_AE_LINES_PKG.SetNewLine;
68476 
68477    p_balance_type_code          := l_balance_type_code;
68478    -- set the flag so later we will know whether the gain loss line needs to be created
68479    
68480    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68481      p_actual_flag :='A';
68482    END IF;
68483 
68484    --
68485    -- bulk performance
68486    --
68487    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68488                                       p_header_num   => 0); -- 4262811
68489    --
68490    -- set accounting line options
68491    --
68492    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68493            p_natural_side_code          => 'D'
68494          , p_gain_or_loss_flag          => 'N'
68495          , p_gl_transfer_mode_code      => 'S'
68496          , p_acct_entry_type_code       => 'A'
68497          , p_switch_side_flag           => 'Y'
68498          , p_merge_duplicate_code       => 'N'
68499          );
68500    --
68501    l_acc_rev_natural_side_code := 'C';  -- 4262811
68502    -- 
68503    --
68504    -- set accounting line type info
68505    --
68506    xla_ae_lines_pkg.SetAcctLineType
68507       (p_component_type             => l_component_type
68508       ,p_event_type_code            => l_event_type_code
68509       ,p_line_definition_owner_code => l_line_definition_owner_code
68510       ,p_line_definition_code       => l_line_definition_code
68511       ,p_accounting_line_code       => l_component_code
68512       ,p_accounting_line_type_code  => l_component_type_code
68513       ,p_accounting_line_appl_id    => l_component_appl_id
68514       ,p_amb_context_code           => l_amb_context_code
68515       ,p_entity_code                => l_entity_code
68516       ,p_event_class_code           => l_event_class_code);
68517    --
68518    -- set accounting class
68519    --
68520    xla_ae_lines_pkg.SetAcctClass(
68521            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
68522          , p_ae_header_id           => l_ae_header_id
68523          );
68524 
68525    --
68526    -- set rounding class
68527    --
68528    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68529                       'INTERORG_FREIGHT_CHARGE';
68530 
68531    --
68532    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68533    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68534    --
68535    -- bulk performance
68536    --
68537    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68538 
68539    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68540       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68541 
68542    -- 4955764
68543    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68544       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68545 
68546    -- 4458381 Public Sector Enh
68547    
68548    --
68549    -- set accounting attributes for the line type
68550    --
68551    l_entered_amt_idx := 3;
68552    l_accted_amt_idx  := 8;
68553    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68554    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68555    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
68556    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68557    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
68558    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68559    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
68560    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68561    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
68562    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68563    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
68564    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68565    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
68566    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68567    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
68568    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68569    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
68570 
68571    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68572    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68573 
68574    ---------------------------------------------------------------------------------------------------------------
68575    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68576    ---------------------------------------------------------------------------------------------------------------
68577    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68578 
68579    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68580    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68581 
68582    IF xla_accounting_cache_pkg.GetValueChar
68583          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68584          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68585    AND l_bflow_method_code = 'PRIOR_ENTRY'
68586 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68587    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68588          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68589        )
68590    THEN
68591          xla_ae_lines_pkg.BflowUpgEntry
68592            (p_business_method_code    => l_bflow_method_code
68593            ,p_business_class_code     => l_bflow_class_code
68594            ,p_balance_type            => l_balance_type_code);
68595    ELSE
68596       NULL;
68597 -- No business flow processing for business flow method of NONE.
68598    END IF;
68599 
68600    --
68601    -- call analytical criteria
68602    --
68603    
68604    --
68605    -- call description
68606    --
68607    
68608 xla_ae_lines_pkg.SetLineDescription(
68609    p_ae_header_id => l_ae_header_id
68610   ,p_description  => Description_1 (
68611      p_application_id         => p_application_id
68612    , p_ae_header_id           => l_ae_header_id 
68613 , p_source_1 => p_source_1
68614 , p_source_2 => p_source_2
68615 , p_source_3 => p_source_3
68616 , p_source_4 => p_source_4
68617 , p_source_5 => p_source_5
68618    )
68619 );
68620 
68621 
68622    --
68623    -- call ADRs
68624    -- Bug 4922099
68625    --
68626    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68627         (NVL(l_actual_upg_option, 'N') = 'O') OR
68628         (NVL(l_enc_upg_option, 'N') = 'O')
68629       )
68630    THEN
68631    NULL;
68632    --
68633    --
68634    
68635   l_ccid := AcctDerRule_6(
68636            p_application_id           => p_application_id
68637          , p_ae_header_id             => l_ae_header_id 
68638 , p_source_11 => p_source_11
68639          , x_transaction_coa_id       => l_adr_transaction_coa_id
68640          , x_accounting_coa_id        => l_adr_accounting_coa_id
68641          , x_value_type_code          => l_adr_value_type_code
68642          , p_side                     => 'NA'
68643    );
68644 
68645    xla_ae_lines_pkg.set_ccid(
68646     p_code_combination_id          => l_ccid
68647   , p_value_type_code              => l_adr_value_type_code
68648   , p_transaction_coa_id           => l_adr_transaction_coa_id
68649   , p_accounting_coa_id            => l_adr_accounting_coa_id
68650   , p_adr_code                     => 'CST_DEFAULT'
68651   , p_adr_type_code                => 'S'
68652   , p_component_type               => l_component_type
68653   , p_component_code               => l_component_code
68654   , p_component_type_code          => l_component_type_code
68655   , p_component_appl_id            => l_component_appl_id
68656   , p_amb_context_code             => l_amb_context_code
68657   , p_side                         => 'NA'
68658   );
68659 
68660 
68661    --
68662    --
68663    END IF;
68664    --
68665    -- Bug 4922099
68666    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68667           (NVL(l_enc_upg_option, 'N') = 'O')
68668         ) AND
68669         (l_bflow_method_code = 'PRIOR_ENTRY')
68670       )
68671    THEN
68672       IF
68673       --
68674       1 = 2
68675       --
68676       THEN
68677       xla_accounting_err_pkg.build_message
68678                                     (p_appli_s_name            => 'XLA'
68679                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68680                                     ,p_token_1                 => 'LINE_NUMBER'
68681                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68682                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68683                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68684                                                                              l_component_type
68685                                                                             ,l_component_code
68686                                                                             ,l_component_type_code
68687                                                                             ,l_component_appl_id
68688                                                                             ,l_amb_context_code
68689                                                                             ,l_entity_code
68690                                                                             ,l_event_class_code
68691                                                                            )
68692                                     ,p_token_3                 => 'OWNER'
68693                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68694                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68695                                                                           ,p_lookup_code    => l_component_type_code
68696                                                                          )
68697                                     ,p_token_4                 => 'PRODUCT_NAME'
68698                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68699                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68700                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68701                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68702                                     ,p_ae_header_id            =>  NULL
68703                                        );
68704 
68705         IF (C_LEVEL_ERROR>= g_log_level) THEN
68706                  trace
68707                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68708                       ,p_level    => C_LEVEL_ERROR
68709                       ,p_module   => l_log_module);
68710         END IF;
68711       END IF;
68712    END IF;
68713    --
68714    --
68715    ------------------------------------------------------------------------------------------------
68716    -- 4219869 Business Flow
68717    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68718    -- Prior Entry.  Currently, the following code is always generated.
68719    ------------------------------------------------------------------------------------------------
68720    XLA_AE_LINES_PKG.ValidateCurrentLine;
68721 
68722    ------------------------------------------------------------------------------------
68723    -- 4219869 Business Flow
68724    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68725    ------------------------------------------------------------------------------------
68726    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68727 
68728    ----------------------------------------------------------------------------------
68729    -- 4219869 Business Flow
68730    -- Update journal entry status -- Need to generate this within IF <condition>
68731    ----------------------------------------------------------------------------------
68732    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68733          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68734          ,p_balance_type_code => l_balance_type_code
68735          );
68736 
68737    -------------------------------------------------------------------------------------------
68738    -- 4262811 - Generate the Accrual Reversal lines
68739    -------------------------------------------------------------------------------------------
68740    BEGIN
68741       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68742                               (g_array_event(p_event_id).array_value_num('header_index'));
68743       IF l_acc_rev_flag IS NULL THEN
68744          l_acc_rev_flag := 'N';
68745       END IF;
68746    EXCEPTION
68747       WHEN OTHERS THEN
68748          l_acc_rev_flag := 'N';
68749    END;
68750    --
68751    IF (l_acc_rev_flag = 'Y') THEN
68752 
68753        -- 4645092  ------------------------------------------------------------------------------
68754        -- To allow MPA report to determine if it should generate report process
68755        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68756        ------------------------------------------------------------------------------------------
68757 
68758        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68759        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68760    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
68761    -- call ADRs
68762    -- Bug 4922099
68763    --
68764    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68765         (NVL(l_actual_upg_option, 'N') = 'O') OR
68766         (NVL(l_enc_upg_option, 'N') = 'O')
68767       )
68768    THEN
68769    NULL;
68770    --
68771    --
68772    
68773   l_ccid := AcctDerRule_6(
68774            p_application_id           => p_application_id
68775          , p_ae_header_id             => l_ae_header_id 
68776 , p_source_11 => p_source_11
68777          , x_transaction_coa_id       => l_adr_transaction_coa_id
68778          , x_accounting_coa_id        => l_adr_accounting_coa_id
68779          , x_value_type_code          => l_adr_value_type_code
68780          , p_side                     => 'NA'
68781    );
68782 
68783    xla_ae_lines_pkg.set_ccid(
68784     p_code_combination_id          => l_ccid
68785   , p_value_type_code              => l_adr_value_type_code
68786   , p_transaction_coa_id           => l_adr_transaction_coa_id
68787   , p_accounting_coa_id            => l_adr_accounting_coa_id
68788   , p_adr_code                     => 'CST_DEFAULT'
68789   , p_adr_type_code                => 'S'
68790   , p_component_type               => l_component_type
68791   , p_component_code               => l_component_code
68792   , p_component_type_code          => l_component_type_code
68793   , p_component_appl_id            => l_component_appl_id
68794   , p_amb_context_code             => l_amb_context_code
68795   , p_side                         => 'NA'
68796   );
68797 
68798 
68799    --
68800    --
68801    END IF;
68802 
68803        --
68804        -- Update the line information that should be overwritten
68805        --
68806        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68807                                          p_header_num   => 1);
68808        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68809 
68810        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68811 
68812        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68813           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68814        END IF;
68815 
68816       --
68817       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68818       --
68819       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68820           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68821       ELSE
68822           ---------------------------------------------------------------------------------------------------
68823           -- 4262811a Switch Sign
68824           ---------------------------------------------------------------------------------------------------
68825           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68826           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68827                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68828           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68829                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68830           -- 5132302
68831           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68832                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68833 
68834       END IF;
68835 
68836       -- 4955764
68837       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68838       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68839 
68840 
68841       XLA_AE_LINES_PKG.ValidateCurrentLine;
68842       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68843 
68844       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68845                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68846                ,p_balance_type_code => l_balance_type_code);
68847 
68848    END IF;
68849 
68850    -----------------------------------------------------------------------------------------
68851    -- 4262811 Multiperiod Accounting
68852    -----------------------------------------------------------------------------------------
68853      -- No MPA option is assigned.
68854 
68855 
68856 END IF;
68857 END IF;
68858 --
68859 
68860 --
68861 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68862    trace
68863       (p_msg      => 'END of AcctLineType_145'
68864       ,p_level    => C_LEVEL_PROCEDURE
68865       ,p_module   => l_log_module);
68866 END IF;
68867 --
68868 EXCEPTION
68869   WHEN xla_exceptions_pkg.application_exception THEN
68870       RAISE;
68871   WHEN OTHERS THEN
68872        xla_exceptions_pkg.raise_message
68873            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_145');
68874 END AcctLineType_145;
68875 --
68876 
68877 ---------------------------------------
68878 --
68879 -- PRIVATE FUNCTION
68880 --         AcctLineType_146
68881 --
68882 ---------------------------------------
68883 PROCEDURE AcctLineType_146 (
68884   p_application_id        IN NUMBER
68885  ,p_event_id              IN NUMBER
68886  ,p_calculate_acctd_flag  IN VARCHAR2
68887  ,p_calculate_g_l_flag    IN VARCHAR2
68888  ,p_actual_flag           IN OUT VARCHAR2
68889  ,p_balance_type_code     OUT VARCHAR2
68890  ,p_gain_or_loss_ref      OUT VARCHAR2
68891  
68892 --TRANSACTION_ID
68893  , p_source_1            IN NUMBER
68894 --Item Concatenated Segments
68895  , p_source_2            IN VARCHAR2
68896 --Transaction Quantity
68897  , p_source_3            IN NUMBER
68898 --Transaction Unit of Measure Code
68899  , p_source_4            IN VARCHAR2
68900 --Inventory Transaction Type Description
68901  , p_source_5            IN VARCHAR2
68902 --Cost Management Default Account
68903  , p_source_11            IN NUMBER
68904 --DISTRIBUTION_IDENTIFIER
68905  , p_source_84            IN NUMBER
68906 --Distribution Type
68907  , p_source_85            IN VARCHAR2
68908  , p_source_85_meaning    IN VARCHAR2
68909 --Entered Currency Code
68910  , p_source_88            IN VARCHAR2
68911 --Entered Amount
68912  , p_source_91            IN NUMBER
68913 --Currency Conversion Date
68914  , p_source_92            IN DATE
68915 --Currency Conversion Rate
68916  , p_source_93            IN NUMBER
68917 --Currency Conversion Type
68918  , p_source_94            IN VARCHAR2
68919 --Accounted Amount
68920  , p_source_95            IN NUMBER
68921 --Accounting Line Type
68922  , p_source_97            IN NUMBER
68923 )
68924 IS
68925 
68926 l_component_type              VARCHAR2(80);
68927 l_component_code              VARCHAR2(30);
68928 l_component_type_code         VARCHAR2(1);
68929 l_component_appl_id           INTEGER;
68930 l_amb_context_code            VARCHAR2(30);
68931 l_entity_code                 VARCHAR2(30);
68932 l_event_class_code            VARCHAR2(30);
68933 l_ae_header_id                NUMBER;
68934 l_event_type_code             VARCHAR2(30);
68935 l_line_definition_code        VARCHAR2(30);
68936 l_line_definition_owner_code  VARCHAR2(1);
68937 --
68938 -- adr variables
68939 l_segment                     VARCHAR2(30);
68940 l_ccid                        NUMBER;
68941 l_adr_transaction_coa_id      NUMBER;
68942 l_adr_accounting_coa_id       NUMBER;
68943 l_adr_flexfield_segment_code  VARCHAR2(30);
68944 l_adr_flex_value_set_id       NUMBER;
68945 l_adr_value_type_code         VARCHAR2(30);
68946 l_adr_value_combination_id    NUMBER;
68947 l_adr_value_segment_code      VARCHAR2(30);
68948 
68949 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68950 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68951 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68952 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68953 
68954 -- 4262811 Variables ------------------------------------------------------------------------------------------
68955 l_entered_amt_idx             NUMBER;
68956 l_accted_amt_idx              NUMBER;
68957 l_acc_rev_flag                VARCHAR2(1);
68958 l_accrual_line_num            NUMBER;
68959 l_tmp_amt                     NUMBER;
68960 l_acc_rev_natural_side_code   VARCHAR2(1);
68961 
68962 l_num_entries                 NUMBER;
68963 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
68964 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
68965 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
68966 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
68967 l_recog_line_1                NUMBER;
68968 l_recog_line_2                NUMBER;
68969 
68970 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
68971 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
68972 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
68973 
68974 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68975 
68976 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
68977 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
68978 
68979 ---------------------------------------------------------------------------------------------------------------
68980 
68981 
68982 --
68983 -- bulk performance
68984 --
68985 l_balance_type_code           VARCHAR2(1);
68986 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
68987 l_log_module                  VARCHAR2(240);
68988 
68989 --
68990 -- Upgrade strategy
68991 --
68992 l_actual_upg_option           VARCHAR2(1);
68993 l_enc_upg_option           VARCHAR2(1);
68994 
68995 --
68996 BEGIN
68997 --
68998 IF g_log_enabled THEN
68999       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_146';
69000 END IF;
69001 --
69002 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69003 
69004       trace
69005          (p_msg      => 'BEGIN of AcctLineType_146'
69006          ,p_level    => C_LEVEL_PROCEDURE
69007          ,p_module   => l_log_module);
69008 
69009 END IF;
69010 --
69011 l_component_type             := 'AMB_JLT';
69012 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
69013 l_component_type_code        := 'S';
69014 l_component_appl_id          :=  707;
69015 l_amb_context_code           := 'DEFAULT';
69016 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
69017 l_event_class_code           := 'USER_DEFINE';
69018 l_event_type_code            := 'UDIR_INTERORG_RCPT';
69019 l_line_definition_owner_code := 'S';
69020 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
69021 --
69022 l_balance_type_code          := 'A';
69023 l_segment                     := NULL;
69024 l_ccid                        := NULL;
69025 l_adr_transaction_coa_id      := NULL;
69026 l_adr_accounting_coa_id       := NULL;
69027 l_adr_flexfield_segment_code  := NULL;
69028 l_adr_flex_value_set_id       := NULL;
69029 l_adr_value_type_code         := NULL;
69030 l_adr_value_combination_id    := NULL;
69031 l_adr_value_segment_code      := NULL;
69032 
69033 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69034 l_bflow_class_code           := '';    -- 4219869 Business Flow
69035 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69036 l_budgetary_control_flag     := 'N';
69037 
69038 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69039 l_bflow_applied_to_amt       := NULL; -- 5132302
69040 l_entered_amt_idx            := NULL;          -- 4262811
69041 l_accted_amt_idx             := NULL;          -- 4262811
69042 l_acc_rev_flag               := NULL;          -- 4262811
69043 l_accrual_line_num           := NULL;          -- 4262811
69044 l_tmp_amt                    := NULL;          -- 4262811
69045 --
69046  
69047 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69048     l_balance_type_code <> 'B' THEN
69049 IF NVL(p_source_97,9E125) =  12
69050  THEN 
69051 
69052    --
69053    XLA_AE_LINES_PKG.SetNewLine;
69054 
69055    p_balance_type_code          := l_balance_type_code;
69056    -- set the flag so later we will know whether the gain loss line needs to be created
69057    
69058    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69059      p_actual_flag :='A';
69060    END IF;
69061 
69062    --
69063    -- bulk performance
69064    --
69065    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69066                                       p_header_num   => 0); -- 4262811
69067    --
69068    -- set accounting line options
69069    --
69070    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69071            p_natural_side_code          => 'D'
69072          , p_gain_or_loss_flag          => 'N'
69073          , p_gl_transfer_mode_code      => 'S'
69074          , p_acct_entry_type_code       => 'A'
69075          , p_switch_side_flag           => 'Y'
69076          , p_merge_duplicate_code       => 'N'
69077          );
69078    --
69079    l_acc_rev_natural_side_code := 'C';  -- 4262811
69080    -- 
69081    --
69082    -- set accounting line type info
69083    --
69084    xla_ae_lines_pkg.SetAcctLineType
69085       (p_component_type             => l_component_type
69086       ,p_event_type_code            => l_event_type_code
69087       ,p_line_definition_owner_code => l_line_definition_owner_code
69088       ,p_line_definition_code       => l_line_definition_code
69089       ,p_accounting_line_code       => l_component_code
69090       ,p_accounting_line_type_code  => l_component_type_code
69091       ,p_accounting_line_appl_id    => l_component_appl_id
69092       ,p_amb_context_code           => l_amb_context_code
69093       ,p_entity_code                => l_entity_code
69094       ,p_event_class_code           => l_event_class_code);
69095    --
69096    -- set accounting class
69097    --
69098    xla_ae_lines_pkg.SetAcctClass(
69099            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
69100          , p_ae_header_id           => l_ae_header_id
69101          );
69102 
69103    --
69104    -- set rounding class
69105    --
69106    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69107                       'INTERORG_FREIGHT_CHARGE';
69108 
69109    --
69110    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69111    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69112    --
69113    -- bulk performance
69114    --
69115    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69116 
69117    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69118       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69119 
69120    -- 4955764
69121    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69122       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69123 
69124    -- 4458381 Public Sector Enh
69125    
69126    --
69127    -- set accounting attributes for the line type
69128    --
69129    l_entered_amt_idx := 3;
69130    l_accted_amt_idx  := 8;
69131    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69132    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69133    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
69134    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69135    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
69136    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69137    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
69138    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69139    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
69140    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69141    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
69142    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69143    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
69144    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69145    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
69146    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69147    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
69148 
69149    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69150    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69151 
69152    ---------------------------------------------------------------------------------------------------------------
69153    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69154    ---------------------------------------------------------------------------------------------------------------
69155    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69156 
69157    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69158    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69159 
69160    IF xla_accounting_cache_pkg.GetValueChar
69161          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69162          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69163    AND l_bflow_method_code = 'PRIOR_ENTRY'
69164 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69165    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69166          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69167        )
69168    THEN
69169          xla_ae_lines_pkg.BflowUpgEntry
69170            (p_business_method_code    => l_bflow_method_code
69171            ,p_business_class_code     => l_bflow_class_code
69172            ,p_balance_type            => l_balance_type_code);
69173    ELSE
69174       NULL;
69175 -- No business flow processing for business flow method of NONE.
69176    END IF;
69177 
69178    --
69179    -- call analytical criteria
69180    --
69181    
69182    --
69183    -- call description
69184    --
69185    
69186 xla_ae_lines_pkg.SetLineDescription(
69187    p_ae_header_id => l_ae_header_id
69188   ,p_description  => Description_1 (
69189      p_application_id         => p_application_id
69190    , p_ae_header_id           => l_ae_header_id 
69191 , p_source_1 => p_source_1
69192 , p_source_2 => p_source_2
69193 , p_source_3 => p_source_3
69194 , p_source_4 => p_source_4
69195 , p_source_5 => p_source_5
69196    )
69197 );
69198 
69199 
69200    --
69201    -- call ADRs
69202    -- Bug 4922099
69203    --
69204    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69205         (NVL(l_actual_upg_option, 'N') = 'O') OR
69206         (NVL(l_enc_upg_option, 'N') = 'O')
69207       )
69208    THEN
69209    NULL;
69210    --
69211    --
69212    
69213   l_ccid := AcctDerRule_6(
69214            p_application_id           => p_application_id
69215          , p_ae_header_id             => l_ae_header_id 
69216 , p_source_11 => p_source_11
69217          , x_transaction_coa_id       => l_adr_transaction_coa_id
69218          , x_accounting_coa_id        => l_adr_accounting_coa_id
69219          , x_value_type_code          => l_adr_value_type_code
69220          , p_side                     => 'NA'
69221    );
69222 
69223    xla_ae_lines_pkg.set_ccid(
69224     p_code_combination_id          => l_ccid
69225   , p_value_type_code              => l_adr_value_type_code
69226   , p_transaction_coa_id           => l_adr_transaction_coa_id
69227   , p_accounting_coa_id            => l_adr_accounting_coa_id
69228   , p_adr_code                     => 'CST_DEFAULT'
69229   , p_adr_type_code                => 'S'
69230   , p_component_type               => l_component_type
69231   , p_component_code               => l_component_code
69232   , p_component_type_code          => l_component_type_code
69233   , p_component_appl_id            => l_component_appl_id
69234   , p_amb_context_code             => l_amb_context_code
69235   , p_side                         => 'NA'
69236   );
69237 
69238 
69239    --
69240    --
69241    END IF;
69242    --
69243    -- Bug 4922099
69244    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69245           (NVL(l_enc_upg_option, 'N') = 'O')
69246         ) AND
69247         (l_bflow_method_code = 'PRIOR_ENTRY')
69248       )
69249    THEN
69250       IF
69251       --
69252       1 = 2
69253       --
69254       THEN
69255       xla_accounting_err_pkg.build_message
69256                                     (p_appli_s_name            => 'XLA'
69257                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69258                                     ,p_token_1                 => 'LINE_NUMBER'
69259                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69260                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69261                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69262                                                                              l_component_type
69263                                                                             ,l_component_code
69264                                                                             ,l_component_type_code
69265                                                                             ,l_component_appl_id
69266                                                                             ,l_amb_context_code
69267                                                                             ,l_entity_code
69268                                                                             ,l_event_class_code
69269                                                                            )
69270                                     ,p_token_3                 => 'OWNER'
69271                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69272                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69273                                                                           ,p_lookup_code    => l_component_type_code
69274                                                                          )
69275                                     ,p_token_4                 => 'PRODUCT_NAME'
69276                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69277                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69278                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69279                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69280                                     ,p_ae_header_id            =>  NULL
69281                                        );
69282 
69283         IF (C_LEVEL_ERROR>= g_log_level) THEN
69284                  trace
69285                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69286                       ,p_level    => C_LEVEL_ERROR
69287                       ,p_module   => l_log_module);
69288         END IF;
69289       END IF;
69290    END IF;
69291    --
69292    --
69293    ------------------------------------------------------------------------------------------------
69294    -- 4219869 Business Flow
69295    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69296    -- Prior Entry.  Currently, the following code is always generated.
69297    ------------------------------------------------------------------------------------------------
69298    XLA_AE_LINES_PKG.ValidateCurrentLine;
69299 
69300    ------------------------------------------------------------------------------------
69301    -- 4219869 Business Flow
69302    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69303    ------------------------------------------------------------------------------------
69304    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69305 
69306    ----------------------------------------------------------------------------------
69307    -- 4219869 Business Flow
69308    -- Update journal entry status -- Need to generate this within IF <condition>
69309    ----------------------------------------------------------------------------------
69310    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69311          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69312          ,p_balance_type_code => l_balance_type_code
69313          );
69314 
69315    -------------------------------------------------------------------------------------------
69316    -- 4262811 - Generate the Accrual Reversal lines
69317    -------------------------------------------------------------------------------------------
69318    BEGIN
69319       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69320                               (g_array_event(p_event_id).array_value_num('header_index'));
69321       IF l_acc_rev_flag IS NULL THEN
69322          l_acc_rev_flag := 'N';
69323       END IF;
69324    EXCEPTION
69325       WHEN OTHERS THEN
69326          l_acc_rev_flag := 'N';
69327    END;
69328    --
69329    IF (l_acc_rev_flag = 'Y') THEN
69330 
69331        -- 4645092  ------------------------------------------------------------------------------
69332        -- To allow MPA report to determine if it should generate report process
69333        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69334        ------------------------------------------------------------------------------------------
69335 
69336        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69337        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69338    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69339    -- call ADRs
69340    -- Bug 4922099
69341    --
69342    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69343         (NVL(l_actual_upg_option, 'N') = 'O') OR
69344         (NVL(l_enc_upg_option, 'N') = 'O')
69345       )
69346    THEN
69347    NULL;
69348    --
69349    --
69350    
69351   l_ccid := AcctDerRule_6(
69352            p_application_id           => p_application_id
69353          , p_ae_header_id             => l_ae_header_id 
69354 , p_source_11 => p_source_11
69355          , x_transaction_coa_id       => l_adr_transaction_coa_id
69356          , x_accounting_coa_id        => l_adr_accounting_coa_id
69357          , x_value_type_code          => l_adr_value_type_code
69358          , p_side                     => 'NA'
69359    );
69360 
69361    xla_ae_lines_pkg.set_ccid(
69362     p_code_combination_id          => l_ccid
69363   , p_value_type_code              => l_adr_value_type_code
69364   , p_transaction_coa_id           => l_adr_transaction_coa_id
69365   , p_accounting_coa_id            => l_adr_accounting_coa_id
69366   , p_adr_code                     => 'CST_DEFAULT'
69367   , p_adr_type_code                => 'S'
69368   , p_component_type               => l_component_type
69369   , p_component_code               => l_component_code
69370   , p_component_type_code          => l_component_type_code
69371   , p_component_appl_id            => l_component_appl_id
69372   , p_amb_context_code             => l_amb_context_code
69373   , p_side                         => 'NA'
69374   );
69375 
69376 
69377    --
69378    --
69379    END IF;
69380 
69381        --
69382        -- Update the line information that should be overwritten
69383        --
69384        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69385                                          p_header_num   => 1);
69386        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69387 
69388        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69389 
69390        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69391           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69392        END IF;
69393 
69394       --
69395       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69396       --
69397       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69398           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69399       ELSE
69400           ---------------------------------------------------------------------------------------------------
69401           -- 4262811a Switch Sign
69402           ---------------------------------------------------------------------------------------------------
69403           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69404           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69405                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69406           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69407                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69408           -- 5132302
69409           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69410                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69411 
69412       END IF;
69413 
69414       -- 4955764
69415       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69416       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69417 
69418 
69419       XLA_AE_LINES_PKG.ValidateCurrentLine;
69420       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69421 
69422       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69423                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69424                ,p_balance_type_code => l_balance_type_code);
69425 
69426    END IF;
69427 
69428    -----------------------------------------------------------------------------------------
69429    -- 4262811 Multiperiod Accounting
69430    -----------------------------------------------------------------------------------------
69431      -- No MPA option is assigned.
69432 
69433 
69434 END IF;
69435 END IF;
69436 --
69437 
69438 --
69439 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69440    trace
69441       (p_msg      => 'END of AcctLineType_146'
69442       ,p_level    => C_LEVEL_PROCEDURE
69443       ,p_module   => l_log_module);
69444 END IF;
69445 --
69446 EXCEPTION
69447   WHEN xla_exceptions_pkg.application_exception THEN
69448       RAISE;
69449   WHEN OTHERS THEN
69450        xla_exceptions_pkg.raise_message
69451            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_146');
69452 END AcctLineType_146;
69453 --
69454 
69455 ---------------------------------------
69456 --
69457 -- PRIVATE FUNCTION
69458 --         AcctLineType_147
69459 --
69460 ---------------------------------------
69461 PROCEDURE AcctLineType_147 (
69462   p_application_id        IN NUMBER
69463  ,p_event_id              IN NUMBER
69464  ,p_calculate_acctd_flag  IN VARCHAR2
69465  ,p_calculate_g_l_flag    IN VARCHAR2
69466  ,p_actual_flag           IN OUT VARCHAR2
69467  ,p_balance_type_code     OUT VARCHAR2
69468  ,p_gain_or_loss_ref      OUT VARCHAR2
69469  
69470 --TRANSACTION_ID
69471  , p_source_1            IN NUMBER
69472 --Item Concatenated Segments
69473  , p_source_2            IN VARCHAR2
69474 --Transaction Quantity
69475  , p_source_3            IN NUMBER
69476 --Transaction Unit of Measure Code
69477  , p_source_4            IN VARCHAR2
69478 --Inventory Transaction Type Description
69479  , p_source_5            IN VARCHAR2
69480 --Transaction Transportation Distribution Account
69481  , p_source_32            IN NUMBER
69482 --DISTRIBUTION_IDENTIFIER
69483  , p_source_84            IN NUMBER
69484 --Distribution Type
69485  , p_source_85            IN VARCHAR2
69486  , p_source_85_meaning    IN VARCHAR2
69487 --Entered Currency Code
69488  , p_source_88            IN VARCHAR2
69489 --Entered Amount
69490  , p_source_91            IN NUMBER
69491 --Currency Conversion Date
69492  , p_source_92            IN DATE
69493 --Currency Conversion Rate
69494  , p_source_93            IN NUMBER
69495 --Currency Conversion Type
69496  , p_source_94            IN VARCHAR2
69497 --Accounted Amount
69498  , p_source_95            IN NUMBER
69499 --Accounting Line Type
69500  , p_source_97            IN NUMBER
69501 )
69502 IS
69503 
69504 l_component_type              VARCHAR2(80);
69505 l_component_code              VARCHAR2(30);
69506 l_component_type_code         VARCHAR2(1);
69507 l_component_appl_id           INTEGER;
69508 l_amb_context_code            VARCHAR2(30);
69509 l_entity_code                 VARCHAR2(30);
69510 l_event_class_code            VARCHAR2(30);
69511 l_ae_header_id                NUMBER;
69512 l_event_type_code             VARCHAR2(30);
69513 l_line_definition_code        VARCHAR2(30);
69514 l_line_definition_owner_code  VARCHAR2(1);
69515 --
69516 -- adr variables
69517 l_segment                     VARCHAR2(30);
69518 l_ccid                        NUMBER;
69519 l_adr_transaction_coa_id      NUMBER;
69520 l_adr_accounting_coa_id       NUMBER;
69521 l_adr_flexfield_segment_code  VARCHAR2(30);
69522 l_adr_flex_value_set_id       NUMBER;
69523 l_adr_value_type_code         VARCHAR2(30);
69524 l_adr_value_combination_id    NUMBER;
69525 l_adr_value_segment_code      VARCHAR2(30);
69526 
69527 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
69528 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
69529 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
69530 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
69531 
69532 -- 4262811 Variables ------------------------------------------------------------------------------------------
69533 l_entered_amt_idx             NUMBER;
69534 l_accted_amt_idx              NUMBER;
69535 l_acc_rev_flag                VARCHAR2(1);
69536 l_accrual_line_num            NUMBER;
69537 l_tmp_amt                     NUMBER;
69538 l_acc_rev_natural_side_code   VARCHAR2(1);
69539 
69540 l_num_entries                 NUMBER;
69541 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69542 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69543 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69544 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69545 l_recog_line_1                NUMBER;
69546 l_recog_line_2                NUMBER;
69547 
69548 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69549 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69550 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69551 
69552 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69553 
69554 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69555 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69556 
69557 ---------------------------------------------------------------------------------------------------------------
69558 
69559 
69560 --
69561 -- bulk performance
69562 --
69563 l_balance_type_code           VARCHAR2(1);
69564 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69565 l_log_module                  VARCHAR2(240);
69566 
69567 --
69568 -- Upgrade strategy
69569 --
69570 l_actual_upg_option           VARCHAR2(1);
69571 l_enc_upg_option           VARCHAR2(1);
69572 
69573 --
69574 BEGIN
69575 --
69576 IF g_log_enabled THEN
69577       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
69578 END IF;
69579 --
69580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69581 
69582       trace
69583          (p_msg      => 'BEGIN of AcctLineType_147'
69584          ,p_level    => C_LEVEL_PROCEDURE
69585          ,p_module   => l_log_module);
69586 
69587 END IF;
69588 --
69589 l_component_type             := 'AMB_JLT';
69590 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
69591 l_component_type_code        := 'S';
69592 l_component_appl_id          :=  707;
69593 l_amb_context_code           := 'DEFAULT';
69594 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
69595 l_event_class_code           := 'USER_DEFINE';
69596 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
69597 l_line_definition_owner_code := 'S';
69598 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
69599 --
69600 l_balance_type_code          := 'A';
69601 l_segment                     := NULL;
69602 l_ccid                        := NULL;
69603 l_adr_transaction_coa_id      := NULL;
69604 l_adr_accounting_coa_id       := NULL;
69605 l_adr_flexfield_segment_code  := NULL;
69606 l_adr_flex_value_set_id       := NULL;
69607 l_adr_value_type_code         := NULL;
69608 l_adr_value_combination_id    := NULL;
69609 l_adr_value_segment_code      := NULL;
69610 
69611 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69612 l_bflow_class_code           := '';    -- 4219869 Business Flow
69613 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69614 l_budgetary_control_flag     := 'N';
69615 
69616 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69617 l_bflow_applied_to_amt       := NULL; -- 5132302
69618 l_entered_amt_idx            := NULL;          -- 4262811
69619 l_accted_amt_idx             := NULL;          -- 4262811
69620 l_acc_rev_flag               := NULL;          -- 4262811
69621 l_accrual_line_num           := NULL;          -- 4262811
69622 l_tmp_amt                    := NULL;          -- 4262811
69623 --
69624  
69625 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69626     l_balance_type_code <> 'B' THEN
69627 IF NVL(p_source_97,9E125) =  12
69628  THEN 
69629 
69630    --
69631    XLA_AE_LINES_PKG.SetNewLine;
69632 
69633    p_balance_type_code          := l_balance_type_code;
69634    -- set the flag so later we will know whether the gain loss line needs to be created
69635    
69636    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69637      p_actual_flag :='A';
69638    END IF;
69639 
69640    --
69641    -- bulk performance
69642    --
69643    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69644                                       p_header_num   => 0); -- 4262811
69645    --
69646    -- set accounting line options
69647    --
69648    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69649            p_natural_side_code          => 'D'
69650          , p_gain_or_loss_flag          => 'N'
69651          , p_gl_transfer_mode_code      => 'S'
69652          , p_acct_entry_type_code       => 'A'
69653          , p_switch_side_flag           => 'Y'
69654          , p_merge_duplicate_code       => 'N'
69655          );
69656    --
69657    l_acc_rev_natural_side_code := 'C';  -- 4262811
69658    -- 
69659    --
69660    -- set accounting line type info
69661    --
69662    xla_ae_lines_pkg.SetAcctLineType
69663       (p_component_type             => l_component_type
69664       ,p_event_type_code            => l_event_type_code
69665       ,p_line_definition_owner_code => l_line_definition_owner_code
69666       ,p_line_definition_code       => l_line_definition_code
69667       ,p_accounting_line_code       => l_component_code
69668       ,p_accounting_line_type_code  => l_component_type_code
69669       ,p_accounting_line_appl_id    => l_component_appl_id
69670       ,p_amb_context_code           => l_amb_context_code
69671       ,p_entity_code                => l_entity_code
69672       ,p_event_class_code           => l_event_class_code);
69673    --
69674    -- set accounting class
69675    --
69676    xla_ae_lines_pkg.SetAcctClass(
69677            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
69678          , p_ae_header_id           => l_ae_header_id
69679          );
69680 
69681    --
69682    -- set rounding class
69683    --
69684    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69685                       'INTERORG_FREIGHT_CHARGE';
69686 
69687    --
69688    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69689    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69690    --
69691    -- bulk performance
69692    --
69693    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69694 
69695    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69696       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69697 
69698    -- 4955764
69699    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69700       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69701 
69702    -- 4458381 Public Sector Enh
69703    
69704    --
69705    -- set accounting attributes for the line type
69706    --
69707    l_entered_amt_idx := 3;
69708    l_accted_amt_idx  := 8;
69709    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69710    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69711    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
69712    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69713    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
69714    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69715    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
69716    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69717    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
69718    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69719    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
69720    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69721    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
69722    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69723    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
69724    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69725    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
69726 
69727    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69728    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69729 
69730    ---------------------------------------------------------------------------------------------------------------
69731    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69732    ---------------------------------------------------------------------------------------------------------------
69733    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69734 
69735    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69736    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69737 
69738    IF xla_accounting_cache_pkg.GetValueChar
69739          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69740          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69741    AND l_bflow_method_code = 'PRIOR_ENTRY'
69742 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69743    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69744          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69745        )
69746    THEN
69747          xla_ae_lines_pkg.BflowUpgEntry
69748            (p_business_method_code    => l_bflow_method_code
69749            ,p_business_class_code     => l_bflow_class_code
69750            ,p_balance_type            => l_balance_type_code);
69751    ELSE
69752       NULL;
69753 -- No business flow processing for business flow method of NONE.
69754    END IF;
69755 
69756    --
69757    -- call analytical criteria
69758    --
69759    
69760    --
69761    -- call description
69762    --
69763    
69764 xla_ae_lines_pkg.SetLineDescription(
69765    p_ae_header_id => l_ae_header_id
69766   ,p_description  => Description_1 (
69767      p_application_id         => p_application_id
69768    , p_ae_header_id           => l_ae_header_id 
69769 , p_source_1 => p_source_1
69770 , p_source_2 => p_source_2
69771 , p_source_3 => p_source_3
69772 , p_source_4 => p_source_4
69773 , p_source_5 => p_source_5
69774    )
69775 );
69776 
69777 
69778    --
69779    -- call ADRs
69780    -- Bug 4922099
69781    --
69782    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69783         (NVL(l_actual_upg_option, 'N') = 'O') OR
69784         (NVL(l_enc_upg_option, 'N') = 'O')
69785       )
69786    THEN
69787    NULL;
69788    --
69789    --
69790    
69791   l_ccid := AcctDerRule_17(
69792            p_application_id           => p_application_id
69793          , p_ae_header_id             => l_ae_header_id 
69794 , p_source_32 => p_source_32
69795          , x_transaction_coa_id       => l_adr_transaction_coa_id
69796          , x_accounting_coa_id        => l_adr_accounting_coa_id
69797          , x_value_type_code          => l_adr_value_type_code
69798          , p_side                     => 'NA'
69799    );
69800 
69801    xla_ae_lines_pkg.set_ccid(
69802     p_code_combination_id          => l_ccid
69803   , p_value_type_code              => l_adr_value_type_code
69804   , p_transaction_coa_id           => l_adr_transaction_coa_id
69805   , p_accounting_coa_id            => l_adr_accounting_coa_id
69806   , p_adr_code                     => 'PI_FREIGHT'
69807   , p_adr_type_code                => 'S'
69808   , p_component_type               => l_component_type
69809   , p_component_code               => l_component_code
69810   , p_component_type_code          => l_component_type_code
69811   , p_component_appl_id            => l_component_appl_id
69812   , p_amb_context_code             => l_amb_context_code
69813   , p_side                         => 'NA'
69814   );
69815 
69816 
69817    --
69818    --
69819    END IF;
69820    --
69821    -- Bug 4922099
69822    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69823           (NVL(l_enc_upg_option, 'N') = 'O')
69824         ) AND
69825         (l_bflow_method_code = 'PRIOR_ENTRY')
69826       )
69827    THEN
69828       IF
69829       --
69830       1 = 2
69831       --
69832       THEN
69833       xla_accounting_err_pkg.build_message
69834                                     (p_appli_s_name            => 'XLA'
69835                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69836                                     ,p_token_1                 => 'LINE_NUMBER'
69837                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69838                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69839                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69840                                                                              l_component_type
69841                                                                             ,l_component_code
69842                                                                             ,l_component_type_code
69843                                                                             ,l_component_appl_id
69844                                                                             ,l_amb_context_code
69845                                                                             ,l_entity_code
69846                                                                             ,l_event_class_code
69847                                                                            )
69848                                     ,p_token_3                 => 'OWNER'
69849                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69850                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69851                                                                           ,p_lookup_code    => l_component_type_code
69852                                                                          )
69853                                     ,p_token_4                 => 'PRODUCT_NAME'
69854                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69855                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69856                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69857                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69858                                     ,p_ae_header_id            =>  NULL
69859                                        );
69860 
69861         IF (C_LEVEL_ERROR>= g_log_level) THEN
69862                  trace
69863                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69864                       ,p_level    => C_LEVEL_ERROR
69865                       ,p_module   => l_log_module);
69866         END IF;
69867       END IF;
69868    END IF;
69869    --
69870    --
69871    ------------------------------------------------------------------------------------------------
69872    -- 4219869 Business Flow
69873    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69874    -- Prior Entry.  Currently, the following code is always generated.
69875    ------------------------------------------------------------------------------------------------
69876    XLA_AE_LINES_PKG.ValidateCurrentLine;
69877 
69878    ------------------------------------------------------------------------------------
69879    -- 4219869 Business Flow
69880    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69881    ------------------------------------------------------------------------------------
69882    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69883 
69884    ----------------------------------------------------------------------------------
69885    -- 4219869 Business Flow
69886    -- Update journal entry status -- Need to generate this within IF <condition>
69887    ----------------------------------------------------------------------------------
69888    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69889          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69890          ,p_balance_type_code => l_balance_type_code
69891          );
69892 
69893    -------------------------------------------------------------------------------------------
69894    -- 4262811 - Generate the Accrual Reversal lines
69895    -------------------------------------------------------------------------------------------
69896    BEGIN
69897       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69898                               (g_array_event(p_event_id).array_value_num('header_index'));
69899       IF l_acc_rev_flag IS NULL THEN
69900          l_acc_rev_flag := 'N';
69901       END IF;
69902    EXCEPTION
69903       WHEN OTHERS THEN
69904          l_acc_rev_flag := 'N';
69905    END;
69906    --
69907    IF (l_acc_rev_flag = 'Y') THEN
69908 
69909        -- 4645092  ------------------------------------------------------------------------------
69910        -- To allow MPA report to determine if it should generate report process
69911        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69912        ------------------------------------------------------------------------------------------
69913 
69914        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69915        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69916    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
69917    -- call ADRs
69918    -- Bug 4922099
69919    --
69920    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69921         (NVL(l_actual_upg_option, 'N') = 'O') OR
69922         (NVL(l_enc_upg_option, 'N') = 'O')
69923       )
69924    THEN
69925    NULL;
69926    --
69927    --
69928    
69929   l_ccid := AcctDerRule_17(
69930            p_application_id           => p_application_id
69931          , p_ae_header_id             => l_ae_header_id 
69932 , p_source_32 => p_source_32
69933          , x_transaction_coa_id       => l_adr_transaction_coa_id
69934          , x_accounting_coa_id        => l_adr_accounting_coa_id
69935          , x_value_type_code          => l_adr_value_type_code
69936          , p_side                     => 'NA'
69937    );
69938 
69939    xla_ae_lines_pkg.set_ccid(
69940     p_code_combination_id          => l_ccid
69941   , p_value_type_code              => l_adr_value_type_code
69942   , p_transaction_coa_id           => l_adr_transaction_coa_id
69943   , p_accounting_coa_id            => l_adr_accounting_coa_id
69944   , p_adr_code                     => 'PI_FREIGHT'
69945   , p_adr_type_code                => 'S'
69946   , p_component_type               => l_component_type
69947   , p_component_code               => l_component_code
69948   , p_component_type_code          => l_component_type_code
69949   , p_component_appl_id            => l_component_appl_id
69950   , p_amb_context_code             => l_amb_context_code
69951   , p_side                         => 'NA'
69952   );
69953 
69954 
69955    --
69956    --
69957    END IF;
69958 
69959        --
69960        -- Update the line information that should be overwritten
69961        --
69962        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69963                                          p_header_num   => 1);
69964        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69965 
69966        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69967 
69968        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69969           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69970        END IF;
69971 
69972       --
69973       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69974       --
69975       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69976           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69977       ELSE
69978           ---------------------------------------------------------------------------------------------------
69979           -- 4262811a Switch Sign
69980           ---------------------------------------------------------------------------------------------------
69981           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69982           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69983                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69984           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69985                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69986           -- 5132302
69987           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69988                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69989 
69990       END IF;
69991 
69992       -- 4955764
69993       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69994       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69995 
69996 
69997       XLA_AE_LINES_PKG.ValidateCurrentLine;
69998       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69999 
70000       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70001                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70002                ,p_balance_type_code => l_balance_type_code);
70003 
70004    END IF;
70005 
70006    -----------------------------------------------------------------------------------------
70007    -- 4262811 Multiperiod Accounting
70008    -----------------------------------------------------------------------------------------
70009      -- No MPA option is assigned.
70010 
70011 
70012 END IF;
70013 END IF;
70014 --
70015 
70016 --
70017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70018    trace
70019       (p_msg      => 'END of AcctLineType_147'
70020       ,p_level    => C_LEVEL_PROCEDURE
70021       ,p_module   => l_log_module);
70022 END IF;
70023 --
70024 EXCEPTION
70025   WHEN xla_exceptions_pkg.application_exception THEN
70026       RAISE;
70027   WHEN OTHERS THEN
70028        xla_exceptions_pkg.raise_message
70029            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_147');
70030 END AcctLineType_147;
70031 --
70032 
70033 ---------------------------------------
70034 --
70035 -- PRIVATE FUNCTION
70036 --         AcctLineType_148
70037 --
70038 ---------------------------------------
70039 PROCEDURE AcctLineType_148 (
70040   p_application_id        IN NUMBER
70041  ,p_event_id              IN NUMBER
70042  ,p_calculate_acctd_flag  IN VARCHAR2
70043  ,p_calculate_g_l_flag    IN VARCHAR2
70044  ,p_actual_flag           IN OUT VARCHAR2
70045  ,p_balance_type_code     OUT VARCHAR2
70046  ,p_gain_or_loss_ref      OUT VARCHAR2
70047  
70048 --TRANSACTION_ID
70049  , p_source_1            IN NUMBER
70050 --Item Concatenated Segments
70051  , p_source_2            IN VARCHAR2
70052 --Transaction Quantity
70053  , p_source_3            IN NUMBER
70054 --Transaction Unit of Measure Code
70055  , p_source_4            IN VARCHAR2
70056 --Inventory Transaction Type Description
70057  , p_source_5            IN VARCHAR2
70058 --Transaction Transportation Distribution Account
70059  , p_source_32            IN NUMBER
70060 --DISTRIBUTION_IDENTIFIER
70061  , p_source_84            IN NUMBER
70062 --Distribution Type
70063  , p_source_85            IN VARCHAR2
70064  , p_source_85_meaning    IN VARCHAR2
70065 --Entered Currency Code
70066  , p_source_88            IN VARCHAR2
70067 --Entered Amount
70068  , p_source_91            IN NUMBER
70069 --Currency Conversion Date
70070  , p_source_92            IN DATE
70071 --Currency Conversion Rate
70072  , p_source_93            IN NUMBER
70073 --Currency Conversion Type
70074  , p_source_94            IN VARCHAR2
70075 --Accounted Amount
70076  , p_source_95            IN NUMBER
70077 --Accounting Line Type
70078  , p_source_97            IN NUMBER
70079 )
70080 IS
70081 
70082 l_component_type              VARCHAR2(80);
70083 l_component_code              VARCHAR2(30);
70084 l_component_type_code         VARCHAR2(1);
70085 l_component_appl_id           INTEGER;
70086 l_amb_context_code            VARCHAR2(30);
70087 l_entity_code                 VARCHAR2(30);
70088 l_event_class_code            VARCHAR2(30);
70089 l_ae_header_id                NUMBER;
70090 l_event_type_code             VARCHAR2(30);
70091 l_line_definition_code        VARCHAR2(30);
70092 l_line_definition_owner_code  VARCHAR2(1);
70093 --
70094 -- adr variables
70095 l_segment                     VARCHAR2(30);
70096 l_ccid                        NUMBER;
70097 l_adr_transaction_coa_id      NUMBER;
70098 l_adr_accounting_coa_id       NUMBER;
70099 l_adr_flexfield_segment_code  VARCHAR2(30);
70100 l_adr_flex_value_set_id       NUMBER;
70101 l_adr_value_type_code         VARCHAR2(30);
70102 l_adr_value_combination_id    NUMBER;
70103 l_adr_value_segment_code      VARCHAR2(30);
70104 
70105 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70106 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70107 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70108 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70109 
70110 -- 4262811 Variables ------------------------------------------------------------------------------------------
70111 l_entered_amt_idx             NUMBER;
70112 l_accted_amt_idx              NUMBER;
70113 l_acc_rev_flag                VARCHAR2(1);
70114 l_accrual_line_num            NUMBER;
70115 l_tmp_amt                     NUMBER;
70116 l_acc_rev_natural_side_code   VARCHAR2(1);
70117 
70118 l_num_entries                 NUMBER;
70119 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70120 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70121 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70122 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70123 l_recog_line_1                NUMBER;
70124 l_recog_line_2                NUMBER;
70125 
70126 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70127 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70128 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70129 
70130 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70131 
70132 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70133 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70134 
70135 ---------------------------------------------------------------------------------------------------------------
70136 
70137 
70138 --
70139 -- bulk performance
70140 --
70141 l_balance_type_code           VARCHAR2(1);
70142 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70143 l_log_module                  VARCHAR2(240);
70144 
70145 --
70146 -- Upgrade strategy
70147 --
70148 l_actual_upg_option           VARCHAR2(1);
70149 l_enc_upg_option           VARCHAR2(1);
70150 
70151 --
70152 BEGIN
70153 --
70154 IF g_log_enabled THEN
70155       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_148';
70156 END IF;
70157 --
70158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70159 
70160       trace
70161          (p_msg      => 'BEGIN of AcctLineType_148'
70162          ,p_level    => C_LEVEL_PROCEDURE
70163          ,p_module   => l_log_module);
70164 
70165 END IF;
70166 --
70167 l_component_type             := 'AMB_JLT';
70168 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
70169 l_component_type_code        := 'S';
70170 l_component_appl_id          :=  707;
70171 l_amb_context_code           := 'DEFAULT';
70172 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
70173 l_event_class_code           := 'USER_DEFINE';
70174 l_event_type_code            := 'UDIR_INTERORG_SHIP';
70175 l_line_definition_owner_code := 'S';
70176 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
70177 --
70178 l_balance_type_code          := 'A';
70179 l_segment                     := NULL;
70180 l_ccid                        := NULL;
70181 l_adr_transaction_coa_id      := NULL;
70182 l_adr_accounting_coa_id       := NULL;
70183 l_adr_flexfield_segment_code  := NULL;
70184 l_adr_flex_value_set_id       := NULL;
70185 l_adr_value_type_code         := NULL;
70186 l_adr_value_combination_id    := NULL;
70187 l_adr_value_segment_code      := NULL;
70188 
70189 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70190 l_bflow_class_code           := '';    -- 4219869 Business Flow
70191 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70192 l_budgetary_control_flag     := 'N';
70193 
70194 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70195 l_bflow_applied_to_amt       := NULL; -- 5132302
70196 l_entered_amt_idx            := NULL;          -- 4262811
70197 l_accted_amt_idx             := NULL;          -- 4262811
70198 l_acc_rev_flag               := NULL;          -- 4262811
70199 l_accrual_line_num           := NULL;          -- 4262811
70200 l_tmp_amt                    := NULL;          -- 4262811
70201 --
70202  
70203 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70204     l_balance_type_code <> 'B' THEN
70205 IF NVL(p_source_97,9E125) =  12
70206  THEN 
70207 
70208    --
70209    XLA_AE_LINES_PKG.SetNewLine;
70210 
70211    p_balance_type_code          := l_balance_type_code;
70212    -- set the flag so later we will know whether the gain loss line needs to be created
70213    
70214    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70215      p_actual_flag :='A';
70216    END IF;
70217 
70218    --
70219    -- bulk performance
70220    --
70221    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70222                                       p_header_num   => 0); -- 4262811
70223    --
70224    -- set accounting line options
70225    --
70226    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70227            p_natural_side_code          => 'D'
70228          , p_gain_or_loss_flag          => 'N'
70229          , p_gl_transfer_mode_code      => 'S'
70230          , p_acct_entry_type_code       => 'A'
70231          , p_switch_side_flag           => 'Y'
70232          , p_merge_duplicate_code       => 'N'
70233          );
70234    --
70235    l_acc_rev_natural_side_code := 'C';  -- 4262811
70236    -- 
70237    --
70238    -- set accounting line type info
70239    --
70240    xla_ae_lines_pkg.SetAcctLineType
70241       (p_component_type             => l_component_type
70242       ,p_event_type_code            => l_event_type_code
70243       ,p_line_definition_owner_code => l_line_definition_owner_code
70244       ,p_line_definition_code       => l_line_definition_code
70245       ,p_accounting_line_code       => l_component_code
70246       ,p_accounting_line_type_code  => l_component_type_code
70247       ,p_accounting_line_appl_id    => l_component_appl_id
70248       ,p_amb_context_code           => l_amb_context_code
70249       ,p_entity_code                => l_entity_code
70250       ,p_event_class_code           => l_event_class_code);
70251    --
70252    -- set accounting class
70253    --
70254    xla_ae_lines_pkg.SetAcctClass(
70255            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
70256          , p_ae_header_id           => l_ae_header_id
70257          );
70258 
70259    --
70260    -- set rounding class
70261    --
70262    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70263                       'INTERORG_FREIGHT_CHARGE';
70264 
70265    --
70266    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70267    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70268    --
70269    -- bulk performance
70270    --
70271    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70272 
70273    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70274       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70275 
70276    -- 4955764
70277    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70278       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70279 
70280    -- 4458381 Public Sector Enh
70281    
70282    --
70283    -- set accounting attributes for the line type
70284    --
70285    l_entered_amt_idx := 3;
70286    l_accted_amt_idx  := 8;
70287    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70288    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70289    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
70290    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70291    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
70292    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70293    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
70294    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70295    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
70296    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70297    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
70298    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70299    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
70300    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70301    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
70302    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70303    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
70304 
70305    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70306    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70307 
70308    ---------------------------------------------------------------------------------------------------------------
70309    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70310    ---------------------------------------------------------------------------------------------------------------
70311    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70312 
70313    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70314    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70315 
70316    IF xla_accounting_cache_pkg.GetValueChar
70317          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70318          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70319    AND l_bflow_method_code = 'PRIOR_ENTRY'
70320 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70321    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70322          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70323        )
70324    THEN
70325          xla_ae_lines_pkg.BflowUpgEntry
70326            (p_business_method_code    => l_bflow_method_code
70327            ,p_business_class_code     => l_bflow_class_code
70328            ,p_balance_type            => l_balance_type_code);
70329    ELSE
70330       NULL;
70331 -- No business flow processing for business flow method of NONE.
70332    END IF;
70333 
70334    --
70335    -- call analytical criteria
70336    --
70337    
70338    --
70339    -- call description
70340    --
70341    
70342 xla_ae_lines_pkg.SetLineDescription(
70343    p_ae_header_id => l_ae_header_id
70344   ,p_description  => Description_1 (
70345      p_application_id         => p_application_id
70346    , p_ae_header_id           => l_ae_header_id 
70347 , p_source_1 => p_source_1
70348 , p_source_2 => p_source_2
70349 , p_source_3 => p_source_3
70350 , p_source_4 => p_source_4
70351 , p_source_5 => p_source_5
70352    )
70353 );
70354 
70355 
70356    --
70357    -- call ADRs
70358    -- Bug 4922099
70359    --
70360    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70361         (NVL(l_actual_upg_option, 'N') = 'O') OR
70362         (NVL(l_enc_upg_option, 'N') = 'O')
70363       )
70364    THEN
70365    NULL;
70366    --
70367    --
70368    
70369   l_ccid := AcctDerRule_17(
70370            p_application_id           => p_application_id
70371          , p_ae_header_id             => l_ae_header_id 
70372 , p_source_32 => p_source_32
70373          , x_transaction_coa_id       => l_adr_transaction_coa_id
70374          , x_accounting_coa_id        => l_adr_accounting_coa_id
70375          , x_value_type_code          => l_adr_value_type_code
70376          , p_side                     => 'NA'
70377    );
70378 
70379    xla_ae_lines_pkg.set_ccid(
70380     p_code_combination_id          => l_ccid
70381   , p_value_type_code              => l_adr_value_type_code
70382   , p_transaction_coa_id           => l_adr_transaction_coa_id
70383   , p_accounting_coa_id            => l_adr_accounting_coa_id
70384   , p_adr_code                     => 'PI_FREIGHT'
70385   , p_adr_type_code                => 'S'
70386   , p_component_type               => l_component_type
70387   , p_component_code               => l_component_code
70388   , p_component_type_code          => l_component_type_code
70389   , p_component_appl_id            => l_component_appl_id
70390   , p_amb_context_code             => l_amb_context_code
70391   , p_side                         => 'NA'
70392   );
70393 
70394 
70395    --
70396    --
70397    END IF;
70398    --
70399    -- Bug 4922099
70400    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70401           (NVL(l_enc_upg_option, 'N') = 'O')
70402         ) AND
70403         (l_bflow_method_code = 'PRIOR_ENTRY')
70404       )
70405    THEN
70406       IF
70407       --
70408       1 = 2
70409       --
70410       THEN
70411       xla_accounting_err_pkg.build_message
70412                                     (p_appli_s_name            => 'XLA'
70413                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70414                                     ,p_token_1                 => 'LINE_NUMBER'
70415                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
70416                                     ,p_token_2                 => 'LINE_TYPE_NAME'
70417                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
70418                                                                              l_component_type
70419                                                                             ,l_component_code
70420                                                                             ,l_component_type_code
70421                                                                             ,l_component_appl_id
70422                                                                             ,l_amb_context_code
70423                                                                             ,l_entity_code
70424                                                                             ,l_event_class_code
70425                                                                            )
70426                                     ,p_token_3                 => 'OWNER'
70427                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
70428                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
70429                                                                           ,p_lookup_code    => l_component_type_code
70430                                                                          )
70431                                     ,p_token_4                 => 'PRODUCT_NAME'
70432                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70433                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70434                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70435                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70436                                     ,p_ae_header_id            =>  NULL
70437                                        );
70438 
70439         IF (C_LEVEL_ERROR>= g_log_level) THEN
70440                  trace
70441                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70442                       ,p_level    => C_LEVEL_ERROR
70443                       ,p_module   => l_log_module);
70444         END IF;
70445       END IF;
70446    END IF;
70447    --
70448    --
70449    ------------------------------------------------------------------------------------------------
70450    -- 4219869 Business Flow
70451    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70452    -- Prior Entry.  Currently, the following code is always generated.
70453    ------------------------------------------------------------------------------------------------
70454    XLA_AE_LINES_PKG.ValidateCurrentLine;
70455 
70456    ------------------------------------------------------------------------------------
70457    -- 4219869 Business Flow
70458    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70459    ------------------------------------------------------------------------------------
70460    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70461 
70462    ----------------------------------------------------------------------------------
70463    -- 4219869 Business Flow
70464    -- Update journal entry status -- Need to generate this within IF <condition>
70465    ----------------------------------------------------------------------------------
70466    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70467          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70468          ,p_balance_type_code => l_balance_type_code
70469          );
70470 
70471    -------------------------------------------------------------------------------------------
70472    -- 4262811 - Generate the Accrual Reversal lines
70473    -------------------------------------------------------------------------------------------
70474    BEGIN
70475       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70476                               (g_array_event(p_event_id).array_value_num('header_index'));
70477       IF l_acc_rev_flag IS NULL THEN
70478          l_acc_rev_flag := 'N';
70479       END IF;
70480    EXCEPTION
70481       WHEN OTHERS THEN
70482          l_acc_rev_flag := 'N';
70483    END;
70484    --
70485    IF (l_acc_rev_flag = 'Y') THEN
70486 
70487        -- 4645092  ------------------------------------------------------------------------------
70488        -- To allow MPA report to determine if it should generate report process
70489        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70490        ------------------------------------------------------------------------------------------
70491 
70492        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70493        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70494    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
70495    -- call ADRs
70496    -- Bug 4922099
70497    --
70498    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70499         (NVL(l_actual_upg_option, 'N') = 'O') OR
70500         (NVL(l_enc_upg_option, 'N') = 'O')
70501       )
70502    THEN
70503    NULL;
70504    --
70505    --
70506    
70507   l_ccid := AcctDerRule_17(
70508            p_application_id           => p_application_id
70509          , p_ae_header_id             => l_ae_header_id 
70510 , p_source_32 => p_source_32
70511          , x_transaction_coa_id       => l_adr_transaction_coa_id
70512          , x_accounting_coa_id        => l_adr_accounting_coa_id
70513          , x_value_type_code          => l_adr_value_type_code
70514          , p_side                     => 'NA'
70515    );
70516 
70517    xla_ae_lines_pkg.set_ccid(
70518     p_code_combination_id          => l_ccid
70519   , p_value_type_code              => l_adr_value_type_code
70520   , p_transaction_coa_id           => l_adr_transaction_coa_id
70521   , p_accounting_coa_id            => l_adr_accounting_coa_id
70522   , p_adr_code                     => 'PI_FREIGHT'
70523   , p_adr_type_code                => 'S'
70524   , p_component_type               => l_component_type
70525   , p_component_code               => l_component_code
70526   , p_component_type_code          => l_component_type_code
70527   , p_component_appl_id            => l_component_appl_id
70528   , p_amb_context_code             => l_amb_context_code
70529   , p_side                         => 'NA'
70530   );
70531 
70532 
70533    --
70534    --
70535    END IF;
70536 
70537        --
70538        -- Update the line information that should be overwritten
70539        --
70540        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70541                                          p_header_num   => 1);
70542        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
70543 
70544        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70545 
70546        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
70547           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70548        END IF;
70549 
70550       --
70551       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70552       --
70553       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70554           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
70555       ELSE
70556           ---------------------------------------------------------------------------------------------------
70557           -- 4262811a Switch Sign
70558           ---------------------------------------------------------------------------------------------------
70559           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
70560           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70561                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70562           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70563                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70564           -- 5132302
70565           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70566                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70567 
70568       END IF;
70569 
70570       -- 4955764
70571       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70572       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70573 
70574 
70575       XLA_AE_LINES_PKG.ValidateCurrentLine;
70576       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70577 
70578       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70579                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70580                ,p_balance_type_code => l_balance_type_code);
70581 
70582    END IF;
70583 
70584    -----------------------------------------------------------------------------------------
70585    -- 4262811 Multiperiod Accounting
70586    -----------------------------------------------------------------------------------------
70587      -- No MPA option is assigned.
70588 
70589 
70590 END IF;
70591 END IF;
70592 --
70593 
70594 --
70595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70596    trace
70597       (p_msg      => 'END of AcctLineType_148'
70598       ,p_level    => C_LEVEL_PROCEDURE
70599       ,p_module   => l_log_module);
70600 END IF;
70601 --
70602 EXCEPTION
70603   WHEN xla_exceptions_pkg.application_exception THEN
70604       RAISE;
70605   WHEN OTHERS THEN
70606        xla_exceptions_pkg.raise_message
70607            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_148');
70608 END AcctLineType_148;
70609 --
70610 
70611 ---------------------------------------
70612 --
70613 -- PRIVATE FUNCTION
70614 --         AcctLineType_149
70615 --
70616 ---------------------------------------
70617 PROCEDURE AcctLineType_149 (
70618   p_application_id        IN NUMBER
70619  ,p_event_id              IN NUMBER
70620  ,p_calculate_acctd_flag  IN VARCHAR2
70621  ,p_calculate_g_l_flag    IN VARCHAR2
70622  ,p_actual_flag           IN OUT VARCHAR2
70623  ,p_balance_type_code     OUT VARCHAR2
70624  ,p_gain_or_loss_ref      OUT VARCHAR2
70625  
70626 --Cost Management Default Account
70627  , p_source_11            IN NUMBER
70628 --DISTRIBUTION_IDENTIFIER
70629  , p_source_84            IN NUMBER
70630 --Distribution Type
70631  , p_source_85            IN VARCHAR2
70632  , p_source_85_meaning    IN VARCHAR2
70633 --Entered Currency Code
70634  , p_source_88            IN VARCHAR2
70635 --Entered Amount
70636  , p_source_91            IN NUMBER
70637 --Currency Conversion Date
70638  , p_source_92            IN DATE
70639 --Currency Conversion Rate
70640  , p_source_93            IN NUMBER
70641 --Currency Conversion Type
70642  , p_source_94            IN VARCHAR2
70643 --Accounted Amount
70644  , p_source_95            IN NUMBER
70645 --Accounting Line Type
70646  , p_source_97            IN NUMBER
70647 )
70648 IS
70649 
70650 l_component_type              VARCHAR2(80);
70651 l_component_code              VARCHAR2(30);
70652 l_component_type_code         VARCHAR2(1);
70653 l_component_appl_id           INTEGER;
70654 l_amb_context_code            VARCHAR2(30);
70655 l_entity_code                 VARCHAR2(30);
70656 l_event_class_code            VARCHAR2(30);
70657 l_ae_header_id                NUMBER;
70658 l_event_type_code             VARCHAR2(30);
70659 l_line_definition_code        VARCHAR2(30);
70660 l_line_definition_owner_code  VARCHAR2(1);
70661 --
70662 -- adr variables
70663 l_segment                     VARCHAR2(30);
70664 l_ccid                        NUMBER;
70665 l_adr_transaction_coa_id      NUMBER;
70666 l_adr_accounting_coa_id       NUMBER;
70667 l_adr_flexfield_segment_code  VARCHAR2(30);
70668 l_adr_flex_value_set_id       NUMBER;
70669 l_adr_value_type_code         VARCHAR2(30);
70670 l_adr_value_combination_id    NUMBER;
70671 l_adr_value_segment_code      VARCHAR2(30);
70672 
70673 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70674 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70675 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70676 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70677 
70678 -- 4262811 Variables ------------------------------------------------------------------------------------------
70679 l_entered_amt_idx             NUMBER;
70680 l_accted_amt_idx              NUMBER;
70681 l_acc_rev_flag                VARCHAR2(1);
70682 l_accrual_line_num            NUMBER;
70683 l_tmp_amt                     NUMBER;
70684 l_acc_rev_natural_side_code   VARCHAR2(1);
70685 
70686 l_num_entries                 NUMBER;
70687 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70688 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70689 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70690 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70691 l_recog_line_1                NUMBER;
70692 l_recog_line_2                NUMBER;
70693 
70694 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70695 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70696 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70697 
70698 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70699 
70700 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70701 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70702 
70703 ---------------------------------------------------------------------------------------------------------------
70704 
70705 
70706 --
70707 -- bulk performance
70708 --
70709 l_balance_type_code           VARCHAR2(1);
70710 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70711 l_log_module                  VARCHAR2(240);
70712 
70713 --
70714 -- Upgrade strategy
70715 --
70716 l_actual_upg_option           VARCHAR2(1);
70717 l_enc_upg_option           VARCHAR2(1);
70718 
70719 --
70720 BEGIN
70721 --
70722 IF g_log_enabled THEN
70723       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_149';
70724 END IF;
70725 --
70726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70727 
70728       trace
70729          (p_msg      => 'BEGIN of AcctLineType_149'
70730          ,p_level    => C_LEVEL_PROCEDURE
70731          ,p_module   => l_log_module);
70732 
70733 END IF;
70734 --
70735 l_component_type             := 'AMB_JLT';
70736 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
70737 l_component_type_code        := 'S';
70738 l_component_appl_id          :=  707;
70739 l_amb_context_code           := 'DEFAULT';
70740 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
70741 l_event_class_code           := 'USER_DEFINE';
70742 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
70743 l_line_definition_owner_code := 'S';
70744 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
70745 --
70746 l_balance_type_code          := 'A';
70747 l_segment                     := NULL;
70748 l_ccid                        := NULL;
70749 l_adr_transaction_coa_id      := NULL;
70750 l_adr_accounting_coa_id       := NULL;
70751 l_adr_flexfield_segment_code  := NULL;
70752 l_adr_flex_value_set_id       := NULL;
70753 l_adr_value_type_code         := NULL;
70754 l_adr_value_combination_id    := NULL;
70755 l_adr_value_segment_code      := NULL;
70756 
70757 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70758 l_bflow_class_code           := '';    -- 4219869 Business Flow
70759 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70760 l_budgetary_control_flag     := 'N';
70761 
70762 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70763 l_bflow_applied_to_amt       := NULL; -- 5132302
70764 l_entered_amt_idx            := NULL;          -- 4262811
70765 l_accted_amt_idx             := NULL;          -- 4262811
70766 l_acc_rev_flag               := NULL;          -- 4262811
70767 l_accrual_line_num           := NULL;          -- 4262811
70768 l_tmp_amt                    := NULL;          -- 4262811
70769 --
70770  
70771 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70772     l_balance_type_code <> 'B' THEN
70773 IF NVL(p_source_97,9E125) =  12
70774  THEN 
70775 
70776    --
70777    XLA_AE_LINES_PKG.SetNewLine;
70778 
70779    p_balance_type_code          := l_balance_type_code;
70780    -- set the flag so later we will know whether the gain loss line needs to be created
70781    
70782    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70783      p_actual_flag :='A';
70784    END IF;
70785 
70786    --
70787    -- bulk performance
70788    --
70789    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70790                                       p_header_num   => 0); -- 4262811
70791    --
70792    -- set accounting line options
70793    --
70794    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70795            p_natural_side_code          => 'D'
70796          , p_gain_or_loss_flag          => 'N'
70797          , p_gl_transfer_mode_code      => 'S'
70798          , p_acct_entry_type_code       => 'A'
70799          , p_switch_side_flag           => 'Y'
70800          , p_merge_duplicate_code       => 'N'
70801          );
70802    --
70803    l_acc_rev_natural_side_code := 'C';  -- 4262811
70804    -- 
70805    --
70806    -- set accounting line type info
70807    --
70808    xla_ae_lines_pkg.SetAcctLineType
70809       (p_component_type             => l_component_type
70810       ,p_event_type_code            => l_event_type_code
70811       ,p_line_definition_owner_code => l_line_definition_owner_code
70812       ,p_line_definition_code       => l_line_definition_code
70813       ,p_accounting_line_code       => l_component_code
70814       ,p_accounting_line_type_code  => l_component_type_code
70815       ,p_accounting_line_appl_id    => l_component_appl_id
70816       ,p_amb_context_code           => l_amb_context_code
70817       ,p_entity_code                => l_entity_code
70818       ,p_event_class_code           => l_event_class_code);
70819    --
70820    -- set accounting class
70821    --
70822    xla_ae_lines_pkg.SetAcctClass(
70823            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
70824          , p_ae_header_id           => l_ae_header_id
70825          );
70826 
70827    --
70828    -- set rounding class
70829    --
70830    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70831                       'INTERORG_FREIGHT_CHARGE';
70832 
70833    --
70834    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70835    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70836    --
70837    -- bulk performance
70838    --
70839    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70840 
70841    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70842       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70843 
70844    -- 4955764
70845    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70846       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70847 
70848    -- 4458381 Public Sector Enh
70849    
70850    --
70851    -- set accounting attributes for the line type
70852    --
70853    l_entered_amt_idx := 3;
70854    l_accted_amt_idx  := 8;
70855    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70856    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70857    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
70858    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70859    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
70860    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70861    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
70862    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70863    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
70864    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70865    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
70866    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70867    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
70868    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70869    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
70870    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70871    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
70872 
70873    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70874    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70875 
70876    ---------------------------------------------------------------------------------------------------------------
70877    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70878    ---------------------------------------------------------------------------------------------------------------
70879    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70880 
70881    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70882    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70883 
70884    IF xla_accounting_cache_pkg.GetValueChar
70885          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70886          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70887    AND l_bflow_method_code = 'PRIOR_ENTRY'
70888 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70889    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70890          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70891        )
70892    THEN
70893          xla_ae_lines_pkg.BflowUpgEntry
70894            (p_business_method_code    => l_bflow_method_code
70895            ,p_business_class_code     => l_bflow_class_code
70896            ,p_balance_type            => l_balance_type_code);
70897    ELSE
70898       NULL;
70899 -- No business flow processing for business flow method of NONE.
70900    END IF;
70901 
70902    --
70903    -- call analytical criteria
70904    --
70905    
70906    --
70907    -- call description
70908    --
70909    -- No description or it is inherited.
70910    --
70911    -- call ADRs
70912    -- Bug 4922099
70913    --
70914    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70915         (NVL(l_actual_upg_option, 'N') = 'O') OR
70916         (NVL(l_enc_upg_option, 'N') = 'O')
70917       )
70918    THEN
70919    NULL;
70920    --
70921    --
70922    
70923   l_ccid := AcctDerRule_6(
70924            p_application_id           => p_application_id
70925          , p_ae_header_id             => l_ae_header_id 
70926 , p_source_11 => p_source_11
70927          , x_transaction_coa_id       => l_adr_transaction_coa_id
70928          , x_accounting_coa_id        => l_adr_accounting_coa_id
70929          , x_value_type_code          => l_adr_value_type_code
70930          , p_side                     => 'NA'
70931    );
70932 
70933    xla_ae_lines_pkg.set_ccid(
70934     p_code_combination_id          => l_ccid
70935   , p_value_type_code              => l_adr_value_type_code
70936   , p_transaction_coa_id           => l_adr_transaction_coa_id
70937   , p_accounting_coa_id            => l_adr_accounting_coa_id
70938   , p_adr_code                     => 'CST_DEFAULT'
70939   , p_adr_type_code                => 'S'
70940   , p_component_type               => l_component_type
70941   , p_component_code               => l_component_code
70942   , p_component_type_code          => l_component_type_code
70943   , p_component_appl_id            => l_component_appl_id
70944   , p_amb_context_code             => l_amb_context_code
70945   , p_side                         => 'NA'
70946   );
70947 
70948 
70949    --
70950    --
70951    END IF;
70952    --
70953    -- Bug 4922099
70954    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70955           (NVL(l_enc_upg_option, 'N') = 'O')
70956         ) AND
70957         (l_bflow_method_code = 'PRIOR_ENTRY')
70958       )
70959    THEN
70960       IF
70961       --
70962       1 = 2
70963       --
70964       THEN
70965       xla_accounting_err_pkg.build_message
70966                                     (p_appli_s_name            => 'XLA'
70967                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70968                                     ,p_token_1                 => 'LINE_NUMBER'
70969                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
70970                                     ,p_token_2                 => 'LINE_TYPE_NAME'
70971                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
70972                                                                              l_component_type
70973                                                                             ,l_component_code
70974                                                                             ,l_component_type_code
70975                                                                             ,l_component_appl_id
70976                                                                             ,l_amb_context_code
70977                                                                             ,l_entity_code
70978                                                                             ,l_event_class_code
70979                                                                            )
70980                                     ,p_token_3                 => 'OWNER'
70981                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
70982                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
70983                                                                           ,p_lookup_code    => l_component_type_code
70984                                                                          )
70985                                     ,p_token_4                 => 'PRODUCT_NAME'
70986                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70987                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70988                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70989                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70990                                     ,p_ae_header_id            =>  NULL
70991                                        );
70992 
70993         IF (C_LEVEL_ERROR>= g_log_level) THEN
70994                  trace
70995                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70996                       ,p_level    => C_LEVEL_ERROR
70997                       ,p_module   => l_log_module);
70998         END IF;
70999       END IF;
71000    END IF;
71001    --
71002    --
71003    ------------------------------------------------------------------------------------------------
71004    -- 4219869 Business Flow
71005    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71006    -- Prior Entry.  Currently, the following code is always generated.
71007    ------------------------------------------------------------------------------------------------
71008    XLA_AE_LINES_PKG.ValidateCurrentLine;
71009 
71010    ------------------------------------------------------------------------------------
71011    -- 4219869 Business Flow
71012    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71013    ------------------------------------------------------------------------------------
71014    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71015 
71016    ----------------------------------------------------------------------------------
71017    -- 4219869 Business Flow
71018    -- Update journal entry status -- Need to generate this within IF <condition>
71019    ----------------------------------------------------------------------------------
71020    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71021          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71022          ,p_balance_type_code => l_balance_type_code
71023          );
71024 
71025    -------------------------------------------------------------------------------------------
71026    -- 4262811 - Generate the Accrual Reversal lines
71027    -------------------------------------------------------------------------------------------
71028    BEGIN
71029       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71030                               (g_array_event(p_event_id).array_value_num('header_index'));
71031       IF l_acc_rev_flag IS NULL THEN
71032          l_acc_rev_flag := 'N';
71033       END IF;
71034    EXCEPTION
71035       WHEN OTHERS THEN
71036          l_acc_rev_flag := 'N';
71037    END;
71038    --
71039    IF (l_acc_rev_flag = 'Y') THEN
71040 
71041        -- 4645092  ------------------------------------------------------------------------------
71042        -- To allow MPA report to determine if it should generate report process
71043        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71044        ------------------------------------------------------------------------------------------
71045 
71046        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71047        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71048    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
71049    -- call ADRs
71050    -- Bug 4922099
71051    --
71052    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71053         (NVL(l_actual_upg_option, 'N') = 'O') OR
71054         (NVL(l_enc_upg_option, 'N') = 'O')
71055       )
71056    THEN
71057    NULL;
71058    --
71059    --
71060    
71061   l_ccid := AcctDerRule_6(
71062            p_application_id           => p_application_id
71063          , p_ae_header_id             => l_ae_header_id 
71064 , p_source_11 => p_source_11
71065          , x_transaction_coa_id       => l_adr_transaction_coa_id
71066          , x_accounting_coa_id        => l_adr_accounting_coa_id
71067          , x_value_type_code          => l_adr_value_type_code
71068          , p_side                     => 'NA'
71069    );
71070 
71071    xla_ae_lines_pkg.set_ccid(
71072     p_code_combination_id          => l_ccid
71073   , p_value_type_code              => l_adr_value_type_code
71074   , p_transaction_coa_id           => l_adr_transaction_coa_id
71075   , p_accounting_coa_id            => l_adr_accounting_coa_id
71076   , p_adr_code                     => 'CST_DEFAULT'
71077   , p_adr_type_code                => 'S'
71078   , p_component_type               => l_component_type
71079   , p_component_code               => l_component_code
71080   , p_component_type_code          => l_component_type_code
71081   , p_component_appl_id            => l_component_appl_id
71082   , p_amb_context_code             => l_amb_context_code
71083   , p_side                         => 'NA'
71084   );
71085 
71086 
71087    --
71088    --
71089    END IF;
71090 
71091        --
71092        -- Update the line information that should be overwritten
71093        --
71094        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71095                                          p_header_num   => 1);
71096        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71097 
71098        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71099 
71100        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71101           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71102        END IF;
71103 
71104       --
71105       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71106       --
71107       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71108           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71109       ELSE
71110           ---------------------------------------------------------------------------------------------------
71111           -- 4262811a Switch Sign
71112           ---------------------------------------------------------------------------------------------------
71113           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71114           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71115                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71116           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71117                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71118           -- 5132302
71119           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71120                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71121 
71122       END IF;
71123 
71124       -- 4955764
71125       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71126       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71127 
71128 
71129       XLA_AE_LINES_PKG.ValidateCurrentLine;
71130       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71131 
71132       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71133                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71134                ,p_balance_type_code => l_balance_type_code);
71135 
71136    END IF;
71137 
71138    -----------------------------------------------------------------------------------------
71139    -- 4262811 Multiperiod Accounting
71140    -----------------------------------------------------------------------------------------
71141      -- No MPA option is assigned.
71142 
71143 
71144 END IF;
71145 END IF;
71146 --
71147 
71148 --
71149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71150    trace
71151       (p_msg      => 'END of AcctLineType_149'
71152       ,p_level    => C_LEVEL_PROCEDURE
71153       ,p_module   => l_log_module);
71154 END IF;
71155 --
71156 EXCEPTION
71157   WHEN xla_exceptions_pkg.application_exception THEN
71158       RAISE;
71159   WHEN OTHERS THEN
71160        xla_exceptions_pkg.raise_message
71161            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_149');
71162 END AcctLineType_149;
71163 --
71164 
71165 ---------------------------------------
71166 --
71167 -- PRIVATE FUNCTION
71168 --         AcctLineType_150
71169 --
71170 ---------------------------------------
71171 PROCEDURE AcctLineType_150 (
71172   p_application_id        IN NUMBER
71173  ,p_event_id              IN NUMBER
71174  ,p_calculate_acctd_flag  IN VARCHAR2
71175  ,p_calculate_g_l_flag    IN VARCHAR2
71176  ,p_actual_flag           IN OUT VARCHAR2
71177  ,p_balance_type_code     OUT VARCHAR2
71178  ,p_gain_or_loss_ref      OUT VARCHAR2
71179  
71180 --TRANSACTION_ID
71181  , p_source_1            IN NUMBER
71182 --Item Concatenated Segments
71183  , p_source_2            IN VARCHAR2
71184 --Transaction Quantity
71185  , p_source_3            IN NUMBER
71186 --Transaction Unit of Measure Code
71187  , p_source_4            IN VARCHAR2
71188 --Inventory Transaction Type Description
71189  , p_source_5            IN VARCHAR2
71190 --Transaction Transportation Distribution Account
71191  , p_source_32            IN NUMBER
71192 --DISTRIBUTION_IDENTIFIER
71193  , p_source_84            IN NUMBER
71194 --Distribution Type
71195  , p_source_85            IN VARCHAR2
71196  , p_source_85_meaning    IN VARCHAR2
71197 --Entered Currency Code
71198  , p_source_88            IN VARCHAR2
71199 --Entered Amount
71200  , p_source_91            IN NUMBER
71201 --Currency Conversion Date
71202  , p_source_92            IN DATE
71203 --Currency Conversion Rate
71204  , p_source_93            IN NUMBER
71205 --Currency Conversion Type
71206  , p_source_94            IN VARCHAR2
71207 --Accounted Amount
71208  , p_source_95            IN NUMBER
71209 --Accounting Line Type
71210  , p_source_97            IN NUMBER
71211 )
71212 IS
71213 
71214 l_component_type              VARCHAR2(80);
71215 l_component_code              VARCHAR2(30);
71216 l_component_type_code         VARCHAR2(1);
71217 l_component_appl_id           INTEGER;
71218 l_amb_context_code            VARCHAR2(30);
71219 l_entity_code                 VARCHAR2(30);
71220 l_event_class_code            VARCHAR2(30);
71221 l_ae_header_id                NUMBER;
71222 l_event_type_code             VARCHAR2(30);
71223 l_line_definition_code        VARCHAR2(30);
71224 l_line_definition_owner_code  VARCHAR2(1);
71225 --
71226 -- adr variables
71227 l_segment                     VARCHAR2(30);
71228 l_ccid                        NUMBER;
71229 l_adr_transaction_coa_id      NUMBER;
71230 l_adr_accounting_coa_id       NUMBER;
71231 l_adr_flexfield_segment_code  VARCHAR2(30);
71232 l_adr_flex_value_set_id       NUMBER;
71233 l_adr_value_type_code         VARCHAR2(30);
71234 l_adr_value_combination_id    NUMBER;
71235 l_adr_value_segment_code      VARCHAR2(30);
71236 
71237 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71238 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71239 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71240 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71241 
71242 -- 4262811 Variables ------------------------------------------------------------------------------------------
71243 l_entered_amt_idx             NUMBER;
71244 l_accted_amt_idx              NUMBER;
71245 l_acc_rev_flag                VARCHAR2(1);
71246 l_accrual_line_num            NUMBER;
71247 l_tmp_amt                     NUMBER;
71248 l_acc_rev_natural_side_code   VARCHAR2(1);
71249 
71250 l_num_entries                 NUMBER;
71251 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71252 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71253 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71254 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71255 l_recog_line_1                NUMBER;
71256 l_recog_line_2                NUMBER;
71257 
71258 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71259 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71260 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71261 
71262 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71263 
71264 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71265 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71266 
71267 ---------------------------------------------------------------------------------------------------------------
71268 
71269 
71270 --
71271 -- bulk performance
71272 --
71273 l_balance_type_code           VARCHAR2(1);
71274 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71275 l_log_module                  VARCHAR2(240);
71276 
71277 --
71278 -- Upgrade strategy
71279 --
71280 l_actual_upg_option           VARCHAR2(1);
71281 l_enc_upg_option           VARCHAR2(1);
71282 
71283 --
71284 BEGIN
71285 --
71286 IF g_log_enabled THEN
71287       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_150';
71288 END IF;
71289 --
71290 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71291 
71292       trace
71293          (p_msg      => 'BEGIN of AcctLineType_150'
71294          ,p_level    => C_LEVEL_PROCEDURE
71295          ,p_module   => l_log_module);
71296 
71297 END IF;
71298 --
71299 l_component_type             := 'AMB_JLT';
71300 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
71301 l_component_type_code        := 'S';
71302 l_component_appl_id          :=  707;
71303 l_amb_context_code           := 'DEFAULT';
71304 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
71305 l_event_class_code           := 'USER_DEFINE';
71306 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
71307 l_line_definition_owner_code := 'S';
71308 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
71309 --
71310 l_balance_type_code          := 'A';
71311 l_segment                     := NULL;
71312 l_ccid                        := NULL;
71313 l_adr_transaction_coa_id      := NULL;
71314 l_adr_accounting_coa_id       := NULL;
71315 l_adr_flexfield_segment_code  := NULL;
71316 l_adr_flex_value_set_id       := NULL;
71317 l_adr_value_type_code         := NULL;
71318 l_adr_value_combination_id    := NULL;
71319 l_adr_value_segment_code      := NULL;
71320 
71321 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71322 l_bflow_class_code           := '';    -- 4219869 Business Flow
71323 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71324 l_budgetary_control_flag     := 'N';
71325 
71326 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71327 l_bflow_applied_to_amt       := NULL; -- 5132302
71328 l_entered_amt_idx            := NULL;          -- 4262811
71329 l_accted_amt_idx             := NULL;          -- 4262811
71330 l_acc_rev_flag               := NULL;          -- 4262811
71331 l_accrual_line_num           := NULL;          -- 4262811
71332 l_tmp_amt                    := NULL;          -- 4262811
71333 --
71334  
71335 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71336     l_balance_type_code <> 'B' THEN
71337 IF NVL(p_source_97,9E125) =  12
71338  THEN 
71339 
71340    --
71341    XLA_AE_LINES_PKG.SetNewLine;
71342 
71343    p_balance_type_code          := l_balance_type_code;
71344    -- set the flag so later we will know whether the gain loss line needs to be created
71345    
71346    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71347      p_actual_flag :='A';
71348    END IF;
71349 
71350    --
71351    -- bulk performance
71352    --
71353    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71354                                       p_header_num   => 0); -- 4262811
71355    --
71356    -- set accounting line options
71357    --
71358    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71359            p_natural_side_code          => 'D'
71360          , p_gain_or_loss_flag          => 'N'
71361          , p_gl_transfer_mode_code      => 'S'
71362          , p_acct_entry_type_code       => 'A'
71363          , p_switch_side_flag           => 'Y'
71364          , p_merge_duplicate_code       => 'N'
71365          );
71366    --
71367    l_acc_rev_natural_side_code := 'C';  -- 4262811
71368    -- 
71369    --
71370    -- set accounting line type info
71371    --
71372    xla_ae_lines_pkg.SetAcctLineType
71373       (p_component_type             => l_component_type
71374       ,p_event_type_code            => l_event_type_code
71375       ,p_line_definition_owner_code => l_line_definition_owner_code
71376       ,p_line_definition_code       => l_line_definition_code
71377       ,p_accounting_line_code       => l_component_code
71378       ,p_accounting_line_type_code  => l_component_type_code
71379       ,p_accounting_line_appl_id    => l_component_appl_id
71380       ,p_amb_context_code           => l_amb_context_code
71381       ,p_entity_code                => l_entity_code
71382       ,p_event_class_code           => l_event_class_code);
71383    --
71384    -- set accounting class
71385    --
71386    xla_ae_lines_pkg.SetAcctClass(
71387            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
71388          , p_ae_header_id           => l_ae_header_id
71389          );
71390 
71391    --
71392    -- set rounding class
71393    --
71394    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71395                       'INTERORG_FREIGHT_CHARGE';
71396 
71397    --
71398    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71399    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71400    --
71401    -- bulk performance
71402    --
71403    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71404 
71405    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71406       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71407 
71408    -- 4955764
71409    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71410       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71411 
71412    -- 4458381 Public Sector Enh
71413    
71414    --
71415    -- set accounting attributes for the line type
71416    --
71417    l_entered_amt_idx := 3;
71418    l_accted_amt_idx  := 8;
71419    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
71420    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71421    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
71422    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
71423    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
71424    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
71425    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
71426    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
71427    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
71428    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
71429    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
71430    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
71431    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
71432    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
71433    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
71434    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
71435    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
71436 
71437    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71438    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71439 
71440    ---------------------------------------------------------------------------------------------------------------
71441    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71442    ---------------------------------------------------------------------------------------------------------------
71443    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71444 
71445    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71446    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71447 
71448    IF xla_accounting_cache_pkg.GetValueChar
71449          (p_source_code         => 'LEDGER_CATEGORY_CODE'
71450          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71451    AND l_bflow_method_code = 'PRIOR_ENTRY'
71452 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71453    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71454          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71455        )
71456    THEN
71457          xla_ae_lines_pkg.BflowUpgEntry
71458            (p_business_method_code    => l_bflow_method_code
71459            ,p_business_class_code     => l_bflow_class_code
71460            ,p_balance_type            => l_balance_type_code);
71461    ELSE
71462       NULL;
71463 -- No business flow processing for business flow method of NONE.
71464    END IF;
71465 
71466    --
71467    -- call analytical criteria
71468    --
71469    
71470    --
71471    -- call description
71472    --
71473    
71474 xla_ae_lines_pkg.SetLineDescription(
71475    p_ae_header_id => l_ae_header_id
71476   ,p_description  => Description_1 (
71477      p_application_id         => p_application_id
71478    , p_ae_header_id           => l_ae_header_id 
71479 , p_source_1 => p_source_1
71480 , p_source_2 => p_source_2
71481 , p_source_3 => p_source_3
71482 , p_source_4 => p_source_4
71483 , p_source_5 => p_source_5
71484    )
71485 );
71486 
71487 
71488    --
71489    -- call ADRs
71490    -- Bug 4922099
71491    --
71492    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71493         (NVL(l_actual_upg_option, 'N') = 'O') OR
71494         (NVL(l_enc_upg_option, 'N') = 'O')
71495       )
71496    THEN
71497    NULL;
71498    --
71499    --
71500    
71501   l_ccid := AcctDerRule_17(
71502            p_application_id           => p_application_id
71503          , p_ae_header_id             => l_ae_header_id 
71504 , p_source_32 => p_source_32
71505          , x_transaction_coa_id       => l_adr_transaction_coa_id
71506          , x_accounting_coa_id        => l_adr_accounting_coa_id
71507          , x_value_type_code          => l_adr_value_type_code
71508          , p_side                     => 'NA'
71509    );
71510 
71511    xla_ae_lines_pkg.set_ccid(
71512     p_code_combination_id          => l_ccid
71513   , p_value_type_code              => l_adr_value_type_code
71514   , p_transaction_coa_id           => l_adr_transaction_coa_id
71515   , p_accounting_coa_id            => l_adr_accounting_coa_id
71516   , p_adr_code                     => 'PI_FREIGHT'
71517   , p_adr_type_code                => 'S'
71518   , p_component_type               => l_component_type
71519   , p_component_code               => l_component_code
71520   , p_component_type_code          => l_component_type_code
71521   , p_component_appl_id            => l_component_appl_id
71522   , p_amb_context_code             => l_amb_context_code
71523   , p_side                         => 'NA'
71524   );
71525 
71526 
71527    --
71528    --
71529    END IF;
71530    --
71531    -- Bug 4922099
71532    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71533           (NVL(l_enc_upg_option, 'N') = 'O')
71534         ) AND
71535         (l_bflow_method_code = 'PRIOR_ENTRY')
71536       )
71537    THEN
71538       IF
71539       --
71540       1 = 2
71541       --
71542       THEN
71543       xla_accounting_err_pkg.build_message
71544                                     (p_appli_s_name            => 'XLA'
71545                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71546                                     ,p_token_1                 => 'LINE_NUMBER'
71547                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
71548                                     ,p_token_2                 => 'LINE_TYPE_NAME'
71549                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
71550                                                                              l_component_type
71551                                                                             ,l_component_code
71552                                                                             ,l_component_type_code
71553                                                                             ,l_component_appl_id
71554                                                                             ,l_amb_context_code
71555                                                                             ,l_entity_code
71556                                                                             ,l_event_class_code
71557                                                                            )
71558                                     ,p_token_3                 => 'OWNER'
71559                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
71560                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
71561                                                                           ,p_lookup_code    => l_component_type_code
71562                                                                          )
71563                                     ,p_token_4                 => 'PRODUCT_NAME'
71564                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71565                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71566                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71567                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71568                                     ,p_ae_header_id            =>  NULL
71569                                        );
71570 
71571         IF (C_LEVEL_ERROR>= g_log_level) THEN
71572                  trace
71573                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71574                       ,p_level    => C_LEVEL_ERROR
71575                       ,p_module   => l_log_module);
71576         END IF;
71577       END IF;
71578    END IF;
71579    --
71580    --
71581    ------------------------------------------------------------------------------------------------
71582    -- 4219869 Business Flow
71583    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71584    -- Prior Entry.  Currently, the following code is always generated.
71585    ------------------------------------------------------------------------------------------------
71586    XLA_AE_LINES_PKG.ValidateCurrentLine;
71587 
71588    ------------------------------------------------------------------------------------
71589    -- 4219869 Business Flow
71590    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71591    ------------------------------------------------------------------------------------
71592    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71593 
71594    ----------------------------------------------------------------------------------
71595    -- 4219869 Business Flow
71596    -- Update journal entry status -- Need to generate this within IF <condition>
71597    ----------------------------------------------------------------------------------
71598    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71599          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71600          ,p_balance_type_code => l_balance_type_code
71601          );
71602 
71603    -------------------------------------------------------------------------------------------
71604    -- 4262811 - Generate the Accrual Reversal lines
71605    -------------------------------------------------------------------------------------------
71606    BEGIN
71607       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71608                               (g_array_event(p_event_id).array_value_num('header_index'));
71609       IF l_acc_rev_flag IS NULL THEN
71610          l_acc_rev_flag := 'N';
71611       END IF;
71612    EXCEPTION
71613       WHEN OTHERS THEN
71614          l_acc_rev_flag := 'N';
71615    END;
71616    --
71617    IF (l_acc_rev_flag = 'Y') THEN
71618 
71619        -- 4645092  ------------------------------------------------------------------------------
71620        -- To allow MPA report to determine if it should generate report process
71621        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71622        ------------------------------------------------------------------------------------------
71623 
71624        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71625        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71626    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
71627    -- call ADRs
71628    -- Bug 4922099
71629    --
71630    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71631         (NVL(l_actual_upg_option, 'N') = 'O') OR
71632         (NVL(l_enc_upg_option, 'N') = 'O')
71633       )
71634    THEN
71635    NULL;
71636    --
71637    --
71638    
71639   l_ccid := AcctDerRule_17(
71640            p_application_id           => p_application_id
71641          , p_ae_header_id             => l_ae_header_id 
71642 , p_source_32 => p_source_32
71643          , x_transaction_coa_id       => l_adr_transaction_coa_id
71644          , x_accounting_coa_id        => l_adr_accounting_coa_id
71645          , x_value_type_code          => l_adr_value_type_code
71646          , p_side                     => 'NA'
71647    );
71648 
71649    xla_ae_lines_pkg.set_ccid(
71650     p_code_combination_id          => l_ccid
71651   , p_value_type_code              => l_adr_value_type_code
71652   , p_transaction_coa_id           => l_adr_transaction_coa_id
71653   , p_accounting_coa_id            => l_adr_accounting_coa_id
71654   , p_adr_code                     => 'PI_FREIGHT'
71655   , p_adr_type_code                => 'S'
71656   , p_component_type               => l_component_type
71657   , p_component_code               => l_component_code
71658   , p_component_type_code          => l_component_type_code
71659   , p_component_appl_id            => l_component_appl_id
71660   , p_amb_context_code             => l_amb_context_code
71661   , p_side                         => 'NA'
71662   );
71663 
71664 
71665    --
71666    --
71667    END IF;
71668 
71669        --
71670        -- Update the line information that should be overwritten
71671        --
71672        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71673                                          p_header_num   => 1);
71674        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71675 
71676        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71677 
71678        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71679           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71680        END IF;
71681 
71682       --
71683       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71684       --
71685       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71686           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71687       ELSE
71688           ---------------------------------------------------------------------------------------------------
71689           -- 4262811a Switch Sign
71690           ---------------------------------------------------------------------------------------------------
71691           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71692           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71693                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71694           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71695                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71696           -- 5132302
71697           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71698                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71699 
71700       END IF;
71701 
71702       -- 4955764
71703       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71704       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71705 
71706 
71707       XLA_AE_LINES_PKG.ValidateCurrentLine;
71708       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71709 
71710       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71711                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71712                ,p_balance_type_code => l_balance_type_code);
71713 
71714    END IF;
71715 
71716    -----------------------------------------------------------------------------------------
71717    -- 4262811 Multiperiod Accounting
71718    -----------------------------------------------------------------------------------------
71719      -- No MPA option is assigned.
71720 
71721 
71722 END IF;
71723 END IF;
71724 --
71725 
71726 --
71727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71728    trace
71729       (p_msg      => 'END of AcctLineType_150'
71730       ,p_level    => C_LEVEL_PROCEDURE
71731       ,p_module   => l_log_module);
71732 END IF;
71733 --
71734 EXCEPTION
71735   WHEN xla_exceptions_pkg.application_exception THEN
71736       RAISE;
71737   WHEN OTHERS THEN
71738        xla_exceptions_pkg.raise_message
71739            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_150');
71740 END AcctLineType_150;
71741 --
71742 
71743 ---------------------------------------
71744 --
71745 -- PRIVATE FUNCTION
71746 --         AcctLineType_151
71747 --
71748 ---------------------------------------
71749 PROCEDURE AcctLineType_151 (
71750   p_application_id        IN NUMBER
71751  ,p_event_id              IN NUMBER
71752  ,p_calculate_acctd_flag  IN VARCHAR2
71753  ,p_calculate_g_l_flag    IN VARCHAR2
71754  ,p_actual_flag           IN OUT VARCHAR2
71755  ,p_balance_type_code     OUT VARCHAR2
71756  ,p_gain_or_loss_ref      OUT VARCHAR2
71757  
71758 --TRANSACTION_ID
71759  , p_source_1            IN NUMBER
71760 --Item Concatenated Segments
71761  , p_source_2            IN VARCHAR2
71762 --Transaction Quantity
71763  , p_source_3            IN NUMBER
71764 --Transaction Unit of Measure Code
71765  , p_source_4            IN VARCHAR2
71766 --Inventory Transaction Type Description
71767  , p_source_5            IN VARCHAR2
71768 --Transaction Transportation Distribution Account
71769  , p_source_32            IN NUMBER
71770 --DISTRIBUTION_IDENTIFIER
71771  , p_source_84            IN NUMBER
71772 --Distribution Type
71773  , p_source_85            IN VARCHAR2
71774  , p_source_85_meaning    IN VARCHAR2
71775 --Entered Currency Code
71776  , p_source_88            IN VARCHAR2
71777 --Entered Amount
71778  , p_source_91            IN NUMBER
71779 --Currency Conversion Date
71780  , p_source_92            IN DATE
71781 --Currency Conversion Rate
71782  , p_source_93            IN NUMBER
71783 --Currency Conversion Type
71784  , p_source_94            IN VARCHAR2
71785 --Accounted Amount
71786  , p_source_95            IN NUMBER
71787 --Accounting Line Type
71788  , p_source_97            IN NUMBER
71789 )
71790 IS
71791 
71792 l_component_type              VARCHAR2(80);
71793 l_component_code              VARCHAR2(30);
71794 l_component_type_code         VARCHAR2(1);
71795 l_component_appl_id           INTEGER;
71796 l_amb_context_code            VARCHAR2(30);
71797 l_entity_code                 VARCHAR2(30);
71798 l_event_class_code            VARCHAR2(30);
71799 l_ae_header_id                NUMBER;
71800 l_event_type_code             VARCHAR2(30);
71801 l_line_definition_code        VARCHAR2(30);
71802 l_line_definition_owner_code  VARCHAR2(1);
71803 --
71804 -- adr variables
71805 l_segment                     VARCHAR2(30);
71806 l_ccid                        NUMBER;
71807 l_adr_transaction_coa_id      NUMBER;
71808 l_adr_accounting_coa_id       NUMBER;
71809 l_adr_flexfield_segment_code  VARCHAR2(30);
71810 l_adr_flex_value_set_id       NUMBER;
71811 l_adr_value_type_code         VARCHAR2(30);
71812 l_adr_value_combination_id    NUMBER;
71813 l_adr_value_segment_code      VARCHAR2(30);
71814 
71815 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71816 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71817 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71818 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71819 
71820 -- 4262811 Variables ------------------------------------------------------------------------------------------
71821 l_entered_amt_idx             NUMBER;
71822 l_accted_amt_idx              NUMBER;
71823 l_acc_rev_flag                VARCHAR2(1);
71824 l_accrual_line_num            NUMBER;
71825 l_tmp_amt                     NUMBER;
71826 l_acc_rev_natural_side_code   VARCHAR2(1);
71827 
71828 l_num_entries                 NUMBER;
71829 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71830 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71831 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71832 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71833 l_recog_line_1                NUMBER;
71834 l_recog_line_2                NUMBER;
71835 
71836 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71837 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71838 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71839 
71840 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71841 
71842 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71843 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71844 
71845 ---------------------------------------------------------------------------------------------------------------
71846 
71847 
71848 --
71849 -- bulk performance
71850 --
71851 l_balance_type_code           VARCHAR2(1);
71852 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71853 l_log_module                  VARCHAR2(240);
71854 
71855 --
71856 -- Upgrade strategy
71857 --
71858 l_actual_upg_option           VARCHAR2(1);
71859 l_enc_upg_option           VARCHAR2(1);
71860 
71861 --
71862 BEGIN
71863 --
71864 IF g_log_enabled THEN
71865       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_151';
71866 END IF;
71867 --
71868 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71869 
71870       trace
71871          (p_msg      => 'BEGIN of AcctLineType_151'
71872          ,p_level    => C_LEVEL_PROCEDURE
71873          ,p_module   => l_log_module);
71874 
71875 END IF;
71876 --
71877 l_component_type             := 'AMB_JLT';
71878 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
71879 l_component_type_code        := 'S';
71880 l_component_appl_id          :=  707;
71881 l_amb_context_code           := 'DEFAULT';
71882 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
71883 l_event_class_code           := 'USER_DEFINE';
71884 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
71885 l_line_definition_owner_code := 'S';
71886 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
71887 --
71888 l_balance_type_code          := 'A';
71889 l_segment                     := NULL;
71890 l_ccid                        := NULL;
71891 l_adr_transaction_coa_id      := NULL;
71892 l_adr_accounting_coa_id       := NULL;
71893 l_adr_flexfield_segment_code  := NULL;
71894 l_adr_flex_value_set_id       := NULL;
71895 l_adr_value_type_code         := NULL;
71896 l_adr_value_combination_id    := NULL;
71897 l_adr_value_segment_code      := NULL;
71898 
71899 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71900 l_bflow_class_code           := '';    -- 4219869 Business Flow
71901 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71902 l_budgetary_control_flag     := 'N';
71903 
71904 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71905 l_bflow_applied_to_amt       := NULL; -- 5132302
71906 l_entered_amt_idx            := NULL;          -- 4262811
71907 l_accted_amt_idx             := NULL;          -- 4262811
71908 l_acc_rev_flag               := NULL;          -- 4262811
71909 l_accrual_line_num           := NULL;          -- 4262811
71910 l_tmp_amt                    := NULL;          -- 4262811
71911 --
71912  
71913 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71914     l_balance_type_code <> 'B' THEN
71915 IF NVL(p_source_97,9E125) =  12
71916  THEN 
71917 
71918    --
71919    XLA_AE_LINES_PKG.SetNewLine;
71920 
71921    p_balance_type_code          := l_balance_type_code;
71922    -- set the flag so later we will know whether the gain loss line needs to be created
71923    
71924    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71925      p_actual_flag :='A';
71926    END IF;
71927 
71928    --
71929    -- bulk performance
71930    --
71931    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71932                                       p_header_num   => 0); -- 4262811
71933    --
71934    -- set accounting line options
71935    --
71936    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71937            p_natural_side_code          => 'D'
71938          , p_gain_or_loss_flag          => 'N'
71939          , p_gl_transfer_mode_code      => 'S'
71940          , p_acct_entry_type_code       => 'A'
71941          , p_switch_side_flag           => 'Y'
71942          , p_merge_duplicate_code       => 'N'
71943          );
71944    --
71945    l_acc_rev_natural_side_code := 'C';  -- 4262811
71946    -- 
71947    --
71948    -- set accounting line type info
71949    --
71950    xla_ae_lines_pkg.SetAcctLineType
71951       (p_component_type             => l_component_type
71952       ,p_event_type_code            => l_event_type_code
71953       ,p_line_definition_owner_code => l_line_definition_owner_code
71954       ,p_line_definition_code       => l_line_definition_code
71955       ,p_accounting_line_code       => l_component_code
71956       ,p_accounting_line_type_code  => l_component_type_code
71957       ,p_accounting_line_appl_id    => l_component_appl_id
71958       ,p_amb_context_code           => l_amb_context_code
71959       ,p_entity_code                => l_entity_code
71960       ,p_event_class_code           => l_event_class_code);
71961    --
71962    -- set accounting class
71963    --
71964    xla_ae_lines_pkg.SetAcctClass(
71965            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
71966          , p_ae_header_id           => l_ae_header_id
71967          );
71968 
71969    --
71970    -- set rounding class
71971    --
71972    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71973                       'INTERORG_FREIGHT_CHARGE';
71974 
71975    --
71976    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71977    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71978    --
71979    -- bulk performance
71980    --
71981    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71982 
71983    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71984       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71985 
71986    -- 4955764
71987    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71988       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71989 
71990    -- 4458381 Public Sector Enh
71991    
71992    --
71993    -- set accounting attributes for the line type
71994    --
71995    l_entered_amt_idx := 3;
71996    l_accted_amt_idx  := 8;
71997    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
71998    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71999    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
72000    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72001    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
72002    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72003    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
72004    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72005    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
72006    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72007    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
72008    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72009    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
72010    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72011    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
72012    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72013    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
72014 
72015    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72016    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72017 
72018    ---------------------------------------------------------------------------------------------------------------
72019    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72020    ---------------------------------------------------------------------------------------------------------------
72021    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72022 
72023    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72024    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72025 
72026    IF xla_accounting_cache_pkg.GetValueChar
72027          (p_source_code         => 'LEDGER_CATEGORY_CODE'
72028          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72029    AND l_bflow_method_code = 'PRIOR_ENTRY'
72030 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72031    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72032          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72033        )
72034    THEN
72035          xla_ae_lines_pkg.BflowUpgEntry
72036            (p_business_method_code    => l_bflow_method_code
72037            ,p_business_class_code     => l_bflow_class_code
72038            ,p_balance_type            => l_balance_type_code);
72039    ELSE
72040       NULL;
72041 -- No business flow processing for business flow method of NONE.
72042    END IF;
72043 
72044    --
72045    -- call analytical criteria
72046    --
72047    
72048    --
72049    -- call description
72050    --
72051    
72052 xla_ae_lines_pkg.SetLineDescription(
72053    p_ae_header_id => l_ae_header_id
72054   ,p_description  => Description_1 (
72055      p_application_id         => p_application_id
72056    , p_ae_header_id           => l_ae_header_id 
72057 , p_source_1 => p_source_1
72058 , p_source_2 => p_source_2
72059 , p_source_3 => p_source_3
72060 , p_source_4 => p_source_4
72061 , p_source_5 => p_source_5
72062    )
72063 );
72064 
72065 
72066    --
72067    -- call ADRs
72068    -- Bug 4922099
72069    --
72070    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72071         (NVL(l_actual_upg_option, 'N') = 'O') OR
72072         (NVL(l_enc_upg_option, 'N') = 'O')
72073       )
72074    THEN
72075    NULL;
72076    --
72077    --
72078    
72079   l_ccid := AcctDerRule_17(
72080            p_application_id           => p_application_id
72081          , p_ae_header_id             => l_ae_header_id 
72082 , p_source_32 => p_source_32
72083          , x_transaction_coa_id       => l_adr_transaction_coa_id
72084          , x_accounting_coa_id        => l_adr_accounting_coa_id
72085          , x_value_type_code          => l_adr_value_type_code
72086          , p_side                     => 'NA'
72087    );
72088 
72089    xla_ae_lines_pkg.set_ccid(
72090     p_code_combination_id          => l_ccid
72091   , p_value_type_code              => l_adr_value_type_code
72092   , p_transaction_coa_id           => l_adr_transaction_coa_id
72093   , p_accounting_coa_id            => l_adr_accounting_coa_id
72094   , p_adr_code                     => 'PI_FREIGHT'
72095   , p_adr_type_code                => 'S'
72096   , p_component_type               => l_component_type
72097   , p_component_code               => l_component_code
72098   , p_component_type_code          => l_component_type_code
72099   , p_component_appl_id            => l_component_appl_id
72100   , p_amb_context_code             => l_amb_context_code
72101   , p_side                         => 'NA'
72102   );
72103 
72104 
72105    --
72106    --
72107    END IF;
72108    --
72109    -- Bug 4922099
72110    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72111           (NVL(l_enc_upg_option, 'N') = 'O')
72112         ) AND
72113         (l_bflow_method_code = 'PRIOR_ENTRY')
72114       )
72115    THEN
72116       IF
72117       --
72118       1 = 2
72119       --
72120       THEN
72121       xla_accounting_err_pkg.build_message
72122                                     (p_appli_s_name            => 'XLA'
72123                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72124                                     ,p_token_1                 => 'LINE_NUMBER'
72125                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
72126                                     ,p_token_2                 => 'LINE_TYPE_NAME'
72127                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
72128                                                                              l_component_type
72129                                                                             ,l_component_code
72130                                                                             ,l_component_type_code
72131                                                                             ,l_component_appl_id
72132                                                                             ,l_amb_context_code
72133                                                                             ,l_entity_code
72134                                                                             ,l_event_class_code
72135                                                                            )
72136                                     ,p_token_3                 => 'OWNER'
72137                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72138                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72139                                                                           ,p_lookup_code    => l_component_type_code
72140                                                                          )
72141                                     ,p_token_4                 => 'PRODUCT_NAME'
72142                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72143                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72144                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72145                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72146                                     ,p_ae_header_id            =>  NULL
72147                                        );
72148 
72149         IF (C_LEVEL_ERROR>= g_log_level) THEN
72150                  trace
72151                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72152                       ,p_level    => C_LEVEL_ERROR
72153                       ,p_module   => l_log_module);
72154         END IF;
72155       END IF;
72156    END IF;
72157    --
72158    --
72159    ------------------------------------------------------------------------------------------------
72160    -- 4219869 Business Flow
72161    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72162    -- Prior Entry.  Currently, the following code is always generated.
72163    ------------------------------------------------------------------------------------------------
72164    XLA_AE_LINES_PKG.ValidateCurrentLine;
72165 
72166    ------------------------------------------------------------------------------------
72167    -- 4219869 Business Flow
72168    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72169    ------------------------------------------------------------------------------------
72170    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72171 
72172    ----------------------------------------------------------------------------------
72173    -- 4219869 Business Flow
72174    -- Update journal entry status -- Need to generate this within IF <condition>
72175    ----------------------------------------------------------------------------------
72176    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72177          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72178          ,p_balance_type_code => l_balance_type_code
72179          );
72180 
72181    -------------------------------------------------------------------------------------------
72182    -- 4262811 - Generate the Accrual Reversal lines
72183    -------------------------------------------------------------------------------------------
72184    BEGIN
72185       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72186                               (g_array_event(p_event_id).array_value_num('header_index'));
72187       IF l_acc_rev_flag IS NULL THEN
72188          l_acc_rev_flag := 'N';
72189       END IF;
72190    EXCEPTION
72191       WHEN OTHERS THEN
72192          l_acc_rev_flag := 'N';
72193    END;
72194    --
72195    IF (l_acc_rev_flag = 'Y') THEN
72196 
72197        -- 4645092  ------------------------------------------------------------------------------
72198        -- To allow MPA report to determine if it should generate report process
72199        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72200        ------------------------------------------------------------------------------------------
72201 
72202        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72203        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72204    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
72205    -- call ADRs
72206    -- Bug 4922099
72207    --
72208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72209         (NVL(l_actual_upg_option, 'N') = 'O') OR
72210         (NVL(l_enc_upg_option, 'N') = 'O')
72211       )
72212    THEN
72213    NULL;
72214    --
72215    --
72216    
72217   l_ccid := AcctDerRule_17(
72218            p_application_id           => p_application_id
72219          , p_ae_header_id             => l_ae_header_id 
72220 , p_source_32 => p_source_32
72221          , x_transaction_coa_id       => l_adr_transaction_coa_id
72222          , x_accounting_coa_id        => l_adr_accounting_coa_id
72223          , x_value_type_code          => l_adr_value_type_code
72224          , p_side                     => 'NA'
72225    );
72226 
72227    xla_ae_lines_pkg.set_ccid(
72228     p_code_combination_id          => l_ccid
72229   , p_value_type_code              => l_adr_value_type_code
72230   , p_transaction_coa_id           => l_adr_transaction_coa_id
72231   , p_accounting_coa_id            => l_adr_accounting_coa_id
72232   , p_adr_code                     => 'PI_FREIGHT'
72233   , p_adr_type_code                => 'S'
72234   , p_component_type               => l_component_type
72235   , p_component_code               => l_component_code
72236   , p_component_type_code          => l_component_type_code
72237   , p_component_appl_id            => l_component_appl_id
72238   , p_amb_context_code             => l_amb_context_code
72239   , p_side                         => 'NA'
72240   );
72241 
72242 
72243    --
72244    --
72245    END IF;
72246 
72247        --
72248        -- Update the line information that should be overwritten
72249        --
72250        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72251                                          p_header_num   => 1);
72252        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72253 
72254        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72255 
72256        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72257           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72258        END IF;
72259 
72260       --
72261       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72262       --
72263       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72264           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72265       ELSE
72266           ---------------------------------------------------------------------------------------------------
72267           -- 4262811a Switch Sign
72268           ---------------------------------------------------------------------------------------------------
72269           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72270           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72271                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72272           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72273                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72274           -- 5132302
72275           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72276                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72277 
72278       END IF;
72279 
72280       -- 4955764
72281       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72282       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72283 
72284 
72285       XLA_AE_LINES_PKG.ValidateCurrentLine;
72286       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72287 
72288       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72289                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72290                ,p_balance_type_code => l_balance_type_code);
72291 
72292    END IF;
72293 
72294    -----------------------------------------------------------------------------------------
72295    -- 4262811 Multiperiod Accounting
72296    -----------------------------------------------------------------------------------------
72297      -- No MPA option is assigned.
72298 
72299 
72300 END IF;
72301 END IF;
72302 --
72303 
72304 --
72305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72306    trace
72307       (p_msg      => 'END of AcctLineType_151'
72308       ,p_level    => C_LEVEL_PROCEDURE
72309       ,p_module   => l_log_module);
72310 END IF;
72311 --
72312 EXCEPTION
72313   WHEN xla_exceptions_pkg.application_exception THEN
72314       RAISE;
72315   WHEN OTHERS THEN
72316        xla_exceptions_pkg.raise_message
72317            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_151');
72318 END AcctLineType_151;
72319 --
72320 
72321 ---------------------------------------
72322 --
72323 -- PRIVATE FUNCTION
72324 --         AcctLineType_152
72325 --
72326 ---------------------------------------
72327 PROCEDURE AcctLineType_152 (
72328   p_application_id        IN NUMBER
72329  ,p_event_id              IN NUMBER
72330  ,p_calculate_acctd_flag  IN VARCHAR2
72331  ,p_calculate_g_l_flag    IN VARCHAR2
72332  ,p_actual_flag           IN OUT VARCHAR2
72333  ,p_balance_type_code     OUT VARCHAR2
72334  ,p_gain_or_loss_ref      OUT VARCHAR2
72335  
72336 --TRANSACTION_ID
72337  , p_source_1            IN NUMBER
72338 --Item Concatenated Segments
72339  , p_source_2            IN VARCHAR2
72340 --Transaction Quantity
72341  , p_source_3            IN NUMBER
72342 --Transaction Unit of Measure Code
72343  , p_source_4            IN VARCHAR2
72344 --Inventory Transaction Type Description
72345  , p_source_5            IN VARCHAR2
72346 --Cost Management Default Account
72347  , p_source_11            IN NUMBER
72348 --DISTRIBUTION_IDENTIFIER
72349  , p_source_84            IN NUMBER
72350 --Distribution Type
72351  , p_source_85            IN VARCHAR2
72352  , p_source_85_meaning    IN VARCHAR2
72353 --Entered Currency Code
72354  , p_source_88            IN VARCHAR2
72355 --Entered Amount
72356  , p_source_91            IN NUMBER
72357 --Currency Conversion Date
72358  , p_source_92            IN DATE
72359 --Currency Conversion Rate
72360  , p_source_93            IN NUMBER
72361 --Currency Conversion Type
72362  , p_source_94            IN VARCHAR2
72363 --Accounted Amount
72364  , p_source_95            IN NUMBER
72365 --Accounting Line Type
72366  , p_source_97            IN NUMBER
72367 )
72368 IS
72369 
72370 l_component_type              VARCHAR2(80);
72371 l_component_code              VARCHAR2(30);
72372 l_component_type_code         VARCHAR2(1);
72373 l_component_appl_id           INTEGER;
72374 l_amb_context_code            VARCHAR2(30);
72375 l_entity_code                 VARCHAR2(30);
72376 l_event_class_code            VARCHAR2(30);
72377 l_ae_header_id                NUMBER;
72378 l_event_type_code             VARCHAR2(30);
72379 l_line_definition_code        VARCHAR2(30);
72380 l_line_definition_owner_code  VARCHAR2(1);
72381 --
72382 -- adr variables
72383 l_segment                     VARCHAR2(30);
72384 l_ccid                        NUMBER;
72385 l_adr_transaction_coa_id      NUMBER;
72386 l_adr_accounting_coa_id       NUMBER;
72387 l_adr_flexfield_segment_code  VARCHAR2(30);
72388 l_adr_flex_value_set_id       NUMBER;
72389 l_adr_value_type_code         VARCHAR2(30);
72390 l_adr_value_combination_id    NUMBER;
72391 l_adr_value_segment_code      VARCHAR2(30);
72392 
72393 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72394 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72395 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72396 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72397 
72398 -- 4262811 Variables ------------------------------------------------------------------------------------------
72399 l_entered_amt_idx             NUMBER;
72400 l_accted_amt_idx              NUMBER;
72401 l_acc_rev_flag                VARCHAR2(1);
72402 l_accrual_line_num            NUMBER;
72403 l_tmp_amt                     NUMBER;
72404 l_acc_rev_natural_side_code   VARCHAR2(1);
72405 
72406 l_num_entries                 NUMBER;
72407 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72408 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72409 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72410 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72411 l_recog_line_1                NUMBER;
72412 l_recog_line_2                NUMBER;
72413 
72414 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72415 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72416 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72417 
72418 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72419 
72420 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72421 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
72422 
72423 ---------------------------------------------------------------------------------------------------------------
72424 
72425 
72426 --
72427 -- bulk performance
72428 --
72429 l_balance_type_code           VARCHAR2(1);
72430 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
72431 l_log_module                  VARCHAR2(240);
72432 
72433 --
72434 -- Upgrade strategy
72435 --
72436 l_actual_upg_option           VARCHAR2(1);
72437 l_enc_upg_option           VARCHAR2(1);
72438 
72439 --
72440 BEGIN
72441 --
72442 IF g_log_enabled THEN
72443       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_152';
72444 END IF;
72445 --
72446 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72447 
72448       trace
72449          (p_msg      => 'BEGIN of AcctLineType_152'
72450          ,p_level    => C_LEVEL_PROCEDURE
72451          ,p_module   => l_log_module);
72452 
72453 END IF;
72454 --
72455 l_component_type             := 'AMB_JLT';
72456 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
72457 l_component_type_code        := 'S';
72458 l_component_appl_id          :=  707;
72459 l_amb_context_code           := 'DEFAULT';
72460 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
72461 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
72462 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
72463 l_line_definition_owner_code := 'S';
72464 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
72465 --
72466 l_balance_type_code          := 'A';
72467 l_segment                     := NULL;
72468 l_ccid                        := NULL;
72469 l_adr_transaction_coa_id      := NULL;
72470 l_adr_accounting_coa_id       := NULL;
72471 l_adr_flexfield_segment_code  := NULL;
72472 l_adr_flex_value_set_id       := NULL;
72473 l_adr_value_type_code         := NULL;
72474 l_adr_value_combination_id    := NULL;
72475 l_adr_value_segment_code      := NULL;
72476 
72477 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
72478 l_bflow_class_code           := '';    -- 4219869 Business Flow
72479 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
72480 l_budgetary_control_flag     := 'N';
72481 
72482 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
72483 l_bflow_applied_to_amt       := NULL; -- 5132302
72484 l_entered_amt_idx            := NULL;          -- 4262811
72485 l_accted_amt_idx             := NULL;          -- 4262811
72486 l_acc_rev_flag               := NULL;          -- 4262811
72487 l_accrual_line_num           := NULL;          -- 4262811
72488 l_tmp_amt                    := NULL;          -- 4262811
72489 --
72490  
72491 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72492     l_balance_type_code <> 'B' THEN
72493 IF NVL(p_source_97,9E125) =  12
72494  THEN 
72495 
72496    --
72497    XLA_AE_LINES_PKG.SetNewLine;
72498 
72499    p_balance_type_code          := l_balance_type_code;
72500    -- set the flag so later we will know whether the gain loss line needs to be created
72501    
72502    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72503      p_actual_flag :='A';
72504    END IF;
72505 
72506    --
72507    -- bulk performance
72508    --
72509    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72510                                       p_header_num   => 0); -- 4262811
72511    --
72512    -- set accounting line options
72513    --
72514    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72515            p_natural_side_code          => 'D'
72516          , p_gain_or_loss_flag          => 'N'
72517          , p_gl_transfer_mode_code      => 'S'
72518          , p_acct_entry_type_code       => 'A'
72519          , p_switch_side_flag           => 'Y'
72520          , p_merge_duplicate_code       => 'N'
72521          );
72522    --
72523    l_acc_rev_natural_side_code := 'C';  -- 4262811
72524    -- 
72525    --
72526    -- set accounting line type info
72527    --
72528    xla_ae_lines_pkg.SetAcctLineType
72529       (p_component_type             => l_component_type
72530       ,p_event_type_code            => l_event_type_code
72531       ,p_line_definition_owner_code => l_line_definition_owner_code
72532       ,p_line_definition_code       => l_line_definition_code
72533       ,p_accounting_line_code       => l_component_code
72534       ,p_accounting_line_type_code  => l_component_type_code
72535       ,p_accounting_line_appl_id    => l_component_appl_id
72536       ,p_amb_context_code           => l_amb_context_code
72537       ,p_entity_code                => l_entity_code
72538       ,p_event_class_code           => l_event_class_code);
72539    --
72540    -- set accounting class
72541    --
72542    xla_ae_lines_pkg.SetAcctClass(
72543            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
72544          , p_ae_header_id           => l_ae_header_id
72545          );
72546 
72547    --
72548    -- set rounding class
72549    --
72550    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72551                       'INTERORG_FREIGHT_CHARGE';
72552 
72553    --
72554    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72555    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72556    --
72557    -- bulk performance
72558    --
72559    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72560 
72561    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72562       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72563 
72564    -- 4955764
72565    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72566       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72567 
72568    -- 4458381 Public Sector Enh
72569    
72570    --
72571    -- set accounting attributes for the line type
72572    --
72573    l_entered_amt_idx := 3;
72574    l_accted_amt_idx  := 8;
72575    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
72576    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72577    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
72578    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72579    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
72580    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72581    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
72582    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72583    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
72584    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72585    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
72586    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72587    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
72588    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72589    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
72590    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72591    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
72592 
72593    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72594    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72595 
72596    ---------------------------------------------------------------------------------------------------------------
72597    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72598    ---------------------------------------------------------------------------------------------------------------
72599    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72600 
72601    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72602    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72603 
72604    IF xla_accounting_cache_pkg.GetValueChar
72605          (p_source_code         => 'LEDGER_CATEGORY_CODE'
72606          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72607    AND l_bflow_method_code = 'PRIOR_ENTRY'
72608 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72609    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72610          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72611        )
72612    THEN
72613          xla_ae_lines_pkg.BflowUpgEntry
72614            (p_business_method_code    => l_bflow_method_code
72615            ,p_business_class_code     => l_bflow_class_code
72616            ,p_balance_type            => l_balance_type_code);
72617    ELSE
72618       NULL;
72619 -- No business flow processing for business flow method of NONE.
72620    END IF;
72621 
72622    --
72623    -- call analytical criteria
72624    --
72625    
72626    --
72627    -- call description
72628    --
72629    
72630 xla_ae_lines_pkg.SetLineDescription(
72631    p_ae_header_id => l_ae_header_id
72632   ,p_description  => Description_1 (
72633      p_application_id         => p_application_id
72634    , p_ae_header_id           => l_ae_header_id 
72635 , p_source_1 => p_source_1
72636 , p_source_2 => p_source_2
72637 , p_source_3 => p_source_3
72638 , p_source_4 => p_source_4
72639 , p_source_5 => p_source_5
72640    )
72641 );
72642 
72643 
72644    --
72645    -- call ADRs
72646    -- Bug 4922099
72647    --
72648    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72649         (NVL(l_actual_upg_option, 'N') = 'O') OR
72650         (NVL(l_enc_upg_option, 'N') = 'O')
72651       )
72652    THEN
72653    NULL;
72654    --
72655    --
72656    
72657   l_ccid := AcctDerRule_6(
72658            p_application_id           => p_application_id
72659          , p_ae_header_id             => l_ae_header_id 
72660 , p_source_11 => p_source_11
72661          , x_transaction_coa_id       => l_adr_transaction_coa_id
72662          , x_accounting_coa_id        => l_adr_accounting_coa_id
72663          , x_value_type_code          => l_adr_value_type_code
72664          , p_side                     => 'NA'
72665    );
72666 
72667    xla_ae_lines_pkg.set_ccid(
72668     p_code_combination_id          => l_ccid
72669   , p_value_type_code              => l_adr_value_type_code
72670   , p_transaction_coa_id           => l_adr_transaction_coa_id
72671   , p_accounting_coa_id            => l_adr_accounting_coa_id
72672   , p_adr_code                     => 'CST_DEFAULT'
72673   , p_adr_type_code                => 'S'
72674   , p_component_type               => l_component_type
72675   , p_component_code               => l_component_code
72676   , p_component_type_code          => l_component_type_code
72677   , p_component_appl_id            => l_component_appl_id
72678   , p_amb_context_code             => l_amb_context_code
72679   , p_side                         => 'NA'
72680   );
72681 
72682 
72683    --
72684    --
72685    END IF;
72686    --
72687    -- Bug 4922099
72688    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72689           (NVL(l_enc_upg_option, 'N') = 'O')
72690         ) AND
72691         (l_bflow_method_code = 'PRIOR_ENTRY')
72692       )
72693    THEN
72694       IF
72695       --
72696       1 = 2
72697       --
72698       THEN
72699       xla_accounting_err_pkg.build_message
72700                                     (p_appli_s_name            => 'XLA'
72701                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72702                                     ,p_token_1                 => 'LINE_NUMBER'
72703                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
72704                                     ,p_token_2                 => 'LINE_TYPE_NAME'
72705                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
72706                                                                              l_component_type
72707                                                                             ,l_component_code
72708                                                                             ,l_component_type_code
72709                                                                             ,l_component_appl_id
72710                                                                             ,l_amb_context_code
72711                                                                             ,l_entity_code
72712                                                                             ,l_event_class_code
72713                                                                            )
72714                                     ,p_token_3                 => 'OWNER'
72715                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72716                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72717                                                                           ,p_lookup_code    => l_component_type_code
72718                                                                          )
72719                                     ,p_token_4                 => 'PRODUCT_NAME'
72720                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72721                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72722                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72723                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72724                                     ,p_ae_header_id            =>  NULL
72725                                        );
72726 
72727         IF (C_LEVEL_ERROR>= g_log_level) THEN
72728                  trace
72729                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72730                       ,p_level    => C_LEVEL_ERROR
72731                       ,p_module   => l_log_module);
72732         END IF;
72733       END IF;
72734    END IF;
72735    --
72736    --
72737    ------------------------------------------------------------------------------------------------
72738    -- 4219869 Business Flow
72739    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72740    -- Prior Entry.  Currently, the following code is always generated.
72741    ------------------------------------------------------------------------------------------------
72742    XLA_AE_LINES_PKG.ValidateCurrentLine;
72743 
72744    ------------------------------------------------------------------------------------
72745    -- 4219869 Business Flow
72746    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72747    ------------------------------------------------------------------------------------
72748    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72749 
72750    ----------------------------------------------------------------------------------
72751    -- 4219869 Business Flow
72752    -- Update journal entry status -- Need to generate this within IF <condition>
72753    ----------------------------------------------------------------------------------
72754    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72755          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72756          ,p_balance_type_code => l_balance_type_code
72757          );
72758 
72759    -------------------------------------------------------------------------------------------
72760    -- 4262811 - Generate the Accrual Reversal lines
72761    -------------------------------------------------------------------------------------------
72762    BEGIN
72763       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72764                               (g_array_event(p_event_id).array_value_num('header_index'));
72765       IF l_acc_rev_flag IS NULL THEN
72766          l_acc_rev_flag := 'N';
72767       END IF;
72768    EXCEPTION
72769       WHEN OTHERS THEN
72770          l_acc_rev_flag := 'N';
72771    END;
72772    --
72773    IF (l_acc_rev_flag = 'Y') THEN
72774 
72775        -- 4645092  ------------------------------------------------------------------------------
72776        -- To allow MPA report to determine if it should generate report process
72777        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72778        ------------------------------------------------------------------------------------------
72779 
72780        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72781        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72782    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
72783    -- call ADRs
72784    -- Bug 4922099
72785    --
72786    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72787         (NVL(l_actual_upg_option, 'N') = 'O') OR
72788         (NVL(l_enc_upg_option, 'N') = 'O')
72789       )
72790    THEN
72791    NULL;
72792    --
72793    --
72794    
72795   l_ccid := AcctDerRule_6(
72796            p_application_id           => p_application_id
72797          , p_ae_header_id             => l_ae_header_id 
72798 , p_source_11 => p_source_11
72799          , x_transaction_coa_id       => l_adr_transaction_coa_id
72800          , x_accounting_coa_id        => l_adr_accounting_coa_id
72801          , x_value_type_code          => l_adr_value_type_code
72802          , p_side                     => 'NA'
72803    );
72804 
72805    xla_ae_lines_pkg.set_ccid(
72806     p_code_combination_id          => l_ccid
72807   , p_value_type_code              => l_adr_value_type_code
72808   , p_transaction_coa_id           => l_adr_transaction_coa_id
72809   , p_accounting_coa_id            => l_adr_accounting_coa_id
72810   , p_adr_code                     => 'CST_DEFAULT'
72811   , p_adr_type_code                => 'S'
72812   , p_component_type               => l_component_type
72813   , p_component_code               => l_component_code
72814   , p_component_type_code          => l_component_type_code
72815   , p_component_appl_id            => l_component_appl_id
72816   , p_amb_context_code             => l_amb_context_code
72817   , p_side                         => 'NA'
72818   );
72819 
72820 
72821    --
72822    --
72823    END IF;
72824 
72825        --
72826        -- Update the line information that should be overwritten
72827        --
72828        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72829                                          p_header_num   => 1);
72830        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72831 
72832        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72833 
72834        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72835           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72836        END IF;
72837 
72838       --
72839       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72840       --
72841       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72842           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72843       ELSE
72844           ---------------------------------------------------------------------------------------------------
72845           -- 4262811a Switch Sign
72846           ---------------------------------------------------------------------------------------------------
72847           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72848           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72849                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72850           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72851                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72852           -- 5132302
72853           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72854                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72855 
72856       END IF;
72857 
72858       -- 4955764
72859       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72860       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72861 
72862 
72863       XLA_AE_LINES_PKG.ValidateCurrentLine;
72864       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72865 
72866       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72867                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72868                ,p_balance_type_code => l_balance_type_code);
72869 
72870    END IF;
72871 
72872    -----------------------------------------------------------------------------------------
72873    -- 4262811 Multiperiod Accounting
72874    -----------------------------------------------------------------------------------------
72875      -- No MPA option is assigned.
72876 
72877 
72878 END IF;
72879 END IF;
72880 --
72881 
72882 --
72883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72884    trace
72885       (p_msg      => 'END of AcctLineType_152'
72886       ,p_level    => C_LEVEL_PROCEDURE
72887       ,p_module   => l_log_module);
72888 END IF;
72889 --
72890 EXCEPTION
72891   WHEN xla_exceptions_pkg.application_exception THEN
72892       RAISE;
72893   WHEN OTHERS THEN
72894        xla_exceptions_pkg.raise_message
72895            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_152');
72896 END AcctLineType_152;
72897 --
72898 
72899 ---------------------------------------
72900 --
72901 -- PRIVATE FUNCTION
72902 --         AcctLineType_153
72903 --
72904 ---------------------------------------
72905 PROCEDURE AcctLineType_153 (
72906   p_application_id        IN NUMBER
72907  ,p_event_id              IN NUMBER
72908  ,p_calculate_acctd_flag  IN VARCHAR2
72909  ,p_calculate_g_l_flag    IN VARCHAR2
72910  ,p_actual_flag           IN OUT VARCHAR2
72911  ,p_balance_type_code     OUT VARCHAR2
72912  ,p_gain_or_loss_ref      OUT VARCHAR2
72913  
72914 --TRANSACTION_ID
72915  , p_source_1            IN NUMBER
72916 --Item Concatenated Segments
72917  , p_source_2            IN VARCHAR2
72918 --Transaction Quantity
72919  , p_source_3            IN NUMBER
72920 --Transaction Unit of Measure Code
72921  , p_source_4            IN VARCHAR2
72922 --Inventory Transaction Type Description
72923  , p_source_5            IN VARCHAR2
72924 --Cost Management Default Account
72925  , p_source_11            IN NUMBER
72926 --DISTRIBUTION_IDENTIFIER
72927  , p_source_84            IN NUMBER
72928 --Distribution Type
72929  , p_source_85            IN VARCHAR2
72930  , p_source_85_meaning    IN VARCHAR2
72931 --Entered Currency Code
72932  , p_source_88            IN VARCHAR2
72933 --Entered Amount
72934  , p_source_91            IN NUMBER
72935 --Currency Conversion Date
72936  , p_source_92            IN DATE
72937 --Currency Conversion Rate
72938  , p_source_93            IN NUMBER
72939 --Currency Conversion Type
72940  , p_source_94            IN VARCHAR2
72941 --Accounted Amount
72942  , p_source_95            IN NUMBER
72943 --Accounting Line Type
72944  , p_source_97            IN NUMBER
72945 )
72946 IS
72947 
72948 l_component_type              VARCHAR2(80);
72949 l_component_code              VARCHAR2(30);
72950 l_component_type_code         VARCHAR2(1);
72951 l_component_appl_id           INTEGER;
72952 l_amb_context_code            VARCHAR2(30);
72953 l_entity_code                 VARCHAR2(30);
72954 l_event_class_code            VARCHAR2(30);
72955 l_ae_header_id                NUMBER;
72956 l_event_type_code             VARCHAR2(30);
72957 l_line_definition_code        VARCHAR2(30);
72958 l_line_definition_owner_code  VARCHAR2(1);
72959 --
72960 -- adr variables
72961 l_segment                     VARCHAR2(30);
72962 l_ccid                        NUMBER;
72963 l_adr_transaction_coa_id      NUMBER;
72964 l_adr_accounting_coa_id       NUMBER;
72965 l_adr_flexfield_segment_code  VARCHAR2(30);
72966 l_adr_flex_value_set_id       NUMBER;
72967 l_adr_value_type_code         VARCHAR2(30);
72968 l_adr_value_combination_id    NUMBER;
72969 l_adr_value_segment_code      VARCHAR2(30);
72970 
72971 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72972 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72973 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72974 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72975 
72976 -- 4262811 Variables ------------------------------------------------------------------------------------------
72977 l_entered_amt_idx             NUMBER;
72978 l_accted_amt_idx              NUMBER;
72979 l_acc_rev_flag                VARCHAR2(1);
72980 l_accrual_line_num            NUMBER;
72981 l_tmp_amt                     NUMBER;
72982 l_acc_rev_natural_side_code   VARCHAR2(1);
72983 
72984 l_num_entries                 NUMBER;
72985 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72986 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72987 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72988 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72989 l_recog_line_1                NUMBER;
72990 l_recog_line_2                NUMBER;
72991 
72992 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72993 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72994 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72995 
72996 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72997 
72998 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72999 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
73000 
73001 ---------------------------------------------------------------------------------------------------------------
73002 
73003 
73004 --
73005 -- bulk performance
73006 --
73007 l_balance_type_code           VARCHAR2(1);
73008 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
73009 l_log_module                  VARCHAR2(240);
73010 
73011 --
73012 -- Upgrade strategy
73013 --
73014 l_actual_upg_option           VARCHAR2(1);
73015 l_enc_upg_option           VARCHAR2(1);
73016 
73017 --
73018 BEGIN
73019 --
73020 IF g_log_enabled THEN
73021       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_153';
73022 END IF;
73023 --
73024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73025 
73026       trace
73027          (p_msg      => 'BEGIN of AcctLineType_153'
73028          ,p_level    => C_LEVEL_PROCEDURE
73029          ,p_module   => l_log_module);
73030 
73031 END IF;
73032 --
73033 l_component_type             := 'AMB_JLT';
73034 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
73035 l_component_type_code        := 'S';
73036 l_component_appl_id          :=  707;
73037 l_amb_context_code           := 'DEFAULT';
73038 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
73039 l_event_class_code           := 'USER_DEFINE';
73040 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
73041 l_line_definition_owner_code := 'S';
73042 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
73043 --
73044 l_balance_type_code          := 'A';
73045 l_segment                     := NULL;
73046 l_ccid                        := NULL;
73047 l_adr_transaction_coa_id      := NULL;
73048 l_adr_accounting_coa_id       := NULL;
73049 l_adr_flexfield_segment_code  := NULL;
73050 l_adr_flex_value_set_id       := NULL;
73051 l_adr_value_type_code         := NULL;
73052 l_adr_value_combination_id    := NULL;
73053 l_adr_value_segment_code      := NULL;
73054 
73055 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73056 l_bflow_class_code           := '';    -- 4219869 Business Flow
73057 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
73058 l_budgetary_control_flag     := 'N';
73059 
73060 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
73061 l_bflow_applied_to_amt       := NULL; -- 5132302
73062 l_entered_amt_idx            := NULL;          -- 4262811
73063 l_accted_amt_idx             := NULL;          -- 4262811
73064 l_acc_rev_flag               := NULL;          -- 4262811
73065 l_accrual_line_num           := NULL;          -- 4262811
73066 l_tmp_amt                    := NULL;          -- 4262811
73067 --
73068  
73069 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73070     l_balance_type_code <> 'B' THEN
73071 IF NVL(p_source_97,9E125) =  12
73072  THEN 
73073 
73074    --
73075    XLA_AE_LINES_PKG.SetNewLine;
73076 
73077    p_balance_type_code          := l_balance_type_code;
73078    -- set the flag so later we will know whether the gain loss line needs to be created
73079    
73080    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73081      p_actual_flag :='A';
73082    END IF;
73083 
73084    --
73085    -- bulk performance
73086    --
73087    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73088                                       p_header_num   => 0); -- 4262811
73089    --
73090    -- set accounting line options
73091    --
73092    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73093            p_natural_side_code          => 'D'
73094          , p_gain_or_loss_flag          => 'N'
73095          , p_gl_transfer_mode_code      => 'S'
73096          , p_acct_entry_type_code       => 'A'
73097          , p_switch_side_flag           => 'Y'
73098          , p_merge_duplicate_code       => 'N'
73099          );
73100    --
73101    l_acc_rev_natural_side_code := 'C';  -- 4262811
73102    -- 
73103    --
73104    -- set accounting line type info
73105    --
73106    xla_ae_lines_pkg.SetAcctLineType
73107       (p_component_type             => l_component_type
73108       ,p_event_type_code            => l_event_type_code
73109       ,p_line_definition_owner_code => l_line_definition_owner_code
73110       ,p_line_definition_code       => l_line_definition_code
73111       ,p_accounting_line_code       => l_component_code
73112       ,p_accounting_line_type_code  => l_component_type_code
73113       ,p_accounting_line_appl_id    => l_component_appl_id
73114       ,p_amb_context_code           => l_amb_context_code
73115       ,p_entity_code                => l_entity_code
73116       ,p_event_class_code           => l_event_class_code);
73117    --
73118    -- set accounting class
73119    --
73120    xla_ae_lines_pkg.SetAcctClass(
73121            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
73122          , p_ae_header_id           => l_ae_header_id
73123          );
73124 
73125    --
73126    -- set rounding class
73127    --
73128    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73129                       'INTERORG_FREIGHT_CHARGE';
73130 
73131    --
73132    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73133    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73134    --
73135    -- bulk performance
73136    --
73137    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73138 
73139    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73140       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73141 
73142    -- 4955764
73143    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73144       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73145 
73146    -- 4458381 Public Sector Enh
73147    
73148    --
73149    -- set accounting attributes for the line type
73150    --
73151    l_entered_amt_idx := 3;
73152    l_accted_amt_idx  := 8;
73153    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
73154    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73155    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
73156    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73157    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
73158    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73159    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
73160    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73161    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
73162    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73163    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
73164    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73165    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
73166    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73167    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
73168    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73169    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
73170 
73171    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73172    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73173 
73174    ---------------------------------------------------------------------------------------------------------------
73175    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73176    ---------------------------------------------------------------------------------------------------------------
73177    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73178 
73179    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73180    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73181 
73182    IF xla_accounting_cache_pkg.GetValueChar
73183          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73184          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73185    AND l_bflow_method_code = 'PRIOR_ENTRY'
73186 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73187    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73188          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73189        )
73190    THEN
73191          xla_ae_lines_pkg.BflowUpgEntry
73192            (p_business_method_code    => l_bflow_method_code
73193            ,p_business_class_code     => l_bflow_class_code
73194            ,p_balance_type            => l_balance_type_code);
73195    ELSE
73196       NULL;
73197 -- No business flow processing for business flow method of NONE.
73198    END IF;
73199 
73200    --
73201    -- call analytical criteria
73202    --
73203    
73204    --
73205    -- call description
73206    --
73207    
73208 xla_ae_lines_pkg.SetLineDescription(
73209    p_ae_header_id => l_ae_header_id
73210   ,p_description  => Description_1 (
73211      p_application_id         => p_application_id
73212    , p_ae_header_id           => l_ae_header_id 
73213 , p_source_1 => p_source_1
73214 , p_source_2 => p_source_2
73215 , p_source_3 => p_source_3
73216 , p_source_4 => p_source_4
73217 , p_source_5 => p_source_5
73218    )
73219 );
73220 
73221 
73222    --
73223    -- call ADRs
73224    -- Bug 4922099
73225    --
73226    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73227         (NVL(l_actual_upg_option, 'N') = 'O') OR
73228         (NVL(l_enc_upg_option, 'N') = 'O')
73229       )
73230    THEN
73231    NULL;
73232    --
73233    --
73234    
73235   l_ccid := AcctDerRule_6(
73236            p_application_id           => p_application_id
73237          , p_ae_header_id             => l_ae_header_id 
73238 , p_source_11 => p_source_11
73239          , x_transaction_coa_id       => l_adr_transaction_coa_id
73240          , x_accounting_coa_id        => l_adr_accounting_coa_id
73241          , x_value_type_code          => l_adr_value_type_code
73242          , p_side                     => 'NA'
73243    );
73244 
73245    xla_ae_lines_pkg.set_ccid(
73246     p_code_combination_id          => l_ccid
73247   , p_value_type_code              => l_adr_value_type_code
73248   , p_transaction_coa_id           => l_adr_transaction_coa_id
73249   , p_accounting_coa_id            => l_adr_accounting_coa_id
73250   , p_adr_code                     => 'CST_DEFAULT'
73251   , p_adr_type_code                => 'S'
73252   , p_component_type               => l_component_type
73253   , p_component_code               => l_component_code
73254   , p_component_type_code          => l_component_type_code
73255   , p_component_appl_id            => l_component_appl_id
73256   , p_amb_context_code             => l_amb_context_code
73257   , p_side                         => 'NA'
73258   );
73259 
73260 
73261    --
73262    --
73263    END IF;
73264    --
73265    -- Bug 4922099
73266    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73267           (NVL(l_enc_upg_option, 'N') = 'O')
73268         ) AND
73269         (l_bflow_method_code = 'PRIOR_ENTRY')
73270       )
73271    THEN
73272       IF
73273       --
73274       1 = 2
73275       --
73276       THEN
73277       xla_accounting_err_pkg.build_message
73278                                     (p_appli_s_name            => 'XLA'
73279                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73280                                     ,p_token_1                 => 'LINE_NUMBER'
73281                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73282                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73283                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73284                                                                              l_component_type
73285                                                                             ,l_component_code
73286                                                                             ,l_component_type_code
73287                                                                             ,l_component_appl_id
73288                                                                             ,l_amb_context_code
73289                                                                             ,l_entity_code
73290                                                                             ,l_event_class_code
73291                                                                            )
73292                                     ,p_token_3                 => 'OWNER'
73293                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73294                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73295                                                                           ,p_lookup_code    => l_component_type_code
73296                                                                          )
73297                                     ,p_token_4                 => 'PRODUCT_NAME'
73298                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73299                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73300                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73301                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73302                                     ,p_ae_header_id            =>  NULL
73303                                        );
73304 
73305         IF (C_LEVEL_ERROR>= g_log_level) THEN
73306                  trace
73307                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73308                       ,p_level    => C_LEVEL_ERROR
73309                       ,p_module   => l_log_module);
73310         END IF;
73311       END IF;
73312    END IF;
73313    --
73314    --
73315    ------------------------------------------------------------------------------------------------
73316    -- 4219869 Business Flow
73317    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73318    -- Prior Entry.  Currently, the following code is always generated.
73319    ------------------------------------------------------------------------------------------------
73320    XLA_AE_LINES_PKG.ValidateCurrentLine;
73321 
73322    ------------------------------------------------------------------------------------
73323    -- 4219869 Business Flow
73324    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73325    ------------------------------------------------------------------------------------
73326    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73327 
73328    ----------------------------------------------------------------------------------
73329    -- 4219869 Business Flow
73330    -- Update journal entry status -- Need to generate this within IF <condition>
73331    ----------------------------------------------------------------------------------
73332    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73333          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73334          ,p_balance_type_code => l_balance_type_code
73335          );
73336 
73337    -------------------------------------------------------------------------------------------
73338    -- 4262811 - Generate the Accrual Reversal lines
73339    -------------------------------------------------------------------------------------------
73340    BEGIN
73341       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73342                               (g_array_event(p_event_id).array_value_num('header_index'));
73343       IF l_acc_rev_flag IS NULL THEN
73344          l_acc_rev_flag := 'N';
73345       END IF;
73346    EXCEPTION
73347       WHEN OTHERS THEN
73348          l_acc_rev_flag := 'N';
73349    END;
73350    --
73351    IF (l_acc_rev_flag = 'Y') THEN
73352 
73353        -- 4645092  ------------------------------------------------------------------------------
73354        -- To allow MPA report to determine if it should generate report process
73355        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73356        ------------------------------------------------------------------------------------------
73357 
73358        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73359        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73360    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
73361    -- call ADRs
73362    -- Bug 4922099
73363    --
73364    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73365         (NVL(l_actual_upg_option, 'N') = 'O') OR
73366         (NVL(l_enc_upg_option, 'N') = 'O')
73367       )
73368    THEN
73369    NULL;
73370    --
73371    --
73372    
73373   l_ccid := AcctDerRule_6(
73374            p_application_id           => p_application_id
73375          , p_ae_header_id             => l_ae_header_id 
73376 , p_source_11 => p_source_11
73377          , x_transaction_coa_id       => l_adr_transaction_coa_id
73378          , x_accounting_coa_id        => l_adr_accounting_coa_id
73379          , x_value_type_code          => l_adr_value_type_code
73380          , p_side                     => 'NA'
73381    );
73382 
73383    xla_ae_lines_pkg.set_ccid(
73384     p_code_combination_id          => l_ccid
73385   , p_value_type_code              => l_adr_value_type_code
73386   , p_transaction_coa_id           => l_adr_transaction_coa_id
73387   , p_accounting_coa_id            => l_adr_accounting_coa_id
73388   , p_adr_code                     => 'CST_DEFAULT'
73389   , p_adr_type_code                => 'S'
73390   , p_component_type               => l_component_type
73391   , p_component_code               => l_component_code
73392   , p_component_type_code          => l_component_type_code
73393   , p_component_appl_id            => l_component_appl_id
73394   , p_amb_context_code             => l_amb_context_code
73395   , p_side                         => 'NA'
73396   );
73397 
73398 
73399    --
73400    --
73401    END IF;
73402 
73403        --
73404        -- Update the line information that should be overwritten
73405        --
73406        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73407                                          p_header_num   => 1);
73408        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73409 
73410        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73411 
73412        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73413           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73414        END IF;
73415 
73416       --
73417       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73418       --
73419       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73420           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73421       ELSE
73422           ---------------------------------------------------------------------------------------------------
73423           -- 4262811a Switch Sign
73424           ---------------------------------------------------------------------------------------------------
73425           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
73426           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73427                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73428           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73429                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73430           -- 5132302
73431           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73432                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73433 
73434       END IF;
73435 
73436       -- 4955764
73437       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73438       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73439 
73440 
73441       XLA_AE_LINES_PKG.ValidateCurrentLine;
73442       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73443 
73444       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73445                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73446                ,p_balance_type_code => l_balance_type_code);
73447 
73448    END IF;
73449 
73450    -----------------------------------------------------------------------------------------
73451    -- 4262811 Multiperiod Accounting
73452    -----------------------------------------------------------------------------------------
73453      -- No MPA option is assigned.
73454 
73455 
73456 END IF;
73457 END IF;
73458 --
73459 
73460 --
73461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73462    trace
73463       (p_msg      => 'END of AcctLineType_153'
73464       ,p_level    => C_LEVEL_PROCEDURE
73465       ,p_module   => l_log_module);
73466 END IF;
73467 --
73468 EXCEPTION
73469   WHEN xla_exceptions_pkg.application_exception THEN
73470       RAISE;
73471   WHEN OTHERS THEN
73472        xla_exceptions_pkg.raise_message
73473            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_153');
73474 END AcctLineType_153;
73475 --
73476 
73477 ---------------------------------------
73478 --
73479 -- PRIVATE FUNCTION
73480 --         AcctLineType_154
73481 --
73482 ---------------------------------------
73483 PROCEDURE AcctLineType_154 (
73484   p_application_id        IN NUMBER
73485  ,p_event_id              IN NUMBER
73486  ,p_calculate_acctd_flag  IN VARCHAR2
73487  ,p_calculate_g_l_flag    IN VARCHAR2
73488  ,p_actual_flag           IN OUT VARCHAR2
73489  ,p_balance_type_code     OUT VARCHAR2
73490  ,p_gain_or_loss_ref      OUT VARCHAR2
73491  
73492 --TRANSACTION_ID
73493  , p_source_1            IN NUMBER
73494 --Item Concatenated Segments
73495  , p_source_2            IN VARCHAR2
73496 --Transaction Quantity
73497  , p_source_3            IN NUMBER
73498 --Transaction Unit of Measure Code
73499  , p_source_4            IN VARCHAR2
73500 --Inventory Transaction Type Description
73501  , p_source_5            IN VARCHAR2
73502 --Cost Management Default Account
73503  , p_source_11            IN NUMBER
73504 --DISTRIBUTION_IDENTIFIER
73505  , p_source_84            IN NUMBER
73506 --Distribution Type
73507  , p_source_85            IN VARCHAR2
73508  , p_source_85_meaning    IN VARCHAR2
73509 --Entered Currency Code
73510  , p_source_88            IN VARCHAR2
73511 --Entered Amount
73512  , p_source_91            IN NUMBER
73513 --Currency Conversion Date
73514  , p_source_92            IN DATE
73515 --Currency Conversion Rate
73516  , p_source_93            IN NUMBER
73517 --Currency Conversion Type
73518  , p_source_94            IN VARCHAR2
73519 --Accounted Amount
73520  , p_source_95            IN NUMBER
73521 --Accounting Line Type
73522  , p_source_97            IN NUMBER
73523 )
73524 IS
73525 
73526 l_component_type              VARCHAR2(80);
73527 l_component_code              VARCHAR2(30);
73528 l_component_type_code         VARCHAR2(1);
73529 l_component_appl_id           INTEGER;
73530 l_amb_context_code            VARCHAR2(30);
73531 l_entity_code                 VARCHAR2(30);
73532 l_event_class_code            VARCHAR2(30);
73533 l_ae_header_id                NUMBER;
73534 l_event_type_code             VARCHAR2(30);
73535 l_line_definition_code        VARCHAR2(30);
73536 l_line_definition_owner_code  VARCHAR2(1);
73537 --
73538 -- adr variables
73539 l_segment                     VARCHAR2(30);
73540 l_ccid                        NUMBER;
73541 l_adr_transaction_coa_id      NUMBER;
73542 l_adr_accounting_coa_id       NUMBER;
73543 l_adr_flexfield_segment_code  VARCHAR2(30);
73544 l_adr_flex_value_set_id       NUMBER;
73545 l_adr_value_type_code         VARCHAR2(30);
73546 l_adr_value_combination_id    NUMBER;
73547 l_adr_value_segment_code      VARCHAR2(30);
73548 
73549 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
73550 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
73551 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
73552 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
73553 
73554 -- 4262811 Variables ------------------------------------------------------------------------------------------
73555 l_entered_amt_idx             NUMBER;
73556 l_accted_amt_idx              NUMBER;
73557 l_acc_rev_flag                VARCHAR2(1);
73558 l_accrual_line_num            NUMBER;
73559 l_tmp_amt                     NUMBER;
73560 l_acc_rev_natural_side_code   VARCHAR2(1);
73561 
73562 l_num_entries                 NUMBER;
73563 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
73564 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
73565 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
73566 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
73567 l_recog_line_1                NUMBER;
73568 l_recog_line_2                NUMBER;
73569 
73570 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
73571 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
73572 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
73573 
73574 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73575 
73576 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
73577 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
73578 
73579 ---------------------------------------------------------------------------------------------------------------
73580 
73581 
73582 --
73583 -- bulk performance
73584 --
73585 l_balance_type_code           VARCHAR2(1);
73586 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
73587 l_log_module                  VARCHAR2(240);
73588 
73589 --
73590 -- Upgrade strategy
73591 --
73592 l_actual_upg_option           VARCHAR2(1);
73593 l_enc_upg_option           VARCHAR2(1);
73594 
73595 --
73596 BEGIN
73597 --
73598 IF g_log_enabled THEN
73599       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_154';
73600 END IF;
73601 --
73602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73603 
73604       trace
73605          (p_msg      => 'BEGIN of AcctLineType_154'
73606          ,p_level    => C_LEVEL_PROCEDURE
73607          ,p_module   => l_log_module);
73608 
73609 END IF;
73610 --
73611 l_component_type             := 'AMB_JLT';
73612 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
73613 l_component_type_code        := 'S';
73614 l_component_appl_id          :=  707;
73615 l_amb_context_code           := 'DEFAULT';
73616 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
73617 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
73618 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
73619 l_line_definition_owner_code := 'S';
73620 l_line_definition_code       := 'PI_RCPT_SENDER_RCPT_TP';
73621 --
73622 l_balance_type_code          := 'A';
73623 l_segment                     := NULL;
73624 l_ccid                        := NULL;
73625 l_adr_transaction_coa_id      := NULL;
73626 l_adr_accounting_coa_id       := NULL;
73627 l_adr_flexfield_segment_code  := NULL;
73628 l_adr_flex_value_set_id       := NULL;
73629 l_adr_value_type_code         := NULL;
73630 l_adr_value_combination_id    := NULL;
73631 l_adr_value_segment_code      := NULL;
73632 
73633 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73634 l_bflow_class_code           := '';    -- 4219869 Business Flow
73635 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
73636 l_budgetary_control_flag     := 'N';
73637 
73638 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
73639 l_bflow_applied_to_amt       := NULL; -- 5132302
73640 l_entered_amt_idx            := NULL;          -- 4262811
73641 l_accted_amt_idx             := NULL;          -- 4262811
73642 l_acc_rev_flag               := NULL;          -- 4262811
73643 l_accrual_line_num           := NULL;          -- 4262811
73644 l_tmp_amt                    := NULL;          -- 4262811
73645 --
73646  
73647 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73648     l_balance_type_code <> 'B' THEN
73649 IF NVL(p_source_97,9E125) =  12
73650  THEN 
73651 
73652    --
73653    XLA_AE_LINES_PKG.SetNewLine;
73654 
73655    p_balance_type_code          := l_balance_type_code;
73656    -- set the flag so later we will know whether the gain loss line needs to be created
73657    
73658    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73659      p_actual_flag :='A';
73660    END IF;
73661 
73662    --
73663    -- bulk performance
73664    --
73665    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73666                                       p_header_num   => 0); -- 4262811
73667    --
73668    -- set accounting line options
73669    --
73670    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73671            p_natural_side_code          => 'D'
73672          , p_gain_or_loss_flag          => 'N'
73673          , p_gl_transfer_mode_code      => 'S'
73674          , p_acct_entry_type_code       => 'A'
73675          , p_switch_side_flag           => 'Y'
73676          , p_merge_duplicate_code       => 'N'
73677          );
73678    --
73679    l_acc_rev_natural_side_code := 'C';  -- 4262811
73680    -- 
73681    --
73682    -- set accounting line type info
73683    --
73684    xla_ae_lines_pkg.SetAcctLineType
73685       (p_component_type             => l_component_type
73686       ,p_event_type_code            => l_event_type_code
73687       ,p_line_definition_owner_code => l_line_definition_owner_code
73688       ,p_line_definition_code       => l_line_definition_code
73689       ,p_accounting_line_code       => l_component_code
73690       ,p_accounting_line_type_code  => l_component_type_code
73691       ,p_accounting_line_appl_id    => l_component_appl_id
73692       ,p_amb_context_code           => l_amb_context_code
73693       ,p_entity_code                => l_entity_code
73694       ,p_event_class_code           => l_event_class_code);
73695    --
73696    -- set accounting class
73697    --
73698    xla_ae_lines_pkg.SetAcctClass(
73699            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
73700          , p_ae_header_id           => l_ae_header_id
73701          );
73702 
73703    --
73704    -- set rounding class
73705    --
73706    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73707                       'INTERORG_FREIGHT_CHARGE';
73708 
73709    --
73710    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73711    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73712    --
73713    -- bulk performance
73714    --
73715    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73716 
73717    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73718       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73719 
73720    -- 4955764
73721    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73722       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73723 
73724    -- 4458381 Public Sector Enh
73725    
73726    --
73727    -- set accounting attributes for the line type
73728    --
73729    l_entered_amt_idx := 3;
73730    l_accted_amt_idx  := 8;
73731    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
73732    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73733    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
73734    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73735    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
73736    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73737    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
73738    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73739    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
73740    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73741    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
73742    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73743    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
73744    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73745    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
73746    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73747    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
73748 
73749    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73750    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73751 
73752    ---------------------------------------------------------------------------------------------------------------
73753    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73754    ---------------------------------------------------------------------------------------------------------------
73755    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73756 
73757    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73758    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73759 
73760    IF xla_accounting_cache_pkg.GetValueChar
73761          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73762          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73763    AND l_bflow_method_code = 'PRIOR_ENTRY'
73764 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73765    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73766          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73767        )
73768    THEN
73769          xla_ae_lines_pkg.BflowUpgEntry
73770            (p_business_method_code    => l_bflow_method_code
73771            ,p_business_class_code     => l_bflow_class_code
73772            ,p_balance_type            => l_balance_type_code);
73773    ELSE
73774       NULL;
73775 -- No business flow processing for business flow method of NONE.
73776    END IF;
73777 
73778    --
73779    -- call analytical criteria
73780    --
73781    
73782    --
73783    -- call description
73784    --
73785    
73786 xla_ae_lines_pkg.SetLineDescription(
73787    p_ae_header_id => l_ae_header_id
73788   ,p_description  => Description_1 (
73789      p_application_id         => p_application_id
73790    , p_ae_header_id           => l_ae_header_id 
73791 , p_source_1 => p_source_1
73792 , p_source_2 => p_source_2
73793 , p_source_3 => p_source_3
73794 , p_source_4 => p_source_4
73795 , p_source_5 => p_source_5
73796    )
73797 );
73798 
73799 
73800    --
73801    -- call ADRs
73802    -- Bug 4922099
73803    --
73804    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73805         (NVL(l_actual_upg_option, 'N') = 'O') OR
73806         (NVL(l_enc_upg_option, 'N') = 'O')
73807       )
73808    THEN
73809    NULL;
73810    --
73811    --
73812    
73813   l_ccid := AcctDerRule_6(
73814            p_application_id           => p_application_id
73815          , p_ae_header_id             => l_ae_header_id 
73816 , p_source_11 => p_source_11
73817          , x_transaction_coa_id       => l_adr_transaction_coa_id
73818          , x_accounting_coa_id        => l_adr_accounting_coa_id
73819          , x_value_type_code          => l_adr_value_type_code
73820          , p_side                     => 'NA'
73821    );
73822 
73823    xla_ae_lines_pkg.set_ccid(
73824     p_code_combination_id          => l_ccid
73825   , p_value_type_code              => l_adr_value_type_code
73826   , p_transaction_coa_id           => l_adr_transaction_coa_id
73827   , p_accounting_coa_id            => l_adr_accounting_coa_id
73828   , p_adr_code                     => 'CST_DEFAULT'
73829   , p_adr_type_code                => 'S'
73830   , p_component_type               => l_component_type
73831   , p_component_code               => l_component_code
73832   , p_component_type_code          => l_component_type_code
73833   , p_component_appl_id            => l_component_appl_id
73834   , p_amb_context_code             => l_amb_context_code
73835   , p_side                         => 'NA'
73836   );
73837 
73838 
73839    --
73840    --
73841    END IF;
73842    --
73843    -- Bug 4922099
73844    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73845           (NVL(l_enc_upg_option, 'N') = 'O')
73846         ) AND
73847         (l_bflow_method_code = 'PRIOR_ENTRY')
73848       )
73849    THEN
73850       IF
73851       --
73852       1 = 2
73853       --
73854       THEN
73855       xla_accounting_err_pkg.build_message
73856                                     (p_appli_s_name            => 'XLA'
73857                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73858                                     ,p_token_1                 => 'LINE_NUMBER'
73859                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73860                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73861                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73862                                                                              l_component_type
73863                                                                             ,l_component_code
73864                                                                             ,l_component_type_code
73865                                                                             ,l_component_appl_id
73866                                                                             ,l_amb_context_code
73867                                                                             ,l_entity_code
73868                                                                             ,l_event_class_code
73869                                                                            )
73870                                     ,p_token_3                 => 'OWNER'
73871                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73872                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73873                                                                           ,p_lookup_code    => l_component_type_code
73874                                                                          )
73875                                     ,p_token_4                 => 'PRODUCT_NAME'
73876                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73877                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73878                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73879                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73880                                     ,p_ae_header_id            =>  NULL
73881                                        );
73882 
73883         IF (C_LEVEL_ERROR>= g_log_level) THEN
73884                  trace
73885                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73886                       ,p_level    => C_LEVEL_ERROR
73887                       ,p_module   => l_log_module);
73888         END IF;
73889       END IF;
73890    END IF;
73891    --
73892    --
73893    ------------------------------------------------------------------------------------------------
73894    -- 4219869 Business Flow
73895    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73896    -- Prior Entry.  Currently, the following code is always generated.
73897    ------------------------------------------------------------------------------------------------
73898    XLA_AE_LINES_PKG.ValidateCurrentLine;
73899 
73900    ------------------------------------------------------------------------------------
73901    -- 4219869 Business Flow
73902    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73903    ------------------------------------------------------------------------------------
73904    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73905 
73906    ----------------------------------------------------------------------------------
73907    -- 4219869 Business Flow
73908    -- Update journal entry status -- Need to generate this within IF <condition>
73909    ----------------------------------------------------------------------------------
73910    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73911          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73912          ,p_balance_type_code => l_balance_type_code
73913          );
73914 
73915    -------------------------------------------------------------------------------------------
73916    -- 4262811 - Generate the Accrual Reversal lines
73917    -------------------------------------------------------------------------------------------
73918    BEGIN
73919       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73920                               (g_array_event(p_event_id).array_value_num('header_index'));
73921       IF l_acc_rev_flag IS NULL THEN
73922          l_acc_rev_flag := 'N';
73923       END IF;
73924    EXCEPTION
73925       WHEN OTHERS THEN
73926          l_acc_rev_flag := 'N';
73927    END;
73928    --
73929    IF (l_acc_rev_flag = 'Y') THEN
73930 
73931        -- 4645092  ------------------------------------------------------------------------------
73932        -- To allow MPA report to determine if it should generate report process
73933        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73934        ------------------------------------------------------------------------------------------
73935 
73936        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73937        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73938    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
73939    -- call ADRs
73940    -- Bug 4922099
73941    --
73942    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73943         (NVL(l_actual_upg_option, 'N') = 'O') OR
73944         (NVL(l_enc_upg_option, 'N') = 'O')
73945       )
73946    THEN
73947    NULL;
73948    --
73949    --
73950    
73951   l_ccid := AcctDerRule_6(
73952            p_application_id           => p_application_id
73953          , p_ae_header_id             => l_ae_header_id 
73954 , p_source_11 => p_source_11
73955          , x_transaction_coa_id       => l_adr_transaction_coa_id
73956          , x_accounting_coa_id        => l_adr_accounting_coa_id
73957          , x_value_type_code          => l_adr_value_type_code
73958          , p_side                     => 'NA'
73959    );
73960 
73961    xla_ae_lines_pkg.set_ccid(
73962     p_code_combination_id          => l_ccid
73963   , p_value_type_code              => l_adr_value_type_code
73964   , p_transaction_coa_id           => l_adr_transaction_coa_id
73965   , p_accounting_coa_id            => l_adr_accounting_coa_id
73966   , p_adr_code                     => 'CST_DEFAULT'
73967   , p_adr_type_code                => 'S'
73968   , p_component_type               => l_component_type
73969   , p_component_code               => l_component_code
73970   , p_component_type_code          => l_component_type_code
73971   , p_component_appl_id            => l_component_appl_id
73972   , p_amb_context_code             => l_amb_context_code
73973   , p_side                         => 'NA'
73974   );
73975 
73976 
73977    --
73978    --
73979    END IF;
73980 
73981        --
73982        -- Update the line information that should be overwritten
73983        --
73984        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73985                                          p_header_num   => 1);
73986        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73987 
73988        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73989 
73990        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73991           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73992        END IF;
73993 
73994       --
73995       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73996       --
73997       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73998           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73999       ELSE
74000           ---------------------------------------------------------------------------------------------------
74001           -- 4262811a Switch Sign
74002           ---------------------------------------------------------------------------------------------------
74003           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
74004           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74005                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74006           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74007                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74008           -- 5132302
74009           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74010                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74011 
74012       END IF;
74013 
74014       -- 4955764
74015       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74017 
74018 
74019       XLA_AE_LINES_PKG.ValidateCurrentLine;
74020       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74021 
74022       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74023                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74024                ,p_balance_type_code => l_balance_type_code);
74025 
74026    END IF;
74027 
74028    -----------------------------------------------------------------------------------------
74029    -- 4262811 Multiperiod Accounting
74030    -----------------------------------------------------------------------------------------
74031      -- No MPA option is assigned.
74032 
74033 
74034 END IF;
74035 END IF;
74036 --
74037 
74038 --
74039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74040    trace
74041       (p_msg      => 'END of AcctLineType_154'
74042       ,p_level    => C_LEVEL_PROCEDURE
74043       ,p_module   => l_log_module);
74044 END IF;
74045 --
74046 EXCEPTION
74047   WHEN xla_exceptions_pkg.application_exception THEN
74048       RAISE;
74049   WHEN OTHERS THEN
74050        xla_exceptions_pkg.raise_message
74051            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_154');
74052 END AcctLineType_154;
74053 --
74054 
74055 ---------------------------------------
74056 --
74057 -- PRIVATE FUNCTION
74058 --         AcctLineType_155
74059 --
74060 ---------------------------------------
74061 PROCEDURE AcctLineType_155 (
74062   p_application_id        IN NUMBER
74063  ,p_event_id              IN NUMBER
74064  ,p_calculate_acctd_flag  IN VARCHAR2
74065  ,p_calculate_g_l_flag    IN VARCHAR2
74066  ,p_actual_flag           IN OUT VARCHAR2
74067  ,p_balance_type_code     OUT VARCHAR2
74068  ,p_gain_or_loss_ref      OUT VARCHAR2
74069  
74070 --TRANSACTION_ID
74071  , p_source_1            IN NUMBER
74072 --Item Concatenated Segments
74073  , p_source_2            IN VARCHAR2
74074 --Transaction Quantity
74075  , p_source_3            IN NUMBER
74076 --Transaction Unit of Measure Code
74077  , p_source_4            IN VARCHAR2
74078 --Inventory Transaction Type Description
74079  , p_source_5            IN VARCHAR2
74080 --Transaction Transportation Distribution Account
74081  , p_source_32            IN NUMBER
74082 --DISTRIBUTION_IDENTIFIER
74083  , p_source_84            IN NUMBER
74084 --Distribution Type
74085  , p_source_85            IN VARCHAR2
74086  , p_source_85_meaning    IN VARCHAR2
74087 --Entered Currency Code
74088  , p_source_88            IN VARCHAR2
74089 --Entered Amount
74090  , p_source_91            IN NUMBER
74091 --Currency Conversion Date
74092  , p_source_92            IN DATE
74093 --Currency Conversion Rate
74094  , p_source_93            IN NUMBER
74095 --Currency Conversion Type
74096  , p_source_94            IN VARCHAR2
74097 --Accounted Amount
74098  , p_source_95            IN NUMBER
74099 --Accounting Line Type
74100  , p_source_97            IN NUMBER
74101 )
74102 IS
74103 
74104 l_component_type              VARCHAR2(80);
74105 l_component_code              VARCHAR2(30);
74106 l_component_type_code         VARCHAR2(1);
74107 l_component_appl_id           INTEGER;
74108 l_amb_context_code            VARCHAR2(30);
74109 l_entity_code                 VARCHAR2(30);
74110 l_event_class_code            VARCHAR2(30);
74111 l_ae_header_id                NUMBER;
74112 l_event_type_code             VARCHAR2(30);
74113 l_line_definition_code        VARCHAR2(30);
74114 l_line_definition_owner_code  VARCHAR2(1);
74115 --
74116 -- adr variables
74117 l_segment                     VARCHAR2(30);
74118 l_ccid                        NUMBER;
74119 l_adr_transaction_coa_id      NUMBER;
74120 l_adr_accounting_coa_id       NUMBER;
74121 l_adr_flexfield_segment_code  VARCHAR2(30);
74122 l_adr_flex_value_set_id       NUMBER;
74123 l_adr_value_type_code         VARCHAR2(30);
74124 l_adr_value_combination_id    NUMBER;
74125 l_adr_value_segment_code      VARCHAR2(30);
74126 
74127 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
74128 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
74129 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
74130 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
74131 
74132 -- 4262811 Variables ------------------------------------------------------------------------------------------
74133 l_entered_amt_idx             NUMBER;
74134 l_accted_amt_idx              NUMBER;
74135 l_acc_rev_flag                VARCHAR2(1);
74136 l_accrual_line_num            NUMBER;
74137 l_tmp_amt                     NUMBER;
74138 l_acc_rev_natural_side_code   VARCHAR2(1);
74139 
74140 l_num_entries                 NUMBER;
74141 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
74142 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
74143 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
74144 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
74145 l_recog_line_1                NUMBER;
74146 l_recog_line_2                NUMBER;
74147 
74148 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
74149 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
74150 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
74151 
74152 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74153 
74154 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
74155 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
74156 
74157 ---------------------------------------------------------------------------------------------------------------
74158 
74159 
74160 --
74161 -- bulk performance
74162 --
74163 l_balance_type_code           VARCHAR2(1);
74164 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
74165 l_log_module                  VARCHAR2(240);
74166 
74167 --
74168 -- Upgrade strategy
74169 --
74170 l_actual_upg_option           VARCHAR2(1);
74171 l_enc_upg_option           VARCHAR2(1);
74172 
74173 --
74174 BEGIN
74175 --
74176 IF g_log_enabled THEN
74177       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_155';
74178 END IF;
74179 --
74180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74181 
74182       trace
74183          (p_msg      => 'BEGIN of AcctLineType_155'
74184          ,p_level    => C_LEVEL_PROCEDURE
74185          ,p_module   => l_log_module);
74186 
74187 END IF;
74188 --
74189 l_component_type             := 'AMB_JLT';
74190 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
74191 l_component_type_code        := 'S';
74192 l_component_appl_id          :=  707;
74193 l_amb_context_code           := 'DEFAULT';
74194 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
74195 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
74196 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
74197 l_line_definition_owner_code := 'S';
74198 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
74199 --
74200 l_balance_type_code          := 'A';
74201 l_segment                     := NULL;
74202 l_ccid                        := NULL;
74203 l_adr_transaction_coa_id      := NULL;
74204 l_adr_accounting_coa_id       := NULL;
74205 l_adr_flexfield_segment_code  := NULL;
74206 l_adr_flex_value_set_id       := NULL;
74207 l_adr_value_type_code         := NULL;
74208 l_adr_value_combination_id    := NULL;
74209 l_adr_value_segment_code      := NULL;
74210 
74211 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
74212 l_bflow_class_code           := '';    -- 4219869 Business Flow
74213 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74214 l_budgetary_control_flag     := 'N';
74215 
74216 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74217 l_bflow_applied_to_amt       := NULL; -- 5132302
74218 l_entered_amt_idx            := NULL;          -- 4262811
74219 l_accted_amt_idx             := NULL;          -- 4262811
74220 l_acc_rev_flag               := NULL;          -- 4262811
74221 l_accrual_line_num           := NULL;          -- 4262811
74222 l_tmp_amt                    := NULL;          -- 4262811
74223 --
74224  
74225 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74226     l_balance_type_code <> 'B' THEN
74227 IF NVL(p_source_97,9E125) =  12
74228  THEN 
74229 
74230    --
74231    XLA_AE_LINES_PKG.SetNewLine;
74232 
74233    p_balance_type_code          := l_balance_type_code;
74234    -- set the flag so later we will know whether the gain loss line needs to be created
74235    
74236    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74237      p_actual_flag :='A';
74238    END IF;
74239 
74240    --
74241    -- bulk performance
74242    --
74243    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74244                                       p_header_num   => 0); -- 4262811
74245    --
74246    -- set accounting line options
74247    --
74248    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74249            p_natural_side_code          => 'D'
74250          , p_gain_or_loss_flag          => 'N'
74251          , p_gl_transfer_mode_code      => 'S'
74252          , p_acct_entry_type_code       => 'A'
74253          , p_switch_side_flag           => 'Y'
74254          , p_merge_duplicate_code       => 'N'
74255          );
74256    --
74257    l_acc_rev_natural_side_code := 'C';  -- 4262811
74258    -- 
74259    --
74260    -- set accounting line type info
74261    --
74262    xla_ae_lines_pkg.SetAcctLineType
74263       (p_component_type             => l_component_type
74264       ,p_event_type_code            => l_event_type_code
74265       ,p_line_definition_owner_code => l_line_definition_owner_code
74266       ,p_line_definition_code       => l_line_definition_code
74267       ,p_accounting_line_code       => l_component_code
74268       ,p_accounting_line_type_code  => l_component_type_code
74269       ,p_accounting_line_appl_id    => l_component_appl_id
74270       ,p_amb_context_code           => l_amb_context_code
74271       ,p_entity_code                => l_entity_code
74272       ,p_event_class_code           => l_event_class_code);
74273    --
74274    -- set accounting class
74275    --
74276    xla_ae_lines_pkg.SetAcctClass(
74277            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
74278          , p_ae_header_id           => l_ae_header_id
74279          );
74280 
74281    --
74282    -- set rounding class
74283    --
74284    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74285                       'INTERORG_FREIGHT_CHARGE';
74286 
74287    --
74288    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74289    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74290    --
74291    -- bulk performance
74292    --
74293    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74294 
74295    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74296       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74297 
74298    -- 4955764
74299    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74300       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74301 
74302    -- 4458381 Public Sector Enh
74303    
74304    --
74305    -- set accounting attributes for the line type
74306    --
74307    l_entered_amt_idx := 3;
74308    l_accted_amt_idx  := 8;
74309    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74310    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74311    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
74312    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74313    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
74314    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74315    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
74316    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74317    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
74318    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74319    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
74320    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74321    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
74322    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74323    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
74324    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74325    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
74326 
74327    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74328    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74329 
74330    ---------------------------------------------------------------------------------------------------------------
74331    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74332    ---------------------------------------------------------------------------------------------------------------
74333    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74334 
74335    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74336    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74337 
74338    IF xla_accounting_cache_pkg.GetValueChar
74339          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74340          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74341    AND l_bflow_method_code = 'PRIOR_ENTRY'
74342 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74343    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74344          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74345        )
74346    THEN
74347          xla_ae_lines_pkg.BflowUpgEntry
74348            (p_business_method_code    => l_bflow_method_code
74349            ,p_business_class_code     => l_bflow_class_code
74350            ,p_balance_type            => l_balance_type_code);
74351    ELSE
74352       NULL;
74353 -- No business flow processing for business flow method of NONE.
74354    END IF;
74355 
74356    --
74357    -- call analytical criteria
74358    --
74359    
74360    --
74361    -- call description
74362    --
74363    
74364 xla_ae_lines_pkg.SetLineDescription(
74365    p_ae_header_id => l_ae_header_id
74366   ,p_description  => Description_1 (
74367      p_application_id         => p_application_id
74368    , p_ae_header_id           => l_ae_header_id 
74369 , p_source_1 => p_source_1
74370 , p_source_2 => p_source_2
74371 , p_source_3 => p_source_3
74372 , p_source_4 => p_source_4
74373 , p_source_5 => p_source_5
74374    )
74375 );
74376 
74377 
74378    --
74379    -- call ADRs
74380    -- Bug 4922099
74381    --
74382    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74383         (NVL(l_actual_upg_option, 'N') = 'O') OR
74384         (NVL(l_enc_upg_option, 'N') = 'O')
74385       )
74386    THEN
74387    NULL;
74388    --
74389    --
74390    
74391   l_ccid := AcctDerRule_17(
74392            p_application_id           => p_application_id
74393          , p_ae_header_id             => l_ae_header_id 
74394 , p_source_32 => p_source_32
74395          , x_transaction_coa_id       => l_adr_transaction_coa_id
74396          , x_accounting_coa_id        => l_adr_accounting_coa_id
74397          , x_value_type_code          => l_adr_value_type_code
74398          , p_side                     => 'NA'
74399    );
74400 
74401    xla_ae_lines_pkg.set_ccid(
74402     p_code_combination_id          => l_ccid
74403   , p_value_type_code              => l_adr_value_type_code
74404   , p_transaction_coa_id           => l_adr_transaction_coa_id
74405   , p_accounting_coa_id            => l_adr_accounting_coa_id
74406   , p_adr_code                     => 'PI_FREIGHT'
74407   , p_adr_type_code                => 'S'
74408   , p_component_type               => l_component_type
74409   , p_component_code               => l_component_code
74410   , p_component_type_code          => l_component_type_code
74411   , p_component_appl_id            => l_component_appl_id
74412   , p_amb_context_code             => l_amb_context_code
74413   , p_side                         => 'NA'
74414   );
74415 
74416 
74417    --
74418    --
74419    END IF;
74420    --
74421    -- Bug 4922099
74422    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74423           (NVL(l_enc_upg_option, 'N') = 'O')
74424         ) AND
74425         (l_bflow_method_code = 'PRIOR_ENTRY')
74426       )
74427    THEN
74428       IF
74429       --
74430       1 = 2
74431       --
74432       THEN
74433       xla_accounting_err_pkg.build_message
74434                                     (p_appli_s_name            => 'XLA'
74435                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74436                                     ,p_token_1                 => 'LINE_NUMBER'
74437                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
74438                                     ,p_token_2                 => 'LINE_TYPE_NAME'
74439                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
74440                                                                              l_component_type
74441                                                                             ,l_component_code
74442                                                                             ,l_component_type_code
74443                                                                             ,l_component_appl_id
74444                                                                             ,l_amb_context_code
74445                                                                             ,l_entity_code
74446                                                                             ,l_event_class_code
74447                                                                            )
74448                                     ,p_token_3                 => 'OWNER'
74449                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
74450                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
74451                                                                           ,p_lookup_code    => l_component_type_code
74452                                                                          )
74453                                     ,p_token_4                 => 'PRODUCT_NAME'
74454                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74455                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74456                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74457                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74458                                     ,p_ae_header_id            =>  NULL
74459                                        );
74460 
74461         IF (C_LEVEL_ERROR>= g_log_level) THEN
74462                  trace
74463                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74464                       ,p_level    => C_LEVEL_ERROR
74465                       ,p_module   => l_log_module);
74466         END IF;
74467       END IF;
74468    END IF;
74469    --
74470    --
74471    ------------------------------------------------------------------------------------------------
74472    -- 4219869 Business Flow
74473    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74474    -- Prior Entry.  Currently, the following code is always generated.
74475    ------------------------------------------------------------------------------------------------
74476    XLA_AE_LINES_PKG.ValidateCurrentLine;
74477 
74478    ------------------------------------------------------------------------------------
74479    -- 4219869 Business Flow
74480    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74481    ------------------------------------------------------------------------------------
74482    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74483 
74484    ----------------------------------------------------------------------------------
74485    -- 4219869 Business Flow
74486    -- Update journal entry status -- Need to generate this within IF <condition>
74487    ----------------------------------------------------------------------------------
74488    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74489          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74490          ,p_balance_type_code => l_balance_type_code
74491          );
74492 
74493    -------------------------------------------------------------------------------------------
74494    -- 4262811 - Generate the Accrual Reversal lines
74495    -------------------------------------------------------------------------------------------
74496    BEGIN
74497       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74498                               (g_array_event(p_event_id).array_value_num('header_index'));
74499       IF l_acc_rev_flag IS NULL THEN
74500          l_acc_rev_flag := 'N';
74501       END IF;
74502    EXCEPTION
74503       WHEN OTHERS THEN
74504          l_acc_rev_flag := 'N';
74505    END;
74506    --
74507    IF (l_acc_rev_flag = 'Y') THEN
74508 
74509        -- 4645092  ------------------------------------------------------------------------------
74510        -- To allow MPA report to determine if it should generate report process
74511        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74512        ------------------------------------------------------------------------------------------
74513 
74514        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74515        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74516    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
74517    -- call ADRs
74518    -- Bug 4922099
74519    --
74520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74521         (NVL(l_actual_upg_option, 'N') = 'O') OR
74522         (NVL(l_enc_upg_option, 'N') = 'O')
74523       )
74524    THEN
74525    NULL;
74526    --
74527    --
74528    
74529   l_ccid := AcctDerRule_17(
74530            p_application_id           => p_application_id
74531          , p_ae_header_id             => l_ae_header_id 
74532 , p_source_32 => p_source_32
74533          , x_transaction_coa_id       => l_adr_transaction_coa_id
74534          , x_accounting_coa_id        => l_adr_accounting_coa_id
74535          , x_value_type_code          => l_adr_value_type_code
74536          , p_side                     => 'NA'
74537    );
74538 
74539    xla_ae_lines_pkg.set_ccid(
74540     p_code_combination_id          => l_ccid
74541   , p_value_type_code              => l_adr_value_type_code
74542   , p_transaction_coa_id           => l_adr_transaction_coa_id
74543   , p_accounting_coa_id            => l_adr_accounting_coa_id
74544   , p_adr_code                     => 'PI_FREIGHT'
74545   , p_adr_type_code                => 'S'
74546   , p_component_type               => l_component_type
74547   , p_component_code               => l_component_code
74548   , p_component_type_code          => l_component_type_code
74549   , p_component_appl_id            => l_component_appl_id
74550   , p_amb_context_code             => l_amb_context_code
74551   , p_side                         => 'NA'
74552   );
74553 
74554 
74555    --
74556    --
74557    END IF;
74558 
74559        --
74560        -- Update the line information that should be overwritten
74561        --
74562        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74563                                          p_header_num   => 1);
74564        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
74565 
74566        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74567 
74568        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
74569           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74570        END IF;
74571 
74572       --
74573       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74574       --
74575       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74576           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
74577       ELSE
74578           ---------------------------------------------------------------------------------------------------
74579           -- 4262811a Switch Sign
74580           ---------------------------------------------------------------------------------------------------
74581           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
74582           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74583                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74584           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74585                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74586           -- 5132302
74587           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74588                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74589 
74590       END IF;
74591 
74592       -- 4955764
74593       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74594       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74595 
74596 
74597       XLA_AE_LINES_PKG.ValidateCurrentLine;
74598       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74599 
74600       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74601                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74602                ,p_balance_type_code => l_balance_type_code);
74603 
74604    END IF;
74605 
74606    -----------------------------------------------------------------------------------------
74607    -- 4262811 Multiperiod Accounting
74608    -----------------------------------------------------------------------------------------
74609      -- No MPA option is assigned.
74610 
74611 
74612 END IF;
74613 END IF;
74614 --
74615 
74616 --
74617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74618    trace
74619       (p_msg      => 'END of AcctLineType_155'
74620       ,p_level    => C_LEVEL_PROCEDURE
74621       ,p_module   => l_log_module);
74622 END IF;
74623 --
74624 EXCEPTION
74625   WHEN xla_exceptions_pkg.application_exception THEN
74626       RAISE;
74627   WHEN OTHERS THEN
74628        xla_exceptions_pkg.raise_message
74629            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_155');
74630 END AcctLineType_155;
74631 --
74632 
74633 ---------------------------------------
74634 --
74635 -- PRIVATE FUNCTION
74636 --         AcctLineType_156
74637 --
74638 ---------------------------------------
74639 PROCEDURE AcctLineType_156 (
74640   p_application_id        IN NUMBER
74641  ,p_event_id              IN NUMBER
74642  ,p_calculate_acctd_flag  IN VARCHAR2
74643  ,p_calculate_g_l_flag    IN VARCHAR2
74644  ,p_actual_flag           IN OUT VARCHAR2
74645  ,p_balance_type_code     OUT VARCHAR2
74646  ,p_gain_or_loss_ref      OUT VARCHAR2
74647  
74648 --TRANSACTION_ID
74649  , p_source_1            IN NUMBER
74650 --Item Concatenated Segments
74651  , p_source_2            IN VARCHAR2
74652 --Transaction Quantity
74653  , p_source_3            IN NUMBER
74654 --Transaction Unit of Measure Code
74655  , p_source_4            IN VARCHAR2
74656 --Inventory Transaction Type Description
74657  , p_source_5            IN VARCHAR2
74658 --Cost Management Default Account
74659  , p_source_11            IN NUMBER
74660 --Applied to Application ID
74661  , p_source_79            IN NUMBER
74662 --Applied to Distribution Link Type
74663  , p_source_80            IN VARCHAR2
74664 --Applied to Entity Code
74665  , p_source_81            IN VARCHAR2
74666 --DISTRIBUTION_IDENTIFIER
74667  , p_source_84            IN NUMBER
74668 --Distribution Type
74669  , p_source_85            IN VARCHAR2
74670  , p_source_85_meaning    IN VARCHAR2
74671 --Encumbrance Reversal Amount Entered
74672  , p_source_87            IN NUMBER
74673 --Entered Currency Code
74674  , p_source_88            IN VARCHAR2
74675 --Transaction Encumbrance Reversal Amount
74676  , p_source_89            IN NUMBER
74677 --Entered Amount
74678  , p_source_91            IN NUMBER
74679 --Currency Conversion Date
74680  , p_source_92            IN DATE
74681 --Currency Conversion Rate
74682  , p_source_93            IN NUMBER
74683 --Currency Conversion Type
74684  , p_source_94            IN VARCHAR2
74685 --Accounted Amount
74686  , p_source_95            IN NUMBER
74687 --Accounting Line Type
74688  , p_source_97            IN NUMBER
74689 --Costing Encumbrance Upgrade Option
74690  , p_source_100            IN VARCHAR2
74691 --TXN_PO_DISTRIBUTION_ID
74692  , p_source_101            IN NUMBER
74693 --TXN_PO_HEADER_ID
74694  , p_source_102            IN NUMBER
74695 --Requisition Budget Account
74696  , p_source_103            IN NUMBER
74697 --Requisition Encumbrance Type Identifier
74698  , p_source_104            IN NUMBER
74699 )
74700 IS
74701 
74702 l_component_type              VARCHAR2(80);
74703 l_component_code              VARCHAR2(30);
74704 l_component_type_code         VARCHAR2(1);
74705 l_component_appl_id           INTEGER;
74706 l_amb_context_code            VARCHAR2(30);
74707 l_entity_code                 VARCHAR2(30);
74708 l_event_class_code            VARCHAR2(30);
74709 l_ae_header_id                NUMBER;
74710 l_event_type_code             VARCHAR2(30);
74711 l_line_definition_code        VARCHAR2(30);
74712 l_line_definition_owner_code  VARCHAR2(1);
74713 --
74714 -- adr variables
74715 l_segment                     VARCHAR2(30);
74716 l_ccid                        NUMBER;
74717 l_adr_transaction_coa_id      NUMBER;
74718 l_adr_accounting_coa_id       NUMBER;
74719 l_adr_flexfield_segment_code  VARCHAR2(30);
74720 l_adr_flex_value_set_id       NUMBER;
74721 l_adr_value_type_code         VARCHAR2(30);
74722 l_adr_value_combination_id    NUMBER;
74723 l_adr_value_segment_code      VARCHAR2(30);
74724 
74725 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
74726 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
74727 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
74728 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
74729 
74730 -- 4262811 Variables ------------------------------------------------------------------------------------------
74731 l_entered_amt_idx             NUMBER;
74732 l_accted_amt_idx              NUMBER;
74733 l_acc_rev_flag                VARCHAR2(1);
74734 l_accrual_line_num            NUMBER;
74735 l_tmp_amt                     NUMBER;
74736 l_acc_rev_natural_side_code   VARCHAR2(1);
74737 
74738 l_num_entries                 NUMBER;
74739 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
74740 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
74741 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
74742 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
74743 l_recog_line_1                NUMBER;
74744 l_recog_line_2                NUMBER;
74745 
74746 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
74747 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
74748 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
74749 
74750 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74751 
74752 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
74753 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
74754 
74755 ---------------------------------------------------------------------------------------------------------------
74756 
74757 
74758 --
74759 -- bulk performance
74760 --
74761 l_balance_type_code           VARCHAR2(1);
74762 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
74763 l_log_module                  VARCHAR2(240);
74764 
74765 --
74766 -- Upgrade strategy
74767 --
74768 l_actual_upg_option           VARCHAR2(1);
74769 l_enc_upg_option           VARCHAR2(1);
74770 
74771 --
74772 BEGIN
74773 --
74774 IF g_log_enabled THEN
74775       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_156';
74776 END IF;
74777 --
74778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74779 
74780       trace
74781          (p_msg      => 'BEGIN of AcctLineType_156'
74782          ,p_level    => C_LEVEL_PROCEDURE
74783          ,p_module   => l_log_module);
74784 
74785 END IF;
74786 --
74787 l_component_type             := 'AMB_JLT';
74788 l_component_code             := 'INTERORG_FREIGHT_CHARGE';
74789 l_component_type_code        := 'S';
74790 l_component_appl_id          :=  707;
74791 l_amb_context_code           := 'DEFAULT';
74792 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
74793 l_event_class_code           := 'DIR_INTERORG_RCPT';
74794 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
74795 l_line_definition_owner_code := 'S';
74796 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
74797 --
74798 l_balance_type_code          := 'A';
74799 l_segment                     := NULL;
74800 l_ccid                        := NULL;
74801 l_adr_transaction_coa_id      := NULL;
74802 l_adr_accounting_coa_id       := NULL;
74803 l_adr_flexfield_segment_code  := NULL;
74804 l_adr_flex_value_set_id       := NULL;
74805 l_adr_value_type_code         := NULL;
74806 l_adr_value_combination_id    := NULL;
74807 l_adr_value_segment_code      := NULL;
74808 
74809 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
74810 l_bflow_class_code           := '';    -- 4219869 Business Flow
74811 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
74812 l_budgetary_control_flag     := 'N';
74813 
74814 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
74815 l_bflow_applied_to_amt       := NULL; -- 5132302
74816 l_entered_amt_idx            := NULL;          -- 4262811
74817 l_accted_amt_idx             := NULL;          -- 4262811
74818 l_acc_rev_flag               := NULL;          -- 4262811
74819 l_accrual_line_num           := NULL;          -- 4262811
74820 l_tmp_amt                    := NULL;          -- 4262811
74821 --
74822  
74823 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74824     l_balance_type_code <> 'B' THEN
74825 IF NVL(p_source_97,9E125) =  12
74826  THEN 
74827 
74828    --
74829    XLA_AE_LINES_PKG.SetNewLine;
74830 
74831    p_balance_type_code          := l_balance_type_code;
74832    -- set the flag so later we will know whether the gain loss line needs to be created
74833    
74834    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74835      p_actual_flag :='A';
74836    END IF;
74837 
74838    --
74839    -- bulk performance
74840    --
74841    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74842                                       p_header_num   => 0); -- 4262811
74843    --
74844    -- set accounting line options
74845    --
74846    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74847            p_natural_side_code          => 'D'
74848          , p_gain_or_loss_flag          => 'N'
74849          , p_gl_transfer_mode_code      => 'S'
74850          , p_acct_entry_type_code       => 'A'
74851          , p_switch_side_flag           => 'Y'
74852          , p_merge_duplicate_code       => 'N'
74853          );
74854    --
74855    l_acc_rev_natural_side_code := 'C';  -- 4262811
74856    -- 
74857    --
74858    -- set accounting line type info
74859    --
74860    xla_ae_lines_pkg.SetAcctLineType
74861       (p_component_type             => l_component_type
74862       ,p_event_type_code            => l_event_type_code
74863       ,p_line_definition_owner_code => l_line_definition_owner_code
74864       ,p_line_definition_code       => l_line_definition_code
74865       ,p_accounting_line_code       => l_component_code
74866       ,p_accounting_line_type_code  => l_component_type_code
74867       ,p_accounting_line_appl_id    => l_component_appl_id
74868       ,p_amb_context_code           => l_amb_context_code
74869       ,p_entity_code                => l_entity_code
74870       ,p_event_class_code           => l_event_class_code);
74871    --
74872    -- set accounting class
74873    --
74874    xla_ae_lines_pkg.SetAcctClass(
74875            p_accounting_class_code  => 'INTERORG_FREIGHT_CHARGE'
74876          , p_ae_header_id           => l_ae_header_id
74877          );
74878 
74879    --
74880    -- set rounding class
74881    --
74882    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74883                       'INTERORG_FREIGHT_CHARGE';
74884 
74885    --
74886    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74887    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74888    --
74889    -- bulk performance
74890    --
74891    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74892 
74893    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74894       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74895 
74896    -- 4955764
74897    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74898       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74899 
74900    -- 4458381 Public Sector Enh
74901    
74902    --
74903    -- set accounting attributes for the line type
74904    --
74905    l_entered_amt_idx := 17;
74906    l_accted_amt_idx  := 22;
74907    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
74908    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
74909    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
74910    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
74911    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
74912    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
74913    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
74914    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
74915    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
74916    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
74917    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
74918    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
74919    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
74920    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
74921    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
74922    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
74923    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
74924    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
74925    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
74926    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
74927    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
74928    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
74929    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
74930    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
74931    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
74932    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
74933    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
74934    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
74935    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
74936    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
74937    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
74938    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
74939    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
74940    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
74941    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
74942    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
74943    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
74944    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
74945    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
74946    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
74947    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
74948    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
74949    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
74950    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
74951    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
74952    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
74953    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
74954    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
74955    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
74956 
74957    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74958    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74959 
74960    ---------------------------------------------------------------------------------------------------------------
74961    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74962    ---------------------------------------------------------------------------------------------------------------
74963    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74964 
74965    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74966    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74967 
74968    IF xla_accounting_cache_pkg.GetValueChar
74969          (p_source_code         => 'LEDGER_CATEGORY_CODE'
74970          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74971    AND l_bflow_method_code = 'PRIOR_ENTRY'
74972 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74973    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74974          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74975        )
74976    THEN
74977          xla_ae_lines_pkg.BflowUpgEntry
74978            (p_business_method_code    => l_bflow_method_code
74979            ,p_business_class_code     => l_bflow_class_code
74980            ,p_balance_type            => l_balance_type_code);
74981    ELSE
74982       NULL;
74983 -- No business flow processing for business flow method of NONE.
74984    END IF;
74985 
74986    --
74987    -- call analytical criteria
74988    --
74989    
74990    --
74991    -- call description
74992    --
74993    
74994 xla_ae_lines_pkg.SetLineDescription(
74995    p_ae_header_id => l_ae_header_id
74996   ,p_description  => Description_1 (
74997      p_application_id         => p_application_id
74998    , p_ae_header_id           => l_ae_header_id 
74999 , p_source_1 => p_source_1
75000 , p_source_2 => p_source_2
75001 , p_source_3 => p_source_3
75002 , p_source_4 => p_source_4
75003 , p_source_5 => p_source_5
75004    )
75005 );
75006 
75007 
75008    --
75009    -- call ADRs
75010    -- Bug 4922099
75011    --
75012    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75013         (NVL(l_actual_upg_option, 'N') = 'O') OR
75014         (NVL(l_enc_upg_option, 'N') = 'O')
75015       )
75016    THEN
75017    NULL;
75018    --
75019    --
75020    
75021   l_ccid := AcctDerRule_6(
75022            p_application_id           => p_application_id
75023          , p_ae_header_id             => l_ae_header_id 
75024 , p_source_11 => p_source_11
75025          , x_transaction_coa_id       => l_adr_transaction_coa_id
75026          , x_accounting_coa_id        => l_adr_accounting_coa_id
75027          , x_value_type_code          => l_adr_value_type_code
75028          , p_side                     => 'NA'
75029    );
75030 
75031    xla_ae_lines_pkg.set_ccid(
75032     p_code_combination_id          => l_ccid
75033   , p_value_type_code              => l_adr_value_type_code
75034   , p_transaction_coa_id           => l_adr_transaction_coa_id
75035   , p_accounting_coa_id            => l_adr_accounting_coa_id
75036   , p_adr_code                     => 'CST_DEFAULT'
75037   , p_adr_type_code                => 'S'
75038   , p_component_type               => l_component_type
75039   , p_component_code               => l_component_code
75040   , p_component_type_code          => l_component_type_code
75041   , p_component_appl_id            => l_component_appl_id
75042   , p_amb_context_code             => l_amb_context_code
75043   , p_side                         => 'NA'
75044   );
75045 
75046 
75047    --
75048    --
75049    END IF;
75050    --
75051    -- Bug 4922099
75052    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75053           (NVL(l_enc_upg_option, 'N') = 'O')
75054         ) AND
75055         (l_bflow_method_code = 'PRIOR_ENTRY')
75056       )
75057    THEN
75058       IF
75059       --
75060       1 = 2
75061       --
75062       THEN
75063       xla_accounting_err_pkg.build_message
75064                                     (p_appli_s_name            => 'XLA'
75065                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75066                                     ,p_token_1                 => 'LINE_NUMBER'
75067                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
75068                                     ,p_token_2                 => 'LINE_TYPE_NAME'
75069                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
75070                                                                              l_component_type
75071                                                                             ,l_component_code
75072                                                                             ,l_component_type_code
75073                                                                             ,l_component_appl_id
75074                                                                             ,l_amb_context_code
75075                                                                             ,l_entity_code
75076                                                                             ,l_event_class_code
75077                                                                            )
75078                                     ,p_token_3                 => 'OWNER'
75079                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
75080                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
75081                                                                           ,p_lookup_code    => l_component_type_code
75082                                                                          )
75083                                     ,p_token_4                 => 'PRODUCT_NAME'
75084                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75085                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75086                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75087                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75088                                     ,p_ae_header_id            =>  NULL
75089                                        );
75090 
75091         IF (C_LEVEL_ERROR>= g_log_level) THEN
75092                  trace
75093                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75094                       ,p_level    => C_LEVEL_ERROR
75095                       ,p_module   => l_log_module);
75096         END IF;
75097       END IF;
75098    END IF;
75099    --
75100    --
75101    ------------------------------------------------------------------------------------------------
75102    -- 4219869 Business Flow
75103    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75104    -- Prior Entry.  Currently, the following code is always generated.
75105    ------------------------------------------------------------------------------------------------
75106    XLA_AE_LINES_PKG.ValidateCurrentLine;
75107 
75108    ------------------------------------------------------------------------------------
75109    -- 4219869 Business Flow
75110    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75111    ------------------------------------------------------------------------------------
75112    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75113 
75114    ----------------------------------------------------------------------------------
75115    -- 4219869 Business Flow
75116    -- Update journal entry status -- Need to generate this within IF <condition>
75117    ----------------------------------------------------------------------------------
75118    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75119          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75120          ,p_balance_type_code => l_balance_type_code
75121          );
75122 
75123    -------------------------------------------------------------------------------------------
75124    -- 4262811 - Generate the Accrual Reversal lines
75125    -------------------------------------------------------------------------------------------
75126    BEGIN
75127       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75128                               (g_array_event(p_event_id).array_value_num('header_index'));
75129       IF l_acc_rev_flag IS NULL THEN
75130          l_acc_rev_flag := 'N';
75131       END IF;
75132    EXCEPTION
75133       WHEN OTHERS THEN
75134          l_acc_rev_flag := 'N';
75135    END;
75136    --
75137    IF (l_acc_rev_flag = 'Y') THEN
75138 
75139        -- 4645092  ------------------------------------------------------------------------------
75140        -- To allow MPA report to determine if it should generate report process
75141        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75142        ------------------------------------------------------------------------------------------
75143 
75144        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75145        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75146    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
75147    -- call ADRs
75148    -- Bug 4922099
75149    --
75150    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75151         (NVL(l_actual_upg_option, 'N') = 'O') OR
75152         (NVL(l_enc_upg_option, 'N') = 'O')
75153       )
75154    THEN
75155    NULL;
75156    --
75157    --
75158    
75159   l_ccid := AcctDerRule_6(
75160            p_application_id           => p_application_id
75161          , p_ae_header_id             => l_ae_header_id 
75162 , p_source_11 => p_source_11
75163          , x_transaction_coa_id       => l_adr_transaction_coa_id
75164          , x_accounting_coa_id        => l_adr_accounting_coa_id
75165          , x_value_type_code          => l_adr_value_type_code
75166          , p_side                     => 'NA'
75167    );
75168 
75169    xla_ae_lines_pkg.set_ccid(
75170     p_code_combination_id          => l_ccid
75171   , p_value_type_code              => l_adr_value_type_code
75172   , p_transaction_coa_id           => l_adr_transaction_coa_id
75173   , p_accounting_coa_id            => l_adr_accounting_coa_id
75174   , p_adr_code                     => 'CST_DEFAULT'
75175   , p_adr_type_code                => 'S'
75176   , p_component_type               => l_component_type
75177   , p_component_code               => l_component_code
75178   , p_component_type_code          => l_component_type_code
75179   , p_component_appl_id            => l_component_appl_id
75180   , p_amb_context_code             => l_amb_context_code
75181   , p_side                         => 'NA'
75182   );
75183 
75184 
75185    --
75186    --
75187    END IF;
75188 
75189        --
75190        -- Update the line information that should be overwritten
75191        --
75192        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75193                                          p_header_num   => 1);
75194        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
75195 
75196        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75197 
75198        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
75199           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75200        END IF;
75201 
75202       --
75203       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75204       --
75205       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75206           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
75207       ELSE
75208           ---------------------------------------------------------------------------------------------------
75209           -- 4262811a Switch Sign
75210           ---------------------------------------------------------------------------------------------------
75211           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
75212           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75213                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75214           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75215                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75216           -- 5132302
75217           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75218                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75219 
75220       END IF;
75221 
75222       -- 4955764
75223       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75224       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75225 
75226 
75227       XLA_AE_LINES_PKG.ValidateCurrentLine;
75228       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75229 
75230       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75231                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75232                ,p_balance_type_code => l_balance_type_code);
75233 
75234    END IF;
75235 
75236    -----------------------------------------------------------------------------------------
75237    -- 4262811 Multiperiod Accounting
75238    -----------------------------------------------------------------------------------------
75239      -- No MPA option is assigned.
75240 
75241 
75242 END IF;
75243 END IF;
75244 --
75245 
75246 --
75247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75248    trace
75249       (p_msg      => 'END of AcctLineType_156'
75250       ,p_level    => C_LEVEL_PROCEDURE
75251       ,p_module   => l_log_module);
75252 END IF;
75253 --
75254 EXCEPTION
75255   WHEN xla_exceptions_pkg.application_exception THEN
75256       RAISE;
75257   WHEN OTHERS THEN
75258        xla_exceptions_pkg.raise_message
75259            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_156');
75260 END AcctLineType_156;
75261 --
75262 
75263 ---------------------------------------
75264 --
75265 -- PRIVATE FUNCTION
75266 --         AcctLineType_157
75267 --
75268 ---------------------------------------
75269 PROCEDURE AcctLineType_157 (
75270   p_application_id        IN NUMBER
75271  ,p_event_id              IN NUMBER
75272  ,p_calculate_acctd_flag  IN VARCHAR2
75273  ,p_calculate_g_l_flag    IN VARCHAR2
75274  ,p_actual_flag           IN OUT VARCHAR2
75275  ,p_balance_type_code     OUT VARCHAR2
75276  ,p_gain_or_loss_ref      OUT VARCHAR2
75277  
75278 --TRANSACTION_ID
75279  , p_source_1            IN NUMBER
75280 --Item Concatenated Segments
75281  , p_source_2            IN VARCHAR2
75282 --Transaction Quantity
75283  , p_source_3            IN NUMBER
75284 --Transaction Unit of Measure Code
75285  , p_source_4            IN VARCHAR2
75286 --Inventory Transaction Type Description
75287  , p_source_5            IN VARCHAR2
75288 --Cost Management Default Account
75289  , p_source_11            IN NUMBER
75290 --DISTRIBUTION_IDENTIFIER
75291  , p_source_84            IN NUMBER
75292 --Distribution Type
75293  , p_source_85            IN VARCHAR2
75294  , p_source_85_meaning    IN VARCHAR2
75295 --Entered Currency Code
75296  , p_source_88            IN VARCHAR2
75297 --Entered Amount
75298  , p_source_91            IN NUMBER
75299 --Currency Conversion Date
75300  , p_source_92            IN DATE
75301 --Currency Conversion Rate
75302  , p_source_93            IN NUMBER
75303 --Currency Conversion Type
75304  , p_source_94            IN VARCHAR2
75305 --Accounted Amount
75306  , p_source_95            IN NUMBER
75307 --Accounting Line Type
75308  , p_source_97            IN NUMBER
75309 )
75310 IS
75311 
75312 l_component_type              VARCHAR2(80);
75313 l_component_code              VARCHAR2(30);
75314 l_component_type_code         VARCHAR2(1);
75315 l_component_appl_id           INTEGER;
75316 l_amb_context_code            VARCHAR2(30);
75317 l_entity_code                 VARCHAR2(30);
75318 l_event_class_code            VARCHAR2(30);
75319 l_ae_header_id                NUMBER;
75320 l_event_type_code             VARCHAR2(30);
75321 l_line_definition_code        VARCHAR2(30);
75322 l_line_definition_owner_code  VARCHAR2(1);
75323 --
75324 -- adr variables
75325 l_segment                     VARCHAR2(30);
75326 l_ccid                        NUMBER;
75327 l_adr_transaction_coa_id      NUMBER;
75328 l_adr_accounting_coa_id       NUMBER;
75329 l_adr_flexfield_segment_code  VARCHAR2(30);
75330 l_adr_flex_value_set_id       NUMBER;
75331 l_adr_value_type_code         VARCHAR2(30);
75332 l_adr_value_combination_id    NUMBER;
75333 l_adr_value_segment_code      VARCHAR2(30);
75334 
75335 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75336 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75337 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75338 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75339 
75340 -- 4262811 Variables ------------------------------------------------------------------------------------------
75341 l_entered_amt_idx             NUMBER;
75342 l_accted_amt_idx              NUMBER;
75343 l_acc_rev_flag                VARCHAR2(1);
75344 l_accrual_line_num            NUMBER;
75345 l_tmp_amt                     NUMBER;
75346 l_acc_rev_natural_side_code   VARCHAR2(1);
75347 
75348 l_num_entries                 NUMBER;
75349 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75350 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75351 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75352 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75353 l_recog_line_1                NUMBER;
75354 l_recog_line_2                NUMBER;
75355 
75356 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75357 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75358 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75359 
75360 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75361 
75362 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75363 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75364 
75365 ---------------------------------------------------------------------------------------------------------------
75366 
75367 
75368 --
75369 -- bulk performance
75370 --
75371 l_balance_type_code           VARCHAR2(1);
75372 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75373 l_log_module                  VARCHAR2(240);
75374 
75375 --
75376 -- Upgrade strategy
75377 --
75378 l_actual_upg_option           VARCHAR2(1);
75379 l_enc_upg_option           VARCHAR2(1);
75380 
75381 --
75382 BEGIN
75383 --
75384 IF g_log_enabled THEN
75385       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_157';
75386 END IF;
75387 --
75388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75389 
75390       trace
75391          (p_msg      => 'BEGIN of AcctLineType_157'
75392          ,p_level    => C_LEVEL_PROCEDURE
75393          ,p_module   => l_log_module);
75394 
75395 END IF;
75396 --
75397 l_component_type             := 'AMB_JLT';
75398 l_component_code             := 'INTERORG_PAYABLES';
75399 l_component_type_code        := 'S';
75400 l_component_appl_id          :=  707;
75401 l_amb_context_code           := 'DEFAULT';
75402 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
75403 l_event_class_code           := 'INT_ORDER_TO_EXP';
75404 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
75405 l_line_definition_owner_code := 'S';
75406 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_TP';
75407 --
75408 l_balance_type_code          := 'A';
75409 l_segment                     := NULL;
75410 l_ccid                        := NULL;
75411 l_adr_transaction_coa_id      := NULL;
75412 l_adr_accounting_coa_id       := NULL;
75413 l_adr_flexfield_segment_code  := NULL;
75414 l_adr_flex_value_set_id       := NULL;
75415 l_adr_value_type_code         := NULL;
75416 l_adr_value_combination_id    := NULL;
75417 l_adr_value_segment_code      := NULL;
75418 
75419 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
75420 l_bflow_class_code           := '';    -- 4219869 Business Flow
75421 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
75422 l_budgetary_control_flag     := 'N';
75423 
75424 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
75425 l_bflow_applied_to_amt       := NULL; -- 5132302
75426 l_entered_amt_idx            := NULL;          -- 4262811
75427 l_accted_amt_idx             := NULL;          -- 4262811
75428 l_acc_rev_flag               := NULL;          -- 4262811
75429 l_accrual_line_num           := NULL;          -- 4262811
75430 l_tmp_amt                    := NULL;          -- 4262811
75431 --
75432  
75433 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75434     l_balance_type_code <> 'B' THEN
75435 IF NVL(p_source_97,9E125) =  9
75436  THEN 
75437 
75438    --
75439    XLA_AE_LINES_PKG.SetNewLine;
75440 
75441    p_balance_type_code          := l_balance_type_code;
75442    -- set the flag so later we will know whether the gain loss line needs to be created
75443    
75444    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75445      p_actual_flag :='A';
75446    END IF;
75447 
75448    --
75449    -- bulk performance
75450    --
75451    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75452                                       p_header_num   => 0); -- 4262811
75453    --
75454    -- set accounting line options
75455    --
75456    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75457            p_natural_side_code          => 'D'
75458          , p_gain_or_loss_flag          => 'N'
75459          , p_gl_transfer_mode_code      => 'S'
75460          , p_acct_entry_type_code       => 'A'
75461          , p_switch_side_flag           => 'Y'
75462          , p_merge_duplicate_code       => 'N'
75463          );
75464    --
75465    l_acc_rev_natural_side_code := 'C';  -- 4262811
75466    -- 
75467    --
75468    -- set accounting line type info
75469    --
75470    xla_ae_lines_pkg.SetAcctLineType
75471       (p_component_type             => l_component_type
75472       ,p_event_type_code            => l_event_type_code
75473       ,p_line_definition_owner_code => l_line_definition_owner_code
75474       ,p_line_definition_code       => l_line_definition_code
75475       ,p_accounting_line_code       => l_component_code
75476       ,p_accounting_line_type_code  => l_component_type_code
75477       ,p_accounting_line_appl_id    => l_component_appl_id
75478       ,p_amb_context_code           => l_amb_context_code
75479       ,p_entity_code                => l_entity_code
75480       ,p_event_class_code           => l_event_class_code);
75481    --
75482    -- set accounting class
75483    --
75484    xla_ae_lines_pkg.SetAcctClass(
75485            p_accounting_class_code  => 'INTERORG_PAYABLES'
75486          , p_ae_header_id           => l_ae_header_id
75487          );
75488 
75489    --
75490    -- set rounding class
75491    --
75492    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75493                       'INTERORG_PAYABLES';
75494 
75495    --
75496    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75497    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75498    --
75499    -- bulk performance
75500    --
75501    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75502 
75503    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75504       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75505 
75506    -- 4955764
75507    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75508       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75509 
75510    -- 4458381 Public Sector Enh
75511    
75512    --
75513    -- set accounting attributes for the line type
75514    --
75515    l_entered_amt_idx := 3;
75516    l_accted_amt_idx  := 8;
75517    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
75518    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75519    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
75520    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75521    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
75522    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75523    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
75524    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75525    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
75526    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75527    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
75528    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75529    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
75530    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75531    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
75532    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75533    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
75534 
75535    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75536    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75537 
75538    ---------------------------------------------------------------------------------------------------------------
75539    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75540    ---------------------------------------------------------------------------------------------------------------
75541    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75542 
75543    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75544    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75545 
75546    IF xla_accounting_cache_pkg.GetValueChar
75547          (p_source_code         => 'LEDGER_CATEGORY_CODE'
75548          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75549    AND l_bflow_method_code = 'PRIOR_ENTRY'
75550 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75551    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75552          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75553        )
75554    THEN
75555          xla_ae_lines_pkg.BflowUpgEntry
75556            (p_business_method_code    => l_bflow_method_code
75557            ,p_business_class_code     => l_bflow_class_code
75558            ,p_balance_type            => l_balance_type_code);
75559    ELSE
75560       NULL;
75561 -- No business flow processing for business flow method of NONE.
75562    END IF;
75563 
75564    --
75565    -- call analytical criteria
75566    --
75567    
75568    --
75569    -- call description
75570    --
75571    
75572 xla_ae_lines_pkg.SetLineDescription(
75573    p_ae_header_id => l_ae_header_id
75574   ,p_description  => Description_1 (
75575      p_application_id         => p_application_id
75576    , p_ae_header_id           => l_ae_header_id 
75577 , p_source_1 => p_source_1
75578 , p_source_2 => p_source_2
75579 , p_source_3 => p_source_3
75580 , p_source_4 => p_source_4
75581 , p_source_5 => p_source_5
75582    )
75583 );
75584 
75585 
75586    --
75587    -- call ADRs
75588    -- Bug 4922099
75589    --
75590    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75591         (NVL(l_actual_upg_option, 'N') = 'O') OR
75592         (NVL(l_enc_upg_option, 'N') = 'O')
75593       )
75594    THEN
75595    NULL;
75596    --
75597    --
75598    
75599   l_ccid := AcctDerRule_6(
75600            p_application_id           => p_application_id
75601          , p_ae_header_id             => l_ae_header_id 
75602 , p_source_11 => p_source_11
75603          , x_transaction_coa_id       => l_adr_transaction_coa_id
75604          , x_accounting_coa_id        => l_adr_accounting_coa_id
75605          , x_value_type_code          => l_adr_value_type_code
75606          , p_side                     => 'NA'
75607    );
75608 
75609    xla_ae_lines_pkg.set_ccid(
75610     p_code_combination_id          => l_ccid
75611   , p_value_type_code              => l_adr_value_type_code
75612   , p_transaction_coa_id           => l_adr_transaction_coa_id
75613   , p_accounting_coa_id            => l_adr_accounting_coa_id
75614   , p_adr_code                     => 'CST_DEFAULT'
75615   , p_adr_type_code                => 'S'
75616   , p_component_type               => l_component_type
75617   , p_component_code               => l_component_code
75618   , p_component_type_code          => l_component_type_code
75619   , p_component_appl_id            => l_component_appl_id
75620   , p_amb_context_code             => l_amb_context_code
75621   , p_side                         => 'NA'
75622   );
75623 
75624 
75625    --
75626    --
75627    END IF;
75628    --
75629    -- Bug 4922099
75630    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75631           (NVL(l_enc_upg_option, 'N') = 'O')
75632         ) AND
75633         (l_bflow_method_code = 'PRIOR_ENTRY')
75634       )
75635    THEN
75636       IF
75637       --
75638       1 = 2
75639       --
75640       THEN
75641       xla_accounting_err_pkg.build_message
75642                                     (p_appli_s_name            => 'XLA'
75643                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75644                                     ,p_token_1                 => 'LINE_NUMBER'
75645                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
75646                                     ,p_token_2                 => 'LINE_TYPE_NAME'
75647                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
75648                                                                              l_component_type
75649                                                                             ,l_component_code
75650                                                                             ,l_component_type_code
75651                                                                             ,l_component_appl_id
75652                                                                             ,l_amb_context_code
75653                                                                             ,l_entity_code
75654                                                                             ,l_event_class_code
75655                                                                            )
75656                                     ,p_token_3                 => 'OWNER'
75657                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
75658                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
75659                                                                           ,p_lookup_code    => l_component_type_code
75660                                                                          )
75661                                     ,p_token_4                 => 'PRODUCT_NAME'
75662                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75663                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75664                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75665                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75666                                     ,p_ae_header_id            =>  NULL
75667                                        );
75668 
75669         IF (C_LEVEL_ERROR>= g_log_level) THEN
75670                  trace
75671                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75672                       ,p_level    => C_LEVEL_ERROR
75673                       ,p_module   => l_log_module);
75674         END IF;
75675       END IF;
75676    END IF;
75677    --
75678    --
75679    ------------------------------------------------------------------------------------------------
75680    -- 4219869 Business Flow
75681    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75682    -- Prior Entry.  Currently, the following code is always generated.
75683    ------------------------------------------------------------------------------------------------
75684    XLA_AE_LINES_PKG.ValidateCurrentLine;
75685 
75686    ------------------------------------------------------------------------------------
75687    -- 4219869 Business Flow
75688    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75689    ------------------------------------------------------------------------------------
75690    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75691 
75692    ----------------------------------------------------------------------------------
75693    -- 4219869 Business Flow
75694    -- Update journal entry status -- Need to generate this within IF <condition>
75695    ----------------------------------------------------------------------------------
75696    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75697          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75698          ,p_balance_type_code => l_balance_type_code
75699          );
75700 
75701    -------------------------------------------------------------------------------------------
75702    -- 4262811 - Generate the Accrual Reversal lines
75703    -------------------------------------------------------------------------------------------
75704    BEGIN
75705       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75706                               (g_array_event(p_event_id).array_value_num('header_index'));
75707       IF l_acc_rev_flag IS NULL THEN
75708          l_acc_rev_flag := 'N';
75709       END IF;
75710    EXCEPTION
75711       WHEN OTHERS THEN
75712          l_acc_rev_flag := 'N';
75713    END;
75714    --
75715    IF (l_acc_rev_flag = 'Y') THEN
75716 
75717        -- 4645092  ------------------------------------------------------------------------------
75718        -- To allow MPA report to determine if it should generate report process
75719        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75720        ------------------------------------------------------------------------------------------
75721 
75722        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75723        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75724    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
75725    -- call ADRs
75726    -- Bug 4922099
75727    --
75728    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75729         (NVL(l_actual_upg_option, 'N') = 'O') OR
75730         (NVL(l_enc_upg_option, 'N') = 'O')
75731       )
75732    THEN
75733    NULL;
75734    --
75735    --
75736    
75737   l_ccid := AcctDerRule_6(
75738            p_application_id           => p_application_id
75739          , p_ae_header_id             => l_ae_header_id 
75740 , p_source_11 => p_source_11
75741          , x_transaction_coa_id       => l_adr_transaction_coa_id
75742          , x_accounting_coa_id        => l_adr_accounting_coa_id
75743          , x_value_type_code          => l_adr_value_type_code
75744          , p_side                     => 'NA'
75745    );
75746 
75747    xla_ae_lines_pkg.set_ccid(
75748     p_code_combination_id          => l_ccid
75749   , p_value_type_code              => l_adr_value_type_code
75750   , p_transaction_coa_id           => l_adr_transaction_coa_id
75751   , p_accounting_coa_id            => l_adr_accounting_coa_id
75752   , p_adr_code                     => 'CST_DEFAULT'
75753   , p_adr_type_code                => 'S'
75754   , p_component_type               => l_component_type
75755   , p_component_code               => l_component_code
75756   , p_component_type_code          => l_component_type_code
75757   , p_component_appl_id            => l_component_appl_id
75758   , p_amb_context_code             => l_amb_context_code
75759   , p_side                         => 'NA'
75760   );
75761 
75762 
75763    --
75764    --
75765    END IF;
75766 
75767        --
75768        -- Update the line information that should be overwritten
75769        --
75770        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75771                                          p_header_num   => 1);
75772        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
75773 
75774        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75775 
75776        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
75777           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75778        END IF;
75779 
75780       --
75781       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75782       --
75783       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75784           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
75785       ELSE
75786           ---------------------------------------------------------------------------------------------------
75787           -- 4262811a Switch Sign
75788           ---------------------------------------------------------------------------------------------------
75789           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
75790           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75791                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75792           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75793                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75794           -- 5132302
75795           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75796                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75797 
75798       END IF;
75799 
75800       -- 4955764
75801       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75802       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75803 
75804 
75805       XLA_AE_LINES_PKG.ValidateCurrentLine;
75806       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75807 
75808       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75809                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75810                ,p_balance_type_code => l_balance_type_code);
75811 
75812    END IF;
75813 
75814    -----------------------------------------------------------------------------------------
75815    -- 4262811 Multiperiod Accounting
75816    -----------------------------------------------------------------------------------------
75817      -- No MPA option is assigned.
75818 
75819 
75820 END IF;
75821 END IF;
75822 --
75823 
75824 --
75825 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75826    trace
75827       (p_msg      => 'END of AcctLineType_157'
75828       ,p_level    => C_LEVEL_PROCEDURE
75829       ,p_module   => l_log_module);
75830 END IF;
75831 --
75832 EXCEPTION
75833   WHEN xla_exceptions_pkg.application_exception THEN
75834       RAISE;
75835   WHEN OTHERS THEN
75836        xla_exceptions_pkg.raise_message
75837            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_157');
75838 END AcctLineType_157;
75839 --
75840 
75841 ---------------------------------------
75842 --
75843 -- PRIVATE FUNCTION
75844 --         AcctLineType_158
75845 --
75846 ---------------------------------------
75847 PROCEDURE AcctLineType_158 (
75848   p_application_id        IN NUMBER
75849  ,p_event_id              IN NUMBER
75850  ,p_calculate_acctd_flag  IN VARCHAR2
75851  ,p_calculate_g_l_flag    IN VARCHAR2
75852  ,p_actual_flag           IN OUT VARCHAR2
75853  ,p_balance_type_code     OUT VARCHAR2
75854  ,p_gain_or_loss_ref      OUT VARCHAR2
75855  
75856 --TRANSACTION_ID
75857  , p_source_1            IN NUMBER
75858 --Item Concatenated Segments
75859  , p_source_2            IN VARCHAR2
75860 --Transaction Quantity
75861  , p_source_3            IN NUMBER
75862 --Transaction Unit of Measure Code
75863  , p_source_4            IN VARCHAR2
75864 --Inventory Transaction Type Description
75865  , p_source_5            IN VARCHAR2
75866 --Interorg Payables Account
75867  , p_source_35            IN NUMBER
75868 --Applied to Application ID
75869  , p_source_79            IN NUMBER
75870 --Applied to Distribution Link Type
75871  , p_source_80            IN VARCHAR2
75872 --Applied to Entity Code
75873  , p_source_81            IN VARCHAR2
75874 --DISTRIBUTION_IDENTIFIER
75875  , p_source_84            IN NUMBER
75876 --Distribution Type
75877  , p_source_85            IN VARCHAR2
75878  , p_source_85_meaning    IN VARCHAR2
75879 --Encumbrance Reversal Amount Entered
75880  , p_source_87            IN NUMBER
75881 --Entered Currency Code
75882  , p_source_88            IN VARCHAR2
75883 --Transaction Encumbrance Reversal Amount
75884  , p_source_89            IN NUMBER
75885 --Entered Amount
75886  , p_source_91            IN NUMBER
75887 --Currency Conversion Date
75888  , p_source_92            IN DATE
75889 --Currency Conversion Rate
75890  , p_source_93            IN NUMBER
75891 --Currency Conversion Type
75892  , p_source_94            IN VARCHAR2
75893 --Accounted Amount
75894  , p_source_95            IN NUMBER
75895 --Accounting Line Type
75896  , p_source_97            IN NUMBER
75897 --Costing Encumbrance Upgrade Option
75898  , p_source_100            IN VARCHAR2
75899 --TXN_PO_DISTRIBUTION_ID
75900  , p_source_101            IN NUMBER
75901 --TXN_PO_HEADER_ID
75902  , p_source_102            IN NUMBER
75903 --Requisition Budget Account
75904  , p_source_103            IN NUMBER
75905 --Requisition Encumbrance Type Identifier
75906  , p_source_104            IN NUMBER
75907 )
75908 IS
75909 
75910 l_component_type              VARCHAR2(80);
75911 l_component_code              VARCHAR2(30);
75912 l_component_type_code         VARCHAR2(1);
75913 l_component_appl_id           INTEGER;
75914 l_amb_context_code            VARCHAR2(30);
75915 l_entity_code                 VARCHAR2(30);
75916 l_event_class_code            VARCHAR2(30);
75917 l_ae_header_id                NUMBER;
75918 l_event_type_code             VARCHAR2(30);
75919 l_line_definition_code        VARCHAR2(30);
75920 l_line_definition_owner_code  VARCHAR2(1);
75921 --
75922 -- adr variables
75923 l_segment                     VARCHAR2(30);
75924 l_ccid                        NUMBER;
75925 l_adr_transaction_coa_id      NUMBER;
75926 l_adr_accounting_coa_id       NUMBER;
75927 l_adr_flexfield_segment_code  VARCHAR2(30);
75928 l_adr_flex_value_set_id       NUMBER;
75929 l_adr_value_type_code         VARCHAR2(30);
75930 l_adr_value_combination_id    NUMBER;
75931 l_adr_value_segment_code      VARCHAR2(30);
75932 
75933 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
75934 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
75935 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
75936 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
75937 
75938 -- 4262811 Variables ------------------------------------------------------------------------------------------
75939 l_entered_amt_idx             NUMBER;
75940 l_accted_amt_idx              NUMBER;
75941 l_acc_rev_flag                VARCHAR2(1);
75942 l_accrual_line_num            NUMBER;
75943 l_tmp_amt                     NUMBER;
75944 l_acc_rev_natural_side_code   VARCHAR2(1);
75945 
75946 l_num_entries                 NUMBER;
75947 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
75948 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
75949 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
75950 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
75951 l_recog_line_1                NUMBER;
75952 l_recog_line_2                NUMBER;
75953 
75954 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
75955 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
75956 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
75957 
75958 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75959 
75960 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
75961 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
75962 
75963 ---------------------------------------------------------------------------------------------------------------
75964 
75965 
75966 --
75967 -- bulk performance
75968 --
75969 l_balance_type_code           VARCHAR2(1);
75970 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
75971 l_log_module                  VARCHAR2(240);
75972 
75973 --
75974 -- Upgrade strategy
75975 --
75976 l_actual_upg_option           VARCHAR2(1);
75977 l_enc_upg_option           VARCHAR2(1);
75978 
75979 --
75980 BEGIN
75981 --
75982 IF g_log_enabled THEN
75983       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_158';
75984 END IF;
75985 --
75986 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75987 
75988       trace
75989          (p_msg      => 'BEGIN of AcctLineType_158'
75990          ,p_level    => C_LEVEL_PROCEDURE
75991          ,p_module   => l_log_module);
75992 
75993 END IF;
75994 --
75995 l_component_type             := 'AMB_JLT';
75996 l_component_code             := 'INTERORG_PAYABLES';
75997 l_component_type_code        := 'S';
75998 l_component_appl_id          :=  707;
75999 l_amb_context_code           := 'DEFAULT';
76000 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
76001 l_event_class_code           := 'DIR_INTERORG_RCPT';
76002 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
76003 l_line_definition_owner_code := 'S';
76004 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
76005 --
76006 l_balance_type_code          := 'A';
76007 l_segment                     := NULL;
76008 l_ccid                        := NULL;
76009 l_adr_transaction_coa_id      := NULL;
76010 l_adr_accounting_coa_id       := NULL;
76011 l_adr_flexfield_segment_code  := NULL;
76012 l_adr_flex_value_set_id       := NULL;
76013 l_adr_value_type_code         := NULL;
76014 l_adr_value_combination_id    := NULL;
76015 l_adr_value_segment_code      := NULL;
76016 
76017 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76018 l_bflow_class_code           := '';    -- 4219869 Business Flow
76019 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76020 l_budgetary_control_flag     := 'N';
76021 
76022 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76023 l_bflow_applied_to_amt       := NULL; -- 5132302
76024 l_entered_amt_idx            := NULL;          -- 4262811
76025 l_accted_amt_idx             := NULL;          -- 4262811
76026 l_acc_rev_flag               := NULL;          -- 4262811
76027 l_accrual_line_num           := NULL;          -- 4262811
76028 l_tmp_amt                    := NULL;          -- 4262811
76029 --
76030  
76031 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76032     l_balance_type_code <> 'B' THEN
76033 IF NVL(p_source_97,9E125) =  9
76034  THEN 
76035 
76036    --
76037    XLA_AE_LINES_PKG.SetNewLine;
76038 
76039    p_balance_type_code          := l_balance_type_code;
76040    -- set the flag so later we will know whether the gain loss line needs to be created
76041    
76042    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76043      p_actual_flag :='A';
76044    END IF;
76045 
76046    --
76047    -- bulk performance
76048    --
76049    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76050                                       p_header_num   => 0); -- 4262811
76051    --
76052    -- set accounting line options
76053    --
76054    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76055            p_natural_side_code          => 'D'
76056          , p_gain_or_loss_flag          => 'N'
76057          , p_gl_transfer_mode_code      => 'S'
76058          , p_acct_entry_type_code       => 'A'
76059          , p_switch_side_flag           => 'Y'
76060          , p_merge_duplicate_code       => 'N'
76061          );
76062    --
76063    l_acc_rev_natural_side_code := 'C';  -- 4262811
76064    -- 
76065    --
76066    -- set accounting line type info
76067    --
76068    xla_ae_lines_pkg.SetAcctLineType
76069       (p_component_type             => l_component_type
76070       ,p_event_type_code            => l_event_type_code
76071       ,p_line_definition_owner_code => l_line_definition_owner_code
76072       ,p_line_definition_code       => l_line_definition_code
76073       ,p_accounting_line_code       => l_component_code
76074       ,p_accounting_line_type_code  => l_component_type_code
76075       ,p_accounting_line_appl_id    => l_component_appl_id
76076       ,p_amb_context_code           => l_amb_context_code
76077       ,p_entity_code                => l_entity_code
76078       ,p_event_class_code           => l_event_class_code);
76079    --
76080    -- set accounting class
76081    --
76082    xla_ae_lines_pkg.SetAcctClass(
76083            p_accounting_class_code  => 'INTERORG_PAYABLES'
76084          , p_ae_header_id           => l_ae_header_id
76085          );
76086 
76087    --
76088    -- set rounding class
76089    --
76090    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76091                       'INTERORG_PAYABLES';
76092 
76093    --
76094    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76095    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76096    --
76097    -- bulk performance
76098    --
76099    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76100 
76101    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76102       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76103 
76104    -- 4955764
76105    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76106       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76107 
76108    -- 4458381 Public Sector Enh
76109    
76110    --
76111    -- set accounting attributes for the line type
76112    --
76113    l_entered_amt_idx := 17;
76114    l_accted_amt_idx  := 22;
76115    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
76116    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
76117    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
76118    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
76119    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
76120    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
76121    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
76122    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
76123    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
76124    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
76125    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
76126    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
76127    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
76128    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
76129    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
76130    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
76131    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
76132    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
76133    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
76134    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
76135    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
76136    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
76137    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
76138    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
76139    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
76140    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
76141    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
76142    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
76143    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
76144    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
76145    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
76146    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
76147    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
76148    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
76149    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
76150    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
76151    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
76152    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
76153    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
76154    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
76155    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
76156    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
76157    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
76158    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
76159    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
76160    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
76161    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
76162    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
76163    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
76164 
76165    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76166    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76167 
76168    ---------------------------------------------------------------------------------------------------------------
76169    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76170    ---------------------------------------------------------------------------------------------------------------
76171    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76172 
76173    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76174    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76175 
76176    IF xla_accounting_cache_pkg.GetValueChar
76177          (p_source_code         => 'LEDGER_CATEGORY_CODE'
76178          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76179    AND l_bflow_method_code = 'PRIOR_ENTRY'
76180 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76181    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76182          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76183        )
76184    THEN
76185          xla_ae_lines_pkg.BflowUpgEntry
76186            (p_business_method_code    => l_bflow_method_code
76187            ,p_business_class_code     => l_bflow_class_code
76188            ,p_balance_type            => l_balance_type_code);
76189    ELSE
76190       NULL;
76191 -- No business flow processing for business flow method of NONE.
76192    END IF;
76193 
76194    --
76195    -- call analytical criteria
76196    --
76197    
76198    --
76199    -- call description
76200    --
76201    
76202 xla_ae_lines_pkg.SetLineDescription(
76203    p_ae_header_id => l_ae_header_id
76204   ,p_description  => Description_1 (
76205      p_application_id         => p_application_id
76206    , p_ae_header_id           => l_ae_header_id 
76207 , p_source_1 => p_source_1
76208 , p_source_2 => p_source_2
76209 , p_source_3 => p_source_3
76210 , p_source_4 => p_source_4
76211 , p_source_5 => p_source_5
76212    )
76213 );
76214 
76215 
76216    --
76217    -- call ADRs
76218    -- Bug 4922099
76219    --
76220    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76221         (NVL(l_actual_upg_option, 'N') = 'O') OR
76222         (NVL(l_enc_upg_option, 'N') = 'O')
76223       )
76224    THEN
76225    NULL;
76226    --
76227    --
76228    
76229   l_ccid := AcctDerRule_20(
76230            p_application_id           => p_application_id
76231          , p_ae_header_id             => l_ae_header_id 
76232 , p_source_35 => p_source_35
76233          , x_transaction_coa_id       => l_adr_transaction_coa_id
76234          , x_accounting_coa_id        => l_adr_accounting_coa_id
76235          , x_value_type_code          => l_adr_value_type_code
76236          , p_side                     => 'NA'
76237    );
76238 
76239    xla_ae_lines_pkg.set_ccid(
76240     p_code_combination_id          => l_ccid
76241   , p_value_type_code              => l_adr_value_type_code
76242   , p_transaction_coa_id           => l_adr_transaction_coa_id
76243   , p_accounting_coa_id            => l_adr_accounting_coa_id
76244   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
76245   , p_adr_type_code                => 'S'
76246   , p_component_type               => l_component_type
76247   , p_component_code               => l_component_code
76248   , p_component_type_code          => l_component_type_code
76249   , p_component_appl_id            => l_component_appl_id
76250   , p_amb_context_code             => l_amb_context_code
76251   , p_side                         => 'NA'
76252   );
76253 
76254 
76255    --
76256    --
76257    END IF;
76258    --
76259    -- Bug 4922099
76260    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76261           (NVL(l_enc_upg_option, 'N') = 'O')
76262         ) AND
76263         (l_bflow_method_code = 'PRIOR_ENTRY')
76264       )
76265    THEN
76266       IF
76267       --
76268       1 = 2
76269       --
76270       THEN
76271       xla_accounting_err_pkg.build_message
76272                                     (p_appli_s_name            => 'XLA'
76273                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76274                                     ,p_token_1                 => 'LINE_NUMBER'
76275                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
76276                                     ,p_token_2                 => 'LINE_TYPE_NAME'
76277                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
76278                                                                              l_component_type
76279                                                                             ,l_component_code
76280                                                                             ,l_component_type_code
76281                                                                             ,l_component_appl_id
76282                                                                             ,l_amb_context_code
76283                                                                             ,l_entity_code
76284                                                                             ,l_event_class_code
76285                                                                            )
76286                                     ,p_token_3                 => 'OWNER'
76287                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
76288                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
76289                                                                           ,p_lookup_code    => l_component_type_code
76290                                                                          )
76291                                     ,p_token_4                 => 'PRODUCT_NAME'
76292                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76293                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76294                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76295                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76296                                     ,p_ae_header_id            =>  NULL
76297                                        );
76298 
76299         IF (C_LEVEL_ERROR>= g_log_level) THEN
76300                  trace
76301                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76302                       ,p_level    => C_LEVEL_ERROR
76303                       ,p_module   => l_log_module);
76304         END IF;
76305       END IF;
76306    END IF;
76307    --
76308    --
76309    ------------------------------------------------------------------------------------------------
76310    -- 4219869 Business Flow
76311    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76312    -- Prior Entry.  Currently, the following code is always generated.
76313    ------------------------------------------------------------------------------------------------
76314    XLA_AE_LINES_PKG.ValidateCurrentLine;
76315 
76316    ------------------------------------------------------------------------------------
76317    -- 4219869 Business Flow
76318    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76319    ------------------------------------------------------------------------------------
76320    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76321 
76322    ----------------------------------------------------------------------------------
76323    -- 4219869 Business Flow
76324    -- Update journal entry status -- Need to generate this within IF <condition>
76325    ----------------------------------------------------------------------------------
76326    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76327          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76328          ,p_balance_type_code => l_balance_type_code
76329          );
76330 
76331    -------------------------------------------------------------------------------------------
76332    -- 4262811 - Generate the Accrual Reversal lines
76333    -------------------------------------------------------------------------------------------
76334    BEGIN
76335       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76336                               (g_array_event(p_event_id).array_value_num('header_index'));
76337       IF l_acc_rev_flag IS NULL THEN
76338          l_acc_rev_flag := 'N';
76339       END IF;
76340    EXCEPTION
76341       WHEN OTHERS THEN
76342          l_acc_rev_flag := 'N';
76343    END;
76344    --
76345    IF (l_acc_rev_flag = 'Y') THEN
76346 
76347        -- 4645092  ------------------------------------------------------------------------------
76348        -- To allow MPA report to determine if it should generate report process
76349        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76350        ------------------------------------------------------------------------------------------
76351 
76352        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76353        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76354    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
76355    -- call ADRs
76356    -- Bug 4922099
76357    --
76358    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76359         (NVL(l_actual_upg_option, 'N') = 'O') OR
76360         (NVL(l_enc_upg_option, 'N') = 'O')
76361       )
76362    THEN
76363    NULL;
76364    --
76365    --
76366    
76367   l_ccid := AcctDerRule_20(
76368            p_application_id           => p_application_id
76369          , p_ae_header_id             => l_ae_header_id 
76370 , p_source_35 => p_source_35
76371          , x_transaction_coa_id       => l_adr_transaction_coa_id
76372          , x_accounting_coa_id        => l_adr_accounting_coa_id
76373          , x_value_type_code          => l_adr_value_type_code
76374          , p_side                     => 'NA'
76375    );
76376 
76377    xla_ae_lines_pkg.set_ccid(
76378     p_code_combination_id          => l_ccid
76379   , p_value_type_code              => l_adr_value_type_code
76380   , p_transaction_coa_id           => l_adr_transaction_coa_id
76381   , p_accounting_coa_id            => l_adr_accounting_coa_id
76382   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
76383   , p_adr_type_code                => 'S'
76384   , p_component_type               => l_component_type
76385   , p_component_code               => l_component_code
76386   , p_component_type_code          => l_component_type_code
76387   , p_component_appl_id            => l_component_appl_id
76388   , p_amb_context_code             => l_amb_context_code
76389   , p_side                         => 'NA'
76390   );
76391 
76392 
76393    --
76394    --
76395    END IF;
76396 
76397        --
76398        -- Update the line information that should be overwritten
76399        --
76400        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76401                                          p_header_num   => 1);
76402        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
76403 
76404        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76405 
76406        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
76407           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76408        END IF;
76409 
76410       --
76411       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76412       --
76413       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76414           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
76415       ELSE
76416           ---------------------------------------------------------------------------------------------------
76417           -- 4262811a Switch Sign
76418           ---------------------------------------------------------------------------------------------------
76419           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
76420           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76421                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76422           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76423                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76424           -- 5132302
76425           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76426                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76427 
76428       END IF;
76429 
76430       -- 4955764
76431       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76432       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76433 
76434 
76435       XLA_AE_LINES_PKG.ValidateCurrentLine;
76436       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76437 
76438       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76439                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76440                ,p_balance_type_code => l_balance_type_code);
76441 
76442    END IF;
76443 
76444    -----------------------------------------------------------------------------------------
76445    -- 4262811 Multiperiod Accounting
76446    -----------------------------------------------------------------------------------------
76447      -- No MPA option is assigned.
76448 
76449 
76450 END IF;
76451 END IF;
76452 --
76453 
76454 --
76455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76456    trace
76457       (p_msg      => 'END of AcctLineType_158'
76458       ,p_level    => C_LEVEL_PROCEDURE
76459       ,p_module   => l_log_module);
76460 END IF;
76461 --
76462 EXCEPTION
76463   WHEN xla_exceptions_pkg.application_exception THEN
76464       RAISE;
76465   WHEN OTHERS THEN
76466        xla_exceptions_pkg.raise_message
76467            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_158');
76468 END AcctLineType_158;
76469 --
76470 
76471 ---------------------------------------
76472 --
76473 -- PRIVATE FUNCTION
76474 --         AcctLineType_159
76475 --
76476 ---------------------------------------
76477 PROCEDURE AcctLineType_159 (
76478   p_application_id        IN NUMBER
76479  ,p_event_id              IN NUMBER
76480  ,p_calculate_acctd_flag  IN VARCHAR2
76481  ,p_calculate_g_l_flag    IN VARCHAR2
76482  ,p_actual_flag           IN OUT VARCHAR2
76483  ,p_balance_type_code     OUT VARCHAR2
76484  ,p_gain_or_loss_ref      OUT VARCHAR2
76485  
76486 --TRANSACTION_ID
76487  , p_source_1            IN NUMBER
76488 --Item Concatenated Segments
76489  , p_source_2            IN VARCHAR2
76490 --Transaction Quantity
76491  , p_source_3            IN NUMBER
76492 --Transaction Unit of Measure Code
76493  , p_source_4            IN VARCHAR2
76494 --Inventory Transaction Type Description
76495  , p_source_5            IN VARCHAR2
76496 --Cost Management Default Account
76497  , p_source_11            IN NUMBER
76498 --DISTRIBUTION_IDENTIFIER
76499  , p_source_84            IN NUMBER
76500 --Distribution Type
76501  , p_source_85            IN VARCHAR2
76502  , p_source_85_meaning    IN VARCHAR2
76503 --Entered Currency Code
76504  , p_source_88            IN VARCHAR2
76505 --Entered Amount
76506  , p_source_91            IN NUMBER
76507 --Currency Conversion Date
76508  , p_source_92            IN DATE
76509 --Currency Conversion Rate
76510  , p_source_93            IN NUMBER
76511 --Currency Conversion Type
76512  , p_source_94            IN VARCHAR2
76513 --Accounted Amount
76514  , p_source_95            IN NUMBER
76515 --Accounting Line Type
76516  , p_source_97            IN NUMBER
76517 )
76518 IS
76519 
76520 l_component_type              VARCHAR2(80);
76521 l_component_code              VARCHAR2(30);
76522 l_component_type_code         VARCHAR2(1);
76523 l_component_appl_id           INTEGER;
76524 l_amb_context_code            VARCHAR2(30);
76525 l_entity_code                 VARCHAR2(30);
76526 l_event_class_code            VARCHAR2(30);
76527 l_ae_header_id                NUMBER;
76528 l_event_type_code             VARCHAR2(30);
76529 l_line_definition_code        VARCHAR2(30);
76530 l_line_definition_owner_code  VARCHAR2(1);
76531 --
76532 -- adr variables
76533 l_segment                     VARCHAR2(30);
76534 l_ccid                        NUMBER;
76535 l_adr_transaction_coa_id      NUMBER;
76536 l_adr_accounting_coa_id       NUMBER;
76537 l_adr_flexfield_segment_code  VARCHAR2(30);
76538 l_adr_flex_value_set_id       NUMBER;
76539 l_adr_value_type_code         VARCHAR2(30);
76540 l_adr_value_combination_id    NUMBER;
76541 l_adr_value_segment_code      VARCHAR2(30);
76542 
76543 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
76544 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
76545 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
76546 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
76547 
76548 -- 4262811 Variables ------------------------------------------------------------------------------------------
76549 l_entered_amt_idx             NUMBER;
76550 l_accted_amt_idx              NUMBER;
76551 l_acc_rev_flag                VARCHAR2(1);
76552 l_accrual_line_num            NUMBER;
76553 l_tmp_amt                     NUMBER;
76554 l_acc_rev_natural_side_code   VARCHAR2(1);
76555 
76556 l_num_entries                 NUMBER;
76557 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
76558 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
76559 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
76560 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
76561 l_recog_line_1                NUMBER;
76562 l_recog_line_2                NUMBER;
76563 
76564 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
76565 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
76566 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
76567 
76568 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76569 
76570 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
76571 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
76572 
76573 ---------------------------------------------------------------------------------------------------------------
76574 
76575 
76576 --
76577 -- bulk performance
76578 --
76579 l_balance_type_code           VARCHAR2(1);
76580 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
76581 l_log_module                  VARCHAR2(240);
76582 
76583 --
76584 -- Upgrade strategy
76585 --
76586 l_actual_upg_option           VARCHAR2(1);
76587 l_enc_upg_option           VARCHAR2(1);
76588 
76589 --
76590 BEGIN
76591 --
76592 IF g_log_enabled THEN
76593       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_159';
76594 END IF;
76595 --
76596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76597 
76598       trace
76599          (p_msg      => 'BEGIN of AcctLineType_159'
76600          ,p_level    => C_LEVEL_PROCEDURE
76601          ,p_module   => l_log_module);
76602 
76603 END IF;
76604 --
76605 l_component_type             := 'AMB_JLT';
76606 l_component_code             := 'INTERORG_PAYABLES';
76607 l_component_type_code        := 'S';
76608 l_component_appl_id          :=  707;
76609 l_amb_context_code           := 'DEFAULT';
76610 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
76611 l_event_class_code           := 'DIR_INTERORG_SHIP';
76612 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
76613 l_line_definition_owner_code := 'S';
76614 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
76615 --
76616 l_balance_type_code          := 'A';
76617 l_segment                     := NULL;
76618 l_ccid                        := NULL;
76619 l_adr_transaction_coa_id      := NULL;
76620 l_adr_accounting_coa_id       := NULL;
76621 l_adr_flexfield_segment_code  := NULL;
76622 l_adr_flex_value_set_id       := NULL;
76623 l_adr_value_type_code         := NULL;
76624 l_adr_value_combination_id    := NULL;
76625 l_adr_value_segment_code      := NULL;
76626 
76627 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
76628 l_bflow_class_code           := '';    -- 4219869 Business Flow
76629 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
76630 l_budgetary_control_flag     := 'N';
76631 
76632 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
76633 l_bflow_applied_to_amt       := NULL; -- 5132302
76634 l_entered_amt_idx            := NULL;          -- 4262811
76635 l_accted_amt_idx             := NULL;          -- 4262811
76636 l_acc_rev_flag               := NULL;          -- 4262811
76637 l_accrual_line_num           := NULL;          -- 4262811
76638 l_tmp_amt                    := NULL;          -- 4262811
76639 --
76640  
76641 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76642     l_balance_type_code <> 'B' THEN
76643 IF NVL(p_source_97,9E125) =  9
76644  THEN 
76645 
76646    --
76647    XLA_AE_LINES_PKG.SetNewLine;
76648 
76649    p_balance_type_code          := l_balance_type_code;
76650    -- set the flag so later we will know whether the gain loss line needs to be created
76651    
76652    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76653      p_actual_flag :='A';
76654    END IF;
76655 
76656    --
76657    -- bulk performance
76658    --
76659    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76660                                       p_header_num   => 0); -- 4262811
76661    --
76662    -- set accounting line options
76663    --
76664    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76665            p_natural_side_code          => 'D'
76666          , p_gain_or_loss_flag          => 'N'
76667          , p_gl_transfer_mode_code      => 'S'
76668          , p_acct_entry_type_code       => 'A'
76669          , p_switch_side_flag           => 'Y'
76670          , p_merge_duplicate_code       => 'N'
76671          );
76672    --
76673    l_acc_rev_natural_side_code := 'C';  -- 4262811
76674    -- 
76675    --
76676    -- set accounting line type info
76677    --
76678    xla_ae_lines_pkg.SetAcctLineType
76679       (p_component_type             => l_component_type
76680       ,p_event_type_code            => l_event_type_code
76681       ,p_line_definition_owner_code => l_line_definition_owner_code
76682       ,p_line_definition_code       => l_line_definition_code
76683       ,p_accounting_line_code       => l_component_code
76684       ,p_accounting_line_type_code  => l_component_type_code
76685       ,p_accounting_line_appl_id    => l_component_appl_id
76686       ,p_amb_context_code           => l_amb_context_code
76687       ,p_entity_code                => l_entity_code
76688       ,p_event_class_code           => l_event_class_code);
76689    --
76690    -- set accounting class
76691    --
76692    xla_ae_lines_pkg.SetAcctClass(
76693            p_accounting_class_code  => 'INTERORG_PAYABLES'
76694          , p_ae_header_id           => l_ae_header_id
76695          );
76696 
76697    --
76698    -- set rounding class
76699    --
76700    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76701                       'INTERORG_PAYABLES';
76702 
76703    --
76704    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76705    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76706    --
76707    -- bulk performance
76708    --
76709    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76710 
76711    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76712       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76713 
76714    -- 4955764
76715    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76716       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76717 
76718    -- 4458381 Public Sector Enh
76719    
76720    --
76721    -- set accounting attributes for the line type
76722    --
76723    l_entered_amt_idx := 3;
76724    l_accted_amt_idx  := 8;
76725    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
76726    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
76727    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
76728    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
76729    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
76730    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
76731    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
76732    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
76733    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
76734    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
76735    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
76736    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
76737    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
76738    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
76739    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
76740    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
76741    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
76742 
76743    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76744    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76745 
76746    ---------------------------------------------------------------------------------------------------------------
76747    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76748    ---------------------------------------------------------------------------------------------------------------
76749    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76750 
76751    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76752    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76753 
76754    IF xla_accounting_cache_pkg.GetValueChar
76755          (p_source_code         => 'LEDGER_CATEGORY_CODE'
76756          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76757    AND l_bflow_method_code = 'PRIOR_ENTRY'
76758 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76759    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76760          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76761        )
76762    THEN
76763          xla_ae_lines_pkg.BflowUpgEntry
76764            (p_business_method_code    => l_bflow_method_code
76765            ,p_business_class_code     => l_bflow_class_code
76766            ,p_balance_type            => l_balance_type_code);
76767    ELSE
76768       NULL;
76769 -- No business flow processing for business flow method of NONE.
76770    END IF;
76771 
76772    --
76773    -- call analytical criteria
76774    --
76775    
76776    --
76777    -- call description
76778    --
76779    
76780 xla_ae_lines_pkg.SetLineDescription(
76781    p_ae_header_id => l_ae_header_id
76782   ,p_description  => Description_1 (
76783      p_application_id         => p_application_id
76784    , p_ae_header_id           => l_ae_header_id 
76785 , p_source_1 => p_source_1
76786 , p_source_2 => p_source_2
76787 , p_source_3 => p_source_3
76788 , p_source_4 => p_source_4
76789 , p_source_5 => p_source_5
76790    )
76791 );
76792 
76793 
76794    --
76795    -- call ADRs
76796    -- Bug 4922099
76797    --
76798    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76799         (NVL(l_actual_upg_option, 'N') = 'O') OR
76800         (NVL(l_enc_upg_option, 'N') = 'O')
76801       )
76802    THEN
76803    NULL;
76804    --
76805    --
76806    
76807   l_ccid := AcctDerRule_6(
76808            p_application_id           => p_application_id
76809          , p_ae_header_id             => l_ae_header_id 
76810 , p_source_11 => p_source_11
76811          , x_transaction_coa_id       => l_adr_transaction_coa_id
76812          , x_accounting_coa_id        => l_adr_accounting_coa_id
76813          , x_value_type_code          => l_adr_value_type_code
76814          , p_side                     => 'NA'
76815    );
76816 
76817    xla_ae_lines_pkg.set_ccid(
76818     p_code_combination_id          => l_ccid
76819   , p_value_type_code              => l_adr_value_type_code
76820   , p_transaction_coa_id           => l_adr_transaction_coa_id
76821   , p_accounting_coa_id            => l_adr_accounting_coa_id
76822   , p_adr_code                     => 'CST_DEFAULT'
76823   , p_adr_type_code                => 'S'
76824   , p_component_type               => l_component_type
76825   , p_component_code               => l_component_code
76826   , p_component_type_code          => l_component_type_code
76827   , p_component_appl_id            => l_component_appl_id
76828   , p_amb_context_code             => l_amb_context_code
76829   , p_side                         => 'NA'
76830   );
76831 
76832 
76833    --
76834    --
76835    END IF;
76836    --
76837    -- Bug 4922099
76838    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76839           (NVL(l_enc_upg_option, 'N') = 'O')
76840         ) AND
76841         (l_bflow_method_code = 'PRIOR_ENTRY')
76842       )
76843    THEN
76844       IF
76845       --
76846       1 = 2
76847       --
76848       THEN
76849       xla_accounting_err_pkg.build_message
76850                                     (p_appli_s_name            => 'XLA'
76851                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76852                                     ,p_token_1                 => 'LINE_NUMBER'
76853                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
76854                                     ,p_token_2                 => 'LINE_TYPE_NAME'
76855                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
76856                                                                              l_component_type
76857                                                                             ,l_component_code
76858                                                                             ,l_component_type_code
76859                                                                             ,l_component_appl_id
76860                                                                             ,l_amb_context_code
76861                                                                             ,l_entity_code
76862                                                                             ,l_event_class_code
76863                                                                            )
76864                                     ,p_token_3                 => 'OWNER'
76865                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
76866                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
76867                                                                           ,p_lookup_code    => l_component_type_code
76868                                                                          )
76869                                     ,p_token_4                 => 'PRODUCT_NAME'
76870                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76871                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76872                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76873                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76874                                     ,p_ae_header_id            =>  NULL
76875                                        );
76876 
76877         IF (C_LEVEL_ERROR>= g_log_level) THEN
76878                  trace
76879                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76880                       ,p_level    => C_LEVEL_ERROR
76881                       ,p_module   => l_log_module);
76882         END IF;
76883       END IF;
76884    END IF;
76885    --
76886    --
76887    ------------------------------------------------------------------------------------------------
76888    -- 4219869 Business Flow
76889    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76890    -- Prior Entry.  Currently, the following code is always generated.
76891    ------------------------------------------------------------------------------------------------
76892    XLA_AE_LINES_PKG.ValidateCurrentLine;
76893 
76894    ------------------------------------------------------------------------------------
76895    -- 4219869 Business Flow
76896    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76897    ------------------------------------------------------------------------------------
76898    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76899 
76900    ----------------------------------------------------------------------------------
76901    -- 4219869 Business Flow
76902    -- Update journal entry status -- Need to generate this within IF <condition>
76903    ----------------------------------------------------------------------------------
76904    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76905          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76906          ,p_balance_type_code => l_balance_type_code
76907          );
76908 
76909    -------------------------------------------------------------------------------------------
76910    -- 4262811 - Generate the Accrual Reversal lines
76911    -------------------------------------------------------------------------------------------
76912    BEGIN
76913       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76914                               (g_array_event(p_event_id).array_value_num('header_index'));
76915       IF l_acc_rev_flag IS NULL THEN
76916          l_acc_rev_flag := 'N';
76917       END IF;
76918    EXCEPTION
76919       WHEN OTHERS THEN
76920          l_acc_rev_flag := 'N';
76921    END;
76922    --
76923    IF (l_acc_rev_flag = 'Y') THEN
76924 
76925        -- 4645092  ------------------------------------------------------------------------------
76926        -- To allow MPA report to determine if it should generate report process
76927        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76928        ------------------------------------------------------------------------------------------
76929 
76930        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76931        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76932    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
76933    -- call ADRs
76934    -- Bug 4922099
76935    --
76936    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76937         (NVL(l_actual_upg_option, 'N') = 'O') OR
76938         (NVL(l_enc_upg_option, 'N') = 'O')
76939       )
76940    THEN
76941    NULL;
76942    --
76943    --
76944    
76945   l_ccid := AcctDerRule_6(
76946            p_application_id           => p_application_id
76947          , p_ae_header_id             => l_ae_header_id 
76948 , p_source_11 => p_source_11
76949          , x_transaction_coa_id       => l_adr_transaction_coa_id
76950          , x_accounting_coa_id        => l_adr_accounting_coa_id
76951          , x_value_type_code          => l_adr_value_type_code
76952          , p_side                     => 'NA'
76953    );
76954 
76955    xla_ae_lines_pkg.set_ccid(
76956     p_code_combination_id          => l_ccid
76957   , p_value_type_code              => l_adr_value_type_code
76958   , p_transaction_coa_id           => l_adr_transaction_coa_id
76959   , p_accounting_coa_id            => l_adr_accounting_coa_id
76960   , p_adr_code                     => 'CST_DEFAULT'
76961   , p_adr_type_code                => 'S'
76962   , p_component_type               => l_component_type
76963   , p_component_code               => l_component_code
76964   , p_component_type_code          => l_component_type_code
76965   , p_component_appl_id            => l_component_appl_id
76966   , p_amb_context_code             => l_amb_context_code
76967   , p_side                         => 'NA'
76968   );
76969 
76970 
76971    --
76972    --
76973    END IF;
76974 
76975        --
76976        -- Update the line information that should be overwritten
76977        --
76978        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76979                                          p_header_num   => 1);
76980        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
76981 
76982        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76983 
76984        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
76985           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76986        END IF;
76987 
76988       --
76989       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76990       --
76991       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76992           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
76993       ELSE
76994           ---------------------------------------------------------------------------------------------------
76995           -- 4262811a Switch Sign
76996           ---------------------------------------------------------------------------------------------------
76997           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
76998           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76999                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77000           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77001                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77002           -- 5132302
77003           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77004                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77005 
77006       END IF;
77007 
77008       -- 4955764
77009       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77010       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77011 
77012 
77013       XLA_AE_LINES_PKG.ValidateCurrentLine;
77014       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77015 
77016       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77017                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77018                ,p_balance_type_code => l_balance_type_code);
77019 
77020    END IF;
77021 
77022    -----------------------------------------------------------------------------------------
77023    -- 4262811 Multiperiod Accounting
77024    -----------------------------------------------------------------------------------------
77025      -- No MPA option is assigned.
77026 
77027 
77028 END IF;
77029 END IF;
77030 --
77031 
77032 --
77033 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77034    trace
77035       (p_msg      => 'END of AcctLineType_159'
77036       ,p_level    => C_LEVEL_PROCEDURE
77037       ,p_module   => l_log_module);
77038 END IF;
77039 --
77040 EXCEPTION
77041   WHEN xla_exceptions_pkg.application_exception THEN
77042       RAISE;
77043   WHEN OTHERS THEN
77044        xla_exceptions_pkg.raise_message
77045            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_159');
77046 END AcctLineType_159;
77047 --
77048 
77049 ---------------------------------------
77050 --
77051 -- PRIVATE FUNCTION
77052 --         AcctLineType_160
77053 --
77054 ---------------------------------------
77055 PROCEDURE AcctLineType_160 (
77056   p_application_id        IN NUMBER
77057  ,p_event_id              IN NUMBER
77058  ,p_calculate_acctd_flag  IN VARCHAR2
77059  ,p_calculate_g_l_flag    IN VARCHAR2
77060  ,p_actual_flag           IN OUT VARCHAR2
77061  ,p_balance_type_code     OUT VARCHAR2
77062  ,p_gain_or_loss_ref      OUT VARCHAR2
77063  
77064 --TRANSACTION_ID
77065  , p_source_1            IN NUMBER
77066 --Item Concatenated Segments
77067  , p_source_2            IN VARCHAR2
77068 --Transaction Quantity
77069  , p_source_3            IN NUMBER
77070 --Transaction Unit of Measure Code
77071  , p_source_4            IN VARCHAR2
77072 --Inventory Transaction Type Description
77073  , p_source_5            IN VARCHAR2
77074 --Interorg Payables Account
77075  , p_source_35            IN NUMBER
77076 --Applied to Application ID
77077  , p_source_79            IN NUMBER
77078 --Applied to Distribution Link Type
77079  , p_source_80            IN VARCHAR2
77080 --Applied to Entity Code
77081  , p_source_81            IN VARCHAR2
77082 --DISTRIBUTION_IDENTIFIER
77083  , p_source_84            IN NUMBER
77084 --Distribution Type
77085  , p_source_85            IN VARCHAR2
77086  , p_source_85_meaning    IN VARCHAR2
77087 --Encumbrance Reversal Amount Entered
77088  , p_source_87            IN NUMBER
77089 --Entered Currency Code
77090  , p_source_88            IN VARCHAR2
77091 --Transaction Encumbrance Reversal Amount
77092  , p_source_89            IN NUMBER
77093 --Entered Amount
77094  , p_source_91            IN NUMBER
77095 --Currency Conversion Date
77096  , p_source_92            IN DATE
77097 --Currency Conversion Rate
77098  , p_source_93            IN NUMBER
77099 --Currency Conversion Type
77100  , p_source_94            IN VARCHAR2
77101 --Accounted Amount
77102  , p_source_95            IN NUMBER
77103 --Accounting Line Type
77104  , p_source_97            IN NUMBER
77105 --Costing Encumbrance Upgrade Option
77106  , p_source_100            IN VARCHAR2
77107 --TXN_PO_DISTRIBUTION_ID
77108  , p_source_101            IN NUMBER
77109 --TXN_PO_HEADER_ID
77110  , p_source_102            IN NUMBER
77111 --Requisition Budget Account
77112  , p_source_103            IN NUMBER
77113 --Requisition Encumbrance Type Identifier
77114  , p_source_104            IN NUMBER
77115 )
77116 IS
77117 
77118 l_component_type              VARCHAR2(80);
77119 l_component_code              VARCHAR2(30);
77120 l_component_type_code         VARCHAR2(1);
77121 l_component_appl_id           INTEGER;
77122 l_amb_context_code            VARCHAR2(30);
77123 l_entity_code                 VARCHAR2(30);
77124 l_event_class_code            VARCHAR2(30);
77125 l_ae_header_id                NUMBER;
77126 l_event_type_code             VARCHAR2(30);
77127 l_line_definition_code        VARCHAR2(30);
77128 l_line_definition_owner_code  VARCHAR2(1);
77129 --
77130 -- adr variables
77131 l_segment                     VARCHAR2(30);
77132 l_ccid                        NUMBER;
77133 l_adr_transaction_coa_id      NUMBER;
77134 l_adr_accounting_coa_id       NUMBER;
77135 l_adr_flexfield_segment_code  VARCHAR2(30);
77136 l_adr_flex_value_set_id       NUMBER;
77137 l_adr_value_type_code         VARCHAR2(30);
77138 l_adr_value_combination_id    NUMBER;
77139 l_adr_value_segment_code      VARCHAR2(30);
77140 
77141 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
77142 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
77143 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
77144 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
77145 
77146 -- 4262811 Variables ------------------------------------------------------------------------------------------
77147 l_entered_amt_idx             NUMBER;
77148 l_accted_amt_idx              NUMBER;
77149 l_acc_rev_flag                VARCHAR2(1);
77150 l_accrual_line_num            NUMBER;
77151 l_tmp_amt                     NUMBER;
77152 l_acc_rev_natural_side_code   VARCHAR2(1);
77153 
77154 l_num_entries                 NUMBER;
77155 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
77156 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
77157 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
77158 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
77159 l_recog_line_1                NUMBER;
77160 l_recog_line_2                NUMBER;
77161 
77162 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
77163 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
77164 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
77165 
77166 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77167 
77168 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
77169 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
77170 
77171 ---------------------------------------------------------------------------------------------------------------
77172 
77173 
77174 --
77175 -- bulk performance
77176 --
77177 l_balance_type_code           VARCHAR2(1);
77178 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
77179 l_log_module                  VARCHAR2(240);
77180 
77181 --
77182 -- Upgrade strategy
77183 --
77184 l_actual_upg_option           VARCHAR2(1);
77185 l_enc_upg_option           VARCHAR2(1);
77186 
77187 --
77188 BEGIN
77189 --
77190 IF g_log_enabled THEN
77191       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_160';
77192 END IF;
77193 --
77194 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77195 
77196       trace
77197          (p_msg      => 'BEGIN of AcctLineType_160'
77198          ,p_level    => C_LEVEL_PROCEDURE
77199          ,p_module   => l_log_module);
77200 
77201 END IF;
77202 --
77203 l_component_type             := 'AMB_JLT';
77204 l_component_code             := 'INTERORG_PAYABLES';
77205 l_component_type_code        := 'S';
77206 l_component_appl_id          :=  707;
77207 l_amb_context_code           := 'DEFAULT';
77208 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
77209 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
77210 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
77211 l_line_definition_owner_code := 'S';
77212 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
77213 --
77214 l_balance_type_code          := 'A';
77215 l_segment                     := NULL;
77216 l_ccid                        := NULL;
77217 l_adr_transaction_coa_id      := NULL;
77218 l_adr_accounting_coa_id       := NULL;
77219 l_adr_flexfield_segment_code  := NULL;
77220 l_adr_flex_value_set_id       := NULL;
77221 l_adr_value_type_code         := NULL;
77222 l_adr_value_combination_id    := NULL;
77223 l_adr_value_segment_code      := NULL;
77224 
77225 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
77226 l_bflow_class_code           := '';    -- 4219869 Business Flow
77227 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
77228 l_budgetary_control_flag     := 'N';
77229 
77230 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
77231 l_bflow_applied_to_amt       := NULL; -- 5132302
77232 l_entered_amt_idx            := NULL;          -- 4262811
77233 l_accted_amt_idx             := NULL;          -- 4262811
77234 l_acc_rev_flag               := NULL;          -- 4262811
77235 l_accrual_line_num           := NULL;          -- 4262811
77236 l_tmp_amt                    := NULL;          -- 4262811
77237 --
77238  
77239 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77240     l_balance_type_code <> 'B' THEN
77241 IF NVL(p_source_97,9E125) =  9
77242  THEN 
77243 
77244    --
77245    XLA_AE_LINES_PKG.SetNewLine;
77246 
77247    p_balance_type_code          := l_balance_type_code;
77248    -- set the flag so later we will know whether the gain loss line needs to be created
77249    
77250    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77251      p_actual_flag :='A';
77252    END IF;
77253 
77254    --
77255    -- bulk performance
77256    --
77257    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77258                                       p_header_num   => 0); -- 4262811
77259    --
77260    -- set accounting line options
77261    --
77262    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77263            p_natural_side_code          => 'D'
77264          , p_gain_or_loss_flag          => 'N'
77265          , p_gl_transfer_mode_code      => 'S'
77266          , p_acct_entry_type_code       => 'A'
77267          , p_switch_side_flag           => 'Y'
77268          , p_merge_duplicate_code       => 'N'
77269          );
77270    --
77271    l_acc_rev_natural_side_code := 'C';  -- 4262811
77272    -- 
77273    --
77274    -- set accounting line type info
77275    --
77276    xla_ae_lines_pkg.SetAcctLineType
77277       (p_component_type             => l_component_type
77278       ,p_event_type_code            => l_event_type_code
77279       ,p_line_definition_owner_code => l_line_definition_owner_code
77280       ,p_line_definition_code       => l_line_definition_code
77281       ,p_accounting_line_code       => l_component_code
77282       ,p_accounting_line_type_code  => l_component_type_code
77283       ,p_accounting_line_appl_id    => l_component_appl_id
77284       ,p_amb_context_code           => l_amb_context_code
77285       ,p_entity_code                => l_entity_code
77286       ,p_event_class_code           => l_event_class_code);
77287    --
77288    -- set accounting class
77289    --
77290    xla_ae_lines_pkg.SetAcctClass(
77291            p_accounting_class_code  => 'INTERORG_PAYABLES'
77292          , p_ae_header_id           => l_ae_header_id
77293          );
77294 
77295    --
77296    -- set rounding class
77297    --
77298    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77299                       'INTERORG_PAYABLES';
77300 
77301    --
77302    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77303    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77304    --
77305    -- bulk performance
77306    --
77307    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77308 
77309    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77310       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77311 
77312    -- 4955764
77313    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77315 
77316    -- 4458381 Public Sector Enh
77317    
77318    --
77319    -- set accounting attributes for the line type
77320    --
77321    l_entered_amt_idx := 17;
77322    l_accted_amt_idx  := 22;
77323    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
77324    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
77325    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
77326    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
77327    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
77328    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
77329    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
77330    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
77331    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
77332    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
77333    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
77334    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
77335    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
77336    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
77337    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
77338    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
77339    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
77340    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
77341    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
77342    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
77343    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
77344    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
77345    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
77346    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
77347    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
77348    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
77349    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
77350    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
77351    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
77352    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
77353    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
77354    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
77355    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
77356    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
77357    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
77358    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
77359    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
77360    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
77361    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
77362    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
77363    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
77364    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
77365    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
77366    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
77367    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
77368    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
77369    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
77370    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
77371    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
77372 
77373    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77374    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77375 
77376    ---------------------------------------------------------------------------------------------------------------
77377    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77378    ---------------------------------------------------------------------------------------------------------------
77379    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77380 
77381    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77382    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77383 
77384    IF xla_accounting_cache_pkg.GetValueChar
77385          (p_source_code         => 'LEDGER_CATEGORY_CODE'
77386          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77387    AND l_bflow_method_code = 'PRIOR_ENTRY'
77388 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77389    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77390          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77391        )
77392    THEN
77393          xla_ae_lines_pkg.BflowUpgEntry
77394            (p_business_method_code    => l_bflow_method_code
77395            ,p_business_class_code     => l_bflow_class_code
77396            ,p_balance_type            => l_balance_type_code);
77397    ELSE
77398       NULL;
77399 -- No business flow processing for business flow method of NONE.
77400    END IF;
77401 
77402    --
77403    -- call analytical criteria
77404    --
77405    
77406    --
77407    -- call description
77408    --
77409    
77410 xla_ae_lines_pkg.SetLineDescription(
77411    p_ae_header_id => l_ae_header_id
77412   ,p_description  => Description_1 (
77413      p_application_id         => p_application_id
77414    , p_ae_header_id           => l_ae_header_id 
77415 , p_source_1 => p_source_1
77416 , p_source_2 => p_source_2
77417 , p_source_3 => p_source_3
77418 , p_source_4 => p_source_4
77419 , p_source_5 => p_source_5
77420    )
77421 );
77422 
77423 
77424    --
77425    -- call ADRs
77426    -- Bug 4922099
77427    --
77428    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77429         (NVL(l_actual_upg_option, 'N') = 'O') OR
77430         (NVL(l_enc_upg_option, 'N') = 'O')
77431       )
77432    THEN
77433    NULL;
77434    --
77435    --
77436    
77437   l_ccid := AcctDerRule_20(
77438            p_application_id           => p_application_id
77439          , p_ae_header_id             => l_ae_header_id 
77440 , p_source_35 => p_source_35
77441          , x_transaction_coa_id       => l_adr_transaction_coa_id
77442          , x_accounting_coa_id        => l_adr_accounting_coa_id
77443          , x_value_type_code          => l_adr_value_type_code
77444          , p_side                     => 'NA'
77445    );
77446 
77447    xla_ae_lines_pkg.set_ccid(
77448     p_code_combination_id          => l_ccid
77449   , p_value_type_code              => l_adr_value_type_code
77450   , p_transaction_coa_id           => l_adr_transaction_coa_id
77451   , p_accounting_coa_id            => l_adr_accounting_coa_id
77452   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
77453   , p_adr_type_code                => 'S'
77454   , p_component_type               => l_component_type
77455   , p_component_code               => l_component_code
77456   , p_component_type_code          => l_component_type_code
77457   , p_component_appl_id            => l_component_appl_id
77458   , p_amb_context_code             => l_amb_context_code
77459   , p_side                         => 'NA'
77460   );
77461 
77462 
77463    --
77464    --
77465    END IF;
77466    --
77467    -- Bug 4922099
77468    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77469           (NVL(l_enc_upg_option, 'N') = 'O')
77470         ) AND
77471         (l_bflow_method_code = 'PRIOR_ENTRY')
77472       )
77473    THEN
77474       IF
77475       --
77476       1 = 2
77477       --
77478       THEN
77479       xla_accounting_err_pkg.build_message
77480                                     (p_appli_s_name            => 'XLA'
77481                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77482                                     ,p_token_1                 => 'LINE_NUMBER'
77483                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
77484                                     ,p_token_2                 => 'LINE_TYPE_NAME'
77485                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
77486                                                                              l_component_type
77487                                                                             ,l_component_code
77488                                                                             ,l_component_type_code
77489                                                                             ,l_component_appl_id
77490                                                                             ,l_amb_context_code
77491                                                                             ,l_entity_code
77492                                                                             ,l_event_class_code
77493                                                                            )
77494                                     ,p_token_3                 => 'OWNER'
77495                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
77496                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
77497                                                                           ,p_lookup_code    => l_component_type_code
77498                                                                          )
77499                                     ,p_token_4                 => 'PRODUCT_NAME'
77500                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77501                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77502                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77503                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77504                                     ,p_ae_header_id            =>  NULL
77505                                        );
77506 
77507         IF (C_LEVEL_ERROR>= g_log_level) THEN
77508                  trace
77509                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77510                       ,p_level    => C_LEVEL_ERROR
77511                       ,p_module   => l_log_module);
77512         END IF;
77513       END IF;
77514    END IF;
77515    --
77516    --
77517    ------------------------------------------------------------------------------------------------
77518    -- 4219869 Business Flow
77519    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77520    -- Prior Entry.  Currently, the following code is always generated.
77521    ------------------------------------------------------------------------------------------------
77522    XLA_AE_LINES_PKG.ValidateCurrentLine;
77523 
77524    ------------------------------------------------------------------------------------
77525    -- 4219869 Business Flow
77526    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77527    ------------------------------------------------------------------------------------
77528    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77529 
77530    ----------------------------------------------------------------------------------
77531    -- 4219869 Business Flow
77532    -- Update journal entry status -- Need to generate this within IF <condition>
77533    ----------------------------------------------------------------------------------
77534    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77535          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77536          ,p_balance_type_code => l_balance_type_code
77537          );
77538 
77539    -------------------------------------------------------------------------------------------
77540    -- 4262811 - Generate the Accrual Reversal lines
77541    -------------------------------------------------------------------------------------------
77542    BEGIN
77543       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77544                               (g_array_event(p_event_id).array_value_num('header_index'));
77545       IF l_acc_rev_flag IS NULL THEN
77546          l_acc_rev_flag := 'N';
77547       END IF;
77548    EXCEPTION
77549       WHEN OTHERS THEN
77550          l_acc_rev_flag := 'N';
77551    END;
77552    --
77553    IF (l_acc_rev_flag = 'Y') THEN
77554 
77555        -- 4645092  ------------------------------------------------------------------------------
77556        -- To allow MPA report to determine if it should generate report process
77557        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77558        ------------------------------------------------------------------------------------------
77559 
77560        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77561        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77562    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
77563    -- call ADRs
77564    -- Bug 4922099
77565    --
77566    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77567         (NVL(l_actual_upg_option, 'N') = 'O') OR
77568         (NVL(l_enc_upg_option, 'N') = 'O')
77569       )
77570    THEN
77571    NULL;
77572    --
77573    --
77574    
77575   l_ccid := AcctDerRule_20(
77576            p_application_id           => p_application_id
77577          , p_ae_header_id             => l_ae_header_id 
77578 , p_source_35 => p_source_35
77579          , x_transaction_coa_id       => l_adr_transaction_coa_id
77580          , x_accounting_coa_id        => l_adr_accounting_coa_id
77581          , x_value_type_code          => l_adr_value_type_code
77582          , p_side                     => 'NA'
77583    );
77584 
77585    xla_ae_lines_pkg.set_ccid(
77586     p_code_combination_id          => l_ccid
77587   , p_value_type_code              => l_adr_value_type_code
77588   , p_transaction_coa_id           => l_adr_transaction_coa_id
77589   , p_accounting_coa_id            => l_adr_accounting_coa_id
77590   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
77591   , p_adr_type_code                => 'S'
77592   , p_component_type               => l_component_type
77593   , p_component_code               => l_component_code
77594   , p_component_type_code          => l_component_type_code
77595   , p_component_appl_id            => l_component_appl_id
77596   , p_amb_context_code             => l_amb_context_code
77597   , p_side                         => 'NA'
77598   );
77599 
77600 
77601    --
77602    --
77603    END IF;
77604 
77605        --
77606        -- Update the line information that should be overwritten
77607        --
77608        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77609                                          p_header_num   => 1);
77610        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
77611 
77612        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77613 
77614        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
77615           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77616        END IF;
77617 
77618       --
77619       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77620       --
77621       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77622           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
77623       ELSE
77624           ---------------------------------------------------------------------------------------------------
77625           -- 4262811a Switch Sign
77626           ---------------------------------------------------------------------------------------------------
77627           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
77628           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77629                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77630           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77631                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77632           -- 5132302
77633           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77634                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77635 
77636       END IF;
77637 
77638       -- 4955764
77639       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77640       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77641 
77642 
77643       XLA_AE_LINES_PKG.ValidateCurrentLine;
77644       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77645 
77646       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77647                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77648                ,p_balance_type_code => l_balance_type_code);
77649 
77650    END IF;
77651 
77652    -----------------------------------------------------------------------------------------
77653    -- 4262811 Multiperiod Accounting
77654    -----------------------------------------------------------------------------------------
77655      -- No MPA option is assigned.
77656 
77657 
77658 END IF;
77659 END IF;
77660 --
77661 
77662 --
77663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77664    trace
77665       (p_msg      => 'END of AcctLineType_160'
77666       ,p_level    => C_LEVEL_PROCEDURE
77667       ,p_module   => l_log_module);
77668 END IF;
77669 --
77670 EXCEPTION
77671   WHEN xla_exceptions_pkg.application_exception THEN
77672       RAISE;
77673   WHEN OTHERS THEN
77674        xla_exceptions_pkg.raise_message
77675            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_160');
77676 END AcctLineType_160;
77677 --
77678 
77679 ---------------------------------------
77680 --
77681 -- PRIVATE FUNCTION
77682 --         AcctLineType_161
77683 --
77684 ---------------------------------------
77685 PROCEDURE AcctLineType_161 (
77686   p_application_id        IN NUMBER
77687  ,p_event_id              IN NUMBER
77688  ,p_calculate_acctd_flag  IN VARCHAR2
77689  ,p_calculate_g_l_flag    IN VARCHAR2
77690  ,p_actual_flag           IN OUT VARCHAR2
77691  ,p_balance_type_code     OUT VARCHAR2
77692  ,p_gain_or_loss_ref      OUT VARCHAR2
77693  
77694 --TRANSACTION_ID
77695  , p_source_1            IN NUMBER
77696 --Item Concatenated Segments
77697  , p_source_2            IN VARCHAR2
77698 --Transaction Quantity
77699  , p_source_3            IN NUMBER
77700 --Transaction Unit of Measure Code
77701  , p_source_4            IN VARCHAR2
77702 --Inventory Transaction Type Description
77703  , p_source_5            IN VARCHAR2
77704 --Interorg Payables Account
77705  , p_source_35            IN NUMBER
77706 --DISTRIBUTION_IDENTIFIER
77707  , p_source_84            IN NUMBER
77708 --Distribution Type
77709  , p_source_85            IN VARCHAR2
77710  , p_source_85_meaning    IN VARCHAR2
77711 --Entered Currency Code
77712  , p_source_88            IN VARCHAR2
77713 --Entered Amount
77714  , p_source_91            IN NUMBER
77715 --Currency Conversion Date
77716  , p_source_92            IN DATE
77717 --Currency Conversion Rate
77718  , p_source_93            IN NUMBER
77719 --Currency Conversion Type
77720  , p_source_94            IN VARCHAR2
77721 --Accounted Amount
77722  , p_source_95            IN NUMBER
77723 --Accounting Line Type
77724  , p_source_97            IN NUMBER
77725 )
77726 IS
77727 
77728 l_component_type              VARCHAR2(80);
77729 l_component_code              VARCHAR2(30);
77730 l_component_type_code         VARCHAR2(1);
77731 l_component_appl_id           INTEGER;
77732 l_amb_context_code            VARCHAR2(30);
77733 l_entity_code                 VARCHAR2(30);
77734 l_event_class_code            VARCHAR2(30);
77735 l_ae_header_id                NUMBER;
77736 l_event_type_code             VARCHAR2(30);
77737 l_line_definition_code        VARCHAR2(30);
77738 l_line_definition_owner_code  VARCHAR2(1);
77739 --
77740 -- adr variables
77741 l_segment                     VARCHAR2(30);
77742 l_ccid                        NUMBER;
77743 l_adr_transaction_coa_id      NUMBER;
77744 l_adr_accounting_coa_id       NUMBER;
77745 l_adr_flexfield_segment_code  VARCHAR2(30);
77746 l_adr_flex_value_set_id       NUMBER;
77747 l_adr_value_type_code         VARCHAR2(30);
77748 l_adr_value_combination_id    NUMBER;
77749 l_adr_value_segment_code      VARCHAR2(30);
77750 
77751 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
77752 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
77753 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
77754 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
77755 
77756 -- 4262811 Variables ------------------------------------------------------------------------------------------
77757 l_entered_amt_idx             NUMBER;
77758 l_accted_amt_idx              NUMBER;
77759 l_acc_rev_flag                VARCHAR2(1);
77760 l_accrual_line_num            NUMBER;
77761 l_tmp_amt                     NUMBER;
77762 l_acc_rev_natural_side_code   VARCHAR2(1);
77763 
77764 l_num_entries                 NUMBER;
77765 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
77766 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
77767 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
77768 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
77769 l_recog_line_1                NUMBER;
77770 l_recog_line_2                NUMBER;
77771 
77772 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
77773 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
77774 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
77775 
77776 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77777 
77778 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
77779 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
77780 
77781 ---------------------------------------------------------------------------------------------------------------
77782 
77783 
77784 --
77785 -- bulk performance
77786 --
77787 l_balance_type_code           VARCHAR2(1);
77788 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
77789 l_log_module                  VARCHAR2(240);
77790 
77791 --
77792 -- Upgrade strategy
77793 --
77794 l_actual_upg_option           VARCHAR2(1);
77795 l_enc_upg_option           VARCHAR2(1);
77796 
77797 --
77798 BEGIN
77799 --
77800 IF g_log_enabled THEN
77801       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_161';
77802 END IF;
77803 --
77804 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77805 
77806       trace
77807          (p_msg      => 'BEGIN of AcctLineType_161'
77808          ,p_level    => C_LEVEL_PROCEDURE
77809          ,p_module   => l_log_module);
77810 
77811 END IF;
77812 --
77813 l_component_type             := 'AMB_JLT';
77814 l_component_code             := 'INTERORG_PAYABLES';
77815 l_component_type_code        := 'S';
77816 l_component_appl_id          :=  707;
77817 l_amb_context_code           := 'DEFAULT';
77818 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
77819 l_event_class_code           := 'USER_DEFINE';
77820 l_event_type_code            := 'UDIR_INTERORG_RCPT';
77821 l_line_definition_owner_code := 'S';
77822 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
77823 --
77824 l_balance_type_code          := 'A';
77825 l_segment                     := NULL;
77826 l_ccid                        := NULL;
77827 l_adr_transaction_coa_id      := NULL;
77828 l_adr_accounting_coa_id       := NULL;
77829 l_adr_flexfield_segment_code  := NULL;
77830 l_adr_flex_value_set_id       := NULL;
77831 l_adr_value_type_code         := NULL;
77832 l_adr_value_combination_id    := NULL;
77833 l_adr_value_segment_code      := NULL;
77834 
77835 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
77836 l_bflow_class_code           := '';    -- 4219869 Business Flow
77837 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
77838 l_budgetary_control_flag     := 'N';
77839 
77840 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
77841 l_bflow_applied_to_amt       := NULL; -- 5132302
77842 l_entered_amt_idx            := NULL;          -- 4262811
77843 l_accted_amt_idx             := NULL;          -- 4262811
77844 l_acc_rev_flag               := NULL;          -- 4262811
77845 l_accrual_line_num           := NULL;          -- 4262811
77846 l_tmp_amt                    := NULL;          -- 4262811
77847 --
77848  
77849 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77850     l_balance_type_code <> 'B' THEN
77851 IF NVL(p_source_97,9E125) =  9
77852  THEN 
77853 
77854    --
77855    XLA_AE_LINES_PKG.SetNewLine;
77856 
77857    p_balance_type_code          := l_balance_type_code;
77858    -- set the flag so later we will know whether the gain loss line needs to be created
77859    
77860    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77861      p_actual_flag :='A';
77862    END IF;
77863 
77864    --
77865    -- bulk performance
77866    --
77867    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77868                                       p_header_num   => 0); -- 4262811
77869    --
77870    -- set accounting line options
77871    --
77872    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77873            p_natural_side_code          => 'D'
77874          , p_gain_or_loss_flag          => 'N'
77875          , p_gl_transfer_mode_code      => 'S'
77876          , p_acct_entry_type_code       => 'A'
77877          , p_switch_side_flag           => 'Y'
77878          , p_merge_duplicate_code       => 'N'
77879          );
77880    --
77881    l_acc_rev_natural_side_code := 'C';  -- 4262811
77882    -- 
77883    --
77884    -- set accounting line type info
77885    --
77886    xla_ae_lines_pkg.SetAcctLineType
77887       (p_component_type             => l_component_type
77888       ,p_event_type_code            => l_event_type_code
77889       ,p_line_definition_owner_code => l_line_definition_owner_code
77890       ,p_line_definition_code       => l_line_definition_code
77891       ,p_accounting_line_code       => l_component_code
77892       ,p_accounting_line_type_code  => l_component_type_code
77893       ,p_accounting_line_appl_id    => l_component_appl_id
77894       ,p_amb_context_code           => l_amb_context_code
77895       ,p_entity_code                => l_entity_code
77896       ,p_event_class_code           => l_event_class_code);
77897    --
77898    -- set accounting class
77899    --
77900    xla_ae_lines_pkg.SetAcctClass(
77901            p_accounting_class_code  => 'INTERORG_PAYABLES'
77902          , p_ae_header_id           => l_ae_header_id
77903          );
77904 
77905    --
77906    -- set rounding class
77907    --
77908    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77909                       'INTERORG_PAYABLES';
77910 
77911    --
77912    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77913    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77914    --
77915    -- bulk performance
77916    --
77917    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77918 
77919    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77920       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77921 
77922    -- 4955764
77923    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77924       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77925 
77926    -- 4458381 Public Sector Enh
77927    
77928    --
77929    -- set accounting attributes for the line type
77930    --
77931    l_entered_amt_idx := 3;
77932    l_accted_amt_idx  := 8;
77933    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
77934    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77935    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
77936    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77937    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
77938    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77939    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
77940    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77941    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
77942    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77943    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
77944    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77945    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
77946    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77947    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
77948    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77949    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
77950 
77951    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77952    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77953 
77954    ---------------------------------------------------------------------------------------------------------------
77955    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77956    ---------------------------------------------------------------------------------------------------------------
77957    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77958 
77959    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77960    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77961 
77962    IF xla_accounting_cache_pkg.GetValueChar
77963          (p_source_code         => 'LEDGER_CATEGORY_CODE'
77964          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77965    AND l_bflow_method_code = 'PRIOR_ENTRY'
77966 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77967    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77968          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77969        )
77970    THEN
77971          xla_ae_lines_pkg.BflowUpgEntry
77972            (p_business_method_code    => l_bflow_method_code
77973            ,p_business_class_code     => l_bflow_class_code
77974            ,p_balance_type            => l_balance_type_code);
77975    ELSE
77976       NULL;
77977 -- No business flow processing for business flow method of NONE.
77978    END IF;
77979 
77980    --
77981    -- call analytical criteria
77982    --
77983    
77984    --
77985    -- call description
77986    --
77987    
77988 xla_ae_lines_pkg.SetLineDescription(
77989    p_ae_header_id => l_ae_header_id
77990   ,p_description  => Description_1 (
77991      p_application_id         => p_application_id
77992    , p_ae_header_id           => l_ae_header_id 
77993 , p_source_1 => p_source_1
77994 , p_source_2 => p_source_2
77995 , p_source_3 => p_source_3
77996 , p_source_4 => p_source_4
77997 , p_source_5 => p_source_5
77998    )
77999 );
78000 
78001 
78002    --
78003    -- call ADRs
78004    -- Bug 4922099
78005    --
78006    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78007         (NVL(l_actual_upg_option, 'N') = 'O') OR
78008         (NVL(l_enc_upg_option, 'N') = 'O')
78009       )
78010    THEN
78011    NULL;
78012    --
78013    --
78014    
78015   l_ccid := AcctDerRule_20(
78016            p_application_id           => p_application_id
78017          , p_ae_header_id             => l_ae_header_id 
78018 , p_source_35 => p_source_35
78019          , x_transaction_coa_id       => l_adr_transaction_coa_id
78020          , x_accounting_coa_id        => l_adr_accounting_coa_id
78021          , x_value_type_code          => l_adr_value_type_code
78022          , p_side                     => 'NA'
78023    );
78024 
78025    xla_ae_lines_pkg.set_ccid(
78026     p_code_combination_id          => l_ccid
78027   , p_value_type_code              => l_adr_value_type_code
78028   , p_transaction_coa_id           => l_adr_transaction_coa_id
78029   , p_accounting_coa_id            => l_adr_accounting_coa_id
78030   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
78031   , p_adr_type_code                => 'S'
78032   , p_component_type               => l_component_type
78033   , p_component_code               => l_component_code
78034   , p_component_type_code          => l_component_type_code
78035   , p_component_appl_id            => l_component_appl_id
78036   , p_amb_context_code             => l_amb_context_code
78037   , p_side                         => 'NA'
78038   );
78039 
78040 
78041    --
78042    --
78043    END IF;
78044    --
78045    -- Bug 4922099
78046    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78047           (NVL(l_enc_upg_option, 'N') = 'O')
78048         ) AND
78049         (l_bflow_method_code = 'PRIOR_ENTRY')
78050       )
78051    THEN
78052       IF
78053       --
78054       1 = 2
78055       --
78056       THEN
78057       xla_accounting_err_pkg.build_message
78058                                     (p_appli_s_name            => 'XLA'
78059                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78060                                     ,p_token_1                 => 'LINE_NUMBER'
78061                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78062                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78063                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78064                                                                              l_component_type
78065                                                                             ,l_component_code
78066                                                                             ,l_component_type_code
78067                                                                             ,l_component_appl_id
78068                                                                             ,l_amb_context_code
78069                                                                             ,l_entity_code
78070                                                                             ,l_event_class_code
78071                                                                            )
78072                                     ,p_token_3                 => 'OWNER'
78073                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78074                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78075                                                                           ,p_lookup_code    => l_component_type_code
78076                                                                          )
78077                                     ,p_token_4                 => 'PRODUCT_NAME'
78078                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78079                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78080                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78081                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78082                                     ,p_ae_header_id            =>  NULL
78083                                        );
78084 
78085         IF (C_LEVEL_ERROR>= g_log_level) THEN
78086                  trace
78087                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78088                       ,p_level    => C_LEVEL_ERROR
78089                       ,p_module   => l_log_module);
78090         END IF;
78091       END IF;
78092    END IF;
78093    --
78094    --
78095    ------------------------------------------------------------------------------------------------
78096    -- 4219869 Business Flow
78097    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78098    -- Prior Entry.  Currently, the following code is always generated.
78099    ------------------------------------------------------------------------------------------------
78100    XLA_AE_LINES_PKG.ValidateCurrentLine;
78101 
78102    ------------------------------------------------------------------------------------
78103    -- 4219869 Business Flow
78104    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78105    ------------------------------------------------------------------------------------
78106    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78107 
78108    ----------------------------------------------------------------------------------
78109    -- 4219869 Business Flow
78110    -- Update journal entry status -- Need to generate this within IF <condition>
78111    ----------------------------------------------------------------------------------
78112    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78113          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78114          ,p_balance_type_code => l_balance_type_code
78115          );
78116 
78117    -------------------------------------------------------------------------------------------
78118    -- 4262811 - Generate the Accrual Reversal lines
78119    -------------------------------------------------------------------------------------------
78120    BEGIN
78121       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78122                               (g_array_event(p_event_id).array_value_num('header_index'));
78123       IF l_acc_rev_flag IS NULL THEN
78124          l_acc_rev_flag := 'N';
78125       END IF;
78126    EXCEPTION
78127       WHEN OTHERS THEN
78128          l_acc_rev_flag := 'N';
78129    END;
78130    --
78131    IF (l_acc_rev_flag = 'Y') THEN
78132 
78133        -- 4645092  ------------------------------------------------------------------------------
78134        -- To allow MPA report to determine if it should generate report process
78135        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78136        ------------------------------------------------------------------------------------------
78137 
78138        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78139        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78140    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78141    -- call ADRs
78142    -- Bug 4922099
78143    --
78144    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78145         (NVL(l_actual_upg_option, 'N') = 'O') OR
78146         (NVL(l_enc_upg_option, 'N') = 'O')
78147       )
78148    THEN
78149    NULL;
78150    --
78151    --
78152    
78153   l_ccid := AcctDerRule_20(
78154            p_application_id           => p_application_id
78155          , p_ae_header_id             => l_ae_header_id 
78156 , p_source_35 => p_source_35
78157          , x_transaction_coa_id       => l_adr_transaction_coa_id
78158          , x_accounting_coa_id        => l_adr_accounting_coa_id
78159          , x_value_type_code          => l_adr_value_type_code
78160          , p_side                     => 'NA'
78161    );
78162 
78163    xla_ae_lines_pkg.set_ccid(
78164     p_code_combination_id          => l_ccid
78165   , p_value_type_code              => l_adr_value_type_code
78166   , p_transaction_coa_id           => l_adr_transaction_coa_id
78167   , p_accounting_coa_id            => l_adr_accounting_coa_id
78168   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
78169   , p_adr_type_code                => 'S'
78170   , p_component_type               => l_component_type
78171   , p_component_code               => l_component_code
78172   , p_component_type_code          => l_component_type_code
78173   , p_component_appl_id            => l_component_appl_id
78174   , p_amb_context_code             => l_amb_context_code
78175   , p_side                         => 'NA'
78176   );
78177 
78178 
78179    --
78180    --
78181    END IF;
78182 
78183        --
78184        -- Update the line information that should be overwritten
78185        --
78186        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78187                                          p_header_num   => 1);
78188        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78189 
78190        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78191 
78192        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78193           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78194        END IF;
78195 
78196       --
78197       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78198       --
78199       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78200           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
78201       ELSE
78202           ---------------------------------------------------------------------------------------------------
78203           -- 4262811a Switch Sign
78204           ---------------------------------------------------------------------------------------------------
78205           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
78206           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78207                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78208           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78209                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78210           -- 5132302
78211           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78212                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78213 
78214       END IF;
78215 
78216       -- 4955764
78217       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78218       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78219 
78220 
78221       XLA_AE_LINES_PKG.ValidateCurrentLine;
78222       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78223 
78224       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78225                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78226                ,p_balance_type_code => l_balance_type_code);
78227 
78228    END IF;
78229 
78230    -----------------------------------------------------------------------------------------
78231    -- 4262811 Multiperiod Accounting
78232    -----------------------------------------------------------------------------------------
78233      -- No MPA option is assigned.
78234 
78235 
78236 END IF;
78237 END IF;
78238 --
78239 
78240 --
78241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78242    trace
78243       (p_msg      => 'END of AcctLineType_161'
78244       ,p_level    => C_LEVEL_PROCEDURE
78245       ,p_module   => l_log_module);
78246 END IF;
78247 --
78248 EXCEPTION
78249   WHEN xla_exceptions_pkg.application_exception THEN
78250       RAISE;
78251   WHEN OTHERS THEN
78252        xla_exceptions_pkg.raise_message
78253            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_161');
78254 END AcctLineType_161;
78255 --
78256 
78257 ---------------------------------------
78258 --
78259 -- PRIVATE FUNCTION
78260 --         AcctLineType_162
78261 --
78262 ---------------------------------------
78263 PROCEDURE AcctLineType_162 (
78264   p_application_id        IN NUMBER
78265  ,p_event_id              IN NUMBER
78266  ,p_calculate_acctd_flag  IN VARCHAR2
78267  ,p_calculate_g_l_flag    IN VARCHAR2
78268  ,p_actual_flag           IN OUT VARCHAR2
78269  ,p_balance_type_code     OUT VARCHAR2
78270  ,p_gain_or_loss_ref      OUT VARCHAR2
78271  
78272 --TRANSACTION_ID
78273  , p_source_1            IN NUMBER
78274 --Item Concatenated Segments
78275  , p_source_2            IN VARCHAR2
78276 --Transaction Quantity
78277  , p_source_3            IN NUMBER
78278 --Transaction Unit of Measure Code
78279  , p_source_4            IN VARCHAR2
78280 --Inventory Transaction Type Description
78281  , p_source_5            IN VARCHAR2
78282 --Interorg Payables Account
78283  , p_source_35            IN NUMBER
78284 --DISTRIBUTION_IDENTIFIER
78285  , p_source_84            IN NUMBER
78286 --Distribution Type
78287  , p_source_85            IN VARCHAR2
78288  , p_source_85_meaning    IN VARCHAR2
78289 --Entered Currency Code
78290  , p_source_88            IN VARCHAR2
78291 --Entered Amount
78292  , p_source_91            IN NUMBER
78293 --Currency Conversion Date
78294  , p_source_92            IN DATE
78295 --Currency Conversion Rate
78296  , p_source_93            IN NUMBER
78297 --Currency Conversion Type
78298  , p_source_94            IN VARCHAR2
78299 --Accounted Amount
78300  , p_source_95            IN NUMBER
78301 --Accounting Line Type
78302  , p_source_97            IN NUMBER
78303 )
78304 IS
78305 
78306 l_component_type              VARCHAR2(80);
78307 l_component_code              VARCHAR2(30);
78308 l_component_type_code         VARCHAR2(1);
78309 l_component_appl_id           INTEGER;
78310 l_amb_context_code            VARCHAR2(30);
78311 l_entity_code                 VARCHAR2(30);
78312 l_event_class_code            VARCHAR2(30);
78313 l_ae_header_id                NUMBER;
78314 l_event_type_code             VARCHAR2(30);
78315 l_line_definition_code        VARCHAR2(30);
78316 l_line_definition_owner_code  VARCHAR2(1);
78317 --
78318 -- adr variables
78319 l_segment                     VARCHAR2(30);
78320 l_ccid                        NUMBER;
78321 l_adr_transaction_coa_id      NUMBER;
78322 l_adr_accounting_coa_id       NUMBER;
78323 l_adr_flexfield_segment_code  VARCHAR2(30);
78324 l_adr_flex_value_set_id       NUMBER;
78325 l_adr_value_type_code         VARCHAR2(30);
78326 l_adr_value_combination_id    NUMBER;
78327 l_adr_value_segment_code      VARCHAR2(30);
78328 
78329 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
78330 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
78331 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
78332 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
78333 
78334 -- 4262811 Variables ------------------------------------------------------------------------------------------
78335 l_entered_amt_idx             NUMBER;
78336 l_accted_amt_idx              NUMBER;
78337 l_acc_rev_flag                VARCHAR2(1);
78338 l_accrual_line_num            NUMBER;
78339 l_tmp_amt                     NUMBER;
78340 l_acc_rev_natural_side_code   VARCHAR2(1);
78341 
78342 l_num_entries                 NUMBER;
78343 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
78344 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
78345 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
78346 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
78347 l_recog_line_1                NUMBER;
78348 l_recog_line_2                NUMBER;
78349 
78350 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
78351 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
78352 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
78353 
78354 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78355 
78356 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
78357 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
78358 
78359 ---------------------------------------------------------------------------------------------------------------
78360 
78361 
78362 --
78363 -- bulk performance
78364 --
78365 l_balance_type_code           VARCHAR2(1);
78366 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
78367 l_log_module                  VARCHAR2(240);
78368 
78369 --
78370 -- Upgrade strategy
78371 --
78372 l_actual_upg_option           VARCHAR2(1);
78373 l_enc_upg_option           VARCHAR2(1);
78374 
78375 --
78376 BEGIN
78377 --
78378 IF g_log_enabled THEN
78379       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_162';
78380 END IF;
78381 --
78382 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78383 
78384       trace
78385          (p_msg      => 'BEGIN of AcctLineType_162'
78386          ,p_level    => C_LEVEL_PROCEDURE
78387          ,p_module   => l_log_module);
78388 
78389 END IF;
78390 --
78391 l_component_type             := 'AMB_JLT';
78392 l_component_code             := 'INTERORG_PAYABLES';
78393 l_component_type_code        := 'S';
78394 l_component_appl_id          :=  707;
78395 l_amb_context_code           := 'DEFAULT';
78396 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
78397 l_event_class_code           := 'USER_DEFINE';
78398 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
78399 l_line_definition_owner_code := 'S';
78400 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
78401 --
78402 l_balance_type_code          := 'A';
78403 l_segment                     := NULL;
78404 l_ccid                        := NULL;
78405 l_adr_transaction_coa_id      := NULL;
78406 l_adr_accounting_coa_id       := NULL;
78407 l_adr_flexfield_segment_code  := NULL;
78408 l_adr_flex_value_set_id       := NULL;
78409 l_adr_value_type_code         := NULL;
78410 l_adr_value_combination_id    := NULL;
78411 l_adr_value_segment_code      := NULL;
78412 
78413 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
78414 l_bflow_class_code           := '';    -- 4219869 Business Flow
78415 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
78416 l_budgetary_control_flag     := 'N';
78417 
78418 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
78419 l_bflow_applied_to_amt       := NULL; -- 5132302
78420 l_entered_amt_idx            := NULL;          -- 4262811
78421 l_accted_amt_idx             := NULL;          -- 4262811
78422 l_acc_rev_flag               := NULL;          -- 4262811
78423 l_accrual_line_num           := NULL;          -- 4262811
78424 l_tmp_amt                    := NULL;          -- 4262811
78425 --
78426  
78427 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78428     l_balance_type_code <> 'B' THEN
78429 IF NVL(p_source_97,9E125) =  9
78430  THEN 
78431 
78432    --
78433    XLA_AE_LINES_PKG.SetNewLine;
78434 
78435    p_balance_type_code          := l_balance_type_code;
78436    -- set the flag so later we will know whether the gain loss line needs to be created
78437    
78438    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78439      p_actual_flag :='A';
78440    END IF;
78441 
78442    --
78443    -- bulk performance
78444    --
78445    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78446                                       p_header_num   => 0); -- 4262811
78447    --
78448    -- set accounting line options
78449    --
78450    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78451            p_natural_side_code          => 'D'
78452          , p_gain_or_loss_flag          => 'N'
78453          , p_gl_transfer_mode_code      => 'S'
78454          , p_acct_entry_type_code       => 'A'
78455          , p_switch_side_flag           => 'Y'
78456          , p_merge_duplicate_code       => 'N'
78457          );
78458    --
78459    l_acc_rev_natural_side_code := 'C';  -- 4262811
78460    -- 
78461    --
78462    -- set accounting line type info
78463    --
78464    xla_ae_lines_pkg.SetAcctLineType
78465       (p_component_type             => l_component_type
78466       ,p_event_type_code            => l_event_type_code
78467       ,p_line_definition_owner_code => l_line_definition_owner_code
78468       ,p_line_definition_code       => l_line_definition_code
78469       ,p_accounting_line_code       => l_component_code
78470       ,p_accounting_line_type_code  => l_component_type_code
78471       ,p_accounting_line_appl_id    => l_component_appl_id
78472       ,p_amb_context_code           => l_amb_context_code
78473       ,p_entity_code                => l_entity_code
78474       ,p_event_class_code           => l_event_class_code);
78475    --
78476    -- set accounting class
78477    --
78478    xla_ae_lines_pkg.SetAcctClass(
78479            p_accounting_class_code  => 'INTERORG_PAYABLES'
78480          , p_ae_header_id           => l_ae_header_id
78481          );
78482 
78483    --
78484    -- set rounding class
78485    --
78486    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78487                       'INTERORG_PAYABLES';
78488 
78489    --
78490    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78491    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78492    --
78493    -- bulk performance
78494    --
78495    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78496 
78497    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78498       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78499 
78500    -- 4955764
78501    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78502       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78503 
78504    -- 4458381 Public Sector Enh
78505    
78506    --
78507    -- set accounting attributes for the line type
78508    --
78509    l_entered_amt_idx := 3;
78510    l_accted_amt_idx  := 8;
78511    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
78512    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78513    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
78514    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78515    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
78516    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78517    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
78518    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78519    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
78520    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78521    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
78522    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78523    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
78524    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78525    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
78526    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78527    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
78528 
78529    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78530    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78531 
78532    ---------------------------------------------------------------------------------------------------------------
78533    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78534    ---------------------------------------------------------------------------------------------------------------
78535    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78536 
78537    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78538    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78539 
78540    IF xla_accounting_cache_pkg.GetValueChar
78541          (p_source_code         => 'LEDGER_CATEGORY_CODE'
78542          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78543    AND l_bflow_method_code = 'PRIOR_ENTRY'
78544 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78545    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78546          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78547        )
78548    THEN
78549          xla_ae_lines_pkg.BflowUpgEntry
78550            (p_business_method_code    => l_bflow_method_code
78551            ,p_business_class_code     => l_bflow_class_code
78552            ,p_balance_type            => l_balance_type_code);
78553    ELSE
78554       NULL;
78555 -- No business flow processing for business flow method of NONE.
78556    END IF;
78557 
78558    --
78559    -- call analytical criteria
78560    --
78561    
78562    --
78563    -- call description
78564    --
78565    
78566 xla_ae_lines_pkg.SetLineDescription(
78567    p_ae_header_id => l_ae_header_id
78568   ,p_description  => Description_1 (
78569      p_application_id         => p_application_id
78570    , p_ae_header_id           => l_ae_header_id 
78571 , p_source_1 => p_source_1
78572 , p_source_2 => p_source_2
78573 , p_source_3 => p_source_3
78574 , p_source_4 => p_source_4
78575 , p_source_5 => p_source_5
78576    )
78577 );
78578 
78579 
78580    --
78581    -- call ADRs
78582    -- Bug 4922099
78583    --
78584    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78585         (NVL(l_actual_upg_option, 'N') = 'O') OR
78586         (NVL(l_enc_upg_option, 'N') = 'O')
78587       )
78588    THEN
78589    NULL;
78590    --
78591    --
78592    
78593   l_ccid := AcctDerRule_20(
78594            p_application_id           => p_application_id
78595          , p_ae_header_id             => l_ae_header_id 
78596 , p_source_35 => p_source_35
78597          , x_transaction_coa_id       => l_adr_transaction_coa_id
78598          , x_accounting_coa_id        => l_adr_accounting_coa_id
78599          , x_value_type_code          => l_adr_value_type_code
78600          , p_side                     => 'NA'
78601    );
78602 
78603    xla_ae_lines_pkg.set_ccid(
78604     p_code_combination_id          => l_ccid
78605   , p_value_type_code              => l_adr_value_type_code
78606   , p_transaction_coa_id           => l_adr_transaction_coa_id
78607   , p_accounting_coa_id            => l_adr_accounting_coa_id
78608   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
78609   , p_adr_type_code                => 'S'
78610   , p_component_type               => l_component_type
78611   , p_component_code               => l_component_code
78612   , p_component_type_code          => l_component_type_code
78613   , p_component_appl_id            => l_component_appl_id
78614   , p_amb_context_code             => l_amb_context_code
78615   , p_side                         => 'NA'
78616   );
78617 
78618 
78619    --
78620    --
78621    END IF;
78622    --
78623    -- Bug 4922099
78624    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78625           (NVL(l_enc_upg_option, 'N') = 'O')
78626         ) AND
78627         (l_bflow_method_code = 'PRIOR_ENTRY')
78628       )
78629    THEN
78630       IF
78631       --
78632       1 = 2
78633       --
78634       THEN
78635       xla_accounting_err_pkg.build_message
78636                                     (p_appli_s_name            => 'XLA'
78637                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78638                                     ,p_token_1                 => 'LINE_NUMBER'
78639                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
78640                                     ,p_token_2                 => 'LINE_TYPE_NAME'
78641                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
78642                                                                              l_component_type
78643                                                                             ,l_component_code
78644                                                                             ,l_component_type_code
78645                                                                             ,l_component_appl_id
78646                                                                             ,l_amb_context_code
78647                                                                             ,l_entity_code
78648                                                                             ,l_event_class_code
78649                                                                            )
78650                                     ,p_token_3                 => 'OWNER'
78651                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
78652                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
78653                                                                           ,p_lookup_code    => l_component_type_code
78654                                                                          )
78655                                     ,p_token_4                 => 'PRODUCT_NAME'
78656                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78657                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78658                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78659                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78660                                     ,p_ae_header_id            =>  NULL
78661                                        );
78662 
78663         IF (C_LEVEL_ERROR>= g_log_level) THEN
78664                  trace
78665                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78666                       ,p_level    => C_LEVEL_ERROR
78667                       ,p_module   => l_log_module);
78668         END IF;
78669       END IF;
78670    END IF;
78671    --
78672    --
78673    ------------------------------------------------------------------------------------------------
78674    -- 4219869 Business Flow
78675    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78676    -- Prior Entry.  Currently, the following code is always generated.
78677    ------------------------------------------------------------------------------------------------
78678    XLA_AE_LINES_PKG.ValidateCurrentLine;
78679 
78680    ------------------------------------------------------------------------------------
78681    -- 4219869 Business Flow
78682    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78683    ------------------------------------------------------------------------------------
78684    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78685 
78686    ----------------------------------------------------------------------------------
78687    -- 4219869 Business Flow
78688    -- Update journal entry status -- Need to generate this within IF <condition>
78689    ----------------------------------------------------------------------------------
78690    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78691          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78692          ,p_balance_type_code => l_balance_type_code
78693          );
78694 
78695    -------------------------------------------------------------------------------------------
78696    -- 4262811 - Generate the Accrual Reversal lines
78697    -------------------------------------------------------------------------------------------
78698    BEGIN
78699       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78700                               (g_array_event(p_event_id).array_value_num('header_index'));
78701       IF l_acc_rev_flag IS NULL THEN
78702          l_acc_rev_flag := 'N';
78703       END IF;
78704    EXCEPTION
78705       WHEN OTHERS THEN
78706          l_acc_rev_flag := 'N';
78707    END;
78708    --
78709    IF (l_acc_rev_flag = 'Y') THEN
78710 
78711        -- 4645092  ------------------------------------------------------------------------------
78712        -- To allow MPA report to determine if it should generate report process
78713        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78714        ------------------------------------------------------------------------------------------
78715 
78716        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78717        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78718    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
78719    -- call ADRs
78720    -- Bug 4922099
78721    --
78722    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78723         (NVL(l_actual_upg_option, 'N') = 'O') OR
78724         (NVL(l_enc_upg_option, 'N') = 'O')
78725       )
78726    THEN
78727    NULL;
78728    --
78729    --
78730    
78731   l_ccid := AcctDerRule_20(
78732            p_application_id           => p_application_id
78733          , p_ae_header_id             => l_ae_header_id 
78734 , p_source_35 => p_source_35
78735          , x_transaction_coa_id       => l_adr_transaction_coa_id
78736          , x_accounting_coa_id        => l_adr_accounting_coa_id
78737          , x_value_type_code          => l_adr_value_type_code
78738          , p_side                     => 'NA'
78739    );
78740 
78741    xla_ae_lines_pkg.set_ccid(
78742     p_code_combination_id          => l_ccid
78743   , p_value_type_code              => l_adr_value_type_code
78744   , p_transaction_coa_id           => l_adr_transaction_coa_id
78745   , p_accounting_coa_id            => l_adr_accounting_coa_id
78746   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
78747   , p_adr_type_code                => 'S'
78748   , p_component_type               => l_component_type
78749   , p_component_code               => l_component_code
78750   , p_component_type_code          => l_component_type_code
78751   , p_component_appl_id            => l_component_appl_id
78752   , p_amb_context_code             => l_amb_context_code
78753   , p_side                         => 'NA'
78754   );
78755 
78756 
78757    --
78758    --
78759    END IF;
78760 
78761        --
78762        -- Update the line information that should be overwritten
78763        --
78764        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78765                                          p_header_num   => 1);
78766        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
78767 
78768        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78769 
78770        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
78771           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78772        END IF;
78773 
78774       --
78775       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78776       --
78777       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78778           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
78779       ELSE
78780           ---------------------------------------------------------------------------------------------------
78781           -- 4262811a Switch Sign
78782           ---------------------------------------------------------------------------------------------------
78783           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
78784           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78785                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78786           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78787                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78788           -- 5132302
78789           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78790                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78791 
78792       END IF;
78793 
78794       -- 4955764
78795       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78796       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78797 
78798 
78799       XLA_AE_LINES_PKG.ValidateCurrentLine;
78800       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78801 
78802       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78803                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78804                ,p_balance_type_code => l_balance_type_code);
78805 
78806    END IF;
78807 
78808    -----------------------------------------------------------------------------------------
78809    -- 4262811 Multiperiod Accounting
78810    -----------------------------------------------------------------------------------------
78811      -- No MPA option is assigned.
78812 
78813 
78814 END IF;
78815 END IF;
78816 --
78817 
78818 --
78819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78820    trace
78821       (p_msg      => 'END of AcctLineType_162'
78822       ,p_level    => C_LEVEL_PROCEDURE
78823       ,p_module   => l_log_module);
78824 END IF;
78825 --
78826 EXCEPTION
78827   WHEN xla_exceptions_pkg.application_exception THEN
78828       RAISE;
78829   WHEN OTHERS THEN
78830        xla_exceptions_pkg.raise_message
78831            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_162');
78832 END AcctLineType_162;
78833 --
78834 
78835 ---------------------------------------
78836 --
78837 -- PRIVATE FUNCTION
78838 --         AcctLineType_163
78839 --
78840 ---------------------------------------
78841 PROCEDURE AcctLineType_163 (
78842   p_application_id        IN NUMBER
78843  ,p_event_id              IN NUMBER
78844  ,p_calculate_acctd_flag  IN VARCHAR2
78845  ,p_calculate_g_l_flag    IN VARCHAR2
78846  ,p_actual_flag           IN OUT VARCHAR2
78847  ,p_balance_type_code     OUT VARCHAR2
78848  ,p_gain_or_loss_ref      OUT VARCHAR2
78849  
78850 --TRANSACTION_ID
78851  , p_source_1            IN NUMBER
78852 --Item Concatenated Segments
78853  , p_source_2            IN VARCHAR2
78854 --Transaction Quantity
78855  , p_source_3            IN NUMBER
78856 --Transaction Unit of Measure Code
78857  , p_source_4            IN VARCHAR2
78858 --Inventory Transaction Type Description
78859  , p_source_5            IN VARCHAR2
78860 --Interorg Payables Account
78861  , p_source_35            IN NUMBER
78862 --DISTRIBUTION_IDENTIFIER
78863  , p_source_84            IN NUMBER
78864 --Distribution Type
78865  , p_source_85            IN VARCHAR2
78866  , p_source_85_meaning    IN VARCHAR2
78867 --Entered Currency Code
78868  , p_source_88            IN VARCHAR2
78869 --Entered Amount
78870  , p_source_91            IN NUMBER
78871 --Currency Conversion Date
78872  , p_source_92            IN DATE
78873 --Currency Conversion Rate
78874  , p_source_93            IN NUMBER
78875 --Currency Conversion Type
78876  , p_source_94            IN VARCHAR2
78877 --Accounted Amount
78878  , p_source_95            IN NUMBER
78879 --Accounting Line Type
78880  , p_source_97            IN NUMBER
78881 )
78882 IS
78883 
78884 l_component_type              VARCHAR2(80);
78885 l_component_code              VARCHAR2(30);
78886 l_component_type_code         VARCHAR2(1);
78887 l_component_appl_id           INTEGER;
78888 l_amb_context_code            VARCHAR2(30);
78889 l_entity_code                 VARCHAR2(30);
78890 l_event_class_code            VARCHAR2(30);
78891 l_ae_header_id                NUMBER;
78892 l_event_type_code             VARCHAR2(30);
78893 l_line_definition_code        VARCHAR2(30);
78894 l_line_definition_owner_code  VARCHAR2(1);
78895 --
78896 -- adr variables
78897 l_segment                     VARCHAR2(30);
78898 l_ccid                        NUMBER;
78899 l_adr_transaction_coa_id      NUMBER;
78900 l_adr_accounting_coa_id       NUMBER;
78901 l_adr_flexfield_segment_code  VARCHAR2(30);
78902 l_adr_flex_value_set_id       NUMBER;
78903 l_adr_value_type_code         VARCHAR2(30);
78904 l_adr_value_combination_id    NUMBER;
78905 l_adr_value_segment_code      VARCHAR2(30);
78906 
78907 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
78908 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
78909 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
78910 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
78911 
78912 -- 4262811 Variables ------------------------------------------------------------------------------------------
78913 l_entered_amt_idx             NUMBER;
78914 l_accted_amt_idx              NUMBER;
78915 l_acc_rev_flag                VARCHAR2(1);
78916 l_accrual_line_num            NUMBER;
78917 l_tmp_amt                     NUMBER;
78918 l_acc_rev_natural_side_code   VARCHAR2(1);
78919 
78920 l_num_entries                 NUMBER;
78921 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
78922 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
78923 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
78924 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
78925 l_recog_line_1                NUMBER;
78926 l_recog_line_2                NUMBER;
78927 
78928 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
78929 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
78930 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
78931 
78932 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78933 
78934 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
78935 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
78936 
78937 ---------------------------------------------------------------------------------------------------------------
78938 
78939 
78940 --
78941 -- bulk performance
78942 --
78943 l_balance_type_code           VARCHAR2(1);
78944 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
78945 l_log_module                  VARCHAR2(240);
78946 
78947 --
78948 -- Upgrade strategy
78949 --
78950 l_actual_upg_option           VARCHAR2(1);
78951 l_enc_upg_option           VARCHAR2(1);
78952 
78953 --
78954 BEGIN
78955 --
78956 IF g_log_enabled THEN
78957       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_163';
78958 END IF;
78959 --
78960 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78961 
78962       trace
78963          (p_msg      => 'BEGIN of AcctLineType_163'
78964          ,p_level    => C_LEVEL_PROCEDURE
78965          ,p_module   => l_log_module);
78966 
78967 END IF;
78968 --
78969 l_component_type             := 'AMB_JLT';
78970 l_component_code             := 'INTERORG_PAYABLES';
78971 l_component_type_code        := 'S';
78972 l_component_appl_id          :=  707;
78973 l_amb_context_code           := 'DEFAULT';
78974 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
78975 l_event_class_code           := 'USER_DEFINE';
78976 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
78977 l_line_definition_owner_code := 'S';
78978 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
78979 --
78980 l_balance_type_code          := 'A';
78981 l_segment                     := NULL;
78982 l_ccid                        := NULL;
78983 l_adr_transaction_coa_id      := NULL;
78984 l_adr_accounting_coa_id       := NULL;
78985 l_adr_flexfield_segment_code  := NULL;
78986 l_adr_flex_value_set_id       := NULL;
78987 l_adr_value_type_code         := NULL;
78988 l_adr_value_combination_id    := NULL;
78989 l_adr_value_segment_code      := NULL;
78990 
78991 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
78992 l_bflow_class_code           := '';    -- 4219869 Business Flow
78993 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
78994 l_budgetary_control_flag     := 'N';
78995 
78996 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
78997 l_bflow_applied_to_amt       := NULL; -- 5132302
78998 l_entered_amt_idx            := NULL;          -- 4262811
78999 l_accted_amt_idx             := NULL;          -- 4262811
79000 l_acc_rev_flag               := NULL;          -- 4262811
79001 l_accrual_line_num           := NULL;          -- 4262811
79002 l_tmp_amt                    := NULL;          -- 4262811
79003 --
79004  
79005 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79006     l_balance_type_code <> 'B' THEN
79007 IF NVL(p_source_97,9E125) =  9
79008  THEN 
79009 
79010    --
79011    XLA_AE_LINES_PKG.SetNewLine;
79012 
79013    p_balance_type_code          := l_balance_type_code;
79014    -- set the flag so later we will know whether the gain loss line needs to be created
79015    
79016    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79017      p_actual_flag :='A';
79018    END IF;
79019 
79020    --
79021    -- bulk performance
79022    --
79023    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79024                                       p_header_num   => 0); -- 4262811
79025    --
79026    -- set accounting line options
79027    --
79028    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79029            p_natural_side_code          => 'D'
79030          , p_gain_or_loss_flag          => 'N'
79031          , p_gl_transfer_mode_code      => 'S'
79032          , p_acct_entry_type_code       => 'A'
79033          , p_switch_side_flag           => 'Y'
79034          , p_merge_duplicate_code       => 'N'
79035          );
79036    --
79037    l_acc_rev_natural_side_code := 'C';  -- 4262811
79038    -- 
79039    --
79040    -- set accounting line type info
79041    --
79042    xla_ae_lines_pkg.SetAcctLineType
79043       (p_component_type             => l_component_type
79044       ,p_event_type_code            => l_event_type_code
79045       ,p_line_definition_owner_code => l_line_definition_owner_code
79046       ,p_line_definition_code       => l_line_definition_code
79047       ,p_accounting_line_code       => l_component_code
79048       ,p_accounting_line_type_code  => l_component_type_code
79049       ,p_accounting_line_appl_id    => l_component_appl_id
79050       ,p_amb_context_code           => l_amb_context_code
79051       ,p_entity_code                => l_entity_code
79052       ,p_event_class_code           => l_event_class_code);
79053    --
79054    -- set accounting class
79055    --
79056    xla_ae_lines_pkg.SetAcctClass(
79057            p_accounting_class_code  => 'INTERORG_PAYABLES'
79058          , p_ae_header_id           => l_ae_header_id
79059          );
79060 
79061    --
79062    -- set rounding class
79063    --
79064    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79065                       'INTERORG_PAYABLES';
79066 
79067    --
79068    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79069    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79070    --
79071    -- bulk performance
79072    --
79073    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79074 
79075    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79076       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79077 
79078    -- 4955764
79079    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79080       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79081 
79082    -- 4458381 Public Sector Enh
79083    
79084    --
79085    -- set accounting attributes for the line type
79086    --
79087    l_entered_amt_idx := 3;
79088    l_accted_amt_idx  := 8;
79089    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
79090    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79091    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
79092    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79093    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
79094    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79095    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
79096    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79097    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
79098    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79099    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
79100    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79101    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
79102    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79103    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
79104    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79105    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
79106 
79107    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79108    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79109 
79110    ---------------------------------------------------------------------------------------------------------------
79111    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79112    ---------------------------------------------------------------------------------------------------------------
79113    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79114 
79115    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79116    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79117 
79118    IF xla_accounting_cache_pkg.GetValueChar
79119          (p_source_code         => 'LEDGER_CATEGORY_CODE'
79120          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79121    AND l_bflow_method_code = 'PRIOR_ENTRY'
79122 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79123    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79124          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79125        )
79126    THEN
79127          xla_ae_lines_pkg.BflowUpgEntry
79128            (p_business_method_code    => l_bflow_method_code
79129            ,p_business_class_code     => l_bflow_class_code
79130            ,p_balance_type            => l_balance_type_code);
79131    ELSE
79132       NULL;
79133 -- No business flow processing for business flow method of NONE.
79134    END IF;
79135 
79136    --
79137    -- call analytical criteria
79138    --
79139    
79140    --
79141    -- call description
79142    --
79143    
79144 xla_ae_lines_pkg.SetLineDescription(
79145    p_ae_header_id => l_ae_header_id
79146   ,p_description  => Description_1 (
79147      p_application_id         => p_application_id
79148    , p_ae_header_id           => l_ae_header_id 
79149 , p_source_1 => p_source_1
79150 , p_source_2 => p_source_2
79151 , p_source_3 => p_source_3
79152 , p_source_4 => p_source_4
79153 , p_source_5 => p_source_5
79154    )
79155 );
79156 
79157 
79158    --
79159    -- call ADRs
79160    -- Bug 4922099
79161    --
79162    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79163         (NVL(l_actual_upg_option, 'N') = 'O') OR
79164         (NVL(l_enc_upg_option, 'N') = 'O')
79165       )
79166    THEN
79167    NULL;
79168    --
79169    --
79170    
79171   l_ccid := AcctDerRule_20(
79172            p_application_id           => p_application_id
79173          , p_ae_header_id             => l_ae_header_id 
79174 , p_source_35 => p_source_35
79175          , x_transaction_coa_id       => l_adr_transaction_coa_id
79176          , x_accounting_coa_id        => l_adr_accounting_coa_id
79177          , x_value_type_code          => l_adr_value_type_code
79178          , p_side                     => 'NA'
79179    );
79180 
79181    xla_ae_lines_pkg.set_ccid(
79182     p_code_combination_id          => l_ccid
79183   , p_value_type_code              => l_adr_value_type_code
79184   , p_transaction_coa_id           => l_adr_transaction_coa_id
79185   , p_accounting_coa_id            => l_adr_accounting_coa_id
79186   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
79187   , p_adr_type_code                => 'S'
79188   , p_component_type               => l_component_type
79189   , p_component_code               => l_component_code
79190   , p_component_type_code          => l_component_type_code
79191   , p_component_appl_id            => l_component_appl_id
79192   , p_amb_context_code             => l_amb_context_code
79193   , p_side                         => 'NA'
79194   );
79195 
79196 
79197    --
79198    --
79199    END IF;
79200    --
79201    -- Bug 4922099
79202    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79203           (NVL(l_enc_upg_option, 'N') = 'O')
79204         ) AND
79205         (l_bflow_method_code = 'PRIOR_ENTRY')
79206       )
79207    THEN
79208       IF
79209       --
79210       1 = 2
79211       --
79212       THEN
79213       xla_accounting_err_pkg.build_message
79214                                     (p_appli_s_name            => 'XLA'
79215                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79216                                     ,p_token_1                 => 'LINE_NUMBER'
79217                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
79218                                     ,p_token_2                 => 'LINE_TYPE_NAME'
79219                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
79220                                                                              l_component_type
79221                                                                             ,l_component_code
79222                                                                             ,l_component_type_code
79223                                                                             ,l_component_appl_id
79224                                                                             ,l_amb_context_code
79225                                                                             ,l_entity_code
79226                                                                             ,l_event_class_code
79227                                                                            )
79228                                     ,p_token_3                 => 'OWNER'
79229                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
79230                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
79231                                                                           ,p_lookup_code    => l_component_type_code
79232                                                                          )
79233                                     ,p_token_4                 => 'PRODUCT_NAME'
79234                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79235                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79236                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79237                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79238                                     ,p_ae_header_id            =>  NULL
79239                                        );
79240 
79241         IF (C_LEVEL_ERROR>= g_log_level) THEN
79242                  trace
79243                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79244                       ,p_level    => C_LEVEL_ERROR
79245                       ,p_module   => l_log_module);
79246         END IF;
79247       END IF;
79248    END IF;
79249    --
79250    --
79251    ------------------------------------------------------------------------------------------------
79252    -- 4219869 Business Flow
79253    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79254    -- Prior Entry.  Currently, the following code is always generated.
79255    ------------------------------------------------------------------------------------------------
79256    XLA_AE_LINES_PKG.ValidateCurrentLine;
79257 
79258    ------------------------------------------------------------------------------------
79259    -- 4219869 Business Flow
79260    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79261    ------------------------------------------------------------------------------------
79262    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79263 
79264    ----------------------------------------------------------------------------------
79265    -- 4219869 Business Flow
79266    -- Update journal entry status -- Need to generate this within IF <condition>
79267    ----------------------------------------------------------------------------------
79268    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79269          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79270          ,p_balance_type_code => l_balance_type_code
79271          );
79272 
79273    -------------------------------------------------------------------------------------------
79274    -- 4262811 - Generate the Accrual Reversal lines
79275    -------------------------------------------------------------------------------------------
79276    BEGIN
79277       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79278                               (g_array_event(p_event_id).array_value_num('header_index'));
79279       IF l_acc_rev_flag IS NULL THEN
79280          l_acc_rev_flag := 'N';
79281       END IF;
79282    EXCEPTION
79283       WHEN OTHERS THEN
79284          l_acc_rev_flag := 'N';
79285    END;
79286    --
79287    IF (l_acc_rev_flag = 'Y') THEN
79288 
79289        -- 4645092  ------------------------------------------------------------------------------
79290        -- To allow MPA report to determine if it should generate report process
79291        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79292        ------------------------------------------------------------------------------------------
79293 
79294        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79295        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79296    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
79297    -- call ADRs
79298    -- Bug 4922099
79299    --
79300    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79301         (NVL(l_actual_upg_option, 'N') = 'O') OR
79302         (NVL(l_enc_upg_option, 'N') = 'O')
79303       )
79304    THEN
79305    NULL;
79306    --
79307    --
79308    
79309   l_ccid := AcctDerRule_20(
79310            p_application_id           => p_application_id
79311          , p_ae_header_id             => l_ae_header_id 
79312 , p_source_35 => p_source_35
79313          , x_transaction_coa_id       => l_adr_transaction_coa_id
79314          , x_accounting_coa_id        => l_adr_accounting_coa_id
79315          , x_value_type_code          => l_adr_value_type_code
79316          , p_side                     => 'NA'
79317    );
79318 
79319    xla_ae_lines_pkg.set_ccid(
79320     p_code_combination_id          => l_ccid
79321   , p_value_type_code              => l_adr_value_type_code
79322   , p_transaction_coa_id           => l_adr_transaction_coa_id
79323   , p_accounting_coa_id            => l_adr_accounting_coa_id
79324   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
79325   , p_adr_type_code                => 'S'
79326   , p_component_type               => l_component_type
79327   , p_component_code               => l_component_code
79328   , p_component_type_code          => l_component_type_code
79329   , p_component_appl_id            => l_component_appl_id
79330   , p_amb_context_code             => l_amb_context_code
79331   , p_side                         => 'NA'
79332   );
79333 
79334 
79335    --
79336    --
79337    END IF;
79338 
79339        --
79340        -- Update the line information that should be overwritten
79341        --
79342        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
79343                                          p_header_num   => 1);
79344        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
79345 
79346        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
79347 
79348        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
79349           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
79350        END IF;
79351 
79352       --
79353       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79354       --
79355       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79356           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
79357       ELSE
79358           ---------------------------------------------------------------------------------------------------
79359           -- 4262811a Switch Sign
79360           ---------------------------------------------------------------------------------------------------
79361           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
79362           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79363                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79364           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79365                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79366           -- 5132302
79367           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79368                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79369 
79370       END IF;
79371 
79372       -- 4955764
79373       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79374       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79375 
79376 
79377       XLA_AE_LINES_PKG.ValidateCurrentLine;
79378       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79379 
79380       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79381                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79382                ,p_balance_type_code => l_balance_type_code);
79383 
79384    END IF;
79385 
79386    -----------------------------------------------------------------------------------------
79387    -- 4262811 Multiperiod Accounting
79388    -----------------------------------------------------------------------------------------
79389      -- No MPA option is assigned.
79390 
79391 
79392 END IF;
79393 END IF;
79394 --
79395 
79396 --
79397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79398    trace
79399       (p_msg      => 'END of AcctLineType_163'
79400       ,p_level    => C_LEVEL_PROCEDURE
79401       ,p_module   => l_log_module);
79402 END IF;
79403 --
79404 EXCEPTION
79405   WHEN xla_exceptions_pkg.application_exception THEN
79406       RAISE;
79407   WHEN OTHERS THEN
79408        xla_exceptions_pkg.raise_message
79409            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_163');
79410 END AcctLineType_163;
79411 --
79412 
79413 ---------------------------------------
79414 --
79415 -- PRIVATE FUNCTION
79416 --         AcctLineType_164
79417 --
79418 ---------------------------------------
79419 PROCEDURE AcctLineType_164 (
79420   p_application_id        IN NUMBER
79421  ,p_event_id              IN NUMBER
79422  ,p_calculate_acctd_flag  IN VARCHAR2
79423  ,p_calculate_g_l_flag    IN VARCHAR2
79424  ,p_actual_flag           IN OUT VARCHAR2
79425  ,p_balance_type_code     OUT VARCHAR2
79426  ,p_gain_or_loss_ref      OUT VARCHAR2
79427  
79428 --TRANSACTION_ID
79429  , p_source_1            IN NUMBER
79430 --Item Concatenated Segments
79431  , p_source_2            IN VARCHAR2
79432 --Transaction Quantity
79433  , p_source_3            IN NUMBER
79434 --Transaction Unit of Measure Code
79435  , p_source_4            IN VARCHAR2
79436 --Inventory Transaction Type Description
79437  , p_source_5            IN VARCHAR2
79438 --Interorg Payables Account
79439  , p_source_35            IN NUMBER
79440 --DISTRIBUTION_IDENTIFIER
79441  , p_source_84            IN NUMBER
79442 --Distribution Type
79443  , p_source_85            IN VARCHAR2
79444  , p_source_85_meaning    IN VARCHAR2
79445 --Entered Currency Code
79446  , p_source_88            IN VARCHAR2
79447 --Entered Amount
79448  , p_source_91            IN NUMBER
79449 --Currency Conversion Date
79450  , p_source_92            IN DATE
79451 --Currency Conversion Rate
79452  , p_source_93            IN NUMBER
79453 --Currency Conversion Type
79454  , p_source_94            IN VARCHAR2
79455 --Accounted Amount
79456  , p_source_95            IN NUMBER
79457 --Accounting Line Type
79458  , p_source_97            IN NUMBER
79459 )
79460 IS
79461 
79462 l_component_type              VARCHAR2(80);
79463 l_component_code              VARCHAR2(30);
79464 l_component_type_code         VARCHAR2(1);
79465 l_component_appl_id           INTEGER;
79466 l_amb_context_code            VARCHAR2(30);
79467 l_entity_code                 VARCHAR2(30);
79468 l_event_class_code            VARCHAR2(30);
79469 l_ae_header_id                NUMBER;
79470 l_event_type_code             VARCHAR2(30);
79471 l_line_definition_code        VARCHAR2(30);
79472 l_line_definition_owner_code  VARCHAR2(1);
79473 --
79474 -- adr variables
79475 l_segment                     VARCHAR2(30);
79476 l_ccid                        NUMBER;
79477 l_adr_transaction_coa_id      NUMBER;
79478 l_adr_accounting_coa_id       NUMBER;
79479 l_adr_flexfield_segment_code  VARCHAR2(30);
79480 l_adr_flex_value_set_id       NUMBER;
79481 l_adr_value_type_code         VARCHAR2(30);
79482 l_adr_value_combination_id    NUMBER;
79483 l_adr_value_segment_code      VARCHAR2(30);
79484 
79485 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
79486 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
79487 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
79488 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
79489 
79490 -- 4262811 Variables ------------------------------------------------------------------------------------------
79491 l_entered_amt_idx             NUMBER;
79492 l_accted_amt_idx              NUMBER;
79493 l_acc_rev_flag                VARCHAR2(1);
79494 l_accrual_line_num            NUMBER;
79495 l_tmp_amt                     NUMBER;
79496 l_acc_rev_natural_side_code   VARCHAR2(1);
79497 
79498 l_num_entries                 NUMBER;
79499 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
79500 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
79501 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
79502 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
79503 l_recog_line_1                NUMBER;
79504 l_recog_line_2                NUMBER;
79505 
79506 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
79507 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
79508 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
79509 
79510 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79511 
79512 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
79513 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
79514 
79515 ---------------------------------------------------------------------------------------------------------------
79516 
79517 
79518 --
79519 -- bulk performance
79520 --
79521 l_balance_type_code           VARCHAR2(1);
79522 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
79523 l_log_module                  VARCHAR2(240);
79524 
79525 --
79526 -- Upgrade strategy
79527 --
79528 l_actual_upg_option           VARCHAR2(1);
79529 l_enc_upg_option           VARCHAR2(1);
79530 
79531 --
79532 BEGIN
79533 --
79534 IF g_log_enabled THEN
79535       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_164';
79536 END IF;
79537 --
79538 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79539 
79540       trace
79541          (p_msg      => 'BEGIN of AcctLineType_164'
79542          ,p_level    => C_LEVEL_PROCEDURE
79543          ,p_module   => l_log_module);
79544 
79545 END IF;
79546 --
79547 l_component_type             := 'AMB_JLT';
79548 l_component_code             := 'INTERORG_PAYABLES';
79549 l_component_type_code        := 'S';
79550 l_component_appl_id          :=  707;
79551 l_amb_context_code           := 'DEFAULT';
79552 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
79553 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
79554 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
79555 l_line_definition_owner_code := 'S';
79556 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
79557 --
79558 l_balance_type_code          := 'A';
79559 l_segment                     := NULL;
79560 l_ccid                        := NULL;
79561 l_adr_transaction_coa_id      := NULL;
79562 l_adr_accounting_coa_id       := NULL;
79563 l_adr_flexfield_segment_code  := NULL;
79564 l_adr_flex_value_set_id       := NULL;
79565 l_adr_value_type_code         := NULL;
79566 l_adr_value_combination_id    := NULL;
79567 l_adr_value_segment_code      := NULL;
79568 
79569 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
79570 l_bflow_class_code           := '';    -- 4219869 Business Flow
79571 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
79572 l_budgetary_control_flag     := 'N';
79573 
79574 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
79575 l_bflow_applied_to_amt       := NULL; -- 5132302
79576 l_entered_amt_idx            := NULL;          -- 4262811
79577 l_accted_amt_idx             := NULL;          -- 4262811
79578 l_acc_rev_flag               := NULL;          -- 4262811
79579 l_accrual_line_num           := NULL;          -- 4262811
79580 l_tmp_amt                    := NULL;          -- 4262811
79581 --
79582  
79583 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79584     l_balance_type_code <> 'B' THEN
79585 IF NVL(p_source_97,9E125) =  9
79586  THEN 
79587 
79588    --
79589    XLA_AE_LINES_PKG.SetNewLine;
79590 
79591    p_balance_type_code          := l_balance_type_code;
79592    -- set the flag so later we will know whether the gain loss line needs to be created
79593    
79594    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79595      p_actual_flag :='A';
79596    END IF;
79597 
79598    --
79599    -- bulk performance
79600    --
79601    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79602                                       p_header_num   => 0); -- 4262811
79603    --
79604    -- set accounting line options
79605    --
79606    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79607            p_natural_side_code          => 'D'
79608          , p_gain_or_loss_flag          => 'N'
79609          , p_gl_transfer_mode_code      => 'S'
79610          , p_acct_entry_type_code       => 'A'
79611          , p_switch_side_flag           => 'Y'
79612          , p_merge_duplicate_code       => 'N'
79613          );
79614    --
79615    l_acc_rev_natural_side_code := 'C';  -- 4262811
79616    -- 
79617    --
79618    -- set accounting line type info
79619    --
79620    xla_ae_lines_pkg.SetAcctLineType
79621       (p_component_type             => l_component_type
79622       ,p_event_type_code            => l_event_type_code
79623       ,p_line_definition_owner_code => l_line_definition_owner_code
79624       ,p_line_definition_code       => l_line_definition_code
79625       ,p_accounting_line_code       => l_component_code
79626       ,p_accounting_line_type_code  => l_component_type_code
79627       ,p_accounting_line_appl_id    => l_component_appl_id
79628       ,p_amb_context_code           => l_amb_context_code
79629       ,p_entity_code                => l_entity_code
79630       ,p_event_class_code           => l_event_class_code);
79631    --
79632    -- set accounting class
79633    --
79634    xla_ae_lines_pkg.SetAcctClass(
79635            p_accounting_class_code  => 'INTERORG_PAYABLES'
79636          , p_ae_header_id           => l_ae_header_id
79637          );
79638 
79639    --
79640    -- set rounding class
79641    --
79642    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79643                       'INTERORG_PAYABLES';
79644 
79645    --
79646    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79647    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79648    --
79649    -- bulk performance
79650    --
79651    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79652 
79653    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79654       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79655 
79656    -- 4955764
79657    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79658       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79659 
79660    -- 4458381 Public Sector Enh
79661    
79662    --
79663    -- set accounting attributes for the line type
79664    --
79665    l_entered_amt_idx := 3;
79666    l_accted_amt_idx  := 8;
79667    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
79668    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79669    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
79670    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79671    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
79672    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79673    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
79674    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79675    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
79676    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79677    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
79678    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79679    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
79680    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79681    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
79682    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79683    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
79684 
79685    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79686    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79687 
79688    ---------------------------------------------------------------------------------------------------------------
79689    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79690    ---------------------------------------------------------------------------------------------------------------
79691    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79692 
79693    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79694    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79695 
79696    IF xla_accounting_cache_pkg.GetValueChar
79697          (p_source_code         => 'LEDGER_CATEGORY_CODE'
79698          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79699    AND l_bflow_method_code = 'PRIOR_ENTRY'
79700 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79701    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79702          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79703        )
79704    THEN
79705          xla_ae_lines_pkg.BflowUpgEntry
79706            (p_business_method_code    => l_bflow_method_code
79707            ,p_business_class_code     => l_bflow_class_code
79708            ,p_balance_type            => l_balance_type_code);
79709    ELSE
79710       NULL;
79711 -- No business flow processing for business flow method of NONE.
79712    END IF;
79713 
79714    --
79715    -- call analytical criteria
79716    --
79717    
79718    --
79719    -- call description
79720    --
79721    
79722 xla_ae_lines_pkg.SetLineDescription(
79723    p_ae_header_id => l_ae_header_id
79724   ,p_description  => Description_1 (
79725      p_application_id         => p_application_id
79726    , p_ae_header_id           => l_ae_header_id 
79727 , p_source_1 => p_source_1
79728 , p_source_2 => p_source_2
79729 , p_source_3 => p_source_3
79730 , p_source_4 => p_source_4
79731 , p_source_5 => p_source_5
79732    )
79733 );
79734 
79735 
79736    --
79737    -- call ADRs
79738    -- Bug 4922099
79739    --
79740    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79741         (NVL(l_actual_upg_option, 'N') = 'O') OR
79742         (NVL(l_enc_upg_option, 'N') = 'O')
79743       )
79744    THEN
79745    NULL;
79746    --
79747    --
79748    
79749   l_ccid := AcctDerRule_20(
79750            p_application_id           => p_application_id
79751          , p_ae_header_id             => l_ae_header_id 
79752 , p_source_35 => p_source_35
79753          , x_transaction_coa_id       => l_adr_transaction_coa_id
79754          , x_accounting_coa_id        => l_adr_accounting_coa_id
79755          , x_value_type_code          => l_adr_value_type_code
79756          , p_side                     => 'NA'
79757    );
79758 
79759    xla_ae_lines_pkg.set_ccid(
79760     p_code_combination_id          => l_ccid
79761   , p_value_type_code              => l_adr_value_type_code
79762   , p_transaction_coa_id           => l_adr_transaction_coa_id
79763   , p_accounting_coa_id            => l_adr_accounting_coa_id
79764   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
79765   , p_adr_type_code                => 'S'
79766   , p_component_type               => l_component_type
79767   , p_component_code               => l_component_code
79768   , p_component_type_code          => l_component_type_code
79769   , p_component_appl_id            => l_component_appl_id
79770   , p_amb_context_code             => l_amb_context_code
79771   , p_side                         => 'NA'
79772   );
79773 
79774 
79775    --
79776    --
79777    END IF;
79778    --
79779    -- Bug 4922099
79780    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79781           (NVL(l_enc_upg_option, 'N') = 'O')
79782         ) AND
79783         (l_bflow_method_code = 'PRIOR_ENTRY')
79784       )
79785    THEN
79786       IF
79787       --
79788       1 = 2
79789       --
79790       THEN
79791       xla_accounting_err_pkg.build_message
79792                                     (p_appli_s_name            => 'XLA'
79793                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79794                                     ,p_token_1                 => 'LINE_NUMBER'
79795                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
79796                                     ,p_token_2                 => 'LINE_TYPE_NAME'
79797                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
79798                                                                              l_component_type
79799                                                                             ,l_component_code
79800                                                                             ,l_component_type_code
79801                                                                             ,l_component_appl_id
79802                                                                             ,l_amb_context_code
79803                                                                             ,l_entity_code
79804                                                                             ,l_event_class_code
79805                                                                            )
79806                                     ,p_token_3                 => 'OWNER'
79807                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
79808                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
79809                                                                           ,p_lookup_code    => l_component_type_code
79810                                                                          )
79811                                     ,p_token_4                 => 'PRODUCT_NAME'
79812                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79813                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79814                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79815                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79816                                     ,p_ae_header_id            =>  NULL
79817                                        );
79818 
79819         IF (C_LEVEL_ERROR>= g_log_level) THEN
79820                  trace
79821                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79822                       ,p_level    => C_LEVEL_ERROR
79823                       ,p_module   => l_log_module);
79824         END IF;
79825       END IF;
79826    END IF;
79827    --
79828    --
79829    ------------------------------------------------------------------------------------------------
79830    -- 4219869 Business Flow
79831    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79832    -- Prior Entry.  Currently, the following code is always generated.
79833    ------------------------------------------------------------------------------------------------
79834    XLA_AE_LINES_PKG.ValidateCurrentLine;
79835 
79836    ------------------------------------------------------------------------------------
79837    -- 4219869 Business Flow
79838    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79839    ------------------------------------------------------------------------------------
79840    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79841 
79842    ----------------------------------------------------------------------------------
79843    -- 4219869 Business Flow
79844    -- Update journal entry status -- Need to generate this within IF <condition>
79845    ----------------------------------------------------------------------------------
79846    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79847          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79848          ,p_balance_type_code => l_balance_type_code
79849          );
79850 
79851    -------------------------------------------------------------------------------------------
79852    -- 4262811 - Generate the Accrual Reversal lines
79853    -------------------------------------------------------------------------------------------
79854    BEGIN
79855       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79856                               (g_array_event(p_event_id).array_value_num('header_index'));
79857       IF l_acc_rev_flag IS NULL THEN
79858          l_acc_rev_flag := 'N';
79859       END IF;
79860    EXCEPTION
79861       WHEN OTHERS THEN
79862          l_acc_rev_flag := 'N';
79863    END;
79864    --
79865    IF (l_acc_rev_flag = 'Y') THEN
79866 
79867        -- 4645092  ------------------------------------------------------------------------------
79868        -- To allow MPA report to determine if it should generate report process
79869        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79870        ------------------------------------------------------------------------------------------
79871 
79872        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79873        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79874    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
79875    -- call ADRs
79876    -- Bug 4922099
79877    --
79878    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79879         (NVL(l_actual_upg_option, 'N') = 'O') OR
79880         (NVL(l_enc_upg_option, 'N') = 'O')
79881       )
79882    THEN
79883    NULL;
79884    --
79885    --
79886    
79887   l_ccid := AcctDerRule_20(
79888            p_application_id           => p_application_id
79889          , p_ae_header_id             => l_ae_header_id 
79890 , p_source_35 => p_source_35
79891          , x_transaction_coa_id       => l_adr_transaction_coa_id
79892          , x_accounting_coa_id        => l_adr_accounting_coa_id
79893          , x_value_type_code          => l_adr_value_type_code
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                     => 'PI_INTERORG_PAYABLES'
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_164'
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_00707_AAD_S_000020_PKG.AcctLineType_164');
79988 END AcctLineType_164;
79989 --
79990 
79991 ---------------------------------------
79992 --
79993 -- PRIVATE FUNCTION
79994 --         AcctLineType_165
79995 --
79996 ---------------------------------------
79997 PROCEDURE AcctLineType_165 (
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_ID
80007  , p_source_1            IN NUMBER
80008 --Item Concatenated Segments
80009  , p_source_2            IN VARCHAR2
80010 --Transaction Quantity
80011  , p_source_3            IN NUMBER
80012 --Transaction Unit of Measure Code
80013  , p_source_4            IN VARCHAR2
80014 --Inventory Transaction Type Description
80015  , p_source_5            IN VARCHAR2
80016 --Cost Management Default Account
80017  , p_source_11            IN NUMBER
80018 --DISTRIBUTION_IDENTIFIER
80019  , p_source_84            IN NUMBER
80020 --Distribution Type
80021  , p_source_85            IN VARCHAR2
80022  , p_source_85_meaning    IN VARCHAR2
80023 --Entered Currency Code
80024  , p_source_88            IN VARCHAR2
80025 --Entered Amount
80026  , p_source_91            IN NUMBER
80027 --Currency Conversion Date
80028  , p_source_92            IN DATE
80029 --Currency Conversion Rate
80030  , p_source_93            IN NUMBER
80031 --Currency Conversion Type
80032  , p_source_94            IN VARCHAR2
80033 --Accounted Amount
80034  , p_source_95            IN NUMBER
80035 --Accounting Line Type
80036  , p_source_97            IN NUMBER
80037 )
80038 IS
80039 
80040 l_component_type              VARCHAR2(80);
80041 l_component_code              VARCHAR2(30);
80042 l_component_type_code         VARCHAR2(1);
80043 l_component_appl_id           INTEGER;
80044 l_amb_context_code            VARCHAR2(30);
80045 l_entity_code                 VARCHAR2(30);
80046 l_event_class_code            VARCHAR2(30);
80047 l_ae_header_id                NUMBER;
80048 l_event_type_code             VARCHAR2(30);
80049 l_line_definition_code        VARCHAR2(30);
80050 l_line_definition_owner_code  VARCHAR2(1);
80051 --
80052 -- adr variables
80053 l_segment                     VARCHAR2(30);
80054 l_ccid                        NUMBER;
80055 l_adr_transaction_coa_id      NUMBER;
80056 l_adr_accounting_coa_id       NUMBER;
80057 l_adr_flexfield_segment_code  VARCHAR2(30);
80058 l_adr_flex_value_set_id       NUMBER;
80059 l_adr_value_type_code         VARCHAR2(30);
80060 l_adr_value_combination_id    NUMBER;
80061 l_adr_value_segment_code      VARCHAR2(30);
80062 
80063 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80064 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80065 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80066 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80067 
80068 -- 4262811 Variables ------------------------------------------------------------------------------------------
80069 l_entered_amt_idx             NUMBER;
80070 l_accted_amt_idx              NUMBER;
80071 l_acc_rev_flag                VARCHAR2(1);
80072 l_accrual_line_num            NUMBER;
80073 l_tmp_amt                     NUMBER;
80074 l_acc_rev_natural_side_code   VARCHAR2(1);
80075 
80076 l_num_entries                 NUMBER;
80077 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80078 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80079 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80080 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80081 l_recog_line_1                NUMBER;
80082 l_recog_line_2                NUMBER;
80083 
80084 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80085 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80086 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80087 
80088 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80089 
80090 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80091 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80092 
80093 ---------------------------------------------------------------------------------------------------------------
80094 
80095 
80096 --
80097 -- bulk performance
80098 --
80099 l_balance_type_code           VARCHAR2(1);
80100 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80101 l_log_module                  VARCHAR2(240);
80102 
80103 --
80104 -- Upgrade strategy
80105 --
80106 l_actual_upg_option           VARCHAR2(1);
80107 l_enc_upg_option           VARCHAR2(1);
80108 
80109 --
80110 BEGIN
80111 --
80112 IF g_log_enabled THEN
80113       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_165';
80114 END IF;
80115 --
80116 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80117 
80118       trace
80119          (p_msg      => 'BEGIN of AcctLineType_165'
80120          ,p_level    => C_LEVEL_PROCEDURE
80121          ,p_module   => l_log_module);
80122 
80123 END IF;
80124 --
80125 l_component_type             := 'AMB_JLT';
80126 l_component_code             := 'INTERORG_PAYABLES';
80127 l_component_type_code        := 'S';
80128 l_component_appl_id          :=  707;
80129 l_amb_context_code           := 'DEFAULT';
80130 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
80131 l_event_class_code           := 'INT_ORDER_TO_EXP';
80132 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
80133 l_line_definition_owner_code := 'S';
80134 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_NO_TP';
80135 --
80136 l_balance_type_code          := 'A';
80137 l_segment                     := NULL;
80138 l_ccid                        := NULL;
80139 l_adr_transaction_coa_id      := NULL;
80140 l_adr_accounting_coa_id       := NULL;
80141 l_adr_flexfield_segment_code  := NULL;
80142 l_adr_flex_value_set_id       := NULL;
80143 l_adr_value_type_code         := NULL;
80144 l_adr_value_combination_id    := NULL;
80145 l_adr_value_segment_code      := NULL;
80146 
80147 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80148 l_bflow_class_code           := '';    -- 4219869 Business Flow
80149 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80150 l_budgetary_control_flag     := 'N';
80151 
80152 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80153 l_bflow_applied_to_amt       := NULL; -- 5132302
80154 l_entered_amt_idx            := NULL;          -- 4262811
80155 l_accted_amt_idx             := NULL;          -- 4262811
80156 l_acc_rev_flag               := NULL;          -- 4262811
80157 l_accrual_line_num           := NULL;          -- 4262811
80158 l_tmp_amt                    := NULL;          -- 4262811
80159 --
80160  
80161 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80162     l_balance_type_code <> 'B' THEN
80163 IF NVL(p_source_97,9E125) =  9
80164  THEN 
80165 
80166    --
80167    XLA_AE_LINES_PKG.SetNewLine;
80168 
80169    p_balance_type_code          := l_balance_type_code;
80170    -- set the flag so later we will know whether the gain loss line needs to be created
80171    
80172    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80173      p_actual_flag :='A';
80174    END IF;
80175 
80176    --
80177    -- bulk performance
80178    --
80179    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80180                                       p_header_num   => 0); -- 4262811
80181    --
80182    -- set accounting line options
80183    --
80184    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80185            p_natural_side_code          => 'D'
80186          , p_gain_or_loss_flag          => 'N'
80187          , p_gl_transfer_mode_code      => 'S'
80188          , p_acct_entry_type_code       => 'A'
80189          , p_switch_side_flag           => 'Y'
80190          , p_merge_duplicate_code       => 'N'
80191          );
80192    --
80193    l_acc_rev_natural_side_code := 'C';  -- 4262811
80194    -- 
80195    --
80196    -- set accounting line type info
80197    --
80198    xla_ae_lines_pkg.SetAcctLineType
80199       (p_component_type             => l_component_type
80200       ,p_event_type_code            => l_event_type_code
80201       ,p_line_definition_owner_code => l_line_definition_owner_code
80202       ,p_line_definition_code       => l_line_definition_code
80203       ,p_accounting_line_code       => l_component_code
80204       ,p_accounting_line_type_code  => l_component_type_code
80205       ,p_accounting_line_appl_id    => l_component_appl_id
80206       ,p_amb_context_code           => l_amb_context_code
80207       ,p_entity_code                => l_entity_code
80208       ,p_event_class_code           => l_event_class_code);
80209    --
80210    -- set accounting class
80211    --
80212    xla_ae_lines_pkg.SetAcctClass(
80213            p_accounting_class_code  => 'INTERORG_PAYABLES'
80214          , p_ae_header_id           => l_ae_header_id
80215          );
80216 
80217    --
80218    -- set rounding class
80219    --
80220    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80221                       'INTERORG_PAYABLES';
80222 
80223    --
80224    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80225    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80226    --
80227    -- bulk performance
80228    --
80229    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80230 
80231    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80232       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80233 
80234    -- 4955764
80235    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80236       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80237 
80238    -- 4458381 Public Sector Enh
80239    
80240    --
80241    -- set accounting attributes for the line type
80242    --
80243    l_entered_amt_idx := 3;
80244    l_accted_amt_idx  := 8;
80245    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
80246    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80247    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
80248    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80249    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
80250    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80251    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
80252    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80253    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
80254    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80255    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
80256    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80257    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
80258    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80259    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
80260    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80261    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
80262 
80263    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80264    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80265 
80266    ---------------------------------------------------------------------------------------------------------------
80267    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80268    ---------------------------------------------------------------------------------------------------------------
80269    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80270 
80271    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80272    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80273 
80274    IF xla_accounting_cache_pkg.GetValueChar
80275          (p_source_code         => 'LEDGER_CATEGORY_CODE'
80276          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80277    AND l_bflow_method_code = 'PRIOR_ENTRY'
80278 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80279    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80280          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80281        )
80282    THEN
80283          xla_ae_lines_pkg.BflowUpgEntry
80284            (p_business_method_code    => l_bflow_method_code
80285            ,p_business_class_code     => l_bflow_class_code
80286            ,p_balance_type            => l_balance_type_code);
80287    ELSE
80288       NULL;
80289 -- No business flow processing for business flow method of NONE.
80290    END IF;
80291 
80292    --
80293    -- call analytical criteria
80294    --
80295    
80296    --
80297    -- call description
80298    --
80299    
80300 xla_ae_lines_pkg.SetLineDescription(
80301    p_ae_header_id => l_ae_header_id
80302   ,p_description  => Description_1 (
80303      p_application_id         => p_application_id
80304    , p_ae_header_id           => l_ae_header_id 
80305 , p_source_1 => p_source_1
80306 , p_source_2 => p_source_2
80307 , p_source_3 => p_source_3
80308 , p_source_4 => p_source_4
80309 , p_source_5 => p_source_5
80310    )
80311 );
80312 
80313 
80314    --
80315    -- call ADRs
80316    -- Bug 4922099
80317    --
80318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80319         (NVL(l_actual_upg_option, 'N') = 'O') OR
80320         (NVL(l_enc_upg_option, 'N') = 'O')
80321       )
80322    THEN
80323    NULL;
80324    --
80325    --
80326    
80327   l_ccid := AcctDerRule_6(
80328            p_application_id           => p_application_id
80329          , p_ae_header_id             => l_ae_header_id 
80330 , p_source_11 => p_source_11
80331          , x_transaction_coa_id       => l_adr_transaction_coa_id
80332          , x_accounting_coa_id        => l_adr_accounting_coa_id
80333          , x_value_type_code          => l_adr_value_type_code
80334          , p_side                     => 'NA'
80335    );
80336 
80337    xla_ae_lines_pkg.set_ccid(
80338     p_code_combination_id          => l_ccid
80339   , p_value_type_code              => l_adr_value_type_code
80340   , p_transaction_coa_id           => l_adr_transaction_coa_id
80341   , p_accounting_coa_id            => l_adr_accounting_coa_id
80342   , p_adr_code                     => 'CST_DEFAULT'
80343   , p_adr_type_code                => 'S'
80344   , p_component_type               => l_component_type
80345   , p_component_code               => l_component_code
80346   , p_component_type_code          => l_component_type_code
80347   , p_component_appl_id            => l_component_appl_id
80348   , p_amb_context_code             => l_amb_context_code
80349   , p_side                         => 'NA'
80350   );
80351 
80352 
80353    --
80354    --
80355    END IF;
80356    --
80357    -- Bug 4922099
80358    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80359           (NVL(l_enc_upg_option, 'N') = 'O')
80360         ) AND
80361         (l_bflow_method_code = 'PRIOR_ENTRY')
80362       )
80363    THEN
80364       IF
80365       --
80366       1 = 2
80367       --
80368       THEN
80369       xla_accounting_err_pkg.build_message
80370                                     (p_appli_s_name            => 'XLA'
80371                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80372                                     ,p_token_1                 => 'LINE_NUMBER'
80373                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
80374                                     ,p_token_2                 => 'LINE_TYPE_NAME'
80375                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
80376                                                                              l_component_type
80377                                                                             ,l_component_code
80378                                                                             ,l_component_type_code
80379                                                                             ,l_component_appl_id
80380                                                                             ,l_amb_context_code
80381                                                                             ,l_entity_code
80382                                                                             ,l_event_class_code
80383                                                                            )
80384                                     ,p_token_3                 => 'OWNER'
80385                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
80386                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
80387                                                                           ,p_lookup_code    => l_component_type_code
80388                                                                          )
80389                                     ,p_token_4                 => 'PRODUCT_NAME'
80390                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80391                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80392                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80393                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80394                                     ,p_ae_header_id            =>  NULL
80395                                        );
80396 
80397         IF (C_LEVEL_ERROR>= g_log_level) THEN
80398                  trace
80399                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80400                       ,p_level    => C_LEVEL_ERROR
80401                       ,p_module   => l_log_module);
80402         END IF;
80403       END IF;
80404    END IF;
80405    --
80406    --
80407    ------------------------------------------------------------------------------------------------
80408    -- 4219869 Business Flow
80409    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80410    -- Prior Entry.  Currently, the following code is always generated.
80411    ------------------------------------------------------------------------------------------------
80412    XLA_AE_LINES_PKG.ValidateCurrentLine;
80413 
80414    ------------------------------------------------------------------------------------
80415    -- 4219869 Business Flow
80416    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80417    ------------------------------------------------------------------------------------
80418    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80419 
80420    ----------------------------------------------------------------------------------
80421    -- 4219869 Business Flow
80422    -- Update journal entry status -- Need to generate this within IF <condition>
80423    ----------------------------------------------------------------------------------
80424    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80425          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80426          ,p_balance_type_code => l_balance_type_code
80427          );
80428 
80429    -------------------------------------------------------------------------------------------
80430    -- 4262811 - Generate the Accrual Reversal lines
80431    -------------------------------------------------------------------------------------------
80432    BEGIN
80433       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80434                               (g_array_event(p_event_id).array_value_num('header_index'));
80435       IF l_acc_rev_flag IS NULL THEN
80436          l_acc_rev_flag := 'N';
80437       END IF;
80438    EXCEPTION
80439       WHEN OTHERS THEN
80440          l_acc_rev_flag := 'N';
80441    END;
80442    --
80443    IF (l_acc_rev_flag = 'Y') THEN
80444 
80445        -- 4645092  ------------------------------------------------------------------------------
80446        -- To allow MPA report to determine if it should generate report process
80447        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80448        ------------------------------------------------------------------------------------------
80449 
80450        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80451        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80452    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
80453    -- call ADRs
80454    -- Bug 4922099
80455    --
80456    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80457         (NVL(l_actual_upg_option, 'N') = 'O') OR
80458         (NVL(l_enc_upg_option, 'N') = 'O')
80459       )
80460    THEN
80461    NULL;
80462    --
80463    --
80464    
80465   l_ccid := AcctDerRule_6(
80466            p_application_id           => p_application_id
80467          , p_ae_header_id             => l_ae_header_id 
80468 , p_source_11 => p_source_11
80469          , x_transaction_coa_id       => l_adr_transaction_coa_id
80470          , x_accounting_coa_id        => l_adr_accounting_coa_id
80471          , x_value_type_code          => l_adr_value_type_code
80472          , p_side                     => 'NA'
80473    );
80474 
80475    xla_ae_lines_pkg.set_ccid(
80476     p_code_combination_id          => l_ccid
80477   , p_value_type_code              => l_adr_value_type_code
80478   , p_transaction_coa_id           => l_adr_transaction_coa_id
80479   , p_accounting_coa_id            => l_adr_accounting_coa_id
80480   , p_adr_code                     => 'CST_DEFAULT'
80481   , p_adr_type_code                => 'S'
80482   , p_component_type               => l_component_type
80483   , p_component_code               => l_component_code
80484   , p_component_type_code          => l_component_type_code
80485   , p_component_appl_id            => l_component_appl_id
80486   , p_amb_context_code             => l_amb_context_code
80487   , p_side                         => 'NA'
80488   );
80489 
80490 
80491    --
80492    --
80493    END IF;
80494 
80495        --
80496        -- Update the line information that should be overwritten
80497        --
80498        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80499                                          p_header_num   => 1);
80500        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
80501 
80502        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80503 
80504        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
80505           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80506        END IF;
80507 
80508       --
80509       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80510       --
80511       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80512           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
80513       ELSE
80514           ---------------------------------------------------------------------------------------------------
80515           -- 4262811a Switch Sign
80516           ---------------------------------------------------------------------------------------------------
80517           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
80518           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80519                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80520           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80521                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80522           -- 5132302
80523           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80524                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80525 
80526       END IF;
80527 
80528       -- 4955764
80529       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80531 
80532 
80533       XLA_AE_LINES_PKG.ValidateCurrentLine;
80534       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80535 
80536       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80537                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80538                ,p_balance_type_code => l_balance_type_code);
80539 
80540    END IF;
80541 
80542    -----------------------------------------------------------------------------------------
80543    -- 4262811 Multiperiod Accounting
80544    -----------------------------------------------------------------------------------------
80545      -- No MPA option is assigned.
80546 
80547 
80548 END IF;
80549 END IF;
80550 --
80551 
80552 --
80553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80554    trace
80555       (p_msg      => 'END of AcctLineType_165'
80556       ,p_level    => C_LEVEL_PROCEDURE
80557       ,p_module   => l_log_module);
80558 END IF;
80559 --
80560 EXCEPTION
80561   WHEN xla_exceptions_pkg.application_exception THEN
80562       RAISE;
80563   WHEN OTHERS THEN
80564        xla_exceptions_pkg.raise_message
80565            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_165');
80566 END AcctLineType_165;
80567 --
80568 
80569 ---------------------------------------
80570 --
80571 -- PRIVATE FUNCTION
80572 --         AcctLineType_166
80573 --
80574 ---------------------------------------
80575 PROCEDURE AcctLineType_166 (
80576   p_application_id        IN NUMBER
80577  ,p_event_id              IN NUMBER
80578  ,p_calculate_acctd_flag  IN VARCHAR2
80579  ,p_calculate_g_l_flag    IN VARCHAR2
80580  ,p_actual_flag           IN OUT VARCHAR2
80581  ,p_balance_type_code     OUT VARCHAR2
80582  ,p_gain_or_loss_ref      OUT VARCHAR2
80583  
80584 --TRANSACTION_ID
80585  , p_source_1            IN NUMBER
80586 --Item Concatenated Segments
80587  , p_source_2            IN VARCHAR2
80588 --Transaction Quantity
80589  , p_source_3            IN NUMBER
80590 --Transaction Unit of Measure Code
80591  , p_source_4            IN VARCHAR2
80592 --Inventory Transaction Type Description
80593  , p_source_5            IN VARCHAR2
80594 --Cost Management Default Account
80595  , p_source_11            IN NUMBER
80596 --DISTRIBUTION_IDENTIFIER
80597  , p_source_84            IN NUMBER
80598 --Distribution Type
80599  , p_source_85            IN VARCHAR2
80600  , p_source_85_meaning    IN VARCHAR2
80601 --Entered Currency Code
80602  , p_source_88            IN VARCHAR2
80603 --Entered Amount
80604  , p_source_91            IN NUMBER
80605 --Currency Conversion Date
80606  , p_source_92            IN DATE
80607 --Currency Conversion Rate
80608  , p_source_93            IN NUMBER
80609 --Currency Conversion Type
80610  , p_source_94            IN VARCHAR2
80611 --Accounted Amount
80612  , p_source_95            IN NUMBER
80613 --Accounting Line Type
80614  , p_source_97            IN NUMBER
80615 )
80616 IS
80617 
80618 l_component_type              VARCHAR2(80);
80619 l_component_code              VARCHAR2(30);
80620 l_component_type_code         VARCHAR2(1);
80621 l_component_appl_id           INTEGER;
80622 l_amb_context_code            VARCHAR2(30);
80623 l_entity_code                 VARCHAR2(30);
80624 l_event_class_code            VARCHAR2(30);
80625 l_ae_header_id                NUMBER;
80626 l_event_type_code             VARCHAR2(30);
80627 l_line_definition_code        VARCHAR2(30);
80628 l_line_definition_owner_code  VARCHAR2(1);
80629 --
80630 -- adr variables
80631 l_segment                     VARCHAR2(30);
80632 l_ccid                        NUMBER;
80633 l_adr_transaction_coa_id      NUMBER;
80634 l_adr_accounting_coa_id       NUMBER;
80635 l_adr_flexfield_segment_code  VARCHAR2(30);
80636 l_adr_flex_value_set_id       NUMBER;
80637 l_adr_value_type_code         VARCHAR2(30);
80638 l_adr_value_combination_id    NUMBER;
80639 l_adr_value_segment_code      VARCHAR2(30);
80640 
80641 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
80642 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
80643 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
80644 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
80645 
80646 -- 4262811 Variables ------------------------------------------------------------------------------------------
80647 l_entered_amt_idx             NUMBER;
80648 l_accted_amt_idx              NUMBER;
80649 l_acc_rev_flag                VARCHAR2(1);
80650 l_accrual_line_num            NUMBER;
80651 l_tmp_amt                     NUMBER;
80652 l_acc_rev_natural_side_code   VARCHAR2(1);
80653 
80654 l_num_entries                 NUMBER;
80655 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
80656 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
80657 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
80658 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
80659 l_recog_line_1                NUMBER;
80660 l_recog_line_2                NUMBER;
80661 
80662 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
80663 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
80664 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
80665 
80666 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80667 
80668 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
80669 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
80670 
80671 ---------------------------------------------------------------------------------------------------------------
80672 
80673 
80674 --
80675 -- bulk performance
80676 --
80677 l_balance_type_code           VARCHAR2(1);
80678 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
80679 l_log_module                  VARCHAR2(240);
80680 
80681 --
80682 -- Upgrade strategy
80683 --
80684 l_actual_upg_option           VARCHAR2(1);
80685 l_enc_upg_option           VARCHAR2(1);
80686 
80687 --
80688 BEGIN
80689 --
80690 IF g_log_enabled THEN
80691       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_166';
80692 END IF;
80693 --
80694 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80695 
80696       trace
80697          (p_msg      => 'BEGIN of AcctLineType_166'
80698          ,p_level    => C_LEVEL_PROCEDURE
80699          ,p_module   => l_log_module);
80700 
80701 END IF;
80702 --
80703 l_component_type             := 'AMB_JLT';
80704 l_component_code             := 'INTERORG_PAYABLES';
80705 l_component_type_code        := 'S';
80706 l_component_appl_id          :=  707;
80707 l_amb_context_code           := 'DEFAULT';
80708 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
80709 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
80710 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
80711 l_line_definition_owner_code := 'S';
80712 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
80713 --
80714 l_balance_type_code          := 'A';
80715 l_segment                     := NULL;
80716 l_ccid                        := NULL;
80717 l_adr_transaction_coa_id      := NULL;
80718 l_adr_accounting_coa_id       := NULL;
80719 l_adr_flexfield_segment_code  := NULL;
80720 l_adr_flex_value_set_id       := NULL;
80721 l_adr_value_type_code         := NULL;
80722 l_adr_value_combination_id    := NULL;
80723 l_adr_value_segment_code      := NULL;
80724 
80725 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
80726 l_bflow_class_code           := '';    -- 4219869 Business Flow
80727 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
80728 l_budgetary_control_flag     := 'N';
80729 
80730 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
80731 l_bflow_applied_to_amt       := NULL; -- 5132302
80732 l_entered_amt_idx            := NULL;          -- 4262811
80733 l_accted_amt_idx             := NULL;          -- 4262811
80734 l_acc_rev_flag               := NULL;          -- 4262811
80735 l_accrual_line_num           := NULL;          -- 4262811
80736 l_tmp_amt                    := NULL;          -- 4262811
80737 --
80738  
80739 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80740     l_balance_type_code <> 'B' THEN
80741 IF NVL(p_source_97,9E125) =  9
80742  THEN 
80743 
80744    --
80745    XLA_AE_LINES_PKG.SetNewLine;
80746 
80747    p_balance_type_code          := l_balance_type_code;
80748    -- set the flag so later we will know whether the gain loss line needs to be created
80749    
80750    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80751      p_actual_flag :='A';
80752    END IF;
80753 
80754    --
80755    -- bulk performance
80756    --
80757    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80758                                       p_header_num   => 0); -- 4262811
80759    --
80760    -- set accounting line options
80761    --
80762    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80763            p_natural_side_code          => 'D'
80764          , p_gain_or_loss_flag          => 'N'
80765          , p_gl_transfer_mode_code      => 'S'
80766          , p_acct_entry_type_code       => 'A'
80767          , p_switch_side_flag           => 'Y'
80768          , p_merge_duplicate_code       => 'N'
80769          );
80770    --
80771    l_acc_rev_natural_side_code := 'C';  -- 4262811
80772    -- 
80773    --
80774    -- set accounting line type info
80775    --
80776    xla_ae_lines_pkg.SetAcctLineType
80777       (p_component_type             => l_component_type
80778       ,p_event_type_code            => l_event_type_code
80779       ,p_line_definition_owner_code => l_line_definition_owner_code
80780       ,p_line_definition_code       => l_line_definition_code
80781       ,p_accounting_line_code       => l_component_code
80782       ,p_accounting_line_type_code  => l_component_type_code
80783       ,p_accounting_line_appl_id    => l_component_appl_id
80784       ,p_amb_context_code           => l_amb_context_code
80785       ,p_entity_code                => l_entity_code
80786       ,p_event_class_code           => l_event_class_code);
80787    --
80788    -- set accounting class
80789    --
80790    xla_ae_lines_pkg.SetAcctClass(
80791            p_accounting_class_code  => 'INTERORG_PAYABLES'
80792          , p_ae_header_id           => l_ae_header_id
80793          );
80794 
80795    --
80796    -- set rounding class
80797    --
80798    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80799                       'INTERORG_PAYABLES';
80800 
80801    --
80802    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80803    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80804    --
80805    -- bulk performance
80806    --
80807    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80808 
80809    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80810       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80811 
80812    -- 4955764
80813    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80814       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80815 
80816    -- 4458381 Public Sector Enh
80817    
80818    --
80819    -- set accounting attributes for the line type
80820    --
80821    l_entered_amt_idx := 3;
80822    l_accted_amt_idx  := 8;
80823    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
80824    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80825    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
80826    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80827    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
80828    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80829    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
80830    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80831    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
80832    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80833    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
80834    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80835    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
80836    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80837    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
80838    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80839    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
80840 
80841    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80842    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80843 
80844    ---------------------------------------------------------------------------------------------------------------
80845    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80846    ---------------------------------------------------------------------------------------------------------------
80847    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80848 
80849    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80850    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80851 
80852    IF xla_accounting_cache_pkg.GetValueChar
80853          (p_source_code         => 'LEDGER_CATEGORY_CODE'
80854          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80855    AND l_bflow_method_code = 'PRIOR_ENTRY'
80856 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80857    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80858          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80859        )
80860    THEN
80861          xla_ae_lines_pkg.BflowUpgEntry
80862            (p_business_method_code    => l_bflow_method_code
80863            ,p_business_class_code     => l_bflow_class_code
80864            ,p_balance_type            => l_balance_type_code);
80865    ELSE
80866       NULL;
80867 -- No business flow processing for business flow method of NONE.
80868    END IF;
80869 
80870    --
80871    -- call analytical criteria
80872    --
80873    
80874    --
80875    -- call description
80876    --
80877    
80878 xla_ae_lines_pkg.SetLineDescription(
80879    p_ae_header_id => l_ae_header_id
80880   ,p_description  => Description_1 (
80881      p_application_id         => p_application_id
80882    , p_ae_header_id           => l_ae_header_id 
80883 , p_source_1 => p_source_1
80884 , p_source_2 => p_source_2
80885 , p_source_3 => p_source_3
80886 , p_source_4 => p_source_4
80887 , p_source_5 => p_source_5
80888    )
80889 );
80890 
80891 
80892    --
80893    -- call ADRs
80894    -- Bug 4922099
80895    --
80896    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80897         (NVL(l_actual_upg_option, 'N') = 'O') OR
80898         (NVL(l_enc_upg_option, 'N') = 'O')
80899       )
80900    THEN
80901    NULL;
80902    --
80903    --
80904    
80905   l_ccid := AcctDerRule_6(
80906            p_application_id           => p_application_id
80907          , p_ae_header_id             => l_ae_header_id 
80908 , p_source_11 => p_source_11
80909          , x_transaction_coa_id       => l_adr_transaction_coa_id
80910          , x_accounting_coa_id        => l_adr_accounting_coa_id
80911          , x_value_type_code          => l_adr_value_type_code
80912          , p_side                     => 'NA'
80913    );
80914 
80915    xla_ae_lines_pkg.set_ccid(
80916     p_code_combination_id          => l_ccid
80917   , p_value_type_code              => l_adr_value_type_code
80918   , p_transaction_coa_id           => l_adr_transaction_coa_id
80919   , p_accounting_coa_id            => l_adr_accounting_coa_id
80920   , p_adr_code                     => 'CST_DEFAULT'
80921   , p_adr_type_code                => 'S'
80922   , p_component_type               => l_component_type
80923   , p_component_code               => l_component_code
80924   , p_component_type_code          => l_component_type_code
80925   , p_component_appl_id            => l_component_appl_id
80926   , p_amb_context_code             => l_amb_context_code
80927   , p_side                         => 'NA'
80928   );
80929 
80930 
80931    --
80932    --
80933    END IF;
80934    --
80935    -- Bug 4922099
80936    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80937           (NVL(l_enc_upg_option, 'N') = 'O')
80938         ) AND
80939         (l_bflow_method_code = 'PRIOR_ENTRY')
80940       )
80941    THEN
80942       IF
80943       --
80944       1 = 2
80945       --
80946       THEN
80947       xla_accounting_err_pkg.build_message
80948                                     (p_appli_s_name            => 'XLA'
80949                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80950                                     ,p_token_1                 => 'LINE_NUMBER'
80951                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
80952                                     ,p_token_2                 => 'LINE_TYPE_NAME'
80953                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
80954                                                                              l_component_type
80955                                                                             ,l_component_code
80956                                                                             ,l_component_type_code
80957                                                                             ,l_component_appl_id
80958                                                                             ,l_amb_context_code
80959                                                                             ,l_entity_code
80960                                                                             ,l_event_class_code
80961                                                                            )
80962                                     ,p_token_3                 => 'OWNER'
80963                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
80964                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
80965                                                                           ,p_lookup_code    => l_component_type_code
80966                                                                          )
80967                                     ,p_token_4                 => 'PRODUCT_NAME'
80968                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80969                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80970                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80971                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80972                                     ,p_ae_header_id            =>  NULL
80973                                        );
80974 
80975         IF (C_LEVEL_ERROR>= g_log_level) THEN
80976                  trace
80977                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80978                       ,p_level    => C_LEVEL_ERROR
80979                       ,p_module   => l_log_module);
80980         END IF;
80981       END IF;
80982    END IF;
80983    --
80984    --
80985    ------------------------------------------------------------------------------------------------
80986    -- 4219869 Business Flow
80987    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80988    -- Prior Entry.  Currently, the following code is always generated.
80989    ------------------------------------------------------------------------------------------------
80990    XLA_AE_LINES_PKG.ValidateCurrentLine;
80991 
80992    ------------------------------------------------------------------------------------
80993    -- 4219869 Business Flow
80994    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80995    ------------------------------------------------------------------------------------
80996    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80997 
80998    ----------------------------------------------------------------------------------
80999    -- 4219869 Business Flow
81000    -- Update journal entry status -- Need to generate this within IF <condition>
81001    ----------------------------------------------------------------------------------
81002    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81003          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81004          ,p_balance_type_code => l_balance_type_code
81005          );
81006 
81007    -------------------------------------------------------------------------------------------
81008    -- 4262811 - Generate the Accrual Reversal lines
81009    -------------------------------------------------------------------------------------------
81010    BEGIN
81011       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81012                               (g_array_event(p_event_id).array_value_num('header_index'));
81013       IF l_acc_rev_flag IS NULL THEN
81014          l_acc_rev_flag := 'N';
81015       END IF;
81016    EXCEPTION
81017       WHEN OTHERS THEN
81018          l_acc_rev_flag := 'N';
81019    END;
81020    --
81021    IF (l_acc_rev_flag = 'Y') THEN
81022 
81023        -- 4645092  ------------------------------------------------------------------------------
81024        -- To allow MPA report to determine if it should generate report process
81025        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81026        ------------------------------------------------------------------------------------------
81027 
81028        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81029        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81030    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
81031    -- call ADRs
81032    -- Bug 4922099
81033    --
81034    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81035         (NVL(l_actual_upg_option, 'N') = 'O') OR
81036         (NVL(l_enc_upg_option, 'N') = 'O')
81037       )
81038    THEN
81039    NULL;
81040    --
81041    --
81042    
81043   l_ccid := AcctDerRule_6(
81044            p_application_id           => p_application_id
81045          , p_ae_header_id             => l_ae_header_id 
81046 , p_source_11 => p_source_11
81047          , x_transaction_coa_id       => l_adr_transaction_coa_id
81048          , x_accounting_coa_id        => l_adr_accounting_coa_id
81049          , x_value_type_code          => l_adr_value_type_code
81050          , p_side                     => 'NA'
81051    );
81052 
81053    xla_ae_lines_pkg.set_ccid(
81054     p_code_combination_id          => l_ccid
81055   , p_value_type_code              => l_adr_value_type_code
81056   , p_transaction_coa_id           => l_adr_transaction_coa_id
81057   , p_accounting_coa_id            => l_adr_accounting_coa_id
81058   , p_adr_code                     => 'CST_DEFAULT'
81059   , p_adr_type_code                => 'S'
81060   , p_component_type               => l_component_type
81061   , p_component_code               => l_component_code
81062   , p_component_type_code          => l_component_type_code
81063   , p_component_appl_id            => l_component_appl_id
81064   , p_amb_context_code             => l_amb_context_code
81065   , p_side                         => 'NA'
81066   );
81067 
81068 
81069    --
81070    --
81071    END IF;
81072 
81073        --
81074        -- Update the line information that should be overwritten
81075        --
81076        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81077                                          p_header_num   => 1);
81078        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81079 
81080        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81081 
81082        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81083           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81084        END IF;
81085 
81086       --
81087       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81088       --
81089       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81090           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81091       ELSE
81092           ---------------------------------------------------------------------------------------------------
81093           -- 4262811a Switch Sign
81094           ---------------------------------------------------------------------------------------------------
81095           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81096           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81097                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81098           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81099                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81100           -- 5132302
81101           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81102                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81103 
81104       END IF;
81105 
81106       -- 4955764
81107       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81108       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81109 
81110 
81111       XLA_AE_LINES_PKG.ValidateCurrentLine;
81112       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81113 
81114       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81115                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81116                ,p_balance_type_code => l_balance_type_code);
81117 
81118    END IF;
81119 
81120    -----------------------------------------------------------------------------------------
81121    -- 4262811 Multiperiod Accounting
81122    -----------------------------------------------------------------------------------------
81123      -- No MPA option is assigned.
81124 
81125 
81126 END IF;
81127 END IF;
81128 --
81129 
81130 --
81131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81132    trace
81133       (p_msg      => 'END of AcctLineType_166'
81134       ,p_level    => C_LEVEL_PROCEDURE
81135       ,p_module   => l_log_module);
81136 END IF;
81137 --
81138 EXCEPTION
81139   WHEN xla_exceptions_pkg.application_exception THEN
81140       RAISE;
81141   WHEN OTHERS THEN
81142        xla_exceptions_pkg.raise_message
81143            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_166');
81144 END AcctLineType_166;
81145 --
81146 
81147 ---------------------------------------
81148 --
81149 -- PRIVATE FUNCTION
81150 --         AcctLineType_167
81151 --
81152 ---------------------------------------
81153 PROCEDURE AcctLineType_167 (
81154   p_application_id        IN NUMBER
81155  ,p_event_id              IN NUMBER
81156  ,p_calculate_acctd_flag  IN VARCHAR2
81157  ,p_calculate_g_l_flag    IN VARCHAR2
81158  ,p_actual_flag           IN OUT VARCHAR2
81159  ,p_balance_type_code     OUT VARCHAR2
81160  ,p_gain_or_loss_ref      OUT VARCHAR2
81161  
81162 --Interorg Payables Account
81163  , p_source_35            IN NUMBER
81164 --DISTRIBUTION_IDENTIFIER
81165  , p_source_84            IN NUMBER
81166 --Distribution Type
81167  , p_source_85            IN VARCHAR2
81168  , p_source_85_meaning    IN VARCHAR2
81169 --Entered Currency Code
81170  , p_source_88            IN VARCHAR2
81171 --Entered Amount
81172  , p_source_91            IN NUMBER
81173 --Currency Conversion Date
81174  , p_source_92            IN DATE
81175 --Currency Conversion Rate
81176  , p_source_93            IN NUMBER
81177 --Currency Conversion Type
81178  , p_source_94            IN VARCHAR2
81179 --Accounted Amount
81180  , p_source_95            IN NUMBER
81181 --Accounting Line Type
81182  , p_source_97            IN NUMBER
81183 )
81184 IS
81185 
81186 l_component_type              VARCHAR2(80);
81187 l_component_code              VARCHAR2(30);
81188 l_component_type_code         VARCHAR2(1);
81189 l_component_appl_id           INTEGER;
81190 l_amb_context_code            VARCHAR2(30);
81191 l_entity_code                 VARCHAR2(30);
81192 l_event_class_code            VARCHAR2(30);
81193 l_ae_header_id                NUMBER;
81194 l_event_type_code             VARCHAR2(30);
81195 l_line_definition_code        VARCHAR2(30);
81196 l_line_definition_owner_code  VARCHAR2(1);
81197 --
81198 -- adr variables
81199 l_segment                     VARCHAR2(30);
81200 l_ccid                        NUMBER;
81201 l_adr_transaction_coa_id      NUMBER;
81202 l_adr_accounting_coa_id       NUMBER;
81203 l_adr_flexfield_segment_code  VARCHAR2(30);
81204 l_adr_flex_value_set_id       NUMBER;
81205 l_adr_value_type_code         VARCHAR2(30);
81206 l_adr_value_combination_id    NUMBER;
81207 l_adr_value_segment_code      VARCHAR2(30);
81208 
81209 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81210 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81211 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81212 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81213 
81214 -- 4262811 Variables ------------------------------------------------------------------------------------------
81215 l_entered_amt_idx             NUMBER;
81216 l_accted_amt_idx              NUMBER;
81217 l_acc_rev_flag                VARCHAR2(1);
81218 l_accrual_line_num            NUMBER;
81219 l_tmp_amt                     NUMBER;
81220 l_acc_rev_natural_side_code   VARCHAR2(1);
81221 
81222 l_num_entries                 NUMBER;
81223 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
81224 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
81225 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
81226 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
81227 l_recog_line_1                NUMBER;
81228 l_recog_line_2                NUMBER;
81229 
81230 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
81231 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
81232 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
81233 
81234 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81235 
81236 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
81237 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
81238 
81239 ---------------------------------------------------------------------------------------------------------------
81240 
81241 
81242 --
81243 -- bulk performance
81244 --
81245 l_balance_type_code           VARCHAR2(1);
81246 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
81247 l_log_module                  VARCHAR2(240);
81248 
81249 --
81250 -- Upgrade strategy
81251 --
81252 l_actual_upg_option           VARCHAR2(1);
81253 l_enc_upg_option           VARCHAR2(1);
81254 
81255 --
81256 BEGIN
81257 --
81258 IF g_log_enabled THEN
81259       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_167';
81260 END IF;
81261 --
81262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81263 
81264       trace
81265          (p_msg      => 'BEGIN of AcctLineType_167'
81266          ,p_level    => C_LEVEL_PROCEDURE
81267          ,p_module   => l_log_module);
81268 
81269 END IF;
81270 --
81271 l_component_type             := 'AMB_JLT';
81272 l_component_code             := 'INTERORG_PAYABLES';
81273 l_component_type_code        := 'S';
81274 l_component_appl_id          :=  707;
81275 l_amb_context_code           := 'DEFAULT';
81276 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
81277 l_event_class_code           := 'USER_DEFINE';
81278 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
81279 l_line_definition_owner_code := 'S';
81280 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
81281 --
81282 l_balance_type_code          := 'A';
81283 l_segment                     := NULL;
81284 l_ccid                        := NULL;
81285 l_adr_transaction_coa_id      := NULL;
81286 l_adr_accounting_coa_id       := NULL;
81287 l_adr_flexfield_segment_code  := NULL;
81288 l_adr_flex_value_set_id       := NULL;
81289 l_adr_value_type_code         := NULL;
81290 l_adr_value_combination_id    := NULL;
81291 l_adr_value_segment_code      := NULL;
81292 
81293 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
81294 l_bflow_class_code           := '';    -- 4219869 Business Flow
81295 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
81296 l_budgetary_control_flag     := 'N';
81297 
81298 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
81299 l_bflow_applied_to_amt       := NULL; -- 5132302
81300 l_entered_amt_idx            := NULL;          -- 4262811
81301 l_accted_amt_idx             := NULL;          -- 4262811
81302 l_acc_rev_flag               := NULL;          -- 4262811
81303 l_accrual_line_num           := NULL;          -- 4262811
81304 l_tmp_amt                    := NULL;          -- 4262811
81305 --
81306  
81307 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81308     l_balance_type_code <> 'B' THEN
81309 IF NVL(p_source_97,9E125) =  9
81310  THEN 
81311 
81312    --
81313    XLA_AE_LINES_PKG.SetNewLine;
81314 
81315    p_balance_type_code          := l_balance_type_code;
81316    -- set the flag so later we will know whether the gain loss line needs to be created
81317    
81318    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81319      p_actual_flag :='A';
81320    END IF;
81321 
81322    --
81323    -- bulk performance
81324    --
81325    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81326                                       p_header_num   => 0); -- 4262811
81327    --
81328    -- set accounting line options
81329    --
81330    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81331            p_natural_side_code          => 'D'
81332          , p_gain_or_loss_flag          => 'N'
81333          , p_gl_transfer_mode_code      => 'S'
81334          , p_acct_entry_type_code       => 'A'
81335          , p_switch_side_flag           => 'Y'
81336          , p_merge_duplicate_code       => 'N'
81337          );
81338    --
81339    l_acc_rev_natural_side_code := 'C';  -- 4262811
81340    -- 
81341    --
81342    -- set accounting line type info
81343    --
81344    xla_ae_lines_pkg.SetAcctLineType
81345       (p_component_type             => l_component_type
81346       ,p_event_type_code            => l_event_type_code
81347       ,p_line_definition_owner_code => l_line_definition_owner_code
81348       ,p_line_definition_code       => l_line_definition_code
81349       ,p_accounting_line_code       => l_component_code
81350       ,p_accounting_line_type_code  => l_component_type_code
81351       ,p_accounting_line_appl_id    => l_component_appl_id
81352       ,p_amb_context_code           => l_amb_context_code
81353       ,p_entity_code                => l_entity_code
81354       ,p_event_class_code           => l_event_class_code);
81355    --
81356    -- set accounting class
81357    --
81358    xla_ae_lines_pkg.SetAcctClass(
81359            p_accounting_class_code  => 'INTERORG_PAYABLES'
81360          , p_ae_header_id           => l_ae_header_id
81361          );
81362 
81363    --
81364    -- set rounding class
81365    --
81366    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81367                       'INTERORG_PAYABLES';
81368 
81369    --
81370    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81371    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81372    --
81373    -- bulk performance
81374    --
81375    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81376 
81377    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81378       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81379 
81380    -- 4955764
81381    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81382       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81383 
81384    -- 4458381 Public Sector Enh
81385    
81386    --
81387    -- set accounting attributes for the line type
81388    --
81389    l_entered_amt_idx := 3;
81390    l_accted_amt_idx  := 8;
81391    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
81392    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81393    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
81394    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81395    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
81396    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81397    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
81398    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81399    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
81400    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81401    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
81402    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81403    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
81404    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81405    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
81406    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81407    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
81408 
81409    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81410    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81411 
81412    ---------------------------------------------------------------------------------------------------------------
81413    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81414    ---------------------------------------------------------------------------------------------------------------
81415    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81416 
81417    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81418    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81419 
81420    IF xla_accounting_cache_pkg.GetValueChar
81421          (p_source_code         => 'LEDGER_CATEGORY_CODE'
81422          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81423    AND l_bflow_method_code = 'PRIOR_ENTRY'
81424 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81425    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81426          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81427        )
81428    THEN
81429          xla_ae_lines_pkg.BflowUpgEntry
81430            (p_business_method_code    => l_bflow_method_code
81431            ,p_business_class_code     => l_bflow_class_code
81432            ,p_balance_type            => l_balance_type_code);
81433    ELSE
81434       NULL;
81435 -- No business flow processing for business flow method of NONE.
81436    END IF;
81437 
81438    --
81439    -- call analytical criteria
81440    --
81441    
81442    --
81443    -- call description
81444    --
81445    -- No description or it is inherited.
81446    --
81447    -- call ADRs
81448    -- Bug 4922099
81449    --
81450    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81451         (NVL(l_actual_upg_option, 'N') = 'O') OR
81452         (NVL(l_enc_upg_option, 'N') = 'O')
81453       )
81454    THEN
81455    NULL;
81456    --
81457    --
81458    
81459   l_ccid := AcctDerRule_20(
81460            p_application_id           => p_application_id
81461          , p_ae_header_id             => l_ae_header_id 
81462 , p_source_35 => p_source_35
81463          , x_transaction_coa_id       => l_adr_transaction_coa_id
81464          , x_accounting_coa_id        => l_adr_accounting_coa_id
81465          , x_value_type_code          => l_adr_value_type_code
81466          , p_side                     => 'NA'
81467    );
81468 
81469    xla_ae_lines_pkg.set_ccid(
81470     p_code_combination_id          => l_ccid
81471   , p_value_type_code              => l_adr_value_type_code
81472   , p_transaction_coa_id           => l_adr_transaction_coa_id
81473   , p_accounting_coa_id            => l_adr_accounting_coa_id
81474   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
81475   , p_adr_type_code                => 'S'
81476   , p_component_type               => l_component_type
81477   , p_component_code               => l_component_code
81478   , p_component_type_code          => l_component_type_code
81479   , p_component_appl_id            => l_component_appl_id
81480   , p_amb_context_code             => l_amb_context_code
81481   , p_side                         => 'NA'
81482   );
81483 
81484 
81485    --
81486    --
81487    END IF;
81488    --
81489    -- Bug 4922099
81490    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81491           (NVL(l_enc_upg_option, 'N') = 'O')
81492         ) AND
81493         (l_bflow_method_code = 'PRIOR_ENTRY')
81494       )
81495    THEN
81496       IF
81497       --
81498       1 = 2
81499       --
81500       THEN
81501       xla_accounting_err_pkg.build_message
81502                                     (p_appli_s_name            => 'XLA'
81503                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81504                                     ,p_token_1                 => 'LINE_NUMBER'
81505                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
81506                                     ,p_token_2                 => 'LINE_TYPE_NAME'
81507                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
81508                                                                              l_component_type
81509                                                                             ,l_component_code
81510                                                                             ,l_component_type_code
81511                                                                             ,l_component_appl_id
81512                                                                             ,l_amb_context_code
81513                                                                             ,l_entity_code
81514                                                                             ,l_event_class_code
81515                                                                            )
81516                                     ,p_token_3                 => 'OWNER'
81517                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
81518                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
81519                                                                           ,p_lookup_code    => l_component_type_code
81520                                                                          )
81521                                     ,p_token_4                 => 'PRODUCT_NAME'
81522                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81523                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81524                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81525                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81526                                     ,p_ae_header_id            =>  NULL
81527                                        );
81528 
81529         IF (C_LEVEL_ERROR>= g_log_level) THEN
81530                  trace
81531                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81532                       ,p_level    => C_LEVEL_ERROR
81533                       ,p_module   => l_log_module);
81534         END IF;
81535       END IF;
81536    END IF;
81537    --
81538    --
81539    ------------------------------------------------------------------------------------------------
81540    -- 4219869 Business Flow
81541    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81542    -- Prior Entry.  Currently, the following code is always generated.
81543    ------------------------------------------------------------------------------------------------
81544    XLA_AE_LINES_PKG.ValidateCurrentLine;
81545 
81546    ------------------------------------------------------------------------------------
81547    -- 4219869 Business Flow
81548    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81549    ------------------------------------------------------------------------------------
81550    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81551 
81552    ----------------------------------------------------------------------------------
81553    -- 4219869 Business Flow
81554    -- Update journal entry status -- Need to generate this within IF <condition>
81555    ----------------------------------------------------------------------------------
81556    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81557          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81558          ,p_balance_type_code => l_balance_type_code
81559          );
81560 
81561    -------------------------------------------------------------------------------------------
81562    -- 4262811 - Generate the Accrual Reversal lines
81563    -------------------------------------------------------------------------------------------
81564    BEGIN
81565       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81566                               (g_array_event(p_event_id).array_value_num('header_index'));
81567       IF l_acc_rev_flag IS NULL THEN
81568          l_acc_rev_flag := 'N';
81569       END IF;
81570    EXCEPTION
81571       WHEN OTHERS THEN
81572          l_acc_rev_flag := 'N';
81573    END;
81574    --
81575    IF (l_acc_rev_flag = 'Y') THEN
81576 
81577        -- 4645092  ------------------------------------------------------------------------------
81578        -- To allow MPA report to determine if it should generate report process
81579        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81580        ------------------------------------------------------------------------------------------
81581 
81582        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81583        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81584    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
81585    -- call ADRs
81586    -- Bug 4922099
81587    --
81588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81589         (NVL(l_actual_upg_option, 'N') = 'O') OR
81590         (NVL(l_enc_upg_option, 'N') = 'O')
81591       )
81592    THEN
81593    NULL;
81594    --
81595    --
81596    
81597   l_ccid := AcctDerRule_20(
81598            p_application_id           => p_application_id
81599          , p_ae_header_id             => l_ae_header_id 
81600 , p_source_35 => p_source_35
81601          , x_transaction_coa_id       => l_adr_transaction_coa_id
81602          , x_accounting_coa_id        => l_adr_accounting_coa_id
81603          , x_value_type_code          => l_adr_value_type_code
81604          , p_side                     => 'NA'
81605    );
81606 
81607    xla_ae_lines_pkg.set_ccid(
81608     p_code_combination_id          => l_ccid
81609   , p_value_type_code              => l_adr_value_type_code
81610   , p_transaction_coa_id           => l_adr_transaction_coa_id
81611   , p_accounting_coa_id            => l_adr_accounting_coa_id
81612   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
81613   , p_adr_type_code                => 'S'
81614   , p_component_type               => l_component_type
81615   , p_component_code               => l_component_code
81616   , p_component_type_code          => l_component_type_code
81617   , p_component_appl_id            => l_component_appl_id
81618   , p_amb_context_code             => l_amb_context_code
81619   , p_side                         => 'NA'
81620   );
81621 
81622 
81623    --
81624    --
81625    END IF;
81626 
81627        --
81628        -- Update the line information that should be overwritten
81629        --
81630        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81631                                          p_header_num   => 1);
81632        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
81633 
81634        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81635 
81636        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
81637           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81638        END IF;
81639 
81640       --
81641       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81642       --
81643       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81644           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
81645       ELSE
81646           ---------------------------------------------------------------------------------------------------
81647           -- 4262811a Switch Sign
81648           ---------------------------------------------------------------------------------------------------
81649           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
81650           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81651                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81652           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81653                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81654           -- 5132302
81655           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81656                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81657 
81658       END IF;
81659 
81660       -- 4955764
81661       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81663 
81664 
81665       XLA_AE_LINES_PKG.ValidateCurrentLine;
81666       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81667 
81668       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81669                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81670                ,p_balance_type_code => l_balance_type_code);
81671 
81672    END IF;
81673 
81674    -----------------------------------------------------------------------------------------
81675    -- 4262811 Multiperiod Accounting
81676    -----------------------------------------------------------------------------------------
81677      -- No MPA option is assigned.
81678 
81679 
81680 END IF;
81681 END IF;
81682 --
81683 
81684 --
81685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81686    trace
81687       (p_msg      => 'END of AcctLineType_167'
81688       ,p_level    => C_LEVEL_PROCEDURE
81689       ,p_module   => l_log_module);
81690 END IF;
81691 --
81692 EXCEPTION
81693   WHEN xla_exceptions_pkg.application_exception THEN
81694       RAISE;
81695   WHEN OTHERS THEN
81696        xla_exceptions_pkg.raise_message
81697            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_167');
81698 END AcctLineType_167;
81699 --
81700 
81701 ---------------------------------------
81702 --
81703 -- PRIVATE FUNCTION
81704 --         AcctLineType_168
81705 --
81706 ---------------------------------------
81707 PROCEDURE AcctLineType_168 (
81708   p_application_id        IN NUMBER
81709  ,p_event_id              IN NUMBER
81710  ,p_calculate_acctd_flag  IN VARCHAR2
81711  ,p_calculate_g_l_flag    IN VARCHAR2
81712  ,p_actual_flag           IN OUT VARCHAR2
81713  ,p_balance_type_code     OUT VARCHAR2
81714  ,p_gain_or_loss_ref      OUT VARCHAR2
81715  
81716 --TRANSACTION_ID
81717  , p_source_1            IN NUMBER
81718 --Item Concatenated Segments
81719  , p_source_2            IN VARCHAR2
81720 --Transaction Quantity
81721  , p_source_3            IN NUMBER
81722 --Transaction Unit of Measure Code
81723  , p_source_4            IN VARCHAR2
81724 --Inventory Transaction Type Description
81725  , p_source_5            IN VARCHAR2
81726 --Interorg Payables Account
81727  , p_source_35            IN NUMBER
81728 --DISTRIBUTION_IDENTIFIER
81729  , p_source_84            IN NUMBER
81730 --Distribution Type
81731  , p_source_85            IN VARCHAR2
81732  , p_source_85_meaning    IN VARCHAR2
81733 --Entered Currency Code
81734  , p_source_88            IN VARCHAR2
81735 --Entered Amount
81736  , p_source_91            IN NUMBER
81737 --Currency Conversion Date
81738  , p_source_92            IN DATE
81739 --Currency Conversion Rate
81740  , p_source_93            IN NUMBER
81741 --Currency Conversion Type
81742  , p_source_94            IN VARCHAR2
81743 --Accounted Amount
81744  , p_source_95            IN NUMBER
81745 --Accounting Line Type
81746  , p_source_97            IN NUMBER
81747 )
81748 IS
81749 
81750 l_component_type              VARCHAR2(80);
81751 l_component_code              VARCHAR2(30);
81752 l_component_type_code         VARCHAR2(1);
81753 l_component_appl_id           INTEGER;
81754 l_amb_context_code            VARCHAR2(30);
81755 l_entity_code                 VARCHAR2(30);
81756 l_event_class_code            VARCHAR2(30);
81757 l_ae_header_id                NUMBER;
81758 l_event_type_code             VARCHAR2(30);
81759 l_line_definition_code        VARCHAR2(30);
81760 l_line_definition_owner_code  VARCHAR2(1);
81761 --
81762 -- adr variables
81763 l_segment                     VARCHAR2(30);
81764 l_ccid                        NUMBER;
81765 l_adr_transaction_coa_id      NUMBER;
81766 l_adr_accounting_coa_id       NUMBER;
81767 l_adr_flexfield_segment_code  VARCHAR2(30);
81768 l_adr_flex_value_set_id       NUMBER;
81769 l_adr_value_type_code         VARCHAR2(30);
81770 l_adr_value_combination_id    NUMBER;
81771 l_adr_value_segment_code      VARCHAR2(30);
81772 
81773 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
81774 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
81775 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
81776 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
81777 
81778 -- 4262811 Variables ------------------------------------------------------------------------------------------
81779 l_entered_amt_idx             NUMBER;
81780 l_accted_amt_idx              NUMBER;
81781 l_acc_rev_flag                VARCHAR2(1);
81782 l_accrual_line_num            NUMBER;
81783 l_tmp_amt                     NUMBER;
81784 l_acc_rev_natural_side_code   VARCHAR2(1);
81785 
81786 l_num_entries                 NUMBER;
81787 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
81788 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
81789 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
81790 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
81791 l_recog_line_1                NUMBER;
81792 l_recog_line_2                NUMBER;
81793 
81794 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
81795 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
81796 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
81797 
81798 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81799 
81800 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
81801 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
81802 
81803 ---------------------------------------------------------------------------------------------------------------
81804 
81805 
81806 --
81807 -- bulk performance
81808 --
81809 l_balance_type_code           VARCHAR2(1);
81810 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
81811 l_log_module                  VARCHAR2(240);
81812 
81813 --
81814 -- Upgrade strategy
81815 --
81816 l_actual_upg_option           VARCHAR2(1);
81817 l_enc_upg_option           VARCHAR2(1);
81818 
81819 --
81820 BEGIN
81821 --
81822 IF g_log_enabled THEN
81823       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_168';
81824 END IF;
81825 --
81826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81827 
81828       trace
81829          (p_msg      => 'BEGIN of AcctLineType_168'
81830          ,p_level    => C_LEVEL_PROCEDURE
81831          ,p_module   => l_log_module);
81832 
81833 END IF;
81834 --
81835 l_component_type             := 'AMB_JLT';
81836 l_component_code             := 'INTERORG_PAYABLES';
81837 l_component_type_code        := 'S';
81838 l_component_appl_id          :=  707;
81839 l_amb_context_code           := 'DEFAULT';
81840 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
81841 l_event_class_code           := 'INT_ORDER_TO_EXP';
81842 l_event_type_code            := 'EXP_REQ_RCPT_NO_TP';
81843 l_line_definition_owner_code := 'S';
81844 l_line_definition_code       := 'PI_EXP_REQ_RCPT_NO_TP';
81845 --
81846 l_balance_type_code          := 'A';
81847 l_segment                     := NULL;
81848 l_ccid                        := NULL;
81849 l_adr_transaction_coa_id      := NULL;
81850 l_adr_accounting_coa_id       := NULL;
81851 l_adr_flexfield_segment_code  := NULL;
81852 l_adr_flex_value_set_id       := NULL;
81853 l_adr_value_type_code         := NULL;
81854 l_adr_value_combination_id    := NULL;
81855 l_adr_value_segment_code      := NULL;
81856 
81857 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
81858 l_bflow_class_code           := '';    -- 4219869 Business Flow
81859 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
81860 l_budgetary_control_flag     := 'N';
81861 
81862 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
81863 l_bflow_applied_to_amt       := NULL; -- 5132302
81864 l_entered_amt_idx            := NULL;          -- 4262811
81865 l_accted_amt_idx             := NULL;          -- 4262811
81866 l_acc_rev_flag               := NULL;          -- 4262811
81867 l_accrual_line_num           := NULL;          -- 4262811
81868 l_tmp_amt                    := NULL;          -- 4262811
81869 --
81870  
81871 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81872     l_balance_type_code <> 'B' THEN
81873 IF NVL(p_source_97,9E125) =  9
81874  THEN 
81875 
81876    --
81877    XLA_AE_LINES_PKG.SetNewLine;
81878 
81879    p_balance_type_code          := l_balance_type_code;
81880    -- set the flag so later we will know whether the gain loss line needs to be created
81881    
81882    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81883      p_actual_flag :='A';
81884    END IF;
81885 
81886    --
81887    -- bulk performance
81888    --
81889    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81890                                       p_header_num   => 0); -- 4262811
81891    --
81892    -- set accounting line options
81893    --
81894    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81895            p_natural_side_code          => 'D'
81896          , p_gain_or_loss_flag          => 'N'
81897          , p_gl_transfer_mode_code      => 'S'
81898          , p_acct_entry_type_code       => 'A'
81899          , p_switch_side_flag           => 'Y'
81900          , p_merge_duplicate_code       => 'N'
81901          );
81902    --
81903    l_acc_rev_natural_side_code := 'C';  -- 4262811
81904    -- 
81905    --
81906    -- set accounting line type info
81907    --
81908    xla_ae_lines_pkg.SetAcctLineType
81909       (p_component_type             => l_component_type
81910       ,p_event_type_code            => l_event_type_code
81911       ,p_line_definition_owner_code => l_line_definition_owner_code
81912       ,p_line_definition_code       => l_line_definition_code
81913       ,p_accounting_line_code       => l_component_code
81914       ,p_accounting_line_type_code  => l_component_type_code
81915       ,p_accounting_line_appl_id    => l_component_appl_id
81916       ,p_amb_context_code           => l_amb_context_code
81917       ,p_entity_code                => l_entity_code
81918       ,p_event_class_code           => l_event_class_code);
81919    --
81920    -- set accounting class
81921    --
81922    xla_ae_lines_pkg.SetAcctClass(
81923            p_accounting_class_code  => 'INTERORG_PAYABLES'
81924          , p_ae_header_id           => l_ae_header_id
81925          );
81926 
81927    --
81928    -- set rounding class
81929    --
81930    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81931                       'INTERORG_PAYABLES';
81932 
81933    --
81934    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81935    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81936    --
81937    -- bulk performance
81938    --
81939    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81940 
81941    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81942       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81943 
81944    -- 4955764
81945    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81946       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81947 
81948    -- 4458381 Public Sector Enh
81949    
81950    --
81951    -- set accounting attributes for the line type
81952    --
81953    l_entered_amt_idx := 3;
81954    l_accted_amt_idx  := 8;
81955    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
81956    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81957    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
81958    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81959    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
81960    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81961    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
81962    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81963    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
81964    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81965    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
81966    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81967    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
81968    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81969    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
81970    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81971    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
81972 
81973    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81974    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81975 
81976    ---------------------------------------------------------------------------------------------------------------
81977    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81978    ---------------------------------------------------------------------------------------------------------------
81979    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81980 
81981    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81982    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81983 
81984    IF xla_accounting_cache_pkg.GetValueChar
81985          (p_source_code         => 'LEDGER_CATEGORY_CODE'
81986          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81987    AND l_bflow_method_code = 'PRIOR_ENTRY'
81988 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81989    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81990          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81991        )
81992    THEN
81993          xla_ae_lines_pkg.BflowUpgEntry
81994            (p_business_method_code    => l_bflow_method_code
81995            ,p_business_class_code     => l_bflow_class_code
81996            ,p_balance_type            => l_balance_type_code);
81997    ELSE
81998       NULL;
81999 -- No business flow processing for business flow method of NONE.
82000    END IF;
82001 
82002    --
82003    -- call analytical criteria
82004    --
82005    
82006    --
82007    -- call description
82008    --
82009    
82010 xla_ae_lines_pkg.SetLineDescription(
82011    p_ae_header_id => l_ae_header_id
82012   ,p_description  => Description_1 (
82013      p_application_id         => p_application_id
82014    , p_ae_header_id           => l_ae_header_id 
82015 , p_source_1 => p_source_1
82016 , p_source_2 => p_source_2
82017 , p_source_3 => p_source_3
82018 , p_source_4 => p_source_4
82019 , p_source_5 => p_source_5
82020    )
82021 );
82022 
82023 
82024    --
82025    -- call ADRs
82026    -- Bug 4922099
82027    --
82028    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82029         (NVL(l_actual_upg_option, 'N') = 'O') OR
82030         (NVL(l_enc_upg_option, 'N') = 'O')
82031       )
82032    THEN
82033    NULL;
82034    --
82035    --
82036    
82037   l_ccid := AcctDerRule_20(
82038            p_application_id           => p_application_id
82039          , p_ae_header_id             => l_ae_header_id 
82040 , p_source_35 => p_source_35
82041          , x_transaction_coa_id       => l_adr_transaction_coa_id
82042          , x_accounting_coa_id        => l_adr_accounting_coa_id
82043          , x_value_type_code          => l_adr_value_type_code
82044          , p_side                     => 'NA'
82045    );
82046 
82047    xla_ae_lines_pkg.set_ccid(
82048     p_code_combination_id          => l_ccid
82049   , p_value_type_code              => l_adr_value_type_code
82050   , p_transaction_coa_id           => l_adr_transaction_coa_id
82051   , p_accounting_coa_id            => l_adr_accounting_coa_id
82052   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
82053   , p_adr_type_code                => 'S'
82054   , p_component_type               => l_component_type
82055   , p_component_code               => l_component_code
82056   , p_component_type_code          => l_component_type_code
82057   , p_component_appl_id            => l_component_appl_id
82058   , p_amb_context_code             => l_amb_context_code
82059   , p_side                         => 'NA'
82060   );
82061 
82062 
82063    --
82064    --
82065    END IF;
82066    --
82067    -- Bug 4922099
82068    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82069           (NVL(l_enc_upg_option, 'N') = 'O')
82070         ) AND
82071         (l_bflow_method_code = 'PRIOR_ENTRY')
82072       )
82073    THEN
82074       IF
82075       --
82076       1 = 2
82077       --
82078       THEN
82079       xla_accounting_err_pkg.build_message
82080                                     (p_appli_s_name            => 'XLA'
82081                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82082                                     ,p_token_1                 => 'LINE_NUMBER'
82083                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82084                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82085                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82086                                                                              l_component_type
82087                                                                             ,l_component_code
82088                                                                             ,l_component_type_code
82089                                                                             ,l_component_appl_id
82090                                                                             ,l_amb_context_code
82091                                                                             ,l_entity_code
82092                                                                             ,l_event_class_code
82093                                                                            )
82094                                     ,p_token_3                 => 'OWNER'
82095                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82096                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82097                                                                           ,p_lookup_code    => l_component_type_code
82098                                                                          )
82099                                     ,p_token_4                 => 'PRODUCT_NAME'
82100                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82101                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82102                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82103                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82104                                     ,p_ae_header_id            =>  NULL
82105                                        );
82106 
82107         IF (C_LEVEL_ERROR>= g_log_level) THEN
82108                  trace
82109                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82110                       ,p_level    => C_LEVEL_ERROR
82111                       ,p_module   => l_log_module);
82112         END IF;
82113       END IF;
82114    END IF;
82115    --
82116    --
82117    ------------------------------------------------------------------------------------------------
82118    -- 4219869 Business Flow
82119    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82120    -- Prior Entry.  Currently, the following code is always generated.
82121    ------------------------------------------------------------------------------------------------
82122    XLA_AE_LINES_PKG.ValidateCurrentLine;
82123 
82124    ------------------------------------------------------------------------------------
82125    -- 4219869 Business Flow
82126    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82127    ------------------------------------------------------------------------------------
82128    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82129 
82130    ----------------------------------------------------------------------------------
82131    -- 4219869 Business Flow
82132    -- Update journal entry status -- Need to generate this within IF <condition>
82133    ----------------------------------------------------------------------------------
82134    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82135          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82136          ,p_balance_type_code => l_balance_type_code
82137          );
82138 
82139    -------------------------------------------------------------------------------------------
82140    -- 4262811 - Generate the Accrual Reversal lines
82141    -------------------------------------------------------------------------------------------
82142    BEGIN
82143       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82144                               (g_array_event(p_event_id).array_value_num('header_index'));
82145       IF l_acc_rev_flag IS NULL THEN
82146          l_acc_rev_flag := 'N';
82147       END IF;
82148    EXCEPTION
82149       WHEN OTHERS THEN
82150          l_acc_rev_flag := 'N';
82151    END;
82152    --
82153    IF (l_acc_rev_flag = 'Y') THEN
82154 
82155        -- 4645092  ------------------------------------------------------------------------------
82156        -- To allow MPA report to determine if it should generate report process
82157        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82158        ------------------------------------------------------------------------------------------
82159 
82160        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82161        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82162    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82163    -- call ADRs
82164    -- Bug 4922099
82165    --
82166    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82167         (NVL(l_actual_upg_option, 'N') = 'O') OR
82168         (NVL(l_enc_upg_option, 'N') = 'O')
82169       )
82170    THEN
82171    NULL;
82172    --
82173    --
82174    
82175   l_ccid := AcctDerRule_20(
82176            p_application_id           => p_application_id
82177          , p_ae_header_id             => l_ae_header_id 
82178 , p_source_35 => p_source_35
82179          , x_transaction_coa_id       => l_adr_transaction_coa_id
82180          , x_accounting_coa_id        => l_adr_accounting_coa_id
82181          , x_value_type_code          => l_adr_value_type_code
82182          , p_side                     => 'NA'
82183    );
82184 
82185    xla_ae_lines_pkg.set_ccid(
82186     p_code_combination_id          => l_ccid
82187   , p_value_type_code              => l_adr_value_type_code
82188   , p_transaction_coa_id           => l_adr_transaction_coa_id
82189   , p_accounting_coa_id            => l_adr_accounting_coa_id
82190   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
82191   , p_adr_type_code                => 'S'
82192   , p_component_type               => l_component_type
82193   , p_component_code               => l_component_code
82194   , p_component_type_code          => l_component_type_code
82195   , p_component_appl_id            => l_component_appl_id
82196   , p_amb_context_code             => l_amb_context_code
82197   , p_side                         => 'NA'
82198   );
82199 
82200 
82201    --
82202    --
82203    END IF;
82204 
82205        --
82206        -- Update the line information that should be overwritten
82207        --
82208        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82209                                          p_header_num   => 1);
82210        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82211 
82212        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82213 
82214        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82215           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82216        END IF;
82217 
82218       --
82219       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82220       --
82221       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82222           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82223       ELSE
82224           ---------------------------------------------------------------------------------------------------
82225           -- 4262811a Switch Sign
82226           ---------------------------------------------------------------------------------------------------
82227           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82228           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82229                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82230           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82231                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82232           -- 5132302
82233           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82234                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82235 
82236       END IF;
82237 
82238       -- 4955764
82239       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82240       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82241 
82242 
82243       XLA_AE_LINES_PKG.ValidateCurrentLine;
82244       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82245 
82246       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82247                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82248                ,p_balance_type_code => l_balance_type_code);
82249 
82250    END IF;
82251 
82252    -----------------------------------------------------------------------------------------
82253    -- 4262811 Multiperiod Accounting
82254    -----------------------------------------------------------------------------------------
82255      -- No MPA option is assigned.
82256 
82257 
82258 END IF;
82259 END IF;
82260 --
82261 
82262 --
82263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82264    trace
82265       (p_msg      => 'END of AcctLineType_168'
82266       ,p_level    => C_LEVEL_PROCEDURE
82267       ,p_module   => l_log_module);
82268 END IF;
82269 --
82270 EXCEPTION
82271   WHEN xla_exceptions_pkg.application_exception THEN
82272       RAISE;
82273   WHEN OTHERS THEN
82274        xla_exceptions_pkg.raise_message
82275            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_168');
82276 END AcctLineType_168;
82277 --
82278 
82279 ---------------------------------------
82280 --
82281 -- PRIVATE FUNCTION
82282 --         AcctLineType_169
82283 --
82284 ---------------------------------------
82285 PROCEDURE AcctLineType_169 (
82286   p_application_id        IN NUMBER
82287  ,p_event_id              IN NUMBER
82288  ,p_calculate_acctd_flag  IN VARCHAR2
82289  ,p_calculate_g_l_flag    IN VARCHAR2
82290  ,p_actual_flag           IN OUT VARCHAR2
82291  ,p_balance_type_code     OUT VARCHAR2
82292  ,p_gain_or_loss_ref      OUT VARCHAR2
82293  
82294 --TRANSACTION_ID
82295  , p_source_1            IN NUMBER
82296 --Item Concatenated Segments
82297  , p_source_2            IN VARCHAR2
82298 --Transaction Quantity
82299  , p_source_3            IN NUMBER
82300 --Transaction Unit of Measure Code
82301  , p_source_4            IN VARCHAR2
82302 --Inventory Transaction Type Description
82303  , p_source_5            IN VARCHAR2
82304 --Interorg Payables Account
82305  , p_source_35            IN NUMBER
82306 --DISTRIBUTION_IDENTIFIER
82307  , p_source_84            IN NUMBER
82308 --Distribution Type
82309  , p_source_85            IN VARCHAR2
82310  , p_source_85_meaning    IN VARCHAR2
82311 --Entered Currency Code
82312  , p_source_88            IN VARCHAR2
82313 --Entered Amount
82314  , p_source_91            IN NUMBER
82315 --Currency Conversion Date
82316  , p_source_92            IN DATE
82317 --Currency Conversion Rate
82318  , p_source_93            IN NUMBER
82319 --Currency Conversion Type
82320  , p_source_94            IN VARCHAR2
82321 --Accounted Amount
82322  , p_source_95            IN NUMBER
82323 --Accounting Line Type
82324  , p_source_97            IN NUMBER
82325 )
82326 IS
82327 
82328 l_component_type              VARCHAR2(80);
82329 l_component_code              VARCHAR2(30);
82330 l_component_type_code         VARCHAR2(1);
82331 l_component_appl_id           INTEGER;
82332 l_amb_context_code            VARCHAR2(30);
82333 l_entity_code                 VARCHAR2(30);
82334 l_event_class_code            VARCHAR2(30);
82335 l_ae_header_id                NUMBER;
82336 l_event_type_code             VARCHAR2(30);
82337 l_line_definition_code        VARCHAR2(30);
82338 l_line_definition_owner_code  VARCHAR2(1);
82339 --
82340 -- adr variables
82341 l_segment                     VARCHAR2(30);
82342 l_ccid                        NUMBER;
82343 l_adr_transaction_coa_id      NUMBER;
82344 l_adr_accounting_coa_id       NUMBER;
82345 l_adr_flexfield_segment_code  VARCHAR2(30);
82346 l_adr_flex_value_set_id       NUMBER;
82347 l_adr_value_type_code         VARCHAR2(30);
82348 l_adr_value_combination_id    NUMBER;
82349 l_adr_value_segment_code      VARCHAR2(30);
82350 
82351 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
82352 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
82353 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
82354 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
82355 
82356 -- 4262811 Variables ------------------------------------------------------------------------------------------
82357 l_entered_amt_idx             NUMBER;
82358 l_accted_amt_idx              NUMBER;
82359 l_acc_rev_flag                VARCHAR2(1);
82360 l_accrual_line_num            NUMBER;
82361 l_tmp_amt                     NUMBER;
82362 l_acc_rev_natural_side_code   VARCHAR2(1);
82363 
82364 l_num_entries                 NUMBER;
82365 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
82366 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
82367 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
82368 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
82369 l_recog_line_1                NUMBER;
82370 l_recog_line_2                NUMBER;
82371 
82372 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
82373 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
82374 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
82375 
82376 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82377 
82378 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
82379 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
82380 
82381 ---------------------------------------------------------------------------------------------------------------
82382 
82383 
82384 --
82385 -- bulk performance
82386 --
82387 l_balance_type_code           VARCHAR2(1);
82388 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
82389 l_log_module                  VARCHAR2(240);
82390 
82391 --
82392 -- Upgrade strategy
82393 --
82394 l_actual_upg_option           VARCHAR2(1);
82395 l_enc_upg_option           VARCHAR2(1);
82396 
82397 --
82398 BEGIN
82399 --
82400 IF g_log_enabled THEN
82401       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_169';
82402 END IF;
82403 --
82404 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82405 
82406       trace
82407          (p_msg      => 'BEGIN of AcctLineType_169'
82408          ,p_level    => C_LEVEL_PROCEDURE
82409          ,p_module   => l_log_module);
82410 
82411 END IF;
82412 --
82413 l_component_type             := 'AMB_JLT';
82414 l_component_code             := 'INTERORG_PAYABLES';
82415 l_component_type_code        := 'S';
82416 l_component_appl_id          :=  707;
82417 l_amb_context_code           := 'DEFAULT';
82418 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
82419 l_event_class_code           := 'INT_ORDER_TO_EXP';
82420 l_event_type_code            := 'EXP_REQ_RCPT_TP';
82421 l_line_definition_owner_code := 'S';
82422 l_line_definition_code       := 'PI_EXP_REQ_RCPT_TP';
82423 --
82424 l_balance_type_code          := 'A';
82425 l_segment                     := NULL;
82426 l_ccid                        := NULL;
82427 l_adr_transaction_coa_id      := NULL;
82428 l_adr_accounting_coa_id       := NULL;
82429 l_adr_flexfield_segment_code  := NULL;
82430 l_adr_flex_value_set_id       := NULL;
82431 l_adr_value_type_code         := NULL;
82432 l_adr_value_combination_id    := NULL;
82433 l_adr_value_segment_code      := NULL;
82434 
82435 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
82436 l_bflow_class_code           := '';    -- 4219869 Business Flow
82437 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
82438 l_budgetary_control_flag     := 'N';
82439 
82440 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
82441 l_bflow_applied_to_amt       := NULL; -- 5132302
82442 l_entered_amt_idx            := NULL;          -- 4262811
82443 l_accted_amt_idx             := NULL;          -- 4262811
82444 l_acc_rev_flag               := NULL;          -- 4262811
82445 l_accrual_line_num           := NULL;          -- 4262811
82446 l_tmp_amt                    := NULL;          -- 4262811
82447 --
82448  
82449 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82450     l_balance_type_code <> 'B' THEN
82451 IF NVL(p_source_97,9E125) =  9
82452  THEN 
82453 
82454    --
82455    XLA_AE_LINES_PKG.SetNewLine;
82456 
82457    p_balance_type_code          := l_balance_type_code;
82458    -- set the flag so later we will know whether the gain loss line needs to be created
82459    
82460    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82461      p_actual_flag :='A';
82462    END IF;
82463 
82464    --
82465    -- bulk performance
82466    --
82467    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82468                                       p_header_num   => 0); -- 4262811
82469    --
82470    -- set accounting line options
82471    --
82472    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82473            p_natural_side_code          => 'D'
82474          , p_gain_or_loss_flag          => 'N'
82475          , p_gl_transfer_mode_code      => 'S'
82476          , p_acct_entry_type_code       => 'A'
82477          , p_switch_side_flag           => 'Y'
82478          , p_merge_duplicate_code       => 'N'
82479          );
82480    --
82481    l_acc_rev_natural_side_code := 'C';  -- 4262811
82482    -- 
82483    --
82484    -- set accounting line type info
82485    --
82486    xla_ae_lines_pkg.SetAcctLineType
82487       (p_component_type             => l_component_type
82488       ,p_event_type_code            => l_event_type_code
82489       ,p_line_definition_owner_code => l_line_definition_owner_code
82490       ,p_line_definition_code       => l_line_definition_code
82491       ,p_accounting_line_code       => l_component_code
82492       ,p_accounting_line_type_code  => l_component_type_code
82493       ,p_accounting_line_appl_id    => l_component_appl_id
82494       ,p_amb_context_code           => l_amb_context_code
82495       ,p_entity_code                => l_entity_code
82496       ,p_event_class_code           => l_event_class_code);
82497    --
82498    -- set accounting class
82499    --
82500    xla_ae_lines_pkg.SetAcctClass(
82501            p_accounting_class_code  => 'INTERORG_PAYABLES'
82502          , p_ae_header_id           => l_ae_header_id
82503          );
82504 
82505    --
82506    -- set rounding class
82507    --
82508    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82509                       'INTERORG_PAYABLES';
82510 
82511    --
82512    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82513    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82514    --
82515    -- bulk performance
82516    --
82517    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82518 
82519    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82520       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82521 
82522    -- 4955764
82523    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82524       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82525 
82526    -- 4458381 Public Sector Enh
82527    
82528    --
82529    -- set accounting attributes for the line type
82530    --
82531    l_entered_amt_idx := 3;
82532    l_accted_amt_idx  := 8;
82533    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
82534    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82535    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
82536    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82537    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
82538    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82539    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
82540    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82541    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
82542    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82543    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
82544    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82545    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
82546    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82547    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
82548    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82549    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
82550 
82551    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82552    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82553 
82554    ---------------------------------------------------------------------------------------------------------------
82555    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82556    ---------------------------------------------------------------------------------------------------------------
82557    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82558 
82559    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82560    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82561 
82562    IF xla_accounting_cache_pkg.GetValueChar
82563          (p_source_code         => 'LEDGER_CATEGORY_CODE'
82564          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82565    AND l_bflow_method_code = 'PRIOR_ENTRY'
82566 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82567    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82568          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82569        )
82570    THEN
82571          xla_ae_lines_pkg.BflowUpgEntry
82572            (p_business_method_code    => l_bflow_method_code
82573            ,p_business_class_code     => l_bflow_class_code
82574            ,p_balance_type            => l_balance_type_code);
82575    ELSE
82576       NULL;
82577 -- No business flow processing for business flow method of NONE.
82578    END IF;
82579 
82580    --
82581    -- call analytical criteria
82582    --
82583    
82584    --
82585    -- call description
82586    --
82587    
82588 xla_ae_lines_pkg.SetLineDescription(
82589    p_ae_header_id => l_ae_header_id
82590   ,p_description  => Description_1 (
82591      p_application_id         => p_application_id
82592    , p_ae_header_id           => l_ae_header_id 
82593 , p_source_1 => p_source_1
82594 , p_source_2 => p_source_2
82595 , p_source_3 => p_source_3
82596 , p_source_4 => p_source_4
82597 , p_source_5 => p_source_5
82598    )
82599 );
82600 
82601 
82602    --
82603    -- call ADRs
82604    -- Bug 4922099
82605    --
82606    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82607         (NVL(l_actual_upg_option, 'N') = 'O') OR
82608         (NVL(l_enc_upg_option, 'N') = 'O')
82609       )
82610    THEN
82611    NULL;
82612    --
82613    --
82614    
82615   l_ccid := AcctDerRule_20(
82616            p_application_id           => p_application_id
82617          , p_ae_header_id             => l_ae_header_id 
82618 , p_source_35 => p_source_35
82619          , x_transaction_coa_id       => l_adr_transaction_coa_id
82620          , x_accounting_coa_id        => l_adr_accounting_coa_id
82621          , x_value_type_code          => l_adr_value_type_code
82622          , p_side                     => 'NA'
82623    );
82624 
82625    xla_ae_lines_pkg.set_ccid(
82626     p_code_combination_id          => l_ccid
82627   , p_value_type_code              => l_adr_value_type_code
82628   , p_transaction_coa_id           => l_adr_transaction_coa_id
82629   , p_accounting_coa_id            => l_adr_accounting_coa_id
82630   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
82631   , p_adr_type_code                => 'S'
82632   , p_component_type               => l_component_type
82633   , p_component_code               => l_component_code
82634   , p_component_type_code          => l_component_type_code
82635   , p_component_appl_id            => l_component_appl_id
82636   , p_amb_context_code             => l_amb_context_code
82637   , p_side                         => 'NA'
82638   );
82639 
82640 
82641    --
82642    --
82643    END IF;
82644    --
82645    -- Bug 4922099
82646    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82647           (NVL(l_enc_upg_option, 'N') = 'O')
82648         ) AND
82649         (l_bflow_method_code = 'PRIOR_ENTRY')
82650       )
82651    THEN
82652       IF
82653       --
82654       1 = 2
82655       --
82656       THEN
82657       xla_accounting_err_pkg.build_message
82658                                     (p_appli_s_name            => 'XLA'
82659                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82660                                     ,p_token_1                 => 'LINE_NUMBER'
82661                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
82662                                     ,p_token_2                 => 'LINE_TYPE_NAME'
82663                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
82664                                                                              l_component_type
82665                                                                             ,l_component_code
82666                                                                             ,l_component_type_code
82667                                                                             ,l_component_appl_id
82668                                                                             ,l_amb_context_code
82669                                                                             ,l_entity_code
82670                                                                             ,l_event_class_code
82671                                                                            )
82672                                     ,p_token_3                 => 'OWNER'
82673                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
82674                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
82675                                                                           ,p_lookup_code    => l_component_type_code
82676                                                                          )
82677                                     ,p_token_4                 => 'PRODUCT_NAME'
82678                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82679                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82680                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82681                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82682                                     ,p_ae_header_id            =>  NULL
82683                                        );
82684 
82685         IF (C_LEVEL_ERROR>= g_log_level) THEN
82686                  trace
82687                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82688                       ,p_level    => C_LEVEL_ERROR
82689                       ,p_module   => l_log_module);
82690         END IF;
82691       END IF;
82692    END IF;
82693    --
82694    --
82695    ------------------------------------------------------------------------------------------------
82696    -- 4219869 Business Flow
82697    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82698    -- Prior Entry.  Currently, the following code is always generated.
82699    ------------------------------------------------------------------------------------------------
82700    XLA_AE_LINES_PKG.ValidateCurrentLine;
82701 
82702    ------------------------------------------------------------------------------------
82703    -- 4219869 Business Flow
82704    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82705    ------------------------------------------------------------------------------------
82706    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82707 
82708    ----------------------------------------------------------------------------------
82709    -- 4219869 Business Flow
82710    -- Update journal entry status -- Need to generate this within IF <condition>
82711    ----------------------------------------------------------------------------------
82712    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82713          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82714          ,p_balance_type_code => l_balance_type_code
82715          );
82716 
82717    -------------------------------------------------------------------------------------------
82718    -- 4262811 - Generate the Accrual Reversal lines
82719    -------------------------------------------------------------------------------------------
82720    BEGIN
82721       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82722                               (g_array_event(p_event_id).array_value_num('header_index'));
82723       IF l_acc_rev_flag IS NULL THEN
82724          l_acc_rev_flag := 'N';
82725       END IF;
82726    EXCEPTION
82727       WHEN OTHERS THEN
82728          l_acc_rev_flag := 'N';
82729    END;
82730    --
82731    IF (l_acc_rev_flag = 'Y') THEN
82732 
82733        -- 4645092  ------------------------------------------------------------------------------
82734        -- To allow MPA report to determine if it should generate report process
82735        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82736        ------------------------------------------------------------------------------------------
82737 
82738        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82739        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82740    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
82741    -- call ADRs
82742    -- Bug 4922099
82743    --
82744    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82745         (NVL(l_actual_upg_option, 'N') = 'O') OR
82746         (NVL(l_enc_upg_option, 'N') = 'O')
82747       )
82748    THEN
82749    NULL;
82750    --
82751    --
82752    
82753   l_ccid := AcctDerRule_20(
82754            p_application_id           => p_application_id
82755          , p_ae_header_id             => l_ae_header_id 
82756 , p_source_35 => p_source_35
82757          , x_transaction_coa_id       => l_adr_transaction_coa_id
82758          , x_accounting_coa_id        => l_adr_accounting_coa_id
82759          , x_value_type_code          => l_adr_value_type_code
82760          , p_side                     => 'NA'
82761    );
82762 
82763    xla_ae_lines_pkg.set_ccid(
82764     p_code_combination_id          => l_ccid
82765   , p_value_type_code              => l_adr_value_type_code
82766   , p_transaction_coa_id           => l_adr_transaction_coa_id
82767   , p_accounting_coa_id            => l_adr_accounting_coa_id
82768   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
82769   , p_adr_type_code                => 'S'
82770   , p_component_type               => l_component_type
82771   , p_component_code               => l_component_code
82772   , p_component_type_code          => l_component_type_code
82773   , p_component_appl_id            => l_component_appl_id
82774   , p_amb_context_code             => l_amb_context_code
82775   , p_side                         => 'NA'
82776   );
82777 
82778 
82779    --
82780    --
82781    END IF;
82782 
82783        --
82784        -- Update the line information that should be overwritten
82785        --
82786        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82787                                          p_header_num   => 1);
82788        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
82789 
82790        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82791 
82792        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
82793           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82794        END IF;
82795 
82796       --
82797       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82798       --
82799       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82800           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
82801       ELSE
82802           ---------------------------------------------------------------------------------------------------
82803           -- 4262811a Switch Sign
82804           ---------------------------------------------------------------------------------------------------
82805           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
82806           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82807                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82808           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82809                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82810           -- 5132302
82811           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82812                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82813 
82814       END IF;
82815 
82816       -- 4955764
82817       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82818       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82819 
82820 
82821       XLA_AE_LINES_PKG.ValidateCurrentLine;
82822       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82823 
82824       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82825                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82826                ,p_balance_type_code => l_balance_type_code);
82827 
82828    END IF;
82829 
82830    -----------------------------------------------------------------------------------------
82831    -- 4262811 Multiperiod Accounting
82832    -----------------------------------------------------------------------------------------
82833      -- No MPA option is assigned.
82834 
82835 
82836 END IF;
82837 END IF;
82838 --
82839 
82840 --
82841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82842    trace
82843       (p_msg      => 'END of AcctLineType_169'
82844       ,p_level    => C_LEVEL_PROCEDURE
82845       ,p_module   => l_log_module);
82846 END IF;
82847 --
82848 EXCEPTION
82849   WHEN xla_exceptions_pkg.application_exception THEN
82850       RAISE;
82851   WHEN OTHERS THEN
82852        xla_exceptions_pkg.raise_message
82853            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_169');
82854 END AcctLineType_169;
82855 --
82856 
82857 ---------------------------------------
82858 --
82859 -- PRIVATE FUNCTION
82860 --         AcctLineType_170
82861 --
82862 ---------------------------------------
82863 PROCEDURE AcctLineType_170 (
82864   p_application_id        IN NUMBER
82865  ,p_event_id              IN NUMBER
82866  ,p_calculate_acctd_flag  IN VARCHAR2
82867  ,p_calculate_g_l_flag    IN VARCHAR2
82868  ,p_actual_flag           IN OUT VARCHAR2
82869  ,p_balance_type_code     OUT VARCHAR2
82870  ,p_gain_or_loss_ref      OUT VARCHAR2
82871  
82872 --TRANSACTION_ID
82873  , p_source_1            IN NUMBER
82874 --Item Concatenated Segments
82875  , p_source_2            IN VARCHAR2
82876 --Transaction Quantity
82877  , p_source_3            IN NUMBER
82878 --Transaction Unit of Measure Code
82879  , p_source_4            IN VARCHAR2
82880 --Inventory Transaction Type Description
82881  , p_source_5            IN VARCHAR2
82882 --Interorg Payables Account
82883  , p_source_35            IN NUMBER
82884 --DISTRIBUTION_IDENTIFIER
82885  , p_source_84            IN NUMBER
82886 --Distribution Type
82887  , p_source_85            IN VARCHAR2
82888  , p_source_85_meaning    IN VARCHAR2
82889 --Entered Currency Code
82890  , p_source_88            IN VARCHAR2
82891 --Entered Amount
82892  , p_source_91            IN NUMBER
82893 --Currency Conversion Date
82894  , p_source_92            IN DATE
82895 --Currency Conversion Rate
82896  , p_source_93            IN NUMBER
82897 --Currency Conversion Type
82898  , p_source_94            IN VARCHAR2
82899 --Accounted Amount
82900  , p_source_95            IN NUMBER
82901 --Accounting Line Type
82902  , p_source_97            IN NUMBER
82903 )
82904 IS
82905 
82906 l_component_type              VARCHAR2(80);
82907 l_component_code              VARCHAR2(30);
82908 l_component_type_code         VARCHAR2(1);
82909 l_component_appl_id           INTEGER;
82910 l_amb_context_code            VARCHAR2(30);
82911 l_entity_code                 VARCHAR2(30);
82912 l_event_class_code            VARCHAR2(30);
82913 l_ae_header_id                NUMBER;
82914 l_event_type_code             VARCHAR2(30);
82915 l_line_definition_code        VARCHAR2(30);
82916 l_line_definition_owner_code  VARCHAR2(1);
82917 --
82918 -- adr variables
82919 l_segment                     VARCHAR2(30);
82920 l_ccid                        NUMBER;
82921 l_adr_transaction_coa_id      NUMBER;
82922 l_adr_accounting_coa_id       NUMBER;
82923 l_adr_flexfield_segment_code  VARCHAR2(30);
82924 l_adr_flex_value_set_id       NUMBER;
82925 l_adr_value_type_code         VARCHAR2(30);
82926 l_adr_value_combination_id    NUMBER;
82927 l_adr_value_segment_code      VARCHAR2(30);
82928 
82929 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
82930 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
82931 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
82932 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
82933 
82934 -- 4262811 Variables ------------------------------------------------------------------------------------------
82935 l_entered_amt_idx             NUMBER;
82936 l_accted_amt_idx              NUMBER;
82937 l_acc_rev_flag                VARCHAR2(1);
82938 l_accrual_line_num            NUMBER;
82939 l_tmp_amt                     NUMBER;
82940 l_acc_rev_natural_side_code   VARCHAR2(1);
82941 
82942 l_num_entries                 NUMBER;
82943 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
82944 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
82945 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
82946 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
82947 l_recog_line_1                NUMBER;
82948 l_recog_line_2                NUMBER;
82949 
82950 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
82951 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
82952 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
82953 
82954 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82955 
82956 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
82957 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
82958 
82959 ---------------------------------------------------------------------------------------------------------------
82960 
82961 
82962 --
82963 -- bulk performance
82964 --
82965 l_balance_type_code           VARCHAR2(1);
82966 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
82967 l_log_module                  VARCHAR2(240);
82968 
82969 --
82970 -- Upgrade strategy
82971 --
82972 l_actual_upg_option           VARCHAR2(1);
82973 l_enc_upg_option           VARCHAR2(1);
82974 
82975 --
82976 BEGIN
82977 --
82978 IF g_log_enabled THEN
82979       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_170';
82980 END IF;
82981 --
82982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82983 
82984       trace
82985          (p_msg      => 'BEGIN of AcctLineType_170'
82986          ,p_level    => C_LEVEL_PROCEDURE
82987          ,p_module   => l_log_module);
82988 
82989 END IF;
82990 --
82991 l_component_type             := 'AMB_JLT';
82992 l_component_code             := 'INTERORG_PAYABLES';
82993 l_component_type_code        := 'S';
82994 l_component_appl_id          :=  707;
82995 l_amb_context_code           := 'DEFAULT';
82996 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
82997 l_event_class_code           := 'USER_DEFINE';
82998 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
82999 l_line_definition_owner_code := 'S';
83000 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
83001 --
83002 l_balance_type_code          := 'A';
83003 l_segment                     := NULL;
83004 l_ccid                        := NULL;
83005 l_adr_transaction_coa_id      := NULL;
83006 l_adr_accounting_coa_id       := NULL;
83007 l_adr_flexfield_segment_code  := NULL;
83008 l_adr_flex_value_set_id       := NULL;
83009 l_adr_value_type_code         := NULL;
83010 l_adr_value_combination_id    := NULL;
83011 l_adr_value_segment_code      := NULL;
83012 
83013 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
83014 l_bflow_class_code           := '';    -- 4219869 Business Flow
83015 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
83016 l_budgetary_control_flag     := 'N';
83017 
83018 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
83019 l_bflow_applied_to_amt       := NULL; -- 5132302
83020 l_entered_amt_idx            := NULL;          -- 4262811
83021 l_accted_amt_idx             := NULL;          -- 4262811
83022 l_acc_rev_flag               := NULL;          -- 4262811
83023 l_accrual_line_num           := NULL;          -- 4262811
83024 l_tmp_amt                    := NULL;          -- 4262811
83025 --
83026  
83027 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83028     l_balance_type_code <> 'B' THEN
83029 IF NVL(p_source_97,9E125) =  9
83030  THEN 
83031 
83032    --
83033    XLA_AE_LINES_PKG.SetNewLine;
83034 
83035    p_balance_type_code          := l_balance_type_code;
83036    -- set the flag so later we will know whether the gain loss line needs to be created
83037    
83038    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83039      p_actual_flag :='A';
83040    END IF;
83041 
83042    --
83043    -- bulk performance
83044    --
83045    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83046                                       p_header_num   => 0); -- 4262811
83047    --
83048    -- set accounting line options
83049    --
83050    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83051            p_natural_side_code          => 'D'
83052          , p_gain_or_loss_flag          => 'N'
83053          , p_gl_transfer_mode_code      => 'S'
83054          , p_acct_entry_type_code       => 'A'
83055          , p_switch_side_flag           => 'Y'
83056          , p_merge_duplicate_code       => 'N'
83057          );
83058    --
83059    l_acc_rev_natural_side_code := 'C';  -- 4262811
83060    -- 
83061    --
83062    -- set accounting line type info
83063    --
83064    xla_ae_lines_pkg.SetAcctLineType
83065       (p_component_type             => l_component_type
83066       ,p_event_type_code            => l_event_type_code
83067       ,p_line_definition_owner_code => l_line_definition_owner_code
83068       ,p_line_definition_code       => l_line_definition_code
83069       ,p_accounting_line_code       => l_component_code
83070       ,p_accounting_line_type_code  => l_component_type_code
83071       ,p_accounting_line_appl_id    => l_component_appl_id
83072       ,p_amb_context_code           => l_amb_context_code
83073       ,p_entity_code                => l_entity_code
83074       ,p_event_class_code           => l_event_class_code);
83075    --
83076    -- set accounting class
83077    --
83078    xla_ae_lines_pkg.SetAcctClass(
83079            p_accounting_class_code  => 'INTERORG_PAYABLES'
83080          , p_ae_header_id           => l_ae_header_id
83081          );
83082 
83083    --
83084    -- set rounding class
83085    --
83086    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83087                       'INTERORG_PAYABLES';
83088 
83089    --
83090    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83091    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83092    --
83093    -- bulk performance
83094    --
83095    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83096 
83097    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83098       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83099 
83100    -- 4955764
83101    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83102       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83103 
83104    -- 4458381 Public Sector Enh
83105    
83106    --
83107    -- set accounting attributes for the line type
83108    --
83109    l_entered_amt_idx := 3;
83110    l_accted_amt_idx  := 8;
83111    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
83112    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83113    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
83114    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83115    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
83116    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83117    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
83118    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83119    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
83120    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83121    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
83122    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83123    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
83124    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83125    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
83126    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83127    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
83128 
83129    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83130    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83131 
83132    ---------------------------------------------------------------------------------------------------------------
83133    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83134    ---------------------------------------------------------------------------------------------------------------
83135    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83136 
83137    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83138    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83139 
83140    IF xla_accounting_cache_pkg.GetValueChar
83141          (p_source_code         => 'LEDGER_CATEGORY_CODE'
83142          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83143    AND l_bflow_method_code = 'PRIOR_ENTRY'
83144 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83145    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83146          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83147        )
83148    THEN
83149          xla_ae_lines_pkg.BflowUpgEntry
83150            (p_business_method_code    => l_bflow_method_code
83151            ,p_business_class_code     => l_bflow_class_code
83152            ,p_balance_type            => l_balance_type_code);
83153    ELSE
83154       NULL;
83155 -- No business flow processing for business flow method of NONE.
83156    END IF;
83157 
83158    --
83159    -- call analytical criteria
83160    --
83161    
83162    --
83163    -- call description
83164    --
83165    
83166 xla_ae_lines_pkg.SetLineDescription(
83167    p_ae_header_id => l_ae_header_id
83168   ,p_description  => Description_1 (
83169      p_application_id         => p_application_id
83170    , p_ae_header_id           => l_ae_header_id 
83171 , p_source_1 => p_source_1
83172 , p_source_2 => p_source_2
83173 , p_source_3 => p_source_3
83174 , p_source_4 => p_source_4
83175 , p_source_5 => p_source_5
83176    )
83177 );
83178 
83179 
83180    --
83181    -- call ADRs
83182    -- Bug 4922099
83183    --
83184    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83185         (NVL(l_actual_upg_option, 'N') = 'O') OR
83186         (NVL(l_enc_upg_option, 'N') = 'O')
83187       )
83188    THEN
83189    NULL;
83190    --
83191    --
83192    
83193   l_ccid := AcctDerRule_20(
83194            p_application_id           => p_application_id
83195          , p_ae_header_id             => l_ae_header_id 
83196 , p_source_35 => p_source_35
83197          , x_transaction_coa_id       => l_adr_transaction_coa_id
83198          , x_accounting_coa_id        => l_adr_accounting_coa_id
83199          , x_value_type_code          => l_adr_value_type_code
83200          , p_side                     => 'NA'
83201    );
83202 
83203    xla_ae_lines_pkg.set_ccid(
83204     p_code_combination_id          => l_ccid
83205   , p_value_type_code              => l_adr_value_type_code
83206   , p_transaction_coa_id           => l_adr_transaction_coa_id
83207   , p_accounting_coa_id            => l_adr_accounting_coa_id
83208   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
83209   , p_adr_type_code                => 'S'
83210   , p_component_type               => l_component_type
83211   , p_component_code               => l_component_code
83212   , p_component_type_code          => l_component_type_code
83213   , p_component_appl_id            => l_component_appl_id
83214   , p_amb_context_code             => l_amb_context_code
83215   , p_side                         => 'NA'
83216   );
83217 
83218 
83219    --
83220    --
83221    END IF;
83222    --
83223    -- Bug 4922099
83224    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83225           (NVL(l_enc_upg_option, 'N') = 'O')
83226         ) AND
83227         (l_bflow_method_code = 'PRIOR_ENTRY')
83228       )
83229    THEN
83230       IF
83231       --
83232       1 = 2
83233       --
83234       THEN
83235       xla_accounting_err_pkg.build_message
83236                                     (p_appli_s_name            => 'XLA'
83237                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83238                                     ,p_token_1                 => 'LINE_NUMBER'
83239                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
83240                                     ,p_token_2                 => 'LINE_TYPE_NAME'
83241                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
83242                                                                              l_component_type
83243                                                                             ,l_component_code
83244                                                                             ,l_component_type_code
83245                                                                             ,l_component_appl_id
83246                                                                             ,l_amb_context_code
83247                                                                             ,l_entity_code
83248                                                                             ,l_event_class_code
83249                                                                            )
83250                                     ,p_token_3                 => 'OWNER'
83251                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
83252                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
83253                                                                           ,p_lookup_code    => l_component_type_code
83254                                                                          )
83255                                     ,p_token_4                 => 'PRODUCT_NAME'
83256                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83257                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83258                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83259                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83260                                     ,p_ae_header_id            =>  NULL
83261                                        );
83262 
83263         IF (C_LEVEL_ERROR>= g_log_level) THEN
83264                  trace
83265                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83266                       ,p_level    => C_LEVEL_ERROR
83267                       ,p_module   => l_log_module);
83268         END IF;
83269       END IF;
83270    END IF;
83271    --
83272    --
83273    ------------------------------------------------------------------------------------------------
83274    -- 4219869 Business Flow
83275    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83276    -- Prior Entry.  Currently, the following code is always generated.
83277    ------------------------------------------------------------------------------------------------
83278    XLA_AE_LINES_PKG.ValidateCurrentLine;
83279 
83280    ------------------------------------------------------------------------------------
83281    -- 4219869 Business Flow
83282    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83283    ------------------------------------------------------------------------------------
83284    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83285 
83286    ----------------------------------------------------------------------------------
83287    -- 4219869 Business Flow
83288    -- Update journal entry status -- Need to generate this within IF <condition>
83289    ----------------------------------------------------------------------------------
83290    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83291          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83292          ,p_balance_type_code => l_balance_type_code
83293          );
83294 
83295    -------------------------------------------------------------------------------------------
83296    -- 4262811 - Generate the Accrual Reversal lines
83297    -------------------------------------------------------------------------------------------
83298    BEGIN
83299       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83300                               (g_array_event(p_event_id).array_value_num('header_index'));
83301       IF l_acc_rev_flag IS NULL THEN
83302          l_acc_rev_flag := 'N';
83303       END IF;
83304    EXCEPTION
83305       WHEN OTHERS THEN
83306          l_acc_rev_flag := 'N';
83307    END;
83308    --
83309    IF (l_acc_rev_flag = 'Y') THEN
83310 
83311        -- 4645092  ------------------------------------------------------------------------------
83312        -- To allow MPA report to determine if it should generate report process
83313        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83314        ------------------------------------------------------------------------------------------
83315 
83316        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83317        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83318    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
83319    -- call ADRs
83320    -- Bug 4922099
83321    --
83322    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83323         (NVL(l_actual_upg_option, 'N') = 'O') OR
83324         (NVL(l_enc_upg_option, 'N') = 'O')
83325       )
83326    THEN
83327    NULL;
83328    --
83329    --
83330    
83331   l_ccid := AcctDerRule_20(
83332            p_application_id           => p_application_id
83333          , p_ae_header_id             => l_ae_header_id 
83334 , p_source_35 => p_source_35
83335          , x_transaction_coa_id       => l_adr_transaction_coa_id
83336          , x_accounting_coa_id        => l_adr_accounting_coa_id
83337          , x_value_type_code          => l_adr_value_type_code
83338          , p_side                     => 'NA'
83339    );
83340 
83341    xla_ae_lines_pkg.set_ccid(
83342     p_code_combination_id          => l_ccid
83343   , p_value_type_code              => l_adr_value_type_code
83344   , p_transaction_coa_id           => l_adr_transaction_coa_id
83345   , p_accounting_coa_id            => l_adr_accounting_coa_id
83346   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
83347   , p_adr_type_code                => 'S'
83348   , p_component_type               => l_component_type
83349   , p_component_code               => l_component_code
83350   , p_component_type_code          => l_component_type_code
83351   , p_component_appl_id            => l_component_appl_id
83352   , p_amb_context_code             => l_amb_context_code
83353   , p_side                         => 'NA'
83354   );
83355 
83356 
83357    --
83358    --
83359    END IF;
83360 
83361        --
83362        -- Update the line information that should be overwritten
83363        --
83364        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83365                                          p_header_num   => 1);
83366        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
83367 
83368        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83369 
83370        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
83371           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83372        END IF;
83373 
83374       --
83375       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83376       --
83377       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83378           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
83379       ELSE
83380           ---------------------------------------------------------------------------------------------------
83381           -- 4262811a Switch Sign
83382           ---------------------------------------------------------------------------------------------------
83383           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
83384           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83385                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83386           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83387                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83388           -- 5132302
83389           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83390                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83391 
83392       END IF;
83393 
83394       -- 4955764
83395       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83396       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83397 
83398 
83399       XLA_AE_LINES_PKG.ValidateCurrentLine;
83400       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83401 
83402       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83403                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83404                ,p_balance_type_code => l_balance_type_code);
83405 
83406    END IF;
83407 
83408    -----------------------------------------------------------------------------------------
83409    -- 4262811 Multiperiod Accounting
83410    -----------------------------------------------------------------------------------------
83411      -- No MPA option is assigned.
83412 
83413 
83414 END IF;
83415 END IF;
83416 --
83417 
83418 --
83419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83420    trace
83421       (p_msg      => 'END of AcctLineType_170'
83422       ,p_level    => C_LEVEL_PROCEDURE
83423       ,p_module   => l_log_module);
83424 END IF;
83425 --
83426 EXCEPTION
83427   WHEN xla_exceptions_pkg.application_exception THEN
83428       RAISE;
83429   WHEN OTHERS THEN
83430        xla_exceptions_pkg.raise_message
83431            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_170');
83432 END AcctLineType_170;
83433 --
83434 
83435 ---------------------------------------
83436 --
83437 -- PRIVATE FUNCTION
83438 --         AcctLineType_171
83439 --
83440 ---------------------------------------
83441 PROCEDURE AcctLineType_171 (
83442   p_application_id        IN NUMBER
83443  ,p_event_id              IN NUMBER
83444  ,p_calculate_acctd_flag  IN VARCHAR2
83445  ,p_calculate_g_l_flag    IN VARCHAR2
83446  ,p_actual_flag           IN OUT VARCHAR2
83447  ,p_balance_type_code     OUT VARCHAR2
83448  ,p_gain_or_loss_ref      OUT VARCHAR2
83449  
83450 --TRANSACTION_ID
83451  , p_source_1            IN NUMBER
83452 --Item Concatenated Segments
83453  , p_source_2            IN VARCHAR2
83454 --Transaction Quantity
83455  , p_source_3            IN NUMBER
83456 --Transaction Unit of Measure Code
83457  , p_source_4            IN VARCHAR2
83458 --Inventory Transaction Type Description
83459  , p_source_5            IN VARCHAR2
83460 --Cost Management Default Account
83461  , p_source_11            IN NUMBER
83462 --DISTRIBUTION_IDENTIFIER
83463  , p_source_84            IN NUMBER
83464 --Distribution Type
83465  , p_source_85            IN VARCHAR2
83466  , p_source_85_meaning    IN VARCHAR2
83467 --Entered Currency Code
83468  , p_source_88            IN VARCHAR2
83469 --Entered Amount
83470  , p_source_91            IN NUMBER
83471 --Currency Conversion Date
83472  , p_source_92            IN DATE
83473 --Currency Conversion Rate
83474  , p_source_93            IN NUMBER
83475 --Currency Conversion Type
83476  , p_source_94            IN VARCHAR2
83477 --Accounted Amount
83478  , p_source_95            IN NUMBER
83479 --Accounting Line Type
83480  , p_source_97            IN NUMBER
83481 )
83482 IS
83483 
83484 l_component_type              VARCHAR2(80);
83485 l_component_code              VARCHAR2(30);
83486 l_component_type_code         VARCHAR2(1);
83487 l_component_appl_id           INTEGER;
83488 l_amb_context_code            VARCHAR2(30);
83489 l_entity_code                 VARCHAR2(30);
83490 l_event_class_code            VARCHAR2(30);
83491 l_ae_header_id                NUMBER;
83492 l_event_type_code             VARCHAR2(30);
83493 l_line_definition_code        VARCHAR2(30);
83494 l_line_definition_owner_code  VARCHAR2(1);
83495 --
83496 -- adr variables
83497 l_segment                     VARCHAR2(30);
83498 l_ccid                        NUMBER;
83499 l_adr_transaction_coa_id      NUMBER;
83500 l_adr_accounting_coa_id       NUMBER;
83501 l_adr_flexfield_segment_code  VARCHAR2(30);
83502 l_adr_flex_value_set_id       NUMBER;
83503 l_adr_value_type_code         VARCHAR2(30);
83504 l_adr_value_combination_id    NUMBER;
83505 l_adr_value_segment_code      VARCHAR2(30);
83506 
83507 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
83508 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
83509 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
83510 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
83511 
83512 -- 4262811 Variables ------------------------------------------------------------------------------------------
83513 l_entered_amt_idx             NUMBER;
83514 l_accted_amt_idx              NUMBER;
83515 l_acc_rev_flag                VARCHAR2(1);
83516 l_accrual_line_num            NUMBER;
83517 l_tmp_amt                     NUMBER;
83518 l_acc_rev_natural_side_code   VARCHAR2(1);
83519 
83520 l_num_entries                 NUMBER;
83521 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
83522 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
83523 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
83524 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
83525 l_recog_line_1                NUMBER;
83526 l_recog_line_2                NUMBER;
83527 
83528 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
83529 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
83530 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
83531 
83532 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83533 
83534 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
83535 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
83536 
83537 ---------------------------------------------------------------------------------------------------------------
83538 
83539 
83540 --
83541 -- bulk performance
83542 --
83543 l_balance_type_code           VARCHAR2(1);
83544 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
83545 l_log_module                  VARCHAR2(240);
83546 
83547 --
83548 -- Upgrade strategy
83549 --
83550 l_actual_upg_option           VARCHAR2(1);
83551 l_enc_upg_option           VARCHAR2(1);
83552 
83553 --
83554 BEGIN
83555 --
83556 IF g_log_enabled THEN
83557       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_171';
83558 END IF;
83559 --
83560 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83561 
83562       trace
83563          (p_msg      => 'BEGIN of AcctLineType_171'
83564          ,p_level    => C_LEVEL_PROCEDURE
83565          ,p_module   => l_log_module);
83566 
83567 END IF;
83568 --
83569 l_component_type             := 'AMB_JLT';
83570 l_component_code             := 'INTERORG_PAYABLES';
83571 l_component_type_code        := 'S';
83572 l_component_appl_id          :=  707;
83573 l_amb_context_code           := 'DEFAULT';
83574 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
83575 l_event_class_code           := 'USER_DEFINE';
83576 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
83577 l_line_definition_owner_code := 'S';
83578 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
83579 --
83580 l_balance_type_code          := 'A';
83581 l_segment                     := NULL;
83582 l_ccid                        := NULL;
83583 l_adr_transaction_coa_id      := NULL;
83584 l_adr_accounting_coa_id       := NULL;
83585 l_adr_flexfield_segment_code  := NULL;
83586 l_adr_flex_value_set_id       := NULL;
83587 l_adr_value_type_code         := NULL;
83588 l_adr_value_combination_id    := NULL;
83589 l_adr_value_segment_code      := NULL;
83590 
83591 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
83592 l_bflow_class_code           := '';    -- 4219869 Business Flow
83593 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
83594 l_budgetary_control_flag     := 'N';
83595 
83596 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
83597 l_bflow_applied_to_amt       := NULL; -- 5132302
83598 l_entered_amt_idx            := NULL;          -- 4262811
83599 l_accted_amt_idx             := NULL;          -- 4262811
83600 l_acc_rev_flag               := NULL;          -- 4262811
83601 l_accrual_line_num           := NULL;          -- 4262811
83602 l_tmp_amt                    := NULL;          -- 4262811
83603 --
83604  
83605 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83606     l_balance_type_code <> 'B' THEN
83607 IF NVL(p_source_97,9E125) =  9
83608  THEN 
83609 
83610    --
83611    XLA_AE_LINES_PKG.SetNewLine;
83612 
83613    p_balance_type_code          := l_balance_type_code;
83614    -- set the flag so later we will know whether the gain loss line needs to be created
83615    
83616    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83617      p_actual_flag :='A';
83618    END IF;
83619 
83620    --
83621    -- bulk performance
83622    --
83623    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83624                                       p_header_num   => 0); -- 4262811
83625    --
83626    -- set accounting line options
83627    --
83628    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83629            p_natural_side_code          => 'D'
83630          , p_gain_or_loss_flag          => 'N'
83631          , p_gl_transfer_mode_code      => 'S'
83632          , p_acct_entry_type_code       => 'A'
83633          , p_switch_side_flag           => 'Y'
83634          , p_merge_duplicate_code       => 'N'
83635          );
83636    --
83637    l_acc_rev_natural_side_code := 'C';  -- 4262811
83638    -- 
83639    --
83640    -- set accounting line type info
83641    --
83642    xla_ae_lines_pkg.SetAcctLineType
83643       (p_component_type             => l_component_type
83644       ,p_event_type_code            => l_event_type_code
83645       ,p_line_definition_owner_code => l_line_definition_owner_code
83646       ,p_line_definition_code       => l_line_definition_code
83647       ,p_accounting_line_code       => l_component_code
83648       ,p_accounting_line_type_code  => l_component_type_code
83649       ,p_accounting_line_appl_id    => l_component_appl_id
83650       ,p_amb_context_code           => l_amb_context_code
83651       ,p_entity_code                => l_entity_code
83652       ,p_event_class_code           => l_event_class_code);
83653    --
83654    -- set accounting class
83655    --
83656    xla_ae_lines_pkg.SetAcctClass(
83657            p_accounting_class_code  => 'INTERORG_PAYABLES'
83658          , p_ae_header_id           => l_ae_header_id
83659          );
83660 
83661    --
83662    -- set rounding class
83663    --
83664    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83665                       'INTERORG_PAYABLES';
83666 
83667    --
83668    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83669    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83670    --
83671    -- bulk performance
83672    --
83673    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83674 
83675    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83676       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83677 
83678    -- 4955764
83679    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83680       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83681 
83682    -- 4458381 Public Sector Enh
83683    
83684    --
83685    -- set accounting attributes for the line type
83686    --
83687    l_entered_amt_idx := 3;
83688    l_accted_amt_idx  := 8;
83689    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
83690    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83691    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
83692    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83693    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
83694    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83695    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
83696    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83697    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
83698    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83699    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
83700    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83701    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
83702    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83703    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
83704    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83705    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
83706 
83707    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83708    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83709 
83710    ---------------------------------------------------------------------------------------------------------------
83711    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83712    ---------------------------------------------------------------------------------------------------------------
83713    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83714 
83715    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83716    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83717 
83718    IF xla_accounting_cache_pkg.GetValueChar
83719          (p_source_code         => 'LEDGER_CATEGORY_CODE'
83720          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83721    AND l_bflow_method_code = 'PRIOR_ENTRY'
83722 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83723    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83724          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83725        )
83726    THEN
83727          xla_ae_lines_pkg.BflowUpgEntry
83728            (p_business_method_code    => l_bflow_method_code
83729            ,p_business_class_code     => l_bflow_class_code
83730            ,p_balance_type            => l_balance_type_code);
83731    ELSE
83732       NULL;
83733 -- No business flow processing for business flow method of NONE.
83734    END IF;
83735 
83736    --
83737    -- call analytical criteria
83738    --
83739    
83740    --
83741    -- call description
83742    --
83743    
83744 xla_ae_lines_pkg.SetLineDescription(
83745    p_ae_header_id => l_ae_header_id
83746   ,p_description  => Description_1 (
83747      p_application_id         => p_application_id
83748    , p_ae_header_id           => l_ae_header_id 
83749 , p_source_1 => p_source_1
83750 , p_source_2 => p_source_2
83751 , p_source_3 => p_source_3
83752 , p_source_4 => p_source_4
83753 , p_source_5 => p_source_5
83754    )
83755 );
83756 
83757 
83758    --
83759    -- call ADRs
83760    -- Bug 4922099
83761    --
83762    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83763         (NVL(l_actual_upg_option, 'N') = 'O') OR
83764         (NVL(l_enc_upg_option, 'N') = 'O')
83765       )
83766    THEN
83767    NULL;
83768    --
83769    --
83770    
83771   l_ccid := AcctDerRule_6(
83772            p_application_id           => p_application_id
83773          , p_ae_header_id             => l_ae_header_id 
83774 , p_source_11 => p_source_11
83775          , x_transaction_coa_id       => l_adr_transaction_coa_id
83776          , x_accounting_coa_id        => l_adr_accounting_coa_id
83777          , x_value_type_code          => l_adr_value_type_code
83778          , p_side                     => 'NA'
83779    );
83780 
83781    xla_ae_lines_pkg.set_ccid(
83782     p_code_combination_id          => l_ccid
83783   , p_value_type_code              => l_adr_value_type_code
83784   , p_transaction_coa_id           => l_adr_transaction_coa_id
83785   , p_accounting_coa_id            => l_adr_accounting_coa_id
83786   , p_adr_code                     => 'CST_DEFAULT'
83787   , p_adr_type_code                => 'S'
83788   , p_component_type               => l_component_type
83789   , p_component_code               => l_component_code
83790   , p_component_type_code          => l_component_type_code
83791   , p_component_appl_id            => l_component_appl_id
83792   , p_amb_context_code             => l_amb_context_code
83793   , p_side                         => 'NA'
83794   );
83795 
83796 
83797    --
83798    --
83799    END IF;
83800    --
83801    -- Bug 4922099
83802    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83803           (NVL(l_enc_upg_option, 'N') = 'O')
83804         ) AND
83805         (l_bflow_method_code = 'PRIOR_ENTRY')
83806       )
83807    THEN
83808       IF
83809       --
83810       1 = 2
83811       --
83812       THEN
83813       xla_accounting_err_pkg.build_message
83814                                     (p_appli_s_name            => 'XLA'
83815                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83816                                     ,p_token_1                 => 'LINE_NUMBER'
83817                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
83818                                     ,p_token_2                 => 'LINE_TYPE_NAME'
83819                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
83820                                                                              l_component_type
83821                                                                             ,l_component_code
83822                                                                             ,l_component_type_code
83823                                                                             ,l_component_appl_id
83824                                                                             ,l_amb_context_code
83825                                                                             ,l_entity_code
83826                                                                             ,l_event_class_code
83827                                                                            )
83828                                     ,p_token_3                 => 'OWNER'
83829                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
83830                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
83831                                                                           ,p_lookup_code    => l_component_type_code
83832                                                                          )
83833                                     ,p_token_4                 => 'PRODUCT_NAME'
83834                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83835                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83836                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83837                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83838                                     ,p_ae_header_id            =>  NULL
83839                                        );
83840 
83841         IF (C_LEVEL_ERROR>= g_log_level) THEN
83842                  trace
83843                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83844                       ,p_level    => C_LEVEL_ERROR
83845                       ,p_module   => l_log_module);
83846         END IF;
83847       END IF;
83848    END IF;
83849    --
83850    --
83851    ------------------------------------------------------------------------------------------------
83852    -- 4219869 Business Flow
83853    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83854    -- Prior Entry.  Currently, the following code is always generated.
83855    ------------------------------------------------------------------------------------------------
83856    XLA_AE_LINES_PKG.ValidateCurrentLine;
83857 
83858    ------------------------------------------------------------------------------------
83859    -- 4219869 Business Flow
83860    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83861    ------------------------------------------------------------------------------------
83862    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83863 
83864    ----------------------------------------------------------------------------------
83865    -- 4219869 Business Flow
83866    -- Update journal entry status -- Need to generate this within IF <condition>
83867    ----------------------------------------------------------------------------------
83868    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83869          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83870          ,p_balance_type_code => l_balance_type_code
83871          );
83872 
83873    -------------------------------------------------------------------------------------------
83874    -- 4262811 - Generate the Accrual Reversal lines
83875    -------------------------------------------------------------------------------------------
83876    BEGIN
83877       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83878                               (g_array_event(p_event_id).array_value_num('header_index'));
83879       IF l_acc_rev_flag IS NULL THEN
83880          l_acc_rev_flag := 'N';
83881       END IF;
83882    EXCEPTION
83883       WHEN OTHERS THEN
83884          l_acc_rev_flag := 'N';
83885    END;
83886    --
83887    IF (l_acc_rev_flag = 'Y') THEN
83888 
83889        -- 4645092  ------------------------------------------------------------------------------
83890        -- To allow MPA report to determine if it should generate report process
83891        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83892        ------------------------------------------------------------------------------------------
83893 
83894        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83895        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83896    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
83897    -- call ADRs
83898    -- Bug 4922099
83899    --
83900    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83901         (NVL(l_actual_upg_option, 'N') = 'O') OR
83902         (NVL(l_enc_upg_option, 'N') = 'O')
83903       )
83904    THEN
83905    NULL;
83906    --
83907    --
83908    
83909   l_ccid := AcctDerRule_6(
83910            p_application_id           => p_application_id
83911          , p_ae_header_id             => l_ae_header_id 
83912 , p_source_11 => p_source_11
83913          , x_transaction_coa_id       => l_adr_transaction_coa_id
83914          , x_accounting_coa_id        => l_adr_accounting_coa_id
83915          , x_value_type_code          => l_adr_value_type_code
83916          , p_side                     => 'NA'
83917    );
83918 
83919    xla_ae_lines_pkg.set_ccid(
83920     p_code_combination_id          => l_ccid
83921   , p_value_type_code              => l_adr_value_type_code
83922   , p_transaction_coa_id           => l_adr_transaction_coa_id
83923   , p_accounting_coa_id            => l_adr_accounting_coa_id
83924   , p_adr_code                     => 'CST_DEFAULT'
83925   , p_adr_type_code                => 'S'
83926   , p_component_type               => l_component_type
83927   , p_component_code               => l_component_code
83928   , p_component_type_code          => l_component_type_code
83929   , p_component_appl_id            => l_component_appl_id
83930   , p_amb_context_code             => l_amb_context_code
83931   , p_side                         => 'NA'
83932   );
83933 
83934 
83935    --
83936    --
83937    END IF;
83938 
83939        --
83940        -- Update the line information that should be overwritten
83941        --
83942        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83943                                          p_header_num   => 1);
83944        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
83945 
83946        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83947 
83948        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
83949           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83950        END IF;
83951 
83952       --
83953       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83954       --
83955       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83956           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
83957       ELSE
83958           ---------------------------------------------------------------------------------------------------
83959           -- 4262811a Switch Sign
83960           ---------------------------------------------------------------------------------------------------
83961           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
83962           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83963                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83964           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83965                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83966           -- 5132302
83967           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83968                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83969 
83970       END IF;
83971 
83972       -- 4955764
83973       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83975 
83976 
83977       XLA_AE_LINES_PKG.ValidateCurrentLine;
83978       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83979 
83980       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83981                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83982                ,p_balance_type_code => l_balance_type_code);
83983 
83984    END IF;
83985 
83986    -----------------------------------------------------------------------------------------
83987    -- 4262811 Multiperiod Accounting
83988    -----------------------------------------------------------------------------------------
83989      -- No MPA option is assigned.
83990 
83991 
83992 END IF;
83993 END IF;
83994 --
83995 
83996 --
83997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83998    trace
83999       (p_msg      => 'END of AcctLineType_171'
84000       ,p_level    => C_LEVEL_PROCEDURE
84001       ,p_module   => l_log_module);
84002 END IF;
84003 --
84004 EXCEPTION
84005   WHEN xla_exceptions_pkg.application_exception THEN
84006       RAISE;
84007   WHEN OTHERS THEN
84008        xla_exceptions_pkg.raise_message
84009            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_171');
84010 END AcctLineType_171;
84011 --
84012 
84013 ---------------------------------------
84014 --
84015 -- PRIVATE FUNCTION
84016 --         AcctLineType_172
84017 --
84018 ---------------------------------------
84019 PROCEDURE AcctLineType_172 (
84020   p_application_id        IN NUMBER
84021  ,p_event_id              IN NUMBER
84022  ,p_calculate_acctd_flag  IN VARCHAR2
84023  ,p_calculate_g_l_flag    IN VARCHAR2
84024  ,p_actual_flag           IN OUT VARCHAR2
84025  ,p_balance_type_code     OUT VARCHAR2
84026  ,p_gain_or_loss_ref      OUT VARCHAR2
84027  
84028 --TRANSACTION_ID
84029  , p_source_1            IN NUMBER
84030 --Item Concatenated Segments
84031  , p_source_2            IN VARCHAR2
84032 --Transaction Quantity
84033  , p_source_3            IN NUMBER
84034 --Transaction Unit of Measure Code
84035  , p_source_4            IN VARCHAR2
84036 --Inventory Transaction Type Description
84037  , p_source_5            IN VARCHAR2
84038 --Interorg Payables Account
84039  , p_source_35            IN NUMBER
84040 --DISTRIBUTION_IDENTIFIER
84041  , p_source_84            IN NUMBER
84042 --Distribution Type
84043  , p_source_85            IN VARCHAR2
84044  , p_source_85_meaning    IN VARCHAR2
84045 --Entered Currency Code
84046  , p_source_88            IN VARCHAR2
84047 --Entered Amount
84048  , p_source_91            IN NUMBER
84049 --Currency Conversion Date
84050  , p_source_92            IN DATE
84051 --Currency Conversion Rate
84052  , p_source_93            IN NUMBER
84053 --Currency Conversion Type
84054  , p_source_94            IN VARCHAR2
84055 --Accounted Amount
84056  , p_source_95            IN NUMBER
84057 --Accounting Line Type
84058  , p_source_97            IN NUMBER
84059 )
84060 IS
84061 
84062 l_component_type              VARCHAR2(80);
84063 l_component_code              VARCHAR2(30);
84064 l_component_type_code         VARCHAR2(1);
84065 l_component_appl_id           INTEGER;
84066 l_amb_context_code            VARCHAR2(30);
84067 l_entity_code                 VARCHAR2(30);
84068 l_event_class_code            VARCHAR2(30);
84069 l_ae_header_id                NUMBER;
84070 l_event_type_code             VARCHAR2(30);
84071 l_line_definition_code        VARCHAR2(30);
84072 l_line_definition_owner_code  VARCHAR2(1);
84073 --
84074 -- adr variables
84075 l_segment                     VARCHAR2(30);
84076 l_ccid                        NUMBER;
84077 l_adr_transaction_coa_id      NUMBER;
84078 l_adr_accounting_coa_id       NUMBER;
84079 l_adr_flexfield_segment_code  VARCHAR2(30);
84080 l_adr_flex_value_set_id       NUMBER;
84081 l_adr_value_type_code         VARCHAR2(30);
84082 l_adr_value_combination_id    NUMBER;
84083 l_adr_value_segment_code      VARCHAR2(30);
84084 
84085 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
84086 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
84087 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
84088 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
84089 
84090 -- 4262811 Variables ------------------------------------------------------------------------------------------
84091 l_entered_amt_idx             NUMBER;
84092 l_accted_amt_idx              NUMBER;
84093 l_acc_rev_flag                VARCHAR2(1);
84094 l_accrual_line_num            NUMBER;
84095 l_tmp_amt                     NUMBER;
84096 l_acc_rev_natural_side_code   VARCHAR2(1);
84097 
84098 l_num_entries                 NUMBER;
84099 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
84100 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
84101 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
84102 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
84103 l_recog_line_1                NUMBER;
84104 l_recog_line_2                NUMBER;
84105 
84106 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
84107 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
84108 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
84109 
84110 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84111 
84112 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
84113 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
84114 
84115 ---------------------------------------------------------------------------------------------------------------
84116 
84117 
84118 --
84119 -- bulk performance
84120 --
84121 l_balance_type_code           VARCHAR2(1);
84122 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
84123 l_log_module                  VARCHAR2(240);
84124 
84125 --
84126 -- Upgrade strategy
84127 --
84128 l_actual_upg_option           VARCHAR2(1);
84129 l_enc_upg_option           VARCHAR2(1);
84130 
84131 --
84132 BEGIN
84133 --
84134 IF g_log_enabled THEN
84135       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_172';
84136 END IF;
84137 --
84138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84139 
84140       trace
84141          (p_msg      => 'BEGIN of AcctLineType_172'
84142          ,p_level    => C_LEVEL_PROCEDURE
84143          ,p_module   => l_log_module);
84144 
84145 END IF;
84146 --
84147 l_component_type             := 'AMB_JLT';
84148 l_component_code             := 'INTERORG_PAYABLES';
84149 l_component_type_code        := 'S';
84150 l_component_appl_id          :=  707;
84151 l_amb_context_code           := 'DEFAULT';
84152 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
84153 l_event_class_code           := 'USER_DEFINE';
84154 l_event_type_code            := 'UDIR_INTERORG_SHIP';
84155 l_line_definition_owner_code := 'S';
84156 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
84157 --
84158 l_balance_type_code          := 'A';
84159 l_segment                     := NULL;
84160 l_ccid                        := NULL;
84161 l_adr_transaction_coa_id      := NULL;
84162 l_adr_accounting_coa_id       := NULL;
84163 l_adr_flexfield_segment_code  := NULL;
84164 l_adr_flex_value_set_id       := NULL;
84165 l_adr_value_type_code         := NULL;
84166 l_adr_value_combination_id    := NULL;
84167 l_adr_value_segment_code      := NULL;
84168 
84169 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
84170 l_bflow_class_code           := '';    -- 4219869 Business Flow
84171 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
84172 l_budgetary_control_flag     := 'N';
84173 
84174 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
84175 l_bflow_applied_to_amt       := NULL; -- 5132302
84176 l_entered_amt_idx            := NULL;          -- 4262811
84177 l_accted_amt_idx             := NULL;          -- 4262811
84178 l_acc_rev_flag               := NULL;          -- 4262811
84179 l_accrual_line_num           := NULL;          -- 4262811
84180 l_tmp_amt                    := NULL;          -- 4262811
84181 --
84182  
84183 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84184     l_balance_type_code <> 'B' THEN
84185 IF NVL(p_source_97,9E125) =  9
84186  THEN 
84187 
84188    --
84189    XLA_AE_LINES_PKG.SetNewLine;
84190 
84191    p_balance_type_code          := l_balance_type_code;
84192    -- set the flag so later we will know whether the gain loss line needs to be created
84193    
84194    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84195      p_actual_flag :='A';
84196    END IF;
84197 
84198    --
84199    -- bulk performance
84200    --
84201    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84202                                       p_header_num   => 0); -- 4262811
84203    --
84204    -- set accounting line options
84205    --
84206    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84207            p_natural_side_code          => 'D'
84208          , p_gain_or_loss_flag          => 'N'
84209          , p_gl_transfer_mode_code      => 'S'
84210          , p_acct_entry_type_code       => 'A'
84211          , p_switch_side_flag           => 'Y'
84212          , p_merge_duplicate_code       => 'N'
84213          );
84214    --
84215    l_acc_rev_natural_side_code := 'C';  -- 4262811
84216    -- 
84217    --
84218    -- set accounting line type info
84219    --
84220    xla_ae_lines_pkg.SetAcctLineType
84221       (p_component_type             => l_component_type
84222       ,p_event_type_code            => l_event_type_code
84223       ,p_line_definition_owner_code => l_line_definition_owner_code
84224       ,p_line_definition_code       => l_line_definition_code
84225       ,p_accounting_line_code       => l_component_code
84226       ,p_accounting_line_type_code  => l_component_type_code
84227       ,p_accounting_line_appl_id    => l_component_appl_id
84228       ,p_amb_context_code           => l_amb_context_code
84229       ,p_entity_code                => l_entity_code
84230       ,p_event_class_code           => l_event_class_code);
84231    --
84232    -- set accounting class
84233    --
84234    xla_ae_lines_pkg.SetAcctClass(
84235            p_accounting_class_code  => 'INTERORG_PAYABLES'
84236          , p_ae_header_id           => l_ae_header_id
84237          );
84238 
84239    --
84240    -- set rounding class
84241    --
84242    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84243                       'INTERORG_PAYABLES';
84244 
84245    --
84246    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84247    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84248    --
84249    -- bulk performance
84250    --
84251    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84252 
84253    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84254       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84255 
84256    -- 4955764
84257    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84258       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84259 
84260    -- 4458381 Public Sector Enh
84261    
84262    --
84263    -- set accounting attributes for the line type
84264    --
84265    l_entered_amt_idx := 3;
84266    l_accted_amt_idx  := 8;
84267    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
84268    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84269    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
84270    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84271    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
84272    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84273    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
84274    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84275    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
84276    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84277    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
84278    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84279    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
84280    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84281    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
84282    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84283    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
84284 
84285    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84286    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84287 
84288    ---------------------------------------------------------------------------------------------------------------
84289    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84290    ---------------------------------------------------------------------------------------------------------------
84291    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84292 
84293    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84294    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84295 
84296    IF xla_accounting_cache_pkg.GetValueChar
84297          (p_source_code         => 'LEDGER_CATEGORY_CODE'
84298          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84299    AND l_bflow_method_code = 'PRIOR_ENTRY'
84300 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84301    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84302          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84303        )
84304    THEN
84305          xla_ae_lines_pkg.BflowUpgEntry
84306            (p_business_method_code    => l_bflow_method_code
84307            ,p_business_class_code     => l_bflow_class_code
84308            ,p_balance_type            => l_balance_type_code);
84309    ELSE
84310       NULL;
84311 -- No business flow processing for business flow method of NONE.
84312    END IF;
84313 
84314    --
84315    -- call analytical criteria
84316    --
84317    
84318    --
84319    -- call description
84320    --
84321    
84322 xla_ae_lines_pkg.SetLineDescription(
84323    p_ae_header_id => l_ae_header_id
84324   ,p_description  => Description_1 (
84325      p_application_id         => p_application_id
84326    , p_ae_header_id           => l_ae_header_id 
84327 , p_source_1 => p_source_1
84328 , p_source_2 => p_source_2
84329 , p_source_3 => p_source_3
84330 , p_source_4 => p_source_4
84331 , p_source_5 => p_source_5
84332    )
84333 );
84334 
84335 
84336    --
84337    -- call ADRs
84338    -- Bug 4922099
84339    --
84340    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84341         (NVL(l_actual_upg_option, 'N') = 'O') OR
84342         (NVL(l_enc_upg_option, 'N') = 'O')
84343       )
84344    THEN
84345    NULL;
84346    --
84347    --
84348    
84349   l_ccid := AcctDerRule_20(
84350            p_application_id           => p_application_id
84351          , p_ae_header_id             => l_ae_header_id 
84352 , p_source_35 => p_source_35
84353          , x_transaction_coa_id       => l_adr_transaction_coa_id
84354          , x_accounting_coa_id        => l_adr_accounting_coa_id
84355          , x_value_type_code          => l_adr_value_type_code
84356          , p_side                     => 'NA'
84357    );
84358 
84359    xla_ae_lines_pkg.set_ccid(
84360     p_code_combination_id          => l_ccid
84361   , p_value_type_code              => l_adr_value_type_code
84362   , p_transaction_coa_id           => l_adr_transaction_coa_id
84363   , p_accounting_coa_id            => l_adr_accounting_coa_id
84364   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
84365   , p_adr_type_code                => 'S'
84366   , p_component_type               => l_component_type
84367   , p_component_code               => l_component_code
84368   , p_component_type_code          => l_component_type_code
84369   , p_component_appl_id            => l_component_appl_id
84370   , p_amb_context_code             => l_amb_context_code
84371   , p_side                         => 'NA'
84372   );
84373 
84374 
84375    --
84376    --
84377    END IF;
84378    --
84379    -- Bug 4922099
84380    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
84381           (NVL(l_enc_upg_option, 'N') = 'O')
84382         ) AND
84383         (l_bflow_method_code = 'PRIOR_ENTRY')
84384       )
84385    THEN
84386       IF
84387       --
84388       1 = 2
84389       --
84390       THEN
84391       xla_accounting_err_pkg.build_message
84392                                     (p_appli_s_name            => 'XLA'
84393                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84394                                     ,p_token_1                 => 'LINE_NUMBER'
84395                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
84396                                     ,p_token_2                 => 'LINE_TYPE_NAME'
84397                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
84398                                                                              l_component_type
84399                                                                             ,l_component_code
84400                                                                             ,l_component_type_code
84401                                                                             ,l_component_appl_id
84402                                                                             ,l_amb_context_code
84403                                                                             ,l_entity_code
84404                                                                             ,l_event_class_code
84405                                                                            )
84406                                     ,p_token_3                 => 'OWNER'
84407                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
84408                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
84409                                                                           ,p_lookup_code    => l_component_type_code
84410                                                                          )
84411                                     ,p_token_4                 => 'PRODUCT_NAME'
84412                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
84413                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
84414                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
84415                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
84416                                     ,p_ae_header_id            =>  NULL
84417                                        );
84418 
84419         IF (C_LEVEL_ERROR>= g_log_level) THEN
84420                  trace
84421                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84422                       ,p_level    => C_LEVEL_ERROR
84423                       ,p_module   => l_log_module);
84424         END IF;
84425       END IF;
84426    END IF;
84427    --
84428    --
84429    ------------------------------------------------------------------------------------------------
84430    -- 4219869 Business Flow
84431    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
84432    -- Prior Entry.  Currently, the following code is always generated.
84433    ------------------------------------------------------------------------------------------------
84434    XLA_AE_LINES_PKG.ValidateCurrentLine;
84435 
84436    ------------------------------------------------------------------------------------
84437    -- 4219869 Business Flow
84438    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
84439    ------------------------------------------------------------------------------------
84440    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84441 
84442    ----------------------------------------------------------------------------------
84443    -- 4219869 Business Flow
84444    -- Update journal entry status -- Need to generate this within IF <condition>
84445    ----------------------------------------------------------------------------------
84446    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84447          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84448          ,p_balance_type_code => l_balance_type_code
84449          );
84450 
84451    -------------------------------------------------------------------------------------------
84452    -- 4262811 - Generate the Accrual Reversal lines
84453    -------------------------------------------------------------------------------------------
84454    BEGIN
84455       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84456                               (g_array_event(p_event_id).array_value_num('header_index'));
84457       IF l_acc_rev_flag IS NULL THEN
84458          l_acc_rev_flag := 'N';
84459       END IF;
84460    EXCEPTION
84461       WHEN OTHERS THEN
84462          l_acc_rev_flag := 'N';
84463    END;
84464    --
84465    IF (l_acc_rev_flag = 'Y') THEN
84466 
84467        -- 4645092  ------------------------------------------------------------------------------
84468        -- To allow MPA report to determine if it should generate report process
84469        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84470        ------------------------------------------------------------------------------------------
84471 
84472        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84473        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84474    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
84475    -- call ADRs
84476    -- Bug 4922099
84477    --
84478    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84479         (NVL(l_actual_upg_option, 'N') = 'O') OR
84480         (NVL(l_enc_upg_option, 'N') = 'O')
84481       )
84482    THEN
84483    NULL;
84484    --
84485    --
84486    
84487   l_ccid := AcctDerRule_20(
84488            p_application_id           => p_application_id
84489          , p_ae_header_id             => l_ae_header_id 
84490 , p_source_35 => p_source_35
84491          , x_transaction_coa_id       => l_adr_transaction_coa_id
84492          , x_accounting_coa_id        => l_adr_accounting_coa_id
84493          , x_value_type_code          => l_adr_value_type_code
84494          , p_side                     => 'NA'
84495    );
84496 
84497    xla_ae_lines_pkg.set_ccid(
84498     p_code_combination_id          => l_ccid
84499   , p_value_type_code              => l_adr_value_type_code
84500   , p_transaction_coa_id           => l_adr_transaction_coa_id
84501   , p_accounting_coa_id            => l_adr_accounting_coa_id
84502   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
84503   , p_adr_type_code                => 'S'
84504   , p_component_type               => l_component_type
84505   , p_component_code               => l_component_code
84506   , p_component_type_code          => l_component_type_code
84507   , p_component_appl_id            => l_component_appl_id
84508   , p_amb_context_code             => l_amb_context_code
84509   , p_side                         => 'NA'
84510   );
84511 
84512 
84513    --
84514    --
84515    END IF;
84516 
84517        --
84518        -- Update the line information that should be overwritten
84519        --
84520        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84521                                          p_header_num   => 1);
84522        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
84523 
84524        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84525 
84526        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
84527           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84528        END IF;
84529 
84530       --
84531       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84532       --
84533       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84534           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
84535       ELSE
84536           ---------------------------------------------------------------------------------------------------
84537           -- 4262811a Switch Sign
84538           ---------------------------------------------------------------------------------------------------
84539           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
84540           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84541                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84542           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84543                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84544           -- 5132302
84545           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84546                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84547 
84548       END IF;
84549 
84550       -- 4955764
84551       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84552       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84553 
84554 
84555       XLA_AE_LINES_PKG.ValidateCurrentLine;
84556       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84557 
84558       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84559                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84560                ,p_balance_type_code => l_balance_type_code);
84561 
84562    END IF;
84563 
84564    -----------------------------------------------------------------------------------------
84565    -- 4262811 Multiperiod Accounting
84566    -----------------------------------------------------------------------------------------
84567      -- No MPA option is assigned.
84568 
84569 
84570 END IF;
84571 END IF;
84572 --
84573 
84574 --
84575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84576    trace
84577       (p_msg      => 'END of AcctLineType_172'
84578       ,p_level    => C_LEVEL_PROCEDURE
84579       ,p_module   => l_log_module);
84580 END IF;
84581 --
84582 EXCEPTION
84583   WHEN xla_exceptions_pkg.application_exception THEN
84584       RAISE;
84585   WHEN OTHERS THEN
84586        xla_exceptions_pkg.raise_message
84587            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_172');
84588 END AcctLineType_172;
84589 --
84590 
84591 ---------------------------------------
84592 --
84593 -- PRIVATE FUNCTION
84594 --         AcctLineType_173
84595 --
84596 ---------------------------------------
84597 PROCEDURE AcctLineType_173 (
84598   p_application_id        IN NUMBER
84599  ,p_event_id              IN NUMBER
84600  ,p_calculate_acctd_flag  IN VARCHAR2
84601  ,p_calculate_g_l_flag    IN VARCHAR2
84602  ,p_actual_flag           IN OUT VARCHAR2
84603  ,p_balance_type_code     OUT VARCHAR2
84604  ,p_gain_or_loss_ref      OUT VARCHAR2
84605  
84606 --TRANSACTION_ID
84607  , p_source_1            IN NUMBER
84608 --Item Concatenated Segments
84609  , p_source_2            IN VARCHAR2
84610 --Transaction Quantity
84611  , p_source_3            IN NUMBER
84612 --Transaction Unit of Measure Code
84613  , p_source_4            IN VARCHAR2
84614 --Inventory Transaction Type Description
84615  , p_source_5            IN VARCHAR2
84616 --Cost Management Default Account
84617  , p_source_11            IN NUMBER
84618 --Applied to Application ID
84619  , p_source_79            IN NUMBER
84620 --Applied to Distribution Link Type
84621  , p_source_80            IN VARCHAR2
84622 --Applied to Entity Code
84623  , p_source_81            IN VARCHAR2
84624 --DISTRIBUTION_IDENTIFIER
84625  , p_source_84            IN NUMBER
84626 --Distribution Type
84627  , p_source_85            IN VARCHAR2
84628  , p_source_85_meaning    IN VARCHAR2
84629 --Encumbrance Reversal Amount Entered
84630  , p_source_87            IN NUMBER
84631 --Entered Currency Code
84632  , p_source_88            IN VARCHAR2
84633 --Transaction Encumbrance Reversal Amount
84634  , p_source_89            IN NUMBER
84635 --Entered Amount
84636  , p_source_91            IN NUMBER
84637 --Currency Conversion Date
84638  , p_source_92            IN DATE
84639 --Currency Conversion Rate
84640  , p_source_93            IN NUMBER
84641 --Currency Conversion Type
84642  , p_source_94            IN VARCHAR2
84643 --Accounted Amount
84644  , p_source_95            IN NUMBER
84645 --Accounting Line Type
84646  , p_source_97            IN NUMBER
84647 --Costing Encumbrance Upgrade Option
84648  , p_source_100            IN VARCHAR2
84649 --TXN_PO_DISTRIBUTION_ID
84650  , p_source_101            IN NUMBER
84651 --TXN_PO_HEADER_ID
84652  , p_source_102            IN NUMBER
84653 --Requisition Budget Account
84654  , p_source_103            IN NUMBER
84655 --Requisition Encumbrance Type Identifier
84656  , p_source_104            IN NUMBER
84657 )
84658 IS
84659 
84660 l_component_type              VARCHAR2(80);
84661 l_component_code              VARCHAR2(30);
84662 l_component_type_code         VARCHAR2(1);
84663 l_component_appl_id           INTEGER;
84664 l_amb_context_code            VARCHAR2(30);
84665 l_entity_code                 VARCHAR2(30);
84666 l_event_class_code            VARCHAR2(30);
84667 l_ae_header_id                NUMBER;
84668 l_event_type_code             VARCHAR2(30);
84669 l_line_definition_code        VARCHAR2(30);
84670 l_line_definition_owner_code  VARCHAR2(1);
84671 --
84672 -- adr variables
84673 l_segment                     VARCHAR2(30);
84674 l_ccid                        NUMBER;
84675 l_adr_transaction_coa_id      NUMBER;
84676 l_adr_accounting_coa_id       NUMBER;
84677 l_adr_flexfield_segment_code  VARCHAR2(30);
84678 l_adr_flex_value_set_id       NUMBER;
84679 l_adr_value_type_code         VARCHAR2(30);
84680 l_adr_value_combination_id    NUMBER;
84681 l_adr_value_segment_code      VARCHAR2(30);
84682 
84683 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
84684 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
84685 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
84686 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
84687 
84688 -- 4262811 Variables ------------------------------------------------------------------------------------------
84689 l_entered_amt_idx             NUMBER;
84690 l_accted_amt_idx              NUMBER;
84691 l_acc_rev_flag                VARCHAR2(1);
84692 l_accrual_line_num            NUMBER;
84693 l_tmp_amt                     NUMBER;
84694 l_acc_rev_natural_side_code   VARCHAR2(1);
84695 
84696 l_num_entries                 NUMBER;
84697 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
84698 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
84699 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
84700 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
84701 l_recog_line_1                NUMBER;
84702 l_recog_line_2                NUMBER;
84703 
84704 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
84705 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
84706 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
84707 
84708 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84709 
84710 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
84711 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
84712 
84713 ---------------------------------------------------------------------------------------------------------------
84714 
84715 
84716 --
84717 -- bulk performance
84718 --
84719 l_balance_type_code           VARCHAR2(1);
84720 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
84721 l_log_module                  VARCHAR2(240);
84722 
84723 --
84724 -- Upgrade strategy
84725 --
84726 l_actual_upg_option           VARCHAR2(1);
84727 l_enc_upg_option           VARCHAR2(1);
84728 
84729 --
84730 BEGIN
84731 --
84732 IF g_log_enabled THEN
84733       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_173';
84734 END IF;
84735 --
84736 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84737 
84738       trace
84739          (p_msg      => 'BEGIN of AcctLineType_173'
84740          ,p_level    => C_LEVEL_PROCEDURE
84741          ,p_module   => l_log_module);
84742 
84743 END IF;
84744 --
84745 l_component_type             := 'AMB_JLT';
84746 l_component_code             := 'INTERORG_PAYABLES';
84747 l_component_type_code        := 'S';
84748 l_component_appl_id          :=  707;
84749 l_amb_context_code           := 'DEFAULT';
84750 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
84751 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
84752 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
84753 l_line_definition_owner_code := 'S';
84754 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
84755 --
84756 l_balance_type_code          := 'A';
84757 l_segment                     := NULL;
84758 l_ccid                        := NULL;
84759 l_adr_transaction_coa_id      := NULL;
84760 l_adr_accounting_coa_id       := NULL;
84761 l_adr_flexfield_segment_code  := NULL;
84762 l_adr_flex_value_set_id       := NULL;
84763 l_adr_value_type_code         := NULL;
84764 l_adr_value_combination_id    := NULL;
84765 l_adr_value_segment_code      := NULL;
84766 
84767 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
84768 l_bflow_class_code           := '';    -- 4219869 Business Flow
84769 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
84770 l_budgetary_control_flag     := 'N';
84771 
84772 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
84773 l_bflow_applied_to_amt       := NULL; -- 5132302
84774 l_entered_amt_idx            := NULL;          -- 4262811
84775 l_accted_amt_idx             := NULL;          -- 4262811
84776 l_acc_rev_flag               := NULL;          -- 4262811
84777 l_accrual_line_num           := NULL;          -- 4262811
84778 l_tmp_amt                    := NULL;          -- 4262811
84779 --
84780  
84781 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84782     l_balance_type_code <> 'B' THEN
84783 IF NVL(p_source_97,9E125) =  9
84784  THEN 
84785 
84786    --
84787    XLA_AE_LINES_PKG.SetNewLine;
84788 
84789    p_balance_type_code          := l_balance_type_code;
84790    -- set the flag so later we will know whether the gain loss line needs to be created
84791    
84792    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84793      p_actual_flag :='A';
84794    END IF;
84795 
84796    --
84797    -- bulk performance
84798    --
84799    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84800                                       p_header_num   => 0); -- 4262811
84801    --
84802    -- set accounting line options
84803    --
84804    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84805            p_natural_side_code          => 'D'
84806          , p_gain_or_loss_flag          => 'N'
84807          , p_gl_transfer_mode_code      => 'S'
84808          , p_acct_entry_type_code       => 'A'
84809          , p_switch_side_flag           => 'Y'
84810          , p_merge_duplicate_code       => 'N'
84811          );
84812    --
84813    l_acc_rev_natural_side_code := 'C';  -- 4262811
84814    -- 
84815    --
84816    -- set accounting line type info
84817    --
84818    xla_ae_lines_pkg.SetAcctLineType
84819       (p_component_type             => l_component_type
84820       ,p_event_type_code            => l_event_type_code
84821       ,p_line_definition_owner_code => l_line_definition_owner_code
84822       ,p_line_definition_code       => l_line_definition_code
84823       ,p_accounting_line_code       => l_component_code
84824       ,p_accounting_line_type_code  => l_component_type_code
84825       ,p_accounting_line_appl_id    => l_component_appl_id
84826       ,p_amb_context_code           => l_amb_context_code
84827       ,p_entity_code                => l_entity_code
84828       ,p_event_class_code           => l_event_class_code);
84829    --
84830    -- set accounting class
84831    --
84832    xla_ae_lines_pkg.SetAcctClass(
84833            p_accounting_class_code  => 'INTERORG_PAYABLES'
84834          , p_ae_header_id           => l_ae_header_id
84835          );
84836 
84837    --
84838    -- set rounding class
84839    --
84840    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84841                       'INTERORG_PAYABLES';
84842 
84843    --
84844    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84845    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84846    --
84847    -- bulk performance
84848    --
84849    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84850 
84851    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84852       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84853 
84854    -- 4955764
84855    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84856       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84857 
84858    -- 4458381 Public Sector Enh
84859    
84860    --
84861    -- set accounting attributes for the line type
84862    --
84863    l_entered_amt_idx := 17;
84864    l_accted_amt_idx  := 22;
84865    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
84866    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
84867    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
84868    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
84869    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
84870    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
84871    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
84872    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
84873    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
84874    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
84875    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
84876    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
84877    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
84878    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
84879    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
84880    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
84881    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
84882    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
84883    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
84884    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
84885    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
84886    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
84887    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
84888    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
84889    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
84890    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
84891    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
84892    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
84893    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
84894    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
84895    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
84896    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
84897    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
84898    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
84899    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
84900    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
84901    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
84902    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
84903    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
84904    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
84905    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
84906    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
84907    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
84908    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
84909    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
84910    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
84911    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
84912    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
84913    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
84914 
84915    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84916    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84917 
84918    ---------------------------------------------------------------------------------------------------------------
84919    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84920    ---------------------------------------------------------------------------------------------------------------
84921    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84922 
84923    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84924    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84925 
84926    IF xla_accounting_cache_pkg.GetValueChar
84927          (p_source_code         => 'LEDGER_CATEGORY_CODE'
84928          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84929    AND l_bflow_method_code = 'PRIOR_ENTRY'
84930 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84931    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84932          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84933        )
84934    THEN
84935          xla_ae_lines_pkg.BflowUpgEntry
84936            (p_business_method_code    => l_bflow_method_code
84937            ,p_business_class_code     => l_bflow_class_code
84938            ,p_balance_type            => l_balance_type_code);
84939    ELSE
84940       NULL;
84941 -- No business flow processing for business flow method of NONE.
84942    END IF;
84943 
84944    --
84945    -- call analytical criteria
84946    --
84947    
84948    --
84949    -- call description
84950    --
84951    
84952 xla_ae_lines_pkg.SetLineDescription(
84953    p_ae_header_id => l_ae_header_id
84954   ,p_description  => Description_1 (
84955      p_application_id         => p_application_id
84956    , p_ae_header_id           => l_ae_header_id 
84957 , p_source_1 => p_source_1
84958 , p_source_2 => p_source_2
84959 , p_source_3 => p_source_3
84960 , p_source_4 => p_source_4
84961 , p_source_5 => p_source_5
84962    )
84963 );
84964 
84965 
84966    --
84967    -- call ADRs
84968    -- Bug 4922099
84969    --
84970    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84971         (NVL(l_actual_upg_option, 'N') = 'O') OR
84972         (NVL(l_enc_upg_option, 'N') = 'O')
84973       )
84974    THEN
84975    NULL;
84976    --
84977    --
84978    
84979   l_ccid := AcctDerRule_6(
84980            p_application_id           => p_application_id
84981          , p_ae_header_id             => l_ae_header_id 
84982 , p_source_11 => p_source_11
84983          , x_transaction_coa_id       => l_adr_transaction_coa_id
84984          , x_accounting_coa_id        => l_adr_accounting_coa_id
84985          , x_value_type_code          => l_adr_value_type_code
84986          , p_side                     => 'NA'
84987    );
84988 
84989    xla_ae_lines_pkg.set_ccid(
84990     p_code_combination_id          => l_ccid
84991   , p_value_type_code              => l_adr_value_type_code
84992   , p_transaction_coa_id           => l_adr_transaction_coa_id
84993   , p_accounting_coa_id            => l_adr_accounting_coa_id
84994   , p_adr_code                     => 'CST_DEFAULT'
84995   , p_adr_type_code                => 'S'
84996   , p_component_type               => l_component_type
84997   , p_component_code               => l_component_code
84998   , p_component_type_code          => l_component_type_code
84999   , p_component_appl_id            => l_component_appl_id
85000   , p_amb_context_code             => l_amb_context_code
85001   , p_side                         => 'NA'
85002   );
85003 
85004 
85005    --
85006    --
85007    END IF;
85008    --
85009    -- Bug 4922099
85010    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85011           (NVL(l_enc_upg_option, 'N') = 'O')
85012         ) AND
85013         (l_bflow_method_code = 'PRIOR_ENTRY')
85014       )
85015    THEN
85016       IF
85017       --
85018       1 = 2
85019       --
85020       THEN
85021       xla_accounting_err_pkg.build_message
85022                                     (p_appli_s_name            => 'XLA'
85023                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85024                                     ,p_token_1                 => 'LINE_NUMBER'
85025                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85026                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85027                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85028                                                                              l_component_type
85029                                                                             ,l_component_code
85030                                                                             ,l_component_type_code
85031                                                                             ,l_component_appl_id
85032                                                                             ,l_amb_context_code
85033                                                                             ,l_entity_code
85034                                                                             ,l_event_class_code
85035                                                                            )
85036                                     ,p_token_3                 => 'OWNER'
85037                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85038                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85039                                                                           ,p_lookup_code    => l_component_type_code
85040                                                                          )
85041                                     ,p_token_4                 => 'PRODUCT_NAME'
85042                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85043                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85044                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85045                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85046                                     ,p_ae_header_id            =>  NULL
85047                                        );
85048 
85049         IF (C_LEVEL_ERROR>= g_log_level) THEN
85050                  trace
85051                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85052                       ,p_level    => C_LEVEL_ERROR
85053                       ,p_module   => l_log_module);
85054         END IF;
85055       END IF;
85056    END IF;
85057    --
85058    --
85059    ------------------------------------------------------------------------------------------------
85060    -- 4219869 Business Flow
85061    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85062    -- Prior Entry.  Currently, the following code is always generated.
85063    ------------------------------------------------------------------------------------------------
85064    XLA_AE_LINES_PKG.ValidateCurrentLine;
85065 
85066    ------------------------------------------------------------------------------------
85067    -- 4219869 Business Flow
85068    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85069    ------------------------------------------------------------------------------------
85070    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85071 
85072    ----------------------------------------------------------------------------------
85073    -- 4219869 Business Flow
85074    -- Update journal entry status -- Need to generate this within IF <condition>
85075    ----------------------------------------------------------------------------------
85076    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85077          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85078          ,p_balance_type_code => l_balance_type_code
85079          );
85080 
85081    -------------------------------------------------------------------------------------------
85082    -- 4262811 - Generate the Accrual Reversal lines
85083    -------------------------------------------------------------------------------------------
85084    BEGIN
85085       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85086                               (g_array_event(p_event_id).array_value_num('header_index'));
85087       IF l_acc_rev_flag IS NULL THEN
85088          l_acc_rev_flag := 'N';
85089       END IF;
85090    EXCEPTION
85091       WHEN OTHERS THEN
85092          l_acc_rev_flag := 'N';
85093    END;
85094    --
85095    IF (l_acc_rev_flag = 'Y') THEN
85096 
85097        -- 4645092  ------------------------------------------------------------------------------
85098        -- To allow MPA report to determine if it should generate report process
85099        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85100        ------------------------------------------------------------------------------------------
85101 
85102        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85103        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85104    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85105    -- call ADRs
85106    -- Bug 4922099
85107    --
85108    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85109         (NVL(l_actual_upg_option, 'N') = 'O') OR
85110         (NVL(l_enc_upg_option, 'N') = 'O')
85111       )
85112    THEN
85113    NULL;
85114    --
85115    --
85116    
85117   l_ccid := AcctDerRule_6(
85118            p_application_id           => p_application_id
85119          , p_ae_header_id             => l_ae_header_id 
85120 , p_source_11 => p_source_11
85121          , x_transaction_coa_id       => l_adr_transaction_coa_id
85122          , x_accounting_coa_id        => l_adr_accounting_coa_id
85123          , x_value_type_code          => l_adr_value_type_code
85124          , p_side                     => 'NA'
85125    );
85126 
85127    xla_ae_lines_pkg.set_ccid(
85128     p_code_combination_id          => l_ccid
85129   , p_value_type_code              => l_adr_value_type_code
85130   , p_transaction_coa_id           => l_adr_transaction_coa_id
85131   , p_accounting_coa_id            => l_adr_accounting_coa_id
85132   , p_adr_code                     => 'CST_DEFAULT'
85133   , p_adr_type_code                => 'S'
85134   , p_component_type               => l_component_type
85135   , p_component_code               => l_component_code
85136   , p_component_type_code          => l_component_type_code
85137   , p_component_appl_id            => l_component_appl_id
85138   , p_amb_context_code             => l_amb_context_code
85139   , p_side                         => 'NA'
85140   );
85141 
85142 
85143    --
85144    --
85145    END IF;
85146 
85147        --
85148        -- Update the line information that should be overwritten
85149        --
85150        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85151                                          p_header_num   => 1);
85152        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
85153 
85154        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85155 
85156        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
85157           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85158        END IF;
85159 
85160       --
85161       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85162       --
85163       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85164           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
85165       ELSE
85166           ---------------------------------------------------------------------------------------------------
85167           -- 4262811a Switch Sign
85168           ---------------------------------------------------------------------------------------------------
85169           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
85170           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85171                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85172           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85173                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85174           -- 5132302
85175           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85176                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85177 
85178       END IF;
85179 
85180       -- 4955764
85181       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85182       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85183 
85184 
85185       XLA_AE_LINES_PKG.ValidateCurrentLine;
85186       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85187 
85188       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85189                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85190                ,p_balance_type_code => l_balance_type_code);
85191 
85192    END IF;
85193 
85194    -----------------------------------------------------------------------------------------
85195    -- 4262811 Multiperiod Accounting
85196    -----------------------------------------------------------------------------------------
85197      -- No MPA option is assigned.
85198 
85199 
85200 END IF;
85201 END IF;
85202 --
85203 
85204 --
85205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85206    trace
85207       (p_msg      => 'END of AcctLineType_173'
85208       ,p_level    => C_LEVEL_PROCEDURE
85209       ,p_module   => l_log_module);
85210 END IF;
85211 --
85212 EXCEPTION
85213   WHEN xla_exceptions_pkg.application_exception THEN
85214       RAISE;
85215   WHEN OTHERS THEN
85216        xla_exceptions_pkg.raise_message
85217            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_173');
85218 END AcctLineType_173;
85219 --
85220 
85221 ---------------------------------------
85222 --
85223 -- PRIVATE FUNCTION
85224 --         AcctLineType_174
85225 --
85226 ---------------------------------------
85227 PROCEDURE AcctLineType_174 (
85228   p_application_id        IN NUMBER
85229  ,p_event_id              IN NUMBER
85230  ,p_calculate_acctd_flag  IN VARCHAR2
85231  ,p_calculate_g_l_flag    IN VARCHAR2
85232  ,p_actual_flag           IN OUT VARCHAR2
85233  ,p_balance_type_code     OUT VARCHAR2
85234  ,p_gain_or_loss_ref      OUT VARCHAR2
85235  
85236 --TRANSACTION_ID
85237  , p_source_1            IN NUMBER
85238 --Item Concatenated Segments
85239  , p_source_2            IN VARCHAR2
85240 --Transaction Quantity
85241  , p_source_3            IN NUMBER
85242 --Transaction Unit of Measure Code
85243  , p_source_4            IN VARCHAR2
85244 --Inventory Transaction Type Description
85245  , p_source_5            IN VARCHAR2
85246 --Interorg Payables Account
85247  , p_source_35            IN NUMBER
85248 --DISTRIBUTION_IDENTIFIER
85249  , p_source_84            IN NUMBER
85250 --Distribution Type
85251  , p_source_85            IN VARCHAR2
85252  , p_source_85_meaning    IN VARCHAR2
85253 --Entered Currency Code
85254  , p_source_88            IN VARCHAR2
85255 --Entered Amount
85256  , p_source_91            IN NUMBER
85257 --Currency Conversion Date
85258  , p_source_92            IN DATE
85259 --Currency Conversion Rate
85260  , p_source_93            IN NUMBER
85261 --Currency Conversion Type
85262  , p_source_94            IN VARCHAR2
85263 --Accounted Amount
85264  , p_source_95            IN NUMBER
85265 --Accounting Line Type
85266  , p_source_97            IN NUMBER
85267 )
85268 IS
85269 
85270 l_component_type              VARCHAR2(80);
85271 l_component_code              VARCHAR2(30);
85272 l_component_type_code         VARCHAR2(1);
85273 l_component_appl_id           INTEGER;
85274 l_amb_context_code            VARCHAR2(30);
85275 l_entity_code                 VARCHAR2(30);
85276 l_event_class_code            VARCHAR2(30);
85277 l_ae_header_id                NUMBER;
85278 l_event_type_code             VARCHAR2(30);
85279 l_line_definition_code        VARCHAR2(30);
85280 l_line_definition_owner_code  VARCHAR2(1);
85281 --
85282 -- adr variables
85283 l_segment                     VARCHAR2(30);
85284 l_ccid                        NUMBER;
85285 l_adr_transaction_coa_id      NUMBER;
85286 l_adr_accounting_coa_id       NUMBER;
85287 l_adr_flexfield_segment_code  VARCHAR2(30);
85288 l_adr_flex_value_set_id       NUMBER;
85289 l_adr_value_type_code         VARCHAR2(30);
85290 l_adr_value_combination_id    NUMBER;
85291 l_adr_value_segment_code      VARCHAR2(30);
85292 
85293 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
85294 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
85295 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
85296 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
85297 
85298 -- 4262811 Variables ------------------------------------------------------------------------------------------
85299 l_entered_amt_idx             NUMBER;
85300 l_accted_amt_idx              NUMBER;
85301 l_acc_rev_flag                VARCHAR2(1);
85302 l_accrual_line_num            NUMBER;
85303 l_tmp_amt                     NUMBER;
85304 l_acc_rev_natural_side_code   VARCHAR2(1);
85305 
85306 l_num_entries                 NUMBER;
85307 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
85308 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
85309 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
85310 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
85311 l_recog_line_1                NUMBER;
85312 l_recog_line_2                NUMBER;
85313 
85314 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
85315 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
85316 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
85317 
85318 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85319 
85320 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
85321 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
85322 
85323 ---------------------------------------------------------------------------------------------------------------
85324 
85325 
85326 --
85327 -- bulk performance
85328 --
85329 l_balance_type_code           VARCHAR2(1);
85330 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
85331 l_log_module                  VARCHAR2(240);
85332 
85333 --
85334 -- Upgrade strategy
85335 --
85336 l_actual_upg_option           VARCHAR2(1);
85337 l_enc_upg_option           VARCHAR2(1);
85338 
85339 --
85340 BEGIN
85341 --
85342 IF g_log_enabled THEN
85343       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_174';
85344 END IF;
85345 --
85346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85347 
85348       trace
85349          (p_msg      => 'BEGIN of AcctLineType_174'
85350          ,p_level    => C_LEVEL_PROCEDURE
85351          ,p_module   => l_log_module);
85352 
85353 END IF;
85354 --
85355 l_component_type             := 'AMB_JLT';
85356 l_component_code             := 'INTERORG_PAYABLES';
85357 l_component_type_code        := 'S';
85358 l_component_appl_id          :=  707;
85359 l_amb_context_code           := 'DEFAULT';
85360 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
85361 l_event_class_code           := 'USER_DEFINE';
85362 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
85363 l_line_definition_owner_code := 'S';
85364 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
85365 --
85366 l_balance_type_code          := 'A';
85367 l_segment                     := NULL;
85368 l_ccid                        := NULL;
85369 l_adr_transaction_coa_id      := NULL;
85370 l_adr_accounting_coa_id       := NULL;
85371 l_adr_flexfield_segment_code  := NULL;
85372 l_adr_flex_value_set_id       := NULL;
85373 l_adr_value_type_code         := NULL;
85374 l_adr_value_combination_id    := NULL;
85375 l_adr_value_segment_code      := NULL;
85376 
85377 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
85378 l_bflow_class_code           := '';    -- 4219869 Business Flow
85379 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
85380 l_budgetary_control_flag     := 'N';
85381 
85382 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
85383 l_bflow_applied_to_amt       := NULL; -- 5132302
85384 l_entered_amt_idx            := NULL;          -- 4262811
85385 l_accted_amt_idx             := NULL;          -- 4262811
85386 l_acc_rev_flag               := NULL;          -- 4262811
85387 l_accrual_line_num           := NULL;          -- 4262811
85388 l_tmp_amt                    := NULL;          -- 4262811
85389 --
85390  
85391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85392     l_balance_type_code <> 'B' THEN
85393 IF NVL(p_source_97,9E125) =  9
85394  THEN 
85395 
85396    --
85397    XLA_AE_LINES_PKG.SetNewLine;
85398 
85399    p_balance_type_code          := l_balance_type_code;
85400    -- set the flag so later we will know whether the gain loss line needs to be created
85401    
85402    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85403      p_actual_flag :='A';
85404    END IF;
85405 
85406    --
85407    -- bulk performance
85408    --
85409    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85410                                       p_header_num   => 0); -- 4262811
85411    --
85412    -- set accounting line options
85413    --
85414    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85415            p_natural_side_code          => 'D'
85416          , p_gain_or_loss_flag          => 'N'
85417          , p_gl_transfer_mode_code      => 'S'
85418          , p_acct_entry_type_code       => 'A'
85419          , p_switch_side_flag           => 'Y'
85420          , p_merge_duplicate_code       => 'N'
85421          );
85422    --
85423    l_acc_rev_natural_side_code := 'C';  -- 4262811
85424    -- 
85425    --
85426    -- set accounting line type info
85427    --
85428    xla_ae_lines_pkg.SetAcctLineType
85429       (p_component_type             => l_component_type
85430       ,p_event_type_code            => l_event_type_code
85431       ,p_line_definition_owner_code => l_line_definition_owner_code
85432       ,p_line_definition_code       => l_line_definition_code
85433       ,p_accounting_line_code       => l_component_code
85434       ,p_accounting_line_type_code  => l_component_type_code
85435       ,p_accounting_line_appl_id    => l_component_appl_id
85436       ,p_amb_context_code           => l_amb_context_code
85437       ,p_entity_code                => l_entity_code
85438       ,p_event_class_code           => l_event_class_code);
85439    --
85440    -- set accounting class
85441    --
85442    xla_ae_lines_pkg.SetAcctClass(
85443            p_accounting_class_code  => 'INTERORG_PAYABLES'
85444          , p_ae_header_id           => l_ae_header_id
85445          );
85446 
85447    --
85448    -- set rounding class
85449    --
85450    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85451                       'INTERORG_PAYABLES';
85452 
85453    --
85454    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85455    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85456    --
85457    -- bulk performance
85458    --
85459    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85460 
85461    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85462       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85463 
85464    -- 4955764
85465    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85466       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85467 
85468    -- 4458381 Public Sector Enh
85469    
85470    --
85471    -- set accounting attributes for the line type
85472    --
85473    l_entered_amt_idx := 3;
85474    l_accted_amt_idx  := 8;
85475    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
85476    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85477    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
85478    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85479    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
85480    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85481    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
85482    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85483    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
85484    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85485    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
85486    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85487    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
85488    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85489    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
85490    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85491    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
85492 
85493    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85494    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85495 
85496    ---------------------------------------------------------------------------------------------------------------
85497    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85498    ---------------------------------------------------------------------------------------------------------------
85499    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85500 
85501    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85502    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85503 
85504    IF xla_accounting_cache_pkg.GetValueChar
85505          (p_source_code         => 'LEDGER_CATEGORY_CODE'
85506          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85507    AND l_bflow_method_code = 'PRIOR_ENTRY'
85508 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85509    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85510          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85511        )
85512    THEN
85513          xla_ae_lines_pkg.BflowUpgEntry
85514            (p_business_method_code    => l_bflow_method_code
85515            ,p_business_class_code     => l_bflow_class_code
85516            ,p_balance_type            => l_balance_type_code);
85517    ELSE
85518       NULL;
85519 -- No business flow processing for business flow method of NONE.
85520    END IF;
85521 
85522    --
85523    -- call analytical criteria
85524    --
85525    
85526    --
85527    -- call description
85528    --
85529    
85530 xla_ae_lines_pkg.SetLineDescription(
85531    p_ae_header_id => l_ae_header_id
85532   ,p_description  => Description_1 (
85533      p_application_id         => p_application_id
85534    , p_ae_header_id           => l_ae_header_id 
85535 , p_source_1 => p_source_1
85536 , p_source_2 => p_source_2
85537 , p_source_3 => p_source_3
85538 , p_source_4 => p_source_4
85539 , p_source_5 => p_source_5
85540    )
85541 );
85542 
85543 
85544    --
85545    -- call ADRs
85546    -- Bug 4922099
85547    --
85548    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85549         (NVL(l_actual_upg_option, 'N') = 'O') OR
85550         (NVL(l_enc_upg_option, 'N') = 'O')
85551       )
85552    THEN
85553    NULL;
85554    --
85555    --
85556    
85557   l_ccid := AcctDerRule_20(
85558            p_application_id           => p_application_id
85559          , p_ae_header_id             => l_ae_header_id 
85560 , p_source_35 => p_source_35
85561          , x_transaction_coa_id       => l_adr_transaction_coa_id
85562          , x_accounting_coa_id        => l_adr_accounting_coa_id
85563          , x_value_type_code          => l_adr_value_type_code
85564          , p_side                     => 'NA'
85565    );
85566 
85567    xla_ae_lines_pkg.set_ccid(
85568     p_code_combination_id          => l_ccid
85569   , p_value_type_code              => l_adr_value_type_code
85570   , p_transaction_coa_id           => l_adr_transaction_coa_id
85571   , p_accounting_coa_id            => l_adr_accounting_coa_id
85572   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
85573   , p_adr_type_code                => 'S'
85574   , p_component_type               => l_component_type
85575   , p_component_code               => l_component_code
85576   , p_component_type_code          => l_component_type_code
85577   , p_component_appl_id            => l_component_appl_id
85578   , p_amb_context_code             => l_amb_context_code
85579   , p_side                         => 'NA'
85580   );
85581 
85582 
85583    --
85584    --
85585    END IF;
85586    --
85587    -- Bug 4922099
85588    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85589           (NVL(l_enc_upg_option, 'N') = 'O')
85590         ) AND
85591         (l_bflow_method_code = 'PRIOR_ENTRY')
85592       )
85593    THEN
85594       IF
85595       --
85596       1 = 2
85597       --
85598       THEN
85599       xla_accounting_err_pkg.build_message
85600                                     (p_appli_s_name            => 'XLA'
85601                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85602                                     ,p_token_1                 => 'LINE_NUMBER'
85603                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
85604                                     ,p_token_2                 => 'LINE_TYPE_NAME'
85605                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
85606                                                                              l_component_type
85607                                                                             ,l_component_code
85608                                                                             ,l_component_type_code
85609                                                                             ,l_component_appl_id
85610                                                                             ,l_amb_context_code
85611                                                                             ,l_entity_code
85612                                                                             ,l_event_class_code
85613                                                                            )
85614                                     ,p_token_3                 => 'OWNER'
85615                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
85616                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
85617                                                                           ,p_lookup_code    => l_component_type_code
85618                                                                          )
85619                                     ,p_token_4                 => 'PRODUCT_NAME'
85620                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85621                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85622                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85623                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85624                                     ,p_ae_header_id            =>  NULL
85625                                        );
85626 
85627         IF (C_LEVEL_ERROR>= g_log_level) THEN
85628                  trace
85629                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85630                       ,p_level    => C_LEVEL_ERROR
85631                       ,p_module   => l_log_module);
85632         END IF;
85633       END IF;
85634    END IF;
85635    --
85636    --
85637    ------------------------------------------------------------------------------------------------
85638    -- 4219869 Business Flow
85639    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85640    -- Prior Entry.  Currently, the following code is always generated.
85641    ------------------------------------------------------------------------------------------------
85642    XLA_AE_LINES_PKG.ValidateCurrentLine;
85643 
85644    ------------------------------------------------------------------------------------
85645    -- 4219869 Business Flow
85646    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85647    ------------------------------------------------------------------------------------
85648    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85649 
85650    ----------------------------------------------------------------------------------
85651    -- 4219869 Business Flow
85652    -- Update journal entry status -- Need to generate this within IF <condition>
85653    ----------------------------------------------------------------------------------
85654    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85655          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85656          ,p_balance_type_code => l_balance_type_code
85657          );
85658 
85659    -------------------------------------------------------------------------------------------
85660    -- 4262811 - Generate the Accrual Reversal lines
85661    -------------------------------------------------------------------------------------------
85662    BEGIN
85663       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85664                               (g_array_event(p_event_id).array_value_num('header_index'));
85665       IF l_acc_rev_flag IS NULL THEN
85666          l_acc_rev_flag := 'N';
85667       END IF;
85668    EXCEPTION
85669       WHEN OTHERS THEN
85670          l_acc_rev_flag := 'N';
85671    END;
85672    --
85673    IF (l_acc_rev_flag = 'Y') THEN
85674 
85675        -- 4645092  ------------------------------------------------------------------------------
85676        -- To allow MPA report to determine if it should generate report process
85677        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85678        ------------------------------------------------------------------------------------------
85679 
85680        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85681        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85682    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
85683    -- call ADRs
85684    -- Bug 4922099
85685    --
85686    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85687         (NVL(l_actual_upg_option, 'N') = 'O') OR
85688         (NVL(l_enc_upg_option, 'N') = 'O')
85689       )
85690    THEN
85691    NULL;
85692    --
85693    --
85694    
85695   l_ccid := AcctDerRule_20(
85696            p_application_id           => p_application_id
85697          , p_ae_header_id             => l_ae_header_id 
85698 , p_source_35 => p_source_35
85699          , x_transaction_coa_id       => l_adr_transaction_coa_id
85700          , x_accounting_coa_id        => l_adr_accounting_coa_id
85701          , x_value_type_code          => l_adr_value_type_code
85702          , p_side                     => 'NA'
85703    );
85704 
85705    xla_ae_lines_pkg.set_ccid(
85706     p_code_combination_id          => l_ccid
85707   , p_value_type_code              => l_adr_value_type_code
85708   , p_transaction_coa_id           => l_adr_transaction_coa_id
85709   , p_accounting_coa_id            => l_adr_accounting_coa_id
85710   , p_adr_code                     => 'PI_INTERORG_PAYABLES'
85711   , p_adr_type_code                => 'S'
85712   , p_component_type               => l_component_type
85713   , p_component_code               => l_component_code
85714   , p_component_type_code          => l_component_type_code
85715   , p_component_appl_id            => l_component_appl_id
85716   , p_amb_context_code             => l_amb_context_code
85717   , p_side                         => 'NA'
85718   );
85719 
85720 
85721    --
85722    --
85723    END IF;
85724 
85725        --
85726        -- Update the line information that should be overwritten
85727        --
85728        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85729                                          p_header_num   => 1);
85730        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
85731 
85732        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85733 
85734        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
85735           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85736        END IF;
85737 
85738       --
85739       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85740       --
85741       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85742           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
85743       ELSE
85744           ---------------------------------------------------------------------------------------------------
85745           -- 4262811a Switch Sign
85746           ---------------------------------------------------------------------------------------------------
85747           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
85748           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85749                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85750           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85751                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85752           -- 5132302
85753           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85754                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85755 
85756       END IF;
85757 
85758       -- 4955764
85759       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85760       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85761 
85762 
85763       XLA_AE_LINES_PKG.ValidateCurrentLine;
85764       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85765 
85766       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85767                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85768                ,p_balance_type_code => l_balance_type_code);
85769 
85770    END IF;
85771 
85772    -----------------------------------------------------------------------------------------
85773    -- 4262811 Multiperiod Accounting
85774    -----------------------------------------------------------------------------------------
85775      -- No MPA option is assigned.
85776 
85777 
85778 END IF;
85779 END IF;
85780 --
85781 
85782 --
85783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85784    trace
85785       (p_msg      => 'END of AcctLineType_174'
85786       ,p_level    => C_LEVEL_PROCEDURE
85787       ,p_module   => l_log_module);
85788 END IF;
85789 --
85790 EXCEPTION
85791   WHEN xla_exceptions_pkg.application_exception THEN
85792       RAISE;
85793   WHEN OTHERS THEN
85794        xla_exceptions_pkg.raise_message
85795            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_174');
85796 END AcctLineType_174;
85797 --
85798 
85799 ---------------------------------------
85800 --
85801 -- PRIVATE FUNCTION
85802 --         AcctLineType_175
85803 --
85804 ---------------------------------------
85805 PROCEDURE AcctLineType_175 (
85806   p_application_id        IN NUMBER
85807  ,p_event_id              IN NUMBER
85808  ,p_calculate_acctd_flag  IN VARCHAR2
85809  ,p_calculate_g_l_flag    IN VARCHAR2
85810  ,p_actual_flag           IN OUT VARCHAR2
85811  ,p_balance_type_code     OUT VARCHAR2
85812  ,p_gain_or_loss_ref      OUT VARCHAR2
85813  
85814 --TRANSACTION_ID
85815  , p_source_1            IN NUMBER
85816 --Item Concatenated Segments
85817  , p_source_2            IN VARCHAR2
85818 --Transaction Quantity
85819  , p_source_3            IN NUMBER
85820 --Transaction Unit of Measure Code
85821  , p_source_4            IN VARCHAR2
85822 --Inventory Transaction Type Description
85823  , p_source_5            IN VARCHAR2
85824 --Cost Management Default Account
85825  , p_source_11            IN NUMBER
85826 --DISTRIBUTION_IDENTIFIER
85827  , p_source_84            IN NUMBER
85828 --Distribution Type
85829  , p_source_85            IN VARCHAR2
85830  , p_source_85_meaning    IN VARCHAR2
85831 --Entered Currency Code
85832  , p_source_88            IN VARCHAR2
85833 --Entered Amount
85834  , p_source_91            IN NUMBER
85835 --Currency Conversion Date
85836  , p_source_92            IN DATE
85837 --Currency Conversion Rate
85838  , p_source_93            IN NUMBER
85839 --Currency Conversion Type
85840  , p_source_94            IN VARCHAR2
85841 --Accounted Amount
85842  , p_source_95            IN NUMBER
85843 --Accounting Line Type
85844  , p_source_97            IN NUMBER
85845 )
85846 IS
85847 
85848 l_component_type              VARCHAR2(80);
85849 l_component_code              VARCHAR2(30);
85850 l_component_type_code         VARCHAR2(1);
85851 l_component_appl_id           INTEGER;
85852 l_amb_context_code            VARCHAR2(30);
85853 l_entity_code                 VARCHAR2(30);
85854 l_event_class_code            VARCHAR2(30);
85855 l_ae_header_id                NUMBER;
85856 l_event_type_code             VARCHAR2(30);
85857 l_line_definition_code        VARCHAR2(30);
85858 l_line_definition_owner_code  VARCHAR2(1);
85859 --
85860 -- adr variables
85861 l_segment                     VARCHAR2(30);
85862 l_ccid                        NUMBER;
85863 l_adr_transaction_coa_id      NUMBER;
85864 l_adr_accounting_coa_id       NUMBER;
85865 l_adr_flexfield_segment_code  VARCHAR2(30);
85866 l_adr_flex_value_set_id       NUMBER;
85867 l_adr_value_type_code         VARCHAR2(30);
85868 l_adr_value_combination_id    NUMBER;
85869 l_adr_value_segment_code      VARCHAR2(30);
85870 
85871 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
85872 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
85873 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
85874 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
85875 
85876 -- 4262811 Variables ------------------------------------------------------------------------------------------
85877 l_entered_amt_idx             NUMBER;
85878 l_accted_amt_idx              NUMBER;
85879 l_acc_rev_flag                VARCHAR2(1);
85880 l_accrual_line_num            NUMBER;
85881 l_tmp_amt                     NUMBER;
85882 l_acc_rev_natural_side_code   VARCHAR2(1);
85883 
85884 l_num_entries                 NUMBER;
85885 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
85886 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
85887 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
85888 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
85889 l_recog_line_1                NUMBER;
85890 l_recog_line_2                NUMBER;
85891 
85892 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
85893 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
85894 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
85895 
85896 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85897 
85898 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
85899 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
85900 
85901 ---------------------------------------------------------------------------------------------------------------
85902 
85903 
85904 --
85905 -- bulk performance
85906 --
85907 l_balance_type_code           VARCHAR2(1);
85908 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
85909 l_log_module                  VARCHAR2(240);
85910 
85911 --
85912 -- Upgrade strategy
85913 --
85914 l_actual_upg_option           VARCHAR2(1);
85915 l_enc_upg_option           VARCHAR2(1);
85916 
85917 --
85918 BEGIN
85919 --
85920 IF g_log_enabled THEN
85921       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_175';
85922 END IF;
85923 --
85924 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85925 
85926       trace
85927          (p_msg      => 'BEGIN of AcctLineType_175'
85928          ,p_level    => C_LEVEL_PROCEDURE
85929          ,p_module   => l_log_module);
85930 
85931 END IF;
85932 --
85933 l_component_type             := 'AMB_JLT';
85934 l_component_code             := 'INTERORG_PROFIT_OPM';
85935 l_component_type_code        := 'S';
85936 l_component_appl_id          :=  707;
85937 l_amb_context_code           := 'DEFAULT';
85938 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
85939 l_event_class_code           := 'USER_DEFINE';
85940 l_event_type_code            := 'UDIR_INTERORG_SHIP';
85941 l_line_definition_owner_code := 'S';
85942 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
85943 --
85944 l_balance_type_code          := 'A';
85945 l_segment                     := NULL;
85946 l_ccid                        := NULL;
85947 l_adr_transaction_coa_id      := NULL;
85948 l_adr_accounting_coa_id       := NULL;
85949 l_adr_flexfield_segment_code  := NULL;
85950 l_adr_flex_value_set_id       := NULL;
85951 l_adr_value_type_code         := NULL;
85952 l_adr_value_combination_id    := NULL;
85953 l_adr_value_segment_code      := NULL;
85954 
85955 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
85956 l_bflow_class_code           := '';    -- 4219869 Business Flow
85957 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
85958 l_budgetary_control_flag     := 'N';
85959 
85960 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
85961 l_bflow_applied_to_amt       := NULL; -- 5132302
85962 l_entered_amt_idx            := NULL;          -- 4262811
85963 l_accted_amt_idx             := NULL;          -- 4262811
85964 l_acc_rev_flag               := NULL;          -- 4262811
85965 l_accrual_line_num           := NULL;          -- 4262811
85966 l_tmp_amt                    := NULL;          -- 4262811
85967 --
85968  
85969 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85970     l_balance_type_code <> 'B' THEN
85971 IF NVL(p_source_97,9E125) =  34
85972  THEN 
85973 
85974    --
85975    XLA_AE_LINES_PKG.SetNewLine;
85976 
85977    p_balance_type_code          := l_balance_type_code;
85978    -- set the flag so later we will know whether the gain loss line needs to be created
85979    
85980    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85981      p_actual_flag :='A';
85982    END IF;
85983 
85984    --
85985    -- bulk performance
85986    --
85987    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85988                                       p_header_num   => 0); -- 4262811
85989    --
85990    -- set accounting line options
85991    --
85992    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85993            p_natural_side_code          => 'D'
85994          , p_gain_or_loss_flag          => 'N'
85995          , p_gl_transfer_mode_code      => 'S'
85996          , p_acct_entry_type_code       => 'A'
85997          , p_switch_side_flag           => 'Y'
85998          , p_merge_duplicate_code       => 'N'
85999          );
86000    --
86001    l_acc_rev_natural_side_code := 'C';  -- 4262811
86002    -- 
86003    --
86004    -- set accounting line type info
86005    --
86006    xla_ae_lines_pkg.SetAcctLineType
86007       (p_component_type             => l_component_type
86008       ,p_event_type_code            => l_event_type_code
86009       ,p_line_definition_owner_code => l_line_definition_owner_code
86010       ,p_line_definition_code       => l_line_definition_code
86011       ,p_accounting_line_code       => l_component_code
86012       ,p_accounting_line_type_code  => l_component_type_code
86013       ,p_accounting_line_appl_id    => l_component_appl_id
86014       ,p_amb_context_code           => l_amb_context_code
86015       ,p_entity_code                => l_entity_code
86016       ,p_event_class_code           => l_event_class_code);
86017    --
86018    -- set accounting class
86019    --
86020    xla_ae_lines_pkg.SetAcctClass(
86021            p_accounting_class_code  => 'INTERORG_PROFIT'
86022          , p_ae_header_id           => l_ae_header_id
86023          );
86024 
86025    --
86026    -- set rounding class
86027    --
86028    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86029                       'INTERORG_PROFIT';
86030 
86031    --
86032    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86033    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86034    --
86035    -- bulk performance
86036    --
86037    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86038 
86039    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86040       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86041 
86042    -- 4955764
86043    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86044       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86045 
86046    -- 4458381 Public Sector Enh
86047    
86048    --
86049    -- set accounting attributes for the line type
86050    --
86051    l_entered_amt_idx := 3;
86052    l_accted_amt_idx  := 8;
86053    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86054    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86055    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
86056    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86057    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
86058    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86059    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
86060    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86061    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
86062    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86063    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
86064    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86065    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
86066    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86067    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
86068    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86069    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
86070 
86071    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86072    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86073 
86074    ---------------------------------------------------------------------------------------------------------------
86075    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86076    ---------------------------------------------------------------------------------------------------------------
86077    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86078 
86079    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86080    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86081 
86082    IF xla_accounting_cache_pkg.GetValueChar
86083          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86084          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86085    AND l_bflow_method_code = 'PRIOR_ENTRY'
86086 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86087    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86088          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86089        )
86090    THEN
86091          xla_ae_lines_pkg.BflowUpgEntry
86092            (p_business_method_code    => l_bflow_method_code
86093            ,p_business_class_code     => l_bflow_class_code
86094            ,p_balance_type            => l_balance_type_code);
86095    ELSE
86096       NULL;
86097 -- No business flow processing for business flow method of NONE.
86098    END IF;
86099 
86100    --
86101    -- call analytical criteria
86102    --
86103    
86104    --
86105    -- call description
86106    --
86107    
86108 xla_ae_lines_pkg.SetLineDescription(
86109    p_ae_header_id => l_ae_header_id
86110   ,p_description  => Description_1 (
86111      p_application_id         => p_application_id
86112    , p_ae_header_id           => l_ae_header_id 
86113 , p_source_1 => p_source_1
86114 , p_source_2 => p_source_2
86115 , p_source_3 => p_source_3
86116 , p_source_4 => p_source_4
86117 , p_source_5 => p_source_5
86118    )
86119 );
86120 
86121 
86122    --
86123    -- call ADRs
86124    -- Bug 4922099
86125    --
86126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86127         (NVL(l_actual_upg_option, 'N') = 'O') OR
86128         (NVL(l_enc_upg_option, 'N') = 'O')
86129       )
86130    THEN
86131    NULL;
86132    --
86133    --
86134    
86135   l_ccid := AcctDerRule_6(
86136            p_application_id           => p_application_id
86137          , p_ae_header_id             => l_ae_header_id 
86138 , p_source_11 => p_source_11
86139          , x_transaction_coa_id       => l_adr_transaction_coa_id
86140          , x_accounting_coa_id        => l_adr_accounting_coa_id
86141          , x_value_type_code          => l_adr_value_type_code
86142          , p_side                     => 'NA'
86143    );
86144 
86145    xla_ae_lines_pkg.set_ccid(
86146     p_code_combination_id          => l_ccid
86147   , p_value_type_code              => l_adr_value_type_code
86148   , p_transaction_coa_id           => l_adr_transaction_coa_id
86149   , p_accounting_coa_id            => l_adr_accounting_coa_id
86150   , p_adr_code                     => 'CST_DEFAULT'
86151   , p_adr_type_code                => 'S'
86152   , p_component_type               => l_component_type
86153   , p_component_code               => l_component_code
86154   , p_component_type_code          => l_component_type_code
86155   , p_component_appl_id            => l_component_appl_id
86156   , p_amb_context_code             => l_amb_context_code
86157   , p_side                         => 'NA'
86158   );
86159 
86160 
86161    --
86162    --
86163    END IF;
86164    --
86165    -- Bug 4922099
86166    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86167           (NVL(l_enc_upg_option, 'N') = 'O')
86168         ) AND
86169         (l_bflow_method_code = 'PRIOR_ENTRY')
86170       )
86171    THEN
86172       IF
86173       --
86174       1 = 2
86175       --
86176       THEN
86177       xla_accounting_err_pkg.build_message
86178                                     (p_appli_s_name            => 'XLA'
86179                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86180                                     ,p_token_1                 => 'LINE_NUMBER'
86181                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
86182                                     ,p_token_2                 => 'LINE_TYPE_NAME'
86183                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
86184                                                                              l_component_type
86185                                                                             ,l_component_code
86186                                                                             ,l_component_type_code
86187                                                                             ,l_component_appl_id
86188                                                                             ,l_amb_context_code
86189                                                                             ,l_entity_code
86190                                                                             ,l_event_class_code
86191                                                                            )
86192                                     ,p_token_3                 => 'OWNER'
86193                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
86194                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
86195                                                                           ,p_lookup_code    => l_component_type_code
86196                                                                          )
86197                                     ,p_token_4                 => 'PRODUCT_NAME'
86198                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86199                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86200                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86201                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86202                                     ,p_ae_header_id            =>  NULL
86203                                        );
86204 
86205         IF (C_LEVEL_ERROR>= g_log_level) THEN
86206                  trace
86207                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86208                       ,p_level    => C_LEVEL_ERROR
86209                       ,p_module   => l_log_module);
86210         END IF;
86211       END IF;
86212    END IF;
86213    --
86214    --
86215    ------------------------------------------------------------------------------------------------
86216    -- 4219869 Business Flow
86217    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86218    -- Prior Entry.  Currently, the following code is always generated.
86219    ------------------------------------------------------------------------------------------------
86220    XLA_AE_LINES_PKG.ValidateCurrentLine;
86221 
86222    ------------------------------------------------------------------------------------
86223    -- 4219869 Business Flow
86224    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86225    ------------------------------------------------------------------------------------
86226    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86227 
86228    ----------------------------------------------------------------------------------
86229    -- 4219869 Business Flow
86230    -- Update journal entry status -- Need to generate this within IF <condition>
86231    ----------------------------------------------------------------------------------
86232    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86233          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86234          ,p_balance_type_code => l_balance_type_code
86235          );
86236 
86237    -------------------------------------------------------------------------------------------
86238    -- 4262811 - Generate the Accrual Reversal lines
86239    -------------------------------------------------------------------------------------------
86240    BEGIN
86241       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86242                               (g_array_event(p_event_id).array_value_num('header_index'));
86243       IF l_acc_rev_flag IS NULL THEN
86244          l_acc_rev_flag := 'N';
86245       END IF;
86246    EXCEPTION
86247       WHEN OTHERS THEN
86248          l_acc_rev_flag := 'N';
86249    END;
86250    --
86251    IF (l_acc_rev_flag = 'Y') THEN
86252 
86253        -- 4645092  ------------------------------------------------------------------------------
86254        -- To allow MPA report to determine if it should generate report process
86255        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86256        ------------------------------------------------------------------------------------------
86257 
86258        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86259        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86260    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
86261    -- call ADRs
86262    -- Bug 4922099
86263    --
86264    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86265         (NVL(l_actual_upg_option, 'N') = 'O') OR
86266         (NVL(l_enc_upg_option, 'N') = 'O')
86267       )
86268    THEN
86269    NULL;
86270    --
86271    --
86272    
86273   l_ccid := AcctDerRule_6(
86274            p_application_id           => p_application_id
86275          , p_ae_header_id             => l_ae_header_id 
86276 , p_source_11 => p_source_11
86277          , x_transaction_coa_id       => l_adr_transaction_coa_id
86278          , x_accounting_coa_id        => l_adr_accounting_coa_id
86279          , x_value_type_code          => l_adr_value_type_code
86280          , p_side                     => 'NA'
86281    );
86282 
86283    xla_ae_lines_pkg.set_ccid(
86284     p_code_combination_id          => l_ccid
86285   , p_value_type_code              => l_adr_value_type_code
86286   , p_transaction_coa_id           => l_adr_transaction_coa_id
86287   , p_accounting_coa_id            => l_adr_accounting_coa_id
86288   , p_adr_code                     => 'CST_DEFAULT'
86289   , p_adr_type_code                => 'S'
86290   , p_component_type               => l_component_type
86291   , p_component_code               => l_component_code
86292   , p_component_type_code          => l_component_type_code
86293   , p_component_appl_id            => l_component_appl_id
86294   , p_amb_context_code             => l_amb_context_code
86295   , p_side                         => 'NA'
86296   );
86297 
86298 
86299    --
86300    --
86301    END IF;
86302 
86303        --
86304        -- Update the line information that should be overwritten
86305        --
86306        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86307                                          p_header_num   => 1);
86308        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86309 
86310        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86311 
86312        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86313           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86314        END IF;
86315 
86316       --
86317       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86318       --
86319       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86320           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86321       ELSE
86322           ---------------------------------------------------------------------------------------------------
86323           -- 4262811a Switch Sign
86324           ---------------------------------------------------------------------------------------------------
86325           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86326           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86327                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86328           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86329                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86330           -- 5132302
86331           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86332                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86333 
86334       END IF;
86335 
86336       -- 4955764
86337       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86338       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86339 
86340 
86341       XLA_AE_LINES_PKG.ValidateCurrentLine;
86342       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86343 
86344       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86345                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86346                ,p_balance_type_code => l_balance_type_code);
86347 
86348    END IF;
86349 
86350    -----------------------------------------------------------------------------------------
86351    -- 4262811 Multiperiod Accounting
86352    -----------------------------------------------------------------------------------------
86353      -- No MPA option is assigned.
86354 
86355 
86356 END IF;
86357 END IF;
86358 --
86359 
86360 --
86361 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86362    trace
86363       (p_msg      => 'END of AcctLineType_175'
86364       ,p_level    => C_LEVEL_PROCEDURE
86365       ,p_module   => l_log_module);
86366 END IF;
86367 --
86368 EXCEPTION
86369   WHEN xla_exceptions_pkg.application_exception THEN
86370       RAISE;
86371   WHEN OTHERS THEN
86372        xla_exceptions_pkg.raise_message
86373            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_175');
86374 END AcctLineType_175;
86375 --
86376 
86377 ---------------------------------------
86378 --
86379 -- PRIVATE FUNCTION
86380 --         AcctLineType_176
86381 --
86382 ---------------------------------------
86383 PROCEDURE AcctLineType_176 (
86384   p_application_id        IN NUMBER
86385  ,p_event_id              IN NUMBER
86386  ,p_calculate_acctd_flag  IN VARCHAR2
86387  ,p_calculate_g_l_flag    IN VARCHAR2
86388  ,p_actual_flag           IN OUT VARCHAR2
86389  ,p_balance_type_code     OUT VARCHAR2
86390  ,p_gain_or_loss_ref      OUT VARCHAR2
86391  
86392 --TRANSACTION_ID
86393  , p_source_1            IN NUMBER
86394 --Item Concatenated Segments
86395  , p_source_2            IN VARCHAR2
86396 --Transaction Quantity
86397  , p_source_3            IN NUMBER
86398 --Transaction Unit of Measure Code
86399  , p_source_4            IN VARCHAR2
86400 --Inventory Transaction Type Description
86401  , p_source_5            IN VARCHAR2
86402 --Cost Management Default Account
86403  , p_source_11            IN NUMBER
86404 --DISTRIBUTION_IDENTIFIER
86405  , p_source_84            IN NUMBER
86406 --Distribution Type
86407  , p_source_85            IN VARCHAR2
86408  , p_source_85_meaning    IN VARCHAR2
86409 --Entered Currency Code
86410  , p_source_88            IN VARCHAR2
86411 --Entered Amount
86412  , p_source_91            IN NUMBER
86413 --Currency Conversion Date
86414  , p_source_92            IN DATE
86415 --Currency Conversion Rate
86416  , p_source_93            IN NUMBER
86417 --Currency Conversion Type
86418  , p_source_94            IN VARCHAR2
86419 --Accounted Amount
86420  , p_source_95            IN NUMBER
86421 --Accounting Line Type
86422  , p_source_97            IN NUMBER
86423 )
86424 IS
86425 
86426 l_component_type              VARCHAR2(80);
86427 l_component_code              VARCHAR2(30);
86428 l_component_type_code         VARCHAR2(1);
86429 l_component_appl_id           INTEGER;
86430 l_amb_context_code            VARCHAR2(30);
86431 l_entity_code                 VARCHAR2(30);
86432 l_event_class_code            VARCHAR2(30);
86433 l_ae_header_id                NUMBER;
86434 l_event_type_code             VARCHAR2(30);
86435 l_line_definition_code        VARCHAR2(30);
86436 l_line_definition_owner_code  VARCHAR2(1);
86437 --
86438 -- adr variables
86439 l_segment                     VARCHAR2(30);
86440 l_ccid                        NUMBER;
86441 l_adr_transaction_coa_id      NUMBER;
86442 l_adr_accounting_coa_id       NUMBER;
86443 l_adr_flexfield_segment_code  VARCHAR2(30);
86444 l_adr_flex_value_set_id       NUMBER;
86445 l_adr_value_type_code         VARCHAR2(30);
86446 l_adr_value_combination_id    NUMBER;
86447 l_adr_value_segment_code      VARCHAR2(30);
86448 
86449 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
86450 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
86451 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
86452 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
86453 
86454 -- 4262811 Variables ------------------------------------------------------------------------------------------
86455 l_entered_amt_idx             NUMBER;
86456 l_accted_amt_idx              NUMBER;
86457 l_acc_rev_flag                VARCHAR2(1);
86458 l_accrual_line_num            NUMBER;
86459 l_tmp_amt                     NUMBER;
86460 l_acc_rev_natural_side_code   VARCHAR2(1);
86461 
86462 l_num_entries                 NUMBER;
86463 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
86464 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
86465 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
86466 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
86467 l_recog_line_1                NUMBER;
86468 l_recog_line_2                NUMBER;
86469 
86470 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
86471 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
86472 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
86473 
86474 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86475 
86476 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
86477 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
86478 
86479 ---------------------------------------------------------------------------------------------------------------
86480 
86481 
86482 --
86483 -- bulk performance
86484 --
86485 l_balance_type_code           VARCHAR2(1);
86486 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
86487 l_log_module                  VARCHAR2(240);
86488 
86489 --
86490 -- Upgrade strategy
86491 --
86492 l_actual_upg_option           VARCHAR2(1);
86493 l_enc_upg_option           VARCHAR2(1);
86494 
86495 --
86496 BEGIN
86497 --
86498 IF g_log_enabled THEN
86499       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_176';
86500 END IF;
86501 --
86502 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86503 
86504       trace
86505          (p_msg      => 'BEGIN of AcctLineType_176'
86506          ,p_level    => C_LEVEL_PROCEDURE
86507          ,p_module   => l_log_module);
86508 
86509 END IF;
86510 --
86511 l_component_type             := 'AMB_JLT';
86512 l_component_code             := 'INTERORG_PROFIT_OPM';
86513 l_component_type_code        := 'S';
86514 l_component_appl_id          :=  707;
86515 l_amb_context_code           := 'DEFAULT';
86516 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
86517 l_event_class_code           := 'USER_DEFINE';
86518 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
86519 l_line_definition_owner_code := 'S';
86520 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
86521 --
86522 l_balance_type_code          := 'A';
86523 l_segment                     := NULL;
86524 l_ccid                        := NULL;
86525 l_adr_transaction_coa_id      := NULL;
86526 l_adr_accounting_coa_id       := NULL;
86527 l_adr_flexfield_segment_code  := NULL;
86528 l_adr_flex_value_set_id       := NULL;
86529 l_adr_value_type_code         := NULL;
86530 l_adr_value_combination_id    := NULL;
86531 l_adr_value_segment_code      := NULL;
86532 
86533 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
86534 l_bflow_class_code           := '';    -- 4219869 Business Flow
86535 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
86536 l_budgetary_control_flag     := 'N';
86537 
86538 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
86539 l_bflow_applied_to_amt       := NULL; -- 5132302
86540 l_entered_amt_idx            := NULL;          -- 4262811
86541 l_accted_amt_idx             := NULL;          -- 4262811
86542 l_acc_rev_flag               := NULL;          -- 4262811
86543 l_accrual_line_num           := NULL;          -- 4262811
86544 l_tmp_amt                    := NULL;          -- 4262811
86545 --
86546  
86547 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86548     l_balance_type_code <> 'B' THEN
86549 IF NVL(p_source_97,9E125) =  34
86550  THEN 
86551 
86552    --
86553    XLA_AE_LINES_PKG.SetNewLine;
86554 
86555    p_balance_type_code          := l_balance_type_code;
86556    -- set the flag so later we will know whether the gain loss line needs to be created
86557    
86558    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86559      p_actual_flag :='A';
86560    END IF;
86561 
86562    --
86563    -- bulk performance
86564    --
86565    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86566                                       p_header_num   => 0); -- 4262811
86567    --
86568    -- set accounting line options
86569    --
86570    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86571            p_natural_side_code          => 'D'
86572          , p_gain_or_loss_flag          => 'N'
86573          , p_gl_transfer_mode_code      => 'S'
86574          , p_acct_entry_type_code       => 'A'
86575          , p_switch_side_flag           => 'Y'
86576          , p_merge_duplicate_code       => 'N'
86577          );
86578    --
86579    l_acc_rev_natural_side_code := 'C';  -- 4262811
86580    -- 
86581    --
86582    -- set accounting line type info
86583    --
86584    xla_ae_lines_pkg.SetAcctLineType
86585       (p_component_type             => l_component_type
86586       ,p_event_type_code            => l_event_type_code
86587       ,p_line_definition_owner_code => l_line_definition_owner_code
86588       ,p_line_definition_code       => l_line_definition_code
86589       ,p_accounting_line_code       => l_component_code
86590       ,p_accounting_line_type_code  => l_component_type_code
86591       ,p_accounting_line_appl_id    => l_component_appl_id
86592       ,p_amb_context_code           => l_amb_context_code
86593       ,p_entity_code                => l_entity_code
86594       ,p_event_class_code           => l_event_class_code);
86595    --
86596    -- set accounting class
86597    --
86598    xla_ae_lines_pkg.SetAcctClass(
86599            p_accounting_class_code  => 'INTERORG_PROFIT'
86600          , p_ae_header_id           => l_ae_header_id
86601          );
86602 
86603    --
86604    -- set rounding class
86605    --
86606    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86607                       'INTERORG_PROFIT';
86608 
86609    --
86610    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86611    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86612    --
86613    -- bulk performance
86614    --
86615    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86616 
86617    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86618       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86619 
86620    -- 4955764
86621    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86622       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86623 
86624    -- 4458381 Public Sector Enh
86625    
86626    --
86627    -- set accounting attributes for the line type
86628    --
86629    l_entered_amt_idx := 3;
86630    l_accted_amt_idx  := 8;
86631    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
86632    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86633    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
86634    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86635    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
86636    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86637    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
86638    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86639    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
86640    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86641    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
86642    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86643    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
86644    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86645    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
86646    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86647    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
86648 
86649    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86650    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86651 
86652    ---------------------------------------------------------------------------------------------------------------
86653    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86654    ---------------------------------------------------------------------------------------------------------------
86655    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86656 
86657    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86658    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86659 
86660    IF xla_accounting_cache_pkg.GetValueChar
86661          (p_source_code         => 'LEDGER_CATEGORY_CODE'
86662          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86663    AND l_bflow_method_code = 'PRIOR_ENTRY'
86664 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86665    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86666          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86667        )
86668    THEN
86669          xla_ae_lines_pkg.BflowUpgEntry
86670            (p_business_method_code    => l_bflow_method_code
86671            ,p_business_class_code     => l_bflow_class_code
86672            ,p_balance_type            => l_balance_type_code);
86673    ELSE
86674       NULL;
86675 -- No business flow processing for business flow method of NONE.
86676    END IF;
86677 
86678    --
86679    -- call analytical criteria
86680    --
86681    
86682    --
86683    -- call description
86684    --
86685    
86686 xla_ae_lines_pkg.SetLineDescription(
86687    p_ae_header_id => l_ae_header_id
86688   ,p_description  => Description_1 (
86689      p_application_id         => p_application_id
86690    , p_ae_header_id           => l_ae_header_id 
86691 , p_source_1 => p_source_1
86692 , p_source_2 => p_source_2
86693 , p_source_3 => p_source_3
86694 , p_source_4 => p_source_4
86695 , p_source_5 => p_source_5
86696    )
86697 );
86698 
86699 
86700    --
86701    -- call ADRs
86702    -- Bug 4922099
86703    --
86704    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86705         (NVL(l_actual_upg_option, 'N') = 'O') OR
86706         (NVL(l_enc_upg_option, 'N') = 'O')
86707       )
86708    THEN
86709    NULL;
86710    --
86711    --
86712    
86713   l_ccid := AcctDerRule_6(
86714            p_application_id           => p_application_id
86715          , p_ae_header_id             => l_ae_header_id 
86716 , p_source_11 => p_source_11
86717          , x_transaction_coa_id       => l_adr_transaction_coa_id
86718          , x_accounting_coa_id        => l_adr_accounting_coa_id
86719          , x_value_type_code          => l_adr_value_type_code
86720          , p_side                     => 'NA'
86721    );
86722 
86723    xla_ae_lines_pkg.set_ccid(
86724     p_code_combination_id          => l_ccid
86725   , p_value_type_code              => l_adr_value_type_code
86726   , p_transaction_coa_id           => l_adr_transaction_coa_id
86727   , p_accounting_coa_id            => l_adr_accounting_coa_id
86728   , p_adr_code                     => 'CST_DEFAULT'
86729   , p_adr_type_code                => 'S'
86730   , p_component_type               => l_component_type
86731   , p_component_code               => l_component_code
86732   , p_component_type_code          => l_component_type_code
86733   , p_component_appl_id            => l_component_appl_id
86734   , p_amb_context_code             => l_amb_context_code
86735   , p_side                         => 'NA'
86736   );
86737 
86738 
86739    --
86740    --
86741    END IF;
86742    --
86743    -- Bug 4922099
86744    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86745           (NVL(l_enc_upg_option, 'N') = 'O')
86746         ) AND
86747         (l_bflow_method_code = 'PRIOR_ENTRY')
86748       )
86749    THEN
86750       IF
86751       --
86752       1 = 2
86753       --
86754       THEN
86755       xla_accounting_err_pkg.build_message
86756                                     (p_appli_s_name            => 'XLA'
86757                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86758                                     ,p_token_1                 => 'LINE_NUMBER'
86759                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
86760                                     ,p_token_2                 => 'LINE_TYPE_NAME'
86761                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
86762                                                                              l_component_type
86763                                                                             ,l_component_code
86764                                                                             ,l_component_type_code
86765                                                                             ,l_component_appl_id
86766                                                                             ,l_amb_context_code
86767                                                                             ,l_entity_code
86768                                                                             ,l_event_class_code
86769                                                                            )
86770                                     ,p_token_3                 => 'OWNER'
86771                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
86772                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
86773                                                                           ,p_lookup_code    => l_component_type_code
86774                                                                          )
86775                                     ,p_token_4                 => 'PRODUCT_NAME'
86776                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86777                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86778                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86779                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86780                                     ,p_ae_header_id            =>  NULL
86781                                        );
86782 
86783         IF (C_LEVEL_ERROR>= g_log_level) THEN
86784                  trace
86785                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86786                       ,p_level    => C_LEVEL_ERROR
86787                       ,p_module   => l_log_module);
86788         END IF;
86789       END IF;
86790    END IF;
86791    --
86792    --
86793    ------------------------------------------------------------------------------------------------
86794    -- 4219869 Business Flow
86795    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86796    -- Prior Entry.  Currently, the following code is always generated.
86797    ------------------------------------------------------------------------------------------------
86798    XLA_AE_LINES_PKG.ValidateCurrentLine;
86799 
86800    ------------------------------------------------------------------------------------
86801    -- 4219869 Business Flow
86802    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86803    ------------------------------------------------------------------------------------
86804    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86805 
86806    ----------------------------------------------------------------------------------
86807    -- 4219869 Business Flow
86808    -- Update journal entry status -- Need to generate this within IF <condition>
86809    ----------------------------------------------------------------------------------
86810    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86811          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86812          ,p_balance_type_code => l_balance_type_code
86813          );
86814 
86815    -------------------------------------------------------------------------------------------
86816    -- 4262811 - Generate the Accrual Reversal lines
86817    -------------------------------------------------------------------------------------------
86818    BEGIN
86819       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86820                               (g_array_event(p_event_id).array_value_num('header_index'));
86821       IF l_acc_rev_flag IS NULL THEN
86822          l_acc_rev_flag := 'N';
86823       END IF;
86824    EXCEPTION
86825       WHEN OTHERS THEN
86826          l_acc_rev_flag := 'N';
86827    END;
86828    --
86829    IF (l_acc_rev_flag = 'Y') THEN
86830 
86831        -- 4645092  ------------------------------------------------------------------------------
86832        -- To allow MPA report to determine if it should generate report process
86833        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86834        ------------------------------------------------------------------------------------------
86835 
86836        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86837        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86838    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
86839    -- call ADRs
86840    -- Bug 4922099
86841    --
86842    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86843         (NVL(l_actual_upg_option, 'N') = 'O') OR
86844         (NVL(l_enc_upg_option, 'N') = 'O')
86845       )
86846    THEN
86847    NULL;
86848    --
86849    --
86850    
86851   l_ccid := AcctDerRule_6(
86852            p_application_id           => p_application_id
86853          , p_ae_header_id             => l_ae_header_id 
86854 , p_source_11 => p_source_11
86855          , x_transaction_coa_id       => l_adr_transaction_coa_id
86856          , x_accounting_coa_id        => l_adr_accounting_coa_id
86857          , x_value_type_code          => l_adr_value_type_code
86858          , p_side                     => 'NA'
86859    );
86860 
86861    xla_ae_lines_pkg.set_ccid(
86862     p_code_combination_id          => l_ccid
86863   , p_value_type_code              => l_adr_value_type_code
86864   , p_transaction_coa_id           => l_adr_transaction_coa_id
86865   , p_accounting_coa_id            => l_adr_accounting_coa_id
86866   , p_adr_code                     => 'CST_DEFAULT'
86867   , p_adr_type_code                => 'S'
86868   , p_component_type               => l_component_type
86869   , p_component_code               => l_component_code
86870   , p_component_type_code          => l_component_type_code
86871   , p_component_appl_id            => l_component_appl_id
86872   , p_amb_context_code             => l_amb_context_code
86873   , p_side                         => 'NA'
86874   );
86875 
86876 
86877    --
86878    --
86879    END IF;
86880 
86881        --
86882        -- Update the line information that should be overwritten
86883        --
86884        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86885                                          p_header_num   => 1);
86886        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
86887 
86888        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86889 
86890        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
86891           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86892        END IF;
86893 
86894       --
86895       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86896       --
86897       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86898           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
86899       ELSE
86900           ---------------------------------------------------------------------------------------------------
86901           -- 4262811a Switch Sign
86902           ---------------------------------------------------------------------------------------------------
86903           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
86904           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86905                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86906           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86907                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86908           -- 5132302
86909           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86910                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86911 
86912       END IF;
86913 
86914       -- 4955764
86915       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86916       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86917 
86918 
86919       XLA_AE_LINES_PKG.ValidateCurrentLine;
86920       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86921 
86922       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86923                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86924                ,p_balance_type_code => l_balance_type_code);
86925 
86926    END IF;
86927 
86928    -----------------------------------------------------------------------------------------
86929    -- 4262811 Multiperiod Accounting
86930    -----------------------------------------------------------------------------------------
86931      -- No MPA option is assigned.
86932 
86933 
86934 END IF;
86935 END IF;
86936 --
86937 
86938 --
86939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86940    trace
86941       (p_msg      => 'END of AcctLineType_176'
86942       ,p_level    => C_LEVEL_PROCEDURE
86943       ,p_module   => l_log_module);
86944 END IF;
86945 --
86946 EXCEPTION
86947   WHEN xla_exceptions_pkg.application_exception THEN
86948       RAISE;
86949   WHEN OTHERS THEN
86950        xla_exceptions_pkg.raise_message
86951            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_176');
86952 END AcctLineType_176;
86953 --
86954 
86955 ---------------------------------------
86956 --
86957 -- PRIVATE FUNCTION
86958 --         AcctLineType_177
86959 --
86960 ---------------------------------------
86961 PROCEDURE AcctLineType_177 (
86962   p_application_id        IN NUMBER
86963  ,p_event_id              IN NUMBER
86964  ,p_calculate_acctd_flag  IN VARCHAR2
86965  ,p_calculate_g_l_flag    IN VARCHAR2
86966  ,p_actual_flag           IN OUT VARCHAR2
86967  ,p_balance_type_code     OUT VARCHAR2
86968  ,p_gain_or_loss_ref      OUT VARCHAR2
86969  
86970 --TRANSACTION_ID
86971  , p_source_1            IN NUMBER
86972 --Item Concatenated Segments
86973  , p_source_2            IN VARCHAR2
86974 --Transaction Quantity
86975  , p_source_3            IN NUMBER
86976 --Transaction Unit of Measure Code
86977  , p_source_4            IN VARCHAR2
86978 --Inventory Transaction Type Description
86979  , p_source_5            IN VARCHAR2
86980 --Cost Management Default Account
86981  , p_source_11            IN NUMBER
86982 --DISTRIBUTION_IDENTIFIER
86983  , p_source_84            IN NUMBER
86984 --Distribution Type
86985  , p_source_85            IN VARCHAR2
86986  , p_source_85_meaning    IN VARCHAR2
86987 --Entered Currency Code
86988  , p_source_88            IN VARCHAR2
86989 --Entered Amount
86990  , p_source_91            IN NUMBER
86991 --Currency Conversion Date
86992  , p_source_92            IN DATE
86993 --Currency Conversion Rate
86994  , p_source_93            IN NUMBER
86995 --Currency Conversion Type
86996  , p_source_94            IN VARCHAR2
86997 --Accounted Amount
86998  , p_source_95            IN NUMBER
86999 --Accounting Line Type
87000  , p_source_97            IN NUMBER
87001 )
87002 IS
87003 
87004 l_component_type              VARCHAR2(80);
87005 l_component_code              VARCHAR2(30);
87006 l_component_type_code         VARCHAR2(1);
87007 l_component_appl_id           INTEGER;
87008 l_amb_context_code            VARCHAR2(30);
87009 l_entity_code                 VARCHAR2(30);
87010 l_event_class_code            VARCHAR2(30);
87011 l_ae_header_id                NUMBER;
87012 l_event_type_code             VARCHAR2(30);
87013 l_line_definition_code        VARCHAR2(30);
87014 l_line_definition_owner_code  VARCHAR2(1);
87015 --
87016 -- adr variables
87017 l_segment                     VARCHAR2(30);
87018 l_ccid                        NUMBER;
87019 l_adr_transaction_coa_id      NUMBER;
87020 l_adr_accounting_coa_id       NUMBER;
87021 l_adr_flexfield_segment_code  VARCHAR2(30);
87022 l_adr_flex_value_set_id       NUMBER;
87023 l_adr_value_type_code         VARCHAR2(30);
87024 l_adr_value_combination_id    NUMBER;
87025 l_adr_value_segment_code      VARCHAR2(30);
87026 
87027 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
87028 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
87029 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
87030 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
87031 
87032 -- 4262811 Variables ------------------------------------------------------------------------------------------
87033 l_entered_amt_idx             NUMBER;
87034 l_accted_amt_idx              NUMBER;
87035 l_acc_rev_flag                VARCHAR2(1);
87036 l_accrual_line_num            NUMBER;
87037 l_tmp_amt                     NUMBER;
87038 l_acc_rev_natural_side_code   VARCHAR2(1);
87039 
87040 l_num_entries                 NUMBER;
87041 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
87042 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
87043 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
87044 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
87045 l_recog_line_1                NUMBER;
87046 l_recog_line_2                NUMBER;
87047 
87048 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87049 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87050 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87051 
87052 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87053 
87054 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87055 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87056 
87057 ---------------------------------------------------------------------------------------------------------------
87058 
87059 
87060 --
87061 -- bulk performance
87062 --
87063 l_balance_type_code           VARCHAR2(1);
87064 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87065 l_log_module                  VARCHAR2(240);
87066 
87067 --
87068 -- Upgrade strategy
87069 --
87070 l_actual_upg_option           VARCHAR2(1);
87071 l_enc_upg_option           VARCHAR2(1);
87072 
87073 --
87074 BEGIN
87075 --
87076 IF g_log_enabled THEN
87077       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_177';
87078 END IF;
87079 --
87080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87081 
87082       trace
87083          (p_msg      => 'BEGIN of AcctLineType_177'
87084          ,p_level    => C_LEVEL_PROCEDURE
87085          ,p_module   => l_log_module);
87086 
87087 END IF;
87088 --
87089 l_component_type             := 'AMB_JLT';
87090 l_component_code             := 'INTERORG_PROFIT_OPM';
87091 l_component_type_code        := 'S';
87092 l_component_appl_id          :=  707;
87093 l_amb_context_code           := 'DEFAULT';
87094 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
87095 l_event_class_code           := 'INT_ORDER_TO_EXP';
87096 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
87097 l_line_definition_owner_code := 'S';
87098 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_NO_TP';
87099 --
87100 l_balance_type_code          := 'A';
87101 l_segment                     := NULL;
87102 l_ccid                        := NULL;
87103 l_adr_transaction_coa_id      := NULL;
87104 l_adr_accounting_coa_id       := NULL;
87105 l_adr_flexfield_segment_code  := NULL;
87106 l_adr_flex_value_set_id       := NULL;
87107 l_adr_value_type_code         := NULL;
87108 l_adr_value_combination_id    := NULL;
87109 l_adr_value_segment_code      := NULL;
87110 
87111 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87112 l_bflow_class_code           := '';    -- 4219869 Business Flow
87113 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87114 l_budgetary_control_flag     := 'N';
87115 
87116 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87117 l_bflow_applied_to_amt       := NULL; -- 5132302
87118 l_entered_amt_idx            := NULL;          -- 4262811
87119 l_accted_amt_idx             := NULL;          -- 4262811
87120 l_acc_rev_flag               := NULL;          -- 4262811
87121 l_accrual_line_num           := NULL;          -- 4262811
87122 l_tmp_amt                    := NULL;          -- 4262811
87123 --
87124  
87125 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87126     l_balance_type_code <> 'B' THEN
87127 IF NVL(p_source_97,9E125) =  34
87128  THEN 
87129 
87130    --
87131    XLA_AE_LINES_PKG.SetNewLine;
87132 
87133    p_balance_type_code          := l_balance_type_code;
87134    -- set the flag so later we will know whether the gain loss line needs to be created
87135    
87136    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87137      p_actual_flag :='A';
87138    END IF;
87139 
87140    --
87141    -- bulk performance
87142    --
87143    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87144                                       p_header_num   => 0); -- 4262811
87145    --
87146    -- set accounting line options
87147    --
87148    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87149            p_natural_side_code          => 'D'
87150          , p_gain_or_loss_flag          => 'N'
87151          , p_gl_transfer_mode_code      => 'S'
87152          , p_acct_entry_type_code       => 'A'
87153          , p_switch_side_flag           => 'Y'
87154          , p_merge_duplicate_code       => 'N'
87155          );
87156    --
87157    l_acc_rev_natural_side_code := 'C';  -- 4262811
87158    -- 
87159    --
87160    -- set accounting line type info
87161    --
87162    xla_ae_lines_pkg.SetAcctLineType
87163       (p_component_type             => l_component_type
87164       ,p_event_type_code            => l_event_type_code
87165       ,p_line_definition_owner_code => l_line_definition_owner_code
87166       ,p_line_definition_code       => l_line_definition_code
87167       ,p_accounting_line_code       => l_component_code
87168       ,p_accounting_line_type_code  => l_component_type_code
87169       ,p_accounting_line_appl_id    => l_component_appl_id
87170       ,p_amb_context_code           => l_amb_context_code
87171       ,p_entity_code                => l_entity_code
87172       ,p_event_class_code           => l_event_class_code);
87173    --
87174    -- set accounting class
87175    --
87176    xla_ae_lines_pkg.SetAcctClass(
87177            p_accounting_class_code  => 'INTERORG_PROFIT'
87178          , p_ae_header_id           => l_ae_header_id
87179          );
87180 
87181    --
87182    -- set rounding class
87183    --
87184    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87185                       'INTERORG_PROFIT';
87186 
87187    --
87188    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87189    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87190    --
87191    -- bulk performance
87192    --
87193    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87194 
87195    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87196       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87197 
87198    -- 4955764
87199    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87201 
87202    -- 4458381 Public Sector Enh
87203    
87204    --
87205    -- set accounting attributes for the line type
87206    --
87207    l_entered_amt_idx := 3;
87208    l_accted_amt_idx  := 8;
87209    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
87210    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87211    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
87212    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87213    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
87214    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87215    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
87216    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87217    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
87218    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87219    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
87220    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87221    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
87222    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87223    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
87224    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87225    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
87226 
87227    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87228    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87229 
87230    ---------------------------------------------------------------------------------------------------------------
87231    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87232    ---------------------------------------------------------------------------------------------------------------
87233    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87234 
87235    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87236    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87237 
87238    IF xla_accounting_cache_pkg.GetValueChar
87239          (p_source_code         => 'LEDGER_CATEGORY_CODE'
87240          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87241    AND l_bflow_method_code = 'PRIOR_ENTRY'
87242 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87243    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87244          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87245        )
87246    THEN
87247          xla_ae_lines_pkg.BflowUpgEntry
87248            (p_business_method_code    => l_bflow_method_code
87249            ,p_business_class_code     => l_bflow_class_code
87250            ,p_balance_type            => l_balance_type_code);
87251    ELSE
87252       NULL;
87253 -- No business flow processing for business flow method of NONE.
87254    END IF;
87255 
87256    --
87257    -- call analytical criteria
87258    --
87259    
87260    --
87261    -- call description
87262    --
87263    
87264 xla_ae_lines_pkg.SetLineDescription(
87265    p_ae_header_id => l_ae_header_id
87266   ,p_description  => Description_1 (
87267      p_application_id         => p_application_id
87268    , p_ae_header_id           => l_ae_header_id 
87269 , p_source_1 => p_source_1
87270 , p_source_2 => p_source_2
87271 , p_source_3 => p_source_3
87272 , p_source_4 => p_source_4
87273 , p_source_5 => p_source_5
87274    )
87275 );
87276 
87277 
87278    --
87279    -- call ADRs
87280    -- Bug 4922099
87281    --
87282    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87283         (NVL(l_actual_upg_option, 'N') = 'O') OR
87284         (NVL(l_enc_upg_option, 'N') = 'O')
87285       )
87286    THEN
87287    NULL;
87288    --
87289    --
87290    
87291   l_ccid := AcctDerRule_6(
87292            p_application_id           => p_application_id
87293          , p_ae_header_id             => l_ae_header_id 
87294 , p_source_11 => p_source_11
87295          , x_transaction_coa_id       => l_adr_transaction_coa_id
87296          , x_accounting_coa_id        => l_adr_accounting_coa_id
87297          , x_value_type_code          => l_adr_value_type_code
87298          , p_side                     => 'NA'
87299    );
87300 
87301    xla_ae_lines_pkg.set_ccid(
87302     p_code_combination_id          => l_ccid
87303   , p_value_type_code              => l_adr_value_type_code
87304   , p_transaction_coa_id           => l_adr_transaction_coa_id
87305   , p_accounting_coa_id            => l_adr_accounting_coa_id
87306   , p_adr_code                     => 'CST_DEFAULT'
87307   , p_adr_type_code                => 'S'
87308   , p_component_type               => l_component_type
87309   , p_component_code               => l_component_code
87310   , p_component_type_code          => l_component_type_code
87311   , p_component_appl_id            => l_component_appl_id
87312   , p_amb_context_code             => l_amb_context_code
87313   , p_side                         => 'NA'
87314   );
87315 
87316 
87317    --
87318    --
87319    END IF;
87320    --
87321    -- Bug 4922099
87322    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87323           (NVL(l_enc_upg_option, 'N') = 'O')
87324         ) AND
87325         (l_bflow_method_code = 'PRIOR_ENTRY')
87326       )
87327    THEN
87328       IF
87329       --
87330       1 = 2
87331       --
87332       THEN
87333       xla_accounting_err_pkg.build_message
87334                                     (p_appli_s_name            => 'XLA'
87335                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87336                                     ,p_token_1                 => 'LINE_NUMBER'
87337                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87338                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87339                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87340                                                                              l_component_type
87341                                                                             ,l_component_code
87342                                                                             ,l_component_type_code
87343                                                                             ,l_component_appl_id
87344                                                                             ,l_amb_context_code
87345                                                                             ,l_entity_code
87346                                                                             ,l_event_class_code
87347                                                                            )
87348                                     ,p_token_3                 => 'OWNER'
87349                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87350                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87351                                                                           ,p_lookup_code    => l_component_type_code
87352                                                                          )
87353                                     ,p_token_4                 => 'PRODUCT_NAME'
87354                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87355                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87356                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87357                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87358                                     ,p_ae_header_id            =>  NULL
87359                                        );
87360 
87361         IF (C_LEVEL_ERROR>= g_log_level) THEN
87362                  trace
87363                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87364                       ,p_level    => C_LEVEL_ERROR
87365                       ,p_module   => l_log_module);
87366         END IF;
87367       END IF;
87368    END IF;
87369    --
87370    --
87371    ------------------------------------------------------------------------------------------------
87372    -- 4219869 Business Flow
87373    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87374    -- Prior Entry.  Currently, the following code is always generated.
87375    ------------------------------------------------------------------------------------------------
87376    XLA_AE_LINES_PKG.ValidateCurrentLine;
87377 
87378    ------------------------------------------------------------------------------------
87379    -- 4219869 Business Flow
87380    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87381    ------------------------------------------------------------------------------------
87382    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87383 
87384    ----------------------------------------------------------------------------------
87385    -- 4219869 Business Flow
87386    -- Update journal entry status -- Need to generate this within IF <condition>
87387    ----------------------------------------------------------------------------------
87388    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87389          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87390          ,p_balance_type_code => l_balance_type_code
87391          );
87392 
87393    -------------------------------------------------------------------------------------------
87394    -- 4262811 - Generate the Accrual Reversal lines
87395    -------------------------------------------------------------------------------------------
87396    BEGIN
87397       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87398                               (g_array_event(p_event_id).array_value_num('header_index'));
87399       IF l_acc_rev_flag IS NULL THEN
87400          l_acc_rev_flag := 'N';
87401       END IF;
87402    EXCEPTION
87403       WHEN OTHERS THEN
87404          l_acc_rev_flag := 'N';
87405    END;
87406    --
87407    IF (l_acc_rev_flag = 'Y') THEN
87408 
87409        -- 4645092  ------------------------------------------------------------------------------
87410        -- To allow MPA report to determine if it should generate report process
87411        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87412        ------------------------------------------------------------------------------------------
87413 
87414        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87415        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87416    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87417    -- call ADRs
87418    -- Bug 4922099
87419    --
87420    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87421         (NVL(l_actual_upg_option, 'N') = 'O') OR
87422         (NVL(l_enc_upg_option, 'N') = 'O')
87423       )
87424    THEN
87425    NULL;
87426    --
87427    --
87428    
87429   l_ccid := AcctDerRule_6(
87430            p_application_id           => p_application_id
87431          , p_ae_header_id             => l_ae_header_id 
87432 , p_source_11 => p_source_11
87433          , x_transaction_coa_id       => l_adr_transaction_coa_id
87434          , x_accounting_coa_id        => l_adr_accounting_coa_id
87435          , x_value_type_code          => l_adr_value_type_code
87436          , p_side                     => 'NA'
87437    );
87438 
87439    xla_ae_lines_pkg.set_ccid(
87440     p_code_combination_id          => l_ccid
87441   , p_value_type_code              => l_adr_value_type_code
87442   , p_transaction_coa_id           => l_adr_transaction_coa_id
87443   , p_accounting_coa_id            => l_adr_accounting_coa_id
87444   , p_adr_code                     => 'CST_DEFAULT'
87445   , p_adr_type_code                => 'S'
87446   , p_component_type               => l_component_type
87447   , p_component_code               => l_component_code
87448   , p_component_type_code          => l_component_type_code
87449   , p_component_appl_id            => l_component_appl_id
87450   , p_amb_context_code             => l_amb_context_code
87451   , p_side                         => 'NA'
87452   );
87453 
87454 
87455    --
87456    --
87457    END IF;
87458 
87459        --
87460        -- Update the line information that should be overwritten
87461        --
87462        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87463                                          p_header_num   => 1);
87464        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
87465 
87466        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87467 
87468        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
87469           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87470        END IF;
87471 
87472       --
87473       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87474       --
87475       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87476           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
87477       ELSE
87478           ---------------------------------------------------------------------------------------------------
87479           -- 4262811a Switch Sign
87480           ---------------------------------------------------------------------------------------------------
87481           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
87482           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87483                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87484           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87485                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87486           -- 5132302
87487           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87488                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87489 
87490       END IF;
87491 
87492       -- 4955764
87493       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87494       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87495 
87496 
87497       XLA_AE_LINES_PKG.ValidateCurrentLine;
87498       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87499 
87500       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87501                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87502                ,p_balance_type_code => l_balance_type_code);
87503 
87504    END IF;
87505 
87506    -----------------------------------------------------------------------------------------
87507    -- 4262811 Multiperiod Accounting
87508    -----------------------------------------------------------------------------------------
87509      -- No MPA option is assigned.
87510 
87511 
87512 END IF;
87513 END IF;
87514 --
87515 
87516 --
87517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87518    trace
87519       (p_msg      => 'END of AcctLineType_177'
87520       ,p_level    => C_LEVEL_PROCEDURE
87521       ,p_module   => l_log_module);
87522 END IF;
87523 --
87524 EXCEPTION
87525   WHEN xla_exceptions_pkg.application_exception THEN
87526       RAISE;
87527   WHEN OTHERS THEN
87528        xla_exceptions_pkg.raise_message
87529            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_177');
87530 END AcctLineType_177;
87531 --
87532 
87533 ---------------------------------------
87534 --
87535 -- PRIVATE FUNCTION
87536 --         AcctLineType_178
87537 --
87538 ---------------------------------------
87539 PROCEDURE AcctLineType_178 (
87540   p_application_id        IN NUMBER
87541  ,p_event_id              IN NUMBER
87542  ,p_calculate_acctd_flag  IN VARCHAR2
87543  ,p_calculate_g_l_flag    IN VARCHAR2
87544  ,p_actual_flag           IN OUT VARCHAR2
87545  ,p_balance_type_code     OUT VARCHAR2
87546  ,p_gain_or_loss_ref      OUT VARCHAR2
87547  
87548 --Cost Management Default Account
87549  , p_source_11            IN NUMBER
87550 --DISTRIBUTION_IDENTIFIER
87551  , p_source_84            IN NUMBER
87552 --Distribution Type
87553  , p_source_85            IN VARCHAR2
87554  , p_source_85_meaning    IN VARCHAR2
87555 --Entered Currency Code
87556  , p_source_88            IN VARCHAR2
87557 --Entered Amount
87558  , p_source_91            IN NUMBER
87559 --Currency Conversion Date
87560  , p_source_92            IN DATE
87561 --Currency Conversion Rate
87562  , p_source_93            IN NUMBER
87563 --Currency Conversion Type
87564  , p_source_94            IN VARCHAR2
87565 --Accounted Amount
87566  , p_source_95            IN NUMBER
87567 --Accounting Line Type
87568  , p_source_97            IN NUMBER
87569 )
87570 IS
87571 
87572 l_component_type              VARCHAR2(80);
87573 l_component_code              VARCHAR2(30);
87574 l_component_type_code         VARCHAR2(1);
87575 l_component_appl_id           INTEGER;
87576 l_amb_context_code            VARCHAR2(30);
87577 l_entity_code                 VARCHAR2(30);
87578 l_event_class_code            VARCHAR2(30);
87579 l_ae_header_id                NUMBER;
87580 l_event_type_code             VARCHAR2(30);
87581 l_line_definition_code        VARCHAR2(30);
87582 l_line_definition_owner_code  VARCHAR2(1);
87583 --
87584 -- adr variables
87585 l_segment                     VARCHAR2(30);
87586 l_ccid                        NUMBER;
87587 l_adr_transaction_coa_id      NUMBER;
87588 l_adr_accounting_coa_id       NUMBER;
87589 l_adr_flexfield_segment_code  VARCHAR2(30);
87590 l_adr_flex_value_set_id       NUMBER;
87591 l_adr_value_type_code         VARCHAR2(30);
87592 l_adr_value_combination_id    NUMBER;
87593 l_adr_value_segment_code      VARCHAR2(30);
87594 
87595 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
87596 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
87597 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
87598 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
87599 
87600 -- 4262811 Variables ------------------------------------------------------------------------------------------
87601 l_entered_amt_idx             NUMBER;
87602 l_accted_amt_idx              NUMBER;
87603 l_acc_rev_flag                VARCHAR2(1);
87604 l_accrual_line_num            NUMBER;
87605 l_tmp_amt                     NUMBER;
87606 l_acc_rev_natural_side_code   VARCHAR2(1);
87607 
87608 l_num_entries                 NUMBER;
87609 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
87610 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
87611 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
87612 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
87613 l_recog_line_1                NUMBER;
87614 l_recog_line_2                NUMBER;
87615 
87616 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
87617 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
87618 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
87619 
87620 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87621 
87622 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
87623 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
87624 
87625 ---------------------------------------------------------------------------------------------------------------
87626 
87627 
87628 --
87629 -- bulk performance
87630 --
87631 l_balance_type_code           VARCHAR2(1);
87632 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
87633 l_log_module                  VARCHAR2(240);
87634 
87635 --
87636 -- Upgrade strategy
87637 --
87638 l_actual_upg_option           VARCHAR2(1);
87639 l_enc_upg_option           VARCHAR2(1);
87640 
87641 --
87642 BEGIN
87643 --
87644 IF g_log_enabled THEN
87645       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_178';
87646 END IF;
87647 --
87648 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87649 
87650       trace
87651          (p_msg      => 'BEGIN of AcctLineType_178'
87652          ,p_level    => C_LEVEL_PROCEDURE
87653          ,p_module   => l_log_module);
87654 
87655 END IF;
87656 --
87657 l_component_type             := 'AMB_JLT';
87658 l_component_code             := 'INTERORG_PROFIT_OPM';
87659 l_component_type_code        := 'S';
87660 l_component_appl_id          :=  707;
87661 l_amb_context_code           := 'DEFAULT';
87662 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
87663 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
87664 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
87665 l_line_definition_owner_code := 'S';
87666 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
87667 --
87668 l_balance_type_code          := 'A';
87669 l_segment                     := NULL;
87670 l_ccid                        := NULL;
87671 l_adr_transaction_coa_id      := NULL;
87672 l_adr_accounting_coa_id       := NULL;
87673 l_adr_flexfield_segment_code  := NULL;
87674 l_adr_flex_value_set_id       := NULL;
87675 l_adr_value_type_code         := NULL;
87676 l_adr_value_combination_id    := NULL;
87677 l_adr_value_segment_code      := NULL;
87678 
87679 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
87680 l_bflow_class_code           := '';    -- 4219869 Business Flow
87681 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
87682 l_budgetary_control_flag     := 'N';
87683 
87684 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
87685 l_bflow_applied_to_amt       := NULL; -- 5132302
87686 l_entered_amt_idx            := NULL;          -- 4262811
87687 l_accted_amt_idx             := NULL;          -- 4262811
87688 l_acc_rev_flag               := NULL;          -- 4262811
87689 l_accrual_line_num           := NULL;          -- 4262811
87690 l_tmp_amt                    := NULL;          -- 4262811
87691 --
87692  
87693 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87694     l_balance_type_code <> 'B' THEN
87695 IF NVL(p_source_97,9E125) =  34
87696  THEN 
87697 
87698    --
87699    XLA_AE_LINES_PKG.SetNewLine;
87700 
87701    p_balance_type_code          := l_balance_type_code;
87702    -- set the flag so later we will know whether the gain loss line needs to be created
87703    
87704    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87705      p_actual_flag :='A';
87706    END IF;
87707 
87708    --
87709    -- bulk performance
87710    --
87711    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87712                                       p_header_num   => 0); -- 4262811
87713    --
87714    -- set accounting line options
87715    --
87716    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87717            p_natural_side_code          => 'D'
87718          , p_gain_or_loss_flag          => 'N'
87719          , p_gl_transfer_mode_code      => 'S'
87720          , p_acct_entry_type_code       => 'A'
87721          , p_switch_side_flag           => 'Y'
87722          , p_merge_duplicate_code       => 'N'
87723          );
87724    --
87725    l_acc_rev_natural_side_code := 'C';  -- 4262811
87726    -- 
87727    --
87728    -- set accounting line type info
87729    --
87730    xla_ae_lines_pkg.SetAcctLineType
87731       (p_component_type             => l_component_type
87732       ,p_event_type_code            => l_event_type_code
87733       ,p_line_definition_owner_code => l_line_definition_owner_code
87734       ,p_line_definition_code       => l_line_definition_code
87735       ,p_accounting_line_code       => l_component_code
87736       ,p_accounting_line_type_code  => l_component_type_code
87737       ,p_accounting_line_appl_id    => l_component_appl_id
87738       ,p_amb_context_code           => l_amb_context_code
87739       ,p_entity_code                => l_entity_code
87740       ,p_event_class_code           => l_event_class_code);
87741    --
87742    -- set accounting class
87743    --
87744    xla_ae_lines_pkg.SetAcctClass(
87745            p_accounting_class_code  => 'INTERORG_PROFIT'
87746          , p_ae_header_id           => l_ae_header_id
87747          );
87748 
87749    --
87750    -- set rounding class
87751    --
87752    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87753                       'INTERORG_PROFIT';
87754 
87755    --
87756    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87757    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87758    --
87759    -- bulk performance
87760    --
87761    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87762 
87763    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87764       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87765 
87766    -- 4955764
87767    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87768       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87769 
87770    -- 4458381 Public Sector Enh
87771    
87772    --
87773    -- set accounting attributes for the line type
87774    --
87775    l_entered_amt_idx := 3;
87776    l_accted_amt_idx  := 8;
87777    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
87778    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87779    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
87780    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87781    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
87782    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87783    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
87784    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87785    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
87786    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87787    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
87788    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87789    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
87790    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87791    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
87792    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87793    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
87794 
87795    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87796    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87797 
87798    ---------------------------------------------------------------------------------------------------------------
87799    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87800    ---------------------------------------------------------------------------------------------------------------
87801    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87802 
87803    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87804    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87805 
87806    IF xla_accounting_cache_pkg.GetValueChar
87807          (p_source_code         => 'LEDGER_CATEGORY_CODE'
87808          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87809    AND l_bflow_method_code = 'PRIOR_ENTRY'
87810 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87811    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87812          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87813        )
87814    THEN
87815          xla_ae_lines_pkg.BflowUpgEntry
87816            (p_business_method_code    => l_bflow_method_code
87817            ,p_business_class_code     => l_bflow_class_code
87818            ,p_balance_type            => l_balance_type_code);
87819    ELSE
87820       NULL;
87821 -- No business flow processing for business flow method of NONE.
87822    END IF;
87823 
87824    --
87825    -- call analytical criteria
87826    --
87827    
87828    --
87829    -- call description
87830    --
87831    -- No description or it is inherited.
87832    --
87833    -- call ADRs
87834    -- Bug 4922099
87835    --
87836    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87837         (NVL(l_actual_upg_option, 'N') = 'O') OR
87838         (NVL(l_enc_upg_option, 'N') = 'O')
87839       )
87840    THEN
87841    NULL;
87842    --
87843    --
87844    
87845   l_ccid := AcctDerRule_6(
87846            p_application_id           => p_application_id
87847          , p_ae_header_id             => l_ae_header_id 
87848 , p_source_11 => p_source_11
87849          , x_transaction_coa_id       => l_adr_transaction_coa_id
87850          , x_accounting_coa_id        => l_adr_accounting_coa_id
87851          , x_value_type_code          => l_adr_value_type_code
87852          , p_side                     => 'NA'
87853    );
87854 
87855    xla_ae_lines_pkg.set_ccid(
87856     p_code_combination_id          => l_ccid
87857   , p_value_type_code              => l_adr_value_type_code
87858   , p_transaction_coa_id           => l_adr_transaction_coa_id
87859   , p_accounting_coa_id            => l_adr_accounting_coa_id
87860   , p_adr_code                     => 'CST_DEFAULT'
87861   , p_adr_type_code                => 'S'
87862   , p_component_type               => l_component_type
87863   , p_component_code               => l_component_code
87864   , p_component_type_code          => l_component_type_code
87865   , p_component_appl_id            => l_component_appl_id
87866   , p_amb_context_code             => l_amb_context_code
87867   , p_side                         => 'NA'
87868   );
87869 
87870 
87871    --
87872    --
87873    END IF;
87874    --
87875    -- Bug 4922099
87876    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87877           (NVL(l_enc_upg_option, 'N') = 'O')
87878         ) AND
87879         (l_bflow_method_code = 'PRIOR_ENTRY')
87880       )
87881    THEN
87882       IF
87883       --
87884       1 = 2
87885       --
87886       THEN
87887       xla_accounting_err_pkg.build_message
87888                                     (p_appli_s_name            => 'XLA'
87889                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87890                                     ,p_token_1                 => 'LINE_NUMBER'
87891                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
87892                                     ,p_token_2                 => 'LINE_TYPE_NAME'
87893                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
87894                                                                              l_component_type
87895                                                                             ,l_component_code
87896                                                                             ,l_component_type_code
87897                                                                             ,l_component_appl_id
87898                                                                             ,l_amb_context_code
87899                                                                             ,l_entity_code
87900                                                                             ,l_event_class_code
87901                                                                            )
87902                                     ,p_token_3                 => 'OWNER'
87903                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
87904                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
87905                                                                           ,p_lookup_code    => l_component_type_code
87906                                                                          )
87907                                     ,p_token_4                 => 'PRODUCT_NAME'
87908                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87909                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87910                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87911                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87912                                     ,p_ae_header_id            =>  NULL
87913                                        );
87914 
87915         IF (C_LEVEL_ERROR>= g_log_level) THEN
87916                  trace
87917                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87918                       ,p_level    => C_LEVEL_ERROR
87919                       ,p_module   => l_log_module);
87920         END IF;
87921       END IF;
87922    END IF;
87923    --
87924    --
87925    ------------------------------------------------------------------------------------------------
87926    -- 4219869 Business Flow
87927    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87928    -- Prior Entry.  Currently, the following code is always generated.
87929    ------------------------------------------------------------------------------------------------
87930    XLA_AE_LINES_PKG.ValidateCurrentLine;
87931 
87932    ------------------------------------------------------------------------------------
87933    -- 4219869 Business Flow
87934    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87935    ------------------------------------------------------------------------------------
87936    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87937 
87938    ----------------------------------------------------------------------------------
87939    -- 4219869 Business Flow
87940    -- Update journal entry status -- Need to generate this within IF <condition>
87941    ----------------------------------------------------------------------------------
87942    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87943          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87944          ,p_balance_type_code => l_balance_type_code
87945          );
87946 
87947    -------------------------------------------------------------------------------------------
87948    -- 4262811 - Generate the Accrual Reversal lines
87949    -------------------------------------------------------------------------------------------
87950    BEGIN
87951       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87952                               (g_array_event(p_event_id).array_value_num('header_index'));
87953       IF l_acc_rev_flag IS NULL THEN
87954          l_acc_rev_flag := 'N';
87955       END IF;
87956    EXCEPTION
87957       WHEN OTHERS THEN
87958          l_acc_rev_flag := 'N';
87959    END;
87960    --
87961    IF (l_acc_rev_flag = 'Y') THEN
87962 
87963        -- 4645092  ------------------------------------------------------------------------------
87964        -- To allow MPA report to determine if it should generate report process
87965        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87966        ------------------------------------------------------------------------------------------
87967 
87968        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87969        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87970    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
87971    -- call ADRs
87972    -- Bug 4922099
87973    --
87974    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87975         (NVL(l_actual_upg_option, 'N') = 'O') OR
87976         (NVL(l_enc_upg_option, 'N') = 'O')
87977       )
87978    THEN
87979    NULL;
87980    --
87981    --
87982    
87983   l_ccid := AcctDerRule_6(
87984            p_application_id           => p_application_id
87985          , p_ae_header_id             => l_ae_header_id 
87986 , p_source_11 => p_source_11
87987          , x_transaction_coa_id       => l_adr_transaction_coa_id
87988          , x_accounting_coa_id        => l_adr_accounting_coa_id
87989          , x_value_type_code          => l_adr_value_type_code
87990          , p_side                     => 'NA'
87991    );
87992 
87993    xla_ae_lines_pkg.set_ccid(
87994     p_code_combination_id          => l_ccid
87995   , p_value_type_code              => l_adr_value_type_code
87996   , p_transaction_coa_id           => l_adr_transaction_coa_id
87997   , p_accounting_coa_id            => l_adr_accounting_coa_id
87998   , p_adr_code                     => 'CST_DEFAULT'
87999   , p_adr_type_code                => 'S'
88000   , p_component_type               => l_component_type
88001   , p_component_code               => l_component_code
88002   , p_component_type_code          => l_component_type_code
88003   , p_component_appl_id            => l_component_appl_id
88004   , p_amb_context_code             => l_amb_context_code
88005   , p_side                         => 'NA'
88006   );
88007 
88008 
88009    --
88010    --
88011    END IF;
88012 
88013        --
88014        -- Update the line information that should be overwritten
88015        --
88016        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88017                                          p_header_num   => 1);
88018        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
88019 
88020        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88021 
88022        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
88023           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88024        END IF;
88025 
88026       --
88027       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88028       --
88029       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88030           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
88031       ELSE
88032           ---------------------------------------------------------------------------------------------------
88033           -- 4262811a Switch Sign
88034           ---------------------------------------------------------------------------------------------------
88035           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
88036           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88037                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88038           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88039                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88040           -- 5132302
88041           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88042                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88043 
88044       END IF;
88045 
88046       -- 4955764
88047       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88048       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88049 
88050 
88051       XLA_AE_LINES_PKG.ValidateCurrentLine;
88052       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88053 
88054       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88055                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88056                ,p_balance_type_code => l_balance_type_code);
88057 
88058    END IF;
88059 
88060    -----------------------------------------------------------------------------------------
88061    -- 4262811 Multiperiod Accounting
88062    -----------------------------------------------------------------------------------------
88063      -- No MPA option is assigned.
88064 
88065 
88066 END IF;
88067 END IF;
88068 --
88069 
88070 --
88071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88072    trace
88073       (p_msg      => 'END of AcctLineType_178'
88074       ,p_level    => C_LEVEL_PROCEDURE
88075       ,p_module   => l_log_module);
88076 END IF;
88077 --
88078 EXCEPTION
88079   WHEN xla_exceptions_pkg.application_exception THEN
88080       RAISE;
88081   WHEN OTHERS THEN
88082        xla_exceptions_pkg.raise_message
88083            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_178');
88084 END AcctLineType_178;
88085 --
88086 
88087 ---------------------------------------
88088 --
88089 -- PRIVATE FUNCTION
88090 --         AcctLineType_179
88091 --
88092 ---------------------------------------
88093 PROCEDURE AcctLineType_179 (
88094   p_application_id        IN NUMBER
88095  ,p_event_id              IN NUMBER
88096  ,p_calculate_acctd_flag  IN VARCHAR2
88097  ,p_calculate_g_l_flag    IN VARCHAR2
88098  ,p_actual_flag           IN OUT VARCHAR2
88099  ,p_balance_type_code     OUT VARCHAR2
88100  ,p_gain_or_loss_ref      OUT VARCHAR2
88101  
88102 --TRANSACTION_ID
88103  , p_source_1            IN NUMBER
88104 --Item Concatenated Segments
88105  , p_source_2            IN VARCHAR2
88106 --Transaction Quantity
88107  , p_source_3            IN NUMBER
88108 --Transaction Unit of Measure Code
88109  , p_source_4            IN VARCHAR2
88110 --Inventory Transaction Type Description
88111  , p_source_5            IN VARCHAR2
88112 --Cost Management Default Account
88113  , p_source_11            IN NUMBER
88114 --DISTRIBUTION_IDENTIFIER
88115  , p_source_84            IN NUMBER
88116 --Distribution Type
88117  , p_source_85            IN VARCHAR2
88118  , p_source_85_meaning    IN VARCHAR2
88119 --Entered Currency Code
88120  , p_source_88            IN VARCHAR2
88121 --Entered Amount
88122  , p_source_91            IN NUMBER
88123 --Currency Conversion Date
88124  , p_source_92            IN DATE
88125 --Currency Conversion Rate
88126  , p_source_93            IN NUMBER
88127 --Currency Conversion Type
88128  , p_source_94            IN VARCHAR2
88129 --Accounted Amount
88130  , p_source_95            IN NUMBER
88131 --Accounting Line Type
88132  , p_source_97            IN NUMBER
88133 )
88134 IS
88135 
88136 l_component_type              VARCHAR2(80);
88137 l_component_code              VARCHAR2(30);
88138 l_component_type_code         VARCHAR2(1);
88139 l_component_appl_id           INTEGER;
88140 l_amb_context_code            VARCHAR2(30);
88141 l_entity_code                 VARCHAR2(30);
88142 l_event_class_code            VARCHAR2(30);
88143 l_ae_header_id                NUMBER;
88144 l_event_type_code             VARCHAR2(30);
88145 l_line_definition_code        VARCHAR2(30);
88146 l_line_definition_owner_code  VARCHAR2(1);
88147 --
88148 -- adr variables
88149 l_segment                     VARCHAR2(30);
88150 l_ccid                        NUMBER;
88151 l_adr_transaction_coa_id      NUMBER;
88152 l_adr_accounting_coa_id       NUMBER;
88153 l_adr_flexfield_segment_code  VARCHAR2(30);
88154 l_adr_flex_value_set_id       NUMBER;
88155 l_adr_value_type_code         VARCHAR2(30);
88156 l_adr_value_combination_id    NUMBER;
88157 l_adr_value_segment_code      VARCHAR2(30);
88158 
88159 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88160 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88161 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88162 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88163 
88164 -- 4262811 Variables ------------------------------------------------------------------------------------------
88165 l_entered_amt_idx             NUMBER;
88166 l_accted_amt_idx              NUMBER;
88167 l_acc_rev_flag                VARCHAR2(1);
88168 l_accrual_line_num            NUMBER;
88169 l_tmp_amt                     NUMBER;
88170 l_acc_rev_natural_side_code   VARCHAR2(1);
88171 
88172 l_num_entries                 NUMBER;
88173 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88174 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88175 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88176 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88177 l_recog_line_1                NUMBER;
88178 l_recog_line_2                NUMBER;
88179 
88180 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88181 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88182 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88183 
88184 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88185 
88186 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88187 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88188 
88189 ---------------------------------------------------------------------------------------------------------------
88190 
88191 
88192 --
88193 -- bulk performance
88194 --
88195 l_balance_type_code           VARCHAR2(1);
88196 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88197 l_log_module                  VARCHAR2(240);
88198 
88199 --
88200 -- Upgrade strategy
88201 --
88202 l_actual_upg_option           VARCHAR2(1);
88203 l_enc_upg_option           VARCHAR2(1);
88204 
88205 --
88206 BEGIN
88207 --
88208 IF g_log_enabled THEN
88209       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_179';
88210 END IF;
88211 --
88212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88213 
88214       trace
88215          (p_msg      => 'BEGIN of AcctLineType_179'
88216          ,p_level    => C_LEVEL_PROCEDURE
88217          ,p_module   => l_log_module);
88218 
88219 END IF;
88220 --
88221 l_component_type             := 'AMB_JLT';
88222 l_component_code             := 'INTERORG_PROFIT_OPM';
88223 l_component_type_code        := 'S';
88224 l_component_appl_id          :=  707;
88225 l_amb_context_code           := 'DEFAULT';
88226 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
88227 l_event_class_code           := 'USER_DEFINE';
88228 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
88229 l_line_definition_owner_code := 'S';
88230 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
88231 --
88232 l_balance_type_code          := 'A';
88233 l_segment                     := NULL;
88234 l_ccid                        := NULL;
88235 l_adr_transaction_coa_id      := NULL;
88236 l_adr_accounting_coa_id       := NULL;
88237 l_adr_flexfield_segment_code  := NULL;
88238 l_adr_flex_value_set_id       := NULL;
88239 l_adr_value_type_code         := NULL;
88240 l_adr_value_combination_id    := NULL;
88241 l_adr_value_segment_code      := NULL;
88242 
88243 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
88244 l_bflow_class_code           := '';    -- 4219869 Business Flow
88245 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
88246 l_budgetary_control_flag     := 'N';
88247 
88248 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
88249 l_bflow_applied_to_amt       := NULL; -- 5132302
88250 l_entered_amt_idx            := NULL;          -- 4262811
88251 l_accted_amt_idx             := NULL;          -- 4262811
88252 l_acc_rev_flag               := NULL;          -- 4262811
88253 l_accrual_line_num           := NULL;          -- 4262811
88254 l_tmp_amt                    := NULL;          -- 4262811
88255 --
88256  
88257 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88258     l_balance_type_code <> 'B' THEN
88259 IF NVL(p_source_97,9E125) =  34
88260  THEN 
88261 
88262    --
88263    XLA_AE_LINES_PKG.SetNewLine;
88264 
88265    p_balance_type_code          := l_balance_type_code;
88266    -- set the flag so later we will know whether the gain loss line needs to be created
88267    
88268    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88269      p_actual_flag :='A';
88270    END IF;
88271 
88272    --
88273    -- bulk performance
88274    --
88275    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88276                                       p_header_num   => 0); -- 4262811
88277    --
88278    -- set accounting line options
88279    --
88280    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88281            p_natural_side_code          => 'D'
88282          , p_gain_or_loss_flag          => 'N'
88283          , p_gl_transfer_mode_code      => 'S'
88284          , p_acct_entry_type_code       => 'A'
88285          , p_switch_side_flag           => 'Y'
88286          , p_merge_duplicate_code       => 'N'
88287          );
88288    --
88289    l_acc_rev_natural_side_code := 'C';  -- 4262811
88290    -- 
88291    --
88292    -- set accounting line type info
88293    --
88294    xla_ae_lines_pkg.SetAcctLineType
88295       (p_component_type             => l_component_type
88296       ,p_event_type_code            => l_event_type_code
88297       ,p_line_definition_owner_code => l_line_definition_owner_code
88298       ,p_line_definition_code       => l_line_definition_code
88299       ,p_accounting_line_code       => l_component_code
88300       ,p_accounting_line_type_code  => l_component_type_code
88301       ,p_accounting_line_appl_id    => l_component_appl_id
88302       ,p_amb_context_code           => l_amb_context_code
88303       ,p_entity_code                => l_entity_code
88304       ,p_event_class_code           => l_event_class_code);
88305    --
88306    -- set accounting class
88307    --
88308    xla_ae_lines_pkg.SetAcctClass(
88309            p_accounting_class_code  => 'INTERORG_PROFIT'
88310          , p_ae_header_id           => l_ae_header_id
88311          );
88312 
88313    --
88314    -- set rounding class
88315    --
88316    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88317                       'INTERORG_PROFIT';
88318 
88319    --
88320    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88321    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88322    --
88323    -- bulk performance
88324    --
88325    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88326 
88327    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88328       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88329 
88330    -- 4955764
88331    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88332       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88333 
88334    -- 4458381 Public Sector Enh
88335    
88336    --
88337    -- set accounting attributes for the line type
88338    --
88339    l_entered_amt_idx := 3;
88340    l_accted_amt_idx  := 8;
88341    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88342    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88343    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
88344    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88345    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
88346    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88347    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
88348    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88349    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
88350    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88351    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
88352    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88353    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
88354    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88355    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
88356    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88357    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
88358 
88359    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88360    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88361 
88362    ---------------------------------------------------------------------------------------------------------------
88363    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88364    ---------------------------------------------------------------------------------------------------------------
88365    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88366 
88367    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88368    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88369 
88370    IF xla_accounting_cache_pkg.GetValueChar
88371          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88372          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88373    AND l_bflow_method_code = 'PRIOR_ENTRY'
88374 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88375    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88376          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88377        )
88378    THEN
88379          xla_ae_lines_pkg.BflowUpgEntry
88380            (p_business_method_code    => l_bflow_method_code
88381            ,p_business_class_code     => l_bflow_class_code
88382            ,p_balance_type            => l_balance_type_code);
88383    ELSE
88384       NULL;
88385 -- No business flow processing for business flow method of NONE.
88386    END IF;
88387 
88388    --
88389    -- call analytical criteria
88390    --
88391    
88392    --
88393    -- call description
88394    --
88395    
88396 xla_ae_lines_pkg.SetLineDescription(
88397    p_ae_header_id => l_ae_header_id
88398   ,p_description  => Description_1 (
88399      p_application_id         => p_application_id
88400    , p_ae_header_id           => l_ae_header_id 
88401 , p_source_1 => p_source_1
88402 , p_source_2 => p_source_2
88403 , p_source_3 => p_source_3
88404 , p_source_4 => p_source_4
88405 , p_source_5 => p_source_5
88406    )
88407 );
88408 
88409 
88410    --
88411    -- call ADRs
88412    -- Bug 4922099
88413    --
88414    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88415         (NVL(l_actual_upg_option, 'N') = 'O') OR
88416         (NVL(l_enc_upg_option, 'N') = 'O')
88417       )
88418    THEN
88419    NULL;
88420    --
88421    --
88422    
88423   l_ccid := AcctDerRule_6(
88424            p_application_id           => p_application_id
88425          , p_ae_header_id             => l_ae_header_id 
88426 , p_source_11 => p_source_11
88427          , x_transaction_coa_id       => l_adr_transaction_coa_id
88428          , x_accounting_coa_id        => l_adr_accounting_coa_id
88429          , x_value_type_code          => l_adr_value_type_code
88430          , p_side                     => 'NA'
88431    );
88432 
88433    xla_ae_lines_pkg.set_ccid(
88434     p_code_combination_id          => l_ccid
88435   , p_value_type_code              => l_adr_value_type_code
88436   , p_transaction_coa_id           => l_adr_transaction_coa_id
88437   , p_accounting_coa_id            => l_adr_accounting_coa_id
88438   , p_adr_code                     => 'CST_DEFAULT'
88439   , p_adr_type_code                => 'S'
88440   , p_component_type               => l_component_type
88441   , p_component_code               => l_component_code
88442   , p_component_type_code          => l_component_type_code
88443   , p_component_appl_id            => l_component_appl_id
88444   , p_amb_context_code             => l_amb_context_code
88445   , p_side                         => 'NA'
88446   );
88447 
88448 
88449    --
88450    --
88451    END IF;
88452    --
88453    -- Bug 4922099
88454    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88455           (NVL(l_enc_upg_option, 'N') = 'O')
88456         ) AND
88457         (l_bflow_method_code = 'PRIOR_ENTRY')
88458       )
88459    THEN
88460       IF
88461       --
88462       1 = 2
88463       --
88464       THEN
88465       xla_accounting_err_pkg.build_message
88466                                     (p_appli_s_name            => 'XLA'
88467                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88468                                     ,p_token_1                 => 'LINE_NUMBER'
88469                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
88470                                     ,p_token_2                 => 'LINE_TYPE_NAME'
88471                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
88472                                                                              l_component_type
88473                                                                             ,l_component_code
88474                                                                             ,l_component_type_code
88475                                                                             ,l_component_appl_id
88476                                                                             ,l_amb_context_code
88477                                                                             ,l_entity_code
88478                                                                             ,l_event_class_code
88479                                                                            )
88480                                     ,p_token_3                 => 'OWNER'
88481                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
88482                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
88483                                                                           ,p_lookup_code    => l_component_type_code
88484                                                                          )
88485                                     ,p_token_4                 => 'PRODUCT_NAME'
88486                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88487                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88488                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88489                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88490                                     ,p_ae_header_id            =>  NULL
88491                                        );
88492 
88493         IF (C_LEVEL_ERROR>= g_log_level) THEN
88494                  trace
88495                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88496                       ,p_level    => C_LEVEL_ERROR
88497                       ,p_module   => l_log_module);
88498         END IF;
88499       END IF;
88500    END IF;
88501    --
88502    --
88503    ------------------------------------------------------------------------------------------------
88504    -- 4219869 Business Flow
88505    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88506    -- Prior Entry.  Currently, the following code is always generated.
88507    ------------------------------------------------------------------------------------------------
88508    XLA_AE_LINES_PKG.ValidateCurrentLine;
88509 
88510    ------------------------------------------------------------------------------------
88511    -- 4219869 Business Flow
88512    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88513    ------------------------------------------------------------------------------------
88514    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88515 
88516    ----------------------------------------------------------------------------------
88517    -- 4219869 Business Flow
88518    -- Update journal entry status -- Need to generate this within IF <condition>
88519    ----------------------------------------------------------------------------------
88520    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88521          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88522          ,p_balance_type_code => l_balance_type_code
88523          );
88524 
88525    -------------------------------------------------------------------------------------------
88526    -- 4262811 - Generate the Accrual Reversal lines
88527    -------------------------------------------------------------------------------------------
88528    BEGIN
88529       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88530                               (g_array_event(p_event_id).array_value_num('header_index'));
88531       IF l_acc_rev_flag IS NULL THEN
88532          l_acc_rev_flag := 'N';
88533       END IF;
88534    EXCEPTION
88535       WHEN OTHERS THEN
88536          l_acc_rev_flag := 'N';
88537    END;
88538    --
88539    IF (l_acc_rev_flag = 'Y') THEN
88540 
88541        -- 4645092  ------------------------------------------------------------------------------
88542        -- To allow MPA report to determine if it should generate report process
88543        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88544        ------------------------------------------------------------------------------------------
88545 
88546        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88547        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88548    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
88549    -- call ADRs
88550    -- Bug 4922099
88551    --
88552    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88553         (NVL(l_actual_upg_option, 'N') = 'O') OR
88554         (NVL(l_enc_upg_option, 'N') = 'O')
88555       )
88556    THEN
88557    NULL;
88558    --
88559    --
88560    
88561   l_ccid := AcctDerRule_6(
88562            p_application_id           => p_application_id
88563          , p_ae_header_id             => l_ae_header_id 
88564 , p_source_11 => p_source_11
88565          , x_transaction_coa_id       => l_adr_transaction_coa_id
88566          , x_accounting_coa_id        => l_adr_accounting_coa_id
88567          , x_value_type_code          => l_adr_value_type_code
88568          , p_side                     => 'NA'
88569    );
88570 
88571    xla_ae_lines_pkg.set_ccid(
88572     p_code_combination_id          => l_ccid
88573   , p_value_type_code              => l_adr_value_type_code
88574   , p_transaction_coa_id           => l_adr_transaction_coa_id
88575   , p_accounting_coa_id            => l_adr_accounting_coa_id
88576   , p_adr_code                     => 'CST_DEFAULT'
88577   , p_adr_type_code                => 'S'
88578   , p_component_type               => l_component_type
88579   , p_component_code               => l_component_code
88580   , p_component_type_code          => l_component_type_code
88581   , p_component_appl_id            => l_component_appl_id
88582   , p_amb_context_code             => l_amb_context_code
88583   , p_side                         => 'NA'
88584   );
88585 
88586 
88587    --
88588    --
88589    END IF;
88590 
88591        --
88592        -- Update the line information that should be overwritten
88593        --
88594        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88595                                          p_header_num   => 1);
88596        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
88597 
88598        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88599 
88600        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
88601           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88602        END IF;
88603 
88604       --
88605       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88606       --
88607       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88608           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
88609       ELSE
88610           ---------------------------------------------------------------------------------------------------
88611           -- 4262811a Switch Sign
88612           ---------------------------------------------------------------------------------------------------
88613           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
88614           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88615                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88616           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88617                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88618           -- 5132302
88619           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88620                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88621 
88622       END IF;
88623 
88624       -- 4955764
88625       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88626       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88627 
88628 
88629       XLA_AE_LINES_PKG.ValidateCurrentLine;
88630       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88631 
88632       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88633                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88634                ,p_balance_type_code => l_balance_type_code);
88635 
88636    END IF;
88637 
88638    -----------------------------------------------------------------------------------------
88639    -- 4262811 Multiperiod Accounting
88640    -----------------------------------------------------------------------------------------
88641      -- No MPA option is assigned.
88642 
88643 
88644 END IF;
88645 END IF;
88646 --
88647 
88648 --
88649 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88650    trace
88651       (p_msg      => 'END of AcctLineType_179'
88652       ,p_level    => C_LEVEL_PROCEDURE
88653       ,p_module   => l_log_module);
88654 END IF;
88655 --
88656 EXCEPTION
88657   WHEN xla_exceptions_pkg.application_exception THEN
88658       RAISE;
88659   WHEN OTHERS THEN
88660        xla_exceptions_pkg.raise_message
88661            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_179');
88662 END AcctLineType_179;
88663 --
88664 
88665 ---------------------------------------
88666 --
88667 -- PRIVATE FUNCTION
88668 --         AcctLineType_180
88669 --
88670 ---------------------------------------
88671 PROCEDURE AcctLineType_180 (
88672   p_application_id        IN NUMBER
88673  ,p_event_id              IN NUMBER
88674  ,p_calculate_acctd_flag  IN VARCHAR2
88675  ,p_calculate_g_l_flag    IN VARCHAR2
88676  ,p_actual_flag           IN OUT VARCHAR2
88677  ,p_balance_type_code     OUT VARCHAR2
88678  ,p_gain_or_loss_ref      OUT VARCHAR2
88679  
88680 --TRANSACTION_ID
88681  , p_source_1            IN NUMBER
88682 --Item Concatenated Segments
88683  , p_source_2            IN VARCHAR2
88684 --Transaction Quantity
88685  , p_source_3            IN NUMBER
88686 --Transaction Unit of Measure Code
88687  , p_source_4            IN VARCHAR2
88688 --Inventory Transaction Type Description
88689  , p_source_5            IN VARCHAR2
88690 --Cost Management Default Account
88691  , p_source_11            IN NUMBER
88692 --DISTRIBUTION_IDENTIFIER
88693  , p_source_84            IN NUMBER
88694 --Distribution Type
88695  , p_source_85            IN VARCHAR2
88696  , p_source_85_meaning    IN VARCHAR2
88697 --Entered Currency Code
88698  , p_source_88            IN VARCHAR2
88699 --Entered Amount
88700  , p_source_91            IN NUMBER
88701 --Currency Conversion Date
88702  , p_source_92            IN DATE
88703 --Currency Conversion Rate
88704  , p_source_93            IN NUMBER
88705 --Currency Conversion Type
88706  , p_source_94            IN VARCHAR2
88707 --Accounted Amount
88708  , p_source_95            IN NUMBER
88709 --Accounting Line Type
88710  , p_source_97            IN NUMBER
88711 )
88712 IS
88713 
88714 l_component_type              VARCHAR2(80);
88715 l_component_code              VARCHAR2(30);
88716 l_component_type_code         VARCHAR2(1);
88717 l_component_appl_id           INTEGER;
88718 l_amb_context_code            VARCHAR2(30);
88719 l_entity_code                 VARCHAR2(30);
88720 l_event_class_code            VARCHAR2(30);
88721 l_ae_header_id                NUMBER;
88722 l_event_type_code             VARCHAR2(30);
88723 l_line_definition_code        VARCHAR2(30);
88724 l_line_definition_owner_code  VARCHAR2(1);
88725 --
88726 -- adr variables
88727 l_segment                     VARCHAR2(30);
88728 l_ccid                        NUMBER;
88729 l_adr_transaction_coa_id      NUMBER;
88730 l_adr_accounting_coa_id       NUMBER;
88731 l_adr_flexfield_segment_code  VARCHAR2(30);
88732 l_adr_flex_value_set_id       NUMBER;
88733 l_adr_value_type_code         VARCHAR2(30);
88734 l_adr_value_combination_id    NUMBER;
88735 l_adr_value_segment_code      VARCHAR2(30);
88736 
88737 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
88738 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
88739 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
88740 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
88741 
88742 -- 4262811 Variables ------------------------------------------------------------------------------------------
88743 l_entered_amt_idx             NUMBER;
88744 l_accted_amt_idx              NUMBER;
88745 l_acc_rev_flag                VARCHAR2(1);
88746 l_accrual_line_num            NUMBER;
88747 l_tmp_amt                     NUMBER;
88748 l_acc_rev_natural_side_code   VARCHAR2(1);
88749 
88750 l_num_entries                 NUMBER;
88751 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
88752 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
88753 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
88754 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
88755 l_recog_line_1                NUMBER;
88756 l_recog_line_2                NUMBER;
88757 
88758 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
88759 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
88760 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
88761 
88762 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88763 
88764 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
88765 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
88766 
88767 ---------------------------------------------------------------------------------------------------------------
88768 
88769 
88770 --
88771 -- bulk performance
88772 --
88773 l_balance_type_code           VARCHAR2(1);
88774 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
88775 l_log_module                  VARCHAR2(240);
88776 
88777 --
88778 -- Upgrade strategy
88779 --
88780 l_actual_upg_option           VARCHAR2(1);
88781 l_enc_upg_option           VARCHAR2(1);
88782 
88783 --
88784 BEGIN
88785 --
88786 IF g_log_enabled THEN
88787       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_180';
88788 END IF;
88789 --
88790 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88791 
88792       trace
88793          (p_msg      => 'BEGIN of AcctLineType_180'
88794          ,p_level    => C_LEVEL_PROCEDURE
88795          ,p_module   => l_log_module);
88796 
88797 END IF;
88798 --
88799 l_component_type             := 'AMB_JLT';
88800 l_component_code             := 'INTERORG_PROFIT_OPM';
88801 l_component_type_code        := 'S';
88802 l_component_appl_id          :=  707;
88803 l_amb_context_code           := 'DEFAULT';
88804 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
88805 l_event_class_code           := 'INT_ORDER_TO_EXP';
88806 l_event_type_code            := 'EXP_REQ_RCPT_TP';
88807 l_line_definition_owner_code := 'S';
88808 l_line_definition_code       := 'PI_EXP_REQ_RCPT_TP';
88809 --
88810 l_balance_type_code          := 'A';
88811 l_segment                     := NULL;
88812 l_ccid                        := NULL;
88813 l_adr_transaction_coa_id      := NULL;
88814 l_adr_accounting_coa_id       := NULL;
88815 l_adr_flexfield_segment_code  := NULL;
88816 l_adr_flex_value_set_id       := NULL;
88817 l_adr_value_type_code         := NULL;
88818 l_adr_value_combination_id    := NULL;
88819 l_adr_value_segment_code      := NULL;
88820 
88821 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
88822 l_bflow_class_code           := '';    -- 4219869 Business Flow
88823 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
88824 l_budgetary_control_flag     := 'N';
88825 
88826 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
88827 l_bflow_applied_to_amt       := NULL; -- 5132302
88828 l_entered_amt_idx            := NULL;          -- 4262811
88829 l_accted_amt_idx             := NULL;          -- 4262811
88830 l_acc_rev_flag               := NULL;          -- 4262811
88831 l_accrual_line_num           := NULL;          -- 4262811
88832 l_tmp_amt                    := NULL;          -- 4262811
88833 --
88834  
88835 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88836     l_balance_type_code <> 'B' THEN
88837 IF NVL(p_source_97,9E125) =  34
88838  THEN 
88839 
88840    --
88841    XLA_AE_LINES_PKG.SetNewLine;
88842 
88843    p_balance_type_code          := l_balance_type_code;
88844    -- set the flag so later we will know whether the gain loss line needs to be created
88845    
88846    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88847      p_actual_flag :='A';
88848    END IF;
88849 
88850    --
88851    -- bulk performance
88852    --
88853    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88854                                       p_header_num   => 0); -- 4262811
88855    --
88856    -- set accounting line options
88857    --
88858    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88859            p_natural_side_code          => 'D'
88860          , p_gain_or_loss_flag          => 'N'
88861          , p_gl_transfer_mode_code      => 'S'
88862          , p_acct_entry_type_code       => 'A'
88863          , p_switch_side_flag           => 'Y'
88864          , p_merge_duplicate_code       => 'N'
88865          );
88866    --
88867    l_acc_rev_natural_side_code := 'C';  -- 4262811
88868    -- 
88869    --
88870    -- set accounting line type info
88871    --
88872    xla_ae_lines_pkg.SetAcctLineType
88873       (p_component_type             => l_component_type
88874       ,p_event_type_code            => l_event_type_code
88875       ,p_line_definition_owner_code => l_line_definition_owner_code
88876       ,p_line_definition_code       => l_line_definition_code
88877       ,p_accounting_line_code       => l_component_code
88878       ,p_accounting_line_type_code  => l_component_type_code
88879       ,p_accounting_line_appl_id    => l_component_appl_id
88880       ,p_amb_context_code           => l_amb_context_code
88881       ,p_entity_code                => l_entity_code
88882       ,p_event_class_code           => l_event_class_code);
88883    --
88884    -- set accounting class
88885    --
88886    xla_ae_lines_pkg.SetAcctClass(
88887            p_accounting_class_code  => 'INTERORG_PROFIT'
88888          , p_ae_header_id           => l_ae_header_id
88889          );
88890 
88891    --
88892    -- set rounding class
88893    --
88894    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88895                       'INTERORG_PROFIT';
88896 
88897    --
88898    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88899    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88900    --
88901    -- bulk performance
88902    --
88903    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88904 
88905    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88906       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88907 
88908    -- 4955764
88909    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88910       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88911 
88912    -- 4458381 Public Sector Enh
88913    
88914    --
88915    -- set accounting attributes for the line type
88916    --
88917    l_entered_amt_idx := 3;
88918    l_accted_amt_idx  := 8;
88919    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
88920    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88921    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
88922    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88923    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
88924    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88925    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
88926    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88927    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
88928    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88929    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
88930    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88931    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
88932    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88933    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
88934    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88935    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
88936 
88937    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88938    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88939 
88940    ---------------------------------------------------------------------------------------------------------------
88941    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88942    ---------------------------------------------------------------------------------------------------------------
88943    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88944 
88945    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88946    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88947 
88948    IF xla_accounting_cache_pkg.GetValueChar
88949          (p_source_code         => 'LEDGER_CATEGORY_CODE'
88950          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88951    AND l_bflow_method_code = 'PRIOR_ENTRY'
88952 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88953    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88954          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88955        )
88956    THEN
88957          xla_ae_lines_pkg.BflowUpgEntry
88958            (p_business_method_code    => l_bflow_method_code
88959            ,p_business_class_code     => l_bflow_class_code
88960            ,p_balance_type            => l_balance_type_code);
88961    ELSE
88962       NULL;
88963 -- No business flow processing for business flow method of NONE.
88964    END IF;
88965 
88966    --
88967    -- call analytical criteria
88968    --
88969    
88970    --
88971    -- call description
88972    --
88973    
88974 xla_ae_lines_pkg.SetLineDescription(
88975    p_ae_header_id => l_ae_header_id
88976   ,p_description  => Description_1 (
88977      p_application_id         => p_application_id
88978    , p_ae_header_id           => l_ae_header_id 
88979 , p_source_1 => p_source_1
88980 , p_source_2 => p_source_2
88981 , p_source_3 => p_source_3
88982 , p_source_4 => p_source_4
88983 , p_source_5 => p_source_5
88984    )
88985 );
88986 
88987 
88988    --
88989    -- call ADRs
88990    -- Bug 4922099
88991    --
88992    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88993         (NVL(l_actual_upg_option, 'N') = 'O') OR
88994         (NVL(l_enc_upg_option, 'N') = 'O')
88995       )
88996    THEN
88997    NULL;
88998    --
88999    --
89000    
89001   l_ccid := AcctDerRule_6(
89002            p_application_id           => p_application_id
89003          , p_ae_header_id             => l_ae_header_id 
89004 , p_source_11 => p_source_11
89005          , x_transaction_coa_id       => l_adr_transaction_coa_id
89006          , x_accounting_coa_id        => l_adr_accounting_coa_id
89007          , x_value_type_code          => l_adr_value_type_code
89008          , p_side                     => 'NA'
89009    );
89010 
89011    xla_ae_lines_pkg.set_ccid(
89012     p_code_combination_id          => l_ccid
89013   , p_value_type_code              => l_adr_value_type_code
89014   , p_transaction_coa_id           => l_adr_transaction_coa_id
89015   , p_accounting_coa_id            => l_adr_accounting_coa_id
89016   , p_adr_code                     => 'CST_DEFAULT'
89017   , p_adr_type_code                => 'S'
89018   , p_component_type               => l_component_type
89019   , p_component_code               => l_component_code
89020   , p_component_type_code          => l_component_type_code
89021   , p_component_appl_id            => l_component_appl_id
89022   , p_amb_context_code             => l_amb_context_code
89023   , p_side                         => 'NA'
89024   );
89025 
89026 
89027    --
89028    --
89029    END IF;
89030    --
89031    -- Bug 4922099
89032    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89033           (NVL(l_enc_upg_option, 'N') = 'O')
89034         ) AND
89035         (l_bflow_method_code = 'PRIOR_ENTRY')
89036       )
89037    THEN
89038       IF
89039       --
89040       1 = 2
89041       --
89042       THEN
89043       xla_accounting_err_pkg.build_message
89044                                     (p_appli_s_name            => 'XLA'
89045                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89046                                     ,p_token_1                 => 'LINE_NUMBER'
89047                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
89048                                     ,p_token_2                 => 'LINE_TYPE_NAME'
89049                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
89050                                                                              l_component_type
89051                                                                             ,l_component_code
89052                                                                             ,l_component_type_code
89053                                                                             ,l_component_appl_id
89054                                                                             ,l_amb_context_code
89055                                                                             ,l_entity_code
89056                                                                             ,l_event_class_code
89057                                                                            )
89058                                     ,p_token_3                 => 'OWNER'
89059                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
89060                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
89061                                                                           ,p_lookup_code    => l_component_type_code
89062                                                                          )
89063                                     ,p_token_4                 => 'PRODUCT_NAME'
89064                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89065                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89066                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89067                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89068                                     ,p_ae_header_id            =>  NULL
89069                                        );
89070 
89071         IF (C_LEVEL_ERROR>= g_log_level) THEN
89072                  trace
89073                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89074                       ,p_level    => C_LEVEL_ERROR
89075                       ,p_module   => l_log_module);
89076         END IF;
89077       END IF;
89078    END IF;
89079    --
89080    --
89081    ------------------------------------------------------------------------------------------------
89082    -- 4219869 Business Flow
89083    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89084    -- Prior Entry.  Currently, the following code is always generated.
89085    ------------------------------------------------------------------------------------------------
89086    XLA_AE_LINES_PKG.ValidateCurrentLine;
89087 
89088    ------------------------------------------------------------------------------------
89089    -- 4219869 Business Flow
89090    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89091    ------------------------------------------------------------------------------------
89092    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89093 
89094    ----------------------------------------------------------------------------------
89095    -- 4219869 Business Flow
89096    -- Update journal entry status -- Need to generate this within IF <condition>
89097    ----------------------------------------------------------------------------------
89098    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89099          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89100          ,p_balance_type_code => l_balance_type_code
89101          );
89102 
89103    -------------------------------------------------------------------------------------------
89104    -- 4262811 - Generate the Accrual Reversal lines
89105    -------------------------------------------------------------------------------------------
89106    BEGIN
89107       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89108                               (g_array_event(p_event_id).array_value_num('header_index'));
89109       IF l_acc_rev_flag IS NULL THEN
89110          l_acc_rev_flag := 'N';
89111       END IF;
89112    EXCEPTION
89113       WHEN OTHERS THEN
89114          l_acc_rev_flag := 'N';
89115    END;
89116    --
89117    IF (l_acc_rev_flag = 'Y') THEN
89118 
89119        -- 4645092  ------------------------------------------------------------------------------
89120        -- To allow MPA report to determine if it should generate report process
89121        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89122        ------------------------------------------------------------------------------------------
89123 
89124        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89125        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89126    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89127    -- call ADRs
89128    -- Bug 4922099
89129    --
89130    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89131         (NVL(l_actual_upg_option, 'N') = 'O') OR
89132         (NVL(l_enc_upg_option, 'N') = 'O')
89133       )
89134    THEN
89135    NULL;
89136    --
89137    --
89138    
89139   l_ccid := AcctDerRule_6(
89140            p_application_id           => p_application_id
89141          , p_ae_header_id             => l_ae_header_id 
89142 , p_source_11 => p_source_11
89143          , x_transaction_coa_id       => l_adr_transaction_coa_id
89144          , x_accounting_coa_id        => l_adr_accounting_coa_id
89145          , x_value_type_code          => l_adr_value_type_code
89146          , p_side                     => 'NA'
89147    );
89148 
89149    xla_ae_lines_pkg.set_ccid(
89150     p_code_combination_id          => l_ccid
89151   , p_value_type_code              => l_adr_value_type_code
89152   , p_transaction_coa_id           => l_adr_transaction_coa_id
89153   , p_accounting_coa_id            => l_adr_accounting_coa_id
89154   , p_adr_code                     => 'CST_DEFAULT'
89155   , p_adr_type_code                => 'S'
89156   , p_component_type               => l_component_type
89157   , p_component_code               => l_component_code
89158   , p_component_type_code          => l_component_type_code
89159   , p_component_appl_id            => l_component_appl_id
89160   , p_amb_context_code             => l_amb_context_code
89161   , p_side                         => 'NA'
89162   );
89163 
89164 
89165    --
89166    --
89167    END IF;
89168 
89169        --
89170        -- Update the line information that should be overwritten
89171        --
89172        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89173                                          p_header_num   => 1);
89174        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89175 
89176        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89177 
89178        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89179           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89180        END IF;
89181 
89182       --
89183       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89184       --
89185       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89186           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89187       ELSE
89188           ---------------------------------------------------------------------------------------------------
89189           -- 4262811a Switch Sign
89190           ---------------------------------------------------------------------------------------------------
89191           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89192           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89193                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89194           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89195                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89196           -- 5132302
89197           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89198                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89199 
89200       END IF;
89201 
89202       -- 4955764
89203       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89204       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89205 
89206 
89207       XLA_AE_LINES_PKG.ValidateCurrentLine;
89208       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89209 
89210       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89211                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89212                ,p_balance_type_code => l_balance_type_code);
89213 
89214    END IF;
89215 
89216    -----------------------------------------------------------------------------------------
89217    -- 4262811 Multiperiod Accounting
89218    -----------------------------------------------------------------------------------------
89219      -- No MPA option is assigned.
89220 
89221 
89222 END IF;
89223 END IF;
89224 --
89225 
89226 --
89227 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89228    trace
89229       (p_msg      => 'END of AcctLineType_180'
89230       ,p_level    => C_LEVEL_PROCEDURE
89231       ,p_module   => l_log_module);
89232 END IF;
89233 --
89234 EXCEPTION
89235   WHEN xla_exceptions_pkg.application_exception THEN
89236       RAISE;
89237   WHEN OTHERS THEN
89238        xla_exceptions_pkg.raise_message
89239            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_180');
89240 END AcctLineType_180;
89241 --
89242 
89243 ---------------------------------------
89244 --
89245 -- PRIVATE FUNCTION
89246 --         AcctLineType_181
89247 --
89248 ---------------------------------------
89249 PROCEDURE AcctLineType_181 (
89250   p_application_id        IN NUMBER
89251  ,p_event_id              IN NUMBER
89252  ,p_calculate_acctd_flag  IN VARCHAR2
89253  ,p_calculate_g_l_flag    IN VARCHAR2
89254  ,p_actual_flag           IN OUT VARCHAR2
89255  ,p_balance_type_code     OUT VARCHAR2
89256  ,p_gain_or_loss_ref      OUT VARCHAR2
89257  
89258 --TRANSACTION_ID
89259  , p_source_1            IN NUMBER
89260 --Item Concatenated Segments
89261  , p_source_2            IN VARCHAR2
89262 --Transaction Quantity
89263  , p_source_3            IN NUMBER
89264 --Transaction Unit of Measure Code
89265  , p_source_4            IN VARCHAR2
89266 --Inventory Transaction Type Description
89267  , p_source_5            IN VARCHAR2
89268 --Cost Management Default Account
89269  , p_source_11            IN NUMBER
89270 --DISTRIBUTION_IDENTIFIER
89271  , p_source_84            IN NUMBER
89272 --Distribution Type
89273  , p_source_85            IN VARCHAR2
89274  , p_source_85_meaning    IN VARCHAR2
89275 --Entered Currency Code
89276  , p_source_88            IN VARCHAR2
89277 --Entered Amount
89278  , p_source_91            IN NUMBER
89279 --Currency Conversion Date
89280  , p_source_92            IN DATE
89281 --Currency Conversion Rate
89282  , p_source_93            IN NUMBER
89283 --Currency Conversion Type
89284  , p_source_94            IN VARCHAR2
89285 --Accounted Amount
89286  , p_source_95            IN NUMBER
89287 --Accounting Line Type
89288  , p_source_97            IN NUMBER
89289 )
89290 IS
89291 
89292 l_component_type              VARCHAR2(80);
89293 l_component_code              VARCHAR2(30);
89294 l_component_type_code         VARCHAR2(1);
89295 l_component_appl_id           INTEGER;
89296 l_amb_context_code            VARCHAR2(30);
89297 l_entity_code                 VARCHAR2(30);
89298 l_event_class_code            VARCHAR2(30);
89299 l_ae_header_id                NUMBER;
89300 l_event_type_code             VARCHAR2(30);
89301 l_line_definition_code        VARCHAR2(30);
89302 l_line_definition_owner_code  VARCHAR2(1);
89303 --
89304 -- adr variables
89305 l_segment                     VARCHAR2(30);
89306 l_ccid                        NUMBER;
89307 l_adr_transaction_coa_id      NUMBER;
89308 l_adr_accounting_coa_id       NUMBER;
89309 l_adr_flexfield_segment_code  VARCHAR2(30);
89310 l_adr_flex_value_set_id       NUMBER;
89311 l_adr_value_type_code         VARCHAR2(30);
89312 l_adr_value_combination_id    NUMBER;
89313 l_adr_value_segment_code      VARCHAR2(30);
89314 
89315 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
89316 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
89317 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
89318 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
89319 
89320 -- 4262811 Variables ------------------------------------------------------------------------------------------
89321 l_entered_amt_idx             NUMBER;
89322 l_accted_amt_idx              NUMBER;
89323 l_acc_rev_flag                VARCHAR2(1);
89324 l_accrual_line_num            NUMBER;
89325 l_tmp_amt                     NUMBER;
89326 l_acc_rev_natural_side_code   VARCHAR2(1);
89327 
89328 l_num_entries                 NUMBER;
89329 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
89330 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
89331 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
89332 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
89333 l_recog_line_1                NUMBER;
89334 l_recog_line_2                NUMBER;
89335 
89336 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
89337 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
89338 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
89339 
89340 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89341 
89342 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
89343 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
89344 
89345 ---------------------------------------------------------------------------------------------------------------
89346 
89347 
89348 --
89349 -- bulk performance
89350 --
89351 l_balance_type_code           VARCHAR2(1);
89352 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
89353 l_log_module                  VARCHAR2(240);
89354 
89355 --
89356 -- Upgrade strategy
89357 --
89358 l_actual_upg_option           VARCHAR2(1);
89359 l_enc_upg_option           VARCHAR2(1);
89360 
89361 --
89362 BEGIN
89363 --
89364 IF g_log_enabled THEN
89365       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_181';
89366 END IF;
89367 --
89368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89369 
89370       trace
89371          (p_msg      => 'BEGIN of AcctLineType_181'
89372          ,p_level    => C_LEVEL_PROCEDURE
89373          ,p_module   => l_log_module);
89374 
89375 END IF;
89376 --
89377 l_component_type             := 'AMB_JLT';
89378 l_component_code             := 'INTERORG_PROFIT_OPM';
89379 l_component_type_code        := 'S';
89380 l_component_appl_id          :=  707;
89381 l_amb_context_code           := 'DEFAULT';
89382 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
89383 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
89384 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
89385 l_line_definition_owner_code := 'S';
89386 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
89387 --
89388 l_balance_type_code          := 'A';
89389 l_segment                     := NULL;
89390 l_ccid                        := NULL;
89391 l_adr_transaction_coa_id      := NULL;
89392 l_adr_accounting_coa_id       := NULL;
89393 l_adr_flexfield_segment_code  := NULL;
89394 l_adr_flex_value_set_id       := NULL;
89395 l_adr_value_type_code         := NULL;
89396 l_adr_value_combination_id    := NULL;
89397 l_adr_value_segment_code      := NULL;
89398 
89399 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89400 l_bflow_class_code           := '';    -- 4219869 Business Flow
89401 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89402 l_budgetary_control_flag     := 'N';
89403 
89404 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89405 l_bflow_applied_to_amt       := NULL; -- 5132302
89406 l_entered_amt_idx            := NULL;          -- 4262811
89407 l_accted_amt_idx             := NULL;          -- 4262811
89408 l_acc_rev_flag               := NULL;          -- 4262811
89409 l_accrual_line_num           := NULL;          -- 4262811
89410 l_tmp_amt                    := NULL;          -- 4262811
89411 --
89412  
89413 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89414     l_balance_type_code <> 'B' THEN
89415 IF NVL(p_source_97,9E125) =  34
89416  THEN 
89417 
89418    --
89419    XLA_AE_LINES_PKG.SetNewLine;
89420 
89421    p_balance_type_code          := l_balance_type_code;
89422    -- set the flag so later we will know whether the gain loss line needs to be created
89423    
89424    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89425      p_actual_flag :='A';
89426    END IF;
89427 
89428    --
89429    -- bulk performance
89430    --
89431    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89432                                       p_header_num   => 0); -- 4262811
89433    --
89434    -- set accounting line options
89435    --
89436    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89437            p_natural_side_code          => 'D'
89438          , p_gain_or_loss_flag          => 'N'
89439          , p_gl_transfer_mode_code      => 'S'
89440          , p_acct_entry_type_code       => 'A'
89441          , p_switch_side_flag           => 'Y'
89442          , p_merge_duplicate_code       => 'N'
89443          );
89444    --
89445    l_acc_rev_natural_side_code := 'C';  -- 4262811
89446    -- 
89447    --
89448    -- set accounting line type info
89449    --
89450    xla_ae_lines_pkg.SetAcctLineType
89451       (p_component_type             => l_component_type
89452       ,p_event_type_code            => l_event_type_code
89453       ,p_line_definition_owner_code => l_line_definition_owner_code
89454       ,p_line_definition_code       => l_line_definition_code
89455       ,p_accounting_line_code       => l_component_code
89456       ,p_accounting_line_type_code  => l_component_type_code
89457       ,p_accounting_line_appl_id    => l_component_appl_id
89458       ,p_amb_context_code           => l_amb_context_code
89459       ,p_entity_code                => l_entity_code
89460       ,p_event_class_code           => l_event_class_code);
89461    --
89462    -- set accounting class
89463    --
89464    xla_ae_lines_pkg.SetAcctClass(
89465            p_accounting_class_code  => 'INTERORG_PROFIT'
89466          , p_ae_header_id           => l_ae_header_id
89467          );
89468 
89469    --
89470    -- set rounding class
89471    --
89472    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89473                       'INTERORG_PROFIT';
89474 
89475    --
89476    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89477    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89478    --
89479    -- bulk performance
89480    --
89481    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89482 
89483    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89484       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89485 
89486    -- 4955764
89487    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89488       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89489 
89490    -- 4458381 Public Sector Enh
89491    
89492    --
89493    -- set accounting attributes for the line type
89494    --
89495    l_entered_amt_idx := 3;
89496    l_accted_amt_idx  := 8;
89497    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
89498    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89499    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
89500    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89501    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
89502    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89503    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
89504    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89505    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
89506    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89507    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
89508    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89509    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
89510    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89511    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
89512    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89513    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
89514 
89515    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89516    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89517 
89518    ---------------------------------------------------------------------------------------------------------------
89519    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89520    ---------------------------------------------------------------------------------------------------------------
89521    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89522 
89523    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89524    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89525 
89526    IF xla_accounting_cache_pkg.GetValueChar
89527          (p_source_code         => 'LEDGER_CATEGORY_CODE'
89528          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89529    AND l_bflow_method_code = 'PRIOR_ENTRY'
89530 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89531    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89532          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89533        )
89534    THEN
89535          xla_ae_lines_pkg.BflowUpgEntry
89536            (p_business_method_code    => l_bflow_method_code
89537            ,p_business_class_code     => l_bflow_class_code
89538            ,p_balance_type            => l_balance_type_code);
89539    ELSE
89540       NULL;
89541 -- No business flow processing for business flow method of NONE.
89542    END IF;
89543 
89544    --
89545    -- call analytical criteria
89546    --
89547    
89548    --
89549    -- call description
89550    --
89551    
89552 xla_ae_lines_pkg.SetLineDescription(
89553    p_ae_header_id => l_ae_header_id
89554   ,p_description  => Description_1 (
89555      p_application_id         => p_application_id
89556    , p_ae_header_id           => l_ae_header_id 
89557 , p_source_1 => p_source_1
89558 , p_source_2 => p_source_2
89559 , p_source_3 => p_source_3
89560 , p_source_4 => p_source_4
89561 , p_source_5 => p_source_5
89562    )
89563 );
89564 
89565 
89566    --
89567    -- call ADRs
89568    -- Bug 4922099
89569    --
89570    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89571         (NVL(l_actual_upg_option, 'N') = 'O') OR
89572         (NVL(l_enc_upg_option, 'N') = 'O')
89573       )
89574    THEN
89575    NULL;
89576    --
89577    --
89578    
89579   l_ccid := AcctDerRule_6(
89580            p_application_id           => p_application_id
89581          , p_ae_header_id             => l_ae_header_id 
89582 , p_source_11 => p_source_11
89583          , x_transaction_coa_id       => l_adr_transaction_coa_id
89584          , x_accounting_coa_id        => l_adr_accounting_coa_id
89585          , x_value_type_code          => l_adr_value_type_code
89586          , p_side                     => 'NA'
89587    );
89588 
89589    xla_ae_lines_pkg.set_ccid(
89590     p_code_combination_id          => l_ccid
89591   , p_value_type_code              => l_adr_value_type_code
89592   , p_transaction_coa_id           => l_adr_transaction_coa_id
89593   , p_accounting_coa_id            => l_adr_accounting_coa_id
89594   , p_adr_code                     => 'CST_DEFAULT'
89595   , p_adr_type_code                => 'S'
89596   , p_component_type               => l_component_type
89597   , p_component_code               => l_component_code
89598   , p_component_type_code          => l_component_type_code
89599   , p_component_appl_id            => l_component_appl_id
89600   , p_amb_context_code             => l_amb_context_code
89601   , p_side                         => 'NA'
89602   );
89603 
89604 
89605    --
89606    --
89607    END IF;
89608    --
89609    -- Bug 4922099
89610    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89611           (NVL(l_enc_upg_option, 'N') = 'O')
89612         ) AND
89613         (l_bflow_method_code = 'PRIOR_ENTRY')
89614       )
89615    THEN
89616       IF
89617       --
89618       1 = 2
89619       --
89620       THEN
89621       xla_accounting_err_pkg.build_message
89622                                     (p_appli_s_name            => 'XLA'
89623                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89624                                     ,p_token_1                 => 'LINE_NUMBER'
89625                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
89626                                     ,p_token_2                 => 'LINE_TYPE_NAME'
89627                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
89628                                                                              l_component_type
89629                                                                             ,l_component_code
89630                                                                             ,l_component_type_code
89631                                                                             ,l_component_appl_id
89632                                                                             ,l_amb_context_code
89633                                                                             ,l_entity_code
89634                                                                             ,l_event_class_code
89635                                                                            )
89636                                     ,p_token_3                 => 'OWNER'
89637                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
89638                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
89639                                                                           ,p_lookup_code    => l_component_type_code
89640                                                                          )
89641                                     ,p_token_4                 => 'PRODUCT_NAME'
89642                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89643                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89644                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89645                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89646                                     ,p_ae_header_id            =>  NULL
89647                                        );
89648 
89649         IF (C_LEVEL_ERROR>= g_log_level) THEN
89650                  trace
89651                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89652                       ,p_level    => C_LEVEL_ERROR
89653                       ,p_module   => l_log_module);
89654         END IF;
89655       END IF;
89656    END IF;
89657    --
89658    --
89659    ------------------------------------------------------------------------------------------------
89660    -- 4219869 Business Flow
89661    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89662    -- Prior Entry.  Currently, the following code is always generated.
89663    ------------------------------------------------------------------------------------------------
89664    XLA_AE_LINES_PKG.ValidateCurrentLine;
89665 
89666    ------------------------------------------------------------------------------------
89667    -- 4219869 Business Flow
89668    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89669    ------------------------------------------------------------------------------------
89670    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89671 
89672    ----------------------------------------------------------------------------------
89673    -- 4219869 Business Flow
89674    -- Update journal entry status -- Need to generate this within IF <condition>
89675    ----------------------------------------------------------------------------------
89676    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89677          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89678          ,p_balance_type_code => l_balance_type_code
89679          );
89680 
89681    -------------------------------------------------------------------------------------------
89682    -- 4262811 - Generate the Accrual Reversal lines
89683    -------------------------------------------------------------------------------------------
89684    BEGIN
89685       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89686                               (g_array_event(p_event_id).array_value_num('header_index'));
89687       IF l_acc_rev_flag IS NULL THEN
89688          l_acc_rev_flag := 'N';
89689       END IF;
89690    EXCEPTION
89691       WHEN OTHERS THEN
89692          l_acc_rev_flag := 'N';
89693    END;
89694    --
89695    IF (l_acc_rev_flag = 'Y') THEN
89696 
89697        -- 4645092  ------------------------------------------------------------------------------
89698        -- To allow MPA report to determine if it should generate report process
89699        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89700        ------------------------------------------------------------------------------------------
89701 
89702        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89703        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89704    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
89705    -- call ADRs
89706    -- Bug 4922099
89707    --
89708    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89709         (NVL(l_actual_upg_option, 'N') = 'O') OR
89710         (NVL(l_enc_upg_option, 'N') = 'O')
89711       )
89712    THEN
89713    NULL;
89714    --
89715    --
89716    
89717   l_ccid := AcctDerRule_6(
89718            p_application_id           => p_application_id
89719          , p_ae_header_id             => l_ae_header_id 
89720 , p_source_11 => p_source_11
89721          , x_transaction_coa_id       => l_adr_transaction_coa_id
89722          , x_accounting_coa_id        => l_adr_accounting_coa_id
89723          , x_value_type_code          => l_adr_value_type_code
89724          , p_side                     => 'NA'
89725    );
89726 
89727    xla_ae_lines_pkg.set_ccid(
89728     p_code_combination_id          => l_ccid
89729   , p_value_type_code              => l_adr_value_type_code
89730   , p_transaction_coa_id           => l_adr_transaction_coa_id
89731   , p_accounting_coa_id            => l_adr_accounting_coa_id
89732   , p_adr_code                     => 'CST_DEFAULT'
89733   , p_adr_type_code                => 'S'
89734   , p_component_type               => l_component_type
89735   , p_component_code               => l_component_code
89736   , p_component_type_code          => l_component_type_code
89737   , p_component_appl_id            => l_component_appl_id
89738   , p_amb_context_code             => l_amb_context_code
89739   , p_side                         => 'NA'
89740   );
89741 
89742 
89743    --
89744    --
89745    END IF;
89746 
89747        --
89748        -- Update the line information that should be overwritten
89749        --
89750        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89751                                          p_header_num   => 1);
89752        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
89753 
89754        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89755 
89756        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
89757           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89758        END IF;
89759 
89760       --
89761       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89762       --
89763       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89764           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
89765       ELSE
89766           ---------------------------------------------------------------------------------------------------
89767           -- 4262811a Switch Sign
89768           ---------------------------------------------------------------------------------------------------
89769           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
89770           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89771                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89772           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89773                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89774           -- 5132302
89775           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89776                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89777 
89778       END IF;
89779 
89780       -- 4955764
89781       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89782       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89783 
89784 
89785       XLA_AE_LINES_PKG.ValidateCurrentLine;
89786       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89787 
89788       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89789                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89790                ,p_balance_type_code => l_balance_type_code);
89791 
89792    END IF;
89793 
89794    -----------------------------------------------------------------------------------------
89795    -- 4262811 Multiperiod Accounting
89796    -----------------------------------------------------------------------------------------
89797      -- No MPA option is assigned.
89798 
89799 
89800 END IF;
89801 END IF;
89802 --
89803 
89804 --
89805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89806    trace
89807       (p_msg      => 'END of AcctLineType_181'
89808       ,p_level    => C_LEVEL_PROCEDURE
89809       ,p_module   => l_log_module);
89810 END IF;
89811 --
89812 EXCEPTION
89813   WHEN xla_exceptions_pkg.application_exception THEN
89814       RAISE;
89815   WHEN OTHERS THEN
89816        xla_exceptions_pkg.raise_message
89817            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_181');
89818 END AcctLineType_181;
89819 --
89820 
89821 ---------------------------------------
89822 --
89823 -- PRIVATE FUNCTION
89824 --         AcctLineType_182
89825 --
89826 ---------------------------------------
89827 PROCEDURE AcctLineType_182 (
89828   p_application_id        IN NUMBER
89829  ,p_event_id              IN NUMBER
89830  ,p_calculate_acctd_flag  IN VARCHAR2
89831  ,p_calculate_g_l_flag    IN VARCHAR2
89832  ,p_actual_flag           IN OUT VARCHAR2
89833  ,p_balance_type_code     OUT VARCHAR2
89834  ,p_gain_or_loss_ref      OUT VARCHAR2
89835  
89836 --TRANSACTION_ID
89837  , p_source_1            IN NUMBER
89838 --Item Concatenated Segments
89839  , p_source_2            IN VARCHAR2
89840 --Transaction Quantity
89841  , p_source_3            IN NUMBER
89842 --Transaction Unit of Measure Code
89843  , p_source_4            IN VARCHAR2
89844 --Inventory Transaction Type Description
89845  , p_source_5            IN VARCHAR2
89846 --Cost Management Default Account
89847  , p_source_11            IN NUMBER
89848 --DISTRIBUTION_IDENTIFIER
89849  , p_source_84            IN NUMBER
89850 --Distribution Type
89851  , p_source_85            IN VARCHAR2
89852  , p_source_85_meaning    IN VARCHAR2
89853 --Entered Currency Code
89854  , p_source_88            IN VARCHAR2
89855 --Entered Amount
89856  , p_source_91            IN NUMBER
89857 --Currency Conversion Date
89858  , p_source_92            IN DATE
89859 --Currency Conversion Rate
89860  , p_source_93            IN NUMBER
89861 --Currency Conversion Type
89862  , p_source_94            IN VARCHAR2
89863 --Accounted Amount
89864  , p_source_95            IN NUMBER
89865 --Accounting Line Type
89866  , p_source_97            IN NUMBER
89867 )
89868 IS
89869 
89870 l_component_type              VARCHAR2(80);
89871 l_component_code              VARCHAR2(30);
89872 l_component_type_code         VARCHAR2(1);
89873 l_component_appl_id           INTEGER;
89874 l_amb_context_code            VARCHAR2(30);
89875 l_entity_code                 VARCHAR2(30);
89876 l_event_class_code            VARCHAR2(30);
89877 l_ae_header_id                NUMBER;
89878 l_event_type_code             VARCHAR2(30);
89879 l_line_definition_code        VARCHAR2(30);
89880 l_line_definition_owner_code  VARCHAR2(1);
89881 --
89882 -- adr variables
89883 l_segment                     VARCHAR2(30);
89884 l_ccid                        NUMBER;
89885 l_adr_transaction_coa_id      NUMBER;
89886 l_adr_accounting_coa_id       NUMBER;
89887 l_adr_flexfield_segment_code  VARCHAR2(30);
89888 l_adr_flex_value_set_id       NUMBER;
89889 l_adr_value_type_code         VARCHAR2(30);
89890 l_adr_value_combination_id    NUMBER;
89891 l_adr_value_segment_code      VARCHAR2(30);
89892 
89893 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
89894 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
89895 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
89896 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
89897 
89898 -- 4262811 Variables ------------------------------------------------------------------------------------------
89899 l_entered_amt_idx             NUMBER;
89900 l_accted_amt_idx              NUMBER;
89901 l_acc_rev_flag                VARCHAR2(1);
89902 l_accrual_line_num            NUMBER;
89903 l_tmp_amt                     NUMBER;
89904 l_acc_rev_natural_side_code   VARCHAR2(1);
89905 
89906 l_num_entries                 NUMBER;
89907 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
89908 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
89909 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
89910 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
89911 l_recog_line_1                NUMBER;
89912 l_recog_line_2                NUMBER;
89913 
89914 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
89915 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
89916 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
89917 
89918 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89919 
89920 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
89921 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
89922 
89923 ---------------------------------------------------------------------------------------------------------------
89924 
89925 
89926 --
89927 -- bulk performance
89928 --
89929 l_balance_type_code           VARCHAR2(1);
89930 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
89931 l_log_module                  VARCHAR2(240);
89932 
89933 --
89934 -- Upgrade strategy
89935 --
89936 l_actual_upg_option           VARCHAR2(1);
89937 l_enc_upg_option           VARCHAR2(1);
89938 
89939 --
89940 BEGIN
89941 --
89942 IF g_log_enabled THEN
89943       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_182';
89944 END IF;
89945 --
89946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89947 
89948       trace
89949          (p_msg      => 'BEGIN of AcctLineType_182'
89950          ,p_level    => C_LEVEL_PROCEDURE
89951          ,p_module   => l_log_module);
89952 
89953 END IF;
89954 --
89955 l_component_type             := 'AMB_JLT';
89956 l_component_code             := 'INTERORG_PROFIT_OPM';
89957 l_component_type_code        := 'S';
89958 l_component_appl_id          :=  707;
89959 l_amb_context_code           := 'DEFAULT';
89960 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
89961 l_event_class_code           := 'USER_DEFINE';
89962 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
89963 l_line_definition_owner_code := 'S';
89964 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
89965 --
89966 l_balance_type_code          := 'A';
89967 l_segment                     := NULL;
89968 l_ccid                        := NULL;
89969 l_adr_transaction_coa_id      := NULL;
89970 l_adr_accounting_coa_id       := NULL;
89971 l_adr_flexfield_segment_code  := NULL;
89972 l_adr_flex_value_set_id       := NULL;
89973 l_adr_value_type_code         := NULL;
89974 l_adr_value_combination_id    := NULL;
89975 l_adr_value_segment_code      := NULL;
89976 
89977 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
89978 l_bflow_class_code           := '';    -- 4219869 Business Flow
89979 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
89980 l_budgetary_control_flag     := 'N';
89981 
89982 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
89983 l_bflow_applied_to_amt       := NULL; -- 5132302
89984 l_entered_amt_idx            := NULL;          -- 4262811
89985 l_accted_amt_idx             := NULL;          -- 4262811
89986 l_acc_rev_flag               := NULL;          -- 4262811
89987 l_accrual_line_num           := NULL;          -- 4262811
89988 l_tmp_amt                    := NULL;          -- 4262811
89989 --
89990  
89991 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89992     l_balance_type_code <> 'B' THEN
89993 IF NVL(p_source_97,9E125) =  34
89994  THEN 
89995 
89996    --
89997    XLA_AE_LINES_PKG.SetNewLine;
89998 
89999    p_balance_type_code          := l_balance_type_code;
90000    -- set the flag so later we will know whether the gain loss line needs to be created
90001    
90002    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90003      p_actual_flag :='A';
90004    END IF;
90005 
90006    --
90007    -- bulk performance
90008    --
90009    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90010                                       p_header_num   => 0); -- 4262811
90011    --
90012    -- set accounting line options
90013    --
90014    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90015            p_natural_side_code          => 'D'
90016          , p_gain_or_loss_flag          => 'N'
90017          , p_gl_transfer_mode_code      => 'S'
90018          , p_acct_entry_type_code       => 'A'
90019          , p_switch_side_flag           => 'Y'
90020          , p_merge_duplicate_code       => 'N'
90021          );
90022    --
90023    l_acc_rev_natural_side_code := 'C';  -- 4262811
90024    -- 
90025    --
90026    -- set accounting line type info
90027    --
90028    xla_ae_lines_pkg.SetAcctLineType
90029       (p_component_type             => l_component_type
90030       ,p_event_type_code            => l_event_type_code
90031       ,p_line_definition_owner_code => l_line_definition_owner_code
90032       ,p_line_definition_code       => l_line_definition_code
90033       ,p_accounting_line_code       => l_component_code
90034       ,p_accounting_line_type_code  => l_component_type_code
90035       ,p_accounting_line_appl_id    => l_component_appl_id
90036       ,p_amb_context_code           => l_amb_context_code
90037       ,p_entity_code                => l_entity_code
90038       ,p_event_class_code           => l_event_class_code);
90039    --
90040    -- set accounting class
90041    --
90042    xla_ae_lines_pkg.SetAcctClass(
90043            p_accounting_class_code  => 'INTERORG_PROFIT'
90044          , p_ae_header_id           => l_ae_header_id
90045          );
90046 
90047    --
90048    -- set rounding class
90049    --
90050    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90051                       'INTERORG_PROFIT';
90052 
90053    --
90054    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90055    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90056    --
90057    -- bulk performance
90058    --
90059    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90060 
90061    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90062       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90063 
90064    -- 4955764
90065    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90066       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90067 
90068    -- 4458381 Public Sector Enh
90069    
90070    --
90071    -- set accounting attributes for the line type
90072    --
90073    l_entered_amt_idx := 3;
90074    l_accted_amt_idx  := 8;
90075    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
90076    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90077    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
90078    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90079    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
90080    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90081    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
90082    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90083    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
90084    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90085    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
90086    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90087    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
90088    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90089    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
90090    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90091    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
90092 
90093    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90094    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90095 
90096    ---------------------------------------------------------------------------------------------------------------
90097    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90098    ---------------------------------------------------------------------------------------------------------------
90099    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90100 
90101    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90102    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90103 
90104    IF xla_accounting_cache_pkg.GetValueChar
90105          (p_source_code         => 'LEDGER_CATEGORY_CODE'
90106          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90107    AND l_bflow_method_code = 'PRIOR_ENTRY'
90108 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90109    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90110          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90111        )
90112    THEN
90113          xla_ae_lines_pkg.BflowUpgEntry
90114            (p_business_method_code    => l_bflow_method_code
90115            ,p_business_class_code     => l_bflow_class_code
90116            ,p_balance_type            => l_balance_type_code);
90117    ELSE
90118       NULL;
90119 -- No business flow processing for business flow method of NONE.
90120    END IF;
90121 
90122    --
90123    -- call analytical criteria
90124    --
90125    
90126    --
90127    -- call description
90128    --
90129    
90130 xla_ae_lines_pkg.SetLineDescription(
90131    p_ae_header_id => l_ae_header_id
90132   ,p_description  => Description_1 (
90133      p_application_id         => p_application_id
90134    , p_ae_header_id           => l_ae_header_id 
90135 , p_source_1 => p_source_1
90136 , p_source_2 => p_source_2
90137 , p_source_3 => p_source_3
90138 , p_source_4 => p_source_4
90139 , p_source_5 => p_source_5
90140    )
90141 );
90142 
90143 
90144    --
90145    -- call ADRs
90146    -- Bug 4922099
90147    --
90148    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90149         (NVL(l_actual_upg_option, 'N') = 'O') OR
90150         (NVL(l_enc_upg_option, 'N') = 'O')
90151       )
90152    THEN
90153    NULL;
90154    --
90155    --
90156    
90157   l_ccid := AcctDerRule_6(
90158            p_application_id           => p_application_id
90159          , p_ae_header_id             => l_ae_header_id 
90160 , p_source_11 => p_source_11
90161          , x_transaction_coa_id       => l_adr_transaction_coa_id
90162          , x_accounting_coa_id        => l_adr_accounting_coa_id
90163          , x_value_type_code          => l_adr_value_type_code
90164          , p_side                     => 'NA'
90165    );
90166 
90167    xla_ae_lines_pkg.set_ccid(
90168     p_code_combination_id          => l_ccid
90169   , p_value_type_code              => l_adr_value_type_code
90170   , p_transaction_coa_id           => l_adr_transaction_coa_id
90171   , p_accounting_coa_id            => l_adr_accounting_coa_id
90172   , p_adr_code                     => 'CST_DEFAULT'
90173   , p_adr_type_code                => 'S'
90174   , p_component_type               => l_component_type
90175   , p_component_code               => l_component_code
90176   , p_component_type_code          => l_component_type_code
90177   , p_component_appl_id            => l_component_appl_id
90178   , p_amb_context_code             => l_amb_context_code
90179   , p_side                         => 'NA'
90180   );
90181 
90182 
90183    --
90184    --
90185    END IF;
90186    --
90187    -- Bug 4922099
90188    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90189           (NVL(l_enc_upg_option, 'N') = 'O')
90190         ) AND
90191         (l_bflow_method_code = 'PRIOR_ENTRY')
90192       )
90193    THEN
90194       IF
90195       --
90196       1 = 2
90197       --
90198       THEN
90199       xla_accounting_err_pkg.build_message
90200                                     (p_appli_s_name            => 'XLA'
90201                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90202                                     ,p_token_1                 => 'LINE_NUMBER'
90203                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90204                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90205                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90206                                                                              l_component_type
90207                                                                             ,l_component_code
90208                                                                             ,l_component_type_code
90209                                                                             ,l_component_appl_id
90210                                                                             ,l_amb_context_code
90211                                                                             ,l_entity_code
90212                                                                             ,l_event_class_code
90213                                                                            )
90214                                     ,p_token_3                 => 'OWNER'
90215                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90216                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90217                                                                           ,p_lookup_code    => l_component_type_code
90218                                                                          )
90219                                     ,p_token_4                 => 'PRODUCT_NAME'
90220                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90221                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90222                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90223                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90224                                     ,p_ae_header_id            =>  NULL
90225                                        );
90226 
90227         IF (C_LEVEL_ERROR>= g_log_level) THEN
90228                  trace
90229                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90230                       ,p_level    => C_LEVEL_ERROR
90231                       ,p_module   => l_log_module);
90232         END IF;
90233       END IF;
90234    END IF;
90235    --
90236    --
90237    ------------------------------------------------------------------------------------------------
90238    -- 4219869 Business Flow
90239    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90240    -- Prior Entry.  Currently, the following code is always generated.
90241    ------------------------------------------------------------------------------------------------
90242    XLA_AE_LINES_PKG.ValidateCurrentLine;
90243 
90244    ------------------------------------------------------------------------------------
90245    -- 4219869 Business Flow
90246    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90247    ------------------------------------------------------------------------------------
90248    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90249 
90250    ----------------------------------------------------------------------------------
90251    -- 4219869 Business Flow
90252    -- Update journal entry status -- Need to generate this within IF <condition>
90253    ----------------------------------------------------------------------------------
90254    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90255          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90256          ,p_balance_type_code => l_balance_type_code
90257          );
90258 
90259    -------------------------------------------------------------------------------------------
90260    -- 4262811 - Generate the Accrual Reversal lines
90261    -------------------------------------------------------------------------------------------
90262    BEGIN
90263       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90264                               (g_array_event(p_event_id).array_value_num('header_index'));
90265       IF l_acc_rev_flag IS NULL THEN
90266          l_acc_rev_flag := 'N';
90267       END IF;
90268    EXCEPTION
90269       WHEN OTHERS THEN
90270          l_acc_rev_flag := 'N';
90271    END;
90272    --
90273    IF (l_acc_rev_flag = 'Y') THEN
90274 
90275        -- 4645092  ------------------------------------------------------------------------------
90276        -- To allow MPA report to determine if it should generate report process
90277        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90278        ------------------------------------------------------------------------------------------
90279 
90280        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90281        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90282    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90283    -- call ADRs
90284    -- Bug 4922099
90285    --
90286    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90287         (NVL(l_actual_upg_option, 'N') = 'O') OR
90288         (NVL(l_enc_upg_option, 'N') = 'O')
90289       )
90290    THEN
90291    NULL;
90292    --
90293    --
90294    
90295   l_ccid := AcctDerRule_6(
90296            p_application_id           => p_application_id
90297          , p_ae_header_id             => l_ae_header_id 
90298 , p_source_11 => p_source_11
90299          , x_transaction_coa_id       => l_adr_transaction_coa_id
90300          , x_accounting_coa_id        => l_adr_accounting_coa_id
90301          , x_value_type_code          => l_adr_value_type_code
90302          , p_side                     => 'NA'
90303    );
90304 
90305    xla_ae_lines_pkg.set_ccid(
90306     p_code_combination_id          => l_ccid
90307   , p_value_type_code              => l_adr_value_type_code
90308   , p_transaction_coa_id           => l_adr_transaction_coa_id
90309   , p_accounting_coa_id            => l_adr_accounting_coa_id
90310   , p_adr_code                     => 'CST_DEFAULT'
90311   , p_adr_type_code                => 'S'
90312   , p_component_type               => l_component_type
90313   , p_component_code               => l_component_code
90314   , p_component_type_code          => l_component_type_code
90315   , p_component_appl_id            => l_component_appl_id
90316   , p_amb_context_code             => l_amb_context_code
90317   , p_side                         => 'NA'
90318   );
90319 
90320 
90321    --
90322    --
90323    END IF;
90324 
90325        --
90326        -- Update the line information that should be overwritten
90327        --
90328        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90329                                          p_header_num   => 1);
90330        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
90331 
90332        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90333 
90334        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
90335           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90336        END IF;
90337 
90338       --
90339       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90340       --
90341       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90342           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
90343       ELSE
90344           ---------------------------------------------------------------------------------------------------
90345           -- 4262811a Switch Sign
90346           ---------------------------------------------------------------------------------------------------
90347           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
90348           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90349                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90350           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90351                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90352           -- 5132302
90353           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90354                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90355 
90356       END IF;
90357 
90358       -- 4955764
90359       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90360       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90361 
90362 
90363       XLA_AE_LINES_PKG.ValidateCurrentLine;
90364       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90365 
90366       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90367                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90368                ,p_balance_type_code => l_balance_type_code);
90369 
90370    END IF;
90371 
90372    -----------------------------------------------------------------------------------------
90373    -- 4262811 Multiperiod Accounting
90374    -----------------------------------------------------------------------------------------
90375      -- No MPA option is assigned.
90376 
90377 
90378 END IF;
90379 END IF;
90380 --
90381 
90382 --
90383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90384    trace
90385       (p_msg      => 'END of AcctLineType_182'
90386       ,p_level    => C_LEVEL_PROCEDURE
90387       ,p_module   => l_log_module);
90388 END IF;
90389 --
90390 EXCEPTION
90391   WHEN xla_exceptions_pkg.application_exception THEN
90392       RAISE;
90393   WHEN OTHERS THEN
90394        xla_exceptions_pkg.raise_message
90395            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_182');
90396 END AcctLineType_182;
90397 --
90398 
90399 ---------------------------------------
90400 --
90401 -- PRIVATE FUNCTION
90402 --         AcctLineType_183
90403 --
90404 ---------------------------------------
90405 PROCEDURE AcctLineType_183 (
90406   p_application_id        IN NUMBER
90407  ,p_event_id              IN NUMBER
90408  ,p_calculate_acctd_flag  IN VARCHAR2
90409  ,p_calculate_g_l_flag    IN VARCHAR2
90410  ,p_actual_flag           IN OUT VARCHAR2
90411  ,p_balance_type_code     OUT VARCHAR2
90412  ,p_gain_or_loss_ref      OUT VARCHAR2
90413  
90414 --TRANSACTION_ID
90415  , p_source_1            IN NUMBER
90416 --Item Concatenated Segments
90417  , p_source_2            IN VARCHAR2
90418 --Transaction Quantity
90419  , p_source_3            IN NUMBER
90420 --Transaction Unit of Measure Code
90421  , p_source_4            IN VARCHAR2
90422 --Inventory Transaction Type Description
90423  , p_source_5            IN VARCHAR2
90424 --Cost Management Default Account
90425  , p_source_11            IN NUMBER
90426 --DISTRIBUTION_IDENTIFIER
90427  , p_source_84            IN NUMBER
90428 --Distribution Type
90429  , p_source_85            IN VARCHAR2
90430  , p_source_85_meaning    IN VARCHAR2
90431 --Entered Currency Code
90432  , p_source_88            IN VARCHAR2
90433 --Entered Amount
90434  , p_source_91            IN NUMBER
90435 --Currency Conversion Date
90436  , p_source_92            IN DATE
90437 --Currency Conversion Rate
90438  , p_source_93            IN NUMBER
90439 --Currency Conversion Type
90440  , p_source_94            IN VARCHAR2
90441 --Accounted Amount
90442  , p_source_95            IN NUMBER
90443 --Accounting Line Type
90444  , p_source_97            IN NUMBER
90445 )
90446 IS
90447 
90448 l_component_type              VARCHAR2(80);
90449 l_component_code              VARCHAR2(30);
90450 l_component_type_code         VARCHAR2(1);
90451 l_component_appl_id           INTEGER;
90452 l_amb_context_code            VARCHAR2(30);
90453 l_entity_code                 VARCHAR2(30);
90454 l_event_class_code            VARCHAR2(30);
90455 l_ae_header_id                NUMBER;
90456 l_event_type_code             VARCHAR2(30);
90457 l_line_definition_code        VARCHAR2(30);
90458 l_line_definition_owner_code  VARCHAR2(1);
90459 --
90460 -- adr variables
90461 l_segment                     VARCHAR2(30);
90462 l_ccid                        NUMBER;
90463 l_adr_transaction_coa_id      NUMBER;
90464 l_adr_accounting_coa_id       NUMBER;
90465 l_adr_flexfield_segment_code  VARCHAR2(30);
90466 l_adr_flex_value_set_id       NUMBER;
90467 l_adr_value_type_code         VARCHAR2(30);
90468 l_adr_value_combination_id    NUMBER;
90469 l_adr_value_segment_code      VARCHAR2(30);
90470 
90471 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
90472 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
90473 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
90474 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
90475 
90476 -- 4262811 Variables ------------------------------------------------------------------------------------------
90477 l_entered_amt_idx             NUMBER;
90478 l_accted_amt_idx              NUMBER;
90479 l_acc_rev_flag                VARCHAR2(1);
90480 l_accrual_line_num            NUMBER;
90481 l_tmp_amt                     NUMBER;
90482 l_acc_rev_natural_side_code   VARCHAR2(1);
90483 
90484 l_num_entries                 NUMBER;
90485 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
90486 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
90487 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
90488 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
90489 l_recog_line_1                NUMBER;
90490 l_recog_line_2                NUMBER;
90491 
90492 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
90493 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
90494 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
90495 
90496 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90497 
90498 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
90499 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
90500 
90501 ---------------------------------------------------------------------------------------------------------------
90502 
90503 
90504 --
90505 -- bulk performance
90506 --
90507 l_balance_type_code           VARCHAR2(1);
90508 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
90509 l_log_module                  VARCHAR2(240);
90510 
90511 --
90512 -- Upgrade strategy
90513 --
90514 l_actual_upg_option           VARCHAR2(1);
90515 l_enc_upg_option           VARCHAR2(1);
90516 
90517 --
90518 BEGIN
90519 --
90520 IF g_log_enabled THEN
90521       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_183';
90522 END IF;
90523 --
90524 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90525 
90526       trace
90527          (p_msg      => 'BEGIN of AcctLineType_183'
90528          ,p_level    => C_LEVEL_PROCEDURE
90529          ,p_module   => l_log_module);
90530 
90531 END IF;
90532 --
90533 l_component_type             := 'AMB_JLT';
90534 l_component_code             := 'INTERORG_PROFIT_OPM';
90535 l_component_type_code        := 'S';
90536 l_component_appl_id          :=  707;
90537 l_amb_context_code           := 'DEFAULT';
90538 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
90539 l_event_class_code           := 'DIR_INTERORG_SHIP';
90540 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
90541 l_line_definition_owner_code := 'S';
90542 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
90543 --
90544 l_balance_type_code          := 'A';
90545 l_segment                     := NULL;
90546 l_ccid                        := NULL;
90547 l_adr_transaction_coa_id      := NULL;
90548 l_adr_accounting_coa_id       := NULL;
90549 l_adr_flexfield_segment_code  := NULL;
90550 l_adr_flex_value_set_id       := NULL;
90551 l_adr_value_type_code         := NULL;
90552 l_adr_value_combination_id    := NULL;
90553 l_adr_value_segment_code      := NULL;
90554 
90555 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
90556 l_bflow_class_code           := '';    -- 4219869 Business Flow
90557 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
90558 l_budgetary_control_flag     := 'N';
90559 
90560 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
90561 l_bflow_applied_to_amt       := NULL; -- 5132302
90562 l_entered_amt_idx            := NULL;          -- 4262811
90563 l_accted_amt_idx             := NULL;          -- 4262811
90564 l_acc_rev_flag               := NULL;          -- 4262811
90565 l_accrual_line_num           := NULL;          -- 4262811
90566 l_tmp_amt                    := NULL;          -- 4262811
90567 --
90568  
90569 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90570     l_balance_type_code <> 'B' THEN
90571 IF NVL(p_source_97,9E125) =  34
90572  THEN 
90573 
90574    --
90575    XLA_AE_LINES_PKG.SetNewLine;
90576 
90577    p_balance_type_code          := l_balance_type_code;
90578    -- set the flag so later we will know whether the gain loss line needs to be created
90579    
90580    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90581      p_actual_flag :='A';
90582    END IF;
90583 
90584    --
90585    -- bulk performance
90586    --
90587    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90588                                       p_header_num   => 0); -- 4262811
90589    --
90590    -- set accounting line options
90591    --
90592    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90593            p_natural_side_code          => 'D'
90594          , p_gain_or_loss_flag          => 'N'
90595          , p_gl_transfer_mode_code      => 'S'
90596          , p_acct_entry_type_code       => 'A'
90597          , p_switch_side_flag           => 'Y'
90598          , p_merge_duplicate_code       => 'N'
90599          );
90600    --
90601    l_acc_rev_natural_side_code := 'C';  -- 4262811
90602    -- 
90603    --
90604    -- set accounting line type info
90605    --
90606    xla_ae_lines_pkg.SetAcctLineType
90607       (p_component_type             => l_component_type
90608       ,p_event_type_code            => l_event_type_code
90609       ,p_line_definition_owner_code => l_line_definition_owner_code
90610       ,p_line_definition_code       => l_line_definition_code
90611       ,p_accounting_line_code       => l_component_code
90612       ,p_accounting_line_type_code  => l_component_type_code
90613       ,p_accounting_line_appl_id    => l_component_appl_id
90614       ,p_amb_context_code           => l_amb_context_code
90615       ,p_entity_code                => l_entity_code
90616       ,p_event_class_code           => l_event_class_code);
90617    --
90618    -- set accounting class
90619    --
90620    xla_ae_lines_pkg.SetAcctClass(
90621            p_accounting_class_code  => 'INTERORG_PROFIT'
90622          , p_ae_header_id           => l_ae_header_id
90623          );
90624 
90625    --
90626    -- set rounding class
90627    --
90628    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90629                       'INTERORG_PROFIT';
90630 
90631    --
90632    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90633    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90634    --
90635    -- bulk performance
90636    --
90637    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90638 
90639    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90640       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90641 
90642    -- 4955764
90643    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90644       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90645 
90646    -- 4458381 Public Sector Enh
90647    
90648    --
90649    -- set accounting attributes for the line type
90650    --
90651    l_entered_amt_idx := 3;
90652    l_accted_amt_idx  := 8;
90653    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
90654    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90655    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
90656    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90657    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
90658    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90659    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
90660    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90661    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
90662    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90663    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
90664    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90665    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
90666    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90667    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
90668    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90669    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
90670 
90671    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90672    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90673 
90674    ---------------------------------------------------------------------------------------------------------------
90675    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90676    ---------------------------------------------------------------------------------------------------------------
90677    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90678 
90679    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90680    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90681 
90682    IF xla_accounting_cache_pkg.GetValueChar
90683          (p_source_code         => 'LEDGER_CATEGORY_CODE'
90684          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90685    AND l_bflow_method_code = 'PRIOR_ENTRY'
90686 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90687    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90688          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90689        )
90690    THEN
90691          xla_ae_lines_pkg.BflowUpgEntry
90692            (p_business_method_code    => l_bflow_method_code
90693            ,p_business_class_code     => l_bflow_class_code
90694            ,p_balance_type            => l_balance_type_code);
90695    ELSE
90696       NULL;
90697 -- No business flow processing for business flow method of NONE.
90698    END IF;
90699 
90700    --
90701    -- call analytical criteria
90702    --
90703    
90704    --
90705    -- call description
90706    --
90707    
90708 xla_ae_lines_pkg.SetLineDescription(
90709    p_ae_header_id => l_ae_header_id
90710   ,p_description  => Description_1 (
90711      p_application_id         => p_application_id
90712    , p_ae_header_id           => l_ae_header_id 
90713 , p_source_1 => p_source_1
90714 , p_source_2 => p_source_2
90715 , p_source_3 => p_source_3
90716 , p_source_4 => p_source_4
90717 , p_source_5 => p_source_5
90718    )
90719 );
90720 
90721 
90722    --
90723    -- call ADRs
90724    -- Bug 4922099
90725    --
90726    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90727         (NVL(l_actual_upg_option, 'N') = 'O') OR
90728         (NVL(l_enc_upg_option, 'N') = 'O')
90729       )
90730    THEN
90731    NULL;
90732    --
90733    --
90734    
90735   l_ccid := AcctDerRule_6(
90736            p_application_id           => p_application_id
90737          , p_ae_header_id             => l_ae_header_id 
90738 , p_source_11 => p_source_11
90739          , x_transaction_coa_id       => l_adr_transaction_coa_id
90740          , x_accounting_coa_id        => l_adr_accounting_coa_id
90741          , x_value_type_code          => l_adr_value_type_code
90742          , p_side                     => 'NA'
90743    );
90744 
90745    xla_ae_lines_pkg.set_ccid(
90746     p_code_combination_id          => l_ccid
90747   , p_value_type_code              => l_adr_value_type_code
90748   , p_transaction_coa_id           => l_adr_transaction_coa_id
90749   , p_accounting_coa_id            => l_adr_accounting_coa_id
90750   , p_adr_code                     => 'CST_DEFAULT'
90751   , p_adr_type_code                => 'S'
90752   , p_component_type               => l_component_type
90753   , p_component_code               => l_component_code
90754   , p_component_type_code          => l_component_type_code
90755   , p_component_appl_id            => l_component_appl_id
90756   , p_amb_context_code             => l_amb_context_code
90757   , p_side                         => 'NA'
90758   );
90759 
90760 
90761    --
90762    --
90763    END IF;
90764    --
90765    -- Bug 4922099
90766    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90767           (NVL(l_enc_upg_option, 'N') = 'O')
90768         ) AND
90769         (l_bflow_method_code = 'PRIOR_ENTRY')
90770       )
90771    THEN
90772       IF
90773       --
90774       1 = 2
90775       --
90776       THEN
90777       xla_accounting_err_pkg.build_message
90778                                     (p_appli_s_name            => 'XLA'
90779                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90780                                     ,p_token_1                 => 'LINE_NUMBER'
90781                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
90782                                     ,p_token_2                 => 'LINE_TYPE_NAME'
90783                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
90784                                                                              l_component_type
90785                                                                             ,l_component_code
90786                                                                             ,l_component_type_code
90787                                                                             ,l_component_appl_id
90788                                                                             ,l_amb_context_code
90789                                                                             ,l_entity_code
90790                                                                             ,l_event_class_code
90791                                                                            )
90792                                     ,p_token_3                 => 'OWNER'
90793                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
90794                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
90795                                                                           ,p_lookup_code    => l_component_type_code
90796                                                                          )
90797                                     ,p_token_4                 => 'PRODUCT_NAME'
90798                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90799                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90800                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90801                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90802                                     ,p_ae_header_id            =>  NULL
90803                                        );
90804 
90805         IF (C_LEVEL_ERROR>= g_log_level) THEN
90806                  trace
90807                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90808                       ,p_level    => C_LEVEL_ERROR
90809                       ,p_module   => l_log_module);
90810         END IF;
90811       END IF;
90812    END IF;
90813    --
90814    --
90815    ------------------------------------------------------------------------------------------------
90816    -- 4219869 Business Flow
90817    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90818    -- Prior Entry.  Currently, the following code is always generated.
90819    ------------------------------------------------------------------------------------------------
90820    XLA_AE_LINES_PKG.ValidateCurrentLine;
90821 
90822    ------------------------------------------------------------------------------------
90823    -- 4219869 Business Flow
90824    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90825    ------------------------------------------------------------------------------------
90826    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90827 
90828    ----------------------------------------------------------------------------------
90829    -- 4219869 Business Flow
90830    -- Update journal entry status -- Need to generate this within IF <condition>
90831    ----------------------------------------------------------------------------------
90832    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90833          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90834          ,p_balance_type_code => l_balance_type_code
90835          );
90836 
90837    -------------------------------------------------------------------------------------------
90838    -- 4262811 - Generate the Accrual Reversal lines
90839    -------------------------------------------------------------------------------------------
90840    BEGIN
90841       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90842                               (g_array_event(p_event_id).array_value_num('header_index'));
90843       IF l_acc_rev_flag IS NULL THEN
90844          l_acc_rev_flag := 'N';
90845       END IF;
90846    EXCEPTION
90847       WHEN OTHERS THEN
90848          l_acc_rev_flag := 'N';
90849    END;
90850    --
90851    IF (l_acc_rev_flag = 'Y') THEN
90852 
90853        -- 4645092  ------------------------------------------------------------------------------
90854        -- To allow MPA report to determine if it should generate report process
90855        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90856        ------------------------------------------------------------------------------------------
90857 
90858        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90859        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90860    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
90861    -- call ADRs
90862    -- Bug 4922099
90863    --
90864    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90865         (NVL(l_actual_upg_option, 'N') = 'O') OR
90866         (NVL(l_enc_upg_option, 'N') = 'O')
90867       )
90868    THEN
90869    NULL;
90870    --
90871    --
90872    
90873   l_ccid := AcctDerRule_6(
90874            p_application_id           => p_application_id
90875          , p_ae_header_id             => l_ae_header_id 
90876 , p_source_11 => p_source_11
90877          , x_transaction_coa_id       => l_adr_transaction_coa_id
90878          , x_accounting_coa_id        => l_adr_accounting_coa_id
90879          , x_value_type_code          => l_adr_value_type_code
90880          , p_side                     => 'NA'
90881    );
90882 
90883    xla_ae_lines_pkg.set_ccid(
90884     p_code_combination_id          => l_ccid
90885   , p_value_type_code              => l_adr_value_type_code
90886   , p_transaction_coa_id           => l_adr_transaction_coa_id
90887   , p_accounting_coa_id            => l_adr_accounting_coa_id
90888   , p_adr_code                     => 'CST_DEFAULT'
90889   , p_adr_type_code                => 'S'
90890   , p_component_type               => l_component_type
90891   , p_component_code               => l_component_code
90892   , p_component_type_code          => l_component_type_code
90893   , p_component_appl_id            => l_component_appl_id
90894   , p_amb_context_code             => l_amb_context_code
90895   , p_side                         => 'NA'
90896   );
90897 
90898 
90899    --
90900    --
90901    END IF;
90902 
90903        --
90904        -- Update the line information that should be overwritten
90905        --
90906        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90907                                          p_header_num   => 1);
90908        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
90909 
90910        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90911 
90912        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
90913           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90914        END IF;
90915 
90916       --
90917       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90918       --
90919       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90920           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
90921       ELSE
90922           ---------------------------------------------------------------------------------------------------
90923           -- 4262811a Switch Sign
90924           ---------------------------------------------------------------------------------------------------
90925           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
90926           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90927                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90928           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90929                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90930           -- 5132302
90931           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90932                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90933 
90934       END IF;
90935 
90936       -- 4955764
90937       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90938       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90939 
90940 
90941       XLA_AE_LINES_PKG.ValidateCurrentLine;
90942       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90943 
90944       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90945                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90946                ,p_balance_type_code => l_balance_type_code);
90947 
90948    END IF;
90949 
90950    -----------------------------------------------------------------------------------------
90951    -- 4262811 Multiperiod Accounting
90952    -----------------------------------------------------------------------------------------
90953      -- No MPA option is assigned.
90954 
90955 
90956 END IF;
90957 END IF;
90958 --
90959 
90960 --
90961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90962    trace
90963       (p_msg      => 'END of AcctLineType_183'
90964       ,p_level    => C_LEVEL_PROCEDURE
90965       ,p_module   => l_log_module);
90966 END IF;
90967 --
90968 EXCEPTION
90969   WHEN xla_exceptions_pkg.application_exception THEN
90970       RAISE;
90971   WHEN OTHERS THEN
90972        xla_exceptions_pkg.raise_message
90973            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_183');
90974 END AcctLineType_183;
90975 --
90976 
90977 ---------------------------------------
90978 --
90979 -- PRIVATE FUNCTION
90980 --         AcctLineType_184
90981 --
90982 ---------------------------------------
90983 PROCEDURE AcctLineType_184 (
90984   p_application_id        IN NUMBER
90985  ,p_event_id              IN NUMBER
90986  ,p_calculate_acctd_flag  IN VARCHAR2
90987  ,p_calculate_g_l_flag    IN VARCHAR2
90988  ,p_actual_flag           IN OUT VARCHAR2
90989  ,p_balance_type_code     OUT VARCHAR2
90990  ,p_gain_or_loss_ref      OUT VARCHAR2
90991  
90992 --TRANSACTION_ID
90993  , p_source_1            IN NUMBER
90994 --Item Concatenated Segments
90995  , p_source_2            IN VARCHAR2
90996 --Transaction Quantity
90997  , p_source_3            IN NUMBER
90998 --Transaction Unit of Measure Code
90999  , p_source_4            IN VARCHAR2
91000 --Inventory Transaction Type Description
91001  , p_source_5            IN VARCHAR2
91002 --Cost Management Default Account
91003  , p_source_11            IN NUMBER
91004 --DISTRIBUTION_IDENTIFIER
91005  , p_source_84            IN NUMBER
91006 --Distribution Type
91007  , p_source_85            IN VARCHAR2
91008  , p_source_85_meaning    IN VARCHAR2
91009 --Entered Currency Code
91010  , p_source_88            IN VARCHAR2
91011 --Entered Amount
91012  , p_source_91            IN NUMBER
91013 --Currency Conversion Date
91014  , p_source_92            IN DATE
91015 --Currency Conversion Rate
91016  , p_source_93            IN NUMBER
91017 --Currency Conversion Type
91018  , p_source_94            IN VARCHAR2
91019 --Accounted Amount
91020  , p_source_95            IN NUMBER
91021 --Accounting Line Type
91022  , p_source_97            IN NUMBER
91023 )
91024 IS
91025 
91026 l_component_type              VARCHAR2(80);
91027 l_component_code              VARCHAR2(30);
91028 l_component_type_code         VARCHAR2(1);
91029 l_component_appl_id           INTEGER;
91030 l_amb_context_code            VARCHAR2(30);
91031 l_entity_code                 VARCHAR2(30);
91032 l_event_class_code            VARCHAR2(30);
91033 l_ae_header_id                NUMBER;
91034 l_event_type_code             VARCHAR2(30);
91035 l_line_definition_code        VARCHAR2(30);
91036 l_line_definition_owner_code  VARCHAR2(1);
91037 --
91038 -- adr variables
91039 l_segment                     VARCHAR2(30);
91040 l_ccid                        NUMBER;
91041 l_adr_transaction_coa_id      NUMBER;
91042 l_adr_accounting_coa_id       NUMBER;
91043 l_adr_flexfield_segment_code  VARCHAR2(30);
91044 l_adr_flex_value_set_id       NUMBER;
91045 l_adr_value_type_code         VARCHAR2(30);
91046 l_adr_value_combination_id    NUMBER;
91047 l_adr_value_segment_code      VARCHAR2(30);
91048 
91049 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
91050 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
91051 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
91052 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
91053 
91054 -- 4262811 Variables ------------------------------------------------------------------------------------------
91055 l_entered_amt_idx             NUMBER;
91056 l_accted_amt_idx              NUMBER;
91057 l_acc_rev_flag                VARCHAR2(1);
91058 l_accrual_line_num            NUMBER;
91059 l_tmp_amt                     NUMBER;
91060 l_acc_rev_natural_side_code   VARCHAR2(1);
91061 
91062 l_num_entries                 NUMBER;
91063 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
91064 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
91065 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
91066 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
91067 l_recog_line_1                NUMBER;
91068 l_recog_line_2                NUMBER;
91069 
91070 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
91071 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
91072 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
91073 
91074 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91075 
91076 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
91077 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
91078 
91079 ---------------------------------------------------------------------------------------------------------------
91080 
91081 
91082 --
91083 -- bulk performance
91084 --
91085 l_balance_type_code           VARCHAR2(1);
91086 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
91087 l_log_module                  VARCHAR2(240);
91088 
91089 --
91090 -- Upgrade strategy
91091 --
91092 l_actual_upg_option           VARCHAR2(1);
91093 l_enc_upg_option           VARCHAR2(1);
91094 
91095 --
91096 BEGIN
91097 --
91098 IF g_log_enabled THEN
91099       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_184';
91100 END IF;
91101 --
91102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91103 
91104       trace
91105          (p_msg      => 'BEGIN of AcctLineType_184'
91106          ,p_level    => C_LEVEL_PROCEDURE
91107          ,p_module   => l_log_module);
91108 
91109 END IF;
91110 --
91111 l_component_type             := 'AMB_JLT';
91112 l_component_code             := 'INTERORG_PROFIT_OPM';
91113 l_component_type_code        := 'S';
91114 l_component_appl_id          :=  707;
91115 l_amb_context_code           := 'DEFAULT';
91116 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
91117 l_event_class_code           := 'INT_ORDER_TO_EXP';
91118 l_event_type_code            := 'EXP_REQ_RCPT_NO_TP';
91119 l_line_definition_owner_code := 'S';
91120 l_line_definition_code       := 'PI_EXP_REQ_RCPT_NO_TP';
91121 --
91122 l_balance_type_code          := 'A';
91123 l_segment                     := NULL;
91124 l_ccid                        := NULL;
91125 l_adr_transaction_coa_id      := NULL;
91126 l_adr_accounting_coa_id       := NULL;
91127 l_adr_flexfield_segment_code  := NULL;
91128 l_adr_flex_value_set_id       := NULL;
91129 l_adr_value_type_code         := NULL;
91130 l_adr_value_combination_id    := NULL;
91131 l_adr_value_segment_code      := NULL;
91132 
91133 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
91134 l_bflow_class_code           := '';    -- 4219869 Business Flow
91135 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
91136 l_budgetary_control_flag     := 'N';
91137 
91138 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
91139 l_bflow_applied_to_amt       := NULL; -- 5132302
91140 l_entered_amt_idx            := NULL;          -- 4262811
91141 l_accted_amt_idx             := NULL;          -- 4262811
91142 l_acc_rev_flag               := NULL;          -- 4262811
91143 l_accrual_line_num           := NULL;          -- 4262811
91144 l_tmp_amt                    := NULL;          -- 4262811
91145 --
91146  
91147 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91148     l_balance_type_code <> 'B' THEN
91149 IF NVL(p_source_97,9E125) =  34
91150  THEN 
91151 
91152    --
91153    XLA_AE_LINES_PKG.SetNewLine;
91154 
91155    p_balance_type_code          := l_balance_type_code;
91156    -- set the flag so later we will know whether the gain loss line needs to be created
91157    
91158    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91159      p_actual_flag :='A';
91160    END IF;
91161 
91162    --
91163    -- bulk performance
91164    --
91165    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91166                                       p_header_num   => 0); -- 4262811
91167    --
91168    -- set accounting line options
91169    --
91170    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91171            p_natural_side_code          => 'D'
91172          , p_gain_or_loss_flag          => 'N'
91173          , p_gl_transfer_mode_code      => 'S'
91174          , p_acct_entry_type_code       => 'A'
91175          , p_switch_side_flag           => 'Y'
91176          , p_merge_duplicate_code       => 'N'
91177          );
91178    --
91179    l_acc_rev_natural_side_code := 'C';  -- 4262811
91180    -- 
91181    --
91182    -- set accounting line type info
91183    --
91184    xla_ae_lines_pkg.SetAcctLineType
91185       (p_component_type             => l_component_type
91186       ,p_event_type_code            => l_event_type_code
91187       ,p_line_definition_owner_code => l_line_definition_owner_code
91188       ,p_line_definition_code       => l_line_definition_code
91189       ,p_accounting_line_code       => l_component_code
91190       ,p_accounting_line_type_code  => l_component_type_code
91191       ,p_accounting_line_appl_id    => l_component_appl_id
91192       ,p_amb_context_code           => l_amb_context_code
91193       ,p_entity_code                => l_entity_code
91194       ,p_event_class_code           => l_event_class_code);
91195    --
91196    -- set accounting class
91197    --
91198    xla_ae_lines_pkg.SetAcctClass(
91199            p_accounting_class_code  => 'INTERORG_PROFIT'
91200          , p_ae_header_id           => l_ae_header_id
91201          );
91202 
91203    --
91204    -- set rounding class
91205    --
91206    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91207                       'INTERORG_PROFIT';
91208 
91209    --
91210    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91211    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91212    --
91213    -- bulk performance
91214    --
91215    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91216 
91217    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91218       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91219 
91220    -- 4955764
91221    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91222       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91223 
91224    -- 4458381 Public Sector Enh
91225    
91226    --
91227    -- set accounting attributes for the line type
91228    --
91229    l_entered_amt_idx := 3;
91230    l_accted_amt_idx  := 8;
91231    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91232    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91233    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
91234    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91235    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
91236    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91237    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
91238    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91239    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
91240    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91241    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
91242    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91243    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
91244    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91245    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
91246    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91247    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
91248 
91249    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91250    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91251 
91252    ---------------------------------------------------------------------------------------------------------------
91253    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91254    ---------------------------------------------------------------------------------------------------------------
91255    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91256 
91257    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91258    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91259 
91260    IF xla_accounting_cache_pkg.GetValueChar
91261          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91262          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91263    AND l_bflow_method_code = 'PRIOR_ENTRY'
91264 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91265    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91266          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91267        )
91268    THEN
91269          xla_ae_lines_pkg.BflowUpgEntry
91270            (p_business_method_code    => l_bflow_method_code
91271            ,p_business_class_code     => l_bflow_class_code
91272            ,p_balance_type            => l_balance_type_code);
91273    ELSE
91274       NULL;
91275 -- No business flow processing for business flow method of NONE.
91276    END IF;
91277 
91278    --
91279    -- call analytical criteria
91280    --
91281    
91282    --
91283    -- call description
91284    --
91285    
91286 xla_ae_lines_pkg.SetLineDescription(
91287    p_ae_header_id => l_ae_header_id
91288   ,p_description  => Description_1 (
91289      p_application_id         => p_application_id
91290    , p_ae_header_id           => l_ae_header_id 
91291 , p_source_1 => p_source_1
91292 , p_source_2 => p_source_2
91293 , p_source_3 => p_source_3
91294 , p_source_4 => p_source_4
91295 , p_source_5 => p_source_5
91296    )
91297 );
91298 
91299 
91300    --
91301    -- call ADRs
91302    -- Bug 4922099
91303    --
91304    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91305         (NVL(l_actual_upg_option, 'N') = 'O') OR
91306         (NVL(l_enc_upg_option, 'N') = 'O')
91307       )
91308    THEN
91309    NULL;
91310    --
91311    --
91312    
91313   l_ccid := AcctDerRule_6(
91314            p_application_id           => p_application_id
91315          , p_ae_header_id             => l_ae_header_id 
91316 , p_source_11 => p_source_11
91317          , x_transaction_coa_id       => l_adr_transaction_coa_id
91318          , x_accounting_coa_id        => l_adr_accounting_coa_id
91319          , x_value_type_code          => l_adr_value_type_code
91320          , p_side                     => 'NA'
91321    );
91322 
91323    xla_ae_lines_pkg.set_ccid(
91324     p_code_combination_id          => l_ccid
91325   , p_value_type_code              => l_adr_value_type_code
91326   , p_transaction_coa_id           => l_adr_transaction_coa_id
91327   , p_accounting_coa_id            => l_adr_accounting_coa_id
91328   , p_adr_code                     => 'CST_DEFAULT'
91329   , p_adr_type_code                => 'S'
91330   , p_component_type               => l_component_type
91331   , p_component_code               => l_component_code
91332   , p_component_type_code          => l_component_type_code
91333   , p_component_appl_id            => l_component_appl_id
91334   , p_amb_context_code             => l_amb_context_code
91335   , p_side                         => 'NA'
91336   );
91337 
91338 
91339    --
91340    --
91341    END IF;
91342    --
91343    -- Bug 4922099
91344    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91345           (NVL(l_enc_upg_option, 'N') = 'O')
91346         ) AND
91347         (l_bflow_method_code = 'PRIOR_ENTRY')
91348       )
91349    THEN
91350       IF
91351       --
91352       1 = 2
91353       --
91354       THEN
91355       xla_accounting_err_pkg.build_message
91356                                     (p_appli_s_name            => 'XLA'
91357                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91358                                     ,p_token_1                 => 'LINE_NUMBER'
91359                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
91360                                     ,p_token_2                 => 'LINE_TYPE_NAME'
91361                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
91362                                                                              l_component_type
91363                                                                             ,l_component_code
91364                                                                             ,l_component_type_code
91365                                                                             ,l_component_appl_id
91366                                                                             ,l_amb_context_code
91367                                                                             ,l_entity_code
91368                                                                             ,l_event_class_code
91369                                                                            )
91370                                     ,p_token_3                 => 'OWNER'
91371                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
91372                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
91373                                                                           ,p_lookup_code    => l_component_type_code
91374                                                                          )
91375                                     ,p_token_4                 => 'PRODUCT_NAME'
91376                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91377                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91378                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91379                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91380                                     ,p_ae_header_id            =>  NULL
91381                                        );
91382 
91383         IF (C_LEVEL_ERROR>= g_log_level) THEN
91384                  trace
91385                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91386                       ,p_level    => C_LEVEL_ERROR
91387                       ,p_module   => l_log_module);
91388         END IF;
91389       END IF;
91390    END IF;
91391    --
91392    --
91393    ------------------------------------------------------------------------------------------------
91394    -- 4219869 Business Flow
91395    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91396    -- Prior Entry.  Currently, the following code is always generated.
91397    ------------------------------------------------------------------------------------------------
91398    XLA_AE_LINES_PKG.ValidateCurrentLine;
91399 
91400    ------------------------------------------------------------------------------------
91401    -- 4219869 Business Flow
91402    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91403    ------------------------------------------------------------------------------------
91404    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91405 
91406    ----------------------------------------------------------------------------------
91407    -- 4219869 Business Flow
91408    -- Update journal entry status -- Need to generate this within IF <condition>
91409    ----------------------------------------------------------------------------------
91410    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91411          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91412          ,p_balance_type_code => l_balance_type_code
91413          );
91414 
91415    -------------------------------------------------------------------------------------------
91416    -- 4262811 - Generate the Accrual Reversal lines
91417    -------------------------------------------------------------------------------------------
91418    BEGIN
91419       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91420                               (g_array_event(p_event_id).array_value_num('header_index'));
91421       IF l_acc_rev_flag IS NULL THEN
91422          l_acc_rev_flag := 'N';
91423       END IF;
91424    EXCEPTION
91425       WHEN OTHERS THEN
91426          l_acc_rev_flag := 'N';
91427    END;
91428    --
91429    IF (l_acc_rev_flag = 'Y') THEN
91430 
91431        -- 4645092  ------------------------------------------------------------------------------
91432        -- To allow MPA report to determine if it should generate report process
91433        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91434        ------------------------------------------------------------------------------------------
91435 
91436        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91437        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91438    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
91439    -- call ADRs
91440    -- Bug 4922099
91441    --
91442    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91443         (NVL(l_actual_upg_option, 'N') = 'O') OR
91444         (NVL(l_enc_upg_option, 'N') = 'O')
91445       )
91446    THEN
91447    NULL;
91448    --
91449    --
91450    
91451   l_ccid := AcctDerRule_6(
91452            p_application_id           => p_application_id
91453          , p_ae_header_id             => l_ae_header_id 
91454 , p_source_11 => p_source_11
91455          , x_transaction_coa_id       => l_adr_transaction_coa_id
91456          , x_accounting_coa_id        => l_adr_accounting_coa_id
91457          , x_value_type_code          => l_adr_value_type_code
91458          , p_side                     => 'NA'
91459    );
91460 
91461    xla_ae_lines_pkg.set_ccid(
91462     p_code_combination_id          => l_ccid
91463   , p_value_type_code              => l_adr_value_type_code
91464   , p_transaction_coa_id           => l_adr_transaction_coa_id
91465   , p_accounting_coa_id            => l_adr_accounting_coa_id
91466   , p_adr_code                     => 'CST_DEFAULT'
91467   , p_adr_type_code                => 'S'
91468   , p_component_type               => l_component_type
91469   , p_component_code               => l_component_code
91470   , p_component_type_code          => l_component_type_code
91471   , p_component_appl_id            => l_component_appl_id
91472   , p_amb_context_code             => l_amb_context_code
91473   , p_side                         => 'NA'
91474   );
91475 
91476 
91477    --
91478    --
91479    END IF;
91480 
91481        --
91482        -- Update the line information that should be overwritten
91483        --
91484        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91485                                          p_header_num   => 1);
91486        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
91487 
91488        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91489 
91490        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
91491           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91492        END IF;
91493 
91494       --
91495       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91496       --
91497       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91498           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
91499       ELSE
91500           ---------------------------------------------------------------------------------------------------
91501           -- 4262811a Switch Sign
91502           ---------------------------------------------------------------------------------------------------
91503           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
91504           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91505                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91506           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91507                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91508           -- 5132302
91509           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91510                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91511 
91512       END IF;
91513 
91514       -- 4955764
91515       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91516       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91517 
91518 
91519       XLA_AE_LINES_PKG.ValidateCurrentLine;
91520       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91521 
91522       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91523                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91524                ,p_balance_type_code => l_balance_type_code);
91525 
91526    END IF;
91527 
91528    -----------------------------------------------------------------------------------------
91529    -- 4262811 Multiperiod Accounting
91530    -----------------------------------------------------------------------------------------
91531      -- No MPA option is assigned.
91532 
91533 
91534 END IF;
91535 END IF;
91536 --
91537 
91538 --
91539 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91540    trace
91541       (p_msg      => 'END of AcctLineType_184'
91542       ,p_level    => C_LEVEL_PROCEDURE
91543       ,p_module   => l_log_module);
91544 END IF;
91545 --
91546 EXCEPTION
91547   WHEN xla_exceptions_pkg.application_exception THEN
91548       RAISE;
91549   WHEN OTHERS THEN
91550        xla_exceptions_pkg.raise_message
91551            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_184');
91552 END AcctLineType_184;
91553 --
91554 
91555 ---------------------------------------
91556 --
91557 -- PRIVATE FUNCTION
91558 --         AcctLineType_185
91559 --
91560 ---------------------------------------
91561 PROCEDURE AcctLineType_185 (
91562   p_application_id        IN NUMBER
91563  ,p_event_id              IN NUMBER
91564  ,p_calculate_acctd_flag  IN VARCHAR2
91565  ,p_calculate_g_l_flag    IN VARCHAR2
91566  ,p_actual_flag           IN OUT VARCHAR2
91567  ,p_balance_type_code     OUT VARCHAR2
91568  ,p_gain_or_loss_ref      OUT VARCHAR2
91569  
91570 --TRANSACTION_ID
91571  , p_source_1            IN NUMBER
91572 --Item Concatenated Segments
91573  , p_source_2            IN VARCHAR2
91574 --Transaction Quantity
91575  , p_source_3            IN NUMBER
91576 --Transaction Unit of Measure Code
91577  , p_source_4            IN VARCHAR2
91578 --Inventory Transaction Type Description
91579  , p_source_5            IN VARCHAR2
91580 --Cost Management Default Account
91581  , p_source_11            IN NUMBER
91582 --DISTRIBUTION_IDENTIFIER
91583  , p_source_84            IN NUMBER
91584 --Distribution Type
91585  , p_source_85            IN VARCHAR2
91586  , p_source_85_meaning    IN VARCHAR2
91587 --Entered Currency Code
91588  , p_source_88            IN VARCHAR2
91589 --Entered Amount
91590  , p_source_91            IN NUMBER
91591 --Currency Conversion Date
91592  , p_source_92            IN DATE
91593 --Currency Conversion Rate
91594  , p_source_93            IN NUMBER
91595 --Currency Conversion Type
91596  , p_source_94            IN VARCHAR2
91597 --Accounted Amount
91598  , p_source_95            IN NUMBER
91599 --Accounting Line Type
91600  , p_source_97            IN NUMBER
91601 )
91602 IS
91603 
91604 l_component_type              VARCHAR2(80);
91605 l_component_code              VARCHAR2(30);
91606 l_component_type_code         VARCHAR2(1);
91607 l_component_appl_id           INTEGER;
91608 l_amb_context_code            VARCHAR2(30);
91609 l_entity_code                 VARCHAR2(30);
91610 l_event_class_code            VARCHAR2(30);
91611 l_ae_header_id                NUMBER;
91612 l_event_type_code             VARCHAR2(30);
91613 l_line_definition_code        VARCHAR2(30);
91614 l_line_definition_owner_code  VARCHAR2(1);
91615 --
91616 -- adr variables
91617 l_segment                     VARCHAR2(30);
91618 l_ccid                        NUMBER;
91619 l_adr_transaction_coa_id      NUMBER;
91620 l_adr_accounting_coa_id       NUMBER;
91621 l_adr_flexfield_segment_code  VARCHAR2(30);
91622 l_adr_flex_value_set_id       NUMBER;
91623 l_adr_value_type_code         VARCHAR2(30);
91624 l_adr_value_combination_id    NUMBER;
91625 l_adr_value_segment_code      VARCHAR2(30);
91626 
91627 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
91628 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
91629 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
91630 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
91631 
91632 -- 4262811 Variables ------------------------------------------------------------------------------------------
91633 l_entered_amt_idx             NUMBER;
91634 l_accted_amt_idx              NUMBER;
91635 l_acc_rev_flag                VARCHAR2(1);
91636 l_accrual_line_num            NUMBER;
91637 l_tmp_amt                     NUMBER;
91638 l_acc_rev_natural_side_code   VARCHAR2(1);
91639 
91640 l_num_entries                 NUMBER;
91641 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
91642 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
91643 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
91644 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
91645 l_recog_line_1                NUMBER;
91646 l_recog_line_2                NUMBER;
91647 
91648 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
91649 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
91650 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
91651 
91652 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91653 
91654 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
91655 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
91656 
91657 ---------------------------------------------------------------------------------------------------------------
91658 
91659 
91660 --
91661 -- bulk performance
91662 --
91663 l_balance_type_code           VARCHAR2(1);
91664 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
91665 l_log_module                  VARCHAR2(240);
91666 
91667 --
91668 -- Upgrade strategy
91669 --
91670 l_actual_upg_option           VARCHAR2(1);
91671 l_enc_upg_option           VARCHAR2(1);
91672 
91673 --
91674 BEGIN
91675 --
91676 IF g_log_enabled THEN
91677       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_185';
91678 END IF;
91679 --
91680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91681 
91682       trace
91683          (p_msg      => 'BEGIN of AcctLineType_185'
91684          ,p_level    => C_LEVEL_PROCEDURE
91685          ,p_module   => l_log_module);
91686 
91687 END IF;
91688 --
91689 l_component_type             := 'AMB_JLT';
91690 l_component_code             := 'INTERORG_PROFIT_OPM';
91691 l_component_type_code        := 'S';
91692 l_component_appl_id          :=  707;
91693 l_amb_context_code           := 'DEFAULT';
91694 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
91695 l_event_class_code           := 'INT_ORDER_TO_EXP';
91696 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
91697 l_line_definition_owner_code := 'S';
91698 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_TP';
91699 --
91700 l_balance_type_code          := 'A';
91701 l_segment                     := NULL;
91702 l_ccid                        := NULL;
91703 l_adr_transaction_coa_id      := NULL;
91704 l_adr_accounting_coa_id       := NULL;
91705 l_adr_flexfield_segment_code  := NULL;
91706 l_adr_flex_value_set_id       := NULL;
91707 l_adr_value_type_code         := NULL;
91708 l_adr_value_combination_id    := NULL;
91709 l_adr_value_segment_code      := NULL;
91710 
91711 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
91712 l_bflow_class_code           := '';    -- 4219869 Business Flow
91713 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
91714 l_budgetary_control_flag     := 'N';
91715 
91716 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
91717 l_bflow_applied_to_amt       := NULL; -- 5132302
91718 l_entered_amt_idx            := NULL;          -- 4262811
91719 l_accted_amt_idx             := NULL;          -- 4262811
91720 l_acc_rev_flag               := NULL;          -- 4262811
91721 l_accrual_line_num           := NULL;          -- 4262811
91722 l_tmp_amt                    := NULL;          -- 4262811
91723 --
91724  
91725 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91726     l_balance_type_code <> 'B' THEN
91727 IF NVL(p_source_97,9E125) =  34
91728  THEN 
91729 
91730    --
91731    XLA_AE_LINES_PKG.SetNewLine;
91732 
91733    p_balance_type_code          := l_balance_type_code;
91734    -- set the flag so later we will know whether the gain loss line needs to be created
91735    
91736    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91737      p_actual_flag :='A';
91738    END IF;
91739 
91740    --
91741    -- bulk performance
91742    --
91743    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91744                                       p_header_num   => 0); -- 4262811
91745    --
91746    -- set accounting line options
91747    --
91748    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91749            p_natural_side_code          => 'D'
91750          , p_gain_or_loss_flag          => 'N'
91751          , p_gl_transfer_mode_code      => 'S'
91752          , p_acct_entry_type_code       => 'A'
91753          , p_switch_side_flag           => 'Y'
91754          , p_merge_duplicate_code       => 'N'
91755          );
91756    --
91757    l_acc_rev_natural_side_code := 'C';  -- 4262811
91758    -- 
91759    --
91760    -- set accounting line type info
91761    --
91762    xla_ae_lines_pkg.SetAcctLineType
91763       (p_component_type             => l_component_type
91764       ,p_event_type_code            => l_event_type_code
91765       ,p_line_definition_owner_code => l_line_definition_owner_code
91766       ,p_line_definition_code       => l_line_definition_code
91767       ,p_accounting_line_code       => l_component_code
91768       ,p_accounting_line_type_code  => l_component_type_code
91769       ,p_accounting_line_appl_id    => l_component_appl_id
91770       ,p_amb_context_code           => l_amb_context_code
91771       ,p_entity_code                => l_entity_code
91772       ,p_event_class_code           => l_event_class_code);
91773    --
91774    -- set accounting class
91775    --
91776    xla_ae_lines_pkg.SetAcctClass(
91777            p_accounting_class_code  => 'INTERORG_PROFIT'
91778          , p_ae_header_id           => l_ae_header_id
91779          );
91780 
91781    --
91782    -- set rounding class
91783    --
91784    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91785                       'INTERORG_PROFIT';
91786 
91787    --
91788    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91789    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91790    --
91791    -- bulk performance
91792    --
91793    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91794 
91795    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91796       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91797 
91798    -- 4955764
91799    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91801 
91802    -- 4458381 Public Sector Enh
91803    
91804    --
91805    -- set accounting attributes for the line type
91806    --
91807    l_entered_amt_idx := 3;
91808    l_accted_amt_idx  := 8;
91809    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
91810    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91811    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
91812    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91813    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
91814    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91815    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
91816    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91817    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
91818    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91819    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
91820    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91821    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
91822    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91823    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
91824    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91825    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
91826 
91827    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91828    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91829 
91830    ---------------------------------------------------------------------------------------------------------------
91831    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91832    ---------------------------------------------------------------------------------------------------------------
91833    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91834 
91835    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91836    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91837 
91838    IF xla_accounting_cache_pkg.GetValueChar
91839          (p_source_code         => 'LEDGER_CATEGORY_CODE'
91840          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91841    AND l_bflow_method_code = 'PRIOR_ENTRY'
91842 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91843    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91844          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91845        )
91846    THEN
91847          xla_ae_lines_pkg.BflowUpgEntry
91848            (p_business_method_code    => l_bflow_method_code
91849            ,p_business_class_code     => l_bflow_class_code
91850            ,p_balance_type            => l_balance_type_code);
91851    ELSE
91852       NULL;
91853 -- No business flow processing for business flow method of NONE.
91854    END IF;
91855 
91856    --
91857    -- call analytical criteria
91858    --
91859    
91860    --
91861    -- call description
91862    --
91863    
91864 xla_ae_lines_pkg.SetLineDescription(
91865    p_ae_header_id => l_ae_header_id
91866   ,p_description  => Description_1 (
91867      p_application_id         => p_application_id
91868    , p_ae_header_id           => l_ae_header_id 
91869 , p_source_1 => p_source_1
91870 , p_source_2 => p_source_2
91871 , p_source_3 => p_source_3
91872 , p_source_4 => p_source_4
91873 , p_source_5 => p_source_5
91874    )
91875 );
91876 
91877 
91878    --
91879    -- call ADRs
91880    -- Bug 4922099
91881    --
91882    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91883         (NVL(l_actual_upg_option, 'N') = 'O') OR
91884         (NVL(l_enc_upg_option, 'N') = 'O')
91885       )
91886    THEN
91887    NULL;
91888    --
91889    --
91890    
91891   l_ccid := AcctDerRule_6(
91892            p_application_id           => p_application_id
91893          , p_ae_header_id             => l_ae_header_id 
91894 , p_source_11 => p_source_11
91895          , x_transaction_coa_id       => l_adr_transaction_coa_id
91896          , x_accounting_coa_id        => l_adr_accounting_coa_id
91897          , x_value_type_code          => l_adr_value_type_code
91898          , p_side                     => 'NA'
91899    );
91900 
91901    xla_ae_lines_pkg.set_ccid(
91902     p_code_combination_id          => l_ccid
91903   , p_value_type_code              => l_adr_value_type_code
91904   , p_transaction_coa_id           => l_adr_transaction_coa_id
91905   , p_accounting_coa_id            => l_adr_accounting_coa_id
91906   , p_adr_code                     => 'CST_DEFAULT'
91907   , p_adr_type_code                => 'S'
91908   , p_component_type               => l_component_type
91909   , p_component_code               => l_component_code
91910   , p_component_type_code          => l_component_type_code
91911   , p_component_appl_id            => l_component_appl_id
91912   , p_amb_context_code             => l_amb_context_code
91913   , p_side                         => 'NA'
91914   );
91915 
91916 
91917    --
91918    --
91919    END IF;
91920    --
91921    -- Bug 4922099
91922    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91923           (NVL(l_enc_upg_option, 'N') = 'O')
91924         ) AND
91925         (l_bflow_method_code = 'PRIOR_ENTRY')
91926       )
91927    THEN
91928       IF
91929       --
91930       1 = 2
91931       --
91932       THEN
91933       xla_accounting_err_pkg.build_message
91934                                     (p_appli_s_name            => 'XLA'
91935                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91936                                     ,p_token_1                 => 'LINE_NUMBER'
91937                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
91938                                     ,p_token_2                 => 'LINE_TYPE_NAME'
91939                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
91940                                                                              l_component_type
91941                                                                             ,l_component_code
91942                                                                             ,l_component_type_code
91943                                                                             ,l_component_appl_id
91944                                                                             ,l_amb_context_code
91945                                                                             ,l_entity_code
91946                                                                             ,l_event_class_code
91947                                                                            )
91948                                     ,p_token_3                 => 'OWNER'
91949                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
91950                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
91951                                                                           ,p_lookup_code    => l_component_type_code
91952                                                                          )
91953                                     ,p_token_4                 => 'PRODUCT_NAME'
91954                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91955                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91956                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91957                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91958                                     ,p_ae_header_id            =>  NULL
91959                                        );
91960 
91961         IF (C_LEVEL_ERROR>= g_log_level) THEN
91962                  trace
91963                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91964                       ,p_level    => C_LEVEL_ERROR
91965                       ,p_module   => l_log_module);
91966         END IF;
91967       END IF;
91968    END IF;
91969    --
91970    --
91971    ------------------------------------------------------------------------------------------------
91972    -- 4219869 Business Flow
91973    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91974    -- Prior Entry.  Currently, the following code is always generated.
91975    ------------------------------------------------------------------------------------------------
91976    XLA_AE_LINES_PKG.ValidateCurrentLine;
91977 
91978    ------------------------------------------------------------------------------------
91979    -- 4219869 Business Flow
91980    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91981    ------------------------------------------------------------------------------------
91982    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91983 
91984    ----------------------------------------------------------------------------------
91985    -- 4219869 Business Flow
91986    -- Update journal entry status -- Need to generate this within IF <condition>
91987    ----------------------------------------------------------------------------------
91988    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91989          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91990          ,p_balance_type_code => l_balance_type_code
91991          );
91992 
91993    -------------------------------------------------------------------------------------------
91994    -- 4262811 - Generate the Accrual Reversal lines
91995    -------------------------------------------------------------------------------------------
91996    BEGIN
91997       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91998                               (g_array_event(p_event_id).array_value_num('header_index'));
91999       IF l_acc_rev_flag IS NULL THEN
92000          l_acc_rev_flag := 'N';
92001       END IF;
92002    EXCEPTION
92003       WHEN OTHERS THEN
92004          l_acc_rev_flag := 'N';
92005    END;
92006    --
92007    IF (l_acc_rev_flag = 'Y') THEN
92008 
92009        -- 4645092  ------------------------------------------------------------------------------
92010        -- To allow MPA report to determine if it should generate report process
92011        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92012        ------------------------------------------------------------------------------------------
92013 
92014        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92015        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92016    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
92017    -- call ADRs
92018    -- Bug 4922099
92019    --
92020    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92021         (NVL(l_actual_upg_option, 'N') = 'O') OR
92022         (NVL(l_enc_upg_option, 'N') = 'O')
92023       )
92024    THEN
92025    NULL;
92026    --
92027    --
92028    
92029   l_ccid := AcctDerRule_6(
92030            p_application_id           => p_application_id
92031          , p_ae_header_id             => l_ae_header_id 
92032 , p_source_11 => p_source_11
92033          , x_transaction_coa_id       => l_adr_transaction_coa_id
92034          , x_accounting_coa_id        => l_adr_accounting_coa_id
92035          , x_value_type_code          => l_adr_value_type_code
92036          , p_side                     => 'NA'
92037    );
92038 
92039    xla_ae_lines_pkg.set_ccid(
92040     p_code_combination_id          => l_ccid
92041   , p_value_type_code              => l_adr_value_type_code
92042   , p_transaction_coa_id           => l_adr_transaction_coa_id
92043   , p_accounting_coa_id            => l_adr_accounting_coa_id
92044   , p_adr_code                     => 'CST_DEFAULT'
92045   , p_adr_type_code                => 'S'
92046   , p_component_type               => l_component_type
92047   , p_component_code               => l_component_code
92048   , p_component_type_code          => l_component_type_code
92049   , p_component_appl_id            => l_component_appl_id
92050   , p_amb_context_code             => l_amb_context_code
92051   , p_side                         => 'NA'
92052   );
92053 
92054 
92055    --
92056    --
92057    END IF;
92058 
92059        --
92060        -- Update the line information that should be overwritten
92061        --
92062        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92063                                          p_header_num   => 1);
92064        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
92065 
92066        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92067 
92068        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
92069           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92070        END IF;
92071 
92072       --
92073       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92074       --
92075       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92076           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
92077       ELSE
92078           ---------------------------------------------------------------------------------------------------
92079           -- 4262811a Switch Sign
92080           ---------------------------------------------------------------------------------------------------
92081           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
92082           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92083                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92084           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92085                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92086           -- 5132302
92087           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92088                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92089 
92090       END IF;
92091 
92092       -- 4955764
92093       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92094       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92095 
92096 
92097       XLA_AE_LINES_PKG.ValidateCurrentLine;
92098       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92099 
92100       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92101                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92102                ,p_balance_type_code => l_balance_type_code);
92103 
92104    END IF;
92105 
92106    -----------------------------------------------------------------------------------------
92107    -- 4262811 Multiperiod Accounting
92108    -----------------------------------------------------------------------------------------
92109      -- No MPA option is assigned.
92110 
92111 
92112 END IF;
92113 END IF;
92114 --
92115 
92116 --
92117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92118    trace
92119       (p_msg      => 'END of AcctLineType_185'
92120       ,p_level    => C_LEVEL_PROCEDURE
92121       ,p_module   => l_log_module);
92122 END IF;
92123 --
92124 EXCEPTION
92125   WHEN xla_exceptions_pkg.application_exception THEN
92126       RAISE;
92127   WHEN OTHERS THEN
92128        xla_exceptions_pkg.raise_message
92129            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_185');
92130 END AcctLineType_185;
92131 --
92132 
92133 ---------------------------------------
92134 --
92135 -- PRIVATE FUNCTION
92136 --         AcctLineType_186
92137 --
92138 ---------------------------------------
92139 PROCEDURE AcctLineType_186 (
92140   p_application_id        IN NUMBER
92141  ,p_event_id              IN NUMBER
92142  ,p_calculate_acctd_flag  IN VARCHAR2
92143  ,p_calculate_g_l_flag    IN VARCHAR2
92144  ,p_actual_flag           IN OUT VARCHAR2
92145  ,p_balance_type_code     OUT VARCHAR2
92146  ,p_gain_or_loss_ref      OUT VARCHAR2
92147  
92148 --TRANSACTION_ID
92149  , p_source_1            IN NUMBER
92150 --Item Concatenated Segments
92151  , p_source_2            IN VARCHAR2
92152 --Transaction Quantity
92153  , p_source_3            IN NUMBER
92154 --Transaction Unit of Measure Code
92155  , p_source_4            IN VARCHAR2
92156 --Inventory Transaction Type Description
92157  , p_source_5            IN VARCHAR2
92158 --Interorg Receivables Account
92159  , p_source_59            IN NUMBER
92160 --DISTRIBUTION_IDENTIFIER
92161  , p_source_84            IN NUMBER
92162 --Distribution Type
92163  , p_source_85            IN VARCHAR2
92164  , p_source_85_meaning    IN VARCHAR2
92165 --Entered Currency Code
92166  , p_source_88            IN VARCHAR2
92167 --Entered Amount
92168  , p_source_91            IN NUMBER
92169 --Currency Conversion Date
92170  , p_source_92            IN DATE
92171 --Currency Conversion Rate
92172  , p_source_93            IN NUMBER
92173 --Currency Conversion Type
92174  , p_source_94            IN VARCHAR2
92175 --Accounted Amount
92176  , p_source_95            IN NUMBER
92177 --Accounting Line Type
92178  , p_source_97            IN NUMBER
92179 )
92180 IS
92181 
92182 l_component_type              VARCHAR2(80);
92183 l_component_code              VARCHAR2(30);
92184 l_component_type_code         VARCHAR2(1);
92185 l_component_appl_id           INTEGER;
92186 l_amb_context_code            VARCHAR2(30);
92187 l_entity_code                 VARCHAR2(30);
92188 l_event_class_code            VARCHAR2(30);
92189 l_ae_header_id                NUMBER;
92190 l_event_type_code             VARCHAR2(30);
92191 l_line_definition_code        VARCHAR2(30);
92192 l_line_definition_owner_code  VARCHAR2(1);
92193 --
92194 -- adr variables
92195 l_segment                     VARCHAR2(30);
92196 l_ccid                        NUMBER;
92197 l_adr_transaction_coa_id      NUMBER;
92198 l_adr_accounting_coa_id       NUMBER;
92199 l_adr_flexfield_segment_code  VARCHAR2(30);
92200 l_adr_flex_value_set_id       NUMBER;
92201 l_adr_value_type_code         VARCHAR2(30);
92202 l_adr_value_combination_id    NUMBER;
92203 l_adr_value_segment_code      VARCHAR2(30);
92204 
92205 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92206 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92207 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92208 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92209 
92210 -- 4262811 Variables ------------------------------------------------------------------------------------------
92211 l_entered_amt_idx             NUMBER;
92212 l_accted_amt_idx              NUMBER;
92213 l_acc_rev_flag                VARCHAR2(1);
92214 l_accrual_line_num            NUMBER;
92215 l_tmp_amt                     NUMBER;
92216 l_acc_rev_natural_side_code   VARCHAR2(1);
92217 
92218 l_num_entries                 NUMBER;
92219 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92220 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92221 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92222 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92223 l_recog_line_1                NUMBER;
92224 l_recog_line_2                NUMBER;
92225 
92226 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92227 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92228 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92229 
92230 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92231 
92232 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92233 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92234 
92235 ---------------------------------------------------------------------------------------------------------------
92236 
92237 
92238 --
92239 -- bulk performance
92240 --
92241 l_balance_type_code           VARCHAR2(1);
92242 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92243 l_log_module                  VARCHAR2(240);
92244 
92245 --
92246 -- Upgrade strategy
92247 --
92248 l_actual_upg_option           VARCHAR2(1);
92249 l_enc_upg_option           VARCHAR2(1);
92250 
92251 --
92252 BEGIN
92253 --
92254 IF g_log_enabled THEN
92255       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_186';
92256 END IF;
92257 --
92258 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92259 
92260       trace
92261          (p_msg      => 'BEGIN of AcctLineType_186'
92262          ,p_level    => C_LEVEL_PROCEDURE
92263          ,p_module   => l_log_module);
92264 
92265 END IF;
92266 --
92267 l_component_type             := 'AMB_JLT';
92268 l_component_code             := 'INTERORG_RECEIVABLES';
92269 l_component_type_code        := 'S';
92270 l_component_appl_id          :=  707;
92271 l_amb_context_code           := 'DEFAULT';
92272 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
92273 l_event_class_code           := 'USER_DEFINE';
92274 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
92275 l_line_definition_owner_code := 'S';
92276 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
92277 --
92278 l_balance_type_code          := 'A';
92279 l_segment                     := NULL;
92280 l_ccid                        := NULL;
92281 l_adr_transaction_coa_id      := NULL;
92282 l_adr_accounting_coa_id       := NULL;
92283 l_adr_flexfield_segment_code  := NULL;
92284 l_adr_flex_value_set_id       := NULL;
92285 l_adr_value_type_code         := NULL;
92286 l_adr_value_combination_id    := NULL;
92287 l_adr_value_segment_code      := NULL;
92288 
92289 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92290 l_bflow_class_code           := '';    -- 4219869 Business Flow
92291 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92292 l_budgetary_control_flag     := 'N';
92293 
92294 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92295 l_bflow_applied_to_amt       := NULL; -- 5132302
92296 l_entered_amt_idx            := NULL;          -- 4262811
92297 l_accted_amt_idx             := NULL;          -- 4262811
92298 l_acc_rev_flag               := NULL;          -- 4262811
92299 l_accrual_line_num           := NULL;          -- 4262811
92300 l_tmp_amt                    := NULL;          -- 4262811
92301 --
92302  
92303 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92304     l_balance_type_code <> 'B' THEN
92305 IF NVL(p_source_97,9E125) =  10
92306  THEN 
92307 
92308    --
92309    XLA_AE_LINES_PKG.SetNewLine;
92310 
92311    p_balance_type_code          := l_balance_type_code;
92312    -- set the flag so later we will know whether the gain loss line needs to be created
92313    
92314    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92315      p_actual_flag :='A';
92316    END IF;
92317 
92318    --
92319    -- bulk performance
92320    --
92321    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92322                                       p_header_num   => 0); -- 4262811
92323    --
92324    -- set accounting line options
92325    --
92326    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92327            p_natural_side_code          => 'D'
92328          , p_gain_or_loss_flag          => 'N'
92329          , p_gl_transfer_mode_code      => 'S'
92330          , p_acct_entry_type_code       => 'A'
92331          , p_switch_side_flag           => 'Y'
92332          , p_merge_duplicate_code       => 'N'
92333          );
92334    --
92335    l_acc_rev_natural_side_code := 'C';  -- 4262811
92336    -- 
92337    --
92338    -- set accounting line type info
92339    --
92340    xla_ae_lines_pkg.SetAcctLineType
92341       (p_component_type             => l_component_type
92342       ,p_event_type_code            => l_event_type_code
92343       ,p_line_definition_owner_code => l_line_definition_owner_code
92344       ,p_line_definition_code       => l_line_definition_code
92345       ,p_accounting_line_code       => l_component_code
92346       ,p_accounting_line_type_code  => l_component_type_code
92347       ,p_accounting_line_appl_id    => l_component_appl_id
92348       ,p_amb_context_code           => l_amb_context_code
92349       ,p_entity_code                => l_entity_code
92350       ,p_event_class_code           => l_event_class_code);
92351    --
92352    -- set accounting class
92353    --
92354    xla_ae_lines_pkg.SetAcctClass(
92355            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
92356          , p_ae_header_id           => l_ae_header_id
92357          );
92358 
92359    --
92360    -- set rounding class
92361    --
92362    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92363                       'INTERORG_RECEIVABLES';
92364 
92365    --
92366    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92367    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92368    --
92369    -- bulk performance
92370    --
92371    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92372 
92373    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92374       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92375 
92376    -- 4955764
92377    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92378       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92379 
92380    -- 4458381 Public Sector Enh
92381    
92382    --
92383    -- set accounting attributes for the line type
92384    --
92385    l_entered_amt_idx := 3;
92386    l_accted_amt_idx  := 8;
92387    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
92388    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92389    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
92390    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92391    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
92392    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92393    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
92394    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92395    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
92396    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92397    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
92398    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92399    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
92400    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92401    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
92402    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92403    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
92404 
92405    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92406    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92407 
92408    ---------------------------------------------------------------------------------------------------------------
92409    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92410    ---------------------------------------------------------------------------------------------------------------
92411    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92412 
92413    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92414    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92415 
92416    IF xla_accounting_cache_pkg.GetValueChar
92417          (p_source_code         => 'LEDGER_CATEGORY_CODE'
92418          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92419    AND l_bflow_method_code = 'PRIOR_ENTRY'
92420 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92421    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92422          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92423        )
92424    THEN
92425          xla_ae_lines_pkg.BflowUpgEntry
92426            (p_business_method_code    => l_bflow_method_code
92427            ,p_business_class_code     => l_bflow_class_code
92428            ,p_balance_type            => l_balance_type_code);
92429    ELSE
92430       NULL;
92431 -- No business flow processing for business flow method of NONE.
92432    END IF;
92433 
92434    --
92435    -- call analytical criteria
92436    --
92437    
92438    --
92439    -- call description
92440    --
92441    
92442 xla_ae_lines_pkg.SetLineDescription(
92443    p_ae_header_id => l_ae_header_id
92444   ,p_description  => Description_1 (
92445      p_application_id         => p_application_id
92446    , p_ae_header_id           => l_ae_header_id 
92447 , p_source_1 => p_source_1
92448 , p_source_2 => p_source_2
92449 , p_source_3 => p_source_3
92450 , p_source_4 => p_source_4
92451 , p_source_5 => p_source_5
92452    )
92453 );
92454 
92455 
92456    --
92457    -- call ADRs
92458    -- Bug 4922099
92459    --
92460    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92461         (NVL(l_actual_upg_option, 'N') = 'O') OR
92462         (NVL(l_enc_upg_option, 'N') = 'O')
92463       )
92464    THEN
92465    NULL;
92466    --
92467    --
92468    
92469   l_ccid := AcctDerRule_33(
92470            p_application_id           => p_application_id
92471          , p_ae_header_id             => l_ae_header_id 
92472 , p_source_59 => p_source_59
92473          , x_transaction_coa_id       => l_adr_transaction_coa_id
92474          , x_accounting_coa_id        => l_adr_accounting_coa_id
92475          , x_value_type_code          => l_adr_value_type_code
92476          , p_side                     => 'NA'
92477    );
92478 
92479    xla_ae_lines_pkg.set_ccid(
92480     p_code_combination_id          => l_ccid
92481   , p_value_type_code              => l_adr_value_type_code
92482   , p_transaction_coa_id           => l_adr_transaction_coa_id
92483   , p_accounting_coa_id            => l_adr_accounting_coa_id
92484   , p_adr_code                     => 'PI_RECEIVABLES'
92485   , p_adr_type_code                => 'S'
92486   , p_component_type               => l_component_type
92487   , p_component_code               => l_component_code
92488   , p_component_type_code          => l_component_type_code
92489   , p_component_appl_id            => l_component_appl_id
92490   , p_amb_context_code             => l_amb_context_code
92491   , p_side                         => 'NA'
92492   );
92493 
92494 
92495    --
92496    --
92497    END IF;
92498    --
92499    -- Bug 4922099
92500    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92501           (NVL(l_enc_upg_option, 'N') = 'O')
92502         ) AND
92503         (l_bflow_method_code = 'PRIOR_ENTRY')
92504       )
92505    THEN
92506       IF
92507       --
92508       1 = 2
92509       --
92510       THEN
92511       xla_accounting_err_pkg.build_message
92512                                     (p_appli_s_name            => 'XLA'
92513                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92514                                     ,p_token_1                 => 'LINE_NUMBER'
92515                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
92516                                     ,p_token_2                 => 'LINE_TYPE_NAME'
92517                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
92518                                                                              l_component_type
92519                                                                             ,l_component_code
92520                                                                             ,l_component_type_code
92521                                                                             ,l_component_appl_id
92522                                                                             ,l_amb_context_code
92523                                                                             ,l_entity_code
92524                                                                             ,l_event_class_code
92525                                                                            )
92526                                     ,p_token_3                 => 'OWNER'
92527                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
92528                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
92529                                                                           ,p_lookup_code    => l_component_type_code
92530                                                                          )
92531                                     ,p_token_4                 => 'PRODUCT_NAME'
92532                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92533                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92534                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92535                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92536                                     ,p_ae_header_id            =>  NULL
92537                                        );
92538 
92539         IF (C_LEVEL_ERROR>= g_log_level) THEN
92540                  trace
92541                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92542                       ,p_level    => C_LEVEL_ERROR
92543                       ,p_module   => l_log_module);
92544         END IF;
92545       END IF;
92546    END IF;
92547    --
92548    --
92549    ------------------------------------------------------------------------------------------------
92550    -- 4219869 Business Flow
92551    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92552    -- Prior Entry.  Currently, the following code is always generated.
92553    ------------------------------------------------------------------------------------------------
92554    XLA_AE_LINES_PKG.ValidateCurrentLine;
92555 
92556    ------------------------------------------------------------------------------------
92557    -- 4219869 Business Flow
92558    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92559    ------------------------------------------------------------------------------------
92560    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92561 
92562    ----------------------------------------------------------------------------------
92563    -- 4219869 Business Flow
92564    -- Update journal entry status -- Need to generate this within IF <condition>
92565    ----------------------------------------------------------------------------------
92566    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92567          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92568          ,p_balance_type_code => l_balance_type_code
92569          );
92570 
92571    -------------------------------------------------------------------------------------------
92572    -- 4262811 - Generate the Accrual Reversal lines
92573    -------------------------------------------------------------------------------------------
92574    BEGIN
92575       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92576                               (g_array_event(p_event_id).array_value_num('header_index'));
92577       IF l_acc_rev_flag IS NULL THEN
92578          l_acc_rev_flag := 'N';
92579       END IF;
92580    EXCEPTION
92581       WHEN OTHERS THEN
92582          l_acc_rev_flag := 'N';
92583    END;
92584    --
92585    IF (l_acc_rev_flag = 'Y') THEN
92586 
92587        -- 4645092  ------------------------------------------------------------------------------
92588        -- To allow MPA report to determine if it should generate report process
92589        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92590        ------------------------------------------------------------------------------------------
92591 
92592        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92593        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92594    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
92595    -- call ADRs
92596    -- Bug 4922099
92597    --
92598    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92599         (NVL(l_actual_upg_option, 'N') = 'O') OR
92600         (NVL(l_enc_upg_option, 'N') = 'O')
92601       )
92602    THEN
92603    NULL;
92604    --
92605    --
92606    
92607   l_ccid := AcctDerRule_33(
92608            p_application_id           => p_application_id
92609          , p_ae_header_id             => l_ae_header_id 
92610 , p_source_59 => p_source_59
92611          , x_transaction_coa_id       => l_adr_transaction_coa_id
92612          , x_accounting_coa_id        => l_adr_accounting_coa_id
92613          , x_value_type_code          => l_adr_value_type_code
92614          , p_side                     => 'NA'
92615    );
92616 
92617    xla_ae_lines_pkg.set_ccid(
92618     p_code_combination_id          => l_ccid
92619   , p_value_type_code              => l_adr_value_type_code
92620   , p_transaction_coa_id           => l_adr_transaction_coa_id
92621   , p_accounting_coa_id            => l_adr_accounting_coa_id
92622   , p_adr_code                     => 'PI_RECEIVABLES'
92623   , p_adr_type_code                => 'S'
92624   , p_component_type               => l_component_type
92625   , p_component_code               => l_component_code
92626   , p_component_type_code          => l_component_type_code
92627   , p_component_appl_id            => l_component_appl_id
92628   , p_amb_context_code             => l_amb_context_code
92629   , p_side                         => 'NA'
92630   );
92631 
92632 
92633    --
92634    --
92635    END IF;
92636 
92637        --
92638        -- Update the line information that should be overwritten
92639        --
92640        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92641                                          p_header_num   => 1);
92642        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
92643 
92644        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92645 
92646        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
92647           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92648        END IF;
92649 
92650       --
92651       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92652       --
92653       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92654           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
92655       ELSE
92656           ---------------------------------------------------------------------------------------------------
92657           -- 4262811a Switch Sign
92658           ---------------------------------------------------------------------------------------------------
92659           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
92660           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92661                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92662           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92663                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92664           -- 5132302
92665           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92666                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92667 
92668       END IF;
92669 
92670       -- 4955764
92671       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92672       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92673 
92674 
92675       XLA_AE_LINES_PKG.ValidateCurrentLine;
92676       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92677 
92678       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92679                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92680                ,p_balance_type_code => l_balance_type_code);
92681 
92682    END IF;
92683 
92684    -----------------------------------------------------------------------------------------
92685    -- 4262811 Multiperiod Accounting
92686    -----------------------------------------------------------------------------------------
92687      -- No MPA option is assigned.
92688 
92689 
92690 END IF;
92691 END IF;
92692 --
92693 
92694 --
92695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92696    trace
92697       (p_msg      => 'END of AcctLineType_186'
92698       ,p_level    => C_LEVEL_PROCEDURE
92699       ,p_module   => l_log_module);
92700 END IF;
92701 --
92702 EXCEPTION
92703   WHEN xla_exceptions_pkg.application_exception THEN
92704       RAISE;
92705   WHEN OTHERS THEN
92706        xla_exceptions_pkg.raise_message
92707            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_186');
92708 END AcctLineType_186;
92709 --
92710 
92711 ---------------------------------------
92712 --
92713 -- PRIVATE FUNCTION
92714 --         AcctLineType_187
92715 --
92716 ---------------------------------------
92717 PROCEDURE AcctLineType_187 (
92718   p_application_id        IN NUMBER
92719  ,p_event_id              IN NUMBER
92720  ,p_calculate_acctd_flag  IN VARCHAR2
92721  ,p_calculate_g_l_flag    IN VARCHAR2
92722  ,p_actual_flag           IN OUT VARCHAR2
92723  ,p_balance_type_code     OUT VARCHAR2
92724  ,p_gain_or_loss_ref      OUT VARCHAR2
92725  
92726 --TRANSACTION_ID
92727  , p_source_1            IN NUMBER
92728 --Item Concatenated Segments
92729  , p_source_2            IN VARCHAR2
92730 --Transaction Quantity
92731  , p_source_3            IN NUMBER
92732 --Transaction Unit of Measure Code
92733  , p_source_4            IN VARCHAR2
92734 --Inventory Transaction Type Description
92735  , p_source_5            IN VARCHAR2
92736 --Interorg Receivables Account
92737  , p_source_59            IN NUMBER
92738 --DISTRIBUTION_IDENTIFIER
92739  , p_source_84            IN NUMBER
92740 --Distribution Type
92741  , p_source_85            IN VARCHAR2
92742  , p_source_85_meaning    IN VARCHAR2
92743 --Entered Currency Code
92744  , p_source_88            IN VARCHAR2
92745 --Entered Amount
92746  , p_source_91            IN NUMBER
92747 --Currency Conversion Date
92748  , p_source_92            IN DATE
92749 --Currency Conversion Rate
92750  , p_source_93            IN NUMBER
92751 --Currency Conversion Type
92752  , p_source_94            IN VARCHAR2
92753 --Accounted Amount
92754  , p_source_95            IN NUMBER
92755 --Accounting Line Type
92756  , p_source_97            IN NUMBER
92757 )
92758 IS
92759 
92760 l_component_type              VARCHAR2(80);
92761 l_component_code              VARCHAR2(30);
92762 l_component_type_code         VARCHAR2(1);
92763 l_component_appl_id           INTEGER;
92764 l_amb_context_code            VARCHAR2(30);
92765 l_entity_code                 VARCHAR2(30);
92766 l_event_class_code            VARCHAR2(30);
92767 l_ae_header_id                NUMBER;
92768 l_event_type_code             VARCHAR2(30);
92769 l_line_definition_code        VARCHAR2(30);
92770 l_line_definition_owner_code  VARCHAR2(1);
92771 --
92772 -- adr variables
92773 l_segment                     VARCHAR2(30);
92774 l_ccid                        NUMBER;
92775 l_adr_transaction_coa_id      NUMBER;
92776 l_adr_accounting_coa_id       NUMBER;
92777 l_adr_flexfield_segment_code  VARCHAR2(30);
92778 l_adr_flex_value_set_id       NUMBER;
92779 l_adr_value_type_code         VARCHAR2(30);
92780 l_adr_value_combination_id    NUMBER;
92781 l_adr_value_segment_code      VARCHAR2(30);
92782 
92783 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
92784 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
92785 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
92786 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
92787 
92788 -- 4262811 Variables ------------------------------------------------------------------------------------------
92789 l_entered_amt_idx             NUMBER;
92790 l_accted_amt_idx              NUMBER;
92791 l_acc_rev_flag                VARCHAR2(1);
92792 l_accrual_line_num            NUMBER;
92793 l_tmp_amt                     NUMBER;
92794 l_acc_rev_natural_side_code   VARCHAR2(1);
92795 
92796 l_num_entries                 NUMBER;
92797 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
92798 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
92799 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
92800 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
92801 l_recog_line_1                NUMBER;
92802 l_recog_line_2                NUMBER;
92803 
92804 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
92805 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
92806 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
92807 
92808 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92809 
92810 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
92811 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
92812 
92813 ---------------------------------------------------------------------------------------------------------------
92814 
92815 
92816 --
92817 -- bulk performance
92818 --
92819 l_balance_type_code           VARCHAR2(1);
92820 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
92821 l_log_module                  VARCHAR2(240);
92822 
92823 --
92824 -- Upgrade strategy
92825 --
92826 l_actual_upg_option           VARCHAR2(1);
92827 l_enc_upg_option           VARCHAR2(1);
92828 
92829 --
92830 BEGIN
92831 --
92832 IF g_log_enabled THEN
92833       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_187';
92834 END IF;
92835 --
92836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92837 
92838       trace
92839          (p_msg      => 'BEGIN of AcctLineType_187'
92840          ,p_level    => C_LEVEL_PROCEDURE
92841          ,p_module   => l_log_module);
92842 
92843 END IF;
92844 --
92845 l_component_type             := 'AMB_JLT';
92846 l_component_code             := 'INTERORG_RECEIVABLES';
92847 l_component_type_code        := 'S';
92848 l_component_appl_id          :=  707;
92849 l_amb_context_code           := 'DEFAULT';
92850 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
92851 l_event_class_code           := 'INT_ORDER_TO_EXP';
92852 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
92853 l_line_definition_owner_code := 'S';
92854 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_TP';
92855 --
92856 l_balance_type_code          := 'A';
92857 l_segment                     := NULL;
92858 l_ccid                        := NULL;
92859 l_adr_transaction_coa_id      := NULL;
92860 l_adr_accounting_coa_id       := NULL;
92861 l_adr_flexfield_segment_code  := NULL;
92862 l_adr_flex_value_set_id       := NULL;
92863 l_adr_value_type_code         := NULL;
92864 l_adr_value_combination_id    := NULL;
92865 l_adr_value_segment_code      := NULL;
92866 
92867 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
92868 l_bflow_class_code           := '';    -- 4219869 Business Flow
92869 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
92870 l_budgetary_control_flag     := 'N';
92871 
92872 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
92873 l_bflow_applied_to_amt       := NULL; -- 5132302
92874 l_entered_amt_idx            := NULL;          -- 4262811
92875 l_accted_amt_idx             := NULL;          -- 4262811
92876 l_acc_rev_flag               := NULL;          -- 4262811
92877 l_accrual_line_num           := NULL;          -- 4262811
92878 l_tmp_amt                    := NULL;          -- 4262811
92879 --
92880  
92881 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92882     l_balance_type_code <> 'B' THEN
92883 IF NVL(p_source_97,9E125) =  10
92884  THEN 
92885 
92886    --
92887    XLA_AE_LINES_PKG.SetNewLine;
92888 
92889    p_balance_type_code          := l_balance_type_code;
92890    -- set the flag so later we will know whether the gain loss line needs to be created
92891    
92892    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92893      p_actual_flag :='A';
92894    END IF;
92895 
92896    --
92897    -- bulk performance
92898    --
92899    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92900                                       p_header_num   => 0); -- 4262811
92901    --
92902    -- set accounting line options
92903    --
92904    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92905            p_natural_side_code          => 'D'
92906          , p_gain_or_loss_flag          => 'N'
92907          , p_gl_transfer_mode_code      => 'S'
92908          , p_acct_entry_type_code       => 'A'
92909          , p_switch_side_flag           => 'Y'
92910          , p_merge_duplicate_code       => 'N'
92911          );
92912    --
92913    l_acc_rev_natural_side_code := 'C';  -- 4262811
92914    -- 
92915    --
92916    -- set accounting line type info
92917    --
92918    xla_ae_lines_pkg.SetAcctLineType
92919       (p_component_type             => l_component_type
92920       ,p_event_type_code            => l_event_type_code
92921       ,p_line_definition_owner_code => l_line_definition_owner_code
92922       ,p_line_definition_code       => l_line_definition_code
92923       ,p_accounting_line_code       => l_component_code
92924       ,p_accounting_line_type_code  => l_component_type_code
92925       ,p_accounting_line_appl_id    => l_component_appl_id
92926       ,p_amb_context_code           => l_amb_context_code
92927       ,p_entity_code                => l_entity_code
92928       ,p_event_class_code           => l_event_class_code);
92929    --
92930    -- set accounting class
92931    --
92932    xla_ae_lines_pkg.SetAcctClass(
92933            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
92934          , p_ae_header_id           => l_ae_header_id
92935          );
92936 
92937    --
92938    -- set rounding class
92939    --
92940    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92941                       'INTERORG_RECEIVABLES';
92942 
92943    --
92944    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92945    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92946    --
92947    -- bulk performance
92948    --
92949    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92950 
92951    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92952       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92953 
92954    -- 4955764
92955    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92957 
92958    -- 4458381 Public Sector Enh
92959    
92960    --
92961    -- set accounting attributes for the line type
92962    --
92963    l_entered_amt_idx := 3;
92964    l_accted_amt_idx  := 8;
92965    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
92966    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92967    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
92968    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92969    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
92970    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92971    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
92972    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92973    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
92974    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92975    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
92976    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92977    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
92978    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92979    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
92980    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92981    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
92982 
92983    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92984    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92985 
92986    ---------------------------------------------------------------------------------------------------------------
92987    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92988    ---------------------------------------------------------------------------------------------------------------
92989    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92990 
92991    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92992    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92993 
92994    IF xla_accounting_cache_pkg.GetValueChar
92995          (p_source_code         => 'LEDGER_CATEGORY_CODE'
92996          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92997    AND l_bflow_method_code = 'PRIOR_ENTRY'
92998 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92999    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93000          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93001        )
93002    THEN
93003          xla_ae_lines_pkg.BflowUpgEntry
93004            (p_business_method_code    => l_bflow_method_code
93005            ,p_business_class_code     => l_bflow_class_code
93006            ,p_balance_type            => l_balance_type_code);
93007    ELSE
93008       NULL;
93009 -- No business flow processing for business flow method of NONE.
93010    END IF;
93011 
93012    --
93013    -- call analytical criteria
93014    --
93015    
93016    --
93017    -- call description
93018    --
93019    
93020 xla_ae_lines_pkg.SetLineDescription(
93021    p_ae_header_id => l_ae_header_id
93022   ,p_description  => Description_1 (
93023      p_application_id         => p_application_id
93024    , p_ae_header_id           => l_ae_header_id 
93025 , p_source_1 => p_source_1
93026 , p_source_2 => p_source_2
93027 , p_source_3 => p_source_3
93028 , p_source_4 => p_source_4
93029 , p_source_5 => p_source_5
93030    )
93031 );
93032 
93033 
93034    --
93035    -- call ADRs
93036    -- Bug 4922099
93037    --
93038    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93039         (NVL(l_actual_upg_option, 'N') = 'O') OR
93040         (NVL(l_enc_upg_option, 'N') = 'O')
93041       )
93042    THEN
93043    NULL;
93044    --
93045    --
93046    
93047   l_ccid := AcctDerRule_33(
93048            p_application_id           => p_application_id
93049          , p_ae_header_id             => l_ae_header_id 
93050 , p_source_59 => p_source_59
93051          , x_transaction_coa_id       => l_adr_transaction_coa_id
93052          , x_accounting_coa_id        => l_adr_accounting_coa_id
93053          , x_value_type_code          => l_adr_value_type_code
93054          , p_side                     => 'NA'
93055    );
93056 
93057    xla_ae_lines_pkg.set_ccid(
93058     p_code_combination_id          => l_ccid
93059   , p_value_type_code              => l_adr_value_type_code
93060   , p_transaction_coa_id           => l_adr_transaction_coa_id
93061   , p_accounting_coa_id            => l_adr_accounting_coa_id
93062   , p_adr_code                     => 'PI_RECEIVABLES'
93063   , p_adr_type_code                => 'S'
93064   , p_component_type               => l_component_type
93065   , p_component_code               => l_component_code
93066   , p_component_type_code          => l_component_type_code
93067   , p_component_appl_id            => l_component_appl_id
93068   , p_amb_context_code             => l_amb_context_code
93069   , p_side                         => 'NA'
93070   );
93071 
93072 
93073    --
93074    --
93075    END IF;
93076    --
93077    -- Bug 4922099
93078    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93079           (NVL(l_enc_upg_option, 'N') = 'O')
93080         ) AND
93081         (l_bflow_method_code = 'PRIOR_ENTRY')
93082       )
93083    THEN
93084       IF
93085       --
93086       1 = 2
93087       --
93088       THEN
93089       xla_accounting_err_pkg.build_message
93090                                     (p_appli_s_name            => 'XLA'
93091                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93092                                     ,p_token_1                 => 'LINE_NUMBER'
93093                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
93094                                     ,p_token_2                 => 'LINE_TYPE_NAME'
93095                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
93096                                                                              l_component_type
93097                                                                             ,l_component_code
93098                                                                             ,l_component_type_code
93099                                                                             ,l_component_appl_id
93100                                                                             ,l_amb_context_code
93101                                                                             ,l_entity_code
93102                                                                             ,l_event_class_code
93103                                                                            )
93104                                     ,p_token_3                 => 'OWNER'
93105                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
93106                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
93107                                                                           ,p_lookup_code    => l_component_type_code
93108                                                                          )
93109                                     ,p_token_4                 => 'PRODUCT_NAME'
93110                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93111                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93112                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93113                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93114                                     ,p_ae_header_id            =>  NULL
93115                                        );
93116 
93117         IF (C_LEVEL_ERROR>= g_log_level) THEN
93118                  trace
93119                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93120                       ,p_level    => C_LEVEL_ERROR
93121                       ,p_module   => l_log_module);
93122         END IF;
93123       END IF;
93124    END IF;
93125    --
93126    --
93127    ------------------------------------------------------------------------------------------------
93128    -- 4219869 Business Flow
93129    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93130    -- Prior Entry.  Currently, the following code is always generated.
93131    ------------------------------------------------------------------------------------------------
93132    XLA_AE_LINES_PKG.ValidateCurrentLine;
93133 
93134    ------------------------------------------------------------------------------------
93135    -- 4219869 Business Flow
93136    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93137    ------------------------------------------------------------------------------------
93138    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93139 
93140    ----------------------------------------------------------------------------------
93141    -- 4219869 Business Flow
93142    -- Update journal entry status -- Need to generate this within IF <condition>
93143    ----------------------------------------------------------------------------------
93144    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93145          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93146          ,p_balance_type_code => l_balance_type_code
93147          );
93148 
93149    -------------------------------------------------------------------------------------------
93150    -- 4262811 - Generate the Accrual Reversal lines
93151    -------------------------------------------------------------------------------------------
93152    BEGIN
93153       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93154                               (g_array_event(p_event_id).array_value_num('header_index'));
93155       IF l_acc_rev_flag IS NULL THEN
93156          l_acc_rev_flag := 'N';
93157       END IF;
93158    EXCEPTION
93159       WHEN OTHERS THEN
93160          l_acc_rev_flag := 'N';
93161    END;
93162    --
93163    IF (l_acc_rev_flag = 'Y') THEN
93164 
93165        -- 4645092  ------------------------------------------------------------------------------
93166        -- To allow MPA report to determine if it should generate report process
93167        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93168        ------------------------------------------------------------------------------------------
93169 
93170        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93171        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93172    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
93173    -- call ADRs
93174    -- Bug 4922099
93175    --
93176    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93177         (NVL(l_actual_upg_option, 'N') = 'O') OR
93178         (NVL(l_enc_upg_option, 'N') = 'O')
93179       )
93180    THEN
93181    NULL;
93182    --
93183    --
93184    
93185   l_ccid := AcctDerRule_33(
93186            p_application_id           => p_application_id
93187          , p_ae_header_id             => l_ae_header_id 
93188 , p_source_59 => p_source_59
93189          , x_transaction_coa_id       => l_adr_transaction_coa_id
93190          , x_accounting_coa_id        => l_adr_accounting_coa_id
93191          , x_value_type_code          => l_adr_value_type_code
93192          , p_side                     => 'NA'
93193    );
93194 
93195    xla_ae_lines_pkg.set_ccid(
93196     p_code_combination_id          => l_ccid
93197   , p_value_type_code              => l_adr_value_type_code
93198   , p_transaction_coa_id           => l_adr_transaction_coa_id
93199   , p_accounting_coa_id            => l_adr_accounting_coa_id
93200   , p_adr_code                     => 'PI_RECEIVABLES'
93201   , p_adr_type_code                => 'S'
93202   , p_component_type               => l_component_type
93203   , p_component_code               => l_component_code
93204   , p_component_type_code          => l_component_type_code
93205   , p_component_appl_id            => l_component_appl_id
93206   , p_amb_context_code             => l_amb_context_code
93207   , p_side                         => 'NA'
93208   );
93209 
93210 
93211    --
93212    --
93213    END IF;
93214 
93215        --
93216        -- Update the line information that should be overwritten
93217        --
93218        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93219                                          p_header_num   => 1);
93220        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
93221 
93222        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93223 
93224        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93225           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93226        END IF;
93227 
93228       --
93229       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93230       --
93231       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93232           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93233       ELSE
93234           ---------------------------------------------------------------------------------------------------
93235           -- 4262811a Switch Sign
93236           ---------------------------------------------------------------------------------------------------
93237           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93238           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93239                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93240           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93241                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93242           -- 5132302
93243           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93244                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93245 
93246       END IF;
93247 
93248       -- 4955764
93249       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93250       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93251 
93252 
93253       XLA_AE_LINES_PKG.ValidateCurrentLine;
93254       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93255 
93256       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93257                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93258                ,p_balance_type_code => l_balance_type_code);
93259 
93260    END IF;
93261 
93262    -----------------------------------------------------------------------------------------
93263    -- 4262811 Multiperiod Accounting
93264    -----------------------------------------------------------------------------------------
93265      -- No MPA option is assigned.
93266 
93267 
93268 END IF;
93269 END IF;
93270 --
93271 
93272 --
93273 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93274    trace
93275       (p_msg      => 'END of AcctLineType_187'
93276       ,p_level    => C_LEVEL_PROCEDURE
93277       ,p_module   => l_log_module);
93278 END IF;
93279 --
93280 EXCEPTION
93281   WHEN xla_exceptions_pkg.application_exception THEN
93282       RAISE;
93283   WHEN OTHERS THEN
93284        xla_exceptions_pkg.raise_message
93285            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_187');
93286 END AcctLineType_187;
93287 --
93288 
93289 ---------------------------------------
93290 --
93291 -- PRIVATE FUNCTION
93292 --         AcctLineType_188
93293 --
93294 ---------------------------------------
93295 PROCEDURE AcctLineType_188 (
93296   p_application_id        IN NUMBER
93297  ,p_event_id              IN NUMBER
93298  ,p_calculate_acctd_flag  IN VARCHAR2
93299  ,p_calculate_g_l_flag    IN VARCHAR2
93300  ,p_actual_flag           IN OUT VARCHAR2
93301  ,p_balance_type_code     OUT VARCHAR2
93302  ,p_gain_or_loss_ref      OUT VARCHAR2
93303  
93304 --TRANSACTION_ID
93305  , p_source_1            IN NUMBER
93306 --Item Concatenated Segments
93307  , p_source_2            IN VARCHAR2
93308 --Transaction Quantity
93309  , p_source_3            IN NUMBER
93310 --Transaction Unit of Measure Code
93311  , p_source_4            IN VARCHAR2
93312 --Inventory Transaction Type Description
93313  , p_source_5            IN VARCHAR2
93314 --Interorg Receivables Account
93315  , p_source_59            IN NUMBER
93316 --DISTRIBUTION_IDENTIFIER
93317  , p_source_84            IN NUMBER
93318 --Distribution Type
93319  , p_source_85            IN VARCHAR2
93320  , p_source_85_meaning    IN VARCHAR2
93321 --Entered Currency Code
93322  , p_source_88            IN VARCHAR2
93323 --Entered Amount
93324  , p_source_91            IN NUMBER
93325 --Currency Conversion Date
93326  , p_source_92            IN DATE
93327 --Currency Conversion Rate
93328  , p_source_93            IN NUMBER
93329 --Currency Conversion Type
93330  , p_source_94            IN VARCHAR2
93331 --Accounted Amount
93332  , p_source_95            IN NUMBER
93333 --Accounting Line Type
93334  , p_source_97            IN NUMBER
93335 )
93336 IS
93337 
93338 l_component_type              VARCHAR2(80);
93339 l_component_code              VARCHAR2(30);
93340 l_component_type_code         VARCHAR2(1);
93341 l_component_appl_id           INTEGER;
93342 l_amb_context_code            VARCHAR2(30);
93343 l_entity_code                 VARCHAR2(30);
93344 l_event_class_code            VARCHAR2(30);
93345 l_ae_header_id                NUMBER;
93346 l_event_type_code             VARCHAR2(30);
93347 l_line_definition_code        VARCHAR2(30);
93348 l_line_definition_owner_code  VARCHAR2(1);
93349 --
93350 -- adr variables
93351 l_segment                     VARCHAR2(30);
93352 l_ccid                        NUMBER;
93353 l_adr_transaction_coa_id      NUMBER;
93354 l_adr_accounting_coa_id       NUMBER;
93355 l_adr_flexfield_segment_code  VARCHAR2(30);
93356 l_adr_flex_value_set_id       NUMBER;
93357 l_adr_value_type_code         VARCHAR2(30);
93358 l_adr_value_combination_id    NUMBER;
93359 l_adr_value_segment_code      VARCHAR2(30);
93360 
93361 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93362 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93363 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93364 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93365 
93366 -- 4262811 Variables ------------------------------------------------------------------------------------------
93367 l_entered_amt_idx             NUMBER;
93368 l_accted_amt_idx              NUMBER;
93369 l_acc_rev_flag                VARCHAR2(1);
93370 l_accrual_line_num            NUMBER;
93371 l_tmp_amt                     NUMBER;
93372 l_acc_rev_natural_side_code   VARCHAR2(1);
93373 
93374 l_num_entries                 NUMBER;
93375 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93376 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93377 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93378 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93379 l_recog_line_1                NUMBER;
93380 l_recog_line_2                NUMBER;
93381 
93382 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93383 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93384 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93385 
93386 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93387 
93388 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93389 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93390 
93391 ---------------------------------------------------------------------------------------------------------------
93392 
93393 
93394 --
93395 -- bulk performance
93396 --
93397 l_balance_type_code           VARCHAR2(1);
93398 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93399 l_log_module                  VARCHAR2(240);
93400 
93401 --
93402 -- Upgrade strategy
93403 --
93404 l_actual_upg_option           VARCHAR2(1);
93405 l_enc_upg_option           VARCHAR2(1);
93406 
93407 --
93408 BEGIN
93409 --
93410 IF g_log_enabled THEN
93411       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_188';
93412 END IF;
93413 --
93414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93415 
93416       trace
93417          (p_msg      => 'BEGIN of AcctLineType_188'
93418          ,p_level    => C_LEVEL_PROCEDURE
93419          ,p_module   => l_log_module);
93420 
93421 END IF;
93422 --
93423 l_component_type             := 'AMB_JLT';
93424 l_component_code             := 'INTERORG_RECEIVABLES';
93425 l_component_type_code        := 'S';
93426 l_component_appl_id          :=  707;
93427 l_amb_context_code           := 'DEFAULT';
93428 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
93429 l_event_class_code           := 'USER_DEFINE';
93430 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
93431 l_line_definition_owner_code := 'S';
93432 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
93433 --
93434 l_balance_type_code          := 'A';
93435 l_segment                     := NULL;
93436 l_ccid                        := NULL;
93437 l_adr_transaction_coa_id      := NULL;
93438 l_adr_accounting_coa_id       := NULL;
93439 l_adr_flexfield_segment_code  := NULL;
93440 l_adr_flex_value_set_id       := NULL;
93441 l_adr_value_type_code         := NULL;
93442 l_adr_value_combination_id    := NULL;
93443 l_adr_value_segment_code      := NULL;
93444 
93445 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
93446 l_bflow_class_code           := '';    -- 4219869 Business Flow
93447 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
93448 l_budgetary_control_flag     := 'N';
93449 
93450 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
93451 l_bflow_applied_to_amt       := NULL; -- 5132302
93452 l_entered_amt_idx            := NULL;          -- 4262811
93453 l_accted_amt_idx             := NULL;          -- 4262811
93454 l_acc_rev_flag               := NULL;          -- 4262811
93455 l_accrual_line_num           := NULL;          -- 4262811
93456 l_tmp_amt                    := NULL;          -- 4262811
93457 --
93458  
93459 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93460     l_balance_type_code <> 'B' THEN
93461 IF NVL(p_source_97,9E125) =  10
93462  THEN 
93463 
93464    --
93465    XLA_AE_LINES_PKG.SetNewLine;
93466 
93467    p_balance_type_code          := l_balance_type_code;
93468    -- set the flag so later we will know whether the gain loss line needs to be created
93469    
93470    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93471      p_actual_flag :='A';
93472    END IF;
93473 
93474    --
93475    -- bulk performance
93476    --
93477    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93478                                       p_header_num   => 0); -- 4262811
93479    --
93480    -- set accounting line options
93481    --
93482    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93483            p_natural_side_code          => 'D'
93484          , p_gain_or_loss_flag          => 'N'
93485          , p_gl_transfer_mode_code      => 'S'
93486          , p_acct_entry_type_code       => 'A'
93487          , p_switch_side_flag           => 'Y'
93488          , p_merge_duplicate_code       => 'N'
93489          );
93490    --
93491    l_acc_rev_natural_side_code := 'C';  -- 4262811
93492    -- 
93493    --
93494    -- set accounting line type info
93495    --
93496    xla_ae_lines_pkg.SetAcctLineType
93497       (p_component_type             => l_component_type
93498       ,p_event_type_code            => l_event_type_code
93499       ,p_line_definition_owner_code => l_line_definition_owner_code
93500       ,p_line_definition_code       => l_line_definition_code
93501       ,p_accounting_line_code       => l_component_code
93502       ,p_accounting_line_type_code  => l_component_type_code
93503       ,p_accounting_line_appl_id    => l_component_appl_id
93504       ,p_amb_context_code           => l_amb_context_code
93505       ,p_entity_code                => l_entity_code
93506       ,p_event_class_code           => l_event_class_code);
93507    --
93508    -- set accounting class
93509    --
93510    xla_ae_lines_pkg.SetAcctClass(
93511            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
93512          , p_ae_header_id           => l_ae_header_id
93513          );
93514 
93515    --
93516    -- set rounding class
93517    --
93518    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93519                       'INTERORG_RECEIVABLES';
93520 
93521    --
93522    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93523    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93524    --
93525    -- bulk performance
93526    --
93527    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93528 
93529    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93530       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93531 
93532    -- 4955764
93533    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93535 
93536    -- 4458381 Public Sector Enh
93537    
93538    --
93539    -- set accounting attributes for the line type
93540    --
93541    l_entered_amt_idx := 3;
93542    l_accted_amt_idx  := 8;
93543    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
93544    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93545    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
93546    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93547    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
93548    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93549    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
93550    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93551    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
93552    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93553    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
93554    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93555    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
93556    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93557    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
93558    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93559    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
93560 
93561    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93562    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93563 
93564    ---------------------------------------------------------------------------------------------------------------
93565    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93566    ---------------------------------------------------------------------------------------------------------------
93567    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93568 
93569    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93570    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93571 
93572    IF xla_accounting_cache_pkg.GetValueChar
93573          (p_source_code         => 'LEDGER_CATEGORY_CODE'
93574          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93575    AND l_bflow_method_code = 'PRIOR_ENTRY'
93576 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93577    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93578          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93579        )
93580    THEN
93581          xla_ae_lines_pkg.BflowUpgEntry
93582            (p_business_method_code    => l_bflow_method_code
93583            ,p_business_class_code     => l_bflow_class_code
93584            ,p_balance_type            => l_balance_type_code);
93585    ELSE
93586       NULL;
93587 -- No business flow processing for business flow method of NONE.
93588    END IF;
93589 
93590    --
93591    -- call analytical criteria
93592    --
93593    
93594    --
93595    -- call description
93596    --
93597    
93598 xla_ae_lines_pkg.SetLineDescription(
93599    p_ae_header_id => l_ae_header_id
93600   ,p_description  => Description_1 (
93601      p_application_id         => p_application_id
93602    , p_ae_header_id           => l_ae_header_id 
93603 , p_source_1 => p_source_1
93604 , p_source_2 => p_source_2
93605 , p_source_3 => p_source_3
93606 , p_source_4 => p_source_4
93607 , p_source_5 => p_source_5
93608    )
93609 );
93610 
93611 
93612    --
93613    -- call ADRs
93614    -- Bug 4922099
93615    --
93616    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93617         (NVL(l_actual_upg_option, 'N') = 'O') OR
93618         (NVL(l_enc_upg_option, 'N') = 'O')
93619       )
93620    THEN
93621    NULL;
93622    --
93623    --
93624    
93625   l_ccid := AcctDerRule_33(
93626            p_application_id           => p_application_id
93627          , p_ae_header_id             => l_ae_header_id 
93628 , p_source_59 => p_source_59
93629          , x_transaction_coa_id       => l_adr_transaction_coa_id
93630          , x_accounting_coa_id        => l_adr_accounting_coa_id
93631          , x_value_type_code          => l_adr_value_type_code
93632          , p_side                     => 'NA'
93633    );
93634 
93635    xla_ae_lines_pkg.set_ccid(
93636     p_code_combination_id          => l_ccid
93637   , p_value_type_code              => l_adr_value_type_code
93638   , p_transaction_coa_id           => l_adr_transaction_coa_id
93639   , p_accounting_coa_id            => l_adr_accounting_coa_id
93640   , p_adr_code                     => 'PI_RECEIVABLES'
93641   , p_adr_type_code                => 'S'
93642   , p_component_type               => l_component_type
93643   , p_component_code               => l_component_code
93644   , p_component_type_code          => l_component_type_code
93645   , p_component_appl_id            => l_component_appl_id
93646   , p_amb_context_code             => l_amb_context_code
93647   , p_side                         => 'NA'
93648   );
93649 
93650 
93651    --
93652    --
93653    END IF;
93654    --
93655    -- Bug 4922099
93656    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93657           (NVL(l_enc_upg_option, 'N') = 'O')
93658         ) AND
93659         (l_bflow_method_code = 'PRIOR_ENTRY')
93660       )
93661    THEN
93662       IF
93663       --
93664       1 = 2
93665       --
93666       THEN
93667       xla_accounting_err_pkg.build_message
93668                                     (p_appli_s_name            => 'XLA'
93669                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93670                                     ,p_token_1                 => 'LINE_NUMBER'
93671                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
93672                                     ,p_token_2                 => 'LINE_TYPE_NAME'
93673                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
93674                                                                              l_component_type
93675                                                                             ,l_component_code
93676                                                                             ,l_component_type_code
93677                                                                             ,l_component_appl_id
93678                                                                             ,l_amb_context_code
93679                                                                             ,l_entity_code
93680                                                                             ,l_event_class_code
93681                                                                            )
93682                                     ,p_token_3                 => 'OWNER'
93683                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
93684                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
93685                                                                           ,p_lookup_code    => l_component_type_code
93686                                                                          )
93687                                     ,p_token_4                 => 'PRODUCT_NAME'
93688                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93689                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93690                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93691                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93692                                     ,p_ae_header_id            =>  NULL
93693                                        );
93694 
93695         IF (C_LEVEL_ERROR>= g_log_level) THEN
93696                  trace
93697                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93698                       ,p_level    => C_LEVEL_ERROR
93699                       ,p_module   => l_log_module);
93700         END IF;
93701       END IF;
93702    END IF;
93703    --
93704    --
93705    ------------------------------------------------------------------------------------------------
93706    -- 4219869 Business Flow
93707    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93708    -- Prior Entry.  Currently, the following code is always generated.
93709    ------------------------------------------------------------------------------------------------
93710    XLA_AE_LINES_PKG.ValidateCurrentLine;
93711 
93712    ------------------------------------------------------------------------------------
93713    -- 4219869 Business Flow
93714    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93715    ------------------------------------------------------------------------------------
93716    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93717 
93718    ----------------------------------------------------------------------------------
93719    -- 4219869 Business Flow
93720    -- Update journal entry status -- Need to generate this within IF <condition>
93721    ----------------------------------------------------------------------------------
93722    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93723          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93724          ,p_balance_type_code => l_balance_type_code
93725          );
93726 
93727    -------------------------------------------------------------------------------------------
93728    -- 4262811 - Generate the Accrual Reversal lines
93729    -------------------------------------------------------------------------------------------
93730    BEGIN
93731       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93732                               (g_array_event(p_event_id).array_value_num('header_index'));
93733       IF l_acc_rev_flag IS NULL THEN
93734          l_acc_rev_flag := 'N';
93735       END IF;
93736    EXCEPTION
93737       WHEN OTHERS THEN
93738          l_acc_rev_flag := 'N';
93739    END;
93740    --
93741    IF (l_acc_rev_flag = 'Y') THEN
93742 
93743        -- 4645092  ------------------------------------------------------------------------------
93744        -- To allow MPA report to determine if it should generate report process
93745        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93746        ------------------------------------------------------------------------------------------
93747 
93748        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93749        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93750    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
93751    -- call ADRs
93752    -- Bug 4922099
93753    --
93754    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93755         (NVL(l_actual_upg_option, 'N') = 'O') OR
93756         (NVL(l_enc_upg_option, 'N') = 'O')
93757       )
93758    THEN
93759    NULL;
93760    --
93761    --
93762    
93763   l_ccid := AcctDerRule_33(
93764            p_application_id           => p_application_id
93765          , p_ae_header_id             => l_ae_header_id 
93766 , p_source_59 => p_source_59
93767          , x_transaction_coa_id       => l_adr_transaction_coa_id
93768          , x_accounting_coa_id        => l_adr_accounting_coa_id
93769          , x_value_type_code          => l_adr_value_type_code
93770          , p_side                     => 'NA'
93771    );
93772 
93773    xla_ae_lines_pkg.set_ccid(
93774     p_code_combination_id          => l_ccid
93775   , p_value_type_code              => l_adr_value_type_code
93776   , p_transaction_coa_id           => l_adr_transaction_coa_id
93777   , p_accounting_coa_id            => l_adr_accounting_coa_id
93778   , p_adr_code                     => 'PI_RECEIVABLES'
93779   , p_adr_type_code                => 'S'
93780   , p_component_type               => l_component_type
93781   , p_component_code               => l_component_code
93782   , p_component_type_code          => l_component_type_code
93783   , p_component_appl_id            => l_component_appl_id
93784   , p_amb_context_code             => l_amb_context_code
93785   , p_side                         => 'NA'
93786   );
93787 
93788 
93789    --
93790    --
93791    END IF;
93792 
93793        --
93794        -- Update the line information that should be overwritten
93795        --
93796        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93797                                          p_header_num   => 1);
93798        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
93799 
93800        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93801 
93802        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
93803           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93804        END IF;
93805 
93806       --
93807       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93808       --
93809       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93810           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
93811       ELSE
93812           ---------------------------------------------------------------------------------------------------
93813           -- 4262811a Switch Sign
93814           ---------------------------------------------------------------------------------------------------
93815           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
93816           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93817                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93818           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93819                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93820           -- 5132302
93821           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93822                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93823 
93824       END IF;
93825 
93826       -- 4955764
93827       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93828       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93829 
93830 
93831       XLA_AE_LINES_PKG.ValidateCurrentLine;
93832       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93833 
93834       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93835                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93836                ,p_balance_type_code => l_balance_type_code);
93837 
93838    END IF;
93839 
93840    -----------------------------------------------------------------------------------------
93841    -- 4262811 Multiperiod Accounting
93842    -----------------------------------------------------------------------------------------
93843      -- No MPA option is assigned.
93844 
93845 
93846 END IF;
93847 END IF;
93848 --
93849 
93850 --
93851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93852    trace
93853       (p_msg      => 'END of AcctLineType_188'
93854       ,p_level    => C_LEVEL_PROCEDURE
93855       ,p_module   => l_log_module);
93856 END IF;
93857 --
93858 EXCEPTION
93859   WHEN xla_exceptions_pkg.application_exception THEN
93860       RAISE;
93861   WHEN OTHERS THEN
93862        xla_exceptions_pkg.raise_message
93863            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_188');
93864 END AcctLineType_188;
93865 --
93866 
93867 ---------------------------------------
93868 --
93869 -- PRIVATE FUNCTION
93870 --         AcctLineType_189
93871 --
93872 ---------------------------------------
93873 PROCEDURE AcctLineType_189 (
93874   p_application_id        IN NUMBER
93875  ,p_event_id              IN NUMBER
93876  ,p_calculate_acctd_flag  IN VARCHAR2
93877  ,p_calculate_g_l_flag    IN VARCHAR2
93878  ,p_actual_flag           IN OUT VARCHAR2
93879  ,p_balance_type_code     OUT VARCHAR2
93880  ,p_gain_or_loss_ref      OUT VARCHAR2
93881  
93882 --TRANSACTION_ID
93883  , p_source_1            IN NUMBER
93884 --Item Concatenated Segments
93885  , p_source_2            IN VARCHAR2
93886 --Transaction Quantity
93887  , p_source_3            IN NUMBER
93888 --Transaction Unit of Measure Code
93889  , p_source_4            IN VARCHAR2
93890 --Inventory Transaction Type Description
93891  , p_source_5            IN VARCHAR2
93892 --Interorg Receivables Account
93893  , p_source_59            IN NUMBER
93894 --DISTRIBUTION_IDENTIFIER
93895  , p_source_84            IN NUMBER
93896 --Distribution Type
93897  , p_source_85            IN VARCHAR2
93898  , p_source_85_meaning    IN VARCHAR2
93899 --Entered Currency Code
93900  , p_source_88            IN VARCHAR2
93901 --Entered Amount
93902  , p_source_91            IN NUMBER
93903 --Currency Conversion Date
93904  , p_source_92            IN DATE
93905 --Currency Conversion Rate
93906  , p_source_93            IN NUMBER
93907 --Currency Conversion Type
93908  , p_source_94            IN VARCHAR2
93909 --Accounted Amount
93910  , p_source_95            IN NUMBER
93911 --Accounting Line Type
93912  , p_source_97            IN NUMBER
93913 )
93914 IS
93915 
93916 l_component_type              VARCHAR2(80);
93917 l_component_code              VARCHAR2(30);
93918 l_component_type_code         VARCHAR2(1);
93919 l_component_appl_id           INTEGER;
93920 l_amb_context_code            VARCHAR2(30);
93921 l_entity_code                 VARCHAR2(30);
93922 l_event_class_code            VARCHAR2(30);
93923 l_ae_header_id                NUMBER;
93924 l_event_type_code             VARCHAR2(30);
93925 l_line_definition_code        VARCHAR2(30);
93926 l_line_definition_owner_code  VARCHAR2(1);
93927 --
93928 -- adr variables
93929 l_segment                     VARCHAR2(30);
93930 l_ccid                        NUMBER;
93931 l_adr_transaction_coa_id      NUMBER;
93932 l_adr_accounting_coa_id       NUMBER;
93933 l_adr_flexfield_segment_code  VARCHAR2(30);
93934 l_adr_flex_value_set_id       NUMBER;
93935 l_adr_value_type_code         VARCHAR2(30);
93936 l_adr_value_combination_id    NUMBER;
93937 l_adr_value_segment_code      VARCHAR2(30);
93938 
93939 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
93940 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
93941 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
93942 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
93943 
93944 -- 4262811 Variables ------------------------------------------------------------------------------------------
93945 l_entered_amt_idx             NUMBER;
93946 l_accted_amt_idx              NUMBER;
93947 l_acc_rev_flag                VARCHAR2(1);
93948 l_accrual_line_num            NUMBER;
93949 l_tmp_amt                     NUMBER;
93950 l_acc_rev_natural_side_code   VARCHAR2(1);
93951 
93952 l_num_entries                 NUMBER;
93953 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
93954 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
93955 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
93956 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
93957 l_recog_line_1                NUMBER;
93958 l_recog_line_2                NUMBER;
93959 
93960 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
93961 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
93962 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
93963 
93964 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93965 
93966 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
93967 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
93968 
93969 ---------------------------------------------------------------------------------------------------------------
93970 
93971 
93972 --
93973 -- bulk performance
93974 --
93975 l_balance_type_code           VARCHAR2(1);
93976 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
93977 l_log_module                  VARCHAR2(240);
93978 
93979 --
93980 -- Upgrade strategy
93981 --
93982 l_actual_upg_option           VARCHAR2(1);
93983 l_enc_upg_option           VARCHAR2(1);
93984 
93985 --
93986 BEGIN
93987 --
93988 IF g_log_enabled THEN
93989       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_189';
93990 END IF;
93991 --
93992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93993 
93994       trace
93995          (p_msg      => 'BEGIN of AcctLineType_189'
93996          ,p_level    => C_LEVEL_PROCEDURE
93997          ,p_module   => l_log_module);
93998 
93999 END IF;
94000 --
94001 l_component_type             := 'AMB_JLT';
94002 l_component_code             := 'INTERORG_RECEIVABLES';
94003 l_component_type_code        := 'S';
94004 l_component_appl_id          :=  707;
94005 l_amb_context_code           := 'DEFAULT';
94006 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
94007 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
94008 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
94009 l_line_definition_owner_code := 'S';
94010 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
94011 --
94012 l_balance_type_code          := 'A';
94013 l_segment                     := NULL;
94014 l_ccid                        := NULL;
94015 l_adr_transaction_coa_id      := NULL;
94016 l_adr_accounting_coa_id       := NULL;
94017 l_adr_flexfield_segment_code  := NULL;
94018 l_adr_flex_value_set_id       := NULL;
94019 l_adr_value_type_code         := NULL;
94020 l_adr_value_combination_id    := NULL;
94021 l_adr_value_segment_code      := NULL;
94022 
94023 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94024 l_bflow_class_code           := '';    -- 4219869 Business Flow
94025 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94026 l_budgetary_control_flag     := 'N';
94027 
94028 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94029 l_bflow_applied_to_amt       := NULL; -- 5132302
94030 l_entered_amt_idx            := NULL;          -- 4262811
94031 l_accted_amt_idx             := NULL;          -- 4262811
94032 l_acc_rev_flag               := NULL;          -- 4262811
94033 l_accrual_line_num           := NULL;          -- 4262811
94034 l_tmp_amt                    := NULL;          -- 4262811
94035 --
94036  
94037 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94038     l_balance_type_code <> 'B' THEN
94039 IF NVL(p_source_97,9E125) =  10
94040  THEN 
94041 
94042    --
94043    XLA_AE_LINES_PKG.SetNewLine;
94044 
94045    p_balance_type_code          := l_balance_type_code;
94046    -- set the flag so later we will know whether the gain loss line needs to be created
94047    
94048    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94049      p_actual_flag :='A';
94050    END IF;
94051 
94052    --
94053    -- bulk performance
94054    --
94055    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94056                                       p_header_num   => 0); -- 4262811
94057    --
94058    -- set accounting line options
94059    --
94060    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94061            p_natural_side_code          => 'D'
94062          , p_gain_or_loss_flag          => 'N'
94063          , p_gl_transfer_mode_code      => 'S'
94064          , p_acct_entry_type_code       => 'A'
94065          , p_switch_side_flag           => 'Y'
94066          , p_merge_duplicate_code       => 'N'
94067          );
94068    --
94069    l_acc_rev_natural_side_code := 'C';  -- 4262811
94070    -- 
94071    --
94072    -- set accounting line type info
94073    --
94074    xla_ae_lines_pkg.SetAcctLineType
94075       (p_component_type             => l_component_type
94076       ,p_event_type_code            => l_event_type_code
94077       ,p_line_definition_owner_code => l_line_definition_owner_code
94078       ,p_line_definition_code       => l_line_definition_code
94079       ,p_accounting_line_code       => l_component_code
94080       ,p_accounting_line_type_code  => l_component_type_code
94081       ,p_accounting_line_appl_id    => l_component_appl_id
94082       ,p_amb_context_code           => l_amb_context_code
94083       ,p_entity_code                => l_entity_code
94084       ,p_event_class_code           => l_event_class_code);
94085    --
94086    -- set accounting class
94087    --
94088    xla_ae_lines_pkg.SetAcctClass(
94089            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
94090          , p_ae_header_id           => l_ae_header_id
94091          );
94092 
94093    --
94094    -- set rounding class
94095    --
94096    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94097                       'INTERORG_RECEIVABLES';
94098 
94099    --
94100    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94101    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94102    --
94103    -- bulk performance
94104    --
94105    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94106 
94107    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94108       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94109 
94110    -- 4955764
94111    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94112       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94113 
94114    -- 4458381 Public Sector Enh
94115    
94116    --
94117    -- set accounting attributes for the line type
94118    --
94119    l_entered_amt_idx := 3;
94120    l_accted_amt_idx  := 8;
94121    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
94122    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94123    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
94124    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94125    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
94126    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94127    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
94128    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94129    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
94130    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94131    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
94132    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94133    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
94134    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94135    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
94136    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94137    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
94138 
94139    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94140    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94141 
94142    ---------------------------------------------------------------------------------------------------------------
94143    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94144    ---------------------------------------------------------------------------------------------------------------
94145    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94146 
94147    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94148    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94149 
94150    IF xla_accounting_cache_pkg.GetValueChar
94151          (p_source_code         => 'LEDGER_CATEGORY_CODE'
94152          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94153    AND l_bflow_method_code = 'PRIOR_ENTRY'
94154 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94155    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94156          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94157        )
94158    THEN
94159          xla_ae_lines_pkg.BflowUpgEntry
94160            (p_business_method_code    => l_bflow_method_code
94161            ,p_business_class_code     => l_bflow_class_code
94162            ,p_balance_type            => l_balance_type_code);
94163    ELSE
94164       NULL;
94165 -- No business flow processing for business flow method of NONE.
94166    END IF;
94167 
94168    --
94169    -- call analytical criteria
94170    --
94171    
94172    --
94173    -- call description
94174    --
94175    
94176 xla_ae_lines_pkg.SetLineDescription(
94177    p_ae_header_id => l_ae_header_id
94178   ,p_description  => Description_1 (
94179      p_application_id         => p_application_id
94180    , p_ae_header_id           => l_ae_header_id 
94181 , p_source_1 => p_source_1
94182 , p_source_2 => p_source_2
94183 , p_source_3 => p_source_3
94184 , p_source_4 => p_source_4
94185 , p_source_5 => p_source_5
94186    )
94187 );
94188 
94189 
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_33(
94204            p_application_id           => p_application_id
94205          , p_ae_header_id             => l_ae_header_id 
94206 , p_source_59 => p_source_59
94207          , x_transaction_coa_id       => l_adr_transaction_coa_id
94208          , x_accounting_coa_id        => l_adr_accounting_coa_id
94209          , x_value_type_code          => l_adr_value_type_code
94210          , p_side                     => 'NA'
94211    );
94212 
94213    xla_ae_lines_pkg.set_ccid(
94214     p_code_combination_id          => l_ccid
94215   , p_value_type_code              => l_adr_value_type_code
94216   , p_transaction_coa_id           => l_adr_transaction_coa_id
94217   , p_accounting_coa_id            => l_adr_accounting_coa_id
94218   , p_adr_code                     => 'PI_RECEIVABLES'
94219   , p_adr_type_code                => 'S'
94220   , p_component_type               => l_component_type
94221   , p_component_code               => l_component_code
94222   , p_component_type_code          => l_component_type_code
94223   , p_component_appl_id            => l_component_appl_id
94224   , p_amb_context_code             => l_amb_context_code
94225   , p_side                         => 'NA'
94226   );
94227 
94228 
94229    --
94230    --
94231    END IF;
94232    --
94233    -- Bug 4922099
94234    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94235           (NVL(l_enc_upg_option, 'N') = 'O')
94236         ) AND
94237         (l_bflow_method_code = 'PRIOR_ENTRY')
94238       )
94239    THEN
94240       IF
94241       --
94242       1 = 2
94243       --
94244       THEN
94245       xla_accounting_err_pkg.build_message
94246                                     (p_appli_s_name            => 'XLA'
94247                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94248                                     ,p_token_1                 => 'LINE_NUMBER'
94249                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
94250                                     ,p_token_2                 => 'LINE_TYPE_NAME'
94251                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
94252                                                                              l_component_type
94253                                                                             ,l_component_code
94254                                                                             ,l_component_type_code
94255                                                                             ,l_component_appl_id
94256                                                                             ,l_amb_context_code
94257                                                                             ,l_entity_code
94258                                                                             ,l_event_class_code
94259                                                                            )
94260                                     ,p_token_3                 => 'OWNER'
94261                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
94262                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
94263                                                                           ,p_lookup_code    => l_component_type_code
94264                                                                          )
94265                                     ,p_token_4                 => 'PRODUCT_NAME'
94266                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94267                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94268                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94269                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94270                                     ,p_ae_header_id            =>  NULL
94271                                        );
94272 
94273         IF (C_LEVEL_ERROR>= g_log_level) THEN
94274                  trace
94275                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94276                       ,p_level    => C_LEVEL_ERROR
94277                       ,p_module   => l_log_module);
94278         END IF;
94279       END IF;
94280    END IF;
94281    --
94282    --
94283    ------------------------------------------------------------------------------------------------
94284    -- 4219869 Business Flow
94285    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94286    -- Prior Entry.  Currently, the following code is always generated.
94287    ------------------------------------------------------------------------------------------------
94288    XLA_AE_LINES_PKG.ValidateCurrentLine;
94289 
94290    ------------------------------------------------------------------------------------
94291    -- 4219869 Business Flow
94292    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94293    ------------------------------------------------------------------------------------
94294    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94295 
94296    ----------------------------------------------------------------------------------
94297    -- 4219869 Business Flow
94298    -- Update journal entry status -- Need to generate this within IF <condition>
94299    ----------------------------------------------------------------------------------
94300    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94301          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94302          ,p_balance_type_code => l_balance_type_code
94303          );
94304 
94305    -------------------------------------------------------------------------------------------
94306    -- 4262811 - Generate the Accrual Reversal lines
94307    -------------------------------------------------------------------------------------------
94308    BEGIN
94309       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94310                               (g_array_event(p_event_id).array_value_num('header_index'));
94311       IF l_acc_rev_flag IS NULL THEN
94312          l_acc_rev_flag := 'N';
94313       END IF;
94314    EXCEPTION
94315       WHEN OTHERS THEN
94316          l_acc_rev_flag := 'N';
94317    END;
94318    --
94319    IF (l_acc_rev_flag = 'Y') THEN
94320 
94321        -- 4645092  ------------------------------------------------------------------------------
94322        -- To allow MPA report to determine if it should generate report process
94323        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94324        ------------------------------------------------------------------------------------------
94325 
94326        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94327        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94328    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94329    -- call ADRs
94330    -- Bug 4922099
94331    --
94332    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94333         (NVL(l_actual_upg_option, 'N') = 'O') OR
94334         (NVL(l_enc_upg_option, 'N') = 'O')
94335       )
94336    THEN
94337    NULL;
94338    --
94339    --
94340    
94341   l_ccid := AcctDerRule_33(
94342            p_application_id           => p_application_id
94343          , p_ae_header_id             => l_ae_header_id 
94344 , p_source_59 => p_source_59
94345          , x_transaction_coa_id       => l_adr_transaction_coa_id
94346          , x_accounting_coa_id        => l_adr_accounting_coa_id
94347          , x_value_type_code          => l_adr_value_type_code
94348          , p_side                     => 'NA'
94349    );
94350 
94351    xla_ae_lines_pkg.set_ccid(
94352     p_code_combination_id          => l_ccid
94353   , p_value_type_code              => l_adr_value_type_code
94354   , p_transaction_coa_id           => l_adr_transaction_coa_id
94355   , p_accounting_coa_id            => l_adr_accounting_coa_id
94356   , p_adr_code                     => 'PI_RECEIVABLES'
94357   , p_adr_type_code                => 'S'
94358   , p_component_type               => l_component_type
94359   , p_component_code               => l_component_code
94360   , p_component_type_code          => l_component_type_code
94361   , p_component_appl_id            => l_component_appl_id
94362   , p_amb_context_code             => l_amb_context_code
94363   , p_side                         => 'NA'
94364   );
94365 
94366 
94367    --
94368    --
94369    END IF;
94370 
94371        --
94372        -- Update the line information that should be overwritten
94373        --
94374        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94375                                          p_header_num   => 1);
94376        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94377 
94378        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94379 
94380        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94381           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94382        END IF;
94383 
94384       --
94385       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94386       --
94387       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94388           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94389       ELSE
94390           ---------------------------------------------------------------------------------------------------
94391           -- 4262811a Switch Sign
94392           ---------------------------------------------------------------------------------------------------
94393           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94394           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94395                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94396           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94397                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94398           -- 5132302
94399           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94400                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94401 
94402       END IF;
94403 
94404       -- 4955764
94405       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94406       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94407 
94408 
94409       XLA_AE_LINES_PKG.ValidateCurrentLine;
94410       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94411 
94412       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94413                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94414                ,p_balance_type_code => l_balance_type_code);
94415 
94416    END IF;
94417 
94418    -----------------------------------------------------------------------------------------
94419    -- 4262811 Multiperiod Accounting
94420    -----------------------------------------------------------------------------------------
94421      -- No MPA option is assigned.
94422 
94423 
94424 END IF;
94425 END IF;
94426 --
94427 
94428 --
94429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94430    trace
94431       (p_msg      => 'END of AcctLineType_189'
94432       ,p_level    => C_LEVEL_PROCEDURE
94433       ,p_module   => l_log_module);
94434 END IF;
94435 --
94436 EXCEPTION
94437   WHEN xla_exceptions_pkg.application_exception THEN
94438       RAISE;
94439   WHEN OTHERS THEN
94440        xla_exceptions_pkg.raise_message
94441            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_189');
94442 END AcctLineType_189;
94443 --
94444 
94445 ---------------------------------------
94446 --
94447 -- PRIVATE FUNCTION
94448 --         AcctLineType_190
94449 --
94450 ---------------------------------------
94451 PROCEDURE AcctLineType_190 (
94452   p_application_id        IN NUMBER
94453  ,p_event_id              IN NUMBER
94454  ,p_calculate_acctd_flag  IN VARCHAR2
94455  ,p_calculate_g_l_flag    IN VARCHAR2
94456  ,p_actual_flag           IN OUT VARCHAR2
94457  ,p_balance_type_code     OUT VARCHAR2
94458  ,p_gain_or_loss_ref      OUT VARCHAR2
94459  
94460 --TRANSACTION_ID
94461  , p_source_1            IN NUMBER
94462 --Item Concatenated Segments
94463  , p_source_2            IN VARCHAR2
94464 --Transaction Quantity
94465  , p_source_3            IN NUMBER
94466 --Transaction Unit of Measure Code
94467  , p_source_4            IN VARCHAR2
94468 --Inventory Transaction Type Description
94469  , p_source_5            IN VARCHAR2
94470 --Interorg Receivables Account
94471  , p_source_59            IN NUMBER
94472 --DISTRIBUTION_IDENTIFIER
94473  , p_source_84            IN NUMBER
94474 --Distribution Type
94475  , p_source_85            IN VARCHAR2
94476  , p_source_85_meaning    IN VARCHAR2
94477 --Entered Currency Code
94478  , p_source_88            IN VARCHAR2
94479 --Entered Amount
94480  , p_source_91            IN NUMBER
94481 --Currency Conversion Date
94482  , p_source_92            IN DATE
94483 --Currency Conversion Rate
94484  , p_source_93            IN NUMBER
94485 --Currency Conversion Type
94486  , p_source_94            IN VARCHAR2
94487 --Accounted Amount
94488  , p_source_95            IN NUMBER
94489 --Accounting Line Type
94490  , p_source_97            IN NUMBER
94491 )
94492 IS
94493 
94494 l_component_type              VARCHAR2(80);
94495 l_component_code              VARCHAR2(30);
94496 l_component_type_code         VARCHAR2(1);
94497 l_component_appl_id           INTEGER;
94498 l_amb_context_code            VARCHAR2(30);
94499 l_entity_code                 VARCHAR2(30);
94500 l_event_class_code            VARCHAR2(30);
94501 l_ae_header_id                NUMBER;
94502 l_event_type_code             VARCHAR2(30);
94503 l_line_definition_code        VARCHAR2(30);
94504 l_line_definition_owner_code  VARCHAR2(1);
94505 --
94506 -- adr variables
94507 l_segment                     VARCHAR2(30);
94508 l_ccid                        NUMBER;
94509 l_adr_transaction_coa_id      NUMBER;
94510 l_adr_accounting_coa_id       NUMBER;
94511 l_adr_flexfield_segment_code  VARCHAR2(30);
94512 l_adr_flex_value_set_id       NUMBER;
94513 l_adr_value_type_code         VARCHAR2(30);
94514 l_adr_value_combination_id    NUMBER;
94515 l_adr_value_segment_code      VARCHAR2(30);
94516 
94517 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
94518 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
94519 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
94520 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
94521 
94522 -- 4262811 Variables ------------------------------------------------------------------------------------------
94523 l_entered_amt_idx             NUMBER;
94524 l_accted_amt_idx              NUMBER;
94525 l_acc_rev_flag                VARCHAR2(1);
94526 l_accrual_line_num            NUMBER;
94527 l_tmp_amt                     NUMBER;
94528 l_acc_rev_natural_side_code   VARCHAR2(1);
94529 
94530 l_num_entries                 NUMBER;
94531 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
94532 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
94533 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
94534 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
94535 l_recog_line_1                NUMBER;
94536 l_recog_line_2                NUMBER;
94537 
94538 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
94539 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
94540 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
94541 
94542 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94543 
94544 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
94545 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
94546 
94547 ---------------------------------------------------------------------------------------------------------------
94548 
94549 
94550 --
94551 -- bulk performance
94552 --
94553 l_balance_type_code           VARCHAR2(1);
94554 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
94555 l_log_module                  VARCHAR2(240);
94556 
94557 --
94558 -- Upgrade strategy
94559 --
94560 l_actual_upg_option           VARCHAR2(1);
94561 l_enc_upg_option           VARCHAR2(1);
94562 
94563 --
94564 BEGIN
94565 --
94566 IF g_log_enabled THEN
94567       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_190';
94568 END IF;
94569 --
94570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94571 
94572       trace
94573          (p_msg      => 'BEGIN of AcctLineType_190'
94574          ,p_level    => C_LEVEL_PROCEDURE
94575          ,p_module   => l_log_module);
94576 
94577 END IF;
94578 --
94579 l_component_type             := 'AMB_JLT';
94580 l_component_code             := 'INTERORG_RECEIVABLES';
94581 l_component_type_code        := 'S';
94582 l_component_appl_id          :=  707;
94583 l_amb_context_code           := 'DEFAULT';
94584 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
94585 l_event_class_code           := 'INT_ORDER_TO_EXP';
94586 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
94587 l_line_definition_owner_code := 'S';
94588 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_NO_TP';
94589 --
94590 l_balance_type_code          := 'A';
94591 l_segment                     := NULL;
94592 l_ccid                        := NULL;
94593 l_adr_transaction_coa_id      := NULL;
94594 l_adr_accounting_coa_id       := NULL;
94595 l_adr_flexfield_segment_code  := NULL;
94596 l_adr_flex_value_set_id       := NULL;
94597 l_adr_value_type_code         := NULL;
94598 l_adr_value_combination_id    := NULL;
94599 l_adr_value_segment_code      := NULL;
94600 
94601 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
94602 l_bflow_class_code           := '';    -- 4219869 Business Flow
94603 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
94604 l_budgetary_control_flag     := 'N';
94605 
94606 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
94607 l_bflow_applied_to_amt       := NULL; -- 5132302
94608 l_entered_amt_idx            := NULL;          -- 4262811
94609 l_accted_amt_idx             := NULL;          -- 4262811
94610 l_acc_rev_flag               := NULL;          -- 4262811
94611 l_accrual_line_num           := NULL;          -- 4262811
94612 l_tmp_amt                    := NULL;          -- 4262811
94613 --
94614  
94615 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94616     l_balance_type_code <> 'B' THEN
94617 IF NVL(p_source_97,9E125) =  10
94618  THEN 
94619 
94620    --
94621    XLA_AE_LINES_PKG.SetNewLine;
94622 
94623    p_balance_type_code          := l_balance_type_code;
94624    -- set the flag so later we will know whether the gain loss line needs to be created
94625    
94626    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94627      p_actual_flag :='A';
94628    END IF;
94629 
94630    --
94631    -- bulk performance
94632    --
94633    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94634                                       p_header_num   => 0); -- 4262811
94635    --
94636    -- set accounting line options
94637    --
94638    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94639            p_natural_side_code          => 'D'
94640          , p_gain_or_loss_flag          => 'N'
94641          , p_gl_transfer_mode_code      => 'S'
94642          , p_acct_entry_type_code       => 'A'
94643          , p_switch_side_flag           => 'Y'
94644          , p_merge_duplicate_code       => 'N'
94645          );
94646    --
94647    l_acc_rev_natural_side_code := 'C';  -- 4262811
94648    -- 
94649    --
94650    -- set accounting line type info
94651    --
94652    xla_ae_lines_pkg.SetAcctLineType
94653       (p_component_type             => l_component_type
94654       ,p_event_type_code            => l_event_type_code
94655       ,p_line_definition_owner_code => l_line_definition_owner_code
94656       ,p_line_definition_code       => l_line_definition_code
94657       ,p_accounting_line_code       => l_component_code
94658       ,p_accounting_line_type_code  => l_component_type_code
94659       ,p_accounting_line_appl_id    => l_component_appl_id
94660       ,p_amb_context_code           => l_amb_context_code
94661       ,p_entity_code                => l_entity_code
94662       ,p_event_class_code           => l_event_class_code);
94663    --
94664    -- set accounting class
94665    --
94666    xla_ae_lines_pkg.SetAcctClass(
94667            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
94668          , p_ae_header_id           => l_ae_header_id
94669          );
94670 
94671    --
94672    -- set rounding class
94673    --
94674    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94675                       'INTERORG_RECEIVABLES';
94676 
94677    --
94678    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94679    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94680    --
94681    -- bulk performance
94682    --
94683    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94684 
94685    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94686       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94687 
94688    -- 4955764
94689    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94690       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94691 
94692    -- 4458381 Public Sector Enh
94693    
94694    --
94695    -- set accounting attributes for the line type
94696    --
94697    l_entered_amt_idx := 3;
94698    l_accted_amt_idx  := 8;
94699    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
94700    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94701    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
94702    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94703    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
94704    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94705    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
94706    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94707    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
94708    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94709    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
94710    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94711    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
94712    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94713    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
94714    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94715    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
94716 
94717    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94718    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94719 
94720    ---------------------------------------------------------------------------------------------------------------
94721    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94722    ---------------------------------------------------------------------------------------------------------------
94723    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94724 
94725    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94726    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94727 
94728    IF xla_accounting_cache_pkg.GetValueChar
94729          (p_source_code         => 'LEDGER_CATEGORY_CODE'
94730          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94731    AND l_bflow_method_code = 'PRIOR_ENTRY'
94732 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94733    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94734          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94735        )
94736    THEN
94737          xla_ae_lines_pkg.BflowUpgEntry
94738            (p_business_method_code    => l_bflow_method_code
94739            ,p_business_class_code     => l_bflow_class_code
94740            ,p_balance_type            => l_balance_type_code);
94741    ELSE
94742       NULL;
94743 -- No business flow processing for business flow method of NONE.
94744    END IF;
94745 
94746    --
94747    -- call analytical criteria
94748    --
94749    
94750    --
94751    -- call description
94752    --
94753    
94754 xla_ae_lines_pkg.SetLineDescription(
94755    p_ae_header_id => l_ae_header_id
94756   ,p_description  => Description_1 (
94757      p_application_id         => p_application_id
94758    , p_ae_header_id           => l_ae_header_id 
94759 , p_source_1 => p_source_1
94760 , p_source_2 => p_source_2
94761 , p_source_3 => p_source_3
94762 , p_source_4 => p_source_4
94763 , p_source_5 => p_source_5
94764    )
94765 );
94766 
94767 
94768    --
94769    -- call ADRs
94770    -- Bug 4922099
94771    --
94772    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94773         (NVL(l_actual_upg_option, 'N') = 'O') OR
94774         (NVL(l_enc_upg_option, 'N') = 'O')
94775       )
94776    THEN
94777    NULL;
94778    --
94779    --
94780    
94781   l_ccid := AcctDerRule_33(
94782            p_application_id           => p_application_id
94783          , p_ae_header_id             => l_ae_header_id 
94784 , p_source_59 => p_source_59
94785          , x_transaction_coa_id       => l_adr_transaction_coa_id
94786          , x_accounting_coa_id        => l_adr_accounting_coa_id
94787          , x_value_type_code          => l_adr_value_type_code
94788          , p_side                     => 'NA'
94789    );
94790 
94791    xla_ae_lines_pkg.set_ccid(
94792     p_code_combination_id          => l_ccid
94793   , p_value_type_code              => l_adr_value_type_code
94794   , p_transaction_coa_id           => l_adr_transaction_coa_id
94795   , p_accounting_coa_id            => l_adr_accounting_coa_id
94796   , p_adr_code                     => 'PI_RECEIVABLES'
94797   , p_adr_type_code                => 'S'
94798   , p_component_type               => l_component_type
94799   , p_component_code               => l_component_code
94800   , p_component_type_code          => l_component_type_code
94801   , p_component_appl_id            => l_component_appl_id
94802   , p_amb_context_code             => l_amb_context_code
94803   , p_side                         => 'NA'
94804   );
94805 
94806 
94807    --
94808    --
94809    END IF;
94810    --
94811    -- Bug 4922099
94812    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94813           (NVL(l_enc_upg_option, 'N') = 'O')
94814         ) AND
94815         (l_bflow_method_code = 'PRIOR_ENTRY')
94816       )
94817    THEN
94818       IF
94819       --
94820       1 = 2
94821       --
94822       THEN
94823       xla_accounting_err_pkg.build_message
94824                                     (p_appli_s_name            => 'XLA'
94825                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94826                                     ,p_token_1                 => 'LINE_NUMBER'
94827                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
94828                                     ,p_token_2                 => 'LINE_TYPE_NAME'
94829                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
94830                                                                              l_component_type
94831                                                                             ,l_component_code
94832                                                                             ,l_component_type_code
94833                                                                             ,l_component_appl_id
94834                                                                             ,l_amb_context_code
94835                                                                             ,l_entity_code
94836                                                                             ,l_event_class_code
94837                                                                            )
94838                                     ,p_token_3                 => 'OWNER'
94839                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
94840                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
94841                                                                           ,p_lookup_code    => l_component_type_code
94842                                                                          )
94843                                     ,p_token_4                 => 'PRODUCT_NAME'
94844                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94845                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94846                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94847                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94848                                     ,p_ae_header_id            =>  NULL
94849                                        );
94850 
94851         IF (C_LEVEL_ERROR>= g_log_level) THEN
94852                  trace
94853                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94854                       ,p_level    => C_LEVEL_ERROR
94855                       ,p_module   => l_log_module);
94856         END IF;
94857       END IF;
94858    END IF;
94859    --
94860    --
94861    ------------------------------------------------------------------------------------------------
94862    -- 4219869 Business Flow
94863    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94864    -- Prior Entry.  Currently, the following code is always generated.
94865    ------------------------------------------------------------------------------------------------
94866    XLA_AE_LINES_PKG.ValidateCurrentLine;
94867 
94868    ------------------------------------------------------------------------------------
94869    -- 4219869 Business Flow
94870    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94871    ------------------------------------------------------------------------------------
94872    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94873 
94874    ----------------------------------------------------------------------------------
94875    -- 4219869 Business Flow
94876    -- Update journal entry status -- Need to generate this within IF <condition>
94877    ----------------------------------------------------------------------------------
94878    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94879          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94880          ,p_balance_type_code => l_balance_type_code
94881          );
94882 
94883    -------------------------------------------------------------------------------------------
94884    -- 4262811 - Generate the Accrual Reversal lines
94885    -------------------------------------------------------------------------------------------
94886    BEGIN
94887       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94888                               (g_array_event(p_event_id).array_value_num('header_index'));
94889       IF l_acc_rev_flag IS NULL THEN
94890          l_acc_rev_flag := 'N';
94891       END IF;
94892    EXCEPTION
94893       WHEN OTHERS THEN
94894          l_acc_rev_flag := 'N';
94895    END;
94896    --
94897    IF (l_acc_rev_flag = 'Y') THEN
94898 
94899        -- 4645092  ------------------------------------------------------------------------------
94900        -- To allow MPA report to determine if it should generate report process
94901        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94902        ------------------------------------------------------------------------------------------
94903 
94904        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94905        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94906    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
94907    -- call ADRs
94908    -- Bug 4922099
94909    --
94910    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94911         (NVL(l_actual_upg_option, 'N') = 'O') OR
94912         (NVL(l_enc_upg_option, 'N') = 'O')
94913       )
94914    THEN
94915    NULL;
94916    --
94917    --
94918    
94919   l_ccid := AcctDerRule_33(
94920            p_application_id           => p_application_id
94921          , p_ae_header_id             => l_ae_header_id 
94922 , p_source_59 => p_source_59
94923          , x_transaction_coa_id       => l_adr_transaction_coa_id
94924          , x_accounting_coa_id        => l_adr_accounting_coa_id
94925          , x_value_type_code          => l_adr_value_type_code
94926          , p_side                     => 'NA'
94927    );
94928 
94929    xla_ae_lines_pkg.set_ccid(
94930     p_code_combination_id          => l_ccid
94931   , p_value_type_code              => l_adr_value_type_code
94932   , p_transaction_coa_id           => l_adr_transaction_coa_id
94933   , p_accounting_coa_id            => l_adr_accounting_coa_id
94934   , p_adr_code                     => 'PI_RECEIVABLES'
94935   , p_adr_type_code                => 'S'
94936   , p_component_type               => l_component_type
94937   , p_component_code               => l_component_code
94938   , p_component_type_code          => l_component_type_code
94939   , p_component_appl_id            => l_component_appl_id
94940   , p_amb_context_code             => l_amb_context_code
94941   , p_side                         => 'NA'
94942   );
94943 
94944 
94945    --
94946    --
94947    END IF;
94948 
94949        --
94950        -- Update the line information that should be overwritten
94951        --
94952        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94953                                          p_header_num   => 1);
94954        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
94955 
94956        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94957 
94958        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
94959           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94960        END IF;
94961 
94962       --
94963       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94964       --
94965       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94966           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
94967       ELSE
94968           ---------------------------------------------------------------------------------------------------
94969           -- 4262811a Switch Sign
94970           ---------------------------------------------------------------------------------------------------
94971           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
94972           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94973                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94974           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94975                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94976           -- 5132302
94977           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94978                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94979 
94980       END IF;
94981 
94982       -- 4955764
94983       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94984       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94985 
94986 
94987       XLA_AE_LINES_PKG.ValidateCurrentLine;
94988       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94989 
94990       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94991                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94992                ,p_balance_type_code => l_balance_type_code);
94993 
94994    END IF;
94995 
94996    -----------------------------------------------------------------------------------------
94997    -- 4262811 Multiperiod Accounting
94998    -----------------------------------------------------------------------------------------
94999      -- No MPA option is assigned.
95000 
95001 
95002 END IF;
95003 END IF;
95004 --
95005 
95006 --
95007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95008    trace
95009       (p_msg      => 'END of AcctLineType_190'
95010       ,p_level    => C_LEVEL_PROCEDURE
95011       ,p_module   => l_log_module);
95012 END IF;
95013 --
95014 EXCEPTION
95015   WHEN xla_exceptions_pkg.application_exception THEN
95016       RAISE;
95017   WHEN OTHERS THEN
95018        xla_exceptions_pkg.raise_message
95019            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_190');
95020 END AcctLineType_190;
95021 --
95022 
95023 ---------------------------------------
95024 --
95025 -- PRIVATE FUNCTION
95026 --         AcctLineType_191
95027 --
95028 ---------------------------------------
95029 PROCEDURE AcctLineType_191 (
95030   p_application_id        IN NUMBER
95031  ,p_event_id              IN NUMBER
95032  ,p_calculate_acctd_flag  IN VARCHAR2
95033  ,p_calculate_g_l_flag    IN VARCHAR2
95034  ,p_actual_flag           IN OUT VARCHAR2
95035  ,p_balance_type_code     OUT VARCHAR2
95036  ,p_gain_or_loss_ref      OUT VARCHAR2
95037  
95038 --TRANSACTION_ID
95039  , p_source_1            IN NUMBER
95040 --Item Concatenated Segments
95041  , p_source_2            IN VARCHAR2
95042 --Transaction Quantity
95043  , p_source_3            IN NUMBER
95044 --Transaction Unit of Measure Code
95045  , p_source_4            IN VARCHAR2
95046 --Inventory Transaction Type Description
95047  , p_source_5            IN VARCHAR2
95048 --Interorg Receivables Account
95049  , p_source_59            IN NUMBER
95050 --DISTRIBUTION_IDENTIFIER
95051  , p_source_84            IN NUMBER
95052 --Distribution Type
95053  , p_source_85            IN VARCHAR2
95054  , p_source_85_meaning    IN VARCHAR2
95055 --Entered Currency Code
95056  , p_source_88            IN VARCHAR2
95057 --Entered Amount
95058  , p_source_91            IN NUMBER
95059 --Currency Conversion Date
95060  , p_source_92            IN DATE
95061 --Currency Conversion Rate
95062  , p_source_93            IN NUMBER
95063 --Currency Conversion Type
95064  , p_source_94            IN VARCHAR2
95065 --Accounted Amount
95066  , p_source_95            IN NUMBER
95067 --Accounting Line Type
95068  , p_source_97            IN NUMBER
95069 )
95070 IS
95071 
95072 l_component_type              VARCHAR2(80);
95073 l_component_code              VARCHAR2(30);
95074 l_component_type_code         VARCHAR2(1);
95075 l_component_appl_id           INTEGER;
95076 l_amb_context_code            VARCHAR2(30);
95077 l_entity_code                 VARCHAR2(30);
95078 l_event_class_code            VARCHAR2(30);
95079 l_ae_header_id                NUMBER;
95080 l_event_type_code             VARCHAR2(30);
95081 l_line_definition_code        VARCHAR2(30);
95082 l_line_definition_owner_code  VARCHAR2(1);
95083 --
95084 -- adr variables
95085 l_segment                     VARCHAR2(30);
95086 l_ccid                        NUMBER;
95087 l_adr_transaction_coa_id      NUMBER;
95088 l_adr_accounting_coa_id       NUMBER;
95089 l_adr_flexfield_segment_code  VARCHAR2(30);
95090 l_adr_flex_value_set_id       NUMBER;
95091 l_adr_value_type_code         VARCHAR2(30);
95092 l_adr_value_combination_id    NUMBER;
95093 l_adr_value_segment_code      VARCHAR2(30);
95094 
95095 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
95096 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
95097 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
95098 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
95099 
95100 -- 4262811 Variables ------------------------------------------------------------------------------------------
95101 l_entered_amt_idx             NUMBER;
95102 l_accted_amt_idx              NUMBER;
95103 l_acc_rev_flag                VARCHAR2(1);
95104 l_accrual_line_num            NUMBER;
95105 l_tmp_amt                     NUMBER;
95106 l_acc_rev_natural_side_code   VARCHAR2(1);
95107 
95108 l_num_entries                 NUMBER;
95109 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
95110 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
95111 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
95112 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
95113 l_recog_line_1                NUMBER;
95114 l_recog_line_2                NUMBER;
95115 
95116 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
95117 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
95118 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
95119 
95120 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95121 
95122 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
95123 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
95124 
95125 ---------------------------------------------------------------------------------------------------------------
95126 
95127 
95128 --
95129 -- bulk performance
95130 --
95131 l_balance_type_code           VARCHAR2(1);
95132 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
95133 l_log_module                  VARCHAR2(240);
95134 
95135 --
95136 -- Upgrade strategy
95137 --
95138 l_actual_upg_option           VARCHAR2(1);
95139 l_enc_upg_option           VARCHAR2(1);
95140 
95141 --
95142 BEGIN
95143 --
95144 IF g_log_enabled THEN
95145       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_191';
95146 END IF;
95147 --
95148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95149 
95150       trace
95151          (p_msg      => 'BEGIN of AcctLineType_191'
95152          ,p_level    => C_LEVEL_PROCEDURE
95153          ,p_module   => l_log_module);
95154 
95155 END IF;
95156 --
95157 l_component_type             := 'AMB_JLT';
95158 l_component_code             := 'INTERORG_RECEIVABLES';
95159 l_component_type_code        := 'S';
95160 l_component_appl_id          :=  707;
95161 l_amb_context_code           := 'DEFAULT';
95162 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
95163 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
95164 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
95165 l_line_definition_owner_code := 'S';
95166 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
95167 --
95168 l_balance_type_code          := 'A';
95169 l_segment                     := NULL;
95170 l_ccid                        := NULL;
95171 l_adr_transaction_coa_id      := NULL;
95172 l_adr_accounting_coa_id       := NULL;
95173 l_adr_flexfield_segment_code  := NULL;
95174 l_adr_flex_value_set_id       := NULL;
95175 l_adr_value_type_code         := NULL;
95176 l_adr_value_combination_id    := NULL;
95177 l_adr_value_segment_code      := NULL;
95178 
95179 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
95180 l_bflow_class_code           := '';    -- 4219869 Business Flow
95181 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
95182 l_budgetary_control_flag     := 'N';
95183 
95184 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
95185 l_bflow_applied_to_amt       := NULL; -- 5132302
95186 l_entered_amt_idx            := NULL;          -- 4262811
95187 l_accted_amt_idx             := NULL;          -- 4262811
95188 l_acc_rev_flag               := NULL;          -- 4262811
95189 l_accrual_line_num           := NULL;          -- 4262811
95190 l_tmp_amt                    := NULL;          -- 4262811
95191 --
95192  
95193 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95194     l_balance_type_code <> 'B' THEN
95195 IF NVL(p_source_97,9E125) =  10
95196  THEN 
95197 
95198    --
95199    XLA_AE_LINES_PKG.SetNewLine;
95200 
95201    p_balance_type_code          := l_balance_type_code;
95202    -- set the flag so later we will know whether the gain loss line needs to be created
95203    
95204    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95205      p_actual_flag :='A';
95206    END IF;
95207 
95208    --
95209    -- bulk performance
95210    --
95211    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95212                                       p_header_num   => 0); -- 4262811
95213    --
95214    -- set accounting line options
95215    --
95216    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95217            p_natural_side_code          => 'D'
95218          , p_gain_or_loss_flag          => 'N'
95219          , p_gl_transfer_mode_code      => 'S'
95220          , p_acct_entry_type_code       => 'A'
95221          , p_switch_side_flag           => 'Y'
95222          , p_merge_duplicate_code       => 'N'
95223          );
95224    --
95225    l_acc_rev_natural_side_code := 'C';  -- 4262811
95226    -- 
95227    --
95228    -- set accounting line type info
95229    --
95230    xla_ae_lines_pkg.SetAcctLineType
95231       (p_component_type             => l_component_type
95232       ,p_event_type_code            => l_event_type_code
95233       ,p_line_definition_owner_code => l_line_definition_owner_code
95234       ,p_line_definition_code       => l_line_definition_code
95235       ,p_accounting_line_code       => l_component_code
95236       ,p_accounting_line_type_code  => l_component_type_code
95237       ,p_accounting_line_appl_id    => l_component_appl_id
95238       ,p_amb_context_code           => l_amb_context_code
95239       ,p_entity_code                => l_entity_code
95240       ,p_event_class_code           => l_event_class_code);
95241    --
95242    -- set accounting class
95243    --
95244    xla_ae_lines_pkg.SetAcctClass(
95245            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
95246          , p_ae_header_id           => l_ae_header_id
95247          );
95248 
95249    --
95250    -- set rounding class
95251    --
95252    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95253                       'INTERORG_RECEIVABLES';
95254 
95255    --
95256    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95257    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95258    --
95259    -- bulk performance
95260    --
95261    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95262 
95263    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95264       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95265 
95266    -- 4955764
95267    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95268       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95269 
95270    -- 4458381 Public Sector Enh
95271    
95272    --
95273    -- set accounting attributes for the line type
95274    --
95275    l_entered_amt_idx := 3;
95276    l_accted_amt_idx  := 8;
95277    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95278    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95279    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
95280    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95281    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
95282    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95283    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
95284    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95285    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
95286    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95287    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
95288    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95289    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
95290    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95291    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
95292    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95293    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
95294 
95295    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95296    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95297 
95298    ---------------------------------------------------------------------------------------------------------------
95299    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95300    ---------------------------------------------------------------------------------------------------------------
95301    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95302 
95303    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95304    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95305 
95306    IF xla_accounting_cache_pkg.GetValueChar
95307          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95308          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95309    AND l_bflow_method_code = 'PRIOR_ENTRY'
95310 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95311    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95312          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95313        )
95314    THEN
95315          xla_ae_lines_pkg.BflowUpgEntry
95316            (p_business_method_code    => l_bflow_method_code
95317            ,p_business_class_code     => l_bflow_class_code
95318            ,p_balance_type            => l_balance_type_code);
95319    ELSE
95320       NULL;
95321 -- No business flow processing for business flow method of NONE.
95322    END IF;
95323 
95324    --
95325    -- call analytical criteria
95326    --
95327    
95328    --
95329    -- call description
95330    --
95331    
95332 xla_ae_lines_pkg.SetLineDescription(
95333    p_ae_header_id => l_ae_header_id
95334   ,p_description  => Description_1 (
95335      p_application_id         => p_application_id
95336    , p_ae_header_id           => l_ae_header_id 
95337 , p_source_1 => p_source_1
95338 , p_source_2 => p_source_2
95339 , p_source_3 => p_source_3
95340 , p_source_4 => p_source_4
95341 , p_source_5 => p_source_5
95342    )
95343 );
95344 
95345 
95346    --
95347    -- call ADRs
95348    -- Bug 4922099
95349    --
95350    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95351         (NVL(l_actual_upg_option, 'N') = 'O') OR
95352         (NVL(l_enc_upg_option, 'N') = 'O')
95353       )
95354    THEN
95355    NULL;
95356    --
95357    --
95358    
95359   l_ccid := AcctDerRule_33(
95360            p_application_id           => p_application_id
95361          , p_ae_header_id             => l_ae_header_id 
95362 , p_source_59 => p_source_59
95363          , x_transaction_coa_id       => l_adr_transaction_coa_id
95364          , x_accounting_coa_id        => l_adr_accounting_coa_id
95365          , x_value_type_code          => l_adr_value_type_code
95366          , p_side                     => 'NA'
95367    );
95368 
95369    xla_ae_lines_pkg.set_ccid(
95370     p_code_combination_id          => l_ccid
95371   , p_value_type_code              => l_adr_value_type_code
95372   , p_transaction_coa_id           => l_adr_transaction_coa_id
95373   , p_accounting_coa_id            => l_adr_accounting_coa_id
95374   , p_adr_code                     => 'PI_RECEIVABLES'
95375   , p_adr_type_code                => 'S'
95376   , p_component_type               => l_component_type
95377   , p_component_code               => l_component_code
95378   , p_component_type_code          => l_component_type_code
95379   , p_component_appl_id            => l_component_appl_id
95380   , p_amb_context_code             => l_amb_context_code
95381   , p_side                         => 'NA'
95382   );
95383 
95384 
95385    --
95386    --
95387    END IF;
95388    --
95389    -- Bug 4922099
95390    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95391           (NVL(l_enc_upg_option, 'N') = 'O')
95392         ) AND
95393         (l_bflow_method_code = 'PRIOR_ENTRY')
95394       )
95395    THEN
95396       IF
95397       --
95398       1 = 2
95399       --
95400       THEN
95401       xla_accounting_err_pkg.build_message
95402                                     (p_appli_s_name            => 'XLA'
95403                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95404                                     ,p_token_1                 => 'LINE_NUMBER'
95405                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95406                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95407                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95408                                                                              l_component_type
95409                                                                             ,l_component_code
95410                                                                             ,l_component_type_code
95411                                                                             ,l_component_appl_id
95412                                                                             ,l_amb_context_code
95413                                                                             ,l_entity_code
95414                                                                             ,l_event_class_code
95415                                                                            )
95416                                     ,p_token_3                 => 'OWNER'
95417                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95418                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95419                                                                           ,p_lookup_code    => l_component_type_code
95420                                                                          )
95421                                     ,p_token_4                 => 'PRODUCT_NAME'
95422                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95423                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95424                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95425                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95426                                     ,p_ae_header_id            =>  NULL
95427                                        );
95428 
95429         IF (C_LEVEL_ERROR>= g_log_level) THEN
95430                  trace
95431                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95432                       ,p_level    => C_LEVEL_ERROR
95433                       ,p_module   => l_log_module);
95434         END IF;
95435       END IF;
95436    END IF;
95437    --
95438    --
95439    ------------------------------------------------------------------------------------------------
95440    -- 4219869 Business Flow
95441    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95442    -- Prior Entry.  Currently, the following code is always generated.
95443    ------------------------------------------------------------------------------------------------
95444    XLA_AE_LINES_PKG.ValidateCurrentLine;
95445 
95446    ------------------------------------------------------------------------------------
95447    -- 4219869 Business Flow
95448    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95449    ------------------------------------------------------------------------------------
95450    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95451 
95452    ----------------------------------------------------------------------------------
95453    -- 4219869 Business Flow
95454    -- Update journal entry status -- Need to generate this within IF <condition>
95455    ----------------------------------------------------------------------------------
95456    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95457          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95458          ,p_balance_type_code => l_balance_type_code
95459          );
95460 
95461    -------------------------------------------------------------------------------------------
95462    -- 4262811 - Generate the Accrual Reversal lines
95463    -------------------------------------------------------------------------------------------
95464    BEGIN
95465       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95466                               (g_array_event(p_event_id).array_value_num('header_index'));
95467       IF l_acc_rev_flag IS NULL THEN
95468          l_acc_rev_flag := 'N';
95469       END IF;
95470    EXCEPTION
95471       WHEN OTHERS THEN
95472          l_acc_rev_flag := 'N';
95473    END;
95474    --
95475    IF (l_acc_rev_flag = 'Y') THEN
95476 
95477        -- 4645092  ------------------------------------------------------------------------------
95478        -- To allow MPA report to determine if it should generate report process
95479        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95480        ------------------------------------------------------------------------------------------
95481 
95482        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95483        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95484    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
95485    -- call ADRs
95486    -- Bug 4922099
95487    --
95488    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95489         (NVL(l_actual_upg_option, 'N') = 'O') OR
95490         (NVL(l_enc_upg_option, 'N') = 'O')
95491       )
95492    THEN
95493    NULL;
95494    --
95495    --
95496    
95497   l_ccid := AcctDerRule_33(
95498            p_application_id           => p_application_id
95499          , p_ae_header_id             => l_ae_header_id 
95500 , p_source_59 => p_source_59
95501          , x_transaction_coa_id       => l_adr_transaction_coa_id
95502          , x_accounting_coa_id        => l_adr_accounting_coa_id
95503          , x_value_type_code          => l_adr_value_type_code
95504          , p_side                     => 'NA'
95505    );
95506 
95507    xla_ae_lines_pkg.set_ccid(
95508     p_code_combination_id          => l_ccid
95509   , p_value_type_code              => l_adr_value_type_code
95510   , p_transaction_coa_id           => l_adr_transaction_coa_id
95511   , p_accounting_coa_id            => l_adr_accounting_coa_id
95512   , p_adr_code                     => 'PI_RECEIVABLES'
95513   , p_adr_type_code                => 'S'
95514   , p_component_type               => l_component_type
95515   , p_component_code               => l_component_code
95516   , p_component_type_code          => l_component_type_code
95517   , p_component_appl_id            => l_component_appl_id
95518   , p_amb_context_code             => l_amb_context_code
95519   , p_side                         => 'NA'
95520   );
95521 
95522 
95523    --
95524    --
95525    END IF;
95526 
95527        --
95528        -- Update the line information that should be overwritten
95529        --
95530        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95531                                          p_header_num   => 1);
95532        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
95533 
95534        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95535 
95536        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
95537           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95538        END IF;
95539 
95540       --
95541       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95542       --
95543       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95544           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
95545       ELSE
95546           ---------------------------------------------------------------------------------------------------
95547           -- 4262811a Switch Sign
95548           ---------------------------------------------------------------------------------------------------
95549           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
95550           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95551                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95552           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95553                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95554           -- 5132302
95555           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95556                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95557 
95558       END IF;
95559 
95560       -- 4955764
95561       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95563 
95564 
95565       XLA_AE_LINES_PKG.ValidateCurrentLine;
95566       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95567 
95568       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95569                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95570                ,p_balance_type_code => l_balance_type_code);
95571 
95572    END IF;
95573 
95574    -----------------------------------------------------------------------------------------
95575    -- 4262811 Multiperiod Accounting
95576    -----------------------------------------------------------------------------------------
95577      -- No MPA option is assigned.
95578 
95579 
95580 END IF;
95581 END IF;
95582 --
95583 
95584 --
95585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95586    trace
95587       (p_msg      => 'END of AcctLineType_191'
95588       ,p_level    => C_LEVEL_PROCEDURE
95589       ,p_module   => l_log_module);
95590 END IF;
95591 --
95592 EXCEPTION
95593   WHEN xla_exceptions_pkg.application_exception THEN
95594       RAISE;
95595   WHEN OTHERS THEN
95596        xla_exceptions_pkg.raise_message
95597            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_191');
95598 END AcctLineType_191;
95599 --
95600 
95601 ---------------------------------------
95602 --
95603 -- PRIVATE FUNCTION
95604 --         AcctLineType_192
95605 --
95606 ---------------------------------------
95607 PROCEDURE AcctLineType_192 (
95608   p_application_id        IN NUMBER
95609  ,p_event_id              IN NUMBER
95610  ,p_calculate_acctd_flag  IN VARCHAR2
95611  ,p_calculate_g_l_flag    IN VARCHAR2
95612  ,p_actual_flag           IN OUT VARCHAR2
95613  ,p_balance_type_code     OUT VARCHAR2
95614  ,p_gain_or_loss_ref      OUT VARCHAR2
95615  
95616 --Interorg Receivables Account
95617  , p_source_59            IN NUMBER
95618 --DISTRIBUTION_IDENTIFIER
95619  , p_source_84            IN NUMBER
95620 --Distribution Type
95621  , p_source_85            IN VARCHAR2
95622  , p_source_85_meaning    IN VARCHAR2
95623 --Entered Currency Code
95624  , p_source_88            IN VARCHAR2
95625 --Entered Amount
95626  , p_source_91            IN NUMBER
95627 --Currency Conversion Date
95628  , p_source_92            IN DATE
95629 --Currency Conversion Rate
95630  , p_source_93            IN NUMBER
95631 --Currency Conversion Type
95632  , p_source_94            IN VARCHAR2
95633 --Accounted Amount
95634  , p_source_95            IN NUMBER
95635 --Accounting Line Type
95636  , p_source_97            IN NUMBER
95637 )
95638 IS
95639 
95640 l_component_type              VARCHAR2(80);
95641 l_component_code              VARCHAR2(30);
95642 l_component_type_code         VARCHAR2(1);
95643 l_component_appl_id           INTEGER;
95644 l_amb_context_code            VARCHAR2(30);
95645 l_entity_code                 VARCHAR2(30);
95646 l_event_class_code            VARCHAR2(30);
95647 l_ae_header_id                NUMBER;
95648 l_event_type_code             VARCHAR2(30);
95649 l_line_definition_code        VARCHAR2(30);
95650 l_line_definition_owner_code  VARCHAR2(1);
95651 --
95652 -- adr variables
95653 l_segment                     VARCHAR2(30);
95654 l_ccid                        NUMBER;
95655 l_adr_transaction_coa_id      NUMBER;
95656 l_adr_accounting_coa_id       NUMBER;
95657 l_adr_flexfield_segment_code  VARCHAR2(30);
95658 l_adr_flex_value_set_id       NUMBER;
95659 l_adr_value_type_code         VARCHAR2(30);
95660 l_adr_value_combination_id    NUMBER;
95661 l_adr_value_segment_code      VARCHAR2(30);
95662 
95663 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
95664 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
95665 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
95666 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
95667 
95668 -- 4262811 Variables ------------------------------------------------------------------------------------------
95669 l_entered_amt_idx             NUMBER;
95670 l_accted_amt_idx              NUMBER;
95671 l_acc_rev_flag                VARCHAR2(1);
95672 l_accrual_line_num            NUMBER;
95673 l_tmp_amt                     NUMBER;
95674 l_acc_rev_natural_side_code   VARCHAR2(1);
95675 
95676 l_num_entries                 NUMBER;
95677 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
95678 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
95679 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
95680 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
95681 l_recog_line_1                NUMBER;
95682 l_recog_line_2                NUMBER;
95683 
95684 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
95685 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
95686 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
95687 
95688 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95689 
95690 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
95691 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
95692 
95693 ---------------------------------------------------------------------------------------------------------------
95694 
95695 
95696 --
95697 -- bulk performance
95698 --
95699 l_balance_type_code           VARCHAR2(1);
95700 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
95701 l_log_module                  VARCHAR2(240);
95702 
95703 --
95704 -- Upgrade strategy
95705 --
95706 l_actual_upg_option           VARCHAR2(1);
95707 l_enc_upg_option           VARCHAR2(1);
95708 
95709 --
95710 BEGIN
95711 --
95712 IF g_log_enabled THEN
95713       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_192';
95714 END IF;
95715 --
95716 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95717 
95718       trace
95719          (p_msg      => 'BEGIN of AcctLineType_192'
95720          ,p_level    => C_LEVEL_PROCEDURE
95721          ,p_module   => l_log_module);
95722 
95723 END IF;
95724 --
95725 l_component_type             := 'AMB_JLT';
95726 l_component_code             := 'INTERORG_RECEIVABLES';
95727 l_component_type_code        := 'S';
95728 l_component_appl_id          :=  707;
95729 l_amb_context_code           := 'DEFAULT';
95730 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
95731 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
95732 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
95733 l_line_definition_owner_code := 'S';
95734 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
95735 --
95736 l_balance_type_code          := 'A';
95737 l_segment                     := NULL;
95738 l_ccid                        := NULL;
95739 l_adr_transaction_coa_id      := NULL;
95740 l_adr_accounting_coa_id       := NULL;
95741 l_adr_flexfield_segment_code  := NULL;
95742 l_adr_flex_value_set_id       := NULL;
95743 l_adr_value_type_code         := NULL;
95744 l_adr_value_combination_id    := NULL;
95745 l_adr_value_segment_code      := NULL;
95746 
95747 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
95748 l_bflow_class_code           := '';    -- 4219869 Business Flow
95749 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
95750 l_budgetary_control_flag     := 'N';
95751 
95752 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
95753 l_bflow_applied_to_amt       := NULL; -- 5132302
95754 l_entered_amt_idx            := NULL;          -- 4262811
95755 l_accted_amt_idx             := NULL;          -- 4262811
95756 l_acc_rev_flag               := NULL;          -- 4262811
95757 l_accrual_line_num           := NULL;          -- 4262811
95758 l_tmp_amt                    := NULL;          -- 4262811
95759 --
95760  
95761 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95762     l_balance_type_code <> 'B' THEN
95763 IF NVL(p_source_97,9E125) =  10
95764  THEN 
95765 
95766    --
95767    XLA_AE_LINES_PKG.SetNewLine;
95768 
95769    p_balance_type_code          := l_balance_type_code;
95770    -- set the flag so later we will know whether the gain loss line needs to be created
95771    
95772    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95773      p_actual_flag :='A';
95774    END IF;
95775 
95776    --
95777    -- bulk performance
95778    --
95779    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95780                                       p_header_num   => 0); -- 4262811
95781    --
95782    -- set accounting line options
95783    --
95784    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95785            p_natural_side_code          => 'D'
95786          , p_gain_or_loss_flag          => 'N'
95787          , p_gl_transfer_mode_code      => 'S'
95788          , p_acct_entry_type_code       => 'A'
95789          , p_switch_side_flag           => 'Y'
95790          , p_merge_duplicate_code       => 'N'
95791          );
95792    --
95793    l_acc_rev_natural_side_code := 'C';  -- 4262811
95794    -- 
95795    --
95796    -- set accounting line type info
95797    --
95798    xla_ae_lines_pkg.SetAcctLineType
95799       (p_component_type             => l_component_type
95800       ,p_event_type_code            => l_event_type_code
95801       ,p_line_definition_owner_code => l_line_definition_owner_code
95802       ,p_line_definition_code       => l_line_definition_code
95803       ,p_accounting_line_code       => l_component_code
95804       ,p_accounting_line_type_code  => l_component_type_code
95805       ,p_accounting_line_appl_id    => l_component_appl_id
95806       ,p_amb_context_code           => l_amb_context_code
95807       ,p_entity_code                => l_entity_code
95808       ,p_event_class_code           => l_event_class_code);
95809    --
95810    -- set accounting class
95811    --
95812    xla_ae_lines_pkg.SetAcctClass(
95813            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
95814          , p_ae_header_id           => l_ae_header_id
95815          );
95816 
95817    --
95818    -- set rounding class
95819    --
95820    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95821                       'INTERORG_RECEIVABLES';
95822 
95823    --
95824    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95825    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95826    --
95827    -- bulk performance
95828    --
95829    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95830 
95831    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95832       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95833 
95834    -- 4955764
95835    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95836       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95837 
95838    -- 4458381 Public Sector Enh
95839    
95840    --
95841    -- set accounting attributes for the line type
95842    --
95843    l_entered_amt_idx := 3;
95844    l_accted_amt_idx  := 8;
95845    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
95846    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95847    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
95848    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95849    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
95850    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95851    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
95852    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95853    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
95854    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95855    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
95856    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95857    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
95858    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95859    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
95860    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95861    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
95862 
95863    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95864    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95865 
95866    ---------------------------------------------------------------------------------------------------------------
95867    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95868    ---------------------------------------------------------------------------------------------------------------
95869    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95870 
95871    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95872    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95873 
95874    IF xla_accounting_cache_pkg.GetValueChar
95875          (p_source_code         => 'LEDGER_CATEGORY_CODE'
95876          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95877    AND l_bflow_method_code = 'PRIOR_ENTRY'
95878 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95879    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95880          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95881        )
95882    THEN
95883          xla_ae_lines_pkg.BflowUpgEntry
95884            (p_business_method_code    => l_bflow_method_code
95885            ,p_business_class_code     => l_bflow_class_code
95886            ,p_balance_type            => l_balance_type_code);
95887    ELSE
95888       NULL;
95889 -- No business flow processing for business flow method of NONE.
95890    END IF;
95891 
95892    --
95893    -- call analytical criteria
95894    --
95895    
95896    --
95897    -- call description
95898    --
95899    -- No description or it is inherited.
95900    --
95901    -- call ADRs
95902    -- Bug 4922099
95903    --
95904    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95905         (NVL(l_actual_upg_option, 'N') = 'O') OR
95906         (NVL(l_enc_upg_option, 'N') = 'O')
95907       )
95908    THEN
95909    NULL;
95910    --
95911    --
95912    
95913   l_ccid := AcctDerRule_33(
95914            p_application_id           => p_application_id
95915          , p_ae_header_id             => l_ae_header_id 
95916 , p_source_59 => p_source_59
95917          , x_transaction_coa_id       => l_adr_transaction_coa_id
95918          , x_accounting_coa_id        => l_adr_accounting_coa_id
95919          , x_value_type_code          => l_adr_value_type_code
95920          , p_side                     => 'NA'
95921    );
95922 
95923    xla_ae_lines_pkg.set_ccid(
95924     p_code_combination_id          => l_ccid
95925   , p_value_type_code              => l_adr_value_type_code
95926   , p_transaction_coa_id           => l_adr_transaction_coa_id
95927   , p_accounting_coa_id            => l_adr_accounting_coa_id
95928   , p_adr_code                     => 'PI_RECEIVABLES'
95929   , p_adr_type_code                => 'S'
95930   , p_component_type               => l_component_type
95931   , p_component_code               => l_component_code
95932   , p_component_type_code          => l_component_type_code
95933   , p_component_appl_id            => l_component_appl_id
95934   , p_amb_context_code             => l_amb_context_code
95935   , p_side                         => 'NA'
95936   );
95937 
95938 
95939    --
95940    --
95941    END IF;
95942    --
95943    -- Bug 4922099
95944    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95945           (NVL(l_enc_upg_option, 'N') = 'O')
95946         ) AND
95947         (l_bflow_method_code = 'PRIOR_ENTRY')
95948       )
95949    THEN
95950       IF
95951       --
95952       1 = 2
95953       --
95954       THEN
95955       xla_accounting_err_pkg.build_message
95956                                     (p_appli_s_name            => 'XLA'
95957                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95958                                     ,p_token_1                 => 'LINE_NUMBER'
95959                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
95960                                     ,p_token_2                 => 'LINE_TYPE_NAME'
95961                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
95962                                                                              l_component_type
95963                                                                             ,l_component_code
95964                                                                             ,l_component_type_code
95965                                                                             ,l_component_appl_id
95966                                                                             ,l_amb_context_code
95967                                                                             ,l_entity_code
95968                                                                             ,l_event_class_code
95969                                                                            )
95970                                     ,p_token_3                 => 'OWNER'
95971                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
95972                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
95973                                                                           ,p_lookup_code    => l_component_type_code
95974                                                                          )
95975                                     ,p_token_4                 => 'PRODUCT_NAME'
95976                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95977                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95978                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95979                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95980                                     ,p_ae_header_id            =>  NULL
95981                                        );
95982 
95983         IF (C_LEVEL_ERROR>= g_log_level) THEN
95984                  trace
95985                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95986                       ,p_level    => C_LEVEL_ERROR
95987                       ,p_module   => l_log_module);
95988         END IF;
95989       END IF;
95990    END IF;
95991    --
95992    --
95993    ------------------------------------------------------------------------------------------------
95994    -- 4219869 Business Flow
95995    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95996    -- Prior Entry.  Currently, the following code is always generated.
95997    ------------------------------------------------------------------------------------------------
95998    XLA_AE_LINES_PKG.ValidateCurrentLine;
95999 
96000    ------------------------------------------------------------------------------------
96001    -- 4219869 Business Flow
96002    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96003    ------------------------------------------------------------------------------------
96004    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96005 
96006    ----------------------------------------------------------------------------------
96007    -- 4219869 Business Flow
96008    -- Update journal entry status -- Need to generate this within IF <condition>
96009    ----------------------------------------------------------------------------------
96010    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96011          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96012          ,p_balance_type_code => l_balance_type_code
96013          );
96014 
96015    -------------------------------------------------------------------------------------------
96016    -- 4262811 - Generate the Accrual Reversal lines
96017    -------------------------------------------------------------------------------------------
96018    BEGIN
96019       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96020                               (g_array_event(p_event_id).array_value_num('header_index'));
96021       IF l_acc_rev_flag IS NULL THEN
96022          l_acc_rev_flag := 'N';
96023       END IF;
96024    EXCEPTION
96025       WHEN OTHERS THEN
96026          l_acc_rev_flag := 'N';
96027    END;
96028    --
96029    IF (l_acc_rev_flag = 'Y') THEN
96030 
96031        -- 4645092  ------------------------------------------------------------------------------
96032        -- To allow MPA report to determine if it should generate report process
96033        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96034        ------------------------------------------------------------------------------------------
96035 
96036        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96037        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96038    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
96039    -- call ADRs
96040    -- Bug 4922099
96041    --
96042    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96043         (NVL(l_actual_upg_option, 'N') = 'O') OR
96044         (NVL(l_enc_upg_option, 'N') = 'O')
96045       )
96046    THEN
96047    NULL;
96048    --
96049    --
96050    
96051   l_ccid := AcctDerRule_33(
96052            p_application_id           => p_application_id
96053          , p_ae_header_id             => l_ae_header_id 
96054 , p_source_59 => p_source_59
96055          , x_transaction_coa_id       => l_adr_transaction_coa_id
96056          , x_accounting_coa_id        => l_adr_accounting_coa_id
96057          , x_value_type_code          => l_adr_value_type_code
96058          , p_side                     => 'NA'
96059    );
96060 
96061    xla_ae_lines_pkg.set_ccid(
96062     p_code_combination_id          => l_ccid
96063   , p_value_type_code              => l_adr_value_type_code
96064   , p_transaction_coa_id           => l_adr_transaction_coa_id
96065   , p_accounting_coa_id            => l_adr_accounting_coa_id
96066   , p_adr_code                     => 'PI_RECEIVABLES'
96067   , p_adr_type_code                => 'S'
96068   , p_component_type               => l_component_type
96069   , p_component_code               => l_component_code
96070   , p_component_type_code          => l_component_type_code
96071   , p_component_appl_id            => l_component_appl_id
96072   , p_amb_context_code             => l_amb_context_code
96073   , p_side                         => 'NA'
96074   );
96075 
96076 
96077    --
96078    --
96079    END IF;
96080 
96081        --
96082        -- Update the line information that should be overwritten
96083        --
96084        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96085                                          p_header_num   => 1);
96086        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96087 
96088        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96089 
96090        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96091           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96092        END IF;
96093 
96094       --
96095       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96096       --
96097       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96098           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96099       ELSE
96100           ---------------------------------------------------------------------------------------------------
96101           -- 4262811a Switch Sign
96102           ---------------------------------------------------------------------------------------------------
96103           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96104           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96105                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96106           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96107                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96108           -- 5132302
96109           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96110                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96111 
96112       END IF;
96113 
96114       -- 4955764
96115       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96116       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96117 
96118 
96119       XLA_AE_LINES_PKG.ValidateCurrentLine;
96120       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96121 
96122       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96123                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96124                ,p_balance_type_code => l_balance_type_code);
96125 
96126    END IF;
96127 
96128    -----------------------------------------------------------------------------------------
96129    -- 4262811 Multiperiod Accounting
96130    -----------------------------------------------------------------------------------------
96131      -- No MPA option is assigned.
96132 
96133 
96134 END IF;
96135 END IF;
96136 --
96137 
96138 --
96139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96140    trace
96141       (p_msg      => 'END of AcctLineType_192'
96142       ,p_level    => C_LEVEL_PROCEDURE
96143       ,p_module   => l_log_module);
96144 END IF;
96145 --
96146 EXCEPTION
96147   WHEN xla_exceptions_pkg.application_exception THEN
96148       RAISE;
96149   WHEN OTHERS THEN
96150        xla_exceptions_pkg.raise_message
96151            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_192');
96152 END AcctLineType_192;
96153 --
96154 
96155 ---------------------------------------
96156 --
96157 -- PRIVATE FUNCTION
96158 --         AcctLineType_193
96159 --
96160 ---------------------------------------
96161 PROCEDURE AcctLineType_193 (
96162   p_application_id        IN NUMBER
96163  ,p_event_id              IN NUMBER
96164  ,p_calculate_acctd_flag  IN VARCHAR2
96165  ,p_calculate_g_l_flag    IN VARCHAR2
96166  ,p_actual_flag           IN OUT VARCHAR2
96167  ,p_balance_type_code     OUT VARCHAR2
96168  ,p_gain_or_loss_ref      OUT VARCHAR2
96169  
96170 --TRANSACTION_ID
96171  , p_source_1            IN NUMBER
96172 --Item Concatenated Segments
96173  , p_source_2            IN VARCHAR2
96174 --Transaction Quantity
96175  , p_source_3            IN NUMBER
96176 --Transaction Unit of Measure Code
96177  , p_source_4            IN VARCHAR2
96178 --Inventory Transaction Type Description
96179  , p_source_5            IN VARCHAR2
96180 --Interorg Receivables Account
96181  , p_source_59            IN NUMBER
96182 --DISTRIBUTION_IDENTIFIER
96183  , p_source_84            IN NUMBER
96184 --Distribution Type
96185  , p_source_85            IN VARCHAR2
96186  , p_source_85_meaning    IN VARCHAR2
96187 --Entered Currency Code
96188  , p_source_88            IN VARCHAR2
96189 --Entered Amount
96190  , p_source_91            IN NUMBER
96191 --Currency Conversion Date
96192  , p_source_92            IN DATE
96193 --Currency Conversion Rate
96194  , p_source_93            IN NUMBER
96195 --Currency Conversion Type
96196  , p_source_94            IN VARCHAR2
96197 --Accounted Amount
96198  , p_source_95            IN NUMBER
96199 --Accounting Line Type
96200  , p_source_97            IN NUMBER
96201 )
96202 IS
96203 
96204 l_component_type              VARCHAR2(80);
96205 l_component_code              VARCHAR2(30);
96206 l_component_type_code         VARCHAR2(1);
96207 l_component_appl_id           INTEGER;
96208 l_amb_context_code            VARCHAR2(30);
96209 l_entity_code                 VARCHAR2(30);
96210 l_event_class_code            VARCHAR2(30);
96211 l_ae_header_id                NUMBER;
96212 l_event_type_code             VARCHAR2(30);
96213 l_line_definition_code        VARCHAR2(30);
96214 l_line_definition_owner_code  VARCHAR2(1);
96215 --
96216 -- adr variables
96217 l_segment                     VARCHAR2(30);
96218 l_ccid                        NUMBER;
96219 l_adr_transaction_coa_id      NUMBER;
96220 l_adr_accounting_coa_id       NUMBER;
96221 l_adr_flexfield_segment_code  VARCHAR2(30);
96222 l_adr_flex_value_set_id       NUMBER;
96223 l_adr_value_type_code         VARCHAR2(30);
96224 l_adr_value_combination_id    NUMBER;
96225 l_adr_value_segment_code      VARCHAR2(30);
96226 
96227 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
96228 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
96229 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
96230 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
96231 
96232 -- 4262811 Variables ------------------------------------------------------------------------------------------
96233 l_entered_amt_idx             NUMBER;
96234 l_accted_amt_idx              NUMBER;
96235 l_acc_rev_flag                VARCHAR2(1);
96236 l_accrual_line_num            NUMBER;
96237 l_tmp_amt                     NUMBER;
96238 l_acc_rev_natural_side_code   VARCHAR2(1);
96239 
96240 l_num_entries                 NUMBER;
96241 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
96242 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
96243 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
96244 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
96245 l_recog_line_1                NUMBER;
96246 l_recog_line_2                NUMBER;
96247 
96248 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
96249 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
96250 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
96251 
96252 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96253 
96254 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
96255 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
96256 
96257 ---------------------------------------------------------------------------------------------------------------
96258 
96259 
96260 --
96261 -- bulk performance
96262 --
96263 l_balance_type_code           VARCHAR2(1);
96264 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
96265 l_log_module                  VARCHAR2(240);
96266 
96267 --
96268 -- Upgrade strategy
96269 --
96270 l_actual_upg_option           VARCHAR2(1);
96271 l_enc_upg_option           VARCHAR2(1);
96272 
96273 --
96274 BEGIN
96275 --
96276 IF g_log_enabled THEN
96277       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_193';
96278 END IF;
96279 --
96280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96281 
96282       trace
96283          (p_msg      => 'BEGIN of AcctLineType_193'
96284          ,p_level    => C_LEVEL_PROCEDURE
96285          ,p_module   => l_log_module);
96286 
96287 END IF;
96288 --
96289 l_component_type             := 'AMB_JLT';
96290 l_component_code             := 'INTERORG_RECEIVABLES';
96291 l_component_type_code        := 'S';
96292 l_component_appl_id          :=  707;
96293 l_amb_context_code           := 'DEFAULT';
96294 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
96295 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
96296 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
96297 l_line_definition_owner_code := 'S';
96298 l_line_definition_code       := 'PI_RCPT_SENDER_RCPT_TP';
96299 --
96300 l_balance_type_code          := 'A';
96301 l_segment                     := NULL;
96302 l_ccid                        := NULL;
96303 l_adr_transaction_coa_id      := NULL;
96304 l_adr_accounting_coa_id       := NULL;
96305 l_adr_flexfield_segment_code  := NULL;
96306 l_adr_flex_value_set_id       := NULL;
96307 l_adr_value_type_code         := NULL;
96308 l_adr_value_combination_id    := NULL;
96309 l_adr_value_segment_code      := NULL;
96310 
96311 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96312 l_bflow_class_code           := '';    -- 4219869 Business Flow
96313 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96314 l_budgetary_control_flag     := 'N';
96315 
96316 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96317 l_bflow_applied_to_amt       := NULL; -- 5132302
96318 l_entered_amt_idx            := NULL;          -- 4262811
96319 l_accted_amt_idx             := NULL;          -- 4262811
96320 l_acc_rev_flag               := NULL;          -- 4262811
96321 l_accrual_line_num           := NULL;          -- 4262811
96322 l_tmp_amt                    := NULL;          -- 4262811
96323 --
96324  
96325 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96326     l_balance_type_code <> 'B' THEN
96327 IF NVL(p_source_97,9E125) =  10
96328  THEN 
96329 
96330    --
96331    XLA_AE_LINES_PKG.SetNewLine;
96332 
96333    p_balance_type_code          := l_balance_type_code;
96334    -- set the flag so later we will know whether the gain loss line needs to be created
96335    
96336    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96337      p_actual_flag :='A';
96338    END IF;
96339 
96340    --
96341    -- bulk performance
96342    --
96343    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96344                                       p_header_num   => 0); -- 4262811
96345    --
96346    -- set accounting line options
96347    --
96348    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96349            p_natural_side_code          => 'D'
96350          , p_gain_or_loss_flag          => 'N'
96351          , p_gl_transfer_mode_code      => 'S'
96352          , p_acct_entry_type_code       => 'A'
96353          , p_switch_side_flag           => 'Y'
96354          , p_merge_duplicate_code       => 'N'
96355          );
96356    --
96357    l_acc_rev_natural_side_code := 'C';  -- 4262811
96358    -- 
96359    --
96360    -- set accounting line type info
96361    --
96362    xla_ae_lines_pkg.SetAcctLineType
96363       (p_component_type             => l_component_type
96364       ,p_event_type_code            => l_event_type_code
96365       ,p_line_definition_owner_code => l_line_definition_owner_code
96366       ,p_line_definition_code       => l_line_definition_code
96367       ,p_accounting_line_code       => l_component_code
96368       ,p_accounting_line_type_code  => l_component_type_code
96369       ,p_accounting_line_appl_id    => l_component_appl_id
96370       ,p_amb_context_code           => l_amb_context_code
96371       ,p_entity_code                => l_entity_code
96372       ,p_event_class_code           => l_event_class_code);
96373    --
96374    -- set accounting class
96375    --
96376    xla_ae_lines_pkg.SetAcctClass(
96377            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
96378          , p_ae_header_id           => l_ae_header_id
96379          );
96380 
96381    --
96382    -- set rounding class
96383    --
96384    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96385                       'INTERORG_RECEIVABLES';
96386 
96387    --
96388    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96389    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96390    --
96391    -- bulk performance
96392    --
96393    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96394 
96395    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96396       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96397 
96398    -- 4955764
96399    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96400       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96401 
96402    -- 4458381 Public Sector Enh
96403    
96404    --
96405    -- set accounting attributes for the line type
96406    --
96407    l_entered_amt_idx := 3;
96408    l_accted_amt_idx  := 8;
96409    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96410    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96411    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
96412    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96413    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
96414    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96415    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
96416    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96417    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
96418    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96419    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
96420    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96421    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
96422    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96423    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
96424    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96425    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
96426 
96427    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96428    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96429 
96430    ---------------------------------------------------------------------------------------------------------------
96431    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96432    ---------------------------------------------------------------------------------------------------------------
96433    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96434 
96435    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96436    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96437 
96438    IF xla_accounting_cache_pkg.GetValueChar
96439          (p_source_code         => 'LEDGER_CATEGORY_CODE'
96440          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96441    AND l_bflow_method_code = 'PRIOR_ENTRY'
96442 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96443    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96444          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96445        )
96446    THEN
96447          xla_ae_lines_pkg.BflowUpgEntry
96448            (p_business_method_code    => l_bflow_method_code
96449            ,p_business_class_code     => l_bflow_class_code
96450            ,p_balance_type            => l_balance_type_code);
96451    ELSE
96452       NULL;
96453 -- No business flow processing for business flow method of NONE.
96454    END IF;
96455 
96456    --
96457    -- call analytical criteria
96458    --
96459    
96460    --
96461    -- call description
96462    --
96463    
96464 xla_ae_lines_pkg.SetLineDescription(
96465    p_ae_header_id => l_ae_header_id
96466   ,p_description  => Description_1 (
96467      p_application_id         => p_application_id
96468    , p_ae_header_id           => l_ae_header_id 
96469 , p_source_1 => p_source_1
96470 , p_source_2 => p_source_2
96471 , p_source_3 => p_source_3
96472 , p_source_4 => p_source_4
96473 , p_source_5 => p_source_5
96474    )
96475 );
96476 
96477 
96478    --
96479    -- call ADRs
96480    -- Bug 4922099
96481    --
96482    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96483         (NVL(l_actual_upg_option, 'N') = 'O') OR
96484         (NVL(l_enc_upg_option, 'N') = 'O')
96485       )
96486    THEN
96487    NULL;
96488    --
96489    --
96490    
96491   l_ccid := AcctDerRule_33(
96492            p_application_id           => p_application_id
96493          , p_ae_header_id             => l_ae_header_id 
96494 , p_source_59 => p_source_59
96495          , x_transaction_coa_id       => l_adr_transaction_coa_id
96496          , x_accounting_coa_id        => l_adr_accounting_coa_id
96497          , x_value_type_code          => l_adr_value_type_code
96498          , p_side                     => 'NA'
96499    );
96500 
96501    xla_ae_lines_pkg.set_ccid(
96502     p_code_combination_id          => l_ccid
96503   , p_value_type_code              => l_adr_value_type_code
96504   , p_transaction_coa_id           => l_adr_transaction_coa_id
96505   , p_accounting_coa_id            => l_adr_accounting_coa_id
96506   , p_adr_code                     => 'PI_RECEIVABLES'
96507   , p_adr_type_code                => 'S'
96508   , p_component_type               => l_component_type
96509   , p_component_code               => l_component_code
96510   , p_component_type_code          => l_component_type_code
96511   , p_component_appl_id            => l_component_appl_id
96512   , p_amb_context_code             => l_amb_context_code
96513   , p_side                         => 'NA'
96514   );
96515 
96516 
96517    --
96518    --
96519    END IF;
96520    --
96521    -- Bug 4922099
96522    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96523           (NVL(l_enc_upg_option, 'N') = 'O')
96524         ) AND
96525         (l_bflow_method_code = 'PRIOR_ENTRY')
96526       )
96527    THEN
96528       IF
96529       --
96530       1 = 2
96531       --
96532       THEN
96533       xla_accounting_err_pkg.build_message
96534                                     (p_appli_s_name            => 'XLA'
96535                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96536                                     ,p_token_1                 => 'LINE_NUMBER'
96537                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
96538                                     ,p_token_2                 => 'LINE_TYPE_NAME'
96539                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
96540                                                                              l_component_type
96541                                                                             ,l_component_code
96542                                                                             ,l_component_type_code
96543                                                                             ,l_component_appl_id
96544                                                                             ,l_amb_context_code
96545                                                                             ,l_entity_code
96546                                                                             ,l_event_class_code
96547                                                                            )
96548                                     ,p_token_3                 => 'OWNER'
96549                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
96550                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
96551                                                                           ,p_lookup_code    => l_component_type_code
96552                                                                          )
96553                                     ,p_token_4                 => 'PRODUCT_NAME'
96554                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96555                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96556                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96557                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96558                                     ,p_ae_header_id            =>  NULL
96559                                        );
96560 
96561         IF (C_LEVEL_ERROR>= g_log_level) THEN
96562                  trace
96563                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96564                       ,p_level    => C_LEVEL_ERROR
96565                       ,p_module   => l_log_module);
96566         END IF;
96567       END IF;
96568    END IF;
96569    --
96570    --
96571    ------------------------------------------------------------------------------------------------
96572    -- 4219869 Business Flow
96573    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96574    -- Prior Entry.  Currently, the following code is always generated.
96575    ------------------------------------------------------------------------------------------------
96576    XLA_AE_LINES_PKG.ValidateCurrentLine;
96577 
96578    ------------------------------------------------------------------------------------
96579    -- 4219869 Business Flow
96580    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96581    ------------------------------------------------------------------------------------
96582    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96583 
96584    ----------------------------------------------------------------------------------
96585    -- 4219869 Business Flow
96586    -- Update journal entry status -- Need to generate this within IF <condition>
96587    ----------------------------------------------------------------------------------
96588    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96589          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96590          ,p_balance_type_code => l_balance_type_code
96591          );
96592 
96593    -------------------------------------------------------------------------------------------
96594    -- 4262811 - Generate the Accrual Reversal lines
96595    -------------------------------------------------------------------------------------------
96596    BEGIN
96597       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96598                               (g_array_event(p_event_id).array_value_num('header_index'));
96599       IF l_acc_rev_flag IS NULL THEN
96600          l_acc_rev_flag := 'N';
96601       END IF;
96602    EXCEPTION
96603       WHEN OTHERS THEN
96604          l_acc_rev_flag := 'N';
96605    END;
96606    --
96607    IF (l_acc_rev_flag = 'Y') THEN
96608 
96609        -- 4645092  ------------------------------------------------------------------------------
96610        -- To allow MPA report to determine if it should generate report process
96611        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96612        ------------------------------------------------------------------------------------------
96613 
96614        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96615        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96616    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
96617    -- call ADRs
96618    -- Bug 4922099
96619    --
96620    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96621         (NVL(l_actual_upg_option, 'N') = 'O') OR
96622         (NVL(l_enc_upg_option, 'N') = 'O')
96623       )
96624    THEN
96625    NULL;
96626    --
96627    --
96628    
96629   l_ccid := AcctDerRule_33(
96630            p_application_id           => p_application_id
96631          , p_ae_header_id             => l_ae_header_id 
96632 , p_source_59 => p_source_59
96633          , x_transaction_coa_id       => l_adr_transaction_coa_id
96634          , x_accounting_coa_id        => l_adr_accounting_coa_id
96635          , x_value_type_code          => l_adr_value_type_code
96636          , p_side                     => 'NA'
96637    );
96638 
96639    xla_ae_lines_pkg.set_ccid(
96640     p_code_combination_id          => l_ccid
96641   , p_value_type_code              => l_adr_value_type_code
96642   , p_transaction_coa_id           => l_adr_transaction_coa_id
96643   , p_accounting_coa_id            => l_adr_accounting_coa_id
96644   , p_adr_code                     => 'PI_RECEIVABLES'
96645   , p_adr_type_code                => 'S'
96646   , p_component_type               => l_component_type
96647   , p_component_code               => l_component_code
96648   , p_component_type_code          => l_component_type_code
96649   , p_component_appl_id            => l_component_appl_id
96650   , p_amb_context_code             => l_amb_context_code
96651   , p_side                         => 'NA'
96652   );
96653 
96654 
96655    --
96656    --
96657    END IF;
96658 
96659        --
96660        -- Update the line information that should be overwritten
96661        --
96662        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96663                                          p_header_num   => 1);
96664        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
96665 
96666        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96667 
96668        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
96669           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96670        END IF;
96671 
96672       --
96673       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96674       --
96675       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96676           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
96677       ELSE
96678           ---------------------------------------------------------------------------------------------------
96679           -- 4262811a Switch Sign
96680           ---------------------------------------------------------------------------------------------------
96681           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
96682           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96683                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96684           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96685                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96686           -- 5132302
96687           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96688                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96689 
96690       END IF;
96691 
96692       -- 4955764
96693       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96694       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96695 
96696 
96697       XLA_AE_LINES_PKG.ValidateCurrentLine;
96698       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96699 
96700       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96701                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96702                ,p_balance_type_code => l_balance_type_code);
96703 
96704    END IF;
96705 
96706    -----------------------------------------------------------------------------------------
96707    -- 4262811 Multiperiod Accounting
96708    -----------------------------------------------------------------------------------------
96709      -- No MPA option is assigned.
96710 
96711 
96712 END IF;
96713 END IF;
96714 --
96715 
96716 --
96717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96718    trace
96719       (p_msg      => 'END of AcctLineType_193'
96720       ,p_level    => C_LEVEL_PROCEDURE
96721       ,p_module   => l_log_module);
96722 END IF;
96723 --
96724 EXCEPTION
96725   WHEN xla_exceptions_pkg.application_exception THEN
96726       RAISE;
96727   WHEN OTHERS THEN
96728        xla_exceptions_pkg.raise_message
96729            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_193');
96730 END AcctLineType_193;
96731 --
96732 
96733 ---------------------------------------
96734 --
96735 -- PRIVATE FUNCTION
96736 --         AcctLineType_194
96737 --
96738 ---------------------------------------
96739 PROCEDURE AcctLineType_194 (
96740   p_application_id        IN NUMBER
96741  ,p_event_id              IN NUMBER
96742  ,p_calculate_acctd_flag  IN VARCHAR2
96743  ,p_calculate_g_l_flag    IN VARCHAR2
96744  ,p_actual_flag           IN OUT VARCHAR2
96745  ,p_balance_type_code     OUT VARCHAR2
96746  ,p_gain_or_loss_ref      OUT VARCHAR2
96747  
96748 --TRANSACTION_ID
96749  , p_source_1            IN NUMBER
96750 --Item Concatenated Segments
96751  , p_source_2            IN VARCHAR2
96752 --Transaction Quantity
96753  , p_source_3            IN NUMBER
96754 --Transaction Unit of Measure Code
96755  , p_source_4            IN VARCHAR2
96756 --Inventory Transaction Type Description
96757  , p_source_5            IN VARCHAR2
96758 --Interorg Receivables Account
96759  , p_source_59            IN NUMBER
96760 --DISTRIBUTION_IDENTIFIER
96761  , p_source_84            IN NUMBER
96762 --Distribution Type
96763  , p_source_85            IN VARCHAR2
96764  , p_source_85_meaning    IN VARCHAR2
96765 --Entered Currency Code
96766  , p_source_88            IN VARCHAR2
96767 --Entered Amount
96768  , p_source_91            IN NUMBER
96769 --Currency Conversion Date
96770  , p_source_92            IN DATE
96771 --Currency Conversion Rate
96772  , p_source_93            IN NUMBER
96773 --Currency Conversion Type
96774  , p_source_94            IN VARCHAR2
96775 --Accounted Amount
96776  , p_source_95            IN NUMBER
96777 --Accounting Line Type
96778  , p_source_97            IN NUMBER
96779 )
96780 IS
96781 
96782 l_component_type              VARCHAR2(80);
96783 l_component_code              VARCHAR2(30);
96784 l_component_type_code         VARCHAR2(1);
96785 l_component_appl_id           INTEGER;
96786 l_amb_context_code            VARCHAR2(30);
96787 l_entity_code                 VARCHAR2(30);
96788 l_event_class_code            VARCHAR2(30);
96789 l_ae_header_id                NUMBER;
96790 l_event_type_code             VARCHAR2(30);
96791 l_line_definition_code        VARCHAR2(30);
96792 l_line_definition_owner_code  VARCHAR2(1);
96793 --
96794 -- adr variables
96795 l_segment                     VARCHAR2(30);
96796 l_ccid                        NUMBER;
96797 l_adr_transaction_coa_id      NUMBER;
96798 l_adr_accounting_coa_id       NUMBER;
96799 l_adr_flexfield_segment_code  VARCHAR2(30);
96800 l_adr_flex_value_set_id       NUMBER;
96801 l_adr_value_type_code         VARCHAR2(30);
96802 l_adr_value_combination_id    NUMBER;
96803 l_adr_value_segment_code      VARCHAR2(30);
96804 
96805 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
96806 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
96807 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
96808 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
96809 
96810 -- 4262811 Variables ------------------------------------------------------------------------------------------
96811 l_entered_amt_idx             NUMBER;
96812 l_accted_amt_idx              NUMBER;
96813 l_acc_rev_flag                VARCHAR2(1);
96814 l_accrual_line_num            NUMBER;
96815 l_tmp_amt                     NUMBER;
96816 l_acc_rev_natural_side_code   VARCHAR2(1);
96817 
96818 l_num_entries                 NUMBER;
96819 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
96820 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
96821 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
96822 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
96823 l_recog_line_1                NUMBER;
96824 l_recog_line_2                NUMBER;
96825 
96826 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
96827 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
96828 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
96829 
96830 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96831 
96832 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
96833 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
96834 
96835 ---------------------------------------------------------------------------------------------------------------
96836 
96837 
96838 --
96839 -- bulk performance
96840 --
96841 l_balance_type_code           VARCHAR2(1);
96842 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
96843 l_log_module                  VARCHAR2(240);
96844 
96845 --
96846 -- Upgrade strategy
96847 --
96848 l_actual_upg_option           VARCHAR2(1);
96849 l_enc_upg_option           VARCHAR2(1);
96850 
96851 --
96852 BEGIN
96853 --
96854 IF g_log_enabled THEN
96855       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_194';
96856 END IF;
96857 --
96858 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96859 
96860       trace
96861          (p_msg      => 'BEGIN of AcctLineType_194'
96862          ,p_level    => C_LEVEL_PROCEDURE
96863          ,p_module   => l_log_module);
96864 
96865 END IF;
96866 --
96867 l_component_type             := 'AMB_JLT';
96868 l_component_code             := 'INTERORG_RECEIVABLES';
96869 l_component_type_code        := 'S';
96870 l_component_appl_id          :=  707;
96871 l_amb_context_code           := 'DEFAULT';
96872 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
96873 l_event_class_code           := 'USER_DEFINE';
96874 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
96875 l_line_definition_owner_code := 'S';
96876 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
96877 --
96878 l_balance_type_code          := 'A';
96879 l_segment                     := NULL;
96880 l_ccid                        := NULL;
96881 l_adr_transaction_coa_id      := NULL;
96882 l_adr_accounting_coa_id       := NULL;
96883 l_adr_flexfield_segment_code  := NULL;
96884 l_adr_flex_value_set_id       := NULL;
96885 l_adr_value_type_code         := NULL;
96886 l_adr_value_combination_id    := NULL;
96887 l_adr_value_segment_code      := NULL;
96888 
96889 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
96890 l_bflow_class_code           := '';    -- 4219869 Business Flow
96891 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
96892 l_budgetary_control_flag     := 'N';
96893 
96894 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
96895 l_bflow_applied_to_amt       := NULL; -- 5132302
96896 l_entered_amt_idx            := NULL;          -- 4262811
96897 l_accted_amt_idx             := NULL;          -- 4262811
96898 l_acc_rev_flag               := NULL;          -- 4262811
96899 l_accrual_line_num           := NULL;          -- 4262811
96900 l_tmp_amt                    := NULL;          -- 4262811
96901 --
96902  
96903 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96904     l_balance_type_code <> 'B' THEN
96905 IF NVL(p_source_97,9E125) =  10
96906  THEN 
96907 
96908    --
96909    XLA_AE_LINES_PKG.SetNewLine;
96910 
96911    p_balance_type_code          := l_balance_type_code;
96912    -- set the flag so later we will know whether the gain loss line needs to be created
96913    
96914    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96915      p_actual_flag :='A';
96916    END IF;
96917 
96918    --
96919    -- bulk performance
96920    --
96921    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96922                                       p_header_num   => 0); -- 4262811
96923    --
96924    -- set accounting line options
96925    --
96926    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96927            p_natural_side_code          => 'D'
96928          , p_gain_or_loss_flag          => 'N'
96929          , p_gl_transfer_mode_code      => 'S'
96930          , p_acct_entry_type_code       => 'A'
96931          , p_switch_side_flag           => 'Y'
96932          , p_merge_duplicate_code       => 'N'
96933          );
96934    --
96935    l_acc_rev_natural_side_code := 'C';  -- 4262811
96936    -- 
96937    --
96938    -- set accounting line type info
96939    --
96940    xla_ae_lines_pkg.SetAcctLineType
96941       (p_component_type             => l_component_type
96942       ,p_event_type_code            => l_event_type_code
96943       ,p_line_definition_owner_code => l_line_definition_owner_code
96944       ,p_line_definition_code       => l_line_definition_code
96945       ,p_accounting_line_code       => l_component_code
96946       ,p_accounting_line_type_code  => l_component_type_code
96947       ,p_accounting_line_appl_id    => l_component_appl_id
96948       ,p_amb_context_code           => l_amb_context_code
96949       ,p_entity_code                => l_entity_code
96950       ,p_event_class_code           => l_event_class_code);
96951    --
96952    -- set accounting class
96953    --
96954    xla_ae_lines_pkg.SetAcctClass(
96955            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
96956          , p_ae_header_id           => l_ae_header_id
96957          );
96958 
96959    --
96960    -- set rounding class
96961    --
96962    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96963                       'INTERORG_RECEIVABLES';
96964 
96965    --
96966    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96967    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96968    --
96969    -- bulk performance
96970    --
96971    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96972 
96973    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96974       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96975 
96976    -- 4955764
96977    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96978       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96979 
96980    -- 4458381 Public Sector Enh
96981    
96982    --
96983    -- set accounting attributes for the line type
96984    --
96985    l_entered_amt_idx := 3;
96986    l_accted_amt_idx  := 8;
96987    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
96988    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96989    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
96990    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96991    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
96992    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96993    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
96994    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96995    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
96996    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96997    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
96998    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96999    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
97000    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97001    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
97002    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97003    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
97004 
97005    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97006    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97007 
97008    ---------------------------------------------------------------------------------------------------------------
97009    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97010    ---------------------------------------------------------------------------------------------------------------
97011    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97012 
97013    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97014    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97015 
97016    IF xla_accounting_cache_pkg.GetValueChar
97017          (p_source_code         => 'LEDGER_CATEGORY_CODE'
97018          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97019    AND l_bflow_method_code = 'PRIOR_ENTRY'
97020 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97021    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97022          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97023        )
97024    THEN
97025          xla_ae_lines_pkg.BflowUpgEntry
97026            (p_business_method_code    => l_bflow_method_code
97027            ,p_business_class_code     => l_bflow_class_code
97028            ,p_balance_type            => l_balance_type_code);
97029    ELSE
97030       NULL;
97031 -- No business flow processing for business flow method of NONE.
97032    END IF;
97033 
97034    --
97035    -- call analytical criteria
97036    --
97037    
97038    --
97039    -- call description
97040    --
97041    
97042 xla_ae_lines_pkg.SetLineDescription(
97043    p_ae_header_id => l_ae_header_id
97044   ,p_description  => Description_1 (
97045      p_application_id         => p_application_id
97046    , p_ae_header_id           => l_ae_header_id 
97047 , p_source_1 => p_source_1
97048 , p_source_2 => p_source_2
97049 , p_source_3 => p_source_3
97050 , p_source_4 => p_source_4
97051 , p_source_5 => p_source_5
97052    )
97053 );
97054 
97055 
97056    --
97057    -- call ADRs
97058    -- Bug 4922099
97059    --
97060    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97061         (NVL(l_actual_upg_option, 'N') = 'O') OR
97062         (NVL(l_enc_upg_option, 'N') = 'O')
97063       )
97064    THEN
97065    NULL;
97066    --
97067    --
97068    
97069   l_ccid := AcctDerRule_33(
97070            p_application_id           => p_application_id
97071          , p_ae_header_id             => l_ae_header_id 
97072 , p_source_59 => p_source_59
97073          , x_transaction_coa_id       => l_adr_transaction_coa_id
97074          , x_accounting_coa_id        => l_adr_accounting_coa_id
97075          , x_value_type_code          => l_adr_value_type_code
97076          , p_side                     => 'NA'
97077    );
97078 
97079    xla_ae_lines_pkg.set_ccid(
97080     p_code_combination_id          => l_ccid
97081   , p_value_type_code              => l_adr_value_type_code
97082   , p_transaction_coa_id           => l_adr_transaction_coa_id
97083   , p_accounting_coa_id            => l_adr_accounting_coa_id
97084   , p_adr_code                     => 'PI_RECEIVABLES'
97085   , p_adr_type_code                => 'S'
97086   , p_component_type               => l_component_type
97087   , p_component_code               => l_component_code
97088   , p_component_type_code          => l_component_type_code
97089   , p_component_appl_id            => l_component_appl_id
97090   , p_amb_context_code             => l_amb_context_code
97091   , p_side                         => 'NA'
97092   );
97093 
97094 
97095    --
97096    --
97097    END IF;
97098    --
97099    -- Bug 4922099
97100    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97101           (NVL(l_enc_upg_option, 'N') = 'O')
97102         ) AND
97103         (l_bflow_method_code = 'PRIOR_ENTRY')
97104       )
97105    THEN
97106       IF
97107       --
97108       1 = 2
97109       --
97110       THEN
97111       xla_accounting_err_pkg.build_message
97112                                     (p_appli_s_name            => 'XLA'
97113                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97114                                     ,p_token_1                 => 'LINE_NUMBER'
97115                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97116                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97117                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97118                                                                              l_component_type
97119                                                                             ,l_component_code
97120                                                                             ,l_component_type_code
97121                                                                             ,l_component_appl_id
97122                                                                             ,l_amb_context_code
97123                                                                             ,l_entity_code
97124                                                                             ,l_event_class_code
97125                                                                            )
97126                                     ,p_token_3                 => 'OWNER'
97127                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97128                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97129                                                                           ,p_lookup_code    => l_component_type_code
97130                                                                          )
97131                                     ,p_token_4                 => 'PRODUCT_NAME'
97132                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97133                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97134                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97135                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97136                                     ,p_ae_header_id            =>  NULL
97137                                        );
97138 
97139         IF (C_LEVEL_ERROR>= g_log_level) THEN
97140                  trace
97141                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97142                       ,p_level    => C_LEVEL_ERROR
97143                       ,p_module   => l_log_module);
97144         END IF;
97145       END IF;
97146    END IF;
97147    --
97148    --
97149    ------------------------------------------------------------------------------------------------
97150    -- 4219869 Business Flow
97151    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97152    -- Prior Entry.  Currently, the following code is always generated.
97153    ------------------------------------------------------------------------------------------------
97154    XLA_AE_LINES_PKG.ValidateCurrentLine;
97155 
97156    ------------------------------------------------------------------------------------
97157    -- 4219869 Business Flow
97158    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97159    ------------------------------------------------------------------------------------
97160    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97161 
97162    ----------------------------------------------------------------------------------
97163    -- 4219869 Business Flow
97164    -- Update journal entry status -- Need to generate this within IF <condition>
97165    ----------------------------------------------------------------------------------
97166    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97167          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97168          ,p_balance_type_code => l_balance_type_code
97169          );
97170 
97171    -------------------------------------------------------------------------------------------
97172    -- 4262811 - Generate the Accrual Reversal lines
97173    -------------------------------------------------------------------------------------------
97174    BEGIN
97175       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97176                               (g_array_event(p_event_id).array_value_num('header_index'));
97177       IF l_acc_rev_flag IS NULL THEN
97178          l_acc_rev_flag := 'N';
97179       END IF;
97180    EXCEPTION
97181       WHEN OTHERS THEN
97182          l_acc_rev_flag := 'N';
97183    END;
97184    --
97185    IF (l_acc_rev_flag = 'Y') THEN
97186 
97187        -- 4645092  ------------------------------------------------------------------------------
97188        -- To allow MPA report to determine if it should generate report process
97189        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97190        ------------------------------------------------------------------------------------------
97191 
97192        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97193        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97194    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
97195    -- call ADRs
97196    -- Bug 4922099
97197    --
97198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97199         (NVL(l_actual_upg_option, 'N') = 'O') OR
97200         (NVL(l_enc_upg_option, 'N') = 'O')
97201       )
97202    THEN
97203    NULL;
97204    --
97205    --
97206    
97207   l_ccid := AcctDerRule_33(
97208            p_application_id           => p_application_id
97209          , p_ae_header_id             => l_ae_header_id 
97210 , p_source_59 => p_source_59
97211          , x_transaction_coa_id       => l_adr_transaction_coa_id
97212          , x_accounting_coa_id        => l_adr_accounting_coa_id
97213          , x_value_type_code          => l_adr_value_type_code
97214          , p_side                     => 'NA'
97215    );
97216 
97217    xla_ae_lines_pkg.set_ccid(
97218     p_code_combination_id          => l_ccid
97219   , p_value_type_code              => l_adr_value_type_code
97220   , p_transaction_coa_id           => l_adr_transaction_coa_id
97221   , p_accounting_coa_id            => l_adr_accounting_coa_id
97222   , p_adr_code                     => 'PI_RECEIVABLES'
97223   , p_adr_type_code                => 'S'
97224   , p_component_type               => l_component_type
97225   , p_component_code               => l_component_code
97226   , p_component_type_code          => l_component_type_code
97227   , p_component_appl_id            => l_component_appl_id
97228   , p_amb_context_code             => l_amb_context_code
97229   , p_side                         => 'NA'
97230   );
97231 
97232 
97233    --
97234    --
97235    END IF;
97236 
97237        --
97238        -- Update the line information that should be overwritten
97239        --
97240        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97241                                          p_header_num   => 1);
97242        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
97243 
97244        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97245 
97246        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
97247           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97248        END IF;
97249 
97250       --
97251       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97252       --
97253       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97254           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
97255       ELSE
97256           ---------------------------------------------------------------------------------------------------
97257           -- 4262811a Switch Sign
97258           ---------------------------------------------------------------------------------------------------
97259           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
97260           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97261                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97262           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97263                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97264           -- 5132302
97265           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97266                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97267 
97268       END IF;
97269 
97270       -- 4955764
97271       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97272       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97273 
97274 
97275       XLA_AE_LINES_PKG.ValidateCurrentLine;
97276       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97277 
97278       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97279                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97280                ,p_balance_type_code => l_balance_type_code);
97281 
97282    END IF;
97283 
97284    -----------------------------------------------------------------------------------------
97285    -- 4262811 Multiperiod Accounting
97286    -----------------------------------------------------------------------------------------
97287      -- No MPA option is assigned.
97288 
97289 
97290 END IF;
97291 END IF;
97292 --
97293 
97294 --
97295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97296    trace
97297       (p_msg      => 'END of AcctLineType_194'
97298       ,p_level    => C_LEVEL_PROCEDURE
97299       ,p_module   => l_log_module);
97300 END IF;
97301 --
97302 EXCEPTION
97303   WHEN xla_exceptions_pkg.application_exception THEN
97304       RAISE;
97305   WHEN OTHERS THEN
97306        xla_exceptions_pkg.raise_message
97307            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_194');
97308 END AcctLineType_194;
97309 --
97310 
97311 ---------------------------------------
97312 --
97313 -- PRIVATE FUNCTION
97314 --         AcctLineType_195
97315 --
97316 ---------------------------------------
97317 PROCEDURE AcctLineType_195 (
97318   p_application_id        IN NUMBER
97319  ,p_event_id              IN NUMBER
97320  ,p_calculate_acctd_flag  IN VARCHAR2
97321  ,p_calculate_g_l_flag    IN VARCHAR2
97322  ,p_actual_flag           IN OUT VARCHAR2
97323  ,p_balance_type_code     OUT VARCHAR2
97324  ,p_gain_or_loss_ref      OUT VARCHAR2
97325  
97326 --Interorg Receivables Account
97327  , p_source_59            IN NUMBER
97328 --DISTRIBUTION_IDENTIFIER
97329  , p_source_84            IN NUMBER
97330 --Distribution Type
97331  , p_source_85            IN VARCHAR2
97332  , p_source_85_meaning    IN VARCHAR2
97333 --Entered Currency Code
97334  , p_source_88            IN VARCHAR2
97335 --Entered Amount
97336  , p_source_91            IN NUMBER
97337 --Currency Conversion Date
97338  , p_source_92            IN DATE
97339 --Currency Conversion Rate
97340  , p_source_93            IN NUMBER
97341 --Currency Conversion Type
97342  , p_source_94            IN VARCHAR2
97343 --Accounted Amount
97344  , p_source_95            IN NUMBER
97345 --Accounting Line Type
97346  , p_source_97            IN NUMBER
97347 )
97348 IS
97349 
97350 l_component_type              VARCHAR2(80);
97351 l_component_code              VARCHAR2(30);
97352 l_component_type_code         VARCHAR2(1);
97353 l_component_appl_id           INTEGER;
97354 l_amb_context_code            VARCHAR2(30);
97355 l_entity_code                 VARCHAR2(30);
97356 l_event_class_code            VARCHAR2(30);
97357 l_ae_header_id                NUMBER;
97358 l_event_type_code             VARCHAR2(30);
97359 l_line_definition_code        VARCHAR2(30);
97360 l_line_definition_owner_code  VARCHAR2(1);
97361 --
97362 -- adr variables
97363 l_segment                     VARCHAR2(30);
97364 l_ccid                        NUMBER;
97365 l_adr_transaction_coa_id      NUMBER;
97366 l_adr_accounting_coa_id       NUMBER;
97367 l_adr_flexfield_segment_code  VARCHAR2(30);
97368 l_adr_flex_value_set_id       NUMBER;
97369 l_adr_value_type_code         VARCHAR2(30);
97370 l_adr_value_combination_id    NUMBER;
97371 l_adr_value_segment_code      VARCHAR2(30);
97372 
97373 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97374 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97375 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97376 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97377 
97378 -- 4262811 Variables ------------------------------------------------------------------------------------------
97379 l_entered_amt_idx             NUMBER;
97380 l_accted_amt_idx              NUMBER;
97381 l_acc_rev_flag                VARCHAR2(1);
97382 l_accrual_line_num            NUMBER;
97383 l_tmp_amt                     NUMBER;
97384 l_acc_rev_natural_side_code   VARCHAR2(1);
97385 
97386 l_num_entries                 NUMBER;
97387 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97388 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97389 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97390 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97391 l_recog_line_1                NUMBER;
97392 l_recog_line_2                NUMBER;
97393 
97394 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97395 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97396 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97397 
97398 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97399 
97400 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97401 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97402 
97403 ---------------------------------------------------------------------------------------------------------------
97404 
97405 
97406 --
97407 -- bulk performance
97408 --
97409 l_balance_type_code           VARCHAR2(1);
97410 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97411 l_log_module                  VARCHAR2(240);
97412 
97413 --
97414 -- Upgrade strategy
97415 --
97416 l_actual_upg_option           VARCHAR2(1);
97417 l_enc_upg_option           VARCHAR2(1);
97418 
97419 --
97420 BEGIN
97421 --
97422 IF g_log_enabled THEN
97423       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_195';
97424 END IF;
97425 --
97426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97427 
97428       trace
97429          (p_msg      => 'BEGIN of AcctLineType_195'
97430          ,p_level    => C_LEVEL_PROCEDURE
97431          ,p_module   => l_log_module);
97432 
97433 END IF;
97434 --
97435 l_component_type             := 'AMB_JLT';
97436 l_component_code             := 'INTERORG_RECEIVABLES';
97437 l_component_type_code        := 'S';
97438 l_component_appl_id          :=  707;
97439 l_amb_context_code           := 'DEFAULT';
97440 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
97441 l_event_class_code           := 'USER_DEFINE';
97442 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
97443 l_line_definition_owner_code := 'S';
97444 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
97445 --
97446 l_balance_type_code          := 'A';
97447 l_segment                     := NULL;
97448 l_ccid                        := NULL;
97449 l_adr_transaction_coa_id      := NULL;
97450 l_adr_accounting_coa_id       := NULL;
97451 l_adr_flexfield_segment_code  := NULL;
97452 l_adr_flex_value_set_id       := NULL;
97453 l_adr_value_type_code         := NULL;
97454 l_adr_value_combination_id    := NULL;
97455 l_adr_value_segment_code      := NULL;
97456 
97457 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
97458 l_bflow_class_code           := '';    -- 4219869 Business Flow
97459 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
97460 l_budgetary_control_flag     := 'N';
97461 
97462 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
97463 l_bflow_applied_to_amt       := NULL; -- 5132302
97464 l_entered_amt_idx            := NULL;          -- 4262811
97465 l_accted_amt_idx             := NULL;          -- 4262811
97466 l_acc_rev_flag               := NULL;          -- 4262811
97467 l_accrual_line_num           := NULL;          -- 4262811
97468 l_tmp_amt                    := NULL;          -- 4262811
97469 --
97470  
97471 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97472     l_balance_type_code <> 'B' THEN
97473 IF NVL(p_source_97,9E125) =  10
97474  THEN 
97475 
97476    --
97477    XLA_AE_LINES_PKG.SetNewLine;
97478 
97479    p_balance_type_code          := l_balance_type_code;
97480    -- set the flag so later we will know whether the gain loss line needs to be created
97481    
97482    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97483      p_actual_flag :='A';
97484    END IF;
97485 
97486    --
97487    -- bulk performance
97488    --
97489    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97490                                       p_header_num   => 0); -- 4262811
97491    --
97492    -- set accounting line options
97493    --
97494    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97495            p_natural_side_code          => 'D'
97496          , p_gain_or_loss_flag          => 'N'
97497          , p_gl_transfer_mode_code      => 'S'
97498          , p_acct_entry_type_code       => 'A'
97499          , p_switch_side_flag           => 'Y'
97500          , p_merge_duplicate_code       => 'N'
97501          );
97502    --
97503    l_acc_rev_natural_side_code := 'C';  -- 4262811
97504    -- 
97505    --
97506    -- set accounting line type info
97507    --
97508    xla_ae_lines_pkg.SetAcctLineType
97509       (p_component_type             => l_component_type
97510       ,p_event_type_code            => l_event_type_code
97511       ,p_line_definition_owner_code => l_line_definition_owner_code
97512       ,p_line_definition_code       => l_line_definition_code
97513       ,p_accounting_line_code       => l_component_code
97514       ,p_accounting_line_type_code  => l_component_type_code
97515       ,p_accounting_line_appl_id    => l_component_appl_id
97516       ,p_amb_context_code           => l_amb_context_code
97517       ,p_entity_code                => l_entity_code
97518       ,p_event_class_code           => l_event_class_code);
97519    --
97520    -- set accounting class
97521    --
97522    xla_ae_lines_pkg.SetAcctClass(
97523            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
97524          , p_ae_header_id           => l_ae_header_id
97525          );
97526 
97527    --
97528    -- set rounding class
97529    --
97530    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97531                       'INTERORG_RECEIVABLES';
97532 
97533    --
97534    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97535    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97536    --
97537    -- bulk performance
97538    --
97539    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97540 
97541    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97542       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97543 
97544    -- 4955764
97545    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97546       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97547 
97548    -- 4458381 Public Sector Enh
97549    
97550    --
97551    -- set accounting attributes for the line type
97552    --
97553    l_entered_amt_idx := 3;
97554    l_accted_amt_idx  := 8;
97555    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
97556    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97557    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
97558    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97559    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
97560    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97561    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
97562    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97563    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
97564    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97565    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
97566    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97567    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
97568    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97569    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
97570    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97571    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
97572 
97573    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97574    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97575 
97576    ---------------------------------------------------------------------------------------------------------------
97577    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97578    ---------------------------------------------------------------------------------------------------------------
97579    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97580 
97581    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97582    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97583 
97584    IF xla_accounting_cache_pkg.GetValueChar
97585          (p_source_code         => 'LEDGER_CATEGORY_CODE'
97586          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97587    AND l_bflow_method_code = 'PRIOR_ENTRY'
97588 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97589    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97590          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97591        )
97592    THEN
97593          xla_ae_lines_pkg.BflowUpgEntry
97594            (p_business_method_code    => l_bflow_method_code
97595            ,p_business_class_code     => l_bflow_class_code
97596            ,p_balance_type            => l_balance_type_code);
97597    ELSE
97598       NULL;
97599 -- No business flow processing for business flow method of NONE.
97600    END IF;
97601 
97602    --
97603    -- call analytical criteria
97604    --
97605    
97606    --
97607    -- call description
97608    --
97609    -- No description or it is inherited.
97610    --
97611    -- call ADRs
97612    -- Bug 4922099
97613    --
97614    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97615         (NVL(l_actual_upg_option, 'N') = 'O') OR
97616         (NVL(l_enc_upg_option, 'N') = 'O')
97617       )
97618    THEN
97619    NULL;
97620    --
97621    --
97622    
97623   l_ccid := AcctDerRule_33(
97624            p_application_id           => p_application_id
97625          , p_ae_header_id             => l_ae_header_id 
97626 , p_source_59 => p_source_59
97627          , x_transaction_coa_id       => l_adr_transaction_coa_id
97628          , x_accounting_coa_id        => l_adr_accounting_coa_id
97629          , x_value_type_code          => l_adr_value_type_code
97630          , p_side                     => 'NA'
97631    );
97632 
97633    xla_ae_lines_pkg.set_ccid(
97634     p_code_combination_id          => l_ccid
97635   , p_value_type_code              => l_adr_value_type_code
97636   , p_transaction_coa_id           => l_adr_transaction_coa_id
97637   , p_accounting_coa_id            => l_adr_accounting_coa_id
97638   , p_adr_code                     => 'PI_RECEIVABLES'
97639   , p_adr_type_code                => 'S'
97640   , p_component_type               => l_component_type
97641   , p_component_code               => l_component_code
97642   , p_component_type_code          => l_component_type_code
97643   , p_component_appl_id            => l_component_appl_id
97644   , p_amb_context_code             => l_amb_context_code
97645   , p_side                         => 'NA'
97646   );
97647 
97648 
97649    --
97650    --
97651    END IF;
97652    --
97653    -- Bug 4922099
97654    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97655           (NVL(l_enc_upg_option, 'N') = 'O')
97656         ) AND
97657         (l_bflow_method_code = 'PRIOR_ENTRY')
97658       )
97659    THEN
97660       IF
97661       --
97662       1 = 2
97663       --
97664       THEN
97665       xla_accounting_err_pkg.build_message
97666                                     (p_appli_s_name            => 'XLA'
97667                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97668                                     ,p_token_1                 => 'LINE_NUMBER'
97669                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
97670                                     ,p_token_2                 => 'LINE_TYPE_NAME'
97671                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
97672                                                                              l_component_type
97673                                                                             ,l_component_code
97674                                                                             ,l_component_type_code
97675                                                                             ,l_component_appl_id
97676                                                                             ,l_amb_context_code
97677                                                                             ,l_entity_code
97678                                                                             ,l_event_class_code
97679                                                                            )
97680                                     ,p_token_3                 => 'OWNER'
97681                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
97682                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
97683                                                                           ,p_lookup_code    => l_component_type_code
97684                                                                          )
97685                                     ,p_token_4                 => 'PRODUCT_NAME'
97686                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97687                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97688                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97689                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97690                                     ,p_ae_header_id            =>  NULL
97691                                        );
97692 
97693         IF (C_LEVEL_ERROR>= g_log_level) THEN
97694                  trace
97695                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97696                       ,p_level    => C_LEVEL_ERROR
97697                       ,p_module   => l_log_module);
97698         END IF;
97699       END IF;
97700    END IF;
97701    --
97702    --
97703    ------------------------------------------------------------------------------------------------
97704    -- 4219869 Business Flow
97705    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97706    -- Prior Entry.  Currently, the following code is always generated.
97707    ------------------------------------------------------------------------------------------------
97708    XLA_AE_LINES_PKG.ValidateCurrentLine;
97709 
97710    ------------------------------------------------------------------------------------
97711    -- 4219869 Business Flow
97712    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97713    ------------------------------------------------------------------------------------
97714    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97715 
97716    ----------------------------------------------------------------------------------
97717    -- 4219869 Business Flow
97718    -- Update journal entry status -- Need to generate this within IF <condition>
97719    ----------------------------------------------------------------------------------
97720    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97721          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97722          ,p_balance_type_code => l_balance_type_code
97723          );
97724 
97725    -------------------------------------------------------------------------------------------
97726    -- 4262811 - Generate the Accrual Reversal lines
97727    -------------------------------------------------------------------------------------------
97728    BEGIN
97729       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97730                               (g_array_event(p_event_id).array_value_num('header_index'));
97731       IF l_acc_rev_flag IS NULL THEN
97732          l_acc_rev_flag := 'N';
97733       END IF;
97734    EXCEPTION
97735       WHEN OTHERS THEN
97736          l_acc_rev_flag := 'N';
97737    END;
97738    --
97739    IF (l_acc_rev_flag = 'Y') THEN
97740 
97741        -- 4645092  ------------------------------------------------------------------------------
97742        -- To allow MPA report to determine if it should generate report process
97743        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97744        ------------------------------------------------------------------------------------------
97745 
97746        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97747        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97748    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
97749    -- call ADRs
97750    -- Bug 4922099
97751    --
97752    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97753         (NVL(l_actual_upg_option, 'N') = 'O') OR
97754         (NVL(l_enc_upg_option, 'N') = 'O')
97755       )
97756    THEN
97757    NULL;
97758    --
97759    --
97760    
97761   l_ccid := AcctDerRule_33(
97762            p_application_id           => p_application_id
97763          , p_ae_header_id             => l_ae_header_id 
97764 , p_source_59 => p_source_59
97765          , x_transaction_coa_id       => l_adr_transaction_coa_id
97766          , x_accounting_coa_id        => l_adr_accounting_coa_id
97767          , x_value_type_code          => l_adr_value_type_code
97768          , p_side                     => 'NA'
97769    );
97770 
97771    xla_ae_lines_pkg.set_ccid(
97772     p_code_combination_id          => l_ccid
97773   , p_value_type_code              => l_adr_value_type_code
97774   , p_transaction_coa_id           => l_adr_transaction_coa_id
97775   , p_accounting_coa_id            => l_adr_accounting_coa_id
97776   , p_adr_code                     => 'PI_RECEIVABLES'
97777   , p_adr_type_code                => 'S'
97778   , p_component_type               => l_component_type
97779   , p_component_code               => l_component_code
97780   , p_component_type_code          => l_component_type_code
97781   , p_component_appl_id            => l_component_appl_id
97782   , p_amb_context_code             => l_amb_context_code
97783   , p_side                         => 'NA'
97784   );
97785 
97786 
97787    --
97788    --
97789    END IF;
97790 
97791        --
97792        -- Update the line information that should be overwritten
97793        --
97794        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97795                                          p_header_num   => 1);
97796        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
97797 
97798        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97799 
97800        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
97801           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97802        END IF;
97803 
97804       --
97805       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97806       --
97807       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97808           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
97809       ELSE
97810           ---------------------------------------------------------------------------------------------------
97811           -- 4262811a Switch Sign
97812           ---------------------------------------------------------------------------------------------------
97813           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
97814           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97815                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97816           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97817                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97818           -- 5132302
97819           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97820                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97821 
97822       END IF;
97823 
97824       -- 4955764
97825       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97826       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97827 
97828 
97829       XLA_AE_LINES_PKG.ValidateCurrentLine;
97830       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97831 
97832       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97833                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97834                ,p_balance_type_code => l_balance_type_code);
97835 
97836    END IF;
97837 
97838    -----------------------------------------------------------------------------------------
97839    -- 4262811 Multiperiod Accounting
97840    -----------------------------------------------------------------------------------------
97841      -- No MPA option is assigned.
97842 
97843 
97844 END IF;
97845 END IF;
97846 --
97847 
97848 --
97849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97850    trace
97851       (p_msg      => 'END of AcctLineType_195'
97852       ,p_level    => C_LEVEL_PROCEDURE
97853       ,p_module   => l_log_module);
97854 END IF;
97855 --
97856 EXCEPTION
97857   WHEN xla_exceptions_pkg.application_exception THEN
97858       RAISE;
97859   WHEN OTHERS THEN
97860        xla_exceptions_pkg.raise_message
97861            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_195');
97862 END AcctLineType_195;
97863 --
97864 
97865 ---------------------------------------
97866 --
97867 -- PRIVATE FUNCTION
97868 --         AcctLineType_196
97869 --
97870 ---------------------------------------
97871 PROCEDURE AcctLineType_196 (
97872   p_application_id        IN NUMBER
97873  ,p_event_id              IN NUMBER
97874  ,p_calculate_acctd_flag  IN VARCHAR2
97875  ,p_calculate_g_l_flag    IN VARCHAR2
97876  ,p_actual_flag           IN OUT VARCHAR2
97877  ,p_balance_type_code     OUT VARCHAR2
97878  ,p_gain_or_loss_ref      OUT VARCHAR2
97879  
97880 --TRANSACTION_ID
97881  , p_source_1            IN NUMBER
97882 --Item Concatenated Segments
97883  , p_source_2            IN VARCHAR2
97884 --Transaction Quantity
97885  , p_source_3            IN NUMBER
97886 --Transaction Unit of Measure Code
97887  , p_source_4            IN VARCHAR2
97888 --Inventory Transaction Type Description
97889  , p_source_5            IN VARCHAR2
97890 --Interorg Receivables Account
97891  , p_source_59            IN NUMBER
97892 --DISTRIBUTION_IDENTIFIER
97893  , p_source_84            IN NUMBER
97894 --Distribution Type
97895  , p_source_85            IN VARCHAR2
97896  , p_source_85_meaning    IN VARCHAR2
97897 --Entered Currency Code
97898  , p_source_88            IN VARCHAR2
97899 --Entered Amount
97900  , p_source_91            IN NUMBER
97901 --Currency Conversion Date
97902  , p_source_92            IN DATE
97903 --Currency Conversion Rate
97904  , p_source_93            IN NUMBER
97905 --Currency Conversion Type
97906  , p_source_94            IN VARCHAR2
97907 --Accounted Amount
97908  , p_source_95            IN NUMBER
97909 --Accounting Line Type
97910  , p_source_97            IN NUMBER
97911 )
97912 IS
97913 
97914 l_component_type              VARCHAR2(80);
97915 l_component_code              VARCHAR2(30);
97916 l_component_type_code         VARCHAR2(1);
97917 l_component_appl_id           INTEGER;
97918 l_amb_context_code            VARCHAR2(30);
97919 l_entity_code                 VARCHAR2(30);
97920 l_event_class_code            VARCHAR2(30);
97921 l_ae_header_id                NUMBER;
97922 l_event_type_code             VARCHAR2(30);
97923 l_line_definition_code        VARCHAR2(30);
97924 l_line_definition_owner_code  VARCHAR2(1);
97925 --
97926 -- adr variables
97927 l_segment                     VARCHAR2(30);
97928 l_ccid                        NUMBER;
97929 l_adr_transaction_coa_id      NUMBER;
97930 l_adr_accounting_coa_id       NUMBER;
97931 l_adr_flexfield_segment_code  VARCHAR2(30);
97932 l_adr_flex_value_set_id       NUMBER;
97933 l_adr_value_type_code         VARCHAR2(30);
97934 l_adr_value_combination_id    NUMBER;
97935 l_adr_value_segment_code      VARCHAR2(30);
97936 
97937 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
97938 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
97939 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
97940 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
97941 
97942 -- 4262811 Variables ------------------------------------------------------------------------------------------
97943 l_entered_amt_idx             NUMBER;
97944 l_accted_amt_idx              NUMBER;
97945 l_acc_rev_flag                VARCHAR2(1);
97946 l_accrual_line_num            NUMBER;
97947 l_tmp_amt                     NUMBER;
97948 l_acc_rev_natural_side_code   VARCHAR2(1);
97949 
97950 l_num_entries                 NUMBER;
97951 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
97952 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
97953 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
97954 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
97955 l_recog_line_1                NUMBER;
97956 l_recog_line_2                NUMBER;
97957 
97958 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
97959 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
97960 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
97961 
97962 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97963 
97964 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
97965 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
97966 
97967 ---------------------------------------------------------------------------------------------------------------
97968 
97969 
97970 --
97971 -- bulk performance
97972 --
97973 l_balance_type_code           VARCHAR2(1);
97974 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
97975 l_log_module                  VARCHAR2(240);
97976 
97977 --
97978 -- Upgrade strategy
97979 --
97980 l_actual_upg_option           VARCHAR2(1);
97981 l_enc_upg_option           VARCHAR2(1);
97982 
97983 --
97984 BEGIN
97985 --
97986 IF g_log_enabled THEN
97987       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_196';
97988 END IF;
97989 --
97990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97991 
97992       trace
97993          (p_msg      => 'BEGIN of AcctLineType_196'
97994          ,p_level    => C_LEVEL_PROCEDURE
97995          ,p_module   => l_log_module);
97996 
97997 END IF;
97998 --
97999 l_component_type             := 'AMB_JLT';
98000 l_component_code             := 'INTERORG_RECEIVABLES';
98001 l_component_type_code        := 'S';
98002 l_component_appl_id          :=  707;
98003 l_amb_context_code           := 'DEFAULT';
98004 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
98005 l_event_class_code           := 'DIR_INTERORG_SHIP';
98006 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
98007 l_line_definition_owner_code := 'S';
98008 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
98009 --
98010 l_balance_type_code          := 'A';
98011 l_segment                     := NULL;
98012 l_ccid                        := NULL;
98013 l_adr_transaction_coa_id      := NULL;
98014 l_adr_accounting_coa_id       := NULL;
98015 l_adr_flexfield_segment_code  := NULL;
98016 l_adr_flex_value_set_id       := NULL;
98017 l_adr_value_type_code         := NULL;
98018 l_adr_value_combination_id    := NULL;
98019 l_adr_value_segment_code      := NULL;
98020 
98021 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
98022 l_bflow_class_code           := '';    -- 4219869 Business Flow
98023 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
98024 l_budgetary_control_flag     := 'N';
98025 
98026 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
98027 l_bflow_applied_to_amt       := NULL; -- 5132302
98028 l_entered_amt_idx            := NULL;          -- 4262811
98029 l_accted_amt_idx             := NULL;          -- 4262811
98030 l_acc_rev_flag               := NULL;          -- 4262811
98031 l_accrual_line_num           := NULL;          -- 4262811
98032 l_tmp_amt                    := NULL;          -- 4262811
98033 --
98034  
98035 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98036     l_balance_type_code <> 'B' THEN
98037 IF NVL(p_source_97,9E125) =  10
98038  THEN 
98039 
98040    --
98041    XLA_AE_LINES_PKG.SetNewLine;
98042 
98043    p_balance_type_code          := l_balance_type_code;
98044    -- set the flag so later we will know whether the gain loss line needs to be created
98045    
98046    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98047      p_actual_flag :='A';
98048    END IF;
98049 
98050    --
98051    -- bulk performance
98052    --
98053    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98054                                       p_header_num   => 0); -- 4262811
98055    --
98056    -- set accounting line options
98057    --
98058    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98059            p_natural_side_code          => 'D'
98060          , p_gain_or_loss_flag          => 'N'
98061          , p_gl_transfer_mode_code      => 'S'
98062          , p_acct_entry_type_code       => 'A'
98063          , p_switch_side_flag           => 'Y'
98064          , p_merge_duplicate_code       => 'N'
98065          );
98066    --
98067    l_acc_rev_natural_side_code := 'C';  -- 4262811
98068    -- 
98069    --
98070    -- set accounting line type info
98071    --
98072    xla_ae_lines_pkg.SetAcctLineType
98073       (p_component_type             => l_component_type
98074       ,p_event_type_code            => l_event_type_code
98075       ,p_line_definition_owner_code => l_line_definition_owner_code
98076       ,p_line_definition_code       => l_line_definition_code
98077       ,p_accounting_line_code       => l_component_code
98078       ,p_accounting_line_type_code  => l_component_type_code
98079       ,p_accounting_line_appl_id    => l_component_appl_id
98080       ,p_amb_context_code           => l_amb_context_code
98081       ,p_entity_code                => l_entity_code
98082       ,p_event_class_code           => l_event_class_code);
98083    --
98084    -- set accounting class
98085    --
98086    xla_ae_lines_pkg.SetAcctClass(
98087            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
98088          , p_ae_header_id           => l_ae_header_id
98089          );
98090 
98091    --
98092    -- set rounding class
98093    --
98094    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98095                       'INTERORG_RECEIVABLES';
98096 
98097    --
98098    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98099    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98100    --
98101    -- bulk performance
98102    --
98103    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98104 
98105    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98106       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98107 
98108    -- 4955764
98109    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98110       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98111 
98112    -- 4458381 Public Sector Enh
98113    
98114    --
98115    -- set accounting attributes for the line type
98116    --
98117    l_entered_amt_idx := 3;
98118    l_accted_amt_idx  := 8;
98119    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98120    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98121    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
98122    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98123    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
98124    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98125    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
98126    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98127    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
98128    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98129    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
98130    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98131    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
98132    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98133    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
98134    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98135    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
98136 
98137    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98138    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98139 
98140    ---------------------------------------------------------------------------------------------------------------
98141    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98142    ---------------------------------------------------------------------------------------------------------------
98143    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98144 
98145    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98146    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98147 
98148    IF xla_accounting_cache_pkg.GetValueChar
98149          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98150          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98151    AND l_bflow_method_code = 'PRIOR_ENTRY'
98152 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98153    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98154          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98155        )
98156    THEN
98157          xla_ae_lines_pkg.BflowUpgEntry
98158            (p_business_method_code    => l_bflow_method_code
98159            ,p_business_class_code     => l_bflow_class_code
98160            ,p_balance_type            => l_balance_type_code);
98161    ELSE
98162       NULL;
98163 -- No business flow processing for business flow method of NONE.
98164    END IF;
98165 
98166    --
98167    -- call analytical criteria
98168    --
98169    
98170    --
98171    -- call description
98172    --
98173    
98174 xla_ae_lines_pkg.SetLineDescription(
98175    p_ae_header_id => l_ae_header_id
98176   ,p_description  => Description_1 (
98177      p_application_id         => p_application_id
98178    , p_ae_header_id           => l_ae_header_id 
98179 , p_source_1 => p_source_1
98180 , p_source_2 => p_source_2
98181 , p_source_3 => p_source_3
98182 , p_source_4 => p_source_4
98183 , p_source_5 => p_source_5
98184    )
98185 );
98186 
98187 
98188    --
98189    -- call ADRs
98190    -- Bug 4922099
98191    --
98192    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98193         (NVL(l_actual_upg_option, 'N') = 'O') OR
98194         (NVL(l_enc_upg_option, 'N') = 'O')
98195       )
98196    THEN
98197    NULL;
98198    --
98199    --
98200    
98201   l_ccid := AcctDerRule_33(
98202            p_application_id           => p_application_id
98203          , p_ae_header_id             => l_ae_header_id 
98204 , p_source_59 => p_source_59
98205          , x_transaction_coa_id       => l_adr_transaction_coa_id
98206          , x_accounting_coa_id        => l_adr_accounting_coa_id
98207          , x_value_type_code          => l_adr_value_type_code
98208          , p_side                     => 'NA'
98209    );
98210 
98211    xla_ae_lines_pkg.set_ccid(
98212     p_code_combination_id          => l_ccid
98213   , p_value_type_code              => l_adr_value_type_code
98214   , p_transaction_coa_id           => l_adr_transaction_coa_id
98215   , p_accounting_coa_id            => l_adr_accounting_coa_id
98216   , p_adr_code                     => 'PI_RECEIVABLES'
98217   , p_adr_type_code                => 'S'
98218   , p_component_type               => l_component_type
98219   , p_component_code               => l_component_code
98220   , p_component_type_code          => l_component_type_code
98221   , p_component_appl_id            => l_component_appl_id
98222   , p_amb_context_code             => l_amb_context_code
98223   , p_side                         => 'NA'
98224   );
98225 
98226 
98227    --
98228    --
98229    END IF;
98230    --
98231    -- Bug 4922099
98232    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98233           (NVL(l_enc_upg_option, 'N') = 'O')
98234         ) AND
98235         (l_bflow_method_code = 'PRIOR_ENTRY')
98236       )
98237    THEN
98238       IF
98239       --
98240       1 = 2
98241       --
98242       THEN
98243       xla_accounting_err_pkg.build_message
98244                                     (p_appli_s_name            => 'XLA'
98245                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98246                                     ,p_token_1                 => 'LINE_NUMBER'
98247                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
98248                                     ,p_token_2                 => 'LINE_TYPE_NAME'
98249                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
98250                                                                              l_component_type
98251                                                                             ,l_component_code
98252                                                                             ,l_component_type_code
98253                                                                             ,l_component_appl_id
98254                                                                             ,l_amb_context_code
98255                                                                             ,l_entity_code
98256                                                                             ,l_event_class_code
98257                                                                            )
98258                                     ,p_token_3                 => 'OWNER'
98259                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
98260                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
98261                                                                           ,p_lookup_code    => l_component_type_code
98262                                                                          )
98263                                     ,p_token_4                 => 'PRODUCT_NAME'
98264                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98265                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98266                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98267                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98268                                     ,p_ae_header_id            =>  NULL
98269                                        );
98270 
98271         IF (C_LEVEL_ERROR>= g_log_level) THEN
98272                  trace
98273                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98274                       ,p_level    => C_LEVEL_ERROR
98275                       ,p_module   => l_log_module);
98276         END IF;
98277       END IF;
98278    END IF;
98279    --
98280    --
98281    ------------------------------------------------------------------------------------------------
98282    -- 4219869 Business Flow
98283    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98284    -- Prior Entry.  Currently, the following code is always generated.
98285    ------------------------------------------------------------------------------------------------
98286    XLA_AE_LINES_PKG.ValidateCurrentLine;
98287 
98288    ------------------------------------------------------------------------------------
98289    -- 4219869 Business Flow
98290    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98291    ------------------------------------------------------------------------------------
98292    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98293 
98294    ----------------------------------------------------------------------------------
98295    -- 4219869 Business Flow
98296    -- Update journal entry status -- Need to generate this within IF <condition>
98297    ----------------------------------------------------------------------------------
98298    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98299          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98300          ,p_balance_type_code => l_balance_type_code
98301          );
98302 
98303    -------------------------------------------------------------------------------------------
98304    -- 4262811 - Generate the Accrual Reversal lines
98305    -------------------------------------------------------------------------------------------
98306    BEGIN
98307       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98308                               (g_array_event(p_event_id).array_value_num('header_index'));
98309       IF l_acc_rev_flag IS NULL THEN
98310          l_acc_rev_flag := 'N';
98311       END IF;
98312    EXCEPTION
98313       WHEN OTHERS THEN
98314          l_acc_rev_flag := 'N';
98315    END;
98316    --
98317    IF (l_acc_rev_flag = 'Y') THEN
98318 
98319        -- 4645092  ------------------------------------------------------------------------------
98320        -- To allow MPA report to determine if it should generate report process
98321        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98322        ------------------------------------------------------------------------------------------
98323 
98324        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98325        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98326    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98327    -- call ADRs
98328    -- Bug 4922099
98329    --
98330    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98331         (NVL(l_actual_upg_option, 'N') = 'O') OR
98332         (NVL(l_enc_upg_option, 'N') = 'O')
98333       )
98334    THEN
98335    NULL;
98336    --
98337    --
98338    
98339   l_ccid := AcctDerRule_33(
98340            p_application_id           => p_application_id
98341          , p_ae_header_id             => l_ae_header_id 
98342 , p_source_59 => p_source_59
98343          , x_transaction_coa_id       => l_adr_transaction_coa_id
98344          , x_accounting_coa_id        => l_adr_accounting_coa_id
98345          , x_value_type_code          => l_adr_value_type_code
98346          , p_side                     => 'NA'
98347    );
98348 
98349    xla_ae_lines_pkg.set_ccid(
98350     p_code_combination_id          => l_ccid
98351   , p_value_type_code              => l_adr_value_type_code
98352   , p_transaction_coa_id           => l_adr_transaction_coa_id
98353   , p_accounting_coa_id            => l_adr_accounting_coa_id
98354   , p_adr_code                     => 'PI_RECEIVABLES'
98355   , p_adr_type_code                => 'S'
98356   , p_component_type               => l_component_type
98357   , p_component_code               => l_component_code
98358   , p_component_type_code          => l_component_type_code
98359   , p_component_appl_id            => l_component_appl_id
98360   , p_amb_context_code             => l_amb_context_code
98361   , p_side                         => 'NA'
98362   );
98363 
98364 
98365    --
98366    --
98367    END IF;
98368 
98369        --
98370        -- Update the line information that should be overwritten
98371        --
98372        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98373                                          p_header_num   => 1);
98374        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98375 
98376        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98377 
98378        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98379           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98380        END IF;
98381 
98382       --
98383       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98384       --
98385       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98386           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98387       ELSE
98388           ---------------------------------------------------------------------------------------------------
98389           -- 4262811a Switch Sign
98390           ---------------------------------------------------------------------------------------------------
98391           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98392           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98393                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98394           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98395                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98396           -- 5132302
98397           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98398                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98399 
98400       END IF;
98401 
98402       -- 4955764
98403       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98404       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98405 
98406 
98407       XLA_AE_LINES_PKG.ValidateCurrentLine;
98408       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98409 
98410       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98411                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98412                ,p_balance_type_code => l_balance_type_code);
98413 
98414    END IF;
98415 
98416    -----------------------------------------------------------------------------------------
98417    -- 4262811 Multiperiod Accounting
98418    -----------------------------------------------------------------------------------------
98419      -- No MPA option is assigned.
98420 
98421 
98422 END IF;
98423 END IF;
98424 --
98425 
98426 --
98427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98428    trace
98429       (p_msg      => 'END of AcctLineType_196'
98430       ,p_level    => C_LEVEL_PROCEDURE
98431       ,p_module   => l_log_module);
98432 END IF;
98433 --
98434 EXCEPTION
98435   WHEN xla_exceptions_pkg.application_exception THEN
98436       RAISE;
98437   WHEN OTHERS THEN
98438        xla_exceptions_pkg.raise_message
98439            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_196');
98440 END AcctLineType_196;
98441 --
98442 
98443 ---------------------------------------
98444 --
98445 -- PRIVATE FUNCTION
98446 --         AcctLineType_197
98447 --
98448 ---------------------------------------
98449 PROCEDURE AcctLineType_197 (
98450   p_application_id        IN NUMBER
98451  ,p_event_id              IN NUMBER
98452  ,p_calculate_acctd_flag  IN VARCHAR2
98453  ,p_calculate_g_l_flag    IN VARCHAR2
98454  ,p_actual_flag           IN OUT VARCHAR2
98455  ,p_balance_type_code     OUT VARCHAR2
98456  ,p_gain_or_loss_ref      OUT VARCHAR2
98457  
98458 --TRANSACTION_ID
98459  , p_source_1            IN NUMBER
98460 --Item Concatenated Segments
98461  , p_source_2            IN VARCHAR2
98462 --Transaction Quantity
98463  , p_source_3            IN NUMBER
98464 --Transaction Unit of Measure Code
98465  , p_source_4            IN VARCHAR2
98466 --Inventory Transaction Type Description
98467  , p_source_5            IN VARCHAR2
98468 --Cost Management Default Account
98469  , p_source_11            IN NUMBER
98470 --DISTRIBUTION_IDENTIFIER
98471  , p_source_84            IN NUMBER
98472 --Distribution Type
98473  , p_source_85            IN VARCHAR2
98474  , p_source_85_meaning    IN VARCHAR2
98475 --Entered Currency Code
98476  , p_source_88            IN VARCHAR2
98477 --Entered Amount
98478  , p_source_91            IN NUMBER
98479 --Currency Conversion Date
98480  , p_source_92            IN DATE
98481 --Currency Conversion Rate
98482  , p_source_93            IN NUMBER
98483 --Currency Conversion Type
98484  , p_source_94            IN VARCHAR2
98485 --Accounted Amount
98486  , p_source_95            IN NUMBER
98487 --Accounting Line Type
98488  , p_source_97            IN NUMBER
98489 )
98490 IS
98491 
98492 l_component_type              VARCHAR2(80);
98493 l_component_code              VARCHAR2(30);
98494 l_component_type_code         VARCHAR2(1);
98495 l_component_appl_id           INTEGER;
98496 l_amb_context_code            VARCHAR2(30);
98497 l_entity_code                 VARCHAR2(30);
98498 l_event_class_code            VARCHAR2(30);
98499 l_ae_header_id                NUMBER;
98500 l_event_type_code             VARCHAR2(30);
98501 l_line_definition_code        VARCHAR2(30);
98502 l_line_definition_owner_code  VARCHAR2(1);
98503 --
98504 -- adr variables
98505 l_segment                     VARCHAR2(30);
98506 l_ccid                        NUMBER;
98507 l_adr_transaction_coa_id      NUMBER;
98508 l_adr_accounting_coa_id       NUMBER;
98509 l_adr_flexfield_segment_code  VARCHAR2(30);
98510 l_adr_flex_value_set_id       NUMBER;
98511 l_adr_value_type_code         VARCHAR2(30);
98512 l_adr_value_combination_id    NUMBER;
98513 l_adr_value_segment_code      VARCHAR2(30);
98514 
98515 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
98516 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
98517 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
98518 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
98519 
98520 -- 4262811 Variables ------------------------------------------------------------------------------------------
98521 l_entered_amt_idx             NUMBER;
98522 l_accted_amt_idx              NUMBER;
98523 l_acc_rev_flag                VARCHAR2(1);
98524 l_accrual_line_num            NUMBER;
98525 l_tmp_amt                     NUMBER;
98526 l_acc_rev_natural_side_code   VARCHAR2(1);
98527 
98528 l_num_entries                 NUMBER;
98529 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
98530 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
98531 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
98532 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
98533 l_recog_line_1                NUMBER;
98534 l_recog_line_2                NUMBER;
98535 
98536 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
98537 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
98538 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
98539 
98540 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98541 
98542 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
98543 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
98544 
98545 ---------------------------------------------------------------------------------------------------------------
98546 
98547 
98548 --
98549 -- bulk performance
98550 --
98551 l_balance_type_code           VARCHAR2(1);
98552 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
98553 l_log_module                  VARCHAR2(240);
98554 
98555 --
98556 -- Upgrade strategy
98557 --
98558 l_actual_upg_option           VARCHAR2(1);
98559 l_enc_upg_option           VARCHAR2(1);
98560 
98561 --
98562 BEGIN
98563 --
98564 IF g_log_enabled THEN
98565       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_197';
98566 END IF;
98567 --
98568 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98569 
98570       trace
98571          (p_msg      => 'BEGIN of AcctLineType_197'
98572          ,p_level    => C_LEVEL_PROCEDURE
98573          ,p_module   => l_log_module);
98574 
98575 END IF;
98576 --
98577 l_component_type             := 'AMB_JLT';
98578 l_component_code             := 'INTERORG_RECEIVABLES';
98579 l_component_type_code        := 'S';
98580 l_component_appl_id          :=  707;
98581 l_amb_context_code           := 'DEFAULT';
98582 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
98583 l_event_class_code           := 'INT_ORDER_TO_EXP';
98584 l_event_type_code            := 'EXP_REQ_RCPT_TP';
98585 l_line_definition_owner_code := 'S';
98586 l_line_definition_code       := 'PI_EXP_REQ_RCPT_TP';
98587 --
98588 l_balance_type_code          := 'A';
98589 l_segment                     := NULL;
98590 l_ccid                        := NULL;
98591 l_adr_transaction_coa_id      := NULL;
98592 l_adr_accounting_coa_id       := NULL;
98593 l_adr_flexfield_segment_code  := NULL;
98594 l_adr_flex_value_set_id       := NULL;
98595 l_adr_value_type_code         := NULL;
98596 l_adr_value_combination_id    := NULL;
98597 l_adr_value_segment_code      := NULL;
98598 
98599 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
98600 l_bflow_class_code           := '';    -- 4219869 Business Flow
98601 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
98602 l_budgetary_control_flag     := 'N';
98603 
98604 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
98605 l_bflow_applied_to_amt       := NULL; -- 5132302
98606 l_entered_amt_idx            := NULL;          -- 4262811
98607 l_accted_amt_idx             := NULL;          -- 4262811
98608 l_acc_rev_flag               := NULL;          -- 4262811
98609 l_accrual_line_num           := NULL;          -- 4262811
98610 l_tmp_amt                    := NULL;          -- 4262811
98611 --
98612  
98613 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98614     l_balance_type_code <> 'B' THEN
98615 IF NVL(p_source_97,9E125) =  10
98616  THEN 
98617 
98618    --
98619    XLA_AE_LINES_PKG.SetNewLine;
98620 
98621    p_balance_type_code          := l_balance_type_code;
98622    -- set the flag so later we will know whether the gain loss line needs to be created
98623    
98624    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98625      p_actual_flag :='A';
98626    END IF;
98627 
98628    --
98629    -- bulk performance
98630    --
98631    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98632                                       p_header_num   => 0); -- 4262811
98633    --
98634    -- set accounting line options
98635    --
98636    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98637            p_natural_side_code          => 'D'
98638          , p_gain_or_loss_flag          => 'N'
98639          , p_gl_transfer_mode_code      => 'S'
98640          , p_acct_entry_type_code       => 'A'
98641          , p_switch_side_flag           => 'Y'
98642          , p_merge_duplicate_code       => 'N'
98643          );
98644    --
98645    l_acc_rev_natural_side_code := 'C';  -- 4262811
98646    -- 
98647    --
98648    -- set accounting line type info
98649    --
98650    xla_ae_lines_pkg.SetAcctLineType
98651       (p_component_type             => l_component_type
98652       ,p_event_type_code            => l_event_type_code
98653       ,p_line_definition_owner_code => l_line_definition_owner_code
98654       ,p_line_definition_code       => l_line_definition_code
98655       ,p_accounting_line_code       => l_component_code
98656       ,p_accounting_line_type_code  => l_component_type_code
98657       ,p_accounting_line_appl_id    => l_component_appl_id
98658       ,p_amb_context_code           => l_amb_context_code
98659       ,p_entity_code                => l_entity_code
98660       ,p_event_class_code           => l_event_class_code);
98661    --
98662    -- set accounting class
98663    --
98664    xla_ae_lines_pkg.SetAcctClass(
98665            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
98666          , p_ae_header_id           => l_ae_header_id
98667          );
98668 
98669    --
98670    -- set rounding class
98671    --
98672    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98673                       'INTERORG_RECEIVABLES';
98674 
98675    --
98676    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98677    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98678    --
98679    -- bulk performance
98680    --
98681    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98682 
98683    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98684       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98685 
98686    -- 4955764
98687    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98689 
98690    -- 4458381 Public Sector Enh
98691    
98692    --
98693    -- set accounting attributes for the line type
98694    --
98695    l_entered_amt_idx := 3;
98696    l_accted_amt_idx  := 8;
98697    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
98698    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98699    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
98700    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98701    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
98702    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98703    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
98704    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98705    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
98706    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98707    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
98708    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98709    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
98710    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98711    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
98712    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98713    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
98714 
98715    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98716    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98717 
98718    ---------------------------------------------------------------------------------------------------------------
98719    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98720    ---------------------------------------------------------------------------------------------------------------
98721    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98722 
98723    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98724    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98725 
98726    IF xla_accounting_cache_pkg.GetValueChar
98727          (p_source_code         => 'LEDGER_CATEGORY_CODE'
98728          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98729    AND l_bflow_method_code = 'PRIOR_ENTRY'
98730 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98731    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98732          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98733        )
98734    THEN
98735          xla_ae_lines_pkg.BflowUpgEntry
98736            (p_business_method_code    => l_bflow_method_code
98737            ,p_business_class_code     => l_bflow_class_code
98738            ,p_balance_type            => l_balance_type_code);
98739    ELSE
98740       NULL;
98741 -- No business flow processing for business flow method of NONE.
98742    END IF;
98743 
98744    --
98745    -- call analytical criteria
98746    --
98747    
98748    --
98749    -- call description
98750    --
98751    
98752 xla_ae_lines_pkg.SetLineDescription(
98753    p_ae_header_id => l_ae_header_id
98754   ,p_description  => Description_1 (
98755      p_application_id         => p_application_id
98756    , p_ae_header_id           => l_ae_header_id 
98757 , p_source_1 => p_source_1
98758 , p_source_2 => p_source_2
98759 , p_source_3 => p_source_3
98760 , p_source_4 => p_source_4
98761 , p_source_5 => p_source_5
98762    )
98763 );
98764 
98765 
98766    --
98767    -- call ADRs
98768    -- Bug 4922099
98769    --
98770    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98771         (NVL(l_actual_upg_option, 'N') = 'O') OR
98772         (NVL(l_enc_upg_option, 'N') = 'O')
98773       )
98774    THEN
98775    NULL;
98776    --
98777    --
98778    
98779   l_ccid := AcctDerRule_6(
98780            p_application_id           => p_application_id
98781          , p_ae_header_id             => l_ae_header_id 
98782 , p_source_11 => p_source_11
98783          , x_transaction_coa_id       => l_adr_transaction_coa_id
98784          , x_accounting_coa_id        => l_adr_accounting_coa_id
98785          , x_value_type_code          => l_adr_value_type_code
98786          , p_side                     => 'NA'
98787    );
98788 
98789    xla_ae_lines_pkg.set_ccid(
98790     p_code_combination_id          => l_ccid
98791   , p_value_type_code              => l_adr_value_type_code
98792   , p_transaction_coa_id           => l_adr_transaction_coa_id
98793   , p_accounting_coa_id            => l_adr_accounting_coa_id
98794   , p_adr_code                     => 'CST_DEFAULT'
98795   , p_adr_type_code                => 'S'
98796   , p_component_type               => l_component_type
98797   , p_component_code               => l_component_code
98798   , p_component_type_code          => l_component_type_code
98799   , p_component_appl_id            => l_component_appl_id
98800   , p_amb_context_code             => l_amb_context_code
98801   , p_side                         => 'NA'
98802   );
98803 
98804 
98805    --
98806    --
98807    END IF;
98808    --
98809    -- Bug 4922099
98810    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98811           (NVL(l_enc_upg_option, 'N') = 'O')
98812         ) AND
98813         (l_bflow_method_code = 'PRIOR_ENTRY')
98814       )
98815    THEN
98816       IF
98817       --
98818       1 = 2
98819       --
98820       THEN
98821       xla_accounting_err_pkg.build_message
98822                                     (p_appli_s_name            => 'XLA'
98823                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98824                                     ,p_token_1                 => 'LINE_NUMBER'
98825                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
98826                                     ,p_token_2                 => 'LINE_TYPE_NAME'
98827                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
98828                                                                              l_component_type
98829                                                                             ,l_component_code
98830                                                                             ,l_component_type_code
98831                                                                             ,l_component_appl_id
98832                                                                             ,l_amb_context_code
98833                                                                             ,l_entity_code
98834                                                                             ,l_event_class_code
98835                                                                            )
98836                                     ,p_token_3                 => 'OWNER'
98837                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
98838                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
98839                                                                           ,p_lookup_code    => l_component_type_code
98840                                                                          )
98841                                     ,p_token_4                 => 'PRODUCT_NAME'
98842                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98843                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98844                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98845                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98846                                     ,p_ae_header_id            =>  NULL
98847                                        );
98848 
98849         IF (C_LEVEL_ERROR>= g_log_level) THEN
98850                  trace
98851                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98852                       ,p_level    => C_LEVEL_ERROR
98853                       ,p_module   => l_log_module);
98854         END IF;
98855       END IF;
98856    END IF;
98857    --
98858    --
98859    ------------------------------------------------------------------------------------------------
98860    -- 4219869 Business Flow
98861    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98862    -- Prior Entry.  Currently, the following code is always generated.
98863    ------------------------------------------------------------------------------------------------
98864    XLA_AE_LINES_PKG.ValidateCurrentLine;
98865 
98866    ------------------------------------------------------------------------------------
98867    -- 4219869 Business Flow
98868    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98869    ------------------------------------------------------------------------------------
98870    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98871 
98872    ----------------------------------------------------------------------------------
98873    -- 4219869 Business Flow
98874    -- Update journal entry status -- Need to generate this within IF <condition>
98875    ----------------------------------------------------------------------------------
98876    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98877          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98878          ,p_balance_type_code => l_balance_type_code
98879          );
98880 
98881    -------------------------------------------------------------------------------------------
98882    -- 4262811 - Generate the Accrual Reversal lines
98883    -------------------------------------------------------------------------------------------
98884    BEGIN
98885       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98886                               (g_array_event(p_event_id).array_value_num('header_index'));
98887       IF l_acc_rev_flag IS NULL THEN
98888          l_acc_rev_flag := 'N';
98889       END IF;
98890    EXCEPTION
98891       WHEN OTHERS THEN
98892          l_acc_rev_flag := 'N';
98893    END;
98894    --
98895    IF (l_acc_rev_flag = 'Y') THEN
98896 
98897        -- 4645092  ------------------------------------------------------------------------------
98898        -- To allow MPA report to determine if it should generate report process
98899        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98900        ------------------------------------------------------------------------------------------
98901 
98902        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98903        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98904    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
98905    -- call ADRs
98906    -- Bug 4922099
98907    --
98908    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98909         (NVL(l_actual_upg_option, 'N') = 'O') OR
98910         (NVL(l_enc_upg_option, 'N') = 'O')
98911       )
98912    THEN
98913    NULL;
98914    --
98915    --
98916    
98917   l_ccid := AcctDerRule_6(
98918            p_application_id           => p_application_id
98919          , p_ae_header_id             => l_ae_header_id 
98920 , p_source_11 => p_source_11
98921          , x_transaction_coa_id       => l_adr_transaction_coa_id
98922          , x_accounting_coa_id        => l_adr_accounting_coa_id
98923          , x_value_type_code          => l_adr_value_type_code
98924          , p_side                     => 'NA'
98925    );
98926 
98927    xla_ae_lines_pkg.set_ccid(
98928     p_code_combination_id          => l_ccid
98929   , p_value_type_code              => l_adr_value_type_code
98930   , p_transaction_coa_id           => l_adr_transaction_coa_id
98931   , p_accounting_coa_id            => l_adr_accounting_coa_id
98932   , p_adr_code                     => 'CST_DEFAULT'
98933   , p_adr_type_code                => 'S'
98934   , p_component_type               => l_component_type
98935   , p_component_code               => l_component_code
98936   , p_component_type_code          => l_component_type_code
98937   , p_component_appl_id            => l_component_appl_id
98938   , p_amb_context_code             => l_amb_context_code
98939   , p_side                         => 'NA'
98940   );
98941 
98942 
98943    --
98944    --
98945    END IF;
98946 
98947        --
98948        -- Update the line information that should be overwritten
98949        --
98950        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98951                                          p_header_num   => 1);
98952        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
98953 
98954        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98955 
98956        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
98957           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98958        END IF;
98959 
98960       --
98961       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98962       --
98963       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98964           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
98965       ELSE
98966           ---------------------------------------------------------------------------------------------------
98967           -- 4262811a Switch Sign
98968           ---------------------------------------------------------------------------------------------------
98969           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
98970           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98971                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98972           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98973                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98974           -- 5132302
98975           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98976                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98977 
98978       END IF;
98979 
98980       -- 4955764
98981       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98982       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98983 
98984 
98985       XLA_AE_LINES_PKG.ValidateCurrentLine;
98986       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98987 
98988       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98989                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98990                ,p_balance_type_code => l_balance_type_code);
98991 
98992    END IF;
98993 
98994    -----------------------------------------------------------------------------------------
98995    -- 4262811 Multiperiod Accounting
98996    -----------------------------------------------------------------------------------------
98997      -- No MPA option is assigned.
98998 
98999 
99000 END IF;
99001 END IF;
99002 --
99003 
99004 --
99005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99006    trace
99007       (p_msg      => 'END of AcctLineType_197'
99008       ,p_level    => C_LEVEL_PROCEDURE
99009       ,p_module   => l_log_module);
99010 END IF;
99011 --
99012 EXCEPTION
99013   WHEN xla_exceptions_pkg.application_exception THEN
99014       RAISE;
99015   WHEN OTHERS THEN
99016        xla_exceptions_pkg.raise_message
99017            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_197');
99018 END AcctLineType_197;
99019 --
99020 
99021 ---------------------------------------
99022 --
99023 -- PRIVATE FUNCTION
99024 --         AcctLineType_198
99025 --
99026 ---------------------------------------
99027 PROCEDURE AcctLineType_198 (
99028   p_application_id        IN NUMBER
99029  ,p_event_id              IN NUMBER
99030  ,p_calculate_acctd_flag  IN VARCHAR2
99031  ,p_calculate_g_l_flag    IN VARCHAR2
99032  ,p_actual_flag           IN OUT VARCHAR2
99033  ,p_balance_type_code     OUT VARCHAR2
99034  ,p_gain_or_loss_ref      OUT VARCHAR2
99035  
99036 --TRANSACTION_ID
99037  , p_source_1            IN NUMBER
99038 --Item Concatenated Segments
99039  , p_source_2            IN VARCHAR2
99040 --Transaction Quantity
99041  , p_source_3            IN NUMBER
99042 --Transaction Unit of Measure Code
99043  , p_source_4            IN VARCHAR2
99044 --Inventory Transaction Type Description
99045  , p_source_5            IN VARCHAR2
99046 --Interorg Receivables Account
99047  , p_source_59            IN NUMBER
99048 --DISTRIBUTION_IDENTIFIER
99049  , p_source_84            IN NUMBER
99050 --Distribution Type
99051  , p_source_85            IN VARCHAR2
99052  , p_source_85_meaning    IN VARCHAR2
99053 --Entered Currency Code
99054  , p_source_88            IN VARCHAR2
99055 --Entered Amount
99056  , p_source_91            IN NUMBER
99057 --Currency Conversion Date
99058  , p_source_92            IN DATE
99059 --Currency Conversion Rate
99060  , p_source_93            IN NUMBER
99061 --Currency Conversion Type
99062  , p_source_94            IN VARCHAR2
99063 --Accounted Amount
99064  , p_source_95            IN NUMBER
99065 --Accounting Line Type
99066  , p_source_97            IN NUMBER
99067 )
99068 IS
99069 
99070 l_component_type              VARCHAR2(80);
99071 l_component_code              VARCHAR2(30);
99072 l_component_type_code         VARCHAR2(1);
99073 l_component_appl_id           INTEGER;
99074 l_amb_context_code            VARCHAR2(30);
99075 l_entity_code                 VARCHAR2(30);
99076 l_event_class_code            VARCHAR2(30);
99077 l_ae_header_id                NUMBER;
99078 l_event_type_code             VARCHAR2(30);
99079 l_line_definition_code        VARCHAR2(30);
99080 l_line_definition_owner_code  VARCHAR2(1);
99081 --
99082 -- adr variables
99083 l_segment                     VARCHAR2(30);
99084 l_ccid                        NUMBER;
99085 l_adr_transaction_coa_id      NUMBER;
99086 l_adr_accounting_coa_id       NUMBER;
99087 l_adr_flexfield_segment_code  VARCHAR2(30);
99088 l_adr_flex_value_set_id       NUMBER;
99089 l_adr_value_type_code         VARCHAR2(30);
99090 l_adr_value_combination_id    NUMBER;
99091 l_adr_value_segment_code      VARCHAR2(30);
99092 
99093 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
99094 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
99095 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
99096 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
99097 
99098 -- 4262811 Variables ------------------------------------------------------------------------------------------
99099 l_entered_amt_idx             NUMBER;
99100 l_accted_amt_idx              NUMBER;
99101 l_acc_rev_flag                VARCHAR2(1);
99102 l_accrual_line_num            NUMBER;
99103 l_tmp_amt                     NUMBER;
99104 l_acc_rev_natural_side_code   VARCHAR2(1);
99105 
99106 l_num_entries                 NUMBER;
99107 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
99108 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
99109 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
99110 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
99111 l_recog_line_1                NUMBER;
99112 l_recog_line_2                NUMBER;
99113 
99114 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
99115 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
99116 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
99117 
99118 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99119 
99120 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
99121 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
99122 
99123 ---------------------------------------------------------------------------------------------------------------
99124 
99125 
99126 --
99127 -- bulk performance
99128 --
99129 l_balance_type_code           VARCHAR2(1);
99130 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
99131 l_log_module                  VARCHAR2(240);
99132 
99133 --
99134 -- Upgrade strategy
99135 --
99136 l_actual_upg_option           VARCHAR2(1);
99137 l_enc_upg_option           VARCHAR2(1);
99138 
99139 --
99140 BEGIN
99141 --
99142 IF g_log_enabled THEN
99143       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_198';
99144 END IF;
99145 --
99146 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99147 
99148       trace
99149          (p_msg      => 'BEGIN of AcctLineType_198'
99150          ,p_level    => C_LEVEL_PROCEDURE
99151          ,p_module   => l_log_module);
99152 
99153 END IF;
99154 --
99155 l_component_type             := 'AMB_JLT';
99156 l_component_code             := 'INTERORG_RECEIVABLES';
99157 l_component_type_code        := 'S';
99158 l_component_appl_id          :=  707;
99159 l_amb_context_code           := 'DEFAULT';
99160 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
99161 l_event_class_code           := 'USER_DEFINE';
99162 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
99163 l_line_definition_owner_code := 'S';
99164 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
99165 --
99166 l_balance_type_code          := 'A';
99167 l_segment                     := NULL;
99168 l_ccid                        := NULL;
99169 l_adr_transaction_coa_id      := NULL;
99170 l_adr_accounting_coa_id       := NULL;
99171 l_adr_flexfield_segment_code  := NULL;
99172 l_adr_flex_value_set_id       := NULL;
99173 l_adr_value_type_code         := NULL;
99174 l_adr_value_combination_id    := NULL;
99175 l_adr_value_segment_code      := NULL;
99176 
99177 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99178 l_bflow_class_code           := '';    -- 4219869 Business Flow
99179 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99180 l_budgetary_control_flag     := 'N';
99181 
99182 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99183 l_bflow_applied_to_amt       := NULL; -- 5132302
99184 l_entered_amt_idx            := NULL;          -- 4262811
99185 l_accted_amt_idx             := NULL;          -- 4262811
99186 l_acc_rev_flag               := NULL;          -- 4262811
99187 l_accrual_line_num           := NULL;          -- 4262811
99188 l_tmp_amt                    := NULL;          -- 4262811
99189 --
99190  
99191 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99192     l_balance_type_code <> 'B' THEN
99193 IF NVL(p_source_97,9E125) =  10
99194  THEN 
99195 
99196    --
99197    XLA_AE_LINES_PKG.SetNewLine;
99198 
99199    p_balance_type_code          := l_balance_type_code;
99200    -- set the flag so later we will know whether the gain loss line needs to be created
99201    
99202    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99203      p_actual_flag :='A';
99204    END IF;
99205 
99206    --
99207    -- bulk performance
99208    --
99209    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99210                                       p_header_num   => 0); -- 4262811
99211    --
99212    -- set accounting line options
99213    --
99214    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99215            p_natural_side_code          => 'D'
99216          , p_gain_or_loss_flag          => 'N'
99217          , p_gl_transfer_mode_code      => 'S'
99218          , p_acct_entry_type_code       => 'A'
99219          , p_switch_side_flag           => 'Y'
99220          , p_merge_duplicate_code       => 'N'
99221          );
99222    --
99223    l_acc_rev_natural_side_code := 'C';  -- 4262811
99224    -- 
99225    --
99226    -- set accounting line type info
99227    --
99228    xla_ae_lines_pkg.SetAcctLineType
99229       (p_component_type             => l_component_type
99230       ,p_event_type_code            => l_event_type_code
99231       ,p_line_definition_owner_code => l_line_definition_owner_code
99232       ,p_line_definition_code       => l_line_definition_code
99233       ,p_accounting_line_code       => l_component_code
99234       ,p_accounting_line_type_code  => l_component_type_code
99235       ,p_accounting_line_appl_id    => l_component_appl_id
99236       ,p_amb_context_code           => l_amb_context_code
99237       ,p_entity_code                => l_entity_code
99238       ,p_event_class_code           => l_event_class_code);
99239    --
99240    -- set accounting class
99241    --
99242    xla_ae_lines_pkg.SetAcctClass(
99243            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
99244          , p_ae_header_id           => l_ae_header_id
99245          );
99246 
99247    --
99248    -- set rounding class
99249    --
99250    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99251                       'INTERORG_RECEIVABLES';
99252 
99253    --
99254    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99255    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99256    --
99257    -- bulk performance
99258    --
99259    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99260 
99261    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99262       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99263 
99264    -- 4955764
99265    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99266       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99267 
99268    -- 4458381 Public Sector Enh
99269    
99270    --
99271    -- set accounting attributes for the line type
99272    --
99273    l_entered_amt_idx := 3;
99274    l_accted_amt_idx  := 8;
99275    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
99276    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99277    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
99278    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99279    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
99280    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99281    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
99282    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99283    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
99284    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99285    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
99286    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99287    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
99288    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99289    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
99290    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99291    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
99292 
99293    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99294    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99295 
99296    ---------------------------------------------------------------------------------------------------------------
99297    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99298    ---------------------------------------------------------------------------------------------------------------
99299    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99300 
99301    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99302    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99303 
99304    IF xla_accounting_cache_pkg.GetValueChar
99305          (p_source_code         => 'LEDGER_CATEGORY_CODE'
99306          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99307    AND l_bflow_method_code = 'PRIOR_ENTRY'
99308 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99309    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99310          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99311        )
99312    THEN
99313          xla_ae_lines_pkg.BflowUpgEntry
99314            (p_business_method_code    => l_bflow_method_code
99315            ,p_business_class_code     => l_bflow_class_code
99316            ,p_balance_type            => l_balance_type_code);
99317    ELSE
99318       NULL;
99319 -- No business flow processing for business flow method of NONE.
99320    END IF;
99321 
99322    --
99323    -- call analytical criteria
99324    --
99325    
99326    --
99327    -- call description
99328    --
99329    
99330 xla_ae_lines_pkg.SetLineDescription(
99331    p_ae_header_id => l_ae_header_id
99332   ,p_description  => Description_1 (
99333      p_application_id         => p_application_id
99334    , p_ae_header_id           => l_ae_header_id 
99335 , p_source_1 => p_source_1
99336 , p_source_2 => p_source_2
99337 , p_source_3 => p_source_3
99338 , p_source_4 => p_source_4
99339 , p_source_5 => p_source_5
99340    )
99341 );
99342 
99343 
99344    --
99345    -- call ADRs
99346    -- Bug 4922099
99347    --
99348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99349         (NVL(l_actual_upg_option, 'N') = 'O') OR
99350         (NVL(l_enc_upg_option, 'N') = 'O')
99351       )
99352    THEN
99353    NULL;
99354    --
99355    --
99356    
99357   l_ccid := AcctDerRule_33(
99358            p_application_id           => p_application_id
99359          , p_ae_header_id             => l_ae_header_id 
99360 , p_source_59 => p_source_59
99361          , x_transaction_coa_id       => l_adr_transaction_coa_id
99362          , x_accounting_coa_id        => l_adr_accounting_coa_id
99363          , x_value_type_code          => l_adr_value_type_code
99364          , p_side                     => 'NA'
99365    );
99366 
99367    xla_ae_lines_pkg.set_ccid(
99368     p_code_combination_id          => l_ccid
99369   , p_value_type_code              => l_adr_value_type_code
99370   , p_transaction_coa_id           => l_adr_transaction_coa_id
99371   , p_accounting_coa_id            => l_adr_accounting_coa_id
99372   , p_adr_code                     => 'PI_RECEIVABLES'
99373   , p_adr_type_code                => 'S'
99374   , p_component_type               => l_component_type
99375   , p_component_code               => l_component_code
99376   , p_component_type_code          => l_component_type_code
99377   , p_component_appl_id            => l_component_appl_id
99378   , p_amb_context_code             => l_amb_context_code
99379   , p_side                         => 'NA'
99380   );
99381 
99382 
99383    --
99384    --
99385    END IF;
99386    --
99387    -- Bug 4922099
99388    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99389           (NVL(l_enc_upg_option, 'N') = 'O')
99390         ) AND
99391         (l_bflow_method_code = 'PRIOR_ENTRY')
99392       )
99393    THEN
99394       IF
99395       --
99396       1 = 2
99397       --
99398       THEN
99399       xla_accounting_err_pkg.build_message
99400                                     (p_appli_s_name            => 'XLA'
99401                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99402                                     ,p_token_1                 => 'LINE_NUMBER'
99403                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
99404                                     ,p_token_2                 => 'LINE_TYPE_NAME'
99405                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
99406                                                                              l_component_type
99407                                                                             ,l_component_code
99408                                                                             ,l_component_type_code
99409                                                                             ,l_component_appl_id
99410                                                                             ,l_amb_context_code
99411                                                                             ,l_entity_code
99412                                                                             ,l_event_class_code
99413                                                                            )
99414                                     ,p_token_3                 => 'OWNER'
99415                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
99416                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
99417                                                                           ,p_lookup_code    => l_component_type_code
99418                                                                          )
99419                                     ,p_token_4                 => 'PRODUCT_NAME'
99420                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99421                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99422                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99423                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99424                                     ,p_ae_header_id            =>  NULL
99425                                        );
99426 
99427         IF (C_LEVEL_ERROR>= g_log_level) THEN
99428                  trace
99429                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99430                       ,p_level    => C_LEVEL_ERROR
99431                       ,p_module   => l_log_module);
99432         END IF;
99433       END IF;
99434    END IF;
99435    --
99436    --
99437    ------------------------------------------------------------------------------------------------
99438    -- 4219869 Business Flow
99439    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99440    -- Prior Entry.  Currently, the following code is always generated.
99441    ------------------------------------------------------------------------------------------------
99442    XLA_AE_LINES_PKG.ValidateCurrentLine;
99443 
99444    ------------------------------------------------------------------------------------
99445    -- 4219869 Business Flow
99446    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99447    ------------------------------------------------------------------------------------
99448    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99449 
99450    ----------------------------------------------------------------------------------
99451    -- 4219869 Business Flow
99452    -- Update journal entry status -- Need to generate this within IF <condition>
99453    ----------------------------------------------------------------------------------
99454    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99455          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99456          ,p_balance_type_code => l_balance_type_code
99457          );
99458 
99459    -------------------------------------------------------------------------------------------
99460    -- 4262811 - Generate the Accrual Reversal lines
99461    -------------------------------------------------------------------------------------------
99462    BEGIN
99463       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99464                               (g_array_event(p_event_id).array_value_num('header_index'));
99465       IF l_acc_rev_flag IS NULL THEN
99466          l_acc_rev_flag := 'N';
99467       END IF;
99468    EXCEPTION
99469       WHEN OTHERS THEN
99470          l_acc_rev_flag := 'N';
99471    END;
99472    --
99473    IF (l_acc_rev_flag = 'Y') THEN
99474 
99475        -- 4645092  ------------------------------------------------------------------------------
99476        -- To allow MPA report to determine if it should generate report process
99477        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99478        ------------------------------------------------------------------------------------------
99479 
99480        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99481        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99482    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
99483    -- call ADRs
99484    -- Bug 4922099
99485    --
99486    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99487         (NVL(l_actual_upg_option, 'N') = 'O') OR
99488         (NVL(l_enc_upg_option, 'N') = 'O')
99489       )
99490    THEN
99491    NULL;
99492    --
99493    --
99494    
99495   l_ccid := AcctDerRule_33(
99496            p_application_id           => p_application_id
99497          , p_ae_header_id             => l_ae_header_id 
99498 , p_source_59 => p_source_59
99499          , x_transaction_coa_id       => l_adr_transaction_coa_id
99500          , x_accounting_coa_id        => l_adr_accounting_coa_id
99501          , x_value_type_code          => l_adr_value_type_code
99502          , p_side                     => 'NA'
99503    );
99504 
99505    xla_ae_lines_pkg.set_ccid(
99506     p_code_combination_id          => l_ccid
99507   , p_value_type_code              => l_adr_value_type_code
99508   , p_transaction_coa_id           => l_adr_transaction_coa_id
99509   , p_accounting_coa_id            => l_adr_accounting_coa_id
99510   , p_adr_code                     => 'PI_RECEIVABLES'
99511   , p_adr_type_code                => 'S'
99512   , p_component_type               => l_component_type
99513   , p_component_code               => l_component_code
99514   , p_component_type_code          => l_component_type_code
99515   , p_component_appl_id            => l_component_appl_id
99516   , p_amb_context_code             => l_amb_context_code
99517   , p_side                         => 'NA'
99518   );
99519 
99520 
99521    --
99522    --
99523    END IF;
99524 
99525        --
99526        -- Update the line information that should be overwritten
99527        --
99528        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99529                                          p_header_num   => 1);
99530        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
99531 
99532        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99533 
99534        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
99535           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99536        END IF;
99537 
99538       --
99539       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99540       --
99541       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99542           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
99543       ELSE
99544           ---------------------------------------------------------------------------------------------------
99545           -- 4262811a Switch Sign
99546           ---------------------------------------------------------------------------------------------------
99547           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
99548           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99549                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99550           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99551                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99552           -- 5132302
99553           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99554                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99555 
99556       END IF;
99557 
99558       -- 4955764
99559       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99560       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99561 
99562 
99563       XLA_AE_LINES_PKG.ValidateCurrentLine;
99564       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99565 
99566       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99567                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99568                ,p_balance_type_code => l_balance_type_code);
99569 
99570    END IF;
99571 
99572    -----------------------------------------------------------------------------------------
99573    -- 4262811 Multiperiod Accounting
99574    -----------------------------------------------------------------------------------------
99575      -- No MPA option is assigned.
99576 
99577 
99578 END IF;
99579 END IF;
99580 --
99581 
99582 --
99583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99584    trace
99585       (p_msg      => 'END of AcctLineType_198'
99586       ,p_level    => C_LEVEL_PROCEDURE
99587       ,p_module   => l_log_module);
99588 END IF;
99589 --
99590 EXCEPTION
99591   WHEN xla_exceptions_pkg.application_exception THEN
99592       RAISE;
99593   WHEN OTHERS THEN
99594        xla_exceptions_pkg.raise_message
99595            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_198');
99596 END AcctLineType_198;
99597 --
99598 
99599 ---------------------------------------
99600 --
99601 -- PRIVATE FUNCTION
99602 --         AcctLineType_199
99603 --
99604 ---------------------------------------
99605 PROCEDURE AcctLineType_199 (
99606   p_application_id        IN NUMBER
99607  ,p_event_id              IN NUMBER
99608  ,p_calculate_acctd_flag  IN VARCHAR2
99609  ,p_calculate_g_l_flag    IN VARCHAR2
99610  ,p_actual_flag           IN OUT VARCHAR2
99611  ,p_balance_type_code     OUT VARCHAR2
99612  ,p_gain_or_loss_ref      OUT VARCHAR2
99613  
99614 --TRANSACTION_ID
99615  , p_source_1            IN NUMBER
99616 --Item Concatenated Segments
99617  , p_source_2            IN VARCHAR2
99618 --Transaction Quantity
99619  , p_source_3            IN NUMBER
99620 --Transaction Unit of Measure Code
99621  , p_source_4            IN VARCHAR2
99622 --Inventory Transaction Type Description
99623  , p_source_5            IN VARCHAR2
99624 --Cost Management Default Account
99625  , p_source_11            IN NUMBER
99626 --Applied to Application ID
99627  , p_source_79            IN NUMBER
99628 --Applied to Distribution Link Type
99629  , p_source_80            IN VARCHAR2
99630 --Applied to Entity Code
99631  , p_source_81            IN VARCHAR2
99632 --DISTRIBUTION_IDENTIFIER
99633  , p_source_84            IN NUMBER
99634 --Distribution Type
99635  , p_source_85            IN VARCHAR2
99636  , p_source_85_meaning    IN VARCHAR2
99637 --Encumbrance Reversal Amount Entered
99638  , p_source_87            IN NUMBER
99639 --Entered Currency Code
99640  , p_source_88            IN VARCHAR2
99641 --Transaction Encumbrance Reversal Amount
99642  , p_source_89            IN NUMBER
99643 --Entered Amount
99644  , p_source_91            IN NUMBER
99645 --Currency Conversion Date
99646  , p_source_92            IN DATE
99647 --Currency Conversion Rate
99648  , p_source_93            IN NUMBER
99649 --Currency Conversion Type
99650  , p_source_94            IN VARCHAR2
99651 --Accounted Amount
99652  , p_source_95            IN NUMBER
99653 --Accounting Line Type
99654  , p_source_97            IN NUMBER
99655 --Costing Encumbrance Upgrade Option
99656  , p_source_100            IN VARCHAR2
99657 --TXN_PO_DISTRIBUTION_ID
99658  , p_source_101            IN NUMBER
99659 --TXN_PO_HEADER_ID
99660  , p_source_102            IN NUMBER
99661 --Requisition Budget Account
99662  , p_source_103            IN NUMBER
99663 --Requisition Encumbrance Type Identifier
99664  , p_source_104            IN NUMBER
99665 )
99666 IS
99667 
99668 l_component_type              VARCHAR2(80);
99669 l_component_code              VARCHAR2(30);
99670 l_component_type_code         VARCHAR2(1);
99671 l_component_appl_id           INTEGER;
99672 l_amb_context_code            VARCHAR2(30);
99673 l_entity_code                 VARCHAR2(30);
99674 l_event_class_code            VARCHAR2(30);
99675 l_ae_header_id                NUMBER;
99676 l_event_type_code             VARCHAR2(30);
99677 l_line_definition_code        VARCHAR2(30);
99678 l_line_definition_owner_code  VARCHAR2(1);
99679 --
99680 -- adr variables
99681 l_segment                     VARCHAR2(30);
99682 l_ccid                        NUMBER;
99683 l_adr_transaction_coa_id      NUMBER;
99684 l_adr_accounting_coa_id       NUMBER;
99685 l_adr_flexfield_segment_code  VARCHAR2(30);
99686 l_adr_flex_value_set_id       NUMBER;
99687 l_adr_value_type_code         VARCHAR2(30);
99688 l_adr_value_combination_id    NUMBER;
99689 l_adr_value_segment_code      VARCHAR2(30);
99690 
99691 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
99692 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
99693 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
99694 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
99695 
99696 -- 4262811 Variables ------------------------------------------------------------------------------------------
99697 l_entered_amt_idx             NUMBER;
99698 l_accted_amt_idx              NUMBER;
99699 l_acc_rev_flag                VARCHAR2(1);
99700 l_accrual_line_num            NUMBER;
99701 l_tmp_amt                     NUMBER;
99702 l_acc_rev_natural_side_code   VARCHAR2(1);
99703 
99704 l_num_entries                 NUMBER;
99705 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
99706 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
99707 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
99708 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
99709 l_recog_line_1                NUMBER;
99710 l_recog_line_2                NUMBER;
99711 
99712 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
99713 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
99714 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
99715 
99716 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99717 
99718 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
99719 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
99720 
99721 ---------------------------------------------------------------------------------------------------------------
99722 
99723 
99724 --
99725 -- bulk performance
99726 --
99727 l_balance_type_code           VARCHAR2(1);
99728 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
99729 l_log_module                  VARCHAR2(240);
99730 
99731 --
99732 -- Upgrade strategy
99733 --
99734 l_actual_upg_option           VARCHAR2(1);
99735 l_enc_upg_option           VARCHAR2(1);
99736 
99737 --
99738 BEGIN
99739 --
99740 IF g_log_enabled THEN
99741       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_199';
99742 END IF;
99743 --
99744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99745 
99746       trace
99747          (p_msg      => 'BEGIN of AcctLineType_199'
99748          ,p_level    => C_LEVEL_PROCEDURE
99749          ,p_module   => l_log_module);
99750 
99751 END IF;
99752 --
99753 l_component_type             := 'AMB_JLT';
99754 l_component_code             := 'INTERORG_RECEIVABLES';
99755 l_component_type_code        := 'S';
99756 l_component_appl_id          :=  707;
99757 l_amb_context_code           := 'DEFAULT';
99758 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
99759 l_event_class_code           := 'DIR_INTERORG_RCPT';
99760 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
99761 l_line_definition_owner_code := 'S';
99762 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
99763 --
99764 l_balance_type_code          := 'A';
99765 l_segment                     := NULL;
99766 l_ccid                        := NULL;
99767 l_adr_transaction_coa_id      := NULL;
99768 l_adr_accounting_coa_id       := NULL;
99769 l_adr_flexfield_segment_code  := NULL;
99770 l_adr_flex_value_set_id       := NULL;
99771 l_adr_value_type_code         := NULL;
99772 l_adr_value_combination_id    := NULL;
99773 l_adr_value_segment_code      := NULL;
99774 
99775 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
99776 l_bflow_class_code           := '';    -- 4219869 Business Flow
99777 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
99778 l_budgetary_control_flag     := 'N';
99779 
99780 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
99781 l_bflow_applied_to_amt       := NULL; -- 5132302
99782 l_entered_amt_idx            := NULL;          -- 4262811
99783 l_accted_amt_idx             := NULL;          -- 4262811
99784 l_acc_rev_flag               := NULL;          -- 4262811
99785 l_accrual_line_num           := NULL;          -- 4262811
99786 l_tmp_amt                    := NULL;          -- 4262811
99787 --
99788  
99789 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99790     l_balance_type_code <> 'B' THEN
99791 IF NVL(p_source_97,9E125) =  10
99792  THEN 
99793 
99794    --
99795    XLA_AE_LINES_PKG.SetNewLine;
99796 
99797    p_balance_type_code          := l_balance_type_code;
99798    -- set the flag so later we will know whether the gain loss line needs to be created
99799    
99800    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99801      p_actual_flag :='A';
99802    END IF;
99803 
99804    --
99805    -- bulk performance
99806    --
99807    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99808                                       p_header_num   => 0); -- 4262811
99809    --
99810    -- set accounting line options
99811    --
99812    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99813            p_natural_side_code          => 'D'
99814          , p_gain_or_loss_flag          => 'N'
99815          , p_gl_transfer_mode_code      => 'S'
99816          , p_acct_entry_type_code       => 'A'
99817          , p_switch_side_flag           => 'Y'
99818          , p_merge_duplicate_code       => 'N'
99819          );
99820    --
99821    l_acc_rev_natural_side_code := 'C';  -- 4262811
99822    -- 
99823    --
99824    -- set accounting line type info
99825    --
99826    xla_ae_lines_pkg.SetAcctLineType
99827       (p_component_type             => l_component_type
99828       ,p_event_type_code            => l_event_type_code
99829       ,p_line_definition_owner_code => l_line_definition_owner_code
99830       ,p_line_definition_code       => l_line_definition_code
99831       ,p_accounting_line_code       => l_component_code
99832       ,p_accounting_line_type_code  => l_component_type_code
99833       ,p_accounting_line_appl_id    => l_component_appl_id
99834       ,p_amb_context_code           => l_amb_context_code
99835       ,p_entity_code                => l_entity_code
99836       ,p_event_class_code           => l_event_class_code);
99837    --
99838    -- set accounting class
99839    --
99840    xla_ae_lines_pkg.SetAcctClass(
99841            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
99842          , p_ae_header_id           => l_ae_header_id
99843          );
99844 
99845    --
99846    -- set rounding class
99847    --
99848    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99849                       'INTERORG_RECEIVABLES';
99850 
99851    --
99852    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99853    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99854    --
99855    -- bulk performance
99856    --
99857    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99858 
99859    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99860       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99861 
99862    -- 4955764
99863    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99864       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99865 
99866    -- 4458381 Public Sector Enh
99867    
99868    --
99869    -- set accounting attributes for the line type
99870    --
99871    l_entered_amt_idx := 17;
99872    l_accted_amt_idx  := 22;
99873    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
99874    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
99875    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
99876    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
99877    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
99878    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
99879    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
99880    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
99881    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
99882    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
99883    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
99884    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
99885    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
99886    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
99887    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
99888    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
99889    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
99890    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
99891    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
99892    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
99893    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
99894    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
99895    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
99896    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
99897    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
99898    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
99899    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
99900    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
99901    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
99902    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
99903    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
99904    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
99905    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
99906    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
99907    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
99908    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
99909    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
99910    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
99911    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
99912    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
99913    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
99914    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
99915    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
99916    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
99917    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
99918    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
99919    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
99920    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
99921    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
99922 
99923    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99924    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99925 
99926    ---------------------------------------------------------------------------------------------------------------
99927    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99928    ---------------------------------------------------------------------------------------------------------------
99929    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99930 
99931    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99932    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99933 
99934    IF xla_accounting_cache_pkg.GetValueChar
99935          (p_source_code         => 'LEDGER_CATEGORY_CODE'
99936          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99937    AND l_bflow_method_code = 'PRIOR_ENTRY'
99938 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99939    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99940          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99941        )
99942    THEN
99943          xla_ae_lines_pkg.BflowUpgEntry
99944            (p_business_method_code    => l_bflow_method_code
99945            ,p_business_class_code     => l_bflow_class_code
99946            ,p_balance_type            => l_balance_type_code);
99947    ELSE
99948       NULL;
99949 -- No business flow processing for business flow method of NONE.
99950    END IF;
99951 
99952    --
99953    -- call analytical criteria
99954    --
99955    
99956    --
99957    -- call description
99958    --
99959    
99960 xla_ae_lines_pkg.SetLineDescription(
99961    p_ae_header_id => l_ae_header_id
99962   ,p_description  => Description_1 (
99963      p_application_id         => p_application_id
99964    , p_ae_header_id           => l_ae_header_id 
99965 , p_source_1 => p_source_1
99966 , p_source_2 => p_source_2
99967 , p_source_3 => p_source_3
99968 , p_source_4 => p_source_4
99969 , p_source_5 => p_source_5
99970    )
99971 );
99972 
99973 
99974    --
99975    -- call ADRs
99976    -- Bug 4922099
99977    --
99978    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99979         (NVL(l_actual_upg_option, 'N') = 'O') OR
99980         (NVL(l_enc_upg_option, 'N') = 'O')
99981       )
99982    THEN
99983    NULL;
99984    --
99985    --
99986    
99987   l_ccid := AcctDerRule_6(
99988            p_application_id           => p_application_id
99989          , p_ae_header_id             => l_ae_header_id 
99990 , p_source_11 => p_source_11
99991          , x_transaction_coa_id       => l_adr_transaction_coa_id
99992          , x_accounting_coa_id        => l_adr_accounting_coa_id
99993          , x_value_type_code          => l_adr_value_type_code
99994          , p_side                     => 'NA'
99995    );
99996 
99997    xla_ae_lines_pkg.set_ccid(
99998     p_code_combination_id          => l_ccid
99999   , p_value_type_code              => l_adr_value_type_code
100000   , p_transaction_coa_id           => l_adr_transaction_coa_id
100001   , p_accounting_coa_id            => l_adr_accounting_coa_id
100002   , p_adr_code                     => 'CST_DEFAULT'
100003   , p_adr_type_code                => 'S'
100004   , p_component_type               => l_component_type
100005   , p_component_code               => l_component_code
100006   , p_component_type_code          => l_component_type_code
100007   , p_component_appl_id            => l_component_appl_id
100008   , p_amb_context_code             => l_amb_context_code
100009   , p_side                         => 'NA'
100010   );
100011 
100012 
100013    --
100014    --
100015    END IF;
100016    --
100017    -- Bug 4922099
100018    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100019           (NVL(l_enc_upg_option, 'N') = 'O')
100020         ) AND
100021         (l_bflow_method_code = 'PRIOR_ENTRY')
100022       )
100023    THEN
100024       IF
100025       --
100026       1 = 2
100027       --
100028       THEN
100029       xla_accounting_err_pkg.build_message
100030                                     (p_appli_s_name            => 'XLA'
100031                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100032                                     ,p_token_1                 => 'LINE_NUMBER'
100033                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100034                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100035                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100036                                                                              l_component_type
100037                                                                             ,l_component_code
100038                                                                             ,l_component_type_code
100039                                                                             ,l_component_appl_id
100040                                                                             ,l_amb_context_code
100041                                                                             ,l_entity_code
100042                                                                             ,l_event_class_code
100043                                                                            )
100044                                     ,p_token_3                 => 'OWNER'
100045                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100046                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100047                                                                           ,p_lookup_code    => l_component_type_code
100048                                                                          )
100049                                     ,p_token_4                 => 'PRODUCT_NAME'
100050                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100051                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100052                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100053                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100054                                     ,p_ae_header_id            =>  NULL
100055                                        );
100056 
100057         IF (C_LEVEL_ERROR>= g_log_level) THEN
100058                  trace
100059                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100060                       ,p_level    => C_LEVEL_ERROR
100061                       ,p_module   => l_log_module);
100062         END IF;
100063       END IF;
100064    END IF;
100065    --
100066    --
100067    ------------------------------------------------------------------------------------------------
100068    -- 4219869 Business Flow
100069    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100070    -- Prior Entry.  Currently, the following code is always generated.
100071    ------------------------------------------------------------------------------------------------
100072    XLA_AE_LINES_PKG.ValidateCurrentLine;
100073 
100074    ------------------------------------------------------------------------------------
100075    -- 4219869 Business Flow
100076    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100077    ------------------------------------------------------------------------------------
100078    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100079 
100080    ----------------------------------------------------------------------------------
100081    -- 4219869 Business Flow
100082    -- Update journal entry status -- Need to generate this within IF <condition>
100083    ----------------------------------------------------------------------------------
100084    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100085          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100086          ,p_balance_type_code => l_balance_type_code
100087          );
100088 
100089    -------------------------------------------------------------------------------------------
100090    -- 4262811 - Generate the Accrual Reversal lines
100091    -------------------------------------------------------------------------------------------
100092    BEGIN
100093       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100094                               (g_array_event(p_event_id).array_value_num('header_index'));
100095       IF l_acc_rev_flag IS NULL THEN
100096          l_acc_rev_flag := 'N';
100097       END IF;
100098    EXCEPTION
100099       WHEN OTHERS THEN
100100          l_acc_rev_flag := 'N';
100101    END;
100102    --
100103    IF (l_acc_rev_flag = 'Y') THEN
100104 
100105        -- 4645092  ------------------------------------------------------------------------------
100106        -- To allow MPA report to determine if it should generate report process
100107        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100108        ------------------------------------------------------------------------------------------
100109 
100110        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100111        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100112    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
100113    -- call ADRs
100114    -- Bug 4922099
100115    --
100116    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100117         (NVL(l_actual_upg_option, 'N') = 'O') OR
100118         (NVL(l_enc_upg_option, 'N') = 'O')
100119       )
100120    THEN
100121    NULL;
100122    --
100123    --
100124    
100125   l_ccid := AcctDerRule_6(
100126            p_application_id           => p_application_id
100127          , p_ae_header_id             => l_ae_header_id 
100128 , p_source_11 => p_source_11
100129          , x_transaction_coa_id       => l_adr_transaction_coa_id
100130          , x_accounting_coa_id        => l_adr_accounting_coa_id
100131          , x_value_type_code          => l_adr_value_type_code
100132          , p_side                     => 'NA'
100133    );
100134 
100135    xla_ae_lines_pkg.set_ccid(
100136     p_code_combination_id          => l_ccid
100137   , p_value_type_code              => l_adr_value_type_code
100138   , p_transaction_coa_id           => l_adr_transaction_coa_id
100139   , p_accounting_coa_id            => l_adr_accounting_coa_id
100140   , p_adr_code                     => 'CST_DEFAULT'
100141   , p_adr_type_code                => 'S'
100142   , p_component_type               => l_component_type
100143   , p_component_code               => l_component_code
100144   , p_component_type_code          => l_component_type_code
100145   , p_component_appl_id            => l_component_appl_id
100146   , p_amb_context_code             => l_amb_context_code
100147   , p_side                         => 'NA'
100148   );
100149 
100150 
100151    --
100152    --
100153    END IF;
100154 
100155        --
100156        -- Update the line information that should be overwritten
100157        --
100158        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100159                                          p_header_num   => 1);
100160        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
100161 
100162        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100163 
100164        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
100165           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100166        END IF;
100167 
100168       --
100169       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100170       --
100171       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100172           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
100173       ELSE
100174           ---------------------------------------------------------------------------------------------------
100175           -- 4262811a Switch Sign
100176           ---------------------------------------------------------------------------------------------------
100177           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
100178           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100179                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100180           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100181                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100182           -- 5132302
100183           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100184                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100185 
100186       END IF;
100187 
100188       -- 4955764
100189       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100190       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100191 
100192 
100193       XLA_AE_LINES_PKG.ValidateCurrentLine;
100194       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100195 
100196       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100197                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100198                ,p_balance_type_code => l_balance_type_code);
100199 
100200    END IF;
100201 
100202    -----------------------------------------------------------------------------------------
100203    -- 4262811 Multiperiod Accounting
100204    -----------------------------------------------------------------------------------------
100205      -- No MPA option is assigned.
100206 
100207 
100208 END IF;
100209 END IF;
100210 --
100211 
100212 --
100213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100214    trace
100215       (p_msg      => 'END of AcctLineType_199'
100216       ,p_level    => C_LEVEL_PROCEDURE
100217       ,p_module   => l_log_module);
100218 END IF;
100219 --
100220 EXCEPTION
100221   WHEN xla_exceptions_pkg.application_exception THEN
100222       RAISE;
100223   WHEN OTHERS THEN
100224        xla_exceptions_pkg.raise_message
100225            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_199');
100226 END AcctLineType_199;
100227 --
100228 
100229 ---------------------------------------
100230 --
100231 -- PRIVATE FUNCTION
100232 --         AcctLineType_200
100233 --
100234 ---------------------------------------
100235 PROCEDURE AcctLineType_200 (
100236   p_application_id        IN NUMBER
100237  ,p_event_id              IN NUMBER
100238  ,p_calculate_acctd_flag  IN VARCHAR2
100239  ,p_calculate_g_l_flag    IN VARCHAR2
100240  ,p_actual_flag           IN OUT VARCHAR2
100241  ,p_balance_type_code     OUT VARCHAR2
100242  ,p_gain_or_loss_ref      OUT VARCHAR2
100243  
100244 --TRANSACTION_ID
100245  , p_source_1            IN NUMBER
100246 --Item Concatenated Segments
100247  , p_source_2            IN VARCHAR2
100248 --Transaction Quantity
100249  , p_source_3            IN NUMBER
100250 --Transaction Unit of Measure Code
100251  , p_source_4            IN VARCHAR2
100252 --Inventory Transaction Type Description
100253  , p_source_5            IN VARCHAR2
100254 --Interorg Receivables Account
100255  , p_source_59            IN NUMBER
100256 --DISTRIBUTION_IDENTIFIER
100257  , p_source_84            IN NUMBER
100258 --Distribution Type
100259  , p_source_85            IN VARCHAR2
100260  , p_source_85_meaning    IN VARCHAR2
100261 --Entered Currency Code
100262  , p_source_88            IN VARCHAR2
100263 --Entered Amount
100264  , p_source_91            IN NUMBER
100265 --Currency Conversion Date
100266  , p_source_92            IN DATE
100267 --Currency Conversion Rate
100268  , p_source_93            IN NUMBER
100269 --Currency Conversion Type
100270  , p_source_94            IN VARCHAR2
100271 --Accounted Amount
100272  , p_source_95            IN NUMBER
100273 --Accounting Line Type
100274  , p_source_97            IN NUMBER
100275 )
100276 IS
100277 
100278 l_component_type              VARCHAR2(80);
100279 l_component_code              VARCHAR2(30);
100280 l_component_type_code         VARCHAR2(1);
100281 l_component_appl_id           INTEGER;
100282 l_amb_context_code            VARCHAR2(30);
100283 l_entity_code                 VARCHAR2(30);
100284 l_event_class_code            VARCHAR2(30);
100285 l_ae_header_id                NUMBER;
100286 l_event_type_code             VARCHAR2(30);
100287 l_line_definition_code        VARCHAR2(30);
100288 l_line_definition_owner_code  VARCHAR2(1);
100289 --
100290 -- adr variables
100291 l_segment                     VARCHAR2(30);
100292 l_ccid                        NUMBER;
100293 l_adr_transaction_coa_id      NUMBER;
100294 l_adr_accounting_coa_id       NUMBER;
100295 l_adr_flexfield_segment_code  VARCHAR2(30);
100296 l_adr_flex_value_set_id       NUMBER;
100297 l_adr_value_type_code         VARCHAR2(30);
100298 l_adr_value_combination_id    NUMBER;
100299 l_adr_value_segment_code      VARCHAR2(30);
100300 
100301 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
100302 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
100303 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
100304 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
100305 
100306 -- 4262811 Variables ------------------------------------------------------------------------------------------
100307 l_entered_amt_idx             NUMBER;
100308 l_accted_amt_idx              NUMBER;
100309 l_acc_rev_flag                VARCHAR2(1);
100310 l_accrual_line_num            NUMBER;
100311 l_tmp_amt                     NUMBER;
100312 l_acc_rev_natural_side_code   VARCHAR2(1);
100313 
100314 l_num_entries                 NUMBER;
100315 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
100316 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
100317 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
100318 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
100319 l_recog_line_1                NUMBER;
100320 l_recog_line_2                NUMBER;
100321 
100322 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
100323 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
100324 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
100325 
100326 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100327 
100328 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
100329 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
100330 
100331 ---------------------------------------------------------------------------------------------------------------
100332 
100333 
100334 --
100335 -- bulk performance
100336 --
100337 l_balance_type_code           VARCHAR2(1);
100338 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
100339 l_log_module                  VARCHAR2(240);
100340 
100341 --
100342 -- Upgrade strategy
100343 --
100344 l_actual_upg_option           VARCHAR2(1);
100345 l_enc_upg_option           VARCHAR2(1);
100346 
100347 --
100348 BEGIN
100349 --
100350 IF g_log_enabled THEN
100351       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_200';
100352 END IF;
100353 --
100354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100355 
100356       trace
100357          (p_msg      => 'BEGIN of AcctLineType_200'
100358          ,p_level    => C_LEVEL_PROCEDURE
100359          ,p_module   => l_log_module);
100360 
100361 END IF;
100362 --
100363 l_component_type             := 'AMB_JLT';
100364 l_component_code             := 'INTERORG_RECEIVABLES';
100365 l_component_type_code        := 'S';
100366 l_component_appl_id          :=  707;
100367 l_amb_context_code           := 'DEFAULT';
100368 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
100369 l_event_class_code           := 'USER_DEFINE';
100370 l_event_type_code            := 'UDIR_INTERORG_RCPT';
100371 l_line_definition_owner_code := 'S';
100372 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
100373 --
100374 l_balance_type_code          := 'A';
100375 l_segment                     := NULL;
100376 l_ccid                        := NULL;
100377 l_adr_transaction_coa_id      := NULL;
100378 l_adr_accounting_coa_id       := NULL;
100379 l_adr_flexfield_segment_code  := NULL;
100380 l_adr_flex_value_set_id       := NULL;
100381 l_adr_value_type_code         := NULL;
100382 l_adr_value_combination_id    := NULL;
100383 l_adr_value_segment_code      := NULL;
100384 
100385 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
100386 l_bflow_class_code           := '';    -- 4219869 Business Flow
100387 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
100388 l_budgetary_control_flag     := 'N';
100389 
100390 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
100391 l_bflow_applied_to_amt       := NULL; -- 5132302
100392 l_entered_amt_idx            := NULL;          -- 4262811
100393 l_accted_amt_idx             := NULL;          -- 4262811
100394 l_acc_rev_flag               := NULL;          -- 4262811
100395 l_accrual_line_num           := NULL;          -- 4262811
100396 l_tmp_amt                    := NULL;          -- 4262811
100397 --
100398  
100399 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100400     l_balance_type_code <> 'B' THEN
100401 IF NVL(p_source_97,9E125) =  10
100402  THEN 
100403 
100404    --
100405    XLA_AE_LINES_PKG.SetNewLine;
100406 
100407    p_balance_type_code          := l_balance_type_code;
100408    -- set the flag so later we will know whether the gain loss line needs to be created
100409    
100410    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100411      p_actual_flag :='A';
100412    END IF;
100413 
100414    --
100415    -- bulk performance
100416    --
100417    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100418                                       p_header_num   => 0); -- 4262811
100419    --
100420    -- set accounting line options
100421    --
100422    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100423            p_natural_side_code          => 'D'
100424          , p_gain_or_loss_flag          => 'N'
100425          , p_gl_transfer_mode_code      => 'S'
100426          , p_acct_entry_type_code       => 'A'
100427          , p_switch_side_flag           => 'Y'
100428          , p_merge_duplicate_code       => 'N'
100429          );
100430    --
100431    l_acc_rev_natural_side_code := 'C';  -- 4262811
100432    -- 
100433    --
100434    -- set accounting line type info
100435    --
100436    xla_ae_lines_pkg.SetAcctLineType
100437       (p_component_type             => l_component_type
100438       ,p_event_type_code            => l_event_type_code
100439       ,p_line_definition_owner_code => l_line_definition_owner_code
100440       ,p_line_definition_code       => l_line_definition_code
100441       ,p_accounting_line_code       => l_component_code
100442       ,p_accounting_line_type_code  => l_component_type_code
100443       ,p_accounting_line_appl_id    => l_component_appl_id
100444       ,p_amb_context_code           => l_amb_context_code
100445       ,p_entity_code                => l_entity_code
100446       ,p_event_class_code           => l_event_class_code);
100447    --
100448    -- set accounting class
100449    --
100450    xla_ae_lines_pkg.SetAcctClass(
100451            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
100452          , p_ae_header_id           => l_ae_header_id
100453          );
100454 
100455    --
100456    -- set rounding class
100457    --
100458    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100459                       'INTERORG_RECEIVABLES';
100460 
100461    --
100462    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100463    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100464    --
100465    -- bulk performance
100466    --
100467    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100468 
100469    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100470       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100471 
100472    -- 4955764
100473    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100474       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100475 
100476    -- 4458381 Public Sector Enh
100477    
100478    --
100479    -- set accounting attributes for the line type
100480    --
100481    l_entered_amt_idx := 3;
100482    l_accted_amt_idx  := 8;
100483    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
100484    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100485    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
100486    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100487    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
100488    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100489    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
100490    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100491    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
100492    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100493    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
100494    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100495    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
100496    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100497    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
100498    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100499    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
100500 
100501    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100502    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100503 
100504    ---------------------------------------------------------------------------------------------------------------
100505    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100506    ---------------------------------------------------------------------------------------------------------------
100507    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100508 
100509    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100510    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100511 
100512    IF xla_accounting_cache_pkg.GetValueChar
100513          (p_source_code         => 'LEDGER_CATEGORY_CODE'
100514          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100515    AND l_bflow_method_code = 'PRIOR_ENTRY'
100516 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100517    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100518          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100519        )
100520    THEN
100521          xla_ae_lines_pkg.BflowUpgEntry
100522            (p_business_method_code    => l_bflow_method_code
100523            ,p_business_class_code     => l_bflow_class_code
100524            ,p_balance_type            => l_balance_type_code);
100525    ELSE
100526       NULL;
100527 -- No business flow processing for business flow method of NONE.
100528    END IF;
100529 
100530    --
100531    -- call analytical criteria
100532    --
100533    
100534    --
100535    -- call description
100536    --
100537    
100538 xla_ae_lines_pkg.SetLineDescription(
100539    p_ae_header_id => l_ae_header_id
100540   ,p_description  => Description_1 (
100541      p_application_id         => p_application_id
100542    , p_ae_header_id           => l_ae_header_id 
100543 , p_source_1 => p_source_1
100544 , p_source_2 => p_source_2
100545 , p_source_3 => p_source_3
100546 , p_source_4 => p_source_4
100547 , p_source_5 => p_source_5
100548    )
100549 );
100550 
100551 
100552    --
100553    -- call ADRs
100554    -- Bug 4922099
100555    --
100556    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100557         (NVL(l_actual_upg_option, 'N') = 'O') OR
100558         (NVL(l_enc_upg_option, 'N') = 'O')
100559       )
100560    THEN
100561    NULL;
100562    --
100563    --
100564    
100565   l_ccid := AcctDerRule_33(
100566            p_application_id           => p_application_id
100567          , p_ae_header_id             => l_ae_header_id 
100568 , p_source_59 => p_source_59
100569          , x_transaction_coa_id       => l_adr_transaction_coa_id
100570          , x_accounting_coa_id        => l_adr_accounting_coa_id
100571          , x_value_type_code          => l_adr_value_type_code
100572          , p_side                     => 'NA'
100573    );
100574 
100575    xla_ae_lines_pkg.set_ccid(
100576     p_code_combination_id          => l_ccid
100577   , p_value_type_code              => l_adr_value_type_code
100578   , p_transaction_coa_id           => l_adr_transaction_coa_id
100579   , p_accounting_coa_id            => l_adr_accounting_coa_id
100580   , p_adr_code                     => 'PI_RECEIVABLES'
100581   , p_adr_type_code                => 'S'
100582   , p_component_type               => l_component_type
100583   , p_component_code               => l_component_code
100584   , p_component_type_code          => l_component_type_code
100585   , p_component_appl_id            => l_component_appl_id
100586   , p_amb_context_code             => l_amb_context_code
100587   , p_side                         => 'NA'
100588   );
100589 
100590 
100591    --
100592    --
100593    END IF;
100594    --
100595    -- Bug 4922099
100596    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100597           (NVL(l_enc_upg_option, 'N') = 'O')
100598         ) AND
100599         (l_bflow_method_code = 'PRIOR_ENTRY')
100600       )
100601    THEN
100602       IF
100603       --
100604       1 = 2
100605       --
100606       THEN
100607       xla_accounting_err_pkg.build_message
100608                                     (p_appli_s_name            => 'XLA'
100609                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100610                                     ,p_token_1                 => 'LINE_NUMBER'
100611                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
100612                                     ,p_token_2                 => 'LINE_TYPE_NAME'
100613                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
100614                                                                              l_component_type
100615                                                                             ,l_component_code
100616                                                                             ,l_component_type_code
100617                                                                             ,l_component_appl_id
100618                                                                             ,l_amb_context_code
100619                                                                             ,l_entity_code
100620                                                                             ,l_event_class_code
100621                                                                            )
100622                                     ,p_token_3                 => 'OWNER'
100623                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
100624                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
100625                                                                           ,p_lookup_code    => l_component_type_code
100626                                                                          )
100627                                     ,p_token_4                 => 'PRODUCT_NAME'
100628                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100629                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100630                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100631                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100632                                     ,p_ae_header_id            =>  NULL
100633                                        );
100634 
100635         IF (C_LEVEL_ERROR>= g_log_level) THEN
100636                  trace
100637                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100638                       ,p_level    => C_LEVEL_ERROR
100639                       ,p_module   => l_log_module);
100640         END IF;
100641       END IF;
100642    END IF;
100643    --
100644    --
100645    ------------------------------------------------------------------------------------------------
100646    -- 4219869 Business Flow
100647    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100648    -- Prior Entry.  Currently, the following code is always generated.
100649    ------------------------------------------------------------------------------------------------
100650    XLA_AE_LINES_PKG.ValidateCurrentLine;
100651 
100652    ------------------------------------------------------------------------------------
100653    -- 4219869 Business Flow
100654    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100655    ------------------------------------------------------------------------------------
100656    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100657 
100658    ----------------------------------------------------------------------------------
100659    -- 4219869 Business Flow
100660    -- Update journal entry status -- Need to generate this within IF <condition>
100661    ----------------------------------------------------------------------------------
100662    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100663          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100664          ,p_balance_type_code => l_balance_type_code
100665          );
100666 
100667    -------------------------------------------------------------------------------------------
100668    -- 4262811 - Generate the Accrual Reversal lines
100669    -------------------------------------------------------------------------------------------
100670    BEGIN
100671       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100672                               (g_array_event(p_event_id).array_value_num('header_index'));
100673       IF l_acc_rev_flag IS NULL THEN
100674          l_acc_rev_flag := 'N';
100675       END IF;
100676    EXCEPTION
100677       WHEN OTHERS THEN
100678          l_acc_rev_flag := 'N';
100679    END;
100680    --
100681    IF (l_acc_rev_flag = 'Y') THEN
100682 
100683        -- 4645092  ------------------------------------------------------------------------------
100684        -- To allow MPA report to determine if it should generate report process
100685        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100686        ------------------------------------------------------------------------------------------
100687 
100688        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100689        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100690    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
100691    -- call ADRs
100692    -- Bug 4922099
100693    --
100694    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100695         (NVL(l_actual_upg_option, 'N') = 'O') OR
100696         (NVL(l_enc_upg_option, 'N') = 'O')
100697       )
100698    THEN
100699    NULL;
100700    --
100701    --
100702    
100703   l_ccid := AcctDerRule_33(
100704            p_application_id           => p_application_id
100705          , p_ae_header_id             => l_ae_header_id 
100706 , p_source_59 => p_source_59
100707          , x_transaction_coa_id       => l_adr_transaction_coa_id
100708          , x_accounting_coa_id        => l_adr_accounting_coa_id
100709          , x_value_type_code          => l_adr_value_type_code
100710          , p_side                     => 'NA'
100711    );
100712 
100713    xla_ae_lines_pkg.set_ccid(
100714     p_code_combination_id          => l_ccid
100715   , p_value_type_code              => l_adr_value_type_code
100716   , p_transaction_coa_id           => l_adr_transaction_coa_id
100717   , p_accounting_coa_id            => l_adr_accounting_coa_id
100718   , p_adr_code                     => 'PI_RECEIVABLES'
100719   , p_adr_type_code                => 'S'
100720   , p_component_type               => l_component_type
100721   , p_component_code               => l_component_code
100722   , p_component_type_code          => l_component_type_code
100723   , p_component_appl_id            => l_component_appl_id
100724   , p_amb_context_code             => l_amb_context_code
100725   , p_side                         => 'NA'
100726   );
100727 
100728 
100729    --
100730    --
100731    END IF;
100732 
100733        --
100734        -- Update the line information that should be overwritten
100735        --
100736        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100737                                          p_header_num   => 1);
100738        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
100739 
100740        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100741 
100742        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
100743           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100744        END IF;
100745 
100746       --
100747       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100748       --
100749       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100750           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
100751       ELSE
100752           ---------------------------------------------------------------------------------------------------
100753           -- 4262811a Switch Sign
100754           ---------------------------------------------------------------------------------------------------
100755           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
100756           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100757                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100758           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100759                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100760           -- 5132302
100761           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100762                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100763 
100764       END IF;
100765 
100766       -- 4955764
100767       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100768       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100769 
100770 
100771       XLA_AE_LINES_PKG.ValidateCurrentLine;
100772       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100773 
100774       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100775                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100776                ,p_balance_type_code => l_balance_type_code);
100777 
100778    END IF;
100779 
100780    -----------------------------------------------------------------------------------------
100781    -- 4262811 Multiperiod Accounting
100782    -----------------------------------------------------------------------------------------
100783      -- No MPA option is assigned.
100784 
100785 
100786 END IF;
100787 END IF;
100788 --
100789 
100790 --
100791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100792    trace
100793       (p_msg      => 'END of AcctLineType_200'
100794       ,p_level    => C_LEVEL_PROCEDURE
100795       ,p_module   => l_log_module);
100796 END IF;
100797 --
100798 EXCEPTION
100799   WHEN xla_exceptions_pkg.application_exception THEN
100800       RAISE;
100801   WHEN OTHERS THEN
100802        xla_exceptions_pkg.raise_message
100803            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_200');
100804 END AcctLineType_200;
100805 --
100806 
100807 ---------------------------------------
100808 --
100809 -- PRIVATE FUNCTION
100810 --         AcctLineType_201
100811 --
100812 ---------------------------------------
100813 PROCEDURE AcctLineType_201 (
100814   p_application_id        IN NUMBER
100815  ,p_event_id              IN NUMBER
100816  ,p_calculate_acctd_flag  IN VARCHAR2
100817  ,p_calculate_g_l_flag    IN VARCHAR2
100818  ,p_actual_flag           IN OUT VARCHAR2
100819  ,p_balance_type_code     OUT VARCHAR2
100820  ,p_gain_or_loss_ref      OUT VARCHAR2
100821  
100822 --TRANSACTION_ID
100823  , p_source_1            IN NUMBER
100824 --Item Concatenated Segments
100825  , p_source_2            IN VARCHAR2
100826 --Transaction Quantity
100827  , p_source_3            IN NUMBER
100828 --Transaction Unit of Measure Code
100829  , p_source_4            IN VARCHAR2
100830 --Inventory Transaction Type Description
100831  , p_source_5            IN VARCHAR2
100832 --Cost Management Default Account
100833  , p_source_11            IN NUMBER
100834 --DISTRIBUTION_IDENTIFIER
100835  , p_source_84            IN NUMBER
100836 --Distribution Type
100837  , p_source_85            IN VARCHAR2
100838  , p_source_85_meaning    IN VARCHAR2
100839 --Entered Currency Code
100840  , p_source_88            IN VARCHAR2
100841 --Entered Amount
100842  , p_source_91            IN NUMBER
100843 --Currency Conversion Date
100844  , p_source_92            IN DATE
100845 --Currency Conversion Rate
100846  , p_source_93            IN NUMBER
100847 --Currency Conversion Type
100848  , p_source_94            IN VARCHAR2
100849 --Accounted Amount
100850  , p_source_95            IN NUMBER
100851 --Accounting Line Type
100852  , p_source_97            IN NUMBER
100853 )
100854 IS
100855 
100856 l_component_type              VARCHAR2(80);
100857 l_component_code              VARCHAR2(30);
100858 l_component_type_code         VARCHAR2(1);
100859 l_component_appl_id           INTEGER;
100860 l_amb_context_code            VARCHAR2(30);
100861 l_entity_code                 VARCHAR2(30);
100862 l_event_class_code            VARCHAR2(30);
100863 l_ae_header_id                NUMBER;
100864 l_event_type_code             VARCHAR2(30);
100865 l_line_definition_code        VARCHAR2(30);
100866 l_line_definition_owner_code  VARCHAR2(1);
100867 --
100868 -- adr variables
100869 l_segment                     VARCHAR2(30);
100870 l_ccid                        NUMBER;
100871 l_adr_transaction_coa_id      NUMBER;
100872 l_adr_accounting_coa_id       NUMBER;
100873 l_adr_flexfield_segment_code  VARCHAR2(30);
100874 l_adr_flex_value_set_id       NUMBER;
100875 l_adr_value_type_code         VARCHAR2(30);
100876 l_adr_value_combination_id    NUMBER;
100877 l_adr_value_segment_code      VARCHAR2(30);
100878 
100879 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
100880 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
100881 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
100882 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
100883 
100884 -- 4262811 Variables ------------------------------------------------------------------------------------------
100885 l_entered_amt_idx             NUMBER;
100886 l_accted_amt_idx              NUMBER;
100887 l_acc_rev_flag                VARCHAR2(1);
100888 l_accrual_line_num            NUMBER;
100889 l_tmp_amt                     NUMBER;
100890 l_acc_rev_natural_side_code   VARCHAR2(1);
100891 
100892 l_num_entries                 NUMBER;
100893 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
100894 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
100895 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
100896 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
100897 l_recog_line_1                NUMBER;
100898 l_recog_line_2                NUMBER;
100899 
100900 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
100901 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
100902 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
100903 
100904 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100905 
100906 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
100907 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
100908 
100909 ---------------------------------------------------------------------------------------------------------------
100910 
100911 
100912 --
100913 -- bulk performance
100914 --
100915 l_balance_type_code           VARCHAR2(1);
100916 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
100917 l_log_module                  VARCHAR2(240);
100918 
100919 --
100920 -- Upgrade strategy
100921 --
100922 l_actual_upg_option           VARCHAR2(1);
100923 l_enc_upg_option           VARCHAR2(1);
100924 
100925 --
100926 BEGIN
100927 --
100928 IF g_log_enabled THEN
100929       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_201';
100930 END IF;
100931 --
100932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100933 
100934       trace
100935          (p_msg      => 'BEGIN of AcctLineType_201'
100936          ,p_level    => C_LEVEL_PROCEDURE
100937          ,p_module   => l_log_module);
100938 
100939 END IF;
100940 --
100941 l_component_type             := 'AMB_JLT';
100942 l_component_code             := 'INTERORG_RECEIVABLES';
100943 l_component_type_code        := 'S';
100944 l_component_appl_id          :=  707;
100945 l_amb_context_code           := 'DEFAULT';
100946 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
100947 l_event_class_code           := 'INT_ORDER_TO_EXP';
100948 l_event_type_code            := 'EXP_REQ_RCPT_NO_TP';
100949 l_line_definition_owner_code := 'S';
100950 l_line_definition_code       := 'PI_EXP_REQ_RCPT_NO_TP';
100951 --
100952 l_balance_type_code          := 'A';
100953 l_segment                     := NULL;
100954 l_ccid                        := NULL;
100955 l_adr_transaction_coa_id      := NULL;
100956 l_adr_accounting_coa_id       := NULL;
100957 l_adr_flexfield_segment_code  := NULL;
100958 l_adr_flex_value_set_id       := NULL;
100959 l_adr_value_type_code         := NULL;
100960 l_adr_value_combination_id    := NULL;
100961 l_adr_value_segment_code      := NULL;
100962 
100963 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
100964 l_bflow_class_code           := '';    -- 4219869 Business Flow
100965 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
100966 l_budgetary_control_flag     := 'N';
100967 
100968 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
100969 l_bflow_applied_to_amt       := NULL; -- 5132302
100970 l_entered_amt_idx            := NULL;          -- 4262811
100971 l_accted_amt_idx             := NULL;          -- 4262811
100972 l_acc_rev_flag               := NULL;          -- 4262811
100973 l_accrual_line_num           := NULL;          -- 4262811
100974 l_tmp_amt                    := NULL;          -- 4262811
100975 --
100976  
100977 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100978     l_balance_type_code <> 'B' THEN
100979 IF NVL(p_source_97,9E125) =  10
100980  THEN 
100981 
100982    --
100983    XLA_AE_LINES_PKG.SetNewLine;
100984 
100985    p_balance_type_code          := l_balance_type_code;
100986    -- set the flag so later we will know whether the gain loss line needs to be created
100987    
100988    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100989      p_actual_flag :='A';
100990    END IF;
100991 
100992    --
100993    -- bulk performance
100994    --
100995    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100996                                       p_header_num   => 0); -- 4262811
100997    --
100998    -- set accounting line options
100999    --
101000    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101001            p_natural_side_code          => 'D'
101002          , p_gain_or_loss_flag          => 'N'
101003          , p_gl_transfer_mode_code      => 'S'
101004          , p_acct_entry_type_code       => 'A'
101005          , p_switch_side_flag           => 'Y'
101006          , p_merge_duplicate_code       => 'N'
101007          );
101008    --
101009    l_acc_rev_natural_side_code := 'C';  -- 4262811
101010    -- 
101011    --
101012    -- set accounting line type info
101013    --
101014    xla_ae_lines_pkg.SetAcctLineType
101015       (p_component_type             => l_component_type
101016       ,p_event_type_code            => l_event_type_code
101017       ,p_line_definition_owner_code => l_line_definition_owner_code
101018       ,p_line_definition_code       => l_line_definition_code
101019       ,p_accounting_line_code       => l_component_code
101020       ,p_accounting_line_type_code  => l_component_type_code
101021       ,p_accounting_line_appl_id    => l_component_appl_id
101022       ,p_amb_context_code           => l_amb_context_code
101023       ,p_entity_code                => l_entity_code
101024       ,p_event_class_code           => l_event_class_code);
101025    --
101026    -- set accounting class
101027    --
101028    xla_ae_lines_pkg.SetAcctClass(
101029            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
101030          , p_ae_header_id           => l_ae_header_id
101031          );
101032 
101033    --
101034    -- set rounding class
101035    --
101036    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101037                       'INTERORG_RECEIVABLES';
101038 
101039    --
101040    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101041    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101042    --
101043    -- bulk performance
101044    --
101045    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101046 
101047    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101048       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101049 
101050    -- 4955764
101051    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101052       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101053 
101054    -- 4458381 Public Sector Enh
101055    
101056    --
101057    -- set accounting attributes for the line type
101058    --
101059    l_entered_amt_idx := 3;
101060    l_accted_amt_idx  := 8;
101061    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101062    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101063    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
101064    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101065    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
101066    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101067    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
101068    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101069    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
101070    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101071    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
101072    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101073    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
101074    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101075    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
101076    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101077    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
101078 
101079    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101080    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101081 
101082    ---------------------------------------------------------------------------------------------------------------
101083    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101084    ---------------------------------------------------------------------------------------------------------------
101085    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101086 
101087    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101088    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101089 
101090    IF xla_accounting_cache_pkg.GetValueChar
101091          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101092          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101093    AND l_bflow_method_code = 'PRIOR_ENTRY'
101094 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101095    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101096          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101097        )
101098    THEN
101099          xla_ae_lines_pkg.BflowUpgEntry
101100            (p_business_method_code    => l_bflow_method_code
101101            ,p_business_class_code     => l_bflow_class_code
101102            ,p_balance_type            => l_balance_type_code);
101103    ELSE
101104       NULL;
101105 -- No business flow processing for business flow method of NONE.
101106    END IF;
101107 
101108    --
101109    -- call analytical criteria
101110    --
101111    
101112    --
101113    -- call description
101114    --
101115    
101116 xla_ae_lines_pkg.SetLineDescription(
101117    p_ae_header_id => l_ae_header_id
101118   ,p_description  => Description_1 (
101119      p_application_id         => p_application_id
101120    , p_ae_header_id           => l_ae_header_id 
101121 , p_source_1 => p_source_1
101122 , p_source_2 => p_source_2
101123 , p_source_3 => p_source_3
101124 , p_source_4 => p_source_4
101125 , p_source_5 => p_source_5
101126    )
101127 );
101128 
101129 
101130    --
101131    -- call ADRs
101132    -- Bug 4922099
101133    --
101134    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101135         (NVL(l_actual_upg_option, 'N') = 'O') OR
101136         (NVL(l_enc_upg_option, 'N') = 'O')
101137       )
101138    THEN
101139    NULL;
101140    --
101141    --
101142    
101143   l_ccid := AcctDerRule_6(
101144            p_application_id           => p_application_id
101145          , p_ae_header_id             => l_ae_header_id 
101146 , p_source_11 => p_source_11
101147          , x_transaction_coa_id       => l_adr_transaction_coa_id
101148          , x_accounting_coa_id        => l_adr_accounting_coa_id
101149          , x_value_type_code          => l_adr_value_type_code
101150          , p_side                     => 'NA'
101151    );
101152 
101153    xla_ae_lines_pkg.set_ccid(
101154     p_code_combination_id          => l_ccid
101155   , p_value_type_code              => l_adr_value_type_code
101156   , p_transaction_coa_id           => l_adr_transaction_coa_id
101157   , p_accounting_coa_id            => l_adr_accounting_coa_id
101158   , p_adr_code                     => 'CST_DEFAULT'
101159   , p_adr_type_code                => 'S'
101160   , p_component_type               => l_component_type
101161   , p_component_code               => l_component_code
101162   , p_component_type_code          => l_component_type_code
101163   , p_component_appl_id            => l_component_appl_id
101164   , p_amb_context_code             => l_amb_context_code
101165   , p_side                         => 'NA'
101166   );
101167 
101168 
101169    --
101170    --
101171    END IF;
101172    --
101173    -- Bug 4922099
101174    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101175           (NVL(l_enc_upg_option, 'N') = 'O')
101176         ) AND
101177         (l_bflow_method_code = 'PRIOR_ENTRY')
101178       )
101179    THEN
101180       IF
101181       --
101182       1 = 2
101183       --
101184       THEN
101185       xla_accounting_err_pkg.build_message
101186                                     (p_appli_s_name            => 'XLA'
101187                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101188                                     ,p_token_1                 => 'LINE_NUMBER'
101189                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
101190                                     ,p_token_2                 => 'LINE_TYPE_NAME'
101191                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
101192                                                                              l_component_type
101193                                                                             ,l_component_code
101194                                                                             ,l_component_type_code
101195                                                                             ,l_component_appl_id
101196                                                                             ,l_amb_context_code
101197                                                                             ,l_entity_code
101198                                                                             ,l_event_class_code
101199                                                                            )
101200                                     ,p_token_3                 => 'OWNER'
101201                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
101202                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
101203                                                                           ,p_lookup_code    => l_component_type_code
101204                                                                          )
101205                                     ,p_token_4                 => 'PRODUCT_NAME'
101206                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101207                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101208                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101209                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101210                                     ,p_ae_header_id            =>  NULL
101211                                        );
101212 
101213         IF (C_LEVEL_ERROR>= g_log_level) THEN
101214                  trace
101215                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101216                       ,p_level    => C_LEVEL_ERROR
101217                       ,p_module   => l_log_module);
101218         END IF;
101219       END IF;
101220    END IF;
101221    --
101222    --
101223    ------------------------------------------------------------------------------------------------
101224    -- 4219869 Business Flow
101225    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101226    -- Prior Entry.  Currently, the following code is always generated.
101227    ------------------------------------------------------------------------------------------------
101228    XLA_AE_LINES_PKG.ValidateCurrentLine;
101229 
101230    ------------------------------------------------------------------------------------
101231    -- 4219869 Business Flow
101232    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101233    ------------------------------------------------------------------------------------
101234    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101235 
101236    ----------------------------------------------------------------------------------
101237    -- 4219869 Business Flow
101238    -- Update journal entry status -- Need to generate this within IF <condition>
101239    ----------------------------------------------------------------------------------
101240    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101241          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101242          ,p_balance_type_code => l_balance_type_code
101243          );
101244 
101245    -------------------------------------------------------------------------------------------
101246    -- 4262811 - Generate the Accrual Reversal lines
101247    -------------------------------------------------------------------------------------------
101248    BEGIN
101249       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101250                               (g_array_event(p_event_id).array_value_num('header_index'));
101251       IF l_acc_rev_flag IS NULL THEN
101252          l_acc_rev_flag := 'N';
101253       END IF;
101254    EXCEPTION
101255       WHEN OTHERS THEN
101256          l_acc_rev_flag := 'N';
101257    END;
101258    --
101259    IF (l_acc_rev_flag = 'Y') THEN
101260 
101261        -- 4645092  ------------------------------------------------------------------------------
101262        -- To allow MPA report to determine if it should generate report process
101263        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101264        ------------------------------------------------------------------------------------------
101265 
101266        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101267        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101268    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
101269    -- call ADRs
101270    -- Bug 4922099
101271    --
101272    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101273         (NVL(l_actual_upg_option, 'N') = 'O') OR
101274         (NVL(l_enc_upg_option, 'N') = 'O')
101275       )
101276    THEN
101277    NULL;
101278    --
101279    --
101280    
101281   l_ccid := AcctDerRule_6(
101282            p_application_id           => p_application_id
101283          , p_ae_header_id             => l_ae_header_id 
101284 , p_source_11 => p_source_11
101285          , x_transaction_coa_id       => l_adr_transaction_coa_id
101286          , x_accounting_coa_id        => l_adr_accounting_coa_id
101287          , x_value_type_code          => l_adr_value_type_code
101288          , p_side                     => 'NA'
101289    );
101290 
101291    xla_ae_lines_pkg.set_ccid(
101292     p_code_combination_id          => l_ccid
101293   , p_value_type_code              => l_adr_value_type_code
101294   , p_transaction_coa_id           => l_adr_transaction_coa_id
101295   , p_accounting_coa_id            => l_adr_accounting_coa_id
101296   , p_adr_code                     => 'CST_DEFAULT'
101297   , p_adr_type_code                => 'S'
101298   , p_component_type               => l_component_type
101299   , p_component_code               => l_component_code
101300   , p_component_type_code          => l_component_type_code
101301   , p_component_appl_id            => l_component_appl_id
101302   , p_amb_context_code             => l_amb_context_code
101303   , p_side                         => 'NA'
101304   );
101305 
101306 
101307    --
101308    --
101309    END IF;
101310 
101311        --
101312        -- Update the line information that should be overwritten
101313        --
101314        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101315                                          p_header_num   => 1);
101316        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
101317 
101318        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101319 
101320        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
101321           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101322        END IF;
101323 
101324       --
101325       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101326       --
101327       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101328           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
101329       ELSE
101330           ---------------------------------------------------------------------------------------------------
101331           -- 4262811a Switch Sign
101332           ---------------------------------------------------------------------------------------------------
101333           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
101334           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101335                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101336           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101337                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101338           -- 5132302
101339           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101340                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101341 
101342       END IF;
101343 
101344       -- 4955764
101345       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101346       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101347 
101348 
101349       XLA_AE_LINES_PKG.ValidateCurrentLine;
101350       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101351 
101352       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101353                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101354                ,p_balance_type_code => l_balance_type_code);
101355 
101356    END IF;
101357 
101358    -----------------------------------------------------------------------------------------
101359    -- 4262811 Multiperiod Accounting
101360    -----------------------------------------------------------------------------------------
101361      -- No MPA option is assigned.
101362 
101363 
101364 END IF;
101365 END IF;
101366 --
101367 
101368 --
101369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101370    trace
101371       (p_msg      => 'END of AcctLineType_201'
101372       ,p_level    => C_LEVEL_PROCEDURE
101373       ,p_module   => l_log_module);
101374 END IF;
101375 --
101376 EXCEPTION
101377   WHEN xla_exceptions_pkg.application_exception THEN
101378       RAISE;
101379   WHEN OTHERS THEN
101380        xla_exceptions_pkg.raise_message
101381            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_201');
101382 END AcctLineType_201;
101383 --
101384 
101385 ---------------------------------------
101386 --
101387 -- PRIVATE FUNCTION
101388 --         AcctLineType_202
101389 --
101390 ---------------------------------------
101391 PROCEDURE AcctLineType_202 (
101392   p_application_id        IN NUMBER
101393  ,p_event_id              IN NUMBER
101394  ,p_calculate_acctd_flag  IN VARCHAR2
101395  ,p_calculate_g_l_flag    IN VARCHAR2
101396  ,p_actual_flag           IN OUT VARCHAR2
101397  ,p_balance_type_code     OUT VARCHAR2
101398  ,p_gain_or_loss_ref      OUT VARCHAR2
101399  
101400 --TRANSACTION_ID
101401  , p_source_1            IN NUMBER
101402 --Item Concatenated Segments
101403  , p_source_2            IN VARCHAR2
101404 --Transaction Quantity
101405  , p_source_3            IN NUMBER
101406 --Transaction Unit of Measure Code
101407  , p_source_4            IN VARCHAR2
101408 --Inventory Transaction Type Description
101409  , p_source_5            IN VARCHAR2
101410 --Interorg Receivables Account
101411  , p_source_59            IN NUMBER
101412 --DISTRIBUTION_IDENTIFIER
101413  , p_source_84            IN NUMBER
101414 --Distribution Type
101415  , p_source_85            IN VARCHAR2
101416  , p_source_85_meaning    IN VARCHAR2
101417 --Entered Currency Code
101418  , p_source_88            IN VARCHAR2
101419 --Entered Amount
101420  , p_source_91            IN NUMBER
101421 --Currency Conversion Date
101422  , p_source_92            IN DATE
101423 --Currency Conversion Rate
101424  , p_source_93            IN NUMBER
101425 --Currency Conversion Type
101426  , p_source_94            IN VARCHAR2
101427 --Accounted Amount
101428  , p_source_95            IN NUMBER
101429 --Accounting Line Type
101430  , p_source_97            IN NUMBER
101431 )
101432 IS
101433 
101434 l_component_type              VARCHAR2(80);
101435 l_component_code              VARCHAR2(30);
101436 l_component_type_code         VARCHAR2(1);
101437 l_component_appl_id           INTEGER;
101438 l_amb_context_code            VARCHAR2(30);
101439 l_entity_code                 VARCHAR2(30);
101440 l_event_class_code            VARCHAR2(30);
101441 l_ae_header_id                NUMBER;
101442 l_event_type_code             VARCHAR2(30);
101443 l_line_definition_code        VARCHAR2(30);
101444 l_line_definition_owner_code  VARCHAR2(1);
101445 --
101446 -- adr variables
101447 l_segment                     VARCHAR2(30);
101448 l_ccid                        NUMBER;
101449 l_adr_transaction_coa_id      NUMBER;
101450 l_adr_accounting_coa_id       NUMBER;
101451 l_adr_flexfield_segment_code  VARCHAR2(30);
101452 l_adr_flex_value_set_id       NUMBER;
101453 l_adr_value_type_code         VARCHAR2(30);
101454 l_adr_value_combination_id    NUMBER;
101455 l_adr_value_segment_code      VARCHAR2(30);
101456 
101457 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
101458 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
101459 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
101460 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
101461 
101462 -- 4262811 Variables ------------------------------------------------------------------------------------------
101463 l_entered_amt_idx             NUMBER;
101464 l_accted_amt_idx              NUMBER;
101465 l_acc_rev_flag                VARCHAR2(1);
101466 l_accrual_line_num            NUMBER;
101467 l_tmp_amt                     NUMBER;
101468 l_acc_rev_natural_side_code   VARCHAR2(1);
101469 
101470 l_num_entries                 NUMBER;
101471 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
101472 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
101473 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
101474 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
101475 l_recog_line_1                NUMBER;
101476 l_recog_line_2                NUMBER;
101477 
101478 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
101479 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
101480 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
101481 
101482 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101483 
101484 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
101485 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
101486 
101487 ---------------------------------------------------------------------------------------------------------------
101488 
101489 
101490 --
101491 -- bulk performance
101492 --
101493 l_balance_type_code           VARCHAR2(1);
101494 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
101495 l_log_module                  VARCHAR2(240);
101496 
101497 --
101498 -- Upgrade strategy
101499 --
101500 l_actual_upg_option           VARCHAR2(1);
101501 l_enc_upg_option           VARCHAR2(1);
101502 
101503 --
101504 BEGIN
101505 --
101506 IF g_log_enabled THEN
101507       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_202';
101508 END IF;
101509 --
101510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101511 
101512       trace
101513          (p_msg      => 'BEGIN of AcctLineType_202'
101514          ,p_level    => C_LEVEL_PROCEDURE
101515          ,p_module   => l_log_module);
101516 
101517 END IF;
101518 --
101519 l_component_type             := 'AMB_JLT';
101520 l_component_code             := 'INTERORG_RECEIVABLES';
101521 l_component_type_code        := 'S';
101522 l_component_appl_id          :=  707;
101523 l_amb_context_code           := 'DEFAULT';
101524 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
101525 l_event_class_code           := 'USER_DEFINE';
101526 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
101527 l_line_definition_owner_code := 'S';
101528 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
101529 --
101530 l_balance_type_code          := 'A';
101531 l_segment                     := NULL;
101532 l_ccid                        := NULL;
101533 l_adr_transaction_coa_id      := NULL;
101534 l_adr_accounting_coa_id       := NULL;
101535 l_adr_flexfield_segment_code  := NULL;
101536 l_adr_flex_value_set_id       := NULL;
101537 l_adr_value_type_code         := NULL;
101538 l_adr_value_combination_id    := NULL;
101539 l_adr_value_segment_code      := NULL;
101540 
101541 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
101542 l_bflow_class_code           := '';    -- 4219869 Business Flow
101543 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
101544 l_budgetary_control_flag     := 'N';
101545 
101546 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
101547 l_bflow_applied_to_amt       := NULL; -- 5132302
101548 l_entered_amt_idx            := NULL;          -- 4262811
101549 l_accted_amt_idx             := NULL;          -- 4262811
101550 l_acc_rev_flag               := NULL;          -- 4262811
101551 l_accrual_line_num           := NULL;          -- 4262811
101552 l_tmp_amt                    := NULL;          -- 4262811
101553 --
101554  
101555 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101556     l_balance_type_code <> 'B' THEN
101557 IF NVL(p_source_97,9E125) =  10
101558  THEN 
101559 
101560    --
101561    XLA_AE_LINES_PKG.SetNewLine;
101562 
101563    p_balance_type_code          := l_balance_type_code;
101564    -- set the flag so later we will know whether the gain loss line needs to be created
101565    
101566    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101567      p_actual_flag :='A';
101568    END IF;
101569 
101570    --
101571    -- bulk performance
101572    --
101573    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101574                                       p_header_num   => 0); -- 4262811
101575    --
101576    -- set accounting line options
101577    --
101578    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101579            p_natural_side_code          => 'D'
101580          , p_gain_or_loss_flag          => 'N'
101581          , p_gl_transfer_mode_code      => 'S'
101582          , p_acct_entry_type_code       => 'A'
101583          , p_switch_side_flag           => 'Y'
101584          , p_merge_duplicate_code       => 'N'
101585          );
101586    --
101587    l_acc_rev_natural_side_code := 'C';  -- 4262811
101588    -- 
101589    --
101590    -- set accounting line type info
101591    --
101592    xla_ae_lines_pkg.SetAcctLineType
101593       (p_component_type             => l_component_type
101594       ,p_event_type_code            => l_event_type_code
101595       ,p_line_definition_owner_code => l_line_definition_owner_code
101596       ,p_line_definition_code       => l_line_definition_code
101597       ,p_accounting_line_code       => l_component_code
101598       ,p_accounting_line_type_code  => l_component_type_code
101599       ,p_accounting_line_appl_id    => l_component_appl_id
101600       ,p_amb_context_code           => l_amb_context_code
101601       ,p_entity_code                => l_entity_code
101602       ,p_event_class_code           => l_event_class_code);
101603    --
101604    -- set accounting class
101605    --
101606    xla_ae_lines_pkg.SetAcctClass(
101607            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
101608          , p_ae_header_id           => l_ae_header_id
101609          );
101610 
101611    --
101612    -- set rounding class
101613    --
101614    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101615                       'INTERORG_RECEIVABLES';
101616 
101617    --
101618    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101619    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101620    --
101621    -- bulk performance
101622    --
101623    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101624 
101625    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101626       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101627 
101628    -- 4955764
101629    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101630       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101631 
101632    -- 4458381 Public Sector Enh
101633    
101634    --
101635    -- set accounting attributes for the line type
101636    --
101637    l_entered_amt_idx := 3;
101638    l_accted_amt_idx  := 8;
101639    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
101640    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101641    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
101642    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101643    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
101644    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101645    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
101646    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101647    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
101648    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101649    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
101650    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101651    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
101652    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101653    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
101654    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101655    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
101656 
101657    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101658    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101659 
101660    ---------------------------------------------------------------------------------------------------------------
101661    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101662    ---------------------------------------------------------------------------------------------------------------
101663    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101664 
101665    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101666    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101667 
101668    IF xla_accounting_cache_pkg.GetValueChar
101669          (p_source_code         => 'LEDGER_CATEGORY_CODE'
101670          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101671    AND l_bflow_method_code = 'PRIOR_ENTRY'
101672 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101673    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101674          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101675        )
101676    THEN
101677          xla_ae_lines_pkg.BflowUpgEntry
101678            (p_business_method_code    => l_bflow_method_code
101679            ,p_business_class_code     => l_bflow_class_code
101680            ,p_balance_type            => l_balance_type_code);
101681    ELSE
101682       NULL;
101683 -- No business flow processing for business flow method of NONE.
101684    END IF;
101685 
101686    --
101687    -- call analytical criteria
101688    --
101689    
101690    --
101691    -- call description
101692    --
101693    
101694 xla_ae_lines_pkg.SetLineDescription(
101695    p_ae_header_id => l_ae_header_id
101696   ,p_description  => Description_1 (
101697      p_application_id         => p_application_id
101698    , p_ae_header_id           => l_ae_header_id 
101699 , p_source_1 => p_source_1
101700 , p_source_2 => p_source_2
101701 , p_source_3 => p_source_3
101702 , p_source_4 => p_source_4
101703 , p_source_5 => p_source_5
101704    )
101705 );
101706 
101707 
101708    --
101709    -- call ADRs
101710    -- Bug 4922099
101711    --
101712    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101713         (NVL(l_actual_upg_option, 'N') = 'O') OR
101714         (NVL(l_enc_upg_option, 'N') = 'O')
101715       )
101716    THEN
101717    NULL;
101718    --
101719    --
101720    
101721   l_ccid := AcctDerRule_33(
101722            p_application_id           => p_application_id
101723          , p_ae_header_id             => l_ae_header_id 
101724 , p_source_59 => p_source_59
101725          , x_transaction_coa_id       => l_adr_transaction_coa_id
101726          , x_accounting_coa_id        => l_adr_accounting_coa_id
101727          , x_value_type_code          => l_adr_value_type_code
101728          , p_side                     => 'NA'
101729    );
101730 
101731    xla_ae_lines_pkg.set_ccid(
101732     p_code_combination_id          => l_ccid
101733   , p_value_type_code              => l_adr_value_type_code
101734   , p_transaction_coa_id           => l_adr_transaction_coa_id
101735   , p_accounting_coa_id            => l_adr_accounting_coa_id
101736   , p_adr_code                     => 'PI_RECEIVABLES'
101737   , p_adr_type_code                => 'S'
101738   , p_component_type               => l_component_type
101739   , p_component_code               => l_component_code
101740   , p_component_type_code          => l_component_type_code
101741   , p_component_appl_id            => l_component_appl_id
101742   , p_amb_context_code             => l_amb_context_code
101743   , p_side                         => 'NA'
101744   );
101745 
101746 
101747    --
101748    --
101749    END IF;
101750    --
101751    -- Bug 4922099
101752    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101753           (NVL(l_enc_upg_option, 'N') = 'O')
101754         ) AND
101755         (l_bflow_method_code = 'PRIOR_ENTRY')
101756       )
101757    THEN
101758       IF
101759       --
101760       1 = 2
101761       --
101762       THEN
101763       xla_accounting_err_pkg.build_message
101764                                     (p_appli_s_name            => 'XLA'
101765                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101766                                     ,p_token_1                 => 'LINE_NUMBER'
101767                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
101768                                     ,p_token_2                 => 'LINE_TYPE_NAME'
101769                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
101770                                                                              l_component_type
101771                                                                             ,l_component_code
101772                                                                             ,l_component_type_code
101773                                                                             ,l_component_appl_id
101774                                                                             ,l_amb_context_code
101775                                                                             ,l_entity_code
101776                                                                             ,l_event_class_code
101777                                                                            )
101778                                     ,p_token_3                 => 'OWNER'
101779                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
101780                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
101781                                                                           ,p_lookup_code    => l_component_type_code
101782                                                                          )
101783                                     ,p_token_4                 => 'PRODUCT_NAME'
101784                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101785                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101786                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101787                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101788                                     ,p_ae_header_id            =>  NULL
101789                                        );
101790 
101791         IF (C_LEVEL_ERROR>= g_log_level) THEN
101792                  trace
101793                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101794                       ,p_level    => C_LEVEL_ERROR
101795                       ,p_module   => l_log_module);
101796         END IF;
101797       END IF;
101798    END IF;
101799    --
101800    --
101801    ------------------------------------------------------------------------------------------------
101802    -- 4219869 Business Flow
101803    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101804    -- Prior Entry.  Currently, the following code is always generated.
101805    ------------------------------------------------------------------------------------------------
101806    XLA_AE_LINES_PKG.ValidateCurrentLine;
101807 
101808    ------------------------------------------------------------------------------------
101809    -- 4219869 Business Flow
101810    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101811    ------------------------------------------------------------------------------------
101812    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101813 
101814    ----------------------------------------------------------------------------------
101815    -- 4219869 Business Flow
101816    -- Update journal entry status -- Need to generate this within IF <condition>
101817    ----------------------------------------------------------------------------------
101818    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101819          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101820          ,p_balance_type_code => l_balance_type_code
101821          );
101822 
101823    -------------------------------------------------------------------------------------------
101824    -- 4262811 - Generate the Accrual Reversal lines
101825    -------------------------------------------------------------------------------------------
101826    BEGIN
101827       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101828                               (g_array_event(p_event_id).array_value_num('header_index'));
101829       IF l_acc_rev_flag IS NULL THEN
101830          l_acc_rev_flag := 'N';
101831       END IF;
101832    EXCEPTION
101833       WHEN OTHERS THEN
101834          l_acc_rev_flag := 'N';
101835    END;
101836    --
101837    IF (l_acc_rev_flag = 'Y') THEN
101838 
101839        -- 4645092  ------------------------------------------------------------------------------
101840        -- To allow MPA report to determine if it should generate report process
101841        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101842        ------------------------------------------------------------------------------------------
101843 
101844        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101845        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101846    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
101847    -- call ADRs
101848    -- Bug 4922099
101849    --
101850    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101851         (NVL(l_actual_upg_option, 'N') = 'O') OR
101852         (NVL(l_enc_upg_option, 'N') = 'O')
101853       )
101854    THEN
101855    NULL;
101856    --
101857    --
101858    
101859   l_ccid := AcctDerRule_33(
101860            p_application_id           => p_application_id
101861          , p_ae_header_id             => l_ae_header_id 
101862 , p_source_59 => p_source_59
101863          , x_transaction_coa_id       => l_adr_transaction_coa_id
101864          , x_accounting_coa_id        => l_adr_accounting_coa_id
101865          , x_value_type_code          => l_adr_value_type_code
101866          , p_side                     => 'NA'
101867    );
101868 
101869    xla_ae_lines_pkg.set_ccid(
101870     p_code_combination_id          => l_ccid
101871   , p_value_type_code              => l_adr_value_type_code
101872   , p_transaction_coa_id           => l_adr_transaction_coa_id
101873   , p_accounting_coa_id            => l_adr_accounting_coa_id
101874   , p_adr_code                     => 'PI_RECEIVABLES'
101875   , p_adr_type_code                => 'S'
101876   , p_component_type               => l_component_type
101877   , p_component_code               => l_component_code
101878   , p_component_type_code          => l_component_type_code
101879   , p_component_appl_id            => l_component_appl_id
101880   , p_amb_context_code             => l_amb_context_code
101881   , p_side                         => 'NA'
101882   );
101883 
101884 
101885    --
101886    --
101887    END IF;
101888 
101889        --
101890        -- Update the line information that should be overwritten
101891        --
101892        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101893                                          p_header_num   => 1);
101894        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
101895 
101896        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101897 
101898        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
101899           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101900        END IF;
101901 
101902       --
101903       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101904       --
101905       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101906           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
101907       ELSE
101908           ---------------------------------------------------------------------------------------------------
101909           -- 4262811a Switch Sign
101910           ---------------------------------------------------------------------------------------------------
101911           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
101912           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101913                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101914           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101915                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101916           -- 5132302
101917           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101918                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101919 
101920       END IF;
101921 
101922       -- 4955764
101923       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101924       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101925 
101926 
101927       XLA_AE_LINES_PKG.ValidateCurrentLine;
101928       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101929 
101930       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101931                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101932                ,p_balance_type_code => l_balance_type_code);
101933 
101934    END IF;
101935 
101936    -----------------------------------------------------------------------------------------
101937    -- 4262811 Multiperiod Accounting
101938    -----------------------------------------------------------------------------------------
101939      -- No MPA option is assigned.
101940 
101941 
101942 END IF;
101943 END IF;
101944 --
101945 
101946 --
101947 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101948    trace
101949       (p_msg      => 'END of AcctLineType_202'
101950       ,p_level    => C_LEVEL_PROCEDURE
101951       ,p_module   => l_log_module);
101952 END IF;
101953 --
101954 EXCEPTION
101955   WHEN xla_exceptions_pkg.application_exception THEN
101956       RAISE;
101957   WHEN OTHERS THEN
101958        xla_exceptions_pkg.raise_message
101959            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_202');
101960 END AcctLineType_202;
101961 --
101962 
101963 ---------------------------------------
101964 --
101965 -- PRIVATE FUNCTION
101966 --         AcctLineType_203
101967 --
101968 ---------------------------------------
101969 PROCEDURE AcctLineType_203 (
101970   p_application_id        IN NUMBER
101971  ,p_event_id              IN NUMBER
101972  ,p_calculate_acctd_flag  IN VARCHAR2
101973  ,p_calculate_g_l_flag    IN VARCHAR2
101974  ,p_actual_flag           IN OUT VARCHAR2
101975  ,p_balance_type_code     OUT VARCHAR2
101976  ,p_gain_or_loss_ref      OUT VARCHAR2
101977  
101978 --TRANSACTION_ID
101979  , p_source_1            IN NUMBER
101980 --Item Concatenated Segments
101981  , p_source_2            IN VARCHAR2
101982 --Transaction Quantity
101983  , p_source_3            IN NUMBER
101984 --Transaction Unit of Measure Code
101985  , p_source_4            IN VARCHAR2
101986 --Inventory Transaction Type Description
101987  , p_source_5            IN VARCHAR2
101988 --Interorg Receivables Account
101989  , p_source_59            IN NUMBER
101990 --DISTRIBUTION_IDENTIFIER
101991  , p_source_84            IN NUMBER
101992 --Distribution Type
101993  , p_source_85            IN VARCHAR2
101994  , p_source_85_meaning    IN VARCHAR2
101995 --Entered Currency Code
101996  , p_source_88            IN VARCHAR2
101997 --Entered Amount
101998  , p_source_91            IN NUMBER
101999 --Currency Conversion Date
102000  , p_source_92            IN DATE
102001 --Currency Conversion Rate
102002  , p_source_93            IN NUMBER
102003 --Currency Conversion Type
102004  , p_source_94            IN VARCHAR2
102005 --Accounted Amount
102006  , p_source_95            IN NUMBER
102007 --Accounting Line Type
102008  , p_source_97            IN NUMBER
102009 )
102010 IS
102011 
102012 l_component_type              VARCHAR2(80);
102013 l_component_code              VARCHAR2(30);
102014 l_component_type_code         VARCHAR2(1);
102015 l_component_appl_id           INTEGER;
102016 l_amb_context_code            VARCHAR2(30);
102017 l_entity_code                 VARCHAR2(30);
102018 l_event_class_code            VARCHAR2(30);
102019 l_ae_header_id                NUMBER;
102020 l_event_type_code             VARCHAR2(30);
102021 l_line_definition_code        VARCHAR2(30);
102022 l_line_definition_owner_code  VARCHAR2(1);
102023 --
102024 -- adr variables
102025 l_segment                     VARCHAR2(30);
102026 l_ccid                        NUMBER;
102027 l_adr_transaction_coa_id      NUMBER;
102028 l_adr_accounting_coa_id       NUMBER;
102029 l_adr_flexfield_segment_code  VARCHAR2(30);
102030 l_adr_flex_value_set_id       NUMBER;
102031 l_adr_value_type_code         VARCHAR2(30);
102032 l_adr_value_combination_id    NUMBER;
102033 l_adr_value_segment_code      VARCHAR2(30);
102034 
102035 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102036 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102037 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102038 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102039 
102040 -- 4262811 Variables ------------------------------------------------------------------------------------------
102041 l_entered_amt_idx             NUMBER;
102042 l_accted_amt_idx              NUMBER;
102043 l_acc_rev_flag                VARCHAR2(1);
102044 l_accrual_line_num            NUMBER;
102045 l_tmp_amt                     NUMBER;
102046 l_acc_rev_natural_side_code   VARCHAR2(1);
102047 
102048 l_num_entries                 NUMBER;
102049 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102050 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102051 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102052 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102053 l_recog_line_1                NUMBER;
102054 l_recog_line_2                NUMBER;
102055 
102056 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102057 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102058 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102059 
102060 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102061 
102062 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102063 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102064 
102065 ---------------------------------------------------------------------------------------------------------------
102066 
102067 
102068 --
102069 -- bulk performance
102070 --
102071 l_balance_type_code           VARCHAR2(1);
102072 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102073 l_log_module                  VARCHAR2(240);
102074 
102075 --
102076 -- Upgrade strategy
102077 --
102078 l_actual_upg_option           VARCHAR2(1);
102079 l_enc_upg_option           VARCHAR2(1);
102080 
102081 --
102082 BEGIN
102083 --
102084 IF g_log_enabled THEN
102085       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_203';
102086 END IF;
102087 --
102088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102089 
102090       trace
102091          (p_msg      => 'BEGIN of AcctLineType_203'
102092          ,p_level    => C_LEVEL_PROCEDURE
102093          ,p_module   => l_log_module);
102094 
102095 END IF;
102096 --
102097 l_component_type             := 'AMB_JLT';
102098 l_component_code             := 'INTERORG_RECEIVABLES';
102099 l_component_type_code        := 'S';
102100 l_component_appl_id          :=  707;
102101 l_amb_context_code           := 'DEFAULT';
102102 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
102103 l_event_class_code           := 'USER_DEFINE';
102104 l_event_type_code            := 'UDIR_INTERORG_SHIP';
102105 l_line_definition_owner_code := 'S';
102106 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
102107 --
102108 l_balance_type_code          := 'A';
102109 l_segment                     := NULL;
102110 l_ccid                        := NULL;
102111 l_adr_transaction_coa_id      := NULL;
102112 l_adr_accounting_coa_id       := NULL;
102113 l_adr_flexfield_segment_code  := NULL;
102114 l_adr_flex_value_set_id       := NULL;
102115 l_adr_value_type_code         := NULL;
102116 l_adr_value_combination_id    := NULL;
102117 l_adr_value_segment_code      := NULL;
102118 
102119 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102120 l_bflow_class_code           := '';    -- 4219869 Business Flow
102121 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102122 l_budgetary_control_flag     := 'N';
102123 
102124 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102125 l_bflow_applied_to_amt       := NULL; -- 5132302
102126 l_entered_amt_idx            := NULL;          -- 4262811
102127 l_accted_amt_idx             := NULL;          -- 4262811
102128 l_acc_rev_flag               := NULL;          -- 4262811
102129 l_accrual_line_num           := NULL;          -- 4262811
102130 l_tmp_amt                    := NULL;          -- 4262811
102131 --
102132  
102133 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102134     l_balance_type_code <> 'B' THEN
102135 IF NVL(p_source_97,9E125) =  10
102136  THEN 
102137 
102138    --
102139    XLA_AE_LINES_PKG.SetNewLine;
102140 
102141    p_balance_type_code          := l_balance_type_code;
102142    -- set the flag so later we will know whether the gain loss line needs to be created
102143    
102144    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102145      p_actual_flag :='A';
102146    END IF;
102147 
102148    --
102149    -- bulk performance
102150    --
102151    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102152                                       p_header_num   => 0); -- 4262811
102153    --
102154    -- set accounting line options
102155    --
102156    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102157            p_natural_side_code          => 'D'
102158          , p_gain_or_loss_flag          => 'N'
102159          , p_gl_transfer_mode_code      => 'S'
102160          , p_acct_entry_type_code       => 'A'
102161          , p_switch_side_flag           => 'Y'
102162          , p_merge_duplicate_code       => 'N'
102163          );
102164    --
102165    l_acc_rev_natural_side_code := 'C';  -- 4262811
102166    -- 
102167    --
102168    -- set accounting line type info
102169    --
102170    xla_ae_lines_pkg.SetAcctLineType
102171       (p_component_type             => l_component_type
102172       ,p_event_type_code            => l_event_type_code
102173       ,p_line_definition_owner_code => l_line_definition_owner_code
102174       ,p_line_definition_code       => l_line_definition_code
102175       ,p_accounting_line_code       => l_component_code
102176       ,p_accounting_line_type_code  => l_component_type_code
102177       ,p_accounting_line_appl_id    => l_component_appl_id
102178       ,p_amb_context_code           => l_amb_context_code
102179       ,p_entity_code                => l_entity_code
102180       ,p_event_class_code           => l_event_class_code);
102181    --
102182    -- set accounting class
102183    --
102184    xla_ae_lines_pkg.SetAcctClass(
102185            p_accounting_class_code  => 'INTERORG_RECEIVABLES'
102186          , p_ae_header_id           => l_ae_header_id
102187          );
102188 
102189    --
102190    -- set rounding class
102191    --
102192    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102193                       'INTERORG_RECEIVABLES';
102194 
102195    --
102196    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102197    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102198    --
102199    -- bulk performance
102200    --
102201    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102202 
102203    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102204       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102205 
102206    -- 4955764
102207    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102208       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102209 
102210    -- 4458381 Public Sector Enh
102211    
102212    --
102213    -- set accounting attributes for the line type
102214    --
102215    l_entered_amt_idx := 3;
102216    l_accted_amt_idx  := 8;
102217    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
102218    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102219    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
102220    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102221    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
102222    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102223    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
102224    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102225    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
102226    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102227    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
102228    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102229    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
102230    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102231    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
102232    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102233    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
102234 
102235    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102236    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102237 
102238    ---------------------------------------------------------------------------------------------------------------
102239    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102240    ---------------------------------------------------------------------------------------------------------------
102241    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102242 
102243    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102244    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102245 
102246    IF xla_accounting_cache_pkg.GetValueChar
102247          (p_source_code         => 'LEDGER_CATEGORY_CODE'
102248          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102249    AND l_bflow_method_code = 'PRIOR_ENTRY'
102250 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102251    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102252          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102253        )
102254    THEN
102255          xla_ae_lines_pkg.BflowUpgEntry
102256            (p_business_method_code    => l_bflow_method_code
102257            ,p_business_class_code     => l_bflow_class_code
102258            ,p_balance_type            => l_balance_type_code);
102259    ELSE
102260       NULL;
102261 -- No business flow processing for business flow method of NONE.
102262    END IF;
102263 
102264    --
102265    -- call analytical criteria
102266    --
102267    
102268    --
102269    -- call description
102270    --
102271    
102272 xla_ae_lines_pkg.SetLineDescription(
102273    p_ae_header_id => l_ae_header_id
102274   ,p_description  => Description_1 (
102275      p_application_id         => p_application_id
102276    , p_ae_header_id           => l_ae_header_id 
102277 , p_source_1 => p_source_1
102278 , p_source_2 => p_source_2
102279 , p_source_3 => p_source_3
102280 , p_source_4 => p_source_4
102281 , p_source_5 => p_source_5
102282    )
102283 );
102284 
102285 
102286    --
102287    -- call ADRs
102288    -- Bug 4922099
102289    --
102290    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102291         (NVL(l_actual_upg_option, 'N') = 'O') OR
102292         (NVL(l_enc_upg_option, 'N') = 'O')
102293       )
102294    THEN
102295    NULL;
102296    --
102297    --
102298    
102299   l_ccid := AcctDerRule_33(
102300            p_application_id           => p_application_id
102301          , p_ae_header_id             => l_ae_header_id 
102302 , p_source_59 => p_source_59
102303          , x_transaction_coa_id       => l_adr_transaction_coa_id
102304          , x_accounting_coa_id        => l_adr_accounting_coa_id
102305          , x_value_type_code          => l_adr_value_type_code
102306          , p_side                     => 'NA'
102307    );
102308 
102309    xla_ae_lines_pkg.set_ccid(
102310     p_code_combination_id          => l_ccid
102311   , p_value_type_code              => l_adr_value_type_code
102312   , p_transaction_coa_id           => l_adr_transaction_coa_id
102313   , p_accounting_coa_id            => l_adr_accounting_coa_id
102314   , p_adr_code                     => 'PI_RECEIVABLES'
102315   , p_adr_type_code                => 'S'
102316   , p_component_type               => l_component_type
102317   , p_component_code               => l_component_code
102318   , p_component_type_code          => l_component_type_code
102319   , p_component_appl_id            => l_component_appl_id
102320   , p_amb_context_code             => l_amb_context_code
102321   , p_side                         => 'NA'
102322   );
102323 
102324 
102325    --
102326    --
102327    END IF;
102328    --
102329    -- Bug 4922099
102330    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102331           (NVL(l_enc_upg_option, 'N') = 'O')
102332         ) AND
102333         (l_bflow_method_code = 'PRIOR_ENTRY')
102334       )
102335    THEN
102336       IF
102337       --
102338       1 = 2
102339       --
102340       THEN
102341       xla_accounting_err_pkg.build_message
102342                                     (p_appli_s_name            => 'XLA'
102343                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102344                                     ,p_token_1                 => 'LINE_NUMBER'
102345                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
102346                                     ,p_token_2                 => 'LINE_TYPE_NAME'
102347                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
102348                                                                              l_component_type
102349                                                                             ,l_component_code
102350                                                                             ,l_component_type_code
102351                                                                             ,l_component_appl_id
102352                                                                             ,l_amb_context_code
102353                                                                             ,l_entity_code
102354                                                                             ,l_event_class_code
102355                                                                            )
102356                                     ,p_token_3                 => 'OWNER'
102357                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
102358                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
102359                                                                           ,p_lookup_code    => l_component_type_code
102360                                                                          )
102361                                     ,p_token_4                 => 'PRODUCT_NAME'
102362                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102363                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102364                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102365                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102366                                     ,p_ae_header_id            =>  NULL
102367                                        );
102368 
102369         IF (C_LEVEL_ERROR>= g_log_level) THEN
102370                  trace
102371                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102372                       ,p_level    => C_LEVEL_ERROR
102373                       ,p_module   => l_log_module);
102374         END IF;
102375       END IF;
102376    END IF;
102377    --
102378    --
102379    ------------------------------------------------------------------------------------------------
102380    -- 4219869 Business Flow
102381    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102382    -- Prior Entry.  Currently, the following code is always generated.
102383    ------------------------------------------------------------------------------------------------
102384    XLA_AE_LINES_PKG.ValidateCurrentLine;
102385 
102386    ------------------------------------------------------------------------------------
102387    -- 4219869 Business Flow
102388    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102389    ------------------------------------------------------------------------------------
102390    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102391 
102392    ----------------------------------------------------------------------------------
102393    -- 4219869 Business Flow
102394    -- Update journal entry status -- Need to generate this within IF <condition>
102395    ----------------------------------------------------------------------------------
102396    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102397          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102398          ,p_balance_type_code => l_balance_type_code
102399          );
102400 
102401    -------------------------------------------------------------------------------------------
102402    -- 4262811 - Generate the Accrual Reversal lines
102403    -------------------------------------------------------------------------------------------
102404    BEGIN
102405       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102406                               (g_array_event(p_event_id).array_value_num('header_index'));
102407       IF l_acc_rev_flag IS NULL THEN
102408          l_acc_rev_flag := 'N';
102409       END IF;
102410    EXCEPTION
102411       WHEN OTHERS THEN
102412          l_acc_rev_flag := 'N';
102413    END;
102414    --
102415    IF (l_acc_rev_flag = 'Y') THEN
102416 
102417        -- 4645092  ------------------------------------------------------------------------------
102418        -- To allow MPA report to determine if it should generate report process
102419        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102420        ------------------------------------------------------------------------------------------
102421 
102422        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102423        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102424    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
102425    -- call ADRs
102426    -- Bug 4922099
102427    --
102428    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102429         (NVL(l_actual_upg_option, 'N') = 'O') OR
102430         (NVL(l_enc_upg_option, 'N') = 'O')
102431       )
102432    THEN
102433    NULL;
102434    --
102435    --
102436    
102437   l_ccid := AcctDerRule_33(
102438            p_application_id           => p_application_id
102439          , p_ae_header_id             => l_ae_header_id 
102440 , p_source_59 => p_source_59
102441          , x_transaction_coa_id       => l_adr_transaction_coa_id
102442          , x_accounting_coa_id        => l_adr_accounting_coa_id
102443          , x_value_type_code          => l_adr_value_type_code
102444          , p_side                     => 'NA'
102445    );
102446 
102447    xla_ae_lines_pkg.set_ccid(
102448     p_code_combination_id          => l_ccid
102449   , p_value_type_code              => l_adr_value_type_code
102450   , p_transaction_coa_id           => l_adr_transaction_coa_id
102451   , p_accounting_coa_id            => l_adr_accounting_coa_id
102452   , p_adr_code                     => 'PI_RECEIVABLES'
102453   , p_adr_type_code                => 'S'
102454   , p_component_type               => l_component_type
102455   , p_component_code               => l_component_code
102456   , p_component_type_code          => l_component_type_code
102457   , p_component_appl_id            => l_component_appl_id
102458   , p_amb_context_code             => l_amb_context_code
102459   , p_side                         => 'NA'
102460   );
102461 
102462 
102463    --
102464    --
102465    END IF;
102466 
102467        --
102468        -- Update the line information that should be overwritten
102469        --
102470        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102471                                          p_header_num   => 1);
102472        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
102473 
102474        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102475 
102476        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
102477           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102478        END IF;
102479 
102480       --
102481       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102482       --
102483       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102484           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
102485       ELSE
102486           ---------------------------------------------------------------------------------------------------
102487           -- 4262811a Switch Sign
102488           ---------------------------------------------------------------------------------------------------
102489           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
102490           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102491                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102492           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102493                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102494           -- 5132302
102495           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102496                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102497 
102498       END IF;
102499 
102500       -- 4955764
102501       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102502       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102503 
102504 
102505       XLA_AE_LINES_PKG.ValidateCurrentLine;
102506       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102507 
102508       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102509                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102510                ,p_balance_type_code => l_balance_type_code);
102511 
102512    END IF;
102513 
102514    -----------------------------------------------------------------------------------------
102515    -- 4262811 Multiperiod Accounting
102516    -----------------------------------------------------------------------------------------
102517      -- No MPA option is assigned.
102518 
102519 
102520 END IF;
102521 END IF;
102522 --
102523 
102524 --
102525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102526    trace
102527       (p_msg      => 'END of AcctLineType_203'
102528       ,p_level    => C_LEVEL_PROCEDURE
102529       ,p_module   => l_log_module);
102530 END IF;
102531 --
102532 EXCEPTION
102533   WHEN xla_exceptions_pkg.application_exception THEN
102534       RAISE;
102535   WHEN OTHERS THEN
102536        xla_exceptions_pkg.raise_message
102537            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_203');
102538 END AcctLineType_203;
102539 --
102540 
102541 ---------------------------------------
102542 --
102543 -- PRIVATE FUNCTION
102544 --         AcctLineType_204
102545 --
102546 ---------------------------------------
102547 PROCEDURE AcctLineType_204 (
102548   p_application_id        IN NUMBER
102549  ,p_event_id              IN NUMBER
102550  ,p_calculate_acctd_flag  IN VARCHAR2
102551  ,p_calculate_g_l_flag    IN VARCHAR2
102552  ,p_actual_flag           IN OUT VARCHAR2
102553  ,p_balance_type_code     OUT VARCHAR2
102554  ,p_gain_or_loss_ref      OUT VARCHAR2
102555  
102556 --TRANSACTION_ID
102557  , p_source_1            IN NUMBER
102558 --Item Concatenated Segments
102559  , p_source_2            IN VARCHAR2
102560 --Transaction Quantity
102561  , p_source_3            IN NUMBER
102562 --Transaction Unit of Measure Code
102563  , p_source_4            IN VARCHAR2
102564 --Inventory Transaction Type Description
102565  , p_source_5            IN VARCHAR2
102566 --Cost Management Default Account
102567  , p_source_11            IN NUMBER
102568 --DISTRIBUTION_IDENTIFIER
102569  , p_source_84            IN NUMBER
102570 --Distribution Type
102571  , p_source_85            IN VARCHAR2
102572  , p_source_85_meaning    IN VARCHAR2
102573 --Entered Currency Code
102574  , p_source_88            IN VARCHAR2
102575 --Entered Amount
102576  , p_source_91            IN NUMBER
102577 --Currency Conversion Date
102578  , p_source_92            IN DATE
102579 --Currency Conversion Rate
102580  , p_source_93            IN NUMBER
102581 --Currency Conversion Type
102582  , p_source_94            IN VARCHAR2
102583 --Accounted Amount
102584  , p_source_95            IN NUMBER
102585 --Accounting Line Type
102586  , p_source_97            IN NUMBER
102587 )
102588 IS
102589 
102590 l_component_type              VARCHAR2(80);
102591 l_component_code              VARCHAR2(30);
102592 l_component_type_code         VARCHAR2(1);
102593 l_component_appl_id           INTEGER;
102594 l_amb_context_code            VARCHAR2(30);
102595 l_entity_code                 VARCHAR2(30);
102596 l_event_class_code            VARCHAR2(30);
102597 l_ae_header_id                NUMBER;
102598 l_event_type_code             VARCHAR2(30);
102599 l_line_definition_code        VARCHAR2(30);
102600 l_line_definition_owner_code  VARCHAR2(1);
102601 --
102602 -- adr variables
102603 l_segment                     VARCHAR2(30);
102604 l_ccid                        NUMBER;
102605 l_adr_transaction_coa_id      NUMBER;
102606 l_adr_accounting_coa_id       NUMBER;
102607 l_adr_flexfield_segment_code  VARCHAR2(30);
102608 l_adr_flex_value_set_id       NUMBER;
102609 l_adr_value_type_code         VARCHAR2(30);
102610 l_adr_value_combination_id    NUMBER;
102611 l_adr_value_segment_code      VARCHAR2(30);
102612 
102613 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
102614 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
102615 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
102616 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
102617 
102618 -- 4262811 Variables ------------------------------------------------------------------------------------------
102619 l_entered_amt_idx             NUMBER;
102620 l_accted_amt_idx              NUMBER;
102621 l_acc_rev_flag                VARCHAR2(1);
102622 l_accrual_line_num            NUMBER;
102623 l_tmp_amt                     NUMBER;
102624 l_acc_rev_natural_side_code   VARCHAR2(1);
102625 
102626 l_num_entries                 NUMBER;
102627 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
102628 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
102629 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
102630 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
102631 l_recog_line_1                NUMBER;
102632 l_recog_line_2                NUMBER;
102633 
102634 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
102635 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
102636 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
102637 
102638 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102639 
102640 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
102641 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
102642 
102643 ---------------------------------------------------------------------------------------------------------------
102644 
102645 
102646 --
102647 -- bulk performance
102648 --
102649 l_balance_type_code           VARCHAR2(1);
102650 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
102651 l_log_module                  VARCHAR2(240);
102652 
102653 --
102654 -- Upgrade strategy
102655 --
102656 l_actual_upg_option           VARCHAR2(1);
102657 l_enc_upg_option           VARCHAR2(1);
102658 
102659 --
102660 BEGIN
102661 --
102662 IF g_log_enabled THEN
102663       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_204';
102664 END IF;
102665 --
102666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102667 
102668       trace
102669          (p_msg      => 'BEGIN of AcctLineType_204'
102670          ,p_level    => C_LEVEL_PROCEDURE
102671          ,p_module   => l_log_module);
102672 
102673 END IF;
102674 --
102675 l_component_type             := 'AMB_JLT';
102676 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
102677 l_component_type_code        := 'S';
102678 l_component_appl_id          :=  707;
102679 l_amb_context_code           := 'DEFAULT';
102680 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
102681 l_event_class_code           := 'USER_DEFINE';
102682 l_event_type_code            := 'UDIR_INTERORG_RCPT';
102683 l_line_definition_owner_code := 'S';
102684 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
102685 --
102686 l_balance_type_code          := 'A';
102687 l_segment                     := NULL;
102688 l_ccid                        := NULL;
102689 l_adr_transaction_coa_id      := NULL;
102690 l_adr_accounting_coa_id       := NULL;
102691 l_adr_flexfield_segment_code  := NULL;
102692 l_adr_flex_value_set_id       := NULL;
102693 l_adr_value_type_code         := NULL;
102694 l_adr_value_combination_id    := NULL;
102695 l_adr_value_segment_code      := NULL;
102696 
102697 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
102698 l_bflow_class_code           := '';    -- 4219869 Business Flow
102699 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
102700 l_budgetary_control_flag     := 'N';
102701 
102702 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
102703 l_bflow_applied_to_amt       := NULL; -- 5132302
102704 l_entered_amt_idx            := NULL;          -- 4262811
102705 l_accted_amt_idx             := NULL;          -- 4262811
102706 l_acc_rev_flag               := NULL;          -- 4262811
102707 l_accrual_line_num           := NULL;          -- 4262811
102708 l_tmp_amt                    := NULL;          -- 4262811
102709 --
102710  
102711 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102712     l_balance_type_code <> 'B' THEN
102713 IF NVL(p_source_97,9E125) =  11
102714  THEN 
102715 
102716    --
102717    XLA_AE_LINES_PKG.SetNewLine;
102718 
102719    p_balance_type_code          := l_balance_type_code;
102720    -- set the flag so later we will know whether the gain loss line needs to be created
102721    
102722    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102723      p_actual_flag :='A';
102724    END IF;
102725 
102726    --
102727    -- bulk performance
102728    --
102729    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102730                                       p_header_num   => 0); -- 4262811
102731    --
102732    -- set accounting line options
102733    --
102734    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102735            p_natural_side_code          => 'D'
102736          , p_gain_or_loss_flag          => 'N'
102737          , p_gl_transfer_mode_code      => 'S'
102738          , p_acct_entry_type_code       => 'A'
102739          , p_switch_side_flag           => 'Y'
102740          , p_merge_duplicate_code       => 'N'
102741          );
102742    --
102743    l_acc_rev_natural_side_code := 'C';  -- 4262811
102744    -- 
102745    --
102746    -- set accounting line type info
102747    --
102748    xla_ae_lines_pkg.SetAcctLineType
102749       (p_component_type             => l_component_type
102750       ,p_event_type_code            => l_event_type_code
102751       ,p_line_definition_owner_code => l_line_definition_owner_code
102752       ,p_line_definition_code       => l_line_definition_code
102753       ,p_accounting_line_code       => l_component_code
102754       ,p_accounting_line_type_code  => l_component_type_code
102755       ,p_accounting_line_appl_id    => l_component_appl_id
102756       ,p_amb_context_code           => l_amb_context_code
102757       ,p_entity_code                => l_entity_code
102758       ,p_event_class_code           => l_event_class_code);
102759    --
102760    -- set accounting class
102761    --
102762    xla_ae_lines_pkg.SetAcctClass(
102763            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
102764          , p_ae_header_id           => l_ae_header_id
102765          );
102766 
102767    --
102768    -- set rounding class
102769    --
102770    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102771                       'INTERORG_TRANSFER_CREDIT';
102772 
102773    --
102774    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102775    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102776    --
102777    -- bulk performance
102778    --
102779    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102780 
102781    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102782       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102783 
102784    -- 4955764
102785    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102786       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102787 
102788    -- 4458381 Public Sector Enh
102789    
102790    --
102791    -- set accounting attributes for the line type
102792    --
102793    l_entered_amt_idx := 3;
102794    l_accted_amt_idx  := 8;
102795    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
102796    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102797    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
102798    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102799    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
102800    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102801    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
102802    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102803    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
102804    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102805    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
102806    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102807    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
102808    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102809    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
102810    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102811    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
102812 
102813    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102814    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102815 
102816    ---------------------------------------------------------------------------------------------------------------
102817    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102818    ---------------------------------------------------------------------------------------------------------------
102819    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102820 
102821    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102822    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102823 
102824    IF xla_accounting_cache_pkg.GetValueChar
102825          (p_source_code         => 'LEDGER_CATEGORY_CODE'
102826          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102827    AND l_bflow_method_code = 'PRIOR_ENTRY'
102828 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102829    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102830          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102831        )
102832    THEN
102833          xla_ae_lines_pkg.BflowUpgEntry
102834            (p_business_method_code    => l_bflow_method_code
102835            ,p_business_class_code     => l_bflow_class_code
102836            ,p_balance_type            => l_balance_type_code);
102837    ELSE
102838       NULL;
102839 -- No business flow processing for business flow method of NONE.
102840    END IF;
102841 
102842    --
102843    -- call analytical criteria
102844    --
102845    
102846    --
102847    -- call description
102848    --
102849    
102850 xla_ae_lines_pkg.SetLineDescription(
102851    p_ae_header_id => l_ae_header_id
102852   ,p_description  => Description_1 (
102853      p_application_id         => p_application_id
102854    , p_ae_header_id           => l_ae_header_id 
102855 , p_source_1 => p_source_1
102856 , p_source_2 => p_source_2
102857 , p_source_3 => p_source_3
102858 , p_source_4 => p_source_4
102859 , p_source_5 => p_source_5
102860    )
102861 );
102862 
102863 
102864    --
102865    -- call ADRs
102866    -- Bug 4922099
102867    --
102868    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102869         (NVL(l_actual_upg_option, 'N') = 'O') OR
102870         (NVL(l_enc_upg_option, 'N') = 'O')
102871       )
102872    THEN
102873    NULL;
102874    --
102875    --
102876    
102877   l_ccid := AcctDerRule_6(
102878            p_application_id           => p_application_id
102879          , p_ae_header_id             => l_ae_header_id 
102880 , p_source_11 => p_source_11
102881          , x_transaction_coa_id       => l_adr_transaction_coa_id
102882          , x_accounting_coa_id        => l_adr_accounting_coa_id
102883          , x_value_type_code          => l_adr_value_type_code
102884          , p_side                     => 'NA'
102885    );
102886 
102887    xla_ae_lines_pkg.set_ccid(
102888     p_code_combination_id          => l_ccid
102889   , p_value_type_code              => l_adr_value_type_code
102890   , p_transaction_coa_id           => l_adr_transaction_coa_id
102891   , p_accounting_coa_id            => l_adr_accounting_coa_id
102892   , p_adr_code                     => 'CST_DEFAULT'
102893   , p_adr_type_code                => 'S'
102894   , p_component_type               => l_component_type
102895   , p_component_code               => l_component_code
102896   , p_component_type_code          => l_component_type_code
102897   , p_component_appl_id            => l_component_appl_id
102898   , p_amb_context_code             => l_amb_context_code
102899   , p_side                         => 'NA'
102900   );
102901 
102902 
102903    --
102904    --
102905    END IF;
102906    --
102907    -- Bug 4922099
102908    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102909           (NVL(l_enc_upg_option, 'N') = 'O')
102910         ) AND
102911         (l_bflow_method_code = 'PRIOR_ENTRY')
102912       )
102913    THEN
102914       IF
102915       --
102916       1 = 2
102917       --
102918       THEN
102919       xla_accounting_err_pkg.build_message
102920                                     (p_appli_s_name            => 'XLA'
102921                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102922                                     ,p_token_1                 => 'LINE_NUMBER'
102923                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
102924                                     ,p_token_2                 => 'LINE_TYPE_NAME'
102925                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
102926                                                                              l_component_type
102927                                                                             ,l_component_code
102928                                                                             ,l_component_type_code
102929                                                                             ,l_component_appl_id
102930                                                                             ,l_amb_context_code
102931                                                                             ,l_entity_code
102932                                                                             ,l_event_class_code
102933                                                                            )
102934                                     ,p_token_3                 => 'OWNER'
102935                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
102936                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
102937                                                                           ,p_lookup_code    => l_component_type_code
102938                                                                          )
102939                                     ,p_token_4                 => 'PRODUCT_NAME'
102940                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102941                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102942                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102943                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102944                                     ,p_ae_header_id            =>  NULL
102945                                        );
102946 
102947         IF (C_LEVEL_ERROR>= g_log_level) THEN
102948                  trace
102949                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102950                       ,p_level    => C_LEVEL_ERROR
102951                       ,p_module   => l_log_module);
102952         END IF;
102953       END IF;
102954    END IF;
102955    --
102956    --
102957    ------------------------------------------------------------------------------------------------
102958    -- 4219869 Business Flow
102959    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102960    -- Prior Entry.  Currently, the following code is always generated.
102961    ------------------------------------------------------------------------------------------------
102962    XLA_AE_LINES_PKG.ValidateCurrentLine;
102963 
102964    ------------------------------------------------------------------------------------
102965    -- 4219869 Business Flow
102966    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102967    ------------------------------------------------------------------------------------
102968    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102969 
102970    ----------------------------------------------------------------------------------
102971    -- 4219869 Business Flow
102972    -- Update journal entry status -- Need to generate this within IF <condition>
102973    ----------------------------------------------------------------------------------
102974    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102975          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102976          ,p_balance_type_code => l_balance_type_code
102977          );
102978 
102979    -------------------------------------------------------------------------------------------
102980    -- 4262811 - Generate the Accrual Reversal lines
102981    -------------------------------------------------------------------------------------------
102982    BEGIN
102983       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102984                               (g_array_event(p_event_id).array_value_num('header_index'));
102985       IF l_acc_rev_flag IS NULL THEN
102986          l_acc_rev_flag := 'N';
102987       END IF;
102988    EXCEPTION
102989       WHEN OTHERS THEN
102990          l_acc_rev_flag := 'N';
102991    END;
102992    --
102993    IF (l_acc_rev_flag = 'Y') THEN
102994 
102995        -- 4645092  ------------------------------------------------------------------------------
102996        -- To allow MPA report to determine if it should generate report process
102997        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102998        ------------------------------------------------------------------------------------------
102999 
103000        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103001        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103002    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103003    -- call ADRs
103004    -- Bug 4922099
103005    --
103006    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103007         (NVL(l_actual_upg_option, 'N') = 'O') OR
103008         (NVL(l_enc_upg_option, 'N') = 'O')
103009       )
103010    THEN
103011    NULL;
103012    --
103013    --
103014    
103015   l_ccid := AcctDerRule_6(
103016            p_application_id           => p_application_id
103017          , p_ae_header_id             => l_ae_header_id 
103018 , p_source_11 => p_source_11
103019          , x_transaction_coa_id       => l_adr_transaction_coa_id
103020          , x_accounting_coa_id        => l_adr_accounting_coa_id
103021          , x_value_type_code          => l_adr_value_type_code
103022          , p_side                     => 'NA'
103023    );
103024 
103025    xla_ae_lines_pkg.set_ccid(
103026     p_code_combination_id          => l_ccid
103027   , p_value_type_code              => l_adr_value_type_code
103028   , p_transaction_coa_id           => l_adr_transaction_coa_id
103029   , p_accounting_coa_id            => l_adr_accounting_coa_id
103030   , p_adr_code                     => 'CST_DEFAULT'
103031   , p_adr_type_code                => 'S'
103032   , p_component_type               => l_component_type
103033   , p_component_code               => l_component_code
103034   , p_component_type_code          => l_component_type_code
103035   , p_component_appl_id            => l_component_appl_id
103036   , p_amb_context_code             => l_amb_context_code
103037   , p_side                         => 'NA'
103038   );
103039 
103040 
103041    --
103042    --
103043    END IF;
103044 
103045        --
103046        -- Update the line information that should be overwritten
103047        --
103048        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103049                                          p_header_num   => 1);
103050        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103051 
103052        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103053 
103054        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103055           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103056        END IF;
103057 
103058       --
103059       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103060       --
103061       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103062           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103063       ELSE
103064           ---------------------------------------------------------------------------------------------------
103065           -- 4262811a Switch Sign
103066           ---------------------------------------------------------------------------------------------------
103067           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103068           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103069                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103070           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103071                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103072           -- 5132302
103073           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103074                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103075 
103076       END IF;
103077 
103078       -- 4955764
103079       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103080       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103081 
103082 
103083       XLA_AE_LINES_PKG.ValidateCurrentLine;
103084       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103085 
103086       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103087                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103088                ,p_balance_type_code => l_balance_type_code);
103089 
103090    END IF;
103091 
103092    -----------------------------------------------------------------------------------------
103093    -- 4262811 Multiperiod Accounting
103094    -----------------------------------------------------------------------------------------
103095      -- No MPA option is assigned.
103096 
103097 
103098 END IF;
103099 END IF;
103100 --
103101 
103102 --
103103 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103104    trace
103105       (p_msg      => 'END of AcctLineType_204'
103106       ,p_level    => C_LEVEL_PROCEDURE
103107       ,p_module   => l_log_module);
103108 END IF;
103109 --
103110 EXCEPTION
103111   WHEN xla_exceptions_pkg.application_exception THEN
103112       RAISE;
103113   WHEN OTHERS THEN
103114        xla_exceptions_pkg.raise_message
103115            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_204');
103116 END AcctLineType_204;
103117 --
103118 
103119 ---------------------------------------
103120 --
103121 -- PRIVATE FUNCTION
103122 --         AcctLineType_205
103123 --
103124 ---------------------------------------
103125 PROCEDURE AcctLineType_205 (
103126   p_application_id        IN NUMBER
103127  ,p_event_id              IN NUMBER
103128  ,p_calculate_acctd_flag  IN VARCHAR2
103129  ,p_calculate_g_l_flag    IN VARCHAR2
103130  ,p_actual_flag           IN OUT VARCHAR2
103131  ,p_balance_type_code     OUT VARCHAR2
103132  ,p_gain_or_loss_ref      OUT VARCHAR2
103133  
103134 --TRANSACTION_ID
103135  , p_source_1            IN NUMBER
103136 --Item Concatenated Segments
103137  , p_source_2            IN VARCHAR2
103138 --Transaction Quantity
103139  , p_source_3            IN NUMBER
103140 --Transaction Unit of Measure Code
103141  , p_source_4            IN VARCHAR2
103142 --Inventory Transaction Type Description
103143  , p_source_5            IN VARCHAR2
103144 --Cost Management Default Account
103145  , p_source_11            IN NUMBER
103146 --Applied to Application ID
103147  , p_source_79            IN NUMBER
103148 --Applied to Distribution Link Type
103149  , p_source_80            IN VARCHAR2
103150 --Applied to Entity Code
103151  , p_source_81            IN VARCHAR2
103152 --DISTRIBUTION_IDENTIFIER
103153  , p_source_84            IN NUMBER
103154 --Distribution Type
103155  , p_source_85            IN VARCHAR2
103156  , p_source_85_meaning    IN VARCHAR2
103157 --Encumbrance Reversal Amount Entered
103158  , p_source_87            IN NUMBER
103159 --Entered Currency Code
103160  , p_source_88            IN VARCHAR2
103161 --Transaction Encumbrance Reversal Amount
103162  , p_source_89            IN NUMBER
103163 --Entered Amount
103164  , p_source_91            IN NUMBER
103165 --Currency Conversion Date
103166  , p_source_92            IN DATE
103167 --Currency Conversion Rate
103168  , p_source_93            IN NUMBER
103169 --Currency Conversion Type
103170  , p_source_94            IN VARCHAR2
103171 --Accounted Amount
103172  , p_source_95            IN NUMBER
103173 --Accounting Line Type
103174  , p_source_97            IN NUMBER
103175 --Costing Encumbrance Upgrade Option
103176  , p_source_100            IN VARCHAR2
103177 --TXN_PO_DISTRIBUTION_ID
103178  , p_source_101            IN NUMBER
103179 --TXN_PO_HEADER_ID
103180  , p_source_102            IN NUMBER
103181 --Requisition Budget Account
103182  , p_source_103            IN NUMBER
103183 --Requisition Encumbrance Type Identifier
103184  , p_source_104            IN NUMBER
103185 )
103186 IS
103187 
103188 l_component_type              VARCHAR2(80);
103189 l_component_code              VARCHAR2(30);
103190 l_component_type_code         VARCHAR2(1);
103191 l_component_appl_id           INTEGER;
103192 l_amb_context_code            VARCHAR2(30);
103193 l_entity_code                 VARCHAR2(30);
103194 l_event_class_code            VARCHAR2(30);
103195 l_ae_header_id                NUMBER;
103196 l_event_type_code             VARCHAR2(30);
103197 l_line_definition_code        VARCHAR2(30);
103198 l_line_definition_owner_code  VARCHAR2(1);
103199 --
103200 -- adr variables
103201 l_segment                     VARCHAR2(30);
103202 l_ccid                        NUMBER;
103203 l_adr_transaction_coa_id      NUMBER;
103204 l_adr_accounting_coa_id       NUMBER;
103205 l_adr_flexfield_segment_code  VARCHAR2(30);
103206 l_adr_flex_value_set_id       NUMBER;
103207 l_adr_value_type_code         VARCHAR2(30);
103208 l_adr_value_combination_id    NUMBER;
103209 l_adr_value_segment_code      VARCHAR2(30);
103210 
103211 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103212 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103213 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103214 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103215 
103216 -- 4262811 Variables ------------------------------------------------------------------------------------------
103217 l_entered_amt_idx             NUMBER;
103218 l_accted_amt_idx              NUMBER;
103219 l_acc_rev_flag                VARCHAR2(1);
103220 l_accrual_line_num            NUMBER;
103221 l_tmp_amt                     NUMBER;
103222 l_acc_rev_natural_side_code   VARCHAR2(1);
103223 
103224 l_num_entries                 NUMBER;
103225 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103226 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103227 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103228 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103229 l_recog_line_1                NUMBER;
103230 l_recog_line_2                NUMBER;
103231 
103232 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103233 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103234 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103235 
103236 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103237 
103238 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103239 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103240 
103241 ---------------------------------------------------------------------------------------------------------------
103242 
103243 
103244 --
103245 -- bulk performance
103246 --
103247 l_balance_type_code           VARCHAR2(1);
103248 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103249 l_log_module                  VARCHAR2(240);
103250 
103251 --
103252 -- Upgrade strategy
103253 --
103254 l_actual_upg_option           VARCHAR2(1);
103255 l_enc_upg_option           VARCHAR2(1);
103256 
103257 --
103258 BEGIN
103259 --
103260 IF g_log_enabled THEN
103261       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_205';
103262 END IF;
103263 --
103264 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103265 
103266       trace
103267          (p_msg      => 'BEGIN of AcctLineType_205'
103268          ,p_level    => C_LEVEL_PROCEDURE
103269          ,p_module   => l_log_module);
103270 
103271 END IF;
103272 --
103273 l_component_type             := 'AMB_JLT';
103274 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
103275 l_component_type_code        := 'S';
103276 l_component_appl_id          :=  707;
103277 l_amb_context_code           := 'DEFAULT';
103278 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
103279 l_event_class_code           := 'DIR_INTERORG_RCPT';
103280 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
103281 l_line_definition_owner_code := 'S';
103282 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
103283 --
103284 l_balance_type_code          := 'A';
103285 l_segment                     := NULL;
103286 l_ccid                        := NULL;
103287 l_adr_transaction_coa_id      := NULL;
103288 l_adr_accounting_coa_id       := NULL;
103289 l_adr_flexfield_segment_code  := NULL;
103290 l_adr_flex_value_set_id       := NULL;
103291 l_adr_value_type_code         := NULL;
103292 l_adr_value_combination_id    := NULL;
103293 l_adr_value_segment_code      := NULL;
103294 
103295 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
103296 l_bflow_class_code           := '';    -- 4219869 Business Flow
103297 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
103298 l_budgetary_control_flag     := 'N';
103299 
103300 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
103301 l_bflow_applied_to_amt       := NULL; -- 5132302
103302 l_entered_amt_idx            := NULL;          -- 4262811
103303 l_accted_amt_idx             := NULL;          -- 4262811
103304 l_acc_rev_flag               := NULL;          -- 4262811
103305 l_accrual_line_num           := NULL;          -- 4262811
103306 l_tmp_amt                    := NULL;          -- 4262811
103307 --
103308  
103309 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103310     l_balance_type_code <> 'B' THEN
103311 IF NVL(p_source_97,9E125) =  11
103312  THEN 
103313 
103314    --
103315    XLA_AE_LINES_PKG.SetNewLine;
103316 
103317    p_balance_type_code          := l_balance_type_code;
103318    -- set the flag so later we will know whether the gain loss line needs to be created
103319    
103320    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103321      p_actual_flag :='A';
103322    END IF;
103323 
103324    --
103325    -- bulk performance
103326    --
103327    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103328                                       p_header_num   => 0); -- 4262811
103329    --
103330    -- set accounting line options
103331    --
103332    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103333            p_natural_side_code          => 'D'
103334          , p_gain_or_loss_flag          => 'N'
103335          , p_gl_transfer_mode_code      => 'S'
103336          , p_acct_entry_type_code       => 'A'
103337          , p_switch_side_flag           => 'Y'
103338          , p_merge_duplicate_code       => 'N'
103339          );
103340    --
103341    l_acc_rev_natural_side_code := 'C';  -- 4262811
103342    -- 
103343    --
103344    -- set accounting line type info
103345    --
103346    xla_ae_lines_pkg.SetAcctLineType
103347       (p_component_type             => l_component_type
103348       ,p_event_type_code            => l_event_type_code
103349       ,p_line_definition_owner_code => l_line_definition_owner_code
103350       ,p_line_definition_code       => l_line_definition_code
103351       ,p_accounting_line_code       => l_component_code
103352       ,p_accounting_line_type_code  => l_component_type_code
103353       ,p_accounting_line_appl_id    => l_component_appl_id
103354       ,p_amb_context_code           => l_amb_context_code
103355       ,p_entity_code                => l_entity_code
103356       ,p_event_class_code           => l_event_class_code);
103357    --
103358    -- set accounting class
103359    --
103360    xla_ae_lines_pkg.SetAcctClass(
103361            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
103362          , p_ae_header_id           => l_ae_header_id
103363          );
103364 
103365    --
103366    -- set rounding class
103367    --
103368    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103369                       'INTERORG_TRANSFER_CREDIT';
103370 
103371    --
103372    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103373    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103374    --
103375    -- bulk performance
103376    --
103377    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103378 
103379    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103380       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103381 
103382    -- 4955764
103383    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103385 
103386    -- 4458381 Public Sector Enh
103387    
103388    --
103389    -- set accounting attributes for the line type
103390    --
103391    l_entered_amt_idx := 17;
103392    l_accted_amt_idx  := 22;
103393    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
103394    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
103395    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
103396    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
103397    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
103398    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
103399    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
103400    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
103401    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
103402    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
103403    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
103404    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
103405    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
103406    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
103407    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
103408    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
103409    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
103410    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
103411    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
103412    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
103413    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
103414    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
103415    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
103416    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
103417    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
103418    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
103419    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
103420    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
103421    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
103422    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
103423    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
103424    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
103425    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
103426    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
103427    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
103428    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
103429    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
103430    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
103431    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
103432    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
103433    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
103434    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
103435    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
103436    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
103437    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
103438    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
103439    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
103440    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
103441    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
103442 
103443    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103444    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103445 
103446    ---------------------------------------------------------------------------------------------------------------
103447    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103448    ---------------------------------------------------------------------------------------------------------------
103449    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103450 
103451    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103452    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103453 
103454    IF xla_accounting_cache_pkg.GetValueChar
103455          (p_source_code         => 'LEDGER_CATEGORY_CODE'
103456          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103457    AND l_bflow_method_code = 'PRIOR_ENTRY'
103458 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103459    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103460          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103461        )
103462    THEN
103463          xla_ae_lines_pkg.BflowUpgEntry
103464            (p_business_method_code    => l_bflow_method_code
103465            ,p_business_class_code     => l_bflow_class_code
103466            ,p_balance_type            => l_balance_type_code);
103467    ELSE
103468       NULL;
103469 -- No business flow processing for business flow method of NONE.
103470    END IF;
103471 
103472    --
103473    -- call analytical criteria
103474    --
103475    
103476    --
103477    -- call description
103478    --
103479    
103480 xla_ae_lines_pkg.SetLineDescription(
103481    p_ae_header_id => l_ae_header_id
103482   ,p_description  => Description_1 (
103483      p_application_id         => p_application_id
103484    , p_ae_header_id           => l_ae_header_id 
103485 , p_source_1 => p_source_1
103486 , p_source_2 => p_source_2
103487 , p_source_3 => p_source_3
103488 , p_source_4 => p_source_4
103489 , p_source_5 => p_source_5
103490    )
103491 );
103492 
103493 
103494    --
103495    -- call ADRs
103496    -- Bug 4922099
103497    --
103498    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103499         (NVL(l_actual_upg_option, 'N') = 'O') OR
103500         (NVL(l_enc_upg_option, 'N') = 'O')
103501       )
103502    THEN
103503    NULL;
103504    --
103505    --
103506    
103507   l_ccid := AcctDerRule_6(
103508            p_application_id           => p_application_id
103509          , p_ae_header_id             => l_ae_header_id 
103510 , p_source_11 => p_source_11
103511          , x_transaction_coa_id       => l_adr_transaction_coa_id
103512          , x_accounting_coa_id        => l_adr_accounting_coa_id
103513          , x_value_type_code          => l_adr_value_type_code
103514          , p_side                     => 'NA'
103515    );
103516 
103517    xla_ae_lines_pkg.set_ccid(
103518     p_code_combination_id          => l_ccid
103519   , p_value_type_code              => l_adr_value_type_code
103520   , p_transaction_coa_id           => l_adr_transaction_coa_id
103521   , p_accounting_coa_id            => l_adr_accounting_coa_id
103522   , p_adr_code                     => 'CST_DEFAULT'
103523   , p_adr_type_code                => 'S'
103524   , p_component_type               => l_component_type
103525   , p_component_code               => l_component_code
103526   , p_component_type_code          => l_component_type_code
103527   , p_component_appl_id            => l_component_appl_id
103528   , p_amb_context_code             => l_amb_context_code
103529   , p_side                         => 'NA'
103530   );
103531 
103532 
103533    --
103534    --
103535    END IF;
103536    --
103537    -- Bug 4922099
103538    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103539           (NVL(l_enc_upg_option, 'N') = 'O')
103540         ) AND
103541         (l_bflow_method_code = 'PRIOR_ENTRY')
103542       )
103543    THEN
103544       IF
103545       --
103546       1 = 2
103547       --
103548       THEN
103549       xla_accounting_err_pkg.build_message
103550                                     (p_appli_s_name            => 'XLA'
103551                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103552                                     ,p_token_1                 => 'LINE_NUMBER'
103553                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
103554                                     ,p_token_2                 => 'LINE_TYPE_NAME'
103555                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
103556                                                                              l_component_type
103557                                                                             ,l_component_code
103558                                                                             ,l_component_type_code
103559                                                                             ,l_component_appl_id
103560                                                                             ,l_amb_context_code
103561                                                                             ,l_entity_code
103562                                                                             ,l_event_class_code
103563                                                                            )
103564                                     ,p_token_3                 => 'OWNER'
103565                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
103566                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
103567                                                                           ,p_lookup_code    => l_component_type_code
103568                                                                          )
103569                                     ,p_token_4                 => 'PRODUCT_NAME'
103570                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103571                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103572                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103573                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103574                                     ,p_ae_header_id            =>  NULL
103575                                        );
103576 
103577         IF (C_LEVEL_ERROR>= g_log_level) THEN
103578                  trace
103579                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103580                       ,p_level    => C_LEVEL_ERROR
103581                       ,p_module   => l_log_module);
103582         END IF;
103583       END IF;
103584    END IF;
103585    --
103586    --
103587    ------------------------------------------------------------------------------------------------
103588    -- 4219869 Business Flow
103589    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103590    -- Prior Entry.  Currently, the following code is always generated.
103591    ------------------------------------------------------------------------------------------------
103592    XLA_AE_LINES_PKG.ValidateCurrentLine;
103593 
103594    ------------------------------------------------------------------------------------
103595    -- 4219869 Business Flow
103596    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103597    ------------------------------------------------------------------------------------
103598    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103599 
103600    ----------------------------------------------------------------------------------
103601    -- 4219869 Business Flow
103602    -- Update journal entry status -- Need to generate this within IF <condition>
103603    ----------------------------------------------------------------------------------
103604    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103605          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103606          ,p_balance_type_code => l_balance_type_code
103607          );
103608 
103609    -------------------------------------------------------------------------------------------
103610    -- 4262811 - Generate the Accrual Reversal lines
103611    -------------------------------------------------------------------------------------------
103612    BEGIN
103613       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103614                               (g_array_event(p_event_id).array_value_num('header_index'));
103615       IF l_acc_rev_flag IS NULL THEN
103616          l_acc_rev_flag := 'N';
103617       END IF;
103618    EXCEPTION
103619       WHEN OTHERS THEN
103620          l_acc_rev_flag := 'N';
103621    END;
103622    --
103623    IF (l_acc_rev_flag = 'Y') THEN
103624 
103625        -- 4645092  ------------------------------------------------------------------------------
103626        -- To allow MPA report to determine if it should generate report process
103627        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103628        ------------------------------------------------------------------------------------------
103629 
103630        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103631        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103632    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
103633    -- call ADRs
103634    -- Bug 4922099
103635    --
103636    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103637         (NVL(l_actual_upg_option, 'N') = 'O') OR
103638         (NVL(l_enc_upg_option, 'N') = 'O')
103639       )
103640    THEN
103641    NULL;
103642    --
103643    --
103644    
103645   l_ccid := AcctDerRule_6(
103646            p_application_id           => p_application_id
103647          , p_ae_header_id             => l_ae_header_id 
103648 , p_source_11 => p_source_11
103649          , x_transaction_coa_id       => l_adr_transaction_coa_id
103650          , x_accounting_coa_id        => l_adr_accounting_coa_id
103651          , x_value_type_code          => l_adr_value_type_code
103652          , p_side                     => 'NA'
103653    );
103654 
103655    xla_ae_lines_pkg.set_ccid(
103656     p_code_combination_id          => l_ccid
103657   , p_value_type_code              => l_adr_value_type_code
103658   , p_transaction_coa_id           => l_adr_transaction_coa_id
103659   , p_accounting_coa_id            => l_adr_accounting_coa_id
103660   , p_adr_code                     => 'CST_DEFAULT'
103661   , p_adr_type_code                => 'S'
103662   , p_component_type               => l_component_type
103663   , p_component_code               => l_component_code
103664   , p_component_type_code          => l_component_type_code
103665   , p_component_appl_id            => l_component_appl_id
103666   , p_amb_context_code             => l_amb_context_code
103667   , p_side                         => 'NA'
103668   );
103669 
103670 
103671    --
103672    --
103673    END IF;
103674 
103675        --
103676        -- Update the line information that should be overwritten
103677        --
103678        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103679                                          p_header_num   => 1);
103680        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
103681 
103682        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103683 
103684        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
103685           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103686        END IF;
103687 
103688       --
103689       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103690       --
103691       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103692           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
103693       ELSE
103694           ---------------------------------------------------------------------------------------------------
103695           -- 4262811a Switch Sign
103696           ---------------------------------------------------------------------------------------------------
103697           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
103698           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103699                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103700           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103701                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103702           -- 5132302
103703           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103704                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103705 
103706       END IF;
103707 
103708       -- 4955764
103709       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103711 
103712 
103713       XLA_AE_LINES_PKG.ValidateCurrentLine;
103714       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103715 
103716       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103717                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103718                ,p_balance_type_code => l_balance_type_code);
103719 
103720    END IF;
103721 
103722    -----------------------------------------------------------------------------------------
103723    -- 4262811 Multiperiod Accounting
103724    -----------------------------------------------------------------------------------------
103725      -- No MPA option is assigned.
103726 
103727 
103728 END IF;
103729 END IF;
103730 --
103731 
103732 --
103733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103734    trace
103735       (p_msg      => 'END of AcctLineType_205'
103736       ,p_level    => C_LEVEL_PROCEDURE
103737       ,p_module   => l_log_module);
103738 END IF;
103739 --
103740 EXCEPTION
103741   WHEN xla_exceptions_pkg.application_exception THEN
103742       RAISE;
103743   WHEN OTHERS THEN
103744        xla_exceptions_pkg.raise_message
103745            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_205');
103746 END AcctLineType_205;
103747 --
103748 
103749 ---------------------------------------
103750 --
103751 -- PRIVATE FUNCTION
103752 --         AcctLineType_206
103753 --
103754 ---------------------------------------
103755 PROCEDURE AcctLineType_206 (
103756   p_application_id        IN NUMBER
103757  ,p_event_id              IN NUMBER
103758  ,p_calculate_acctd_flag  IN VARCHAR2
103759  ,p_calculate_g_l_flag    IN VARCHAR2
103760  ,p_actual_flag           IN OUT VARCHAR2
103761  ,p_balance_type_code     OUT VARCHAR2
103762  ,p_gain_or_loss_ref      OUT VARCHAR2
103763  
103764 --TRANSACTION_ID
103765  , p_source_1            IN NUMBER
103766 --Item Concatenated Segments
103767  , p_source_2            IN VARCHAR2
103768 --Transaction Quantity
103769  , p_source_3            IN NUMBER
103770 --Transaction Unit of Measure Code
103771  , p_source_4            IN VARCHAR2
103772 --Inventory Transaction Type Description
103773  , p_source_5            IN VARCHAR2
103774 --Interorg Transfer Credit Account
103775  , p_source_40            IN NUMBER
103776 --DISTRIBUTION_IDENTIFIER
103777  , p_source_84            IN NUMBER
103778 --Distribution Type
103779  , p_source_85            IN VARCHAR2
103780  , p_source_85_meaning    IN VARCHAR2
103781 --Entered Currency Code
103782  , p_source_88            IN VARCHAR2
103783 --Entered Amount
103784  , p_source_91            IN NUMBER
103785 --Currency Conversion Date
103786  , p_source_92            IN DATE
103787 --Currency Conversion Rate
103788  , p_source_93            IN NUMBER
103789 --Currency Conversion Type
103790  , p_source_94            IN VARCHAR2
103791 --Accounted Amount
103792  , p_source_95            IN NUMBER
103793 --Accounting Line Type
103794  , p_source_97            IN NUMBER
103795 )
103796 IS
103797 
103798 l_component_type              VARCHAR2(80);
103799 l_component_code              VARCHAR2(30);
103800 l_component_type_code         VARCHAR2(1);
103801 l_component_appl_id           INTEGER;
103802 l_amb_context_code            VARCHAR2(30);
103803 l_entity_code                 VARCHAR2(30);
103804 l_event_class_code            VARCHAR2(30);
103805 l_ae_header_id                NUMBER;
103806 l_event_type_code             VARCHAR2(30);
103807 l_line_definition_code        VARCHAR2(30);
103808 l_line_definition_owner_code  VARCHAR2(1);
103809 --
103810 -- adr variables
103811 l_segment                     VARCHAR2(30);
103812 l_ccid                        NUMBER;
103813 l_adr_transaction_coa_id      NUMBER;
103814 l_adr_accounting_coa_id       NUMBER;
103815 l_adr_flexfield_segment_code  VARCHAR2(30);
103816 l_adr_flex_value_set_id       NUMBER;
103817 l_adr_value_type_code         VARCHAR2(30);
103818 l_adr_value_combination_id    NUMBER;
103819 l_adr_value_segment_code      VARCHAR2(30);
103820 
103821 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
103822 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
103823 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
103824 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
103825 
103826 -- 4262811 Variables ------------------------------------------------------------------------------------------
103827 l_entered_amt_idx             NUMBER;
103828 l_accted_amt_idx              NUMBER;
103829 l_acc_rev_flag                VARCHAR2(1);
103830 l_accrual_line_num            NUMBER;
103831 l_tmp_amt                     NUMBER;
103832 l_acc_rev_natural_side_code   VARCHAR2(1);
103833 
103834 l_num_entries                 NUMBER;
103835 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
103836 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
103837 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
103838 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
103839 l_recog_line_1                NUMBER;
103840 l_recog_line_2                NUMBER;
103841 
103842 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
103843 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
103844 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
103845 
103846 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103847 
103848 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
103849 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
103850 
103851 ---------------------------------------------------------------------------------------------------------------
103852 
103853 
103854 --
103855 -- bulk performance
103856 --
103857 l_balance_type_code           VARCHAR2(1);
103858 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
103859 l_log_module                  VARCHAR2(240);
103860 
103861 --
103862 -- Upgrade strategy
103863 --
103864 l_actual_upg_option           VARCHAR2(1);
103865 l_enc_upg_option           VARCHAR2(1);
103866 
103867 --
103868 BEGIN
103869 --
103870 IF g_log_enabled THEN
103871       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_206';
103872 END IF;
103873 --
103874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103875 
103876       trace
103877          (p_msg      => 'BEGIN of AcctLineType_206'
103878          ,p_level    => C_LEVEL_PROCEDURE
103879          ,p_module   => l_log_module);
103880 
103881 END IF;
103882 --
103883 l_component_type             := 'AMB_JLT';
103884 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
103885 l_component_type_code        := 'S';
103886 l_component_appl_id          :=  707;
103887 l_amb_context_code           := 'DEFAULT';
103888 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
103889 l_event_class_code           := 'USER_DEFINE';
103890 l_event_type_code            := 'UDIR_INTERORG_SHIP';
103891 l_line_definition_owner_code := 'S';
103892 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
103893 --
103894 l_balance_type_code          := 'A';
103895 l_segment                     := NULL;
103896 l_ccid                        := NULL;
103897 l_adr_transaction_coa_id      := NULL;
103898 l_adr_accounting_coa_id       := NULL;
103899 l_adr_flexfield_segment_code  := NULL;
103900 l_adr_flex_value_set_id       := NULL;
103901 l_adr_value_type_code         := NULL;
103902 l_adr_value_combination_id    := NULL;
103903 l_adr_value_segment_code      := NULL;
103904 
103905 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
103906 l_bflow_class_code           := '';    -- 4219869 Business Flow
103907 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
103908 l_budgetary_control_flag     := 'N';
103909 
103910 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
103911 l_bflow_applied_to_amt       := NULL; -- 5132302
103912 l_entered_amt_idx            := NULL;          -- 4262811
103913 l_accted_amt_idx             := NULL;          -- 4262811
103914 l_acc_rev_flag               := NULL;          -- 4262811
103915 l_accrual_line_num           := NULL;          -- 4262811
103916 l_tmp_amt                    := NULL;          -- 4262811
103917 --
103918  
103919 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103920     l_balance_type_code <> 'B' THEN
103921 IF NVL(p_source_97,9E125) =  11
103922  THEN 
103923 
103924    --
103925    XLA_AE_LINES_PKG.SetNewLine;
103926 
103927    p_balance_type_code          := l_balance_type_code;
103928    -- set the flag so later we will know whether the gain loss line needs to be created
103929    
103930    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103931      p_actual_flag :='A';
103932    END IF;
103933 
103934    --
103935    -- bulk performance
103936    --
103937    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103938                                       p_header_num   => 0); -- 4262811
103939    --
103940    -- set accounting line options
103941    --
103942    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103943            p_natural_side_code          => 'D'
103944          , p_gain_or_loss_flag          => 'N'
103945          , p_gl_transfer_mode_code      => 'S'
103946          , p_acct_entry_type_code       => 'A'
103947          , p_switch_side_flag           => 'Y'
103948          , p_merge_duplicate_code       => 'N'
103949          );
103950    --
103951    l_acc_rev_natural_side_code := 'C';  -- 4262811
103952    -- 
103953    --
103954    -- set accounting line type info
103955    --
103956    xla_ae_lines_pkg.SetAcctLineType
103957       (p_component_type             => l_component_type
103958       ,p_event_type_code            => l_event_type_code
103959       ,p_line_definition_owner_code => l_line_definition_owner_code
103960       ,p_line_definition_code       => l_line_definition_code
103961       ,p_accounting_line_code       => l_component_code
103962       ,p_accounting_line_type_code  => l_component_type_code
103963       ,p_accounting_line_appl_id    => l_component_appl_id
103964       ,p_amb_context_code           => l_amb_context_code
103965       ,p_entity_code                => l_entity_code
103966       ,p_event_class_code           => l_event_class_code);
103967    --
103968    -- set accounting class
103969    --
103970    xla_ae_lines_pkg.SetAcctClass(
103971            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
103972          , p_ae_header_id           => l_ae_header_id
103973          );
103974 
103975    --
103976    -- set rounding class
103977    --
103978    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103979                       'INTERORG_TRANSFER_CREDIT';
103980 
103981    --
103982    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103983    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103984    --
103985    -- bulk performance
103986    --
103987    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103988 
103989    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103990       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103991 
103992    -- 4955764
103993    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103994       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103995 
103996    -- 4458381 Public Sector Enh
103997    
103998    --
103999    -- set accounting attributes for the line type
104000    --
104001    l_entered_amt_idx := 3;
104002    l_accted_amt_idx  := 8;
104003    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
104004    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104005    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
104006    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104007    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
104008    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104009    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
104010    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104011    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
104012    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104013    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
104014    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104015    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
104016    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104017    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
104018    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104019    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
104020 
104021    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104022    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104023 
104024    ---------------------------------------------------------------------------------------------------------------
104025    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104026    ---------------------------------------------------------------------------------------------------------------
104027    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104028 
104029    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104030    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104031 
104032    IF xla_accounting_cache_pkg.GetValueChar
104033          (p_source_code         => 'LEDGER_CATEGORY_CODE'
104034          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104035    AND l_bflow_method_code = 'PRIOR_ENTRY'
104036 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104037    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104038          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104039        )
104040    THEN
104041          xla_ae_lines_pkg.BflowUpgEntry
104042            (p_business_method_code    => l_bflow_method_code
104043            ,p_business_class_code     => l_bflow_class_code
104044            ,p_balance_type            => l_balance_type_code);
104045    ELSE
104046       NULL;
104047 -- No business flow processing for business flow method of NONE.
104048    END IF;
104049 
104050    --
104051    -- call analytical criteria
104052    --
104053    
104054    --
104055    -- call description
104056    --
104057    
104058 xla_ae_lines_pkg.SetLineDescription(
104059    p_ae_header_id => l_ae_header_id
104060   ,p_description  => Description_1 (
104061      p_application_id         => p_application_id
104062    , p_ae_header_id           => l_ae_header_id 
104063 , p_source_1 => p_source_1
104064 , p_source_2 => p_source_2
104065 , p_source_3 => p_source_3
104066 , p_source_4 => p_source_4
104067 , p_source_5 => p_source_5
104068    )
104069 );
104070 
104071 
104072    --
104073    -- call ADRs
104074    -- Bug 4922099
104075    --
104076    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104077         (NVL(l_actual_upg_option, 'N') = 'O') OR
104078         (NVL(l_enc_upg_option, 'N') = 'O')
104079       )
104080    THEN
104081    NULL;
104082    --
104083    --
104084    
104085   l_ccid := AcctDerRule_24(
104086            p_application_id           => p_application_id
104087          , p_ae_header_id             => l_ae_header_id 
104088 , p_source_40 => p_source_40
104089          , x_transaction_coa_id       => l_adr_transaction_coa_id
104090          , x_accounting_coa_id        => l_adr_accounting_coa_id
104091          , x_value_type_code          => l_adr_value_type_code
104092          , p_side                     => 'NA'
104093    );
104094 
104095    xla_ae_lines_pkg.set_ccid(
104096     p_code_combination_id          => l_ccid
104097   , p_value_type_code              => l_adr_value_type_code
104098   , p_transaction_coa_id           => l_adr_transaction_coa_id
104099   , p_accounting_coa_id            => l_adr_accounting_coa_id
104100   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
104101   , p_adr_type_code                => 'S'
104102   , p_component_type               => l_component_type
104103   , p_component_code               => l_component_code
104104   , p_component_type_code          => l_component_type_code
104105   , p_component_appl_id            => l_component_appl_id
104106   , p_amb_context_code             => l_amb_context_code
104107   , p_side                         => 'NA'
104108   );
104109 
104110 
104111    --
104112    --
104113    END IF;
104114    --
104115    -- Bug 4922099
104116    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104117           (NVL(l_enc_upg_option, 'N') = 'O')
104118         ) AND
104119         (l_bflow_method_code = 'PRIOR_ENTRY')
104120       )
104121    THEN
104122       IF
104123       --
104124       1 = 2
104125       --
104126       THEN
104127       xla_accounting_err_pkg.build_message
104128                                     (p_appli_s_name            => 'XLA'
104129                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104130                                     ,p_token_1                 => 'LINE_NUMBER'
104131                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104132                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104133                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104134                                                                              l_component_type
104135                                                                             ,l_component_code
104136                                                                             ,l_component_type_code
104137                                                                             ,l_component_appl_id
104138                                                                             ,l_amb_context_code
104139                                                                             ,l_entity_code
104140                                                                             ,l_event_class_code
104141                                                                            )
104142                                     ,p_token_3                 => 'OWNER'
104143                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104144                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104145                                                                           ,p_lookup_code    => l_component_type_code
104146                                                                          )
104147                                     ,p_token_4                 => 'PRODUCT_NAME'
104148                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104149                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104150                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104151                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104152                                     ,p_ae_header_id            =>  NULL
104153                                        );
104154 
104155         IF (C_LEVEL_ERROR>= g_log_level) THEN
104156                  trace
104157                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104158                       ,p_level    => C_LEVEL_ERROR
104159                       ,p_module   => l_log_module);
104160         END IF;
104161       END IF;
104162    END IF;
104163    --
104164    --
104165    ------------------------------------------------------------------------------------------------
104166    -- 4219869 Business Flow
104167    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104168    -- Prior Entry.  Currently, the following code is always generated.
104169    ------------------------------------------------------------------------------------------------
104170    XLA_AE_LINES_PKG.ValidateCurrentLine;
104171 
104172    ------------------------------------------------------------------------------------
104173    -- 4219869 Business Flow
104174    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104175    ------------------------------------------------------------------------------------
104176    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104177 
104178    ----------------------------------------------------------------------------------
104179    -- 4219869 Business Flow
104180    -- Update journal entry status -- Need to generate this within IF <condition>
104181    ----------------------------------------------------------------------------------
104182    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104183          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104184          ,p_balance_type_code => l_balance_type_code
104185          );
104186 
104187    -------------------------------------------------------------------------------------------
104188    -- 4262811 - Generate the Accrual Reversal lines
104189    -------------------------------------------------------------------------------------------
104190    BEGIN
104191       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104192                               (g_array_event(p_event_id).array_value_num('header_index'));
104193       IF l_acc_rev_flag IS NULL THEN
104194          l_acc_rev_flag := 'N';
104195       END IF;
104196    EXCEPTION
104197       WHEN OTHERS THEN
104198          l_acc_rev_flag := 'N';
104199    END;
104200    --
104201    IF (l_acc_rev_flag = 'Y') THEN
104202 
104203        -- 4645092  ------------------------------------------------------------------------------
104204        -- To allow MPA report to determine if it should generate report process
104205        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104206        ------------------------------------------------------------------------------------------
104207 
104208        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104209        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104210    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104211    -- call ADRs
104212    -- Bug 4922099
104213    --
104214    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104215         (NVL(l_actual_upg_option, 'N') = 'O') OR
104216         (NVL(l_enc_upg_option, 'N') = 'O')
104217       )
104218    THEN
104219    NULL;
104220    --
104221    --
104222    
104223   l_ccid := AcctDerRule_24(
104224            p_application_id           => p_application_id
104225          , p_ae_header_id             => l_ae_header_id 
104226 , p_source_40 => p_source_40
104227          , x_transaction_coa_id       => l_adr_transaction_coa_id
104228          , x_accounting_coa_id        => l_adr_accounting_coa_id
104229          , x_value_type_code          => l_adr_value_type_code
104230          , p_side                     => 'NA'
104231    );
104232 
104233    xla_ae_lines_pkg.set_ccid(
104234     p_code_combination_id          => l_ccid
104235   , p_value_type_code              => l_adr_value_type_code
104236   , p_transaction_coa_id           => l_adr_transaction_coa_id
104237   , p_accounting_coa_id            => l_adr_accounting_coa_id
104238   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
104239   , p_adr_type_code                => 'S'
104240   , p_component_type               => l_component_type
104241   , p_component_code               => l_component_code
104242   , p_component_type_code          => l_component_type_code
104243   , p_component_appl_id            => l_component_appl_id
104244   , p_amb_context_code             => l_amb_context_code
104245   , p_side                         => 'NA'
104246   );
104247 
104248 
104249    --
104250    --
104251    END IF;
104252 
104253        --
104254        -- Update the line information that should be overwritten
104255        --
104256        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104257                                          p_header_num   => 1);
104258        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104259 
104260        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104261 
104262        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104263           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104264        END IF;
104265 
104266       --
104267       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104268       --
104269       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104270           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104271       ELSE
104272           ---------------------------------------------------------------------------------------------------
104273           -- 4262811a Switch Sign
104274           ---------------------------------------------------------------------------------------------------
104275           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104276           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104277                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104278           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104279                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104280           -- 5132302
104281           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104282                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104283 
104284       END IF;
104285 
104286       -- 4955764
104287       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104288       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104289 
104290 
104291       XLA_AE_LINES_PKG.ValidateCurrentLine;
104292       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104293 
104294       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104295                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104296                ,p_balance_type_code => l_balance_type_code);
104297 
104298    END IF;
104299 
104300    -----------------------------------------------------------------------------------------
104301    -- 4262811 Multiperiod Accounting
104302    -----------------------------------------------------------------------------------------
104303      -- No MPA option is assigned.
104304 
104305 
104306 END IF;
104307 END IF;
104308 --
104309 
104310 --
104311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104312    trace
104313       (p_msg      => 'END of AcctLineType_206'
104314       ,p_level    => C_LEVEL_PROCEDURE
104315       ,p_module   => l_log_module);
104316 END IF;
104317 --
104318 EXCEPTION
104319   WHEN xla_exceptions_pkg.application_exception THEN
104320       RAISE;
104321   WHEN OTHERS THEN
104322        xla_exceptions_pkg.raise_message
104323            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_206');
104324 END AcctLineType_206;
104325 --
104326 
104327 ---------------------------------------
104328 --
104329 -- PRIVATE FUNCTION
104330 --         AcctLineType_207
104331 --
104332 ---------------------------------------
104333 PROCEDURE AcctLineType_207 (
104334   p_application_id        IN NUMBER
104335  ,p_event_id              IN NUMBER
104336  ,p_calculate_acctd_flag  IN VARCHAR2
104337  ,p_calculate_g_l_flag    IN VARCHAR2
104338  ,p_actual_flag           IN OUT VARCHAR2
104339  ,p_balance_type_code     OUT VARCHAR2
104340  ,p_gain_or_loss_ref      OUT VARCHAR2
104341  
104342 --Interorg Transfer Credit Account
104343  , p_source_40            IN NUMBER
104344 --DISTRIBUTION_IDENTIFIER
104345  , p_source_84            IN NUMBER
104346 --Distribution Type
104347  , p_source_85            IN VARCHAR2
104348  , p_source_85_meaning    IN VARCHAR2
104349 --Entered Currency Code
104350  , p_source_88            IN VARCHAR2
104351 --Entered Amount
104352  , p_source_91            IN NUMBER
104353 --Currency Conversion Date
104354  , p_source_92            IN DATE
104355 --Currency Conversion Rate
104356  , p_source_93            IN NUMBER
104357 --Currency Conversion Type
104358  , p_source_94            IN VARCHAR2
104359 --Accounted Amount
104360  , p_source_95            IN NUMBER
104361 --Accounting Line Type
104362  , p_source_97            IN NUMBER
104363 )
104364 IS
104365 
104366 l_component_type              VARCHAR2(80);
104367 l_component_code              VARCHAR2(30);
104368 l_component_type_code         VARCHAR2(1);
104369 l_component_appl_id           INTEGER;
104370 l_amb_context_code            VARCHAR2(30);
104371 l_entity_code                 VARCHAR2(30);
104372 l_event_class_code            VARCHAR2(30);
104373 l_ae_header_id                NUMBER;
104374 l_event_type_code             VARCHAR2(30);
104375 l_line_definition_code        VARCHAR2(30);
104376 l_line_definition_owner_code  VARCHAR2(1);
104377 --
104378 -- adr variables
104379 l_segment                     VARCHAR2(30);
104380 l_ccid                        NUMBER;
104381 l_adr_transaction_coa_id      NUMBER;
104382 l_adr_accounting_coa_id       NUMBER;
104383 l_adr_flexfield_segment_code  VARCHAR2(30);
104384 l_adr_flex_value_set_id       NUMBER;
104385 l_adr_value_type_code         VARCHAR2(30);
104386 l_adr_value_combination_id    NUMBER;
104387 l_adr_value_segment_code      VARCHAR2(30);
104388 
104389 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
104390 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
104391 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
104392 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
104393 
104394 -- 4262811 Variables ------------------------------------------------------------------------------------------
104395 l_entered_amt_idx             NUMBER;
104396 l_accted_amt_idx              NUMBER;
104397 l_acc_rev_flag                VARCHAR2(1);
104398 l_accrual_line_num            NUMBER;
104399 l_tmp_amt                     NUMBER;
104400 l_acc_rev_natural_side_code   VARCHAR2(1);
104401 
104402 l_num_entries                 NUMBER;
104403 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
104404 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
104405 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
104406 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
104407 l_recog_line_1                NUMBER;
104408 l_recog_line_2                NUMBER;
104409 
104410 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
104411 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
104412 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
104413 
104414 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104415 
104416 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
104417 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
104418 
104419 ---------------------------------------------------------------------------------------------------------------
104420 
104421 
104422 --
104423 -- bulk performance
104424 --
104425 l_balance_type_code           VARCHAR2(1);
104426 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
104427 l_log_module                  VARCHAR2(240);
104428 
104429 --
104430 -- Upgrade strategy
104431 --
104432 l_actual_upg_option           VARCHAR2(1);
104433 l_enc_upg_option           VARCHAR2(1);
104434 
104435 --
104436 BEGIN
104437 --
104438 IF g_log_enabled THEN
104439       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_207';
104440 END IF;
104441 --
104442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104443 
104444       trace
104445          (p_msg      => 'BEGIN of AcctLineType_207'
104446          ,p_level    => C_LEVEL_PROCEDURE
104447          ,p_module   => l_log_module);
104448 
104449 END IF;
104450 --
104451 l_component_type             := 'AMB_JLT';
104452 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
104453 l_component_type_code        := 'S';
104454 l_component_appl_id          :=  707;
104455 l_amb_context_code           := 'DEFAULT';
104456 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
104457 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
104458 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
104459 l_line_definition_owner_code := 'S';
104460 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
104461 --
104462 l_balance_type_code          := 'A';
104463 l_segment                     := NULL;
104464 l_ccid                        := NULL;
104465 l_adr_transaction_coa_id      := NULL;
104466 l_adr_accounting_coa_id       := NULL;
104467 l_adr_flexfield_segment_code  := NULL;
104468 l_adr_flex_value_set_id       := NULL;
104469 l_adr_value_type_code         := NULL;
104470 l_adr_value_combination_id    := NULL;
104471 l_adr_value_segment_code      := NULL;
104472 
104473 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
104474 l_bflow_class_code           := '';    -- 4219869 Business Flow
104475 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
104476 l_budgetary_control_flag     := 'N';
104477 
104478 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
104479 l_bflow_applied_to_amt       := NULL; -- 5132302
104480 l_entered_amt_idx            := NULL;          -- 4262811
104481 l_accted_amt_idx             := NULL;          -- 4262811
104482 l_acc_rev_flag               := NULL;          -- 4262811
104483 l_accrual_line_num           := NULL;          -- 4262811
104484 l_tmp_amt                    := NULL;          -- 4262811
104485 --
104486  
104487 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104488     l_balance_type_code <> 'B' THEN
104489 IF NVL(p_source_97,9E125) =  11
104490  THEN 
104491 
104492    --
104493    XLA_AE_LINES_PKG.SetNewLine;
104494 
104495    p_balance_type_code          := l_balance_type_code;
104496    -- set the flag so later we will know whether the gain loss line needs to be created
104497    
104498    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104499      p_actual_flag :='A';
104500    END IF;
104501 
104502    --
104503    -- bulk performance
104504    --
104505    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104506                                       p_header_num   => 0); -- 4262811
104507    --
104508    -- set accounting line options
104509    --
104510    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104511            p_natural_side_code          => 'D'
104512          , p_gain_or_loss_flag          => 'N'
104513          , p_gl_transfer_mode_code      => 'S'
104514          , p_acct_entry_type_code       => 'A'
104515          , p_switch_side_flag           => 'Y'
104516          , p_merge_duplicate_code       => 'N'
104517          );
104518    --
104519    l_acc_rev_natural_side_code := 'C';  -- 4262811
104520    -- 
104521    --
104522    -- set accounting line type info
104523    --
104524    xla_ae_lines_pkg.SetAcctLineType
104525       (p_component_type             => l_component_type
104526       ,p_event_type_code            => l_event_type_code
104527       ,p_line_definition_owner_code => l_line_definition_owner_code
104528       ,p_line_definition_code       => l_line_definition_code
104529       ,p_accounting_line_code       => l_component_code
104530       ,p_accounting_line_type_code  => l_component_type_code
104531       ,p_accounting_line_appl_id    => l_component_appl_id
104532       ,p_amb_context_code           => l_amb_context_code
104533       ,p_entity_code                => l_entity_code
104534       ,p_event_class_code           => l_event_class_code);
104535    --
104536    -- set accounting class
104537    --
104538    xla_ae_lines_pkg.SetAcctClass(
104539            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
104540          , p_ae_header_id           => l_ae_header_id
104541          );
104542 
104543    --
104544    -- set rounding class
104545    --
104546    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104547                       'INTERORG_TRANSFER_CREDIT';
104548 
104549    --
104550    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104551    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104552    --
104553    -- bulk performance
104554    --
104555    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104556 
104557    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104558       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104559 
104560    -- 4955764
104561    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104563 
104564    -- 4458381 Public Sector Enh
104565    
104566    --
104567    -- set accounting attributes for the line type
104568    --
104569    l_entered_amt_idx := 3;
104570    l_accted_amt_idx  := 8;
104571    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
104572    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104573    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
104574    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104575    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
104576    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104577    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
104578    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104579    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
104580    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104581    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
104582    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104583    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
104584    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104585    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
104586    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104587    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
104588 
104589    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104590    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104591 
104592    ---------------------------------------------------------------------------------------------------------------
104593    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104594    ---------------------------------------------------------------------------------------------------------------
104595    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104596 
104597    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104598    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104599 
104600    IF xla_accounting_cache_pkg.GetValueChar
104601          (p_source_code         => 'LEDGER_CATEGORY_CODE'
104602          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104603    AND l_bflow_method_code = 'PRIOR_ENTRY'
104604 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104605    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104606          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104607        )
104608    THEN
104609          xla_ae_lines_pkg.BflowUpgEntry
104610            (p_business_method_code    => l_bflow_method_code
104611            ,p_business_class_code     => l_bflow_class_code
104612            ,p_balance_type            => l_balance_type_code);
104613    ELSE
104614       NULL;
104615 -- No business flow processing for business flow method of NONE.
104616    END IF;
104617 
104618    --
104619    -- call analytical criteria
104620    --
104621    
104622    --
104623    -- call description
104624    --
104625    -- No description or it is inherited.
104626    --
104627    -- call ADRs
104628    -- Bug 4922099
104629    --
104630    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104631         (NVL(l_actual_upg_option, 'N') = 'O') OR
104632         (NVL(l_enc_upg_option, 'N') = 'O')
104633       )
104634    THEN
104635    NULL;
104636    --
104637    --
104638    
104639   l_ccid := AcctDerRule_24(
104640            p_application_id           => p_application_id
104641          , p_ae_header_id             => l_ae_header_id 
104642 , p_source_40 => p_source_40
104643          , x_transaction_coa_id       => l_adr_transaction_coa_id
104644          , x_accounting_coa_id        => l_adr_accounting_coa_id
104645          , x_value_type_code          => l_adr_value_type_code
104646          , p_side                     => 'NA'
104647    );
104648 
104649    xla_ae_lines_pkg.set_ccid(
104650     p_code_combination_id          => l_ccid
104651   , p_value_type_code              => l_adr_value_type_code
104652   , p_transaction_coa_id           => l_adr_transaction_coa_id
104653   , p_accounting_coa_id            => l_adr_accounting_coa_id
104654   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
104655   , p_adr_type_code                => 'S'
104656   , p_component_type               => l_component_type
104657   , p_component_code               => l_component_code
104658   , p_component_type_code          => l_component_type_code
104659   , p_component_appl_id            => l_component_appl_id
104660   , p_amb_context_code             => l_amb_context_code
104661   , p_side                         => 'NA'
104662   );
104663 
104664 
104665    --
104666    --
104667    END IF;
104668    --
104669    -- Bug 4922099
104670    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104671           (NVL(l_enc_upg_option, 'N') = 'O')
104672         ) AND
104673         (l_bflow_method_code = 'PRIOR_ENTRY')
104674       )
104675    THEN
104676       IF
104677       --
104678       1 = 2
104679       --
104680       THEN
104681       xla_accounting_err_pkg.build_message
104682                                     (p_appli_s_name            => 'XLA'
104683                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104684                                     ,p_token_1                 => 'LINE_NUMBER'
104685                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
104686                                     ,p_token_2                 => 'LINE_TYPE_NAME'
104687                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
104688                                                                              l_component_type
104689                                                                             ,l_component_code
104690                                                                             ,l_component_type_code
104691                                                                             ,l_component_appl_id
104692                                                                             ,l_amb_context_code
104693                                                                             ,l_entity_code
104694                                                                             ,l_event_class_code
104695                                                                            )
104696                                     ,p_token_3                 => 'OWNER'
104697                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
104698                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
104699                                                                           ,p_lookup_code    => l_component_type_code
104700                                                                          )
104701                                     ,p_token_4                 => 'PRODUCT_NAME'
104702                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104703                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104704                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104705                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104706                                     ,p_ae_header_id            =>  NULL
104707                                        );
104708 
104709         IF (C_LEVEL_ERROR>= g_log_level) THEN
104710                  trace
104711                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104712                       ,p_level    => C_LEVEL_ERROR
104713                       ,p_module   => l_log_module);
104714         END IF;
104715       END IF;
104716    END IF;
104717    --
104718    --
104719    ------------------------------------------------------------------------------------------------
104720    -- 4219869 Business Flow
104721    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104722    -- Prior Entry.  Currently, the following code is always generated.
104723    ------------------------------------------------------------------------------------------------
104724    XLA_AE_LINES_PKG.ValidateCurrentLine;
104725 
104726    ------------------------------------------------------------------------------------
104727    -- 4219869 Business Flow
104728    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104729    ------------------------------------------------------------------------------------
104730    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104731 
104732    ----------------------------------------------------------------------------------
104733    -- 4219869 Business Flow
104734    -- Update journal entry status -- Need to generate this within IF <condition>
104735    ----------------------------------------------------------------------------------
104736    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104737          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104738          ,p_balance_type_code => l_balance_type_code
104739          );
104740 
104741    -------------------------------------------------------------------------------------------
104742    -- 4262811 - Generate the Accrual Reversal lines
104743    -------------------------------------------------------------------------------------------
104744    BEGIN
104745       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104746                               (g_array_event(p_event_id).array_value_num('header_index'));
104747       IF l_acc_rev_flag IS NULL THEN
104748          l_acc_rev_flag := 'N';
104749       END IF;
104750    EXCEPTION
104751       WHEN OTHERS THEN
104752          l_acc_rev_flag := 'N';
104753    END;
104754    --
104755    IF (l_acc_rev_flag = 'Y') THEN
104756 
104757        -- 4645092  ------------------------------------------------------------------------------
104758        -- To allow MPA report to determine if it should generate report process
104759        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104760        ------------------------------------------------------------------------------------------
104761 
104762        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104763        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104764    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
104765    -- call ADRs
104766    -- Bug 4922099
104767    --
104768    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104769         (NVL(l_actual_upg_option, 'N') = 'O') OR
104770         (NVL(l_enc_upg_option, 'N') = 'O')
104771       )
104772    THEN
104773    NULL;
104774    --
104775    --
104776    
104777   l_ccid := AcctDerRule_24(
104778            p_application_id           => p_application_id
104779          , p_ae_header_id             => l_ae_header_id 
104780 , p_source_40 => p_source_40
104781          , x_transaction_coa_id       => l_adr_transaction_coa_id
104782          , x_accounting_coa_id        => l_adr_accounting_coa_id
104783          , x_value_type_code          => l_adr_value_type_code
104784          , p_side                     => 'NA'
104785    );
104786 
104787    xla_ae_lines_pkg.set_ccid(
104788     p_code_combination_id          => l_ccid
104789   , p_value_type_code              => l_adr_value_type_code
104790   , p_transaction_coa_id           => l_adr_transaction_coa_id
104791   , p_accounting_coa_id            => l_adr_accounting_coa_id
104792   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
104793   , p_adr_type_code                => 'S'
104794   , p_component_type               => l_component_type
104795   , p_component_code               => l_component_code
104796   , p_component_type_code          => l_component_type_code
104797   , p_component_appl_id            => l_component_appl_id
104798   , p_amb_context_code             => l_amb_context_code
104799   , p_side                         => 'NA'
104800   );
104801 
104802 
104803    --
104804    --
104805    END IF;
104806 
104807        --
104808        -- Update the line information that should be overwritten
104809        --
104810        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104811                                          p_header_num   => 1);
104812        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
104813 
104814        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104815 
104816        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
104817           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104818        END IF;
104819 
104820       --
104821       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104822       --
104823       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104824           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
104825       ELSE
104826           ---------------------------------------------------------------------------------------------------
104827           -- 4262811a Switch Sign
104828           ---------------------------------------------------------------------------------------------------
104829           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
104830           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104831                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104832           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104833                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104834           -- 5132302
104835           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104836                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104837 
104838       END IF;
104839 
104840       -- 4955764
104841       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104842       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104843 
104844 
104845       XLA_AE_LINES_PKG.ValidateCurrentLine;
104846       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104847 
104848       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104849                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104850                ,p_balance_type_code => l_balance_type_code);
104851 
104852    END IF;
104853 
104854    -----------------------------------------------------------------------------------------
104855    -- 4262811 Multiperiod Accounting
104856    -----------------------------------------------------------------------------------------
104857      -- No MPA option is assigned.
104858 
104859 
104860 END IF;
104861 END IF;
104862 --
104863 
104864 --
104865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104866    trace
104867       (p_msg      => 'END of AcctLineType_207'
104868       ,p_level    => C_LEVEL_PROCEDURE
104869       ,p_module   => l_log_module);
104870 END IF;
104871 --
104872 EXCEPTION
104873   WHEN xla_exceptions_pkg.application_exception THEN
104874       RAISE;
104875   WHEN OTHERS THEN
104876        xla_exceptions_pkg.raise_message
104877            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_207');
104878 END AcctLineType_207;
104879 --
104880 
104881 ---------------------------------------
104882 --
104883 -- PRIVATE FUNCTION
104884 --         AcctLineType_208
104885 --
104886 ---------------------------------------
104887 PROCEDURE AcctLineType_208 (
104888   p_application_id        IN NUMBER
104889  ,p_event_id              IN NUMBER
104890  ,p_calculate_acctd_flag  IN VARCHAR2
104891  ,p_calculate_g_l_flag    IN VARCHAR2
104892  ,p_actual_flag           IN OUT VARCHAR2
104893  ,p_balance_type_code     OUT VARCHAR2
104894  ,p_gain_or_loss_ref      OUT VARCHAR2
104895  
104896 --TRANSACTION_ID
104897  , p_source_1            IN NUMBER
104898 --Item Concatenated Segments
104899  , p_source_2            IN VARCHAR2
104900 --Transaction Quantity
104901  , p_source_3            IN NUMBER
104902 --Transaction Unit of Measure Code
104903  , p_source_4            IN VARCHAR2
104904 --Inventory Transaction Type Description
104905  , p_source_5            IN VARCHAR2
104906 --Interorg Transfer Credit Account
104907  , p_source_40            IN NUMBER
104908 --DISTRIBUTION_IDENTIFIER
104909  , p_source_84            IN NUMBER
104910 --Distribution Type
104911  , p_source_85            IN VARCHAR2
104912  , p_source_85_meaning    IN VARCHAR2
104913 --Entered Currency Code
104914  , p_source_88            IN VARCHAR2
104915 --Entered Amount
104916  , p_source_91            IN NUMBER
104917 --Currency Conversion Date
104918  , p_source_92            IN DATE
104919 --Currency Conversion Rate
104920  , p_source_93            IN NUMBER
104921 --Currency Conversion Type
104922  , p_source_94            IN VARCHAR2
104923 --Accounted Amount
104924  , p_source_95            IN NUMBER
104925 --Accounting Line Type
104926  , p_source_97            IN NUMBER
104927 )
104928 IS
104929 
104930 l_component_type              VARCHAR2(80);
104931 l_component_code              VARCHAR2(30);
104932 l_component_type_code         VARCHAR2(1);
104933 l_component_appl_id           INTEGER;
104934 l_amb_context_code            VARCHAR2(30);
104935 l_entity_code                 VARCHAR2(30);
104936 l_event_class_code            VARCHAR2(30);
104937 l_ae_header_id                NUMBER;
104938 l_event_type_code             VARCHAR2(30);
104939 l_line_definition_code        VARCHAR2(30);
104940 l_line_definition_owner_code  VARCHAR2(1);
104941 --
104942 -- adr variables
104943 l_segment                     VARCHAR2(30);
104944 l_ccid                        NUMBER;
104945 l_adr_transaction_coa_id      NUMBER;
104946 l_adr_accounting_coa_id       NUMBER;
104947 l_adr_flexfield_segment_code  VARCHAR2(30);
104948 l_adr_flex_value_set_id       NUMBER;
104949 l_adr_value_type_code         VARCHAR2(30);
104950 l_adr_value_combination_id    NUMBER;
104951 l_adr_value_segment_code      VARCHAR2(30);
104952 
104953 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
104954 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
104955 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
104956 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
104957 
104958 -- 4262811 Variables ------------------------------------------------------------------------------------------
104959 l_entered_amt_idx             NUMBER;
104960 l_accted_amt_idx              NUMBER;
104961 l_acc_rev_flag                VARCHAR2(1);
104962 l_accrual_line_num            NUMBER;
104963 l_tmp_amt                     NUMBER;
104964 l_acc_rev_natural_side_code   VARCHAR2(1);
104965 
104966 l_num_entries                 NUMBER;
104967 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
104968 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
104969 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
104970 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
104971 l_recog_line_1                NUMBER;
104972 l_recog_line_2                NUMBER;
104973 
104974 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
104975 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
104976 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
104977 
104978 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104979 
104980 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
104981 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
104982 
104983 ---------------------------------------------------------------------------------------------------------------
104984 
104985 
104986 --
104987 -- bulk performance
104988 --
104989 l_balance_type_code           VARCHAR2(1);
104990 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
104991 l_log_module                  VARCHAR2(240);
104992 
104993 --
104994 -- Upgrade strategy
104995 --
104996 l_actual_upg_option           VARCHAR2(1);
104997 l_enc_upg_option           VARCHAR2(1);
104998 
104999 --
105000 BEGIN
105001 --
105002 IF g_log_enabled THEN
105003       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_208';
105004 END IF;
105005 --
105006 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105007 
105008       trace
105009          (p_msg      => 'BEGIN of AcctLineType_208'
105010          ,p_level    => C_LEVEL_PROCEDURE
105011          ,p_module   => l_log_module);
105012 
105013 END IF;
105014 --
105015 l_component_type             := 'AMB_JLT';
105016 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
105017 l_component_type_code        := 'S';
105018 l_component_appl_id          :=  707;
105019 l_amb_context_code           := 'DEFAULT';
105020 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
105021 l_event_class_code           := 'USER_DEFINE';
105022 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
105023 l_line_definition_owner_code := 'S';
105024 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
105025 --
105026 l_balance_type_code          := 'A';
105027 l_segment                     := NULL;
105028 l_ccid                        := NULL;
105029 l_adr_transaction_coa_id      := NULL;
105030 l_adr_accounting_coa_id       := NULL;
105031 l_adr_flexfield_segment_code  := NULL;
105032 l_adr_flex_value_set_id       := NULL;
105033 l_adr_value_type_code         := NULL;
105034 l_adr_value_combination_id    := NULL;
105035 l_adr_value_segment_code      := NULL;
105036 
105037 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105038 l_bflow_class_code           := '';    -- 4219869 Business Flow
105039 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105040 l_budgetary_control_flag     := 'N';
105041 
105042 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105043 l_bflow_applied_to_amt       := NULL; -- 5132302
105044 l_entered_amt_idx            := NULL;          -- 4262811
105045 l_accted_amt_idx             := NULL;          -- 4262811
105046 l_acc_rev_flag               := NULL;          -- 4262811
105047 l_accrual_line_num           := NULL;          -- 4262811
105048 l_tmp_amt                    := NULL;          -- 4262811
105049 --
105050  
105051 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105052     l_balance_type_code <> 'B' THEN
105053 IF NVL(p_source_97,9E125) =  11
105054  THEN 
105055 
105056    --
105057    XLA_AE_LINES_PKG.SetNewLine;
105058 
105059    p_balance_type_code          := l_balance_type_code;
105060    -- set the flag so later we will know whether the gain loss line needs to be created
105061    
105062    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105063      p_actual_flag :='A';
105064    END IF;
105065 
105066    --
105067    -- bulk performance
105068    --
105069    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105070                                       p_header_num   => 0); -- 4262811
105071    --
105072    -- set accounting line options
105073    --
105074    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105075            p_natural_side_code          => 'D'
105076          , p_gain_or_loss_flag          => 'N'
105077          , p_gl_transfer_mode_code      => 'S'
105078          , p_acct_entry_type_code       => 'A'
105079          , p_switch_side_flag           => 'Y'
105080          , p_merge_duplicate_code       => 'N'
105081          );
105082    --
105083    l_acc_rev_natural_side_code := 'C';  -- 4262811
105084    -- 
105085    --
105086    -- set accounting line type info
105087    --
105088    xla_ae_lines_pkg.SetAcctLineType
105089       (p_component_type             => l_component_type
105090       ,p_event_type_code            => l_event_type_code
105091       ,p_line_definition_owner_code => l_line_definition_owner_code
105092       ,p_line_definition_code       => l_line_definition_code
105093       ,p_accounting_line_code       => l_component_code
105094       ,p_accounting_line_type_code  => l_component_type_code
105095       ,p_accounting_line_appl_id    => l_component_appl_id
105096       ,p_amb_context_code           => l_amb_context_code
105097       ,p_entity_code                => l_entity_code
105098       ,p_event_class_code           => l_event_class_code);
105099    --
105100    -- set accounting class
105101    --
105102    xla_ae_lines_pkg.SetAcctClass(
105103            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
105104          , p_ae_header_id           => l_ae_header_id
105105          );
105106 
105107    --
105108    -- set rounding class
105109    --
105110    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105111                       'INTERORG_TRANSFER_CREDIT';
105112 
105113    --
105114    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105115    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105116    --
105117    -- bulk performance
105118    --
105119    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105120 
105121    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105122       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105123 
105124    -- 4955764
105125    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105126       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105127 
105128    -- 4458381 Public Sector Enh
105129    
105130    --
105131    -- set accounting attributes for the line type
105132    --
105133    l_entered_amt_idx := 3;
105134    l_accted_amt_idx  := 8;
105135    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105136    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105137    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
105138    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105139    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
105140    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105141    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
105142    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105143    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
105144    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105145    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
105146    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105147    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
105148    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105149    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
105150    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105151    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
105152 
105153    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105154    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105155 
105156    ---------------------------------------------------------------------------------------------------------------
105157    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105158    ---------------------------------------------------------------------------------------------------------------
105159    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105160 
105161    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105162    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105163 
105164    IF xla_accounting_cache_pkg.GetValueChar
105165          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105166          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105167    AND l_bflow_method_code = 'PRIOR_ENTRY'
105168 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105169    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105170          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105171        )
105172    THEN
105173          xla_ae_lines_pkg.BflowUpgEntry
105174            (p_business_method_code    => l_bflow_method_code
105175            ,p_business_class_code     => l_bflow_class_code
105176            ,p_balance_type            => l_balance_type_code);
105177    ELSE
105178       NULL;
105179 -- No business flow processing for business flow method of NONE.
105180    END IF;
105181 
105182    --
105183    -- call analytical criteria
105184    --
105185    
105186    --
105187    -- call description
105188    --
105189    
105190 xla_ae_lines_pkg.SetLineDescription(
105191    p_ae_header_id => l_ae_header_id
105192   ,p_description  => Description_1 (
105193      p_application_id         => p_application_id
105194    , p_ae_header_id           => l_ae_header_id 
105195 , p_source_1 => p_source_1
105196 , p_source_2 => p_source_2
105197 , p_source_3 => p_source_3
105198 , p_source_4 => p_source_4
105199 , p_source_5 => p_source_5
105200    )
105201 );
105202 
105203 
105204    --
105205    -- call ADRs
105206    -- Bug 4922099
105207    --
105208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105209         (NVL(l_actual_upg_option, 'N') = 'O') OR
105210         (NVL(l_enc_upg_option, 'N') = 'O')
105211       )
105212    THEN
105213    NULL;
105214    --
105215    --
105216    
105217   l_ccid := AcctDerRule_24(
105218            p_application_id           => p_application_id
105219          , p_ae_header_id             => l_ae_header_id 
105220 , p_source_40 => p_source_40
105221          , x_transaction_coa_id       => l_adr_transaction_coa_id
105222          , x_accounting_coa_id        => l_adr_accounting_coa_id
105223          , x_value_type_code          => l_adr_value_type_code
105224          , p_side                     => 'NA'
105225    );
105226 
105227    xla_ae_lines_pkg.set_ccid(
105228     p_code_combination_id          => l_ccid
105229   , p_value_type_code              => l_adr_value_type_code
105230   , p_transaction_coa_id           => l_adr_transaction_coa_id
105231   , p_accounting_coa_id            => l_adr_accounting_coa_id
105232   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
105233   , p_adr_type_code                => 'S'
105234   , p_component_type               => l_component_type
105235   , p_component_code               => l_component_code
105236   , p_component_type_code          => l_component_type_code
105237   , p_component_appl_id            => l_component_appl_id
105238   , p_amb_context_code             => l_amb_context_code
105239   , p_side                         => 'NA'
105240   );
105241 
105242 
105243    --
105244    --
105245    END IF;
105246    --
105247    -- Bug 4922099
105248    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105249           (NVL(l_enc_upg_option, 'N') = 'O')
105250         ) AND
105251         (l_bflow_method_code = 'PRIOR_ENTRY')
105252       )
105253    THEN
105254       IF
105255       --
105256       1 = 2
105257       --
105258       THEN
105259       xla_accounting_err_pkg.build_message
105260                                     (p_appli_s_name            => 'XLA'
105261                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105262                                     ,p_token_1                 => 'LINE_NUMBER'
105263                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105264                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105265                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105266                                                                              l_component_type
105267                                                                             ,l_component_code
105268                                                                             ,l_component_type_code
105269                                                                             ,l_component_appl_id
105270                                                                             ,l_amb_context_code
105271                                                                             ,l_entity_code
105272                                                                             ,l_event_class_code
105273                                                                            )
105274                                     ,p_token_3                 => 'OWNER'
105275                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105276                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105277                                                                           ,p_lookup_code    => l_component_type_code
105278                                                                          )
105279                                     ,p_token_4                 => 'PRODUCT_NAME'
105280                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105281                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105282                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105283                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105284                                     ,p_ae_header_id            =>  NULL
105285                                        );
105286 
105287         IF (C_LEVEL_ERROR>= g_log_level) THEN
105288                  trace
105289                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105290                       ,p_level    => C_LEVEL_ERROR
105291                       ,p_module   => l_log_module);
105292         END IF;
105293       END IF;
105294    END IF;
105295    --
105296    --
105297    ------------------------------------------------------------------------------------------------
105298    -- 4219869 Business Flow
105299    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105300    -- Prior Entry.  Currently, the following code is always generated.
105301    ------------------------------------------------------------------------------------------------
105302    XLA_AE_LINES_PKG.ValidateCurrentLine;
105303 
105304    ------------------------------------------------------------------------------------
105305    -- 4219869 Business Flow
105306    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105307    ------------------------------------------------------------------------------------
105308    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105309 
105310    ----------------------------------------------------------------------------------
105311    -- 4219869 Business Flow
105312    -- Update journal entry status -- Need to generate this within IF <condition>
105313    ----------------------------------------------------------------------------------
105314    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105315          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105316          ,p_balance_type_code => l_balance_type_code
105317          );
105318 
105319    -------------------------------------------------------------------------------------------
105320    -- 4262811 - Generate the Accrual Reversal lines
105321    -------------------------------------------------------------------------------------------
105322    BEGIN
105323       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105324                               (g_array_event(p_event_id).array_value_num('header_index'));
105325       IF l_acc_rev_flag IS NULL THEN
105326          l_acc_rev_flag := 'N';
105327       END IF;
105328    EXCEPTION
105329       WHEN OTHERS THEN
105330          l_acc_rev_flag := 'N';
105331    END;
105332    --
105333    IF (l_acc_rev_flag = 'Y') THEN
105334 
105335        -- 4645092  ------------------------------------------------------------------------------
105336        -- To allow MPA report to determine if it should generate report process
105337        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105338        ------------------------------------------------------------------------------------------
105339 
105340        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105341        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105342    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
105343    -- call ADRs
105344    -- Bug 4922099
105345    --
105346    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105347         (NVL(l_actual_upg_option, 'N') = 'O') OR
105348         (NVL(l_enc_upg_option, 'N') = 'O')
105349       )
105350    THEN
105351    NULL;
105352    --
105353    --
105354    
105355   l_ccid := AcctDerRule_24(
105356            p_application_id           => p_application_id
105357          , p_ae_header_id             => l_ae_header_id 
105358 , p_source_40 => p_source_40
105359          , x_transaction_coa_id       => l_adr_transaction_coa_id
105360          , x_accounting_coa_id        => l_adr_accounting_coa_id
105361          , x_value_type_code          => l_adr_value_type_code
105362          , p_side                     => 'NA'
105363    );
105364 
105365    xla_ae_lines_pkg.set_ccid(
105366     p_code_combination_id          => l_ccid
105367   , p_value_type_code              => l_adr_value_type_code
105368   , p_transaction_coa_id           => l_adr_transaction_coa_id
105369   , p_accounting_coa_id            => l_adr_accounting_coa_id
105370   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
105371   , p_adr_type_code                => 'S'
105372   , p_component_type               => l_component_type
105373   , p_component_code               => l_component_code
105374   , p_component_type_code          => l_component_type_code
105375   , p_component_appl_id            => l_component_appl_id
105376   , p_amb_context_code             => l_amb_context_code
105377   , p_side                         => 'NA'
105378   );
105379 
105380 
105381    --
105382    --
105383    END IF;
105384 
105385        --
105386        -- Update the line information that should be overwritten
105387        --
105388        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105389                                          p_header_num   => 1);
105390        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
105391 
105392        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105393 
105394        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
105395           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105396        END IF;
105397 
105398       --
105399       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105400       --
105401       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105402           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
105403       ELSE
105404           ---------------------------------------------------------------------------------------------------
105405           -- 4262811a Switch Sign
105406           ---------------------------------------------------------------------------------------------------
105407           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
105408           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105409                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105410           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105411                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105412           -- 5132302
105413           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105414                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105415 
105416       END IF;
105417 
105418       -- 4955764
105419       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105421 
105422 
105423       XLA_AE_LINES_PKG.ValidateCurrentLine;
105424       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105425 
105426       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105427                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105428                ,p_balance_type_code => l_balance_type_code);
105429 
105430    END IF;
105431 
105432    -----------------------------------------------------------------------------------------
105433    -- 4262811 Multiperiod Accounting
105434    -----------------------------------------------------------------------------------------
105435      -- No MPA option is assigned.
105436 
105437 
105438 END IF;
105439 END IF;
105440 --
105441 
105442 --
105443 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105444    trace
105445       (p_msg      => 'END of AcctLineType_208'
105446       ,p_level    => C_LEVEL_PROCEDURE
105447       ,p_module   => l_log_module);
105448 END IF;
105449 --
105450 EXCEPTION
105451   WHEN xla_exceptions_pkg.application_exception THEN
105452       RAISE;
105453   WHEN OTHERS THEN
105454        xla_exceptions_pkg.raise_message
105455            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_208');
105456 END AcctLineType_208;
105457 --
105458 
105459 ---------------------------------------
105460 --
105461 -- PRIVATE FUNCTION
105462 --         AcctLineType_209
105463 --
105464 ---------------------------------------
105465 PROCEDURE AcctLineType_209 (
105466   p_application_id        IN NUMBER
105467  ,p_event_id              IN NUMBER
105468  ,p_calculate_acctd_flag  IN VARCHAR2
105469  ,p_calculate_g_l_flag    IN VARCHAR2
105470  ,p_actual_flag           IN OUT VARCHAR2
105471  ,p_balance_type_code     OUT VARCHAR2
105472  ,p_gain_or_loss_ref      OUT VARCHAR2
105473  
105474 --TRANSACTION_ID
105475  , p_source_1            IN NUMBER
105476 --Item Concatenated Segments
105477  , p_source_2            IN VARCHAR2
105478 --Transaction Quantity
105479  , p_source_3            IN NUMBER
105480 --Transaction Unit of Measure Code
105481  , p_source_4            IN VARCHAR2
105482 --Inventory Transaction Type Description
105483  , p_source_5            IN VARCHAR2
105484 --Cost Management Default Account
105485  , p_source_11            IN NUMBER
105486 --DISTRIBUTION_IDENTIFIER
105487  , p_source_84            IN NUMBER
105488 --Distribution Type
105489  , p_source_85            IN VARCHAR2
105490  , p_source_85_meaning    IN VARCHAR2
105491 --Entered Currency Code
105492  , p_source_88            IN VARCHAR2
105493 --Entered Amount
105494  , p_source_91            IN NUMBER
105495 --Currency Conversion Date
105496  , p_source_92            IN DATE
105497 --Currency Conversion Rate
105498  , p_source_93            IN NUMBER
105499 --Currency Conversion Type
105500  , p_source_94            IN VARCHAR2
105501 --Accounted Amount
105502  , p_source_95            IN NUMBER
105503 --Accounting Line Type
105504  , p_source_97            IN NUMBER
105505 )
105506 IS
105507 
105508 l_component_type              VARCHAR2(80);
105509 l_component_code              VARCHAR2(30);
105510 l_component_type_code         VARCHAR2(1);
105511 l_component_appl_id           INTEGER;
105512 l_amb_context_code            VARCHAR2(30);
105513 l_entity_code                 VARCHAR2(30);
105514 l_event_class_code            VARCHAR2(30);
105515 l_ae_header_id                NUMBER;
105516 l_event_type_code             VARCHAR2(30);
105517 l_line_definition_code        VARCHAR2(30);
105518 l_line_definition_owner_code  VARCHAR2(1);
105519 --
105520 -- adr variables
105521 l_segment                     VARCHAR2(30);
105522 l_ccid                        NUMBER;
105523 l_adr_transaction_coa_id      NUMBER;
105524 l_adr_accounting_coa_id       NUMBER;
105525 l_adr_flexfield_segment_code  VARCHAR2(30);
105526 l_adr_flex_value_set_id       NUMBER;
105527 l_adr_value_type_code         VARCHAR2(30);
105528 l_adr_value_combination_id    NUMBER;
105529 l_adr_value_segment_code      VARCHAR2(30);
105530 
105531 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
105532 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
105533 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
105534 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
105535 
105536 -- 4262811 Variables ------------------------------------------------------------------------------------------
105537 l_entered_amt_idx             NUMBER;
105538 l_accted_amt_idx              NUMBER;
105539 l_acc_rev_flag                VARCHAR2(1);
105540 l_accrual_line_num            NUMBER;
105541 l_tmp_amt                     NUMBER;
105542 l_acc_rev_natural_side_code   VARCHAR2(1);
105543 
105544 l_num_entries                 NUMBER;
105545 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
105546 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
105547 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
105548 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
105549 l_recog_line_1                NUMBER;
105550 l_recog_line_2                NUMBER;
105551 
105552 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
105553 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
105554 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
105555 
105556 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105557 
105558 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
105559 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
105560 
105561 ---------------------------------------------------------------------------------------------------------------
105562 
105563 
105564 --
105565 -- bulk performance
105566 --
105567 l_balance_type_code           VARCHAR2(1);
105568 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
105569 l_log_module                  VARCHAR2(240);
105570 
105571 --
105572 -- Upgrade strategy
105573 --
105574 l_actual_upg_option           VARCHAR2(1);
105575 l_enc_upg_option           VARCHAR2(1);
105576 
105577 --
105578 BEGIN
105579 --
105580 IF g_log_enabled THEN
105581       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_209';
105582 END IF;
105583 --
105584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105585 
105586       trace
105587          (p_msg      => 'BEGIN of AcctLineType_209'
105588          ,p_level    => C_LEVEL_PROCEDURE
105589          ,p_module   => l_log_module);
105590 
105591 END IF;
105592 --
105593 l_component_type             := 'AMB_JLT';
105594 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
105595 l_component_type_code        := 'S';
105596 l_component_appl_id          :=  707;
105597 l_amb_context_code           := 'DEFAULT';
105598 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
105599 l_event_class_code           := 'USER_DEFINE';
105600 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
105601 l_line_definition_owner_code := 'S';
105602 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
105603 --
105604 l_balance_type_code          := 'A';
105605 l_segment                     := NULL;
105606 l_ccid                        := NULL;
105607 l_adr_transaction_coa_id      := NULL;
105608 l_adr_accounting_coa_id       := NULL;
105609 l_adr_flexfield_segment_code  := NULL;
105610 l_adr_flex_value_set_id       := NULL;
105611 l_adr_value_type_code         := NULL;
105612 l_adr_value_combination_id    := NULL;
105613 l_adr_value_segment_code      := NULL;
105614 
105615 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
105616 l_bflow_class_code           := '';    -- 4219869 Business Flow
105617 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
105618 l_budgetary_control_flag     := 'N';
105619 
105620 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
105621 l_bflow_applied_to_amt       := NULL; -- 5132302
105622 l_entered_amt_idx            := NULL;          -- 4262811
105623 l_accted_amt_idx             := NULL;          -- 4262811
105624 l_acc_rev_flag               := NULL;          -- 4262811
105625 l_accrual_line_num           := NULL;          -- 4262811
105626 l_tmp_amt                    := NULL;          -- 4262811
105627 --
105628  
105629 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105630     l_balance_type_code <> 'B' THEN
105631 IF NVL(p_source_97,9E125) =  11
105632  THEN 
105633 
105634    --
105635    XLA_AE_LINES_PKG.SetNewLine;
105636 
105637    p_balance_type_code          := l_balance_type_code;
105638    -- set the flag so later we will know whether the gain loss line needs to be created
105639    
105640    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105641      p_actual_flag :='A';
105642    END IF;
105643 
105644    --
105645    -- bulk performance
105646    --
105647    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105648                                       p_header_num   => 0); -- 4262811
105649    --
105650    -- set accounting line options
105651    --
105652    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105653            p_natural_side_code          => 'D'
105654          , p_gain_or_loss_flag          => 'N'
105655          , p_gl_transfer_mode_code      => 'S'
105656          , p_acct_entry_type_code       => 'A'
105657          , p_switch_side_flag           => 'Y'
105658          , p_merge_duplicate_code       => 'N'
105659          );
105660    --
105661    l_acc_rev_natural_side_code := 'C';  -- 4262811
105662    -- 
105663    --
105664    -- set accounting line type info
105665    --
105666    xla_ae_lines_pkg.SetAcctLineType
105667       (p_component_type             => l_component_type
105668       ,p_event_type_code            => l_event_type_code
105669       ,p_line_definition_owner_code => l_line_definition_owner_code
105670       ,p_line_definition_code       => l_line_definition_code
105671       ,p_accounting_line_code       => l_component_code
105672       ,p_accounting_line_type_code  => l_component_type_code
105673       ,p_accounting_line_appl_id    => l_component_appl_id
105674       ,p_amb_context_code           => l_amb_context_code
105675       ,p_entity_code                => l_entity_code
105676       ,p_event_class_code           => l_event_class_code);
105677    --
105678    -- set accounting class
105679    --
105680    xla_ae_lines_pkg.SetAcctClass(
105681            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
105682          , p_ae_header_id           => l_ae_header_id
105683          );
105684 
105685    --
105686    -- set rounding class
105687    --
105688    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105689                       'INTERORG_TRANSFER_CREDIT';
105690 
105691    --
105692    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105693    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105694    --
105695    -- bulk performance
105696    --
105697    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105698 
105699    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105700       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105701 
105702    -- 4955764
105703    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105704       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105705 
105706    -- 4458381 Public Sector Enh
105707    
105708    --
105709    -- set accounting attributes for the line type
105710    --
105711    l_entered_amt_idx := 3;
105712    l_accted_amt_idx  := 8;
105713    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
105714    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105715    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
105716    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105717    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
105718    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105719    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
105720    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105721    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
105722    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105723    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
105724    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105725    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
105726    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105727    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
105728    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105729    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
105730 
105731    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105732    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105733 
105734    ---------------------------------------------------------------------------------------------------------------
105735    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105736    ---------------------------------------------------------------------------------------------------------------
105737    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105738 
105739    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105740    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105741 
105742    IF xla_accounting_cache_pkg.GetValueChar
105743          (p_source_code         => 'LEDGER_CATEGORY_CODE'
105744          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105745    AND l_bflow_method_code = 'PRIOR_ENTRY'
105746 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105747    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105748          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105749        )
105750    THEN
105751          xla_ae_lines_pkg.BflowUpgEntry
105752            (p_business_method_code    => l_bflow_method_code
105753            ,p_business_class_code     => l_bflow_class_code
105754            ,p_balance_type            => l_balance_type_code);
105755    ELSE
105756       NULL;
105757 -- No business flow processing for business flow method of NONE.
105758    END IF;
105759 
105760    --
105761    -- call analytical criteria
105762    --
105763    
105764    --
105765    -- call description
105766    --
105767    
105768 xla_ae_lines_pkg.SetLineDescription(
105769    p_ae_header_id => l_ae_header_id
105770   ,p_description  => Description_1 (
105771      p_application_id         => p_application_id
105772    , p_ae_header_id           => l_ae_header_id 
105773 , p_source_1 => p_source_1
105774 , p_source_2 => p_source_2
105775 , p_source_3 => p_source_3
105776 , p_source_4 => p_source_4
105777 , p_source_5 => p_source_5
105778    )
105779 );
105780 
105781 
105782    --
105783    -- call ADRs
105784    -- Bug 4922099
105785    --
105786    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105787         (NVL(l_actual_upg_option, 'N') = 'O') OR
105788         (NVL(l_enc_upg_option, 'N') = 'O')
105789       )
105790    THEN
105791    NULL;
105792    --
105793    --
105794    
105795   l_ccid := AcctDerRule_6(
105796            p_application_id           => p_application_id
105797          , p_ae_header_id             => l_ae_header_id 
105798 , p_source_11 => p_source_11
105799          , x_transaction_coa_id       => l_adr_transaction_coa_id
105800          , x_accounting_coa_id        => l_adr_accounting_coa_id
105801          , x_value_type_code          => l_adr_value_type_code
105802          , p_side                     => 'NA'
105803    );
105804 
105805    xla_ae_lines_pkg.set_ccid(
105806     p_code_combination_id          => l_ccid
105807   , p_value_type_code              => l_adr_value_type_code
105808   , p_transaction_coa_id           => l_adr_transaction_coa_id
105809   , p_accounting_coa_id            => l_adr_accounting_coa_id
105810   , p_adr_code                     => 'CST_DEFAULT'
105811   , p_adr_type_code                => 'S'
105812   , p_component_type               => l_component_type
105813   , p_component_code               => l_component_code
105814   , p_component_type_code          => l_component_type_code
105815   , p_component_appl_id            => l_component_appl_id
105816   , p_amb_context_code             => l_amb_context_code
105817   , p_side                         => 'NA'
105818   );
105819 
105820 
105821    --
105822    --
105823    END IF;
105824    --
105825    -- Bug 4922099
105826    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105827           (NVL(l_enc_upg_option, 'N') = 'O')
105828         ) AND
105829         (l_bflow_method_code = 'PRIOR_ENTRY')
105830       )
105831    THEN
105832       IF
105833       --
105834       1 = 2
105835       --
105836       THEN
105837       xla_accounting_err_pkg.build_message
105838                                     (p_appli_s_name            => 'XLA'
105839                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105840                                     ,p_token_1                 => 'LINE_NUMBER'
105841                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
105842                                     ,p_token_2                 => 'LINE_TYPE_NAME'
105843                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
105844                                                                              l_component_type
105845                                                                             ,l_component_code
105846                                                                             ,l_component_type_code
105847                                                                             ,l_component_appl_id
105848                                                                             ,l_amb_context_code
105849                                                                             ,l_entity_code
105850                                                                             ,l_event_class_code
105851                                                                            )
105852                                     ,p_token_3                 => 'OWNER'
105853                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
105854                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
105855                                                                           ,p_lookup_code    => l_component_type_code
105856                                                                          )
105857                                     ,p_token_4                 => 'PRODUCT_NAME'
105858                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105859                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105860                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105861                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105862                                     ,p_ae_header_id            =>  NULL
105863                                        );
105864 
105865         IF (C_LEVEL_ERROR>= g_log_level) THEN
105866                  trace
105867                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105868                       ,p_level    => C_LEVEL_ERROR
105869                       ,p_module   => l_log_module);
105870         END IF;
105871       END IF;
105872    END IF;
105873    --
105874    --
105875    ------------------------------------------------------------------------------------------------
105876    -- 4219869 Business Flow
105877    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105878    -- Prior Entry.  Currently, the following code is always generated.
105879    ------------------------------------------------------------------------------------------------
105880    XLA_AE_LINES_PKG.ValidateCurrentLine;
105881 
105882    ------------------------------------------------------------------------------------
105883    -- 4219869 Business Flow
105884    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105885    ------------------------------------------------------------------------------------
105886    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105887 
105888    ----------------------------------------------------------------------------------
105889    -- 4219869 Business Flow
105890    -- Update journal entry status -- Need to generate this within IF <condition>
105891    ----------------------------------------------------------------------------------
105892    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105893          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105894          ,p_balance_type_code => l_balance_type_code
105895          );
105896 
105897    -------------------------------------------------------------------------------------------
105898    -- 4262811 - Generate the Accrual Reversal lines
105899    -------------------------------------------------------------------------------------------
105900    BEGIN
105901       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105902                               (g_array_event(p_event_id).array_value_num('header_index'));
105903       IF l_acc_rev_flag IS NULL THEN
105904          l_acc_rev_flag := 'N';
105905       END IF;
105906    EXCEPTION
105907       WHEN OTHERS THEN
105908          l_acc_rev_flag := 'N';
105909    END;
105910    --
105911    IF (l_acc_rev_flag = 'Y') THEN
105912 
105913        -- 4645092  ------------------------------------------------------------------------------
105914        -- To allow MPA report to determine if it should generate report process
105915        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105916        ------------------------------------------------------------------------------------------
105917 
105918        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105919        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105920    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
105921    -- call ADRs
105922    -- Bug 4922099
105923    --
105924    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105925         (NVL(l_actual_upg_option, 'N') = 'O') OR
105926         (NVL(l_enc_upg_option, 'N') = 'O')
105927       )
105928    THEN
105929    NULL;
105930    --
105931    --
105932    
105933   l_ccid := AcctDerRule_6(
105934            p_application_id           => p_application_id
105935          , p_ae_header_id             => l_ae_header_id 
105936 , p_source_11 => p_source_11
105937          , x_transaction_coa_id       => l_adr_transaction_coa_id
105938          , x_accounting_coa_id        => l_adr_accounting_coa_id
105939          , x_value_type_code          => l_adr_value_type_code
105940          , p_side                     => 'NA'
105941    );
105942 
105943    xla_ae_lines_pkg.set_ccid(
105944     p_code_combination_id          => l_ccid
105945   , p_value_type_code              => l_adr_value_type_code
105946   , p_transaction_coa_id           => l_adr_transaction_coa_id
105947   , p_accounting_coa_id            => l_adr_accounting_coa_id
105948   , p_adr_code                     => 'CST_DEFAULT'
105949   , p_adr_type_code                => 'S'
105950   , p_component_type               => l_component_type
105951   , p_component_code               => l_component_code
105952   , p_component_type_code          => l_component_type_code
105953   , p_component_appl_id            => l_component_appl_id
105954   , p_amb_context_code             => l_amb_context_code
105955   , p_side                         => 'NA'
105956   );
105957 
105958 
105959    --
105960    --
105961    END IF;
105962 
105963        --
105964        -- Update the line information that should be overwritten
105965        --
105966        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105967                                          p_header_num   => 1);
105968        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
105969 
105970        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105971 
105972        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
105973           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105974        END IF;
105975 
105976       --
105977       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105978       --
105979       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105980           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
105981       ELSE
105982           ---------------------------------------------------------------------------------------------------
105983           -- 4262811a Switch Sign
105984           ---------------------------------------------------------------------------------------------------
105985           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
105986           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105987                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105988           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105989                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105990           -- 5132302
105991           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105992                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105993 
105994       END IF;
105995 
105996       -- 4955764
105997       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105998       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105999 
106000 
106001       XLA_AE_LINES_PKG.ValidateCurrentLine;
106002       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106003 
106004       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106005                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106006                ,p_balance_type_code => l_balance_type_code);
106007 
106008    END IF;
106009 
106010    -----------------------------------------------------------------------------------------
106011    -- 4262811 Multiperiod Accounting
106012    -----------------------------------------------------------------------------------------
106013      -- No MPA option is assigned.
106014 
106015 
106016 END IF;
106017 END IF;
106018 --
106019 
106020 --
106021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106022    trace
106023       (p_msg      => 'END of AcctLineType_209'
106024       ,p_level    => C_LEVEL_PROCEDURE
106025       ,p_module   => l_log_module);
106026 END IF;
106027 --
106028 EXCEPTION
106029   WHEN xla_exceptions_pkg.application_exception THEN
106030       RAISE;
106031   WHEN OTHERS THEN
106032        xla_exceptions_pkg.raise_message
106033            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_209');
106034 END AcctLineType_209;
106035 --
106036 
106037 ---------------------------------------
106038 --
106039 -- PRIVATE FUNCTION
106040 --         AcctLineType_210
106041 --
106042 ---------------------------------------
106043 PROCEDURE AcctLineType_210 (
106044   p_application_id        IN NUMBER
106045  ,p_event_id              IN NUMBER
106046  ,p_calculate_acctd_flag  IN VARCHAR2
106047  ,p_calculate_g_l_flag    IN VARCHAR2
106048  ,p_actual_flag           IN OUT VARCHAR2
106049  ,p_balance_type_code     OUT VARCHAR2
106050  ,p_gain_or_loss_ref      OUT VARCHAR2
106051  
106052 --TRANSACTION_ID
106053  , p_source_1            IN NUMBER
106054 --Item Concatenated Segments
106055  , p_source_2            IN VARCHAR2
106056 --Transaction Quantity
106057  , p_source_3            IN NUMBER
106058 --Transaction Unit of Measure Code
106059  , p_source_4            IN VARCHAR2
106060 --Inventory Transaction Type Description
106061  , p_source_5            IN VARCHAR2
106062 --Interorg Transfer Credit Account
106063  , p_source_40            IN NUMBER
106064 --DISTRIBUTION_IDENTIFIER
106065  , p_source_84            IN NUMBER
106066 --Distribution Type
106067  , p_source_85            IN VARCHAR2
106068  , p_source_85_meaning    IN VARCHAR2
106069 --Entered Currency Code
106070  , p_source_88            IN VARCHAR2
106071 --Entered Amount
106072  , p_source_91            IN NUMBER
106073 --Currency Conversion Date
106074  , p_source_92            IN DATE
106075 --Currency Conversion Rate
106076  , p_source_93            IN NUMBER
106077 --Currency Conversion Type
106078  , p_source_94            IN VARCHAR2
106079 --Accounted Amount
106080  , p_source_95            IN NUMBER
106081 --Accounting Line Type
106082  , p_source_97            IN NUMBER
106083 )
106084 IS
106085 
106086 l_component_type              VARCHAR2(80);
106087 l_component_code              VARCHAR2(30);
106088 l_component_type_code         VARCHAR2(1);
106089 l_component_appl_id           INTEGER;
106090 l_amb_context_code            VARCHAR2(30);
106091 l_entity_code                 VARCHAR2(30);
106092 l_event_class_code            VARCHAR2(30);
106093 l_ae_header_id                NUMBER;
106094 l_event_type_code             VARCHAR2(30);
106095 l_line_definition_code        VARCHAR2(30);
106096 l_line_definition_owner_code  VARCHAR2(1);
106097 --
106098 -- adr variables
106099 l_segment                     VARCHAR2(30);
106100 l_ccid                        NUMBER;
106101 l_adr_transaction_coa_id      NUMBER;
106102 l_adr_accounting_coa_id       NUMBER;
106103 l_adr_flexfield_segment_code  VARCHAR2(30);
106104 l_adr_flex_value_set_id       NUMBER;
106105 l_adr_value_type_code         VARCHAR2(30);
106106 l_adr_value_combination_id    NUMBER;
106107 l_adr_value_segment_code      VARCHAR2(30);
106108 
106109 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106110 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106111 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106112 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106113 
106114 -- 4262811 Variables ------------------------------------------------------------------------------------------
106115 l_entered_amt_idx             NUMBER;
106116 l_accted_amt_idx              NUMBER;
106117 l_acc_rev_flag                VARCHAR2(1);
106118 l_accrual_line_num            NUMBER;
106119 l_tmp_amt                     NUMBER;
106120 l_acc_rev_natural_side_code   VARCHAR2(1);
106121 
106122 l_num_entries                 NUMBER;
106123 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106124 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106125 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106126 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106127 l_recog_line_1                NUMBER;
106128 l_recog_line_2                NUMBER;
106129 
106130 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106131 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106132 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106133 
106134 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106135 
106136 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106137 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106138 
106139 ---------------------------------------------------------------------------------------------------------------
106140 
106141 
106142 --
106143 -- bulk performance
106144 --
106145 l_balance_type_code           VARCHAR2(1);
106146 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106147 l_log_module                  VARCHAR2(240);
106148 
106149 --
106150 -- Upgrade strategy
106151 --
106152 l_actual_upg_option           VARCHAR2(1);
106153 l_enc_upg_option           VARCHAR2(1);
106154 
106155 --
106156 BEGIN
106157 --
106158 IF g_log_enabled THEN
106159       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_210';
106160 END IF;
106161 --
106162 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106163 
106164       trace
106165          (p_msg      => 'BEGIN of AcctLineType_210'
106166          ,p_level    => C_LEVEL_PROCEDURE
106167          ,p_module   => l_log_module);
106168 
106169 END IF;
106170 --
106171 l_component_type             := 'AMB_JLT';
106172 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
106173 l_component_type_code        := 'S';
106174 l_component_appl_id          :=  707;
106175 l_amb_context_code           := 'DEFAULT';
106176 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
106177 l_event_class_code           := 'DIR_INTERORG_SHIP';
106178 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
106179 l_line_definition_owner_code := 'S';
106180 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
106181 --
106182 l_balance_type_code          := 'A';
106183 l_segment                     := NULL;
106184 l_ccid                        := NULL;
106185 l_adr_transaction_coa_id      := NULL;
106186 l_adr_accounting_coa_id       := NULL;
106187 l_adr_flexfield_segment_code  := NULL;
106188 l_adr_flex_value_set_id       := NULL;
106189 l_adr_value_type_code         := NULL;
106190 l_adr_value_combination_id    := NULL;
106191 l_adr_value_segment_code      := NULL;
106192 
106193 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106194 l_bflow_class_code           := '';    -- 4219869 Business Flow
106195 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106196 l_budgetary_control_flag     := 'N';
106197 
106198 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106199 l_bflow_applied_to_amt       := NULL; -- 5132302
106200 l_entered_amt_idx            := NULL;          -- 4262811
106201 l_accted_amt_idx             := NULL;          -- 4262811
106202 l_acc_rev_flag               := NULL;          -- 4262811
106203 l_accrual_line_num           := NULL;          -- 4262811
106204 l_tmp_amt                    := NULL;          -- 4262811
106205 --
106206  
106207 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106208     l_balance_type_code <> 'B' THEN
106209 IF NVL(p_source_97,9E125) =  11
106210  THEN 
106211 
106212    --
106213    XLA_AE_LINES_PKG.SetNewLine;
106214 
106215    p_balance_type_code          := l_balance_type_code;
106216    -- set the flag so later we will know whether the gain loss line needs to be created
106217    
106218    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106219      p_actual_flag :='A';
106220    END IF;
106221 
106222    --
106223    -- bulk performance
106224    --
106225    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106226                                       p_header_num   => 0); -- 4262811
106227    --
106228    -- set accounting line options
106229    --
106230    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106231            p_natural_side_code          => 'D'
106232          , p_gain_or_loss_flag          => 'N'
106233          , p_gl_transfer_mode_code      => 'S'
106234          , p_acct_entry_type_code       => 'A'
106235          , p_switch_side_flag           => 'Y'
106236          , p_merge_duplicate_code       => 'N'
106237          );
106238    --
106239    l_acc_rev_natural_side_code := 'C';  -- 4262811
106240    -- 
106241    --
106242    -- set accounting line type info
106243    --
106244    xla_ae_lines_pkg.SetAcctLineType
106245       (p_component_type             => l_component_type
106246       ,p_event_type_code            => l_event_type_code
106247       ,p_line_definition_owner_code => l_line_definition_owner_code
106248       ,p_line_definition_code       => l_line_definition_code
106249       ,p_accounting_line_code       => l_component_code
106250       ,p_accounting_line_type_code  => l_component_type_code
106251       ,p_accounting_line_appl_id    => l_component_appl_id
106252       ,p_amb_context_code           => l_amb_context_code
106253       ,p_entity_code                => l_entity_code
106254       ,p_event_class_code           => l_event_class_code);
106255    --
106256    -- set accounting class
106257    --
106258    xla_ae_lines_pkg.SetAcctClass(
106259            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
106260          , p_ae_header_id           => l_ae_header_id
106261          );
106262 
106263    --
106264    -- set rounding class
106265    --
106266    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106267                       'INTERORG_TRANSFER_CREDIT';
106268 
106269    --
106270    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106271    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106272    --
106273    -- bulk performance
106274    --
106275    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106276 
106277    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106278       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106279 
106280    -- 4955764
106281    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106282       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106283 
106284    -- 4458381 Public Sector Enh
106285    
106286    --
106287    -- set accounting attributes for the line type
106288    --
106289    l_entered_amt_idx := 3;
106290    l_accted_amt_idx  := 8;
106291    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106292    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106293    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
106294    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106295    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
106296    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106297    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
106298    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106299    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
106300    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106301    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
106302    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106303    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
106304    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106305    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
106306    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106307    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
106308 
106309    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106310    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106311 
106312    ---------------------------------------------------------------------------------------------------------------
106313    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106314    ---------------------------------------------------------------------------------------------------------------
106315    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106316 
106317    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106318    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106319 
106320    IF xla_accounting_cache_pkg.GetValueChar
106321          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106322          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106323    AND l_bflow_method_code = 'PRIOR_ENTRY'
106324 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106325    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106326          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106327        )
106328    THEN
106329          xla_ae_lines_pkg.BflowUpgEntry
106330            (p_business_method_code    => l_bflow_method_code
106331            ,p_business_class_code     => l_bflow_class_code
106332            ,p_balance_type            => l_balance_type_code);
106333    ELSE
106334       NULL;
106335 -- No business flow processing for business flow method of NONE.
106336    END IF;
106337 
106338    --
106339    -- call analytical criteria
106340    --
106341    
106342    --
106343    -- call description
106344    --
106345    
106346 xla_ae_lines_pkg.SetLineDescription(
106347    p_ae_header_id => l_ae_header_id
106348   ,p_description  => Description_1 (
106349      p_application_id         => p_application_id
106350    , p_ae_header_id           => l_ae_header_id 
106351 , p_source_1 => p_source_1
106352 , p_source_2 => p_source_2
106353 , p_source_3 => p_source_3
106354 , p_source_4 => p_source_4
106355 , p_source_5 => p_source_5
106356    )
106357 );
106358 
106359 
106360    --
106361    -- call ADRs
106362    -- Bug 4922099
106363    --
106364    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106365         (NVL(l_actual_upg_option, 'N') = 'O') OR
106366         (NVL(l_enc_upg_option, 'N') = 'O')
106367       )
106368    THEN
106369    NULL;
106370    --
106371    --
106372    
106373   l_ccid := AcctDerRule_24(
106374            p_application_id           => p_application_id
106375          , p_ae_header_id             => l_ae_header_id 
106376 , p_source_40 => p_source_40
106377          , x_transaction_coa_id       => l_adr_transaction_coa_id
106378          , x_accounting_coa_id        => l_adr_accounting_coa_id
106379          , x_value_type_code          => l_adr_value_type_code
106380          , p_side                     => 'NA'
106381    );
106382 
106383    xla_ae_lines_pkg.set_ccid(
106384     p_code_combination_id          => l_ccid
106385   , p_value_type_code              => l_adr_value_type_code
106386   , p_transaction_coa_id           => l_adr_transaction_coa_id
106387   , p_accounting_coa_id            => l_adr_accounting_coa_id
106388   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
106389   , p_adr_type_code                => 'S'
106390   , p_component_type               => l_component_type
106391   , p_component_code               => l_component_code
106392   , p_component_type_code          => l_component_type_code
106393   , p_component_appl_id            => l_component_appl_id
106394   , p_amb_context_code             => l_amb_context_code
106395   , p_side                         => 'NA'
106396   );
106397 
106398 
106399    --
106400    --
106401    END IF;
106402    --
106403    -- Bug 4922099
106404    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106405           (NVL(l_enc_upg_option, 'N') = 'O')
106406         ) AND
106407         (l_bflow_method_code = 'PRIOR_ENTRY')
106408       )
106409    THEN
106410       IF
106411       --
106412       1 = 2
106413       --
106414       THEN
106415       xla_accounting_err_pkg.build_message
106416                                     (p_appli_s_name            => 'XLA'
106417                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106418                                     ,p_token_1                 => 'LINE_NUMBER'
106419                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
106420                                     ,p_token_2                 => 'LINE_TYPE_NAME'
106421                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
106422                                                                              l_component_type
106423                                                                             ,l_component_code
106424                                                                             ,l_component_type_code
106425                                                                             ,l_component_appl_id
106426                                                                             ,l_amb_context_code
106427                                                                             ,l_entity_code
106428                                                                             ,l_event_class_code
106429                                                                            )
106430                                     ,p_token_3                 => 'OWNER'
106431                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
106432                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
106433                                                                           ,p_lookup_code    => l_component_type_code
106434                                                                          )
106435                                     ,p_token_4                 => 'PRODUCT_NAME'
106436                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106437                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106438                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106439                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106440                                     ,p_ae_header_id            =>  NULL
106441                                        );
106442 
106443         IF (C_LEVEL_ERROR>= g_log_level) THEN
106444                  trace
106445                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106446                       ,p_level    => C_LEVEL_ERROR
106447                       ,p_module   => l_log_module);
106448         END IF;
106449       END IF;
106450    END IF;
106451    --
106452    --
106453    ------------------------------------------------------------------------------------------------
106454    -- 4219869 Business Flow
106455    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106456    -- Prior Entry.  Currently, the following code is always generated.
106457    ------------------------------------------------------------------------------------------------
106458    XLA_AE_LINES_PKG.ValidateCurrentLine;
106459 
106460    ------------------------------------------------------------------------------------
106461    -- 4219869 Business Flow
106462    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106463    ------------------------------------------------------------------------------------
106464    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106465 
106466    ----------------------------------------------------------------------------------
106467    -- 4219869 Business Flow
106468    -- Update journal entry status -- Need to generate this within IF <condition>
106469    ----------------------------------------------------------------------------------
106470    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106471          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106472          ,p_balance_type_code => l_balance_type_code
106473          );
106474 
106475    -------------------------------------------------------------------------------------------
106476    -- 4262811 - Generate the Accrual Reversal lines
106477    -------------------------------------------------------------------------------------------
106478    BEGIN
106479       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
106480                               (g_array_event(p_event_id).array_value_num('header_index'));
106481       IF l_acc_rev_flag IS NULL THEN
106482          l_acc_rev_flag := 'N';
106483       END IF;
106484    EXCEPTION
106485       WHEN OTHERS THEN
106486          l_acc_rev_flag := 'N';
106487    END;
106488    --
106489    IF (l_acc_rev_flag = 'Y') THEN
106490 
106491        -- 4645092  ------------------------------------------------------------------------------
106492        -- To allow MPA report to determine if it should generate report process
106493        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
106494        ------------------------------------------------------------------------------------------
106495 
106496        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106497        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106498    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
106499    -- call ADRs
106500    -- Bug 4922099
106501    --
106502    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106503         (NVL(l_actual_upg_option, 'N') = 'O') OR
106504         (NVL(l_enc_upg_option, 'N') = 'O')
106505       )
106506    THEN
106507    NULL;
106508    --
106509    --
106510    
106511   l_ccid := AcctDerRule_24(
106512            p_application_id           => p_application_id
106513          , p_ae_header_id             => l_ae_header_id 
106514 , p_source_40 => p_source_40
106515          , x_transaction_coa_id       => l_adr_transaction_coa_id
106516          , x_accounting_coa_id        => l_adr_accounting_coa_id
106517          , x_value_type_code          => l_adr_value_type_code
106518          , p_side                     => 'NA'
106519    );
106520 
106521    xla_ae_lines_pkg.set_ccid(
106522     p_code_combination_id          => l_ccid
106523   , p_value_type_code              => l_adr_value_type_code
106524   , p_transaction_coa_id           => l_adr_transaction_coa_id
106525   , p_accounting_coa_id            => l_adr_accounting_coa_id
106526   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
106527   , p_adr_type_code                => 'S'
106528   , p_component_type               => l_component_type
106529   , p_component_code               => l_component_code
106530   , p_component_type_code          => l_component_type_code
106531   , p_component_appl_id            => l_component_appl_id
106532   , p_amb_context_code             => l_amb_context_code
106533   , p_side                         => 'NA'
106534   );
106535 
106536 
106537    --
106538    --
106539    END IF;
106540 
106541        --
106542        -- Update the line information that should be overwritten
106543        --
106544        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106545                                          p_header_num   => 1);
106546        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
106547 
106548        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106549 
106550        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
106551           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106552        END IF;
106553 
106554       --
106555       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106556       --
106557       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106558           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
106559       ELSE
106560           ---------------------------------------------------------------------------------------------------
106561           -- 4262811a Switch Sign
106562           ---------------------------------------------------------------------------------------------------
106563           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
106564           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106565                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106566           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106567                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106568           -- 5132302
106569           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106570                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106571 
106572       END IF;
106573 
106574       -- 4955764
106575       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106576       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106577 
106578 
106579       XLA_AE_LINES_PKG.ValidateCurrentLine;
106580       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106581 
106582       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106583                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106584                ,p_balance_type_code => l_balance_type_code);
106585 
106586    END IF;
106587 
106588    -----------------------------------------------------------------------------------------
106589    -- 4262811 Multiperiod Accounting
106590    -----------------------------------------------------------------------------------------
106591      -- No MPA option is assigned.
106592 
106593 
106594 END IF;
106595 END IF;
106596 --
106597 
106598 --
106599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106600    trace
106601       (p_msg      => 'END of AcctLineType_210'
106602       ,p_level    => C_LEVEL_PROCEDURE
106603       ,p_module   => l_log_module);
106604 END IF;
106605 --
106606 EXCEPTION
106607   WHEN xla_exceptions_pkg.application_exception THEN
106608       RAISE;
106609   WHEN OTHERS THEN
106610        xla_exceptions_pkg.raise_message
106611            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_210');
106612 END AcctLineType_210;
106613 --
106614 
106615 ---------------------------------------
106616 --
106617 -- PRIVATE FUNCTION
106618 --         AcctLineType_211
106619 --
106620 ---------------------------------------
106621 PROCEDURE AcctLineType_211 (
106622   p_application_id        IN NUMBER
106623  ,p_event_id              IN NUMBER
106624  ,p_calculate_acctd_flag  IN VARCHAR2
106625  ,p_calculate_g_l_flag    IN VARCHAR2
106626  ,p_actual_flag           IN OUT VARCHAR2
106627  ,p_balance_type_code     OUT VARCHAR2
106628  ,p_gain_or_loss_ref      OUT VARCHAR2
106629  
106630 --TRANSACTION_ID
106631  , p_source_1            IN NUMBER
106632 --Item Concatenated Segments
106633  , p_source_2            IN VARCHAR2
106634 --Transaction Quantity
106635  , p_source_3            IN NUMBER
106636 --Transaction Unit of Measure Code
106637  , p_source_4            IN VARCHAR2
106638 --Inventory Transaction Type Description
106639  , p_source_5            IN VARCHAR2
106640 --Interorg Transfer Credit Account
106641  , p_source_40            IN NUMBER
106642 --DISTRIBUTION_IDENTIFIER
106643  , p_source_84            IN NUMBER
106644 --Distribution Type
106645  , p_source_85            IN VARCHAR2
106646  , p_source_85_meaning    IN VARCHAR2
106647 --Entered Currency Code
106648  , p_source_88            IN VARCHAR2
106649 --Entered Amount
106650  , p_source_91            IN NUMBER
106651 --Currency Conversion Date
106652  , p_source_92            IN DATE
106653 --Currency Conversion Rate
106654  , p_source_93            IN NUMBER
106655 --Currency Conversion Type
106656  , p_source_94            IN VARCHAR2
106657 --Accounted Amount
106658  , p_source_95            IN NUMBER
106659 --Accounting Line Type
106660  , p_source_97            IN NUMBER
106661 )
106662 IS
106663 
106664 l_component_type              VARCHAR2(80);
106665 l_component_code              VARCHAR2(30);
106666 l_component_type_code         VARCHAR2(1);
106667 l_component_appl_id           INTEGER;
106668 l_amb_context_code            VARCHAR2(30);
106669 l_entity_code                 VARCHAR2(30);
106670 l_event_class_code            VARCHAR2(30);
106671 l_ae_header_id                NUMBER;
106672 l_event_type_code             VARCHAR2(30);
106673 l_line_definition_code        VARCHAR2(30);
106674 l_line_definition_owner_code  VARCHAR2(1);
106675 --
106676 -- adr variables
106677 l_segment                     VARCHAR2(30);
106678 l_ccid                        NUMBER;
106679 l_adr_transaction_coa_id      NUMBER;
106680 l_adr_accounting_coa_id       NUMBER;
106681 l_adr_flexfield_segment_code  VARCHAR2(30);
106682 l_adr_flex_value_set_id       NUMBER;
106683 l_adr_value_type_code         VARCHAR2(30);
106684 l_adr_value_combination_id    NUMBER;
106685 l_adr_value_segment_code      VARCHAR2(30);
106686 
106687 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
106688 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
106689 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
106690 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
106691 
106692 -- 4262811 Variables ------------------------------------------------------------------------------------------
106693 l_entered_amt_idx             NUMBER;
106694 l_accted_amt_idx              NUMBER;
106695 l_acc_rev_flag                VARCHAR2(1);
106696 l_accrual_line_num            NUMBER;
106697 l_tmp_amt                     NUMBER;
106698 l_acc_rev_natural_side_code   VARCHAR2(1);
106699 
106700 l_num_entries                 NUMBER;
106701 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
106702 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
106703 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
106704 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
106705 l_recog_line_1                NUMBER;
106706 l_recog_line_2                NUMBER;
106707 
106708 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
106709 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
106710 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
106711 
106712 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106713 
106714 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
106715 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
106716 
106717 ---------------------------------------------------------------------------------------------------------------
106718 
106719 
106720 --
106721 -- bulk performance
106722 --
106723 l_balance_type_code           VARCHAR2(1);
106724 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
106725 l_log_module                  VARCHAR2(240);
106726 
106727 --
106728 -- Upgrade strategy
106729 --
106730 l_actual_upg_option           VARCHAR2(1);
106731 l_enc_upg_option           VARCHAR2(1);
106732 
106733 --
106734 BEGIN
106735 --
106736 IF g_log_enabled THEN
106737       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_211';
106738 END IF;
106739 --
106740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106741 
106742       trace
106743          (p_msg      => 'BEGIN of AcctLineType_211'
106744          ,p_level    => C_LEVEL_PROCEDURE
106745          ,p_module   => l_log_module);
106746 
106747 END IF;
106748 --
106749 l_component_type             := 'AMB_JLT';
106750 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
106751 l_component_type_code        := 'S';
106752 l_component_appl_id          :=  707;
106753 l_amb_context_code           := 'DEFAULT';
106754 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
106755 l_event_class_code           := 'USER_DEFINE';
106756 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
106757 l_line_definition_owner_code := 'S';
106758 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
106759 --
106760 l_balance_type_code          := 'A';
106761 l_segment                     := NULL;
106762 l_ccid                        := NULL;
106763 l_adr_transaction_coa_id      := NULL;
106764 l_adr_accounting_coa_id       := NULL;
106765 l_adr_flexfield_segment_code  := NULL;
106766 l_adr_flex_value_set_id       := NULL;
106767 l_adr_value_type_code         := NULL;
106768 l_adr_value_combination_id    := NULL;
106769 l_adr_value_segment_code      := NULL;
106770 
106771 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
106772 l_bflow_class_code           := '';    -- 4219869 Business Flow
106773 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
106774 l_budgetary_control_flag     := 'N';
106775 
106776 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
106777 l_bflow_applied_to_amt       := NULL; -- 5132302
106778 l_entered_amt_idx            := NULL;          -- 4262811
106779 l_accted_amt_idx             := NULL;          -- 4262811
106780 l_acc_rev_flag               := NULL;          -- 4262811
106781 l_accrual_line_num           := NULL;          -- 4262811
106782 l_tmp_amt                    := NULL;          -- 4262811
106783 --
106784  
106785 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106786     l_balance_type_code <> 'B' THEN
106787 IF NVL(p_source_97,9E125) =  11
106788  THEN 
106789 
106790    --
106791    XLA_AE_LINES_PKG.SetNewLine;
106792 
106793    p_balance_type_code          := l_balance_type_code;
106794    -- set the flag so later we will know whether the gain loss line needs to be created
106795    
106796    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106797      p_actual_flag :='A';
106798    END IF;
106799 
106800    --
106801    -- bulk performance
106802    --
106803    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106804                                       p_header_num   => 0); -- 4262811
106805    --
106806    -- set accounting line options
106807    --
106808    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106809            p_natural_side_code          => 'D'
106810          , p_gain_or_loss_flag          => 'N'
106811          , p_gl_transfer_mode_code      => 'S'
106812          , p_acct_entry_type_code       => 'A'
106813          , p_switch_side_flag           => 'Y'
106814          , p_merge_duplicate_code       => 'N'
106815          );
106816    --
106817    l_acc_rev_natural_side_code := 'C';  -- 4262811
106818    -- 
106819    --
106820    -- set accounting line type info
106821    --
106822    xla_ae_lines_pkg.SetAcctLineType
106823       (p_component_type             => l_component_type
106824       ,p_event_type_code            => l_event_type_code
106825       ,p_line_definition_owner_code => l_line_definition_owner_code
106826       ,p_line_definition_code       => l_line_definition_code
106827       ,p_accounting_line_code       => l_component_code
106828       ,p_accounting_line_type_code  => l_component_type_code
106829       ,p_accounting_line_appl_id    => l_component_appl_id
106830       ,p_amb_context_code           => l_amb_context_code
106831       ,p_entity_code                => l_entity_code
106832       ,p_event_class_code           => l_event_class_code);
106833    --
106834    -- set accounting class
106835    --
106836    xla_ae_lines_pkg.SetAcctClass(
106837            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
106838          , p_ae_header_id           => l_ae_header_id
106839          );
106840 
106841    --
106842    -- set rounding class
106843    --
106844    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106845                       'INTERORG_TRANSFER_CREDIT';
106846 
106847    --
106848    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106849    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106850    --
106851    -- bulk performance
106852    --
106853    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106854 
106855    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106856       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106857 
106858    -- 4955764
106859    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106860       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106861 
106862    -- 4458381 Public Sector Enh
106863    
106864    --
106865    -- set accounting attributes for the line type
106866    --
106867    l_entered_amt_idx := 3;
106868    l_accted_amt_idx  := 8;
106869    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
106870    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106871    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
106872    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106873    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
106874    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106875    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
106876    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106877    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
106878    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106879    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
106880    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106881    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
106882    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106883    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
106884    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106885    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
106886 
106887    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106888    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106889 
106890    ---------------------------------------------------------------------------------------------------------------
106891    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106892    ---------------------------------------------------------------------------------------------------------------
106893    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106894 
106895    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106896    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106897 
106898    IF xla_accounting_cache_pkg.GetValueChar
106899          (p_source_code         => 'LEDGER_CATEGORY_CODE'
106900          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106901    AND l_bflow_method_code = 'PRIOR_ENTRY'
106902 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106903    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106904          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106905        )
106906    THEN
106907          xla_ae_lines_pkg.BflowUpgEntry
106908            (p_business_method_code    => l_bflow_method_code
106909            ,p_business_class_code     => l_bflow_class_code
106910            ,p_balance_type            => l_balance_type_code);
106911    ELSE
106912       NULL;
106913 -- No business flow processing for business flow method of NONE.
106914    END IF;
106915 
106916    --
106917    -- call analytical criteria
106918    --
106919    
106920    --
106921    -- call description
106922    --
106923    
106924 xla_ae_lines_pkg.SetLineDescription(
106925    p_ae_header_id => l_ae_header_id
106926   ,p_description  => Description_1 (
106927      p_application_id         => p_application_id
106928    , p_ae_header_id           => l_ae_header_id 
106929 , p_source_1 => p_source_1
106930 , p_source_2 => p_source_2
106931 , p_source_3 => p_source_3
106932 , p_source_4 => p_source_4
106933 , p_source_5 => p_source_5
106934    )
106935 );
106936 
106937 
106938    --
106939    -- call ADRs
106940    -- Bug 4922099
106941    --
106942    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106943         (NVL(l_actual_upg_option, 'N') = 'O') OR
106944         (NVL(l_enc_upg_option, 'N') = 'O')
106945       )
106946    THEN
106947    NULL;
106948    --
106949    --
106950    
106951   l_ccid := AcctDerRule_24(
106952            p_application_id           => p_application_id
106953          , p_ae_header_id             => l_ae_header_id 
106954 , p_source_40 => p_source_40
106955          , x_transaction_coa_id       => l_adr_transaction_coa_id
106956          , x_accounting_coa_id        => l_adr_accounting_coa_id
106957          , x_value_type_code          => l_adr_value_type_code
106958          , p_side                     => 'NA'
106959    );
106960 
106961    xla_ae_lines_pkg.set_ccid(
106962     p_code_combination_id          => l_ccid
106963   , p_value_type_code              => l_adr_value_type_code
106964   , p_transaction_coa_id           => l_adr_transaction_coa_id
106965   , p_accounting_coa_id            => l_adr_accounting_coa_id
106966   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
106967   , p_adr_type_code                => 'S'
106968   , p_component_type               => l_component_type
106969   , p_component_code               => l_component_code
106970   , p_component_type_code          => l_component_type_code
106971   , p_component_appl_id            => l_component_appl_id
106972   , p_amb_context_code             => l_amb_context_code
106973   , p_side                         => 'NA'
106974   );
106975 
106976 
106977    --
106978    --
106979    END IF;
106980    --
106981    -- Bug 4922099
106982    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106983           (NVL(l_enc_upg_option, 'N') = 'O')
106984         ) AND
106985         (l_bflow_method_code = 'PRIOR_ENTRY')
106986       )
106987    THEN
106988       IF
106989       --
106990       1 = 2
106991       --
106992       THEN
106993       xla_accounting_err_pkg.build_message
106994                                     (p_appli_s_name            => 'XLA'
106995                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106996                                     ,p_token_1                 => 'LINE_NUMBER'
106997                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
106998                                     ,p_token_2                 => 'LINE_TYPE_NAME'
106999                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
107000                                                                              l_component_type
107001                                                                             ,l_component_code
107002                                                                             ,l_component_type_code
107003                                                                             ,l_component_appl_id
107004                                                                             ,l_amb_context_code
107005                                                                             ,l_entity_code
107006                                                                             ,l_event_class_code
107007                                                                            )
107008                                     ,p_token_3                 => 'OWNER'
107009                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
107010                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
107011                                                                           ,p_lookup_code    => l_component_type_code
107012                                                                          )
107013                                     ,p_token_4                 => 'PRODUCT_NAME'
107014                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107015                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107016                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107017                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107018                                     ,p_ae_header_id            =>  NULL
107019                                        );
107020 
107021         IF (C_LEVEL_ERROR>= g_log_level) THEN
107022                  trace
107023                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107024                       ,p_level    => C_LEVEL_ERROR
107025                       ,p_module   => l_log_module);
107026         END IF;
107027       END IF;
107028    END IF;
107029    --
107030    --
107031    ------------------------------------------------------------------------------------------------
107032    -- 4219869 Business Flow
107033    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107034    -- Prior Entry.  Currently, the following code is always generated.
107035    ------------------------------------------------------------------------------------------------
107036    XLA_AE_LINES_PKG.ValidateCurrentLine;
107037 
107038    ------------------------------------------------------------------------------------
107039    -- 4219869 Business Flow
107040    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107041    ------------------------------------------------------------------------------------
107042    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107043 
107044    ----------------------------------------------------------------------------------
107045    -- 4219869 Business Flow
107046    -- Update journal entry status -- Need to generate this within IF <condition>
107047    ----------------------------------------------------------------------------------
107048    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107049          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107050          ,p_balance_type_code => l_balance_type_code
107051          );
107052 
107053    -------------------------------------------------------------------------------------------
107054    -- 4262811 - Generate the Accrual Reversal lines
107055    -------------------------------------------------------------------------------------------
107056    BEGIN
107057       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107058                               (g_array_event(p_event_id).array_value_num('header_index'));
107059       IF l_acc_rev_flag IS NULL THEN
107060          l_acc_rev_flag := 'N';
107061       END IF;
107062    EXCEPTION
107063       WHEN OTHERS THEN
107064          l_acc_rev_flag := 'N';
107065    END;
107066    --
107067    IF (l_acc_rev_flag = 'Y') THEN
107068 
107069        -- 4645092  ------------------------------------------------------------------------------
107070        -- To allow MPA report to determine if it should generate report process
107071        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107072        ------------------------------------------------------------------------------------------
107073 
107074        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107075        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107076    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
107077    -- call ADRs
107078    -- Bug 4922099
107079    --
107080    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107081         (NVL(l_actual_upg_option, 'N') = 'O') OR
107082         (NVL(l_enc_upg_option, 'N') = 'O')
107083       )
107084    THEN
107085    NULL;
107086    --
107087    --
107088    
107089   l_ccid := AcctDerRule_24(
107090            p_application_id           => p_application_id
107091          , p_ae_header_id             => l_ae_header_id 
107092 , p_source_40 => p_source_40
107093          , x_transaction_coa_id       => l_adr_transaction_coa_id
107094          , x_accounting_coa_id        => l_adr_accounting_coa_id
107095          , x_value_type_code          => l_adr_value_type_code
107096          , p_side                     => 'NA'
107097    );
107098 
107099    xla_ae_lines_pkg.set_ccid(
107100     p_code_combination_id          => l_ccid
107101   , p_value_type_code              => l_adr_value_type_code
107102   , p_transaction_coa_id           => l_adr_transaction_coa_id
107103   , p_accounting_coa_id            => l_adr_accounting_coa_id
107104   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
107105   , p_adr_type_code                => 'S'
107106   , p_component_type               => l_component_type
107107   , p_component_code               => l_component_code
107108   , p_component_type_code          => l_component_type_code
107109   , p_component_appl_id            => l_component_appl_id
107110   , p_amb_context_code             => l_amb_context_code
107111   , p_side                         => 'NA'
107112   );
107113 
107114 
107115    --
107116    --
107117    END IF;
107118 
107119        --
107120        -- Update the line information that should be overwritten
107121        --
107122        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107123                                          p_header_num   => 1);
107124        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
107125 
107126        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107127 
107128        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
107129           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107130        END IF;
107131 
107132       --
107133       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107134       --
107135       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107136           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
107137       ELSE
107138           ---------------------------------------------------------------------------------------------------
107139           -- 4262811a Switch Sign
107140           ---------------------------------------------------------------------------------------------------
107141           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
107142           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107143                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107144           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107145                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107146           -- 5132302
107147           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107148                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107149 
107150       END IF;
107151 
107152       -- 4955764
107153       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107154       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107155 
107156 
107157       XLA_AE_LINES_PKG.ValidateCurrentLine;
107158       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107159 
107160       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107161                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107162                ,p_balance_type_code => l_balance_type_code);
107163 
107164    END IF;
107165 
107166    -----------------------------------------------------------------------------------------
107167    -- 4262811 Multiperiod Accounting
107168    -----------------------------------------------------------------------------------------
107169      -- No MPA option is assigned.
107170 
107171 
107172 END IF;
107173 END IF;
107174 --
107175 
107176 --
107177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107178    trace
107179       (p_msg      => 'END of AcctLineType_211'
107180       ,p_level    => C_LEVEL_PROCEDURE
107181       ,p_module   => l_log_module);
107182 END IF;
107183 --
107184 EXCEPTION
107185   WHEN xla_exceptions_pkg.application_exception THEN
107186       RAISE;
107187   WHEN OTHERS THEN
107188        xla_exceptions_pkg.raise_message
107189            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_211');
107190 END AcctLineType_211;
107191 --
107192 
107193 ---------------------------------------
107194 --
107195 -- PRIVATE FUNCTION
107196 --         AcctLineType_212
107197 --
107198 ---------------------------------------
107199 PROCEDURE AcctLineType_212 (
107200   p_application_id        IN NUMBER
107201  ,p_event_id              IN NUMBER
107202  ,p_calculate_acctd_flag  IN VARCHAR2
107203  ,p_calculate_g_l_flag    IN VARCHAR2
107204  ,p_actual_flag           IN OUT VARCHAR2
107205  ,p_balance_type_code     OUT VARCHAR2
107206  ,p_gain_or_loss_ref      OUT VARCHAR2
107207  
107208 --TRANSACTION_ID
107209  , p_source_1            IN NUMBER
107210 --Item Concatenated Segments
107211  , p_source_2            IN VARCHAR2
107212 --Transaction Quantity
107213  , p_source_3            IN NUMBER
107214 --Transaction Unit of Measure Code
107215  , p_source_4            IN VARCHAR2
107216 --Inventory Transaction Type Description
107217  , p_source_5            IN VARCHAR2
107218 --Cost Management Default Account
107219  , p_source_11            IN NUMBER
107220 --DISTRIBUTION_IDENTIFIER
107221  , p_source_84            IN NUMBER
107222 --Distribution Type
107223  , p_source_85            IN VARCHAR2
107224  , p_source_85_meaning    IN VARCHAR2
107225 --Entered Currency Code
107226  , p_source_88            IN VARCHAR2
107227 --Entered Amount
107228  , p_source_91            IN NUMBER
107229 --Currency Conversion Date
107230  , p_source_92            IN DATE
107231 --Currency Conversion Rate
107232  , p_source_93            IN NUMBER
107233 --Currency Conversion Type
107234  , p_source_94            IN VARCHAR2
107235 --Accounted Amount
107236  , p_source_95            IN NUMBER
107237 --Accounting Line Type
107238  , p_source_97            IN NUMBER
107239 )
107240 IS
107241 
107242 l_component_type              VARCHAR2(80);
107243 l_component_code              VARCHAR2(30);
107244 l_component_type_code         VARCHAR2(1);
107245 l_component_appl_id           INTEGER;
107246 l_amb_context_code            VARCHAR2(30);
107247 l_entity_code                 VARCHAR2(30);
107248 l_event_class_code            VARCHAR2(30);
107249 l_ae_header_id                NUMBER;
107250 l_event_type_code             VARCHAR2(30);
107251 l_line_definition_code        VARCHAR2(30);
107252 l_line_definition_owner_code  VARCHAR2(1);
107253 --
107254 -- adr variables
107255 l_segment                     VARCHAR2(30);
107256 l_ccid                        NUMBER;
107257 l_adr_transaction_coa_id      NUMBER;
107258 l_adr_accounting_coa_id       NUMBER;
107259 l_adr_flexfield_segment_code  VARCHAR2(30);
107260 l_adr_flex_value_set_id       NUMBER;
107261 l_adr_value_type_code         VARCHAR2(30);
107262 l_adr_value_combination_id    NUMBER;
107263 l_adr_value_segment_code      VARCHAR2(30);
107264 
107265 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
107266 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
107267 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
107268 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
107269 
107270 -- 4262811 Variables ------------------------------------------------------------------------------------------
107271 l_entered_amt_idx             NUMBER;
107272 l_accted_amt_idx              NUMBER;
107273 l_acc_rev_flag                VARCHAR2(1);
107274 l_accrual_line_num            NUMBER;
107275 l_tmp_amt                     NUMBER;
107276 l_acc_rev_natural_side_code   VARCHAR2(1);
107277 
107278 l_num_entries                 NUMBER;
107279 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
107280 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
107281 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
107282 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
107283 l_recog_line_1                NUMBER;
107284 l_recog_line_2                NUMBER;
107285 
107286 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
107287 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
107288 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
107289 
107290 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107291 
107292 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
107293 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
107294 
107295 ---------------------------------------------------------------------------------------------------------------
107296 
107297 
107298 --
107299 -- bulk performance
107300 --
107301 l_balance_type_code           VARCHAR2(1);
107302 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
107303 l_log_module                  VARCHAR2(240);
107304 
107305 --
107306 -- Upgrade strategy
107307 --
107308 l_actual_upg_option           VARCHAR2(1);
107309 l_enc_upg_option           VARCHAR2(1);
107310 
107311 --
107312 BEGIN
107313 --
107314 IF g_log_enabled THEN
107315       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_212';
107316 END IF;
107317 --
107318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107319 
107320       trace
107321          (p_msg      => 'BEGIN of AcctLineType_212'
107322          ,p_level    => C_LEVEL_PROCEDURE
107323          ,p_module   => l_log_module);
107324 
107325 END IF;
107326 --
107327 l_component_type             := 'AMB_JLT';
107328 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
107329 l_component_type_code        := 'S';
107330 l_component_appl_id          :=  707;
107331 l_amb_context_code           := 'DEFAULT';
107332 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
107333 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
107334 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
107335 l_line_definition_owner_code := 'S';
107336 l_line_definition_code       := 'PI_RCPT_SENDER_RCPT_TP';
107337 --
107338 l_balance_type_code          := 'A';
107339 l_segment                     := NULL;
107340 l_ccid                        := NULL;
107341 l_adr_transaction_coa_id      := NULL;
107342 l_adr_accounting_coa_id       := NULL;
107343 l_adr_flexfield_segment_code  := NULL;
107344 l_adr_flex_value_set_id       := NULL;
107345 l_adr_value_type_code         := NULL;
107346 l_adr_value_combination_id    := NULL;
107347 l_adr_value_segment_code      := NULL;
107348 
107349 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
107350 l_bflow_class_code           := '';    -- 4219869 Business Flow
107351 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
107352 l_budgetary_control_flag     := 'N';
107353 
107354 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
107355 l_bflow_applied_to_amt       := NULL; -- 5132302
107356 l_entered_amt_idx            := NULL;          -- 4262811
107357 l_accted_amt_idx             := NULL;          -- 4262811
107358 l_acc_rev_flag               := NULL;          -- 4262811
107359 l_accrual_line_num           := NULL;          -- 4262811
107360 l_tmp_amt                    := NULL;          -- 4262811
107361 --
107362  
107363 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107364     l_balance_type_code <> 'B' THEN
107365 IF NVL(p_source_97,9E125) =  11
107366  THEN 
107367 
107368    --
107369    XLA_AE_LINES_PKG.SetNewLine;
107370 
107371    p_balance_type_code          := l_balance_type_code;
107372    -- set the flag so later we will know whether the gain loss line needs to be created
107373    
107374    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107375      p_actual_flag :='A';
107376    END IF;
107377 
107378    --
107379    -- bulk performance
107380    --
107381    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107382                                       p_header_num   => 0); -- 4262811
107383    --
107384    -- set accounting line options
107385    --
107386    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107387            p_natural_side_code          => 'D'
107388          , p_gain_or_loss_flag          => 'N'
107389          , p_gl_transfer_mode_code      => 'S'
107390          , p_acct_entry_type_code       => 'A'
107391          , p_switch_side_flag           => 'Y'
107392          , p_merge_duplicate_code       => 'N'
107393          );
107394    --
107395    l_acc_rev_natural_side_code := 'C';  -- 4262811
107396    -- 
107397    --
107398    -- set accounting line type info
107399    --
107400    xla_ae_lines_pkg.SetAcctLineType
107401       (p_component_type             => l_component_type
107402       ,p_event_type_code            => l_event_type_code
107403       ,p_line_definition_owner_code => l_line_definition_owner_code
107404       ,p_line_definition_code       => l_line_definition_code
107405       ,p_accounting_line_code       => l_component_code
107406       ,p_accounting_line_type_code  => l_component_type_code
107407       ,p_accounting_line_appl_id    => l_component_appl_id
107408       ,p_amb_context_code           => l_amb_context_code
107409       ,p_entity_code                => l_entity_code
107410       ,p_event_class_code           => l_event_class_code);
107411    --
107412    -- set accounting class
107413    --
107414    xla_ae_lines_pkg.SetAcctClass(
107415            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
107416          , p_ae_header_id           => l_ae_header_id
107417          );
107418 
107419    --
107420    -- set rounding class
107421    --
107422    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
107423                       'INTERORG_TRANSFER_CREDIT';
107424 
107425    --
107426    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
107427    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
107428    --
107429    -- bulk performance
107430    --
107431    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
107432 
107433    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
107434       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
107435 
107436    -- 4955764
107437    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107438       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
107439 
107440    -- 4458381 Public Sector Enh
107441    
107442    --
107443    -- set accounting attributes for the line type
107444    --
107445    l_entered_amt_idx := 3;
107446    l_accted_amt_idx  := 8;
107447    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
107448    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
107449    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
107450    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
107451    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
107452    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
107453    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
107454    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
107455    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
107456    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
107457    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
107458    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
107459    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
107460    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
107461    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
107462    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
107463    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
107464 
107465    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
107466    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
107467 
107468    ---------------------------------------------------------------------------------------------------------------
107469    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
107470    ---------------------------------------------------------------------------------------------------------------
107471    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
107472 
107473    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107474    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107475 
107476    IF xla_accounting_cache_pkg.GetValueChar
107477          (p_source_code         => 'LEDGER_CATEGORY_CODE'
107478          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
107479    AND l_bflow_method_code = 'PRIOR_ENTRY'
107480 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
107481    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
107482          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
107483        )
107484    THEN
107485          xla_ae_lines_pkg.BflowUpgEntry
107486            (p_business_method_code    => l_bflow_method_code
107487            ,p_business_class_code     => l_bflow_class_code
107488            ,p_balance_type            => l_balance_type_code);
107489    ELSE
107490       NULL;
107491 -- No business flow processing for business flow method of NONE.
107492    END IF;
107493 
107494    --
107495    -- call analytical criteria
107496    --
107497    
107498    --
107499    -- call description
107500    --
107501    
107502 xla_ae_lines_pkg.SetLineDescription(
107503    p_ae_header_id => l_ae_header_id
107504   ,p_description  => Description_1 (
107505      p_application_id         => p_application_id
107506    , p_ae_header_id           => l_ae_header_id 
107507 , p_source_1 => p_source_1
107508 , p_source_2 => p_source_2
107509 , p_source_3 => p_source_3
107510 , p_source_4 => p_source_4
107511 , p_source_5 => p_source_5
107512    )
107513 );
107514 
107515 
107516    --
107517    -- call ADRs
107518    -- Bug 4922099
107519    --
107520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107521         (NVL(l_actual_upg_option, 'N') = 'O') OR
107522         (NVL(l_enc_upg_option, 'N') = 'O')
107523       )
107524    THEN
107525    NULL;
107526    --
107527    --
107528    
107529   l_ccid := AcctDerRule_6(
107530            p_application_id           => p_application_id
107531          , p_ae_header_id             => l_ae_header_id 
107532 , p_source_11 => p_source_11
107533          , x_transaction_coa_id       => l_adr_transaction_coa_id
107534          , x_accounting_coa_id        => l_adr_accounting_coa_id
107535          , x_value_type_code          => l_adr_value_type_code
107536          , p_side                     => 'NA'
107537    );
107538 
107539    xla_ae_lines_pkg.set_ccid(
107540     p_code_combination_id          => l_ccid
107541   , p_value_type_code              => l_adr_value_type_code
107542   , p_transaction_coa_id           => l_adr_transaction_coa_id
107543   , p_accounting_coa_id            => l_adr_accounting_coa_id
107544   , p_adr_code                     => 'CST_DEFAULT'
107545   , p_adr_type_code                => 'S'
107546   , p_component_type               => l_component_type
107547   , p_component_code               => l_component_code
107548   , p_component_type_code          => l_component_type_code
107549   , p_component_appl_id            => l_component_appl_id
107550   , p_amb_context_code             => l_amb_context_code
107551   , p_side                         => 'NA'
107552   );
107553 
107554 
107555    --
107556    --
107557    END IF;
107558    --
107559    -- Bug 4922099
107560    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
107561           (NVL(l_enc_upg_option, 'N') = 'O')
107562         ) AND
107563         (l_bflow_method_code = 'PRIOR_ENTRY')
107564       )
107565    THEN
107566       IF
107567       --
107568       1 = 2
107569       --
107570       THEN
107571       xla_accounting_err_pkg.build_message
107572                                     (p_appli_s_name            => 'XLA'
107573                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107574                                     ,p_token_1                 => 'LINE_NUMBER'
107575                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
107576                                     ,p_token_2                 => 'LINE_TYPE_NAME'
107577                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
107578                                                                              l_component_type
107579                                                                             ,l_component_code
107580                                                                             ,l_component_type_code
107581                                                                             ,l_component_appl_id
107582                                                                             ,l_amb_context_code
107583                                                                             ,l_entity_code
107584                                                                             ,l_event_class_code
107585                                                                            )
107586                                     ,p_token_3                 => 'OWNER'
107587                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
107588                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
107589                                                                           ,p_lookup_code    => l_component_type_code
107590                                                                          )
107591                                     ,p_token_4                 => 'PRODUCT_NAME'
107592                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107593                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107594                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107595                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107596                                     ,p_ae_header_id            =>  NULL
107597                                        );
107598 
107599         IF (C_LEVEL_ERROR>= g_log_level) THEN
107600                  trace
107601                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107602                       ,p_level    => C_LEVEL_ERROR
107603                       ,p_module   => l_log_module);
107604         END IF;
107605       END IF;
107606    END IF;
107607    --
107608    --
107609    ------------------------------------------------------------------------------------------------
107610    -- 4219869 Business Flow
107611    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107612    -- Prior Entry.  Currently, the following code is always generated.
107613    ------------------------------------------------------------------------------------------------
107614    XLA_AE_LINES_PKG.ValidateCurrentLine;
107615 
107616    ------------------------------------------------------------------------------------
107617    -- 4219869 Business Flow
107618    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107619    ------------------------------------------------------------------------------------
107620    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107621 
107622    ----------------------------------------------------------------------------------
107623    -- 4219869 Business Flow
107624    -- Update journal entry status -- Need to generate this within IF <condition>
107625    ----------------------------------------------------------------------------------
107626    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107627          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107628          ,p_balance_type_code => l_balance_type_code
107629          );
107630 
107631    -------------------------------------------------------------------------------------------
107632    -- 4262811 - Generate the Accrual Reversal lines
107633    -------------------------------------------------------------------------------------------
107634    BEGIN
107635       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107636                               (g_array_event(p_event_id).array_value_num('header_index'));
107637       IF l_acc_rev_flag IS NULL THEN
107638          l_acc_rev_flag := 'N';
107639       END IF;
107640    EXCEPTION
107641       WHEN OTHERS THEN
107642          l_acc_rev_flag := 'N';
107643    END;
107644    --
107645    IF (l_acc_rev_flag = 'Y') THEN
107646 
107647        -- 4645092  ------------------------------------------------------------------------------
107648        -- To allow MPA report to determine if it should generate report process
107649        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107650        ------------------------------------------------------------------------------------------
107651 
107652        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107653        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107654    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
107655    -- call ADRs
107656    -- Bug 4922099
107657    --
107658    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107659         (NVL(l_actual_upg_option, 'N') = 'O') OR
107660         (NVL(l_enc_upg_option, 'N') = 'O')
107661       )
107662    THEN
107663    NULL;
107664    --
107665    --
107666    
107667   l_ccid := AcctDerRule_6(
107668            p_application_id           => p_application_id
107669          , p_ae_header_id             => l_ae_header_id 
107670 , p_source_11 => p_source_11
107671          , x_transaction_coa_id       => l_adr_transaction_coa_id
107672          , x_accounting_coa_id        => l_adr_accounting_coa_id
107673          , x_value_type_code          => l_adr_value_type_code
107674          , p_side                     => 'NA'
107675    );
107676 
107677    xla_ae_lines_pkg.set_ccid(
107678     p_code_combination_id          => l_ccid
107679   , p_value_type_code              => l_adr_value_type_code
107680   , p_transaction_coa_id           => l_adr_transaction_coa_id
107681   , p_accounting_coa_id            => l_adr_accounting_coa_id
107682   , p_adr_code                     => 'CST_DEFAULT'
107683   , p_adr_type_code                => 'S'
107684   , p_component_type               => l_component_type
107685   , p_component_code               => l_component_code
107686   , p_component_type_code          => l_component_type_code
107687   , p_component_appl_id            => l_component_appl_id
107688   , p_amb_context_code             => l_amb_context_code
107689   , p_side                         => 'NA'
107690   );
107691 
107692 
107693    --
107694    --
107695    END IF;
107696 
107697        --
107698        -- Update the line information that should be overwritten
107699        --
107700        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107701                                          p_header_num   => 1);
107702        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
107703 
107704        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107705 
107706        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
107707           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107708        END IF;
107709 
107710       --
107711       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107712       --
107713       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107714           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
107715       ELSE
107716           ---------------------------------------------------------------------------------------------------
107717           -- 4262811a Switch Sign
107718           ---------------------------------------------------------------------------------------------------
107719           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
107720           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107721                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107722           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107723                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107724           -- 5132302
107725           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107726                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107727 
107728       END IF;
107729 
107730       -- 4955764
107731       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107732       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107733 
107734 
107735       XLA_AE_LINES_PKG.ValidateCurrentLine;
107736       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107737 
107738       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107739                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107740                ,p_balance_type_code => l_balance_type_code);
107741 
107742    END IF;
107743 
107744    -----------------------------------------------------------------------------------------
107745    -- 4262811 Multiperiod Accounting
107746    -----------------------------------------------------------------------------------------
107747      -- No MPA option is assigned.
107748 
107749 
107750 END IF;
107751 END IF;
107752 --
107753 
107754 --
107755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107756    trace
107757       (p_msg      => 'END of AcctLineType_212'
107758       ,p_level    => C_LEVEL_PROCEDURE
107759       ,p_module   => l_log_module);
107760 END IF;
107761 --
107762 EXCEPTION
107763   WHEN xla_exceptions_pkg.application_exception THEN
107764       RAISE;
107765   WHEN OTHERS THEN
107766        xla_exceptions_pkg.raise_message
107767            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_212');
107768 END AcctLineType_212;
107769 --
107770 
107771 ---------------------------------------
107772 --
107773 -- PRIVATE FUNCTION
107774 --         AcctLineType_213
107775 --
107776 ---------------------------------------
107777 PROCEDURE AcctLineType_213 (
107778   p_application_id        IN NUMBER
107779  ,p_event_id              IN NUMBER
107780  ,p_calculate_acctd_flag  IN VARCHAR2
107781  ,p_calculate_g_l_flag    IN VARCHAR2
107782  ,p_actual_flag           IN OUT VARCHAR2
107783  ,p_balance_type_code     OUT VARCHAR2
107784  ,p_gain_or_loss_ref      OUT VARCHAR2
107785  
107786 --TRANSACTION_ID
107787  , p_source_1            IN NUMBER
107788 --Item Concatenated Segments
107789  , p_source_2            IN VARCHAR2
107790 --Transaction Quantity
107791  , p_source_3            IN NUMBER
107792 --Transaction Unit of Measure Code
107793  , p_source_4            IN VARCHAR2
107794 --Inventory Transaction Type Description
107795  , p_source_5            IN VARCHAR2
107796 --Interorg Transfer Credit Account
107797  , p_source_40            IN NUMBER
107798 --DISTRIBUTION_IDENTIFIER
107799  , p_source_84            IN NUMBER
107800 --Distribution Type
107801  , p_source_85            IN VARCHAR2
107802  , p_source_85_meaning    IN VARCHAR2
107803 --Entered Currency Code
107804  , p_source_88            IN VARCHAR2
107805 --Entered Amount
107806  , p_source_91            IN NUMBER
107807 --Currency Conversion Date
107808  , p_source_92            IN DATE
107809 --Currency Conversion Rate
107810  , p_source_93            IN NUMBER
107811 --Currency Conversion Type
107812  , p_source_94            IN VARCHAR2
107813 --Accounted Amount
107814  , p_source_95            IN NUMBER
107815 --Accounting Line Type
107816  , p_source_97            IN NUMBER
107817 )
107818 IS
107819 
107820 l_component_type              VARCHAR2(80);
107821 l_component_code              VARCHAR2(30);
107822 l_component_type_code         VARCHAR2(1);
107823 l_component_appl_id           INTEGER;
107824 l_amb_context_code            VARCHAR2(30);
107825 l_entity_code                 VARCHAR2(30);
107826 l_event_class_code            VARCHAR2(30);
107827 l_ae_header_id                NUMBER;
107828 l_event_type_code             VARCHAR2(30);
107829 l_line_definition_code        VARCHAR2(30);
107830 l_line_definition_owner_code  VARCHAR2(1);
107831 --
107832 -- adr variables
107833 l_segment                     VARCHAR2(30);
107834 l_ccid                        NUMBER;
107835 l_adr_transaction_coa_id      NUMBER;
107836 l_adr_accounting_coa_id       NUMBER;
107837 l_adr_flexfield_segment_code  VARCHAR2(30);
107838 l_adr_flex_value_set_id       NUMBER;
107839 l_adr_value_type_code         VARCHAR2(30);
107840 l_adr_value_combination_id    NUMBER;
107841 l_adr_value_segment_code      VARCHAR2(30);
107842 
107843 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
107844 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
107845 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
107846 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
107847 
107848 -- 4262811 Variables ------------------------------------------------------------------------------------------
107849 l_entered_amt_idx             NUMBER;
107850 l_accted_amt_idx              NUMBER;
107851 l_acc_rev_flag                VARCHAR2(1);
107852 l_accrual_line_num            NUMBER;
107853 l_tmp_amt                     NUMBER;
107854 l_acc_rev_natural_side_code   VARCHAR2(1);
107855 
107856 l_num_entries                 NUMBER;
107857 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
107858 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
107859 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
107860 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
107861 l_recog_line_1                NUMBER;
107862 l_recog_line_2                NUMBER;
107863 
107864 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
107865 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
107866 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
107867 
107868 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107869 
107870 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
107871 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
107872 
107873 ---------------------------------------------------------------------------------------------------------------
107874 
107875 
107876 --
107877 -- bulk performance
107878 --
107879 l_balance_type_code           VARCHAR2(1);
107880 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
107881 l_log_module                  VARCHAR2(240);
107882 
107883 --
107884 -- Upgrade strategy
107885 --
107886 l_actual_upg_option           VARCHAR2(1);
107887 l_enc_upg_option           VARCHAR2(1);
107888 
107889 --
107890 BEGIN
107891 --
107892 IF g_log_enabled THEN
107893       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_213';
107894 END IF;
107895 --
107896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107897 
107898       trace
107899          (p_msg      => 'BEGIN of AcctLineType_213'
107900          ,p_level    => C_LEVEL_PROCEDURE
107901          ,p_module   => l_log_module);
107902 
107903 END IF;
107904 --
107905 l_component_type             := 'AMB_JLT';
107906 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
107907 l_component_type_code        := 'S';
107908 l_component_appl_id          :=  707;
107909 l_amb_context_code           := 'DEFAULT';
107910 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
107911 l_event_class_code           := 'USER_DEFINE';
107912 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
107913 l_line_definition_owner_code := 'S';
107914 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
107915 --
107916 l_balance_type_code          := 'A';
107917 l_segment                     := NULL;
107918 l_ccid                        := NULL;
107919 l_adr_transaction_coa_id      := NULL;
107920 l_adr_accounting_coa_id       := NULL;
107921 l_adr_flexfield_segment_code  := NULL;
107922 l_adr_flex_value_set_id       := NULL;
107923 l_adr_value_type_code         := NULL;
107924 l_adr_value_combination_id    := NULL;
107925 l_adr_value_segment_code      := NULL;
107926 
107927 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
107928 l_bflow_class_code           := '';    -- 4219869 Business Flow
107929 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
107930 l_budgetary_control_flag     := 'N';
107931 
107932 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
107933 l_bflow_applied_to_amt       := NULL; -- 5132302
107934 l_entered_amt_idx            := NULL;          -- 4262811
107935 l_accted_amt_idx             := NULL;          -- 4262811
107936 l_acc_rev_flag               := NULL;          -- 4262811
107937 l_accrual_line_num           := NULL;          -- 4262811
107938 l_tmp_amt                    := NULL;          -- 4262811
107939 --
107940  
107941 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107942     l_balance_type_code <> 'B' THEN
107943 IF NVL(p_source_97,9E125) =  11
107944  THEN 
107945 
107946    --
107947    XLA_AE_LINES_PKG.SetNewLine;
107948 
107949    p_balance_type_code          := l_balance_type_code;
107950    -- set the flag so later we will know whether the gain loss line needs to be created
107951    
107952    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107953      p_actual_flag :='A';
107954    END IF;
107955 
107956    --
107957    -- bulk performance
107958    --
107959    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107960                                       p_header_num   => 0); -- 4262811
107961    --
107962    -- set accounting line options
107963    --
107964    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107965            p_natural_side_code          => 'D'
107966          , p_gain_or_loss_flag          => 'N'
107967          , p_gl_transfer_mode_code      => 'S'
107968          , p_acct_entry_type_code       => 'A'
107969          , p_switch_side_flag           => 'Y'
107970          , p_merge_duplicate_code       => 'N'
107971          );
107972    --
107973    l_acc_rev_natural_side_code := 'C';  -- 4262811
107974    -- 
107975    --
107976    -- set accounting line type info
107977    --
107978    xla_ae_lines_pkg.SetAcctLineType
107979       (p_component_type             => l_component_type
107980       ,p_event_type_code            => l_event_type_code
107981       ,p_line_definition_owner_code => l_line_definition_owner_code
107982       ,p_line_definition_code       => l_line_definition_code
107983       ,p_accounting_line_code       => l_component_code
107984       ,p_accounting_line_type_code  => l_component_type_code
107985       ,p_accounting_line_appl_id    => l_component_appl_id
107986       ,p_amb_context_code           => l_amb_context_code
107987       ,p_entity_code                => l_entity_code
107988       ,p_event_class_code           => l_event_class_code);
107989    --
107990    -- set accounting class
107991    --
107992    xla_ae_lines_pkg.SetAcctClass(
107993            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
107994          , p_ae_header_id           => l_ae_header_id
107995          );
107996 
107997    --
107998    -- set rounding class
107999    --
108000    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108001                       'INTERORG_TRANSFER_CREDIT';
108002 
108003    --
108004    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108005    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108006    --
108007    -- bulk performance
108008    --
108009    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108010 
108011    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108012       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108013 
108014    -- 4955764
108015    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108017 
108018    -- 4458381 Public Sector Enh
108019    
108020    --
108021    -- set accounting attributes for the line type
108022    --
108023    l_entered_amt_idx := 3;
108024    l_accted_amt_idx  := 8;
108025    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
108026    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108027    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
108028    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108029    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
108030    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108031    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
108032    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108033    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
108034    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108035    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
108036    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108037    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
108038    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108039    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
108040    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108041    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
108042 
108043    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108044    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108045 
108046    ---------------------------------------------------------------------------------------------------------------
108047    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108048    ---------------------------------------------------------------------------------------------------------------
108049    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108050 
108051    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108052    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108053 
108054    IF xla_accounting_cache_pkg.GetValueChar
108055          (p_source_code         => 'LEDGER_CATEGORY_CODE'
108056          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108057    AND l_bflow_method_code = 'PRIOR_ENTRY'
108058 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108059    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108060          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108061        )
108062    THEN
108063          xla_ae_lines_pkg.BflowUpgEntry
108064            (p_business_method_code    => l_bflow_method_code
108065            ,p_business_class_code     => l_bflow_class_code
108066            ,p_balance_type            => l_balance_type_code);
108067    ELSE
108068       NULL;
108069 -- No business flow processing for business flow method of NONE.
108070    END IF;
108071 
108072    --
108073    -- call analytical criteria
108074    --
108075    
108076    --
108077    -- call description
108078    --
108079    
108080 xla_ae_lines_pkg.SetLineDescription(
108081    p_ae_header_id => l_ae_header_id
108082   ,p_description  => Description_1 (
108083      p_application_id         => p_application_id
108084    , p_ae_header_id           => l_ae_header_id 
108085 , p_source_1 => p_source_1
108086 , p_source_2 => p_source_2
108087 , p_source_3 => p_source_3
108088 , p_source_4 => p_source_4
108089 , p_source_5 => p_source_5
108090    )
108091 );
108092 
108093 
108094    --
108095    -- call ADRs
108096    -- Bug 4922099
108097    --
108098    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108099         (NVL(l_actual_upg_option, 'N') = 'O') OR
108100         (NVL(l_enc_upg_option, 'N') = 'O')
108101       )
108102    THEN
108103    NULL;
108104    --
108105    --
108106    
108107   l_ccid := AcctDerRule_24(
108108            p_application_id           => p_application_id
108109          , p_ae_header_id             => l_ae_header_id 
108110 , p_source_40 => p_source_40
108111          , x_transaction_coa_id       => l_adr_transaction_coa_id
108112          , x_accounting_coa_id        => l_adr_accounting_coa_id
108113          , x_value_type_code          => l_adr_value_type_code
108114          , p_side                     => 'NA'
108115    );
108116 
108117    xla_ae_lines_pkg.set_ccid(
108118     p_code_combination_id          => l_ccid
108119   , p_value_type_code              => l_adr_value_type_code
108120   , p_transaction_coa_id           => l_adr_transaction_coa_id
108121   , p_accounting_coa_id            => l_adr_accounting_coa_id
108122   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
108123   , p_adr_type_code                => 'S'
108124   , p_component_type               => l_component_type
108125   , p_component_code               => l_component_code
108126   , p_component_type_code          => l_component_type_code
108127   , p_component_appl_id            => l_component_appl_id
108128   , p_amb_context_code             => l_amb_context_code
108129   , p_side                         => 'NA'
108130   );
108131 
108132 
108133    --
108134    --
108135    END IF;
108136    --
108137    -- Bug 4922099
108138    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108139           (NVL(l_enc_upg_option, 'N') = 'O')
108140         ) AND
108141         (l_bflow_method_code = 'PRIOR_ENTRY')
108142       )
108143    THEN
108144       IF
108145       --
108146       1 = 2
108147       --
108148       THEN
108149       xla_accounting_err_pkg.build_message
108150                                     (p_appli_s_name            => 'XLA'
108151                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108152                                     ,p_token_1                 => 'LINE_NUMBER'
108153                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
108154                                     ,p_token_2                 => 'LINE_TYPE_NAME'
108155                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
108156                                                                              l_component_type
108157                                                                             ,l_component_code
108158                                                                             ,l_component_type_code
108159                                                                             ,l_component_appl_id
108160                                                                             ,l_amb_context_code
108161                                                                             ,l_entity_code
108162                                                                             ,l_event_class_code
108163                                                                            )
108164                                     ,p_token_3                 => 'OWNER'
108165                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
108166                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
108167                                                                           ,p_lookup_code    => l_component_type_code
108168                                                                          )
108169                                     ,p_token_4                 => 'PRODUCT_NAME'
108170                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108171                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108172                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108173                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108174                                     ,p_ae_header_id            =>  NULL
108175                                        );
108176 
108177         IF (C_LEVEL_ERROR>= g_log_level) THEN
108178                  trace
108179                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108180                       ,p_level    => C_LEVEL_ERROR
108181                       ,p_module   => l_log_module);
108182         END IF;
108183       END IF;
108184    END IF;
108185    --
108186    --
108187    ------------------------------------------------------------------------------------------------
108188    -- 4219869 Business Flow
108189    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108190    -- Prior Entry.  Currently, the following code is always generated.
108191    ------------------------------------------------------------------------------------------------
108192    XLA_AE_LINES_PKG.ValidateCurrentLine;
108193 
108194    ------------------------------------------------------------------------------------
108195    -- 4219869 Business Flow
108196    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108197    ------------------------------------------------------------------------------------
108198    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108199 
108200    ----------------------------------------------------------------------------------
108201    -- 4219869 Business Flow
108202    -- Update journal entry status -- Need to generate this within IF <condition>
108203    ----------------------------------------------------------------------------------
108204    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108205          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108206          ,p_balance_type_code => l_balance_type_code
108207          );
108208 
108209    -------------------------------------------------------------------------------------------
108210    -- 4262811 - Generate the Accrual Reversal lines
108211    -------------------------------------------------------------------------------------------
108212    BEGIN
108213       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108214                               (g_array_event(p_event_id).array_value_num('header_index'));
108215       IF l_acc_rev_flag IS NULL THEN
108216          l_acc_rev_flag := 'N';
108217       END IF;
108218    EXCEPTION
108219       WHEN OTHERS THEN
108220          l_acc_rev_flag := 'N';
108221    END;
108222    --
108223    IF (l_acc_rev_flag = 'Y') THEN
108224 
108225        -- 4645092  ------------------------------------------------------------------------------
108226        -- To allow MPA report to determine if it should generate report process
108227        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108228        ------------------------------------------------------------------------------------------
108229 
108230        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108231        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108232    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
108233    -- call ADRs
108234    -- Bug 4922099
108235    --
108236    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108237         (NVL(l_actual_upg_option, 'N') = 'O') OR
108238         (NVL(l_enc_upg_option, 'N') = 'O')
108239       )
108240    THEN
108241    NULL;
108242    --
108243    --
108244    
108245   l_ccid := AcctDerRule_24(
108246            p_application_id           => p_application_id
108247          , p_ae_header_id             => l_ae_header_id 
108248 , p_source_40 => p_source_40
108249          , x_transaction_coa_id       => l_adr_transaction_coa_id
108250          , x_accounting_coa_id        => l_adr_accounting_coa_id
108251          , x_value_type_code          => l_adr_value_type_code
108252          , p_side                     => 'NA'
108253    );
108254 
108255    xla_ae_lines_pkg.set_ccid(
108256     p_code_combination_id          => l_ccid
108257   , p_value_type_code              => l_adr_value_type_code
108258   , p_transaction_coa_id           => l_adr_transaction_coa_id
108259   , p_accounting_coa_id            => l_adr_accounting_coa_id
108260   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
108261   , p_adr_type_code                => 'S'
108262   , p_component_type               => l_component_type
108263   , p_component_code               => l_component_code
108264   , p_component_type_code          => l_component_type_code
108265   , p_component_appl_id            => l_component_appl_id
108266   , p_amb_context_code             => l_amb_context_code
108267   , p_side                         => 'NA'
108268   );
108269 
108270 
108271    --
108272    --
108273    END IF;
108274 
108275        --
108276        -- Update the line information that should be overwritten
108277        --
108278        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108279                                          p_header_num   => 1);
108280        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
108281 
108282        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108283 
108284        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
108285           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108286        END IF;
108287 
108288       --
108289       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108290       --
108291       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108292           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
108293       ELSE
108294           ---------------------------------------------------------------------------------------------------
108295           -- 4262811a Switch Sign
108296           ---------------------------------------------------------------------------------------------------
108297           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
108298           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108299                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108300           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108301                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108302           -- 5132302
108303           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108304                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108305 
108306       END IF;
108307 
108308       -- 4955764
108309       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108310       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108311 
108312 
108313       XLA_AE_LINES_PKG.ValidateCurrentLine;
108314       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108315 
108316       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108317                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108318                ,p_balance_type_code => l_balance_type_code);
108319 
108320    END IF;
108321 
108322    -----------------------------------------------------------------------------------------
108323    -- 4262811 Multiperiod Accounting
108324    -----------------------------------------------------------------------------------------
108325      -- No MPA option is assigned.
108326 
108327 
108328 END IF;
108329 END IF;
108330 --
108331 
108332 --
108333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108334    trace
108335       (p_msg      => 'END of AcctLineType_213'
108336       ,p_level    => C_LEVEL_PROCEDURE
108337       ,p_module   => l_log_module);
108338 END IF;
108339 --
108340 EXCEPTION
108341   WHEN xla_exceptions_pkg.application_exception THEN
108342       RAISE;
108343   WHEN OTHERS THEN
108344        xla_exceptions_pkg.raise_message
108345            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_213');
108346 END AcctLineType_213;
108347 --
108348 
108349 ---------------------------------------
108350 --
108351 -- PRIVATE FUNCTION
108352 --         AcctLineType_214
108353 --
108354 ---------------------------------------
108355 PROCEDURE AcctLineType_214 (
108356   p_application_id        IN NUMBER
108357  ,p_event_id              IN NUMBER
108358  ,p_calculate_acctd_flag  IN VARCHAR2
108359  ,p_calculate_g_l_flag    IN VARCHAR2
108360  ,p_actual_flag           IN OUT VARCHAR2
108361  ,p_balance_type_code     OUT VARCHAR2
108362  ,p_gain_or_loss_ref      OUT VARCHAR2
108363  
108364 --TRANSACTION_ID
108365  , p_source_1            IN NUMBER
108366 --Item Concatenated Segments
108367  , p_source_2            IN VARCHAR2
108368 --Transaction Quantity
108369  , p_source_3            IN NUMBER
108370 --Transaction Unit of Measure Code
108371  , p_source_4            IN VARCHAR2
108372 --Inventory Transaction Type Description
108373  , p_source_5            IN VARCHAR2
108374 --Interorg Transfer Credit Account
108375  , p_source_40            IN NUMBER
108376 --DISTRIBUTION_IDENTIFIER
108377  , p_source_84            IN NUMBER
108378 --Distribution Type
108379  , p_source_85            IN VARCHAR2
108380  , p_source_85_meaning    IN VARCHAR2
108381 --Entered Currency Code
108382  , p_source_88            IN VARCHAR2
108383 --Entered Amount
108384  , p_source_91            IN NUMBER
108385 --Currency Conversion Date
108386  , p_source_92            IN DATE
108387 --Currency Conversion Rate
108388  , p_source_93            IN NUMBER
108389 --Currency Conversion Type
108390  , p_source_94            IN VARCHAR2
108391 --Accounted Amount
108392  , p_source_95            IN NUMBER
108393 --Accounting Line Type
108394  , p_source_97            IN NUMBER
108395 )
108396 IS
108397 
108398 l_component_type              VARCHAR2(80);
108399 l_component_code              VARCHAR2(30);
108400 l_component_type_code         VARCHAR2(1);
108401 l_component_appl_id           INTEGER;
108402 l_amb_context_code            VARCHAR2(30);
108403 l_entity_code                 VARCHAR2(30);
108404 l_event_class_code            VARCHAR2(30);
108405 l_ae_header_id                NUMBER;
108406 l_event_type_code             VARCHAR2(30);
108407 l_line_definition_code        VARCHAR2(30);
108408 l_line_definition_owner_code  VARCHAR2(1);
108409 --
108410 -- adr variables
108411 l_segment                     VARCHAR2(30);
108412 l_ccid                        NUMBER;
108413 l_adr_transaction_coa_id      NUMBER;
108414 l_adr_accounting_coa_id       NUMBER;
108415 l_adr_flexfield_segment_code  VARCHAR2(30);
108416 l_adr_flex_value_set_id       NUMBER;
108417 l_adr_value_type_code         VARCHAR2(30);
108418 l_adr_value_combination_id    NUMBER;
108419 l_adr_value_segment_code      VARCHAR2(30);
108420 
108421 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
108422 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
108423 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
108424 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
108425 
108426 -- 4262811 Variables ------------------------------------------------------------------------------------------
108427 l_entered_amt_idx             NUMBER;
108428 l_accted_amt_idx              NUMBER;
108429 l_acc_rev_flag                VARCHAR2(1);
108430 l_accrual_line_num            NUMBER;
108431 l_tmp_amt                     NUMBER;
108432 l_acc_rev_natural_side_code   VARCHAR2(1);
108433 
108434 l_num_entries                 NUMBER;
108435 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
108436 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
108437 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
108438 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
108439 l_recog_line_1                NUMBER;
108440 l_recog_line_2                NUMBER;
108441 
108442 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
108443 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
108444 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
108445 
108446 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108447 
108448 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
108449 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
108450 
108451 ---------------------------------------------------------------------------------------------------------------
108452 
108453 
108454 --
108455 -- bulk performance
108456 --
108457 l_balance_type_code           VARCHAR2(1);
108458 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
108459 l_log_module                  VARCHAR2(240);
108460 
108461 --
108462 -- Upgrade strategy
108463 --
108464 l_actual_upg_option           VARCHAR2(1);
108465 l_enc_upg_option           VARCHAR2(1);
108466 
108467 --
108468 BEGIN
108469 --
108470 IF g_log_enabled THEN
108471       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_214';
108472 END IF;
108473 --
108474 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108475 
108476       trace
108477          (p_msg      => 'BEGIN of AcctLineType_214'
108478          ,p_level    => C_LEVEL_PROCEDURE
108479          ,p_module   => l_log_module);
108480 
108481 END IF;
108482 --
108483 l_component_type             := 'AMB_JLT';
108484 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
108485 l_component_type_code        := 'S';
108486 l_component_appl_id          :=  707;
108487 l_amb_context_code           := 'DEFAULT';
108488 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
108489 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
108490 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
108491 l_line_definition_owner_code := 'S';
108492 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
108493 --
108494 l_balance_type_code          := 'A';
108495 l_segment                     := NULL;
108496 l_ccid                        := NULL;
108497 l_adr_transaction_coa_id      := NULL;
108498 l_adr_accounting_coa_id       := NULL;
108499 l_adr_flexfield_segment_code  := NULL;
108500 l_adr_flex_value_set_id       := NULL;
108501 l_adr_value_type_code         := NULL;
108502 l_adr_value_combination_id    := NULL;
108503 l_adr_value_segment_code      := NULL;
108504 
108505 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
108506 l_bflow_class_code           := '';    -- 4219869 Business Flow
108507 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
108508 l_budgetary_control_flag     := 'N';
108509 
108510 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
108511 l_bflow_applied_to_amt       := NULL; -- 5132302
108512 l_entered_amt_idx            := NULL;          -- 4262811
108513 l_accted_amt_idx             := NULL;          -- 4262811
108514 l_acc_rev_flag               := NULL;          -- 4262811
108515 l_accrual_line_num           := NULL;          -- 4262811
108516 l_tmp_amt                    := NULL;          -- 4262811
108517 --
108518  
108519 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
108520     l_balance_type_code <> 'B' THEN
108521 IF NVL(p_source_97,9E125) =  11
108522  THEN 
108523 
108524    --
108525    XLA_AE_LINES_PKG.SetNewLine;
108526 
108527    p_balance_type_code          := l_balance_type_code;
108528    -- set the flag so later we will know whether the gain loss line needs to be created
108529    
108530    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
108531      p_actual_flag :='A';
108532    END IF;
108533 
108534    --
108535    -- bulk performance
108536    --
108537    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
108538                                       p_header_num   => 0); -- 4262811
108539    --
108540    -- set accounting line options
108541    --
108542    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
108543            p_natural_side_code          => 'D'
108544          , p_gain_or_loss_flag          => 'N'
108545          , p_gl_transfer_mode_code      => 'S'
108546          , p_acct_entry_type_code       => 'A'
108547          , p_switch_side_flag           => 'Y'
108548          , p_merge_duplicate_code       => 'N'
108549          );
108550    --
108551    l_acc_rev_natural_side_code := 'C';  -- 4262811
108552    -- 
108553    --
108554    -- set accounting line type info
108555    --
108556    xla_ae_lines_pkg.SetAcctLineType
108557       (p_component_type             => l_component_type
108558       ,p_event_type_code            => l_event_type_code
108559       ,p_line_definition_owner_code => l_line_definition_owner_code
108560       ,p_line_definition_code       => l_line_definition_code
108561       ,p_accounting_line_code       => l_component_code
108562       ,p_accounting_line_type_code  => l_component_type_code
108563       ,p_accounting_line_appl_id    => l_component_appl_id
108564       ,p_amb_context_code           => l_amb_context_code
108565       ,p_entity_code                => l_entity_code
108566       ,p_event_class_code           => l_event_class_code);
108567    --
108568    -- set accounting class
108569    --
108570    xla_ae_lines_pkg.SetAcctClass(
108571            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
108572          , p_ae_header_id           => l_ae_header_id
108573          );
108574 
108575    --
108576    -- set rounding class
108577    --
108578    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108579                       'INTERORG_TRANSFER_CREDIT';
108580 
108581    --
108582    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108583    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108584    --
108585    -- bulk performance
108586    --
108587    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108588 
108589    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108590       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108591 
108592    -- 4955764
108593    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108594       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108595 
108596    -- 4458381 Public Sector Enh
108597    
108598    --
108599    -- set accounting attributes for the line type
108600    --
108601    l_entered_amt_idx := 3;
108602    l_accted_amt_idx  := 8;
108603    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
108604    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108605    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
108606    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108607    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
108608    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108609    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
108610    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108611    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
108612    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108613    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
108614    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108615    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
108616    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108617    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
108618    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108619    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
108620 
108621    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108622    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108623 
108624    ---------------------------------------------------------------------------------------------------------------
108625    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108626    ---------------------------------------------------------------------------------------------------------------
108627    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108628 
108629    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108630    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108631 
108632    IF xla_accounting_cache_pkg.GetValueChar
108633          (p_source_code         => 'LEDGER_CATEGORY_CODE'
108634          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108635    AND l_bflow_method_code = 'PRIOR_ENTRY'
108636 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108637    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108638          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108639        )
108640    THEN
108641          xla_ae_lines_pkg.BflowUpgEntry
108642            (p_business_method_code    => l_bflow_method_code
108643            ,p_business_class_code     => l_bflow_class_code
108644            ,p_balance_type            => l_balance_type_code);
108645    ELSE
108646       NULL;
108647 -- No business flow processing for business flow method of NONE.
108648    END IF;
108649 
108650    --
108651    -- call analytical criteria
108652    --
108653    
108654    --
108655    -- call description
108656    --
108657    
108658 xla_ae_lines_pkg.SetLineDescription(
108659    p_ae_header_id => l_ae_header_id
108660   ,p_description  => Description_1 (
108661      p_application_id         => p_application_id
108662    , p_ae_header_id           => l_ae_header_id 
108663 , p_source_1 => p_source_1
108664 , p_source_2 => p_source_2
108665 , p_source_3 => p_source_3
108666 , p_source_4 => p_source_4
108667 , p_source_5 => p_source_5
108668    )
108669 );
108670 
108671 
108672    --
108673    -- call ADRs
108674    -- Bug 4922099
108675    --
108676    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108677         (NVL(l_actual_upg_option, 'N') = 'O') OR
108678         (NVL(l_enc_upg_option, 'N') = 'O')
108679       )
108680    THEN
108681    NULL;
108682    --
108683    --
108684    
108685   l_ccid := AcctDerRule_24(
108686            p_application_id           => p_application_id
108687          , p_ae_header_id             => l_ae_header_id 
108688 , p_source_40 => p_source_40
108689          , x_transaction_coa_id       => l_adr_transaction_coa_id
108690          , x_accounting_coa_id        => l_adr_accounting_coa_id
108691          , x_value_type_code          => l_adr_value_type_code
108692          , p_side                     => 'NA'
108693    );
108694 
108695    xla_ae_lines_pkg.set_ccid(
108696     p_code_combination_id          => l_ccid
108697   , p_value_type_code              => l_adr_value_type_code
108698   , p_transaction_coa_id           => l_adr_transaction_coa_id
108699   , p_accounting_coa_id            => l_adr_accounting_coa_id
108700   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
108701   , p_adr_type_code                => 'S'
108702   , p_component_type               => l_component_type
108703   , p_component_code               => l_component_code
108704   , p_component_type_code          => l_component_type_code
108705   , p_component_appl_id            => l_component_appl_id
108706   , p_amb_context_code             => l_amb_context_code
108707   , p_side                         => 'NA'
108708   );
108709 
108710 
108711    --
108712    --
108713    END IF;
108714    --
108715    -- Bug 4922099
108716    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108717           (NVL(l_enc_upg_option, 'N') = 'O')
108718         ) AND
108719         (l_bflow_method_code = 'PRIOR_ENTRY')
108720       )
108721    THEN
108722       IF
108723       --
108724       1 = 2
108725       --
108726       THEN
108727       xla_accounting_err_pkg.build_message
108728                                     (p_appli_s_name            => 'XLA'
108729                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108730                                     ,p_token_1                 => 'LINE_NUMBER'
108731                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
108732                                     ,p_token_2                 => 'LINE_TYPE_NAME'
108733                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
108734                                                                              l_component_type
108735                                                                             ,l_component_code
108736                                                                             ,l_component_type_code
108737                                                                             ,l_component_appl_id
108738                                                                             ,l_amb_context_code
108739                                                                             ,l_entity_code
108740                                                                             ,l_event_class_code
108741                                                                            )
108742                                     ,p_token_3                 => 'OWNER'
108743                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
108744                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
108745                                                                           ,p_lookup_code    => l_component_type_code
108746                                                                          )
108747                                     ,p_token_4                 => 'PRODUCT_NAME'
108748                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108749                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108750                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108751                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108752                                     ,p_ae_header_id            =>  NULL
108753                                        );
108754 
108755         IF (C_LEVEL_ERROR>= g_log_level) THEN
108756                  trace
108757                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108758                       ,p_level    => C_LEVEL_ERROR
108759                       ,p_module   => l_log_module);
108760         END IF;
108761       END IF;
108762    END IF;
108763    --
108764    --
108765    ------------------------------------------------------------------------------------------------
108766    -- 4219869 Business Flow
108767    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108768    -- Prior Entry.  Currently, the following code is always generated.
108769    ------------------------------------------------------------------------------------------------
108770    XLA_AE_LINES_PKG.ValidateCurrentLine;
108771 
108772    ------------------------------------------------------------------------------------
108773    -- 4219869 Business Flow
108774    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108775    ------------------------------------------------------------------------------------
108776    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108777 
108778    ----------------------------------------------------------------------------------
108779    -- 4219869 Business Flow
108780    -- Update journal entry status -- Need to generate this within IF <condition>
108781    ----------------------------------------------------------------------------------
108782    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108783          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108784          ,p_balance_type_code => l_balance_type_code
108785          );
108786 
108787    -------------------------------------------------------------------------------------------
108788    -- 4262811 - Generate the Accrual Reversal lines
108789    -------------------------------------------------------------------------------------------
108790    BEGIN
108791       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108792                               (g_array_event(p_event_id).array_value_num('header_index'));
108793       IF l_acc_rev_flag IS NULL THEN
108794          l_acc_rev_flag := 'N';
108795       END IF;
108796    EXCEPTION
108797       WHEN OTHERS THEN
108798          l_acc_rev_flag := 'N';
108799    END;
108800    --
108801    IF (l_acc_rev_flag = 'Y') THEN
108802 
108803        -- 4645092  ------------------------------------------------------------------------------
108804        -- To allow MPA report to determine if it should generate report process
108805        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108806        ------------------------------------------------------------------------------------------
108807 
108808        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108809        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108810    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
108811    -- call ADRs
108812    -- Bug 4922099
108813    --
108814    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108815         (NVL(l_actual_upg_option, 'N') = 'O') OR
108816         (NVL(l_enc_upg_option, 'N') = 'O')
108817       )
108818    THEN
108819    NULL;
108820    --
108821    --
108822    
108823   l_ccid := AcctDerRule_24(
108824            p_application_id           => p_application_id
108825          , p_ae_header_id             => l_ae_header_id 
108826 , p_source_40 => p_source_40
108827          , x_transaction_coa_id       => l_adr_transaction_coa_id
108828          , x_accounting_coa_id        => l_adr_accounting_coa_id
108829          , x_value_type_code          => l_adr_value_type_code
108830          , p_side                     => 'NA'
108831    );
108832 
108833    xla_ae_lines_pkg.set_ccid(
108834     p_code_combination_id          => l_ccid
108835   , p_value_type_code              => l_adr_value_type_code
108836   , p_transaction_coa_id           => l_adr_transaction_coa_id
108837   , p_accounting_coa_id            => l_adr_accounting_coa_id
108838   , p_adr_code                     => 'PI_INTERORG_TRANSFER'
108839   , p_adr_type_code                => 'S'
108840   , p_component_type               => l_component_type
108841   , p_component_code               => l_component_code
108842   , p_component_type_code          => l_component_type_code
108843   , p_component_appl_id            => l_component_appl_id
108844   , p_amb_context_code             => l_amb_context_code
108845   , p_side                         => 'NA'
108846   );
108847 
108848 
108849    --
108850    --
108851    END IF;
108852 
108853        --
108854        -- Update the line information that should be overwritten
108855        --
108856        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108857                                          p_header_num   => 1);
108858        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
108859 
108860        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108861 
108862        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
108863           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108864        END IF;
108865 
108866       --
108867       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108868       --
108869       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108870           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
108871       ELSE
108872           ---------------------------------------------------------------------------------------------------
108873           -- 4262811a Switch Sign
108874           ---------------------------------------------------------------------------------------------------
108875           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
108876           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108877                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108878           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108879                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108880           -- 5132302
108881           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108882                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108883 
108884       END IF;
108885 
108886       -- 4955764
108887       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108888       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108889 
108890 
108891       XLA_AE_LINES_PKG.ValidateCurrentLine;
108892       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108893 
108894       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108895                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108896                ,p_balance_type_code => l_balance_type_code);
108897 
108898    END IF;
108899 
108900    -----------------------------------------------------------------------------------------
108901    -- 4262811 Multiperiod Accounting
108902    -----------------------------------------------------------------------------------------
108903      -- No MPA option is assigned.
108904 
108905 
108906 END IF;
108907 END IF;
108908 --
108909 
108910 --
108911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108912    trace
108913       (p_msg      => 'END of AcctLineType_214'
108914       ,p_level    => C_LEVEL_PROCEDURE
108915       ,p_module   => l_log_module);
108916 END IF;
108917 --
108918 EXCEPTION
108919   WHEN xla_exceptions_pkg.application_exception THEN
108920       RAISE;
108921   WHEN OTHERS THEN
108922        xla_exceptions_pkg.raise_message
108923            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_214');
108924 END AcctLineType_214;
108925 --
108926 
108927 ---------------------------------------
108928 --
108929 -- PRIVATE FUNCTION
108930 --         AcctLineType_215
108931 --
108932 ---------------------------------------
108933 PROCEDURE AcctLineType_215 (
108934   p_application_id        IN NUMBER
108935  ,p_event_id              IN NUMBER
108936  ,p_calculate_acctd_flag  IN VARCHAR2
108937  ,p_calculate_g_l_flag    IN VARCHAR2
108938  ,p_actual_flag           IN OUT VARCHAR2
108939  ,p_balance_type_code     OUT VARCHAR2
108940  ,p_gain_or_loss_ref      OUT VARCHAR2
108941  
108942 --Cost Management Default Account
108943  , p_source_11            IN NUMBER
108944 --DISTRIBUTION_IDENTIFIER
108945  , p_source_84            IN NUMBER
108946 --Distribution Type
108947  , p_source_85            IN VARCHAR2
108948  , p_source_85_meaning    IN VARCHAR2
108949 --Entered Currency Code
108950  , p_source_88            IN VARCHAR2
108951 --Entered Amount
108952  , p_source_91            IN NUMBER
108953 --Currency Conversion Date
108954  , p_source_92            IN DATE
108955 --Currency Conversion Rate
108956  , p_source_93            IN NUMBER
108957 --Currency Conversion Type
108958  , p_source_94            IN VARCHAR2
108959 --Accounted Amount
108960  , p_source_95            IN NUMBER
108961 --Accounting Line Type
108962  , p_source_97            IN NUMBER
108963 )
108964 IS
108965 
108966 l_component_type              VARCHAR2(80);
108967 l_component_code              VARCHAR2(30);
108968 l_component_type_code         VARCHAR2(1);
108969 l_component_appl_id           INTEGER;
108970 l_amb_context_code            VARCHAR2(30);
108971 l_entity_code                 VARCHAR2(30);
108972 l_event_class_code            VARCHAR2(30);
108973 l_ae_header_id                NUMBER;
108974 l_event_type_code             VARCHAR2(30);
108975 l_line_definition_code        VARCHAR2(30);
108976 l_line_definition_owner_code  VARCHAR2(1);
108977 --
108978 -- adr variables
108979 l_segment                     VARCHAR2(30);
108980 l_ccid                        NUMBER;
108981 l_adr_transaction_coa_id      NUMBER;
108982 l_adr_accounting_coa_id       NUMBER;
108983 l_adr_flexfield_segment_code  VARCHAR2(30);
108984 l_adr_flex_value_set_id       NUMBER;
108985 l_adr_value_type_code         VARCHAR2(30);
108986 l_adr_value_combination_id    NUMBER;
108987 l_adr_value_segment_code      VARCHAR2(30);
108988 
108989 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
108990 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
108991 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
108992 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
108993 
108994 -- 4262811 Variables ------------------------------------------------------------------------------------------
108995 l_entered_amt_idx             NUMBER;
108996 l_accted_amt_idx              NUMBER;
108997 l_acc_rev_flag                VARCHAR2(1);
108998 l_accrual_line_num            NUMBER;
108999 l_tmp_amt                     NUMBER;
109000 l_acc_rev_natural_side_code   VARCHAR2(1);
109001 
109002 l_num_entries                 NUMBER;
109003 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
109004 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
109005 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
109006 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
109007 l_recog_line_1                NUMBER;
109008 l_recog_line_2                NUMBER;
109009 
109010 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
109011 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
109012 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
109013 
109014 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109015 
109016 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
109017 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
109018 
109019 ---------------------------------------------------------------------------------------------------------------
109020 
109021 
109022 --
109023 -- bulk performance
109024 --
109025 l_balance_type_code           VARCHAR2(1);
109026 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
109027 l_log_module                  VARCHAR2(240);
109028 
109029 --
109030 -- Upgrade strategy
109031 --
109032 l_actual_upg_option           VARCHAR2(1);
109033 l_enc_upg_option           VARCHAR2(1);
109034 
109035 --
109036 BEGIN
109037 --
109038 IF g_log_enabled THEN
109039       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_215';
109040 END IF;
109041 --
109042 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109043 
109044       trace
109045          (p_msg      => 'BEGIN of AcctLineType_215'
109046          ,p_level    => C_LEVEL_PROCEDURE
109047          ,p_module   => l_log_module);
109048 
109049 END IF;
109050 --
109051 l_component_type             := 'AMB_JLT';
109052 l_component_code             := 'INTERORG_TRANSFER_CREDIT';
109053 l_component_type_code        := 'S';
109054 l_component_appl_id          :=  707;
109055 l_amb_context_code           := 'DEFAULT';
109056 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
109057 l_event_class_code           := 'USER_DEFINE';
109058 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
109059 l_line_definition_owner_code := 'S';
109060 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
109061 --
109062 l_balance_type_code          := 'A';
109063 l_segment                     := NULL;
109064 l_ccid                        := NULL;
109065 l_adr_transaction_coa_id      := NULL;
109066 l_adr_accounting_coa_id       := NULL;
109067 l_adr_flexfield_segment_code  := NULL;
109068 l_adr_flex_value_set_id       := NULL;
109069 l_adr_value_type_code         := NULL;
109070 l_adr_value_combination_id    := NULL;
109071 l_adr_value_segment_code      := NULL;
109072 
109073 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
109074 l_bflow_class_code           := '';    -- 4219869 Business Flow
109075 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
109076 l_budgetary_control_flag     := 'N';
109077 
109078 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
109079 l_bflow_applied_to_amt       := NULL; -- 5132302
109080 l_entered_amt_idx            := NULL;          -- 4262811
109081 l_accted_amt_idx             := NULL;          -- 4262811
109082 l_acc_rev_flag               := NULL;          -- 4262811
109083 l_accrual_line_num           := NULL;          -- 4262811
109084 l_tmp_amt                    := NULL;          -- 4262811
109085 --
109086  
109087 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109088     l_balance_type_code <> 'B' THEN
109089 IF NVL(p_source_97,9E125) =  11
109090  THEN 
109091 
109092    --
109093    XLA_AE_LINES_PKG.SetNewLine;
109094 
109095    p_balance_type_code          := l_balance_type_code;
109096    -- set the flag so later we will know whether the gain loss line needs to be created
109097    
109098    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109099      p_actual_flag :='A';
109100    END IF;
109101 
109102    --
109103    -- bulk performance
109104    --
109105    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109106                                       p_header_num   => 0); -- 4262811
109107    --
109108    -- set accounting line options
109109    --
109110    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109111            p_natural_side_code          => 'D'
109112          , p_gain_or_loss_flag          => 'N'
109113          , p_gl_transfer_mode_code      => 'S'
109114          , p_acct_entry_type_code       => 'A'
109115          , p_switch_side_flag           => 'Y'
109116          , p_merge_duplicate_code       => 'N'
109117          );
109118    --
109119    l_acc_rev_natural_side_code := 'C';  -- 4262811
109120    -- 
109121    --
109122    -- set accounting line type info
109123    --
109124    xla_ae_lines_pkg.SetAcctLineType
109125       (p_component_type             => l_component_type
109126       ,p_event_type_code            => l_event_type_code
109127       ,p_line_definition_owner_code => l_line_definition_owner_code
109128       ,p_line_definition_code       => l_line_definition_code
109129       ,p_accounting_line_code       => l_component_code
109130       ,p_accounting_line_type_code  => l_component_type_code
109131       ,p_accounting_line_appl_id    => l_component_appl_id
109132       ,p_amb_context_code           => l_amb_context_code
109133       ,p_entity_code                => l_entity_code
109134       ,p_event_class_code           => l_event_class_code);
109135    --
109136    -- set accounting class
109137    --
109138    xla_ae_lines_pkg.SetAcctClass(
109139            p_accounting_class_code  => 'INTERORG_TRANSFER_CREDIT'
109140          , p_ae_header_id           => l_ae_header_id
109141          );
109142 
109143    --
109144    -- set rounding class
109145    --
109146    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109147                       'INTERORG_TRANSFER_CREDIT';
109148 
109149    --
109150    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109151    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109152    --
109153    -- bulk performance
109154    --
109155    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109156 
109157    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109158       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109159 
109160    -- 4955764
109161    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109162       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109163 
109164    -- 4458381 Public Sector Enh
109165    
109166    --
109167    -- set accounting attributes for the line type
109168    --
109169    l_entered_amt_idx := 3;
109170    l_accted_amt_idx  := 8;
109171    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
109172    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109173    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
109174    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109175    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
109176    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109177    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
109178    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109179    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
109180    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109181    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
109182    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109183    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
109184    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109185    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
109186    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109187    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
109188 
109189    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109190    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109191 
109192    ---------------------------------------------------------------------------------------------------------------
109193    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109194    ---------------------------------------------------------------------------------------------------------------
109195    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109196 
109197    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109198    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109199 
109200    IF xla_accounting_cache_pkg.GetValueChar
109201          (p_source_code         => 'LEDGER_CATEGORY_CODE'
109202          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109203    AND l_bflow_method_code = 'PRIOR_ENTRY'
109204 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109205    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109206          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109207        )
109208    THEN
109209          xla_ae_lines_pkg.BflowUpgEntry
109210            (p_business_method_code    => l_bflow_method_code
109211            ,p_business_class_code     => l_bflow_class_code
109212            ,p_balance_type            => l_balance_type_code);
109213    ELSE
109214       NULL;
109215 -- No business flow processing for business flow method of NONE.
109216    END IF;
109217 
109218    --
109219    -- call analytical criteria
109220    --
109221    
109222    --
109223    -- call description
109224    --
109225    -- No description or it is inherited.
109226    --
109227    -- call ADRs
109228    -- Bug 4922099
109229    --
109230    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109231         (NVL(l_actual_upg_option, 'N') = 'O') OR
109232         (NVL(l_enc_upg_option, 'N') = 'O')
109233       )
109234    THEN
109235    NULL;
109236    --
109237    --
109238    
109239   l_ccid := AcctDerRule_6(
109240            p_application_id           => p_application_id
109241          , p_ae_header_id             => l_ae_header_id 
109242 , p_source_11 => p_source_11
109243          , x_transaction_coa_id       => l_adr_transaction_coa_id
109244          , x_accounting_coa_id        => l_adr_accounting_coa_id
109245          , x_value_type_code          => l_adr_value_type_code
109246          , p_side                     => 'NA'
109247    );
109248 
109249    xla_ae_lines_pkg.set_ccid(
109250     p_code_combination_id          => l_ccid
109251   , p_value_type_code              => l_adr_value_type_code
109252   , p_transaction_coa_id           => l_adr_transaction_coa_id
109253   , p_accounting_coa_id            => l_adr_accounting_coa_id
109254   , p_adr_code                     => 'CST_DEFAULT'
109255   , p_adr_type_code                => 'S'
109256   , p_component_type               => l_component_type
109257   , p_component_code               => l_component_code
109258   , p_component_type_code          => l_component_type_code
109259   , p_component_appl_id            => l_component_appl_id
109260   , p_amb_context_code             => l_amb_context_code
109261   , p_side                         => 'NA'
109262   );
109263 
109264 
109265    --
109266    --
109267    END IF;
109268    --
109269    -- Bug 4922099
109270    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109271           (NVL(l_enc_upg_option, 'N') = 'O')
109272         ) AND
109273         (l_bflow_method_code = 'PRIOR_ENTRY')
109274       )
109275    THEN
109276       IF
109277       --
109278       1 = 2
109279       --
109280       THEN
109281       xla_accounting_err_pkg.build_message
109282                                     (p_appli_s_name            => 'XLA'
109283                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109284                                     ,p_token_1                 => 'LINE_NUMBER'
109285                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
109286                                     ,p_token_2                 => 'LINE_TYPE_NAME'
109287                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
109288                                                                              l_component_type
109289                                                                             ,l_component_code
109290                                                                             ,l_component_type_code
109291                                                                             ,l_component_appl_id
109292                                                                             ,l_amb_context_code
109293                                                                             ,l_entity_code
109294                                                                             ,l_event_class_code
109295                                                                            )
109296                                     ,p_token_3                 => 'OWNER'
109297                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
109298                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
109299                                                                           ,p_lookup_code    => l_component_type_code
109300                                                                          )
109301                                     ,p_token_4                 => 'PRODUCT_NAME'
109302                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109303                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109304                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109305                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109306                                     ,p_ae_header_id            =>  NULL
109307                                        );
109308 
109309         IF (C_LEVEL_ERROR>= g_log_level) THEN
109310                  trace
109311                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109312                       ,p_level    => C_LEVEL_ERROR
109313                       ,p_module   => l_log_module);
109314         END IF;
109315       END IF;
109316    END IF;
109317    --
109318    --
109319    ------------------------------------------------------------------------------------------------
109320    -- 4219869 Business Flow
109321    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109322    -- Prior Entry.  Currently, the following code is always generated.
109323    ------------------------------------------------------------------------------------------------
109324    XLA_AE_LINES_PKG.ValidateCurrentLine;
109325 
109326    ------------------------------------------------------------------------------------
109327    -- 4219869 Business Flow
109328    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109329    ------------------------------------------------------------------------------------
109330    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109331 
109332    ----------------------------------------------------------------------------------
109333    -- 4219869 Business Flow
109334    -- Update journal entry status -- Need to generate this within IF <condition>
109335    ----------------------------------------------------------------------------------
109336    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109337          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109338          ,p_balance_type_code => l_balance_type_code
109339          );
109340 
109341    -------------------------------------------------------------------------------------------
109342    -- 4262811 - Generate the Accrual Reversal lines
109343    -------------------------------------------------------------------------------------------
109344    BEGIN
109345       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109346                               (g_array_event(p_event_id).array_value_num('header_index'));
109347       IF l_acc_rev_flag IS NULL THEN
109348          l_acc_rev_flag := 'N';
109349       END IF;
109350    EXCEPTION
109351       WHEN OTHERS THEN
109352          l_acc_rev_flag := 'N';
109353    END;
109354    --
109355    IF (l_acc_rev_flag = 'Y') THEN
109356 
109357        -- 4645092  ------------------------------------------------------------------------------
109358        -- To allow MPA report to determine if it should generate report process
109359        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109360        ------------------------------------------------------------------------------------------
109361 
109362        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109363        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109364    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
109365    -- call ADRs
109366    -- Bug 4922099
109367    --
109368    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109369         (NVL(l_actual_upg_option, 'N') = 'O') OR
109370         (NVL(l_enc_upg_option, 'N') = 'O')
109371       )
109372    THEN
109373    NULL;
109374    --
109375    --
109376    
109377   l_ccid := AcctDerRule_6(
109378            p_application_id           => p_application_id
109379          , p_ae_header_id             => l_ae_header_id 
109380 , p_source_11 => p_source_11
109381          , x_transaction_coa_id       => l_adr_transaction_coa_id
109382          , x_accounting_coa_id        => l_adr_accounting_coa_id
109383          , x_value_type_code          => l_adr_value_type_code
109384          , p_side                     => 'NA'
109385    );
109386 
109387    xla_ae_lines_pkg.set_ccid(
109388     p_code_combination_id          => l_ccid
109389   , p_value_type_code              => l_adr_value_type_code
109390   , p_transaction_coa_id           => l_adr_transaction_coa_id
109391   , p_accounting_coa_id            => l_adr_accounting_coa_id
109392   , p_adr_code                     => 'CST_DEFAULT'
109393   , p_adr_type_code                => 'S'
109394   , p_component_type               => l_component_type
109395   , p_component_code               => l_component_code
109396   , p_component_type_code          => l_component_type_code
109397   , p_component_appl_id            => l_component_appl_id
109398   , p_amb_context_code             => l_amb_context_code
109399   , p_side                         => 'NA'
109400   );
109401 
109402 
109403    --
109404    --
109405    END IF;
109406 
109407        --
109408        -- Update the line information that should be overwritten
109409        --
109410        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109411                                          p_header_num   => 1);
109412        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
109413 
109414        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109415 
109416        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
109417           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109418        END IF;
109419 
109420       --
109421       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109422       --
109423       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109424           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
109425       ELSE
109426           ---------------------------------------------------------------------------------------------------
109427           -- 4262811a Switch Sign
109428           ---------------------------------------------------------------------------------------------------
109429           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
109430           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109431                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109432           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109433                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109434           -- 5132302
109435           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109436                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109437 
109438       END IF;
109439 
109440       -- 4955764
109441       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109442       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109443 
109444 
109445       XLA_AE_LINES_PKG.ValidateCurrentLine;
109446       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109447 
109448       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109449                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109450                ,p_balance_type_code => l_balance_type_code);
109451 
109452    END IF;
109453 
109454    -----------------------------------------------------------------------------------------
109455    -- 4262811 Multiperiod Accounting
109456    -----------------------------------------------------------------------------------------
109457      -- No MPA option is assigned.
109458 
109459 
109460 END IF;
109461 END IF;
109462 --
109463 
109464 --
109465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109466    trace
109467       (p_msg      => 'END of AcctLineType_215'
109468       ,p_level    => C_LEVEL_PROCEDURE
109469       ,p_module   => l_log_module);
109470 END IF;
109471 --
109472 EXCEPTION
109473   WHEN xla_exceptions_pkg.application_exception THEN
109474       RAISE;
109475   WHEN OTHERS THEN
109476        xla_exceptions_pkg.raise_message
109477            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_215');
109478 END AcctLineType_215;
109479 --
109480 
109481 ---------------------------------------
109482 --
109483 -- PRIVATE FUNCTION
109484 --         AcctLineType_216
109485 --
109486 ---------------------------------------
109487 PROCEDURE AcctLineType_216 (
109488   p_application_id        IN NUMBER
109489  ,p_event_id              IN NUMBER
109490  ,p_calculate_acctd_flag  IN VARCHAR2
109491  ,p_calculate_g_l_flag    IN VARCHAR2
109492  ,p_actual_flag           IN OUT VARCHAR2
109493  ,p_balance_type_code     OUT VARCHAR2
109494  ,p_gain_or_loss_ref      OUT VARCHAR2
109495  
109496 --TRANSACTION_ID
109497  , p_source_1            IN NUMBER
109498 --Item Concatenated Segments
109499  , p_source_2            IN VARCHAR2
109500 --Transaction Quantity
109501  , p_source_3            IN NUMBER
109502 --Transaction Unit of Measure Code
109503  , p_source_4            IN VARCHAR2
109504 --Inventory Transaction Type Description
109505  , p_source_5            IN VARCHAR2
109506 --Cost Management Default Account
109507  , p_source_11            IN NUMBER
109508 --Cost Element Name
109509  , p_source_15            IN NUMBER
109510 --Primary Cost Method
109511  , p_source_39            IN NUMBER
109512  , p_source_39_meaning    IN VARCHAR2
109513 --Product Line Accounting Category Material Account
109514  , p_source_41            IN NUMBER
109515 --Product Line Accounting Category Material Overhead Account
109516  , p_source_42            IN NUMBER
109517 --Product Line Accounting Category Resource Account
109518  , p_source_43            IN NUMBER
109519 --Product Line Accounting Category Outside Processing Account
109520  , p_source_44            IN NUMBER
109521 --Product Line Accounting Category Overhead Account
109522  , p_source_45            IN NUMBER
109523 --DISTRIBUTION_IDENTIFIER
109524  , p_source_84            IN NUMBER
109525 --Distribution Type
109526  , p_source_85            IN VARCHAR2
109527  , p_source_85_meaning    IN VARCHAR2
109528 --Entered Currency Code
109529  , p_source_88            IN VARCHAR2
109530 --Entered Amount
109531  , p_source_91            IN NUMBER
109532 --Currency Conversion Date
109533  , p_source_92            IN DATE
109534 --Currency Conversion Rate
109535  , p_source_93            IN NUMBER
109536 --Currency Conversion Type
109537  , p_source_94            IN VARCHAR2
109538 --Accounted Amount
109539  , p_source_95            IN NUMBER
109540 --Accounting Line Type
109541  , p_source_97            IN NUMBER
109542 )
109543 IS
109544 
109545 l_component_type              VARCHAR2(80);
109546 l_component_code              VARCHAR2(30);
109547 l_component_type_code         VARCHAR2(1);
109548 l_component_appl_id           INTEGER;
109549 l_amb_context_code            VARCHAR2(30);
109550 l_entity_code                 VARCHAR2(30);
109551 l_event_class_code            VARCHAR2(30);
109552 l_ae_header_id                NUMBER;
109553 l_event_type_code             VARCHAR2(30);
109554 l_line_definition_code        VARCHAR2(30);
109555 l_line_definition_owner_code  VARCHAR2(1);
109556 --
109557 -- adr variables
109558 l_segment                     VARCHAR2(30);
109559 l_ccid                        NUMBER;
109560 l_adr_transaction_coa_id      NUMBER;
109561 l_adr_accounting_coa_id       NUMBER;
109562 l_adr_flexfield_segment_code  VARCHAR2(30);
109563 l_adr_flex_value_set_id       NUMBER;
109564 l_adr_value_type_code         VARCHAR2(30);
109565 l_adr_value_combination_id    NUMBER;
109566 l_adr_value_segment_code      VARCHAR2(30);
109567 
109568 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
109569 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
109570 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
109571 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
109572 
109573 -- 4262811 Variables ------------------------------------------------------------------------------------------
109574 l_entered_amt_idx             NUMBER;
109575 l_accted_amt_idx              NUMBER;
109576 l_acc_rev_flag                VARCHAR2(1);
109577 l_accrual_line_num            NUMBER;
109578 l_tmp_amt                     NUMBER;
109579 l_acc_rev_natural_side_code   VARCHAR2(1);
109580 
109581 l_num_entries                 NUMBER;
109582 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
109583 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
109584 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
109585 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
109586 l_recog_line_1                NUMBER;
109587 l_recog_line_2                NUMBER;
109588 
109589 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
109590 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
109591 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
109592 
109593 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109594 
109595 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
109596 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
109597 
109598 ---------------------------------------------------------------------------------------------------------------
109599 
109600 
109601 --
109602 -- bulk performance
109603 --
109604 l_balance_type_code           VARCHAR2(1);
109605 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
109606 l_log_module                  VARCHAR2(240);
109607 
109608 --
109609 -- Upgrade strategy
109610 --
109611 l_actual_upg_option           VARCHAR2(1);
109612 l_enc_upg_option           VARCHAR2(1);
109613 
109614 --
109615 BEGIN
109616 --
109617 IF g_log_enabled THEN
109618       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_216';
109619 END IF;
109620 --
109621 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109622 
109623       trace
109624          (p_msg      => 'BEGIN of AcctLineType_216'
109625          ,p_level    => C_LEVEL_PROCEDURE
109626          ,p_module   => l_log_module);
109627 
109628 END IF;
109629 --
109630 l_component_type             := 'AMB_JLT';
109631 l_component_code             := 'INTRANSIT_VALUATION';
109632 l_component_type_code        := 'S';
109633 l_component_appl_id          :=  707;
109634 l_amb_context_code           := 'DEFAULT';
109635 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
109636 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
109637 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
109638 l_line_definition_owner_code := 'S';
109639 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
109640 --
109641 l_balance_type_code          := 'A';
109642 l_segment                     := NULL;
109643 l_ccid                        := NULL;
109644 l_adr_transaction_coa_id      := NULL;
109645 l_adr_accounting_coa_id       := NULL;
109646 l_adr_flexfield_segment_code  := NULL;
109647 l_adr_flex_value_set_id       := NULL;
109648 l_adr_value_type_code         := NULL;
109649 l_adr_value_combination_id    := NULL;
109650 l_adr_value_segment_code      := NULL;
109651 
109652 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
109653 l_bflow_class_code           := '';    -- 4219869 Business Flow
109654 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
109655 l_budgetary_control_flag     := 'N';
109656 
109657 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
109658 l_bflow_applied_to_amt       := NULL; -- 5132302
109659 l_entered_amt_idx            := NULL;          -- 4262811
109660 l_accted_amt_idx             := NULL;          -- 4262811
109661 l_acc_rev_flag               := NULL;          -- 4262811
109662 l_accrual_line_num           := NULL;          -- 4262811
109663 l_tmp_amt                    := NULL;          -- 4262811
109664 --
109665  
109666 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109667     l_balance_type_code <> 'B' THEN
109668 IF NVL(p_source_97,9E125) =  14
109669  THEN 
109670 
109671    --
109672    XLA_AE_LINES_PKG.SetNewLine;
109673 
109674    p_balance_type_code          := l_balance_type_code;
109675    -- set the flag so later we will know whether the gain loss line needs to be created
109676    
109677    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109678      p_actual_flag :='A';
109679    END IF;
109680 
109681    --
109682    -- bulk performance
109683    --
109684    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109685                                       p_header_num   => 0); -- 4262811
109686    --
109687    -- set accounting line options
109688    --
109689    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109690            p_natural_side_code          => 'D'
109691          , p_gain_or_loss_flag          => 'N'
109692          , p_gl_transfer_mode_code      => 'S'
109693          , p_acct_entry_type_code       => 'A'
109694          , p_switch_side_flag           => 'Y'
109695          , p_merge_duplicate_code       => 'N'
109696          );
109697    --
109698    l_acc_rev_natural_side_code := 'C';  -- 4262811
109699    -- 
109700    --
109701    -- set accounting line type info
109702    --
109703    xla_ae_lines_pkg.SetAcctLineType
109704       (p_component_type             => l_component_type
109705       ,p_event_type_code            => l_event_type_code
109706       ,p_line_definition_owner_code => l_line_definition_owner_code
109707       ,p_line_definition_code       => l_line_definition_code
109708       ,p_accounting_line_code       => l_component_code
109709       ,p_accounting_line_type_code  => l_component_type_code
109710       ,p_accounting_line_appl_id    => l_component_appl_id
109711       ,p_amb_context_code           => l_amb_context_code
109712       ,p_entity_code                => l_entity_code
109713       ,p_event_class_code           => l_event_class_code);
109714    --
109715    -- set accounting class
109716    --
109717    xla_ae_lines_pkg.SetAcctClass(
109718            p_accounting_class_code  => 'INTRANSIT_VALUATION'
109719          , p_ae_header_id           => l_ae_header_id
109720          );
109721 
109722    --
109723    -- set rounding class
109724    --
109725    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109726                       'INTRANSIT_VALUATION';
109727 
109728    --
109729    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109730    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109731    --
109732    -- bulk performance
109733    --
109734    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109735 
109736    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109737       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109738 
109739    -- 4955764
109740    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109741       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109742 
109743    -- 4458381 Public Sector Enh
109744    
109745    --
109746    -- set accounting attributes for the line type
109747    --
109748    l_entered_amt_idx := 3;
109749    l_accted_amt_idx  := 8;
109750    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
109751    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109752    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
109753    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109754    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
109755    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109756    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
109757    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109758    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
109759    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109760    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
109761    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109762    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
109763    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109764    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
109765    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109766    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
109767 
109768    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109769    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109770 
109771    ---------------------------------------------------------------------------------------------------------------
109772    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109773    ---------------------------------------------------------------------------------------------------------------
109774    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109775 
109776    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109777    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109778 
109779    IF xla_accounting_cache_pkg.GetValueChar
109780          (p_source_code         => 'LEDGER_CATEGORY_CODE'
109781          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109782    AND l_bflow_method_code = 'PRIOR_ENTRY'
109783 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109784    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109785          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109786        )
109787    THEN
109788          xla_ae_lines_pkg.BflowUpgEntry
109789            (p_business_method_code    => l_bflow_method_code
109790            ,p_business_class_code     => l_bflow_class_code
109791            ,p_balance_type            => l_balance_type_code);
109792    ELSE
109793       NULL;
109794 -- No business flow processing for business flow method of NONE.
109795    END IF;
109796 
109797    --
109798    -- call analytical criteria
109799    --
109800    
109801    --
109802    -- call description
109803    --
109804    
109805 xla_ae_lines_pkg.SetLineDescription(
109806    p_ae_header_id => l_ae_header_id
109807   ,p_description  => Description_1 (
109808      p_application_id         => p_application_id
109809    , p_ae_header_id           => l_ae_header_id 
109810 , p_source_1 => p_source_1
109811 , p_source_2 => p_source_2
109812 , p_source_3 => p_source_3
109813 , p_source_4 => p_source_4
109814 , p_source_5 => p_source_5
109815    )
109816 );
109817 
109818 
109819    --
109820    -- call ADRs
109821    -- Bug 4922099
109822    --
109823    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109824         (NVL(l_actual_upg_option, 'N') = 'O') OR
109825         (NVL(l_enc_upg_option, 'N') = 'O')
109826       )
109827    THEN
109828    NULL;
109829    --
109830    --
109831    
109832   l_ccid := AcctDerRule_25(
109833            p_application_id           => p_application_id
109834          , p_ae_header_id             => l_ae_header_id 
109835 , p_source_11 => p_source_11
109836 , p_source_15 => p_source_15
109837 , p_source_39 => p_source_39
109838 , p_source_39_meaning => p_source_39_meaning
109839 , p_source_41 => p_source_41
109840 , p_source_42 => p_source_42
109841 , p_source_43 => p_source_43
109842 , p_source_44 => p_source_44
109843 , p_source_45 => p_source_45
109844          , x_transaction_coa_id       => l_adr_transaction_coa_id
109845          , x_accounting_coa_id        => l_adr_accounting_coa_id
109846          , x_value_type_code          => l_adr_value_type_code
109847          , p_side                     => 'NA'
109848    );
109849 
109850    xla_ae_lines_pkg.set_ccid(
109851     p_code_combination_id          => l_ccid
109852   , p_value_type_code              => l_adr_value_type_code
109853   , p_transaction_coa_id           => l_adr_transaction_coa_id
109854   , p_accounting_coa_id            => l_adr_accounting_coa_id
109855   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
109856   , p_adr_type_code                => 'S'
109857   , p_component_type               => l_component_type
109858   , p_component_code               => l_component_code
109859   , p_component_type_code          => l_component_type_code
109860   , p_component_appl_id            => l_component_appl_id
109861   , p_amb_context_code             => l_amb_context_code
109862   , p_side                         => 'NA'
109863   );
109864 
109865 
109866    --
109867    --
109868    END IF;
109869    --
109870    -- Bug 4922099
109871    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109872           (NVL(l_enc_upg_option, 'N') = 'O')
109873         ) AND
109874         (l_bflow_method_code = 'PRIOR_ENTRY')
109875       )
109876    THEN
109877       IF
109878       --
109879       1 = 2
109880       --
109881       THEN
109882       xla_accounting_err_pkg.build_message
109883                                     (p_appli_s_name            => 'XLA'
109884                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109885                                     ,p_token_1                 => 'LINE_NUMBER'
109886                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
109887                                     ,p_token_2                 => 'LINE_TYPE_NAME'
109888                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
109889                                                                              l_component_type
109890                                                                             ,l_component_code
109891                                                                             ,l_component_type_code
109892                                                                             ,l_component_appl_id
109893                                                                             ,l_amb_context_code
109894                                                                             ,l_entity_code
109895                                                                             ,l_event_class_code
109896                                                                            )
109897                                     ,p_token_3                 => 'OWNER'
109898                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
109899                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
109900                                                                           ,p_lookup_code    => l_component_type_code
109901                                                                          )
109902                                     ,p_token_4                 => 'PRODUCT_NAME'
109903                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109904                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109905                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109906                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109907                                     ,p_ae_header_id            =>  NULL
109908                                        );
109909 
109910         IF (C_LEVEL_ERROR>= g_log_level) THEN
109911                  trace
109912                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109913                       ,p_level    => C_LEVEL_ERROR
109914                       ,p_module   => l_log_module);
109915         END IF;
109916       END IF;
109917    END IF;
109918    --
109919    --
109920    ------------------------------------------------------------------------------------------------
109921    -- 4219869 Business Flow
109922    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109923    -- Prior Entry.  Currently, the following code is always generated.
109924    ------------------------------------------------------------------------------------------------
109925    XLA_AE_LINES_PKG.ValidateCurrentLine;
109926 
109927    ------------------------------------------------------------------------------------
109928    -- 4219869 Business Flow
109929    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109930    ------------------------------------------------------------------------------------
109931    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109932 
109933    ----------------------------------------------------------------------------------
109934    -- 4219869 Business Flow
109935    -- Update journal entry status -- Need to generate this within IF <condition>
109936    ----------------------------------------------------------------------------------
109937    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109938          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109939          ,p_balance_type_code => l_balance_type_code
109940          );
109941 
109942    -------------------------------------------------------------------------------------------
109943    -- 4262811 - Generate the Accrual Reversal lines
109944    -------------------------------------------------------------------------------------------
109945    BEGIN
109946       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109947                               (g_array_event(p_event_id).array_value_num('header_index'));
109948       IF l_acc_rev_flag IS NULL THEN
109949          l_acc_rev_flag := 'N';
109950       END IF;
109951    EXCEPTION
109952       WHEN OTHERS THEN
109953          l_acc_rev_flag := 'N';
109954    END;
109955    --
109956    IF (l_acc_rev_flag = 'Y') THEN
109957 
109958        -- 4645092  ------------------------------------------------------------------------------
109959        -- To allow MPA report to determine if it should generate report process
109960        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109961        ------------------------------------------------------------------------------------------
109962 
109963        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109964        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109965    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
109966    -- call ADRs
109967    -- Bug 4922099
109968    --
109969    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109970         (NVL(l_actual_upg_option, 'N') = 'O') OR
109971         (NVL(l_enc_upg_option, 'N') = 'O')
109972       )
109973    THEN
109974    NULL;
109975    --
109976    --
109977    
109978   l_ccid := AcctDerRule_25(
109979            p_application_id           => p_application_id
109980          , p_ae_header_id             => l_ae_header_id 
109981 , p_source_11 => p_source_11
109982 , p_source_15 => p_source_15
109983 , p_source_39 => p_source_39
109984 , p_source_39_meaning => p_source_39_meaning
109985 , p_source_41 => p_source_41
109986 , p_source_42 => p_source_42
109987 , p_source_43 => p_source_43
109988 , p_source_44 => p_source_44
109989 , p_source_45 => p_source_45
109990          , x_transaction_coa_id       => l_adr_transaction_coa_id
109991          , x_accounting_coa_id        => l_adr_accounting_coa_id
109992          , x_value_type_code          => l_adr_value_type_code
109993          , p_side                     => 'NA'
109994    );
109995 
109996    xla_ae_lines_pkg.set_ccid(
109997     p_code_combination_id          => l_ccid
109998   , p_value_type_code              => l_adr_value_type_code
109999   , p_transaction_coa_id           => l_adr_transaction_coa_id
110000   , p_accounting_coa_id            => l_adr_accounting_coa_id
110001   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
110002   , p_adr_type_code                => 'S'
110003   , p_component_type               => l_component_type
110004   , p_component_code               => l_component_code
110005   , p_component_type_code          => l_component_type_code
110006   , p_component_appl_id            => l_component_appl_id
110007   , p_amb_context_code             => l_amb_context_code
110008   , p_side                         => 'NA'
110009   );
110010 
110011 
110012    --
110013    --
110014    END IF;
110015 
110016        --
110017        -- Update the line information that should be overwritten
110018        --
110019        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110020                                          p_header_num   => 1);
110021        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
110022 
110023        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110024 
110025        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
110026           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110027        END IF;
110028 
110029       --
110030       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110031       --
110032       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110033           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
110034       ELSE
110035           ---------------------------------------------------------------------------------------------------
110036           -- 4262811a Switch Sign
110037           ---------------------------------------------------------------------------------------------------
110038           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
110039           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110040                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110041           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110042                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110043           -- 5132302
110044           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110045                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110046 
110047       END IF;
110048 
110049       -- 4955764
110050       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110052 
110053 
110054       XLA_AE_LINES_PKG.ValidateCurrentLine;
110055       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110056 
110057       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110058                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110059                ,p_balance_type_code => l_balance_type_code);
110060 
110061    END IF;
110062 
110063    -----------------------------------------------------------------------------------------
110064    -- 4262811 Multiperiod Accounting
110065    -----------------------------------------------------------------------------------------
110066      -- No MPA option is assigned.
110067 
110068 
110069 END IF;
110070 END IF;
110071 --
110072 
110073 --
110074 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110075    trace
110076       (p_msg      => 'END of AcctLineType_216'
110077       ,p_level    => C_LEVEL_PROCEDURE
110078       ,p_module   => l_log_module);
110079 END IF;
110080 --
110081 EXCEPTION
110082   WHEN xla_exceptions_pkg.application_exception THEN
110083       RAISE;
110084   WHEN OTHERS THEN
110085        xla_exceptions_pkg.raise_message
110086            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_216');
110087 END AcctLineType_216;
110088 --
110089 
110090 ---------------------------------------
110091 --
110092 -- PRIVATE FUNCTION
110093 --         AcctLineType_217
110094 --
110095 ---------------------------------------
110096 PROCEDURE AcctLineType_217 (
110097   p_application_id        IN NUMBER
110098  ,p_event_id              IN NUMBER
110099  ,p_calculate_acctd_flag  IN VARCHAR2
110100  ,p_calculate_g_l_flag    IN VARCHAR2
110101  ,p_actual_flag           IN OUT VARCHAR2
110102  ,p_balance_type_code     OUT VARCHAR2
110103  ,p_gain_or_loss_ref      OUT VARCHAR2
110104  
110105 --TRANSACTION_ID
110106  , p_source_1            IN NUMBER
110107 --Item Concatenated Segments
110108  , p_source_2            IN VARCHAR2
110109 --Transaction Quantity
110110  , p_source_3            IN NUMBER
110111 --Transaction Unit of Measure Code
110112  , p_source_4            IN VARCHAR2
110113 --Inventory Transaction Type Description
110114  , p_source_5            IN VARCHAR2
110115 --Cost Management Default Account
110116  , p_source_11            IN NUMBER
110117 --Cost Element Name
110118  , p_source_15            IN NUMBER
110119 --Primary Cost Method
110120  , p_source_39            IN NUMBER
110121  , p_source_39_meaning    IN VARCHAR2
110122 --Product Line Accounting Category Material Account
110123  , p_source_41            IN NUMBER
110124 --Product Line Accounting Category Material Overhead Account
110125  , p_source_42            IN NUMBER
110126 --Product Line Accounting Category Resource Account
110127  , p_source_43            IN NUMBER
110128 --Product Line Accounting Category Outside Processing Account
110129  , p_source_44            IN NUMBER
110130 --Product Line Accounting Category Overhead Account
110131  , p_source_45            IN NUMBER
110132 --Applied to Application ID
110133  , p_source_79            IN NUMBER
110134 --Applied to Distribution Link Type
110135  , p_source_80            IN VARCHAR2
110136 --Applied to Entity Code
110137  , p_source_81            IN VARCHAR2
110138 --DISTRIBUTION_IDENTIFIER
110139  , p_source_84            IN NUMBER
110140 --Distribution Type
110141  , p_source_85            IN VARCHAR2
110142  , p_source_85_meaning    IN VARCHAR2
110143 --Encumbrance Reversal Amount Entered
110144  , p_source_87            IN NUMBER
110145 --Entered Currency Code
110146  , p_source_88            IN VARCHAR2
110147 --Transaction Encumbrance Reversal Amount
110148  , p_source_89            IN NUMBER
110149 --Entered Amount
110150  , p_source_91            IN NUMBER
110151 --Currency Conversion Date
110152  , p_source_92            IN DATE
110153 --Currency Conversion Rate
110154  , p_source_93            IN NUMBER
110155 --Currency Conversion Type
110156  , p_source_94            IN VARCHAR2
110157 --Accounted Amount
110158  , p_source_95            IN NUMBER
110159 --Accounting Line Type
110160  , p_source_97            IN NUMBER
110161 --Costing Encumbrance Upgrade Option
110162  , p_source_100            IN VARCHAR2
110163 --TXN_PO_DISTRIBUTION_ID
110164  , p_source_101            IN NUMBER
110165 --TXN_PO_HEADER_ID
110166  , p_source_102            IN NUMBER
110167 --Requisition Budget Account
110168  , p_source_103            IN NUMBER
110169 --Requisition Encumbrance Type Identifier
110170  , p_source_104            IN NUMBER
110171 )
110172 IS
110173 
110174 l_component_type              VARCHAR2(80);
110175 l_component_code              VARCHAR2(30);
110176 l_component_type_code         VARCHAR2(1);
110177 l_component_appl_id           INTEGER;
110178 l_amb_context_code            VARCHAR2(30);
110179 l_entity_code                 VARCHAR2(30);
110180 l_event_class_code            VARCHAR2(30);
110181 l_ae_header_id                NUMBER;
110182 l_event_type_code             VARCHAR2(30);
110183 l_line_definition_code        VARCHAR2(30);
110184 l_line_definition_owner_code  VARCHAR2(1);
110185 --
110186 -- adr variables
110187 l_segment                     VARCHAR2(30);
110188 l_ccid                        NUMBER;
110189 l_adr_transaction_coa_id      NUMBER;
110190 l_adr_accounting_coa_id       NUMBER;
110191 l_adr_flexfield_segment_code  VARCHAR2(30);
110192 l_adr_flex_value_set_id       NUMBER;
110193 l_adr_value_type_code         VARCHAR2(30);
110194 l_adr_value_combination_id    NUMBER;
110195 l_adr_value_segment_code      VARCHAR2(30);
110196 
110197 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
110198 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
110199 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
110200 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
110201 
110202 -- 4262811 Variables ------------------------------------------------------------------------------------------
110203 l_entered_amt_idx             NUMBER;
110204 l_accted_amt_idx              NUMBER;
110205 l_acc_rev_flag                VARCHAR2(1);
110206 l_accrual_line_num            NUMBER;
110207 l_tmp_amt                     NUMBER;
110208 l_acc_rev_natural_side_code   VARCHAR2(1);
110209 
110210 l_num_entries                 NUMBER;
110211 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
110212 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
110213 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
110214 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
110215 l_recog_line_1                NUMBER;
110216 l_recog_line_2                NUMBER;
110217 
110218 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
110219 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
110220 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
110221 
110222 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110223 
110224 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
110225 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
110226 
110227 ---------------------------------------------------------------------------------------------------------------
110228 
110229 
110230 --
110231 -- bulk performance
110232 --
110233 l_balance_type_code           VARCHAR2(1);
110234 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
110235 l_log_module                  VARCHAR2(240);
110236 
110237 --
110238 -- Upgrade strategy
110239 --
110240 l_actual_upg_option           VARCHAR2(1);
110241 l_enc_upg_option           VARCHAR2(1);
110242 
110243 --
110244 BEGIN
110245 --
110246 IF g_log_enabled THEN
110247       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_217';
110248 END IF;
110249 --
110250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110251 
110252       trace
110253          (p_msg      => 'BEGIN of AcctLineType_217'
110254          ,p_level    => C_LEVEL_PROCEDURE
110255          ,p_module   => l_log_module);
110256 
110257 END IF;
110258 --
110259 l_component_type             := 'AMB_JLT';
110260 l_component_code             := 'INTRANSIT_VALUATION';
110261 l_component_type_code        := 'S';
110262 l_component_appl_id          :=  707;
110263 l_amb_context_code           := 'DEFAULT';
110264 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
110265 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
110266 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
110267 l_line_definition_owner_code := 'S';
110268 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_RCPT';
110269 --
110270 l_balance_type_code          := 'A';
110271 l_segment                     := NULL;
110272 l_ccid                        := NULL;
110273 l_adr_transaction_coa_id      := NULL;
110274 l_adr_accounting_coa_id       := NULL;
110275 l_adr_flexfield_segment_code  := NULL;
110276 l_adr_flex_value_set_id       := NULL;
110277 l_adr_value_type_code         := NULL;
110278 l_adr_value_combination_id    := NULL;
110279 l_adr_value_segment_code      := NULL;
110280 
110281 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
110282 l_bflow_class_code           := '';    -- 4219869 Business Flow
110283 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
110284 l_budgetary_control_flag     := 'N';
110285 
110286 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
110287 l_bflow_applied_to_amt       := NULL; -- 5132302
110288 l_entered_amt_idx            := NULL;          -- 4262811
110289 l_accted_amt_idx             := NULL;          -- 4262811
110290 l_acc_rev_flag               := NULL;          -- 4262811
110291 l_accrual_line_num           := NULL;          -- 4262811
110292 l_tmp_amt                    := NULL;          -- 4262811
110293 --
110294  
110295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110296     l_balance_type_code <> 'B' THEN
110297 IF NVL(p_source_97,9E125) =  14
110298  THEN 
110299 
110300    --
110301    XLA_AE_LINES_PKG.SetNewLine;
110302 
110303    p_balance_type_code          := l_balance_type_code;
110304    -- set the flag so later we will know whether the gain loss line needs to be created
110305    
110306    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110307      p_actual_flag :='A';
110308    END IF;
110309 
110310    --
110311    -- bulk performance
110312    --
110313    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110314                                       p_header_num   => 0); -- 4262811
110315    --
110316    -- set accounting line options
110317    --
110318    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110319            p_natural_side_code          => 'D'
110320          , p_gain_or_loss_flag          => 'N'
110321          , p_gl_transfer_mode_code      => 'S'
110322          , p_acct_entry_type_code       => 'A'
110323          , p_switch_side_flag           => 'Y'
110324          , p_merge_duplicate_code       => 'N'
110325          );
110326    --
110327    l_acc_rev_natural_side_code := 'C';  -- 4262811
110328    -- 
110329    --
110330    -- set accounting line type info
110331    --
110332    xla_ae_lines_pkg.SetAcctLineType
110333       (p_component_type             => l_component_type
110334       ,p_event_type_code            => l_event_type_code
110335       ,p_line_definition_owner_code => l_line_definition_owner_code
110336       ,p_line_definition_code       => l_line_definition_code
110337       ,p_accounting_line_code       => l_component_code
110338       ,p_accounting_line_type_code  => l_component_type_code
110339       ,p_accounting_line_appl_id    => l_component_appl_id
110340       ,p_amb_context_code           => l_amb_context_code
110341       ,p_entity_code                => l_entity_code
110342       ,p_event_class_code           => l_event_class_code);
110343    --
110344    -- set accounting class
110345    --
110346    xla_ae_lines_pkg.SetAcctClass(
110347            p_accounting_class_code  => 'INTRANSIT_VALUATION'
110348          , p_ae_header_id           => l_ae_header_id
110349          );
110350 
110351    --
110352    -- set rounding class
110353    --
110354    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110355                       'INTRANSIT_VALUATION';
110356 
110357    --
110358    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110359    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110360    --
110361    -- bulk performance
110362    --
110363    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110364 
110365    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110366       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110367 
110368    -- 4955764
110369    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110370       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110371 
110372    -- 4458381 Public Sector Enh
110373    
110374    --
110375    -- set accounting attributes for the line type
110376    --
110377    l_entered_amt_idx := 17;
110378    l_accted_amt_idx  := 22;
110379    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
110380    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
110381    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
110382    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
110383    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
110384    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
110385    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
110386    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
110387    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
110388    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
110389    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
110390    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
110391    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
110392    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
110393    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
110394    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
110395    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
110396    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
110397    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
110398    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
110399    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
110400    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
110401    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
110402    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
110403    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
110404    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
110405    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
110406    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
110407    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
110408    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
110409    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
110410    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
110411    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
110412    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
110413    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
110414    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
110415    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
110416    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
110417    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
110418    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
110419    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
110420    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
110421    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
110422    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
110423    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
110424    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
110425    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
110426    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
110427    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
110428 
110429    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110430    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110431 
110432    ---------------------------------------------------------------------------------------------------------------
110433    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110434    ---------------------------------------------------------------------------------------------------------------
110435    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110436 
110437    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110438    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110439 
110440    IF xla_accounting_cache_pkg.GetValueChar
110441          (p_source_code         => 'LEDGER_CATEGORY_CODE'
110442          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110443    AND l_bflow_method_code = 'PRIOR_ENTRY'
110444 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110445    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110446          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110447        )
110448    THEN
110449          xla_ae_lines_pkg.BflowUpgEntry
110450            (p_business_method_code    => l_bflow_method_code
110451            ,p_business_class_code     => l_bflow_class_code
110452            ,p_balance_type            => l_balance_type_code);
110453    ELSE
110454       NULL;
110455 -- No business flow processing for business flow method of NONE.
110456    END IF;
110457 
110458    --
110459    -- call analytical criteria
110460    --
110461    
110462    --
110463    -- call description
110464    --
110465    
110466 xla_ae_lines_pkg.SetLineDescription(
110467    p_ae_header_id => l_ae_header_id
110468   ,p_description  => Description_1 (
110469      p_application_id         => p_application_id
110470    , p_ae_header_id           => l_ae_header_id 
110471 , p_source_1 => p_source_1
110472 , p_source_2 => p_source_2
110473 , p_source_3 => p_source_3
110474 , p_source_4 => p_source_4
110475 , p_source_5 => p_source_5
110476    )
110477 );
110478 
110479 
110480    --
110481    -- call ADRs
110482    -- Bug 4922099
110483    --
110484    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110485         (NVL(l_actual_upg_option, 'N') = 'O') OR
110486         (NVL(l_enc_upg_option, 'N') = 'O')
110487       )
110488    THEN
110489    NULL;
110490    --
110491    --
110492    
110493   l_ccid := AcctDerRule_25(
110494            p_application_id           => p_application_id
110495          , p_ae_header_id             => l_ae_header_id 
110496 , p_source_11 => p_source_11
110497 , p_source_15 => p_source_15
110498 , p_source_39 => p_source_39
110499 , p_source_39_meaning => p_source_39_meaning
110500 , p_source_41 => p_source_41
110501 , p_source_42 => p_source_42
110502 , p_source_43 => p_source_43
110503 , p_source_44 => p_source_44
110504 , p_source_45 => p_source_45
110505          , x_transaction_coa_id       => l_adr_transaction_coa_id
110506          , x_accounting_coa_id        => l_adr_accounting_coa_id
110507          , x_value_type_code          => l_adr_value_type_code
110508          , p_side                     => 'NA'
110509    );
110510 
110511    xla_ae_lines_pkg.set_ccid(
110512     p_code_combination_id          => l_ccid
110513   , p_value_type_code              => l_adr_value_type_code
110514   , p_transaction_coa_id           => l_adr_transaction_coa_id
110515   , p_accounting_coa_id            => l_adr_accounting_coa_id
110516   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
110517   , p_adr_type_code                => 'S'
110518   , p_component_type               => l_component_type
110519   , p_component_code               => l_component_code
110520   , p_component_type_code          => l_component_type_code
110521   , p_component_appl_id            => l_component_appl_id
110522   , p_amb_context_code             => l_amb_context_code
110523   , p_side                         => 'NA'
110524   );
110525 
110526 
110527    --
110528    --
110529    END IF;
110530    --
110531    -- Bug 4922099
110532    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110533           (NVL(l_enc_upg_option, 'N') = 'O')
110534         ) AND
110535         (l_bflow_method_code = 'PRIOR_ENTRY')
110536       )
110537    THEN
110538       IF
110539       --
110540       1 = 2
110541       --
110542       THEN
110543       xla_accounting_err_pkg.build_message
110544                                     (p_appli_s_name            => 'XLA'
110545                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110546                                     ,p_token_1                 => 'LINE_NUMBER'
110547                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
110548                                     ,p_token_2                 => 'LINE_TYPE_NAME'
110549                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
110550                                                                              l_component_type
110551                                                                             ,l_component_code
110552                                                                             ,l_component_type_code
110553                                                                             ,l_component_appl_id
110554                                                                             ,l_amb_context_code
110555                                                                             ,l_entity_code
110556                                                                             ,l_event_class_code
110557                                                                            )
110558                                     ,p_token_3                 => 'OWNER'
110559                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
110560                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
110561                                                                           ,p_lookup_code    => l_component_type_code
110562                                                                          )
110563                                     ,p_token_4                 => 'PRODUCT_NAME'
110564                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110565                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110566                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110567                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110568                                     ,p_ae_header_id            =>  NULL
110569                                        );
110570 
110571         IF (C_LEVEL_ERROR>= g_log_level) THEN
110572                  trace
110573                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110574                       ,p_level    => C_LEVEL_ERROR
110575                       ,p_module   => l_log_module);
110576         END IF;
110577       END IF;
110578    END IF;
110579    --
110580    --
110581    ------------------------------------------------------------------------------------------------
110582    -- 4219869 Business Flow
110583    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110584    -- Prior Entry.  Currently, the following code is always generated.
110585    ------------------------------------------------------------------------------------------------
110586    XLA_AE_LINES_PKG.ValidateCurrentLine;
110587 
110588    ------------------------------------------------------------------------------------
110589    -- 4219869 Business Flow
110590    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110591    ------------------------------------------------------------------------------------
110592    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110593 
110594    ----------------------------------------------------------------------------------
110595    -- 4219869 Business Flow
110596    -- Update journal entry status -- Need to generate this within IF <condition>
110597    ----------------------------------------------------------------------------------
110598    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110599          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110600          ,p_balance_type_code => l_balance_type_code
110601          );
110602 
110603    -------------------------------------------------------------------------------------------
110604    -- 4262811 - Generate the Accrual Reversal lines
110605    -------------------------------------------------------------------------------------------
110606    BEGIN
110607       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110608                               (g_array_event(p_event_id).array_value_num('header_index'));
110609       IF l_acc_rev_flag IS NULL THEN
110610          l_acc_rev_flag := 'N';
110611       END IF;
110612    EXCEPTION
110613       WHEN OTHERS THEN
110614          l_acc_rev_flag := 'N';
110615    END;
110616    --
110617    IF (l_acc_rev_flag = 'Y') THEN
110618 
110619        -- 4645092  ------------------------------------------------------------------------------
110620        -- To allow MPA report to determine if it should generate report process
110621        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
110622        ------------------------------------------------------------------------------------------
110623 
110624        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
110625        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
110626    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
110627    -- call ADRs
110628    -- Bug 4922099
110629    --
110630    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110631         (NVL(l_actual_upg_option, 'N') = 'O') OR
110632         (NVL(l_enc_upg_option, 'N') = 'O')
110633       )
110634    THEN
110635    NULL;
110636    --
110637    --
110638    
110639   l_ccid := AcctDerRule_25(
110640            p_application_id           => p_application_id
110641          , p_ae_header_id             => l_ae_header_id 
110642 , p_source_11 => p_source_11
110643 , p_source_15 => p_source_15
110644 , p_source_39 => p_source_39
110645 , p_source_39_meaning => p_source_39_meaning
110646 , p_source_41 => p_source_41
110647 , p_source_42 => p_source_42
110648 , p_source_43 => p_source_43
110649 , p_source_44 => p_source_44
110650 , p_source_45 => p_source_45
110651          , x_transaction_coa_id       => l_adr_transaction_coa_id
110652          , x_accounting_coa_id        => l_adr_accounting_coa_id
110653          , x_value_type_code          => l_adr_value_type_code
110654          , p_side                     => 'NA'
110655    );
110656 
110657    xla_ae_lines_pkg.set_ccid(
110658     p_code_combination_id          => l_ccid
110659   , p_value_type_code              => l_adr_value_type_code
110660   , p_transaction_coa_id           => l_adr_transaction_coa_id
110661   , p_accounting_coa_id            => l_adr_accounting_coa_id
110662   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
110663   , p_adr_type_code                => 'S'
110664   , p_component_type               => l_component_type
110665   , p_component_code               => l_component_code
110666   , p_component_type_code          => l_component_type_code
110667   , p_component_appl_id            => l_component_appl_id
110668   , p_amb_context_code             => l_amb_context_code
110669   , p_side                         => 'NA'
110670   );
110671 
110672 
110673    --
110674    --
110675    END IF;
110676 
110677        --
110678        -- Update the line information that should be overwritten
110679        --
110680        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110681                                          p_header_num   => 1);
110682        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
110683 
110684        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110685 
110686        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
110687           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110688        END IF;
110689 
110690       --
110691       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110692       --
110693       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110694           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
110695       ELSE
110696           ---------------------------------------------------------------------------------------------------
110697           -- 4262811a Switch Sign
110698           ---------------------------------------------------------------------------------------------------
110699           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
110700           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110701                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110702           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110703                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110704           -- 5132302
110705           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110706                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110707 
110708       END IF;
110709 
110710       -- 4955764
110711       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110712       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110713 
110714 
110715       XLA_AE_LINES_PKG.ValidateCurrentLine;
110716       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110717 
110718       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110719                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110720                ,p_balance_type_code => l_balance_type_code);
110721 
110722    END IF;
110723 
110724    -----------------------------------------------------------------------------------------
110725    -- 4262811 Multiperiod Accounting
110726    -----------------------------------------------------------------------------------------
110727      -- No MPA option is assigned.
110728 
110729 
110730 END IF;
110731 END IF;
110732 --
110733 
110734 --
110735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110736    trace
110737       (p_msg      => 'END of AcctLineType_217'
110738       ,p_level    => C_LEVEL_PROCEDURE
110739       ,p_module   => l_log_module);
110740 END IF;
110741 --
110742 EXCEPTION
110743   WHEN xla_exceptions_pkg.application_exception THEN
110744       RAISE;
110745   WHEN OTHERS THEN
110746        xla_exceptions_pkg.raise_message
110747            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_217');
110748 END AcctLineType_217;
110749 --
110750 
110751 ---------------------------------------
110752 --
110753 -- PRIVATE FUNCTION
110754 --         AcctLineType_218
110755 --
110756 ---------------------------------------
110757 PROCEDURE AcctLineType_218 (
110758   p_application_id        IN NUMBER
110759  ,p_event_id              IN NUMBER
110760  ,p_calculate_acctd_flag  IN VARCHAR2
110761  ,p_calculate_g_l_flag    IN VARCHAR2
110762  ,p_actual_flag           IN OUT VARCHAR2
110763  ,p_balance_type_code     OUT VARCHAR2
110764  ,p_gain_or_loss_ref      OUT VARCHAR2
110765  
110766 --TRANSACTION_ID
110767  , p_source_1            IN NUMBER
110768 --Item Concatenated Segments
110769  , p_source_2            IN VARCHAR2
110770 --Transaction Quantity
110771  , p_source_3            IN NUMBER
110772 --Transaction Unit of Measure Code
110773  , p_source_4            IN VARCHAR2
110774 --Inventory Transaction Type Description
110775  , p_source_5            IN VARCHAR2
110776 --Cost Management Default Account
110777  , p_source_11            IN NUMBER
110778 --Cost Element Name
110779  , p_source_15            IN NUMBER
110780 --Primary Cost Method
110781  , p_source_39            IN NUMBER
110782  , p_source_39_meaning    IN VARCHAR2
110783 --Product Line Accounting Category Material Account
110784  , p_source_41            IN NUMBER
110785 --Product Line Accounting Category Material Overhead Account
110786  , p_source_42            IN NUMBER
110787 --Product Line Accounting Category Resource Account
110788  , p_source_43            IN NUMBER
110789 --Product Line Accounting Category Outside Processing Account
110790  , p_source_44            IN NUMBER
110791 --Product Line Accounting Category Overhead Account
110792  , p_source_45            IN NUMBER
110793 --DISTRIBUTION_IDENTIFIER
110794  , p_source_84            IN NUMBER
110795 --Distribution Type
110796  , p_source_85            IN VARCHAR2
110797  , p_source_85_meaning    IN VARCHAR2
110798 --Entered Currency Code
110799  , p_source_88            IN VARCHAR2
110800 --Entered Amount
110801  , p_source_91            IN NUMBER
110802 --Currency Conversion Date
110803  , p_source_92            IN DATE
110804 --Currency Conversion Rate
110805  , p_source_93            IN NUMBER
110806 --Currency Conversion Type
110807  , p_source_94            IN VARCHAR2
110808 --Accounted Amount
110809  , p_source_95            IN NUMBER
110810 --Accounting Line Type
110811  , p_source_97            IN NUMBER
110812 )
110813 IS
110814 
110815 l_component_type              VARCHAR2(80);
110816 l_component_code              VARCHAR2(30);
110817 l_component_type_code         VARCHAR2(1);
110818 l_component_appl_id           INTEGER;
110819 l_amb_context_code            VARCHAR2(30);
110820 l_entity_code                 VARCHAR2(30);
110821 l_event_class_code            VARCHAR2(30);
110822 l_ae_header_id                NUMBER;
110823 l_event_type_code             VARCHAR2(30);
110824 l_line_definition_code        VARCHAR2(30);
110825 l_line_definition_owner_code  VARCHAR2(1);
110826 --
110827 -- adr variables
110828 l_segment                     VARCHAR2(30);
110829 l_ccid                        NUMBER;
110830 l_adr_transaction_coa_id      NUMBER;
110831 l_adr_accounting_coa_id       NUMBER;
110832 l_adr_flexfield_segment_code  VARCHAR2(30);
110833 l_adr_flex_value_set_id       NUMBER;
110834 l_adr_value_type_code         VARCHAR2(30);
110835 l_adr_value_combination_id    NUMBER;
110836 l_adr_value_segment_code      VARCHAR2(30);
110837 
110838 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
110839 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
110840 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
110841 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
110842 
110843 -- 4262811 Variables ------------------------------------------------------------------------------------------
110844 l_entered_amt_idx             NUMBER;
110845 l_accted_amt_idx              NUMBER;
110846 l_acc_rev_flag                VARCHAR2(1);
110847 l_accrual_line_num            NUMBER;
110848 l_tmp_amt                     NUMBER;
110849 l_acc_rev_natural_side_code   VARCHAR2(1);
110850 
110851 l_num_entries                 NUMBER;
110852 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
110853 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
110854 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
110855 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
110856 l_recog_line_1                NUMBER;
110857 l_recog_line_2                NUMBER;
110858 
110859 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
110860 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
110861 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
110862 
110863 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110864 
110865 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
110866 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
110867 
110868 ---------------------------------------------------------------------------------------------------------------
110869 
110870 
110871 --
110872 -- bulk performance
110873 --
110874 l_balance_type_code           VARCHAR2(1);
110875 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
110876 l_log_module                  VARCHAR2(240);
110877 
110878 --
110879 -- Upgrade strategy
110880 --
110881 l_actual_upg_option           VARCHAR2(1);
110882 l_enc_upg_option           VARCHAR2(1);
110883 
110884 --
110885 BEGIN
110886 --
110887 IF g_log_enabled THEN
110888       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_218';
110889 END IF;
110890 --
110891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110892 
110893       trace
110894          (p_msg      => 'BEGIN of AcctLineType_218'
110895          ,p_level    => C_LEVEL_PROCEDURE
110896          ,p_module   => l_log_module);
110897 
110898 END IF;
110899 --
110900 l_component_type             := 'AMB_JLT';
110901 l_component_code             := 'INTRANSIT_VALUATION';
110902 l_component_type_code        := 'S';
110903 l_component_appl_id          :=  707;
110904 l_amb_context_code           := 'DEFAULT';
110905 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
110906 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
110907 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
110908 l_line_definition_owner_code := 'S';
110909 l_line_definition_code       := 'PI_RCPT_SENDER_RCPT_TP';
110910 --
110911 l_balance_type_code          := 'A';
110912 l_segment                     := NULL;
110913 l_ccid                        := NULL;
110914 l_adr_transaction_coa_id      := NULL;
110915 l_adr_accounting_coa_id       := NULL;
110916 l_adr_flexfield_segment_code  := NULL;
110917 l_adr_flex_value_set_id       := NULL;
110918 l_adr_value_type_code         := NULL;
110919 l_adr_value_combination_id    := NULL;
110920 l_adr_value_segment_code      := NULL;
110921 
110922 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
110923 l_bflow_class_code           := '';    -- 4219869 Business Flow
110924 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
110925 l_budgetary_control_flag     := 'N';
110926 
110927 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
110928 l_bflow_applied_to_amt       := NULL; -- 5132302
110929 l_entered_amt_idx            := NULL;          -- 4262811
110930 l_accted_amt_idx             := NULL;          -- 4262811
110931 l_acc_rev_flag               := NULL;          -- 4262811
110932 l_accrual_line_num           := NULL;          -- 4262811
110933 l_tmp_amt                    := NULL;          -- 4262811
110934 --
110935  
110936 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110937     l_balance_type_code <> 'B' THEN
110938 IF NVL(p_source_97,9E125) =  14
110939  THEN 
110940 
110941    --
110942    XLA_AE_LINES_PKG.SetNewLine;
110943 
110944    p_balance_type_code          := l_balance_type_code;
110945    -- set the flag so later we will know whether the gain loss line needs to be created
110946    
110947    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110948      p_actual_flag :='A';
110949    END IF;
110950 
110951    --
110952    -- bulk performance
110953    --
110954    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110955                                       p_header_num   => 0); -- 4262811
110956    --
110957    -- set accounting line options
110958    --
110959    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110960            p_natural_side_code          => 'D'
110961          , p_gain_or_loss_flag          => 'N'
110962          , p_gl_transfer_mode_code      => 'S'
110963          , p_acct_entry_type_code       => 'A'
110964          , p_switch_side_flag           => 'Y'
110965          , p_merge_duplicate_code       => 'N'
110966          );
110967    --
110968    l_acc_rev_natural_side_code := 'C';  -- 4262811
110969    -- 
110970    --
110971    -- set accounting line type info
110972    --
110973    xla_ae_lines_pkg.SetAcctLineType
110974       (p_component_type             => l_component_type
110975       ,p_event_type_code            => l_event_type_code
110976       ,p_line_definition_owner_code => l_line_definition_owner_code
110977       ,p_line_definition_code       => l_line_definition_code
110978       ,p_accounting_line_code       => l_component_code
110979       ,p_accounting_line_type_code  => l_component_type_code
110980       ,p_accounting_line_appl_id    => l_component_appl_id
110981       ,p_amb_context_code           => l_amb_context_code
110982       ,p_entity_code                => l_entity_code
110983       ,p_event_class_code           => l_event_class_code);
110984    --
110985    -- set accounting class
110986    --
110987    xla_ae_lines_pkg.SetAcctClass(
110988            p_accounting_class_code  => 'INTRANSIT_VALUATION'
110989          , p_ae_header_id           => l_ae_header_id
110990          );
110991 
110992    --
110993    -- set rounding class
110994    --
110995    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110996                       'INTRANSIT_VALUATION';
110997 
110998    --
110999    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111000    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111001    --
111002    -- bulk performance
111003    --
111004    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111005 
111006    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111007       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111008 
111009    -- 4955764
111010    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111011       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111012 
111013    -- 4458381 Public Sector Enh
111014    
111015    --
111016    -- set accounting attributes for the line type
111017    --
111018    l_entered_amt_idx := 3;
111019    l_accted_amt_idx  := 8;
111020    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111021    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111022    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
111023    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111024    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
111025    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111026    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
111027    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111028    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
111029    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111030    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
111031    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111032    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
111033    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111034    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
111035    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111036    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
111037 
111038    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111039    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111040 
111041    ---------------------------------------------------------------------------------------------------------------
111042    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111043    ---------------------------------------------------------------------------------------------------------------
111044    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111045 
111046    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111047    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111048 
111049    IF xla_accounting_cache_pkg.GetValueChar
111050          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111051          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111052    AND l_bflow_method_code = 'PRIOR_ENTRY'
111053 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111054    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111055          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111056        )
111057    THEN
111058          xla_ae_lines_pkg.BflowUpgEntry
111059            (p_business_method_code    => l_bflow_method_code
111060            ,p_business_class_code     => l_bflow_class_code
111061            ,p_balance_type            => l_balance_type_code);
111062    ELSE
111063       NULL;
111064 -- No business flow processing for business flow method of NONE.
111065    END IF;
111066 
111067    --
111068    -- call analytical criteria
111069    --
111070    
111071    --
111072    -- call description
111073    --
111074    
111075 xla_ae_lines_pkg.SetLineDescription(
111076    p_ae_header_id => l_ae_header_id
111077   ,p_description  => Description_1 (
111078      p_application_id         => p_application_id
111079    , p_ae_header_id           => l_ae_header_id 
111080 , p_source_1 => p_source_1
111081 , p_source_2 => p_source_2
111082 , p_source_3 => p_source_3
111083 , p_source_4 => p_source_4
111084 , p_source_5 => p_source_5
111085    )
111086 );
111087 
111088 
111089    --
111090    -- call ADRs
111091    -- Bug 4922099
111092    --
111093    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111094         (NVL(l_actual_upg_option, 'N') = 'O') OR
111095         (NVL(l_enc_upg_option, 'N') = 'O')
111096       )
111097    THEN
111098    NULL;
111099    --
111100    --
111101    
111102   l_ccid := AcctDerRule_25(
111103            p_application_id           => p_application_id
111104          , p_ae_header_id             => l_ae_header_id 
111105 , p_source_11 => p_source_11
111106 , p_source_15 => p_source_15
111107 , p_source_39 => p_source_39
111108 , p_source_39_meaning => p_source_39_meaning
111109 , p_source_41 => p_source_41
111110 , p_source_42 => p_source_42
111111 , p_source_43 => p_source_43
111112 , p_source_44 => p_source_44
111113 , p_source_45 => p_source_45
111114          , x_transaction_coa_id       => l_adr_transaction_coa_id
111115          , x_accounting_coa_id        => l_adr_accounting_coa_id
111116          , x_value_type_code          => l_adr_value_type_code
111117          , p_side                     => 'NA'
111118    );
111119 
111120    xla_ae_lines_pkg.set_ccid(
111121     p_code_combination_id          => l_ccid
111122   , p_value_type_code              => l_adr_value_type_code
111123   , p_transaction_coa_id           => l_adr_transaction_coa_id
111124   , p_accounting_coa_id            => l_adr_accounting_coa_id
111125   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
111126   , p_adr_type_code                => 'S'
111127   , p_component_type               => l_component_type
111128   , p_component_code               => l_component_code
111129   , p_component_type_code          => l_component_type_code
111130   , p_component_appl_id            => l_component_appl_id
111131   , p_amb_context_code             => l_amb_context_code
111132   , p_side                         => 'NA'
111133   );
111134 
111135 
111136    --
111137    --
111138    END IF;
111139    --
111140    -- Bug 4922099
111141    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111142           (NVL(l_enc_upg_option, 'N') = 'O')
111143         ) AND
111144         (l_bflow_method_code = 'PRIOR_ENTRY')
111145       )
111146    THEN
111147       IF
111148       --
111149       1 = 2
111150       --
111151       THEN
111152       xla_accounting_err_pkg.build_message
111153                                     (p_appli_s_name            => 'XLA'
111154                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111155                                     ,p_token_1                 => 'LINE_NUMBER'
111156                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
111157                                     ,p_token_2                 => 'LINE_TYPE_NAME'
111158                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
111159                                                                              l_component_type
111160                                                                             ,l_component_code
111161                                                                             ,l_component_type_code
111162                                                                             ,l_component_appl_id
111163                                                                             ,l_amb_context_code
111164                                                                             ,l_entity_code
111165                                                                             ,l_event_class_code
111166                                                                            )
111167                                     ,p_token_3                 => 'OWNER'
111168                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
111169                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
111170                                                                           ,p_lookup_code    => l_component_type_code
111171                                                                          )
111172                                     ,p_token_4                 => 'PRODUCT_NAME'
111173                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111174                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111175                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111176                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111177                                     ,p_ae_header_id            =>  NULL
111178                                        );
111179 
111180         IF (C_LEVEL_ERROR>= g_log_level) THEN
111181                  trace
111182                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111183                       ,p_level    => C_LEVEL_ERROR
111184                       ,p_module   => l_log_module);
111185         END IF;
111186       END IF;
111187    END IF;
111188    --
111189    --
111190    ------------------------------------------------------------------------------------------------
111191    -- 4219869 Business Flow
111192    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111193    -- Prior Entry.  Currently, the following code is always generated.
111194    ------------------------------------------------------------------------------------------------
111195    XLA_AE_LINES_PKG.ValidateCurrentLine;
111196 
111197    ------------------------------------------------------------------------------------
111198    -- 4219869 Business Flow
111199    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111200    ------------------------------------------------------------------------------------
111201    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111202 
111203    ----------------------------------------------------------------------------------
111204    -- 4219869 Business Flow
111205    -- Update journal entry status -- Need to generate this within IF <condition>
111206    ----------------------------------------------------------------------------------
111207    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111208          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111209          ,p_balance_type_code => l_balance_type_code
111210          );
111211 
111212    -------------------------------------------------------------------------------------------
111213    -- 4262811 - Generate the Accrual Reversal lines
111214    -------------------------------------------------------------------------------------------
111215    BEGIN
111216       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111217                               (g_array_event(p_event_id).array_value_num('header_index'));
111218       IF l_acc_rev_flag IS NULL THEN
111219          l_acc_rev_flag := 'N';
111220       END IF;
111221    EXCEPTION
111222       WHEN OTHERS THEN
111223          l_acc_rev_flag := 'N';
111224    END;
111225    --
111226    IF (l_acc_rev_flag = 'Y') THEN
111227 
111228        -- 4645092  ------------------------------------------------------------------------------
111229        -- To allow MPA report to determine if it should generate report process
111230        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111231        ------------------------------------------------------------------------------------------
111232 
111233        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111234        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111235    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
111236    -- call ADRs
111237    -- Bug 4922099
111238    --
111239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111240         (NVL(l_actual_upg_option, 'N') = 'O') OR
111241         (NVL(l_enc_upg_option, 'N') = 'O')
111242       )
111243    THEN
111244    NULL;
111245    --
111246    --
111247    
111248   l_ccid := AcctDerRule_25(
111249            p_application_id           => p_application_id
111250          , p_ae_header_id             => l_ae_header_id 
111251 , p_source_11 => p_source_11
111252 , p_source_15 => p_source_15
111253 , p_source_39 => p_source_39
111254 , p_source_39_meaning => p_source_39_meaning
111255 , p_source_41 => p_source_41
111256 , p_source_42 => p_source_42
111257 , p_source_43 => p_source_43
111258 , p_source_44 => p_source_44
111259 , p_source_45 => p_source_45
111260          , x_transaction_coa_id       => l_adr_transaction_coa_id
111261          , x_accounting_coa_id        => l_adr_accounting_coa_id
111262          , x_value_type_code          => l_adr_value_type_code
111263          , p_side                     => 'NA'
111264    );
111265 
111266    xla_ae_lines_pkg.set_ccid(
111267     p_code_combination_id          => l_ccid
111268   , p_value_type_code              => l_adr_value_type_code
111269   , p_transaction_coa_id           => l_adr_transaction_coa_id
111270   , p_accounting_coa_id            => l_adr_accounting_coa_id
111271   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
111272   , p_adr_type_code                => 'S'
111273   , p_component_type               => l_component_type
111274   , p_component_code               => l_component_code
111275   , p_component_type_code          => l_component_type_code
111276   , p_component_appl_id            => l_component_appl_id
111277   , p_amb_context_code             => l_amb_context_code
111278   , p_side                         => 'NA'
111279   );
111280 
111281 
111282    --
111283    --
111284    END IF;
111285 
111286        --
111287        -- Update the line information that should be overwritten
111288        --
111289        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111290                                          p_header_num   => 1);
111291        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
111292 
111293        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111294 
111295        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
111296           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111297        END IF;
111298 
111299       --
111300       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111301       --
111302       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111303           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
111304       ELSE
111305           ---------------------------------------------------------------------------------------------------
111306           -- 4262811a Switch Sign
111307           ---------------------------------------------------------------------------------------------------
111308           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
111309           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111310                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111311           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111312                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111313           -- 5132302
111314           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111315                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111316 
111317       END IF;
111318 
111319       -- 4955764
111320       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111321       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111322 
111323 
111324       XLA_AE_LINES_PKG.ValidateCurrentLine;
111325       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111326 
111327       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111328                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111329                ,p_balance_type_code => l_balance_type_code);
111330 
111331    END IF;
111332 
111333    -----------------------------------------------------------------------------------------
111334    -- 4262811 Multiperiod Accounting
111335    -----------------------------------------------------------------------------------------
111336      -- No MPA option is assigned.
111337 
111338 
111339 END IF;
111340 END IF;
111341 --
111342 
111343 --
111344 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111345    trace
111346       (p_msg      => 'END of AcctLineType_218'
111347       ,p_level    => C_LEVEL_PROCEDURE
111348       ,p_module   => l_log_module);
111349 END IF;
111350 --
111351 EXCEPTION
111352   WHEN xla_exceptions_pkg.application_exception THEN
111353       RAISE;
111354   WHEN OTHERS THEN
111355        xla_exceptions_pkg.raise_message
111356            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_218');
111357 END AcctLineType_218;
111358 --
111359 
111360 ---------------------------------------
111361 --
111362 -- PRIVATE FUNCTION
111363 --         AcctLineType_219
111364 --
111365 ---------------------------------------
111366 PROCEDURE AcctLineType_219 (
111367   p_application_id        IN NUMBER
111368  ,p_event_id              IN NUMBER
111369  ,p_calculate_acctd_flag  IN VARCHAR2
111370  ,p_calculate_g_l_flag    IN VARCHAR2
111371  ,p_actual_flag           IN OUT VARCHAR2
111372  ,p_balance_type_code     OUT VARCHAR2
111373  ,p_gain_or_loss_ref      OUT VARCHAR2
111374  
111375 --TRANSACTION_ID
111376  , p_source_1            IN NUMBER
111377 --Item Concatenated Segments
111378  , p_source_2            IN VARCHAR2
111379 --Transaction Quantity
111380  , p_source_3            IN NUMBER
111381 --Transaction Unit of Measure Code
111382  , p_source_4            IN VARCHAR2
111383 --Inventory Transaction Type Description
111384  , p_source_5            IN VARCHAR2
111385 --Cost Management Default Account
111386  , p_source_11            IN NUMBER
111387 --Cost Element Name
111388  , p_source_15            IN NUMBER
111389 --Primary Cost Method
111390  , p_source_39            IN NUMBER
111391  , p_source_39_meaning    IN VARCHAR2
111392 --Product Line Accounting Category Material Account
111393  , p_source_41            IN NUMBER
111394 --Product Line Accounting Category Material Overhead Account
111395  , p_source_42            IN NUMBER
111396 --Product Line Accounting Category Resource Account
111397  , p_source_43            IN NUMBER
111398 --Product Line Accounting Category Outside Processing Account
111399  , p_source_44            IN NUMBER
111400 --Product Line Accounting Category Overhead Account
111401  , p_source_45            IN NUMBER
111402 --DISTRIBUTION_IDENTIFIER
111403  , p_source_84            IN NUMBER
111404 --Distribution Type
111405  , p_source_85            IN VARCHAR2
111406  , p_source_85_meaning    IN VARCHAR2
111407 --Entered Currency Code
111408  , p_source_88            IN VARCHAR2
111409 --Entered Amount
111410  , p_source_91            IN NUMBER
111411 --Currency Conversion Date
111412  , p_source_92            IN DATE
111413 --Currency Conversion Rate
111414  , p_source_93            IN NUMBER
111415 --Currency Conversion Type
111416  , p_source_94            IN VARCHAR2
111417 --Accounted Amount
111418  , p_source_95            IN NUMBER
111419 --Accounting Line Type
111420  , p_source_97            IN NUMBER
111421 )
111422 IS
111423 
111424 l_component_type              VARCHAR2(80);
111425 l_component_code              VARCHAR2(30);
111426 l_component_type_code         VARCHAR2(1);
111427 l_component_appl_id           INTEGER;
111428 l_amb_context_code            VARCHAR2(30);
111429 l_entity_code                 VARCHAR2(30);
111430 l_event_class_code            VARCHAR2(30);
111431 l_ae_header_id                NUMBER;
111432 l_event_type_code             VARCHAR2(30);
111433 l_line_definition_code        VARCHAR2(30);
111434 l_line_definition_owner_code  VARCHAR2(1);
111435 --
111436 -- adr variables
111437 l_segment                     VARCHAR2(30);
111438 l_ccid                        NUMBER;
111439 l_adr_transaction_coa_id      NUMBER;
111440 l_adr_accounting_coa_id       NUMBER;
111441 l_adr_flexfield_segment_code  VARCHAR2(30);
111442 l_adr_flex_value_set_id       NUMBER;
111443 l_adr_value_type_code         VARCHAR2(30);
111444 l_adr_value_combination_id    NUMBER;
111445 l_adr_value_segment_code      VARCHAR2(30);
111446 
111447 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
111448 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
111449 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
111450 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
111451 
111452 -- 4262811 Variables ------------------------------------------------------------------------------------------
111453 l_entered_amt_idx             NUMBER;
111454 l_accted_amt_idx              NUMBER;
111455 l_acc_rev_flag                VARCHAR2(1);
111456 l_accrual_line_num            NUMBER;
111457 l_tmp_amt                     NUMBER;
111458 l_acc_rev_natural_side_code   VARCHAR2(1);
111459 
111460 l_num_entries                 NUMBER;
111461 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
111462 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
111463 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
111464 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
111465 l_recog_line_1                NUMBER;
111466 l_recog_line_2                NUMBER;
111467 
111468 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
111469 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
111470 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
111471 
111472 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111473 
111474 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
111475 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
111476 
111477 ---------------------------------------------------------------------------------------------------------------
111478 
111479 
111480 --
111481 -- bulk performance
111482 --
111483 l_balance_type_code           VARCHAR2(1);
111484 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
111485 l_log_module                  VARCHAR2(240);
111486 
111487 --
111488 -- Upgrade strategy
111489 --
111490 l_actual_upg_option           VARCHAR2(1);
111491 l_enc_upg_option           VARCHAR2(1);
111492 
111493 --
111494 BEGIN
111495 --
111496 IF g_log_enabled THEN
111497       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_219';
111498 END IF;
111499 --
111500 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111501 
111502       trace
111503          (p_msg      => 'BEGIN of AcctLineType_219'
111504          ,p_level    => C_LEVEL_PROCEDURE
111505          ,p_module   => l_log_module);
111506 
111507 END IF;
111508 --
111509 l_component_type             := 'AMB_JLT';
111510 l_component_code             := 'INTRANSIT_VALUATION';
111511 l_component_type_code        := 'S';
111512 l_component_appl_id          :=  707;
111513 l_amb_context_code           := 'DEFAULT';
111514 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
111515 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
111516 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
111517 l_line_definition_owner_code := 'S';
111518 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
111519 --
111520 l_balance_type_code          := 'A';
111521 l_segment                     := NULL;
111522 l_ccid                        := NULL;
111523 l_adr_transaction_coa_id      := NULL;
111524 l_adr_accounting_coa_id       := NULL;
111525 l_adr_flexfield_segment_code  := NULL;
111526 l_adr_flex_value_set_id       := NULL;
111527 l_adr_value_type_code         := NULL;
111528 l_adr_value_combination_id    := NULL;
111529 l_adr_value_segment_code      := NULL;
111530 
111531 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
111532 l_bflow_class_code           := '';    -- 4219869 Business Flow
111533 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
111534 l_budgetary_control_flag     := 'N';
111535 
111536 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
111537 l_bflow_applied_to_amt       := NULL; -- 5132302
111538 l_entered_amt_idx            := NULL;          -- 4262811
111539 l_accted_amt_idx             := NULL;          -- 4262811
111540 l_acc_rev_flag               := NULL;          -- 4262811
111541 l_accrual_line_num           := NULL;          -- 4262811
111542 l_tmp_amt                    := NULL;          -- 4262811
111543 --
111544  
111545 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111546     l_balance_type_code <> 'B' THEN
111547 IF NVL(p_source_97,9E125) =  14
111548  THEN 
111549 
111550    --
111551    XLA_AE_LINES_PKG.SetNewLine;
111552 
111553    p_balance_type_code          := l_balance_type_code;
111554    -- set the flag so later we will know whether the gain loss line needs to be created
111555    
111556    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111557      p_actual_flag :='A';
111558    END IF;
111559 
111560    --
111561    -- bulk performance
111562    --
111563    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111564                                       p_header_num   => 0); -- 4262811
111565    --
111566    -- set accounting line options
111567    --
111568    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111569            p_natural_side_code          => 'D'
111570          , p_gain_or_loss_flag          => 'N'
111571          , p_gl_transfer_mode_code      => 'S'
111572          , p_acct_entry_type_code       => 'A'
111573          , p_switch_side_flag           => 'Y'
111574          , p_merge_duplicate_code       => 'N'
111575          );
111576    --
111577    l_acc_rev_natural_side_code := 'C';  -- 4262811
111578    -- 
111579    --
111580    -- set accounting line type info
111581    --
111582    xla_ae_lines_pkg.SetAcctLineType
111583       (p_component_type             => l_component_type
111584       ,p_event_type_code            => l_event_type_code
111585       ,p_line_definition_owner_code => l_line_definition_owner_code
111586       ,p_line_definition_code       => l_line_definition_code
111587       ,p_accounting_line_code       => l_component_code
111588       ,p_accounting_line_type_code  => l_component_type_code
111589       ,p_accounting_line_appl_id    => l_component_appl_id
111590       ,p_amb_context_code           => l_amb_context_code
111591       ,p_entity_code                => l_entity_code
111592       ,p_event_class_code           => l_event_class_code);
111593    --
111594    -- set accounting class
111595    --
111596    xla_ae_lines_pkg.SetAcctClass(
111597            p_accounting_class_code  => 'INTRANSIT_VALUATION'
111598          , p_ae_header_id           => l_ae_header_id
111599          );
111600 
111601    --
111602    -- set rounding class
111603    --
111604    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111605                       'INTRANSIT_VALUATION';
111606 
111607    --
111608    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111609    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111610    --
111611    -- bulk performance
111612    --
111613    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111614 
111615    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111616       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111617 
111618    -- 4955764
111619    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111620       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111621 
111622    -- 4458381 Public Sector Enh
111623    
111624    --
111625    -- set accounting attributes for the line type
111626    --
111627    l_entered_amt_idx := 3;
111628    l_accted_amt_idx  := 8;
111629    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
111630    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111631    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
111632    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111633    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
111634    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111635    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
111636    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111637    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
111638    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111639    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
111640    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111641    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
111642    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111643    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
111644    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111645    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
111646 
111647    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111648    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111649 
111650    ---------------------------------------------------------------------------------------------------------------
111651    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111652    ---------------------------------------------------------------------------------------------------------------
111653    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111654 
111655    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111656    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111657 
111658    IF xla_accounting_cache_pkg.GetValueChar
111659          (p_source_code         => 'LEDGER_CATEGORY_CODE'
111660          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111661    AND l_bflow_method_code = 'PRIOR_ENTRY'
111662 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111663    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111664          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111665        )
111666    THEN
111667          xla_ae_lines_pkg.BflowUpgEntry
111668            (p_business_method_code    => l_bflow_method_code
111669            ,p_business_class_code     => l_bflow_class_code
111670            ,p_balance_type            => l_balance_type_code);
111671    ELSE
111672       NULL;
111673 -- No business flow processing for business flow method of NONE.
111674    END IF;
111675 
111676    --
111677    -- call analytical criteria
111678    --
111679    
111680    --
111681    -- call description
111682    --
111683    
111684 xla_ae_lines_pkg.SetLineDescription(
111685    p_ae_header_id => l_ae_header_id
111686   ,p_description  => Description_1 (
111687      p_application_id         => p_application_id
111688    , p_ae_header_id           => l_ae_header_id 
111689 , p_source_1 => p_source_1
111690 , p_source_2 => p_source_2
111691 , p_source_3 => p_source_3
111692 , p_source_4 => p_source_4
111693 , p_source_5 => p_source_5
111694    )
111695 );
111696 
111697 
111698    --
111699    -- call ADRs
111700    -- Bug 4922099
111701    --
111702    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111703         (NVL(l_actual_upg_option, 'N') = 'O') OR
111704         (NVL(l_enc_upg_option, 'N') = 'O')
111705       )
111706    THEN
111707    NULL;
111708    --
111709    --
111710    
111711   l_ccid := AcctDerRule_25(
111712            p_application_id           => p_application_id
111713          , p_ae_header_id             => l_ae_header_id 
111714 , p_source_11 => p_source_11
111715 , p_source_15 => p_source_15
111716 , p_source_39 => p_source_39
111717 , p_source_39_meaning => p_source_39_meaning
111718 , p_source_41 => p_source_41
111719 , p_source_42 => p_source_42
111720 , p_source_43 => p_source_43
111721 , p_source_44 => p_source_44
111722 , p_source_45 => p_source_45
111723          , x_transaction_coa_id       => l_adr_transaction_coa_id
111724          , x_accounting_coa_id        => l_adr_accounting_coa_id
111725          , x_value_type_code          => l_adr_value_type_code
111726          , p_side                     => 'NA'
111727    );
111728 
111729    xla_ae_lines_pkg.set_ccid(
111730     p_code_combination_id          => l_ccid
111731   , p_value_type_code              => l_adr_value_type_code
111732   , p_transaction_coa_id           => l_adr_transaction_coa_id
111733   , p_accounting_coa_id            => l_adr_accounting_coa_id
111734   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
111735   , p_adr_type_code                => 'S'
111736   , p_component_type               => l_component_type
111737   , p_component_code               => l_component_code
111738   , p_component_type_code          => l_component_type_code
111739   , p_component_appl_id            => l_component_appl_id
111740   , p_amb_context_code             => l_amb_context_code
111741   , p_side                         => 'NA'
111742   );
111743 
111744 
111745    --
111746    --
111747    END IF;
111748    --
111749    -- Bug 4922099
111750    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111751           (NVL(l_enc_upg_option, 'N') = 'O')
111752         ) AND
111753         (l_bflow_method_code = 'PRIOR_ENTRY')
111754       )
111755    THEN
111756       IF
111757       --
111758       1 = 2
111759       --
111760       THEN
111761       xla_accounting_err_pkg.build_message
111762                                     (p_appli_s_name            => 'XLA'
111763                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111764                                     ,p_token_1                 => 'LINE_NUMBER'
111765                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
111766                                     ,p_token_2                 => 'LINE_TYPE_NAME'
111767                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
111768                                                                              l_component_type
111769                                                                             ,l_component_code
111770                                                                             ,l_component_type_code
111771                                                                             ,l_component_appl_id
111772                                                                             ,l_amb_context_code
111773                                                                             ,l_entity_code
111774                                                                             ,l_event_class_code
111775                                                                            )
111776                                     ,p_token_3                 => 'OWNER'
111777                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
111778                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
111779                                                                           ,p_lookup_code    => l_component_type_code
111780                                                                          )
111781                                     ,p_token_4                 => 'PRODUCT_NAME'
111782                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111783                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111784                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111785                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111786                                     ,p_ae_header_id            =>  NULL
111787                                        );
111788 
111789         IF (C_LEVEL_ERROR>= g_log_level) THEN
111790                  trace
111791                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111792                       ,p_level    => C_LEVEL_ERROR
111793                       ,p_module   => l_log_module);
111794         END IF;
111795       END IF;
111796    END IF;
111797    --
111798    --
111799    ------------------------------------------------------------------------------------------------
111800    -- 4219869 Business Flow
111801    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111802    -- Prior Entry.  Currently, the following code is always generated.
111803    ------------------------------------------------------------------------------------------------
111804    XLA_AE_LINES_PKG.ValidateCurrentLine;
111805 
111806    ------------------------------------------------------------------------------------
111807    -- 4219869 Business Flow
111808    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111809    ------------------------------------------------------------------------------------
111810    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111811 
111812    ----------------------------------------------------------------------------------
111813    -- 4219869 Business Flow
111814    -- Update journal entry status -- Need to generate this within IF <condition>
111815    ----------------------------------------------------------------------------------
111816    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111817          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111818          ,p_balance_type_code => l_balance_type_code
111819          );
111820 
111821    -------------------------------------------------------------------------------------------
111822    -- 4262811 - Generate the Accrual Reversal lines
111823    -------------------------------------------------------------------------------------------
111824    BEGIN
111825       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111826                               (g_array_event(p_event_id).array_value_num('header_index'));
111827       IF l_acc_rev_flag IS NULL THEN
111828          l_acc_rev_flag := 'N';
111829       END IF;
111830    EXCEPTION
111831       WHEN OTHERS THEN
111832          l_acc_rev_flag := 'N';
111833    END;
111834    --
111835    IF (l_acc_rev_flag = 'Y') THEN
111836 
111837        -- 4645092  ------------------------------------------------------------------------------
111838        -- To allow MPA report to determine if it should generate report process
111839        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111840        ------------------------------------------------------------------------------------------
111841 
111842        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111843        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111844    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
111845    -- call ADRs
111846    -- Bug 4922099
111847    --
111848    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111849         (NVL(l_actual_upg_option, 'N') = 'O') OR
111850         (NVL(l_enc_upg_option, 'N') = 'O')
111851       )
111852    THEN
111853    NULL;
111854    --
111855    --
111856    
111857   l_ccid := AcctDerRule_25(
111858            p_application_id           => p_application_id
111859          , p_ae_header_id             => l_ae_header_id 
111860 , p_source_11 => p_source_11
111861 , p_source_15 => p_source_15
111862 , p_source_39 => p_source_39
111863 , p_source_39_meaning => p_source_39_meaning
111864 , p_source_41 => p_source_41
111865 , p_source_42 => p_source_42
111866 , p_source_43 => p_source_43
111867 , p_source_44 => p_source_44
111868 , p_source_45 => p_source_45
111869          , x_transaction_coa_id       => l_adr_transaction_coa_id
111870          , x_accounting_coa_id        => l_adr_accounting_coa_id
111871          , x_value_type_code          => l_adr_value_type_code
111872          , p_side                     => 'NA'
111873    );
111874 
111875    xla_ae_lines_pkg.set_ccid(
111876     p_code_combination_id          => l_ccid
111877   , p_value_type_code              => l_adr_value_type_code
111878   , p_transaction_coa_id           => l_adr_transaction_coa_id
111879   , p_accounting_coa_id            => l_adr_accounting_coa_id
111880   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
111881   , p_adr_type_code                => 'S'
111882   , p_component_type               => l_component_type
111883   , p_component_code               => l_component_code
111884   , p_component_type_code          => l_component_type_code
111885   , p_component_appl_id            => l_component_appl_id
111886   , p_amb_context_code             => l_amb_context_code
111887   , p_side                         => 'NA'
111888   );
111889 
111890 
111891    --
111892    --
111893    END IF;
111894 
111895        --
111896        -- Update the line information that should be overwritten
111897        --
111898        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111899                                          p_header_num   => 1);
111900        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
111901 
111902        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111903 
111904        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
111905           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111906        END IF;
111907 
111908       --
111909       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111910       --
111911       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111912           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
111913       ELSE
111914           ---------------------------------------------------------------------------------------------------
111915           -- 4262811a Switch Sign
111916           ---------------------------------------------------------------------------------------------------
111917           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
111918           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111919                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111920           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111921                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111922           -- 5132302
111923           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111924                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111925 
111926       END IF;
111927 
111928       -- 4955764
111929       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111930       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111931 
111932 
111933       XLA_AE_LINES_PKG.ValidateCurrentLine;
111934       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111935 
111936       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111937                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111938                ,p_balance_type_code => l_balance_type_code);
111939 
111940    END IF;
111941 
111942    -----------------------------------------------------------------------------------------
111943    -- 4262811 Multiperiod Accounting
111944    -----------------------------------------------------------------------------------------
111945      -- No MPA option is assigned.
111946 
111947 
111948 END IF;
111949 END IF;
111950 --
111951 
111952 --
111953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111954    trace
111955       (p_msg      => 'END of AcctLineType_219'
111956       ,p_level    => C_LEVEL_PROCEDURE
111957       ,p_module   => l_log_module);
111958 END IF;
111959 --
111960 EXCEPTION
111961   WHEN xla_exceptions_pkg.application_exception THEN
111962       RAISE;
111963   WHEN OTHERS THEN
111964        xla_exceptions_pkg.raise_message
111965            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_219');
111966 END AcctLineType_219;
111967 --
111968 
111969 ---------------------------------------
111970 --
111971 -- PRIVATE FUNCTION
111972 --         AcctLineType_220
111973 --
111974 ---------------------------------------
111975 PROCEDURE AcctLineType_220 (
111976   p_application_id        IN NUMBER
111977  ,p_event_id              IN NUMBER
111978  ,p_calculate_acctd_flag  IN VARCHAR2
111979  ,p_calculate_g_l_flag    IN VARCHAR2
111980  ,p_actual_flag           IN OUT VARCHAR2
111981  ,p_balance_type_code     OUT VARCHAR2
111982  ,p_gain_or_loss_ref      OUT VARCHAR2
111983  
111984 --TRANSACTION_ID
111985  , p_source_1            IN NUMBER
111986 --Item Concatenated Segments
111987  , p_source_2            IN VARCHAR2
111988 --Transaction Quantity
111989  , p_source_3            IN NUMBER
111990 --Transaction Unit of Measure Code
111991  , p_source_4            IN VARCHAR2
111992 --Inventory Transaction Type Description
111993  , p_source_5            IN VARCHAR2
111994 --Cost Management Default Account
111995  , p_source_11            IN NUMBER
111996 --Cost Element Name
111997  , p_source_15            IN NUMBER
111998 --Primary Cost Method
111999  , p_source_39            IN NUMBER
112000  , p_source_39_meaning    IN VARCHAR2
112001 --Product Line Accounting Category Material Account
112002  , p_source_41            IN NUMBER
112003 --Product Line Accounting Category Material Overhead Account
112004  , p_source_42            IN NUMBER
112005 --Product Line Accounting Category Resource Account
112006  , p_source_43            IN NUMBER
112007 --Product Line Accounting Category Outside Processing Account
112008  , p_source_44            IN NUMBER
112009 --Product Line Accounting Category Overhead Account
112010  , p_source_45            IN NUMBER
112011 --DISTRIBUTION_IDENTIFIER
112012  , p_source_84            IN NUMBER
112013 --Distribution Type
112014  , p_source_85            IN VARCHAR2
112015  , p_source_85_meaning    IN VARCHAR2
112016 --Entered Currency Code
112017  , p_source_88            IN VARCHAR2
112018 --Entered Amount
112019  , p_source_91            IN NUMBER
112020 --Currency Conversion Date
112021  , p_source_92            IN DATE
112022 --Currency Conversion Rate
112023  , p_source_93            IN NUMBER
112024 --Currency Conversion Type
112025  , p_source_94            IN VARCHAR2
112026 --Accounted Amount
112027  , p_source_95            IN NUMBER
112028 --Accounting Line Type
112029  , p_source_97            IN NUMBER
112030 )
112031 IS
112032 
112033 l_component_type              VARCHAR2(80);
112034 l_component_code              VARCHAR2(30);
112035 l_component_type_code         VARCHAR2(1);
112036 l_component_appl_id           INTEGER;
112037 l_amb_context_code            VARCHAR2(30);
112038 l_entity_code                 VARCHAR2(30);
112039 l_event_class_code            VARCHAR2(30);
112040 l_ae_header_id                NUMBER;
112041 l_event_type_code             VARCHAR2(30);
112042 l_line_definition_code        VARCHAR2(30);
112043 l_line_definition_owner_code  VARCHAR2(1);
112044 --
112045 -- adr variables
112046 l_segment                     VARCHAR2(30);
112047 l_ccid                        NUMBER;
112048 l_adr_transaction_coa_id      NUMBER;
112049 l_adr_accounting_coa_id       NUMBER;
112050 l_adr_flexfield_segment_code  VARCHAR2(30);
112051 l_adr_flex_value_set_id       NUMBER;
112052 l_adr_value_type_code         VARCHAR2(30);
112053 l_adr_value_combination_id    NUMBER;
112054 l_adr_value_segment_code      VARCHAR2(30);
112055 
112056 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112057 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112058 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112059 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112060 
112061 -- 4262811 Variables ------------------------------------------------------------------------------------------
112062 l_entered_amt_idx             NUMBER;
112063 l_accted_amt_idx              NUMBER;
112064 l_acc_rev_flag                VARCHAR2(1);
112065 l_accrual_line_num            NUMBER;
112066 l_tmp_amt                     NUMBER;
112067 l_acc_rev_natural_side_code   VARCHAR2(1);
112068 
112069 l_num_entries                 NUMBER;
112070 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112071 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112072 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112073 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112074 l_recog_line_1                NUMBER;
112075 l_recog_line_2                NUMBER;
112076 
112077 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112078 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112079 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112080 
112081 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112082 
112083 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112084 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112085 
112086 ---------------------------------------------------------------------------------------------------------------
112087 
112088 
112089 --
112090 -- bulk performance
112091 --
112092 l_balance_type_code           VARCHAR2(1);
112093 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112094 l_log_module                  VARCHAR2(240);
112095 
112096 --
112097 -- Upgrade strategy
112098 --
112099 l_actual_upg_option           VARCHAR2(1);
112100 l_enc_upg_option           VARCHAR2(1);
112101 
112102 --
112103 BEGIN
112104 --
112105 IF g_log_enabled THEN
112106       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_220';
112107 END IF;
112108 --
112109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112110 
112111       trace
112112          (p_msg      => 'BEGIN of AcctLineType_220'
112113          ,p_level    => C_LEVEL_PROCEDURE
112114          ,p_module   => l_log_module);
112115 
112116 END IF;
112117 --
112118 l_component_type             := 'AMB_JLT';
112119 l_component_code             := 'INTRANSIT_VALUATION';
112120 l_component_type_code        := 'S';
112121 l_component_appl_id          :=  707;
112122 l_amb_context_code           := 'DEFAULT';
112123 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
112124 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
112125 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
112126 l_line_definition_owner_code := 'S';
112127 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
112128 --
112129 l_balance_type_code          := 'A';
112130 l_segment                     := NULL;
112131 l_ccid                        := NULL;
112132 l_adr_transaction_coa_id      := NULL;
112133 l_adr_accounting_coa_id       := NULL;
112134 l_adr_flexfield_segment_code  := NULL;
112135 l_adr_flex_value_set_id       := NULL;
112136 l_adr_value_type_code         := NULL;
112137 l_adr_value_combination_id    := NULL;
112138 l_adr_value_segment_code      := NULL;
112139 
112140 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112141 l_bflow_class_code           := '';    -- 4219869 Business Flow
112142 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112143 l_budgetary_control_flag     := 'N';
112144 
112145 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112146 l_bflow_applied_to_amt       := NULL; -- 5132302
112147 l_entered_amt_idx            := NULL;          -- 4262811
112148 l_accted_amt_idx             := NULL;          -- 4262811
112149 l_acc_rev_flag               := NULL;          -- 4262811
112150 l_accrual_line_num           := NULL;          -- 4262811
112151 l_tmp_amt                    := NULL;          -- 4262811
112152 --
112153  
112154 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112155     l_balance_type_code <> 'B' THEN
112156 IF NVL(p_source_97,9E125) =  14
112157  THEN 
112158 
112159    --
112160    XLA_AE_LINES_PKG.SetNewLine;
112161 
112162    p_balance_type_code          := l_balance_type_code;
112163    -- set the flag so later we will know whether the gain loss line needs to be created
112164    
112165    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112166      p_actual_flag :='A';
112167    END IF;
112168 
112169    --
112170    -- bulk performance
112171    --
112172    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112173                                       p_header_num   => 0); -- 4262811
112174    --
112175    -- set accounting line options
112176    --
112177    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112178            p_natural_side_code          => 'D'
112179          , p_gain_or_loss_flag          => 'N'
112180          , p_gl_transfer_mode_code      => 'S'
112181          , p_acct_entry_type_code       => 'A'
112182          , p_switch_side_flag           => 'Y'
112183          , p_merge_duplicate_code       => 'N'
112184          );
112185    --
112186    l_acc_rev_natural_side_code := 'C';  -- 4262811
112187    -- 
112188    --
112189    -- set accounting line type info
112190    --
112191    xla_ae_lines_pkg.SetAcctLineType
112192       (p_component_type             => l_component_type
112193       ,p_event_type_code            => l_event_type_code
112194       ,p_line_definition_owner_code => l_line_definition_owner_code
112195       ,p_line_definition_code       => l_line_definition_code
112196       ,p_accounting_line_code       => l_component_code
112197       ,p_accounting_line_type_code  => l_component_type_code
112198       ,p_accounting_line_appl_id    => l_component_appl_id
112199       ,p_amb_context_code           => l_amb_context_code
112200       ,p_entity_code                => l_entity_code
112201       ,p_event_class_code           => l_event_class_code);
112202    --
112203    -- set accounting class
112204    --
112205    xla_ae_lines_pkg.SetAcctClass(
112206            p_accounting_class_code  => 'INTRANSIT_VALUATION'
112207          , p_ae_header_id           => l_ae_header_id
112208          );
112209 
112210    --
112211    -- set rounding class
112212    --
112213    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112214                       'INTRANSIT_VALUATION';
112215 
112216    --
112217    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112218    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112219    --
112220    -- bulk performance
112221    --
112222    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112223 
112224    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112225       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112226 
112227    -- 4955764
112228    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112229       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112230 
112231    -- 4458381 Public Sector Enh
112232    
112233    --
112234    -- set accounting attributes for the line type
112235    --
112236    l_entered_amt_idx := 3;
112237    l_accted_amt_idx  := 8;
112238    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
112239    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112240    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
112241    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112242    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
112243    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112244    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
112245    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112246    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
112247    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112248    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
112249    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112250    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
112251    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112252    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
112253    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112254    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
112255 
112256    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112257    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112258 
112259    ---------------------------------------------------------------------------------------------------------------
112260    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112261    ---------------------------------------------------------------------------------------------------------------
112262    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112263 
112264    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112265    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112266 
112267    IF xla_accounting_cache_pkg.GetValueChar
112268          (p_source_code         => 'LEDGER_CATEGORY_CODE'
112269          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112270    AND l_bflow_method_code = 'PRIOR_ENTRY'
112271 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112272    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112273          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112274        )
112275    THEN
112276          xla_ae_lines_pkg.BflowUpgEntry
112277            (p_business_method_code    => l_bflow_method_code
112278            ,p_business_class_code     => l_bflow_class_code
112279            ,p_balance_type            => l_balance_type_code);
112280    ELSE
112281       NULL;
112282 -- No business flow processing for business flow method of NONE.
112283    END IF;
112284 
112285    --
112286    -- call analytical criteria
112287    --
112288    
112289    --
112290    -- call description
112291    --
112292    
112293 xla_ae_lines_pkg.SetLineDescription(
112294    p_ae_header_id => l_ae_header_id
112295   ,p_description  => Description_1 (
112296      p_application_id         => p_application_id
112297    , p_ae_header_id           => l_ae_header_id 
112298 , p_source_1 => p_source_1
112299 , p_source_2 => p_source_2
112300 , p_source_3 => p_source_3
112301 , p_source_4 => p_source_4
112302 , p_source_5 => p_source_5
112303    )
112304 );
112305 
112306 
112307    --
112308    -- call ADRs
112309    -- Bug 4922099
112310    --
112311    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112312         (NVL(l_actual_upg_option, 'N') = 'O') OR
112313         (NVL(l_enc_upg_option, 'N') = 'O')
112314       )
112315    THEN
112316    NULL;
112317    --
112318    --
112319    
112320   l_ccid := AcctDerRule_25(
112321            p_application_id           => p_application_id
112322          , p_ae_header_id             => l_ae_header_id 
112323 , p_source_11 => p_source_11
112324 , p_source_15 => p_source_15
112325 , p_source_39 => p_source_39
112326 , p_source_39_meaning => p_source_39_meaning
112327 , p_source_41 => p_source_41
112328 , p_source_42 => p_source_42
112329 , p_source_43 => p_source_43
112330 , p_source_44 => p_source_44
112331 , p_source_45 => p_source_45
112332          , x_transaction_coa_id       => l_adr_transaction_coa_id
112333          , x_accounting_coa_id        => l_adr_accounting_coa_id
112334          , x_value_type_code          => l_adr_value_type_code
112335          , p_side                     => 'NA'
112336    );
112337 
112338    xla_ae_lines_pkg.set_ccid(
112339     p_code_combination_id          => l_ccid
112340   , p_value_type_code              => l_adr_value_type_code
112341   , p_transaction_coa_id           => l_adr_transaction_coa_id
112342   , p_accounting_coa_id            => l_adr_accounting_coa_id
112343   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
112344   , p_adr_type_code                => 'S'
112345   , p_component_type               => l_component_type
112346   , p_component_code               => l_component_code
112347   , p_component_type_code          => l_component_type_code
112348   , p_component_appl_id            => l_component_appl_id
112349   , p_amb_context_code             => l_amb_context_code
112350   , p_side                         => 'NA'
112351   );
112352 
112353 
112354    --
112355    --
112356    END IF;
112357    --
112358    -- Bug 4922099
112359    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112360           (NVL(l_enc_upg_option, 'N') = 'O')
112361         ) AND
112362         (l_bflow_method_code = 'PRIOR_ENTRY')
112363       )
112364    THEN
112365       IF
112366       --
112367       1 = 2
112368       --
112369       THEN
112370       xla_accounting_err_pkg.build_message
112371                                     (p_appli_s_name            => 'XLA'
112372                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112373                                     ,p_token_1                 => 'LINE_NUMBER'
112374                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
112375                                     ,p_token_2                 => 'LINE_TYPE_NAME'
112376                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
112377                                                                              l_component_type
112378                                                                             ,l_component_code
112379                                                                             ,l_component_type_code
112380                                                                             ,l_component_appl_id
112381                                                                             ,l_amb_context_code
112382                                                                             ,l_entity_code
112383                                                                             ,l_event_class_code
112384                                                                            )
112385                                     ,p_token_3                 => 'OWNER'
112386                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
112387                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
112388                                                                           ,p_lookup_code    => l_component_type_code
112389                                                                          )
112390                                     ,p_token_4                 => 'PRODUCT_NAME'
112391                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112392                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112393                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112394                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112395                                     ,p_ae_header_id            =>  NULL
112396                                        );
112397 
112398         IF (C_LEVEL_ERROR>= g_log_level) THEN
112399                  trace
112400                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112401                       ,p_level    => C_LEVEL_ERROR
112402                       ,p_module   => l_log_module);
112403         END IF;
112404       END IF;
112405    END IF;
112406    --
112407    --
112408    ------------------------------------------------------------------------------------------------
112409    -- 4219869 Business Flow
112410    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112411    -- Prior Entry.  Currently, the following code is always generated.
112412    ------------------------------------------------------------------------------------------------
112413    XLA_AE_LINES_PKG.ValidateCurrentLine;
112414 
112415    ------------------------------------------------------------------------------------
112416    -- 4219869 Business Flow
112417    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112418    ------------------------------------------------------------------------------------
112419    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112420 
112421    ----------------------------------------------------------------------------------
112422    -- 4219869 Business Flow
112423    -- Update journal entry status -- Need to generate this within IF <condition>
112424    ----------------------------------------------------------------------------------
112425    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112426          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112427          ,p_balance_type_code => l_balance_type_code
112428          );
112429 
112430    -------------------------------------------------------------------------------------------
112431    -- 4262811 - Generate the Accrual Reversal lines
112432    -------------------------------------------------------------------------------------------
112433    BEGIN
112434       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112435                               (g_array_event(p_event_id).array_value_num('header_index'));
112436       IF l_acc_rev_flag IS NULL THEN
112437          l_acc_rev_flag := 'N';
112438       END IF;
112439    EXCEPTION
112440       WHEN OTHERS THEN
112441          l_acc_rev_flag := 'N';
112442    END;
112443    --
112444    IF (l_acc_rev_flag = 'Y') THEN
112445 
112446        -- 4645092  ------------------------------------------------------------------------------
112447        -- To allow MPA report to determine if it should generate report process
112448        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112449        ------------------------------------------------------------------------------------------
112450 
112451        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112452        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112453    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
112454    -- call ADRs
112455    -- Bug 4922099
112456    --
112457    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112458         (NVL(l_actual_upg_option, 'N') = 'O') OR
112459         (NVL(l_enc_upg_option, 'N') = 'O')
112460       )
112461    THEN
112462    NULL;
112463    --
112464    --
112465    
112466   l_ccid := AcctDerRule_25(
112467            p_application_id           => p_application_id
112468          , p_ae_header_id             => l_ae_header_id 
112469 , p_source_11 => p_source_11
112470 , p_source_15 => p_source_15
112471 , p_source_39 => p_source_39
112472 , p_source_39_meaning => p_source_39_meaning
112473 , p_source_41 => p_source_41
112474 , p_source_42 => p_source_42
112475 , p_source_43 => p_source_43
112476 , p_source_44 => p_source_44
112477 , p_source_45 => p_source_45
112478          , x_transaction_coa_id       => l_adr_transaction_coa_id
112479          , x_accounting_coa_id        => l_adr_accounting_coa_id
112480          , x_value_type_code          => l_adr_value_type_code
112481          , p_side                     => 'NA'
112482    );
112483 
112484    xla_ae_lines_pkg.set_ccid(
112485     p_code_combination_id          => l_ccid
112486   , p_value_type_code              => l_adr_value_type_code
112487   , p_transaction_coa_id           => l_adr_transaction_coa_id
112488   , p_accounting_coa_id            => l_adr_accounting_coa_id
112489   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
112490   , p_adr_type_code                => 'S'
112491   , p_component_type               => l_component_type
112492   , p_component_code               => l_component_code
112493   , p_component_type_code          => l_component_type_code
112494   , p_component_appl_id            => l_component_appl_id
112495   , p_amb_context_code             => l_amb_context_code
112496   , p_side                         => 'NA'
112497   );
112498 
112499 
112500    --
112501    --
112502    END IF;
112503 
112504        --
112505        -- Update the line information that should be overwritten
112506        --
112507        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112508                                          p_header_num   => 1);
112509        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
112510 
112511        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112512 
112513        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
112514           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112515        END IF;
112516 
112517       --
112518       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112519       --
112520       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112521           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
112522       ELSE
112523           ---------------------------------------------------------------------------------------------------
112524           -- 4262811a Switch Sign
112525           ---------------------------------------------------------------------------------------------------
112526           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
112527           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112528                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112529           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112530                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112531           -- 5132302
112532           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112533                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112534 
112535       END IF;
112536 
112537       -- 4955764
112538       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112539       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112540 
112541 
112542       XLA_AE_LINES_PKG.ValidateCurrentLine;
112543       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112544 
112545       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112546                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112547                ,p_balance_type_code => l_balance_type_code);
112548 
112549    END IF;
112550 
112551    -----------------------------------------------------------------------------------------
112552    -- 4262811 Multiperiod Accounting
112553    -----------------------------------------------------------------------------------------
112554      -- No MPA option is assigned.
112555 
112556 
112557 END IF;
112558 END IF;
112559 --
112560 
112561 --
112562 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112563    trace
112564       (p_msg      => 'END of AcctLineType_220'
112565       ,p_level    => C_LEVEL_PROCEDURE
112566       ,p_module   => l_log_module);
112567 END IF;
112568 --
112569 EXCEPTION
112570   WHEN xla_exceptions_pkg.application_exception THEN
112571       RAISE;
112572   WHEN OTHERS THEN
112573        xla_exceptions_pkg.raise_message
112574            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_220');
112575 END AcctLineType_220;
112576 --
112577 
112578 ---------------------------------------
112579 --
112580 -- PRIVATE FUNCTION
112581 --         AcctLineType_221
112582 --
112583 ---------------------------------------
112584 PROCEDURE AcctLineType_221 (
112585   p_application_id        IN NUMBER
112586  ,p_event_id              IN NUMBER
112587  ,p_calculate_acctd_flag  IN VARCHAR2
112588  ,p_calculate_g_l_flag    IN VARCHAR2
112589  ,p_actual_flag           IN OUT VARCHAR2
112590  ,p_balance_type_code     OUT VARCHAR2
112591  ,p_gain_or_loss_ref      OUT VARCHAR2
112592  
112593 --TRANSACTION_ID
112594  , p_source_1            IN NUMBER
112595 --Item Concatenated Segments
112596  , p_source_2            IN VARCHAR2
112597 --Transaction Quantity
112598  , p_source_3            IN NUMBER
112599 --Transaction Unit of Measure Code
112600  , p_source_4            IN VARCHAR2
112601 --Inventory Transaction Type Description
112602  , p_source_5            IN VARCHAR2
112603 --Cost Management Default Account
112604  , p_source_11            IN NUMBER
112605 --Cost Element Name
112606  , p_source_15            IN NUMBER
112607 --Primary Cost Method
112608  , p_source_39            IN NUMBER
112609  , p_source_39_meaning    IN VARCHAR2
112610 --Product Line Accounting Category Material Account
112611  , p_source_41            IN NUMBER
112612 --Product Line Accounting Category Material Overhead Account
112613  , p_source_42            IN NUMBER
112614 --Product Line Accounting Category Resource Account
112615  , p_source_43            IN NUMBER
112616 --Product Line Accounting Category Outside Processing Account
112617  , p_source_44            IN NUMBER
112618 --Product Line Accounting Category Overhead Account
112619  , p_source_45            IN NUMBER
112620 --DISTRIBUTION_IDENTIFIER
112621  , p_source_84            IN NUMBER
112622 --Distribution Type
112623  , p_source_85            IN VARCHAR2
112624  , p_source_85_meaning    IN VARCHAR2
112625 --Entered Currency Code
112626  , p_source_88            IN VARCHAR2
112627 --Entered Amount
112628  , p_source_91            IN NUMBER
112629 --Currency Conversion Date
112630  , p_source_92            IN DATE
112631 --Currency Conversion Rate
112632  , p_source_93            IN NUMBER
112633 --Currency Conversion Type
112634  , p_source_94            IN VARCHAR2
112635 --Accounted Amount
112636  , p_source_95            IN NUMBER
112637 --Accounting Line Type
112638  , p_source_97            IN NUMBER
112639 )
112640 IS
112641 
112642 l_component_type              VARCHAR2(80);
112643 l_component_code              VARCHAR2(30);
112644 l_component_type_code         VARCHAR2(1);
112645 l_component_appl_id           INTEGER;
112646 l_amb_context_code            VARCHAR2(30);
112647 l_entity_code                 VARCHAR2(30);
112648 l_event_class_code            VARCHAR2(30);
112649 l_ae_header_id                NUMBER;
112650 l_event_type_code             VARCHAR2(30);
112651 l_line_definition_code        VARCHAR2(30);
112652 l_line_definition_owner_code  VARCHAR2(1);
112653 --
112654 -- adr variables
112655 l_segment                     VARCHAR2(30);
112656 l_ccid                        NUMBER;
112657 l_adr_transaction_coa_id      NUMBER;
112658 l_adr_accounting_coa_id       NUMBER;
112659 l_adr_flexfield_segment_code  VARCHAR2(30);
112660 l_adr_flex_value_set_id       NUMBER;
112661 l_adr_value_type_code         VARCHAR2(30);
112662 l_adr_value_combination_id    NUMBER;
112663 l_adr_value_segment_code      VARCHAR2(30);
112664 
112665 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
112666 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
112667 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
112668 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
112669 
112670 -- 4262811 Variables ------------------------------------------------------------------------------------------
112671 l_entered_amt_idx             NUMBER;
112672 l_accted_amt_idx              NUMBER;
112673 l_acc_rev_flag                VARCHAR2(1);
112674 l_accrual_line_num            NUMBER;
112675 l_tmp_amt                     NUMBER;
112676 l_acc_rev_natural_side_code   VARCHAR2(1);
112677 
112678 l_num_entries                 NUMBER;
112679 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
112680 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
112681 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
112682 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
112683 l_recog_line_1                NUMBER;
112684 l_recog_line_2                NUMBER;
112685 
112686 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
112687 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
112688 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
112689 
112690 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112691 
112692 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
112693 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
112694 
112695 ---------------------------------------------------------------------------------------------------------------
112696 
112697 
112698 --
112699 -- bulk performance
112700 --
112701 l_balance_type_code           VARCHAR2(1);
112702 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
112703 l_log_module                  VARCHAR2(240);
112704 
112705 --
112706 -- Upgrade strategy
112707 --
112708 l_actual_upg_option           VARCHAR2(1);
112709 l_enc_upg_option           VARCHAR2(1);
112710 
112711 --
112712 BEGIN
112713 --
112714 IF g_log_enabled THEN
112715       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_221';
112716 END IF;
112717 --
112718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112719 
112720       trace
112721          (p_msg      => 'BEGIN of AcctLineType_221'
112722          ,p_level    => C_LEVEL_PROCEDURE
112723          ,p_module   => l_log_module);
112724 
112725 END IF;
112726 --
112727 l_component_type             := 'AMB_JLT';
112728 l_component_code             := 'INTRANSIT_VALUATION';
112729 l_component_type_code        := 'S';
112730 l_component_appl_id          :=  707;
112731 l_amb_context_code           := 'DEFAULT';
112732 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
112733 l_event_class_code           := 'MTL_COST_UPD';
112734 l_event_type_code            := 'STD_COST_UPD';
112735 l_line_definition_owner_code := 'S';
112736 l_line_definition_code       := 'PI_STD_COST_UPD';
112737 --
112738 l_balance_type_code          := 'A';
112739 l_segment                     := NULL;
112740 l_ccid                        := NULL;
112741 l_adr_transaction_coa_id      := NULL;
112742 l_adr_accounting_coa_id       := NULL;
112743 l_adr_flexfield_segment_code  := NULL;
112744 l_adr_flex_value_set_id       := NULL;
112745 l_adr_value_type_code         := NULL;
112746 l_adr_value_combination_id    := NULL;
112747 l_adr_value_segment_code      := NULL;
112748 
112749 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
112750 l_bflow_class_code           := '';    -- 4219869 Business Flow
112751 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
112752 l_budgetary_control_flag     := 'N';
112753 
112754 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
112755 l_bflow_applied_to_amt       := NULL; -- 5132302
112756 l_entered_amt_idx            := NULL;          -- 4262811
112757 l_accted_amt_idx             := NULL;          -- 4262811
112758 l_acc_rev_flag               := NULL;          -- 4262811
112759 l_accrual_line_num           := NULL;          -- 4262811
112760 l_tmp_amt                    := NULL;          -- 4262811
112761 --
112762  
112763 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112764     l_balance_type_code <> 'B' THEN
112765 IF NVL(p_source_97,9E125) =  14
112766  THEN 
112767 
112768    --
112769    XLA_AE_LINES_PKG.SetNewLine;
112770 
112771    p_balance_type_code          := l_balance_type_code;
112772    -- set the flag so later we will know whether the gain loss line needs to be created
112773    
112774    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112775      p_actual_flag :='A';
112776    END IF;
112777 
112778    --
112779    -- bulk performance
112780    --
112781    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112782                                       p_header_num   => 0); -- 4262811
112783    --
112784    -- set accounting line options
112785    --
112786    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112787            p_natural_side_code          => 'D'
112788          , p_gain_or_loss_flag          => 'N'
112789          , p_gl_transfer_mode_code      => 'S'
112790          , p_acct_entry_type_code       => 'A'
112791          , p_switch_side_flag           => 'Y'
112792          , p_merge_duplicate_code       => 'N'
112793          );
112794    --
112795    l_acc_rev_natural_side_code := 'C';  -- 4262811
112796    -- 
112797    --
112798    -- set accounting line type info
112799    --
112800    xla_ae_lines_pkg.SetAcctLineType
112801       (p_component_type             => l_component_type
112802       ,p_event_type_code            => l_event_type_code
112803       ,p_line_definition_owner_code => l_line_definition_owner_code
112804       ,p_line_definition_code       => l_line_definition_code
112805       ,p_accounting_line_code       => l_component_code
112806       ,p_accounting_line_type_code  => l_component_type_code
112807       ,p_accounting_line_appl_id    => l_component_appl_id
112808       ,p_amb_context_code           => l_amb_context_code
112809       ,p_entity_code                => l_entity_code
112810       ,p_event_class_code           => l_event_class_code);
112811    --
112812    -- set accounting class
112813    --
112814    xla_ae_lines_pkg.SetAcctClass(
112815            p_accounting_class_code  => 'INTRANSIT_VALUATION'
112816          , p_ae_header_id           => l_ae_header_id
112817          );
112818 
112819    --
112820    -- set rounding class
112821    --
112822    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112823                       'INTRANSIT_VALUATION';
112824 
112825    --
112826    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112827    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112828    --
112829    -- bulk performance
112830    --
112831    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112832 
112833    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112834       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112835 
112836    -- 4955764
112837    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112838       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112839 
112840    -- 4458381 Public Sector Enh
112841    
112842    --
112843    -- set accounting attributes for the line type
112844    --
112845    l_entered_amt_idx := 3;
112846    l_accted_amt_idx  := 8;
112847    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
112848    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112849    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
112850    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112851    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
112852    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112853    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
112854    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112855    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
112856    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112857    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
112858    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112859    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
112860    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112861    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
112862    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112863    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
112864 
112865    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112866    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112867 
112868    ---------------------------------------------------------------------------------------------------------------
112869    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112870    ---------------------------------------------------------------------------------------------------------------
112871    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112872 
112873    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112874    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112875 
112876    IF xla_accounting_cache_pkg.GetValueChar
112877          (p_source_code         => 'LEDGER_CATEGORY_CODE'
112878          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112879    AND l_bflow_method_code = 'PRIOR_ENTRY'
112880 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112881    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112882          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112883        )
112884    THEN
112885          xla_ae_lines_pkg.BflowUpgEntry
112886            (p_business_method_code    => l_bflow_method_code
112887            ,p_business_class_code     => l_bflow_class_code
112888            ,p_balance_type            => l_balance_type_code);
112889    ELSE
112890       NULL;
112891 -- No business flow processing for business flow method of NONE.
112892    END IF;
112893 
112894    --
112895    -- call analytical criteria
112896    --
112897    
112898    --
112899    -- call description
112900    --
112901    
112902 xla_ae_lines_pkg.SetLineDescription(
112903    p_ae_header_id => l_ae_header_id
112904   ,p_description  => Description_1 (
112905      p_application_id         => p_application_id
112906    , p_ae_header_id           => l_ae_header_id 
112907 , p_source_1 => p_source_1
112908 , p_source_2 => p_source_2
112909 , p_source_3 => p_source_3
112910 , p_source_4 => p_source_4
112911 , p_source_5 => p_source_5
112912    )
112913 );
112914 
112915 
112916    --
112917    -- call ADRs
112918    -- Bug 4922099
112919    --
112920    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112921         (NVL(l_actual_upg_option, 'N') = 'O') OR
112922         (NVL(l_enc_upg_option, 'N') = 'O')
112923       )
112924    THEN
112925    NULL;
112926    --
112927    --
112928    
112929   l_ccid := AcctDerRule_25(
112930            p_application_id           => p_application_id
112931          , p_ae_header_id             => l_ae_header_id 
112932 , p_source_11 => p_source_11
112933 , p_source_15 => p_source_15
112934 , p_source_39 => p_source_39
112935 , p_source_39_meaning => p_source_39_meaning
112936 , p_source_41 => p_source_41
112937 , p_source_42 => p_source_42
112938 , p_source_43 => p_source_43
112939 , p_source_44 => p_source_44
112940 , p_source_45 => p_source_45
112941          , x_transaction_coa_id       => l_adr_transaction_coa_id
112942          , x_accounting_coa_id        => l_adr_accounting_coa_id
112943          , x_value_type_code          => l_adr_value_type_code
112944          , p_side                     => 'NA'
112945    );
112946 
112947    xla_ae_lines_pkg.set_ccid(
112948     p_code_combination_id          => l_ccid
112949   , p_value_type_code              => l_adr_value_type_code
112950   , p_transaction_coa_id           => l_adr_transaction_coa_id
112951   , p_accounting_coa_id            => l_adr_accounting_coa_id
112952   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
112953   , p_adr_type_code                => 'S'
112954   , p_component_type               => l_component_type
112955   , p_component_code               => l_component_code
112956   , p_component_type_code          => l_component_type_code
112957   , p_component_appl_id            => l_component_appl_id
112958   , p_amb_context_code             => l_amb_context_code
112959   , p_side                         => 'NA'
112960   );
112961 
112962 
112963    --
112964    --
112965    END IF;
112966    --
112967    -- Bug 4922099
112968    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112969           (NVL(l_enc_upg_option, 'N') = 'O')
112970         ) AND
112971         (l_bflow_method_code = 'PRIOR_ENTRY')
112972       )
112973    THEN
112974       IF
112975       --
112976       1 = 2
112977       --
112978       THEN
112979       xla_accounting_err_pkg.build_message
112980                                     (p_appli_s_name            => 'XLA'
112981                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112982                                     ,p_token_1                 => 'LINE_NUMBER'
112983                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
112984                                     ,p_token_2                 => 'LINE_TYPE_NAME'
112985                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
112986                                                                              l_component_type
112987                                                                             ,l_component_code
112988                                                                             ,l_component_type_code
112989                                                                             ,l_component_appl_id
112990                                                                             ,l_amb_context_code
112991                                                                             ,l_entity_code
112992                                                                             ,l_event_class_code
112993                                                                            )
112994                                     ,p_token_3                 => 'OWNER'
112995                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
112996                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
112997                                                                           ,p_lookup_code    => l_component_type_code
112998                                                                          )
112999                                     ,p_token_4                 => 'PRODUCT_NAME'
113000                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113001                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113002                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113003                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113004                                     ,p_ae_header_id            =>  NULL
113005                                        );
113006 
113007         IF (C_LEVEL_ERROR>= g_log_level) THEN
113008                  trace
113009                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113010                       ,p_level    => C_LEVEL_ERROR
113011                       ,p_module   => l_log_module);
113012         END IF;
113013       END IF;
113014    END IF;
113015    --
113016    --
113017    ------------------------------------------------------------------------------------------------
113018    -- 4219869 Business Flow
113019    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113020    -- Prior Entry.  Currently, the following code is always generated.
113021    ------------------------------------------------------------------------------------------------
113022    XLA_AE_LINES_PKG.ValidateCurrentLine;
113023 
113024    ------------------------------------------------------------------------------------
113025    -- 4219869 Business Flow
113026    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113027    ------------------------------------------------------------------------------------
113028    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113029 
113030    ----------------------------------------------------------------------------------
113031    -- 4219869 Business Flow
113032    -- Update journal entry status -- Need to generate this within IF <condition>
113033    ----------------------------------------------------------------------------------
113034    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113035          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113036          ,p_balance_type_code => l_balance_type_code
113037          );
113038 
113039    -------------------------------------------------------------------------------------------
113040    -- 4262811 - Generate the Accrual Reversal lines
113041    -------------------------------------------------------------------------------------------
113042    BEGIN
113043       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113044                               (g_array_event(p_event_id).array_value_num('header_index'));
113045       IF l_acc_rev_flag IS NULL THEN
113046          l_acc_rev_flag := 'N';
113047       END IF;
113048    EXCEPTION
113049       WHEN OTHERS THEN
113050          l_acc_rev_flag := 'N';
113051    END;
113052    --
113053    IF (l_acc_rev_flag = 'Y') THEN
113054 
113055        -- 4645092  ------------------------------------------------------------------------------
113056        -- To allow MPA report to determine if it should generate report process
113057        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113058        ------------------------------------------------------------------------------------------
113059 
113060        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113061        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113062    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113063    -- call ADRs
113064    -- Bug 4922099
113065    --
113066    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113067         (NVL(l_actual_upg_option, 'N') = 'O') OR
113068         (NVL(l_enc_upg_option, 'N') = 'O')
113069       )
113070    THEN
113071    NULL;
113072    --
113073    --
113074    
113075   l_ccid := AcctDerRule_25(
113076            p_application_id           => p_application_id
113077          , p_ae_header_id             => l_ae_header_id 
113078 , p_source_11 => p_source_11
113079 , p_source_15 => p_source_15
113080 , p_source_39 => p_source_39
113081 , p_source_39_meaning => p_source_39_meaning
113082 , p_source_41 => p_source_41
113083 , p_source_42 => p_source_42
113084 , p_source_43 => p_source_43
113085 , p_source_44 => p_source_44
113086 , p_source_45 => p_source_45
113087          , x_transaction_coa_id       => l_adr_transaction_coa_id
113088          , x_accounting_coa_id        => l_adr_accounting_coa_id
113089          , x_value_type_code          => l_adr_value_type_code
113090          , p_side                     => 'NA'
113091    );
113092 
113093    xla_ae_lines_pkg.set_ccid(
113094     p_code_combination_id          => l_ccid
113095   , p_value_type_code              => l_adr_value_type_code
113096   , p_transaction_coa_id           => l_adr_transaction_coa_id
113097   , p_accounting_coa_id            => l_adr_accounting_coa_id
113098   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
113099   , p_adr_type_code                => 'S'
113100   , p_component_type               => l_component_type
113101   , p_component_code               => l_component_code
113102   , p_component_type_code          => l_component_type_code
113103   , p_component_appl_id            => l_component_appl_id
113104   , p_amb_context_code             => l_amb_context_code
113105   , p_side                         => 'NA'
113106   );
113107 
113108 
113109    --
113110    --
113111    END IF;
113112 
113113        --
113114        -- Update the line information that should be overwritten
113115        --
113116        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113117                                          p_header_num   => 1);
113118        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113119 
113120        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113121 
113122        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113123           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113124        END IF;
113125 
113126       --
113127       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113128       --
113129       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113130           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113131       ELSE
113132           ---------------------------------------------------------------------------------------------------
113133           -- 4262811a Switch Sign
113134           ---------------------------------------------------------------------------------------------------
113135           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113136           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113137                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113138           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113139                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113140           -- 5132302
113141           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113142                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113143 
113144       END IF;
113145 
113146       -- 4955764
113147       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113148       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113149 
113150 
113151       XLA_AE_LINES_PKG.ValidateCurrentLine;
113152       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113153 
113154       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113155                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113156                ,p_balance_type_code => l_balance_type_code);
113157 
113158    END IF;
113159 
113160    -----------------------------------------------------------------------------------------
113161    -- 4262811 Multiperiod Accounting
113162    -----------------------------------------------------------------------------------------
113163      -- No MPA option is assigned.
113164 
113165 
113166 END IF;
113167 END IF;
113168 --
113169 
113170 --
113171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113172    trace
113173       (p_msg      => 'END of AcctLineType_221'
113174       ,p_level    => C_LEVEL_PROCEDURE
113175       ,p_module   => l_log_module);
113176 END IF;
113177 --
113178 EXCEPTION
113179   WHEN xla_exceptions_pkg.application_exception THEN
113180       RAISE;
113181   WHEN OTHERS THEN
113182        xla_exceptions_pkg.raise_message
113183            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_221');
113184 END AcctLineType_221;
113185 --
113186 
113187 ---------------------------------------
113188 --
113189 -- PRIVATE FUNCTION
113190 --         AcctLineType_222
113191 --
113192 ---------------------------------------
113193 PROCEDURE AcctLineType_222 (
113194   p_application_id        IN NUMBER
113195  ,p_event_id              IN NUMBER
113196  ,p_calculate_acctd_flag  IN VARCHAR2
113197  ,p_calculate_g_l_flag    IN VARCHAR2
113198  ,p_actual_flag           IN OUT VARCHAR2
113199  ,p_balance_type_code     OUT VARCHAR2
113200  ,p_gain_or_loss_ref      OUT VARCHAR2
113201  
113202 --TRANSACTION_ID
113203  , p_source_1            IN NUMBER
113204 --Item Concatenated Segments
113205  , p_source_2            IN VARCHAR2
113206 --Transaction Quantity
113207  , p_source_3            IN NUMBER
113208 --Transaction Unit of Measure Code
113209  , p_source_4            IN VARCHAR2
113210 --Inventory Transaction Type Description
113211  , p_source_5            IN VARCHAR2
113212 --Cost Management Default Account
113213  , p_source_11            IN NUMBER
113214 --Cost Element Name
113215  , p_source_15            IN NUMBER
113216 --Primary Cost Method
113217  , p_source_39            IN NUMBER
113218  , p_source_39_meaning    IN VARCHAR2
113219 --Product Line Accounting Category Material Account
113220  , p_source_41            IN NUMBER
113221 --Product Line Accounting Category Material Overhead Account
113222  , p_source_42            IN NUMBER
113223 --Product Line Accounting Category Resource Account
113224  , p_source_43            IN NUMBER
113225 --Product Line Accounting Category Outside Processing Account
113226  , p_source_44            IN NUMBER
113227 --Product Line Accounting Category Overhead Account
113228  , p_source_45            IN NUMBER
113229 --DISTRIBUTION_IDENTIFIER
113230  , p_source_84            IN NUMBER
113231 --Distribution Type
113232  , p_source_85            IN VARCHAR2
113233  , p_source_85_meaning    IN VARCHAR2
113234 --Entered Currency Code
113235  , p_source_88            IN VARCHAR2
113236 --Entered Amount
113237  , p_source_91            IN NUMBER
113238 --Currency Conversion Date
113239  , p_source_92            IN DATE
113240 --Currency Conversion Rate
113241  , p_source_93            IN NUMBER
113242 --Currency Conversion Type
113243  , p_source_94            IN VARCHAR2
113244 --Accounted Amount
113245  , p_source_95            IN NUMBER
113246 --Accounting Line Type
113247  , p_source_97            IN NUMBER
113248 )
113249 IS
113250 
113251 l_component_type              VARCHAR2(80);
113252 l_component_code              VARCHAR2(30);
113253 l_component_type_code         VARCHAR2(1);
113254 l_component_appl_id           INTEGER;
113255 l_amb_context_code            VARCHAR2(30);
113256 l_entity_code                 VARCHAR2(30);
113257 l_event_class_code            VARCHAR2(30);
113258 l_ae_header_id                NUMBER;
113259 l_event_type_code             VARCHAR2(30);
113260 l_line_definition_code        VARCHAR2(30);
113261 l_line_definition_owner_code  VARCHAR2(1);
113262 --
113263 -- adr variables
113264 l_segment                     VARCHAR2(30);
113265 l_ccid                        NUMBER;
113266 l_adr_transaction_coa_id      NUMBER;
113267 l_adr_accounting_coa_id       NUMBER;
113268 l_adr_flexfield_segment_code  VARCHAR2(30);
113269 l_adr_flex_value_set_id       NUMBER;
113270 l_adr_value_type_code         VARCHAR2(30);
113271 l_adr_value_combination_id    NUMBER;
113272 l_adr_value_segment_code      VARCHAR2(30);
113273 
113274 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113275 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113276 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113277 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113278 
113279 -- 4262811 Variables ------------------------------------------------------------------------------------------
113280 l_entered_amt_idx             NUMBER;
113281 l_accted_amt_idx              NUMBER;
113282 l_acc_rev_flag                VARCHAR2(1);
113283 l_accrual_line_num            NUMBER;
113284 l_tmp_amt                     NUMBER;
113285 l_acc_rev_natural_side_code   VARCHAR2(1);
113286 
113287 l_num_entries                 NUMBER;
113288 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113289 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113290 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113291 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113292 l_recog_line_1                NUMBER;
113293 l_recog_line_2                NUMBER;
113294 
113295 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113296 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113297 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113298 
113299 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113300 
113301 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113302 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113303 
113304 ---------------------------------------------------------------------------------------------------------------
113305 
113306 
113307 --
113308 -- bulk performance
113309 --
113310 l_balance_type_code           VARCHAR2(1);
113311 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
113312 l_log_module                  VARCHAR2(240);
113313 
113314 --
113315 -- Upgrade strategy
113316 --
113317 l_actual_upg_option           VARCHAR2(1);
113318 l_enc_upg_option           VARCHAR2(1);
113319 
113320 --
113321 BEGIN
113322 --
113323 IF g_log_enabled THEN
113324       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_222';
113325 END IF;
113326 --
113327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113328 
113329       trace
113330          (p_msg      => 'BEGIN of AcctLineType_222'
113331          ,p_level    => C_LEVEL_PROCEDURE
113332          ,p_module   => l_log_module);
113333 
113334 END IF;
113335 --
113336 l_component_type             := 'AMB_JLT';
113337 l_component_code             := 'INTRANSIT_VALUATION';
113338 l_component_type_code        := 'S';
113339 l_component_appl_id          :=  707;
113340 l_amb_context_code           := 'DEFAULT';
113341 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
113342 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
113343 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
113344 l_line_definition_owner_code := 'S';
113345 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
113346 --
113347 l_balance_type_code          := 'A';
113348 l_segment                     := NULL;
113349 l_ccid                        := NULL;
113350 l_adr_transaction_coa_id      := NULL;
113351 l_adr_accounting_coa_id       := NULL;
113352 l_adr_flexfield_segment_code  := NULL;
113353 l_adr_flex_value_set_id       := NULL;
113354 l_adr_value_type_code         := NULL;
113355 l_adr_value_combination_id    := NULL;
113356 l_adr_value_segment_code      := NULL;
113357 
113358 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
113359 l_bflow_class_code           := '';    -- 4219869 Business Flow
113360 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
113361 l_budgetary_control_flag     := 'N';
113362 
113363 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
113364 l_bflow_applied_to_amt       := NULL; -- 5132302
113365 l_entered_amt_idx            := NULL;          -- 4262811
113366 l_accted_amt_idx             := NULL;          -- 4262811
113367 l_acc_rev_flag               := NULL;          -- 4262811
113368 l_accrual_line_num           := NULL;          -- 4262811
113369 l_tmp_amt                    := NULL;          -- 4262811
113370 --
113371  
113372 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113373     l_balance_type_code <> 'B' THEN
113374 IF NVL(p_source_97,9E125) =  14
113375  THEN 
113376 
113377    --
113378    XLA_AE_LINES_PKG.SetNewLine;
113379 
113380    p_balance_type_code          := l_balance_type_code;
113381    -- set the flag so later we will know whether the gain loss line needs to be created
113382    
113383    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113384      p_actual_flag :='A';
113385    END IF;
113386 
113387    --
113388    -- bulk performance
113389    --
113390    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113391                                       p_header_num   => 0); -- 4262811
113392    --
113393    -- set accounting line options
113394    --
113395    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113396            p_natural_side_code          => 'D'
113397          , p_gain_or_loss_flag          => 'N'
113398          , p_gl_transfer_mode_code      => 'S'
113399          , p_acct_entry_type_code       => 'A'
113400          , p_switch_side_flag           => 'Y'
113401          , p_merge_duplicate_code       => 'N'
113402          );
113403    --
113404    l_acc_rev_natural_side_code := 'C';  -- 4262811
113405    -- 
113406    --
113407    -- set accounting line type info
113408    --
113409    xla_ae_lines_pkg.SetAcctLineType
113410       (p_component_type             => l_component_type
113411       ,p_event_type_code            => l_event_type_code
113412       ,p_line_definition_owner_code => l_line_definition_owner_code
113413       ,p_line_definition_code       => l_line_definition_code
113414       ,p_accounting_line_code       => l_component_code
113415       ,p_accounting_line_type_code  => l_component_type_code
113416       ,p_accounting_line_appl_id    => l_component_appl_id
113417       ,p_amb_context_code           => l_amb_context_code
113418       ,p_entity_code                => l_entity_code
113419       ,p_event_class_code           => l_event_class_code);
113420    --
113421    -- set accounting class
113422    --
113423    xla_ae_lines_pkg.SetAcctClass(
113424            p_accounting_class_code  => 'INTRANSIT_VALUATION'
113425          , p_ae_header_id           => l_ae_header_id
113426          );
113427 
113428    --
113429    -- set rounding class
113430    --
113431    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113432                       'INTRANSIT_VALUATION';
113433 
113434    --
113435    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113436    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113437    --
113438    -- bulk performance
113439    --
113440    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113441 
113442    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113443       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113444 
113445    -- 4955764
113446    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113447       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113448 
113449    -- 4458381 Public Sector Enh
113450    
113451    --
113452    -- set accounting attributes for the line type
113453    --
113454    l_entered_amt_idx := 3;
113455    l_accted_amt_idx  := 8;
113456    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
113457    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113458    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
113459    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113460    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
113461    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113462    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
113463    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113464    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
113465    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113466    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
113467    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113468    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
113469    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113470    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
113471    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113472    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
113473 
113474    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113475    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113476 
113477    ---------------------------------------------------------------------------------------------------------------
113478    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113479    ---------------------------------------------------------------------------------------------------------------
113480    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113481 
113482    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113483    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113484 
113485    IF xla_accounting_cache_pkg.GetValueChar
113486          (p_source_code         => 'LEDGER_CATEGORY_CODE'
113487          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113488    AND l_bflow_method_code = 'PRIOR_ENTRY'
113489 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113490    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113491          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113492        )
113493    THEN
113494          xla_ae_lines_pkg.BflowUpgEntry
113495            (p_business_method_code    => l_bflow_method_code
113496            ,p_business_class_code     => l_bflow_class_code
113497            ,p_balance_type            => l_balance_type_code);
113498    ELSE
113499       NULL;
113500 -- No business flow processing for business flow method of NONE.
113501    END IF;
113502 
113503    --
113504    -- call analytical criteria
113505    --
113506    
113507    --
113508    -- call description
113509    --
113510    
113511 xla_ae_lines_pkg.SetLineDescription(
113512    p_ae_header_id => l_ae_header_id
113513   ,p_description  => Description_1 (
113514      p_application_id         => p_application_id
113515    , p_ae_header_id           => l_ae_header_id 
113516 , p_source_1 => p_source_1
113517 , p_source_2 => p_source_2
113518 , p_source_3 => p_source_3
113519 , p_source_4 => p_source_4
113520 , p_source_5 => p_source_5
113521    )
113522 );
113523 
113524 
113525    --
113526    -- call ADRs
113527    -- Bug 4922099
113528    --
113529    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113530         (NVL(l_actual_upg_option, 'N') = 'O') OR
113531         (NVL(l_enc_upg_option, 'N') = 'O')
113532       )
113533    THEN
113534    NULL;
113535    --
113536    --
113537    
113538   l_ccid := AcctDerRule_25(
113539            p_application_id           => p_application_id
113540          , p_ae_header_id             => l_ae_header_id 
113541 , p_source_11 => p_source_11
113542 , p_source_15 => p_source_15
113543 , p_source_39 => p_source_39
113544 , p_source_39_meaning => p_source_39_meaning
113545 , p_source_41 => p_source_41
113546 , p_source_42 => p_source_42
113547 , p_source_43 => p_source_43
113548 , p_source_44 => p_source_44
113549 , p_source_45 => p_source_45
113550          , x_transaction_coa_id       => l_adr_transaction_coa_id
113551          , x_accounting_coa_id        => l_adr_accounting_coa_id
113552          , x_value_type_code          => l_adr_value_type_code
113553          , p_side                     => 'NA'
113554    );
113555 
113556    xla_ae_lines_pkg.set_ccid(
113557     p_code_combination_id          => l_ccid
113558   , p_value_type_code              => l_adr_value_type_code
113559   , p_transaction_coa_id           => l_adr_transaction_coa_id
113560   , p_accounting_coa_id            => l_adr_accounting_coa_id
113561   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
113562   , p_adr_type_code                => 'S'
113563   , p_component_type               => l_component_type
113564   , p_component_code               => l_component_code
113565   , p_component_type_code          => l_component_type_code
113566   , p_component_appl_id            => l_component_appl_id
113567   , p_amb_context_code             => l_amb_context_code
113568   , p_side                         => 'NA'
113569   );
113570 
113571 
113572    --
113573    --
113574    END IF;
113575    --
113576    -- Bug 4922099
113577    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113578           (NVL(l_enc_upg_option, 'N') = 'O')
113579         ) AND
113580         (l_bflow_method_code = 'PRIOR_ENTRY')
113581       )
113582    THEN
113583       IF
113584       --
113585       1 = 2
113586       --
113587       THEN
113588       xla_accounting_err_pkg.build_message
113589                                     (p_appli_s_name            => 'XLA'
113590                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113591                                     ,p_token_1                 => 'LINE_NUMBER'
113592                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
113593                                     ,p_token_2                 => 'LINE_TYPE_NAME'
113594                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
113595                                                                              l_component_type
113596                                                                             ,l_component_code
113597                                                                             ,l_component_type_code
113598                                                                             ,l_component_appl_id
113599                                                                             ,l_amb_context_code
113600                                                                             ,l_entity_code
113601                                                                             ,l_event_class_code
113602                                                                            )
113603                                     ,p_token_3                 => 'OWNER'
113604                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
113605                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
113606                                                                           ,p_lookup_code    => l_component_type_code
113607                                                                          )
113608                                     ,p_token_4                 => 'PRODUCT_NAME'
113609                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113610                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113611                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113612                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113613                                     ,p_ae_header_id            =>  NULL
113614                                        );
113615 
113616         IF (C_LEVEL_ERROR>= g_log_level) THEN
113617                  trace
113618                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113619                       ,p_level    => C_LEVEL_ERROR
113620                       ,p_module   => l_log_module);
113621         END IF;
113622       END IF;
113623    END IF;
113624    --
113625    --
113626    ------------------------------------------------------------------------------------------------
113627    -- 4219869 Business Flow
113628    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113629    -- Prior Entry.  Currently, the following code is always generated.
113630    ------------------------------------------------------------------------------------------------
113631    XLA_AE_LINES_PKG.ValidateCurrentLine;
113632 
113633    ------------------------------------------------------------------------------------
113634    -- 4219869 Business Flow
113635    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113636    ------------------------------------------------------------------------------------
113637    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113638 
113639    ----------------------------------------------------------------------------------
113640    -- 4219869 Business Flow
113641    -- Update journal entry status -- Need to generate this within IF <condition>
113642    ----------------------------------------------------------------------------------
113643    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113644          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113645          ,p_balance_type_code => l_balance_type_code
113646          );
113647 
113648    -------------------------------------------------------------------------------------------
113649    -- 4262811 - Generate the Accrual Reversal lines
113650    -------------------------------------------------------------------------------------------
113651    BEGIN
113652       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113653                               (g_array_event(p_event_id).array_value_num('header_index'));
113654       IF l_acc_rev_flag IS NULL THEN
113655          l_acc_rev_flag := 'N';
113656       END IF;
113657    EXCEPTION
113658       WHEN OTHERS THEN
113659          l_acc_rev_flag := 'N';
113660    END;
113661    --
113662    IF (l_acc_rev_flag = 'Y') THEN
113663 
113664        -- 4645092  ------------------------------------------------------------------------------
113665        -- To allow MPA report to determine if it should generate report process
113666        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113667        ------------------------------------------------------------------------------------------
113668 
113669        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113670        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113671    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
113672    -- call ADRs
113673    -- Bug 4922099
113674    --
113675    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113676         (NVL(l_actual_upg_option, 'N') = 'O') OR
113677         (NVL(l_enc_upg_option, 'N') = 'O')
113678       )
113679    THEN
113680    NULL;
113681    --
113682    --
113683    
113684   l_ccid := AcctDerRule_25(
113685            p_application_id           => p_application_id
113686          , p_ae_header_id             => l_ae_header_id 
113687 , p_source_11 => p_source_11
113688 , p_source_15 => p_source_15
113689 , p_source_39 => p_source_39
113690 , p_source_39_meaning => p_source_39_meaning
113691 , p_source_41 => p_source_41
113692 , p_source_42 => p_source_42
113693 , p_source_43 => p_source_43
113694 , p_source_44 => p_source_44
113695 , p_source_45 => p_source_45
113696          , x_transaction_coa_id       => l_adr_transaction_coa_id
113697          , x_accounting_coa_id        => l_adr_accounting_coa_id
113698          , x_value_type_code          => l_adr_value_type_code
113699          , p_side                     => 'NA'
113700    );
113701 
113702    xla_ae_lines_pkg.set_ccid(
113703     p_code_combination_id          => l_ccid
113704   , p_value_type_code              => l_adr_value_type_code
113705   , p_transaction_coa_id           => l_adr_transaction_coa_id
113706   , p_accounting_coa_id            => l_adr_accounting_coa_id
113707   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
113708   , p_adr_type_code                => 'S'
113709   , p_component_type               => l_component_type
113710   , p_component_code               => l_component_code
113711   , p_component_type_code          => l_component_type_code
113712   , p_component_appl_id            => l_component_appl_id
113713   , p_amb_context_code             => l_amb_context_code
113714   , p_side                         => 'NA'
113715   );
113716 
113717 
113718    --
113719    --
113720    END IF;
113721 
113722        --
113723        -- Update the line information that should be overwritten
113724        --
113725        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113726                                          p_header_num   => 1);
113727        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
113728 
113729        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113730 
113731        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
113732           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113733        END IF;
113734 
113735       --
113736       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113737       --
113738       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113739           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
113740       ELSE
113741           ---------------------------------------------------------------------------------------------------
113742           -- 4262811a Switch Sign
113743           ---------------------------------------------------------------------------------------------------
113744           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
113745           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113746                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113747           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113748                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113749           -- 5132302
113750           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113751                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113752 
113753       END IF;
113754 
113755       -- 4955764
113756       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113757       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113758 
113759 
113760       XLA_AE_LINES_PKG.ValidateCurrentLine;
113761       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113762 
113763       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113764                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113765                ,p_balance_type_code => l_balance_type_code);
113766 
113767    END IF;
113768 
113769    -----------------------------------------------------------------------------------------
113770    -- 4262811 Multiperiod Accounting
113771    -----------------------------------------------------------------------------------------
113772      -- No MPA option is assigned.
113773 
113774 
113775 END IF;
113776 END IF;
113777 --
113778 
113779 --
113780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113781    trace
113782       (p_msg      => 'END of AcctLineType_222'
113783       ,p_level    => C_LEVEL_PROCEDURE
113784       ,p_module   => l_log_module);
113785 END IF;
113786 --
113787 EXCEPTION
113788   WHEN xla_exceptions_pkg.application_exception THEN
113789       RAISE;
113790   WHEN OTHERS THEN
113791        xla_exceptions_pkg.raise_message
113792            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_222');
113793 END AcctLineType_222;
113794 --
113795 
113796 ---------------------------------------
113797 --
113798 -- PRIVATE FUNCTION
113799 --         AcctLineType_223
113800 --
113801 ---------------------------------------
113802 PROCEDURE AcctLineType_223 (
113803   p_application_id        IN NUMBER
113804  ,p_event_id              IN NUMBER
113805  ,p_calculate_acctd_flag  IN VARCHAR2
113806  ,p_calculate_g_l_flag    IN VARCHAR2
113807  ,p_actual_flag           IN OUT VARCHAR2
113808  ,p_balance_type_code     OUT VARCHAR2
113809  ,p_gain_or_loss_ref      OUT VARCHAR2
113810  
113811 --TRANSACTION_ID
113812  , p_source_1            IN NUMBER
113813 --Item Concatenated Segments
113814  , p_source_2            IN VARCHAR2
113815 --Transaction Quantity
113816  , p_source_3            IN NUMBER
113817 --Transaction Unit of Measure Code
113818  , p_source_4            IN VARCHAR2
113819 --Inventory Transaction Type Description
113820  , p_source_5            IN VARCHAR2
113821 --Cost Element Name
113822  , p_source_15            IN NUMBER
113823 --Cost Group Identifier
113824  , p_source_26            IN NUMBER
113825 --INV Header Transfer Cost Group ID
113826  , p_source_27            IN NUMBER
113827 --INV Header Cost Group ID
113828  , p_source_28            IN NUMBER
113829 --Subinventory Name
113830  , p_source_29            IN VARCHAR2
113831 --INV Header Transfer Subinventory
113832  , p_source_31            IN VARCHAR2
113833 --Product Line Accounting Category Material Account
113834  , p_source_41            IN NUMBER
113835 --Product Line Accounting Category Material Overhead Account
113836  , p_source_42            IN NUMBER
113837 --Product Line Accounting Category Resource Account
113838  , p_source_43            IN NUMBER
113839 --Product Line Accounting Category Outside Processing Account
113840  , p_source_44            IN NUMBER
113841 --Product Line Accounting Category Overhead Account
113842  , p_source_45            IN NUMBER
113843 --Transfer to Subinventory or Cost Group category material account
113844  , p_source_48            IN NUMBER
113845 --Transfer to Subinventory or Cost Group category material overhead account
113846  , p_source_49            IN NUMBER
113847 --Transfer to Subinventory or Cost Group category resource account
113848  , p_source_50            IN NUMBER
113849 --Transfer to Subinventory or Cost Group category outside processing account
113850  , p_source_51            IN NUMBER
113851 --Transfer to Subinventory or Cost Group category overhead account
113852  , p_source_52            IN NUMBER
113853 --DISTRIBUTION_IDENTIFIER
113854  , p_source_84            IN NUMBER
113855 --Distribution Type
113856  , p_source_85            IN VARCHAR2
113857  , p_source_85_meaning    IN VARCHAR2
113858 --Entered Currency Code
113859  , p_source_88            IN VARCHAR2
113860 --Entered Amount
113861  , p_source_91            IN NUMBER
113862 --Currency Conversion Date
113863  , p_source_92            IN DATE
113864 --Currency Conversion Rate
113865  , p_source_93            IN NUMBER
113866 --Currency Conversion Type
113867  , p_source_94            IN VARCHAR2
113868 --Accounted Amount
113869  , p_source_95            IN NUMBER
113870 --Accounting Line Type
113871  , p_source_97            IN NUMBER
113872 )
113873 IS
113874 
113875 l_component_type              VARCHAR2(80);
113876 l_component_code              VARCHAR2(30);
113877 l_component_type_code         VARCHAR2(1);
113878 l_component_appl_id           INTEGER;
113879 l_amb_context_code            VARCHAR2(30);
113880 l_entity_code                 VARCHAR2(30);
113881 l_event_class_code            VARCHAR2(30);
113882 l_ae_header_id                NUMBER;
113883 l_event_type_code             VARCHAR2(30);
113884 l_line_definition_code        VARCHAR2(30);
113885 l_line_definition_owner_code  VARCHAR2(1);
113886 --
113887 -- adr variables
113888 l_segment                     VARCHAR2(30);
113889 l_ccid                        NUMBER;
113890 l_adr_transaction_coa_id      NUMBER;
113891 l_adr_accounting_coa_id       NUMBER;
113892 l_adr_flexfield_segment_code  VARCHAR2(30);
113893 l_adr_flex_value_set_id       NUMBER;
113894 l_adr_value_type_code         VARCHAR2(30);
113895 l_adr_value_combination_id    NUMBER;
113896 l_adr_value_segment_code      VARCHAR2(30);
113897 
113898 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
113899 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
113900 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
113901 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
113902 
113903 -- 4262811 Variables ------------------------------------------------------------------------------------------
113904 l_entered_amt_idx             NUMBER;
113905 l_accted_amt_idx              NUMBER;
113906 l_acc_rev_flag                VARCHAR2(1);
113907 l_accrual_line_num            NUMBER;
113908 l_tmp_amt                     NUMBER;
113909 l_acc_rev_natural_side_code   VARCHAR2(1);
113910 
113911 l_num_entries                 NUMBER;
113912 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
113913 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
113914 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
113915 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
113916 l_recog_line_1                NUMBER;
113917 l_recog_line_2                NUMBER;
113918 
113919 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
113920 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
113921 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
113922 
113923 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113924 
113925 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
113926 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
113927 
113928 ---------------------------------------------------------------------------------------------------------------
113929 
113930 
113931 --
113932 -- bulk performance
113933 --
113934 l_balance_type_code           VARCHAR2(1);
113935 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
113936 l_log_module                  VARCHAR2(240);
113937 
113938 --
113939 -- Upgrade strategy
113940 --
113941 l_actual_upg_option           VARCHAR2(1);
113942 l_enc_upg_option           VARCHAR2(1);
113943 
113944 --
113945 BEGIN
113946 --
113947 IF g_log_enabled THEN
113948       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_223';
113949 END IF;
113950 --
113951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113952 
113953       trace
113954          (p_msg      => 'BEGIN of AcctLineType_223'
113955          ,p_level    => C_LEVEL_PROCEDURE
113956          ,p_module   => l_log_module);
113957 
113958 END IF;
113959 --
113960 l_component_type             := 'AMB_JLT';
113961 l_component_code             := 'INTRANSIT_VALUATION';
113962 l_component_type_code        := 'S';
113963 l_component_appl_id          :=  707;
113964 l_amb_context_code           := 'DEFAULT';
113965 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
113966 l_event_class_code           := 'USER_DEFINE';
113967 l_event_type_code            := 'UIPV_TXFR';
113968 l_line_definition_owner_code := 'S';
113969 l_line_definition_code       := 'PI_IPV_TXFR';
113970 --
113971 l_balance_type_code          := 'A';
113972 l_segment                     := NULL;
113973 l_ccid                        := NULL;
113974 l_adr_transaction_coa_id      := NULL;
113975 l_adr_accounting_coa_id       := NULL;
113976 l_adr_flexfield_segment_code  := NULL;
113977 l_adr_flex_value_set_id       := NULL;
113978 l_adr_value_type_code         := NULL;
113979 l_adr_value_combination_id    := NULL;
113980 l_adr_value_segment_code      := NULL;
113981 
113982 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
113983 l_bflow_class_code           := '';    -- 4219869 Business Flow
113984 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
113985 l_budgetary_control_flag     := 'N';
113986 
113987 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
113988 l_bflow_applied_to_amt       := NULL; -- 5132302
113989 l_entered_amt_idx            := NULL;          -- 4262811
113990 l_accted_amt_idx             := NULL;          -- 4262811
113991 l_acc_rev_flag               := NULL;          -- 4262811
113992 l_accrual_line_num           := NULL;          -- 4262811
113993 l_tmp_amt                    := NULL;          -- 4262811
113994 --
113995  
113996 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113997     l_balance_type_code <> 'B' THEN
113998 IF NVL(p_source_97,9E125) =  14
113999  THEN 
114000 
114001    --
114002    XLA_AE_LINES_PKG.SetNewLine;
114003 
114004    p_balance_type_code          := l_balance_type_code;
114005    -- set the flag so later we will know whether the gain loss line needs to be created
114006    
114007    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114008      p_actual_flag :='A';
114009    END IF;
114010 
114011    --
114012    -- bulk performance
114013    --
114014    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114015                                       p_header_num   => 0); -- 4262811
114016    --
114017    -- set accounting line options
114018    --
114019    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114020            p_natural_side_code          => 'D'
114021          , p_gain_or_loss_flag          => 'N'
114022          , p_gl_transfer_mode_code      => 'S'
114023          , p_acct_entry_type_code       => 'A'
114024          , p_switch_side_flag           => 'Y'
114025          , p_merge_duplicate_code       => 'N'
114026          );
114027    --
114028    l_acc_rev_natural_side_code := 'C';  -- 4262811
114029    -- 
114030    --
114031    -- set accounting line type info
114032    --
114033    xla_ae_lines_pkg.SetAcctLineType
114034       (p_component_type             => l_component_type
114035       ,p_event_type_code            => l_event_type_code
114036       ,p_line_definition_owner_code => l_line_definition_owner_code
114037       ,p_line_definition_code       => l_line_definition_code
114038       ,p_accounting_line_code       => l_component_code
114039       ,p_accounting_line_type_code  => l_component_type_code
114040       ,p_accounting_line_appl_id    => l_component_appl_id
114041       ,p_amb_context_code           => l_amb_context_code
114042       ,p_entity_code                => l_entity_code
114043       ,p_event_class_code           => l_event_class_code);
114044    --
114045    -- set accounting class
114046    --
114047    xla_ae_lines_pkg.SetAcctClass(
114048            p_accounting_class_code  => 'INTRANSIT_VALUATION'
114049          , p_ae_header_id           => l_ae_header_id
114050          );
114051 
114052    --
114053    -- set rounding class
114054    --
114055    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114056                       'INTRANSIT_VALUATION';
114057 
114058    --
114059    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114060    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114061    --
114062    -- bulk performance
114063    --
114064    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114065 
114066    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114067       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114068 
114069    -- 4955764
114070    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114071       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114072 
114073    -- 4458381 Public Sector Enh
114074    
114075    --
114076    -- set accounting attributes for the line type
114077    --
114078    l_entered_amt_idx := 3;
114079    l_accted_amt_idx  := 8;
114080    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114081    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114082    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
114083    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114084    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
114085    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114086    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
114087    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114088    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
114089    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114090    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
114091    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114092    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
114093    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114094    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
114095    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114096    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
114097 
114098    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114099    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114100 
114101    ---------------------------------------------------------------------------------------------------------------
114102    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114103    ---------------------------------------------------------------------------------------------------------------
114104    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114105 
114106    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114107    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114108 
114109    IF xla_accounting_cache_pkg.GetValueChar
114110          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114111          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114112    AND l_bflow_method_code = 'PRIOR_ENTRY'
114113 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114114    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114115          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114116        )
114117    THEN
114118          xla_ae_lines_pkg.BflowUpgEntry
114119            (p_business_method_code    => l_bflow_method_code
114120            ,p_business_class_code     => l_bflow_class_code
114121            ,p_balance_type            => l_balance_type_code);
114122    ELSE
114123       NULL;
114124 -- No business flow processing for business flow method of NONE.
114125    END IF;
114126 
114127    --
114128    -- call analytical criteria
114129    --
114130    
114131    --
114132    -- call description
114133    --
114134    
114135 xla_ae_lines_pkg.SetLineDescription(
114136    p_ae_header_id => l_ae_header_id
114137   ,p_description  => Description_1 (
114138      p_application_id         => p_application_id
114139    , p_ae_header_id           => l_ae_header_id 
114140 , p_source_1 => p_source_1
114141 , p_source_2 => p_source_2
114142 , p_source_3 => p_source_3
114143 , p_source_4 => p_source_4
114144 , p_source_5 => p_source_5
114145    )
114146 );
114147 
114148 
114149    --
114150    -- call ADRs
114151    -- Bug 4922099
114152    --
114153    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114154         (NVL(l_actual_upg_option, 'N') = 'O') OR
114155         (NVL(l_enc_upg_option, 'N') = 'O')
114156       )
114157    THEN
114158    NULL;
114159    --
114160    --
114161    
114162   l_ccid := AcctDerRule_29(
114163            p_application_id           => p_application_id
114164          , p_ae_header_id             => l_ae_header_id 
114165 , p_source_15 => p_source_15
114166 , p_source_26 => p_source_26
114167 , p_source_27 => p_source_27
114168 , p_source_28 => p_source_28
114169 , p_source_29 => p_source_29
114170 , p_source_31 => p_source_31
114171 , p_source_41 => p_source_41
114172 , p_source_42 => p_source_42
114173 , p_source_43 => p_source_43
114174 , p_source_44 => p_source_44
114175 , p_source_45 => p_source_45
114176 , p_source_48 => p_source_48
114177 , p_source_49 => p_source_49
114178 , p_source_50 => p_source_50
114179 , p_source_51 => p_source_51
114180 , p_source_52 => p_source_52
114181          , x_transaction_coa_id       => l_adr_transaction_coa_id
114182          , x_accounting_coa_id        => l_adr_accounting_coa_id
114183          , x_value_type_code          => l_adr_value_type_code
114184          , p_side                     => 'NA'
114185    );
114186 
114187    xla_ae_lines_pkg.set_ccid(
114188     p_code_combination_id          => l_ccid
114189   , p_value_type_code              => l_adr_value_type_code
114190   , p_transaction_coa_id           => l_adr_transaction_coa_id
114191   , p_accounting_coa_id            => l_adr_accounting_coa_id
114192   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT_ADR'
114193   , p_adr_type_code                => 'S'
114194   , p_component_type               => l_component_type
114195   , p_component_code               => l_component_code
114196   , p_component_type_code          => l_component_type_code
114197   , p_component_appl_id            => l_component_appl_id
114198   , p_amb_context_code             => l_amb_context_code
114199   , p_side                         => 'NA'
114200   );
114201 
114202 
114203    --
114204    --
114205    END IF;
114206    --
114207    -- Bug 4922099
114208    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114209           (NVL(l_enc_upg_option, 'N') = 'O')
114210         ) AND
114211         (l_bflow_method_code = 'PRIOR_ENTRY')
114212       )
114213    THEN
114214       IF
114215       --
114216       1 = 2
114217       --
114218       THEN
114219       xla_accounting_err_pkg.build_message
114220                                     (p_appli_s_name            => 'XLA'
114221                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114222                                     ,p_token_1                 => 'LINE_NUMBER'
114223                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114224                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114225                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114226                                                                              l_component_type
114227                                                                             ,l_component_code
114228                                                                             ,l_component_type_code
114229                                                                             ,l_component_appl_id
114230                                                                             ,l_amb_context_code
114231                                                                             ,l_entity_code
114232                                                                             ,l_event_class_code
114233                                                                            )
114234                                     ,p_token_3                 => 'OWNER'
114235                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114236                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114237                                                                           ,p_lookup_code    => l_component_type_code
114238                                                                          )
114239                                     ,p_token_4                 => 'PRODUCT_NAME'
114240                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114241                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114242                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114243                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114244                                     ,p_ae_header_id            =>  NULL
114245                                        );
114246 
114247         IF (C_LEVEL_ERROR>= g_log_level) THEN
114248                  trace
114249                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114250                       ,p_level    => C_LEVEL_ERROR
114251                       ,p_module   => l_log_module);
114252         END IF;
114253       END IF;
114254    END IF;
114255    --
114256    --
114257    ------------------------------------------------------------------------------------------------
114258    -- 4219869 Business Flow
114259    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114260    -- Prior Entry.  Currently, the following code is always generated.
114261    ------------------------------------------------------------------------------------------------
114262    XLA_AE_LINES_PKG.ValidateCurrentLine;
114263 
114264    ------------------------------------------------------------------------------------
114265    -- 4219869 Business Flow
114266    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114267    ------------------------------------------------------------------------------------
114268    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114269 
114270    ----------------------------------------------------------------------------------
114271    -- 4219869 Business Flow
114272    -- Update journal entry status -- Need to generate this within IF <condition>
114273    ----------------------------------------------------------------------------------
114274    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114275          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114276          ,p_balance_type_code => l_balance_type_code
114277          );
114278 
114279    -------------------------------------------------------------------------------------------
114280    -- 4262811 - Generate the Accrual Reversal lines
114281    -------------------------------------------------------------------------------------------
114282    BEGIN
114283       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114284                               (g_array_event(p_event_id).array_value_num('header_index'));
114285       IF l_acc_rev_flag IS NULL THEN
114286          l_acc_rev_flag := 'N';
114287       END IF;
114288    EXCEPTION
114289       WHEN OTHERS THEN
114290          l_acc_rev_flag := 'N';
114291    END;
114292    --
114293    IF (l_acc_rev_flag = 'Y') THEN
114294 
114295        -- 4645092  ------------------------------------------------------------------------------
114296        -- To allow MPA report to determine if it should generate report process
114297        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114298        ------------------------------------------------------------------------------------------
114299 
114300        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114301        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114302    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114303    -- call ADRs
114304    -- Bug 4922099
114305    --
114306    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114307         (NVL(l_actual_upg_option, 'N') = 'O') OR
114308         (NVL(l_enc_upg_option, 'N') = 'O')
114309       )
114310    THEN
114311    NULL;
114312    --
114313    --
114314    
114315   l_ccid := AcctDerRule_29(
114316            p_application_id           => p_application_id
114317          , p_ae_header_id             => l_ae_header_id 
114318 , p_source_15 => p_source_15
114319 , p_source_26 => p_source_26
114320 , p_source_27 => p_source_27
114321 , p_source_28 => p_source_28
114322 , p_source_29 => p_source_29
114323 , p_source_31 => p_source_31
114324 , p_source_41 => p_source_41
114325 , p_source_42 => p_source_42
114326 , p_source_43 => p_source_43
114327 , p_source_44 => p_source_44
114328 , p_source_45 => p_source_45
114329 , p_source_48 => p_source_48
114330 , p_source_49 => p_source_49
114331 , p_source_50 => p_source_50
114332 , p_source_51 => p_source_51
114333 , p_source_52 => p_source_52
114334          , x_transaction_coa_id       => l_adr_transaction_coa_id
114335          , x_accounting_coa_id        => l_adr_accounting_coa_id
114336          , x_value_type_code          => l_adr_value_type_code
114337          , p_side                     => 'NA'
114338    );
114339 
114340    xla_ae_lines_pkg.set_ccid(
114341     p_code_combination_id          => l_ccid
114342   , p_value_type_code              => l_adr_value_type_code
114343   , p_transaction_coa_id           => l_adr_transaction_coa_id
114344   , p_accounting_coa_id            => l_adr_accounting_coa_id
114345   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT_ADR'
114346   , p_adr_type_code                => 'S'
114347   , p_component_type               => l_component_type
114348   , p_component_code               => l_component_code
114349   , p_component_type_code          => l_component_type_code
114350   , p_component_appl_id            => l_component_appl_id
114351   , p_amb_context_code             => l_amb_context_code
114352   , p_side                         => 'NA'
114353   );
114354 
114355 
114356    --
114357    --
114358    END IF;
114359 
114360        --
114361        -- Update the line information that should be overwritten
114362        --
114363        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114364                                          p_header_num   => 1);
114365        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114366 
114367        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114368 
114369        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114370           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114371        END IF;
114372 
114373       --
114374       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114375       --
114376       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114377           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114378       ELSE
114379           ---------------------------------------------------------------------------------------------------
114380           -- 4262811a Switch Sign
114381           ---------------------------------------------------------------------------------------------------
114382           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114383           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114384                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114385           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114386                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114387           -- 5132302
114388           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114389                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114390 
114391       END IF;
114392 
114393       -- 4955764
114394       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114395       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114396 
114397 
114398       XLA_AE_LINES_PKG.ValidateCurrentLine;
114399       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114400 
114401       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114402                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114403                ,p_balance_type_code => l_balance_type_code);
114404 
114405    END IF;
114406 
114407    -----------------------------------------------------------------------------------------
114408    -- 4262811 Multiperiod Accounting
114409    -----------------------------------------------------------------------------------------
114410      -- No MPA option is assigned.
114411 
114412 
114413 END IF;
114414 END IF;
114415 --
114416 
114417 --
114418 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114419    trace
114420       (p_msg      => 'END of AcctLineType_223'
114421       ,p_level    => C_LEVEL_PROCEDURE
114422       ,p_module   => l_log_module);
114423 END IF;
114424 --
114425 EXCEPTION
114426   WHEN xla_exceptions_pkg.application_exception THEN
114427       RAISE;
114428   WHEN OTHERS THEN
114429        xla_exceptions_pkg.raise_message
114430            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_223');
114431 END AcctLineType_223;
114432 --
114433 
114434 ---------------------------------------
114435 --
114436 -- PRIVATE FUNCTION
114437 --         AcctLineType_224
114438 --
114439 ---------------------------------------
114440 PROCEDURE AcctLineType_224 (
114441   p_application_id        IN NUMBER
114442  ,p_event_id              IN NUMBER
114443  ,p_calculate_acctd_flag  IN VARCHAR2
114444  ,p_calculate_g_l_flag    IN VARCHAR2
114445  ,p_actual_flag           IN OUT VARCHAR2
114446  ,p_balance_type_code     OUT VARCHAR2
114447  ,p_gain_or_loss_ref      OUT VARCHAR2
114448  
114449 --TRANSACTION_ID
114450  , p_source_1            IN NUMBER
114451 --Item Concatenated Segments
114452  , p_source_2            IN VARCHAR2
114453 --Transaction Quantity
114454  , p_source_3            IN NUMBER
114455 --Transaction Unit of Measure Code
114456  , p_source_4            IN VARCHAR2
114457 --Inventory Transaction Type Description
114458  , p_source_5            IN VARCHAR2
114459 --Cost Management Default Account
114460  , p_source_11            IN NUMBER
114461 --Cost Element Name
114462  , p_source_15            IN NUMBER
114463 --Primary Cost Method
114464  , p_source_39            IN NUMBER
114465  , p_source_39_meaning    IN VARCHAR2
114466 --Product Line Accounting Category Material Account
114467  , p_source_41            IN NUMBER
114468 --Product Line Accounting Category Material Overhead Account
114469  , p_source_42            IN NUMBER
114470 --Product Line Accounting Category Resource Account
114471  , p_source_43            IN NUMBER
114472 --Product Line Accounting Category Outside Processing Account
114473  , p_source_44            IN NUMBER
114474 --Product Line Accounting Category Overhead Account
114475  , p_source_45            IN NUMBER
114476 --DISTRIBUTION_IDENTIFIER
114477  , p_source_84            IN NUMBER
114478 --Distribution Type
114479  , p_source_85            IN VARCHAR2
114480  , p_source_85_meaning    IN VARCHAR2
114481 --Entered Currency Code
114482  , p_source_88            IN VARCHAR2
114483 --Entered Amount
114484  , p_source_91            IN NUMBER
114485 --Currency Conversion Date
114486  , p_source_92            IN DATE
114487 --Currency Conversion Rate
114488  , p_source_93            IN NUMBER
114489 --Currency Conversion Type
114490  , p_source_94            IN VARCHAR2
114491 --Accounted Amount
114492  , p_source_95            IN NUMBER
114493 --Accounting Line Type
114494  , p_source_97            IN NUMBER
114495 )
114496 IS
114497 
114498 l_component_type              VARCHAR2(80);
114499 l_component_code              VARCHAR2(30);
114500 l_component_type_code         VARCHAR2(1);
114501 l_component_appl_id           INTEGER;
114502 l_amb_context_code            VARCHAR2(30);
114503 l_entity_code                 VARCHAR2(30);
114504 l_event_class_code            VARCHAR2(30);
114505 l_ae_header_id                NUMBER;
114506 l_event_type_code             VARCHAR2(30);
114507 l_line_definition_code        VARCHAR2(30);
114508 l_line_definition_owner_code  VARCHAR2(1);
114509 --
114510 -- adr variables
114511 l_segment                     VARCHAR2(30);
114512 l_ccid                        NUMBER;
114513 l_adr_transaction_coa_id      NUMBER;
114514 l_adr_accounting_coa_id       NUMBER;
114515 l_adr_flexfield_segment_code  VARCHAR2(30);
114516 l_adr_flex_value_set_id       NUMBER;
114517 l_adr_value_type_code         VARCHAR2(30);
114518 l_adr_value_combination_id    NUMBER;
114519 l_adr_value_segment_code      VARCHAR2(30);
114520 
114521 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
114522 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
114523 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
114524 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
114525 
114526 -- 4262811 Variables ------------------------------------------------------------------------------------------
114527 l_entered_amt_idx             NUMBER;
114528 l_accted_amt_idx              NUMBER;
114529 l_acc_rev_flag                VARCHAR2(1);
114530 l_accrual_line_num            NUMBER;
114531 l_tmp_amt                     NUMBER;
114532 l_acc_rev_natural_side_code   VARCHAR2(1);
114533 
114534 l_num_entries                 NUMBER;
114535 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
114536 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
114537 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
114538 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
114539 l_recog_line_1                NUMBER;
114540 l_recog_line_2                NUMBER;
114541 
114542 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
114543 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
114544 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
114545 
114546 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
114547 
114548 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
114549 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
114550 
114551 ---------------------------------------------------------------------------------------------------------------
114552 
114553 
114554 --
114555 -- bulk performance
114556 --
114557 l_balance_type_code           VARCHAR2(1);
114558 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
114559 l_log_module                  VARCHAR2(240);
114560 
114561 --
114562 -- Upgrade strategy
114563 --
114564 l_actual_upg_option           VARCHAR2(1);
114565 l_enc_upg_option           VARCHAR2(1);
114566 
114567 --
114568 BEGIN
114569 --
114570 IF g_log_enabled THEN
114571       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_224';
114572 END IF;
114573 --
114574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114575 
114576       trace
114577          (p_msg      => 'BEGIN of AcctLineType_224'
114578          ,p_level    => C_LEVEL_PROCEDURE
114579          ,p_module   => l_log_module);
114580 
114581 END IF;
114582 --
114583 l_component_type             := 'AMB_JLT';
114584 l_component_code             := 'INTRANSIT_VALUATION';
114585 l_component_type_code        := 'S';
114586 l_component_appl_id          :=  707;
114587 l_amb_context_code           := 'DEFAULT';
114588 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
114589 l_event_class_code           := 'MTL_COST_UPD';
114590 l_event_type_code            := 'LAYER_COST_UPD';
114591 l_line_definition_owner_code := 'S';
114592 l_line_definition_code       := 'PI_LAYER_COST_UPDATE';
114593 --
114594 l_balance_type_code          := 'A';
114595 l_segment                     := NULL;
114596 l_ccid                        := NULL;
114597 l_adr_transaction_coa_id      := NULL;
114598 l_adr_accounting_coa_id       := NULL;
114599 l_adr_flexfield_segment_code  := NULL;
114600 l_adr_flex_value_set_id       := NULL;
114601 l_adr_value_type_code         := NULL;
114602 l_adr_value_combination_id    := NULL;
114603 l_adr_value_segment_code      := NULL;
114604 
114605 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
114606 l_bflow_class_code           := '';    -- 4219869 Business Flow
114607 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
114608 l_budgetary_control_flag     := 'N';
114609 
114610 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
114611 l_bflow_applied_to_amt       := NULL; -- 5132302
114612 l_entered_amt_idx            := NULL;          -- 4262811
114613 l_accted_amt_idx             := NULL;          -- 4262811
114614 l_acc_rev_flag               := NULL;          -- 4262811
114615 l_accrual_line_num           := NULL;          -- 4262811
114616 l_tmp_amt                    := NULL;          -- 4262811
114617 --
114618  
114619 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114620     l_balance_type_code <> 'B' THEN
114621 IF NVL(p_source_97,9E125) =  14
114622  THEN 
114623 
114624    --
114625    XLA_AE_LINES_PKG.SetNewLine;
114626 
114627    p_balance_type_code          := l_balance_type_code;
114628    -- set the flag so later we will know whether the gain loss line needs to be created
114629    
114630    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114631      p_actual_flag :='A';
114632    END IF;
114633 
114634    --
114635    -- bulk performance
114636    --
114637    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114638                                       p_header_num   => 0); -- 4262811
114639    --
114640    -- set accounting line options
114641    --
114642    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114643            p_natural_side_code          => 'D'
114644          , p_gain_or_loss_flag          => 'N'
114645          , p_gl_transfer_mode_code      => 'S'
114646          , p_acct_entry_type_code       => 'A'
114647          , p_switch_side_flag           => 'Y'
114648          , p_merge_duplicate_code       => 'N'
114649          );
114650    --
114651    l_acc_rev_natural_side_code := 'C';  -- 4262811
114652    -- 
114653    --
114654    -- set accounting line type info
114655    --
114656    xla_ae_lines_pkg.SetAcctLineType
114657       (p_component_type             => l_component_type
114658       ,p_event_type_code            => l_event_type_code
114659       ,p_line_definition_owner_code => l_line_definition_owner_code
114660       ,p_line_definition_code       => l_line_definition_code
114661       ,p_accounting_line_code       => l_component_code
114662       ,p_accounting_line_type_code  => l_component_type_code
114663       ,p_accounting_line_appl_id    => l_component_appl_id
114664       ,p_amb_context_code           => l_amb_context_code
114665       ,p_entity_code                => l_entity_code
114666       ,p_event_class_code           => l_event_class_code);
114667    --
114668    -- set accounting class
114669    --
114670    xla_ae_lines_pkg.SetAcctClass(
114671            p_accounting_class_code  => 'INTRANSIT_VALUATION'
114672          , p_ae_header_id           => l_ae_header_id
114673          );
114674 
114675    --
114676    -- set rounding class
114677    --
114678    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114679                       'INTRANSIT_VALUATION';
114680 
114681    --
114682    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114683    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114684    --
114685    -- bulk performance
114686    --
114687    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114688 
114689    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114690       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114691 
114692    -- 4955764
114693    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114694       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114695 
114696    -- 4458381 Public Sector Enh
114697    
114698    --
114699    -- set accounting attributes for the line type
114700    --
114701    l_entered_amt_idx := 3;
114702    l_accted_amt_idx  := 8;
114703    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
114704    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114705    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
114706    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114707    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
114708    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114709    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
114710    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114711    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
114712    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114713    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
114714    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114715    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
114716    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114717    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
114718    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114719    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
114720 
114721    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114722    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114723 
114724    ---------------------------------------------------------------------------------------------------------------
114725    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114726    ---------------------------------------------------------------------------------------------------------------
114727    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114728 
114729    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114730    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114731 
114732    IF xla_accounting_cache_pkg.GetValueChar
114733          (p_source_code         => 'LEDGER_CATEGORY_CODE'
114734          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114735    AND l_bflow_method_code = 'PRIOR_ENTRY'
114736 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114737    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114738          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114739        )
114740    THEN
114741          xla_ae_lines_pkg.BflowUpgEntry
114742            (p_business_method_code    => l_bflow_method_code
114743            ,p_business_class_code     => l_bflow_class_code
114744            ,p_balance_type            => l_balance_type_code);
114745    ELSE
114746       NULL;
114747 -- No business flow processing for business flow method of NONE.
114748    END IF;
114749 
114750    --
114751    -- call analytical criteria
114752    --
114753    
114754    --
114755    -- call description
114756    --
114757    
114758 xla_ae_lines_pkg.SetLineDescription(
114759    p_ae_header_id => l_ae_header_id
114760   ,p_description  => Description_1 (
114761      p_application_id         => p_application_id
114762    , p_ae_header_id           => l_ae_header_id 
114763 , p_source_1 => p_source_1
114764 , p_source_2 => p_source_2
114765 , p_source_3 => p_source_3
114766 , p_source_4 => p_source_4
114767 , p_source_5 => p_source_5
114768    )
114769 );
114770 
114771 
114772    --
114773    -- call ADRs
114774    -- Bug 4922099
114775    --
114776    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114777         (NVL(l_actual_upg_option, 'N') = 'O') OR
114778         (NVL(l_enc_upg_option, 'N') = 'O')
114779       )
114780    THEN
114781    NULL;
114782    --
114783    --
114784    
114785   l_ccid := AcctDerRule_25(
114786            p_application_id           => p_application_id
114787          , p_ae_header_id             => l_ae_header_id 
114788 , p_source_11 => p_source_11
114789 , p_source_15 => p_source_15
114790 , p_source_39 => p_source_39
114791 , p_source_39_meaning => p_source_39_meaning
114792 , p_source_41 => p_source_41
114793 , p_source_42 => p_source_42
114794 , p_source_43 => p_source_43
114795 , p_source_44 => p_source_44
114796 , p_source_45 => p_source_45
114797          , x_transaction_coa_id       => l_adr_transaction_coa_id
114798          , x_accounting_coa_id        => l_adr_accounting_coa_id
114799          , x_value_type_code          => l_adr_value_type_code
114800          , p_side                     => 'NA'
114801    );
114802 
114803    xla_ae_lines_pkg.set_ccid(
114804     p_code_combination_id          => l_ccid
114805   , p_value_type_code              => l_adr_value_type_code
114806   , p_transaction_coa_id           => l_adr_transaction_coa_id
114807   , p_accounting_coa_id            => l_adr_accounting_coa_id
114808   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
114809   , p_adr_type_code                => 'S'
114810   , p_component_type               => l_component_type
114811   , p_component_code               => l_component_code
114812   , p_component_type_code          => l_component_type_code
114813   , p_component_appl_id            => l_component_appl_id
114814   , p_amb_context_code             => l_amb_context_code
114815   , p_side                         => 'NA'
114816   );
114817 
114818 
114819    --
114820    --
114821    END IF;
114822    --
114823    -- Bug 4922099
114824    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114825           (NVL(l_enc_upg_option, 'N') = 'O')
114826         ) AND
114827         (l_bflow_method_code = 'PRIOR_ENTRY')
114828       )
114829    THEN
114830       IF
114831       --
114832       1 = 2
114833       --
114834       THEN
114835       xla_accounting_err_pkg.build_message
114836                                     (p_appli_s_name            => 'XLA'
114837                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114838                                     ,p_token_1                 => 'LINE_NUMBER'
114839                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
114840                                     ,p_token_2                 => 'LINE_TYPE_NAME'
114841                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
114842                                                                              l_component_type
114843                                                                             ,l_component_code
114844                                                                             ,l_component_type_code
114845                                                                             ,l_component_appl_id
114846                                                                             ,l_amb_context_code
114847                                                                             ,l_entity_code
114848                                                                             ,l_event_class_code
114849                                                                            )
114850                                     ,p_token_3                 => 'OWNER'
114851                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
114852                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
114853                                                                           ,p_lookup_code    => l_component_type_code
114854                                                                          )
114855                                     ,p_token_4                 => 'PRODUCT_NAME'
114856                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114857                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114858                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114859                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114860                                     ,p_ae_header_id            =>  NULL
114861                                        );
114862 
114863         IF (C_LEVEL_ERROR>= g_log_level) THEN
114864                  trace
114865                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114866                       ,p_level    => C_LEVEL_ERROR
114867                       ,p_module   => l_log_module);
114868         END IF;
114869       END IF;
114870    END IF;
114871    --
114872    --
114873    ------------------------------------------------------------------------------------------------
114874    -- 4219869 Business Flow
114875    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114876    -- Prior Entry.  Currently, the following code is always generated.
114877    ------------------------------------------------------------------------------------------------
114878    XLA_AE_LINES_PKG.ValidateCurrentLine;
114879 
114880    ------------------------------------------------------------------------------------
114881    -- 4219869 Business Flow
114882    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114883    ------------------------------------------------------------------------------------
114884    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114885 
114886    ----------------------------------------------------------------------------------
114887    -- 4219869 Business Flow
114888    -- Update journal entry status -- Need to generate this within IF <condition>
114889    ----------------------------------------------------------------------------------
114890    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114891          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114892          ,p_balance_type_code => l_balance_type_code
114893          );
114894 
114895    -------------------------------------------------------------------------------------------
114896    -- 4262811 - Generate the Accrual Reversal lines
114897    -------------------------------------------------------------------------------------------
114898    BEGIN
114899       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114900                               (g_array_event(p_event_id).array_value_num('header_index'));
114901       IF l_acc_rev_flag IS NULL THEN
114902          l_acc_rev_flag := 'N';
114903       END IF;
114904    EXCEPTION
114905       WHEN OTHERS THEN
114906          l_acc_rev_flag := 'N';
114907    END;
114908    --
114909    IF (l_acc_rev_flag = 'Y') THEN
114910 
114911        -- 4645092  ------------------------------------------------------------------------------
114912        -- To allow MPA report to determine if it should generate report process
114913        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114914        ------------------------------------------------------------------------------------------
114915 
114916        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114917        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114918    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
114919    -- call ADRs
114920    -- Bug 4922099
114921    --
114922    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114923         (NVL(l_actual_upg_option, 'N') = 'O') OR
114924         (NVL(l_enc_upg_option, 'N') = 'O')
114925       )
114926    THEN
114927    NULL;
114928    --
114929    --
114930    
114931   l_ccid := AcctDerRule_25(
114932            p_application_id           => p_application_id
114933          , p_ae_header_id             => l_ae_header_id 
114934 , p_source_11 => p_source_11
114935 , p_source_15 => p_source_15
114936 , p_source_39 => p_source_39
114937 , p_source_39_meaning => p_source_39_meaning
114938 , p_source_41 => p_source_41
114939 , p_source_42 => p_source_42
114940 , p_source_43 => p_source_43
114941 , p_source_44 => p_source_44
114942 , p_source_45 => p_source_45
114943          , x_transaction_coa_id       => l_adr_transaction_coa_id
114944          , x_accounting_coa_id        => l_adr_accounting_coa_id
114945          , x_value_type_code          => l_adr_value_type_code
114946          , p_side                     => 'NA'
114947    );
114948 
114949    xla_ae_lines_pkg.set_ccid(
114950     p_code_combination_id          => l_ccid
114951   , p_value_type_code              => l_adr_value_type_code
114952   , p_transaction_coa_id           => l_adr_transaction_coa_id
114953   , p_accounting_coa_id            => l_adr_accounting_coa_id
114954   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
114955   , p_adr_type_code                => 'S'
114956   , p_component_type               => l_component_type
114957   , p_component_code               => l_component_code
114958   , p_component_type_code          => l_component_type_code
114959   , p_component_appl_id            => l_component_appl_id
114960   , p_amb_context_code             => l_amb_context_code
114961   , p_side                         => 'NA'
114962   );
114963 
114964 
114965    --
114966    --
114967    END IF;
114968 
114969        --
114970        -- Update the line information that should be overwritten
114971        --
114972        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114973                                          p_header_num   => 1);
114974        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
114975 
114976        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114977 
114978        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
114979           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114980        END IF;
114981 
114982       --
114983       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114984       --
114985       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114986           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
114987       ELSE
114988           ---------------------------------------------------------------------------------------------------
114989           -- 4262811a Switch Sign
114990           ---------------------------------------------------------------------------------------------------
114991           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
114992           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114993                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114994           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114995                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114996           -- 5132302
114997           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114998                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114999 
115000       END IF;
115001 
115002       -- 4955764
115003       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115004       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115005 
115006 
115007       XLA_AE_LINES_PKG.ValidateCurrentLine;
115008       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115009 
115010       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115011                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115012                ,p_balance_type_code => l_balance_type_code);
115013 
115014    END IF;
115015 
115016    -----------------------------------------------------------------------------------------
115017    -- 4262811 Multiperiod Accounting
115018    -----------------------------------------------------------------------------------------
115019      -- No MPA option is assigned.
115020 
115021 
115022 END IF;
115023 END IF;
115024 --
115025 
115026 --
115027 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115028    trace
115029       (p_msg      => 'END of AcctLineType_224'
115030       ,p_level    => C_LEVEL_PROCEDURE
115031       ,p_module   => l_log_module);
115032 END IF;
115033 --
115034 EXCEPTION
115035   WHEN xla_exceptions_pkg.application_exception THEN
115036       RAISE;
115037   WHEN OTHERS THEN
115038        xla_exceptions_pkg.raise_message
115039            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_224');
115040 END AcctLineType_224;
115041 --
115042 
115043 ---------------------------------------
115044 --
115045 -- PRIVATE FUNCTION
115046 --         AcctLineType_225
115047 --
115048 ---------------------------------------
115049 PROCEDURE AcctLineType_225 (
115050   p_application_id        IN NUMBER
115051  ,p_event_id              IN NUMBER
115052  ,p_calculate_acctd_flag  IN VARCHAR2
115053  ,p_calculate_g_l_flag    IN VARCHAR2
115054  ,p_actual_flag           IN OUT VARCHAR2
115055  ,p_balance_type_code     OUT VARCHAR2
115056  ,p_gain_or_loss_ref      OUT VARCHAR2
115057  
115058 --TRANSACTION_ID
115059  , p_source_1            IN NUMBER
115060 --Item Concatenated Segments
115061  , p_source_2            IN VARCHAR2
115062 --Transaction Quantity
115063  , p_source_3            IN NUMBER
115064 --Transaction Unit of Measure Code
115065  , p_source_4            IN VARCHAR2
115066 --Inventory Transaction Type Description
115067  , p_source_5            IN VARCHAR2
115068 --Cost Management Default Account
115069  , p_source_11            IN NUMBER
115070 --Cost Element Name
115071  , p_source_15            IN NUMBER
115072 --Primary Cost Method
115073  , p_source_39            IN NUMBER
115074  , p_source_39_meaning    IN VARCHAR2
115075 --Product Line Accounting Category Material Account
115076  , p_source_41            IN NUMBER
115077 --Product Line Accounting Category Material Overhead Account
115078  , p_source_42            IN NUMBER
115079 --Product Line Accounting Category Resource Account
115080  , p_source_43            IN NUMBER
115081 --Product Line Accounting Category Outside Processing Account
115082  , p_source_44            IN NUMBER
115083 --Product Line Accounting Category Overhead Account
115084  , p_source_45            IN NUMBER
115085 --DISTRIBUTION_IDENTIFIER
115086  , p_source_84            IN NUMBER
115087 --Distribution Type
115088  , p_source_85            IN VARCHAR2
115089  , p_source_85_meaning    IN VARCHAR2
115090 --Entered Currency Code
115091  , p_source_88            IN VARCHAR2
115092 --Entered Amount
115093  , p_source_91            IN NUMBER
115094 --Currency Conversion Date
115095  , p_source_92            IN DATE
115096 --Currency Conversion Rate
115097  , p_source_93            IN NUMBER
115098 --Currency Conversion Type
115099  , p_source_94            IN VARCHAR2
115100 --Accounted Amount
115101  , p_source_95            IN NUMBER
115102 --Accounting Line Type
115103  , p_source_97            IN NUMBER
115104 )
115105 IS
115106 
115107 l_component_type              VARCHAR2(80);
115108 l_component_code              VARCHAR2(30);
115109 l_component_type_code         VARCHAR2(1);
115110 l_component_appl_id           INTEGER;
115111 l_amb_context_code            VARCHAR2(30);
115112 l_entity_code                 VARCHAR2(30);
115113 l_event_class_code            VARCHAR2(30);
115114 l_ae_header_id                NUMBER;
115115 l_event_type_code             VARCHAR2(30);
115116 l_line_definition_code        VARCHAR2(30);
115117 l_line_definition_owner_code  VARCHAR2(1);
115118 --
115119 -- adr variables
115120 l_segment                     VARCHAR2(30);
115121 l_ccid                        NUMBER;
115122 l_adr_transaction_coa_id      NUMBER;
115123 l_adr_accounting_coa_id       NUMBER;
115124 l_adr_flexfield_segment_code  VARCHAR2(30);
115125 l_adr_flex_value_set_id       NUMBER;
115126 l_adr_value_type_code         VARCHAR2(30);
115127 l_adr_value_combination_id    NUMBER;
115128 l_adr_value_segment_code      VARCHAR2(30);
115129 
115130 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
115131 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
115132 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
115133 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
115134 
115135 -- 4262811 Variables ------------------------------------------------------------------------------------------
115136 l_entered_amt_idx             NUMBER;
115137 l_accted_amt_idx              NUMBER;
115138 l_acc_rev_flag                VARCHAR2(1);
115139 l_accrual_line_num            NUMBER;
115140 l_tmp_amt                     NUMBER;
115141 l_acc_rev_natural_side_code   VARCHAR2(1);
115142 
115143 l_num_entries                 NUMBER;
115144 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
115145 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
115146 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
115147 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
115148 l_recog_line_1                NUMBER;
115149 l_recog_line_2                NUMBER;
115150 
115151 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
115152 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
115153 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
115154 
115155 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115156 
115157 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115158 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115159 
115160 ---------------------------------------------------------------------------------------------------------------
115161 
115162 
115163 --
115164 -- bulk performance
115165 --
115166 l_balance_type_code           VARCHAR2(1);
115167 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115168 l_log_module                  VARCHAR2(240);
115169 
115170 --
115171 -- Upgrade strategy
115172 --
115173 l_actual_upg_option           VARCHAR2(1);
115174 l_enc_upg_option           VARCHAR2(1);
115175 
115176 --
115177 BEGIN
115178 --
115179 IF g_log_enabled THEN
115180       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_225';
115181 END IF;
115182 --
115183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115184 
115185       trace
115186          (p_msg      => 'BEGIN of AcctLineType_225'
115187          ,p_level    => C_LEVEL_PROCEDURE
115188          ,p_module   => l_log_module);
115189 
115190 END IF;
115191 --
115192 l_component_type             := 'AMB_JLT';
115193 l_component_code             := 'INTRANSIT_VALUATION';
115194 l_component_type_code        := 'S';
115195 l_component_appl_id          :=  707;
115196 l_amb_context_code           := 'DEFAULT';
115197 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
115198 l_event_class_code           := 'USER_DEFINE';
115199 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
115200 l_line_definition_owner_code := 'S';
115201 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
115202 --
115203 l_balance_type_code          := 'A';
115204 l_segment                     := NULL;
115205 l_ccid                        := NULL;
115206 l_adr_transaction_coa_id      := NULL;
115207 l_adr_accounting_coa_id       := NULL;
115208 l_adr_flexfield_segment_code  := NULL;
115209 l_adr_flex_value_set_id       := NULL;
115210 l_adr_value_type_code         := NULL;
115211 l_adr_value_combination_id    := NULL;
115212 l_adr_value_segment_code      := NULL;
115213 
115214 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115215 l_bflow_class_code           := '';    -- 4219869 Business Flow
115216 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115217 l_budgetary_control_flag     := 'N';
115218 
115219 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115220 l_bflow_applied_to_amt       := NULL; -- 5132302
115221 l_entered_amt_idx            := NULL;          -- 4262811
115222 l_accted_amt_idx             := NULL;          -- 4262811
115223 l_acc_rev_flag               := NULL;          -- 4262811
115224 l_accrual_line_num           := NULL;          -- 4262811
115225 l_tmp_amt                    := NULL;          -- 4262811
115226 --
115227  
115228 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115229     l_balance_type_code <> 'B' THEN
115230 IF NVL(p_source_97,9E125) =  14
115231  THEN 
115232 
115233    --
115234    XLA_AE_LINES_PKG.SetNewLine;
115235 
115236    p_balance_type_code          := l_balance_type_code;
115237    -- set the flag so later we will know whether the gain loss line needs to be created
115238    
115239    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115240      p_actual_flag :='A';
115241    END IF;
115242 
115243    --
115244    -- bulk performance
115245    --
115246    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115247                                       p_header_num   => 0); -- 4262811
115248    --
115249    -- set accounting line options
115250    --
115251    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115252            p_natural_side_code          => 'D'
115253          , p_gain_or_loss_flag          => 'N'
115254          , p_gl_transfer_mode_code      => 'S'
115255          , p_acct_entry_type_code       => 'A'
115256          , p_switch_side_flag           => 'Y'
115257          , p_merge_duplicate_code       => 'N'
115258          );
115259    --
115260    l_acc_rev_natural_side_code := 'C';  -- 4262811
115261    -- 
115262    --
115263    -- set accounting line type info
115264    --
115265    xla_ae_lines_pkg.SetAcctLineType
115266       (p_component_type             => l_component_type
115267       ,p_event_type_code            => l_event_type_code
115268       ,p_line_definition_owner_code => l_line_definition_owner_code
115269       ,p_line_definition_code       => l_line_definition_code
115270       ,p_accounting_line_code       => l_component_code
115271       ,p_accounting_line_type_code  => l_component_type_code
115272       ,p_accounting_line_appl_id    => l_component_appl_id
115273       ,p_amb_context_code           => l_amb_context_code
115274       ,p_entity_code                => l_entity_code
115275       ,p_event_class_code           => l_event_class_code);
115276    --
115277    -- set accounting class
115278    --
115279    xla_ae_lines_pkg.SetAcctClass(
115280            p_accounting_class_code  => 'INTRANSIT_VALUATION'
115281          , p_ae_header_id           => l_ae_header_id
115282          );
115283 
115284    --
115285    -- set rounding class
115286    --
115287    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115288                       'INTRANSIT_VALUATION';
115289 
115290    --
115291    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115292    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115293    --
115294    -- bulk performance
115295    --
115296    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115297 
115298    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115299       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115300 
115301    -- 4955764
115302    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115303       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115304 
115305    -- 4458381 Public Sector Enh
115306    
115307    --
115308    -- set accounting attributes for the line type
115309    --
115310    l_entered_amt_idx := 3;
115311    l_accted_amt_idx  := 8;
115312    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115313    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115314    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
115315    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115316    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
115317    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115318    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
115319    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115320    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
115321    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115322    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
115323    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115324    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
115325    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115326    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
115327    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115328    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
115329 
115330    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115331    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115332 
115333    ---------------------------------------------------------------------------------------------------------------
115334    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115335    ---------------------------------------------------------------------------------------------------------------
115336    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115337 
115338    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115339    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115340 
115341    IF xla_accounting_cache_pkg.GetValueChar
115342          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115343          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115344    AND l_bflow_method_code = 'PRIOR_ENTRY'
115345 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115346    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115347          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115348        )
115349    THEN
115350          xla_ae_lines_pkg.BflowUpgEntry
115351            (p_business_method_code    => l_bflow_method_code
115352            ,p_business_class_code     => l_bflow_class_code
115353            ,p_balance_type            => l_balance_type_code);
115354    ELSE
115355       NULL;
115356 -- No business flow processing for business flow method of NONE.
115357    END IF;
115358 
115359    --
115360    -- call analytical criteria
115361    --
115362    
115363    --
115364    -- call description
115365    --
115366    
115367 xla_ae_lines_pkg.SetLineDescription(
115368    p_ae_header_id => l_ae_header_id
115369   ,p_description  => Description_1 (
115370      p_application_id         => p_application_id
115371    , p_ae_header_id           => l_ae_header_id 
115372 , p_source_1 => p_source_1
115373 , p_source_2 => p_source_2
115374 , p_source_3 => p_source_3
115375 , p_source_4 => p_source_4
115376 , p_source_5 => p_source_5
115377    )
115378 );
115379 
115380 
115381    --
115382    -- call ADRs
115383    -- Bug 4922099
115384    --
115385    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115386         (NVL(l_actual_upg_option, 'N') = 'O') OR
115387         (NVL(l_enc_upg_option, 'N') = 'O')
115388       )
115389    THEN
115390    NULL;
115391    --
115392    --
115393    
115394   l_ccid := AcctDerRule_25(
115395            p_application_id           => p_application_id
115396          , p_ae_header_id             => l_ae_header_id 
115397 , p_source_11 => p_source_11
115398 , p_source_15 => p_source_15
115399 , p_source_39 => p_source_39
115400 , p_source_39_meaning => p_source_39_meaning
115401 , p_source_41 => p_source_41
115402 , p_source_42 => p_source_42
115403 , p_source_43 => p_source_43
115404 , p_source_44 => p_source_44
115405 , p_source_45 => p_source_45
115406          , x_transaction_coa_id       => l_adr_transaction_coa_id
115407          , x_accounting_coa_id        => l_adr_accounting_coa_id
115408          , x_value_type_code          => l_adr_value_type_code
115409          , p_side                     => 'NA'
115410    );
115411 
115412    xla_ae_lines_pkg.set_ccid(
115413     p_code_combination_id          => l_ccid
115414   , p_value_type_code              => l_adr_value_type_code
115415   , p_transaction_coa_id           => l_adr_transaction_coa_id
115416   , p_accounting_coa_id            => l_adr_accounting_coa_id
115417   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
115418   , p_adr_type_code                => 'S'
115419   , p_component_type               => l_component_type
115420   , p_component_code               => l_component_code
115421   , p_component_type_code          => l_component_type_code
115422   , p_component_appl_id            => l_component_appl_id
115423   , p_amb_context_code             => l_amb_context_code
115424   , p_side                         => 'NA'
115425   );
115426 
115427 
115428    --
115429    --
115430    END IF;
115431    --
115432    -- Bug 4922099
115433    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115434           (NVL(l_enc_upg_option, 'N') = 'O')
115435         ) AND
115436         (l_bflow_method_code = 'PRIOR_ENTRY')
115437       )
115438    THEN
115439       IF
115440       --
115441       1 = 2
115442       --
115443       THEN
115444       xla_accounting_err_pkg.build_message
115445                                     (p_appli_s_name            => 'XLA'
115446                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115447                                     ,p_token_1                 => 'LINE_NUMBER'
115448                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
115449                                     ,p_token_2                 => 'LINE_TYPE_NAME'
115450                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
115451                                                                              l_component_type
115452                                                                             ,l_component_code
115453                                                                             ,l_component_type_code
115454                                                                             ,l_component_appl_id
115455                                                                             ,l_amb_context_code
115456                                                                             ,l_entity_code
115457                                                                             ,l_event_class_code
115458                                                                            )
115459                                     ,p_token_3                 => 'OWNER'
115460                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
115461                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
115462                                                                           ,p_lookup_code    => l_component_type_code
115463                                                                          )
115464                                     ,p_token_4                 => 'PRODUCT_NAME'
115465                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115466                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115467                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115468                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115469                                     ,p_ae_header_id            =>  NULL
115470                                        );
115471 
115472         IF (C_LEVEL_ERROR>= g_log_level) THEN
115473                  trace
115474                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115475                       ,p_level    => C_LEVEL_ERROR
115476                       ,p_module   => l_log_module);
115477         END IF;
115478       END IF;
115479    END IF;
115480    --
115481    --
115482    ------------------------------------------------------------------------------------------------
115483    -- 4219869 Business Flow
115484    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115485    -- Prior Entry.  Currently, the following code is always generated.
115486    ------------------------------------------------------------------------------------------------
115487    XLA_AE_LINES_PKG.ValidateCurrentLine;
115488 
115489    ------------------------------------------------------------------------------------
115490    -- 4219869 Business Flow
115491    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115492    ------------------------------------------------------------------------------------
115493    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115494 
115495    ----------------------------------------------------------------------------------
115496    -- 4219869 Business Flow
115497    -- Update journal entry status -- Need to generate this within IF <condition>
115498    ----------------------------------------------------------------------------------
115499    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115500          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115501          ,p_balance_type_code => l_balance_type_code
115502          );
115503 
115504    -------------------------------------------------------------------------------------------
115505    -- 4262811 - Generate the Accrual Reversal lines
115506    -------------------------------------------------------------------------------------------
115507    BEGIN
115508       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115509                               (g_array_event(p_event_id).array_value_num('header_index'));
115510       IF l_acc_rev_flag IS NULL THEN
115511          l_acc_rev_flag := 'N';
115512       END IF;
115513    EXCEPTION
115514       WHEN OTHERS THEN
115515          l_acc_rev_flag := 'N';
115516    END;
115517    --
115518    IF (l_acc_rev_flag = 'Y') THEN
115519 
115520        -- 4645092  ------------------------------------------------------------------------------
115521        -- To allow MPA report to determine if it should generate report process
115522        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115523        ------------------------------------------------------------------------------------------
115524 
115525        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115526        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115527    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
115528    -- call ADRs
115529    -- Bug 4922099
115530    --
115531    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115532         (NVL(l_actual_upg_option, 'N') = 'O') OR
115533         (NVL(l_enc_upg_option, 'N') = 'O')
115534       )
115535    THEN
115536    NULL;
115537    --
115538    --
115539    
115540   l_ccid := AcctDerRule_25(
115541            p_application_id           => p_application_id
115542          , p_ae_header_id             => l_ae_header_id 
115543 , p_source_11 => p_source_11
115544 , p_source_15 => p_source_15
115545 , p_source_39 => p_source_39
115546 , p_source_39_meaning => p_source_39_meaning
115547 , p_source_41 => p_source_41
115548 , p_source_42 => p_source_42
115549 , p_source_43 => p_source_43
115550 , p_source_44 => p_source_44
115551 , p_source_45 => p_source_45
115552          , x_transaction_coa_id       => l_adr_transaction_coa_id
115553          , x_accounting_coa_id        => l_adr_accounting_coa_id
115554          , x_value_type_code          => l_adr_value_type_code
115555          , p_side                     => 'NA'
115556    );
115557 
115558    xla_ae_lines_pkg.set_ccid(
115559     p_code_combination_id          => l_ccid
115560   , p_value_type_code              => l_adr_value_type_code
115561   , p_transaction_coa_id           => l_adr_transaction_coa_id
115562   , p_accounting_coa_id            => l_adr_accounting_coa_id
115563   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
115564   , p_adr_type_code                => 'S'
115565   , p_component_type               => l_component_type
115566   , p_component_code               => l_component_code
115567   , p_component_type_code          => l_component_type_code
115568   , p_component_appl_id            => l_component_appl_id
115569   , p_amb_context_code             => l_amb_context_code
115570   , p_side                         => 'NA'
115571   );
115572 
115573 
115574    --
115575    --
115576    END IF;
115577 
115578        --
115579        -- Update the line information that should be overwritten
115580        --
115581        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115582                                          p_header_num   => 1);
115583        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
115584 
115585        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115586 
115587        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
115588           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115589        END IF;
115590 
115591       --
115592       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115593       --
115594       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115595           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
115596       ELSE
115597           ---------------------------------------------------------------------------------------------------
115598           -- 4262811a Switch Sign
115599           ---------------------------------------------------------------------------------------------------
115600           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
115601           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115602                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115603           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115604                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115605           -- 5132302
115606           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
115607                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115608 
115609       END IF;
115610 
115611       -- 4955764
115612       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115613       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115614 
115615 
115616       XLA_AE_LINES_PKG.ValidateCurrentLine;
115617       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115618 
115619       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115620                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115621                ,p_balance_type_code => l_balance_type_code);
115622 
115623    END IF;
115624 
115625    -----------------------------------------------------------------------------------------
115626    -- 4262811 Multiperiod Accounting
115627    -----------------------------------------------------------------------------------------
115628      -- No MPA option is assigned.
115629 
115630 
115631 END IF;
115632 END IF;
115633 --
115634 
115635 --
115636 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115637    trace
115638       (p_msg      => 'END of AcctLineType_225'
115639       ,p_level    => C_LEVEL_PROCEDURE
115640       ,p_module   => l_log_module);
115641 END IF;
115642 --
115643 EXCEPTION
115644   WHEN xla_exceptions_pkg.application_exception THEN
115645       RAISE;
115646   WHEN OTHERS THEN
115647        xla_exceptions_pkg.raise_message
115648            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_225');
115649 END AcctLineType_225;
115650 --
115651 
115652 ---------------------------------------
115653 --
115654 -- PRIVATE FUNCTION
115655 --         AcctLineType_226
115656 --
115657 ---------------------------------------
115658 PROCEDURE AcctLineType_226 (
115659   p_application_id        IN NUMBER
115660  ,p_event_id              IN NUMBER
115661  ,p_calculate_acctd_flag  IN VARCHAR2
115662  ,p_calculate_g_l_flag    IN VARCHAR2
115663  ,p_actual_flag           IN OUT VARCHAR2
115664  ,p_balance_type_code     OUT VARCHAR2
115665  ,p_gain_or_loss_ref      OUT VARCHAR2
115666  
115667 --TRANSACTION_ID
115668  , p_source_1            IN NUMBER
115669 --Item Concatenated Segments
115670  , p_source_2            IN VARCHAR2
115671 --Transaction Quantity
115672  , p_source_3            IN NUMBER
115673 --Transaction Unit of Measure Code
115674  , p_source_4            IN VARCHAR2
115675 --Inventory Transaction Type Description
115676  , p_source_5            IN VARCHAR2
115677 --Cost Management Default Account
115678  , p_source_11            IN NUMBER
115679 --Cost Element Name
115680  , p_source_15            IN NUMBER
115681 --Primary Cost Method
115682  , p_source_39            IN NUMBER
115683  , p_source_39_meaning    IN VARCHAR2
115684 --Product Line Accounting Category Material Account
115685  , p_source_41            IN NUMBER
115686 --Product Line Accounting Category Material Overhead Account
115687  , p_source_42            IN NUMBER
115688 --Product Line Accounting Category Resource Account
115689  , p_source_43            IN NUMBER
115690 --Product Line Accounting Category Outside Processing Account
115691  , p_source_44            IN NUMBER
115692 --Product Line Accounting Category Overhead Account
115693  , p_source_45            IN NUMBER
115694 --DISTRIBUTION_IDENTIFIER
115695  , p_source_84            IN NUMBER
115696 --Distribution Type
115697  , p_source_85            IN VARCHAR2
115698  , p_source_85_meaning    IN VARCHAR2
115699 --Entered Currency Code
115700  , p_source_88            IN VARCHAR2
115701 --Entered Amount
115702  , p_source_91            IN NUMBER
115703 --Currency Conversion Date
115704  , p_source_92            IN DATE
115705 --Currency Conversion Rate
115706  , p_source_93            IN NUMBER
115707 --Currency Conversion Type
115708  , p_source_94            IN VARCHAR2
115709 --Accounted Amount
115710  , p_source_95            IN NUMBER
115711 --Accounting Line Type
115712  , p_source_97            IN NUMBER
115713 )
115714 IS
115715 
115716 l_component_type              VARCHAR2(80);
115717 l_component_code              VARCHAR2(30);
115718 l_component_type_code         VARCHAR2(1);
115719 l_component_appl_id           INTEGER;
115720 l_amb_context_code            VARCHAR2(30);
115721 l_entity_code                 VARCHAR2(30);
115722 l_event_class_code            VARCHAR2(30);
115723 l_ae_header_id                NUMBER;
115724 l_event_type_code             VARCHAR2(30);
115725 l_line_definition_code        VARCHAR2(30);
115726 l_line_definition_owner_code  VARCHAR2(1);
115727 --
115728 -- adr variables
115729 l_segment                     VARCHAR2(30);
115730 l_ccid                        NUMBER;
115731 l_adr_transaction_coa_id      NUMBER;
115732 l_adr_accounting_coa_id       NUMBER;
115733 l_adr_flexfield_segment_code  VARCHAR2(30);
115734 l_adr_flex_value_set_id       NUMBER;
115735 l_adr_value_type_code         VARCHAR2(30);
115736 l_adr_value_combination_id    NUMBER;
115737 l_adr_value_segment_code      VARCHAR2(30);
115738 
115739 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
115740 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
115741 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
115742 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
115743 
115744 -- 4262811 Variables ------------------------------------------------------------------------------------------
115745 l_entered_amt_idx             NUMBER;
115746 l_accted_amt_idx              NUMBER;
115747 l_acc_rev_flag                VARCHAR2(1);
115748 l_accrual_line_num            NUMBER;
115749 l_tmp_amt                     NUMBER;
115750 l_acc_rev_natural_side_code   VARCHAR2(1);
115751 
115752 l_num_entries                 NUMBER;
115753 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
115754 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
115755 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
115756 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
115757 l_recog_line_1                NUMBER;
115758 l_recog_line_2                NUMBER;
115759 
115760 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
115761 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
115762 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
115763 
115764 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115765 
115766 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
115767 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
115768 
115769 ---------------------------------------------------------------------------------------------------------------
115770 
115771 
115772 --
115773 -- bulk performance
115774 --
115775 l_balance_type_code           VARCHAR2(1);
115776 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
115777 l_log_module                  VARCHAR2(240);
115778 
115779 --
115780 -- Upgrade strategy
115781 --
115782 l_actual_upg_option           VARCHAR2(1);
115783 l_enc_upg_option           VARCHAR2(1);
115784 
115785 --
115786 BEGIN
115787 --
115788 IF g_log_enabled THEN
115789       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_226';
115790 END IF;
115791 --
115792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115793 
115794       trace
115795          (p_msg      => 'BEGIN of AcctLineType_226'
115796          ,p_level    => C_LEVEL_PROCEDURE
115797          ,p_module   => l_log_module);
115798 
115799 END IF;
115800 --
115801 l_component_type             := 'AMB_JLT';
115802 l_component_code             := 'INTRANSIT_VALUATION';
115803 l_component_type_code        := 'S';
115804 l_component_appl_id          :=  707;
115805 l_amb_context_code           := 'DEFAULT';
115806 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
115807 l_event_class_code           := 'USER_DEFINE';
115808 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
115809 l_line_definition_owner_code := 'S';
115810 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
115811 --
115812 l_balance_type_code          := 'A';
115813 l_segment                     := NULL;
115814 l_ccid                        := NULL;
115815 l_adr_transaction_coa_id      := NULL;
115816 l_adr_accounting_coa_id       := NULL;
115817 l_adr_flexfield_segment_code  := NULL;
115818 l_adr_flex_value_set_id       := NULL;
115819 l_adr_value_type_code         := NULL;
115820 l_adr_value_combination_id    := NULL;
115821 l_adr_value_segment_code      := NULL;
115822 
115823 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
115824 l_bflow_class_code           := '';    -- 4219869 Business Flow
115825 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
115826 l_budgetary_control_flag     := 'N';
115827 
115828 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
115829 l_bflow_applied_to_amt       := NULL; -- 5132302
115830 l_entered_amt_idx            := NULL;          -- 4262811
115831 l_accted_amt_idx             := NULL;          -- 4262811
115832 l_acc_rev_flag               := NULL;          -- 4262811
115833 l_accrual_line_num           := NULL;          -- 4262811
115834 l_tmp_amt                    := NULL;          -- 4262811
115835 --
115836  
115837 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115838     l_balance_type_code <> 'B' THEN
115839 IF NVL(p_source_97,9E125) =  14
115840  THEN 
115841 
115842    --
115843    XLA_AE_LINES_PKG.SetNewLine;
115844 
115845    p_balance_type_code          := l_balance_type_code;
115846    -- set the flag so later we will know whether the gain loss line needs to be created
115847    
115848    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115849      p_actual_flag :='A';
115850    END IF;
115851 
115852    --
115853    -- bulk performance
115854    --
115855    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115856                                       p_header_num   => 0); -- 4262811
115857    --
115858    -- set accounting line options
115859    --
115860    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115861            p_natural_side_code          => 'D'
115862          , p_gain_or_loss_flag          => 'N'
115863          , p_gl_transfer_mode_code      => 'S'
115864          , p_acct_entry_type_code       => 'A'
115865          , p_switch_side_flag           => 'Y'
115866          , p_merge_duplicate_code       => 'N'
115867          );
115868    --
115869    l_acc_rev_natural_side_code := 'C';  -- 4262811
115870    -- 
115871    --
115872    -- set accounting line type info
115873    --
115874    xla_ae_lines_pkg.SetAcctLineType
115875       (p_component_type             => l_component_type
115876       ,p_event_type_code            => l_event_type_code
115877       ,p_line_definition_owner_code => l_line_definition_owner_code
115878       ,p_line_definition_code       => l_line_definition_code
115879       ,p_accounting_line_code       => l_component_code
115880       ,p_accounting_line_type_code  => l_component_type_code
115881       ,p_accounting_line_appl_id    => l_component_appl_id
115882       ,p_amb_context_code           => l_amb_context_code
115883       ,p_entity_code                => l_entity_code
115884       ,p_event_class_code           => l_event_class_code);
115885    --
115886    -- set accounting class
115887    --
115888    xla_ae_lines_pkg.SetAcctClass(
115889            p_accounting_class_code  => 'INTRANSIT_VALUATION'
115890          , p_ae_header_id           => l_ae_header_id
115891          );
115892 
115893    --
115894    -- set rounding class
115895    --
115896    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115897                       'INTRANSIT_VALUATION';
115898 
115899    --
115900    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115901    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115902    --
115903    -- bulk performance
115904    --
115905    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115906 
115907    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115908       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115909 
115910    -- 4955764
115911    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115913 
115914    -- 4458381 Public Sector Enh
115915    
115916    --
115917    -- set accounting attributes for the line type
115918    --
115919    l_entered_amt_idx := 3;
115920    l_accted_amt_idx  := 8;
115921    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
115922    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115923    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
115924    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115925    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
115926    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115927    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
115928    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115929    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
115930    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115931    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
115932    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115933    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
115934    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115935    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
115936    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115937    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
115938 
115939    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115940    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115941 
115942    ---------------------------------------------------------------------------------------------------------------
115943    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115944    ---------------------------------------------------------------------------------------------------------------
115945    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115946 
115947    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115948    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115949 
115950    IF xla_accounting_cache_pkg.GetValueChar
115951          (p_source_code         => 'LEDGER_CATEGORY_CODE'
115952          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115953    AND l_bflow_method_code = 'PRIOR_ENTRY'
115954 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115955    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115956          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115957        )
115958    THEN
115959          xla_ae_lines_pkg.BflowUpgEntry
115960            (p_business_method_code    => l_bflow_method_code
115961            ,p_business_class_code     => l_bflow_class_code
115962            ,p_balance_type            => l_balance_type_code);
115963    ELSE
115964       NULL;
115965 -- No business flow processing for business flow method of NONE.
115966    END IF;
115967 
115968    --
115969    -- call analytical criteria
115970    --
115971    
115972    --
115973    -- call description
115974    --
115975    
115976 xla_ae_lines_pkg.SetLineDescription(
115977    p_ae_header_id => l_ae_header_id
115978   ,p_description  => Description_1 (
115979      p_application_id         => p_application_id
115980    , p_ae_header_id           => l_ae_header_id 
115981 , p_source_1 => p_source_1
115982 , p_source_2 => p_source_2
115983 , p_source_3 => p_source_3
115984 , p_source_4 => p_source_4
115985 , p_source_5 => p_source_5
115986    )
115987 );
115988 
115989 
115990    --
115991    -- call ADRs
115992    -- Bug 4922099
115993    --
115994    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115995         (NVL(l_actual_upg_option, 'N') = 'O') OR
115996         (NVL(l_enc_upg_option, 'N') = 'O')
115997       )
115998    THEN
115999    NULL;
116000    --
116001    --
116002    
116003   l_ccid := AcctDerRule_25(
116004            p_application_id           => p_application_id
116005          , p_ae_header_id             => l_ae_header_id 
116006 , p_source_11 => p_source_11
116007 , p_source_15 => p_source_15
116008 , p_source_39 => p_source_39
116009 , p_source_39_meaning => p_source_39_meaning
116010 , p_source_41 => p_source_41
116011 , p_source_42 => p_source_42
116012 , p_source_43 => p_source_43
116013 , p_source_44 => p_source_44
116014 , p_source_45 => p_source_45
116015          , x_transaction_coa_id       => l_adr_transaction_coa_id
116016          , x_accounting_coa_id        => l_adr_accounting_coa_id
116017          , x_value_type_code          => l_adr_value_type_code
116018          , p_side                     => 'NA'
116019    );
116020 
116021    xla_ae_lines_pkg.set_ccid(
116022     p_code_combination_id          => l_ccid
116023   , p_value_type_code              => l_adr_value_type_code
116024   , p_transaction_coa_id           => l_adr_transaction_coa_id
116025   , p_accounting_coa_id            => l_adr_accounting_coa_id
116026   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
116027   , p_adr_type_code                => 'S'
116028   , p_component_type               => l_component_type
116029   , p_component_code               => l_component_code
116030   , p_component_type_code          => l_component_type_code
116031   , p_component_appl_id            => l_component_appl_id
116032   , p_amb_context_code             => l_amb_context_code
116033   , p_side                         => 'NA'
116034   );
116035 
116036 
116037    --
116038    --
116039    END IF;
116040    --
116041    -- Bug 4922099
116042    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116043           (NVL(l_enc_upg_option, 'N') = 'O')
116044         ) AND
116045         (l_bflow_method_code = 'PRIOR_ENTRY')
116046       )
116047    THEN
116048       IF
116049       --
116050       1 = 2
116051       --
116052       THEN
116053       xla_accounting_err_pkg.build_message
116054                                     (p_appli_s_name            => 'XLA'
116055                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116056                                     ,p_token_1                 => 'LINE_NUMBER'
116057                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
116058                                     ,p_token_2                 => 'LINE_TYPE_NAME'
116059                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
116060                                                                              l_component_type
116061                                                                             ,l_component_code
116062                                                                             ,l_component_type_code
116063                                                                             ,l_component_appl_id
116064                                                                             ,l_amb_context_code
116065                                                                             ,l_entity_code
116066                                                                             ,l_event_class_code
116067                                                                            )
116068                                     ,p_token_3                 => 'OWNER'
116069                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
116070                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
116071                                                                           ,p_lookup_code    => l_component_type_code
116072                                                                          )
116073                                     ,p_token_4                 => 'PRODUCT_NAME'
116074                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116075                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116076                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116077                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116078                                     ,p_ae_header_id            =>  NULL
116079                                        );
116080 
116081         IF (C_LEVEL_ERROR>= g_log_level) THEN
116082                  trace
116083                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116084                       ,p_level    => C_LEVEL_ERROR
116085                       ,p_module   => l_log_module);
116086         END IF;
116087       END IF;
116088    END IF;
116089    --
116090    --
116091    ------------------------------------------------------------------------------------------------
116092    -- 4219869 Business Flow
116093    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116094    -- Prior Entry.  Currently, the following code is always generated.
116095    ------------------------------------------------------------------------------------------------
116096    XLA_AE_LINES_PKG.ValidateCurrentLine;
116097 
116098    ------------------------------------------------------------------------------------
116099    -- 4219869 Business Flow
116100    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116101    ------------------------------------------------------------------------------------
116102    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116103 
116104    ----------------------------------------------------------------------------------
116105    -- 4219869 Business Flow
116106    -- Update journal entry status -- Need to generate this within IF <condition>
116107    ----------------------------------------------------------------------------------
116108    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116109          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116110          ,p_balance_type_code => l_balance_type_code
116111          );
116112 
116113    -------------------------------------------------------------------------------------------
116114    -- 4262811 - Generate the Accrual Reversal lines
116115    -------------------------------------------------------------------------------------------
116116    BEGIN
116117       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116118                               (g_array_event(p_event_id).array_value_num('header_index'));
116119       IF l_acc_rev_flag IS NULL THEN
116120          l_acc_rev_flag := 'N';
116121       END IF;
116122    EXCEPTION
116123       WHEN OTHERS THEN
116124          l_acc_rev_flag := 'N';
116125    END;
116126    --
116127    IF (l_acc_rev_flag = 'Y') THEN
116128 
116129        -- 4645092  ------------------------------------------------------------------------------
116130        -- To allow MPA report to determine if it should generate report process
116131        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116132        ------------------------------------------------------------------------------------------
116133 
116134        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116135        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116136    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
116137    -- call ADRs
116138    -- Bug 4922099
116139    --
116140    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116141         (NVL(l_actual_upg_option, 'N') = 'O') OR
116142         (NVL(l_enc_upg_option, 'N') = 'O')
116143       )
116144    THEN
116145    NULL;
116146    --
116147    --
116148    
116149   l_ccid := AcctDerRule_25(
116150            p_application_id           => p_application_id
116151          , p_ae_header_id             => l_ae_header_id 
116152 , p_source_11 => p_source_11
116153 , p_source_15 => p_source_15
116154 , p_source_39 => p_source_39
116155 , p_source_39_meaning => p_source_39_meaning
116156 , p_source_41 => p_source_41
116157 , p_source_42 => p_source_42
116158 , p_source_43 => p_source_43
116159 , p_source_44 => p_source_44
116160 , p_source_45 => p_source_45
116161          , x_transaction_coa_id       => l_adr_transaction_coa_id
116162          , x_accounting_coa_id        => l_adr_accounting_coa_id
116163          , x_value_type_code          => l_adr_value_type_code
116164          , p_side                     => 'NA'
116165    );
116166 
116167    xla_ae_lines_pkg.set_ccid(
116168     p_code_combination_id          => l_ccid
116169   , p_value_type_code              => l_adr_value_type_code
116170   , p_transaction_coa_id           => l_adr_transaction_coa_id
116171   , p_accounting_coa_id            => l_adr_accounting_coa_id
116172   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
116173   , p_adr_type_code                => 'S'
116174   , p_component_type               => l_component_type
116175   , p_component_code               => l_component_code
116176   , p_component_type_code          => l_component_type_code
116177   , p_component_appl_id            => l_component_appl_id
116178   , p_amb_context_code             => l_amb_context_code
116179   , p_side                         => 'NA'
116180   );
116181 
116182 
116183    --
116184    --
116185    END IF;
116186 
116187        --
116188        -- Update the line information that should be overwritten
116189        --
116190        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116191                                          p_header_num   => 1);
116192        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
116193 
116194        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116195 
116196        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
116197           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116198        END IF;
116199 
116200       --
116201       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116202       --
116203       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116204           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
116205       ELSE
116206           ---------------------------------------------------------------------------------------------------
116207           -- 4262811a Switch Sign
116208           ---------------------------------------------------------------------------------------------------
116209           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116210           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116211                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116212           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116213                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116214           -- 5132302
116215           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116216                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116217 
116218       END IF;
116219 
116220       -- 4955764
116221       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116222       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116223 
116224 
116225       XLA_AE_LINES_PKG.ValidateCurrentLine;
116226       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116227 
116228       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116229                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116230                ,p_balance_type_code => l_balance_type_code);
116231 
116232    END IF;
116233 
116234    -----------------------------------------------------------------------------------------
116235    -- 4262811 Multiperiod Accounting
116236    -----------------------------------------------------------------------------------------
116237      -- No MPA option is assigned.
116238 
116239 
116240 END IF;
116241 END IF;
116242 --
116243 
116244 --
116245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116246    trace
116247       (p_msg      => 'END of AcctLineType_226'
116248       ,p_level    => C_LEVEL_PROCEDURE
116249       ,p_module   => l_log_module);
116250 END IF;
116251 --
116252 EXCEPTION
116253   WHEN xla_exceptions_pkg.application_exception THEN
116254       RAISE;
116255   WHEN OTHERS THEN
116256        xla_exceptions_pkg.raise_message
116257            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_226');
116258 END AcctLineType_226;
116259 --
116260 
116261 ---------------------------------------
116262 --
116263 -- PRIVATE FUNCTION
116264 --         AcctLineType_227
116265 --
116266 ---------------------------------------
116267 PROCEDURE AcctLineType_227 (
116268   p_application_id        IN NUMBER
116269  ,p_event_id              IN NUMBER
116270  ,p_calculate_acctd_flag  IN VARCHAR2
116271  ,p_calculate_g_l_flag    IN VARCHAR2
116272  ,p_actual_flag           IN OUT VARCHAR2
116273  ,p_balance_type_code     OUT VARCHAR2
116274  ,p_gain_or_loss_ref      OUT VARCHAR2
116275  
116276 --TRANSACTION_ID
116277  , p_source_1            IN NUMBER
116278 --Item Concatenated Segments
116279  , p_source_2            IN VARCHAR2
116280 --Transaction Quantity
116281  , p_source_3            IN NUMBER
116282 --Transaction Unit of Measure Code
116283  , p_source_4            IN VARCHAR2
116284 --Inventory Transaction Type Description
116285  , p_source_5            IN VARCHAR2
116286 --Cost Management Default Account
116287  , p_source_11            IN NUMBER
116288 --DISTRIBUTION_IDENTIFIER
116289  , p_source_84            IN NUMBER
116290 --Distribution Type
116291  , p_source_85            IN VARCHAR2
116292  , p_source_85_meaning    IN VARCHAR2
116293 --Entered Currency Code
116294  , p_source_88            IN VARCHAR2
116295 --Entered Amount
116296  , p_source_91            IN NUMBER
116297 --Currency Conversion Date
116298  , p_source_92            IN DATE
116299 --Currency Conversion Rate
116300  , p_source_93            IN NUMBER
116301 --Currency Conversion Type
116302  , p_source_94            IN VARCHAR2
116303 --Accounted Amount
116304  , p_source_95            IN NUMBER
116305 --Accounting Line Type
116306  , p_source_97            IN NUMBER
116307 )
116308 IS
116309 
116310 l_component_type              VARCHAR2(80);
116311 l_component_code              VARCHAR2(30);
116312 l_component_type_code         VARCHAR2(1);
116313 l_component_appl_id           INTEGER;
116314 l_amb_context_code            VARCHAR2(30);
116315 l_entity_code                 VARCHAR2(30);
116316 l_event_class_code            VARCHAR2(30);
116317 l_ae_header_id                NUMBER;
116318 l_event_type_code             VARCHAR2(30);
116319 l_line_definition_code        VARCHAR2(30);
116320 l_line_definition_owner_code  VARCHAR2(1);
116321 --
116322 -- adr variables
116323 l_segment                     VARCHAR2(30);
116324 l_ccid                        NUMBER;
116325 l_adr_transaction_coa_id      NUMBER;
116326 l_adr_accounting_coa_id       NUMBER;
116327 l_adr_flexfield_segment_code  VARCHAR2(30);
116328 l_adr_flex_value_set_id       NUMBER;
116329 l_adr_value_type_code         VARCHAR2(30);
116330 l_adr_value_combination_id    NUMBER;
116331 l_adr_value_segment_code      VARCHAR2(30);
116332 
116333 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116334 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116335 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116336 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116337 
116338 -- 4262811 Variables ------------------------------------------------------------------------------------------
116339 l_entered_amt_idx             NUMBER;
116340 l_accted_amt_idx              NUMBER;
116341 l_acc_rev_flag                VARCHAR2(1);
116342 l_accrual_line_num            NUMBER;
116343 l_tmp_amt                     NUMBER;
116344 l_acc_rev_natural_side_code   VARCHAR2(1);
116345 
116346 l_num_entries                 NUMBER;
116347 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116348 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116349 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116350 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116351 l_recog_line_1                NUMBER;
116352 l_recog_line_2                NUMBER;
116353 
116354 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116355 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116356 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116357 
116358 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116359 
116360 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116361 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116362 
116363 ---------------------------------------------------------------------------------------------------------------
116364 
116365 
116366 --
116367 -- bulk performance
116368 --
116369 l_balance_type_code           VARCHAR2(1);
116370 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116371 l_log_module                  VARCHAR2(240);
116372 
116373 --
116374 -- Upgrade strategy
116375 --
116376 l_actual_upg_option           VARCHAR2(1);
116377 l_enc_upg_option           VARCHAR2(1);
116378 
116379 --
116380 BEGIN
116381 --
116382 IF g_log_enabled THEN
116383       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_227';
116384 END IF;
116385 --
116386 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116387 
116388       trace
116389          (p_msg      => 'BEGIN of AcctLineType_227'
116390          ,p_level    => C_LEVEL_PROCEDURE
116391          ,p_module   => l_log_module);
116392 
116393 END IF;
116394 --
116395 l_component_type             := 'AMB_JLT';
116396 l_component_code             := 'INTRANSIT_VALUATION';
116397 l_component_type_code        := 'S';
116398 l_component_appl_id          :=  707;
116399 l_amb_context_code           := 'DEFAULT';
116400 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
116401 l_event_class_code           := 'USER_DEFINE';
116402 l_event_type_code            := 'UAVG_COST_UPD';
116403 l_line_definition_owner_code := 'S';
116404 l_line_definition_code       := 'PI_COST_UPD';
116405 --
116406 l_balance_type_code          := 'A';
116407 l_segment                     := NULL;
116408 l_ccid                        := NULL;
116409 l_adr_transaction_coa_id      := NULL;
116410 l_adr_accounting_coa_id       := NULL;
116411 l_adr_flexfield_segment_code  := NULL;
116412 l_adr_flex_value_set_id       := NULL;
116413 l_adr_value_type_code         := NULL;
116414 l_adr_value_combination_id    := NULL;
116415 l_adr_value_segment_code      := NULL;
116416 
116417 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
116418 l_bflow_class_code           := '';    -- 4219869 Business Flow
116419 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
116420 l_budgetary_control_flag     := 'N';
116421 
116422 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
116423 l_bflow_applied_to_amt       := NULL; -- 5132302
116424 l_entered_amt_idx            := NULL;          -- 4262811
116425 l_accted_amt_idx             := NULL;          -- 4262811
116426 l_acc_rev_flag               := NULL;          -- 4262811
116427 l_accrual_line_num           := NULL;          -- 4262811
116428 l_tmp_amt                    := NULL;          -- 4262811
116429 --
116430  
116431 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116432     l_balance_type_code <> 'B' THEN
116433 IF NVL(p_source_97,9E125) =  14
116434  THEN 
116435 
116436    --
116437    XLA_AE_LINES_PKG.SetNewLine;
116438 
116439    p_balance_type_code          := l_balance_type_code;
116440    -- set the flag so later we will know whether the gain loss line needs to be created
116441    
116442    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116443      p_actual_flag :='A';
116444    END IF;
116445 
116446    --
116447    -- bulk performance
116448    --
116449    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116450                                       p_header_num   => 0); -- 4262811
116451    --
116452    -- set accounting line options
116453    --
116454    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116455            p_natural_side_code          => 'D'
116456          , p_gain_or_loss_flag          => 'N'
116457          , p_gl_transfer_mode_code      => 'S'
116458          , p_acct_entry_type_code       => 'A'
116459          , p_switch_side_flag           => 'Y'
116460          , p_merge_duplicate_code       => 'N'
116461          );
116462    --
116463    l_acc_rev_natural_side_code := 'C';  -- 4262811
116464    -- 
116465    --
116466    -- set accounting line type info
116467    --
116468    xla_ae_lines_pkg.SetAcctLineType
116469       (p_component_type             => l_component_type
116470       ,p_event_type_code            => l_event_type_code
116471       ,p_line_definition_owner_code => l_line_definition_owner_code
116472       ,p_line_definition_code       => l_line_definition_code
116473       ,p_accounting_line_code       => l_component_code
116474       ,p_accounting_line_type_code  => l_component_type_code
116475       ,p_accounting_line_appl_id    => l_component_appl_id
116476       ,p_amb_context_code           => l_amb_context_code
116477       ,p_entity_code                => l_entity_code
116478       ,p_event_class_code           => l_event_class_code);
116479    --
116480    -- set accounting class
116481    --
116482    xla_ae_lines_pkg.SetAcctClass(
116483            p_accounting_class_code  => 'INTRANSIT_VALUATION'
116484          , p_ae_header_id           => l_ae_header_id
116485          );
116486 
116487    --
116488    -- set rounding class
116489    --
116490    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116491                       'INTRANSIT_VALUATION';
116492 
116493    --
116494    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116495    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116496    --
116497    -- bulk performance
116498    --
116499    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116500 
116501    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116502       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116503 
116504    -- 4955764
116505    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116506       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116507 
116508    -- 4458381 Public Sector Enh
116509    
116510    --
116511    -- set accounting attributes for the line type
116512    --
116513    l_entered_amt_idx := 3;
116514    l_accted_amt_idx  := 8;
116515    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
116516    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116517    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
116518    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116519    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
116520    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116521    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
116522    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116523    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
116524    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116525    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
116526    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116527    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
116528    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116529    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
116530    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116531    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
116532 
116533    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116534    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116535 
116536    ---------------------------------------------------------------------------------------------------------------
116537    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116538    ---------------------------------------------------------------------------------------------------------------
116539    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116540 
116541    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116542    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116543 
116544    IF xla_accounting_cache_pkg.GetValueChar
116545          (p_source_code         => 'LEDGER_CATEGORY_CODE'
116546          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116547    AND l_bflow_method_code = 'PRIOR_ENTRY'
116548 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116549    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116550          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116551        )
116552    THEN
116553          xla_ae_lines_pkg.BflowUpgEntry
116554            (p_business_method_code    => l_bflow_method_code
116555            ,p_business_class_code     => l_bflow_class_code
116556            ,p_balance_type            => l_balance_type_code);
116557    ELSE
116558       NULL;
116559 -- No business flow processing for business flow method of NONE.
116560    END IF;
116561 
116562    --
116563    -- call analytical criteria
116564    --
116565    
116566    --
116567    -- call description
116568    --
116569    
116570 xla_ae_lines_pkg.SetLineDescription(
116571    p_ae_header_id => l_ae_header_id
116572   ,p_description  => Description_1 (
116573      p_application_id         => p_application_id
116574    , p_ae_header_id           => l_ae_header_id 
116575 , p_source_1 => p_source_1
116576 , p_source_2 => p_source_2
116577 , p_source_3 => p_source_3
116578 , p_source_4 => p_source_4
116579 , p_source_5 => p_source_5
116580    )
116581 );
116582 
116583 
116584    --
116585    -- call ADRs
116586    -- Bug 4922099
116587    --
116588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116589         (NVL(l_actual_upg_option, 'N') = 'O') OR
116590         (NVL(l_enc_upg_option, 'N') = 'O')
116591       )
116592    THEN
116593    NULL;
116594    --
116595    --
116596    
116597   l_ccid := AcctDerRule_6(
116598            p_application_id           => p_application_id
116599          , p_ae_header_id             => l_ae_header_id 
116600 , p_source_11 => p_source_11
116601          , x_transaction_coa_id       => l_adr_transaction_coa_id
116602          , x_accounting_coa_id        => l_adr_accounting_coa_id
116603          , x_value_type_code          => l_adr_value_type_code
116604          , p_side                     => 'NA'
116605    );
116606 
116607    xla_ae_lines_pkg.set_ccid(
116608     p_code_combination_id          => l_ccid
116609   , p_value_type_code              => l_adr_value_type_code
116610   , p_transaction_coa_id           => l_adr_transaction_coa_id
116611   , p_accounting_coa_id            => l_adr_accounting_coa_id
116612   , p_adr_code                     => 'CST_DEFAULT'
116613   , p_adr_type_code                => 'S'
116614   , p_component_type               => l_component_type
116615   , p_component_code               => l_component_code
116616   , p_component_type_code          => l_component_type_code
116617   , p_component_appl_id            => l_component_appl_id
116618   , p_amb_context_code             => l_amb_context_code
116619   , p_side                         => 'NA'
116620   );
116621 
116622 
116623    --
116624    --
116625    END IF;
116626    --
116627    -- Bug 4922099
116628    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116629           (NVL(l_enc_upg_option, 'N') = 'O')
116630         ) AND
116631         (l_bflow_method_code = 'PRIOR_ENTRY')
116632       )
116633    THEN
116634       IF
116635       --
116636       1 = 2
116637       --
116638       THEN
116639       xla_accounting_err_pkg.build_message
116640                                     (p_appli_s_name            => 'XLA'
116641                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116642                                     ,p_token_1                 => 'LINE_NUMBER'
116643                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
116644                                     ,p_token_2                 => 'LINE_TYPE_NAME'
116645                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
116646                                                                              l_component_type
116647                                                                             ,l_component_code
116648                                                                             ,l_component_type_code
116649                                                                             ,l_component_appl_id
116650                                                                             ,l_amb_context_code
116651                                                                             ,l_entity_code
116652                                                                             ,l_event_class_code
116653                                                                            )
116654                                     ,p_token_3                 => 'OWNER'
116655                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
116656                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
116657                                                                           ,p_lookup_code    => l_component_type_code
116658                                                                          )
116659                                     ,p_token_4                 => 'PRODUCT_NAME'
116660                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116661                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116662                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116663                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116664                                     ,p_ae_header_id            =>  NULL
116665                                        );
116666 
116667         IF (C_LEVEL_ERROR>= g_log_level) THEN
116668                  trace
116669                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116670                       ,p_level    => C_LEVEL_ERROR
116671                       ,p_module   => l_log_module);
116672         END IF;
116673       END IF;
116674    END IF;
116675    --
116676    --
116677    ------------------------------------------------------------------------------------------------
116678    -- 4219869 Business Flow
116679    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116680    -- Prior Entry.  Currently, the following code is always generated.
116681    ------------------------------------------------------------------------------------------------
116682    XLA_AE_LINES_PKG.ValidateCurrentLine;
116683 
116684    ------------------------------------------------------------------------------------
116685    -- 4219869 Business Flow
116686    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116687    ------------------------------------------------------------------------------------
116688    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116689 
116690    ----------------------------------------------------------------------------------
116691    -- 4219869 Business Flow
116692    -- Update journal entry status -- Need to generate this within IF <condition>
116693    ----------------------------------------------------------------------------------
116694    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116695          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116696          ,p_balance_type_code => l_balance_type_code
116697          );
116698 
116699    -------------------------------------------------------------------------------------------
116700    -- 4262811 - Generate the Accrual Reversal lines
116701    -------------------------------------------------------------------------------------------
116702    BEGIN
116703       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116704                               (g_array_event(p_event_id).array_value_num('header_index'));
116705       IF l_acc_rev_flag IS NULL THEN
116706          l_acc_rev_flag := 'N';
116707       END IF;
116708    EXCEPTION
116709       WHEN OTHERS THEN
116710          l_acc_rev_flag := 'N';
116711    END;
116712    --
116713    IF (l_acc_rev_flag = 'Y') THEN
116714 
116715        -- 4645092  ------------------------------------------------------------------------------
116716        -- To allow MPA report to determine if it should generate report process
116717        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116718        ------------------------------------------------------------------------------------------
116719 
116720        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116721        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116722    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
116723    -- call ADRs
116724    -- Bug 4922099
116725    --
116726    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116727         (NVL(l_actual_upg_option, 'N') = 'O') OR
116728         (NVL(l_enc_upg_option, 'N') = 'O')
116729       )
116730    THEN
116731    NULL;
116732    --
116733    --
116734    
116735   l_ccid := AcctDerRule_6(
116736            p_application_id           => p_application_id
116737          , p_ae_header_id             => l_ae_header_id 
116738 , p_source_11 => p_source_11
116739          , x_transaction_coa_id       => l_adr_transaction_coa_id
116740          , x_accounting_coa_id        => l_adr_accounting_coa_id
116741          , x_value_type_code          => l_adr_value_type_code
116742          , p_side                     => 'NA'
116743    );
116744 
116745    xla_ae_lines_pkg.set_ccid(
116746     p_code_combination_id          => l_ccid
116747   , p_value_type_code              => l_adr_value_type_code
116748   , p_transaction_coa_id           => l_adr_transaction_coa_id
116749   , p_accounting_coa_id            => l_adr_accounting_coa_id
116750   , p_adr_code                     => 'CST_DEFAULT'
116751   , p_adr_type_code                => 'S'
116752   , p_component_type               => l_component_type
116753   , p_component_code               => l_component_code
116754   , p_component_type_code          => l_component_type_code
116755   , p_component_appl_id            => l_component_appl_id
116756   , p_amb_context_code             => l_amb_context_code
116757   , p_side                         => 'NA'
116758   );
116759 
116760 
116761    --
116762    --
116763    END IF;
116764 
116765        --
116766        -- Update the line information that should be overwritten
116767        --
116768        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116769                                          p_header_num   => 1);
116770        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
116771 
116772        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116773 
116774        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
116775           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116776        END IF;
116777 
116778       --
116779       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116780       --
116781       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116782           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
116783       ELSE
116784           ---------------------------------------------------------------------------------------------------
116785           -- 4262811a Switch Sign
116786           ---------------------------------------------------------------------------------------------------
116787           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
116788           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116789                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116790           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116791                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116792           -- 5132302
116793           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116794                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116795 
116796       END IF;
116797 
116798       -- 4955764
116799       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116801 
116802 
116803       XLA_AE_LINES_PKG.ValidateCurrentLine;
116804       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116805 
116806       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116807                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116808                ,p_balance_type_code => l_balance_type_code);
116809 
116810    END IF;
116811 
116812    -----------------------------------------------------------------------------------------
116813    -- 4262811 Multiperiod Accounting
116814    -----------------------------------------------------------------------------------------
116815      -- No MPA option is assigned.
116816 
116817 
116818 END IF;
116819 END IF;
116820 --
116821 
116822 --
116823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116824    trace
116825       (p_msg      => 'END of AcctLineType_227'
116826       ,p_level    => C_LEVEL_PROCEDURE
116827       ,p_module   => l_log_module);
116828 END IF;
116829 --
116830 EXCEPTION
116831   WHEN xla_exceptions_pkg.application_exception THEN
116832       RAISE;
116833   WHEN OTHERS THEN
116834        xla_exceptions_pkg.raise_message
116835            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_227');
116836 END AcctLineType_227;
116837 --
116838 
116839 ---------------------------------------
116840 --
116841 -- PRIVATE FUNCTION
116842 --         AcctLineType_228
116843 --
116844 ---------------------------------------
116845 PROCEDURE AcctLineType_228 (
116846   p_application_id        IN NUMBER
116847  ,p_event_id              IN NUMBER
116848  ,p_calculate_acctd_flag  IN VARCHAR2
116849  ,p_calculate_g_l_flag    IN VARCHAR2
116850  ,p_actual_flag           IN OUT VARCHAR2
116851  ,p_balance_type_code     OUT VARCHAR2
116852  ,p_gain_or_loss_ref      OUT VARCHAR2
116853  
116854 --TRANSACTION_ID
116855  , p_source_1            IN NUMBER
116856 --Item Concatenated Segments
116857  , p_source_2            IN VARCHAR2
116858 --Transaction Quantity
116859  , p_source_3            IN NUMBER
116860 --Transaction Unit of Measure Code
116861  , p_source_4            IN VARCHAR2
116862 --Inventory Transaction Type Description
116863  , p_source_5            IN VARCHAR2
116864 --Cost Management Default Account
116865  , p_source_11            IN NUMBER
116866 --Cost Element Name
116867  , p_source_15            IN NUMBER
116868 --Primary Cost Method
116869  , p_source_39            IN NUMBER
116870  , p_source_39_meaning    IN VARCHAR2
116871 --Product Line Accounting Category Material Account
116872  , p_source_41            IN NUMBER
116873 --Product Line Accounting Category Material Overhead Account
116874  , p_source_42            IN NUMBER
116875 --Product Line Accounting Category Resource Account
116876  , p_source_43            IN NUMBER
116877 --Product Line Accounting Category Outside Processing Account
116878  , p_source_44            IN NUMBER
116879 --Product Line Accounting Category Overhead Account
116880  , p_source_45            IN NUMBER
116881 --DISTRIBUTION_IDENTIFIER
116882  , p_source_84            IN NUMBER
116883 --Distribution Type
116884  , p_source_85            IN VARCHAR2
116885  , p_source_85_meaning    IN VARCHAR2
116886 --Entered Currency Code
116887  , p_source_88            IN VARCHAR2
116888 --Entered Amount
116889  , p_source_91            IN NUMBER
116890 --Currency Conversion Date
116891  , p_source_92            IN DATE
116892 --Currency Conversion Rate
116893  , p_source_93            IN NUMBER
116894 --Currency Conversion Type
116895  , p_source_94            IN VARCHAR2
116896 --Accounted Amount
116897  , p_source_95            IN NUMBER
116898 --Accounting Line Type
116899  , p_source_97            IN NUMBER
116900 )
116901 IS
116902 
116903 l_component_type              VARCHAR2(80);
116904 l_component_code              VARCHAR2(30);
116905 l_component_type_code         VARCHAR2(1);
116906 l_component_appl_id           INTEGER;
116907 l_amb_context_code            VARCHAR2(30);
116908 l_entity_code                 VARCHAR2(30);
116909 l_event_class_code            VARCHAR2(30);
116910 l_ae_header_id                NUMBER;
116911 l_event_type_code             VARCHAR2(30);
116912 l_line_definition_code        VARCHAR2(30);
116913 l_line_definition_owner_code  VARCHAR2(1);
116914 --
116915 -- adr variables
116916 l_segment                     VARCHAR2(30);
116917 l_ccid                        NUMBER;
116918 l_adr_transaction_coa_id      NUMBER;
116919 l_adr_accounting_coa_id       NUMBER;
116920 l_adr_flexfield_segment_code  VARCHAR2(30);
116921 l_adr_flex_value_set_id       NUMBER;
116922 l_adr_value_type_code         VARCHAR2(30);
116923 l_adr_value_combination_id    NUMBER;
116924 l_adr_value_segment_code      VARCHAR2(30);
116925 
116926 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
116927 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
116928 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
116929 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
116930 
116931 -- 4262811 Variables ------------------------------------------------------------------------------------------
116932 l_entered_amt_idx             NUMBER;
116933 l_accted_amt_idx              NUMBER;
116934 l_acc_rev_flag                VARCHAR2(1);
116935 l_accrual_line_num            NUMBER;
116936 l_tmp_amt                     NUMBER;
116937 l_acc_rev_natural_side_code   VARCHAR2(1);
116938 
116939 l_num_entries                 NUMBER;
116940 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
116941 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
116942 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
116943 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
116944 l_recog_line_1                NUMBER;
116945 l_recog_line_2                NUMBER;
116946 
116947 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
116948 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
116949 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
116950 
116951 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116952 
116953 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
116954 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
116955 
116956 ---------------------------------------------------------------------------------------------------------------
116957 
116958 
116959 --
116960 -- bulk performance
116961 --
116962 l_balance_type_code           VARCHAR2(1);
116963 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
116964 l_log_module                  VARCHAR2(240);
116965 
116966 --
116967 -- Upgrade strategy
116968 --
116969 l_actual_upg_option           VARCHAR2(1);
116970 l_enc_upg_option           VARCHAR2(1);
116971 
116972 --
116973 BEGIN
116974 --
116975 IF g_log_enabled THEN
116976       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_228';
116977 END IF;
116978 --
116979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116980 
116981       trace
116982          (p_msg      => 'BEGIN of AcctLineType_228'
116983          ,p_level    => C_LEVEL_PROCEDURE
116984          ,p_module   => l_log_module);
116985 
116986 END IF;
116987 --
116988 l_component_type             := 'AMB_JLT';
116989 l_component_code             := 'INTRANSIT_VALUATION';
116990 l_component_type_code        := 'S';
116991 l_component_appl_id          :=  707;
116992 l_amb_context_code           := 'DEFAULT';
116993 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
116994 l_event_class_code           := 'USER_DEFINE';
116995 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
116996 l_line_definition_owner_code := 'S';
116997 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
116998 --
116999 l_balance_type_code          := 'A';
117000 l_segment                     := NULL;
117001 l_ccid                        := NULL;
117002 l_adr_transaction_coa_id      := NULL;
117003 l_adr_accounting_coa_id       := NULL;
117004 l_adr_flexfield_segment_code  := NULL;
117005 l_adr_flex_value_set_id       := NULL;
117006 l_adr_value_type_code         := NULL;
117007 l_adr_value_combination_id    := NULL;
117008 l_adr_value_segment_code      := NULL;
117009 
117010 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117011 l_bflow_class_code           := '';    -- 4219869 Business Flow
117012 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117013 l_budgetary_control_flag     := 'N';
117014 
117015 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117016 l_bflow_applied_to_amt       := NULL; -- 5132302
117017 l_entered_amt_idx            := NULL;          -- 4262811
117018 l_accted_amt_idx             := NULL;          -- 4262811
117019 l_acc_rev_flag               := NULL;          -- 4262811
117020 l_accrual_line_num           := NULL;          -- 4262811
117021 l_tmp_amt                    := NULL;          -- 4262811
117022 --
117023  
117024 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117025     l_balance_type_code <> 'B' THEN
117026 IF NVL(p_source_97,9E125) =  14
117027  THEN 
117028 
117029    --
117030    XLA_AE_LINES_PKG.SetNewLine;
117031 
117032    p_balance_type_code          := l_balance_type_code;
117033    -- set the flag so later we will know whether the gain loss line needs to be created
117034    
117035    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117036      p_actual_flag :='A';
117037    END IF;
117038 
117039    --
117040    -- bulk performance
117041    --
117042    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117043                                       p_header_num   => 0); -- 4262811
117044    --
117045    -- set accounting line options
117046    --
117047    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117048            p_natural_side_code          => 'D'
117049          , p_gain_or_loss_flag          => 'N'
117050          , p_gl_transfer_mode_code      => 'S'
117051          , p_acct_entry_type_code       => 'A'
117052          , p_switch_side_flag           => 'Y'
117053          , p_merge_duplicate_code       => 'N'
117054          );
117055    --
117056    l_acc_rev_natural_side_code := 'C';  -- 4262811
117057    -- 
117058    --
117059    -- set accounting line type info
117060    --
117061    xla_ae_lines_pkg.SetAcctLineType
117062       (p_component_type             => l_component_type
117063       ,p_event_type_code            => l_event_type_code
117064       ,p_line_definition_owner_code => l_line_definition_owner_code
117065       ,p_line_definition_code       => l_line_definition_code
117066       ,p_accounting_line_code       => l_component_code
117067       ,p_accounting_line_type_code  => l_component_type_code
117068       ,p_accounting_line_appl_id    => l_component_appl_id
117069       ,p_amb_context_code           => l_amb_context_code
117070       ,p_entity_code                => l_entity_code
117071       ,p_event_class_code           => l_event_class_code);
117072    --
117073    -- set accounting class
117074    --
117075    xla_ae_lines_pkg.SetAcctClass(
117076            p_accounting_class_code  => 'INTRANSIT_VALUATION'
117077          , p_ae_header_id           => l_ae_header_id
117078          );
117079 
117080    --
117081    -- set rounding class
117082    --
117083    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117084                       'INTRANSIT_VALUATION';
117085 
117086    --
117087    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117088    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117089    --
117090    -- bulk performance
117091    --
117092    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117093 
117094    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117095       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117096 
117097    -- 4955764
117098    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117099       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117100 
117101    -- 4458381 Public Sector Enh
117102    
117103    --
117104    -- set accounting attributes for the line type
117105    --
117106    l_entered_amt_idx := 3;
117107    l_accted_amt_idx  := 8;
117108    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
117109    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117110    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
117111    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117112    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
117113    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117114    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
117115    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117116    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
117117    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117118    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
117119    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117120    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
117121    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117122    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
117123    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117124    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
117125 
117126    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117127    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117128 
117129    ---------------------------------------------------------------------------------------------------------------
117130    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117131    ---------------------------------------------------------------------------------------------------------------
117132    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117133 
117134    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117135    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117136 
117137    IF xla_accounting_cache_pkg.GetValueChar
117138          (p_source_code         => 'LEDGER_CATEGORY_CODE'
117139          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117140    AND l_bflow_method_code = 'PRIOR_ENTRY'
117141 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117142    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117143          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117144        )
117145    THEN
117146          xla_ae_lines_pkg.BflowUpgEntry
117147            (p_business_method_code    => l_bflow_method_code
117148            ,p_business_class_code     => l_bflow_class_code
117149            ,p_balance_type            => l_balance_type_code);
117150    ELSE
117151       NULL;
117152 -- No business flow processing for business flow method of NONE.
117153    END IF;
117154 
117155    --
117156    -- call analytical criteria
117157    --
117158    
117159    --
117160    -- call description
117161    --
117162    
117163 xla_ae_lines_pkg.SetLineDescription(
117164    p_ae_header_id => l_ae_header_id
117165   ,p_description  => Description_1 (
117166      p_application_id         => p_application_id
117167    , p_ae_header_id           => l_ae_header_id 
117168 , p_source_1 => p_source_1
117169 , p_source_2 => p_source_2
117170 , p_source_3 => p_source_3
117171 , p_source_4 => p_source_4
117172 , p_source_5 => p_source_5
117173    )
117174 );
117175 
117176 
117177    --
117178    -- call ADRs
117179    -- Bug 4922099
117180    --
117181    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117182         (NVL(l_actual_upg_option, 'N') = 'O') OR
117183         (NVL(l_enc_upg_option, 'N') = 'O')
117184       )
117185    THEN
117186    NULL;
117187    --
117188    --
117189    
117190   l_ccid := AcctDerRule_25(
117191            p_application_id           => p_application_id
117192          , p_ae_header_id             => l_ae_header_id 
117193 , p_source_11 => p_source_11
117194 , p_source_15 => p_source_15
117195 , p_source_39 => p_source_39
117196 , p_source_39_meaning => p_source_39_meaning
117197 , p_source_41 => p_source_41
117198 , p_source_42 => p_source_42
117199 , p_source_43 => p_source_43
117200 , p_source_44 => p_source_44
117201 , p_source_45 => p_source_45
117202          , x_transaction_coa_id       => l_adr_transaction_coa_id
117203          , x_accounting_coa_id        => l_adr_accounting_coa_id
117204          , x_value_type_code          => l_adr_value_type_code
117205          , p_side                     => 'NA'
117206    );
117207 
117208    xla_ae_lines_pkg.set_ccid(
117209     p_code_combination_id          => l_ccid
117210   , p_value_type_code              => l_adr_value_type_code
117211   , p_transaction_coa_id           => l_adr_transaction_coa_id
117212   , p_accounting_coa_id            => l_adr_accounting_coa_id
117213   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
117214   , p_adr_type_code                => 'S'
117215   , p_component_type               => l_component_type
117216   , p_component_code               => l_component_code
117217   , p_component_type_code          => l_component_type_code
117218   , p_component_appl_id            => l_component_appl_id
117219   , p_amb_context_code             => l_amb_context_code
117220   , p_side                         => 'NA'
117221   );
117222 
117223 
117224    --
117225    --
117226    END IF;
117227    --
117228    -- Bug 4922099
117229    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117230           (NVL(l_enc_upg_option, 'N') = 'O')
117231         ) AND
117232         (l_bflow_method_code = 'PRIOR_ENTRY')
117233       )
117234    THEN
117235       IF
117236       --
117237       1 = 2
117238       --
117239       THEN
117240       xla_accounting_err_pkg.build_message
117241                                     (p_appli_s_name            => 'XLA'
117242                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117243                                     ,p_token_1                 => 'LINE_NUMBER'
117244                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117245                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117246                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117247                                                                              l_component_type
117248                                                                             ,l_component_code
117249                                                                             ,l_component_type_code
117250                                                                             ,l_component_appl_id
117251                                                                             ,l_amb_context_code
117252                                                                             ,l_entity_code
117253                                                                             ,l_event_class_code
117254                                                                            )
117255                                     ,p_token_3                 => 'OWNER'
117256                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117257                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117258                                                                           ,p_lookup_code    => l_component_type_code
117259                                                                          )
117260                                     ,p_token_4                 => 'PRODUCT_NAME'
117261                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117262                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117263                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117264                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117265                                     ,p_ae_header_id            =>  NULL
117266                                        );
117267 
117268         IF (C_LEVEL_ERROR>= g_log_level) THEN
117269                  trace
117270                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117271                       ,p_level    => C_LEVEL_ERROR
117272                       ,p_module   => l_log_module);
117273         END IF;
117274       END IF;
117275    END IF;
117276    --
117277    --
117278    ------------------------------------------------------------------------------------------------
117279    -- 4219869 Business Flow
117280    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117281    -- Prior Entry.  Currently, the following code is always generated.
117282    ------------------------------------------------------------------------------------------------
117283    XLA_AE_LINES_PKG.ValidateCurrentLine;
117284 
117285    ------------------------------------------------------------------------------------
117286    -- 4219869 Business Flow
117287    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117288    ------------------------------------------------------------------------------------
117289    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117290 
117291    ----------------------------------------------------------------------------------
117292    -- 4219869 Business Flow
117293    -- Update journal entry status -- Need to generate this within IF <condition>
117294    ----------------------------------------------------------------------------------
117295    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117296          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117297          ,p_balance_type_code => l_balance_type_code
117298          );
117299 
117300    -------------------------------------------------------------------------------------------
117301    -- 4262811 - Generate the Accrual Reversal lines
117302    -------------------------------------------------------------------------------------------
117303    BEGIN
117304       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117305                               (g_array_event(p_event_id).array_value_num('header_index'));
117306       IF l_acc_rev_flag IS NULL THEN
117307          l_acc_rev_flag := 'N';
117308       END IF;
117309    EXCEPTION
117310       WHEN OTHERS THEN
117311          l_acc_rev_flag := 'N';
117312    END;
117313    --
117314    IF (l_acc_rev_flag = 'Y') THEN
117315 
117316        -- 4645092  ------------------------------------------------------------------------------
117317        -- To allow MPA report to determine if it should generate report process
117318        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117319        ------------------------------------------------------------------------------------------
117320 
117321        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117322        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117323    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117324    -- call ADRs
117325    -- Bug 4922099
117326    --
117327    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117328         (NVL(l_actual_upg_option, 'N') = 'O') OR
117329         (NVL(l_enc_upg_option, 'N') = 'O')
117330       )
117331    THEN
117332    NULL;
117333    --
117334    --
117335    
117336   l_ccid := AcctDerRule_25(
117337            p_application_id           => p_application_id
117338          , p_ae_header_id             => l_ae_header_id 
117339 , p_source_11 => p_source_11
117340 , p_source_15 => p_source_15
117341 , p_source_39 => p_source_39
117342 , p_source_39_meaning => p_source_39_meaning
117343 , p_source_41 => p_source_41
117344 , p_source_42 => p_source_42
117345 , p_source_43 => p_source_43
117346 , p_source_44 => p_source_44
117347 , p_source_45 => p_source_45
117348          , x_transaction_coa_id       => l_adr_transaction_coa_id
117349          , x_accounting_coa_id        => l_adr_accounting_coa_id
117350          , x_value_type_code          => l_adr_value_type_code
117351          , p_side                     => 'NA'
117352    );
117353 
117354    xla_ae_lines_pkg.set_ccid(
117355     p_code_combination_id          => l_ccid
117356   , p_value_type_code              => l_adr_value_type_code
117357   , p_transaction_coa_id           => l_adr_transaction_coa_id
117358   , p_accounting_coa_id            => l_adr_accounting_coa_id
117359   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
117360   , p_adr_type_code                => 'S'
117361   , p_component_type               => l_component_type
117362   , p_component_code               => l_component_code
117363   , p_component_type_code          => l_component_type_code
117364   , p_component_appl_id            => l_component_appl_id
117365   , p_amb_context_code             => l_amb_context_code
117366   , p_side                         => 'NA'
117367   );
117368 
117369 
117370    --
117371    --
117372    END IF;
117373 
117374        --
117375        -- Update the line information that should be overwritten
117376        --
117377        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117378                                          p_header_num   => 1);
117379        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117380 
117381        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117382 
117383        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117384           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117385        END IF;
117386 
117387       --
117388       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117389       --
117390       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117391           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
117392       ELSE
117393           ---------------------------------------------------------------------------------------------------
117394           -- 4262811a Switch Sign
117395           ---------------------------------------------------------------------------------------------------
117396           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
117397           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117398                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117399           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117400                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117401           -- 5132302
117402           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117403                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117404 
117405       END IF;
117406 
117407       -- 4955764
117408       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117409       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117410 
117411 
117412       XLA_AE_LINES_PKG.ValidateCurrentLine;
117413       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117414 
117415       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117416                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117417                ,p_balance_type_code => l_balance_type_code);
117418 
117419    END IF;
117420 
117421    -----------------------------------------------------------------------------------------
117422    -- 4262811 Multiperiod Accounting
117423    -----------------------------------------------------------------------------------------
117424      -- No MPA option is assigned.
117425 
117426 
117427 END IF;
117428 END IF;
117429 --
117430 
117431 --
117432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117433    trace
117434       (p_msg      => 'END of AcctLineType_228'
117435       ,p_level    => C_LEVEL_PROCEDURE
117436       ,p_module   => l_log_module);
117437 END IF;
117438 --
117439 EXCEPTION
117440   WHEN xla_exceptions_pkg.application_exception THEN
117441       RAISE;
117442   WHEN OTHERS THEN
117443        xla_exceptions_pkg.raise_message
117444            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_228');
117445 END AcctLineType_228;
117446 --
117447 
117448 ---------------------------------------
117449 --
117450 -- PRIVATE FUNCTION
117451 --         AcctLineType_229
117452 --
117453 ---------------------------------------
117454 PROCEDURE AcctLineType_229 (
117455   p_application_id        IN NUMBER
117456  ,p_event_id              IN NUMBER
117457  ,p_calculate_acctd_flag  IN VARCHAR2
117458  ,p_calculate_g_l_flag    IN VARCHAR2
117459  ,p_actual_flag           IN OUT VARCHAR2
117460  ,p_balance_type_code     OUT VARCHAR2
117461  ,p_gain_or_loss_ref      OUT VARCHAR2
117462  
117463 --TRANSACTION_ID
117464  , p_source_1            IN NUMBER
117465 --Item Concatenated Segments
117466  , p_source_2            IN VARCHAR2
117467 --Transaction Quantity
117468  , p_source_3            IN NUMBER
117469 --Transaction Unit of Measure Code
117470  , p_source_4            IN VARCHAR2
117471 --Inventory Transaction Type Description
117472  , p_source_5            IN VARCHAR2
117473 --Cost Management Default Account
117474  , p_source_11            IN NUMBER
117475 --Cost Element Name
117476  , p_source_15            IN NUMBER
117477 --Primary Cost Method
117478  , p_source_39            IN NUMBER
117479  , p_source_39_meaning    IN VARCHAR2
117480 --Product Line Accounting Category Material Account
117481  , p_source_41            IN NUMBER
117482 --Product Line Accounting Category Material Overhead Account
117483  , p_source_42            IN NUMBER
117484 --Product Line Accounting Category Resource Account
117485  , p_source_43            IN NUMBER
117486 --Product Line Accounting Category Outside Processing Account
117487  , p_source_44            IN NUMBER
117488 --Product Line Accounting Category Overhead Account
117489  , p_source_45            IN NUMBER
117490 --DISTRIBUTION_IDENTIFIER
117491  , p_source_84            IN NUMBER
117492 --Distribution Type
117493  , p_source_85            IN VARCHAR2
117494  , p_source_85_meaning    IN VARCHAR2
117495 --Entered Currency Code
117496  , p_source_88            IN VARCHAR2
117497 --Entered Amount
117498  , p_source_91            IN NUMBER
117499 --Currency Conversion Date
117500  , p_source_92            IN DATE
117501 --Currency Conversion Rate
117502  , p_source_93            IN NUMBER
117503 --Currency Conversion Type
117504  , p_source_94            IN VARCHAR2
117505 --Accounted Amount
117506  , p_source_95            IN NUMBER
117507 --Accounting Line Type
117508  , p_source_97            IN NUMBER
117509 )
117510 IS
117511 
117512 l_component_type              VARCHAR2(80);
117513 l_component_code              VARCHAR2(30);
117514 l_component_type_code         VARCHAR2(1);
117515 l_component_appl_id           INTEGER;
117516 l_amb_context_code            VARCHAR2(30);
117517 l_entity_code                 VARCHAR2(30);
117518 l_event_class_code            VARCHAR2(30);
117519 l_ae_header_id                NUMBER;
117520 l_event_type_code             VARCHAR2(30);
117521 l_line_definition_code        VARCHAR2(30);
117522 l_line_definition_owner_code  VARCHAR2(1);
117523 --
117524 -- adr variables
117525 l_segment                     VARCHAR2(30);
117526 l_ccid                        NUMBER;
117527 l_adr_transaction_coa_id      NUMBER;
117528 l_adr_accounting_coa_id       NUMBER;
117529 l_adr_flexfield_segment_code  VARCHAR2(30);
117530 l_adr_flex_value_set_id       NUMBER;
117531 l_adr_value_type_code         VARCHAR2(30);
117532 l_adr_value_combination_id    NUMBER;
117533 l_adr_value_segment_code      VARCHAR2(30);
117534 
117535 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
117536 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
117537 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
117538 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
117539 
117540 -- 4262811 Variables ------------------------------------------------------------------------------------------
117541 l_entered_amt_idx             NUMBER;
117542 l_accted_amt_idx              NUMBER;
117543 l_acc_rev_flag                VARCHAR2(1);
117544 l_accrual_line_num            NUMBER;
117545 l_tmp_amt                     NUMBER;
117546 l_acc_rev_natural_side_code   VARCHAR2(1);
117547 
117548 l_num_entries                 NUMBER;
117549 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
117550 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
117551 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
117552 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
117553 l_recog_line_1                NUMBER;
117554 l_recog_line_2                NUMBER;
117555 
117556 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
117557 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
117558 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
117559 
117560 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117561 
117562 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
117563 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
117564 
117565 ---------------------------------------------------------------------------------------------------------------
117566 
117567 
117568 --
117569 -- bulk performance
117570 --
117571 l_balance_type_code           VARCHAR2(1);
117572 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
117573 l_log_module                  VARCHAR2(240);
117574 
117575 --
117576 -- Upgrade strategy
117577 --
117578 l_actual_upg_option           VARCHAR2(1);
117579 l_enc_upg_option           VARCHAR2(1);
117580 
117581 --
117582 BEGIN
117583 --
117584 IF g_log_enabled THEN
117585       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_229';
117586 END IF;
117587 --
117588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117589 
117590       trace
117591          (p_msg      => 'BEGIN of AcctLineType_229'
117592          ,p_level    => C_LEVEL_PROCEDURE
117593          ,p_module   => l_log_module);
117594 
117595 END IF;
117596 --
117597 l_component_type             := 'AMB_JLT';
117598 l_component_code             := 'INTRANSIT_VALUATION';
117599 l_component_type_code        := 'S';
117600 l_component_appl_id          :=  707;
117601 l_amb_context_code           := 'DEFAULT';
117602 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
117603 l_event_class_code           := 'MTL_COST_UPD';
117604 l_event_type_code            := 'AVG_COST_UPD';
117605 l_line_definition_owner_code := 'S';
117606 l_line_definition_code       := 'PI_AVG_COST_UPD';
117607 --
117608 l_balance_type_code          := 'A';
117609 l_segment                     := NULL;
117610 l_ccid                        := NULL;
117611 l_adr_transaction_coa_id      := NULL;
117612 l_adr_accounting_coa_id       := NULL;
117613 l_adr_flexfield_segment_code  := NULL;
117614 l_adr_flex_value_set_id       := NULL;
117615 l_adr_value_type_code         := NULL;
117616 l_adr_value_combination_id    := NULL;
117617 l_adr_value_segment_code      := NULL;
117618 
117619 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
117620 l_bflow_class_code           := '';    -- 4219869 Business Flow
117621 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
117622 l_budgetary_control_flag     := 'N';
117623 
117624 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
117625 l_bflow_applied_to_amt       := NULL; -- 5132302
117626 l_entered_amt_idx            := NULL;          -- 4262811
117627 l_accted_amt_idx             := NULL;          -- 4262811
117628 l_acc_rev_flag               := NULL;          -- 4262811
117629 l_accrual_line_num           := NULL;          -- 4262811
117630 l_tmp_amt                    := NULL;          -- 4262811
117631 --
117632  
117633 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117634     l_balance_type_code <> 'B' THEN
117635 IF NVL(p_source_97,9E125) =  14
117636  THEN 
117637 
117638    --
117639    XLA_AE_LINES_PKG.SetNewLine;
117640 
117641    p_balance_type_code          := l_balance_type_code;
117642    -- set the flag so later we will know whether the gain loss line needs to be created
117643    
117644    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117645      p_actual_flag :='A';
117646    END IF;
117647 
117648    --
117649    -- bulk performance
117650    --
117651    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117652                                       p_header_num   => 0); -- 4262811
117653    --
117654    -- set accounting line options
117655    --
117656    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117657            p_natural_side_code          => 'D'
117658          , p_gain_or_loss_flag          => 'N'
117659          , p_gl_transfer_mode_code      => 'S'
117660          , p_acct_entry_type_code       => 'A'
117661          , p_switch_side_flag           => 'Y'
117662          , p_merge_duplicate_code       => 'N'
117663          );
117664    --
117665    l_acc_rev_natural_side_code := 'C';  -- 4262811
117666    -- 
117667    --
117668    -- set accounting line type info
117669    --
117670    xla_ae_lines_pkg.SetAcctLineType
117671       (p_component_type             => l_component_type
117672       ,p_event_type_code            => l_event_type_code
117673       ,p_line_definition_owner_code => l_line_definition_owner_code
117674       ,p_line_definition_code       => l_line_definition_code
117675       ,p_accounting_line_code       => l_component_code
117676       ,p_accounting_line_type_code  => l_component_type_code
117677       ,p_accounting_line_appl_id    => l_component_appl_id
117678       ,p_amb_context_code           => l_amb_context_code
117679       ,p_entity_code                => l_entity_code
117680       ,p_event_class_code           => l_event_class_code);
117681    --
117682    -- set accounting class
117683    --
117684    xla_ae_lines_pkg.SetAcctClass(
117685            p_accounting_class_code  => 'INTRANSIT_VALUATION'
117686          , p_ae_header_id           => l_ae_header_id
117687          );
117688 
117689    --
117690    -- set rounding class
117691    --
117692    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117693                       'INTRANSIT_VALUATION';
117694 
117695    --
117696    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117697    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117698    --
117699    -- bulk performance
117700    --
117701    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117702 
117703    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117704       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117705 
117706    -- 4955764
117707    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117709 
117710    -- 4458381 Public Sector Enh
117711    
117712    --
117713    -- set accounting attributes for the line type
117714    --
117715    l_entered_amt_idx := 3;
117716    l_accted_amt_idx  := 8;
117717    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
117718    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117719    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
117720    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117721    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
117722    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117723    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
117724    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117725    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
117726    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117727    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
117728    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117729    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
117730    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117731    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
117732    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117733    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
117734 
117735    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117736    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117737 
117738    ---------------------------------------------------------------------------------------------------------------
117739    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117740    ---------------------------------------------------------------------------------------------------------------
117741    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117742 
117743    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117744    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117745 
117746    IF xla_accounting_cache_pkg.GetValueChar
117747          (p_source_code         => 'LEDGER_CATEGORY_CODE'
117748          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117749    AND l_bflow_method_code = 'PRIOR_ENTRY'
117750 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117751    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117752          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117753        )
117754    THEN
117755          xla_ae_lines_pkg.BflowUpgEntry
117756            (p_business_method_code    => l_bflow_method_code
117757            ,p_business_class_code     => l_bflow_class_code
117758            ,p_balance_type            => l_balance_type_code);
117759    ELSE
117760       NULL;
117761 -- No business flow processing for business flow method of NONE.
117762    END IF;
117763 
117764    --
117765    -- call analytical criteria
117766    --
117767    
117768    --
117769    -- call description
117770    --
117771    
117772 xla_ae_lines_pkg.SetLineDescription(
117773    p_ae_header_id => l_ae_header_id
117774   ,p_description  => Description_1 (
117775      p_application_id         => p_application_id
117776    , p_ae_header_id           => l_ae_header_id 
117777 , p_source_1 => p_source_1
117778 , p_source_2 => p_source_2
117779 , p_source_3 => p_source_3
117780 , p_source_4 => p_source_4
117781 , p_source_5 => p_source_5
117782    )
117783 );
117784 
117785 
117786    --
117787    -- call ADRs
117788    -- Bug 4922099
117789    --
117790    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117791         (NVL(l_actual_upg_option, 'N') = 'O') OR
117792         (NVL(l_enc_upg_option, 'N') = 'O')
117793       )
117794    THEN
117795    NULL;
117796    --
117797    --
117798    
117799   l_ccid := AcctDerRule_25(
117800            p_application_id           => p_application_id
117801          , p_ae_header_id             => l_ae_header_id 
117802 , p_source_11 => p_source_11
117803 , p_source_15 => p_source_15
117804 , p_source_39 => p_source_39
117805 , p_source_39_meaning => p_source_39_meaning
117806 , p_source_41 => p_source_41
117807 , p_source_42 => p_source_42
117808 , p_source_43 => p_source_43
117809 , p_source_44 => p_source_44
117810 , p_source_45 => p_source_45
117811          , x_transaction_coa_id       => l_adr_transaction_coa_id
117812          , x_accounting_coa_id        => l_adr_accounting_coa_id
117813          , x_value_type_code          => l_adr_value_type_code
117814          , p_side                     => 'NA'
117815    );
117816 
117817    xla_ae_lines_pkg.set_ccid(
117818     p_code_combination_id          => l_ccid
117819   , p_value_type_code              => l_adr_value_type_code
117820   , p_transaction_coa_id           => l_adr_transaction_coa_id
117821   , p_accounting_coa_id            => l_adr_accounting_coa_id
117822   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
117823   , p_adr_type_code                => 'S'
117824   , p_component_type               => l_component_type
117825   , p_component_code               => l_component_code
117826   , p_component_type_code          => l_component_type_code
117827   , p_component_appl_id            => l_component_appl_id
117828   , p_amb_context_code             => l_amb_context_code
117829   , p_side                         => 'NA'
117830   );
117831 
117832 
117833    --
117834    --
117835    END IF;
117836    --
117837    -- Bug 4922099
117838    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117839           (NVL(l_enc_upg_option, 'N') = 'O')
117840         ) AND
117841         (l_bflow_method_code = 'PRIOR_ENTRY')
117842       )
117843    THEN
117844       IF
117845       --
117846       1 = 2
117847       --
117848       THEN
117849       xla_accounting_err_pkg.build_message
117850                                     (p_appli_s_name            => 'XLA'
117851                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117852                                     ,p_token_1                 => 'LINE_NUMBER'
117853                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
117854                                     ,p_token_2                 => 'LINE_TYPE_NAME'
117855                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
117856                                                                              l_component_type
117857                                                                             ,l_component_code
117858                                                                             ,l_component_type_code
117859                                                                             ,l_component_appl_id
117860                                                                             ,l_amb_context_code
117861                                                                             ,l_entity_code
117862                                                                             ,l_event_class_code
117863                                                                            )
117864                                     ,p_token_3                 => 'OWNER'
117865                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
117866                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
117867                                                                           ,p_lookup_code    => l_component_type_code
117868                                                                          )
117869                                     ,p_token_4                 => 'PRODUCT_NAME'
117870                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117871                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117872                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117873                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117874                                     ,p_ae_header_id            =>  NULL
117875                                        );
117876 
117877         IF (C_LEVEL_ERROR>= g_log_level) THEN
117878                  trace
117879                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117880                       ,p_level    => C_LEVEL_ERROR
117881                       ,p_module   => l_log_module);
117882         END IF;
117883       END IF;
117884    END IF;
117885    --
117886    --
117887    ------------------------------------------------------------------------------------------------
117888    -- 4219869 Business Flow
117889    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117890    -- Prior Entry.  Currently, the following code is always generated.
117891    ------------------------------------------------------------------------------------------------
117892    XLA_AE_LINES_PKG.ValidateCurrentLine;
117893 
117894    ------------------------------------------------------------------------------------
117895    -- 4219869 Business Flow
117896    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117897    ------------------------------------------------------------------------------------
117898    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117899 
117900    ----------------------------------------------------------------------------------
117901    -- 4219869 Business Flow
117902    -- Update journal entry status -- Need to generate this within IF <condition>
117903    ----------------------------------------------------------------------------------
117904    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117905          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117906          ,p_balance_type_code => l_balance_type_code
117907          );
117908 
117909    -------------------------------------------------------------------------------------------
117910    -- 4262811 - Generate the Accrual Reversal lines
117911    -------------------------------------------------------------------------------------------
117912    BEGIN
117913       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117914                               (g_array_event(p_event_id).array_value_num('header_index'));
117915       IF l_acc_rev_flag IS NULL THEN
117916          l_acc_rev_flag := 'N';
117917       END IF;
117918    EXCEPTION
117919       WHEN OTHERS THEN
117920          l_acc_rev_flag := 'N';
117921    END;
117922    --
117923    IF (l_acc_rev_flag = 'Y') THEN
117924 
117925        -- 4645092  ------------------------------------------------------------------------------
117926        -- To allow MPA report to determine if it should generate report process
117927        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117928        ------------------------------------------------------------------------------------------
117929 
117930        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117931        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117932    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
117933    -- call ADRs
117934    -- Bug 4922099
117935    --
117936    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117937         (NVL(l_actual_upg_option, 'N') = 'O') OR
117938         (NVL(l_enc_upg_option, 'N') = 'O')
117939       )
117940    THEN
117941    NULL;
117942    --
117943    --
117944    
117945   l_ccid := AcctDerRule_25(
117946            p_application_id           => p_application_id
117947          , p_ae_header_id             => l_ae_header_id 
117948 , p_source_11 => p_source_11
117949 , p_source_15 => p_source_15
117950 , p_source_39 => p_source_39
117951 , p_source_39_meaning => p_source_39_meaning
117952 , p_source_41 => p_source_41
117953 , p_source_42 => p_source_42
117954 , p_source_43 => p_source_43
117955 , p_source_44 => p_source_44
117956 , p_source_45 => p_source_45
117957          , x_transaction_coa_id       => l_adr_transaction_coa_id
117958          , x_accounting_coa_id        => l_adr_accounting_coa_id
117959          , x_value_type_code          => l_adr_value_type_code
117960          , p_side                     => 'NA'
117961    );
117962 
117963    xla_ae_lines_pkg.set_ccid(
117964     p_code_combination_id          => l_ccid
117965   , p_value_type_code              => l_adr_value_type_code
117966   , p_transaction_coa_id           => l_adr_transaction_coa_id
117967   , p_accounting_coa_id            => l_adr_accounting_coa_id
117968   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
117969   , p_adr_type_code                => 'S'
117970   , p_component_type               => l_component_type
117971   , p_component_code               => l_component_code
117972   , p_component_type_code          => l_component_type_code
117973   , p_component_appl_id            => l_component_appl_id
117974   , p_amb_context_code             => l_amb_context_code
117975   , p_side                         => 'NA'
117976   );
117977 
117978 
117979    --
117980    --
117981    END IF;
117982 
117983        --
117984        -- Update the line information that should be overwritten
117985        --
117986        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117987                                          p_header_num   => 1);
117988        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
117989 
117990        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117991 
117992        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
117993           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117994        END IF;
117995 
117996       --
117997       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117998       --
117999       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118000           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118001       ELSE
118002           ---------------------------------------------------------------------------------------------------
118003           -- 4262811a Switch Sign
118004           ---------------------------------------------------------------------------------------------------
118005           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118006           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118007                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118008           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118009                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118010           -- 5132302
118011           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118012                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118013 
118014       END IF;
118015 
118016       -- 4955764
118017       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118018       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118019 
118020 
118021       XLA_AE_LINES_PKG.ValidateCurrentLine;
118022       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118023 
118024       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118025                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118026                ,p_balance_type_code => l_balance_type_code);
118027 
118028    END IF;
118029 
118030    -----------------------------------------------------------------------------------------
118031    -- 4262811 Multiperiod Accounting
118032    -----------------------------------------------------------------------------------------
118033      -- No MPA option is assigned.
118034 
118035 
118036 END IF;
118037 END IF;
118038 --
118039 
118040 --
118041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118042    trace
118043       (p_msg      => 'END of AcctLineType_229'
118044       ,p_level    => C_LEVEL_PROCEDURE
118045       ,p_module   => l_log_module);
118046 END IF;
118047 --
118048 EXCEPTION
118049   WHEN xla_exceptions_pkg.application_exception THEN
118050       RAISE;
118051   WHEN OTHERS THEN
118052        xla_exceptions_pkg.raise_message
118053            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_229');
118054 END AcctLineType_229;
118055 --
118056 
118057 ---------------------------------------
118058 --
118059 -- PRIVATE FUNCTION
118060 --         AcctLineType_230
118061 --
118062 ---------------------------------------
118063 PROCEDURE AcctLineType_230 (
118064   p_application_id        IN NUMBER
118065  ,p_event_id              IN NUMBER
118066  ,p_calculate_acctd_flag  IN VARCHAR2
118067  ,p_calculate_g_l_flag    IN VARCHAR2
118068  ,p_actual_flag           IN OUT VARCHAR2
118069  ,p_balance_type_code     OUT VARCHAR2
118070  ,p_gain_or_loss_ref      OUT VARCHAR2
118071  
118072 --TRANSACTION_ID
118073  , p_source_1            IN NUMBER
118074 --Item Concatenated Segments
118075  , p_source_2            IN VARCHAR2
118076 --Transaction Quantity
118077  , p_source_3            IN NUMBER
118078 --Transaction Unit of Measure Code
118079  , p_source_4            IN VARCHAR2
118080 --Inventory Transaction Type Description
118081  , p_source_5            IN VARCHAR2
118082 --Cost Management Default Account
118083  , p_source_11            IN NUMBER
118084 --Cost Element Name
118085  , p_source_15            IN NUMBER
118086 --Primary Cost Method
118087  , p_source_39            IN NUMBER
118088  , p_source_39_meaning    IN VARCHAR2
118089 --Product Line Accounting Category Material Account
118090  , p_source_41            IN NUMBER
118091 --Product Line Accounting Category Material Overhead Account
118092  , p_source_42            IN NUMBER
118093 --Product Line Accounting Category Resource Account
118094  , p_source_43            IN NUMBER
118095 --Product Line Accounting Category Outside Processing Account
118096  , p_source_44            IN NUMBER
118097 --Product Line Accounting Category Overhead Account
118098  , p_source_45            IN NUMBER
118099 --DISTRIBUTION_IDENTIFIER
118100  , p_source_84            IN NUMBER
118101 --Distribution Type
118102  , p_source_85            IN VARCHAR2
118103  , p_source_85_meaning    IN VARCHAR2
118104 --Entered Currency Code
118105  , p_source_88            IN VARCHAR2
118106 --Entered Amount
118107  , p_source_91            IN NUMBER
118108 --Currency Conversion Date
118109  , p_source_92            IN DATE
118110 --Currency Conversion Rate
118111  , p_source_93            IN NUMBER
118112 --Currency Conversion Type
118113  , p_source_94            IN VARCHAR2
118114 --Accounted Amount
118115  , p_source_95            IN NUMBER
118116 --Accounting Line Type
118117  , p_source_97            IN NUMBER
118118 )
118119 IS
118120 
118121 l_component_type              VARCHAR2(80);
118122 l_component_code              VARCHAR2(30);
118123 l_component_type_code         VARCHAR2(1);
118124 l_component_appl_id           INTEGER;
118125 l_amb_context_code            VARCHAR2(30);
118126 l_entity_code                 VARCHAR2(30);
118127 l_event_class_code            VARCHAR2(30);
118128 l_ae_header_id                NUMBER;
118129 l_event_type_code             VARCHAR2(30);
118130 l_line_definition_code        VARCHAR2(30);
118131 l_line_definition_owner_code  VARCHAR2(1);
118132 --
118133 -- adr variables
118134 l_segment                     VARCHAR2(30);
118135 l_ccid                        NUMBER;
118136 l_adr_transaction_coa_id      NUMBER;
118137 l_adr_accounting_coa_id       NUMBER;
118138 l_adr_flexfield_segment_code  VARCHAR2(30);
118139 l_adr_flex_value_set_id       NUMBER;
118140 l_adr_value_type_code         VARCHAR2(30);
118141 l_adr_value_combination_id    NUMBER;
118142 l_adr_value_segment_code      VARCHAR2(30);
118143 
118144 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
118145 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
118146 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
118147 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
118148 
118149 -- 4262811 Variables ------------------------------------------------------------------------------------------
118150 l_entered_amt_idx             NUMBER;
118151 l_accted_amt_idx              NUMBER;
118152 l_acc_rev_flag                VARCHAR2(1);
118153 l_accrual_line_num            NUMBER;
118154 l_tmp_amt                     NUMBER;
118155 l_acc_rev_natural_side_code   VARCHAR2(1);
118156 
118157 l_num_entries                 NUMBER;
118158 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
118159 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
118160 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
118161 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
118162 l_recog_line_1                NUMBER;
118163 l_recog_line_2                NUMBER;
118164 
118165 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
118166 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
118167 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
118168 
118169 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118170 
118171 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
118172 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
118173 
118174 ---------------------------------------------------------------------------------------------------------------
118175 
118176 
118177 --
118178 -- bulk performance
118179 --
118180 l_balance_type_code           VARCHAR2(1);
118181 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
118182 l_log_module                  VARCHAR2(240);
118183 
118184 --
118185 -- Upgrade strategy
118186 --
118187 l_actual_upg_option           VARCHAR2(1);
118188 l_enc_upg_option           VARCHAR2(1);
118189 
118190 --
118191 BEGIN
118192 --
118193 IF g_log_enabled THEN
118194       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_230';
118195 END IF;
118196 --
118197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118198 
118199       trace
118200          (p_msg      => 'BEGIN of AcctLineType_230'
118201          ,p_level    => C_LEVEL_PROCEDURE
118202          ,p_module   => l_log_module);
118203 
118204 END IF;
118205 --
118206 l_component_type             := 'AMB_JLT';
118207 l_component_code             := 'INTRANSIT_VALUATION';
118208 l_component_type_code        := 'S';
118209 l_component_appl_id          :=  707;
118210 l_amb_context_code           := 'DEFAULT';
118211 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
118212 l_event_class_code           := 'MTL_COST_UPD';
118213 l_event_type_code            := 'IPV_TXFR';
118214 l_line_definition_owner_code := 'S';
118215 l_line_definition_code       := 'PI_IPV_TXFR';
118216 --
118217 l_balance_type_code          := 'A';
118218 l_segment                     := NULL;
118219 l_ccid                        := NULL;
118220 l_adr_transaction_coa_id      := NULL;
118221 l_adr_accounting_coa_id       := NULL;
118222 l_adr_flexfield_segment_code  := NULL;
118223 l_adr_flex_value_set_id       := NULL;
118224 l_adr_value_type_code         := NULL;
118225 l_adr_value_combination_id    := NULL;
118226 l_adr_value_segment_code      := NULL;
118227 
118228 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
118229 l_bflow_class_code           := '';    -- 4219869 Business Flow
118230 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
118231 l_budgetary_control_flag     := 'N';
118232 
118233 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
118234 l_bflow_applied_to_amt       := NULL; -- 5132302
118235 l_entered_amt_idx            := NULL;          -- 4262811
118236 l_accted_amt_idx             := NULL;          -- 4262811
118237 l_acc_rev_flag               := NULL;          -- 4262811
118238 l_accrual_line_num           := NULL;          -- 4262811
118239 l_tmp_amt                    := NULL;          -- 4262811
118240 --
118241  
118242 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118243     l_balance_type_code <> 'B' THEN
118244 IF NVL(p_source_97,9E125) =  14
118245  THEN 
118246 
118247    --
118248    XLA_AE_LINES_PKG.SetNewLine;
118249 
118250    p_balance_type_code          := l_balance_type_code;
118251    -- set the flag so later we will know whether the gain loss line needs to be created
118252    
118253    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118254      p_actual_flag :='A';
118255    END IF;
118256 
118257    --
118258    -- bulk performance
118259    --
118260    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118261                                       p_header_num   => 0); -- 4262811
118262    --
118263    -- set accounting line options
118264    --
118265    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118266            p_natural_side_code          => 'D'
118267          , p_gain_or_loss_flag          => 'N'
118268          , p_gl_transfer_mode_code      => 'S'
118269          , p_acct_entry_type_code       => 'A'
118270          , p_switch_side_flag           => 'Y'
118271          , p_merge_duplicate_code       => 'N'
118272          );
118273    --
118274    l_acc_rev_natural_side_code := 'C';  -- 4262811
118275    -- 
118276    --
118277    -- set accounting line type info
118278    --
118279    xla_ae_lines_pkg.SetAcctLineType
118280       (p_component_type             => l_component_type
118281       ,p_event_type_code            => l_event_type_code
118282       ,p_line_definition_owner_code => l_line_definition_owner_code
118283       ,p_line_definition_code       => l_line_definition_code
118284       ,p_accounting_line_code       => l_component_code
118285       ,p_accounting_line_type_code  => l_component_type_code
118286       ,p_accounting_line_appl_id    => l_component_appl_id
118287       ,p_amb_context_code           => l_amb_context_code
118288       ,p_entity_code                => l_entity_code
118289       ,p_event_class_code           => l_event_class_code);
118290    --
118291    -- set accounting class
118292    --
118293    xla_ae_lines_pkg.SetAcctClass(
118294            p_accounting_class_code  => 'INTRANSIT_VALUATION'
118295          , p_ae_header_id           => l_ae_header_id
118296          );
118297 
118298    --
118299    -- set rounding class
118300    --
118301    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118302                       'INTRANSIT_VALUATION';
118303 
118304    --
118305    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118306    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118307    --
118308    -- bulk performance
118309    --
118310    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118311 
118312    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118313       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118314 
118315    -- 4955764
118316    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118317       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118318 
118319    -- 4458381 Public Sector Enh
118320    
118321    --
118322    -- set accounting attributes for the line type
118323    --
118324    l_entered_amt_idx := 3;
118325    l_accted_amt_idx  := 8;
118326    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118327    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118328    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
118329    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118330    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
118331    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118332    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
118333    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118334    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
118335    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118336    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
118337    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118338    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
118339    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118340    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
118341    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118342    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
118343 
118344    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118345    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118346 
118347    ---------------------------------------------------------------------------------------------------------------
118348    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118349    ---------------------------------------------------------------------------------------------------------------
118350    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118351 
118352    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118353    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118354 
118355    IF xla_accounting_cache_pkg.GetValueChar
118356          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118357          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118358    AND l_bflow_method_code = 'PRIOR_ENTRY'
118359 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118360    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118361          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118362        )
118363    THEN
118364          xla_ae_lines_pkg.BflowUpgEntry
118365            (p_business_method_code    => l_bflow_method_code
118366            ,p_business_class_code     => l_bflow_class_code
118367            ,p_balance_type            => l_balance_type_code);
118368    ELSE
118369       NULL;
118370 -- No business flow processing for business flow method of NONE.
118371    END IF;
118372 
118373    --
118374    -- call analytical criteria
118375    --
118376    
118377    --
118378    -- call description
118379    --
118380    
118381 xla_ae_lines_pkg.SetLineDescription(
118382    p_ae_header_id => l_ae_header_id
118383   ,p_description  => Description_1 (
118384      p_application_id         => p_application_id
118385    , p_ae_header_id           => l_ae_header_id 
118386 , p_source_1 => p_source_1
118387 , p_source_2 => p_source_2
118388 , p_source_3 => p_source_3
118389 , p_source_4 => p_source_4
118390 , p_source_5 => p_source_5
118391    )
118392 );
118393 
118394 
118395    --
118396    -- call ADRs
118397    -- Bug 4922099
118398    --
118399    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118400         (NVL(l_actual_upg_option, 'N') = 'O') OR
118401         (NVL(l_enc_upg_option, 'N') = 'O')
118402       )
118403    THEN
118404    NULL;
118405    --
118406    --
118407    
118408   l_ccid := AcctDerRule_25(
118409            p_application_id           => p_application_id
118410          , p_ae_header_id             => l_ae_header_id 
118411 , p_source_11 => p_source_11
118412 , p_source_15 => p_source_15
118413 , p_source_39 => p_source_39
118414 , p_source_39_meaning => p_source_39_meaning
118415 , p_source_41 => p_source_41
118416 , p_source_42 => p_source_42
118417 , p_source_43 => p_source_43
118418 , p_source_44 => p_source_44
118419 , p_source_45 => p_source_45
118420          , x_transaction_coa_id       => l_adr_transaction_coa_id
118421          , x_accounting_coa_id        => l_adr_accounting_coa_id
118422          , x_value_type_code          => l_adr_value_type_code
118423          , p_side                     => 'NA'
118424    );
118425 
118426    xla_ae_lines_pkg.set_ccid(
118427     p_code_combination_id          => l_ccid
118428   , p_value_type_code              => l_adr_value_type_code
118429   , p_transaction_coa_id           => l_adr_transaction_coa_id
118430   , p_accounting_coa_id            => l_adr_accounting_coa_id
118431   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
118432   , p_adr_type_code                => 'S'
118433   , p_component_type               => l_component_type
118434   , p_component_code               => l_component_code
118435   , p_component_type_code          => l_component_type_code
118436   , p_component_appl_id            => l_component_appl_id
118437   , p_amb_context_code             => l_amb_context_code
118438   , p_side                         => 'NA'
118439   );
118440 
118441 
118442    --
118443    --
118444    END IF;
118445    --
118446    -- Bug 4922099
118447    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118448           (NVL(l_enc_upg_option, 'N') = 'O')
118449         ) AND
118450         (l_bflow_method_code = 'PRIOR_ENTRY')
118451       )
118452    THEN
118453       IF
118454       --
118455       1 = 2
118456       --
118457       THEN
118458       xla_accounting_err_pkg.build_message
118459                                     (p_appli_s_name            => 'XLA'
118460                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118461                                     ,p_token_1                 => 'LINE_NUMBER'
118462                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
118463                                     ,p_token_2                 => 'LINE_TYPE_NAME'
118464                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
118465                                                                              l_component_type
118466                                                                             ,l_component_code
118467                                                                             ,l_component_type_code
118468                                                                             ,l_component_appl_id
118469                                                                             ,l_amb_context_code
118470                                                                             ,l_entity_code
118471                                                                             ,l_event_class_code
118472                                                                            )
118473                                     ,p_token_3                 => 'OWNER'
118474                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
118475                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
118476                                                                           ,p_lookup_code    => l_component_type_code
118477                                                                          )
118478                                     ,p_token_4                 => 'PRODUCT_NAME'
118479                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118480                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118481                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118482                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118483                                     ,p_ae_header_id            =>  NULL
118484                                        );
118485 
118486         IF (C_LEVEL_ERROR>= g_log_level) THEN
118487                  trace
118488                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118489                       ,p_level    => C_LEVEL_ERROR
118490                       ,p_module   => l_log_module);
118491         END IF;
118492       END IF;
118493    END IF;
118494    --
118495    --
118496    ------------------------------------------------------------------------------------------------
118497    -- 4219869 Business Flow
118498    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118499    -- Prior Entry.  Currently, the following code is always generated.
118500    ------------------------------------------------------------------------------------------------
118501    XLA_AE_LINES_PKG.ValidateCurrentLine;
118502 
118503    ------------------------------------------------------------------------------------
118504    -- 4219869 Business Flow
118505    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118506    ------------------------------------------------------------------------------------
118507    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118508 
118509    ----------------------------------------------------------------------------------
118510    -- 4219869 Business Flow
118511    -- Update journal entry status -- Need to generate this within IF <condition>
118512    ----------------------------------------------------------------------------------
118513    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118514          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118515          ,p_balance_type_code => l_balance_type_code
118516          );
118517 
118518    -------------------------------------------------------------------------------------------
118519    -- 4262811 - Generate the Accrual Reversal lines
118520    -------------------------------------------------------------------------------------------
118521    BEGIN
118522       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118523                               (g_array_event(p_event_id).array_value_num('header_index'));
118524       IF l_acc_rev_flag IS NULL THEN
118525          l_acc_rev_flag := 'N';
118526       END IF;
118527    EXCEPTION
118528       WHEN OTHERS THEN
118529          l_acc_rev_flag := 'N';
118530    END;
118531    --
118532    IF (l_acc_rev_flag = 'Y') THEN
118533 
118534        -- 4645092  ------------------------------------------------------------------------------
118535        -- To allow MPA report to determine if it should generate report process
118536        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118537        ------------------------------------------------------------------------------------------
118538 
118539        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118540        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118541    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
118542    -- call ADRs
118543    -- Bug 4922099
118544    --
118545    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118546         (NVL(l_actual_upg_option, 'N') = 'O') OR
118547         (NVL(l_enc_upg_option, 'N') = 'O')
118548       )
118549    THEN
118550    NULL;
118551    --
118552    --
118553    
118554   l_ccid := AcctDerRule_25(
118555            p_application_id           => p_application_id
118556          , p_ae_header_id             => l_ae_header_id 
118557 , p_source_11 => p_source_11
118558 , p_source_15 => p_source_15
118559 , p_source_39 => p_source_39
118560 , p_source_39_meaning => p_source_39_meaning
118561 , p_source_41 => p_source_41
118562 , p_source_42 => p_source_42
118563 , p_source_43 => p_source_43
118564 , p_source_44 => p_source_44
118565 , p_source_45 => p_source_45
118566          , x_transaction_coa_id       => l_adr_transaction_coa_id
118567          , x_accounting_coa_id        => l_adr_accounting_coa_id
118568          , x_value_type_code          => l_adr_value_type_code
118569          , p_side                     => 'NA'
118570    );
118571 
118572    xla_ae_lines_pkg.set_ccid(
118573     p_code_combination_id          => l_ccid
118574   , p_value_type_code              => l_adr_value_type_code
118575   , p_transaction_coa_id           => l_adr_transaction_coa_id
118576   , p_accounting_coa_id            => l_adr_accounting_coa_id
118577   , p_adr_code                     => 'PI_INTRANSIT_ACCOUNT'
118578   , p_adr_type_code                => 'S'
118579   , p_component_type               => l_component_type
118580   , p_component_code               => l_component_code
118581   , p_component_type_code          => l_component_type_code
118582   , p_component_appl_id            => l_component_appl_id
118583   , p_amb_context_code             => l_amb_context_code
118584   , p_side                         => 'NA'
118585   );
118586 
118587 
118588    --
118589    --
118590    END IF;
118591 
118592        --
118593        -- Update the line information that should be overwritten
118594        --
118595        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118596                                          p_header_num   => 1);
118597        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
118598 
118599        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118600 
118601        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
118602           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118603        END IF;
118604 
118605       --
118606       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118607       --
118608       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118609           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
118610       ELSE
118611           ---------------------------------------------------------------------------------------------------
118612           -- 4262811a Switch Sign
118613           ---------------------------------------------------------------------------------------------------
118614           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
118615           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118616                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118617           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118618                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118619           -- 5132302
118620           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118621                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118622 
118623       END IF;
118624 
118625       -- 4955764
118626       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118627       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118628 
118629 
118630       XLA_AE_LINES_PKG.ValidateCurrentLine;
118631       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118632 
118633       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118634                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118635                ,p_balance_type_code => l_balance_type_code);
118636 
118637    END IF;
118638 
118639    -----------------------------------------------------------------------------------------
118640    -- 4262811 Multiperiod Accounting
118641    -----------------------------------------------------------------------------------------
118642      -- No MPA option is assigned.
118643 
118644 
118645 END IF;
118646 END IF;
118647 --
118648 
118649 --
118650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118651    trace
118652       (p_msg      => 'END of AcctLineType_230'
118653       ,p_level    => C_LEVEL_PROCEDURE
118654       ,p_module   => l_log_module);
118655 END IF;
118656 --
118657 EXCEPTION
118658   WHEN xla_exceptions_pkg.application_exception THEN
118659       RAISE;
118660   WHEN OTHERS THEN
118661        xla_exceptions_pkg.raise_message
118662            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_230');
118663 END AcctLineType_230;
118664 --
118665 
118666 ---------------------------------------
118667 --
118668 -- PRIVATE FUNCTION
118669 --         AcctLineType_231
118670 --
118671 ---------------------------------------
118672 PROCEDURE AcctLineType_231 (
118673   p_application_id        IN NUMBER
118674  ,p_event_id              IN NUMBER
118675  ,p_calculate_acctd_flag  IN VARCHAR2
118676  ,p_calculate_g_l_flag    IN VARCHAR2
118677  ,p_actual_flag           IN OUT VARCHAR2
118678  ,p_balance_type_code     OUT VARCHAR2
118679  ,p_gain_or_loss_ref      OUT VARCHAR2
118680  
118681 --TRANSACTION_ID
118682  , p_source_1            IN NUMBER
118683 --Item Concatenated Segments
118684  , p_source_2            IN VARCHAR2
118685 --Transaction Quantity
118686  , p_source_3            IN NUMBER
118687 --Transaction Unit of Measure Code
118688  , p_source_4            IN VARCHAR2
118689 --Inventory Transaction Type Description
118690  , p_source_5            IN VARCHAR2
118691 --Cost Element Name
118692  , p_source_15            IN NUMBER
118693 --Product Line Accounting Category Material Account
118694  , p_source_41            IN NUMBER
118695 --Product Line Accounting Category Material Overhead Account
118696  , p_source_42            IN NUMBER
118697 --Product Line Accounting Category Resource Account
118698  , p_source_43            IN NUMBER
118699 --Product Line Accounting Category Outside Processing Account
118700  , p_source_44            IN NUMBER
118701 --Product Line Accounting Category Overhead Account
118702  , p_source_45            IN NUMBER
118703 --DISTRIBUTION_IDENTIFIER
118704  , p_source_84            IN NUMBER
118705 --Distribution Type
118706  , p_source_85            IN VARCHAR2
118707  , p_source_85_meaning    IN VARCHAR2
118708 --Entered Currency Code
118709  , p_source_88            IN VARCHAR2
118710 --Entered Amount
118711  , p_source_91            IN NUMBER
118712 --Currency Conversion Date
118713  , p_source_92            IN DATE
118714 --Currency Conversion Rate
118715  , p_source_93            IN NUMBER
118716 --Currency Conversion Type
118717  , p_source_94            IN VARCHAR2
118718 --Accounted Amount
118719  , p_source_95            IN NUMBER
118720 --Accounting Line Type
118721  , p_source_97            IN NUMBER
118722 --Organization Code
118723  , p_source_108            IN VARCHAR2
118724 )
118725 IS
118726 
118727 l_component_type              VARCHAR2(80);
118728 l_component_code              VARCHAR2(30);
118729 l_component_type_code         VARCHAR2(1);
118730 l_component_appl_id           INTEGER;
118731 l_amb_context_code            VARCHAR2(30);
118732 l_entity_code                 VARCHAR2(30);
118733 l_event_class_code            VARCHAR2(30);
118734 l_ae_header_id                NUMBER;
118735 l_event_type_code             VARCHAR2(30);
118736 l_line_definition_code        VARCHAR2(30);
118737 l_line_definition_owner_code  VARCHAR2(1);
118738 --
118739 -- adr variables
118740 l_segment                     VARCHAR2(30);
118741 l_ccid                        NUMBER;
118742 l_adr_transaction_coa_id      NUMBER;
118743 l_adr_accounting_coa_id       NUMBER;
118744 l_adr_flexfield_segment_code  VARCHAR2(30);
118745 l_adr_flex_value_set_id       NUMBER;
118746 l_adr_value_type_code         VARCHAR2(30);
118747 l_adr_value_combination_id    NUMBER;
118748 l_adr_value_segment_code      VARCHAR2(30);
118749 
118750 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
118751 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
118752 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
118753 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
118754 
118755 -- 4262811 Variables ------------------------------------------------------------------------------------------
118756 l_entered_amt_idx             NUMBER;
118757 l_accted_amt_idx              NUMBER;
118758 l_acc_rev_flag                VARCHAR2(1);
118759 l_accrual_line_num            NUMBER;
118760 l_tmp_amt                     NUMBER;
118761 l_acc_rev_natural_side_code   VARCHAR2(1);
118762 
118763 l_num_entries                 NUMBER;
118764 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
118765 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
118766 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
118767 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
118768 l_recog_line_1                NUMBER;
118769 l_recog_line_2                NUMBER;
118770 
118771 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
118772 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
118773 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
118774 
118775 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118776 
118777 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
118778 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
118779 
118780 ---------------------------------------------------------------------------------------------------------------
118781 
118782 
118783 --
118784 -- bulk performance
118785 --
118786 l_balance_type_code           VARCHAR2(1);
118787 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
118788 l_log_module                  VARCHAR2(240);
118789 
118790 --
118791 -- Upgrade strategy
118792 --
118793 l_actual_upg_option           VARCHAR2(1);
118794 l_enc_upg_option           VARCHAR2(1);
118795 
118796 --
118797 BEGIN
118798 --
118799 IF g_log_enabled THEN
118800       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_231';
118801 END IF;
118802 --
118803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118804 
118805       trace
118806          (p_msg      => 'BEGIN of AcctLineType_231'
118807          ,p_level    => C_LEVEL_PROCEDURE
118808          ,p_module   => l_log_module);
118809 
118810 END IF;
118811 --
118812 l_component_type             := 'AMB_JLT';
118813 l_component_code             := 'INVENTORY_VALUATION';
118814 l_component_type_code        := 'S';
118815 l_component_appl_id          :=  707;
118816 l_amb_context_code           := 'DEFAULT';
118817 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
118818 l_event_class_code           := 'CON_INV_OWNR_TXFR';
118819 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
118820 l_line_definition_owner_code := 'S';
118821 l_line_definition_code       := 'PI_CON_INV_OWNR_TRFR';
118822 --
118823 l_balance_type_code          := 'A';
118824 l_segment                     := NULL;
118825 l_ccid                        := NULL;
118826 l_adr_transaction_coa_id      := NULL;
118827 l_adr_accounting_coa_id       := NULL;
118828 l_adr_flexfield_segment_code  := NULL;
118829 l_adr_flex_value_set_id       := NULL;
118830 l_adr_value_type_code         := NULL;
118831 l_adr_value_combination_id    := NULL;
118832 l_adr_value_segment_code      := NULL;
118833 
118834 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
118835 l_bflow_class_code           := '';    -- 4219869 Business Flow
118836 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
118837 l_budgetary_control_flag     := 'N';
118838 
118839 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
118840 l_bflow_applied_to_amt       := NULL; -- 5132302
118841 l_entered_amt_idx            := NULL;          -- 4262811
118842 l_accted_amt_idx             := NULL;          -- 4262811
118843 l_acc_rev_flag               := NULL;          -- 4262811
118844 l_accrual_line_num           := NULL;          -- 4262811
118845 l_tmp_amt                    := NULL;          -- 4262811
118846 --
118847  
118848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118849     l_balance_type_code <> 'B' THEN
118850 IF NVL(p_source_97,9E125) =  1
118851  THEN 
118852 
118853    --
118854    XLA_AE_LINES_PKG.SetNewLine;
118855 
118856    p_balance_type_code          := l_balance_type_code;
118857    -- set the flag so later we will know whether the gain loss line needs to be created
118858    
118859    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118860      p_actual_flag :='A';
118861    END IF;
118862 
118863    --
118864    -- bulk performance
118865    --
118866    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118867                                       p_header_num   => 0); -- 4262811
118868    --
118869    -- set accounting line options
118870    --
118871    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118872            p_natural_side_code          => 'D'
118873          , p_gain_or_loss_flag          => 'N'
118874          , p_gl_transfer_mode_code      => 'S'
118875          , p_acct_entry_type_code       => 'A'
118876          , p_switch_side_flag           => 'Y'
118877          , p_merge_duplicate_code       => 'N'
118878          );
118879    --
118880    l_acc_rev_natural_side_code := 'C';  -- 4262811
118881    -- 
118882    --
118883    -- set accounting line type info
118884    --
118885    xla_ae_lines_pkg.SetAcctLineType
118886       (p_component_type             => l_component_type
118887       ,p_event_type_code            => l_event_type_code
118888       ,p_line_definition_owner_code => l_line_definition_owner_code
118889       ,p_line_definition_code       => l_line_definition_code
118890       ,p_accounting_line_code       => l_component_code
118891       ,p_accounting_line_type_code  => l_component_type_code
118892       ,p_accounting_line_appl_id    => l_component_appl_id
118893       ,p_amb_context_code           => l_amb_context_code
118894       ,p_entity_code                => l_entity_code
118895       ,p_event_class_code           => l_event_class_code);
118896    --
118897    -- set accounting class
118898    --
118899    xla_ae_lines_pkg.SetAcctClass(
118900            p_accounting_class_code  => 'INVENTORY_VALUATION'
118901          , p_ae_header_id           => l_ae_header_id
118902          );
118903 
118904    --
118905    -- set rounding class
118906    --
118907    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118908                       'INVENTORY_VALUATION';
118909 
118910    --
118911    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118912    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118913    --
118914    -- bulk performance
118915    --
118916    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118917 
118918    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118919       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118920 
118921    -- 4955764
118922    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118923       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118924 
118925    -- 4458381 Public Sector Enh
118926    
118927    --
118928    -- set accounting attributes for the line type
118929    --
118930    l_entered_amt_idx := 3;
118931    l_accted_amt_idx  := 8;
118932    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
118933    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118934    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
118935    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118936    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
118937    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118938    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
118939    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118940    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
118941    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118942    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
118943    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118944    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
118945    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118946    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
118947    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118948    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
118949 
118950    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118951    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118952 
118953    ---------------------------------------------------------------------------------------------------------------
118954    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118955    ---------------------------------------------------------------------------------------------------------------
118956    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118957 
118958    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118959    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118960 
118961    IF xla_accounting_cache_pkg.GetValueChar
118962          (p_source_code         => 'LEDGER_CATEGORY_CODE'
118963          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118964    AND l_bflow_method_code = 'PRIOR_ENTRY'
118965 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118966    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118967          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118968        )
118969    THEN
118970          xla_ae_lines_pkg.BflowUpgEntry
118971            (p_business_method_code    => l_bflow_method_code
118972            ,p_business_class_code     => l_bflow_class_code
118973            ,p_balance_type            => l_balance_type_code);
118974    ELSE
118975       NULL;
118976 -- No business flow processing for business flow method of NONE.
118977    END IF;
118978 
118979    --
118980    -- call analytical criteria
118981    --
118982    
118983 
118984 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
118985 xla_ae_lines_pkg.SetAnalyticalCriteria(
118986    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
118987  , p_analytical_criterion_owner   => 'S'
118988  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
118989  , p_amb_context_code             => 'DEFAULT'
118990  , p_balancing_flag               => 'Y'
118991  
118992  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
118993  , p_analytical_detail_num_1     =>  NULL
118994  , p_analytical_detail_date_1    =>  NULL
118995 
118996  , p_ae_header_id                 => l_ae_header_id
118997 )
118998 ;
118999 --
119000 
119001    --
119002    -- call description
119003    --
119004    
119005 xla_ae_lines_pkg.SetLineDescription(
119006    p_ae_header_id => l_ae_header_id
119007   ,p_description  => Description_1 (
119008      p_application_id         => p_application_id
119009    , p_ae_header_id           => l_ae_header_id 
119010 , p_source_1 => p_source_1
119011 , p_source_2 => p_source_2
119012 , p_source_3 => p_source_3
119013 , p_source_4 => p_source_4
119014 , p_source_5 => p_source_5
119015    )
119016 );
119017 
119018 
119019    --
119020    -- call ADRs
119021    -- Bug 4922099
119022    --
119023    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119024         (NVL(l_actual_upg_option, 'N') = 'O') OR
119025         (NVL(l_enc_upg_option, 'N') = 'O')
119026       )
119027    THEN
119028    NULL;
119029    --
119030    --
119031    
119032   l_ccid := AcctDerRule_28(
119033            p_application_id           => p_application_id
119034          , p_ae_header_id             => l_ae_header_id 
119035 , p_source_15 => p_source_15
119036 , p_source_41 => p_source_41
119037 , p_source_42 => p_source_42
119038 , p_source_43 => p_source_43
119039 , p_source_44 => p_source_44
119040 , p_source_45 => p_source_45
119041          , x_transaction_coa_id       => l_adr_transaction_coa_id
119042          , x_accounting_coa_id        => l_adr_accounting_coa_id
119043          , x_value_type_code          => l_adr_value_type_code
119044          , p_side                     => 'NA'
119045    );
119046 
119047    xla_ae_lines_pkg.set_ccid(
119048     p_code_combination_id          => l_ccid
119049   , p_value_type_code              => l_adr_value_type_code
119050   , p_transaction_coa_id           => l_adr_transaction_coa_id
119051   , p_accounting_coa_id            => l_adr_accounting_coa_id
119052   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
119053   , p_adr_type_code                => 'S'
119054   , p_component_type               => l_component_type
119055   , p_component_code               => l_component_code
119056   , p_component_type_code          => l_component_type_code
119057   , p_component_appl_id            => l_component_appl_id
119058   , p_amb_context_code             => l_amb_context_code
119059   , p_side                         => 'NA'
119060   );
119061 
119062 
119063    --
119064    --
119065    END IF;
119066    --
119067    -- Bug 4922099
119068    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119069           (NVL(l_enc_upg_option, 'N') = 'O')
119070         ) AND
119071         (l_bflow_method_code = 'PRIOR_ENTRY')
119072       )
119073    THEN
119074       IF
119075       --
119076       1 = 2
119077       --
119078       THEN
119079       xla_accounting_err_pkg.build_message
119080                                     (p_appli_s_name            => 'XLA'
119081                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119082                                     ,p_token_1                 => 'LINE_NUMBER'
119083                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
119084                                     ,p_token_2                 => 'LINE_TYPE_NAME'
119085                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
119086                                                                              l_component_type
119087                                                                             ,l_component_code
119088                                                                             ,l_component_type_code
119089                                                                             ,l_component_appl_id
119090                                                                             ,l_amb_context_code
119091                                                                             ,l_entity_code
119092                                                                             ,l_event_class_code
119093                                                                            )
119094                                     ,p_token_3                 => 'OWNER'
119095                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
119096                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
119097                                                                           ,p_lookup_code    => l_component_type_code
119098                                                                          )
119099                                     ,p_token_4                 => 'PRODUCT_NAME'
119100                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119101                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119102                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119103                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119104                                     ,p_ae_header_id            =>  NULL
119105                                        );
119106 
119107         IF (C_LEVEL_ERROR>= g_log_level) THEN
119108                  trace
119109                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119110                       ,p_level    => C_LEVEL_ERROR
119111                       ,p_module   => l_log_module);
119112         END IF;
119113       END IF;
119114    END IF;
119115    --
119116    --
119117    ------------------------------------------------------------------------------------------------
119118    -- 4219869 Business Flow
119119    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119120    -- Prior Entry.  Currently, the following code is always generated.
119121    ------------------------------------------------------------------------------------------------
119122    XLA_AE_LINES_PKG.ValidateCurrentLine;
119123 
119124    ------------------------------------------------------------------------------------
119125    -- 4219869 Business Flow
119126    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119127    ------------------------------------------------------------------------------------
119128    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119129 
119130    ----------------------------------------------------------------------------------
119131    -- 4219869 Business Flow
119132    -- Update journal entry status -- Need to generate this within IF <condition>
119133    ----------------------------------------------------------------------------------
119134    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119135          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119136          ,p_balance_type_code => l_balance_type_code
119137          );
119138 
119139    -------------------------------------------------------------------------------------------
119140    -- 4262811 - Generate the Accrual Reversal lines
119141    -------------------------------------------------------------------------------------------
119142    BEGIN
119143       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119144                               (g_array_event(p_event_id).array_value_num('header_index'));
119145       IF l_acc_rev_flag IS NULL THEN
119146          l_acc_rev_flag := 'N';
119147       END IF;
119148    EXCEPTION
119149       WHEN OTHERS THEN
119150          l_acc_rev_flag := 'N';
119151    END;
119152    --
119153    IF (l_acc_rev_flag = 'Y') THEN
119154 
119155        -- 4645092  ------------------------------------------------------------------------------
119156        -- To allow MPA report to determine if it should generate report process
119157        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119158        ------------------------------------------------------------------------------------------
119159 
119160        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119161        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119162    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
119163    -- call ADRs
119164    -- Bug 4922099
119165    --
119166    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119167         (NVL(l_actual_upg_option, 'N') = 'O') OR
119168         (NVL(l_enc_upg_option, 'N') = 'O')
119169       )
119170    THEN
119171    NULL;
119172    --
119173    --
119174    
119175   l_ccid := AcctDerRule_28(
119176            p_application_id           => p_application_id
119177          , p_ae_header_id             => l_ae_header_id 
119178 , p_source_15 => p_source_15
119179 , p_source_41 => p_source_41
119180 , p_source_42 => p_source_42
119181 , p_source_43 => p_source_43
119182 , p_source_44 => p_source_44
119183 , p_source_45 => p_source_45
119184          , x_transaction_coa_id       => l_adr_transaction_coa_id
119185          , x_accounting_coa_id        => l_adr_accounting_coa_id
119186          , x_value_type_code          => l_adr_value_type_code
119187          , p_side                     => 'NA'
119188    );
119189 
119190    xla_ae_lines_pkg.set_ccid(
119191     p_code_combination_id          => l_ccid
119192   , p_value_type_code              => l_adr_value_type_code
119193   , p_transaction_coa_id           => l_adr_transaction_coa_id
119194   , p_accounting_coa_id            => l_adr_accounting_coa_id
119195   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
119196   , p_adr_type_code                => 'S'
119197   , p_component_type               => l_component_type
119198   , p_component_code               => l_component_code
119199   , p_component_type_code          => l_component_type_code
119200   , p_component_appl_id            => l_component_appl_id
119201   , p_amb_context_code             => l_amb_context_code
119202   , p_side                         => 'NA'
119203   );
119204 
119205 
119206    --
119207    --
119208    END IF;
119209 
119210        --
119211        -- Update the line information that should be overwritten
119212        --
119213        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119214                                          p_header_num   => 1);
119215        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
119216 
119217        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119218 
119219        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
119220           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119221        END IF;
119222 
119223       --
119224       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119225       --
119226       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119227           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
119228       ELSE
119229           ---------------------------------------------------------------------------------------------------
119230           -- 4262811a Switch Sign
119231           ---------------------------------------------------------------------------------------------------
119232           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
119233           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119234                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119235           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119236                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119237           -- 5132302
119238           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119239                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119240 
119241       END IF;
119242 
119243       -- 4955764
119244       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119245       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119246 
119247 
119248       XLA_AE_LINES_PKG.ValidateCurrentLine;
119249       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119250 
119251       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119252                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119253                ,p_balance_type_code => l_balance_type_code);
119254 
119255    END IF;
119256 
119257    -----------------------------------------------------------------------------------------
119258    -- 4262811 Multiperiod Accounting
119259    -----------------------------------------------------------------------------------------
119260      -- No MPA option is assigned.
119261 
119262 
119263 END IF;
119264 END IF;
119265 --
119266 
119267 --
119268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119269    trace
119270       (p_msg      => 'END of AcctLineType_231'
119271       ,p_level    => C_LEVEL_PROCEDURE
119272       ,p_module   => l_log_module);
119273 END IF;
119274 --
119275 EXCEPTION
119276   WHEN xla_exceptions_pkg.application_exception THEN
119277       RAISE;
119278   WHEN OTHERS THEN
119279        xla_exceptions_pkg.raise_message
119280            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_231');
119281 END AcctLineType_231;
119282 --
119283 
119284 ---------------------------------------
119285 --
119286 -- PRIVATE FUNCTION
119287 --         AcctLineType_232
119288 --
119289 ---------------------------------------
119290 PROCEDURE AcctLineType_232 (
119291   p_application_id        IN NUMBER
119292  ,p_event_id              IN NUMBER
119293  ,p_calculate_acctd_flag  IN VARCHAR2
119294  ,p_calculate_g_l_flag    IN VARCHAR2
119295  ,p_actual_flag           IN OUT VARCHAR2
119296  ,p_balance_type_code     OUT VARCHAR2
119297  ,p_gain_or_loss_ref      OUT VARCHAR2
119298  
119299 --TRANSACTION_ID
119300  , p_source_1            IN NUMBER
119301 --Item Concatenated Segments
119302  , p_source_2            IN VARCHAR2
119303 --Transaction Quantity
119304  , p_source_3            IN NUMBER
119305 --Transaction Unit of Measure Code
119306  , p_source_4            IN VARCHAR2
119307 --Inventory Transaction Type Description
119308  , p_source_5            IN VARCHAR2
119309 --Cost Element Name
119310  , p_source_15            IN NUMBER
119311 --Product Line Accounting Category Material Account
119312  , p_source_41            IN NUMBER
119313 --Product Line Accounting Category Material Overhead Account
119314  , p_source_42            IN NUMBER
119315 --Product Line Accounting Category Resource Account
119316  , p_source_43            IN NUMBER
119317 --Product Line Accounting Category Outside Processing Account
119318  , p_source_44            IN NUMBER
119319 --Product Line Accounting Category Overhead Account
119320  , p_source_45            IN NUMBER
119321 --DISTRIBUTION_IDENTIFIER
119322  , p_source_84            IN NUMBER
119323 --Distribution Type
119324  , p_source_85            IN VARCHAR2
119325  , p_source_85_meaning    IN VARCHAR2
119326 --Entered Currency Code
119327  , p_source_88            IN VARCHAR2
119328 --Entered Amount
119329  , p_source_91            IN NUMBER
119330 --Currency Conversion Date
119331  , p_source_92            IN DATE
119332 --Currency Conversion Rate
119333  , p_source_93            IN NUMBER
119334 --Currency Conversion Type
119335  , p_source_94            IN VARCHAR2
119336 --Accounted Amount
119337  , p_source_95            IN NUMBER
119338 --Accounting Line Type
119339  , p_source_97            IN NUMBER
119340 --Organization Code
119341  , p_source_108            IN VARCHAR2
119342 )
119343 IS
119344 
119345 l_component_type              VARCHAR2(80);
119346 l_component_code              VARCHAR2(30);
119347 l_component_type_code         VARCHAR2(1);
119348 l_component_appl_id           INTEGER;
119349 l_amb_context_code            VARCHAR2(30);
119350 l_entity_code                 VARCHAR2(30);
119351 l_event_class_code            VARCHAR2(30);
119352 l_ae_header_id                NUMBER;
119353 l_event_type_code             VARCHAR2(30);
119354 l_line_definition_code        VARCHAR2(30);
119355 l_line_definition_owner_code  VARCHAR2(1);
119356 --
119357 -- adr variables
119358 l_segment                     VARCHAR2(30);
119359 l_ccid                        NUMBER;
119360 l_adr_transaction_coa_id      NUMBER;
119361 l_adr_accounting_coa_id       NUMBER;
119362 l_adr_flexfield_segment_code  VARCHAR2(30);
119363 l_adr_flex_value_set_id       NUMBER;
119364 l_adr_value_type_code         VARCHAR2(30);
119365 l_adr_value_combination_id    NUMBER;
119366 l_adr_value_segment_code      VARCHAR2(30);
119367 
119368 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
119369 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
119370 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
119371 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
119372 
119373 -- 4262811 Variables ------------------------------------------------------------------------------------------
119374 l_entered_amt_idx             NUMBER;
119375 l_accted_amt_idx              NUMBER;
119376 l_acc_rev_flag                VARCHAR2(1);
119377 l_accrual_line_num            NUMBER;
119378 l_tmp_amt                     NUMBER;
119379 l_acc_rev_natural_side_code   VARCHAR2(1);
119380 
119381 l_num_entries                 NUMBER;
119382 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
119383 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
119384 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
119385 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
119386 l_recog_line_1                NUMBER;
119387 l_recog_line_2                NUMBER;
119388 
119389 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
119390 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
119391 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
119392 
119393 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
119394 
119395 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
119396 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
119397 
119398 ---------------------------------------------------------------------------------------------------------------
119399 
119400 
119401 --
119402 -- bulk performance
119403 --
119404 l_balance_type_code           VARCHAR2(1);
119405 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
119406 l_log_module                  VARCHAR2(240);
119407 
119408 --
119409 -- Upgrade strategy
119410 --
119411 l_actual_upg_option           VARCHAR2(1);
119412 l_enc_upg_option           VARCHAR2(1);
119413 
119414 --
119415 BEGIN
119416 --
119417 IF g_log_enabled THEN
119418       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_232';
119419 END IF;
119420 --
119421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119422 
119423       trace
119424          (p_msg      => 'BEGIN of AcctLineType_232'
119425          ,p_level    => C_LEVEL_PROCEDURE
119426          ,p_module   => l_log_module);
119427 
119428 END IF;
119429 --
119430 l_component_type             := 'AMB_JLT';
119431 l_component_code             := 'INVENTORY_VALUATION';
119432 l_component_type_code        := 'S';
119433 l_component_appl_id          :=  707;
119434 l_amb_context_code           := 'DEFAULT';
119435 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
119436 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
119437 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
119438 l_line_definition_owner_code := 'S';
119439 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
119440 --
119441 l_balance_type_code          := 'A';
119442 l_segment                     := NULL;
119443 l_ccid                        := NULL;
119444 l_adr_transaction_coa_id      := NULL;
119445 l_adr_accounting_coa_id       := NULL;
119446 l_adr_flexfield_segment_code  := NULL;
119447 l_adr_flex_value_set_id       := NULL;
119448 l_adr_value_type_code         := NULL;
119449 l_adr_value_combination_id    := NULL;
119450 l_adr_value_segment_code      := NULL;
119451 
119452 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
119453 l_bflow_class_code           := '';    -- 4219869 Business Flow
119454 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
119455 l_budgetary_control_flag     := 'N';
119456 
119457 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
119458 l_bflow_applied_to_amt       := NULL; -- 5132302
119459 l_entered_amt_idx            := NULL;          -- 4262811
119460 l_accted_amt_idx             := NULL;          -- 4262811
119461 l_acc_rev_flag               := NULL;          -- 4262811
119462 l_accrual_line_num           := NULL;          -- 4262811
119463 l_tmp_amt                    := NULL;          -- 4262811
119464 --
119465  
119466 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119467     l_balance_type_code <> 'B' THEN
119468 IF NVL(p_source_97,9E125) =  1
119469  THEN 
119470 
119471    --
119472    XLA_AE_LINES_PKG.SetNewLine;
119473 
119474    p_balance_type_code          := l_balance_type_code;
119475    -- set the flag so later we will know whether the gain loss line needs to be created
119476    
119477    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119478      p_actual_flag :='A';
119479    END IF;
119480 
119481    --
119482    -- bulk performance
119483    --
119484    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119485                                       p_header_num   => 0); -- 4262811
119486    --
119487    -- set accounting line options
119488    --
119489    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119490            p_natural_side_code          => 'D'
119491          , p_gain_or_loss_flag          => 'N'
119492          , p_gl_transfer_mode_code      => 'S'
119493          , p_acct_entry_type_code       => 'A'
119494          , p_switch_side_flag           => 'Y'
119495          , p_merge_duplicate_code       => 'N'
119496          );
119497    --
119498    l_acc_rev_natural_side_code := 'C';  -- 4262811
119499    -- 
119500    --
119501    -- set accounting line type info
119502    --
119503    xla_ae_lines_pkg.SetAcctLineType
119504       (p_component_type             => l_component_type
119505       ,p_event_type_code            => l_event_type_code
119506       ,p_line_definition_owner_code => l_line_definition_owner_code
119507       ,p_line_definition_code       => l_line_definition_code
119508       ,p_accounting_line_code       => l_component_code
119509       ,p_accounting_line_type_code  => l_component_type_code
119510       ,p_accounting_line_appl_id    => l_component_appl_id
119511       ,p_amb_context_code           => l_amb_context_code
119512       ,p_entity_code                => l_entity_code
119513       ,p_event_class_code           => l_event_class_code);
119514    --
119515    -- set accounting class
119516    --
119517    xla_ae_lines_pkg.SetAcctClass(
119518            p_accounting_class_code  => 'INVENTORY_VALUATION'
119519          , p_ae_header_id           => l_ae_header_id
119520          );
119521 
119522    --
119523    -- set rounding class
119524    --
119525    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119526                       'INVENTORY_VALUATION';
119527 
119528    --
119529    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119530    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119531    --
119532    -- bulk performance
119533    --
119534    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119535 
119536    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119537       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119538 
119539    -- 4955764
119540    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119541       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119542 
119543    -- 4458381 Public Sector Enh
119544    
119545    --
119546    -- set accounting attributes for the line type
119547    --
119548    l_entered_amt_idx := 3;
119549    l_accted_amt_idx  := 8;
119550    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
119551    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
119552    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
119553    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
119554    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
119555    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
119556    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
119557    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
119558    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
119559    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
119560    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
119561    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
119562    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
119563    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
119564    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
119565    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
119566    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
119567 
119568    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119569    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119570 
119571    ---------------------------------------------------------------------------------------------------------------
119572    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119573    ---------------------------------------------------------------------------------------------------------------
119574    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119575 
119576    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119577    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119578 
119579    IF xla_accounting_cache_pkg.GetValueChar
119580          (p_source_code         => 'LEDGER_CATEGORY_CODE'
119581          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119582    AND l_bflow_method_code = 'PRIOR_ENTRY'
119583 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119584    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119585          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119586        )
119587    THEN
119588          xla_ae_lines_pkg.BflowUpgEntry
119589            (p_business_method_code    => l_bflow_method_code
119590            ,p_business_class_code     => l_bflow_class_code
119591            ,p_balance_type            => l_balance_type_code);
119592    ELSE
119593       NULL;
119594 -- No business flow processing for business flow method of NONE.
119595    END IF;
119596 
119597    --
119598    -- call analytical criteria
119599    --
119600    
119601 
119602 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
119603 xla_ae_lines_pkg.SetAnalyticalCriteria(
119604    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
119605  , p_analytical_criterion_owner   => 'S'
119606  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
119607  , p_amb_context_code             => 'DEFAULT'
119608  , p_balancing_flag               => 'Y'
119609  
119610  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
119611  , p_analytical_detail_num_1     =>  NULL
119612  , p_analytical_detail_date_1    =>  NULL
119613 
119614  , p_ae_header_id                 => l_ae_header_id
119615 )
119616 ;
119617 --
119618 
119619    --
119620    -- call description
119621    --
119622    
119623 xla_ae_lines_pkg.SetLineDescription(
119624    p_ae_header_id => l_ae_header_id
119625   ,p_description  => Description_1 (
119626      p_application_id         => p_application_id
119627    , p_ae_header_id           => l_ae_header_id 
119628 , p_source_1 => p_source_1
119629 , p_source_2 => p_source_2
119630 , p_source_3 => p_source_3
119631 , p_source_4 => p_source_4
119632 , p_source_5 => p_source_5
119633    )
119634 );
119635 
119636 
119637    --
119638    -- call ADRs
119639    -- Bug 4922099
119640    --
119641    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119642         (NVL(l_actual_upg_option, 'N') = 'O') OR
119643         (NVL(l_enc_upg_option, 'N') = 'O')
119644       )
119645    THEN
119646    NULL;
119647    --
119648    --
119649    
119650   l_ccid := AcctDerRule_28(
119651            p_application_id           => p_application_id
119652          , p_ae_header_id             => l_ae_header_id 
119653 , p_source_15 => p_source_15
119654 , p_source_41 => p_source_41
119655 , p_source_42 => p_source_42
119656 , p_source_43 => p_source_43
119657 , p_source_44 => p_source_44
119658 , p_source_45 => p_source_45
119659          , x_transaction_coa_id       => l_adr_transaction_coa_id
119660          , x_accounting_coa_id        => l_adr_accounting_coa_id
119661          , x_value_type_code          => l_adr_value_type_code
119662          , p_side                     => 'NA'
119663    );
119664 
119665    xla_ae_lines_pkg.set_ccid(
119666     p_code_combination_id          => l_ccid
119667   , p_value_type_code              => l_adr_value_type_code
119668   , p_transaction_coa_id           => l_adr_transaction_coa_id
119669   , p_accounting_coa_id            => l_adr_accounting_coa_id
119670   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
119671   , p_adr_type_code                => 'S'
119672   , p_component_type               => l_component_type
119673   , p_component_code               => l_component_code
119674   , p_component_type_code          => l_component_type_code
119675   , p_component_appl_id            => l_component_appl_id
119676   , p_amb_context_code             => l_amb_context_code
119677   , p_side                         => 'NA'
119678   );
119679 
119680 
119681    --
119682    --
119683    END IF;
119684    --
119685    -- Bug 4922099
119686    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119687           (NVL(l_enc_upg_option, 'N') = 'O')
119688         ) AND
119689         (l_bflow_method_code = 'PRIOR_ENTRY')
119690       )
119691    THEN
119692       IF
119693       --
119694       1 = 2
119695       --
119696       THEN
119697       xla_accounting_err_pkg.build_message
119698                                     (p_appli_s_name            => 'XLA'
119699                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119700                                     ,p_token_1                 => 'LINE_NUMBER'
119701                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
119702                                     ,p_token_2                 => 'LINE_TYPE_NAME'
119703                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
119704                                                                              l_component_type
119705                                                                             ,l_component_code
119706                                                                             ,l_component_type_code
119707                                                                             ,l_component_appl_id
119708                                                                             ,l_amb_context_code
119709                                                                             ,l_entity_code
119710                                                                             ,l_event_class_code
119711                                                                            )
119712                                     ,p_token_3                 => 'OWNER'
119713                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
119714                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
119715                                                                           ,p_lookup_code    => l_component_type_code
119716                                                                          )
119717                                     ,p_token_4                 => 'PRODUCT_NAME'
119718                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119719                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119720                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119721                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119722                                     ,p_ae_header_id            =>  NULL
119723                                        );
119724 
119725         IF (C_LEVEL_ERROR>= g_log_level) THEN
119726                  trace
119727                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119728                       ,p_level    => C_LEVEL_ERROR
119729                       ,p_module   => l_log_module);
119730         END IF;
119731       END IF;
119732    END IF;
119733    --
119734    --
119735    ------------------------------------------------------------------------------------------------
119736    -- 4219869 Business Flow
119737    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119738    -- Prior Entry.  Currently, the following code is always generated.
119739    ------------------------------------------------------------------------------------------------
119740    XLA_AE_LINES_PKG.ValidateCurrentLine;
119741 
119742    ------------------------------------------------------------------------------------
119743    -- 4219869 Business Flow
119744    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119745    ------------------------------------------------------------------------------------
119746    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119747 
119748    ----------------------------------------------------------------------------------
119749    -- 4219869 Business Flow
119750    -- Update journal entry status -- Need to generate this within IF <condition>
119751    ----------------------------------------------------------------------------------
119752    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119753          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119754          ,p_balance_type_code => l_balance_type_code
119755          );
119756 
119757    -------------------------------------------------------------------------------------------
119758    -- 4262811 - Generate the Accrual Reversal lines
119759    -------------------------------------------------------------------------------------------
119760    BEGIN
119761       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119762                               (g_array_event(p_event_id).array_value_num('header_index'));
119763       IF l_acc_rev_flag IS NULL THEN
119764          l_acc_rev_flag := 'N';
119765       END IF;
119766    EXCEPTION
119767       WHEN OTHERS THEN
119768          l_acc_rev_flag := 'N';
119769    END;
119770    --
119771    IF (l_acc_rev_flag = 'Y') THEN
119772 
119773        -- 4645092  ------------------------------------------------------------------------------
119774        -- To allow MPA report to determine if it should generate report process
119775        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119776        ------------------------------------------------------------------------------------------
119777 
119778        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119779        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119780    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
119781    -- call ADRs
119782    -- Bug 4922099
119783    --
119784    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119785         (NVL(l_actual_upg_option, 'N') = 'O') OR
119786         (NVL(l_enc_upg_option, 'N') = 'O')
119787       )
119788    THEN
119789    NULL;
119790    --
119791    --
119792    
119793   l_ccid := AcctDerRule_28(
119794            p_application_id           => p_application_id
119795          , p_ae_header_id             => l_ae_header_id 
119796 , p_source_15 => p_source_15
119797 , p_source_41 => p_source_41
119798 , p_source_42 => p_source_42
119799 , p_source_43 => p_source_43
119800 , p_source_44 => p_source_44
119801 , p_source_45 => p_source_45
119802          , x_transaction_coa_id       => l_adr_transaction_coa_id
119803          , x_accounting_coa_id        => l_adr_accounting_coa_id
119804          , x_value_type_code          => l_adr_value_type_code
119805          , p_side                     => 'NA'
119806    );
119807 
119808    xla_ae_lines_pkg.set_ccid(
119809     p_code_combination_id          => l_ccid
119810   , p_value_type_code              => l_adr_value_type_code
119811   , p_transaction_coa_id           => l_adr_transaction_coa_id
119812   , p_accounting_coa_id            => l_adr_accounting_coa_id
119813   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
119814   , p_adr_type_code                => 'S'
119815   , p_component_type               => l_component_type
119816   , p_component_code               => l_component_code
119817   , p_component_type_code          => l_component_type_code
119818   , p_component_appl_id            => l_component_appl_id
119819   , p_amb_context_code             => l_amb_context_code
119820   , p_side                         => 'NA'
119821   );
119822 
119823 
119824    --
119825    --
119826    END IF;
119827 
119828        --
119829        -- Update the line information that should be overwritten
119830        --
119831        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119832                                          p_header_num   => 1);
119833        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
119834 
119835        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119836 
119837        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
119838           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119839        END IF;
119840 
119841       --
119842       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119843       --
119844       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119845           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
119846       ELSE
119847           ---------------------------------------------------------------------------------------------------
119848           -- 4262811a Switch Sign
119849           ---------------------------------------------------------------------------------------------------
119850           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
119851           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119852                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119853           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119854                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119855           -- 5132302
119856           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119857                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119858 
119859       END IF;
119860 
119861       -- 4955764
119862       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119863       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119864 
119865 
119866       XLA_AE_LINES_PKG.ValidateCurrentLine;
119867       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119868 
119869       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119870                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119871                ,p_balance_type_code => l_balance_type_code);
119872 
119873    END IF;
119874 
119875    -----------------------------------------------------------------------------------------
119876    -- 4262811 Multiperiod Accounting
119877    -----------------------------------------------------------------------------------------
119878      -- No MPA option is assigned.
119879 
119880 
119881 END IF;
119882 END IF;
119883 --
119884 
119885 --
119886 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119887    trace
119888       (p_msg      => 'END of AcctLineType_232'
119889       ,p_level    => C_LEVEL_PROCEDURE
119890       ,p_module   => l_log_module);
119891 END IF;
119892 --
119893 EXCEPTION
119894   WHEN xla_exceptions_pkg.application_exception THEN
119895       RAISE;
119896   WHEN OTHERS THEN
119897        xla_exceptions_pkg.raise_message
119898            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_232');
119899 END AcctLineType_232;
119900 --
119901 
119902 ---------------------------------------
119903 --
119904 -- PRIVATE FUNCTION
119905 --         AcctLineType_233
119906 --
119907 ---------------------------------------
119908 PROCEDURE AcctLineType_233 (
119909   p_application_id        IN NUMBER
119910  ,p_event_id              IN NUMBER
119911  ,p_calculate_acctd_flag  IN VARCHAR2
119912  ,p_calculate_g_l_flag    IN VARCHAR2
119913  ,p_actual_flag           IN OUT VARCHAR2
119914  ,p_balance_type_code     OUT VARCHAR2
119915  ,p_gain_or_loss_ref      OUT VARCHAR2
119916  
119917 --TRANSACTION_ID
119918  , p_source_1            IN NUMBER
119919 --Item Concatenated Segments
119920  , p_source_2            IN VARCHAR2
119921 --Transaction Quantity
119922  , p_source_3            IN NUMBER
119923 --Transaction Unit of Measure Code
119924  , p_source_4            IN VARCHAR2
119925 --Inventory Transaction Type Description
119926  , p_source_5            IN VARCHAR2
119927 --Cost Element Name
119928  , p_source_15            IN NUMBER
119929 --Product Line Accounting Category Material Account
119930  , p_source_41            IN NUMBER
119931 --Product Line Accounting Category Material Overhead Account
119932  , p_source_42            IN NUMBER
119933 --Product Line Accounting Category Resource Account
119934  , p_source_43            IN NUMBER
119935 --Product Line Accounting Category Outside Processing Account
119936  , p_source_44            IN NUMBER
119937 --Product Line Accounting Category Overhead Account
119938  , p_source_45            IN NUMBER
119939 --DISTRIBUTION_IDENTIFIER
119940  , p_source_84            IN NUMBER
119941 --Distribution Type
119942  , p_source_85            IN VARCHAR2
119943  , p_source_85_meaning    IN VARCHAR2
119944 --Entered Currency Code
119945  , p_source_88            IN VARCHAR2
119946 --Entered Amount
119947  , p_source_91            IN NUMBER
119948 --Currency Conversion Date
119949  , p_source_92            IN DATE
119950 --Currency Conversion Rate
119951  , p_source_93            IN NUMBER
119952 --Currency Conversion Type
119953  , p_source_94            IN VARCHAR2
119954 --Accounted Amount
119955  , p_source_95            IN NUMBER
119956 --Accounting Line Type
119957  , p_source_97            IN NUMBER
119958 --Organization Code
119959  , p_source_108            IN VARCHAR2
119960 )
119961 IS
119962 
119963 l_component_type              VARCHAR2(80);
119964 l_component_code              VARCHAR2(30);
119965 l_component_type_code         VARCHAR2(1);
119966 l_component_appl_id           INTEGER;
119967 l_amb_context_code            VARCHAR2(30);
119968 l_entity_code                 VARCHAR2(30);
119969 l_event_class_code            VARCHAR2(30);
119970 l_ae_header_id                NUMBER;
119971 l_event_type_code             VARCHAR2(30);
119972 l_line_definition_code        VARCHAR2(30);
119973 l_line_definition_owner_code  VARCHAR2(1);
119974 --
119975 -- adr variables
119976 l_segment                     VARCHAR2(30);
119977 l_ccid                        NUMBER;
119978 l_adr_transaction_coa_id      NUMBER;
119979 l_adr_accounting_coa_id       NUMBER;
119980 l_adr_flexfield_segment_code  VARCHAR2(30);
119981 l_adr_flex_value_set_id       NUMBER;
119982 l_adr_value_type_code         VARCHAR2(30);
119983 l_adr_value_combination_id    NUMBER;
119984 l_adr_value_segment_code      VARCHAR2(30);
119985 
119986 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
119987 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
119988 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
119989 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
119990 
119991 -- 4262811 Variables ------------------------------------------------------------------------------------------
119992 l_entered_amt_idx             NUMBER;
119993 l_accted_amt_idx              NUMBER;
119994 l_acc_rev_flag                VARCHAR2(1);
119995 l_accrual_line_num            NUMBER;
119996 l_tmp_amt                     NUMBER;
119997 l_acc_rev_natural_side_code   VARCHAR2(1);
119998 
119999 l_num_entries                 NUMBER;
120000 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
120001 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
120002 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
120003 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
120004 l_recog_line_1                NUMBER;
120005 l_recog_line_2                NUMBER;
120006 
120007 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
120008 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
120009 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
120010 
120011 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120012 
120013 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
120014 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
120015 
120016 ---------------------------------------------------------------------------------------------------------------
120017 
120018 
120019 --
120020 -- bulk performance
120021 --
120022 l_balance_type_code           VARCHAR2(1);
120023 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
120024 l_log_module                  VARCHAR2(240);
120025 
120026 --
120027 -- Upgrade strategy
120028 --
120029 l_actual_upg_option           VARCHAR2(1);
120030 l_enc_upg_option           VARCHAR2(1);
120031 
120032 --
120033 BEGIN
120034 --
120035 IF g_log_enabled THEN
120036       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_233';
120037 END IF;
120038 --
120039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120040 
120041       trace
120042          (p_msg      => 'BEGIN of AcctLineType_233'
120043          ,p_level    => C_LEVEL_PROCEDURE
120044          ,p_module   => l_log_module);
120045 
120046 END IF;
120047 --
120048 l_component_type             := 'AMB_JLT';
120049 l_component_code             := 'INVENTORY_VALUATION';
120050 l_component_type_code        := 'S';
120051 l_component_appl_id          :=  707;
120052 l_amb_context_code           := 'DEFAULT';
120053 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
120054 l_event_class_code           := 'LOG_INTERCOMPANY';
120055 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
120056 l_line_definition_owner_code := 'S';
120057 l_line_definition_code       := 'PI_LOG_IC_SHIPMENT_RCPT';
120058 --
120059 l_balance_type_code          := 'A';
120060 l_segment                     := NULL;
120061 l_ccid                        := NULL;
120062 l_adr_transaction_coa_id      := NULL;
120063 l_adr_accounting_coa_id       := NULL;
120064 l_adr_flexfield_segment_code  := NULL;
120065 l_adr_flex_value_set_id       := NULL;
120066 l_adr_value_type_code         := NULL;
120067 l_adr_value_combination_id    := NULL;
120068 l_adr_value_segment_code      := NULL;
120069 
120070 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
120071 l_bflow_class_code           := '';    -- 4219869 Business Flow
120072 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
120073 l_budgetary_control_flag     := 'N';
120074 
120075 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
120076 l_bflow_applied_to_amt       := NULL; -- 5132302
120077 l_entered_amt_idx            := NULL;          -- 4262811
120078 l_accted_amt_idx             := NULL;          -- 4262811
120079 l_acc_rev_flag               := NULL;          -- 4262811
120080 l_accrual_line_num           := NULL;          -- 4262811
120081 l_tmp_amt                    := NULL;          -- 4262811
120082 --
120083  
120084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120085     l_balance_type_code <> 'B' THEN
120086 IF NVL(p_source_97,9E125) =  1
120087  THEN 
120088 
120089    --
120090    XLA_AE_LINES_PKG.SetNewLine;
120091 
120092    p_balance_type_code          := l_balance_type_code;
120093    -- set the flag so later we will know whether the gain loss line needs to be created
120094    
120095    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120096      p_actual_flag :='A';
120097    END IF;
120098 
120099    --
120100    -- bulk performance
120101    --
120102    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120103                                       p_header_num   => 0); -- 4262811
120104    --
120105    -- set accounting line options
120106    --
120107    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120108            p_natural_side_code          => 'D'
120109          , p_gain_or_loss_flag          => 'N'
120110          , p_gl_transfer_mode_code      => 'S'
120111          , p_acct_entry_type_code       => 'A'
120112          , p_switch_side_flag           => 'Y'
120113          , p_merge_duplicate_code       => 'N'
120114          );
120115    --
120116    l_acc_rev_natural_side_code := 'C';  -- 4262811
120117    -- 
120118    --
120119    -- set accounting line type info
120120    --
120121    xla_ae_lines_pkg.SetAcctLineType
120122       (p_component_type             => l_component_type
120123       ,p_event_type_code            => l_event_type_code
120124       ,p_line_definition_owner_code => l_line_definition_owner_code
120125       ,p_line_definition_code       => l_line_definition_code
120126       ,p_accounting_line_code       => l_component_code
120127       ,p_accounting_line_type_code  => l_component_type_code
120128       ,p_accounting_line_appl_id    => l_component_appl_id
120129       ,p_amb_context_code           => l_amb_context_code
120130       ,p_entity_code                => l_entity_code
120131       ,p_event_class_code           => l_event_class_code);
120132    --
120133    -- set accounting class
120134    --
120135    xla_ae_lines_pkg.SetAcctClass(
120136            p_accounting_class_code  => 'INVENTORY_VALUATION'
120137          , p_ae_header_id           => l_ae_header_id
120138          );
120139 
120140    --
120141    -- set rounding class
120142    --
120143    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120144                       'INVENTORY_VALUATION';
120145 
120146    --
120147    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120148    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120149    --
120150    -- bulk performance
120151    --
120152    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120153 
120154    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120155       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120156 
120157    -- 4955764
120158    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120159       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120160 
120161    -- 4458381 Public Sector Enh
120162    
120163    --
120164    -- set accounting attributes for the line type
120165    --
120166    l_entered_amt_idx := 3;
120167    l_accted_amt_idx  := 8;
120168    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
120169    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120170    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
120171    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120172    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
120173    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120174    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
120175    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120176    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
120177    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120178    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
120179    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120180    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
120181    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120182    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
120183    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120184    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
120185 
120186    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120187    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120188 
120189    ---------------------------------------------------------------------------------------------------------------
120190    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120191    ---------------------------------------------------------------------------------------------------------------
120192    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120193 
120194    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120195    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120196 
120197    IF xla_accounting_cache_pkg.GetValueChar
120198          (p_source_code         => 'LEDGER_CATEGORY_CODE'
120199          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120200    AND l_bflow_method_code = 'PRIOR_ENTRY'
120201 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120202    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120203          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120204        )
120205    THEN
120206          xla_ae_lines_pkg.BflowUpgEntry
120207            (p_business_method_code    => l_bflow_method_code
120208            ,p_business_class_code     => l_bflow_class_code
120209            ,p_balance_type            => l_balance_type_code);
120210    ELSE
120211       NULL;
120212 -- No business flow processing for business flow method of NONE.
120213    END IF;
120214 
120215    --
120216    -- call analytical criteria
120217    --
120218    
120219 
120220 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
120221 xla_ae_lines_pkg.SetAnalyticalCriteria(
120222    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
120223  , p_analytical_criterion_owner   => 'S'
120224  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
120225  , p_amb_context_code             => 'DEFAULT'
120226  , p_balancing_flag               => 'Y'
120227  
120228  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
120229  , p_analytical_detail_num_1     =>  NULL
120230  , p_analytical_detail_date_1    =>  NULL
120231 
120232  , p_ae_header_id                 => l_ae_header_id
120233 )
120234 ;
120235 --
120236 
120237    --
120238    -- call description
120239    --
120240    
120241 xla_ae_lines_pkg.SetLineDescription(
120242    p_ae_header_id => l_ae_header_id
120243   ,p_description  => Description_1 (
120244      p_application_id         => p_application_id
120245    , p_ae_header_id           => l_ae_header_id 
120246 , p_source_1 => p_source_1
120247 , p_source_2 => p_source_2
120248 , p_source_3 => p_source_3
120249 , p_source_4 => p_source_4
120250 , p_source_5 => p_source_5
120251    )
120252 );
120253 
120254 
120255    --
120256    -- call ADRs
120257    -- Bug 4922099
120258    --
120259    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120260         (NVL(l_actual_upg_option, 'N') = 'O') OR
120261         (NVL(l_enc_upg_option, 'N') = 'O')
120262       )
120263    THEN
120264    NULL;
120265    --
120266    --
120267    
120268   l_ccid := AcctDerRule_28(
120269            p_application_id           => p_application_id
120270          , p_ae_header_id             => l_ae_header_id 
120271 , p_source_15 => p_source_15
120272 , p_source_41 => p_source_41
120273 , p_source_42 => p_source_42
120274 , p_source_43 => p_source_43
120275 , p_source_44 => p_source_44
120276 , p_source_45 => p_source_45
120277          , x_transaction_coa_id       => l_adr_transaction_coa_id
120278          , x_accounting_coa_id        => l_adr_accounting_coa_id
120279          , x_value_type_code          => l_adr_value_type_code
120280          , p_side                     => 'NA'
120281    );
120282 
120283    xla_ae_lines_pkg.set_ccid(
120284     p_code_combination_id          => l_ccid
120285   , p_value_type_code              => l_adr_value_type_code
120286   , p_transaction_coa_id           => l_adr_transaction_coa_id
120287   , p_accounting_coa_id            => l_adr_accounting_coa_id
120288   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
120289   , p_adr_type_code                => 'S'
120290   , p_component_type               => l_component_type
120291   , p_component_code               => l_component_code
120292   , p_component_type_code          => l_component_type_code
120293   , p_component_appl_id            => l_component_appl_id
120294   , p_amb_context_code             => l_amb_context_code
120295   , p_side                         => 'NA'
120296   );
120297 
120298 
120299    --
120300    --
120301    END IF;
120302    --
120303    -- Bug 4922099
120304    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120305           (NVL(l_enc_upg_option, 'N') = 'O')
120306         ) AND
120307         (l_bflow_method_code = 'PRIOR_ENTRY')
120308       )
120309    THEN
120310       IF
120311       --
120312       1 = 2
120313       --
120314       THEN
120315       xla_accounting_err_pkg.build_message
120316                                     (p_appli_s_name            => 'XLA'
120317                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120318                                     ,p_token_1                 => 'LINE_NUMBER'
120319                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
120320                                     ,p_token_2                 => 'LINE_TYPE_NAME'
120321                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
120322                                                                              l_component_type
120323                                                                             ,l_component_code
120324                                                                             ,l_component_type_code
120325                                                                             ,l_component_appl_id
120326                                                                             ,l_amb_context_code
120327                                                                             ,l_entity_code
120328                                                                             ,l_event_class_code
120329                                                                            )
120330                                     ,p_token_3                 => 'OWNER'
120331                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
120332                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
120333                                                                           ,p_lookup_code    => l_component_type_code
120334                                                                          )
120335                                     ,p_token_4                 => 'PRODUCT_NAME'
120336                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120337                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120338                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120339                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120340                                     ,p_ae_header_id            =>  NULL
120341                                        );
120342 
120343         IF (C_LEVEL_ERROR>= g_log_level) THEN
120344                  trace
120345                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120346                       ,p_level    => C_LEVEL_ERROR
120347                       ,p_module   => l_log_module);
120348         END IF;
120349       END IF;
120350    END IF;
120351    --
120352    --
120353    ------------------------------------------------------------------------------------------------
120354    -- 4219869 Business Flow
120355    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120356    -- Prior Entry.  Currently, the following code is always generated.
120357    ------------------------------------------------------------------------------------------------
120358    XLA_AE_LINES_PKG.ValidateCurrentLine;
120359 
120360    ------------------------------------------------------------------------------------
120361    -- 4219869 Business Flow
120362    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120363    ------------------------------------------------------------------------------------
120364    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120365 
120366    ----------------------------------------------------------------------------------
120367    -- 4219869 Business Flow
120368    -- Update journal entry status -- Need to generate this within IF <condition>
120369    ----------------------------------------------------------------------------------
120370    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120371          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120372          ,p_balance_type_code => l_balance_type_code
120373          );
120374 
120375    -------------------------------------------------------------------------------------------
120376    -- 4262811 - Generate the Accrual Reversal lines
120377    -------------------------------------------------------------------------------------------
120378    BEGIN
120379       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
120380                               (g_array_event(p_event_id).array_value_num('header_index'));
120381       IF l_acc_rev_flag IS NULL THEN
120382          l_acc_rev_flag := 'N';
120383       END IF;
120384    EXCEPTION
120385       WHEN OTHERS THEN
120386          l_acc_rev_flag := 'N';
120387    END;
120388    --
120389    IF (l_acc_rev_flag = 'Y') THEN
120390 
120391        -- 4645092  ------------------------------------------------------------------------------
120392        -- To allow MPA report to determine if it should generate report process
120393        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
120394        ------------------------------------------------------------------------------------------
120395 
120396        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
120397        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
120398    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
120399    -- call ADRs
120400    -- Bug 4922099
120401    --
120402    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120403         (NVL(l_actual_upg_option, 'N') = 'O') OR
120404         (NVL(l_enc_upg_option, 'N') = 'O')
120405       )
120406    THEN
120407    NULL;
120408    --
120409    --
120410    
120411   l_ccid := AcctDerRule_28(
120412            p_application_id           => p_application_id
120413          , p_ae_header_id             => l_ae_header_id 
120414 , p_source_15 => p_source_15
120415 , p_source_41 => p_source_41
120416 , p_source_42 => p_source_42
120417 , p_source_43 => p_source_43
120418 , p_source_44 => p_source_44
120419 , p_source_45 => p_source_45
120420          , x_transaction_coa_id       => l_adr_transaction_coa_id
120421          , x_accounting_coa_id        => l_adr_accounting_coa_id
120422          , x_value_type_code          => l_adr_value_type_code
120423          , p_side                     => 'NA'
120424    );
120425 
120426    xla_ae_lines_pkg.set_ccid(
120427     p_code_combination_id          => l_ccid
120428   , p_value_type_code              => l_adr_value_type_code
120429   , p_transaction_coa_id           => l_adr_transaction_coa_id
120430   , p_accounting_coa_id            => l_adr_accounting_coa_id
120431   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
120432   , p_adr_type_code                => 'S'
120433   , p_component_type               => l_component_type
120434   , p_component_code               => l_component_code
120435   , p_component_type_code          => l_component_type_code
120436   , p_component_appl_id            => l_component_appl_id
120437   , p_amb_context_code             => l_amb_context_code
120438   , p_side                         => 'NA'
120439   );
120440 
120441 
120442    --
120443    --
120444    END IF;
120445 
120446        --
120447        -- Update the line information that should be overwritten
120448        --
120449        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
120450                                          p_header_num   => 1);
120451        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
120452 
120453        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
120454 
120455        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
120456           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
120457        END IF;
120458 
120459       --
120460       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
120461       --
120462       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
120463           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
120464       ELSE
120465           ---------------------------------------------------------------------------------------------------
120466           -- 4262811a Switch Sign
120467           ---------------------------------------------------------------------------------------------------
120468           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
120469           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120470                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120471           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120472                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120473           -- 5132302
120474           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
120475                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120476 
120477       END IF;
120478 
120479       -- 4955764
120480       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120481       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
120482 
120483 
120484       XLA_AE_LINES_PKG.ValidateCurrentLine;
120485       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120486 
120487       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120488                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120489                ,p_balance_type_code => l_balance_type_code);
120490 
120491    END IF;
120492 
120493    -----------------------------------------------------------------------------------------
120494    -- 4262811 Multiperiod Accounting
120495    -----------------------------------------------------------------------------------------
120496      -- No MPA option is assigned.
120497 
120498 
120499 END IF;
120500 END IF;
120501 --
120502 
120503 --
120504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120505    trace
120506       (p_msg      => 'END of AcctLineType_233'
120507       ,p_level    => C_LEVEL_PROCEDURE
120508       ,p_module   => l_log_module);
120509 END IF;
120510 --
120511 EXCEPTION
120512   WHEN xla_exceptions_pkg.application_exception THEN
120513       RAISE;
120514   WHEN OTHERS THEN
120515        xla_exceptions_pkg.raise_message
120516            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_233');
120517 END AcctLineType_233;
120518 --
120519 
120520 ---------------------------------------
120521 --
120522 -- PRIVATE FUNCTION
120523 --         AcctLineType_234
120524 --
120525 ---------------------------------------
120526 PROCEDURE AcctLineType_234 (
120527   p_application_id        IN NUMBER
120528  ,p_event_id              IN NUMBER
120529  ,p_calculate_acctd_flag  IN VARCHAR2
120530  ,p_calculate_g_l_flag    IN VARCHAR2
120531  ,p_actual_flag           IN OUT VARCHAR2
120532  ,p_balance_type_code     OUT VARCHAR2
120533  ,p_gain_or_loss_ref      OUT VARCHAR2
120534  
120535 --Cost Management Default Account
120536  , p_source_11            IN NUMBER
120537 --DISTRIBUTION_IDENTIFIER
120538  , p_source_84            IN NUMBER
120539 --Distribution Type
120540  , p_source_85            IN VARCHAR2
120541  , p_source_85_meaning    IN VARCHAR2
120542 --Entered Currency Code
120543  , p_source_88            IN VARCHAR2
120544 --Entered Amount
120545  , p_source_91            IN NUMBER
120546 --Currency Conversion Date
120547  , p_source_92            IN DATE
120548 --Currency Conversion Rate
120549  , p_source_93            IN NUMBER
120550 --Currency Conversion Type
120551  , p_source_94            IN VARCHAR2
120552 --Accounted Amount
120553  , p_source_95            IN NUMBER
120554 --Accounting Line Type
120555  , p_source_97            IN NUMBER
120556 --Organization Code
120557  , p_source_108            IN VARCHAR2
120558 )
120559 IS
120560 
120561 l_component_type              VARCHAR2(80);
120562 l_component_code              VARCHAR2(30);
120563 l_component_type_code         VARCHAR2(1);
120564 l_component_appl_id           INTEGER;
120565 l_amb_context_code            VARCHAR2(30);
120566 l_entity_code                 VARCHAR2(30);
120567 l_event_class_code            VARCHAR2(30);
120568 l_ae_header_id                NUMBER;
120569 l_event_type_code             VARCHAR2(30);
120570 l_line_definition_code        VARCHAR2(30);
120571 l_line_definition_owner_code  VARCHAR2(1);
120572 --
120573 -- adr variables
120574 l_segment                     VARCHAR2(30);
120575 l_ccid                        NUMBER;
120576 l_adr_transaction_coa_id      NUMBER;
120577 l_adr_accounting_coa_id       NUMBER;
120578 l_adr_flexfield_segment_code  VARCHAR2(30);
120579 l_adr_flex_value_set_id       NUMBER;
120580 l_adr_value_type_code         VARCHAR2(30);
120581 l_adr_value_combination_id    NUMBER;
120582 l_adr_value_segment_code      VARCHAR2(30);
120583 
120584 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
120585 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
120586 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
120587 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
120588 
120589 -- 4262811 Variables ------------------------------------------------------------------------------------------
120590 l_entered_amt_idx             NUMBER;
120591 l_accted_amt_idx              NUMBER;
120592 l_acc_rev_flag                VARCHAR2(1);
120593 l_accrual_line_num            NUMBER;
120594 l_tmp_amt                     NUMBER;
120595 l_acc_rev_natural_side_code   VARCHAR2(1);
120596 
120597 l_num_entries                 NUMBER;
120598 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
120599 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
120600 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
120601 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
120602 l_recog_line_1                NUMBER;
120603 l_recog_line_2                NUMBER;
120604 
120605 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
120606 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
120607 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
120608 
120609 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120610 
120611 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
120612 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
120613 
120614 ---------------------------------------------------------------------------------------------------------------
120615 
120616 
120617 --
120618 -- bulk performance
120619 --
120620 l_balance_type_code           VARCHAR2(1);
120621 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
120622 l_log_module                  VARCHAR2(240);
120623 
120624 --
120625 -- Upgrade strategy
120626 --
120627 l_actual_upg_option           VARCHAR2(1);
120628 l_enc_upg_option           VARCHAR2(1);
120629 
120630 --
120631 BEGIN
120632 --
120633 IF g_log_enabled THEN
120634       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_234';
120635 END IF;
120636 --
120637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120638 
120639       trace
120640          (p_msg      => 'BEGIN of AcctLineType_234'
120641          ,p_level    => C_LEVEL_PROCEDURE
120642          ,p_module   => l_log_module);
120643 
120644 END IF;
120645 --
120646 l_component_type             := 'AMB_JLT';
120647 l_component_code             := 'INVENTORY_VALUATION';
120648 l_component_type_code        := 'S';
120649 l_component_appl_id          :=  707;
120650 l_amb_context_code           := 'DEFAULT';
120651 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
120652 l_event_class_code           := 'SALES_ORDER';
120653 l_event_type_code            := 'COGS_RECOGNITION_ADJ';
120654 l_line_definition_owner_code := 'S';
120655 l_line_definition_code       := 'PI_COGS_RECOGNITION_ADJ';
120656 --
120657 l_balance_type_code          := 'A';
120658 l_segment                     := NULL;
120659 l_ccid                        := NULL;
120660 l_adr_transaction_coa_id      := NULL;
120661 l_adr_accounting_coa_id       := NULL;
120662 l_adr_flexfield_segment_code  := NULL;
120663 l_adr_flex_value_set_id       := NULL;
120664 l_adr_value_type_code         := NULL;
120665 l_adr_value_combination_id    := NULL;
120666 l_adr_value_segment_code      := NULL;
120667 
120668 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
120669 l_bflow_class_code           := '';    -- 4219869 Business Flow
120670 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
120671 l_budgetary_control_flag     := 'N';
120672 
120673 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
120674 l_bflow_applied_to_amt       := NULL; -- 5132302
120675 l_entered_amt_idx            := NULL;          -- 4262811
120676 l_accted_amt_idx             := NULL;          -- 4262811
120677 l_acc_rev_flag               := NULL;          -- 4262811
120678 l_accrual_line_num           := NULL;          -- 4262811
120679 l_tmp_amt                    := NULL;          -- 4262811
120680 --
120681  
120682 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120683     l_balance_type_code <> 'B' THEN
120684 IF NVL(p_source_97,9E125) =  1
120685  THEN 
120686 
120687    --
120688    XLA_AE_LINES_PKG.SetNewLine;
120689 
120690    p_balance_type_code          := l_balance_type_code;
120691    -- set the flag so later we will know whether the gain loss line needs to be created
120692    
120693    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120694      p_actual_flag :='A';
120695    END IF;
120696 
120697    --
120698    -- bulk performance
120699    --
120700    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120701                                       p_header_num   => 0); -- 4262811
120702    --
120703    -- set accounting line options
120704    --
120705    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120706            p_natural_side_code          => 'D'
120707          , p_gain_or_loss_flag          => 'N'
120708          , p_gl_transfer_mode_code      => 'S'
120709          , p_acct_entry_type_code       => 'A'
120710          , p_switch_side_flag           => 'Y'
120711          , p_merge_duplicate_code       => 'N'
120712          );
120713    --
120714    l_acc_rev_natural_side_code := 'C';  -- 4262811
120715    -- 
120716    --
120717    -- set accounting line type info
120718    --
120719    xla_ae_lines_pkg.SetAcctLineType
120720       (p_component_type             => l_component_type
120721       ,p_event_type_code            => l_event_type_code
120722       ,p_line_definition_owner_code => l_line_definition_owner_code
120723       ,p_line_definition_code       => l_line_definition_code
120724       ,p_accounting_line_code       => l_component_code
120725       ,p_accounting_line_type_code  => l_component_type_code
120726       ,p_accounting_line_appl_id    => l_component_appl_id
120727       ,p_amb_context_code           => l_amb_context_code
120728       ,p_entity_code                => l_entity_code
120729       ,p_event_class_code           => l_event_class_code);
120730    --
120731    -- set accounting class
120732    --
120733    xla_ae_lines_pkg.SetAcctClass(
120734            p_accounting_class_code  => 'INVENTORY_VALUATION'
120735          , p_ae_header_id           => l_ae_header_id
120736          );
120737 
120738    --
120739    -- set rounding class
120740    --
120741    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120742                       'INVENTORY_VALUATION';
120743 
120744    --
120745    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120746    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120747    --
120748    -- bulk performance
120749    --
120750    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120751 
120752    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120753       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120754 
120755    -- 4955764
120756    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120757       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120758 
120759    -- 4458381 Public Sector Enh
120760    
120761    --
120762    -- set accounting attributes for the line type
120763    --
120764    l_entered_amt_idx := 3;
120765    l_accted_amt_idx  := 8;
120766    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
120767    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120768    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
120769    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120770    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
120771    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120772    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
120773    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120774    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
120775    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120776    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
120777    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120778    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
120779    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120780    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
120781    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120782    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
120783 
120784    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120785    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120786 
120787    ---------------------------------------------------------------------------------------------------------------
120788    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120789    ---------------------------------------------------------------------------------------------------------------
120790    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120791 
120792    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120793    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120794 
120795    IF xla_accounting_cache_pkg.GetValueChar
120796          (p_source_code         => 'LEDGER_CATEGORY_CODE'
120797          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120798    AND l_bflow_method_code = 'PRIOR_ENTRY'
120799 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120800    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120801          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120802        )
120803    THEN
120804          xla_ae_lines_pkg.BflowUpgEntry
120805            (p_business_method_code    => l_bflow_method_code
120806            ,p_business_class_code     => l_bflow_class_code
120807            ,p_balance_type            => l_balance_type_code);
120808    ELSE
120809       NULL;
120810 -- No business flow processing for business flow method of NONE.
120811    END IF;
120812 
120813    --
120814    -- call analytical criteria
120815    --
120816    
120817 
120818 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
120819 xla_ae_lines_pkg.SetAnalyticalCriteria(
120820    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
120821  , p_analytical_criterion_owner   => 'S'
120822  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
120823  , p_amb_context_code             => 'DEFAULT'
120824  , p_balancing_flag               => 'Y'
120825  
120826  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
120827  , p_analytical_detail_num_1     =>  NULL
120828  , p_analytical_detail_date_1    =>  NULL
120829 
120830  , p_ae_header_id                 => l_ae_header_id
120831 )
120832 ;
120833 --
120834 
120835    --
120836    -- call description
120837    --
120838    -- No description or it is inherited.
120839    --
120840    -- call ADRs
120841    -- Bug 4922099
120842    --
120843    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120844         (NVL(l_actual_upg_option, 'N') = 'O') OR
120845         (NVL(l_enc_upg_option, 'N') = 'O')
120846       )
120847    THEN
120848    NULL;
120849    --
120850    --
120851    
120852   l_ccid := AcctDerRule_6(
120853            p_application_id           => p_application_id
120854          , p_ae_header_id             => l_ae_header_id 
120855 , p_source_11 => p_source_11
120856          , x_transaction_coa_id       => l_adr_transaction_coa_id
120857          , x_accounting_coa_id        => l_adr_accounting_coa_id
120858          , x_value_type_code          => l_adr_value_type_code
120859          , p_side                     => 'NA'
120860    );
120861 
120862    xla_ae_lines_pkg.set_ccid(
120863     p_code_combination_id          => l_ccid
120864   , p_value_type_code              => l_adr_value_type_code
120865   , p_transaction_coa_id           => l_adr_transaction_coa_id
120866   , p_accounting_coa_id            => l_adr_accounting_coa_id
120867   , p_adr_code                     => 'CST_DEFAULT'
120868   , p_adr_type_code                => 'S'
120869   , p_component_type               => l_component_type
120870   , p_component_code               => l_component_code
120871   , p_component_type_code          => l_component_type_code
120872   , p_component_appl_id            => l_component_appl_id
120873   , p_amb_context_code             => l_amb_context_code
120874   , p_side                         => 'NA'
120875   );
120876 
120877 
120878    --
120879    --
120880    END IF;
120881    --
120882    -- Bug 4922099
120883    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120884           (NVL(l_enc_upg_option, 'N') = 'O')
120885         ) AND
120886         (l_bflow_method_code = 'PRIOR_ENTRY')
120887       )
120888    THEN
120889       IF
120890       --
120891       1 = 2
120892       --
120893       THEN
120894       xla_accounting_err_pkg.build_message
120895                                     (p_appli_s_name            => 'XLA'
120896                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120897                                     ,p_token_1                 => 'LINE_NUMBER'
120898                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
120899                                     ,p_token_2                 => 'LINE_TYPE_NAME'
120900                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
120901                                                                              l_component_type
120902                                                                             ,l_component_code
120903                                                                             ,l_component_type_code
120904                                                                             ,l_component_appl_id
120905                                                                             ,l_amb_context_code
120906                                                                             ,l_entity_code
120907                                                                             ,l_event_class_code
120908                                                                            )
120909                                     ,p_token_3                 => 'OWNER'
120910                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
120911                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
120912                                                                           ,p_lookup_code    => l_component_type_code
120913                                                                          )
120914                                     ,p_token_4                 => 'PRODUCT_NAME'
120915                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120916                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120917                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120918                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120919                                     ,p_ae_header_id            =>  NULL
120920                                        );
120921 
120922         IF (C_LEVEL_ERROR>= g_log_level) THEN
120923                  trace
120924                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120925                       ,p_level    => C_LEVEL_ERROR
120926                       ,p_module   => l_log_module);
120927         END IF;
120928       END IF;
120929    END IF;
120930    --
120931    --
120932    ------------------------------------------------------------------------------------------------
120933    -- 4219869 Business Flow
120934    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120935    -- Prior Entry.  Currently, the following code is always generated.
120936    ------------------------------------------------------------------------------------------------
120937    XLA_AE_LINES_PKG.ValidateCurrentLine;
120938 
120939    ------------------------------------------------------------------------------------
120940    -- 4219869 Business Flow
120941    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120942    ------------------------------------------------------------------------------------
120943    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120944 
120945    ----------------------------------------------------------------------------------
120946    -- 4219869 Business Flow
120947    -- Update journal entry status -- Need to generate this within IF <condition>
120948    ----------------------------------------------------------------------------------
120949    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120950          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120951          ,p_balance_type_code => l_balance_type_code
120952          );
120953 
120954    -------------------------------------------------------------------------------------------
120955    -- 4262811 - Generate the Accrual Reversal lines
120956    -------------------------------------------------------------------------------------------
120957    BEGIN
120958       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
120959                               (g_array_event(p_event_id).array_value_num('header_index'));
120960       IF l_acc_rev_flag IS NULL THEN
120961          l_acc_rev_flag := 'N';
120962       END IF;
120963    EXCEPTION
120964       WHEN OTHERS THEN
120965          l_acc_rev_flag := 'N';
120966    END;
120967    --
120968    IF (l_acc_rev_flag = 'Y') THEN
120969 
120970        -- 4645092  ------------------------------------------------------------------------------
120971        -- To allow MPA report to determine if it should generate report process
120972        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
120973        ------------------------------------------------------------------------------------------
120974 
120975        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
120976        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
120977    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
120978    -- call ADRs
120979    -- Bug 4922099
120980    --
120981    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120982         (NVL(l_actual_upg_option, 'N') = 'O') OR
120983         (NVL(l_enc_upg_option, 'N') = 'O')
120984       )
120985    THEN
120986    NULL;
120987    --
120988    --
120989    
120990   l_ccid := AcctDerRule_6(
120991            p_application_id           => p_application_id
120992          , p_ae_header_id             => l_ae_header_id 
120993 , p_source_11 => p_source_11
120994          , x_transaction_coa_id       => l_adr_transaction_coa_id
120995          , x_accounting_coa_id        => l_adr_accounting_coa_id
120996          , x_value_type_code          => l_adr_value_type_code
120997          , p_side                     => 'NA'
120998    );
120999 
121000    xla_ae_lines_pkg.set_ccid(
121001     p_code_combination_id          => l_ccid
121002   , p_value_type_code              => l_adr_value_type_code
121003   , p_transaction_coa_id           => l_adr_transaction_coa_id
121004   , p_accounting_coa_id            => l_adr_accounting_coa_id
121005   , p_adr_code                     => 'CST_DEFAULT'
121006   , p_adr_type_code                => 'S'
121007   , p_component_type               => l_component_type
121008   , p_component_code               => l_component_code
121009   , p_component_type_code          => l_component_type_code
121010   , p_component_appl_id            => l_component_appl_id
121011   , p_amb_context_code             => l_amb_context_code
121012   , p_side                         => 'NA'
121013   );
121014 
121015 
121016    --
121017    --
121018    END IF;
121019 
121020        --
121021        -- Update the line information that should be overwritten
121022        --
121023        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121024                                          p_header_num   => 1);
121025        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
121026 
121027        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121028 
121029        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
121030           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121031        END IF;
121032 
121033       --
121034       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121035       --
121036       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121037           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
121038       ELSE
121039           ---------------------------------------------------------------------------------------------------
121040           -- 4262811a Switch Sign
121041           ---------------------------------------------------------------------------------------------------
121042           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
121043           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121044                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121045           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121046                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121047           -- 5132302
121048           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121049                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121050 
121051       END IF;
121052 
121053       -- 4955764
121054       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121055       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121056 
121057 
121058       XLA_AE_LINES_PKG.ValidateCurrentLine;
121059       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121060 
121061       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121062                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121063                ,p_balance_type_code => l_balance_type_code);
121064 
121065    END IF;
121066 
121067    -----------------------------------------------------------------------------------------
121068    -- 4262811 Multiperiod Accounting
121069    -----------------------------------------------------------------------------------------
121070      -- No MPA option is assigned.
121071 
121072 
121073 END IF;
121074 END IF;
121075 --
121076 
121077 --
121078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121079    trace
121080       (p_msg      => 'END of AcctLineType_234'
121081       ,p_level    => C_LEVEL_PROCEDURE
121082       ,p_module   => l_log_module);
121083 END IF;
121084 --
121085 EXCEPTION
121086   WHEN xla_exceptions_pkg.application_exception THEN
121087       RAISE;
121088   WHEN OTHERS THEN
121089        xla_exceptions_pkg.raise_message
121090            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_234');
121091 END AcctLineType_234;
121092 --
121093 
121094 ---------------------------------------
121095 --
121096 -- PRIVATE FUNCTION
121097 --         AcctLineType_235
121098 --
121099 ---------------------------------------
121100 PROCEDURE AcctLineType_235 (
121101   p_application_id        IN NUMBER
121102  ,p_event_id              IN NUMBER
121103  ,p_calculate_acctd_flag  IN VARCHAR2
121104  ,p_calculate_g_l_flag    IN VARCHAR2
121105  ,p_actual_flag           IN OUT VARCHAR2
121106  ,p_balance_type_code     OUT VARCHAR2
121107  ,p_gain_or_loss_ref      OUT VARCHAR2
121108  
121109 --TRANSACTION_ID
121110  , p_source_1            IN NUMBER
121111 --Item Concatenated Segments
121112  , p_source_2            IN VARCHAR2
121113 --Transaction Quantity
121114  , p_source_3            IN NUMBER
121115 --Transaction Unit of Measure Code
121116  , p_source_4            IN VARCHAR2
121117 --Inventory Transaction Type Description
121118  , p_source_5            IN VARCHAR2
121119 --Cost Element Name
121120  , p_source_15            IN NUMBER
121121 --Product Line Accounting Category Material Account
121122  , p_source_41            IN NUMBER
121123 --Product Line Accounting Category Material Overhead Account
121124  , p_source_42            IN NUMBER
121125 --Product Line Accounting Category Resource Account
121126  , p_source_43            IN NUMBER
121127 --Product Line Accounting Category Outside Processing Account
121128  , p_source_44            IN NUMBER
121129 --Product Line Accounting Category Overhead Account
121130  , p_source_45            IN NUMBER
121131 --DISTRIBUTION_IDENTIFIER
121132  , p_source_84            IN NUMBER
121133 --Distribution Type
121134  , p_source_85            IN VARCHAR2
121135  , p_source_85_meaning    IN VARCHAR2
121136 --Entered Currency Code
121137  , p_source_88            IN VARCHAR2
121138 --Entered Amount
121139  , p_source_91            IN NUMBER
121140 --Currency Conversion Date
121141  , p_source_92            IN DATE
121142 --Currency Conversion Rate
121143  , p_source_93            IN NUMBER
121144 --Currency Conversion Type
121145  , p_source_94            IN VARCHAR2
121146 --Accounted Amount
121147  , p_source_95            IN NUMBER
121148 --Accounting Line Type
121149  , p_source_97            IN NUMBER
121150 --Organization Code
121151  , p_source_108            IN VARCHAR2
121152 )
121153 IS
121154 
121155 l_component_type              VARCHAR2(80);
121156 l_component_code              VARCHAR2(30);
121157 l_component_type_code         VARCHAR2(1);
121158 l_component_appl_id           INTEGER;
121159 l_amb_context_code            VARCHAR2(30);
121160 l_entity_code                 VARCHAR2(30);
121161 l_event_class_code            VARCHAR2(30);
121162 l_ae_header_id                NUMBER;
121163 l_event_type_code             VARCHAR2(30);
121164 l_line_definition_code        VARCHAR2(30);
121165 l_line_definition_owner_code  VARCHAR2(1);
121166 --
121167 -- adr variables
121168 l_segment                     VARCHAR2(30);
121169 l_ccid                        NUMBER;
121170 l_adr_transaction_coa_id      NUMBER;
121171 l_adr_accounting_coa_id       NUMBER;
121172 l_adr_flexfield_segment_code  VARCHAR2(30);
121173 l_adr_flex_value_set_id       NUMBER;
121174 l_adr_value_type_code         VARCHAR2(30);
121175 l_adr_value_combination_id    NUMBER;
121176 l_adr_value_segment_code      VARCHAR2(30);
121177 
121178 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
121179 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
121180 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
121181 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
121182 
121183 -- 4262811 Variables ------------------------------------------------------------------------------------------
121184 l_entered_amt_idx             NUMBER;
121185 l_accted_amt_idx              NUMBER;
121186 l_acc_rev_flag                VARCHAR2(1);
121187 l_accrual_line_num            NUMBER;
121188 l_tmp_amt                     NUMBER;
121189 l_acc_rev_natural_side_code   VARCHAR2(1);
121190 
121191 l_num_entries                 NUMBER;
121192 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
121193 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
121194 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
121195 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
121196 l_recog_line_1                NUMBER;
121197 l_recog_line_2                NUMBER;
121198 
121199 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
121200 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
121201 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
121202 
121203 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121204 
121205 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
121206 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
121207 
121208 ---------------------------------------------------------------------------------------------------------------
121209 
121210 
121211 --
121212 -- bulk performance
121213 --
121214 l_balance_type_code           VARCHAR2(1);
121215 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
121216 l_log_module                  VARCHAR2(240);
121217 
121218 --
121219 -- Upgrade strategy
121220 --
121221 l_actual_upg_option           VARCHAR2(1);
121222 l_enc_upg_option           VARCHAR2(1);
121223 
121224 --
121225 BEGIN
121226 --
121227 IF g_log_enabled THEN
121228       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_235';
121229 END IF;
121230 --
121231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121232 
121233       trace
121234          (p_msg      => 'BEGIN of AcctLineType_235'
121235          ,p_level    => C_LEVEL_PROCEDURE
121236          ,p_module   => l_log_module);
121237 
121238 END IF;
121239 --
121240 l_component_type             := 'AMB_JLT';
121241 l_component_code             := 'INVENTORY_VALUATION';
121242 l_component_type_code        := 'S';
121243 l_component_appl_id          :=  707;
121244 l_amb_context_code           := 'DEFAULT';
121245 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
121246 l_event_class_code           := 'USER_DEFINE';
121247 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
121248 l_line_definition_owner_code := 'S';
121249 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
121250 --
121251 l_balance_type_code          := 'A';
121252 l_segment                     := NULL;
121253 l_ccid                        := NULL;
121254 l_adr_transaction_coa_id      := NULL;
121255 l_adr_accounting_coa_id       := NULL;
121256 l_adr_flexfield_segment_code  := NULL;
121257 l_adr_flex_value_set_id       := NULL;
121258 l_adr_value_type_code         := NULL;
121259 l_adr_value_combination_id    := NULL;
121260 l_adr_value_segment_code      := NULL;
121261 
121262 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
121263 l_bflow_class_code           := '';    -- 4219869 Business Flow
121264 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
121265 l_budgetary_control_flag     := 'N';
121266 
121267 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
121268 l_bflow_applied_to_amt       := NULL; -- 5132302
121269 l_entered_amt_idx            := NULL;          -- 4262811
121270 l_accted_amt_idx             := NULL;          -- 4262811
121271 l_acc_rev_flag               := NULL;          -- 4262811
121272 l_accrual_line_num           := NULL;          -- 4262811
121273 l_tmp_amt                    := NULL;          -- 4262811
121274 --
121275  
121276 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121277     l_balance_type_code <> 'B' THEN
121278 IF NVL(p_source_97,9E125) =  1
121279  THEN 
121280 
121281    --
121282    XLA_AE_LINES_PKG.SetNewLine;
121283 
121284    p_balance_type_code          := l_balance_type_code;
121285    -- set the flag so later we will know whether the gain loss line needs to be created
121286    
121287    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121288      p_actual_flag :='A';
121289    END IF;
121290 
121291    --
121292    -- bulk performance
121293    --
121294    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121295                                       p_header_num   => 0); -- 4262811
121296    --
121297    -- set accounting line options
121298    --
121299    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121300            p_natural_side_code          => 'D'
121301          , p_gain_or_loss_flag          => 'N'
121302          , p_gl_transfer_mode_code      => 'S'
121303          , p_acct_entry_type_code       => 'A'
121304          , p_switch_side_flag           => 'Y'
121305          , p_merge_duplicate_code       => 'N'
121306          );
121307    --
121308    l_acc_rev_natural_side_code := 'C';  -- 4262811
121309    -- 
121310    --
121311    -- set accounting line type info
121312    --
121313    xla_ae_lines_pkg.SetAcctLineType
121314       (p_component_type             => l_component_type
121315       ,p_event_type_code            => l_event_type_code
121316       ,p_line_definition_owner_code => l_line_definition_owner_code
121317       ,p_line_definition_code       => l_line_definition_code
121318       ,p_accounting_line_code       => l_component_code
121319       ,p_accounting_line_type_code  => l_component_type_code
121320       ,p_accounting_line_appl_id    => l_component_appl_id
121321       ,p_amb_context_code           => l_amb_context_code
121322       ,p_entity_code                => l_entity_code
121323       ,p_event_class_code           => l_event_class_code);
121324    --
121325    -- set accounting class
121326    --
121327    xla_ae_lines_pkg.SetAcctClass(
121328            p_accounting_class_code  => 'INVENTORY_VALUATION'
121329          , p_ae_header_id           => l_ae_header_id
121330          );
121331 
121332    --
121333    -- set rounding class
121334    --
121335    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121336                       'INVENTORY_VALUATION';
121337 
121338    --
121339    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121340    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121341    --
121342    -- bulk performance
121343    --
121344    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121345 
121346    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121347       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121348 
121349    -- 4955764
121350    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121351       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121352 
121353    -- 4458381 Public Sector Enh
121354    
121355    --
121356    -- set accounting attributes for the line type
121357    --
121358    l_entered_amt_idx := 3;
121359    l_accted_amt_idx  := 8;
121360    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
121361    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121362    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
121363    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121364    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
121365    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121366    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
121367    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121368    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
121369    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121370    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
121371    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121372    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
121373    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121374    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
121375    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121376    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
121377 
121378    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121379    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121380 
121381    ---------------------------------------------------------------------------------------------------------------
121382    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121383    ---------------------------------------------------------------------------------------------------------------
121384    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121385 
121386    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121387    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121388 
121389    IF xla_accounting_cache_pkg.GetValueChar
121390          (p_source_code         => 'LEDGER_CATEGORY_CODE'
121391          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
121392    AND l_bflow_method_code = 'PRIOR_ENTRY'
121393 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
121394    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
121395          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
121396        )
121397    THEN
121398          xla_ae_lines_pkg.BflowUpgEntry
121399            (p_business_method_code    => l_bflow_method_code
121400            ,p_business_class_code     => l_bflow_class_code
121401            ,p_balance_type            => l_balance_type_code);
121402    ELSE
121403       NULL;
121404 -- No business flow processing for business flow method of NONE.
121405    END IF;
121406 
121407    --
121408    -- call analytical criteria
121409    --
121410    
121411 
121412 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
121413 xla_ae_lines_pkg.SetAnalyticalCriteria(
121414    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
121415  , p_analytical_criterion_owner   => 'S'
121416  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
121417  , p_amb_context_code             => 'DEFAULT'
121418  , p_balancing_flag               => 'Y'
121419  
121420  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
121421  , p_analytical_detail_num_1     =>  NULL
121422  , p_analytical_detail_date_1    =>  NULL
121423 
121424  , p_ae_header_id                 => l_ae_header_id
121425 )
121426 ;
121427 --
121428 
121429    --
121430    -- call description
121431    --
121432    
121433 xla_ae_lines_pkg.SetLineDescription(
121434    p_ae_header_id => l_ae_header_id
121435   ,p_description  => Description_1 (
121436      p_application_id         => p_application_id
121437    , p_ae_header_id           => l_ae_header_id 
121438 , p_source_1 => p_source_1
121439 , p_source_2 => p_source_2
121440 , p_source_3 => p_source_3
121441 , p_source_4 => p_source_4
121442 , p_source_5 => p_source_5
121443    )
121444 );
121445 
121446 
121447    --
121448    -- call ADRs
121449    -- Bug 4922099
121450    --
121451    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121452         (NVL(l_actual_upg_option, 'N') = 'O') OR
121453         (NVL(l_enc_upg_option, 'N') = 'O')
121454       )
121455    THEN
121456    NULL;
121457    --
121458    --
121459    
121460   l_ccid := AcctDerRule_28(
121461            p_application_id           => p_application_id
121462          , p_ae_header_id             => l_ae_header_id 
121463 , p_source_15 => p_source_15
121464 , p_source_41 => p_source_41
121465 , p_source_42 => p_source_42
121466 , p_source_43 => p_source_43
121467 , p_source_44 => p_source_44
121468 , p_source_45 => p_source_45
121469          , x_transaction_coa_id       => l_adr_transaction_coa_id
121470          , x_accounting_coa_id        => l_adr_accounting_coa_id
121471          , x_value_type_code          => l_adr_value_type_code
121472          , p_side                     => 'NA'
121473    );
121474 
121475    xla_ae_lines_pkg.set_ccid(
121476     p_code_combination_id          => l_ccid
121477   , p_value_type_code              => l_adr_value_type_code
121478   , p_transaction_coa_id           => l_adr_transaction_coa_id
121479   , p_accounting_coa_id            => l_adr_accounting_coa_id
121480   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
121481   , p_adr_type_code                => 'S'
121482   , p_component_type               => l_component_type
121483   , p_component_code               => l_component_code
121484   , p_component_type_code          => l_component_type_code
121485   , p_component_appl_id            => l_component_appl_id
121486   , p_amb_context_code             => l_amb_context_code
121487   , p_side                         => 'NA'
121488   );
121489 
121490 
121491    --
121492    --
121493    END IF;
121494    --
121495    -- Bug 4922099
121496    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
121497           (NVL(l_enc_upg_option, 'N') = 'O')
121498         ) AND
121499         (l_bflow_method_code = 'PRIOR_ENTRY')
121500       )
121501    THEN
121502       IF
121503       --
121504       1 = 2
121505       --
121506       THEN
121507       xla_accounting_err_pkg.build_message
121508                                     (p_appli_s_name            => 'XLA'
121509                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121510                                     ,p_token_1                 => 'LINE_NUMBER'
121511                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
121512                                     ,p_token_2                 => 'LINE_TYPE_NAME'
121513                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
121514                                                                              l_component_type
121515                                                                             ,l_component_code
121516                                                                             ,l_component_type_code
121517                                                                             ,l_component_appl_id
121518                                                                             ,l_amb_context_code
121519                                                                             ,l_entity_code
121520                                                                             ,l_event_class_code
121521                                                                            )
121522                                     ,p_token_3                 => 'OWNER'
121523                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
121524                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
121525                                                                           ,p_lookup_code    => l_component_type_code
121526                                                                          )
121527                                     ,p_token_4                 => 'PRODUCT_NAME'
121528                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
121529                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
121530                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
121531                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
121532                                     ,p_ae_header_id            =>  NULL
121533                                        );
121534 
121535         IF (C_LEVEL_ERROR>= g_log_level) THEN
121536                  trace
121537                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121538                       ,p_level    => C_LEVEL_ERROR
121539                       ,p_module   => l_log_module);
121540         END IF;
121541       END IF;
121542    END IF;
121543    --
121544    --
121545    ------------------------------------------------------------------------------------------------
121546    -- 4219869 Business Flow
121547    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
121548    -- Prior Entry.  Currently, the following code is always generated.
121549    ------------------------------------------------------------------------------------------------
121550    XLA_AE_LINES_PKG.ValidateCurrentLine;
121551 
121552    ------------------------------------------------------------------------------------
121553    -- 4219869 Business Flow
121554    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
121555    ------------------------------------------------------------------------------------
121556    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121557 
121558    ----------------------------------------------------------------------------------
121559    -- 4219869 Business Flow
121560    -- Update journal entry status -- Need to generate this within IF <condition>
121561    ----------------------------------------------------------------------------------
121562    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121563          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
121564          ,p_balance_type_code => l_balance_type_code
121565          );
121566 
121567    -------------------------------------------------------------------------------------------
121568    -- 4262811 - Generate the Accrual Reversal lines
121569    -------------------------------------------------------------------------------------------
121570    BEGIN
121571       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121572                               (g_array_event(p_event_id).array_value_num('header_index'));
121573       IF l_acc_rev_flag IS NULL THEN
121574          l_acc_rev_flag := 'N';
121575       END IF;
121576    EXCEPTION
121577       WHEN OTHERS THEN
121578          l_acc_rev_flag := 'N';
121579    END;
121580    --
121581    IF (l_acc_rev_flag = 'Y') THEN
121582 
121583        -- 4645092  ------------------------------------------------------------------------------
121584        -- To allow MPA report to determine if it should generate report process
121585        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121586        ------------------------------------------------------------------------------------------
121587 
121588        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121589        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121590    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
121591    -- call ADRs
121592    -- Bug 4922099
121593    --
121594    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121595         (NVL(l_actual_upg_option, 'N') = 'O') OR
121596         (NVL(l_enc_upg_option, 'N') = 'O')
121597       )
121598    THEN
121599    NULL;
121600    --
121601    --
121602    
121603   l_ccid := AcctDerRule_28(
121604            p_application_id           => p_application_id
121605          , p_ae_header_id             => l_ae_header_id 
121606 , p_source_15 => p_source_15
121607 , p_source_41 => p_source_41
121608 , p_source_42 => p_source_42
121609 , p_source_43 => p_source_43
121610 , p_source_44 => p_source_44
121611 , p_source_45 => p_source_45
121612          , x_transaction_coa_id       => l_adr_transaction_coa_id
121613          , x_accounting_coa_id        => l_adr_accounting_coa_id
121614          , x_value_type_code          => l_adr_value_type_code
121615          , p_side                     => 'NA'
121616    );
121617 
121618    xla_ae_lines_pkg.set_ccid(
121619     p_code_combination_id          => l_ccid
121620   , p_value_type_code              => l_adr_value_type_code
121621   , p_transaction_coa_id           => l_adr_transaction_coa_id
121622   , p_accounting_coa_id            => l_adr_accounting_coa_id
121623   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
121624   , p_adr_type_code                => 'S'
121625   , p_component_type               => l_component_type
121626   , p_component_code               => l_component_code
121627   , p_component_type_code          => l_component_type_code
121628   , p_component_appl_id            => l_component_appl_id
121629   , p_amb_context_code             => l_amb_context_code
121630   , p_side                         => 'NA'
121631   );
121632 
121633 
121634    --
121635    --
121636    END IF;
121637 
121638        --
121639        -- Update the line information that should be overwritten
121640        --
121641        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121642                                          p_header_num   => 1);
121643        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
121644 
121645        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121646 
121647        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
121648           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121649        END IF;
121650 
121651       --
121652       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121653       --
121654       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121655           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
121656       ELSE
121657           ---------------------------------------------------------------------------------------------------
121658           -- 4262811a Switch Sign
121659           ---------------------------------------------------------------------------------------------------
121660           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
121661           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121662                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121663           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121664                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121665           -- 5132302
121666           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121667                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121668 
121669       END IF;
121670 
121671       -- 4955764
121672       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121673       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121674 
121675 
121676       XLA_AE_LINES_PKG.ValidateCurrentLine;
121677       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121678 
121679       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121680                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121681                ,p_balance_type_code => l_balance_type_code);
121682 
121683    END IF;
121684 
121685    -----------------------------------------------------------------------------------------
121686    -- 4262811 Multiperiod Accounting
121687    -----------------------------------------------------------------------------------------
121688      -- No MPA option is assigned.
121689 
121690 
121691 END IF;
121692 END IF;
121693 --
121694 
121695 --
121696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121697    trace
121698       (p_msg      => 'END of AcctLineType_235'
121699       ,p_level    => C_LEVEL_PROCEDURE
121700       ,p_module   => l_log_module);
121701 END IF;
121702 --
121703 EXCEPTION
121704   WHEN xla_exceptions_pkg.application_exception THEN
121705       RAISE;
121706   WHEN OTHERS THEN
121707        xla_exceptions_pkg.raise_message
121708            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_235');
121709 END AcctLineType_235;
121710 --
121711 
121712 ---------------------------------------
121713 --
121714 -- PRIVATE FUNCTION
121715 --         AcctLineType_236
121716 --
121717 ---------------------------------------
121718 PROCEDURE AcctLineType_236 (
121719   p_application_id        IN NUMBER
121720  ,p_event_id              IN NUMBER
121721  ,p_calculate_acctd_flag  IN VARCHAR2
121722  ,p_calculate_g_l_flag    IN VARCHAR2
121723  ,p_actual_flag           IN OUT VARCHAR2
121724  ,p_balance_type_code     OUT VARCHAR2
121725  ,p_gain_or_loss_ref      OUT VARCHAR2
121726  
121727 --Cost Element Name
121728  , p_source_15            IN NUMBER
121729 --Product Line Accounting Category Material Account
121730  , p_source_41            IN NUMBER
121731 --Product Line Accounting Category Material Overhead Account
121732  , p_source_42            IN NUMBER
121733 --Product Line Accounting Category Resource Account
121734  , p_source_43            IN NUMBER
121735 --Product Line Accounting Category Outside Processing Account
121736  , p_source_44            IN NUMBER
121737 --Product Line Accounting Category Overhead Account
121738  , p_source_45            IN NUMBER
121739 --DISTRIBUTION_IDENTIFIER
121740  , p_source_84            IN NUMBER
121741 --Distribution Type
121742  , p_source_85            IN VARCHAR2
121743  , p_source_85_meaning    IN VARCHAR2
121744 --Entered Currency Code
121745  , p_source_88            IN VARCHAR2
121746 --Entered Amount
121747  , p_source_91            IN NUMBER
121748 --Currency Conversion Date
121749  , p_source_92            IN DATE
121750 --Currency Conversion Rate
121751  , p_source_93            IN NUMBER
121752 --Currency Conversion Type
121753  , p_source_94            IN VARCHAR2
121754 --Accounted Amount
121755  , p_source_95            IN NUMBER
121756 --Accounting Line Type
121757  , p_source_97            IN NUMBER
121758 --Organization Code
121759  , p_source_108            IN VARCHAR2
121760 )
121761 IS
121762 
121763 l_component_type              VARCHAR2(80);
121764 l_component_code              VARCHAR2(30);
121765 l_component_type_code         VARCHAR2(1);
121766 l_component_appl_id           INTEGER;
121767 l_amb_context_code            VARCHAR2(30);
121768 l_entity_code                 VARCHAR2(30);
121769 l_event_class_code            VARCHAR2(30);
121770 l_ae_header_id                NUMBER;
121771 l_event_type_code             VARCHAR2(30);
121772 l_line_definition_code        VARCHAR2(30);
121773 l_line_definition_owner_code  VARCHAR2(1);
121774 --
121775 -- adr variables
121776 l_segment                     VARCHAR2(30);
121777 l_ccid                        NUMBER;
121778 l_adr_transaction_coa_id      NUMBER;
121779 l_adr_accounting_coa_id       NUMBER;
121780 l_adr_flexfield_segment_code  VARCHAR2(30);
121781 l_adr_flex_value_set_id       NUMBER;
121782 l_adr_value_type_code         VARCHAR2(30);
121783 l_adr_value_combination_id    NUMBER;
121784 l_adr_value_segment_code      VARCHAR2(30);
121785 
121786 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
121787 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
121788 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
121789 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
121790 
121791 -- 4262811 Variables ------------------------------------------------------------------------------------------
121792 l_entered_amt_idx             NUMBER;
121793 l_accted_amt_idx              NUMBER;
121794 l_acc_rev_flag                VARCHAR2(1);
121795 l_accrual_line_num            NUMBER;
121796 l_tmp_amt                     NUMBER;
121797 l_acc_rev_natural_side_code   VARCHAR2(1);
121798 
121799 l_num_entries                 NUMBER;
121800 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
121801 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
121802 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
121803 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
121804 l_recog_line_1                NUMBER;
121805 l_recog_line_2                NUMBER;
121806 
121807 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
121808 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
121809 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
121810 
121811 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121812 
121813 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
121814 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
121815 
121816 ---------------------------------------------------------------------------------------------------------------
121817 
121818 
121819 --
121820 -- bulk performance
121821 --
121822 l_balance_type_code           VARCHAR2(1);
121823 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
121824 l_log_module                  VARCHAR2(240);
121825 
121826 --
121827 -- Upgrade strategy
121828 --
121829 l_actual_upg_option           VARCHAR2(1);
121830 l_enc_upg_option           VARCHAR2(1);
121831 
121832 --
121833 BEGIN
121834 --
121835 IF g_log_enabled THEN
121836       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_236';
121837 END IF;
121838 --
121839 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121840 
121841       trace
121842          (p_msg      => 'BEGIN of AcctLineType_236'
121843          ,p_level    => C_LEVEL_PROCEDURE
121844          ,p_module   => l_log_module);
121845 
121846 END IF;
121847 --
121848 l_component_type             := 'AMB_JLT';
121849 l_component_code             := 'INVENTORY_VALUATION';
121850 l_component_type_code        := 'S';
121851 l_component_appl_id          :=  707;
121852 l_amb_context_code           := 'DEFAULT';
121853 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
121854 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
121855 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
121856 l_line_definition_owner_code := 'S';
121857 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
121858 --
121859 l_balance_type_code          := 'A';
121860 l_segment                     := NULL;
121861 l_ccid                        := NULL;
121862 l_adr_transaction_coa_id      := NULL;
121863 l_adr_accounting_coa_id       := NULL;
121864 l_adr_flexfield_segment_code  := NULL;
121865 l_adr_flex_value_set_id       := NULL;
121866 l_adr_value_type_code         := NULL;
121867 l_adr_value_combination_id    := NULL;
121868 l_adr_value_segment_code      := NULL;
121869 
121870 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
121871 l_bflow_class_code           := '';    -- 4219869 Business Flow
121872 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
121873 l_budgetary_control_flag     := 'N';
121874 
121875 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
121876 l_bflow_applied_to_amt       := NULL; -- 5132302
121877 l_entered_amt_idx            := NULL;          -- 4262811
121878 l_accted_amt_idx             := NULL;          -- 4262811
121879 l_acc_rev_flag               := NULL;          -- 4262811
121880 l_accrual_line_num           := NULL;          -- 4262811
121881 l_tmp_amt                    := NULL;          -- 4262811
121882 --
121883  
121884 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121885     l_balance_type_code <> 'B' THEN
121886 IF NVL(p_source_97,9E125) =  1
121887  THEN 
121888 
121889    --
121890    XLA_AE_LINES_PKG.SetNewLine;
121891 
121892    p_balance_type_code          := l_balance_type_code;
121893    -- set the flag so later we will know whether the gain loss line needs to be created
121894    
121895    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121896      p_actual_flag :='A';
121897    END IF;
121898 
121899    --
121900    -- bulk performance
121901    --
121902    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121903                                       p_header_num   => 0); -- 4262811
121904    --
121905    -- set accounting line options
121906    --
121907    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121908            p_natural_side_code          => 'D'
121909          , p_gain_or_loss_flag          => 'N'
121910          , p_gl_transfer_mode_code      => 'S'
121911          , p_acct_entry_type_code       => 'A'
121912          , p_switch_side_flag           => 'Y'
121913          , p_merge_duplicate_code       => 'N'
121914          );
121915    --
121916    l_acc_rev_natural_side_code := 'C';  -- 4262811
121917    -- 
121918    --
121919    -- set accounting line type info
121920    --
121921    xla_ae_lines_pkg.SetAcctLineType
121922       (p_component_type             => l_component_type
121923       ,p_event_type_code            => l_event_type_code
121924       ,p_line_definition_owner_code => l_line_definition_owner_code
121925       ,p_line_definition_code       => l_line_definition_code
121926       ,p_accounting_line_code       => l_component_code
121927       ,p_accounting_line_type_code  => l_component_type_code
121928       ,p_accounting_line_appl_id    => l_component_appl_id
121929       ,p_amb_context_code           => l_amb_context_code
121930       ,p_entity_code                => l_entity_code
121931       ,p_event_class_code           => l_event_class_code);
121932    --
121933    -- set accounting class
121934    --
121935    xla_ae_lines_pkg.SetAcctClass(
121936            p_accounting_class_code  => 'INVENTORY_VALUATION'
121937          , p_ae_header_id           => l_ae_header_id
121938          );
121939 
121940    --
121941    -- set rounding class
121942    --
121943    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121944                       'INVENTORY_VALUATION';
121945 
121946    --
121947    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121948    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121949    --
121950    -- bulk performance
121951    --
121952    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121953 
121954    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121955       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121956 
121957    -- 4955764
121958    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121959       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121960 
121961    -- 4458381 Public Sector Enh
121962    
121963    --
121964    -- set accounting attributes for the line type
121965    --
121966    l_entered_amt_idx := 3;
121967    l_accted_amt_idx  := 8;
121968    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
121969    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121970    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
121971    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121972    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
121973    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121974    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
121975    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121976    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
121977    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121978    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
121979    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121980    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
121981    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121982    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
121983    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121984    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
121985 
121986    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121987    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121988 
121989    ---------------------------------------------------------------------------------------------------------------
121990    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121991    ---------------------------------------------------------------------------------------------------------------
121992    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121993 
121994    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121995    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121996 
121997    IF xla_accounting_cache_pkg.GetValueChar
121998          (p_source_code         => 'LEDGER_CATEGORY_CODE'
121999          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122000    AND l_bflow_method_code = 'PRIOR_ENTRY'
122001 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122002    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122003          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122004        )
122005    THEN
122006          xla_ae_lines_pkg.BflowUpgEntry
122007            (p_business_method_code    => l_bflow_method_code
122008            ,p_business_class_code     => l_bflow_class_code
122009            ,p_balance_type            => l_balance_type_code);
122010    ELSE
122011       NULL;
122012 -- No business flow processing for business flow method of NONE.
122013    END IF;
122014 
122015    --
122016    -- call analytical criteria
122017    --
122018    
122019 
122020 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
122021 xla_ae_lines_pkg.SetAnalyticalCriteria(
122022    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
122023  , p_analytical_criterion_owner   => 'S'
122024  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
122025  , p_amb_context_code             => 'DEFAULT'
122026  , p_balancing_flag               => 'Y'
122027  
122028  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
122029  , p_analytical_detail_num_1     =>  NULL
122030  , p_analytical_detail_date_1    =>  NULL
122031 
122032  , p_ae_header_id                 => l_ae_header_id
122033 )
122034 ;
122035 --
122036 
122037    --
122038    -- call description
122039    --
122040    -- No description or it is inherited.
122041    --
122042    -- call ADRs
122043    -- Bug 4922099
122044    --
122045    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122046         (NVL(l_actual_upg_option, 'N') = 'O') OR
122047         (NVL(l_enc_upg_option, 'N') = 'O')
122048       )
122049    THEN
122050    NULL;
122051    --
122052    --
122053    
122054   l_ccid := AcctDerRule_28(
122055            p_application_id           => p_application_id
122056          , p_ae_header_id             => l_ae_header_id 
122057 , p_source_15 => p_source_15
122058 , p_source_41 => p_source_41
122059 , p_source_42 => p_source_42
122060 , p_source_43 => p_source_43
122061 , p_source_44 => p_source_44
122062 , p_source_45 => p_source_45
122063          , x_transaction_coa_id       => l_adr_transaction_coa_id
122064          , x_accounting_coa_id        => l_adr_accounting_coa_id
122065          , x_value_type_code          => l_adr_value_type_code
122066          , p_side                     => 'NA'
122067    );
122068 
122069    xla_ae_lines_pkg.set_ccid(
122070     p_code_combination_id          => l_ccid
122071   , p_value_type_code              => l_adr_value_type_code
122072   , p_transaction_coa_id           => l_adr_transaction_coa_id
122073   , p_accounting_coa_id            => l_adr_accounting_coa_id
122074   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
122075   , p_adr_type_code                => 'S'
122076   , p_component_type               => l_component_type
122077   , p_component_code               => l_component_code
122078   , p_component_type_code          => l_component_type_code
122079   , p_component_appl_id            => l_component_appl_id
122080   , p_amb_context_code             => l_amb_context_code
122081   , p_side                         => 'NA'
122082   );
122083 
122084 
122085    --
122086    --
122087    END IF;
122088    --
122089    -- Bug 4922099
122090    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122091           (NVL(l_enc_upg_option, 'N') = 'O')
122092         ) AND
122093         (l_bflow_method_code = 'PRIOR_ENTRY')
122094       )
122095    THEN
122096       IF
122097       --
122098       1 = 2
122099       --
122100       THEN
122101       xla_accounting_err_pkg.build_message
122102                                     (p_appli_s_name            => 'XLA'
122103                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122104                                     ,p_token_1                 => 'LINE_NUMBER'
122105                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
122106                                     ,p_token_2                 => 'LINE_TYPE_NAME'
122107                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
122108                                                                              l_component_type
122109                                                                             ,l_component_code
122110                                                                             ,l_component_type_code
122111                                                                             ,l_component_appl_id
122112                                                                             ,l_amb_context_code
122113                                                                             ,l_entity_code
122114                                                                             ,l_event_class_code
122115                                                                            )
122116                                     ,p_token_3                 => 'OWNER'
122117                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
122118                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
122119                                                                           ,p_lookup_code    => l_component_type_code
122120                                                                          )
122121                                     ,p_token_4                 => 'PRODUCT_NAME'
122122                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122123                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122124                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122125                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122126                                     ,p_ae_header_id            =>  NULL
122127                                        );
122128 
122129         IF (C_LEVEL_ERROR>= g_log_level) THEN
122130                  trace
122131                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122132                       ,p_level    => C_LEVEL_ERROR
122133                       ,p_module   => l_log_module);
122134         END IF;
122135       END IF;
122136    END IF;
122137    --
122138    --
122139    ------------------------------------------------------------------------------------------------
122140    -- 4219869 Business Flow
122141    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122142    -- Prior Entry.  Currently, the following code is always generated.
122143    ------------------------------------------------------------------------------------------------
122144    XLA_AE_LINES_PKG.ValidateCurrentLine;
122145 
122146    ------------------------------------------------------------------------------------
122147    -- 4219869 Business Flow
122148    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122149    ------------------------------------------------------------------------------------
122150    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122151 
122152    ----------------------------------------------------------------------------------
122153    -- 4219869 Business Flow
122154    -- Update journal entry status -- Need to generate this within IF <condition>
122155    ----------------------------------------------------------------------------------
122156    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122157          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122158          ,p_balance_type_code => l_balance_type_code
122159          );
122160 
122161    -------------------------------------------------------------------------------------------
122162    -- 4262811 - Generate the Accrual Reversal lines
122163    -------------------------------------------------------------------------------------------
122164    BEGIN
122165       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122166                               (g_array_event(p_event_id).array_value_num('header_index'));
122167       IF l_acc_rev_flag IS NULL THEN
122168          l_acc_rev_flag := 'N';
122169       END IF;
122170    EXCEPTION
122171       WHEN OTHERS THEN
122172          l_acc_rev_flag := 'N';
122173    END;
122174    --
122175    IF (l_acc_rev_flag = 'Y') THEN
122176 
122177        -- 4645092  ------------------------------------------------------------------------------
122178        -- To allow MPA report to determine if it should generate report process
122179        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122180        ------------------------------------------------------------------------------------------
122181 
122182        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122183        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122184    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
122185    -- call ADRs
122186    -- Bug 4922099
122187    --
122188    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122189         (NVL(l_actual_upg_option, 'N') = 'O') OR
122190         (NVL(l_enc_upg_option, 'N') = 'O')
122191       )
122192    THEN
122193    NULL;
122194    --
122195    --
122196    
122197   l_ccid := AcctDerRule_28(
122198            p_application_id           => p_application_id
122199          , p_ae_header_id             => l_ae_header_id 
122200 , p_source_15 => p_source_15
122201 , p_source_41 => p_source_41
122202 , p_source_42 => p_source_42
122203 , p_source_43 => p_source_43
122204 , p_source_44 => p_source_44
122205 , p_source_45 => p_source_45
122206          , x_transaction_coa_id       => l_adr_transaction_coa_id
122207          , x_accounting_coa_id        => l_adr_accounting_coa_id
122208          , x_value_type_code          => l_adr_value_type_code
122209          , p_side                     => 'NA'
122210    );
122211 
122212    xla_ae_lines_pkg.set_ccid(
122213     p_code_combination_id          => l_ccid
122214   , p_value_type_code              => l_adr_value_type_code
122215   , p_transaction_coa_id           => l_adr_transaction_coa_id
122216   , p_accounting_coa_id            => l_adr_accounting_coa_id
122217   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
122218   , p_adr_type_code                => 'S'
122219   , p_component_type               => l_component_type
122220   , p_component_code               => l_component_code
122221   , p_component_type_code          => l_component_type_code
122222   , p_component_appl_id            => l_component_appl_id
122223   , p_amb_context_code             => l_amb_context_code
122224   , p_side                         => 'NA'
122225   );
122226 
122227 
122228    --
122229    --
122230    END IF;
122231 
122232        --
122233        -- Update the line information that should be overwritten
122234        --
122235        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122236                                          p_header_num   => 1);
122237        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
122238 
122239        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122240 
122241        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
122242           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122243        END IF;
122244 
122245       --
122246       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122247       --
122248       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122249           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
122250       ELSE
122251           ---------------------------------------------------------------------------------------------------
122252           -- 4262811a Switch Sign
122253           ---------------------------------------------------------------------------------------------------
122254           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
122255           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122256                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122257           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122258                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122259           -- 5132302
122260           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122261                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122262 
122263       END IF;
122264 
122265       -- 4955764
122266       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122267       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122268 
122269 
122270       XLA_AE_LINES_PKG.ValidateCurrentLine;
122271       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122272 
122273       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122274                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122275                ,p_balance_type_code => l_balance_type_code);
122276 
122277    END IF;
122278 
122279    -----------------------------------------------------------------------------------------
122280    -- 4262811 Multiperiod Accounting
122281    -----------------------------------------------------------------------------------------
122282      -- No MPA option is assigned.
122283 
122284 
122285 END IF;
122286 END IF;
122287 --
122288 
122289 --
122290 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122291    trace
122292       (p_msg      => 'END of AcctLineType_236'
122293       ,p_level    => C_LEVEL_PROCEDURE
122294       ,p_module   => l_log_module);
122295 END IF;
122296 --
122297 EXCEPTION
122298   WHEN xla_exceptions_pkg.application_exception THEN
122299       RAISE;
122300   WHEN OTHERS THEN
122301        xla_exceptions_pkg.raise_message
122302            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_236');
122303 END AcctLineType_236;
122304 --
122305 
122306 ---------------------------------------
122307 --
122308 -- PRIVATE FUNCTION
122309 --         AcctLineType_237
122310 --
122311 ---------------------------------------
122312 PROCEDURE AcctLineType_237 (
122313   p_application_id        IN NUMBER
122314  ,p_event_id              IN NUMBER
122315  ,p_calculate_acctd_flag  IN VARCHAR2
122316  ,p_calculate_g_l_flag    IN VARCHAR2
122317  ,p_actual_flag           IN OUT VARCHAR2
122318  ,p_balance_type_code     OUT VARCHAR2
122319  ,p_gain_or_loss_ref      OUT VARCHAR2
122320  
122321 --TRANSACTION_ID
122322  , p_source_1            IN NUMBER
122323 --Item Concatenated Segments
122324  , p_source_2            IN VARCHAR2
122325 --Transaction Quantity
122326  , p_source_3            IN NUMBER
122327 --Transaction Unit of Measure Code
122328  , p_source_4            IN VARCHAR2
122329 --Inventory Transaction Type Description
122330  , p_source_5            IN VARCHAR2
122331 --Cost Element Name
122332  , p_source_15            IN NUMBER
122333 --Product Line Accounting Category Material Account
122334  , p_source_41            IN NUMBER
122335 --Product Line Accounting Category Material Overhead Account
122336  , p_source_42            IN NUMBER
122337 --Product Line Accounting Category Resource Account
122338  , p_source_43            IN NUMBER
122339 --Product Line Accounting Category Outside Processing Account
122340  , p_source_44            IN NUMBER
122341 --Product Line Accounting Category Overhead Account
122342  , p_source_45            IN NUMBER
122343 --DISTRIBUTION_IDENTIFIER
122344  , p_source_84            IN NUMBER
122345 --Distribution Type
122346  , p_source_85            IN VARCHAR2
122347  , p_source_85_meaning    IN VARCHAR2
122348 --Entered Currency Code
122349  , p_source_88            IN VARCHAR2
122350 --Entered Amount
122351  , p_source_91            IN NUMBER
122352 --Currency Conversion Date
122353  , p_source_92            IN DATE
122354 --Currency Conversion Rate
122355  , p_source_93            IN NUMBER
122356 --Currency Conversion Type
122357  , p_source_94            IN VARCHAR2
122358 --Accounted Amount
122359  , p_source_95            IN NUMBER
122360 --Accounting Line Type
122361  , p_source_97            IN NUMBER
122362 --Organization Code
122363  , p_source_108            IN VARCHAR2
122364 )
122365 IS
122366 
122367 l_component_type              VARCHAR2(80);
122368 l_component_code              VARCHAR2(30);
122369 l_component_type_code         VARCHAR2(1);
122370 l_component_appl_id           INTEGER;
122371 l_amb_context_code            VARCHAR2(30);
122372 l_entity_code                 VARCHAR2(30);
122373 l_event_class_code            VARCHAR2(30);
122374 l_ae_header_id                NUMBER;
122375 l_event_type_code             VARCHAR2(30);
122376 l_line_definition_code        VARCHAR2(30);
122377 l_line_definition_owner_code  VARCHAR2(1);
122378 --
122379 -- adr variables
122380 l_segment                     VARCHAR2(30);
122381 l_ccid                        NUMBER;
122382 l_adr_transaction_coa_id      NUMBER;
122383 l_adr_accounting_coa_id       NUMBER;
122384 l_adr_flexfield_segment_code  VARCHAR2(30);
122385 l_adr_flex_value_set_id       NUMBER;
122386 l_adr_value_type_code         VARCHAR2(30);
122387 l_adr_value_combination_id    NUMBER;
122388 l_adr_value_segment_code      VARCHAR2(30);
122389 
122390 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
122391 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
122392 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
122393 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
122394 
122395 -- 4262811 Variables ------------------------------------------------------------------------------------------
122396 l_entered_amt_idx             NUMBER;
122397 l_accted_amt_idx              NUMBER;
122398 l_acc_rev_flag                VARCHAR2(1);
122399 l_accrual_line_num            NUMBER;
122400 l_tmp_amt                     NUMBER;
122401 l_acc_rev_natural_side_code   VARCHAR2(1);
122402 
122403 l_num_entries                 NUMBER;
122404 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
122405 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
122406 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
122407 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
122408 l_recog_line_1                NUMBER;
122409 l_recog_line_2                NUMBER;
122410 
122411 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
122412 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
122413 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
122414 
122415 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122416 
122417 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
122418 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
122419 
122420 ---------------------------------------------------------------------------------------------------------------
122421 
122422 
122423 --
122424 -- bulk performance
122425 --
122426 l_balance_type_code           VARCHAR2(1);
122427 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
122428 l_log_module                  VARCHAR2(240);
122429 
122430 --
122431 -- Upgrade strategy
122432 --
122433 l_actual_upg_option           VARCHAR2(1);
122434 l_enc_upg_option           VARCHAR2(1);
122435 
122436 --
122437 BEGIN
122438 --
122439 IF g_log_enabled THEN
122440       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_237';
122441 END IF;
122442 --
122443 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122444 
122445       trace
122446          (p_msg      => 'BEGIN of AcctLineType_237'
122447          ,p_level    => C_LEVEL_PROCEDURE
122448          ,p_module   => l_log_module);
122449 
122450 END IF;
122451 --
122452 l_component_type             := 'AMB_JLT';
122453 l_component_code             := 'INVENTORY_VALUATION';
122454 l_component_type_code        := 'S';
122455 l_component_appl_id          :=  707;
122456 l_amb_context_code           := 'DEFAULT';
122457 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
122458 l_event_class_code           := 'INT_ORDER_TO_EXP';
122459 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
122460 l_line_definition_owner_code := 'S';
122461 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_NO_TP';
122462 --
122463 l_balance_type_code          := 'A';
122464 l_segment                     := NULL;
122465 l_ccid                        := NULL;
122466 l_adr_transaction_coa_id      := NULL;
122467 l_adr_accounting_coa_id       := NULL;
122468 l_adr_flexfield_segment_code  := NULL;
122469 l_adr_flex_value_set_id       := NULL;
122470 l_adr_value_type_code         := NULL;
122471 l_adr_value_combination_id    := NULL;
122472 l_adr_value_segment_code      := NULL;
122473 
122474 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
122475 l_bflow_class_code           := '';    -- 4219869 Business Flow
122476 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
122477 l_budgetary_control_flag     := 'N';
122478 
122479 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
122480 l_bflow_applied_to_amt       := NULL; -- 5132302
122481 l_entered_amt_idx            := NULL;          -- 4262811
122482 l_accted_amt_idx             := NULL;          -- 4262811
122483 l_acc_rev_flag               := NULL;          -- 4262811
122484 l_accrual_line_num           := NULL;          -- 4262811
122485 l_tmp_amt                    := NULL;          -- 4262811
122486 --
122487  
122488 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
122489     l_balance_type_code <> 'B' THEN
122490 IF NVL(p_source_97,9E125) =  1
122491  THEN 
122492 
122493    --
122494    XLA_AE_LINES_PKG.SetNewLine;
122495 
122496    p_balance_type_code          := l_balance_type_code;
122497    -- set the flag so later we will know whether the gain loss line needs to be created
122498    
122499    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
122500      p_actual_flag :='A';
122501    END IF;
122502 
122503    --
122504    -- bulk performance
122505    --
122506    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
122507                                       p_header_num   => 0); -- 4262811
122508    --
122509    -- set accounting line options
122510    --
122511    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
122512            p_natural_side_code          => 'D'
122513          , p_gain_or_loss_flag          => 'N'
122514          , p_gl_transfer_mode_code      => 'S'
122515          , p_acct_entry_type_code       => 'A'
122516          , p_switch_side_flag           => 'Y'
122517          , p_merge_duplicate_code       => 'N'
122518          );
122519    --
122520    l_acc_rev_natural_side_code := 'C';  -- 4262811
122521    -- 
122522    --
122523    -- set accounting line type info
122524    --
122525    xla_ae_lines_pkg.SetAcctLineType
122526       (p_component_type             => l_component_type
122527       ,p_event_type_code            => l_event_type_code
122528       ,p_line_definition_owner_code => l_line_definition_owner_code
122529       ,p_line_definition_code       => l_line_definition_code
122530       ,p_accounting_line_code       => l_component_code
122531       ,p_accounting_line_type_code  => l_component_type_code
122532       ,p_accounting_line_appl_id    => l_component_appl_id
122533       ,p_amb_context_code           => l_amb_context_code
122534       ,p_entity_code                => l_entity_code
122535       ,p_event_class_code           => l_event_class_code);
122536    --
122537    -- set accounting class
122538    --
122539    xla_ae_lines_pkg.SetAcctClass(
122540            p_accounting_class_code  => 'INVENTORY_VALUATION'
122541          , p_ae_header_id           => l_ae_header_id
122542          );
122543 
122544    --
122545    -- set rounding class
122546    --
122547    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
122548                       'INVENTORY_VALUATION';
122549 
122550    --
122551    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
122552    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
122553    --
122554    -- bulk performance
122555    --
122556    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
122557 
122558    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
122559       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
122560 
122561    -- 4955764
122562    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122563       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
122564 
122565    -- 4458381 Public Sector Enh
122566    
122567    --
122568    -- set accounting attributes for the line type
122569    --
122570    l_entered_amt_idx := 3;
122571    l_accted_amt_idx  := 8;
122572    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
122573    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
122574    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
122575    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
122576    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
122577    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
122578    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
122579    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
122580    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
122581    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
122582    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
122583    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
122584    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
122585    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
122586    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
122587    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
122588    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
122589 
122590    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
122591    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
122592 
122593    ---------------------------------------------------------------------------------------------------------------
122594    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
122595    ---------------------------------------------------------------------------------------------------------------
122596    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
122597 
122598    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122599    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122600 
122601    IF xla_accounting_cache_pkg.GetValueChar
122602          (p_source_code         => 'LEDGER_CATEGORY_CODE'
122603          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122604    AND l_bflow_method_code = 'PRIOR_ENTRY'
122605 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122606    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122607          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122608        )
122609    THEN
122610          xla_ae_lines_pkg.BflowUpgEntry
122611            (p_business_method_code    => l_bflow_method_code
122612            ,p_business_class_code     => l_bflow_class_code
122613            ,p_balance_type            => l_balance_type_code);
122614    ELSE
122615       NULL;
122616 -- No business flow processing for business flow method of NONE.
122617    END IF;
122618 
122619    --
122620    -- call analytical criteria
122621    --
122622    
122623 
122624 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
122625 xla_ae_lines_pkg.SetAnalyticalCriteria(
122626    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
122627  , p_analytical_criterion_owner   => 'S'
122628  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
122629  , p_amb_context_code             => 'DEFAULT'
122630  , p_balancing_flag               => 'Y'
122631  
122632  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
122633  , p_analytical_detail_num_1     =>  NULL
122634  , p_analytical_detail_date_1    =>  NULL
122635 
122636  , p_ae_header_id                 => l_ae_header_id
122637 )
122638 ;
122639 --
122640 
122641    --
122642    -- call description
122643    --
122644    
122645 xla_ae_lines_pkg.SetLineDescription(
122646    p_ae_header_id => l_ae_header_id
122647   ,p_description  => Description_1 (
122648      p_application_id         => p_application_id
122649    , p_ae_header_id           => l_ae_header_id 
122650 , p_source_1 => p_source_1
122651 , p_source_2 => p_source_2
122652 , p_source_3 => p_source_3
122653 , p_source_4 => p_source_4
122654 , p_source_5 => p_source_5
122655    )
122656 );
122657 
122658 
122659    --
122660    -- call ADRs
122661    -- Bug 4922099
122662    --
122663    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122664         (NVL(l_actual_upg_option, 'N') = 'O') OR
122665         (NVL(l_enc_upg_option, 'N') = 'O')
122666       )
122667    THEN
122668    NULL;
122669    --
122670    --
122671    
122672   l_ccid := AcctDerRule_28(
122673            p_application_id           => p_application_id
122674          , p_ae_header_id             => l_ae_header_id 
122675 , p_source_15 => p_source_15
122676 , p_source_41 => p_source_41
122677 , p_source_42 => p_source_42
122678 , p_source_43 => p_source_43
122679 , p_source_44 => p_source_44
122680 , p_source_45 => p_source_45
122681          , x_transaction_coa_id       => l_adr_transaction_coa_id
122682          , x_accounting_coa_id        => l_adr_accounting_coa_id
122683          , x_value_type_code          => l_adr_value_type_code
122684          , p_side                     => 'NA'
122685    );
122686 
122687    xla_ae_lines_pkg.set_ccid(
122688     p_code_combination_id          => l_ccid
122689   , p_value_type_code              => l_adr_value_type_code
122690   , p_transaction_coa_id           => l_adr_transaction_coa_id
122691   , p_accounting_coa_id            => l_adr_accounting_coa_id
122692   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
122693   , p_adr_type_code                => 'S'
122694   , p_component_type               => l_component_type
122695   , p_component_code               => l_component_code
122696   , p_component_type_code          => l_component_type_code
122697   , p_component_appl_id            => l_component_appl_id
122698   , p_amb_context_code             => l_amb_context_code
122699   , p_side                         => 'NA'
122700   );
122701 
122702 
122703    --
122704    --
122705    END IF;
122706    --
122707    -- Bug 4922099
122708    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122709           (NVL(l_enc_upg_option, 'N') = 'O')
122710         ) AND
122711         (l_bflow_method_code = 'PRIOR_ENTRY')
122712       )
122713    THEN
122714       IF
122715       --
122716       1 = 2
122717       --
122718       THEN
122719       xla_accounting_err_pkg.build_message
122720                                     (p_appli_s_name            => 'XLA'
122721                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122722                                     ,p_token_1                 => 'LINE_NUMBER'
122723                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
122724                                     ,p_token_2                 => 'LINE_TYPE_NAME'
122725                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
122726                                                                              l_component_type
122727                                                                             ,l_component_code
122728                                                                             ,l_component_type_code
122729                                                                             ,l_component_appl_id
122730                                                                             ,l_amb_context_code
122731                                                                             ,l_entity_code
122732                                                                             ,l_event_class_code
122733                                                                            )
122734                                     ,p_token_3                 => 'OWNER'
122735                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
122736                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
122737                                                                           ,p_lookup_code    => l_component_type_code
122738                                                                          )
122739                                     ,p_token_4                 => 'PRODUCT_NAME'
122740                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122741                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122742                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122743                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122744                                     ,p_ae_header_id            =>  NULL
122745                                        );
122746 
122747         IF (C_LEVEL_ERROR>= g_log_level) THEN
122748                  trace
122749                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122750                       ,p_level    => C_LEVEL_ERROR
122751                       ,p_module   => l_log_module);
122752         END IF;
122753       END IF;
122754    END IF;
122755    --
122756    --
122757    ------------------------------------------------------------------------------------------------
122758    -- 4219869 Business Flow
122759    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122760    -- Prior Entry.  Currently, the following code is always generated.
122761    ------------------------------------------------------------------------------------------------
122762    XLA_AE_LINES_PKG.ValidateCurrentLine;
122763 
122764    ------------------------------------------------------------------------------------
122765    -- 4219869 Business Flow
122766    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122767    ------------------------------------------------------------------------------------
122768    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122769 
122770    ----------------------------------------------------------------------------------
122771    -- 4219869 Business Flow
122772    -- Update journal entry status -- Need to generate this within IF <condition>
122773    ----------------------------------------------------------------------------------
122774    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122775          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122776          ,p_balance_type_code => l_balance_type_code
122777          );
122778 
122779    -------------------------------------------------------------------------------------------
122780    -- 4262811 - Generate the Accrual Reversal lines
122781    -------------------------------------------------------------------------------------------
122782    BEGIN
122783       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122784                               (g_array_event(p_event_id).array_value_num('header_index'));
122785       IF l_acc_rev_flag IS NULL THEN
122786          l_acc_rev_flag := 'N';
122787       END IF;
122788    EXCEPTION
122789       WHEN OTHERS THEN
122790          l_acc_rev_flag := 'N';
122791    END;
122792    --
122793    IF (l_acc_rev_flag = 'Y') THEN
122794 
122795        -- 4645092  ------------------------------------------------------------------------------
122796        -- To allow MPA report to determine if it should generate report process
122797        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122798        ------------------------------------------------------------------------------------------
122799 
122800        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122801        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122802    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
122803    -- call ADRs
122804    -- Bug 4922099
122805    --
122806    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122807         (NVL(l_actual_upg_option, 'N') = 'O') OR
122808         (NVL(l_enc_upg_option, 'N') = 'O')
122809       )
122810    THEN
122811    NULL;
122812    --
122813    --
122814    
122815   l_ccid := AcctDerRule_28(
122816            p_application_id           => p_application_id
122817          , p_ae_header_id             => l_ae_header_id 
122818 , p_source_15 => p_source_15
122819 , p_source_41 => p_source_41
122820 , p_source_42 => p_source_42
122821 , p_source_43 => p_source_43
122822 , p_source_44 => p_source_44
122823 , p_source_45 => p_source_45
122824          , x_transaction_coa_id       => l_adr_transaction_coa_id
122825          , x_accounting_coa_id        => l_adr_accounting_coa_id
122826          , x_value_type_code          => l_adr_value_type_code
122827          , p_side                     => 'NA'
122828    );
122829 
122830    xla_ae_lines_pkg.set_ccid(
122831     p_code_combination_id          => l_ccid
122832   , p_value_type_code              => l_adr_value_type_code
122833   , p_transaction_coa_id           => l_adr_transaction_coa_id
122834   , p_accounting_coa_id            => l_adr_accounting_coa_id
122835   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
122836   , p_adr_type_code                => 'S'
122837   , p_component_type               => l_component_type
122838   , p_component_code               => l_component_code
122839   , p_component_type_code          => l_component_type_code
122840   , p_component_appl_id            => l_component_appl_id
122841   , p_amb_context_code             => l_amb_context_code
122842   , p_side                         => 'NA'
122843   );
122844 
122845 
122846    --
122847    --
122848    END IF;
122849 
122850        --
122851        -- Update the line information that should be overwritten
122852        --
122853        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122854                                          p_header_num   => 1);
122855        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
122856 
122857        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122858 
122859        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
122860           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122861        END IF;
122862 
122863       --
122864       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122865       --
122866       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122867           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
122868       ELSE
122869           ---------------------------------------------------------------------------------------------------
122870           -- 4262811a Switch Sign
122871           ---------------------------------------------------------------------------------------------------
122872           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
122873           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122874                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122875           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122876                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122877           -- 5132302
122878           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122879                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122880 
122881       END IF;
122882 
122883       -- 4955764
122884       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122885       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122886 
122887 
122888       XLA_AE_LINES_PKG.ValidateCurrentLine;
122889       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122890 
122891       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122892                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122893                ,p_balance_type_code => l_balance_type_code);
122894 
122895    END IF;
122896 
122897    -----------------------------------------------------------------------------------------
122898    -- 4262811 Multiperiod Accounting
122899    -----------------------------------------------------------------------------------------
122900      -- No MPA option is assigned.
122901 
122902 
122903 END IF;
122904 END IF;
122905 --
122906 
122907 --
122908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122909    trace
122910       (p_msg      => 'END of AcctLineType_237'
122911       ,p_level    => C_LEVEL_PROCEDURE
122912       ,p_module   => l_log_module);
122913 END IF;
122914 --
122915 EXCEPTION
122916   WHEN xla_exceptions_pkg.application_exception THEN
122917       RAISE;
122918   WHEN OTHERS THEN
122919        xla_exceptions_pkg.raise_message
122920            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_237');
122921 END AcctLineType_237;
122922 --
122923 
122924 ---------------------------------------
122925 --
122926 -- PRIVATE FUNCTION
122927 --         AcctLineType_238
122928 --
122929 ---------------------------------------
122930 PROCEDURE AcctLineType_238 (
122931   p_application_id        IN NUMBER
122932  ,p_event_id              IN NUMBER
122933  ,p_calculate_acctd_flag  IN VARCHAR2
122934  ,p_calculate_g_l_flag    IN VARCHAR2
122935  ,p_actual_flag           IN OUT VARCHAR2
122936  ,p_balance_type_code     OUT VARCHAR2
122937  ,p_gain_or_loss_ref      OUT VARCHAR2
122938  
122939 --TRANSACTION_ID
122940  , p_source_1            IN NUMBER
122941 --Item Concatenated Segments
122942  , p_source_2            IN VARCHAR2
122943 --Transaction Quantity
122944  , p_source_3            IN NUMBER
122945 --Transaction Unit of Measure Code
122946  , p_source_4            IN VARCHAR2
122947 --Inventory Transaction Type Description
122948  , p_source_5            IN VARCHAR2
122949 --Cost Element Name
122950  , p_source_15            IN NUMBER
122951 --Product Line Accounting Category Material Account
122952  , p_source_41            IN NUMBER
122953 --Product Line Accounting Category Material Overhead Account
122954  , p_source_42            IN NUMBER
122955 --Product Line Accounting Category Resource Account
122956  , p_source_43            IN NUMBER
122957 --Product Line Accounting Category Outside Processing Account
122958  , p_source_44            IN NUMBER
122959 --Product Line Accounting Category Overhead Account
122960  , p_source_45            IN NUMBER
122961 --DISTRIBUTION_IDENTIFIER
122962  , p_source_84            IN NUMBER
122963 --Distribution Type
122964  , p_source_85            IN VARCHAR2
122965  , p_source_85_meaning    IN VARCHAR2
122966 --Entered Currency Code
122967  , p_source_88            IN VARCHAR2
122968 --Entered Amount
122969  , p_source_91            IN NUMBER
122970 --Currency Conversion Date
122971  , p_source_92            IN DATE
122972 --Currency Conversion Rate
122973  , p_source_93            IN NUMBER
122974 --Currency Conversion Type
122975  , p_source_94            IN VARCHAR2
122976 --Accounted Amount
122977  , p_source_95            IN NUMBER
122978 --Accounting Line Type
122979  , p_source_97            IN NUMBER
122980 --Organization Code
122981  , p_source_108            IN VARCHAR2
122982 )
122983 IS
122984 
122985 l_component_type              VARCHAR2(80);
122986 l_component_code              VARCHAR2(30);
122987 l_component_type_code         VARCHAR2(1);
122988 l_component_appl_id           INTEGER;
122989 l_amb_context_code            VARCHAR2(30);
122990 l_entity_code                 VARCHAR2(30);
122991 l_event_class_code            VARCHAR2(30);
122992 l_ae_header_id                NUMBER;
122993 l_event_type_code             VARCHAR2(30);
122994 l_line_definition_code        VARCHAR2(30);
122995 l_line_definition_owner_code  VARCHAR2(1);
122996 --
122997 -- adr variables
122998 l_segment                     VARCHAR2(30);
122999 l_ccid                        NUMBER;
123000 l_adr_transaction_coa_id      NUMBER;
123001 l_adr_accounting_coa_id       NUMBER;
123002 l_adr_flexfield_segment_code  VARCHAR2(30);
123003 l_adr_flex_value_set_id       NUMBER;
123004 l_adr_value_type_code         VARCHAR2(30);
123005 l_adr_value_combination_id    NUMBER;
123006 l_adr_value_segment_code      VARCHAR2(30);
123007 
123008 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
123009 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
123010 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
123011 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
123012 
123013 -- 4262811 Variables ------------------------------------------------------------------------------------------
123014 l_entered_amt_idx             NUMBER;
123015 l_accted_amt_idx              NUMBER;
123016 l_acc_rev_flag                VARCHAR2(1);
123017 l_accrual_line_num            NUMBER;
123018 l_tmp_amt                     NUMBER;
123019 l_acc_rev_natural_side_code   VARCHAR2(1);
123020 
123021 l_num_entries                 NUMBER;
123022 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
123023 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
123024 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
123025 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
123026 l_recog_line_1                NUMBER;
123027 l_recog_line_2                NUMBER;
123028 
123029 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
123030 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
123031 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
123032 
123033 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
123034 
123035 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
123036 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
123037 
123038 ---------------------------------------------------------------------------------------------------------------
123039 
123040 
123041 --
123042 -- bulk performance
123043 --
123044 l_balance_type_code           VARCHAR2(1);
123045 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
123046 l_log_module                  VARCHAR2(240);
123047 
123048 --
123049 -- Upgrade strategy
123050 --
123051 l_actual_upg_option           VARCHAR2(1);
123052 l_enc_upg_option           VARCHAR2(1);
123053 
123054 --
123055 BEGIN
123056 --
123057 IF g_log_enabled THEN
123058       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_238';
123059 END IF;
123060 --
123061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123062 
123063       trace
123064          (p_msg      => 'BEGIN of AcctLineType_238'
123065          ,p_level    => C_LEVEL_PROCEDURE
123066          ,p_module   => l_log_module);
123067 
123068 END IF;
123069 --
123070 l_component_type             := 'AMB_JLT';
123071 l_component_code             := 'INVENTORY_VALUATION';
123072 l_component_type_code        := 'S';
123073 l_component_appl_id          :=  707;
123074 l_amb_context_code           := 'DEFAULT';
123075 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
123076 l_event_class_code           := 'MTL_COST_UPD';
123077 l_event_type_code            := 'LAYER_COST_UPD';
123078 l_line_definition_owner_code := 'S';
123079 l_line_definition_code       := 'PI_LAYER_COST_UPDATE';
123080 --
123081 l_balance_type_code          := 'A';
123082 l_segment                     := NULL;
123083 l_ccid                        := NULL;
123084 l_adr_transaction_coa_id      := NULL;
123085 l_adr_accounting_coa_id       := NULL;
123086 l_adr_flexfield_segment_code  := NULL;
123087 l_adr_flex_value_set_id       := NULL;
123088 l_adr_value_type_code         := NULL;
123089 l_adr_value_combination_id    := NULL;
123090 l_adr_value_segment_code      := NULL;
123091 
123092 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
123093 l_bflow_class_code           := '';    -- 4219869 Business Flow
123094 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
123095 l_budgetary_control_flag     := 'N';
123096 
123097 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
123098 l_bflow_applied_to_amt       := NULL; -- 5132302
123099 l_entered_amt_idx            := NULL;          -- 4262811
123100 l_accted_amt_idx             := NULL;          -- 4262811
123101 l_acc_rev_flag               := NULL;          -- 4262811
123102 l_accrual_line_num           := NULL;          -- 4262811
123103 l_tmp_amt                    := NULL;          -- 4262811
123104 --
123105  
123106 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123107     l_balance_type_code <> 'B' THEN
123108 IF NVL(p_source_97,9E125) =  1
123109  THEN 
123110 
123111    --
123112    XLA_AE_LINES_PKG.SetNewLine;
123113 
123114    p_balance_type_code          := l_balance_type_code;
123115    -- set the flag so later we will know whether the gain loss line needs to be created
123116    
123117    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123118      p_actual_flag :='A';
123119    END IF;
123120 
123121    --
123122    -- bulk performance
123123    --
123124    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123125                                       p_header_num   => 0); -- 4262811
123126    --
123127    -- set accounting line options
123128    --
123129    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123130            p_natural_side_code          => 'D'
123131          , p_gain_or_loss_flag          => 'N'
123132          , p_gl_transfer_mode_code      => 'S'
123133          , p_acct_entry_type_code       => 'A'
123134          , p_switch_side_flag           => 'Y'
123135          , p_merge_duplicate_code       => 'N'
123136          );
123137    --
123138    l_acc_rev_natural_side_code := 'C';  -- 4262811
123139    -- 
123140    --
123141    -- set accounting line type info
123142    --
123143    xla_ae_lines_pkg.SetAcctLineType
123144       (p_component_type             => l_component_type
123145       ,p_event_type_code            => l_event_type_code
123146       ,p_line_definition_owner_code => l_line_definition_owner_code
123147       ,p_line_definition_code       => l_line_definition_code
123148       ,p_accounting_line_code       => l_component_code
123149       ,p_accounting_line_type_code  => l_component_type_code
123150       ,p_accounting_line_appl_id    => l_component_appl_id
123151       ,p_amb_context_code           => l_amb_context_code
123152       ,p_entity_code                => l_entity_code
123153       ,p_event_class_code           => l_event_class_code);
123154    --
123155    -- set accounting class
123156    --
123157    xla_ae_lines_pkg.SetAcctClass(
123158            p_accounting_class_code  => 'INVENTORY_VALUATION'
123159          , p_ae_header_id           => l_ae_header_id
123160          );
123161 
123162    --
123163    -- set rounding class
123164    --
123165    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123166                       'INVENTORY_VALUATION';
123167 
123168    --
123169    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123170    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123171    --
123172    -- bulk performance
123173    --
123174    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123175 
123176    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123177       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123178 
123179    -- 4955764
123180    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123181       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123182 
123183    -- 4458381 Public Sector Enh
123184    
123185    --
123186    -- set accounting attributes for the line type
123187    --
123188    l_entered_amt_idx := 3;
123189    l_accted_amt_idx  := 8;
123190    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
123191    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
123192    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
123193    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
123194    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
123195    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
123196    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
123197    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
123198    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
123199    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
123200    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
123201    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
123202    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
123203    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
123204    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
123205    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
123206    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
123207 
123208    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123209    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123210 
123211    ---------------------------------------------------------------------------------------------------------------
123212    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123213    ---------------------------------------------------------------------------------------------------------------
123214    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123215 
123216    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123217    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123218 
123219    IF xla_accounting_cache_pkg.GetValueChar
123220          (p_source_code         => 'LEDGER_CATEGORY_CODE'
123221          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123222    AND l_bflow_method_code = 'PRIOR_ENTRY'
123223 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123224    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123225          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123226        )
123227    THEN
123228          xla_ae_lines_pkg.BflowUpgEntry
123229            (p_business_method_code    => l_bflow_method_code
123230            ,p_business_class_code     => l_bflow_class_code
123231            ,p_balance_type            => l_balance_type_code);
123232    ELSE
123233       NULL;
123234 -- No business flow processing for business flow method of NONE.
123235    END IF;
123236 
123237    --
123238    -- call analytical criteria
123239    --
123240    
123241 
123242 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
123243 xla_ae_lines_pkg.SetAnalyticalCriteria(
123244    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
123245  , p_analytical_criterion_owner   => 'S'
123246  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
123247  , p_amb_context_code             => 'DEFAULT'
123248  , p_balancing_flag               => 'Y'
123249  
123250  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
123251  , p_analytical_detail_num_1     =>  NULL
123252  , p_analytical_detail_date_1    =>  NULL
123253 
123254  , p_ae_header_id                 => l_ae_header_id
123255 )
123256 ;
123257 --
123258 
123259    --
123260    -- call description
123261    --
123262    
123263 xla_ae_lines_pkg.SetLineDescription(
123264    p_ae_header_id => l_ae_header_id
123265   ,p_description  => Description_1 (
123266      p_application_id         => p_application_id
123267    , p_ae_header_id           => l_ae_header_id 
123268 , p_source_1 => p_source_1
123269 , p_source_2 => p_source_2
123270 , p_source_3 => p_source_3
123271 , p_source_4 => p_source_4
123272 , p_source_5 => p_source_5
123273    )
123274 );
123275 
123276 
123277    --
123278    -- call ADRs
123279    -- Bug 4922099
123280    --
123281    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123282         (NVL(l_actual_upg_option, 'N') = 'O') OR
123283         (NVL(l_enc_upg_option, 'N') = 'O')
123284       )
123285    THEN
123286    NULL;
123287    --
123288    --
123289    
123290   l_ccid := AcctDerRule_28(
123291            p_application_id           => p_application_id
123292          , p_ae_header_id             => l_ae_header_id 
123293 , p_source_15 => p_source_15
123294 , p_source_41 => p_source_41
123295 , p_source_42 => p_source_42
123296 , p_source_43 => p_source_43
123297 , p_source_44 => p_source_44
123298 , p_source_45 => p_source_45
123299          , x_transaction_coa_id       => l_adr_transaction_coa_id
123300          , x_accounting_coa_id        => l_adr_accounting_coa_id
123301          , x_value_type_code          => l_adr_value_type_code
123302          , p_side                     => 'NA'
123303    );
123304 
123305    xla_ae_lines_pkg.set_ccid(
123306     p_code_combination_id          => l_ccid
123307   , p_value_type_code              => l_adr_value_type_code
123308   , p_transaction_coa_id           => l_adr_transaction_coa_id
123309   , p_accounting_coa_id            => l_adr_accounting_coa_id
123310   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
123311   , p_adr_type_code                => 'S'
123312   , p_component_type               => l_component_type
123313   , p_component_code               => l_component_code
123314   , p_component_type_code          => l_component_type_code
123315   , p_component_appl_id            => l_component_appl_id
123316   , p_amb_context_code             => l_amb_context_code
123317   , p_side                         => 'NA'
123318   );
123319 
123320 
123321    --
123322    --
123323    END IF;
123324    --
123325    -- Bug 4922099
123326    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123327           (NVL(l_enc_upg_option, 'N') = 'O')
123328         ) AND
123329         (l_bflow_method_code = 'PRIOR_ENTRY')
123330       )
123331    THEN
123332       IF
123333       --
123334       1 = 2
123335       --
123336       THEN
123337       xla_accounting_err_pkg.build_message
123338                                     (p_appli_s_name            => 'XLA'
123339                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123340                                     ,p_token_1                 => 'LINE_NUMBER'
123341                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
123342                                     ,p_token_2                 => 'LINE_TYPE_NAME'
123343                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
123344                                                                              l_component_type
123345                                                                             ,l_component_code
123346                                                                             ,l_component_type_code
123347                                                                             ,l_component_appl_id
123348                                                                             ,l_amb_context_code
123349                                                                             ,l_entity_code
123350                                                                             ,l_event_class_code
123351                                                                            )
123352                                     ,p_token_3                 => 'OWNER'
123353                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
123354                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
123355                                                                           ,p_lookup_code    => l_component_type_code
123356                                                                          )
123357                                     ,p_token_4                 => 'PRODUCT_NAME'
123358                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123359                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123360                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123361                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123362                                     ,p_ae_header_id            =>  NULL
123363                                        );
123364 
123365         IF (C_LEVEL_ERROR>= g_log_level) THEN
123366                  trace
123367                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123368                       ,p_level    => C_LEVEL_ERROR
123369                       ,p_module   => l_log_module);
123370         END IF;
123371       END IF;
123372    END IF;
123373    --
123374    --
123375    ------------------------------------------------------------------------------------------------
123376    -- 4219869 Business Flow
123377    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123378    -- Prior Entry.  Currently, the following code is always generated.
123379    ------------------------------------------------------------------------------------------------
123380    XLA_AE_LINES_PKG.ValidateCurrentLine;
123381 
123382    ------------------------------------------------------------------------------------
123383    -- 4219869 Business Flow
123384    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123385    ------------------------------------------------------------------------------------
123386    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123387 
123388    ----------------------------------------------------------------------------------
123389    -- 4219869 Business Flow
123390    -- Update journal entry status -- Need to generate this within IF <condition>
123391    ----------------------------------------------------------------------------------
123392    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123393          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123394          ,p_balance_type_code => l_balance_type_code
123395          );
123396 
123397    -------------------------------------------------------------------------------------------
123398    -- 4262811 - Generate the Accrual Reversal lines
123399    -------------------------------------------------------------------------------------------
123400    BEGIN
123401       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123402                               (g_array_event(p_event_id).array_value_num('header_index'));
123403       IF l_acc_rev_flag IS NULL THEN
123404          l_acc_rev_flag := 'N';
123405       END IF;
123406    EXCEPTION
123407       WHEN OTHERS THEN
123408          l_acc_rev_flag := 'N';
123409    END;
123410    --
123411    IF (l_acc_rev_flag = 'Y') THEN
123412 
123413        -- 4645092  ------------------------------------------------------------------------------
123414        -- To allow MPA report to determine if it should generate report process
123415        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123416        ------------------------------------------------------------------------------------------
123417 
123418        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123419        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123420    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
123421    -- call ADRs
123422    -- Bug 4922099
123423    --
123424    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123425         (NVL(l_actual_upg_option, 'N') = 'O') OR
123426         (NVL(l_enc_upg_option, 'N') = 'O')
123427       )
123428    THEN
123429    NULL;
123430    --
123431    --
123432    
123433   l_ccid := AcctDerRule_28(
123434            p_application_id           => p_application_id
123435          , p_ae_header_id             => l_ae_header_id 
123436 , p_source_15 => p_source_15
123437 , p_source_41 => p_source_41
123438 , p_source_42 => p_source_42
123439 , p_source_43 => p_source_43
123440 , p_source_44 => p_source_44
123441 , p_source_45 => p_source_45
123442          , x_transaction_coa_id       => l_adr_transaction_coa_id
123443          , x_accounting_coa_id        => l_adr_accounting_coa_id
123444          , x_value_type_code          => l_adr_value_type_code
123445          , p_side                     => 'NA'
123446    );
123447 
123448    xla_ae_lines_pkg.set_ccid(
123449     p_code_combination_id          => l_ccid
123450   , p_value_type_code              => l_adr_value_type_code
123451   , p_transaction_coa_id           => l_adr_transaction_coa_id
123452   , p_accounting_coa_id            => l_adr_accounting_coa_id
123453   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
123454   , p_adr_type_code                => 'S'
123455   , p_component_type               => l_component_type
123456   , p_component_code               => l_component_code
123457   , p_component_type_code          => l_component_type_code
123458   , p_component_appl_id            => l_component_appl_id
123459   , p_amb_context_code             => l_amb_context_code
123460   , p_side                         => 'NA'
123461   );
123462 
123463 
123464    --
123465    --
123466    END IF;
123467 
123468        --
123469        -- Update the line information that should be overwritten
123470        --
123471        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123472                                          p_header_num   => 1);
123473        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
123474 
123475        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123476 
123477        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
123478           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123479        END IF;
123480 
123481       --
123482       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123483       --
123484       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123485           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
123486       ELSE
123487           ---------------------------------------------------------------------------------------------------
123488           -- 4262811a Switch Sign
123489           ---------------------------------------------------------------------------------------------------
123490           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
123491           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123492                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123493           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123494                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123495           -- 5132302
123496           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123497                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123498 
123499       END IF;
123500 
123501       -- 4955764
123502       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123503       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123504 
123505 
123506       XLA_AE_LINES_PKG.ValidateCurrentLine;
123507       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123508 
123509       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123510                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123511                ,p_balance_type_code => l_balance_type_code);
123512 
123513    END IF;
123514 
123515    -----------------------------------------------------------------------------------------
123516    -- 4262811 Multiperiod Accounting
123517    -----------------------------------------------------------------------------------------
123518      -- No MPA option is assigned.
123519 
123520 
123521 END IF;
123522 END IF;
123523 --
123524 
123525 --
123526 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123527    trace
123528       (p_msg      => 'END of AcctLineType_238'
123529       ,p_level    => C_LEVEL_PROCEDURE
123530       ,p_module   => l_log_module);
123531 END IF;
123532 --
123533 EXCEPTION
123534   WHEN xla_exceptions_pkg.application_exception THEN
123535       RAISE;
123536   WHEN OTHERS THEN
123537        xla_exceptions_pkg.raise_message
123538            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_238');
123539 END AcctLineType_238;
123540 --
123541 
123542 ---------------------------------------
123543 --
123544 -- PRIVATE FUNCTION
123545 --         AcctLineType_239
123546 --
123547 ---------------------------------------
123548 PROCEDURE AcctLineType_239 (
123549   p_application_id        IN NUMBER
123550  ,p_event_id              IN NUMBER
123551  ,p_calculate_acctd_flag  IN VARCHAR2
123552  ,p_calculate_g_l_flag    IN VARCHAR2
123553  ,p_actual_flag           IN OUT VARCHAR2
123554  ,p_balance_type_code     OUT VARCHAR2
123555  ,p_gain_or_loss_ref      OUT VARCHAR2
123556  
123557 --TRANSACTION_ID
123558  , p_source_1            IN NUMBER
123559 --Item Concatenated Segments
123560  , p_source_2            IN VARCHAR2
123561 --Transaction Quantity
123562  , p_source_3            IN NUMBER
123563 --Transaction Unit of Measure Code
123564  , p_source_4            IN VARCHAR2
123565 --Inventory Transaction Type Description
123566  , p_source_5            IN VARCHAR2
123567 --Cost Element Name
123568  , p_source_15            IN NUMBER
123569 --Product Line Accounting Category Material Account
123570  , p_source_41            IN NUMBER
123571 --Product Line Accounting Category Material Overhead Account
123572  , p_source_42            IN NUMBER
123573 --Product Line Accounting Category Resource Account
123574  , p_source_43            IN NUMBER
123575 --Product Line Accounting Category Outside Processing Account
123576  , p_source_44            IN NUMBER
123577 --Product Line Accounting Category Overhead Account
123578  , p_source_45            IN NUMBER
123579 --Applied to Application ID
123580  , p_source_79            IN NUMBER
123581 --Applied to Distribution Link Type
123582  , p_source_80            IN VARCHAR2
123583 --Applied to Entity Code
123584  , p_source_81            IN VARCHAR2
123585 --Applied To Purchase Document Identifier
123586  , p_source_83            IN NUMBER
123587 --DISTRIBUTION_IDENTIFIER
123588  , p_source_84            IN NUMBER
123589 --Distribution Type
123590  , p_source_85            IN VARCHAR2
123591  , p_source_85_meaning    IN VARCHAR2
123592 --PO Budget Account
123593  , p_source_86            IN NUMBER
123594 --Encumbrance Reversal Amount Entered
123595  , p_source_87            IN NUMBER
123596 --Entered Currency Code
123597  , p_source_88            IN VARCHAR2
123598 --Transaction Encumbrance Reversal Amount
123599  , p_source_89            IN NUMBER
123600 --Entered Amount
123601  , p_source_91            IN NUMBER
123602 --Currency Conversion Date
123603  , p_source_92            IN DATE
123604 --Currency Conversion Rate
123605  , p_source_93            IN NUMBER
123606 --Currency Conversion Type
123607  , p_source_94            IN VARCHAR2
123608 --Accounted Amount
123609  , p_source_95            IN NUMBER
123610 --Purchasing Encumbrance Type Identifier
123611  , p_source_96            IN NUMBER
123612 --Accounting Line Type
123613  , p_source_97            IN NUMBER
123614 --Costing Encumbrance Upgrade Option
123615  , p_source_100            IN VARCHAR2
123616 --TXN_PO_DISTRIBUTION_ID
123617  , p_source_101            IN NUMBER
123618 --Organization Code
123619  , p_source_108            IN VARCHAR2
123620 )
123621 IS
123622 
123623 l_component_type              VARCHAR2(80);
123624 l_component_code              VARCHAR2(30);
123625 l_component_type_code         VARCHAR2(1);
123626 l_component_appl_id           INTEGER;
123627 l_amb_context_code            VARCHAR2(30);
123628 l_entity_code                 VARCHAR2(30);
123629 l_event_class_code            VARCHAR2(30);
123630 l_ae_header_id                NUMBER;
123631 l_event_type_code             VARCHAR2(30);
123632 l_line_definition_code        VARCHAR2(30);
123633 l_line_definition_owner_code  VARCHAR2(1);
123634 --
123635 -- adr variables
123636 l_segment                     VARCHAR2(30);
123637 l_ccid                        NUMBER;
123638 l_adr_transaction_coa_id      NUMBER;
123639 l_adr_accounting_coa_id       NUMBER;
123640 l_adr_flexfield_segment_code  VARCHAR2(30);
123641 l_adr_flex_value_set_id       NUMBER;
123642 l_adr_value_type_code         VARCHAR2(30);
123643 l_adr_value_combination_id    NUMBER;
123644 l_adr_value_segment_code      VARCHAR2(30);
123645 
123646 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
123647 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
123648 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
123649 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
123650 
123651 -- 4262811 Variables ------------------------------------------------------------------------------------------
123652 l_entered_amt_idx             NUMBER;
123653 l_accted_amt_idx              NUMBER;
123654 l_acc_rev_flag                VARCHAR2(1);
123655 l_accrual_line_num            NUMBER;
123656 l_tmp_amt                     NUMBER;
123657 l_acc_rev_natural_side_code   VARCHAR2(1);
123658 
123659 l_num_entries                 NUMBER;
123660 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
123661 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
123662 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
123663 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
123664 l_recog_line_1                NUMBER;
123665 l_recog_line_2                NUMBER;
123666 
123667 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
123668 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
123669 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
123670 
123671 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
123672 
123673 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
123674 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
123675 
123676 ---------------------------------------------------------------------------------------------------------------
123677 
123678 
123679 --
123680 -- bulk performance
123681 --
123682 l_balance_type_code           VARCHAR2(1);
123683 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
123684 l_log_module                  VARCHAR2(240);
123685 
123686 --
123687 -- Upgrade strategy
123688 --
123689 l_actual_upg_option           VARCHAR2(1);
123690 l_enc_upg_option           VARCHAR2(1);
123691 
123692 --
123693 BEGIN
123694 --
123695 IF g_log_enabled THEN
123696       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_239';
123697 END IF;
123698 --
123699 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123700 
123701       trace
123702          (p_msg      => 'BEGIN of AcctLineType_239'
123703          ,p_level    => C_LEVEL_PROCEDURE
123704          ,p_module   => l_log_module);
123705 
123706 END IF;
123707 --
123708 l_component_type             := 'AMB_JLT';
123709 l_component_code             := 'INVENTORY_VALUATION';
123710 l_component_type_code        := 'S';
123711 l_component_appl_id          :=  707;
123712 l_amb_context_code           := 'DEFAULT';
123713 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
123714 l_event_class_code           := 'PURCHASE_ORDER';
123715 l_event_type_code            := 'PO_DEL_ADJ';
123716 l_line_definition_owner_code := 'S';
123717 l_line_definition_code       := 'PI_PO_DEL_ADJ';
123718 --
123719 l_balance_type_code          := 'A';
123720 l_segment                     := NULL;
123721 l_ccid                        := NULL;
123722 l_adr_transaction_coa_id      := NULL;
123723 l_adr_accounting_coa_id       := NULL;
123724 l_adr_flexfield_segment_code  := NULL;
123725 l_adr_flex_value_set_id       := NULL;
123726 l_adr_value_type_code         := NULL;
123727 l_adr_value_combination_id    := NULL;
123728 l_adr_value_segment_code      := NULL;
123729 
123730 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
123731 l_bflow_class_code           := '';    -- 4219869 Business Flow
123732 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
123733 l_budgetary_control_flag     := 'N';
123734 
123735 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
123736 l_bflow_applied_to_amt       := NULL; -- 5132302
123737 l_entered_amt_idx            := NULL;          -- 4262811
123738 l_accted_amt_idx             := NULL;          -- 4262811
123739 l_acc_rev_flag               := NULL;          -- 4262811
123740 l_accrual_line_num           := NULL;          -- 4262811
123741 l_tmp_amt                    := NULL;          -- 4262811
123742 --
123743  
123744 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123745     l_balance_type_code <> 'B' THEN
123746 IF NVL(p_source_97,9E125) =  1
123747  THEN 
123748 
123749    --
123750    XLA_AE_LINES_PKG.SetNewLine;
123751 
123752    p_balance_type_code          := l_balance_type_code;
123753    -- set the flag so later we will know whether the gain loss line needs to be created
123754    
123755    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123756      p_actual_flag :='A';
123757    END IF;
123758 
123759    --
123760    -- bulk performance
123761    --
123762    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123763                                       p_header_num   => 0); -- 4262811
123764    --
123765    -- set accounting line options
123766    --
123767    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123768            p_natural_side_code          => 'D'
123769          , p_gain_or_loss_flag          => 'N'
123770          , p_gl_transfer_mode_code      => 'S'
123771          , p_acct_entry_type_code       => 'A'
123772          , p_switch_side_flag           => 'Y'
123773          , p_merge_duplicate_code       => 'N'
123774          );
123775    --
123776    l_acc_rev_natural_side_code := 'C';  -- 4262811
123777    -- 
123778    --
123779    -- set accounting line type info
123780    --
123781    xla_ae_lines_pkg.SetAcctLineType
123782       (p_component_type             => l_component_type
123783       ,p_event_type_code            => l_event_type_code
123784       ,p_line_definition_owner_code => l_line_definition_owner_code
123785       ,p_line_definition_code       => l_line_definition_code
123786       ,p_accounting_line_code       => l_component_code
123787       ,p_accounting_line_type_code  => l_component_type_code
123788       ,p_accounting_line_appl_id    => l_component_appl_id
123789       ,p_amb_context_code           => l_amb_context_code
123790       ,p_entity_code                => l_entity_code
123791       ,p_event_class_code           => l_event_class_code);
123792    --
123793    -- set accounting class
123794    --
123795    xla_ae_lines_pkg.SetAcctClass(
123796            p_accounting_class_code  => 'INVENTORY_VALUATION'
123797          , p_ae_header_id           => l_ae_header_id
123798          );
123799 
123800    --
123801    -- set rounding class
123802    --
123803    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123804                       'INVENTORY_VALUATION';
123805 
123806    --
123807    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123808    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123809    --
123810    -- bulk performance
123811    --
123812    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123813 
123814    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123815       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123816 
123817    -- 4955764
123818    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123819       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123820 
123821    -- 4458381 Public Sector Enh
123822    
123823    --
123824    -- set accounting attributes for the line type
123825    --
123826    l_entered_amt_idx := 17;
123827    l_accted_amt_idx  := 22;
123828    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
123829    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
123830    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
123831    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
123832    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
123833    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
123834    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
123835    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
123836    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
123837    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
123838    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
123839    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
123840    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
123841    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
123842    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
123843    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
123844    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
123845    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
123846    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
123847    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
123848    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
123849    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
123850    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
123851    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
123852    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
123853    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
123854    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
123855    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
123856    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
123857    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
123858    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
123859    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
123860    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
123861    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
123862    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
123863    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
123864    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
123865    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
123866    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
123867    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
123868    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
123869    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
123870    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
123871    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
123872    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
123873    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
123874    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
123875    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
123876    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
123877 
123878    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123879    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123880 
123881    ---------------------------------------------------------------------------------------------------------------
123882    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123883    ---------------------------------------------------------------------------------------------------------------
123884    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123885 
123886    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123887    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123888 
123889    IF xla_accounting_cache_pkg.GetValueChar
123890          (p_source_code         => 'LEDGER_CATEGORY_CODE'
123891          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123892    AND l_bflow_method_code = 'PRIOR_ENTRY'
123893 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123894    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123895          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123896        )
123897    THEN
123898          xla_ae_lines_pkg.BflowUpgEntry
123899            (p_business_method_code    => l_bflow_method_code
123900            ,p_business_class_code     => l_bflow_class_code
123901            ,p_balance_type            => l_balance_type_code);
123902    ELSE
123903       NULL;
123904 -- No business flow processing for business flow method of NONE.
123905    END IF;
123906 
123907    --
123908    -- call analytical criteria
123909    --
123910    
123911 
123912 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
123913 xla_ae_lines_pkg.SetAnalyticalCriteria(
123914    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
123915  , p_analytical_criterion_owner   => 'S'
123916  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
123917  , p_amb_context_code             => 'DEFAULT'
123918  , p_balancing_flag               => 'Y'
123919  
123920  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
123921  , p_analytical_detail_num_1     =>  NULL
123922  , p_analytical_detail_date_1    =>  NULL
123923 
123924  , p_ae_header_id                 => l_ae_header_id
123925 )
123926 ;
123927 --
123928 
123929    --
123930    -- call description
123931    --
123932    
123933 xla_ae_lines_pkg.SetLineDescription(
123934    p_ae_header_id => l_ae_header_id
123935   ,p_description  => Description_1 (
123936      p_application_id         => p_application_id
123937    , p_ae_header_id           => l_ae_header_id 
123938 , p_source_1 => p_source_1
123939 , p_source_2 => p_source_2
123940 , p_source_3 => p_source_3
123941 , p_source_4 => p_source_4
123942 , p_source_5 => p_source_5
123943    )
123944 );
123945 
123946 
123947    --
123948    -- call ADRs
123949    -- Bug 4922099
123950    --
123951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123952         (NVL(l_actual_upg_option, 'N') = 'O') OR
123953         (NVL(l_enc_upg_option, 'N') = 'O')
123954       )
123955    THEN
123956    NULL;
123957    --
123958    --
123959    
123960   l_ccid := AcctDerRule_28(
123961            p_application_id           => p_application_id
123962          , p_ae_header_id             => l_ae_header_id 
123963 , p_source_15 => p_source_15
123964 , p_source_41 => p_source_41
123965 , p_source_42 => p_source_42
123966 , p_source_43 => p_source_43
123967 , p_source_44 => p_source_44
123968 , p_source_45 => p_source_45
123969          , x_transaction_coa_id       => l_adr_transaction_coa_id
123970          , x_accounting_coa_id        => l_adr_accounting_coa_id
123971          , x_value_type_code          => l_adr_value_type_code
123972          , p_side                     => 'NA'
123973    );
123974 
123975    xla_ae_lines_pkg.set_ccid(
123976     p_code_combination_id          => l_ccid
123977   , p_value_type_code              => l_adr_value_type_code
123978   , p_transaction_coa_id           => l_adr_transaction_coa_id
123979   , p_accounting_coa_id            => l_adr_accounting_coa_id
123980   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
123981   , p_adr_type_code                => 'S'
123982   , p_component_type               => l_component_type
123983   , p_component_code               => l_component_code
123984   , p_component_type_code          => l_component_type_code
123985   , p_component_appl_id            => l_component_appl_id
123986   , p_amb_context_code             => l_amb_context_code
123987   , p_side                         => 'NA'
123988   );
123989 
123990 
123991    --
123992    --
123993    END IF;
123994    --
123995    -- Bug 4922099
123996    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123997           (NVL(l_enc_upg_option, 'N') = 'O')
123998         ) AND
123999         (l_bflow_method_code = 'PRIOR_ENTRY')
124000       )
124001    THEN
124002       IF
124003       --
124004       1 = 2
124005       --
124006       THEN
124007       xla_accounting_err_pkg.build_message
124008                                     (p_appli_s_name            => 'XLA'
124009                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124010                                     ,p_token_1                 => 'LINE_NUMBER'
124011                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
124012                                     ,p_token_2                 => 'LINE_TYPE_NAME'
124013                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
124014                                                                              l_component_type
124015                                                                             ,l_component_code
124016                                                                             ,l_component_type_code
124017                                                                             ,l_component_appl_id
124018                                                                             ,l_amb_context_code
124019                                                                             ,l_entity_code
124020                                                                             ,l_event_class_code
124021                                                                            )
124022                                     ,p_token_3                 => 'OWNER'
124023                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
124024                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
124025                                                                           ,p_lookup_code    => l_component_type_code
124026                                                                          )
124027                                     ,p_token_4                 => 'PRODUCT_NAME'
124028                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124029                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124030                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124031                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124032                                     ,p_ae_header_id            =>  NULL
124033                                        );
124034 
124035         IF (C_LEVEL_ERROR>= g_log_level) THEN
124036                  trace
124037                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124038                       ,p_level    => C_LEVEL_ERROR
124039                       ,p_module   => l_log_module);
124040         END IF;
124041       END IF;
124042    END IF;
124043    --
124044    --
124045    ------------------------------------------------------------------------------------------------
124046    -- 4219869 Business Flow
124047    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124048    -- Prior Entry.  Currently, the following code is always generated.
124049    ------------------------------------------------------------------------------------------------
124050    XLA_AE_LINES_PKG.ValidateCurrentLine;
124051 
124052    ------------------------------------------------------------------------------------
124053    -- 4219869 Business Flow
124054    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124055    ------------------------------------------------------------------------------------
124056    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124057 
124058    ----------------------------------------------------------------------------------
124059    -- 4219869 Business Flow
124060    -- Update journal entry status -- Need to generate this within IF <condition>
124061    ----------------------------------------------------------------------------------
124062    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124063          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124064          ,p_balance_type_code => l_balance_type_code
124065          );
124066 
124067    -------------------------------------------------------------------------------------------
124068    -- 4262811 - Generate the Accrual Reversal lines
124069    -------------------------------------------------------------------------------------------
124070    BEGIN
124071       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124072                               (g_array_event(p_event_id).array_value_num('header_index'));
124073       IF l_acc_rev_flag IS NULL THEN
124074          l_acc_rev_flag := 'N';
124075       END IF;
124076    EXCEPTION
124077       WHEN OTHERS THEN
124078          l_acc_rev_flag := 'N';
124079    END;
124080    --
124081    IF (l_acc_rev_flag = 'Y') THEN
124082 
124083        -- 4645092  ------------------------------------------------------------------------------
124084        -- To allow MPA report to determine if it should generate report process
124085        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124086        ------------------------------------------------------------------------------------------
124087 
124088        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124089        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124090    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
124091    -- call ADRs
124092    -- Bug 4922099
124093    --
124094    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124095         (NVL(l_actual_upg_option, 'N') = 'O') OR
124096         (NVL(l_enc_upg_option, 'N') = 'O')
124097       )
124098    THEN
124099    NULL;
124100    --
124101    --
124102    
124103   l_ccid := AcctDerRule_28(
124104            p_application_id           => p_application_id
124105          , p_ae_header_id             => l_ae_header_id 
124106 , p_source_15 => p_source_15
124107 , p_source_41 => p_source_41
124108 , p_source_42 => p_source_42
124109 , p_source_43 => p_source_43
124110 , p_source_44 => p_source_44
124111 , p_source_45 => p_source_45
124112          , x_transaction_coa_id       => l_adr_transaction_coa_id
124113          , x_accounting_coa_id        => l_adr_accounting_coa_id
124114          , x_value_type_code          => l_adr_value_type_code
124115          , p_side                     => 'NA'
124116    );
124117 
124118    xla_ae_lines_pkg.set_ccid(
124119     p_code_combination_id          => l_ccid
124120   , p_value_type_code              => l_adr_value_type_code
124121   , p_transaction_coa_id           => l_adr_transaction_coa_id
124122   , p_accounting_coa_id            => l_adr_accounting_coa_id
124123   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
124124   , p_adr_type_code                => 'S'
124125   , p_component_type               => l_component_type
124126   , p_component_code               => l_component_code
124127   , p_component_type_code          => l_component_type_code
124128   , p_component_appl_id            => l_component_appl_id
124129   , p_amb_context_code             => l_amb_context_code
124130   , p_side                         => 'NA'
124131   );
124132 
124133 
124134    --
124135    --
124136    END IF;
124137 
124138        --
124139        -- Update the line information that should be overwritten
124140        --
124141        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124142                                          p_header_num   => 1);
124143        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
124144 
124145        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
124146 
124147        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
124148           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
124149        END IF;
124150 
124151       --
124152       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
124153       --
124154       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
124155           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
124156       ELSE
124157           ---------------------------------------------------------------------------------------------------
124158           -- 4262811a Switch Sign
124159           ---------------------------------------------------------------------------------------------------
124160           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
124161           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124162                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124163           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124164                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124165           -- 5132302
124166           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
124167                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124168 
124169       END IF;
124170 
124171       -- 4955764
124172       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124173       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
124174 
124175 
124176       XLA_AE_LINES_PKG.ValidateCurrentLine;
124177       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124178 
124179       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124180                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
124181                ,p_balance_type_code => l_balance_type_code);
124182 
124183    END IF;
124184 
124185    -----------------------------------------------------------------------------------------
124186    -- 4262811 Multiperiod Accounting
124187    -----------------------------------------------------------------------------------------
124188      -- No MPA option is assigned.
124189 
124190 
124191 END IF;
124192 END IF;
124193 --
124194 
124195 --
124196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124197    trace
124198       (p_msg      => 'END of AcctLineType_239'
124199       ,p_level    => C_LEVEL_PROCEDURE
124200       ,p_module   => l_log_module);
124201 END IF;
124202 --
124203 EXCEPTION
124204   WHEN xla_exceptions_pkg.application_exception THEN
124205       RAISE;
124206   WHEN OTHERS THEN
124207        xla_exceptions_pkg.raise_message
124208            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_239');
124209 END AcctLineType_239;
124210 --
124211 
124212 ---------------------------------------
124213 --
124214 -- PRIVATE FUNCTION
124215 --         AcctLineType_240
124216 --
124217 ---------------------------------------
124218 PROCEDURE AcctLineType_240 (
124219   p_application_id        IN NUMBER
124220  ,p_event_id              IN NUMBER
124221  ,p_calculate_acctd_flag  IN VARCHAR2
124222  ,p_calculate_g_l_flag    IN VARCHAR2
124223  ,p_actual_flag           IN OUT VARCHAR2
124224  ,p_balance_type_code     OUT VARCHAR2
124225  ,p_gain_or_loss_ref      OUT VARCHAR2
124226  
124227 --TRANSACTION_ID
124228  , p_source_1            IN NUMBER
124229 --Item Concatenated Segments
124230  , p_source_2            IN VARCHAR2
124231 --Transaction Quantity
124232  , p_source_3            IN NUMBER
124233 --Transaction Unit of Measure Code
124234  , p_source_4            IN VARCHAR2
124235 --Inventory Transaction Type Description
124236  , p_source_5            IN VARCHAR2
124237 --Cost Element Name
124238  , p_source_15            IN NUMBER
124239 --Product Line Accounting Category Material Account
124240  , p_source_41            IN NUMBER
124241 --Product Line Accounting Category Material Overhead Account
124242  , p_source_42            IN NUMBER
124243 --Product Line Accounting Category Resource Account
124244  , p_source_43            IN NUMBER
124245 --Product Line Accounting Category Outside Processing Account
124246  , p_source_44            IN NUMBER
124247 --Product Line Accounting Category Overhead Account
124248  , p_source_45            IN NUMBER
124249 --Applied to Application ID
124250  , p_source_79            IN NUMBER
124251 --Applied to Distribution Link Type
124252  , p_source_80            IN VARCHAR2
124253 --Applied to Entity Code
124254  , p_source_81            IN VARCHAR2
124255 --Applied To Purchase Document Identifier
124256  , p_source_83            IN NUMBER
124257 --DISTRIBUTION_IDENTIFIER
124258  , p_source_84            IN NUMBER
124259 --Distribution Type
124260  , p_source_85            IN VARCHAR2
124261  , p_source_85_meaning    IN VARCHAR2
124262 --PO Budget Account
124263  , p_source_86            IN NUMBER
124264 --Encumbrance Reversal Amount Entered
124265  , p_source_87            IN NUMBER
124266 --Entered Currency Code
124267  , p_source_88            IN VARCHAR2
124268 --Transaction Encumbrance Reversal Amount
124269  , p_source_89            IN NUMBER
124270 --Entered Amount
124271  , p_source_91            IN NUMBER
124272 --Currency Conversion Date
124273  , p_source_92            IN DATE
124274 --Currency Conversion Rate
124275  , p_source_93            IN NUMBER
124276 --Currency Conversion Type
124277  , p_source_94            IN VARCHAR2
124278 --Accounted Amount
124279  , p_source_95            IN NUMBER
124280 --Purchasing Encumbrance Type Identifier
124281  , p_source_96            IN NUMBER
124282 --Accounting Line Type
124283  , p_source_97            IN NUMBER
124284 --Costing Encumbrance Upgrade Option
124285  , p_source_100            IN VARCHAR2
124286 --TXN_PO_DISTRIBUTION_ID
124287  , p_source_101            IN NUMBER
124288 --Organization Code
124289  , p_source_108            IN VARCHAR2
124290 )
124291 IS
124292 
124293 l_component_type              VARCHAR2(80);
124294 l_component_code              VARCHAR2(30);
124295 l_component_type_code         VARCHAR2(1);
124296 l_component_appl_id           INTEGER;
124297 l_amb_context_code            VARCHAR2(30);
124298 l_entity_code                 VARCHAR2(30);
124299 l_event_class_code            VARCHAR2(30);
124300 l_ae_header_id                NUMBER;
124301 l_event_type_code             VARCHAR2(30);
124302 l_line_definition_code        VARCHAR2(30);
124303 l_line_definition_owner_code  VARCHAR2(1);
124304 --
124305 -- adr variables
124306 l_segment                     VARCHAR2(30);
124307 l_ccid                        NUMBER;
124308 l_adr_transaction_coa_id      NUMBER;
124309 l_adr_accounting_coa_id       NUMBER;
124310 l_adr_flexfield_segment_code  VARCHAR2(30);
124311 l_adr_flex_value_set_id       NUMBER;
124312 l_adr_value_type_code         VARCHAR2(30);
124313 l_adr_value_combination_id    NUMBER;
124314 l_adr_value_segment_code      VARCHAR2(30);
124315 
124316 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
124317 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
124318 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
124319 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
124320 
124321 -- 4262811 Variables ------------------------------------------------------------------------------------------
124322 l_entered_amt_idx             NUMBER;
124323 l_accted_amt_idx              NUMBER;
124324 l_acc_rev_flag                VARCHAR2(1);
124325 l_accrual_line_num            NUMBER;
124326 l_tmp_amt                     NUMBER;
124327 l_acc_rev_natural_side_code   VARCHAR2(1);
124328 
124329 l_num_entries                 NUMBER;
124330 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
124331 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
124332 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
124333 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
124334 l_recog_line_1                NUMBER;
124335 l_recog_line_2                NUMBER;
124336 
124337 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
124338 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
124339 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
124340 
124341 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124342 
124343 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
124344 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
124345 
124346 ---------------------------------------------------------------------------------------------------------------
124347 
124348 
124349 --
124350 -- bulk performance
124351 --
124352 l_balance_type_code           VARCHAR2(1);
124353 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
124354 l_log_module                  VARCHAR2(240);
124355 
124356 --
124357 -- Upgrade strategy
124358 --
124359 l_actual_upg_option           VARCHAR2(1);
124360 l_enc_upg_option           VARCHAR2(1);
124361 
124362 --
124363 BEGIN
124364 --
124365 IF g_log_enabled THEN
124366       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_240';
124367 END IF;
124368 --
124369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124370 
124371       trace
124372          (p_msg      => 'BEGIN of AcctLineType_240'
124373          ,p_level    => C_LEVEL_PROCEDURE
124374          ,p_module   => l_log_module);
124375 
124376 END IF;
124377 --
124378 l_component_type             := 'AMB_JLT';
124379 l_component_code             := 'INVENTORY_VALUATION';
124380 l_component_type_code        := 'S';
124381 l_component_appl_id          :=  707;
124382 l_amb_context_code           := 'DEFAULT';
124383 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
124384 l_event_class_code           := 'PURCHASE_ORDER';
124385 l_event_type_code            := 'PO_DEL_INV';
124386 l_line_definition_owner_code := 'S';
124387 l_line_definition_code       := 'PI_PO_DEL_INV';
124388 --
124389 l_balance_type_code          := 'A';
124390 l_segment                     := NULL;
124391 l_ccid                        := NULL;
124392 l_adr_transaction_coa_id      := NULL;
124393 l_adr_accounting_coa_id       := NULL;
124394 l_adr_flexfield_segment_code  := NULL;
124395 l_adr_flex_value_set_id       := NULL;
124396 l_adr_value_type_code         := NULL;
124397 l_adr_value_combination_id    := NULL;
124398 l_adr_value_segment_code      := NULL;
124399 
124400 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
124401 l_bflow_class_code           := '';    -- 4219869 Business Flow
124402 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
124403 l_budgetary_control_flag     := 'N';
124404 
124405 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
124406 l_bflow_applied_to_amt       := NULL; -- 5132302
124407 l_entered_amt_idx            := NULL;          -- 4262811
124408 l_accted_amt_idx             := NULL;          -- 4262811
124409 l_acc_rev_flag               := NULL;          -- 4262811
124410 l_accrual_line_num           := NULL;          -- 4262811
124411 l_tmp_amt                    := NULL;          -- 4262811
124412 --
124413  
124414 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124415     l_balance_type_code <> 'B' THEN
124416 IF NVL(p_source_97,9E125) =  1
124417  THEN 
124418 
124419    --
124420    XLA_AE_LINES_PKG.SetNewLine;
124421 
124422    p_balance_type_code          := l_balance_type_code;
124423    -- set the flag so later we will know whether the gain loss line needs to be created
124424    
124425    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124426      p_actual_flag :='A';
124427    END IF;
124428 
124429    --
124430    -- bulk performance
124431    --
124432    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124433                                       p_header_num   => 0); -- 4262811
124434    --
124435    -- set accounting line options
124436    --
124437    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124438            p_natural_side_code          => 'D'
124439          , p_gain_or_loss_flag          => 'N'
124440          , p_gl_transfer_mode_code      => 'S'
124441          , p_acct_entry_type_code       => 'A'
124442          , p_switch_side_flag           => 'Y'
124443          , p_merge_duplicate_code       => 'N'
124444          );
124445    --
124446    l_acc_rev_natural_side_code := 'C';  -- 4262811
124447    -- 
124448    --
124449    -- set accounting line type info
124450    --
124451    xla_ae_lines_pkg.SetAcctLineType
124452       (p_component_type             => l_component_type
124453       ,p_event_type_code            => l_event_type_code
124454       ,p_line_definition_owner_code => l_line_definition_owner_code
124455       ,p_line_definition_code       => l_line_definition_code
124456       ,p_accounting_line_code       => l_component_code
124457       ,p_accounting_line_type_code  => l_component_type_code
124458       ,p_accounting_line_appl_id    => l_component_appl_id
124459       ,p_amb_context_code           => l_amb_context_code
124460       ,p_entity_code                => l_entity_code
124461       ,p_event_class_code           => l_event_class_code);
124462    --
124463    -- set accounting class
124464    --
124465    xla_ae_lines_pkg.SetAcctClass(
124466            p_accounting_class_code  => 'INVENTORY_VALUATION'
124467          , p_ae_header_id           => l_ae_header_id
124468          );
124469 
124470    --
124471    -- set rounding class
124472    --
124473    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124474                       'INVENTORY_VALUATION';
124475 
124476    --
124477    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124478    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124479    --
124480    -- bulk performance
124481    --
124482    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124483 
124484    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124485       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124486 
124487    -- 4955764
124488    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124489       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124490 
124491    -- 4458381 Public Sector Enh
124492    
124493    --
124494    -- set accounting attributes for the line type
124495    --
124496    l_entered_amt_idx := 17;
124497    l_accted_amt_idx  := 22;
124498    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
124499    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
124500    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
124501    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
124502    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
124503    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
124504    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
124505    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
124506    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
124507    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
124508    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
124509    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
124510    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
124511    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
124512    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
124513    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
124514    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
124515    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
124516    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
124517    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
124518    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
124519    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
124520    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
124521    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
124522    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
124523    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
124524    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
124525    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
124526    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
124527    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
124528    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
124529    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
124530    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
124531    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
124532    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
124533    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
124534    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
124535    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
124536    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
124537    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
124538    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
124539    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
124540    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
124541    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
124542    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
124543    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
124544    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
124545    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
124546    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
124547 
124548    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124549    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124550 
124551    ---------------------------------------------------------------------------------------------------------------
124552    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124553    ---------------------------------------------------------------------------------------------------------------
124554    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124555 
124556    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124557    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124558 
124559    IF xla_accounting_cache_pkg.GetValueChar
124560          (p_source_code         => 'LEDGER_CATEGORY_CODE'
124561          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124562    AND l_bflow_method_code = 'PRIOR_ENTRY'
124563 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124564    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124565          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124566        )
124567    THEN
124568          xla_ae_lines_pkg.BflowUpgEntry
124569            (p_business_method_code    => l_bflow_method_code
124570            ,p_business_class_code     => l_bflow_class_code
124571            ,p_balance_type            => l_balance_type_code);
124572    ELSE
124573       NULL;
124574 -- No business flow processing for business flow method of NONE.
124575    END IF;
124576 
124577    --
124578    -- call analytical criteria
124579    --
124580    
124581 
124582 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
124583 xla_ae_lines_pkg.SetAnalyticalCriteria(
124584    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
124585  , p_analytical_criterion_owner   => 'S'
124586  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
124587  , p_amb_context_code             => 'DEFAULT'
124588  , p_balancing_flag               => 'Y'
124589  
124590  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
124591  , p_analytical_detail_num_1     =>  NULL
124592  , p_analytical_detail_date_1    =>  NULL
124593 
124594  , p_ae_header_id                 => l_ae_header_id
124595 )
124596 ;
124597 --
124598 
124599    --
124600    -- call description
124601    --
124602    
124603 xla_ae_lines_pkg.SetLineDescription(
124604    p_ae_header_id => l_ae_header_id
124605   ,p_description  => Description_1 (
124606      p_application_id         => p_application_id
124607    , p_ae_header_id           => l_ae_header_id 
124608 , p_source_1 => p_source_1
124609 , p_source_2 => p_source_2
124610 , p_source_3 => p_source_3
124611 , p_source_4 => p_source_4
124612 , p_source_5 => p_source_5
124613    )
124614 );
124615 
124616 
124617    --
124618    -- call ADRs
124619    -- Bug 4922099
124620    --
124621    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124622         (NVL(l_actual_upg_option, 'N') = 'O') OR
124623         (NVL(l_enc_upg_option, 'N') = 'O')
124624       )
124625    THEN
124626    NULL;
124627    --
124628    --
124629    
124630   l_ccid := AcctDerRule_28(
124631            p_application_id           => p_application_id
124632          , p_ae_header_id             => l_ae_header_id 
124633 , p_source_15 => p_source_15
124634 , p_source_41 => p_source_41
124635 , p_source_42 => p_source_42
124636 , p_source_43 => p_source_43
124637 , p_source_44 => p_source_44
124638 , p_source_45 => p_source_45
124639          , x_transaction_coa_id       => l_adr_transaction_coa_id
124640          , x_accounting_coa_id        => l_adr_accounting_coa_id
124641          , x_value_type_code          => l_adr_value_type_code
124642          , p_side                     => 'NA'
124643    );
124644 
124645    xla_ae_lines_pkg.set_ccid(
124646     p_code_combination_id          => l_ccid
124647   , p_value_type_code              => l_adr_value_type_code
124648   , p_transaction_coa_id           => l_adr_transaction_coa_id
124649   , p_accounting_coa_id            => l_adr_accounting_coa_id
124650   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
124651   , p_adr_type_code                => 'S'
124652   , p_component_type               => l_component_type
124653   , p_component_code               => l_component_code
124654   , p_component_type_code          => l_component_type_code
124655   , p_component_appl_id            => l_component_appl_id
124656   , p_amb_context_code             => l_amb_context_code
124657   , p_side                         => 'NA'
124658   );
124659 
124660 
124661    --
124662    --
124663    END IF;
124664    --
124665    -- Bug 4922099
124666    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124667           (NVL(l_enc_upg_option, 'N') = 'O')
124668         ) AND
124669         (l_bflow_method_code = 'PRIOR_ENTRY')
124670       )
124671    THEN
124672       IF
124673       --
124674       1 = 2
124675       --
124676       THEN
124677       xla_accounting_err_pkg.build_message
124678                                     (p_appli_s_name            => 'XLA'
124679                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124680                                     ,p_token_1                 => 'LINE_NUMBER'
124681                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
124682                                     ,p_token_2                 => 'LINE_TYPE_NAME'
124683                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
124684                                                                              l_component_type
124685                                                                             ,l_component_code
124686                                                                             ,l_component_type_code
124687                                                                             ,l_component_appl_id
124688                                                                             ,l_amb_context_code
124689                                                                             ,l_entity_code
124690                                                                             ,l_event_class_code
124691                                                                            )
124692                                     ,p_token_3                 => 'OWNER'
124693                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
124694                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
124695                                                                           ,p_lookup_code    => l_component_type_code
124696                                                                          )
124697                                     ,p_token_4                 => 'PRODUCT_NAME'
124698                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124699                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124700                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124701                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124702                                     ,p_ae_header_id            =>  NULL
124703                                        );
124704 
124705         IF (C_LEVEL_ERROR>= g_log_level) THEN
124706                  trace
124707                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124708                       ,p_level    => C_LEVEL_ERROR
124709                       ,p_module   => l_log_module);
124710         END IF;
124711       END IF;
124712    END IF;
124713    --
124714    --
124715    ------------------------------------------------------------------------------------------------
124716    -- 4219869 Business Flow
124717    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124718    -- Prior Entry.  Currently, the following code is always generated.
124719    ------------------------------------------------------------------------------------------------
124720    XLA_AE_LINES_PKG.ValidateCurrentLine;
124721 
124722    ------------------------------------------------------------------------------------
124723    -- 4219869 Business Flow
124724    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124725    ------------------------------------------------------------------------------------
124726    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124727 
124728    ----------------------------------------------------------------------------------
124729    -- 4219869 Business Flow
124730    -- Update journal entry status -- Need to generate this within IF <condition>
124731    ----------------------------------------------------------------------------------
124732    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124733          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124734          ,p_balance_type_code => l_balance_type_code
124735          );
124736 
124737    -------------------------------------------------------------------------------------------
124738    -- 4262811 - Generate the Accrual Reversal lines
124739    -------------------------------------------------------------------------------------------
124740    BEGIN
124741       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124742                               (g_array_event(p_event_id).array_value_num('header_index'));
124743       IF l_acc_rev_flag IS NULL THEN
124744          l_acc_rev_flag := 'N';
124745       END IF;
124746    EXCEPTION
124747       WHEN OTHERS THEN
124748          l_acc_rev_flag := 'N';
124749    END;
124750    --
124751    IF (l_acc_rev_flag = 'Y') THEN
124752 
124753        -- 4645092  ------------------------------------------------------------------------------
124754        -- To allow MPA report to determine if it should generate report process
124755        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124756        ------------------------------------------------------------------------------------------
124757 
124758        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124759        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124760    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
124761    -- call ADRs
124762    -- Bug 4922099
124763    --
124764    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124765         (NVL(l_actual_upg_option, 'N') = 'O') OR
124766         (NVL(l_enc_upg_option, 'N') = 'O')
124767       )
124768    THEN
124769    NULL;
124770    --
124771    --
124772    
124773   l_ccid := AcctDerRule_28(
124774            p_application_id           => p_application_id
124775          , p_ae_header_id             => l_ae_header_id 
124776 , p_source_15 => p_source_15
124777 , p_source_41 => p_source_41
124778 , p_source_42 => p_source_42
124779 , p_source_43 => p_source_43
124780 , p_source_44 => p_source_44
124781 , p_source_45 => p_source_45
124782          , x_transaction_coa_id       => l_adr_transaction_coa_id
124783          , x_accounting_coa_id        => l_adr_accounting_coa_id
124784          , x_value_type_code          => l_adr_value_type_code
124785          , p_side                     => 'NA'
124786    );
124787 
124788    xla_ae_lines_pkg.set_ccid(
124789     p_code_combination_id          => l_ccid
124790   , p_value_type_code              => l_adr_value_type_code
124791   , p_transaction_coa_id           => l_adr_transaction_coa_id
124792   , p_accounting_coa_id            => l_adr_accounting_coa_id
124793   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
124794   , p_adr_type_code                => 'S'
124795   , p_component_type               => l_component_type
124796   , p_component_code               => l_component_code
124797   , p_component_type_code          => l_component_type_code
124798   , p_component_appl_id            => l_component_appl_id
124799   , p_amb_context_code             => l_amb_context_code
124800   , p_side                         => 'NA'
124801   );
124802 
124803 
124804    --
124805    --
124806    END IF;
124807 
124808        --
124809        -- Update the line information that should be overwritten
124810        --
124811        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124812                                          p_header_num   => 1);
124813        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
124814 
124815        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
124816 
124817        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
124818           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
124819        END IF;
124820 
124821       --
124822       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
124823       --
124824       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
124825           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
124826       ELSE
124827           ---------------------------------------------------------------------------------------------------
124828           -- 4262811a Switch Sign
124829           ---------------------------------------------------------------------------------------------------
124830           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
124831           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124832                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124833           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124834                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124835           -- 5132302
124836           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
124837                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124838 
124839       END IF;
124840 
124841       -- 4955764
124842       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124843       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
124844 
124845 
124846       XLA_AE_LINES_PKG.ValidateCurrentLine;
124847       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124848 
124849       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124850                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
124851                ,p_balance_type_code => l_balance_type_code);
124852 
124853    END IF;
124854 
124855    -----------------------------------------------------------------------------------------
124856    -- 4262811 Multiperiod Accounting
124857    -----------------------------------------------------------------------------------------
124858      -- No MPA option is assigned.
124859 
124860 
124861 END IF;
124862 END IF;
124863 --
124864 
124865 --
124866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124867    trace
124868       (p_msg      => 'END of AcctLineType_240'
124869       ,p_level    => C_LEVEL_PROCEDURE
124870       ,p_module   => l_log_module);
124871 END IF;
124872 --
124873 EXCEPTION
124874   WHEN xla_exceptions_pkg.application_exception THEN
124875       RAISE;
124876   WHEN OTHERS THEN
124877        xla_exceptions_pkg.raise_message
124878            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_240');
124879 END AcctLineType_240;
124880 --
124881 
124882 ---------------------------------------
124883 --
124884 -- PRIVATE FUNCTION
124885 --         AcctLineType_241
124886 --
124887 ---------------------------------------
124888 PROCEDURE AcctLineType_241 (
124889   p_application_id        IN NUMBER
124890  ,p_event_id              IN NUMBER
124891  ,p_calculate_acctd_flag  IN VARCHAR2
124892  ,p_calculate_g_l_flag    IN VARCHAR2
124893  ,p_actual_flag           IN OUT VARCHAR2
124894  ,p_balance_type_code     OUT VARCHAR2
124895  ,p_gain_or_loss_ref      OUT VARCHAR2
124896  
124897 --TRANSACTION_ID
124898  , p_source_1            IN NUMBER
124899 --Item Concatenated Segments
124900  , p_source_2            IN VARCHAR2
124901 --Transaction Quantity
124902  , p_source_3            IN NUMBER
124903 --Transaction Unit of Measure Code
124904  , p_source_4            IN VARCHAR2
124905 --Inventory Transaction Type Description
124906  , p_source_5            IN VARCHAR2
124907 --Cost Element Name
124908  , p_source_15            IN NUMBER
124909 --Product Line Accounting Category Material Account
124910  , p_source_41            IN NUMBER
124911 --Product Line Accounting Category Material Overhead Account
124912  , p_source_42            IN NUMBER
124913 --Product Line Accounting Category Resource Account
124914  , p_source_43            IN NUMBER
124915 --Product Line Accounting Category Outside Processing Account
124916  , p_source_44            IN NUMBER
124917 --Product Line Accounting Category Overhead Account
124918  , p_source_45            IN NUMBER
124919 --DISTRIBUTION_IDENTIFIER
124920  , p_source_84            IN NUMBER
124921 --Distribution Type
124922  , p_source_85            IN VARCHAR2
124923  , p_source_85_meaning    IN VARCHAR2
124924 --Entered Currency Code
124925  , p_source_88            IN VARCHAR2
124926 --Entered Amount
124927  , p_source_91            IN NUMBER
124928 --Currency Conversion Date
124929  , p_source_92            IN DATE
124930 --Currency Conversion Rate
124931  , p_source_93            IN NUMBER
124932 --Currency Conversion Type
124933  , p_source_94            IN VARCHAR2
124934 --Accounted Amount
124935  , p_source_95            IN NUMBER
124936 --Accounting Line Type
124937  , p_source_97            IN NUMBER
124938 --Organization Code
124939  , p_source_108            IN VARCHAR2
124940 )
124941 IS
124942 
124943 l_component_type              VARCHAR2(80);
124944 l_component_code              VARCHAR2(30);
124945 l_component_type_code         VARCHAR2(1);
124946 l_component_appl_id           INTEGER;
124947 l_amb_context_code            VARCHAR2(30);
124948 l_entity_code                 VARCHAR2(30);
124949 l_event_class_code            VARCHAR2(30);
124950 l_ae_header_id                NUMBER;
124951 l_event_type_code             VARCHAR2(30);
124952 l_line_definition_code        VARCHAR2(30);
124953 l_line_definition_owner_code  VARCHAR2(1);
124954 --
124955 -- adr variables
124956 l_segment                     VARCHAR2(30);
124957 l_ccid                        NUMBER;
124958 l_adr_transaction_coa_id      NUMBER;
124959 l_adr_accounting_coa_id       NUMBER;
124960 l_adr_flexfield_segment_code  VARCHAR2(30);
124961 l_adr_flex_value_set_id       NUMBER;
124962 l_adr_value_type_code         VARCHAR2(30);
124963 l_adr_value_combination_id    NUMBER;
124964 l_adr_value_segment_code      VARCHAR2(30);
124965 
124966 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
124967 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
124968 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
124969 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
124970 
124971 -- 4262811 Variables ------------------------------------------------------------------------------------------
124972 l_entered_amt_idx             NUMBER;
124973 l_accted_amt_idx              NUMBER;
124974 l_acc_rev_flag                VARCHAR2(1);
124975 l_accrual_line_num            NUMBER;
124976 l_tmp_amt                     NUMBER;
124977 l_acc_rev_natural_side_code   VARCHAR2(1);
124978 
124979 l_num_entries                 NUMBER;
124980 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
124981 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
124982 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
124983 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
124984 l_recog_line_1                NUMBER;
124985 l_recog_line_2                NUMBER;
124986 
124987 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
124988 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
124989 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
124990 
124991 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124992 
124993 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
124994 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
124995 
124996 ---------------------------------------------------------------------------------------------------------------
124997 
124998 
124999 --
125000 -- bulk performance
125001 --
125002 l_balance_type_code           VARCHAR2(1);
125003 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
125004 l_log_module                  VARCHAR2(240);
125005 
125006 --
125007 -- Upgrade strategy
125008 --
125009 l_actual_upg_option           VARCHAR2(1);
125010 l_enc_upg_option           VARCHAR2(1);
125011 
125012 --
125013 BEGIN
125014 --
125015 IF g_log_enabled THEN
125016       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_241';
125017 END IF;
125018 --
125019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125020 
125021       trace
125022          (p_msg      => 'BEGIN of AcctLineType_241'
125023          ,p_level    => C_LEVEL_PROCEDURE
125024          ,p_module   => l_log_module);
125025 
125026 END IF;
125027 --
125028 l_component_type             := 'AMB_JLT';
125029 l_component_code             := 'INVENTORY_VALUATION';
125030 l_component_type_code        := 'S';
125031 l_component_appl_id          :=  707;
125032 l_amb_context_code           := 'DEFAULT';
125033 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
125034 l_event_class_code           := 'SALES_ORDER';
125035 l_event_type_code            := 'RMA_RETURN';
125036 l_line_definition_owner_code := 'S';
125037 l_line_definition_code       := 'PI_RMA_RETURN';
125038 --
125039 l_balance_type_code          := 'A';
125040 l_segment                     := NULL;
125041 l_ccid                        := NULL;
125042 l_adr_transaction_coa_id      := NULL;
125043 l_adr_accounting_coa_id       := NULL;
125044 l_adr_flexfield_segment_code  := NULL;
125045 l_adr_flex_value_set_id       := NULL;
125046 l_adr_value_type_code         := NULL;
125047 l_adr_value_combination_id    := NULL;
125048 l_adr_value_segment_code      := NULL;
125049 
125050 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
125051 l_bflow_class_code           := '';    -- 4219869 Business Flow
125052 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
125053 l_budgetary_control_flag     := 'N';
125054 
125055 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
125056 l_bflow_applied_to_amt       := NULL; -- 5132302
125057 l_entered_amt_idx            := NULL;          -- 4262811
125058 l_accted_amt_idx             := NULL;          -- 4262811
125059 l_acc_rev_flag               := NULL;          -- 4262811
125060 l_accrual_line_num           := NULL;          -- 4262811
125061 l_tmp_amt                    := NULL;          -- 4262811
125062 --
125063  
125064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125065     l_balance_type_code <> 'B' THEN
125066 IF NVL(p_source_97,9E125) =  1
125067  THEN 
125068 
125069    --
125070    XLA_AE_LINES_PKG.SetNewLine;
125071 
125072    p_balance_type_code          := l_balance_type_code;
125073    -- set the flag so later we will know whether the gain loss line needs to be created
125074    
125075    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125076      p_actual_flag :='A';
125077    END IF;
125078 
125079    --
125080    -- bulk performance
125081    --
125082    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125083                                       p_header_num   => 0); -- 4262811
125084    --
125085    -- set accounting line options
125086    --
125087    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125088            p_natural_side_code          => 'D'
125089          , p_gain_or_loss_flag          => 'N'
125090          , p_gl_transfer_mode_code      => 'S'
125091          , p_acct_entry_type_code       => 'A'
125092          , p_switch_side_flag           => 'Y'
125093          , p_merge_duplicate_code       => 'N'
125094          );
125095    --
125096    l_acc_rev_natural_side_code := 'C';  -- 4262811
125097    -- 
125098    --
125099    -- set accounting line type info
125100    --
125101    xla_ae_lines_pkg.SetAcctLineType
125102       (p_component_type             => l_component_type
125103       ,p_event_type_code            => l_event_type_code
125104       ,p_line_definition_owner_code => l_line_definition_owner_code
125105       ,p_line_definition_code       => l_line_definition_code
125106       ,p_accounting_line_code       => l_component_code
125107       ,p_accounting_line_type_code  => l_component_type_code
125108       ,p_accounting_line_appl_id    => l_component_appl_id
125109       ,p_amb_context_code           => l_amb_context_code
125110       ,p_entity_code                => l_entity_code
125111       ,p_event_class_code           => l_event_class_code);
125112    --
125113    -- set accounting class
125114    --
125115    xla_ae_lines_pkg.SetAcctClass(
125116            p_accounting_class_code  => 'INVENTORY_VALUATION'
125117          , p_ae_header_id           => l_ae_header_id
125118          );
125119 
125120    --
125121    -- set rounding class
125122    --
125123    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125124                       'INVENTORY_VALUATION';
125125 
125126    --
125127    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125128    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125129    --
125130    -- bulk performance
125131    --
125132    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125133 
125134    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125135       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125136 
125137    -- 4955764
125138    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125139       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125140 
125141    -- 4458381 Public Sector Enh
125142    
125143    --
125144    -- set accounting attributes for the line type
125145    --
125146    l_entered_amt_idx := 3;
125147    l_accted_amt_idx  := 8;
125148    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
125149    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125150    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
125151    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125152    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
125153    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125154    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
125155    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125156    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
125157    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125158    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
125159    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125160    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
125161    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125162    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
125163    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125164    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
125165 
125166    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125167    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125168 
125169    ---------------------------------------------------------------------------------------------------------------
125170    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125171    ---------------------------------------------------------------------------------------------------------------
125172    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125173 
125174    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125175    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125176 
125177    IF xla_accounting_cache_pkg.GetValueChar
125178          (p_source_code         => 'LEDGER_CATEGORY_CODE'
125179          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125180    AND l_bflow_method_code = 'PRIOR_ENTRY'
125181 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125182    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125183          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125184        )
125185    THEN
125186          xla_ae_lines_pkg.BflowUpgEntry
125187            (p_business_method_code    => l_bflow_method_code
125188            ,p_business_class_code     => l_bflow_class_code
125189            ,p_balance_type            => l_balance_type_code);
125190    ELSE
125191       NULL;
125192 -- No business flow processing for business flow method of NONE.
125193    END IF;
125194 
125195    --
125196    -- call analytical criteria
125197    --
125198    
125199 
125200 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
125201 xla_ae_lines_pkg.SetAnalyticalCriteria(
125202    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
125203  , p_analytical_criterion_owner   => 'S'
125204  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
125205  , p_amb_context_code             => 'DEFAULT'
125206  , p_balancing_flag               => 'Y'
125207  
125208  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
125209  , p_analytical_detail_num_1     =>  NULL
125210  , p_analytical_detail_date_1    =>  NULL
125211 
125212  , p_ae_header_id                 => l_ae_header_id
125213 )
125214 ;
125215 --
125216 
125217    --
125218    -- call description
125219    --
125220    
125221 xla_ae_lines_pkg.SetLineDescription(
125222    p_ae_header_id => l_ae_header_id
125223   ,p_description  => Description_1 (
125224      p_application_id         => p_application_id
125225    , p_ae_header_id           => l_ae_header_id 
125226 , p_source_1 => p_source_1
125227 , p_source_2 => p_source_2
125228 , p_source_3 => p_source_3
125229 , p_source_4 => p_source_4
125230 , p_source_5 => p_source_5
125231    )
125232 );
125233 
125234 
125235    --
125236    -- call ADRs
125237    -- Bug 4922099
125238    --
125239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125240         (NVL(l_actual_upg_option, 'N') = 'O') OR
125241         (NVL(l_enc_upg_option, 'N') = 'O')
125242       )
125243    THEN
125244    NULL;
125245    --
125246    --
125247    
125248   l_ccid := AcctDerRule_28(
125249            p_application_id           => p_application_id
125250          , p_ae_header_id             => l_ae_header_id 
125251 , p_source_15 => p_source_15
125252 , p_source_41 => p_source_41
125253 , p_source_42 => p_source_42
125254 , p_source_43 => p_source_43
125255 , p_source_44 => p_source_44
125256 , p_source_45 => p_source_45
125257          , x_transaction_coa_id       => l_adr_transaction_coa_id
125258          , x_accounting_coa_id        => l_adr_accounting_coa_id
125259          , x_value_type_code          => l_adr_value_type_code
125260          , p_side                     => 'NA'
125261    );
125262 
125263    xla_ae_lines_pkg.set_ccid(
125264     p_code_combination_id          => l_ccid
125265   , p_value_type_code              => l_adr_value_type_code
125266   , p_transaction_coa_id           => l_adr_transaction_coa_id
125267   , p_accounting_coa_id            => l_adr_accounting_coa_id
125268   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
125269   , p_adr_type_code                => 'S'
125270   , p_component_type               => l_component_type
125271   , p_component_code               => l_component_code
125272   , p_component_type_code          => l_component_type_code
125273   , p_component_appl_id            => l_component_appl_id
125274   , p_amb_context_code             => l_amb_context_code
125275   , p_side                         => 'NA'
125276   );
125277 
125278 
125279    --
125280    --
125281    END IF;
125282    --
125283    -- Bug 4922099
125284    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125285           (NVL(l_enc_upg_option, 'N') = 'O')
125286         ) AND
125287         (l_bflow_method_code = 'PRIOR_ENTRY')
125288       )
125289    THEN
125290       IF
125291       --
125292       1 = 2
125293       --
125294       THEN
125295       xla_accounting_err_pkg.build_message
125296                                     (p_appli_s_name            => 'XLA'
125297                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125298                                     ,p_token_1                 => 'LINE_NUMBER'
125299                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
125300                                     ,p_token_2                 => 'LINE_TYPE_NAME'
125301                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
125302                                                                              l_component_type
125303                                                                             ,l_component_code
125304                                                                             ,l_component_type_code
125305                                                                             ,l_component_appl_id
125306                                                                             ,l_amb_context_code
125307                                                                             ,l_entity_code
125308                                                                             ,l_event_class_code
125309                                                                            )
125310                                     ,p_token_3                 => 'OWNER'
125311                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
125312                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
125313                                                                           ,p_lookup_code    => l_component_type_code
125314                                                                          )
125315                                     ,p_token_4                 => 'PRODUCT_NAME'
125316                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125317                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
125318                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
125319                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
125320                                     ,p_ae_header_id            =>  NULL
125321                                        );
125322 
125323         IF (C_LEVEL_ERROR>= g_log_level) THEN
125324                  trace
125325                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125326                       ,p_level    => C_LEVEL_ERROR
125327                       ,p_module   => l_log_module);
125328         END IF;
125329       END IF;
125330    END IF;
125331    --
125332    --
125333    ------------------------------------------------------------------------------------------------
125334    -- 4219869 Business Flow
125335    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125336    -- Prior Entry.  Currently, the following code is always generated.
125337    ------------------------------------------------------------------------------------------------
125338    XLA_AE_LINES_PKG.ValidateCurrentLine;
125339 
125340    ------------------------------------------------------------------------------------
125341    -- 4219869 Business Flow
125342    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125343    ------------------------------------------------------------------------------------
125344    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125345 
125346    ----------------------------------------------------------------------------------
125347    -- 4219869 Business Flow
125348    -- Update journal entry status -- Need to generate this within IF <condition>
125349    ----------------------------------------------------------------------------------
125350    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125351          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125352          ,p_balance_type_code => l_balance_type_code
125353          );
125354 
125355    -------------------------------------------------------------------------------------------
125356    -- 4262811 - Generate the Accrual Reversal lines
125357    -------------------------------------------------------------------------------------------
125358    BEGIN
125359       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125360                               (g_array_event(p_event_id).array_value_num('header_index'));
125361       IF l_acc_rev_flag IS NULL THEN
125362          l_acc_rev_flag := 'N';
125363       END IF;
125364    EXCEPTION
125365       WHEN OTHERS THEN
125366          l_acc_rev_flag := 'N';
125367    END;
125368    --
125369    IF (l_acc_rev_flag = 'Y') THEN
125370 
125371        -- 4645092  ------------------------------------------------------------------------------
125372        -- To allow MPA report to determine if it should generate report process
125373        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125374        ------------------------------------------------------------------------------------------
125375 
125376        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125377        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125378    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
125379    -- call ADRs
125380    -- Bug 4922099
125381    --
125382    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125383         (NVL(l_actual_upg_option, 'N') = 'O') OR
125384         (NVL(l_enc_upg_option, 'N') = 'O')
125385       )
125386    THEN
125387    NULL;
125388    --
125389    --
125390    
125391   l_ccid := AcctDerRule_28(
125392            p_application_id           => p_application_id
125393          , p_ae_header_id             => l_ae_header_id 
125394 , p_source_15 => p_source_15
125395 , p_source_41 => p_source_41
125396 , p_source_42 => p_source_42
125397 , p_source_43 => p_source_43
125398 , p_source_44 => p_source_44
125399 , p_source_45 => p_source_45
125400          , x_transaction_coa_id       => l_adr_transaction_coa_id
125401          , x_accounting_coa_id        => l_adr_accounting_coa_id
125402          , x_value_type_code          => l_adr_value_type_code
125403          , p_side                     => 'NA'
125404    );
125405 
125406    xla_ae_lines_pkg.set_ccid(
125407     p_code_combination_id          => l_ccid
125408   , p_value_type_code              => l_adr_value_type_code
125409   , p_transaction_coa_id           => l_adr_transaction_coa_id
125410   , p_accounting_coa_id            => l_adr_accounting_coa_id
125411   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
125412   , p_adr_type_code                => 'S'
125413   , p_component_type               => l_component_type
125414   , p_component_code               => l_component_code
125415   , p_component_type_code          => l_component_type_code
125416   , p_component_appl_id            => l_component_appl_id
125417   , p_amb_context_code             => l_amb_context_code
125418   , p_side                         => 'NA'
125419   );
125420 
125421 
125422    --
125423    --
125424    END IF;
125425 
125426        --
125427        -- Update the line information that should be overwritten
125428        --
125429        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
125430                                          p_header_num   => 1);
125431        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
125432 
125433        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125434 
125435        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
125436           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125437        END IF;
125438 
125439       --
125440       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125441       --
125442       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125443           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
125444       ELSE
125445           ---------------------------------------------------------------------------------------------------
125446           -- 4262811a Switch Sign
125447           ---------------------------------------------------------------------------------------------------
125448           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
125449           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125450                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125451           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125452                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125453           -- 5132302
125454           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125455                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125456 
125457       END IF;
125458 
125459       -- 4955764
125460       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125461       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125462 
125463 
125464       XLA_AE_LINES_PKG.ValidateCurrentLine;
125465       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125466 
125467       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125468                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125469                ,p_balance_type_code => l_balance_type_code);
125470 
125471    END IF;
125472 
125473    -----------------------------------------------------------------------------------------
125474    -- 4262811 Multiperiod Accounting
125475    -----------------------------------------------------------------------------------------
125476      -- No MPA option is assigned.
125477 
125478 
125479 END IF;
125480 END IF;
125481 --
125482 
125483 --
125484 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125485    trace
125486       (p_msg      => 'END of AcctLineType_241'
125487       ,p_level    => C_LEVEL_PROCEDURE
125488       ,p_module   => l_log_module);
125489 END IF;
125490 --
125491 EXCEPTION
125492   WHEN xla_exceptions_pkg.application_exception THEN
125493       RAISE;
125494   WHEN OTHERS THEN
125495        xla_exceptions_pkg.raise_message
125496            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_241');
125497 END AcctLineType_241;
125498 --
125499 
125500 ---------------------------------------
125501 --
125502 -- PRIVATE FUNCTION
125503 --         AcctLineType_242
125504 --
125505 ---------------------------------------
125506 PROCEDURE AcctLineType_242 (
125507   p_application_id        IN NUMBER
125508  ,p_event_id              IN NUMBER
125509  ,p_calculate_acctd_flag  IN VARCHAR2
125510  ,p_calculate_g_l_flag    IN VARCHAR2
125511  ,p_actual_flag           IN OUT VARCHAR2
125512  ,p_balance_type_code     OUT VARCHAR2
125513  ,p_gain_or_loss_ref      OUT VARCHAR2
125514  
125515 --TRANSACTION_ID
125516  , p_source_1            IN NUMBER
125517 --Item Concatenated Segments
125518  , p_source_2            IN VARCHAR2
125519 --Transaction Quantity
125520  , p_source_3            IN NUMBER
125521 --Transaction Unit of Measure Code
125522  , p_source_4            IN VARCHAR2
125523 --Inventory Transaction Type Description
125524  , p_source_5            IN VARCHAR2
125525 --Cost Element Name
125526  , p_source_15            IN NUMBER
125527 --Product Line Accounting Category Material Account
125528  , p_source_41            IN NUMBER
125529 --Product Line Accounting Category Material Overhead Account
125530  , p_source_42            IN NUMBER
125531 --Product Line Accounting Category Resource Account
125532  , p_source_43            IN NUMBER
125533 --Product Line Accounting Category Outside Processing Account
125534  , p_source_44            IN NUMBER
125535 --Product Line Accounting Category Overhead Account
125536  , p_source_45            IN NUMBER
125537 --DISTRIBUTION_IDENTIFIER
125538  , p_source_84            IN NUMBER
125539 --Distribution Type
125540  , p_source_85            IN VARCHAR2
125541  , p_source_85_meaning    IN VARCHAR2
125542 --Entered Currency Code
125543  , p_source_88            IN VARCHAR2
125544 --Entered Amount
125545  , p_source_91            IN NUMBER
125546 --Currency Conversion Date
125547  , p_source_92            IN DATE
125548 --Currency Conversion Rate
125549  , p_source_93            IN NUMBER
125550 --Currency Conversion Type
125551  , p_source_94            IN VARCHAR2
125552 --Accounted Amount
125553  , p_source_95            IN NUMBER
125554 --Accounting Line Type
125555  , p_source_97            IN NUMBER
125556 --Organization Code
125557  , p_source_108            IN VARCHAR2
125558 )
125559 IS
125560 
125561 l_component_type              VARCHAR2(80);
125562 l_component_code              VARCHAR2(30);
125563 l_component_type_code         VARCHAR2(1);
125564 l_component_appl_id           INTEGER;
125565 l_amb_context_code            VARCHAR2(30);
125566 l_entity_code                 VARCHAR2(30);
125567 l_event_class_code            VARCHAR2(30);
125568 l_ae_header_id                NUMBER;
125569 l_event_type_code             VARCHAR2(30);
125570 l_line_definition_code        VARCHAR2(30);
125571 l_line_definition_owner_code  VARCHAR2(1);
125572 --
125573 -- adr variables
125574 l_segment                     VARCHAR2(30);
125575 l_ccid                        NUMBER;
125576 l_adr_transaction_coa_id      NUMBER;
125577 l_adr_accounting_coa_id       NUMBER;
125578 l_adr_flexfield_segment_code  VARCHAR2(30);
125579 l_adr_flex_value_set_id       NUMBER;
125580 l_adr_value_type_code         VARCHAR2(30);
125581 l_adr_value_combination_id    NUMBER;
125582 l_adr_value_segment_code      VARCHAR2(30);
125583 
125584 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
125585 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
125586 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
125587 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
125588 
125589 -- 4262811 Variables ------------------------------------------------------------------------------------------
125590 l_entered_amt_idx             NUMBER;
125591 l_accted_amt_idx              NUMBER;
125592 l_acc_rev_flag                VARCHAR2(1);
125593 l_accrual_line_num            NUMBER;
125594 l_tmp_amt                     NUMBER;
125595 l_acc_rev_natural_side_code   VARCHAR2(1);
125596 
125597 l_num_entries                 NUMBER;
125598 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
125599 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
125600 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
125601 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
125602 l_recog_line_1                NUMBER;
125603 l_recog_line_2                NUMBER;
125604 
125605 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
125606 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
125607 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
125608 
125609 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125610 
125611 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
125612 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
125613 
125614 ---------------------------------------------------------------------------------------------------------------
125615 
125616 
125617 --
125618 -- bulk performance
125619 --
125620 l_balance_type_code           VARCHAR2(1);
125621 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
125622 l_log_module                  VARCHAR2(240);
125623 
125624 --
125625 -- Upgrade strategy
125626 --
125627 l_actual_upg_option           VARCHAR2(1);
125628 l_enc_upg_option           VARCHAR2(1);
125629 
125630 --
125631 BEGIN
125632 --
125633 IF g_log_enabled THEN
125634       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_242';
125635 END IF;
125636 --
125637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125638 
125639       trace
125640          (p_msg      => 'BEGIN of AcctLineType_242'
125641          ,p_level    => C_LEVEL_PROCEDURE
125642          ,p_module   => l_log_module);
125643 
125644 END IF;
125645 --
125646 l_component_type             := 'AMB_JLT';
125647 l_component_code             := 'INVENTORY_VALUATION';
125648 l_component_type_code        := 'S';
125649 l_component_appl_id          :=  707;
125650 l_amb_context_code           := 'DEFAULT';
125651 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
125652 l_event_class_code           := 'SALES_ORDER';
125653 l_event_type_code            := 'SO_ISSUE';
125654 l_line_definition_owner_code := 'S';
125655 l_line_definition_code       := 'PI_SO_ISSUE';
125656 --
125657 l_balance_type_code          := 'A';
125658 l_segment                     := NULL;
125659 l_ccid                        := NULL;
125660 l_adr_transaction_coa_id      := NULL;
125661 l_adr_accounting_coa_id       := NULL;
125662 l_adr_flexfield_segment_code  := NULL;
125663 l_adr_flex_value_set_id       := NULL;
125664 l_adr_value_type_code         := NULL;
125665 l_adr_value_combination_id    := NULL;
125666 l_adr_value_segment_code      := NULL;
125667 
125668 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
125669 l_bflow_class_code           := '';    -- 4219869 Business Flow
125670 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
125671 l_budgetary_control_flag     := 'N';
125672 
125673 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
125674 l_bflow_applied_to_amt       := NULL; -- 5132302
125675 l_entered_amt_idx            := NULL;          -- 4262811
125676 l_accted_amt_idx             := NULL;          -- 4262811
125677 l_acc_rev_flag               := NULL;          -- 4262811
125678 l_accrual_line_num           := NULL;          -- 4262811
125679 l_tmp_amt                    := NULL;          -- 4262811
125680 --
125681  
125682 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125683     l_balance_type_code <> 'B' THEN
125684 IF NVL(p_source_97,9E125) =  1
125685  THEN 
125686 
125687    --
125688    XLA_AE_LINES_PKG.SetNewLine;
125689 
125690    p_balance_type_code          := l_balance_type_code;
125691    -- set the flag so later we will know whether the gain loss line needs to be created
125692    
125693    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125694      p_actual_flag :='A';
125695    END IF;
125696 
125697    --
125698    -- bulk performance
125699    --
125700    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125701                                       p_header_num   => 0); -- 4262811
125702    --
125703    -- set accounting line options
125704    --
125705    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125706            p_natural_side_code          => 'D'
125707          , p_gain_or_loss_flag          => 'N'
125708          , p_gl_transfer_mode_code      => 'S'
125709          , p_acct_entry_type_code       => 'A'
125710          , p_switch_side_flag           => 'Y'
125711          , p_merge_duplicate_code       => 'N'
125712          );
125713    --
125714    l_acc_rev_natural_side_code := 'C';  -- 4262811
125715    -- 
125716    --
125717    -- set accounting line type info
125718    --
125719    xla_ae_lines_pkg.SetAcctLineType
125720       (p_component_type             => l_component_type
125721       ,p_event_type_code            => l_event_type_code
125722       ,p_line_definition_owner_code => l_line_definition_owner_code
125723       ,p_line_definition_code       => l_line_definition_code
125724       ,p_accounting_line_code       => l_component_code
125725       ,p_accounting_line_type_code  => l_component_type_code
125726       ,p_accounting_line_appl_id    => l_component_appl_id
125727       ,p_amb_context_code           => l_amb_context_code
125728       ,p_entity_code                => l_entity_code
125729       ,p_event_class_code           => l_event_class_code);
125730    --
125731    -- set accounting class
125732    --
125733    xla_ae_lines_pkg.SetAcctClass(
125734            p_accounting_class_code  => 'INVENTORY_VALUATION'
125735          , p_ae_header_id           => l_ae_header_id
125736          );
125737 
125738    --
125739    -- set rounding class
125740    --
125741    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125742                       'INVENTORY_VALUATION';
125743 
125744    --
125745    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125746    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125747    --
125748    -- bulk performance
125749    --
125750    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125751 
125752    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125753       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125754 
125755    -- 4955764
125756    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125757       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125758 
125759    -- 4458381 Public Sector Enh
125760    
125761    --
125762    -- set accounting attributes for the line type
125763    --
125764    l_entered_amt_idx := 3;
125765    l_accted_amt_idx  := 8;
125766    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
125767    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125768    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
125769    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125770    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
125771    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125772    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
125773    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125774    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
125775    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125776    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
125777    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125778    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
125779    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125780    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
125781    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125782    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
125783 
125784    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125785    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125786 
125787    ---------------------------------------------------------------------------------------------------------------
125788    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125789    ---------------------------------------------------------------------------------------------------------------
125790    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125791 
125792    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125793    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125794 
125795    IF xla_accounting_cache_pkg.GetValueChar
125796          (p_source_code         => 'LEDGER_CATEGORY_CODE'
125797          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125798    AND l_bflow_method_code = 'PRIOR_ENTRY'
125799 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125800    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125801          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125802        )
125803    THEN
125804          xla_ae_lines_pkg.BflowUpgEntry
125805            (p_business_method_code    => l_bflow_method_code
125806            ,p_business_class_code     => l_bflow_class_code
125807            ,p_balance_type            => l_balance_type_code);
125808    ELSE
125809       NULL;
125810 -- No business flow processing for business flow method of NONE.
125811    END IF;
125812 
125813    --
125814    -- call analytical criteria
125815    --
125816    
125817 
125818 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
125819 xla_ae_lines_pkg.SetAnalyticalCriteria(
125820    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
125821  , p_analytical_criterion_owner   => 'S'
125822  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
125823  , p_amb_context_code             => 'DEFAULT'
125824  , p_balancing_flag               => 'Y'
125825  
125826  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
125827  , p_analytical_detail_num_1     =>  NULL
125828  , p_analytical_detail_date_1    =>  NULL
125829 
125830  , p_ae_header_id                 => l_ae_header_id
125831 )
125832 ;
125833 --
125834 
125835    --
125836    -- call description
125837    --
125838    
125839 xla_ae_lines_pkg.SetLineDescription(
125840    p_ae_header_id => l_ae_header_id
125841   ,p_description  => Description_1 (
125842      p_application_id         => p_application_id
125843    , p_ae_header_id           => l_ae_header_id 
125844 , p_source_1 => p_source_1
125845 , p_source_2 => p_source_2
125846 , p_source_3 => p_source_3
125847 , p_source_4 => p_source_4
125848 , p_source_5 => p_source_5
125849    )
125850 );
125851 
125852 
125853    --
125854    -- call ADRs
125855    -- Bug 4922099
125856    --
125857    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125858         (NVL(l_actual_upg_option, 'N') = 'O') OR
125859         (NVL(l_enc_upg_option, 'N') = 'O')
125860       )
125861    THEN
125862    NULL;
125863    --
125864    --
125865    
125866   l_ccid := AcctDerRule_28(
125867            p_application_id           => p_application_id
125868          , p_ae_header_id             => l_ae_header_id 
125869 , p_source_15 => p_source_15
125870 , p_source_41 => p_source_41
125871 , p_source_42 => p_source_42
125872 , p_source_43 => p_source_43
125873 , p_source_44 => p_source_44
125874 , p_source_45 => p_source_45
125875          , x_transaction_coa_id       => l_adr_transaction_coa_id
125876          , x_accounting_coa_id        => l_adr_accounting_coa_id
125877          , x_value_type_code          => l_adr_value_type_code
125878          , p_side                     => 'NA'
125879    );
125880 
125881    xla_ae_lines_pkg.set_ccid(
125882     p_code_combination_id          => l_ccid
125883   , p_value_type_code              => l_adr_value_type_code
125884   , p_transaction_coa_id           => l_adr_transaction_coa_id
125885   , p_accounting_coa_id            => l_adr_accounting_coa_id
125886   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
125887   , p_adr_type_code                => 'S'
125888   , p_component_type               => l_component_type
125889   , p_component_code               => l_component_code
125890   , p_component_type_code          => l_component_type_code
125891   , p_component_appl_id            => l_component_appl_id
125892   , p_amb_context_code             => l_amb_context_code
125893   , p_side                         => 'NA'
125894   );
125895 
125896 
125897    --
125898    --
125899    END IF;
125900    --
125901    -- Bug 4922099
125902    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125903           (NVL(l_enc_upg_option, 'N') = 'O')
125904         ) AND
125905         (l_bflow_method_code = 'PRIOR_ENTRY')
125906       )
125907    THEN
125908       IF
125909       --
125910       1 = 2
125911       --
125912       THEN
125913       xla_accounting_err_pkg.build_message
125914                                     (p_appli_s_name            => 'XLA'
125915                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125916                                     ,p_token_1                 => 'LINE_NUMBER'
125917                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
125918                                     ,p_token_2                 => 'LINE_TYPE_NAME'
125919                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
125920                                                                              l_component_type
125921                                                                             ,l_component_code
125922                                                                             ,l_component_type_code
125923                                                                             ,l_component_appl_id
125924                                                                             ,l_amb_context_code
125925                                                                             ,l_entity_code
125926                                                                             ,l_event_class_code
125927                                                                            )
125928                                     ,p_token_3                 => 'OWNER'
125929                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
125930                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
125931                                                                           ,p_lookup_code    => l_component_type_code
125932                                                                          )
125933                                     ,p_token_4                 => 'PRODUCT_NAME'
125934                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125935                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
125936                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
125937                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
125938                                     ,p_ae_header_id            =>  NULL
125939                                        );
125940 
125941         IF (C_LEVEL_ERROR>= g_log_level) THEN
125942                  trace
125943                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125944                       ,p_level    => C_LEVEL_ERROR
125945                       ,p_module   => l_log_module);
125946         END IF;
125947       END IF;
125948    END IF;
125949    --
125950    --
125951    ------------------------------------------------------------------------------------------------
125952    -- 4219869 Business Flow
125953    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125954    -- Prior Entry.  Currently, the following code is always generated.
125955    ------------------------------------------------------------------------------------------------
125956    XLA_AE_LINES_PKG.ValidateCurrentLine;
125957 
125958    ------------------------------------------------------------------------------------
125959    -- 4219869 Business Flow
125960    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125961    ------------------------------------------------------------------------------------
125962    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125963 
125964    ----------------------------------------------------------------------------------
125965    -- 4219869 Business Flow
125966    -- Update journal entry status -- Need to generate this within IF <condition>
125967    ----------------------------------------------------------------------------------
125968    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125969          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125970          ,p_balance_type_code => l_balance_type_code
125971          );
125972 
125973    -------------------------------------------------------------------------------------------
125974    -- 4262811 - Generate the Accrual Reversal lines
125975    -------------------------------------------------------------------------------------------
125976    BEGIN
125977       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125978                               (g_array_event(p_event_id).array_value_num('header_index'));
125979       IF l_acc_rev_flag IS NULL THEN
125980          l_acc_rev_flag := 'N';
125981       END IF;
125982    EXCEPTION
125983       WHEN OTHERS THEN
125984          l_acc_rev_flag := 'N';
125985    END;
125986    --
125987    IF (l_acc_rev_flag = 'Y') THEN
125988 
125989        -- 4645092  ------------------------------------------------------------------------------
125990        -- To allow MPA report to determine if it should generate report process
125991        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125992        ------------------------------------------------------------------------------------------
125993 
125994        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125995        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125996    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
125997    -- call ADRs
125998    -- Bug 4922099
125999    --
126000    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126001         (NVL(l_actual_upg_option, 'N') = 'O') OR
126002         (NVL(l_enc_upg_option, 'N') = 'O')
126003       )
126004    THEN
126005    NULL;
126006    --
126007    --
126008    
126009   l_ccid := AcctDerRule_28(
126010            p_application_id           => p_application_id
126011          , p_ae_header_id             => l_ae_header_id 
126012 , p_source_15 => p_source_15
126013 , p_source_41 => p_source_41
126014 , p_source_42 => p_source_42
126015 , p_source_43 => p_source_43
126016 , p_source_44 => p_source_44
126017 , p_source_45 => p_source_45
126018          , x_transaction_coa_id       => l_adr_transaction_coa_id
126019          , x_accounting_coa_id        => l_adr_accounting_coa_id
126020          , x_value_type_code          => l_adr_value_type_code
126021          , p_side                     => 'NA'
126022    );
126023 
126024    xla_ae_lines_pkg.set_ccid(
126025     p_code_combination_id          => l_ccid
126026   , p_value_type_code              => l_adr_value_type_code
126027   , p_transaction_coa_id           => l_adr_transaction_coa_id
126028   , p_accounting_coa_id            => l_adr_accounting_coa_id
126029   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
126030   , p_adr_type_code                => 'S'
126031   , p_component_type               => l_component_type
126032   , p_component_code               => l_component_code
126033   , p_component_type_code          => l_component_type_code
126034   , p_component_appl_id            => l_component_appl_id
126035   , p_amb_context_code             => l_amb_context_code
126036   , p_side                         => 'NA'
126037   );
126038 
126039 
126040    --
126041    --
126042    END IF;
126043 
126044        --
126045        -- Update the line information that should be overwritten
126046        --
126047        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126048                                          p_header_num   => 1);
126049        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
126050 
126051        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126052 
126053        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
126054           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126055        END IF;
126056 
126057       --
126058       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126059       --
126060       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126061           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
126062       ELSE
126063           ---------------------------------------------------------------------------------------------------
126064           -- 4262811a Switch Sign
126065           ---------------------------------------------------------------------------------------------------
126066           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
126067           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126068                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126069           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126070                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126071           -- 5132302
126072           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126073                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126074 
126075       END IF;
126076 
126077       -- 4955764
126078       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126079       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126080 
126081 
126082       XLA_AE_LINES_PKG.ValidateCurrentLine;
126083       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126084 
126085       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126086                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126087                ,p_balance_type_code => l_balance_type_code);
126088 
126089    END IF;
126090 
126091    -----------------------------------------------------------------------------------------
126092    -- 4262811 Multiperiod Accounting
126093    -----------------------------------------------------------------------------------------
126094      -- No MPA option is assigned.
126095 
126096 
126097 END IF;
126098 END IF;
126099 --
126100 
126101 --
126102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126103    trace
126104       (p_msg      => 'END of AcctLineType_242'
126105       ,p_level    => C_LEVEL_PROCEDURE
126106       ,p_module   => l_log_module);
126107 END IF;
126108 --
126109 EXCEPTION
126110   WHEN xla_exceptions_pkg.application_exception THEN
126111       RAISE;
126112   WHEN OTHERS THEN
126113        xla_exceptions_pkg.raise_message
126114            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_242');
126115 END AcctLineType_242;
126116 --
126117 
126118 ---------------------------------------
126119 --
126120 -- PRIVATE FUNCTION
126121 --         AcctLineType_243
126122 --
126123 ---------------------------------------
126124 PROCEDURE AcctLineType_243 (
126125   p_application_id        IN NUMBER
126126  ,p_event_id              IN NUMBER
126127  ,p_calculate_acctd_flag  IN VARCHAR2
126128  ,p_calculate_g_l_flag    IN VARCHAR2
126129  ,p_actual_flag           IN OUT VARCHAR2
126130  ,p_balance_type_code     OUT VARCHAR2
126131  ,p_gain_or_loss_ref      OUT VARCHAR2
126132  
126133 --TRANSACTION_ID
126134  , p_source_1            IN NUMBER
126135 --Item Concatenated Segments
126136  , p_source_2            IN VARCHAR2
126137 --Transaction Quantity
126138  , p_source_3            IN NUMBER
126139 --Transaction Unit of Measure Code
126140  , p_source_4            IN VARCHAR2
126141 --Inventory Transaction Type Description
126142  , p_source_5            IN VARCHAR2
126143 --Cost Element Name
126144  , p_source_15            IN NUMBER
126145 --Product Line Accounting Category Material Account
126146  , p_source_41            IN NUMBER
126147 --Product Line Accounting Category Material Overhead Account
126148  , p_source_42            IN NUMBER
126149 --Product Line Accounting Category Resource Account
126150  , p_source_43            IN NUMBER
126151 --Product Line Accounting Category Outside Processing Account
126152  , p_source_44            IN NUMBER
126153 --Product Line Accounting Category Overhead Account
126154  , p_source_45            IN NUMBER
126155 --DISTRIBUTION_IDENTIFIER
126156  , p_source_84            IN NUMBER
126157 --Distribution Type
126158  , p_source_85            IN VARCHAR2
126159  , p_source_85_meaning    IN VARCHAR2
126160 --Entered Currency Code
126161  , p_source_88            IN VARCHAR2
126162 --Entered Amount
126163  , p_source_91            IN NUMBER
126164 --Currency Conversion Date
126165  , p_source_92            IN DATE
126166 --Currency Conversion Rate
126167  , p_source_93            IN NUMBER
126168 --Currency Conversion Type
126169  , p_source_94            IN VARCHAR2
126170 --Accounted Amount
126171  , p_source_95            IN NUMBER
126172 --Accounting Line Type
126173  , p_source_97            IN NUMBER
126174 --Organization Code
126175  , p_source_108            IN VARCHAR2
126176 )
126177 IS
126178 
126179 l_component_type              VARCHAR2(80);
126180 l_component_code              VARCHAR2(30);
126181 l_component_type_code         VARCHAR2(1);
126182 l_component_appl_id           INTEGER;
126183 l_amb_context_code            VARCHAR2(30);
126184 l_entity_code                 VARCHAR2(30);
126185 l_event_class_code            VARCHAR2(30);
126186 l_ae_header_id                NUMBER;
126187 l_event_type_code             VARCHAR2(30);
126188 l_line_definition_code        VARCHAR2(30);
126189 l_line_definition_owner_code  VARCHAR2(1);
126190 --
126191 -- adr variables
126192 l_segment                     VARCHAR2(30);
126193 l_ccid                        NUMBER;
126194 l_adr_transaction_coa_id      NUMBER;
126195 l_adr_accounting_coa_id       NUMBER;
126196 l_adr_flexfield_segment_code  VARCHAR2(30);
126197 l_adr_flex_value_set_id       NUMBER;
126198 l_adr_value_type_code         VARCHAR2(30);
126199 l_adr_value_combination_id    NUMBER;
126200 l_adr_value_segment_code      VARCHAR2(30);
126201 
126202 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
126203 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
126204 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
126205 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
126206 
126207 -- 4262811 Variables ------------------------------------------------------------------------------------------
126208 l_entered_amt_idx             NUMBER;
126209 l_accted_amt_idx              NUMBER;
126210 l_acc_rev_flag                VARCHAR2(1);
126211 l_accrual_line_num            NUMBER;
126212 l_tmp_amt                     NUMBER;
126213 l_acc_rev_natural_side_code   VARCHAR2(1);
126214 
126215 l_num_entries                 NUMBER;
126216 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
126217 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
126218 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
126219 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
126220 l_recog_line_1                NUMBER;
126221 l_recog_line_2                NUMBER;
126222 
126223 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
126224 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
126225 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
126226 
126227 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126228 
126229 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
126230 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
126231 
126232 ---------------------------------------------------------------------------------------------------------------
126233 
126234 
126235 --
126236 -- bulk performance
126237 --
126238 l_balance_type_code           VARCHAR2(1);
126239 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
126240 l_log_module                  VARCHAR2(240);
126241 
126242 --
126243 -- Upgrade strategy
126244 --
126245 l_actual_upg_option           VARCHAR2(1);
126246 l_enc_upg_option           VARCHAR2(1);
126247 
126248 --
126249 BEGIN
126250 --
126251 IF g_log_enabled THEN
126252       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_243';
126253 END IF;
126254 --
126255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126256 
126257       trace
126258          (p_msg      => 'BEGIN of AcctLineType_243'
126259          ,p_level    => C_LEVEL_PROCEDURE
126260          ,p_module   => l_log_module);
126261 
126262 END IF;
126263 --
126264 l_component_type             := 'AMB_JLT';
126265 l_component_code             := 'INVENTORY_VALUATION';
126266 l_component_type_code        := 'S';
126267 l_component_appl_id          :=  707;
126268 l_amb_context_code           := 'DEFAULT';
126269 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
126270 l_event_class_code           := 'USER_DEFINE';
126271 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
126272 l_line_definition_owner_code := 'S';
126273 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
126274 --
126275 l_balance_type_code          := 'A';
126276 l_segment                     := NULL;
126277 l_ccid                        := NULL;
126278 l_adr_transaction_coa_id      := NULL;
126279 l_adr_accounting_coa_id       := NULL;
126280 l_adr_flexfield_segment_code  := NULL;
126281 l_adr_flex_value_set_id       := NULL;
126282 l_adr_value_type_code         := NULL;
126283 l_adr_value_combination_id    := NULL;
126284 l_adr_value_segment_code      := NULL;
126285 
126286 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
126287 l_bflow_class_code           := '';    -- 4219869 Business Flow
126288 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
126289 l_budgetary_control_flag     := 'N';
126290 
126291 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
126292 l_bflow_applied_to_amt       := NULL; -- 5132302
126293 l_entered_amt_idx            := NULL;          -- 4262811
126294 l_accted_amt_idx             := NULL;          -- 4262811
126295 l_acc_rev_flag               := NULL;          -- 4262811
126296 l_accrual_line_num           := NULL;          -- 4262811
126297 l_tmp_amt                    := NULL;          -- 4262811
126298 --
126299  
126300 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126301     l_balance_type_code <> 'B' THEN
126302 IF NVL(p_source_97,9E125) =  1
126303  THEN 
126304 
126305    --
126306    XLA_AE_LINES_PKG.SetNewLine;
126307 
126308    p_balance_type_code          := l_balance_type_code;
126309    -- set the flag so later we will know whether the gain loss line needs to be created
126310    
126311    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126312      p_actual_flag :='A';
126313    END IF;
126314 
126315    --
126316    -- bulk performance
126317    --
126318    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126319                                       p_header_num   => 0); -- 4262811
126320    --
126321    -- set accounting line options
126322    --
126323    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126324            p_natural_side_code          => 'D'
126325          , p_gain_or_loss_flag          => 'N'
126326          , p_gl_transfer_mode_code      => 'S'
126327          , p_acct_entry_type_code       => 'A'
126328          , p_switch_side_flag           => 'Y'
126329          , p_merge_duplicate_code       => 'N'
126330          );
126331    --
126332    l_acc_rev_natural_side_code := 'C';  -- 4262811
126333    -- 
126334    --
126335    -- set accounting line type info
126336    --
126337    xla_ae_lines_pkg.SetAcctLineType
126338       (p_component_type             => l_component_type
126339       ,p_event_type_code            => l_event_type_code
126340       ,p_line_definition_owner_code => l_line_definition_owner_code
126341       ,p_line_definition_code       => l_line_definition_code
126342       ,p_accounting_line_code       => l_component_code
126343       ,p_accounting_line_type_code  => l_component_type_code
126344       ,p_accounting_line_appl_id    => l_component_appl_id
126345       ,p_amb_context_code           => l_amb_context_code
126346       ,p_entity_code                => l_entity_code
126347       ,p_event_class_code           => l_event_class_code);
126348    --
126349    -- set accounting class
126350    --
126351    xla_ae_lines_pkg.SetAcctClass(
126352            p_accounting_class_code  => 'INVENTORY_VALUATION'
126353          , p_ae_header_id           => l_ae_header_id
126354          );
126355 
126356    --
126357    -- set rounding class
126358    --
126359    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126360                       'INVENTORY_VALUATION';
126361 
126362    --
126363    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126364    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126365    --
126366    -- bulk performance
126367    --
126368    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126369 
126370    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126371       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126372 
126373    -- 4955764
126374    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126375       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126376 
126377    -- 4458381 Public Sector Enh
126378    
126379    --
126380    -- set accounting attributes for the line type
126381    --
126382    l_entered_amt_idx := 3;
126383    l_accted_amt_idx  := 8;
126384    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
126385    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
126386    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
126387    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
126388    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
126389    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
126390    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
126391    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
126392    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
126393    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
126394    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
126395    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
126396    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
126397    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
126398    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
126399    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
126400    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
126401 
126402    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
126403    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
126404 
126405    ---------------------------------------------------------------------------------------------------------------
126406    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
126407    ---------------------------------------------------------------------------------------------------------------
126408    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
126409 
126410    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126411    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126412 
126413    IF xla_accounting_cache_pkg.GetValueChar
126414          (p_source_code         => 'LEDGER_CATEGORY_CODE'
126415          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
126416    AND l_bflow_method_code = 'PRIOR_ENTRY'
126417 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
126418    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
126419          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
126420        )
126421    THEN
126422          xla_ae_lines_pkg.BflowUpgEntry
126423            (p_business_method_code    => l_bflow_method_code
126424            ,p_business_class_code     => l_bflow_class_code
126425            ,p_balance_type            => l_balance_type_code);
126426    ELSE
126427       NULL;
126428 -- No business flow processing for business flow method of NONE.
126429    END IF;
126430 
126431    --
126432    -- call analytical criteria
126433    --
126434    
126435 
126436 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
126437 xla_ae_lines_pkg.SetAnalyticalCriteria(
126438    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
126439  , p_analytical_criterion_owner   => 'S'
126440  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
126441  , p_amb_context_code             => 'DEFAULT'
126442  , p_balancing_flag               => 'Y'
126443  
126444  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
126445  , p_analytical_detail_num_1     =>  NULL
126446  , p_analytical_detail_date_1    =>  NULL
126447 
126448  , p_ae_header_id                 => l_ae_header_id
126449 )
126450 ;
126451 --
126452 
126453    --
126454    -- call description
126455    --
126456    
126457 xla_ae_lines_pkg.SetLineDescription(
126458    p_ae_header_id => l_ae_header_id
126459   ,p_description  => Description_1 (
126460      p_application_id         => p_application_id
126461    , p_ae_header_id           => l_ae_header_id 
126462 , p_source_1 => p_source_1
126463 , p_source_2 => p_source_2
126464 , p_source_3 => p_source_3
126465 , p_source_4 => p_source_4
126466 , p_source_5 => p_source_5
126467    )
126468 );
126469 
126470 
126471    --
126472    -- call ADRs
126473    -- Bug 4922099
126474    --
126475    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126476         (NVL(l_actual_upg_option, 'N') = 'O') OR
126477         (NVL(l_enc_upg_option, 'N') = 'O')
126478       )
126479    THEN
126480    NULL;
126481    --
126482    --
126483    
126484   l_ccid := AcctDerRule_28(
126485            p_application_id           => p_application_id
126486          , p_ae_header_id             => l_ae_header_id 
126487 , p_source_15 => p_source_15
126488 , p_source_41 => p_source_41
126489 , p_source_42 => p_source_42
126490 , p_source_43 => p_source_43
126491 , p_source_44 => p_source_44
126492 , p_source_45 => p_source_45
126493          , x_transaction_coa_id       => l_adr_transaction_coa_id
126494          , x_accounting_coa_id        => l_adr_accounting_coa_id
126495          , x_value_type_code          => l_adr_value_type_code
126496          , p_side                     => 'NA'
126497    );
126498 
126499    xla_ae_lines_pkg.set_ccid(
126500     p_code_combination_id          => l_ccid
126501   , p_value_type_code              => l_adr_value_type_code
126502   , p_transaction_coa_id           => l_adr_transaction_coa_id
126503   , p_accounting_coa_id            => l_adr_accounting_coa_id
126504   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
126505   , p_adr_type_code                => 'S'
126506   , p_component_type               => l_component_type
126507   , p_component_code               => l_component_code
126508   , p_component_type_code          => l_component_type_code
126509   , p_component_appl_id            => l_component_appl_id
126510   , p_amb_context_code             => l_amb_context_code
126511   , p_side                         => 'NA'
126512   );
126513 
126514 
126515    --
126516    --
126517    END IF;
126518    --
126519    -- Bug 4922099
126520    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
126521           (NVL(l_enc_upg_option, 'N') = 'O')
126522         ) AND
126523         (l_bflow_method_code = 'PRIOR_ENTRY')
126524       )
126525    THEN
126526       IF
126527       --
126528       1 = 2
126529       --
126530       THEN
126531       xla_accounting_err_pkg.build_message
126532                                     (p_appli_s_name            => 'XLA'
126533                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126534                                     ,p_token_1                 => 'LINE_NUMBER'
126535                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
126536                                     ,p_token_2                 => 'LINE_TYPE_NAME'
126537                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
126538                                                                              l_component_type
126539                                                                             ,l_component_code
126540                                                                             ,l_component_type_code
126541                                                                             ,l_component_appl_id
126542                                                                             ,l_amb_context_code
126543                                                                             ,l_entity_code
126544                                                                             ,l_event_class_code
126545                                                                            )
126546                                     ,p_token_3                 => 'OWNER'
126547                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
126548                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
126549                                                                           ,p_lookup_code    => l_component_type_code
126550                                                                          )
126551                                     ,p_token_4                 => 'PRODUCT_NAME'
126552                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
126553                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126554                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126555                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126556                                     ,p_ae_header_id            =>  NULL
126557                                        );
126558 
126559         IF (C_LEVEL_ERROR>= g_log_level) THEN
126560                  trace
126561                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126562                       ,p_level    => C_LEVEL_ERROR
126563                       ,p_module   => l_log_module);
126564         END IF;
126565       END IF;
126566    END IF;
126567    --
126568    --
126569    ------------------------------------------------------------------------------------------------
126570    -- 4219869 Business Flow
126571    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126572    -- Prior Entry.  Currently, the following code is always generated.
126573    ------------------------------------------------------------------------------------------------
126574    XLA_AE_LINES_PKG.ValidateCurrentLine;
126575 
126576    ------------------------------------------------------------------------------------
126577    -- 4219869 Business Flow
126578    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126579    ------------------------------------------------------------------------------------
126580    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126581 
126582    ----------------------------------------------------------------------------------
126583    -- 4219869 Business Flow
126584    -- Update journal entry status -- Need to generate this within IF <condition>
126585    ----------------------------------------------------------------------------------
126586    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126587          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126588          ,p_balance_type_code => l_balance_type_code
126589          );
126590 
126591    -------------------------------------------------------------------------------------------
126592    -- 4262811 - Generate the Accrual Reversal lines
126593    -------------------------------------------------------------------------------------------
126594    BEGIN
126595       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126596                               (g_array_event(p_event_id).array_value_num('header_index'));
126597       IF l_acc_rev_flag IS NULL THEN
126598          l_acc_rev_flag := 'N';
126599       END IF;
126600    EXCEPTION
126601       WHEN OTHERS THEN
126602          l_acc_rev_flag := 'N';
126603    END;
126604    --
126605    IF (l_acc_rev_flag = 'Y') THEN
126606 
126607        -- 4645092  ------------------------------------------------------------------------------
126608        -- To allow MPA report to determine if it should generate report process
126609        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126610        ------------------------------------------------------------------------------------------
126611 
126612        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126613        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126614    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
126615    -- call ADRs
126616    -- Bug 4922099
126617    --
126618    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126619         (NVL(l_actual_upg_option, 'N') = 'O') OR
126620         (NVL(l_enc_upg_option, 'N') = 'O')
126621       )
126622    THEN
126623    NULL;
126624    --
126625    --
126626    
126627   l_ccid := AcctDerRule_28(
126628            p_application_id           => p_application_id
126629          , p_ae_header_id             => l_ae_header_id 
126630 , p_source_15 => p_source_15
126631 , p_source_41 => p_source_41
126632 , p_source_42 => p_source_42
126633 , p_source_43 => p_source_43
126634 , p_source_44 => p_source_44
126635 , p_source_45 => p_source_45
126636          , x_transaction_coa_id       => l_adr_transaction_coa_id
126637          , x_accounting_coa_id        => l_adr_accounting_coa_id
126638          , x_value_type_code          => l_adr_value_type_code
126639          , p_side                     => 'NA'
126640    );
126641 
126642    xla_ae_lines_pkg.set_ccid(
126643     p_code_combination_id          => l_ccid
126644   , p_value_type_code              => l_adr_value_type_code
126645   , p_transaction_coa_id           => l_adr_transaction_coa_id
126646   , p_accounting_coa_id            => l_adr_accounting_coa_id
126647   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
126648   , p_adr_type_code                => 'S'
126649   , p_component_type               => l_component_type
126650   , p_component_code               => l_component_code
126651   , p_component_type_code          => l_component_type_code
126652   , p_component_appl_id            => l_component_appl_id
126653   , p_amb_context_code             => l_amb_context_code
126654   , p_side                         => 'NA'
126655   );
126656 
126657 
126658    --
126659    --
126660    END IF;
126661 
126662        --
126663        -- Update the line information that should be overwritten
126664        --
126665        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126666                                          p_header_num   => 1);
126667        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
126668 
126669        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126670 
126671        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
126672           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126673        END IF;
126674 
126675       --
126676       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126677       --
126678       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126679           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
126680       ELSE
126681           ---------------------------------------------------------------------------------------------------
126682           -- 4262811a Switch Sign
126683           ---------------------------------------------------------------------------------------------------
126684           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
126685           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126686                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126687           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126688                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126689           -- 5132302
126690           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126691                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126692 
126693       END IF;
126694 
126695       -- 4955764
126696       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126697       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126698 
126699 
126700       XLA_AE_LINES_PKG.ValidateCurrentLine;
126701       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126702 
126703       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126704                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126705                ,p_balance_type_code => l_balance_type_code);
126706 
126707    END IF;
126708 
126709    -----------------------------------------------------------------------------------------
126710    -- 4262811 Multiperiod Accounting
126711    -----------------------------------------------------------------------------------------
126712      -- No MPA option is assigned.
126713 
126714 
126715 END IF;
126716 END IF;
126717 --
126718 
126719 --
126720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126721    trace
126722       (p_msg      => 'END of AcctLineType_243'
126723       ,p_level    => C_LEVEL_PROCEDURE
126724       ,p_module   => l_log_module);
126725 END IF;
126726 --
126727 EXCEPTION
126728   WHEN xla_exceptions_pkg.application_exception THEN
126729       RAISE;
126730   WHEN OTHERS THEN
126731        xla_exceptions_pkg.raise_message
126732            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_243');
126733 END AcctLineType_243;
126734 --
126735 
126736 ---------------------------------------
126737 --
126738 -- PRIVATE FUNCTION
126739 --         AcctLineType_244
126740 --
126741 ---------------------------------------
126742 PROCEDURE AcctLineType_244 (
126743   p_application_id        IN NUMBER
126744  ,p_event_id              IN NUMBER
126745  ,p_calculate_acctd_flag  IN VARCHAR2
126746  ,p_calculate_g_l_flag    IN VARCHAR2
126747  ,p_actual_flag           IN OUT VARCHAR2
126748  ,p_balance_type_code     OUT VARCHAR2
126749  ,p_gain_or_loss_ref      OUT VARCHAR2
126750  
126751 --TRANSACTION_ID
126752  , p_source_1            IN NUMBER
126753 --Item Concatenated Segments
126754  , p_source_2            IN VARCHAR2
126755 --Transaction Quantity
126756  , p_source_3            IN NUMBER
126757 --Transaction Unit of Measure Code
126758  , p_source_4            IN VARCHAR2
126759 --Inventory Transaction Type Description
126760  , p_source_5            IN VARCHAR2
126761 --Cost Management Default Account
126762  , p_source_11            IN NUMBER
126763 --DISTRIBUTION_IDENTIFIER
126764  , p_source_84            IN NUMBER
126765 --Distribution Type
126766  , p_source_85            IN VARCHAR2
126767  , p_source_85_meaning    IN VARCHAR2
126768 --Entered Currency Code
126769  , p_source_88            IN VARCHAR2
126770 --Entered Amount
126771  , p_source_91            IN NUMBER
126772 --Currency Conversion Date
126773  , p_source_92            IN DATE
126774 --Currency Conversion Rate
126775  , p_source_93            IN NUMBER
126776 --Currency Conversion Type
126777  , p_source_94            IN VARCHAR2
126778 --Accounted Amount
126779  , p_source_95            IN NUMBER
126780 --Accounting Line Type
126781  , p_source_97            IN NUMBER
126782 --Organization Code
126783  , p_source_108            IN VARCHAR2
126784 )
126785 IS
126786 
126787 l_component_type              VARCHAR2(80);
126788 l_component_code              VARCHAR2(30);
126789 l_component_type_code         VARCHAR2(1);
126790 l_component_appl_id           INTEGER;
126791 l_amb_context_code            VARCHAR2(30);
126792 l_entity_code                 VARCHAR2(30);
126793 l_event_class_code            VARCHAR2(30);
126794 l_ae_header_id                NUMBER;
126795 l_event_type_code             VARCHAR2(30);
126796 l_line_definition_code        VARCHAR2(30);
126797 l_line_definition_owner_code  VARCHAR2(1);
126798 --
126799 -- adr variables
126800 l_segment                     VARCHAR2(30);
126801 l_ccid                        NUMBER;
126802 l_adr_transaction_coa_id      NUMBER;
126803 l_adr_accounting_coa_id       NUMBER;
126804 l_adr_flexfield_segment_code  VARCHAR2(30);
126805 l_adr_flex_value_set_id       NUMBER;
126806 l_adr_value_type_code         VARCHAR2(30);
126807 l_adr_value_combination_id    NUMBER;
126808 l_adr_value_segment_code      VARCHAR2(30);
126809 
126810 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
126811 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
126812 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
126813 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
126814 
126815 -- 4262811 Variables ------------------------------------------------------------------------------------------
126816 l_entered_amt_idx             NUMBER;
126817 l_accted_amt_idx              NUMBER;
126818 l_acc_rev_flag                VARCHAR2(1);
126819 l_accrual_line_num            NUMBER;
126820 l_tmp_amt                     NUMBER;
126821 l_acc_rev_natural_side_code   VARCHAR2(1);
126822 
126823 l_num_entries                 NUMBER;
126824 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
126825 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
126826 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
126827 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
126828 l_recog_line_1                NUMBER;
126829 l_recog_line_2                NUMBER;
126830 
126831 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
126832 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
126833 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
126834 
126835 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126836 
126837 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
126838 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
126839 
126840 ---------------------------------------------------------------------------------------------------------------
126841 
126842 
126843 --
126844 -- bulk performance
126845 --
126846 l_balance_type_code           VARCHAR2(1);
126847 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
126848 l_log_module                  VARCHAR2(240);
126849 
126850 --
126851 -- Upgrade strategy
126852 --
126853 l_actual_upg_option           VARCHAR2(1);
126854 l_enc_upg_option           VARCHAR2(1);
126855 
126856 --
126857 BEGIN
126858 --
126859 IF g_log_enabled THEN
126860       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_244';
126861 END IF;
126862 --
126863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126864 
126865       trace
126866          (p_msg      => 'BEGIN of AcctLineType_244'
126867          ,p_level    => C_LEVEL_PROCEDURE
126868          ,p_module   => l_log_module);
126869 
126870 END IF;
126871 --
126872 l_component_type             := 'AMB_JLT';
126873 l_component_code             := 'INVENTORY_VALUATION';
126874 l_component_type_code        := 'S';
126875 l_component_appl_id          :=  707;
126876 l_amb_context_code           := 'DEFAULT';
126877 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
126878 l_event_class_code           := 'INT_ORDER_TO_EXP';
126879 l_event_type_code            := 'EXP_REQ_RCPT_NO_TP';
126880 l_line_definition_owner_code := 'S';
126881 l_line_definition_code       := 'PI_EXP_REQ_RCPT_NO_TP';
126882 --
126883 l_balance_type_code          := 'A';
126884 l_segment                     := NULL;
126885 l_ccid                        := NULL;
126886 l_adr_transaction_coa_id      := NULL;
126887 l_adr_accounting_coa_id       := NULL;
126888 l_adr_flexfield_segment_code  := NULL;
126889 l_adr_flex_value_set_id       := NULL;
126890 l_adr_value_type_code         := NULL;
126891 l_adr_value_combination_id    := NULL;
126892 l_adr_value_segment_code      := NULL;
126893 
126894 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
126895 l_bflow_class_code           := '';    -- 4219869 Business Flow
126896 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
126897 l_budgetary_control_flag     := 'N';
126898 
126899 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
126900 l_bflow_applied_to_amt       := NULL; -- 5132302
126901 l_entered_amt_idx            := NULL;          -- 4262811
126902 l_accted_amt_idx             := NULL;          -- 4262811
126903 l_acc_rev_flag               := NULL;          -- 4262811
126904 l_accrual_line_num           := NULL;          -- 4262811
126905 l_tmp_amt                    := NULL;          -- 4262811
126906 --
126907  
126908 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126909     l_balance_type_code <> 'B' THEN
126910 IF NVL(p_source_97,9E125) =  1
126911  THEN 
126912 
126913    --
126914    XLA_AE_LINES_PKG.SetNewLine;
126915 
126916    p_balance_type_code          := l_balance_type_code;
126917    -- set the flag so later we will know whether the gain loss line needs to be created
126918    
126919    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126920      p_actual_flag :='A';
126921    END IF;
126922 
126923    --
126924    -- bulk performance
126925    --
126926    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126927                                       p_header_num   => 0); -- 4262811
126928    --
126929    -- set accounting line options
126930    --
126931    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126932            p_natural_side_code          => 'D'
126933          , p_gain_or_loss_flag          => 'N'
126934          , p_gl_transfer_mode_code      => 'S'
126935          , p_acct_entry_type_code       => 'A'
126936          , p_switch_side_flag           => 'Y'
126937          , p_merge_duplicate_code       => 'N'
126938          );
126939    --
126940    l_acc_rev_natural_side_code := 'C';  -- 4262811
126941    -- 
126942    --
126943    -- set accounting line type info
126944    --
126945    xla_ae_lines_pkg.SetAcctLineType
126946       (p_component_type             => l_component_type
126947       ,p_event_type_code            => l_event_type_code
126948       ,p_line_definition_owner_code => l_line_definition_owner_code
126949       ,p_line_definition_code       => l_line_definition_code
126950       ,p_accounting_line_code       => l_component_code
126951       ,p_accounting_line_type_code  => l_component_type_code
126952       ,p_accounting_line_appl_id    => l_component_appl_id
126953       ,p_amb_context_code           => l_amb_context_code
126954       ,p_entity_code                => l_entity_code
126955       ,p_event_class_code           => l_event_class_code);
126956    --
126957    -- set accounting class
126958    --
126959    xla_ae_lines_pkg.SetAcctClass(
126960            p_accounting_class_code  => 'INVENTORY_VALUATION'
126961          , p_ae_header_id           => l_ae_header_id
126962          );
126963 
126964    --
126965    -- set rounding class
126966    --
126967    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126968                       'INVENTORY_VALUATION';
126969 
126970    --
126971    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126972    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126973    --
126974    -- bulk performance
126975    --
126976    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126977 
126978    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126979       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126980 
126981    -- 4955764
126982    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126983       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126984 
126985    -- 4458381 Public Sector Enh
126986    
126987    --
126988    -- set accounting attributes for the line type
126989    --
126990    l_entered_amt_idx := 3;
126991    l_accted_amt_idx  := 8;
126992    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
126993    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
126994    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
126995    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
126996    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
126997    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
126998    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
126999    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127000    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
127001    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127002    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
127003    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127004    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
127005    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
127006    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
127007    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
127008    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
127009 
127010    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127011    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127012 
127013    ---------------------------------------------------------------------------------------------------------------
127014    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127015    ---------------------------------------------------------------------------------------------------------------
127016    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127017 
127018    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127019    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127020 
127021    IF xla_accounting_cache_pkg.GetValueChar
127022          (p_source_code         => 'LEDGER_CATEGORY_CODE'
127023          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127024    AND l_bflow_method_code = 'PRIOR_ENTRY'
127025 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127026    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127027          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127028        )
127029    THEN
127030          xla_ae_lines_pkg.BflowUpgEntry
127031            (p_business_method_code    => l_bflow_method_code
127032            ,p_business_class_code     => l_bflow_class_code
127033            ,p_balance_type            => l_balance_type_code);
127034    ELSE
127035       NULL;
127036 -- No business flow processing for business flow method of NONE.
127037    END IF;
127038 
127039    --
127040    -- call analytical criteria
127041    --
127042    
127043 
127044 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
127045 xla_ae_lines_pkg.SetAnalyticalCriteria(
127046    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
127047  , p_analytical_criterion_owner   => 'S'
127048  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
127049  , p_amb_context_code             => 'DEFAULT'
127050  , p_balancing_flag               => 'Y'
127051  
127052  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
127053  , p_analytical_detail_num_1     =>  NULL
127054  , p_analytical_detail_date_1    =>  NULL
127055 
127056  , p_ae_header_id                 => l_ae_header_id
127057 )
127058 ;
127059 --
127060 
127061    --
127062    -- call description
127063    --
127064    
127065 xla_ae_lines_pkg.SetLineDescription(
127066    p_ae_header_id => l_ae_header_id
127067   ,p_description  => Description_1 (
127068      p_application_id         => p_application_id
127069    , p_ae_header_id           => l_ae_header_id 
127070 , p_source_1 => p_source_1
127071 , p_source_2 => p_source_2
127072 , p_source_3 => p_source_3
127073 , p_source_4 => p_source_4
127074 , p_source_5 => p_source_5
127075    )
127076 );
127077 
127078 
127079    --
127080    -- call ADRs
127081    -- Bug 4922099
127082    --
127083    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127084         (NVL(l_actual_upg_option, 'N') = 'O') OR
127085         (NVL(l_enc_upg_option, 'N') = 'O')
127086       )
127087    THEN
127088    NULL;
127089    --
127090    --
127091    
127092   l_ccid := AcctDerRule_6(
127093            p_application_id           => p_application_id
127094          , p_ae_header_id             => l_ae_header_id 
127095 , p_source_11 => p_source_11
127096          , x_transaction_coa_id       => l_adr_transaction_coa_id
127097          , x_accounting_coa_id        => l_adr_accounting_coa_id
127098          , x_value_type_code          => l_adr_value_type_code
127099          , p_side                     => 'NA'
127100    );
127101 
127102    xla_ae_lines_pkg.set_ccid(
127103     p_code_combination_id          => l_ccid
127104   , p_value_type_code              => l_adr_value_type_code
127105   , p_transaction_coa_id           => l_adr_transaction_coa_id
127106   , p_accounting_coa_id            => l_adr_accounting_coa_id
127107   , p_adr_code                     => 'CST_DEFAULT'
127108   , p_adr_type_code                => 'S'
127109   , p_component_type               => l_component_type
127110   , p_component_code               => l_component_code
127111   , p_component_type_code          => l_component_type_code
127112   , p_component_appl_id            => l_component_appl_id
127113   , p_amb_context_code             => l_amb_context_code
127114   , p_side                         => 'NA'
127115   );
127116 
127117 
127118    --
127119    --
127120    END IF;
127121    --
127122    -- Bug 4922099
127123    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127124           (NVL(l_enc_upg_option, 'N') = 'O')
127125         ) AND
127126         (l_bflow_method_code = 'PRIOR_ENTRY')
127127       )
127128    THEN
127129       IF
127130       --
127131       1 = 2
127132       --
127133       THEN
127134       xla_accounting_err_pkg.build_message
127135                                     (p_appli_s_name            => 'XLA'
127136                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127137                                     ,p_token_1                 => 'LINE_NUMBER'
127138                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
127139                                     ,p_token_2                 => 'LINE_TYPE_NAME'
127140                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
127141                                                                              l_component_type
127142                                                                             ,l_component_code
127143                                                                             ,l_component_type_code
127144                                                                             ,l_component_appl_id
127145                                                                             ,l_amb_context_code
127146                                                                             ,l_entity_code
127147                                                                             ,l_event_class_code
127148                                                                            )
127149                                     ,p_token_3                 => 'OWNER'
127150                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
127151                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
127152                                                                           ,p_lookup_code    => l_component_type_code
127153                                                                          )
127154                                     ,p_token_4                 => 'PRODUCT_NAME'
127155                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127156                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127157                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127158                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127159                                     ,p_ae_header_id            =>  NULL
127160                                        );
127161 
127162         IF (C_LEVEL_ERROR>= g_log_level) THEN
127163                  trace
127164                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127165                       ,p_level    => C_LEVEL_ERROR
127166                       ,p_module   => l_log_module);
127167         END IF;
127168       END IF;
127169    END IF;
127170    --
127171    --
127172    ------------------------------------------------------------------------------------------------
127173    -- 4219869 Business Flow
127174    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127175    -- Prior Entry.  Currently, the following code is always generated.
127176    ------------------------------------------------------------------------------------------------
127177    XLA_AE_LINES_PKG.ValidateCurrentLine;
127178 
127179    ------------------------------------------------------------------------------------
127180    -- 4219869 Business Flow
127181    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127182    ------------------------------------------------------------------------------------
127183    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127184 
127185    ----------------------------------------------------------------------------------
127186    -- 4219869 Business Flow
127187    -- Update journal entry status -- Need to generate this within IF <condition>
127188    ----------------------------------------------------------------------------------
127189    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127190          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127191          ,p_balance_type_code => l_balance_type_code
127192          );
127193 
127194    -------------------------------------------------------------------------------------------
127195    -- 4262811 - Generate the Accrual Reversal lines
127196    -------------------------------------------------------------------------------------------
127197    BEGIN
127198       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127199                               (g_array_event(p_event_id).array_value_num('header_index'));
127200       IF l_acc_rev_flag IS NULL THEN
127201          l_acc_rev_flag := 'N';
127202       END IF;
127203    EXCEPTION
127204       WHEN OTHERS THEN
127205          l_acc_rev_flag := 'N';
127206    END;
127207    --
127208    IF (l_acc_rev_flag = 'Y') THEN
127209 
127210        -- 4645092  ------------------------------------------------------------------------------
127211        -- To allow MPA report to determine if it should generate report process
127212        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127213        ------------------------------------------------------------------------------------------
127214 
127215        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127216        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127217    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
127218    -- call ADRs
127219    -- Bug 4922099
127220    --
127221    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127222         (NVL(l_actual_upg_option, 'N') = 'O') OR
127223         (NVL(l_enc_upg_option, 'N') = 'O')
127224       )
127225    THEN
127226    NULL;
127227    --
127228    --
127229    
127230   l_ccid := AcctDerRule_6(
127231            p_application_id           => p_application_id
127232          , p_ae_header_id             => l_ae_header_id 
127233 , p_source_11 => p_source_11
127234          , x_transaction_coa_id       => l_adr_transaction_coa_id
127235          , x_accounting_coa_id        => l_adr_accounting_coa_id
127236          , x_value_type_code          => l_adr_value_type_code
127237          , p_side                     => 'NA'
127238    );
127239 
127240    xla_ae_lines_pkg.set_ccid(
127241     p_code_combination_id          => l_ccid
127242   , p_value_type_code              => l_adr_value_type_code
127243   , p_transaction_coa_id           => l_adr_transaction_coa_id
127244   , p_accounting_coa_id            => l_adr_accounting_coa_id
127245   , p_adr_code                     => 'CST_DEFAULT'
127246   , p_adr_type_code                => 'S'
127247   , p_component_type               => l_component_type
127248   , p_component_code               => l_component_code
127249   , p_component_type_code          => l_component_type_code
127250   , p_component_appl_id            => l_component_appl_id
127251   , p_amb_context_code             => l_amb_context_code
127252   , p_side                         => 'NA'
127253   );
127254 
127255 
127256    --
127257    --
127258    END IF;
127259 
127260        --
127261        -- Update the line information that should be overwritten
127262        --
127263        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127264                                          p_header_num   => 1);
127265        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
127266 
127267        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127268 
127269        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
127270           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127271        END IF;
127272 
127273       --
127274       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127275       --
127276       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127277           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
127278       ELSE
127279           ---------------------------------------------------------------------------------------------------
127280           -- 4262811a Switch Sign
127281           ---------------------------------------------------------------------------------------------------
127282           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
127283           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127284                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127285           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127286                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127287           -- 5132302
127288           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127289                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127290 
127291       END IF;
127292 
127293       -- 4955764
127294       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127295       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127296 
127297 
127298       XLA_AE_LINES_PKG.ValidateCurrentLine;
127299       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127300 
127301       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127302                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127303                ,p_balance_type_code => l_balance_type_code);
127304 
127305    END IF;
127306 
127307    -----------------------------------------------------------------------------------------
127308    -- 4262811 Multiperiod Accounting
127309    -----------------------------------------------------------------------------------------
127310      -- No MPA option is assigned.
127311 
127312 
127313 END IF;
127314 END IF;
127315 --
127316 
127317 --
127318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127319    trace
127320       (p_msg      => 'END of AcctLineType_244'
127321       ,p_level    => C_LEVEL_PROCEDURE
127322       ,p_module   => l_log_module);
127323 END IF;
127324 --
127325 EXCEPTION
127326   WHEN xla_exceptions_pkg.application_exception THEN
127327       RAISE;
127328   WHEN OTHERS THEN
127329        xla_exceptions_pkg.raise_message
127330            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_244');
127331 END AcctLineType_244;
127332 --
127333 
127334 ---------------------------------------
127335 --
127336 -- PRIVATE FUNCTION
127337 --         AcctLineType_245
127338 --
127339 ---------------------------------------
127340 PROCEDURE AcctLineType_245 (
127341   p_application_id        IN NUMBER
127342  ,p_event_id              IN NUMBER
127343  ,p_calculate_acctd_flag  IN VARCHAR2
127344  ,p_calculate_g_l_flag    IN VARCHAR2
127345  ,p_actual_flag           IN OUT VARCHAR2
127346  ,p_balance_type_code     OUT VARCHAR2
127347  ,p_gain_or_loss_ref      OUT VARCHAR2
127348  
127349 --TRANSACTION_ID
127350  , p_source_1            IN NUMBER
127351 --Item Concatenated Segments
127352  , p_source_2            IN VARCHAR2
127353 --Transaction Quantity
127354  , p_source_3            IN NUMBER
127355 --Transaction Unit of Measure Code
127356  , p_source_4            IN VARCHAR2
127357 --Inventory Transaction Type Description
127358  , p_source_5            IN VARCHAR2
127359 --Cost Element Name
127360  , p_source_15            IN NUMBER
127361 --Product Line Accounting Category Material Account
127362  , p_source_41            IN NUMBER
127363 --Product Line Accounting Category Material Overhead Account
127364  , p_source_42            IN NUMBER
127365 --Product Line Accounting Category Resource Account
127366  , p_source_43            IN NUMBER
127367 --Product Line Accounting Category Outside Processing Account
127368  , p_source_44            IN NUMBER
127369 --Product Line Accounting Category Overhead Account
127370  , p_source_45            IN NUMBER
127371 --DISTRIBUTION_IDENTIFIER
127372  , p_source_84            IN NUMBER
127373 --Distribution Type
127374  , p_source_85            IN VARCHAR2
127375  , p_source_85_meaning    IN VARCHAR2
127376 --Entered Currency Code
127377  , p_source_88            IN VARCHAR2
127378 --Entered Amount
127379  , p_source_91            IN NUMBER
127380 --Currency Conversion Date
127381  , p_source_92            IN DATE
127382 --Currency Conversion Rate
127383  , p_source_93            IN NUMBER
127384 --Currency Conversion Type
127385  , p_source_94            IN VARCHAR2
127386 --Accounted Amount
127387  , p_source_95            IN NUMBER
127388 --Accounting Line Type
127389  , p_source_97            IN NUMBER
127390 --Organization Code
127391  , p_source_108            IN VARCHAR2
127392 )
127393 IS
127394 
127395 l_component_type              VARCHAR2(80);
127396 l_component_code              VARCHAR2(30);
127397 l_component_type_code         VARCHAR2(1);
127398 l_component_appl_id           INTEGER;
127399 l_amb_context_code            VARCHAR2(30);
127400 l_entity_code                 VARCHAR2(30);
127401 l_event_class_code            VARCHAR2(30);
127402 l_ae_header_id                NUMBER;
127403 l_event_type_code             VARCHAR2(30);
127404 l_line_definition_code        VARCHAR2(30);
127405 l_line_definition_owner_code  VARCHAR2(1);
127406 --
127407 -- adr variables
127408 l_segment                     VARCHAR2(30);
127409 l_ccid                        NUMBER;
127410 l_adr_transaction_coa_id      NUMBER;
127411 l_adr_accounting_coa_id       NUMBER;
127412 l_adr_flexfield_segment_code  VARCHAR2(30);
127413 l_adr_flex_value_set_id       NUMBER;
127414 l_adr_value_type_code         VARCHAR2(30);
127415 l_adr_value_combination_id    NUMBER;
127416 l_adr_value_segment_code      VARCHAR2(30);
127417 
127418 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
127419 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
127420 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
127421 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
127422 
127423 -- 4262811 Variables ------------------------------------------------------------------------------------------
127424 l_entered_amt_idx             NUMBER;
127425 l_accted_amt_idx              NUMBER;
127426 l_acc_rev_flag                VARCHAR2(1);
127427 l_accrual_line_num            NUMBER;
127428 l_tmp_amt                     NUMBER;
127429 l_acc_rev_natural_side_code   VARCHAR2(1);
127430 
127431 l_num_entries                 NUMBER;
127432 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
127433 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
127434 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
127435 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
127436 l_recog_line_1                NUMBER;
127437 l_recog_line_2                NUMBER;
127438 
127439 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
127440 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
127441 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
127442 
127443 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
127444 
127445 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
127446 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
127447 
127448 ---------------------------------------------------------------------------------------------------------------
127449 
127450 
127451 --
127452 -- bulk performance
127453 --
127454 l_balance_type_code           VARCHAR2(1);
127455 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
127456 l_log_module                  VARCHAR2(240);
127457 
127458 --
127459 -- Upgrade strategy
127460 --
127461 l_actual_upg_option           VARCHAR2(1);
127462 l_enc_upg_option           VARCHAR2(1);
127463 
127464 --
127465 BEGIN
127466 --
127467 IF g_log_enabled THEN
127468       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_245';
127469 END IF;
127470 --
127471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127472 
127473       trace
127474          (p_msg      => 'BEGIN of AcctLineType_245'
127475          ,p_level    => C_LEVEL_PROCEDURE
127476          ,p_module   => l_log_module);
127477 
127478 END IF;
127479 --
127480 l_component_type             := 'AMB_JLT';
127481 l_component_code             := 'INVENTORY_VALUATION';
127482 l_component_type_code        := 'S';
127483 l_component_appl_id          :=  707;
127484 l_amb_context_code           := 'DEFAULT';
127485 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
127486 l_event_class_code           := 'MTL_COST_UPD';
127487 l_event_type_code            := 'IPV_TXFR';
127488 l_line_definition_owner_code := 'S';
127489 l_line_definition_code       := 'PI_IPV_TXFR';
127490 --
127491 l_balance_type_code          := 'A';
127492 l_segment                     := NULL;
127493 l_ccid                        := NULL;
127494 l_adr_transaction_coa_id      := NULL;
127495 l_adr_accounting_coa_id       := NULL;
127496 l_adr_flexfield_segment_code  := NULL;
127497 l_adr_flex_value_set_id       := NULL;
127498 l_adr_value_type_code         := NULL;
127499 l_adr_value_combination_id    := NULL;
127500 l_adr_value_segment_code      := NULL;
127501 
127502 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
127503 l_bflow_class_code           := '';    -- 4219869 Business Flow
127504 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
127505 l_budgetary_control_flag     := 'N';
127506 
127507 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
127508 l_bflow_applied_to_amt       := NULL; -- 5132302
127509 l_entered_amt_idx            := NULL;          -- 4262811
127510 l_accted_amt_idx             := NULL;          -- 4262811
127511 l_acc_rev_flag               := NULL;          -- 4262811
127512 l_accrual_line_num           := NULL;          -- 4262811
127513 l_tmp_amt                    := NULL;          -- 4262811
127514 --
127515  
127516 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
127517     l_balance_type_code <> 'B' THEN
127518 IF NVL(p_source_97,9E125) =  1
127519  THEN 
127520 
127521    --
127522    XLA_AE_LINES_PKG.SetNewLine;
127523 
127524    p_balance_type_code          := l_balance_type_code;
127525    -- set the flag so later we will know whether the gain loss line needs to be created
127526    
127527    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
127528      p_actual_flag :='A';
127529    END IF;
127530 
127531    --
127532    -- bulk performance
127533    --
127534    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
127535                                       p_header_num   => 0); -- 4262811
127536    --
127537    -- set accounting line options
127538    --
127539    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
127540            p_natural_side_code          => 'D'
127541          , p_gain_or_loss_flag          => 'N'
127542          , p_gl_transfer_mode_code      => 'S'
127543          , p_acct_entry_type_code       => 'A'
127544          , p_switch_side_flag           => 'Y'
127545          , p_merge_duplicate_code       => 'N'
127546          );
127547    --
127548    l_acc_rev_natural_side_code := 'C';  -- 4262811
127549    -- 
127550    --
127551    -- set accounting line type info
127552    --
127553    xla_ae_lines_pkg.SetAcctLineType
127554       (p_component_type             => l_component_type
127555       ,p_event_type_code            => l_event_type_code
127556       ,p_line_definition_owner_code => l_line_definition_owner_code
127557       ,p_line_definition_code       => l_line_definition_code
127558       ,p_accounting_line_code       => l_component_code
127559       ,p_accounting_line_type_code  => l_component_type_code
127560       ,p_accounting_line_appl_id    => l_component_appl_id
127561       ,p_amb_context_code           => l_amb_context_code
127562       ,p_entity_code                => l_entity_code
127563       ,p_event_class_code           => l_event_class_code);
127564    --
127565    -- set accounting class
127566    --
127567    xla_ae_lines_pkg.SetAcctClass(
127568            p_accounting_class_code  => 'INVENTORY_VALUATION'
127569          , p_ae_header_id           => l_ae_header_id
127570          );
127571 
127572    --
127573    -- set rounding class
127574    --
127575    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
127576                       'INVENTORY_VALUATION';
127577 
127578    --
127579    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
127580    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
127581    --
127582    -- bulk performance
127583    --
127584    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
127585 
127586    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
127587       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
127588 
127589    -- 4955764
127590    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127591       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
127592 
127593    -- 4458381 Public Sector Enh
127594    
127595    --
127596    -- set accounting attributes for the line type
127597    --
127598    l_entered_amt_idx := 3;
127599    l_accted_amt_idx  := 8;
127600    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
127601    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
127602    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
127603    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
127604    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
127605    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
127606    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
127607    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127608    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
127609    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127610    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
127611    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127612    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
127613    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
127614    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
127615    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
127616    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
127617 
127618    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127619    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127620 
127621    ---------------------------------------------------------------------------------------------------------------
127622    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127623    ---------------------------------------------------------------------------------------------------------------
127624    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127625 
127626    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127627    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127628 
127629    IF xla_accounting_cache_pkg.GetValueChar
127630          (p_source_code         => 'LEDGER_CATEGORY_CODE'
127631          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127632    AND l_bflow_method_code = 'PRIOR_ENTRY'
127633 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127634    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127635          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127636        )
127637    THEN
127638          xla_ae_lines_pkg.BflowUpgEntry
127639            (p_business_method_code    => l_bflow_method_code
127640            ,p_business_class_code     => l_bflow_class_code
127641            ,p_balance_type            => l_balance_type_code);
127642    ELSE
127643       NULL;
127644 -- No business flow processing for business flow method of NONE.
127645    END IF;
127646 
127647    --
127648    -- call analytical criteria
127649    --
127650    
127651 
127652 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
127653 xla_ae_lines_pkg.SetAnalyticalCriteria(
127654    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
127655  , p_analytical_criterion_owner   => 'S'
127656  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
127657  , p_amb_context_code             => 'DEFAULT'
127658  , p_balancing_flag               => 'Y'
127659  
127660  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
127661  , p_analytical_detail_num_1     =>  NULL
127662  , p_analytical_detail_date_1    =>  NULL
127663 
127664  , p_ae_header_id                 => l_ae_header_id
127665 )
127666 ;
127667 --
127668 
127669    --
127670    -- call description
127671    --
127672    
127673 xla_ae_lines_pkg.SetLineDescription(
127674    p_ae_header_id => l_ae_header_id
127675   ,p_description  => Description_1 (
127676      p_application_id         => p_application_id
127677    , p_ae_header_id           => l_ae_header_id 
127678 , p_source_1 => p_source_1
127679 , p_source_2 => p_source_2
127680 , p_source_3 => p_source_3
127681 , p_source_4 => p_source_4
127682 , p_source_5 => p_source_5
127683    )
127684 );
127685 
127686 
127687    --
127688    -- call ADRs
127689    -- Bug 4922099
127690    --
127691    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127692         (NVL(l_actual_upg_option, 'N') = 'O') OR
127693         (NVL(l_enc_upg_option, 'N') = 'O')
127694       )
127695    THEN
127696    NULL;
127697    --
127698    --
127699    
127700   l_ccid := AcctDerRule_28(
127701            p_application_id           => p_application_id
127702          , p_ae_header_id             => l_ae_header_id 
127703 , p_source_15 => p_source_15
127704 , p_source_41 => p_source_41
127705 , p_source_42 => p_source_42
127706 , p_source_43 => p_source_43
127707 , p_source_44 => p_source_44
127708 , p_source_45 => p_source_45
127709          , x_transaction_coa_id       => l_adr_transaction_coa_id
127710          , x_accounting_coa_id        => l_adr_accounting_coa_id
127711          , x_value_type_code          => l_adr_value_type_code
127712          , p_side                     => 'NA'
127713    );
127714 
127715    xla_ae_lines_pkg.set_ccid(
127716     p_code_combination_id          => l_ccid
127717   , p_value_type_code              => l_adr_value_type_code
127718   , p_transaction_coa_id           => l_adr_transaction_coa_id
127719   , p_accounting_coa_id            => l_adr_accounting_coa_id
127720   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
127721   , p_adr_type_code                => 'S'
127722   , p_component_type               => l_component_type
127723   , p_component_code               => l_component_code
127724   , p_component_type_code          => l_component_type_code
127725   , p_component_appl_id            => l_component_appl_id
127726   , p_amb_context_code             => l_amb_context_code
127727   , p_side                         => 'NA'
127728   );
127729 
127730 
127731    --
127732    --
127733    END IF;
127734    --
127735    -- Bug 4922099
127736    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127737           (NVL(l_enc_upg_option, 'N') = 'O')
127738         ) AND
127739         (l_bflow_method_code = 'PRIOR_ENTRY')
127740       )
127741    THEN
127742       IF
127743       --
127744       1 = 2
127745       --
127746       THEN
127747       xla_accounting_err_pkg.build_message
127748                                     (p_appli_s_name            => 'XLA'
127749                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127750                                     ,p_token_1                 => 'LINE_NUMBER'
127751                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
127752                                     ,p_token_2                 => 'LINE_TYPE_NAME'
127753                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
127754                                                                              l_component_type
127755                                                                             ,l_component_code
127756                                                                             ,l_component_type_code
127757                                                                             ,l_component_appl_id
127758                                                                             ,l_amb_context_code
127759                                                                             ,l_entity_code
127760                                                                             ,l_event_class_code
127761                                                                            )
127762                                     ,p_token_3                 => 'OWNER'
127763                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
127764                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
127765                                                                           ,p_lookup_code    => l_component_type_code
127766                                                                          )
127767                                     ,p_token_4                 => 'PRODUCT_NAME'
127768                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127769                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127770                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127771                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127772                                     ,p_ae_header_id            =>  NULL
127773                                        );
127774 
127775         IF (C_LEVEL_ERROR>= g_log_level) THEN
127776                  trace
127777                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127778                       ,p_level    => C_LEVEL_ERROR
127779                       ,p_module   => l_log_module);
127780         END IF;
127781       END IF;
127782    END IF;
127783    --
127784    --
127785    ------------------------------------------------------------------------------------------------
127786    -- 4219869 Business Flow
127787    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127788    -- Prior Entry.  Currently, the following code is always generated.
127789    ------------------------------------------------------------------------------------------------
127790    XLA_AE_LINES_PKG.ValidateCurrentLine;
127791 
127792    ------------------------------------------------------------------------------------
127793    -- 4219869 Business Flow
127794    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127795    ------------------------------------------------------------------------------------
127796    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127797 
127798    ----------------------------------------------------------------------------------
127799    -- 4219869 Business Flow
127800    -- Update journal entry status -- Need to generate this within IF <condition>
127801    ----------------------------------------------------------------------------------
127802    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127803          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127804          ,p_balance_type_code => l_balance_type_code
127805          );
127806 
127807    -------------------------------------------------------------------------------------------
127808    -- 4262811 - Generate the Accrual Reversal lines
127809    -------------------------------------------------------------------------------------------
127810    BEGIN
127811       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127812                               (g_array_event(p_event_id).array_value_num('header_index'));
127813       IF l_acc_rev_flag IS NULL THEN
127814          l_acc_rev_flag := 'N';
127815       END IF;
127816    EXCEPTION
127817       WHEN OTHERS THEN
127818          l_acc_rev_flag := 'N';
127819    END;
127820    --
127821    IF (l_acc_rev_flag = 'Y') THEN
127822 
127823        -- 4645092  ------------------------------------------------------------------------------
127824        -- To allow MPA report to determine if it should generate report process
127825        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127826        ------------------------------------------------------------------------------------------
127827 
127828        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127829        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127830    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
127831    -- call ADRs
127832    -- Bug 4922099
127833    --
127834    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127835         (NVL(l_actual_upg_option, 'N') = 'O') OR
127836         (NVL(l_enc_upg_option, 'N') = 'O')
127837       )
127838    THEN
127839    NULL;
127840    --
127841    --
127842    
127843   l_ccid := AcctDerRule_28(
127844            p_application_id           => p_application_id
127845          , p_ae_header_id             => l_ae_header_id 
127846 , p_source_15 => p_source_15
127847 , p_source_41 => p_source_41
127848 , p_source_42 => p_source_42
127849 , p_source_43 => p_source_43
127850 , p_source_44 => p_source_44
127851 , p_source_45 => p_source_45
127852          , x_transaction_coa_id       => l_adr_transaction_coa_id
127853          , x_accounting_coa_id        => l_adr_accounting_coa_id
127854          , x_value_type_code          => l_adr_value_type_code
127855          , p_side                     => 'NA'
127856    );
127857 
127858    xla_ae_lines_pkg.set_ccid(
127859     p_code_combination_id          => l_ccid
127860   , p_value_type_code              => l_adr_value_type_code
127861   , p_transaction_coa_id           => l_adr_transaction_coa_id
127862   , p_accounting_coa_id            => l_adr_accounting_coa_id
127863   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
127864   , p_adr_type_code                => 'S'
127865   , p_component_type               => l_component_type
127866   , p_component_code               => l_component_code
127867   , p_component_type_code          => l_component_type_code
127868   , p_component_appl_id            => l_component_appl_id
127869   , p_amb_context_code             => l_amb_context_code
127870   , p_side                         => 'NA'
127871   );
127872 
127873 
127874    --
127875    --
127876    END IF;
127877 
127878        --
127879        -- Update the line information that should be overwritten
127880        --
127881        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127882                                          p_header_num   => 1);
127883        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
127884 
127885        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127886 
127887        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
127888           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127889        END IF;
127890 
127891       --
127892       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127893       --
127894       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127895           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
127896       ELSE
127897           ---------------------------------------------------------------------------------------------------
127898           -- 4262811a Switch Sign
127899           ---------------------------------------------------------------------------------------------------
127900           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
127901           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127902                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127903           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127904                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127905           -- 5132302
127906           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127907                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127908 
127909       END IF;
127910 
127911       -- 4955764
127912       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127913       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127914 
127915 
127916       XLA_AE_LINES_PKG.ValidateCurrentLine;
127917       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127918 
127919       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127920                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127921                ,p_balance_type_code => l_balance_type_code);
127922 
127923    END IF;
127924 
127925    -----------------------------------------------------------------------------------------
127926    -- 4262811 Multiperiod Accounting
127927    -----------------------------------------------------------------------------------------
127928      -- No MPA option is assigned.
127929 
127930 
127931 END IF;
127932 END IF;
127933 --
127934 
127935 --
127936 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127937    trace
127938       (p_msg      => 'END of AcctLineType_245'
127939       ,p_level    => C_LEVEL_PROCEDURE
127940       ,p_module   => l_log_module);
127941 END IF;
127942 --
127943 EXCEPTION
127944   WHEN xla_exceptions_pkg.application_exception THEN
127945       RAISE;
127946   WHEN OTHERS THEN
127947        xla_exceptions_pkg.raise_message
127948            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_245');
127949 END AcctLineType_245;
127950 --
127951 
127952 ---------------------------------------
127953 --
127954 -- PRIVATE FUNCTION
127955 --         AcctLineType_246
127956 --
127957 ---------------------------------------
127958 PROCEDURE AcctLineType_246 (
127959   p_application_id        IN NUMBER
127960  ,p_event_id              IN NUMBER
127961  ,p_calculate_acctd_flag  IN VARCHAR2
127962  ,p_calculate_g_l_flag    IN VARCHAR2
127963  ,p_actual_flag           IN OUT VARCHAR2
127964  ,p_balance_type_code     OUT VARCHAR2
127965  ,p_gain_or_loss_ref      OUT VARCHAR2
127966  
127967 --TRANSACTION_ID
127968  , p_source_1            IN NUMBER
127969 --Item Concatenated Segments
127970  , p_source_2            IN VARCHAR2
127971 --Transaction Quantity
127972  , p_source_3            IN NUMBER
127973 --Transaction Unit of Measure Code
127974  , p_source_4            IN VARCHAR2
127975 --Inventory Transaction Type Description
127976  , p_source_5            IN VARCHAR2
127977 --Cost Element Name
127978  , p_source_15            IN NUMBER
127979 --Product Line Accounting Category Material Account
127980  , p_source_41            IN NUMBER
127981 --Product Line Accounting Category Material Overhead Account
127982  , p_source_42            IN NUMBER
127983 --Product Line Accounting Category Resource Account
127984  , p_source_43            IN NUMBER
127985 --Product Line Accounting Category Outside Processing Account
127986  , p_source_44            IN NUMBER
127987 --Product Line Accounting Category Overhead Account
127988  , p_source_45            IN NUMBER
127989 --DISTRIBUTION_IDENTIFIER
127990  , p_source_84            IN NUMBER
127991 --Distribution Type
127992  , p_source_85            IN VARCHAR2
127993  , p_source_85_meaning    IN VARCHAR2
127994 --Entered Currency Code
127995  , p_source_88            IN VARCHAR2
127996 --Entered Amount
127997  , p_source_91            IN NUMBER
127998 --Currency Conversion Date
127999  , p_source_92            IN DATE
128000 --Currency Conversion Rate
128001  , p_source_93            IN NUMBER
128002 --Currency Conversion Type
128003  , p_source_94            IN VARCHAR2
128004 --Accounted Amount
128005  , p_source_95            IN NUMBER
128006 --Accounting Line Type
128007  , p_source_97            IN NUMBER
128008 --Organization Code
128009  , p_source_108            IN VARCHAR2
128010 )
128011 IS
128012 
128013 l_component_type              VARCHAR2(80);
128014 l_component_code              VARCHAR2(30);
128015 l_component_type_code         VARCHAR2(1);
128016 l_component_appl_id           INTEGER;
128017 l_amb_context_code            VARCHAR2(30);
128018 l_entity_code                 VARCHAR2(30);
128019 l_event_class_code            VARCHAR2(30);
128020 l_ae_header_id                NUMBER;
128021 l_event_type_code             VARCHAR2(30);
128022 l_line_definition_code        VARCHAR2(30);
128023 l_line_definition_owner_code  VARCHAR2(1);
128024 --
128025 -- adr variables
128026 l_segment                     VARCHAR2(30);
128027 l_ccid                        NUMBER;
128028 l_adr_transaction_coa_id      NUMBER;
128029 l_adr_accounting_coa_id       NUMBER;
128030 l_adr_flexfield_segment_code  VARCHAR2(30);
128031 l_adr_flex_value_set_id       NUMBER;
128032 l_adr_value_type_code         VARCHAR2(30);
128033 l_adr_value_combination_id    NUMBER;
128034 l_adr_value_segment_code      VARCHAR2(30);
128035 
128036 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
128037 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
128038 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
128039 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
128040 
128041 -- 4262811 Variables ------------------------------------------------------------------------------------------
128042 l_entered_amt_idx             NUMBER;
128043 l_accted_amt_idx              NUMBER;
128044 l_acc_rev_flag                VARCHAR2(1);
128045 l_accrual_line_num            NUMBER;
128046 l_tmp_amt                     NUMBER;
128047 l_acc_rev_natural_side_code   VARCHAR2(1);
128048 
128049 l_num_entries                 NUMBER;
128050 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
128051 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
128052 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
128053 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
128054 l_recog_line_1                NUMBER;
128055 l_recog_line_2                NUMBER;
128056 
128057 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
128058 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
128059 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
128060 
128061 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128062 
128063 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
128064 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
128065 
128066 ---------------------------------------------------------------------------------------------------------------
128067 
128068 
128069 --
128070 -- bulk performance
128071 --
128072 l_balance_type_code           VARCHAR2(1);
128073 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
128074 l_log_module                  VARCHAR2(240);
128075 
128076 --
128077 -- Upgrade strategy
128078 --
128079 l_actual_upg_option           VARCHAR2(1);
128080 l_enc_upg_option           VARCHAR2(1);
128081 
128082 --
128083 BEGIN
128084 --
128085 IF g_log_enabled THEN
128086       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_246';
128087 END IF;
128088 --
128089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128090 
128091       trace
128092          (p_msg      => 'BEGIN of AcctLineType_246'
128093          ,p_level    => C_LEVEL_PROCEDURE
128094          ,p_module   => l_log_module);
128095 
128096 END IF;
128097 --
128098 l_component_type             := 'AMB_JLT';
128099 l_component_code             := 'INVENTORY_VALUATION';
128100 l_component_type_code        := 'S';
128101 l_component_appl_id          :=  707;
128102 l_amb_context_code           := 'DEFAULT';
128103 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
128104 l_event_class_code           := 'USER_DEFINE';
128105 l_event_type_code            := 'UAVG_COST_UPD';
128106 l_line_definition_owner_code := 'S';
128107 l_line_definition_code       := 'PI_COST_UPD';
128108 --
128109 l_balance_type_code          := 'A';
128110 l_segment                     := NULL;
128111 l_ccid                        := NULL;
128112 l_adr_transaction_coa_id      := NULL;
128113 l_adr_accounting_coa_id       := NULL;
128114 l_adr_flexfield_segment_code  := NULL;
128115 l_adr_flex_value_set_id       := NULL;
128116 l_adr_value_type_code         := NULL;
128117 l_adr_value_combination_id    := NULL;
128118 l_adr_value_segment_code      := NULL;
128119 
128120 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
128121 l_bflow_class_code           := '';    -- 4219869 Business Flow
128122 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
128123 l_budgetary_control_flag     := 'N';
128124 
128125 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
128126 l_bflow_applied_to_amt       := NULL; -- 5132302
128127 l_entered_amt_idx            := NULL;          -- 4262811
128128 l_accted_amt_idx             := NULL;          -- 4262811
128129 l_acc_rev_flag               := NULL;          -- 4262811
128130 l_accrual_line_num           := NULL;          -- 4262811
128131 l_tmp_amt                    := NULL;          -- 4262811
128132 --
128133  
128134 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128135     l_balance_type_code <> 'B' THEN
128136 IF NVL(p_source_97,9E125) =  1
128137  THEN 
128138 
128139    --
128140    XLA_AE_LINES_PKG.SetNewLine;
128141 
128142    p_balance_type_code          := l_balance_type_code;
128143    -- set the flag so later we will know whether the gain loss line needs to be created
128144    
128145    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128146      p_actual_flag :='A';
128147    END IF;
128148 
128149    --
128150    -- bulk performance
128151    --
128152    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128153                                       p_header_num   => 0); -- 4262811
128154    --
128155    -- set accounting line options
128156    --
128157    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128158            p_natural_side_code          => 'D'
128159          , p_gain_or_loss_flag          => 'N'
128160          , p_gl_transfer_mode_code      => 'S'
128161          , p_acct_entry_type_code       => 'A'
128162          , p_switch_side_flag           => 'Y'
128163          , p_merge_duplicate_code       => 'N'
128164          );
128165    --
128166    l_acc_rev_natural_side_code := 'C';  -- 4262811
128167    -- 
128168    --
128169    -- set accounting line type info
128170    --
128171    xla_ae_lines_pkg.SetAcctLineType
128172       (p_component_type             => l_component_type
128173       ,p_event_type_code            => l_event_type_code
128174       ,p_line_definition_owner_code => l_line_definition_owner_code
128175       ,p_line_definition_code       => l_line_definition_code
128176       ,p_accounting_line_code       => l_component_code
128177       ,p_accounting_line_type_code  => l_component_type_code
128178       ,p_accounting_line_appl_id    => l_component_appl_id
128179       ,p_amb_context_code           => l_amb_context_code
128180       ,p_entity_code                => l_entity_code
128181       ,p_event_class_code           => l_event_class_code);
128182    --
128183    -- set accounting class
128184    --
128185    xla_ae_lines_pkg.SetAcctClass(
128186            p_accounting_class_code  => 'INVENTORY_VALUATION'
128187          , p_ae_header_id           => l_ae_header_id
128188          );
128189 
128190    --
128191    -- set rounding class
128192    --
128193    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128194                       'INVENTORY_VALUATION';
128195 
128196    --
128197    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128198    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128199    --
128200    -- bulk performance
128201    --
128202    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128203 
128204    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128205       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128206 
128207    -- 4955764
128208    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128209       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128210 
128211    -- 4458381 Public Sector Enh
128212    
128213    --
128214    -- set accounting attributes for the line type
128215    --
128216    l_entered_amt_idx := 3;
128217    l_accted_amt_idx  := 8;
128218    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
128219    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
128220    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
128221    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
128222    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
128223    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
128224    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
128225    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
128226    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
128227    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
128228    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
128229    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
128230    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
128231    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
128232    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
128233    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
128234    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
128235 
128236    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128237    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128238 
128239    ---------------------------------------------------------------------------------------------------------------
128240    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128241    ---------------------------------------------------------------------------------------------------------------
128242    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128243 
128244    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128245    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128246 
128247    IF xla_accounting_cache_pkg.GetValueChar
128248          (p_source_code         => 'LEDGER_CATEGORY_CODE'
128249          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128250    AND l_bflow_method_code = 'PRIOR_ENTRY'
128251 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128252    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128253          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128254        )
128255    THEN
128256          xla_ae_lines_pkg.BflowUpgEntry
128257            (p_business_method_code    => l_bflow_method_code
128258            ,p_business_class_code     => l_bflow_class_code
128259            ,p_balance_type            => l_balance_type_code);
128260    ELSE
128261       NULL;
128262 -- No business flow processing for business flow method of NONE.
128263    END IF;
128264 
128265    --
128266    -- call analytical criteria
128267    --
128268    
128269 
128270 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
128271 xla_ae_lines_pkg.SetAnalyticalCriteria(
128272    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
128273  , p_analytical_criterion_owner   => 'S'
128274  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
128275  , p_amb_context_code             => 'DEFAULT'
128276  , p_balancing_flag               => 'Y'
128277  
128278  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
128279  , p_analytical_detail_num_1     =>  NULL
128280  , p_analytical_detail_date_1    =>  NULL
128281 
128282  , p_ae_header_id                 => l_ae_header_id
128283 )
128284 ;
128285 --
128286 
128287    --
128288    -- call description
128289    --
128290    
128291 xla_ae_lines_pkg.SetLineDescription(
128292    p_ae_header_id => l_ae_header_id
128293   ,p_description  => Description_1 (
128294      p_application_id         => p_application_id
128295    , p_ae_header_id           => l_ae_header_id 
128296 , p_source_1 => p_source_1
128297 , p_source_2 => p_source_2
128298 , p_source_3 => p_source_3
128299 , p_source_4 => p_source_4
128300 , p_source_5 => p_source_5
128301    )
128302 );
128303 
128304 
128305    --
128306    -- call ADRs
128307    -- Bug 4922099
128308    --
128309    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128310         (NVL(l_actual_upg_option, 'N') = 'O') OR
128311         (NVL(l_enc_upg_option, 'N') = 'O')
128312       )
128313    THEN
128314    NULL;
128315    --
128316    --
128317    
128318   l_ccid := AcctDerRule_28(
128319            p_application_id           => p_application_id
128320          , p_ae_header_id             => l_ae_header_id 
128321 , p_source_15 => p_source_15
128322 , p_source_41 => p_source_41
128323 , p_source_42 => p_source_42
128324 , p_source_43 => p_source_43
128325 , p_source_44 => p_source_44
128326 , p_source_45 => p_source_45
128327          , x_transaction_coa_id       => l_adr_transaction_coa_id
128328          , x_accounting_coa_id        => l_adr_accounting_coa_id
128329          , x_value_type_code          => l_adr_value_type_code
128330          , p_side                     => 'NA'
128331    );
128332 
128333    xla_ae_lines_pkg.set_ccid(
128334     p_code_combination_id          => l_ccid
128335   , p_value_type_code              => l_adr_value_type_code
128336   , p_transaction_coa_id           => l_adr_transaction_coa_id
128337   , p_accounting_coa_id            => l_adr_accounting_coa_id
128338   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
128339   , p_adr_type_code                => 'S'
128340   , p_component_type               => l_component_type
128341   , p_component_code               => l_component_code
128342   , p_component_type_code          => l_component_type_code
128343   , p_component_appl_id            => l_component_appl_id
128344   , p_amb_context_code             => l_amb_context_code
128345   , p_side                         => 'NA'
128346   );
128347 
128348 
128349    --
128350    --
128351    END IF;
128352    --
128353    -- Bug 4922099
128354    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128355           (NVL(l_enc_upg_option, 'N') = 'O')
128356         ) AND
128357         (l_bflow_method_code = 'PRIOR_ENTRY')
128358       )
128359    THEN
128360       IF
128361       --
128362       1 = 2
128363       --
128364       THEN
128365       xla_accounting_err_pkg.build_message
128366                                     (p_appli_s_name            => 'XLA'
128367                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128368                                     ,p_token_1                 => 'LINE_NUMBER'
128369                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
128370                                     ,p_token_2                 => 'LINE_TYPE_NAME'
128371                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
128372                                                                              l_component_type
128373                                                                             ,l_component_code
128374                                                                             ,l_component_type_code
128375                                                                             ,l_component_appl_id
128376                                                                             ,l_amb_context_code
128377                                                                             ,l_entity_code
128378                                                                             ,l_event_class_code
128379                                                                            )
128380                                     ,p_token_3                 => 'OWNER'
128381                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
128382                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
128383                                                                           ,p_lookup_code    => l_component_type_code
128384                                                                          )
128385                                     ,p_token_4                 => 'PRODUCT_NAME'
128386                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128387                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128388                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128389                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128390                                     ,p_ae_header_id            =>  NULL
128391                                        );
128392 
128393         IF (C_LEVEL_ERROR>= g_log_level) THEN
128394                  trace
128395                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128396                       ,p_level    => C_LEVEL_ERROR
128397                       ,p_module   => l_log_module);
128398         END IF;
128399       END IF;
128400    END IF;
128401    --
128402    --
128403    ------------------------------------------------------------------------------------------------
128404    -- 4219869 Business Flow
128405    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128406    -- Prior Entry.  Currently, the following code is always generated.
128407    ------------------------------------------------------------------------------------------------
128408    XLA_AE_LINES_PKG.ValidateCurrentLine;
128409 
128410    ------------------------------------------------------------------------------------
128411    -- 4219869 Business Flow
128412    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128413    ------------------------------------------------------------------------------------
128414    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128415 
128416    ----------------------------------------------------------------------------------
128417    -- 4219869 Business Flow
128418    -- Update journal entry status -- Need to generate this within IF <condition>
128419    ----------------------------------------------------------------------------------
128420    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128421          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
128422          ,p_balance_type_code => l_balance_type_code
128423          );
128424 
128425    -------------------------------------------------------------------------------------------
128426    -- 4262811 - Generate the Accrual Reversal lines
128427    -------------------------------------------------------------------------------------------
128428    BEGIN
128429       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
128430                               (g_array_event(p_event_id).array_value_num('header_index'));
128431       IF l_acc_rev_flag IS NULL THEN
128432          l_acc_rev_flag := 'N';
128433       END IF;
128434    EXCEPTION
128435       WHEN OTHERS THEN
128436          l_acc_rev_flag := 'N';
128437    END;
128438    --
128439    IF (l_acc_rev_flag = 'Y') THEN
128440 
128441        -- 4645092  ------------------------------------------------------------------------------
128442        -- To allow MPA report to determine if it should generate report process
128443        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
128444        ------------------------------------------------------------------------------------------
128445 
128446        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
128447        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
128448    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
128449    -- call ADRs
128450    -- Bug 4922099
128451    --
128452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128453         (NVL(l_actual_upg_option, 'N') = 'O') OR
128454         (NVL(l_enc_upg_option, 'N') = 'O')
128455       )
128456    THEN
128457    NULL;
128458    --
128459    --
128460    
128461   l_ccid := AcctDerRule_28(
128462            p_application_id           => p_application_id
128463          , p_ae_header_id             => l_ae_header_id 
128464 , p_source_15 => p_source_15
128465 , p_source_41 => p_source_41
128466 , p_source_42 => p_source_42
128467 , p_source_43 => p_source_43
128468 , p_source_44 => p_source_44
128469 , p_source_45 => p_source_45
128470          , x_transaction_coa_id       => l_adr_transaction_coa_id
128471          , x_accounting_coa_id        => l_adr_accounting_coa_id
128472          , x_value_type_code          => l_adr_value_type_code
128473          , p_side                     => 'NA'
128474    );
128475 
128476    xla_ae_lines_pkg.set_ccid(
128477     p_code_combination_id          => l_ccid
128478   , p_value_type_code              => l_adr_value_type_code
128479   , p_transaction_coa_id           => l_adr_transaction_coa_id
128480   , p_accounting_coa_id            => l_adr_accounting_coa_id
128481   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
128482   , p_adr_type_code                => 'S'
128483   , p_component_type               => l_component_type
128484   , p_component_code               => l_component_code
128485   , p_component_type_code          => l_component_type_code
128486   , p_component_appl_id            => l_component_appl_id
128487   , p_amb_context_code             => l_amb_context_code
128488   , p_side                         => 'NA'
128489   );
128490 
128491 
128492    --
128493    --
128494    END IF;
128495 
128496        --
128497        -- Update the line information that should be overwritten
128498        --
128499        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
128500                                          p_header_num   => 1);
128501        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
128502 
128503        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
128504 
128505        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
128506           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
128507        END IF;
128508 
128509       --
128510       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
128511       --
128512       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
128513           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
128514       ELSE
128515           ---------------------------------------------------------------------------------------------------
128516           -- 4262811a Switch Sign
128517           ---------------------------------------------------------------------------------------------------
128518           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
128519           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128520                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128521           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128522                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128523           -- 5132302
128524           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
128525                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128526 
128527       END IF;
128528 
128529       -- 4955764
128530       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128531       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
128532 
128533 
128534       XLA_AE_LINES_PKG.ValidateCurrentLine;
128535       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128536 
128537       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128538                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
128539                ,p_balance_type_code => l_balance_type_code);
128540 
128541    END IF;
128542 
128543    -----------------------------------------------------------------------------------------
128544    -- 4262811 Multiperiod Accounting
128545    -----------------------------------------------------------------------------------------
128546      -- No MPA option is assigned.
128547 
128548 
128549 END IF;
128550 END IF;
128551 --
128552 
128553 --
128554 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128555    trace
128556       (p_msg      => 'END of AcctLineType_246'
128557       ,p_level    => C_LEVEL_PROCEDURE
128558       ,p_module   => l_log_module);
128559 END IF;
128560 --
128561 EXCEPTION
128562   WHEN xla_exceptions_pkg.application_exception THEN
128563       RAISE;
128564   WHEN OTHERS THEN
128565        xla_exceptions_pkg.raise_message
128566            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_246');
128567 END AcctLineType_246;
128568 --
128569 
128570 ---------------------------------------
128571 --
128572 -- PRIVATE FUNCTION
128573 --         AcctLineType_247
128574 --
128575 ---------------------------------------
128576 PROCEDURE AcctLineType_247 (
128577   p_application_id        IN NUMBER
128578  ,p_event_id              IN NUMBER
128579  ,p_calculate_acctd_flag  IN VARCHAR2
128580  ,p_calculate_g_l_flag    IN VARCHAR2
128581  ,p_actual_flag           IN OUT VARCHAR2
128582  ,p_balance_type_code     OUT VARCHAR2
128583  ,p_gain_or_loss_ref      OUT VARCHAR2
128584  
128585 --TRANSACTION_ID
128586  , p_source_1            IN NUMBER
128587 --Item Concatenated Segments
128588  , p_source_2            IN VARCHAR2
128589 --Transaction Quantity
128590  , p_source_3            IN NUMBER
128591 --Transaction Unit of Measure Code
128592  , p_source_4            IN VARCHAR2
128593 --Inventory Transaction Type Description
128594  , p_source_5            IN VARCHAR2
128595 --Cost Element Name
128596  , p_source_15            IN NUMBER
128597 --Product Line Accounting Category Material Account
128598  , p_source_41            IN NUMBER
128599 --Product Line Accounting Category Material Overhead Account
128600  , p_source_42            IN NUMBER
128601 --Product Line Accounting Category Resource Account
128602  , p_source_43            IN NUMBER
128603 --Product Line Accounting Category Outside Processing Account
128604  , p_source_44            IN NUMBER
128605 --Product Line Accounting Category Overhead Account
128606  , p_source_45            IN NUMBER
128607 --DISTRIBUTION_IDENTIFIER
128608  , p_source_84            IN NUMBER
128609 --Distribution Type
128610  , p_source_85            IN VARCHAR2
128611  , p_source_85_meaning    IN VARCHAR2
128612 --Entered Currency Code
128613  , p_source_88            IN VARCHAR2
128614 --Entered Amount
128615  , p_source_91            IN NUMBER
128616 --Currency Conversion Date
128617  , p_source_92            IN DATE
128618 --Currency Conversion Rate
128619  , p_source_93            IN NUMBER
128620 --Currency Conversion Type
128621  , p_source_94            IN VARCHAR2
128622 --Accounted Amount
128623  , p_source_95            IN NUMBER
128624 --Accounting Line Type
128625  , p_source_97            IN NUMBER
128626 --Organization Code
128627  , p_source_108            IN VARCHAR2
128628 )
128629 IS
128630 
128631 l_component_type              VARCHAR2(80);
128632 l_component_code              VARCHAR2(30);
128633 l_component_type_code         VARCHAR2(1);
128634 l_component_appl_id           INTEGER;
128635 l_amb_context_code            VARCHAR2(30);
128636 l_entity_code                 VARCHAR2(30);
128637 l_event_class_code            VARCHAR2(30);
128638 l_ae_header_id                NUMBER;
128639 l_event_type_code             VARCHAR2(30);
128640 l_line_definition_code        VARCHAR2(30);
128641 l_line_definition_owner_code  VARCHAR2(1);
128642 --
128643 -- adr variables
128644 l_segment                     VARCHAR2(30);
128645 l_ccid                        NUMBER;
128646 l_adr_transaction_coa_id      NUMBER;
128647 l_adr_accounting_coa_id       NUMBER;
128648 l_adr_flexfield_segment_code  VARCHAR2(30);
128649 l_adr_flex_value_set_id       NUMBER;
128650 l_adr_value_type_code         VARCHAR2(30);
128651 l_adr_value_combination_id    NUMBER;
128652 l_adr_value_segment_code      VARCHAR2(30);
128653 
128654 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
128655 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
128656 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
128657 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
128658 
128659 -- 4262811 Variables ------------------------------------------------------------------------------------------
128660 l_entered_amt_idx             NUMBER;
128661 l_accted_amt_idx              NUMBER;
128662 l_acc_rev_flag                VARCHAR2(1);
128663 l_accrual_line_num            NUMBER;
128664 l_tmp_amt                     NUMBER;
128665 l_acc_rev_natural_side_code   VARCHAR2(1);
128666 
128667 l_num_entries                 NUMBER;
128668 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
128669 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
128670 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
128671 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
128672 l_recog_line_1                NUMBER;
128673 l_recog_line_2                NUMBER;
128674 
128675 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
128676 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
128677 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
128678 
128679 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128680 
128681 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
128682 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
128683 
128684 ---------------------------------------------------------------------------------------------------------------
128685 
128686 
128687 --
128688 -- bulk performance
128689 --
128690 l_balance_type_code           VARCHAR2(1);
128691 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
128692 l_log_module                  VARCHAR2(240);
128693 
128694 --
128695 -- Upgrade strategy
128696 --
128697 l_actual_upg_option           VARCHAR2(1);
128698 l_enc_upg_option           VARCHAR2(1);
128699 
128700 --
128701 BEGIN
128702 --
128703 IF g_log_enabled THEN
128704       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_247';
128705 END IF;
128706 --
128707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128708 
128709       trace
128710          (p_msg      => 'BEGIN of AcctLineType_247'
128711          ,p_level    => C_LEVEL_PROCEDURE
128712          ,p_module   => l_log_module);
128713 
128714 END IF;
128715 --
128716 l_component_type             := 'AMB_JLT';
128717 l_component_code             := 'INVENTORY_VALUATION';
128718 l_component_type_code        := 'S';
128719 l_component_appl_id          :=  707;
128720 l_amb_context_code           := 'DEFAULT';
128721 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
128722 l_event_class_code           := 'USER_DEFINE';
128723 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
128724 l_line_definition_owner_code := 'S';
128725 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
128726 --
128727 l_balance_type_code          := 'A';
128728 l_segment                     := NULL;
128729 l_ccid                        := NULL;
128730 l_adr_transaction_coa_id      := NULL;
128731 l_adr_accounting_coa_id       := NULL;
128732 l_adr_flexfield_segment_code  := NULL;
128733 l_adr_flex_value_set_id       := NULL;
128734 l_adr_value_type_code         := NULL;
128735 l_adr_value_combination_id    := NULL;
128736 l_adr_value_segment_code      := NULL;
128737 
128738 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
128739 l_bflow_class_code           := '';    -- 4219869 Business Flow
128740 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
128741 l_budgetary_control_flag     := 'N';
128742 
128743 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
128744 l_bflow_applied_to_amt       := NULL; -- 5132302
128745 l_entered_amt_idx            := NULL;          -- 4262811
128746 l_accted_amt_idx             := NULL;          -- 4262811
128747 l_acc_rev_flag               := NULL;          -- 4262811
128748 l_accrual_line_num           := NULL;          -- 4262811
128749 l_tmp_amt                    := NULL;          -- 4262811
128750 --
128751  
128752 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128753     l_balance_type_code <> 'B' THEN
128754 IF NVL(p_source_97,9E125) =  1
128755  THEN 
128756 
128757    --
128758    XLA_AE_LINES_PKG.SetNewLine;
128759 
128760    p_balance_type_code          := l_balance_type_code;
128761    -- set the flag so later we will know whether the gain loss line needs to be created
128762    
128763    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128764      p_actual_flag :='A';
128765    END IF;
128766 
128767    --
128768    -- bulk performance
128769    --
128770    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128771                                       p_header_num   => 0); -- 4262811
128772    --
128773    -- set accounting line options
128774    --
128775    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128776            p_natural_side_code          => 'D'
128777          , p_gain_or_loss_flag          => 'N'
128778          , p_gl_transfer_mode_code      => 'S'
128779          , p_acct_entry_type_code       => 'A'
128780          , p_switch_side_flag           => 'Y'
128781          , p_merge_duplicate_code       => 'N'
128782          );
128783    --
128784    l_acc_rev_natural_side_code := 'C';  -- 4262811
128785    -- 
128786    --
128787    -- set accounting line type info
128788    --
128789    xla_ae_lines_pkg.SetAcctLineType
128790       (p_component_type             => l_component_type
128791       ,p_event_type_code            => l_event_type_code
128792       ,p_line_definition_owner_code => l_line_definition_owner_code
128793       ,p_line_definition_code       => l_line_definition_code
128794       ,p_accounting_line_code       => l_component_code
128795       ,p_accounting_line_type_code  => l_component_type_code
128796       ,p_accounting_line_appl_id    => l_component_appl_id
128797       ,p_amb_context_code           => l_amb_context_code
128798       ,p_entity_code                => l_entity_code
128799       ,p_event_class_code           => l_event_class_code);
128800    --
128801    -- set accounting class
128802    --
128803    xla_ae_lines_pkg.SetAcctClass(
128804            p_accounting_class_code  => 'INVENTORY_VALUATION'
128805          , p_ae_header_id           => l_ae_header_id
128806          );
128807 
128808    --
128809    -- set rounding class
128810    --
128811    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128812                       'INVENTORY_VALUATION';
128813 
128814    --
128815    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128816    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128817    --
128818    -- bulk performance
128819    --
128820    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128821 
128822    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128823       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128824 
128825    -- 4955764
128826    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128827       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128828 
128829    -- 4458381 Public Sector Enh
128830    
128831    --
128832    -- set accounting attributes for the line type
128833    --
128834    l_entered_amt_idx := 3;
128835    l_accted_amt_idx  := 8;
128836    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
128837    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
128838    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
128839    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
128840    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
128841    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
128842    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
128843    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
128844    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
128845    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
128846    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
128847    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
128848    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
128849    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
128850    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
128851    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
128852    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
128853 
128854    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128855    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128856 
128857    ---------------------------------------------------------------------------------------------------------------
128858    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128859    ---------------------------------------------------------------------------------------------------------------
128860    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128861 
128862    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128863    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128864 
128865    IF xla_accounting_cache_pkg.GetValueChar
128866          (p_source_code         => 'LEDGER_CATEGORY_CODE'
128867          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128868    AND l_bflow_method_code = 'PRIOR_ENTRY'
128869 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128870    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128871          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128872        )
128873    THEN
128874          xla_ae_lines_pkg.BflowUpgEntry
128875            (p_business_method_code    => l_bflow_method_code
128876            ,p_business_class_code     => l_bflow_class_code
128877            ,p_balance_type            => l_balance_type_code);
128878    ELSE
128879       NULL;
128880 -- No business flow processing for business flow method of NONE.
128881    END IF;
128882 
128883    --
128884    -- call analytical criteria
128885    --
128886    
128887 
128888 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
128889 xla_ae_lines_pkg.SetAnalyticalCriteria(
128890    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
128891  , p_analytical_criterion_owner   => 'S'
128892  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
128893  , p_amb_context_code             => 'DEFAULT'
128894  , p_balancing_flag               => 'Y'
128895  
128896  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
128897  , p_analytical_detail_num_1     =>  NULL
128898  , p_analytical_detail_date_1    =>  NULL
128899 
128900  , p_ae_header_id                 => l_ae_header_id
128901 )
128902 ;
128903 --
128904 
128905    --
128906    -- call description
128907    --
128908    
128909 xla_ae_lines_pkg.SetLineDescription(
128910    p_ae_header_id => l_ae_header_id
128911   ,p_description  => Description_1 (
128912      p_application_id         => p_application_id
128913    , p_ae_header_id           => l_ae_header_id 
128914 , p_source_1 => p_source_1
128915 , p_source_2 => p_source_2
128916 , p_source_3 => p_source_3
128917 , p_source_4 => p_source_4
128918 , p_source_5 => p_source_5
128919    )
128920 );
128921 
128922 
128923    --
128924    -- call ADRs
128925    -- Bug 4922099
128926    --
128927    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128928         (NVL(l_actual_upg_option, 'N') = 'O') OR
128929         (NVL(l_enc_upg_option, 'N') = 'O')
128930       )
128931    THEN
128932    NULL;
128933    --
128934    --
128935    
128936   l_ccid := AcctDerRule_28(
128937            p_application_id           => p_application_id
128938          , p_ae_header_id             => l_ae_header_id 
128939 , p_source_15 => p_source_15
128940 , p_source_41 => p_source_41
128941 , p_source_42 => p_source_42
128942 , p_source_43 => p_source_43
128943 , p_source_44 => p_source_44
128944 , p_source_45 => p_source_45
128945          , x_transaction_coa_id       => l_adr_transaction_coa_id
128946          , x_accounting_coa_id        => l_adr_accounting_coa_id
128947          , x_value_type_code          => l_adr_value_type_code
128948          , p_side                     => 'NA'
128949    );
128950 
128951    xla_ae_lines_pkg.set_ccid(
128952     p_code_combination_id          => l_ccid
128953   , p_value_type_code              => l_adr_value_type_code
128954   , p_transaction_coa_id           => l_adr_transaction_coa_id
128955   , p_accounting_coa_id            => l_adr_accounting_coa_id
128956   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
128957   , p_adr_type_code                => 'S'
128958   , p_component_type               => l_component_type
128959   , p_component_code               => l_component_code
128960   , p_component_type_code          => l_component_type_code
128961   , p_component_appl_id            => l_component_appl_id
128962   , p_amb_context_code             => l_amb_context_code
128963   , p_side                         => 'NA'
128964   );
128965 
128966 
128967    --
128968    --
128969    END IF;
128970    --
128971    -- Bug 4922099
128972    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128973           (NVL(l_enc_upg_option, 'N') = 'O')
128974         ) AND
128975         (l_bflow_method_code = 'PRIOR_ENTRY')
128976       )
128977    THEN
128978       IF
128979       --
128980       1 = 2
128981       --
128982       THEN
128983       xla_accounting_err_pkg.build_message
128984                                     (p_appli_s_name            => 'XLA'
128985                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128986                                     ,p_token_1                 => 'LINE_NUMBER'
128987                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
128988                                     ,p_token_2                 => 'LINE_TYPE_NAME'
128989                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
128990                                                                              l_component_type
128991                                                                             ,l_component_code
128992                                                                             ,l_component_type_code
128993                                                                             ,l_component_appl_id
128994                                                                             ,l_amb_context_code
128995                                                                             ,l_entity_code
128996                                                                             ,l_event_class_code
128997                                                                            )
128998                                     ,p_token_3                 => 'OWNER'
128999                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
129000                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
129001                                                                           ,p_lookup_code    => l_component_type_code
129002                                                                          )
129003                                     ,p_token_4                 => 'PRODUCT_NAME'
129004                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
129005                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
129006                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
129007                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
129008                                     ,p_ae_header_id            =>  NULL
129009                                        );
129010 
129011         IF (C_LEVEL_ERROR>= g_log_level) THEN
129012                  trace
129013                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129014                       ,p_level    => C_LEVEL_ERROR
129015                       ,p_module   => l_log_module);
129016         END IF;
129017       END IF;
129018    END IF;
129019    --
129020    --
129021    ------------------------------------------------------------------------------------------------
129022    -- 4219869 Business Flow
129023    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
129024    -- Prior Entry.  Currently, the following code is always generated.
129025    ------------------------------------------------------------------------------------------------
129026    XLA_AE_LINES_PKG.ValidateCurrentLine;
129027 
129028    ------------------------------------------------------------------------------------
129029    -- 4219869 Business Flow
129030    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
129031    ------------------------------------------------------------------------------------
129032    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129033 
129034    ----------------------------------------------------------------------------------
129035    -- 4219869 Business Flow
129036    -- Update journal entry status -- Need to generate this within IF <condition>
129037    ----------------------------------------------------------------------------------
129038    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129039          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129040          ,p_balance_type_code => l_balance_type_code
129041          );
129042 
129043    -------------------------------------------------------------------------------------------
129044    -- 4262811 - Generate the Accrual Reversal lines
129045    -------------------------------------------------------------------------------------------
129046    BEGIN
129047       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129048                               (g_array_event(p_event_id).array_value_num('header_index'));
129049       IF l_acc_rev_flag IS NULL THEN
129050          l_acc_rev_flag := 'N';
129051       END IF;
129052    EXCEPTION
129053       WHEN OTHERS THEN
129054          l_acc_rev_flag := 'N';
129055    END;
129056    --
129057    IF (l_acc_rev_flag = 'Y') THEN
129058 
129059        -- 4645092  ------------------------------------------------------------------------------
129060        -- To allow MPA report to determine if it should generate report process
129061        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129062        ------------------------------------------------------------------------------------------
129063 
129064        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129065        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129066    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
129067    -- call ADRs
129068    -- Bug 4922099
129069    --
129070    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129071         (NVL(l_actual_upg_option, 'N') = 'O') OR
129072         (NVL(l_enc_upg_option, 'N') = 'O')
129073       )
129074    THEN
129075    NULL;
129076    --
129077    --
129078    
129079   l_ccid := AcctDerRule_28(
129080            p_application_id           => p_application_id
129081          , p_ae_header_id             => l_ae_header_id 
129082 , p_source_15 => p_source_15
129083 , p_source_41 => p_source_41
129084 , p_source_42 => p_source_42
129085 , p_source_43 => p_source_43
129086 , p_source_44 => p_source_44
129087 , p_source_45 => p_source_45
129088          , x_transaction_coa_id       => l_adr_transaction_coa_id
129089          , x_accounting_coa_id        => l_adr_accounting_coa_id
129090          , x_value_type_code          => l_adr_value_type_code
129091          , p_side                     => 'NA'
129092    );
129093 
129094    xla_ae_lines_pkg.set_ccid(
129095     p_code_combination_id          => l_ccid
129096   , p_value_type_code              => l_adr_value_type_code
129097   , p_transaction_coa_id           => l_adr_transaction_coa_id
129098   , p_accounting_coa_id            => l_adr_accounting_coa_id
129099   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
129100   , p_adr_type_code                => 'S'
129101   , p_component_type               => l_component_type
129102   , p_component_code               => l_component_code
129103   , p_component_type_code          => l_component_type_code
129104   , p_component_appl_id            => l_component_appl_id
129105   , p_amb_context_code             => l_amb_context_code
129106   , p_side                         => 'NA'
129107   );
129108 
129109 
129110    --
129111    --
129112    END IF;
129113 
129114        --
129115        -- Update the line information that should be overwritten
129116        --
129117        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129118                                          p_header_num   => 1);
129119        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
129120 
129121        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129122 
129123        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
129124           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129125        END IF;
129126 
129127       --
129128       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129129       --
129130       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129131           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
129132       ELSE
129133           ---------------------------------------------------------------------------------------------------
129134           -- 4262811a Switch Sign
129135           ---------------------------------------------------------------------------------------------------
129136           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
129137           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129138                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129139           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129140                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129141           -- 5132302
129142           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129143                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129144 
129145       END IF;
129146 
129147       -- 4955764
129148       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129149       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129150 
129151 
129152       XLA_AE_LINES_PKG.ValidateCurrentLine;
129153       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129154 
129155       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129156                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129157                ,p_balance_type_code => l_balance_type_code);
129158 
129159    END IF;
129160 
129161    -----------------------------------------------------------------------------------------
129162    -- 4262811 Multiperiod Accounting
129163    -----------------------------------------------------------------------------------------
129164      -- No MPA option is assigned.
129165 
129166 
129167 END IF;
129168 END IF;
129169 --
129170 
129171 --
129172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129173    trace
129174       (p_msg      => 'END of AcctLineType_247'
129175       ,p_level    => C_LEVEL_PROCEDURE
129176       ,p_module   => l_log_module);
129177 END IF;
129178 --
129179 EXCEPTION
129180   WHEN xla_exceptions_pkg.application_exception THEN
129181       RAISE;
129182   WHEN OTHERS THEN
129183        xla_exceptions_pkg.raise_message
129184            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_247');
129185 END AcctLineType_247;
129186 --
129187 
129188 ---------------------------------------
129189 --
129190 -- PRIVATE FUNCTION
129191 --         AcctLineType_248
129192 --
129193 ---------------------------------------
129194 PROCEDURE AcctLineType_248 (
129195   p_application_id        IN NUMBER
129196  ,p_event_id              IN NUMBER
129197  ,p_calculate_acctd_flag  IN VARCHAR2
129198  ,p_calculate_g_l_flag    IN VARCHAR2
129199  ,p_actual_flag           IN OUT VARCHAR2
129200  ,p_balance_type_code     OUT VARCHAR2
129201  ,p_gain_or_loss_ref      OUT VARCHAR2
129202  
129203 --TRANSACTION_ID
129204  , p_source_1            IN NUMBER
129205 --Item Concatenated Segments
129206  , p_source_2            IN VARCHAR2
129207 --Transaction Quantity
129208  , p_source_3            IN NUMBER
129209 --Transaction Unit of Measure Code
129210  , p_source_4            IN VARCHAR2
129211 --Inventory Transaction Type Description
129212  , p_source_5            IN VARCHAR2
129213 --Cost Element Name
129214  , p_source_15            IN NUMBER
129215 --Product Line Accounting Category Material Account
129216  , p_source_41            IN NUMBER
129217 --Product Line Accounting Category Material Overhead Account
129218  , p_source_42            IN NUMBER
129219 --Product Line Accounting Category Resource Account
129220  , p_source_43            IN NUMBER
129221 --Product Line Accounting Category Outside Processing Account
129222  , p_source_44            IN NUMBER
129223 --Product Line Accounting Category Overhead Account
129224  , p_source_45            IN NUMBER
129225 --DISTRIBUTION_IDENTIFIER
129226  , p_source_84            IN NUMBER
129227 --Distribution Type
129228  , p_source_85            IN VARCHAR2
129229  , p_source_85_meaning    IN VARCHAR2
129230 --Entered Currency Code
129231  , p_source_88            IN VARCHAR2
129232 --Entered Amount
129233  , p_source_91            IN NUMBER
129234 --Currency Conversion Date
129235  , p_source_92            IN DATE
129236 --Currency Conversion Rate
129237  , p_source_93            IN NUMBER
129238 --Currency Conversion Type
129239  , p_source_94            IN VARCHAR2
129240 --Accounted Amount
129241  , p_source_95            IN NUMBER
129242 --Accounting Line Type
129243  , p_source_97            IN NUMBER
129244 --Organization Code
129245  , p_source_108            IN VARCHAR2
129246 )
129247 IS
129248 
129249 l_component_type              VARCHAR2(80);
129250 l_component_code              VARCHAR2(30);
129251 l_component_type_code         VARCHAR2(1);
129252 l_component_appl_id           INTEGER;
129253 l_amb_context_code            VARCHAR2(30);
129254 l_entity_code                 VARCHAR2(30);
129255 l_event_class_code            VARCHAR2(30);
129256 l_ae_header_id                NUMBER;
129257 l_event_type_code             VARCHAR2(30);
129258 l_line_definition_code        VARCHAR2(30);
129259 l_line_definition_owner_code  VARCHAR2(1);
129260 --
129261 -- adr variables
129262 l_segment                     VARCHAR2(30);
129263 l_ccid                        NUMBER;
129264 l_adr_transaction_coa_id      NUMBER;
129265 l_adr_accounting_coa_id       NUMBER;
129266 l_adr_flexfield_segment_code  VARCHAR2(30);
129267 l_adr_flex_value_set_id       NUMBER;
129268 l_adr_value_type_code         VARCHAR2(30);
129269 l_adr_value_combination_id    NUMBER;
129270 l_adr_value_segment_code      VARCHAR2(30);
129271 
129272 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
129273 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
129274 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
129275 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
129276 
129277 -- 4262811 Variables ------------------------------------------------------------------------------------------
129278 l_entered_amt_idx             NUMBER;
129279 l_accted_amt_idx              NUMBER;
129280 l_acc_rev_flag                VARCHAR2(1);
129281 l_accrual_line_num            NUMBER;
129282 l_tmp_amt                     NUMBER;
129283 l_acc_rev_natural_side_code   VARCHAR2(1);
129284 
129285 l_num_entries                 NUMBER;
129286 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
129287 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
129288 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
129289 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
129290 l_recog_line_1                NUMBER;
129291 l_recog_line_2                NUMBER;
129292 
129293 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
129294 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
129295 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
129296 
129297 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129298 
129299 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
129300 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
129301 
129302 ---------------------------------------------------------------------------------------------------------------
129303 
129304 
129305 --
129306 -- bulk performance
129307 --
129308 l_balance_type_code           VARCHAR2(1);
129309 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
129310 l_log_module                  VARCHAR2(240);
129311 
129312 --
129313 -- Upgrade strategy
129314 --
129315 l_actual_upg_option           VARCHAR2(1);
129316 l_enc_upg_option           VARCHAR2(1);
129317 
129318 --
129319 BEGIN
129320 --
129321 IF g_log_enabled THEN
129322       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_248';
129323 END IF;
129324 --
129325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129326 
129327       trace
129328          (p_msg      => 'BEGIN of AcctLineType_248'
129329          ,p_level    => C_LEVEL_PROCEDURE
129330          ,p_module   => l_log_module);
129331 
129332 END IF;
129333 --
129334 l_component_type             := 'AMB_JLT';
129335 l_component_code             := 'INVENTORY_VALUATION';
129336 l_component_type_code        := 'S';
129337 l_component_appl_id          :=  707;
129338 l_amb_context_code           := 'DEFAULT';
129339 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
129340 l_event_class_code           := 'DIR_INTERORG_SHIP';
129341 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
129342 l_line_definition_owner_code := 'S';
129343 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
129344 --
129345 l_balance_type_code          := 'A';
129346 l_segment                     := NULL;
129347 l_ccid                        := NULL;
129348 l_adr_transaction_coa_id      := NULL;
129349 l_adr_accounting_coa_id       := NULL;
129350 l_adr_flexfield_segment_code  := NULL;
129351 l_adr_flex_value_set_id       := NULL;
129352 l_adr_value_type_code         := NULL;
129353 l_adr_value_combination_id    := NULL;
129354 l_adr_value_segment_code      := NULL;
129355 
129356 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
129357 l_bflow_class_code           := '';    -- 4219869 Business Flow
129358 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
129359 l_budgetary_control_flag     := 'N';
129360 
129361 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
129362 l_bflow_applied_to_amt       := NULL; -- 5132302
129363 l_entered_amt_idx            := NULL;          -- 4262811
129364 l_accted_amt_idx             := NULL;          -- 4262811
129365 l_acc_rev_flag               := NULL;          -- 4262811
129366 l_accrual_line_num           := NULL;          -- 4262811
129367 l_tmp_amt                    := NULL;          -- 4262811
129368 --
129369  
129370 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129371     l_balance_type_code <> 'B' THEN
129372 IF NVL(p_source_97,9E125) =  1
129373  THEN 
129374 
129375    --
129376    XLA_AE_LINES_PKG.SetNewLine;
129377 
129378    p_balance_type_code          := l_balance_type_code;
129379    -- set the flag so later we will know whether the gain loss line needs to be created
129380    
129381    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129382      p_actual_flag :='A';
129383    END IF;
129384 
129385    --
129386    -- bulk performance
129387    --
129388    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129389                                       p_header_num   => 0); -- 4262811
129390    --
129391    -- set accounting line options
129392    --
129393    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129394            p_natural_side_code          => 'D'
129395          , p_gain_or_loss_flag          => 'N'
129396          , p_gl_transfer_mode_code      => 'S'
129397          , p_acct_entry_type_code       => 'A'
129398          , p_switch_side_flag           => 'Y'
129399          , p_merge_duplicate_code       => 'N'
129400          );
129401    --
129402    l_acc_rev_natural_side_code := 'C';  -- 4262811
129403    -- 
129404    --
129405    -- set accounting line type info
129406    --
129407    xla_ae_lines_pkg.SetAcctLineType
129408       (p_component_type             => l_component_type
129409       ,p_event_type_code            => l_event_type_code
129410       ,p_line_definition_owner_code => l_line_definition_owner_code
129411       ,p_line_definition_code       => l_line_definition_code
129412       ,p_accounting_line_code       => l_component_code
129413       ,p_accounting_line_type_code  => l_component_type_code
129414       ,p_accounting_line_appl_id    => l_component_appl_id
129415       ,p_amb_context_code           => l_amb_context_code
129416       ,p_entity_code                => l_entity_code
129417       ,p_event_class_code           => l_event_class_code);
129418    --
129419    -- set accounting class
129420    --
129421    xla_ae_lines_pkg.SetAcctClass(
129422            p_accounting_class_code  => 'INVENTORY_VALUATION'
129423          , p_ae_header_id           => l_ae_header_id
129424          );
129425 
129426    --
129427    -- set rounding class
129428    --
129429    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129430                       'INVENTORY_VALUATION';
129431 
129432    --
129433    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129434    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129435    --
129436    -- bulk performance
129437    --
129438    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129439 
129440    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129441       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129442 
129443    -- 4955764
129444    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129445       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129446 
129447    -- 4458381 Public Sector Enh
129448    
129449    --
129450    -- set accounting attributes for the line type
129451    --
129452    l_entered_amt_idx := 3;
129453    l_accted_amt_idx  := 8;
129454    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
129455    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
129456    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
129457    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
129458    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
129459    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
129460    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
129461    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
129462    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
129463    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
129464    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
129465    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
129466    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
129467    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
129468    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
129469    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
129470    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
129471 
129472    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129473    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129474 
129475    ---------------------------------------------------------------------------------------------------------------
129476    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129477    ---------------------------------------------------------------------------------------------------------------
129478    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129479 
129480    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129481    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129482 
129483    IF xla_accounting_cache_pkg.GetValueChar
129484          (p_source_code         => 'LEDGER_CATEGORY_CODE'
129485          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129486    AND l_bflow_method_code = 'PRIOR_ENTRY'
129487 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129488    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129489          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129490        )
129491    THEN
129492          xla_ae_lines_pkg.BflowUpgEntry
129493            (p_business_method_code    => l_bflow_method_code
129494            ,p_business_class_code     => l_bflow_class_code
129495            ,p_balance_type            => l_balance_type_code);
129496    ELSE
129497       NULL;
129498 -- No business flow processing for business flow method of NONE.
129499    END IF;
129500 
129501    --
129502    -- call analytical criteria
129503    --
129504    
129505 
129506 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
129507 xla_ae_lines_pkg.SetAnalyticalCriteria(
129508    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
129509  , p_analytical_criterion_owner   => 'S'
129510  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
129511  , p_amb_context_code             => 'DEFAULT'
129512  , p_balancing_flag               => 'Y'
129513  
129514  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
129515  , p_analytical_detail_num_1     =>  NULL
129516  , p_analytical_detail_date_1    =>  NULL
129517 
129518  , p_ae_header_id                 => l_ae_header_id
129519 )
129520 ;
129521 --
129522 
129523    --
129524    -- call description
129525    --
129526    
129527 xla_ae_lines_pkg.SetLineDescription(
129528    p_ae_header_id => l_ae_header_id
129529   ,p_description  => Description_1 (
129530      p_application_id         => p_application_id
129531    , p_ae_header_id           => l_ae_header_id 
129532 , p_source_1 => p_source_1
129533 , p_source_2 => p_source_2
129534 , p_source_3 => p_source_3
129535 , p_source_4 => p_source_4
129536 , p_source_5 => p_source_5
129537    )
129538 );
129539 
129540 
129541    --
129542    -- call ADRs
129543    -- Bug 4922099
129544    --
129545    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129546         (NVL(l_actual_upg_option, 'N') = 'O') OR
129547         (NVL(l_enc_upg_option, 'N') = 'O')
129548       )
129549    THEN
129550    NULL;
129551    --
129552    --
129553    
129554   l_ccid := AcctDerRule_28(
129555            p_application_id           => p_application_id
129556          , p_ae_header_id             => l_ae_header_id 
129557 , p_source_15 => p_source_15
129558 , p_source_41 => p_source_41
129559 , p_source_42 => p_source_42
129560 , p_source_43 => p_source_43
129561 , p_source_44 => p_source_44
129562 , p_source_45 => p_source_45
129563          , x_transaction_coa_id       => l_adr_transaction_coa_id
129564          , x_accounting_coa_id        => l_adr_accounting_coa_id
129565          , x_value_type_code          => l_adr_value_type_code
129566          , p_side                     => 'NA'
129567    );
129568 
129569    xla_ae_lines_pkg.set_ccid(
129570     p_code_combination_id          => l_ccid
129571   , p_value_type_code              => l_adr_value_type_code
129572   , p_transaction_coa_id           => l_adr_transaction_coa_id
129573   , p_accounting_coa_id            => l_adr_accounting_coa_id
129574   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
129575   , p_adr_type_code                => 'S'
129576   , p_component_type               => l_component_type
129577   , p_component_code               => l_component_code
129578   , p_component_type_code          => l_component_type_code
129579   , p_component_appl_id            => l_component_appl_id
129580   , p_amb_context_code             => l_amb_context_code
129581   , p_side                         => 'NA'
129582   );
129583 
129584 
129585    --
129586    --
129587    END IF;
129588    --
129589    -- Bug 4922099
129590    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
129591           (NVL(l_enc_upg_option, 'N') = 'O')
129592         ) AND
129593         (l_bflow_method_code = 'PRIOR_ENTRY')
129594       )
129595    THEN
129596       IF
129597       --
129598       1 = 2
129599       --
129600       THEN
129601       xla_accounting_err_pkg.build_message
129602                                     (p_appli_s_name            => 'XLA'
129603                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129604                                     ,p_token_1                 => 'LINE_NUMBER'
129605                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
129606                                     ,p_token_2                 => 'LINE_TYPE_NAME'
129607                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
129608                                                                              l_component_type
129609                                                                             ,l_component_code
129610                                                                             ,l_component_type_code
129611                                                                             ,l_component_appl_id
129612                                                                             ,l_amb_context_code
129613                                                                             ,l_entity_code
129614                                                                             ,l_event_class_code
129615                                                                            )
129616                                     ,p_token_3                 => 'OWNER'
129617                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
129618                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
129619                                                                           ,p_lookup_code    => l_component_type_code
129620                                                                          )
129621                                     ,p_token_4                 => 'PRODUCT_NAME'
129622                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
129623                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
129624                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
129625                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
129626                                     ,p_ae_header_id            =>  NULL
129627                                        );
129628 
129629         IF (C_LEVEL_ERROR>= g_log_level) THEN
129630                  trace
129631                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129632                       ,p_level    => C_LEVEL_ERROR
129633                       ,p_module   => l_log_module);
129634         END IF;
129635       END IF;
129636    END IF;
129637    --
129638    --
129639    ------------------------------------------------------------------------------------------------
129640    -- 4219869 Business Flow
129641    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
129642    -- Prior Entry.  Currently, the following code is always generated.
129643    ------------------------------------------------------------------------------------------------
129644    XLA_AE_LINES_PKG.ValidateCurrentLine;
129645 
129646    ------------------------------------------------------------------------------------
129647    -- 4219869 Business Flow
129648    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
129649    ------------------------------------------------------------------------------------
129650    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129651 
129652    ----------------------------------------------------------------------------------
129653    -- 4219869 Business Flow
129654    -- Update journal entry status -- Need to generate this within IF <condition>
129655    ----------------------------------------------------------------------------------
129656    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129657          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129658          ,p_balance_type_code => l_balance_type_code
129659          );
129660 
129661    -------------------------------------------------------------------------------------------
129662    -- 4262811 - Generate the Accrual Reversal lines
129663    -------------------------------------------------------------------------------------------
129664    BEGIN
129665       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129666                               (g_array_event(p_event_id).array_value_num('header_index'));
129667       IF l_acc_rev_flag IS NULL THEN
129668          l_acc_rev_flag := 'N';
129669       END IF;
129670    EXCEPTION
129671       WHEN OTHERS THEN
129672          l_acc_rev_flag := 'N';
129673    END;
129674    --
129675    IF (l_acc_rev_flag = 'Y') THEN
129676 
129677        -- 4645092  ------------------------------------------------------------------------------
129678        -- To allow MPA report to determine if it should generate report process
129679        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129680        ------------------------------------------------------------------------------------------
129681 
129682        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129683        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129684    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
129685    -- call ADRs
129686    -- Bug 4922099
129687    --
129688    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129689         (NVL(l_actual_upg_option, 'N') = 'O') OR
129690         (NVL(l_enc_upg_option, 'N') = 'O')
129691       )
129692    THEN
129693    NULL;
129694    --
129695    --
129696    
129697   l_ccid := AcctDerRule_28(
129698            p_application_id           => p_application_id
129699          , p_ae_header_id             => l_ae_header_id 
129700 , p_source_15 => p_source_15
129701 , p_source_41 => p_source_41
129702 , p_source_42 => p_source_42
129703 , p_source_43 => p_source_43
129704 , p_source_44 => p_source_44
129705 , p_source_45 => p_source_45
129706          , x_transaction_coa_id       => l_adr_transaction_coa_id
129707          , x_accounting_coa_id        => l_adr_accounting_coa_id
129708          , x_value_type_code          => l_adr_value_type_code
129709          , p_side                     => 'NA'
129710    );
129711 
129712    xla_ae_lines_pkg.set_ccid(
129713     p_code_combination_id          => l_ccid
129714   , p_value_type_code              => l_adr_value_type_code
129715   , p_transaction_coa_id           => l_adr_transaction_coa_id
129716   , p_accounting_coa_id            => l_adr_accounting_coa_id
129717   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
129718   , p_adr_type_code                => 'S'
129719   , p_component_type               => l_component_type
129720   , p_component_code               => l_component_code
129721   , p_component_type_code          => l_component_type_code
129722   , p_component_appl_id            => l_component_appl_id
129723   , p_amb_context_code             => l_amb_context_code
129724   , p_side                         => 'NA'
129725   );
129726 
129727 
129728    --
129729    --
129730    END IF;
129731 
129732        --
129733        -- Update the line information that should be overwritten
129734        --
129735        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129736                                          p_header_num   => 1);
129737        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
129738 
129739        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129740 
129741        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
129742           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129743        END IF;
129744 
129745       --
129746       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129747       --
129748       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129749           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
129750       ELSE
129751           ---------------------------------------------------------------------------------------------------
129752           -- 4262811a Switch Sign
129753           ---------------------------------------------------------------------------------------------------
129754           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
129755           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129756                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129757           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129758                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129759           -- 5132302
129760           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129761                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129762 
129763       END IF;
129764 
129765       -- 4955764
129766       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129767       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129768 
129769 
129770       XLA_AE_LINES_PKG.ValidateCurrentLine;
129771       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129772 
129773       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129774                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129775                ,p_balance_type_code => l_balance_type_code);
129776 
129777    END IF;
129778 
129779    -----------------------------------------------------------------------------------------
129780    -- 4262811 Multiperiod Accounting
129781    -----------------------------------------------------------------------------------------
129782      -- No MPA option is assigned.
129783 
129784 
129785 END IF;
129786 END IF;
129787 --
129788 
129789 --
129790 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129791    trace
129792       (p_msg      => 'END of AcctLineType_248'
129793       ,p_level    => C_LEVEL_PROCEDURE
129794       ,p_module   => l_log_module);
129795 END IF;
129796 --
129797 EXCEPTION
129798   WHEN xla_exceptions_pkg.application_exception THEN
129799       RAISE;
129800   WHEN OTHERS THEN
129801        xla_exceptions_pkg.raise_message
129802            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_248');
129803 END AcctLineType_248;
129804 --
129805 
129806 ---------------------------------------
129807 --
129808 -- PRIVATE FUNCTION
129809 --         AcctLineType_249
129810 --
129811 ---------------------------------------
129812 PROCEDURE AcctLineType_249 (
129813   p_application_id        IN NUMBER
129814  ,p_event_id              IN NUMBER
129815  ,p_calculate_acctd_flag  IN VARCHAR2
129816  ,p_calculate_g_l_flag    IN VARCHAR2
129817  ,p_actual_flag           IN OUT VARCHAR2
129818  ,p_balance_type_code     OUT VARCHAR2
129819  ,p_gain_or_loss_ref      OUT VARCHAR2
129820  
129821 --TRANSACTION_ID
129822  , p_source_1            IN NUMBER
129823 --Item Concatenated Segments
129824  , p_source_2            IN VARCHAR2
129825 --Transaction Quantity
129826  , p_source_3            IN NUMBER
129827 --Transaction Unit of Measure Code
129828  , p_source_4            IN VARCHAR2
129829 --Inventory Transaction Type Description
129830  , p_source_5            IN VARCHAR2
129831 --Cost Element Name
129832  , p_source_15            IN NUMBER
129833 --Product Line Accounting Category Material Account
129834  , p_source_41            IN NUMBER
129835 --Product Line Accounting Category Material Overhead Account
129836  , p_source_42            IN NUMBER
129837 --Product Line Accounting Category Resource Account
129838  , p_source_43            IN NUMBER
129839 --Product Line Accounting Category Outside Processing Account
129840  , p_source_44            IN NUMBER
129841 --Product Line Accounting Category Overhead Account
129842  , p_source_45            IN NUMBER
129843 --DISTRIBUTION_IDENTIFIER
129844  , p_source_84            IN NUMBER
129845 --Distribution Type
129846  , p_source_85            IN VARCHAR2
129847  , p_source_85_meaning    IN VARCHAR2
129848 --Entered Currency Code
129849  , p_source_88            IN VARCHAR2
129850 --Entered Amount
129851  , p_source_91            IN NUMBER
129852 --Currency Conversion Date
129853  , p_source_92            IN DATE
129854 --Currency Conversion Rate
129855  , p_source_93            IN NUMBER
129856 --Currency Conversion Type
129857  , p_source_94            IN VARCHAR2
129858 --Accounted Amount
129859  , p_source_95            IN NUMBER
129860 --Accounting Line Type
129861  , p_source_97            IN NUMBER
129862 --Organization Code
129863  , p_source_108            IN VARCHAR2
129864 )
129865 IS
129866 
129867 l_component_type              VARCHAR2(80);
129868 l_component_code              VARCHAR2(30);
129869 l_component_type_code         VARCHAR2(1);
129870 l_component_appl_id           INTEGER;
129871 l_amb_context_code            VARCHAR2(30);
129872 l_entity_code                 VARCHAR2(30);
129873 l_event_class_code            VARCHAR2(30);
129874 l_ae_header_id                NUMBER;
129875 l_event_type_code             VARCHAR2(30);
129876 l_line_definition_code        VARCHAR2(30);
129877 l_line_definition_owner_code  VARCHAR2(1);
129878 --
129879 -- adr variables
129880 l_segment                     VARCHAR2(30);
129881 l_ccid                        NUMBER;
129882 l_adr_transaction_coa_id      NUMBER;
129883 l_adr_accounting_coa_id       NUMBER;
129884 l_adr_flexfield_segment_code  VARCHAR2(30);
129885 l_adr_flex_value_set_id       NUMBER;
129886 l_adr_value_type_code         VARCHAR2(30);
129887 l_adr_value_combination_id    NUMBER;
129888 l_adr_value_segment_code      VARCHAR2(30);
129889 
129890 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
129891 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
129892 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
129893 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
129894 
129895 -- 4262811 Variables ------------------------------------------------------------------------------------------
129896 l_entered_amt_idx             NUMBER;
129897 l_accted_amt_idx              NUMBER;
129898 l_acc_rev_flag                VARCHAR2(1);
129899 l_accrual_line_num            NUMBER;
129900 l_tmp_amt                     NUMBER;
129901 l_acc_rev_natural_side_code   VARCHAR2(1);
129902 
129903 l_num_entries                 NUMBER;
129904 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
129905 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
129906 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
129907 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
129908 l_recog_line_1                NUMBER;
129909 l_recog_line_2                NUMBER;
129910 
129911 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
129912 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
129913 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
129914 
129915 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129916 
129917 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
129918 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
129919 
129920 ---------------------------------------------------------------------------------------------------------------
129921 
129922 
129923 --
129924 -- bulk performance
129925 --
129926 l_balance_type_code           VARCHAR2(1);
129927 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
129928 l_log_module                  VARCHAR2(240);
129929 
129930 --
129931 -- Upgrade strategy
129932 --
129933 l_actual_upg_option           VARCHAR2(1);
129934 l_enc_upg_option           VARCHAR2(1);
129935 
129936 --
129937 BEGIN
129938 --
129939 IF g_log_enabled THEN
129940       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_249';
129941 END IF;
129942 --
129943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129944 
129945       trace
129946          (p_msg      => 'BEGIN of AcctLineType_249'
129947          ,p_level    => C_LEVEL_PROCEDURE
129948          ,p_module   => l_log_module);
129949 
129950 END IF;
129951 --
129952 l_component_type             := 'AMB_JLT';
129953 l_component_code             := 'INVENTORY_VALUATION';
129954 l_component_type_code        := 'S';
129955 l_component_appl_id          :=  707;
129956 l_amb_context_code           := 'DEFAULT';
129957 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
129958 l_event_class_code           := 'MTL_COST_UPD';
129959 l_event_type_code            := 'STD_COST_UPD';
129960 l_line_definition_owner_code := 'S';
129961 l_line_definition_code       := 'PI_STD_COST_UPD';
129962 --
129963 l_balance_type_code          := 'A';
129964 l_segment                     := NULL;
129965 l_ccid                        := NULL;
129966 l_adr_transaction_coa_id      := NULL;
129967 l_adr_accounting_coa_id       := NULL;
129968 l_adr_flexfield_segment_code  := NULL;
129969 l_adr_flex_value_set_id       := NULL;
129970 l_adr_value_type_code         := NULL;
129971 l_adr_value_combination_id    := NULL;
129972 l_adr_value_segment_code      := NULL;
129973 
129974 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
129975 l_bflow_class_code           := '';    -- 4219869 Business Flow
129976 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
129977 l_budgetary_control_flag     := 'N';
129978 
129979 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
129980 l_bflow_applied_to_amt       := NULL; -- 5132302
129981 l_entered_amt_idx            := NULL;          -- 4262811
129982 l_accted_amt_idx             := NULL;          -- 4262811
129983 l_acc_rev_flag               := NULL;          -- 4262811
129984 l_accrual_line_num           := NULL;          -- 4262811
129985 l_tmp_amt                    := NULL;          -- 4262811
129986 --
129987  
129988 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129989     l_balance_type_code <> 'B' THEN
129990 IF NVL(p_source_97,9E125) =  1
129991  THEN 
129992 
129993    --
129994    XLA_AE_LINES_PKG.SetNewLine;
129995 
129996    p_balance_type_code          := l_balance_type_code;
129997    -- set the flag so later we will know whether the gain loss line needs to be created
129998    
129999    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130000      p_actual_flag :='A';
130001    END IF;
130002 
130003    --
130004    -- bulk performance
130005    --
130006    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130007                                       p_header_num   => 0); -- 4262811
130008    --
130009    -- set accounting line options
130010    --
130011    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130012            p_natural_side_code          => 'D'
130013          , p_gain_or_loss_flag          => 'N'
130014          , p_gl_transfer_mode_code      => 'S'
130015          , p_acct_entry_type_code       => 'A'
130016          , p_switch_side_flag           => 'Y'
130017          , p_merge_duplicate_code       => 'N'
130018          );
130019    --
130020    l_acc_rev_natural_side_code := 'C';  -- 4262811
130021    -- 
130022    --
130023    -- set accounting line type info
130024    --
130025    xla_ae_lines_pkg.SetAcctLineType
130026       (p_component_type             => l_component_type
130027       ,p_event_type_code            => l_event_type_code
130028       ,p_line_definition_owner_code => l_line_definition_owner_code
130029       ,p_line_definition_code       => l_line_definition_code
130030       ,p_accounting_line_code       => l_component_code
130031       ,p_accounting_line_type_code  => l_component_type_code
130032       ,p_accounting_line_appl_id    => l_component_appl_id
130033       ,p_amb_context_code           => l_amb_context_code
130034       ,p_entity_code                => l_entity_code
130035       ,p_event_class_code           => l_event_class_code);
130036    --
130037    -- set accounting class
130038    --
130039    xla_ae_lines_pkg.SetAcctClass(
130040            p_accounting_class_code  => 'INVENTORY_VALUATION'
130041          , p_ae_header_id           => l_ae_header_id
130042          );
130043 
130044    --
130045    -- set rounding class
130046    --
130047    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130048                       'INVENTORY_VALUATION';
130049 
130050    --
130051    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130052    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130053    --
130054    -- bulk performance
130055    --
130056    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130057 
130058    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130059       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130060 
130061    -- 4955764
130062    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130063       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130064 
130065    -- 4458381 Public Sector Enh
130066    
130067    --
130068    -- set accounting attributes for the line type
130069    --
130070    l_entered_amt_idx := 3;
130071    l_accted_amt_idx  := 8;
130072    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
130073    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
130074    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
130075    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
130076    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
130077    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
130078    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
130079    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
130080    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
130081    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
130082    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
130083    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
130084    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
130085    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
130086    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
130087    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
130088    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
130089 
130090    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
130091    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
130092 
130093    ---------------------------------------------------------------------------------------------------------------
130094    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
130095    ---------------------------------------------------------------------------------------------------------------
130096    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
130097 
130098    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130099    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130100 
130101    IF xla_accounting_cache_pkg.GetValueChar
130102          (p_source_code         => 'LEDGER_CATEGORY_CODE'
130103          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
130104    AND l_bflow_method_code = 'PRIOR_ENTRY'
130105 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
130106    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
130107          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
130108        )
130109    THEN
130110          xla_ae_lines_pkg.BflowUpgEntry
130111            (p_business_method_code    => l_bflow_method_code
130112            ,p_business_class_code     => l_bflow_class_code
130113            ,p_balance_type            => l_balance_type_code);
130114    ELSE
130115       NULL;
130116 -- No business flow processing for business flow method of NONE.
130117    END IF;
130118 
130119    --
130120    -- call analytical criteria
130121    --
130122    
130123 
130124 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
130125 xla_ae_lines_pkg.SetAnalyticalCriteria(
130126    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
130127  , p_analytical_criterion_owner   => 'S'
130128  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
130129  , p_amb_context_code             => 'DEFAULT'
130130  , p_balancing_flag               => 'Y'
130131  
130132  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
130133  , p_analytical_detail_num_1     =>  NULL
130134  , p_analytical_detail_date_1    =>  NULL
130135 
130136  , p_ae_header_id                 => l_ae_header_id
130137 )
130138 ;
130139 --
130140 
130141    --
130142    -- call description
130143    --
130144    
130145 xla_ae_lines_pkg.SetLineDescription(
130146    p_ae_header_id => l_ae_header_id
130147   ,p_description  => Description_1 (
130148      p_application_id         => p_application_id
130149    , p_ae_header_id           => l_ae_header_id 
130150 , p_source_1 => p_source_1
130151 , p_source_2 => p_source_2
130152 , p_source_3 => p_source_3
130153 , p_source_4 => p_source_4
130154 , p_source_5 => p_source_5
130155    )
130156 );
130157 
130158 
130159    --
130160    -- call ADRs
130161    -- Bug 4922099
130162    --
130163    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130164         (NVL(l_actual_upg_option, 'N') = 'O') OR
130165         (NVL(l_enc_upg_option, 'N') = 'O')
130166       )
130167    THEN
130168    NULL;
130169    --
130170    --
130171    
130172   l_ccid := AcctDerRule_28(
130173            p_application_id           => p_application_id
130174          , p_ae_header_id             => l_ae_header_id 
130175 , p_source_15 => p_source_15
130176 , p_source_41 => p_source_41
130177 , p_source_42 => p_source_42
130178 , p_source_43 => p_source_43
130179 , p_source_44 => p_source_44
130180 , p_source_45 => p_source_45
130181          , x_transaction_coa_id       => l_adr_transaction_coa_id
130182          , x_accounting_coa_id        => l_adr_accounting_coa_id
130183          , x_value_type_code          => l_adr_value_type_code
130184          , p_side                     => 'NA'
130185    );
130186 
130187    xla_ae_lines_pkg.set_ccid(
130188     p_code_combination_id          => l_ccid
130189   , p_value_type_code              => l_adr_value_type_code
130190   , p_transaction_coa_id           => l_adr_transaction_coa_id
130191   , p_accounting_coa_id            => l_adr_accounting_coa_id
130192   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
130193   , p_adr_type_code                => 'S'
130194   , p_component_type               => l_component_type
130195   , p_component_code               => l_component_code
130196   , p_component_type_code          => l_component_type_code
130197   , p_component_appl_id            => l_component_appl_id
130198   , p_amb_context_code             => l_amb_context_code
130199   , p_side                         => 'NA'
130200   );
130201 
130202 
130203    --
130204    --
130205    END IF;
130206    --
130207    -- Bug 4922099
130208    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130209           (NVL(l_enc_upg_option, 'N') = 'O')
130210         ) AND
130211         (l_bflow_method_code = 'PRIOR_ENTRY')
130212       )
130213    THEN
130214       IF
130215       --
130216       1 = 2
130217       --
130218       THEN
130219       xla_accounting_err_pkg.build_message
130220                                     (p_appli_s_name            => 'XLA'
130221                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130222                                     ,p_token_1                 => 'LINE_NUMBER'
130223                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
130224                                     ,p_token_2                 => 'LINE_TYPE_NAME'
130225                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
130226                                                                              l_component_type
130227                                                                             ,l_component_code
130228                                                                             ,l_component_type_code
130229                                                                             ,l_component_appl_id
130230                                                                             ,l_amb_context_code
130231                                                                             ,l_entity_code
130232                                                                             ,l_event_class_code
130233                                                                            )
130234                                     ,p_token_3                 => 'OWNER'
130235                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
130236                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
130237                                                                           ,p_lookup_code    => l_component_type_code
130238                                                                          )
130239                                     ,p_token_4                 => 'PRODUCT_NAME'
130240                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130241                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130242                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130243                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130244                                     ,p_ae_header_id            =>  NULL
130245                                        );
130246 
130247         IF (C_LEVEL_ERROR>= g_log_level) THEN
130248                  trace
130249                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130250                       ,p_level    => C_LEVEL_ERROR
130251                       ,p_module   => l_log_module);
130252         END IF;
130253       END IF;
130254    END IF;
130255    --
130256    --
130257    ------------------------------------------------------------------------------------------------
130258    -- 4219869 Business Flow
130259    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130260    -- Prior Entry.  Currently, the following code is always generated.
130261    ------------------------------------------------------------------------------------------------
130262    XLA_AE_LINES_PKG.ValidateCurrentLine;
130263 
130264    ------------------------------------------------------------------------------------
130265    -- 4219869 Business Flow
130266    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130267    ------------------------------------------------------------------------------------
130268    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130269 
130270    ----------------------------------------------------------------------------------
130271    -- 4219869 Business Flow
130272    -- Update journal entry status -- Need to generate this within IF <condition>
130273    ----------------------------------------------------------------------------------
130274    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130275          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130276          ,p_balance_type_code => l_balance_type_code
130277          );
130278 
130279    -------------------------------------------------------------------------------------------
130280    -- 4262811 - Generate the Accrual Reversal lines
130281    -------------------------------------------------------------------------------------------
130282    BEGIN
130283       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130284                               (g_array_event(p_event_id).array_value_num('header_index'));
130285       IF l_acc_rev_flag IS NULL THEN
130286          l_acc_rev_flag := 'N';
130287       END IF;
130288    EXCEPTION
130289       WHEN OTHERS THEN
130290          l_acc_rev_flag := 'N';
130291    END;
130292    --
130293    IF (l_acc_rev_flag = 'Y') THEN
130294 
130295        -- 4645092  ------------------------------------------------------------------------------
130296        -- To allow MPA report to determine if it should generate report process
130297        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130298        ------------------------------------------------------------------------------------------
130299 
130300        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130301        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130302    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
130303    -- call ADRs
130304    -- Bug 4922099
130305    --
130306    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130307         (NVL(l_actual_upg_option, 'N') = 'O') OR
130308         (NVL(l_enc_upg_option, 'N') = 'O')
130309       )
130310    THEN
130311    NULL;
130312    --
130313    --
130314    
130315   l_ccid := AcctDerRule_28(
130316            p_application_id           => p_application_id
130317          , p_ae_header_id             => l_ae_header_id 
130318 , p_source_15 => p_source_15
130319 , p_source_41 => p_source_41
130320 , p_source_42 => p_source_42
130321 , p_source_43 => p_source_43
130322 , p_source_44 => p_source_44
130323 , p_source_45 => p_source_45
130324          , x_transaction_coa_id       => l_adr_transaction_coa_id
130325          , x_accounting_coa_id        => l_adr_accounting_coa_id
130326          , x_value_type_code          => l_adr_value_type_code
130327          , p_side                     => 'NA'
130328    );
130329 
130330    xla_ae_lines_pkg.set_ccid(
130331     p_code_combination_id          => l_ccid
130332   , p_value_type_code              => l_adr_value_type_code
130333   , p_transaction_coa_id           => l_adr_transaction_coa_id
130334   , p_accounting_coa_id            => l_adr_accounting_coa_id
130335   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
130336   , p_adr_type_code                => 'S'
130337   , p_component_type               => l_component_type
130338   , p_component_code               => l_component_code
130339   , p_component_type_code          => l_component_type_code
130340   , p_component_appl_id            => l_component_appl_id
130341   , p_amb_context_code             => l_amb_context_code
130342   , p_side                         => 'NA'
130343   );
130344 
130345 
130346    --
130347    --
130348    END IF;
130349 
130350        --
130351        -- Update the line information that should be overwritten
130352        --
130353        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130354                                          p_header_num   => 1);
130355        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
130356 
130357        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130358 
130359        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
130360           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130361        END IF;
130362 
130363       --
130364       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130365       --
130366       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130367           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
130368       ELSE
130369           ---------------------------------------------------------------------------------------------------
130370           -- 4262811a Switch Sign
130371           ---------------------------------------------------------------------------------------------------
130372           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
130373           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130374                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130375           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130376                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130377           -- 5132302
130378           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130379                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130380 
130381       END IF;
130382 
130383       -- 4955764
130384       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130385       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130386 
130387 
130388       XLA_AE_LINES_PKG.ValidateCurrentLine;
130389       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130390 
130391       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130392                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130393                ,p_balance_type_code => l_balance_type_code);
130394 
130395    END IF;
130396 
130397    -----------------------------------------------------------------------------------------
130398    -- 4262811 Multiperiod Accounting
130399    -----------------------------------------------------------------------------------------
130400      -- No MPA option is assigned.
130401 
130402 
130403 END IF;
130404 END IF;
130405 --
130406 
130407 --
130408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130409    trace
130410       (p_msg      => 'END of AcctLineType_249'
130411       ,p_level    => C_LEVEL_PROCEDURE
130412       ,p_module   => l_log_module);
130413 END IF;
130414 --
130415 EXCEPTION
130416   WHEN xla_exceptions_pkg.application_exception THEN
130417       RAISE;
130418   WHEN OTHERS THEN
130419        xla_exceptions_pkg.raise_message
130420            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_249');
130421 END AcctLineType_249;
130422 --
130423 
130424 ---------------------------------------
130425 --
130426 -- PRIVATE FUNCTION
130427 --         AcctLineType_250
130428 --
130429 ---------------------------------------
130430 PROCEDURE AcctLineType_250 (
130431   p_application_id        IN NUMBER
130432  ,p_event_id              IN NUMBER
130433  ,p_calculate_acctd_flag  IN VARCHAR2
130434  ,p_calculate_g_l_flag    IN VARCHAR2
130435  ,p_actual_flag           IN OUT VARCHAR2
130436  ,p_balance_type_code     OUT VARCHAR2
130437  ,p_gain_or_loss_ref      OUT VARCHAR2
130438  
130439 --Cost Management Default Account
130440  , p_source_11            IN NUMBER
130441 --DISTRIBUTION_IDENTIFIER
130442  , p_source_84            IN NUMBER
130443 --Distribution Type
130444  , p_source_85            IN VARCHAR2
130445  , p_source_85_meaning    IN VARCHAR2
130446 --Entered Currency Code
130447  , p_source_88            IN VARCHAR2
130448 --Entered Amount
130449  , p_source_91            IN NUMBER
130450 --Currency Conversion Date
130451  , p_source_92            IN DATE
130452 --Currency Conversion Rate
130453  , p_source_93            IN NUMBER
130454 --Currency Conversion Type
130455  , p_source_94            IN VARCHAR2
130456 --Accounted Amount
130457  , p_source_95            IN NUMBER
130458 --Accounting Line Type
130459  , p_source_97            IN NUMBER
130460 --Organization Code
130461  , p_source_108            IN VARCHAR2
130462 )
130463 IS
130464 
130465 l_component_type              VARCHAR2(80);
130466 l_component_code              VARCHAR2(30);
130467 l_component_type_code         VARCHAR2(1);
130468 l_component_appl_id           INTEGER;
130469 l_amb_context_code            VARCHAR2(30);
130470 l_entity_code                 VARCHAR2(30);
130471 l_event_class_code            VARCHAR2(30);
130472 l_ae_header_id                NUMBER;
130473 l_event_type_code             VARCHAR2(30);
130474 l_line_definition_code        VARCHAR2(30);
130475 l_line_definition_owner_code  VARCHAR2(1);
130476 --
130477 -- adr variables
130478 l_segment                     VARCHAR2(30);
130479 l_ccid                        NUMBER;
130480 l_adr_transaction_coa_id      NUMBER;
130481 l_adr_accounting_coa_id       NUMBER;
130482 l_adr_flexfield_segment_code  VARCHAR2(30);
130483 l_adr_flex_value_set_id       NUMBER;
130484 l_adr_value_type_code         VARCHAR2(30);
130485 l_adr_value_combination_id    NUMBER;
130486 l_adr_value_segment_code      VARCHAR2(30);
130487 
130488 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
130489 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
130490 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
130491 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
130492 
130493 -- 4262811 Variables ------------------------------------------------------------------------------------------
130494 l_entered_amt_idx             NUMBER;
130495 l_accted_amt_idx              NUMBER;
130496 l_acc_rev_flag                VARCHAR2(1);
130497 l_accrual_line_num            NUMBER;
130498 l_tmp_amt                     NUMBER;
130499 l_acc_rev_natural_side_code   VARCHAR2(1);
130500 
130501 l_num_entries                 NUMBER;
130502 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
130503 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
130504 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
130505 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
130506 l_recog_line_1                NUMBER;
130507 l_recog_line_2                NUMBER;
130508 
130509 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
130510 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
130511 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
130512 
130513 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130514 
130515 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
130516 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
130517 
130518 ---------------------------------------------------------------------------------------------------------------
130519 
130520 
130521 --
130522 -- bulk performance
130523 --
130524 l_balance_type_code           VARCHAR2(1);
130525 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
130526 l_log_module                  VARCHAR2(240);
130527 
130528 --
130529 -- Upgrade strategy
130530 --
130531 l_actual_upg_option           VARCHAR2(1);
130532 l_enc_upg_option           VARCHAR2(1);
130533 
130534 --
130535 BEGIN
130536 --
130537 IF g_log_enabled THEN
130538       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_250';
130539 END IF;
130540 --
130541 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130542 
130543       trace
130544          (p_msg      => 'BEGIN of AcctLineType_250'
130545          ,p_level    => C_LEVEL_PROCEDURE
130546          ,p_module   => l_log_module);
130547 
130548 END IF;
130549 --
130550 l_component_type             := 'AMB_JLT';
130551 l_component_code             := 'INVENTORY_VALUATION';
130552 l_component_type_code        := 'S';
130553 l_component_appl_id          :=  707;
130554 l_amb_context_code           := 'DEFAULT';
130555 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
130556 l_event_class_code           := 'SALES_ORDER';
130557 l_event_type_code            := 'COGS_RECOGNITION';
130558 l_line_definition_owner_code := 'S';
130559 l_line_definition_code       := 'PI_COGS_RECOGNITION';
130560 --
130561 l_balance_type_code          := 'A';
130562 l_segment                     := NULL;
130563 l_ccid                        := NULL;
130564 l_adr_transaction_coa_id      := NULL;
130565 l_adr_accounting_coa_id       := NULL;
130566 l_adr_flexfield_segment_code  := NULL;
130567 l_adr_flex_value_set_id       := NULL;
130568 l_adr_value_type_code         := NULL;
130569 l_adr_value_combination_id    := NULL;
130570 l_adr_value_segment_code      := NULL;
130571 
130572 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
130573 l_bflow_class_code           := '';    -- 4219869 Business Flow
130574 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
130575 l_budgetary_control_flag     := 'N';
130576 
130577 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
130578 l_bflow_applied_to_amt       := NULL; -- 5132302
130579 l_entered_amt_idx            := NULL;          -- 4262811
130580 l_accted_amt_idx             := NULL;          -- 4262811
130581 l_acc_rev_flag               := NULL;          -- 4262811
130582 l_accrual_line_num           := NULL;          -- 4262811
130583 l_tmp_amt                    := NULL;          -- 4262811
130584 --
130585  
130586 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130587     l_balance_type_code <> 'B' THEN
130588 IF NVL(p_source_97,9E125) =  1
130589  THEN 
130590 
130591    --
130592    XLA_AE_LINES_PKG.SetNewLine;
130593 
130594    p_balance_type_code          := l_balance_type_code;
130595    -- set the flag so later we will know whether the gain loss line needs to be created
130596    
130597    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130598      p_actual_flag :='A';
130599    END IF;
130600 
130601    --
130602    -- bulk performance
130603    --
130604    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130605                                       p_header_num   => 0); -- 4262811
130606    --
130607    -- set accounting line options
130608    --
130609    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130610            p_natural_side_code          => 'D'
130611          , p_gain_or_loss_flag          => 'N'
130612          , p_gl_transfer_mode_code      => 'S'
130613          , p_acct_entry_type_code       => 'A'
130614          , p_switch_side_flag           => 'Y'
130615          , p_merge_duplicate_code       => 'N'
130616          );
130617    --
130618    l_acc_rev_natural_side_code := 'C';  -- 4262811
130619    -- 
130620    --
130621    -- set accounting line type info
130622    --
130623    xla_ae_lines_pkg.SetAcctLineType
130624       (p_component_type             => l_component_type
130625       ,p_event_type_code            => l_event_type_code
130626       ,p_line_definition_owner_code => l_line_definition_owner_code
130627       ,p_line_definition_code       => l_line_definition_code
130628       ,p_accounting_line_code       => l_component_code
130629       ,p_accounting_line_type_code  => l_component_type_code
130630       ,p_accounting_line_appl_id    => l_component_appl_id
130631       ,p_amb_context_code           => l_amb_context_code
130632       ,p_entity_code                => l_entity_code
130633       ,p_event_class_code           => l_event_class_code);
130634    --
130635    -- set accounting class
130636    --
130637    xla_ae_lines_pkg.SetAcctClass(
130638            p_accounting_class_code  => 'INVENTORY_VALUATION'
130639          , p_ae_header_id           => l_ae_header_id
130640          );
130641 
130642    --
130643    -- set rounding class
130644    --
130645    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130646                       'INVENTORY_VALUATION';
130647 
130648    --
130649    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130650    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130651    --
130652    -- bulk performance
130653    --
130654    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130655 
130656    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130657       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130658 
130659    -- 4955764
130660    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130661       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130662 
130663    -- 4458381 Public Sector Enh
130664    
130665    --
130666    -- set accounting attributes for the line type
130667    --
130668    l_entered_amt_idx := 3;
130669    l_accted_amt_idx  := 8;
130670    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
130671    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
130672    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
130673    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
130674    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
130675    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
130676    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
130677    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
130678    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
130679    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
130680    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
130681    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
130682    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
130683    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
130684    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
130685    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
130686    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
130687 
130688    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
130689    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
130690 
130691    ---------------------------------------------------------------------------------------------------------------
130692    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
130693    ---------------------------------------------------------------------------------------------------------------
130694    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
130695 
130696    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130697    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130698 
130699    IF xla_accounting_cache_pkg.GetValueChar
130700          (p_source_code         => 'LEDGER_CATEGORY_CODE'
130701          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
130702    AND l_bflow_method_code = 'PRIOR_ENTRY'
130703 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
130704    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
130705          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
130706        )
130707    THEN
130708          xla_ae_lines_pkg.BflowUpgEntry
130709            (p_business_method_code    => l_bflow_method_code
130710            ,p_business_class_code     => l_bflow_class_code
130711            ,p_balance_type            => l_balance_type_code);
130712    ELSE
130713       NULL;
130714 -- No business flow processing for business flow method of NONE.
130715    END IF;
130716 
130717    --
130718    -- call analytical criteria
130719    --
130720    
130721 
130722 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
130723 xla_ae_lines_pkg.SetAnalyticalCriteria(
130724    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
130725  , p_analytical_criterion_owner   => 'S'
130726  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
130727  , p_amb_context_code             => 'DEFAULT'
130728  , p_balancing_flag               => 'Y'
130729  
130730  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
130731  , p_analytical_detail_num_1     =>  NULL
130732  , p_analytical_detail_date_1    =>  NULL
130733 
130734  , p_ae_header_id                 => l_ae_header_id
130735 )
130736 ;
130737 --
130738 
130739    --
130740    -- call description
130741    --
130742    -- No description or it is inherited.
130743    --
130744    -- call ADRs
130745    -- Bug 4922099
130746    --
130747    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130748         (NVL(l_actual_upg_option, 'N') = 'O') OR
130749         (NVL(l_enc_upg_option, 'N') = 'O')
130750       )
130751    THEN
130752    NULL;
130753    --
130754    --
130755    
130756   l_ccid := AcctDerRule_6(
130757            p_application_id           => p_application_id
130758          , p_ae_header_id             => l_ae_header_id 
130759 , p_source_11 => p_source_11
130760          , x_transaction_coa_id       => l_adr_transaction_coa_id
130761          , x_accounting_coa_id        => l_adr_accounting_coa_id
130762          , x_value_type_code          => l_adr_value_type_code
130763          , p_side                     => 'NA'
130764    );
130765 
130766    xla_ae_lines_pkg.set_ccid(
130767     p_code_combination_id          => l_ccid
130768   , p_value_type_code              => l_adr_value_type_code
130769   , p_transaction_coa_id           => l_adr_transaction_coa_id
130770   , p_accounting_coa_id            => l_adr_accounting_coa_id
130771   , p_adr_code                     => 'CST_DEFAULT'
130772   , p_adr_type_code                => 'S'
130773   , p_component_type               => l_component_type
130774   , p_component_code               => l_component_code
130775   , p_component_type_code          => l_component_type_code
130776   , p_component_appl_id            => l_component_appl_id
130777   , p_amb_context_code             => l_amb_context_code
130778   , p_side                         => 'NA'
130779   );
130780 
130781 
130782    --
130783    --
130784    END IF;
130785    --
130786    -- Bug 4922099
130787    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130788           (NVL(l_enc_upg_option, 'N') = 'O')
130789         ) AND
130790         (l_bflow_method_code = 'PRIOR_ENTRY')
130791       )
130792    THEN
130793       IF
130794       --
130795       1 = 2
130796       --
130797       THEN
130798       xla_accounting_err_pkg.build_message
130799                                     (p_appli_s_name            => 'XLA'
130800                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130801                                     ,p_token_1                 => 'LINE_NUMBER'
130802                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
130803                                     ,p_token_2                 => 'LINE_TYPE_NAME'
130804                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
130805                                                                              l_component_type
130806                                                                             ,l_component_code
130807                                                                             ,l_component_type_code
130808                                                                             ,l_component_appl_id
130809                                                                             ,l_amb_context_code
130810                                                                             ,l_entity_code
130811                                                                             ,l_event_class_code
130812                                                                            )
130813                                     ,p_token_3                 => 'OWNER'
130814                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
130815                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
130816                                                                           ,p_lookup_code    => l_component_type_code
130817                                                                          )
130818                                     ,p_token_4                 => 'PRODUCT_NAME'
130819                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130820                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130821                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130822                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130823                                     ,p_ae_header_id            =>  NULL
130824                                        );
130825 
130826         IF (C_LEVEL_ERROR>= g_log_level) THEN
130827                  trace
130828                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130829                       ,p_level    => C_LEVEL_ERROR
130830                       ,p_module   => l_log_module);
130831         END IF;
130832       END IF;
130833    END IF;
130834    --
130835    --
130836    ------------------------------------------------------------------------------------------------
130837    -- 4219869 Business Flow
130838    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130839    -- Prior Entry.  Currently, the following code is always generated.
130840    ------------------------------------------------------------------------------------------------
130841    XLA_AE_LINES_PKG.ValidateCurrentLine;
130842 
130843    ------------------------------------------------------------------------------------
130844    -- 4219869 Business Flow
130845    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130846    ------------------------------------------------------------------------------------
130847    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130848 
130849    ----------------------------------------------------------------------------------
130850    -- 4219869 Business Flow
130851    -- Update journal entry status -- Need to generate this within IF <condition>
130852    ----------------------------------------------------------------------------------
130853    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130854          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130855          ,p_balance_type_code => l_balance_type_code
130856          );
130857 
130858    -------------------------------------------------------------------------------------------
130859    -- 4262811 - Generate the Accrual Reversal lines
130860    -------------------------------------------------------------------------------------------
130861    BEGIN
130862       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130863                               (g_array_event(p_event_id).array_value_num('header_index'));
130864       IF l_acc_rev_flag IS NULL THEN
130865          l_acc_rev_flag := 'N';
130866       END IF;
130867    EXCEPTION
130868       WHEN OTHERS THEN
130869          l_acc_rev_flag := 'N';
130870    END;
130871    --
130872    IF (l_acc_rev_flag = 'Y') THEN
130873 
130874        -- 4645092  ------------------------------------------------------------------------------
130875        -- To allow MPA report to determine if it should generate report process
130876        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130877        ------------------------------------------------------------------------------------------
130878 
130879        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130880        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130881    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
130882    -- call ADRs
130883    -- Bug 4922099
130884    --
130885    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130886         (NVL(l_actual_upg_option, 'N') = 'O') OR
130887         (NVL(l_enc_upg_option, 'N') = 'O')
130888       )
130889    THEN
130890    NULL;
130891    --
130892    --
130893    
130894   l_ccid := AcctDerRule_6(
130895            p_application_id           => p_application_id
130896          , p_ae_header_id             => l_ae_header_id 
130897 , p_source_11 => p_source_11
130898          , x_transaction_coa_id       => l_adr_transaction_coa_id
130899          , x_accounting_coa_id        => l_adr_accounting_coa_id
130900          , x_value_type_code          => l_adr_value_type_code
130901          , p_side                     => 'NA'
130902    );
130903 
130904    xla_ae_lines_pkg.set_ccid(
130905     p_code_combination_id          => l_ccid
130906   , p_value_type_code              => l_adr_value_type_code
130907   , p_transaction_coa_id           => l_adr_transaction_coa_id
130908   , p_accounting_coa_id            => l_adr_accounting_coa_id
130909   , p_adr_code                     => 'CST_DEFAULT'
130910   , p_adr_type_code                => 'S'
130911   , p_component_type               => l_component_type
130912   , p_component_code               => l_component_code
130913   , p_component_type_code          => l_component_type_code
130914   , p_component_appl_id            => l_component_appl_id
130915   , p_amb_context_code             => l_amb_context_code
130916   , p_side                         => 'NA'
130917   );
130918 
130919 
130920    --
130921    --
130922    END IF;
130923 
130924        --
130925        -- Update the line information that should be overwritten
130926        --
130927        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130928                                          p_header_num   => 1);
130929        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
130930 
130931        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130932 
130933        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
130934           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130935        END IF;
130936 
130937       --
130938       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130939       --
130940       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130941           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
130942       ELSE
130943           ---------------------------------------------------------------------------------------------------
130944           -- 4262811a Switch Sign
130945           ---------------------------------------------------------------------------------------------------
130946           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
130947           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130948                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130949           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130950                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130951           -- 5132302
130952           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130953                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130954 
130955       END IF;
130956 
130957       -- 4955764
130958       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130959       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130960 
130961 
130962       XLA_AE_LINES_PKG.ValidateCurrentLine;
130963       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130964 
130965       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130966                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130967                ,p_balance_type_code => l_balance_type_code);
130968 
130969    END IF;
130970 
130971    -----------------------------------------------------------------------------------------
130972    -- 4262811 Multiperiod Accounting
130973    -----------------------------------------------------------------------------------------
130974      -- No MPA option is assigned.
130975 
130976 
130977 END IF;
130978 END IF;
130979 --
130980 
130981 --
130982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130983    trace
130984       (p_msg      => 'END of AcctLineType_250'
130985       ,p_level    => C_LEVEL_PROCEDURE
130986       ,p_module   => l_log_module);
130987 END IF;
130988 --
130989 EXCEPTION
130990   WHEN xla_exceptions_pkg.application_exception THEN
130991       RAISE;
130992   WHEN OTHERS THEN
130993        xla_exceptions_pkg.raise_message
130994            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_250');
130995 END AcctLineType_250;
130996 --
130997 
130998 ---------------------------------------
130999 --
131000 -- PRIVATE FUNCTION
131001 --         AcctLineType_251
131002 --
131003 ---------------------------------------
131004 PROCEDURE AcctLineType_251 (
131005   p_application_id        IN NUMBER
131006  ,p_event_id              IN NUMBER
131007  ,p_calculate_acctd_flag  IN VARCHAR2
131008  ,p_calculate_g_l_flag    IN VARCHAR2
131009  ,p_actual_flag           IN OUT VARCHAR2
131010  ,p_balance_type_code     OUT VARCHAR2
131011  ,p_gain_or_loss_ref      OUT VARCHAR2
131012  
131013 --TRANSACTION_ID
131014  , p_source_1            IN NUMBER
131015 --Item Concatenated Segments
131016  , p_source_2            IN VARCHAR2
131017 --Transaction Quantity
131018  , p_source_3            IN NUMBER
131019 --Transaction Unit of Measure Code
131020  , p_source_4            IN VARCHAR2
131021 --Inventory Transaction Type Description
131022  , p_source_5            IN VARCHAR2
131023 --Cost Element Name
131024  , p_source_15            IN NUMBER
131025 --Product Line Accounting Category Material Account
131026  , p_source_41            IN NUMBER
131027 --Product Line Accounting Category Material Overhead Account
131028  , p_source_42            IN NUMBER
131029 --Product Line Accounting Category Resource Account
131030  , p_source_43            IN NUMBER
131031 --Product Line Accounting Category Outside Processing Account
131032  , p_source_44            IN NUMBER
131033 --Product Line Accounting Category Overhead Account
131034  , p_source_45            IN NUMBER
131035 --DISTRIBUTION_IDENTIFIER
131036  , p_source_84            IN NUMBER
131037 --Distribution Type
131038  , p_source_85            IN VARCHAR2
131039  , p_source_85_meaning    IN VARCHAR2
131040 --Entered Currency Code
131041  , p_source_88            IN VARCHAR2
131042 --Entered Amount
131043  , p_source_91            IN NUMBER
131044 --Currency Conversion Date
131045  , p_source_92            IN DATE
131046 --Currency Conversion Rate
131047  , p_source_93            IN NUMBER
131048 --Currency Conversion Type
131049  , p_source_94            IN VARCHAR2
131050 --Accounted Amount
131051  , p_source_95            IN NUMBER
131052 --Accounting Line Type
131053  , p_source_97            IN NUMBER
131054 --Organization Code
131055  , p_source_108            IN VARCHAR2
131056 )
131057 IS
131058 
131059 l_component_type              VARCHAR2(80);
131060 l_component_code              VARCHAR2(30);
131061 l_component_type_code         VARCHAR2(1);
131062 l_component_appl_id           INTEGER;
131063 l_amb_context_code            VARCHAR2(30);
131064 l_entity_code                 VARCHAR2(30);
131065 l_event_class_code            VARCHAR2(30);
131066 l_ae_header_id                NUMBER;
131067 l_event_type_code             VARCHAR2(30);
131068 l_line_definition_code        VARCHAR2(30);
131069 l_line_definition_owner_code  VARCHAR2(1);
131070 --
131071 -- adr variables
131072 l_segment                     VARCHAR2(30);
131073 l_ccid                        NUMBER;
131074 l_adr_transaction_coa_id      NUMBER;
131075 l_adr_accounting_coa_id       NUMBER;
131076 l_adr_flexfield_segment_code  VARCHAR2(30);
131077 l_adr_flex_value_set_id       NUMBER;
131078 l_adr_value_type_code         VARCHAR2(30);
131079 l_adr_value_combination_id    NUMBER;
131080 l_adr_value_segment_code      VARCHAR2(30);
131081 
131082 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
131083 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
131084 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
131085 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
131086 
131087 -- 4262811 Variables ------------------------------------------------------------------------------------------
131088 l_entered_amt_idx             NUMBER;
131089 l_accted_amt_idx              NUMBER;
131090 l_acc_rev_flag                VARCHAR2(1);
131091 l_accrual_line_num            NUMBER;
131092 l_tmp_amt                     NUMBER;
131093 l_acc_rev_natural_side_code   VARCHAR2(1);
131094 
131095 l_num_entries                 NUMBER;
131096 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
131097 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
131098 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
131099 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
131100 l_recog_line_1                NUMBER;
131101 l_recog_line_2                NUMBER;
131102 
131103 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
131104 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
131105 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
131106 
131107 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131108 
131109 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
131110 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
131111 
131112 ---------------------------------------------------------------------------------------------------------------
131113 
131114 
131115 --
131116 -- bulk performance
131117 --
131118 l_balance_type_code           VARCHAR2(1);
131119 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
131120 l_log_module                  VARCHAR2(240);
131121 
131122 --
131123 -- Upgrade strategy
131124 --
131125 l_actual_upg_option           VARCHAR2(1);
131126 l_enc_upg_option           VARCHAR2(1);
131127 
131128 --
131129 BEGIN
131130 --
131131 IF g_log_enabled THEN
131132       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_251';
131133 END IF;
131134 --
131135 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131136 
131137       trace
131138          (p_msg      => 'BEGIN of AcctLineType_251'
131139          ,p_level    => C_LEVEL_PROCEDURE
131140          ,p_module   => l_log_module);
131141 
131142 END IF;
131143 --
131144 l_component_type             := 'AMB_JLT';
131145 l_component_code             := 'INVENTORY_VALUATION';
131146 l_component_type_code        := 'S';
131147 l_component_appl_id          :=  707;
131148 l_amb_context_code           := 'DEFAULT';
131149 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
131150 l_event_class_code           := 'USER_DEFINE';
131151 l_event_type_code            := 'UDIR_INTERORG_RCPT';
131152 l_line_definition_owner_code := 'S';
131153 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
131154 --
131155 l_balance_type_code          := 'A';
131156 l_segment                     := NULL;
131157 l_ccid                        := NULL;
131158 l_adr_transaction_coa_id      := NULL;
131159 l_adr_accounting_coa_id       := NULL;
131160 l_adr_flexfield_segment_code  := NULL;
131161 l_adr_flex_value_set_id       := NULL;
131162 l_adr_value_type_code         := NULL;
131163 l_adr_value_combination_id    := NULL;
131164 l_adr_value_segment_code      := NULL;
131165 
131166 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
131167 l_bflow_class_code           := '';    -- 4219869 Business Flow
131168 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
131169 l_budgetary_control_flag     := 'N';
131170 
131171 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
131172 l_bflow_applied_to_amt       := NULL; -- 5132302
131173 l_entered_amt_idx            := NULL;          -- 4262811
131174 l_accted_amt_idx             := NULL;          -- 4262811
131175 l_acc_rev_flag               := NULL;          -- 4262811
131176 l_accrual_line_num           := NULL;          -- 4262811
131177 l_tmp_amt                    := NULL;          -- 4262811
131178 --
131179  
131180 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
131181     l_balance_type_code <> 'B' THEN
131182 IF NVL(p_source_97,9E125) =  1
131183  THEN 
131184 
131185    --
131186    XLA_AE_LINES_PKG.SetNewLine;
131187 
131188    p_balance_type_code          := l_balance_type_code;
131189    -- set the flag so later we will know whether the gain loss line needs to be created
131190    
131191    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
131192      p_actual_flag :='A';
131193    END IF;
131194 
131195    --
131196    -- bulk performance
131197    --
131198    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
131199                                       p_header_num   => 0); -- 4262811
131200    --
131201    -- set accounting line options
131202    --
131203    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
131204            p_natural_side_code          => 'D'
131205          , p_gain_or_loss_flag          => 'N'
131206          , p_gl_transfer_mode_code      => 'S'
131207          , p_acct_entry_type_code       => 'A'
131208          , p_switch_side_flag           => 'Y'
131209          , p_merge_duplicate_code       => 'N'
131210          );
131211    --
131212    l_acc_rev_natural_side_code := 'C';  -- 4262811
131213    -- 
131214    --
131215    -- set accounting line type info
131216    --
131217    xla_ae_lines_pkg.SetAcctLineType
131218       (p_component_type             => l_component_type
131219       ,p_event_type_code            => l_event_type_code
131220       ,p_line_definition_owner_code => l_line_definition_owner_code
131221       ,p_line_definition_code       => l_line_definition_code
131222       ,p_accounting_line_code       => l_component_code
131223       ,p_accounting_line_type_code  => l_component_type_code
131224       ,p_accounting_line_appl_id    => l_component_appl_id
131225       ,p_amb_context_code           => l_amb_context_code
131226       ,p_entity_code                => l_entity_code
131227       ,p_event_class_code           => l_event_class_code);
131228    --
131229    -- set accounting class
131230    --
131231    xla_ae_lines_pkg.SetAcctClass(
131232            p_accounting_class_code  => 'INVENTORY_VALUATION'
131233          , p_ae_header_id           => l_ae_header_id
131234          );
131235 
131236    --
131237    -- set rounding class
131238    --
131239    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131240                       'INVENTORY_VALUATION';
131241 
131242    --
131243    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131244    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131245    --
131246    -- bulk performance
131247    --
131248    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131249 
131250    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131251       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131252 
131253    -- 4955764
131254    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131255       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131256 
131257    -- 4458381 Public Sector Enh
131258    
131259    --
131260    -- set accounting attributes for the line type
131261    --
131262    l_entered_amt_idx := 3;
131263    l_accted_amt_idx  := 8;
131264    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
131265    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131266    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
131267    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131268    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
131269    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131270    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
131271    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131272    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
131273    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131274    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
131275    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131276    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
131277    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131278    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
131279    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131280    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
131281 
131282    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131283    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131284 
131285    ---------------------------------------------------------------------------------------------------------------
131286    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131287    ---------------------------------------------------------------------------------------------------------------
131288    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131289 
131290    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131291    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131292 
131293    IF xla_accounting_cache_pkg.GetValueChar
131294          (p_source_code         => 'LEDGER_CATEGORY_CODE'
131295          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131296    AND l_bflow_method_code = 'PRIOR_ENTRY'
131297 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131298    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131299          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131300        )
131301    THEN
131302          xla_ae_lines_pkg.BflowUpgEntry
131303            (p_business_method_code    => l_bflow_method_code
131304            ,p_business_class_code     => l_bflow_class_code
131305            ,p_balance_type            => l_balance_type_code);
131306    ELSE
131307       NULL;
131308 -- No business flow processing for business flow method of NONE.
131309    END IF;
131310 
131311    --
131312    -- call analytical criteria
131313    --
131314    
131315 
131316 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
131317 xla_ae_lines_pkg.SetAnalyticalCriteria(
131318    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
131319  , p_analytical_criterion_owner   => 'S'
131320  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
131321  , p_amb_context_code             => 'DEFAULT'
131322  , p_balancing_flag               => 'Y'
131323  
131324  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
131325  , p_analytical_detail_num_1     =>  NULL
131326  , p_analytical_detail_date_1    =>  NULL
131327 
131328  , p_ae_header_id                 => l_ae_header_id
131329 )
131330 ;
131331 --
131332 
131333    --
131334    -- call description
131335    --
131336    
131337 xla_ae_lines_pkg.SetLineDescription(
131338    p_ae_header_id => l_ae_header_id
131339   ,p_description  => Description_1 (
131340      p_application_id         => p_application_id
131341    , p_ae_header_id           => l_ae_header_id 
131342 , p_source_1 => p_source_1
131343 , p_source_2 => p_source_2
131344 , p_source_3 => p_source_3
131345 , p_source_4 => p_source_4
131346 , p_source_5 => p_source_5
131347    )
131348 );
131349 
131350 
131351    --
131352    -- call ADRs
131353    -- Bug 4922099
131354    --
131355    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131356         (NVL(l_actual_upg_option, 'N') = 'O') OR
131357         (NVL(l_enc_upg_option, 'N') = 'O')
131358       )
131359    THEN
131360    NULL;
131361    --
131362    --
131363    
131364   l_ccid := AcctDerRule_28(
131365            p_application_id           => p_application_id
131366          , p_ae_header_id             => l_ae_header_id 
131367 , p_source_15 => p_source_15
131368 , p_source_41 => p_source_41
131369 , p_source_42 => p_source_42
131370 , p_source_43 => p_source_43
131371 , p_source_44 => p_source_44
131372 , p_source_45 => p_source_45
131373          , x_transaction_coa_id       => l_adr_transaction_coa_id
131374          , x_accounting_coa_id        => l_adr_accounting_coa_id
131375          , x_value_type_code          => l_adr_value_type_code
131376          , p_side                     => 'NA'
131377    );
131378 
131379    xla_ae_lines_pkg.set_ccid(
131380     p_code_combination_id          => l_ccid
131381   , p_value_type_code              => l_adr_value_type_code
131382   , p_transaction_coa_id           => l_adr_transaction_coa_id
131383   , p_accounting_coa_id            => l_adr_accounting_coa_id
131384   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
131385   , p_adr_type_code                => 'S'
131386   , p_component_type               => l_component_type
131387   , p_component_code               => l_component_code
131388   , p_component_type_code          => l_component_type_code
131389   , p_component_appl_id            => l_component_appl_id
131390   , p_amb_context_code             => l_amb_context_code
131391   , p_side                         => 'NA'
131392   );
131393 
131394 
131395    --
131396    --
131397    END IF;
131398    --
131399    -- Bug 4922099
131400    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131401           (NVL(l_enc_upg_option, 'N') = 'O')
131402         ) AND
131403         (l_bflow_method_code = 'PRIOR_ENTRY')
131404       )
131405    THEN
131406       IF
131407       --
131408       1 = 2
131409       --
131410       THEN
131411       xla_accounting_err_pkg.build_message
131412                                     (p_appli_s_name            => 'XLA'
131413                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131414                                     ,p_token_1                 => 'LINE_NUMBER'
131415                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
131416                                     ,p_token_2                 => 'LINE_TYPE_NAME'
131417                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
131418                                                                              l_component_type
131419                                                                             ,l_component_code
131420                                                                             ,l_component_type_code
131421                                                                             ,l_component_appl_id
131422                                                                             ,l_amb_context_code
131423                                                                             ,l_entity_code
131424                                                                             ,l_event_class_code
131425                                                                            )
131426                                     ,p_token_3                 => 'OWNER'
131427                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
131428                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
131429                                                                           ,p_lookup_code    => l_component_type_code
131430                                                                          )
131431                                     ,p_token_4                 => 'PRODUCT_NAME'
131432                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131433                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131434                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131435                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131436                                     ,p_ae_header_id            =>  NULL
131437                                        );
131438 
131439         IF (C_LEVEL_ERROR>= g_log_level) THEN
131440                  trace
131441                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131442                       ,p_level    => C_LEVEL_ERROR
131443                       ,p_module   => l_log_module);
131444         END IF;
131445       END IF;
131446    END IF;
131447    --
131448    --
131449    ------------------------------------------------------------------------------------------------
131450    -- 4219869 Business Flow
131451    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131452    -- Prior Entry.  Currently, the following code is always generated.
131453    ------------------------------------------------------------------------------------------------
131454    XLA_AE_LINES_PKG.ValidateCurrentLine;
131455 
131456    ------------------------------------------------------------------------------------
131457    -- 4219869 Business Flow
131458    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131459    ------------------------------------------------------------------------------------
131460    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131461 
131462    ----------------------------------------------------------------------------------
131463    -- 4219869 Business Flow
131464    -- Update journal entry status -- Need to generate this within IF <condition>
131465    ----------------------------------------------------------------------------------
131466    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131467          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131468          ,p_balance_type_code => l_balance_type_code
131469          );
131470 
131471    -------------------------------------------------------------------------------------------
131472    -- 4262811 - Generate the Accrual Reversal lines
131473    -------------------------------------------------------------------------------------------
131474    BEGIN
131475       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131476                               (g_array_event(p_event_id).array_value_num('header_index'));
131477       IF l_acc_rev_flag IS NULL THEN
131478          l_acc_rev_flag := 'N';
131479       END IF;
131480    EXCEPTION
131481       WHEN OTHERS THEN
131482          l_acc_rev_flag := 'N';
131483    END;
131484    --
131485    IF (l_acc_rev_flag = 'Y') THEN
131486 
131487        -- 4645092  ------------------------------------------------------------------------------
131488        -- To allow MPA report to determine if it should generate report process
131489        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131490        ------------------------------------------------------------------------------------------
131491 
131492        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131493        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131494    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
131495    -- call ADRs
131496    -- Bug 4922099
131497    --
131498    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131499         (NVL(l_actual_upg_option, 'N') = 'O') OR
131500         (NVL(l_enc_upg_option, 'N') = 'O')
131501       )
131502    THEN
131503    NULL;
131504    --
131505    --
131506    
131507   l_ccid := AcctDerRule_28(
131508            p_application_id           => p_application_id
131509          , p_ae_header_id             => l_ae_header_id 
131510 , p_source_15 => p_source_15
131511 , p_source_41 => p_source_41
131512 , p_source_42 => p_source_42
131513 , p_source_43 => p_source_43
131514 , p_source_44 => p_source_44
131515 , p_source_45 => p_source_45
131516          , x_transaction_coa_id       => l_adr_transaction_coa_id
131517          , x_accounting_coa_id        => l_adr_accounting_coa_id
131518          , x_value_type_code          => l_adr_value_type_code
131519          , p_side                     => 'NA'
131520    );
131521 
131522    xla_ae_lines_pkg.set_ccid(
131523     p_code_combination_id          => l_ccid
131524   , p_value_type_code              => l_adr_value_type_code
131525   , p_transaction_coa_id           => l_adr_transaction_coa_id
131526   , p_accounting_coa_id            => l_adr_accounting_coa_id
131527   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
131528   , p_adr_type_code                => 'S'
131529   , p_component_type               => l_component_type
131530   , p_component_code               => l_component_code
131531   , p_component_type_code          => l_component_type_code
131532   , p_component_appl_id            => l_component_appl_id
131533   , p_amb_context_code             => l_amb_context_code
131534   , p_side                         => 'NA'
131535   );
131536 
131537 
131538    --
131539    --
131540    END IF;
131541 
131542        --
131543        -- Update the line information that should be overwritten
131544        --
131545        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131546                                          p_header_num   => 1);
131547        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
131548 
131549        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131550 
131551        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
131552           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131553        END IF;
131554 
131555       --
131556       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131557       --
131558       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131559           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
131560       ELSE
131561           ---------------------------------------------------------------------------------------------------
131562           -- 4262811a Switch Sign
131563           ---------------------------------------------------------------------------------------------------
131564           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
131565           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131566                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131567           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131568                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131569           -- 5132302
131570           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131571                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131572 
131573       END IF;
131574 
131575       -- 4955764
131576       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131577       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131578 
131579 
131580       XLA_AE_LINES_PKG.ValidateCurrentLine;
131581       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131582 
131583       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131584                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131585                ,p_balance_type_code => l_balance_type_code);
131586 
131587    END IF;
131588 
131589    -----------------------------------------------------------------------------------------
131590    -- 4262811 Multiperiod Accounting
131591    -----------------------------------------------------------------------------------------
131592      -- No MPA option is assigned.
131593 
131594 
131595 END IF;
131596 END IF;
131597 --
131598 
131599 --
131600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131601    trace
131602       (p_msg      => 'END of AcctLineType_251'
131603       ,p_level    => C_LEVEL_PROCEDURE
131604       ,p_module   => l_log_module);
131605 END IF;
131606 --
131607 EXCEPTION
131608   WHEN xla_exceptions_pkg.application_exception THEN
131609       RAISE;
131610   WHEN OTHERS THEN
131611        xla_exceptions_pkg.raise_message
131612            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_251');
131613 END AcctLineType_251;
131614 --
131615 
131616 ---------------------------------------
131617 --
131618 -- PRIVATE FUNCTION
131619 --         AcctLineType_252
131620 --
131621 ---------------------------------------
131622 PROCEDURE AcctLineType_252 (
131623   p_application_id        IN NUMBER
131624  ,p_event_id              IN NUMBER
131625  ,p_calculate_acctd_flag  IN VARCHAR2
131626  ,p_calculate_g_l_flag    IN VARCHAR2
131627  ,p_actual_flag           IN OUT VARCHAR2
131628  ,p_balance_type_code     OUT VARCHAR2
131629  ,p_gain_or_loss_ref      OUT VARCHAR2
131630  
131631 --TRANSACTION_ID
131632  , p_source_1            IN NUMBER
131633 --Item Concatenated Segments
131634  , p_source_2            IN VARCHAR2
131635 --Transaction Quantity
131636  , p_source_3            IN NUMBER
131637 --Transaction Unit of Measure Code
131638  , p_source_4            IN VARCHAR2
131639 --Inventory Transaction Type Description
131640  , p_source_5            IN VARCHAR2
131641 --Cost Element Name
131642  , p_source_15            IN NUMBER
131643 --Product Line Accounting Category Material Account
131644  , p_source_41            IN NUMBER
131645 --Product Line Accounting Category Material Overhead Account
131646  , p_source_42            IN NUMBER
131647 --Product Line Accounting Category Resource Account
131648  , p_source_43            IN NUMBER
131649 --Product Line Accounting Category Outside Processing Account
131650  , p_source_44            IN NUMBER
131651 --Product Line Accounting Category Overhead Account
131652  , p_source_45            IN NUMBER
131653 --DISTRIBUTION_IDENTIFIER
131654  , p_source_84            IN NUMBER
131655 --Distribution Type
131656  , p_source_85            IN VARCHAR2
131657  , p_source_85_meaning    IN VARCHAR2
131658 --Entered Currency Code
131659  , p_source_88            IN VARCHAR2
131660 --Entered Amount
131661  , p_source_91            IN NUMBER
131662 --Currency Conversion Date
131663  , p_source_92            IN DATE
131664 --Currency Conversion Rate
131665  , p_source_93            IN NUMBER
131666 --Currency Conversion Type
131667  , p_source_94            IN VARCHAR2
131668 --Accounted Amount
131669  , p_source_95            IN NUMBER
131670 --Accounting Line Type
131671  , p_source_97            IN NUMBER
131672 --Organization Code
131673  , p_source_108            IN VARCHAR2
131674 )
131675 IS
131676 
131677 l_component_type              VARCHAR2(80);
131678 l_component_code              VARCHAR2(30);
131679 l_component_type_code         VARCHAR2(1);
131680 l_component_appl_id           INTEGER;
131681 l_amb_context_code            VARCHAR2(30);
131682 l_entity_code                 VARCHAR2(30);
131683 l_event_class_code            VARCHAR2(30);
131684 l_ae_header_id                NUMBER;
131685 l_event_type_code             VARCHAR2(30);
131686 l_line_definition_code        VARCHAR2(30);
131687 l_line_definition_owner_code  VARCHAR2(1);
131688 --
131689 -- adr variables
131690 l_segment                     VARCHAR2(30);
131691 l_ccid                        NUMBER;
131692 l_adr_transaction_coa_id      NUMBER;
131693 l_adr_accounting_coa_id       NUMBER;
131694 l_adr_flexfield_segment_code  VARCHAR2(30);
131695 l_adr_flex_value_set_id       NUMBER;
131696 l_adr_value_type_code         VARCHAR2(30);
131697 l_adr_value_combination_id    NUMBER;
131698 l_adr_value_segment_code      VARCHAR2(30);
131699 
131700 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
131701 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
131702 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
131703 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
131704 
131705 -- 4262811 Variables ------------------------------------------------------------------------------------------
131706 l_entered_amt_idx             NUMBER;
131707 l_accted_amt_idx              NUMBER;
131708 l_acc_rev_flag                VARCHAR2(1);
131709 l_accrual_line_num            NUMBER;
131710 l_tmp_amt                     NUMBER;
131711 l_acc_rev_natural_side_code   VARCHAR2(1);
131712 
131713 l_num_entries                 NUMBER;
131714 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
131715 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
131716 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
131717 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
131718 l_recog_line_1                NUMBER;
131719 l_recog_line_2                NUMBER;
131720 
131721 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
131722 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
131723 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
131724 
131725 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131726 
131727 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
131728 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
131729 
131730 ---------------------------------------------------------------------------------------------------------------
131731 
131732 
131733 --
131734 -- bulk performance
131735 --
131736 l_balance_type_code           VARCHAR2(1);
131737 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
131738 l_log_module                  VARCHAR2(240);
131739 
131740 --
131741 -- Upgrade strategy
131742 --
131743 l_actual_upg_option           VARCHAR2(1);
131744 l_enc_upg_option           VARCHAR2(1);
131745 
131746 --
131747 BEGIN
131748 --
131749 IF g_log_enabled THEN
131750       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_252';
131751 END IF;
131752 --
131753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131754 
131755       trace
131756          (p_msg      => 'BEGIN of AcctLineType_252'
131757          ,p_level    => C_LEVEL_PROCEDURE
131758          ,p_module   => l_log_module);
131759 
131760 END IF;
131761 --
131762 l_component_type             := 'AMB_JLT';
131763 l_component_code             := 'INVENTORY_VALUATION';
131764 l_component_type_code        := 'S';
131765 l_component_appl_id          :=  707;
131766 l_amb_context_code           := 'DEFAULT';
131767 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
131768 l_event_class_code           := 'USER_DEFINE';
131769 l_event_type_code            := 'UMISC_ISSUE';
131770 l_line_definition_owner_code := 'S';
131771 l_line_definition_code       := 'PI_USER_ISSUE';
131772 --
131773 l_balance_type_code          := 'A';
131774 l_segment                     := NULL;
131775 l_ccid                        := NULL;
131776 l_adr_transaction_coa_id      := NULL;
131777 l_adr_accounting_coa_id       := NULL;
131778 l_adr_flexfield_segment_code  := NULL;
131779 l_adr_flex_value_set_id       := NULL;
131780 l_adr_value_type_code         := NULL;
131781 l_adr_value_combination_id    := NULL;
131782 l_adr_value_segment_code      := NULL;
131783 
131784 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
131785 l_bflow_class_code           := '';    -- 4219869 Business Flow
131786 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
131787 l_budgetary_control_flag     := 'N';
131788 
131789 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
131790 l_bflow_applied_to_amt       := NULL; -- 5132302
131791 l_entered_amt_idx            := NULL;          -- 4262811
131792 l_accted_amt_idx             := NULL;          -- 4262811
131793 l_acc_rev_flag               := NULL;          -- 4262811
131794 l_accrual_line_num           := NULL;          -- 4262811
131795 l_tmp_amt                    := NULL;          -- 4262811
131796 --
131797  
131798 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
131799     l_balance_type_code <> 'B' THEN
131800 IF NVL(p_source_97,9E125) =  1
131801  THEN 
131802 
131803    --
131804    XLA_AE_LINES_PKG.SetNewLine;
131805 
131806    p_balance_type_code          := l_balance_type_code;
131807    -- set the flag so later we will know whether the gain loss line needs to be created
131808    
131809    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
131810      p_actual_flag :='A';
131811    END IF;
131812 
131813    --
131814    -- bulk performance
131815    --
131816    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
131817                                       p_header_num   => 0); -- 4262811
131818    --
131819    -- set accounting line options
131820    --
131821    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
131822            p_natural_side_code          => 'D'
131823          , p_gain_or_loss_flag          => 'N'
131824          , p_gl_transfer_mode_code      => 'S'
131825          , p_acct_entry_type_code       => 'A'
131826          , p_switch_side_flag           => 'Y'
131827          , p_merge_duplicate_code       => 'N'
131828          );
131829    --
131830    l_acc_rev_natural_side_code := 'C';  -- 4262811
131831    -- 
131832    --
131833    -- set accounting line type info
131834    --
131835    xla_ae_lines_pkg.SetAcctLineType
131836       (p_component_type             => l_component_type
131837       ,p_event_type_code            => l_event_type_code
131838       ,p_line_definition_owner_code => l_line_definition_owner_code
131839       ,p_line_definition_code       => l_line_definition_code
131840       ,p_accounting_line_code       => l_component_code
131841       ,p_accounting_line_type_code  => l_component_type_code
131842       ,p_accounting_line_appl_id    => l_component_appl_id
131843       ,p_amb_context_code           => l_amb_context_code
131844       ,p_entity_code                => l_entity_code
131845       ,p_event_class_code           => l_event_class_code);
131846    --
131847    -- set accounting class
131848    --
131849    xla_ae_lines_pkg.SetAcctClass(
131850            p_accounting_class_code  => 'INVENTORY_VALUATION'
131851          , p_ae_header_id           => l_ae_header_id
131852          );
131853 
131854    --
131855    -- set rounding class
131856    --
131857    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131858                       'INVENTORY_VALUATION';
131859 
131860    --
131861    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131862    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131863    --
131864    -- bulk performance
131865    --
131866    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131867 
131868    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131869       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131870 
131871    -- 4955764
131872    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131873       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131874 
131875    -- 4458381 Public Sector Enh
131876    
131877    --
131878    -- set accounting attributes for the line type
131879    --
131880    l_entered_amt_idx := 3;
131881    l_accted_amt_idx  := 8;
131882    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
131883    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131884    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
131885    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131886    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
131887    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131888    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
131889    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131890    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
131891    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131892    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
131893    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131894    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
131895    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131896    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
131897    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131898    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
131899 
131900    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131901    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131902 
131903    ---------------------------------------------------------------------------------------------------------------
131904    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131905    ---------------------------------------------------------------------------------------------------------------
131906    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131907 
131908    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131909    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131910 
131911    IF xla_accounting_cache_pkg.GetValueChar
131912          (p_source_code         => 'LEDGER_CATEGORY_CODE'
131913          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131914    AND l_bflow_method_code = 'PRIOR_ENTRY'
131915 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131916    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131917          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131918        )
131919    THEN
131920          xla_ae_lines_pkg.BflowUpgEntry
131921            (p_business_method_code    => l_bflow_method_code
131922            ,p_business_class_code     => l_bflow_class_code
131923            ,p_balance_type            => l_balance_type_code);
131924    ELSE
131925       NULL;
131926 -- No business flow processing for business flow method of NONE.
131927    END IF;
131928 
131929    --
131930    -- call analytical criteria
131931    --
131932    
131933 
131934 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
131935 xla_ae_lines_pkg.SetAnalyticalCriteria(
131936    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
131937  , p_analytical_criterion_owner   => 'S'
131938  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
131939  , p_amb_context_code             => 'DEFAULT'
131940  , p_balancing_flag               => 'Y'
131941  
131942  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
131943  , p_analytical_detail_num_1     =>  NULL
131944  , p_analytical_detail_date_1    =>  NULL
131945 
131946  , p_ae_header_id                 => l_ae_header_id
131947 )
131948 ;
131949 --
131950 
131951    --
131952    -- call description
131953    --
131954    
131955 xla_ae_lines_pkg.SetLineDescription(
131956    p_ae_header_id => l_ae_header_id
131957   ,p_description  => Description_1 (
131958      p_application_id         => p_application_id
131959    , p_ae_header_id           => l_ae_header_id 
131960 , p_source_1 => p_source_1
131961 , p_source_2 => p_source_2
131962 , p_source_3 => p_source_3
131963 , p_source_4 => p_source_4
131964 , p_source_5 => p_source_5
131965    )
131966 );
131967 
131968 
131969    --
131970    -- call ADRs
131971    -- Bug 4922099
131972    --
131973    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131974         (NVL(l_actual_upg_option, 'N') = 'O') OR
131975         (NVL(l_enc_upg_option, 'N') = 'O')
131976       )
131977    THEN
131978    NULL;
131979    --
131980    --
131981    
131982   l_ccid := AcctDerRule_28(
131983            p_application_id           => p_application_id
131984          , p_ae_header_id             => l_ae_header_id 
131985 , p_source_15 => p_source_15
131986 , p_source_41 => p_source_41
131987 , p_source_42 => p_source_42
131988 , p_source_43 => p_source_43
131989 , p_source_44 => p_source_44
131990 , p_source_45 => p_source_45
131991          , x_transaction_coa_id       => l_adr_transaction_coa_id
131992          , x_accounting_coa_id        => l_adr_accounting_coa_id
131993          , x_value_type_code          => l_adr_value_type_code
131994          , p_side                     => 'NA'
131995    );
131996 
131997    xla_ae_lines_pkg.set_ccid(
131998     p_code_combination_id          => l_ccid
131999   , p_value_type_code              => l_adr_value_type_code
132000   , p_transaction_coa_id           => l_adr_transaction_coa_id
132001   , p_accounting_coa_id            => l_adr_accounting_coa_id
132002   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
132003   , p_adr_type_code                => 'S'
132004   , p_component_type               => l_component_type
132005   , p_component_code               => l_component_code
132006   , p_component_type_code          => l_component_type_code
132007   , p_component_appl_id            => l_component_appl_id
132008   , p_amb_context_code             => l_amb_context_code
132009   , p_side                         => 'NA'
132010   );
132011 
132012 
132013    --
132014    --
132015    END IF;
132016    --
132017    -- Bug 4922099
132018    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132019           (NVL(l_enc_upg_option, 'N') = 'O')
132020         ) AND
132021         (l_bflow_method_code = 'PRIOR_ENTRY')
132022       )
132023    THEN
132024       IF
132025       --
132026       1 = 2
132027       --
132028       THEN
132029       xla_accounting_err_pkg.build_message
132030                                     (p_appli_s_name            => 'XLA'
132031                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132032                                     ,p_token_1                 => 'LINE_NUMBER'
132033                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
132034                                     ,p_token_2                 => 'LINE_TYPE_NAME'
132035                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
132036                                                                              l_component_type
132037                                                                             ,l_component_code
132038                                                                             ,l_component_type_code
132039                                                                             ,l_component_appl_id
132040                                                                             ,l_amb_context_code
132041                                                                             ,l_entity_code
132042                                                                             ,l_event_class_code
132043                                                                            )
132044                                     ,p_token_3                 => 'OWNER'
132045                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
132046                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
132047                                                                           ,p_lookup_code    => l_component_type_code
132048                                                                          )
132049                                     ,p_token_4                 => 'PRODUCT_NAME'
132050                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132051                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132052                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132053                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132054                                     ,p_ae_header_id            =>  NULL
132055                                        );
132056 
132057         IF (C_LEVEL_ERROR>= g_log_level) THEN
132058                  trace
132059                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132060                       ,p_level    => C_LEVEL_ERROR
132061                       ,p_module   => l_log_module);
132062         END IF;
132063       END IF;
132064    END IF;
132065    --
132066    --
132067    ------------------------------------------------------------------------------------------------
132068    -- 4219869 Business Flow
132069    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132070    -- Prior Entry.  Currently, the following code is always generated.
132071    ------------------------------------------------------------------------------------------------
132072    XLA_AE_LINES_PKG.ValidateCurrentLine;
132073 
132074    ------------------------------------------------------------------------------------
132075    -- 4219869 Business Flow
132076    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132077    ------------------------------------------------------------------------------------
132078    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132079 
132080    ----------------------------------------------------------------------------------
132081    -- 4219869 Business Flow
132082    -- Update journal entry status -- Need to generate this within IF <condition>
132083    ----------------------------------------------------------------------------------
132084    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132085          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132086          ,p_balance_type_code => l_balance_type_code
132087          );
132088 
132089    -------------------------------------------------------------------------------------------
132090    -- 4262811 - Generate the Accrual Reversal lines
132091    -------------------------------------------------------------------------------------------
132092    BEGIN
132093       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132094                               (g_array_event(p_event_id).array_value_num('header_index'));
132095       IF l_acc_rev_flag IS NULL THEN
132096          l_acc_rev_flag := 'N';
132097       END IF;
132098    EXCEPTION
132099       WHEN OTHERS THEN
132100          l_acc_rev_flag := 'N';
132101    END;
132102    --
132103    IF (l_acc_rev_flag = 'Y') THEN
132104 
132105        -- 4645092  ------------------------------------------------------------------------------
132106        -- To allow MPA report to determine if it should generate report process
132107        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132108        ------------------------------------------------------------------------------------------
132109 
132110        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132111        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132112    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
132113    -- call ADRs
132114    -- Bug 4922099
132115    --
132116    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132117         (NVL(l_actual_upg_option, 'N') = 'O') OR
132118         (NVL(l_enc_upg_option, 'N') = 'O')
132119       )
132120    THEN
132121    NULL;
132122    --
132123    --
132124    
132125   l_ccid := AcctDerRule_28(
132126            p_application_id           => p_application_id
132127          , p_ae_header_id             => l_ae_header_id 
132128 , p_source_15 => p_source_15
132129 , p_source_41 => p_source_41
132130 , p_source_42 => p_source_42
132131 , p_source_43 => p_source_43
132132 , p_source_44 => p_source_44
132133 , p_source_45 => p_source_45
132134          , x_transaction_coa_id       => l_adr_transaction_coa_id
132135          , x_accounting_coa_id        => l_adr_accounting_coa_id
132136          , x_value_type_code          => l_adr_value_type_code
132137          , p_side                     => 'NA'
132138    );
132139 
132140    xla_ae_lines_pkg.set_ccid(
132141     p_code_combination_id          => l_ccid
132142   , p_value_type_code              => l_adr_value_type_code
132143   , p_transaction_coa_id           => l_adr_transaction_coa_id
132144   , p_accounting_coa_id            => l_adr_accounting_coa_id
132145   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
132146   , p_adr_type_code                => 'S'
132147   , p_component_type               => l_component_type
132148   , p_component_code               => l_component_code
132149   , p_component_type_code          => l_component_type_code
132150   , p_component_appl_id            => l_component_appl_id
132151   , p_amb_context_code             => l_amb_context_code
132152   , p_side                         => 'NA'
132153   );
132154 
132155 
132156    --
132157    --
132158    END IF;
132159 
132160        --
132161        -- Update the line information that should be overwritten
132162        --
132163        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132164                                          p_header_num   => 1);
132165        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
132166 
132167        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132168 
132169        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
132170           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132171        END IF;
132172 
132173       --
132174       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132175       --
132176       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132177           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
132178       ELSE
132179           ---------------------------------------------------------------------------------------------------
132180           -- 4262811a Switch Sign
132181           ---------------------------------------------------------------------------------------------------
132182           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
132183           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132184                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132185           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132186                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132187           -- 5132302
132188           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132189                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132190 
132191       END IF;
132192 
132193       -- 4955764
132194       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132195       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132196 
132197 
132198       XLA_AE_LINES_PKG.ValidateCurrentLine;
132199       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132200 
132201       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132202                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132203                ,p_balance_type_code => l_balance_type_code);
132204 
132205    END IF;
132206 
132207    -----------------------------------------------------------------------------------------
132208    -- 4262811 Multiperiod Accounting
132209    -----------------------------------------------------------------------------------------
132210      -- No MPA option is assigned.
132211 
132212 
132213 END IF;
132214 END IF;
132215 --
132216 
132217 --
132218 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132219    trace
132220       (p_msg      => 'END of AcctLineType_252'
132221       ,p_level    => C_LEVEL_PROCEDURE
132222       ,p_module   => l_log_module);
132223 END IF;
132224 --
132225 EXCEPTION
132226   WHEN xla_exceptions_pkg.application_exception THEN
132227       RAISE;
132228   WHEN OTHERS THEN
132229        xla_exceptions_pkg.raise_message
132230            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_252');
132231 END AcctLineType_252;
132232 --
132233 
132234 ---------------------------------------
132235 --
132236 -- PRIVATE FUNCTION
132237 --         AcctLineType_253
132238 --
132239 ---------------------------------------
132240 PROCEDURE AcctLineType_253 (
132241   p_application_id        IN NUMBER
132242  ,p_event_id              IN NUMBER
132243  ,p_calculate_acctd_flag  IN VARCHAR2
132244  ,p_calculate_g_l_flag    IN VARCHAR2
132245  ,p_actual_flag           IN OUT VARCHAR2
132246  ,p_balance_type_code     OUT VARCHAR2
132247  ,p_gain_or_loss_ref      OUT VARCHAR2
132248  
132249 --Cost Element Name
132250  , p_source_15            IN NUMBER
132251 --Product Line Accounting Category Material Account
132252  , p_source_41            IN NUMBER
132253 --Product Line Accounting Category Material Overhead Account
132254  , p_source_42            IN NUMBER
132255 --Product Line Accounting Category Resource Account
132256  , p_source_43            IN NUMBER
132257 --Product Line Accounting Category Outside Processing Account
132258  , p_source_44            IN NUMBER
132259 --Product Line Accounting Category Overhead Account
132260  , p_source_45            IN NUMBER
132261 --DISTRIBUTION_IDENTIFIER
132262  , p_source_84            IN NUMBER
132263 --Distribution Type
132264  , p_source_85            IN VARCHAR2
132265  , p_source_85_meaning    IN VARCHAR2
132266 --Entered Currency Code
132267  , p_source_88            IN VARCHAR2
132268 --Entered Amount
132269  , p_source_91            IN NUMBER
132270 --Currency Conversion Date
132271  , p_source_92            IN DATE
132272 --Currency Conversion Rate
132273  , p_source_93            IN NUMBER
132274 --Currency Conversion Type
132275  , p_source_94            IN VARCHAR2
132276 --Accounted Amount
132277  , p_source_95            IN NUMBER
132278 --Accounting Line Type
132279  , p_source_97            IN NUMBER
132280 --Organization Code
132281  , p_source_108            IN VARCHAR2
132282 )
132283 IS
132284 
132285 l_component_type              VARCHAR2(80);
132286 l_component_code              VARCHAR2(30);
132287 l_component_type_code         VARCHAR2(1);
132288 l_component_appl_id           INTEGER;
132289 l_amb_context_code            VARCHAR2(30);
132290 l_entity_code                 VARCHAR2(30);
132291 l_event_class_code            VARCHAR2(30);
132292 l_ae_header_id                NUMBER;
132293 l_event_type_code             VARCHAR2(30);
132294 l_line_definition_code        VARCHAR2(30);
132295 l_line_definition_owner_code  VARCHAR2(1);
132296 --
132297 -- adr variables
132298 l_segment                     VARCHAR2(30);
132299 l_ccid                        NUMBER;
132300 l_adr_transaction_coa_id      NUMBER;
132301 l_adr_accounting_coa_id       NUMBER;
132302 l_adr_flexfield_segment_code  VARCHAR2(30);
132303 l_adr_flex_value_set_id       NUMBER;
132304 l_adr_value_type_code         VARCHAR2(30);
132305 l_adr_value_combination_id    NUMBER;
132306 l_adr_value_segment_code      VARCHAR2(30);
132307 
132308 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
132309 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
132310 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
132311 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
132312 
132313 -- 4262811 Variables ------------------------------------------------------------------------------------------
132314 l_entered_amt_idx             NUMBER;
132315 l_accted_amt_idx              NUMBER;
132316 l_acc_rev_flag                VARCHAR2(1);
132317 l_accrual_line_num            NUMBER;
132318 l_tmp_amt                     NUMBER;
132319 l_acc_rev_natural_side_code   VARCHAR2(1);
132320 
132321 l_num_entries                 NUMBER;
132322 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
132323 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
132324 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
132325 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
132326 l_recog_line_1                NUMBER;
132327 l_recog_line_2                NUMBER;
132328 
132329 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
132330 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
132331 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
132332 
132333 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132334 
132335 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
132336 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
132337 
132338 ---------------------------------------------------------------------------------------------------------------
132339 
132340 
132341 --
132342 -- bulk performance
132343 --
132344 l_balance_type_code           VARCHAR2(1);
132345 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
132346 l_log_module                  VARCHAR2(240);
132347 
132348 --
132349 -- Upgrade strategy
132350 --
132351 l_actual_upg_option           VARCHAR2(1);
132352 l_enc_upg_option           VARCHAR2(1);
132353 
132354 --
132355 BEGIN
132356 --
132357 IF g_log_enabled THEN
132358       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_253';
132359 END IF;
132360 --
132361 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132362 
132363       trace
132364          (p_msg      => 'BEGIN of AcctLineType_253'
132365          ,p_level    => C_LEVEL_PROCEDURE
132366          ,p_module   => l_log_module);
132367 
132368 END IF;
132369 --
132370 l_component_type             := 'AMB_JLT';
132371 l_component_code             := 'INVENTORY_VALUATION';
132372 l_component_type_code        := 'S';
132373 l_component_appl_id          :=  707;
132374 l_amb_context_code           := 'DEFAULT';
132375 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
132376 l_event_class_code           := 'USER_DEFINE';
132377 l_event_type_code            := 'UMISC_RCPT';
132378 l_line_definition_owner_code := 'S';
132379 l_line_definition_code       := 'PI_USER_RCPT';
132380 --
132381 l_balance_type_code          := 'A';
132382 l_segment                     := NULL;
132383 l_ccid                        := NULL;
132384 l_adr_transaction_coa_id      := NULL;
132385 l_adr_accounting_coa_id       := NULL;
132386 l_adr_flexfield_segment_code  := NULL;
132387 l_adr_flex_value_set_id       := NULL;
132388 l_adr_value_type_code         := NULL;
132389 l_adr_value_combination_id    := NULL;
132390 l_adr_value_segment_code      := NULL;
132391 
132392 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
132393 l_bflow_class_code           := '';    -- 4219869 Business Flow
132394 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
132395 l_budgetary_control_flag     := 'N';
132396 
132397 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
132398 l_bflow_applied_to_amt       := NULL; -- 5132302
132399 l_entered_amt_idx            := NULL;          -- 4262811
132400 l_accted_amt_idx             := NULL;          -- 4262811
132401 l_acc_rev_flag               := NULL;          -- 4262811
132402 l_accrual_line_num           := NULL;          -- 4262811
132403 l_tmp_amt                    := NULL;          -- 4262811
132404 --
132405  
132406 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132407     l_balance_type_code <> 'B' THEN
132408 IF NVL(p_source_97,9E125) =  1
132409  THEN 
132410 
132411    --
132412    XLA_AE_LINES_PKG.SetNewLine;
132413 
132414    p_balance_type_code          := l_balance_type_code;
132415    -- set the flag so later we will know whether the gain loss line needs to be created
132416    
132417    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132418      p_actual_flag :='A';
132419    END IF;
132420 
132421    --
132422    -- bulk performance
132423    --
132424    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132425                                       p_header_num   => 0); -- 4262811
132426    --
132427    -- set accounting line options
132428    --
132429    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132430            p_natural_side_code          => 'D'
132431          , p_gain_or_loss_flag          => 'N'
132432          , p_gl_transfer_mode_code      => 'S'
132433          , p_acct_entry_type_code       => 'A'
132434          , p_switch_side_flag           => 'Y'
132435          , p_merge_duplicate_code       => 'N'
132436          );
132437    --
132438    l_acc_rev_natural_side_code := 'C';  -- 4262811
132439    -- 
132440    --
132441    -- set accounting line type info
132442    --
132443    xla_ae_lines_pkg.SetAcctLineType
132444       (p_component_type             => l_component_type
132445       ,p_event_type_code            => l_event_type_code
132446       ,p_line_definition_owner_code => l_line_definition_owner_code
132447       ,p_line_definition_code       => l_line_definition_code
132448       ,p_accounting_line_code       => l_component_code
132449       ,p_accounting_line_type_code  => l_component_type_code
132450       ,p_accounting_line_appl_id    => l_component_appl_id
132451       ,p_amb_context_code           => l_amb_context_code
132452       ,p_entity_code                => l_entity_code
132453       ,p_event_class_code           => l_event_class_code);
132454    --
132455    -- set accounting class
132456    --
132457    xla_ae_lines_pkg.SetAcctClass(
132458            p_accounting_class_code  => 'INVENTORY_VALUATION'
132459          , p_ae_header_id           => l_ae_header_id
132460          );
132461 
132462    --
132463    -- set rounding class
132464    --
132465    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132466                       'INVENTORY_VALUATION';
132467 
132468    --
132469    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132470    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132471    --
132472    -- bulk performance
132473    --
132474    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132475 
132476    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132477       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132478 
132479    -- 4955764
132480    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132481       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132482 
132483    -- 4458381 Public Sector Enh
132484    
132485    --
132486    -- set accounting attributes for the line type
132487    --
132488    l_entered_amt_idx := 3;
132489    l_accted_amt_idx  := 8;
132490    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
132491    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
132492    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
132493    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
132494    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
132495    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
132496    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
132497    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
132498    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
132499    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
132500    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
132501    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
132502    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
132503    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
132504    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
132505    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
132506    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
132507 
132508    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132509    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132510 
132511    ---------------------------------------------------------------------------------------------------------------
132512    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132513    ---------------------------------------------------------------------------------------------------------------
132514    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132515 
132516    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132517    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132518 
132519    IF xla_accounting_cache_pkg.GetValueChar
132520          (p_source_code         => 'LEDGER_CATEGORY_CODE'
132521          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132522    AND l_bflow_method_code = 'PRIOR_ENTRY'
132523 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132524    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132525          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132526        )
132527    THEN
132528          xla_ae_lines_pkg.BflowUpgEntry
132529            (p_business_method_code    => l_bflow_method_code
132530            ,p_business_class_code     => l_bflow_class_code
132531            ,p_balance_type            => l_balance_type_code);
132532    ELSE
132533       NULL;
132534 -- No business flow processing for business flow method of NONE.
132535    END IF;
132536 
132537    --
132538    -- call analytical criteria
132539    --
132540    
132541 
132542 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
132543 xla_ae_lines_pkg.SetAnalyticalCriteria(
132544    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
132545  , p_analytical_criterion_owner   => 'S'
132546  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
132547  , p_amb_context_code             => 'DEFAULT'
132548  , p_balancing_flag               => 'Y'
132549  
132550  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
132551  , p_analytical_detail_num_1     =>  NULL
132552  , p_analytical_detail_date_1    =>  NULL
132553 
132554  , p_ae_header_id                 => l_ae_header_id
132555 )
132556 ;
132557 --
132558 
132559    --
132560    -- call description
132561    --
132562    -- No description or it is inherited.
132563    --
132564    -- call ADRs
132565    -- Bug 4922099
132566    --
132567    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132568         (NVL(l_actual_upg_option, 'N') = 'O') OR
132569         (NVL(l_enc_upg_option, 'N') = 'O')
132570       )
132571    THEN
132572    NULL;
132573    --
132574    --
132575    
132576   l_ccid := AcctDerRule_28(
132577            p_application_id           => p_application_id
132578          , p_ae_header_id             => l_ae_header_id 
132579 , p_source_15 => p_source_15
132580 , p_source_41 => p_source_41
132581 , p_source_42 => p_source_42
132582 , p_source_43 => p_source_43
132583 , p_source_44 => p_source_44
132584 , p_source_45 => p_source_45
132585          , x_transaction_coa_id       => l_adr_transaction_coa_id
132586          , x_accounting_coa_id        => l_adr_accounting_coa_id
132587          , x_value_type_code          => l_adr_value_type_code
132588          , p_side                     => 'NA'
132589    );
132590 
132591    xla_ae_lines_pkg.set_ccid(
132592     p_code_combination_id          => l_ccid
132593   , p_value_type_code              => l_adr_value_type_code
132594   , p_transaction_coa_id           => l_adr_transaction_coa_id
132595   , p_accounting_coa_id            => l_adr_accounting_coa_id
132596   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
132597   , p_adr_type_code                => 'S'
132598   , p_component_type               => l_component_type
132599   , p_component_code               => l_component_code
132600   , p_component_type_code          => l_component_type_code
132601   , p_component_appl_id            => l_component_appl_id
132602   , p_amb_context_code             => l_amb_context_code
132603   , p_side                         => 'NA'
132604   );
132605 
132606 
132607    --
132608    --
132609    END IF;
132610    --
132611    -- Bug 4922099
132612    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132613           (NVL(l_enc_upg_option, 'N') = 'O')
132614         ) AND
132615         (l_bflow_method_code = 'PRIOR_ENTRY')
132616       )
132617    THEN
132618       IF
132619       --
132620       1 = 2
132621       --
132622       THEN
132623       xla_accounting_err_pkg.build_message
132624                                     (p_appli_s_name            => 'XLA'
132625                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132626                                     ,p_token_1                 => 'LINE_NUMBER'
132627                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
132628                                     ,p_token_2                 => 'LINE_TYPE_NAME'
132629                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
132630                                                                              l_component_type
132631                                                                             ,l_component_code
132632                                                                             ,l_component_type_code
132633                                                                             ,l_component_appl_id
132634                                                                             ,l_amb_context_code
132635                                                                             ,l_entity_code
132636                                                                             ,l_event_class_code
132637                                                                            )
132638                                     ,p_token_3                 => 'OWNER'
132639                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
132640                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
132641                                                                           ,p_lookup_code    => l_component_type_code
132642                                                                          )
132643                                     ,p_token_4                 => 'PRODUCT_NAME'
132644                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132645                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132646                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132647                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132648                                     ,p_ae_header_id            =>  NULL
132649                                        );
132650 
132651         IF (C_LEVEL_ERROR>= g_log_level) THEN
132652                  trace
132653                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132654                       ,p_level    => C_LEVEL_ERROR
132655                       ,p_module   => l_log_module);
132656         END IF;
132657       END IF;
132658    END IF;
132659    --
132660    --
132661    ------------------------------------------------------------------------------------------------
132662    -- 4219869 Business Flow
132663    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132664    -- Prior Entry.  Currently, the following code is always generated.
132665    ------------------------------------------------------------------------------------------------
132666    XLA_AE_LINES_PKG.ValidateCurrentLine;
132667 
132668    ------------------------------------------------------------------------------------
132669    -- 4219869 Business Flow
132670    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132671    ------------------------------------------------------------------------------------
132672    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132673 
132674    ----------------------------------------------------------------------------------
132675    -- 4219869 Business Flow
132676    -- Update journal entry status -- Need to generate this within IF <condition>
132677    ----------------------------------------------------------------------------------
132678    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132679          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132680          ,p_balance_type_code => l_balance_type_code
132681          );
132682 
132683    -------------------------------------------------------------------------------------------
132684    -- 4262811 - Generate the Accrual Reversal lines
132685    -------------------------------------------------------------------------------------------
132686    BEGIN
132687       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132688                               (g_array_event(p_event_id).array_value_num('header_index'));
132689       IF l_acc_rev_flag IS NULL THEN
132690          l_acc_rev_flag := 'N';
132691       END IF;
132692    EXCEPTION
132693       WHEN OTHERS THEN
132694          l_acc_rev_flag := 'N';
132695    END;
132696    --
132697    IF (l_acc_rev_flag = 'Y') THEN
132698 
132699        -- 4645092  ------------------------------------------------------------------------------
132700        -- To allow MPA report to determine if it should generate report process
132701        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132702        ------------------------------------------------------------------------------------------
132703 
132704        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132705        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132706    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
132707    -- call ADRs
132708    -- Bug 4922099
132709    --
132710    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132711         (NVL(l_actual_upg_option, 'N') = 'O') OR
132712         (NVL(l_enc_upg_option, 'N') = 'O')
132713       )
132714    THEN
132715    NULL;
132716    --
132717    --
132718    
132719   l_ccid := AcctDerRule_28(
132720            p_application_id           => p_application_id
132721          , p_ae_header_id             => l_ae_header_id 
132722 , p_source_15 => p_source_15
132723 , p_source_41 => p_source_41
132724 , p_source_42 => p_source_42
132725 , p_source_43 => p_source_43
132726 , p_source_44 => p_source_44
132727 , p_source_45 => p_source_45
132728          , x_transaction_coa_id       => l_adr_transaction_coa_id
132729          , x_accounting_coa_id        => l_adr_accounting_coa_id
132730          , x_value_type_code          => l_adr_value_type_code
132731          , p_side                     => 'NA'
132732    );
132733 
132734    xla_ae_lines_pkg.set_ccid(
132735     p_code_combination_id          => l_ccid
132736   , p_value_type_code              => l_adr_value_type_code
132737   , p_transaction_coa_id           => l_adr_transaction_coa_id
132738   , p_accounting_coa_id            => l_adr_accounting_coa_id
132739   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
132740   , p_adr_type_code                => 'S'
132741   , p_component_type               => l_component_type
132742   , p_component_code               => l_component_code
132743   , p_component_type_code          => l_component_type_code
132744   , p_component_appl_id            => l_component_appl_id
132745   , p_amb_context_code             => l_amb_context_code
132746   , p_side                         => 'NA'
132747   );
132748 
132749 
132750    --
132751    --
132752    END IF;
132753 
132754        --
132755        -- Update the line information that should be overwritten
132756        --
132757        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132758                                          p_header_num   => 1);
132759        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
132760 
132761        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132762 
132763        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
132764           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132765        END IF;
132766 
132767       --
132768       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132769       --
132770       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132771           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
132772       ELSE
132773           ---------------------------------------------------------------------------------------------------
132774           -- 4262811a Switch Sign
132775           ---------------------------------------------------------------------------------------------------
132776           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
132777           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132778                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132779           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132780                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132781           -- 5132302
132782           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132783                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132784 
132785       END IF;
132786 
132787       -- 4955764
132788       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132789       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132790 
132791 
132792       XLA_AE_LINES_PKG.ValidateCurrentLine;
132793       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132794 
132795       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132796                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132797                ,p_balance_type_code => l_balance_type_code);
132798 
132799    END IF;
132800 
132801    -----------------------------------------------------------------------------------------
132802    -- 4262811 Multiperiod Accounting
132803    -----------------------------------------------------------------------------------------
132804      -- No MPA option is assigned.
132805 
132806 
132807 END IF;
132808 END IF;
132809 --
132810 
132811 --
132812 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132813    trace
132814       (p_msg      => 'END of AcctLineType_253'
132815       ,p_level    => C_LEVEL_PROCEDURE
132816       ,p_module   => l_log_module);
132817 END IF;
132818 --
132819 EXCEPTION
132820   WHEN xla_exceptions_pkg.application_exception THEN
132821       RAISE;
132822   WHEN OTHERS THEN
132823        xla_exceptions_pkg.raise_message
132824            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_253');
132825 END AcctLineType_253;
132826 --
132827 
132828 ---------------------------------------
132829 --
132830 -- PRIVATE FUNCTION
132831 --         AcctLineType_254
132832 --
132833 ---------------------------------------
132834 PROCEDURE AcctLineType_254 (
132835   p_application_id        IN NUMBER
132836  ,p_event_id              IN NUMBER
132837  ,p_calculate_acctd_flag  IN VARCHAR2
132838  ,p_calculate_g_l_flag    IN VARCHAR2
132839  ,p_actual_flag           IN OUT VARCHAR2
132840  ,p_balance_type_code     OUT VARCHAR2
132841  ,p_gain_or_loss_ref      OUT VARCHAR2
132842  
132843 --TRANSACTION_ID
132844  , p_source_1            IN NUMBER
132845 --Item Concatenated Segments
132846  , p_source_2            IN VARCHAR2
132847 --Transaction Quantity
132848  , p_source_3            IN NUMBER
132849 --Transaction Unit of Measure Code
132850  , p_source_4            IN VARCHAR2
132851 --Inventory Transaction Type Description
132852  , p_source_5            IN VARCHAR2
132853 --Cost Element Name
132854  , p_source_15            IN NUMBER
132855 --Product Line Accounting Category Material Account
132856  , p_source_41            IN NUMBER
132857 --Product Line Accounting Category Material Overhead Account
132858  , p_source_42            IN NUMBER
132859 --Product Line Accounting Category Resource Account
132860  , p_source_43            IN NUMBER
132861 --Product Line Accounting Category Outside Processing Account
132862  , p_source_44            IN NUMBER
132863 --Product Line Accounting Category Overhead Account
132864  , p_source_45            IN NUMBER
132865 --DISTRIBUTION_IDENTIFIER
132866  , p_source_84            IN NUMBER
132867 --Distribution Type
132868  , p_source_85            IN VARCHAR2
132869  , p_source_85_meaning    IN VARCHAR2
132870 --Entered Currency Code
132871  , p_source_88            IN VARCHAR2
132872 --Entered Amount
132873  , p_source_91            IN NUMBER
132874 --Currency Conversion Date
132875  , p_source_92            IN DATE
132876 --Currency Conversion Rate
132877  , p_source_93            IN NUMBER
132878 --Currency Conversion Type
132879  , p_source_94            IN VARCHAR2
132880 --Accounted Amount
132881  , p_source_95            IN NUMBER
132882 --Accounting Line Type
132883  , p_source_97            IN NUMBER
132884 --Organization Code
132885  , p_source_108            IN VARCHAR2
132886 )
132887 IS
132888 
132889 l_component_type              VARCHAR2(80);
132890 l_component_code              VARCHAR2(30);
132891 l_component_type_code         VARCHAR2(1);
132892 l_component_appl_id           INTEGER;
132893 l_amb_context_code            VARCHAR2(30);
132894 l_entity_code                 VARCHAR2(30);
132895 l_event_class_code            VARCHAR2(30);
132896 l_ae_header_id                NUMBER;
132897 l_event_type_code             VARCHAR2(30);
132898 l_line_definition_code        VARCHAR2(30);
132899 l_line_definition_owner_code  VARCHAR2(1);
132900 --
132901 -- adr variables
132902 l_segment                     VARCHAR2(30);
132903 l_ccid                        NUMBER;
132904 l_adr_transaction_coa_id      NUMBER;
132905 l_adr_accounting_coa_id       NUMBER;
132906 l_adr_flexfield_segment_code  VARCHAR2(30);
132907 l_adr_flex_value_set_id       NUMBER;
132908 l_adr_value_type_code         VARCHAR2(30);
132909 l_adr_value_combination_id    NUMBER;
132910 l_adr_value_segment_code      VARCHAR2(30);
132911 
132912 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
132913 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
132914 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
132915 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
132916 
132917 -- 4262811 Variables ------------------------------------------------------------------------------------------
132918 l_entered_amt_idx             NUMBER;
132919 l_accted_amt_idx              NUMBER;
132920 l_acc_rev_flag                VARCHAR2(1);
132921 l_accrual_line_num            NUMBER;
132922 l_tmp_amt                     NUMBER;
132923 l_acc_rev_natural_side_code   VARCHAR2(1);
132924 
132925 l_num_entries                 NUMBER;
132926 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
132927 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
132928 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
132929 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
132930 l_recog_line_1                NUMBER;
132931 l_recog_line_2                NUMBER;
132932 
132933 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
132934 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
132935 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
132936 
132937 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132938 
132939 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
132940 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
132941 
132942 ---------------------------------------------------------------------------------------------------------------
132943 
132944 
132945 --
132946 -- bulk performance
132947 --
132948 l_balance_type_code           VARCHAR2(1);
132949 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
132950 l_log_module                  VARCHAR2(240);
132951 
132952 --
132953 -- Upgrade strategy
132954 --
132955 l_actual_upg_option           VARCHAR2(1);
132956 l_enc_upg_option           VARCHAR2(1);
132957 
132958 --
132959 BEGIN
132960 --
132961 IF g_log_enabled THEN
132962       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_254';
132963 END IF;
132964 --
132965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132966 
132967       trace
132968          (p_msg      => 'BEGIN of AcctLineType_254'
132969          ,p_level    => C_LEVEL_PROCEDURE
132970          ,p_module   => l_log_module);
132971 
132972 END IF;
132973 --
132974 l_component_type             := 'AMB_JLT';
132975 l_component_code             := 'INVENTORY_VALUATION';
132976 l_component_type_code        := 'S';
132977 l_component_appl_id          :=  707;
132978 l_amb_context_code           := 'DEFAULT';
132979 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
132980 l_event_class_code           := 'WIP_MTL';
132981 l_event_type_code            := 'WIP_NEG_COMP_RETURN';
132982 l_line_definition_owner_code := 'S';
132983 l_line_definition_code       := 'PI_WIP_NEG_COMP_RETURN';
132984 --
132985 l_balance_type_code          := 'A';
132986 l_segment                     := NULL;
132987 l_ccid                        := NULL;
132988 l_adr_transaction_coa_id      := NULL;
132989 l_adr_accounting_coa_id       := NULL;
132990 l_adr_flexfield_segment_code  := NULL;
132991 l_adr_flex_value_set_id       := NULL;
132992 l_adr_value_type_code         := NULL;
132993 l_adr_value_combination_id    := NULL;
132994 l_adr_value_segment_code      := NULL;
132995 
132996 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
132997 l_bflow_class_code           := '';    -- 4219869 Business Flow
132998 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
132999 l_budgetary_control_flag     := 'N';
133000 
133001 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
133002 l_bflow_applied_to_amt       := NULL; -- 5132302
133003 l_entered_amt_idx            := NULL;          -- 4262811
133004 l_accted_amt_idx             := NULL;          -- 4262811
133005 l_acc_rev_flag               := NULL;          -- 4262811
133006 l_accrual_line_num           := NULL;          -- 4262811
133007 l_tmp_amt                    := NULL;          -- 4262811
133008 --
133009  
133010 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133011     l_balance_type_code <> 'B' THEN
133012 IF NVL(p_source_97,9E125) =  1
133013  THEN 
133014 
133015    --
133016    XLA_AE_LINES_PKG.SetNewLine;
133017 
133018    p_balance_type_code          := l_balance_type_code;
133019    -- set the flag so later we will know whether the gain loss line needs to be created
133020    
133021    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133022      p_actual_flag :='A';
133023    END IF;
133024 
133025    --
133026    -- bulk performance
133027    --
133028    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133029                                       p_header_num   => 0); -- 4262811
133030    --
133031    -- set accounting line options
133032    --
133033    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133034            p_natural_side_code          => 'D'
133035          , p_gain_or_loss_flag          => 'N'
133036          , p_gl_transfer_mode_code      => 'S'
133037          , p_acct_entry_type_code       => 'A'
133038          , p_switch_side_flag           => 'Y'
133039          , p_merge_duplicate_code       => 'N'
133040          );
133041    --
133042    l_acc_rev_natural_side_code := 'C';  -- 4262811
133043    -- 
133044    --
133045    -- set accounting line type info
133046    --
133047    xla_ae_lines_pkg.SetAcctLineType
133048       (p_component_type             => l_component_type
133049       ,p_event_type_code            => l_event_type_code
133050       ,p_line_definition_owner_code => l_line_definition_owner_code
133051       ,p_line_definition_code       => l_line_definition_code
133052       ,p_accounting_line_code       => l_component_code
133053       ,p_accounting_line_type_code  => l_component_type_code
133054       ,p_accounting_line_appl_id    => l_component_appl_id
133055       ,p_amb_context_code           => l_amb_context_code
133056       ,p_entity_code                => l_entity_code
133057       ,p_event_class_code           => l_event_class_code);
133058    --
133059    -- set accounting class
133060    --
133061    xla_ae_lines_pkg.SetAcctClass(
133062            p_accounting_class_code  => 'INVENTORY_VALUATION'
133063          , p_ae_header_id           => l_ae_header_id
133064          );
133065 
133066    --
133067    -- set rounding class
133068    --
133069    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133070                       'INVENTORY_VALUATION';
133071 
133072    --
133073    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133074    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133075    --
133076    -- bulk performance
133077    --
133078    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133079 
133080    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133081       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133082 
133083    -- 4955764
133084    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133085       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133086 
133087    -- 4458381 Public Sector Enh
133088    
133089    --
133090    -- set accounting attributes for the line type
133091    --
133092    l_entered_amt_idx := 3;
133093    l_accted_amt_idx  := 8;
133094    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
133095    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133096    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
133097    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133098    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
133099    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133100    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
133101    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133102    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
133103    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133104    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
133105    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133106    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
133107    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133108    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
133109    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133110    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
133111 
133112    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133113    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133114 
133115    ---------------------------------------------------------------------------------------------------------------
133116    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133117    ---------------------------------------------------------------------------------------------------------------
133118    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133119 
133120    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133121    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133122 
133123    IF xla_accounting_cache_pkg.GetValueChar
133124          (p_source_code         => 'LEDGER_CATEGORY_CODE'
133125          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133126    AND l_bflow_method_code = 'PRIOR_ENTRY'
133127 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133128    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133129          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133130        )
133131    THEN
133132          xla_ae_lines_pkg.BflowUpgEntry
133133            (p_business_method_code    => l_bflow_method_code
133134            ,p_business_class_code     => l_bflow_class_code
133135            ,p_balance_type            => l_balance_type_code);
133136    ELSE
133137       NULL;
133138 -- No business flow processing for business flow method of NONE.
133139    END IF;
133140 
133141    --
133142    -- call analytical criteria
133143    --
133144    
133145 
133146 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
133147 xla_ae_lines_pkg.SetAnalyticalCriteria(
133148    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
133149  , p_analytical_criterion_owner   => 'S'
133150  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
133151  , p_amb_context_code             => 'DEFAULT'
133152  , p_balancing_flag               => 'Y'
133153  
133154  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
133155  , p_analytical_detail_num_1     =>  NULL
133156  , p_analytical_detail_date_1    =>  NULL
133157 
133158  , p_ae_header_id                 => l_ae_header_id
133159 )
133160 ;
133161 --
133162 
133163    --
133164    -- call description
133165    --
133166    
133167 xla_ae_lines_pkg.SetLineDescription(
133168    p_ae_header_id => l_ae_header_id
133169   ,p_description  => Description_1 (
133170      p_application_id         => p_application_id
133171    , p_ae_header_id           => l_ae_header_id 
133172 , p_source_1 => p_source_1
133173 , p_source_2 => p_source_2
133174 , p_source_3 => p_source_3
133175 , p_source_4 => p_source_4
133176 , p_source_5 => p_source_5
133177    )
133178 );
133179 
133180 
133181    --
133182    -- call ADRs
133183    -- Bug 4922099
133184    --
133185    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133186         (NVL(l_actual_upg_option, 'N') = 'O') OR
133187         (NVL(l_enc_upg_option, 'N') = 'O')
133188       )
133189    THEN
133190    NULL;
133191    --
133192    --
133193    
133194   l_ccid := AcctDerRule_28(
133195            p_application_id           => p_application_id
133196          , p_ae_header_id             => l_ae_header_id 
133197 , p_source_15 => p_source_15
133198 , p_source_41 => p_source_41
133199 , p_source_42 => p_source_42
133200 , p_source_43 => p_source_43
133201 , p_source_44 => p_source_44
133202 , p_source_45 => p_source_45
133203          , x_transaction_coa_id       => l_adr_transaction_coa_id
133204          , x_accounting_coa_id        => l_adr_accounting_coa_id
133205          , x_value_type_code          => l_adr_value_type_code
133206          , p_side                     => 'NA'
133207    );
133208 
133209    xla_ae_lines_pkg.set_ccid(
133210     p_code_combination_id          => l_ccid
133211   , p_value_type_code              => l_adr_value_type_code
133212   , p_transaction_coa_id           => l_adr_transaction_coa_id
133213   , p_accounting_coa_id            => l_adr_accounting_coa_id
133214   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
133215   , p_adr_type_code                => 'S'
133216   , p_component_type               => l_component_type
133217   , p_component_code               => l_component_code
133218   , p_component_type_code          => l_component_type_code
133219   , p_component_appl_id            => l_component_appl_id
133220   , p_amb_context_code             => l_amb_context_code
133221   , p_side                         => 'NA'
133222   );
133223 
133224 
133225    --
133226    --
133227    END IF;
133228    --
133229    -- Bug 4922099
133230    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133231           (NVL(l_enc_upg_option, 'N') = 'O')
133232         ) AND
133233         (l_bflow_method_code = 'PRIOR_ENTRY')
133234       )
133235    THEN
133236       IF
133237       --
133238       1 = 2
133239       --
133240       THEN
133241       xla_accounting_err_pkg.build_message
133242                                     (p_appli_s_name            => 'XLA'
133243                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133244                                     ,p_token_1                 => 'LINE_NUMBER'
133245                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
133246                                     ,p_token_2                 => 'LINE_TYPE_NAME'
133247                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
133248                                                                              l_component_type
133249                                                                             ,l_component_code
133250                                                                             ,l_component_type_code
133251                                                                             ,l_component_appl_id
133252                                                                             ,l_amb_context_code
133253                                                                             ,l_entity_code
133254                                                                             ,l_event_class_code
133255                                                                            )
133256                                     ,p_token_3                 => 'OWNER'
133257                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
133258                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
133259                                                                           ,p_lookup_code    => l_component_type_code
133260                                                                          )
133261                                     ,p_token_4                 => 'PRODUCT_NAME'
133262                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133263                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133264                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133265                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133266                                     ,p_ae_header_id            =>  NULL
133267                                        );
133268 
133269         IF (C_LEVEL_ERROR>= g_log_level) THEN
133270                  trace
133271                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133272                       ,p_level    => C_LEVEL_ERROR
133273                       ,p_module   => l_log_module);
133274         END IF;
133275       END IF;
133276    END IF;
133277    --
133278    --
133279    ------------------------------------------------------------------------------------------------
133280    -- 4219869 Business Flow
133281    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133282    -- Prior Entry.  Currently, the following code is always generated.
133283    ------------------------------------------------------------------------------------------------
133284    XLA_AE_LINES_PKG.ValidateCurrentLine;
133285 
133286    ------------------------------------------------------------------------------------
133287    -- 4219869 Business Flow
133288    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133289    ------------------------------------------------------------------------------------
133290    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133291 
133292    ----------------------------------------------------------------------------------
133293    -- 4219869 Business Flow
133294    -- Update journal entry status -- Need to generate this within IF <condition>
133295    ----------------------------------------------------------------------------------
133296    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133297          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133298          ,p_balance_type_code => l_balance_type_code
133299          );
133300 
133301    -------------------------------------------------------------------------------------------
133302    -- 4262811 - Generate the Accrual Reversal lines
133303    -------------------------------------------------------------------------------------------
133304    BEGIN
133305       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133306                               (g_array_event(p_event_id).array_value_num('header_index'));
133307       IF l_acc_rev_flag IS NULL THEN
133308          l_acc_rev_flag := 'N';
133309       END IF;
133310    EXCEPTION
133311       WHEN OTHERS THEN
133312          l_acc_rev_flag := 'N';
133313    END;
133314    --
133315    IF (l_acc_rev_flag = 'Y') THEN
133316 
133317        -- 4645092  ------------------------------------------------------------------------------
133318        -- To allow MPA report to determine if it should generate report process
133319        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
133320        ------------------------------------------------------------------------------------------
133321 
133322        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
133323        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
133324    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
133325    -- call ADRs
133326    -- Bug 4922099
133327    --
133328    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133329         (NVL(l_actual_upg_option, 'N') = 'O') OR
133330         (NVL(l_enc_upg_option, 'N') = 'O')
133331       )
133332    THEN
133333    NULL;
133334    --
133335    --
133336    
133337   l_ccid := AcctDerRule_28(
133338            p_application_id           => p_application_id
133339          , p_ae_header_id             => l_ae_header_id 
133340 , p_source_15 => p_source_15
133341 , p_source_41 => p_source_41
133342 , p_source_42 => p_source_42
133343 , p_source_43 => p_source_43
133344 , p_source_44 => p_source_44
133345 , p_source_45 => p_source_45
133346          , x_transaction_coa_id       => l_adr_transaction_coa_id
133347          , x_accounting_coa_id        => l_adr_accounting_coa_id
133348          , x_value_type_code          => l_adr_value_type_code
133349          , p_side                     => 'NA'
133350    );
133351 
133352    xla_ae_lines_pkg.set_ccid(
133353     p_code_combination_id          => l_ccid
133354   , p_value_type_code              => l_adr_value_type_code
133355   , p_transaction_coa_id           => l_adr_transaction_coa_id
133356   , p_accounting_coa_id            => l_adr_accounting_coa_id
133357   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
133358   , p_adr_type_code                => 'S'
133359   , p_component_type               => l_component_type
133360   , p_component_code               => l_component_code
133361   , p_component_type_code          => l_component_type_code
133362   , p_component_appl_id            => l_component_appl_id
133363   , p_amb_context_code             => l_amb_context_code
133364   , p_side                         => 'NA'
133365   );
133366 
133367 
133368    --
133369    --
133370    END IF;
133371 
133372        --
133373        -- Update the line information that should be overwritten
133374        --
133375        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133376                                          p_header_num   => 1);
133377        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
133378 
133379        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133380 
133381        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
133382           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
133383        END IF;
133384 
133385       --
133386       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
133387       --
133388       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
133389           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
133390       ELSE
133391           ---------------------------------------------------------------------------------------------------
133392           -- 4262811a Switch Sign
133393           ---------------------------------------------------------------------------------------------------
133394           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
133395           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133396                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133397           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133398                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133399           -- 5132302
133400           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
133401                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133402 
133403       END IF;
133404 
133405       -- 4955764
133406       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133407       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
133408 
133409 
133410       XLA_AE_LINES_PKG.ValidateCurrentLine;
133411       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133412 
133413       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133414                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
133415                ,p_balance_type_code => l_balance_type_code);
133416 
133417    END IF;
133418 
133419    -----------------------------------------------------------------------------------------
133420    -- 4262811 Multiperiod Accounting
133421    -----------------------------------------------------------------------------------------
133422      -- No MPA option is assigned.
133423 
133424 
133425 END IF;
133426 END IF;
133427 --
133428 
133429 --
133430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133431    trace
133432       (p_msg      => 'END of AcctLineType_254'
133433       ,p_level    => C_LEVEL_PROCEDURE
133434       ,p_module   => l_log_module);
133435 END IF;
133436 --
133437 EXCEPTION
133438   WHEN xla_exceptions_pkg.application_exception THEN
133439       RAISE;
133440   WHEN OTHERS THEN
133441        xla_exceptions_pkg.raise_message
133442            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_254');
133443 END AcctLineType_254;
133444 --
133445 
133446 ---------------------------------------
133447 --
133448 -- PRIVATE FUNCTION
133449 --         AcctLineType_255
133450 --
133451 ---------------------------------------
133452 PROCEDURE AcctLineType_255 (
133453   p_application_id        IN NUMBER
133454  ,p_event_id              IN NUMBER
133455  ,p_calculate_acctd_flag  IN VARCHAR2
133456  ,p_calculate_g_l_flag    IN VARCHAR2
133457  ,p_actual_flag           IN OUT VARCHAR2
133458  ,p_balance_type_code     OUT VARCHAR2
133459  ,p_gain_or_loss_ref      OUT VARCHAR2
133460  
133461 --TRANSACTION_ID
133462  , p_source_1            IN NUMBER
133463 --Item Concatenated Segments
133464  , p_source_2            IN VARCHAR2
133465 --Transaction Quantity
133466  , p_source_3            IN NUMBER
133467 --Transaction Unit of Measure Code
133468  , p_source_4            IN VARCHAR2
133469 --Inventory Transaction Type Description
133470  , p_source_5            IN VARCHAR2
133471 --Cost Element Name
133472  , p_source_15            IN NUMBER
133473 --Product Line Accounting Category Material Account
133474  , p_source_41            IN NUMBER
133475 --Product Line Accounting Category Material Overhead Account
133476  , p_source_42            IN NUMBER
133477 --Product Line Accounting Category Resource Account
133478  , p_source_43            IN NUMBER
133479 --Product Line Accounting Category Outside Processing Account
133480  , p_source_44            IN NUMBER
133481 --Product Line Accounting Category Overhead Account
133482  , p_source_45            IN NUMBER
133483 --DISTRIBUTION_IDENTIFIER
133484  , p_source_84            IN NUMBER
133485 --Distribution Type
133486  , p_source_85            IN VARCHAR2
133487  , p_source_85_meaning    IN VARCHAR2
133488 --Entered Currency Code
133489  , p_source_88            IN VARCHAR2
133490 --Entered Amount
133491  , p_source_91            IN NUMBER
133492 --Currency Conversion Date
133493  , p_source_92            IN DATE
133494 --Currency Conversion Rate
133495  , p_source_93            IN NUMBER
133496 --Currency Conversion Type
133497  , p_source_94            IN VARCHAR2
133498 --Accounted Amount
133499  , p_source_95            IN NUMBER
133500 --Accounting Line Type
133501  , p_source_97            IN NUMBER
133502 --Organization Code
133503  , p_source_108            IN VARCHAR2
133504 )
133505 IS
133506 
133507 l_component_type              VARCHAR2(80);
133508 l_component_code              VARCHAR2(30);
133509 l_component_type_code         VARCHAR2(1);
133510 l_component_appl_id           INTEGER;
133511 l_amb_context_code            VARCHAR2(30);
133512 l_entity_code                 VARCHAR2(30);
133513 l_event_class_code            VARCHAR2(30);
133514 l_ae_header_id                NUMBER;
133515 l_event_type_code             VARCHAR2(30);
133516 l_line_definition_code        VARCHAR2(30);
133517 l_line_definition_owner_code  VARCHAR2(1);
133518 --
133519 -- adr variables
133520 l_segment                     VARCHAR2(30);
133521 l_ccid                        NUMBER;
133522 l_adr_transaction_coa_id      NUMBER;
133523 l_adr_accounting_coa_id       NUMBER;
133524 l_adr_flexfield_segment_code  VARCHAR2(30);
133525 l_adr_flex_value_set_id       NUMBER;
133526 l_adr_value_type_code         VARCHAR2(30);
133527 l_adr_value_combination_id    NUMBER;
133528 l_adr_value_segment_code      VARCHAR2(30);
133529 
133530 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
133531 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
133532 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
133533 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
133534 
133535 -- 4262811 Variables ------------------------------------------------------------------------------------------
133536 l_entered_amt_idx             NUMBER;
133537 l_accted_amt_idx              NUMBER;
133538 l_acc_rev_flag                VARCHAR2(1);
133539 l_accrual_line_num            NUMBER;
133540 l_tmp_amt                     NUMBER;
133541 l_acc_rev_natural_side_code   VARCHAR2(1);
133542 
133543 l_num_entries                 NUMBER;
133544 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
133545 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
133546 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
133547 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
133548 l_recog_line_1                NUMBER;
133549 l_recog_line_2                NUMBER;
133550 
133551 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
133552 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
133553 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
133554 
133555 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133556 
133557 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
133558 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
133559 
133560 ---------------------------------------------------------------------------------------------------------------
133561 
133562 
133563 --
133564 -- bulk performance
133565 --
133566 l_balance_type_code           VARCHAR2(1);
133567 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
133568 l_log_module                  VARCHAR2(240);
133569 
133570 --
133571 -- Upgrade strategy
133572 --
133573 l_actual_upg_option           VARCHAR2(1);
133574 l_enc_upg_option           VARCHAR2(1);
133575 
133576 --
133577 BEGIN
133578 --
133579 IF g_log_enabled THEN
133580       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_255';
133581 END IF;
133582 --
133583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133584 
133585       trace
133586          (p_msg      => 'BEGIN of AcctLineType_255'
133587          ,p_level    => C_LEVEL_PROCEDURE
133588          ,p_module   => l_log_module);
133589 
133590 END IF;
133591 --
133592 l_component_type             := 'AMB_JLT';
133593 l_component_code             := 'INVENTORY_VALUATION';
133594 l_component_type_code        := 'S';
133595 l_component_appl_id          :=  707;
133596 l_amb_context_code           := 'DEFAULT';
133597 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
133598 l_event_class_code           := 'INT_ORDER_TO_EXP';
133599 l_event_type_code            := 'EXP_REQ_RCPT_TP';
133600 l_line_definition_owner_code := 'S';
133601 l_line_definition_code       := 'PI_EXP_REQ_RCPT_TP';
133602 --
133603 l_balance_type_code          := 'A';
133604 l_segment                     := NULL;
133605 l_ccid                        := NULL;
133606 l_adr_transaction_coa_id      := NULL;
133607 l_adr_accounting_coa_id       := NULL;
133608 l_adr_flexfield_segment_code  := NULL;
133609 l_adr_flex_value_set_id       := NULL;
133610 l_adr_value_type_code         := NULL;
133611 l_adr_value_combination_id    := NULL;
133612 l_adr_value_segment_code      := NULL;
133613 
133614 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
133615 l_bflow_class_code           := '';    -- 4219869 Business Flow
133616 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
133617 l_budgetary_control_flag     := 'N';
133618 
133619 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
133620 l_bflow_applied_to_amt       := NULL; -- 5132302
133621 l_entered_amt_idx            := NULL;          -- 4262811
133622 l_accted_amt_idx             := NULL;          -- 4262811
133623 l_acc_rev_flag               := NULL;          -- 4262811
133624 l_accrual_line_num           := NULL;          -- 4262811
133625 l_tmp_amt                    := NULL;          -- 4262811
133626 --
133627  
133628 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133629     l_balance_type_code <> 'B' THEN
133630 IF NVL(p_source_97,9E125) =  1
133631  THEN 
133632 
133633    --
133634    XLA_AE_LINES_PKG.SetNewLine;
133635 
133636    p_balance_type_code          := l_balance_type_code;
133637    -- set the flag so later we will know whether the gain loss line needs to be created
133638    
133639    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133640      p_actual_flag :='A';
133641    END IF;
133642 
133643    --
133644    -- bulk performance
133645    --
133646    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133647                                       p_header_num   => 0); -- 4262811
133648    --
133649    -- set accounting line options
133650    --
133651    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133652            p_natural_side_code          => 'D'
133653          , p_gain_or_loss_flag          => 'N'
133654          , p_gl_transfer_mode_code      => 'S'
133655          , p_acct_entry_type_code       => 'A'
133656          , p_switch_side_flag           => 'Y'
133657          , p_merge_duplicate_code       => 'N'
133658          );
133659    --
133660    l_acc_rev_natural_side_code := 'C';  -- 4262811
133661    -- 
133662    --
133663    -- set accounting line type info
133664    --
133665    xla_ae_lines_pkg.SetAcctLineType
133666       (p_component_type             => l_component_type
133667       ,p_event_type_code            => l_event_type_code
133668       ,p_line_definition_owner_code => l_line_definition_owner_code
133669       ,p_line_definition_code       => l_line_definition_code
133670       ,p_accounting_line_code       => l_component_code
133671       ,p_accounting_line_type_code  => l_component_type_code
133672       ,p_accounting_line_appl_id    => l_component_appl_id
133673       ,p_amb_context_code           => l_amb_context_code
133674       ,p_entity_code                => l_entity_code
133675       ,p_event_class_code           => l_event_class_code);
133676    --
133677    -- set accounting class
133678    --
133679    xla_ae_lines_pkg.SetAcctClass(
133680            p_accounting_class_code  => 'INVENTORY_VALUATION'
133681          , p_ae_header_id           => l_ae_header_id
133682          );
133683 
133684    --
133685    -- set rounding class
133686    --
133687    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133688                       'INVENTORY_VALUATION';
133689 
133690    --
133691    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133692    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133693    --
133694    -- bulk performance
133695    --
133696    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133697 
133698    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133699       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133700 
133701    -- 4955764
133702    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133703       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133704 
133705    -- 4458381 Public Sector Enh
133706    
133707    --
133708    -- set accounting attributes for the line type
133709    --
133710    l_entered_amt_idx := 3;
133711    l_accted_amt_idx  := 8;
133712    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
133713    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133714    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
133715    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133716    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
133717    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133718    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
133719    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133720    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
133721    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133722    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
133723    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133724    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
133725    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133726    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
133727    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133728    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
133729 
133730    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133731    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133732 
133733    ---------------------------------------------------------------------------------------------------------------
133734    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133735    ---------------------------------------------------------------------------------------------------------------
133736    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133737 
133738    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133739    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133740 
133741    IF xla_accounting_cache_pkg.GetValueChar
133742          (p_source_code         => 'LEDGER_CATEGORY_CODE'
133743          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133744    AND l_bflow_method_code = 'PRIOR_ENTRY'
133745 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133746    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133747          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133748        )
133749    THEN
133750          xla_ae_lines_pkg.BflowUpgEntry
133751            (p_business_method_code    => l_bflow_method_code
133752            ,p_business_class_code     => l_bflow_class_code
133753            ,p_balance_type            => l_balance_type_code);
133754    ELSE
133755       NULL;
133756 -- No business flow processing for business flow method of NONE.
133757    END IF;
133758 
133759    --
133760    -- call analytical criteria
133761    --
133762    
133763 
133764 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
133765 xla_ae_lines_pkg.SetAnalyticalCriteria(
133766    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
133767  , p_analytical_criterion_owner   => 'S'
133768  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
133769  , p_amb_context_code             => 'DEFAULT'
133770  , p_balancing_flag               => 'Y'
133771  
133772  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
133773  , p_analytical_detail_num_1     =>  NULL
133774  , p_analytical_detail_date_1    =>  NULL
133775 
133776  , p_ae_header_id                 => l_ae_header_id
133777 )
133778 ;
133779 --
133780 
133781    --
133782    -- call description
133783    --
133784    
133785 xla_ae_lines_pkg.SetLineDescription(
133786    p_ae_header_id => l_ae_header_id
133787   ,p_description  => Description_1 (
133788      p_application_id         => p_application_id
133789    , p_ae_header_id           => l_ae_header_id 
133790 , p_source_1 => p_source_1
133791 , p_source_2 => p_source_2
133792 , p_source_3 => p_source_3
133793 , p_source_4 => p_source_4
133794 , p_source_5 => p_source_5
133795    )
133796 );
133797 
133798 
133799    --
133800    -- call ADRs
133801    -- Bug 4922099
133802    --
133803    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133804         (NVL(l_actual_upg_option, 'N') = 'O') OR
133805         (NVL(l_enc_upg_option, 'N') = 'O')
133806       )
133807    THEN
133808    NULL;
133809    --
133810    --
133811    
133812   l_ccid := AcctDerRule_28(
133813            p_application_id           => p_application_id
133814          , p_ae_header_id             => l_ae_header_id 
133815 , p_source_15 => p_source_15
133816 , p_source_41 => p_source_41
133817 , p_source_42 => p_source_42
133818 , p_source_43 => p_source_43
133819 , p_source_44 => p_source_44
133820 , p_source_45 => p_source_45
133821          , x_transaction_coa_id       => l_adr_transaction_coa_id
133822          , x_accounting_coa_id        => l_adr_accounting_coa_id
133823          , x_value_type_code          => l_adr_value_type_code
133824          , p_side                     => 'NA'
133825    );
133826 
133827    xla_ae_lines_pkg.set_ccid(
133828     p_code_combination_id          => l_ccid
133829   , p_value_type_code              => l_adr_value_type_code
133830   , p_transaction_coa_id           => l_adr_transaction_coa_id
133831   , p_accounting_coa_id            => l_adr_accounting_coa_id
133832   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
133833   , p_adr_type_code                => 'S'
133834   , p_component_type               => l_component_type
133835   , p_component_code               => l_component_code
133836   , p_component_type_code          => l_component_type_code
133837   , p_component_appl_id            => l_component_appl_id
133838   , p_amb_context_code             => l_amb_context_code
133839   , p_side                         => 'NA'
133840   );
133841 
133842 
133843    --
133844    --
133845    END IF;
133846    --
133847    -- Bug 4922099
133848    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133849           (NVL(l_enc_upg_option, 'N') = 'O')
133850         ) AND
133851         (l_bflow_method_code = 'PRIOR_ENTRY')
133852       )
133853    THEN
133854       IF
133855       --
133856       1 = 2
133857       --
133858       THEN
133859       xla_accounting_err_pkg.build_message
133860                                     (p_appli_s_name            => 'XLA'
133861                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133862                                     ,p_token_1                 => 'LINE_NUMBER'
133863                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
133864                                     ,p_token_2                 => 'LINE_TYPE_NAME'
133865                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
133866                                                                              l_component_type
133867                                                                             ,l_component_code
133868                                                                             ,l_component_type_code
133869                                                                             ,l_component_appl_id
133870                                                                             ,l_amb_context_code
133871                                                                             ,l_entity_code
133872                                                                             ,l_event_class_code
133873                                                                            )
133874                                     ,p_token_3                 => 'OWNER'
133875                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
133876                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
133877                                                                           ,p_lookup_code    => l_component_type_code
133878                                                                          )
133879                                     ,p_token_4                 => 'PRODUCT_NAME'
133880                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133881                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133882                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133883                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133884                                     ,p_ae_header_id            =>  NULL
133885                                        );
133886 
133887         IF (C_LEVEL_ERROR>= g_log_level) THEN
133888                  trace
133889                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133890                       ,p_level    => C_LEVEL_ERROR
133891                       ,p_module   => l_log_module);
133892         END IF;
133893       END IF;
133894    END IF;
133895    --
133896    --
133897    ------------------------------------------------------------------------------------------------
133898    -- 4219869 Business Flow
133899    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133900    -- Prior Entry.  Currently, the following code is always generated.
133901    ------------------------------------------------------------------------------------------------
133902    XLA_AE_LINES_PKG.ValidateCurrentLine;
133903 
133904    ------------------------------------------------------------------------------------
133905    -- 4219869 Business Flow
133906    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133907    ------------------------------------------------------------------------------------
133908    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133909 
133910    ----------------------------------------------------------------------------------
133911    -- 4219869 Business Flow
133912    -- Update journal entry status -- Need to generate this within IF <condition>
133913    ----------------------------------------------------------------------------------
133914    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133915          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133916          ,p_balance_type_code => l_balance_type_code
133917          );
133918 
133919    -------------------------------------------------------------------------------------------
133920    -- 4262811 - Generate the Accrual Reversal lines
133921    -------------------------------------------------------------------------------------------
133922    BEGIN
133923       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133924                               (g_array_event(p_event_id).array_value_num('header_index'));
133925       IF l_acc_rev_flag IS NULL THEN
133926          l_acc_rev_flag := 'N';
133927       END IF;
133928    EXCEPTION
133929       WHEN OTHERS THEN
133930          l_acc_rev_flag := 'N';
133931    END;
133932    --
133933    IF (l_acc_rev_flag = 'Y') THEN
133934 
133935        -- 4645092  ------------------------------------------------------------------------------
133936        -- To allow MPA report to determine if it should generate report process
133937        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
133938        ------------------------------------------------------------------------------------------
133939 
133940        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
133941        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
133942    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
133943    -- call ADRs
133944    -- Bug 4922099
133945    --
133946    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133947         (NVL(l_actual_upg_option, 'N') = 'O') OR
133948         (NVL(l_enc_upg_option, 'N') = 'O')
133949       )
133950    THEN
133951    NULL;
133952    --
133953    --
133954    
133955   l_ccid := AcctDerRule_28(
133956            p_application_id           => p_application_id
133957          , p_ae_header_id             => l_ae_header_id 
133958 , p_source_15 => p_source_15
133959 , p_source_41 => p_source_41
133960 , p_source_42 => p_source_42
133961 , p_source_43 => p_source_43
133962 , p_source_44 => p_source_44
133963 , p_source_45 => p_source_45
133964          , x_transaction_coa_id       => l_adr_transaction_coa_id
133965          , x_accounting_coa_id        => l_adr_accounting_coa_id
133966          , x_value_type_code          => l_adr_value_type_code
133967          , p_side                     => 'NA'
133968    );
133969 
133970    xla_ae_lines_pkg.set_ccid(
133971     p_code_combination_id          => l_ccid
133972   , p_value_type_code              => l_adr_value_type_code
133973   , p_transaction_coa_id           => l_adr_transaction_coa_id
133974   , p_accounting_coa_id            => l_adr_accounting_coa_id
133975   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
133976   , p_adr_type_code                => 'S'
133977   , p_component_type               => l_component_type
133978   , p_component_code               => l_component_code
133979   , p_component_type_code          => l_component_type_code
133980   , p_component_appl_id            => l_component_appl_id
133981   , p_amb_context_code             => l_amb_context_code
133982   , p_side                         => 'NA'
133983   );
133984 
133985 
133986    --
133987    --
133988    END IF;
133989 
133990        --
133991        -- Update the line information that should be overwritten
133992        --
133993        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133994                                          p_header_num   => 1);
133995        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
133996 
133997        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133998 
133999        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
134000           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134001        END IF;
134002 
134003       --
134004       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134005       --
134006       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134007           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
134008       ELSE
134009           ---------------------------------------------------------------------------------------------------
134010           -- 4262811a Switch Sign
134011           ---------------------------------------------------------------------------------------------------
134012           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
134013           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134014                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134015           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134016                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134017           -- 5132302
134018           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134019                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134020 
134021       END IF;
134022 
134023       -- 4955764
134024       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134025       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134026 
134027 
134028       XLA_AE_LINES_PKG.ValidateCurrentLine;
134029       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134030 
134031       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134032                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134033                ,p_balance_type_code => l_balance_type_code);
134034 
134035    END IF;
134036 
134037    -----------------------------------------------------------------------------------------
134038    -- 4262811 Multiperiod Accounting
134039    -----------------------------------------------------------------------------------------
134040      -- No MPA option is assigned.
134041 
134042 
134043 END IF;
134044 END IF;
134045 --
134046 
134047 --
134048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134049    trace
134050       (p_msg      => 'END of AcctLineType_255'
134051       ,p_level    => C_LEVEL_PROCEDURE
134052       ,p_module   => l_log_module);
134053 END IF;
134054 --
134055 EXCEPTION
134056   WHEN xla_exceptions_pkg.application_exception THEN
134057       RAISE;
134058   WHEN OTHERS THEN
134059        xla_exceptions_pkg.raise_message
134060            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_255');
134061 END AcctLineType_255;
134062 --
134063 
134064 ---------------------------------------
134065 --
134066 -- PRIVATE FUNCTION
134067 --         AcctLineType_256
134068 --
134069 ---------------------------------------
134070 PROCEDURE AcctLineType_256 (
134071   p_application_id        IN NUMBER
134072  ,p_event_id              IN NUMBER
134073  ,p_calculate_acctd_flag  IN VARCHAR2
134074  ,p_calculate_g_l_flag    IN VARCHAR2
134075  ,p_actual_flag           IN OUT VARCHAR2
134076  ,p_balance_type_code     OUT VARCHAR2
134077  ,p_gain_or_loss_ref      OUT VARCHAR2
134078  
134079 --TRANSACTION_ID
134080  , p_source_1            IN NUMBER
134081 --Item Concatenated Segments
134082  , p_source_2            IN VARCHAR2
134083 --Transaction Quantity
134084  , p_source_3            IN NUMBER
134085 --Transaction Unit of Measure Code
134086  , p_source_4            IN VARCHAR2
134087 --Inventory Transaction Type Description
134088  , p_source_5            IN VARCHAR2
134089 --Cost Element Name
134090  , p_source_15            IN NUMBER
134091 --Product Line Accounting Category Material Account
134092  , p_source_41            IN NUMBER
134093 --Product Line Accounting Category Material Overhead Account
134094  , p_source_42            IN NUMBER
134095 --Product Line Accounting Category Resource Account
134096  , p_source_43            IN NUMBER
134097 --Product Line Accounting Category Outside Processing Account
134098  , p_source_44            IN NUMBER
134099 --Product Line Accounting Category Overhead Account
134100  , p_source_45            IN NUMBER
134101 --Applied to Application ID
134102  , p_source_79            IN NUMBER
134103 --Applied to Distribution Link Type
134104  , p_source_80            IN VARCHAR2
134105 --Applied to Entity Code
134106  , p_source_81            IN VARCHAR2
134107 --Applied To Purchase Document Identifier
134108  , p_source_83            IN NUMBER
134109 --DISTRIBUTION_IDENTIFIER
134110  , p_source_84            IN NUMBER
134111 --Distribution Type
134112  , p_source_85            IN VARCHAR2
134113  , p_source_85_meaning    IN VARCHAR2
134114 --PO Budget Account
134115  , p_source_86            IN NUMBER
134116 --Encumbrance Reversal Amount Entered
134117  , p_source_87            IN NUMBER
134118 --Entered Currency Code
134119  , p_source_88            IN VARCHAR2
134120 --Transaction Encumbrance Reversal Amount
134121  , p_source_89            IN NUMBER
134122 --Entered Amount
134123  , p_source_91            IN NUMBER
134124 --Currency Conversion Date
134125  , p_source_92            IN DATE
134126 --Currency Conversion Rate
134127  , p_source_93            IN NUMBER
134128 --Currency Conversion Type
134129  , p_source_94            IN VARCHAR2
134130 --Accounted Amount
134131  , p_source_95            IN NUMBER
134132 --Purchasing Encumbrance Type Identifier
134133  , p_source_96            IN NUMBER
134134 --Accounting Line Type
134135  , p_source_97            IN NUMBER
134136 --Costing Encumbrance Upgrade Option
134137  , p_source_100            IN VARCHAR2
134138 --TXN_PO_DISTRIBUTION_ID
134139  , p_source_101            IN NUMBER
134140 --Organization Code
134141  , p_source_108            IN VARCHAR2
134142 )
134143 IS
134144 
134145 l_component_type              VARCHAR2(80);
134146 l_component_code              VARCHAR2(30);
134147 l_component_type_code         VARCHAR2(1);
134148 l_component_appl_id           INTEGER;
134149 l_amb_context_code            VARCHAR2(30);
134150 l_entity_code                 VARCHAR2(30);
134151 l_event_class_code            VARCHAR2(30);
134152 l_ae_header_id                NUMBER;
134153 l_event_type_code             VARCHAR2(30);
134154 l_line_definition_code        VARCHAR2(30);
134155 l_line_definition_owner_code  VARCHAR2(1);
134156 --
134157 -- adr variables
134158 l_segment                     VARCHAR2(30);
134159 l_ccid                        NUMBER;
134160 l_adr_transaction_coa_id      NUMBER;
134161 l_adr_accounting_coa_id       NUMBER;
134162 l_adr_flexfield_segment_code  VARCHAR2(30);
134163 l_adr_flex_value_set_id       NUMBER;
134164 l_adr_value_type_code         VARCHAR2(30);
134165 l_adr_value_combination_id    NUMBER;
134166 l_adr_value_segment_code      VARCHAR2(30);
134167 
134168 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
134169 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
134170 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
134171 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
134172 
134173 -- 4262811 Variables ------------------------------------------------------------------------------------------
134174 l_entered_amt_idx             NUMBER;
134175 l_accted_amt_idx              NUMBER;
134176 l_acc_rev_flag                VARCHAR2(1);
134177 l_accrual_line_num            NUMBER;
134178 l_tmp_amt                     NUMBER;
134179 l_acc_rev_natural_side_code   VARCHAR2(1);
134180 
134181 l_num_entries                 NUMBER;
134182 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
134183 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
134184 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
134185 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
134186 l_recog_line_1                NUMBER;
134187 l_recog_line_2                NUMBER;
134188 
134189 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
134190 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
134191 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
134192 
134193 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134194 
134195 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
134196 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
134197 
134198 ---------------------------------------------------------------------------------------------------------------
134199 
134200 
134201 --
134202 -- bulk performance
134203 --
134204 l_balance_type_code           VARCHAR2(1);
134205 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
134206 l_log_module                  VARCHAR2(240);
134207 
134208 --
134209 -- Upgrade strategy
134210 --
134211 l_actual_upg_option           VARCHAR2(1);
134212 l_enc_upg_option           VARCHAR2(1);
134213 
134214 --
134215 BEGIN
134216 --
134217 IF g_log_enabled THEN
134218       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_256';
134219 END IF;
134220 --
134221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134222 
134223       trace
134224          (p_msg      => 'BEGIN of AcctLineType_256'
134225          ,p_level    => C_LEVEL_PROCEDURE
134226          ,p_module   => l_log_module);
134227 
134228 END IF;
134229 --
134230 l_component_type             := 'AMB_JLT';
134231 l_component_code             := 'INVENTORY_VALUATION';
134232 l_component_type_code        := 'S';
134233 l_component_appl_id          :=  707;
134234 l_amb_context_code           := 'DEFAULT';
134235 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
134236 l_event_class_code           := 'PURCHASE_ORDER';
134237 l_event_type_code            := 'LOG_PO_DEL_INV';
134238 l_line_definition_owner_code := 'S';
134239 l_line_definition_code       := 'PI_LOG_DEL_INV';
134240 --
134241 l_balance_type_code          := 'A';
134242 l_segment                     := NULL;
134243 l_ccid                        := NULL;
134244 l_adr_transaction_coa_id      := NULL;
134245 l_adr_accounting_coa_id       := NULL;
134246 l_adr_flexfield_segment_code  := NULL;
134247 l_adr_flex_value_set_id       := NULL;
134248 l_adr_value_type_code         := NULL;
134249 l_adr_value_combination_id    := NULL;
134250 l_adr_value_segment_code      := NULL;
134251 
134252 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
134253 l_bflow_class_code           := '';    -- 4219869 Business Flow
134254 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
134255 l_budgetary_control_flag     := 'N';
134256 
134257 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
134258 l_bflow_applied_to_amt       := NULL; -- 5132302
134259 l_entered_amt_idx            := NULL;          -- 4262811
134260 l_accted_amt_idx             := NULL;          -- 4262811
134261 l_acc_rev_flag               := NULL;          -- 4262811
134262 l_accrual_line_num           := NULL;          -- 4262811
134263 l_tmp_amt                    := NULL;          -- 4262811
134264 --
134265  
134266 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134267     l_balance_type_code <> 'B' THEN
134268 IF NVL(p_source_97,9E125) =  1
134269  THEN 
134270 
134271    --
134272    XLA_AE_LINES_PKG.SetNewLine;
134273 
134274    p_balance_type_code          := l_balance_type_code;
134275    -- set the flag so later we will know whether the gain loss line needs to be created
134276    
134277    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134278      p_actual_flag :='A';
134279    END IF;
134280 
134281    --
134282    -- bulk performance
134283    --
134284    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134285                                       p_header_num   => 0); -- 4262811
134286    --
134287    -- set accounting line options
134288    --
134289    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134290            p_natural_side_code          => 'D'
134291          , p_gain_or_loss_flag          => 'N'
134292          , p_gl_transfer_mode_code      => 'S'
134293          , p_acct_entry_type_code       => 'A'
134294          , p_switch_side_flag           => 'Y'
134295          , p_merge_duplicate_code       => 'N'
134296          );
134297    --
134298    l_acc_rev_natural_side_code := 'C';  -- 4262811
134299    -- 
134300    --
134301    -- set accounting line type info
134302    --
134303    xla_ae_lines_pkg.SetAcctLineType
134304       (p_component_type             => l_component_type
134305       ,p_event_type_code            => l_event_type_code
134306       ,p_line_definition_owner_code => l_line_definition_owner_code
134307       ,p_line_definition_code       => l_line_definition_code
134308       ,p_accounting_line_code       => l_component_code
134309       ,p_accounting_line_type_code  => l_component_type_code
134310       ,p_accounting_line_appl_id    => l_component_appl_id
134311       ,p_amb_context_code           => l_amb_context_code
134312       ,p_entity_code                => l_entity_code
134313       ,p_event_class_code           => l_event_class_code);
134314    --
134315    -- set accounting class
134316    --
134317    xla_ae_lines_pkg.SetAcctClass(
134318            p_accounting_class_code  => 'INVENTORY_VALUATION'
134319          , p_ae_header_id           => l_ae_header_id
134320          );
134321 
134322    --
134323    -- set rounding class
134324    --
134325    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134326                       'INVENTORY_VALUATION';
134327 
134328    --
134329    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134330    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134331    --
134332    -- bulk performance
134333    --
134334    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134335 
134336    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134337       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134338 
134339    -- 4955764
134340    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134341       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134342 
134343    -- 4458381 Public Sector Enh
134344    
134345    --
134346    -- set accounting attributes for the line type
134347    --
134348    l_entered_amt_idx := 17;
134349    l_accted_amt_idx  := 22;
134350    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
134351    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
134352    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
134353    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
134354    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
134355    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
134356    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
134357    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
134358    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
134359    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
134360    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
134361    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
134362    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
134363    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
134364    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
134365    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
134366    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
134367    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
134368    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
134369    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
134370    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
134371    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
134372    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
134373    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
134374    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
134375    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
134376    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
134377    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
134378    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
134379    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
134380    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
134381    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
134382    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
134383    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
134384    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
134385    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
134386    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
134387    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
134388    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
134389    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
134390    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
134391    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
134392    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
134393    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
134394    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
134395    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
134396    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
134397    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
134398    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
134399 
134400    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
134401    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
134402 
134403    ---------------------------------------------------------------------------------------------------------------
134404    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
134405    ---------------------------------------------------------------------------------------------------------------
134406    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
134407 
134408    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134409    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134410 
134411    IF xla_accounting_cache_pkg.GetValueChar
134412          (p_source_code         => 'LEDGER_CATEGORY_CODE'
134413          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
134414    AND l_bflow_method_code = 'PRIOR_ENTRY'
134415 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
134416    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
134417          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
134418        )
134419    THEN
134420          xla_ae_lines_pkg.BflowUpgEntry
134421            (p_business_method_code    => l_bflow_method_code
134422            ,p_business_class_code     => l_bflow_class_code
134423            ,p_balance_type            => l_balance_type_code);
134424    ELSE
134425       NULL;
134426 -- No business flow processing for business flow method of NONE.
134427    END IF;
134428 
134429    --
134430    -- call analytical criteria
134431    --
134432    
134433 
134434 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
134435 xla_ae_lines_pkg.SetAnalyticalCriteria(
134436    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
134437  , p_analytical_criterion_owner   => 'S'
134438  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
134439  , p_amb_context_code             => 'DEFAULT'
134440  , p_balancing_flag               => 'Y'
134441  
134442  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
134443  , p_analytical_detail_num_1     =>  NULL
134444  , p_analytical_detail_date_1    =>  NULL
134445 
134446  , p_ae_header_id                 => l_ae_header_id
134447 )
134448 ;
134449 --
134450 
134451    --
134452    -- call description
134453    --
134454    
134455 xla_ae_lines_pkg.SetLineDescription(
134456    p_ae_header_id => l_ae_header_id
134457   ,p_description  => Description_1 (
134458      p_application_id         => p_application_id
134459    , p_ae_header_id           => l_ae_header_id 
134460 , p_source_1 => p_source_1
134461 , p_source_2 => p_source_2
134462 , p_source_3 => p_source_3
134463 , p_source_4 => p_source_4
134464 , p_source_5 => p_source_5
134465    )
134466 );
134467 
134468 
134469    --
134470    -- call ADRs
134471    -- Bug 4922099
134472    --
134473    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134474         (NVL(l_actual_upg_option, 'N') = 'O') OR
134475         (NVL(l_enc_upg_option, 'N') = 'O')
134476       )
134477    THEN
134478    NULL;
134479    --
134480    --
134481    
134482   l_ccid := AcctDerRule_28(
134483            p_application_id           => p_application_id
134484          , p_ae_header_id             => l_ae_header_id 
134485 , p_source_15 => p_source_15
134486 , p_source_41 => p_source_41
134487 , p_source_42 => p_source_42
134488 , p_source_43 => p_source_43
134489 , p_source_44 => p_source_44
134490 , p_source_45 => p_source_45
134491          , x_transaction_coa_id       => l_adr_transaction_coa_id
134492          , x_accounting_coa_id        => l_adr_accounting_coa_id
134493          , x_value_type_code          => l_adr_value_type_code
134494          , p_side                     => 'NA'
134495    );
134496 
134497    xla_ae_lines_pkg.set_ccid(
134498     p_code_combination_id          => l_ccid
134499   , p_value_type_code              => l_adr_value_type_code
134500   , p_transaction_coa_id           => l_adr_transaction_coa_id
134501   , p_accounting_coa_id            => l_adr_accounting_coa_id
134502   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
134503   , p_adr_type_code                => 'S'
134504   , p_component_type               => l_component_type
134505   , p_component_code               => l_component_code
134506   , p_component_type_code          => l_component_type_code
134507   , p_component_appl_id            => l_component_appl_id
134508   , p_amb_context_code             => l_amb_context_code
134509   , p_side                         => 'NA'
134510   );
134511 
134512 
134513    --
134514    --
134515    END IF;
134516    --
134517    -- Bug 4922099
134518    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
134519           (NVL(l_enc_upg_option, 'N') = 'O')
134520         ) AND
134521         (l_bflow_method_code = 'PRIOR_ENTRY')
134522       )
134523    THEN
134524       IF
134525       --
134526       1 = 2
134527       --
134528       THEN
134529       xla_accounting_err_pkg.build_message
134530                                     (p_appli_s_name            => 'XLA'
134531                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134532                                     ,p_token_1                 => 'LINE_NUMBER'
134533                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
134534                                     ,p_token_2                 => 'LINE_TYPE_NAME'
134535                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
134536                                                                              l_component_type
134537                                                                             ,l_component_code
134538                                                                             ,l_component_type_code
134539                                                                             ,l_component_appl_id
134540                                                                             ,l_amb_context_code
134541                                                                             ,l_entity_code
134542                                                                             ,l_event_class_code
134543                                                                            )
134544                                     ,p_token_3                 => 'OWNER'
134545                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
134546                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
134547                                                                           ,p_lookup_code    => l_component_type_code
134548                                                                          )
134549                                     ,p_token_4                 => 'PRODUCT_NAME'
134550                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
134551                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
134552                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
134553                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
134554                                     ,p_ae_header_id            =>  NULL
134555                                        );
134556 
134557         IF (C_LEVEL_ERROR>= g_log_level) THEN
134558                  trace
134559                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134560                       ,p_level    => C_LEVEL_ERROR
134561                       ,p_module   => l_log_module);
134562         END IF;
134563       END IF;
134564    END IF;
134565    --
134566    --
134567    ------------------------------------------------------------------------------------------------
134568    -- 4219869 Business Flow
134569    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
134570    -- Prior Entry.  Currently, the following code is always generated.
134571    ------------------------------------------------------------------------------------------------
134572    XLA_AE_LINES_PKG.ValidateCurrentLine;
134573 
134574    ------------------------------------------------------------------------------------
134575    -- 4219869 Business Flow
134576    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
134577    ------------------------------------------------------------------------------------
134578    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134579 
134580    ----------------------------------------------------------------------------------
134581    -- 4219869 Business Flow
134582    -- Update journal entry status -- Need to generate this within IF <condition>
134583    ----------------------------------------------------------------------------------
134584    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134585          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
134586          ,p_balance_type_code => l_balance_type_code
134587          );
134588 
134589    -------------------------------------------------------------------------------------------
134590    -- 4262811 - Generate the Accrual Reversal lines
134591    -------------------------------------------------------------------------------------------
134592    BEGIN
134593       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
134594                               (g_array_event(p_event_id).array_value_num('header_index'));
134595       IF l_acc_rev_flag IS NULL THEN
134596          l_acc_rev_flag := 'N';
134597       END IF;
134598    EXCEPTION
134599       WHEN OTHERS THEN
134600          l_acc_rev_flag := 'N';
134601    END;
134602    --
134603    IF (l_acc_rev_flag = 'Y') THEN
134604 
134605        -- 4645092  ------------------------------------------------------------------------------
134606        -- To allow MPA report to determine if it should generate report process
134607        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134608        ------------------------------------------------------------------------------------------
134609 
134610        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134611        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134612    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
134613    -- call ADRs
134614    -- Bug 4922099
134615    --
134616    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134617         (NVL(l_actual_upg_option, 'N') = 'O') OR
134618         (NVL(l_enc_upg_option, 'N') = 'O')
134619       )
134620    THEN
134621    NULL;
134622    --
134623    --
134624    
134625   l_ccid := AcctDerRule_28(
134626            p_application_id           => p_application_id
134627          , p_ae_header_id             => l_ae_header_id 
134628 , p_source_15 => p_source_15
134629 , p_source_41 => p_source_41
134630 , p_source_42 => p_source_42
134631 , p_source_43 => p_source_43
134632 , p_source_44 => p_source_44
134633 , p_source_45 => p_source_45
134634          , x_transaction_coa_id       => l_adr_transaction_coa_id
134635          , x_accounting_coa_id        => l_adr_accounting_coa_id
134636          , x_value_type_code          => l_adr_value_type_code
134637          , p_side                     => 'NA'
134638    );
134639 
134640    xla_ae_lines_pkg.set_ccid(
134641     p_code_combination_id          => l_ccid
134642   , p_value_type_code              => l_adr_value_type_code
134643   , p_transaction_coa_id           => l_adr_transaction_coa_id
134644   , p_accounting_coa_id            => l_adr_accounting_coa_id
134645   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
134646   , p_adr_type_code                => 'S'
134647   , p_component_type               => l_component_type
134648   , p_component_code               => l_component_code
134649   , p_component_type_code          => l_component_type_code
134650   , p_component_appl_id            => l_component_appl_id
134651   , p_amb_context_code             => l_amb_context_code
134652   , p_side                         => 'NA'
134653   );
134654 
134655 
134656    --
134657    --
134658    END IF;
134659 
134660        --
134661        -- Update the line information that should be overwritten
134662        --
134663        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134664                                          p_header_num   => 1);
134665        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
134666 
134667        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134668 
134669        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
134670           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134671        END IF;
134672 
134673       --
134674       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134675       --
134676       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134677           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
134678       ELSE
134679           ---------------------------------------------------------------------------------------------------
134680           -- 4262811a Switch Sign
134681           ---------------------------------------------------------------------------------------------------
134682           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
134683           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134684                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134685           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134686                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134687           -- 5132302
134688           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134689                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134690 
134691       END IF;
134692 
134693       -- 4955764
134694       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134695       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134696 
134697 
134698       XLA_AE_LINES_PKG.ValidateCurrentLine;
134699       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134700 
134701       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134702                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134703                ,p_balance_type_code => l_balance_type_code);
134704 
134705    END IF;
134706 
134707    -----------------------------------------------------------------------------------------
134708    -- 4262811 Multiperiod Accounting
134709    -----------------------------------------------------------------------------------------
134710      -- No MPA option is assigned.
134711 
134712 
134713 END IF;
134714 END IF;
134715 --
134716 
134717 --
134718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134719    trace
134720       (p_msg      => 'END of AcctLineType_256'
134721       ,p_level    => C_LEVEL_PROCEDURE
134722       ,p_module   => l_log_module);
134723 END IF;
134724 --
134725 EXCEPTION
134726   WHEN xla_exceptions_pkg.application_exception THEN
134727       RAISE;
134728   WHEN OTHERS THEN
134729        xla_exceptions_pkg.raise_message
134730            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_256');
134731 END AcctLineType_256;
134732 --
134733 
134734 ---------------------------------------
134735 --
134736 -- PRIVATE FUNCTION
134737 --         AcctLineType_257
134738 --
134739 ---------------------------------------
134740 PROCEDURE AcctLineType_257 (
134741   p_application_id        IN NUMBER
134742  ,p_event_id              IN NUMBER
134743  ,p_calculate_acctd_flag  IN VARCHAR2
134744  ,p_calculate_g_l_flag    IN VARCHAR2
134745  ,p_actual_flag           IN OUT VARCHAR2
134746  ,p_balance_type_code     OUT VARCHAR2
134747  ,p_gain_or_loss_ref      OUT VARCHAR2
134748  
134749 --TRANSACTION_ID
134750  , p_source_1            IN NUMBER
134751 --Item Concatenated Segments
134752  , p_source_2            IN VARCHAR2
134753 --Transaction Quantity
134754  , p_source_3            IN NUMBER
134755 --Transaction Unit of Measure Code
134756  , p_source_4            IN VARCHAR2
134757 --Inventory Transaction Type Description
134758  , p_source_5            IN VARCHAR2
134759 --Cost Element Name
134760  , p_source_15            IN NUMBER
134761 --Product Line Accounting Category Material Account
134762  , p_source_41            IN NUMBER
134763 --Product Line Accounting Category Material Overhead Account
134764  , p_source_42            IN NUMBER
134765 --Product Line Accounting Category Resource Account
134766  , p_source_43            IN NUMBER
134767 --Product Line Accounting Category Outside Processing Account
134768  , p_source_44            IN NUMBER
134769 --Product Line Accounting Category Overhead Account
134770  , p_source_45            IN NUMBER
134771 --DISTRIBUTION_IDENTIFIER
134772  , p_source_84            IN NUMBER
134773 --Distribution Type
134774  , p_source_85            IN VARCHAR2
134775  , p_source_85_meaning    IN VARCHAR2
134776 --Entered Currency Code
134777  , p_source_88            IN VARCHAR2
134778 --Entered Amount
134779  , p_source_91            IN NUMBER
134780 --Currency Conversion Date
134781  , p_source_92            IN DATE
134782 --Currency Conversion Rate
134783  , p_source_93            IN NUMBER
134784 --Currency Conversion Type
134785  , p_source_94            IN VARCHAR2
134786 --Accounted Amount
134787  , p_source_95            IN NUMBER
134788 --Accounting Line Type
134789  , p_source_97            IN NUMBER
134790 --Organization Code
134791  , p_source_108            IN VARCHAR2
134792 )
134793 IS
134794 
134795 l_component_type              VARCHAR2(80);
134796 l_component_code              VARCHAR2(30);
134797 l_component_type_code         VARCHAR2(1);
134798 l_component_appl_id           INTEGER;
134799 l_amb_context_code            VARCHAR2(30);
134800 l_entity_code                 VARCHAR2(30);
134801 l_event_class_code            VARCHAR2(30);
134802 l_ae_header_id                NUMBER;
134803 l_event_type_code             VARCHAR2(30);
134804 l_line_definition_code        VARCHAR2(30);
134805 l_line_definition_owner_code  VARCHAR2(1);
134806 --
134807 -- adr variables
134808 l_segment                     VARCHAR2(30);
134809 l_ccid                        NUMBER;
134810 l_adr_transaction_coa_id      NUMBER;
134811 l_adr_accounting_coa_id       NUMBER;
134812 l_adr_flexfield_segment_code  VARCHAR2(30);
134813 l_adr_flex_value_set_id       NUMBER;
134814 l_adr_value_type_code         VARCHAR2(30);
134815 l_adr_value_combination_id    NUMBER;
134816 l_adr_value_segment_code      VARCHAR2(30);
134817 
134818 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
134819 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
134820 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
134821 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
134822 
134823 -- 4262811 Variables ------------------------------------------------------------------------------------------
134824 l_entered_amt_idx             NUMBER;
134825 l_accted_amt_idx              NUMBER;
134826 l_acc_rev_flag                VARCHAR2(1);
134827 l_accrual_line_num            NUMBER;
134828 l_tmp_amt                     NUMBER;
134829 l_acc_rev_natural_side_code   VARCHAR2(1);
134830 
134831 l_num_entries                 NUMBER;
134832 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
134833 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
134834 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
134835 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
134836 l_recog_line_1                NUMBER;
134837 l_recog_line_2                NUMBER;
134838 
134839 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
134840 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
134841 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
134842 
134843 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134844 
134845 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
134846 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
134847 
134848 ---------------------------------------------------------------------------------------------------------------
134849 
134850 
134851 --
134852 -- bulk performance
134853 --
134854 l_balance_type_code           VARCHAR2(1);
134855 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
134856 l_log_module                  VARCHAR2(240);
134857 
134858 --
134859 -- Upgrade strategy
134860 --
134861 l_actual_upg_option           VARCHAR2(1);
134862 l_enc_upg_option           VARCHAR2(1);
134863 
134864 --
134865 BEGIN
134866 --
134867 IF g_log_enabled THEN
134868       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_257';
134869 END IF;
134870 --
134871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134872 
134873       trace
134874          (p_msg      => 'BEGIN of AcctLineType_257'
134875          ,p_level    => C_LEVEL_PROCEDURE
134876          ,p_module   => l_log_module);
134877 
134878 END IF;
134879 --
134880 l_component_type             := 'AMB_JLT';
134881 l_component_code             := 'INVENTORY_VALUATION';
134882 l_component_type_code        := 'S';
134883 l_component_appl_id          :=  707;
134884 l_amb_context_code           := 'DEFAULT';
134885 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
134886 l_event_class_code           := 'SALES_ORDER';
134887 l_event_type_code            := 'LOG_SO_ISSUE';
134888 l_line_definition_owner_code := 'S';
134889 l_line_definition_code       := 'PI_LOG_SO_ISSUE';
134890 --
134891 l_balance_type_code          := 'A';
134892 l_segment                     := NULL;
134893 l_ccid                        := NULL;
134894 l_adr_transaction_coa_id      := NULL;
134895 l_adr_accounting_coa_id       := NULL;
134896 l_adr_flexfield_segment_code  := NULL;
134897 l_adr_flex_value_set_id       := NULL;
134898 l_adr_value_type_code         := NULL;
134899 l_adr_value_combination_id    := NULL;
134900 l_adr_value_segment_code      := NULL;
134901 
134902 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
134903 l_bflow_class_code           := '';    -- 4219869 Business Flow
134904 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
134905 l_budgetary_control_flag     := 'N';
134906 
134907 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
134908 l_bflow_applied_to_amt       := NULL; -- 5132302
134909 l_entered_amt_idx            := NULL;          -- 4262811
134910 l_accted_amt_idx             := NULL;          -- 4262811
134911 l_acc_rev_flag               := NULL;          -- 4262811
134912 l_accrual_line_num           := NULL;          -- 4262811
134913 l_tmp_amt                    := NULL;          -- 4262811
134914 --
134915  
134916 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134917     l_balance_type_code <> 'B' THEN
134918 IF NVL(p_source_97,9E125) =  1
134919  THEN 
134920 
134921    --
134922    XLA_AE_LINES_PKG.SetNewLine;
134923 
134924    p_balance_type_code          := l_balance_type_code;
134925    -- set the flag so later we will know whether the gain loss line needs to be created
134926    
134927    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134928      p_actual_flag :='A';
134929    END IF;
134930 
134931    --
134932    -- bulk performance
134933    --
134934    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134935                                       p_header_num   => 0); -- 4262811
134936    --
134937    -- set accounting line options
134938    --
134939    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134940            p_natural_side_code          => 'D'
134941          , p_gain_or_loss_flag          => 'N'
134942          , p_gl_transfer_mode_code      => 'S'
134943          , p_acct_entry_type_code       => 'A'
134944          , p_switch_side_flag           => 'Y'
134945          , p_merge_duplicate_code       => 'N'
134946          );
134947    --
134948    l_acc_rev_natural_side_code := 'C';  -- 4262811
134949    -- 
134950    --
134951    -- set accounting line type info
134952    --
134953    xla_ae_lines_pkg.SetAcctLineType
134954       (p_component_type             => l_component_type
134955       ,p_event_type_code            => l_event_type_code
134956       ,p_line_definition_owner_code => l_line_definition_owner_code
134957       ,p_line_definition_code       => l_line_definition_code
134958       ,p_accounting_line_code       => l_component_code
134959       ,p_accounting_line_type_code  => l_component_type_code
134960       ,p_accounting_line_appl_id    => l_component_appl_id
134961       ,p_amb_context_code           => l_amb_context_code
134962       ,p_entity_code                => l_entity_code
134963       ,p_event_class_code           => l_event_class_code);
134964    --
134965    -- set accounting class
134966    --
134967    xla_ae_lines_pkg.SetAcctClass(
134968            p_accounting_class_code  => 'INVENTORY_VALUATION'
134969          , p_ae_header_id           => l_ae_header_id
134970          );
134971 
134972    --
134973    -- set rounding class
134974    --
134975    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134976                       'INVENTORY_VALUATION';
134977 
134978    --
134979    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134980    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134981    --
134982    -- bulk performance
134983    --
134984    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134985 
134986    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134987       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134988 
134989    -- 4955764
134990    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134991       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134992 
134993    -- 4458381 Public Sector Enh
134994    
134995    --
134996    -- set accounting attributes for the line type
134997    --
134998    l_entered_amt_idx := 3;
134999    l_accted_amt_idx  := 8;
135000    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
135001    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
135002    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
135003    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
135004    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
135005    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
135006    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
135007    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
135008    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
135009    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
135010    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
135011    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135012    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
135013    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135014    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
135015    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135016    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
135017 
135018    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135019    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135020 
135021    ---------------------------------------------------------------------------------------------------------------
135022    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135023    ---------------------------------------------------------------------------------------------------------------
135024    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135025 
135026    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135027    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135028 
135029    IF xla_accounting_cache_pkg.GetValueChar
135030          (p_source_code         => 'LEDGER_CATEGORY_CODE'
135031          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135032    AND l_bflow_method_code = 'PRIOR_ENTRY'
135033 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135034    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135035          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135036        )
135037    THEN
135038          xla_ae_lines_pkg.BflowUpgEntry
135039            (p_business_method_code    => l_bflow_method_code
135040            ,p_business_class_code     => l_bflow_class_code
135041            ,p_balance_type            => l_balance_type_code);
135042    ELSE
135043       NULL;
135044 -- No business flow processing for business flow method of NONE.
135045    END IF;
135046 
135047    --
135048    -- call analytical criteria
135049    --
135050    
135051 
135052 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
135053 xla_ae_lines_pkg.SetAnalyticalCriteria(
135054    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
135055  , p_analytical_criterion_owner   => 'S'
135056  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
135057  , p_amb_context_code             => 'DEFAULT'
135058  , p_balancing_flag               => 'Y'
135059  
135060  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
135061  , p_analytical_detail_num_1     =>  NULL
135062  , p_analytical_detail_date_1    =>  NULL
135063 
135064  , p_ae_header_id                 => l_ae_header_id
135065 )
135066 ;
135067 --
135068 
135069    --
135070    -- call description
135071    --
135072    
135073 xla_ae_lines_pkg.SetLineDescription(
135074    p_ae_header_id => l_ae_header_id
135075   ,p_description  => Description_1 (
135076      p_application_id         => p_application_id
135077    , p_ae_header_id           => l_ae_header_id 
135078 , p_source_1 => p_source_1
135079 , p_source_2 => p_source_2
135080 , p_source_3 => p_source_3
135081 , p_source_4 => p_source_4
135082 , p_source_5 => p_source_5
135083    )
135084 );
135085 
135086 
135087    --
135088    -- call ADRs
135089    -- Bug 4922099
135090    --
135091    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135092         (NVL(l_actual_upg_option, 'N') = 'O') OR
135093         (NVL(l_enc_upg_option, 'N') = 'O')
135094       )
135095    THEN
135096    NULL;
135097    --
135098    --
135099    
135100   l_ccid := AcctDerRule_28(
135101            p_application_id           => p_application_id
135102          , p_ae_header_id             => l_ae_header_id 
135103 , p_source_15 => p_source_15
135104 , p_source_41 => p_source_41
135105 , p_source_42 => p_source_42
135106 , p_source_43 => p_source_43
135107 , p_source_44 => p_source_44
135108 , p_source_45 => p_source_45
135109          , x_transaction_coa_id       => l_adr_transaction_coa_id
135110          , x_accounting_coa_id        => l_adr_accounting_coa_id
135111          , x_value_type_code          => l_adr_value_type_code
135112          , p_side                     => 'NA'
135113    );
135114 
135115    xla_ae_lines_pkg.set_ccid(
135116     p_code_combination_id          => l_ccid
135117   , p_value_type_code              => l_adr_value_type_code
135118   , p_transaction_coa_id           => l_adr_transaction_coa_id
135119   , p_accounting_coa_id            => l_adr_accounting_coa_id
135120   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
135121   , p_adr_type_code                => 'S'
135122   , p_component_type               => l_component_type
135123   , p_component_code               => l_component_code
135124   , p_component_type_code          => l_component_type_code
135125   , p_component_appl_id            => l_component_appl_id
135126   , p_amb_context_code             => l_amb_context_code
135127   , p_side                         => 'NA'
135128   );
135129 
135130 
135131    --
135132    --
135133    END IF;
135134    --
135135    -- Bug 4922099
135136    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135137           (NVL(l_enc_upg_option, 'N') = 'O')
135138         ) AND
135139         (l_bflow_method_code = 'PRIOR_ENTRY')
135140       )
135141    THEN
135142       IF
135143       --
135144       1 = 2
135145       --
135146       THEN
135147       xla_accounting_err_pkg.build_message
135148                                     (p_appli_s_name            => 'XLA'
135149                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135150                                     ,p_token_1                 => 'LINE_NUMBER'
135151                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
135152                                     ,p_token_2                 => 'LINE_TYPE_NAME'
135153                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
135154                                                                              l_component_type
135155                                                                             ,l_component_code
135156                                                                             ,l_component_type_code
135157                                                                             ,l_component_appl_id
135158                                                                             ,l_amb_context_code
135159                                                                             ,l_entity_code
135160                                                                             ,l_event_class_code
135161                                                                            )
135162                                     ,p_token_3                 => 'OWNER'
135163                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
135164                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
135165                                                                           ,p_lookup_code    => l_component_type_code
135166                                                                          )
135167                                     ,p_token_4                 => 'PRODUCT_NAME'
135168                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135169                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135170                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135171                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135172                                     ,p_ae_header_id            =>  NULL
135173                                        );
135174 
135175         IF (C_LEVEL_ERROR>= g_log_level) THEN
135176                  trace
135177                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135178                       ,p_level    => C_LEVEL_ERROR
135179                       ,p_module   => l_log_module);
135180         END IF;
135181       END IF;
135182    END IF;
135183    --
135184    --
135185    ------------------------------------------------------------------------------------------------
135186    -- 4219869 Business Flow
135187    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135188    -- Prior Entry.  Currently, the following code is always generated.
135189    ------------------------------------------------------------------------------------------------
135190    XLA_AE_LINES_PKG.ValidateCurrentLine;
135191 
135192    ------------------------------------------------------------------------------------
135193    -- 4219869 Business Flow
135194    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135195    ------------------------------------------------------------------------------------
135196    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135197 
135198    ----------------------------------------------------------------------------------
135199    -- 4219869 Business Flow
135200    -- Update journal entry status -- Need to generate this within IF <condition>
135201    ----------------------------------------------------------------------------------
135202    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135203          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135204          ,p_balance_type_code => l_balance_type_code
135205          );
135206 
135207    -------------------------------------------------------------------------------------------
135208    -- 4262811 - Generate the Accrual Reversal lines
135209    -------------------------------------------------------------------------------------------
135210    BEGIN
135211       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135212                               (g_array_event(p_event_id).array_value_num('header_index'));
135213       IF l_acc_rev_flag IS NULL THEN
135214          l_acc_rev_flag := 'N';
135215       END IF;
135216    EXCEPTION
135217       WHEN OTHERS THEN
135218          l_acc_rev_flag := 'N';
135219    END;
135220    --
135221    IF (l_acc_rev_flag = 'Y') THEN
135222 
135223        -- 4645092  ------------------------------------------------------------------------------
135224        -- To allow MPA report to determine if it should generate report process
135225        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135226        ------------------------------------------------------------------------------------------
135227 
135228        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135229        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135230    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
135231    -- call ADRs
135232    -- Bug 4922099
135233    --
135234    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135235         (NVL(l_actual_upg_option, 'N') = 'O') OR
135236         (NVL(l_enc_upg_option, 'N') = 'O')
135237       )
135238    THEN
135239    NULL;
135240    --
135241    --
135242    
135243   l_ccid := AcctDerRule_28(
135244            p_application_id           => p_application_id
135245          , p_ae_header_id             => l_ae_header_id 
135246 , p_source_15 => p_source_15
135247 , p_source_41 => p_source_41
135248 , p_source_42 => p_source_42
135249 , p_source_43 => p_source_43
135250 , p_source_44 => p_source_44
135251 , p_source_45 => p_source_45
135252          , x_transaction_coa_id       => l_adr_transaction_coa_id
135253          , x_accounting_coa_id        => l_adr_accounting_coa_id
135254          , x_value_type_code          => l_adr_value_type_code
135255          , p_side                     => 'NA'
135256    );
135257 
135258    xla_ae_lines_pkg.set_ccid(
135259     p_code_combination_id          => l_ccid
135260   , p_value_type_code              => l_adr_value_type_code
135261   , p_transaction_coa_id           => l_adr_transaction_coa_id
135262   , p_accounting_coa_id            => l_adr_accounting_coa_id
135263   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
135264   , p_adr_type_code                => 'S'
135265   , p_component_type               => l_component_type
135266   , p_component_code               => l_component_code
135267   , p_component_type_code          => l_component_type_code
135268   , p_component_appl_id            => l_component_appl_id
135269   , p_amb_context_code             => l_amb_context_code
135270   , p_side                         => 'NA'
135271   );
135272 
135273 
135274    --
135275    --
135276    END IF;
135277 
135278        --
135279        -- Update the line information that should be overwritten
135280        --
135281        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135282                                          p_header_num   => 1);
135283        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
135284 
135285        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135286 
135287        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
135288           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135289        END IF;
135290 
135291       --
135292       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135293       --
135294       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135295           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
135296       ELSE
135297           ---------------------------------------------------------------------------------------------------
135298           -- 4262811a Switch Sign
135299           ---------------------------------------------------------------------------------------------------
135300           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
135301           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135302                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135303           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135304                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135305           -- 5132302
135306           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135307                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135308 
135309       END IF;
135310 
135311       -- 4955764
135312       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135313       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135314 
135315 
135316       XLA_AE_LINES_PKG.ValidateCurrentLine;
135317       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135318 
135319       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135320                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135321                ,p_balance_type_code => l_balance_type_code);
135322 
135323    END IF;
135324 
135325    -----------------------------------------------------------------------------------------
135326    -- 4262811 Multiperiod Accounting
135327    -----------------------------------------------------------------------------------------
135328      -- No MPA option is assigned.
135329 
135330 
135331 END IF;
135332 END IF;
135333 --
135334 
135335 --
135336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135337    trace
135338       (p_msg      => 'END of AcctLineType_257'
135339       ,p_level    => C_LEVEL_PROCEDURE
135340       ,p_module   => l_log_module);
135341 END IF;
135342 --
135343 EXCEPTION
135344   WHEN xla_exceptions_pkg.application_exception THEN
135345       RAISE;
135346   WHEN OTHERS THEN
135347        xla_exceptions_pkg.raise_message
135348            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_257');
135349 END AcctLineType_257;
135350 --
135351 
135352 ---------------------------------------
135353 --
135354 -- PRIVATE FUNCTION
135355 --         AcctLineType_258
135356 --
135357 ---------------------------------------
135358 PROCEDURE AcctLineType_258 (
135359   p_application_id        IN NUMBER
135360  ,p_event_id              IN NUMBER
135361  ,p_calculate_acctd_flag  IN VARCHAR2
135362  ,p_calculate_g_l_flag    IN VARCHAR2
135363  ,p_actual_flag           IN OUT VARCHAR2
135364  ,p_balance_type_code     OUT VARCHAR2
135365  ,p_gain_or_loss_ref      OUT VARCHAR2
135366  
135367 --TRANSACTION_ID
135368  , p_source_1            IN NUMBER
135369 --Item Concatenated Segments
135370  , p_source_2            IN VARCHAR2
135371 --Transaction Quantity
135372  , p_source_3            IN NUMBER
135373 --Transaction Unit of Measure Code
135374  , p_source_4            IN VARCHAR2
135375 --Inventory Transaction Type Description
135376  , p_source_5            IN VARCHAR2
135377 --Cost Element Name
135378  , p_source_15            IN NUMBER
135379 --Product Line Accounting Category Material Account
135380  , p_source_41            IN NUMBER
135381 --Product Line Accounting Category Material Overhead Account
135382  , p_source_42            IN NUMBER
135383 --Product Line Accounting Category Resource Account
135384  , p_source_43            IN NUMBER
135385 --Product Line Accounting Category Outside Processing Account
135386  , p_source_44            IN NUMBER
135387 --Product Line Accounting Category Overhead Account
135388  , p_source_45            IN NUMBER
135389 --DISTRIBUTION_IDENTIFIER
135390  , p_source_84            IN NUMBER
135391 --Distribution Type
135392  , p_source_85            IN VARCHAR2
135393  , p_source_85_meaning    IN VARCHAR2
135394 --Entered Currency Code
135395  , p_source_88            IN VARCHAR2
135396 --Entered Amount
135397  , p_source_91            IN NUMBER
135398 --Currency Conversion Date
135399  , p_source_92            IN DATE
135400 --Currency Conversion Rate
135401  , p_source_93            IN NUMBER
135402 --Currency Conversion Type
135403  , p_source_94            IN VARCHAR2
135404 --Accounted Amount
135405  , p_source_95            IN NUMBER
135406 --Accounting Line Type
135407  , p_source_97            IN NUMBER
135408 --Organization Code
135409  , p_source_108            IN VARCHAR2
135410 )
135411 IS
135412 
135413 l_component_type              VARCHAR2(80);
135414 l_component_code              VARCHAR2(30);
135415 l_component_type_code         VARCHAR2(1);
135416 l_component_appl_id           INTEGER;
135417 l_amb_context_code            VARCHAR2(30);
135418 l_entity_code                 VARCHAR2(30);
135419 l_event_class_code            VARCHAR2(30);
135420 l_ae_header_id                NUMBER;
135421 l_event_type_code             VARCHAR2(30);
135422 l_line_definition_code        VARCHAR2(30);
135423 l_line_definition_owner_code  VARCHAR2(1);
135424 --
135425 -- adr variables
135426 l_segment                     VARCHAR2(30);
135427 l_ccid                        NUMBER;
135428 l_adr_transaction_coa_id      NUMBER;
135429 l_adr_accounting_coa_id       NUMBER;
135430 l_adr_flexfield_segment_code  VARCHAR2(30);
135431 l_adr_flex_value_set_id       NUMBER;
135432 l_adr_value_type_code         VARCHAR2(30);
135433 l_adr_value_combination_id    NUMBER;
135434 l_adr_value_segment_code      VARCHAR2(30);
135435 
135436 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
135437 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
135438 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
135439 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
135440 
135441 -- 4262811 Variables ------------------------------------------------------------------------------------------
135442 l_entered_amt_idx             NUMBER;
135443 l_accted_amt_idx              NUMBER;
135444 l_acc_rev_flag                VARCHAR2(1);
135445 l_accrual_line_num            NUMBER;
135446 l_tmp_amt                     NUMBER;
135447 l_acc_rev_natural_side_code   VARCHAR2(1);
135448 
135449 l_num_entries                 NUMBER;
135450 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
135451 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
135452 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
135453 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
135454 l_recog_line_1                NUMBER;
135455 l_recog_line_2                NUMBER;
135456 
135457 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
135458 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
135459 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
135460 
135461 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135462 
135463 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
135464 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
135465 
135466 ---------------------------------------------------------------------------------------------------------------
135467 
135468 
135469 --
135470 -- bulk performance
135471 --
135472 l_balance_type_code           VARCHAR2(1);
135473 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
135474 l_log_module                  VARCHAR2(240);
135475 
135476 --
135477 -- Upgrade strategy
135478 --
135479 l_actual_upg_option           VARCHAR2(1);
135480 l_enc_upg_option           VARCHAR2(1);
135481 
135482 --
135483 BEGIN
135484 --
135485 IF g_log_enabled THEN
135486       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_258';
135487 END IF;
135488 --
135489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135490 
135491       trace
135492          (p_msg      => 'BEGIN of AcctLineType_258'
135493          ,p_level    => C_LEVEL_PROCEDURE
135494          ,p_module   => l_log_module);
135495 
135496 END IF;
135497 --
135498 l_component_type             := 'AMB_JLT';
135499 l_component_code             := 'INVENTORY_VALUATION';
135500 l_component_type_code        := 'S';
135501 l_component_appl_id          :=  707;
135502 l_amb_context_code           := 'DEFAULT';
135503 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
135504 l_event_class_code           := 'USER_DEFINE';
135505 l_event_type_code            := 'UCG_TXFR';
135506 l_line_definition_owner_code := 'S';
135507 l_line_definition_code       := 'PI_CG_TXFR';
135508 --
135509 l_balance_type_code          := 'A';
135510 l_segment                     := NULL;
135511 l_ccid                        := NULL;
135512 l_adr_transaction_coa_id      := NULL;
135513 l_adr_accounting_coa_id       := NULL;
135514 l_adr_flexfield_segment_code  := NULL;
135515 l_adr_flex_value_set_id       := NULL;
135516 l_adr_value_type_code         := NULL;
135517 l_adr_value_combination_id    := NULL;
135518 l_adr_value_segment_code      := NULL;
135519 
135520 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
135521 l_bflow_class_code           := '';    -- 4219869 Business Flow
135522 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
135523 l_budgetary_control_flag     := 'N';
135524 
135525 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
135526 l_bflow_applied_to_amt       := NULL; -- 5132302
135527 l_entered_amt_idx            := NULL;          -- 4262811
135528 l_accted_amt_idx             := NULL;          -- 4262811
135529 l_acc_rev_flag               := NULL;          -- 4262811
135530 l_accrual_line_num           := NULL;          -- 4262811
135531 l_tmp_amt                    := NULL;          -- 4262811
135532 --
135533  
135534 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
135535     l_balance_type_code <> 'B' THEN
135536 IF NVL(p_source_97,9E125) =  1
135537  THEN 
135538 
135539    --
135540    XLA_AE_LINES_PKG.SetNewLine;
135541 
135542    p_balance_type_code          := l_balance_type_code;
135543    -- set the flag so later we will know whether the gain loss line needs to be created
135544    
135545    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
135546      p_actual_flag :='A';
135547    END IF;
135548 
135549    --
135550    -- bulk performance
135551    --
135552    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
135553                                       p_header_num   => 0); -- 4262811
135554    --
135555    -- set accounting line options
135556    --
135557    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
135558            p_natural_side_code          => 'D'
135559          , p_gain_or_loss_flag          => 'N'
135560          , p_gl_transfer_mode_code      => 'S'
135561          , p_acct_entry_type_code       => 'A'
135562          , p_switch_side_flag           => 'Y'
135563          , p_merge_duplicate_code       => 'N'
135564          );
135565    --
135566    l_acc_rev_natural_side_code := 'C';  -- 4262811
135567    -- 
135568    --
135569    -- set accounting line type info
135570    --
135571    xla_ae_lines_pkg.SetAcctLineType
135572       (p_component_type             => l_component_type
135573       ,p_event_type_code            => l_event_type_code
135574       ,p_line_definition_owner_code => l_line_definition_owner_code
135575       ,p_line_definition_code       => l_line_definition_code
135576       ,p_accounting_line_code       => l_component_code
135577       ,p_accounting_line_type_code  => l_component_type_code
135578       ,p_accounting_line_appl_id    => l_component_appl_id
135579       ,p_amb_context_code           => l_amb_context_code
135580       ,p_entity_code                => l_entity_code
135581       ,p_event_class_code           => l_event_class_code);
135582    --
135583    -- set accounting class
135584    --
135585    xla_ae_lines_pkg.SetAcctClass(
135586            p_accounting_class_code  => 'INVENTORY_VALUATION'
135587          , p_ae_header_id           => l_ae_header_id
135588          );
135589 
135590    --
135591    -- set rounding class
135592    --
135593    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
135594                       'INVENTORY_VALUATION';
135595 
135596    --
135597    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
135598    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
135599    --
135600    -- bulk performance
135601    --
135602    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
135603 
135604    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
135605       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
135606 
135607    -- 4955764
135608    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135609       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
135610 
135611    -- 4458381 Public Sector Enh
135612    
135613    --
135614    -- set accounting attributes for the line type
135615    --
135616    l_entered_amt_idx := 3;
135617    l_accted_amt_idx  := 8;
135618    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
135619    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
135620    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
135621    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
135622    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
135623    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
135624    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
135625    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
135626    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
135627    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
135628    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
135629    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135630    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
135631    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135632    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
135633    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135634    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
135635 
135636    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135637    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135638 
135639    ---------------------------------------------------------------------------------------------------------------
135640    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135641    ---------------------------------------------------------------------------------------------------------------
135642    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135643 
135644    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135645    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135646 
135647    IF xla_accounting_cache_pkg.GetValueChar
135648          (p_source_code         => 'LEDGER_CATEGORY_CODE'
135649          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135650    AND l_bflow_method_code = 'PRIOR_ENTRY'
135651 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135652    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135653          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135654        )
135655    THEN
135656          xla_ae_lines_pkg.BflowUpgEntry
135657            (p_business_method_code    => l_bflow_method_code
135658            ,p_business_class_code     => l_bflow_class_code
135659            ,p_balance_type            => l_balance_type_code);
135660    ELSE
135661       NULL;
135662 -- No business flow processing for business flow method of NONE.
135663    END IF;
135664 
135665    --
135666    -- call analytical criteria
135667    --
135668    
135669 
135670 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
135671 xla_ae_lines_pkg.SetAnalyticalCriteria(
135672    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
135673  , p_analytical_criterion_owner   => 'S'
135674  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
135675  , p_amb_context_code             => 'DEFAULT'
135676  , p_balancing_flag               => 'Y'
135677  
135678  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
135679  , p_analytical_detail_num_1     =>  NULL
135680  , p_analytical_detail_date_1    =>  NULL
135681 
135682  , p_ae_header_id                 => l_ae_header_id
135683 )
135684 ;
135685 --
135686 
135687    --
135688    -- call description
135689    --
135690    
135691 xla_ae_lines_pkg.SetLineDescription(
135692    p_ae_header_id => l_ae_header_id
135693   ,p_description  => Description_1 (
135694      p_application_id         => p_application_id
135695    , p_ae_header_id           => l_ae_header_id 
135696 , p_source_1 => p_source_1
135697 , p_source_2 => p_source_2
135698 , p_source_3 => p_source_3
135699 , p_source_4 => p_source_4
135700 , p_source_5 => p_source_5
135701    )
135702 );
135703 
135704 
135705    --
135706    -- call ADRs
135707    -- Bug 4922099
135708    --
135709    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135710         (NVL(l_actual_upg_option, 'N') = 'O') OR
135711         (NVL(l_enc_upg_option, 'N') = 'O')
135712       )
135713    THEN
135714    NULL;
135715    --
135716    --
135717    
135718   l_ccid := AcctDerRule_28(
135719            p_application_id           => p_application_id
135720          , p_ae_header_id             => l_ae_header_id 
135721 , p_source_15 => p_source_15
135722 , p_source_41 => p_source_41
135723 , p_source_42 => p_source_42
135724 , p_source_43 => p_source_43
135725 , p_source_44 => p_source_44
135726 , p_source_45 => p_source_45
135727          , x_transaction_coa_id       => l_adr_transaction_coa_id
135728          , x_accounting_coa_id        => l_adr_accounting_coa_id
135729          , x_value_type_code          => l_adr_value_type_code
135730          , p_side                     => 'NA'
135731    );
135732 
135733    xla_ae_lines_pkg.set_ccid(
135734     p_code_combination_id          => l_ccid
135735   , p_value_type_code              => l_adr_value_type_code
135736   , p_transaction_coa_id           => l_adr_transaction_coa_id
135737   , p_accounting_coa_id            => l_adr_accounting_coa_id
135738   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
135739   , p_adr_type_code                => 'S'
135740   , p_component_type               => l_component_type
135741   , p_component_code               => l_component_code
135742   , p_component_type_code          => l_component_type_code
135743   , p_component_appl_id            => l_component_appl_id
135744   , p_amb_context_code             => l_amb_context_code
135745   , p_side                         => 'NA'
135746   );
135747 
135748 
135749    --
135750    --
135751    END IF;
135752    --
135753    -- Bug 4922099
135754    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135755           (NVL(l_enc_upg_option, 'N') = 'O')
135756         ) AND
135757         (l_bflow_method_code = 'PRIOR_ENTRY')
135758       )
135759    THEN
135760       IF
135761       --
135762       1 = 2
135763       --
135764       THEN
135765       xla_accounting_err_pkg.build_message
135766                                     (p_appli_s_name            => 'XLA'
135767                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135768                                     ,p_token_1                 => 'LINE_NUMBER'
135769                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
135770                                     ,p_token_2                 => 'LINE_TYPE_NAME'
135771                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
135772                                                                              l_component_type
135773                                                                             ,l_component_code
135774                                                                             ,l_component_type_code
135775                                                                             ,l_component_appl_id
135776                                                                             ,l_amb_context_code
135777                                                                             ,l_entity_code
135778                                                                             ,l_event_class_code
135779                                                                            )
135780                                     ,p_token_3                 => 'OWNER'
135781                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
135782                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
135783                                                                           ,p_lookup_code    => l_component_type_code
135784                                                                          )
135785                                     ,p_token_4                 => 'PRODUCT_NAME'
135786                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135787                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135788                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135789                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135790                                     ,p_ae_header_id            =>  NULL
135791                                        );
135792 
135793         IF (C_LEVEL_ERROR>= g_log_level) THEN
135794                  trace
135795                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135796                       ,p_level    => C_LEVEL_ERROR
135797                       ,p_module   => l_log_module);
135798         END IF;
135799       END IF;
135800    END IF;
135801    --
135802    --
135803    ------------------------------------------------------------------------------------------------
135804    -- 4219869 Business Flow
135805    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135806    -- Prior Entry.  Currently, the following code is always generated.
135807    ------------------------------------------------------------------------------------------------
135808    XLA_AE_LINES_PKG.ValidateCurrentLine;
135809 
135810    ------------------------------------------------------------------------------------
135811    -- 4219869 Business Flow
135812    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135813    ------------------------------------------------------------------------------------
135814    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135815 
135816    ----------------------------------------------------------------------------------
135817    -- 4219869 Business Flow
135818    -- Update journal entry status -- Need to generate this within IF <condition>
135819    ----------------------------------------------------------------------------------
135820    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135821          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135822          ,p_balance_type_code => l_balance_type_code
135823          );
135824 
135825    -------------------------------------------------------------------------------------------
135826    -- 4262811 - Generate the Accrual Reversal lines
135827    -------------------------------------------------------------------------------------------
135828    BEGIN
135829       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135830                               (g_array_event(p_event_id).array_value_num('header_index'));
135831       IF l_acc_rev_flag IS NULL THEN
135832          l_acc_rev_flag := 'N';
135833       END IF;
135834    EXCEPTION
135835       WHEN OTHERS THEN
135836          l_acc_rev_flag := 'N';
135837    END;
135838    --
135839    IF (l_acc_rev_flag = 'Y') THEN
135840 
135841        -- 4645092  ------------------------------------------------------------------------------
135842        -- To allow MPA report to determine if it should generate report process
135843        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135844        ------------------------------------------------------------------------------------------
135845 
135846        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135847        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135848    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
135849    -- call ADRs
135850    -- Bug 4922099
135851    --
135852    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135853         (NVL(l_actual_upg_option, 'N') = 'O') OR
135854         (NVL(l_enc_upg_option, 'N') = 'O')
135855       )
135856    THEN
135857    NULL;
135858    --
135859    --
135860    
135861   l_ccid := AcctDerRule_28(
135862            p_application_id           => p_application_id
135863          , p_ae_header_id             => l_ae_header_id 
135864 , p_source_15 => p_source_15
135865 , p_source_41 => p_source_41
135866 , p_source_42 => p_source_42
135867 , p_source_43 => p_source_43
135868 , p_source_44 => p_source_44
135869 , p_source_45 => p_source_45
135870          , x_transaction_coa_id       => l_adr_transaction_coa_id
135871          , x_accounting_coa_id        => l_adr_accounting_coa_id
135872          , x_value_type_code          => l_adr_value_type_code
135873          , p_side                     => 'NA'
135874    );
135875 
135876    xla_ae_lines_pkg.set_ccid(
135877     p_code_combination_id          => l_ccid
135878   , p_value_type_code              => l_adr_value_type_code
135879   , p_transaction_coa_id           => l_adr_transaction_coa_id
135880   , p_accounting_coa_id            => l_adr_accounting_coa_id
135881   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
135882   , p_adr_type_code                => 'S'
135883   , p_component_type               => l_component_type
135884   , p_component_code               => l_component_code
135885   , p_component_type_code          => l_component_type_code
135886   , p_component_appl_id            => l_component_appl_id
135887   , p_amb_context_code             => l_amb_context_code
135888   , p_side                         => 'NA'
135889   );
135890 
135891 
135892    --
135893    --
135894    END IF;
135895 
135896        --
135897        -- Update the line information that should be overwritten
135898        --
135899        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135900                                          p_header_num   => 1);
135901        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
135902 
135903        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135904 
135905        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
135906           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135907        END IF;
135908 
135909       --
135910       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135911       --
135912       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135913           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
135914       ELSE
135915           ---------------------------------------------------------------------------------------------------
135916           -- 4262811a Switch Sign
135917           ---------------------------------------------------------------------------------------------------
135918           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
135919           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135920                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135921           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135922                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135923           -- 5132302
135924           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135925                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135926 
135927       END IF;
135928 
135929       -- 4955764
135930       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135931       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135932 
135933 
135934       XLA_AE_LINES_PKG.ValidateCurrentLine;
135935       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135936 
135937       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135938                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135939                ,p_balance_type_code => l_balance_type_code);
135940 
135941    END IF;
135942 
135943    -----------------------------------------------------------------------------------------
135944    -- 4262811 Multiperiod Accounting
135945    -----------------------------------------------------------------------------------------
135946      -- No MPA option is assigned.
135947 
135948 
135949 END IF;
135950 END IF;
135951 --
135952 
135953 --
135954 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135955    trace
135956       (p_msg      => 'END of AcctLineType_258'
135957       ,p_level    => C_LEVEL_PROCEDURE
135958       ,p_module   => l_log_module);
135959 END IF;
135960 --
135961 EXCEPTION
135962   WHEN xla_exceptions_pkg.application_exception THEN
135963       RAISE;
135964   WHEN OTHERS THEN
135965        xla_exceptions_pkg.raise_message
135966            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_258');
135967 END AcctLineType_258;
135968 --
135969 
135970 ---------------------------------------
135971 --
135972 -- PRIVATE FUNCTION
135973 --         AcctLineType_259
135974 --
135975 ---------------------------------------
135976 PROCEDURE AcctLineType_259 (
135977   p_application_id        IN NUMBER
135978  ,p_event_id              IN NUMBER
135979  ,p_calculate_acctd_flag  IN VARCHAR2
135980  ,p_calculate_g_l_flag    IN VARCHAR2
135981  ,p_actual_flag           IN OUT VARCHAR2
135982  ,p_balance_type_code     OUT VARCHAR2
135983  ,p_gain_or_loss_ref      OUT VARCHAR2
135984  
135985 --Cost Element Name
135986  , p_source_15            IN NUMBER
135987 --Product Line Accounting Category Material Account
135988  , p_source_41            IN NUMBER
135989 --Product Line Accounting Category Material Overhead Account
135990  , p_source_42            IN NUMBER
135991 --Product Line Accounting Category Resource Account
135992  , p_source_43            IN NUMBER
135993 --Product Line Accounting Category Outside Processing Account
135994  , p_source_44            IN NUMBER
135995 --Product Line Accounting Category Overhead Account
135996  , p_source_45            IN NUMBER
135997 --DISTRIBUTION_IDENTIFIER
135998  , p_source_84            IN NUMBER
135999 --Distribution Type
136000  , p_source_85            IN VARCHAR2
136001  , p_source_85_meaning    IN VARCHAR2
136002 --Entered Currency Code
136003  , p_source_88            IN VARCHAR2
136004 --Entered Amount
136005  , p_source_91            IN NUMBER
136006 --Currency Conversion Date
136007  , p_source_92            IN DATE
136008 --Currency Conversion Rate
136009  , p_source_93            IN NUMBER
136010 --Currency Conversion Type
136011  , p_source_94            IN VARCHAR2
136012 --Accounted Amount
136013  , p_source_95            IN NUMBER
136014 --Accounting Line Type
136015  , p_source_97            IN NUMBER
136016 --Organization Code
136017  , p_source_108            IN VARCHAR2
136018 )
136019 IS
136020 
136021 l_component_type              VARCHAR2(80);
136022 l_component_code              VARCHAR2(30);
136023 l_component_type_code         VARCHAR2(1);
136024 l_component_appl_id           INTEGER;
136025 l_amb_context_code            VARCHAR2(30);
136026 l_entity_code                 VARCHAR2(30);
136027 l_event_class_code            VARCHAR2(30);
136028 l_ae_header_id                NUMBER;
136029 l_event_type_code             VARCHAR2(30);
136030 l_line_definition_code        VARCHAR2(30);
136031 l_line_definition_owner_code  VARCHAR2(1);
136032 --
136033 -- adr variables
136034 l_segment                     VARCHAR2(30);
136035 l_ccid                        NUMBER;
136036 l_adr_transaction_coa_id      NUMBER;
136037 l_adr_accounting_coa_id       NUMBER;
136038 l_adr_flexfield_segment_code  VARCHAR2(30);
136039 l_adr_flex_value_set_id       NUMBER;
136040 l_adr_value_type_code         VARCHAR2(30);
136041 l_adr_value_combination_id    NUMBER;
136042 l_adr_value_segment_code      VARCHAR2(30);
136043 
136044 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
136045 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
136046 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
136047 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
136048 
136049 -- 4262811 Variables ------------------------------------------------------------------------------------------
136050 l_entered_amt_idx             NUMBER;
136051 l_accted_amt_idx              NUMBER;
136052 l_acc_rev_flag                VARCHAR2(1);
136053 l_accrual_line_num            NUMBER;
136054 l_tmp_amt                     NUMBER;
136055 l_acc_rev_natural_side_code   VARCHAR2(1);
136056 
136057 l_num_entries                 NUMBER;
136058 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
136059 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
136060 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
136061 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
136062 l_recog_line_1                NUMBER;
136063 l_recog_line_2                NUMBER;
136064 
136065 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
136066 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
136067 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
136068 
136069 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
136070 
136071 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
136072 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
136073 
136074 ---------------------------------------------------------------------------------------------------------------
136075 
136076 
136077 --
136078 -- bulk performance
136079 --
136080 l_balance_type_code           VARCHAR2(1);
136081 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
136082 l_log_module                  VARCHAR2(240);
136083 
136084 --
136085 -- Upgrade strategy
136086 --
136087 l_actual_upg_option           VARCHAR2(1);
136088 l_enc_upg_option           VARCHAR2(1);
136089 
136090 --
136091 BEGIN
136092 --
136093 IF g_log_enabled THEN
136094       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_259';
136095 END IF;
136096 --
136097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136098 
136099       trace
136100          (p_msg      => 'BEGIN of AcctLineType_259'
136101          ,p_level    => C_LEVEL_PROCEDURE
136102          ,p_module   => l_log_module);
136103 
136104 END IF;
136105 --
136106 l_component_type             := 'AMB_JLT';
136107 l_component_code             := 'INVENTORY_VALUATION';
136108 l_component_type_code        := 'S';
136109 l_component_appl_id          :=  707;
136110 l_amb_context_code           := 'DEFAULT';
136111 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
136112 l_event_class_code           := 'USER_DEFINE';
136113 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
136114 l_line_definition_owner_code := 'S';
136115 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
136116 --
136117 l_balance_type_code          := 'A';
136118 l_segment                     := NULL;
136119 l_ccid                        := NULL;
136120 l_adr_transaction_coa_id      := NULL;
136121 l_adr_accounting_coa_id       := NULL;
136122 l_adr_flexfield_segment_code  := NULL;
136123 l_adr_flex_value_set_id       := NULL;
136124 l_adr_value_type_code         := NULL;
136125 l_adr_value_combination_id    := NULL;
136126 l_adr_value_segment_code      := NULL;
136127 
136128 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
136129 l_bflow_class_code           := '';    -- 4219869 Business Flow
136130 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
136131 l_budgetary_control_flag     := 'N';
136132 
136133 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
136134 l_bflow_applied_to_amt       := NULL; -- 5132302
136135 l_entered_amt_idx            := NULL;          -- 4262811
136136 l_accted_amt_idx             := NULL;          -- 4262811
136137 l_acc_rev_flag               := NULL;          -- 4262811
136138 l_accrual_line_num           := NULL;          -- 4262811
136139 l_tmp_amt                    := NULL;          -- 4262811
136140 --
136141  
136142 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136143     l_balance_type_code <> 'B' THEN
136144 IF NVL(p_source_97,9E125) =  1
136145  THEN 
136146 
136147    --
136148    XLA_AE_LINES_PKG.SetNewLine;
136149 
136150    p_balance_type_code          := l_balance_type_code;
136151    -- set the flag so later we will know whether the gain loss line needs to be created
136152    
136153    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136154      p_actual_flag :='A';
136155    END IF;
136156 
136157    --
136158    -- bulk performance
136159    --
136160    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136161                                       p_header_num   => 0); -- 4262811
136162    --
136163    -- set accounting line options
136164    --
136165    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136166            p_natural_side_code          => 'D'
136167          , p_gain_or_loss_flag          => 'N'
136168          , p_gl_transfer_mode_code      => 'S'
136169          , p_acct_entry_type_code       => 'A'
136170          , p_switch_side_flag           => 'Y'
136171          , p_merge_duplicate_code       => 'N'
136172          );
136173    --
136174    l_acc_rev_natural_side_code := 'C';  -- 4262811
136175    -- 
136176    --
136177    -- set accounting line type info
136178    --
136179    xla_ae_lines_pkg.SetAcctLineType
136180       (p_component_type             => l_component_type
136181       ,p_event_type_code            => l_event_type_code
136182       ,p_line_definition_owner_code => l_line_definition_owner_code
136183       ,p_line_definition_code       => l_line_definition_code
136184       ,p_accounting_line_code       => l_component_code
136185       ,p_accounting_line_type_code  => l_component_type_code
136186       ,p_accounting_line_appl_id    => l_component_appl_id
136187       ,p_amb_context_code           => l_amb_context_code
136188       ,p_entity_code                => l_entity_code
136189       ,p_event_class_code           => l_event_class_code);
136190    --
136191    -- set accounting class
136192    --
136193    xla_ae_lines_pkg.SetAcctClass(
136194            p_accounting_class_code  => 'INVENTORY_VALUATION'
136195          , p_ae_header_id           => l_ae_header_id
136196          );
136197 
136198    --
136199    -- set rounding class
136200    --
136201    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136202                       'INVENTORY_VALUATION';
136203 
136204    --
136205    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136206    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136207    --
136208    -- bulk performance
136209    --
136210    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136211 
136212    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136213       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136214 
136215    -- 4955764
136216    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136217       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136218 
136219    -- 4458381 Public Sector Enh
136220    
136221    --
136222    -- set accounting attributes for the line type
136223    --
136224    l_entered_amt_idx := 3;
136225    l_accted_amt_idx  := 8;
136226    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
136227    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136228    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
136229    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136230    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
136231    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136232    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
136233    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136234    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
136235    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136236    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
136237    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136238    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
136239    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136240    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
136241    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136242    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
136243 
136244    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136245    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136246 
136247    ---------------------------------------------------------------------------------------------------------------
136248    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136249    ---------------------------------------------------------------------------------------------------------------
136250    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136251 
136252    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136253    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136254 
136255    IF xla_accounting_cache_pkg.GetValueChar
136256          (p_source_code         => 'LEDGER_CATEGORY_CODE'
136257          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136258    AND l_bflow_method_code = 'PRIOR_ENTRY'
136259 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136260    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136261          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136262        )
136263    THEN
136264          xla_ae_lines_pkg.BflowUpgEntry
136265            (p_business_method_code    => l_bflow_method_code
136266            ,p_business_class_code     => l_bflow_class_code
136267            ,p_balance_type            => l_balance_type_code);
136268    ELSE
136269       NULL;
136270 -- No business flow processing for business flow method of NONE.
136271    END IF;
136272 
136273    --
136274    -- call analytical criteria
136275    --
136276    
136277 
136278 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
136279 xla_ae_lines_pkg.SetAnalyticalCriteria(
136280    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
136281  , p_analytical_criterion_owner   => 'S'
136282  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
136283  , p_amb_context_code             => 'DEFAULT'
136284  , p_balancing_flag               => 'Y'
136285  
136286  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
136287  , p_analytical_detail_num_1     =>  NULL
136288  , p_analytical_detail_date_1    =>  NULL
136289 
136290  , p_ae_header_id                 => l_ae_header_id
136291 )
136292 ;
136293 --
136294 
136295    --
136296    -- call description
136297    --
136298    -- No description or it is inherited.
136299    --
136300    -- call ADRs
136301    -- Bug 4922099
136302    --
136303    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136304         (NVL(l_actual_upg_option, 'N') = 'O') OR
136305         (NVL(l_enc_upg_option, 'N') = 'O')
136306       )
136307    THEN
136308    NULL;
136309    --
136310    --
136311    
136312   l_ccid := AcctDerRule_28(
136313            p_application_id           => p_application_id
136314          , p_ae_header_id             => l_ae_header_id 
136315 , p_source_15 => p_source_15
136316 , p_source_41 => p_source_41
136317 , p_source_42 => p_source_42
136318 , p_source_43 => p_source_43
136319 , p_source_44 => p_source_44
136320 , p_source_45 => p_source_45
136321          , x_transaction_coa_id       => l_adr_transaction_coa_id
136322          , x_accounting_coa_id        => l_adr_accounting_coa_id
136323          , x_value_type_code          => l_adr_value_type_code
136324          , p_side                     => 'NA'
136325    );
136326 
136327    xla_ae_lines_pkg.set_ccid(
136328     p_code_combination_id          => l_ccid
136329   , p_value_type_code              => l_adr_value_type_code
136330   , p_transaction_coa_id           => l_adr_transaction_coa_id
136331   , p_accounting_coa_id            => l_adr_accounting_coa_id
136332   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
136333   , p_adr_type_code                => 'S'
136334   , p_component_type               => l_component_type
136335   , p_component_code               => l_component_code
136336   , p_component_type_code          => l_component_type_code
136337   , p_component_appl_id            => l_component_appl_id
136338   , p_amb_context_code             => l_amb_context_code
136339   , p_side                         => 'NA'
136340   );
136341 
136342 
136343    --
136344    --
136345    END IF;
136346    --
136347    -- Bug 4922099
136348    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136349           (NVL(l_enc_upg_option, 'N') = 'O')
136350         ) AND
136351         (l_bflow_method_code = 'PRIOR_ENTRY')
136352       )
136353    THEN
136354       IF
136355       --
136356       1 = 2
136357       --
136358       THEN
136359       xla_accounting_err_pkg.build_message
136360                                     (p_appli_s_name            => 'XLA'
136361                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136362                                     ,p_token_1                 => 'LINE_NUMBER'
136363                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
136364                                     ,p_token_2                 => 'LINE_TYPE_NAME'
136365                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
136366                                                                              l_component_type
136367                                                                             ,l_component_code
136368                                                                             ,l_component_type_code
136369                                                                             ,l_component_appl_id
136370                                                                             ,l_amb_context_code
136371                                                                             ,l_entity_code
136372                                                                             ,l_event_class_code
136373                                                                            )
136374                                     ,p_token_3                 => 'OWNER'
136375                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
136376                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
136377                                                                           ,p_lookup_code    => l_component_type_code
136378                                                                          )
136379                                     ,p_token_4                 => 'PRODUCT_NAME'
136380                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136381                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136382                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136383                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136384                                     ,p_ae_header_id            =>  NULL
136385                                        );
136386 
136387         IF (C_LEVEL_ERROR>= g_log_level) THEN
136388                  trace
136389                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136390                       ,p_level    => C_LEVEL_ERROR
136391                       ,p_module   => l_log_module);
136392         END IF;
136393       END IF;
136394    END IF;
136395    --
136396    --
136397    ------------------------------------------------------------------------------------------------
136398    -- 4219869 Business Flow
136399    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136400    -- Prior Entry.  Currently, the following code is always generated.
136401    ------------------------------------------------------------------------------------------------
136402    XLA_AE_LINES_PKG.ValidateCurrentLine;
136403 
136404    ------------------------------------------------------------------------------------
136405    -- 4219869 Business Flow
136406    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136407    ------------------------------------------------------------------------------------
136408    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136409 
136410    ----------------------------------------------------------------------------------
136411    -- 4219869 Business Flow
136412    -- Update journal entry status -- Need to generate this within IF <condition>
136413    ----------------------------------------------------------------------------------
136414    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136415          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136416          ,p_balance_type_code => l_balance_type_code
136417          );
136418 
136419    -------------------------------------------------------------------------------------------
136420    -- 4262811 - Generate the Accrual Reversal lines
136421    -------------------------------------------------------------------------------------------
136422    BEGIN
136423       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136424                               (g_array_event(p_event_id).array_value_num('header_index'));
136425       IF l_acc_rev_flag IS NULL THEN
136426          l_acc_rev_flag := 'N';
136427       END IF;
136428    EXCEPTION
136429       WHEN OTHERS THEN
136430          l_acc_rev_flag := 'N';
136431    END;
136432    --
136433    IF (l_acc_rev_flag = 'Y') THEN
136434 
136435        -- 4645092  ------------------------------------------------------------------------------
136436        -- To allow MPA report to determine if it should generate report process
136437        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136438        ------------------------------------------------------------------------------------------
136439 
136440        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136441        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136442    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
136443    -- call ADRs
136444    -- Bug 4922099
136445    --
136446    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136447         (NVL(l_actual_upg_option, 'N') = 'O') OR
136448         (NVL(l_enc_upg_option, 'N') = 'O')
136449       )
136450    THEN
136451    NULL;
136452    --
136453    --
136454    
136455   l_ccid := AcctDerRule_28(
136456            p_application_id           => p_application_id
136457          , p_ae_header_id             => l_ae_header_id 
136458 , p_source_15 => p_source_15
136459 , p_source_41 => p_source_41
136460 , p_source_42 => p_source_42
136461 , p_source_43 => p_source_43
136462 , p_source_44 => p_source_44
136463 , p_source_45 => p_source_45
136464          , x_transaction_coa_id       => l_adr_transaction_coa_id
136465          , x_accounting_coa_id        => l_adr_accounting_coa_id
136466          , x_value_type_code          => l_adr_value_type_code
136467          , p_side                     => 'NA'
136468    );
136469 
136470    xla_ae_lines_pkg.set_ccid(
136471     p_code_combination_id          => l_ccid
136472   , p_value_type_code              => l_adr_value_type_code
136473   , p_transaction_coa_id           => l_adr_transaction_coa_id
136474   , p_accounting_coa_id            => l_adr_accounting_coa_id
136475   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
136476   , p_adr_type_code                => 'S'
136477   , p_component_type               => l_component_type
136478   , p_component_code               => l_component_code
136479   , p_component_type_code          => l_component_type_code
136480   , p_component_appl_id            => l_component_appl_id
136481   , p_amb_context_code             => l_amb_context_code
136482   , p_side                         => 'NA'
136483   );
136484 
136485 
136486    --
136487    --
136488    END IF;
136489 
136490        --
136491        -- Update the line information that should be overwritten
136492        --
136493        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136494                                          p_header_num   => 1);
136495        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
136496 
136497        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136498 
136499        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
136500           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136501        END IF;
136502 
136503       --
136504       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136505       --
136506       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136507           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
136508       ELSE
136509           ---------------------------------------------------------------------------------------------------
136510           -- 4262811a Switch Sign
136511           ---------------------------------------------------------------------------------------------------
136512           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
136513           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136514                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136515           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136516                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136517           -- 5132302
136518           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136519                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136520 
136521       END IF;
136522 
136523       -- 4955764
136524       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136525       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136526 
136527 
136528       XLA_AE_LINES_PKG.ValidateCurrentLine;
136529       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136530 
136531       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136532                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136533                ,p_balance_type_code => l_balance_type_code);
136534 
136535    END IF;
136536 
136537    -----------------------------------------------------------------------------------------
136538    -- 4262811 Multiperiod Accounting
136539    -----------------------------------------------------------------------------------------
136540      -- No MPA option is assigned.
136541 
136542 
136543 END IF;
136544 END IF;
136545 --
136546 
136547 --
136548 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136549    trace
136550       (p_msg      => 'END of AcctLineType_259'
136551       ,p_level    => C_LEVEL_PROCEDURE
136552       ,p_module   => l_log_module);
136553 END IF;
136554 --
136555 EXCEPTION
136556   WHEN xla_exceptions_pkg.application_exception THEN
136557       RAISE;
136558   WHEN OTHERS THEN
136559        xla_exceptions_pkg.raise_message
136560            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_259');
136561 END AcctLineType_259;
136562 --
136563 
136564 ---------------------------------------
136565 --
136566 -- PRIVATE FUNCTION
136567 --         AcctLineType_260
136568 --
136569 ---------------------------------------
136570 PROCEDURE AcctLineType_260 (
136571   p_application_id        IN NUMBER
136572  ,p_event_id              IN NUMBER
136573  ,p_calculate_acctd_flag  IN VARCHAR2
136574  ,p_calculate_g_l_flag    IN VARCHAR2
136575  ,p_actual_flag           IN OUT VARCHAR2
136576  ,p_balance_type_code     OUT VARCHAR2
136577  ,p_gain_or_loss_ref      OUT VARCHAR2
136578  
136579 --TRANSACTION_ID
136580  , p_source_1            IN NUMBER
136581 --Item Concatenated Segments
136582  , p_source_2            IN VARCHAR2
136583 --Transaction Quantity
136584  , p_source_3            IN NUMBER
136585 --Transaction Unit of Measure Code
136586  , p_source_4            IN VARCHAR2
136587 --Inventory Transaction Type Description
136588  , p_source_5            IN VARCHAR2
136589 --Cost Element Name
136590  , p_source_15            IN NUMBER
136591 --Product Line Accounting Category Material Account
136592  , p_source_41            IN NUMBER
136593 --Product Line Accounting Category Material Overhead Account
136594  , p_source_42            IN NUMBER
136595 --Product Line Accounting Category Resource Account
136596  , p_source_43            IN NUMBER
136597 --Product Line Accounting Category Outside Processing Account
136598  , p_source_44            IN NUMBER
136599 --Product Line Accounting Category Overhead Account
136600  , p_source_45            IN NUMBER
136601 --DISTRIBUTION_IDENTIFIER
136602  , p_source_84            IN NUMBER
136603 --Distribution Type
136604  , p_source_85            IN VARCHAR2
136605  , p_source_85_meaning    IN VARCHAR2
136606 --Entered Currency Code
136607  , p_source_88            IN VARCHAR2
136608 --Entered Amount
136609  , p_source_91            IN NUMBER
136610 --Currency Conversion Date
136611  , p_source_92            IN DATE
136612 --Currency Conversion Rate
136613  , p_source_93            IN NUMBER
136614 --Currency Conversion Type
136615  , p_source_94            IN VARCHAR2
136616 --Accounted Amount
136617  , p_source_95            IN NUMBER
136618 --Accounting Line Type
136619  , p_source_97            IN NUMBER
136620 --Organization Code
136621  , p_source_108            IN VARCHAR2
136622 )
136623 IS
136624 
136625 l_component_type              VARCHAR2(80);
136626 l_component_code              VARCHAR2(30);
136627 l_component_type_code         VARCHAR2(1);
136628 l_component_appl_id           INTEGER;
136629 l_amb_context_code            VARCHAR2(30);
136630 l_entity_code                 VARCHAR2(30);
136631 l_event_class_code            VARCHAR2(30);
136632 l_ae_header_id                NUMBER;
136633 l_event_type_code             VARCHAR2(30);
136634 l_line_definition_code        VARCHAR2(30);
136635 l_line_definition_owner_code  VARCHAR2(1);
136636 --
136637 -- adr variables
136638 l_segment                     VARCHAR2(30);
136639 l_ccid                        NUMBER;
136640 l_adr_transaction_coa_id      NUMBER;
136641 l_adr_accounting_coa_id       NUMBER;
136642 l_adr_flexfield_segment_code  VARCHAR2(30);
136643 l_adr_flex_value_set_id       NUMBER;
136644 l_adr_value_type_code         VARCHAR2(30);
136645 l_adr_value_combination_id    NUMBER;
136646 l_adr_value_segment_code      VARCHAR2(30);
136647 
136648 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
136649 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
136650 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
136651 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
136652 
136653 -- 4262811 Variables ------------------------------------------------------------------------------------------
136654 l_entered_amt_idx             NUMBER;
136655 l_accted_amt_idx              NUMBER;
136656 l_acc_rev_flag                VARCHAR2(1);
136657 l_accrual_line_num            NUMBER;
136658 l_tmp_amt                     NUMBER;
136659 l_acc_rev_natural_side_code   VARCHAR2(1);
136660 
136661 l_num_entries                 NUMBER;
136662 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
136663 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
136664 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
136665 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
136666 l_recog_line_1                NUMBER;
136667 l_recog_line_2                NUMBER;
136668 
136669 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
136670 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
136671 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
136672 
136673 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
136674 
136675 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
136676 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
136677 
136678 ---------------------------------------------------------------------------------------------------------------
136679 
136680 
136681 --
136682 -- bulk performance
136683 --
136684 l_balance_type_code           VARCHAR2(1);
136685 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
136686 l_log_module                  VARCHAR2(240);
136687 
136688 --
136689 -- Upgrade strategy
136690 --
136691 l_actual_upg_option           VARCHAR2(1);
136692 l_enc_upg_option           VARCHAR2(1);
136693 
136694 --
136695 BEGIN
136696 --
136697 IF g_log_enabled THEN
136698       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_260';
136699 END IF;
136700 --
136701 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136702 
136703       trace
136704          (p_msg      => 'BEGIN of AcctLineType_260'
136705          ,p_level    => C_LEVEL_PROCEDURE
136706          ,p_module   => l_log_module);
136707 
136708 END IF;
136709 --
136710 l_component_type             := 'AMB_JLT';
136711 l_component_code             := 'INVENTORY_VALUATION';
136712 l_component_type_code        := 'S';
136713 l_component_appl_id          :=  707;
136714 l_amb_context_code           := 'DEFAULT';
136715 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
136716 l_event_class_code           := 'USER_DEFINE';
136717 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
136718 l_line_definition_owner_code := 'S';
136719 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
136720 --
136721 l_balance_type_code          := 'A';
136722 l_segment                     := NULL;
136723 l_ccid                        := NULL;
136724 l_adr_transaction_coa_id      := NULL;
136725 l_adr_accounting_coa_id       := NULL;
136726 l_adr_flexfield_segment_code  := NULL;
136727 l_adr_flex_value_set_id       := NULL;
136728 l_adr_value_type_code         := NULL;
136729 l_adr_value_combination_id    := NULL;
136730 l_adr_value_segment_code      := NULL;
136731 
136732 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
136733 l_bflow_class_code           := '';    -- 4219869 Business Flow
136734 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
136735 l_budgetary_control_flag     := 'N';
136736 
136737 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
136738 l_bflow_applied_to_amt       := NULL; -- 5132302
136739 l_entered_amt_idx            := NULL;          -- 4262811
136740 l_accted_amt_idx             := NULL;          -- 4262811
136741 l_acc_rev_flag               := NULL;          -- 4262811
136742 l_accrual_line_num           := NULL;          -- 4262811
136743 l_tmp_amt                    := NULL;          -- 4262811
136744 --
136745  
136746 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136747     l_balance_type_code <> 'B' THEN
136748 IF NVL(p_source_97,9E125) =  1
136749  THEN 
136750 
136751    --
136752    XLA_AE_LINES_PKG.SetNewLine;
136753 
136754    p_balance_type_code          := l_balance_type_code;
136755    -- set the flag so later we will know whether the gain loss line needs to be created
136756    
136757    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136758      p_actual_flag :='A';
136759    END IF;
136760 
136761    --
136762    -- bulk performance
136763    --
136764    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136765                                       p_header_num   => 0); -- 4262811
136766    --
136767    -- set accounting line options
136768    --
136769    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136770            p_natural_side_code          => 'D'
136771          , p_gain_or_loss_flag          => 'N'
136772          , p_gl_transfer_mode_code      => 'S'
136773          , p_acct_entry_type_code       => 'A'
136774          , p_switch_side_flag           => 'Y'
136775          , p_merge_duplicate_code       => 'N'
136776          );
136777    --
136778    l_acc_rev_natural_side_code := 'C';  -- 4262811
136779    -- 
136780    --
136781    -- set accounting line type info
136782    --
136783    xla_ae_lines_pkg.SetAcctLineType
136784       (p_component_type             => l_component_type
136785       ,p_event_type_code            => l_event_type_code
136786       ,p_line_definition_owner_code => l_line_definition_owner_code
136787       ,p_line_definition_code       => l_line_definition_code
136788       ,p_accounting_line_code       => l_component_code
136789       ,p_accounting_line_type_code  => l_component_type_code
136790       ,p_accounting_line_appl_id    => l_component_appl_id
136791       ,p_amb_context_code           => l_amb_context_code
136792       ,p_entity_code                => l_entity_code
136793       ,p_event_class_code           => l_event_class_code);
136794    --
136795    -- set accounting class
136796    --
136797    xla_ae_lines_pkg.SetAcctClass(
136798            p_accounting_class_code  => 'INVENTORY_VALUATION'
136799          , p_ae_header_id           => l_ae_header_id
136800          );
136801 
136802    --
136803    -- set rounding class
136804    --
136805    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136806                       'INVENTORY_VALUATION';
136807 
136808    --
136809    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136810    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136811    --
136812    -- bulk performance
136813    --
136814    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136815 
136816    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136817       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136818 
136819    -- 4955764
136820    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136821       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136822 
136823    -- 4458381 Public Sector Enh
136824    
136825    --
136826    -- set accounting attributes for the line type
136827    --
136828    l_entered_amt_idx := 3;
136829    l_accted_amt_idx  := 8;
136830    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
136831    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136832    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
136833    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136834    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
136835    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136836    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
136837    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136838    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
136839    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136840    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
136841    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136842    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
136843    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136844    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
136845    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136846    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
136847 
136848    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136849    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136850 
136851    ---------------------------------------------------------------------------------------------------------------
136852    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136853    ---------------------------------------------------------------------------------------------------------------
136854    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136855 
136856    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136857    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136858 
136859    IF xla_accounting_cache_pkg.GetValueChar
136860          (p_source_code         => 'LEDGER_CATEGORY_CODE'
136861          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136862    AND l_bflow_method_code = 'PRIOR_ENTRY'
136863 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136864    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136865          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136866        )
136867    THEN
136868          xla_ae_lines_pkg.BflowUpgEntry
136869            (p_business_method_code    => l_bflow_method_code
136870            ,p_business_class_code     => l_bflow_class_code
136871            ,p_balance_type            => l_balance_type_code);
136872    ELSE
136873       NULL;
136874 -- No business flow processing for business flow method of NONE.
136875    END IF;
136876 
136877    --
136878    -- call analytical criteria
136879    --
136880    
136881 
136882 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
136883 xla_ae_lines_pkg.SetAnalyticalCriteria(
136884    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
136885  , p_analytical_criterion_owner   => 'S'
136886  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
136887  , p_amb_context_code             => 'DEFAULT'
136888  , p_balancing_flag               => 'Y'
136889  
136890  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
136891  , p_analytical_detail_num_1     =>  NULL
136892  , p_analytical_detail_date_1    =>  NULL
136893 
136894  , p_ae_header_id                 => l_ae_header_id
136895 )
136896 ;
136897 --
136898 
136899    --
136900    -- call description
136901    --
136902    
136903 xla_ae_lines_pkg.SetLineDescription(
136904    p_ae_header_id => l_ae_header_id
136905   ,p_description  => Description_1 (
136906      p_application_id         => p_application_id
136907    , p_ae_header_id           => l_ae_header_id 
136908 , p_source_1 => p_source_1
136909 , p_source_2 => p_source_2
136910 , p_source_3 => p_source_3
136911 , p_source_4 => p_source_4
136912 , p_source_5 => p_source_5
136913    )
136914 );
136915 
136916 
136917    --
136918    -- call ADRs
136919    -- Bug 4922099
136920    --
136921    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136922         (NVL(l_actual_upg_option, 'N') = 'O') OR
136923         (NVL(l_enc_upg_option, 'N') = 'O')
136924       )
136925    THEN
136926    NULL;
136927    --
136928    --
136929    
136930   l_ccid := AcctDerRule_28(
136931            p_application_id           => p_application_id
136932          , p_ae_header_id             => l_ae_header_id 
136933 , p_source_15 => p_source_15
136934 , p_source_41 => p_source_41
136935 , p_source_42 => p_source_42
136936 , p_source_43 => p_source_43
136937 , p_source_44 => p_source_44
136938 , p_source_45 => p_source_45
136939          , x_transaction_coa_id       => l_adr_transaction_coa_id
136940          , x_accounting_coa_id        => l_adr_accounting_coa_id
136941          , x_value_type_code          => l_adr_value_type_code
136942          , p_side                     => 'NA'
136943    );
136944 
136945    xla_ae_lines_pkg.set_ccid(
136946     p_code_combination_id          => l_ccid
136947   , p_value_type_code              => l_adr_value_type_code
136948   , p_transaction_coa_id           => l_adr_transaction_coa_id
136949   , p_accounting_coa_id            => l_adr_accounting_coa_id
136950   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
136951   , p_adr_type_code                => 'S'
136952   , p_component_type               => l_component_type
136953   , p_component_code               => l_component_code
136954   , p_component_type_code          => l_component_type_code
136955   , p_component_appl_id            => l_component_appl_id
136956   , p_amb_context_code             => l_amb_context_code
136957   , p_side                         => 'NA'
136958   );
136959 
136960 
136961    --
136962    --
136963    END IF;
136964    --
136965    -- Bug 4922099
136966    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136967           (NVL(l_enc_upg_option, 'N') = 'O')
136968         ) AND
136969         (l_bflow_method_code = 'PRIOR_ENTRY')
136970       )
136971    THEN
136972       IF
136973       --
136974       1 = 2
136975       --
136976       THEN
136977       xla_accounting_err_pkg.build_message
136978                                     (p_appli_s_name            => 'XLA'
136979                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136980                                     ,p_token_1                 => 'LINE_NUMBER'
136981                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
136982                                     ,p_token_2                 => 'LINE_TYPE_NAME'
136983                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
136984                                                                              l_component_type
136985                                                                             ,l_component_code
136986                                                                             ,l_component_type_code
136987                                                                             ,l_component_appl_id
136988                                                                             ,l_amb_context_code
136989                                                                             ,l_entity_code
136990                                                                             ,l_event_class_code
136991                                                                            )
136992                                     ,p_token_3                 => 'OWNER'
136993                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
136994                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
136995                                                                           ,p_lookup_code    => l_component_type_code
136996                                                                          )
136997                                     ,p_token_4                 => 'PRODUCT_NAME'
136998                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136999                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137000                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137001                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137002                                     ,p_ae_header_id            =>  NULL
137003                                        );
137004 
137005         IF (C_LEVEL_ERROR>= g_log_level) THEN
137006                  trace
137007                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137008                       ,p_level    => C_LEVEL_ERROR
137009                       ,p_module   => l_log_module);
137010         END IF;
137011       END IF;
137012    END IF;
137013    --
137014    --
137015    ------------------------------------------------------------------------------------------------
137016    -- 4219869 Business Flow
137017    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137018    -- Prior Entry.  Currently, the following code is always generated.
137019    ------------------------------------------------------------------------------------------------
137020    XLA_AE_LINES_PKG.ValidateCurrentLine;
137021 
137022    ------------------------------------------------------------------------------------
137023    -- 4219869 Business Flow
137024    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137025    ------------------------------------------------------------------------------------
137026    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137027 
137028    ----------------------------------------------------------------------------------
137029    -- 4219869 Business Flow
137030    -- Update journal entry status -- Need to generate this within IF <condition>
137031    ----------------------------------------------------------------------------------
137032    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137033          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137034          ,p_balance_type_code => l_balance_type_code
137035          );
137036 
137037    -------------------------------------------------------------------------------------------
137038    -- 4262811 - Generate the Accrual Reversal lines
137039    -------------------------------------------------------------------------------------------
137040    BEGIN
137041       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137042                               (g_array_event(p_event_id).array_value_num('header_index'));
137043       IF l_acc_rev_flag IS NULL THEN
137044          l_acc_rev_flag := 'N';
137045       END IF;
137046    EXCEPTION
137047       WHEN OTHERS THEN
137048          l_acc_rev_flag := 'N';
137049    END;
137050    --
137051    IF (l_acc_rev_flag = 'Y') THEN
137052 
137053        -- 4645092  ------------------------------------------------------------------------------
137054        -- To allow MPA report to determine if it should generate report process
137055        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137056        ------------------------------------------------------------------------------------------
137057 
137058        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137059        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137060    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
137061    -- call ADRs
137062    -- Bug 4922099
137063    --
137064    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137065         (NVL(l_actual_upg_option, 'N') = 'O') OR
137066         (NVL(l_enc_upg_option, 'N') = 'O')
137067       )
137068    THEN
137069    NULL;
137070    --
137071    --
137072    
137073   l_ccid := AcctDerRule_28(
137074            p_application_id           => p_application_id
137075          , p_ae_header_id             => l_ae_header_id 
137076 , p_source_15 => p_source_15
137077 , p_source_41 => p_source_41
137078 , p_source_42 => p_source_42
137079 , p_source_43 => p_source_43
137080 , p_source_44 => p_source_44
137081 , p_source_45 => p_source_45
137082          , x_transaction_coa_id       => l_adr_transaction_coa_id
137083          , x_accounting_coa_id        => l_adr_accounting_coa_id
137084          , x_value_type_code          => l_adr_value_type_code
137085          , p_side                     => 'NA'
137086    );
137087 
137088    xla_ae_lines_pkg.set_ccid(
137089     p_code_combination_id          => l_ccid
137090   , p_value_type_code              => l_adr_value_type_code
137091   , p_transaction_coa_id           => l_adr_transaction_coa_id
137092   , p_accounting_coa_id            => l_adr_accounting_coa_id
137093   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
137094   , p_adr_type_code                => 'S'
137095   , p_component_type               => l_component_type
137096   , p_component_code               => l_component_code
137097   , p_component_type_code          => l_component_type_code
137098   , p_component_appl_id            => l_component_appl_id
137099   , p_amb_context_code             => l_amb_context_code
137100   , p_side                         => 'NA'
137101   );
137102 
137103 
137104    --
137105    --
137106    END IF;
137107 
137108        --
137109        -- Update the line information that should be overwritten
137110        --
137111        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137112                                          p_header_num   => 1);
137113        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
137114 
137115        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137116 
137117        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
137118           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
137119        END IF;
137120 
137121       --
137122       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
137123       --
137124       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
137125           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
137126       ELSE
137127           ---------------------------------------------------------------------------------------------------
137128           -- 4262811a Switch Sign
137129           ---------------------------------------------------------------------------------------------------
137130           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
137131           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137132                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137133           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137134                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137135           -- 5132302
137136           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
137137                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137138 
137139       END IF;
137140 
137141       -- 4955764
137142       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137143       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
137144 
137145 
137146       XLA_AE_LINES_PKG.ValidateCurrentLine;
137147       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137148 
137149       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137150                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
137151                ,p_balance_type_code => l_balance_type_code);
137152 
137153    END IF;
137154 
137155    -----------------------------------------------------------------------------------------
137156    -- 4262811 Multiperiod Accounting
137157    -----------------------------------------------------------------------------------------
137158      -- No MPA option is assigned.
137159 
137160 
137161 END IF;
137162 END IF;
137163 --
137164 
137165 --
137166 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137167    trace
137168       (p_msg      => 'END of AcctLineType_260'
137169       ,p_level    => C_LEVEL_PROCEDURE
137170       ,p_module   => l_log_module);
137171 END IF;
137172 --
137173 EXCEPTION
137174   WHEN xla_exceptions_pkg.application_exception THEN
137175       RAISE;
137176   WHEN OTHERS THEN
137177        xla_exceptions_pkg.raise_message
137178            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_260');
137179 END AcctLineType_260;
137180 --
137181 
137182 ---------------------------------------
137183 --
137184 -- PRIVATE FUNCTION
137185 --         AcctLineType_261
137186 --
137187 ---------------------------------------
137188 PROCEDURE AcctLineType_261 (
137189   p_application_id        IN NUMBER
137190  ,p_event_id              IN NUMBER
137191  ,p_calculate_acctd_flag  IN VARCHAR2
137192  ,p_calculate_g_l_flag    IN VARCHAR2
137193  ,p_actual_flag           IN OUT VARCHAR2
137194  ,p_balance_type_code     OUT VARCHAR2
137195  ,p_gain_or_loss_ref      OUT VARCHAR2
137196  
137197 --TRANSACTION_ID
137198  , p_source_1            IN NUMBER
137199 --Item Concatenated Segments
137200  , p_source_2            IN VARCHAR2
137201 --Transaction Quantity
137202  , p_source_3            IN NUMBER
137203 --Transaction Unit of Measure Code
137204  , p_source_4            IN VARCHAR2
137205 --Inventory Transaction Type Description
137206  , p_source_5            IN VARCHAR2
137207 --Cost Element Name
137208  , p_source_15            IN NUMBER
137209 --Cost Group Identifier
137210  , p_source_26            IN NUMBER
137211 --INV Header Transfer Cost Group ID
137212  , p_source_27            IN NUMBER
137213 --INV Header Cost Group ID
137214  , p_source_28            IN NUMBER
137215 --Subinventory Name
137216  , p_source_29            IN VARCHAR2
137217 --INV Header Transfer Subinventory
137218  , p_source_31            IN VARCHAR2
137219 --Product Line Accounting Category Material Account
137220  , p_source_41            IN NUMBER
137221 --Product Line Accounting Category Material Overhead Account
137222  , p_source_42            IN NUMBER
137223 --Product Line Accounting Category Resource Account
137224  , p_source_43            IN NUMBER
137225 --Product Line Accounting Category Outside Processing Account
137226  , p_source_44            IN NUMBER
137227 --Product Line Accounting Category Overhead Account
137228  , p_source_45            IN NUMBER
137229 --Transfer to Subinventory or Cost Group category material account
137230  , p_source_48            IN NUMBER
137231 --Transfer to Subinventory or Cost Group category material overhead account
137232  , p_source_49            IN NUMBER
137233 --Transfer to Subinventory or Cost Group category resource account
137234  , p_source_50            IN NUMBER
137235 --Transfer to Subinventory or Cost Group category outside processing account
137236  , p_source_51            IN NUMBER
137237 --Transfer to Subinventory or Cost Group category overhead account
137238  , p_source_52            IN NUMBER
137239 --DISTRIBUTION_IDENTIFIER
137240  , p_source_84            IN NUMBER
137241 --Distribution Type
137242  , p_source_85            IN VARCHAR2
137243  , p_source_85_meaning    IN VARCHAR2
137244 --Entered Currency Code
137245  , p_source_88            IN VARCHAR2
137246 --Entered Amount
137247  , p_source_91            IN NUMBER
137248 --Currency Conversion Date
137249  , p_source_92            IN DATE
137250 --Currency Conversion Rate
137251  , p_source_93            IN NUMBER
137252 --Currency Conversion Type
137253  , p_source_94            IN VARCHAR2
137254 --Accounted Amount
137255  , p_source_95            IN NUMBER
137256 --Accounting Line Type
137257  , p_source_97            IN NUMBER
137258 --Organization Code
137259  , p_source_108            IN VARCHAR2
137260 )
137261 IS
137262 
137263 l_component_type              VARCHAR2(80);
137264 l_component_code              VARCHAR2(30);
137265 l_component_type_code         VARCHAR2(1);
137266 l_component_appl_id           INTEGER;
137267 l_amb_context_code            VARCHAR2(30);
137268 l_entity_code                 VARCHAR2(30);
137269 l_event_class_code            VARCHAR2(30);
137270 l_ae_header_id                NUMBER;
137271 l_event_type_code             VARCHAR2(30);
137272 l_line_definition_code        VARCHAR2(30);
137273 l_line_definition_owner_code  VARCHAR2(1);
137274 --
137275 -- adr variables
137276 l_segment                     VARCHAR2(30);
137277 l_ccid                        NUMBER;
137278 l_adr_transaction_coa_id      NUMBER;
137279 l_adr_accounting_coa_id       NUMBER;
137280 l_adr_flexfield_segment_code  VARCHAR2(30);
137281 l_adr_flex_value_set_id       NUMBER;
137282 l_adr_value_type_code         VARCHAR2(30);
137283 l_adr_value_combination_id    NUMBER;
137284 l_adr_value_segment_code      VARCHAR2(30);
137285 
137286 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
137287 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
137288 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
137289 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
137290 
137291 -- 4262811 Variables ------------------------------------------------------------------------------------------
137292 l_entered_amt_idx             NUMBER;
137293 l_accted_amt_idx              NUMBER;
137294 l_acc_rev_flag                VARCHAR2(1);
137295 l_accrual_line_num            NUMBER;
137296 l_tmp_amt                     NUMBER;
137297 l_acc_rev_natural_side_code   VARCHAR2(1);
137298 
137299 l_num_entries                 NUMBER;
137300 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
137301 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
137302 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
137303 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
137304 l_recog_line_1                NUMBER;
137305 l_recog_line_2                NUMBER;
137306 
137307 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
137308 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
137309 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
137310 
137311 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137312 
137313 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
137314 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
137315 
137316 ---------------------------------------------------------------------------------------------------------------
137317 
137318 
137319 --
137320 -- bulk performance
137321 --
137322 l_balance_type_code           VARCHAR2(1);
137323 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
137324 l_log_module                  VARCHAR2(240);
137325 
137326 --
137327 -- Upgrade strategy
137328 --
137329 l_actual_upg_option           VARCHAR2(1);
137330 l_enc_upg_option           VARCHAR2(1);
137331 
137332 --
137333 BEGIN
137334 --
137335 IF g_log_enabled THEN
137336       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_261';
137337 END IF;
137338 --
137339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137340 
137341       trace
137342          (p_msg      => 'BEGIN of AcctLineType_261'
137343          ,p_level    => C_LEVEL_PROCEDURE
137344          ,p_module   => l_log_module);
137345 
137346 END IF;
137347 --
137348 l_component_type             := 'AMB_JLT';
137349 l_component_code             := 'INVENTORY_VALUATION';
137350 l_component_type_code        := 'S';
137351 l_component_appl_id          :=  707;
137352 l_amb_context_code           := 'DEFAULT';
137353 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
137354 l_event_class_code           := 'USER_DEFINE';
137355 l_event_type_code            := 'USUB_TXFR';
137356 l_line_definition_owner_code := 'S';
137357 l_line_definition_code       := 'PI_INTRAORG_TXFR';
137358 --
137359 l_balance_type_code          := 'A';
137360 l_segment                     := NULL;
137361 l_ccid                        := NULL;
137362 l_adr_transaction_coa_id      := NULL;
137363 l_adr_accounting_coa_id       := NULL;
137364 l_adr_flexfield_segment_code  := NULL;
137365 l_adr_flex_value_set_id       := NULL;
137366 l_adr_value_type_code         := NULL;
137367 l_adr_value_combination_id    := NULL;
137368 l_adr_value_segment_code      := NULL;
137369 
137370 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
137371 l_bflow_class_code           := '';    -- 4219869 Business Flow
137372 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
137373 l_budgetary_control_flag     := 'N';
137374 
137375 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
137376 l_bflow_applied_to_amt       := NULL; -- 5132302
137377 l_entered_amt_idx            := NULL;          -- 4262811
137378 l_accted_amt_idx             := NULL;          -- 4262811
137379 l_acc_rev_flag               := NULL;          -- 4262811
137380 l_accrual_line_num           := NULL;          -- 4262811
137381 l_tmp_amt                    := NULL;          -- 4262811
137382 --
137383  
137384 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137385     l_balance_type_code <> 'B' THEN
137386 IF NVL(p_source_97,9E125) =  1
137387  THEN 
137388 
137389    --
137390    XLA_AE_LINES_PKG.SetNewLine;
137391 
137392    p_balance_type_code          := l_balance_type_code;
137393    -- set the flag so later we will know whether the gain loss line needs to be created
137394    
137395    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137396      p_actual_flag :='A';
137397    END IF;
137398 
137399    --
137400    -- bulk performance
137401    --
137402    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137403                                       p_header_num   => 0); -- 4262811
137404    --
137405    -- set accounting line options
137406    --
137407    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137408            p_natural_side_code          => 'D'
137409          , p_gain_or_loss_flag          => 'N'
137410          , p_gl_transfer_mode_code      => 'S'
137411          , p_acct_entry_type_code       => 'A'
137412          , p_switch_side_flag           => 'Y'
137413          , p_merge_duplicate_code       => 'N'
137414          );
137415    --
137416    l_acc_rev_natural_side_code := 'C';  -- 4262811
137417    -- 
137418    --
137419    -- set accounting line type info
137420    --
137421    xla_ae_lines_pkg.SetAcctLineType
137422       (p_component_type             => l_component_type
137423       ,p_event_type_code            => l_event_type_code
137424       ,p_line_definition_owner_code => l_line_definition_owner_code
137425       ,p_line_definition_code       => l_line_definition_code
137426       ,p_accounting_line_code       => l_component_code
137427       ,p_accounting_line_type_code  => l_component_type_code
137428       ,p_accounting_line_appl_id    => l_component_appl_id
137429       ,p_amb_context_code           => l_amb_context_code
137430       ,p_entity_code                => l_entity_code
137431       ,p_event_class_code           => l_event_class_code);
137432    --
137433    -- set accounting class
137434    --
137435    xla_ae_lines_pkg.SetAcctClass(
137436            p_accounting_class_code  => 'INVENTORY_VALUATION'
137437          , p_ae_header_id           => l_ae_header_id
137438          );
137439 
137440    --
137441    -- set rounding class
137442    --
137443    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137444                       'INVENTORY_VALUATION';
137445 
137446    --
137447    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137448    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137449    --
137450    -- bulk performance
137451    --
137452    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137453 
137454    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137455       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137456 
137457    -- 4955764
137458    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137459       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137460 
137461    -- 4458381 Public Sector Enh
137462    
137463    --
137464    -- set accounting attributes for the line type
137465    --
137466    l_entered_amt_idx := 3;
137467    l_accted_amt_idx  := 8;
137468    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
137469    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
137470    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
137471    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
137472    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
137473    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
137474    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
137475    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
137476    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
137477    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
137478    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
137479    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
137480    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
137481    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
137482    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
137483    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
137484    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
137485 
137486    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137487    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137488 
137489    ---------------------------------------------------------------------------------------------------------------
137490    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137491    ---------------------------------------------------------------------------------------------------------------
137492    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137493 
137494    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137495    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137496 
137497    IF xla_accounting_cache_pkg.GetValueChar
137498          (p_source_code         => 'LEDGER_CATEGORY_CODE'
137499          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137500    AND l_bflow_method_code = 'PRIOR_ENTRY'
137501 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137502    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137503          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137504        )
137505    THEN
137506          xla_ae_lines_pkg.BflowUpgEntry
137507            (p_business_method_code    => l_bflow_method_code
137508            ,p_business_class_code     => l_bflow_class_code
137509            ,p_balance_type            => l_balance_type_code);
137510    ELSE
137511       NULL;
137512 -- No business flow processing for business flow method of NONE.
137513    END IF;
137514 
137515    --
137516    -- call analytical criteria
137517    --
137518    
137519 
137520 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
137521 xla_ae_lines_pkg.SetAnalyticalCriteria(
137522    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
137523  , p_analytical_criterion_owner   => 'S'
137524  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
137525  , p_amb_context_code             => 'DEFAULT'
137526  , p_balancing_flag               => 'Y'
137527  
137528  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
137529  , p_analytical_detail_num_1     =>  NULL
137530  , p_analytical_detail_date_1    =>  NULL
137531 
137532  , p_ae_header_id                 => l_ae_header_id
137533 )
137534 ;
137535 --
137536 
137537    --
137538    -- call description
137539    --
137540    
137541 xla_ae_lines_pkg.SetLineDescription(
137542    p_ae_header_id => l_ae_header_id
137543   ,p_description  => Description_1 (
137544      p_application_id         => p_application_id
137545    , p_ae_header_id           => l_ae_header_id 
137546 , p_source_1 => p_source_1
137547 , p_source_2 => p_source_2
137548 , p_source_3 => p_source_3
137549 , p_source_4 => p_source_4
137550 , p_source_5 => p_source_5
137551    )
137552 );
137553 
137554 
137555    --
137556    -- call ADRs
137557    -- Bug 4922099
137558    --
137559    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137560         (NVL(l_actual_upg_option, 'N') = 'O') OR
137561         (NVL(l_enc_upg_option, 'N') = 'O')
137562       )
137563    THEN
137564    NULL;
137565    --
137566    --
137567    
137568   l_ccid := AcctDerRule_29(
137569            p_application_id           => p_application_id
137570          , p_ae_header_id             => l_ae_header_id 
137571 , p_source_15 => p_source_15
137572 , p_source_26 => p_source_26
137573 , p_source_27 => p_source_27
137574 , p_source_28 => p_source_28
137575 , p_source_29 => p_source_29
137576 , p_source_31 => p_source_31
137577 , p_source_41 => p_source_41
137578 , p_source_42 => p_source_42
137579 , p_source_43 => p_source_43
137580 , p_source_44 => p_source_44
137581 , p_source_45 => p_source_45
137582 , p_source_48 => p_source_48
137583 , p_source_49 => p_source_49
137584 , p_source_50 => p_source_50
137585 , p_source_51 => p_source_51
137586 , p_source_52 => p_source_52
137587          , x_transaction_coa_id       => l_adr_transaction_coa_id
137588          , x_accounting_coa_id        => l_adr_accounting_coa_id
137589          , x_value_type_code          => l_adr_value_type_code
137590          , p_side                     => 'NA'
137591    );
137592 
137593    xla_ae_lines_pkg.set_ccid(
137594     p_code_combination_id          => l_ccid
137595   , p_value_type_code              => l_adr_value_type_code
137596   , p_transaction_coa_id           => l_adr_transaction_coa_id
137597   , p_accounting_coa_id            => l_adr_accounting_coa_id
137598   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT_ADR'
137599   , p_adr_type_code                => 'S'
137600   , p_component_type               => l_component_type
137601   , p_component_code               => l_component_code
137602   , p_component_type_code          => l_component_type_code
137603   , p_component_appl_id            => l_component_appl_id
137604   , p_amb_context_code             => l_amb_context_code
137605   , p_side                         => 'NA'
137606   );
137607 
137608 
137609    --
137610    --
137611    END IF;
137612    --
137613    -- Bug 4922099
137614    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137615           (NVL(l_enc_upg_option, 'N') = 'O')
137616         ) AND
137617         (l_bflow_method_code = 'PRIOR_ENTRY')
137618       )
137619    THEN
137620       IF
137621       --
137622       1 = 2
137623       --
137624       THEN
137625       xla_accounting_err_pkg.build_message
137626                                     (p_appli_s_name            => 'XLA'
137627                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137628                                     ,p_token_1                 => 'LINE_NUMBER'
137629                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
137630                                     ,p_token_2                 => 'LINE_TYPE_NAME'
137631                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
137632                                                                              l_component_type
137633                                                                             ,l_component_code
137634                                                                             ,l_component_type_code
137635                                                                             ,l_component_appl_id
137636                                                                             ,l_amb_context_code
137637                                                                             ,l_entity_code
137638                                                                             ,l_event_class_code
137639                                                                            )
137640                                     ,p_token_3                 => 'OWNER'
137641                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
137642                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
137643                                                                           ,p_lookup_code    => l_component_type_code
137644                                                                          )
137645                                     ,p_token_4                 => 'PRODUCT_NAME'
137646                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137647                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137648                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137649                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137650                                     ,p_ae_header_id            =>  NULL
137651                                        );
137652 
137653         IF (C_LEVEL_ERROR>= g_log_level) THEN
137654                  trace
137655                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137656                       ,p_level    => C_LEVEL_ERROR
137657                       ,p_module   => l_log_module);
137658         END IF;
137659       END IF;
137660    END IF;
137661    --
137662    --
137663    ------------------------------------------------------------------------------------------------
137664    -- 4219869 Business Flow
137665    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137666    -- Prior Entry.  Currently, the following code is always generated.
137667    ------------------------------------------------------------------------------------------------
137668    XLA_AE_LINES_PKG.ValidateCurrentLine;
137669 
137670    ------------------------------------------------------------------------------------
137671    -- 4219869 Business Flow
137672    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137673    ------------------------------------------------------------------------------------
137674    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137675 
137676    ----------------------------------------------------------------------------------
137677    -- 4219869 Business Flow
137678    -- Update journal entry status -- Need to generate this within IF <condition>
137679    ----------------------------------------------------------------------------------
137680    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137681          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137682          ,p_balance_type_code => l_balance_type_code
137683          );
137684 
137685    -------------------------------------------------------------------------------------------
137686    -- 4262811 - Generate the Accrual Reversal lines
137687    -------------------------------------------------------------------------------------------
137688    BEGIN
137689       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137690                               (g_array_event(p_event_id).array_value_num('header_index'));
137691       IF l_acc_rev_flag IS NULL THEN
137692          l_acc_rev_flag := 'N';
137693       END IF;
137694    EXCEPTION
137695       WHEN OTHERS THEN
137696          l_acc_rev_flag := 'N';
137697    END;
137698    --
137699    IF (l_acc_rev_flag = 'Y') THEN
137700 
137701        -- 4645092  ------------------------------------------------------------------------------
137702        -- To allow MPA report to determine if it should generate report process
137703        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137704        ------------------------------------------------------------------------------------------
137705 
137706        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137707        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137708    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
137709    -- call ADRs
137710    -- Bug 4922099
137711    --
137712    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137713         (NVL(l_actual_upg_option, 'N') = 'O') OR
137714         (NVL(l_enc_upg_option, 'N') = 'O')
137715       )
137716    THEN
137717    NULL;
137718    --
137719    --
137720    
137721   l_ccid := AcctDerRule_29(
137722            p_application_id           => p_application_id
137723          , p_ae_header_id             => l_ae_header_id 
137724 , p_source_15 => p_source_15
137725 , p_source_26 => p_source_26
137726 , p_source_27 => p_source_27
137727 , p_source_28 => p_source_28
137728 , p_source_29 => p_source_29
137729 , p_source_31 => p_source_31
137730 , p_source_41 => p_source_41
137731 , p_source_42 => p_source_42
137732 , p_source_43 => p_source_43
137733 , p_source_44 => p_source_44
137734 , p_source_45 => p_source_45
137735 , p_source_48 => p_source_48
137736 , p_source_49 => p_source_49
137737 , p_source_50 => p_source_50
137738 , p_source_51 => p_source_51
137739 , p_source_52 => p_source_52
137740          , x_transaction_coa_id       => l_adr_transaction_coa_id
137741          , x_accounting_coa_id        => l_adr_accounting_coa_id
137742          , x_value_type_code          => l_adr_value_type_code
137743          , p_side                     => 'NA'
137744    );
137745 
137746    xla_ae_lines_pkg.set_ccid(
137747     p_code_combination_id          => l_ccid
137748   , p_value_type_code              => l_adr_value_type_code
137749   , p_transaction_coa_id           => l_adr_transaction_coa_id
137750   , p_accounting_coa_id            => l_adr_accounting_coa_id
137751   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT_ADR'
137752   , p_adr_type_code                => 'S'
137753   , p_component_type               => l_component_type
137754   , p_component_code               => l_component_code
137755   , p_component_type_code          => l_component_type_code
137756   , p_component_appl_id            => l_component_appl_id
137757   , p_amb_context_code             => l_amb_context_code
137758   , p_side                         => 'NA'
137759   );
137760 
137761 
137762    --
137763    --
137764    END IF;
137765 
137766        --
137767        -- Update the line information that should be overwritten
137768        --
137769        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137770                                          p_header_num   => 1);
137771        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
137772 
137773        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137774 
137775        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
137776           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
137777        END IF;
137778 
137779       --
137780       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
137781       --
137782       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
137783           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
137784       ELSE
137785           ---------------------------------------------------------------------------------------------------
137786           -- 4262811a Switch Sign
137787           ---------------------------------------------------------------------------------------------------
137788           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
137789           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137790                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137791           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137792                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137793           -- 5132302
137794           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
137795                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137796 
137797       END IF;
137798 
137799       -- 4955764
137800       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137801       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
137802 
137803 
137804       XLA_AE_LINES_PKG.ValidateCurrentLine;
137805       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137806 
137807       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137808                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
137809                ,p_balance_type_code => l_balance_type_code);
137810 
137811    END IF;
137812 
137813    -----------------------------------------------------------------------------------------
137814    -- 4262811 Multiperiod Accounting
137815    -----------------------------------------------------------------------------------------
137816      -- No MPA option is assigned.
137817 
137818 
137819 END IF;
137820 END IF;
137821 --
137822 
137823 --
137824 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137825    trace
137826       (p_msg      => 'END of AcctLineType_261'
137827       ,p_level    => C_LEVEL_PROCEDURE
137828       ,p_module   => l_log_module);
137829 END IF;
137830 --
137831 EXCEPTION
137832   WHEN xla_exceptions_pkg.application_exception THEN
137833       RAISE;
137834   WHEN OTHERS THEN
137835        xla_exceptions_pkg.raise_message
137836            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_261');
137837 END AcctLineType_261;
137838 --
137839 
137840 ---------------------------------------
137841 --
137842 -- PRIVATE FUNCTION
137843 --         AcctLineType_262
137844 --
137845 ---------------------------------------
137846 PROCEDURE AcctLineType_262 (
137847   p_application_id        IN NUMBER
137848  ,p_event_id              IN NUMBER
137849  ,p_calculate_acctd_flag  IN VARCHAR2
137850  ,p_calculate_g_l_flag    IN VARCHAR2
137851  ,p_actual_flag           IN OUT VARCHAR2
137852  ,p_balance_type_code     OUT VARCHAR2
137853  ,p_gain_or_loss_ref      OUT VARCHAR2
137854  
137855 --TRANSACTION_ID
137856  , p_source_1            IN NUMBER
137857 --Item Concatenated Segments
137858  , p_source_2            IN VARCHAR2
137859 --Transaction Quantity
137860  , p_source_3            IN NUMBER
137861 --Transaction Unit of Measure Code
137862  , p_source_4            IN VARCHAR2
137863 --Inventory Transaction Type Description
137864  , p_source_5            IN VARCHAR2
137865 --Cost Element Name
137866  , p_source_15            IN NUMBER
137867 --Product Line Accounting Category Material Account
137868  , p_source_41            IN NUMBER
137869 --Product Line Accounting Category Material Overhead Account
137870  , p_source_42            IN NUMBER
137871 --Product Line Accounting Category Resource Account
137872  , p_source_43            IN NUMBER
137873 --Product Line Accounting Category Outside Processing Account
137874  , p_source_44            IN NUMBER
137875 --Product Line Accounting Category Overhead Account
137876  , p_source_45            IN NUMBER
137877 --DISTRIBUTION_IDENTIFIER
137878  , p_source_84            IN NUMBER
137879 --Distribution Type
137880  , p_source_85            IN VARCHAR2
137881  , p_source_85_meaning    IN VARCHAR2
137882 --Entered Currency Code
137883  , p_source_88            IN VARCHAR2
137884 --Entered Amount
137885  , p_source_91            IN NUMBER
137886 --Currency Conversion Date
137887  , p_source_92            IN DATE
137888 --Currency Conversion Rate
137889  , p_source_93            IN NUMBER
137890 --Currency Conversion Type
137891  , p_source_94            IN VARCHAR2
137892 --Accounted Amount
137893  , p_source_95            IN NUMBER
137894 --Accounting Line Type
137895  , p_source_97            IN NUMBER
137896 --Organization Code
137897  , p_source_108            IN VARCHAR2
137898 )
137899 IS
137900 
137901 l_component_type              VARCHAR2(80);
137902 l_component_code              VARCHAR2(30);
137903 l_component_type_code         VARCHAR2(1);
137904 l_component_appl_id           INTEGER;
137905 l_amb_context_code            VARCHAR2(30);
137906 l_entity_code                 VARCHAR2(30);
137907 l_event_class_code            VARCHAR2(30);
137908 l_ae_header_id                NUMBER;
137909 l_event_type_code             VARCHAR2(30);
137910 l_line_definition_code        VARCHAR2(30);
137911 l_line_definition_owner_code  VARCHAR2(1);
137912 --
137913 -- adr variables
137914 l_segment                     VARCHAR2(30);
137915 l_ccid                        NUMBER;
137916 l_adr_transaction_coa_id      NUMBER;
137917 l_adr_accounting_coa_id       NUMBER;
137918 l_adr_flexfield_segment_code  VARCHAR2(30);
137919 l_adr_flex_value_set_id       NUMBER;
137920 l_adr_value_type_code         VARCHAR2(30);
137921 l_adr_value_combination_id    NUMBER;
137922 l_adr_value_segment_code      VARCHAR2(30);
137923 
137924 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
137925 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
137926 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
137927 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
137928 
137929 -- 4262811 Variables ------------------------------------------------------------------------------------------
137930 l_entered_amt_idx             NUMBER;
137931 l_accted_amt_idx              NUMBER;
137932 l_acc_rev_flag                VARCHAR2(1);
137933 l_accrual_line_num            NUMBER;
137934 l_tmp_amt                     NUMBER;
137935 l_acc_rev_natural_side_code   VARCHAR2(1);
137936 
137937 l_num_entries                 NUMBER;
137938 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
137939 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
137940 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
137941 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
137942 l_recog_line_1                NUMBER;
137943 l_recog_line_2                NUMBER;
137944 
137945 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
137946 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
137947 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
137948 
137949 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137950 
137951 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
137952 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
137953 
137954 ---------------------------------------------------------------------------------------------------------------
137955 
137956 
137957 --
137958 -- bulk performance
137959 --
137960 l_balance_type_code           VARCHAR2(1);
137961 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
137962 l_log_module                  VARCHAR2(240);
137963 
137964 --
137965 -- Upgrade strategy
137966 --
137967 l_actual_upg_option           VARCHAR2(1);
137968 l_enc_upg_option           VARCHAR2(1);
137969 
137970 --
137971 BEGIN
137972 --
137973 IF g_log_enabled THEN
137974       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_262';
137975 END IF;
137976 --
137977 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137978 
137979       trace
137980          (p_msg      => 'BEGIN of AcctLineType_262'
137981          ,p_level    => C_LEVEL_PROCEDURE
137982          ,p_module   => l_log_module);
137983 
137984 END IF;
137985 --
137986 l_component_type             := 'AMB_JLT';
137987 l_component_code             := 'INVENTORY_VALUATION';
137988 l_component_type_code        := 'S';
137989 l_component_appl_id          :=  707;
137990 l_amb_context_code           := 'DEFAULT';
137991 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
137992 l_event_class_code           := 'WIP_MTL';
137993 l_event_type_code            := 'WIP_ASSEMBLY_RETURN';
137994 l_line_definition_owner_code := 'S';
137995 l_line_definition_code       := 'PI_WIP_ASSEMBLY_RETURN';
137996 --
137997 l_balance_type_code          := 'A';
137998 l_segment                     := NULL;
137999 l_ccid                        := NULL;
138000 l_adr_transaction_coa_id      := NULL;
138001 l_adr_accounting_coa_id       := NULL;
138002 l_adr_flexfield_segment_code  := NULL;
138003 l_adr_flex_value_set_id       := NULL;
138004 l_adr_value_type_code         := NULL;
138005 l_adr_value_combination_id    := NULL;
138006 l_adr_value_segment_code      := NULL;
138007 
138008 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
138009 l_bflow_class_code           := '';    -- 4219869 Business Flow
138010 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
138011 l_budgetary_control_flag     := 'N';
138012 
138013 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
138014 l_bflow_applied_to_amt       := NULL; -- 5132302
138015 l_entered_amt_idx            := NULL;          -- 4262811
138016 l_accted_amt_idx             := NULL;          -- 4262811
138017 l_acc_rev_flag               := NULL;          -- 4262811
138018 l_accrual_line_num           := NULL;          -- 4262811
138019 l_tmp_amt                    := NULL;          -- 4262811
138020 --
138021  
138022 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
138023     l_balance_type_code <> 'B' THEN
138024 IF NVL(p_source_97,9E125) =  1
138025  THEN 
138026 
138027    --
138028    XLA_AE_LINES_PKG.SetNewLine;
138029 
138030    p_balance_type_code          := l_balance_type_code;
138031    -- set the flag so later we will know whether the gain loss line needs to be created
138032    
138033    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
138034      p_actual_flag :='A';
138035    END IF;
138036 
138037    --
138038    -- bulk performance
138039    --
138040    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
138041                                       p_header_num   => 0); -- 4262811
138042    --
138043    -- set accounting line options
138044    --
138045    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
138046            p_natural_side_code          => 'D'
138047          , p_gain_or_loss_flag          => 'N'
138048          , p_gl_transfer_mode_code      => 'S'
138049          , p_acct_entry_type_code       => 'A'
138050          , p_switch_side_flag           => 'Y'
138051          , p_merge_duplicate_code       => 'N'
138052          );
138053    --
138054    l_acc_rev_natural_side_code := 'C';  -- 4262811
138055    -- 
138056    --
138057    -- set accounting line type info
138058    --
138059    xla_ae_lines_pkg.SetAcctLineType
138060       (p_component_type             => l_component_type
138061       ,p_event_type_code            => l_event_type_code
138062       ,p_line_definition_owner_code => l_line_definition_owner_code
138063       ,p_line_definition_code       => l_line_definition_code
138064       ,p_accounting_line_code       => l_component_code
138065       ,p_accounting_line_type_code  => l_component_type_code
138066       ,p_accounting_line_appl_id    => l_component_appl_id
138067       ,p_amb_context_code           => l_amb_context_code
138068       ,p_entity_code                => l_entity_code
138069       ,p_event_class_code           => l_event_class_code);
138070    --
138071    -- set accounting class
138072    --
138073    xla_ae_lines_pkg.SetAcctClass(
138074            p_accounting_class_code  => 'INVENTORY_VALUATION'
138075          , p_ae_header_id           => l_ae_header_id
138076          );
138077 
138078    --
138079    -- set rounding class
138080    --
138081    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
138082                       'INVENTORY_VALUATION';
138083 
138084    --
138085    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
138086    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
138087    --
138088    -- bulk performance
138089    --
138090    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
138091 
138092    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
138093       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
138094 
138095    -- 4955764
138096    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138097       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
138098 
138099    -- 4458381 Public Sector Enh
138100    
138101    --
138102    -- set accounting attributes for the line type
138103    --
138104    l_entered_amt_idx := 3;
138105    l_accted_amt_idx  := 8;
138106    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
138107    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
138108    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
138109    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
138110    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
138111    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
138112    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
138113    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
138114    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
138115    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
138116    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
138117    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
138118    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
138119    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
138120    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
138121    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
138122    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
138123 
138124    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
138125    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
138126 
138127    ---------------------------------------------------------------------------------------------------------------
138128    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
138129    ---------------------------------------------------------------------------------------------------------------
138130    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
138131 
138132    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138133    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138134 
138135    IF xla_accounting_cache_pkg.GetValueChar
138136          (p_source_code         => 'LEDGER_CATEGORY_CODE'
138137          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
138138    AND l_bflow_method_code = 'PRIOR_ENTRY'
138139 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
138140    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
138141          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
138142        )
138143    THEN
138144          xla_ae_lines_pkg.BflowUpgEntry
138145            (p_business_method_code    => l_bflow_method_code
138146            ,p_business_class_code     => l_bflow_class_code
138147            ,p_balance_type            => l_balance_type_code);
138148    ELSE
138149       NULL;
138150 -- No business flow processing for business flow method of NONE.
138151    END IF;
138152 
138153    --
138154    -- call analytical criteria
138155    --
138156    
138157 
138158 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
138159 xla_ae_lines_pkg.SetAnalyticalCriteria(
138160    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
138161  , p_analytical_criterion_owner   => 'S'
138162  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
138163  , p_amb_context_code             => 'DEFAULT'
138164  , p_balancing_flag               => 'Y'
138165  
138166  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
138167  , p_analytical_detail_num_1     =>  NULL
138168  , p_analytical_detail_date_1    =>  NULL
138169 
138170  , p_ae_header_id                 => l_ae_header_id
138171 )
138172 ;
138173 --
138174 
138175    --
138176    -- call description
138177    --
138178    
138179 xla_ae_lines_pkg.SetLineDescription(
138180    p_ae_header_id => l_ae_header_id
138181   ,p_description  => Description_1 (
138182      p_application_id         => p_application_id
138183    , p_ae_header_id           => l_ae_header_id 
138184 , p_source_1 => p_source_1
138185 , p_source_2 => p_source_2
138186 , p_source_3 => p_source_3
138187 , p_source_4 => p_source_4
138188 , p_source_5 => p_source_5
138189    )
138190 );
138191 
138192 
138193    --
138194    -- call ADRs
138195    -- Bug 4922099
138196    --
138197    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138198         (NVL(l_actual_upg_option, 'N') = 'O') OR
138199         (NVL(l_enc_upg_option, 'N') = 'O')
138200       )
138201    THEN
138202    NULL;
138203    --
138204    --
138205    
138206   l_ccid := AcctDerRule_28(
138207            p_application_id           => p_application_id
138208          , p_ae_header_id             => l_ae_header_id 
138209 , p_source_15 => p_source_15
138210 , p_source_41 => p_source_41
138211 , p_source_42 => p_source_42
138212 , p_source_43 => p_source_43
138213 , p_source_44 => p_source_44
138214 , p_source_45 => p_source_45
138215          , x_transaction_coa_id       => l_adr_transaction_coa_id
138216          , x_accounting_coa_id        => l_adr_accounting_coa_id
138217          , x_value_type_code          => l_adr_value_type_code
138218          , p_side                     => 'NA'
138219    );
138220 
138221    xla_ae_lines_pkg.set_ccid(
138222     p_code_combination_id          => l_ccid
138223   , p_value_type_code              => l_adr_value_type_code
138224   , p_transaction_coa_id           => l_adr_transaction_coa_id
138225   , p_accounting_coa_id            => l_adr_accounting_coa_id
138226   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
138227   , p_adr_type_code                => 'S'
138228   , p_component_type               => l_component_type
138229   , p_component_code               => l_component_code
138230   , p_component_type_code          => l_component_type_code
138231   , p_component_appl_id            => l_component_appl_id
138232   , p_amb_context_code             => l_amb_context_code
138233   , p_side                         => 'NA'
138234   );
138235 
138236 
138237    --
138238    --
138239    END IF;
138240    --
138241    -- Bug 4922099
138242    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
138243           (NVL(l_enc_upg_option, 'N') = 'O')
138244         ) AND
138245         (l_bflow_method_code = 'PRIOR_ENTRY')
138246       )
138247    THEN
138248       IF
138249       --
138250       1 = 2
138251       --
138252       THEN
138253       xla_accounting_err_pkg.build_message
138254                                     (p_appli_s_name            => 'XLA'
138255                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138256                                     ,p_token_1                 => 'LINE_NUMBER'
138257                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
138258                                     ,p_token_2                 => 'LINE_TYPE_NAME'
138259                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
138260                                                                              l_component_type
138261                                                                             ,l_component_code
138262                                                                             ,l_component_type_code
138263                                                                             ,l_component_appl_id
138264                                                                             ,l_amb_context_code
138265                                                                             ,l_entity_code
138266                                                                             ,l_event_class_code
138267                                                                            )
138268                                     ,p_token_3                 => 'OWNER'
138269                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
138270                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
138271                                                                           ,p_lookup_code    => l_component_type_code
138272                                                                          )
138273                                     ,p_token_4                 => 'PRODUCT_NAME'
138274                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
138275                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
138276                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
138277                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
138278                                     ,p_ae_header_id            =>  NULL
138279                                        );
138280 
138281         IF (C_LEVEL_ERROR>= g_log_level) THEN
138282                  trace
138283                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138284                       ,p_level    => C_LEVEL_ERROR
138285                       ,p_module   => l_log_module);
138286         END IF;
138287       END IF;
138288    END IF;
138289    --
138290    --
138291    ------------------------------------------------------------------------------------------------
138292    -- 4219869 Business Flow
138293    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
138294    -- Prior Entry.  Currently, the following code is always generated.
138295    ------------------------------------------------------------------------------------------------
138296    XLA_AE_LINES_PKG.ValidateCurrentLine;
138297 
138298    ------------------------------------------------------------------------------------
138299    -- 4219869 Business Flow
138300    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
138301    ------------------------------------------------------------------------------------
138302    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138303 
138304    ----------------------------------------------------------------------------------
138305    -- 4219869 Business Flow
138306    -- Update journal entry status -- Need to generate this within IF <condition>
138307    ----------------------------------------------------------------------------------
138308    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138309          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
138310          ,p_balance_type_code => l_balance_type_code
138311          );
138312 
138313    -------------------------------------------------------------------------------------------
138314    -- 4262811 - Generate the Accrual Reversal lines
138315    -------------------------------------------------------------------------------------------
138316    BEGIN
138317       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
138318                               (g_array_event(p_event_id).array_value_num('header_index'));
138319       IF l_acc_rev_flag IS NULL THEN
138320          l_acc_rev_flag := 'N';
138321       END IF;
138322    EXCEPTION
138323       WHEN OTHERS THEN
138324          l_acc_rev_flag := 'N';
138325    END;
138326    --
138327    IF (l_acc_rev_flag = 'Y') THEN
138328 
138329        -- 4645092  ------------------------------------------------------------------------------
138330        -- To allow MPA report to determine if it should generate report process
138331        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
138332        ------------------------------------------------------------------------------------------
138333 
138334        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
138335        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
138336    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
138337    -- call ADRs
138338    -- Bug 4922099
138339    --
138340    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138341         (NVL(l_actual_upg_option, 'N') = 'O') OR
138342         (NVL(l_enc_upg_option, 'N') = 'O')
138343       )
138344    THEN
138345    NULL;
138346    --
138347    --
138348    
138349   l_ccid := AcctDerRule_28(
138350            p_application_id           => p_application_id
138351          , p_ae_header_id             => l_ae_header_id 
138352 , p_source_15 => p_source_15
138353 , p_source_41 => p_source_41
138354 , p_source_42 => p_source_42
138355 , p_source_43 => p_source_43
138356 , p_source_44 => p_source_44
138357 , p_source_45 => p_source_45
138358          , x_transaction_coa_id       => l_adr_transaction_coa_id
138359          , x_accounting_coa_id        => l_adr_accounting_coa_id
138360          , x_value_type_code          => l_adr_value_type_code
138361          , p_side                     => 'NA'
138362    );
138363 
138364    xla_ae_lines_pkg.set_ccid(
138365     p_code_combination_id          => l_ccid
138366   , p_value_type_code              => l_adr_value_type_code
138367   , p_transaction_coa_id           => l_adr_transaction_coa_id
138368   , p_accounting_coa_id            => l_adr_accounting_coa_id
138369   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
138370   , p_adr_type_code                => 'S'
138371   , p_component_type               => l_component_type
138372   , p_component_code               => l_component_code
138373   , p_component_type_code          => l_component_type_code
138374   , p_component_appl_id            => l_component_appl_id
138375   , p_amb_context_code             => l_amb_context_code
138376   , p_side                         => 'NA'
138377   );
138378 
138379 
138380    --
138381    --
138382    END IF;
138383 
138384        --
138385        -- Update the line information that should be overwritten
138386        --
138387        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
138388                                          p_header_num   => 1);
138389        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
138390 
138391        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
138392 
138393        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
138394           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
138395        END IF;
138396 
138397       --
138398       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
138399       --
138400       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
138401           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
138402       ELSE
138403           ---------------------------------------------------------------------------------------------------
138404           -- 4262811a Switch Sign
138405           ---------------------------------------------------------------------------------------------------
138406           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
138407           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138408                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138409           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138410                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138411           -- 5132302
138412           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
138413                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138414 
138415       END IF;
138416 
138417       -- 4955764
138418       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138419       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
138420 
138421 
138422       XLA_AE_LINES_PKG.ValidateCurrentLine;
138423       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138424 
138425       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138426                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
138427                ,p_balance_type_code => l_balance_type_code);
138428 
138429    END IF;
138430 
138431    -----------------------------------------------------------------------------------------
138432    -- 4262811 Multiperiod Accounting
138433    -----------------------------------------------------------------------------------------
138434      -- No MPA option is assigned.
138435 
138436 
138437 END IF;
138438 END IF;
138439 --
138440 
138441 --
138442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138443    trace
138444       (p_msg      => 'END of AcctLineType_262'
138445       ,p_level    => C_LEVEL_PROCEDURE
138446       ,p_module   => l_log_module);
138447 END IF;
138448 --
138449 EXCEPTION
138450   WHEN xla_exceptions_pkg.application_exception THEN
138451       RAISE;
138452   WHEN OTHERS THEN
138453        xla_exceptions_pkg.raise_message
138454            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_262');
138455 END AcctLineType_262;
138456 --
138457 
138458 ---------------------------------------
138459 --
138460 -- PRIVATE FUNCTION
138461 --         AcctLineType_263
138462 --
138463 ---------------------------------------
138464 PROCEDURE AcctLineType_263 (
138465   p_application_id        IN NUMBER
138466  ,p_event_id              IN NUMBER
138467  ,p_calculate_acctd_flag  IN VARCHAR2
138468  ,p_calculate_g_l_flag    IN VARCHAR2
138469  ,p_actual_flag           IN OUT VARCHAR2
138470  ,p_balance_type_code     OUT VARCHAR2
138471  ,p_gain_or_loss_ref      OUT VARCHAR2
138472  
138473 --TRANSACTION_ID
138474  , p_source_1            IN NUMBER
138475 --Item Concatenated Segments
138476  , p_source_2            IN VARCHAR2
138477 --Transaction Quantity
138478  , p_source_3            IN NUMBER
138479 --Transaction Unit of Measure Code
138480  , p_source_4            IN VARCHAR2
138481 --Inventory Transaction Type Description
138482  , p_source_5            IN VARCHAR2
138483 --Cost Element Name
138484  , p_source_15            IN NUMBER
138485 --Product Line Accounting Category Material Account
138486  , p_source_41            IN NUMBER
138487 --Product Line Accounting Category Material Overhead Account
138488  , p_source_42            IN NUMBER
138489 --Product Line Accounting Category Resource Account
138490  , p_source_43            IN NUMBER
138491 --Product Line Accounting Category Outside Processing Account
138492  , p_source_44            IN NUMBER
138493 --Product Line Accounting Category Overhead Account
138494  , p_source_45            IN NUMBER
138495 --DISTRIBUTION_IDENTIFIER
138496  , p_source_84            IN NUMBER
138497 --Distribution Type
138498  , p_source_85            IN VARCHAR2
138499  , p_source_85_meaning    IN VARCHAR2
138500 --Entered Currency Code
138501  , p_source_88            IN VARCHAR2
138502 --Entered Amount
138503  , p_source_91            IN NUMBER
138504 --Currency Conversion Date
138505  , p_source_92            IN DATE
138506 --Currency Conversion Rate
138507  , p_source_93            IN NUMBER
138508 --Currency Conversion Type
138509  , p_source_94            IN VARCHAR2
138510 --Accounted Amount
138511  , p_source_95            IN NUMBER
138512 --Accounting Line Type
138513  , p_source_97            IN NUMBER
138514 --Organization Code
138515  , p_source_108            IN VARCHAR2
138516 )
138517 IS
138518 
138519 l_component_type              VARCHAR2(80);
138520 l_component_code              VARCHAR2(30);
138521 l_component_type_code         VARCHAR2(1);
138522 l_component_appl_id           INTEGER;
138523 l_amb_context_code            VARCHAR2(30);
138524 l_entity_code                 VARCHAR2(30);
138525 l_event_class_code            VARCHAR2(30);
138526 l_ae_header_id                NUMBER;
138527 l_event_type_code             VARCHAR2(30);
138528 l_line_definition_code        VARCHAR2(30);
138529 l_line_definition_owner_code  VARCHAR2(1);
138530 --
138531 -- adr variables
138532 l_segment                     VARCHAR2(30);
138533 l_ccid                        NUMBER;
138534 l_adr_transaction_coa_id      NUMBER;
138535 l_adr_accounting_coa_id       NUMBER;
138536 l_adr_flexfield_segment_code  VARCHAR2(30);
138537 l_adr_flex_value_set_id       NUMBER;
138538 l_adr_value_type_code         VARCHAR2(30);
138539 l_adr_value_combination_id    NUMBER;
138540 l_adr_value_segment_code      VARCHAR2(30);
138541 
138542 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
138543 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
138544 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
138545 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
138546 
138547 -- 4262811 Variables ------------------------------------------------------------------------------------------
138548 l_entered_amt_idx             NUMBER;
138549 l_accted_amt_idx              NUMBER;
138550 l_acc_rev_flag                VARCHAR2(1);
138551 l_accrual_line_num            NUMBER;
138552 l_tmp_amt                     NUMBER;
138553 l_acc_rev_natural_side_code   VARCHAR2(1);
138554 
138555 l_num_entries                 NUMBER;
138556 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
138557 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
138558 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
138559 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
138560 l_recog_line_1                NUMBER;
138561 l_recog_line_2                NUMBER;
138562 
138563 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
138564 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
138565 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
138566 
138567 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
138568 
138569 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
138570 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
138571 
138572 ---------------------------------------------------------------------------------------------------------------
138573 
138574 
138575 --
138576 -- bulk performance
138577 --
138578 l_balance_type_code           VARCHAR2(1);
138579 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
138580 l_log_module                  VARCHAR2(240);
138581 
138582 --
138583 -- Upgrade strategy
138584 --
138585 l_actual_upg_option           VARCHAR2(1);
138586 l_enc_upg_option           VARCHAR2(1);
138587 
138588 --
138589 BEGIN
138590 --
138591 IF g_log_enabled THEN
138592       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_263';
138593 END IF;
138594 --
138595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138596 
138597       trace
138598          (p_msg      => 'BEGIN of AcctLineType_263'
138599          ,p_level    => C_LEVEL_PROCEDURE
138600          ,p_module   => l_log_module);
138601 
138602 END IF;
138603 --
138604 l_component_type             := 'AMB_JLT';
138605 l_component_code             := 'INVENTORY_VALUATION';
138606 l_component_type_code        := 'S';
138607 l_component_appl_id          :=  707;
138608 l_amb_context_code           := 'DEFAULT';
138609 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
138610 l_event_class_code           := 'WIP_MTL';
138611 l_event_type_code            := 'WIP_COMP_ISSUE';
138612 l_line_definition_owner_code := 'S';
138613 l_line_definition_code       := 'PI_WIP_COMP_ISSUE';
138614 --
138615 l_balance_type_code          := 'A';
138616 l_segment                     := NULL;
138617 l_ccid                        := NULL;
138618 l_adr_transaction_coa_id      := NULL;
138619 l_adr_accounting_coa_id       := NULL;
138620 l_adr_flexfield_segment_code  := NULL;
138621 l_adr_flex_value_set_id       := NULL;
138622 l_adr_value_type_code         := NULL;
138623 l_adr_value_combination_id    := NULL;
138624 l_adr_value_segment_code      := NULL;
138625 
138626 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
138627 l_bflow_class_code           := '';    -- 4219869 Business Flow
138628 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
138629 l_budgetary_control_flag     := 'N';
138630 
138631 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
138632 l_bflow_applied_to_amt       := NULL; -- 5132302
138633 l_entered_amt_idx            := NULL;          -- 4262811
138634 l_accted_amt_idx             := NULL;          -- 4262811
138635 l_acc_rev_flag               := NULL;          -- 4262811
138636 l_accrual_line_num           := NULL;          -- 4262811
138637 l_tmp_amt                    := NULL;          -- 4262811
138638 --
138639  
138640 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
138641     l_balance_type_code <> 'B' THEN
138642 IF NVL(p_source_97,9E125) =  1
138643  THEN 
138644 
138645    --
138646    XLA_AE_LINES_PKG.SetNewLine;
138647 
138648    p_balance_type_code          := l_balance_type_code;
138649    -- set the flag so later we will know whether the gain loss line needs to be created
138650    
138651    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
138652      p_actual_flag :='A';
138653    END IF;
138654 
138655    --
138656    -- bulk performance
138657    --
138658    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
138659                                       p_header_num   => 0); -- 4262811
138660    --
138661    -- set accounting line options
138662    --
138663    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
138664            p_natural_side_code          => 'D'
138665          , p_gain_or_loss_flag          => 'N'
138666          , p_gl_transfer_mode_code      => 'S'
138667          , p_acct_entry_type_code       => 'A'
138668          , p_switch_side_flag           => 'Y'
138669          , p_merge_duplicate_code       => 'N'
138670          );
138671    --
138672    l_acc_rev_natural_side_code := 'C';  -- 4262811
138673    -- 
138674    --
138675    -- set accounting line type info
138676    --
138677    xla_ae_lines_pkg.SetAcctLineType
138678       (p_component_type             => l_component_type
138679       ,p_event_type_code            => l_event_type_code
138680       ,p_line_definition_owner_code => l_line_definition_owner_code
138681       ,p_line_definition_code       => l_line_definition_code
138682       ,p_accounting_line_code       => l_component_code
138683       ,p_accounting_line_type_code  => l_component_type_code
138684       ,p_accounting_line_appl_id    => l_component_appl_id
138685       ,p_amb_context_code           => l_amb_context_code
138686       ,p_entity_code                => l_entity_code
138687       ,p_event_class_code           => l_event_class_code);
138688    --
138689    -- set accounting class
138690    --
138691    xla_ae_lines_pkg.SetAcctClass(
138692            p_accounting_class_code  => 'INVENTORY_VALUATION'
138693          , p_ae_header_id           => l_ae_header_id
138694          );
138695 
138696    --
138697    -- set rounding class
138698    --
138699    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
138700                       'INVENTORY_VALUATION';
138701 
138702    --
138703    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
138704    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
138705    --
138706    -- bulk performance
138707    --
138708    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
138709 
138710    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
138711       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
138712 
138713    -- 4955764
138714    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138715       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
138716 
138717    -- 4458381 Public Sector Enh
138718    
138719    --
138720    -- set accounting attributes for the line type
138721    --
138722    l_entered_amt_idx := 3;
138723    l_accted_amt_idx  := 8;
138724    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
138725    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
138726    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
138727    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
138728    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
138729    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
138730    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
138731    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
138732    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
138733    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
138734    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
138735    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
138736    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
138737    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
138738    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
138739    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
138740    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
138741 
138742    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
138743    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
138744 
138745    ---------------------------------------------------------------------------------------------------------------
138746    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
138747    ---------------------------------------------------------------------------------------------------------------
138748    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
138749 
138750    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138751    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138752 
138753    IF xla_accounting_cache_pkg.GetValueChar
138754          (p_source_code         => 'LEDGER_CATEGORY_CODE'
138755          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
138756    AND l_bflow_method_code = 'PRIOR_ENTRY'
138757 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
138758    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
138759          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
138760        )
138761    THEN
138762          xla_ae_lines_pkg.BflowUpgEntry
138763            (p_business_method_code    => l_bflow_method_code
138764            ,p_business_class_code     => l_bflow_class_code
138765            ,p_balance_type            => l_balance_type_code);
138766    ELSE
138767       NULL;
138768 -- No business flow processing for business flow method of NONE.
138769    END IF;
138770 
138771    --
138772    -- call analytical criteria
138773    --
138774    
138775 
138776 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
138777 xla_ae_lines_pkg.SetAnalyticalCriteria(
138778    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
138779  , p_analytical_criterion_owner   => 'S'
138780  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
138781  , p_amb_context_code             => 'DEFAULT'
138782  , p_balancing_flag               => 'Y'
138783  
138784  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
138785  , p_analytical_detail_num_1     =>  NULL
138786  , p_analytical_detail_date_1    =>  NULL
138787 
138788  , p_ae_header_id                 => l_ae_header_id
138789 )
138790 ;
138791 --
138792 
138793    --
138794    -- call description
138795    --
138796    
138797 xla_ae_lines_pkg.SetLineDescription(
138798    p_ae_header_id => l_ae_header_id
138799   ,p_description  => Description_1 (
138800      p_application_id         => p_application_id
138801    , p_ae_header_id           => l_ae_header_id 
138802 , p_source_1 => p_source_1
138803 , p_source_2 => p_source_2
138804 , p_source_3 => p_source_3
138805 , p_source_4 => p_source_4
138806 , p_source_5 => p_source_5
138807    )
138808 );
138809 
138810 
138811    --
138812    -- call ADRs
138813    -- Bug 4922099
138814    --
138815    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138816         (NVL(l_actual_upg_option, 'N') = 'O') OR
138817         (NVL(l_enc_upg_option, 'N') = 'O')
138818       )
138819    THEN
138820    NULL;
138821    --
138822    --
138823    
138824   l_ccid := AcctDerRule_28(
138825            p_application_id           => p_application_id
138826          , p_ae_header_id             => l_ae_header_id 
138827 , p_source_15 => p_source_15
138828 , p_source_41 => p_source_41
138829 , p_source_42 => p_source_42
138830 , p_source_43 => p_source_43
138831 , p_source_44 => p_source_44
138832 , p_source_45 => p_source_45
138833          , x_transaction_coa_id       => l_adr_transaction_coa_id
138834          , x_accounting_coa_id        => l_adr_accounting_coa_id
138835          , x_value_type_code          => l_adr_value_type_code
138836          , p_side                     => 'NA'
138837    );
138838 
138839    xla_ae_lines_pkg.set_ccid(
138840     p_code_combination_id          => l_ccid
138841   , p_value_type_code              => l_adr_value_type_code
138842   , p_transaction_coa_id           => l_adr_transaction_coa_id
138843   , p_accounting_coa_id            => l_adr_accounting_coa_id
138844   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
138845   , p_adr_type_code                => 'S'
138846   , p_component_type               => l_component_type
138847   , p_component_code               => l_component_code
138848   , p_component_type_code          => l_component_type_code
138849   , p_component_appl_id            => l_component_appl_id
138850   , p_amb_context_code             => l_amb_context_code
138851   , p_side                         => 'NA'
138852   );
138853 
138854 
138855    --
138856    --
138857    END IF;
138858    --
138859    -- Bug 4922099
138860    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
138861           (NVL(l_enc_upg_option, 'N') = 'O')
138862         ) AND
138863         (l_bflow_method_code = 'PRIOR_ENTRY')
138864       )
138865    THEN
138866       IF
138867       --
138868       1 = 2
138869       --
138870       THEN
138871       xla_accounting_err_pkg.build_message
138872                                     (p_appli_s_name            => 'XLA'
138873                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138874                                     ,p_token_1                 => 'LINE_NUMBER'
138875                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
138876                                     ,p_token_2                 => 'LINE_TYPE_NAME'
138877                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
138878                                                                              l_component_type
138879                                                                             ,l_component_code
138880                                                                             ,l_component_type_code
138881                                                                             ,l_component_appl_id
138882                                                                             ,l_amb_context_code
138883                                                                             ,l_entity_code
138884                                                                             ,l_event_class_code
138885                                                                            )
138886                                     ,p_token_3                 => 'OWNER'
138887                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
138888                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
138889                                                                           ,p_lookup_code    => l_component_type_code
138890                                                                          )
138891                                     ,p_token_4                 => 'PRODUCT_NAME'
138892                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
138893                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
138894                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
138895                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
138896                                     ,p_ae_header_id            =>  NULL
138897                                        );
138898 
138899         IF (C_LEVEL_ERROR>= g_log_level) THEN
138900                  trace
138901                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138902                       ,p_level    => C_LEVEL_ERROR
138903                       ,p_module   => l_log_module);
138904         END IF;
138905       END IF;
138906    END IF;
138907    --
138908    --
138909    ------------------------------------------------------------------------------------------------
138910    -- 4219869 Business Flow
138911    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
138912    -- Prior Entry.  Currently, the following code is always generated.
138913    ------------------------------------------------------------------------------------------------
138914    XLA_AE_LINES_PKG.ValidateCurrentLine;
138915 
138916    ------------------------------------------------------------------------------------
138917    -- 4219869 Business Flow
138918    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
138919    ------------------------------------------------------------------------------------
138920    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138921 
138922    ----------------------------------------------------------------------------------
138923    -- 4219869 Business Flow
138924    -- Update journal entry status -- Need to generate this within IF <condition>
138925    ----------------------------------------------------------------------------------
138926    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138927          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
138928          ,p_balance_type_code => l_balance_type_code
138929          );
138930 
138931    -------------------------------------------------------------------------------------------
138932    -- 4262811 - Generate the Accrual Reversal lines
138933    -------------------------------------------------------------------------------------------
138934    BEGIN
138935       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
138936                               (g_array_event(p_event_id).array_value_num('header_index'));
138937       IF l_acc_rev_flag IS NULL THEN
138938          l_acc_rev_flag := 'N';
138939       END IF;
138940    EXCEPTION
138941       WHEN OTHERS THEN
138942          l_acc_rev_flag := 'N';
138943    END;
138944    --
138945    IF (l_acc_rev_flag = 'Y') THEN
138946 
138947        -- 4645092  ------------------------------------------------------------------------------
138948        -- To allow MPA report to determine if it should generate report process
138949        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
138950        ------------------------------------------------------------------------------------------
138951 
138952        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
138953        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
138954    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
138955    -- call ADRs
138956    -- Bug 4922099
138957    --
138958    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138959         (NVL(l_actual_upg_option, 'N') = 'O') OR
138960         (NVL(l_enc_upg_option, 'N') = 'O')
138961       )
138962    THEN
138963    NULL;
138964    --
138965    --
138966    
138967   l_ccid := AcctDerRule_28(
138968            p_application_id           => p_application_id
138969          , p_ae_header_id             => l_ae_header_id 
138970 , p_source_15 => p_source_15
138971 , p_source_41 => p_source_41
138972 , p_source_42 => p_source_42
138973 , p_source_43 => p_source_43
138974 , p_source_44 => p_source_44
138975 , p_source_45 => p_source_45
138976          , x_transaction_coa_id       => l_adr_transaction_coa_id
138977          , x_accounting_coa_id        => l_adr_accounting_coa_id
138978          , x_value_type_code          => l_adr_value_type_code
138979          , p_side                     => 'NA'
138980    );
138981 
138982    xla_ae_lines_pkg.set_ccid(
138983     p_code_combination_id          => l_ccid
138984   , p_value_type_code              => l_adr_value_type_code
138985   , p_transaction_coa_id           => l_adr_transaction_coa_id
138986   , p_accounting_coa_id            => l_adr_accounting_coa_id
138987   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
138988   , p_adr_type_code                => 'S'
138989   , p_component_type               => l_component_type
138990   , p_component_code               => l_component_code
138991   , p_component_type_code          => l_component_type_code
138992   , p_component_appl_id            => l_component_appl_id
138993   , p_amb_context_code             => l_amb_context_code
138994   , p_side                         => 'NA'
138995   );
138996 
138997 
138998    --
138999    --
139000    END IF;
139001 
139002        --
139003        -- Update the line information that should be overwritten
139004        --
139005        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
139006                                          p_header_num   => 1);
139007        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
139008 
139009        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
139010 
139011        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
139012           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
139013        END IF;
139014 
139015       --
139016       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
139017       --
139018       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
139019           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
139020       ELSE
139021           ---------------------------------------------------------------------------------------------------
139022           -- 4262811a Switch Sign
139023           ---------------------------------------------------------------------------------------------------
139024           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
139025           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139026                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139027           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139028                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139029           -- 5132302
139030           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
139031                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139032 
139033       END IF;
139034 
139035       -- 4955764
139036       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139037       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
139038 
139039 
139040       XLA_AE_LINES_PKG.ValidateCurrentLine;
139041       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139042 
139043       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139044                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
139045                ,p_balance_type_code => l_balance_type_code);
139046 
139047    END IF;
139048 
139049    -----------------------------------------------------------------------------------------
139050    -- 4262811 Multiperiod Accounting
139051    -----------------------------------------------------------------------------------------
139052      -- No MPA option is assigned.
139053 
139054 
139055 END IF;
139056 END IF;
139057 --
139058 
139059 --
139060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139061    trace
139062       (p_msg      => 'END of AcctLineType_263'
139063       ,p_level    => C_LEVEL_PROCEDURE
139064       ,p_module   => l_log_module);
139065 END IF;
139066 --
139067 EXCEPTION
139068   WHEN xla_exceptions_pkg.application_exception THEN
139069       RAISE;
139070   WHEN OTHERS THEN
139071        xla_exceptions_pkg.raise_message
139072            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_263');
139073 END AcctLineType_263;
139074 --
139075 
139076 ---------------------------------------
139077 --
139078 -- PRIVATE FUNCTION
139079 --         AcctLineType_264
139080 --
139081 ---------------------------------------
139082 PROCEDURE AcctLineType_264 (
139083   p_application_id        IN NUMBER
139084  ,p_event_id              IN NUMBER
139085  ,p_calculate_acctd_flag  IN VARCHAR2
139086  ,p_calculate_g_l_flag    IN VARCHAR2
139087  ,p_actual_flag           IN OUT VARCHAR2
139088  ,p_balance_type_code     OUT VARCHAR2
139089  ,p_gain_or_loss_ref      OUT VARCHAR2
139090  
139091 --TRANSACTION_ID
139092  , p_source_1            IN NUMBER
139093 --Item Concatenated Segments
139094  , p_source_2            IN VARCHAR2
139095 --Transaction Quantity
139096  , p_source_3            IN NUMBER
139097 --Transaction Unit of Measure Code
139098  , p_source_4            IN VARCHAR2
139099 --Inventory Transaction Type Description
139100  , p_source_5            IN VARCHAR2
139101 --Cost Element Name
139102  , p_source_15            IN NUMBER
139103 --Product Line Accounting Category Material Account
139104  , p_source_41            IN NUMBER
139105 --Product Line Accounting Category Material Overhead Account
139106  , p_source_42            IN NUMBER
139107 --Product Line Accounting Category Resource Account
139108  , p_source_43            IN NUMBER
139109 --Product Line Accounting Category Outside Processing Account
139110  , p_source_44            IN NUMBER
139111 --Product Line Accounting Category Overhead Account
139112  , p_source_45            IN NUMBER
139113 --DISTRIBUTION_IDENTIFIER
139114  , p_source_84            IN NUMBER
139115 --Distribution Type
139116  , p_source_85            IN VARCHAR2
139117  , p_source_85_meaning    IN VARCHAR2
139118 --Entered Currency Code
139119  , p_source_88            IN VARCHAR2
139120 --Entered Amount
139121  , p_source_91            IN NUMBER
139122 --Currency Conversion Date
139123  , p_source_92            IN DATE
139124 --Currency Conversion Rate
139125  , p_source_93            IN NUMBER
139126 --Currency Conversion Type
139127  , p_source_94            IN VARCHAR2
139128 --Accounted Amount
139129  , p_source_95            IN NUMBER
139130 --Accounting Line Type
139131  , p_source_97            IN NUMBER
139132 --Organization Code
139133  , p_source_108            IN VARCHAR2
139134 )
139135 IS
139136 
139137 l_component_type              VARCHAR2(80);
139138 l_component_code              VARCHAR2(30);
139139 l_component_type_code         VARCHAR2(1);
139140 l_component_appl_id           INTEGER;
139141 l_amb_context_code            VARCHAR2(30);
139142 l_entity_code                 VARCHAR2(30);
139143 l_event_class_code            VARCHAR2(30);
139144 l_ae_header_id                NUMBER;
139145 l_event_type_code             VARCHAR2(30);
139146 l_line_definition_code        VARCHAR2(30);
139147 l_line_definition_owner_code  VARCHAR2(1);
139148 --
139149 -- adr variables
139150 l_segment                     VARCHAR2(30);
139151 l_ccid                        NUMBER;
139152 l_adr_transaction_coa_id      NUMBER;
139153 l_adr_accounting_coa_id       NUMBER;
139154 l_adr_flexfield_segment_code  VARCHAR2(30);
139155 l_adr_flex_value_set_id       NUMBER;
139156 l_adr_value_type_code         VARCHAR2(30);
139157 l_adr_value_combination_id    NUMBER;
139158 l_adr_value_segment_code      VARCHAR2(30);
139159 
139160 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
139161 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
139162 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
139163 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
139164 
139165 -- 4262811 Variables ------------------------------------------------------------------------------------------
139166 l_entered_amt_idx             NUMBER;
139167 l_accted_amt_idx              NUMBER;
139168 l_acc_rev_flag                VARCHAR2(1);
139169 l_accrual_line_num            NUMBER;
139170 l_tmp_amt                     NUMBER;
139171 l_acc_rev_natural_side_code   VARCHAR2(1);
139172 
139173 l_num_entries                 NUMBER;
139174 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
139175 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
139176 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
139177 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
139178 l_recog_line_1                NUMBER;
139179 l_recog_line_2                NUMBER;
139180 
139181 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
139182 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
139183 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
139184 
139185 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
139186 
139187 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
139188 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
139189 
139190 ---------------------------------------------------------------------------------------------------------------
139191 
139192 
139193 --
139194 -- bulk performance
139195 --
139196 l_balance_type_code           VARCHAR2(1);
139197 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
139198 l_log_module                  VARCHAR2(240);
139199 
139200 --
139201 -- Upgrade strategy
139202 --
139203 l_actual_upg_option           VARCHAR2(1);
139204 l_enc_upg_option           VARCHAR2(1);
139205 
139206 --
139207 BEGIN
139208 --
139209 IF g_log_enabled THEN
139210       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_264';
139211 END IF;
139212 --
139213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139214 
139215       trace
139216          (p_msg      => 'BEGIN of AcctLineType_264'
139217          ,p_level    => C_LEVEL_PROCEDURE
139218          ,p_module   => l_log_module);
139219 
139220 END IF;
139221 --
139222 l_component_type             := 'AMB_JLT';
139223 l_component_code             := 'INVENTORY_VALUATION';
139224 l_component_type_code        := 'S';
139225 l_component_appl_id          :=  707;
139226 l_amb_context_code           := 'DEFAULT';
139227 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
139228 l_event_class_code           := 'WIP_MTL';
139229 l_event_type_code            := 'WIP_COMP_RETURN';
139230 l_line_definition_owner_code := 'S';
139231 l_line_definition_code       := 'PI_WIP_COMP_RETURN';
139232 --
139233 l_balance_type_code          := 'A';
139234 l_segment                     := NULL;
139235 l_ccid                        := NULL;
139236 l_adr_transaction_coa_id      := NULL;
139237 l_adr_accounting_coa_id       := NULL;
139238 l_adr_flexfield_segment_code  := NULL;
139239 l_adr_flex_value_set_id       := NULL;
139240 l_adr_value_type_code         := NULL;
139241 l_adr_value_combination_id    := NULL;
139242 l_adr_value_segment_code      := NULL;
139243 
139244 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
139245 l_bflow_class_code           := '';    -- 4219869 Business Flow
139246 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
139247 l_budgetary_control_flag     := 'N';
139248 
139249 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
139250 l_bflow_applied_to_amt       := NULL; -- 5132302
139251 l_entered_amt_idx            := NULL;          -- 4262811
139252 l_accted_amt_idx             := NULL;          -- 4262811
139253 l_acc_rev_flag               := NULL;          -- 4262811
139254 l_accrual_line_num           := NULL;          -- 4262811
139255 l_tmp_amt                    := NULL;          -- 4262811
139256 --
139257  
139258 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
139259     l_balance_type_code <> 'B' THEN
139260 IF NVL(p_source_97,9E125) =  1
139261  THEN 
139262 
139263    --
139264    XLA_AE_LINES_PKG.SetNewLine;
139265 
139266    p_balance_type_code          := l_balance_type_code;
139267    -- set the flag so later we will know whether the gain loss line needs to be created
139268    
139269    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
139270      p_actual_flag :='A';
139271    END IF;
139272 
139273    --
139274    -- bulk performance
139275    --
139276    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
139277                                       p_header_num   => 0); -- 4262811
139278    --
139279    -- set accounting line options
139280    --
139281    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
139282            p_natural_side_code          => 'D'
139283          , p_gain_or_loss_flag          => 'N'
139284          , p_gl_transfer_mode_code      => 'S'
139285          , p_acct_entry_type_code       => 'A'
139286          , p_switch_side_flag           => 'Y'
139287          , p_merge_duplicate_code       => 'N'
139288          );
139289    --
139290    l_acc_rev_natural_side_code := 'C';  -- 4262811
139291    -- 
139292    --
139293    -- set accounting line type info
139294    --
139295    xla_ae_lines_pkg.SetAcctLineType
139296       (p_component_type             => l_component_type
139297       ,p_event_type_code            => l_event_type_code
139298       ,p_line_definition_owner_code => l_line_definition_owner_code
139299       ,p_line_definition_code       => l_line_definition_code
139300       ,p_accounting_line_code       => l_component_code
139301       ,p_accounting_line_type_code  => l_component_type_code
139302       ,p_accounting_line_appl_id    => l_component_appl_id
139303       ,p_amb_context_code           => l_amb_context_code
139304       ,p_entity_code                => l_entity_code
139305       ,p_event_class_code           => l_event_class_code);
139306    --
139307    -- set accounting class
139308    --
139309    xla_ae_lines_pkg.SetAcctClass(
139310            p_accounting_class_code  => 'INVENTORY_VALUATION'
139311          , p_ae_header_id           => l_ae_header_id
139312          );
139313 
139314    --
139315    -- set rounding class
139316    --
139317    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
139318                       'INVENTORY_VALUATION';
139319 
139320    --
139321    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
139322    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
139323    --
139324    -- bulk performance
139325    --
139326    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
139327 
139328    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
139329       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
139330 
139331    -- 4955764
139332    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139333       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
139334 
139335    -- 4458381 Public Sector Enh
139336    
139337    --
139338    -- set accounting attributes for the line type
139339    --
139340    l_entered_amt_idx := 3;
139341    l_accted_amt_idx  := 8;
139342    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
139343    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
139344    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
139345    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
139346    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
139347    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
139348    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
139349    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
139350    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
139351    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
139352    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
139353    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
139354    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
139355    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
139356    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
139357    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
139358    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
139359 
139360    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
139361    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
139362 
139363    ---------------------------------------------------------------------------------------------------------------
139364    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
139365    ---------------------------------------------------------------------------------------------------------------
139366    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
139367 
139368    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
139369    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
139370 
139371    IF xla_accounting_cache_pkg.GetValueChar
139372          (p_source_code         => 'LEDGER_CATEGORY_CODE'
139373          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
139374    AND l_bflow_method_code = 'PRIOR_ENTRY'
139375 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
139376    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
139377          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
139378        )
139379    THEN
139380          xla_ae_lines_pkg.BflowUpgEntry
139381            (p_business_method_code    => l_bflow_method_code
139382            ,p_business_class_code     => l_bflow_class_code
139383            ,p_balance_type            => l_balance_type_code);
139384    ELSE
139385       NULL;
139386 -- No business flow processing for business flow method of NONE.
139387    END IF;
139388 
139389    --
139390    -- call analytical criteria
139391    --
139392    
139393 
139394 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
139395 xla_ae_lines_pkg.SetAnalyticalCriteria(
139396    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
139397  , p_analytical_criterion_owner   => 'S'
139398  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
139399  , p_amb_context_code             => 'DEFAULT'
139400  , p_balancing_flag               => 'Y'
139401  
139402  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
139403  , p_analytical_detail_num_1     =>  NULL
139404  , p_analytical_detail_date_1    =>  NULL
139405 
139406  , p_ae_header_id                 => l_ae_header_id
139407 )
139408 ;
139409 --
139410 
139411    --
139412    -- call description
139413    --
139414    
139415 xla_ae_lines_pkg.SetLineDescription(
139416    p_ae_header_id => l_ae_header_id
139417   ,p_description  => Description_1 (
139418      p_application_id         => p_application_id
139419    , p_ae_header_id           => l_ae_header_id 
139420 , p_source_1 => p_source_1
139421 , p_source_2 => p_source_2
139422 , p_source_3 => p_source_3
139423 , p_source_4 => p_source_4
139424 , p_source_5 => p_source_5
139425    )
139426 );
139427 
139428 
139429    --
139430    -- call ADRs
139431    -- Bug 4922099
139432    --
139433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139434         (NVL(l_actual_upg_option, 'N') = 'O') OR
139435         (NVL(l_enc_upg_option, 'N') = 'O')
139436       )
139437    THEN
139438    NULL;
139439    --
139440    --
139441    
139442   l_ccid := AcctDerRule_28(
139443            p_application_id           => p_application_id
139444          , p_ae_header_id             => l_ae_header_id 
139445 , p_source_15 => p_source_15
139446 , p_source_41 => p_source_41
139447 , p_source_42 => p_source_42
139448 , p_source_43 => p_source_43
139449 , p_source_44 => p_source_44
139450 , p_source_45 => p_source_45
139451          , x_transaction_coa_id       => l_adr_transaction_coa_id
139452          , x_accounting_coa_id        => l_adr_accounting_coa_id
139453          , x_value_type_code          => l_adr_value_type_code
139454          , p_side                     => 'NA'
139455    );
139456 
139457    xla_ae_lines_pkg.set_ccid(
139458     p_code_combination_id          => l_ccid
139459   , p_value_type_code              => l_adr_value_type_code
139460   , p_transaction_coa_id           => l_adr_transaction_coa_id
139461   , p_accounting_coa_id            => l_adr_accounting_coa_id
139462   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
139463   , p_adr_type_code                => 'S'
139464   , p_component_type               => l_component_type
139465   , p_component_code               => l_component_code
139466   , p_component_type_code          => l_component_type_code
139467   , p_component_appl_id            => l_component_appl_id
139468   , p_amb_context_code             => l_amb_context_code
139469   , p_side                         => 'NA'
139470   );
139471 
139472 
139473    --
139474    --
139475    END IF;
139476    --
139477    -- Bug 4922099
139478    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
139479           (NVL(l_enc_upg_option, 'N') = 'O')
139480         ) AND
139481         (l_bflow_method_code = 'PRIOR_ENTRY')
139482       )
139483    THEN
139484       IF
139485       --
139486       1 = 2
139487       --
139488       THEN
139489       xla_accounting_err_pkg.build_message
139490                                     (p_appli_s_name            => 'XLA'
139491                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139492                                     ,p_token_1                 => 'LINE_NUMBER'
139493                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
139494                                     ,p_token_2                 => 'LINE_TYPE_NAME'
139495                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
139496                                                                              l_component_type
139497                                                                             ,l_component_code
139498                                                                             ,l_component_type_code
139499                                                                             ,l_component_appl_id
139500                                                                             ,l_amb_context_code
139501                                                                             ,l_entity_code
139502                                                                             ,l_event_class_code
139503                                                                            )
139504                                     ,p_token_3                 => 'OWNER'
139505                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
139506                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
139507                                                                           ,p_lookup_code    => l_component_type_code
139508                                                                          )
139509                                     ,p_token_4                 => 'PRODUCT_NAME'
139510                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
139511                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
139512                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
139513                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
139514                                     ,p_ae_header_id            =>  NULL
139515                                        );
139516 
139517         IF (C_LEVEL_ERROR>= g_log_level) THEN
139518                  trace
139519                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139520                       ,p_level    => C_LEVEL_ERROR
139521                       ,p_module   => l_log_module);
139522         END IF;
139523       END IF;
139524    END IF;
139525    --
139526    --
139527    ------------------------------------------------------------------------------------------------
139528    -- 4219869 Business Flow
139529    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
139530    -- Prior Entry.  Currently, the following code is always generated.
139531    ------------------------------------------------------------------------------------------------
139532    XLA_AE_LINES_PKG.ValidateCurrentLine;
139533 
139534    ------------------------------------------------------------------------------------
139535    -- 4219869 Business Flow
139536    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
139537    ------------------------------------------------------------------------------------
139538    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139539 
139540    ----------------------------------------------------------------------------------
139541    -- 4219869 Business Flow
139542    -- Update journal entry status -- Need to generate this within IF <condition>
139543    ----------------------------------------------------------------------------------
139544    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139545          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
139546          ,p_balance_type_code => l_balance_type_code
139547          );
139548 
139549    -------------------------------------------------------------------------------------------
139550    -- 4262811 - Generate the Accrual Reversal lines
139551    -------------------------------------------------------------------------------------------
139552    BEGIN
139553       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
139554                               (g_array_event(p_event_id).array_value_num('header_index'));
139555       IF l_acc_rev_flag IS NULL THEN
139556          l_acc_rev_flag := 'N';
139557       END IF;
139558    EXCEPTION
139559       WHEN OTHERS THEN
139560          l_acc_rev_flag := 'N';
139561    END;
139562    --
139563    IF (l_acc_rev_flag = 'Y') THEN
139564 
139565        -- 4645092  ------------------------------------------------------------------------------
139566        -- To allow MPA report to determine if it should generate report process
139567        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
139568        ------------------------------------------------------------------------------------------
139569 
139570        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
139571        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
139572    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
139573    -- call ADRs
139574    -- Bug 4922099
139575    --
139576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139577         (NVL(l_actual_upg_option, 'N') = 'O') OR
139578         (NVL(l_enc_upg_option, 'N') = 'O')
139579       )
139580    THEN
139581    NULL;
139582    --
139583    --
139584    
139585   l_ccid := AcctDerRule_28(
139586            p_application_id           => p_application_id
139587          , p_ae_header_id             => l_ae_header_id 
139588 , p_source_15 => p_source_15
139589 , p_source_41 => p_source_41
139590 , p_source_42 => p_source_42
139591 , p_source_43 => p_source_43
139592 , p_source_44 => p_source_44
139593 , p_source_45 => p_source_45
139594          , x_transaction_coa_id       => l_adr_transaction_coa_id
139595          , x_accounting_coa_id        => l_adr_accounting_coa_id
139596          , x_value_type_code          => l_adr_value_type_code
139597          , p_side                     => 'NA'
139598    );
139599 
139600    xla_ae_lines_pkg.set_ccid(
139601     p_code_combination_id          => l_ccid
139602   , p_value_type_code              => l_adr_value_type_code
139603   , p_transaction_coa_id           => l_adr_transaction_coa_id
139604   , p_accounting_coa_id            => l_adr_accounting_coa_id
139605   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
139606   , p_adr_type_code                => 'S'
139607   , p_component_type               => l_component_type
139608   , p_component_code               => l_component_code
139609   , p_component_type_code          => l_component_type_code
139610   , p_component_appl_id            => l_component_appl_id
139611   , p_amb_context_code             => l_amb_context_code
139612   , p_side                         => 'NA'
139613   );
139614 
139615 
139616    --
139617    --
139618    END IF;
139619 
139620        --
139621        -- Update the line information that should be overwritten
139622        --
139623        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
139624                                          p_header_num   => 1);
139625        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
139626 
139627        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
139628 
139629        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
139630           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
139631        END IF;
139632 
139633       --
139634       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
139635       --
139636       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
139637           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
139638       ELSE
139639           ---------------------------------------------------------------------------------------------------
139640           -- 4262811a Switch Sign
139641           ---------------------------------------------------------------------------------------------------
139642           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
139643           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139644                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139645           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139646                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139647           -- 5132302
139648           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
139649                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139650 
139651       END IF;
139652 
139653       -- 4955764
139654       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
139656 
139657 
139658       XLA_AE_LINES_PKG.ValidateCurrentLine;
139659       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139660 
139661       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139662                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
139663                ,p_balance_type_code => l_balance_type_code);
139664 
139665    END IF;
139666 
139667    -----------------------------------------------------------------------------------------
139668    -- 4262811 Multiperiod Accounting
139669    -----------------------------------------------------------------------------------------
139670      -- No MPA option is assigned.
139671 
139672 
139673 END IF;
139674 END IF;
139675 --
139676 
139677 --
139678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139679    trace
139680       (p_msg      => 'END of AcctLineType_264'
139681       ,p_level    => C_LEVEL_PROCEDURE
139682       ,p_module   => l_log_module);
139683 END IF;
139684 --
139685 EXCEPTION
139686   WHEN xla_exceptions_pkg.application_exception THEN
139687       RAISE;
139688   WHEN OTHERS THEN
139689        xla_exceptions_pkg.raise_message
139690            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_264');
139691 END AcctLineType_264;
139692 --
139693 
139694 ---------------------------------------
139695 --
139696 -- PRIVATE FUNCTION
139697 --         AcctLineType_265
139698 --
139699 ---------------------------------------
139700 PROCEDURE AcctLineType_265 (
139701   p_application_id        IN NUMBER
139702  ,p_event_id              IN NUMBER
139703  ,p_calculate_acctd_flag  IN VARCHAR2
139704  ,p_calculate_g_l_flag    IN VARCHAR2
139705  ,p_actual_flag           IN OUT VARCHAR2
139706  ,p_balance_type_code     OUT VARCHAR2
139707  ,p_gain_or_loss_ref      OUT VARCHAR2
139708  
139709 --TRANSACTION_ID
139710  , p_source_1            IN NUMBER
139711 --Item Concatenated Segments
139712  , p_source_2            IN VARCHAR2
139713 --Transaction Quantity
139714  , p_source_3            IN NUMBER
139715 --Transaction Unit of Measure Code
139716  , p_source_4            IN VARCHAR2
139717 --Inventory Transaction Type Description
139718  , p_source_5            IN VARCHAR2
139719 --Cost Element Name
139720  , p_source_15            IN NUMBER
139721 --Product Line Accounting Category Material Account
139722  , p_source_41            IN NUMBER
139723 --Product Line Accounting Category Material Overhead Account
139724  , p_source_42            IN NUMBER
139725 --Product Line Accounting Category Resource Account
139726  , p_source_43            IN NUMBER
139727 --Product Line Accounting Category Outside Processing Account
139728  , p_source_44            IN NUMBER
139729 --Product Line Accounting Category Overhead Account
139730  , p_source_45            IN NUMBER
139731 --Applied to Application ID
139732  , p_source_79            IN NUMBER
139733 --Applied to Distribution Link Type
139734  , p_source_80            IN VARCHAR2
139735 --Applied to Entity Code
139736  , p_source_81            IN VARCHAR2
139737 --DISTRIBUTION_IDENTIFIER
139738  , p_source_84            IN NUMBER
139739 --Distribution Type
139740  , p_source_85            IN VARCHAR2
139741  , p_source_85_meaning    IN VARCHAR2
139742 --Encumbrance Reversal Amount Entered
139743  , p_source_87            IN NUMBER
139744 --Entered Currency Code
139745  , p_source_88            IN VARCHAR2
139746 --Transaction Encumbrance Reversal Amount
139747  , p_source_89            IN NUMBER
139748 --Entered Amount
139749  , p_source_91            IN NUMBER
139750 --Currency Conversion Date
139751  , p_source_92            IN DATE
139752 --Currency Conversion Rate
139753  , p_source_93            IN NUMBER
139754 --Currency Conversion Type
139755  , p_source_94            IN VARCHAR2
139756 --Accounted Amount
139757  , p_source_95            IN NUMBER
139758 --Accounting Line Type
139759  , p_source_97            IN NUMBER
139760 --Costing Encumbrance Upgrade Option
139761  , p_source_100            IN VARCHAR2
139762 --TXN_PO_DISTRIBUTION_ID
139763  , p_source_101            IN NUMBER
139764 --TXN_PO_HEADER_ID
139765  , p_source_102            IN NUMBER
139766 --Requisition Budget Account
139767  , p_source_103            IN NUMBER
139768 --Requisition Encumbrance Type Identifier
139769  , p_source_104            IN NUMBER
139770 --Organization Code
139771  , p_source_108            IN VARCHAR2
139772 )
139773 IS
139774 
139775 l_component_type              VARCHAR2(80);
139776 l_component_code              VARCHAR2(30);
139777 l_component_type_code         VARCHAR2(1);
139778 l_component_appl_id           INTEGER;
139779 l_amb_context_code            VARCHAR2(30);
139780 l_entity_code                 VARCHAR2(30);
139781 l_event_class_code            VARCHAR2(30);
139782 l_ae_header_id                NUMBER;
139783 l_event_type_code             VARCHAR2(30);
139784 l_line_definition_code        VARCHAR2(30);
139785 l_line_definition_owner_code  VARCHAR2(1);
139786 --
139787 -- adr variables
139788 l_segment                     VARCHAR2(30);
139789 l_ccid                        NUMBER;
139790 l_adr_transaction_coa_id      NUMBER;
139791 l_adr_accounting_coa_id       NUMBER;
139792 l_adr_flexfield_segment_code  VARCHAR2(30);
139793 l_adr_flex_value_set_id       NUMBER;
139794 l_adr_value_type_code         VARCHAR2(30);
139795 l_adr_value_combination_id    NUMBER;
139796 l_adr_value_segment_code      VARCHAR2(30);
139797 
139798 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
139799 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
139800 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
139801 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
139802 
139803 -- 4262811 Variables ------------------------------------------------------------------------------------------
139804 l_entered_amt_idx             NUMBER;
139805 l_accted_amt_idx              NUMBER;
139806 l_acc_rev_flag                VARCHAR2(1);
139807 l_accrual_line_num            NUMBER;
139808 l_tmp_amt                     NUMBER;
139809 l_acc_rev_natural_side_code   VARCHAR2(1);
139810 
139811 l_num_entries                 NUMBER;
139812 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
139813 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
139814 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
139815 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
139816 l_recog_line_1                NUMBER;
139817 l_recog_line_2                NUMBER;
139818 
139819 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
139820 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
139821 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
139822 
139823 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
139824 
139825 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
139826 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
139827 
139828 ---------------------------------------------------------------------------------------------------------------
139829 
139830 
139831 --
139832 -- bulk performance
139833 --
139834 l_balance_type_code           VARCHAR2(1);
139835 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
139836 l_log_module                  VARCHAR2(240);
139837 
139838 --
139839 -- Upgrade strategy
139840 --
139841 l_actual_upg_option           VARCHAR2(1);
139842 l_enc_upg_option           VARCHAR2(1);
139843 
139844 --
139845 BEGIN
139846 --
139847 IF g_log_enabled THEN
139848       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_265';
139849 END IF;
139850 --
139851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139852 
139853       trace
139854          (p_msg      => 'BEGIN of AcctLineType_265'
139855          ,p_level    => C_LEVEL_PROCEDURE
139856          ,p_module   => l_log_module);
139857 
139858 END IF;
139859 --
139860 l_component_type             := 'AMB_JLT';
139861 l_component_code             := 'INVENTORY_VALUATION';
139862 l_component_type_code        := 'S';
139863 l_component_appl_id          :=  707;
139864 l_amb_context_code           := 'DEFAULT';
139865 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
139866 l_event_class_code           := 'DIR_INTERORG_RCPT';
139867 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
139868 l_line_definition_owner_code := 'S';
139869 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
139870 --
139871 l_balance_type_code          := 'A';
139872 l_segment                     := NULL;
139873 l_ccid                        := NULL;
139874 l_adr_transaction_coa_id      := NULL;
139875 l_adr_accounting_coa_id       := NULL;
139876 l_adr_flexfield_segment_code  := NULL;
139877 l_adr_flex_value_set_id       := NULL;
139878 l_adr_value_type_code         := NULL;
139879 l_adr_value_combination_id    := NULL;
139880 l_adr_value_segment_code      := NULL;
139881 
139882 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
139883 l_bflow_class_code           := '';    -- 4219869 Business Flow
139884 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
139885 l_budgetary_control_flag     := 'N';
139886 
139887 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
139888 l_bflow_applied_to_amt       := NULL; -- 5132302
139889 l_entered_amt_idx            := NULL;          -- 4262811
139890 l_accted_amt_idx             := NULL;          -- 4262811
139891 l_acc_rev_flag               := NULL;          -- 4262811
139892 l_accrual_line_num           := NULL;          -- 4262811
139893 l_tmp_amt                    := NULL;          -- 4262811
139894 --
139895  
139896 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
139897     l_balance_type_code <> 'B' THEN
139898 IF NVL(p_source_97,9E125) =  1
139899  THEN 
139900 
139901    --
139902    XLA_AE_LINES_PKG.SetNewLine;
139903 
139904    p_balance_type_code          := l_balance_type_code;
139905    -- set the flag so later we will know whether the gain loss line needs to be created
139906    
139907    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
139908      p_actual_flag :='A';
139909    END IF;
139910 
139911    --
139912    -- bulk performance
139913    --
139914    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
139915                                       p_header_num   => 0); -- 4262811
139916    --
139917    -- set accounting line options
139918    --
139919    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
139920            p_natural_side_code          => 'D'
139921          , p_gain_or_loss_flag          => 'N'
139922          , p_gl_transfer_mode_code      => 'S'
139923          , p_acct_entry_type_code       => 'A'
139924          , p_switch_side_flag           => 'Y'
139925          , p_merge_duplicate_code       => 'N'
139926          );
139927    --
139928    l_acc_rev_natural_side_code := 'C';  -- 4262811
139929    -- 
139930    --
139931    -- set accounting line type info
139932    --
139933    xla_ae_lines_pkg.SetAcctLineType
139934       (p_component_type             => l_component_type
139935       ,p_event_type_code            => l_event_type_code
139936       ,p_line_definition_owner_code => l_line_definition_owner_code
139937       ,p_line_definition_code       => l_line_definition_code
139938       ,p_accounting_line_code       => l_component_code
139939       ,p_accounting_line_type_code  => l_component_type_code
139940       ,p_accounting_line_appl_id    => l_component_appl_id
139941       ,p_amb_context_code           => l_amb_context_code
139942       ,p_entity_code                => l_entity_code
139943       ,p_event_class_code           => l_event_class_code);
139944    --
139945    -- set accounting class
139946    --
139947    xla_ae_lines_pkg.SetAcctClass(
139948            p_accounting_class_code  => 'INVENTORY_VALUATION'
139949          , p_ae_header_id           => l_ae_header_id
139950          );
139951 
139952    --
139953    -- set rounding class
139954    --
139955    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
139956                       'INVENTORY_VALUATION';
139957 
139958    --
139959    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
139960    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
139961    --
139962    -- bulk performance
139963    --
139964    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
139965 
139966    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
139967       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
139968 
139969    -- 4955764
139970    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139971       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
139972 
139973    -- 4458381 Public Sector Enh
139974    
139975    --
139976    -- set accounting attributes for the line type
139977    --
139978    l_entered_amt_idx := 17;
139979    l_accted_amt_idx  := 22;
139980    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
139981    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
139982    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
139983    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
139984    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
139985    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
139986    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
139987    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
139988    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
139989    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
139990    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
139991    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
139992    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
139993    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
139994    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
139995    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
139996    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
139997    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
139998    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
139999    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
140000    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
140001    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
140002    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
140003    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
140004    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
140005    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
140006    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
140007    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
140008    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
140009    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
140010    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
140011    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
140012    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
140013    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
140014    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
140015    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
140016    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
140017    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
140018    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
140019    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
140020    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
140021    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
140022    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
140023    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
140024    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
140025    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
140026    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
140027    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
140028    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
140029 
140030    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
140031    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
140032 
140033    ---------------------------------------------------------------------------------------------------------------
140034    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
140035    ---------------------------------------------------------------------------------------------------------------
140036    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
140037 
140038    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140039    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140040 
140041    IF xla_accounting_cache_pkg.GetValueChar
140042          (p_source_code         => 'LEDGER_CATEGORY_CODE'
140043          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
140044    AND l_bflow_method_code = 'PRIOR_ENTRY'
140045 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
140046    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
140047          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
140048        )
140049    THEN
140050          xla_ae_lines_pkg.BflowUpgEntry
140051            (p_business_method_code    => l_bflow_method_code
140052            ,p_business_class_code     => l_bflow_class_code
140053            ,p_balance_type            => l_balance_type_code);
140054    ELSE
140055       NULL;
140056 -- No business flow processing for business flow method of NONE.
140057    END IF;
140058 
140059    --
140060    -- call analytical criteria
140061    --
140062    
140063 
140064 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
140065 xla_ae_lines_pkg.SetAnalyticalCriteria(
140066    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
140067  , p_analytical_criterion_owner   => 'S'
140068  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
140069  , p_amb_context_code             => 'DEFAULT'
140070  , p_balancing_flag               => 'Y'
140071  
140072  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
140073  , p_analytical_detail_num_1     =>  NULL
140074  , p_analytical_detail_date_1    =>  NULL
140075 
140076  , p_ae_header_id                 => l_ae_header_id
140077 )
140078 ;
140079 --
140080 
140081    --
140082    -- call description
140083    --
140084    
140085 xla_ae_lines_pkg.SetLineDescription(
140086    p_ae_header_id => l_ae_header_id
140087   ,p_description  => Description_1 (
140088      p_application_id         => p_application_id
140089    , p_ae_header_id           => l_ae_header_id 
140090 , p_source_1 => p_source_1
140091 , p_source_2 => p_source_2
140092 , p_source_3 => p_source_3
140093 , p_source_4 => p_source_4
140094 , p_source_5 => p_source_5
140095    )
140096 );
140097 
140098 
140099    --
140100    -- call ADRs
140101    -- Bug 4922099
140102    --
140103    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140104         (NVL(l_actual_upg_option, 'N') = 'O') OR
140105         (NVL(l_enc_upg_option, 'N') = 'O')
140106       )
140107    THEN
140108    NULL;
140109    --
140110    --
140111    
140112   l_ccid := AcctDerRule_28(
140113            p_application_id           => p_application_id
140114          , p_ae_header_id             => l_ae_header_id 
140115 , p_source_15 => p_source_15
140116 , p_source_41 => p_source_41
140117 , p_source_42 => p_source_42
140118 , p_source_43 => p_source_43
140119 , p_source_44 => p_source_44
140120 , p_source_45 => p_source_45
140121          , x_transaction_coa_id       => l_adr_transaction_coa_id
140122          , x_accounting_coa_id        => l_adr_accounting_coa_id
140123          , x_value_type_code          => l_adr_value_type_code
140124          , p_side                     => 'NA'
140125    );
140126 
140127    xla_ae_lines_pkg.set_ccid(
140128     p_code_combination_id          => l_ccid
140129   , p_value_type_code              => l_adr_value_type_code
140130   , p_transaction_coa_id           => l_adr_transaction_coa_id
140131   , p_accounting_coa_id            => l_adr_accounting_coa_id
140132   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
140133   , p_adr_type_code                => 'S'
140134   , p_component_type               => l_component_type
140135   , p_component_code               => l_component_code
140136   , p_component_type_code          => l_component_type_code
140137   , p_component_appl_id            => l_component_appl_id
140138   , p_amb_context_code             => l_amb_context_code
140139   , p_side                         => 'NA'
140140   );
140141 
140142 
140143    --
140144    --
140145    END IF;
140146    --
140147    -- Bug 4922099
140148    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
140149           (NVL(l_enc_upg_option, 'N') = 'O')
140150         ) AND
140151         (l_bflow_method_code = 'PRIOR_ENTRY')
140152       )
140153    THEN
140154       IF
140155       --
140156       1 = 2
140157       --
140158       THEN
140159       xla_accounting_err_pkg.build_message
140160                                     (p_appli_s_name            => 'XLA'
140161                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140162                                     ,p_token_1                 => 'LINE_NUMBER'
140163                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
140164                                     ,p_token_2                 => 'LINE_TYPE_NAME'
140165                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
140166                                                                              l_component_type
140167                                                                             ,l_component_code
140168                                                                             ,l_component_type_code
140169                                                                             ,l_component_appl_id
140170                                                                             ,l_amb_context_code
140171                                                                             ,l_entity_code
140172                                                                             ,l_event_class_code
140173                                                                            )
140174                                     ,p_token_3                 => 'OWNER'
140175                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
140176                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
140177                                                                           ,p_lookup_code    => l_component_type_code
140178                                                                          )
140179                                     ,p_token_4                 => 'PRODUCT_NAME'
140180                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
140181                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
140182                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
140183                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
140184                                     ,p_ae_header_id            =>  NULL
140185                                        );
140186 
140187         IF (C_LEVEL_ERROR>= g_log_level) THEN
140188                  trace
140189                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140190                       ,p_level    => C_LEVEL_ERROR
140191                       ,p_module   => l_log_module);
140192         END IF;
140193       END IF;
140194    END IF;
140195    --
140196    --
140197    ------------------------------------------------------------------------------------------------
140198    -- 4219869 Business Flow
140199    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
140200    -- Prior Entry.  Currently, the following code is always generated.
140201    ------------------------------------------------------------------------------------------------
140202    XLA_AE_LINES_PKG.ValidateCurrentLine;
140203 
140204    ------------------------------------------------------------------------------------
140205    -- 4219869 Business Flow
140206    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
140207    ------------------------------------------------------------------------------------
140208    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140209 
140210    ----------------------------------------------------------------------------------
140211    -- 4219869 Business Flow
140212    -- Update journal entry status -- Need to generate this within IF <condition>
140213    ----------------------------------------------------------------------------------
140214    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140215          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
140216          ,p_balance_type_code => l_balance_type_code
140217          );
140218 
140219    -------------------------------------------------------------------------------------------
140220    -- 4262811 - Generate the Accrual Reversal lines
140221    -------------------------------------------------------------------------------------------
140222    BEGIN
140223       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
140224                               (g_array_event(p_event_id).array_value_num('header_index'));
140225       IF l_acc_rev_flag IS NULL THEN
140226          l_acc_rev_flag := 'N';
140227       END IF;
140228    EXCEPTION
140229       WHEN OTHERS THEN
140230          l_acc_rev_flag := 'N';
140231    END;
140232    --
140233    IF (l_acc_rev_flag = 'Y') THEN
140234 
140235        -- 4645092  ------------------------------------------------------------------------------
140236        -- To allow MPA report to determine if it should generate report process
140237        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
140238        ------------------------------------------------------------------------------------------
140239 
140240        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
140241        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
140242    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
140243    -- call ADRs
140244    -- Bug 4922099
140245    --
140246    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140247         (NVL(l_actual_upg_option, 'N') = 'O') OR
140248         (NVL(l_enc_upg_option, 'N') = 'O')
140249       )
140250    THEN
140251    NULL;
140252    --
140253    --
140254    
140255   l_ccid := AcctDerRule_28(
140256            p_application_id           => p_application_id
140257          , p_ae_header_id             => l_ae_header_id 
140258 , p_source_15 => p_source_15
140259 , p_source_41 => p_source_41
140260 , p_source_42 => p_source_42
140261 , p_source_43 => p_source_43
140262 , p_source_44 => p_source_44
140263 , p_source_45 => p_source_45
140264          , x_transaction_coa_id       => l_adr_transaction_coa_id
140265          , x_accounting_coa_id        => l_adr_accounting_coa_id
140266          , x_value_type_code          => l_adr_value_type_code
140267          , p_side                     => 'NA'
140268    );
140269 
140270    xla_ae_lines_pkg.set_ccid(
140271     p_code_combination_id          => l_ccid
140272   , p_value_type_code              => l_adr_value_type_code
140273   , p_transaction_coa_id           => l_adr_transaction_coa_id
140274   , p_accounting_coa_id            => l_adr_accounting_coa_id
140275   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
140276   , p_adr_type_code                => 'S'
140277   , p_component_type               => l_component_type
140278   , p_component_code               => l_component_code
140279   , p_component_type_code          => l_component_type_code
140280   , p_component_appl_id            => l_component_appl_id
140281   , p_amb_context_code             => l_amb_context_code
140282   , p_side                         => 'NA'
140283   );
140284 
140285 
140286    --
140287    --
140288    END IF;
140289 
140290        --
140291        -- Update the line information that should be overwritten
140292        --
140293        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
140294                                          p_header_num   => 1);
140295        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
140296 
140297        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
140298 
140299        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
140300           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
140301        END IF;
140302 
140303       --
140304       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
140305       --
140306       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
140307           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
140308       ELSE
140309           ---------------------------------------------------------------------------------------------------
140310           -- 4262811a Switch Sign
140311           ---------------------------------------------------------------------------------------------------
140312           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
140313           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140314                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140315           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140316                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140317           -- 5132302
140318           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
140319                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140320 
140321       END IF;
140322 
140323       -- 4955764
140324       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140325       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
140326 
140327 
140328       XLA_AE_LINES_PKG.ValidateCurrentLine;
140329       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140330 
140331       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140332                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
140333                ,p_balance_type_code => l_balance_type_code);
140334 
140335    END IF;
140336 
140337    -----------------------------------------------------------------------------------------
140338    -- 4262811 Multiperiod Accounting
140339    -----------------------------------------------------------------------------------------
140340      -- No MPA option is assigned.
140341 
140342 
140343 END IF;
140344 END IF;
140345 --
140346 
140347 --
140348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140349    trace
140350       (p_msg      => 'END of AcctLineType_265'
140351       ,p_level    => C_LEVEL_PROCEDURE
140352       ,p_module   => l_log_module);
140353 END IF;
140354 --
140355 EXCEPTION
140356   WHEN xla_exceptions_pkg.application_exception THEN
140357       RAISE;
140358   WHEN OTHERS THEN
140359        xla_exceptions_pkg.raise_message
140360            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_265');
140361 END AcctLineType_265;
140362 --
140363 
140364 ---------------------------------------
140365 --
140366 -- PRIVATE FUNCTION
140367 --         AcctLineType_266
140368 --
140369 ---------------------------------------
140370 PROCEDURE AcctLineType_266 (
140371   p_application_id        IN NUMBER
140372  ,p_event_id              IN NUMBER
140373  ,p_calculate_acctd_flag  IN VARCHAR2
140374  ,p_calculate_g_l_flag    IN VARCHAR2
140375  ,p_actual_flag           IN OUT VARCHAR2
140376  ,p_balance_type_code     OUT VARCHAR2
140377  ,p_gain_or_loss_ref      OUT VARCHAR2
140378  
140379 --TRANSACTION_ID
140380  , p_source_1            IN NUMBER
140381 --Item Concatenated Segments
140382  , p_source_2            IN VARCHAR2
140383 --Transaction Quantity
140384  , p_source_3            IN NUMBER
140385 --Transaction Unit of Measure Code
140386  , p_source_4            IN VARCHAR2
140387 --Inventory Transaction Type Description
140388  , p_source_5            IN VARCHAR2
140389 --Cost Element Name
140390  , p_source_15            IN NUMBER
140391 --Product Line Accounting Category Material Account
140392  , p_source_41            IN NUMBER
140393 --Product Line Accounting Category Material Overhead Account
140394  , p_source_42            IN NUMBER
140395 --Product Line Accounting Category Resource Account
140396  , p_source_43            IN NUMBER
140397 --Product Line Accounting Category Outside Processing Account
140398  , p_source_44            IN NUMBER
140399 --Product Line Accounting Category Overhead Account
140400  , p_source_45            IN NUMBER
140401 --Applied to Application ID
140402  , p_source_79            IN NUMBER
140403 --Applied to Distribution Link Type
140404  , p_source_80            IN VARCHAR2
140405 --Applied to Entity Code
140406  , p_source_81            IN VARCHAR2
140407 --DISTRIBUTION_IDENTIFIER
140408  , p_source_84            IN NUMBER
140409 --Distribution Type
140410  , p_source_85            IN VARCHAR2
140411  , p_source_85_meaning    IN VARCHAR2
140412 --Encumbrance Reversal Amount Entered
140413  , p_source_87            IN NUMBER
140414 --Entered Currency Code
140415  , p_source_88            IN VARCHAR2
140416 --Transaction Encumbrance Reversal Amount
140417  , p_source_89            IN NUMBER
140418 --Entered Amount
140419  , p_source_91            IN NUMBER
140420 --Currency Conversion Date
140421  , p_source_92            IN DATE
140422 --Currency Conversion Rate
140423  , p_source_93            IN NUMBER
140424 --Currency Conversion Type
140425  , p_source_94            IN VARCHAR2
140426 --Accounted Amount
140427  , p_source_95            IN NUMBER
140428 --Accounting Line Type
140429  , p_source_97            IN NUMBER
140430 --Costing Encumbrance Upgrade Option
140431  , p_source_100            IN VARCHAR2
140432 --TXN_PO_DISTRIBUTION_ID
140433  , p_source_101            IN NUMBER
140434 --TXN_PO_HEADER_ID
140435  , p_source_102            IN NUMBER
140436 --Requisition Budget Account
140437  , p_source_103            IN NUMBER
140438 --Requisition Encumbrance Type Identifier
140439  , p_source_104            IN NUMBER
140440 --Organization Code
140441  , p_source_108            IN VARCHAR2
140442 )
140443 IS
140444 
140445 l_component_type              VARCHAR2(80);
140446 l_component_code              VARCHAR2(30);
140447 l_component_type_code         VARCHAR2(1);
140448 l_component_appl_id           INTEGER;
140449 l_amb_context_code            VARCHAR2(30);
140450 l_entity_code                 VARCHAR2(30);
140451 l_event_class_code            VARCHAR2(30);
140452 l_ae_header_id                NUMBER;
140453 l_event_type_code             VARCHAR2(30);
140454 l_line_definition_code        VARCHAR2(30);
140455 l_line_definition_owner_code  VARCHAR2(1);
140456 --
140457 -- adr variables
140458 l_segment                     VARCHAR2(30);
140459 l_ccid                        NUMBER;
140460 l_adr_transaction_coa_id      NUMBER;
140461 l_adr_accounting_coa_id       NUMBER;
140462 l_adr_flexfield_segment_code  VARCHAR2(30);
140463 l_adr_flex_value_set_id       NUMBER;
140464 l_adr_value_type_code         VARCHAR2(30);
140465 l_adr_value_combination_id    NUMBER;
140466 l_adr_value_segment_code      VARCHAR2(30);
140467 
140468 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
140469 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
140470 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
140471 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
140472 
140473 -- 4262811 Variables ------------------------------------------------------------------------------------------
140474 l_entered_amt_idx             NUMBER;
140475 l_accted_amt_idx              NUMBER;
140476 l_acc_rev_flag                VARCHAR2(1);
140477 l_accrual_line_num            NUMBER;
140478 l_tmp_amt                     NUMBER;
140479 l_acc_rev_natural_side_code   VARCHAR2(1);
140480 
140481 l_num_entries                 NUMBER;
140482 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
140483 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
140484 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
140485 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
140486 l_recog_line_1                NUMBER;
140487 l_recog_line_2                NUMBER;
140488 
140489 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
140490 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
140491 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
140492 
140493 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
140494 
140495 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
140496 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
140497 
140498 ---------------------------------------------------------------------------------------------------------------
140499 
140500 
140501 --
140502 -- bulk performance
140503 --
140504 l_balance_type_code           VARCHAR2(1);
140505 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
140506 l_log_module                  VARCHAR2(240);
140507 
140508 --
140509 -- Upgrade strategy
140510 --
140511 l_actual_upg_option           VARCHAR2(1);
140512 l_enc_upg_option           VARCHAR2(1);
140513 
140514 --
140515 BEGIN
140516 --
140517 IF g_log_enabled THEN
140518       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_266';
140519 END IF;
140520 --
140521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140522 
140523       trace
140524          (p_msg      => 'BEGIN of AcctLineType_266'
140525          ,p_level    => C_LEVEL_PROCEDURE
140526          ,p_module   => l_log_module);
140527 
140528 END IF;
140529 --
140530 l_component_type             := 'AMB_JLT';
140531 l_component_code             := 'INVENTORY_VALUATION';
140532 l_component_type_code        := 'S';
140533 l_component_appl_id          :=  707;
140534 l_amb_context_code           := 'DEFAULT';
140535 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
140536 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
140537 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
140538 l_line_definition_owner_code := 'S';
140539 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
140540 --
140541 l_balance_type_code          := 'A';
140542 l_segment                     := NULL;
140543 l_ccid                        := NULL;
140544 l_adr_transaction_coa_id      := NULL;
140545 l_adr_accounting_coa_id       := NULL;
140546 l_adr_flexfield_segment_code  := NULL;
140547 l_adr_flex_value_set_id       := NULL;
140548 l_adr_value_type_code         := NULL;
140549 l_adr_value_combination_id    := NULL;
140550 l_adr_value_segment_code      := NULL;
140551 
140552 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
140553 l_bflow_class_code           := '';    -- 4219869 Business Flow
140554 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
140555 l_budgetary_control_flag     := 'N';
140556 
140557 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
140558 l_bflow_applied_to_amt       := NULL; -- 5132302
140559 l_entered_amt_idx            := NULL;          -- 4262811
140560 l_accted_amt_idx             := NULL;          -- 4262811
140561 l_acc_rev_flag               := NULL;          -- 4262811
140562 l_accrual_line_num           := NULL;          -- 4262811
140563 l_tmp_amt                    := NULL;          -- 4262811
140564 --
140565  
140566 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
140567     l_balance_type_code <> 'B' THEN
140568 IF NVL(p_source_97,9E125) =  1
140569  THEN 
140570 
140571    --
140572    XLA_AE_LINES_PKG.SetNewLine;
140573 
140574    p_balance_type_code          := l_balance_type_code;
140575    -- set the flag so later we will know whether the gain loss line needs to be created
140576    
140577    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
140578      p_actual_flag :='A';
140579    END IF;
140580 
140581    --
140582    -- bulk performance
140583    --
140584    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
140585                                       p_header_num   => 0); -- 4262811
140586    --
140587    -- set accounting line options
140588    --
140589    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
140590            p_natural_side_code          => 'D'
140591          , p_gain_or_loss_flag          => 'N'
140592          , p_gl_transfer_mode_code      => 'S'
140593          , p_acct_entry_type_code       => 'A'
140594          , p_switch_side_flag           => 'Y'
140595          , p_merge_duplicate_code       => 'N'
140596          );
140597    --
140598    l_acc_rev_natural_side_code := 'C';  -- 4262811
140599    -- 
140600    --
140601    -- set accounting line type info
140602    --
140603    xla_ae_lines_pkg.SetAcctLineType
140604       (p_component_type             => l_component_type
140605       ,p_event_type_code            => l_event_type_code
140606       ,p_line_definition_owner_code => l_line_definition_owner_code
140607       ,p_line_definition_code       => l_line_definition_code
140608       ,p_accounting_line_code       => l_component_code
140609       ,p_accounting_line_type_code  => l_component_type_code
140610       ,p_accounting_line_appl_id    => l_component_appl_id
140611       ,p_amb_context_code           => l_amb_context_code
140612       ,p_entity_code                => l_entity_code
140613       ,p_event_class_code           => l_event_class_code);
140614    --
140615    -- set accounting class
140616    --
140617    xla_ae_lines_pkg.SetAcctClass(
140618            p_accounting_class_code  => 'INVENTORY_VALUATION'
140619          , p_ae_header_id           => l_ae_header_id
140620          );
140621 
140622    --
140623    -- set rounding class
140624    --
140625    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
140626                       'INVENTORY_VALUATION';
140627 
140628    --
140629    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
140630    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
140631    --
140632    -- bulk performance
140633    --
140634    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
140635 
140636    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
140637       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
140638 
140639    -- 4955764
140640    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140641       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
140642 
140643    -- 4458381 Public Sector Enh
140644    
140645    --
140646    -- set accounting attributes for the line type
140647    --
140648    l_entered_amt_idx := 17;
140649    l_accted_amt_idx  := 22;
140650    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
140651    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
140652    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
140653    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
140654    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
140655    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
140656    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
140657    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
140658    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
140659    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
140660    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
140661    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
140662    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
140663    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
140664    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
140665    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
140666    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
140667    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
140668    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
140669    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
140670    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
140671    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
140672    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
140673    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
140674    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
140675    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
140676    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
140677    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
140678    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
140679    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
140680    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
140681    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
140682    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
140683    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
140684    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
140685    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
140686    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
140687    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
140688    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
140689    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
140690    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
140691    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
140692    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
140693    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
140694    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
140695    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
140696    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
140697    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
140698    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
140699 
140700    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
140701    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
140702 
140703    ---------------------------------------------------------------------------------------------------------------
140704    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
140705    ---------------------------------------------------------------------------------------------------------------
140706    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
140707 
140708    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140709    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140710 
140711    IF xla_accounting_cache_pkg.GetValueChar
140712          (p_source_code         => 'LEDGER_CATEGORY_CODE'
140713          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
140714    AND l_bflow_method_code = 'PRIOR_ENTRY'
140715 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
140716    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
140717          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
140718        )
140719    THEN
140720          xla_ae_lines_pkg.BflowUpgEntry
140721            (p_business_method_code    => l_bflow_method_code
140722            ,p_business_class_code     => l_bflow_class_code
140723            ,p_balance_type            => l_balance_type_code);
140724    ELSE
140725       NULL;
140726 -- No business flow processing for business flow method of NONE.
140727    END IF;
140728 
140729    --
140730    -- call analytical criteria
140731    --
140732    
140733 
140734 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
140735 xla_ae_lines_pkg.SetAnalyticalCriteria(
140736    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
140737  , p_analytical_criterion_owner   => 'S'
140738  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
140739  , p_amb_context_code             => 'DEFAULT'
140740  , p_balancing_flag               => 'Y'
140741  
140742  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
140743  , p_analytical_detail_num_1     =>  NULL
140744  , p_analytical_detail_date_1    =>  NULL
140745 
140746  , p_ae_header_id                 => l_ae_header_id
140747 )
140748 ;
140749 --
140750 
140751    --
140752    -- call description
140753    --
140754    
140755 xla_ae_lines_pkg.SetLineDescription(
140756    p_ae_header_id => l_ae_header_id
140757   ,p_description  => Description_1 (
140758      p_application_id         => p_application_id
140759    , p_ae_header_id           => l_ae_header_id 
140760 , p_source_1 => p_source_1
140761 , p_source_2 => p_source_2
140762 , p_source_3 => p_source_3
140763 , p_source_4 => p_source_4
140764 , p_source_5 => p_source_5
140765    )
140766 );
140767 
140768 
140769    --
140770    -- call ADRs
140771    -- Bug 4922099
140772    --
140773    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140774         (NVL(l_actual_upg_option, 'N') = 'O') OR
140775         (NVL(l_enc_upg_option, 'N') = 'O')
140776       )
140777    THEN
140778    NULL;
140779    --
140780    --
140781    
140782   l_ccid := AcctDerRule_28(
140783            p_application_id           => p_application_id
140784          , p_ae_header_id             => l_ae_header_id 
140785 , p_source_15 => p_source_15
140786 , p_source_41 => p_source_41
140787 , p_source_42 => p_source_42
140788 , p_source_43 => p_source_43
140789 , p_source_44 => p_source_44
140790 , p_source_45 => p_source_45
140791          , x_transaction_coa_id       => l_adr_transaction_coa_id
140792          , x_accounting_coa_id        => l_adr_accounting_coa_id
140793          , x_value_type_code          => l_adr_value_type_code
140794          , p_side                     => 'NA'
140795    );
140796 
140797    xla_ae_lines_pkg.set_ccid(
140798     p_code_combination_id          => l_ccid
140799   , p_value_type_code              => l_adr_value_type_code
140800   , p_transaction_coa_id           => l_adr_transaction_coa_id
140801   , p_accounting_coa_id            => l_adr_accounting_coa_id
140802   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
140803   , p_adr_type_code                => 'S'
140804   , p_component_type               => l_component_type
140805   , p_component_code               => l_component_code
140806   , p_component_type_code          => l_component_type_code
140807   , p_component_appl_id            => l_component_appl_id
140808   , p_amb_context_code             => l_amb_context_code
140809   , p_side                         => 'NA'
140810   );
140811 
140812 
140813    --
140814    --
140815    END IF;
140816    --
140817    -- Bug 4922099
140818    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
140819           (NVL(l_enc_upg_option, 'N') = 'O')
140820         ) AND
140821         (l_bflow_method_code = 'PRIOR_ENTRY')
140822       )
140823    THEN
140824       IF
140825       --
140826       1 = 2
140827       --
140828       THEN
140829       xla_accounting_err_pkg.build_message
140830                                     (p_appli_s_name            => 'XLA'
140831                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140832                                     ,p_token_1                 => 'LINE_NUMBER'
140833                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
140834                                     ,p_token_2                 => 'LINE_TYPE_NAME'
140835                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
140836                                                                              l_component_type
140837                                                                             ,l_component_code
140838                                                                             ,l_component_type_code
140839                                                                             ,l_component_appl_id
140840                                                                             ,l_amb_context_code
140841                                                                             ,l_entity_code
140842                                                                             ,l_event_class_code
140843                                                                            )
140844                                     ,p_token_3                 => 'OWNER'
140845                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
140846                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
140847                                                                           ,p_lookup_code    => l_component_type_code
140848                                                                          )
140849                                     ,p_token_4                 => 'PRODUCT_NAME'
140850                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
140851                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
140852                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
140853                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
140854                                     ,p_ae_header_id            =>  NULL
140855                                        );
140856 
140857         IF (C_LEVEL_ERROR>= g_log_level) THEN
140858                  trace
140859                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140860                       ,p_level    => C_LEVEL_ERROR
140861                       ,p_module   => l_log_module);
140862         END IF;
140863       END IF;
140864    END IF;
140865    --
140866    --
140867    ------------------------------------------------------------------------------------------------
140868    -- 4219869 Business Flow
140869    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
140870    -- Prior Entry.  Currently, the following code is always generated.
140871    ------------------------------------------------------------------------------------------------
140872    XLA_AE_LINES_PKG.ValidateCurrentLine;
140873 
140874    ------------------------------------------------------------------------------------
140875    -- 4219869 Business Flow
140876    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
140877    ------------------------------------------------------------------------------------
140878    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140879 
140880    ----------------------------------------------------------------------------------
140881    -- 4219869 Business Flow
140882    -- Update journal entry status -- Need to generate this within IF <condition>
140883    ----------------------------------------------------------------------------------
140884    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140885          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
140886          ,p_balance_type_code => l_balance_type_code
140887          );
140888 
140889    -------------------------------------------------------------------------------------------
140890    -- 4262811 - Generate the Accrual Reversal lines
140891    -------------------------------------------------------------------------------------------
140892    BEGIN
140893       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
140894                               (g_array_event(p_event_id).array_value_num('header_index'));
140895       IF l_acc_rev_flag IS NULL THEN
140896          l_acc_rev_flag := 'N';
140897       END IF;
140898    EXCEPTION
140899       WHEN OTHERS THEN
140900          l_acc_rev_flag := 'N';
140901    END;
140902    --
140903    IF (l_acc_rev_flag = 'Y') THEN
140904 
140905        -- 4645092  ------------------------------------------------------------------------------
140906        -- To allow MPA report to determine if it should generate report process
140907        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
140908        ------------------------------------------------------------------------------------------
140909 
140910        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
140911        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
140912    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
140913    -- call ADRs
140914    -- Bug 4922099
140915    --
140916    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140917         (NVL(l_actual_upg_option, 'N') = 'O') OR
140918         (NVL(l_enc_upg_option, 'N') = 'O')
140919       )
140920    THEN
140921    NULL;
140922    --
140923    --
140924    
140925   l_ccid := AcctDerRule_28(
140926            p_application_id           => p_application_id
140927          , p_ae_header_id             => l_ae_header_id 
140928 , p_source_15 => p_source_15
140929 , p_source_41 => p_source_41
140930 , p_source_42 => p_source_42
140931 , p_source_43 => p_source_43
140932 , p_source_44 => p_source_44
140933 , p_source_45 => p_source_45
140934          , x_transaction_coa_id       => l_adr_transaction_coa_id
140935          , x_accounting_coa_id        => l_adr_accounting_coa_id
140936          , x_value_type_code          => l_adr_value_type_code
140937          , p_side                     => 'NA'
140938    );
140939 
140940    xla_ae_lines_pkg.set_ccid(
140941     p_code_combination_id          => l_ccid
140942   , p_value_type_code              => l_adr_value_type_code
140943   , p_transaction_coa_id           => l_adr_transaction_coa_id
140944   , p_accounting_coa_id            => l_adr_accounting_coa_id
140945   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
140946   , p_adr_type_code                => 'S'
140947   , p_component_type               => l_component_type
140948   , p_component_code               => l_component_code
140949   , p_component_type_code          => l_component_type_code
140950   , p_component_appl_id            => l_component_appl_id
140951   , p_amb_context_code             => l_amb_context_code
140952   , p_side                         => 'NA'
140953   );
140954 
140955 
140956    --
140957    --
140958    END IF;
140959 
140960        --
140961        -- Update the line information that should be overwritten
140962        --
140963        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
140964                                          p_header_num   => 1);
140965        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
140966 
140967        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
140968 
140969        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
140970           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
140971        END IF;
140972 
140973       --
140974       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
140975       --
140976       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
140977           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
140978       ELSE
140979           ---------------------------------------------------------------------------------------------------
140980           -- 4262811a Switch Sign
140981           ---------------------------------------------------------------------------------------------------
140982           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
140983           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140984                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140985           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140986                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140987           -- 5132302
140988           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
140989                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140990 
140991       END IF;
140992 
140993       -- 4955764
140994       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140995       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
140996 
140997 
140998       XLA_AE_LINES_PKG.ValidateCurrentLine;
140999       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141000 
141001       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141002                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
141003                ,p_balance_type_code => l_balance_type_code);
141004 
141005    END IF;
141006 
141007    -----------------------------------------------------------------------------------------
141008    -- 4262811 Multiperiod Accounting
141009    -----------------------------------------------------------------------------------------
141010      -- No MPA option is assigned.
141011 
141012 
141013 END IF;
141014 END IF;
141015 --
141016 
141017 --
141018 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141019    trace
141020       (p_msg      => 'END of AcctLineType_266'
141021       ,p_level    => C_LEVEL_PROCEDURE
141022       ,p_module   => l_log_module);
141023 END IF;
141024 --
141025 EXCEPTION
141026   WHEN xla_exceptions_pkg.application_exception THEN
141027       RAISE;
141028   WHEN OTHERS THEN
141029        xla_exceptions_pkg.raise_message
141030            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_266');
141031 END AcctLineType_266;
141032 --
141033 
141034 ---------------------------------------
141035 --
141036 -- PRIVATE FUNCTION
141037 --         AcctLineType_267
141038 --
141039 ---------------------------------------
141040 PROCEDURE AcctLineType_267 (
141041   p_application_id        IN NUMBER
141042  ,p_event_id              IN NUMBER
141043  ,p_calculate_acctd_flag  IN VARCHAR2
141044  ,p_calculate_g_l_flag    IN VARCHAR2
141045  ,p_actual_flag           IN OUT VARCHAR2
141046  ,p_balance_type_code     OUT VARCHAR2
141047  ,p_gain_or_loss_ref      OUT VARCHAR2
141048  
141049 --TRANSACTION_ID
141050  , p_source_1            IN NUMBER
141051 --Item Concatenated Segments
141052  , p_source_2            IN VARCHAR2
141053 --Transaction Quantity
141054  , p_source_3            IN NUMBER
141055 --Transaction Unit of Measure Code
141056  , p_source_4            IN VARCHAR2
141057 --Inventory Transaction Type Description
141058  , p_source_5            IN VARCHAR2
141059 --Cost Element Name
141060  , p_source_15            IN NUMBER
141061 --Product Line Accounting Category Material Account
141062  , p_source_41            IN NUMBER
141063 --Product Line Accounting Category Material Overhead Account
141064  , p_source_42            IN NUMBER
141065 --Product Line Accounting Category Resource Account
141066  , p_source_43            IN NUMBER
141067 --Product Line Accounting Category Outside Processing Account
141068  , p_source_44            IN NUMBER
141069 --Product Line Accounting Category Overhead Account
141070  , p_source_45            IN NUMBER
141071 --DISTRIBUTION_IDENTIFIER
141072  , p_source_84            IN NUMBER
141073 --Distribution Type
141074  , p_source_85            IN VARCHAR2
141075  , p_source_85_meaning    IN VARCHAR2
141076 --Entered Currency Code
141077  , p_source_88            IN VARCHAR2
141078 --Entered Amount
141079  , p_source_91            IN NUMBER
141080 --Currency Conversion Date
141081  , p_source_92            IN DATE
141082 --Currency Conversion Rate
141083  , p_source_93            IN NUMBER
141084 --Currency Conversion Type
141085  , p_source_94            IN VARCHAR2
141086 --Accounted Amount
141087  , p_source_95            IN NUMBER
141088 --Accounting Line Type
141089  , p_source_97            IN NUMBER
141090 --Organization Code
141091  , p_source_108            IN VARCHAR2
141092 )
141093 IS
141094 
141095 l_component_type              VARCHAR2(80);
141096 l_component_code              VARCHAR2(30);
141097 l_component_type_code         VARCHAR2(1);
141098 l_component_appl_id           INTEGER;
141099 l_amb_context_code            VARCHAR2(30);
141100 l_entity_code                 VARCHAR2(30);
141101 l_event_class_code            VARCHAR2(30);
141102 l_ae_header_id                NUMBER;
141103 l_event_type_code             VARCHAR2(30);
141104 l_line_definition_code        VARCHAR2(30);
141105 l_line_definition_owner_code  VARCHAR2(1);
141106 --
141107 -- adr variables
141108 l_segment                     VARCHAR2(30);
141109 l_ccid                        NUMBER;
141110 l_adr_transaction_coa_id      NUMBER;
141111 l_adr_accounting_coa_id       NUMBER;
141112 l_adr_flexfield_segment_code  VARCHAR2(30);
141113 l_adr_flex_value_set_id       NUMBER;
141114 l_adr_value_type_code         VARCHAR2(30);
141115 l_adr_value_combination_id    NUMBER;
141116 l_adr_value_segment_code      VARCHAR2(30);
141117 
141118 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
141119 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
141120 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
141121 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
141122 
141123 -- 4262811 Variables ------------------------------------------------------------------------------------------
141124 l_entered_amt_idx             NUMBER;
141125 l_accted_amt_idx              NUMBER;
141126 l_acc_rev_flag                VARCHAR2(1);
141127 l_accrual_line_num            NUMBER;
141128 l_tmp_amt                     NUMBER;
141129 l_acc_rev_natural_side_code   VARCHAR2(1);
141130 
141131 l_num_entries                 NUMBER;
141132 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
141133 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
141134 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
141135 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
141136 l_recog_line_1                NUMBER;
141137 l_recog_line_2                NUMBER;
141138 
141139 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
141140 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
141141 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
141142 
141143 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
141144 
141145 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
141146 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
141147 
141148 ---------------------------------------------------------------------------------------------------------------
141149 
141150 
141151 --
141152 -- bulk performance
141153 --
141154 l_balance_type_code           VARCHAR2(1);
141155 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
141156 l_log_module                  VARCHAR2(240);
141157 
141158 --
141159 -- Upgrade strategy
141160 --
141161 l_actual_upg_option           VARCHAR2(1);
141162 l_enc_upg_option           VARCHAR2(1);
141163 
141164 --
141165 BEGIN
141166 --
141167 IF g_log_enabled THEN
141168       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_267';
141169 END IF;
141170 --
141171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141172 
141173       trace
141174          (p_msg      => 'BEGIN of AcctLineType_267'
141175          ,p_level    => C_LEVEL_PROCEDURE
141176          ,p_module   => l_log_module);
141177 
141178 END IF;
141179 --
141180 l_component_type             := 'AMB_JLT';
141181 l_component_code             := 'INVENTORY_VALUATION';
141182 l_component_type_code        := 'S';
141183 l_component_appl_id          :=  707;
141184 l_amb_context_code           := 'DEFAULT';
141185 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
141186 l_event_class_code           := 'LOG_INTERCOMPANY';
141187 l_event_type_code            := 'LOG_IC_SALES_ISSUE';
141188 l_line_definition_owner_code := 'S';
141189 l_line_definition_code       := 'PI_LOG_IC_SALES_ISSUE';
141190 --
141191 l_balance_type_code          := 'A';
141192 l_segment                     := NULL;
141193 l_ccid                        := NULL;
141194 l_adr_transaction_coa_id      := NULL;
141195 l_adr_accounting_coa_id       := NULL;
141196 l_adr_flexfield_segment_code  := NULL;
141197 l_adr_flex_value_set_id       := NULL;
141198 l_adr_value_type_code         := NULL;
141199 l_adr_value_combination_id    := NULL;
141200 l_adr_value_segment_code      := NULL;
141201 
141202 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
141203 l_bflow_class_code           := '';    -- 4219869 Business Flow
141204 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
141205 l_budgetary_control_flag     := 'N';
141206 
141207 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
141208 l_bflow_applied_to_amt       := NULL; -- 5132302
141209 l_entered_amt_idx            := NULL;          -- 4262811
141210 l_accted_amt_idx             := NULL;          -- 4262811
141211 l_acc_rev_flag               := NULL;          -- 4262811
141212 l_accrual_line_num           := NULL;          -- 4262811
141213 l_tmp_amt                    := NULL;          -- 4262811
141214 --
141215  
141216 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
141217     l_balance_type_code <> 'B' THEN
141218 IF NVL(p_source_97,9E125) =  1
141219  THEN 
141220 
141221    --
141222    XLA_AE_LINES_PKG.SetNewLine;
141223 
141224    p_balance_type_code          := l_balance_type_code;
141225    -- set the flag so later we will know whether the gain loss line needs to be created
141226    
141227    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
141228      p_actual_flag :='A';
141229    END IF;
141230 
141231    --
141232    -- bulk performance
141233    --
141234    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
141235                                       p_header_num   => 0); -- 4262811
141236    --
141237    -- set accounting line options
141238    --
141239    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
141240            p_natural_side_code          => 'D'
141241          , p_gain_or_loss_flag          => 'N'
141242          , p_gl_transfer_mode_code      => 'S'
141243          , p_acct_entry_type_code       => 'A'
141244          , p_switch_side_flag           => 'Y'
141245          , p_merge_duplicate_code       => 'N'
141246          );
141247    --
141248    l_acc_rev_natural_side_code := 'C';  -- 4262811
141249    -- 
141250    --
141251    -- set accounting line type info
141252    --
141253    xla_ae_lines_pkg.SetAcctLineType
141254       (p_component_type             => l_component_type
141255       ,p_event_type_code            => l_event_type_code
141256       ,p_line_definition_owner_code => l_line_definition_owner_code
141257       ,p_line_definition_code       => l_line_definition_code
141258       ,p_accounting_line_code       => l_component_code
141259       ,p_accounting_line_type_code  => l_component_type_code
141260       ,p_accounting_line_appl_id    => l_component_appl_id
141261       ,p_amb_context_code           => l_amb_context_code
141262       ,p_entity_code                => l_entity_code
141263       ,p_event_class_code           => l_event_class_code);
141264    --
141265    -- set accounting class
141266    --
141267    xla_ae_lines_pkg.SetAcctClass(
141268            p_accounting_class_code  => 'INVENTORY_VALUATION'
141269          , p_ae_header_id           => l_ae_header_id
141270          );
141271 
141272    --
141273    -- set rounding class
141274    --
141275    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
141276                       'INVENTORY_VALUATION';
141277 
141278    --
141279    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
141280    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
141281    --
141282    -- bulk performance
141283    --
141284    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
141285 
141286    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
141287       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
141288 
141289    -- 4955764
141290    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141291       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
141292 
141293    -- 4458381 Public Sector Enh
141294    
141295    --
141296    -- set accounting attributes for the line type
141297    --
141298    l_entered_amt_idx := 3;
141299    l_accted_amt_idx  := 8;
141300    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
141301    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
141302    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
141303    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
141304    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
141305    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
141306    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
141307    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
141308    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
141309    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
141310    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
141311    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
141312    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
141313    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
141314    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
141315    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
141316    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
141317 
141318    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
141319    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
141320 
141321    ---------------------------------------------------------------------------------------------------------------
141322    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
141323    ---------------------------------------------------------------------------------------------------------------
141324    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
141325 
141326    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141327    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141328 
141329    IF xla_accounting_cache_pkg.GetValueChar
141330          (p_source_code         => 'LEDGER_CATEGORY_CODE'
141331          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
141332    AND l_bflow_method_code = 'PRIOR_ENTRY'
141333 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
141334    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
141335          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
141336        )
141337    THEN
141338          xla_ae_lines_pkg.BflowUpgEntry
141339            (p_business_method_code    => l_bflow_method_code
141340            ,p_business_class_code     => l_bflow_class_code
141341            ,p_balance_type            => l_balance_type_code);
141342    ELSE
141343       NULL;
141344 -- No business flow processing for business flow method of NONE.
141345    END IF;
141346 
141347    --
141348    -- call analytical criteria
141349    --
141350    
141351 
141352 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
141353 xla_ae_lines_pkg.SetAnalyticalCriteria(
141354    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
141355  , p_analytical_criterion_owner   => 'S'
141356  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
141357  , p_amb_context_code             => 'DEFAULT'
141358  , p_balancing_flag               => 'Y'
141359  
141360  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
141361  , p_analytical_detail_num_1     =>  NULL
141362  , p_analytical_detail_date_1    =>  NULL
141363 
141364  , p_ae_header_id                 => l_ae_header_id
141365 )
141366 ;
141367 --
141368 
141369    --
141370    -- call description
141371    --
141372    
141373 xla_ae_lines_pkg.SetLineDescription(
141374    p_ae_header_id => l_ae_header_id
141375   ,p_description  => Description_1 (
141376      p_application_id         => p_application_id
141377    , p_ae_header_id           => l_ae_header_id 
141378 , p_source_1 => p_source_1
141379 , p_source_2 => p_source_2
141380 , p_source_3 => p_source_3
141381 , p_source_4 => p_source_4
141382 , p_source_5 => p_source_5
141383    )
141384 );
141385 
141386 
141387    --
141388    -- call ADRs
141389    -- Bug 4922099
141390    --
141391    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141392         (NVL(l_actual_upg_option, 'N') = 'O') OR
141393         (NVL(l_enc_upg_option, 'N') = 'O')
141394       )
141395    THEN
141396    NULL;
141397    --
141398    --
141399    
141400   l_ccid := AcctDerRule_28(
141401            p_application_id           => p_application_id
141402          , p_ae_header_id             => l_ae_header_id 
141403 , p_source_15 => p_source_15
141404 , p_source_41 => p_source_41
141405 , p_source_42 => p_source_42
141406 , p_source_43 => p_source_43
141407 , p_source_44 => p_source_44
141408 , p_source_45 => p_source_45
141409          , x_transaction_coa_id       => l_adr_transaction_coa_id
141410          , x_accounting_coa_id        => l_adr_accounting_coa_id
141411          , x_value_type_code          => l_adr_value_type_code
141412          , p_side                     => 'NA'
141413    );
141414 
141415    xla_ae_lines_pkg.set_ccid(
141416     p_code_combination_id          => l_ccid
141417   , p_value_type_code              => l_adr_value_type_code
141418   , p_transaction_coa_id           => l_adr_transaction_coa_id
141419   , p_accounting_coa_id            => l_adr_accounting_coa_id
141420   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
141421   , p_adr_type_code                => 'S'
141422   , p_component_type               => l_component_type
141423   , p_component_code               => l_component_code
141424   , p_component_type_code          => l_component_type_code
141425   , p_component_appl_id            => l_component_appl_id
141426   , p_amb_context_code             => l_amb_context_code
141427   , p_side                         => 'NA'
141428   );
141429 
141430 
141431    --
141432    --
141433    END IF;
141434    --
141435    -- Bug 4922099
141436    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
141437           (NVL(l_enc_upg_option, 'N') = 'O')
141438         ) AND
141439         (l_bflow_method_code = 'PRIOR_ENTRY')
141440       )
141441    THEN
141442       IF
141443       --
141444       1 = 2
141445       --
141446       THEN
141447       xla_accounting_err_pkg.build_message
141448                                     (p_appli_s_name            => 'XLA'
141449                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141450                                     ,p_token_1                 => 'LINE_NUMBER'
141451                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
141452                                     ,p_token_2                 => 'LINE_TYPE_NAME'
141453                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
141454                                                                              l_component_type
141455                                                                             ,l_component_code
141456                                                                             ,l_component_type_code
141457                                                                             ,l_component_appl_id
141458                                                                             ,l_amb_context_code
141459                                                                             ,l_entity_code
141460                                                                             ,l_event_class_code
141461                                                                            )
141462                                     ,p_token_3                 => 'OWNER'
141463                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
141464                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
141465                                                                           ,p_lookup_code    => l_component_type_code
141466                                                                          )
141467                                     ,p_token_4                 => 'PRODUCT_NAME'
141468                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
141469                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
141470                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
141471                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
141472                                     ,p_ae_header_id            =>  NULL
141473                                        );
141474 
141475         IF (C_LEVEL_ERROR>= g_log_level) THEN
141476                  trace
141477                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141478                       ,p_level    => C_LEVEL_ERROR
141479                       ,p_module   => l_log_module);
141480         END IF;
141481       END IF;
141482    END IF;
141483    --
141484    --
141485    ------------------------------------------------------------------------------------------------
141486    -- 4219869 Business Flow
141487    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
141488    -- Prior Entry.  Currently, the following code is always generated.
141489    ------------------------------------------------------------------------------------------------
141490    XLA_AE_LINES_PKG.ValidateCurrentLine;
141491 
141492    ------------------------------------------------------------------------------------
141493    -- 4219869 Business Flow
141494    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
141495    ------------------------------------------------------------------------------------
141496    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141497 
141498    ----------------------------------------------------------------------------------
141499    -- 4219869 Business Flow
141500    -- Update journal entry status -- Need to generate this within IF <condition>
141501    ----------------------------------------------------------------------------------
141502    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141503          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
141504          ,p_balance_type_code => l_balance_type_code
141505          );
141506 
141507    -------------------------------------------------------------------------------------------
141508    -- 4262811 - Generate the Accrual Reversal lines
141509    -------------------------------------------------------------------------------------------
141510    BEGIN
141511       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
141512                               (g_array_event(p_event_id).array_value_num('header_index'));
141513       IF l_acc_rev_flag IS NULL THEN
141514          l_acc_rev_flag := 'N';
141515       END IF;
141516    EXCEPTION
141517       WHEN OTHERS THEN
141518          l_acc_rev_flag := 'N';
141519    END;
141520    --
141521    IF (l_acc_rev_flag = 'Y') THEN
141522 
141523        -- 4645092  ------------------------------------------------------------------------------
141524        -- To allow MPA report to determine if it should generate report process
141525        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
141526        ------------------------------------------------------------------------------------------
141527 
141528        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
141529        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
141530    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
141531    -- call ADRs
141532    -- Bug 4922099
141533    --
141534    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141535         (NVL(l_actual_upg_option, 'N') = 'O') OR
141536         (NVL(l_enc_upg_option, 'N') = 'O')
141537       )
141538    THEN
141539    NULL;
141540    --
141541    --
141542    
141543   l_ccid := AcctDerRule_28(
141544            p_application_id           => p_application_id
141545          , p_ae_header_id             => l_ae_header_id 
141546 , p_source_15 => p_source_15
141547 , p_source_41 => p_source_41
141548 , p_source_42 => p_source_42
141549 , p_source_43 => p_source_43
141550 , p_source_44 => p_source_44
141551 , p_source_45 => p_source_45
141552          , x_transaction_coa_id       => l_adr_transaction_coa_id
141553          , x_accounting_coa_id        => l_adr_accounting_coa_id
141554          , x_value_type_code          => l_adr_value_type_code
141555          , p_side                     => 'NA'
141556    );
141557 
141558    xla_ae_lines_pkg.set_ccid(
141559     p_code_combination_id          => l_ccid
141560   , p_value_type_code              => l_adr_value_type_code
141561   , p_transaction_coa_id           => l_adr_transaction_coa_id
141562   , p_accounting_coa_id            => l_adr_accounting_coa_id
141563   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
141564   , p_adr_type_code                => 'S'
141565   , p_component_type               => l_component_type
141566   , p_component_code               => l_component_code
141567   , p_component_type_code          => l_component_type_code
141568   , p_component_appl_id            => l_component_appl_id
141569   , p_amb_context_code             => l_amb_context_code
141570   , p_side                         => 'NA'
141571   );
141572 
141573 
141574    --
141575    --
141576    END IF;
141577 
141578        --
141579        -- Update the line information that should be overwritten
141580        --
141581        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
141582                                          p_header_num   => 1);
141583        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
141584 
141585        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
141586 
141587        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
141588           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
141589        END IF;
141590 
141591       --
141592       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
141593       --
141594       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
141595           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
141596       ELSE
141597           ---------------------------------------------------------------------------------------------------
141598           -- 4262811a Switch Sign
141599           ---------------------------------------------------------------------------------------------------
141600           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
141601           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141602                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141603           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141604                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141605           -- 5132302
141606           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
141607                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141608 
141609       END IF;
141610 
141611       -- 4955764
141612       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141613       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
141614 
141615 
141616       XLA_AE_LINES_PKG.ValidateCurrentLine;
141617       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141618 
141619       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141620                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
141621                ,p_balance_type_code => l_balance_type_code);
141622 
141623    END IF;
141624 
141625    -----------------------------------------------------------------------------------------
141626    -- 4262811 Multiperiod Accounting
141627    -----------------------------------------------------------------------------------------
141628      -- No MPA option is assigned.
141629 
141630 
141631 END IF;
141632 END IF;
141633 --
141634 
141635 --
141636 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141637    trace
141638       (p_msg      => 'END of AcctLineType_267'
141639       ,p_level    => C_LEVEL_PROCEDURE
141640       ,p_module   => l_log_module);
141641 END IF;
141642 --
141643 EXCEPTION
141644   WHEN xla_exceptions_pkg.application_exception THEN
141645       RAISE;
141646   WHEN OTHERS THEN
141647        xla_exceptions_pkg.raise_message
141648            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_267');
141649 END AcctLineType_267;
141650 --
141651 
141652 ---------------------------------------
141653 --
141654 -- PRIVATE FUNCTION
141655 --         AcctLineType_268
141656 --
141657 ---------------------------------------
141658 PROCEDURE AcctLineType_268 (
141659   p_application_id        IN NUMBER
141660  ,p_event_id              IN NUMBER
141661  ,p_calculate_acctd_flag  IN VARCHAR2
141662  ,p_calculate_g_l_flag    IN VARCHAR2
141663  ,p_actual_flag           IN OUT VARCHAR2
141664  ,p_balance_type_code     OUT VARCHAR2
141665  ,p_gain_or_loss_ref      OUT VARCHAR2
141666  
141667 --TRANSACTION_ID
141668  , p_source_1            IN NUMBER
141669 --Item Concatenated Segments
141670  , p_source_2            IN VARCHAR2
141671 --Transaction Quantity
141672  , p_source_3            IN NUMBER
141673 --Transaction Unit of Measure Code
141674  , p_source_4            IN VARCHAR2
141675 --Inventory Transaction Type Description
141676  , p_source_5            IN VARCHAR2
141677 --Cost Element Name
141678  , p_source_15            IN NUMBER
141679 --Product Line Accounting Category Material Account
141680  , p_source_41            IN NUMBER
141681 --Product Line Accounting Category Material Overhead Account
141682  , p_source_42            IN NUMBER
141683 --Product Line Accounting Category Resource Account
141684  , p_source_43            IN NUMBER
141685 --Product Line Accounting Category Outside Processing Account
141686  , p_source_44            IN NUMBER
141687 --Product Line Accounting Category Overhead Account
141688  , p_source_45            IN NUMBER
141689 --DISTRIBUTION_IDENTIFIER
141690  , p_source_84            IN NUMBER
141691 --Distribution Type
141692  , p_source_85            IN VARCHAR2
141693  , p_source_85_meaning    IN VARCHAR2
141694 --Entered Currency Code
141695  , p_source_88            IN VARCHAR2
141696 --Entered Amount
141697  , p_source_91            IN NUMBER
141698 --Currency Conversion Date
141699  , p_source_92            IN DATE
141700 --Currency Conversion Rate
141701  , p_source_93            IN NUMBER
141702 --Currency Conversion Type
141703  , p_source_94            IN VARCHAR2
141704 --Accounted Amount
141705  , p_source_95            IN NUMBER
141706 --Accounting Line Type
141707  , p_source_97            IN NUMBER
141708 --Organization Code
141709  , p_source_108            IN VARCHAR2
141710 )
141711 IS
141712 
141713 l_component_type              VARCHAR2(80);
141714 l_component_code              VARCHAR2(30);
141715 l_component_type_code         VARCHAR2(1);
141716 l_component_appl_id           INTEGER;
141717 l_amb_context_code            VARCHAR2(30);
141718 l_entity_code                 VARCHAR2(30);
141719 l_event_class_code            VARCHAR2(30);
141720 l_ae_header_id                NUMBER;
141721 l_event_type_code             VARCHAR2(30);
141722 l_line_definition_code        VARCHAR2(30);
141723 l_line_definition_owner_code  VARCHAR2(1);
141724 --
141725 -- adr variables
141726 l_segment                     VARCHAR2(30);
141727 l_ccid                        NUMBER;
141728 l_adr_transaction_coa_id      NUMBER;
141729 l_adr_accounting_coa_id       NUMBER;
141730 l_adr_flexfield_segment_code  VARCHAR2(30);
141731 l_adr_flex_value_set_id       NUMBER;
141732 l_adr_value_type_code         VARCHAR2(30);
141733 l_adr_value_combination_id    NUMBER;
141734 l_adr_value_segment_code      VARCHAR2(30);
141735 
141736 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
141737 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
141738 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
141739 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
141740 
141741 -- 4262811 Variables ------------------------------------------------------------------------------------------
141742 l_entered_amt_idx             NUMBER;
141743 l_accted_amt_idx              NUMBER;
141744 l_acc_rev_flag                VARCHAR2(1);
141745 l_accrual_line_num            NUMBER;
141746 l_tmp_amt                     NUMBER;
141747 l_acc_rev_natural_side_code   VARCHAR2(1);
141748 
141749 l_num_entries                 NUMBER;
141750 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
141751 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
141752 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
141753 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
141754 l_recog_line_1                NUMBER;
141755 l_recog_line_2                NUMBER;
141756 
141757 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
141758 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
141759 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
141760 
141761 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
141762 
141763 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
141764 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
141765 
141766 ---------------------------------------------------------------------------------------------------------------
141767 
141768 
141769 --
141770 -- bulk performance
141771 --
141772 l_balance_type_code           VARCHAR2(1);
141773 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
141774 l_log_module                  VARCHAR2(240);
141775 
141776 --
141777 -- Upgrade strategy
141778 --
141779 l_actual_upg_option           VARCHAR2(1);
141780 l_enc_upg_option           VARCHAR2(1);
141781 
141782 --
141783 BEGIN
141784 --
141785 IF g_log_enabled THEN
141786       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_268';
141787 END IF;
141788 --
141789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141790 
141791       trace
141792          (p_msg      => 'BEGIN of AcctLineType_268'
141793          ,p_level    => C_LEVEL_PROCEDURE
141794          ,p_module   => l_log_module);
141795 
141796 END IF;
141797 --
141798 l_component_type             := 'AMB_JLT';
141799 l_component_code             := 'INVENTORY_VALUATION';
141800 l_component_type_code        := 'S';
141801 l_component_appl_id          :=  707;
141802 l_amb_context_code           := 'DEFAULT';
141803 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
141804 l_event_class_code           := 'LOG_INTERCOMPANY';
141805 l_event_type_code            := 'LOG_IC_SALES_RETURN';
141806 l_line_definition_owner_code := 'S';
141807 l_line_definition_code       := 'PI_LOG_IC_SALES_RETURN';
141808 --
141809 l_balance_type_code          := 'A';
141810 l_segment                     := NULL;
141811 l_ccid                        := NULL;
141812 l_adr_transaction_coa_id      := NULL;
141813 l_adr_accounting_coa_id       := NULL;
141814 l_adr_flexfield_segment_code  := NULL;
141815 l_adr_flex_value_set_id       := NULL;
141816 l_adr_value_type_code         := NULL;
141817 l_adr_value_combination_id    := NULL;
141818 l_adr_value_segment_code      := NULL;
141819 
141820 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
141821 l_bflow_class_code           := '';    -- 4219869 Business Flow
141822 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
141823 l_budgetary_control_flag     := 'N';
141824 
141825 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
141826 l_bflow_applied_to_amt       := NULL; -- 5132302
141827 l_entered_amt_idx            := NULL;          -- 4262811
141828 l_accted_amt_idx             := NULL;          -- 4262811
141829 l_acc_rev_flag               := NULL;          -- 4262811
141830 l_accrual_line_num           := NULL;          -- 4262811
141831 l_tmp_amt                    := NULL;          -- 4262811
141832 --
141833  
141834 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
141835     l_balance_type_code <> 'B' THEN
141836 IF NVL(p_source_97,9E125) =  1
141837  THEN 
141838 
141839    --
141840    XLA_AE_LINES_PKG.SetNewLine;
141841 
141842    p_balance_type_code          := l_balance_type_code;
141843    -- set the flag so later we will know whether the gain loss line needs to be created
141844    
141845    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
141846      p_actual_flag :='A';
141847    END IF;
141848 
141849    --
141850    -- bulk performance
141851    --
141852    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
141853                                       p_header_num   => 0); -- 4262811
141854    --
141855    -- set accounting line options
141856    --
141857    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
141858            p_natural_side_code          => 'D'
141859          , p_gain_or_loss_flag          => 'N'
141860          , p_gl_transfer_mode_code      => 'S'
141861          , p_acct_entry_type_code       => 'A'
141862          , p_switch_side_flag           => 'Y'
141863          , p_merge_duplicate_code       => 'N'
141864          );
141865    --
141866    l_acc_rev_natural_side_code := 'C';  -- 4262811
141867    -- 
141868    --
141869    -- set accounting line type info
141870    --
141871    xla_ae_lines_pkg.SetAcctLineType
141872       (p_component_type             => l_component_type
141873       ,p_event_type_code            => l_event_type_code
141874       ,p_line_definition_owner_code => l_line_definition_owner_code
141875       ,p_line_definition_code       => l_line_definition_code
141876       ,p_accounting_line_code       => l_component_code
141877       ,p_accounting_line_type_code  => l_component_type_code
141878       ,p_accounting_line_appl_id    => l_component_appl_id
141879       ,p_amb_context_code           => l_amb_context_code
141880       ,p_entity_code                => l_entity_code
141881       ,p_event_class_code           => l_event_class_code);
141882    --
141883    -- set accounting class
141884    --
141885    xla_ae_lines_pkg.SetAcctClass(
141886            p_accounting_class_code  => 'INVENTORY_VALUATION'
141887          , p_ae_header_id           => l_ae_header_id
141888          );
141889 
141890    --
141891    -- set rounding class
141892    --
141893    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
141894                       'INVENTORY_VALUATION';
141895 
141896    --
141897    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
141898    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
141899    --
141900    -- bulk performance
141901    --
141902    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
141903 
141904    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
141905       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
141906 
141907    -- 4955764
141908    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141909       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
141910 
141911    -- 4458381 Public Sector Enh
141912    
141913    --
141914    -- set accounting attributes for the line type
141915    --
141916    l_entered_amt_idx := 3;
141917    l_accted_amt_idx  := 8;
141918    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
141919    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
141920    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
141921    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
141922    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
141923    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
141924    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
141925    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
141926    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
141927    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
141928    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
141929    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
141930    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
141931    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
141932    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
141933    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
141934    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
141935 
141936    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
141937    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
141938 
141939    ---------------------------------------------------------------------------------------------------------------
141940    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
141941    ---------------------------------------------------------------------------------------------------------------
141942    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
141943 
141944    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141945    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141946 
141947    IF xla_accounting_cache_pkg.GetValueChar
141948          (p_source_code         => 'LEDGER_CATEGORY_CODE'
141949          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
141950    AND l_bflow_method_code = 'PRIOR_ENTRY'
141951 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
141952    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
141953          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
141954        )
141955    THEN
141956          xla_ae_lines_pkg.BflowUpgEntry
141957            (p_business_method_code    => l_bflow_method_code
141958            ,p_business_class_code     => l_bflow_class_code
141959            ,p_balance_type            => l_balance_type_code);
141960    ELSE
141961       NULL;
141962 -- No business flow processing for business flow method of NONE.
141963    END IF;
141964 
141965    --
141966    -- call analytical criteria
141967    --
141968    
141969 
141970 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
141971 xla_ae_lines_pkg.SetAnalyticalCriteria(
141972    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
141973  , p_analytical_criterion_owner   => 'S'
141974  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
141975  , p_amb_context_code             => 'DEFAULT'
141976  , p_balancing_flag               => 'Y'
141977  
141978  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
141979  , p_analytical_detail_num_1     =>  NULL
141980  , p_analytical_detail_date_1    =>  NULL
141981 
141982  , p_ae_header_id                 => l_ae_header_id
141983 )
141984 ;
141985 --
141986 
141987    --
141988    -- call description
141989    --
141990    
141991 xla_ae_lines_pkg.SetLineDescription(
141992    p_ae_header_id => l_ae_header_id
141993   ,p_description  => Description_1 (
141994      p_application_id         => p_application_id
141995    , p_ae_header_id           => l_ae_header_id 
141996 , p_source_1 => p_source_1
141997 , p_source_2 => p_source_2
141998 , p_source_3 => p_source_3
141999 , p_source_4 => p_source_4
142000 , p_source_5 => p_source_5
142001    )
142002 );
142003 
142004 
142005    --
142006    -- call ADRs
142007    -- Bug 4922099
142008    --
142009    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142010         (NVL(l_actual_upg_option, 'N') = 'O') OR
142011         (NVL(l_enc_upg_option, 'N') = 'O')
142012       )
142013    THEN
142014    NULL;
142015    --
142016    --
142017    
142018   l_ccid := AcctDerRule_28(
142019            p_application_id           => p_application_id
142020          , p_ae_header_id             => l_ae_header_id 
142021 , p_source_15 => p_source_15
142022 , p_source_41 => p_source_41
142023 , p_source_42 => p_source_42
142024 , p_source_43 => p_source_43
142025 , p_source_44 => p_source_44
142026 , p_source_45 => p_source_45
142027          , x_transaction_coa_id       => l_adr_transaction_coa_id
142028          , x_accounting_coa_id        => l_adr_accounting_coa_id
142029          , x_value_type_code          => l_adr_value_type_code
142030          , p_side                     => 'NA'
142031    );
142032 
142033    xla_ae_lines_pkg.set_ccid(
142034     p_code_combination_id          => l_ccid
142035   , p_value_type_code              => l_adr_value_type_code
142036   , p_transaction_coa_id           => l_adr_transaction_coa_id
142037   , p_accounting_coa_id            => l_adr_accounting_coa_id
142038   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
142039   , p_adr_type_code                => 'S'
142040   , p_component_type               => l_component_type
142041   , p_component_code               => l_component_code
142042   , p_component_type_code          => l_component_type_code
142043   , p_component_appl_id            => l_component_appl_id
142044   , p_amb_context_code             => l_amb_context_code
142045   , p_side                         => 'NA'
142046   );
142047 
142048 
142049    --
142050    --
142051    END IF;
142052    --
142053    -- Bug 4922099
142054    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
142055           (NVL(l_enc_upg_option, 'N') = 'O')
142056         ) AND
142057         (l_bflow_method_code = 'PRIOR_ENTRY')
142058       )
142059    THEN
142060       IF
142061       --
142062       1 = 2
142063       --
142064       THEN
142065       xla_accounting_err_pkg.build_message
142066                                     (p_appli_s_name            => 'XLA'
142067                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142068                                     ,p_token_1                 => 'LINE_NUMBER'
142069                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
142070                                     ,p_token_2                 => 'LINE_TYPE_NAME'
142071                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
142072                                                                              l_component_type
142073                                                                             ,l_component_code
142074                                                                             ,l_component_type_code
142075                                                                             ,l_component_appl_id
142076                                                                             ,l_amb_context_code
142077                                                                             ,l_entity_code
142078                                                                             ,l_event_class_code
142079                                                                            )
142080                                     ,p_token_3                 => 'OWNER'
142081                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
142082                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
142083                                                                           ,p_lookup_code    => l_component_type_code
142084                                                                          )
142085                                     ,p_token_4                 => 'PRODUCT_NAME'
142086                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
142087                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
142088                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
142089                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
142090                                     ,p_ae_header_id            =>  NULL
142091                                        );
142092 
142093         IF (C_LEVEL_ERROR>= g_log_level) THEN
142094                  trace
142095                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142096                       ,p_level    => C_LEVEL_ERROR
142097                       ,p_module   => l_log_module);
142098         END IF;
142099       END IF;
142100    END IF;
142101    --
142102    --
142103    ------------------------------------------------------------------------------------------------
142104    -- 4219869 Business Flow
142105    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
142106    -- Prior Entry.  Currently, the following code is always generated.
142107    ------------------------------------------------------------------------------------------------
142108    XLA_AE_LINES_PKG.ValidateCurrentLine;
142109 
142110    ------------------------------------------------------------------------------------
142111    -- 4219869 Business Flow
142112    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
142113    ------------------------------------------------------------------------------------
142114    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142115 
142116    ----------------------------------------------------------------------------------
142117    -- 4219869 Business Flow
142118    -- Update journal entry status -- Need to generate this within IF <condition>
142119    ----------------------------------------------------------------------------------
142120    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142121          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
142122          ,p_balance_type_code => l_balance_type_code
142123          );
142124 
142125    -------------------------------------------------------------------------------------------
142126    -- 4262811 - Generate the Accrual Reversal lines
142127    -------------------------------------------------------------------------------------------
142128    BEGIN
142129       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
142130                               (g_array_event(p_event_id).array_value_num('header_index'));
142131       IF l_acc_rev_flag IS NULL THEN
142132          l_acc_rev_flag := 'N';
142133       END IF;
142134    EXCEPTION
142135       WHEN OTHERS THEN
142136          l_acc_rev_flag := 'N';
142137    END;
142138    --
142139    IF (l_acc_rev_flag = 'Y') THEN
142140 
142141        -- 4645092  ------------------------------------------------------------------------------
142142        -- To allow MPA report to determine if it should generate report process
142143        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
142144        ------------------------------------------------------------------------------------------
142145 
142146        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
142147        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
142148    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
142149    -- call ADRs
142150    -- Bug 4922099
142151    --
142152    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142153         (NVL(l_actual_upg_option, 'N') = 'O') OR
142154         (NVL(l_enc_upg_option, 'N') = 'O')
142155       )
142156    THEN
142157    NULL;
142158    --
142159    --
142160    
142161   l_ccid := AcctDerRule_28(
142162            p_application_id           => p_application_id
142163          , p_ae_header_id             => l_ae_header_id 
142164 , p_source_15 => p_source_15
142165 , p_source_41 => p_source_41
142166 , p_source_42 => p_source_42
142167 , p_source_43 => p_source_43
142168 , p_source_44 => p_source_44
142169 , p_source_45 => p_source_45
142170          , x_transaction_coa_id       => l_adr_transaction_coa_id
142171          , x_accounting_coa_id        => l_adr_accounting_coa_id
142172          , x_value_type_code          => l_adr_value_type_code
142173          , p_side                     => 'NA'
142174    );
142175 
142176    xla_ae_lines_pkg.set_ccid(
142177     p_code_combination_id          => l_ccid
142178   , p_value_type_code              => l_adr_value_type_code
142179   , p_transaction_coa_id           => l_adr_transaction_coa_id
142180   , p_accounting_coa_id            => l_adr_accounting_coa_id
142181   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
142182   , p_adr_type_code                => 'S'
142183   , p_component_type               => l_component_type
142184   , p_component_code               => l_component_code
142185   , p_component_type_code          => l_component_type_code
142186   , p_component_appl_id            => l_component_appl_id
142187   , p_amb_context_code             => l_amb_context_code
142188   , p_side                         => 'NA'
142189   );
142190 
142191 
142192    --
142193    --
142194    END IF;
142195 
142196        --
142197        -- Update the line information that should be overwritten
142198        --
142199        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
142200                                          p_header_num   => 1);
142201        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
142202 
142203        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
142204 
142205        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
142206           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
142207        END IF;
142208 
142209       --
142210       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
142211       --
142212       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
142213           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
142214       ELSE
142215           ---------------------------------------------------------------------------------------------------
142216           -- 4262811a Switch Sign
142217           ---------------------------------------------------------------------------------------------------
142218           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
142219           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142220                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142221           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142222                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142223           -- 5132302
142224           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
142225                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142226 
142227       END IF;
142228 
142229       -- 4955764
142230       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142231       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
142232 
142233 
142234       XLA_AE_LINES_PKG.ValidateCurrentLine;
142235       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142236 
142237       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142238                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
142239                ,p_balance_type_code => l_balance_type_code);
142240 
142241    END IF;
142242 
142243    -----------------------------------------------------------------------------------------
142244    -- 4262811 Multiperiod Accounting
142245    -----------------------------------------------------------------------------------------
142246      -- No MPA option is assigned.
142247 
142248 
142249 END IF;
142250 END IF;
142251 --
142252 
142253 --
142254 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142255    trace
142256       (p_msg      => 'END of AcctLineType_268'
142257       ,p_level    => C_LEVEL_PROCEDURE
142258       ,p_module   => l_log_module);
142259 END IF;
142260 --
142261 EXCEPTION
142262   WHEN xla_exceptions_pkg.application_exception THEN
142263       RAISE;
142264   WHEN OTHERS THEN
142265        xla_exceptions_pkg.raise_message
142266            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_268');
142267 END AcctLineType_268;
142268 --
142269 
142270 ---------------------------------------
142271 --
142272 -- PRIVATE FUNCTION
142273 --         AcctLineType_269
142274 --
142275 ---------------------------------------
142276 PROCEDURE AcctLineType_269 (
142277   p_application_id        IN NUMBER
142278  ,p_event_id              IN NUMBER
142279  ,p_calculate_acctd_flag  IN VARCHAR2
142280  ,p_calculate_g_l_flag    IN VARCHAR2
142281  ,p_actual_flag           IN OUT VARCHAR2
142282  ,p_balance_type_code     OUT VARCHAR2
142283  ,p_gain_or_loss_ref      OUT VARCHAR2
142284  
142285 --TRANSACTION_ID
142286  , p_source_1            IN NUMBER
142287 --Item Concatenated Segments
142288  , p_source_2            IN VARCHAR2
142289 --Transaction Quantity
142290  , p_source_3            IN NUMBER
142291 --Transaction Unit of Measure Code
142292  , p_source_4            IN VARCHAR2
142293 --Inventory Transaction Type Description
142294  , p_source_5            IN VARCHAR2
142295 --Cost Element Name
142296  , p_source_15            IN NUMBER
142297 --Product Line Accounting Category Material Account
142298  , p_source_41            IN NUMBER
142299 --Product Line Accounting Category Material Overhead Account
142300  , p_source_42            IN NUMBER
142301 --Product Line Accounting Category Resource Account
142302  , p_source_43            IN NUMBER
142303 --Product Line Accounting Category Outside Processing Account
142304  , p_source_44            IN NUMBER
142305 --Product Line Accounting Category Overhead Account
142306  , p_source_45            IN NUMBER
142307 --DISTRIBUTION_IDENTIFIER
142308  , p_source_84            IN NUMBER
142309 --Distribution Type
142310  , p_source_85            IN VARCHAR2
142311  , p_source_85_meaning    IN VARCHAR2
142312 --Entered Currency Code
142313  , p_source_88            IN VARCHAR2
142314 --Entered Amount
142315  , p_source_91            IN NUMBER
142316 --Currency Conversion Date
142317  , p_source_92            IN DATE
142318 --Currency Conversion Rate
142319  , p_source_93            IN NUMBER
142320 --Currency Conversion Type
142321  , p_source_94            IN VARCHAR2
142322 --Accounted Amount
142323  , p_source_95            IN NUMBER
142324 --Accounting Line Type
142325  , p_source_97            IN NUMBER
142326 --Organization Code
142327  , p_source_108            IN VARCHAR2
142328 )
142329 IS
142330 
142331 l_component_type              VARCHAR2(80);
142332 l_component_code              VARCHAR2(30);
142333 l_component_type_code         VARCHAR2(1);
142334 l_component_appl_id           INTEGER;
142335 l_amb_context_code            VARCHAR2(30);
142336 l_entity_code                 VARCHAR2(30);
142337 l_event_class_code            VARCHAR2(30);
142338 l_ae_header_id                NUMBER;
142339 l_event_type_code             VARCHAR2(30);
142340 l_line_definition_code        VARCHAR2(30);
142341 l_line_definition_owner_code  VARCHAR2(1);
142342 --
142343 -- adr variables
142344 l_segment                     VARCHAR2(30);
142345 l_ccid                        NUMBER;
142346 l_adr_transaction_coa_id      NUMBER;
142347 l_adr_accounting_coa_id       NUMBER;
142348 l_adr_flexfield_segment_code  VARCHAR2(30);
142349 l_adr_flex_value_set_id       NUMBER;
142350 l_adr_value_type_code         VARCHAR2(30);
142351 l_adr_value_combination_id    NUMBER;
142352 l_adr_value_segment_code      VARCHAR2(30);
142353 
142354 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
142355 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
142356 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
142357 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
142358 
142359 -- 4262811 Variables ------------------------------------------------------------------------------------------
142360 l_entered_amt_idx             NUMBER;
142361 l_accted_amt_idx              NUMBER;
142362 l_acc_rev_flag                VARCHAR2(1);
142363 l_accrual_line_num            NUMBER;
142364 l_tmp_amt                     NUMBER;
142365 l_acc_rev_natural_side_code   VARCHAR2(1);
142366 
142367 l_num_entries                 NUMBER;
142368 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
142369 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
142370 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
142371 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
142372 l_recog_line_1                NUMBER;
142373 l_recog_line_2                NUMBER;
142374 
142375 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
142376 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
142377 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
142378 
142379 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
142380 
142381 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
142382 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
142383 
142384 ---------------------------------------------------------------------------------------------------------------
142385 
142386 
142387 --
142388 -- bulk performance
142389 --
142390 l_balance_type_code           VARCHAR2(1);
142391 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
142392 l_log_module                  VARCHAR2(240);
142393 
142394 --
142395 -- Upgrade strategy
142396 --
142397 l_actual_upg_option           VARCHAR2(1);
142398 l_enc_upg_option           VARCHAR2(1);
142399 
142400 --
142401 BEGIN
142402 --
142403 IF g_log_enabled THEN
142404       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_269';
142405 END IF;
142406 --
142407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142408 
142409       trace
142410          (p_msg      => 'BEGIN of AcctLineType_269'
142411          ,p_level    => C_LEVEL_PROCEDURE
142412          ,p_module   => l_log_module);
142413 
142414 END IF;
142415 --
142416 l_component_type             := 'AMB_JLT';
142417 l_component_code             := 'INVENTORY_VALUATION';
142418 l_component_type_code        := 'S';
142419 l_component_appl_id          :=  707;
142420 l_amb_context_code           := 'DEFAULT';
142421 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
142422 l_event_class_code           := 'MISC_ISSUE_RCPT';
142423 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
142424 l_line_definition_owner_code := 'S';
142425 l_line_definition_code       := 'PI_MISC_ISSUE_RCPT';
142426 --
142427 l_balance_type_code          := 'A';
142428 l_segment                     := NULL;
142429 l_ccid                        := NULL;
142430 l_adr_transaction_coa_id      := NULL;
142431 l_adr_accounting_coa_id       := NULL;
142432 l_adr_flexfield_segment_code  := NULL;
142433 l_adr_flex_value_set_id       := NULL;
142434 l_adr_value_type_code         := NULL;
142435 l_adr_value_combination_id    := NULL;
142436 l_adr_value_segment_code      := NULL;
142437 
142438 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
142439 l_bflow_class_code           := '';    -- 4219869 Business Flow
142440 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
142441 l_budgetary_control_flag     := 'N';
142442 
142443 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
142444 l_bflow_applied_to_amt       := NULL; -- 5132302
142445 l_entered_amt_idx            := NULL;          -- 4262811
142446 l_accted_amt_idx             := NULL;          -- 4262811
142447 l_acc_rev_flag               := NULL;          -- 4262811
142448 l_accrual_line_num           := NULL;          -- 4262811
142449 l_tmp_amt                    := NULL;          -- 4262811
142450 --
142451  
142452 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
142453     l_balance_type_code <> 'B' THEN
142454 IF NVL(p_source_97,9E125) =  1
142455  THEN 
142456 
142457    --
142458    XLA_AE_LINES_PKG.SetNewLine;
142459 
142460    p_balance_type_code          := l_balance_type_code;
142461    -- set the flag so later we will know whether the gain loss line needs to be created
142462    
142463    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
142464      p_actual_flag :='A';
142465    END IF;
142466 
142467    --
142468    -- bulk performance
142469    --
142470    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
142471                                       p_header_num   => 0); -- 4262811
142472    --
142473    -- set accounting line options
142474    --
142475    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
142476            p_natural_side_code          => 'D'
142477          , p_gain_or_loss_flag          => 'N'
142478          , p_gl_transfer_mode_code      => 'S'
142479          , p_acct_entry_type_code       => 'A'
142480          , p_switch_side_flag           => 'Y'
142481          , p_merge_duplicate_code       => 'N'
142482          );
142483    --
142484    l_acc_rev_natural_side_code := 'C';  -- 4262811
142485    -- 
142486    --
142487    -- set accounting line type info
142488    --
142489    xla_ae_lines_pkg.SetAcctLineType
142490       (p_component_type             => l_component_type
142491       ,p_event_type_code            => l_event_type_code
142492       ,p_line_definition_owner_code => l_line_definition_owner_code
142493       ,p_line_definition_code       => l_line_definition_code
142494       ,p_accounting_line_code       => l_component_code
142495       ,p_accounting_line_type_code  => l_component_type_code
142496       ,p_accounting_line_appl_id    => l_component_appl_id
142497       ,p_amb_context_code           => l_amb_context_code
142498       ,p_entity_code                => l_entity_code
142499       ,p_event_class_code           => l_event_class_code);
142500    --
142501    -- set accounting class
142502    --
142503    xla_ae_lines_pkg.SetAcctClass(
142504            p_accounting_class_code  => 'INVENTORY_VALUATION'
142505          , p_ae_header_id           => l_ae_header_id
142506          );
142507 
142508    --
142509    -- set rounding class
142510    --
142511    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
142512                       'INVENTORY_VALUATION';
142513 
142514    --
142515    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
142516    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
142517    --
142518    -- bulk performance
142519    --
142520    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
142521 
142522    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
142523       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
142524 
142525    -- 4955764
142526    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142527       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
142528 
142529    -- 4458381 Public Sector Enh
142530    
142531    --
142532    -- set accounting attributes for the line type
142533    --
142534    l_entered_amt_idx := 3;
142535    l_accted_amt_idx  := 8;
142536    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
142537    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
142538    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
142539    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
142540    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
142541    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
142542    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
142543    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
142544    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
142545    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
142546    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
142547    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
142548    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
142549    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
142550    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
142551    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
142552    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
142553 
142554    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
142555    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
142556 
142557    ---------------------------------------------------------------------------------------------------------------
142558    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
142559    ---------------------------------------------------------------------------------------------------------------
142560    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
142561 
142562    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142563    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142564 
142565    IF xla_accounting_cache_pkg.GetValueChar
142566          (p_source_code         => 'LEDGER_CATEGORY_CODE'
142567          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
142568    AND l_bflow_method_code = 'PRIOR_ENTRY'
142569 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
142570    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
142571          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
142572        )
142573    THEN
142574          xla_ae_lines_pkg.BflowUpgEntry
142575            (p_business_method_code    => l_bflow_method_code
142576            ,p_business_class_code     => l_bflow_class_code
142577            ,p_balance_type            => l_balance_type_code);
142578    ELSE
142579       NULL;
142580 -- No business flow processing for business flow method of NONE.
142581    END IF;
142582 
142583    --
142584    -- call analytical criteria
142585    --
142586    
142587 
142588 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
142589 xla_ae_lines_pkg.SetAnalyticalCriteria(
142590    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
142591  , p_analytical_criterion_owner   => 'S'
142592  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
142593  , p_amb_context_code             => 'DEFAULT'
142594  , p_balancing_flag               => 'Y'
142595  
142596  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
142597  , p_analytical_detail_num_1     =>  NULL
142598  , p_analytical_detail_date_1    =>  NULL
142599 
142600  , p_ae_header_id                 => l_ae_header_id
142601 )
142602 ;
142603 --
142604 
142605    --
142606    -- call description
142607    --
142608    
142609 xla_ae_lines_pkg.SetLineDescription(
142610    p_ae_header_id => l_ae_header_id
142611   ,p_description  => Description_1 (
142612      p_application_id         => p_application_id
142613    , p_ae_header_id           => l_ae_header_id 
142614 , p_source_1 => p_source_1
142615 , p_source_2 => p_source_2
142616 , p_source_3 => p_source_3
142617 , p_source_4 => p_source_4
142618 , p_source_5 => p_source_5
142619    )
142620 );
142621 
142622 
142623    --
142624    -- call ADRs
142625    -- Bug 4922099
142626    --
142627    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142628         (NVL(l_actual_upg_option, 'N') = 'O') OR
142629         (NVL(l_enc_upg_option, 'N') = 'O')
142630       )
142631    THEN
142632    NULL;
142633    --
142634    --
142635    
142636   l_ccid := AcctDerRule_28(
142637            p_application_id           => p_application_id
142638          , p_ae_header_id             => l_ae_header_id 
142639 , p_source_15 => p_source_15
142640 , p_source_41 => p_source_41
142641 , p_source_42 => p_source_42
142642 , p_source_43 => p_source_43
142643 , p_source_44 => p_source_44
142644 , p_source_45 => p_source_45
142645          , x_transaction_coa_id       => l_adr_transaction_coa_id
142646          , x_accounting_coa_id        => l_adr_accounting_coa_id
142647          , x_value_type_code          => l_adr_value_type_code
142648          , p_side                     => 'NA'
142649    );
142650 
142651    xla_ae_lines_pkg.set_ccid(
142652     p_code_combination_id          => l_ccid
142653   , p_value_type_code              => l_adr_value_type_code
142654   , p_transaction_coa_id           => l_adr_transaction_coa_id
142655   , p_accounting_coa_id            => l_adr_accounting_coa_id
142656   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
142657   , p_adr_type_code                => 'S'
142658   , p_component_type               => l_component_type
142659   , p_component_code               => l_component_code
142660   , p_component_type_code          => l_component_type_code
142661   , p_component_appl_id            => l_component_appl_id
142662   , p_amb_context_code             => l_amb_context_code
142663   , p_side                         => 'NA'
142664   );
142665 
142666 
142667    --
142668    --
142669    END IF;
142670    --
142671    -- Bug 4922099
142672    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
142673           (NVL(l_enc_upg_option, 'N') = 'O')
142674         ) AND
142675         (l_bflow_method_code = 'PRIOR_ENTRY')
142676       )
142677    THEN
142678       IF
142679       --
142680       1 = 2
142681       --
142682       THEN
142683       xla_accounting_err_pkg.build_message
142684                                     (p_appli_s_name            => 'XLA'
142685                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142686                                     ,p_token_1                 => 'LINE_NUMBER'
142687                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
142688                                     ,p_token_2                 => 'LINE_TYPE_NAME'
142689                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
142690                                                                              l_component_type
142691                                                                             ,l_component_code
142692                                                                             ,l_component_type_code
142693                                                                             ,l_component_appl_id
142694                                                                             ,l_amb_context_code
142695                                                                             ,l_entity_code
142696                                                                             ,l_event_class_code
142697                                                                            )
142698                                     ,p_token_3                 => 'OWNER'
142699                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
142700                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
142701                                                                           ,p_lookup_code    => l_component_type_code
142702                                                                          )
142703                                     ,p_token_4                 => 'PRODUCT_NAME'
142704                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
142705                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
142706                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
142707                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
142708                                     ,p_ae_header_id            =>  NULL
142709                                        );
142710 
142711         IF (C_LEVEL_ERROR>= g_log_level) THEN
142712                  trace
142713                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142714                       ,p_level    => C_LEVEL_ERROR
142715                       ,p_module   => l_log_module);
142716         END IF;
142717       END IF;
142718    END IF;
142719    --
142720    --
142721    ------------------------------------------------------------------------------------------------
142722    -- 4219869 Business Flow
142723    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
142724    -- Prior Entry.  Currently, the following code is always generated.
142725    ------------------------------------------------------------------------------------------------
142726    XLA_AE_LINES_PKG.ValidateCurrentLine;
142727 
142728    ------------------------------------------------------------------------------------
142729    -- 4219869 Business Flow
142730    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
142731    ------------------------------------------------------------------------------------
142732    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142733 
142734    ----------------------------------------------------------------------------------
142735    -- 4219869 Business Flow
142736    -- Update journal entry status -- Need to generate this within IF <condition>
142737    ----------------------------------------------------------------------------------
142738    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142739          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
142740          ,p_balance_type_code => l_balance_type_code
142741          );
142742 
142743    -------------------------------------------------------------------------------------------
142744    -- 4262811 - Generate the Accrual Reversal lines
142745    -------------------------------------------------------------------------------------------
142746    BEGIN
142747       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
142748                               (g_array_event(p_event_id).array_value_num('header_index'));
142749       IF l_acc_rev_flag IS NULL THEN
142750          l_acc_rev_flag := 'N';
142751       END IF;
142752    EXCEPTION
142753       WHEN OTHERS THEN
142754          l_acc_rev_flag := 'N';
142755    END;
142756    --
142757    IF (l_acc_rev_flag = 'Y') THEN
142758 
142759        -- 4645092  ------------------------------------------------------------------------------
142760        -- To allow MPA report to determine if it should generate report process
142761        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
142762        ------------------------------------------------------------------------------------------
142763 
142764        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
142765        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
142766    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
142767    -- call ADRs
142768    -- Bug 4922099
142769    --
142770    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142771         (NVL(l_actual_upg_option, 'N') = 'O') OR
142772         (NVL(l_enc_upg_option, 'N') = 'O')
142773       )
142774    THEN
142775    NULL;
142776    --
142777    --
142778    
142779   l_ccid := AcctDerRule_28(
142780            p_application_id           => p_application_id
142781          , p_ae_header_id             => l_ae_header_id 
142782 , p_source_15 => p_source_15
142783 , p_source_41 => p_source_41
142784 , p_source_42 => p_source_42
142785 , p_source_43 => p_source_43
142786 , p_source_44 => p_source_44
142787 , p_source_45 => p_source_45
142788          , x_transaction_coa_id       => l_adr_transaction_coa_id
142789          , x_accounting_coa_id        => l_adr_accounting_coa_id
142790          , x_value_type_code          => l_adr_value_type_code
142791          , p_side                     => 'NA'
142792    );
142793 
142794    xla_ae_lines_pkg.set_ccid(
142795     p_code_combination_id          => l_ccid
142796   , p_value_type_code              => l_adr_value_type_code
142797   , p_transaction_coa_id           => l_adr_transaction_coa_id
142798   , p_accounting_coa_id            => l_adr_accounting_coa_id
142799   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
142800   , p_adr_type_code                => 'S'
142801   , p_component_type               => l_component_type
142802   , p_component_code               => l_component_code
142803   , p_component_type_code          => l_component_type_code
142804   , p_component_appl_id            => l_component_appl_id
142805   , p_amb_context_code             => l_amb_context_code
142806   , p_side                         => 'NA'
142807   );
142808 
142809 
142810    --
142811    --
142812    END IF;
142813 
142814        --
142815        -- Update the line information that should be overwritten
142816        --
142817        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
142818                                          p_header_num   => 1);
142819        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
142820 
142821        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
142822 
142823        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
142824           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
142825        END IF;
142826 
142827       --
142828       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
142829       --
142830       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
142831           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
142832       ELSE
142833           ---------------------------------------------------------------------------------------------------
142834           -- 4262811a Switch Sign
142835           ---------------------------------------------------------------------------------------------------
142836           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
142837           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142838                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142839           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142840                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142841           -- 5132302
142842           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
142843                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142844 
142845       END IF;
142846 
142847       -- 4955764
142848       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142849       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
142850 
142851 
142852       XLA_AE_LINES_PKG.ValidateCurrentLine;
142853       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142854 
142855       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142856                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
142857                ,p_balance_type_code => l_balance_type_code);
142858 
142859    END IF;
142860 
142861    -----------------------------------------------------------------------------------------
142862    -- 4262811 Multiperiod Accounting
142863    -----------------------------------------------------------------------------------------
142864      -- No MPA option is assigned.
142865 
142866 
142867 END IF;
142868 END IF;
142869 --
142870 
142871 --
142872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142873    trace
142874       (p_msg      => 'END of AcctLineType_269'
142875       ,p_level    => C_LEVEL_PROCEDURE
142876       ,p_module   => l_log_module);
142877 END IF;
142878 --
142879 EXCEPTION
142880   WHEN xla_exceptions_pkg.application_exception THEN
142881       RAISE;
142882   WHEN OTHERS THEN
142883        xla_exceptions_pkg.raise_message
142884            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_269');
142885 END AcctLineType_269;
142886 --
142887 
142888 ---------------------------------------
142889 --
142890 -- PRIVATE FUNCTION
142891 --         AcctLineType_270
142892 --
142893 ---------------------------------------
142894 PROCEDURE AcctLineType_270 (
142895   p_application_id        IN NUMBER
142896  ,p_event_id              IN NUMBER
142897  ,p_calculate_acctd_flag  IN VARCHAR2
142898  ,p_calculate_g_l_flag    IN VARCHAR2
142899  ,p_actual_flag           IN OUT VARCHAR2
142900  ,p_balance_type_code     OUT VARCHAR2
142901  ,p_gain_or_loss_ref      OUT VARCHAR2
142902  
142903 --TRANSACTION_ID
142904  , p_source_1            IN NUMBER
142905 --Item Concatenated Segments
142906  , p_source_2            IN VARCHAR2
142907 --Transaction Quantity
142908  , p_source_3            IN NUMBER
142909 --Transaction Unit of Measure Code
142910  , p_source_4            IN VARCHAR2
142911 --Inventory Transaction Type Description
142912  , p_source_5            IN VARCHAR2
142913 --Cost Element Name
142914  , p_source_15            IN NUMBER
142915 --Product Line Accounting Category Material Account
142916  , p_source_41            IN NUMBER
142917 --Product Line Accounting Category Material Overhead Account
142918  , p_source_42            IN NUMBER
142919 --Product Line Accounting Category Resource Account
142920  , p_source_43            IN NUMBER
142921 --Product Line Accounting Category Outside Processing Account
142922  , p_source_44            IN NUMBER
142923 --Product Line Accounting Category Overhead Account
142924  , p_source_45            IN NUMBER
142925 --Applied to Application ID
142926  , p_source_79            IN NUMBER
142927 --Applied to Distribution Link Type
142928  , p_source_80            IN VARCHAR2
142929 --Applied to Entity Code
142930  , p_source_81            IN VARCHAR2
142931 --Applied To Purchase Document Identifier
142932  , p_source_83            IN NUMBER
142933 --DISTRIBUTION_IDENTIFIER
142934  , p_source_84            IN NUMBER
142935 --Distribution Type
142936  , p_source_85            IN VARCHAR2
142937  , p_source_85_meaning    IN VARCHAR2
142938 --PO Budget Account
142939  , p_source_86            IN NUMBER
142940 --Encumbrance Reversal Amount Entered
142941  , p_source_87            IN NUMBER
142942 --Entered Currency Code
142943  , p_source_88            IN VARCHAR2
142944 --Transaction Encumbrance Reversal Amount
142945  , p_source_89            IN NUMBER
142946 --Entered Amount
142947  , p_source_91            IN NUMBER
142948 --Currency Conversion Date
142949  , p_source_92            IN DATE
142950 --Currency Conversion Rate
142951  , p_source_93            IN NUMBER
142952 --Currency Conversion Type
142953  , p_source_94            IN VARCHAR2
142954 --Accounted Amount
142955  , p_source_95            IN NUMBER
142956 --Purchasing Encumbrance Type Identifier
142957  , p_source_96            IN NUMBER
142958 --Accounting Line Type
142959  , p_source_97            IN NUMBER
142960 --Costing Encumbrance Upgrade Option
142961  , p_source_100            IN VARCHAR2
142962 --TXN_PO_DISTRIBUTION_ID
142963  , p_source_101            IN NUMBER
142964 --Organization Code
142965  , p_source_108            IN VARCHAR2
142966 )
142967 IS
142968 
142969 l_component_type              VARCHAR2(80);
142970 l_component_code              VARCHAR2(30);
142971 l_component_type_code         VARCHAR2(1);
142972 l_component_appl_id           INTEGER;
142973 l_amb_context_code            VARCHAR2(30);
142974 l_entity_code                 VARCHAR2(30);
142975 l_event_class_code            VARCHAR2(30);
142976 l_ae_header_id                NUMBER;
142977 l_event_type_code             VARCHAR2(30);
142978 l_line_definition_code        VARCHAR2(30);
142979 l_line_definition_owner_code  VARCHAR2(1);
142980 --
142981 -- adr variables
142982 l_segment                     VARCHAR2(30);
142983 l_ccid                        NUMBER;
142984 l_adr_transaction_coa_id      NUMBER;
142985 l_adr_accounting_coa_id       NUMBER;
142986 l_adr_flexfield_segment_code  VARCHAR2(30);
142987 l_adr_flex_value_set_id       NUMBER;
142988 l_adr_value_type_code         VARCHAR2(30);
142989 l_adr_value_combination_id    NUMBER;
142990 l_adr_value_segment_code      VARCHAR2(30);
142991 
142992 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
142993 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
142994 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
142995 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
142996 
142997 -- 4262811 Variables ------------------------------------------------------------------------------------------
142998 l_entered_amt_idx             NUMBER;
142999 l_accted_amt_idx              NUMBER;
143000 l_acc_rev_flag                VARCHAR2(1);
143001 l_accrual_line_num            NUMBER;
143002 l_tmp_amt                     NUMBER;
143003 l_acc_rev_natural_side_code   VARCHAR2(1);
143004 
143005 l_num_entries                 NUMBER;
143006 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
143007 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
143008 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
143009 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
143010 l_recog_line_1                NUMBER;
143011 l_recog_line_2                NUMBER;
143012 
143013 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
143014 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
143015 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
143016 
143017 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
143018 
143019 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
143020 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
143021 
143022 ---------------------------------------------------------------------------------------------------------------
143023 
143024 
143025 --
143026 -- bulk performance
143027 --
143028 l_balance_type_code           VARCHAR2(1);
143029 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
143030 l_log_module                  VARCHAR2(240);
143031 
143032 --
143033 -- Upgrade strategy
143034 --
143035 l_actual_upg_option           VARCHAR2(1);
143036 l_enc_upg_option           VARCHAR2(1);
143037 
143038 --
143039 BEGIN
143040 --
143041 IF g_log_enabled THEN
143042       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_270';
143043 END IF;
143044 --
143045 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143046 
143047       trace
143048          (p_msg      => 'BEGIN of AcctLineType_270'
143049          ,p_level    => C_LEVEL_PROCEDURE
143050          ,p_module   => l_log_module);
143051 
143052 END IF;
143053 --
143054 l_component_type             := 'AMB_JLT';
143055 l_component_code             := 'INVENTORY_VALUATION';
143056 l_component_type_code        := 'S';
143057 l_component_appl_id          :=  707;
143058 l_amb_context_code           := 'DEFAULT';
143059 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
143060 l_event_class_code           := 'PURCHASE_ORDER';
143061 l_event_type_code            := 'LOG_RET_RI_INV';
143062 l_line_definition_owner_code := 'S';
143063 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
143064 --
143065 l_balance_type_code          := 'A';
143066 l_segment                     := NULL;
143067 l_ccid                        := NULL;
143068 l_adr_transaction_coa_id      := NULL;
143069 l_adr_accounting_coa_id       := NULL;
143070 l_adr_flexfield_segment_code  := NULL;
143071 l_adr_flex_value_set_id       := NULL;
143072 l_adr_value_type_code         := NULL;
143073 l_adr_value_combination_id    := NULL;
143074 l_adr_value_segment_code      := NULL;
143075 
143076 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
143077 l_bflow_class_code           := '';    -- 4219869 Business Flow
143078 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
143079 l_budgetary_control_flag     := 'N';
143080 
143081 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
143082 l_bflow_applied_to_amt       := NULL; -- 5132302
143083 l_entered_amt_idx            := NULL;          -- 4262811
143084 l_accted_amt_idx             := NULL;          -- 4262811
143085 l_acc_rev_flag               := NULL;          -- 4262811
143086 l_accrual_line_num           := NULL;          -- 4262811
143087 l_tmp_amt                    := NULL;          -- 4262811
143088 --
143089  
143090 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
143091     l_balance_type_code <> 'B' THEN
143092 IF NVL(p_source_97,9E125) =  1
143093  THEN 
143094 
143095    --
143096    XLA_AE_LINES_PKG.SetNewLine;
143097 
143098    p_balance_type_code          := l_balance_type_code;
143099    -- set the flag so later we will know whether the gain loss line needs to be created
143100    
143101    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
143102      p_actual_flag :='A';
143103    END IF;
143104 
143105    --
143106    -- bulk performance
143107    --
143108    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
143109                                       p_header_num   => 0); -- 4262811
143110    --
143111    -- set accounting line options
143112    --
143113    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
143114            p_natural_side_code          => 'D'
143115          , p_gain_or_loss_flag          => 'N'
143116          , p_gl_transfer_mode_code      => 'S'
143117          , p_acct_entry_type_code       => 'A'
143118          , p_switch_side_flag           => 'Y'
143119          , p_merge_duplicate_code       => 'N'
143120          );
143121    --
143122    l_acc_rev_natural_side_code := 'C';  -- 4262811
143123    -- 
143124    --
143125    -- set accounting line type info
143126    --
143127    xla_ae_lines_pkg.SetAcctLineType
143128       (p_component_type             => l_component_type
143129       ,p_event_type_code            => l_event_type_code
143130       ,p_line_definition_owner_code => l_line_definition_owner_code
143131       ,p_line_definition_code       => l_line_definition_code
143132       ,p_accounting_line_code       => l_component_code
143133       ,p_accounting_line_type_code  => l_component_type_code
143134       ,p_accounting_line_appl_id    => l_component_appl_id
143135       ,p_amb_context_code           => l_amb_context_code
143136       ,p_entity_code                => l_entity_code
143137       ,p_event_class_code           => l_event_class_code);
143138    --
143139    -- set accounting class
143140    --
143141    xla_ae_lines_pkg.SetAcctClass(
143142            p_accounting_class_code  => 'INVENTORY_VALUATION'
143143          , p_ae_header_id           => l_ae_header_id
143144          );
143145 
143146    --
143147    -- set rounding class
143148    --
143149    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
143150                       'INVENTORY_VALUATION';
143151 
143152    --
143153    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
143154    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
143155    --
143156    -- bulk performance
143157    --
143158    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
143159 
143160    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
143161       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
143162 
143163    -- 4955764
143164    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
143165       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
143166 
143167    -- 4458381 Public Sector Enh
143168    
143169    --
143170    -- set accounting attributes for the line type
143171    --
143172    l_entered_amt_idx := 17;
143173    l_accted_amt_idx  := 22;
143174    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
143175    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
143176    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
143177    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
143178    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
143179    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
143180    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
143181    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
143182    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
143183    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
143184    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
143185    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
143186    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
143187    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
143188    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
143189    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
143190    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
143191    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
143192    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
143193    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
143194    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
143195    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
143196    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
143197    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
143198    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
143199    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
143200    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
143201    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
143202    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
143203    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
143204    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
143205    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
143206    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
143207    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
143208    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
143209    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
143210    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
143211    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
143212    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
143213    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
143214    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
143215    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
143216    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
143217    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
143218    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
143219    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
143220    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
143221    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
143222    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
143223 
143224    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
143225    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
143226 
143227    ---------------------------------------------------------------------------------------------------------------
143228    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
143229    ---------------------------------------------------------------------------------------------------------------
143230    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
143231 
143232    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
143233    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
143234 
143235    IF xla_accounting_cache_pkg.GetValueChar
143236          (p_source_code         => 'LEDGER_CATEGORY_CODE'
143237          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
143238    AND l_bflow_method_code = 'PRIOR_ENTRY'
143239 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
143240    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
143241          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
143242        )
143243    THEN
143244          xla_ae_lines_pkg.BflowUpgEntry
143245            (p_business_method_code    => l_bflow_method_code
143246            ,p_business_class_code     => l_bflow_class_code
143247            ,p_balance_type            => l_balance_type_code);
143248    ELSE
143249       NULL;
143250 -- No business flow processing for business flow method of NONE.
143251    END IF;
143252 
143253    --
143254    -- call analytical criteria
143255    --
143256    
143257 
143258 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
143259 xla_ae_lines_pkg.SetAnalyticalCriteria(
143260    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
143261  , p_analytical_criterion_owner   => 'S'
143262  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
143263  , p_amb_context_code             => 'DEFAULT'
143264  , p_balancing_flag               => 'Y'
143265  
143266  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
143267  , p_analytical_detail_num_1     =>  NULL
143268  , p_analytical_detail_date_1    =>  NULL
143269 
143270  , p_ae_header_id                 => l_ae_header_id
143271 )
143272 ;
143273 --
143274 
143275    --
143276    -- call description
143277    --
143278    
143279 xla_ae_lines_pkg.SetLineDescription(
143280    p_ae_header_id => l_ae_header_id
143281   ,p_description  => Description_1 (
143282      p_application_id         => p_application_id
143283    , p_ae_header_id           => l_ae_header_id 
143284 , p_source_1 => p_source_1
143285 , p_source_2 => p_source_2
143286 , p_source_3 => p_source_3
143287 , p_source_4 => p_source_4
143288 , p_source_5 => p_source_5
143289    )
143290 );
143291 
143292 
143293    --
143294    -- call ADRs
143295    -- Bug 4922099
143296    --
143297    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
143298         (NVL(l_actual_upg_option, 'N') = 'O') OR
143299         (NVL(l_enc_upg_option, 'N') = 'O')
143300       )
143301    THEN
143302    NULL;
143303    --
143304    --
143305    
143306   l_ccid := AcctDerRule_28(
143307            p_application_id           => p_application_id
143308          , p_ae_header_id             => l_ae_header_id 
143309 , p_source_15 => p_source_15
143310 , p_source_41 => p_source_41
143311 , p_source_42 => p_source_42
143312 , p_source_43 => p_source_43
143313 , p_source_44 => p_source_44
143314 , p_source_45 => p_source_45
143315          , x_transaction_coa_id       => l_adr_transaction_coa_id
143316          , x_accounting_coa_id        => l_adr_accounting_coa_id
143317          , x_value_type_code          => l_adr_value_type_code
143318          , p_side                     => 'NA'
143319    );
143320 
143321    xla_ae_lines_pkg.set_ccid(
143322     p_code_combination_id          => l_ccid
143323   , p_value_type_code              => l_adr_value_type_code
143324   , p_transaction_coa_id           => l_adr_transaction_coa_id
143325   , p_accounting_coa_id            => l_adr_accounting_coa_id
143326   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
143327   , p_adr_type_code                => 'S'
143328   , p_component_type               => l_component_type
143329   , p_component_code               => l_component_code
143330   , p_component_type_code          => l_component_type_code
143331   , p_component_appl_id            => l_component_appl_id
143332   , p_amb_context_code             => l_amb_context_code
143333   , p_side                         => 'NA'
143334   );
143335 
143336 
143337    --
143338    --
143339    END IF;
143340    --
143341    -- Bug 4922099
143342    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
143343           (NVL(l_enc_upg_option, 'N') = 'O')
143344         ) AND
143345         (l_bflow_method_code = 'PRIOR_ENTRY')
143346       )
143347    THEN
143348       IF
143349       --
143350       1 = 2
143351       --
143352       THEN
143353       xla_accounting_err_pkg.build_message
143354                                     (p_appli_s_name            => 'XLA'
143355                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
143356                                     ,p_token_1                 => 'LINE_NUMBER'
143357                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
143358                                     ,p_token_2                 => 'LINE_TYPE_NAME'
143359                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
143360                                                                              l_component_type
143361                                                                             ,l_component_code
143362                                                                             ,l_component_type_code
143363                                                                             ,l_component_appl_id
143364                                                                             ,l_amb_context_code
143365                                                                             ,l_entity_code
143366                                                                             ,l_event_class_code
143367                                                                            )
143368                                     ,p_token_3                 => 'OWNER'
143369                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
143370                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
143371                                                                           ,p_lookup_code    => l_component_type_code
143372                                                                          )
143373                                     ,p_token_4                 => 'PRODUCT_NAME'
143374                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
143375                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
143376                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
143377                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
143378                                     ,p_ae_header_id            =>  NULL
143379                                        );
143380 
143381         IF (C_LEVEL_ERROR>= g_log_level) THEN
143382                  trace
143383                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
143384                       ,p_level    => C_LEVEL_ERROR
143385                       ,p_module   => l_log_module);
143386         END IF;
143387       END IF;
143388    END IF;
143389    --
143390    --
143391    ------------------------------------------------------------------------------------------------
143392    -- 4219869 Business Flow
143393    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
143394    -- Prior Entry.  Currently, the following code is always generated.
143395    ------------------------------------------------------------------------------------------------
143396    XLA_AE_LINES_PKG.ValidateCurrentLine;
143397 
143398    ------------------------------------------------------------------------------------
143399    -- 4219869 Business Flow
143400    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
143401    ------------------------------------------------------------------------------------
143402    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
143403 
143404    ----------------------------------------------------------------------------------
143405    -- 4219869 Business Flow
143406    -- Update journal entry status -- Need to generate this within IF <condition>
143407    ----------------------------------------------------------------------------------
143408    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
143409          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
143410          ,p_balance_type_code => l_balance_type_code
143411          );
143412 
143413    -------------------------------------------------------------------------------------------
143414    -- 4262811 - Generate the Accrual Reversal lines
143415    -------------------------------------------------------------------------------------------
143416    BEGIN
143417       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
143418                               (g_array_event(p_event_id).array_value_num('header_index'));
143419       IF l_acc_rev_flag IS NULL THEN
143420          l_acc_rev_flag := 'N';
143421       END IF;
143422    EXCEPTION
143423       WHEN OTHERS THEN
143424          l_acc_rev_flag := 'N';
143425    END;
143426    --
143427    IF (l_acc_rev_flag = 'Y') THEN
143428 
143429        -- 4645092  ------------------------------------------------------------------------------
143430        -- To allow MPA report to determine if it should generate report process
143431        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
143432        ------------------------------------------------------------------------------------------
143433 
143434        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
143435        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
143436    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
143437    -- call ADRs
143438    -- Bug 4922099
143439    --
143440    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
143441         (NVL(l_actual_upg_option, 'N') = 'O') OR
143442         (NVL(l_enc_upg_option, 'N') = 'O')
143443       )
143444    THEN
143445    NULL;
143446    --
143447    --
143448    
143449   l_ccid := AcctDerRule_28(
143450            p_application_id           => p_application_id
143451          , p_ae_header_id             => l_ae_header_id 
143452 , p_source_15 => p_source_15
143453 , p_source_41 => p_source_41
143454 , p_source_42 => p_source_42
143455 , p_source_43 => p_source_43
143456 , p_source_44 => p_source_44
143457 , p_source_45 => p_source_45
143458          , x_transaction_coa_id       => l_adr_transaction_coa_id
143459          , x_accounting_coa_id        => l_adr_accounting_coa_id
143460          , x_value_type_code          => l_adr_value_type_code
143461          , p_side                     => 'NA'
143462    );
143463 
143464    xla_ae_lines_pkg.set_ccid(
143465     p_code_combination_id          => l_ccid
143466   , p_value_type_code              => l_adr_value_type_code
143467   , p_transaction_coa_id           => l_adr_transaction_coa_id
143468   , p_accounting_coa_id            => l_adr_accounting_coa_id
143469   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
143470   , p_adr_type_code                => 'S'
143471   , p_component_type               => l_component_type
143472   , p_component_code               => l_component_code
143473   , p_component_type_code          => l_component_type_code
143474   , p_component_appl_id            => l_component_appl_id
143475   , p_amb_context_code             => l_amb_context_code
143476   , p_side                         => 'NA'
143477   );
143478 
143479 
143480    --
143481    --
143482    END IF;
143483 
143484        --
143485        -- Update the line information that should be overwritten
143486        --
143487        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
143488                                          p_header_num   => 1);
143489        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
143490 
143491        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
143492 
143493        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
143494           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
143495        END IF;
143496 
143497       --
143498       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
143499       --
143500       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
143501           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
143502       ELSE
143503           ---------------------------------------------------------------------------------------------------
143504           -- 4262811a Switch Sign
143505           ---------------------------------------------------------------------------------------------------
143506           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
143507           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
143508                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143509           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
143510                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143511           -- 5132302
143512           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
143513                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143514 
143515       END IF;
143516 
143517       -- 4955764
143518       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
143519       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
143520 
143521 
143522       XLA_AE_LINES_PKG.ValidateCurrentLine;
143523       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
143524 
143525       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
143526                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
143527                ,p_balance_type_code => l_balance_type_code);
143528 
143529    END IF;
143530 
143531    -----------------------------------------------------------------------------------------
143532    -- 4262811 Multiperiod Accounting
143533    -----------------------------------------------------------------------------------------
143534      -- No MPA option is assigned.
143535 
143536 
143537 END IF;
143538 END IF;
143539 --
143540 
143541 --
143542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143543    trace
143544       (p_msg      => 'END of AcctLineType_270'
143545       ,p_level    => C_LEVEL_PROCEDURE
143546       ,p_module   => l_log_module);
143547 END IF;
143548 --
143549 EXCEPTION
143550   WHEN xla_exceptions_pkg.application_exception THEN
143551       RAISE;
143552   WHEN OTHERS THEN
143553        xla_exceptions_pkg.raise_message
143554            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_270');
143555 END AcctLineType_270;
143556 --
143557 
143558 ---------------------------------------
143559 --
143560 -- PRIVATE FUNCTION
143561 --         AcctLineType_271
143562 --
143563 ---------------------------------------
143564 PROCEDURE AcctLineType_271 (
143565   p_application_id        IN NUMBER
143566  ,p_event_id              IN NUMBER
143567  ,p_calculate_acctd_flag  IN VARCHAR2
143568  ,p_calculate_g_l_flag    IN VARCHAR2
143569  ,p_actual_flag           IN OUT VARCHAR2
143570  ,p_balance_type_code     OUT VARCHAR2
143571  ,p_gain_or_loss_ref      OUT VARCHAR2
143572  
143573 --TRANSACTION_ID
143574  , p_source_1            IN NUMBER
143575 --Item Concatenated Segments
143576  , p_source_2            IN VARCHAR2
143577 --Transaction Quantity
143578  , p_source_3            IN NUMBER
143579 --Transaction Unit of Measure Code
143580  , p_source_4            IN VARCHAR2
143581 --Inventory Transaction Type Description
143582  , p_source_5            IN VARCHAR2
143583 --Cost Element Name
143584  , p_source_15            IN NUMBER
143585 --Product Line Accounting Category Material Account
143586  , p_source_41            IN NUMBER
143587 --Product Line Accounting Category Material Overhead Account
143588  , p_source_42            IN NUMBER
143589 --Product Line Accounting Category Resource Account
143590  , p_source_43            IN NUMBER
143591 --Product Line Accounting Category Outside Processing Account
143592  , p_source_44            IN NUMBER
143593 --Product Line Accounting Category Overhead Account
143594  , p_source_45            IN NUMBER
143595 --DISTRIBUTION_IDENTIFIER
143596  , p_source_84            IN NUMBER
143597 --Distribution Type
143598  , p_source_85            IN VARCHAR2
143599  , p_source_85_meaning    IN VARCHAR2
143600 --Entered Currency Code
143601  , p_source_88            IN VARCHAR2
143602 --Entered Amount
143603  , p_source_91            IN NUMBER
143604 --Currency Conversion Date
143605  , p_source_92            IN DATE
143606 --Currency Conversion Rate
143607  , p_source_93            IN NUMBER
143608 --Currency Conversion Type
143609  , p_source_94            IN VARCHAR2
143610 --Accounted Amount
143611  , p_source_95            IN NUMBER
143612 --Accounting Line Type
143613  , p_source_97            IN NUMBER
143614 --Organization Code
143615  , p_source_108            IN VARCHAR2
143616 )
143617 IS
143618 
143619 l_component_type              VARCHAR2(80);
143620 l_component_code              VARCHAR2(30);
143621 l_component_type_code         VARCHAR2(1);
143622 l_component_appl_id           INTEGER;
143623 l_amb_context_code            VARCHAR2(30);
143624 l_entity_code                 VARCHAR2(30);
143625 l_event_class_code            VARCHAR2(30);
143626 l_ae_header_id                NUMBER;
143627 l_event_type_code             VARCHAR2(30);
143628 l_line_definition_code        VARCHAR2(30);
143629 l_line_definition_owner_code  VARCHAR2(1);
143630 --
143631 -- adr variables
143632 l_segment                     VARCHAR2(30);
143633 l_ccid                        NUMBER;
143634 l_adr_transaction_coa_id      NUMBER;
143635 l_adr_accounting_coa_id       NUMBER;
143636 l_adr_flexfield_segment_code  VARCHAR2(30);
143637 l_adr_flex_value_set_id       NUMBER;
143638 l_adr_value_type_code         VARCHAR2(30);
143639 l_adr_value_combination_id    NUMBER;
143640 l_adr_value_segment_code      VARCHAR2(30);
143641 
143642 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
143643 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
143644 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
143645 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
143646 
143647 -- 4262811 Variables ------------------------------------------------------------------------------------------
143648 l_entered_amt_idx             NUMBER;
143649 l_accted_amt_idx              NUMBER;
143650 l_acc_rev_flag                VARCHAR2(1);
143651 l_accrual_line_num            NUMBER;
143652 l_tmp_amt                     NUMBER;
143653 l_acc_rev_natural_side_code   VARCHAR2(1);
143654 
143655 l_num_entries                 NUMBER;
143656 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
143657 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
143658 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
143659 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
143660 l_recog_line_1                NUMBER;
143661 l_recog_line_2                NUMBER;
143662 
143663 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
143664 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
143665 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
143666 
143667 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
143668 
143669 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
143670 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
143671 
143672 ---------------------------------------------------------------------------------------------------------------
143673 
143674 
143675 --
143676 -- bulk performance
143677 --
143678 l_balance_type_code           VARCHAR2(1);
143679 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
143680 l_log_module                  VARCHAR2(240);
143681 
143682 --
143683 -- Upgrade strategy
143684 --
143685 l_actual_upg_option           VARCHAR2(1);
143686 l_enc_upg_option           VARCHAR2(1);
143687 
143688 --
143689 BEGIN
143690 --
143691 IF g_log_enabled THEN
143692       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_271';
143693 END IF;
143694 --
143695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143696 
143697       trace
143698          (p_msg      => 'BEGIN of AcctLineType_271'
143699          ,p_level    => C_LEVEL_PROCEDURE
143700          ,p_module   => l_log_module);
143701 
143702 END IF;
143703 --
143704 l_component_type             := 'AMB_JLT';
143705 l_component_code             := 'INVENTORY_VALUATION';
143706 l_component_type_code        := 'S';
143707 l_component_appl_id          :=  707;
143708 l_amb_context_code           := 'DEFAULT';
143709 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
143710 l_event_class_code           := 'SALES_ORDER';
143711 l_event_type_code            := 'LOG_RMA_RCPT';
143712 l_line_definition_owner_code := 'S';
143713 l_line_definition_code       := 'PI_LOG_RMA_RCPT';
143714 --
143715 l_balance_type_code          := 'A';
143716 l_segment                     := NULL;
143717 l_ccid                        := NULL;
143718 l_adr_transaction_coa_id      := NULL;
143719 l_adr_accounting_coa_id       := NULL;
143720 l_adr_flexfield_segment_code  := NULL;
143721 l_adr_flex_value_set_id       := NULL;
143722 l_adr_value_type_code         := NULL;
143723 l_adr_value_combination_id    := NULL;
143724 l_adr_value_segment_code      := NULL;
143725 
143726 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
143727 l_bflow_class_code           := '';    -- 4219869 Business Flow
143728 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
143729 l_budgetary_control_flag     := 'N';
143730 
143731 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
143732 l_bflow_applied_to_amt       := NULL; -- 5132302
143733 l_entered_amt_idx            := NULL;          -- 4262811
143734 l_accted_amt_idx             := NULL;          -- 4262811
143735 l_acc_rev_flag               := NULL;          -- 4262811
143736 l_accrual_line_num           := NULL;          -- 4262811
143737 l_tmp_amt                    := NULL;          -- 4262811
143738 --
143739  
143740 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
143741     l_balance_type_code <> 'B' THEN
143742 IF NVL(p_source_97,9E125) =  1
143743  THEN 
143744 
143745    --
143746    XLA_AE_LINES_PKG.SetNewLine;
143747 
143748    p_balance_type_code          := l_balance_type_code;
143749    -- set the flag so later we will know whether the gain loss line needs to be created
143750    
143751    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
143752      p_actual_flag :='A';
143753    END IF;
143754 
143755    --
143756    -- bulk performance
143757    --
143758    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
143759                                       p_header_num   => 0); -- 4262811
143760    --
143761    -- set accounting line options
143762    --
143763    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
143764            p_natural_side_code          => 'D'
143765          , p_gain_or_loss_flag          => 'N'
143766          , p_gl_transfer_mode_code      => 'S'
143767          , p_acct_entry_type_code       => 'A'
143768          , p_switch_side_flag           => 'Y'
143769          , p_merge_duplicate_code       => 'N'
143770          );
143771    --
143772    l_acc_rev_natural_side_code := 'C';  -- 4262811
143773    -- 
143774    --
143775    -- set accounting line type info
143776    --
143777    xla_ae_lines_pkg.SetAcctLineType
143778       (p_component_type             => l_component_type
143779       ,p_event_type_code            => l_event_type_code
143780       ,p_line_definition_owner_code => l_line_definition_owner_code
143781       ,p_line_definition_code       => l_line_definition_code
143782       ,p_accounting_line_code       => l_component_code
143783       ,p_accounting_line_type_code  => l_component_type_code
143784       ,p_accounting_line_appl_id    => l_component_appl_id
143785       ,p_amb_context_code           => l_amb_context_code
143786       ,p_entity_code                => l_entity_code
143787       ,p_event_class_code           => l_event_class_code);
143788    --
143789    -- set accounting class
143790    --
143791    xla_ae_lines_pkg.SetAcctClass(
143792            p_accounting_class_code  => 'INVENTORY_VALUATION'
143793          , p_ae_header_id           => l_ae_header_id
143794          );
143795 
143796    --
143797    -- set rounding class
143798    --
143799    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
143800                       'INVENTORY_VALUATION';
143801 
143802    --
143803    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
143804    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
143805    --
143806    -- bulk performance
143807    --
143808    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
143809 
143810    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
143811       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
143812 
143813    -- 4955764
143814    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
143815       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
143816 
143817    -- 4458381 Public Sector Enh
143818    
143819    --
143820    -- set accounting attributes for the line type
143821    --
143822    l_entered_amt_idx := 3;
143823    l_accted_amt_idx  := 8;
143824    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
143825    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
143826    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
143827    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
143828    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
143829    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
143830    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
143831    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
143832    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
143833    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
143834    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
143835    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
143836    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
143837    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
143838    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
143839    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
143840    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
143841 
143842    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
143843    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
143844 
143845    ---------------------------------------------------------------------------------------------------------------
143846    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
143847    ---------------------------------------------------------------------------------------------------------------
143848    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
143849 
143850    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
143851    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
143852 
143853    IF xla_accounting_cache_pkg.GetValueChar
143854          (p_source_code         => 'LEDGER_CATEGORY_CODE'
143855          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
143856    AND l_bflow_method_code = 'PRIOR_ENTRY'
143857 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
143858    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
143859          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
143860        )
143861    THEN
143862          xla_ae_lines_pkg.BflowUpgEntry
143863            (p_business_method_code    => l_bflow_method_code
143864            ,p_business_class_code     => l_bflow_class_code
143865            ,p_balance_type            => l_balance_type_code);
143866    ELSE
143867       NULL;
143868 -- No business flow processing for business flow method of NONE.
143869    END IF;
143870 
143871    --
143872    -- call analytical criteria
143873    --
143874    
143875 
143876 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
143877 xla_ae_lines_pkg.SetAnalyticalCriteria(
143878    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
143879  , p_analytical_criterion_owner   => 'S'
143880  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
143881  , p_amb_context_code             => 'DEFAULT'
143882  , p_balancing_flag               => 'Y'
143883  
143884  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
143885  , p_analytical_detail_num_1     =>  NULL
143886  , p_analytical_detail_date_1    =>  NULL
143887 
143888  , p_ae_header_id                 => l_ae_header_id
143889 )
143890 ;
143891 --
143892 
143893    --
143894    -- call description
143895    --
143896    
143897 xla_ae_lines_pkg.SetLineDescription(
143898    p_ae_header_id => l_ae_header_id
143899   ,p_description  => Description_1 (
143900      p_application_id         => p_application_id
143901    , p_ae_header_id           => l_ae_header_id 
143902 , p_source_1 => p_source_1
143903 , p_source_2 => p_source_2
143904 , p_source_3 => p_source_3
143905 , p_source_4 => p_source_4
143906 , p_source_5 => p_source_5
143907    )
143908 );
143909 
143910 
143911    --
143912    -- call ADRs
143913    -- Bug 4922099
143914    --
143915    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
143916         (NVL(l_actual_upg_option, 'N') = 'O') OR
143917         (NVL(l_enc_upg_option, 'N') = 'O')
143918       )
143919    THEN
143920    NULL;
143921    --
143922    --
143923    
143924   l_ccid := AcctDerRule_28(
143925            p_application_id           => p_application_id
143926          , p_ae_header_id             => l_ae_header_id 
143927 , p_source_15 => p_source_15
143928 , p_source_41 => p_source_41
143929 , p_source_42 => p_source_42
143930 , p_source_43 => p_source_43
143931 , p_source_44 => p_source_44
143932 , p_source_45 => p_source_45
143933          , x_transaction_coa_id       => l_adr_transaction_coa_id
143934          , x_accounting_coa_id        => l_adr_accounting_coa_id
143935          , x_value_type_code          => l_adr_value_type_code
143936          , p_side                     => 'NA'
143937    );
143938 
143939    xla_ae_lines_pkg.set_ccid(
143940     p_code_combination_id          => l_ccid
143941   , p_value_type_code              => l_adr_value_type_code
143942   , p_transaction_coa_id           => l_adr_transaction_coa_id
143943   , p_accounting_coa_id            => l_adr_accounting_coa_id
143944   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
143945   , p_adr_type_code                => 'S'
143946   , p_component_type               => l_component_type
143947   , p_component_code               => l_component_code
143948   , p_component_type_code          => l_component_type_code
143949   , p_component_appl_id            => l_component_appl_id
143950   , p_amb_context_code             => l_amb_context_code
143951   , p_side                         => 'NA'
143952   );
143953 
143954 
143955    --
143956    --
143957    END IF;
143958    --
143959    -- Bug 4922099
143960    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
143961           (NVL(l_enc_upg_option, 'N') = 'O')
143962         ) AND
143963         (l_bflow_method_code = 'PRIOR_ENTRY')
143964       )
143965    THEN
143966       IF
143967       --
143968       1 = 2
143969       --
143970       THEN
143971       xla_accounting_err_pkg.build_message
143972                                     (p_appli_s_name            => 'XLA'
143973                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
143974                                     ,p_token_1                 => 'LINE_NUMBER'
143975                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
143976                                     ,p_token_2                 => 'LINE_TYPE_NAME'
143977                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
143978                                                                              l_component_type
143979                                                                             ,l_component_code
143980                                                                             ,l_component_type_code
143981                                                                             ,l_component_appl_id
143982                                                                             ,l_amb_context_code
143983                                                                             ,l_entity_code
143984                                                                             ,l_event_class_code
143985                                                                            )
143986                                     ,p_token_3                 => 'OWNER'
143987                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
143988                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
143989                                                                           ,p_lookup_code    => l_component_type_code
143990                                                                          )
143991                                     ,p_token_4                 => 'PRODUCT_NAME'
143992                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
143993                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
143994                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
143995                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
143996                                     ,p_ae_header_id            =>  NULL
143997                                        );
143998 
143999         IF (C_LEVEL_ERROR>= g_log_level) THEN
144000                  trace
144001                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
144002                       ,p_level    => C_LEVEL_ERROR
144003                       ,p_module   => l_log_module);
144004         END IF;
144005       END IF;
144006    END IF;
144007    --
144008    --
144009    ------------------------------------------------------------------------------------------------
144010    -- 4219869 Business Flow
144011    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
144012    -- Prior Entry.  Currently, the following code is always generated.
144013    ------------------------------------------------------------------------------------------------
144014    XLA_AE_LINES_PKG.ValidateCurrentLine;
144015 
144016    ------------------------------------------------------------------------------------
144017    -- 4219869 Business Flow
144018    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
144019    ------------------------------------------------------------------------------------
144020    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
144021 
144022    ----------------------------------------------------------------------------------
144023    -- 4219869 Business Flow
144024    -- Update journal entry status -- Need to generate this within IF <condition>
144025    ----------------------------------------------------------------------------------
144026    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
144027          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
144028          ,p_balance_type_code => l_balance_type_code
144029          );
144030 
144031    -------------------------------------------------------------------------------------------
144032    -- 4262811 - Generate the Accrual Reversal lines
144033    -------------------------------------------------------------------------------------------
144034    BEGIN
144035       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
144036                               (g_array_event(p_event_id).array_value_num('header_index'));
144037       IF l_acc_rev_flag IS NULL THEN
144038          l_acc_rev_flag := 'N';
144039       END IF;
144040    EXCEPTION
144041       WHEN OTHERS THEN
144042          l_acc_rev_flag := 'N';
144043    END;
144044    --
144045    IF (l_acc_rev_flag = 'Y') THEN
144046 
144047        -- 4645092  ------------------------------------------------------------------------------
144048        -- To allow MPA report to determine if it should generate report process
144049        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
144050        ------------------------------------------------------------------------------------------
144051 
144052        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
144053        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
144054    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
144055    -- call ADRs
144056    -- Bug 4922099
144057    --
144058    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
144059         (NVL(l_actual_upg_option, 'N') = 'O') OR
144060         (NVL(l_enc_upg_option, 'N') = 'O')
144061       )
144062    THEN
144063    NULL;
144064    --
144065    --
144066    
144067   l_ccid := AcctDerRule_28(
144068            p_application_id           => p_application_id
144069          , p_ae_header_id             => l_ae_header_id 
144070 , p_source_15 => p_source_15
144071 , p_source_41 => p_source_41
144072 , p_source_42 => p_source_42
144073 , p_source_43 => p_source_43
144074 , p_source_44 => p_source_44
144075 , p_source_45 => p_source_45
144076          , x_transaction_coa_id       => l_adr_transaction_coa_id
144077          , x_accounting_coa_id        => l_adr_accounting_coa_id
144078          , x_value_type_code          => l_adr_value_type_code
144079          , p_side                     => 'NA'
144080    );
144081 
144082    xla_ae_lines_pkg.set_ccid(
144083     p_code_combination_id          => l_ccid
144084   , p_value_type_code              => l_adr_value_type_code
144085   , p_transaction_coa_id           => l_adr_transaction_coa_id
144086   , p_accounting_coa_id            => l_adr_accounting_coa_id
144087   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
144088   , p_adr_type_code                => 'S'
144089   , p_component_type               => l_component_type
144090   , p_component_code               => l_component_code
144091   , p_component_type_code          => l_component_type_code
144092   , p_component_appl_id            => l_component_appl_id
144093   , p_amb_context_code             => l_amb_context_code
144094   , p_side                         => 'NA'
144095   );
144096 
144097 
144098    --
144099    --
144100    END IF;
144101 
144102        --
144103        -- Update the line information that should be overwritten
144104        --
144105        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
144106                                          p_header_num   => 1);
144107        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
144108 
144109        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
144110 
144111        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
144112           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
144113        END IF;
144114 
144115       --
144116       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
144117       --
144118       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
144119           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
144120       ELSE
144121           ---------------------------------------------------------------------------------------------------
144122           -- 4262811a Switch Sign
144123           ---------------------------------------------------------------------------------------------------
144124           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
144125           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
144126                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
144127           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
144128                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
144129           -- 5132302
144130           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
144131                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
144132 
144133       END IF;
144134 
144135       -- 4955764
144136       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
144137       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
144138 
144139 
144140       XLA_AE_LINES_PKG.ValidateCurrentLine;
144141       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
144142 
144143       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
144144                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
144145                ,p_balance_type_code => l_balance_type_code);
144146 
144147    END IF;
144148 
144149    -----------------------------------------------------------------------------------------
144150    -- 4262811 Multiperiod Accounting
144151    -----------------------------------------------------------------------------------------
144152      -- No MPA option is assigned.
144153 
144154 
144155 END IF;
144156 END IF;
144157 --
144158 
144159 --
144160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144161    trace
144162       (p_msg      => 'END of AcctLineType_271'
144163       ,p_level    => C_LEVEL_PROCEDURE
144164       ,p_module   => l_log_module);
144165 END IF;
144166 --
144167 EXCEPTION
144168   WHEN xla_exceptions_pkg.application_exception THEN
144169       RAISE;
144170   WHEN OTHERS THEN
144171        xla_exceptions_pkg.raise_message
144172            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_271');
144173 END AcctLineType_271;
144174 --
144175 
144176 ---------------------------------------
144177 --
144178 -- PRIVATE FUNCTION
144179 --         AcctLineType_272
144180 --
144181 ---------------------------------------
144182 PROCEDURE AcctLineType_272 (
144183   p_application_id        IN NUMBER
144184  ,p_event_id              IN NUMBER
144185  ,p_calculate_acctd_flag  IN VARCHAR2
144186  ,p_calculate_g_l_flag    IN VARCHAR2
144187  ,p_actual_flag           IN OUT VARCHAR2
144188  ,p_balance_type_code     OUT VARCHAR2
144189  ,p_gain_or_loss_ref      OUT VARCHAR2
144190  
144191 --TRANSACTION_ID
144192  , p_source_1            IN NUMBER
144193 --Item Concatenated Segments
144194  , p_source_2            IN VARCHAR2
144195 --Transaction Quantity
144196  , p_source_3            IN NUMBER
144197 --Transaction Unit of Measure Code
144198  , p_source_4            IN VARCHAR2
144199 --Inventory Transaction Type Description
144200  , p_source_5            IN VARCHAR2
144201 --Cost Element Name
144202  , p_source_15            IN NUMBER
144203 --Product Line Accounting Category Material Account
144204  , p_source_41            IN NUMBER
144205 --Product Line Accounting Category Material Overhead Account
144206  , p_source_42            IN NUMBER
144207 --Product Line Accounting Category Resource Account
144208  , p_source_43            IN NUMBER
144209 --Product Line Accounting Category Outside Processing Account
144210  , p_source_44            IN NUMBER
144211 --Product Line Accounting Category Overhead Account
144212  , p_source_45            IN NUMBER
144213 --DISTRIBUTION_IDENTIFIER
144214  , p_source_84            IN NUMBER
144215 --Distribution Type
144216  , p_source_85            IN VARCHAR2
144217  , p_source_85_meaning    IN VARCHAR2
144218 --Entered Currency Code
144219  , p_source_88            IN VARCHAR2
144220 --Entered Amount
144221  , p_source_91            IN NUMBER
144222 --Currency Conversion Date
144223  , p_source_92            IN DATE
144224 --Currency Conversion Rate
144225  , p_source_93            IN NUMBER
144226 --Currency Conversion Type
144227  , p_source_94            IN VARCHAR2
144228 --Accounted Amount
144229  , p_source_95            IN NUMBER
144230 --Accounting Line Type
144231  , p_source_97            IN NUMBER
144232 --Organization Code
144233  , p_source_108            IN VARCHAR2
144234 )
144235 IS
144236 
144237 l_component_type              VARCHAR2(80);
144238 l_component_code              VARCHAR2(30);
144239 l_component_type_code         VARCHAR2(1);
144240 l_component_appl_id           INTEGER;
144241 l_amb_context_code            VARCHAR2(30);
144242 l_entity_code                 VARCHAR2(30);
144243 l_event_class_code            VARCHAR2(30);
144244 l_ae_header_id                NUMBER;
144245 l_event_type_code             VARCHAR2(30);
144246 l_line_definition_code        VARCHAR2(30);
144247 l_line_definition_owner_code  VARCHAR2(1);
144248 --
144249 -- adr variables
144250 l_segment                     VARCHAR2(30);
144251 l_ccid                        NUMBER;
144252 l_adr_transaction_coa_id      NUMBER;
144253 l_adr_accounting_coa_id       NUMBER;
144254 l_adr_flexfield_segment_code  VARCHAR2(30);
144255 l_adr_flex_value_set_id       NUMBER;
144256 l_adr_value_type_code         VARCHAR2(30);
144257 l_adr_value_combination_id    NUMBER;
144258 l_adr_value_segment_code      VARCHAR2(30);
144259 
144260 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
144261 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
144262 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
144263 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
144264 
144265 -- 4262811 Variables ------------------------------------------------------------------------------------------
144266 l_entered_amt_idx             NUMBER;
144267 l_accted_amt_idx              NUMBER;
144268 l_acc_rev_flag                VARCHAR2(1);
144269 l_accrual_line_num            NUMBER;
144270 l_tmp_amt                     NUMBER;
144271 l_acc_rev_natural_side_code   VARCHAR2(1);
144272 
144273 l_num_entries                 NUMBER;
144274 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
144275 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
144276 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
144277 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
144278 l_recog_line_1                NUMBER;
144279 l_recog_line_2                NUMBER;
144280 
144281 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
144282 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
144283 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
144284 
144285 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
144286 
144287 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
144288 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
144289 
144290 ---------------------------------------------------------------------------------------------------------------
144291 
144292 
144293 --
144294 -- bulk performance
144295 --
144296 l_balance_type_code           VARCHAR2(1);
144297 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
144298 l_log_module                  VARCHAR2(240);
144299 
144300 --
144301 -- Upgrade strategy
144302 --
144303 l_actual_upg_option           VARCHAR2(1);
144304 l_enc_upg_option           VARCHAR2(1);
144305 
144306 --
144307 BEGIN
144308 --
144309 IF g_log_enabled THEN
144310       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_272';
144311 END IF;
144312 --
144313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144314 
144315       trace
144316          (p_msg      => 'BEGIN of AcctLineType_272'
144317          ,p_level    => C_LEVEL_PROCEDURE
144318          ,p_module   => l_log_module);
144319 
144320 END IF;
144321 --
144322 l_component_type             := 'AMB_JLT';
144323 l_component_code             := 'INVENTORY_VALUATION';
144324 l_component_type_code        := 'S';
144325 l_component_appl_id          :=  707;
144326 l_amb_context_code           := 'DEFAULT';
144327 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
144328 l_event_class_code           := 'USER_DEFINE';
144329 l_event_type_code            := 'UIPV_TXFR';
144330 l_line_definition_owner_code := 'S';
144331 l_line_definition_code       := 'PI_IPV_TXFR';
144332 --
144333 l_balance_type_code          := 'A';
144334 l_segment                     := NULL;
144335 l_ccid                        := NULL;
144336 l_adr_transaction_coa_id      := NULL;
144337 l_adr_accounting_coa_id       := NULL;
144338 l_adr_flexfield_segment_code  := NULL;
144339 l_adr_flex_value_set_id       := NULL;
144340 l_adr_value_type_code         := NULL;
144341 l_adr_value_combination_id    := NULL;
144342 l_adr_value_segment_code      := NULL;
144343 
144344 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
144345 l_bflow_class_code           := '';    -- 4219869 Business Flow
144346 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
144347 l_budgetary_control_flag     := 'N';
144348 
144349 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
144350 l_bflow_applied_to_amt       := NULL; -- 5132302
144351 l_entered_amt_idx            := NULL;          -- 4262811
144352 l_accted_amt_idx             := NULL;          -- 4262811
144353 l_acc_rev_flag               := NULL;          -- 4262811
144354 l_accrual_line_num           := NULL;          -- 4262811
144355 l_tmp_amt                    := NULL;          -- 4262811
144356 --
144357  
144358 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
144359     l_balance_type_code <> 'B' THEN
144360 IF NVL(p_source_97,9E125) =  1
144361  THEN 
144362 
144363    --
144364    XLA_AE_LINES_PKG.SetNewLine;
144365 
144366    p_balance_type_code          := l_balance_type_code;
144367    -- set the flag so later we will know whether the gain loss line needs to be created
144368    
144369    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
144370      p_actual_flag :='A';
144371    END IF;
144372 
144373    --
144374    -- bulk performance
144375    --
144376    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
144377                                       p_header_num   => 0); -- 4262811
144378    --
144379    -- set accounting line options
144380    --
144381    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
144382            p_natural_side_code          => 'D'
144383          , p_gain_or_loss_flag          => 'N'
144384          , p_gl_transfer_mode_code      => 'S'
144385          , p_acct_entry_type_code       => 'A'
144386          , p_switch_side_flag           => 'Y'
144387          , p_merge_duplicate_code       => 'N'
144388          );
144389    --
144390    l_acc_rev_natural_side_code := 'C';  -- 4262811
144391    -- 
144392    --
144393    -- set accounting line type info
144394    --
144395    xla_ae_lines_pkg.SetAcctLineType
144396       (p_component_type             => l_component_type
144397       ,p_event_type_code            => l_event_type_code
144398       ,p_line_definition_owner_code => l_line_definition_owner_code
144399       ,p_line_definition_code       => l_line_definition_code
144400       ,p_accounting_line_code       => l_component_code
144401       ,p_accounting_line_type_code  => l_component_type_code
144402       ,p_accounting_line_appl_id    => l_component_appl_id
144403       ,p_amb_context_code           => l_amb_context_code
144404       ,p_entity_code                => l_entity_code
144405       ,p_event_class_code           => l_event_class_code);
144406    --
144407    -- set accounting class
144408    --
144409    xla_ae_lines_pkg.SetAcctClass(
144410            p_accounting_class_code  => 'INVENTORY_VALUATION'
144411          , p_ae_header_id           => l_ae_header_id
144412          );
144413 
144414    --
144415    -- set rounding class
144416    --
144417    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
144418                       'INVENTORY_VALUATION';
144419 
144420    --
144421    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
144422    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
144423    --
144424    -- bulk performance
144425    --
144426    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
144427 
144428    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
144429       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
144430 
144431    -- 4955764
144432    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
144433       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
144434 
144435    -- 4458381 Public Sector Enh
144436    
144437    --
144438    -- set accounting attributes for the line type
144439    --
144440    l_entered_amt_idx := 3;
144441    l_accted_amt_idx  := 8;
144442    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
144443    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
144444    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
144445    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
144446    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
144447    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
144448    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
144449    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
144450    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
144451    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
144452    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
144453    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
144454    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
144455    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
144456    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
144457    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
144458    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
144459 
144460    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
144461    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
144462 
144463    ---------------------------------------------------------------------------------------------------------------
144464    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
144465    ---------------------------------------------------------------------------------------------------------------
144466    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
144467 
144468    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
144469    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
144470 
144471    IF xla_accounting_cache_pkg.GetValueChar
144472          (p_source_code         => 'LEDGER_CATEGORY_CODE'
144473          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
144474    AND l_bflow_method_code = 'PRIOR_ENTRY'
144475 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
144476    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
144477          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
144478        )
144479    THEN
144480          xla_ae_lines_pkg.BflowUpgEntry
144481            (p_business_method_code    => l_bflow_method_code
144482            ,p_business_class_code     => l_bflow_class_code
144483            ,p_balance_type            => l_balance_type_code);
144484    ELSE
144485       NULL;
144486 -- No business flow processing for business flow method of NONE.
144487    END IF;
144488 
144489    --
144490    -- call analytical criteria
144491    --
144492    
144493 
144494 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
144495 xla_ae_lines_pkg.SetAnalyticalCriteria(
144496    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
144497  , p_analytical_criterion_owner   => 'S'
144498  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
144499  , p_amb_context_code             => 'DEFAULT'
144500  , p_balancing_flag               => 'Y'
144501  
144502  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
144503  , p_analytical_detail_num_1     =>  NULL
144504  , p_analytical_detail_date_1    =>  NULL
144505 
144506  , p_ae_header_id                 => l_ae_header_id
144507 )
144508 ;
144509 --
144510 
144511    --
144512    -- call description
144513    --
144514    
144515 xla_ae_lines_pkg.SetLineDescription(
144516    p_ae_header_id => l_ae_header_id
144517   ,p_description  => Description_1 (
144518      p_application_id         => p_application_id
144519    , p_ae_header_id           => l_ae_header_id 
144520 , p_source_1 => p_source_1
144521 , p_source_2 => p_source_2
144522 , p_source_3 => p_source_3
144523 , p_source_4 => p_source_4
144524 , p_source_5 => p_source_5
144525    )
144526 );
144527 
144528 
144529    --
144530    -- call ADRs
144531    -- Bug 4922099
144532    --
144533    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
144534         (NVL(l_actual_upg_option, 'N') = 'O') OR
144535         (NVL(l_enc_upg_option, 'N') = 'O')
144536       )
144537    THEN
144538    NULL;
144539    --
144540    --
144541    
144542   l_ccid := AcctDerRule_28(
144543            p_application_id           => p_application_id
144544          , p_ae_header_id             => l_ae_header_id 
144545 , p_source_15 => p_source_15
144546 , p_source_41 => p_source_41
144547 , p_source_42 => p_source_42
144548 , p_source_43 => p_source_43
144549 , p_source_44 => p_source_44
144550 , p_source_45 => p_source_45
144551          , x_transaction_coa_id       => l_adr_transaction_coa_id
144552          , x_accounting_coa_id        => l_adr_accounting_coa_id
144553          , x_value_type_code          => l_adr_value_type_code
144554          , p_side                     => 'NA'
144555    );
144556 
144557    xla_ae_lines_pkg.set_ccid(
144558     p_code_combination_id          => l_ccid
144559   , p_value_type_code              => l_adr_value_type_code
144560   , p_transaction_coa_id           => l_adr_transaction_coa_id
144561   , p_accounting_coa_id            => l_adr_accounting_coa_id
144562   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
144563   , p_adr_type_code                => 'S'
144564   , p_component_type               => l_component_type
144565   , p_component_code               => l_component_code
144566   , p_component_type_code          => l_component_type_code
144567   , p_component_appl_id            => l_component_appl_id
144568   , p_amb_context_code             => l_amb_context_code
144569   , p_side                         => 'NA'
144570   );
144571 
144572 
144573    --
144574    --
144575    END IF;
144576    --
144577    -- Bug 4922099
144578    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
144579           (NVL(l_enc_upg_option, 'N') = 'O')
144580         ) AND
144581         (l_bflow_method_code = 'PRIOR_ENTRY')
144582       )
144583    THEN
144584       IF
144585       --
144586       1 = 2
144587       --
144588       THEN
144589       xla_accounting_err_pkg.build_message
144590                                     (p_appli_s_name            => 'XLA'
144591                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
144592                                     ,p_token_1                 => 'LINE_NUMBER'
144593                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
144594                                     ,p_token_2                 => 'LINE_TYPE_NAME'
144595                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
144596                                                                              l_component_type
144597                                                                             ,l_component_code
144598                                                                             ,l_component_type_code
144599                                                                             ,l_component_appl_id
144600                                                                             ,l_amb_context_code
144601                                                                             ,l_entity_code
144602                                                                             ,l_event_class_code
144603                                                                            )
144604                                     ,p_token_3                 => 'OWNER'
144605                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
144606                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
144607                                                                           ,p_lookup_code    => l_component_type_code
144608                                                                          )
144609                                     ,p_token_4                 => 'PRODUCT_NAME'
144610                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
144611                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
144612                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
144613                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
144614                                     ,p_ae_header_id            =>  NULL
144615                                        );
144616 
144617         IF (C_LEVEL_ERROR>= g_log_level) THEN
144618                  trace
144619                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
144620                       ,p_level    => C_LEVEL_ERROR
144621                       ,p_module   => l_log_module);
144622         END IF;
144623       END IF;
144624    END IF;
144625    --
144626    --
144627    ------------------------------------------------------------------------------------------------
144628    -- 4219869 Business Flow
144629    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
144630    -- Prior Entry.  Currently, the following code is always generated.
144631    ------------------------------------------------------------------------------------------------
144632    XLA_AE_LINES_PKG.ValidateCurrentLine;
144633 
144634    ------------------------------------------------------------------------------------
144635    -- 4219869 Business Flow
144636    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
144637    ------------------------------------------------------------------------------------
144638    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
144639 
144640    ----------------------------------------------------------------------------------
144641    -- 4219869 Business Flow
144642    -- Update journal entry status -- Need to generate this within IF <condition>
144643    ----------------------------------------------------------------------------------
144644    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
144645          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
144646          ,p_balance_type_code => l_balance_type_code
144647          );
144648 
144649    -------------------------------------------------------------------------------------------
144650    -- 4262811 - Generate the Accrual Reversal lines
144651    -------------------------------------------------------------------------------------------
144652    BEGIN
144653       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
144654                               (g_array_event(p_event_id).array_value_num('header_index'));
144655       IF l_acc_rev_flag IS NULL THEN
144656          l_acc_rev_flag := 'N';
144657       END IF;
144658    EXCEPTION
144659       WHEN OTHERS THEN
144660          l_acc_rev_flag := 'N';
144661    END;
144662    --
144663    IF (l_acc_rev_flag = 'Y') THEN
144664 
144665        -- 4645092  ------------------------------------------------------------------------------
144666        -- To allow MPA report to determine if it should generate report process
144667        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
144668        ------------------------------------------------------------------------------------------
144669 
144670        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
144671        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
144672    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
144673    -- call ADRs
144674    -- Bug 4922099
144675    --
144676    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
144677         (NVL(l_actual_upg_option, 'N') = 'O') OR
144678         (NVL(l_enc_upg_option, 'N') = 'O')
144679       )
144680    THEN
144681    NULL;
144682    --
144683    --
144684    
144685   l_ccid := AcctDerRule_28(
144686            p_application_id           => p_application_id
144687          , p_ae_header_id             => l_ae_header_id 
144688 , p_source_15 => p_source_15
144689 , p_source_41 => p_source_41
144690 , p_source_42 => p_source_42
144691 , p_source_43 => p_source_43
144692 , p_source_44 => p_source_44
144693 , p_source_45 => p_source_45
144694          , x_transaction_coa_id       => l_adr_transaction_coa_id
144695          , x_accounting_coa_id        => l_adr_accounting_coa_id
144696          , x_value_type_code          => l_adr_value_type_code
144697          , p_side                     => 'NA'
144698    );
144699 
144700    xla_ae_lines_pkg.set_ccid(
144701     p_code_combination_id          => l_ccid
144702   , p_value_type_code              => l_adr_value_type_code
144703   , p_transaction_coa_id           => l_adr_transaction_coa_id
144704   , p_accounting_coa_id            => l_adr_accounting_coa_id
144705   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
144706   , p_adr_type_code                => 'S'
144707   , p_component_type               => l_component_type
144708   , p_component_code               => l_component_code
144709   , p_component_type_code          => l_component_type_code
144710   , p_component_appl_id            => l_component_appl_id
144711   , p_amb_context_code             => l_amb_context_code
144712   , p_side                         => 'NA'
144713   );
144714 
144715 
144716    --
144717    --
144718    END IF;
144719 
144720        --
144721        -- Update the line information that should be overwritten
144722        --
144723        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
144724                                          p_header_num   => 1);
144725        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
144726 
144727        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
144728 
144729        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
144730           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
144731        END IF;
144732 
144733       --
144734       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
144735       --
144736       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
144737           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
144738       ELSE
144739           ---------------------------------------------------------------------------------------------------
144740           -- 4262811a Switch Sign
144741           ---------------------------------------------------------------------------------------------------
144742           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
144743           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
144744                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
144745           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
144746                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
144747           -- 5132302
144748           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
144749                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
144750 
144751       END IF;
144752 
144753       -- 4955764
144754       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
144755       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
144756 
144757 
144758       XLA_AE_LINES_PKG.ValidateCurrentLine;
144759       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
144760 
144761       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
144762                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
144763                ,p_balance_type_code => l_balance_type_code);
144764 
144765    END IF;
144766 
144767    -----------------------------------------------------------------------------------------
144768    -- 4262811 Multiperiod Accounting
144769    -----------------------------------------------------------------------------------------
144770      -- No MPA option is assigned.
144771 
144772 
144773 END IF;
144774 END IF;
144775 --
144776 
144777 --
144778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144779    trace
144780       (p_msg      => 'END of AcctLineType_272'
144781       ,p_level    => C_LEVEL_PROCEDURE
144782       ,p_module   => l_log_module);
144783 END IF;
144784 --
144785 EXCEPTION
144786   WHEN xla_exceptions_pkg.application_exception THEN
144787       RAISE;
144788   WHEN OTHERS THEN
144789        xla_exceptions_pkg.raise_message
144790            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_272');
144791 END AcctLineType_272;
144792 --
144793 
144794 ---------------------------------------
144795 --
144796 -- PRIVATE FUNCTION
144797 --         AcctLineType_273
144798 --
144799 ---------------------------------------
144800 PROCEDURE AcctLineType_273 (
144801   p_application_id        IN NUMBER
144802  ,p_event_id              IN NUMBER
144803  ,p_calculate_acctd_flag  IN VARCHAR2
144804  ,p_calculate_g_l_flag    IN VARCHAR2
144805  ,p_actual_flag           IN OUT VARCHAR2
144806  ,p_balance_type_code     OUT VARCHAR2
144807  ,p_gain_or_loss_ref      OUT VARCHAR2
144808  
144809 --TRANSACTION_ID
144810  , p_source_1            IN NUMBER
144811 --Item Concatenated Segments
144812  , p_source_2            IN VARCHAR2
144813 --Transaction Quantity
144814  , p_source_3            IN NUMBER
144815 --Transaction Unit of Measure Code
144816  , p_source_4            IN VARCHAR2
144817 --Inventory Transaction Type Description
144818  , p_source_5            IN VARCHAR2
144819 --Cost Element Name
144820  , p_source_15            IN NUMBER
144821 --Product Line Accounting Category Material Account
144822  , p_source_41            IN NUMBER
144823 --Product Line Accounting Category Material Overhead Account
144824  , p_source_42            IN NUMBER
144825 --Product Line Accounting Category Resource Account
144826  , p_source_43            IN NUMBER
144827 --Product Line Accounting Category Outside Processing Account
144828  , p_source_44            IN NUMBER
144829 --Product Line Accounting Category Overhead Account
144830  , p_source_45            IN NUMBER
144831 --DISTRIBUTION_IDENTIFIER
144832  , p_source_84            IN NUMBER
144833 --Distribution Type
144834  , p_source_85            IN VARCHAR2
144835  , p_source_85_meaning    IN VARCHAR2
144836 --Entered Currency Code
144837  , p_source_88            IN VARCHAR2
144838 --Entered Amount
144839  , p_source_91            IN NUMBER
144840 --Currency Conversion Date
144841  , p_source_92            IN DATE
144842 --Currency Conversion Rate
144843  , p_source_93            IN NUMBER
144844 --Currency Conversion Type
144845  , p_source_94            IN VARCHAR2
144846 --Accounted Amount
144847  , p_source_95            IN NUMBER
144848 --Accounting Line Type
144849  , p_source_97            IN NUMBER
144850 --Organization Code
144851  , p_source_108            IN VARCHAR2
144852 )
144853 IS
144854 
144855 l_component_type              VARCHAR2(80);
144856 l_component_code              VARCHAR2(30);
144857 l_component_type_code         VARCHAR2(1);
144858 l_component_appl_id           INTEGER;
144859 l_amb_context_code            VARCHAR2(30);
144860 l_entity_code                 VARCHAR2(30);
144861 l_event_class_code            VARCHAR2(30);
144862 l_ae_header_id                NUMBER;
144863 l_event_type_code             VARCHAR2(30);
144864 l_line_definition_code        VARCHAR2(30);
144865 l_line_definition_owner_code  VARCHAR2(1);
144866 --
144867 -- adr variables
144868 l_segment                     VARCHAR2(30);
144869 l_ccid                        NUMBER;
144870 l_adr_transaction_coa_id      NUMBER;
144871 l_adr_accounting_coa_id       NUMBER;
144872 l_adr_flexfield_segment_code  VARCHAR2(30);
144873 l_adr_flex_value_set_id       NUMBER;
144874 l_adr_value_type_code         VARCHAR2(30);
144875 l_adr_value_combination_id    NUMBER;
144876 l_adr_value_segment_code      VARCHAR2(30);
144877 
144878 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
144879 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
144880 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
144881 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
144882 
144883 -- 4262811 Variables ------------------------------------------------------------------------------------------
144884 l_entered_amt_idx             NUMBER;
144885 l_accted_amt_idx              NUMBER;
144886 l_acc_rev_flag                VARCHAR2(1);
144887 l_accrual_line_num            NUMBER;
144888 l_tmp_amt                     NUMBER;
144889 l_acc_rev_natural_side_code   VARCHAR2(1);
144890 
144891 l_num_entries                 NUMBER;
144892 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
144893 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
144894 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
144895 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
144896 l_recog_line_1                NUMBER;
144897 l_recog_line_2                NUMBER;
144898 
144899 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
144900 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
144901 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
144902 
144903 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
144904 
144905 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
144906 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
144907 
144908 ---------------------------------------------------------------------------------------------------------------
144909 
144910 
144911 --
144912 -- bulk performance
144913 --
144914 l_balance_type_code           VARCHAR2(1);
144915 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
144916 l_log_module                  VARCHAR2(240);
144917 
144918 --
144919 -- Upgrade strategy
144920 --
144921 l_actual_upg_option           VARCHAR2(1);
144922 l_enc_upg_option           VARCHAR2(1);
144923 
144924 --
144925 BEGIN
144926 --
144927 IF g_log_enabled THEN
144928       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_273';
144929 END IF;
144930 --
144931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144932 
144933       trace
144934          (p_msg      => 'BEGIN of AcctLineType_273'
144935          ,p_level    => C_LEVEL_PROCEDURE
144936          ,p_module   => l_log_module);
144937 
144938 END IF;
144939 --
144940 l_component_type             := 'AMB_JLT';
144941 l_component_code             := 'INVENTORY_VALUATION';
144942 l_component_type_code        := 'S';
144943 l_component_appl_id          :=  707;
144944 l_amb_context_code           := 'DEFAULT';
144945 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
144946 l_event_class_code           := 'WIP_MTL';
144947 l_event_type_code            := 'WIP_ASSEMBLY_COMPLETION';
144948 l_line_definition_owner_code := 'S';
144949 l_line_definition_code       := 'PI_WIP_ASSEMBLY_COMPLETION';
144950 --
144951 l_balance_type_code          := 'A';
144952 l_segment                     := NULL;
144953 l_ccid                        := NULL;
144954 l_adr_transaction_coa_id      := NULL;
144955 l_adr_accounting_coa_id       := NULL;
144956 l_adr_flexfield_segment_code  := NULL;
144957 l_adr_flex_value_set_id       := NULL;
144958 l_adr_value_type_code         := NULL;
144959 l_adr_value_combination_id    := NULL;
144960 l_adr_value_segment_code      := NULL;
144961 
144962 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
144963 l_bflow_class_code           := '';    -- 4219869 Business Flow
144964 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
144965 l_budgetary_control_flag     := 'N';
144966 
144967 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
144968 l_bflow_applied_to_amt       := NULL; -- 5132302
144969 l_entered_amt_idx            := NULL;          -- 4262811
144970 l_accted_amt_idx             := NULL;          -- 4262811
144971 l_acc_rev_flag               := NULL;          -- 4262811
144972 l_accrual_line_num           := NULL;          -- 4262811
144973 l_tmp_amt                    := NULL;          -- 4262811
144974 --
144975  
144976 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
144977     l_balance_type_code <> 'B' THEN
144978 IF NVL(p_source_97,9E125) =  1
144979  THEN 
144980 
144981    --
144982    XLA_AE_LINES_PKG.SetNewLine;
144983 
144984    p_balance_type_code          := l_balance_type_code;
144985    -- set the flag so later we will know whether the gain loss line needs to be created
144986    
144987    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
144988      p_actual_flag :='A';
144989    END IF;
144990 
144991    --
144992    -- bulk performance
144993    --
144994    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
144995                                       p_header_num   => 0); -- 4262811
144996    --
144997    -- set accounting line options
144998    --
144999    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
145000            p_natural_side_code          => 'D'
145001          , p_gain_or_loss_flag          => 'N'
145002          , p_gl_transfer_mode_code      => 'S'
145003          , p_acct_entry_type_code       => 'A'
145004          , p_switch_side_flag           => 'Y'
145005          , p_merge_duplicate_code       => 'N'
145006          );
145007    --
145008    l_acc_rev_natural_side_code := 'C';  -- 4262811
145009    -- 
145010    --
145011    -- set accounting line type info
145012    --
145013    xla_ae_lines_pkg.SetAcctLineType
145014       (p_component_type             => l_component_type
145015       ,p_event_type_code            => l_event_type_code
145016       ,p_line_definition_owner_code => l_line_definition_owner_code
145017       ,p_line_definition_code       => l_line_definition_code
145018       ,p_accounting_line_code       => l_component_code
145019       ,p_accounting_line_type_code  => l_component_type_code
145020       ,p_accounting_line_appl_id    => l_component_appl_id
145021       ,p_amb_context_code           => l_amb_context_code
145022       ,p_entity_code                => l_entity_code
145023       ,p_event_class_code           => l_event_class_code);
145024    --
145025    -- set accounting class
145026    --
145027    xla_ae_lines_pkg.SetAcctClass(
145028            p_accounting_class_code  => 'INVENTORY_VALUATION'
145029          , p_ae_header_id           => l_ae_header_id
145030          );
145031 
145032    --
145033    -- set rounding class
145034    --
145035    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
145036                       'INVENTORY_VALUATION';
145037 
145038    --
145039    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
145040    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
145041    --
145042    -- bulk performance
145043    --
145044    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
145045 
145046    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
145047       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
145048 
145049    -- 4955764
145050    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
145051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
145052 
145053    -- 4458381 Public Sector Enh
145054    
145055    --
145056    -- set accounting attributes for the line type
145057    --
145058    l_entered_amt_idx := 3;
145059    l_accted_amt_idx  := 8;
145060    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
145061    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
145062    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
145063    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
145064    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
145065    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
145066    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
145067    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
145068    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
145069    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
145070    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
145071    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
145072    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
145073    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
145074    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
145075    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
145076    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
145077 
145078    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
145079    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
145080 
145081    ---------------------------------------------------------------------------------------------------------------
145082    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
145083    ---------------------------------------------------------------------------------------------------------------
145084    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
145085 
145086    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
145087    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
145088 
145089    IF xla_accounting_cache_pkg.GetValueChar
145090          (p_source_code         => 'LEDGER_CATEGORY_CODE'
145091          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
145092    AND l_bflow_method_code = 'PRIOR_ENTRY'
145093 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
145094    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
145095          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
145096        )
145097    THEN
145098          xla_ae_lines_pkg.BflowUpgEntry
145099            (p_business_method_code    => l_bflow_method_code
145100            ,p_business_class_code     => l_bflow_class_code
145101            ,p_balance_type            => l_balance_type_code);
145102    ELSE
145103       NULL;
145104 -- No business flow processing for business flow method of NONE.
145105    END IF;
145106 
145107    --
145108    -- call analytical criteria
145109    --
145110    
145111 
145112 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
145113 xla_ae_lines_pkg.SetAnalyticalCriteria(
145114    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
145115  , p_analytical_criterion_owner   => 'S'
145116  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
145117  , p_amb_context_code             => 'DEFAULT'
145118  , p_balancing_flag               => 'Y'
145119  
145120  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
145121  , p_analytical_detail_num_1     =>  NULL
145122  , p_analytical_detail_date_1    =>  NULL
145123 
145124  , p_ae_header_id                 => l_ae_header_id
145125 )
145126 ;
145127 --
145128 
145129    --
145130    -- call description
145131    --
145132    
145133 xla_ae_lines_pkg.SetLineDescription(
145134    p_ae_header_id => l_ae_header_id
145135   ,p_description  => Description_1 (
145136      p_application_id         => p_application_id
145137    , p_ae_header_id           => l_ae_header_id 
145138 , p_source_1 => p_source_1
145139 , p_source_2 => p_source_2
145140 , p_source_3 => p_source_3
145141 , p_source_4 => p_source_4
145142 , p_source_5 => p_source_5
145143    )
145144 );
145145 
145146 
145147    --
145148    -- call ADRs
145149    -- Bug 4922099
145150    --
145151    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
145152         (NVL(l_actual_upg_option, 'N') = 'O') OR
145153         (NVL(l_enc_upg_option, 'N') = 'O')
145154       )
145155    THEN
145156    NULL;
145157    --
145158    --
145159    
145160   l_ccid := AcctDerRule_28(
145161            p_application_id           => p_application_id
145162          , p_ae_header_id             => l_ae_header_id 
145163 , p_source_15 => p_source_15
145164 , p_source_41 => p_source_41
145165 , p_source_42 => p_source_42
145166 , p_source_43 => p_source_43
145167 , p_source_44 => p_source_44
145168 , p_source_45 => p_source_45
145169          , x_transaction_coa_id       => l_adr_transaction_coa_id
145170          , x_accounting_coa_id        => l_adr_accounting_coa_id
145171          , x_value_type_code          => l_adr_value_type_code
145172          , p_side                     => 'NA'
145173    );
145174 
145175    xla_ae_lines_pkg.set_ccid(
145176     p_code_combination_id          => l_ccid
145177   , p_value_type_code              => l_adr_value_type_code
145178   , p_transaction_coa_id           => l_adr_transaction_coa_id
145179   , p_accounting_coa_id            => l_adr_accounting_coa_id
145180   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
145181   , p_adr_type_code                => 'S'
145182   , p_component_type               => l_component_type
145183   , p_component_code               => l_component_code
145184   , p_component_type_code          => l_component_type_code
145185   , p_component_appl_id            => l_component_appl_id
145186   , p_amb_context_code             => l_amb_context_code
145187   , p_side                         => 'NA'
145188   );
145189 
145190 
145191    --
145192    --
145193    END IF;
145194    --
145195    -- Bug 4922099
145196    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
145197           (NVL(l_enc_upg_option, 'N') = 'O')
145198         ) AND
145199         (l_bflow_method_code = 'PRIOR_ENTRY')
145200       )
145201    THEN
145202       IF
145203       --
145204       1 = 2
145205       --
145206       THEN
145207       xla_accounting_err_pkg.build_message
145208                                     (p_appli_s_name            => 'XLA'
145209                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
145210                                     ,p_token_1                 => 'LINE_NUMBER'
145211                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
145212                                     ,p_token_2                 => 'LINE_TYPE_NAME'
145213                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
145214                                                                              l_component_type
145215                                                                             ,l_component_code
145216                                                                             ,l_component_type_code
145217                                                                             ,l_component_appl_id
145218                                                                             ,l_amb_context_code
145219                                                                             ,l_entity_code
145220                                                                             ,l_event_class_code
145221                                                                            )
145222                                     ,p_token_3                 => 'OWNER'
145223                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
145224                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
145225                                                                           ,p_lookup_code    => l_component_type_code
145226                                                                          )
145227                                     ,p_token_4                 => 'PRODUCT_NAME'
145228                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
145229                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
145230                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
145231                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
145232                                     ,p_ae_header_id            =>  NULL
145233                                        );
145234 
145235         IF (C_LEVEL_ERROR>= g_log_level) THEN
145236                  trace
145237                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
145238                       ,p_level    => C_LEVEL_ERROR
145239                       ,p_module   => l_log_module);
145240         END IF;
145241       END IF;
145242    END IF;
145243    --
145244    --
145245    ------------------------------------------------------------------------------------------------
145246    -- 4219869 Business Flow
145247    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
145248    -- Prior Entry.  Currently, the following code is always generated.
145249    ------------------------------------------------------------------------------------------------
145250    XLA_AE_LINES_PKG.ValidateCurrentLine;
145251 
145252    ------------------------------------------------------------------------------------
145253    -- 4219869 Business Flow
145254    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
145255    ------------------------------------------------------------------------------------
145256    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
145257 
145258    ----------------------------------------------------------------------------------
145259    -- 4219869 Business Flow
145260    -- Update journal entry status -- Need to generate this within IF <condition>
145261    ----------------------------------------------------------------------------------
145262    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
145263          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
145264          ,p_balance_type_code => l_balance_type_code
145265          );
145266 
145267    -------------------------------------------------------------------------------------------
145268    -- 4262811 - Generate the Accrual Reversal lines
145269    -------------------------------------------------------------------------------------------
145270    BEGIN
145271       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
145272                               (g_array_event(p_event_id).array_value_num('header_index'));
145273       IF l_acc_rev_flag IS NULL THEN
145274          l_acc_rev_flag := 'N';
145275       END IF;
145276    EXCEPTION
145277       WHEN OTHERS THEN
145278          l_acc_rev_flag := 'N';
145279    END;
145280    --
145281    IF (l_acc_rev_flag = 'Y') THEN
145282 
145283        -- 4645092  ------------------------------------------------------------------------------
145284        -- To allow MPA report to determine if it should generate report process
145285        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
145286        ------------------------------------------------------------------------------------------
145287 
145288        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
145289        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
145290    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
145291    -- call ADRs
145292    -- Bug 4922099
145293    --
145294    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
145295         (NVL(l_actual_upg_option, 'N') = 'O') OR
145296         (NVL(l_enc_upg_option, 'N') = 'O')
145297       )
145298    THEN
145299    NULL;
145300    --
145301    --
145302    
145303   l_ccid := AcctDerRule_28(
145304            p_application_id           => p_application_id
145305          , p_ae_header_id             => l_ae_header_id 
145306 , p_source_15 => p_source_15
145307 , p_source_41 => p_source_41
145308 , p_source_42 => p_source_42
145309 , p_source_43 => p_source_43
145310 , p_source_44 => p_source_44
145311 , p_source_45 => p_source_45
145312          , x_transaction_coa_id       => l_adr_transaction_coa_id
145313          , x_accounting_coa_id        => l_adr_accounting_coa_id
145314          , x_value_type_code          => l_adr_value_type_code
145315          , p_side                     => 'NA'
145316    );
145317 
145318    xla_ae_lines_pkg.set_ccid(
145319     p_code_combination_id          => l_ccid
145320   , p_value_type_code              => l_adr_value_type_code
145321   , p_transaction_coa_id           => l_adr_transaction_coa_id
145322   , p_accounting_coa_id            => l_adr_accounting_coa_id
145323   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
145324   , p_adr_type_code                => 'S'
145325   , p_component_type               => l_component_type
145326   , p_component_code               => l_component_code
145327   , p_component_type_code          => l_component_type_code
145328   , p_component_appl_id            => l_component_appl_id
145329   , p_amb_context_code             => l_amb_context_code
145330   , p_side                         => 'NA'
145331   );
145332 
145333 
145334    --
145335    --
145336    END IF;
145337 
145338        --
145339        -- Update the line information that should be overwritten
145340        --
145341        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
145342                                          p_header_num   => 1);
145343        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
145344 
145345        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
145346 
145347        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
145348           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
145349        END IF;
145350 
145351       --
145352       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
145353       --
145354       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
145355           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
145356       ELSE
145357           ---------------------------------------------------------------------------------------------------
145358           -- 4262811a Switch Sign
145359           ---------------------------------------------------------------------------------------------------
145360           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
145361           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
145362                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
145363           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
145364                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
145365           -- 5132302
145366           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
145367                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
145368 
145369       END IF;
145370 
145371       -- 4955764
145372       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
145373       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
145374 
145375 
145376       XLA_AE_LINES_PKG.ValidateCurrentLine;
145377       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
145378 
145379       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
145380                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
145381                ,p_balance_type_code => l_balance_type_code);
145382 
145383    END IF;
145384 
145385    -----------------------------------------------------------------------------------------
145386    -- 4262811 Multiperiod Accounting
145387    -----------------------------------------------------------------------------------------
145388      -- No MPA option is assigned.
145389 
145390 
145391 END IF;
145392 END IF;
145393 --
145394 
145395 --
145396 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145397    trace
145398       (p_msg      => 'END of AcctLineType_273'
145399       ,p_level    => C_LEVEL_PROCEDURE
145400       ,p_module   => l_log_module);
145401 END IF;
145402 --
145403 EXCEPTION
145404   WHEN xla_exceptions_pkg.application_exception THEN
145405       RAISE;
145406   WHEN OTHERS THEN
145407        xla_exceptions_pkg.raise_message
145408            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_273');
145409 END AcctLineType_273;
145410 --
145411 
145412 ---------------------------------------
145413 --
145414 -- PRIVATE FUNCTION
145415 --         AcctLineType_274
145416 --
145417 ---------------------------------------
145418 PROCEDURE AcctLineType_274 (
145419   p_application_id        IN NUMBER
145420  ,p_event_id              IN NUMBER
145421  ,p_calculate_acctd_flag  IN VARCHAR2
145422  ,p_calculate_g_l_flag    IN VARCHAR2
145423  ,p_actual_flag           IN OUT VARCHAR2
145424  ,p_balance_type_code     OUT VARCHAR2
145425  ,p_gain_or_loss_ref      OUT VARCHAR2
145426  
145427 --TRANSACTION_ID
145428  , p_source_1            IN NUMBER
145429 --Item Concatenated Segments
145430  , p_source_2            IN VARCHAR2
145431 --Transaction Quantity
145432  , p_source_3            IN NUMBER
145433 --Transaction Unit of Measure Code
145434  , p_source_4            IN VARCHAR2
145435 --Inventory Transaction Type Description
145436  , p_source_5            IN VARCHAR2
145437 --Cost Element Name
145438  , p_source_15            IN NUMBER
145439 --Product Line Accounting Category Material Account
145440  , p_source_41            IN NUMBER
145441 --Product Line Accounting Category Material Overhead Account
145442  , p_source_42            IN NUMBER
145443 --Product Line Accounting Category Resource Account
145444  , p_source_43            IN NUMBER
145445 --Product Line Accounting Category Outside Processing Account
145446  , p_source_44            IN NUMBER
145447 --Product Line Accounting Category Overhead Account
145448  , p_source_45            IN NUMBER
145449 --DISTRIBUTION_IDENTIFIER
145450  , p_source_84            IN NUMBER
145451 --Distribution Type
145452  , p_source_85            IN VARCHAR2
145453  , p_source_85_meaning    IN VARCHAR2
145454 --Entered Currency Code
145455  , p_source_88            IN VARCHAR2
145456 --Entered Amount
145457  , p_source_91            IN NUMBER
145458 --Currency Conversion Date
145459  , p_source_92            IN DATE
145460 --Currency Conversion Rate
145461  , p_source_93            IN NUMBER
145462 --Currency Conversion Type
145463  , p_source_94            IN VARCHAR2
145464 --Accounted Amount
145465  , p_source_95            IN NUMBER
145466 --Accounting Line Type
145467  , p_source_97            IN NUMBER
145468 --Organization Code
145469  , p_source_108            IN VARCHAR2
145470 )
145471 IS
145472 
145473 l_component_type              VARCHAR2(80);
145474 l_component_code              VARCHAR2(30);
145475 l_component_type_code         VARCHAR2(1);
145476 l_component_appl_id           INTEGER;
145477 l_amb_context_code            VARCHAR2(30);
145478 l_entity_code                 VARCHAR2(30);
145479 l_event_class_code            VARCHAR2(30);
145480 l_ae_header_id                NUMBER;
145481 l_event_type_code             VARCHAR2(30);
145482 l_line_definition_code        VARCHAR2(30);
145483 l_line_definition_owner_code  VARCHAR2(1);
145484 --
145485 -- adr variables
145486 l_segment                     VARCHAR2(30);
145487 l_ccid                        NUMBER;
145488 l_adr_transaction_coa_id      NUMBER;
145489 l_adr_accounting_coa_id       NUMBER;
145490 l_adr_flexfield_segment_code  VARCHAR2(30);
145491 l_adr_flex_value_set_id       NUMBER;
145492 l_adr_value_type_code         VARCHAR2(30);
145493 l_adr_value_combination_id    NUMBER;
145494 l_adr_value_segment_code      VARCHAR2(30);
145495 
145496 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
145497 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
145498 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
145499 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
145500 
145501 -- 4262811 Variables ------------------------------------------------------------------------------------------
145502 l_entered_amt_idx             NUMBER;
145503 l_accted_amt_idx              NUMBER;
145504 l_acc_rev_flag                VARCHAR2(1);
145505 l_accrual_line_num            NUMBER;
145506 l_tmp_amt                     NUMBER;
145507 l_acc_rev_natural_side_code   VARCHAR2(1);
145508 
145509 l_num_entries                 NUMBER;
145510 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
145511 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
145512 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
145513 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
145514 l_recog_line_1                NUMBER;
145515 l_recog_line_2                NUMBER;
145516 
145517 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
145518 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
145519 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
145520 
145521 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
145522 
145523 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
145524 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
145525 
145526 ---------------------------------------------------------------------------------------------------------------
145527 
145528 
145529 --
145530 -- bulk performance
145531 --
145532 l_balance_type_code           VARCHAR2(1);
145533 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
145534 l_log_module                  VARCHAR2(240);
145535 
145536 --
145537 -- Upgrade strategy
145538 --
145539 l_actual_upg_option           VARCHAR2(1);
145540 l_enc_upg_option           VARCHAR2(1);
145541 
145542 --
145543 BEGIN
145544 --
145545 IF g_log_enabled THEN
145546       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_274';
145547 END IF;
145548 --
145549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145550 
145551       trace
145552          (p_msg      => 'BEGIN of AcctLineType_274'
145553          ,p_level    => C_LEVEL_PROCEDURE
145554          ,p_module   => l_log_module);
145555 
145556 END IF;
145557 --
145558 l_component_type             := 'AMB_JLT';
145559 l_component_code             := 'INVENTORY_VALUATION';
145560 l_component_type_code        := 'S';
145561 l_component_appl_id          :=  707;
145562 l_amb_context_code           := 'DEFAULT';
145563 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
145564 l_event_class_code           := 'WIP_MTL';
145565 l_event_type_code            := 'WIP_NEG_COMP_ISSUE';
145566 l_line_definition_owner_code := 'S';
145567 l_line_definition_code       := 'PI_WIP_NEG_COMP_ISSUE';
145568 --
145569 l_balance_type_code          := 'A';
145570 l_segment                     := NULL;
145571 l_ccid                        := NULL;
145572 l_adr_transaction_coa_id      := NULL;
145573 l_adr_accounting_coa_id       := NULL;
145574 l_adr_flexfield_segment_code  := NULL;
145575 l_adr_flex_value_set_id       := NULL;
145576 l_adr_value_type_code         := NULL;
145577 l_adr_value_combination_id    := NULL;
145578 l_adr_value_segment_code      := NULL;
145579 
145580 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
145581 l_bflow_class_code           := '';    -- 4219869 Business Flow
145582 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
145583 l_budgetary_control_flag     := 'N';
145584 
145585 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
145586 l_bflow_applied_to_amt       := NULL; -- 5132302
145587 l_entered_amt_idx            := NULL;          -- 4262811
145588 l_accted_amt_idx             := NULL;          -- 4262811
145589 l_acc_rev_flag               := NULL;          -- 4262811
145590 l_accrual_line_num           := NULL;          -- 4262811
145591 l_tmp_amt                    := NULL;          -- 4262811
145592 --
145593  
145594 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
145595     l_balance_type_code <> 'B' THEN
145596 IF NVL(p_source_97,9E125) =  1
145597  THEN 
145598 
145599    --
145600    XLA_AE_LINES_PKG.SetNewLine;
145601 
145602    p_balance_type_code          := l_balance_type_code;
145603    -- set the flag so later we will know whether the gain loss line needs to be created
145604    
145605    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
145606      p_actual_flag :='A';
145607    END IF;
145608 
145609    --
145610    -- bulk performance
145611    --
145612    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
145613                                       p_header_num   => 0); -- 4262811
145614    --
145615    -- set accounting line options
145616    --
145617    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
145618            p_natural_side_code          => 'D'
145619          , p_gain_or_loss_flag          => 'N'
145620          , p_gl_transfer_mode_code      => 'S'
145621          , p_acct_entry_type_code       => 'A'
145622          , p_switch_side_flag           => 'Y'
145623          , p_merge_duplicate_code       => 'N'
145624          );
145625    --
145626    l_acc_rev_natural_side_code := 'C';  -- 4262811
145627    -- 
145628    --
145629    -- set accounting line type info
145630    --
145631    xla_ae_lines_pkg.SetAcctLineType
145632       (p_component_type             => l_component_type
145633       ,p_event_type_code            => l_event_type_code
145634       ,p_line_definition_owner_code => l_line_definition_owner_code
145635       ,p_line_definition_code       => l_line_definition_code
145636       ,p_accounting_line_code       => l_component_code
145637       ,p_accounting_line_type_code  => l_component_type_code
145638       ,p_accounting_line_appl_id    => l_component_appl_id
145639       ,p_amb_context_code           => l_amb_context_code
145640       ,p_entity_code                => l_entity_code
145641       ,p_event_class_code           => l_event_class_code);
145642    --
145643    -- set accounting class
145644    --
145645    xla_ae_lines_pkg.SetAcctClass(
145646            p_accounting_class_code  => 'INVENTORY_VALUATION'
145647          , p_ae_header_id           => l_ae_header_id
145648          );
145649 
145650    --
145651    -- set rounding class
145652    --
145653    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
145654                       'INVENTORY_VALUATION';
145655 
145656    --
145657    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
145658    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
145659    --
145660    -- bulk performance
145661    --
145662    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
145663 
145664    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
145665       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
145666 
145667    -- 4955764
145668    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
145669       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
145670 
145671    -- 4458381 Public Sector Enh
145672    
145673    --
145674    -- set accounting attributes for the line type
145675    --
145676    l_entered_amt_idx := 3;
145677    l_accted_amt_idx  := 8;
145678    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
145679    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
145680    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
145681    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
145682    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
145683    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
145684    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
145685    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
145686    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
145687    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
145688    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
145689    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
145690    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
145691    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
145692    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
145693    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
145694    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
145695 
145696    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
145697    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
145698 
145699    ---------------------------------------------------------------------------------------------------------------
145700    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
145701    ---------------------------------------------------------------------------------------------------------------
145702    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
145703 
145704    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
145705    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
145706 
145707    IF xla_accounting_cache_pkg.GetValueChar
145708          (p_source_code         => 'LEDGER_CATEGORY_CODE'
145709          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
145710    AND l_bflow_method_code = 'PRIOR_ENTRY'
145711 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
145712    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
145713          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
145714        )
145715    THEN
145716          xla_ae_lines_pkg.BflowUpgEntry
145717            (p_business_method_code    => l_bflow_method_code
145718            ,p_business_class_code     => l_bflow_class_code
145719            ,p_balance_type            => l_balance_type_code);
145720    ELSE
145721       NULL;
145722 -- No business flow processing for business flow method of NONE.
145723    END IF;
145724 
145725    --
145726    -- call analytical criteria
145727    --
145728    
145729 
145730 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
145731 xla_ae_lines_pkg.SetAnalyticalCriteria(
145732    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
145733  , p_analytical_criterion_owner   => 'S'
145734  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
145735  , p_amb_context_code             => 'DEFAULT'
145736  , p_balancing_flag               => 'Y'
145737  
145738  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
145739  , p_analytical_detail_num_1     =>  NULL
145740  , p_analytical_detail_date_1    =>  NULL
145741 
145742  , p_ae_header_id                 => l_ae_header_id
145743 )
145744 ;
145745 --
145746 
145747    --
145748    -- call description
145749    --
145750    
145751 xla_ae_lines_pkg.SetLineDescription(
145752    p_ae_header_id => l_ae_header_id
145753   ,p_description  => Description_1 (
145754      p_application_id         => p_application_id
145755    , p_ae_header_id           => l_ae_header_id 
145756 , p_source_1 => p_source_1
145757 , p_source_2 => p_source_2
145758 , p_source_3 => p_source_3
145759 , p_source_4 => p_source_4
145760 , p_source_5 => p_source_5
145761    )
145762 );
145763 
145764 
145765    --
145766    -- call ADRs
145767    -- Bug 4922099
145768    --
145769    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
145770         (NVL(l_actual_upg_option, 'N') = 'O') OR
145771         (NVL(l_enc_upg_option, 'N') = 'O')
145772       )
145773    THEN
145774    NULL;
145775    --
145776    --
145777    
145778   l_ccid := AcctDerRule_28(
145779            p_application_id           => p_application_id
145780          , p_ae_header_id             => l_ae_header_id 
145781 , p_source_15 => p_source_15
145782 , p_source_41 => p_source_41
145783 , p_source_42 => p_source_42
145784 , p_source_43 => p_source_43
145785 , p_source_44 => p_source_44
145786 , p_source_45 => p_source_45
145787          , x_transaction_coa_id       => l_adr_transaction_coa_id
145788          , x_accounting_coa_id        => l_adr_accounting_coa_id
145789          , x_value_type_code          => l_adr_value_type_code
145790          , p_side                     => 'NA'
145791    );
145792 
145793    xla_ae_lines_pkg.set_ccid(
145794     p_code_combination_id          => l_ccid
145795   , p_value_type_code              => l_adr_value_type_code
145796   , p_transaction_coa_id           => l_adr_transaction_coa_id
145797   , p_accounting_coa_id            => l_adr_accounting_coa_id
145798   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
145799   , p_adr_type_code                => 'S'
145800   , p_component_type               => l_component_type
145801   , p_component_code               => l_component_code
145802   , p_component_type_code          => l_component_type_code
145803   , p_component_appl_id            => l_component_appl_id
145804   , p_amb_context_code             => l_amb_context_code
145805   , p_side                         => 'NA'
145806   );
145807 
145808 
145809    --
145810    --
145811    END IF;
145812    --
145813    -- Bug 4922099
145814    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
145815           (NVL(l_enc_upg_option, 'N') = 'O')
145816         ) AND
145817         (l_bflow_method_code = 'PRIOR_ENTRY')
145818       )
145819    THEN
145820       IF
145821       --
145822       1 = 2
145823       --
145824       THEN
145825       xla_accounting_err_pkg.build_message
145826                                     (p_appli_s_name            => 'XLA'
145827                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
145828                                     ,p_token_1                 => 'LINE_NUMBER'
145829                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
145830                                     ,p_token_2                 => 'LINE_TYPE_NAME'
145831                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
145832                                                                              l_component_type
145833                                                                             ,l_component_code
145834                                                                             ,l_component_type_code
145835                                                                             ,l_component_appl_id
145836                                                                             ,l_amb_context_code
145837                                                                             ,l_entity_code
145838                                                                             ,l_event_class_code
145839                                                                            )
145840                                     ,p_token_3                 => 'OWNER'
145841                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
145842                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
145843                                                                           ,p_lookup_code    => l_component_type_code
145844                                                                          )
145845                                     ,p_token_4                 => 'PRODUCT_NAME'
145846                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
145847                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
145848                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
145849                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
145850                                     ,p_ae_header_id            =>  NULL
145851                                        );
145852 
145853         IF (C_LEVEL_ERROR>= g_log_level) THEN
145854                  trace
145855                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
145856                       ,p_level    => C_LEVEL_ERROR
145857                       ,p_module   => l_log_module);
145858         END IF;
145859       END IF;
145860    END IF;
145861    --
145862    --
145863    ------------------------------------------------------------------------------------------------
145864    -- 4219869 Business Flow
145865    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
145866    -- Prior Entry.  Currently, the following code is always generated.
145867    ------------------------------------------------------------------------------------------------
145868    XLA_AE_LINES_PKG.ValidateCurrentLine;
145869 
145870    ------------------------------------------------------------------------------------
145871    -- 4219869 Business Flow
145872    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
145873    ------------------------------------------------------------------------------------
145874    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
145875 
145876    ----------------------------------------------------------------------------------
145877    -- 4219869 Business Flow
145878    -- Update journal entry status -- Need to generate this within IF <condition>
145879    ----------------------------------------------------------------------------------
145880    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
145881          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
145882          ,p_balance_type_code => l_balance_type_code
145883          );
145884 
145885    -------------------------------------------------------------------------------------------
145886    -- 4262811 - Generate the Accrual Reversal lines
145887    -------------------------------------------------------------------------------------------
145888    BEGIN
145889       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
145890                               (g_array_event(p_event_id).array_value_num('header_index'));
145891       IF l_acc_rev_flag IS NULL THEN
145892          l_acc_rev_flag := 'N';
145893       END IF;
145894    EXCEPTION
145895       WHEN OTHERS THEN
145896          l_acc_rev_flag := 'N';
145897    END;
145898    --
145899    IF (l_acc_rev_flag = 'Y') THEN
145900 
145901        -- 4645092  ------------------------------------------------------------------------------
145902        -- To allow MPA report to determine if it should generate report process
145903        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
145904        ------------------------------------------------------------------------------------------
145905 
145906        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
145907        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
145908    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
145909    -- call ADRs
145910    -- Bug 4922099
145911    --
145912    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
145913         (NVL(l_actual_upg_option, 'N') = 'O') OR
145914         (NVL(l_enc_upg_option, 'N') = 'O')
145915       )
145916    THEN
145917    NULL;
145918    --
145919    --
145920    
145921   l_ccid := AcctDerRule_28(
145922            p_application_id           => p_application_id
145923          , p_ae_header_id             => l_ae_header_id 
145924 , p_source_15 => p_source_15
145925 , p_source_41 => p_source_41
145926 , p_source_42 => p_source_42
145927 , p_source_43 => p_source_43
145928 , p_source_44 => p_source_44
145929 , p_source_45 => p_source_45
145930          , x_transaction_coa_id       => l_adr_transaction_coa_id
145931          , x_accounting_coa_id        => l_adr_accounting_coa_id
145932          , x_value_type_code          => l_adr_value_type_code
145933          , p_side                     => 'NA'
145934    );
145935 
145936    xla_ae_lines_pkg.set_ccid(
145937     p_code_combination_id          => l_ccid
145938   , p_value_type_code              => l_adr_value_type_code
145939   , p_transaction_coa_id           => l_adr_transaction_coa_id
145940   , p_accounting_coa_id            => l_adr_accounting_coa_id
145941   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
145942   , p_adr_type_code                => 'S'
145943   , p_component_type               => l_component_type
145944   , p_component_code               => l_component_code
145945   , p_component_type_code          => l_component_type_code
145946   , p_component_appl_id            => l_component_appl_id
145947   , p_amb_context_code             => l_amb_context_code
145948   , p_side                         => 'NA'
145949   );
145950 
145951 
145952    --
145953    --
145954    END IF;
145955 
145956        --
145957        -- Update the line information that should be overwritten
145958        --
145959        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
145960                                          p_header_num   => 1);
145961        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
145962 
145963        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
145964 
145965        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
145966           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
145967        END IF;
145968 
145969       --
145970       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
145971       --
145972       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
145973           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
145974       ELSE
145975           ---------------------------------------------------------------------------------------------------
145976           -- 4262811a Switch Sign
145977           ---------------------------------------------------------------------------------------------------
145978           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
145979           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
145980                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
145981           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
145982                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
145983           -- 5132302
145984           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
145985                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
145986 
145987       END IF;
145988 
145989       -- 4955764
145990       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
145991       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
145992 
145993 
145994       XLA_AE_LINES_PKG.ValidateCurrentLine;
145995       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
145996 
145997       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
145998                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
145999                ,p_balance_type_code => l_balance_type_code);
146000 
146001    END IF;
146002 
146003    -----------------------------------------------------------------------------------------
146004    -- 4262811 Multiperiod Accounting
146005    -----------------------------------------------------------------------------------------
146006      -- No MPA option is assigned.
146007 
146008 
146009 END IF;
146010 END IF;
146011 --
146012 
146013 --
146014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146015    trace
146016       (p_msg      => 'END of AcctLineType_274'
146017       ,p_level    => C_LEVEL_PROCEDURE
146018       ,p_module   => l_log_module);
146019 END IF;
146020 --
146021 EXCEPTION
146022   WHEN xla_exceptions_pkg.application_exception THEN
146023       RAISE;
146024   WHEN OTHERS THEN
146025        xla_exceptions_pkg.raise_message
146026            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_274');
146027 END AcctLineType_274;
146028 --
146029 
146030 ---------------------------------------
146031 --
146032 -- PRIVATE FUNCTION
146033 --         AcctLineType_275
146034 --
146035 ---------------------------------------
146036 PROCEDURE AcctLineType_275 (
146037   p_application_id        IN NUMBER
146038  ,p_event_id              IN NUMBER
146039  ,p_calculate_acctd_flag  IN VARCHAR2
146040  ,p_calculate_g_l_flag    IN VARCHAR2
146041  ,p_actual_flag           IN OUT VARCHAR2
146042  ,p_balance_type_code     OUT VARCHAR2
146043  ,p_gain_or_loss_ref      OUT VARCHAR2
146044  
146045 --TRANSACTION_ID
146046  , p_source_1            IN NUMBER
146047 --Item Concatenated Segments
146048  , p_source_2            IN VARCHAR2
146049 --Transaction Quantity
146050  , p_source_3            IN NUMBER
146051 --Transaction Unit of Measure Code
146052  , p_source_4            IN VARCHAR2
146053 --Inventory Transaction Type Description
146054  , p_source_5            IN VARCHAR2
146055 --Cost Element Name
146056  , p_source_15            IN NUMBER
146057 --Product Line Accounting Category Material Account
146058  , p_source_41            IN NUMBER
146059 --Product Line Accounting Category Material Overhead Account
146060  , p_source_42            IN NUMBER
146061 --Product Line Accounting Category Resource Account
146062  , p_source_43            IN NUMBER
146063 --Product Line Accounting Category Outside Processing Account
146064  , p_source_44            IN NUMBER
146065 --Product Line Accounting Category Overhead Account
146066  , p_source_45            IN NUMBER
146067 --Applied to Application ID
146068  , p_source_79            IN NUMBER
146069 --Applied to Distribution Link Type
146070  , p_source_80            IN VARCHAR2
146071 --Applied to Entity Code
146072  , p_source_81            IN VARCHAR2
146073 --DISTRIBUTION_IDENTIFIER
146074  , p_source_84            IN NUMBER
146075 --Distribution Type
146076  , p_source_85            IN VARCHAR2
146077  , p_source_85_meaning    IN VARCHAR2
146078 --Encumbrance Reversal Amount Entered
146079  , p_source_87            IN NUMBER
146080 --Entered Currency Code
146081  , p_source_88            IN VARCHAR2
146082 --Transaction Encumbrance Reversal Amount
146083  , p_source_89            IN NUMBER
146084 --Entered Amount
146085  , p_source_91            IN NUMBER
146086 --Currency Conversion Date
146087  , p_source_92            IN DATE
146088 --Currency Conversion Rate
146089  , p_source_93            IN NUMBER
146090 --Currency Conversion Type
146091  , p_source_94            IN VARCHAR2
146092 --Accounted Amount
146093  , p_source_95            IN NUMBER
146094 --Accounting Line Type
146095  , p_source_97            IN NUMBER
146096 --Costing Encumbrance Upgrade Option
146097  , p_source_100            IN VARCHAR2
146098 --TXN_PO_DISTRIBUTION_ID
146099  , p_source_101            IN NUMBER
146100 --TXN_PO_HEADER_ID
146101  , p_source_102            IN NUMBER
146102 --Requisition Budget Account
146103  , p_source_103            IN NUMBER
146104 --Requisition Encumbrance Type Identifier
146105  , p_source_104            IN NUMBER
146106 --Organization Code
146107  , p_source_108            IN VARCHAR2
146108 )
146109 IS
146110 
146111 l_component_type              VARCHAR2(80);
146112 l_component_code              VARCHAR2(30);
146113 l_component_type_code         VARCHAR2(1);
146114 l_component_appl_id           INTEGER;
146115 l_amb_context_code            VARCHAR2(30);
146116 l_entity_code                 VARCHAR2(30);
146117 l_event_class_code            VARCHAR2(30);
146118 l_ae_header_id                NUMBER;
146119 l_event_type_code             VARCHAR2(30);
146120 l_line_definition_code        VARCHAR2(30);
146121 l_line_definition_owner_code  VARCHAR2(1);
146122 --
146123 -- adr variables
146124 l_segment                     VARCHAR2(30);
146125 l_ccid                        NUMBER;
146126 l_adr_transaction_coa_id      NUMBER;
146127 l_adr_accounting_coa_id       NUMBER;
146128 l_adr_flexfield_segment_code  VARCHAR2(30);
146129 l_adr_flex_value_set_id       NUMBER;
146130 l_adr_value_type_code         VARCHAR2(30);
146131 l_adr_value_combination_id    NUMBER;
146132 l_adr_value_segment_code      VARCHAR2(30);
146133 
146134 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
146135 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
146136 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
146137 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
146138 
146139 -- 4262811 Variables ------------------------------------------------------------------------------------------
146140 l_entered_amt_idx             NUMBER;
146141 l_accted_amt_idx              NUMBER;
146142 l_acc_rev_flag                VARCHAR2(1);
146143 l_accrual_line_num            NUMBER;
146144 l_tmp_amt                     NUMBER;
146145 l_acc_rev_natural_side_code   VARCHAR2(1);
146146 
146147 l_num_entries                 NUMBER;
146148 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
146149 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
146150 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
146151 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
146152 l_recog_line_1                NUMBER;
146153 l_recog_line_2                NUMBER;
146154 
146155 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
146156 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
146157 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
146158 
146159 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
146160 
146161 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
146162 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
146163 
146164 ---------------------------------------------------------------------------------------------------------------
146165 
146166 
146167 --
146168 -- bulk performance
146169 --
146170 l_balance_type_code           VARCHAR2(1);
146171 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
146172 l_log_module                  VARCHAR2(240);
146173 
146174 --
146175 -- Upgrade strategy
146176 --
146177 l_actual_upg_option           VARCHAR2(1);
146178 l_enc_upg_option           VARCHAR2(1);
146179 
146180 --
146181 BEGIN
146182 --
146183 IF g_log_enabled THEN
146184       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_275';
146185 END IF;
146186 --
146187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146188 
146189       trace
146190          (p_msg      => 'BEGIN of AcctLineType_275'
146191          ,p_level    => C_LEVEL_PROCEDURE
146192          ,p_module   => l_log_module);
146193 
146194 END IF;
146195 --
146196 l_component_type             := 'AMB_JLT';
146197 l_component_code             := 'INVENTORY_VALUATION';
146198 l_component_type_code        := 'S';
146199 l_component_appl_id          :=  707;
146200 l_amb_context_code           := 'DEFAULT';
146201 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
146202 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
146203 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
146204 l_line_definition_owner_code := 'S';
146205 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
146206 --
146207 l_balance_type_code          := 'A';
146208 l_segment                     := NULL;
146209 l_ccid                        := NULL;
146210 l_adr_transaction_coa_id      := NULL;
146211 l_adr_accounting_coa_id       := NULL;
146212 l_adr_flexfield_segment_code  := NULL;
146213 l_adr_flex_value_set_id       := NULL;
146214 l_adr_value_type_code         := NULL;
146215 l_adr_value_combination_id    := NULL;
146216 l_adr_value_segment_code      := NULL;
146217 
146218 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
146219 l_bflow_class_code           := '';    -- 4219869 Business Flow
146220 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
146221 l_budgetary_control_flag     := 'N';
146222 
146223 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
146224 l_bflow_applied_to_amt       := NULL; -- 5132302
146225 l_entered_amt_idx            := NULL;          -- 4262811
146226 l_accted_amt_idx             := NULL;          -- 4262811
146227 l_acc_rev_flag               := NULL;          -- 4262811
146228 l_accrual_line_num           := NULL;          -- 4262811
146229 l_tmp_amt                    := NULL;          -- 4262811
146230 --
146231  
146232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
146233     l_balance_type_code <> 'B' THEN
146234 IF NVL(p_source_97,9E125) =  1
146235  THEN 
146236 
146237    --
146238    XLA_AE_LINES_PKG.SetNewLine;
146239 
146240    p_balance_type_code          := l_balance_type_code;
146241    -- set the flag so later we will know whether the gain loss line needs to be created
146242    
146243    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
146244      p_actual_flag :='A';
146245    END IF;
146246 
146247    --
146248    -- bulk performance
146249    --
146250    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
146251                                       p_header_num   => 0); -- 4262811
146252    --
146253    -- set accounting line options
146254    --
146255    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
146256            p_natural_side_code          => 'D'
146257          , p_gain_or_loss_flag          => 'N'
146258          , p_gl_transfer_mode_code      => 'S'
146259          , p_acct_entry_type_code       => 'A'
146260          , p_switch_side_flag           => 'Y'
146261          , p_merge_duplicate_code       => 'N'
146262          );
146263    --
146264    l_acc_rev_natural_side_code := 'C';  -- 4262811
146265    -- 
146266    --
146267    -- set accounting line type info
146268    --
146269    xla_ae_lines_pkg.SetAcctLineType
146270       (p_component_type             => l_component_type
146271       ,p_event_type_code            => l_event_type_code
146272       ,p_line_definition_owner_code => l_line_definition_owner_code
146273       ,p_line_definition_code       => l_line_definition_code
146274       ,p_accounting_line_code       => l_component_code
146275       ,p_accounting_line_type_code  => l_component_type_code
146276       ,p_accounting_line_appl_id    => l_component_appl_id
146277       ,p_amb_context_code           => l_amb_context_code
146278       ,p_entity_code                => l_entity_code
146279       ,p_event_class_code           => l_event_class_code);
146280    --
146281    -- set accounting class
146282    --
146283    xla_ae_lines_pkg.SetAcctClass(
146284            p_accounting_class_code  => 'INVENTORY_VALUATION'
146285          , p_ae_header_id           => l_ae_header_id
146286          );
146287 
146288    --
146289    -- set rounding class
146290    --
146291    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
146292                       'INVENTORY_VALUATION';
146293 
146294    --
146295    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
146296    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
146297    --
146298    -- bulk performance
146299    --
146300    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
146301 
146302    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
146303       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
146304 
146305    -- 4955764
146306    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
146307       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
146308 
146309    -- 4458381 Public Sector Enh
146310    
146311    --
146312    -- set accounting attributes for the line type
146313    --
146314    l_entered_amt_idx := 17;
146315    l_accted_amt_idx  := 22;
146316    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
146317    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
146318    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
146319    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
146320    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
146321    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
146322    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
146323    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
146324    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
146325    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
146326    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
146327    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
146328    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
146329    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
146330    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
146331    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
146332    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
146333    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
146334    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
146335    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
146336    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
146337    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
146338    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
146339    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
146340    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
146341    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
146342    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
146343    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
146344    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
146345    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
146346    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
146347    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
146348    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
146349    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
146350    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
146351    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
146352    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
146353    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
146354    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
146355    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
146356    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
146357    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
146358    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
146359    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
146360    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
146361    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
146362    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
146363    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
146364    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
146365 
146366    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
146367    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
146368 
146369    ---------------------------------------------------------------------------------------------------------------
146370    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
146371    ---------------------------------------------------------------------------------------------------------------
146372    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
146373 
146374    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
146375    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
146376 
146377    IF xla_accounting_cache_pkg.GetValueChar
146378          (p_source_code         => 'LEDGER_CATEGORY_CODE'
146379          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
146380    AND l_bflow_method_code = 'PRIOR_ENTRY'
146381 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
146382    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
146383          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
146384        )
146385    THEN
146386          xla_ae_lines_pkg.BflowUpgEntry
146387            (p_business_method_code    => l_bflow_method_code
146388            ,p_business_class_code     => l_bflow_class_code
146389            ,p_balance_type            => l_balance_type_code);
146390    ELSE
146391       NULL;
146392 -- No business flow processing for business flow method of NONE.
146393    END IF;
146394 
146395    --
146396    -- call analytical criteria
146397    --
146398    
146399 
146400 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
146401 xla_ae_lines_pkg.SetAnalyticalCriteria(
146402    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
146403  , p_analytical_criterion_owner   => 'S'
146404  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
146405  , p_amb_context_code             => 'DEFAULT'
146406  , p_balancing_flag               => 'Y'
146407  
146408  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
146409  , p_analytical_detail_num_1     =>  NULL
146410  , p_analytical_detail_date_1    =>  NULL
146411 
146412  , p_ae_header_id                 => l_ae_header_id
146413 )
146414 ;
146415 --
146416 
146417    --
146418    -- call description
146419    --
146420    
146421 xla_ae_lines_pkg.SetLineDescription(
146422    p_ae_header_id => l_ae_header_id
146423   ,p_description  => Description_1 (
146424      p_application_id         => p_application_id
146425    , p_ae_header_id           => l_ae_header_id 
146426 , p_source_1 => p_source_1
146427 , p_source_2 => p_source_2
146428 , p_source_3 => p_source_3
146429 , p_source_4 => p_source_4
146430 , p_source_5 => p_source_5
146431    )
146432 );
146433 
146434 
146435    --
146436    -- call ADRs
146437    -- Bug 4922099
146438    --
146439    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
146440         (NVL(l_actual_upg_option, 'N') = 'O') OR
146441         (NVL(l_enc_upg_option, 'N') = 'O')
146442       )
146443    THEN
146444    NULL;
146445    --
146446    --
146447    
146448   l_ccid := AcctDerRule_28(
146449            p_application_id           => p_application_id
146450          , p_ae_header_id             => l_ae_header_id 
146451 , p_source_15 => p_source_15
146452 , p_source_41 => p_source_41
146453 , p_source_42 => p_source_42
146454 , p_source_43 => p_source_43
146455 , p_source_44 => p_source_44
146456 , p_source_45 => p_source_45
146457          , x_transaction_coa_id       => l_adr_transaction_coa_id
146458          , x_accounting_coa_id        => l_adr_accounting_coa_id
146459          , x_value_type_code          => l_adr_value_type_code
146460          , p_side                     => 'NA'
146461    );
146462 
146463    xla_ae_lines_pkg.set_ccid(
146464     p_code_combination_id          => l_ccid
146465   , p_value_type_code              => l_adr_value_type_code
146466   , p_transaction_coa_id           => l_adr_transaction_coa_id
146467   , p_accounting_coa_id            => l_adr_accounting_coa_id
146468   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
146469   , p_adr_type_code                => 'S'
146470   , p_component_type               => l_component_type
146471   , p_component_code               => l_component_code
146472   , p_component_type_code          => l_component_type_code
146473   , p_component_appl_id            => l_component_appl_id
146474   , p_amb_context_code             => l_amb_context_code
146475   , p_side                         => 'NA'
146476   );
146477 
146478 
146479    --
146480    --
146481    END IF;
146482    --
146483    -- Bug 4922099
146484    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
146485           (NVL(l_enc_upg_option, 'N') = 'O')
146486         ) AND
146487         (l_bflow_method_code = 'PRIOR_ENTRY')
146488       )
146489    THEN
146490       IF
146491       --
146492       1 = 2
146493       --
146494       THEN
146495       xla_accounting_err_pkg.build_message
146496                                     (p_appli_s_name            => 'XLA'
146497                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
146498                                     ,p_token_1                 => 'LINE_NUMBER'
146499                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
146500                                     ,p_token_2                 => 'LINE_TYPE_NAME'
146501                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
146502                                                                              l_component_type
146503                                                                             ,l_component_code
146504                                                                             ,l_component_type_code
146505                                                                             ,l_component_appl_id
146506                                                                             ,l_amb_context_code
146507                                                                             ,l_entity_code
146508                                                                             ,l_event_class_code
146509                                                                            )
146510                                     ,p_token_3                 => 'OWNER'
146511                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
146512                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
146513                                                                           ,p_lookup_code    => l_component_type_code
146514                                                                          )
146515                                     ,p_token_4                 => 'PRODUCT_NAME'
146516                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
146517                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
146518                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
146519                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
146520                                     ,p_ae_header_id            =>  NULL
146521                                        );
146522 
146523         IF (C_LEVEL_ERROR>= g_log_level) THEN
146524                  trace
146525                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
146526                       ,p_level    => C_LEVEL_ERROR
146527                       ,p_module   => l_log_module);
146528         END IF;
146529       END IF;
146530    END IF;
146531    --
146532    --
146533    ------------------------------------------------------------------------------------------------
146534    -- 4219869 Business Flow
146535    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
146536    -- Prior Entry.  Currently, the following code is always generated.
146537    ------------------------------------------------------------------------------------------------
146538    XLA_AE_LINES_PKG.ValidateCurrentLine;
146539 
146540    ------------------------------------------------------------------------------------
146541    -- 4219869 Business Flow
146542    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
146543    ------------------------------------------------------------------------------------
146544    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
146545 
146546    ----------------------------------------------------------------------------------
146547    -- 4219869 Business Flow
146548    -- Update journal entry status -- Need to generate this within IF <condition>
146549    ----------------------------------------------------------------------------------
146550    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
146551          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
146552          ,p_balance_type_code => l_balance_type_code
146553          );
146554 
146555    -------------------------------------------------------------------------------------------
146556    -- 4262811 - Generate the Accrual Reversal lines
146557    -------------------------------------------------------------------------------------------
146558    BEGIN
146559       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
146560                               (g_array_event(p_event_id).array_value_num('header_index'));
146561       IF l_acc_rev_flag IS NULL THEN
146562          l_acc_rev_flag := 'N';
146563       END IF;
146564    EXCEPTION
146565       WHEN OTHERS THEN
146566          l_acc_rev_flag := 'N';
146567    END;
146568    --
146569    IF (l_acc_rev_flag = 'Y') THEN
146570 
146571        -- 4645092  ------------------------------------------------------------------------------
146572        -- To allow MPA report to determine if it should generate report process
146573        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
146574        ------------------------------------------------------------------------------------------
146575 
146576        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
146577        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
146578    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
146579    -- call ADRs
146580    -- Bug 4922099
146581    --
146582    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
146583         (NVL(l_actual_upg_option, 'N') = 'O') OR
146584         (NVL(l_enc_upg_option, 'N') = 'O')
146585       )
146586    THEN
146587    NULL;
146588    --
146589    --
146590    
146591   l_ccid := AcctDerRule_28(
146592            p_application_id           => p_application_id
146593          , p_ae_header_id             => l_ae_header_id 
146594 , p_source_15 => p_source_15
146595 , p_source_41 => p_source_41
146596 , p_source_42 => p_source_42
146597 , p_source_43 => p_source_43
146598 , p_source_44 => p_source_44
146599 , p_source_45 => p_source_45
146600          , x_transaction_coa_id       => l_adr_transaction_coa_id
146601          , x_accounting_coa_id        => l_adr_accounting_coa_id
146602          , x_value_type_code          => l_adr_value_type_code
146603          , p_side                     => 'NA'
146604    );
146605 
146606    xla_ae_lines_pkg.set_ccid(
146607     p_code_combination_id          => l_ccid
146608   , p_value_type_code              => l_adr_value_type_code
146609   , p_transaction_coa_id           => l_adr_transaction_coa_id
146610   , p_accounting_coa_id            => l_adr_accounting_coa_id
146611   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
146612   , p_adr_type_code                => 'S'
146613   , p_component_type               => l_component_type
146614   , p_component_code               => l_component_code
146615   , p_component_type_code          => l_component_type_code
146616   , p_component_appl_id            => l_component_appl_id
146617   , p_amb_context_code             => l_amb_context_code
146618   , p_side                         => 'NA'
146619   );
146620 
146621 
146622    --
146623    --
146624    END IF;
146625 
146626        --
146627        -- Update the line information that should be overwritten
146628        --
146629        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
146630                                          p_header_num   => 1);
146631        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
146632 
146633        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
146634 
146635        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
146636           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
146637        END IF;
146638 
146639       --
146640       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
146641       --
146642       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
146643           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
146644       ELSE
146645           ---------------------------------------------------------------------------------------------------
146646           -- 4262811a Switch Sign
146647           ---------------------------------------------------------------------------------------------------
146648           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
146649           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
146650                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
146651           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
146652                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
146653           -- 5132302
146654           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
146655                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
146656 
146657       END IF;
146658 
146659       -- 4955764
146660       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
146661       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
146662 
146663 
146664       XLA_AE_LINES_PKG.ValidateCurrentLine;
146665       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
146666 
146667       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
146668                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
146669                ,p_balance_type_code => l_balance_type_code);
146670 
146671    END IF;
146672 
146673    -----------------------------------------------------------------------------------------
146674    -- 4262811 Multiperiod Accounting
146675    -----------------------------------------------------------------------------------------
146676      -- No MPA option is assigned.
146677 
146678 
146679 END IF;
146680 END IF;
146681 --
146682 
146683 --
146684 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146685    trace
146686       (p_msg      => 'END of AcctLineType_275'
146687       ,p_level    => C_LEVEL_PROCEDURE
146688       ,p_module   => l_log_module);
146689 END IF;
146690 --
146691 EXCEPTION
146692   WHEN xla_exceptions_pkg.application_exception THEN
146693       RAISE;
146694   WHEN OTHERS THEN
146695        xla_exceptions_pkg.raise_message
146696            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_275');
146697 END AcctLineType_275;
146698 --
146699 
146700 ---------------------------------------
146701 --
146702 -- PRIVATE FUNCTION
146703 --         AcctLineType_276
146704 --
146705 ---------------------------------------
146706 PROCEDURE AcctLineType_276 (
146707   p_application_id        IN NUMBER
146708  ,p_event_id              IN NUMBER
146709  ,p_calculate_acctd_flag  IN VARCHAR2
146710  ,p_calculate_g_l_flag    IN VARCHAR2
146711  ,p_actual_flag           IN OUT VARCHAR2
146712  ,p_balance_type_code     OUT VARCHAR2
146713  ,p_gain_or_loss_ref      OUT VARCHAR2
146714  
146715 --TRANSACTION_ID
146716  , p_source_1            IN NUMBER
146717 --Item Concatenated Segments
146718  , p_source_2            IN VARCHAR2
146719 --Transaction Quantity
146720  , p_source_3            IN NUMBER
146721 --Transaction Unit of Measure Code
146722  , p_source_4            IN VARCHAR2
146723 --Inventory Transaction Type Description
146724  , p_source_5            IN VARCHAR2
146725 --Cost Element Name
146726  , p_source_15            IN NUMBER
146727 --Product Line Accounting Category Material Account
146728  , p_source_41            IN NUMBER
146729 --Product Line Accounting Category Material Overhead Account
146730  , p_source_42            IN NUMBER
146731 --Product Line Accounting Category Resource Account
146732  , p_source_43            IN NUMBER
146733 --Product Line Accounting Category Outside Processing Account
146734  , p_source_44            IN NUMBER
146735 --Product Line Accounting Category Overhead Account
146736  , p_source_45            IN NUMBER
146737 --DISTRIBUTION_IDENTIFIER
146738  , p_source_84            IN NUMBER
146739 --Distribution Type
146740  , p_source_85            IN VARCHAR2
146741  , p_source_85_meaning    IN VARCHAR2
146742 --Entered Currency Code
146743  , p_source_88            IN VARCHAR2
146744 --Entered Amount
146745  , p_source_91            IN NUMBER
146746 --Currency Conversion Date
146747  , p_source_92            IN DATE
146748 --Currency Conversion Rate
146749  , p_source_93            IN NUMBER
146750 --Currency Conversion Type
146751  , p_source_94            IN VARCHAR2
146752 --Accounted Amount
146753  , p_source_95            IN NUMBER
146754 --Accounting Line Type
146755  , p_source_97            IN NUMBER
146756 --Organization Code
146757  , p_source_108            IN VARCHAR2
146758 )
146759 IS
146760 
146761 l_component_type              VARCHAR2(80);
146762 l_component_code              VARCHAR2(30);
146763 l_component_type_code         VARCHAR2(1);
146764 l_component_appl_id           INTEGER;
146765 l_amb_context_code            VARCHAR2(30);
146766 l_entity_code                 VARCHAR2(30);
146767 l_event_class_code            VARCHAR2(30);
146768 l_ae_header_id                NUMBER;
146769 l_event_type_code             VARCHAR2(30);
146770 l_line_definition_code        VARCHAR2(30);
146771 l_line_definition_owner_code  VARCHAR2(1);
146772 --
146773 -- adr variables
146774 l_segment                     VARCHAR2(30);
146775 l_ccid                        NUMBER;
146776 l_adr_transaction_coa_id      NUMBER;
146777 l_adr_accounting_coa_id       NUMBER;
146778 l_adr_flexfield_segment_code  VARCHAR2(30);
146779 l_adr_flex_value_set_id       NUMBER;
146780 l_adr_value_type_code         VARCHAR2(30);
146781 l_adr_value_combination_id    NUMBER;
146782 l_adr_value_segment_code      VARCHAR2(30);
146783 
146784 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
146785 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
146786 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
146787 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
146788 
146789 -- 4262811 Variables ------------------------------------------------------------------------------------------
146790 l_entered_amt_idx             NUMBER;
146791 l_accted_amt_idx              NUMBER;
146792 l_acc_rev_flag                VARCHAR2(1);
146793 l_accrual_line_num            NUMBER;
146794 l_tmp_amt                     NUMBER;
146795 l_acc_rev_natural_side_code   VARCHAR2(1);
146796 
146797 l_num_entries                 NUMBER;
146798 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
146799 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
146800 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
146801 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
146802 l_recog_line_1                NUMBER;
146803 l_recog_line_2                NUMBER;
146804 
146805 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
146806 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
146807 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
146808 
146809 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
146810 
146811 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
146812 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
146813 
146814 ---------------------------------------------------------------------------------------------------------------
146815 
146816 
146817 --
146818 -- bulk performance
146819 --
146820 l_balance_type_code           VARCHAR2(1);
146821 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
146822 l_log_module                  VARCHAR2(240);
146823 
146824 --
146825 -- Upgrade strategy
146826 --
146827 l_actual_upg_option           VARCHAR2(1);
146828 l_enc_upg_option           VARCHAR2(1);
146829 
146830 --
146831 BEGIN
146832 --
146833 IF g_log_enabled THEN
146834       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_276';
146835 END IF;
146836 --
146837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146838 
146839       trace
146840          (p_msg      => 'BEGIN of AcctLineType_276'
146841          ,p_level    => C_LEVEL_PROCEDURE
146842          ,p_module   => l_log_module);
146843 
146844 END IF;
146845 --
146846 l_component_type             := 'AMB_JLT';
146847 l_component_code             := 'INVENTORY_VALUATION';
146848 l_component_type_code        := 'S';
146849 l_component_appl_id          :=  707;
146850 l_amb_context_code           := 'DEFAULT';
146851 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
146852 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
146853 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
146854 l_line_definition_owner_code := 'S';
146855 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
146856 --
146857 l_balance_type_code          := 'A';
146858 l_segment                     := NULL;
146859 l_ccid                        := NULL;
146860 l_adr_transaction_coa_id      := NULL;
146861 l_adr_accounting_coa_id       := NULL;
146862 l_adr_flexfield_segment_code  := NULL;
146863 l_adr_flex_value_set_id       := NULL;
146864 l_adr_value_type_code         := NULL;
146865 l_adr_value_combination_id    := NULL;
146866 l_adr_value_segment_code      := NULL;
146867 
146868 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
146869 l_bflow_class_code           := '';    -- 4219869 Business Flow
146870 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
146871 l_budgetary_control_flag     := 'N';
146872 
146873 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
146874 l_bflow_applied_to_amt       := NULL; -- 5132302
146875 l_entered_amt_idx            := NULL;          -- 4262811
146876 l_accted_amt_idx             := NULL;          -- 4262811
146877 l_acc_rev_flag               := NULL;          -- 4262811
146878 l_accrual_line_num           := NULL;          -- 4262811
146879 l_tmp_amt                    := NULL;          -- 4262811
146880 --
146881  
146882 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
146883     l_balance_type_code <> 'B' THEN
146884 IF NVL(p_source_97,9E125) =  1
146885  THEN 
146886 
146887    --
146888    XLA_AE_LINES_PKG.SetNewLine;
146889 
146890    p_balance_type_code          := l_balance_type_code;
146891    -- set the flag so later we will know whether the gain loss line needs to be created
146892    
146893    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
146894      p_actual_flag :='A';
146895    END IF;
146896 
146897    --
146898    -- bulk performance
146899    --
146900    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
146901                                       p_header_num   => 0); -- 4262811
146902    --
146903    -- set accounting line options
146904    --
146905    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
146906            p_natural_side_code          => 'D'
146907          , p_gain_or_loss_flag          => 'N'
146908          , p_gl_transfer_mode_code      => 'S'
146909          , p_acct_entry_type_code       => 'A'
146910          , p_switch_side_flag           => 'Y'
146911          , p_merge_duplicate_code       => 'N'
146912          );
146913    --
146914    l_acc_rev_natural_side_code := 'C';  -- 4262811
146915    -- 
146916    --
146917    -- set accounting line type info
146918    --
146919    xla_ae_lines_pkg.SetAcctLineType
146920       (p_component_type             => l_component_type
146921       ,p_event_type_code            => l_event_type_code
146922       ,p_line_definition_owner_code => l_line_definition_owner_code
146923       ,p_line_definition_code       => l_line_definition_code
146924       ,p_accounting_line_code       => l_component_code
146925       ,p_accounting_line_type_code  => l_component_type_code
146926       ,p_accounting_line_appl_id    => l_component_appl_id
146927       ,p_amb_context_code           => l_amb_context_code
146928       ,p_entity_code                => l_entity_code
146929       ,p_event_class_code           => l_event_class_code);
146930    --
146931    -- set accounting class
146932    --
146933    xla_ae_lines_pkg.SetAcctClass(
146934            p_accounting_class_code  => 'INVENTORY_VALUATION'
146935          , p_ae_header_id           => l_ae_header_id
146936          );
146937 
146938    --
146939    -- set rounding class
146940    --
146941    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
146942                       'INVENTORY_VALUATION';
146943 
146944    --
146945    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
146946    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
146947    --
146948    -- bulk performance
146949    --
146950    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
146951 
146952    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
146953       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
146954 
146955    -- 4955764
146956    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
146957       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
146958 
146959    -- 4458381 Public Sector Enh
146960    
146961    --
146962    -- set accounting attributes for the line type
146963    --
146964    l_entered_amt_idx := 3;
146965    l_accted_amt_idx  := 8;
146966    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
146967    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
146968    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
146969    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
146970    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
146971    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
146972    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
146973    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
146974    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
146975    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
146976    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
146977    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
146978    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
146979    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
146980    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
146981    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
146982    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
146983 
146984    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
146985    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
146986 
146987    ---------------------------------------------------------------------------------------------------------------
146988    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
146989    ---------------------------------------------------------------------------------------------------------------
146990    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
146991 
146992    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
146993    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
146994 
146995    IF xla_accounting_cache_pkg.GetValueChar
146996          (p_source_code         => 'LEDGER_CATEGORY_CODE'
146997          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
146998    AND l_bflow_method_code = 'PRIOR_ENTRY'
146999 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
147000    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
147001          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
147002        )
147003    THEN
147004          xla_ae_lines_pkg.BflowUpgEntry
147005            (p_business_method_code    => l_bflow_method_code
147006            ,p_business_class_code     => l_bflow_class_code
147007            ,p_balance_type            => l_balance_type_code);
147008    ELSE
147009       NULL;
147010 -- No business flow processing for business flow method of NONE.
147011    END IF;
147012 
147013    --
147014    -- call analytical criteria
147015    --
147016    
147017 
147018 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
147019 xla_ae_lines_pkg.SetAnalyticalCriteria(
147020    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
147021  , p_analytical_criterion_owner   => 'S'
147022  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
147023  , p_amb_context_code             => 'DEFAULT'
147024  , p_balancing_flag               => 'Y'
147025  
147026  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
147027  , p_analytical_detail_num_1     =>  NULL
147028  , p_analytical_detail_date_1    =>  NULL
147029 
147030  , p_ae_header_id                 => l_ae_header_id
147031 )
147032 ;
147033 --
147034 
147035    --
147036    -- call description
147037    --
147038    
147039 xla_ae_lines_pkg.SetLineDescription(
147040    p_ae_header_id => l_ae_header_id
147041   ,p_description  => Description_1 (
147042      p_application_id         => p_application_id
147043    , p_ae_header_id           => l_ae_header_id 
147044 , p_source_1 => p_source_1
147045 , p_source_2 => p_source_2
147046 , p_source_3 => p_source_3
147047 , p_source_4 => p_source_4
147048 , p_source_5 => p_source_5
147049    )
147050 );
147051 
147052 
147053    --
147054    -- call ADRs
147055    -- Bug 4922099
147056    --
147057    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
147058         (NVL(l_actual_upg_option, 'N') = 'O') OR
147059         (NVL(l_enc_upg_option, 'N') = 'O')
147060       )
147061    THEN
147062    NULL;
147063    --
147064    --
147065    
147066   l_ccid := AcctDerRule_28(
147067            p_application_id           => p_application_id
147068          , p_ae_header_id             => l_ae_header_id 
147069 , p_source_15 => p_source_15
147070 , p_source_41 => p_source_41
147071 , p_source_42 => p_source_42
147072 , p_source_43 => p_source_43
147073 , p_source_44 => p_source_44
147074 , p_source_45 => p_source_45
147075          , x_transaction_coa_id       => l_adr_transaction_coa_id
147076          , x_accounting_coa_id        => l_adr_accounting_coa_id
147077          , x_value_type_code          => l_adr_value_type_code
147078          , p_side                     => 'NA'
147079    );
147080 
147081    xla_ae_lines_pkg.set_ccid(
147082     p_code_combination_id          => l_ccid
147083   , p_value_type_code              => l_adr_value_type_code
147084   , p_transaction_coa_id           => l_adr_transaction_coa_id
147085   , p_accounting_coa_id            => l_adr_accounting_coa_id
147086   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
147087   , p_adr_type_code                => 'S'
147088   , p_component_type               => l_component_type
147089   , p_component_code               => l_component_code
147090   , p_component_type_code          => l_component_type_code
147091   , p_component_appl_id            => l_component_appl_id
147092   , p_amb_context_code             => l_amb_context_code
147093   , p_side                         => 'NA'
147094   );
147095 
147096 
147097    --
147098    --
147099    END IF;
147100    --
147101    -- Bug 4922099
147102    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
147103           (NVL(l_enc_upg_option, 'N') = 'O')
147104         ) AND
147105         (l_bflow_method_code = 'PRIOR_ENTRY')
147106       )
147107    THEN
147108       IF
147109       --
147110       1 = 2
147111       --
147112       THEN
147113       xla_accounting_err_pkg.build_message
147114                                     (p_appli_s_name            => 'XLA'
147115                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
147116                                     ,p_token_1                 => 'LINE_NUMBER'
147117                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
147118                                     ,p_token_2                 => 'LINE_TYPE_NAME'
147119                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
147120                                                                              l_component_type
147121                                                                             ,l_component_code
147122                                                                             ,l_component_type_code
147123                                                                             ,l_component_appl_id
147124                                                                             ,l_amb_context_code
147125                                                                             ,l_entity_code
147126                                                                             ,l_event_class_code
147127                                                                            )
147128                                     ,p_token_3                 => 'OWNER'
147129                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
147130                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
147131                                                                           ,p_lookup_code    => l_component_type_code
147132                                                                          )
147133                                     ,p_token_4                 => 'PRODUCT_NAME'
147134                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
147135                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
147136                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
147137                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
147138                                     ,p_ae_header_id            =>  NULL
147139                                        );
147140 
147141         IF (C_LEVEL_ERROR>= g_log_level) THEN
147142                  trace
147143                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
147144                       ,p_level    => C_LEVEL_ERROR
147145                       ,p_module   => l_log_module);
147146         END IF;
147147       END IF;
147148    END IF;
147149    --
147150    --
147151    ------------------------------------------------------------------------------------------------
147152    -- 4219869 Business Flow
147153    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
147154    -- Prior Entry.  Currently, the following code is always generated.
147155    ------------------------------------------------------------------------------------------------
147156    XLA_AE_LINES_PKG.ValidateCurrentLine;
147157 
147158    ------------------------------------------------------------------------------------
147159    -- 4219869 Business Flow
147160    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
147161    ------------------------------------------------------------------------------------
147162    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
147163 
147164    ----------------------------------------------------------------------------------
147165    -- 4219869 Business Flow
147166    -- Update journal entry status -- Need to generate this within IF <condition>
147167    ----------------------------------------------------------------------------------
147168    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
147169          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
147170          ,p_balance_type_code => l_balance_type_code
147171          );
147172 
147173    -------------------------------------------------------------------------------------------
147174    -- 4262811 - Generate the Accrual Reversal lines
147175    -------------------------------------------------------------------------------------------
147176    BEGIN
147177       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
147178                               (g_array_event(p_event_id).array_value_num('header_index'));
147179       IF l_acc_rev_flag IS NULL THEN
147180          l_acc_rev_flag := 'N';
147181       END IF;
147182    EXCEPTION
147183       WHEN OTHERS THEN
147184          l_acc_rev_flag := 'N';
147185    END;
147186    --
147187    IF (l_acc_rev_flag = 'Y') THEN
147188 
147189        -- 4645092  ------------------------------------------------------------------------------
147190        -- To allow MPA report to determine if it should generate report process
147191        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
147192        ------------------------------------------------------------------------------------------
147193 
147194        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
147195        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
147196    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
147197    -- call ADRs
147198    -- Bug 4922099
147199    --
147200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
147201         (NVL(l_actual_upg_option, 'N') = 'O') OR
147202         (NVL(l_enc_upg_option, 'N') = 'O')
147203       )
147204    THEN
147205    NULL;
147206    --
147207    --
147208    
147209   l_ccid := AcctDerRule_28(
147210            p_application_id           => p_application_id
147211          , p_ae_header_id             => l_ae_header_id 
147212 , p_source_15 => p_source_15
147213 , p_source_41 => p_source_41
147214 , p_source_42 => p_source_42
147215 , p_source_43 => p_source_43
147216 , p_source_44 => p_source_44
147217 , p_source_45 => p_source_45
147218          , x_transaction_coa_id       => l_adr_transaction_coa_id
147219          , x_accounting_coa_id        => l_adr_accounting_coa_id
147220          , x_value_type_code          => l_adr_value_type_code
147221          , p_side                     => 'NA'
147222    );
147223 
147224    xla_ae_lines_pkg.set_ccid(
147225     p_code_combination_id          => l_ccid
147226   , p_value_type_code              => l_adr_value_type_code
147227   , p_transaction_coa_id           => l_adr_transaction_coa_id
147228   , p_accounting_coa_id            => l_adr_accounting_coa_id
147229   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
147230   , p_adr_type_code                => 'S'
147231   , p_component_type               => l_component_type
147232   , p_component_code               => l_component_code
147233   , p_component_type_code          => l_component_type_code
147234   , p_component_appl_id            => l_component_appl_id
147235   , p_amb_context_code             => l_amb_context_code
147236   , p_side                         => 'NA'
147237   );
147238 
147239 
147240    --
147241    --
147242    END IF;
147243 
147244        --
147245        -- Update the line information that should be overwritten
147246        --
147247        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
147248                                          p_header_num   => 1);
147249        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
147250 
147251        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
147252 
147253        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
147254           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
147255        END IF;
147256 
147257       --
147258       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
147259       --
147260       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
147261           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
147262       ELSE
147263           ---------------------------------------------------------------------------------------------------
147264           -- 4262811a Switch Sign
147265           ---------------------------------------------------------------------------------------------------
147266           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
147267           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
147268                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
147269           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
147270                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
147271           -- 5132302
147272           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
147273                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
147274 
147275       END IF;
147276 
147277       -- 4955764
147278       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
147279       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
147280 
147281 
147282       XLA_AE_LINES_PKG.ValidateCurrentLine;
147283       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
147284 
147285       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
147286                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
147287                ,p_balance_type_code => l_balance_type_code);
147288 
147289    END IF;
147290 
147291    -----------------------------------------------------------------------------------------
147292    -- 4262811 Multiperiod Accounting
147293    -----------------------------------------------------------------------------------------
147294      -- No MPA option is assigned.
147295 
147296 
147297 END IF;
147298 END IF;
147299 --
147300 
147301 --
147302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147303    trace
147304       (p_msg      => 'END of AcctLineType_276'
147305       ,p_level    => C_LEVEL_PROCEDURE
147306       ,p_module   => l_log_module);
147307 END IF;
147308 --
147309 EXCEPTION
147310   WHEN xla_exceptions_pkg.application_exception THEN
147311       RAISE;
147312   WHEN OTHERS THEN
147313        xla_exceptions_pkg.raise_message
147314            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_276');
147315 END AcctLineType_276;
147316 --
147317 
147318 ---------------------------------------
147319 --
147320 -- PRIVATE FUNCTION
147321 --         AcctLineType_277
147322 --
147323 ---------------------------------------
147324 PROCEDURE AcctLineType_277 (
147325   p_application_id        IN NUMBER
147326  ,p_event_id              IN NUMBER
147327  ,p_calculate_acctd_flag  IN VARCHAR2
147328  ,p_calculate_g_l_flag    IN VARCHAR2
147329  ,p_actual_flag           IN OUT VARCHAR2
147330  ,p_balance_type_code     OUT VARCHAR2
147331  ,p_gain_or_loss_ref      OUT VARCHAR2
147332  
147333 --TRANSACTION_ID
147334  , p_source_1            IN NUMBER
147335 --Item Concatenated Segments
147336  , p_source_2            IN VARCHAR2
147337 --Transaction Quantity
147338  , p_source_3            IN NUMBER
147339 --Transaction Unit of Measure Code
147340  , p_source_4            IN VARCHAR2
147341 --Inventory Transaction Type Description
147342  , p_source_5            IN VARCHAR2
147343 --Cost Element Name
147344  , p_source_15            IN NUMBER
147345 --Cost Group Identifier
147346  , p_source_26            IN NUMBER
147347 --INV Header Transfer Cost Group ID
147348  , p_source_27            IN NUMBER
147349 --INV Header Cost Group ID
147350  , p_source_28            IN NUMBER
147351 --Subinventory Name
147352  , p_source_29            IN VARCHAR2
147353 --INV Header Transfer Subinventory
147354  , p_source_31            IN VARCHAR2
147355 --Product Line Accounting Category Material Account
147356  , p_source_41            IN NUMBER
147357 --Product Line Accounting Category Material Overhead Account
147358  , p_source_42            IN NUMBER
147359 --Product Line Accounting Category Resource Account
147360  , p_source_43            IN NUMBER
147361 --Product Line Accounting Category Outside Processing Account
147362  , p_source_44            IN NUMBER
147363 --Product Line Accounting Category Overhead Account
147364  , p_source_45            IN NUMBER
147365 --Transfer to Subinventory or Cost Group category material account
147366  , p_source_48            IN NUMBER
147367 --Transfer to Subinventory or Cost Group category material overhead account
147368  , p_source_49            IN NUMBER
147369 --Transfer to Subinventory or Cost Group category resource account
147370  , p_source_50            IN NUMBER
147371 --Transfer to Subinventory or Cost Group category outside processing account
147372  , p_source_51            IN NUMBER
147373 --Transfer to Subinventory or Cost Group category overhead account
147374  , p_source_52            IN NUMBER
147375 --DISTRIBUTION_IDENTIFIER
147376  , p_source_84            IN NUMBER
147377 --Distribution Type
147378  , p_source_85            IN VARCHAR2
147379  , p_source_85_meaning    IN VARCHAR2
147380 --Entered Currency Code
147381  , p_source_88            IN VARCHAR2
147382 --Entered Amount
147383  , p_source_91            IN NUMBER
147384 --Currency Conversion Date
147385  , p_source_92            IN DATE
147386 --Currency Conversion Rate
147387  , p_source_93            IN NUMBER
147388 --Currency Conversion Type
147389  , p_source_94            IN VARCHAR2
147390 --Accounted Amount
147391  , p_source_95            IN NUMBER
147392 --Accounting Line Type
147393  , p_source_97            IN NUMBER
147394 --Organization Code
147395  , p_source_108            IN VARCHAR2
147396 )
147397 IS
147398 
147399 l_component_type              VARCHAR2(80);
147400 l_component_code              VARCHAR2(30);
147401 l_component_type_code         VARCHAR2(1);
147402 l_component_appl_id           INTEGER;
147403 l_amb_context_code            VARCHAR2(30);
147404 l_entity_code                 VARCHAR2(30);
147405 l_event_class_code            VARCHAR2(30);
147406 l_ae_header_id                NUMBER;
147407 l_event_type_code             VARCHAR2(30);
147408 l_line_definition_code        VARCHAR2(30);
147409 l_line_definition_owner_code  VARCHAR2(1);
147410 --
147411 -- adr variables
147412 l_segment                     VARCHAR2(30);
147413 l_ccid                        NUMBER;
147414 l_adr_transaction_coa_id      NUMBER;
147415 l_adr_accounting_coa_id       NUMBER;
147416 l_adr_flexfield_segment_code  VARCHAR2(30);
147417 l_adr_flex_value_set_id       NUMBER;
147418 l_adr_value_type_code         VARCHAR2(30);
147419 l_adr_value_combination_id    NUMBER;
147420 l_adr_value_segment_code      VARCHAR2(30);
147421 
147422 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
147423 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
147424 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
147425 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
147426 
147427 -- 4262811 Variables ------------------------------------------------------------------------------------------
147428 l_entered_amt_idx             NUMBER;
147429 l_accted_amt_idx              NUMBER;
147430 l_acc_rev_flag                VARCHAR2(1);
147431 l_accrual_line_num            NUMBER;
147432 l_tmp_amt                     NUMBER;
147433 l_acc_rev_natural_side_code   VARCHAR2(1);
147434 
147435 l_num_entries                 NUMBER;
147436 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
147437 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
147438 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
147439 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
147440 l_recog_line_1                NUMBER;
147441 l_recog_line_2                NUMBER;
147442 
147443 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
147444 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
147445 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
147446 
147447 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
147448 
147449 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
147450 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
147451 
147452 ---------------------------------------------------------------------------------------------------------------
147453 
147454 
147455 --
147456 -- bulk performance
147457 --
147458 l_balance_type_code           VARCHAR2(1);
147459 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
147460 l_log_module                  VARCHAR2(240);
147461 
147462 --
147463 -- Upgrade strategy
147464 --
147465 l_actual_upg_option           VARCHAR2(1);
147466 l_enc_upg_option           VARCHAR2(1);
147467 
147468 --
147469 BEGIN
147470 --
147471 IF g_log_enabled THEN
147472       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_277';
147473 END IF;
147474 --
147475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147476 
147477       trace
147478          (p_msg      => 'BEGIN of AcctLineType_277'
147479          ,p_level    => C_LEVEL_PROCEDURE
147480          ,p_module   => l_log_module);
147481 
147482 END IF;
147483 --
147484 l_component_type             := 'AMB_JLT';
147485 l_component_code             := 'INVENTORY_VALUATION';
147486 l_component_type_code        := 'S';
147487 l_component_appl_id          :=  707;
147488 l_amb_context_code           := 'DEFAULT';
147489 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
147490 l_event_class_code           := 'INTRAORG_TXFR';
147491 l_event_type_code            := 'INTRAORG_TXFR_ALL';
147492 l_line_definition_owner_code := 'S';
147493 l_line_definition_code       := 'PI_INTRAORG_TXFR';
147494 --
147495 l_balance_type_code          := 'A';
147496 l_segment                     := NULL;
147497 l_ccid                        := NULL;
147498 l_adr_transaction_coa_id      := NULL;
147499 l_adr_accounting_coa_id       := NULL;
147500 l_adr_flexfield_segment_code  := NULL;
147501 l_adr_flex_value_set_id       := NULL;
147502 l_adr_value_type_code         := NULL;
147503 l_adr_value_combination_id    := NULL;
147504 l_adr_value_segment_code      := NULL;
147505 
147506 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
147507 l_bflow_class_code           := '';    -- 4219869 Business Flow
147508 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
147509 l_budgetary_control_flag     := 'N';
147510 
147511 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
147512 l_bflow_applied_to_amt       := NULL; -- 5132302
147513 l_entered_amt_idx            := NULL;          -- 4262811
147514 l_accted_amt_idx             := NULL;          -- 4262811
147515 l_acc_rev_flag               := NULL;          -- 4262811
147516 l_accrual_line_num           := NULL;          -- 4262811
147517 l_tmp_amt                    := NULL;          -- 4262811
147518 --
147519  
147520 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
147521     l_balance_type_code <> 'B' THEN
147522 IF NVL(p_source_97,9E125) =  1
147523  THEN 
147524 
147525    --
147526    XLA_AE_LINES_PKG.SetNewLine;
147527 
147528    p_balance_type_code          := l_balance_type_code;
147529    -- set the flag so later we will know whether the gain loss line needs to be created
147530    
147531    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
147532      p_actual_flag :='A';
147533    END IF;
147534 
147535    --
147536    -- bulk performance
147537    --
147538    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
147539                                       p_header_num   => 0); -- 4262811
147540    --
147541    -- set accounting line options
147542    --
147543    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
147544            p_natural_side_code          => 'D'
147545          , p_gain_or_loss_flag          => 'N'
147546          , p_gl_transfer_mode_code      => 'S'
147547          , p_acct_entry_type_code       => 'A'
147548          , p_switch_side_flag           => 'Y'
147549          , p_merge_duplicate_code       => 'N'
147550          );
147551    --
147552    l_acc_rev_natural_side_code := 'C';  -- 4262811
147553    -- 
147554    --
147555    -- set accounting line type info
147556    --
147557    xla_ae_lines_pkg.SetAcctLineType
147558       (p_component_type             => l_component_type
147559       ,p_event_type_code            => l_event_type_code
147560       ,p_line_definition_owner_code => l_line_definition_owner_code
147561       ,p_line_definition_code       => l_line_definition_code
147562       ,p_accounting_line_code       => l_component_code
147563       ,p_accounting_line_type_code  => l_component_type_code
147564       ,p_accounting_line_appl_id    => l_component_appl_id
147565       ,p_amb_context_code           => l_amb_context_code
147566       ,p_entity_code                => l_entity_code
147567       ,p_event_class_code           => l_event_class_code);
147568    --
147569    -- set accounting class
147570    --
147571    xla_ae_lines_pkg.SetAcctClass(
147572            p_accounting_class_code  => 'INVENTORY_VALUATION'
147573          , p_ae_header_id           => l_ae_header_id
147574          );
147575 
147576    --
147577    -- set rounding class
147578    --
147579    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
147580                       'INVENTORY_VALUATION';
147581 
147582    --
147583    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
147584    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
147585    --
147586    -- bulk performance
147587    --
147588    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
147589 
147590    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
147591       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
147592 
147593    -- 4955764
147594    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
147595       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
147596 
147597    -- 4458381 Public Sector Enh
147598    
147599    --
147600    -- set accounting attributes for the line type
147601    --
147602    l_entered_amt_idx := 3;
147603    l_accted_amt_idx  := 8;
147604    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
147605    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
147606    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
147607    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
147608    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
147609    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
147610    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
147611    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
147612    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
147613    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
147614    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
147615    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
147616    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
147617    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
147618    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
147619    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
147620    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
147621 
147622    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
147623    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
147624 
147625    ---------------------------------------------------------------------------------------------------------------
147626    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
147627    ---------------------------------------------------------------------------------------------------------------
147628    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
147629 
147630    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
147631    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
147632 
147633    IF xla_accounting_cache_pkg.GetValueChar
147634          (p_source_code         => 'LEDGER_CATEGORY_CODE'
147635          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
147636    AND l_bflow_method_code = 'PRIOR_ENTRY'
147637 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
147638    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
147639          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
147640        )
147641    THEN
147642          xla_ae_lines_pkg.BflowUpgEntry
147643            (p_business_method_code    => l_bflow_method_code
147644            ,p_business_class_code     => l_bflow_class_code
147645            ,p_balance_type            => l_balance_type_code);
147646    ELSE
147647       NULL;
147648 -- No business flow processing for business flow method of NONE.
147649    END IF;
147650 
147651    --
147652    -- call analytical criteria
147653    --
147654    
147655 
147656 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
147657 xla_ae_lines_pkg.SetAnalyticalCriteria(
147658    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
147659  , p_analytical_criterion_owner   => 'S'
147660  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
147661  , p_amb_context_code             => 'DEFAULT'
147662  , p_balancing_flag               => 'Y'
147663  
147664  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
147665  , p_analytical_detail_num_1     =>  NULL
147666  , p_analytical_detail_date_1    =>  NULL
147667 
147668  , p_ae_header_id                 => l_ae_header_id
147669 )
147670 ;
147671 --
147672 
147673    --
147674    -- call description
147675    --
147676    
147677 xla_ae_lines_pkg.SetLineDescription(
147678    p_ae_header_id => l_ae_header_id
147679   ,p_description  => Description_1 (
147680      p_application_id         => p_application_id
147681    , p_ae_header_id           => l_ae_header_id 
147682 , p_source_1 => p_source_1
147683 , p_source_2 => p_source_2
147684 , p_source_3 => p_source_3
147685 , p_source_4 => p_source_4
147686 , p_source_5 => p_source_5
147687    )
147688 );
147689 
147690 
147691    --
147692    -- call ADRs
147693    -- Bug 4922099
147694    --
147695    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
147696         (NVL(l_actual_upg_option, 'N') = 'O') OR
147697         (NVL(l_enc_upg_option, 'N') = 'O')
147698       )
147699    THEN
147700    NULL;
147701    --
147702    --
147703    
147704   l_ccid := AcctDerRule_29(
147705            p_application_id           => p_application_id
147706          , p_ae_header_id             => l_ae_header_id 
147707 , p_source_15 => p_source_15
147708 , p_source_26 => p_source_26
147709 , p_source_27 => p_source_27
147710 , p_source_28 => p_source_28
147711 , p_source_29 => p_source_29
147712 , p_source_31 => p_source_31
147713 , p_source_41 => p_source_41
147714 , p_source_42 => p_source_42
147715 , p_source_43 => p_source_43
147716 , p_source_44 => p_source_44
147717 , p_source_45 => p_source_45
147718 , p_source_48 => p_source_48
147719 , p_source_49 => p_source_49
147720 , p_source_50 => p_source_50
147721 , p_source_51 => p_source_51
147722 , p_source_52 => p_source_52
147723          , x_transaction_coa_id       => l_adr_transaction_coa_id
147724          , x_accounting_coa_id        => l_adr_accounting_coa_id
147725          , x_value_type_code          => l_adr_value_type_code
147726          , p_side                     => 'NA'
147727    );
147728 
147729    xla_ae_lines_pkg.set_ccid(
147730     p_code_combination_id          => l_ccid
147731   , p_value_type_code              => l_adr_value_type_code
147732   , p_transaction_coa_id           => l_adr_transaction_coa_id
147733   , p_accounting_coa_id            => l_adr_accounting_coa_id
147734   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT_ADR'
147735   , p_adr_type_code                => 'S'
147736   , p_component_type               => l_component_type
147737   , p_component_code               => l_component_code
147738   , p_component_type_code          => l_component_type_code
147739   , p_component_appl_id            => l_component_appl_id
147740   , p_amb_context_code             => l_amb_context_code
147741   , p_side                         => 'NA'
147742   );
147743 
147744 
147745    --
147746    --
147747    END IF;
147748    --
147749    -- Bug 4922099
147750    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
147751           (NVL(l_enc_upg_option, 'N') = 'O')
147752         ) AND
147753         (l_bflow_method_code = 'PRIOR_ENTRY')
147754       )
147755    THEN
147756       IF
147757       --
147758       1 = 2
147759       --
147760       THEN
147761       xla_accounting_err_pkg.build_message
147762                                     (p_appli_s_name            => 'XLA'
147763                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
147764                                     ,p_token_1                 => 'LINE_NUMBER'
147765                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
147766                                     ,p_token_2                 => 'LINE_TYPE_NAME'
147767                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
147768                                                                              l_component_type
147769                                                                             ,l_component_code
147770                                                                             ,l_component_type_code
147771                                                                             ,l_component_appl_id
147772                                                                             ,l_amb_context_code
147773                                                                             ,l_entity_code
147774                                                                             ,l_event_class_code
147775                                                                            )
147776                                     ,p_token_3                 => 'OWNER'
147777                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
147778                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
147779                                                                           ,p_lookup_code    => l_component_type_code
147780                                                                          )
147781                                     ,p_token_4                 => 'PRODUCT_NAME'
147782                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
147783                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
147784                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
147785                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
147786                                     ,p_ae_header_id            =>  NULL
147787                                        );
147788 
147789         IF (C_LEVEL_ERROR>= g_log_level) THEN
147790                  trace
147791                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
147792                       ,p_level    => C_LEVEL_ERROR
147793                       ,p_module   => l_log_module);
147794         END IF;
147795       END IF;
147796    END IF;
147797    --
147798    --
147799    ------------------------------------------------------------------------------------------------
147800    -- 4219869 Business Flow
147801    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
147802    -- Prior Entry.  Currently, the following code is always generated.
147803    ------------------------------------------------------------------------------------------------
147804    XLA_AE_LINES_PKG.ValidateCurrentLine;
147805 
147806    ------------------------------------------------------------------------------------
147807    -- 4219869 Business Flow
147808    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
147809    ------------------------------------------------------------------------------------
147810    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
147811 
147812    ----------------------------------------------------------------------------------
147813    -- 4219869 Business Flow
147814    -- Update journal entry status -- Need to generate this within IF <condition>
147815    ----------------------------------------------------------------------------------
147816    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
147817          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
147818          ,p_balance_type_code => l_balance_type_code
147819          );
147820 
147821    -------------------------------------------------------------------------------------------
147822    -- 4262811 - Generate the Accrual Reversal lines
147823    -------------------------------------------------------------------------------------------
147824    BEGIN
147825       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
147826                               (g_array_event(p_event_id).array_value_num('header_index'));
147827       IF l_acc_rev_flag IS NULL THEN
147828          l_acc_rev_flag := 'N';
147829       END IF;
147830    EXCEPTION
147831       WHEN OTHERS THEN
147832          l_acc_rev_flag := 'N';
147833    END;
147834    --
147835    IF (l_acc_rev_flag = 'Y') THEN
147836 
147837        -- 4645092  ------------------------------------------------------------------------------
147838        -- To allow MPA report to determine if it should generate report process
147839        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
147840        ------------------------------------------------------------------------------------------
147841 
147842        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
147843        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
147844    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
147845    -- call ADRs
147846    -- Bug 4922099
147847    --
147848    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
147849         (NVL(l_actual_upg_option, 'N') = 'O') OR
147850         (NVL(l_enc_upg_option, 'N') = 'O')
147851       )
147852    THEN
147853    NULL;
147854    --
147855    --
147856    
147857   l_ccid := AcctDerRule_29(
147858            p_application_id           => p_application_id
147859          , p_ae_header_id             => l_ae_header_id 
147860 , p_source_15 => p_source_15
147861 , p_source_26 => p_source_26
147862 , p_source_27 => p_source_27
147863 , p_source_28 => p_source_28
147864 , p_source_29 => p_source_29
147865 , p_source_31 => p_source_31
147866 , p_source_41 => p_source_41
147867 , p_source_42 => p_source_42
147868 , p_source_43 => p_source_43
147869 , p_source_44 => p_source_44
147870 , p_source_45 => p_source_45
147871 , p_source_48 => p_source_48
147872 , p_source_49 => p_source_49
147873 , p_source_50 => p_source_50
147874 , p_source_51 => p_source_51
147875 , p_source_52 => p_source_52
147876          , x_transaction_coa_id       => l_adr_transaction_coa_id
147877          , x_accounting_coa_id        => l_adr_accounting_coa_id
147878          , x_value_type_code          => l_adr_value_type_code
147879          , p_side                     => 'NA'
147880    );
147881 
147882    xla_ae_lines_pkg.set_ccid(
147883     p_code_combination_id          => l_ccid
147884   , p_value_type_code              => l_adr_value_type_code
147885   , p_transaction_coa_id           => l_adr_transaction_coa_id
147886   , p_accounting_coa_id            => l_adr_accounting_coa_id
147887   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT_ADR'
147888   , p_adr_type_code                => 'S'
147889   , p_component_type               => l_component_type
147890   , p_component_code               => l_component_code
147891   , p_component_type_code          => l_component_type_code
147892   , p_component_appl_id            => l_component_appl_id
147893   , p_amb_context_code             => l_amb_context_code
147894   , p_side                         => 'NA'
147895   );
147896 
147897 
147898    --
147899    --
147900    END IF;
147901 
147902        --
147903        -- Update the line information that should be overwritten
147904        --
147905        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
147906                                          p_header_num   => 1);
147907        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
147908 
147909        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
147910 
147911        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
147912           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
147913        END IF;
147914 
147915       --
147916       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
147917       --
147918       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
147919           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
147920       ELSE
147921           ---------------------------------------------------------------------------------------------------
147922           -- 4262811a Switch Sign
147923           ---------------------------------------------------------------------------------------------------
147924           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
147925           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
147926                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
147927           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
147928                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
147929           -- 5132302
147930           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
147931                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
147932 
147933       END IF;
147934 
147935       -- 4955764
147936       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
147937       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
147938 
147939 
147940       XLA_AE_LINES_PKG.ValidateCurrentLine;
147941       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
147942 
147943       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
147944                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
147945                ,p_balance_type_code => l_balance_type_code);
147946 
147947    END IF;
147948 
147949    -----------------------------------------------------------------------------------------
147950    -- 4262811 Multiperiod Accounting
147951    -----------------------------------------------------------------------------------------
147952      -- No MPA option is assigned.
147953 
147954 
147955 END IF;
147956 END IF;
147957 --
147958 
147959 --
147960 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147961    trace
147962       (p_msg      => 'END of AcctLineType_277'
147963       ,p_level    => C_LEVEL_PROCEDURE
147964       ,p_module   => l_log_module);
147965 END IF;
147966 --
147967 EXCEPTION
147968   WHEN xla_exceptions_pkg.application_exception THEN
147969       RAISE;
147970   WHEN OTHERS THEN
147971        xla_exceptions_pkg.raise_message
147972            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_277');
147973 END AcctLineType_277;
147974 --
147975 
147976 ---------------------------------------
147977 --
147978 -- PRIVATE FUNCTION
147979 --         AcctLineType_278
147980 --
147981 ---------------------------------------
147982 PROCEDURE AcctLineType_278 (
147983   p_application_id        IN NUMBER
147984  ,p_event_id              IN NUMBER
147985  ,p_calculate_acctd_flag  IN VARCHAR2
147986  ,p_calculate_g_l_flag    IN VARCHAR2
147987  ,p_actual_flag           IN OUT VARCHAR2
147988  ,p_balance_type_code     OUT VARCHAR2
147989  ,p_gain_or_loss_ref      OUT VARCHAR2
147990  
147991 --TRANSACTION_ID
147992  , p_source_1            IN NUMBER
147993 --Item Concatenated Segments
147994  , p_source_2            IN VARCHAR2
147995 --Transaction Quantity
147996  , p_source_3            IN NUMBER
147997 --Transaction Unit of Measure Code
147998  , p_source_4            IN VARCHAR2
147999 --Inventory Transaction Type Description
148000  , p_source_5            IN VARCHAR2
148001 --Cost Element Name
148002  , p_source_15            IN NUMBER
148003 --Product Line Accounting Category Material Account
148004  , p_source_41            IN NUMBER
148005 --Product Line Accounting Category Material Overhead Account
148006  , p_source_42            IN NUMBER
148007 --Product Line Accounting Category Resource Account
148008  , p_source_43            IN NUMBER
148009 --Product Line Accounting Category Outside Processing Account
148010  , p_source_44            IN NUMBER
148011 --Product Line Accounting Category Overhead Account
148012  , p_source_45            IN NUMBER
148013 --DISTRIBUTION_IDENTIFIER
148014  , p_source_84            IN NUMBER
148015 --Distribution Type
148016  , p_source_85            IN VARCHAR2
148017  , p_source_85_meaning    IN VARCHAR2
148018 --Entered Currency Code
148019  , p_source_88            IN VARCHAR2
148020 --Entered Amount
148021  , p_source_91            IN NUMBER
148022 --Currency Conversion Date
148023  , p_source_92            IN DATE
148024 --Currency Conversion Rate
148025  , p_source_93            IN NUMBER
148026 --Currency Conversion Type
148027  , p_source_94            IN VARCHAR2
148028 --Accounted Amount
148029  , p_source_95            IN NUMBER
148030 --Accounting Line Type
148031  , p_source_97            IN NUMBER
148032 --Organization Code
148033  , p_source_108            IN VARCHAR2
148034 )
148035 IS
148036 
148037 l_component_type              VARCHAR2(80);
148038 l_component_code              VARCHAR2(30);
148039 l_component_type_code         VARCHAR2(1);
148040 l_component_appl_id           INTEGER;
148041 l_amb_context_code            VARCHAR2(30);
148042 l_entity_code                 VARCHAR2(30);
148043 l_event_class_code            VARCHAR2(30);
148044 l_ae_header_id                NUMBER;
148045 l_event_type_code             VARCHAR2(30);
148046 l_line_definition_code        VARCHAR2(30);
148047 l_line_definition_owner_code  VARCHAR2(1);
148048 --
148049 -- adr variables
148050 l_segment                     VARCHAR2(30);
148051 l_ccid                        NUMBER;
148052 l_adr_transaction_coa_id      NUMBER;
148053 l_adr_accounting_coa_id       NUMBER;
148054 l_adr_flexfield_segment_code  VARCHAR2(30);
148055 l_adr_flex_value_set_id       NUMBER;
148056 l_adr_value_type_code         VARCHAR2(30);
148057 l_adr_value_combination_id    NUMBER;
148058 l_adr_value_segment_code      VARCHAR2(30);
148059 
148060 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
148061 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
148062 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
148063 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
148064 
148065 -- 4262811 Variables ------------------------------------------------------------------------------------------
148066 l_entered_amt_idx             NUMBER;
148067 l_accted_amt_idx              NUMBER;
148068 l_acc_rev_flag                VARCHAR2(1);
148069 l_accrual_line_num            NUMBER;
148070 l_tmp_amt                     NUMBER;
148071 l_acc_rev_natural_side_code   VARCHAR2(1);
148072 
148073 l_num_entries                 NUMBER;
148074 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
148075 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
148076 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
148077 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
148078 l_recog_line_1                NUMBER;
148079 l_recog_line_2                NUMBER;
148080 
148081 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
148082 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
148083 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
148084 
148085 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
148086 
148087 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
148088 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
148089 
148090 ---------------------------------------------------------------------------------------------------------------
148091 
148092 
148093 --
148094 -- bulk performance
148095 --
148096 l_balance_type_code           VARCHAR2(1);
148097 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
148098 l_log_module                  VARCHAR2(240);
148099 
148100 --
148101 -- Upgrade strategy
148102 --
148103 l_actual_upg_option           VARCHAR2(1);
148104 l_enc_upg_option           VARCHAR2(1);
148105 
148106 --
148107 BEGIN
148108 --
148109 IF g_log_enabled THEN
148110       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_278';
148111 END IF;
148112 --
148113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148114 
148115       trace
148116          (p_msg      => 'BEGIN of AcctLineType_278'
148117          ,p_level    => C_LEVEL_PROCEDURE
148118          ,p_module   => l_log_module);
148119 
148120 END IF;
148121 --
148122 l_component_type             := 'AMB_JLT';
148123 l_component_code             := 'INVENTORY_VALUATION';
148124 l_component_type_code        := 'S';
148125 l_component_appl_id          :=  707;
148126 l_amb_context_code           := 'DEFAULT';
148127 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
148128 l_event_class_code           := 'LOG_INTERCOMPANY';
148129 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
148130 l_line_definition_owner_code := 'S';
148131 l_line_definition_code       := 'PI_LOG_IC_RCPT_RETURN';
148132 --
148133 l_balance_type_code          := 'A';
148134 l_segment                     := NULL;
148135 l_ccid                        := NULL;
148136 l_adr_transaction_coa_id      := NULL;
148137 l_adr_accounting_coa_id       := NULL;
148138 l_adr_flexfield_segment_code  := NULL;
148139 l_adr_flex_value_set_id       := NULL;
148140 l_adr_value_type_code         := NULL;
148141 l_adr_value_combination_id    := NULL;
148142 l_adr_value_segment_code      := NULL;
148143 
148144 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
148145 l_bflow_class_code           := '';    -- 4219869 Business Flow
148146 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
148147 l_budgetary_control_flag     := 'N';
148148 
148149 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
148150 l_bflow_applied_to_amt       := NULL; -- 5132302
148151 l_entered_amt_idx            := NULL;          -- 4262811
148152 l_accted_amt_idx             := NULL;          -- 4262811
148153 l_acc_rev_flag               := NULL;          -- 4262811
148154 l_accrual_line_num           := NULL;          -- 4262811
148155 l_tmp_amt                    := NULL;          -- 4262811
148156 --
148157  
148158 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
148159     l_balance_type_code <> 'B' THEN
148160 IF NVL(p_source_97,9E125) =  1
148161  THEN 
148162 
148163    --
148164    XLA_AE_LINES_PKG.SetNewLine;
148165 
148166    p_balance_type_code          := l_balance_type_code;
148167    -- set the flag so later we will know whether the gain loss line needs to be created
148168    
148169    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
148170      p_actual_flag :='A';
148171    END IF;
148172 
148173    --
148174    -- bulk performance
148175    --
148176    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
148177                                       p_header_num   => 0); -- 4262811
148178    --
148179    -- set accounting line options
148180    --
148181    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
148182            p_natural_side_code          => 'D'
148183          , p_gain_or_loss_flag          => 'N'
148184          , p_gl_transfer_mode_code      => 'S'
148185          , p_acct_entry_type_code       => 'A'
148186          , p_switch_side_flag           => 'Y'
148187          , p_merge_duplicate_code       => 'N'
148188          );
148189    --
148190    l_acc_rev_natural_side_code := 'C';  -- 4262811
148191    -- 
148192    --
148193    -- set accounting line type info
148194    --
148195    xla_ae_lines_pkg.SetAcctLineType
148196       (p_component_type             => l_component_type
148197       ,p_event_type_code            => l_event_type_code
148198       ,p_line_definition_owner_code => l_line_definition_owner_code
148199       ,p_line_definition_code       => l_line_definition_code
148200       ,p_accounting_line_code       => l_component_code
148201       ,p_accounting_line_type_code  => l_component_type_code
148202       ,p_accounting_line_appl_id    => l_component_appl_id
148203       ,p_amb_context_code           => l_amb_context_code
148204       ,p_entity_code                => l_entity_code
148205       ,p_event_class_code           => l_event_class_code);
148206    --
148207    -- set accounting class
148208    --
148209    xla_ae_lines_pkg.SetAcctClass(
148210            p_accounting_class_code  => 'INVENTORY_VALUATION'
148211          , p_ae_header_id           => l_ae_header_id
148212          );
148213 
148214    --
148215    -- set rounding class
148216    --
148217    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
148218                       'INVENTORY_VALUATION';
148219 
148220    --
148221    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
148222    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
148223    --
148224    -- bulk performance
148225    --
148226    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
148227 
148228    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
148229       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
148230 
148231    -- 4955764
148232    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
148233       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
148234 
148235    -- 4458381 Public Sector Enh
148236    
148237    --
148238    -- set accounting attributes for the line type
148239    --
148240    l_entered_amt_idx := 3;
148241    l_accted_amt_idx  := 8;
148242    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
148243    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
148244    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
148245    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
148246    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
148247    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
148248    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
148249    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
148250    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
148251    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
148252    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
148253    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
148254    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
148255    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
148256    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
148257    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
148258    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
148259 
148260    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
148261    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
148262 
148263    ---------------------------------------------------------------------------------------------------------------
148264    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
148265    ---------------------------------------------------------------------------------------------------------------
148266    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
148267 
148268    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
148269    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
148270 
148271    IF xla_accounting_cache_pkg.GetValueChar
148272          (p_source_code         => 'LEDGER_CATEGORY_CODE'
148273          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
148274    AND l_bflow_method_code = 'PRIOR_ENTRY'
148275 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
148276    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
148277          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
148278        )
148279    THEN
148280          xla_ae_lines_pkg.BflowUpgEntry
148281            (p_business_method_code    => l_bflow_method_code
148282            ,p_business_class_code     => l_bflow_class_code
148283            ,p_balance_type            => l_balance_type_code);
148284    ELSE
148285       NULL;
148286 -- No business flow processing for business flow method of NONE.
148287    END IF;
148288 
148289    --
148290    -- call analytical criteria
148291    --
148292    
148293 
148294 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
148295 xla_ae_lines_pkg.SetAnalyticalCriteria(
148296    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
148297  , p_analytical_criterion_owner   => 'S'
148298  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
148299  , p_amb_context_code             => 'DEFAULT'
148300  , p_balancing_flag               => 'Y'
148301  
148302  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
148303  , p_analytical_detail_num_1     =>  NULL
148304  , p_analytical_detail_date_1    =>  NULL
148305 
148306  , p_ae_header_id                 => l_ae_header_id
148307 )
148308 ;
148309 --
148310 
148311    --
148312    -- call description
148313    --
148314    
148315 xla_ae_lines_pkg.SetLineDescription(
148316    p_ae_header_id => l_ae_header_id
148317   ,p_description  => Description_1 (
148318      p_application_id         => p_application_id
148319    , p_ae_header_id           => l_ae_header_id 
148320 , p_source_1 => p_source_1
148321 , p_source_2 => p_source_2
148322 , p_source_3 => p_source_3
148323 , p_source_4 => p_source_4
148324 , p_source_5 => p_source_5
148325    )
148326 );
148327 
148328 
148329    --
148330    -- call ADRs
148331    -- Bug 4922099
148332    --
148333    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
148334         (NVL(l_actual_upg_option, 'N') = 'O') OR
148335         (NVL(l_enc_upg_option, 'N') = 'O')
148336       )
148337    THEN
148338    NULL;
148339    --
148340    --
148341    
148342   l_ccid := AcctDerRule_28(
148343            p_application_id           => p_application_id
148344          , p_ae_header_id             => l_ae_header_id 
148345 , p_source_15 => p_source_15
148346 , p_source_41 => p_source_41
148347 , p_source_42 => p_source_42
148348 , p_source_43 => p_source_43
148349 , p_source_44 => p_source_44
148350 , p_source_45 => p_source_45
148351          , x_transaction_coa_id       => l_adr_transaction_coa_id
148352          , x_accounting_coa_id        => l_adr_accounting_coa_id
148353          , x_value_type_code          => l_adr_value_type_code
148354          , p_side                     => 'NA'
148355    );
148356 
148357    xla_ae_lines_pkg.set_ccid(
148358     p_code_combination_id          => l_ccid
148359   , p_value_type_code              => l_adr_value_type_code
148360   , p_transaction_coa_id           => l_adr_transaction_coa_id
148361   , p_accounting_coa_id            => l_adr_accounting_coa_id
148362   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
148363   , p_adr_type_code                => 'S'
148364   , p_component_type               => l_component_type
148365   , p_component_code               => l_component_code
148366   , p_component_type_code          => l_component_type_code
148367   , p_component_appl_id            => l_component_appl_id
148368   , p_amb_context_code             => l_amb_context_code
148369   , p_side                         => 'NA'
148370   );
148371 
148372 
148373    --
148374    --
148375    END IF;
148376    --
148377    -- Bug 4922099
148378    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
148379           (NVL(l_enc_upg_option, 'N') = 'O')
148380         ) AND
148381         (l_bflow_method_code = 'PRIOR_ENTRY')
148382       )
148383    THEN
148384       IF
148385       --
148386       1 = 2
148387       --
148388       THEN
148389       xla_accounting_err_pkg.build_message
148390                                     (p_appli_s_name            => 'XLA'
148391                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
148392                                     ,p_token_1                 => 'LINE_NUMBER'
148393                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
148394                                     ,p_token_2                 => 'LINE_TYPE_NAME'
148395                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
148396                                                                              l_component_type
148397                                                                             ,l_component_code
148398                                                                             ,l_component_type_code
148399                                                                             ,l_component_appl_id
148400                                                                             ,l_amb_context_code
148401                                                                             ,l_entity_code
148402                                                                             ,l_event_class_code
148403                                                                            )
148404                                     ,p_token_3                 => 'OWNER'
148405                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
148406                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
148407                                                                           ,p_lookup_code    => l_component_type_code
148408                                                                          )
148409                                     ,p_token_4                 => 'PRODUCT_NAME'
148410                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
148411                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
148412                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
148413                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
148414                                     ,p_ae_header_id            =>  NULL
148415                                        );
148416 
148417         IF (C_LEVEL_ERROR>= g_log_level) THEN
148418                  trace
148419                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
148420                       ,p_level    => C_LEVEL_ERROR
148421                       ,p_module   => l_log_module);
148422         END IF;
148423       END IF;
148424    END IF;
148425    --
148426    --
148427    ------------------------------------------------------------------------------------------------
148428    -- 4219869 Business Flow
148429    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
148430    -- Prior Entry.  Currently, the following code is always generated.
148431    ------------------------------------------------------------------------------------------------
148432    XLA_AE_LINES_PKG.ValidateCurrentLine;
148433 
148434    ------------------------------------------------------------------------------------
148435    -- 4219869 Business Flow
148436    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
148437    ------------------------------------------------------------------------------------
148438    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
148439 
148440    ----------------------------------------------------------------------------------
148441    -- 4219869 Business Flow
148442    -- Update journal entry status -- Need to generate this within IF <condition>
148443    ----------------------------------------------------------------------------------
148444    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
148445          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
148446          ,p_balance_type_code => l_balance_type_code
148447          );
148448 
148449    -------------------------------------------------------------------------------------------
148450    -- 4262811 - Generate the Accrual Reversal lines
148451    -------------------------------------------------------------------------------------------
148452    BEGIN
148453       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
148454                               (g_array_event(p_event_id).array_value_num('header_index'));
148455       IF l_acc_rev_flag IS NULL THEN
148456          l_acc_rev_flag := 'N';
148457       END IF;
148458    EXCEPTION
148459       WHEN OTHERS THEN
148460          l_acc_rev_flag := 'N';
148461    END;
148462    --
148463    IF (l_acc_rev_flag = 'Y') THEN
148464 
148465        -- 4645092  ------------------------------------------------------------------------------
148466        -- To allow MPA report to determine if it should generate report process
148467        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
148468        ------------------------------------------------------------------------------------------
148469 
148470        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
148471        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
148472    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
148473    -- call ADRs
148474    -- Bug 4922099
148475    --
148476    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
148477         (NVL(l_actual_upg_option, 'N') = 'O') OR
148478         (NVL(l_enc_upg_option, 'N') = 'O')
148479       )
148480    THEN
148481    NULL;
148482    --
148483    --
148484    
148485   l_ccid := AcctDerRule_28(
148486            p_application_id           => p_application_id
148487          , p_ae_header_id             => l_ae_header_id 
148488 , p_source_15 => p_source_15
148489 , p_source_41 => p_source_41
148490 , p_source_42 => p_source_42
148491 , p_source_43 => p_source_43
148492 , p_source_44 => p_source_44
148493 , p_source_45 => p_source_45
148494          , x_transaction_coa_id       => l_adr_transaction_coa_id
148495          , x_accounting_coa_id        => l_adr_accounting_coa_id
148496          , x_value_type_code          => l_adr_value_type_code
148497          , p_side                     => 'NA'
148498    );
148499 
148500    xla_ae_lines_pkg.set_ccid(
148501     p_code_combination_id          => l_ccid
148502   , p_value_type_code              => l_adr_value_type_code
148503   , p_transaction_coa_id           => l_adr_transaction_coa_id
148504   , p_accounting_coa_id            => l_adr_accounting_coa_id
148505   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
148506   , p_adr_type_code                => 'S'
148507   , p_component_type               => l_component_type
148508   , p_component_code               => l_component_code
148509   , p_component_type_code          => l_component_type_code
148510   , p_component_appl_id            => l_component_appl_id
148511   , p_amb_context_code             => l_amb_context_code
148512   , p_side                         => 'NA'
148513   );
148514 
148515 
148516    --
148517    --
148518    END IF;
148519 
148520        --
148521        -- Update the line information that should be overwritten
148522        --
148523        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
148524                                          p_header_num   => 1);
148525        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
148526 
148527        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
148528 
148529        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
148530           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
148531        END IF;
148532 
148533       --
148534       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
148535       --
148536       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
148537           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
148538       ELSE
148539           ---------------------------------------------------------------------------------------------------
148540           -- 4262811a Switch Sign
148541           ---------------------------------------------------------------------------------------------------
148542           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
148543           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
148544                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
148545           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
148546                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
148547           -- 5132302
148548           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
148549                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
148550 
148551       END IF;
148552 
148553       -- 4955764
148554       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
148555       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
148556 
148557 
148558       XLA_AE_LINES_PKG.ValidateCurrentLine;
148559       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
148560 
148561       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
148562                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
148563                ,p_balance_type_code => l_balance_type_code);
148564 
148565    END IF;
148566 
148567    -----------------------------------------------------------------------------------------
148568    -- 4262811 Multiperiod Accounting
148569    -----------------------------------------------------------------------------------------
148570      -- No MPA option is assigned.
148571 
148572 
148573 END IF;
148574 END IF;
148575 --
148576 
148577 --
148578 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148579    trace
148580       (p_msg      => 'END of AcctLineType_278'
148581       ,p_level    => C_LEVEL_PROCEDURE
148582       ,p_module   => l_log_module);
148583 END IF;
148584 --
148585 EXCEPTION
148586   WHEN xla_exceptions_pkg.application_exception THEN
148587       RAISE;
148588   WHEN OTHERS THEN
148589        xla_exceptions_pkg.raise_message
148590            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_278');
148591 END AcctLineType_278;
148592 --
148593 
148594 ---------------------------------------
148595 --
148596 -- PRIVATE FUNCTION
148597 --         AcctLineType_279
148598 --
148599 ---------------------------------------
148600 PROCEDURE AcctLineType_279 (
148601   p_application_id        IN NUMBER
148602  ,p_event_id              IN NUMBER
148603  ,p_calculate_acctd_flag  IN VARCHAR2
148604  ,p_calculate_g_l_flag    IN VARCHAR2
148605  ,p_actual_flag           IN OUT VARCHAR2
148606  ,p_balance_type_code     OUT VARCHAR2
148607  ,p_gain_or_loss_ref      OUT VARCHAR2
148608  
148609 --TRANSACTION_ID
148610  , p_source_1            IN NUMBER
148611 --Item Concatenated Segments
148612  , p_source_2            IN VARCHAR2
148613 --Transaction Quantity
148614  , p_source_3            IN NUMBER
148615 --Transaction Unit of Measure Code
148616  , p_source_4            IN VARCHAR2
148617 --Inventory Transaction Type Description
148618  , p_source_5            IN VARCHAR2
148619 --Cost Element Name
148620  , p_source_15            IN NUMBER
148621 --Product Line Accounting Category Material Account
148622  , p_source_41            IN NUMBER
148623 --Product Line Accounting Category Material Overhead Account
148624  , p_source_42            IN NUMBER
148625 --Product Line Accounting Category Resource Account
148626  , p_source_43            IN NUMBER
148627 --Product Line Accounting Category Outside Processing Account
148628  , p_source_44            IN NUMBER
148629 --Product Line Accounting Category Overhead Account
148630  , p_source_45            IN NUMBER
148631 --DISTRIBUTION_IDENTIFIER
148632  , p_source_84            IN NUMBER
148633 --Distribution Type
148634  , p_source_85            IN VARCHAR2
148635  , p_source_85_meaning    IN VARCHAR2
148636 --Entered Currency Code
148637  , p_source_88            IN VARCHAR2
148638 --Entered Amount
148639  , p_source_91            IN NUMBER
148640 --Currency Conversion Date
148641  , p_source_92            IN DATE
148642 --Currency Conversion Rate
148643  , p_source_93            IN NUMBER
148644 --Currency Conversion Type
148645  , p_source_94            IN VARCHAR2
148646 --Accounted Amount
148647  , p_source_95            IN NUMBER
148648 --Accounting Line Type
148649  , p_source_97            IN NUMBER
148650 --Organization Code
148651  , p_source_108            IN VARCHAR2
148652 )
148653 IS
148654 
148655 l_component_type              VARCHAR2(80);
148656 l_component_code              VARCHAR2(30);
148657 l_component_type_code         VARCHAR2(1);
148658 l_component_appl_id           INTEGER;
148659 l_amb_context_code            VARCHAR2(30);
148660 l_entity_code                 VARCHAR2(30);
148661 l_event_class_code            VARCHAR2(30);
148662 l_ae_header_id                NUMBER;
148663 l_event_type_code             VARCHAR2(30);
148664 l_line_definition_code        VARCHAR2(30);
148665 l_line_definition_owner_code  VARCHAR2(1);
148666 --
148667 -- adr variables
148668 l_segment                     VARCHAR2(30);
148669 l_ccid                        NUMBER;
148670 l_adr_transaction_coa_id      NUMBER;
148671 l_adr_accounting_coa_id       NUMBER;
148672 l_adr_flexfield_segment_code  VARCHAR2(30);
148673 l_adr_flex_value_set_id       NUMBER;
148674 l_adr_value_type_code         VARCHAR2(30);
148675 l_adr_value_combination_id    NUMBER;
148676 l_adr_value_segment_code      VARCHAR2(30);
148677 
148678 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
148679 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
148680 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
148681 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
148682 
148683 -- 4262811 Variables ------------------------------------------------------------------------------------------
148684 l_entered_amt_idx             NUMBER;
148685 l_accted_amt_idx              NUMBER;
148686 l_acc_rev_flag                VARCHAR2(1);
148687 l_accrual_line_num            NUMBER;
148688 l_tmp_amt                     NUMBER;
148689 l_acc_rev_natural_side_code   VARCHAR2(1);
148690 
148691 l_num_entries                 NUMBER;
148692 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
148693 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
148694 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
148695 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
148696 l_recog_line_1                NUMBER;
148697 l_recog_line_2                NUMBER;
148698 
148699 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
148700 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
148701 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
148702 
148703 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
148704 
148705 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
148706 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
148707 
148708 ---------------------------------------------------------------------------------------------------------------
148709 
148710 
148711 --
148712 -- bulk performance
148713 --
148714 l_balance_type_code           VARCHAR2(1);
148715 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
148716 l_log_module                  VARCHAR2(240);
148717 
148718 --
148719 -- Upgrade strategy
148720 --
148721 l_actual_upg_option           VARCHAR2(1);
148722 l_enc_upg_option           VARCHAR2(1);
148723 
148724 --
148725 BEGIN
148726 --
148727 IF g_log_enabled THEN
148728       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_279';
148729 END IF;
148730 --
148731 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148732 
148733       trace
148734          (p_msg      => 'BEGIN of AcctLineType_279'
148735          ,p_level    => C_LEVEL_PROCEDURE
148736          ,p_module   => l_log_module);
148737 
148738 END IF;
148739 --
148740 l_component_type             := 'AMB_JLT';
148741 l_component_code             := 'INVENTORY_VALUATION';
148742 l_component_type_code        := 'S';
148743 l_component_appl_id          :=  707;
148744 l_amb_context_code           := 'DEFAULT';
148745 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
148746 l_event_class_code           := 'MTL_COST_UPD';
148747 l_event_type_code            := 'AVG_COST_UPD';
148748 l_line_definition_owner_code := 'S';
148749 l_line_definition_code       := 'PI_AVG_COST_UPD';
148750 --
148751 l_balance_type_code          := 'A';
148752 l_segment                     := NULL;
148753 l_ccid                        := NULL;
148754 l_adr_transaction_coa_id      := NULL;
148755 l_adr_accounting_coa_id       := NULL;
148756 l_adr_flexfield_segment_code  := NULL;
148757 l_adr_flex_value_set_id       := NULL;
148758 l_adr_value_type_code         := NULL;
148759 l_adr_value_combination_id    := NULL;
148760 l_adr_value_segment_code      := NULL;
148761 
148762 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
148763 l_bflow_class_code           := '';    -- 4219869 Business Flow
148764 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
148765 l_budgetary_control_flag     := 'N';
148766 
148767 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
148768 l_bflow_applied_to_amt       := NULL; -- 5132302
148769 l_entered_amt_idx            := NULL;          -- 4262811
148770 l_accted_amt_idx             := NULL;          -- 4262811
148771 l_acc_rev_flag               := NULL;          -- 4262811
148772 l_accrual_line_num           := NULL;          -- 4262811
148773 l_tmp_amt                    := NULL;          -- 4262811
148774 --
148775  
148776 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
148777     l_balance_type_code <> 'B' THEN
148778 IF NVL(p_source_97,9E125) =  1
148779  THEN 
148780 
148781    --
148782    XLA_AE_LINES_PKG.SetNewLine;
148783 
148784    p_balance_type_code          := l_balance_type_code;
148785    -- set the flag so later we will know whether the gain loss line needs to be created
148786    
148787    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
148788      p_actual_flag :='A';
148789    END IF;
148790 
148791    --
148792    -- bulk performance
148793    --
148794    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
148795                                       p_header_num   => 0); -- 4262811
148796    --
148797    -- set accounting line options
148798    --
148799    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
148800            p_natural_side_code          => 'D'
148801          , p_gain_or_loss_flag          => 'N'
148802          , p_gl_transfer_mode_code      => 'S'
148803          , p_acct_entry_type_code       => 'A'
148804          , p_switch_side_flag           => 'Y'
148805          , p_merge_duplicate_code       => 'N'
148806          );
148807    --
148808    l_acc_rev_natural_side_code := 'C';  -- 4262811
148809    -- 
148810    --
148811    -- set accounting line type info
148812    --
148813    xla_ae_lines_pkg.SetAcctLineType
148814       (p_component_type             => l_component_type
148815       ,p_event_type_code            => l_event_type_code
148816       ,p_line_definition_owner_code => l_line_definition_owner_code
148817       ,p_line_definition_code       => l_line_definition_code
148818       ,p_accounting_line_code       => l_component_code
148819       ,p_accounting_line_type_code  => l_component_type_code
148820       ,p_accounting_line_appl_id    => l_component_appl_id
148821       ,p_amb_context_code           => l_amb_context_code
148822       ,p_entity_code                => l_entity_code
148823       ,p_event_class_code           => l_event_class_code);
148824    --
148825    -- set accounting class
148826    --
148827    xla_ae_lines_pkg.SetAcctClass(
148828            p_accounting_class_code  => 'INVENTORY_VALUATION'
148829          , p_ae_header_id           => l_ae_header_id
148830          );
148831 
148832    --
148833    -- set rounding class
148834    --
148835    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
148836                       'INVENTORY_VALUATION';
148837 
148838    --
148839    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
148840    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
148841    --
148842    -- bulk performance
148843    --
148844    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
148845 
148846    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
148847       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
148848 
148849    -- 4955764
148850    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
148851       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
148852 
148853    -- 4458381 Public Sector Enh
148854    
148855    --
148856    -- set accounting attributes for the line type
148857    --
148858    l_entered_amt_idx := 3;
148859    l_accted_amt_idx  := 8;
148860    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
148861    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
148862    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
148863    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
148864    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
148865    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
148866    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
148867    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
148868    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
148869    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
148870    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
148871    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
148872    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
148873    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
148874    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
148875    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
148876    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
148877 
148878    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
148879    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
148880 
148881    ---------------------------------------------------------------------------------------------------------------
148882    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
148883    ---------------------------------------------------------------------------------------------------------------
148884    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
148885 
148886    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
148887    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
148888 
148889    IF xla_accounting_cache_pkg.GetValueChar
148890          (p_source_code         => 'LEDGER_CATEGORY_CODE'
148891          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
148892    AND l_bflow_method_code = 'PRIOR_ENTRY'
148893 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
148894    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
148895          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
148896        )
148897    THEN
148898          xla_ae_lines_pkg.BflowUpgEntry
148899            (p_business_method_code    => l_bflow_method_code
148900            ,p_business_class_code     => l_bflow_class_code
148901            ,p_balance_type            => l_balance_type_code);
148902    ELSE
148903       NULL;
148904 -- No business flow processing for business flow method of NONE.
148905    END IF;
148906 
148907    --
148908    -- call analytical criteria
148909    --
148910    
148911 
148912 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
148913 xla_ae_lines_pkg.SetAnalyticalCriteria(
148914    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
148915  , p_analytical_criterion_owner   => 'S'
148916  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
148917  , p_amb_context_code             => 'DEFAULT'
148918  , p_balancing_flag               => 'Y'
148919  
148920  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
148921  , p_analytical_detail_num_1     =>  NULL
148922  , p_analytical_detail_date_1    =>  NULL
148923 
148924  , p_ae_header_id                 => l_ae_header_id
148925 )
148926 ;
148927 --
148928 
148929    --
148930    -- call description
148931    --
148932    
148933 xla_ae_lines_pkg.SetLineDescription(
148934    p_ae_header_id => l_ae_header_id
148935   ,p_description  => Description_1 (
148936      p_application_id         => p_application_id
148937    , p_ae_header_id           => l_ae_header_id 
148938 , p_source_1 => p_source_1
148939 , p_source_2 => p_source_2
148940 , p_source_3 => p_source_3
148941 , p_source_4 => p_source_4
148942 , p_source_5 => p_source_5
148943    )
148944 );
148945 
148946 
148947    --
148948    -- call ADRs
148949    -- Bug 4922099
148950    --
148951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
148952         (NVL(l_actual_upg_option, 'N') = 'O') OR
148953         (NVL(l_enc_upg_option, 'N') = 'O')
148954       )
148955    THEN
148956    NULL;
148957    --
148958    --
148959    
148960   l_ccid := AcctDerRule_28(
148961            p_application_id           => p_application_id
148962          , p_ae_header_id             => l_ae_header_id 
148963 , p_source_15 => p_source_15
148964 , p_source_41 => p_source_41
148965 , p_source_42 => p_source_42
148966 , p_source_43 => p_source_43
148967 , p_source_44 => p_source_44
148968 , p_source_45 => p_source_45
148969          , x_transaction_coa_id       => l_adr_transaction_coa_id
148970          , x_accounting_coa_id        => l_adr_accounting_coa_id
148971          , x_value_type_code          => l_adr_value_type_code
148972          , p_side                     => 'NA'
148973    );
148974 
148975    xla_ae_lines_pkg.set_ccid(
148976     p_code_combination_id          => l_ccid
148977   , p_value_type_code              => l_adr_value_type_code
148978   , p_transaction_coa_id           => l_adr_transaction_coa_id
148979   , p_accounting_coa_id            => l_adr_accounting_coa_id
148980   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
148981   , p_adr_type_code                => 'S'
148982   , p_component_type               => l_component_type
148983   , p_component_code               => l_component_code
148984   , p_component_type_code          => l_component_type_code
148985   , p_component_appl_id            => l_component_appl_id
148986   , p_amb_context_code             => l_amb_context_code
148987   , p_side                         => 'NA'
148988   );
148989 
148990 
148991    --
148992    --
148993    END IF;
148994    --
148995    -- Bug 4922099
148996    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
148997           (NVL(l_enc_upg_option, 'N') = 'O')
148998         ) AND
148999         (l_bflow_method_code = 'PRIOR_ENTRY')
149000       )
149001    THEN
149002       IF
149003       --
149004       1 = 2
149005       --
149006       THEN
149007       xla_accounting_err_pkg.build_message
149008                                     (p_appli_s_name            => 'XLA'
149009                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
149010                                     ,p_token_1                 => 'LINE_NUMBER'
149011                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
149012                                     ,p_token_2                 => 'LINE_TYPE_NAME'
149013                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
149014                                                                              l_component_type
149015                                                                             ,l_component_code
149016                                                                             ,l_component_type_code
149017                                                                             ,l_component_appl_id
149018                                                                             ,l_amb_context_code
149019                                                                             ,l_entity_code
149020                                                                             ,l_event_class_code
149021                                                                            )
149022                                     ,p_token_3                 => 'OWNER'
149023                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
149024                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
149025                                                                           ,p_lookup_code    => l_component_type_code
149026                                                                          )
149027                                     ,p_token_4                 => 'PRODUCT_NAME'
149028                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
149029                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
149030                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
149031                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
149032                                     ,p_ae_header_id            =>  NULL
149033                                        );
149034 
149035         IF (C_LEVEL_ERROR>= g_log_level) THEN
149036                  trace
149037                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
149038                       ,p_level    => C_LEVEL_ERROR
149039                       ,p_module   => l_log_module);
149040         END IF;
149041       END IF;
149042    END IF;
149043    --
149044    --
149045    ------------------------------------------------------------------------------------------------
149046    -- 4219869 Business Flow
149047    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
149048    -- Prior Entry.  Currently, the following code is always generated.
149049    ------------------------------------------------------------------------------------------------
149050    XLA_AE_LINES_PKG.ValidateCurrentLine;
149051 
149052    ------------------------------------------------------------------------------------
149053    -- 4219869 Business Flow
149054    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
149055    ------------------------------------------------------------------------------------
149056    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
149057 
149058    ----------------------------------------------------------------------------------
149059    -- 4219869 Business Flow
149060    -- Update journal entry status -- Need to generate this within IF <condition>
149061    ----------------------------------------------------------------------------------
149062    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
149063          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
149064          ,p_balance_type_code => l_balance_type_code
149065          );
149066 
149067    -------------------------------------------------------------------------------------------
149068    -- 4262811 - Generate the Accrual Reversal lines
149069    -------------------------------------------------------------------------------------------
149070    BEGIN
149071       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
149072                               (g_array_event(p_event_id).array_value_num('header_index'));
149073       IF l_acc_rev_flag IS NULL THEN
149074          l_acc_rev_flag := 'N';
149075       END IF;
149076    EXCEPTION
149077       WHEN OTHERS THEN
149078          l_acc_rev_flag := 'N';
149079    END;
149080    --
149081    IF (l_acc_rev_flag = 'Y') THEN
149082 
149083        -- 4645092  ------------------------------------------------------------------------------
149084        -- To allow MPA report to determine if it should generate report process
149085        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
149086        ------------------------------------------------------------------------------------------
149087 
149088        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
149089        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
149090    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
149091    -- call ADRs
149092    -- Bug 4922099
149093    --
149094    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
149095         (NVL(l_actual_upg_option, 'N') = 'O') OR
149096         (NVL(l_enc_upg_option, 'N') = 'O')
149097       )
149098    THEN
149099    NULL;
149100    --
149101    --
149102    
149103   l_ccid := AcctDerRule_28(
149104            p_application_id           => p_application_id
149105          , p_ae_header_id             => l_ae_header_id 
149106 , p_source_15 => p_source_15
149107 , p_source_41 => p_source_41
149108 , p_source_42 => p_source_42
149109 , p_source_43 => p_source_43
149110 , p_source_44 => p_source_44
149111 , p_source_45 => p_source_45
149112          , x_transaction_coa_id       => l_adr_transaction_coa_id
149113          , x_accounting_coa_id        => l_adr_accounting_coa_id
149114          , x_value_type_code          => l_adr_value_type_code
149115          , p_side                     => 'NA'
149116    );
149117 
149118    xla_ae_lines_pkg.set_ccid(
149119     p_code_combination_id          => l_ccid
149120   , p_value_type_code              => l_adr_value_type_code
149121   , p_transaction_coa_id           => l_adr_transaction_coa_id
149122   , p_accounting_coa_id            => l_adr_accounting_coa_id
149123   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
149124   , p_adr_type_code                => 'S'
149125   , p_component_type               => l_component_type
149126   , p_component_code               => l_component_code
149127   , p_component_type_code          => l_component_type_code
149128   , p_component_appl_id            => l_component_appl_id
149129   , p_amb_context_code             => l_amb_context_code
149130   , p_side                         => 'NA'
149131   );
149132 
149133 
149134    --
149135    --
149136    END IF;
149137 
149138        --
149139        -- Update the line information that should be overwritten
149140        --
149141        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
149142                                          p_header_num   => 1);
149143        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
149144 
149145        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
149146 
149147        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
149148           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
149149        END IF;
149150 
149151       --
149152       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
149153       --
149154       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
149155           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
149156       ELSE
149157           ---------------------------------------------------------------------------------------------------
149158           -- 4262811a Switch Sign
149159           ---------------------------------------------------------------------------------------------------
149160           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
149161           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
149162                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
149163           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
149164                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
149165           -- 5132302
149166           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
149167                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
149168 
149169       END IF;
149170 
149171       -- 4955764
149172       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
149173       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
149174 
149175 
149176       XLA_AE_LINES_PKG.ValidateCurrentLine;
149177       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
149178 
149179       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
149180                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
149181                ,p_balance_type_code => l_balance_type_code);
149182 
149183    END IF;
149184 
149185    -----------------------------------------------------------------------------------------
149186    -- 4262811 Multiperiod Accounting
149187    -----------------------------------------------------------------------------------------
149188      -- No MPA option is assigned.
149189 
149190 
149191 END IF;
149192 END IF;
149193 --
149194 
149195 --
149196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149197    trace
149198       (p_msg      => 'END of AcctLineType_279'
149199       ,p_level    => C_LEVEL_PROCEDURE
149200       ,p_module   => l_log_module);
149201 END IF;
149202 --
149203 EXCEPTION
149204   WHEN xla_exceptions_pkg.application_exception THEN
149205       RAISE;
149206   WHEN OTHERS THEN
149207        xla_exceptions_pkg.raise_message
149208            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_279');
149209 END AcctLineType_279;
149210 --
149211 
149212 ---------------------------------------
149213 --
149214 -- PRIVATE FUNCTION
149215 --         AcctLineType_280
149216 --
149217 ---------------------------------------
149218 PROCEDURE AcctLineType_280 (
149219   p_application_id        IN NUMBER
149220  ,p_event_id              IN NUMBER
149221  ,p_calculate_acctd_flag  IN VARCHAR2
149222  ,p_calculate_g_l_flag    IN VARCHAR2
149223  ,p_actual_flag           IN OUT VARCHAR2
149224  ,p_balance_type_code     OUT VARCHAR2
149225  ,p_gain_or_loss_ref      OUT VARCHAR2
149226  
149227 --TRANSACTION_ID
149228  , p_source_1            IN NUMBER
149229 --Item Concatenated Segments
149230  , p_source_2            IN VARCHAR2
149231 --Transaction Quantity
149232  , p_source_3            IN NUMBER
149233 --Transaction Unit of Measure Code
149234  , p_source_4            IN VARCHAR2
149235 --Inventory Transaction Type Description
149236  , p_source_5            IN VARCHAR2
149237 --Cost Element Name
149238  , p_source_15            IN NUMBER
149239 --Product Line Accounting Category Material Account
149240  , p_source_41            IN NUMBER
149241 --Product Line Accounting Category Material Overhead Account
149242  , p_source_42            IN NUMBER
149243 --Product Line Accounting Category Resource Account
149244  , p_source_43            IN NUMBER
149245 --Product Line Accounting Category Outside Processing Account
149246  , p_source_44            IN NUMBER
149247 --Product Line Accounting Category Overhead Account
149248  , p_source_45            IN NUMBER
149249 --Applied to Application ID
149250  , p_source_79            IN NUMBER
149251 --Applied to Distribution Link Type
149252  , p_source_80            IN VARCHAR2
149253 --Applied to Entity Code
149254  , p_source_81            IN VARCHAR2
149255 --Applied To Purchase Document Identifier
149256  , p_source_83            IN NUMBER
149257 --DISTRIBUTION_IDENTIFIER
149258  , p_source_84            IN NUMBER
149259 --Distribution Type
149260  , p_source_85            IN VARCHAR2
149261  , p_source_85_meaning    IN VARCHAR2
149262 --PO Budget Account
149263  , p_source_86            IN NUMBER
149264 --Encumbrance Reversal Amount Entered
149265  , p_source_87            IN NUMBER
149266 --Entered Currency Code
149267  , p_source_88            IN VARCHAR2
149268 --Transaction Encumbrance Reversal Amount
149269  , p_source_89            IN NUMBER
149270 --Entered Amount
149271  , p_source_91            IN NUMBER
149272 --Currency Conversion Date
149273  , p_source_92            IN DATE
149274 --Currency Conversion Rate
149275  , p_source_93            IN NUMBER
149276 --Currency Conversion Type
149277  , p_source_94            IN VARCHAR2
149278 --Accounted Amount
149279  , p_source_95            IN NUMBER
149280 --Purchasing Encumbrance Type Identifier
149281  , p_source_96            IN NUMBER
149282 --Accounting Line Type
149283  , p_source_97            IN NUMBER
149284 --Costing Encumbrance Upgrade Option
149285  , p_source_100            IN VARCHAR2
149286 --TXN_PO_DISTRIBUTION_ID
149287  , p_source_101            IN NUMBER
149288 --Organization Code
149289  , p_source_108            IN VARCHAR2
149290 )
149291 IS
149292 
149293 l_component_type              VARCHAR2(80);
149294 l_component_code              VARCHAR2(30);
149295 l_component_type_code         VARCHAR2(1);
149296 l_component_appl_id           INTEGER;
149297 l_amb_context_code            VARCHAR2(30);
149298 l_entity_code                 VARCHAR2(30);
149299 l_event_class_code            VARCHAR2(30);
149300 l_ae_header_id                NUMBER;
149301 l_event_type_code             VARCHAR2(30);
149302 l_line_definition_code        VARCHAR2(30);
149303 l_line_definition_owner_code  VARCHAR2(1);
149304 --
149305 -- adr variables
149306 l_segment                     VARCHAR2(30);
149307 l_ccid                        NUMBER;
149308 l_adr_transaction_coa_id      NUMBER;
149309 l_adr_accounting_coa_id       NUMBER;
149310 l_adr_flexfield_segment_code  VARCHAR2(30);
149311 l_adr_flex_value_set_id       NUMBER;
149312 l_adr_value_type_code         VARCHAR2(30);
149313 l_adr_value_combination_id    NUMBER;
149314 l_adr_value_segment_code      VARCHAR2(30);
149315 
149316 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
149317 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
149318 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
149319 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
149320 
149321 -- 4262811 Variables ------------------------------------------------------------------------------------------
149322 l_entered_amt_idx             NUMBER;
149323 l_accted_amt_idx              NUMBER;
149324 l_acc_rev_flag                VARCHAR2(1);
149325 l_accrual_line_num            NUMBER;
149326 l_tmp_amt                     NUMBER;
149327 l_acc_rev_natural_side_code   VARCHAR2(1);
149328 
149329 l_num_entries                 NUMBER;
149330 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
149331 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
149332 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
149333 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
149334 l_recog_line_1                NUMBER;
149335 l_recog_line_2                NUMBER;
149336 
149337 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
149338 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
149339 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
149340 
149341 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
149342 
149343 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
149344 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
149345 
149346 ---------------------------------------------------------------------------------------------------------------
149347 
149348 
149349 --
149350 -- bulk performance
149351 --
149352 l_balance_type_code           VARCHAR2(1);
149353 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
149354 l_log_module                  VARCHAR2(240);
149355 
149356 --
149357 -- Upgrade strategy
149358 --
149359 l_actual_upg_option           VARCHAR2(1);
149360 l_enc_upg_option           VARCHAR2(1);
149361 
149362 --
149363 BEGIN
149364 --
149365 IF g_log_enabled THEN
149366       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_280';
149367 END IF;
149368 --
149369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149370 
149371       trace
149372          (p_msg      => 'BEGIN of AcctLineType_280'
149373          ,p_level    => C_LEVEL_PROCEDURE
149374          ,p_module   => l_log_module);
149375 
149376 END IF;
149377 --
149378 l_component_type             := 'AMB_JLT';
149379 l_component_code             := 'INVENTORY_VALUATION';
149380 l_component_type_code        := 'S';
149381 l_component_appl_id          :=  707;
149382 l_amb_context_code           := 'DEFAULT';
149383 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
149384 l_event_class_code           := 'PURCHASE_ORDER';
149385 l_event_type_code            := 'RET_RI_INV';
149386 l_line_definition_owner_code := 'S';
149387 l_line_definition_code       := 'PI_RET_RI_INV';
149388 --
149389 l_balance_type_code          := 'A';
149390 l_segment                     := NULL;
149391 l_ccid                        := NULL;
149392 l_adr_transaction_coa_id      := NULL;
149393 l_adr_accounting_coa_id       := NULL;
149394 l_adr_flexfield_segment_code  := NULL;
149395 l_adr_flex_value_set_id       := NULL;
149396 l_adr_value_type_code         := NULL;
149397 l_adr_value_combination_id    := NULL;
149398 l_adr_value_segment_code      := NULL;
149399 
149400 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
149401 l_bflow_class_code           := '';    -- 4219869 Business Flow
149402 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
149403 l_budgetary_control_flag     := 'N';
149404 
149405 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
149406 l_bflow_applied_to_amt       := NULL; -- 5132302
149407 l_entered_amt_idx            := NULL;          -- 4262811
149408 l_accted_amt_idx             := NULL;          -- 4262811
149409 l_acc_rev_flag               := NULL;          -- 4262811
149410 l_accrual_line_num           := NULL;          -- 4262811
149411 l_tmp_amt                    := NULL;          -- 4262811
149412 --
149413  
149414 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
149415     l_balance_type_code <> 'B' THEN
149416 IF NVL(p_source_97,9E125) =  1
149417  THEN 
149418 
149419    --
149420    XLA_AE_LINES_PKG.SetNewLine;
149421 
149422    p_balance_type_code          := l_balance_type_code;
149423    -- set the flag so later we will know whether the gain loss line needs to be created
149424    
149425    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
149426      p_actual_flag :='A';
149427    END IF;
149428 
149429    --
149430    -- bulk performance
149431    --
149432    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
149433                                       p_header_num   => 0); -- 4262811
149434    --
149435    -- set accounting line options
149436    --
149437    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
149438            p_natural_side_code          => 'D'
149439          , p_gain_or_loss_flag          => 'N'
149440          , p_gl_transfer_mode_code      => 'S'
149441          , p_acct_entry_type_code       => 'A'
149442          , p_switch_side_flag           => 'Y'
149443          , p_merge_duplicate_code       => 'N'
149444          );
149445    --
149446    l_acc_rev_natural_side_code := 'C';  -- 4262811
149447    -- 
149448    --
149449    -- set accounting line type info
149450    --
149451    xla_ae_lines_pkg.SetAcctLineType
149452       (p_component_type             => l_component_type
149453       ,p_event_type_code            => l_event_type_code
149454       ,p_line_definition_owner_code => l_line_definition_owner_code
149455       ,p_line_definition_code       => l_line_definition_code
149456       ,p_accounting_line_code       => l_component_code
149457       ,p_accounting_line_type_code  => l_component_type_code
149458       ,p_accounting_line_appl_id    => l_component_appl_id
149459       ,p_amb_context_code           => l_amb_context_code
149460       ,p_entity_code                => l_entity_code
149461       ,p_event_class_code           => l_event_class_code);
149462    --
149463    -- set accounting class
149464    --
149465    xla_ae_lines_pkg.SetAcctClass(
149466            p_accounting_class_code  => 'INVENTORY_VALUATION'
149467          , p_ae_header_id           => l_ae_header_id
149468          );
149469 
149470    --
149471    -- set rounding class
149472    --
149473    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
149474                       'INVENTORY_VALUATION';
149475 
149476    --
149477    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
149478    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
149479    --
149480    -- bulk performance
149481    --
149482    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
149483 
149484    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
149485       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
149486 
149487    -- 4955764
149488    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
149489       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
149490 
149491    -- 4458381 Public Sector Enh
149492    
149493    --
149494    -- set accounting attributes for the line type
149495    --
149496    l_entered_amt_idx := 17;
149497    l_accted_amt_idx  := 22;
149498    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
149499    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
149500    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
149501    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
149502    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
149503    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
149504    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
149505    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
149506    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
149507    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
149508    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
149509    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
149510    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
149511    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
149512    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
149513    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
149514    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
149515    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
149516    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
149517    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
149518    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
149519    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
149520    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
149521    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
149522    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
149523    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
149524    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
149525    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
149526    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
149527    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
149528    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
149529    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
149530    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
149531    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
149532    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
149533    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
149534    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
149535    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
149536    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
149537    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
149538    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
149539    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
149540    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
149541    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
149542    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
149543    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
149544    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
149545    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
149546    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
149547 
149548    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
149549    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
149550 
149551    ---------------------------------------------------------------------------------------------------------------
149552    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
149553    ---------------------------------------------------------------------------------------------------------------
149554    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
149555 
149556    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
149557    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
149558 
149559    IF xla_accounting_cache_pkg.GetValueChar
149560          (p_source_code         => 'LEDGER_CATEGORY_CODE'
149561          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
149562    AND l_bflow_method_code = 'PRIOR_ENTRY'
149563 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
149564    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
149565          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
149566        )
149567    THEN
149568          xla_ae_lines_pkg.BflowUpgEntry
149569            (p_business_method_code    => l_bflow_method_code
149570            ,p_business_class_code     => l_bflow_class_code
149571            ,p_balance_type            => l_balance_type_code);
149572    ELSE
149573       NULL;
149574 -- No business flow processing for business flow method of NONE.
149575    END IF;
149576 
149577    --
149578    -- call analytical criteria
149579    --
149580    
149581 
149582 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
149583 xla_ae_lines_pkg.SetAnalyticalCriteria(
149584    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
149585  , p_analytical_criterion_owner   => 'S'
149586  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
149587  , p_amb_context_code             => 'DEFAULT'
149588  , p_balancing_flag               => 'Y'
149589  
149590  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
149591  , p_analytical_detail_num_1     =>  NULL
149592  , p_analytical_detail_date_1    =>  NULL
149593 
149594  , p_ae_header_id                 => l_ae_header_id
149595 )
149596 ;
149597 --
149598 
149599    --
149600    -- call description
149601    --
149602    
149603 xla_ae_lines_pkg.SetLineDescription(
149604    p_ae_header_id => l_ae_header_id
149605   ,p_description  => Description_1 (
149606      p_application_id         => p_application_id
149607    , p_ae_header_id           => l_ae_header_id 
149608 , p_source_1 => p_source_1
149609 , p_source_2 => p_source_2
149610 , p_source_3 => p_source_3
149611 , p_source_4 => p_source_4
149612 , p_source_5 => p_source_5
149613    )
149614 );
149615 
149616 
149617    --
149618    -- call ADRs
149619    -- Bug 4922099
149620    --
149621    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
149622         (NVL(l_actual_upg_option, 'N') = 'O') OR
149623         (NVL(l_enc_upg_option, 'N') = 'O')
149624       )
149625    THEN
149626    NULL;
149627    --
149628    --
149629    
149630   l_ccid := AcctDerRule_28(
149631            p_application_id           => p_application_id
149632          , p_ae_header_id             => l_ae_header_id 
149633 , p_source_15 => p_source_15
149634 , p_source_41 => p_source_41
149635 , p_source_42 => p_source_42
149636 , p_source_43 => p_source_43
149637 , p_source_44 => p_source_44
149638 , p_source_45 => p_source_45
149639          , x_transaction_coa_id       => l_adr_transaction_coa_id
149640          , x_accounting_coa_id        => l_adr_accounting_coa_id
149641          , x_value_type_code          => l_adr_value_type_code
149642          , p_side                     => 'NA'
149643    );
149644 
149645    xla_ae_lines_pkg.set_ccid(
149646     p_code_combination_id          => l_ccid
149647   , p_value_type_code              => l_adr_value_type_code
149648   , p_transaction_coa_id           => l_adr_transaction_coa_id
149649   , p_accounting_coa_id            => l_adr_accounting_coa_id
149650   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
149651   , p_adr_type_code                => 'S'
149652   , p_component_type               => l_component_type
149653   , p_component_code               => l_component_code
149654   , p_component_type_code          => l_component_type_code
149655   , p_component_appl_id            => l_component_appl_id
149656   , p_amb_context_code             => l_amb_context_code
149657   , p_side                         => 'NA'
149658   );
149659 
149660 
149661    --
149662    --
149663    END IF;
149664    --
149665    -- Bug 4922099
149666    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
149667           (NVL(l_enc_upg_option, 'N') = 'O')
149668         ) AND
149669         (l_bflow_method_code = 'PRIOR_ENTRY')
149670       )
149671    THEN
149672       IF
149673       --
149674       1 = 2
149675       --
149676       THEN
149677       xla_accounting_err_pkg.build_message
149678                                     (p_appli_s_name            => 'XLA'
149679                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
149680                                     ,p_token_1                 => 'LINE_NUMBER'
149681                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
149682                                     ,p_token_2                 => 'LINE_TYPE_NAME'
149683                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
149684                                                                              l_component_type
149685                                                                             ,l_component_code
149686                                                                             ,l_component_type_code
149687                                                                             ,l_component_appl_id
149688                                                                             ,l_amb_context_code
149689                                                                             ,l_entity_code
149690                                                                             ,l_event_class_code
149691                                                                            )
149692                                     ,p_token_3                 => 'OWNER'
149693                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
149694                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
149695                                                                           ,p_lookup_code    => l_component_type_code
149696                                                                          )
149697                                     ,p_token_4                 => 'PRODUCT_NAME'
149698                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
149699                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
149700                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
149701                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
149702                                     ,p_ae_header_id            =>  NULL
149703                                        );
149704 
149705         IF (C_LEVEL_ERROR>= g_log_level) THEN
149706                  trace
149707                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
149708                       ,p_level    => C_LEVEL_ERROR
149709                       ,p_module   => l_log_module);
149710         END IF;
149711       END IF;
149712    END IF;
149713    --
149714    --
149715    ------------------------------------------------------------------------------------------------
149716    -- 4219869 Business Flow
149717    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
149718    -- Prior Entry.  Currently, the following code is always generated.
149719    ------------------------------------------------------------------------------------------------
149720    XLA_AE_LINES_PKG.ValidateCurrentLine;
149721 
149722    ------------------------------------------------------------------------------------
149723    -- 4219869 Business Flow
149724    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
149725    ------------------------------------------------------------------------------------
149726    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
149727 
149728    ----------------------------------------------------------------------------------
149729    -- 4219869 Business Flow
149730    -- Update journal entry status -- Need to generate this within IF <condition>
149731    ----------------------------------------------------------------------------------
149732    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
149733          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
149734          ,p_balance_type_code => l_balance_type_code
149735          );
149736 
149737    -------------------------------------------------------------------------------------------
149738    -- 4262811 - Generate the Accrual Reversal lines
149739    -------------------------------------------------------------------------------------------
149740    BEGIN
149741       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
149742                               (g_array_event(p_event_id).array_value_num('header_index'));
149743       IF l_acc_rev_flag IS NULL THEN
149744          l_acc_rev_flag := 'N';
149745       END IF;
149746    EXCEPTION
149747       WHEN OTHERS THEN
149748          l_acc_rev_flag := 'N';
149749    END;
149750    --
149751    IF (l_acc_rev_flag = 'Y') THEN
149752 
149753        -- 4645092  ------------------------------------------------------------------------------
149754        -- To allow MPA report to determine if it should generate report process
149755        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
149756        ------------------------------------------------------------------------------------------
149757 
149758        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
149759        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
149760    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
149761    -- call ADRs
149762    -- Bug 4922099
149763    --
149764    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
149765         (NVL(l_actual_upg_option, 'N') = 'O') OR
149766         (NVL(l_enc_upg_option, 'N') = 'O')
149767       )
149768    THEN
149769    NULL;
149770    --
149771    --
149772    
149773   l_ccid := AcctDerRule_28(
149774            p_application_id           => p_application_id
149775          , p_ae_header_id             => l_ae_header_id 
149776 , p_source_15 => p_source_15
149777 , p_source_41 => p_source_41
149778 , p_source_42 => p_source_42
149779 , p_source_43 => p_source_43
149780 , p_source_44 => p_source_44
149781 , p_source_45 => p_source_45
149782          , x_transaction_coa_id       => l_adr_transaction_coa_id
149783          , x_accounting_coa_id        => l_adr_accounting_coa_id
149784          , x_value_type_code          => l_adr_value_type_code
149785          , p_side                     => 'NA'
149786    );
149787 
149788    xla_ae_lines_pkg.set_ccid(
149789     p_code_combination_id          => l_ccid
149790   , p_value_type_code              => l_adr_value_type_code
149791   , p_transaction_coa_id           => l_adr_transaction_coa_id
149792   , p_accounting_coa_id            => l_adr_accounting_coa_id
149793   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
149794   , p_adr_type_code                => 'S'
149795   , p_component_type               => l_component_type
149796   , p_component_code               => l_component_code
149797   , p_component_type_code          => l_component_type_code
149798   , p_component_appl_id            => l_component_appl_id
149799   , p_amb_context_code             => l_amb_context_code
149800   , p_side                         => 'NA'
149801   );
149802 
149803 
149804    --
149805    --
149806    END IF;
149807 
149808        --
149809        -- Update the line information that should be overwritten
149810        --
149811        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
149812                                          p_header_num   => 1);
149813        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
149814 
149815        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
149816 
149817        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
149818           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
149819        END IF;
149820 
149821       --
149822       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
149823       --
149824       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
149825           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
149826       ELSE
149827           ---------------------------------------------------------------------------------------------------
149828           -- 4262811a Switch Sign
149829           ---------------------------------------------------------------------------------------------------
149830           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
149831           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
149832                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
149833           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
149834                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
149835           -- 5132302
149836           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
149837                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
149838 
149839       END IF;
149840 
149841       -- 4955764
149842       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
149843       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
149844 
149845 
149846       XLA_AE_LINES_PKG.ValidateCurrentLine;
149847       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
149848 
149849       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
149850                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
149851                ,p_balance_type_code => l_balance_type_code);
149852 
149853    END IF;
149854 
149855    -----------------------------------------------------------------------------------------
149856    -- 4262811 Multiperiod Accounting
149857    -----------------------------------------------------------------------------------------
149858      -- No MPA option is assigned.
149859 
149860 
149861 END IF;
149862 END IF;
149863 --
149864 
149865 --
149866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149867    trace
149868       (p_msg      => 'END of AcctLineType_280'
149869       ,p_level    => C_LEVEL_PROCEDURE
149870       ,p_module   => l_log_module);
149871 END IF;
149872 --
149873 EXCEPTION
149874   WHEN xla_exceptions_pkg.application_exception THEN
149875       RAISE;
149876   WHEN OTHERS THEN
149877        xla_exceptions_pkg.raise_message
149878            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_280');
149879 END AcctLineType_280;
149880 --
149881 
149882 ---------------------------------------
149883 --
149884 -- PRIVATE FUNCTION
149885 --         AcctLineType_281
149886 --
149887 ---------------------------------------
149888 PROCEDURE AcctLineType_281 (
149889   p_application_id        IN NUMBER
149890  ,p_event_id              IN NUMBER
149891  ,p_calculate_acctd_flag  IN VARCHAR2
149892  ,p_calculate_g_l_flag    IN VARCHAR2
149893  ,p_actual_flag           IN OUT VARCHAR2
149894  ,p_balance_type_code     OUT VARCHAR2
149895  ,p_gain_or_loss_ref      OUT VARCHAR2
149896  
149897 --TRANSACTION_ID
149898  , p_source_1            IN NUMBER
149899 --Item Concatenated Segments
149900  , p_source_2            IN VARCHAR2
149901 --Transaction Quantity
149902  , p_source_3            IN NUMBER
149903 --Transaction Unit of Measure Code
149904  , p_source_4            IN VARCHAR2
149905 --Inventory Transaction Type Description
149906  , p_source_5            IN VARCHAR2
149907 --Cost Element Name
149908  , p_source_15            IN NUMBER
149909 --Product Line Accounting Category Material Account
149910  , p_source_41            IN NUMBER
149911 --Product Line Accounting Category Material Overhead Account
149912  , p_source_42            IN NUMBER
149913 --Product Line Accounting Category Resource Account
149914  , p_source_43            IN NUMBER
149915 --Product Line Accounting Category Outside Processing Account
149916  , p_source_44            IN NUMBER
149917 --Product Line Accounting Category Overhead Account
149918  , p_source_45            IN NUMBER
149919 --DISTRIBUTION_IDENTIFIER
149920  , p_source_84            IN NUMBER
149921 --Distribution Type
149922  , p_source_85            IN VARCHAR2
149923  , p_source_85_meaning    IN VARCHAR2
149924 --Entered Currency Code
149925  , p_source_88            IN VARCHAR2
149926 --Entered Amount
149927  , p_source_91            IN NUMBER
149928 --Currency Conversion Date
149929  , p_source_92            IN DATE
149930 --Currency Conversion Rate
149931  , p_source_93            IN NUMBER
149932 --Currency Conversion Type
149933  , p_source_94            IN VARCHAR2
149934 --Accounted Amount
149935  , p_source_95            IN NUMBER
149936 --Accounting Line Type
149937  , p_source_97            IN NUMBER
149938 --Organization Code
149939  , p_source_108            IN VARCHAR2
149940 )
149941 IS
149942 
149943 l_component_type              VARCHAR2(80);
149944 l_component_code              VARCHAR2(30);
149945 l_component_type_code         VARCHAR2(1);
149946 l_component_appl_id           INTEGER;
149947 l_amb_context_code            VARCHAR2(30);
149948 l_entity_code                 VARCHAR2(30);
149949 l_event_class_code            VARCHAR2(30);
149950 l_ae_header_id                NUMBER;
149951 l_event_type_code             VARCHAR2(30);
149952 l_line_definition_code        VARCHAR2(30);
149953 l_line_definition_owner_code  VARCHAR2(1);
149954 --
149955 -- adr variables
149956 l_segment                     VARCHAR2(30);
149957 l_ccid                        NUMBER;
149958 l_adr_transaction_coa_id      NUMBER;
149959 l_adr_accounting_coa_id       NUMBER;
149960 l_adr_flexfield_segment_code  VARCHAR2(30);
149961 l_adr_flex_value_set_id       NUMBER;
149962 l_adr_value_type_code         VARCHAR2(30);
149963 l_adr_value_combination_id    NUMBER;
149964 l_adr_value_segment_code      VARCHAR2(30);
149965 
149966 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
149967 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
149968 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
149969 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
149970 
149971 -- 4262811 Variables ------------------------------------------------------------------------------------------
149972 l_entered_amt_idx             NUMBER;
149973 l_accted_amt_idx              NUMBER;
149974 l_acc_rev_flag                VARCHAR2(1);
149975 l_accrual_line_num            NUMBER;
149976 l_tmp_amt                     NUMBER;
149977 l_acc_rev_natural_side_code   VARCHAR2(1);
149978 
149979 l_num_entries                 NUMBER;
149980 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
149981 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
149982 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
149983 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
149984 l_recog_line_1                NUMBER;
149985 l_recog_line_2                NUMBER;
149986 
149987 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
149988 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
149989 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
149990 
149991 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
149992 
149993 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
149994 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
149995 
149996 ---------------------------------------------------------------------------------------------------------------
149997 
149998 
149999 --
150000 -- bulk performance
150001 --
150002 l_balance_type_code           VARCHAR2(1);
150003 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
150004 l_log_module                  VARCHAR2(240);
150005 
150006 --
150007 -- Upgrade strategy
150008 --
150009 l_actual_upg_option           VARCHAR2(1);
150010 l_enc_upg_option           VARCHAR2(1);
150011 
150012 --
150013 BEGIN
150014 --
150015 IF g_log_enabled THEN
150016       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_281';
150017 END IF;
150018 --
150019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150020 
150021       trace
150022          (p_msg      => 'BEGIN of AcctLineType_281'
150023          ,p_level    => C_LEVEL_PROCEDURE
150024          ,p_module   => l_log_module);
150025 
150026 END IF;
150027 --
150028 l_component_type             := 'AMB_JLT';
150029 l_component_code             := 'INVENTORY_VALUATION';
150030 l_component_type_code        := 'S';
150031 l_component_appl_id          :=  707;
150032 l_amb_context_code           := 'DEFAULT';
150033 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
150034 l_event_class_code           := 'SALES_ORDER';
150035 l_event_type_code            := 'RMA_RCPT';
150036 l_line_definition_owner_code := 'S';
150037 l_line_definition_code       := 'PI_RMA_RCPT';
150038 --
150039 l_balance_type_code          := 'A';
150040 l_segment                     := NULL;
150041 l_ccid                        := NULL;
150042 l_adr_transaction_coa_id      := NULL;
150043 l_adr_accounting_coa_id       := NULL;
150044 l_adr_flexfield_segment_code  := NULL;
150045 l_adr_flex_value_set_id       := NULL;
150046 l_adr_value_type_code         := NULL;
150047 l_adr_value_combination_id    := NULL;
150048 l_adr_value_segment_code      := NULL;
150049 
150050 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
150051 l_bflow_class_code           := '';    -- 4219869 Business Flow
150052 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
150053 l_budgetary_control_flag     := 'N';
150054 
150055 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
150056 l_bflow_applied_to_amt       := NULL; -- 5132302
150057 l_entered_amt_idx            := NULL;          -- 4262811
150058 l_accted_amt_idx             := NULL;          -- 4262811
150059 l_acc_rev_flag               := NULL;          -- 4262811
150060 l_accrual_line_num           := NULL;          -- 4262811
150061 l_tmp_amt                    := NULL;          -- 4262811
150062 --
150063  
150064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
150065     l_balance_type_code <> 'B' THEN
150066 IF NVL(p_source_97,9E125) =  1
150067  THEN 
150068 
150069    --
150070    XLA_AE_LINES_PKG.SetNewLine;
150071 
150072    p_balance_type_code          := l_balance_type_code;
150073    -- set the flag so later we will know whether the gain loss line needs to be created
150074    
150075    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
150076      p_actual_flag :='A';
150077    END IF;
150078 
150079    --
150080    -- bulk performance
150081    --
150082    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
150083                                       p_header_num   => 0); -- 4262811
150084    --
150085    -- set accounting line options
150086    --
150087    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
150088            p_natural_side_code          => 'D'
150089          , p_gain_or_loss_flag          => 'N'
150090          , p_gl_transfer_mode_code      => 'S'
150091          , p_acct_entry_type_code       => 'A'
150092          , p_switch_side_flag           => 'Y'
150093          , p_merge_duplicate_code       => 'N'
150094          );
150095    --
150096    l_acc_rev_natural_side_code := 'C';  -- 4262811
150097    -- 
150098    --
150099    -- set accounting line type info
150100    --
150101    xla_ae_lines_pkg.SetAcctLineType
150102       (p_component_type             => l_component_type
150103       ,p_event_type_code            => l_event_type_code
150104       ,p_line_definition_owner_code => l_line_definition_owner_code
150105       ,p_line_definition_code       => l_line_definition_code
150106       ,p_accounting_line_code       => l_component_code
150107       ,p_accounting_line_type_code  => l_component_type_code
150108       ,p_accounting_line_appl_id    => l_component_appl_id
150109       ,p_amb_context_code           => l_amb_context_code
150110       ,p_entity_code                => l_entity_code
150111       ,p_event_class_code           => l_event_class_code);
150112    --
150113    -- set accounting class
150114    --
150115    xla_ae_lines_pkg.SetAcctClass(
150116            p_accounting_class_code  => 'INVENTORY_VALUATION'
150117          , p_ae_header_id           => l_ae_header_id
150118          );
150119 
150120    --
150121    -- set rounding class
150122    --
150123    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
150124                       'INVENTORY_VALUATION';
150125 
150126    --
150127    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
150128    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
150129    --
150130    -- bulk performance
150131    --
150132    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
150133 
150134    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
150135       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
150136 
150137    -- 4955764
150138    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
150139       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
150140 
150141    -- 4458381 Public Sector Enh
150142    
150143    --
150144    -- set accounting attributes for the line type
150145    --
150146    l_entered_amt_idx := 3;
150147    l_accted_amt_idx  := 8;
150148    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
150149    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
150150    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
150151    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
150152    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
150153    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
150154    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
150155    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
150156    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
150157    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
150158    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
150159    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
150160    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
150161    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
150162    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
150163    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
150164    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
150165 
150166    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
150167    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
150168 
150169    ---------------------------------------------------------------------------------------------------------------
150170    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
150171    ---------------------------------------------------------------------------------------------------------------
150172    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
150173 
150174    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
150175    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
150176 
150177    IF xla_accounting_cache_pkg.GetValueChar
150178          (p_source_code         => 'LEDGER_CATEGORY_CODE'
150179          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
150180    AND l_bflow_method_code = 'PRIOR_ENTRY'
150181 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
150182    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
150183          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
150184        )
150185    THEN
150186          xla_ae_lines_pkg.BflowUpgEntry
150187            (p_business_method_code    => l_bflow_method_code
150188            ,p_business_class_code     => l_bflow_class_code
150189            ,p_balance_type            => l_balance_type_code);
150190    ELSE
150191       NULL;
150192 -- No business flow processing for business flow method of NONE.
150193    END IF;
150194 
150195    --
150196    -- call analytical criteria
150197    --
150198    
150199 
150200 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
150201 xla_ae_lines_pkg.SetAnalyticalCriteria(
150202    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
150203  , p_analytical_criterion_owner   => 'S'
150204  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
150205  , p_amb_context_code             => 'DEFAULT'
150206  , p_balancing_flag               => 'Y'
150207  
150208  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
150209  , p_analytical_detail_num_1     =>  NULL
150210  , p_analytical_detail_date_1    =>  NULL
150211 
150212  , p_ae_header_id                 => l_ae_header_id
150213 )
150214 ;
150215 --
150216 
150217    --
150218    -- call description
150219    --
150220    
150221 xla_ae_lines_pkg.SetLineDescription(
150222    p_ae_header_id => l_ae_header_id
150223   ,p_description  => Description_1 (
150224      p_application_id         => p_application_id
150225    , p_ae_header_id           => l_ae_header_id 
150226 , p_source_1 => p_source_1
150227 , p_source_2 => p_source_2
150228 , p_source_3 => p_source_3
150229 , p_source_4 => p_source_4
150230 , p_source_5 => p_source_5
150231    )
150232 );
150233 
150234 
150235    --
150236    -- call ADRs
150237    -- Bug 4922099
150238    --
150239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
150240         (NVL(l_actual_upg_option, 'N') = 'O') OR
150241         (NVL(l_enc_upg_option, 'N') = 'O')
150242       )
150243    THEN
150244    NULL;
150245    --
150246    --
150247    
150248   l_ccid := AcctDerRule_28(
150249            p_application_id           => p_application_id
150250          , p_ae_header_id             => l_ae_header_id 
150251 , p_source_15 => p_source_15
150252 , p_source_41 => p_source_41
150253 , p_source_42 => p_source_42
150254 , p_source_43 => p_source_43
150255 , p_source_44 => p_source_44
150256 , p_source_45 => p_source_45
150257          , x_transaction_coa_id       => l_adr_transaction_coa_id
150258          , x_accounting_coa_id        => l_adr_accounting_coa_id
150259          , x_value_type_code          => l_adr_value_type_code
150260          , p_side                     => 'NA'
150261    );
150262 
150263    xla_ae_lines_pkg.set_ccid(
150264     p_code_combination_id          => l_ccid
150265   , p_value_type_code              => l_adr_value_type_code
150266   , p_transaction_coa_id           => l_adr_transaction_coa_id
150267   , p_accounting_coa_id            => l_adr_accounting_coa_id
150268   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
150269   , p_adr_type_code                => 'S'
150270   , p_component_type               => l_component_type
150271   , p_component_code               => l_component_code
150272   , p_component_type_code          => l_component_type_code
150273   , p_component_appl_id            => l_component_appl_id
150274   , p_amb_context_code             => l_amb_context_code
150275   , p_side                         => 'NA'
150276   );
150277 
150278 
150279    --
150280    --
150281    END IF;
150282    --
150283    -- Bug 4922099
150284    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
150285           (NVL(l_enc_upg_option, 'N') = 'O')
150286         ) AND
150287         (l_bflow_method_code = 'PRIOR_ENTRY')
150288       )
150289    THEN
150290       IF
150291       --
150292       1 = 2
150293       --
150294       THEN
150295       xla_accounting_err_pkg.build_message
150296                                     (p_appli_s_name            => 'XLA'
150297                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
150298                                     ,p_token_1                 => 'LINE_NUMBER'
150299                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
150300                                     ,p_token_2                 => 'LINE_TYPE_NAME'
150301                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
150302                                                                              l_component_type
150303                                                                             ,l_component_code
150304                                                                             ,l_component_type_code
150305                                                                             ,l_component_appl_id
150306                                                                             ,l_amb_context_code
150307                                                                             ,l_entity_code
150308                                                                             ,l_event_class_code
150309                                                                            )
150310                                     ,p_token_3                 => 'OWNER'
150311                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
150312                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
150313                                                                           ,p_lookup_code    => l_component_type_code
150314                                                                          )
150315                                     ,p_token_4                 => 'PRODUCT_NAME'
150316                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
150317                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
150318                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
150319                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
150320                                     ,p_ae_header_id            =>  NULL
150321                                        );
150322 
150323         IF (C_LEVEL_ERROR>= g_log_level) THEN
150324                  trace
150325                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
150326                       ,p_level    => C_LEVEL_ERROR
150327                       ,p_module   => l_log_module);
150328         END IF;
150329       END IF;
150330    END IF;
150331    --
150332    --
150333    ------------------------------------------------------------------------------------------------
150334    -- 4219869 Business Flow
150335    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
150336    -- Prior Entry.  Currently, the following code is always generated.
150337    ------------------------------------------------------------------------------------------------
150338    XLA_AE_LINES_PKG.ValidateCurrentLine;
150339 
150340    ------------------------------------------------------------------------------------
150341    -- 4219869 Business Flow
150342    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
150343    ------------------------------------------------------------------------------------
150344    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
150345 
150346    ----------------------------------------------------------------------------------
150347    -- 4219869 Business Flow
150348    -- Update journal entry status -- Need to generate this within IF <condition>
150349    ----------------------------------------------------------------------------------
150350    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
150351          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
150352          ,p_balance_type_code => l_balance_type_code
150353          );
150354 
150355    -------------------------------------------------------------------------------------------
150356    -- 4262811 - Generate the Accrual Reversal lines
150357    -------------------------------------------------------------------------------------------
150358    BEGIN
150359       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
150360                               (g_array_event(p_event_id).array_value_num('header_index'));
150361       IF l_acc_rev_flag IS NULL THEN
150362          l_acc_rev_flag := 'N';
150363       END IF;
150364    EXCEPTION
150365       WHEN OTHERS THEN
150366          l_acc_rev_flag := 'N';
150367    END;
150368    --
150369    IF (l_acc_rev_flag = 'Y') THEN
150370 
150371        -- 4645092  ------------------------------------------------------------------------------
150372        -- To allow MPA report to determine if it should generate report process
150373        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
150374        ------------------------------------------------------------------------------------------
150375 
150376        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
150377        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
150378    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
150379    -- call ADRs
150380    -- Bug 4922099
150381    --
150382    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
150383         (NVL(l_actual_upg_option, 'N') = 'O') OR
150384         (NVL(l_enc_upg_option, 'N') = 'O')
150385       )
150386    THEN
150387    NULL;
150388    --
150389    --
150390    
150391   l_ccid := AcctDerRule_28(
150392            p_application_id           => p_application_id
150393          , p_ae_header_id             => l_ae_header_id 
150394 , p_source_15 => p_source_15
150395 , p_source_41 => p_source_41
150396 , p_source_42 => p_source_42
150397 , p_source_43 => p_source_43
150398 , p_source_44 => p_source_44
150399 , p_source_45 => p_source_45
150400          , x_transaction_coa_id       => l_adr_transaction_coa_id
150401          , x_accounting_coa_id        => l_adr_accounting_coa_id
150402          , x_value_type_code          => l_adr_value_type_code
150403          , p_side                     => 'NA'
150404    );
150405 
150406    xla_ae_lines_pkg.set_ccid(
150407     p_code_combination_id          => l_ccid
150408   , p_value_type_code              => l_adr_value_type_code
150409   , p_transaction_coa_id           => l_adr_transaction_coa_id
150410   , p_accounting_coa_id            => l_adr_accounting_coa_id
150411   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
150412   , p_adr_type_code                => 'S'
150413   , p_component_type               => l_component_type
150414   , p_component_code               => l_component_code
150415   , p_component_type_code          => l_component_type_code
150416   , p_component_appl_id            => l_component_appl_id
150417   , p_amb_context_code             => l_amb_context_code
150418   , p_side                         => 'NA'
150419   );
150420 
150421 
150422    --
150423    --
150424    END IF;
150425 
150426        --
150427        -- Update the line information that should be overwritten
150428        --
150429        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
150430                                          p_header_num   => 1);
150431        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
150432 
150433        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
150434 
150435        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
150436           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
150437        END IF;
150438 
150439       --
150440       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
150441       --
150442       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
150443           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
150444       ELSE
150445           ---------------------------------------------------------------------------------------------------
150446           -- 4262811a Switch Sign
150447           ---------------------------------------------------------------------------------------------------
150448           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
150449           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
150450                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
150451           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
150452                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
150453           -- 5132302
150454           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
150455                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
150456 
150457       END IF;
150458 
150459       -- 4955764
150460       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
150461       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
150462 
150463 
150464       XLA_AE_LINES_PKG.ValidateCurrentLine;
150465       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
150466 
150467       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
150468                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
150469                ,p_balance_type_code => l_balance_type_code);
150470 
150471    END IF;
150472 
150473    -----------------------------------------------------------------------------------------
150474    -- 4262811 Multiperiod Accounting
150475    -----------------------------------------------------------------------------------------
150476      -- No MPA option is assigned.
150477 
150478 
150479 END IF;
150480 END IF;
150481 --
150482 
150483 --
150484 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150485    trace
150486       (p_msg      => 'END of AcctLineType_281'
150487       ,p_level    => C_LEVEL_PROCEDURE
150488       ,p_module   => l_log_module);
150489 END IF;
150490 --
150491 EXCEPTION
150492   WHEN xla_exceptions_pkg.application_exception THEN
150493       RAISE;
150494   WHEN OTHERS THEN
150495        xla_exceptions_pkg.raise_message
150496            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_281');
150497 END AcctLineType_281;
150498 --
150499 
150500 ---------------------------------------
150501 --
150502 -- PRIVATE FUNCTION
150503 --         AcctLineType_282
150504 --
150505 ---------------------------------------
150506 PROCEDURE AcctLineType_282 (
150507   p_application_id        IN NUMBER
150508  ,p_event_id              IN NUMBER
150509  ,p_calculate_acctd_flag  IN VARCHAR2
150510  ,p_calculate_g_l_flag    IN VARCHAR2
150511  ,p_actual_flag           IN OUT VARCHAR2
150512  ,p_balance_type_code     OUT VARCHAR2
150513  ,p_gain_or_loss_ref      OUT VARCHAR2
150514  
150515 --TRANSACTION_ID
150516  , p_source_1            IN NUMBER
150517 --Item Concatenated Segments
150518  , p_source_2            IN VARCHAR2
150519 --Transaction Quantity
150520  , p_source_3            IN NUMBER
150521 --Transaction Unit of Measure Code
150522  , p_source_4            IN VARCHAR2
150523 --Inventory Transaction Type Description
150524  , p_source_5            IN VARCHAR2
150525 --Cost Element Name
150526  , p_source_15            IN NUMBER
150527 --Product Line Accounting Category Material Account
150528  , p_source_41            IN NUMBER
150529 --Product Line Accounting Category Material Overhead Account
150530  , p_source_42            IN NUMBER
150531 --Product Line Accounting Category Resource Account
150532  , p_source_43            IN NUMBER
150533 --Product Line Accounting Category Outside Processing Account
150534  , p_source_44            IN NUMBER
150535 --Product Line Accounting Category Overhead Account
150536  , p_source_45            IN NUMBER
150537 --DISTRIBUTION_IDENTIFIER
150538  , p_source_84            IN NUMBER
150539 --Distribution Type
150540  , p_source_85            IN VARCHAR2
150541  , p_source_85_meaning    IN VARCHAR2
150542 --Entered Currency Code
150543  , p_source_88            IN VARCHAR2
150544 --Entered Amount
150545  , p_source_91            IN NUMBER
150546 --Currency Conversion Date
150547  , p_source_92            IN DATE
150548 --Currency Conversion Rate
150549  , p_source_93            IN NUMBER
150550 --Currency Conversion Type
150551  , p_source_94            IN VARCHAR2
150552 --Accounted Amount
150553  , p_source_95            IN NUMBER
150554 --Accounting Line Type
150555  , p_source_97            IN NUMBER
150556 --Organization Code
150557  , p_source_108            IN VARCHAR2
150558 )
150559 IS
150560 
150561 l_component_type              VARCHAR2(80);
150562 l_component_code              VARCHAR2(30);
150563 l_component_type_code         VARCHAR2(1);
150564 l_component_appl_id           INTEGER;
150565 l_amb_context_code            VARCHAR2(30);
150566 l_entity_code                 VARCHAR2(30);
150567 l_event_class_code            VARCHAR2(30);
150568 l_ae_header_id                NUMBER;
150569 l_event_type_code             VARCHAR2(30);
150570 l_line_definition_code        VARCHAR2(30);
150571 l_line_definition_owner_code  VARCHAR2(1);
150572 --
150573 -- adr variables
150574 l_segment                     VARCHAR2(30);
150575 l_ccid                        NUMBER;
150576 l_adr_transaction_coa_id      NUMBER;
150577 l_adr_accounting_coa_id       NUMBER;
150578 l_adr_flexfield_segment_code  VARCHAR2(30);
150579 l_adr_flex_value_set_id       NUMBER;
150580 l_adr_value_type_code         VARCHAR2(30);
150581 l_adr_value_combination_id    NUMBER;
150582 l_adr_value_segment_code      VARCHAR2(30);
150583 
150584 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
150585 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
150586 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
150587 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
150588 
150589 -- 4262811 Variables ------------------------------------------------------------------------------------------
150590 l_entered_amt_idx             NUMBER;
150591 l_accted_amt_idx              NUMBER;
150592 l_acc_rev_flag                VARCHAR2(1);
150593 l_accrual_line_num            NUMBER;
150594 l_tmp_amt                     NUMBER;
150595 l_acc_rev_natural_side_code   VARCHAR2(1);
150596 
150597 l_num_entries                 NUMBER;
150598 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
150599 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
150600 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
150601 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
150602 l_recog_line_1                NUMBER;
150603 l_recog_line_2                NUMBER;
150604 
150605 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
150606 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
150607 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
150608 
150609 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
150610 
150611 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
150612 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
150613 
150614 ---------------------------------------------------------------------------------------------------------------
150615 
150616 
150617 --
150618 -- bulk performance
150619 --
150620 l_balance_type_code           VARCHAR2(1);
150621 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
150622 l_log_module                  VARCHAR2(240);
150623 
150624 --
150625 -- Upgrade strategy
150626 --
150627 l_actual_upg_option           VARCHAR2(1);
150628 l_enc_upg_option           VARCHAR2(1);
150629 
150630 --
150631 BEGIN
150632 --
150633 IF g_log_enabled THEN
150634       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_282';
150635 END IF;
150636 --
150637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150638 
150639       trace
150640          (p_msg      => 'BEGIN of AcctLineType_282'
150641          ,p_level    => C_LEVEL_PROCEDURE
150642          ,p_module   => l_log_module);
150643 
150644 END IF;
150645 --
150646 l_component_type             := 'AMB_JLT';
150647 l_component_code             := 'INVENTORY_VALUATION';
150648 l_component_type_code        := 'S';
150649 l_component_appl_id          :=  707;
150650 l_amb_context_code           := 'DEFAULT';
150651 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
150652 l_event_class_code           := 'USER_DEFINE';
150653 l_event_type_code            := 'UDIR_INTERORG_SHIP';
150654 l_line_definition_owner_code := 'S';
150655 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
150656 --
150657 l_balance_type_code          := 'A';
150658 l_segment                     := NULL;
150659 l_ccid                        := NULL;
150660 l_adr_transaction_coa_id      := NULL;
150661 l_adr_accounting_coa_id       := NULL;
150662 l_adr_flexfield_segment_code  := NULL;
150663 l_adr_flex_value_set_id       := NULL;
150664 l_adr_value_type_code         := NULL;
150665 l_adr_value_combination_id    := NULL;
150666 l_adr_value_segment_code      := NULL;
150667 
150668 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
150669 l_bflow_class_code           := '';    -- 4219869 Business Flow
150670 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
150671 l_budgetary_control_flag     := 'N';
150672 
150673 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
150674 l_bflow_applied_to_amt       := NULL; -- 5132302
150675 l_entered_amt_idx            := NULL;          -- 4262811
150676 l_accted_amt_idx             := NULL;          -- 4262811
150677 l_acc_rev_flag               := NULL;          -- 4262811
150678 l_accrual_line_num           := NULL;          -- 4262811
150679 l_tmp_amt                    := NULL;          -- 4262811
150680 --
150681  
150682 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
150683     l_balance_type_code <> 'B' THEN
150684 IF NVL(p_source_97,9E125) =  1
150685  THEN 
150686 
150687    --
150688    XLA_AE_LINES_PKG.SetNewLine;
150689 
150690    p_balance_type_code          := l_balance_type_code;
150691    -- set the flag so later we will know whether the gain loss line needs to be created
150692    
150693    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
150694      p_actual_flag :='A';
150695    END IF;
150696 
150697    --
150698    -- bulk performance
150699    --
150700    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
150701                                       p_header_num   => 0); -- 4262811
150702    --
150703    -- set accounting line options
150704    --
150705    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
150706            p_natural_side_code          => 'D'
150707          , p_gain_or_loss_flag          => 'N'
150708          , p_gl_transfer_mode_code      => 'S'
150709          , p_acct_entry_type_code       => 'A'
150710          , p_switch_side_flag           => 'Y'
150711          , p_merge_duplicate_code       => 'N'
150712          );
150713    --
150714    l_acc_rev_natural_side_code := 'C';  -- 4262811
150715    -- 
150716    --
150717    -- set accounting line type info
150718    --
150719    xla_ae_lines_pkg.SetAcctLineType
150720       (p_component_type             => l_component_type
150721       ,p_event_type_code            => l_event_type_code
150722       ,p_line_definition_owner_code => l_line_definition_owner_code
150723       ,p_line_definition_code       => l_line_definition_code
150724       ,p_accounting_line_code       => l_component_code
150725       ,p_accounting_line_type_code  => l_component_type_code
150726       ,p_accounting_line_appl_id    => l_component_appl_id
150727       ,p_amb_context_code           => l_amb_context_code
150728       ,p_entity_code                => l_entity_code
150729       ,p_event_class_code           => l_event_class_code);
150730    --
150731    -- set accounting class
150732    --
150733    xla_ae_lines_pkg.SetAcctClass(
150734            p_accounting_class_code  => 'INVENTORY_VALUATION'
150735          , p_ae_header_id           => l_ae_header_id
150736          );
150737 
150738    --
150739    -- set rounding class
150740    --
150741    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
150742                       'INVENTORY_VALUATION';
150743 
150744    --
150745    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
150746    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
150747    --
150748    -- bulk performance
150749    --
150750    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
150751 
150752    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
150753       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
150754 
150755    -- 4955764
150756    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
150757       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
150758 
150759    -- 4458381 Public Sector Enh
150760    
150761    --
150762    -- set accounting attributes for the line type
150763    --
150764    l_entered_amt_idx := 3;
150765    l_accted_amt_idx  := 8;
150766    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
150767    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
150768    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
150769    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
150770    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
150771    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
150772    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
150773    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
150774    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
150775    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
150776    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
150777    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
150778    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
150779    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
150780    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
150781    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
150782    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
150783 
150784    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
150785    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
150786 
150787    ---------------------------------------------------------------------------------------------------------------
150788    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
150789    ---------------------------------------------------------------------------------------------------------------
150790    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
150791 
150792    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
150793    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
150794 
150795    IF xla_accounting_cache_pkg.GetValueChar
150796          (p_source_code         => 'LEDGER_CATEGORY_CODE'
150797          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
150798    AND l_bflow_method_code = 'PRIOR_ENTRY'
150799 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
150800    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
150801          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
150802        )
150803    THEN
150804          xla_ae_lines_pkg.BflowUpgEntry
150805            (p_business_method_code    => l_bflow_method_code
150806            ,p_business_class_code     => l_bflow_class_code
150807            ,p_balance_type            => l_balance_type_code);
150808    ELSE
150809       NULL;
150810 -- No business flow processing for business flow method of NONE.
150811    END IF;
150812 
150813    --
150814    -- call analytical criteria
150815    --
150816    
150817 
150818 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
150819 xla_ae_lines_pkg.SetAnalyticalCriteria(
150820    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
150821  , p_analytical_criterion_owner   => 'S'
150822  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
150823  , p_amb_context_code             => 'DEFAULT'
150824  , p_balancing_flag               => 'Y'
150825  
150826  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
150827  , p_analytical_detail_num_1     =>  NULL
150828  , p_analytical_detail_date_1    =>  NULL
150829 
150830  , p_ae_header_id                 => l_ae_header_id
150831 )
150832 ;
150833 --
150834 
150835    --
150836    -- call description
150837    --
150838    
150839 xla_ae_lines_pkg.SetLineDescription(
150840    p_ae_header_id => l_ae_header_id
150841   ,p_description  => Description_1 (
150842      p_application_id         => p_application_id
150843    , p_ae_header_id           => l_ae_header_id 
150844 , p_source_1 => p_source_1
150845 , p_source_2 => p_source_2
150846 , p_source_3 => p_source_3
150847 , p_source_4 => p_source_4
150848 , p_source_5 => p_source_5
150849    )
150850 );
150851 
150852 
150853    --
150854    -- call ADRs
150855    -- Bug 4922099
150856    --
150857    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
150858         (NVL(l_actual_upg_option, 'N') = 'O') OR
150859         (NVL(l_enc_upg_option, 'N') = 'O')
150860       )
150861    THEN
150862    NULL;
150863    --
150864    --
150865    
150866   l_ccid := AcctDerRule_28(
150867            p_application_id           => p_application_id
150868          , p_ae_header_id             => l_ae_header_id 
150869 , p_source_15 => p_source_15
150870 , p_source_41 => p_source_41
150871 , p_source_42 => p_source_42
150872 , p_source_43 => p_source_43
150873 , p_source_44 => p_source_44
150874 , p_source_45 => p_source_45
150875          , x_transaction_coa_id       => l_adr_transaction_coa_id
150876          , x_accounting_coa_id        => l_adr_accounting_coa_id
150877          , x_value_type_code          => l_adr_value_type_code
150878          , p_side                     => 'NA'
150879    );
150880 
150881    xla_ae_lines_pkg.set_ccid(
150882     p_code_combination_id          => l_ccid
150883   , p_value_type_code              => l_adr_value_type_code
150884   , p_transaction_coa_id           => l_adr_transaction_coa_id
150885   , p_accounting_coa_id            => l_adr_accounting_coa_id
150886   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
150887   , p_adr_type_code                => 'S'
150888   , p_component_type               => l_component_type
150889   , p_component_code               => l_component_code
150890   , p_component_type_code          => l_component_type_code
150891   , p_component_appl_id            => l_component_appl_id
150892   , p_amb_context_code             => l_amb_context_code
150893   , p_side                         => 'NA'
150894   );
150895 
150896 
150897    --
150898    --
150899    END IF;
150900    --
150901    -- Bug 4922099
150902    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
150903           (NVL(l_enc_upg_option, 'N') = 'O')
150904         ) AND
150905         (l_bflow_method_code = 'PRIOR_ENTRY')
150906       )
150907    THEN
150908       IF
150909       --
150910       1 = 2
150911       --
150912       THEN
150913       xla_accounting_err_pkg.build_message
150914                                     (p_appli_s_name            => 'XLA'
150915                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
150916                                     ,p_token_1                 => 'LINE_NUMBER'
150917                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
150918                                     ,p_token_2                 => 'LINE_TYPE_NAME'
150919                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
150920                                                                              l_component_type
150921                                                                             ,l_component_code
150922                                                                             ,l_component_type_code
150923                                                                             ,l_component_appl_id
150924                                                                             ,l_amb_context_code
150925                                                                             ,l_entity_code
150926                                                                             ,l_event_class_code
150927                                                                            )
150928                                     ,p_token_3                 => 'OWNER'
150929                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
150930                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
150931                                                                           ,p_lookup_code    => l_component_type_code
150932                                                                          )
150933                                     ,p_token_4                 => 'PRODUCT_NAME'
150934                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
150935                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
150936                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
150937                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
150938                                     ,p_ae_header_id            =>  NULL
150939                                        );
150940 
150941         IF (C_LEVEL_ERROR>= g_log_level) THEN
150942                  trace
150943                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
150944                       ,p_level    => C_LEVEL_ERROR
150945                       ,p_module   => l_log_module);
150946         END IF;
150947       END IF;
150948    END IF;
150949    --
150950    --
150951    ------------------------------------------------------------------------------------------------
150952    -- 4219869 Business Flow
150953    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
150954    -- Prior Entry.  Currently, the following code is always generated.
150955    ------------------------------------------------------------------------------------------------
150956    XLA_AE_LINES_PKG.ValidateCurrentLine;
150957 
150958    ------------------------------------------------------------------------------------
150959    -- 4219869 Business Flow
150960    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
150961    ------------------------------------------------------------------------------------
150962    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
150963 
150964    ----------------------------------------------------------------------------------
150965    -- 4219869 Business Flow
150966    -- Update journal entry status -- Need to generate this within IF <condition>
150967    ----------------------------------------------------------------------------------
150968    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
150969          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
150970          ,p_balance_type_code => l_balance_type_code
150971          );
150972 
150973    -------------------------------------------------------------------------------------------
150974    -- 4262811 - Generate the Accrual Reversal lines
150975    -------------------------------------------------------------------------------------------
150976    BEGIN
150977       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
150978                               (g_array_event(p_event_id).array_value_num('header_index'));
150979       IF l_acc_rev_flag IS NULL THEN
150980          l_acc_rev_flag := 'N';
150981       END IF;
150982    EXCEPTION
150983       WHEN OTHERS THEN
150984          l_acc_rev_flag := 'N';
150985    END;
150986    --
150987    IF (l_acc_rev_flag = 'Y') THEN
150988 
150989        -- 4645092  ------------------------------------------------------------------------------
150990        -- To allow MPA report to determine if it should generate report process
150991        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
150992        ------------------------------------------------------------------------------------------
150993 
150994        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
150995        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
150996    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
150997    -- call ADRs
150998    -- Bug 4922099
150999    --
151000    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
151001         (NVL(l_actual_upg_option, 'N') = 'O') OR
151002         (NVL(l_enc_upg_option, 'N') = 'O')
151003       )
151004    THEN
151005    NULL;
151006    --
151007    --
151008    
151009   l_ccid := AcctDerRule_28(
151010            p_application_id           => p_application_id
151011          , p_ae_header_id             => l_ae_header_id 
151012 , p_source_15 => p_source_15
151013 , p_source_41 => p_source_41
151014 , p_source_42 => p_source_42
151015 , p_source_43 => p_source_43
151016 , p_source_44 => p_source_44
151017 , p_source_45 => p_source_45
151018          , x_transaction_coa_id       => l_adr_transaction_coa_id
151019          , x_accounting_coa_id        => l_adr_accounting_coa_id
151020          , x_value_type_code          => l_adr_value_type_code
151021          , p_side                     => 'NA'
151022    );
151023 
151024    xla_ae_lines_pkg.set_ccid(
151025     p_code_combination_id          => l_ccid
151026   , p_value_type_code              => l_adr_value_type_code
151027   , p_transaction_coa_id           => l_adr_transaction_coa_id
151028   , p_accounting_coa_id            => l_adr_accounting_coa_id
151029   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
151030   , p_adr_type_code                => 'S'
151031   , p_component_type               => l_component_type
151032   , p_component_code               => l_component_code
151033   , p_component_type_code          => l_component_type_code
151034   , p_component_appl_id            => l_component_appl_id
151035   , p_amb_context_code             => l_amb_context_code
151036   , p_side                         => 'NA'
151037   );
151038 
151039 
151040    --
151041    --
151042    END IF;
151043 
151044        --
151045        -- Update the line information that should be overwritten
151046        --
151047        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
151048                                          p_header_num   => 1);
151049        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
151050 
151051        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
151052 
151053        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
151054           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
151055        END IF;
151056 
151057       --
151058       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
151059       --
151060       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
151061           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
151062       ELSE
151063           ---------------------------------------------------------------------------------------------------
151064           -- 4262811a Switch Sign
151065           ---------------------------------------------------------------------------------------------------
151066           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
151067           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
151068                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
151069           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
151070                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
151071           -- 5132302
151072           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
151073                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
151074 
151075       END IF;
151076 
151077       -- 4955764
151078       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
151079       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
151080 
151081 
151082       XLA_AE_LINES_PKG.ValidateCurrentLine;
151083       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
151084 
151085       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
151086                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
151087                ,p_balance_type_code => l_balance_type_code);
151088 
151089    END IF;
151090 
151091    -----------------------------------------------------------------------------------------
151092    -- 4262811 Multiperiod Accounting
151093    -----------------------------------------------------------------------------------------
151094      -- No MPA option is assigned.
151095 
151096 
151097 END IF;
151098 END IF;
151099 --
151100 
151101 --
151102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151103    trace
151104       (p_msg      => 'END of AcctLineType_282'
151105       ,p_level    => C_LEVEL_PROCEDURE
151106       ,p_module   => l_log_module);
151107 END IF;
151108 --
151109 EXCEPTION
151110   WHEN xla_exceptions_pkg.application_exception THEN
151111       RAISE;
151112   WHEN OTHERS THEN
151113        xla_exceptions_pkg.raise_message
151114            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_282');
151115 END AcctLineType_282;
151116 --
151117 
151118 ---------------------------------------
151119 --
151120 -- PRIVATE FUNCTION
151121 --         AcctLineType_283
151122 --
151123 ---------------------------------------
151124 PROCEDURE AcctLineType_283 (
151125   p_application_id        IN NUMBER
151126  ,p_event_id              IN NUMBER
151127  ,p_calculate_acctd_flag  IN VARCHAR2
151128  ,p_calculate_g_l_flag    IN VARCHAR2
151129  ,p_actual_flag           IN OUT VARCHAR2
151130  ,p_balance_type_code     OUT VARCHAR2
151131  ,p_gain_or_loss_ref      OUT VARCHAR2
151132  
151133 --TRANSACTION_ID
151134  , p_source_1            IN NUMBER
151135 --Item Concatenated Segments
151136  , p_source_2            IN VARCHAR2
151137 --Transaction Quantity
151138  , p_source_3            IN NUMBER
151139 --Transaction Unit of Measure Code
151140  , p_source_4            IN VARCHAR2
151141 --Inventory Transaction Type Description
151142  , p_source_5            IN VARCHAR2
151143 --Cost Element Name
151144  , p_source_15            IN NUMBER
151145 --Product Line Accounting Category Material Account
151146  , p_source_41            IN NUMBER
151147 --Product Line Accounting Category Material Overhead Account
151148  , p_source_42            IN NUMBER
151149 --Product Line Accounting Category Resource Account
151150  , p_source_43            IN NUMBER
151151 --Product Line Accounting Category Outside Processing Account
151152  , p_source_44            IN NUMBER
151153 --Product Line Accounting Category Overhead Account
151154  , p_source_45            IN NUMBER
151155 --Applied to Application ID
151156  , p_source_79            IN NUMBER
151157 --Applied to Distribution Link Type
151158  , p_source_80            IN VARCHAR2
151159 --Applied to Entity Code
151160  , p_source_81            IN VARCHAR2
151161 --DISTRIBUTION_IDENTIFIER
151162  , p_source_84            IN NUMBER
151163 --Distribution Type
151164  , p_source_85            IN VARCHAR2
151165  , p_source_85_meaning    IN VARCHAR2
151166 --Encumbrance Reversal Amount Entered
151167  , p_source_87            IN NUMBER
151168 --Entered Currency Code
151169  , p_source_88            IN VARCHAR2
151170 --Transaction Encumbrance Reversal Amount
151171  , p_source_89            IN NUMBER
151172 --Entered Amount
151173  , p_source_91            IN NUMBER
151174 --Currency Conversion Date
151175  , p_source_92            IN DATE
151176 --Currency Conversion Rate
151177  , p_source_93            IN NUMBER
151178 --Currency Conversion Type
151179  , p_source_94            IN VARCHAR2
151180 --Accounted Amount
151181  , p_source_95            IN NUMBER
151182 --Accounting Line Type
151183  , p_source_97            IN NUMBER
151184 --Costing Encumbrance Upgrade Option
151185  , p_source_100            IN VARCHAR2
151186 --TXN_PO_DISTRIBUTION_ID
151187  , p_source_101            IN NUMBER
151188 --TXN_PO_HEADER_ID
151189  , p_source_102            IN NUMBER
151190 --Requisition Budget Account
151191  , p_source_103            IN NUMBER
151192 --Requisition Encumbrance Type Identifier
151193  , p_source_104            IN NUMBER
151194 --Organization Code
151195  , p_source_108            IN VARCHAR2
151196 )
151197 IS
151198 
151199 l_component_type              VARCHAR2(80);
151200 l_component_code              VARCHAR2(30);
151201 l_component_type_code         VARCHAR2(1);
151202 l_component_appl_id           INTEGER;
151203 l_amb_context_code            VARCHAR2(30);
151204 l_entity_code                 VARCHAR2(30);
151205 l_event_class_code            VARCHAR2(30);
151206 l_ae_header_id                NUMBER;
151207 l_event_type_code             VARCHAR2(30);
151208 l_line_definition_code        VARCHAR2(30);
151209 l_line_definition_owner_code  VARCHAR2(1);
151210 --
151211 -- adr variables
151212 l_segment                     VARCHAR2(30);
151213 l_ccid                        NUMBER;
151214 l_adr_transaction_coa_id      NUMBER;
151215 l_adr_accounting_coa_id       NUMBER;
151216 l_adr_flexfield_segment_code  VARCHAR2(30);
151217 l_adr_flex_value_set_id       NUMBER;
151218 l_adr_value_type_code         VARCHAR2(30);
151219 l_adr_value_combination_id    NUMBER;
151220 l_adr_value_segment_code      VARCHAR2(30);
151221 
151222 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
151223 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
151224 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
151225 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
151226 
151227 -- 4262811 Variables ------------------------------------------------------------------------------------------
151228 l_entered_amt_idx             NUMBER;
151229 l_accted_amt_idx              NUMBER;
151230 l_acc_rev_flag                VARCHAR2(1);
151231 l_accrual_line_num            NUMBER;
151232 l_tmp_amt                     NUMBER;
151233 l_acc_rev_natural_side_code   VARCHAR2(1);
151234 
151235 l_num_entries                 NUMBER;
151236 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
151237 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
151238 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
151239 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
151240 l_recog_line_1                NUMBER;
151241 l_recog_line_2                NUMBER;
151242 
151243 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
151244 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
151245 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
151246 
151247 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
151248 
151249 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
151250 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
151251 
151252 ---------------------------------------------------------------------------------------------------------------
151253 
151254 
151255 --
151256 -- bulk performance
151257 --
151258 l_balance_type_code           VARCHAR2(1);
151259 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
151260 l_log_module                  VARCHAR2(240);
151261 
151262 --
151263 -- Upgrade strategy
151264 --
151265 l_actual_upg_option           VARCHAR2(1);
151266 l_enc_upg_option           VARCHAR2(1);
151267 
151268 --
151269 BEGIN
151270 --
151271 IF g_log_enabled THEN
151272       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_283';
151273 END IF;
151274 --
151275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151276 
151277       trace
151278          (p_msg      => 'BEGIN of AcctLineType_283'
151279          ,p_level    => C_LEVEL_PROCEDURE
151280          ,p_module   => l_log_module);
151281 
151282 END IF;
151283 --
151284 l_component_type             := 'AMB_JLT';
151285 l_component_code             := 'INVENTORY_VALUATION';
151286 l_component_type_code        := 'S';
151287 l_component_appl_id          :=  707;
151288 l_amb_context_code           := 'DEFAULT';
151289 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
151290 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
151291 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
151292 l_line_definition_owner_code := 'S';
151293 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_RCPT';
151294 --
151295 l_balance_type_code          := 'A';
151296 l_segment                     := NULL;
151297 l_ccid                        := NULL;
151298 l_adr_transaction_coa_id      := NULL;
151299 l_adr_accounting_coa_id       := NULL;
151300 l_adr_flexfield_segment_code  := NULL;
151301 l_adr_flex_value_set_id       := NULL;
151302 l_adr_value_type_code         := NULL;
151303 l_adr_value_combination_id    := NULL;
151304 l_adr_value_segment_code      := NULL;
151305 
151306 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
151307 l_bflow_class_code           := '';    -- 4219869 Business Flow
151308 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
151309 l_budgetary_control_flag     := 'N';
151310 
151311 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
151312 l_bflow_applied_to_amt       := NULL; -- 5132302
151313 l_entered_amt_idx            := NULL;          -- 4262811
151314 l_accted_amt_idx             := NULL;          -- 4262811
151315 l_acc_rev_flag               := NULL;          -- 4262811
151316 l_accrual_line_num           := NULL;          -- 4262811
151317 l_tmp_amt                    := NULL;          -- 4262811
151318 --
151319  
151320 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
151321     l_balance_type_code <> 'B' THEN
151322 IF NVL(p_source_97,9E125) =  1
151323  THEN 
151324 
151325    --
151326    XLA_AE_LINES_PKG.SetNewLine;
151327 
151328    p_balance_type_code          := l_balance_type_code;
151329    -- set the flag so later we will know whether the gain loss line needs to be created
151330    
151331    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
151332      p_actual_flag :='A';
151333    END IF;
151334 
151335    --
151336    -- bulk performance
151337    --
151338    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
151339                                       p_header_num   => 0); -- 4262811
151340    --
151341    -- set accounting line options
151342    --
151343    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
151344            p_natural_side_code          => 'D'
151345          , p_gain_or_loss_flag          => 'N'
151346          , p_gl_transfer_mode_code      => 'S'
151347          , p_acct_entry_type_code       => 'A'
151348          , p_switch_side_flag           => 'Y'
151349          , p_merge_duplicate_code       => 'N'
151350          );
151351    --
151352    l_acc_rev_natural_side_code := 'C';  -- 4262811
151353    -- 
151354    --
151355    -- set accounting line type info
151356    --
151357    xla_ae_lines_pkg.SetAcctLineType
151358       (p_component_type             => l_component_type
151359       ,p_event_type_code            => l_event_type_code
151360       ,p_line_definition_owner_code => l_line_definition_owner_code
151361       ,p_line_definition_code       => l_line_definition_code
151362       ,p_accounting_line_code       => l_component_code
151363       ,p_accounting_line_type_code  => l_component_type_code
151364       ,p_accounting_line_appl_id    => l_component_appl_id
151365       ,p_amb_context_code           => l_amb_context_code
151366       ,p_entity_code                => l_entity_code
151367       ,p_event_class_code           => l_event_class_code);
151368    --
151369    -- set accounting class
151370    --
151371    xla_ae_lines_pkg.SetAcctClass(
151372            p_accounting_class_code  => 'INVENTORY_VALUATION'
151373          , p_ae_header_id           => l_ae_header_id
151374          );
151375 
151376    --
151377    -- set rounding class
151378    --
151379    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
151380                       'INVENTORY_VALUATION';
151381 
151382    --
151383    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
151384    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
151385    --
151386    -- bulk performance
151387    --
151388    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
151389 
151390    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
151391       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
151392 
151393    -- 4955764
151394    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
151395       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
151396 
151397    -- 4458381 Public Sector Enh
151398    
151399    --
151400    -- set accounting attributes for the line type
151401    --
151402    l_entered_amt_idx := 17;
151403    l_accted_amt_idx  := 22;
151404    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
151405    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
151406    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
151407    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
151408    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
151409    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
151410    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
151411    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
151412    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
151413    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
151414    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
151415    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
151416    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
151417    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
151418    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
151419    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
151420    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
151421    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
151422    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
151423    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
151424    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
151425    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
151426    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
151427    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
151428    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
151429    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
151430    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
151431    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
151432    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
151433    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
151434    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
151435    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
151436    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
151437    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
151438    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
151439    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
151440    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
151441    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
151442    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
151443    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
151444    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
151445    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
151446    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
151447    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
151448    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
151449    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
151450    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
151451    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
151452    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
151453 
151454    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
151455    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
151456 
151457    ---------------------------------------------------------------------------------------------------------------
151458    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
151459    ---------------------------------------------------------------------------------------------------------------
151460    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
151461 
151462    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
151463    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
151464 
151465    IF xla_accounting_cache_pkg.GetValueChar
151466          (p_source_code         => 'LEDGER_CATEGORY_CODE'
151467          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
151468    AND l_bflow_method_code = 'PRIOR_ENTRY'
151469 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
151470    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
151471          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
151472        )
151473    THEN
151474          xla_ae_lines_pkg.BflowUpgEntry
151475            (p_business_method_code    => l_bflow_method_code
151476            ,p_business_class_code     => l_bflow_class_code
151477            ,p_balance_type            => l_balance_type_code);
151478    ELSE
151479       NULL;
151480 -- No business flow processing for business flow method of NONE.
151481    END IF;
151482 
151483    --
151484    -- call analytical criteria
151485    --
151486    
151487 
151488 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
151489 xla_ae_lines_pkg.SetAnalyticalCriteria(
151490    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
151491  , p_analytical_criterion_owner   => 'S'
151492  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
151493  , p_amb_context_code             => 'DEFAULT'
151494  , p_balancing_flag               => 'Y'
151495  
151496  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
151497  , p_analytical_detail_num_1     =>  NULL
151498  , p_analytical_detail_date_1    =>  NULL
151499 
151500  , p_ae_header_id                 => l_ae_header_id
151501 )
151502 ;
151503 --
151504 
151505    --
151506    -- call description
151507    --
151508    
151509 xla_ae_lines_pkg.SetLineDescription(
151510    p_ae_header_id => l_ae_header_id
151511   ,p_description  => Description_1 (
151512      p_application_id         => p_application_id
151513    , p_ae_header_id           => l_ae_header_id 
151514 , p_source_1 => p_source_1
151515 , p_source_2 => p_source_2
151516 , p_source_3 => p_source_3
151517 , p_source_4 => p_source_4
151518 , p_source_5 => p_source_5
151519    )
151520 );
151521 
151522 
151523    --
151524    -- call ADRs
151525    -- Bug 4922099
151526    --
151527    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
151528         (NVL(l_actual_upg_option, 'N') = 'O') OR
151529         (NVL(l_enc_upg_option, 'N') = 'O')
151530       )
151531    THEN
151532    NULL;
151533    --
151534    --
151535    
151536   l_ccid := AcctDerRule_28(
151537            p_application_id           => p_application_id
151538          , p_ae_header_id             => l_ae_header_id 
151539 , p_source_15 => p_source_15
151540 , p_source_41 => p_source_41
151541 , p_source_42 => p_source_42
151542 , p_source_43 => p_source_43
151543 , p_source_44 => p_source_44
151544 , p_source_45 => p_source_45
151545          , x_transaction_coa_id       => l_adr_transaction_coa_id
151546          , x_accounting_coa_id        => l_adr_accounting_coa_id
151547          , x_value_type_code          => l_adr_value_type_code
151548          , p_side                     => 'NA'
151549    );
151550 
151551    xla_ae_lines_pkg.set_ccid(
151552     p_code_combination_id          => l_ccid
151553   , p_value_type_code              => l_adr_value_type_code
151554   , p_transaction_coa_id           => l_adr_transaction_coa_id
151555   , p_accounting_coa_id            => l_adr_accounting_coa_id
151556   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
151557   , p_adr_type_code                => 'S'
151558   , p_component_type               => l_component_type
151559   , p_component_code               => l_component_code
151560   , p_component_type_code          => l_component_type_code
151561   , p_component_appl_id            => l_component_appl_id
151562   , p_amb_context_code             => l_amb_context_code
151563   , p_side                         => 'NA'
151564   );
151565 
151566 
151567    --
151568    --
151569    END IF;
151570    --
151571    -- Bug 4922099
151572    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
151573           (NVL(l_enc_upg_option, 'N') = 'O')
151574         ) AND
151575         (l_bflow_method_code = 'PRIOR_ENTRY')
151576       )
151577    THEN
151578       IF
151579       --
151580       1 = 2
151581       --
151582       THEN
151583       xla_accounting_err_pkg.build_message
151584                                     (p_appli_s_name            => 'XLA'
151585                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
151586                                     ,p_token_1                 => 'LINE_NUMBER'
151587                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
151588                                     ,p_token_2                 => 'LINE_TYPE_NAME'
151589                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
151590                                                                              l_component_type
151591                                                                             ,l_component_code
151592                                                                             ,l_component_type_code
151593                                                                             ,l_component_appl_id
151594                                                                             ,l_amb_context_code
151595                                                                             ,l_entity_code
151596                                                                             ,l_event_class_code
151597                                                                            )
151598                                     ,p_token_3                 => 'OWNER'
151599                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
151600                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
151601                                                                           ,p_lookup_code    => l_component_type_code
151602                                                                          )
151603                                     ,p_token_4                 => 'PRODUCT_NAME'
151604                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
151605                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
151606                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
151607                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
151608                                     ,p_ae_header_id            =>  NULL
151609                                        );
151610 
151611         IF (C_LEVEL_ERROR>= g_log_level) THEN
151612                  trace
151613                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
151614                       ,p_level    => C_LEVEL_ERROR
151615                       ,p_module   => l_log_module);
151616         END IF;
151617       END IF;
151618    END IF;
151619    --
151620    --
151621    ------------------------------------------------------------------------------------------------
151622    -- 4219869 Business Flow
151623    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
151624    -- Prior Entry.  Currently, the following code is always generated.
151625    ------------------------------------------------------------------------------------------------
151626    XLA_AE_LINES_PKG.ValidateCurrentLine;
151627 
151628    ------------------------------------------------------------------------------------
151629    -- 4219869 Business Flow
151630    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
151631    ------------------------------------------------------------------------------------
151632    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
151633 
151634    ----------------------------------------------------------------------------------
151635    -- 4219869 Business Flow
151636    -- Update journal entry status -- Need to generate this within IF <condition>
151637    ----------------------------------------------------------------------------------
151638    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
151639          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
151640          ,p_balance_type_code => l_balance_type_code
151641          );
151642 
151643    -------------------------------------------------------------------------------------------
151644    -- 4262811 - Generate the Accrual Reversal lines
151645    -------------------------------------------------------------------------------------------
151646    BEGIN
151647       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
151648                               (g_array_event(p_event_id).array_value_num('header_index'));
151649       IF l_acc_rev_flag IS NULL THEN
151650          l_acc_rev_flag := 'N';
151651       END IF;
151652    EXCEPTION
151653       WHEN OTHERS THEN
151654          l_acc_rev_flag := 'N';
151655    END;
151656    --
151657    IF (l_acc_rev_flag = 'Y') THEN
151658 
151659        -- 4645092  ------------------------------------------------------------------------------
151660        -- To allow MPA report to determine if it should generate report process
151661        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
151662        ------------------------------------------------------------------------------------------
151663 
151664        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
151665        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
151666    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
151667    -- call ADRs
151668    -- Bug 4922099
151669    --
151670    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
151671         (NVL(l_actual_upg_option, 'N') = 'O') OR
151672         (NVL(l_enc_upg_option, 'N') = 'O')
151673       )
151674    THEN
151675    NULL;
151676    --
151677    --
151678    
151679   l_ccid := AcctDerRule_28(
151680            p_application_id           => p_application_id
151681          , p_ae_header_id             => l_ae_header_id 
151682 , p_source_15 => p_source_15
151683 , p_source_41 => p_source_41
151684 , p_source_42 => p_source_42
151685 , p_source_43 => p_source_43
151686 , p_source_44 => p_source_44
151687 , p_source_45 => p_source_45
151688          , x_transaction_coa_id       => l_adr_transaction_coa_id
151689          , x_accounting_coa_id        => l_adr_accounting_coa_id
151690          , x_value_type_code          => l_adr_value_type_code
151691          , p_side                     => 'NA'
151692    );
151693 
151694    xla_ae_lines_pkg.set_ccid(
151695     p_code_combination_id          => l_ccid
151696   , p_value_type_code              => l_adr_value_type_code
151697   , p_transaction_coa_id           => l_adr_transaction_coa_id
151698   , p_accounting_coa_id            => l_adr_accounting_coa_id
151699   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
151700   , p_adr_type_code                => 'S'
151701   , p_component_type               => l_component_type
151702   , p_component_code               => l_component_code
151703   , p_component_type_code          => l_component_type_code
151704   , p_component_appl_id            => l_component_appl_id
151705   , p_amb_context_code             => l_amb_context_code
151706   , p_side                         => 'NA'
151707   );
151708 
151709 
151710    --
151711    --
151712    END IF;
151713 
151714        --
151715        -- Update the line information that should be overwritten
151716        --
151717        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
151718                                          p_header_num   => 1);
151719        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
151720 
151721        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
151722 
151723        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
151724           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
151725        END IF;
151726 
151727       --
151728       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
151729       --
151730       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
151731           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
151732       ELSE
151733           ---------------------------------------------------------------------------------------------------
151734           -- 4262811a Switch Sign
151735           ---------------------------------------------------------------------------------------------------
151736           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
151737           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
151738                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
151739           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
151740                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
151741           -- 5132302
151742           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
151743                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
151744 
151745       END IF;
151746 
151747       -- 4955764
151748       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
151749       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
151750 
151751 
151752       XLA_AE_LINES_PKG.ValidateCurrentLine;
151753       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
151754 
151755       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
151756                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
151757                ,p_balance_type_code => l_balance_type_code);
151758 
151759    END IF;
151760 
151761    -----------------------------------------------------------------------------------------
151762    -- 4262811 Multiperiod Accounting
151763    -----------------------------------------------------------------------------------------
151764      -- No MPA option is assigned.
151765 
151766 
151767 END IF;
151768 END IF;
151769 --
151770 
151771 --
151772 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151773    trace
151774       (p_msg      => 'END of AcctLineType_283'
151775       ,p_level    => C_LEVEL_PROCEDURE
151776       ,p_module   => l_log_module);
151777 END IF;
151778 --
151779 EXCEPTION
151780   WHEN xla_exceptions_pkg.application_exception THEN
151781       RAISE;
151782   WHEN OTHERS THEN
151783        xla_exceptions_pkg.raise_message
151784            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_283');
151785 END AcctLineType_283;
151786 --
151787 
151788 ---------------------------------------
151789 --
151790 -- PRIVATE FUNCTION
151791 --         AcctLineType_284
151792 --
151793 ---------------------------------------
151794 PROCEDURE AcctLineType_284 (
151795   p_application_id        IN NUMBER
151796  ,p_event_id              IN NUMBER
151797  ,p_calculate_acctd_flag  IN VARCHAR2
151798  ,p_calculate_g_l_flag    IN VARCHAR2
151799  ,p_actual_flag           IN OUT VARCHAR2
151800  ,p_balance_type_code     OUT VARCHAR2
151801  ,p_gain_or_loss_ref      OUT VARCHAR2
151802  
151803 --TRANSACTION_ID
151804  , p_source_1            IN NUMBER
151805 --Item Concatenated Segments
151806  , p_source_2            IN VARCHAR2
151807 --Transaction Quantity
151808  , p_source_3            IN NUMBER
151809 --Transaction Unit of Measure Code
151810  , p_source_4            IN VARCHAR2
151811 --Inventory Transaction Type Description
151812  , p_source_5            IN VARCHAR2
151813 --Cost Element Name
151814  , p_source_15            IN NUMBER
151815 --Product Line Accounting Category Material Account
151816  , p_source_41            IN NUMBER
151817 --Product Line Accounting Category Material Overhead Account
151818  , p_source_42            IN NUMBER
151819 --Product Line Accounting Category Resource Account
151820  , p_source_43            IN NUMBER
151821 --Product Line Accounting Category Outside Processing Account
151822  , p_source_44            IN NUMBER
151823 --Product Line Accounting Category Overhead Account
151824  , p_source_45            IN NUMBER
151825 --DISTRIBUTION_IDENTIFIER
151826  , p_source_84            IN NUMBER
151827 --Distribution Type
151828  , p_source_85            IN VARCHAR2
151829  , p_source_85_meaning    IN VARCHAR2
151830 --Entered Currency Code
151831  , p_source_88            IN VARCHAR2
151832 --Entered Amount
151833  , p_source_91            IN NUMBER
151834 --Currency Conversion Date
151835  , p_source_92            IN DATE
151836 --Currency Conversion Rate
151837  , p_source_93            IN NUMBER
151838 --Currency Conversion Type
151839  , p_source_94            IN VARCHAR2
151840 --Accounted Amount
151841  , p_source_95            IN NUMBER
151842 --Accounting Line Type
151843  , p_source_97            IN NUMBER
151844 --Organization Code
151845  , p_source_108            IN VARCHAR2
151846 )
151847 IS
151848 
151849 l_component_type              VARCHAR2(80);
151850 l_component_code              VARCHAR2(30);
151851 l_component_type_code         VARCHAR2(1);
151852 l_component_appl_id           INTEGER;
151853 l_amb_context_code            VARCHAR2(30);
151854 l_entity_code                 VARCHAR2(30);
151855 l_event_class_code            VARCHAR2(30);
151856 l_ae_header_id                NUMBER;
151857 l_event_type_code             VARCHAR2(30);
151858 l_line_definition_code        VARCHAR2(30);
151859 l_line_definition_owner_code  VARCHAR2(1);
151860 --
151861 -- adr variables
151862 l_segment                     VARCHAR2(30);
151863 l_ccid                        NUMBER;
151864 l_adr_transaction_coa_id      NUMBER;
151865 l_adr_accounting_coa_id       NUMBER;
151866 l_adr_flexfield_segment_code  VARCHAR2(30);
151867 l_adr_flex_value_set_id       NUMBER;
151868 l_adr_value_type_code         VARCHAR2(30);
151869 l_adr_value_combination_id    NUMBER;
151870 l_adr_value_segment_code      VARCHAR2(30);
151871 
151872 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
151873 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
151874 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
151875 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
151876 
151877 -- 4262811 Variables ------------------------------------------------------------------------------------------
151878 l_entered_amt_idx             NUMBER;
151879 l_accted_amt_idx              NUMBER;
151880 l_acc_rev_flag                VARCHAR2(1);
151881 l_accrual_line_num            NUMBER;
151882 l_tmp_amt                     NUMBER;
151883 l_acc_rev_natural_side_code   VARCHAR2(1);
151884 
151885 l_num_entries                 NUMBER;
151886 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
151887 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
151888 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
151889 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
151890 l_recog_line_1                NUMBER;
151891 l_recog_line_2                NUMBER;
151892 
151893 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
151894 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
151895 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
151896 
151897 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
151898 
151899 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
151900 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
151901 
151902 ---------------------------------------------------------------------------------------------------------------
151903 
151904 
151905 --
151906 -- bulk performance
151907 --
151908 l_balance_type_code           VARCHAR2(1);
151909 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
151910 l_log_module                  VARCHAR2(240);
151911 
151912 --
151913 -- Upgrade strategy
151914 --
151915 l_actual_upg_option           VARCHAR2(1);
151916 l_enc_upg_option           VARCHAR2(1);
151917 
151918 --
151919 BEGIN
151920 --
151921 IF g_log_enabled THEN
151922       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_284';
151923 END IF;
151924 --
151925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151926 
151927       trace
151928          (p_msg      => 'BEGIN of AcctLineType_284'
151929          ,p_level    => C_LEVEL_PROCEDURE
151930          ,p_module   => l_log_module);
151931 
151932 END IF;
151933 --
151934 l_component_type             := 'AMB_JLT';
151935 l_component_code             := 'INVENTORY_VALUATION';
151936 l_component_type_code        := 'S';
151937 l_component_appl_id          :=  707;
151938 l_amb_context_code           := 'DEFAULT';
151939 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
151940 l_event_class_code           := 'INT_ORDER_TO_EXP';
151941 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
151942 l_line_definition_owner_code := 'S';
151943 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_TP';
151944 --
151945 l_balance_type_code          := 'A';
151946 l_segment                     := NULL;
151947 l_ccid                        := NULL;
151948 l_adr_transaction_coa_id      := NULL;
151949 l_adr_accounting_coa_id       := NULL;
151950 l_adr_flexfield_segment_code  := NULL;
151951 l_adr_flex_value_set_id       := NULL;
151952 l_adr_value_type_code         := NULL;
151953 l_adr_value_combination_id    := NULL;
151954 l_adr_value_segment_code      := NULL;
151955 
151956 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
151957 l_bflow_class_code           := '';    -- 4219869 Business Flow
151958 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
151959 l_budgetary_control_flag     := 'N';
151960 
151961 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
151962 l_bflow_applied_to_amt       := NULL; -- 5132302
151963 l_entered_amt_idx            := NULL;          -- 4262811
151964 l_accted_amt_idx             := NULL;          -- 4262811
151965 l_acc_rev_flag               := NULL;          -- 4262811
151966 l_accrual_line_num           := NULL;          -- 4262811
151967 l_tmp_amt                    := NULL;          -- 4262811
151968 --
151969  
151970 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
151971     l_balance_type_code <> 'B' THEN
151972 IF NVL(p_source_97,9E125) =  1
151973  THEN 
151974 
151975    --
151976    XLA_AE_LINES_PKG.SetNewLine;
151977 
151978    p_balance_type_code          := l_balance_type_code;
151979    -- set the flag so later we will know whether the gain loss line needs to be created
151980    
151981    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
151982      p_actual_flag :='A';
151983    END IF;
151984 
151985    --
151986    -- bulk performance
151987    --
151988    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
151989                                       p_header_num   => 0); -- 4262811
151990    --
151991    -- set accounting line options
151992    --
151993    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
151994            p_natural_side_code          => 'D'
151995          , p_gain_or_loss_flag          => 'N'
151996          , p_gl_transfer_mode_code      => 'S'
151997          , p_acct_entry_type_code       => 'A'
151998          , p_switch_side_flag           => 'Y'
151999          , p_merge_duplicate_code       => 'N'
152000          );
152001    --
152002    l_acc_rev_natural_side_code := 'C';  -- 4262811
152003    -- 
152004    --
152005    -- set accounting line type info
152006    --
152007    xla_ae_lines_pkg.SetAcctLineType
152008       (p_component_type             => l_component_type
152009       ,p_event_type_code            => l_event_type_code
152010       ,p_line_definition_owner_code => l_line_definition_owner_code
152011       ,p_line_definition_code       => l_line_definition_code
152012       ,p_accounting_line_code       => l_component_code
152013       ,p_accounting_line_type_code  => l_component_type_code
152014       ,p_accounting_line_appl_id    => l_component_appl_id
152015       ,p_amb_context_code           => l_amb_context_code
152016       ,p_entity_code                => l_entity_code
152017       ,p_event_class_code           => l_event_class_code);
152018    --
152019    -- set accounting class
152020    --
152021    xla_ae_lines_pkg.SetAcctClass(
152022            p_accounting_class_code  => 'INVENTORY_VALUATION'
152023          , p_ae_header_id           => l_ae_header_id
152024          );
152025 
152026    --
152027    -- set rounding class
152028    --
152029    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
152030                       'INVENTORY_VALUATION';
152031 
152032    --
152033    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
152034    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
152035    --
152036    -- bulk performance
152037    --
152038    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
152039 
152040    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
152041       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
152042 
152043    -- 4955764
152044    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
152045       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
152046 
152047    -- 4458381 Public Sector Enh
152048    
152049    --
152050    -- set accounting attributes for the line type
152051    --
152052    l_entered_amt_idx := 3;
152053    l_accted_amt_idx  := 8;
152054    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
152055    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
152056    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
152057    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
152058    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
152059    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
152060    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
152061    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
152062    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
152063    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
152064    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
152065    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
152066    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
152067    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
152068    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
152069    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
152070    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
152071 
152072    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
152073    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
152074 
152075    ---------------------------------------------------------------------------------------------------------------
152076    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
152077    ---------------------------------------------------------------------------------------------------------------
152078    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
152079 
152080    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
152081    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
152082 
152083    IF xla_accounting_cache_pkg.GetValueChar
152084          (p_source_code         => 'LEDGER_CATEGORY_CODE'
152085          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
152086    AND l_bflow_method_code = 'PRIOR_ENTRY'
152087 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
152088    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
152089          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
152090        )
152091    THEN
152092          xla_ae_lines_pkg.BflowUpgEntry
152093            (p_business_method_code    => l_bflow_method_code
152094            ,p_business_class_code     => l_bflow_class_code
152095            ,p_balance_type            => l_balance_type_code);
152096    ELSE
152097       NULL;
152098 -- No business flow processing for business flow method of NONE.
152099    END IF;
152100 
152101    --
152102    -- call analytical criteria
152103    --
152104    
152105 
152106 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
152107 xla_ae_lines_pkg.SetAnalyticalCriteria(
152108    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
152109  , p_analytical_criterion_owner   => 'S'
152110  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
152111  , p_amb_context_code             => 'DEFAULT'
152112  , p_balancing_flag               => 'Y'
152113  
152114  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
152115  , p_analytical_detail_num_1     =>  NULL
152116  , p_analytical_detail_date_1    =>  NULL
152117 
152118  , p_ae_header_id                 => l_ae_header_id
152119 )
152120 ;
152121 --
152122 
152123    --
152124    -- call description
152125    --
152126    
152127 xla_ae_lines_pkg.SetLineDescription(
152128    p_ae_header_id => l_ae_header_id
152129   ,p_description  => Description_1 (
152130      p_application_id         => p_application_id
152131    , p_ae_header_id           => l_ae_header_id 
152132 , p_source_1 => p_source_1
152133 , p_source_2 => p_source_2
152134 , p_source_3 => p_source_3
152135 , p_source_4 => p_source_4
152136 , p_source_5 => p_source_5
152137    )
152138 );
152139 
152140 
152141    --
152142    -- call ADRs
152143    -- Bug 4922099
152144    --
152145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
152146         (NVL(l_actual_upg_option, 'N') = 'O') OR
152147         (NVL(l_enc_upg_option, 'N') = 'O')
152148       )
152149    THEN
152150    NULL;
152151    --
152152    --
152153    
152154   l_ccid := AcctDerRule_28(
152155            p_application_id           => p_application_id
152156          , p_ae_header_id             => l_ae_header_id 
152157 , p_source_15 => p_source_15
152158 , p_source_41 => p_source_41
152159 , p_source_42 => p_source_42
152160 , p_source_43 => p_source_43
152161 , p_source_44 => p_source_44
152162 , p_source_45 => p_source_45
152163          , x_transaction_coa_id       => l_adr_transaction_coa_id
152164          , x_accounting_coa_id        => l_adr_accounting_coa_id
152165          , x_value_type_code          => l_adr_value_type_code
152166          , p_side                     => 'NA'
152167    );
152168 
152169    xla_ae_lines_pkg.set_ccid(
152170     p_code_combination_id          => l_ccid
152171   , p_value_type_code              => l_adr_value_type_code
152172   , p_transaction_coa_id           => l_adr_transaction_coa_id
152173   , p_accounting_coa_id            => l_adr_accounting_coa_id
152174   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
152175   , p_adr_type_code                => 'S'
152176   , p_component_type               => l_component_type
152177   , p_component_code               => l_component_code
152178   , p_component_type_code          => l_component_type_code
152179   , p_component_appl_id            => l_component_appl_id
152180   , p_amb_context_code             => l_amb_context_code
152181   , p_side                         => 'NA'
152182   );
152183 
152184 
152185    --
152186    --
152187    END IF;
152188    --
152189    -- Bug 4922099
152190    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
152191           (NVL(l_enc_upg_option, 'N') = 'O')
152192         ) AND
152193         (l_bflow_method_code = 'PRIOR_ENTRY')
152194       )
152195    THEN
152196       IF
152197       --
152198       1 = 2
152199       --
152200       THEN
152201       xla_accounting_err_pkg.build_message
152202                                     (p_appli_s_name            => 'XLA'
152203                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
152204                                     ,p_token_1                 => 'LINE_NUMBER'
152205                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
152206                                     ,p_token_2                 => 'LINE_TYPE_NAME'
152207                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
152208                                                                              l_component_type
152209                                                                             ,l_component_code
152210                                                                             ,l_component_type_code
152211                                                                             ,l_component_appl_id
152212                                                                             ,l_amb_context_code
152213                                                                             ,l_entity_code
152214                                                                             ,l_event_class_code
152215                                                                            )
152216                                     ,p_token_3                 => 'OWNER'
152217                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
152218                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
152219                                                                           ,p_lookup_code    => l_component_type_code
152220                                                                          )
152221                                     ,p_token_4                 => 'PRODUCT_NAME'
152222                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
152223                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
152224                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
152225                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
152226                                     ,p_ae_header_id            =>  NULL
152227                                        );
152228 
152229         IF (C_LEVEL_ERROR>= g_log_level) THEN
152230                  trace
152231                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
152232                       ,p_level    => C_LEVEL_ERROR
152233                       ,p_module   => l_log_module);
152234         END IF;
152235       END IF;
152236    END IF;
152237    --
152238    --
152239    ------------------------------------------------------------------------------------------------
152240    -- 4219869 Business Flow
152241    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
152242    -- Prior Entry.  Currently, the following code is always generated.
152243    ------------------------------------------------------------------------------------------------
152244    XLA_AE_LINES_PKG.ValidateCurrentLine;
152245 
152246    ------------------------------------------------------------------------------------
152247    -- 4219869 Business Flow
152248    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
152249    ------------------------------------------------------------------------------------
152250    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
152251 
152252    ----------------------------------------------------------------------------------
152253    -- 4219869 Business Flow
152254    -- Update journal entry status -- Need to generate this within IF <condition>
152255    ----------------------------------------------------------------------------------
152256    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
152257          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
152258          ,p_balance_type_code => l_balance_type_code
152259          );
152260 
152261    -------------------------------------------------------------------------------------------
152262    -- 4262811 - Generate the Accrual Reversal lines
152263    -------------------------------------------------------------------------------------------
152264    BEGIN
152265       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
152266                               (g_array_event(p_event_id).array_value_num('header_index'));
152267       IF l_acc_rev_flag IS NULL THEN
152268          l_acc_rev_flag := 'N';
152269       END IF;
152270    EXCEPTION
152271       WHEN OTHERS THEN
152272          l_acc_rev_flag := 'N';
152273    END;
152274    --
152275    IF (l_acc_rev_flag = 'Y') THEN
152276 
152277        -- 4645092  ------------------------------------------------------------------------------
152278        -- To allow MPA report to determine if it should generate report process
152279        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
152280        ------------------------------------------------------------------------------------------
152281 
152282        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
152283        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
152284    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
152285    -- call ADRs
152286    -- Bug 4922099
152287    --
152288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
152289         (NVL(l_actual_upg_option, 'N') = 'O') OR
152290         (NVL(l_enc_upg_option, 'N') = 'O')
152291       )
152292    THEN
152293    NULL;
152294    --
152295    --
152296    
152297   l_ccid := AcctDerRule_28(
152298            p_application_id           => p_application_id
152299          , p_ae_header_id             => l_ae_header_id 
152300 , p_source_15 => p_source_15
152301 , p_source_41 => p_source_41
152302 , p_source_42 => p_source_42
152303 , p_source_43 => p_source_43
152304 , p_source_44 => p_source_44
152305 , p_source_45 => p_source_45
152306          , x_transaction_coa_id       => l_adr_transaction_coa_id
152307          , x_accounting_coa_id        => l_adr_accounting_coa_id
152308          , x_value_type_code          => l_adr_value_type_code
152309          , p_side                     => 'NA'
152310    );
152311 
152312    xla_ae_lines_pkg.set_ccid(
152313     p_code_combination_id          => l_ccid
152314   , p_value_type_code              => l_adr_value_type_code
152315   , p_transaction_coa_id           => l_adr_transaction_coa_id
152316   , p_accounting_coa_id            => l_adr_accounting_coa_id
152317   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
152318   , p_adr_type_code                => 'S'
152319   , p_component_type               => l_component_type
152320   , p_component_code               => l_component_code
152321   , p_component_type_code          => l_component_type_code
152322   , p_component_appl_id            => l_component_appl_id
152323   , p_amb_context_code             => l_amb_context_code
152324   , p_side                         => 'NA'
152325   );
152326 
152327 
152328    --
152329    --
152330    END IF;
152331 
152332        --
152333        -- Update the line information that should be overwritten
152334        --
152335        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
152336                                          p_header_num   => 1);
152337        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
152338 
152339        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
152340 
152341        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
152342           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
152343        END IF;
152344 
152345       --
152346       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
152347       --
152348       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
152349           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
152350       ELSE
152351           ---------------------------------------------------------------------------------------------------
152352           -- 4262811a Switch Sign
152353           ---------------------------------------------------------------------------------------------------
152354           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
152355           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
152356                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
152357           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
152358                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
152359           -- 5132302
152360           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
152361                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
152362 
152363       END IF;
152364 
152365       -- 4955764
152366       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
152367       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
152368 
152369 
152370       XLA_AE_LINES_PKG.ValidateCurrentLine;
152371       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
152372 
152373       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
152374                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
152375                ,p_balance_type_code => l_balance_type_code);
152376 
152377    END IF;
152378 
152379    -----------------------------------------------------------------------------------------
152380    -- 4262811 Multiperiod Accounting
152381    -----------------------------------------------------------------------------------------
152382      -- No MPA option is assigned.
152383 
152384 
152385 END IF;
152386 END IF;
152387 --
152388 
152389 --
152390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152391    trace
152392       (p_msg      => 'END of AcctLineType_284'
152393       ,p_level    => C_LEVEL_PROCEDURE
152394       ,p_module   => l_log_module);
152395 END IF;
152396 --
152397 EXCEPTION
152398   WHEN xla_exceptions_pkg.application_exception THEN
152399       RAISE;
152400   WHEN OTHERS THEN
152401        xla_exceptions_pkg.raise_message
152402            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_284');
152403 END AcctLineType_284;
152404 --
152405 
152406 ---------------------------------------
152407 --
152408 -- PRIVATE FUNCTION
152409 --         AcctLineType_285
152410 --
152411 ---------------------------------------
152412 PROCEDURE AcctLineType_285 (
152413   p_application_id        IN NUMBER
152414  ,p_event_id              IN NUMBER
152415  ,p_calculate_acctd_flag  IN VARCHAR2
152416  ,p_calculate_g_l_flag    IN VARCHAR2
152417  ,p_actual_flag           IN OUT VARCHAR2
152418  ,p_balance_type_code     OUT VARCHAR2
152419  ,p_gain_or_loss_ref      OUT VARCHAR2
152420  
152421 --TRANSACTION_ID
152422  , p_source_1            IN NUMBER
152423 --Item Concatenated Segments
152424  , p_source_2            IN VARCHAR2
152425 --Transaction Quantity
152426  , p_source_3            IN NUMBER
152427 --Transaction Unit of Measure Code
152428  , p_source_4            IN VARCHAR2
152429 --Inventory Transaction Type Description
152430  , p_source_5            IN VARCHAR2
152431 --Cost Element Name
152432  , p_source_15            IN NUMBER
152433 --Product Line Accounting Category Material Account
152434  , p_source_41            IN NUMBER
152435 --Product Line Accounting Category Material Overhead Account
152436  , p_source_42            IN NUMBER
152437 --Product Line Accounting Category Resource Account
152438  , p_source_43            IN NUMBER
152439 --Product Line Accounting Category Outside Processing Account
152440  , p_source_44            IN NUMBER
152441 --Product Line Accounting Category Overhead Account
152442  , p_source_45            IN NUMBER
152443 --Applied to Application ID
152444  , p_source_79            IN NUMBER
152445 --Applied to Distribution Link Type
152446  , p_source_80            IN VARCHAR2
152447 --Applied to Entity Code
152448  , p_source_81            IN VARCHAR2
152449 --Applied To Purchase Document Identifier
152450  , p_source_83            IN NUMBER
152451 --DISTRIBUTION_IDENTIFIER
152452  , p_source_84            IN NUMBER
152453 --Distribution Type
152454  , p_source_85            IN VARCHAR2
152455  , p_source_85_meaning    IN VARCHAR2
152456 --PO Budget Account
152457  , p_source_86            IN NUMBER
152458 --Encumbrance Reversal Amount Entered
152459  , p_source_87            IN NUMBER
152460 --Entered Currency Code
152461  , p_source_88            IN VARCHAR2
152462 --Transaction Encumbrance Reversal Amount
152463  , p_source_89            IN NUMBER
152464 --Entered Amount
152465  , p_source_91            IN NUMBER
152466 --Currency Conversion Date
152467  , p_source_92            IN DATE
152468 --Currency Conversion Rate
152469  , p_source_93            IN NUMBER
152470 --Currency Conversion Type
152471  , p_source_94            IN VARCHAR2
152472 --Accounted Amount
152473  , p_source_95            IN NUMBER
152474 --Purchasing Encumbrance Type Identifier
152475  , p_source_96            IN NUMBER
152476 --Accounting Line Type
152477  , p_source_97            IN NUMBER
152478 --Costing Encumbrance Upgrade Option
152479  , p_source_100            IN VARCHAR2
152480 --TXN_PO_DISTRIBUTION_ID
152481  , p_source_101            IN NUMBER
152482 --Organization Code
152483  , p_source_108            IN VARCHAR2
152484 )
152485 IS
152486 
152487 l_component_type              VARCHAR2(80);
152488 l_component_code              VARCHAR2(30);
152489 l_component_type_code         VARCHAR2(1);
152490 l_component_appl_id           INTEGER;
152491 l_amb_context_code            VARCHAR2(30);
152492 l_entity_code                 VARCHAR2(30);
152493 l_event_class_code            VARCHAR2(30);
152494 l_ae_header_id                NUMBER;
152495 l_event_type_code             VARCHAR2(30);
152496 l_line_definition_code        VARCHAR2(30);
152497 l_line_definition_owner_code  VARCHAR2(1);
152498 --
152499 -- adr variables
152500 l_segment                     VARCHAR2(30);
152501 l_ccid                        NUMBER;
152502 l_adr_transaction_coa_id      NUMBER;
152503 l_adr_accounting_coa_id       NUMBER;
152504 l_adr_flexfield_segment_code  VARCHAR2(30);
152505 l_adr_flex_value_set_id       NUMBER;
152506 l_adr_value_type_code         VARCHAR2(30);
152507 l_adr_value_combination_id    NUMBER;
152508 l_adr_value_segment_code      VARCHAR2(30);
152509 
152510 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
152511 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
152512 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
152513 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
152514 
152515 -- 4262811 Variables ------------------------------------------------------------------------------------------
152516 l_entered_amt_idx             NUMBER;
152517 l_accted_amt_idx              NUMBER;
152518 l_acc_rev_flag                VARCHAR2(1);
152519 l_accrual_line_num            NUMBER;
152520 l_tmp_amt                     NUMBER;
152521 l_acc_rev_natural_side_code   VARCHAR2(1);
152522 
152523 l_num_entries                 NUMBER;
152524 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
152525 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
152526 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
152527 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
152528 l_recog_line_1                NUMBER;
152529 l_recog_line_2                NUMBER;
152530 
152531 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
152532 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
152533 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
152534 
152535 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
152536 
152537 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
152538 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
152539 
152540 ---------------------------------------------------------------------------------------------------------------
152541 
152542 
152543 --
152544 -- bulk performance
152545 --
152546 l_balance_type_code           VARCHAR2(1);
152547 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
152548 l_log_module                  VARCHAR2(240);
152549 
152550 --
152551 -- Upgrade strategy
152552 --
152553 l_actual_upg_option           VARCHAR2(1);
152554 l_enc_upg_option           VARCHAR2(1);
152555 
152556 --
152557 BEGIN
152558 --
152559 IF g_log_enabled THEN
152560       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_285';
152561 END IF;
152562 --
152563 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152564 
152565       trace
152566          (p_msg      => 'BEGIN of AcctLineType_285'
152567          ,p_level    => C_LEVEL_PROCEDURE
152568          ,p_module   => l_log_module);
152569 
152570 END IF;
152571 --
152572 l_component_type             := 'AMB_JLT';
152573 l_component_code             := 'INVENTORY_VALUATION';
152574 l_component_type_code        := 'S';
152575 l_component_appl_id          :=  707;
152576 l_amb_context_code           := 'DEFAULT';
152577 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
152578 l_event_class_code           := 'PURCHASE_ORDER';
152579 l_event_type_code            := 'LOG_PO_DEL_ADJ';
152580 l_line_definition_owner_code := 'S';
152581 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
152582 --
152583 l_balance_type_code          := 'A';
152584 l_segment                     := NULL;
152585 l_ccid                        := NULL;
152586 l_adr_transaction_coa_id      := NULL;
152587 l_adr_accounting_coa_id       := NULL;
152588 l_adr_flexfield_segment_code  := NULL;
152589 l_adr_flex_value_set_id       := NULL;
152590 l_adr_value_type_code         := NULL;
152591 l_adr_value_combination_id    := NULL;
152592 l_adr_value_segment_code      := NULL;
152593 
152594 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
152595 l_bflow_class_code           := '';    -- 4219869 Business Flow
152596 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
152597 l_budgetary_control_flag     := 'N';
152598 
152599 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
152600 l_bflow_applied_to_amt       := NULL; -- 5132302
152601 l_entered_amt_idx            := NULL;          -- 4262811
152602 l_accted_amt_idx             := NULL;          -- 4262811
152603 l_acc_rev_flag               := NULL;          -- 4262811
152604 l_accrual_line_num           := NULL;          -- 4262811
152605 l_tmp_amt                    := NULL;          -- 4262811
152606 --
152607  
152608 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
152609     l_balance_type_code <> 'B' THEN
152610 IF NVL(p_source_97,9E125) =  1
152611  THEN 
152612 
152613    --
152614    XLA_AE_LINES_PKG.SetNewLine;
152615 
152616    p_balance_type_code          := l_balance_type_code;
152617    -- set the flag so later we will know whether the gain loss line needs to be created
152618    
152619    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
152620      p_actual_flag :='A';
152621    END IF;
152622 
152623    --
152624    -- bulk performance
152625    --
152626    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
152627                                       p_header_num   => 0); -- 4262811
152628    --
152629    -- set accounting line options
152630    --
152631    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
152632            p_natural_side_code          => 'D'
152633          , p_gain_or_loss_flag          => 'N'
152634          , p_gl_transfer_mode_code      => 'S'
152635          , p_acct_entry_type_code       => 'A'
152636          , p_switch_side_flag           => 'Y'
152637          , p_merge_duplicate_code       => 'N'
152638          );
152639    --
152640    l_acc_rev_natural_side_code := 'C';  -- 4262811
152641    -- 
152642    --
152643    -- set accounting line type info
152644    --
152645    xla_ae_lines_pkg.SetAcctLineType
152646       (p_component_type             => l_component_type
152647       ,p_event_type_code            => l_event_type_code
152648       ,p_line_definition_owner_code => l_line_definition_owner_code
152649       ,p_line_definition_code       => l_line_definition_code
152650       ,p_accounting_line_code       => l_component_code
152651       ,p_accounting_line_type_code  => l_component_type_code
152652       ,p_accounting_line_appl_id    => l_component_appl_id
152653       ,p_amb_context_code           => l_amb_context_code
152654       ,p_entity_code                => l_entity_code
152655       ,p_event_class_code           => l_event_class_code);
152656    --
152657    -- set accounting class
152658    --
152659    xla_ae_lines_pkg.SetAcctClass(
152660            p_accounting_class_code  => 'INVENTORY_VALUATION'
152661          , p_ae_header_id           => l_ae_header_id
152662          );
152663 
152664    --
152665    -- set rounding class
152666    --
152667    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
152668                       'INVENTORY_VALUATION';
152669 
152670    --
152671    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
152672    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
152673    --
152674    -- bulk performance
152675    --
152676    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
152677 
152678    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
152679       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
152680 
152681    -- 4955764
152682    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
152683       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
152684 
152685    -- 4458381 Public Sector Enh
152686    
152687    --
152688    -- set accounting attributes for the line type
152689    --
152690    l_entered_amt_idx := 17;
152691    l_accted_amt_idx  := 22;
152692    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
152693    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
152694    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
152695    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
152696    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
152697    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
152698    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
152699    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
152700    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
152701    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
152702    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
152703    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
152704    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
152705    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
152706    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
152707    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
152708    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
152709    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
152710    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
152711    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
152712    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
152713    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
152714    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
152715    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
152716    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
152717    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
152718    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
152719    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
152720    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
152721    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
152722    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
152723    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
152724    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
152725    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
152726    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
152727    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
152728    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
152729    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
152730    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
152731    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
152732    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
152733    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
152734    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
152735    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
152736    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
152737    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
152738    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
152739    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
152740    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
152741 
152742    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
152743    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
152744 
152745    ---------------------------------------------------------------------------------------------------------------
152746    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
152747    ---------------------------------------------------------------------------------------------------------------
152748    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
152749 
152750    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
152751    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
152752 
152753    IF xla_accounting_cache_pkg.GetValueChar
152754          (p_source_code         => 'LEDGER_CATEGORY_CODE'
152755          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
152756    AND l_bflow_method_code = 'PRIOR_ENTRY'
152757 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
152758    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
152759          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
152760        )
152761    THEN
152762          xla_ae_lines_pkg.BflowUpgEntry
152763            (p_business_method_code    => l_bflow_method_code
152764            ,p_business_class_code     => l_bflow_class_code
152765            ,p_balance_type            => l_balance_type_code);
152766    ELSE
152767       NULL;
152768 -- No business flow processing for business flow method of NONE.
152769    END IF;
152770 
152771    --
152772    -- call analytical criteria
152773    --
152774    
152775 
152776 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
152777 xla_ae_lines_pkg.SetAnalyticalCriteria(
152778    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
152779  , p_analytical_criterion_owner   => 'S'
152780  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
152781  , p_amb_context_code             => 'DEFAULT'
152782  , p_balancing_flag               => 'Y'
152783  
152784  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
152785  , p_analytical_detail_num_1     =>  NULL
152786  , p_analytical_detail_date_1    =>  NULL
152787 
152788  , p_ae_header_id                 => l_ae_header_id
152789 )
152790 ;
152791 --
152792 
152793    --
152794    -- call description
152795    --
152796    
152797 xla_ae_lines_pkg.SetLineDescription(
152798    p_ae_header_id => l_ae_header_id
152799   ,p_description  => Description_1 (
152800      p_application_id         => p_application_id
152801    , p_ae_header_id           => l_ae_header_id 
152802 , p_source_1 => p_source_1
152803 , p_source_2 => p_source_2
152804 , p_source_3 => p_source_3
152805 , p_source_4 => p_source_4
152806 , p_source_5 => p_source_5
152807    )
152808 );
152809 
152810 
152811    --
152812    -- call ADRs
152813    -- Bug 4922099
152814    --
152815    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
152816         (NVL(l_actual_upg_option, 'N') = 'O') OR
152817         (NVL(l_enc_upg_option, 'N') = 'O')
152818       )
152819    THEN
152820    NULL;
152821    --
152822    --
152823    
152824   l_ccid := AcctDerRule_28(
152825            p_application_id           => p_application_id
152826          , p_ae_header_id             => l_ae_header_id 
152827 , p_source_15 => p_source_15
152828 , p_source_41 => p_source_41
152829 , p_source_42 => p_source_42
152830 , p_source_43 => p_source_43
152831 , p_source_44 => p_source_44
152832 , p_source_45 => p_source_45
152833          , x_transaction_coa_id       => l_adr_transaction_coa_id
152834          , x_accounting_coa_id        => l_adr_accounting_coa_id
152835          , x_value_type_code          => l_adr_value_type_code
152836          , p_side                     => 'NA'
152837    );
152838 
152839    xla_ae_lines_pkg.set_ccid(
152840     p_code_combination_id          => l_ccid
152841   , p_value_type_code              => l_adr_value_type_code
152842   , p_transaction_coa_id           => l_adr_transaction_coa_id
152843   , p_accounting_coa_id            => l_adr_accounting_coa_id
152844   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
152845   , p_adr_type_code                => 'S'
152846   , p_component_type               => l_component_type
152847   , p_component_code               => l_component_code
152848   , p_component_type_code          => l_component_type_code
152849   , p_component_appl_id            => l_component_appl_id
152850   , p_amb_context_code             => l_amb_context_code
152851   , p_side                         => 'NA'
152852   );
152853 
152854 
152855    --
152856    --
152857    END IF;
152858    --
152859    -- Bug 4922099
152860    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
152861           (NVL(l_enc_upg_option, 'N') = 'O')
152862         ) AND
152863         (l_bflow_method_code = 'PRIOR_ENTRY')
152864       )
152865    THEN
152866       IF
152867       --
152868       1 = 2
152869       --
152870       THEN
152871       xla_accounting_err_pkg.build_message
152872                                     (p_appli_s_name            => 'XLA'
152873                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
152874                                     ,p_token_1                 => 'LINE_NUMBER'
152875                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
152876                                     ,p_token_2                 => 'LINE_TYPE_NAME'
152877                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
152878                                                                              l_component_type
152879                                                                             ,l_component_code
152880                                                                             ,l_component_type_code
152881                                                                             ,l_component_appl_id
152882                                                                             ,l_amb_context_code
152883                                                                             ,l_entity_code
152884                                                                             ,l_event_class_code
152885                                                                            )
152886                                     ,p_token_3                 => 'OWNER'
152887                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
152888                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
152889                                                                           ,p_lookup_code    => l_component_type_code
152890                                                                          )
152891                                     ,p_token_4                 => 'PRODUCT_NAME'
152892                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
152893                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
152894                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
152895                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
152896                                     ,p_ae_header_id            =>  NULL
152897                                        );
152898 
152899         IF (C_LEVEL_ERROR>= g_log_level) THEN
152900                  trace
152901                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
152902                       ,p_level    => C_LEVEL_ERROR
152903                       ,p_module   => l_log_module);
152904         END IF;
152905       END IF;
152906    END IF;
152907    --
152908    --
152909    ------------------------------------------------------------------------------------------------
152910    -- 4219869 Business Flow
152911    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
152912    -- Prior Entry.  Currently, the following code is always generated.
152913    ------------------------------------------------------------------------------------------------
152914    XLA_AE_LINES_PKG.ValidateCurrentLine;
152915 
152916    ------------------------------------------------------------------------------------
152917    -- 4219869 Business Flow
152918    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
152919    ------------------------------------------------------------------------------------
152920    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
152921 
152922    ----------------------------------------------------------------------------------
152923    -- 4219869 Business Flow
152924    -- Update journal entry status -- Need to generate this within IF <condition>
152925    ----------------------------------------------------------------------------------
152926    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
152927          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
152928          ,p_balance_type_code => l_balance_type_code
152929          );
152930 
152931    -------------------------------------------------------------------------------------------
152932    -- 4262811 - Generate the Accrual Reversal lines
152933    -------------------------------------------------------------------------------------------
152934    BEGIN
152935       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
152936                               (g_array_event(p_event_id).array_value_num('header_index'));
152937       IF l_acc_rev_flag IS NULL THEN
152938          l_acc_rev_flag := 'N';
152939       END IF;
152940    EXCEPTION
152941       WHEN OTHERS THEN
152942          l_acc_rev_flag := 'N';
152943    END;
152944    --
152945    IF (l_acc_rev_flag = 'Y') THEN
152946 
152947        -- 4645092  ------------------------------------------------------------------------------
152948        -- To allow MPA report to determine if it should generate report process
152949        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
152950        ------------------------------------------------------------------------------------------
152951 
152952        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
152953        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
152954    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
152955    -- call ADRs
152956    -- Bug 4922099
152957    --
152958    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
152959         (NVL(l_actual_upg_option, 'N') = 'O') OR
152960         (NVL(l_enc_upg_option, 'N') = 'O')
152961       )
152962    THEN
152963    NULL;
152964    --
152965    --
152966    
152967   l_ccid := AcctDerRule_28(
152968            p_application_id           => p_application_id
152969          , p_ae_header_id             => l_ae_header_id 
152970 , p_source_15 => p_source_15
152971 , p_source_41 => p_source_41
152972 , p_source_42 => p_source_42
152973 , p_source_43 => p_source_43
152974 , p_source_44 => p_source_44
152975 , p_source_45 => p_source_45
152976          , x_transaction_coa_id       => l_adr_transaction_coa_id
152977          , x_accounting_coa_id        => l_adr_accounting_coa_id
152978          , x_value_type_code          => l_adr_value_type_code
152979          , p_side                     => 'NA'
152980    );
152981 
152982    xla_ae_lines_pkg.set_ccid(
152983     p_code_combination_id          => l_ccid
152984   , p_value_type_code              => l_adr_value_type_code
152985   , p_transaction_coa_id           => l_adr_transaction_coa_id
152986   , p_accounting_coa_id            => l_adr_accounting_coa_id
152987   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
152988   , p_adr_type_code                => 'S'
152989   , p_component_type               => l_component_type
152990   , p_component_code               => l_component_code
152991   , p_component_type_code          => l_component_type_code
152992   , p_component_appl_id            => l_component_appl_id
152993   , p_amb_context_code             => l_amb_context_code
152994   , p_side                         => 'NA'
152995   );
152996 
152997 
152998    --
152999    --
153000    END IF;
153001 
153002        --
153003        -- Update the line information that should be overwritten
153004        --
153005        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
153006                                          p_header_num   => 1);
153007        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
153008 
153009        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
153010 
153011        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
153012           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
153013        END IF;
153014 
153015       --
153016       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
153017       --
153018       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
153019           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
153020       ELSE
153021           ---------------------------------------------------------------------------------------------------
153022           -- 4262811a Switch Sign
153023           ---------------------------------------------------------------------------------------------------
153024           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
153025           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
153026                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
153027           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
153028                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
153029           -- 5132302
153030           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
153031                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
153032 
153033       END IF;
153034 
153035       -- 4955764
153036       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
153037       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
153038 
153039 
153040       XLA_AE_LINES_PKG.ValidateCurrentLine;
153041       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
153042 
153043       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
153044                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
153045                ,p_balance_type_code => l_balance_type_code);
153046 
153047    END IF;
153048 
153049    -----------------------------------------------------------------------------------------
153050    -- 4262811 Multiperiod Accounting
153051    -----------------------------------------------------------------------------------------
153052      -- No MPA option is assigned.
153053 
153054 
153055 END IF;
153056 END IF;
153057 --
153058 
153059 --
153060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153061    trace
153062       (p_msg      => 'END of AcctLineType_285'
153063       ,p_level    => C_LEVEL_PROCEDURE
153064       ,p_module   => l_log_module);
153065 END IF;
153066 --
153067 EXCEPTION
153068   WHEN xla_exceptions_pkg.application_exception THEN
153069       RAISE;
153070   WHEN OTHERS THEN
153071        xla_exceptions_pkg.raise_message
153072            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_285');
153073 END AcctLineType_285;
153074 --
153075 
153076 ---------------------------------------
153077 --
153078 -- PRIVATE FUNCTION
153079 --         AcctLineType_286
153080 --
153081 ---------------------------------------
153082 PROCEDURE AcctLineType_286 (
153083   p_application_id        IN NUMBER
153084  ,p_event_id              IN NUMBER
153085  ,p_calculate_acctd_flag  IN VARCHAR2
153086  ,p_calculate_g_l_flag    IN VARCHAR2
153087  ,p_actual_flag           IN OUT VARCHAR2
153088  ,p_balance_type_code     OUT VARCHAR2
153089  ,p_gain_or_loss_ref      OUT VARCHAR2
153090  
153091 --TRANSACTION_ID
153092  , p_source_1            IN NUMBER
153093 --Item Concatenated Segments
153094  , p_source_2            IN VARCHAR2
153095 --Transaction Quantity
153096  , p_source_3            IN NUMBER
153097 --Transaction Unit of Measure Code
153098  , p_source_4            IN VARCHAR2
153099 --Inventory Transaction Type Description
153100  , p_source_5            IN VARCHAR2
153101 --Cost Element Name
153102  , p_source_15            IN NUMBER
153103 --Product Line Accounting Category Material Account
153104  , p_source_41            IN NUMBER
153105 --Product Line Accounting Category Material Overhead Account
153106  , p_source_42            IN NUMBER
153107 --Product Line Accounting Category Resource Account
153108  , p_source_43            IN NUMBER
153109 --Product Line Accounting Category Outside Processing Account
153110  , p_source_44            IN NUMBER
153111 --Product Line Accounting Category Overhead Account
153112  , p_source_45            IN NUMBER
153113 --DISTRIBUTION_IDENTIFIER
153114  , p_source_84            IN NUMBER
153115 --Distribution Type
153116  , p_source_85            IN VARCHAR2
153117  , p_source_85_meaning    IN VARCHAR2
153118 --Entered Currency Code
153119  , p_source_88            IN VARCHAR2
153120 --Entered Amount
153121  , p_source_91            IN NUMBER
153122 --Currency Conversion Date
153123  , p_source_92            IN DATE
153124 --Currency Conversion Rate
153125  , p_source_93            IN NUMBER
153126 --Currency Conversion Type
153127  , p_source_94            IN VARCHAR2
153128 --Accounted Amount
153129  , p_source_95            IN NUMBER
153130 --Accounting Line Type
153131  , p_source_97            IN NUMBER
153132 --Organization Code
153133  , p_source_108            IN VARCHAR2
153134 )
153135 IS
153136 
153137 l_component_type              VARCHAR2(80);
153138 l_component_code              VARCHAR2(30);
153139 l_component_type_code         VARCHAR2(1);
153140 l_component_appl_id           INTEGER;
153141 l_amb_context_code            VARCHAR2(30);
153142 l_entity_code                 VARCHAR2(30);
153143 l_event_class_code            VARCHAR2(30);
153144 l_ae_header_id                NUMBER;
153145 l_event_type_code             VARCHAR2(30);
153146 l_line_definition_code        VARCHAR2(30);
153147 l_line_definition_owner_code  VARCHAR2(1);
153148 --
153149 -- adr variables
153150 l_segment                     VARCHAR2(30);
153151 l_ccid                        NUMBER;
153152 l_adr_transaction_coa_id      NUMBER;
153153 l_adr_accounting_coa_id       NUMBER;
153154 l_adr_flexfield_segment_code  VARCHAR2(30);
153155 l_adr_flex_value_set_id       NUMBER;
153156 l_adr_value_type_code         VARCHAR2(30);
153157 l_adr_value_combination_id    NUMBER;
153158 l_adr_value_segment_code      VARCHAR2(30);
153159 
153160 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
153161 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
153162 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
153163 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
153164 
153165 -- 4262811 Variables ------------------------------------------------------------------------------------------
153166 l_entered_amt_idx             NUMBER;
153167 l_accted_amt_idx              NUMBER;
153168 l_acc_rev_flag                VARCHAR2(1);
153169 l_accrual_line_num            NUMBER;
153170 l_tmp_amt                     NUMBER;
153171 l_acc_rev_natural_side_code   VARCHAR2(1);
153172 
153173 l_num_entries                 NUMBER;
153174 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
153175 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
153176 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
153177 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
153178 l_recog_line_1                NUMBER;
153179 l_recog_line_2                NUMBER;
153180 
153181 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
153182 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
153183 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
153184 
153185 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
153186 
153187 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
153188 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
153189 
153190 ---------------------------------------------------------------------------------------------------------------
153191 
153192 
153193 --
153194 -- bulk performance
153195 --
153196 l_balance_type_code           VARCHAR2(1);
153197 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
153198 l_log_module                  VARCHAR2(240);
153199 
153200 --
153201 -- Upgrade strategy
153202 --
153203 l_actual_upg_option           VARCHAR2(1);
153204 l_enc_upg_option           VARCHAR2(1);
153205 
153206 --
153207 BEGIN
153208 --
153209 IF g_log_enabled THEN
153210       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_286';
153211 END IF;
153212 --
153213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153214 
153215       trace
153216          (p_msg      => 'BEGIN of AcctLineType_286'
153217          ,p_level    => C_LEVEL_PROCEDURE
153218          ,p_module   => l_log_module);
153219 
153220 END IF;
153221 --
153222 l_component_type             := 'AMB_JLT';
153223 l_component_code             := 'INVENTORY_VALUATION';
153224 l_component_type_code        := 'S';
153225 l_component_appl_id          :=  707;
153226 l_amb_context_code           := 'DEFAULT';
153227 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
153228 l_event_class_code           := 'USER_DEFINE';
153229 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
153230 l_line_definition_owner_code := 'S';
153231 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
153232 --
153233 l_balance_type_code          := 'A';
153234 l_segment                     := NULL;
153235 l_ccid                        := NULL;
153236 l_adr_transaction_coa_id      := NULL;
153237 l_adr_accounting_coa_id       := NULL;
153238 l_adr_flexfield_segment_code  := NULL;
153239 l_adr_flex_value_set_id       := NULL;
153240 l_adr_value_type_code         := NULL;
153241 l_adr_value_combination_id    := NULL;
153242 l_adr_value_segment_code      := NULL;
153243 
153244 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
153245 l_bflow_class_code           := '';    -- 4219869 Business Flow
153246 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
153247 l_budgetary_control_flag     := 'N';
153248 
153249 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
153250 l_bflow_applied_to_amt       := NULL; -- 5132302
153251 l_entered_amt_idx            := NULL;          -- 4262811
153252 l_accted_amt_idx             := NULL;          -- 4262811
153253 l_acc_rev_flag               := NULL;          -- 4262811
153254 l_accrual_line_num           := NULL;          -- 4262811
153255 l_tmp_amt                    := NULL;          -- 4262811
153256 --
153257  
153258 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
153259     l_balance_type_code <> 'B' THEN
153260 IF NVL(p_source_97,9E125) =  1
153261  THEN 
153262 
153263    --
153264    XLA_AE_LINES_PKG.SetNewLine;
153265 
153266    p_balance_type_code          := l_balance_type_code;
153267    -- set the flag so later we will know whether the gain loss line needs to be created
153268    
153269    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
153270      p_actual_flag :='A';
153271    END IF;
153272 
153273    --
153274    -- bulk performance
153275    --
153276    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
153277                                       p_header_num   => 0); -- 4262811
153278    --
153279    -- set accounting line options
153280    --
153281    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
153282            p_natural_side_code          => 'D'
153283          , p_gain_or_loss_flag          => 'N'
153284          , p_gl_transfer_mode_code      => 'S'
153285          , p_acct_entry_type_code       => 'A'
153286          , p_switch_side_flag           => 'Y'
153287          , p_merge_duplicate_code       => 'N'
153288          );
153289    --
153290    l_acc_rev_natural_side_code := 'C';  -- 4262811
153291    -- 
153292    --
153293    -- set accounting line type info
153294    --
153295    xla_ae_lines_pkg.SetAcctLineType
153296       (p_component_type             => l_component_type
153297       ,p_event_type_code            => l_event_type_code
153298       ,p_line_definition_owner_code => l_line_definition_owner_code
153299       ,p_line_definition_code       => l_line_definition_code
153300       ,p_accounting_line_code       => l_component_code
153301       ,p_accounting_line_type_code  => l_component_type_code
153302       ,p_accounting_line_appl_id    => l_component_appl_id
153303       ,p_amb_context_code           => l_amb_context_code
153304       ,p_entity_code                => l_entity_code
153305       ,p_event_class_code           => l_event_class_code);
153306    --
153307    -- set accounting class
153308    --
153309    xla_ae_lines_pkg.SetAcctClass(
153310            p_accounting_class_code  => 'INVENTORY_VALUATION'
153311          , p_ae_header_id           => l_ae_header_id
153312          );
153313 
153314    --
153315    -- set rounding class
153316    --
153317    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
153318                       'INVENTORY_VALUATION';
153319 
153320    --
153321    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
153322    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
153323    --
153324    -- bulk performance
153325    --
153326    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
153327 
153328    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
153329       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
153330 
153331    -- 4955764
153332    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
153333       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
153334 
153335    -- 4458381 Public Sector Enh
153336    
153337    --
153338    -- set accounting attributes for the line type
153339    --
153340    l_entered_amt_idx := 3;
153341    l_accted_amt_idx  := 8;
153342    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
153343    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
153344    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
153345    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
153346    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
153347    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
153348    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
153349    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
153350    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
153351    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
153352    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
153353    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
153354    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
153355    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
153356    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
153357    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
153358    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
153359 
153360    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
153361    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
153362 
153363    ---------------------------------------------------------------------------------------------------------------
153364    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
153365    ---------------------------------------------------------------------------------------------------------------
153366    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
153367 
153368    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
153369    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
153370 
153371    IF xla_accounting_cache_pkg.GetValueChar
153372          (p_source_code         => 'LEDGER_CATEGORY_CODE'
153373          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
153374    AND l_bflow_method_code = 'PRIOR_ENTRY'
153375 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
153376    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
153377          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
153378        )
153379    THEN
153380          xla_ae_lines_pkg.BflowUpgEntry
153381            (p_business_method_code    => l_bflow_method_code
153382            ,p_business_class_code     => l_bflow_class_code
153383            ,p_balance_type            => l_balance_type_code);
153384    ELSE
153385       NULL;
153386 -- No business flow processing for business flow method of NONE.
153387    END IF;
153388 
153389    --
153390    -- call analytical criteria
153391    --
153392    
153393 
153394 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
153395 xla_ae_lines_pkg.SetAnalyticalCriteria(
153396    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
153397  , p_analytical_criterion_owner   => 'S'
153398  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
153399  , p_amb_context_code             => 'DEFAULT'
153400  , p_balancing_flag               => 'Y'
153401  
153402  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
153403  , p_analytical_detail_num_1     =>  NULL
153404  , p_analytical_detail_date_1    =>  NULL
153405 
153406  , p_ae_header_id                 => l_ae_header_id
153407 )
153408 ;
153409 --
153410 
153411    --
153412    -- call description
153413    --
153414    
153415 xla_ae_lines_pkg.SetLineDescription(
153416    p_ae_header_id => l_ae_header_id
153417   ,p_description  => Description_1 (
153418      p_application_id         => p_application_id
153419    , p_ae_header_id           => l_ae_header_id 
153420 , p_source_1 => p_source_1
153421 , p_source_2 => p_source_2
153422 , p_source_3 => p_source_3
153423 , p_source_4 => p_source_4
153424 , p_source_5 => p_source_5
153425    )
153426 );
153427 
153428 
153429    --
153430    -- call ADRs
153431    -- Bug 4922099
153432    --
153433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
153434         (NVL(l_actual_upg_option, 'N') = 'O') OR
153435         (NVL(l_enc_upg_option, 'N') = 'O')
153436       )
153437    THEN
153438    NULL;
153439    --
153440    --
153441    
153442   l_ccid := AcctDerRule_28(
153443            p_application_id           => p_application_id
153444          , p_ae_header_id             => l_ae_header_id 
153445 , p_source_15 => p_source_15
153446 , p_source_41 => p_source_41
153447 , p_source_42 => p_source_42
153448 , p_source_43 => p_source_43
153449 , p_source_44 => p_source_44
153450 , p_source_45 => p_source_45
153451          , x_transaction_coa_id       => l_adr_transaction_coa_id
153452          , x_accounting_coa_id        => l_adr_accounting_coa_id
153453          , x_value_type_code          => l_adr_value_type_code
153454          , p_side                     => 'NA'
153455    );
153456 
153457    xla_ae_lines_pkg.set_ccid(
153458     p_code_combination_id          => l_ccid
153459   , p_value_type_code              => l_adr_value_type_code
153460   , p_transaction_coa_id           => l_adr_transaction_coa_id
153461   , p_accounting_coa_id            => l_adr_accounting_coa_id
153462   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
153463   , p_adr_type_code                => 'S'
153464   , p_component_type               => l_component_type
153465   , p_component_code               => l_component_code
153466   , p_component_type_code          => l_component_type_code
153467   , p_component_appl_id            => l_component_appl_id
153468   , p_amb_context_code             => l_amb_context_code
153469   , p_side                         => 'NA'
153470   );
153471 
153472 
153473    --
153474    --
153475    END IF;
153476    --
153477    -- Bug 4922099
153478    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
153479           (NVL(l_enc_upg_option, 'N') = 'O')
153480         ) AND
153481         (l_bflow_method_code = 'PRIOR_ENTRY')
153482       )
153483    THEN
153484       IF
153485       --
153486       1 = 2
153487       --
153488       THEN
153489       xla_accounting_err_pkg.build_message
153490                                     (p_appli_s_name            => 'XLA'
153491                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
153492                                     ,p_token_1                 => 'LINE_NUMBER'
153493                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
153494                                     ,p_token_2                 => 'LINE_TYPE_NAME'
153495                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
153496                                                                              l_component_type
153497                                                                             ,l_component_code
153498                                                                             ,l_component_type_code
153499                                                                             ,l_component_appl_id
153500                                                                             ,l_amb_context_code
153501                                                                             ,l_entity_code
153502                                                                             ,l_event_class_code
153503                                                                            )
153504                                     ,p_token_3                 => 'OWNER'
153505                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
153506                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
153507                                                                           ,p_lookup_code    => l_component_type_code
153508                                                                          )
153509                                     ,p_token_4                 => 'PRODUCT_NAME'
153510                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
153511                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
153512                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
153513                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
153514                                     ,p_ae_header_id            =>  NULL
153515                                        );
153516 
153517         IF (C_LEVEL_ERROR>= g_log_level) THEN
153518                  trace
153519                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
153520                       ,p_level    => C_LEVEL_ERROR
153521                       ,p_module   => l_log_module);
153522         END IF;
153523       END IF;
153524    END IF;
153525    --
153526    --
153527    ------------------------------------------------------------------------------------------------
153528    -- 4219869 Business Flow
153529    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
153530    -- Prior Entry.  Currently, the following code is always generated.
153531    ------------------------------------------------------------------------------------------------
153532    XLA_AE_LINES_PKG.ValidateCurrentLine;
153533 
153534    ------------------------------------------------------------------------------------
153535    -- 4219869 Business Flow
153536    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
153537    ------------------------------------------------------------------------------------
153538    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
153539 
153540    ----------------------------------------------------------------------------------
153541    -- 4219869 Business Flow
153542    -- Update journal entry status -- Need to generate this within IF <condition>
153543    ----------------------------------------------------------------------------------
153544    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
153545          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
153546          ,p_balance_type_code => l_balance_type_code
153547          );
153548 
153549    -------------------------------------------------------------------------------------------
153550    -- 4262811 - Generate the Accrual Reversal lines
153551    -------------------------------------------------------------------------------------------
153552    BEGIN
153553       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
153554                               (g_array_event(p_event_id).array_value_num('header_index'));
153555       IF l_acc_rev_flag IS NULL THEN
153556          l_acc_rev_flag := 'N';
153557       END IF;
153558    EXCEPTION
153559       WHEN OTHERS THEN
153560          l_acc_rev_flag := 'N';
153561    END;
153562    --
153563    IF (l_acc_rev_flag = 'Y') THEN
153564 
153565        -- 4645092  ------------------------------------------------------------------------------
153566        -- To allow MPA report to determine if it should generate report process
153567        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
153568        ------------------------------------------------------------------------------------------
153569 
153570        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
153571        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
153572    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
153573    -- call ADRs
153574    -- Bug 4922099
153575    --
153576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
153577         (NVL(l_actual_upg_option, 'N') = 'O') OR
153578         (NVL(l_enc_upg_option, 'N') = 'O')
153579       )
153580    THEN
153581    NULL;
153582    --
153583    --
153584    
153585   l_ccid := AcctDerRule_28(
153586            p_application_id           => p_application_id
153587          , p_ae_header_id             => l_ae_header_id 
153588 , p_source_15 => p_source_15
153589 , p_source_41 => p_source_41
153590 , p_source_42 => p_source_42
153591 , p_source_43 => p_source_43
153592 , p_source_44 => p_source_44
153593 , p_source_45 => p_source_45
153594          , x_transaction_coa_id       => l_adr_transaction_coa_id
153595          , x_accounting_coa_id        => l_adr_accounting_coa_id
153596          , x_value_type_code          => l_adr_value_type_code
153597          , p_side                     => 'NA'
153598    );
153599 
153600    xla_ae_lines_pkg.set_ccid(
153601     p_code_combination_id          => l_ccid
153602   , p_value_type_code              => l_adr_value_type_code
153603   , p_transaction_coa_id           => l_adr_transaction_coa_id
153604   , p_accounting_coa_id            => l_adr_accounting_coa_id
153605   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
153606   , p_adr_type_code                => 'S'
153607   , p_component_type               => l_component_type
153608   , p_component_code               => l_component_code
153609   , p_component_type_code          => l_component_type_code
153610   , p_component_appl_id            => l_component_appl_id
153611   , p_amb_context_code             => l_amb_context_code
153612   , p_side                         => 'NA'
153613   );
153614 
153615 
153616    --
153617    --
153618    END IF;
153619 
153620        --
153621        -- Update the line information that should be overwritten
153622        --
153623        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
153624                                          p_header_num   => 1);
153625        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
153626 
153627        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
153628 
153629        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
153630           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
153631        END IF;
153632 
153633       --
153634       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
153635       --
153636       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
153637           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
153638       ELSE
153639           ---------------------------------------------------------------------------------------------------
153640           -- 4262811a Switch Sign
153641           ---------------------------------------------------------------------------------------------------
153642           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
153643           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
153644                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
153645           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
153646                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
153647           -- 5132302
153648           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
153649                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
153650 
153651       END IF;
153652 
153653       -- 4955764
153654       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
153655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
153656 
153657 
153658       XLA_AE_LINES_PKG.ValidateCurrentLine;
153659       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
153660 
153661       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
153662                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
153663                ,p_balance_type_code => l_balance_type_code);
153664 
153665    END IF;
153666 
153667    -----------------------------------------------------------------------------------------
153668    -- 4262811 Multiperiod Accounting
153669    -----------------------------------------------------------------------------------------
153670      -- No MPA option is assigned.
153671 
153672 
153673 END IF;
153674 END IF;
153675 --
153676 
153677 --
153678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153679    trace
153680       (p_msg      => 'END of AcctLineType_286'
153681       ,p_level    => C_LEVEL_PROCEDURE
153682       ,p_module   => l_log_module);
153683 END IF;
153684 --
153685 EXCEPTION
153686   WHEN xla_exceptions_pkg.application_exception THEN
153687       RAISE;
153688   WHEN OTHERS THEN
153689        xla_exceptions_pkg.raise_message
153690            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_286');
153691 END AcctLineType_286;
153692 --
153693 
153694 ---------------------------------------
153695 --
153696 -- PRIVATE FUNCTION
153697 --         AcctLineType_287
153698 --
153699 ---------------------------------------
153700 PROCEDURE AcctLineType_287 (
153701   p_application_id        IN NUMBER
153702  ,p_event_id              IN NUMBER
153703  ,p_calculate_acctd_flag  IN VARCHAR2
153704  ,p_calculate_g_l_flag    IN VARCHAR2
153705  ,p_actual_flag           IN OUT VARCHAR2
153706  ,p_balance_type_code     OUT VARCHAR2
153707  ,p_gain_or_loss_ref      OUT VARCHAR2
153708  
153709 --TRANSACTION_ID
153710  , p_source_1            IN NUMBER
153711 --Item Concatenated Segments
153712  , p_source_2            IN VARCHAR2
153713 --Transaction Quantity
153714  , p_source_3            IN NUMBER
153715 --Transaction Unit of Measure Code
153716  , p_source_4            IN VARCHAR2
153717 --Inventory Transaction Type Description
153718  , p_source_5            IN VARCHAR2
153719 --Cost Element Name
153720  , p_source_15            IN NUMBER
153721 --Product Line Accounting Category Material Account
153722  , p_source_41            IN NUMBER
153723 --Product Line Accounting Category Material Overhead Account
153724  , p_source_42            IN NUMBER
153725 --Product Line Accounting Category Resource Account
153726  , p_source_43            IN NUMBER
153727 --Product Line Accounting Category Outside Processing Account
153728  , p_source_44            IN NUMBER
153729 --Product Line Accounting Category Overhead Account
153730  , p_source_45            IN NUMBER
153731 --DISTRIBUTION_IDENTIFIER
153732  , p_source_84            IN NUMBER
153733 --Distribution Type
153734  , p_source_85            IN VARCHAR2
153735  , p_source_85_meaning    IN VARCHAR2
153736 --Entered Currency Code
153737  , p_source_88            IN VARCHAR2
153738 --Entered Amount
153739  , p_source_91            IN NUMBER
153740 --Currency Conversion Date
153741  , p_source_92            IN DATE
153742 --Currency Conversion Rate
153743  , p_source_93            IN NUMBER
153744 --Currency Conversion Type
153745  , p_source_94            IN VARCHAR2
153746 --Accounted Amount
153747  , p_source_95            IN NUMBER
153748 --Accounting Line Type
153749  , p_source_97            IN NUMBER
153750 --Organization Code
153751  , p_source_108            IN VARCHAR2
153752 )
153753 IS
153754 
153755 l_component_type              VARCHAR2(80);
153756 l_component_code              VARCHAR2(30);
153757 l_component_type_code         VARCHAR2(1);
153758 l_component_appl_id           INTEGER;
153759 l_amb_context_code            VARCHAR2(30);
153760 l_entity_code                 VARCHAR2(30);
153761 l_event_class_code            VARCHAR2(30);
153762 l_ae_header_id                NUMBER;
153763 l_event_type_code             VARCHAR2(30);
153764 l_line_definition_code        VARCHAR2(30);
153765 l_line_definition_owner_code  VARCHAR2(1);
153766 --
153767 -- adr variables
153768 l_segment                     VARCHAR2(30);
153769 l_ccid                        NUMBER;
153770 l_adr_transaction_coa_id      NUMBER;
153771 l_adr_accounting_coa_id       NUMBER;
153772 l_adr_flexfield_segment_code  VARCHAR2(30);
153773 l_adr_flex_value_set_id       NUMBER;
153774 l_adr_value_type_code         VARCHAR2(30);
153775 l_adr_value_combination_id    NUMBER;
153776 l_adr_value_segment_code      VARCHAR2(30);
153777 
153778 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
153779 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
153780 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
153781 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
153782 
153783 -- 4262811 Variables ------------------------------------------------------------------------------------------
153784 l_entered_amt_idx             NUMBER;
153785 l_accted_amt_idx              NUMBER;
153786 l_acc_rev_flag                VARCHAR2(1);
153787 l_accrual_line_num            NUMBER;
153788 l_tmp_amt                     NUMBER;
153789 l_acc_rev_natural_side_code   VARCHAR2(1);
153790 
153791 l_num_entries                 NUMBER;
153792 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
153793 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
153794 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
153795 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
153796 l_recog_line_1                NUMBER;
153797 l_recog_line_2                NUMBER;
153798 
153799 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
153800 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
153801 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
153802 
153803 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
153804 
153805 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
153806 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
153807 
153808 ---------------------------------------------------------------------------------------------------------------
153809 
153810 
153811 --
153812 -- bulk performance
153813 --
153814 l_balance_type_code           VARCHAR2(1);
153815 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
153816 l_log_module                  VARCHAR2(240);
153817 
153818 --
153819 -- Upgrade strategy
153820 --
153821 l_actual_upg_option           VARCHAR2(1);
153822 l_enc_upg_option           VARCHAR2(1);
153823 
153824 --
153825 BEGIN
153826 --
153827 IF g_log_enabled THEN
153828       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_287';
153829 END IF;
153830 --
153831 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153832 
153833       trace
153834          (p_msg      => 'BEGIN of AcctLineType_287'
153835          ,p_level    => C_LEVEL_PROCEDURE
153836          ,p_module   => l_log_module);
153837 
153838 END IF;
153839 --
153840 l_component_type             := 'AMB_JLT';
153841 l_component_code             := 'INVENTORY_VALUATION';
153842 l_component_type_code        := 'S';
153843 l_component_appl_id          :=  707;
153844 l_amb_context_code           := 'DEFAULT';
153845 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
153846 l_event_class_code           := 'USER_DEFINE';
153847 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
153848 l_line_definition_owner_code := 'S';
153849 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
153850 --
153851 l_balance_type_code          := 'A';
153852 l_segment                     := NULL;
153853 l_ccid                        := NULL;
153854 l_adr_transaction_coa_id      := NULL;
153855 l_adr_accounting_coa_id       := NULL;
153856 l_adr_flexfield_segment_code  := NULL;
153857 l_adr_flex_value_set_id       := NULL;
153858 l_adr_value_type_code         := NULL;
153859 l_adr_value_combination_id    := NULL;
153860 l_adr_value_segment_code      := NULL;
153861 
153862 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
153863 l_bflow_class_code           := '';    -- 4219869 Business Flow
153864 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
153865 l_budgetary_control_flag     := 'N';
153866 
153867 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
153868 l_bflow_applied_to_amt       := NULL; -- 5132302
153869 l_entered_amt_idx            := NULL;          -- 4262811
153870 l_accted_amt_idx             := NULL;          -- 4262811
153871 l_acc_rev_flag               := NULL;          -- 4262811
153872 l_accrual_line_num           := NULL;          -- 4262811
153873 l_tmp_amt                    := NULL;          -- 4262811
153874 --
153875  
153876 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
153877     l_balance_type_code <> 'B' THEN
153878 IF NVL(p_source_97,9E125) =  1
153879  THEN 
153880 
153881    --
153882    XLA_AE_LINES_PKG.SetNewLine;
153883 
153884    p_balance_type_code          := l_balance_type_code;
153885    -- set the flag so later we will know whether the gain loss line needs to be created
153886    
153887    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
153888      p_actual_flag :='A';
153889    END IF;
153890 
153891    --
153892    -- bulk performance
153893    --
153894    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
153895                                       p_header_num   => 0); -- 4262811
153896    --
153897    -- set accounting line options
153898    --
153899    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
153900            p_natural_side_code          => 'D'
153901          , p_gain_or_loss_flag          => 'N'
153902          , p_gl_transfer_mode_code      => 'S'
153903          , p_acct_entry_type_code       => 'A'
153904          , p_switch_side_flag           => 'Y'
153905          , p_merge_duplicate_code       => 'N'
153906          );
153907    --
153908    l_acc_rev_natural_side_code := 'C';  -- 4262811
153909    -- 
153910    --
153911    -- set accounting line type info
153912    --
153913    xla_ae_lines_pkg.SetAcctLineType
153914       (p_component_type             => l_component_type
153915       ,p_event_type_code            => l_event_type_code
153916       ,p_line_definition_owner_code => l_line_definition_owner_code
153917       ,p_line_definition_code       => l_line_definition_code
153918       ,p_accounting_line_code       => l_component_code
153919       ,p_accounting_line_type_code  => l_component_type_code
153920       ,p_accounting_line_appl_id    => l_component_appl_id
153921       ,p_amb_context_code           => l_amb_context_code
153922       ,p_entity_code                => l_entity_code
153923       ,p_event_class_code           => l_event_class_code);
153924    --
153925    -- set accounting class
153926    --
153927    xla_ae_lines_pkg.SetAcctClass(
153928            p_accounting_class_code  => 'INVENTORY_VALUATION'
153929          , p_ae_header_id           => l_ae_header_id
153930          );
153931 
153932    --
153933    -- set rounding class
153934    --
153935    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
153936                       'INVENTORY_VALUATION';
153937 
153938    --
153939    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
153940    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
153941    --
153942    -- bulk performance
153943    --
153944    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
153945 
153946    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
153947       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
153948 
153949    -- 4955764
153950    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
153951       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
153952 
153953    -- 4458381 Public Sector Enh
153954    
153955    --
153956    -- set accounting attributes for the line type
153957    --
153958    l_entered_amt_idx := 3;
153959    l_accted_amt_idx  := 8;
153960    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
153961    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
153962    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
153963    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
153964    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
153965    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
153966    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
153967    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
153968    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
153969    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
153970    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
153971    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
153972    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
153973    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
153974    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
153975    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
153976    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
153977 
153978    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
153979    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
153980 
153981    ---------------------------------------------------------------------------------------------------------------
153982    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
153983    ---------------------------------------------------------------------------------------------------------------
153984    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
153985 
153986    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
153987    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
153988 
153989    IF xla_accounting_cache_pkg.GetValueChar
153990          (p_source_code         => 'LEDGER_CATEGORY_CODE'
153991          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
153992    AND l_bflow_method_code = 'PRIOR_ENTRY'
153993 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
153994    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
153995          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
153996        )
153997    THEN
153998          xla_ae_lines_pkg.BflowUpgEntry
153999            (p_business_method_code    => l_bflow_method_code
154000            ,p_business_class_code     => l_bflow_class_code
154001            ,p_balance_type            => l_balance_type_code);
154002    ELSE
154003       NULL;
154004 -- No business flow processing for business flow method of NONE.
154005    END IF;
154006 
154007    --
154008    -- call analytical criteria
154009    --
154010    
154011 
154012 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
154013 xla_ae_lines_pkg.SetAnalyticalCriteria(
154014    p_analytical_criterion_name    => 'Inventory Value Supporting Reference'
154015  , p_analytical_criterion_owner   => 'S'
154016  , p_analytical_criterion_code    => 'INVENTORY_VALUE_SR'
154017  , p_amb_context_code             => 'DEFAULT'
154018  , p_balancing_flag               => 'Y'
154019  
154020  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_108)
154021  , p_analytical_detail_num_1     =>  NULL
154022  , p_analytical_detail_date_1    =>  NULL
154023 
154024  , p_ae_header_id                 => l_ae_header_id
154025 )
154026 ;
154027 --
154028 
154029    --
154030    -- call description
154031    --
154032    
154033 xla_ae_lines_pkg.SetLineDescription(
154034    p_ae_header_id => l_ae_header_id
154035   ,p_description  => Description_1 (
154036      p_application_id         => p_application_id
154037    , p_ae_header_id           => l_ae_header_id 
154038 , p_source_1 => p_source_1
154039 , p_source_2 => p_source_2
154040 , p_source_3 => p_source_3
154041 , p_source_4 => p_source_4
154042 , p_source_5 => p_source_5
154043    )
154044 );
154045 
154046 
154047    --
154048    -- call ADRs
154049    -- Bug 4922099
154050    --
154051    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
154052         (NVL(l_actual_upg_option, 'N') = 'O') OR
154053         (NVL(l_enc_upg_option, 'N') = 'O')
154054       )
154055    THEN
154056    NULL;
154057    --
154058    --
154059    
154060   l_ccid := AcctDerRule_28(
154061            p_application_id           => p_application_id
154062          , p_ae_header_id             => l_ae_header_id 
154063 , p_source_15 => p_source_15
154064 , p_source_41 => p_source_41
154065 , p_source_42 => p_source_42
154066 , p_source_43 => p_source_43
154067 , p_source_44 => p_source_44
154068 , p_source_45 => p_source_45
154069          , x_transaction_coa_id       => l_adr_transaction_coa_id
154070          , x_accounting_coa_id        => l_adr_accounting_coa_id
154071          , x_value_type_code          => l_adr_value_type_code
154072          , p_side                     => 'NA'
154073    );
154074 
154075    xla_ae_lines_pkg.set_ccid(
154076     p_code_combination_id          => l_ccid
154077   , p_value_type_code              => l_adr_value_type_code
154078   , p_transaction_coa_id           => l_adr_transaction_coa_id
154079   , p_accounting_coa_id            => l_adr_accounting_coa_id
154080   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
154081   , p_adr_type_code                => 'S'
154082   , p_component_type               => l_component_type
154083   , p_component_code               => l_component_code
154084   , p_component_type_code          => l_component_type_code
154085   , p_component_appl_id            => l_component_appl_id
154086   , p_amb_context_code             => l_amb_context_code
154087   , p_side                         => 'NA'
154088   );
154089 
154090 
154091    --
154092    --
154093    END IF;
154094    --
154095    -- Bug 4922099
154096    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
154097           (NVL(l_enc_upg_option, 'N') = 'O')
154098         ) AND
154099         (l_bflow_method_code = 'PRIOR_ENTRY')
154100       )
154101    THEN
154102       IF
154103       --
154104       1 = 2
154105       --
154106       THEN
154107       xla_accounting_err_pkg.build_message
154108                                     (p_appli_s_name            => 'XLA'
154109                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
154110                                     ,p_token_1                 => 'LINE_NUMBER'
154111                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
154112                                     ,p_token_2                 => 'LINE_TYPE_NAME'
154113                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
154114                                                                              l_component_type
154115                                                                             ,l_component_code
154116                                                                             ,l_component_type_code
154117                                                                             ,l_component_appl_id
154118                                                                             ,l_amb_context_code
154119                                                                             ,l_entity_code
154120                                                                             ,l_event_class_code
154121                                                                            )
154122                                     ,p_token_3                 => 'OWNER'
154123                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
154124                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
154125                                                                           ,p_lookup_code    => l_component_type_code
154126                                                                          )
154127                                     ,p_token_4                 => 'PRODUCT_NAME'
154128                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
154129                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
154130                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
154131                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
154132                                     ,p_ae_header_id            =>  NULL
154133                                        );
154134 
154135         IF (C_LEVEL_ERROR>= g_log_level) THEN
154136                  trace
154137                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
154138                       ,p_level    => C_LEVEL_ERROR
154139                       ,p_module   => l_log_module);
154140         END IF;
154141       END IF;
154142    END IF;
154143    --
154144    --
154145    ------------------------------------------------------------------------------------------------
154146    -- 4219869 Business Flow
154147    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
154148    -- Prior Entry.  Currently, the following code is always generated.
154149    ------------------------------------------------------------------------------------------------
154150    XLA_AE_LINES_PKG.ValidateCurrentLine;
154151 
154152    ------------------------------------------------------------------------------------
154153    -- 4219869 Business Flow
154154    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
154155    ------------------------------------------------------------------------------------
154156    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
154157 
154158    ----------------------------------------------------------------------------------
154159    -- 4219869 Business Flow
154160    -- Update journal entry status -- Need to generate this within IF <condition>
154161    ----------------------------------------------------------------------------------
154162    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
154163          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
154164          ,p_balance_type_code => l_balance_type_code
154165          );
154166 
154167    -------------------------------------------------------------------------------------------
154168    -- 4262811 - Generate the Accrual Reversal lines
154169    -------------------------------------------------------------------------------------------
154170    BEGIN
154171       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
154172                               (g_array_event(p_event_id).array_value_num('header_index'));
154173       IF l_acc_rev_flag IS NULL THEN
154174          l_acc_rev_flag := 'N';
154175       END IF;
154176    EXCEPTION
154177       WHEN OTHERS THEN
154178          l_acc_rev_flag := 'N';
154179    END;
154180    --
154181    IF (l_acc_rev_flag = 'Y') THEN
154182 
154183        -- 4645092  ------------------------------------------------------------------------------
154184        -- To allow MPA report to determine if it should generate report process
154185        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
154186        ------------------------------------------------------------------------------------------
154187 
154188        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
154189        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
154190    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
154191    -- call ADRs
154192    -- Bug 4922099
154193    --
154194    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
154195         (NVL(l_actual_upg_option, 'N') = 'O') OR
154196         (NVL(l_enc_upg_option, 'N') = 'O')
154197       )
154198    THEN
154199    NULL;
154200    --
154201    --
154202    
154203   l_ccid := AcctDerRule_28(
154204            p_application_id           => p_application_id
154205          , p_ae_header_id             => l_ae_header_id 
154206 , p_source_15 => p_source_15
154207 , p_source_41 => p_source_41
154208 , p_source_42 => p_source_42
154209 , p_source_43 => p_source_43
154210 , p_source_44 => p_source_44
154211 , p_source_45 => p_source_45
154212          , x_transaction_coa_id       => l_adr_transaction_coa_id
154213          , x_accounting_coa_id        => l_adr_accounting_coa_id
154214          , x_value_type_code          => l_adr_value_type_code
154215          , p_side                     => 'NA'
154216    );
154217 
154218    xla_ae_lines_pkg.set_ccid(
154219     p_code_combination_id          => l_ccid
154220   , p_value_type_code              => l_adr_value_type_code
154221   , p_transaction_coa_id           => l_adr_transaction_coa_id
154222   , p_accounting_coa_id            => l_adr_accounting_coa_id
154223   , p_adr_code                     => 'PI_INVENTORY_ACCOUNT'
154224   , p_adr_type_code                => 'S'
154225   , p_component_type               => l_component_type
154226   , p_component_code               => l_component_code
154227   , p_component_type_code          => l_component_type_code
154228   , p_component_appl_id            => l_component_appl_id
154229   , p_amb_context_code             => l_amb_context_code
154230   , p_side                         => 'NA'
154231   );
154232 
154233 
154234    --
154235    --
154236    END IF;
154237 
154238        --
154239        -- Update the line information that should be overwritten
154240        --
154241        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
154242                                          p_header_num   => 1);
154243        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
154244 
154245        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
154246 
154247        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
154248           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
154249        END IF;
154250 
154251       --
154252       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
154253       --
154254       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
154255           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
154256       ELSE
154257           ---------------------------------------------------------------------------------------------------
154258           -- 4262811a Switch Sign
154259           ---------------------------------------------------------------------------------------------------
154260           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
154261           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
154262                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
154263           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
154264                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
154265           -- 5132302
154266           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
154267                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
154268 
154269       END IF;
154270 
154271       -- 4955764
154272       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
154273       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
154274 
154275 
154276       XLA_AE_LINES_PKG.ValidateCurrentLine;
154277       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
154278 
154279       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
154280                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
154281                ,p_balance_type_code => l_balance_type_code);
154282 
154283    END IF;
154284 
154285    -----------------------------------------------------------------------------------------
154286    -- 4262811 Multiperiod Accounting
154287    -----------------------------------------------------------------------------------------
154288      -- No MPA option is assigned.
154289 
154290 
154291 END IF;
154292 END IF;
154293 --
154294 
154295 --
154296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154297    trace
154298       (p_msg      => 'END of AcctLineType_287'
154299       ,p_level    => C_LEVEL_PROCEDURE
154300       ,p_module   => l_log_module);
154301 END IF;
154302 --
154303 EXCEPTION
154304   WHEN xla_exceptions_pkg.application_exception THEN
154305       RAISE;
154306   WHEN OTHERS THEN
154307        xla_exceptions_pkg.raise_message
154308            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_287');
154309 END AcctLineType_287;
154310 --
154311 
154312 ---------------------------------------
154313 --
154314 -- PRIVATE FUNCTION
154315 --         AcctLineType_288
154316 --
154317 ---------------------------------------
154318 PROCEDURE AcctLineType_288 (
154319   p_application_id        IN NUMBER
154320  ,p_event_id              IN NUMBER
154321  ,p_calculate_acctd_flag  IN VARCHAR2
154322  ,p_calculate_g_l_flag    IN VARCHAR2
154323  ,p_actual_flag           IN OUT VARCHAR2
154324  ,p_balance_type_code     OUT VARCHAR2
154325  ,p_gain_or_loss_ref      OUT VARCHAR2
154326  
154327 --Cost Management Default Account
154328  , p_source_11            IN NUMBER
154329 --Receiving Accounting Line Type
154330  , p_source_78            IN VARCHAR2
154331 --DISTRIBUTION_IDENTIFIER
154332  , p_source_84            IN NUMBER
154333 --Distribution Type
154334  , p_source_85            IN VARCHAR2
154335  , p_source_85_meaning    IN VARCHAR2
154336 --Entered Amount
154337  , p_source_91            IN NUMBER
154338 --Accounted Amount
154339  , p_source_95            IN NUMBER
154340 --Entered Currency Code
154341  , p_source_105            IN VARCHAR2
154342 --Currency Conversion Date
154343  , p_source_106            IN DATE
154344 --Currency Conversion Rate
154345  , p_source_107            IN NUMBER
154346 --Currency Conversion Type
154347  , p_source_109            IN VARCHAR2
154348 )
154349 IS
154350 
154351 l_component_type              VARCHAR2(80);
154352 l_component_code              VARCHAR2(30);
154353 l_component_type_code         VARCHAR2(1);
154354 l_component_appl_id           INTEGER;
154355 l_amb_context_code            VARCHAR2(30);
154356 l_entity_code                 VARCHAR2(30);
154357 l_event_class_code            VARCHAR2(30);
154358 l_ae_header_id                NUMBER;
154359 l_event_type_code             VARCHAR2(30);
154360 l_line_definition_code        VARCHAR2(30);
154361 l_line_definition_owner_code  VARCHAR2(1);
154362 --
154363 -- adr variables
154364 l_segment                     VARCHAR2(30);
154365 l_ccid                        NUMBER;
154366 l_adr_transaction_coa_id      NUMBER;
154367 l_adr_accounting_coa_id       NUMBER;
154368 l_adr_flexfield_segment_code  VARCHAR2(30);
154369 l_adr_flex_value_set_id       NUMBER;
154370 l_adr_value_type_code         VARCHAR2(30);
154371 l_adr_value_combination_id    NUMBER;
154372 l_adr_value_segment_code      VARCHAR2(30);
154373 
154374 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
154375 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
154376 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
154377 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
154378 
154379 -- 4262811 Variables ------------------------------------------------------------------------------------------
154380 l_entered_amt_idx             NUMBER;
154381 l_accted_amt_idx              NUMBER;
154382 l_acc_rev_flag                VARCHAR2(1);
154383 l_accrual_line_num            NUMBER;
154384 l_tmp_amt                     NUMBER;
154385 l_acc_rev_natural_side_code   VARCHAR2(1);
154386 
154387 l_num_entries                 NUMBER;
154388 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
154389 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
154390 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
154391 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
154392 l_recog_line_1                NUMBER;
154393 l_recog_line_2                NUMBER;
154394 
154395 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
154396 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
154397 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
154398 
154399 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
154400 
154401 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
154402 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
154403 
154404 ---------------------------------------------------------------------------------------------------------------
154405 
154406 
154407 --
154408 -- bulk performance
154409 --
154410 l_balance_type_code           VARCHAR2(1);
154411 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
154412 l_log_module                  VARCHAR2(240);
154413 
154414 --
154415 -- Upgrade strategy
154416 --
154417 l_actual_upg_option           VARCHAR2(1);
154418 l_enc_upg_option           VARCHAR2(1);
154419 
154420 --
154421 BEGIN
154422 --
154423 IF g_log_enabled THEN
154424       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_288';
154425 END IF;
154426 --
154427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154428 
154429       trace
154430          (p_msg      => 'BEGIN of AcctLineType_288'
154431          ,p_level    => C_LEVEL_PROCEDURE
154432          ,p_module   => l_log_module);
154433 
154434 END IF;
154435 --
154436 l_component_type             := 'AMB_JLT';
154437 l_component_code             := 'LANDED_COST_ABSORPTION';
154438 l_component_type_code        := 'S';
154439 l_component_appl_id          :=  707;
154440 l_amb_context_code           := 'DEFAULT';
154441 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
154442 l_event_class_code           := 'LDD_COST_ADJ_RCV';
154443 l_event_type_code            := 'LDD_COST_ADJ_RCV_ALL';
154444 l_line_definition_owner_code := 'S';
154445 l_line_definition_code       := 'LDD_COST_ADJ_RCV';
154446 --
154447 l_balance_type_code          := 'A';
154448 l_segment                     := NULL;
154449 l_ccid                        := NULL;
154450 l_adr_transaction_coa_id      := NULL;
154451 l_adr_accounting_coa_id       := NULL;
154452 l_adr_flexfield_segment_code  := NULL;
154453 l_adr_flex_value_set_id       := NULL;
154454 l_adr_value_type_code         := NULL;
154455 l_adr_value_combination_id    := NULL;
154456 l_adr_value_segment_code      := NULL;
154457 
154458 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
154459 l_bflow_class_code           := '';    -- 4219869 Business Flow
154460 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
154461 l_budgetary_control_flag     := 'N';
154462 
154463 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
154464 l_bflow_applied_to_amt       := NULL; -- 5132302
154465 l_entered_amt_idx            := NULL;          -- 4262811
154466 l_accted_amt_idx             := NULL;          -- 4262811
154467 l_acc_rev_flag               := NULL;          -- 4262811
154468 l_accrual_line_num           := NULL;          -- 4262811
154469 l_tmp_amt                    := NULL;          -- 4262811
154470 --
154471  
154472 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
154473     l_balance_type_code <> 'B' THEN
154474 IF NVL(p_source_78,'
154475 ') =  'Landed Cost Absorption'
154476  THEN 
154477 
154478    --
154479    XLA_AE_LINES_PKG.SetNewLine;
154480 
154481    p_balance_type_code          := l_balance_type_code;
154482    -- set the flag so later we will know whether the gain loss line needs to be created
154483    
154484    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
154485      p_actual_flag :='A';
154486    END IF;
154487 
154488    --
154489    -- bulk performance
154490    --
154491    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
154492                                       p_header_num   => 0); -- 4262811
154493    --
154494    -- set accounting line options
154495    --
154496    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
154497            p_natural_side_code          => 'D'
154498          , p_gain_or_loss_flag          => 'N'
154499          , p_gl_transfer_mode_code      => 'S'
154500          , p_acct_entry_type_code       => 'A'
154501          , p_switch_side_flag           => 'Y'
154502          , p_merge_duplicate_code       => 'N'
154503          );
154504    --
154505    l_acc_rev_natural_side_code := 'C';  -- 4262811
154506    -- 
154507    --
154508    -- set accounting line type info
154509    --
154510    xla_ae_lines_pkg.SetAcctLineType
154511       (p_component_type             => l_component_type
154512       ,p_event_type_code            => l_event_type_code
154513       ,p_line_definition_owner_code => l_line_definition_owner_code
154514       ,p_line_definition_code       => l_line_definition_code
154515       ,p_accounting_line_code       => l_component_code
154516       ,p_accounting_line_type_code  => l_component_type_code
154517       ,p_accounting_line_appl_id    => l_component_appl_id
154518       ,p_amb_context_code           => l_amb_context_code
154519       ,p_entity_code                => l_entity_code
154520       ,p_event_class_code           => l_event_class_code);
154521    --
154522    -- set accounting class
154523    --
154524    xla_ae_lines_pkg.SetAcctClass(
154525            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
154526          , p_ae_header_id           => l_ae_header_id
154527          );
154528 
154529    --
154530    -- set rounding class
154531    --
154532    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
154533                       'LANDED_COST_ABSORPTION';
154534 
154535    --
154536    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
154537    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
154538    --
154539    -- bulk performance
154540    --
154541    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
154542 
154543    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
154544       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
154545 
154546    -- 4955764
154547    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
154548       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
154549 
154550    -- 4458381 Public Sector Enh
154551    
154552    --
154553    -- set accounting attributes for the line type
154554    --
154555    l_entered_amt_idx := 3;
154556    l_accted_amt_idx  := 8;
154557    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
154558    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
154559    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
154560    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
154561    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
154562    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
154563    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
154564    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
154565    l_rec_acct_attrs.array_char_value(4)  := p_source_105;
154566    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
154567    l_rec_acct_attrs.array_date_value(5)  := p_source_106;
154568    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
154569    l_rec_acct_attrs.array_num_value(6)  := p_source_107;
154570    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
154571    l_rec_acct_attrs.array_char_value(7)  := p_source_109;
154572    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
154573    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
154574 
154575    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
154576    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
154577 
154578    ---------------------------------------------------------------------------------------------------------------
154579    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
154580    ---------------------------------------------------------------------------------------------------------------
154581    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
154582 
154583    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
154584    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
154585 
154586    IF xla_accounting_cache_pkg.GetValueChar
154587          (p_source_code         => 'LEDGER_CATEGORY_CODE'
154588          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
154589    AND l_bflow_method_code = 'PRIOR_ENTRY'
154590 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
154591    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
154592          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
154593        )
154594    THEN
154595          xla_ae_lines_pkg.BflowUpgEntry
154596            (p_business_method_code    => l_bflow_method_code
154597            ,p_business_class_code     => l_bflow_class_code
154598            ,p_balance_type            => l_balance_type_code);
154599    ELSE
154600       NULL;
154601 -- No business flow processing for business flow method of NONE.
154602    END IF;
154603 
154604    --
154605    -- call analytical criteria
154606    --
154607    
154608    --
154609    -- call description
154610    --
154611    -- No description or it is inherited.
154612    --
154613    -- call ADRs
154614    -- Bug 4922099
154615    --
154616    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
154617         (NVL(l_actual_upg_option, 'N') = 'O') OR
154618         (NVL(l_enc_upg_option, 'N') = 'O')
154619       )
154620    THEN
154621    NULL;
154622    --
154623    --
154624    
154625   l_ccid := AcctDerRule_6(
154626            p_application_id           => p_application_id
154627          , p_ae_header_id             => l_ae_header_id 
154628 , p_source_11 => p_source_11
154629          , x_transaction_coa_id       => l_adr_transaction_coa_id
154630          , x_accounting_coa_id        => l_adr_accounting_coa_id
154631          , x_value_type_code          => l_adr_value_type_code
154632          , p_side                     => 'NA'
154633    );
154634 
154635    xla_ae_lines_pkg.set_ccid(
154636     p_code_combination_id          => l_ccid
154637   , p_value_type_code              => l_adr_value_type_code
154638   , p_transaction_coa_id           => l_adr_transaction_coa_id
154639   , p_accounting_coa_id            => l_adr_accounting_coa_id
154640   , p_adr_code                     => 'CST_DEFAULT'
154641   , p_adr_type_code                => 'S'
154642   , p_component_type               => l_component_type
154643   , p_component_code               => l_component_code
154644   , p_component_type_code          => l_component_type_code
154645   , p_component_appl_id            => l_component_appl_id
154646   , p_amb_context_code             => l_amb_context_code
154647   , p_side                         => 'NA'
154648   );
154649 
154650 
154651    --
154652    --
154653    END IF;
154654    --
154655    -- Bug 4922099
154656    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
154657           (NVL(l_enc_upg_option, 'N') = 'O')
154658         ) AND
154659         (l_bflow_method_code = 'PRIOR_ENTRY')
154660       )
154661    THEN
154662       IF
154663       --
154664       1 = 2
154665       --
154666       THEN
154667       xla_accounting_err_pkg.build_message
154668                                     (p_appli_s_name            => 'XLA'
154669                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
154670                                     ,p_token_1                 => 'LINE_NUMBER'
154671                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
154672                                     ,p_token_2                 => 'LINE_TYPE_NAME'
154673                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
154674                                                                              l_component_type
154675                                                                             ,l_component_code
154676                                                                             ,l_component_type_code
154677                                                                             ,l_component_appl_id
154678                                                                             ,l_amb_context_code
154679                                                                             ,l_entity_code
154680                                                                             ,l_event_class_code
154681                                                                            )
154682                                     ,p_token_3                 => 'OWNER'
154683                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
154684                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
154685                                                                           ,p_lookup_code    => l_component_type_code
154686                                                                          )
154687                                     ,p_token_4                 => 'PRODUCT_NAME'
154688                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
154689                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
154690                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
154691                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
154692                                     ,p_ae_header_id            =>  NULL
154693                                        );
154694 
154695         IF (C_LEVEL_ERROR>= g_log_level) THEN
154696                  trace
154697                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
154698                       ,p_level    => C_LEVEL_ERROR
154699                       ,p_module   => l_log_module);
154700         END IF;
154701       END IF;
154702    END IF;
154703    --
154704    --
154705    ------------------------------------------------------------------------------------------------
154706    -- 4219869 Business Flow
154707    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
154708    -- Prior Entry.  Currently, the following code is always generated.
154709    ------------------------------------------------------------------------------------------------
154710    XLA_AE_LINES_PKG.ValidateCurrentLine;
154711 
154712    ------------------------------------------------------------------------------------
154713    -- 4219869 Business Flow
154714    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
154715    ------------------------------------------------------------------------------------
154716    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
154717 
154718    ----------------------------------------------------------------------------------
154719    -- 4219869 Business Flow
154720    -- Update journal entry status -- Need to generate this within IF <condition>
154721    ----------------------------------------------------------------------------------
154722    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
154723          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
154724          ,p_balance_type_code => l_balance_type_code
154725          );
154726 
154727    -------------------------------------------------------------------------------------------
154728    -- 4262811 - Generate the Accrual Reversal lines
154729    -------------------------------------------------------------------------------------------
154730    BEGIN
154731       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
154732                               (g_array_event(p_event_id).array_value_num('header_index'));
154733       IF l_acc_rev_flag IS NULL THEN
154734          l_acc_rev_flag := 'N';
154735       END IF;
154736    EXCEPTION
154737       WHEN OTHERS THEN
154738          l_acc_rev_flag := 'N';
154739    END;
154740    --
154741    IF (l_acc_rev_flag = 'Y') THEN
154742 
154743        -- 4645092  ------------------------------------------------------------------------------
154744        -- To allow MPA report to determine if it should generate report process
154745        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
154746        ------------------------------------------------------------------------------------------
154747 
154748        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
154749        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
154750    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
154751    -- call ADRs
154752    -- Bug 4922099
154753    --
154754    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
154755         (NVL(l_actual_upg_option, 'N') = 'O') OR
154756         (NVL(l_enc_upg_option, 'N') = 'O')
154757       )
154758    THEN
154759    NULL;
154760    --
154761    --
154762    
154763   l_ccid := AcctDerRule_6(
154764            p_application_id           => p_application_id
154765          , p_ae_header_id             => l_ae_header_id 
154766 , p_source_11 => p_source_11
154767          , x_transaction_coa_id       => l_adr_transaction_coa_id
154768          , x_accounting_coa_id        => l_adr_accounting_coa_id
154769          , x_value_type_code          => l_adr_value_type_code
154770          , p_side                     => 'NA'
154771    );
154772 
154773    xla_ae_lines_pkg.set_ccid(
154774     p_code_combination_id          => l_ccid
154775   , p_value_type_code              => l_adr_value_type_code
154776   , p_transaction_coa_id           => l_adr_transaction_coa_id
154777   , p_accounting_coa_id            => l_adr_accounting_coa_id
154778   , p_adr_code                     => 'CST_DEFAULT'
154779   , p_adr_type_code                => 'S'
154780   , p_component_type               => l_component_type
154781   , p_component_code               => l_component_code
154782   , p_component_type_code          => l_component_type_code
154783   , p_component_appl_id            => l_component_appl_id
154784   , p_amb_context_code             => l_amb_context_code
154785   , p_side                         => 'NA'
154786   );
154787 
154788 
154789    --
154790    --
154791    END IF;
154792 
154793        --
154794        -- Update the line information that should be overwritten
154795        --
154796        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
154797                                          p_header_num   => 1);
154798        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
154799 
154800        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
154801 
154802        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
154803           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
154804        END IF;
154805 
154806       --
154807       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
154808       --
154809       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
154810           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
154811       ELSE
154812           ---------------------------------------------------------------------------------------------------
154813           -- 4262811a Switch Sign
154814           ---------------------------------------------------------------------------------------------------
154815           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
154816           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
154817                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
154818           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
154819                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
154820           -- 5132302
154821           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
154822                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
154823 
154824       END IF;
154825 
154826       -- 4955764
154827       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
154828       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
154829 
154830 
154831       XLA_AE_LINES_PKG.ValidateCurrentLine;
154832       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
154833 
154834       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
154835                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
154836                ,p_balance_type_code => l_balance_type_code);
154837 
154838    END IF;
154839 
154840    -----------------------------------------------------------------------------------------
154841    -- 4262811 Multiperiod Accounting
154842    -----------------------------------------------------------------------------------------
154843      -- No MPA option is assigned.
154844 
154845 
154846 END IF;
154847 END IF;
154848 --
154849 
154850 --
154851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154852    trace
154853       (p_msg      => 'END of AcctLineType_288'
154854       ,p_level    => C_LEVEL_PROCEDURE
154855       ,p_module   => l_log_module);
154856 END IF;
154857 --
154858 EXCEPTION
154859   WHEN xla_exceptions_pkg.application_exception THEN
154860       RAISE;
154861   WHEN OTHERS THEN
154862        xla_exceptions_pkg.raise_message
154863            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_288');
154864 END AcctLineType_288;
154865 --
154866 
154867 ---------------------------------------
154868 --
154869 -- PRIVATE FUNCTION
154870 --         AcctLineType_289
154871 --
154872 ---------------------------------------
154873 PROCEDURE AcctLineType_289 (
154874   p_application_id        IN NUMBER
154875  ,p_event_id              IN NUMBER
154876  ,p_calculate_acctd_flag  IN VARCHAR2
154877  ,p_calculate_g_l_flag    IN VARCHAR2
154878  ,p_actual_flag           IN OUT VARCHAR2
154879  ,p_balance_type_code     OUT VARCHAR2
154880  ,p_gain_or_loss_ref      OUT VARCHAR2
154881  
154882 --Cost Management Default Account
154883  , p_source_11            IN NUMBER
154884 --Receiving Accounting Line Type
154885  , p_source_78            IN VARCHAR2
154886 --DISTRIBUTION_IDENTIFIER
154887  , p_source_84            IN NUMBER
154888 --Distribution Type
154889  , p_source_85            IN VARCHAR2
154890  , p_source_85_meaning    IN VARCHAR2
154891 --Entered Currency Code
154892  , p_source_88            IN VARCHAR2
154893 --Entered Amount
154894  , p_source_91            IN NUMBER
154895 --Currency Conversion Date
154896  , p_source_92            IN DATE
154897 --Currency Conversion Rate
154898  , p_source_93            IN NUMBER
154899 --Currency Conversion Type
154900  , p_source_94            IN VARCHAR2
154901 --Accounted Amount
154902  , p_source_95            IN NUMBER
154903 )
154904 IS
154905 
154906 l_component_type              VARCHAR2(80);
154907 l_component_code              VARCHAR2(30);
154908 l_component_type_code         VARCHAR2(1);
154909 l_component_appl_id           INTEGER;
154910 l_amb_context_code            VARCHAR2(30);
154911 l_entity_code                 VARCHAR2(30);
154912 l_event_class_code            VARCHAR2(30);
154913 l_ae_header_id                NUMBER;
154914 l_event_type_code             VARCHAR2(30);
154915 l_line_definition_code        VARCHAR2(30);
154916 l_line_definition_owner_code  VARCHAR2(1);
154917 --
154918 -- adr variables
154919 l_segment                     VARCHAR2(30);
154920 l_ccid                        NUMBER;
154921 l_adr_transaction_coa_id      NUMBER;
154922 l_adr_accounting_coa_id       NUMBER;
154923 l_adr_flexfield_segment_code  VARCHAR2(30);
154924 l_adr_flex_value_set_id       NUMBER;
154925 l_adr_value_type_code         VARCHAR2(30);
154926 l_adr_value_combination_id    NUMBER;
154927 l_adr_value_segment_code      VARCHAR2(30);
154928 
154929 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
154930 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
154931 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
154932 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
154933 
154934 -- 4262811 Variables ------------------------------------------------------------------------------------------
154935 l_entered_amt_idx             NUMBER;
154936 l_accted_amt_idx              NUMBER;
154937 l_acc_rev_flag                VARCHAR2(1);
154938 l_accrual_line_num            NUMBER;
154939 l_tmp_amt                     NUMBER;
154940 l_acc_rev_natural_side_code   VARCHAR2(1);
154941 
154942 l_num_entries                 NUMBER;
154943 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
154944 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
154945 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
154946 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
154947 l_recog_line_1                NUMBER;
154948 l_recog_line_2                NUMBER;
154949 
154950 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
154951 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
154952 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
154953 
154954 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
154955 
154956 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
154957 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
154958 
154959 ---------------------------------------------------------------------------------------------------------------
154960 
154961 
154962 --
154963 -- bulk performance
154964 --
154965 l_balance_type_code           VARCHAR2(1);
154966 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
154967 l_log_module                  VARCHAR2(240);
154968 
154969 --
154970 -- Upgrade strategy
154971 --
154972 l_actual_upg_option           VARCHAR2(1);
154973 l_enc_upg_option           VARCHAR2(1);
154974 
154975 --
154976 BEGIN
154977 --
154978 IF g_log_enabled THEN
154979       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_289';
154980 END IF;
154981 --
154982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154983 
154984       trace
154985          (p_msg      => 'BEGIN of AcctLineType_289'
154986          ,p_level    => C_LEVEL_PROCEDURE
154987          ,p_module   => l_log_module);
154988 
154989 END IF;
154990 --
154991 l_component_type             := 'AMB_JLT';
154992 l_component_code             := 'LANDED_COST_ABSORPTION';
154993 l_component_type_code        := 'S';
154994 l_component_appl_id          :=  707;
154995 l_amb_context_code           := 'DEFAULT';
154996 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
154997 l_event_class_code           := 'RCPT_REC_INSP';
154998 l_event_type_code            := 'RCPT_REC_INSP_ALL';
154999 l_line_definition_owner_code := 'S';
155000 l_line_definition_code       := 'RCPT_REC_INSP';
155001 --
155002 l_balance_type_code          := 'A';
155003 l_segment                     := NULL;
155004 l_ccid                        := NULL;
155005 l_adr_transaction_coa_id      := NULL;
155006 l_adr_accounting_coa_id       := NULL;
155007 l_adr_flexfield_segment_code  := NULL;
155008 l_adr_flex_value_set_id       := NULL;
155009 l_adr_value_type_code         := NULL;
155010 l_adr_value_combination_id    := NULL;
155011 l_adr_value_segment_code      := NULL;
155012 
155013 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
155014 l_bflow_class_code           := '';    -- 4219869 Business Flow
155015 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
155016 l_budgetary_control_flag     := 'N';
155017 
155018 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
155019 l_bflow_applied_to_amt       := NULL; -- 5132302
155020 l_entered_amt_idx            := NULL;          -- 4262811
155021 l_accted_amt_idx             := NULL;          -- 4262811
155022 l_acc_rev_flag               := NULL;          -- 4262811
155023 l_accrual_line_num           := NULL;          -- 4262811
155024 l_tmp_amt                    := NULL;          -- 4262811
155025 --
155026  
155027 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
155028     l_balance_type_code <> 'B' THEN
155029 IF NVL(p_source_78,'
155030 ') =  'Landed Cost Absorption'
155031  THEN 
155032 
155033    --
155034    XLA_AE_LINES_PKG.SetNewLine;
155035 
155036    p_balance_type_code          := l_balance_type_code;
155037    -- set the flag so later we will know whether the gain loss line needs to be created
155038    
155039    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
155040      p_actual_flag :='A';
155041    END IF;
155042 
155043    --
155044    -- bulk performance
155045    --
155046    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
155047                                       p_header_num   => 0); -- 4262811
155048    --
155049    -- set accounting line options
155050    --
155051    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
155052            p_natural_side_code          => 'D'
155053          , p_gain_or_loss_flag          => 'N'
155054          , p_gl_transfer_mode_code      => 'S'
155055          , p_acct_entry_type_code       => 'A'
155056          , p_switch_side_flag           => 'Y'
155057          , p_merge_duplicate_code       => 'N'
155058          );
155059    --
155060    l_acc_rev_natural_side_code := 'C';  -- 4262811
155061    -- 
155062    --
155063    -- set accounting line type info
155064    --
155065    xla_ae_lines_pkg.SetAcctLineType
155066       (p_component_type             => l_component_type
155067       ,p_event_type_code            => l_event_type_code
155068       ,p_line_definition_owner_code => l_line_definition_owner_code
155069       ,p_line_definition_code       => l_line_definition_code
155070       ,p_accounting_line_code       => l_component_code
155071       ,p_accounting_line_type_code  => l_component_type_code
155072       ,p_accounting_line_appl_id    => l_component_appl_id
155073       ,p_amb_context_code           => l_amb_context_code
155074       ,p_entity_code                => l_entity_code
155075       ,p_event_class_code           => l_event_class_code);
155076    --
155077    -- set accounting class
155078    --
155079    xla_ae_lines_pkg.SetAcctClass(
155080            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
155081          , p_ae_header_id           => l_ae_header_id
155082          );
155083 
155084    --
155085    -- set rounding class
155086    --
155087    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
155088                       'LANDED_COST_ABSORPTION';
155089 
155090    --
155091    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
155092    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
155093    --
155094    -- bulk performance
155095    --
155096    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
155097 
155098    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
155099       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
155100 
155101    -- 4955764
155102    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
155103       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
155104 
155105    -- 4458381 Public Sector Enh
155106    
155107    --
155108    -- set accounting attributes for the line type
155109    --
155110    l_entered_amt_idx := 3;
155111    l_accted_amt_idx  := 8;
155112    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
155113    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
155114    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
155115    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
155116    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
155117    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
155118    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
155119    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
155120    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
155121    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
155122    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
155123    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
155124    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
155125    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
155126    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
155127    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
155128    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
155129 
155130    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
155131    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
155132 
155133    ---------------------------------------------------------------------------------------------------------------
155134    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
155135    ---------------------------------------------------------------------------------------------------------------
155136    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
155137 
155138    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
155139    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
155140 
155141    IF xla_accounting_cache_pkg.GetValueChar
155142          (p_source_code         => 'LEDGER_CATEGORY_CODE'
155143          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
155144    AND l_bflow_method_code = 'PRIOR_ENTRY'
155145 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
155146    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
155147          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
155148        )
155149    THEN
155150          xla_ae_lines_pkg.BflowUpgEntry
155151            (p_business_method_code    => l_bflow_method_code
155152            ,p_business_class_code     => l_bflow_class_code
155153            ,p_balance_type            => l_balance_type_code);
155154    ELSE
155155       NULL;
155156 -- No business flow processing for business flow method of NONE.
155157    END IF;
155158 
155159    --
155160    -- call analytical criteria
155161    --
155162    
155163    --
155164    -- call description
155165    --
155166    -- No description or it is inherited.
155167    --
155168    -- call ADRs
155169    -- Bug 4922099
155170    --
155171    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
155172         (NVL(l_actual_upg_option, 'N') = 'O') OR
155173         (NVL(l_enc_upg_option, 'N') = 'O')
155174       )
155175    THEN
155176    NULL;
155177    --
155178    --
155179    
155180   l_ccid := AcctDerRule_6(
155181            p_application_id           => p_application_id
155182          , p_ae_header_id             => l_ae_header_id 
155183 , p_source_11 => p_source_11
155184          , x_transaction_coa_id       => l_adr_transaction_coa_id
155185          , x_accounting_coa_id        => l_adr_accounting_coa_id
155186          , x_value_type_code          => l_adr_value_type_code
155187          , p_side                     => 'NA'
155188    );
155189 
155190    xla_ae_lines_pkg.set_ccid(
155191     p_code_combination_id          => l_ccid
155192   , p_value_type_code              => l_adr_value_type_code
155193   , p_transaction_coa_id           => l_adr_transaction_coa_id
155194   , p_accounting_coa_id            => l_adr_accounting_coa_id
155195   , p_adr_code                     => 'CST_DEFAULT'
155196   , p_adr_type_code                => 'S'
155197   , p_component_type               => l_component_type
155198   , p_component_code               => l_component_code
155199   , p_component_type_code          => l_component_type_code
155200   , p_component_appl_id            => l_component_appl_id
155201   , p_amb_context_code             => l_amb_context_code
155202   , p_side                         => 'NA'
155203   );
155204 
155205 
155206    --
155207    --
155208    END IF;
155209    --
155210    -- Bug 4922099
155211    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
155212           (NVL(l_enc_upg_option, 'N') = 'O')
155213         ) AND
155214         (l_bflow_method_code = 'PRIOR_ENTRY')
155215       )
155216    THEN
155217       IF
155218       --
155219       1 = 2
155220       --
155221       THEN
155222       xla_accounting_err_pkg.build_message
155223                                     (p_appli_s_name            => 'XLA'
155224                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
155225                                     ,p_token_1                 => 'LINE_NUMBER'
155226                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
155227                                     ,p_token_2                 => 'LINE_TYPE_NAME'
155228                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
155229                                                                              l_component_type
155230                                                                             ,l_component_code
155231                                                                             ,l_component_type_code
155232                                                                             ,l_component_appl_id
155233                                                                             ,l_amb_context_code
155234                                                                             ,l_entity_code
155235                                                                             ,l_event_class_code
155236                                                                            )
155237                                     ,p_token_3                 => 'OWNER'
155238                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
155239                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
155240                                                                           ,p_lookup_code    => l_component_type_code
155241                                                                          )
155242                                     ,p_token_4                 => 'PRODUCT_NAME'
155243                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
155244                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
155245                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
155246                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
155247                                     ,p_ae_header_id            =>  NULL
155248                                        );
155249 
155250         IF (C_LEVEL_ERROR>= g_log_level) THEN
155251                  trace
155252                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
155253                       ,p_level    => C_LEVEL_ERROR
155254                       ,p_module   => l_log_module);
155255         END IF;
155256       END IF;
155257    END IF;
155258    --
155259    --
155260    ------------------------------------------------------------------------------------------------
155261    -- 4219869 Business Flow
155262    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
155263    -- Prior Entry.  Currently, the following code is always generated.
155264    ------------------------------------------------------------------------------------------------
155265    XLA_AE_LINES_PKG.ValidateCurrentLine;
155266 
155267    ------------------------------------------------------------------------------------
155268    -- 4219869 Business Flow
155269    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
155270    ------------------------------------------------------------------------------------
155271    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
155272 
155273    ----------------------------------------------------------------------------------
155274    -- 4219869 Business Flow
155275    -- Update journal entry status -- Need to generate this within IF <condition>
155276    ----------------------------------------------------------------------------------
155277    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
155278          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
155279          ,p_balance_type_code => l_balance_type_code
155280          );
155281 
155282    -------------------------------------------------------------------------------------------
155283    -- 4262811 - Generate the Accrual Reversal lines
155284    -------------------------------------------------------------------------------------------
155285    BEGIN
155286       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
155287                               (g_array_event(p_event_id).array_value_num('header_index'));
155288       IF l_acc_rev_flag IS NULL THEN
155289          l_acc_rev_flag := 'N';
155290       END IF;
155291    EXCEPTION
155292       WHEN OTHERS THEN
155293          l_acc_rev_flag := 'N';
155294    END;
155295    --
155296    IF (l_acc_rev_flag = 'Y') THEN
155297 
155298        -- 4645092  ------------------------------------------------------------------------------
155299        -- To allow MPA report to determine if it should generate report process
155300        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
155301        ------------------------------------------------------------------------------------------
155302 
155303        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
155304        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
155305    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
155306    -- call ADRs
155307    -- Bug 4922099
155308    --
155309    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
155310         (NVL(l_actual_upg_option, 'N') = 'O') OR
155311         (NVL(l_enc_upg_option, 'N') = 'O')
155312       )
155313    THEN
155314    NULL;
155315    --
155316    --
155317    
155318   l_ccid := AcctDerRule_6(
155319            p_application_id           => p_application_id
155320          , p_ae_header_id             => l_ae_header_id 
155321 , p_source_11 => p_source_11
155322          , x_transaction_coa_id       => l_adr_transaction_coa_id
155323          , x_accounting_coa_id        => l_adr_accounting_coa_id
155324          , x_value_type_code          => l_adr_value_type_code
155325          , p_side                     => 'NA'
155326    );
155327 
155328    xla_ae_lines_pkg.set_ccid(
155329     p_code_combination_id          => l_ccid
155330   , p_value_type_code              => l_adr_value_type_code
155331   , p_transaction_coa_id           => l_adr_transaction_coa_id
155332   , p_accounting_coa_id            => l_adr_accounting_coa_id
155333   , p_adr_code                     => 'CST_DEFAULT'
155334   , p_adr_type_code                => 'S'
155335   , p_component_type               => l_component_type
155336   , p_component_code               => l_component_code
155337   , p_component_type_code          => l_component_type_code
155338   , p_component_appl_id            => l_component_appl_id
155339   , p_amb_context_code             => l_amb_context_code
155340   , p_side                         => 'NA'
155341   );
155342 
155343 
155344    --
155345    --
155346    END IF;
155347 
155348        --
155349        -- Update the line information that should be overwritten
155350        --
155351        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
155352                                          p_header_num   => 1);
155353        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
155354 
155355        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
155356 
155357        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
155358           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
155359        END IF;
155360 
155361       --
155362       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
155363       --
155364       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
155365           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
155366       ELSE
155367           ---------------------------------------------------------------------------------------------------
155368           -- 4262811a Switch Sign
155369           ---------------------------------------------------------------------------------------------------
155370           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
155371           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
155372                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
155373           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
155374                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
155375           -- 5132302
155376           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
155377                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
155378 
155379       END IF;
155380 
155381       -- 4955764
155382       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
155383       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
155384 
155385 
155386       XLA_AE_LINES_PKG.ValidateCurrentLine;
155387       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
155388 
155389       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
155390                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
155391                ,p_balance_type_code => l_balance_type_code);
155392 
155393    END IF;
155394 
155395    -----------------------------------------------------------------------------------------
155396    -- 4262811 Multiperiod Accounting
155397    -----------------------------------------------------------------------------------------
155398      -- No MPA option is assigned.
155399 
155400 
155401 END IF;
155402 END IF;
155403 --
155404 
155405 --
155406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155407    trace
155408       (p_msg      => 'END of AcctLineType_289'
155409       ,p_level    => C_LEVEL_PROCEDURE
155410       ,p_module   => l_log_module);
155411 END IF;
155412 --
155413 EXCEPTION
155414   WHEN xla_exceptions_pkg.application_exception THEN
155415       RAISE;
155416   WHEN OTHERS THEN
155417        xla_exceptions_pkg.raise_message
155418            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_289');
155419 END AcctLineType_289;
155420 --
155421 
155422 ---------------------------------------
155423 --
155424 -- PRIVATE FUNCTION
155425 --         AcctLineType_290
155426 --
155427 ---------------------------------------
155428 PROCEDURE AcctLineType_290 (
155429   p_application_id        IN NUMBER
155430  ,p_event_id              IN NUMBER
155431  ,p_calculate_acctd_flag  IN VARCHAR2
155432  ,p_calculate_g_l_flag    IN VARCHAR2
155433  ,p_actual_flag           IN OUT VARCHAR2
155434  ,p_balance_type_code     OUT VARCHAR2
155435  ,p_gain_or_loss_ref      OUT VARCHAR2
155436  
155437 --Cost Management Default Account
155438  , p_source_11            IN NUMBER
155439 --Receiving Accounting Line Type
155440  , p_source_78            IN VARCHAR2
155441 --DISTRIBUTION_IDENTIFIER
155442  , p_source_84            IN NUMBER
155443 --Distribution Type
155444  , p_source_85            IN VARCHAR2
155445  , p_source_85_meaning    IN VARCHAR2
155446 --Entered Amount
155447  , p_source_91            IN NUMBER
155448 --Accounted Amount
155449  , p_source_95            IN NUMBER
155450 --Entered Currency Code
155451  , p_source_105            IN VARCHAR2
155452 --Currency Conversion Date
155453  , p_source_106            IN DATE
155454 --Currency Conversion Rate
155455  , p_source_107            IN NUMBER
155456 )
155457 IS
155458 
155459 l_component_type              VARCHAR2(80);
155460 l_component_code              VARCHAR2(30);
155461 l_component_type_code         VARCHAR2(1);
155462 l_component_appl_id           INTEGER;
155463 l_amb_context_code            VARCHAR2(30);
155464 l_entity_code                 VARCHAR2(30);
155465 l_event_class_code            VARCHAR2(30);
155466 l_ae_header_id                NUMBER;
155467 l_event_type_code             VARCHAR2(30);
155468 l_line_definition_code        VARCHAR2(30);
155469 l_line_definition_owner_code  VARCHAR2(1);
155470 --
155471 -- adr variables
155472 l_segment                     VARCHAR2(30);
155473 l_ccid                        NUMBER;
155474 l_adr_transaction_coa_id      NUMBER;
155475 l_adr_accounting_coa_id       NUMBER;
155476 l_adr_flexfield_segment_code  VARCHAR2(30);
155477 l_adr_flex_value_set_id       NUMBER;
155478 l_adr_value_type_code         VARCHAR2(30);
155479 l_adr_value_combination_id    NUMBER;
155480 l_adr_value_segment_code      VARCHAR2(30);
155481 
155482 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
155483 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
155484 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
155485 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
155486 
155487 -- 4262811 Variables ------------------------------------------------------------------------------------------
155488 l_entered_amt_idx             NUMBER;
155489 l_accted_amt_idx              NUMBER;
155490 l_acc_rev_flag                VARCHAR2(1);
155491 l_accrual_line_num            NUMBER;
155492 l_tmp_amt                     NUMBER;
155493 l_acc_rev_natural_side_code   VARCHAR2(1);
155494 
155495 l_num_entries                 NUMBER;
155496 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
155497 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
155498 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
155499 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
155500 l_recog_line_1                NUMBER;
155501 l_recog_line_2                NUMBER;
155502 
155503 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
155504 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
155505 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
155506 
155507 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
155508 
155509 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
155510 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
155511 
155512 ---------------------------------------------------------------------------------------------------------------
155513 
155514 
155515 --
155516 -- bulk performance
155517 --
155518 l_balance_type_code           VARCHAR2(1);
155519 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
155520 l_log_module                  VARCHAR2(240);
155521 
155522 --
155523 -- Upgrade strategy
155524 --
155525 l_actual_upg_option           VARCHAR2(1);
155526 l_enc_upg_option           VARCHAR2(1);
155527 
155528 --
155529 BEGIN
155530 --
155531 IF g_log_enabled THEN
155532       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_290';
155533 END IF;
155534 --
155535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155536 
155537       trace
155538          (p_msg      => 'BEGIN of AcctLineType_290'
155539          ,p_level    => C_LEVEL_PROCEDURE
155540          ,p_module   => l_log_module);
155541 
155542 END IF;
155543 --
155544 l_component_type             := 'AMB_JLT';
155545 l_component_code             := 'LANDED_COST_ABSORPTION';
155546 l_component_type_code        := 'S';
155547 l_component_appl_id          :=  707;
155548 l_amb_context_code           := 'DEFAULT';
155549 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
155550 l_event_class_code           := 'LDD_COST_ADJ_DEL';
155551 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
155552 l_line_definition_owner_code := 'S';
155553 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
155554 --
155555 l_balance_type_code          := 'A';
155556 l_segment                     := NULL;
155557 l_ccid                        := NULL;
155558 l_adr_transaction_coa_id      := NULL;
155559 l_adr_accounting_coa_id       := NULL;
155560 l_adr_flexfield_segment_code  := NULL;
155561 l_adr_flex_value_set_id       := NULL;
155562 l_adr_value_type_code         := NULL;
155563 l_adr_value_combination_id    := NULL;
155564 l_adr_value_segment_code      := NULL;
155565 
155566 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
155567 l_bflow_class_code           := '';    -- 4219869 Business Flow
155568 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
155569 l_budgetary_control_flag     := 'N';
155570 
155571 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
155572 l_bflow_applied_to_amt       := NULL; -- 5132302
155573 l_entered_amt_idx            := NULL;          -- 4262811
155574 l_accted_amt_idx             := NULL;          -- 4262811
155575 l_acc_rev_flag               := NULL;          -- 4262811
155576 l_accrual_line_num           := NULL;          -- 4262811
155577 l_tmp_amt                    := NULL;          -- 4262811
155578 --
155579  
155580 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
155581     l_balance_type_code <> 'B' THEN
155582 IF NVL(p_source_78,'
155583 ') =  'Landed Cost Absorption'
155584  THEN 
155585 
155586    --
155587    XLA_AE_LINES_PKG.SetNewLine;
155588 
155589    p_balance_type_code          := l_balance_type_code;
155590    -- set the flag so later we will know whether the gain loss line needs to be created
155591    
155592    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
155593      p_actual_flag :='A';
155594    END IF;
155595 
155596    --
155597    -- bulk performance
155598    --
155599    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
155600                                       p_header_num   => 0); -- 4262811
155601    --
155602    -- set accounting line options
155603    --
155604    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
155605            p_natural_side_code          => 'D'
155606          , p_gain_or_loss_flag          => 'N'
155607          , p_gl_transfer_mode_code      => 'S'
155608          , p_acct_entry_type_code       => 'A'
155609          , p_switch_side_flag           => 'Y'
155610          , p_merge_duplicate_code       => 'N'
155611          );
155612    --
155613    l_acc_rev_natural_side_code := 'C';  -- 4262811
155614    -- 
155615    --
155616    -- set accounting line type info
155617    --
155618    xla_ae_lines_pkg.SetAcctLineType
155619       (p_component_type             => l_component_type
155620       ,p_event_type_code            => l_event_type_code
155621       ,p_line_definition_owner_code => l_line_definition_owner_code
155622       ,p_line_definition_code       => l_line_definition_code
155623       ,p_accounting_line_code       => l_component_code
155624       ,p_accounting_line_type_code  => l_component_type_code
155625       ,p_accounting_line_appl_id    => l_component_appl_id
155626       ,p_amb_context_code           => l_amb_context_code
155627       ,p_entity_code                => l_entity_code
155628       ,p_event_class_code           => l_event_class_code);
155629    --
155630    -- set accounting class
155631    --
155632    xla_ae_lines_pkg.SetAcctClass(
155633            p_accounting_class_code  => 'LANDED_COST_ABSORPTION'
155634          , p_ae_header_id           => l_ae_header_id
155635          );
155636 
155637    --
155638    -- set rounding class
155639    --
155640    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
155641                       'LANDED_COST_ABSORPTION';
155642 
155643    --
155644    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
155645    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
155646    --
155647    -- bulk performance
155648    --
155649    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
155650 
155651    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
155652       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
155653 
155654    -- 4955764
155655    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
155656       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
155657 
155658    -- 4458381 Public Sector Enh
155659    
155660    --
155661    -- set accounting attributes for the line type
155662    --
155663    l_entered_amt_idx := 3;
155664    l_accted_amt_idx  := 7;
155665    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
155666    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
155667    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
155668    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
155669    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
155670    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
155671    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
155672    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
155673    l_rec_acct_attrs.array_char_value(4)  := p_source_105;
155674    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
155675    l_rec_acct_attrs.array_date_value(5)  := p_source_106;
155676    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
155677    l_rec_acct_attrs.array_num_value(6)  := p_source_107;
155678    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
155679    l_rec_acct_attrs.array_num_value(7)  := p_source_95;
155680 
155681    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
155682    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
155683 
155684    ---------------------------------------------------------------------------------------------------------------
155685    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
155686    ---------------------------------------------------------------------------------------------------------------
155687    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
155688 
155689    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
155690    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
155691 
155692    IF xla_accounting_cache_pkg.GetValueChar
155693          (p_source_code         => 'LEDGER_CATEGORY_CODE'
155694          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
155695    AND l_bflow_method_code = 'PRIOR_ENTRY'
155696 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
155697    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
155698          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
155699        )
155700    THEN
155701          xla_ae_lines_pkg.BflowUpgEntry
155702            (p_business_method_code    => l_bflow_method_code
155703            ,p_business_class_code     => l_bflow_class_code
155704            ,p_balance_type            => l_balance_type_code);
155705    ELSE
155706       NULL;
155707 -- No business flow processing for business flow method of NONE.
155708    END IF;
155709 
155710    --
155711    -- call analytical criteria
155712    --
155713    
155714    --
155715    -- call description
155716    --
155717    -- No description or it is inherited.
155718    --
155719    -- call ADRs
155720    -- Bug 4922099
155721    --
155722    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
155723         (NVL(l_actual_upg_option, 'N') = 'O') OR
155724         (NVL(l_enc_upg_option, 'N') = 'O')
155725       )
155726    THEN
155727    NULL;
155728    --
155729    --
155730    
155731   l_ccid := AcctDerRule_6(
155732            p_application_id           => p_application_id
155733          , p_ae_header_id             => l_ae_header_id 
155734 , p_source_11 => p_source_11
155735          , x_transaction_coa_id       => l_adr_transaction_coa_id
155736          , x_accounting_coa_id        => l_adr_accounting_coa_id
155737          , x_value_type_code          => l_adr_value_type_code
155738          , p_side                     => 'NA'
155739    );
155740 
155741    xla_ae_lines_pkg.set_ccid(
155742     p_code_combination_id          => l_ccid
155743   , p_value_type_code              => l_adr_value_type_code
155744   , p_transaction_coa_id           => l_adr_transaction_coa_id
155745   , p_accounting_coa_id            => l_adr_accounting_coa_id
155746   , p_adr_code                     => 'CST_DEFAULT'
155747   , p_adr_type_code                => 'S'
155748   , p_component_type               => l_component_type
155749   , p_component_code               => l_component_code
155750   , p_component_type_code          => l_component_type_code
155751   , p_component_appl_id            => l_component_appl_id
155752   , p_amb_context_code             => l_amb_context_code
155753   , p_side                         => 'NA'
155754   );
155755 
155756 
155757    --
155758    --
155759    END IF;
155760    --
155761    -- Bug 4922099
155762    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
155763           (NVL(l_enc_upg_option, 'N') = 'O')
155764         ) AND
155765         (l_bflow_method_code = 'PRIOR_ENTRY')
155766       )
155767    THEN
155768       IF
155769       --
155770       1 = 2
155771       --
155772       THEN
155773       xla_accounting_err_pkg.build_message
155774                                     (p_appli_s_name            => 'XLA'
155775                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
155776                                     ,p_token_1                 => 'LINE_NUMBER'
155777                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
155778                                     ,p_token_2                 => 'LINE_TYPE_NAME'
155779                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
155780                                                                              l_component_type
155781                                                                             ,l_component_code
155782                                                                             ,l_component_type_code
155783                                                                             ,l_component_appl_id
155784                                                                             ,l_amb_context_code
155785                                                                             ,l_entity_code
155786                                                                             ,l_event_class_code
155787                                                                            )
155788                                     ,p_token_3                 => 'OWNER'
155789                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
155790                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
155791                                                                           ,p_lookup_code    => l_component_type_code
155792                                                                          )
155793                                     ,p_token_4                 => 'PRODUCT_NAME'
155794                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
155795                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
155796                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
155797                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
155798                                     ,p_ae_header_id            =>  NULL
155799                                        );
155800 
155801         IF (C_LEVEL_ERROR>= g_log_level) THEN
155802                  trace
155803                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
155804                       ,p_level    => C_LEVEL_ERROR
155805                       ,p_module   => l_log_module);
155806         END IF;
155807       END IF;
155808    END IF;
155809    --
155810    --
155811    ------------------------------------------------------------------------------------------------
155812    -- 4219869 Business Flow
155813    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
155814    -- Prior Entry.  Currently, the following code is always generated.
155815    ------------------------------------------------------------------------------------------------
155816    XLA_AE_LINES_PKG.ValidateCurrentLine;
155817 
155818    ------------------------------------------------------------------------------------
155819    -- 4219869 Business Flow
155820    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
155821    ------------------------------------------------------------------------------------
155822    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
155823 
155824    ----------------------------------------------------------------------------------
155825    -- 4219869 Business Flow
155826    -- Update journal entry status -- Need to generate this within IF <condition>
155827    ----------------------------------------------------------------------------------
155828    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
155829          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
155830          ,p_balance_type_code => l_balance_type_code
155831          );
155832 
155833    -------------------------------------------------------------------------------------------
155834    -- 4262811 - Generate the Accrual Reversal lines
155835    -------------------------------------------------------------------------------------------
155836    BEGIN
155837       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
155838                               (g_array_event(p_event_id).array_value_num('header_index'));
155839       IF l_acc_rev_flag IS NULL THEN
155840          l_acc_rev_flag := 'N';
155841       END IF;
155842    EXCEPTION
155843       WHEN OTHERS THEN
155844          l_acc_rev_flag := 'N';
155845    END;
155846    --
155847    IF (l_acc_rev_flag = 'Y') THEN
155848 
155849        -- 4645092  ------------------------------------------------------------------------------
155850        -- To allow MPA report to determine if it should generate report process
155851        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
155852        ------------------------------------------------------------------------------------------
155853 
155854        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
155855        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
155856    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
155857    -- call ADRs
155858    -- Bug 4922099
155859    --
155860    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
155861         (NVL(l_actual_upg_option, 'N') = 'O') OR
155862         (NVL(l_enc_upg_option, 'N') = 'O')
155863       )
155864    THEN
155865    NULL;
155866    --
155867    --
155868    
155869   l_ccid := AcctDerRule_6(
155870            p_application_id           => p_application_id
155871          , p_ae_header_id             => l_ae_header_id 
155872 , p_source_11 => p_source_11
155873          , x_transaction_coa_id       => l_adr_transaction_coa_id
155874          , x_accounting_coa_id        => l_adr_accounting_coa_id
155875          , x_value_type_code          => l_adr_value_type_code
155876          , p_side                     => 'NA'
155877    );
155878 
155879    xla_ae_lines_pkg.set_ccid(
155880     p_code_combination_id          => l_ccid
155881   , p_value_type_code              => l_adr_value_type_code
155882   , p_transaction_coa_id           => l_adr_transaction_coa_id
155883   , p_accounting_coa_id            => l_adr_accounting_coa_id
155884   , p_adr_code                     => 'CST_DEFAULT'
155885   , p_adr_type_code                => 'S'
155886   , p_component_type               => l_component_type
155887   , p_component_code               => l_component_code
155888   , p_component_type_code          => l_component_type_code
155889   , p_component_appl_id            => l_component_appl_id
155890   , p_amb_context_code             => l_amb_context_code
155891   , p_side                         => 'NA'
155892   );
155893 
155894 
155895    --
155896    --
155897    END IF;
155898 
155899        --
155900        -- Update the line information that should be overwritten
155901        --
155902        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
155903                                          p_header_num   => 1);
155904        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
155905 
155906        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
155907 
155908        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
155909           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
155910        END IF;
155911 
155912       --
155913       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
155914       --
155915       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
155916           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
155917       ELSE
155918           ---------------------------------------------------------------------------------------------------
155919           -- 4262811a Switch Sign
155920           ---------------------------------------------------------------------------------------------------
155921           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
155922           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
155923                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
155924           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
155925                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
155926           -- 5132302
155927           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
155928                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
155929 
155930       END IF;
155931 
155932       -- 4955764
155933       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
155934       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
155935 
155936 
155937       XLA_AE_LINES_PKG.ValidateCurrentLine;
155938       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
155939 
155940       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
155941                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
155942                ,p_balance_type_code => l_balance_type_code);
155943 
155944    END IF;
155945 
155946    -----------------------------------------------------------------------------------------
155947    -- 4262811 Multiperiod Accounting
155948    -----------------------------------------------------------------------------------------
155949      -- No MPA option is assigned.
155950 
155951 
155952 END IF;
155953 END IF;
155954 --
155955 
155956 --
155957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155958    trace
155959       (p_msg      => 'END of AcctLineType_290'
155960       ,p_level    => C_LEVEL_PROCEDURE
155961       ,p_module   => l_log_module);
155962 END IF;
155963 --
155964 EXCEPTION
155965   WHEN xla_exceptions_pkg.application_exception THEN
155966       RAISE;
155967   WHEN OTHERS THEN
155968        xla_exceptions_pkg.raise_message
155969            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_290');
155970 END AcctLineType_290;
155971 --
155972 
155973 ---------------------------------------
155974 --
155975 -- PRIVATE FUNCTION
155976 --         AcctLineType_291
155977 --
155978 ---------------------------------------
155979 PROCEDURE AcctLineType_291 (
155980   p_application_id        IN NUMBER
155981  ,p_event_id              IN NUMBER
155982  ,p_calculate_acctd_flag  IN VARCHAR2
155983  ,p_calculate_g_l_flag    IN VARCHAR2
155984  ,p_actual_flag           IN OUT VARCHAR2
155985  ,p_balance_type_code     OUT VARCHAR2
155986  ,p_gain_or_loss_ref      OUT VARCHAR2
155987  
155988 --TRANSACTION_ID
155989  , p_source_1            IN NUMBER
155990 --Item Concatenated Segments
155991  , p_source_2            IN VARCHAR2
155992 --Transaction Quantity
155993  , p_source_3            IN NUMBER
155994 --Transaction Unit of Measure Code
155995  , p_source_4            IN VARCHAR2
155996 --Inventory Transaction Type Description
155997  , p_source_5            IN VARCHAR2
155998 --Cost Management Default Account
155999  , p_source_11            IN NUMBER
156000 --Applied to Application ID
156001  , p_source_79            IN NUMBER
156002 --Applied to Distribution Link Type
156003  , p_source_80            IN VARCHAR2
156004 --Applied to Entity Code
156005  , p_source_81            IN VARCHAR2
156006 --Applied To Purchase Document Identifier
156007  , p_source_83            IN NUMBER
156008 --DISTRIBUTION_IDENTIFIER
156009  , p_source_84            IN NUMBER
156010 --Distribution Type
156011  , p_source_85            IN VARCHAR2
156012  , p_source_85_meaning    IN VARCHAR2
156013 --PO Budget Account
156014  , p_source_86            IN NUMBER
156015 --Encumbrance Reversal Amount Entered
156016  , p_source_87            IN NUMBER
156017 --Entered Currency Code
156018  , p_source_88            IN VARCHAR2
156019 --Transaction Encumbrance Reversal Amount
156020  , p_source_89            IN NUMBER
156021 --Entered Amount
156022  , p_source_91            IN NUMBER
156023 --Currency Conversion Date
156024  , p_source_92            IN DATE
156025 --Currency Conversion Rate
156026  , p_source_93            IN NUMBER
156027 --Currency Conversion Type
156028  , p_source_94            IN VARCHAR2
156029 --Accounted Amount
156030  , p_source_95            IN NUMBER
156031 --Purchasing Encumbrance Type Identifier
156032  , p_source_96            IN NUMBER
156033 --Accounting Line Type
156034  , p_source_97            IN NUMBER
156035 --Costing Encumbrance Upgrade Option
156036  , p_source_100            IN VARCHAR2
156037 --TXN_PO_DISTRIBUTION_ID
156038  , p_source_101            IN NUMBER
156039 )
156040 IS
156041 
156042 l_component_type              VARCHAR2(80);
156043 l_component_code              VARCHAR2(30);
156044 l_component_type_code         VARCHAR2(1);
156045 l_component_appl_id           INTEGER;
156046 l_amb_context_code            VARCHAR2(30);
156047 l_entity_code                 VARCHAR2(30);
156048 l_event_class_code            VARCHAR2(30);
156049 l_ae_header_id                NUMBER;
156050 l_event_type_code             VARCHAR2(30);
156051 l_line_definition_code        VARCHAR2(30);
156052 l_line_definition_owner_code  VARCHAR2(1);
156053 --
156054 -- adr variables
156055 l_segment                     VARCHAR2(30);
156056 l_ccid                        NUMBER;
156057 l_adr_transaction_coa_id      NUMBER;
156058 l_adr_accounting_coa_id       NUMBER;
156059 l_adr_flexfield_segment_code  VARCHAR2(30);
156060 l_adr_flex_value_set_id       NUMBER;
156061 l_adr_value_type_code         VARCHAR2(30);
156062 l_adr_value_combination_id    NUMBER;
156063 l_adr_value_segment_code      VARCHAR2(30);
156064 
156065 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
156066 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
156067 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
156068 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
156069 
156070 -- 4262811 Variables ------------------------------------------------------------------------------------------
156071 l_entered_amt_idx             NUMBER;
156072 l_accted_amt_idx              NUMBER;
156073 l_acc_rev_flag                VARCHAR2(1);
156074 l_accrual_line_num            NUMBER;
156075 l_tmp_amt                     NUMBER;
156076 l_acc_rev_natural_side_code   VARCHAR2(1);
156077 
156078 l_num_entries                 NUMBER;
156079 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
156080 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
156081 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
156082 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
156083 l_recog_line_1                NUMBER;
156084 l_recog_line_2                NUMBER;
156085 
156086 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
156087 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
156088 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
156089 
156090 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
156091 
156092 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
156093 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
156094 
156095 ---------------------------------------------------------------------------------------------------------------
156096 
156097 
156098 --
156099 -- bulk performance
156100 --
156101 l_balance_type_code           VARCHAR2(1);
156102 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
156103 l_log_module                  VARCHAR2(240);
156104 
156105 --
156106 -- Upgrade strategy
156107 --
156108 l_actual_upg_option           VARCHAR2(1);
156109 l_enc_upg_option           VARCHAR2(1);
156110 
156111 --
156112 BEGIN
156113 --
156114 IF g_log_enabled THEN
156115       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_291';
156116 END IF;
156117 --
156118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156119 
156120       trace
156121          (p_msg      => 'BEGIN of AcctLineType_291'
156122          ,p_level    => C_LEVEL_PROCEDURE
156123          ,p_module   => l_log_module);
156124 
156125 END IF;
156126 --
156127 l_component_type             := 'AMB_JLT';
156128 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
156129 l_component_type_code        := 'S';
156130 l_component_appl_id          :=  707;
156131 l_amb_context_code           := 'DEFAULT';
156132 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
156133 l_event_class_code           := 'PURCHASE_ORDER';
156134 l_event_type_code            := 'LOG_RET_RI_INV';
156135 l_line_definition_owner_code := 'S';
156136 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
156137 --
156138 l_balance_type_code          := 'A';
156139 l_segment                     := NULL;
156140 l_ccid                        := NULL;
156141 l_adr_transaction_coa_id      := NULL;
156142 l_adr_accounting_coa_id       := NULL;
156143 l_adr_flexfield_segment_code  := NULL;
156144 l_adr_flex_value_set_id       := NULL;
156145 l_adr_value_type_code         := NULL;
156146 l_adr_value_combination_id    := NULL;
156147 l_adr_value_segment_code      := NULL;
156148 
156149 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
156150 l_bflow_class_code           := '';    -- 4219869 Business Flow
156151 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
156152 l_budgetary_control_flag     := 'N';
156153 
156154 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
156155 l_bflow_applied_to_amt       := NULL; -- 5132302
156156 l_entered_amt_idx            := NULL;          -- 4262811
156157 l_accted_amt_idx             := NULL;          -- 4262811
156158 l_acc_rev_flag               := NULL;          -- 4262811
156159 l_accrual_line_num           := NULL;          -- 4262811
156160 l_tmp_amt                    := NULL;          -- 4262811
156161 --
156162  
156163 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
156164     l_balance_type_code <> 'B' THEN
156165 IF NVL(p_source_97,9E125) =  3
156166  THEN 
156167 
156168    --
156169    XLA_AE_LINES_PKG.SetNewLine;
156170 
156171    p_balance_type_code          := l_balance_type_code;
156172    -- set the flag so later we will know whether the gain loss line needs to be created
156173    
156174    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
156175      p_actual_flag :='A';
156176    END IF;
156177 
156178    --
156179    -- bulk performance
156180    --
156181    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
156182                                       p_header_num   => 0); -- 4262811
156183    --
156184    -- set accounting line options
156185    --
156186    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
156187            p_natural_side_code          => 'D'
156188          , p_gain_or_loss_flag          => 'N'
156189          , p_gl_transfer_mode_code      => 'S'
156190          , p_acct_entry_type_code       => 'A'
156191          , p_switch_side_flag           => 'Y'
156192          , p_merge_duplicate_code       => 'N'
156193          );
156194    --
156195    l_acc_rev_natural_side_code := 'C';  -- 4262811
156196    -- 
156197    --
156198    -- set accounting line type info
156199    --
156200    xla_ae_lines_pkg.SetAcctLineType
156201       (p_component_type             => l_component_type
156202       ,p_event_type_code            => l_event_type_code
156203       ,p_line_definition_owner_code => l_line_definition_owner_code
156204       ,p_line_definition_code       => l_line_definition_code
156205       ,p_accounting_line_code       => l_component_code
156206       ,p_accounting_line_type_code  => l_component_type_code
156207       ,p_accounting_line_appl_id    => l_component_appl_id
156208       ,p_amb_context_code           => l_amb_context_code
156209       ,p_entity_code                => l_entity_code
156210       ,p_event_class_code           => l_event_class_code);
156211    --
156212    -- set accounting class
156213    --
156214    xla_ae_lines_pkg.SetAcctClass(
156215            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
156216          , p_ae_header_id           => l_ae_header_id
156217          );
156218 
156219    --
156220    -- set rounding class
156221    --
156222    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
156223                       'MATERIAL_OVERHEAD_ABSORPTION';
156224 
156225    --
156226    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
156227    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
156228    --
156229    -- bulk performance
156230    --
156231    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
156232 
156233    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
156234       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
156235 
156236    -- 4955764
156237    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
156238       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
156239 
156240    -- 4458381 Public Sector Enh
156241    
156242    --
156243    -- set accounting attributes for the line type
156244    --
156245    l_entered_amt_idx := 17;
156246    l_accted_amt_idx  := 22;
156247    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
156248    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
156249    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
156250    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
156251    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
156252    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
156253    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
156254    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
156255    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
156256    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
156257    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
156258    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
156259    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
156260    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
156261    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
156262    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
156263    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
156264    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
156265    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
156266    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
156267    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
156268    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
156269    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
156270    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
156271    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
156272    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
156273    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
156274    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
156275    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
156276    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
156277    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
156278    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
156279    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
156280    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
156281    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
156282    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
156283    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
156284    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
156285    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
156286    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
156287    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
156288    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
156289    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
156290    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
156291    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
156292    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
156293    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
156294    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
156295    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
156296 
156297    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
156298    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
156299 
156300    ---------------------------------------------------------------------------------------------------------------
156301    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
156302    ---------------------------------------------------------------------------------------------------------------
156303    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
156304 
156305    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
156306    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
156307 
156308    IF xla_accounting_cache_pkg.GetValueChar
156309          (p_source_code         => 'LEDGER_CATEGORY_CODE'
156310          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
156311    AND l_bflow_method_code = 'PRIOR_ENTRY'
156312 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
156313    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
156314          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
156315        )
156316    THEN
156317          xla_ae_lines_pkg.BflowUpgEntry
156318            (p_business_method_code    => l_bflow_method_code
156319            ,p_business_class_code     => l_bflow_class_code
156320            ,p_balance_type            => l_balance_type_code);
156321    ELSE
156322       NULL;
156323 -- No business flow processing for business flow method of NONE.
156324    END IF;
156325 
156326    --
156327    -- call analytical criteria
156328    --
156329    
156330    --
156331    -- call description
156332    --
156333    
156334 xla_ae_lines_pkg.SetLineDescription(
156335    p_ae_header_id => l_ae_header_id
156336   ,p_description  => Description_1 (
156337      p_application_id         => p_application_id
156338    , p_ae_header_id           => l_ae_header_id 
156339 , p_source_1 => p_source_1
156340 , p_source_2 => p_source_2
156341 , p_source_3 => p_source_3
156342 , p_source_4 => p_source_4
156343 , p_source_5 => p_source_5
156344    )
156345 );
156346 
156347 
156348    --
156349    -- call ADRs
156350    -- Bug 4922099
156351    --
156352    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
156353         (NVL(l_actual_upg_option, 'N') = 'O') OR
156354         (NVL(l_enc_upg_option, 'N') = 'O')
156355       )
156356    THEN
156357    NULL;
156358    --
156359    --
156360    
156361   l_ccid := AcctDerRule_6(
156362            p_application_id           => p_application_id
156363          , p_ae_header_id             => l_ae_header_id 
156364 , p_source_11 => p_source_11
156365          , x_transaction_coa_id       => l_adr_transaction_coa_id
156366          , x_accounting_coa_id        => l_adr_accounting_coa_id
156367          , x_value_type_code          => l_adr_value_type_code
156368          , p_side                     => 'NA'
156369    );
156370 
156371    xla_ae_lines_pkg.set_ccid(
156372     p_code_combination_id          => l_ccid
156373   , p_value_type_code              => l_adr_value_type_code
156374   , p_transaction_coa_id           => l_adr_transaction_coa_id
156375   , p_accounting_coa_id            => l_adr_accounting_coa_id
156376   , p_adr_code                     => 'CST_DEFAULT'
156377   , p_adr_type_code                => 'S'
156378   , p_component_type               => l_component_type
156379   , p_component_code               => l_component_code
156380   , p_component_type_code          => l_component_type_code
156381   , p_component_appl_id            => l_component_appl_id
156382   , p_amb_context_code             => l_amb_context_code
156383   , p_side                         => 'NA'
156384   );
156385 
156386 
156387    --
156388    --
156389    END IF;
156390    --
156391    -- Bug 4922099
156392    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
156393           (NVL(l_enc_upg_option, 'N') = 'O')
156394         ) AND
156395         (l_bflow_method_code = 'PRIOR_ENTRY')
156396       )
156397    THEN
156398       IF
156399       --
156400       1 = 2
156401       --
156402       THEN
156403       xla_accounting_err_pkg.build_message
156404                                     (p_appli_s_name            => 'XLA'
156405                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
156406                                     ,p_token_1                 => 'LINE_NUMBER'
156407                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
156408                                     ,p_token_2                 => 'LINE_TYPE_NAME'
156409                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
156410                                                                              l_component_type
156411                                                                             ,l_component_code
156412                                                                             ,l_component_type_code
156413                                                                             ,l_component_appl_id
156414                                                                             ,l_amb_context_code
156415                                                                             ,l_entity_code
156416                                                                             ,l_event_class_code
156417                                                                            )
156418                                     ,p_token_3                 => 'OWNER'
156419                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
156420                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
156421                                                                           ,p_lookup_code    => l_component_type_code
156422                                                                          )
156423                                     ,p_token_4                 => 'PRODUCT_NAME'
156424                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
156425                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
156426                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
156427                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
156428                                     ,p_ae_header_id            =>  NULL
156429                                        );
156430 
156431         IF (C_LEVEL_ERROR>= g_log_level) THEN
156432                  trace
156433                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
156434                       ,p_level    => C_LEVEL_ERROR
156435                       ,p_module   => l_log_module);
156436         END IF;
156437       END IF;
156438    END IF;
156439    --
156440    --
156441    ------------------------------------------------------------------------------------------------
156442    -- 4219869 Business Flow
156443    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
156444    -- Prior Entry.  Currently, the following code is always generated.
156445    ------------------------------------------------------------------------------------------------
156446    XLA_AE_LINES_PKG.ValidateCurrentLine;
156447 
156448    ------------------------------------------------------------------------------------
156449    -- 4219869 Business Flow
156450    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
156451    ------------------------------------------------------------------------------------
156452    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
156453 
156454    ----------------------------------------------------------------------------------
156455    -- 4219869 Business Flow
156456    -- Update journal entry status -- Need to generate this within IF <condition>
156457    ----------------------------------------------------------------------------------
156458    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
156459          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
156460          ,p_balance_type_code => l_balance_type_code
156461          );
156462 
156463    -------------------------------------------------------------------------------------------
156464    -- 4262811 - Generate the Accrual Reversal lines
156465    -------------------------------------------------------------------------------------------
156466    BEGIN
156467       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
156468                               (g_array_event(p_event_id).array_value_num('header_index'));
156469       IF l_acc_rev_flag IS NULL THEN
156470          l_acc_rev_flag := 'N';
156471       END IF;
156472    EXCEPTION
156473       WHEN OTHERS THEN
156474          l_acc_rev_flag := 'N';
156475    END;
156476    --
156477    IF (l_acc_rev_flag = 'Y') THEN
156478 
156479        -- 4645092  ------------------------------------------------------------------------------
156480        -- To allow MPA report to determine if it should generate report process
156481        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
156482        ------------------------------------------------------------------------------------------
156483 
156484        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
156485        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
156486    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
156487    -- call ADRs
156488    -- Bug 4922099
156489    --
156490    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
156491         (NVL(l_actual_upg_option, 'N') = 'O') OR
156492         (NVL(l_enc_upg_option, 'N') = 'O')
156493       )
156494    THEN
156495    NULL;
156496    --
156497    --
156498    
156499   l_ccid := AcctDerRule_6(
156500            p_application_id           => p_application_id
156501          , p_ae_header_id             => l_ae_header_id 
156502 , p_source_11 => p_source_11
156503          , x_transaction_coa_id       => l_adr_transaction_coa_id
156504          , x_accounting_coa_id        => l_adr_accounting_coa_id
156505          , x_value_type_code          => l_adr_value_type_code
156506          , p_side                     => 'NA'
156507    );
156508 
156509    xla_ae_lines_pkg.set_ccid(
156510     p_code_combination_id          => l_ccid
156511   , p_value_type_code              => l_adr_value_type_code
156512   , p_transaction_coa_id           => l_adr_transaction_coa_id
156513   , p_accounting_coa_id            => l_adr_accounting_coa_id
156514   , p_adr_code                     => 'CST_DEFAULT'
156515   , p_adr_type_code                => 'S'
156516   , p_component_type               => l_component_type
156517   , p_component_code               => l_component_code
156518   , p_component_type_code          => l_component_type_code
156519   , p_component_appl_id            => l_component_appl_id
156520   , p_amb_context_code             => l_amb_context_code
156521   , p_side                         => 'NA'
156522   );
156523 
156524 
156525    --
156526    --
156527    END IF;
156528 
156529        --
156530        -- Update the line information that should be overwritten
156531        --
156532        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
156533                                          p_header_num   => 1);
156534        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
156535 
156536        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
156537 
156538        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
156539           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
156540        END IF;
156541 
156542       --
156543       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
156544       --
156545       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
156546           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
156547       ELSE
156548           ---------------------------------------------------------------------------------------------------
156549           -- 4262811a Switch Sign
156550           ---------------------------------------------------------------------------------------------------
156551           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
156552           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
156553                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
156554           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
156555                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
156556           -- 5132302
156557           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
156558                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
156559 
156560       END IF;
156561 
156562       -- 4955764
156563       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
156564       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
156565 
156566 
156567       XLA_AE_LINES_PKG.ValidateCurrentLine;
156568       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
156569 
156570       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
156571                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
156572                ,p_balance_type_code => l_balance_type_code);
156573 
156574    END IF;
156575 
156576    -----------------------------------------------------------------------------------------
156577    -- 4262811 Multiperiod Accounting
156578    -----------------------------------------------------------------------------------------
156579      -- No MPA option is assigned.
156580 
156581 
156582 END IF;
156583 END IF;
156584 --
156585 
156586 --
156587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156588    trace
156589       (p_msg      => 'END of AcctLineType_291'
156590       ,p_level    => C_LEVEL_PROCEDURE
156591       ,p_module   => l_log_module);
156592 END IF;
156593 --
156594 EXCEPTION
156595   WHEN xla_exceptions_pkg.application_exception THEN
156596       RAISE;
156597   WHEN OTHERS THEN
156598        xla_exceptions_pkg.raise_message
156599            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_291');
156600 END AcctLineType_291;
156601 --
156602 
156603 ---------------------------------------
156604 --
156605 -- PRIVATE FUNCTION
156606 --         AcctLineType_292
156607 --
156608 ---------------------------------------
156609 PROCEDURE AcctLineType_292 (
156610   p_application_id        IN NUMBER
156611  ,p_event_id              IN NUMBER
156612  ,p_calculate_acctd_flag  IN VARCHAR2
156613  ,p_calculate_g_l_flag    IN VARCHAR2
156614  ,p_actual_flag           IN OUT VARCHAR2
156615  ,p_balance_type_code     OUT VARCHAR2
156616  ,p_gain_or_loss_ref      OUT VARCHAR2
156617  
156618 --TRANSACTION_ID
156619  , p_source_1            IN NUMBER
156620 --Item Concatenated Segments
156621  , p_source_2            IN VARCHAR2
156622 --Transaction Quantity
156623  , p_source_3            IN NUMBER
156624 --Transaction Unit of Measure Code
156625  , p_source_4            IN VARCHAR2
156626 --Inventory Transaction Type Description
156627  , p_source_5            IN VARCHAR2
156628 --Cost Management Default Account
156629  , p_source_11            IN NUMBER
156630 --DISTRIBUTION_IDENTIFIER
156631  , p_source_84            IN NUMBER
156632 --Distribution Type
156633  , p_source_85            IN VARCHAR2
156634  , p_source_85_meaning    IN VARCHAR2
156635 --Entered Currency Code
156636  , p_source_88            IN VARCHAR2
156637 --Entered Amount
156638  , p_source_91            IN NUMBER
156639 --Currency Conversion Date
156640  , p_source_92            IN DATE
156641 --Currency Conversion Rate
156642  , p_source_93            IN NUMBER
156643 --Currency Conversion Type
156644  , p_source_94            IN VARCHAR2
156645 --Accounted Amount
156646  , p_source_95            IN NUMBER
156647 --Accounting Line Type
156648  , p_source_97            IN NUMBER
156649 )
156650 IS
156651 
156652 l_component_type              VARCHAR2(80);
156653 l_component_code              VARCHAR2(30);
156654 l_component_type_code         VARCHAR2(1);
156655 l_component_appl_id           INTEGER;
156656 l_amb_context_code            VARCHAR2(30);
156657 l_entity_code                 VARCHAR2(30);
156658 l_event_class_code            VARCHAR2(30);
156659 l_ae_header_id                NUMBER;
156660 l_event_type_code             VARCHAR2(30);
156661 l_line_definition_code        VARCHAR2(30);
156662 l_line_definition_owner_code  VARCHAR2(1);
156663 --
156664 -- adr variables
156665 l_segment                     VARCHAR2(30);
156666 l_ccid                        NUMBER;
156667 l_adr_transaction_coa_id      NUMBER;
156668 l_adr_accounting_coa_id       NUMBER;
156669 l_adr_flexfield_segment_code  VARCHAR2(30);
156670 l_adr_flex_value_set_id       NUMBER;
156671 l_adr_value_type_code         VARCHAR2(30);
156672 l_adr_value_combination_id    NUMBER;
156673 l_adr_value_segment_code      VARCHAR2(30);
156674 
156675 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
156676 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
156677 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
156678 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
156679 
156680 -- 4262811 Variables ------------------------------------------------------------------------------------------
156681 l_entered_amt_idx             NUMBER;
156682 l_accted_amt_idx              NUMBER;
156683 l_acc_rev_flag                VARCHAR2(1);
156684 l_accrual_line_num            NUMBER;
156685 l_tmp_amt                     NUMBER;
156686 l_acc_rev_natural_side_code   VARCHAR2(1);
156687 
156688 l_num_entries                 NUMBER;
156689 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
156690 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
156691 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
156692 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
156693 l_recog_line_1                NUMBER;
156694 l_recog_line_2                NUMBER;
156695 
156696 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
156697 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
156698 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
156699 
156700 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
156701 
156702 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
156703 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
156704 
156705 ---------------------------------------------------------------------------------------------------------------
156706 
156707 
156708 --
156709 -- bulk performance
156710 --
156711 l_balance_type_code           VARCHAR2(1);
156712 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
156713 l_log_module                  VARCHAR2(240);
156714 
156715 --
156716 -- Upgrade strategy
156717 --
156718 l_actual_upg_option           VARCHAR2(1);
156719 l_enc_upg_option           VARCHAR2(1);
156720 
156721 --
156722 BEGIN
156723 --
156724 IF g_log_enabled THEN
156725       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_292';
156726 END IF;
156727 --
156728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156729 
156730       trace
156731          (p_msg      => 'BEGIN of AcctLineType_292'
156732          ,p_level    => C_LEVEL_PROCEDURE
156733          ,p_module   => l_log_module);
156734 
156735 END IF;
156736 --
156737 l_component_type             := 'AMB_JLT';
156738 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
156739 l_component_type_code        := 'S';
156740 l_component_appl_id          :=  707;
156741 l_amb_context_code           := 'DEFAULT';
156742 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
156743 l_event_class_code           := 'USER_DEFINE';
156744 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
156745 l_line_definition_owner_code := 'S';
156746 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
156747 --
156748 l_balance_type_code          := 'A';
156749 l_segment                     := NULL;
156750 l_ccid                        := NULL;
156751 l_adr_transaction_coa_id      := NULL;
156752 l_adr_accounting_coa_id       := NULL;
156753 l_adr_flexfield_segment_code  := NULL;
156754 l_adr_flex_value_set_id       := NULL;
156755 l_adr_value_type_code         := NULL;
156756 l_adr_value_combination_id    := NULL;
156757 l_adr_value_segment_code      := NULL;
156758 
156759 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
156760 l_bflow_class_code           := '';    -- 4219869 Business Flow
156761 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
156762 l_budgetary_control_flag     := 'N';
156763 
156764 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
156765 l_bflow_applied_to_amt       := NULL; -- 5132302
156766 l_entered_amt_idx            := NULL;          -- 4262811
156767 l_accted_amt_idx             := NULL;          -- 4262811
156768 l_acc_rev_flag               := NULL;          -- 4262811
156769 l_accrual_line_num           := NULL;          -- 4262811
156770 l_tmp_amt                    := NULL;          -- 4262811
156771 --
156772  
156773 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
156774     l_balance_type_code <> 'B' THEN
156775 IF NVL(p_source_97,9E125) =  3
156776  THEN 
156777 
156778    --
156779    XLA_AE_LINES_PKG.SetNewLine;
156780 
156781    p_balance_type_code          := l_balance_type_code;
156782    -- set the flag so later we will know whether the gain loss line needs to be created
156783    
156784    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
156785      p_actual_flag :='A';
156786    END IF;
156787 
156788    --
156789    -- bulk performance
156790    --
156791    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
156792                                       p_header_num   => 0); -- 4262811
156793    --
156794    -- set accounting line options
156795    --
156796    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
156797            p_natural_side_code          => 'D'
156798          , p_gain_or_loss_flag          => 'N'
156799          , p_gl_transfer_mode_code      => 'S'
156800          , p_acct_entry_type_code       => 'A'
156801          , p_switch_side_flag           => 'Y'
156802          , p_merge_duplicate_code       => 'N'
156803          );
156804    --
156805    l_acc_rev_natural_side_code := 'C';  -- 4262811
156806    -- 
156807    --
156808    -- set accounting line type info
156809    --
156810    xla_ae_lines_pkg.SetAcctLineType
156811       (p_component_type             => l_component_type
156812       ,p_event_type_code            => l_event_type_code
156813       ,p_line_definition_owner_code => l_line_definition_owner_code
156814       ,p_line_definition_code       => l_line_definition_code
156815       ,p_accounting_line_code       => l_component_code
156816       ,p_accounting_line_type_code  => l_component_type_code
156817       ,p_accounting_line_appl_id    => l_component_appl_id
156818       ,p_amb_context_code           => l_amb_context_code
156819       ,p_entity_code                => l_entity_code
156820       ,p_event_class_code           => l_event_class_code);
156821    --
156822    -- set accounting class
156823    --
156824    xla_ae_lines_pkg.SetAcctClass(
156825            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
156826          , p_ae_header_id           => l_ae_header_id
156827          );
156828 
156829    --
156830    -- set rounding class
156831    --
156832    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
156833                       'MATERIAL_OVERHEAD_ABSORPTION';
156834 
156835    --
156836    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
156837    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
156838    --
156839    -- bulk performance
156840    --
156841    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
156842 
156843    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
156844       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
156845 
156846    -- 4955764
156847    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
156848       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
156849 
156850    -- 4458381 Public Sector Enh
156851    
156852    --
156853    -- set accounting attributes for the line type
156854    --
156855    l_entered_amt_idx := 3;
156856    l_accted_amt_idx  := 8;
156857    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
156858    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
156859    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
156860    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
156861    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
156862    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
156863    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
156864    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
156865    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
156866    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
156867    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
156868    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
156869    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
156870    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
156871    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
156872    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
156873    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
156874 
156875    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
156876    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
156877 
156878    ---------------------------------------------------------------------------------------------------------------
156879    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
156880    ---------------------------------------------------------------------------------------------------------------
156881    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
156882 
156883    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
156884    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
156885 
156886    IF xla_accounting_cache_pkg.GetValueChar
156887          (p_source_code         => 'LEDGER_CATEGORY_CODE'
156888          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
156889    AND l_bflow_method_code = 'PRIOR_ENTRY'
156890 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
156891    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
156892          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
156893        )
156894    THEN
156895          xla_ae_lines_pkg.BflowUpgEntry
156896            (p_business_method_code    => l_bflow_method_code
156897            ,p_business_class_code     => l_bflow_class_code
156898            ,p_balance_type            => l_balance_type_code);
156899    ELSE
156900       NULL;
156901 -- No business flow processing for business flow method of NONE.
156902    END IF;
156903 
156904    --
156905    -- call analytical criteria
156906    --
156907    
156908    --
156909    -- call description
156910    --
156911    
156912 xla_ae_lines_pkg.SetLineDescription(
156913    p_ae_header_id => l_ae_header_id
156914   ,p_description  => Description_1 (
156915      p_application_id         => p_application_id
156916    , p_ae_header_id           => l_ae_header_id 
156917 , p_source_1 => p_source_1
156918 , p_source_2 => p_source_2
156919 , p_source_3 => p_source_3
156920 , p_source_4 => p_source_4
156921 , p_source_5 => p_source_5
156922    )
156923 );
156924 
156925 
156926    --
156927    -- call ADRs
156928    -- Bug 4922099
156929    --
156930    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
156931         (NVL(l_actual_upg_option, 'N') = 'O') OR
156932         (NVL(l_enc_upg_option, 'N') = 'O')
156933       )
156934    THEN
156935    NULL;
156936    --
156937    --
156938    
156939   l_ccid := AcctDerRule_6(
156940            p_application_id           => p_application_id
156941          , p_ae_header_id             => l_ae_header_id 
156942 , p_source_11 => p_source_11
156943          , x_transaction_coa_id       => l_adr_transaction_coa_id
156944          , x_accounting_coa_id        => l_adr_accounting_coa_id
156945          , x_value_type_code          => l_adr_value_type_code
156946          , p_side                     => 'NA'
156947    );
156948 
156949    xla_ae_lines_pkg.set_ccid(
156950     p_code_combination_id          => l_ccid
156951   , p_value_type_code              => l_adr_value_type_code
156952   , p_transaction_coa_id           => l_adr_transaction_coa_id
156953   , p_accounting_coa_id            => l_adr_accounting_coa_id
156954   , p_adr_code                     => 'CST_DEFAULT'
156955   , p_adr_type_code                => 'S'
156956   , p_component_type               => l_component_type
156957   , p_component_code               => l_component_code
156958   , p_component_type_code          => l_component_type_code
156959   , p_component_appl_id            => l_component_appl_id
156960   , p_amb_context_code             => l_amb_context_code
156961   , p_side                         => 'NA'
156962   );
156963 
156964 
156965    --
156966    --
156967    END IF;
156968    --
156969    -- Bug 4922099
156970    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
156971           (NVL(l_enc_upg_option, 'N') = 'O')
156972         ) AND
156973         (l_bflow_method_code = 'PRIOR_ENTRY')
156974       )
156975    THEN
156976       IF
156977       --
156978       1 = 2
156979       --
156980       THEN
156981       xla_accounting_err_pkg.build_message
156982                                     (p_appli_s_name            => 'XLA'
156983                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
156984                                     ,p_token_1                 => 'LINE_NUMBER'
156985                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
156986                                     ,p_token_2                 => 'LINE_TYPE_NAME'
156987                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
156988                                                                              l_component_type
156989                                                                             ,l_component_code
156990                                                                             ,l_component_type_code
156991                                                                             ,l_component_appl_id
156992                                                                             ,l_amb_context_code
156993                                                                             ,l_entity_code
156994                                                                             ,l_event_class_code
156995                                                                            )
156996                                     ,p_token_3                 => 'OWNER'
156997                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
156998                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
156999                                                                           ,p_lookup_code    => l_component_type_code
157000                                                                          )
157001                                     ,p_token_4                 => 'PRODUCT_NAME'
157002                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
157003                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
157004                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
157005                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
157006                                     ,p_ae_header_id            =>  NULL
157007                                        );
157008 
157009         IF (C_LEVEL_ERROR>= g_log_level) THEN
157010                  trace
157011                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
157012                       ,p_level    => C_LEVEL_ERROR
157013                       ,p_module   => l_log_module);
157014         END IF;
157015       END IF;
157016    END IF;
157017    --
157018    --
157019    ------------------------------------------------------------------------------------------------
157020    -- 4219869 Business Flow
157021    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
157022    -- Prior Entry.  Currently, the following code is always generated.
157023    ------------------------------------------------------------------------------------------------
157024    XLA_AE_LINES_PKG.ValidateCurrentLine;
157025 
157026    ------------------------------------------------------------------------------------
157027    -- 4219869 Business Flow
157028    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
157029    ------------------------------------------------------------------------------------
157030    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
157031 
157032    ----------------------------------------------------------------------------------
157033    -- 4219869 Business Flow
157034    -- Update journal entry status -- Need to generate this within IF <condition>
157035    ----------------------------------------------------------------------------------
157036    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
157037          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
157038          ,p_balance_type_code => l_balance_type_code
157039          );
157040 
157041    -------------------------------------------------------------------------------------------
157042    -- 4262811 - Generate the Accrual Reversal lines
157043    -------------------------------------------------------------------------------------------
157044    BEGIN
157045       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
157046                               (g_array_event(p_event_id).array_value_num('header_index'));
157047       IF l_acc_rev_flag IS NULL THEN
157048          l_acc_rev_flag := 'N';
157049       END IF;
157050    EXCEPTION
157051       WHEN OTHERS THEN
157052          l_acc_rev_flag := 'N';
157053    END;
157054    --
157055    IF (l_acc_rev_flag = 'Y') THEN
157056 
157057        -- 4645092  ------------------------------------------------------------------------------
157058        -- To allow MPA report to determine if it should generate report process
157059        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
157060        ------------------------------------------------------------------------------------------
157061 
157062        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
157063        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
157064    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
157065    -- call ADRs
157066    -- Bug 4922099
157067    --
157068    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
157069         (NVL(l_actual_upg_option, 'N') = 'O') OR
157070         (NVL(l_enc_upg_option, 'N') = 'O')
157071       )
157072    THEN
157073    NULL;
157074    --
157075    --
157076    
157077   l_ccid := AcctDerRule_6(
157078            p_application_id           => p_application_id
157079          , p_ae_header_id             => l_ae_header_id 
157080 , p_source_11 => p_source_11
157081          , x_transaction_coa_id       => l_adr_transaction_coa_id
157082          , x_accounting_coa_id        => l_adr_accounting_coa_id
157083          , x_value_type_code          => l_adr_value_type_code
157084          , p_side                     => 'NA'
157085    );
157086 
157087    xla_ae_lines_pkg.set_ccid(
157088     p_code_combination_id          => l_ccid
157089   , p_value_type_code              => l_adr_value_type_code
157090   , p_transaction_coa_id           => l_adr_transaction_coa_id
157091   , p_accounting_coa_id            => l_adr_accounting_coa_id
157092   , p_adr_code                     => 'CST_DEFAULT'
157093   , p_adr_type_code                => 'S'
157094   , p_component_type               => l_component_type
157095   , p_component_code               => l_component_code
157096   , p_component_type_code          => l_component_type_code
157097   , p_component_appl_id            => l_component_appl_id
157098   , p_amb_context_code             => l_amb_context_code
157099   , p_side                         => 'NA'
157100   );
157101 
157102 
157103    --
157104    --
157105    END IF;
157106 
157107        --
157108        -- Update the line information that should be overwritten
157109        --
157110        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
157111                                          p_header_num   => 1);
157112        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
157113 
157114        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
157115 
157116        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
157117           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
157118        END IF;
157119 
157120       --
157121       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
157122       --
157123       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
157124           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
157125       ELSE
157126           ---------------------------------------------------------------------------------------------------
157127           -- 4262811a Switch Sign
157128           ---------------------------------------------------------------------------------------------------
157129           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
157130           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
157131                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
157132           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
157133                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
157134           -- 5132302
157135           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
157136                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
157137 
157138       END IF;
157139 
157140       -- 4955764
157141       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
157142       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
157143 
157144 
157145       XLA_AE_LINES_PKG.ValidateCurrentLine;
157146       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
157147 
157148       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
157149                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
157150                ,p_balance_type_code => l_balance_type_code);
157151 
157152    END IF;
157153 
157154    -----------------------------------------------------------------------------------------
157155    -- 4262811 Multiperiod Accounting
157156    -----------------------------------------------------------------------------------------
157157      -- No MPA option is assigned.
157158 
157159 
157160 END IF;
157161 END IF;
157162 --
157163 
157164 --
157165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157166    trace
157167       (p_msg      => 'END of AcctLineType_292'
157168       ,p_level    => C_LEVEL_PROCEDURE
157169       ,p_module   => l_log_module);
157170 END IF;
157171 --
157172 EXCEPTION
157173   WHEN xla_exceptions_pkg.application_exception THEN
157174       RAISE;
157175   WHEN OTHERS THEN
157176        xla_exceptions_pkg.raise_message
157177            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_292');
157178 END AcctLineType_292;
157179 --
157180 
157181 ---------------------------------------
157182 --
157183 -- PRIVATE FUNCTION
157184 --         AcctLineType_293
157185 --
157186 ---------------------------------------
157187 PROCEDURE AcctLineType_293 (
157188   p_application_id        IN NUMBER
157189  ,p_event_id              IN NUMBER
157190  ,p_calculate_acctd_flag  IN VARCHAR2
157191  ,p_calculate_g_l_flag    IN VARCHAR2
157192  ,p_actual_flag           IN OUT VARCHAR2
157193  ,p_balance_type_code     OUT VARCHAR2
157194  ,p_gain_or_loss_ref      OUT VARCHAR2
157195  
157196 --TRANSACTION_ID
157197  , p_source_1            IN NUMBER
157198 --Item Concatenated Segments
157199  , p_source_2            IN VARCHAR2
157200 --Transaction Quantity
157201  , p_source_3            IN NUMBER
157202 --Transaction Unit of Measure Code
157203  , p_source_4            IN VARCHAR2
157204 --Inventory Transaction Type Description
157205  , p_source_5            IN VARCHAR2
157206 --Cost Management Default Account
157207  , p_source_11            IN NUMBER
157208 --DISTRIBUTION_IDENTIFIER
157209  , p_source_84            IN NUMBER
157210 --Distribution Type
157211  , p_source_85            IN VARCHAR2
157212  , p_source_85_meaning    IN VARCHAR2
157213 --Entered Currency Code
157214  , p_source_88            IN VARCHAR2
157215 --Entered Amount
157216  , p_source_91            IN NUMBER
157217 --Currency Conversion Date
157218  , p_source_92            IN DATE
157219 --Currency Conversion Rate
157220  , p_source_93            IN NUMBER
157221 --Currency Conversion Type
157222  , p_source_94            IN VARCHAR2
157223 --Accounted Amount
157224  , p_source_95            IN NUMBER
157225 --Accounting Line Type
157226  , p_source_97            IN NUMBER
157227 )
157228 IS
157229 
157230 l_component_type              VARCHAR2(80);
157231 l_component_code              VARCHAR2(30);
157232 l_component_type_code         VARCHAR2(1);
157233 l_component_appl_id           INTEGER;
157234 l_amb_context_code            VARCHAR2(30);
157235 l_entity_code                 VARCHAR2(30);
157236 l_event_class_code            VARCHAR2(30);
157237 l_ae_header_id                NUMBER;
157238 l_event_type_code             VARCHAR2(30);
157239 l_line_definition_code        VARCHAR2(30);
157240 l_line_definition_owner_code  VARCHAR2(1);
157241 --
157242 -- adr variables
157243 l_segment                     VARCHAR2(30);
157244 l_ccid                        NUMBER;
157245 l_adr_transaction_coa_id      NUMBER;
157246 l_adr_accounting_coa_id       NUMBER;
157247 l_adr_flexfield_segment_code  VARCHAR2(30);
157248 l_adr_flex_value_set_id       NUMBER;
157249 l_adr_value_type_code         VARCHAR2(30);
157250 l_adr_value_combination_id    NUMBER;
157251 l_adr_value_segment_code      VARCHAR2(30);
157252 
157253 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
157254 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
157255 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
157256 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
157257 
157258 -- 4262811 Variables ------------------------------------------------------------------------------------------
157259 l_entered_amt_idx             NUMBER;
157260 l_accted_amt_idx              NUMBER;
157261 l_acc_rev_flag                VARCHAR2(1);
157262 l_accrual_line_num            NUMBER;
157263 l_tmp_amt                     NUMBER;
157264 l_acc_rev_natural_side_code   VARCHAR2(1);
157265 
157266 l_num_entries                 NUMBER;
157267 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
157268 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
157269 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
157270 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
157271 l_recog_line_1                NUMBER;
157272 l_recog_line_2                NUMBER;
157273 
157274 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
157275 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
157276 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
157277 
157278 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
157279 
157280 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
157281 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
157282 
157283 ---------------------------------------------------------------------------------------------------------------
157284 
157285 
157286 --
157287 -- bulk performance
157288 --
157289 l_balance_type_code           VARCHAR2(1);
157290 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
157291 l_log_module                  VARCHAR2(240);
157292 
157293 --
157294 -- Upgrade strategy
157295 --
157296 l_actual_upg_option           VARCHAR2(1);
157297 l_enc_upg_option           VARCHAR2(1);
157298 
157299 --
157300 BEGIN
157301 --
157302 IF g_log_enabled THEN
157303       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_293';
157304 END IF;
157305 --
157306 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157307 
157308       trace
157309          (p_msg      => 'BEGIN of AcctLineType_293'
157310          ,p_level    => C_LEVEL_PROCEDURE
157311          ,p_module   => l_log_module);
157312 
157313 END IF;
157314 --
157315 l_component_type             := 'AMB_JLT';
157316 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
157317 l_component_type_code        := 'S';
157318 l_component_appl_id          :=  707;
157319 l_amb_context_code           := 'DEFAULT';
157320 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
157321 l_event_class_code           := 'USER_DEFINE';
157322 l_event_type_code            := 'UDIR_INTERORG_RCPT';
157323 l_line_definition_owner_code := 'S';
157324 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
157325 --
157326 l_balance_type_code          := 'A';
157327 l_segment                     := NULL;
157328 l_ccid                        := NULL;
157329 l_adr_transaction_coa_id      := NULL;
157330 l_adr_accounting_coa_id       := NULL;
157331 l_adr_flexfield_segment_code  := NULL;
157332 l_adr_flex_value_set_id       := NULL;
157333 l_adr_value_type_code         := NULL;
157334 l_adr_value_combination_id    := NULL;
157335 l_adr_value_segment_code      := NULL;
157336 
157337 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
157338 l_bflow_class_code           := '';    -- 4219869 Business Flow
157339 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
157340 l_budgetary_control_flag     := 'N';
157341 
157342 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
157343 l_bflow_applied_to_amt       := NULL; -- 5132302
157344 l_entered_amt_idx            := NULL;          -- 4262811
157345 l_accted_amt_idx             := NULL;          -- 4262811
157346 l_acc_rev_flag               := NULL;          -- 4262811
157347 l_accrual_line_num           := NULL;          -- 4262811
157348 l_tmp_amt                    := NULL;          -- 4262811
157349 --
157350  
157351 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
157352     l_balance_type_code <> 'B' THEN
157353 IF NVL(p_source_97,9E125) =  3
157354  THEN 
157355 
157356    --
157357    XLA_AE_LINES_PKG.SetNewLine;
157358 
157359    p_balance_type_code          := l_balance_type_code;
157360    -- set the flag so later we will know whether the gain loss line needs to be created
157361    
157362    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
157363      p_actual_flag :='A';
157364    END IF;
157365 
157366    --
157367    -- bulk performance
157368    --
157369    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
157370                                       p_header_num   => 0); -- 4262811
157371    --
157372    -- set accounting line options
157373    --
157374    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
157375            p_natural_side_code          => 'D'
157376          , p_gain_or_loss_flag          => 'N'
157377          , p_gl_transfer_mode_code      => 'S'
157378          , p_acct_entry_type_code       => 'A'
157379          , p_switch_side_flag           => 'Y'
157380          , p_merge_duplicate_code       => 'N'
157381          );
157382    --
157383    l_acc_rev_natural_side_code := 'C';  -- 4262811
157384    -- 
157385    --
157386    -- set accounting line type info
157387    --
157388    xla_ae_lines_pkg.SetAcctLineType
157389       (p_component_type             => l_component_type
157390       ,p_event_type_code            => l_event_type_code
157391       ,p_line_definition_owner_code => l_line_definition_owner_code
157392       ,p_line_definition_code       => l_line_definition_code
157393       ,p_accounting_line_code       => l_component_code
157394       ,p_accounting_line_type_code  => l_component_type_code
157395       ,p_accounting_line_appl_id    => l_component_appl_id
157396       ,p_amb_context_code           => l_amb_context_code
157397       ,p_entity_code                => l_entity_code
157398       ,p_event_class_code           => l_event_class_code);
157399    --
157400    -- set accounting class
157401    --
157402    xla_ae_lines_pkg.SetAcctClass(
157403            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
157404          , p_ae_header_id           => l_ae_header_id
157405          );
157406 
157407    --
157408    -- set rounding class
157409    --
157410    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
157411                       'MATERIAL_OVERHEAD_ABSORPTION';
157412 
157413    --
157414    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
157415    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
157416    --
157417    -- bulk performance
157418    --
157419    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
157420 
157421    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
157422       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
157423 
157424    -- 4955764
157425    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
157426       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
157427 
157428    -- 4458381 Public Sector Enh
157429    
157430    --
157431    -- set accounting attributes for the line type
157432    --
157433    l_entered_amt_idx := 3;
157434    l_accted_amt_idx  := 8;
157435    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
157436    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
157437    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
157438    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
157439    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
157440    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
157441    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
157442    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
157443    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
157444    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
157445    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
157446    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
157447    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
157448    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
157449    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
157450    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
157451    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
157452 
157453    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
157454    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
157455 
157456    ---------------------------------------------------------------------------------------------------------------
157457    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
157458    ---------------------------------------------------------------------------------------------------------------
157459    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
157460 
157461    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
157462    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
157463 
157464    IF xla_accounting_cache_pkg.GetValueChar
157465          (p_source_code         => 'LEDGER_CATEGORY_CODE'
157466          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
157467    AND l_bflow_method_code = 'PRIOR_ENTRY'
157468 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
157469    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
157470          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
157471        )
157472    THEN
157473          xla_ae_lines_pkg.BflowUpgEntry
157474            (p_business_method_code    => l_bflow_method_code
157475            ,p_business_class_code     => l_bflow_class_code
157476            ,p_balance_type            => l_balance_type_code);
157477    ELSE
157478       NULL;
157479 -- No business flow processing for business flow method of NONE.
157480    END IF;
157481 
157482    --
157483    -- call analytical criteria
157484    --
157485    
157486    --
157487    -- call description
157488    --
157489    
157490 xla_ae_lines_pkg.SetLineDescription(
157491    p_ae_header_id => l_ae_header_id
157492   ,p_description  => Description_1 (
157493      p_application_id         => p_application_id
157494    , p_ae_header_id           => l_ae_header_id 
157495 , p_source_1 => p_source_1
157496 , p_source_2 => p_source_2
157497 , p_source_3 => p_source_3
157498 , p_source_4 => p_source_4
157499 , p_source_5 => p_source_5
157500    )
157501 );
157502 
157503 
157504    --
157505    -- call ADRs
157506    -- Bug 4922099
157507    --
157508    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
157509         (NVL(l_actual_upg_option, 'N') = 'O') OR
157510         (NVL(l_enc_upg_option, 'N') = 'O')
157511       )
157512    THEN
157513    NULL;
157514    --
157515    --
157516    
157517   l_ccid := AcctDerRule_6(
157518            p_application_id           => p_application_id
157519          , p_ae_header_id             => l_ae_header_id 
157520 , p_source_11 => p_source_11
157521          , x_transaction_coa_id       => l_adr_transaction_coa_id
157522          , x_accounting_coa_id        => l_adr_accounting_coa_id
157523          , x_value_type_code          => l_adr_value_type_code
157524          , p_side                     => 'NA'
157525    );
157526 
157527    xla_ae_lines_pkg.set_ccid(
157528     p_code_combination_id          => l_ccid
157529   , p_value_type_code              => l_adr_value_type_code
157530   , p_transaction_coa_id           => l_adr_transaction_coa_id
157531   , p_accounting_coa_id            => l_adr_accounting_coa_id
157532   , p_adr_code                     => 'CST_DEFAULT'
157533   , p_adr_type_code                => 'S'
157534   , p_component_type               => l_component_type
157535   , p_component_code               => l_component_code
157536   , p_component_type_code          => l_component_type_code
157537   , p_component_appl_id            => l_component_appl_id
157538   , p_amb_context_code             => l_amb_context_code
157539   , p_side                         => 'NA'
157540   );
157541 
157542 
157543    --
157544    --
157545    END IF;
157546    --
157547    -- Bug 4922099
157548    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
157549           (NVL(l_enc_upg_option, 'N') = 'O')
157550         ) AND
157551         (l_bflow_method_code = 'PRIOR_ENTRY')
157552       )
157553    THEN
157554       IF
157555       --
157556       1 = 2
157557       --
157558       THEN
157559       xla_accounting_err_pkg.build_message
157560                                     (p_appli_s_name            => 'XLA'
157561                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
157562                                     ,p_token_1                 => 'LINE_NUMBER'
157563                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
157564                                     ,p_token_2                 => 'LINE_TYPE_NAME'
157565                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
157566                                                                              l_component_type
157567                                                                             ,l_component_code
157568                                                                             ,l_component_type_code
157569                                                                             ,l_component_appl_id
157570                                                                             ,l_amb_context_code
157571                                                                             ,l_entity_code
157572                                                                             ,l_event_class_code
157573                                                                            )
157574                                     ,p_token_3                 => 'OWNER'
157575                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
157576                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
157577                                                                           ,p_lookup_code    => l_component_type_code
157578                                                                          )
157579                                     ,p_token_4                 => 'PRODUCT_NAME'
157580                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
157581                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
157582                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
157583                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
157584                                     ,p_ae_header_id            =>  NULL
157585                                        );
157586 
157587         IF (C_LEVEL_ERROR>= g_log_level) THEN
157588                  trace
157589                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
157590                       ,p_level    => C_LEVEL_ERROR
157591                       ,p_module   => l_log_module);
157592         END IF;
157593       END IF;
157594    END IF;
157595    --
157596    --
157597    ------------------------------------------------------------------------------------------------
157598    -- 4219869 Business Flow
157599    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
157600    -- Prior Entry.  Currently, the following code is always generated.
157601    ------------------------------------------------------------------------------------------------
157602    XLA_AE_LINES_PKG.ValidateCurrentLine;
157603 
157604    ------------------------------------------------------------------------------------
157605    -- 4219869 Business Flow
157606    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
157607    ------------------------------------------------------------------------------------
157608    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
157609 
157610    ----------------------------------------------------------------------------------
157611    -- 4219869 Business Flow
157612    -- Update journal entry status -- Need to generate this within IF <condition>
157613    ----------------------------------------------------------------------------------
157614    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
157615          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
157616          ,p_balance_type_code => l_balance_type_code
157617          );
157618 
157619    -------------------------------------------------------------------------------------------
157620    -- 4262811 - Generate the Accrual Reversal lines
157621    -------------------------------------------------------------------------------------------
157622    BEGIN
157623       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
157624                               (g_array_event(p_event_id).array_value_num('header_index'));
157625       IF l_acc_rev_flag IS NULL THEN
157626          l_acc_rev_flag := 'N';
157627       END IF;
157628    EXCEPTION
157629       WHEN OTHERS THEN
157630          l_acc_rev_flag := 'N';
157631    END;
157632    --
157633    IF (l_acc_rev_flag = 'Y') THEN
157634 
157635        -- 4645092  ------------------------------------------------------------------------------
157636        -- To allow MPA report to determine if it should generate report process
157637        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
157638        ------------------------------------------------------------------------------------------
157639 
157640        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
157641        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
157642    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
157643    -- call ADRs
157644    -- Bug 4922099
157645    --
157646    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
157647         (NVL(l_actual_upg_option, 'N') = 'O') OR
157648         (NVL(l_enc_upg_option, 'N') = 'O')
157649       )
157650    THEN
157651    NULL;
157652    --
157653    --
157654    
157655   l_ccid := AcctDerRule_6(
157656            p_application_id           => p_application_id
157657          , p_ae_header_id             => l_ae_header_id 
157658 , p_source_11 => p_source_11
157659          , x_transaction_coa_id       => l_adr_transaction_coa_id
157660          , x_accounting_coa_id        => l_adr_accounting_coa_id
157661          , x_value_type_code          => l_adr_value_type_code
157662          , p_side                     => 'NA'
157663    );
157664 
157665    xla_ae_lines_pkg.set_ccid(
157666     p_code_combination_id          => l_ccid
157667   , p_value_type_code              => l_adr_value_type_code
157668   , p_transaction_coa_id           => l_adr_transaction_coa_id
157669   , p_accounting_coa_id            => l_adr_accounting_coa_id
157670   , p_adr_code                     => 'CST_DEFAULT'
157671   , p_adr_type_code                => 'S'
157672   , p_component_type               => l_component_type
157673   , p_component_code               => l_component_code
157674   , p_component_type_code          => l_component_type_code
157675   , p_component_appl_id            => l_component_appl_id
157676   , p_amb_context_code             => l_amb_context_code
157677   , p_side                         => 'NA'
157678   );
157679 
157680 
157681    --
157682    --
157683    END IF;
157684 
157685        --
157686        -- Update the line information that should be overwritten
157687        --
157688        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
157689                                          p_header_num   => 1);
157690        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
157691 
157692        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
157693 
157694        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
157695           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
157696        END IF;
157697 
157698       --
157699       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
157700       --
157701       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
157702           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
157703       ELSE
157704           ---------------------------------------------------------------------------------------------------
157705           -- 4262811a Switch Sign
157706           ---------------------------------------------------------------------------------------------------
157707           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
157708           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
157709                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
157710           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
157711                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
157712           -- 5132302
157713           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
157714                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
157715 
157716       END IF;
157717 
157718       -- 4955764
157719       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
157720       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
157721 
157722 
157723       XLA_AE_LINES_PKG.ValidateCurrentLine;
157724       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
157725 
157726       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
157727                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
157728                ,p_balance_type_code => l_balance_type_code);
157729 
157730    END IF;
157731 
157732    -----------------------------------------------------------------------------------------
157733    -- 4262811 Multiperiod Accounting
157734    -----------------------------------------------------------------------------------------
157735      -- No MPA option is assigned.
157736 
157737 
157738 END IF;
157739 END IF;
157740 --
157741 
157742 --
157743 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157744    trace
157745       (p_msg      => 'END of AcctLineType_293'
157746       ,p_level    => C_LEVEL_PROCEDURE
157747       ,p_module   => l_log_module);
157748 END IF;
157749 --
157750 EXCEPTION
157751   WHEN xla_exceptions_pkg.application_exception THEN
157752       RAISE;
157753   WHEN OTHERS THEN
157754        xla_exceptions_pkg.raise_message
157755            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_293');
157756 END AcctLineType_293;
157757 --
157758 
157759 ---------------------------------------
157760 --
157761 -- PRIVATE FUNCTION
157762 --         AcctLineType_294
157763 --
157764 ---------------------------------------
157765 PROCEDURE AcctLineType_294 (
157766   p_application_id        IN NUMBER
157767  ,p_event_id              IN NUMBER
157768  ,p_calculate_acctd_flag  IN VARCHAR2
157769  ,p_calculate_g_l_flag    IN VARCHAR2
157770  ,p_actual_flag           IN OUT VARCHAR2
157771  ,p_balance_type_code     OUT VARCHAR2
157772  ,p_gain_or_loss_ref      OUT VARCHAR2
157773  
157774 --TRANSACTION_ID
157775  , p_source_1            IN NUMBER
157776 --Item Concatenated Segments
157777  , p_source_2            IN VARCHAR2
157778 --Transaction Quantity
157779  , p_source_3            IN NUMBER
157780 --Transaction Unit of Measure Code
157781  , p_source_4            IN VARCHAR2
157782 --Inventory Transaction Type Description
157783  , p_source_5            IN VARCHAR2
157784 --Cost Management Default Account
157785  , p_source_11            IN NUMBER
157786 --DISTRIBUTION_IDENTIFIER
157787  , p_source_84            IN NUMBER
157788 --Distribution Type
157789  , p_source_85            IN VARCHAR2
157790  , p_source_85_meaning    IN VARCHAR2
157791 --Entered Currency Code
157792  , p_source_88            IN VARCHAR2
157793 --Entered Amount
157794  , p_source_91            IN NUMBER
157795 --Currency Conversion Date
157796  , p_source_92            IN DATE
157797 --Currency Conversion Rate
157798  , p_source_93            IN NUMBER
157799 --Currency Conversion Type
157800  , p_source_94            IN VARCHAR2
157801 --Accounted Amount
157802  , p_source_95            IN NUMBER
157803 --Accounting Line Type
157804  , p_source_97            IN NUMBER
157805 )
157806 IS
157807 
157808 l_component_type              VARCHAR2(80);
157809 l_component_code              VARCHAR2(30);
157810 l_component_type_code         VARCHAR2(1);
157811 l_component_appl_id           INTEGER;
157812 l_amb_context_code            VARCHAR2(30);
157813 l_entity_code                 VARCHAR2(30);
157814 l_event_class_code            VARCHAR2(30);
157815 l_ae_header_id                NUMBER;
157816 l_event_type_code             VARCHAR2(30);
157817 l_line_definition_code        VARCHAR2(30);
157818 l_line_definition_owner_code  VARCHAR2(1);
157819 --
157820 -- adr variables
157821 l_segment                     VARCHAR2(30);
157822 l_ccid                        NUMBER;
157823 l_adr_transaction_coa_id      NUMBER;
157824 l_adr_accounting_coa_id       NUMBER;
157825 l_adr_flexfield_segment_code  VARCHAR2(30);
157826 l_adr_flex_value_set_id       NUMBER;
157827 l_adr_value_type_code         VARCHAR2(30);
157828 l_adr_value_combination_id    NUMBER;
157829 l_adr_value_segment_code      VARCHAR2(30);
157830 
157831 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
157832 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
157833 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
157834 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
157835 
157836 -- 4262811 Variables ------------------------------------------------------------------------------------------
157837 l_entered_amt_idx             NUMBER;
157838 l_accted_amt_idx              NUMBER;
157839 l_acc_rev_flag                VARCHAR2(1);
157840 l_accrual_line_num            NUMBER;
157841 l_tmp_amt                     NUMBER;
157842 l_acc_rev_natural_side_code   VARCHAR2(1);
157843 
157844 l_num_entries                 NUMBER;
157845 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
157846 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
157847 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
157848 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
157849 l_recog_line_1                NUMBER;
157850 l_recog_line_2                NUMBER;
157851 
157852 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
157853 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
157854 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
157855 
157856 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
157857 
157858 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
157859 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
157860 
157861 ---------------------------------------------------------------------------------------------------------------
157862 
157863 
157864 --
157865 -- bulk performance
157866 --
157867 l_balance_type_code           VARCHAR2(1);
157868 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
157869 l_log_module                  VARCHAR2(240);
157870 
157871 --
157872 -- Upgrade strategy
157873 --
157874 l_actual_upg_option           VARCHAR2(1);
157875 l_enc_upg_option           VARCHAR2(1);
157876 
157877 --
157878 BEGIN
157879 --
157880 IF g_log_enabled THEN
157881       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_294';
157882 END IF;
157883 --
157884 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157885 
157886       trace
157887          (p_msg      => 'BEGIN of AcctLineType_294'
157888          ,p_level    => C_LEVEL_PROCEDURE
157889          ,p_module   => l_log_module);
157890 
157891 END IF;
157892 --
157893 l_component_type             := 'AMB_JLT';
157894 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
157895 l_component_type_code        := 'S';
157896 l_component_appl_id          :=  707;
157897 l_amb_context_code           := 'DEFAULT';
157898 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
157899 l_event_class_code           := 'WIP_MTL';
157900 l_event_type_code            := 'WIP_COMP_ISSUE';
157901 l_line_definition_owner_code := 'S';
157902 l_line_definition_code       := 'PI_WIP_COMP_ISSUE';
157903 --
157904 l_balance_type_code          := 'A';
157905 l_segment                     := NULL;
157906 l_ccid                        := NULL;
157907 l_adr_transaction_coa_id      := NULL;
157908 l_adr_accounting_coa_id       := NULL;
157909 l_adr_flexfield_segment_code  := NULL;
157910 l_adr_flex_value_set_id       := NULL;
157911 l_adr_value_type_code         := NULL;
157912 l_adr_value_combination_id    := NULL;
157913 l_adr_value_segment_code      := NULL;
157914 
157915 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
157916 l_bflow_class_code           := '';    -- 4219869 Business Flow
157917 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
157918 l_budgetary_control_flag     := 'N';
157919 
157920 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
157921 l_bflow_applied_to_amt       := NULL; -- 5132302
157922 l_entered_amt_idx            := NULL;          -- 4262811
157923 l_accted_amt_idx             := NULL;          -- 4262811
157924 l_acc_rev_flag               := NULL;          -- 4262811
157925 l_accrual_line_num           := NULL;          -- 4262811
157926 l_tmp_amt                    := NULL;          -- 4262811
157927 --
157928  
157929 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
157930     l_balance_type_code <> 'B' THEN
157931 IF NVL(p_source_97,9E125) =  3
157932  THEN 
157933 
157934    --
157935    XLA_AE_LINES_PKG.SetNewLine;
157936 
157937    p_balance_type_code          := l_balance_type_code;
157938    -- set the flag so later we will know whether the gain loss line needs to be created
157939    
157940    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
157941      p_actual_flag :='A';
157942    END IF;
157943 
157944    --
157945    -- bulk performance
157946    --
157947    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
157948                                       p_header_num   => 0); -- 4262811
157949    --
157950    -- set accounting line options
157951    --
157952    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
157953            p_natural_side_code          => 'D'
157954          , p_gain_or_loss_flag          => 'N'
157955          , p_gl_transfer_mode_code      => 'S'
157956          , p_acct_entry_type_code       => 'A'
157957          , p_switch_side_flag           => 'Y'
157958          , p_merge_duplicate_code       => 'N'
157959          );
157960    --
157961    l_acc_rev_natural_side_code := 'C';  -- 4262811
157962    -- 
157963    --
157964    -- set accounting line type info
157965    --
157966    xla_ae_lines_pkg.SetAcctLineType
157967       (p_component_type             => l_component_type
157968       ,p_event_type_code            => l_event_type_code
157969       ,p_line_definition_owner_code => l_line_definition_owner_code
157970       ,p_line_definition_code       => l_line_definition_code
157971       ,p_accounting_line_code       => l_component_code
157972       ,p_accounting_line_type_code  => l_component_type_code
157973       ,p_accounting_line_appl_id    => l_component_appl_id
157974       ,p_amb_context_code           => l_amb_context_code
157975       ,p_entity_code                => l_entity_code
157976       ,p_event_class_code           => l_event_class_code);
157977    --
157978    -- set accounting class
157979    --
157980    xla_ae_lines_pkg.SetAcctClass(
157981            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
157982          , p_ae_header_id           => l_ae_header_id
157983          );
157984 
157985    --
157986    -- set rounding class
157987    --
157988    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
157989                       'MATERIAL_OVERHEAD_ABSORPTION';
157990 
157991    --
157992    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
157993    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
157994    --
157995    -- bulk performance
157996    --
157997    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
157998 
157999    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
158000       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
158001 
158002    -- 4955764
158003    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
158004       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
158005 
158006    -- 4458381 Public Sector Enh
158007    
158008    --
158009    -- set accounting attributes for the line type
158010    --
158011    l_entered_amt_idx := 3;
158012    l_accted_amt_idx  := 8;
158013    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
158014    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
158015    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
158016    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
158017    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
158018    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
158019    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
158020    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
158021    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
158022    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
158023    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
158024    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
158025    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
158026    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
158027    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
158028    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
158029    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
158030 
158031    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
158032    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
158033 
158034    ---------------------------------------------------------------------------------------------------------------
158035    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
158036    ---------------------------------------------------------------------------------------------------------------
158037    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
158038 
158039    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
158040    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
158041 
158042    IF xla_accounting_cache_pkg.GetValueChar
158043          (p_source_code         => 'LEDGER_CATEGORY_CODE'
158044          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
158045    AND l_bflow_method_code = 'PRIOR_ENTRY'
158046 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
158047    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
158048          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
158049        )
158050    THEN
158051          xla_ae_lines_pkg.BflowUpgEntry
158052            (p_business_method_code    => l_bflow_method_code
158053            ,p_business_class_code     => l_bflow_class_code
158054            ,p_balance_type            => l_balance_type_code);
158055    ELSE
158056       NULL;
158057 -- No business flow processing for business flow method of NONE.
158058    END IF;
158059 
158060    --
158061    -- call analytical criteria
158062    --
158063    
158064    --
158065    -- call description
158066    --
158067    
158068 xla_ae_lines_pkg.SetLineDescription(
158069    p_ae_header_id => l_ae_header_id
158070   ,p_description  => Description_1 (
158071      p_application_id         => p_application_id
158072    , p_ae_header_id           => l_ae_header_id 
158073 , p_source_1 => p_source_1
158074 , p_source_2 => p_source_2
158075 , p_source_3 => p_source_3
158076 , p_source_4 => p_source_4
158077 , p_source_5 => p_source_5
158078    )
158079 );
158080 
158081 
158082    --
158083    -- call ADRs
158084    -- Bug 4922099
158085    --
158086    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
158087         (NVL(l_actual_upg_option, 'N') = 'O') OR
158088         (NVL(l_enc_upg_option, 'N') = 'O')
158089       )
158090    THEN
158091    NULL;
158092    --
158093    --
158094    
158095   l_ccid := AcctDerRule_6(
158096            p_application_id           => p_application_id
158097          , p_ae_header_id             => l_ae_header_id 
158098 , p_source_11 => p_source_11
158099          , x_transaction_coa_id       => l_adr_transaction_coa_id
158100          , x_accounting_coa_id        => l_adr_accounting_coa_id
158101          , x_value_type_code          => l_adr_value_type_code
158102          , p_side                     => 'NA'
158103    );
158104 
158105    xla_ae_lines_pkg.set_ccid(
158106     p_code_combination_id          => l_ccid
158107   , p_value_type_code              => l_adr_value_type_code
158108   , p_transaction_coa_id           => l_adr_transaction_coa_id
158109   , p_accounting_coa_id            => l_adr_accounting_coa_id
158110   , p_adr_code                     => 'CST_DEFAULT'
158111   , p_adr_type_code                => 'S'
158112   , p_component_type               => l_component_type
158113   , p_component_code               => l_component_code
158114   , p_component_type_code          => l_component_type_code
158115   , p_component_appl_id            => l_component_appl_id
158116   , p_amb_context_code             => l_amb_context_code
158117   , p_side                         => 'NA'
158118   );
158119 
158120 
158121    --
158122    --
158123    END IF;
158124    --
158125    -- Bug 4922099
158126    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
158127           (NVL(l_enc_upg_option, 'N') = 'O')
158128         ) AND
158129         (l_bflow_method_code = 'PRIOR_ENTRY')
158130       )
158131    THEN
158132       IF
158133       --
158134       1 = 2
158135       --
158136       THEN
158137       xla_accounting_err_pkg.build_message
158138                                     (p_appli_s_name            => 'XLA'
158139                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
158140                                     ,p_token_1                 => 'LINE_NUMBER'
158141                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
158142                                     ,p_token_2                 => 'LINE_TYPE_NAME'
158143                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
158144                                                                              l_component_type
158145                                                                             ,l_component_code
158146                                                                             ,l_component_type_code
158147                                                                             ,l_component_appl_id
158148                                                                             ,l_amb_context_code
158149                                                                             ,l_entity_code
158150                                                                             ,l_event_class_code
158151                                                                            )
158152                                     ,p_token_3                 => 'OWNER'
158153                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
158154                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
158155                                                                           ,p_lookup_code    => l_component_type_code
158156                                                                          )
158157                                     ,p_token_4                 => 'PRODUCT_NAME'
158158                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
158159                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
158160                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
158161                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
158162                                     ,p_ae_header_id            =>  NULL
158163                                        );
158164 
158165         IF (C_LEVEL_ERROR>= g_log_level) THEN
158166                  trace
158167                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
158168                       ,p_level    => C_LEVEL_ERROR
158169                       ,p_module   => l_log_module);
158170         END IF;
158171       END IF;
158172    END IF;
158173    --
158174    --
158175    ------------------------------------------------------------------------------------------------
158176    -- 4219869 Business Flow
158177    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
158178    -- Prior Entry.  Currently, the following code is always generated.
158179    ------------------------------------------------------------------------------------------------
158180    XLA_AE_LINES_PKG.ValidateCurrentLine;
158181 
158182    ------------------------------------------------------------------------------------
158183    -- 4219869 Business Flow
158184    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
158185    ------------------------------------------------------------------------------------
158186    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
158187 
158188    ----------------------------------------------------------------------------------
158189    -- 4219869 Business Flow
158190    -- Update journal entry status -- Need to generate this within IF <condition>
158191    ----------------------------------------------------------------------------------
158192    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
158193          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
158194          ,p_balance_type_code => l_balance_type_code
158195          );
158196 
158197    -------------------------------------------------------------------------------------------
158198    -- 4262811 - Generate the Accrual Reversal lines
158199    -------------------------------------------------------------------------------------------
158200    BEGIN
158201       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
158202                               (g_array_event(p_event_id).array_value_num('header_index'));
158203       IF l_acc_rev_flag IS NULL THEN
158204          l_acc_rev_flag := 'N';
158205       END IF;
158206    EXCEPTION
158207       WHEN OTHERS THEN
158208          l_acc_rev_flag := 'N';
158209    END;
158210    --
158211    IF (l_acc_rev_flag = 'Y') THEN
158212 
158213        -- 4645092  ------------------------------------------------------------------------------
158214        -- To allow MPA report to determine if it should generate report process
158215        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
158216        ------------------------------------------------------------------------------------------
158217 
158218        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
158219        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
158220    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
158221    -- call ADRs
158222    -- Bug 4922099
158223    --
158224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
158225         (NVL(l_actual_upg_option, 'N') = 'O') OR
158226         (NVL(l_enc_upg_option, 'N') = 'O')
158227       )
158228    THEN
158229    NULL;
158230    --
158231    --
158232    
158233   l_ccid := AcctDerRule_6(
158234            p_application_id           => p_application_id
158235          , p_ae_header_id             => l_ae_header_id 
158236 , p_source_11 => p_source_11
158237          , x_transaction_coa_id       => l_adr_transaction_coa_id
158238          , x_accounting_coa_id        => l_adr_accounting_coa_id
158239          , x_value_type_code          => l_adr_value_type_code
158240          , p_side                     => 'NA'
158241    );
158242 
158243    xla_ae_lines_pkg.set_ccid(
158244     p_code_combination_id          => l_ccid
158245   , p_value_type_code              => l_adr_value_type_code
158246   , p_transaction_coa_id           => l_adr_transaction_coa_id
158247   , p_accounting_coa_id            => l_adr_accounting_coa_id
158248   , p_adr_code                     => 'CST_DEFAULT'
158249   , p_adr_type_code                => 'S'
158250   , p_component_type               => l_component_type
158251   , p_component_code               => l_component_code
158252   , p_component_type_code          => l_component_type_code
158253   , p_component_appl_id            => l_component_appl_id
158254   , p_amb_context_code             => l_amb_context_code
158255   , p_side                         => 'NA'
158256   );
158257 
158258 
158259    --
158260    --
158261    END IF;
158262 
158263        --
158264        -- Update the line information that should be overwritten
158265        --
158266        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
158267                                          p_header_num   => 1);
158268        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
158269 
158270        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
158271 
158272        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
158273           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
158274        END IF;
158275 
158276       --
158277       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
158278       --
158279       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
158280           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
158281       ELSE
158282           ---------------------------------------------------------------------------------------------------
158283           -- 4262811a Switch Sign
158284           ---------------------------------------------------------------------------------------------------
158285           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
158286           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
158287                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
158288           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
158289                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
158290           -- 5132302
158291           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
158292                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
158293 
158294       END IF;
158295 
158296       -- 4955764
158297       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
158298       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
158299 
158300 
158301       XLA_AE_LINES_PKG.ValidateCurrentLine;
158302       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
158303 
158304       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
158305                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
158306                ,p_balance_type_code => l_balance_type_code);
158307 
158308    END IF;
158309 
158310    -----------------------------------------------------------------------------------------
158311    -- 4262811 Multiperiod Accounting
158312    -----------------------------------------------------------------------------------------
158313      -- No MPA option is assigned.
158314 
158315 
158316 END IF;
158317 END IF;
158318 --
158319 
158320 --
158321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158322    trace
158323       (p_msg      => 'END of AcctLineType_294'
158324       ,p_level    => C_LEVEL_PROCEDURE
158325       ,p_module   => l_log_module);
158326 END IF;
158327 --
158328 EXCEPTION
158329   WHEN xla_exceptions_pkg.application_exception THEN
158330       RAISE;
158331   WHEN OTHERS THEN
158332        xla_exceptions_pkg.raise_message
158333            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_294');
158334 END AcctLineType_294;
158335 --
158336 
158337 ---------------------------------------
158338 --
158339 -- PRIVATE FUNCTION
158340 --         AcctLineType_295
158341 --
158342 ---------------------------------------
158343 PROCEDURE AcctLineType_295 (
158344   p_application_id        IN NUMBER
158345  ,p_event_id              IN NUMBER
158346  ,p_calculate_acctd_flag  IN VARCHAR2
158347  ,p_calculate_g_l_flag    IN VARCHAR2
158348  ,p_actual_flag           IN OUT VARCHAR2
158349  ,p_balance_type_code     OUT VARCHAR2
158350  ,p_gain_or_loss_ref      OUT VARCHAR2
158351  
158352 --TRANSACTION_ID
158353  , p_source_1            IN NUMBER
158354 --Item Concatenated Segments
158355  , p_source_2            IN VARCHAR2
158356 --Transaction Quantity
158357  , p_source_3            IN NUMBER
158358 --Transaction Unit of Measure Code
158359  , p_source_4            IN VARCHAR2
158360 --Inventory Transaction Type Description
158361  , p_source_5            IN VARCHAR2
158362 --Cost Management Default Account
158363  , p_source_11            IN NUMBER
158364 --DISTRIBUTION_IDENTIFIER
158365  , p_source_84            IN NUMBER
158366 --Distribution Type
158367  , p_source_85            IN VARCHAR2
158368  , p_source_85_meaning    IN VARCHAR2
158369 --Entered Currency Code
158370  , p_source_88            IN VARCHAR2
158371 --Entered Amount
158372  , p_source_91            IN NUMBER
158373 --Currency Conversion Date
158374  , p_source_92            IN DATE
158375 --Currency Conversion Rate
158376  , p_source_93            IN NUMBER
158377 --Currency Conversion Type
158378  , p_source_94            IN VARCHAR2
158379 --Accounted Amount
158380  , p_source_95            IN NUMBER
158381 --Accounting Line Type
158382  , p_source_97            IN NUMBER
158383 )
158384 IS
158385 
158386 l_component_type              VARCHAR2(80);
158387 l_component_code              VARCHAR2(30);
158388 l_component_type_code         VARCHAR2(1);
158389 l_component_appl_id           INTEGER;
158390 l_amb_context_code            VARCHAR2(30);
158391 l_entity_code                 VARCHAR2(30);
158392 l_event_class_code            VARCHAR2(30);
158393 l_ae_header_id                NUMBER;
158394 l_event_type_code             VARCHAR2(30);
158395 l_line_definition_code        VARCHAR2(30);
158396 l_line_definition_owner_code  VARCHAR2(1);
158397 --
158398 -- adr variables
158399 l_segment                     VARCHAR2(30);
158400 l_ccid                        NUMBER;
158401 l_adr_transaction_coa_id      NUMBER;
158402 l_adr_accounting_coa_id       NUMBER;
158403 l_adr_flexfield_segment_code  VARCHAR2(30);
158404 l_adr_flex_value_set_id       NUMBER;
158405 l_adr_value_type_code         VARCHAR2(30);
158406 l_adr_value_combination_id    NUMBER;
158407 l_adr_value_segment_code      VARCHAR2(30);
158408 
158409 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
158410 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
158411 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
158412 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
158413 
158414 -- 4262811 Variables ------------------------------------------------------------------------------------------
158415 l_entered_amt_idx             NUMBER;
158416 l_accted_amt_idx              NUMBER;
158417 l_acc_rev_flag                VARCHAR2(1);
158418 l_accrual_line_num            NUMBER;
158419 l_tmp_amt                     NUMBER;
158420 l_acc_rev_natural_side_code   VARCHAR2(1);
158421 
158422 l_num_entries                 NUMBER;
158423 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
158424 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
158425 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
158426 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
158427 l_recog_line_1                NUMBER;
158428 l_recog_line_2                NUMBER;
158429 
158430 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
158431 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
158432 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
158433 
158434 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
158435 
158436 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
158437 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
158438 
158439 ---------------------------------------------------------------------------------------------------------------
158440 
158441 
158442 --
158443 -- bulk performance
158444 --
158445 l_balance_type_code           VARCHAR2(1);
158446 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
158447 l_log_module                  VARCHAR2(240);
158448 
158449 --
158450 -- Upgrade strategy
158451 --
158452 l_actual_upg_option           VARCHAR2(1);
158453 l_enc_upg_option           VARCHAR2(1);
158454 
158455 --
158456 BEGIN
158457 --
158458 IF g_log_enabled THEN
158459       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_295';
158460 END IF;
158461 --
158462 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158463 
158464       trace
158465          (p_msg      => 'BEGIN of AcctLineType_295'
158466          ,p_level    => C_LEVEL_PROCEDURE
158467          ,p_module   => l_log_module);
158468 
158469 END IF;
158470 --
158471 l_component_type             := 'AMB_JLT';
158472 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
158473 l_component_type_code        := 'S';
158474 l_component_appl_id          :=  707;
158475 l_amb_context_code           := 'DEFAULT';
158476 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
158477 l_event_class_code           := 'CON_INV_OWNR_TXFR';
158478 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
158479 l_line_definition_owner_code := 'S';
158480 l_line_definition_code       := 'PI_CON_INV_OWNR_TRFR';
158481 --
158482 l_balance_type_code          := 'A';
158483 l_segment                     := NULL;
158484 l_ccid                        := NULL;
158485 l_adr_transaction_coa_id      := NULL;
158486 l_adr_accounting_coa_id       := NULL;
158487 l_adr_flexfield_segment_code  := NULL;
158488 l_adr_flex_value_set_id       := NULL;
158489 l_adr_value_type_code         := NULL;
158490 l_adr_value_combination_id    := NULL;
158491 l_adr_value_segment_code      := NULL;
158492 
158493 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
158494 l_bflow_class_code           := '';    -- 4219869 Business Flow
158495 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
158496 l_budgetary_control_flag     := 'N';
158497 
158498 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
158499 l_bflow_applied_to_amt       := NULL; -- 5132302
158500 l_entered_amt_idx            := NULL;          -- 4262811
158501 l_accted_amt_idx             := NULL;          -- 4262811
158502 l_acc_rev_flag               := NULL;          -- 4262811
158503 l_accrual_line_num           := NULL;          -- 4262811
158504 l_tmp_amt                    := NULL;          -- 4262811
158505 --
158506  
158507 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
158508     l_balance_type_code <> 'B' THEN
158509 IF NVL(p_source_97,9E125) =  3
158510  THEN 
158511 
158512    --
158513    XLA_AE_LINES_PKG.SetNewLine;
158514 
158515    p_balance_type_code          := l_balance_type_code;
158516    -- set the flag so later we will know whether the gain loss line needs to be created
158517    
158518    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
158519      p_actual_flag :='A';
158520    END IF;
158521 
158522    --
158523    -- bulk performance
158524    --
158525    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
158526                                       p_header_num   => 0); -- 4262811
158527    --
158528    -- set accounting line options
158529    --
158530    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
158531            p_natural_side_code          => 'D'
158532          , p_gain_or_loss_flag          => 'N'
158533          , p_gl_transfer_mode_code      => 'S'
158534          , p_acct_entry_type_code       => 'A'
158535          , p_switch_side_flag           => 'Y'
158536          , p_merge_duplicate_code       => 'N'
158537          );
158538    --
158539    l_acc_rev_natural_side_code := 'C';  -- 4262811
158540    -- 
158541    --
158542    -- set accounting line type info
158543    --
158544    xla_ae_lines_pkg.SetAcctLineType
158545       (p_component_type             => l_component_type
158546       ,p_event_type_code            => l_event_type_code
158547       ,p_line_definition_owner_code => l_line_definition_owner_code
158548       ,p_line_definition_code       => l_line_definition_code
158549       ,p_accounting_line_code       => l_component_code
158550       ,p_accounting_line_type_code  => l_component_type_code
158551       ,p_accounting_line_appl_id    => l_component_appl_id
158552       ,p_amb_context_code           => l_amb_context_code
158553       ,p_entity_code                => l_entity_code
158554       ,p_event_class_code           => l_event_class_code);
158555    --
158556    -- set accounting class
158557    --
158558    xla_ae_lines_pkg.SetAcctClass(
158559            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
158560          , p_ae_header_id           => l_ae_header_id
158561          );
158562 
158563    --
158564    -- set rounding class
158565    --
158566    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
158567                       'MATERIAL_OVERHEAD_ABSORPTION';
158568 
158569    --
158570    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
158571    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
158572    --
158573    -- bulk performance
158574    --
158575    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
158576 
158577    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
158578       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
158579 
158580    -- 4955764
158581    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
158582       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
158583 
158584    -- 4458381 Public Sector Enh
158585    
158586    --
158587    -- set accounting attributes for the line type
158588    --
158589    l_entered_amt_idx := 3;
158590    l_accted_amt_idx  := 8;
158591    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
158592    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
158593    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
158594    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
158595    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
158596    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
158597    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
158598    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
158599    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
158600    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
158601    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
158602    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
158603    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
158604    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
158605    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
158606    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
158607    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
158608 
158609    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
158610    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
158611 
158612    ---------------------------------------------------------------------------------------------------------------
158613    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
158614    ---------------------------------------------------------------------------------------------------------------
158615    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
158616 
158617    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
158618    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
158619 
158620    IF xla_accounting_cache_pkg.GetValueChar
158621          (p_source_code         => 'LEDGER_CATEGORY_CODE'
158622          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
158623    AND l_bflow_method_code = 'PRIOR_ENTRY'
158624 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
158625    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
158626          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
158627        )
158628    THEN
158629          xla_ae_lines_pkg.BflowUpgEntry
158630            (p_business_method_code    => l_bflow_method_code
158631            ,p_business_class_code     => l_bflow_class_code
158632            ,p_balance_type            => l_balance_type_code);
158633    ELSE
158634       NULL;
158635 -- No business flow processing for business flow method of NONE.
158636    END IF;
158637 
158638    --
158639    -- call analytical criteria
158640    --
158641    
158642    --
158643    -- call description
158644    --
158645    
158646 xla_ae_lines_pkg.SetLineDescription(
158647    p_ae_header_id => l_ae_header_id
158648   ,p_description  => Description_1 (
158649      p_application_id         => p_application_id
158650    , p_ae_header_id           => l_ae_header_id 
158651 , p_source_1 => p_source_1
158652 , p_source_2 => p_source_2
158653 , p_source_3 => p_source_3
158654 , p_source_4 => p_source_4
158655 , p_source_5 => p_source_5
158656    )
158657 );
158658 
158659 
158660    --
158661    -- call ADRs
158662    -- Bug 4922099
158663    --
158664    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
158665         (NVL(l_actual_upg_option, 'N') = 'O') OR
158666         (NVL(l_enc_upg_option, 'N') = 'O')
158667       )
158668    THEN
158669    NULL;
158670    --
158671    --
158672    
158673   l_ccid := AcctDerRule_6(
158674            p_application_id           => p_application_id
158675          , p_ae_header_id             => l_ae_header_id 
158676 , p_source_11 => p_source_11
158677          , x_transaction_coa_id       => l_adr_transaction_coa_id
158678          , x_accounting_coa_id        => l_adr_accounting_coa_id
158679          , x_value_type_code          => l_adr_value_type_code
158680          , p_side                     => 'NA'
158681    );
158682 
158683    xla_ae_lines_pkg.set_ccid(
158684     p_code_combination_id          => l_ccid
158685   , p_value_type_code              => l_adr_value_type_code
158686   , p_transaction_coa_id           => l_adr_transaction_coa_id
158687   , p_accounting_coa_id            => l_adr_accounting_coa_id
158688   , p_adr_code                     => 'CST_DEFAULT'
158689   , p_adr_type_code                => 'S'
158690   , p_component_type               => l_component_type
158691   , p_component_code               => l_component_code
158692   , p_component_type_code          => l_component_type_code
158693   , p_component_appl_id            => l_component_appl_id
158694   , p_amb_context_code             => l_amb_context_code
158695   , p_side                         => 'NA'
158696   );
158697 
158698 
158699    --
158700    --
158701    END IF;
158702    --
158703    -- Bug 4922099
158704    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
158705           (NVL(l_enc_upg_option, 'N') = 'O')
158706         ) AND
158707         (l_bflow_method_code = 'PRIOR_ENTRY')
158708       )
158709    THEN
158710       IF
158711       --
158712       1 = 2
158713       --
158714       THEN
158715       xla_accounting_err_pkg.build_message
158716                                     (p_appli_s_name            => 'XLA'
158717                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
158718                                     ,p_token_1                 => 'LINE_NUMBER'
158719                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
158720                                     ,p_token_2                 => 'LINE_TYPE_NAME'
158721                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
158722                                                                              l_component_type
158723                                                                             ,l_component_code
158724                                                                             ,l_component_type_code
158725                                                                             ,l_component_appl_id
158726                                                                             ,l_amb_context_code
158727                                                                             ,l_entity_code
158728                                                                             ,l_event_class_code
158729                                                                            )
158730                                     ,p_token_3                 => 'OWNER'
158731                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
158732                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
158733                                                                           ,p_lookup_code    => l_component_type_code
158734                                                                          )
158735                                     ,p_token_4                 => 'PRODUCT_NAME'
158736                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
158737                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
158738                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
158739                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
158740                                     ,p_ae_header_id            =>  NULL
158741                                        );
158742 
158743         IF (C_LEVEL_ERROR>= g_log_level) THEN
158744                  trace
158745                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
158746                       ,p_level    => C_LEVEL_ERROR
158747                       ,p_module   => l_log_module);
158748         END IF;
158749       END IF;
158750    END IF;
158751    --
158752    --
158753    ------------------------------------------------------------------------------------------------
158754    -- 4219869 Business Flow
158755    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
158756    -- Prior Entry.  Currently, the following code is always generated.
158757    ------------------------------------------------------------------------------------------------
158758    XLA_AE_LINES_PKG.ValidateCurrentLine;
158759 
158760    ------------------------------------------------------------------------------------
158761    -- 4219869 Business Flow
158762    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
158763    ------------------------------------------------------------------------------------
158764    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
158765 
158766    ----------------------------------------------------------------------------------
158767    -- 4219869 Business Flow
158768    -- Update journal entry status -- Need to generate this within IF <condition>
158769    ----------------------------------------------------------------------------------
158770    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
158771          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
158772          ,p_balance_type_code => l_balance_type_code
158773          );
158774 
158775    -------------------------------------------------------------------------------------------
158776    -- 4262811 - Generate the Accrual Reversal lines
158777    -------------------------------------------------------------------------------------------
158778    BEGIN
158779       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
158780                               (g_array_event(p_event_id).array_value_num('header_index'));
158781       IF l_acc_rev_flag IS NULL THEN
158782          l_acc_rev_flag := 'N';
158783       END IF;
158784    EXCEPTION
158785       WHEN OTHERS THEN
158786          l_acc_rev_flag := 'N';
158787    END;
158788    --
158789    IF (l_acc_rev_flag = 'Y') THEN
158790 
158791        -- 4645092  ------------------------------------------------------------------------------
158792        -- To allow MPA report to determine if it should generate report process
158793        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
158794        ------------------------------------------------------------------------------------------
158795 
158796        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
158797        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
158798    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
158799    -- call ADRs
158800    -- Bug 4922099
158801    --
158802    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
158803         (NVL(l_actual_upg_option, 'N') = 'O') OR
158804         (NVL(l_enc_upg_option, 'N') = 'O')
158805       )
158806    THEN
158807    NULL;
158808    --
158809    --
158810    
158811   l_ccid := AcctDerRule_6(
158812            p_application_id           => p_application_id
158813          , p_ae_header_id             => l_ae_header_id 
158814 , p_source_11 => p_source_11
158815          , x_transaction_coa_id       => l_adr_transaction_coa_id
158816          , x_accounting_coa_id        => l_adr_accounting_coa_id
158817          , x_value_type_code          => l_adr_value_type_code
158818          , p_side                     => 'NA'
158819    );
158820 
158821    xla_ae_lines_pkg.set_ccid(
158822     p_code_combination_id          => l_ccid
158823   , p_value_type_code              => l_adr_value_type_code
158824   , p_transaction_coa_id           => l_adr_transaction_coa_id
158825   , p_accounting_coa_id            => l_adr_accounting_coa_id
158826   , p_adr_code                     => 'CST_DEFAULT'
158827   , p_adr_type_code                => 'S'
158828   , p_component_type               => l_component_type
158829   , p_component_code               => l_component_code
158830   , p_component_type_code          => l_component_type_code
158831   , p_component_appl_id            => l_component_appl_id
158832   , p_amb_context_code             => l_amb_context_code
158833   , p_side                         => 'NA'
158834   );
158835 
158836 
158837    --
158838    --
158839    END IF;
158840 
158841        --
158842        -- Update the line information that should be overwritten
158843        --
158844        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
158845                                          p_header_num   => 1);
158846        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
158847 
158848        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
158849 
158850        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
158851           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
158852        END IF;
158853 
158854       --
158855       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
158856       --
158857       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
158858           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
158859       ELSE
158860           ---------------------------------------------------------------------------------------------------
158861           -- 4262811a Switch Sign
158862           ---------------------------------------------------------------------------------------------------
158863           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
158864           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
158865                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
158866           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
158867                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
158868           -- 5132302
158869           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
158870                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
158871 
158872       END IF;
158873 
158874       -- 4955764
158875       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
158876       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
158877 
158878 
158879       XLA_AE_LINES_PKG.ValidateCurrentLine;
158880       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
158881 
158882       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
158883                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
158884                ,p_balance_type_code => l_balance_type_code);
158885 
158886    END IF;
158887 
158888    -----------------------------------------------------------------------------------------
158889    -- 4262811 Multiperiod Accounting
158890    -----------------------------------------------------------------------------------------
158891      -- No MPA option is assigned.
158892 
158893 
158894 END IF;
158895 END IF;
158896 --
158897 
158898 --
158899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158900    trace
158901       (p_msg      => 'END of AcctLineType_295'
158902       ,p_level    => C_LEVEL_PROCEDURE
158903       ,p_module   => l_log_module);
158904 END IF;
158905 --
158906 EXCEPTION
158907   WHEN xla_exceptions_pkg.application_exception THEN
158908       RAISE;
158909   WHEN OTHERS THEN
158910        xla_exceptions_pkg.raise_message
158911            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_295');
158912 END AcctLineType_295;
158913 --
158914 
158915 ---------------------------------------
158916 --
158917 -- PRIVATE FUNCTION
158918 --         AcctLineType_296
158919 --
158920 ---------------------------------------
158921 PROCEDURE AcctLineType_296 (
158922   p_application_id        IN NUMBER
158923  ,p_event_id              IN NUMBER
158924  ,p_calculate_acctd_flag  IN VARCHAR2
158925  ,p_calculate_g_l_flag    IN VARCHAR2
158926  ,p_actual_flag           IN OUT VARCHAR2
158927  ,p_balance_type_code     OUT VARCHAR2
158928  ,p_gain_or_loss_ref      OUT VARCHAR2
158929  
158930 --TRANSACTION_ID
158931  , p_source_1            IN NUMBER
158932 --Item Concatenated Segments
158933  , p_source_2            IN VARCHAR2
158934 --Transaction Quantity
158935  , p_source_3            IN NUMBER
158936 --Transaction Unit of Measure Code
158937  , p_source_4            IN VARCHAR2
158938 --Inventory Transaction Type Description
158939  , p_source_5            IN VARCHAR2
158940 --Cost Management Default Account
158941  , p_source_11            IN NUMBER
158942 --Applied to Application ID
158943  , p_source_79            IN NUMBER
158944 --Applied to Distribution Link Type
158945  , p_source_80            IN VARCHAR2
158946 --Applied to Entity Code
158947  , p_source_81            IN VARCHAR2
158948 --DISTRIBUTION_IDENTIFIER
158949  , p_source_84            IN NUMBER
158950 --Distribution Type
158951  , p_source_85            IN VARCHAR2
158952  , p_source_85_meaning    IN VARCHAR2
158953 --Encumbrance Reversal Amount Entered
158954  , p_source_87            IN NUMBER
158955 --Entered Currency Code
158956  , p_source_88            IN VARCHAR2
158957 --Transaction Encumbrance Reversal Amount
158958  , p_source_89            IN NUMBER
158959 --Entered Amount
158960  , p_source_91            IN NUMBER
158961 --Currency Conversion Date
158962  , p_source_92            IN DATE
158963 --Currency Conversion Rate
158964  , p_source_93            IN NUMBER
158965 --Currency Conversion Type
158966  , p_source_94            IN VARCHAR2
158967 --Accounted Amount
158968  , p_source_95            IN NUMBER
158969 --Accounting Line Type
158970  , p_source_97            IN NUMBER
158971 --Costing Encumbrance Upgrade Option
158972  , p_source_100            IN VARCHAR2
158973 --TXN_PO_DISTRIBUTION_ID
158974  , p_source_101            IN NUMBER
158975 --TXN_PO_HEADER_ID
158976  , p_source_102            IN NUMBER
158977 --Requisition Budget Account
158978  , p_source_103            IN NUMBER
158979 --Requisition Encumbrance Type Identifier
158980  , p_source_104            IN NUMBER
158981 )
158982 IS
158983 
158984 l_component_type              VARCHAR2(80);
158985 l_component_code              VARCHAR2(30);
158986 l_component_type_code         VARCHAR2(1);
158987 l_component_appl_id           INTEGER;
158988 l_amb_context_code            VARCHAR2(30);
158989 l_entity_code                 VARCHAR2(30);
158990 l_event_class_code            VARCHAR2(30);
158991 l_ae_header_id                NUMBER;
158992 l_event_type_code             VARCHAR2(30);
158993 l_line_definition_code        VARCHAR2(30);
158994 l_line_definition_owner_code  VARCHAR2(1);
158995 --
158996 -- adr variables
158997 l_segment                     VARCHAR2(30);
158998 l_ccid                        NUMBER;
158999 l_adr_transaction_coa_id      NUMBER;
159000 l_adr_accounting_coa_id       NUMBER;
159001 l_adr_flexfield_segment_code  VARCHAR2(30);
159002 l_adr_flex_value_set_id       NUMBER;
159003 l_adr_value_type_code         VARCHAR2(30);
159004 l_adr_value_combination_id    NUMBER;
159005 l_adr_value_segment_code      VARCHAR2(30);
159006 
159007 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
159008 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
159009 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
159010 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
159011 
159012 -- 4262811 Variables ------------------------------------------------------------------------------------------
159013 l_entered_amt_idx             NUMBER;
159014 l_accted_amt_idx              NUMBER;
159015 l_acc_rev_flag                VARCHAR2(1);
159016 l_accrual_line_num            NUMBER;
159017 l_tmp_amt                     NUMBER;
159018 l_acc_rev_natural_side_code   VARCHAR2(1);
159019 
159020 l_num_entries                 NUMBER;
159021 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
159022 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
159023 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
159024 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
159025 l_recog_line_1                NUMBER;
159026 l_recog_line_2                NUMBER;
159027 
159028 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
159029 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
159030 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
159031 
159032 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
159033 
159034 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
159035 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
159036 
159037 ---------------------------------------------------------------------------------------------------------------
159038 
159039 
159040 --
159041 -- bulk performance
159042 --
159043 l_balance_type_code           VARCHAR2(1);
159044 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
159045 l_log_module                  VARCHAR2(240);
159046 
159047 --
159048 -- Upgrade strategy
159049 --
159050 l_actual_upg_option           VARCHAR2(1);
159051 l_enc_upg_option           VARCHAR2(1);
159052 
159053 --
159054 BEGIN
159055 --
159056 IF g_log_enabled THEN
159057       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_296';
159058 END IF;
159059 --
159060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159061 
159062       trace
159063          (p_msg      => 'BEGIN of AcctLineType_296'
159064          ,p_level    => C_LEVEL_PROCEDURE
159065          ,p_module   => l_log_module);
159066 
159067 END IF;
159068 --
159069 l_component_type             := 'AMB_JLT';
159070 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
159071 l_component_type_code        := 'S';
159072 l_component_appl_id          :=  707;
159073 l_amb_context_code           := 'DEFAULT';
159074 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
159075 l_event_class_code           := 'DIR_INTERORG_RCPT';
159076 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
159077 l_line_definition_owner_code := 'S';
159078 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
159079 --
159080 l_balance_type_code          := 'A';
159081 l_segment                     := NULL;
159082 l_ccid                        := NULL;
159083 l_adr_transaction_coa_id      := NULL;
159084 l_adr_accounting_coa_id       := NULL;
159085 l_adr_flexfield_segment_code  := NULL;
159086 l_adr_flex_value_set_id       := NULL;
159087 l_adr_value_type_code         := NULL;
159088 l_adr_value_combination_id    := NULL;
159089 l_adr_value_segment_code      := NULL;
159090 
159091 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
159092 l_bflow_class_code           := '';    -- 4219869 Business Flow
159093 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
159094 l_budgetary_control_flag     := 'N';
159095 
159096 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
159097 l_bflow_applied_to_amt       := NULL; -- 5132302
159098 l_entered_amt_idx            := NULL;          -- 4262811
159099 l_accted_amt_idx             := NULL;          -- 4262811
159100 l_acc_rev_flag               := NULL;          -- 4262811
159101 l_accrual_line_num           := NULL;          -- 4262811
159102 l_tmp_amt                    := NULL;          -- 4262811
159103 --
159104  
159105 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
159106     l_balance_type_code <> 'B' THEN
159107 IF NVL(p_source_97,9E125) =  3
159108  THEN 
159109 
159110    --
159111    XLA_AE_LINES_PKG.SetNewLine;
159112 
159113    p_balance_type_code          := l_balance_type_code;
159114    -- set the flag so later we will know whether the gain loss line needs to be created
159115    
159116    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
159117      p_actual_flag :='A';
159118    END IF;
159119 
159120    --
159121    -- bulk performance
159122    --
159123    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
159124                                       p_header_num   => 0); -- 4262811
159125    --
159126    -- set accounting line options
159127    --
159128    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
159129            p_natural_side_code          => 'D'
159130          , p_gain_or_loss_flag          => 'N'
159131          , p_gl_transfer_mode_code      => 'S'
159132          , p_acct_entry_type_code       => 'A'
159133          , p_switch_side_flag           => 'Y'
159134          , p_merge_duplicate_code       => 'N'
159135          );
159136    --
159137    l_acc_rev_natural_side_code := 'C';  -- 4262811
159138    -- 
159139    --
159140    -- set accounting line type info
159141    --
159142    xla_ae_lines_pkg.SetAcctLineType
159143       (p_component_type             => l_component_type
159144       ,p_event_type_code            => l_event_type_code
159145       ,p_line_definition_owner_code => l_line_definition_owner_code
159146       ,p_line_definition_code       => l_line_definition_code
159147       ,p_accounting_line_code       => l_component_code
159148       ,p_accounting_line_type_code  => l_component_type_code
159149       ,p_accounting_line_appl_id    => l_component_appl_id
159150       ,p_amb_context_code           => l_amb_context_code
159151       ,p_entity_code                => l_entity_code
159152       ,p_event_class_code           => l_event_class_code);
159153    --
159154    -- set accounting class
159155    --
159156    xla_ae_lines_pkg.SetAcctClass(
159157            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
159158          , p_ae_header_id           => l_ae_header_id
159159          );
159160 
159161    --
159162    -- set rounding class
159163    --
159164    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
159165                       'MATERIAL_OVERHEAD_ABSORPTION';
159166 
159167    --
159168    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
159169    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
159170    --
159171    -- bulk performance
159172    --
159173    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
159174 
159175    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
159176       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
159177 
159178    -- 4955764
159179    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
159180       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
159181 
159182    -- 4458381 Public Sector Enh
159183    
159184    --
159185    -- set accounting attributes for the line type
159186    --
159187    l_entered_amt_idx := 17;
159188    l_accted_amt_idx  := 22;
159189    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
159190    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
159191    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
159192    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
159193    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
159194    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
159195    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
159196    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
159197    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
159198    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
159199    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
159200    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
159201    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
159202    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
159203    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
159204    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
159205    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
159206    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
159207    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
159208    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
159209    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
159210    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
159211    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
159212    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
159213    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
159214    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
159215    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
159216    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
159217    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
159218    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
159219    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
159220    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
159221    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
159222    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
159223    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
159224    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
159225    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
159226    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
159227    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
159228    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
159229    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
159230    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
159231    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
159232    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
159233    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
159234    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
159235    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
159236    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
159237    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
159238 
159239    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
159240    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
159241 
159242    ---------------------------------------------------------------------------------------------------------------
159243    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
159244    ---------------------------------------------------------------------------------------------------------------
159245    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
159246 
159247    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
159248    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
159249 
159250    IF xla_accounting_cache_pkg.GetValueChar
159251          (p_source_code         => 'LEDGER_CATEGORY_CODE'
159252          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
159253    AND l_bflow_method_code = 'PRIOR_ENTRY'
159254 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
159255    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
159256          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
159257        )
159258    THEN
159259          xla_ae_lines_pkg.BflowUpgEntry
159260            (p_business_method_code    => l_bflow_method_code
159261            ,p_business_class_code     => l_bflow_class_code
159262            ,p_balance_type            => l_balance_type_code);
159263    ELSE
159264       NULL;
159265 -- No business flow processing for business flow method of NONE.
159266    END IF;
159267 
159268    --
159269    -- call analytical criteria
159270    --
159271    
159272    --
159273    -- call description
159274    --
159275    
159276 xla_ae_lines_pkg.SetLineDescription(
159277    p_ae_header_id => l_ae_header_id
159278   ,p_description  => Description_1 (
159279      p_application_id         => p_application_id
159280    , p_ae_header_id           => l_ae_header_id 
159281 , p_source_1 => p_source_1
159282 , p_source_2 => p_source_2
159283 , p_source_3 => p_source_3
159284 , p_source_4 => p_source_4
159285 , p_source_5 => p_source_5
159286    )
159287 );
159288 
159289 
159290    --
159291    -- call ADRs
159292    -- Bug 4922099
159293    --
159294    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
159295         (NVL(l_actual_upg_option, 'N') = 'O') OR
159296         (NVL(l_enc_upg_option, 'N') = 'O')
159297       )
159298    THEN
159299    NULL;
159300    --
159301    --
159302    
159303   l_ccid := AcctDerRule_6(
159304            p_application_id           => p_application_id
159305          , p_ae_header_id             => l_ae_header_id 
159306 , p_source_11 => p_source_11
159307          , x_transaction_coa_id       => l_adr_transaction_coa_id
159308          , x_accounting_coa_id        => l_adr_accounting_coa_id
159309          , x_value_type_code          => l_adr_value_type_code
159310          , p_side                     => 'NA'
159311    );
159312 
159313    xla_ae_lines_pkg.set_ccid(
159314     p_code_combination_id          => l_ccid
159315   , p_value_type_code              => l_adr_value_type_code
159316   , p_transaction_coa_id           => l_adr_transaction_coa_id
159317   , p_accounting_coa_id            => l_adr_accounting_coa_id
159318   , p_adr_code                     => 'CST_DEFAULT'
159319   , p_adr_type_code                => 'S'
159320   , p_component_type               => l_component_type
159321   , p_component_code               => l_component_code
159322   , p_component_type_code          => l_component_type_code
159323   , p_component_appl_id            => l_component_appl_id
159324   , p_amb_context_code             => l_amb_context_code
159325   , p_side                         => 'NA'
159326   );
159327 
159328 
159329    --
159330    --
159331    END IF;
159332    --
159333    -- Bug 4922099
159334    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
159335           (NVL(l_enc_upg_option, 'N') = 'O')
159336         ) AND
159337         (l_bflow_method_code = 'PRIOR_ENTRY')
159338       )
159339    THEN
159340       IF
159341       --
159342       1 = 2
159343       --
159344       THEN
159345       xla_accounting_err_pkg.build_message
159346                                     (p_appli_s_name            => 'XLA'
159347                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
159348                                     ,p_token_1                 => 'LINE_NUMBER'
159349                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
159350                                     ,p_token_2                 => 'LINE_TYPE_NAME'
159351                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
159352                                                                              l_component_type
159353                                                                             ,l_component_code
159354                                                                             ,l_component_type_code
159355                                                                             ,l_component_appl_id
159356                                                                             ,l_amb_context_code
159357                                                                             ,l_entity_code
159358                                                                             ,l_event_class_code
159359                                                                            )
159360                                     ,p_token_3                 => 'OWNER'
159361                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
159362                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
159363                                                                           ,p_lookup_code    => l_component_type_code
159364                                                                          )
159365                                     ,p_token_4                 => 'PRODUCT_NAME'
159366                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
159367                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
159368                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
159369                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
159370                                     ,p_ae_header_id            =>  NULL
159371                                        );
159372 
159373         IF (C_LEVEL_ERROR>= g_log_level) THEN
159374                  trace
159375                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
159376                       ,p_level    => C_LEVEL_ERROR
159377                       ,p_module   => l_log_module);
159378         END IF;
159379       END IF;
159380    END IF;
159381    --
159382    --
159383    ------------------------------------------------------------------------------------------------
159384    -- 4219869 Business Flow
159385    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
159386    -- Prior Entry.  Currently, the following code is always generated.
159387    ------------------------------------------------------------------------------------------------
159388    XLA_AE_LINES_PKG.ValidateCurrentLine;
159389 
159390    ------------------------------------------------------------------------------------
159391    -- 4219869 Business Flow
159392    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
159393    ------------------------------------------------------------------------------------
159394    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
159395 
159396    ----------------------------------------------------------------------------------
159397    -- 4219869 Business Flow
159398    -- Update journal entry status -- Need to generate this within IF <condition>
159399    ----------------------------------------------------------------------------------
159400    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
159401          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
159402          ,p_balance_type_code => l_balance_type_code
159403          );
159404 
159405    -------------------------------------------------------------------------------------------
159406    -- 4262811 - Generate the Accrual Reversal lines
159407    -------------------------------------------------------------------------------------------
159408    BEGIN
159409       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
159410                               (g_array_event(p_event_id).array_value_num('header_index'));
159411       IF l_acc_rev_flag IS NULL THEN
159412          l_acc_rev_flag := 'N';
159413       END IF;
159414    EXCEPTION
159415       WHEN OTHERS THEN
159416          l_acc_rev_flag := 'N';
159417    END;
159418    --
159419    IF (l_acc_rev_flag = 'Y') THEN
159420 
159421        -- 4645092  ------------------------------------------------------------------------------
159422        -- To allow MPA report to determine if it should generate report process
159423        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
159424        ------------------------------------------------------------------------------------------
159425 
159426        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
159427        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
159428    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
159429    -- call ADRs
159430    -- Bug 4922099
159431    --
159432    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
159433         (NVL(l_actual_upg_option, 'N') = 'O') OR
159434         (NVL(l_enc_upg_option, 'N') = 'O')
159435       )
159436    THEN
159437    NULL;
159438    --
159439    --
159440    
159441   l_ccid := AcctDerRule_6(
159442            p_application_id           => p_application_id
159443          , p_ae_header_id             => l_ae_header_id 
159444 , p_source_11 => p_source_11
159445          , x_transaction_coa_id       => l_adr_transaction_coa_id
159446          , x_accounting_coa_id        => l_adr_accounting_coa_id
159447          , x_value_type_code          => l_adr_value_type_code
159448          , p_side                     => 'NA'
159449    );
159450 
159451    xla_ae_lines_pkg.set_ccid(
159452     p_code_combination_id          => l_ccid
159453   , p_value_type_code              => l_adr_value_type_code
159454   , p_transaction_coa_id           => l_adr_transaction_coa_id
159455   , p_accounting_coa_id            => l_adr_accounting_coa_id
159456   , p_adr_code                     => 'CST_DEFAULT'
159457   , p_adr_type_code                => 'S'
159458   , p_component_type               => l_component_type
159459   , p_component_code               => l_component_code
159460   , p_component_type_code          => l_component_type_code
159461   , p_component_appl_id            => l_component_appl_id
159462   , p_amb_context_code             => l_amb_context_code
159463   , p_side                         => 'NA'
159464   );
159465 
159466 
159467    --
159468    --
159469    END IF;
159470 
159471        --
159472        -- Update the line information that should be overwritten
159473        --
159474        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
159475                                          p_header_num   => 1);
159476        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
159477 
159478        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
159479 
159480        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
159481           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
159482        END IF;
159483 
159484       --
159485       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
159486       --
159487       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
159488           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
159489       ELSE
159490           ---------------------------------------------------------------------------------------------------
159491           -- 4262811a Switch Sign
159492           ---------------------------------------------------------------------------------------------------
159493           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
159494           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
159495                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
159496           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
159497                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
159498           -- 5132302
159499           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
159500                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
159501 
159502       END IF;
159503 
159504       -- 4955764
159505       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
159506       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
159507 
159508 
159509       XLA_AE_LINES_PKG.ValidateCurrentLine;
159510       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
159511 
159512       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
159513                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
159514                ,p_balance_type_code => l_balance_type_code);
159515 
159516    END IF;
159517 
159518    -----------------------------------------------------------------------------------------
159519    -- 4262811 Multiperiod Accounting
159520    -----------------------------------------------------------------------------------------
159521      -- No MPA option is assigned.
159522 
159523 
159524 END IF;
159525 END IF;
159526 --
159527 
159528 --
159529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159530    trace
159531       (p_msg      => 'END of AcctLineType_296'
159532       ,p_level    => C_LEVEL_PROCEDURE
159533       ,p_module   => l_log_module);
159534 END IF;
159535 --
159536 EXCEPTION
159537   WHEN xla_exceptions_pkg.application_exception THEN
159538       RAISE;
159539   WHEN OTHERS THEN
159540        xla_exceptions_pkg.raise_message
159541            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_296');
159542 END AcctLineType_296;
159543 --
159544 
159545 ---------------------------------------
159546 --
159547 -- PRIVATE FUNCTION
159548 --         AcctLineType_297
159549 --
159550 ---------------------------------------
159551 PROCEDURE AcctLineType_297 (
159552   p_application_id        IN NUMBER
159553  ,p_event_id              IN NUMBER
159554  ,p_calculate_acctd_flag  IN VARCHAR2
159555  ,p_calculate_g_l_flag    IN VARCHAR2
159556  ,p_actual_flag           IN OUT VARCHAR2
159557  ,p_balance_type_code     OUT VARCHAR2
159558  ,p_gain_or_loss_ref      OUT VARCHAR2
159559  
159560 --TRANSACTION_ID
159561  , p_source_1            IN NUMBER
159562 --Item Concatenated Segments
159563  , p_source_2            IN VARCHAR2
159564 --Transaction Quantity
159565  , p_source_3            IN NUMBER
159566 --Transaction Unit of Measure Code
159567  , p_source_4            IN VARCHAR2
159568 --Inventory Transaction Type Description
159569  , p_source_5            IN VARCHAR2
159570 --Cost Management Default Account
159571  , p_source_11            IN NUMBER
159572 --DISTRIBUTION_IDENTIFIER
159573  , p_source_84            IN NUMBER
159574 --Distribution Type
159575  , p_source_85            IN VARCHAR2
159576  , p_source_85_meaning    IN VARCHAR2
159577 --Entered Currency Code
159578  , p_source_88            IN VARCHAR2
159579 --Entered Amount
159580  , p_source_91            IN NUMBER
159581 --Currency Conversion Date
159582  , p_source_92            IN DATE
159583 --Currency Conversion Rate
159584  , p_source_93            IN NUMBER
159585 --Currency Conversion Type
159586  , p_source_94            IN VARCHAR2
159587 --Accounted Amount
159588  , p_source_95            IN NUMBER
159589 --Accounting Line Type
159590  , p_source_97            IN NUMBER
159591 )
159592 IS
159593 
159594 l_component_type              VARCHAR2(80);
159595 l_component_code              VARCHAR2(30);
159596 l_component_type_code         VARCHAR2(1);
159597 l_component_appl_id           INTEGER;
159598 l_amb_context_code            VARCHAR2(30);
159599 l_entity_code                 VARCHAR2(30);
159600 l_event_class_code            VARCHAR2(30);
159601 l_ae_header_id                NUMBER;
159602 l_event_type_code             VARCHAR2(30);
159603 l_line_definition_code        VARCHAR2(30);
159604 l_line_definition_owner_code  VARCHAR2(1);
159605 --
159606 -- adr variables
159607 l_segment                     VARCHAR2(30);
159608 l_ccid                        NUMBER;
159609 l_adr_transaction_coa_id      NUMBER;
159610 l_adr_accounting_coa_id       NUMBER;
159611 l_adr_flexfield_segment_code  VARCHAR2(30);
159612 l_adr_flex_value_set_id       NUMBER;
159613 l_adr_value_type_code         VARCHAR2(30);
159614 l_adr_value_combination_id    NUMBER;
159615 l_adr_value_segment_code      VARCHAR2(30);
159616 
159617 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
159618 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
159619 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
159620 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
159621 
159622 -- 4262811 Variables ------------------------------------------------------------------------------------------
159623 l_entered_amt_idx             NUMBER;
159624 l_accted_amt_idx              NUMBER;
159625 l_acc_rev_flag                VARCHAR2(1);
159626 l_accrual_line_num            NUMBER;
159627 l_tmp_amt                     NUMBER;
159628 l_acc_rev_natural_side_code   VARCHAR2(1);
159629 
159630 l_num_entries                 NUMBER;
159631 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
159632 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
159633 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
159634 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
159635 l_recog_line_1                NUMBER;
159636 l_recog_line_2                NUMBER;
159637 
159638 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
159639 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
159640 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
159641 
159642 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
159643 
159644 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
159645 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
159646 
159647 ---------------------------------------------------------------------------------------------------------------
159648 
159649 
159650 --
159651 -- bulk performance
159652 --
159653 l_balance_type_code           VARCHAR2(1);
159654 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
159655 l_log_module                  VARCHAR2(240);
159656 
159657 --
159658 -- Upgrade strategy
159659 --
159660 l_actual_upg_option           VARCHAR2(1);
159661 l_enc_upg_option           VARCHAR2(1);
159662 
159663 --
159664 BEGIN
159665 --
159666 IF g_log_enabled THEN
159667       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_297';
159668 END IF;
159669 --
159670 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159671 
159672       trace
159673          (p_msg      => 'BEGIN of AcctLineType_297'
159674          ,p_level    => C_LEVEL_PROCEDURE
159675          ,p_module   => l_log_module);
159676 
159677 END IF;
159678 --
159679 l_component_type             := 'AMB_JLT';
159680 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
159681 l_component_type_code        := 'S';
159682 l_component_appl_id          :=  707;
159683 l_amb_context_code           := 'DEFAULT';
159684 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
159685 l_event_class_code           := 'USER_DEFINE';
159686 l_event_type_code            := 'UDIR_INTERORG_SHIP';
159687 l_line_definition_owner_code := 'S';
159688 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
159689 --
159690 l_balance_type_code          := 'A';
159691 l_segment                     := NULL;
159692 l_ccid                        := NULL;
159693 l_adr_transaction_coa_id      := NULL;
159694 l_adr_accounting_coa_id       := NULL;
159695 l_adr_flexfield_segment_code  := NULL;
159696 l_adr_flex_value_set_id       := NULL;
159697 l_adr_value_type_code         := NULL;
159698 l_adr_value_combination_id    := NULL;
159699 l_adr_value_segment_code      := NULL;
159700 
159701 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
159702 l_bflow_class_code           := '';    -- 4219869 Business Flow
159703 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
159704 l_budgetary_control_flag     := 'N';
159705 
159706 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
159707 l_bflow_applied_to_amt       := NULL; -- 5132302
159708 l_entered_amt_idx            := NULL;          -- 4262811
159709 l_accted_amt_idx             := NULL;          -- 4262811
159710 l_acc_rev_flag               := NULL;          -- 4262811
159711 l_accrual_line_num           := NULL;          -- 4262811
159712 l_tmp_amt                    := NULL;          -- 4262811
159713 --
159714  
159715 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
159716     l_balance_type_code <> 'B' THEN
159717 IF NVL(p_source_97,9E125) =  3
159718  THEN 
159719 
159720    --
159721    XLA_AE_LINES_PKG.SetNewLine;
159722 
159723    p_balance_type_code          := l_balance_type_code;
159724    -- set the flag so later we will know whether the gain loss line needs to be created
159725    
159726    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
159727      p_actual_flag :='A';
159728    END IF;
159729 
159730    --
159731    -- bulk performance
159732    --
159733    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
159734                                       p_header_num   => 0); -- 4262811
159735    --
159736    -- set accounting line options
159737    --
159738    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
159739            p_natural_side_code          => 'D'
159740          , p_gain_or_loss_flag          => 'N'
159741          , p_gl_transfer_mode_code      => 'S'
159742          , p_acct_entry_type_code       => 'A'
159743          , p_switch_side_flag           => 'Y'
159744          , p_merge_duplicate_code       => 'N'
159745          );
159746    --
159747    l_acc_rev_natural_side_code := 'C';  -- 4262811
159748    -- 
159749    --
159750    -- set accounting line type info
159751    --
159752    xla_ae_lines_pkg.SetAcctLineType
159753       (p_component_type             => l_component_type
159754       ,p_event_type_code            => l_event_type_code
159755       ,p_line_definition_owner_code => l_line_definition_owner_code
159756       ,p_line_definition_code       => l_line_definition_code
159757       ,p_accounting_line_code       => l_component_code
159758       ,p_accounting_line_type_code  => l_component_type_code
159759       ,p_accounting_line_appl_id    => l_component_appl_id
159760       ,p_amb_context_code           => l_amb_context_code
159761       ,p_entity_code                => l_entity_code
159762       ,p_event_class_code           => l_event_class_code);
159763    --
159764    -- set accounting class
159765    --
159766    xla_ae_lines_pkg.SetAcctClass(
159767            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
159768          , p_ae_header_id           => l_ae_header_id
159769          );
159770 
159771    --
159772    -- set rounding class
159773    --
159774    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
159775                       'MATERIAL_OVERHEAD_ABSORPTION';
159776 
159777    --
159778    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
159779    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
159780    --
159781    -- bulk performance
159782    --
159783    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
159784 
159785    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
159786       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
159787 
159788    -- 4955764
159789    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
159790       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
159791 
159792    -- 4458381 Public Sector Enh
159793    
159794    --
159795    -- set accounting attributes for the line type
159796    --
159797    l_entered_amt_idx := 3;
159798    l_accted_amt_idx  := 8;
159799    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
159800    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
159801    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
159802    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
159803    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
159804    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
159805    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
159806    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
159807    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
159808    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
159809    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
159810    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
159811    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
159812    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
159813    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
159814    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
159815    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
159816 
159817    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
159818    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
159819 
159820    ---------------------------------------------------------------------------------------------------------------
159821    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
159822    ---------------------------------------------------------------------------------------------------------------
159823    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
159824 
159825    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
159826    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
159827 
159828    IF xla_accounting_cache_pkg.GetValueChar
159829          (p_source_code         => 'LEDGER_CATEGORY_CODE'
159830          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
159831    AND l_bflow_method_code = 'PRIOR_ENTRY'
159832 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
159833    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
159834          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
159835        )
159836    THEN
159837          xla_ae_lines_pkg.BflowUpgEntry
159838            (p_business_method_code    => l_bflow_method_code
159839            ,p_business_class_code     => l_bflow_class_code
159840            ,p_balance_type            => l_balance_type_code);
159841    ELSE
159842       NULL;
159843 -- No business flow processing for business flow method of NONE.
159844    END IF;
159845 
159846    --
159847    -- call analytical criteria
159848    --
159849    
159850    --
159851    -- call description
159852    --
159853    
159854 xla_ae_lines_pkg.SetLineDescription(
159855    p_ae_header_id => l_ae_header_id
159856   ,p_description  => Description_1 (
159857      p_application_id         => p_application_id
159858    , p_ae_header_id           => l_ae_header_id 
159859 , p_source_1 => p_source_1
159860 , p_source_2 => p_source_2
159861 , p_source_3 => p_source_3
159862 , p_source_4 => p_source_4
159863 , p_source_5 => p_source_5
159864    )
159865 );
159866 
159867 
159868    --
159869    -- call ADRs
159870    -- Bug 4922099
159871    --
159872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
159873         (NVL(l_actual_upg_option, 'N') = 'O') OR
159874         (NVL(l_enc_upg_option, 'N') = 'O')
159875       )
159876    THEN
159877    NULL;
159878    --
159879    --
159880    
159881   l_ccid := AcctDerRule_6(
159882            p_application_id           => p_application_id
159883          , p_ae_header_id             => l_ae_header_id 
159884 , p_source_11 => p_source_11
159885          , x_transaction_coa_id       => l_adr_transaction_coa_id
159886          , x_accounting_coa_id        => l_adr_accounting_coa_id
159887          , x_value_type_code          => l_adr_value_type_code
159888          , p_side                     => 'NA'
159889    );
159890 
159891    xla_ae_lines_pkg.set_ccid(
159892     p_code_combination_id          => l_ccid
159893   , p_value_type_code              => l_adr_value_type_code
159894   , p_transaction_coa_id           => l_adr_transaction_coa_id
159895   , p_accounting_coa_id            => l_adr_accounting_coa_id
159896   , p_adr_code                     => 'CST_DEFAULT'
159897   , p_adr_type_code                => 'S'
159898   , p_component_type               => l_component_type
159899   , p_component_code               => l_component_code
159900   , p_component_type_code          => l_component_type_code
159901   , p_component_appl_id            => l_component_appl_id
159902   , p_amb_context_code             => l_amb_context_code
159903   , p_side                         => 'NA'
159904   );
159905 
159906 
159907    --
159908    --
159909    END IF;
159910    --
159911    -- Bug 4922099
159912    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
159913           (NVL(l_enc_upg_option, 'N') = 'O')
159914         ) AND
159915         (l_bflow_method_code = 'PRIOR_ENTRY')
159916       )
159917    THEN
159918       IF
159919       --
159920       1 = 2
159921       --
159922       THEN
159923       xla_accounting_err_pkg.build_message
159924                                     (p_appli_s_name            => 'XLA'
159925                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
159926                                     ,p_token_1                 => 'LINE_NUMBER'
159927                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
159928                                     ,p_token_2                 => 'LINE_TYPE_NAME'
159929                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
159930                                                                              l_component_type
159931                                                                             ,l_component_code
159932                                                                             ,l_component_type_code
159933                                                                             ,l_component_appl_id
159934                                                                             ,l_amb_context_code
159935                                                                             ,l_entity_code
159936                                                                             ,l_event_class_code
159937                                                                            )
159938                                     ,p_token_3                 => 'OWNER'
159939                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
159940                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
159941                                                                           ,p_lookup_code    => l_component_type_code
159942                                                                          )
159943                                     ,p_token_4                 => 'PRODUCT_NAME'
159944                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
159945                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
159946                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
159947                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
159948                                     ,p_ae_header_id            =>  NULL
159949                                        );
159950 
159951         IF (C_LEVEL_ERROR>= g_log_level) THEN
159952                  trace
159953                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
159954                       ,p_level    => C_LEVEL_ERROR
159955                       ,p_module   => l_log_module);
159956         END IF;
159957       END IF;
159958    END IF;
159959    --
159960    --
159961    ------------------------------------------------------------------------------------------------
159962    -- 4219869 Business Flow
159963    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
159964    -- Prior Entry.  Currently, the following code is always generated.
159965    ------------------------------------------------------------------------------------------------
159966    XLA_AE_LINES_PKG.ValidateCurrentLine;
159967 
159968    ------------------------------------------------------------------------------------
159969    -- 4219869 Business Flow
159970    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
159971    ------------------------------------------------------------------------------------
159972    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
159973 
159974    ----------------------------------------------------------------------------------
159975    -- 4219869 Business Flow
159976    -- Update journal entry status -- Need to generate this within IF <condition>
159977    ----------------------------------------------------------------------------------
159978    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
159979          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
159980          ,p_balance_type_code => l_balance_type_code
159981          );
159982 
159983    -------------------------------------------------------------------------------------------
159984    -- 4262811 - Generate the Accrual Reversal lines
159985    -------------------------------------------------------------------------------------------
159986    BEGIN
159987       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
159988                               (g_array_event(p_event_id).array_value_num('header_index'));
159989       IF l_acc_rev_flag IS NULL THEN
159990          l_acc_rev_flag := 'N';
159991       END IF;
159992    EXCEPTION
159993       WHEN OTHERS THEN
159994          l_acc_rev_flag := 'N';
159995    END;
159996    --
159997    IF (l_acc_rev_flag = 'Y') THEN
159998 
159999        -- 4645092  ------------------------------------------------------------------------------
160000        -- To allow MPA report to determine if it should generate report process
160001        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
160002        ------------------------------------------------------------------------------------------
160003 
160004        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
160005        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
160006    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
160007    -- call ADRs
160008    -- Bug 4922099
160009    --
160010    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
160011         (NVL(l_actual_upg_option, 'N') = 'O') OR
160012         (NVL(l_enc_upg_option, 'N') = 'O')
160013       )
160014    THEN
160015    NULL;
160016    --
160017    --
160018    
160019   l_ccid := AcctDerRule_6(
160020            p_application_id           => p_application_id
160021          , p_ae_header_id             => l_ae_header_id 
160022 , p_source_11 => p_source_11
160023          , x_transaction_coa_id       => l_adr_transaction_coa_id
160024          , x_accounting_coa_id        => l_adr_accounting_coa_id
160025          , x_value_type_code          => l_adr_value_type_code
160026          , p_side                     => 'NA'
160027    );
160028 
160029    xla_ae_lines_pkg.set_ccid(
160030     p_code_combination_id          => l_ccid
160031   , p_value_type_code              => l_adr_value_type_code
160032   , p_transaction_coa_id           => l_adr_transaction_coa_id
160033   , p_accounting_coa_id            => l_adr_accounting_coa_id
160034   , p_adr_code                     => 'CST_DEFAULT'
160035   , p_adr_type_code                => 'S'
160036   , p_component_type               => l_component_type
160037   , p_component_code               => l_component_code
160038   , p_component_type_code          => l_component_type_code
160039   , p_component_appl_id            => l_component_appl_id
160040   , p_amb_context_code             => l_amb_context_code
160041   , p_side                         => 'NA'
160042   );
160043 
160044 
160045    --
160046    --
160047    END IF;
160048 
160049        --
160050        -- Update the line information that should be overwritten
160051        --
160052        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
160053                                          p_header_num   => 1);
160054        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
160055 
160056        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
160057 
160058        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
160059           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
160060        END IF;
160061 
160062       --
160063       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
160064       --
160065       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
160066           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
160067       ELSE
160068           ---------------------------------------------------------------------------------------------------
160069           -- 4262811a Switch Sign
160070           ---------------------------------------------------------------------------------------------------
160071           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
160072           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
160073                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
160074           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
160075                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
160076           -- 5132302
160077           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
160078                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
160079 
160080       END IF;
160081 
160082       -- 4955764
160083       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
160084       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
160085 
160086 
160087       XLA_AE_LINES_PKG.ValidateCurrentLine;
160088       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
160089 
160090       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
160091                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
160092                ,p_balance_type_code => l_balance_type_code);
160093 
160094    END IF;
160095 
160096    -----------------------------------------------------------------------------------------
160097    -- 4262811 Multiperiod Accounting
160098    -----------------------------------------------------------------------------------------
160099      -- No MPA option is assigned.
160100 
160101 
160102 END IF;
160103 END IF;
160104 --
160105 
160106 --
160107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160108    trace
160109       (p_msg      => 'END of AcctLineType_297'
160110       ,p_level    => C_LEVEL_PROCEDURE
160111       ,p_module   => l_log_module);
160112 END IF;
160113 --
160114 EXCEPTION
160115   WHEN xla_exceptions_pkg.application_exception THEN
160116       RAISE;
160117   WHEN OTHERS THEN
160118        xla_exceptions_pkg.raise_message
160119            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_297');
160120 END AcctLineType_297;
160121 --
160122 
160123 ---------------------------------------
160124 --
160125 -- PRIVATE FUNCTION
160126 --         AcctLineType_298
160127 --
160128 ---------------------------------------
160129 PROCEDURE AcctLineType_298 (
160130   p_application_id        IN NUMBER
160131  ,p_event_id              IN NUMBER
160132  ,p_calculate_acctd_flag  IN VARCHAR2
160133  ,p_calculate_g_l_flag    IN VARCHAR2
160134  ,p_actual_flag           IN OUT VARCHAR2
160135  ,p_balance_type_code     OUT VARCHAR2
160136  ,p_gain_or_loss_ref      OUT VARCHAR2
160137  
160138 --TRANSACTION_ID
160139  , p_source_1            IN NUMBER
160140 --Item Concatenated Segments
160141  , p_source_2            IN VARCHAR2
160142 --Transaction Quantity
160143  , p_source_3            IN NUMBER
160144 --Transaction Unit of Measure Code
160145  , p_source_4            IN VARCHAR2
160146 --Inventory Transaction Type Description
160147  , p_source_5            IN VARCHAR2
160148 --Cost Management Default Account
160149  , p_source_11            IN NUMBER
160150 --DISTRIBUTION_IDENTIFIER
160151  , p_source_84            IN NUMBER
160152 --Distribution Type
160153  , p_source_85            IN VARCHAR2
160154  , p_source_85_meaning    IN VARCHAR2
160155 --Entered Currency Code
160156  , p_source_88            IN VARCHAR2
160157 --Entered Amount
160158  , p_source_91            IN NUMBER
160159 --Currency Conversion Date
160160  , p_source_92            IN DATE
160161 --Currency Conversion Rate
160162  , p_source_93            IN NUMBER
160163 --Currency Conversion Type
160164  , p_source_94            IN VARCHAR2
160165 --Accounted Amount
160166  , p_source_95            IN NUMBER
160167 --Accounting Line Type
160168  , p_source_97            IN NUMBER
160169 )
160170 IS
160171 
160172 l_component_type              VARCHAR2(80);
160173 l_component_code              VARCHAR2(30);
160174 l_component_type_code         VARCHAR2(1);
160175 l_component_appl_id           INTEGER;
160176 l_amb_context_code            VARCHAR2(30);
160177 l_entity_code                 VARCHAR2(30);
160178 l_event_class_code            VARCHAR2(30);
160179 l_ae_header_id                NUMBER;
160180 l_event_type_code             VARCHAR2(30);
160181 l_line_definition_code        VARCHAR2(30);
160182 l_line_definition_owner_code  VARCHAR2(1);
160183 --
160184 -- adr variables
160185 l_segment                     VARCHAR2(30);
160186 l_ccid                        NUMBER;
160187 l_adr_transaction_coa_id      NUMBER;
160188 l_adr_accounting_coa_id       NUMBER;
160189 l_adr_flexfield_segment_code  VARCHAR2(30);
160190 l_adr_flex_value_set_id       NUMBER;
160191 l_adr_value_type_code         VARCHAR2(30);
160192 l_adr_value_combination_id    NUMBER;
160193 l_adr_value_segment_code      VARCHAR2(30);
160194 
160195 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
160196 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
160197 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
160198 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
160199 
160200 -- 4262811 Variables ------------------------------------------------------------------------------------------
160201 l_entered_amt_idx             NUMBER;
160202 l_accted_amt_idx              NUMBER;
160203 l_acc_rev_flag                VARCHAR2(1);
160204 l_accrual_line_num            NUMBER;
160205 l_tmp_amt                     NUMBER;
160206 l_acc_rev_natural_side_code   VARCHAR2(1);
160207 
160208 l_num_entries                 NUMBER;
160209 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
160210 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
160211 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
160212 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
160213 l_recog_line_1                NUMBER;
160214 l_recog_line_2                NUMBER;
160215 
160216 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
160217 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
160218 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
160219 
160220 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
160221 
160222 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
160223 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
160224 
160225 ---------------------------------------------------------------------------------------------------------------
160226 
160227 
160228 --
160229 -- bulk performance
160230 --
160231 l_balance_type_code           VARCHAR2(1);
160232 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
160233 l_log_module                  VARCHAR2(240);
160234 
160235 --
160236 -- Upgrade strategy
160237 --
160238 l_actual_upg_option           VARCHAR2(1);
160239 l_enc_upg_option           VARCHAR2(1);
160240 
160241 --
160242 BEGIN
160243 --
160244 IF g_log_enabled THEN
160245       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_298';
160246 END IF;
160247 --
160248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160249 
160250       trace
160251          (p_msg      => 'BEGIN of AcctLineType_298'
160252          ,p_level    => C_LEVEL_PROCEDURE
160253          ,p_module   => l_log_module);
160254 
160255 END IF;
160256 --
160257 l_component_type             := 'AMB_JLT';
160258 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
160259 l_component_type_code        := 'S';
160260 l_component_appl_id          :=  707;
160261 l_amb_context_code           := 'DEFAULT';
160262 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
160263 l_event_class_code           := 'USER_DEFINE';
160264 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
160265 l_line_definition_owner_code := 'S';
160266 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
160267 --
160268 l_balance_type_code          := 'A';
160269 l_segment                     := NULL;
160270 l_ccid                        := NULL;
160271 l_adr_transaction_coa_id      := NULL;
160272 l_adr_accounting_coa_id       := NULL;
160273 l_adr_flexfield_segment_code  := NULL;
160274 l_adr_flex_value_set_id       := NULL;
160275 l_adr_value_type_code         := NULL;
160276 l_adr_value_combination_id    := NULL;
160277 l_adr_value_segment_code      := NULL;
160278 
160279 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
160280 l_bflow_class_code           := '';    -- 4219869 Business Flow
160281 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
160282 l_budgetary_control_flag     := 'N';
160283 
160284 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
160285 l_bflow_applied_to_amt       := NULL; -- 5132302
160286 l_entered_amt_idx            := NULL;          -- 4262811
160287 l_accted_amt_idx             := NULL;          -- 4262811
160288 l_acc_rev_flag               := NULL;          -- 4262811
160289 l_accrual_line_num           := NULL;          -- 4262811
160290 l_tmp_amt                    := NULL;          -- 4262811
160291 --
160292  
160293 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
160294     l_balance_type_code <> 'B' THEN
160295 IF NVL(p_source_97,9E125) =  3
160296  THEN 
160297 
160298    --
160299    XLA_AE_LINES_PKG.SetNewLine;
160300 
160301    p_balance_type_code          := l_balance_type_code;
160302    -- set the flag so later we will know whether the gain loss line needs to be created
160303    
160304    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
160305      p_actual_flag :='A';
160306    END IF;
160307 
160308    --
160309    -- bulk performance
160310    --
160311    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
160312                                       p_header_num   => 0); -- 4262811
160313    --
160314    -- set accounting line options
160315    --
160316    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
160317            p_natural_side_code          => 'D'
160318          , p_gain_or_loss_flag          => 'N'
160319          , p_gl_transfer_mode_code      => 'S'
160320          , p_acct_entry_type_code       => 'A'
160321          , p_switch_side_flag           => 'Y'
160322          , p_merge_duplicate_code       => 'N'
160323          );
160324    --
160325    l_acc_rev_natural_side_code := 'C';  -- 4262811
160326    -- 
160327    --
160328    -- set accounting line type info
160329    --
160330    xla_ae_lines_pkg.SetAcctLineType
160331       (p_component_type             => l_component_type
160332       ,p_event_type_code            => l_event_type_code
160333       ,p_line_definition_owner_code => l_line_definition_owner_code
160334       ,p_line_definition_code       => l_line_definition_code
160335       ,p_accounting_line_code       => l_component_code
160336       ,p_accounting_line_type_code  => l_component_type_code
160337       ,p_accounting_line_appl_id    => l_component_appl_id
160338       ,p_amb_context_code           => l_amb_context_code
160339       ,p_entity_code                => l_entity_code
160340       ,p_event_class_code           => l_event_class_code);
160341    --
160342    -- set accounting class
160343    --
160344    xla_ae_lines_pkg.SetAcctClass(
160345            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
160346          , p_ae_header_id           => l_ae_header_id
160347          );
160348 
160349    --
160350    -- set rounding class
160351    --
160352    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
160353                       'MATERIAL_OVERHEAD_ABSORPTION';
160354 
160355    --
160356    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
160357    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
160358    --
160359    -- bulk performance
160360    --
160361    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
160362 
160363    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
160364       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
160365 
160366    -- 4955764
160367    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
160368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
160369 
160370    -- 4458381 Public Sector Enh
160371    
160372    --
160373    -- set accounting attributes for the line type
160374    --
160375    l_entered_amt_idx := 3;
160376    l_accted_amt_idx  := 8;
160377    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
160378    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
160379    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
160380    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
160381    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
160382    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
160383    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
160384    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
160385    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
160386    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
160387    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
160388    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
160389    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
160390    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
160391    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
160392    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
160393    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
160394 
160395    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
160396    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
160397 
160398    ---------------------------------------------------------------------------------------------------------------
160399    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
160400    ---------------------------------------------------------------------------------------------------------------
160401    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
160402 
160403    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
160404    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
160405 
160406    IF xla_accounting_cache_pkg.GetValueChar
160407          (p_source_code         => 'LEDGER_CATEGORY_CODE'
160408          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
160409    AND l_bflow_method_code = 'PRIOR_ENTRY'
160410 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
160411    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
160412          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
160413        )
160414    THEN
160415          xla_ae_lines_pkg.BflowUpgEntry
160416            (p_business_method_code    => l_bflow_method_code
160417            ,p_business_class_code     => l_bflow_class_code
160418            ,p_balance_type            => l_balance_type_code);
160419    ELSE
160420       NULL;
160421 -- No business flow processing for business flow method of NONE.
160422    END IF;
160423 
160424    --
160425    -- call analytical criteria
160426    --
160427    
160428    --
160429    -- call description
160430    --
160431    
160432 xla_ae_lines_pkg.SetLineDescription(
160433    p_ae_header_id => l_ae_header_id
160434   ,p_description  => Description_1 (
160435      p_application_id         => p_application_id
160436    , p_ae_header_id           => l_ae_header_id 
160437 , p_source_1 => p_source_1
160438 , p_source_2 => p_source_2
160439 , p_source_3 => p_source_3
160440 , p_source_4 => p_source_4
160441 , p_source_5 => p_source_5
160442    )
160443 );
160444 
160445 
160446    --
160447    -- call ADRs
160448    -- Bug 4922099
160449    --
160450    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
160451         (NVL(l_actual_upg_option, 'N') = 'O') OR
160452         (NVL(l_enc_upg_option, 'N') = 'O')
160453       )
160454    THEN
160455    NULL;
160456    --
160457    --
160458    
160459   l_ccid := AcctDerRule_6(
160460            p_application_id           => p_application_id
160461          , p_ae_header_id             => l_ae_header_id 
160462 , p_source_11 => p_source_11
160463          , x_transaction_coa_id       => l_adr_transaction_coa_id
160464          , x_accounting_coa_id        => l_adr_accounting_coa_id
160465          , x_value_type_code          => l_adr_value_type_code
160466          , p_side                     => 'NA'
160467    );
160468 
160469    xla_ae_lines_pkg.set_ccid(
160470     p_code_combination_id          => l_ccid
160471   , p_value_type_code              => l_adr_value_type_code
160472   , p_transaction_coa_id           => l_adr_transaction_coa_id
160473   , p_accounting_coa_id            => l_adr_accounting_coa_id
160474   , p_adr_code                     => 'CST_DEFAULT'
160475   , p_adr_type_code                => 'S'
160476   , p_component_type               => l_component_type
160477   , p_component_code               => l_component_code
160478   , p_component_type_code          => l_component_type_code
160479   , p_component_appl_id            => l_component_appl_id
160480   , p_amb_context_code             => l_amb_context_code
160481   , p_side                         => 'NA'
160482   );
160483 
160484 
160485    --
160486    --
160487    END IF;
160488    --
160489    -- Bug 4922099
160490    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
160491           (NVL(l_enc_upg_option, 'N') = 'O')
160492         ) AND
160493         (l_bflow_method_code = 'PRIOR_ENTRY')
160494       )
160495    THEN
160496       IF
160497       --
160498       1 = 2
160499       --
160500       THEN
160501       xla_accounting_err_pkg.build_message
160502                                     (p_appli_s_name            => 'XLA'
160503                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
160504                                     ,p_token_1                 => 'LINE_NUMBER'
160505                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
160506                                     ,p_token_2                 => 'LINE_TYPE_NAME'
160507                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
160508                                                                              l_component_type
160509                                                                             ,l_component_code
160510                                                                             ,l_component_type_code
160511                                                                             ,l_component_appl_id
160512                                                                             ,l_amb_context_code
160513                                                                             ,l_entity_code
160514                                                                             ,l_event_class_code
160515                                                                            )
160516                                     ,p_token_3                 => 'OWNER'
160517                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
160518                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
160519                                                                           ,p_lookup_code    => l_component_type_code
160520                                                                          )
160521                                     ,p_token_4                 => 'PRODUCT_NAME'
160522                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
160523                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
160524                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
160525                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
160526                                     ,p_ae_header_id            =>  NULL
160527                                        );
160528 
160529         IF (C_LEVEL_ERROR>= g_log_level) THEN
160530                  trace
160531                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
160532                       ,p_level    => C_LEVEL_ERROR
160533                       ,p_module   => l_log_module);
160534         END IF;
160535       END IF;
160536    END IF;
160537    --
160538    --
160539    ------------------------------------------------------------------------------------------------
160540    -- 4219869 Business Flow
160541    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
160542    -- Prior Entry.  Currently, the following code is always generated.
160543    ------------------------------------------------------------------------------------------------
160544    XLA_AE_LINES_PKG.ValidateCurrentLine;
160545 
160546    ------------------------------------------------------------------------------------
160547    -- 4219869 Business Flow
160548    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
160549    ------------------------------------------------------------------------------------
160550    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
160551 
160552    ----------------------------------------------------------------------------------
160553    -- 4219869 Business Flow
160554    -- Update journal entry status -- Need to generate this within IF <condition>
160555    ----------------------------------------------------------------------------------
160556    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
160557          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
160558          ,p_balance_type_code => l_balance_type_code
160559          );
160560 
160561    -------------------------------------------------------------------------------------------
160562    -- 4262811 - Generate the Accrual Reversal lines
160563    -------------------------------------------------------------------------------------------
160564    BEGIN
160565       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
160566                               (g_array_event(p_event_id).array_value_num('header_index'));
160567       IF l_acc_rev_flag IS NULL THEN
160568          l_acc_rev_flag := 'N';
160569       END IF;
160570    EXCEPTION
160571       WHEN OTHERS THEN
160572          l_acc_rev_flag := 'N';
160573    END;
160574    --
160575    IF (l_acc_rev_flag = 'Y') THEN
160576 
160577        -- 4645092  ------------------------------------------------------------------------------
160578        -- To allow MPA report to determine if it should generate report process
160579        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
160580        ------------------------------------------------------------------------------------------
160581 
160582        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
160583        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
160584    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
160585    -- call ADRs
160586    -- Bug 4922099
160587    --
160588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
160589         (NVL(l_actual_upg_option, 'N') = 'O') OR
160590         (NVL(l_enc_upg_option, 'N') = 'O')
160591       )
160592    THEN
160593    NULL;
160594    --
160595    --
160596    
160597   l_ccid := AcctDerRule_6(
160598            p_application_id           => p_application_id
160599          , p_ae_header_id             => l_ae_header_id 
160600 , p_source_11 => p_source_11
160601          , x_transaction_coa_id       => l_adr_transaction_coa_id
160602          , x_accounting_coa_id        => l_adr_accounting_coa_id
160603          , x_value_type_code          => l_adr_value_type_code
160604          , p_side                     => 'NA'
160605    );
160606 
160607    xla_ae_lines_pkg.set_ccid(
160608     p_code_combination_id          => l_ccid
160609   , p_value_type_code              => l_adr_value_type_code
160610   , p_transaction_coa_id           => l_adr_transaction_coa_id
160611   , p_accounting_coa_id            => l_adr_accounting_coa_id
160612   , p_adr_code                     => 'CST_DEFAULT'
160613   , p_adr_type_code                => 'S'
160614   , p_component_type               => l_component_type
160615   , p_component_code               => l_component_code
160616   , p_component_type_code          => l_component_type_code
160617   , p_component_appl_id            => l_component_appl_id
160618   , p_amb_context_code             => l_amb_context_code
160619   , p_side                         => 'NA'
160620   );
160621 
160622 
160623    --
160624    --
160625    END IF;
160626 
160627        --
160628        -- Update the line information that should be overwritten
160629        --
160630        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
160631                                          p_header_num   => 1);
160632        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
160633 
160634        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
160635 
160636        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
160637           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
160638        END IF;
160639 
160640       --
160641       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
160642       --
160643       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
160644           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
160645       ELSE
160646           ---------------------------------------------------------------------------------------------------
160647           -- 4262811a Switch Sign
160648           ---------------------------------------------------------------------------------------------------
160649           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
160650           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
160651                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
160652           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
160653                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
160654           -- 5132302
160655           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
160656                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
160657 
160658       END IF;
160659 
160660       -- 4955764
160661       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
160662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
160663 
160664 
160665       XLA_AE_LINES_PKG.ValidateCurrentLine;
160666       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
160667 
160668       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
160669                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
160670                ,p_balance_type_code => l_balance_type_code);
160671 
160672    END IF;
160673 
160674    -----------------------------------------------------------------------------------------
160675    -- 4262811 Multiperiod Accounting
160676    -----------------------------------------------------------------------------------------
160677      -- No MPA option is assigned.
160678 
160679 
160680 END IF;
160681 END IF;
160682 --
160683 
160684 --
160685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160686    trace
160687       (p_msg      => 'END of AcctLineType_298'
160688       ,p_level    => C_LEVEL_PROCEDURE
160689       ,p_module   => l_log_module);
160690 END IF;
160691 --
160692 EXCEPTION
160693   WHEN xla_exceptions_pkg.application_exception THEN
160694       RAISE;
160695   WHEN OTHERS THEN
160696        xla_exceptions_pkg.raise_message
160697            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_298');
160698 END AcctLineType_298;
160699 --
160700 
160701 ---------------------------------------
160702 --
160703 -- PRIVATE FUNCTION
160704 --         AcctLineType_299
160705 --
160706 ---------------------------------------
160707 PROCEDURE AcctLineType_299 (
160708   p_application_id        IN NUMBER
160709  ,p_event_id              IN NUMBER
160710  ,p_calculate_acctd_flag  IN VARCHAR2
160711  ,p_calculate_g_l_flag    IN VARCHAR2
160712  ,p_actual_flag           IN OUT VARCHAR2
160713  ,p_balance_type_code     OUT VARCHAR2
160714  ,p_gain_or_loss_ref      OUT VARCHAR2
160715  
160716 --TRANSACTION_ID
160717  , p_source_1            IN NUMBER
160718 --Item Concatenated Segments
160719  , p_source_2            IN VARCHAR2
160720 --Transaction Quantity
160721  , p_source_3            IN NUMBER
160722 --Transaction Unit of Measure Code
160723  , p_source_4            IN VARCHAR2
160724 --Inventory Transaction Type Description
160725  , p_source_5            IN VARCHAR2
160726 --Cost Management Default Account
160727  , p_source_11            IN NUMBER
160728 --Applied to Application ID
160729  , p_source_79            IN NUMBER
160730 --Applied to Distribution Link Type
160731  , p_source_80            IN VARCHAR2
160732 --Applied to Entity Code
160733  , p_source_81            IN VARCHAR2
160734 --DISTRIBUTION_IDENTIFIER
160735  , p_source_84            IN NUMBER
160736 --Distribution Type
160737  , p_source_85            IN VARCHAR2
160738  , p_source_85_meaning    IN VARCHAR2
160739 --Encumbrance Reversal Amount Entered
160740  , p_source_87            IN NUMBER
160741 --Entered Currency Code
160742  , p_source_88            IN VARCHAR2
160743 --Transaction Encumbrance Reversal Amount
160744  , p_source_89            IN NUMBER
160745 --Entered Amount
160746  , p_source_91            IN NUMBER
160747 --Currency Conversion Date
160748  , p_source_92            IN DATE
160749 --Currency Conversion Rate
160750  , p_source_93            IN NUMBER
160751 --Currency Conversion Type
160752  , p_source_94            IN VARCHAR2
160753 --Accounted Amount
160754  , p_source_95            IN NUMBER
160755 --Accounting Line Type
160756  , p_source_97            IN NUMBER
160757 --Costing Encumbrance Upgrade Option
160758  , p_source_100            IN VARCHAR2
160759 --TXN_PO_DISTRIBUTION_ID
160760  , p_source_101            IN NUMBER
160761 --TXN_PO_HEADER_ID
160762  , p_source_102            IN NUMBER
160763 --Requisition Budget Account
160764  , p_source_103            IN NUMBER
160765 --Requisition Encumbrance Type Identifier
160766  , p_source_104            IN NUMBER
160767 )
160768 IS
160769 
160770 l_component_type              VARCHAR2(80);
160771 l_component_code              VARCHAR2(30);
160772 l_component_type_code         VARCHAR2(1);
160773 l_component_appl_id           INTEGER;
160774 l_amb_context_code            VARCHAR2(30);
160775 l_entity_code                 VARCHAR2(30);
160776 l_event_class_code            VARCHAR2(30);
160777 l_ae_header_id                NUMBER;
160778 l_event_type_code             VARCHAR2(30);
160779 l_line_definition_code        VARCHAR2(30);
160780 l_line_definition_owner_code  VARCHAR2(1);
160781 --
160782 -- adr variables
160783 l_segment                     VARCHAR2(30);
160784 l_ccid                        NUMBER;
160785 l_adr_transaction_coa_id      NUMBER;
160786 l_adr_accounting_coa_id       NUMBER;
160787 l_adr_flexfield_segment_code  VARCHAR2(30);
160788 l_adr_flex_value_set_id       NUMBER;
160789 l_adr_value_type_code         VARCHAR2(30);
160790 l_adr_value_combination_id    NUMBER;
160791 l_adr_value_segment_code      VARCHAR2(30);
160792 
160793 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
160794 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
160795 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
160796 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
160797 
160798 -- 4262811 Variables ------------------------------------------------------------------------------------------
160799 l_entered_amt_idx             NUMBER;
160800 l_accted_amt_idx              NUMBER;
160801 l_acc_rev_flag                VARCHAR2(1);
160802 l_accrual_line_num            NUMBER;
160803 l_tmp_amt                     NUMBER;
160804 l_acc_rev_natural_side_code   VARCHAR2(1);
160805 
160806 l_num_entries                 NUMBER;
160807 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
160808 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
160809 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
160810 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
160811 l_recog_line_1                NUMBER;
160812 l_recog_line_2                NUMBER;
160813 
160814 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
160815 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
160816 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
160817 
160818 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
160819 
160820 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
160821 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
160822 
160823 ---------------------------------------------------------------------------------------------------------------
160824 
160825 
160826 --
160827 -- bulk performance
160828 --
160829 l_balance_type_code           VARCHAR2(1);
160830 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
160831 l_log_module                  VARCHAR2(240);
160832 
160833 --
160834 -- Upgrade strategy
160835 --
160836 l_actual_upg_option           VARCHAR2(1);
160837 l_enc_upg_option           VARCHAR2(1);
160838 
160839 --
160840 BEGIN
160841 --
160842 IF g_log_enabled THEN
160843       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_299';
160844 END IF;
160845 --
160846 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160847 
160848       trace
160849          (p_msg      => 'BEGIN of AcctLineType_299'
160850          ,p_level    => C_LEVEL_PROCEDURE
160851          ,p_module   => l_log_module);
160852 
160853 END IF;
160854 --
160855 l_component_type             := 'AMB_JLT';
160856 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
160857 l_component_type_code        := 'S';
160858 l_component_appl_id          :=  707;
160859 l_amb_context_code           := 'DEFAULT';
160860 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
160861 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
160862 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
160863 l_line_definition_owner_code := 'S';
160864 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
160865 --
160866 l_balance_type_code          := 'A';
160867 l_segment                     := NULL;
160868 l_ccid                        := NULL;
160869 l_adr_transaction_coa_id      := NULL;
160870 l_adr_accounting_coa_id       := NULL;
160871 l_adr_flexfield_segment_code  := NULL;
160872 l_adr_flex_value_set_id       := NULL;
160873 l_adr_value_type_code         := NULL;
160874 l_adr_value_combination_id    := NULL;
160875 l_adr_value_segment_code      := NULL;
160876 
160877 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
160878 l_bflow_class_code           := '';    -- 4219869 Business Flow
160879 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
160880 l_budgetary_control_flag     := 'N';
160881 
160882 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
160883 l_bflow_applied_to_amt       := NULL; -- 5132302
160884 l_entered_amt_idx            := NULL;          -- 4262811
160885 l_accted_amt_idx             := NULL;          -- 4262811
160886 l_acc_rev_flag               := NULL;          -- 4262811
160887 l_accrual_line_num           := NULL;          -- 4262811
160888 l_tmp_amt                    := NULL;          -- 4262811
160889 --
160890  
160891 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
160892     l_balance_type_code <> 'B' THEN
160893 IF NVL(p_source_97,9E125) =  3
160894  THEN 
160895 
160896    --
160897    XLA_AE_LINES_PKG.SetNewLine;
160898 
160899    p_balance_type_code          := l_balance_type_code;
160900    -- set the flag so later we will know whether the gain loss line needs to be created
160901    
160902    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
160903      p_actual_flag :='A';
160904    END IF;
160905 
160906    --
160907    -- bulk performance
160908    --
160909    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
160910                                       p_header_num   => 0); -- 4262811
160911    --
160912    -- set accounting line options
160913    --
160914    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
160915            p_natural_side_code          => 'D'
160916          , p_gain_or_loss_flag          => 'N'
160917          , p_gl_transfer_mode_code      => 'S'
160918          , p_acct_entry_type_code       => 'A'
160919          , p_switch_side_flag           => 'Y'
160920          , p_merge_duplicate_code       => 'N'
160921          );
160922    --
160923    l_acc_rev_natural_side_code := 'C';  -- 4262811
160924    -- 
160925    --
160926    -- set accounting line type info
160927    --
160928    xla_ae_lines_pkg.SetAcctLineType
160929       (p_component_type             => l_component_type
160930       ,p_event_type_code            => l_event_type_code
160931       ,p_line_definition_owner_code => l_line_definition_owner_code
160932       ,p_line_definition_code       => l_line_definition_code
160933       ,p_accounting_line_code       => l_component_code
160934       ,p_accounting_line_type_code  => l_component_type_code
160935       ,p_accounting_line_appl_id    => l_component_appl_id
160936       ,p_amb_context_code           => l_amb_context_code
160937       ,p_entity_code                => l_entity_code
160938       ,p_event_class_code           => l_event_class_code);
160939    --
160940    -- set accounting class
160941    --
160942    xla_ae_lines_pkg.SetAcctClass(
160943            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
160944          , p_ae_header_id           => l_ae_header_id
160945          );
160946 
160947    --
160948    -- set rounding class
160949    --
160950    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
160951                       'MATERIAL_OVERHEAD_ABSORPTION';
160952 
160953    --
160954    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
160955    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
160956    --
160957    -- bulk performance
160958    --
160959    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
160960 
160961    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
160962       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
160963 
160964    -- 4955764
160965    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
160966       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
160967 
160968    -- 4458381 Public Sector Enh
160969    
160970    --
160971    -- set accounting attributes for the line type
160972    --
160973    l_entered_amt_idx := 17;
160974    l_accted_amt_idx  := 22;
160975    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
160976    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
160977    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
160978    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
160979    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
160980    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
160981    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
160982    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
160983    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
160984    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
160985    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
160986    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
160987    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
160988    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
160989    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
160990    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
160991    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
160992    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
160993    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
160994    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
160995    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
160996    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
160997    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
160998    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
160999    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
161000    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
161001    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
161002    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
161003    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
161004    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
161005    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
161006    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
161007    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
161008    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
161009    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
161010    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
161011    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
161012    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
161013    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
161014    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
161015    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
161016    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
161017    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
161018    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
161019    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
161020    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
161021    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
161022    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
161023    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
161024 
161025    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
161026    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
161027 
161028    ---------------------------------------------------------------------------------------------------------------
161029    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
161030    ---------------------------------------------------------------------------------------------------------------
161031    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
161032 
161033    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
161034    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
161035 
161036    IF xla_accounting_cache_pkg.GetValueChar
161037          (p_source_code         => 'LEDGER_CATEGORY_CODE'
161038          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
161039    AND l_bflow_method_code = 'PRIOR_ENTRY'
161040 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
161041    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
161042          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
161043        )
161044    THEN
161045          xla_ae_lines_pkg.BflowUpgEntry
161046            (p_business_method_code    => l_bflow_method_code
161047            ,p_business_class_code     => l_bflow_class_code
161048            ,p_balance_type            => l_balance_type_code);
161049    ELSE
161050       NULL;
161051 -- No business flow processing for business flow method of NONE.
161052    END IF;
161053 
161054    --
161055    -- call analytical criteria
161056    --
161057    
161058    --
161059    -- call description
161060    --
161061    
161062 xla_ae_lines_pkg.SetLineDescription(
161063    p_ae_header_id => l_ae_header_id
161064   ,p_description  => Description_1 (
161065      p_application_id         => p_application_id
161066    , p_ae_header_id           => l_ae_header_id 
161067 , p_source_1 => p_source_1
161068 , p_source_2 => p_source_2
161069 , p_source_3 => p_source_3
161070 , p_source_4 => p_source_4
161071 , p_source_5 => p_source_5
161072    )
161073 );
161074 
161075 
161076    --
161077    -- call ADRs
161078    -- Bug 4922099
161079    --
161080    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
161081         (NVL(l_actual_upg_option, 'N') = 'O') OR
161082         (NVL(l_enc_upg_option, 'N') = 'O')
161083       )
161084    THEN
161085    NULL;
161086    --
161087    --
161088    
161089   l_ccid := AcctDerRule_6(
161090            p_application_id           => p_application_id
161091          , p_ae_header_id             => l_ae_header_id 
161092 , p_source_11 => p_source_11
161093          , x_transaction_coa_id       => l_adr_transaction_coa_id
161094          , x_accounting_coa_id        => l_adr_accounting_coa_id
161095          , x_value_type_code          => l_adr_value_type_code
161096          , p_side                     => 'NA'
161097    );
161098 
161099    xla_ae_lines_pkg.set_ccid(
161100     p_code_combination_id          => l_ccid
161101   , p_value_type_code              => l_adr_value_type_code
161102   , p_transaction_coa_id           => l_adr_transaction_coa_id
161103   , p_accounting_coa_id            => l_adr_accounting_coa_id
161104   , p_adr_code                     => 'CST_DEFAULT'
161105   , p_adr_type_code                => 'S'
161106   , p_component_type               => l_component_type
161107   , p_component_code               => l_component_code
161108   , p_component_type_code          => l_component_type_code
161109   , p_component_appl_id            => l_component_appl_id
161110   , p_amb_context_code             => l_amb_context_code
161111   , p_side                         => 'NA'
161112   );
161113 
161114 
161115    --
161116    --
161117    END IF;
161118    --
161119    -- Bug 4922099
161120    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
161121           (NVL(l_enc_upg_option, 'N') = 'O')
161122         ) AND
161123         (l_bflow_method_code = 'PRIOR_ENTRY')
161124       )
161125    THEN
161126       IF
161127       --
161128       1 = 2
161129       --
161130       THEN
161131       xla_accounting_err_pkg.build_message
161132                                     (p_appli_s_name            => 'XLA'
161133                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
161134                                     ,p_token_1                 => 'LINE_NUMBER'
161135                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
161136                                     ,p_token_2                 => 'LINE_TYPE_NAME'
161137                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
161138                                                                              l_component_type
161139                                                                             ,l_component_code
161140                                                                             ,l_component_type_code
161141                                                                             ,l_component_appl_id
161142                                                                             ,l_amb_context_code
161143                                                                             ,l_entity_code
161144                                                                             ,l_event_class_code
161145                                                                            )
161146                                     ,p_token_3                 => 'OWNER'
161147                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
161148                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
161149                                                                           ,p_lookup_code    => l_component_type_code
161150                                                                          )
161151                                     ,p_token_4                 => 'PRODUCT_NAME'
161152                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
161153                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
161154                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
161155                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
161156                                     ,p_ae_header_id            =>  NULL
161157                                        );
161158 
161159         IF (C_LEVEL_ERROR>= g_log_level) THEN
161160                  trace
161161                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
161162                       ,p_level    => C_LEVEL_ERROR
161163                       ,p_module   => l_log_module);
161164         END IF;
161165       END IF;
161166    END IF;
161167    --
161168    --
161169    ------------------------------------------------------------------------------------------------
161170    -- 4219869 Business Flow
161171    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
161172    -- Prior Entry.  Currently, the following code is always generated.
161173    ------------------------------------------------------------------------------------------------
161174    XLA_AE_LINES_PKG.ValidateCurrentLine;
161175 
161176    ------------------------------------------------------------------------------------
161177    -- 4219869 Business Flow
161178    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
161179    ------------------------------------------------------------------------------------
161180    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
161181 
161182    ----------------------------------------------------------------------------------
161183    -- 4219869 Business Flow
161184    -- Update journal entry status -- Need to generate this within IF <condition>
161185    ----------------------------------------------------------------------------------
161186    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
161187          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
161188          ,p_balance_type_code => l_balance_type_code
161189          );
161190 
161191    -------------------------------------------------------------------------------------------
161192    -- 4262811 - Generate the Accrual Reversal lines
161193    -------------------------------------------------------------------------------------------
161194    BEGIN
161195       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
161196                               (g_array_event(p_event_id).array_value_num('header_index'));
161197       IF l_acc_rev_flag IS NULL THEN
161198          l_acc_rev_flag := 'N';
161199       END IF;
161200    EXCEPTION
161201       WHEN OTHERS THEN
161202          l_acc_rev_flag := 'N';
161203    END;
161204    --
161205    IF (l_acc_rev_flag = 'Y') THEN
161206 
161207        -- 4645092  ------------------------------------------------------------------------------
161208        -- To allow MPA report to determine if it should generate report process
161209        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
161210        ------------------------------------------------------------------------------------------
161211 
161212        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
161213        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
161214    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
161215    -- call ADRs
161216    -- Bug 4922099
161217    --
161218    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
161219         (NVL(l_actual_upg_option, 'N') = 'O') OR
161220         (NVL(l_enc_upg_option, 'N') = 'O')
161221       )
161222    THEN
161223    NULL;
161224    --
161225    --
161226    
161227   l_ccid := AcctDerRule_6(
161228            p_application_id           => p_application_id
161229          , p_ae_header_id             => l_ae_header_id 
161230 , p_source_11 => p_source_11
161231          , x_transaction_coa_id       => l_adr_transaction_coa_id
161232          , x_accounting_coa_id        => l_adr_accounting_coa_id
161233          , x_value_type_code          => l_adr_value_type_code
161234          , p_side                     => 'NA'
161235    );
161236 
161237    xla_ae_lines_pkg.set_ccid(
161238     p_code_combination_id          => l_ccid
161239   , p_value_type_code              => l_adr_value_type_code
161240   , p_transaction_coa_id           => l_adr_transaction_coa_id
161241   , p_accounting_coa_id            => l_adr_accounting_coa_id
161242   , p_adr_code                     => 'CST_DEFAULT'
161243   , p_adr_type_code                => 'S'
161244   , p_component_type               => l_component_type
161245   , p_component_code               => l_component_code
161246   , p_component_type_code          => l_component_type_code
161247   , p_component_appl_id            => l_component_appl_id
161248   , p_amb_context_code             => l_amb_context_code
161249   , p_side                         => 'NA'
161250   );
161251 
161252 
161253    --
161254    --
161255    END IF;
161256 
161257        --
161258        -- Update the line information that should be overwritten
161259        --
161260        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
161261                                          p_header_num   => 1);
161262        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
161263 
161264        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
161265 
161266        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
161267           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
161268        END IF;
161269 
161270       --
161271       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
161272       --
161273       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
161274           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
161275       ELSE
161276           ---------------------------------------------------------------------------------------------------
161277           -- 4262811a Switch Sign
161278           ---------------------------------------------------------------------------------------------------
161279           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
161280           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
161281                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
161282           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
161283                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
161284           -- 5132302
161285           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
161286                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
161287 
161288       END IF;
161289 
161290       -- 4955764
161291       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
161292       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
161293 
161294 
161295       XLA_AE_LINES_PKG.ValidateCurrentLine;
161296       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
161297 
161298       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
161299                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
161300                ,p_balance_type_code => l_balance_type_code);
161301 
161302    END IF;
161303 
161304    -----------------------------------------------------------------------------------------
161305    -- 4262811 Multiperiod Accounting
161306    -----------------------------------------------------------------------------------------
161307      -- No MPA option is assigned.
161308 
161309 
161310 END IF;
161311 END IF;
161312 --
161313 
161314 --
161315 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161316    trace
161317       (p_msg      => 'END of AcctLineType_299'
161318       ,p_level    => C_LEVEL_PROCEDURE
161319       ,p_module   => l_log_module);
161320 END IF;
161321 --
161322 EXCEPTION
161323   WHEN xla_exceptions_pkg.application_exception THEN
161324       RAISE;
161325   WHEN OTHERS THEN
161326        xla_exceptions_pkg.raise_message
161327            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_299');
161328 END AcctLineType_299;
161329 --
161330 
161331 ---------------------------------------
161332 --
161333 -- PRIVATE FUNCTION
161334 --         AcctLineType_300
161335 --
161336 ---------------------------------------
161337 PROCEDURE AcctLineType_300 (
161338   p_application_id        IN NUMBER
161339  ,p_event_id              IN NUMBER
161340  ,p_calculate_acctd_flag  IN VARCHAR2
161341  ,p_calculate_g_l_flag    IN VARCHAR2
161342  ,p_actual_flag           IN OUT VARCHAR2
161343  ,p_balance_type_code     OUT VARCHAR2
161344  ,p_gain_or_loss_ref      OUT VARCHAR2
161345  
161346 --TRANSACTION_ID
161347  , p_source_1            IN NUMBER
161348 --Item Concatenated Segments
161349  , p_source_2            IN VARCHAR2
161350 --Transaction Quantity
161351  , p_source_3            IN NUMBER
161352 --Transaction Unit of Measure Code
161353  , p_source_4            IN VARCHAR2
161354 --Inventory Transaction Type Description
161355  , p_source_5            IN VARCHAR2
161356 --Cost Management Default Account
161357  , p_source_11            IN NUMBER
161358 --Applied to Application ID
161359  , p_source_79            IN NUMBER
161360 --Applied to Distribution Link Type
161361  , p_source_80            IN VARCHAR2
161362 --Applied to Entity Code
161363  , p_source_81            IN VARCHAR2
161364 --Applied To Purchase Document Identifier
161365  , p_source_83            IN NUMBER
161366 --DISTRIBUTION_IDENTIFIER
161367  , p_source_84            IN NUMBER
161368 --Distribution Type
161369  , p_source_85            IN VARCHAR2
161370  , p_source_85_meaning    IN VARCHAR2
161371 --PO Budget Account
161372  , p_source_86            IN NUMBER
161373 --Encumbrance Reversal Amount Entered
161374  , p_source_87            IN NUMBER
161375 --Entered Currency Code
161376  , p_source_88            IN VARCHAR2
161377 --Transaction Encumbrance Reversal Amount
161378  , p_source_89            IN NUMBER
161379 --Entered Amount
161380  , p_source_91            IN NUMBER
161381 --Currency Conversion Date
161382  , p_source_92            IN DATE
161383 --Currency Conversion Rate
161384  , p_source_93            IN NUMBER
161385 --Currency Conversion Type
161386  , p_source_94            IN VARCHAR2
161387 --Accounted Amount
161388  , p_source_95            IN NUMBER
161389 --Purchasing Encumbrance Type Identifier
161390  , p_source_96            IN NUMBER
161391 --Accounting Line Type
161392  , p_source_97            IN NUMBER
161393 --Costing Encumbrance Upgrade Option
161394  , p_source_100            IN VARCHAR2
161395 --TXN_PO_DISTRIBUTION_ID
161396  , p_source_101            IN NUMBER
161397 )
161398 IS
161399 
161400 l_component_type              VARCHAR2(80);
161401 l_component_code              VARCHAR2(30);
161402 l_component_type_code         VARCHAR2(1);
161403 l_component_appl_id           INTEGER;
161404 l_amb_context_code            VARCHAR2(30);
161405 l_entity_code                 VARCHAR2(30);
161406 l_event_class_code            VARCHAR2(30);
161407 l_ae_header_id                NUMBER;
161408 l_event_type_code             VARCHAR2(30);
161409 l_line_definition_code        VARCHAR2(30);
161410 l_line_definition_owner_code  VARCHAR2(1);
161411 --
161412 -- adr variables
161413 l_segment                     VARCHAR2(30);
161414 l_ccid                        NUMBER;
161415 l_adr_transaction_coa_id      NUMBER;
161416 l_adr_accounting_coa_id       NUMBER;
161417 l_adr_flexfield_segment_code  VARCHAR2(30);
161418 l_adr_flex_value_set_id       NUMBER;
161419 l_adr_value_type_code         VARCHAR2(30);
161420 l_adr_value_combination_id    NUMBER;
161421 l_adr_value_segment_code      VARCHAR2(30);
161422 
161423 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
161424 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
161425 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
161426 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
161427 
161428 -- 4262811 Variables ------------------------------------------------------------------------------------------
161429 l_entered_amt_idx             NUMBER;
161430 l_accted_amt_idx              NUMBER;
161431 l_acc_rev_flag                VARCHAR2(1);
161432 l_accrual_line_num            NUMBER;
161433 l_tmp_amt                     NUMBER;
161434 l_acc_rev_natural_side_code   VARCHAR2(1);
161435 
161436 l_num_entries                 NUMBER;
161437 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
161438 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
161439 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
161440 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
161441 l_recog_line_1                NUMBER;
161442 l_recog_line_2                NUMBER;
161443 
161444 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
161445 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
161446 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
161447 
161448 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
161449 
161450 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
161451 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
161452 
161453 ---------------------------------------------------------------------------------------------------------------
161454 
161455 
161456 --
161457 -- bulk performance
161458 --
161459 l_balance_type_code           VARCHAR2(1);
161460 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
161461 l_log_module                  VARCHAR2(240);
161462 
161463 --
161464 -- Upgrade strategy
161465 --
161466 l_actual_upg_option           VARCHAR2(1);
161467 l_enc_upg_option           VARCHAR2(1);
161468 
161469 --
161470 BEGIN
161471 --
161472 IF g_log_enabled THEN
161473       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_300';
161474 END IF;
161475 --
161476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161477 
161478       trace
161479          (p_msg      => 'BEGIN of AcctLineType_300'
161480          ,p_level    => C_LEVEL_PROCEDURE
161481          ,p_module   => l_log_module);
161482 
161483 END IF;
161484 --
161485 l_component_type             := 'AMB_JLT';
161486 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
161487 l_component_type_code        := 'S';
161488 l_component_appl_id          :=  707;
161489 l_amb_context_code           := 'DEFAULT';
161490 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
161491 l_event_class_code           := 'PURCHASE_ORDER';
161492 l_event_type_code            := 'LOG_PO_DEL_INV';
161493 l_line_definition_owner_code := 'S';
161494 l_line_definition_code       := 'PI_LOG_DEL_INV';
161495 --
161496 l_balance_type_code          := 'A';
161497 l_segment                     := NULL;
161498 l_ccid                        := NULL;
161499 l_adr_transaction_coa_id      := NULL;
161500 l_adr_accounting_coa_id       := NULL;
161501 l_adr_flexfield_segment_code  := NULL;
161502 l_adr_flex_value_set_id       := NULL;
161503 l_adr_value_type_code         := NULL;
161504 l_adr_value_combination_id    := NULL;
161505 l_adr_value_segment_code      := NULL;
161506 
161507 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
161508 l_bflow_class_code           := '';    -- 4219869 Business Flow
161509 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
161510 l_budgetary_control_flag     := 'N';
161511 
161512 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
161513 l_bflow_applied_to_amt       := NULL; -- 5132302
161514 l_entered_amt_idx            := NULL;          -- 4262811
161515 l_accted_amt_idx             := NULL;          -- 4262811
161516 l_acc_rev_flag               := NULL;          -- 4262811
161517 l_accrual_line_num           := NULL;          -- 4262811
161518 l_tmp_amt                    := NULL;          -- 4262811
161519 --
161520  
161521 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
161522     l_balance_type_code <> 'B' THEN
161523 IF NVL(p_source_97,9E125) =  3
161524  THEN 
161525 
161526    --
161527    XLA_AE_LINES_PKG.SetNewLine;
161528 
161529    p_balance_type_code          := l_balance_type_code;
161530    -- set the flag so later we will know whether the gain loss line needs to be created
161531    
161532    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
161533      p_actual_flag :='A';
161534    END IF;
161535 
161536    --
161537    -- bulk performance
161538    --
161539    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
161540                                       p_header_num   => 0); -- 4262811
161541    --
161542    -- set accounting line options
161543    --
161544    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
161545            p_natural_side_code          => 'D'
161546          , p_gain_or_loss_flag          => 'N'
161547          , p_gl_transfer_mode_code      => 'S'
161548          , p_acct_entry_type_code       => 'A'
161549          , p_switch_side_flag           => 'Y'
161550          , p_merge_duplicate_code       => 'N'
161551          );
161552    --
161553    l_acc_rev_natural_side_code := 'C';  -- 4262811
161554    -- 
161555    --
161556    -- set accounting line type info
161557    --
161558    xla_ae_lines_pkg.SetAcctLineType
161559       (p_component_type             => l_component_type
161560       ,p_event_type_code            => l_event_type_code
161561       ,p_line_definition_owner_code => l_line_definition_owner_code
161562       ,p_line_definition_code       => l_line_definition_code
161563       ,p_accounting_line_code       => l_component_code
161564       ,p_accounting_line_type_code  => l_component_type_code
161565       ,p_accounting_line_appl_id    => l_component_appl_id
161566       ,p_amb_context_code           => l_amb_context_code
161567       ,p_entity_code                => l_entity_code
161568       ,p_event_class_code           => l_event_class_code);
161569    --
161570    -- set accounting class
161571    --
161572    xla_ae_lines_pkg.SetAcctClass(
161573            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
161574          , p_ae_header_id           => l_ae_header_id
161575          );
161576 
161577    --
161578    -- set rounding class
161579    --
161580    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
161581                       'MATERIAL_OVERHEAD_ABSORPTION';
161582 
161583    --
161584    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
161585    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
161586    --
161587    -- bulk performance
161588    --
161589    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
161590 
161591    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
161592       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
161593 
161594    -- 4955764
161595    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
161596       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
161597 
161598    -- 4458381 Public Sector Enh
161599    
161600    --
161601    -- set accounting attributes for the line type
161602    --
161603    l_entered_amt_idx := 17;
161604    l_accted_amt_idx  := 22;
161605    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
161606    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
161607    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
161608    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
161609    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
161610    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
161611    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
161612    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
161613    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
161614    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
161615    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
161616    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
161617    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
161618    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
161619    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
161620    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
161621    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
161622    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
161623    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
161624    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
161625    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
161626    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
161627    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
161628    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
161629    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
161630    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
161631    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
161632    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
161633    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
161634    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
161635    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
161636    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
161637    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
161638    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
161639    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
161640    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
161641    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
161642    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
161643    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
161644    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
161645    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
161646    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
161647    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
161648    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
161649    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
161650    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
161651    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
161652    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
161653    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
161654 
161655    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
161656    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
161657 
161658    ---------------------------------------------------------------------------------------------------------------
161659    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
161660    ---------------------------------------------------------------------------------------------------------------
161661    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
161662 
161663    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
161664    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
161665 
161666    IF xla_accounting_cache_pkg.GetValueChar
161667          (p_source_code         => 'LEDGER_CATEGORY_CODE'
161668          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
161669    AND l_bflow_method_code = 'PRIOR_ENTRY'
161670 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
161671    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
161672          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
161673        )
161674    THEN
161675          xla_ae_lines_pkg.BflowUpgEntry
161676            (p_business_method_code    => l_bflow_method_code
161677            ,p_business_class_code     => l_bflow_class_code
161678            ,p_balance_type            => l_balance_type_code);
161679    ELSE
161680       NULL;
161681 -- No business flow processing for business flow method of NONE.
161682    END IF;
161683 
161684    --
161685    -- call analytical criteria
161686    --
161687    
161688    --
161689    -- call description
161690    --
161691    
161692 xla_ae_lines_pkg.SetLineDescription(
161693    p_ae_header_id => l_ae_header_id
161694   ,p_description  => Description_1 (
161695      p_application_id         => p_application_id
161696    , p_ae_header_id           => l_ae_header_id 
161697 , p_source_1 => p_source_1
161698 , p_source_2 => p_source_2
161699 , p_source_3 => p_source_3
161700 , p_source_4 => p_source_4
161701 , p_source_5 => p_source_5
161702    )
161703 );
161704 
161705 
161706    --
161707    -- call ADRs
161708    -- Bug 4922099
161709    --
161710    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
161711         (NVL(l_actual_upg_option, 'N') = 'O') OR
161712         (NVL(l_enc_upg_option, 'N') = 'O')
161713       )
161714    THEN
161715    NULL;
161716    --
161717    --
161718    
161719   l_ccid := AcctDerRule_6(
161720            p_application_id           => p_application_id
161721          , p_ae_header_id             => l_ae_header_id 
161722 , p_source_11 => p_source_11
161723          , x_transaction_coa_id       => l_adr_transaction_coa_id
161724          , x_accounting_coa_id        => l_adr_accounting_coa_id
161725          , x_value_type_code          => l_adr_value_type_code
161726          , p_side                     => 'NA'
161727    );
161728 
161729    xla_ae_lines_pkg.set_ccid(
161730     p_code_combination_id          => l_ccid
161731   , p_value_type_code              => l_adr_value_type_code
161732   , p_transaction_coa_id           => l_adr_transaction_coa_id
161733   , p_accounting_coa_id            => l_adr_accounting_coa_id
161734   , p_adr_code                     => 'CST_DEFAULT'
161735   , p_adr_type_code                => 'S'
161736   , p_component_type               => l_component_type
161737   , p_component_code               => l_component_code
161738   , p_component_type_code          => l_component_type_code
161739   , p_component_appl_id            => l_component_appl_id
161740   , p_amb_context_code             => l_amb_context_code
161741   , p_side                         => 'NA'
161742   );
161743 
161744 
161745    --
161746    --
161747    END IF;
161748    --
161749    -- Bug 4922099
161750    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
161751           (NVL(l_enc_upg_option, 'N') = 'O')
161752         ) AND
161753         (l_bflow_method_code = 'PRIOR_ENTRY')
161754       )
161755    THEN
161756       IF
161757       --
161758       1 = 2
161759       --
161760       THEN
161761       xla_accounting_err_pkg.build_message
161762                                     (p_appli_s_name            => 'XLA'
161763                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
161764                                     ,p_token_1                 => 'LINE_NUMBER'
161765                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
161766                                     ,p_token_2                 => 'LINE_TYPE_NAME'
161767                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
161768                                                                              l_component_type
161769                                                                             ,l_component_code
161770                                                                             ,l_component_type_code
161771                                                                             ,l_component_appl_id
161772                                                                             ,l_amb_context_code
161773                                                                             ,l_entity_code
161774                                                                             ,l_event_class_code
161775                                                                            )
161776                                     ,p_token_3                 => 'OWNER'
161777                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
161778                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
161779                                                                           ,p_lookup_code    => l_component_type_code
161780                                                                          )
161781                                     ,p_token_4                 => 'PRODUCT_NAME'
161782                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
161783                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
161784                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
161785                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
161786                                     ,p_ae_header_id            =>  NULL
161787                                        );
161788 
161789         IF (C_LEVEL_ERROR>= g_log_level) THEN
161790                  trace
161791                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
161792                       ,p_level    => C_LEVEL_ERROR
161793                       ,p_module   => l_log_module);
161794         END IF;
161795       END IF;
161796    END IF;
161797    --
161798    --
161799    ------------------------------------------------------------------------------------------------
161800    -- 4219869 Business Flow
161801    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
161802    -- Prior Entry.  Currently, the following code is always generated.
161803    ------------------------------------------------------------------------------------------------
161804    XLA_AE_LINES_PKG.ValidateCurrentLine;
161805 
161806    ------------------------------------------------------------------------------------
161807    -- 4219869 Business Flow
161808    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
161809    ------------------------------------------------------------------------------------
161810    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
161811 
161812    ----------------------------------------------------------------------------------
161813    -- 4219869 Business Flow
161814    -- Update journal entry status -- Need to generate this within IF <condition>
161815    ----------------------------------------------------------------------------------
161816    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
161817          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
161818          ,p_balance_type_code => l_balance_type_code
161819          );
161820 
161821    -------------------------------------------------------------------------------------------
161822    -- 4262811 - Generate the Accrual Reversal lines
161823    -------------------------------------------------------------------------------------------
161824    BEGIN
161825       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
161826                               (g_array_event(p_event_id).array_value_num('header_index'));
161827       IF l_acc_rev_flag IS NULL THEN
161828          l_acc_rev_flag := 'N';
161829       END IF;
161830    EXCEPTION
161831       WHEN OTHERS THEN
161832          l_acc_rev_flag := 'N';
161833    END;
161834    --
161835    IF (l_acc_rev_flag = 'Y') THEN
161836 
161837        -- 4645092  ------------------------------------------------------------------------------
161838        -- To allow MPA report to determine if it should generate report process
161839        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
161840        ------------------------------------------------------------------------------------------
161841 
161842        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
161843        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
161844    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
161845    -- call ADRs
161846    -- Bug 4922099
161847    --
161848    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
161849         (NVL(l_actual_upg_option, 'N') = 'O') OR
161850         (NVL(l_enc_upg_option, 'N') = 'O')
161851       )
161852    THEN
161853    NULL;
161854    --
161855    --
161856    
161857   l_ccid := AcctDerRule_6(
161858            p_application_id           => p_application_id
161859          , p_ae_header_id             => l_ae_header_id 
161860 , p_source_11 => p_source_11
161861          , x_transaction_coa_id       => l_adr_transaction_coa_id
161862          , x_accounting_coa_id        => l_adr_accounting_coa_id
161863          , x_value_type_code          => l_adr_value_type_code
161864          , p_side                     => 'NA'
161865    );
161866 
161867    xla_ae_lines_pkg.set_ccid(
161868     p_code_combination_id          => l_ccid
161869   , p_value_type_code              => l_adr_value_type_code
161870   , p_transaction_coa_id           => l_adr_transaction_coa_id
161871   , p_accounting_coa_id            => l_adr_accounting_coa_id
161872   , p_adr_code                     => 'CST_DEFAULT'
161873   , p_adr_type_code                => 'S'
161874   , p_component_type               => l_component_type
161875   , p_component_code               => l_component_code
161876   , p_component_type_code          => l_component_type_code
161877   , p_component_appl_id            => l_component_appl_id
161878   , p_amb_context_code             => l_amb_context_code
161879   , p_side                         => 'NA'
161880   );
161881 
161882 
161883    --
161884    --
161885    END IF;
161886 
161887        --
161888        -- Update the line information that should be overwritten
161889        --
161890        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
161891                                          p_header_num   => 1);
161892        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
161893 
161894        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
161895 
161896        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
161897           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
161898        END IF;
161899 
161900       --
161901       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
161902       --
161903       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
161904           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
161905       ELSE
161906           ---------------------------------------------------------------------------------------------------
161907           -- 4262811a Switch Sign
161908           ---------------------------------------------------------------------------------------------------
161909           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
161910           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
161911                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
161912           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
161913                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
161914           -- 5132302
161915           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
161916                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
161917 
161918       END IF;
161919 
161920       -- 4955764
161921       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
161922       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
161923 
161924 
161925       XLA_AE_LINES_PKG.ValidateCurrentLine;
161926       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
161927 
161928       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
161929                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
161930                ,p_balance_type_code => l_balance_type_code);
161931 
161932    END IF;
161933 
161934    -----------------------------------------------------------------------------------------
161935    -- 4262811 Multiperiod Accounting
161936    -----------------------------------------------------------------------------------------
161937      -- No MPA option is assigned.
161938 
161939 
161940 END IF;
161941 END IF;
161942 --
161943 
161944 --
161945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161946    trace
161947       (p_msg      => 'END of AcctLineType_300'
161948       ,p_level    => C_LEVEL_PROCEDURE
161949       ,p_module   => l_log_module);
161950 END IF;
161951 --
161952 EXCEPTION
161953   WHEN xla_exceptions_pkg.application_exception THEN
161954       RAISE;
161955   WHEN OTHERS THEN
161956        xla_exceptions_pkg.raise_message
161957            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_300');
161958 END AcctLineType_300;
161959 --
161960 
161961 ---------------------------------------
161962 --
161963 -- PRIVATE FUNCTION
161964 --         AcctLineType_301
161965 --
161966 ---------------------------------------
161967 PROCEDURE AcctLineType_301 (
161968   p_application_id        IN NUMBER
161969  ,p_event_id              IN NUMBER
161970  ,p_calculate_acctd_flag  IN VARCHAR2
161971  ,p_calculate_g_l_flag    IN VARCHAR2
161972  ,p_actual_flag           IN OUT VARCHAR2
161973  ,p_balance_type_code     OUT VARCHAR2
161974  ,p_gain_or_loss_ref      OUT VARCHAR2
161975  
161976 --TRANSACTION_ID
161977  , p_source_1            IN NUMBER
161978 --Item Concatenated Segments
161979  , p_source_2            IN VARCHAR2
161980 --Transaction Quantity
161981  , p_source_3            IN NUMBER
161982 --Transaction Unit of Measure Code
161983  , p_source_4            IN VARCHAR2
161984 --Inventory Transaction Type Description
161985  , p_source_5            IN VARCHAR2
161986 --Cost Management Default Account
161987  , p_source_11            IN NUMBER
161988 --DISTRIBUTION_IDENTIFIER
161989  , p_source_84            IN NUMBER
161990 --Distribution Type
161991  , p_source_85            IN VARCHAR2
161992  , p_source_85_meaning    IN VARCHAR2
161993 --Entered Currency Code
161994  , p_source_88            IN VARCHAR2
161995 --Entered Amount
161996  , p_source_91            IN NUMBER
161997 --Currency Conversion Date
161998  , p_source_92            IN DATE
161999 --Currency Conversion Rate
162000  , p_source_93            IN NUMBER
162001 --Currency Conversion Type
162002  , p_source_94            IN VARCHAR2
162003 --Accounted Amount
162004  , p_source_95            IN NUMBER
162005 --Accounting Line Type
162006  , p_source_97            IN NUMBER
162007 )
162008 IS
162009 
162010 l_component_type              VARCHAR2(80);
162011 l_component_code              VARCHAR2(30);
162012 l_component_type_code         VARCHAR2(1);
162013 l_component_appl_id           INTEGER;
162014 l_amb_context_code            VARCHAR2(30);
162015 l_entity_code                 VARCHAR2(30);
162016 l_event_class_code            VARCHAR2(30);
162017 l_ae_header_id                NUMBER;
162018 l_event_type_code             VARCHAR2(30);
162019 l_line_definition_code        VARCHAR2(30);
162020 l_line_definition_owner_code  VARCHAR2(1);
162021 --
162022 -- adr variables
162023 l_segment                     VARCHAR2(30);
162024 l_ccid                        NUMBER;
162025 l_adr_transaction_coa_id      NUMBER;
162026 l_adr_accounting_coa_id       NUMBER;
162027 l_adr_flexfield_segment_code  VARCHAR2(30);
162028 l_adr_flex_value_set_id       NUMBER;
162029 l_adr_value_type_code         VARCHAR2(30);
162030 l_adr_value_combination_id    NUMBER;
162031 l_adr_value_segment_code      VARCHAR2(30);
162032 
162033 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
162034 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
162035 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
162036 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
162037 
162038 -- 4262811 Variables ------------------------------------------------------------------------------------------
162039 l_entered_amt_idx             NUMBER;
162040 l_accted_amt_idx              NUMBER;
162041 l_acc_rev_flag                VARCHAR2(1);
162042 l_accrual_line_num            NUMBER;
162043 l_tmp_amt                     NUMBER;
162044 l_acc_rev_natural_side_code   VARCHAR2(1);
162045 
162046 l_num_entries                 NUMBER;
162047 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
162048 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
162049 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
162050 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
162051 l_recog_line_1                NUMBER;
162052 l_recog_line_2                NUMBER;
162053 
162054 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
162055 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
162056 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
162057 
162058 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
162059 
162060 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
162061 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
162062 
162063 ---------------------------------------------------------------------------------------------------------------
162064 
162065 
162066 --
162067 -- bulk performance
162068 --
162069 l_balance_type_code           VARCHAR2(1);
162070 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
162071 l_log_module                  VARCHAR2(240);
162072 
162073 --
162074 -- Upgrade strategy
162075 --
162076 l_actual_upg_option           VARCHAR2(1);
162077 l_enc_upg_option           VARCHAR2(1);
162078 
162079 --
162080 BEGIN
162081 --
162082 IF g_log_enabled THEN
162083       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_301';
162084 END IF;
162085 --
162086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162087 
162088       trace
162089          (p_msg      => 'BEGIN of AcctLineType_301'
162090          ,p_level    => C_LEVEL_PROCEDURE
162091          ,p_module   => l_log_module);
162092 
162093 END IF;
162094 --
162095 l_component_type             := 'AMB_JLT';
162096 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
162097 l_component_type_code        := 'S';
162098 l_component_appl_id          :=  707;
162099 l_amb_context_code           := 'DEFAULT';
162100 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
162101 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
162102 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
162103 l_line_definition_owner_code := 'S';
162104 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
162105 --
162106 l_balance_type_code          := 'A';
162107 l_segment                     := NULL;
162108 l_ccid                        := NULL;
162109 l_adr_transaction_coa_id      := NULL;
162110 l_adr_accounting_coa_id       := NULL;
162111 l_adr_flexfield_segment_code  := NULL;
162112 l_adr_flex_value_set_id       := NULL;
162113 l_adr_value_type_code         := NULL;
162114 l_adr_value_combination_id    := NULL;
162115 l_adr_value_segment_code      := NULL;
162116 
162117 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
162118 l_bflow_class_code           := '';    -- 4219869 Business Flow
162119 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
162120 l_budgetary_control_flag     := 'N';
162121 
162122 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
162123 l_bflow_applied_to_amt       := NULL; -- 5132302
162124 l_entered_amt_idx            := NULL;          -- 4262811
162125 l_accted_amt_idx             := NULL;          -- 4262811
162126 l_acc_rev_flag               := NULL;          -- 4262811
162127 l_accrual_line_num           := NULL;          -- 4262811
162128 l_tmp_amt                    := NULL;          -- 4262811
162129 --
162130  
162131 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
162132     l_balance_type_code <> 'B' THEN
162133 IF NVL(p_source_97,9E125) =  3
162134  THEN 
162135 
162136    --
162137    XLA_AE_LINES_PKG.SetNewLine;
162138 
162139    p_balance_type_code          := l_balance_type_code;
162140    -- set the flag so later we will know whether the gain loss line needs to be created
162141    
162142    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
162143      p_actual_flag :='A';
162144    END IF;
162145 
162146    --
162147    -- bulk performance
162148    --
162149    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
162150                                       p_header_num   => 0); -- 4262811
162151    --
162152    -- set accounting line options
162153    --
162154    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
162155            p_natural_side_code          => 'D'
162156          , p_gain_or_loss_flag          => 'N'
162157          , p_gl_transfer_mode_code      => 'S'
162158          , p_acct_entry_type_code       => 'A'
162159          , p_switch_side_flag           => 'Y'
162160          , p_merge_duplicate_code       => 'N'
162161          );
162162    --
162163    l_acc_rev_natural_side_code := 'C';  -- 4262811
162164    -- 
162165    --
162166    -- set accounting line type info
162167    --
162168    xla_ae_lines_pkg.SetAcctLineType
162169       (p_component_type             => l_component_type
162170       ,p_event_type_code            => l_event_type_code
162171       ,p_line_definition_owner_code => l_line_definition_owner_code
162172       ,p_line_definition_code       => l_line_definition_code
162173       ,p_accounting_line_code       => l_component_code
162174       ,p_accounting_line_type_code  => l_component_type_code
162175       ,p_accounting_line_appl_id    => l_component_appl_id
162176       ,p_amb_context_code           => l_amb_context_code
162177       ,p_entity_code                => l_entity_code
162178       ,p_event_class_code           => l_event_class_code);
162179    --
162180    -- set accounting class
162181    --
162182    xla_ae_lines_pkg.SetAcctClass(
162183            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
162184          , p_ae_header_id           => l_ae_header_id
162185          );
162186 
162187    --
162188    -- set rounding class
162189    --
162190    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
162191                       'MATERIAL_OVERHEAD_ABSORPTION';
162192 
162193    --
162194    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
162195    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
162196    --
162197    -- bulk performance
162198    --
162199    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
162200 
162201    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
162202       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
162203 
162204    -- 4955764
162205    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
162206       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
162207 
162208    -- 4458381 Public Sector Enh
162209    
162210    --
162211    -- set accounting attributes for the line type
162212    --
162213    l_entered_amt_idx := 3;
162214    l_accted_amt_idx  := 8;
162215    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
162216    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
162217    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
162218    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
162219    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
162220    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
162221    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
162222    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
162223    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
162224    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
162225    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
162226    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
162227    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
162228    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
162229    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
162230    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
162231    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
162232 
162233    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
162234    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
162235 
162236    ---------------------------------------------------------------------------------------------------------------
162237    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
162238    ---------------------------------------------------------------------------------------------------------------
162239    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
162240 
162241    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
162242    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
162243 
162244    IF xla_accounting_cache_pkg.GetValueChar
162245          (p_source_code         => 'LEDGER_CATEGORY_CODE'
162246          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
162247    AND l_bflow_method_code = 'PRIOR_ENTRY'
162248 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
162249    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
162250          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
162251        )
162252    THEN
162253          xla_ae_lines_pkg.BflowUpgEntry
162254            (p_business_method_code    => l_bflow_method_code
162255            ,p_business_class_code     => l_bflow_class_code
162256            ,p_balance_type            => l_balance_type_code);
162257    ELSE
162258       NULL;
162259 -- No business flow processing for business flow method of NONE.
162260    END IF;
162261 
162262    --
162263    -- call analytical criteria
162264    --
162265    
162266    --
162267    -- call description
162268    --
162269    
162270 xla_ae_lines_pkg.SetLineDescription(
162271    p_ae_header_id => l_ae_header_id
162272   ,p_description  => Description_1 (
162273      p_application_id         => p_application_id
162274    , p_ae_header_id           => l_ae_header_id 
162275 , p_source_1 => p_source_1
162276 , p_source_2 => p_source_2
162277 , p_source_3 => p_source_3
162278 , p_source_4 => p_source_4
162279 , p_source_5 => p_source_5
162280    )
162281 );
162282 
162283 
162284    --
162285    -- call ADRs
162286    -- Bug 4922099
162287    --
162288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
162289         (NVL(l_actual_upg_option, 'N') = 'O') OR
162290         (NVL(l_enc_upg_option, 'N') = 'O')
162291       )
162292    THEN
162293    NULL;
162294    --
162295    --
162296    
162297   l_ccid := AcctDerRule_6(
162298            p_application_id           => p_application_id
162299          , p_ae_header_id             => l_ae_header_id 
162300 , p_source_11 => p_source_11
162301          , x_transaction_coa_id       => l_adr_transaction_coa_id
162302          , x_accounting_coa_id        => l_adr_accounting_coa_id
162303          , x_value_type_code          => l_adr_value_type_code
162304          , p_side                     => 'NA'
162305    );
162306 
162307    xla_ae_lines_pkg.set_ccid(
162308     p_code_combination_id          => l_ccid
162309   , p_value_type_code              => l_adr_value_type_code
162310   , p_transaction_coa_id           => l_adr_transaction_coa_id
162311   , p_accounting_coa_id            => l_adr_accounting_coa_id
162312   , p_adr_code                     => 'CST_DEFAULT'
162313   , p_adr_type_code                => 'S'
162314   , p_component_type               => l_component_type
162315   , p_component_code               => l_component_code
162316   , p_component_type_code          => l_component_type_code
162317   , p_component_appl_id            => l_component_appl_id
162318   , p_amb_context_code             => l_amb_context_code
162319   , p_side                         => 'NA'
162320   );
162321 
162322 
162323    --
162324    --
162325    END IF;
162326    --
162327    -- Bug 4922099
162328    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
162329           (NVL(l_enc_upg_option, 'N') = 'O')
162330         ) AND
162331         (l_bflow_method_code = 'PRIOR_ENTRY')
162332       )
162333    THEN
162334       IF
162335       --
162336       1 = 2
162337       --
162338       THEN
162339       xla_accounting_err_pkg.build_message
162340                                     (p_appli_s_name            => 'XLA'
162341                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
162342                                     ,p_token_1                 => 'LINE_NUMBER'
162343                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
162344                                     ,p_token_2                 => 'LINE_TYPE_NAME'
162345                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
162346                                                                              l_component_type
162347                                                                             ,l_component_code
162348                                                                             ,l_component_type_code
162349                                                                             ,l_component_appl_id
162350                                                                             ,l_amb_context_code
162351                                                                             ,l_entity_code
162352                                                                             ,l_event_class_code
162353                                                                            )
162354                                     ,p_token_3                 => 'OWNER'
162355                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
162356                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
162357                                                                           ,p_lookup_code    => l_component_type_code
162358                                                                          )
162359                                     ,p_token_4                 => 'PRODUCT_NAME'
162360                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
162361                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
162362                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
162363                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
162364                                     ,p_ae_header_id            =>  NULL
162365                                        );
162366 
162367         IF (C_LEVEL_ERROR>= g_log_level) THEN
162368                  trace
162369                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
162370                       ,p_level    => C_LEVEL_ERROR
162371                       ,p_module   => l_log_module);
162372         END IF;
162373       END IF;
162374    END IF;
162375    --
162376    --
162377    ------------------------------------------------------------------------------------------------
162378    -- 4219869 Business Flow
162379    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
162380    -- Prior Entry.  Currently, the following code is always generated.
162381    ------------------------------------------------------------------------------------------------
162382    XLA_AE_LINES_PKG.ValidateCurrentLine;
162383 
162384    ------------------------------------------------------------------------------------
162385    -- 4219869 Business Flow
162386    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
162387    ------------------------------------------------------------------------------------
162388    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
162389 
162390    ----------------------------------------------------------------------------------
162391    -- 4219869 Business Flow
162392    -- Update journal entry status -- Need to generate this within IF <condition>
162393    ----------------------------------------------------------------------------------
162394    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
162395          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
162396          ,p_balance_type_code => l_balance_type_code
162397          );
162398 
162399    -------------------------------------------------------------------------------------------
162400    -- 4262811 - Generate the Accrual Reversal lines
162401    -------------------------------------------------------------------------------------------
162402    BEGIN
162403       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
162404                               (g_array_event(p_event_id).array_value_num('header_index'));
162405       IF l_acc_rev_flag IS NULL THEN
162406          l_acc_rev_flag := 'N';
162407       END IF;
162408    EXCEPTION
162409       WHEN OTHERS THEN
162410          l_acc_rev_flag := 'N';
162411    END;
162412    --
162413    IF (l_acc_rev_flag = 'Y') THEN
162414 
162415        -- 4645092  ------------------------------------------------------------------------------
162416        -- To allow MPA report to determine if it should generate report process
162417        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
162418        ------------------------------------------------------------------------------------------
162419 
162420        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
162421        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
162422    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
162423    -- call ADRs
162424    -- Bug 4922099
162425    --
162426    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
162427         (NVL(l_actual_upg_option, 'N') = 'O') OR
162428         (NVL(l_enc_upg_option, 'N') = 'O')
162429       )
162430    THEN
162431    NULL;
162432    --
162433    --
162434    
162435   l_ccid := AcctDerRule_6(
162436            p_application_id           => p_application_id
162437          , p_ae_header_id             => l_ae_header_id 
162438 , p_source_11 => p_source_11
162439          , x_transaction_coa_id       => l_adr_transaction_coa_id
162440          , x_accounting_coa_id        => l_adr_accounting_coa_id
162441          , x_value_type_code          => l_adr_value_type_code
162442          , p_side                     => 'NA'
162443    );
162444 
162445    xla_ae_lines_pkg.set_ccid(
162446     p_code_combination_id          => l_ccid
162447   , p_value_type_code              => l_adr_value_type_code
162448   , p_transaction_coa_id           => l_adr_transaction_coa_id
162449   , p_accounting_coa_id            => l_adr_accounting_coa_id
162450   , p_adr_code                     => 'CST_DEFAULT'
162451   , p_adr_type_code                => 'S'
162452   , p_component_type               => l_component_type
162453   , p_component_code               => l_component_code
162454   , p_component_type_code          => l_component_type_code
162455   , p_component_appl_id            => l_component_appl_id
162456   , p_amb_context_code             => l_amb_context_code
162457   , p_side                         => 'NA'
162458   );
162459 
162460 
162461    --
162462    --
162463    END IF;
162464 
162465        --
162466        -- Update the line information that should be overwritten
162467        --
162468        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
162469                                          p_header_num   => 1);
162470        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
162471 
162472        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
162473 
162474        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
162475           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
162476        END IF;
162477 
162478       --
162479       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
162480       --
162481       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
162482           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
162483       ELSE
162484           ---------------------------------------------------------------------------------------------------
162485           -- 4262811a Switch Sign
162486           ---------------------------------------------------------------------------------------------------
162487           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
162488           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
162489                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
162490           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
162491                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
162492           -- 5132302
162493           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
162494                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
162495 
162496       END IF;
162497 
162498       -- 4955764
162499       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
162500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
162501 
162502 
162503       XLA_AE_LINES_PKG.ValidateCurrentLine;
162504       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
162505 
162506       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
162507                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
162508                ,p_balance_type_code => l_balance_type_code);
162509 
162510    END IF;
162511 
162512    -----------------------------------------------------------------------------------------
162513    -- 4262811 Multiperiod Accounting
162514    -----------------------------------------------------------------------------------------
162515      -- No MPA option is assigned.
162516 
162517 
162518 END IF;
162519 END IF;
162520 --
162521 
162522 --
162523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162524    trace
162525       (p_msg      => 'END of AcctLineType_301'
162526       ,p_level    => C_LEVEL_PROCEDURE
162527       ,p_module   => l_log_module);
162528 END IF;
162529 --
162530 EXCEPTION
162531   WHEN xla_exceptions_pkg.application_exception THEN
162532       RAISE;
162533   WHEN OTHERS THEN
162534        xla_exceptions_pkg.raise_message
162535            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_301');
162536 END AcctLineType_301;
162537 --
162538 
162539 ---------------------------------------
162540 --
162541 -- PRIVATE FUNCTION
162542 --         AcctLineType_302
162543 --
162544 ---------------------------------------
162545 PROCEDURE AcctLineType_302 (
162546   p_application_id        IN NUMBER
162547  ,p_event_id              IN NUMBER
162548  ,p_calculate_acctd_flag  IN VARCHAR2
162549  ,p_calculate_g_l_flag    IN VARCHAR2
162550  ,p_actual_flag           IN OUT VARCHAR2
162551  ,p_balance_type_code     OUT VARCHAR2
162552  ,p_gain_or_loss_ref      OUT VARCHAR2
162553  
162554 --TRANSACTION_ID
162555  , p_source_1            IN NUMBER
162556 --Item Concatenated Segments
162557  , p_source_2            IN VARCHAR2
162558 --Transaction Quantity
162559  , p_source_3            IN NUMBER
162560 --Transaction Unit of Measure Code
162561  , p_source_4            IN VARCHAR2
162562 --Inventory Transaction Type Description
162563  , p_source_5            IN VARCHAR2
162564 --Cost Management Default Account
162565  , p_source_11            IN NUMBER
162566 --DISTRIBUTION_IDENTIFIER
162567  , p_source_84            IN NUMBER
162568 --Distribution Type
162569  , p_source_85            IN VARCHAR2
162570  , p_source_85_meaning    IN VARCHAR2
162571 --Entered Currency Code
162572  , p_source_88            IN VARCHAR2
162573 --Entered Amount
162574  , p_source_91            IN NUMBER
162575 --Currency Conversion Date
162576  , p_source_92            IN DATE
162577 --Currency Conversion Rate
162578  , p_source_93            IN NUMBER
162579 --Currency Conversion Type
162580  , p_source_94            IN VARCHAR2
162581 --Accounted Amount
162582  , p_source_95            IN NUMBER
162583 --Accounting Line Type
162584  , p_source_97            IN NUMBER
162585 )
162586 IS
162587 
162588 l_component_type              VARCHAR2(80);
162589 l_component_code              VARCHAR2(30);
162590 l_component_type_code         VARCHAR2(1);
162591 l_component_appl_id           INTEGER;
162592 l_amb_context_code            VARCHAR2(30);
162593 l_entity_code                 VARCHAR2(30);
162594 l_event_class_code            VARCHAR2(30);
162595 l_ae_header_id                NUMBER;
162596 l_event_type_code             VARCHAR2(30);
162597 l_line_definition_code        VARCHAR2(30);
162598 l_line_definition_owner_code  VARCHAR2(1);
162599 --
162600 -- adr variables
162601 l_segment                     VARCHAR2(30);
162602 l_ccid                        NUMBER;
162603 l_adr_transaction_coa_id      NUMBER;
162604 l_adr_accounting_coa_id       NUMBER;
162605 l_adr_flexfield_segment_code  VARCHAR2(30);
162606 l_adr_flex_value_set_id       NUMBER;
162607 l_adr_value_type_code         VARCHAR2(30);
162608 l_adr_value_combination_id    NUMBER;
162609 l_adr_value_segment_code      VARCHAR2(30);
162610 
162611 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
162612 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
162613 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
162614 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
162615 
162616 -- 4262811 Variables ------------------------------------------------------------------------------------------
162617 l_entered_amt_idx             NUMBER;
162618 l_accted_amt_idx              NUMBER;
162619 l_acc_rev_flag                VARCHAR2(1);
162620 l_accrual_line_num            NUMBER;
162621 l_tmp_amt                     NUMBER;
162622 l_acc_rev_natural_side_code   VARCHAR2(1);
162623 
162624 l_num_entries                 NUMBER;
162625 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
162626 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
162627 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
162628 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
162629 l_recog_line_1                NUMBER;
162630 l_recog_line_2                NUMBER;
162631 
162632 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
162633 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
162634 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
162635 
162636 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
162637 
162638 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
162639 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
162640 
162641 ---------------------------------------------------------------------------------------------------------------
162642 
162643 
162644 --
162645 -- bulk performance
162646 --
162647 l_balance_type_code           VARCHAR2(1);
162648 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
162649 l_log_module                  VARCHAR2(240);
162650 
162651 --
162652 -- Upgrade strategy
162653 --
162654 l_actual_upg_option           VARCHAR2(1);
162655 l_enc_upg_option           VARCHAR2(1);
162656 
162657 --
162658 BEGIN
162659 --
162660 IF g_log_enabled THEN
162661       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_302';
162662 END IF;
162663 --
162664 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162665 
162666       trace
162667          (p_msg      => 'BEGIN of AcctLineType_302'
162668          ,p_level    => C_LEVEL_PROCEDURE
162669          ,p_module   => l_log_module);
162670 
162671 END IF;
162672 --
162673 l_component_type             := 'AMB_JLT';
162674 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
162675 l_component_type_code        := 'S';
162676 l_component_appl_id          :=  707;
162677 l_amb_context_code           := 'DEFAULT';
162678 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
162679 l_event_class_code           := 'DIR_INTERORG_SHIP';
162680 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
162681 l_line_definition_owner_code := 'S';
162682 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
162683 --
162684 l_balance_type_code          := 'A';
162685 l_segment                     := NULL;
162686 l_ccid                        := NULL;
162687 l_adr_transaction_coa_id      := NULL;
162688 l_adr_accounting_coa_id       := NULL;
162689 l_adr_flexfield_segment_code  := NULL;
162690 l_adr_flex_value_set_id       := NULL;
162691 l_adr_value_type_code         := NULL;
162692 l_adr_value_combination_id    := NULL;
162693 l_adr_value_segment_code      := NULL;
162694 
162695 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
162696 l_bflow_class_code           := '';    -- 4219869 Business Flow
162697 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
162698 l_budgetary_control_flag     := 'N';
162699 
162700 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
162701 l_bflow_applied_to_amt       := NULL; -- 5132302
162702 l_entered_amt_idx            := NULL;          -- 4262811
162703 l_accted_amt_idx             := NULL;          -- 4262811
162704 l_acc_rev_flag               := NULL;          -- 4262811
162705 l_accrual_line_num           := NULL;          -- 4262811
162706 l_tmp_amt                    := NULL;          -- 4262811
162707 --
162708  
162709 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
162710     l_balance_type_code <> 'B' THEN
162711 IF NVL(p_source_97,9E125) =  3
162712  THEN 
162713 
162714    --
162715    XLA_AE_LINES_PKG.SetNewLine;
162716 
162717    p_balance_type_code          := l_balance_type_code;
162718    -- set the flag so later we will know whether the gain loss line needs to be created
162719    
162720    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
162721      p_actual_flag :='A';
162722    END IF;
162723 
162724    --
162725    -- bulk performance
162726    --
162727    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
162728                                       p_header_num   => 0); -- 4262811
162729    --
162730    -- set accounting line options
162731    --
162732    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
162733            p_natural_side_code          => 'D'
162734          , p_gain_or_loss_flag          => 'N'
162735          , p_gl_transfer_mode_code      => 'S'
162736          , p_acct_entry_type_code       => 'A'
162737          , p_switch_side_flag           => 'Y'
162738          , p_merge_duplicate_code       => 'N'
162739          );
162740    --
162741    l_acc_rev_natural_side_code := 'C';  -- 4262811
162742    -- 
162743    --
162744    -- set accounting line type info
162745    --
162746    xla_ae_lines_pkg.SetAcctLineType
162747       (p_component_type             => l_component_type
162748       ,p_event_type_code            => l_event_type_code
162749       ,p_line_definition_owner_code => l_line_definition_owner_code
162750       ,p_line_definition_code       => l_line_definition_code
162751       ,p_accounting_line_code       => l_component_code
162752       ,p_accounting_line_type_code  => l_component_type_code
162753       ,p_accounting_line_appl_id    => l_component_appl_id
162754       ,p_amb_context_code           => l_amb_context_code
162755       ,p_entity_code                => l_entity_code
162756       ,p_event_class_code           => l_event_class_code);
162757    --
162758    -- set accounting class
162759    --
162760    xla_ae_lines_pkg.SetAcctClass(
162761            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
162762          , p_ae_header_id           => l_ae_header_id
162763          );
162764 
162765    --
162766    -- set rounding class
162767    --
162768    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
162769                       'MATERIAL_OVERHEAD_ABSORPTION';
162770 
162771    --
162772    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
162773    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
162774    --
162775    -- bulk performance
162776    --
162777    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
162778 
162779    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
162780       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
162781 
162782    -- 4955764
162783    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
162784       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
162785 
162786    -- 4458381 Public Sector Enh
162787    
162788    --
162789    -- set accounting attributes for the line type
162790    --
162791    l_entered_amt_idx := 3;
162792    l_accted_amt_idx  := 8;
162793    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
162794    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
162795    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
162796    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
162797    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
162798    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
162799    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
162800    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
162801    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
162802    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
162803    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
162804    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
162805    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
162806    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
162807    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
162808    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
162809    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
162810 
162811    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
162812    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
162813 
162814    ---------------------------------------------------------------------------------------------------------------
162815    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
162816    ---------------------------------------------------------------------------------------------------------------
162817    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
162818 
162819    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
162820    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
162821 
162822    IF xla_accounting_cache_pkg.GetValueChar
162823          (p_source_code         => 'LEDGER_CATEGORY_CODE'
162824          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
162825    AND l_bflow_method_code = 'PRIOR_ENTRY'
162826 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
162827    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
162828          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
162829        )
162830    THEN
162831          xla_ae_lines_pkg.BflowUpgEntry
162832            (p_business_method_code    => l_bflow_method_code
162833            ,p_business_class_code     => l_bflow_class_code
162834            ,p_balance_type            => l_balance_type_code);
162835    ELSE
162836       NULL;
162837 -- No business flow processing for business flow method of NONE.
162838    END IF;
162839 
162840    --
162841    -- call analytical criteria
162842    --
162843    
162844    --
162845    -- call description
162846    --
162847    
162848 xla_ae_lines_pkg.SetLineDescription(
162849    p_ae_header_id => l_ae_header_id
162850   ,p_description  => Description_1 (
162851      p_application_id         => p_application_id
162852    , p_ae_header_id           => l_ae_header_id 
162853 , p_source_1 => p_source_1
162854 , p_source_2 => p_source_2
162855 , p_source_3 => p_source_3
162856 , p_source_4 => p_source_4
162857 , p_source_5 => p_source_5
162858    )
162859 );
162860 
162861 
162862    --
162863    -- call ADRs
162864    -- Bug 4922099
162865    --
162866    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
162867         (NVL(l_actual_upg_option, 'N') = 'O') OR
162868         (NVL(l_enc_upg_option, 'N') = 'O')
162869       )
162870    THEN
162871    NULL;
162872    --
162873    --
162874    
162875   l_ccid := AcctDerRule_6(
162876            p_application_id           => p_application_id
162877          , p_ae_header_id             => l_ae_header_id 
162878 , p_source_11 => p_source_11
162879          , x_transaction_coa_id       => l_adr_transaction_coa_id
162880          , x_accounting_coa_id        => l_adr_accounting_coa_id
162881          , x_value_type_code          => l_adr_value_type_code
162882          , p_side                     => 'NA'
162883    );
162884 
162885    xla_ae_lines_pkg.set_ccid(
162886     p_code_combination_id          => l_ccid
162887   , p_value_type_code              => l_adr_value_type_code
162888   , p_transaction_coa_id           => l_adr_transaction_coa_id
162889   , p_accounting_coa_id            => l_adr_accounting_coa_id
162890   , p_adr_code                     => 'CST_DEFAULT'
162891   , p_adr_type_code                => 'S'
162892   , p_component_type               => l_component_type
162893   , p_component_code               => l_component_code
162894   , p_component_type_code          => l_component_type_code
162895   , p_component_appl_id            => l_component_appl_id
162896   , p_amb_context_code             => l_amb_context_code
162897   , p_side                         => 'NA'
162898   );
162899 
162900 
162901    --
162902    --
162903    END IF;
162904    --
162905    -- Bug 4922099
162906    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
162907           (NVL(l_enc_upg_option, 'N') = 'O')
162908         ) AND
162909         (l_bflow_method_code = 'PRIOR_ENTRY')
162910       )
162911    THEN
162912       IF
162913       --
162914       1 = 2
162915       --
162916       THEN
162917       xla_accounting_err_pkg.build_message
162918                                     (p_appli_s_name            => 'XLA'
162919                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
162920                                     ,p_token_1                 => 'LINE_NUMBER'
162921                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
162922                                     ,p_token_2                 => 'LINE_TYPE_NAME'
162923                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
162924                                                                              l_component_type
162925                                                                             ,l_component_code
162926                                                                             ,l_component_type_code
162927                                                                             ,l_component_appl_id
162928                                                                             ,l_amb_context_code
162929                                                                             ,l_entity_code
162930                                                                             ,l_event_class_code
162931                                                                            )
162932                                     ,p_token_3                 => 'OWNER'
162933                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
162934                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
162935                                                                           ,p_lookup_code    => l_component_type_code
162936                                                                          )
162937                                     ,p_token_4                 => 'PRODUCT_NAME'
162938                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
162939                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
162940                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
162941                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
162942                                     ,p_ae_header_id            =>  NULL
162943                                        );
162944 
162945         IF (C_LEVEL_ERROR>= g_log_level) THEN
162946                  trace
162947                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
162948                       ,p_level    => C_LEVEL_ERROR
162949                       ,p_module   => l_log_module);
162950         END IF;
162951       END IF;
162952    END IF;
162953    --
162954    --
162955    ------------------------------------------------------------------------------------------------
162956    -- 4219869 Business Flow
162957    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
162958    -- Prior Entry.  Currently, the following code is always generated.
162959    ------------------------------------------------------------------------------------------------
162960    XLA_AE_LINES_PKG.ValidateCurrentLine;
162961 
162962    ------------------------------------------------------------------------------------
162963    -- 4219869 Business Flow
162964    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
162965    ------------------------------------------------------------------------------------
162966    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
162967 
162968    ----------------------------------------------------------------------------------
162969    -- 4219869 Business Flow
162970    -- Update journal entry status -- Need to generate this within IF <condition>
162971    ----------------------------------------------------------------------------------
162972    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
162973          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
162974          ,p_balance_type_code => l_balance_type_code
162975          );
162976 
162977    -------------------------------------------------------------------------------------------
162978    -- 4262811 - Generate the Accrual Reversal lines
162979    -------------------------------------------------------------------------------------------
162980    BEGIN
162981       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
162982                               (g_array_event(p_event_id).array_value_num('header_index'));
162983       IF l_acc_rev_flag IS NULL THEN
162984          l_acc_rev_flag := 'N';
162985       END IF;
162986    EXCEPTION
162987       WHEN OTHERS THEN
162988          l_acc_rev_flag := 'N';
162989    END;
162990    --
162991    IF (l_acc_rev_flag = 'Y') THEN
162992 
162993        -- 4645092  ------------------------------------------------------------------------------
162994        -- To allow MPA report to determine if it should generate report process
162995        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
162996        ------------------------------------------------------------------------------------------
162997 
162998        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
162999        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
163000    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
163001    -- call ADRs
163002    -- Bug 4922099
163003    --
163004    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
163005         (NVL(l_actual_upg_option, 'N') = 'O') OR
163006         (NVL(l_enc_upg_option, 'N') = 'O')
163007       )
163008    THEN
163009    NULL;
163010    --
163011    --
163012    
163013   l_ccid := AcctDerRule_6(
163014            p_application_id           => p_application_id
163015          , p_ae_header_id             => l_ae_header_id 
163016 , p_source_11 => p_source_11
163017          , x_transaction_coa_id       => l_adr_transaction_coa_id
163018          , x_accounting_coa_id        => l_adr_accounting_coa_id
163019          , x_value_type_code          => l_adr_value_type_code
163020          , p_side                     => 'NA'
163021    );
163022 
163023    xla_ae_lines_pkg.set_ccid(
163024     p_code_combination_id          => l_ccid
163025   , p_value_type_code              => l_adr_value_type_code
163026   , p_transaction_coa_id           => l_adr_transaction_coa_id
163027   , p_accounting_coa_id            => l_adr_accounting_coa_id
163028   , p_adr_code                     => 'CST_DEFAULT'
163029   , p_adr_type_code                => 'S'
163030   , p_component_type               => l_component_type
163031   , p_component_code               => l_component_code
163032   , p_component_type_code          => l_component_type_code
163033   , p_component_appl_id            => l_component_appl_id
163034   , p_amb_context_code             => l_amb_context_code
163035   , p_side                         => 'NA'
163036   );
163037 
163038 
163039    --
163040    --
163041    END IF;
163042 
163043        --
163044        -- Update the line information that should be overwritten
163045        --
163046        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
163047                                          p_header_num   => 1);
163048        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
163049 
163050        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
163051 
163052        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
163053           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
163054        END IF;
163055 
163056       --
163057       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
163058       --
163059       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
163060           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
163061       ELSE
163062           ---------------------------------------------------------------------------------------------------
163063           -- 4262811a Switch Sign
163064           ---------------------------------------------------------------------------------------------------
163065           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
163066           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
163067                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
163068           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
163069                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
163070           -- 5132302
163071           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
163072                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
163073 
163074       END IF;
163075 
163076       -- 4955764
163077       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
163078       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
163079 
163080 
163081       XLA_AE_LINES_PKG.ValidateCurrentLine;
163082       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
163083 
163084       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
163085                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
163086                ,p_balance_type_code => l_balance_type_code);
163087 
163088    END IF;
163089 
163090    -----------------------------------------------------------------------------------------
163091    -- 4262811 Multiperiod Accounting
163092    -----------------------------------------------------------------------------------------
163093      -- No MPA option is assigned.
163094 
163095 
163096 END IF;
163097 END IF;
163098 --
163099 
163100 --
163101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163102    trace
163103       (p_msg      => 'END of AcctLineType_302'
163104       ,p_level    => C_LEVEL_PROCEDURE
163105       ,p_module   => l_log_module);
163106 END IF;
163107 --
163108 EXCEPTION
163109   WHEN xla_exceptions_pkg.application_exception THEN
163110       RAISE;
163111   WHEN OTHERS THEN
163112        xla_exceptions_pkg.raise_message
163113            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_302');
163114 END AcctLineType_302;
163115 --
163116 
163117 ---------------------------------------
163118 --
163119 -- PRIVATE FUNCTION
163120 --         AcctLineType_303
163121 --
163122 ---------------------------------------
163123 PROCEDURE AcctLineType_303 (
163124   p_application_id        IN NUMBER
163125  ,p_event_id              IN NUMBER
163126  ,p_calculate_acctd_flag  IN VARCHAR2
163127  ,p_calculate_g_l_flag    IN VARCHAR2
163128  ,p_actual_flag           IN OUT VARCHAR2
163129  ,p_balance_type_code     OUT VARCHAR2
163130  ,p_gain_or_loss_ref      OUT VARCHAR2
163131  
163132 --TRANSACTION_ID
163133  , p_source_1            IN NUMBER
163134 --Item Concatenated Segments
163135  , p_source_2            IN VARCHAR2
163136 --Transaction Quantity
163137  , p_source_3            IN NUMBER
163138 --Transaction Unit of Measure Code
163139  , p_source_4            IN VARCHAR2
163140 --Inventory Transaction Type Description
163141  , p_source_5            IN VARCHAR2
163142 --Cost Management Default Account
163143  , p_source_11            IN NUMBER
163144 --Applied to Application ID
163145  , p_source_79            IN NUMBER
163146 --Applied to Distribution Link Type
163147  , p_source_80            IN VARCHAR2
163148 --Applied to Entity Code
163149  , p_source_81            IN VARCHAR2
163150 --DISTRIBUTION_IDENTIFIER
163151  , p_source_84            IN NUMBER
163152 --Distribution Type
163153  , p_source_85            IN VARCHAR2
163154  , p_source_85_meaning    IN VARCHAR2
163155 --Encumbrance Reversal Amount Entered
163156  , p_source_87            IN NUMBER
163157 --Entered Currency Code
163158  , p_source_88            IN VARCHAR2
163159 --Transaction Encumbrance Reversal Amount
163160  , p_source_89            IN NUMBER
163161 --Entered Amount
163162  , p_source_91            IN NUMBER
163163 --Currency Conversion Date
163164  , p_source_92            IN DATE
163165 --Currency Conversion Rate
163166  , p_source_93            IN NUMBER
163167 --Currency Conversion Type
163168  , p_source_94            IN VARCHAR2
163169 --Accounted Amount
163170  , p_source_95            IN NUMBER
163171 --Accounting Line Type
163172  , p_source_97            IN NUMBER
163173 --Costing Encumbrance Upgrade Option
163174  , p_source_100            IN VARCHAR2
163175 --TXN_PO_DISTRIBUTION_ID
163176  , p_source_101            IN NUMBER
163177 --TXN_PO_HEADER_ID
163178  , p_source_102            IN NUMBER
163179 --Requisition Budget Account
163180  , p_source_103            IN NUMBER
163181 --Requisition Encumbrance Type Identifier
163182  , p_source_104            IN NUMBER
163183 )
163184 IS
163185 
163186 l_component_type              VARCHAR2(80);
163187 l_component_code              VARCHAR2(30);
163188 l_component_type_code         VARCHAR2(1);
163189 l_component_appl_id           INTEGER;
163190 l_amb_context_code            VARCHAR2(30);
163191 l_entity_code                 VARCHAR2(30);
163192 l_event_class_code            VARCHAR2(30);
163193 l_ae_header_id                NUMBER;
163194 l_event_type_code             VARCHAR2(30);
163195 l_line_definition_code        VARCHAR2(30);
163196 l_line_definition_owner_code  VARCHAR2(1);
163197 --
163198 -- adr variables
163199 l_segment                     VARCHAR2(30);
163200 l_ccid                        NUMBER;
163201 l_adr_transaction_coa_id      NUMBER;
163202 l_adr_accounting_coa_id       NUMBER;
163203 l_adr_flexfield_segment_code  VARCHAR2(30);
163204 l_adr_flex_value_set_id       NUMBER;
163205 l_adr_value_type_code         VARCHAR2(30);
163206 l_adr_value_combination_id    NUMBER;
163207 l_adr_value_segment_code      VARCHAR2(30);
163208 
163209 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
163210 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
163211 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
163212 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
163213 
163214 -- 4262811 Variables ------------------------------------------------------------------------------------------
163215 l_entered_amt_idx             NUMBER;
163216 l_accted_amt_idx              NUMBER;
163217 l_acc_rev_flag                VARCHAR2(1);
163218 l_accrual_line_num            NUMBER;
163219 l_tmp_amt                     NUMBER;
163220 l_acc_rev_natural_side_code   VARCHAR2(1);
163221 
163222 l_num_entries                 NUMBER;
163223 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
163224 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
163225 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
163226 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
163227 l_recog_line_1                NUMBER;
163228 l_recog_line_2                NUMBER;
163229 
163230 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
163231 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
163232 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
163233 
163234 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
163235 
163236 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
163237 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
163238 
163239 ---------------------------------------------------------------------------------------------------------------
163240 
163241 
163242 --
163243 -- bulk performance
163244 --
163245 l_balance_type_code           VARCHAR2(1);
163246 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
163247 l_log_module                  VARCHAR2(240);
163248 
163249 --
163250 -- Upgrade strategy
163251 --
163252 l_actual_upg_option           VARCHAR2(1);
163253 l_enc_upg_option           VARCHAR2(1);
163254 
163255 --
163256 BEGIN
163257 --
163258 IF g_log_enabled THEN
163259       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_303';
163260 END IF;
163261 --
163262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163263 
163264       trace
163265          (p_msg      => 'BEGIN of AcctLineType_303'
163266          ,p_level    => C_LEVEL_PROCEDURE
163267          ,p_module   => l_log_module);
163268 
163269 END IF;
163270 --
163271 l_component_type             := 'AMB_JLT';
163272 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
163273 l_component_type_code        := 'S';
163274 l_component_appl_id          :=  707;
163275 l_amb_context_code           := 'DEFAULT';
163276 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
163277 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
163278 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
163279 l_line_definition_owner_code := 'S';
163280 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
163281 --
163282 l_balance_type_code          := 'A';
163283 l_segment                     := NULL;
163284 l_ccid                        := NULL;
163285 l_adr_transaction_coa_id      := NULL;
163286 l_adr_accounting_coa_id       := NULL;
163287 l_adr_flexfield_segment_code  := NULL;
163288 l_adr_flex_value_set_id       := NULL;
163289 l_adr_value_type_code         := NULL;
163290 l_adr_value_combination_id    := NULL;
163291 l_adr_value_segment_code      := NULL;
163292 
163293 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
163294 l_bflow_class_code           := '';    -- 4219869 Business Flow
163295 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
163296 l_budgetary_control_flag     := 'N';
163297 
163298 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
163299 l_bflow_applied_to_amt       := NULL; -- 5132302
163300 l_entered_amt_idx            := NULL;          -- 4262811
163301 l_accted_amt_idx             := NULL;          -- 4262811
163302 l_acc_rev_flag               := NULL;          -- 4262811
163303 l_accrual_line_num           := NULL;          -- 4262811
163304 l_tmp_amt                    := NULL;          -- 4262811
163305 --
163306  
163307 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
163308     l_balance_type_code <> 'B' THEN
163309 IF NVL(p_source_97,9E125) =  3
163310  THEN 
163311 
163312    --
163313    XLA_AE_LINES_PKG.SetNewLine;
163314 
163315    p_balance_type_code          := l_balance_type_code;
163316    -- set the flag so later we will know whether the gain loss line needs to be created
163317    
163318    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
163319      p_actual_flag :='A';
163320    END IF;
163321 
163322    --
163323    -- bulk performance
163324    --
163325    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
163326                                       p_header_num   => 0); -- 4262811
163327    --
163328    -- set accounting line options
163329    --
163330    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
163331            p_natural_side_code          => 'D'
163332          , p_gain_or_loss_flag          => 'N'
163333          , p_gl_transfer_mode_code      => 'S'
163334          , p_acct_entry_type_code       => 'A'
163335          , p_switch_side_flag           => 'Y'
163336          , p_merge_duplicate_code       => 'N'
163337          );
163338    --
163339    l_acc_rev_natural_side_code := 'C';  -- 4262811
163340    -- 
163341    --
163342    -- set accounting line type info
163343    --
163344    xla_ae_lines_pkg.SetAcctLineType
163345       (p_component_type             => l_component_type
163346       ,p_event_type_code            => l_event_type_code
163347       ,p_line_definition_owner_code => l_line_definition_owner_code
163348       ,p_line_definition_code       => l_line_definition_code
163349       ,p_accounting_line_code       => l_component_code
163350       ,p_accounting_line_type_code  => l_component_type_code
163351       ,p_accounting_line_appl_id    => l_component_appl_id
163352       ,p_amb_context_code           => l_amb_context_code
163353       ,p_entity_code                => l_entity_code
163354       ,p_event_class_code           => l_event_class_code);
163355    --
163356    -- set accounting class
163357    --
163358    xla_ae_lines_pkg.SetAcctClass(
163359            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
163360          , p_ae_header_id           => l_ae_header_id
163361          );
163362 
163363    --
163364    -- set rounding class
163365    --
163366    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
163367                       'MATERIAL_OVERHEAD_ABSORPTION';
163368 
163369    --
163370    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
163371    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
163372    --
163373    -- bulk performance
163374    --
163375    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
163376 
163377    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
163378       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
163379 
163380    -- 4955764
163381    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
163382       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
163383 
163384    -- 4458381 Public Sector Enh
163385    
163386    --
163387    -- set accounting attributes for the line type
163388    --
163389    l_entered_amt_idx := 17;
163390    l_accted_amt_idx  := 22;
163391    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
163392    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
163393    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
163394    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
163395    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
163396    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
163397    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
163398    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
163399    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
163400    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
163401    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
163402    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
163403    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
163404    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
163405    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
163406    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
163407    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
163408    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
163409    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
163410    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
163411    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
163412    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
163413    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
163414    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
163415    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
163416    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
163417    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
163418    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
163419    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
163420    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
163421    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
163422    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
163423    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
163424    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
163425    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
163426    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
163427    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
163428    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
163429    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
163430    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
163431    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
163432    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
163433    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
163434    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
163435    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
163436    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
163437    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
163438    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
163439    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
163440 
163441    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
163442    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
163443 
163444    ---------------------------------------------------------------------------------------------------------------
163445    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
163446    ---------------------------------------------------------------------------------------------------------------
163447    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
163448 
163449    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
163450    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
163451 
163452    IF xla_accounting_cache_pkg.GetValueChar
163453          (p_source_code         => 'LEDGER_CATEGORY_CODE'
163454          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
163455    AND l_bflow_method_code = 'PRIOR_ENTRY'
163456 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
163457    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
163458          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
163459        )
163460    THEN
163461          xla_ae_lines_pkg.BflowUpgEntry
163462            (p_business_method_code    => l_bflow_method_code
163463            ,p_business_class_code     => l_bflow_class_code
163464            ,p_balance_type            => l_balance_type_code);
163465    ELSE
163466       NULL;
163467 -- No business flow processing for business flow method of NONE.
163468    END IF;
163469 
163470    --
163471    -- call analytical criteria
163472    --
163473    
163474    --
163475    -- call description
163476    --
163477    
163478 xla_ae_lines_pkg.SetLineDescription(
163479    p_ae_header_id => l_ae_header_id
163480   ,p_description  => Description_1 (
163481      p_application_id         => p_application_id
163482    , p_ae_header_id           => l_ae_header_id 
163483 , p_source_1 => p_source_1
163484 , p_source_2 => p_source_2
163485 , p_source_3 => p_source_3
163486 , p_source_4 => p_source_4
163487 , p_source_5 => p_source_5
163488    )
163489 );
163490 
163491 
163492    --
163493    -- call ADRs
163494    -- Bug 4922099
163495    --
163496    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
163497         (NVL(l_actual_upg_option, 'N') = 'O') OR
163498         (NVL(l_enc_upg_option, 'N') = 'O')
163499       )
163500    THEN
163501    NULL;
163502    --
163503    --
163504    
163505   l_ccid := AcctDerRule_6(
163506            p_application_id           => p_application_id
163507          , p_ae_header_id             => l_ae_header_id 
163508 , p_source_11 => p_source_11
163509          , x_transaction_coa_id       => l_adr_transaction_coa_id
163510          , x_accounting_coa_id        => l_adr_accounting_coa_id
163511          , x_value_type_code          => l_adr_value_type_code
163512          , p_side                     => 'NA'
163513    );
163514 
163515    xla_ae_lines_pkg.set_ccid(
163516     p_code_combination_id          => l_ccid
163517   , p_value_type_code              => l_adr_value_type_code
163518   , p_transaction_coa_id           => l_adr_transaction_coa_id
163519   , p_accounting_coa_id            => l_adr_accounting_coa_id
163520   , p_adr_code                     => 'CST_DEFAULT'
163521   , p_adr_type_code                => 'S'
163522   , p_component_type               => l_component_type
163523   , p_component_code               => l_component_code
163524   , p_component_type_code          => l_component_type_code
163525   , p_component_appl_id            => l_component_appl_id
163526   , p_amb_context_code             => l_amb_context_code
163527   , p_side                         => 'NA'
163528   );
163529 
163530 
163531    --
163532    --
163533    END IF;
163534    --
163535    -- Bug 4922099
163536    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
163537           (NVL(l_enc_upg_option, 'N') = 'O')
163538         ) AND
163539         (l_bflow_method_code = 'PRIOR_ENTRY')
163540       )
163541    THEN
163542       IF
163543       --
163544       1 = 2
163545       --
163546       THEN
163547       xla_accounting_err_pkg.build_message
163548                                     (p_appli_s_name            => 'XLA'
163549                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
163550                                     ,p_token_1                 => 'LINE_NUMBER'
163551                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
163552                                     ,p_token_2                 => 'LINE_TYPE_NAME'
163553                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
163554                                                                              l_component_type
163555                                                                             ,l_component_code
163556                                                                             ,l_component_type_code
163557                                                                             ,l_component_appl_id
163558                                                                             ,l_amb_context_code
163559                                                                             ,l_entity_code
163560                                                                             ,l_event_class_code
163561                                                                            )
163562                                     ,p_token_3                 => 'OWNER'
163563                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
163564                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
163565                                                                           ,p_lookup_code    => l_component_type_code
163566                                                                          )
163567                                     ,p_token_4                 => 'PRODUCT_NAME'
163568                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
163569                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
163570                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
163571                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
163572                                     ,p_ae_header_id            =>  NULL
163573                                        );
163574 
163575         IF (C_LEVEL_ERROR>= g_log_level) THEN
163576                  trace
163577                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
163578                       ,p_level    => C_LEVEL_ERROR
163579                       ,p_module   => l_log_module);
163580         END IF;
163581       END IF;
163582    END IF;
163583    --
163584    --
163585    ------------------------------------------------------------------------------------------------
163586    -- 4219869 Business Flow
163587    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
163588    -- Prior Entry.  Currently, the following code is always generated.
163589    ------------------------------------------------------------------------------------------------
163590    XLA_AE_LINES_PKG.ValidateCurrentLine;
163591 
163592    ------------------------------------------------------------------------------------
163593    -- 4219869 Business Flow
163594    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
163595    ------------------------------------------------------------------------------------
163596    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
163597 
163598    ----------------------------------------------------------------------------------
163599    -- 4219869 Business Flow
163600    -- Update journal entry status -- Need to generate this within IF <condition>
163601    ----------------------------------------------------------------------------------
163602    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
163603          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
163604          ,p_balance_type_code => l_balance_type_code
163605          );
163606 
163607    -------------------------------------------------------------------------------------------
163608    -- 4262811 - Generate the Accrual Reversal lines
163609    -------------------------------------------------------------------------------------------
163610    BEGIN
163611       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
163612                               (g_array_event(p_event_id).array_value_num('header_index'));
163613       IF l_acc_rev_flag IS NULL THEN
163614          l_acc_rev_flag := 'N';
163615       END IF;
163616    EXCEPTION
163617       WHEN OTHERS THEN
163618          l_acc_rev_flag := 'N';
163619    END;
163620    --
163621    IF (l_acc_rev_flag = 'Y') THEN
163622 
163623        -- 4645092  ------------------------------------------------------------------------------
163624        -- To allow MPA report to determine if it should generate report process
163625        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
163626        ------------------------------------------------------------------------------------------
163627 
163628        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
163629        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
163630    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
163631    -- call ADRs
163632    -- Bug 4922099
163633    --
163634    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
163635         (NVL(l_actual_upg_option, 'N') = 'O') OR
163636         (NVL(l_enc_upg_option, 'N') = 'O')
163637       )
163638    THEN
163639    NULL;
163640    --
163641    --
163642    
163643   l_ccid := AcctDerRule_6(
163644            p_application_id           => p_application_id
163645          , p_ae_header_id             => l_ae_header_id 
163646 , p_source_11 => p_source_11
163647          , x_transaction_coa_id       => l_adr_transaction_coa_id
163648          , x_accounting_coa_id        => l_adr_accounting_coa_id
163649          , x_value_type_code          => l_adr_value_type_code
163650          , p_side                     => 'NA'
163651    );
163652 
163653    xla_ae_lines_pkg.set_ccid(
163654     p_code_combination_id          => l_ccid
163655   , p_value_type_code              => l_adr_value_type_code
163656   , p_transaction_coa_id           => l_adr_transaction_coa_id
163657   , p_accounting_coa_id            => l_adr_accounting_coa_id
163658   , p_adr_code                     => 'CST_DEFAULT'
163659   , p_adr_type_code                => 'S'
163660   , p_component_type               => l_component_type
163661   , p_component_code               => l_component_code
163662   , p_component_type_code          => l_component_type_code
163663   , p_component_appl_id            => l_component_appl_id
163664   , p_amb_context_code             => l_amb_context_code
163665   , p_side                         => 'NA'
163666   );
163667 
163668 
163669    --
163670    --
163671    END IF;
163672 
163673        --
163674        -- Update the line information that should be overwritten
163675        --
163676        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
163677                                          p_header_num   => 1);
163678        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
163679 
163680        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
163681 
163682        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
163683           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
163684        END IF;
163685 
163686       --
163687       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
163688       --
163689       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
163690           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
163691       ELSE
163692           ---------------------------------------------------------------------------------------------------
163693           -- 4262811a Switch Sign
163694           ---------------------------------------------------------------------------------------------------
163695           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
163696           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
163697                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
163698           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
163699                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
163700           -- 5132302
163701           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
163702                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
163703 
163704       END IF;
163705 
163706       -- 4955764
163707       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
163708       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
163709 
163710 
163711       XLA_AE_LINES_PKG.ValidateCurrentLine;
163712       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
163713 
163714       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
163715                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
163716                ,p_balance_type_code => l_balance_type_code);
163717 
163718    END IF;
163719 
163720    -----------------------------------------------------------------------------------------
163721    -- 4262811 Multiperiod Accounting
163722    -----------------------------------------------------------------------------------------
163723      -- No MPA option is assigned.
163724 
163725 
163726 END IF;
163727 END IF;
163728 --
163729 
163730 --
163731 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163732    trace
163733       (p_msg      => 'END of AcctLineType_303'
163734       ,p_level    => C_LEVEL_PROCEDURE
163735       ,p_module   => l_log_module);
163736 END IF;
163737 --
163738 EXCEPTION
163739   WHEN xla_exceptions_pkg.application_exception THEN
163740       RAISE;
163741   WHEN OTHERS THEN
163742        xla_exceptions_pkg.raise_message
163743            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_303');
163744 END AcctLineType_303;
163745 --
163746 
163747 ---------------------------------------
163748 --
163749 -- PRIVATE FUNCTION
163750 --         AcctLineType_304
163751 --
163752 ---------------------------------------
163753 PROCEDURE AcctLineType_304 (
163754   p_application_id        IN NUMBER
163755  ,p_event_id              IN NUMBER
163756  ,p_calculate_acctd_flag  IN VARCHAR2
163757  ,p_calculate_g_l_flag    IN VARCHAR2
163758  ,p_actual_flag           IN OUT VARCHAR2
163759  ,p_balance_type_code     OUT VARCHAR2
163760  ,p_gain_or_loss_ref      OUT VARCHAR2
163761  
163762 --Cost Management Default Account
163763  , p_source_11            IN NUMBER
163764 --DISTRIBUTION_IDENTIFIER
163765  , p_source_84            IN NUMBER
163766 --Distribution Type
163767  , p_source_85            IN VARCHAR2
163768  , p_source_85_meaning    IN VARCHAR2
163769 --Entered Currency Code
163770  , p_source_88            IN VARCHAR2
163771 --Entered Amount
163772  , p_source_91            IN NUMBER
163773 --Currency Conversion Date
163774  , p_source_92            IN DATE
163775 --Currency Conversion Rate
163776  , p_source_93            IN NUMBER
163777 --Currency Conversion Type
163778  , p_source_94            IN VARCHAR2
163779 --Accounted Amount
163780  , p_source_95            IN NUMBER
163781 --Accounting Line Type
163782  , p_source_97            IN NUMBER
163783 )
163784 IS
163785 
163786 l_component_type              VARCHAR2(80);
163787 l_component_code              VARCHAR2(30);
163788 l_component_type_code         VARCHAR2(1);
163789 l_component_appl_id           INTEGER;
163790 l_amb_context_code            VARCHAR2(30);
163791 l_entity_code                 VARCHAR2(30);
163792 l_event_class_code            VARCHAR2(30);
163793 l_ae_header_id                NUMBER;
163794 l_event_type_code             VARCHAR2(30);
163795 l_line_definition_code        VARCHAR2(30);
163796 l_line_definition_owner_code  VARCHAR2(1);
163797 --
163798 -- adr variables
163799 l_segment                     VARCHAR2(30);
163800 l_ccid                        NUMBER;
163801 l_adr_transaction_coa_id      NUMBER;
163802 l_adr_accounting_coa_id       NUMBER;
163803 l_adr_flexfield_segment_code  VARCHAR2(30);
163804 l_adr_flex_value_set_id       NUMBER;
163805 l_adr_value_type_code         VARCHAR2(30);
163806 l_adr_value_combination_id    NUMBER;
163807 l_adr_value_segment_code      VARCHAR2(30);
163808 
163809 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
163810 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
163811 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
163812 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
163813 
163814 -- 4262811 Variables ------------------------------------------------------------------------------------------
163815 l_entered_amt_idx             NUMBER;
163816 l_accted_amt_idx              NUMBER;
163817 l_acc_rev_flag                VARCHAR2(1);
163818 l_accrual_line_num            NUMBER;
163819 l_tmp_amt                     NUMBER;
163820 l_acc_rev_natural_side_code   VARCHAR2(1);
163821 
163822 l_num_entries                 NUMBER;
163823 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
163824 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
163825 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
163826 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
163827 l_recog_line_1                NUMBER;
163828 l_recog_line_2                NUMBER;
163829 
163830 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
163831 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
163832 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
163833 
163834 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
163835 
163836 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
163837 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
163838 
163839 ---------------------------------------------------------------------------------------------------------------
163840 
163841 
163842 --
163843 -- bulk performance
163844 --
163845 l_balance_type_code           VARCHAR2(1);
163846 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
163847 l_log_module                  VARCHAR2(240);
163848 
163849 --
163850 -- Upgrade strategy
163851 --
163852 l_actual_upg_option           VARCHAR2(1);
163853 l_enc_upg_option           VARCHAR2(1);
163854 
163855 --
163856 BEGIN
163857 --
163858 IF g_log_enabled THEN
163859       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_304';
163860 END IF;
163861 --
163862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163863 
163864       trace
163865          (p_msg      => 'BEGIN of AcctLineType_304'
163866          ,p_level    => C_LEVEL_PROCEDURE
163867          ,p_module   => l_log_module);
163868 
163869 END IF;
163870 --
163871 l_component_type             := 'AMB_JLT';
163872 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
163873 l_component_type_code        := 'S';
163874 l_component_appl_id          :=  707;
163875 l_amb_context_code           := 'DEFAULT';
163876 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
163877 l_event_class_code           := 'USER_DEFINE';
163878 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
163879 l_line_definition_owner_code := 'S';
163880 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
163881 --
163882 l_balance_type_code          := 'A';
163883 l_segment                     := NULL;
163884 l_ccid                        := NULL;
163885 l_adr_transaction_coa_id      := NULL;
163886 l_adr_accounting_coa_id       := NULL;
163887 l_adr_flexfield_segment_code  := NULL;
163888 l_adr_flex_value_set_id       := NULL;
163889 l_adr_value_type_code         := NULL;
163890 l_adr_value_combination_id    := NULL;
163891 l_adr_value_segment_code      := NULL;
163892 
163893 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
163894 l_bflow_class_code           := '';    -- 4219869 Business Flow
163895 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
163896 l_budgetary_control_flag     := 'N';
163897 
163898 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
163899 l_bflow_applied_to_amt       := NULL; -- 5132302
163900 l_entered_amt_idx            := NULL;          -- 4262811
163901 l_accted_amt_idx             := NULL;          -- 4262811
163902 l_acc_rev_flag               := NULL;          -- 4262811
163903 l_accrual_line_num           := NULL;          -- 4262811
163904 l_tmp_amt                    := NULL;          -- 4262811
163905 --
163906  
163907 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
163908     l_balance_type_code <> 'B' THEN
163909 IF NVL(p_source_97,9E125) =  3
163910  THEN 
163911 
163912    --
163913    XLA_AE_LINES_PKG.SetNewLine;
163914 
163915    p_balance_type_code          := l_balance_type_code;
163916    -- set the flag so later we will know whether the gain loss line needs to be created
163917    
163918    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
163919      p_actual_flag :='A';
163920    END IF;
163921 
163922    --
163923    -- bulk performance
163924    --
163925    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
163926                                       p_header_num   => 0); -- 4262811
163927    --
163928    -- set accounting line options
163929    --
163930    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
163931            p_natural_side_code          => 'D'
163932          , p_gain_or_loss_flag          => 'N'
163933          , p_gl_transfer_mode_code      => 'S'
163934          , p_acct_entry_type_code       => 'A'
163935          , p_switch_side_flag           => 'Y'
163936          , p_merge_duplicate_code       => 'N'
163937          );
163938    --
163939    l_acc_rev_natural_side_code := 'C';  -- 4262811
163940    -- 
163941    --
163942    -- set accounting line type info
163943    --
163944    xla_ae_lines_pkg.SetAcctLineType
163945       (p_component_type             => l_component_type
163946       ,p_event_type_code            => l_event_type_code
163947       ,p_line_definition_owner_code => l_line_definition_owner_code
163948       ,p_line_definition_code       => l_line_definition_code
163949       ,p_accounting_line_code       => l_component_code
163950       ,p_accounting_line_type_code  => l_component_type_code
163951       ,p_accounting_line_appl_id    => l_component_appl_id
163952       ,p_amb_context_code           => l_amb_context_code
163953       ,p_entity_code                => l_entity_code
163954       ,p_event_class_code           => l_event_class_code);
163955    --
163956    -- set accounting class
163957    --
163958    xla_ae_lines_pkg.SetAcctClass(
163959            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
163960          , p_ae_header_id           => l_ae_header_id
163961          );
163962 
163963    --
163964    -- set rounding class
163965    --
163966    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
163967                       'MATERIAL_OVERHEAD_ABSORPTION';
163968 
163969    --
163970    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
163971    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
163972    --
163973    -- bulk performance
163974    --
163975    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
163976 
163977    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
163978       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
163979 
163980    -- 4955764
163981    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
163982       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
163983 
163984    -- 4458381 Public Sector Enh
163985    
163986    --
163987    -- set accounting attributes for the line type
163988    --
163989    l_entered_amt_idx := 3;
163990    l_accted_amt_idx  := 8;
163991    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
163992    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
163993    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
163994    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
163995    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
163996    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
163997    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
163998    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
163999    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
164000    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
164001    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
164002    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
164003    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
164004    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
164005    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
164006    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
164007    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
164008 
164009    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
164010    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
164011 
164012    ---------------------------------------------------------------------------------------------------------------
164013    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
164014    ---------------------------------------------------------------------------------------------------------------
164015    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
164016 
164017    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
164018    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
164019 
164020    IF xla_accounting_cache_pkg.GetValueChar
164021          (p_source_code         => 'LEDGER_CATEGORY_CODE'
164022          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
164023    AND l_bflow_method_code = 'PRIOR_ENTRY'
164024 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
164025    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
164026          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
164027        )
164028    THEN
164029          xla_ae_lines_pkg.BflowUpgEntry
164030            (p_business_method_code    => l_bflow_method_code
164031            ,p_business_class_code     => l_bflow_class_code
164032            ,p_balance_type            => l_balance_type_code);
164033    ELSE
164034       NULL;
164035 -- No business flow processing for business flow method of NONE.
164036    END IF;
164037 
164038    --
164039    -- call analytical criteria
164040    --
164041    
164042    --
164043    -- call description
164044    --
164045    -- No description or it is inherited.
164046    --
164047    -- call ADRs
164048    -- Bug 4922099
164049    --
164050    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
164051         (NVL(l_actual_upg_option, 'N') = 'O') OR
164052         (NVL(l_enc_upg_option, 'N') = 'O')
164053       )
164054    THEN
164055    NULL;
164056    --
164057    --
164058    
164059   l_ccid := AcctDerRule_6(
164060            p_application_id           => p_application_id
164061          , p_ae_header_id             => l_ae_header_id 
164062 , p_source_11 => p_source_11
164063          , x_transaction_coa_id       => l_adr_transaction_coa_id
164064          , x_accounting_coa_id        => l_adr_accounting_coa_id
164065          , x_value_type_code          => l_adr_value_type_code
164066          , p_side                     => 'NA'
164067    );
164068 
164069    xla_ae_lines_pkg.set_ccid(
164070     p_code_combination_id          => l_ccid
164071   , p_value_type_code              => l_adr_value_type_code
164072   , p_transaction_coa_id           => l_adr_transaction_coa_id
164073   , p_accounting_coa_id            => l_adr_accounting_coa_id
164074   , p_adr_code                     => 'CST_DEFAULT'
164075   , p_adr_type_code                => 'S'
164076   , p_component_type               => l_component_type
164077   , p_component_code               => l_component_code
164078   , p_component_type_code          => l_component_type_code
164079   , p_component_appl_id            => l_component_appl_id
164080   , p_amb_context_code             => l_amb_context_code
164081   , p_side                         => 'NA'
164082   );
164083 
164084 
164085    --
164086    --
164087    END IF;
164088    --
164089    -- Bug 4922099
164090    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
164091           (NVL(l_enc_upg_option, 'N') = 'O')
164092         ) AND
164093         (l_bflow_method_code = 'PRIOR_ENTRY')
164094       )
164095    THEN
164096       IF
164097       --
164098       1 = 2
164099       --
164100       THEN
164101       xla_accounting_err_pkg.build_message
164102                                     (p_appli_s_name            => 'XLA'
164103                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
164104                                     ,p_token_1                 => 'LINE_NUMBER'
164105                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
164106                                     ,p_token_2                 => 'LINE_TYPE_NAME'
164107                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
164108                                                                              l_component_type
164109                                                                             ,l_component_code
164110                                                                             ,l_component_type_code
164111                                                                             ,l_component_appl_id
164112                                                                             ,l_amb_context_code
164113                                                                             ,l_entity_code
164114                                                                             ,l_event_class_code
164115                                                                            )
164116                                     ,p_token_3                 => 'OWNER'
164117                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
164118                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
164119                                                                           ,p_lookup_code    => l_component_type_code
164120                                                                          )
164121                                     ,p_token_4                 => 'PRODUCT_NAME'
164122                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
164123                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
164124                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
164125                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
164126                                     ,p_ae_header_id            =>  NULL
164127                                        );
164128 
164129         IF (C_LEVEL_ERROR>= g_log_level) THEN
164130                  trace
164131                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
164132                       ,p_level    => C_LEVEL_ERROR
164133                       ,p_module   => l_log_module);
164134         END IF;
164135       END IF;
164136    END IF;
164137    --
164138    --
164139    ------------------------------------------------------------------------------------------------
164140    -- 4219869 Business Flow
164141    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
164142    -- Prior Entry.  Currently, the following code is always generated.
164143    ------------------------------------------------------------------------------------------------
164144    XLA_AE_LINES_PKG.ValidateCurrentLine;
164145 
164146    ------------------------------------------------------------------------------------
164147    -- 4219869 Business Flow
164148    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
164149    ------------------------------------------------------------------------------------
164150    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
164151 
164152    ----------------------------------------------------------------------------------
164153    -- 4219869 Business Flow
164154    -- Update journal entry status -- Need to generate this within IF <condition>
164155    ----------------------------------------------------------------------------------
164156    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
164157          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
164158          ,p_balance_type_code => l_balance_type_code
164159          );
164160 
164161    -------------------------------------------------------------------------------------------
164162    -- 4262811 - Generate the Accrual Reversal lines
164163    -------------------------------------------------------------------------------------------
164164    BEGIN
164165       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
164166                               (g_array_event(p_event_id).array_value_num('header_index'));
164167       IF l_acc_rev_flag IS NULL THEN
164168          l_acc_rev_flag := 'N';
164169       END IF;
164170    EXCEPTION
164171       WHEN OTHERS THEN
164172          l_acc_rev_flag := 'N';
164173    END;
164174    --
164175    IF (l_acc_rev_flag = 'Y') THEN
164176 
164177        -- 4645092  ------------------------------------------------------------------------------
164178        -- To allow MPA report to determine if it should generate report process
164179        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
164180        ------------------------------------------------------------------------------------------
164181 
164182        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
164183        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
164184    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
164185    -- call ADRs
164186    -- Bug 4922099
164187    --
164188    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
164189         (NVL(l_actual_upg_option, 'N') = 'O') OR
164190         (NVL(l_enc_upg_option, 'N') = 'O')
164191       )
164192    THEN
164193    NULL;
164194    --
164195    --
164196    
164197   l_ccid := AcctDerRule_6(
164198            p_application_id           => p_application_id
164199          , p_ae_header_id             => l_ae_header_id 
164200 , p_source_11 => p_source_11
164201          , x_transaction_coa_id       => l_adr_transaction_coa_id
164202          , x_accounting_coa_id        => l_adr_accounting_coa_id
164203          , x_value_type_code          => l_adr_value_type_code
164204          , p_side                     => 'NA'
164205    );
164206 
164207    xla_ae_lines_pkg.set_ccid(
164208     p_code_combination_id          => l_ccid
164209   , p_value_type_code              => l_adr_value_type_code
164210   , p_transaction_coa_id           => l_adr_transaction_coa_id
164211   , p_accounting_coa_id            => l_adr_accounting_coa_id
164212   , p_adr_code                     => 'CST_DEFAULT'
164213   , p_adr_type_code                => 'S'
164214   , p_component_type               => l_component_type
164215   , p_component_code               => l_component_code
164216   , p_component_type_code          => l_component_type_code
164217   , p_component_appl_id            => l_component_appl_id
164218   , p_amb_context_code             => l_amb_context_code
164219   , p_side                         => 'NA'
164220   );
164221 
164222 
164223    --
164224    --
164225    END IF;
164226 
164227        --
164228        -- Update the line information that should be overwritten
164229        --
164230        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
164231                                          p_header_num   => 1);
164232        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
164233 
164234        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
164235 
164236        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
164237           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
164238        END IF;
164239 
164240       --
164241       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
164242       --
164243       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
164244           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
164245       ELSE
164246           ---------------------------------------------------------------------------------------------------
164247           -- 4262811a Switch Sign
164248           ---------------------------------------------------------------------------------------------------
164249           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
164250           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
164251                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
164252           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
164253                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
164254           -- 5132302
164255           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
164256                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
164257 
164258       END IF;
164259 
164260       -- 4955764
164261       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
164262       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
164263 
164264 
164265       XLA_AE_LINES_PKG.ValidateCurrentLine;
164266       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
164267 
164268       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
164269                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
164270                ,p_balance_type_code => l_balance_type_code);
164271 
164272    END IF;
164273 
164274    -----------------------------------------------------------------------------------------
164275    -- 4262811 Multiperiod Accounting
164276    -----------------------------------------------------------------------------------------
164277      -- No MPA option is assigned.
164278 
164279 
164280 END IF;
164281 END IF;
164282 --
164283 
164284 --
164285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164286    trace
164287       (p_msg      => 'END of AcctLineType_304'
164288       ,p_level    => C_LEVEL_PROCEDURE
164289       ,p_module   => l_log_module);
164290 END IF;
164291 --
164292 EXCEPTION
164293   WHEN xla_exceptions_pkg.application_exception THEN
164294       RAISE;
164295   WHEN OTHERS THEN
164296        xla_exceptions_pkg.raise_message
164297            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_304');
164298 END AcctLineType_304;
164299 --
164300 
164301 ---------------------------------------
164302 --
164303 -- PRIVATE FUNCTION
164304 --         AcctLineType_305
164305 --
164306 ---------------------------------------
164307 PROCEDURE AcctLineType_305 (
164308   p_application_id        IN NUMBER
164309  ,p_event_id              IN NUMBER
164310  ,p_calculate_acctd_flag  IN VARCHAR2
164311  ,p_calculate_g_l_flag    IN VARCHAR2
164312  ,p_actual_flag           IN OUT VARCHAR2
164313  ,p_balance_type_code     OUT VARCHAR2
164314  ,p_gain_or_loss_ref      OUT VARCHAR2
164315  
164316 --TRANSACTION_ID
164317  , p_source_1            IN NUMBER
164318 --Item Concatenated Segments
164319  , p_source_2            IN VARCHAR2
164320 --Transaction Quantity
164321  , p_source_3            IN NUMBER
164322 --Transaction Unit of Measure Code
164323  , p_source_4            IN VARCHAR2
164324 --Inventory Transaction Type Description
164325  , p_source_5            IN VARCHAR2
164326 --Cost Management Default Account
164327  , p_source_11            IN NUMBER
164328 --DISTRIBUTION_IDENTIFIER
164329  , p_source_84            IN NUMBER
164330 --Distribution Type
164331  , p_source_85            IN VARCHAR2
164332  , p_source_85_meaning    IN VARCHAR2
164333 --Entered Currency Code
164334  , p_source_88            IN VARCHAR2
164335 --Entered Amount
164336  , p_source_91            IN NUMBER
164337 --Currency Conversion Date
164338  , p_source_92            IN DATE
164339 --Currency Conversion Rate
164340  , p_source_93            IN NUMBER
164341 --Currency Conversion Type
164342  , p_source_94            IN VARCHAR2
164343 --Accounted Amount
164344  , p_source_95            IN NUMBER
164345 --Accounting Line Type
164346  , p_source_97            IN NUMBER
164347 )
164348 IS
164349 
164350 l_component_type              VARCHAR2(80);
164351 l_component_code              VARCHAR2(30);
164352 l_component_type_code         VARCHAR2(1);
164353 l_component_appl_id           INTEGER;
164354 l_amb_context_code            VARCHAR2(30);
164355 l_entity_code                 VARCHAR2(30);
164356 l_event_class_code            VARCHAR2(30);
164357 l_ae_header_id                NUMBER;
164358 l_event_type_code             VARCHAR2(30);
164359 l_line_definition_code        VARCHAR2(30);
164360 l_line_definition_owner_code  VARCHAR2(1);
164361 --
164362 -- adr variables
164363 l_segment                     VARCHAR2(30);
164364 l_ccid                        NUMBER;
164365 l_adr_transaction_coa_id      NUMBER;
164366 l_adr_accounting_coa_id       NUMBER;
164367 l_adr_flexfield_segment_code  VARCHAR2(30);
164368 l_adr_flex_value_set_id       NUMBER;
164369 l_adr_value_type_code         VARCHAR2(30);
164370 l_adr_value_combination_id    NUMBER;
164371 l_adr_value_segment_code      VARCHAR2(30);
164372 
164373 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
164374 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
164375 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
164376 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
164377 
164378 -- 4262811 Variables ------------------------------------------------------------------------------------------
164379 l_entered_amt_idx             NUMBER;
164380 l_accted_amt_idx              NUMBER;
164381 l_acc_rev_flag                VARCHAR2(1);
164382 l_accrual_line_num            NUMBER;
164383 l_tmp_amt                     NUMBER;
164384 l_acc_rev_natural_side_code   VARCHAR2(1);
164385 
164386 l_num_entries                 NUMBER;
164387 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
164388 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
164389 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
164390 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
164391 l_recog_line_1                NUMBER;
164392 l_recog_line_2                NUMBER;
164393 
164394 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
164395 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
164396 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
164397 
164398 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
164399 
164400 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
164401 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
164402 
164403 ---------------------------------------------------------------------------------------------------------------
164404 
164405 
164406 --
164407 -- bulk performance
164408 --
164409 l_balance_type_code           VARCHAR2(1);
164410 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
164411 l_log_module                  VARCHAR2(240);
164412 
164413 --
164414 -- Upgrade strategy
164415 --
164416 l_actual_upg_option           VARCHAR2(1);
164417 l_enc_upg_option           VARCHAR2(1);
164418 
164419 --
164420 BEGIN
164421 --
164422 IF g_log_enabled THEN
164423       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_305';
164424 END IF;
164425 --
164426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164427 
164428       trace
164429          (p_msg      => 'BEGIN of AcctLineType_305'
164430          ,p_level    => C_LEVEL_PROCEDURE
164431          ,p_module   => l_log_module);
164432 
164433 END IF;
164434 --
164435 l_component_type             := 'AMB_JLT';
164436 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
164437 l_component_type_code        := 'S';
164438 l_component_appl_id          :=  707;
164439 l_amb_context_code           := 'DEFAULT';
164440 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
164441 l_event_class_code           := 'USER_DEFINE';
164442 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
164443 l_line_definition_owner_code := 'S';
164444 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
164445 --
164446 l_balance_type_code          := 'A';
164447 l_segment                     := NULL;
164448 l_ccid                        := NULL;
164449 l_adr_transaction_coa_id      := NULL;
164450 l_adr_accounting_coa_id       := NULL;
164451 l_adr_flexfield_segment_code  := NULL;
164452 l_adr_flex_value_set_id       := NULL;
164453 l_adr_value_type_code         := NULL;
164454 l_adr_value_combination_id    := NULL;
164455 l_adr_value_segment_code      := NULL;
164456 
164457 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
164458 l_bflow_class_code           := '';    -- 4219869 Business Flow
164459 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
164460 l_budgetary_control_flag     := 'N';
164461 
164462 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
164463 l_bflow_applied_to_amt       := NULL; -- 5132302
164464 l_entered_amt_idx            := NULL;          -- 4262811
164465 l_accted_amt_idx             := NULL;          -- 4262811
164466 l_acc_rev_flag               := NULL;          -- 4262811
164467 l_accrual_line_num           := NULL;          -- 4262811
164468 l_tmp_amt                    := NULL;          -- 4262811
164469 --
164470  
164471 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
164472     l_balance_type_code <> 'B' THEN
164473 IF NVL(p_source_97,9E125) =  3
164474  THEN 
164475 
164476    --
164477    XLA_AE_LINES_PKG.SetNewLine;
164478 
164479    p_balance_type_code          := l_balance_type_code;
164480    -- set the flag so later we will know whether the gain loss line needs to be created
164481    
164482    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
164483      p_actual_flag :='A';
164484    END IF;
164485 
164486    --
164487    -- bulk performance
164488    --
164489    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
164490                                       p_header_num   => 0); -- 4262811
164491    --
164492    -- set accounting line options
164493    --
164494    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
164495            p_natural_side_code          => 'D'
164496          , p_gain_or_loss_flag          => 'N'
164497          , p_gl_transfer_mode_code      => 'S'
164498          , p_acct_entry_type_code       => 'A'
164499          , p_switch_side_flag           => 'Y'
164500          , p_merge_duplicate_code       => 'N'
164501          );
164502    --
164503    l_acc_rev_natural_side_code := 'C';  -- 4262811
164504    -- 
164505    --
164506    -- set accounting line type info
164507    --
164508    xla_ae_lines_pkg.SetAcctLineType
164509       (p_component_type             => l_component_type
164510       ,p_event_type_code            => l_event_type_code
164511       ,p_line_definition_owner_code => l_line_definition_owner_code
164512       ,p_line_definition_code       => l_line_definition_code
164513       ,p_accounting_line_code       => l_component_code
164514       ,p_accounting_line_type_code  => l_component_type_code
164515       ,p_accounting_line_appl_id    => l_component_appl_id
164516       ,p_amb_context_code           => l_amb_context_code
164517       ,p_entity_code                => l_entity_code
164518       ,p_event_class_code           => l_event_class_code);
164519    --
164520    -- set accounting class
164521    --
164522    xla_ae_lines_pkg.SetAcctClass(
164523            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
164524          , p_ae_header_id           => l_ae_header_id
164525          );
164526 
164527    --
164528    -- set rounding class
164529    --
164530    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
164531                       'MATERIAL_OVERHEAD_ABSORPTION';
164532 
164533    --
164534    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
164535    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
164536    --
164537    -- bulk performance
164538    --
164539    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
164540 
164541    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
164542       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
164543 
164544    -- 4955764
164545    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
164546       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
164547 
164548    -- 4458381 Public Sector Enh
164549    
164550    --
164551    -- set accounting attributes for the line type
164552    --
164553    l_entered_amt_idx := 3;
164554    l_accted_amt_idx  := 8;
164555    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
164556    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
164557    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
164558    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
164559    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
164560    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
164561    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
164562    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
164563    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
164564    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
164565    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
164566    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
164567    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
164568    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
164569    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
164570    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
164571    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
164572 
164573    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
164574    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
164575 
164576    ---------------------------------------------------------------------------------------------------------------
164577    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
164578    ---------------------------------------------------------------------------------------------------------------
164579    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
164580 
164581    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
164582    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
164583 
164584    IF xla_accounting_cache_pkg.GetValueChar
164585          (p_source_code         => 'LEDGER_CATEGORY_CODE'
164586          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
164587    AND l_bflow_method_code = 'PRIOR_ENTRY'
164588 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
164589    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
164590          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
164591        )
164592    THEN
164593          xla_ae_lines_pkg.BflowUpgEntry
164594            (p_business_method_code    => l_bflow_method_code
164595            ,p_business_class_code     => l_bflow_class_code
164596            ,p_balance_type            => l_balance_type_code);
164597    ELSE
164598       NULL;
164599 -- No business flow processing for business flow method of NONE.
164600    END IF;
164601 
164602    --
164603    -- call analytical criteria
164604    --
164605    
164606    --
164607    -- call description
164608    --
164609    
164610 xla_ae_lines_pkg.SetLineDescription(
164611    p_ae_header_id => l_ae_header_id
164612   ,p_description  => Description_1 (
164613      p_application_id         => p_application_id
164614    , p_ae_header_id           => l_ae_header_id 
164615 , p_source_1 => p_source_1
164616 , p_source_2 => p_source_2
164617 , p_source_3 => p_source_3
164618 , p_source_4 => p_source_4
164619 , p_source_5 => p_source_5
164620    )
164621 );
164622 
164623 
164624    --
164625    -- call ADRs
164626    -- Bug 4922099
164627    --
164628    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
164629         (NVL(l_actual_upg_option, 'N') = 'O') OR
164630         (NVL(l_enc_upg_option, 'N') = 'O')
164631       )
164632    THEN
164633    NULL;
164634    --
164635    --
164636    
164637   l_ccid := AcctDerRule_6(
164638            p_application_id           => p_application_id
164639          , p_ae_header_id             => l_ae_header_id 
164640 , p_source_11 => p_source_11
164641          , x_transaction_coa_id       => l_adr_transaction_coa_id
164642          , x_accounting_coa_id        => l_adr_accounting_coa_id
164643          , x_value_type_code          => l_adr_value_type_code
164644          , p_side                     => 'NA'
164645    );
164646 
164647    xla_ae_lines_pkg.set_ccid(
164648     p_code_combination_id          => l_ccid
164649   , p_value_type_code              => l_adr_value_type_code
164650   , p_transaction_coa_id           => l_adr_transaction_coa_id
164651   , p_accounting_coa_id            => l_adr_accounting_coa_id
164652   , p_adr_code                     => 'CST_DEFAULT'
164653   , p_adr_type_code                => 'S'
164654   , p_component_type               => l_component_type
164655   , p_component_code               => l_component_code
164656   , p_component_type_code          => l_component_type_code
164657   , p_component_appl_id            => l_component_appl_id
164658   , p_amb_context_code             => l_amb_context_code
164659   , p_side                         => 'NA'
164660   );
164661 
164662 
164663    --
164664    --
164665    END IF;
164666    --
164667    -- Bug 4922099
164668    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
164669           (NVL(l_enc_upg_option, 'N') = 'O')
164670         ) AND
164671         (l_bflow_method_code = 'PRIOR_ENTRY')
164672       )
164673    THEN
164674       IF
164675       --
164676       1 = 2
164677       --
164678       THEN
164679       xla_accounting_err_pkg.build_message
164680                                     (p_appli_s_name            => 'XLA'
164681                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
164682                                     ,p_token_1                 => 'LINE_NUMBER'
164683                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
164684                                     ,p_token_2                 => 'LINE_TYPE_NAME'
164685                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
164686                                                                              l_component_type
164687                                                                             ,l_component_code
164688                                                                             ,l_component_type_code
164689                                                                             ,l_component_appl_id
164690                                                                             ,l_amb_context_code
164691                                                                             ,l_entity_code
164692                                                                             ,l_event_class_code
164693                                                                            )
164694                                     ,p_token_3                 => 'OWNER'
164695                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
164696                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
164697                                                                           ,p_lookup_code    => l_component_type_code
164698                                                                          )
164699                                     ,p_token_4                 => 'PRODUCT_NAME'
164700                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
164701                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
164702                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
164703                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
164704                                     ,p_ae_header_id            =>  NULL
164705                                        );
164706 
164707         IF (C_LEVEL_ERROR>= g_log_level) THEN
164708                  trace
164709                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
164710                       ,p_level    => C_LEVEL_ERROR
164711                       ,p_module   => l_log_module);
164712         END IF;
164713       END IF;
164714    END IF;
164715    --
164716    --
164717    ------------------------------------------------------------------------------------------------
164718    -- 4219869 Business Flow
164719    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
164720    -- Prior Entry.  Currently, the following code is always generated.
164721    ------------------------------------------------------------------------------------------------
164722    XLA_AE_LINES_PKG.ValidateCurrentLine;
164723 
164724    ------------------------------------------------------------------------------------
164725    -- 4219869 Business Flow
164726    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
164727    ------------------------------------------------------------------------------------
164728    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
164729 
164730    ----------------------------------------------------------------------------------
164731    -- 4219869 Business Flow
164732    -- Update journal entry status -- Need to generate this within IF <condition>
164733    ----------------------------------------------------------------------------------
164734    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
164735          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
164736          ,p_balance_type_code => l_balance_type_code
164737          );
164738 
164739    -------------------------------------------------------------------------------------------
164740    -- 4262811 - Generate the Accrual Reversal lines
164741    -------------------------------------------------------------------------------------------
164742    BEGIN
164743       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
164744                               (g_array_event(p_event_id).array_value_num('header_index'));
164745       IF l_acc_rev_flag IS NULL THEN
164746          l_acc_rev_flag := 'N';
164747       END IF;
164748    EXCEPTION
164749       WHEN OTHERS THEN
164750          l_acc_rev_flag := 'N';
164751    END;
164752    --
164753    IF (l_acc_rev_flag = 'Y') THEN
164754 
164755        -- 4645092  ------------------------------------------------------------------------------
164756        -- To allow MPA report to determine if it should generate report process
164757        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
164758        ------------------------------------------------------------------------------------------
164759 
164760        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
164761        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
164762    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
164763    -- call ADRs
164764    -- Bug 4922099
164765    --
164766    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
164767         (NVL(l_actual_upg_option, 'N') = 'O') OR
164768         (NVL(l_enc_upg_option, 'N') = 'O')
164769       )
164770    THEN
164771    NULL;
164772    --
164773    --
164774    
164775   l_ccid := AcctDerRule_6(
164776            p_application_id           => p_application_id
164777          , p_ae_header_id             => l_ae_header_id 
164778 , p_source_11 => p_source_11
164779          , x_transaction_coa_id       => l_adr_transaction_coa_id
164780          , x_accounting_coa_id        => l_adr_accounting_coa_id
164781          , x_value_type_code          => l_adr_value_type_code
164782          , p_side                     => 'NA'
164783    );
164784 
164785    xla_ae_lines_pkg.set_ccid(
164786     p_code_combination_id          => l_ccid
164787   , p_value_type_code              => l_adr_value_type_code
164788   , p_transaction_coa_id           => l_adr_transaction_coa_id
164789   , p_accounting_coa_id            => l_adr_accounting_coa_id
164790   , p_adr_code                     => 'CST_DEFAULT'
164791   , p_adr_type_code                => 'S'
164792   , p_component_type               => l_component_type
164793   , p_component_code               => l_component_code
164794   , p_component_type_code          => l_component_type_code
164795   , p_component_appl_id            => l_component_appl_id
164796   , p_amb_context_code             => l_amb_context_code
164797   , p_side                         => 'NA'
164798   );
164799 
164800 
164801    --
164802    --
164803    END IF;
164804 
164805        --
164806        -- Update the line information that should be overwritten
164807        --
164808        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
164809                                          p_header_num   => 1);
164810        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
164811 
164812        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
164813 
164814        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
164815           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
164816        END IF;
164817 
164818       --
164819       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
164820       --
164821       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
164822           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
164823       ELSE
164824           ---------------------------------------------------------------------------------------------------
164825           -- 4262811a Switch Sign
164826           ---------------------------------------------------------------------------------------------------
164827           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
164828           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
164829                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
164830           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
164831                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
164832           -- 5132302
164833           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
164834                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
164835 
164836       END IF;
164837 
164838       -- 4955764
164839       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
164840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
164841 
164842 
164843       XLA_AE_LINES_PKG.ValidateCurrentLine;
164844       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
164845 
164846       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
164847                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
164848                ,p_balance_type_code => l_balance_type_code);
164849 
164850    END IF;
164851 
164852    -----------------------------------------------------------------------------------------
164853    -- 4262811 Multiperiod Accounting
164854    -----------------------------------------------------------------------------------------
164855      -- No MPA option is assigned.
164856 
164857 
164858 END IF;
164859 END IF;
164860 --
164861 
164862 --
164863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164864    trace
164865       (p_msg      => 'END of AcctLineType_305'
164866       ,p_level    => C_LEVEL_PROCEDURE
164867       ,p_module   => l_log_module);
164868 END IF;
164869 --
164870 EXCEPTION
164871   WHEN xla_exceptions_pkg.application_exception THEN
164872       RAISE;
164873   WHEN OTHERS THEN
164874        xla_exceptions_pkg.raise_message
164875            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_305');
164876 END AcctLineType_305;
164877 --
164878 
164879 ---------------------------------------
164880 --
164881 -- PRIVATE FUNCTION
164882 --         AcctLineType_306
164883 --
164884 ---------------------------------------
164885 PROCEDURE AcctLineType_306 (
164886   p_application_id        IN NUMBER
164887  ,p_event_id              IN NUMBER
164888  ,p_calculate_acctd_flag  IN VARCHAR2
164889  ,p_calculate_g_l_flag    IN VARCHAR2
164890  ,p_actual_flag           IN OUT VARCHAR2
164891  ,p_balance_type_code     OUT VARCHAR2
164892  ,p_gain_or_loss_ref      OUT VARCHAR2
164893  
164894 --TRANSACTION_ID
164895  , p_source_1            IN NUMBER
164896 --Item Concatenated Segments
164897  , p_source_2            IN VARCHAR2
164898 --Transaction Quantity
164899  , p_source_3            IN NUMBER
164900 --Transaction Unit of Measure Code
164901  , p_source_4            IN VARCHAR2
164902 --Inventory Transaction Type Description
164903  , p_source_5            IN VARCHAR2
164904 --Cost Management Default Account
164905  , p_source_11            IN NUMBER
164906 --DISTRIBUTION_IDENTIFIER
164907  , p_source_84            IN NUMBER
164908 --Distribution Type
164909  , p_source_85            IN VARCHAR2
164910  , p_source_85_meaning    IN VARCHAR2
164911 --Entered Currency Code
164912  , p_source_88            IN VARCHAR2
164913 --Entered Amount
164914  , p_source_91            IN NUMBER
164915 --Currency Conversion Date
164916  , p_source_92            IN DATE
164917 --Currency Conversion Rate
164918  , p_source_93            IN NUMBER
164919 --Currency Conversion Type
164920  , p_source_94            IN VARCHAR2
164921 --Accounted Amount
164922  , p_source_95            IN NUMBER
164923 --Accounting Line Type
164924  , p_source_97            IN NUMBER
164925 )
164926 IS
164927 
164928 l_component_type              VARCHAR2(80);
164929 l_component_code              VARCHAR2(30);
164930 l_component_type_code         VARCHAR2(1);
164931 l_component_appl_id           INTEGER;
164932 l_amb_context_code            VARCHAR2(30);
164933 l_entity_code                 VARCHAR2(30);
164934 l_event_class_code            VARCHAR2(30);
164935 l_ae_header_id                NUMBER;
164936 l_event_type_code             VARCHAR2(30);
164937 l_line_definition_code        VARCHAR2(30);
164938 l_line_definition_owner_code  VARCHAR2(1);
164939 --
164940 -- adr variables
164941 l_segment                     VARCHAR2(30);
164942 l_ccid                        NUMBER;
164943 l_adr_transaction_coa_id      NUMBER;
164944 l_adr_accounting_coa_id       NUMBER;
164945 l_adr_flexfield_segment_code  VARCHAR2(30);
164946 l_adr_flex_value_set_id       NUMBER;
164947 l_adr_value_type_code         VARCHAR2(30);
164948 l_adr_value_combination_id    NUMBER;
164949 l_adr_value_segment_code      VARCHAR2(30);
164950 
164951 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
164952 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
164953 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
164954 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
164955 
164956 -- 4262811 Variables ------------------------------------------------------------------------------------------
164957 l_entered_amt_idx             NUMBER;
164958 l_accted_amt_idx              NUMBER;
164959 l_acc_rev_flag                VARCHAR2(1);
164960 l_accrual_line_num            NUMBER;
164961 l_tmp_amt                     NUMBER;
164962 l_acc_rev_natural_side_code   VARCHAR2(1);
164963 
164964 l_num_entries                 NUMBER;
164965 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
164966 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
164967 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
164968 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
164969 l_recog_line_1                NUMBER;
164970 l_recog_line_2                NUMBER;
164971 
164972 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
164973 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
164974 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
164975 
164976 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
164977 
164978 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
164979 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
164980 
164981 ---------------------------------------------------------------------------------------------------------------
164982 
164983 
164984 --
164985 -- bulk performance
164986 --
164987 l_balance_type_code           VARCHAR2(1);
164988 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
164989 l_log_module                  VARCHAR2(240);
164990 
164991 --
164992 -- Upgrade strategy
164993 --
164994 l_actual_upg_option           VARCHAR2(1);
164995 l_enc_upg_option           VARCHAR2(1);
164996 
164997 --
164998 BEGIN
164999 --
165000 IF g_log_enabled THEN
165001       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_306';
165002 END IF;
165003 --
165004 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165005 
165006       trace
165007          (p_msg      => 'BEGIN of AcctLineType_306'
165008          ,p_level    => C_LEVEL_PROCEDURE
165009          ,p_module   => l_log_module);
165010 
165011 END IF;
165012 --
165013 l_component_type             := 'AMB_JLT';
165014 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
165015 l_component_type_code        := 'S';
165016 l_component_appl_id          :=  707;
165017 l_amb_context_code           := 'DEFAULT';
165018 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
165019 l_event_class_code           := 'USER_DEFINE';
165020 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
165021 l_line_definition_owner_code := 'S';
165022 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
165023 --
165024 l_balance_type_code          := 'A';
165025 l_segment                     := NULL;
165026 l_ccid                        := NULL;
165027 l_adr_transaction_coa_id      := NULL;
165028 l_adr_accounting_coa_id       := NULL;
165029 l_adr_flexfield_segment_code  := NULL;
165030 l_adr_flex_value_set_id       := NULL;
165031 l_adr_value_type_code         := NULL;
165032 l_adr_value_combination_id    := NULL;
165033 l_adr_value_segment_code      := NULL;
165034 
165035 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
165036 l_bflow_class_code           := '';    -- 4219869 Business Flow
165037 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
165038 l_budgetary_control_flag     := 'N';
165039 
165040 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
165041 l_bflow_applied_to_amt       := NULL; -- 5132302
165042 l_entered_amt_idx            := NULL;          -- 4262811
165043 l_accted_amt_idx             := NULL;          -- 4262811
165044 l_acc_rev_flag               := NULL;          -- 4262811
165045 l_accrual_line_num           := NULL;          -- 4262811
165046 l_tmp_amt                    := NULL;          -- 4262811
165047 --
165048  
165049 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
165050     l_balance_type_code <> 'B' THEN
165051 IF NVL(p_source_97,9E125) =  3
165052  THEN 
165053 
165054    --
165055    XLA_AE_LINES_PKG.SetNewLine;
165056 
165057    p_balance_type_code          := l_balance_type_code;
165058    -- set the flag so later we will know whether the gain loss line needs to be created
165059    
165060    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
165061      p_actual_flag :='A';
165062    END IF;
165063 
165064    --
165065    -- bulk performance
165066    --
165067    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
165068                                       p_header_num   => 0); -- 4262811
165069    --
165070    -- set accounting line options
165071    --
165072    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
165073            p_natural_side_code          => 'D'
165074          , p_gain_or_loss_flag          => 'N'
165075          , p_gl_transfer_mode_code      => 'S'
165076          , p_acct_entry_type_code       => 'A'
165077          , p_switch_side_flag           => 'Y'
165078          , p_merge_duplicate_code       => 'N'
165079          );
165080    --
165081    l_acc_rev_natural_side_code := 'C';  -- 4262811
165082    -- 
165083    --
165084    -- set accounting line type info
165085    --
165086    xla_ae_lines_pkg.SetAcctLineType
165087       (p_component_type             => l_component_type
165088       ,p_event_type_code            => l_event_type_code
165089       ,p_line_definition_owner_code => l_line_definition_owner_code
165090       ,p_line_definition_code       => l_line_definition_code
165091       ,p_accounting_line_code       => l_component_code
165092       ,p_accounting_line_type_code  => l_component_type_code
165093       ,p_accounting_line_appl_id    => l_component_appl_id
165094       ,p_amb_context_code           => l_amb_context_code
165095       ,p_entity_code                => l_entity_code
165096       ,p_event_class_code           => l_event_class_code);
165097    --
165098    -- set accounting class
165099    --
165100    xla_ae_lines_pkg.SetAcctClass(
165101            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
165102          , p_ae_header_id           => l_ae_header_id
165103          );
165104 
165105    --
165106    -- set rounding class
165107    --
165108    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
165109                       'MATERIAL_OVERHEAD_ABSORPTION';
165110 
165111    --
165112    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
165113    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
165114    --
165115    -- bulk performance
165116    --
165117    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
165118 
165119    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
165120       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
165121 
165122    -- 4955764
165123    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
165124       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
165125 
165126    -- 4458381 Public Sector Enh
165127    
165128    --
165129    -- set accounting attributes for the line type
165130    --
165131    l_entered_amt_idx := 3;
165132    l_accted_amt_idx  := 8;
165133    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
165134    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
165135    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
165136    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
165137    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
165138    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
165139    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
165140    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
165141    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
165142    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
165143    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
165144    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
165145    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
165146    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
165147    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
165148    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
165149    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
165150 
165151    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
165152    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
165153 
165154    ---------------------------------------------------------------------------------------------------------------
165155    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
165156    ---------------------------------------------------------------------------------------------------------------
165157    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
165158 
165159    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
165160    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
165161 
165162    IF xla_accounting_cache_pkg.GetValueChar
165163          (p_source_code         => 'LEDGER_CATEGORY_CODE'
165164          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
165165    AND l_bflow_method_code = 'PRIOR_ENTRY'
165166 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
165167    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
165168          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
165169        )
165170    THEN
165171          xla_ae_lines_pkg.BflowUpgEntry
165172            (p_business_method_code    => l_bflow_method_code
165173            ,p_business_class_code     => l_bflow_class_code
165174            ,p_balance_type            => l_balance_type_code);
165175    ELSE
165176       NULL;
165177 -- No business flow processing for business flow method of NONE.
165178    END IF;
165179 
165180    --
165181    -- call analytical criteria
165182    --
165183    
165184    --
165185    -- call description
165186    --
165187    
165188 xla_ae_lines_pkg.SetLineDescription(
165189    p_ae_header_id => l_ae_header_id
165190   ,p_description  => Description_1 (
165191      p_application_id         => p_application_id
165192    , p_ae_header_id           => l_ae_header_id 
165193 , p_source_1 => p_source_1
165194 , p_source_2 => p_source_2
165195 , p_source_3 => p_source_3
165196 , p_source_4 => p_source_4
165197 , p_source_5 => p_source_5
165198    )
165199 );
165200 
165201 
165202    --
165203    -- call ADRs
165204    -- Bug 4922099
165205    --
165206    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
165207         (NVL(l_actual_upg_option, 'N') = 'O') OR
165208         (NVL(l_enc_upg_option, 'N') = 'O')
165209       )
165210    THEN
165211    NULL;
165212    --
165213    --
165214    
165215   l_ccid := AcctDerRule_6(
165216            p_application_id           => p_application_id
165217          , p_ae_header_id             => l_ae_header_id 
165218 , p_source_11 => p_source_11
165219          , x_transaction_coa_id       => l_adr_transaction_coa_id
165220          , x_accounting_coa_id        => l_adr_accounting_coa_id
165221          , x_value_type_code          => l_adr_value_type_code
165222          , p_side                     => 'NA'
165223    );
165224 
165225    xla_ae_lines_pkg.set_ccid(
165226     p_code_combination_id          => l_ccid
165227   , p_value_type_code              => l_adr_value_type_code
165228   , p_transaction_coa_id           => l_adr_transaction_coa_id
165229   , p_accounting_coa_id            => l_adr_accounting_coa_id
165230   , p_adr_code                     => 'CST_DEFAULT'
165231   , p_adr_type_code                => 'S'
165232   , p_component_type               => l_component_type
165233   , p_component_code               => l_component_code
165234   , p_component_type_code          => l_component_type_code
165235   , p_component_appl_id            => l_component_appl_id
165236   , p_amb_context_code             => l_amb_context_code
165237   , p_side                         => 'NA'
165238   );
165239 
165240 
165241    --
165242    --
165243    END IF;
165244    --
165245    -- Bug 4922099
165246    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
165247           (NVL(l_enc_upg_option, 'N') = 'O')
165248         ) AND
165249         (l_bflow_method_code = 'PRIOR_ENTRY')
165250       )
165251    THEN
165252       IF
165253       --
165254       1 = 2
165255       --
165256       THEN
165257       xla_accounting_err_pkg.build_message
165258                                     (p_appli_s_name            => 'XLA'
165259                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
165260                                     ,p_token_1                 => 'LINE_NUMBER'
165261                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
165262                                     ,p_token_2                 => 'LINE_TYPE_NAME'
165263                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
165264                                                                              l_component_type
165265                                                                             ,l_component_code
165266                                                                             ,l_component_type_code
165267                                                                             ,l_component_appl_id
165268                                                                             ,l_amb_context_code
165269                                                                             ,l_entity_code
165270                                                                             ,l_event_class_code
165271                                                                            )
165272                                     ,p_token_3                 => 'OWNER'
165273                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
165274                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
165275                                                                           ,p_lookup_code    => l_component_type_code
165276                                                                          )
165277                                     ,p_token_4                 => 'PRODUCT_NAME'
165278                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
165279                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
165280                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
165281                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
165282                                     ,p_ae_header_id            =>  NULL
165283                                        );
165284 
165285         IF (C_LEVEL_ERROR>= g_log_level) THEN
165286                  trace
165287                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
165288                       ,p_level    => C_LEVEL_ERROR
165289                       ,p_module   => l_log_module);
165290         END IF;
165291       END IF;
165292    END IF;
165293    --
165294    --
165295    ------------------------------------------------------------------------------------------------
165296    -- 4219869 Business Flow
165297    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
165298    -- Prior Entry.  Currently, the following code is always generated.
165299    ------------------------------------------------------------------------------------------------
165300    XLA_AE_LINES_PKG.ValidateCurrentLine;
165301 
165302    ------------------------------------------------------------------------------------
165303    -- 4219869 Business Flow
165304    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
165305    ------------------------------------------------------------------------------------
165306    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
165307 
165308    ----------------------------------------------------------------------------------
165309    -- 4219869 Business Flow
165310    -- Update journal entry status -- Need to generate this within IF <condition>
165311    ----------------------------------------------------------------------------------
165312    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
165313          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
165314          ,p_balance_type_code => l_balance_type_code
165315          );
165316 
165317    -------------------------------------------------------------------------------------------
165318    -- 4262811 - Generate the Accrual Reversal lines
165319    -------------------------------------------------------------------------------------------
165320    BEGIN
165321       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
165322                               (g_array_event(p_event_id).array_value_num('header_index'));
165323       IF l_acc_rev_flag IS NULL THEN
165324          l_acc_rev_flag := 'N';
165325       END IF;
165326    EXCEPTION
165327       WHEN OTHERS THEN
165328          l_acc_rev_flag := 'N';
165329    END;
165330    --
165331    IF (l_acc_rev_flag = 'Y') THEN
165332 
165333        -- 4645092  ------------------------------------------------------------------------------
165334        -- To allow MPA report to determine if it should generate report process
165335        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
165336        ------------------------------------------------------------------------------------------
165337 
165338        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
165339        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
165340    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
165341    -- call ADRs
165342    -- Bug 4922099
165343    --
165344    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
165345         (NVL(l_actual_upg_option, 'N') = 'O') OR
165346         (NVL(l_enc_upg_option, 'N') = 'O')
165347       )
165348    THEN
165349    NULL;
165350    --
165351    --
165352    
165353   l_ccid := AcctDerRule_6(
165354            p_application_id           => p_application_id
165355          , p_ae_header_id             => l_ae_header_id 
165356 , p_source_11 => p_source_11
165357          , x_transaction_coa_id       => l_adr_transaction_coa_id
165358          , x_accounting_coa_id        => l_adr_accounting_coa_id
165359          , x_value_type_code          => l_adr_value_type_code
165360          , p_side                     => 'NA'
165361    );
165362 
165363    xla_ae_lines_pkg.set_ccid(
165364     p_code_combination_id          => l_ccid
165365   , p_value_type_code              => l_adr_value_type_code
165366   , p_transaction_coa_id           => l_adr_transaction_coa_id
165367   , p_accounting_coa_id            => l_adr_accounting_coa_id
165368   , p_adr_code                     => 'CST_DEFAULT'
165369   , p_adr_type_code                => 'S'
165370   , p_component_type               => l_component_type
165371   , p_component_code               => l_component_code
165372   , p_component_type_code          => l_component_type_code
165373   , p_component_appl_id            => l_component_appl_id
165374   , p_amb_context_code             => l_amb_context_code
165375   , p_side                         => 'NA'
165376   );
165377 
165378 
165379    --
165380    --
165381    END IF;
165382 
165383        --
165384        -- Update the line information that should be overwritten
165385        --
165386        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
165387                                          p_header_num   => 1);
165388        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
165389 
165390        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
165391 
165392        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
165393           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
165394        END IF;
165395 
165396       --
165397       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
165398       --
165399       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
165400           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
165401       ELSE
165402           ---------------------------------------------------------------------------------------------------
165403           -- 4262811a Switch Sign
165404           ---------------------------------------------------------------------------------------------------
165405           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
165406           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
165407                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
165408           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
165409                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
165410           -- 5132302
165411           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
165412                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
165413 
165414       END IF;
165415 
165416       -- 4955764
165417       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
165418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
165419 
165420 
165421       XLA_AE_LINES_PKG.ValidateCurrentLine;
165422       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
165423 
165424       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
165425                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
165426                ,p_balance_type_code => l_balance_type_code);
165427 
165428    END IF;
165429 
165430    -----------------------------------------------------------------------------------------
165431    -- 4262811 Multiperiod Accounting
165432    -----------------------------------------------------------------------------------------
165433      -- No MPA option is assigned.
165434 
165435 
165436 END IF;
165437 END IF;
165438 --
165439 
165440 --
165441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165442    trace
165443       (p_msg      => 'END of AcctLineType_306'
165444       ,p_level    => C_LEVEL_PROCEDURE
165445       ,p_module   => l_log_module);
165446 END IF;
165447 --
165448 EXCEPTION
165449   WHEN xla_exceptions_pkg.application_exception THEN
165450       RAISE;
165451   WHEN OTHERS THEN
165452        xla_exceptions_pkg.raise_message
165453            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_306');
165454 END AcctLineType_306;
165455 --
165456 
165457 ---------------------------------------
165458 --
165459 -- PRIVATE FUNCTION
165460 --         AcctLineType_307
165461 --
165462 ---------------------------------------
165463 PROCEDURE AcctLineType_307 (
165464   p_application_id        IN NUMBER
165465  ,p_event_id              IN NUMBER
165466  ,p_calculate_acctd_flag  IN VARCHAR2
165467  ,p_calculate_g_l_flag    IN VARCHAR2
165468  ,p_actual_flag           IN OUT VARCHAR2
165469  ,p_balance_type_code     OUT VARCHAR2
165470  ,p_gain_or_loss_ref      OUT VARCHAR2
165471  
165472 --TRANSACTION_ID
165473  , p_source_1            IN NUMBER
165474 --Item Concatenated Segments
165475  , p_source_2            IN VARCHAR2
165476 --Transaction Quantity
165477  , p_source_3            IN NUMBER
165478 --Transaction Unit of Measure Code
165479  , p_source_4            IN VARCHAR2
165480 --Inventory Transaction Type Description
165481  , p_source_5            IN VARCHAR2
165482 --Resource/ Overhead Absorption Account
165483  , p_source_13            IN NUMBER
165484 --DISTRIBUTION_IDENTIFIER
165485  , p_source_84            IN NUMBER
165486 --Distribution Type
165487  , p_source_85            IN VARCHAR2
165488  , p_source_85_meaning    IN VARCHAR2
165489 --Entered Currency Code
165490  , p_source_88            IN VARCHAR2
165491 --Entered Amount
165492  , p_source_91            IN NUMBER
165493 --Currency Conversion Date
165494  , p_source_92            IN DATE
165495 --Currency Conversion Rate
165496  , p_source_93            IN NUMBER
165497 --Currency Conversion Type
165498  , p_source_94            IN VARCHAR2
165499 --Accounted Amount
165500  , p_source_95            IN NUMBER
165501 --Accounting Line Type
165502  , p_source_97            IN NUMBER
165503 )
165504 IS
165505 
165506 l_component_type              VARCHAR2(80);
165507 l_component_code              VARCHAR2(30);
165508 l_component_type_code         VARCHAR2(1);
165509 l_component_appl_id           INTEGER;
165510 l_amb_context_code            VARCHAR2(30);
165511 l_entity_code                 VARCHAR2(30);
165512 l_event_class_code            VARCHAR2(30);
165513 l_ae_header_id                NUMBER;
165514 l_event_type_code             VARCHAR2(30);
165515 l_line_definition_code        VARCHAR2(30);
165516 l_line_definition_owner_code  VARCHAR2(1);
165517 --
165518 -- adr variables
165519 l_segment                     VARCHAR2(30);
165520 l_ccid                        NUMBER;
165521 l_adr_transaction_coa_id      NUMBER;
165522 l_adr_accounting_coa_id       NUMBER;
165523 l_adr_flexfield_segment_code  VARCHAR2(30);
165524 l_adr_flex_value_set_id       NUMBER;
165525 l_adr_value_type_code         VARCHAR2(30);
165526 l_adr_value_combination_id    NUMBER;
165527 l_adr_value_segment_code      VARCHAR2(30);
165528 
165529 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
165530 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
165531 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
165532 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
165533 
165534 -- 4262811 Variables ------------------------------------------------------------------------------------------
165535 l_entered_amt_idx             NUMBER;
165536 l_accted_amt_idx              NUMBER;
165537 l_acc_rev_flag                VARCHAR2(1);
165538 l_accrual_line_num            NUMBER;
165539 l_tmp_amt                     NUMBER;
165540 l_acc_rev_natural_side_code   VARCHAR2(1);
165541 
165542 l_num_entries                 NUMBER;
165543 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
165544 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
165545 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
165546 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
165547 l_recog_line_1                NUMBER;
165548 l_recog_line_2                NUMBER;
165549 
165550 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
165551 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
165552 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
165553 
165554 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
165555 
165556 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
165557 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
165558 
165559 ---------------------------------------------------------------------------------------------------------------
165560 
165561 
165562 --
165563 -- bulk performance
165564 --
165565 l_balance_type_code           VARCHAR2(1);
165566 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
165567 l_log_module                  VARCHAR2(240);
165568 
165569 --
165570 -- Upgrade strategy
165571 --
165572 l_actual_upg_option           VARCHAR2(1);
165573 l_enc_upg_option           VARCHAR2(1);
165574 
165575 --
165576 BEGIN
165577 --
165578 IF g_log_enabled THEN
165579       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_307';
165580 END IF;
165581 --
165582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165583 
165584       trace
165585          (p_msg      => 'BEGIN of AcctLineType_307'
165586          ,p_level    => C_LEVEL_PROCEDURE
165587          ,p_module   => l_log_module);
165588 
165589 END IF;
165590 --
165591 l_component_type             := 'AMB_JLT';
165592 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
165593 l_component_type_code        := 'S';
165594 l_component_appl_id          :=  707;
165595 l_amb_context_code           := 'DEFAULT';
165596 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
165597 l_event_class_code           := 'WIP_MTL';
165598 l_event_type_code            := 'WIP_ASSEMBLY_COMPLETION';
165599 l_line_definition_owner_code := 'S';
165600 l_line_definition_code       := 'PI_WIP_ASSEMBLY_COMPLETION';
165601 --
165602 l_balance_type_code          := 'A';
165603 l_segment                     := NULL;
165604 l_ccid                        := NULL;
165605 l_adr_transaction_coa_id      := NULL;
165606 l_adr_accounting_coa_id       := NULL;
165607 l_adr_flexfield_segment_code  := NULL;
165608 l_adr_flex_value_set_id       := NULL;
165609 l_adr_value_type_code         := NULL;
165610 l_adr_value_combination_id    := NULL;
165611 l_adr_value_segment_code      := NULL;
165612 
165613 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
165614 l_bflow_class_code           := '';    -- 4219869 Business Flow
165615 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
165616 l_budgetary_control_flag     := 'N';
165617 
165618 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
165619 l_bflow_applied_to_amt       := NULL; -- 5132302
165620 l_entered_amt_idx            := NULL;          -- 4262811
165621 l_accted_amt_idx             := NULL;          -- 4262811
165622 l_acc_rev_flag               := NULL;          -- 4262811
165623 l_accrual_line_num           := NULL;          -- 4262811
165624 l_tmp_amt                    := NULL;          -- 4262811
165625 --
165626  
165627 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
165628     l_balance_type_code <> 'B' THEN
165629 IF NVL(p_source_97,9E125) =  3
165630  THEN 
165631 
165632    --
165633    XLA_AE_LINES_PKG.SetNewLine;
165634 
165635    p_balance_type_code          := l_balance_type_code;
165636    -- set the flag so later we will know whether the gain loss line needs to be created
165637    
165638    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
165639      p_actual_flag :='A';
165640    END IF;
165641 
165642    --
165643    -- bulk performance
165644    --
165645    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
165646                                       p_header_num   => 0); -- 4262811
165647    --
165648    -- set accounting line options
165649    --
165650    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
165651            p_natural_side_code          => 'D'
165652          , p_gain_or_loss_flag          => 'N'
165653          , p_gl_transfer_mode_code      => 'S'
165654          , p_acct_entry_type_code       => 'A'
165655          , p_switch_side_flag           => 'Y'
165656          , p_merge_duplicate_code       => 'N'
165657          );
165658    --
165659    l_acc_rev_natural_side_code := 'C';  -- 4262811
165660    -- 
165661    --
165662    -- set accounting line type info
165663    --
165664    xla_ae_lines_pkg.SetAcctLineType
165665       (p_component_type             => l_component_type
165666       ,p_event_type_code            => l_event_type_code
165667       ,p_line_definition_owner_code => l_line_definition_owner_code
165668       ,p_line_definition_code       => l_line_definition_code
165669       ,p_accounting_line_code       => l_component_code
165670       ,p_accounting_line_type_code  => l_component_type_code
165671       ,p_accounting_line_appl_id    => l_component_appl_id
165672       ,p_amb_context_code           => l_amb_context_code
165673       ,p_entity_code                => l_entity_code
165674       ,p_event_class_code           => l_event_class_code);
165675    --
165676    -- set accounting class
165677    --
165678    xla_ae_lines_pkg.SetAcctClass(
165679            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
165680          , p_ae_header_id           => l_ae_header_id
165681          );
165682 
165683    --
165684    -- set rounding class
165685    --
165686    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
165687                       'MATERIAL_OVERHEAD_ABSORPTION';
165688 
165689    --
165690    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
165691    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
165692    --
165693    -- bulk performance
165694    --
165695    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
165696 
165697    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
165698       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
165699 
165700    -- 4955764
165701    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
165702       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
165703 
165704    -- 4458381 Public Sector Enh
165705    
165706    --
165707    -- set accounting attributes for the line type
165708    --
165709    l_entered_amt_idx := 3;
165710    l_accted_amt_idx  := 8;
165711    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
165712    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
165713    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
165714    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
165715    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
165716    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
165717    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
165718    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
165719    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
165720    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
165721    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
165722    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
165723    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
165724    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
165725    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
165726    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
165727    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
165728 
165729    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
165730    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
165731 
165732    ---------------------------------------------------------------------------------------------------------------
165733    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
165734    ---------------------------------------------------------------------------------------------------------------
165735    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
165736 
165737    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
165738    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
165739 
165740    IF xla_accounting_cache_pkg.GetValueChar
165741          (p_source_code         => 'LEDGER_CATEGORY_CODE'
165742          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
165743    AND l_bflow_method_code = 'PRIOR_ENTRY'
165744 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
165745    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
165746          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
165747        )
165748    THEN
165749          xla_ae_lines_pkg.BflowUpgEntry
165750            (p_business_method_code    => l_bflow_method_code
165751            ,p_business_class_code     => l_bflow_class_code
165752            ,p_balance_type            => l_balance_type_code);
165753    ELSE
165754       NULL;
165755 -- No business flow processing for business flow method of NONE.
165756    END IF;
165757 
165758    --
165759    -- call analytical criteria
165760    --
165761    
165762    --
165763    -- call description
165764    --
165765    
165766 xla_ae_lines_pkg.SetLineDescription(
165767    p_ae_header_id => l_ae_header_id
165768   ,p_description  => Description_1 (
165769      p_application_id         => p_application_id
165770    , p_ae_header_id           => l_ae_header_id 
165771 , p_source_1 => p_source_1
165772 , p_source_2 => p_source_2
165773 , p_source_3 => p_source_3
165774 , p_source_4 => p_source_4
165775 , p_source_5 => p_source_5
165776    )
165777 );
165778 
165779 
165780    --
165781    -- call ADRs
165782    -- Bug 4922099
165783    --
165784    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
165785         (NVL(l_actual_upg_option, 'N') = 'O') OR
165786         (NVL(l_enc_upg_option, 'N') = 'O')
165787       )
165788    THEN
165789    NULL;
165790    --
165791    --
165792    
165793   l_ccid := AcctDerRule_8(
165794            p_application_id           => p_application_id
165795          , p_ae_header_id             => l_ae_header_id 
165796 , p_source_13 => p_source_13
165797          , x_transaction_coa_id       => l_adr_transaction_coa_id
165798          , x_accounting_coa_id        => l_adr_accounting_coa_id
165799          , x_value_type_code          => l_adr_value_type_code
165800          , p_side                     => 'NA'
165801    );
165802 
165803    xla_ae_lines_pkg.set_ccid(
165804     p_code_combination_id          => l_ccid
165805   , p_value_type_code              => l_adr_value_type_code
165806   , p_transaction_coa_id           => l_adr_transaction_coa_id
165807   , p_accounting_coa_id            => l_adr_accounting_coa_id
165808   , p_adr_code                     => 'PI_ABSORPTION'
165809   , p_adr_type_code                => 'S'
165810   , p_component_type               => l_component_type
165811   , p_component_code               => l_component_code
165812   , p_component_type_code          => l_component_type_code
165813   , p_component_appl_id            => l_component_appl_id
165814   , p_amb_context_code             => l_amb_context_code
165815   , p_side                         => 'NA'
165816   );
165817 
165818 
165819    --
165820    --
165821    END IF;
165822    --
165823    -- Bug 4922099
165824    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
165825           (NVL(l_enc_upg_option, 'N') = 'O')
165826         ) AND
165827         (l_bflow_method_code = 'PRIOR_ENTRY')
165828       )
165829    THEN
165830       IF
165831       --
165832       1 = 2
165833       --
165834       THEN
165835       xla_accounting_err_pkg.build_message
165836                                     (p_appli_s_name            => 'XLA'
165837                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
165838                                     ,p_token_1                 => 'LINE_NUMBER'
165839                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
165840                                     ,p_token_2                 => 'LINE_TYPE_NAME'
165841                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
165842                                                                              l_component_type
165843                                                                             ,l_component_code
165844                                                                             ,l_component_type_code
165845                                                                             ,l_component_appl_id
165846                                                                             ,l_amb_context_code
165847                                                                             ,l_entity_code
165848                                                                             ,l_event_class_code
165849                                                                            )
165850                                     ,p_token_3                 => 'OWNER'
165851                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
165852                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
165853                                                                           ,p_lookup_code    => l_component_type_code
165854                                                                          )
165855                                     ,p_token_4                 => 'PRODUCT_NAME'
165856                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
165857                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
165858                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
165859                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
165860                                     ,p_ae_header_id            =>  NULL
165861                                        );
165862 
165863         IF (C_LEVEL_ERROR>= g_log_level) THEN
165864                  trace
165865                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
165866                       ,p_level    => C_LEVEL_ERROR
165867                       ,p_module   => l_log_module);
165868         END IF;
165869       END IF;
165870    END IF;
165871    --
165872    --
165873    ------------------------------------------------------------------------------------------------
165874    -- 4219869 Business Flow
165875    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
165876    -- Prior Entry.  Currently, the following code is always generated.
165877    ------------------------------------------------------------------------------------------------
165878    XLA_AE_LINES_PKG.ValidateCurrentLine;
165879 
165880    ------------------------------------------------------------------------------------
165881    -- 4219869 Business Flow
165882    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
165883    ------------------------------------------------------------------------------------
165884    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
165885 
165886    ----------------------------------------------------------------------------------
165887    -- 4219869 Business Flow
165888    -- Update journal entry status -- Need to generate this within IF <condition>
165889    ----------------------------------------------------------------------------------
165890    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
165891          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
165892          ,p_balance_type_code => l_balance_type_code
165893          );
165894 
165895    -------------------------------------------------------------------------------------------
165896    -- 4262811 - Generate the Accrual Reversal lines
165897    -------------------------------------------------------------------------------------------
165898    BEGIN
165899       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
165900                               (g_array_event(p_event_id).array_value_num('header_index'));
165901       IF l_acc_rev_flag IS NULL THEN
165902          l_acc_rev_flag := 'N';
165903       END IF;
165904    EXCEPTION
165905       WHEN OTHERS THEN
165906          l_acc_rev_flag := 'N';
165907    END;
165908    --
165909    IF (l_acc_rev_flag = 'Y') THEN
165910 
165911        -- 4645092  ------------------------------------------------------------------------------
165912        -- To allow MPA report to determine if it should generate report process
165913        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
165914        ------------------------------------------------------------------------------------------
165915 
165916        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
165917        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
165918    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
165919    -- call ADRs
165920    -- Bug 4922099
165921    --
165922    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
165923         (NVL(l_actual_upg_option, 'N') = 'O') OR
165924         (NVL(l_enc_upg_option, 'N') = 'O')
165925       )
165926    THEN
165927    NULL;
165928    --
165929    --
165930    
165931   l_ccid := AcctDerRule_8(
165932            p_application_id           => p_application_id
165933          , p_ae_header_id             => l_ae_header_id 
165934 , p_source_13 => p_source_13
165935          , x_transaction_coa_id       => l_adr_transaction_coa_id
165936          , x_accounting_coa_id        => l_adr_accounting_coa_id
165937          , x_value_type_code          => l_adr_value_type_code
165938          , p_side                     => 'NA'
165939    );
165940 
165941    xla_ae_lines_pkg.set_ccid(
165942     p_code_combination_id          => l_ccid
165943   , p_value_type_code              => l_adr_value_type_code
165944   , p_transaction_coa_id           => l_adr_transaction_coa_id
165945   , p_accounting_coa_id            => l_adr_accounting_coa_id
165946   , p_adr_code                     => 'PI_ABSORPTION'
165947   , p_adr_type_code                => 'S'
165948   , p_component_type               => l_component_type
165949   , p_component_code               => l_component_code
165950   , p_component_type_code          => l_component_type_code
165951   , p_component_appl_id            => l_component_appl_id
165952   , p_amb_context_code             => l_amb_context_code
165953   , p_side                         => 'NA'
165954   );
165955 
165956 
165957    --
165958    --
165959    END IF;
165960 
165961        --
165962        -- Update the line information that should be overwritten
165963        --
165964        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
165965                                          p_header_num   => 1);
165966        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
165967 
165968        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
165969 
165970        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
165971           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
165972        END IF;
165973 
165974       --
165975       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
165976       --
165977       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
165978           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
165979       ELSE
165980           ---------------------------------------------------------------------------------------------------
165981           -- 4262811a Switch Sign
165982           ---------------------------------------------------------------------------------------------------
165983           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
165984           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
165985                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
165986           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
165987                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
165988           -- 5132302
165989           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
165990                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
165991 
165992       END IF;
165993 
165994       -- 4955764
165995       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
165996       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
165997 
165998 
165999       XLA_AE_LINES_PKG.ValidateCurrentLine;
166000       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
166001 
166002       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
166003                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
166004                ,p_balance_type_code => l_balance_type_code);
166005 
166006    END IF;
166007 
166008    -----------------------------------------------------------------------------------------
166009    -- 4262811 Multiperiod Accounting
166010    -----------------------------------------------------------------------------------------
166011      -- No MPA option is assigned.
166012 
166013 
166014 END IF;
166015 END IF;
166016 --
166017 
166018 --
166019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166020    trace
166021       (p_msg      => 'END of AcctLineType_307'
166022       ,p_level    => C_LEVEL_PROCEDURE
166023       ,p_module   => l_log_module);
166024 END IF;
166025 --
166026 EXCEPTION
166027   WHEN xla_exceptions_pkg.application_exception THEN
166028       RAISE;
166029   WHEN OTHERS THEN
166030        xla_exceptions_pkg.raise_message
166031            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_307');
166032 END AcctLineType_307;
166033 --
166034 
166035 ---------------------------------------
166036 --
166037 -- PRIVATE FUNCTION
166038 --         AcctLineType_308
166039 --
166040 ---------------------------------------
166041 PROCEDURE AcctLineType_308 (
166042   p_application_id        IN NUMBER
166043  ,p_event_id              IN NUMBER
166044  ,p_calculate_acctd_flag  IN VARCHAR2
166045  ,p_calculate_g_l_flag    IN VARCHAR2
166046  ,p_actual_flag           IN OUT VARCHAR2
166047  ,p_balance_type_code     OUT VARCHAR2
166048  ,p_gain_or_loss_ref      OUT VARCHAR2
166049  
166050 --TRANSACTION_ID
166051  , p_source_1            IN NUMBER
166052 --Item Concatenated Segments
166053  , p_source_2            IN VARCHAR2
166054 --Transaction Quantity
166055  , p_source_3            IN NUMBER
166056 --Transaction Unit of Measure Code
166057  , p_source_4            IN VARCHAR2
166058 --Inventory Transaction Type Description
166059  , p_source_5            IN VARCHAR2
166060 --Cost Management Default Account
166061  , p_source_11            IN NUMBER
166062 --DISTRIBUTION_IDENTIFIER
166063  , p_source_84            IN NUMBER
166064 --Distribution Type
166065  , p_source_85            IN VARCHAR2
166066  , p_source_85_meaning    IN VARCHAR2
166067 --Entered Currency Code
166068  , p_source_88            IN VARCHAR2
166069 --Entered Amount
166070  , p_source_91            IN NUMBER
166071 --Currency Conversion Date
166072  , p_source_92            IN DATE
166073 --Currency Conversion Rate
166074  , p_source_93            IN NUMBER
166075 --Currency Conversion Type
166076  , p_source_94            IN VARCHAR2
166077 --Accounted Amount
166078  , p_source_95            IN NUMBER
166079 --Accounting Line Type
166080  , p_source_97            IN NUMBER
166081 )
166082 IS
166083 
166084 l_component_type              VARCHAR2(80);
166085 l_component_code              VARCHAR2(30);
166086 l_component_type_code         VARCHAR2(1);
166087 l_component_appl_id           INTEGER;
166088 l_amb_context_code            VARCHAR2(30);
166089 l_entity_code                 VARCHAR2(30);
166090 l_event_class_code            VARCHAR2(30);
166091 l_ae_header_id                NUMBER;
166092 l_event_type_code             VARCHAR2(30);
166093 l_line_definition_code        VARCHAR2(30);
166094 l_line_definition_owner_code  VARCHAR2(1);
166095 --
166096 -- adr variables
166097 l_segment                     VARCHAR2(30);
166098 l_ccid                        NUMBER;
166099 l_adr_transaction_coa_id      NUMBER;
166100 l_adr_accounting_coa_id       NUMBER;
166101 l_adr_flexfield_segment_code  VARCHAR2(30);
166102 l_adr_flex_value_set_id       NUMBER;
166103 l_adr_value_type_code         VARCHAR2(30);
166104 l_adr_value_combination_id    NUMBER;
166105 l_adr_value_segment_code      VARCHAR2(30);
166106 
166107 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
166108 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
166109 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
166110 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
166111 
166112 -- 4262811 Variables ------------------------------------------------------------------------------------------
166113 l_entered_amt_idx             NUMBER;
166114 l_accted_amt_idx              NUMBER;
166115 l_acc_rev_flag                VARCHAR2(1);
166116 l_accrual_line_num            NUMBER;
166117 l_tmp_amt                     NUMBER;
166118 l_acc_rev_natural_side_code   VARCHAR2(1);
166119 
166120 l_num_entries                 NUMBER;
166121 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
166122 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
166123 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
166124 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
166125 l_recog_line_1                NUMBER;
166126 l_recog_line_2                NUMBER;
166127 
166128 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
166129 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
166130 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
166131 
166132 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
166133 
166134 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
166135 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
166136 
166137 ---------------------------------------------------------------------------------------------------------------
166138 
166139 
166140 --
166141 -- bulk performance
166142 --
166143 l_balance_type_code           VARCHAR2(1);
166144 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
166145 l_log_module                  VARCHAR2(240);
166146 
166147 --
166148 -- Upgrade strategy
166149 --
166150 l_actual_upg_option           VARCHAR2(1);
166151 l_enc_upg_option           VARCHAR2(1);
166152 
166153 --
166154 BEGIN
166155 --
166156 IF g_log_enabled THEN
166157       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_308';
166158 END IF;
166159 --
166160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166161 
166162       trace
166163          (p_msg      => 'BEGIN of AcctLineType_308'
166164          ,p_level    => C_LEVEL_PROCEDURE
166165          ,p_module   => l_log_module);
166166 
166167 END IF;
166168 --
166169 l_component_type             := 'AMB_JLT';
166170 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
166171 l_component_type_code        := 'S';
166172 l_component_appl_id          :=  707;
166173 l_amb_context_code           := 'DEFAULT';
166174 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
166175 l_event_class_code           := 'WIP_MTL';
166176 l_event_type_code            := 'WIP_COMP_RETURN';
166177 l_line_definition_owner_code := 'S';
166178 l_line_definition_code       := 'PI_WIP_COMP_RETURN';
166179 --
166180 l_balance_type_code          := 'A';
166181 l_segment                     := NULL;
166182 l_ccid                        := NULL;
166183 l_adr_transaction_coa_id      := NULL;
166184 l_adr_accounting_coa_id       := NULL;
166185 l_adr_flexfield_segment_code  := NULL;
166186 l_adr_flex_value_set_id       := NULL;
166187 l_adr_value_type_code         := NULL;
166188 l_adr_value_combination_id    := NULL;
166189 l_adr_value_segment_code      := NULL;
166190 
166191 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
166192 l_bflow_class_code           := '';    -- 4219869 Business Flow
166193 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
166194 l_budgetary_control_flag     := 'N';
166195 
166196 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
166197 l_bflow_applied_to_amt       := NULL; -- 5132302
166198 l_entered_amt_idx            := NULL;          -- 4262811
166199 l_accted_amt_idx             := NULL;          -- 4262811
166200 l_acc_rev_flag               := NULL;          -- 4262811
166201 l_accrual_line_num           := NULL;          -- 4262811
166202 l_tmp_amt                    := NULL;          -- 4262811
166203 --
166204  
166205 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
166206     l_balance_type_code <> 'B' THEN
166207 IF NVL(p_source_97,9E125) =  3
166208  THEN 
166209 
166210    --
166211    XLA_AE_LINES_PKG.SetNewLine;
166212 
166213    p_balance_type_code          := l_balance_type_code;
166214    -- set the flag so later we will know whether the gain loss line needs to be created
166215    
166216    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
166217      p_actual_flag :='A';
166218    END IF;
166219 
166220    --
166221    -- bulk performance
166222    --
166223    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
166224                                       p_header_num   => 0); -- 4262811
166225    --
166226    -- set accounting line options
166227    --
166228    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
166229            p_natural_side_code          => 'D'
166230          , p_gain_or_loss_flag          => 'N'
166231          , p_gl_transfer_mode_code      => 'S'
166232          , p_acct_entry_type_code       => 'A'
166233          , p_switch_side_flag           => 'Y'
166234          , p_merge_duplicate_code       => 'N'
166235          );
166236    --
166237    l_acc_rev_natural_side_code := 'C';  -- 4262811
166238    -- 
166239    --
166240    -- set accounting line type info
166241    --
166242    xla_ae_lines_pkg.SetAcctLineType
166243       (p_component_type             => l_component_type
166244       ,p_event_type_code            => l_event_type_code
166245       ,p_line_definition_owner_code => l_line_definition_owner_code
166246       ,p_line_definition_code       => l_line_definition_code
166247       ,p_accounting_line_code       => l_component_code
166248       ,p_accounting_line_type_code  => l_component_type_code
166249       ,p_accounting_line_appl_id    => l_component_appl_id
166250       ,p_amb_context_code           => l_amb_context_code
166251       ,p_entity_code                => l_entity_code
166252       ,p_event_class_code           => l_event_class_code);
166253    --
166254    -- set accounting class
166255    --
166256    xla_ae_lines_pkg.SetAcctClass(
166257            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
166258          , p_ae_header_id           => l_ae_header_id
166259          );
166260 
166261    --
166262    -- set rounding class
166263    --
166264    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
166265                       'MATERIAL_OVERHEAD_ABSORPTION';
166266 
166267    --
166268    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
166269    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
166270    --
166271    -- bulk performance
166272    --
166273    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
166274 
166275    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
166276       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
166277 
166278    -- 4955764
166279    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
166280       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
166281 
166282    -- 4458381 Public Sector Enh
166283    
166284    --
166285    -- set accounting attributes for the line type
166286    --
166287    l_entered_amt_idx := 3;
166288    l_accted_amt_idx  := 8;
166289    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
166290    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
166291    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
166292    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
166293    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
166294    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
166295    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
166296    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
166297    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
166298    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
166299    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
166300    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
166301    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
166302    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
166303    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
166304    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
166305    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
166306 
166307    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
166308    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
166309 
166310    ---------------------------------------------------------------------------------------------------------------
166311    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
166312    ---------------------------------------------------------------------------------------------------------------
166313    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
166314 
166315    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
166316    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
166317 
166318    IF xla_accounting_cache_pkg.GetValueChar
166319          (p_source_code         => 'LEDGER_CATEGORY_CODE'
166320          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
166321    AND l_bflow_method_code = 'PRIOR_ENTRY'
166322 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
166323    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
166324          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
166325        )
166326    THEN
166327          xla_ae_lines_pkg.BflowUpgEntry
166328            (p_business_method_code    => l_bflow_method_code
166329            ,p_business_class_code     => l_bflow_class_code
166330            ,p_balance_type            => l_balance_type_code);
166331    ELSE
166332       NULL;
166333 -- No business flow processing for business flow method of NONE.
166334    END IF;
166335 
166336    --
166337    -- call analytical criteria
166338    --
166339    
166340    --
166341    -- call description
166342    --
166343    
166344 xla_ae_lines_pkg.SetLineDescription(
166345    p_ae_header_id => l_ae_header_id
166346   ,p_description  => Description_1 (
166347      p_application_id         => p_application_id
166348    , p_ae_header_id           => l_ae_header_id 
166349 , p_source_1 => p_source_1
166350 , p_source_2 => p_source_2
166351 , p_source_3 => p_source_3
166352 , p_source_4 => p_source_4
166353 , p_source_5 => p_source_5
166354    )
166355 );
166356 
166357 
166358    --
166359    -- call ADRs
166360    -- Bug 4922099
166361    --
166362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
166363         (NVL(l_actual_upg_option, 'N') = 'O') OR
166364         (NVL(l_enc_upg_option, 'N') = 'O')
166365       )
166366    THEN
166367    NULL;
166368    --
166369    --
166370    
166371   l_ccid := AcctDerRule_6(
166372            p_application_id           => p_application_id
166373          , p_ae_header_id             => l_ae_header_id 
166374 , p_source_11 => p_source_11
166375          , x_transaction_coa_id       => l_adr_transaction_coa_id
166376          , x_accounting_coa_id        => l_adr_accounting_coa_id
166377          , x_value_type_code          => l_adr_value_type_code
166378          , p_side                     => 'NA'
166379    );
166380 
166381    xla_ae_lines_pkg.set_ccid(
166382     p_code_combination_id          => l_ccid
166383   , p_value_type_code              => l_adr_value_type_code
166384   , p_transaction_coa_id           => l_adr_transaction_coa_id
166385   , p_accounting_coa_id            => l_adr_accounting_coa_id
166386   , p_adr_code                     => 'CST_DEFAULT'
166387   , p_adr_type_code                => 'S'
166388   , p_component_type               => l_component_type
166389   , p_component_code               => l_component_code
166390   , p_component_type_code          => l_component_type_code
166391   , p_component_appl_id            => l_component_appl_id
166392   , p_amb_context_code             => l_amb_context_code
166393   , p_side                         => 'NA'
166394   );
166395 
166396 
166397    --
166398    --
166399    END IF;
166400    --
166401    -- Bug 4922099
166402    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
166403           (NVL(l_enc_upg_option, 'N') = 'O')
166404         ) AND
166405         (l_bflow_method_code = 'PRIOR_ENTRY')
166406       )
166407    THEN
166408       IF
166409       --
166410       1 = 2
166411       --
166412       THEN
166413       xla_accounting_err_pkg.build_message
166414                                     (p_appli_s_name            => 'XLA'
166415                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
166416                                     ,p_token_1                 => 'LINE_NUMBER'
166417                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
166418                                     ,p_token_2                 => 'LINE_TYPE_NAME'
166419                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
166420                                                                              l_component_type
166421                                                                             ,l_component_code
166422                                                                             ,l_component_type_code
166423                                                                             ,l_component_appl_id
166424                                                                             ,l_amb_context_code
166425                                                                             ,l_entity_code
166426                                                                             ,l_event_class_code
166427                                                                            )
166428                                     ,p_token_3                 => 'OWNER'
166429                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
166430                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
166431                                                                           ,p_lookup_code    => l_component_type_code
166432                                                                          )
166433                                     ,p_token_4                 => 'PRODUCT_NAME'
166434                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
166435                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
166436                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
166437                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
166438                                     ,p_ae_header_id            =>  NULL
166439                                        );
166440 
166441         IF (C_LEVEL_ERROR>= g_log_level) THEN
166442                  trace
166443                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
166444                       ,p_level    => C_LEVEL_ERROR
166445                       ,p_module   => l_log_module);
166446         END IF;
166447       END IF;
166448    END IF;
166449    --
166450    --
166451    ------------------------------------------------------------------------------------------------
166452    -- 4219869 Business Flow
166453    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
166454    -- Prior Entry.  Currently, the following code is always generated.
166455    ------------------------------------------------------------------------------------------------
166456    XLA_AE_LINES_PKG.ValidateCurrentLine;
166457 
166458    ------------------------------------------------------------------------------------
166459    -- 4219869 Business Flow
166460    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
166461    ------------------------------------------------------------------------------------
166462    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
166463 
166464    ----------------------------------------------------------------------------------
166465    -- 4219869 Business Flow
166466    -- Update journal entry status -- Need to generate this within IF <condition>
166467    ----------------------------------------------------------------------------------
166468    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
166469          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
166470          ,p_balance_type_code => l_balance_type_code
166471          );
166472 
166473    -------------------------------------------------------------------------------------------
166474    -- 4262811 - Generate the Accrual Reversal lines
166475    -------------------------------------------------------------------------------------------
166476    BEGIN
166477       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
166478                               (g_array_event(p_event_id).array_value_num('header_index'));
166479       IF l_acc_rev_flag IS NULL THEN
166480          l_acc_rev_flag := 'N';
166481       END IF;
166482    EXCEPTION
166483       WHEN OTHERS THEN
166484          l_acc_rev_flag := 'N';
166485    END;
166486    --
166487    IF (l_acc_rev_flag = 'Y') THEN
166488 
166489        -- 4645092  ------------------------------------------------------------------------------
166490        -- To allow MPA report to determine if it should generate report process
166491        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
166492        ------------------------------------------------------------------------------------------
166493 
166494        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
166495        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
166496    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
166497    -- call ADRs
166498    -- Bug 4922099
166499    --
166500    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
166501         (NVL(l_actual_upg_option, 'N') = 'O') OR
166502         (NVL(l_enc_upg_option, 'N') = 'O')
166503       )
166504    THEN
166505    NULL;
166506    --
166507    --
166508    
166509   l_ccid := AcctDerRule_6(
166510            p_application_id           => p_application_id
166511          , p_ae_header_id             => l_ae_header_id 
166512 , p_source_11 => p_source_11
166513          , x_transaction_coa_id       => l_adr_transaction_coa_id
166514          , x_accounting_coa_id        => l_adr_accounting_coa_id
166515          , x_value_type_code          => l_adr_value_type_code
166516          , p_side                     => 'NA'
166517    );
166518 
166519    xla_ae_lines_pkg.set_ccid(
166520     p_code_combination_id          => l_ccid
166521   , p_value_type_code              => l_adr_value_type_code
166522   , p_transaction_coa_id           => l_adr_transaction_coa_id
166523   , p_accounting_coa_id            => l_adr_accounting_coa_id
166524   , p_adr_code                     => 'CST_DEFAULT'
166525   , p_adr_type_code                => 'S'
166526   , p_component_type               => l_component_type
166527   , p_component_code               => l_component_code
166528   , p_component_type_code          => l_component_type_code
166529   , p_component_appl_id            => l_component_appl_id
166530   , p_amb_context_code             => l_amb_context_code
166531   , p_side                         => 'NA'
166532   );
166533 
166534 
166535    --
166536    --
166537    END IF;
166538 
166539        --
166540        -- Update the line information that should be overwritten
166541        --
166542        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
166543                                          p_header_num   => 1);
166544        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
166545 
166546        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
166547 
166548        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
166549           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
166550        END IF;
166551 
166552       --
166553       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
166554       --
166555       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
166556           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
166557       ELSE
166558           ---------------------------------------------------------------------------------------------------
166559           -- 4262811a Switch Sign
166560           ---------------------------------------------------------------------------------------------------
166561           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
166562           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
166563                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
166564           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
166565                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
166566           -- 5132302
166567           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
166568                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
166569 
166570       END IF;
166571 
166572       -- 4955764
166573       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
166574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
166575 
166576 
166577       XLA_AE_LINES_PKG.ValidateCurrentLine;
166578       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
166579 
166580       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
166581                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
166582                ,p_balance_type_code => l_balance_type_code);
166583 
166584    END IF;
166585 
166586    -----------------------------------------------------------------------------------------
166587    -- 4262811 Multiperiod Accounting
166588    -----------------------------------------------------------------------------------------
166589      -- No MPA option is assigned.
166590 
166591 
166592 END IF;
166593 END IF;
166594 --
166595 
166596 --
166597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166598    trace
166599       (p_msg      => 'END of AcctLineType_308'
166600       ,p_level    => C_LEVEL_PROCEDURE
166601       ,p_module   => l_log_module);
166602 END IF;
166603 --
166604 EXCEPTION
166605   WHEN xla_exceptions_pkg.application_exception THEN
166606       RAISE;
166607   WHEN OTHERS THEN
166608        xla_exceptions_pkg.raise_message
166609            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_308');
166610 END AcctLineType_308;
166611 --
166612 
166613 ---------------------------------------
166614 --
166615 -- PRIVATE FUNCTION
166616 --         AcctLineType_309
166617 --
166618 ---------------------------------------
166619 PROCEDURE AcctLineType_309 (
166620   p_application_id        IN NUMBER
166621  ,p_event_id              IN NUMBER
166622  ,p_calculate_acctd_flag  IN VARCHAR2
166623  ,p_calculate_g_l_flag    IN VARCHAR2
166624  ,p_actual_flag           IN OUT VARCHAR2
166625  ,p_balance_type_code     OUT VARCHAR2
166626  ,p_gain_or_loss_ref      OUT VARCHAR2
166627  
166628 --TRANSACTION_ID
166629  , p_source_1            IN NUMBER
166630 --Item Concatenated Segments
166631  , p_source_2            IN VARCHAR2
166632 --Transaction Quantity
166633  , p_source_3            IN NUMBER
166634 --Transaction Unit of Measure Code
166635  , p_source_4            IN VARCHAR2
166636 --Inventory Transaction Type Description
166637  , p_source_5            IN VARCHAR2
166638 --Cost Management Default Account
166639  , p_source_11            IN NUMBER
166640 --DISTRIBUTION_IDENTIFIER
166641  , p_source_84            IN NUMBER
166642 --Distribution Type
166643  , p_source_85            IN VARCHAR2
166644  , p_source_85_meaning    IN VARCHAR2
166645 --Entered Currency Code
166646  , p_source_88            IN VARCHAR2
166647 --Entered Amount
166648  , p_source_91            IN NUMBER
166649 --Currency Conversion Date
166650  , p_source_92            IN DATE
166651 --Currency Conversion Rate
166652  , p_source_93            IN NUMBER
166653 --Currency Conversion Type
166654  , p_source_94            IN VARCHAR2
166655 --Accounted Amount
166656  , p_source_95            IN NUMBER
166657 --Accounting Line Type
166658  , p_source_97            IN NUMBER
166659 )
166660 IS
166661 
166662 l_component_type              VARCHAR2(80);
166663 l_component_code              VARCHAR2(30);
166664 l_component_type_code         VARCHAR2(1);
166665 l_component_appl_id           INTEGER;
166666 l_amb_context_code            VARCHAR2(30);
166667 l_entity_code                 VARCHAR2(30);
166668 l_event_class_code            VARCHAR2(30);
166669 l_ae_header_id                NUMBER;
166670 l_event_type_code             VARCHAR2(30);
166671 l_line_definition_code        VARCHAR2(30);
166672 l_line_definition_owner_code  VARCHAR2(1);
166673 --
166674 -- adr variables
166675 l_segment                     VARCHAR2(30);
166676 l_ccid                        NUMBER;
166677 l_adr_transaction_coa_id      NUMBER;
166678 l_adr_accounting_coa_id       NUMBER;
166679 l_adr_flexfield_segment_code  VARCHAR2(30);
166680 l_adr_flex_value_set_id       NUMBER;
166681 l_adr_value_type_code         VARCHAR2(30);
166682 l_adr_value_combination_id    NUMBER;
166683 l_adr_value_segment_code      VARCHAR2(30);
166684 
166685 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
166686 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
166687 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
166688 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
166689 
166690 -- 4262811 Variables ------------------------------------------------------------------------------------------
166691 l_entered_amt_idx             NUMBER;
166692 l_accted_amt_idx              NUMBER;
166693 l_acc_rev_flag                VARCHAR2(1);
166694 l_accrual_line_num            NUMBER;
166695 l_tmp_amt                     NUMBER;
166696 l_acc_rev_natural_side_code   VARCHAR2(1);
166697 
166698 l_num_entries                 NUMBER;
166699 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
166700 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
166701 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
166702 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
166703 l_recog_line_1                NUMBER;
166704 l_recog_line_2                NUMBER;
166705 
166706 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
166707 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
166708 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
166709 
166710 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
166711 
166712 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
166713 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
166714 
166715 ---------------------------------------------------------------------------------------------------------------
166716 
166717 
166718 --
166719 -- bulk performance
166720 --
166721 l_balance_type_code           VARCHAR2(1);
166722 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
166723 l_log_module                  VARCHAR2(240);
166724 
166725 --
166726 -- Upgrade strategy
166727 --
166728 l_actual_upg_option           VARCHAR2(1);
166729 l_enc_upg_option           VARCHAR2(1);
166730 
166731 --
166732 BEGIN
166733 --
166734 IF g_log_enabled THEN
166735       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_309';
166736 END IF;
166737 --
166738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166739 
166740       trace
166741          (p_msg      => 'BEGIN of AcctLineType_309'
166742          ,p_level    => C_LEVEL_PROCEDURE
166743          ,p_module   => l_log_module);
166744 
166745 END IF;
166746 --
166747 l_component_type             := 'AMB_JLT';
166748 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
166749 l_component_type_code        := 'S';
166750 l_component_appl_id          :=  707;
166751 l_amb_context_code           := 'DEFAULT';
166752 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
166753 l_event_class_code           := 'WIP_MTL';
166754 l_event_type_code            := 'WIP_NEG_COMP_ISSUE';
166755 l_line_definition_owner_code := 'S';
166756 l_line_definition_code       := 'PI_WIP_NEG_COMP_ISSUE';
166757 --
166758 l_balance_type_code          := 'A';
166759 l_segment                     := NULL;
166760 l_ccid                        := NULL;
166761 l_adr_transaction_coa_id      := NULL;
166762 l_adr_accounting_coa_id       := NULL;
166763 l_adr_flexfield_segment_code  := NULL;
166764 l_adr_flex_value_set_id       := NULL;
166765 l_adr_value_type_code         := NULL;
166766 l_adr_value_combination_id    := NULL;
166767 l_adr_value_segment_code      := NULL;
166768 
166769 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
166770 l_bflow_class_code           := '';    -- 4219869 Business Flow
166771 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
166772 l_budgetary_control_flag     := 'N';
166773 
166774 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
166775 l_bflow_applied_to_amt       := NULL; -- 5132302
166776 l_entered_amt_idx            := NULL;          -- 4262811
166777 l_accted_amt_idx             := NULL;          -- 4262811
166778 l_acc_rev_flag               := NULL;          -- 4262811
166779 l_accrual_line_num           := NULL;          -- 4262811
166780 l_tmp_amt                    := NULL;          -- 4262811
166781 --
166782  
166783 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
166784     l_balance_type_code <> 'B' THEN
166785 IF NVL(p_source_97,9E125) =  3
166786  THEN 
166787 
166788    --
166789    XLA_AE_LINES_PKG.SetNewLine;
166790 
166791    p_balance_type_code          := l_balance_type_code;
166792    -- set the flag so later we will know whether the gain loss line needs to be created
166793    
166794    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
166795      p_actual_flag :='A';
166796    END IF;
166797 
166798    --
166799    -- bulk performance
166800    --
166801    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
166802                                       p_header_num   => 0); -- 4262811
166803    --
166804    -- set accounting line options
166805    --
166806    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
166807            p_natural_side_code          => 'D'
166808          , p_gain_or_loss_flag          => 'N'
166809          , p_gl_transfer_mode_code      => 'S'
166810          , p_acct_entry_type_code       => 'A'
166811          , p_switch_side_flag           => 'Y'
166812          , p_merge_duplicate_code       => 'N'
166813          );
166814    --
166815    l_acc_rev_natural_side_code := 'C';  -- 4262811
166816    -- 
166817    --
166818    -- set accounting line type info
166819    --
166820    xla_ae_lines_pkg.SetAcctLineType
166821       (p_component_type             => l_component_type
166822       ,p_event_type_code            => l_event_type_code
166823       ,p_line_definition_owner_code => l_line_definition_owner_code
166824       ,p_line_definition_code       => l_line_definition_code
166825       ,p_accounting_line_code       => l_component_code
166826       ,p_accounting_line_type_code  => l_component_type_code
166827       ,p_accounting_line_appl_id    => l_component_appl_id
166828       ,p_amb_context_code           => l_amb_context_code
166829       ,p_entity_code                => l_entity_code
166830       ,p_event_class_code           => l_event_class_code);
166831    --
166832    -- set accounting class
166833    --
166834    xla_ae_lines_pkg.SetAcctClass(
166835            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
166836          , p_ae_header_id           => l_ae_header_id
166837          );
166838 
166839    --
166840    -- set rounding class
166841    --
166842    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
166843                       'MATERIAL_OVERHEAD_ABSORPTION';
166844 
166845    --
166846    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
166847    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
166848    --
166849    -- bulk performance
166850    --
166851    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
166852 
166853    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
166854       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
166855 
166856    -- 4955764
166857    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
166858       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
166859 
166860    -- 4458381 Public Sector Enh
166861    
166862    --
166863    -- set accounting attributes for the line type
166864    --
166865    l_entered_amt_idx := 3;
166866    l_accted_amt_idx  := 8;
166867    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
166868    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
166869    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
166870    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
166871    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
166872    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
166873    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
166874    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
166875    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
166876    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
166877    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
166878    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
166879    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
166880    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
166881    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
166882    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
166883    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
166884 
166885    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
166886    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
166887 
166888    ---------------------------------------------------------------------------------------------------------------
166889    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
166890    ---------------------------------------------------------------------------------------------------------------
166891    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
166892 
166893    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
166894    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
166895 
166896    IF xla_accounting_cache_pkg.GetValueChar
166897          (p_source_code         => 'LEDGER_CATEGORY_CODE'
166898          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
166899    AND l_bflow_method_code = 'PRIOR_ENTRY'
166900 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
166901    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
166902          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
166903        )
166904    THEN
166905          xla_ae_lines_pkg.BflowUpgEntry
166906            (p_business_method_code    => l_bflow_method_code
166907            ,p_business_class_code     => l_bflow_class_code
166908            ,p_balance_type            => l_balance_type_code);
166909    ELSE
166910       NULL;
166911 -- No business flow processing for business flow method of NONE.
166912    END IF;
166913 
166914    --
166915    -- call analytical criteria
166916    --
166917    
166918    --
166919    -- call description
166920    --
166921    
166922 xla_ae_lines_pkg.SetLineDescription(
166923    p_ae_header_id => l_ae_header_id
166924   ,p_description  => Description_1 (
166925      p_application_id         => p_application_id
166926    , p_ae_header_id           => l_ae_header_id 
166927 , p_source_1 => p_source_1
166928 , p_source_2 => p_source_2
166929 , p_source_3 => p_source_3
166930 , p_source_4 => p_source_4
166931 , p_source_5 => p_source_5
166932    )
166933 );
166934 
166935 
166936    --
166937    -- call ADRs
166938    -- Bug 4922099
166939    --
166940    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
166941         (NVL(l_actual_upg_option, 'N') = 'O') OR
166942         (NVL(l_enc_upg_option, 'N') = 'O')
166943       )
166944    THEN
166945    NULL;
166946    --
166947    --
166948    
166949   l_ccid := AcctDerRule_6(
166950            p_application_id           => p_application_id
166951          , p_ae_header_id             => l_ae_header_id 
166952 , p_source_11 => p_source_11
166953          , x_transaction_coa_id       => l_adr_transaction_coa_id
166954          , x_accounting_coa_id        => l_adr_accounting_coa_id
166955          , x_value_type_code          => l_adr_value_type_code
166956          , p_side                     => 'NA'
166957    );
166958 
166959    xla_ae_lines_pkg.set_ccid(
166960     p_code_combination_id          => l_ccid
166961   , p_value_type_code              => l_adr_value_type_code
166962   , p_transaction_coa_id           => l_adr_transaction_coa_id
166963   , p_accounting_coa_id            => l_adr_accounting_coa_id
166964   , p_adr_code                     => 'CST_DEFAULT'
166965   , p_adr_type_code                => 'S'
166966   , p_component_type               => l_component_type
166967   , p_component_code               => l_component_code
166968   , p_component_type_code          => l_component_type_code
166969   , p_component_appl_id            => l_component_appl_id
166970   , p_amb_context_code             => l_amb_context_code
166971   , p_side                         => 'NA'
166972   );
166973 
166974 
166975    --
166976    --
166977    END IF;
166978    --
166979    -- Bug 4922099
166980    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
166981           (NVL(l_enc_upg_option, 'N') = 'O')
166982         ) AND
166983         (l_bflow_method_code = 'PRIOR_ENTRY')
166984       )
166985    THEN
166986       IF
166987       --
166988       1 = 2
166989       --
166990       THEN
166991       xla_accounting_err_pkg.build_message
166992                                     (p_appli_s_name            => 'XLA'
166993                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
166994                                     ,p_token_1                 => 'LINE_NUMBER'
166995                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
166996                                     ,p_token_2                 => 'LINE_TYPE_NAME'
166997                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
166998                                                                              l_component_type
166999                                                                             ,l_component_code
167000                                                                             ,l_component_type_code
167001                                                                             ,l_component_appl_id
167002                                                                             ,l_amb_context_code
167003                                                                             ,l_entity_code
167004                                                                             ,l_event_class_code
167005                                                                            )
167006                                     ,p_token_3                 => 'OWNER'
167007                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
167008                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
167009                                                                           ,p_lookup_code    => l_component_type_code
167010                                                                          )
167011                                     ,p_token_4                 => 'PRODUCT_NAME'
167012                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
167013                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
167014                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
167015                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
167016                                     ,p_ae_header_id            =>  NULL
167017                                        );
167018 
167019         IF (C_LEVEL_ERROR>= g_log_level) THEN
167020                  trace
167021                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
167022                       ,p_level    => C_LEVEL_ERROR
167023                       ,p_module   => l_log_module);
167024         END IF;
167025       END IF;
167026    END IF;
167027    --
167028    --
167029    ------------------------------------------------------------------------------------------------
167030    -- 4219869 Business Flow
167031    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
167032    -- Prior Entry.  Currently, the following code is always generated.
167033    ------------------------------------------------------------------------------------------------
167034    XLA_AE_LINES_PKG.ValidateCurrentLine;
167035 
167036    ------------------------------------------------------------------------------------
167037    -- 4219869 Business Flow
167038    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
167039    ------------------------------------------------------------------------------------
167040    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
167041 
167042    ----------------------------------------------------------------------------------
167043    -- 4219869 Business Flow
167044    -- Update journal entry status -- Need to generate this within IF <condition>
167045    ----------------------------------------------------------------------------------
167046    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
167047          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
167048          ,p_balance_type_code => l_balance_type_code
167049          );
167050 
167051    -------------------------------------------------------------------------------------------
167052    -- 4262811 - Generate the Accrual Reversal lines
167053    -------------------------------------------------------------------------------------------
167054    BEGIN
167055       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
167056                               (g_array_event(p_event_id).array_value_num('header_index'));
167057       IF l_acc_rev_flag IS NULL THEN
167058          l_acc_rev_flag := 'N';
167059       END IF;
167060    EXCEPTION
167061       WHEN OTHERS THEN
167062          l_acc_rev_flag := 'N';
167063    END;
167064    --
167065    IF (l_acc_rev_flag = 'Y') THEN
167066 
167067        -- 4645092  ------------------------------------------------------------------------------
167068        -- To allow MPA report to determine if it should generate report process
167069        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
167070        ------------------------------------------------------------------------------------------
167071 
167072        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
167073        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
167074    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
167075    -- call ADRs
167076    -- Bug 4922099
167077    --
167078    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
167079         (NVL(l_actual_upg_option, 'N') = 'O') OR
167080         (NVL(l_enc_upg_option, 'N') = 'O')
167081       )
167082    THEN
167083    NULL;
167084    --
167085    --
167086    
167087   l_ccid := AcctDerRule_6(
167088            p_application_id           => p_application_id
167089          , p_ae_header_id             => l_ae_header_id 
167090 , p_source_11 => p_source_11
167091          , x_transaction_coa_id       => l_adr_transaction_coa_id
167092          , x_accounting_coa_id        => l_adr_accounting_coa_id
167093          , x_value_type_code          => l_adr_value_type_code
167094          , p_side                     => 'NA'
167095    );
167096 
167097    xla_ae_lines_pkg.set_ccid(
167098     p_code_combination_id          => l_ccid
167099   , p_value_type_code              => l_adr_value_type_code
167100   , p_transaction_coa_id           => l_adr_transaction_coa_id
167101   , p_accounting_coa_id            => l_adr_accounting_coa_id
167102   , p_adr_code                     => 'CST_DEFAULT'
167103   , p_adr_type_code                => 'S'
167104   , p_component_type               => l_component_type
167105   , p_component_code               => l_component_code
167106   , p_component_type_code          => l_component_type_code
167107   , p_component_appl_id            => l_component_appl_id
167108   , p_amb_context_code             => l_amb_context_code
167109   , p_side                         => 'NA'
167110   );
167111 
167112 
167113    --
167114    --
167115    END IF;
167116 
167117        --
167118        -- Update the line information that should be overwritten
167119        --
167120        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
167121                                          p_header_num   => 1);
167122        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
167123 
167124        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
167125 
167126        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
167127           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
167128        END IF;
167129 
167130       --
167131       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
167132       --
167133       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
167134           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
167135       ELSE
167136           ---------------------------------------------------------------------------------------------------
167137           -- 4262811a Switch Sign
167138           ---------------------------------------------------------------------------------------------------
167139           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
167140           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
167141                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
167142           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
167143                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
167144           -- 5132302
167145           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
167146                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
167147 
167148       END IF;
167149 
167150       -- 4955764
167151       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
167152       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
167153 
167154 
167155       XLA_AE_LINES_PKG.ValidateCurrentLine;
167156       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
167157 
167158       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
167159                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
167160                ,p_balance_type_code => l_balance_type_code);
167161 
167162    END IF;
167163 
167164    -----------------------------------------------------------------------------------------
167165    -- 4262811 Multiperiod Accounting
167166    -----------------------------------------------------------------------------------------
167167      -- No MPA option is assigned.
167168 
167169 
167170 END IF;
167171 END IF;
167172 --
167173 
167174 --
167175 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167176    trace
167177       (p_msg      => 'END of AcctLineType_309'
167178       ,p_level    => C_LEVEL_PROCEDURE
167179       ,p_module   => l_log_module);
167180 END IF;
167181 --
167182 EXCEPTION
167183   WHEN xla_exceptions_pkg.application_exception THEN
167184       RAISE;
167185   WHEN OTHERS THEN
167186        xla_exceptions_pkg.raise_message
167187            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_309');
167188 END AcctLineType_309;
167189 --
167190 
167191 ---------------------------------------
167192 --
167193 -- PRIVATE FUNCTION
167194 --         AcctLineType_310
167195 --
167196 ---------------------------------------
167197 PROCEDURE AcctLineType_310 (
167198   p_application_id        IN NUMBER
167199  ,p_event_id              IN NUMBER
167200  ,p_calculate_acctd_flag  IN VARCHAR2
167201  ,p_calculate_g_l_flag    IN VARCHAR2
167202  ,p_actual_flag           IN OUT VARCHAR2
167203  ,p_balance_type_code     OUT VARCHAR2
167204  ,p_gain_or_loss_ref      OUT VARCHAR2
167205  
167206 --TRANSACTION_ID
167207  , p_source_1            IN NUMBER
167208 --Item Concatenated Segments
167209  , p_source_2            IN VARCHAR2
167210 --Transaction Quantity
167211  , p_source_3            IN NUMBER
167212 --Transaction Unit of Measure Code
167213  , p_source_4            IN VARCHAR2
167214 --Inventory Transaction Type Description
167215  , p_source_5            IN VARCHAR2
167216 --Cost Management Default Account
167217  , p_source_11            IN NUMBER
167218 --DISTRIBUTION_IDENTIFIER
167219  , p_source_84            IN NUMBER
167220 --Distribution Type
167221  , p_source_85            IN VARCHAR2
167222  , p_source_85_meaning    IN VARCHAR2
167223 --Entered Currency Code
167224  , p_source_88            IN VARCHAR2
167225 --Entered Amount
167226  , p_source_91            IN NUMBER
167227 --Currency Conversion Date
167228  , p_source_92            IN DATE
167229 --Currency Conversion Rate
167230  , p_source_93            IN NUMBER
167231 --Currency Conversion Type
167232  , p_source_94            IN VARCHAR2
167233 --Accounted Amount
167234  , p_source_95            IN NUMBER
167235 --Accounting Line Type
167236  , p_source_97            IN NUMBER
167237 )
167238 IS
167239 
167240 l_component_type              VARCHAR2(80);
167241 l_component_code              VARCHAR2(30);
167242 l_component_type_code         VARCHAR2(1);
167243 l_component_appl_id           INTEGER;
167244 l_amb_context_code            VARCHAR2(30);
167245 l_entity_code                 VARCHAR2(30);
167246 l_event_class_code            VARCHAR2(30);
167247 l_ae_header_id                NUMBER;
167248 l_event_type_code             VARCHAR2(30);
167249 l_line_definition_code        VARCHAR2(30);
167250 l_line_definition_owner_code  VARCHAR2(1);
167251 --
167252 -- adr variables
167253 l_segment                     VARCHAR2(30);
167254 l_ccid                        NUMBER;
167255 l_adr_transaction_coa_id      NUMBER;
167256 l_adr_accounting_coa_id       NUMBER;
167257 l_adr_flexfield_segment_code  VARCHAR2(30);
167258 l_adr_flex_value_set_id       NUMBER;
167259 l_adr_value_type_code         VARCHAR2(30);
167260 l_adr_value_combination_id    NUMBER;
167261 l_adr_value_segment_code      VARCHAR2(30);
167262 
167263 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
167264 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
167265 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
167266 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
167267 
167268 -- 4262811 Variables ------------------------------------------------------------------------------------------
167269 l_entered_amt_idx             NUMBER;
167270 l_accted_amt_idx              NUMBER;
167271 l_acc_rev_flag                VARCHAR2(1);
167272 l_accrual_line_num            NUMBER;
167273 l_tmp_amt                     NUMBER;
167274 l_acc_rev_natural_side_code   VARCHAR2(1);
167275 
167276 l_num_entries                 NUMBER;
167277 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
167278 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
167279 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
167280 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
167281 l_recog_line_1                NUMBER;
167282 l_recog_line_2                NUMBER;
167283 
167284 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
167285 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
167286 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
167287 
167288 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
167289 
167290 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
167291 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
167292 
167293 ---------------------------------------------------------------------------------------------------------------
167294 
167295 
167296 --
167297 -- bulk performance
167298 --
167299 l_balance_type_code           VARCHAR2(1);
167300 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
167301 l_log_module                  VARCHAR2(240);
167302 
167303 --
167304 -- Upgrade strategy
167305 --
167306 l_actual_upg_option           VARCHAR2(1);
167307 l_enc_upg_option           VARCHAR2(1);
167308 
167309 --
167310 BEGIN
167311 --
167312 IF g_log_enabled THEN
167313       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_310';
167314 END IF;
167315 --
167316 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167317 
167318       trace
167319          (p_msg      => 'BEGIN of AcctLineType_310'
167320          ,p_level    => C_LEVEL_PROCEDURE
167321          ,p_module   => l_log_module);
167322 
167323 END IF;
167324 --
167325 l_component_type             := 'AMB_JLT';
167326 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
167327 l_component_type_code        := 'S';
167328 l_component_appl_id          :=  707;
167329 l_amb_context_code           := 'DEFAULT';
167330 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
167331 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
167332 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
167333 l_line_definition_owner_code := 'S';
167334 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
167335 --
167336 l_balance_type_code          := 'A';
167337 l_segment                     := NULL;
167338 l_ccid                        := NULL;
167339 l_adr_transaction_coa_id      := NULL;
167340 l_adr_accounting_coa_id       := NULL;
167341 l_adr_flexfield_segment_code  := NULL;
167342 l_adr_flex_value_set_id       := NULL;
167343 l_adr_value_type_code         := NULL;
167344 l_adr_value_combination_id    := NULL;
167345 l_adr_value_segment_code      := NULL;
167346 
167347 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
167348 l_bflow_class_code           := '';    -- 4219869 Business Flow
167349 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
167350 l_budgetary_control_flag     := 'N';
167351 
167352 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
167353 l_bflow_applied_to_amt       := NULL; -- 5132302
167354 l_entered_amt_idx            := NULL;          -- 4262811
167355 l_accted_amt_idx             := NULL;          -- 4262811
167356 l_acc_rev_flag               := NULL;          -- 4262811
167357 l_accrual_line_num           := NULL;          -- 4262811
167358 l_tmp_amt                    := NULL;          -- 4262811
167359 --
167360  
167361 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
167362     l_balance_type_code <> 'B' THEN
167363 IF NVL(p_source_97,9E125) =  3
167364  THEN 
167365 
167366    --
167367    XLA_AE_LINES_PKG.SetNewLine;
167368 
167369    p_balance_type_code          := l_balance_type_code;
167370    -- set the flag so later we will know whether the gain loss line needs to be created
167371    
167372    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
167373      p_actual_flag :='A';
167374    END IF;
167375 
167376    --
167377    -- bulk performance
167378    --
167379    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
167380                                       p_header_num   => 0); -- 4262811
167381    --
167382    -- set accounting line options
167383    --
167384    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
167385            p_natural_side_code          => 'D'
167386          , p_gain_or_loss_flag          => 'N'
167387          , p_gl_transfer_mode_code      => 'S'
167388          , p_acct_entry_type_code       => 'A'
167389          , p_switch_side_flag           => 'Y'
167390          , p_merge_duplicate_code       => 'N'
167391          );
167392    --
167393    l_acc_rev_natural_side_code := 'C';  -- 4262811
167394    -- 
167395    --
167396    -- set accounting line type info
167397    --
167398    xla_ae_lines_pkg.SetAcctLineType
167399       (p_component_type             => l_component_type
167400       ,p_event_type_code            => l_event_type_code
167401       ,p_line_definition_owner_code => l_line_definition_owner_code
167402       ,p_line_definition_code       => l_line_definition_code
167403       ,p_accounting_line_code       => l_component_code
167404       ,p_accounting_line_type_code  => l_component_type_code
167405       ,p_accounting_line_appl_id    => l_component_appl_id
167406       ,p_amb_context_code           => l_amb_context_code
167407       ,p_entity_code                => l_entity_code
167408       ,p_event_class_code           => l_event_class_code);
167409    --
167410    -- set accounting class
167411    --
167412    xla_ae_lines_pkg.SetAcctClass(
167413            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
167414          , p_ae_header_id           => l_ae_header_id
167415          );
167416 
167417    --
167418    -- set rounding class
167419    --
167420    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
167421                       'MATERIAL_OVERHEAD_ABSORPTION';
167422 
167423    --
167424    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
167425    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
167426    --
167427    -- bulk performance
167428    --
167429    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
167430 
167431    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
167432       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
167433 
167434    -- 4955764
167435    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
167436       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
167437 
167438    -- 4458381 Public Sector Enh
167439    
167440    --
167441    -- set accounting attributes for the line type
167442    --
167443    l_entered_amt_idx := 3;
167444    l_accted_amt_idx  := 8;
167445    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
167446    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
167447    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
167448    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
167449    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
167450    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
167451    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
167452    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
167453    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
167454    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
167455    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
167456    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
167457    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
167458    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
167459    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
167460    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
167461    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
167462 
167463    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
167464    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
167465 
167466    ---------------------------------------------------------------------------------------------------------------
167467    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
167468    ---------------------------------------------------------------------------------------------------------------
167469    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
167470 
167471    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
167472    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
167473 
167474    IF xla_accounting_cache_pkg.GetValueChar
167475          (p_source_code         => 'LEDGER_CATEGORY_CODE'
167476          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
167477    AND l_bflow_method_code = 'PRIOR_ENTRY'
167478 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
167479    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
167480          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
167481        )
167482    THEN
167483          xla_ae_lines_pkg.BflowUpgEntry
167484            (p_business_method_code    => l_bflow_method_code
167485            ,p_business_class_code     => l_bflow_class_code
167486            ,p_balance_type            => l_balance_type_code);
167487    ELSE
167488       NULL;
167489 -- No business flow processing for business flow method of NONE.
167490    END IF;
167491 
167492    --
167493    -- call analytical criteria
167494    --
167495    
167496    --
167497    -- call description
167498    --
167499    
167500 xla_ae_lines_pkg.SetLineDescription(
167501    p_ae_header_id => l_ae_header_id
167502   ,p_description  => Description_1 (
167503      p_application_id         => p_application_id
167504    , p_ae_header_id           => l_ae_header_id 
167505 , p_source_1 => p_source_1
167506 , p_source_2 => p_source_2
167507 , p_source_3 => p_source_3
167508 , p_source_4 => p_source_4
167509 , p_source_5 => p_source_5
167510    )
167511 );
167512 
167513 
167514    --
167515    -- call ADRs
167516    -- Bug 4922099
167517    --
167518    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
167519         (NVL(l_actual_upg_option, 'N') = 'O') OR
167520         (NVL(l_enc_upg_option, 'N') = 'O')
167521       )
167522    THEN
167523    NULL;
167524    --
167525    --
167526    
167527   l_ccid := AcctDerRule_6(
167528            p_application_id           => p_application_id
167529          , p_ae_header_id             => l_ae_header_id 
167530 , p_source_11 => p_source_11
167531          , x_transaction_coa_id       => l_adr_transaction_coa_id
167532          , x_accounting_coa_id        => l_adr_accounting_coa_id
167533          , x_value_type_code          => l_adr_value_type_code
167534          , p_side                     => 'NA'
167535    );
167536 
167537    xla_ae_lines_pkg.set_ccid(
167538     p_code_combination_id          => l_ccid
167539   , p_value_type_code              => l_adr_value_type_code
167540   , p_transaction_coa_id           => l_adr_transaction_coa_id
167541   , p_accounting_coa_id            => l_adr_accounting_coa_id
167542   , p_adr_code                     => 'CST_DEFAULT'
167543   , p_adr_type_code                => 'S'
167544   , p_component_type               => l_component_type
167545   , p_component_code               => l_component_code
167546   , p_component_type_code          => l_component_type_code
167547   , p_component_appl_id            => l_component_appl_id
167548   , p_amb_context_code             => l_amb_context_code
167549   , p_side                         => 'NA'
167550   );
167551 
167552 
167553    --
167554    --
167555    END IF;
167556    --
167557    -- Bug 4922099
167558    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
167559           (NVL(l_enc_upg_option, 'N') = 'O')
167560         ) AND
167561         (l_bflow_method_code = 'PRIOR_ENTRY')
167562       )
167563    THEN
167564       IF
167565       --
167566       1 = 2
167567       --
167568       THEN
167569       xla_accounting_err_pkg.build_message
167570                                     (p_appli_s_name            => 'XLA'
167571                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
167572                                     ,p_token_1                 => 'LINE_NUMBER'
167573                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
167574                                     ,p_token_2                 => 'LINE_TYPE_NAME'
167575                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
167576                                                                              l_component_type
167577                                                                             ,l_component_code
167578                                                                             ,l_component_type_code
167579                                                                             ,l_component_appl_id
167580                                                                             ,l_amb_context_code
167581                                                                             ,l_entity_code
167582                                                                             ,l_event_class_code
167583                                                                            )
167584                                     ,p_token_3                 => 'OWNER'
167585                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
167586                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
167587                                                                           ,p_lookup_code    => l_component_type_code
167588                                                                          )
167589                                     ,p_token_4                 => 'PRODUCT_NAME'
167590                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
167591                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
167592                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
167593                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
167594                                     ,p_ae_header_id            =>  NULL
167595                                        );
167596 
167597         IF (C_LEVEL_ERROR>= g_log_level) THEN
167598                  trace
167599                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
167600                       ,p_level    => C_LEVEL_ERROR
167601                       ,p_module   => l_log_module);
167602         END IF;
167603       END IF;
167604    END IF;
167605    --
167606    --
167607    ------------------------------------------------------------------------------------------------
167608    -- 4219869 Business Flow
167609    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
167610    -- Prior Entry.  Currently, the following code is always generated.
167611    ------------------------------------------------------------------------------------------------
167612    XLA_AE_LINES_PKG.ValidateCurrentLine;
167613 
167614    ------------------------------------------------------------------------------------
167615    -- 4219869 Business Flow
167616    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
167617    ------------------------------------------------------------------------------------
167618    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
167619 
167620    ----------------------------------------------------------------------------------
167621    -- 4219869 Business Flow
167622    -- Update journal entry status -- Need to generate this within IF <condition>
167623    ----------------------------------------------------------------------------------
167624    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
167625          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
167626          ,p_balance_type_code => l_balance_type_code
167627          );
167628 
167629    -------------------------------------------------------------------------------------------
167630    -- 4262811 - Generate the Accrual Reversal lines
167631    -------------------------------------------------------------------------------------------
167632    BEGIN
167633       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
167634                               (g_array_event(p_event_id).array_value_num('header_index'));
167635       IF l_acc_rev_flag IS NULL THEN
167636          l_acc_rev_flag := 'N';
167637       END IF;
167638    EXCEPTION
167639       WHEN OTHERS THEN
167640          l_acc_rev_flag := 'N';
167641    END;
167642    --
167643    IF (l_acc_rev_flag = 'Y') THEN
167644 
167645        -- 4645092  ------------------------------------------------------------------------------
167646        -- To allow MPA report to determine if it should generate report process
167647        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
167648        ------------------------------------------------------------------------------------------
167649 
167650        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
167651        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
167652    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
167653    -- call ADRs
167654    -- Bug 4922099
167655    --
167656    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
167657         (NVL(l_actual_upg_option, 'N') = 'O') OR
167658         (NVL(l_enc_upg_option, 'N') = 'O')
167659       )
167660    THEN
167661    NULL;
167662    --
167663    --
167664    
167665   l_ccid := AcctDerRule_6(
167666            p_application_id           => p_application_id
167667          , p_ae_header_id             => l_ae_header_id 
167668 , p_source_11 => p_source_11
167669          , x_transaction_coa_id       => l_adr_transaction_coa_id
167670          , x_accounting_coa_id        => l_adr_accounting_coa_id
167671          , x_value_type_code          => l_adr_value_type_code
167672          , p_side                     => 'NA'
167673    );
167674 
167675    xla_ae_lines_pkg.set_ccid(
167676     p_code_combination_id          => l_ccid
167677   , p_value_type_code              => l_adr_value_type_code
167678   , p_transaction_coa_id           => l_adr_transaction_coa_id
167679   , p_accounting_coa_id            => l_adr_accounting_coa_id
167680   , p_adr_code                     => 'CST_DEFAULT'
167681   , p_adr_type_code                => 'S'
167682   , p_component_type               => l_component_type
167683   , p_component_code               => l_component_code
167684   , p_component_type_code          => l_component_type_code
167685   , p_component_appl_id            => l_component_appl_id
167686   , p_amb_context_code             => l_amb_context_code
167687   , p_side                         => 'NA'
167688   );
167689 
167690 
167691    --
167692    --
167693    END IF;
167694 
167695        --
167696        -- Update the line information that should be overwritten
167697        --
167698        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
167699                                          p_header_num   => 1);
167700        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
167701 
167702        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
167703 
167704        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
167705           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
167706        END IF;
167707 
167708       --
167709       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
167710       --
167711       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
167712           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
167713       ELSE
167714           ---------------------------------------------------------------------------------------------------
167715           -- 4262811a Switch Sign
167716           ---------------------------------------------------------------------------------------------------
167717           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
167718           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
167719                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
167720           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
167721                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
167722           -- 5132302
167723           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
167724                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
167725 
167726       END IF;
167727 
167728       -- 4955764
167729       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
167730       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
167731 
167732 
167733       XLA_AE_LINES_PKG.ValidateCurrentLine;
167734       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
167735 
167736       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
167737                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
167738                ,p_balance_type_code => l_balance_type_code);
167739 
167740    END IF;
167741 
167742    -----------------------------------------------------------------------------------------
167743    -- 4262811 Multiperiod Accounting
167744    -----------------------------------------------------------------------------------------
167745      -- No MPA option is assigned.
167746 
167747 
167748 END IF;
167749 END IF;
167750 --
167751 
167752 --
167753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167754    trace
167755       (p_msg      => 'END of AcctLineType_310'
167756       ,p_level    => C_LEVEL_PROCEDURE
167757       ,p_module   => l_log_module);
167758 END IF;
167759 --
167760 EXCEPTION
167761   WHEN xla_exceptions_pkg.application_exception THEN
167762       RAISE;
167763   WHEN OTHERS THEN
167764        xla_exceptions_pkg.raise_message
167765            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_310');
167766 END AcctLineType_310;
167767 --
167768 
167769 ---------------------------------------
167770 --
167771 -- PRIVATE FUNCTION
167772 --         AcctLineType_311
167773 --
167774 ---------------------------------------
167775 PROCEDURE AcctLineType_311 (
167776   p_application_id        IN NUMBER
167777  ,p_event_id              IN NUMBER
167778  ,p_calculate_acctd_flag  IN VARCHAR2
167779  ,p_calculate_g_l_flag    IN VARCHAR2
167780  ,p_actual_flag           IN OUT VARCHAR2
167781  ,p_balance_type_code     OUT VARCHAR2
167782  ,p_gain_or_loss_ref      OUT VARCHAR2
167783  
167784 --TRANSACTION_ID
167785  , p_source_1            IN NUMBER
167786 --Item Concatenated Segments
167787  , p_source_2            IN VARCHAR2
167788 --Transaction Quantity
167789  , p_source_3            IN NUMBER
167790 --Transaction Unit of Measure Code
167791  , p_source_4            IN VARCHAR2
167792 --Inventory Transaction Type Description
167793  , p_source_5            IN VARCHAR2
167794 --Resource/ Overhead Absorption Account
167795  , p_source_13            IN NUMBER
167796 --DISTRIBUTION_IDENTIFIER
167797  , p_source_84            IN NUMBER
167798 --Distribution Type
167799  , p_source_85            IN VARCHAR2
167800  , p_source_85_meaning    IN VARCHAR2
167801 --Entered Currency Code
167802  , p_source_88            IN VARCHAR2
167803 --Entered Amount
167804  , p_source_91            IN NUMBER
167805 --Currency Conversion Date
167806  , p_source_92            IN DATE
167807 --Currency Conversion Rate
167808  , p_source_93            IN NUMBER
167809 --Currency Conversion Type
167810  , p_source_94            IN VARCHAR2
167811 --Accounted Amount
167812  , p_source_95            IN NUMBER
167813 --Accounting Line Type
167814  , p_source_97            IN NUMBER
167815 )
167816 IS
167817 
167818 l_component_type              VARCHAR2(80);
167819 l_component_code              VARCHAR2(30);
167820 l_component_type_code         VARCHAR2(1);
167821 l_component_appl_id           INTEGER;
167822 l_amb_context_code            VARCHAR2(30);
167823 l_entity_code                 VARCHAR2(30);
167824 l_event_class_code            VARCHAR2(30);
167825 l_ae_header_id                NUMBER;
167826 l_event_type_code             VARCHAR2(30);
167827 l_line_definition_code        VARCHAR2(30);
167828 l_line_definition_owner_code  VARCHAR2(1);
167829 --
167830 -- adr variables
167831 l_segment                     VARCHAR2(30);
167832 l_ccid                        NUMBER;
167833 l_adr_transaction_coa_id      NUMBER;
167834 l_adr_accounting_coa_id       NUMBER;
167835 l_adr_flexfield_segment_code  VARCHAR2(30);
167836 l_adr_flex_value_set_id       NUMBER;
167837 l_adr_value_type_code         VARCHAR2(30);
167838 l_adr_value_combination_id    NUMBER;
167839 l_adr_value_segment_code      VARCHAR2(30);
167840 
167841 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
167842 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
167843 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
167844 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
167845 
167846 -- 4262811 Variables ------------------------------------------------------------------------------------------
167847 l_entered_amt_idx             NUMBER;
167848 l_accted_amt_idx              NUMBER;
167849 l_acc_rev_flag                VARCHAR2(1);
167850 l_accrual_line_num            NUMBER;
167851 l_tmp_amt                     NUMBER;
167852 l_acc_rev_natural_side_code   VARCHAR2(1);
167853 
167854 l_num_entries                 NUMBER;
167855 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
167856 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
167857 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
167858 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
167859 l_recog_line_1                NUMBER;
167860 l_recog_line_2                NUMBER;
167861 
167862 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
167863 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
167864 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
167865 
167866 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
167867 
167868 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
167869 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
167870 
167871 ---------------------------------------------------------------------------------------------------------------
167872 
167873 
167874 --
167875 -- bulk performance
167876 --
167877 l_balance_type_code           VARCHAR2(1);
167878 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
167879 l_log_module                  VARCHAR2(240);
167880 
167881 --
167882 -- Upgrade strategy
167883 --
167884 l_actual_upg_option           VARCHAR2(1);
167885 l_enc_upg_option           VARCHAR2(1);
167886 
167887 --
167888 BEGIN
167889 --
167890 IF g_log_enabled THEN
167891       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_311';
167892 END IF;
167893 --
167894 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167895 
167896       trace
167897          (p_msg      => 'BEGIN of AcctLineType_311'
167898          ,p_level    => C_LEVEL_PROCEDURE
167899          ,p_module   => l_log_module);
167900 
167901 END IF;
167902 --
167903 l_component_type             := 'AMB_JLT';
167904 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
167905 l_component_type_code        := 'S';
167906 l_component_appl_id          :=  707;
167907 l_amb_context_code           := 'DEFAULT';
167908 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
167909 l_event_class_code           := 'WIP_MTL';
167910 l_event_type_code            := 'WIP_ASSEMBLY_RETURN';
167911 l_line_definition_owner_code := 'S';
167912 l_line_definition_code       := 'PI_WIP_ASSEMBLY_RETURN';
167913 --
167914 l_balance_type_code          := 'A';
167915 l_segment                     := NULL;
167916 l_ccid                        := NULL;
167917 l_adr_transaction_coa_id      := NULL;
167918 l_adr_accounting_coa_id       := NULL;
167919 l_adr_flexfield_segment_code  := NULL;
167920 l_adr_flex_value_set_id       := NULL;
167921 l_adr_value_type_code         := NULL;
167922 l_adr_value_combination_id    := NULL;
167923 l_adr_value_segment_code      := NULL;
167924 
167925 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
167926 l_bflow_class_code           := '';    -- 4219869 Business Flow
167927 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
167928 l_budgetary_control_flag     := 'N';
167929 
167930 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
167931 l_bflow_applied_to_amt       := NULL; -- 5132302
167932 l_entered_amt_idx            := NULL;          -- 4262811
167933 l_accted_amt_idx             := NULL;          -- 4262811
167934 l_acc_rev_flag               := NULL;          -- 4262811
167935 l_accrual_line_num           := NULL;          -- 4262811
167936 l_tmp_amt                    := NULL;          -- 4262811
167937 --
167938  
167939 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
167940     l_balance_type_code <> 'B' THEN
167941 IF NVL(p_source_97,9E125) =  3
167942  THEN 
167943 
167944    --
167945    XLA_AE_LINES_PKG.SetNewLine;
167946 
167947    p_balance_type_code          := l_balance_type_code;
167948    -- set the flag so later we will know whether the gain loss line needs to be created
167949    
167950    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
167951      p_actual_flag :='A';
167952    END IF;
167953 
167954    --
167955    -- bulk performance
167956    --
167957    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
167958                                       p_header_num   => 0); -- 4262811
167959    --
167960    -- set accounting line options
167961    --
167962    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
167963            p_natural_side_code          => 'D'
167964          , p_gain_or_loss_flag          => 'N'
167965          , p_gl_transfer_mode_code      => 'S'
167966          , p_acct_entry_type_code       => 'A'
167967          , p_switch_side_flag           => 'Y'
167968          , p_merge_duplicate_code       => 'N'
167969          );
167970    --
167971    l_acc_rev_natural_side_code := 'C';  -- 4262811
167972    -- 
167973    --
167974    -- set accounting line type info
167975    --
167976    xla_ae_lines_pkg.SetAcctLineType
167977       (p_component_type             => l_component_type
167978       ,p_event_type_code            => l_event_type_code
167979       ,p_line_definition_owner_code => l_line_definition_owner_code
167980       ,p_line_definition_code       => l_line_definition_code
167981       ,p_accounting_line_code       => l_component_code
167982       ,p_accounting_line_type_code  => l_component_type_code
167983       ,p_accounting_line_appl_id    => l_component_appl_id
167984       ,p_amb_context_code           => l_amb_context_code
167985       ,p_entity_code                => l_entity_code
167986       ,p_event_class_code           => l_event_class_code);
167987    --
167988    -- set accounting class
167989    --
167990    xla_ae_lines_pkg.SetAcctClass(
167991            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
167992          , p_ae_header_id           => l_ae_header_id
167993          );
167994 
167995    --
167996    -- set rounding class
167997    --
167998    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
167999                       'MATERIAL_OVERHEAD_ABSORPTION';
168000 
168001    --
168002    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
168003    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
168004    --
168005    -- bulk performance
168006    --
168007    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
168008 
168009    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
168010       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
168011 
168012    -- 4955764
168013    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
168014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
168015 
168016    -- 4458381 Public Sector Enh
168017    
168018    --
168019    -- set accounting attributes for the line type
168020    --
168021    l_entered_amt_idx := 3;
168022    l_accted_amt_idx  := 8;
168023    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
168024    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
168025    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
168026    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
168027    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
168028    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
168029    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
168030    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
168031    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
168032    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
168033    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
168034    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
168035    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
168036    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
168037    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
168038    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
168039    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
168040 
168041    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
168042    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
168043 
168044    ---------------------------------------------------------------------------------------------------------------
168045    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
168046    ---------------------------------------------------------------------------------------------------------------
168047    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
168048 
168049    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
168050    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
168051 
168052    IF xla_accounting_cache_pkg.GetValueChar
168053          (p_source_code         => 'LEDGER_CATEGORY_CODE'
168054          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
168055    AND l_bflow_method_code = 'PRIOR_ENTRY'
168056 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
168057    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
168058          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
168059        )
168060    THEN
168061          xla_ae_lines_pkg.BflowUpgEntry
168062            (p_business_method_code    => l_bflow_method_code
168063            ,p_business_class_code     => l_bflow_class_code
168064            ,p_balance_type            => l_balance_type_code);
168065    ELSE
168066       NULL;
168067 -- No business flow processing for business flow method of NONE.
168068    END IF;
168069 
168070    --
168071    -- call analytical criteria
168072    --
168073    
168074    --
168075    -- call description
168076    --
168077    
168078 xla_ae_lines_pkg.SetLineDescription(
168079    p_ae_header_id => l_ae_header_id
168080   ,p_description  => Description_1 (
168081      p_application_id         => p_application_id
168082    , p_ae_header_id           => l_ae_header_id 
168083 , p_source_1 => p_source_1
168084 , p_source_2 => p_source_2
168085 , p_source_3 => p_source_3
168086 , p_source_4 => p_source_4
168087 , p_source_5 => p_source_5
168088    )
168089 );
168090 
168091 
168092    --
168093    -- call ADRs
168094    -- Bug 4922099
168095    --
168096    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
168097         (NVL(l_actual_upg_option, 'N') = 'O') OR
168098         (NVL(l_enc_upg_option, 'N') = 'O')
168099       )
168100    THEN
168101    NULL;
168102    --
168103    --
168104    
168105   l_ccid := AcctDerRule_8(
168106            p_application_id           => p_application_id
168107          , p_ae_header_id             => l_ae_header_id 
168108 , p_source_13 => p_source_13
168109          , x_transaction_coa_id       => l_adr_transaction_coa_id
168110          , x_accounting_coa_id        => l_adr_accounting_coa_id
168111          , x_value_type_code          => l_adr_value_type_code
168112          , p_side                     => 'NA'
168113    );
168114 
168115    xla_ae_lines_pkg.set_ccid(
168116     p_code_combination_id          => l_ccid
168117   , p_value_type_code              => l_adr_value_type_code
168118   , p_transaction_coa_id           => l_adr_transaction_coa_id
168119   , p_accounting_coa_id            => l_adr_accounting_coa_id
168120   , p_adr_code                     => 'PI_ABSORPTION'
168121   , p_adr_type_code                => 'S'
168122   , p_component_type               => l_component_type
168123   , p_component_code               => l_component_code
168124   , p_component_type_code          => l_component_type_code
168125   , p_component_appl_id            => l_component_appl_id
168126   , p_amb_context_code             => l_amb_context_code
168127   , p_side                         => 'NA'
168128   );
168129 
168130 
168131    --
168132    --
168133    END IF;
168134    --
168135    -- Bug 4922099
168136    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
168137           (NVL(l_enc_upg_option, 'N') = 'O')
168138         ) AND
168139         (l_bflow_method_code = 'PRIOR_ENTRY')
168140       )
168141    THEN
168142       IF
168143       --
168144       1 = 2
168145       --
168146       THEN
168147       xla_accounting_err_pkg.build_message
168148                                     (p_appli_s_name            => 'XLA'
168149                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
168150                                     ,p_token_1                 => 'LINE_NUMBER'
168151                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
168152                                     ,p_token_2                 => 'LINE_TYPE_NAME'
168153                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
168154                                                                              l_component_type
168155                                                                             ,l_component_code
168156                                                                             ,l_component_type_code
168157                                                                             ,l_component_appl_id
168158                                                                             ,l_amb_context_code
168159                                                                             ,l_entity_code
168160                                                                             ,l_event_class_code
168161                                                                            )
168162                                     ,p_token_3                 => 'OWNER'
168163                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
168164                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
168165                                                                           ,p_lookup_code    => l_component_type_code
168166                                                                          )
168167                                     ,p_token_4                 => 'PRODUCT_NAME'
168168                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
168169                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
168170                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
168171                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
168172                                     ,p_ae_header_id            =>  NULL
168173                                        );
168174 
168175         IF (C_LEVEL_ERROR>= g_log_level) THEN
168176                  trace
168177                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
168178                       ,p_level    => C_LEVEL_ERROR
168179                       ,p_module   => l_log_module);
168180         END IF;
168181       END IF;
168182    END IF;
168183    --
168184    --
168185    ------------------------------------------------------------------------------------------------
168186    -- 4219869 Business Flow
168187    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
168188    -- Prior Entry.  Currently, the following code is always generated.
168189    ------------------------------------------------------------------------------------------------
168190    XLA_AE_LINES_PKG.ValidateCurrentLine;
168191 
168192    ------------------------------------------------------------------------------------
168193    -- 4219869 Business Flow
168194    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
168195    ------------------------------------------------------------------------------------
168196    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
168197 
168198    ----------------------------------------------------------------------------------
168199    -- 4219869 Business Flow
168200    -- Update journal entry status -- Need to generate this within IF <condition>
168201    ----------------------------------------------------------------------------------
168202    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
168203          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
168204          ,p_balance_type_code => l_balance_type_code
168205          );
168206 
168207    -------------------------------------------------------------------------------------------
168208    -- 4262811 - Generate the Accrual Reversal lines
168209    -------------------------------------------------------------------------------------------
168210    BEGIN
168211       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
168212                               (g_array_event(p_event_id).array_value_num('header_index'));
168213       IF l_acc_rev_flag IS NULL THEN
168214          l_acc_rev_flag := 'N';
168215       END IF;
168216    EXCEPTION
168217       WHEN OTHERS THEN
168218          l_acc_rev_flag := 'N';
168219    END;
168220    --
168221    IF (l_acc_rev_flag = 'Y') THEN
168222 
168223        -- 4645092  ------------------------------------------------------------------------------
168224        -- To allow MPA report to determine if it should generate report process
168225        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
168226        ------------------------------------------------------------------------------------------
168227 
168228        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
168229        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
168230    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
168231    -- call ADRs
168232    -- Bug 4922099
168233    --
168234    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
168235         (NVL(l_actual_upg_option, 'N') = 'O') OR
168236         (NVL(l_enc_upg_option, 'N') = 'O')
168237       )
168238    THEN
168239    NULL;
168240    --
168241    --
168242    
168243   l_ccid := AcctDerRule_8(
168244            p_application_id           => p_application_id
168245          , p_ae_header_id             => l_ae_header_id 
168246 , p_source_13 => p_source_13
168247          , x_transaction_coa_id       => l_adr_transaction_coa_id
168248          , x_accounting_coa_id        => l_adr_accounting_coa_id
168249          , x_value_type_code          => l_adr_value_type_code
168250          , p_side                     => 'NA'
168251    );
168252 
168253    xla_ae_lines_pkg.set_ccid(
168254     p_code_combination_id          => l_ccid
168255   , p_value_type_code              => l_adr_value_type_code
168256   , p_transaction_coa_id           => l_adr_transaction_coa_id
168257   , p_accounting_coa_id            => l_adr_accounting_coa_id
168258   , p_adr_code                     => 'PI_ABSORPTION'
168259   , p_adr_type_code                => 'S'
168260   , p_component_type               => l_component_type
168261   , p_component_code               => l_component_code
168262   , p_component_type_code          => l_component_type_code
168263   , p_component_appl_id            => l_component_appl_id
168264   , p_amb_context_code             => l_amb_context_code
168265   , p_side                         => 'NA'
168266   );
168267 
168268 
168269    --
168270    --
168271    END IF;
168272 
168273        --
168274        -- Update the line information that should be overwritten
168275        --
168276        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
168277                                          p_header_num   => 1);
168278        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
168279 
168280        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
168281 
168282        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
168283           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
168284        END IF;
168285 
168286       --
168287       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
168288       --
168289       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
168290           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
168291       ELSE
168292           ---------------------------------------------------------------------------------------------------
168293           -- 4262811a Switch Sign
168294           ---------------------------------------------------------------------------------------------------
168295           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
168296           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
168297                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
168298           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
168299                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
168300           -- 5132302
168301           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
168302                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
168303 
168304       END IF;
168305 
168306       -- 4955764
168307       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
168308       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
168309 
168310 
168311       XLA_AE_LINES_PKG.ValidateCurrentLine;
168312       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
168313 
168314       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
168315                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
168316                ,p_balance_type_code => l_balance_type_code);
168317 
168318    END IF;
168319 
168320    -----------------------------------------------------------------------------------------
168321    -- 4262811 Multiperiod Accounting
168322    -----------------------------------------------------------------------------------------
168323      -- No MPA option is assigned.
168324 
168325 
168326 END IF;
168327 END IF;
168328 --
168329 
168330 --
168331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168332    trace
168333       (p_msg      => 'END of AcctLineType_311'
168334       ,p_level    => C_LEVEL_PROCEDURE
168335       ,p_module   => l_log_module);
168336 END IF;
168337 --
168338 EXCEPTION
168339   WHEN xla_exceptions_pkg.application_exception THEN
168340       RAISE;
168341   WHEN OTHERS THEN
168342        xla_exceptions_pkg.raise_message
168343            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_311');
168344 END AcctLineType_311;
168345 --
168346 
168347 ---------------------------------------
168348 --
168349 -- PRIVATE FUNCTION
168350 --         AcctLineType_312
168351 --
168352 ---------------------------------------
168353 PROCEDURE AcctLineType_312 (
168354   p_application_id        IN NUMBER
168355  ,p_event_id              IN NUMBER
168356  ,p_calculate_acctd_flag  IN VARCHAR2
168357  ,p_calculate_g_l_flag    IN VARCHAR2
168358  ,p_actual_flag           IN OUT VARCHAR2
168359  ,p_balance_type_code     OUT VARCHAR2
168360  ,p_gain_or_loss_ref      OUT VARCHAR2
168361  
168362 --TRANSACTION_ID
168363  , p_source_1            IN NUMBER
168364 --Item Concatenated Segments
168365  , p_source_2            IN VARCHAR2
168366 --Transaction Quantity
168367  , p_source_3            IN NUMBER
168368 --Transaction Unit of Measure Code
168369  , p_source_4            IN VARCHAR2
168370 --Inventory Transaction Type Description
168371  , p_source_5            IN VARCHAR2
168372 --Cost Management Default Account
168373  , p_source_11            IN NUMBER
168374 --DISTRIBUTION_IDENTIFIER
168375  , p_source_84            IN NUMBER
168376 --Distribution Type
168377  , p_source_85            IN VARCHAR2
168378  , p_source_85_meaning    IN VARCHAR2
168379 --Entered Currency Code
168380  , p_source_88            IN VARCHAR2
168381 --Entered Amount
168382  , p_source_91            IN NUMBER
168383 --Currency Conversion Date
168384  , p_source_92            IN DATE
168385 --Currency Conversion Rate
168386  , p_source_93            IN NUMBER
168387 --Currency Conversion Type
168388  , p_source_94            IN VARCHAR2
168389 --Accounted Amount
168390  , p_source_95            IN NUMBER
168391 --Accounting Line Type
168392  , p_source_97            IN NUMBER
168393 )
168394 IS
168395 
168396 l_component_type              VARCHAR2(80);
168397 l_component_code              VARCHAR2(30);
168398 l_component_type_code         VARCHAR2(1);
168399 l_component_appl_id           INTEGER;
168400 l_amb_context_code            VARCHAR2(30);
168401 l_entity_code                 VARCHAR2(30);
168402 l_event_class_code            VARCHAR2(30);
168403 l_ae_header_id                NUMBER;
168404 l_event_type_code             VARCHAR2(30);
168405 l_line_definition_code        VARCHAR2(30);
168406 l_line_definition_owner_code  VARCHAR2(1);
168407 --
168408 -- adr variables
168409 l_segment                     VARCHAR2(30);
168410 l_ccid                        NUMBER;
168411 l_adr_transaction_coa_id      NUMBER;
168412 l_adr_accounting_coa_id       NUMBER;
168413 l_adr_flexfield_segment_code  VARCHAR2(30);
168414 l_adr_flex_value_set_id       NUMBER;
168415 l_adr_value_type_code         VARCHAR2(30);
168416 l_adr_value_combination_id    NUMBER;
168417 l_adr_value_segment_code      VARCHAR2(30);
168418 
168419 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
168420 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
168421 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
168422 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
168423 
168424 -- 4262811 Variables ------------------------------------------------------------------------------------------
168425 l_entered_amt_idx             NUMBER;
168426 l_accted_amt_idx              NUMBER;
168427 l_acc_rev_flag                VARCHAR2(1);
168428 l_accrual_line_num            NUMBER;
168429 l_tmp_amt                     NUMBER;
168430 l_acc_rev_natural_side_code   VARCHAR2(1);
168431 
168432 l_num_entries                 NUMBER;
168433 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
168434 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
168435 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
168436 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
168437 l_recog_line_1                NUMBER;
168438 l_recog_line_2                NUMBER;
168439 
168440 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
168441 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
168442 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
168443 
168444 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
168445 
168446 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
168447 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
168448 
168449 ---------------------------------------------------------------------------------------------------------------
168450 
168451 
168452 --
168453 -- bulk performance
168454 --
168455 l_balance_type_code           VARCHAR2(1);
168456 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
168457 l_log_module                  VARCHAR2(240);
168458 
168459 --
168460 -- Upgrade strategy
168461 --
168462 l_actual_upg_option           VARCHAR2(1);
168463 l_enc_upg_option           VARCHAR2(1);
168464 
168465 --
168466 BEGIN
168467 --
168468 IF g_log_enabled THEN
168469       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_312';
168470 END IF;
168471 --
168472 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168473 
168474       trace
168475          (p_msg      => 'BEGIN of AcctLineType_312'
168476          ,p_level    => C_LEVEL_PROCEDURE
168477          ,p_module   => l_log_module);
168478 
168479 END IF;
168480 --
168481 l_component_type             := 'AMB_JLT';
168482 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
168483 l_component_type_code        := 'S';
168484 l_component_appl_id          :=  707;
168485 l_amb_context_code           := 'DEFAULT';
168486 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
168487 l_event_class_code           := 'WIP_MTL';
168488 l_event_type_code            := 'WIP_NEG_COMP_RETURN';
168489 l_line_definition_owner_code := 'S';
168490 l_line_definition_code       := 'PI_WIP_NEG_COMP_RETURN';
168491 --
168492 l_balance_type_code          := 'A';
168493 l_segment                     := NULL;
168494 l_ccid                        := NULL;
168495 l_adr_transaction_coa_id      := NULL;
168496 l_adr_accounting_coa_id       := NULL;
168497 l_adr_flexfield_segment_code  := NULL;
168498 l_adr_flex_value_set_id       := NULL;
168499 l_adr_value_type_code         := NULL;
168500 l_adr_value_combination_id    := NULL;
168501 l_adr_value_segment_code      := NULL;
168502 
168503 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
168504 l_bflow_class_code           := '';    -- 4219869 Business Flow
168505 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
168506 l_budgetary_control_flag     := 'N';
168507 
168508 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
168509 l_bflow_applied_to_amt       := NULL; -- 5132302
168510 l_entered_amt_idx            := NULL;          -- 4262811
168511 l_accted_amt_idx             := NULL;          -- 4262811
168512 l_acc_rev_flag               := NULL;          -- 4262811
168513 l_accrual_line_num           := NULL;          -- 4262811
168514 l_tmp_amt                    := NULL;          -- 4262811
168515 --
168516  
168517 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
168518     l_balance_type_code <> 'B' THEN
168519 IF NVL(p_source_97,9E125) =  3
168520  THEN 
168521 
168522    --
168523    XLA_AE_LINES_PKG.SetNewLine;
168524 
168525    p_balance_type_code          := l_balance_type_code;
168526    -- set the flag so later we will know whether the gain loss line needs to be created
168527    
168528    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
168529      p_actual_flag :='A';
168530    END IF;
168531 
168532    --
168533    -- bulk performance
168534    --
168535    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
168536                                       p_header_num   => 0); -- 4262811
168537    --
168538    -- set accounting line options
168539    --
168540    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
168541            p_natural_side_code          => 'D'
168542          , p_gain_or_loss_flag          => 'N'
168543          , p_gl_transfer_mode_code      => 'S'
168544          , p_acct_entry_type_code       => 'A'
168545          , p_switch_side_flag           => 'Y'
168546          , p_merge_duplicate_code       => 'N'
168547          );
168548    --
168549    l_acc_rev_natural_side_code := 'C';  -- 4262811
168550    -- 
168551    --
168552    -- set accounting line type info
168553    --
168554    xla_ae_lines_pkg.SetAcctLineType
168555       (p_component_type             => l_component_type
168556       ,p_event_type_code            => l_event_type_code
168557       ,p_line_definition_owner_code => l_line_definition_owner_code
168558       ,p_line_definition_code       => l_line_definition_code
168559       ,p_accounting_line_code       => l_component_code
168560       ,p_accounting_line_type_code  => l_component_type_code
168561       ,p_accounting_line_appl_id    => l_component_appl_id
168562       ,p_amb_context_code           => l_amb_context_code
168563       ,p_entity_code                => l_entity_code
168564       ,p_event_class_code           => l_event_class_code);
168565    --
168566    -- set accounting class
168567    --
168568    xla_ae_lines_pkg.SetAcctClass(
168569            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
168570          , p_ae_header_id           => l_ae_header_id
168571          );
168572 
168573    --
168574    -- set rounding class
168575    --
168576    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
168577                       'MATERIAL_OVERHEAD_ABSORPTION';
168578 
168579    --
168580    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
168581    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
168582    --
168583    -- bulk performance
168584    --
168585    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
168586 
168587    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
168588       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
168589 
168590    -- 4955764
168591    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
168592       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
168593 
168594    -- 4458381 Public Sector Enh
168595    
168596    --
168597    -- set accounting attributes for the line type
168598    --
168599    l_entered_amt_idx := 3;
168600    l_accted_amt_idx  := 8;
168601    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
168602    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
168603    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
168604    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
168605    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
168606    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
168607    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
168608    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
168609    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
168610    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
168611    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
168612    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
168613    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
168614    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
168615    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
168616    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
168617    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
168618 
168619    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
168620    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
168621 
168622    ---------------------------------------------------------------------------------------------------------------
168623    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
168624    ---------------------------------------------------------------------------------------------------------------
168625    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
168626 
168627    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
168628    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
168629 
168630    IF xla_accounting_cache_pkg.GetValueChar
168631          (p_source_code         => 'LEDGER_CATEGORY_CODE'
168632          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
168633    AND l_bflow_method_code = 'PRIOR_ENTRY'
168634 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
168635    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
168636          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
168637        )
168638    THEN
168639          xla_ae_lines_pkg.BflowUpgEntry
168640            (p_business_method_code    => l_bflow_method_code
168641            ,p_business_class_code     => l_bflow_class_code
168642            ,p_balance_type            => l_balance_type_code);
168643    ELSE
168644       NULL;
168645 -- No business flow processing for business flow method of NONE.
168646    END IF;
168647 
168648    --
168649    -- call analytical criteria
168650    --
168651    
168652    --
168653    -- call description
168654    --
168655    
168656 xla_ae_lines_pkg.SetLineDescription(
168657    p_ae_header_id => l_ae_header_id
168658   ,p_description  => Description_1 (
168659      p_application_id         => p_application_id
168660    , p_ae_header_id           => l_ae_header_id 
168661 , p_source_1 => p_source_1
168662 , p_source_2 => p_source_2
168663 , p_source_3 => p_source_3
168664 , p_source_4 => p_source_4
168665 , p_source_5 => p_source_5
168666    )
168667 );
168668 
168669 
168670    --
168671    -- call ADRs
168672    -- Bug 4922099
168673    --
168674    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
168675         (NVL(l_actual_upg_option, 'N') = 'O') OR
168676         (NVL(l_enc_upg_option, 'N') = 'O')
168677       )
168678    THEN
168679    NULL;
168680    --
168681    --
168682    
168683   l_ccid := AcctDerRule_6(
168684            p_application_id           => p_application_id
168685          , p_ae_header_id             => l_ae_header_id 
168686 , p_source_11 => p_source_11
168687          , x_transaction_coa_id       => l_adr_transaction_coa_id
168688          , x_accounting_coa_id        => l_adr_accounting_coa_id
168689          , x_value_type_code          => l_adr_value_type_code
168690          , p_side                     => 'NA'
168691    );
168692 
168693    xla_ae_lines_pkg.set_ccid(
168694     p_code_combination_id          => l_ccid
168695   , p_value_type_code              => l_adr_value_type_code
168696   , p_transaction_coa_id           => l_adr_transaction_coa_id
168697   , p_accounting_coa_id            => l_adr_accounting_coa_id
168698   , p_adr_code                     => 'CST_DEFAULT'
168699   , p_adr_type_code                => 'S'
168700   , p_component_type               => l_component_type
168701   , p_component_code               => l_component_code
168702   , p_component_type_code          => l_component_type_code
168703   , p_component_appl_id            => l_component_appl_id
168704   , p_amb_context_code             => l_amb_context_code
168705   , p_side                         => 'NA'
168706   );
168707 
168708 
168709    --
168710    --
168711    END IF;
168712    --
168713    -- Bug 4922099
168714    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
168715           (NVL(l_enc_upg_option, 'N') = 'O')
168716         ) AND
168717         (l_bflow_method_code = 'PRIOR_ENTRY')
168718       )
168719    THEN
168720       IF
168721       --
168722       1 = 2
168723       --
168724       THEN
168725       xla_accounting_err_pkg.build_message
168726                                     (p_appli_s_name            => 'XLA'
168727                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
168728                                     ,p_token_1                 => 'LINE_NUMBER'
168729                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
168730                                     ,p_token_2                 => 'LINE_TYPE_NAME'
168731                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
168732                                                                              l_component_type
168733                                                                             ,l_component_code
168734                                                                             ,l_component_type_code
168735                                                                             ,l_component_appl_id
168736                                                                             ,l_amb_context_code
168737                                                                             ,l_entity_code
168738                                                                             ,l_event_class_code
168739                                                                            )
168740                                     ,p_token_3                 => 'OWNER'
168741                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
168742                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
168743                                                                           ,p_lookup_code    => l_component_type_code
168744                                                                          )
168745                                     ,p_token_4                 => 'PRODUCT_NAME'
168746                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
168747                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
168748                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
168749                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
168750                                     ,p_ae_header_id            =>  NULL
168751                                        );
168752 
168753         IF (C_LEVEL_ERROR>= g_log_level) THEN
168754                  trace
168755                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
168756                       ,p_level    => C_LEVEL_ERROR
168757                       ,p_module   => l_log_module);
168758         END IF;
168759       END IF;
168760    END IF;
168761    --
168762    --
168763    ------------------------------------------------------------------------------------------------
168764    -- 4219869 Business Flow
168765    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
168766    -- Prior Entry.  Currently, the following code is always generated.
168767    ------------------------------------------------------------------------------------------------
168768    XLA_AE_LINES_PKG.ValidateCurrentLine;
168769 
168770    ------------------------------------------------------------------------------------
168771    -- 4219869 Business Flow
168772    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
168773    ------------------------------------------------------------------------------------
168774    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
168775 
168776    ----------------------------------------------------------------------------------
168777    -- 4219869 Business Flow
168778    -- Update journal entry status -- Need to generate this within IF <condition>
168779    ----------------------------------------------------------------------------------
168780    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
168781          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
168782          ,p_balance_type_code => l_balance_type_code
168783          );
168784 
168785    -------------------------------------------------------------------------------------------
168786    -- 4262811 - Generate the Accrual Reversal lines
168787    -------------------------------------------------------------------------------------------
168788    BEGIN
168789       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
168790                               (g_array_event(p_event_id).array_value_num('header_index'));
168791       IF l_acc_rev_flag IS NULL THEN
168792          l_acc_rev_flag := 'N';
168793       END IF;
168794    EXCEPTION
168795       WHEN OTHERS THEN
168796          l_acc_rev_flag := 'N';
168797    END;
168798    --
168799    IF (l_acc_rev_flag = 'Y') THEN
168800 
168801        -- 4645092  ------------------------------------------------------------------------------
168802        -- To allow MPA report to determine if it should generate report process
168803        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
168804        ------------------------------------------------------------------------------------------
168805 
168806        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
168807        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
168808    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
168809    -- call ADRs
168810    -- Bug 4922099
168811    --
168812    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
168813         (NVL(l_actual_upg_option, 'N') = 'O') OR
168814         (NVL(l_enc_upg_option, 'N') = 'O')
168815       )
168816    THEN
168817    NULL;
168818    --
168819    --
168820    
168821   l_ccid := AcctDerRule_6(
168822            p_application_id           => p_application_id
168823          , p_ae_header_id             => l_ae_header_id 
168824 , p_source_11 => p_source_11
168825          , x_transaction_coa_id       => l_adr_transaction_coa_id
168826          , x_accounting_coa_id        => l_adr_accounting_coa_id
168827          , x_value_type_code          => l_adr_value_type_code
168828          , p_side                     => 'NA'
168829    );
168830 
168831    xla_ae_lines_pkg.set_ccid(
168832     p_code_combination_id          => l_ccid
168833   , p_value_type_code              => l_adr_value_type_code
168834   , p_transaction_coa_id           => l_adr_transaction_coa_id
168835   , p_accounting_coa_id            => l_adr_accounting_coa_id
168836   , p_adr_code                     => 'CST_DEFAULT'
168837   , p_adr_type_code                => 'S'
168838   , p_component_type               => l_component_type
168839   , p_component_code               => l_component_code
168840   , p_component_type_code          => l_component_type_code
168841   , p_component_appl_id            => l_component_appl_id
168842   , p_amb_context_code             => l_amb_context_code
168843   , p_side                         => 'NA'
168844   );
168845 
168846 
168847    --
168848    --
168849    END IF;
168850 
168851        --
168852        -- Update the line information that should be overwritten
168853        --
168854        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
168855                                          p_header_num   => 1);
168856        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
168857 
168858        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
168859 
168860        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
168861           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
168862        END IF;
168863 
168864       --
168865       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
168866       --
168867       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
168868           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
168869       ELSE
168870           ---------------------------------------------------------------------------------------------------
168871           -- 4262811a Switch Sign
168872           ---------------------------------------------------------------------------------------------------
168873           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
168874           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
168875                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
168876           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
168877                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
168878           -- 5132302
168879           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
168880                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
168881 
168882       END IF;
168883 
168884       -- 4955764
168885       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
168886       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
168887 
168888 
168889       XLA_AE_LINES_PKG.ValidateCurrentLine;
168890       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
168891 
168892       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
168893                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
168894                ,p_balance_type_code => l_balance_type_code);
168895 
168896    END IF;
168897 
168898    -----------------------------------------------------------------------------------------
168899    -- 4262811 Multiperiod Accounting
168900    -----------------------------------------------------------------------------------------
168901      -- No MPA option is assigned.
168902 
168903 
168904 END IF;
168905 END IF;
168906 --
168907 
168908 --
168909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168910    trace
168911       (p_msg      => 'END of AcctLineType_312'
168912       ,p_level    => C_LEVEL_PROCEDURE
168913       ,p_module   => l_log_module);
168914 END IF;
168915 --
168916 EXCEPTION
168917   WHEN xla_exceptions_pkg.application_exception THEN
168918       RAISE;
168919   WHEN OTHERS THEN
168920        xla_exceptions_pkg.raise_message
168921            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_312');
168922 END AcctLineType_312;
168923 --
168924 
168925 ---------------------------------------
168926 --
168927 -- PRIVATE FUNCTION
168928 --         AcctLineType_313
168929 --
168930 ---------------------------------------
168931 PROCEDURE AcctLineType_313 (
168932   p_application_id        IN NUMBER
168933  ,p_event_id              IN NUMBER
168934  ,p_calculate_acctd_flag  IN VARCHAR2
168935  ,p_calculate_g_l_flag    IN VARCHAR2
168936  ,p_actual_flag           IN OUT VARCHAR2
168937  ,p_balance_type_code     OUT VARCHAR2
168938  ,p_gain_or_loss_ref      OUT VARCHAR2
168939  
168940 --TRANSACTION_ID
168941  , p_source_1            IN NUMBER
168942 --Item Concatenated Segments
168943  , p_source_2            IN VARCHAR2
168944 --Transaction Quantity
168945  , p_source_3            IN NUMBER
168946 --Transaction Unit of Measure Code
168947  , p_source_4            IN VARCHAR2
168948 --Inventory Transaction Type Description
168949  , p_source_5            IN VARCHAR2
168950 --Cost Management Default Account
168951  , p_source_11            IN NUMBER
168952 --Applied to Application ID
168953  , p_source_79            IN NUMBER
168954 --Applied to Distribution Link Type
168955  , p_source_80            IN VARCHAR2
168956 --Applied to Entity Code
168957  , p_source_81            IN VARCHAR2
168958 --Applied To Purchase Document Identifier
168959  , p_source_83            IN NUMBER
168960 --DISTRIBUTION_IDENTIFIER
168961  , p_source_84            IN NUMBER
168962 --Distribution Type
168963  , p_source_85            IN VARCHAR2
168964  , p_source_85_meaning    IN VARCHAR2
168965 --PO Budget Account
168966  , p_source_86            IN NUMBER
168967 --Encumbrance Reversal Amount Entered
168968  , p_source_87            IN NUMBER
168969 --Entered Currency Code
168970  , p_source_88            IN VARCHAR2
168971 --Transaction Encumbrance Reversal Amount
168972  , p_source_89            IN NUMBER
168973 --Entered Amount
168974  , p_source_91            IN NUMBER
168975 --Currency Conversion Date
168976  , p_source_92            IN DATE
168977 --Currency Conversion Rate
168978  , p_source_93            IN NUMBER
168979 --Currency Conversion Type
168980  , p_source_94            IN VARCHAR2
168981 --Accounted Amount
168982  , p_source_95            IN NUMBER
168983 --Purchasing Encumbrance Type Identifier
168984  , p_source_96            IN NUMBER
168985 --Accounting Line Type
168986  , p_source_97            IN NUMBER
168987 --Costing Encumbrance Upgrade Option
168988  , p_source_100            IN VARCHAR2
168989 --TXN_PO_DISTRIBUTION_ID
168990  , p_source_101            IN NUMBER
168991 )
168992 IS
168993 
168994 l_component_type              VARCHAR2(80);
168995 l_component_code              VARCHAR2(30);
168996 l_component_type_code         VARCHAR2(1);
168997 l_component_appl_id           INTEGER;
168998 l_amb_context_code            VARCHAR2(30);
168999 l_entity_code                 VARCHAR2(30);
169000 l_event_class_code            VARCHAR2(30);
169001 l_ae_header_id                NUMBER;
169002 l_event_type_code             VARCHAR2(30);
169003 l_line_definition_code        VARCHAR2(30);
169004 l_line_definition_owner_code  VARCHAR2(1);
169005 --
169006 -- adr variables
169007 l_segment                     VARCHAR2(30);
169008 l_ccid                        NUMBER;
169009 l_adr_transaction_coa_id      NUMBER;
169010 l_adr_accounting_coa_id       NUMBER;
169011 l_adr_flexfield_segment_code  VARCHAR2(30);
169012 l_adr_flex_value_set_id       NUMBER;
169013 l_adr_value_type_code         VARCHAR2(30);
169014 l_adr_value_combination_id    NUMBER;
169015 l_adr_value_segment_code      VARCHAR2(30);
169016 
169017 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
169018 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
169019 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
169020 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
169021 
169022 -- 4262811 Variables ------------------------------------------------------------------------------------------
169023 l_entered_amt_idx             NUMBER;
169024 l_accted_amt_idx              NUMBER;
169025 l_acc_rev_flag                VARCHAR2(1);
169026 l_accrual_line_num            NUMBER;
169027 l_tmp_amt                     NUMBER;
169028 l_acc_rev_natural_side_code   VARCHAR2(1);
169029 
169030 l_num_entries                 NUMBER;
169031 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
169032 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
169033 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
169034 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
169035 l_recog_line_1                NUMBER;
169036 l_recog_line_2                NUMBER;
169037 
169038 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
169039 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
169040 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
169041 
169042 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
169043 
169044 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
169045 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
169046 
169047 ---------------------------------------------------------------------------------------------------------------
169048 
169049 
169050 --
169051 -- bulk performance
169052 --
169053 l_balance_type_code           VARCHAR2(1);
169054 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
169055 l_log_module                  VARCHAR2(240);
169056 
169057 --
169058 -- Upgrade strategy
169059 --
169060 l_actual_upg_option           VARCHAR2(1);
169061 l_enc_upg_option           VARCHAR2(1);
169062 
169063 --
169064 BEGIN
169065 --
169066 IF g_log_enabled THEN
169067       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_313';
169068 END IF;
169069 --
169070 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169071 
169072       trace
169073          (p_msg      => 'BEGIN of AcctLineType_313'
169074          ,p_level    => C_LEVEL_PROCEDURE
169075          ,p_module   => l_log_module);
169076 
169077 END IF;
169078 --
169079 l_component_type             := 'AMB_JLT';
169080 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
169081 l_component_type_code        := 'S';
169082 l_component_appl_id          :=  707;
169083 l_amb_context_code           := 'DEFAULT';
169084 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
169085 l_event_class_code           := 'PURCHASE_ORDER';
169086 l_event_type_code            := 'LOG_PO_DEL_ADJ';
169087 l_line_definition_owner_code := 'S';
169088 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
169089 --
169090 l_balance_type_code          := 'A';
169091 l_segment                     := NULL;
169092 l_ccid                        := NULL;
169093 l_adr_transaction_coa_id      := NULL;
169094 l_adr_accounting_coa_id       := NULL;
169095 l_adr_flexfield_segment_code  := NULL;
169096 l_adr_flex_value_set_id       := NULL;
169097 l_adr_value_type_code         := NULL;
169098 l_adr_value_combination_id    := NULL;
169099 l_adr_value_segment_code      := NULL;
169100 
169101 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
169102 l_bflow_class_code           := '';    -- 4219869 Business Flow
169103 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
169104 l_budgetary_control_flag     := 'N';
169105 
169106 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
169107 l_bflow_applied_to_amt       := NULL; -- 5132302
169108 l_entered_amt_idx            := NULL;          -- 4262811
169109 l_accted_amt_idx             := NULL;          -- 4262811
169110 l_acc_rev_flag               := NULL;          -- 4262811
169111 l_accrual_line_num           := NULL;          -- 4262811
169112 l_tmp_amt                    := NULL;          -- 4262811
169113 --
169114  
169115 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
169116     l_balance_type_code <> 'B' THEN
169117 IF NVL(p_source_97,9E125) =  3
169118  THEN 
169119 
169120    --
169121    XLA_AE_LINES_PKG.SetNewLine;
169122 
169123    p_balance_type_code          := l_balance_type_code;
169124    -- set the flag so later we will know whether the gain loss line needs to be created
169125    
169126    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
169127      p_actual_flag :='A';
169128    END IF;
169129 
169130    --
169131    -- bulk performance
169132    --
169133    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
169134                                       p_header_num   => 0); -- 4262811
169135    --
169136    -- set accounting line options
169137    --
169138    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
169139            p_natural_side_code          => 'D'
169140          , p_gain_or_loss_flag          => 'N'
169141          , p_gl_transfer_mode_code      => 'S'
169142          , p_acct_entry_type_code       => 'A'
169143          , p_switch_side_flag           => 'Y'
169144          , p_merge_duplicate_code       => 'N'
169145          );
169146    --
169147    l_acc_rev_natural_side_code := 'C';  -- 4262811
169148    -- 
169149    --
169150    -- set accounting line type info
169151    --
169152    xla_ae_lines_pkg.SetAcctLineType
169153       (p_component_type             => l_component_type
169154       ,p_event_type_code            => l_event_type_code
169155       ,p_line_definition_owner_code => l_line_definition_owner_code
169156       ,p_line_definition_code       => l_line_definition_code
169157       ,p_accounting_line_code       => l_component_code
169158       ,p_accounting_line_type_code  => l_component_type_code
169159       ,p_accounting_line_appl_id    => l_component_appl_id
169160       ,p_amb_context_code           => l_amb_context_code
169161       ,p_entity_code                => l_entity_code
169162       ,p_event_class_code           => l_event_class_code);
169163    --
169164    -- set accounting class
169165    --
169166    xla_ae_lines_pkg.SetAcctClass(
169167            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
169168          , p_ae_header_id           => l_ae_header_id
169169          );
169170 
169171    --
169172    -- set rounding class
169173    --
169174    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
169175                       'MATERIAL_OVERHEAD_ABSORPTION';
169176 
169177    --
169178    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
169179    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
169180    --
169181    -- bulk performance
169182    --
169183    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
169184 
169185    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
169186       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
169187 
169188    -- 4955764
169189    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
169190       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
169191 
169192    -- 4458381 Public Sector Enh
169193    
169194    --
169195    -- set accounting attributes for the line type
169196    --
169197    l_entered_amt_idx := 17;
169198    l_accted_amt_idx  := 22;
169199    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
169200    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
169201    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
169202    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
169203    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
169204    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
169205    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
169206    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
169207    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
169208    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
169209    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
169210    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
169211    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
169212    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
169213    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
169214    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
169215    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
169216    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
169217    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
169218    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
169219    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
169220    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
169221    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
169222    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
169223    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
169224    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
169225    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
169226    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
169227    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
169228    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
169229    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
169230    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
169231    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
169232    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
169233    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
169234    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
169235    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
169236    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
169237    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
169238    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
169239    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
169240    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
169241    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
169242    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
169243    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
169244    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
169245    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
169246    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
169247    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
169248 
169249    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
169250    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
169251 
169252    ---------------------------------------------------------------------------------------------------------------
169253    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
169254    ---------------------------------------------------------------------------------------------------------------
169255    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
169256 
169257    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
169258    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
169259 
169260    IF xla_accounting_cache_pkg.GetValueChar
169261          (p_source_code         => 'LEDGER_CATEGORY_CODE'
169262          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
169263    AND l_bflow_method_code = 'PRIOR_ENTRY'
169264 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
169265    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
169266          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
169267        )
169268    THEN
169269          xla_ae_lines_pkg.BflowUpgEntry
169270            (p_business_method_code    => l_bflow_method_code
169271            ,p_business_class_code     => l_bflow_class_code
169272            ,p_balance_type            => l_balance_type_code);
169273    ELSE
169274       NULL;
169275 -- No business flow processing for business flow method of NONE.
169276    END IF;
169277 
169278    --
169279    -- call analytical criteria
169280    --
169281    
169282    --
169283    -- call description
169284    --
169285    
169286 xla_ae_lines_pkg.SetLineDescription(
169287    p_ae_header_id => l_ae_header_id
169288   ,p_description  => Description_1 (
169289      p_application_id         => p_application_id
169290    , p_ae_header_id           => l_ae_header_id 
169291 , p_source_1 => p_source_1
169292 , p_source_2 => p_source_2
169293 , p_source_3 => p_source_3
169294 , p_source_4 => p_source_4
169295 , p_source_5 => p_source_5
169296    )
169297 );
169298 
169299 
169300    --
169301    -- call ADRs
169302    -- Bug 4922099
169303    --
169304    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
169305         (NVL(l_actual_upg_option, 'N') = 'O') OR
169306         (NVL(l_enc_upg_option, 'N') = 'O')
169307       )
169308    THEN
169309    NULL;
169310    --
169311    --
169312    
169313   l_ccid := AcctDerRule_6(
169314            p_application_id           => p_application_id
169315          , p_ae_header_id             => l_ae_header_id 
169316 , p_source_11 => p_source_11
169317          , x_transaction_coa_id       => l_adr_transaction_coa_id
169318          , x_accounting_coa_id        => l_adr_accounting_coa_id
169319          , x_value_type_code          => l_adr_value_type_code
169320          , p_side                     => 'NA'
169321    );
169322 
169323    xla_ae_lines_pkg.set_ccid(
169324     p_code_combination_id          => l_ccid
169325   , p_value_type_code              => l_adr_value_type_code
169326   , p_transaction_coa_id           => l_adr_transaction_coa_id
169327   , p_accounting_coa_id            => l_adr_accounting_coa_id
169328   , p_adr_code                     => 'CST_DEFAULT'
169329   , p_adr_type_code                => 'S'
169330   , p_component_type               => l_component_type
169331   , p_component_code               => l_component_code
169332   , p_component_type_code          => l_component_type_code
169333   , p_component_appl_id            => l_component_appl_id
169334   , p_amb_context_code             => l_amb_context_code
169335   , p_side                         => 'NA'
169336   );
169337 
169338 
169339    --
169340    --
169341    END IF;
169342    --
169343    -- Bug 4922099
169344    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
169345           (NVL(l_enc_upg_option, 'N') = 'O')
169346         ) AND
169347         (l_bflow_method_code = 'PRIOR_ENTRY')
169348       )
169349    THEN
169350       IF
169351       --
169352       1 = 2
169353       --
169354       THEN
169355       xla_accounting_err_pkg.build_message
169356                                     (p_appli_s_name            => 'XLA'
169357                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
169358                                     ,p_token_1                 => 'LINE_NUMBER'
169359                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
169360                                     ,p_token_2                 => 'LINE_TYPE_NAME'
169361                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
169362                                                                              l_component_type
169363                                                                             ,l_component_code
169364                                                                             ,l_component_type_code
169365                                                                             ,l_component_appl_id
169366                                                                             ,l_amb_context_code
169367                                                                             ,l_entity_code
169368                                                                             ,l_event_class_code
169369                                                                            )
169370                                     ,p_token_3                 => 'OWNER'
169371                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
169372                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
169373                                                                           ,p_lookup_code    => l_component_type_code
169374                                                                          )
169375                                     ,p_token_4                 => 'PRODUCT_NAME'
169376                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
169377                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
169378                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
169379                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
169380                                     ,p_ae_header_id            =>  NULL
169381                                        );
169382 
169383         IF (C_LEVEL_ERROR>= g_log_level) THEN
169384                  trace
169385                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
169386                       ,p_level    => C_LEVEL_ERROR
169387                       ,p_module   => l_log_module);
169388         END IF;
169389       END IF;
169390    END IF;
169391    --
169392    --
169393    ------------------------------------------------------------------------------------------------
169394    -- 4219869 Business Flow
169395    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
169396    -- Prior Entry.  Currently, the following code is always generated.
169397    ------------------------------------------------------------------------------------------------
169398    XLA_AE_LINES_PKG.ValidateCurrentLine;
169399 
169400    ------------------------------------------------------------------------------------
169401    -- 4219869 Business Flow
169402    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
169403    ------------------------------------------------------------------------------------
169404    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
169405 
169406    ----------------------------------------------------------------------------------
169407    -- 4219869 Business Flow
169408    -- Update journal entry status -- Need to generate this within IF <condition>
169409    ----------------------------------------------------------------------------------
169410    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
169411          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
169412          ,p_balance_type_code => l_balance_type_code
169413          );
169414 
169415    -------------------------------------------------------------------------------------------
169416    -- 4262811 - Generate the Accrual Reversal lines
169417    -------------------------------------------------------------------------------------------
169418    BEGIN
169419       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
169420                               (g_array_event(p_event_id).array_value_num('header_index'));
169421       IF l_acc_rev_flag IS NULL THEN
169422          l_acc_rev_flag := 'N';
169423       END IF;
169424    EXCEPTION
169425       WHEN OTHERS THEN
169426          l_acc_rev_flag := 'N';
169427    END;
169428    --
169429    IF (l_acc_rev_flag = 'Y') THEN
169430 
169431        -- 4645092  ------------------------------------------------------------------------------
169432        -- To allow MPA report to determine if it should generate report process
169433        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
169434        ------------------------------------------------------------------------------------------
169435 
169436        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
169437        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
169438    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
169439    -- call ADRs
169440    -- Bug 4922099
169441    --
169442    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
169443         (NVL(l_actual_upg_option, 'N') = 'O') OR
169444         (NVL(l_enc_upg_option, 'N') = 'O')
169445       )
169446    THEN
169447    NULL;
169448    --
169449    --
169450    
169451   l_ccid := AcctDerRule_6(
169452            p_application_id           => p_application_id
169453          , p_ae_header_id             => l_ae_header_id 
169454 , p_source_11 => p_source_11
169455          , x_transaction_coa_id       => l_adr_transaction_coa_id
169456          , x_accounting_coa_id        => l_adr_accounting_coa_id
169457          , x_value_type_code          => l_adr_value_type_code
169458          , p_side                     => 'NA'
169459    );
169460 
169461    xla_ae_lines_pkg.set_ccid(
169462     p_code_combination_id          => l_ccid
169463   , p_value_type_code              => l_adr_value_type_code
169464   , p_transaction_coa_id           => l_adr_transaction_coa_id
169465   , p_accounting_coa_id            => l_adr_accounting_coa_id
169466   , p_adr_code                     => 'CST_DEFAULT'
169467   , p_adr_type_code                => 'S'
169468   , p_component_type               => l_component_type
169469   , p_component_code               => l_component_code
169470   , p_component_type_code          => l_component_type_code
169471   , p_component_appl_id            => l_component_appl_id
169472   , p_amb_context_code             => l_amb_context_code
169473   , p_side                         => 'NA'
169474   );
169475 
169476 
169477    --
169478    --
169479    END IF;
169480 
169481        --
169482        -- Update the line information that should be overwritten
169483        --
169484        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
169485                                          p_header_num   => 1);
169486        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
169487 
169488        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
169489 
169490        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
169491           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
169492        END IF;
169493 
169494       --
169495       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
169496       --
169497       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
169498           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
169499       ELSE
169500           ---------------------------------------------------------------------------------------------------
169501           -- 4262811a Switch Sign
169502           ---------------------------------------------------------------------------------------------------
169503           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
169504           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
169505                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
169506           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
169507                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
169508           -- 5132302
169509           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
169510                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
169511 
169512       END IF;
169513 
169514       -- 4955764
169515       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
169516       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
169517 
169518 
169519       XLA_AE_LINES_PKG.ValidateCurrentLine;
169520       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
169521 
169522       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
169523                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
169524                ,p_balance_type_code => l_balance_type_code);
169525 
169526    END IF;
169527 
169528    -----------------------------------------------------------------------------------------
169529    -- 4262811 Multiperiod Accounting
169530    -----------------------------------------------------------------------------------------
169531      -- No MPA option is assigned.
169532 
169533 
169534 END IF;
169535 END IF;
169536 --
169537 
169538 --
169539 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169540    trace
169541       (p_msg      => 'END of AcctLineType_313'
169542       ,p_level    => C_LEVEL_PROCEDURE
169543       ,p_module   => l_log_module);
169544 END IF;
169545 --
169546 EXCEPTION
169547   WHEN xla_exceptions_pkg.application_exception THEN
169548       RAISE;
169549   WHEN OTHERS THEN
169550        xla_exceptions_pkg.raise_message
169551            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_313');
169552 END AcctLineType_313;
169553 --
169554 
169555 ---------------------------------------
169556 --
169557 -- PRIVATE FUNCTION
169558 --         AcctLineType_314
169559 --
169560 ---------------------------------------
169561 PROCEDURE AcctLineType_314 (
169562   p_application_id        IN NUMBER
169563  ,p_event_id              IN NUMBER
169564  ,p_calculate_acctd_flag  IN VARCHAR2
169565  ,p_calculate_g_l_flag    IN VARCHAR2
169566  ,p_actual_flag           IN OUT VARCHAR2
169567  ,p_balance_type_code     OUT VARCHAR2
169568  ,p_gain_or_loss_ref      OUT VARCHAR2
169569  
169570 --TRANSACTION_ID
169571  , p_source_1            IN NUMBER
169572 --Item Concatenated Segments
169573  , p_source_2            IN VARCHAR2
169574 --Transaction Quantity
169575  , p_source_3            IN NUMBER
169576 --Transaction Unit of Measure Code
169577  , p_source_4            IN VARCHAR2
169578 --Inventory Transaction Type Description
169579  , p_source_5            IN VARCHAR2
169580 --Cost Management Default Account
169581  , p_source_11            IN NUMBER
169582 --Applied to Application ID
169583  , p_source_79            IN NUMBER
169584 --Applied to Distribution Link Type
169585  , p_source_80            IN VARCHAR2
169586 --Applied to Entity Code
169587  , p_source_81            IN VARCHAR2
169588 --Applied To Purchase Document Identifier
169589  , p_source_83            IN NUMBER
169590 --DISTRIBUTION_IDENTIFIER
169591  , p_source_84            IN NUMBER
169592 --Distribution Type
169593  , p_source_85            IN VARCHAR2
169594  , p_source_85_meaning    IN VARCHAR2
169595 --PO Budget Account
169596  , p_source_86            IN NUMBER
169597 --Encumbrance Reversal Amount Entered
169598  , p_source_87            IN NUMBER
169599 --Entered Currency Code
169600  , p_source_88            IN VARCHAR2
169601 --Transaction Encumbrance Reversal Amount
169602  , p_source_89            IN NUMBER
169603 --Entered Amount
169604  , p_source_91            IN NUMBER
169605 --Currency Conversion Date
169606  , p_source_92            IN DATE
169607 --Currency Conversion Rate
169608  , p_source_93            IN NUMBER
169609 --Currency Conversion Type
169610  , p_source_94            IN VARCHAR2
169611 --Accounted Amount
169612  , p_source_95            IN NUMBER
169613 --Purchasing Encumbrance Type Identifier
169614  , p_source_96            IN NUMBER
169615 --Accounting Line Type
169616  , p_source_97            IN NUMBER
169617 --Costing Encumbrance Upgrade Option
169618  , p_source_100            IN VARCHAR2
169619 --TXN_PO_DISTRIBUTION_ID
169620  , p_source_101            IN NUMBER
169621 )
169622 IS
169623 
169624 l_component_type              VARCHAR2(80);
169625 l_component_code              VARCHAR2(30);
169626 l_component_type_code         VARCHAR2(1);
169627 l_component_appl_id           INTEGER;
169628 l_amb_context_code            VARCHAR2(30);
169629 l_entity_code                 VARCHAR2(30);
169630 l_event_class_code            VARCHAR2(30);
169631 l_ae_header_id                NUMBER;
169632 l_event_type_code             VARCHAR2(30);
169633 l_line_definition_code        VARCHAR2(30);
169634 l_line_definition_owner_code  VARCHAR2(1);
169635 --
169636 -- adr variables
169637 l_segment                     VARCHAR2(30);
169638 l_ccid                        NUMBER;
169639 l_adr_transaction_coa_id      NUMBER;
169640 l_adr_accounting_coa_id       NUMBER;
169641 l_adr_flexfield_segment_code  VARCHAR2(30);
169642 l_adr_flex_value_set_id       NUMBER;
169643 l_adr_value_type_code         VARCHAR2(30);
169644 l_adr_value_combination_id    NUMBER;
169645 l_adr_value_segment_code      VARCHAR2(30);
169646 
169647 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
169648 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
169649 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
169650 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
169651 
169652 -- 4262811 Variables ------------------------------------------------------------------------------------------
169653 l_entered_amt_idx             NUMBER;
169654 l_accted_amt_idx              NUMBER;
169655 l_acc_rev_flag                VARCHAR2(1);
169656 l_accrual_line_num            NUMBER;
169657 l_tmp_amt                     NUMBER;
169658 l_acc_rev_natural_side_code   VARCHAR2(1);
169659 
169660 l_num_entries                 NUMBER;
169661 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
169662 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
169663 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
169664 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
169665 l_recog_line_1                NUMBER;
169666 l_recog_line_2                NUMBER;
169667 
169668 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
169669 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
169670 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
169671 
169672 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
169673 
169674 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
169675 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
169676 
169677 ---------------------------------------------------------------------------------------------------------------
169678 
169679 
169680 --
169681 -- bulk performance
169682 --
169683 l_balance_type_code           VARCHAR2(1);
169684 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
169685 l_log_module                  VARCHAR2(240);
169686 
169687 --
169688 -- Upgrade strategy
169689 --
169690 l_actual_upg_option           VARCHAR2(1);
169691 l_enc_upg_option           VARCHAR2(1);
169692 
169693 --
169694 BEGIN
169695 --
169696 IF g_log_enabled THEN
169697       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_314';
169698 END IF;
169699 --
169700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169701 
169702       trace
169703          (p_msg      => 'BEGIN of AcctLineType_314'
169704          ,p_level    => C_LEVEL_PROCEDURE
169705          ,p_module   => l_log_module);
169706 
169707 END IF;
169708 --
169709 l_component_type             := 'AMB_JLT';
169710 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
169711 l_component_type_code        := 'S';
169712 l_component_appl_id          :=  707;
169713 l_amb_context_code           := 'DEFAULT';
169714 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
169715 l_event_class_code           := 'PURCHASE_ORDER';
169716 l_event_type_code            := 'PO_DEL_ADJ';
169717 l_line_definition_owner_code := 'S';
169718 l_line_definition_code       := 'PI_PO_DEL_ADJ';
169719 --
169720 l_balance_type_code          := 'A';
169721 l_segment                     := NULL;
169722 l_ccid                        := NULL;
169723 l_adr_transaction_coa_id      := NULL;
169724 l_adr_accounting_coa_id       := NULL;
169725 l_adr_flexfield_segment_code  := NULL;
169726 l_adr_flex_value_set_id       := NULL;
169727 l_adr_value_type_code         := NULL;
169728 l_adr_value_combination_id    := NULL;
169729 l_adr_value_segment_code      := NULL;
169730 
169731 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
169732 l_bflow_class_code           := '';    -- 4219869 Business Flow
169733 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
169734 l_budgetary_control_flag     := 'N';
169735 
169736 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
169737 l_bflow_applied_to_amt       := NULL; -- 5132302
169738 l_entered_amt_idx            := NULL;          -- 4262811
169739 l_accted_amt_idx             := NULL;          -- 4262811
169740 l_acc_rev_flag               := NULL;          -- 4262811
169741 l_accrual_line_num           := NULL;          -- 4262811
169742 l_tmp_amt                    := NULL;          -- 4262811
169743 --
169744  
169745 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
169746     l_balance_type_code <> 'B' THEN
169747 IF NVL(p_source_97,9E125) =  3
169748  THEN 
169749 
169750    --
169751    XLA_AE_LINES_PKG.SetNewLine;
169752 
169753    p_balance_type_code          := l_balance_type_code;
169754    -- set the flag so later we will know whether the gain loss line needs to be created
169755    
169756    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
169757      p_actual_flag :='A';
169758    END IF;
169759 
169760    --
169761    -- bulk performance
169762    --
169763    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
169764                                       p_header_num   => 0); -- 4262811
169765    --
169766    -- set accounting line options
169767    --
169768    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
169769            p_natural_side_code          => 'D'
169770          , p_gain_or_loss_flag          => 'N'
169771          , p_gl_transfer_mode_code      => 'S'
169772          , p_acct_entry_type_code       => 'A'
169773          , p_switch_side_flag           => 'Y'
169774          , p_merge_duplicate_code       => 'N'
169775          );
169776    --
169777    l_acc_rev_natural_side_code := 'C';  -- 4262811
169778    -- 
169779    --
169780    -- set accounting line type info
169781    --
169782    xla_ae_lines_pkg.SetAcctLineType
169783       (p_component_type             => l_component_type
169784       ,p_event_type_code            => l_event_type_code
169785       ,p_line_definition_owner_code => l_line_definition_owner_code
169786       ,p_line_definition_code       => l_line_definition_code
169787       ,p_accounting_line_code       => l_component_code
169788       ,p_accounting_line_type_code  => l_component_type_code
169789       ,p_accounting_line_appl_id    => l_component_appl_id
169790       ,p_amb_context_code           => l_amb_context_code
169791       ,p_entity_code                => l_entity_code
169792       ,p_event_class_code           => l_event_class_code);
169793    --
169794    -- set accounting class
169795    --
169796    xla_ae_lines_pkg.SetAcctClass(
169797            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
169798          , p_ae_header_id           => l_ae_header_id
169799          );
169800 
169801    --
169802    -- set rounding class
169803    --
169804    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
169805                       'MATERIAL_OVERHEAD_ABSORPTION';
169806 
169807    --
169808    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
169809    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
169810    --
169811    -- bulk performance
169812    --
169813    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
169814 
169815    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
169816       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
169817 
169818    -- 4955764
169819    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
169820       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
169821 
169822    -- 4458381 Public Sector Enh
169823    
169824    --
169825    -- set accounting attributes for the line type
169826    --
169827    l_entered_amt_idx := 17;
169828    l_accted_amt_idx  := 22;
169829    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
169830    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
169831    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
169832    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
169833    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
169834    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
169835    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
169836    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
169837    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
169838    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
169839    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
169840    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
169841    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
169842    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
169843    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
169844    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
169845    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
169846    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
169847    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
169848    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
169849    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
169850    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
169851    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
169852    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
169853    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
169854    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
169855    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
169856    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
169857    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
169858    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
169859    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
169860    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
169861    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
169862    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
169863    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
169864    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
169865    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
169866    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
169867    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
169868    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
169869    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
169870    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
169871    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
169872    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
169873    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
169874    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
169875    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
169876    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
169877    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
169878 
169879    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
169880    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
169881 
169882    ---------------------------------------------------------------------------------------------------------------
169883    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
169884    ---------------------------------------------------------------------------------------------------------------
169885    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
169886 
169887    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
169888    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
169889 
169890    IF xla_accounting_cache_pkg.GetValueChar
169891          (p_source_code         => 'LEDGER_CATEGORY_CODE'
169892          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
169893    AND l_bflow_method_code = 'PRIOR_ENTRY'
169894 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
169895    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
169896          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
169897        )
169898    THEN
169899          xla_ae_lines_pkg.BflowUpgEntry
169900            (p_business_method_code    => l_bflow_method_code
169901            ,p_business_class_code     => l_bflow_class_code
169902            ,p_balance_type            => l_balance_type_code);
169903    ELSE
169904       NULL;
169905 -- No business flow processing for business flow method of NONE.
169906    END IF;
169907 
169908    --
169909    -- call analytical criteria
169910    --
169911    
169912    --
169913    -- call description
169914    --
169915    
169916 xla_ae_lines_pkg.SetLineDescription(
169917    p_ae_header_id => l_ae_header_id
169918   ,p_description  => Description_1 (
169919      p_application_id         => p_application_id
169920    , p_ae_header_id           => l_ae_header_id 
169921 , p_source_1 => p_source_1
169922 , p_source_2 => p_source_2
169923 , p_source_3 => p_source_3
169924 , p_source_4 => p_source_4
169925 , p_source_5 => p_source_5
169926    )
169927 );
169928 
169929 
169930    --
169931    -- call ADRs
169932    -- Bug 4922099
169933    --
169934    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
169935         (NVL(l_actual_upg_option, 'N') = 'O') OR
169936         (NVL(l_enc_upg_option, 'N') = 'O')
169937       )
169938    THEN
169939    NULL;
169940    --
169941    --
169942    
169943   l_ccid := AcctDerRule_6(
169944            p_application_id           => p_application_id
169945          , p_ae_header_id             => l_ae_header_id 
169946 , p_source_11 => p_source_11
169947          , x_transaction_coa_id       => l_adr_transaction_coa_id
169948          , x_accounting_coa_id        => l_adr_accounting_coa_id
169949          , x_value_type_code          => l_adr_value_type_code
169950          , p_side                     => 'NA'
169951    );
169952 
169953    xla_ae_lines_pkg.set_ccid(
169954     p_code_combination_id          => l_ccid
169955   , p_value_type_code              => l_adr_value_type_code
169956   , p_transaction_coa_id           => l_adr_transaction_coa_id
169957   , p_accounting_coa_id            => l_adr_accounting_coa_id
169958   , p_adr_code                     => 'CST_DEFAULT'
169959   , p_adr_type_code                => 'S'
169960   , p_component_type               => l_component_type
169961   , p_component_code               => l_component_code
169962   , p_component_type_code          => l_component_type_code
169963   , p_component_appl_id            => l_component_appl_id
169964   , p_amb_context_code             => l_amb_context_code
169965   , p_side                         => 'NA'
169966   );
169967 
169968 
169969    --
169970    --
169971    END IF;
169972    --
169973    -- Bug 4922099
169974    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
169975           (NVL(l_enc_upg_option, 'N') = 'O')
169976         ) AND
169977         (l_bflow_method_code = 'PRIOR_ENTRY')
169978       )
169979    THEN
169980       IF
169981       --
169982       1 = 2
169983       --
169984       THEN
169985       xla_accounting_err_pkg.build_message
169986                                     (p_appli_s_name            => 'XLA'
169987                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
169988                                     ,p_token_1                 => 'LINE_NUMBER'
169989                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
169990                                     ,p_token_2                 => 'LINE_TYPE_NAME'
169991                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
169992                                                                              l_component_type
169993                                                                             ,l_component_code
169994                                                                             ,l_component_type_code
169995                                                                             ,l_component_appl_id
169996                                                                             ,l_amb_context_code
169997                                                                             ,l_entity_code
169998                                                                             ,l_event_class_code
169999                                                                            )
170000                                     ,p_token_3                 => 'OWNER'
170001                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
170002                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
170003                                                                           ,p_lookup_code    => l_component_type_code
170004                                                                          )
170005                                     ,p_token_4                 => 'PRODUCT_NAME'
170006                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
170007                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
170008                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
170009                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
170010                                     ,p_ae_header_id            =>  NULL
170011                                        );
170012 
170013         IF (C_LEVEL_ERROR>= g_log_level) THEN
170014                  trace
170015                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
170016                       ,p_level    => C_LEVEL_ERROR
170017                       ,p_module   => l_log_module);
170018         END IF;
170019       END IF;
170020    END IF;
170021    --
170022    --
170023    ------------------------------------------------------------------------------------------------
170024    -- 4219869 Business Flow
170025    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
170026    -- Prior Entry.  Currently, the following code is always generated.
170027    ------------------------------------------------------------------------------------------------
170028    XLA_AE_LINES_PKG.ValidateCurrentLine;
170029 
170030    ------------------------------------------------------------------------------------
170031    -- 4219869 Business Flow
170032    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
170033    ------------------------------------------------------------------------------------
170034    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
170035 
170036    ----------------------------------------------------------------------------------
170037    -- 4219869 Business Flow
170038    -- Update journal entry status -- Need to generate this within IF <condition>
170039    ----------------------------------------------------------------------------------
170040    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
170041          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
170042          ,p_balance_type_code => l_balance_type_code
170043          );
170044 
170045    -------------------------------------------------------------------------------------------
170046    -- 4262811 - Generate the Accrual Reversal lines
170047    -------------------------------------------------------------------------------------------
170048    BEGIN
170049       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
170050                               (g_array_event(p_event_id).array_value_num('header_index'));
170051       IF l_acc_rev_flag IS NULL THEN
170052          l_acc_rev_flag := 'N';
170053       END IF;
170054    EXCEPTION
170055       WHEN OTHERS THEN
170056          l_acc_rev_flag := 'N';
170057    END;
170058    --
170059    IF (l_acc_rev_flag = 'Y') THEN
170060 
170061        -- 4645092  ------------------------------------------------------------------------------
170062        -- To allow MPA report to determine if it should generate report process
170063        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
170064        ------------------------------------------------------------------------------------------
170065 
170066        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
170067        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
170068    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
170069    -- call ADRs
170070    -- Bug 4922099
170071    --
170072    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
170073         (NVL(l_actual_upg_option, 'N') = 'O') OR
170074         (NVL(l_enc_upg_option, 'N') = 'O')
170075       )
170076    THEN
170077    NULL;
170078    --
170079    --
170080    
170081   l_ccid := AcctDerRule_6(
170082            p_application_id           => p_application_id
170083          , p_ae_header_id             => l_ae_header_id 
170084 , p_source_11 => p_source_11
170085          , x_transaction_coa_id       => l_adr_transaction_coa_id
170086          , x_accounting_coa_id        => l_adr_accounting_coa_id
170087          , x_value_type_code          => l_adr_value_type_code
170088          , p_side                     => 'NA'
170089    );
170090 
170091    xla_ae_lines_pkg.set_ccid(
170092     p_code_combination_id          => l_ccid
170093   , p_value_type_code              => l_adr_value_type_code
170094   , p_transaction_coa_id           => l_adr_transaction_coa_id
170095   , p_accounting_coa_id            => l_adr_accounting_coa_id
170096   , p_adr_code                     => 'CST_DEFAULT'
170097   , p_adr_type_code                => 'S'
170098   , p_component_type               => l_component_type
170099   , p_component_code               => l_component_code
170100   , p_component_type_code          => l_component_type_code
170101   , p_component_appl_id            => l_component_appl_id
170102   , p_amb_context_code             => l_amb_context_code
170103   , p_side                         => 'NA'
170104   );
170105 
170106 
170107    --
170108    --
170109    END IF;
170110 
170111        --
170112        -- Update the line information that should be overwritten
170113        --
170114        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
170115                                          p_header_num   => 1);
170116        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
170117 
170118        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
170119 
170120        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
170121           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
170122        END IF;
170123 
170124       --
170125       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
170126       --
170127       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
170128           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
170129       ELSE
170130           ---------------------------------------------------------------------------------------------------
170131           -- 4262811a Switch Sign
170132           ---------------------------------------------------------------------------------------------------
170133           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
170134           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
170135                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
170136           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
170137                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
170138           -- 5132302
170139           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
170140                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
170141 
170142       END IF;
170143 
170144       -- 4955764
170145       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
170146       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
170147 
170148 
170149       XLA_AE_LINES_PKG.ValidateCurrentLine;
170150       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
170151 
170152       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
170153                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
170154                ,p_balance_type_code => l_balance_type_code);
170155 
170156    END IF;
170157 
170158    -----------------------------------------------------------------------------------------
170159    -- 4262811 Multiperiod Accounting
170160    -----------------------------------------------------------------------------------------
170161      -- No MPA option is assigned.
170162 
170163 
170164 END IF;
170165 END IF;
170166 --
170167 
170168 --
170169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170170    trace
170171       (p_msg      => 'END of AcctLineType_314'
170172       ,p_level    => C_LEVEL_PROCEDURE
170173       ,p_module   => l_log_module);
170174 END IF;
170175 --
170176 EXCEPTION
170177   WHEN xla_exceptions_pkg.application_exception THEN
170178       RAISE;
170179   WHEN OTHERS THEN
170180        xla_exceptions_pkg.raise_message
170181            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_314');
170182 END AcctLineType_314;
170183 --
170184 
170185 ---------------------------------------
170186 --
170187 -- PRIVATE FUNCTION
170188 --         AcctLineType_315
170189 --
170190 ---------------------------------------
170191 PROCEDURE AcctLineType_315 (
170192   p_application_id        IN NUMBER
170193  ,p_event_id              IN NUMBER
170194  ,p_calculate_acctd_flag  IN VARCHAR2
170195  ,p_calculate_g_l_flag    IN VARCHAR2
170196  ,p_actual_flag           IN OUT VARCHAR2
170197  ,p_balance_type_code     OUT VARCHAR2
170198  ,p_gain_or_loss_ref      OUT VARCHAR2
170199  
170200 --TRANSACTION_ID
170201  , p_source_1            IN NUMBER
170202 --Item Concatenated Segments
170203  , p_source_2            IN VARCHAR2
170204 --Transaction Quantity
170205  , p_source_3            IN NUMBER
170206 --Transaction Unit of Measure Code
170207  , p_source_4            IN VARCHAR2
170208 --Inventory Transaction Type Description
170209  , p_source_5            IN VARCHAR2
170210 --Cost Management Default Account
170211  , p_source_11            IN NUMBER
170212 --Applied to Application ID
170213  , p_source_79            IN NUMBER
170214 --Applied to Distribution Link Type
170215  , p_source_80            IN VARCHAR2
170216 --Applied to Entity Code
170217  , p_source_81            IN VARCHAR2
170218 --Applied To Purchase Document Identifier
170219  , p_source_83            IN NUMBER
170220 --DISTRIBUTION_IDENTIFIER
170221  , p_source_84            IN NUMBER
170222 --Distribution Type
170223  , p_source_85            IN VARCHAR2
170224  , p_source_85_meaning    IN VARCHAR2
170225 --PO Budget Account
170226  , p_source_86            IN NUMBER
170227 --Encumbrance Reversal Amount Entered
170228  , p_source_87            IN NUMBER
170229 --Entered Currency Code
170230  , p_source_88            IN VARCHAR2
170231 --Transaction Encumbrance Reversal Amount
170232  , p_source_89            IN NUMBER
170233 --Entered Amount
170234  , p_source_91            IN NUMBER
170235 --Currency Conversion Date
170236  , p_source_92            IN DATE
170237 --Currency Conversion Rate
170238  , p_source_93            IN NUMBER
170239 --Currency Conversion Type
170240  , p_source_94            IN VARCHAR2
170241 --Accounted Amount
170242  , p_source_95            IN NUMBER
170243 --Purchasing Encumbrance Type Identifier
170244  , p_source_96            IN NUMBER
170245 --Accounting Line Type
170246  , p_source_97            IN NUMBER
170247 --Costing Encumbrance Upgrade Option
170248  , p_source_100            IN VARCHAR2
170249 --TXN_PO_DISTRIBUTION_ID
170250  , p_source_101            IN NUMBER
170251 )
170252 IS
170253 
170254 l_component_type              VARCHAR2(80);
170255 l_component_code              VARCHAR2(30);
170256 l_component_type_code         VARCHAR2(1);
170257 l_component_appl_id           INTEGER;
170258 l_amb_context_code            VARCHAR2(30);
170259 l_entity_code                 VARCHAR2(30);
170260 l_event_class_code            VARCHAR2(30);
170261 l_ae_header_id                NUMBER;
170262 l_event_type_code             VARCHAR2(30);
170263 l_line_definition_code        VARCHAR2(30);
170264 l_line_definition_owner_code  VARCHAR2(1);
170265 --
170266 -- adr variables
170267 l_segment                     VARCHAR2(30);
170268 l_ccid                        NUMBER;
170269 l_adr_transaction_coa_id      NUMBER;
170270 l_adr_accounting_coa_id       NUMBER;
170271 l_adr_flexfield_segment_code  VARCHAR2(30);
170272 l_adr_flex_value_set_id       NUMBER;
170273 l_adr_value_type_code         VARCHAR2(30);
170274 l_adr_value_combination_id    NUMBER;
170275 l_adr_value_segment_code      VARCHAR2(30);
170276 
170277 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
170278 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
170279 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
170280 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
170281 
170282 -- 4262811 Variables ------------------------------------------------------------------------------------------
170283 l_entered_amt_idx             NUMBER;
170284 l_accted_amt_idx              NUMBER;
170285 l_acc_rev_flag                VARCHAR2(1);
170286 l_accrual_line_num            NUMBER;
170287 l_tmp_amt                     NUMBER;
170288 l_acc_rev_natural_side_code   VARCHAR2(1);
170289 
170290 l_num_entries                 NUMBER;
170291 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
170292 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
170293 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
170294 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
170295 l_recog_line_1                NUMBER;
170296 l_recog_line_2                NUMBER;
170297 
170298 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
170299 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
170300 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
170301 
170302 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
170303 
170304 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
170305 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
170306 
170307 ---------------------------------------------------------------------------------------------------------------
170308 
170309 
170310 --
170311 -- bulk performance
170312 --
170313 l_balance_type_code           VARCHAR2(1);
170314 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
170315 l_log_module                  VARCHAR2(240);
170316 
170317 --
170318 -- Upgrade strategy
170319 --
170320 l_actual_upg_option           VARCHAR2(1);
170321 l_enc_upg_option           VARCHAR2(1);
170322 
170323 --
170324 BEGIN
170325 --
170326 IF g_log_enabled THEN
170327       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_315';
170328 END IF;
170329 --
170330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170331 
170332       trace
170333          (p_msg      => 'BEGIN of AcctLineType_315'
170334          ,p_level    => C_LEVEL_PROCEDURE
170335          ,p_module   => l_log_module);
170336 
170337 END IF;
170338 --
170339 l_component_type             := 'AMB_JLT';
170340 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
170341 l_component_type_code        := 'S';
170342 l_component_appl_id          :=  707;
170343 l_amb_context_code           := 'DEFAULT';
170344 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
170345 l_event_class_code           := 'PURCHASE_ORDER';
170346 l_event_type_code            := 'PO_DEL_INV';
170347 l_line_definition_owner_code := 'S';
170348 l_line_definition_code       := 'PI_PO_DEL_INV';
170349 --
170350 l_balance_type_code          := 'A';
170351 l_segment                     := NULL;
170352 l_ccid                        := NULL;
170353 l_adr_transaction_coa_id      := NULL;
170354 l_adr_accounting_coa_id       := NULL;
170355 l_adr_flexfield_segment_code  := NULL;
170356 l_adr_flex_value_set_id       := NULL;
170357 l_adr_value_type_code         := NULL;
170358 l_adr_value_combination_id    := NULL;
170359 l_adr_value_segment_code      := NULL;
170360 
170361 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
170362 l_bflow_class_code           := '';    -- 4219869 Business Flow
170363 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
170364 l_budgetary_control_flag     := 'N';
170365 
170366 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
170367 l_bflow_applied_to_amt       := NULL; -- 5132302
170368 l_entered_amt_idx            := NULL;          -- 4262811
170369 l_accted_amt_idx             := NULL;          -- 4262811
170370 l_acc_rev_flag               := NULL;          -- 4262811
170371 l_accrual_line_num           := NULL;          -- 4262811
170372 l_tmp_amt                    := NULL;          -- 4262811
170373 --
170374  
170375 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
170376     l_balance_type_code <> 'B' THEN
170377 IF NVL(p_source_97,9E125) =  3
170378  THEN 
170379 
170380    --
170381    XLA_AE_LINES_PKG.SetNewLine;
170382 
170383    p_balance_type_code          := l_balance_type_code;
170384    -- set the flag so later we will know whether the gain loss line needs to be created
170385    
170386    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
170387      p_actual_flag :='A';
170388    END IF;
170389 
170390    --
170391    -- bulk performance
170392    --
170393    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
170394                                       p_header_num   => 0); -- 4262811
170395    --
170396    -- set accounting line options
170397    --
170398    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
170399            p_natural_side_code          => 'D'
170400          , p_gain_or_loss_flag          => 'N'
170401          , p_gl_transfer_mode_code      => 'S'
170402          , p_acct_entry_type_code       => 'A'
170403          , p_switch_side_flag           => 'Y'
170404          , p_merge_duplicate_code       => 'N'
170405          );
170406    --
170407    l_acc_rev_natural_side_code := 'C';  -- 4262811
170408    -- 
170409    --
170410    -- set accounting line type info
170411    --
170412    xla_ae_lines_pkg.SetAcctLineType
170413       (p_component_type             => l_component_type
170414       ,p_event_type_code            => l_event_type_code
170415       ,p_line_definition_owner_code => l_line_definition_owner_code
170416       ,p_line_definition_code       => l_line_definition_code
170417       ,p_accounting_line_code       => l_component_code
170418       ,p_accounting_line_type_code  => l_component_type_code
170419       ,p_accounting_line_appl_id    => l_component_appl_id
170420       ,p_amb_context_code           => l_amb_context_code
170421       ,p_entity_code                => l_entity_code
170422       ,p_event_class_code           => l_event_class_code);
170423    --
170424    -- set accounting class
170425    --
170426    xla_ae_lines_pkg.SetAcctClass(
170427            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
170428          , p_ae_header_id           => l_ae_header_id
170429          );
170430 
170431    --
170432    -- set rounding class
170433    --
170434    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
170435                       'MATERIAL_OVERHEAD_ABSORPTION';
170436 
170437    --
170438    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
170439    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
170440    --
170441    -- bulk performance
170442    --
170443    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
170444 
170445    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
170446       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
170447 
170448    -- 4955764
170449    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
170450       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
170451 
170452    -- 4458381 Public Sector Enh
170453    
170454    --
170455    -- set accounting attributes for the line type
170456    --
170457    l_entered_amt_idx := 17;
170458    l_accted_amt_idx  := 22;
170459    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
170460    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
170461    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
170462    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
170463    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
170464    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
170465    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
170466    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
170467    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
170468    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
170469    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
170470    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
170471    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
170472    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
170473    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
170474    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
170475    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
170476    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
170477    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
170478    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
170479    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
170480    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
170481    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
170482    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
170483    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
170484    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
170485    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
170486    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
170487    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
170488    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
170489    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
170490    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
170491    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
170492    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
170493    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
170494    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
170495    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
170496    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
170497    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
170498    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
170499    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
170500    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
170501    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
170502    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
170503    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
170504    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
170505    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
170506    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
170507    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
170508 
170509    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
170510    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
170511 
170512    ---------------------------------------------------------------------------------------------------------------
170513    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
170514    ---------------------------------------------------------------------------------------------------------------
170515    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
170516 
170517    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
170518    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
170519 
170520    IF xla_accounting_cache_pkg.GetValueChar
170521          (p_source_code         => 'LEDGER_CATEGORY_CODE'
170522          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
170523    AND l_bflow_method_code = 'PRIOR_ENTRY'
170524 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
170525    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
170526          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
170527        )
170528    THEN
170529          xla_ae_lines_pkg.BflowUpgEntry
170530            (p_business_method_code    => l_bflow_method_code
170531            ,p_business_class_code     => l_bflow_class_code
170532            ,p_balance_type            => l_balance_type_code);
170533    ELSE
170534       NULL;
170535 -- No business flow processing for business flow method of NONE.
170536    END IF;
170537 
170538    --
170539    -- call analytical criteria
170540    --
170541    
170542    --
170543    -- call description
170544    --
170545    
170546 xla_ae_lines_pkg.SetLineDescription(
170547    p_ae_header_id => l_ae_header_id
170548   ,p_description  => Description_1 (
170549      p_application_id         => p_application_id
170550    , p_ae_header_id           => l_ae_header_id 
170551 , p_source_1 => p_source_1
170552 , p_source_2 => p_source_2
170553 , p_source_3 => p_source_3
170554 , p_source_4 => p_source_4
170555 , p_source_5 => p_source_5
170556    )
170557 );
170558 
170559 
170560    --
170561    -- call ADRs
170562    -- Bug 4922099
170563    --
170564    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
170565         (NVL(l_actual_upg_option, 'N') = 'O') OR
170566         (NVL(l_enc_upg_option, 'N') = 'O')
170567       )
170568    THEN
170569    NULL;
170570    --
170571    --
170572    
170573   l_ccid := AcctDerRule_6(
170574            p_application_id           => p_application_id
170575          , p_ae_header_id             => l_ae_header_id 
170576 , p_source_11 => p_source_11
170577          , x_transaction_coa_id       => l_adr_transaction_coa_id
170578          , x_accounting_coa_id        => l_adr_accounting_coa_id
170579          , x_value_type_code          => l_adr_value_type_code
170580          , p_side                     => 'NA'
170581    );
170582 
170583    xla_ae_lines_pkg.set_ccid(
170584     p_code_combination_id          => l_ccid
170585   , p_value_type_code              => l_adr_value_type_code
170586   , p_transaction_coa_id           => l_adr_transaction_coa_id
170587   , p_accounting_coa_id            => l_adr_accounting_coa_id
170588   , p_adr_code                     => 'CST_DEFAULT'
170589   , p_adr_type_code                => 'S'
170590   , p_component_type               => l_component_type
170591   , p_component_code               => l_component_code
170592   , p_component_type_code          => l_component_type_code
170593   , p_component_appl_id            => l_component_appl_id
170594   , p_amb_context_code             => l_amb_context_code
170595   , p_side                         => 'NA'
170596   );
170597 
170598 
170599    --
170600    --
170601    END IF;
170602    --
170603    -- Bug 4922099
170604    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
170605           (NVL(l_enc_upg_option, 'N') = 'O')
170606         ) AND
170607         (l_bflow_method_code = 'PRIOR_ENTRY')
170608       )
170609    THEN
170610       IF
170611       --
170612       1 = 2
170613       --
170614       THEN
170615       xla_accounting_err_pkg.build_message
170616                                     (p_appli_s_name            => 'XLA'
170617                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
170618                                     ,p_token_1                 => 'LINE_NUMBER'
170619                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
170620                                     ,p_token_2                 => 'LINE_TYPE_NAME'
170621                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
170622                                                                              l_component_type
170623                                                                             ,l_component_code
170624                                                                             ,l_component_type_code
170625                                                                             ,l_component_appl_id
170626                                                                             ,l_amb_context_code
170627                                                                             ,l_entity_code
170628                                                                             ,l_event_class_code
170629                                                                            )
170630                                     ,p_token_3                 => 'OWNER'
170631                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
170632                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
170633                                                                           ,p_lookup_code    => l_component_type_code
170634                                                                          )
170635                                     ,p_token_4                 => 'PRODUCT_NAME'
170636                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
170637                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
170638                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
170639                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
170640                                     ,p_ae_header_id            =>  NULL
170641                                        );
170642 
170643         IF (C_LEVEL_ERROR>= g_log_level) THEN
170644                  trace
170645                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
170646                       ,p_level    => C_LEVEL_ERROR
170647                       ,p_module   => l_log_module);
170648         END IF;
170649       END IF;
170650    END IF;
170651    --
170652    --
170653    ------------------------------------------------------------------------------------------------
170654    -- 4219869 Business Flow
170655    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
170656    -- Prior Entry.  Currently, the following code is always generated.
170657    ------------------------------------------------------------------------------------------------
170658    XLA_AE_LINES_PKG.ValidateCurrentLine;
170659 
170660    ------------------------------------------------------------------------------------
170661    -- 4219869 Business Flow
170662    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
170663    ------------------------------------------------------------------------------------
170664    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
170665 
170666    ----------------------------------------------------------------------------------
170667    -- 4219869 Business Flow
170668    -- Update journal entry status -- Need to generate this within IF <condition>
170669    ----------------------------------------------------------------------------------
170670    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
170671          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
170672          ,p_balance_type_code => l_balance_type_code
170673          );
170674 
170675    -------------------------------------------------------------------------------------------
170676    -- 4262811 - Generate the Accrual Reversal lines
170677    -------------------------------------------------------------------------------------------
170678    BEGIN
170679       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
170680                               (g_array_event(p_event_id).array_value_num('header_index'));
170681       IF l_acc_rev_flag IS NULL THEN
170682          l_acc_rev_flag := 'N';
170683       END IF;
170684    EXCEPTION
170685       WHEN OTHERS THEN
170686          l_acc_rev_flag := 'N';
170687    END;
170688    --
170689    IF (l_acc_rev_flag = 'Y') THEN
170690 
170691        -- 4645092  ------------------------------------------------------------------------------
170692        -- To allow MPA report to determine if it should generate report process
170693        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
170694        ------------------------------------------------------------------------------------------
170695 
170696        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
170697        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
170698    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
170699    -- call ADRs
170700    -- Bug 4922099
170701    --
170702    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
170703         (NVL(l_actual_upg_option, 'N') = 'O') OR
170704         (NVL(l_enc_upg_option, 'N') = 'O')
170705       )
170706    THEN
170707    NULL;
170708    --
170709    --
170710    
170711   l_ccid := AcctDerRule_6(
170712            p_application_id           => p_application_id
170713          , p_ae_header_id             => l_ae_header_id 
170714 , p_source_11 => p_source_11
170715          , x_transaction_coa_id       => l_adr_transaction_coa_id
170716          , x_accounting_coa_id        => l_adr_accounting_coa_id
170717          , x_value_type_code          => l_adr_value_type_code
170718          , p_side                     => 'NA'
170719    );
170720 
170721    xla_ae_lines_pkg.set_ccid(
170722     p_code_combination_id          => l_ccid
170723   , p_value_type_code              => l_adr_value_type_code
170724   , p_transaction_coa_id           => l_adr_transaction_coa_id
170725   , p_accounting_coa_id            => l_adr_accounting_coa_id
170726   , p_adr_code                     => 'CST_DEFAULT'
170727   , p_adr_type_code                => 'S'
170728   , p_component_type               => l_component_type
170729   , p_component_code               => l_component_code
170730   , p_component_type_code          => l_component_type_code
170731   , p_component_appl_id            => l_component_appl_id
170732   , p_amb_context_code             => l_amb_context_code
170733   , p_side                         => 'NA'
170734   );
170735 
170736 
170737    --
170738    --
170739    END IF;
170740 
170741        --
170742        -- Update the line information that should be overwritten
170743        --
170744        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
170745                                          p_header_num   => 1);
170746        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
170747 
170748        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
170749 
170750        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
170751           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
170752        END IF;
170753 
170754       --
170755       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
170756       --
170757       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
170758           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
170759       ELSE
170760           ---------------------------------------------------------------------------------------------------
170761           -- 4262811a Switch Sign
170762           ---------------------------------------------------------------------------------------------------
170763           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
170764           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
170765                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
170766           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
170767                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
170768           -- 5132302
170769           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
170770                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
170771 
170772       END IF;
170773 
170774       -- 4955764
170775       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
170776       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
170777 
170778 
170779       XLA_AE_LINES_PKG.ValidateCurrentLine;
170780       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
170781 
170782       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
170783                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
170784                ,p_balance_type_code => l_balance_type_code);
170785 
170786    END IF;
170787 
170788    -----------------------------------------------------------------------------------------
170789    -- 4262811 Multiperiod Accounting
170790    -----------------------------------------------------------------------------------------
170791      -- No MPA option is assigned.
170792 
170793 
170794 END IF;
170795 END IF;
170796 --
170797 
170798 --
170799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170800    trace
170801       (p_msg      => 'END of AcctLineType_315'
170802       ,p_level    => C_LEVEL_PROCEDURE
170803       ,p_module   => l_log_module);
170804 END IF;
170805 --
170806 EXCEPTION
170807   WHEN xla_exceptions_pkg.application_exception THEN
170808       RAISE;
170809   WHEN OTHERS THEN
170810        xla_exceptions_pkg.raise_message
170811            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_315');
170812 END AcctLineType_315;
170813 --
170814 
170815 ---------------------------------------
170816 --
170817 -- PRIVATE FUNCTION
170818 --         AcctLineType_316
170819 --
170820 ---------------------------------------
170821 PROCEDURE AcctLineType_316 (
170822   p_application_id        IN NUMBER
170823  ,p_event_id              IN NUMBER
170824  ,p_calculate_acctd_flag  IN VARCHAR2
170825  ,p_calculate_g_l_flag    IN VARCHAR2
170826  ,p_actual_flag           IN OUT VARCHAR2
170827  ,p_balance_type_code     OUT VARCHAR2
170828  ,p_gain_or_loss_ref      OUT VARCHAR2
170829  
170830 --TRANSACTION_ID
170831  , p_source_1            IN NUMBER
170832 --Item Concatenated Segments
170833  , p_source_2            IN VARCHAR2
170834 --Transaction Quantity
170835  , p_source_3            IN NUMBER
170836 --Transaction Unit of Measure Code
170837  , p_source_4            IN VARCHAR2
170838 --Inventory Transaction Type Description
170839  , p_source_5            IN VARCHAR2
170840 --Cost Management Default Account
170841  , p_source_11            IN NUMBER
170842 --DISTRIBUTION_IDENTIFIER
170843  , p_source_84            IN NUMBER
170844 --Distribution Type
170845  , p_source_85            IN VARCHAR2
170846  , p_source_85_meaning    IN VARCHAR2
170847 --Entered Currency Code
170848  , p_source_88            IN VARCHAR2
170849 --Entered Amount
170850  , p_source_91            IN NUMBER
170851 --Currency Conversion Date
170852  , p_source_92            IN DATE
170853 --Currency Conversion Rate
170854  , p_source_93            IN NUMBER
170855 --Currency Conversion Type
170856  , p_source_94            IN VARCHAR2
170857 --Accounted Amount
170858  , p_source_95            IN NUMBER
170859 --Accounting Line Type
170860  , p_source_97            IN NUMBER
170861 )
170862 IS
170863 
170864 l_component_type              VARCHAR2(80);
170865 l_component_code              VARCHAR2(30);
170866 l_component_type_code         VARCHAR2(1);
170867 l_component_appl_id           INTEGER;
170868 l_amb_context_code            VARCHAR2(30);
170869 l_entity_code                 VARCHAR2(30);
170870 l_event_class_code            VARCHAR2(30);
170871 l_ae_header_id                NUMBER;
170872 l_event_type_code             VARCHAR2(30);
170873 l_line_definition_code        VARCHAR2(30);
170874 l_line_definition_owner_code  VARCHAR2(1);
170875 --
170876 -- adr variables
170877 l_segment                     VARCHAR2(30);
170878 l_ccid                        NUMBER;
170879 l_adr_transaction_coa_id      NUMBER;
170880 l_adr_accounting_coa_id       NUMBER;
170881 l_adr_flexfield_segment_code  VARCHAR2(30);
170882 l_adr_flex_value_set_id       NUMBER;
170883 l_adr_value_type_code         VARCHAR2(30);
170884 l_adr_value_combination_id    NUMBER;
170885 l_adr_value_segment_code      VARCHAR2(30);
170886 
170887 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
170888 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
170889 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
170890 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
170891 
170892 -- 4262811 Variables ------------------------------------------------------------------------------------------
170893 l_entered_amt_idx             NUMBER;
170894 l_accted_amt_idx              NUMBER;
170895 l_acc_rev_flag                VARCHAR2(1);
170896 l_accrual_line_num            NUMBER;
170897 l_tmp_amt                     NUMBER;
170898 l_acc_rev_natural_side_code   VARCHAR2(1);
170899 
170900 l_num_entries                 NUMBER;
170901 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
170902 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
170903 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
170904 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
170905 l_recog_line_1                NUMBER;
170906 l_recog_line_2                NUMBER;
170907 
170908 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
170909 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
170910 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
170911 
170912 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
170913 
170914 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
170915 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
170916 
170917 ---------------------------------------------------------------------------------------------------------------
170918 
170919 
170920 --
170921 -- bulk performance
170922 --
170923 l_balance_type_code           VARCHAR2(1);
170924 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
170925 l_log_module                  VARCHAR2(240);
170926 
170927 --
170928 -- Upgrade strategy
170929 --
170930 l_actual_upg_option           VARCHAR2(1);
170931 l_enc_upg_option           VARCHAR2(1);
170932 
170933 --
170934 BEGIN
170935 --
170936 IF g_log_enabled THEN
170937       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_316';
170938 END IF;
170939 --
170940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170941 
170942       trace
170943          (p_msg      => 'BEGIN of AcctLineType_316'
170944          ,p_level    => C_LEVEL_PROCEDURE
170945          ,p_module   => l_log_module);
170946 
170947 END IF;
170948 --
170949 l_component_type             := 'AMB_JLT';
170950 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
170951 l_component_type_code        := 'S';
170952 l_component_appl_id          :=  707;
170953 l_amb_context_code           := 'DEFAULT';
170954 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
170955 l_event_class_code           := 'USER_DEFINE';
170956 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
170957 l_line_definition_owner_code := 'S';
170958 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
170959 --
170960 l_balance_type_code          := 'A';
170961 l_segment                     := NULL;
170962 l_ccid                        := NULL;
170963 l_adr_transaction_coa_id      := NULL;
170964 l_adr_accounting_coa_id       := NULL;
170965 l_adr_flexfield_segment_code  := NULL;
170966 l_adr_flex_value_set_id       := NULL;
170967 l_adr_value_type_code         := NULL;
170968 l_adr_value_combination_id    := NULL;
170969 l_adr_value_segment_code      := NULL;
170970 
170971 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
170972 l_bflow_class_code           := '';    -- 4219869 Business Flow
170973 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
170974 l_budgetary_control_flag     := 'N';
170975 
170976 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
170977 l_bflow_applied_to_amt       := NULL; -- 5132302
170978 l_entered_amt_idx            := NULL;          -- 4262811
170979 l_accted_amt_idx             := NULL;          -- 4262811
170980 l_acc_rev_flag               := NULL;          -- 4262811
170981 l_accrual_line_num           := NULL;          -- 4262811
170982 l_tmp_amt                    := NULL;          -- 4262811
170983 --
170984  
170985 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
170986     l_balance_type_code <> 'B' THEN
170987 IF NVL(p_source_97,9E125) =  3
170988  THEN 
170989 
170990    --
170991    XLA_AE_LINES_PKG.SetNewLine;
170992 
170993    p_balance_type_code          := l_balance_type_code;
170994    -- set the flag so later we will know whether the gain loss line needs to be created
170995    
170996    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
170997      p_actual_flag :='A';
170998    END IF;
170999 
171000    --
171001    -- bulk performance
171002    --
171003    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
171004                                       p_header_num   => 0); -- 4262811
171005    --
171006    -- set accounting line options
171007    --
171008    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
171009            p_natural_side_code          => 'D'
171010          , p_gain_or_loss_flag          => 'N'
171011          , p_gl_transfer_mode_code      => 'S'
171012          , p_acct_entry_type_code       => 'A'
171013          , p_switch_side_flag           => 'Y'
171014          , p_merge_duplicate_code       => 'N'
171015          );
171016    --
171017    l_acc_rev_natural_side_code := 'C';  -- 4262811
171018    -- 
171019    --
171020    -- set accounting line type info
171021    --
171022    xla_ae_lines_pkg.SetAcctLineType
171023       (p_component_type             => l_component_type
171024       ,p_event_type_code            => l_event_type_code
171025       ,p_line_definition_owner_code => l_line_definition_owner_code
171026       ,p_line_definition_code       => l_line_definition_code
171027       ,p_accounting_line_code       => l_component_code
171028       ,p_accounting_line_type_code  => l_component_type_code
171029       ,p_accounting_line_appl_id    => l_component_appl_id
171030       ,p_amb_context_code           => l_amb_context_code
171031       ,p_entity_code                => l_entity_code
171032       ,p_event_class_code           => l_event_class_code);
171033    --
171034    -- set accounting class
171035    --
171036    xla_ae_lines_pkg.SetAcctClass(
171037            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
171038          , p_ae_header_id           => l_ae_header_id
171039          );
171040 
171041    --
171042    -- set rounding class
171043    --
171044    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
171045                       'MATERIAL_OVERHEAD_ABSORPTION';
171046 
171047    --
171048    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
171049    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
171050    --
171051    -- bulk performance
171052    --
171053    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
171054 
171055    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
171056       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
171057 
171058    -- 4955764
171059    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
171060       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
171061 
171062    -- 4458381 Public Sector Enh
171063    
171064    --
171065    -- set accounting attributes for the line type
171066    --
171067    l_entered_amt_idx := 3;
171068    l_accted_amt_idx  := 8;
171069    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
171070    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
171071    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
171072    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
171073    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
171074    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
171075    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
171076    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
171077    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
171078    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
171079    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
171080    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
171081    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
171082    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
171083    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
171084    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
171085    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
171086 
171087    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
171088    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
171089 
171090    ---------------------------------------------------------------------------------------------------------------
171091    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
171092    ---------------------------------------------------------------------------------------------------------------
171093    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
171094 
171095    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
171096    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
171097 
171098    IF xla_accounting_cache_pkg.GetValueChar
171099          (p_source_code         => 'LEDGER_CATEGORY_CODE'
171100          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
171101    AND l_bflow_method_code = 'PRIOR_ENTRY'
171102 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
171103    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
171104          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
171105        )
171106    THEN
171107          xla_ae_lines_pkg.BflowUpgEntry
171108            (p_business_method_code    => l_bflow_method_code
171109            ,p_business_class_code     => l_bflow_class_code
171110            ,p_balance_type            => l_balance_type_code);
171111    ELSE
171112       NULL;
171113 -- No business flow processing for business flow method of NONE.
171114    END IF;
171115 
171116    --
171117    -- call analytical criteria
171118    --
171119    
171120    --
171121    -- call description
171122    --
171123    
171124 xla_ae_lines_pkg.SetLineDescription(
171125    p_ae_header_id => l_ae_header_id
171126   ,p_description  => Description_1 (
171127      p_application_id         => p_application_id
171128    , p_ae_header_id           => l_ae_header_id 
171129 , p_source_1 => p_source_1
171130 , p_source_2 => p_source_2
171131 , p_source_3 => p_source_3
171132 , p_source_4 => p_source_4
171133 , p_source_5 => p_source_5
171134    )
171135 );
171136 
171137 
171138    --
171139    -- call ADRs
171140    -- Bug 4922099
171141    --
171142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
171143         (NVL(l_actual_upg_option, 'N') = 'O') OR
171144         (NVL(l_enc_upg_option, 'N') = 'O')
171145       )
171146    THEN
171147    NULL;
171148    --
171149    --
171150    
171151   l_ccid := AcctDerRule_6(
171152            p_application_id           => p_application_id
171153          , p_ae_header_id             => l_ae_header_id 
171154 , p_source_11 => p_source_11
171155          , x_transaction_coa_id       => l_adr_transaction_coa_id
171156          , x_accounting_coa_id        => l_adr_accounting_coa_id
171157          , x_value_type_code          => l_adr_value_type_code
171158          , p_side                     => 'NA'
171159    );
171160 
171161    xla_ae_lines_pkg.set_ccid(
171162     p_code_combination_id          => l_ccid
171163   , p_value_type_code              => l_adr_value_type_code
171164   , p_transaction_coa_id           => l_adr_transaction_coa_id
171165   , p_accounting_coa_id            => l_adr_accounting_coa_id
171166   , p_adr_code                     => 'CST_DEFAULT'
171167   , p_adr_type_code                => 'S'
171168   , p_component_type               => l_component_type
171169   , p_component_code               => l_component_code
171170   , p_component_type_code          => l_component_type_code
171171   , p_component_appl_id            => l_component_appl_id
171172   , p_amb_context_code             => l_amb_context_code
171173   , p_side                         => 'NA'
171174   );
171175 
171176 
171177    --
171178    --
171179    END IF;
171180    --
171181    -- Bug 4922099
171182    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
171183           (NVL(l_enc_upg_option, 'N') = 'O')
171184         ) AND
171185         (l_bflow_method_code = 'PRIOR_ENTRY')
171186       )
171187    THEN
171188       IF
171189       --
171190       1 = 2
171191       --
171192       THEN
171193       xla_accounting_err_pkg.build_message
171194                                     (p_appli_s_name            => 'XLA'
171195                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
171196                                     ,p_token_1                 => 'LINE_NUMBER'
171197                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
171198                                     ,p_token_2                 => 'LINE_TYPE_NAME'
171199                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
171200                                                                              l_component_type
171201                                                                             ,l_component_code
171202                                                                             ,l_component_type_code
171203                                                                             ,l_component_appl_id
171204                                                                             ,l_amb_context_code
171205                                                                             ,l_entity_code
171206                                                                             ,l_event_class_code
171207                                                                            )
171208                                     ,p_token_3                 => 'OWNER'
171209                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
171210                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
171211                                                                           ,p_lookup_code    => l_component_type_code
171212                                                                          )
171213                                     ,p_token_4                 => 'PRODUCT_NAME'
171214                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
171215                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
171216                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
171217                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
171218                                     ,p_ae_header_id            =>  NULL
171219                                        );
171220 
171221         IF (C_LEVEL_ERROR>= g_log_level) THEN
171222                  trace
171223                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
171224                       ,p_level    => C_LEVEL_ERROR
171225                       ,p_module   => l_log_module);
171226         END IF;
171227       END IF;
171228    END IF;
171229    --
171230    --
171231    ------------------------------------------------------------------------------------------------
171232    -- 4219869 Business Flow
171233    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
171234    -- Prior Entry.  Currently, the following code is always generated.
171235    ------------------------------------------------------------------------------------------------
171236    XLA_AE_LINES_PKG.ValidateCurrentLine;
171237 
171238    ------------------------------------------------------------------------------------
171239    -- 4219869 Business Flow
171240    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
171241    ------------------------------------------------------------------------------------
171242    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
171243 
171244    ----------------------------------------------------------------------------------
171245    -- 4219869 Business Flow
171246    -- Update journal entry status -- Need to generate this within IF <condition>
171247    ----------------------------------------------------------------------------------
171248    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
171249          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
171250          ,p_balance_type_code => l_balance_type_code
171251          );
171252 
171253    -------------------------------------------------------------------------------------------
171254    -- 4262811 - Generate the Accrual Reversal lines
171255    -------------------------------------------------------------------------------------------
171256    BEGIN
171257       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
171258                               (g_array_event(p_event_id).array_value_num('header_index'));
171259       IF l_acc_rev_flag IS NULL THEN
171260          l_acc_rev_flag := 'N';
171261       END IF;
171262    EXCEPTION
171263       WHEN OTHERS THEN
171264          l_acc_rev_flag := 'N';
171265    END;
171266    --
171267    IF (l_acc_rev_flag = 'Y') THEN
171268 
171269        -- 4645092  ------------------------------------------------------------------------------
171270        -- To allow MPA report to determine if it should generate report process
171271        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
171272        ------------------------------------------------------------------------------------------
171273 
171274        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
171275        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
171276    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
171277    -- call ADRs
171278    -- Bug 4922099
171279    --
171280    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
171281         (NVL(l_actual_upg_option, 'N') = 'O') OR
171282         (NVL(l_enc_upg_option, 'N') = 'O')
171283       )
171284    THEN
171285    NULL;
171286    --
171287    --
171288    
171289   l_ccid := AcctDerRule_6(
171290            p_application_id           => p_application_id
171291          , p_ae_header_id             => l_ae_header_id 
171292 , p_source_11 => p_source_11
171293          , x_transaction_coa_id       => l_adr_transaction_coa_id
171294          , x_accounting_coa_id        => l_adr_accounting_coa_id
171295          , x_value_type_code          => l_adr_value_type_code
171296          , p_side                     => 'NA'
171297    );
171298 
171299    xla_ae_lines_pkg.set_ccid(
171300     p_code_combination_id          => l_ccid
171301   , p_value_type_code              => l_adr_value_type_code
171302   , p_transaction_coa_id           => l_adr_transaction_coa_id
171303   , p_accounting_coa_id            => l_adr_accounting_coa_id
171304   , p_adr_code                     => 'CST_DEFAULT'
171305   , p_adr_type_code                => 'S'
171306   , p_component_type               => l_component_type
171307   , p_component_code               => l_component_code
171308   , p_component_type_code          => l_component_type_code
171309   , p_component_appl_id            => l_component_appl_id
171310   , p_amb_context_code             => l_amb_context_code
171311   , p_side                         => 'NA'
171312   );
171313 
171314 
171315    --
171316    --
171317    END IF;
171318 
171319        --
171320        -- Update the line information that should be overwritten
171321        --
171322        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
171323                                          p_header_num   => 1);
171324        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
171325 
171326        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
171327 
171328        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
171329           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
171330        END IF;
171331 
171332       --
171333       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
171334       --
171335       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
171336           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
171337       ELSE
171338           ---------------------------------------------------------------------------------------------------
171339           -- 4262811a Switch Sign
171340           ---------------------------------------------------------------------------------------------------
171341           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
171342           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
171343                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
171344           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
171345                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
171346           -- 5132302
171347           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
171348                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
171349 
171350       END IF;
171351 
171352       -- 4955764
171353       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
171354       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
171355 
171356 
171357       XLA_AE_LINES_PKG.ValidateCurrentLine;
171358       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
171359 
171360       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
171361                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
171362                ,p_balance_type_code => l_balance_type_code);
171363 
171364    END IF;
171365 
171366    -----------------------------------------------------------------------------------------
171367    -- 4262811 Multiperiod Accounting
171368    -----------------------------------------------------------------------------------------
171369      -- No MPA option is assigned.
171370 
171371 
171372 END IF;
171373 END IF;
171374 --
171375 
171376 --
171377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171378    trace
171379       (p_msg      => 'END of AcctLineType_316'
171380       ,p_level    => C_LEVEL_PROCEDURE
171381       ,p_module   => l_log_module);
171382 END IF;
171383 --
171384 EXCEPTION
171385   WHEN xla_exceptions_pkg.application_exception THEN
171386       RAISE;
171387   WHEN OTHERS THEN
171388        xla_exceptions_pkg.raise_message
171389            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_316');
171390 END AcctLineType_316;
171391 --
171392 
171393 ---------------------------------------
171394 --
171395 -- PRIVATE FUNCTION
171396 --         AcctLineType_317
171397 --
171398 ---------------------------------------
171399 PROCEDURE AcctLineType_317 (
171400   p_application_id        IN NUMBER
171401  ,p_event_id              IN NUMBER
171402  ,p_calculate_acctd_flag  IN VARCHAR2
171403  ,p_calculate_g_l_flag    IN VARCHAR2
171404  ,p_actual_flag           IN OUT VARCHAR2
171405  ,p_balance_type_code     OUT VARCHAR2
171406  ,p_gain_or_loss_ref      OUT VARCHAR2
171407  
171408 --TRANSACTION_ID
171409  , p_source_1            IN NUMBER
171410 --Item Concatenated Segments
171411  , p_source_2            IN VARCHAR2
171412 --Transaction Quantity
171413  , p_source_3            IN NUMBER
171414 --Transaction Unit of Measure Code
171415  , p_source_4            IN VARCHAR2
171416 --Inventory Transaction Type Description
171417  , p_source_5            IN VARCHAR2
171418 --Cost Management Default Account
171419  , p_source_11            IN NUMBER
171420 --Applied to Application ID
171421  , p_source_79            IN NUMBER
171422 --Applied to Distribution Link Type
171423  , p_source_80            IN VARCHAR2
171424 --Applied to Entity Code
171425  , p_source_81            IN VARCHAR2
171426 --Applied To Purchase Document Identifier
171427  , p_source_83            IN NUMBER
171428 --DISTRIBUTION_IDENTIFIER
171429  , p_source_84            IN NUMBER
171430 --Distribution Type
171431  , p_source_85            IN VARCHAR2
171432  , p_source_85_meaning    IN VARCHAR2
171433 --PO Budget Account
171434  , p_source_86            IN NUMBER
171435 --Encumbrance Reversal Amount Entered
171436  , p_source_87            IN NUMBER
171437 --Entered Currency Code
171438  , p_source_88            IN VARCHAR2
171439 --Transaction Encumbrance Reversal Amount
171440  , p_source_89            IN NUMBER
171441 --Entered Amount
171442  , p_source_91            IN NUMBER
171443 --Currency Conversion Date
171444  , p_source_92            IN DATE
171445 --Currency Conversion Rate
171446  , p_source_93            IN NUMBER
171447 --Currency Conversion Type
171448  , p_source_94            IN VARCHAR2
171449 --Accounted Amount
171450  , p_source_95            IN NUMBER
171451 --Purchasing Encumbrance Type Identifier
171452  , p_source_96            IN NUMBER
171453 --Accounting Line Type
171454  , p_source_97            IN NUMBER
171455 --Costing Encumbrance Upgrade Option
171456  , p_source_100            IN VARCHAR2
171457 --TXN_PO_DISTRIBUTION_ID
171458  , p_source_101            IN NUMBER
171459 )
171460 IS
171461 
171462 l_component_type              VARCHAR2(80);
171463 l_component_code              VARCHAR2(30);
171464 l_component_type_code         VARCHAR2(1);
171465 l_component_appl_id           INTEGER;
171466 l_amb_context_code            VARCHAR2(30);
171467 l_entity_code                 VARCHAR2(30);
171468 l_event_class_code            VARCHAR2(30);
171469 l_ae_header_id                NUMBER;
171470 l_event_type_code             VARCHAR2(30);
171471 l_line_definition_code        VARCHAR2(30);
171472 l_line_definition_owner_code  VARCHAR2(1);
171473 --
171474 -- adr variables
171475 l_segment                     VARCHAR2(30);
171476 l_ccid                        NUMBER;
171477 l_adr_transaction_coa_id      NUMBER;
171478 l_adr_accounting_coa_id       NUMBER;
171479 l_adr_flexfield_segment_code  VARCHAR2(30);
171480 l_adr_flex_value_set_id       NUMBER;
171481 l_adr_value_type_code         VARCHAR2(30);
171482 l_adr_value_combination_id    NUMBER;
171483 l_adr_value_segment_code      VARCHAR2(30);
171484 
171485 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
171486 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
171487 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
171488 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
171489 
171490 -- 4262811 Variables ------------------------------------------------------------------------------------------
171491 l_entered_amt_idx             NUMBER;
171492 l_accted_amt_idx              NUMBER;
171493 l_acc_rev_flag                VARCHAR2(1);
171494 l_accrual_line_num            NUMBER;
171495 l_tmp_amt                     NUMBER;
171496 l_acc_rev_natural_side_code   VARCHAR2(1);
171497 
171498 l_num_entries                 NUMBER;
171499 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
171500 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
171501 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
171502 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
171503 l_recog_line_1                NUMBER;
171504 l_recog_line_2                NUMBER;
171505 
171506 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
171507 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
171508 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
171509 
171510 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
171511 
171512 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
171513 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
171514 
171515 ---------------------------------------------------------------------------------------------------------------
171516 
171517 
171518 --
171519 -- bulk performance
171520 --
171521 l_balance_type_code           VARCHAR2(1);
171522 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
171523 l_log_module                  VARCHAR2(240);
171524 
171525 --
171526 -- Upgrade strategy
171527 --
171528 l_actual_upg_option           VARCHAR2(1);
171529 l_enc_upg_option           VARCHAR2(1);
171530 
171531 --
171532 BEGIN
171533 --
171534 IF g_log_enabled THEN
171535       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_317';
171536 END IF;
171537 --
171538 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171539 
171540       trace
171541          (p_msg      => 'BEGIN of AcctLineType_317'
171542          ,p_level    => C_LEVEL_PROCEDURE
171543          ,p_module   => l_log_module);
171544 
171545 END IF;
171546 --
171547 l_component_type             := 'AMB_JLT';
171548 l_component_code             := 'MATERIAL_OVERHEAD_ABSORPTION';
171549 l_component_type_code        := 'S';
171550 l_component_appl_id          :=  707;
171551 l_amb_context_code           := 'DEFAULT';
171552 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
171553 l_event_class_code           := 'PURCHASE_ORDER';
171554 l_event_type_code            := 'RET_RI_INV';
171555 l_line_definition_owner_code := 'S';
171556 l_line_definition_code       := 'PI_RET_RI_INV';
171557 --
171558 l_balance_type_code          := 'A';
171559 l_segment                     := NULL;
171560 l_ccid                        := NULL;
171561 l_adr_transaction_coa_id      := NULL;
171562 l_adr_accounting_coa_id       := NULL;
171563 l_adr_flexfield_segment_code  := NULL;
171564 l_adr_flex_value_set_id       := NULL;
171565 l_adr_value_type_code         := NULL;
171566 l_adr_value_combination_id    := NULL;
171567 l_adr_value_segment_code      := NULL;
171568 
171569 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
171570 l_bflow_class_code           := '';    -- 4219869 Business Flow
171571 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
171572 l_budgetary_control_flag     := 'N';
171573 
171574 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
171575 l_bflow_applied_to_amt       := NULL; -- 5132302
171576 l_entered_amt_idx            := NULL;          -- 4262811
171577 l_accted_amt_idx             := NULL;          -- 4262811
171578 l_acc_rev_flag               := NULL;          -- 4262811
171579 l_accrual_line_num           := NULL;          -- 4262811
171580 l_tmp_amt                    := NULL;          -- 4262811
171581 --
171582  
171583 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
171584     l_balance_type_code <> 'B' THEN
171585 IF NVL(p_source_97,9E125) =  3
171586  THEN 
171587 
171588    --
171589    XLA_AE_LINES_PKG.SetNewLine;
171590 
171591    p_balance_type_code          := l_balance_type_code;
171592    -- set the flag so later we will know whether the gain loss line needs to be created
171593    
171594    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
171595      p_actual_flag :='A';
171596    END IF;
171597 
171598    --
171599    -- bulk performance
171600    --
171601    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
171602                                       p_header_num   => 0); -- 4262811
171603    --
171604    -- set accounting line options
171605    --
171606    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
171607            p_natural_side_code          => 'D'
171608          , p_gain_or_loss_flag          => 'N'
171609          , p_gl_transfer_mode_code      => 'S'
171610          , p_acct_entry_type_code       => 'A'
171611          , p_switch_side_flag           => 'Y'
171612          , p_merge_duplicate_code       => 'N'
171613          );
171614    --
171615    l_acc_rev_natural_side_code := 'C';  -- 4262811
171616    -- 
171617    --
171618    -- set accounting line type info
171619    --
171620    xla_ae_lines_pkg.SetAcctLineType
171621       (p_component_type             => l_component_type
171622       ,p_event_type_code            => l_event_type_code
171623       ,p_line_definition_owner_code => l_line_definition_owner_code
171624       ,p_line_definition_code       => l_line_definition_code
171625       ,p_accounting_line_code       => l_component_code
171626       ,p_accounting_line_type_code  => l_component_type_code
171627       ,p_accounting_line_appl_id    => l_component_appl_id
171628       ,p_amb_context_code           => l_amb_context_code
171629       ,p_entity_code                => l_entity_code
171630       ,p_event_class_code           => l_event_class_code);
171631    --
171632    -- set accounting class
171633    --
171634    xla_ae_lines_pkg.SetAcctClass(
171635            p_accounting_class_code  => 'MATERIAL_OVERHEAD_ABSORPTION'
171636          , p_ae_header_id           => l_ae_header_id
171637          );
171638 
171639    --
171640    -- set rounding class
171641    --
171642    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
171643                       'MATERIAL_OVERHEAD_ABSORPTION';
171644 
171645    --
171646    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
171647    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
171648    --
171649    -- bulk performance
171650    --
171651    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
171652 
171653    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
171654       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
171655 
171656    -- 4955764
171657    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
171658       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
171659 
171660    -- 4458381 Public Sector Enh
171661    
171662    --
171663    -- set accounting attributes for the line type
171664    --
171665    l_entered_amt_idx := 17;
171666    l_accted_amt_idx  := 22;
171667    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
171668    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
171669    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
171670    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
171671    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
171672    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
171673    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
171674    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
171675    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
171676    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
171677    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
171678    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
171679    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
171680    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
171681    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
171682    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
171683    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
171684    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
171685    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
171686    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
171687    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
171688    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
171689    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
171690    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
171691    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
171692    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
171693    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
171694    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
171695    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
171696    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
171697    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
171698    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
171699    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
171700    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
171701    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
171702    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
171703    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
171704    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
171705    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
171706    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
171707    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
171708    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
171709    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
171710    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
171711    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
171712    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
171713    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
171714    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
171715    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
171716 
171717    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
171718    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
171719 
171720    ---------------------------------------------------------------------------------------------------------------
171721    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
171722    ---------------------------------------------------------------------------------------------------------------
171723    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
171724 
171725    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
171726    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
171727 
171728    IF xla_accounting_cache_pkg.GetValueChar
171729          (p_source_code         => 'LEDGER_CATEGORY_CODE'
171730          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
171731    AND l_bflow_method_code = 'PRIOR_ENTRY'
171732 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
171733    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
171734          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
171735        )
171736    THEN
171737          xla_ae_lines_pkg.BflowUpgEntry
171738            (p_business_method_code    => l_bflow_method_code
171739            ,p_business_class_code     => l_bflow_class_code
171740            ,p_balance_type            => l_balance_type_code);
171741    ELSE
171742       NULL;
171743 -- No business flow processing for business flow method of NONE.
171744    END IF;
171745 
171746    --
171747    -- call analytical criteria
171748    --
171749    
171750    --
171751    -- call description
171752    --
171753    
171754 xla_ae_lines_pkg.SetLineDescription(
171755    p_ae_header_id => l_ae_header_id
171756   ,p_description  => Description_1 (
171757      p_application_id         => p_application_id
171758    , p_ae_header_id           => l_ae_header_id 
171759 , p_source_1 => p_source_1
171760 , p_source_2 => p_source_2
171761 , p_source_3 => p_source_3
171762 , p_source_4 => p_source_4
171763 , p_source_5 => p_source_5
171764    )
171765 );
171766 
171767 
171768    --
171769    -- call ADRs
171770    -- Bug 4922099
171771    --
171772    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
171773         (NVL(l_actual_upg_option, 'N') = 'O') OR
171774         (NVL(l_enc_upg_option, 'N') = 'O')
171775       )
171776    THEN
171777    NULL;
171778    --
171779    --
171780    
171781   l_ccid := AcctDerRule_6(
171782            p_application_id           => p_application_id
171783          , p_ae_header_id             => l_ae_header_id 
171784 , p_source_11 => p_source_11
171785          , x_transaction_coa_id       => l_adr_transaction_coa_id
171786          , x_accounting_coa_id        => l_adr_accounting_coa_id
171787          , x_value_type_code          => l_adr_value_type_code
171788          , p_side                     => 'NA'
171789    );
171790 
171791    xla_ae_lines_pkg.set_ccid(
171792     p_code_combination_id          => l_ccid
171793   , p_value_type_code              => l_adr_value_type_code
171794   , p_transaction_coa_id           => l_adr_transaction_coa_id
171795   , p_accounting_coa_id            => l_adr_accounting_coa_id
171796   , p_adr_code                     => 'CST_DEFAULT'
171797   , p_adr_type_code                => 'S'
171798   , p_component_type               => l_component_type
171799   , p_component_code               => l_component_code
171800   , p_component_type_code          => l_component_type_code
171801   , p_component_appl_id            => l_component_appl_id
171802   , p_amb_context_code             => l_amb_context_code
171803   , p_side                         => 'NA'
171804   );
171805 
171806 
171807    --
171808    --
171809    END IF;
171810    --
171811    -- Bug 4922099
171812    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
171813           (NVL(l_enc_upg_option, 'N') = 'O')
171814         ) AND
171815         (l_bflow_method_code = 'PRIOR_ENTRY')
171816       )
171817    THEN
171818       IF
171819       --
171820       1 = 2
171821       --
171822       THEN
171823       xla_accounting_err_pkg.build_message
171824                                     (p_appli_s_name            => 'XLA'
171825                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
171826                                     ,p_token_1                 => 'LINE_NUMBER'
171827                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
171828                                     ,p_token_2                 => 'LINE_TYPE_NAME'
171829                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
171830                                                                              l_component_type
171831                                                                             ,l_component_code
171832                                                                             ,l_component_type_code
171833                                                                             ,l_component_appl_id
171834                                                                             ,l_amb_context_code
171835                                                                             ,l_entity_code
171836                                                                             ,l_event_class_code
171837                                                                            )
171838                                     ,p_token_3                 => 'OWNER'
171839                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
171840                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
171841                                                                           ,p_lookup_code    => l_component_type_code
171842                                                                          )
171843                                     ,p_token_4                 => 'PRODUCT_NAME'
171844                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
171845                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
171846                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
171847                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
171848                                     ,p_ae_header_id            =>  NULL
171849                                        );
171850 
171851         IF (C_LEVEL_ERROR>= g_log_level) THEN
171852                  trace
171853                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
171854                       ,p_level    => C_LEVEL_ERROR
171855                       ,p_module   => l_log_module);
171856         END IF;
171857       END IF;
171858    END IF;
171859    --
171860    --
171861    ------------------------------------------------------------------------------------------------
171862    -- 4219869 Business Flow
171863    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
171864    -- Prior Entry.  Currently, the following code is always generated.
171865    ------------------------------------------------------------------------------------------------
171866    XLA_AE_LINES_PKG.ValidateCurrentLine;
171867 
171868    ------------------------------------------------------------------------------------
171869    -- 4219869 Business Flow
171870    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
171871    ------------------------------------------------------------------------------------
171872    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
171873 
171874    ----------------------------------------------------------------------------------
171875    -- 4219869 Business Flow
171876    -- Update journal entry status -- Need to generate this within IF <condition>
171877    ----------------------------------------------------------------------------------
171878    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
171879          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
171880          ,p_balance_type_code => l_balance_type_code
171881          );
171882 
171883    -------------------------------------------------------------------------------------------
171884    -- 4262811 - Generate the Accrual Reversal lines
171885    -------------------------------------------------------------------------------------------
171886    BEGIN
171887       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
171888                               (g_array_event(p_event_id).array_value_num('header_index'));
171889       IF l_acc_rev_flag IS NULL THEN
171890          l_acc_rev_flag := 'N';
171891       END IF;
171892    EXCEPTION
171893       WHEN OTHERS THEN
171894          l_acc_rev_flag := 'N';
171895    END;
171896    --
171897    IF (l_acc_rev_flag = 'Y') THEN
171898 
171899        -- 4645092  ------------------------------------------------------------------------------
171900        -- To allow MPA report to determine if it should generate report process
171901        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
171902        ------------------------------------------------------------------------------------------
171903 
171904        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
171905        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
171906    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
171907    -- call ADRs
171908    -- Bug 4922099
171909    --
171910    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
171911         (NVL(l_actual_upg_option, 'N') = 'O') OR
171912         (NVL(l_enc_upg_option, 'N') = 'O')
171913       )
171914    THEN
171915    NULL;
171916    --
171917    --
171918    
171919   l_ccid := AcctDerRule_6(
171920            p_application_id           => p_application_id
171921          , p_ae_header_id             => l_ae_header_id 
171922 , p_source_11 => p_source_11
171923          , x_transaction_coa_id       => l_adr_transaction_coa_id
171924          , x_accounting_coa_id        => l_adr_accounting_coa_id
171925          , x_value_type_code          => l_adr_value_type_code
171926          , p_side                     => 'NA'
171927    );
171928 
171929    xla_ae_lines_pkg.set_ccid(
171930     p_code_combination_id          => l_ccid
171931   , p_value_type_code              => l_adr_value_type_code
171932   , p_transaction_coa_id           => l_adr_transaction_coa_id
171933   , p_accounting_coa_id            => l_adr_accounting_coa_id
171934   , p_adr_code                     => 'CST_DEFAULT'
171935   , p_adr_type_code                => 'S'
171936   , p_component_type               => l_component_type
171937   , p_component_code               => l_component_code
171938   , p_component_type_code          => l_component_type_code
171939   , p_component_appl_id            => l_component_appl_id
171940   , p_amb_context_code             => l_amb_context_code
171941   , p_side                         => 'NA'
171942   );
171943 
171944 
171945    --
171946    --
171947    END IF;
171948 
171949        --
171950        -- Update the line information that should be overwritten
171951        --
171952        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
171953                                          p_header_num   => 1);
171954        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
171955 
171956        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
171957 
171958        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
171959           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
171960        END IF;
171961 
171962       --
171963       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
171964       --
171965       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
171966           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
171967       ELSE
171968           ---------------------------------------------------------------------------------------------------
171969           -- 4262811a Switch Sign
171970           ---------------------------------------------------------------------------------------------------
171971           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
171972           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
171973                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
171974           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
171975                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
171976           -- 5132302
171977           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
171978                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
171979 
171980       END IF;
171981 
171982       -- 4955764
171983       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
171984       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
171985 
171986 
171987       XLA_AE_LINES_PKG.ValidateCurrentLine;
171988       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
171989 
171990       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
171991                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
171992                ,p_balance_type_code => l_balance_type_code);
171993 
171994    END IF;
171995 
171996    -----------------------------------------------------------------------------------------
171997    -- 4262811 Multiperiod Accounting
171998    -----------------------------------------------------------------------------------------
171999      -- No MPA option is assigned.
172000 
172001 
172002 END IF;
172003 END IF;
172004 --
172005 
172006 --
172007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172008    trace
172009       (p_msg      => 'END of AcctLineType_317'
172010       ,p_level    => C_LEVEL_PROCEDURE
172011       ,p_module   => l_log_module);
172012 END IF;
172013 --
172014 EXCEPTION
172015   WHEN xla_exceptions_pkg.application_exception THEN
172016       RAISE;
172017   WHEN OTHERS THEN
172018        xla_exceptions_pkg.raise_message
172019            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_317');
172020 END AcctLineType_317;
172021 --
172022 
172023 ---------------------------------------
172024 --
172025 -- PRIVATE FUNCTION
172026 --         AcctLineType_318
172027 --
172028 ---------------------------------------
172029 PROCEDURE AcctLineType_318 (
172030   p_application_id        IN NUMBER
172031  ,p_event_id              IN NUMBER
172032  ,p_calculate_acctd_flag  IN VARCHAR2
172033  ,p_calculate_g_l_flag    IN VARCHAR2
172034  ,p_actual_flag           IN OUT VARCHAR2
172035  ,p_balance_type_code     OUT VARCHAR2
172036  ,p_gain_or_loss_ref      OUT VARCHAR2
172037  
172038 --TRANSACTION_ID
172039  , p_source_1            IN NUMBER
172040 --Item Concatenated Segments
172041  , p_source_2            IN VARCHAR2
172042 --Transaction Quantity
172043  , p_source_3            IN NUMBER
172044 --Transaction Unit of Measure Code
172045  , p_source_4            IN VARCHAR2
172046 --Inventory Transaction Type Description
172047  , p_source_5            IN VARCHAR2
172048 --Product Line Accounting Category Expense Account
172049  , p_source_24            IN NUMBER
172050 --Transfer to Subinventory or Cost Group category expense account
172051  , p_source_25            IN NUMBER
172052 --Cost Group Identifier
172053  , p_source_26            IN NUMBER
172054 --INV Header Transfer Cost Group ID
172055  , p_source_27            IN NUMBER
172056 --INV Header Cost Group ID
172057  , p_source_28            IN NUMBER
172058 --Subinventory Name
172059  , p_source_29            IN VARCHAR2
172060 --INV Header Transfer Subinventory
172061  , p_source_31            IN VARCHAR2
172062 --DISTRIBUTION_IDENTIFIER
172063  , p_source_84            IN NUMBER
172064 --Distribution Type
172065  , p_source_85            IN VARCHAR2
172066  , p_source_85_meaning    IN VARCHAR2
172067 --Entered Currency Code
172068  , p_source_88            IN VARCHAR2
172069 --Entered Amount
172070  , p_source_91            IN NUMBER
172071 --Currency Conversion Date
172072  , p_source_92            IN DATE
172073 --Currency Conversion Rate
172074  , p_source_93            IN NUMBER
172075 --Currency Conversion Type
172076  , p_source_94            IN VARCHAR2
172077 --Accounted Amount
172078  , p_source_95            IN NUMBER
172079 --Accounting Line Type
172080  , p_source_97            IN NUMBER
172081 )
172082 IS
172083 
172084 l_component_type              VARCHAR2(80);
172085 l_component_code              VARCHAR2(30);
172086 l_component_type_code         VARCHAR2(1);
172087 l_component_appl_id           INTEGER;
172088 l_amb_context_code            VARCHAR2(30);
172089 l_entity_code                 VARCHAR2(30);
172090 l_event_class_code            VARCHAR2(30);
172091 l_ae_header_id                NUMBER;
172092 l_event_type_code             VARCHAR2(30);
172093 l_line_definition_code        VARCHAR2(30);
172094 l_line_definition_owner_code  VARCHAR2(1);
172095 --
172096 -- adr variables
172097 l_segment                     VARCHAR2(30);
172098 l_ccid                        NUMBER;
172099 l_adr_transaction_coa_id      NUMBER;
172100 l_adr_accounting_coa_id       NUMBER;
172101 l_adr_flexfield_segment_code  VARCHAR2(30);
172102 l_adr_flex_value_set_id       NUMBER;
172103 l_adr_value_type_code         VARCHAR2(30);
172104 l_adr_value_combination_id    NUMBER;
172105 l_adr_value_segment_code      VARCHAR2(30);
172106 
172107 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
172108 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
172109 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
172110 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
172111 
172112 -- 4262811 Variables ------------------------------------------------------------------------------------------
172113 l_entered_amt_idx             NUMBER;
172114 l_accted_amt_idx              NUMBER;
172115 l_acc_rev_flag                VARCHAR2(1);
172116 l_accrual_line_num            NUMBER;
172117 l_tmp_amt                     NUMBER;
172118 l_acc_rev_natural_side_code   VARCHAR2(1);
172119 
172120 l_num_entries                 NUMBER;
172121 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
172122 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
172123 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
172124 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
172125 l_recog_line_1                NUMBER;
172126 l_recog_line_2                NUMBER;
172127 
172128 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
172129 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
172130 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
172131 
172132 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
172133 
172134 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
172135 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
172136 
172137 ---------------------------------------------------------------------------------------------------------------
172138 
172139 
172140 --
172141 -- bulk performance
172142 --
172143 l_balance_type_code           VARCHAR2(1);
172144 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
172145 l_log_module                  VARCHAR2(240);
172146 
172147 --
172148 -- Upgrade strategy
172149 --
172150 l_actual_upg_option           VARCHAR2(1);
172151 l_enc_upg_option           VARCHAR2(1);
172152 
172153 --
172154 BEGIN
172155 --
172156 IF g_log_enabled THEN
172157       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_318';
172158 END IF;
172159 --
172160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172161 
172162       trace
172163          (p_msg      => 'BEGIN of AcctLineType_318'
172164          ,p_level    => C_LEVEL_PROCEDURE
172165          ,p_module   => l_log_module);
172166 
172167 END IF;
172168 --
172169 l_component_type             := 'AMB_JLT';
172170 l_component_code             := 'OFFSET';
172171 l_component_type_code        := 'S';
172172 l_component_appl_id          :=  707;
172173 l_amb_context_code           := 'DEFAULT';
172174 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
172175 l_event_class_code           := 'INTRAORG_TXFR';
172176 l_event_type_code            := 'INTRAORG_TXFR_ALL';
172177 l_line_definition_owner_code := 'S';
172178 l_line_definition_code       := 'PI_INTRAORG_TXFR';
172179 --
172180 l_balance_type_code          := 'A';
172181 l_segment                     := NULL;
172182 l_ccid                        := NULL;
172183 l_adr_transaction_coa_id      := NULL;
172184 l_adr_accounting_coa_id       := NULL;
172185 l_adr_flexfield_segment_code  := NULL;
172186 l_adr_flex_value_set_id       := NULL;
172187 l_adr_value_type_code         := NULL;
172188 l_adr_value_combination_id    := NULL;
172189 l_adr_value_segment_code      := NULL;
172190 
172191 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
172192 l_bflow_class_code           := '';    -- 4219869 Business Flow
172193 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
172194 l_budgetary_control_flag     := 'N';
172195 
172196 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
172197 l_bflow_applied_to_amt       := NULL; -- 5132302
172198 l_entered_amt_idx            := NULL;          -- 4262811
172199 l_accted_amt_idx             := NULL;          -- 4262811
172200 l_acc_rev_flag               := NULL;          -- 4262811
172201 l_accrual_line_num           := NULL;          -- 4262811
172202 l_tmp_amt                    := NULL;          -- 4262811
172203 --
172204  
172205 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
172206     l_balance_type_code <> 'B' THEN
172207 IF NVL(p_source_97,9E125) =  2
172208  THEN 
172209 
172210    --
172211    XLA_AE_LINES_PKG.SetNewLine;
172212 
172213    p_balance_type_code          := l_balance_type_code;
172214    -- set the flag so later we will know whether the gain loss line needs to be created
172215    
172216    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
172217      p_actual_flag :='A';
172218    END IF;
172219 
172220    --
172221    -- bulk performance
172222    --
172223    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
172224                                       p_header_num   => 0); -- 4262811
172225    --
172226    -- set accounting line options
172227    --
172228    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
172229            p_natural_side_code          => 'D'
172230          , p_gain_or_loss_flag          => 'N'
172231          , p_gl_transfer_mode_code      => 'S'
172232          , p_acct_entry_type_code       => 'A'
172233          , p_switch_side_flag           => 'Y'
172234          , p_merge_duplicate_code       => 'N'
172235          );
172236    --
172237    l_acc_rev_natural_side_code := 'C';  -- 4262811
172238    -- 
172239    --
172240    -- set accounting line type info
172241    --
172242    xla_ae_lines_pkg.SetAcctLineType
172243       (p_component_type             => l_component_type
172244       ,p_event_type_code            => l_event_type_code
172245       ,p_line_definition_owner_code => l_line_definition_owner_code
172246       ,p_line_definition_code       => l_line_definition_code
172247       ,p_accounting_line_code       => l_component_code
172248       ,p_accounting_line_type_code  => l_component_type_code
172249       ,p_accounting_line_appl_id    => l_component_appl_id
172250       ,p_amb_context_code           => l_amb_context_code
172251       ,p_entity_code                => l_entity_code
172252       ,p_event_class_code           => l_event_class_code);
172253    --
172254    -- set accounting class
172255    --
172256    xla_ae_lines_pkg.SetAcctClass(
172257            p_accounting_class_code  => 'OFFSET'
172258          , p_ae_header_id           => l_ae_header_id
172259          );
172260 
172261    --
172262    -- set rounding class
172263    --
172264    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
172265                       'OFFSET';
172266 
172267    --
172268    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
172269    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
172270    --
172271    -- bulk performance
172272    --
172273    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
172274 
172275    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
172276       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
172277 
172278    -- 4955764
172279    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
172280       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
172281 
172282    -- 4458381 Public Sector Enh
172283    
172284    --
172285    -- set accounting attributes for the line type
172286    --
172287    l_entered_amt_idx := 3;
172288    l_accted_amt_idx  := 8;
172289    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
172290    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
172291    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
172292    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
172293    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
172294    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
172295    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
172296    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
172297    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
172298    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
172299    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
172300    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
172301    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
172302    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
172303    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
172304    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
172305    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
172306 
172307    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
172308    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
172309 
172310    ---------------------------------------------------------------------------------------------------------------
172311    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
172312    ---------------------------------------------------------------------------------------------------------------
172313    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
172314 
172315    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
172316    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
172317 
172318    IF xla_accounting_cache_pkg.GetValueChar
172319          (p_source_code         => 'LEDGER_CATEGORY_CODE'
172320          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
172321    AND l_bflow_method_code = 'PRIOR_ENTRY'
172322 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
172323    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
172324          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
172325        )
172326    THEN
172327          xla_ae_lines_pkg.BflowUpgEntry
172328            (p_business_method_code    => l_bflow_method_code
172329            ,p_business_class_code     => l_bflow_class_code
172330            ,p_balance_type            => l_balance_type_code);
172331    ELSE
172332       NULL;
172333 -- No business flow processing for business flow method of NONE.
172334    END IF;
172335 
172336    --
172337    -- call analytical criteria
172338    --
172339    
172340    --
172341    -- call description
172342    --
172343    
172344 xla_ae_lines_pkg.SetLineDescription(
172345    p_ae_header_id => l_ae_header_id
172346   ,p_description  => Description_1 (
172347      p_application_id         => p_application_id
172348    , p_ae_header_id           => l_ae_header_id 
172349 , p_source_1 => p_source_1
172350 , p_source_2 => p_source_2
172351 , p_source_3 => p_source_3
172352 , p_source_4 => p_source_4
172353 , p_source_5 => p_source_5
172354    )
172355 );
172356 
172357 
172358    --
172359    -- call ADRs
172360    -- Bug 4922099
172361    --
172362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
172363         (NVL(l_actual_upg_option, 'N') = 'O') OR
172364         (NVL(l_enc_upg_option, 'N') = 'O')
172365       )
172366    THEN
172367    NULL;
172368    --
172369    --
172370    
172371   l_ccid := AcctDerRule_15(
172372            p_application_id           => p_application_id
172373          , p_ae_header_id             => l_ae_header_id 
172374 , p_source_24 => p_source_24
172375 , p_source_25 => p_source_25
172376 , p_source_26 => p_source_26
172377 , p_source_27 => p_source_27
172378 , p_source_28 => p_source_28
172379 , p_source_29 => p_source_29
172380 , p_source_31 => p_source_31
172381          , x_transaction_coa_id       => l_adr_transaction_coa_id
172382          , x_accounting_coa_id        => l_adr_accounting_coa_id
172383          , x_value_type_code          => l_adr_value_type_code
172384          , p_side                     => 'NA'
172385    );
172386 
172387    xla_ae_lines_pkg.set_ccid(
172388     p_code_combination_id          => l_ccid
172389   , p_value_type_code              => l_adr_value_type_code
172390   , p_transaction_coa_id           => l_adr_transaction_coa_id
172391   , p_accounting_coa_id            => l_adr_accounting_coa_id
172392   , p_adr_code                     => 'PI_CATEGORY_OFFSET_ADR'
172393   , p_adr_type_code                => 'S'
172394   , p_component_type               => l_component_type
172395   , p_component_code               => l_component_code
172396   , p_component_type_code          => l_component_type_code
172397   , p_component_appl_id            => l_component_appl_id
172398   , p_amb_context_code             => l_amb_context_code
172399   , p_side                         => 'NA'
172400   );
172401 
172402 
172403    --
172404    --
172405    END IF;
172406    --
172407    -- Bug 4922099
172408    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
172409           (NVL(l_enc_upg_option, 'N') = 'O')
172410         ) AND
172411         (l_bflow_method_code = 'PRIOR_ENTRY')
172412       )
172413    THEN
172414       IF
172415       --
172416       1 = 2
172417       --
172418       THEN
172419       xla_accounting_err_pkg.build_message
172420                                     (p_appli_s_name            => 'XLA'
172421                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
172422                                     ,p_token_1                 => 'LINE_NUMBER'
172423                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
172424                                     ,p_token_2                 => 'LINE_TYPE_NAME'
172425                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
172426                                                                              l_component_type
172427                                                                             ,l_component_code
172428                                                                             ,l_component_type_code
172429                                                                             ,l_component_appl_id
172430                                                                             ,l_amb_context_code
172431                                                                             ,l_entity_code
172432                                                                             ,l_event_class_code
172433                                                                            )
172434                                     ,p_token_3                 => 'OWNER'
172435                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
172436                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
172437                                                                           ,p_lookup_code    => l_component_type_code
172438                                                                          )
172439                                     ,p_token_4                 => 'PRODUCT_NAME'
172440                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
172441                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
172442                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
172443                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
172444                                     ,p_ae_header_id            =>  NULL
172445                                        );
172446 
172447         IF (C_LEVEL_ERROR>= g_log_level) THEN
172448                  trace
172449                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
172450                       ,p_level    => C_LEVEL_ERROR
172451                       ,p_module   => l_log_module);
172452         END IF;
172453       END IF;
172454    END IF;
172455    --
172456    --
172457    ------------------------------------------------------------------------------------------------
172458    -- 4219869 Business Flow
172459    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
172460    -- Prior Entry.  Currently, the following code is always generated.
172461    ------------------------------------------------------------------------------------------------
172462    XLA_AE_LINES_PKG.ValidateCurrentLine;
172463 
172464    ------------------------------------------------------------------------------------
172465    -- 4219869 Business Flow
172466    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
172467    ------------------------------------------------------------------------------------
172468    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
172469 
172470    ----------------------------------------------------------------------------------
172471    -- 4219869 Business Flow
172472    -- Update journal entry status -- Need to generate this within IF <condition>
172473    ----------------------------------------------------------------------------------
172474    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
172475          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
172476          ,p_balance_type_code => l_balance_type_code
172477          );
172478 
172479    -------------------------------------------------------------------------------------------
172480    -- 4262811 - Generate the Accrual Reversal lines
172481    -------------------------------------------------------------------------------------------
172482    BEGIN
172483       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
172484                               (g_array_event(p_event_id).array_value_num('header_index'));
172485       IF l_acc_rev_flag IS NULL THEN
172486          l_acc_rev_flag := 'N';
172487       END IF;
172488    EXCEPTION
172489       WHEN OTHERS THEN
172490          l_acc_rev_flag := 'N';
172491    END;
172492    --
172493    IF (l_acc_rev_flag = 'Y') THEN
172494 
172495        -- 4645092  ------------------------------------------------------------------------------
172496        -- To allow MPA report to determine if it should generate report process
172497        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
172498        ------------------------------------------------------------------------------------------
172499 
172500        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
172501        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
172502    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
172503    -- call ADRs
172504    -- Bug 4922099
172505    --
172506    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
172507         (NVL(l_actual_upg_option, 'N') = 'O') OR
172508         (NVL(l_enc_upg_option, 'N') = 'O')
172509       )
172510    THEN
172511    NULL;
172512    --
172513    --
172514    
172515   l_ccid := AcctDerRule_15(
172516            p_application_id           => p_application_id
172517          , p_ae_header_id             => l_ae_header_id 
172518 , p_source_24 => p_source_24
172519 , p_source_25 => p_source_25
172520 , p_source_26 => p_source_26
172521 , p_source_27 => p_source_27
172522 , p_source_28 => p_source_28
172523 , p_source_29 => p_source_29
172524 , p_source_31 => p_source_31
172525          , x_transaction_coa_id       => l_adr_transaction_coa_id
172526          , x_accounting_coa_id        => l_adr_accounting_coa_id
172527          , x_value_type_code          => l_adr_value_type_code
172528          , p_side                     => 'NA'
172529    );
172530 
172531    xla_ae_lines_pkg.set_ccid(
172532     p_code_combination_id          => l_ccid
172533   , p_value_type_code              => l_adr_value_type_code
172534   , p_transaction_coa_id           => l_adr_transaction_coa_id
172535   , p_accounting_coa_id            => l_adr_accounting_coa_id
172536   , p_adr_code                     => 'PI_CATEGORY_OFFSET_ADR'
172537   , p_adr_type_code                => 'S'
172538   , p_component_type               => l_component_type
172539   , p_component_code               => l_component_code
172540   , p_component_type_code          => l_component_type_code
172541   , p_component_appl_id            => l_component_appl_id
172542   , p_amb_context_code             => l_amb_context_code
172543   , p_side                         => 'NA'
172544   );
172545 
172546 
172547    --
172548    --
172549    END IF;
172550 
172551        --
172552        -- Update the line information that should be overwritten
172553        --
172554        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
172555                                          p_header_num   => 1);
172556        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
172557 
172558        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
172559 
172560        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
172561           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
172562        END IF;
172563 
172564       --
172565       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
172566       --
172567       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
172568           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
172569       ELSE
172570           ---------------------------------------------------------------------------------------------------
172571           -- 4262811a Switch Sign
172572           ---------------------------------------------------------------------------------------------------
172573           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
172574           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
172575                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
172576           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
172577                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
172578           -- 5132302
172579           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
172580                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
172581 
172582       END IF;
172583 
172584       -- 4955764
172585       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
172586       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
172587 
172588 
172589       XLA_AE_LINES_PKG.ValidateCurrentLine;
172590       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
172591 
172592       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
172593                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
172594                ,p_balance_type_code => l_balance_type_code);
172595 
172596    END IF;
172597 
172598    -----------------------------------------------------------------------------------------
172599    -- 4262811 Multiperiod Accounting
172600    -----------------------------------------------------------------------------------------
172601      -- No MPA option is assigned.
172602 
172603 
172604 END IF;
172605 END IF;
172606 --
172607 
172608 --
172609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172610    trace
172611       (p_msg      => 'END of AcctLineType_318'
172612       ,p_level    => C_LEVEL_PROCEDURE
172613       ,p_module   => l_log_module);
172614 END IF;
172615 --
172616 EXCEPTION
172617   WHEN xla_exceptions_pkg.application_exception THEN
172618       RAISE;
172619   WHEN OTHERS THEN
172620        xla_exceptions_pkg.raise_message
172621            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_318');
172622 END AcctLineType_318;
172623 --
172624 
172625 ---------------------------------------
172626 --
172627 -- PRIVATE FUNCTION
172628 --         AcctLineType_319
172629 --
172630 ---------------------------------------
172631 PROCEDURE AcctLineType_319 (
172632   p_application_id        IN NUMBER
172633  ,p_event_id              IN NUMBER
172634  ,p_calculate_acctd_flag  IN VARCHAR2
172635  ,p_calculate_g_l_flag    IN VARCHAR2
172636  ,p_actual_flag           IN OUT VARCHAR2
172637  ,p_balance_type_code     OUT VARCHAR2
172638  ,p_gain_or_loss_ref      OUT VARCHAR2
172639  
172640 --TRANSACTION_ID
172641  , p_source_1            IN NUMBER
172642 --Transaction Unit of Measure Code
172643  , p_source_4            IN VARCHAR2
172644 --Primary Quantity of the Transaction
172645  , p_source_6            IN NUMBER
172646 --WIP Transaction Type
172647  , p_source_7            IN NUMBER
172648  , p_source_7_meaning    IN VARCHAR2
172649 --Cost Management Default Account
172650  , p_source_11            IN NUMBER
172651 --DISTRIBUTION_IDENTIFIER
172652  , p_source_84            IN NUMBER
172653 --Distribution Type
172654  , p_source_85            IN VARCHAR2
172655  , p_source_85_meaning    IN VARCHAR2
172656 --Entered Currency Code
172657  , p_source_88            IN VARCHAR2
172658 --Entered Amount
172659  , p_source_91            IN NUMBER
172660 --Currency Conversion Date
172661  , p_source_92            IN DATE
172662 --Currency Conversion Rate
172663  , p_source_93            IN NUMBER
172664 --Accounted Amount
172665  , p_source_95            IN NUMBER
172666 --Accounting Line Type
172667  , p_source_97            IN NUMBER
172668 )
172669 IS
172670 
172671 l_component_type              VARCHAR2(80);
172672 l_component_code              VARCHAR2(30);
172673 l_component_type_code         VARCHAR2(1);
172674 l_component_appl_id           INTEGER;
172675 l_amb_context_code            VARCHAR2(30);
172676 l_entity_code                 VARCHAR2(30);
172677 l_event_class_code            VARCHAR2(30);
172678 l_ae_header_id                NUMBER;
172679 l_event_type_code             VARCHAR2(30);
172680 l_line_definition_code        VARCHAR2(30);
172681 l_line_definition_owner_code  VARCHAR2(1);
172682 --
172683 -- adr variables
172684 l_segment                     VARCHAR2(30);
172685 l_ccid                        NUMBER;
172686 l_adr_transaction_coa_id      NUMBER;
172687 l_adr_accounting_coa_id       NUMBER;
172688 l_adr_flexfield_segment_code  VARCHAR2(30);
172689 l_adr_flex_value_set_id       NUMBER;
172690 l_adr_value_type_code         VARCHAR2(30);
172691 l_adr_value_combination_id    NUMBER;
172692 l_adr_value_segment_code      VARCHAR2(30);
172693 
172694 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
172695 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
172696 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
172697 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
172698 
172699 -- 4262811 Variables ------------------------------------------------------------------------------------------
172700 l_entered_amt_idx             NUMBER;
172701 l_accted_amt_idx              NUMBER;
172702 l_acc_rev_flag                VARCHAR2(1);
172703 l_accrual_line_num            NUMBER;
172704 l_tmp_amt                     NUMBER;
172705 l_acc_rev_natural_side_code   VARCHAR2(1);
172706 
172707 l_num_entries                 NUMBER;
172708 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
172709 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
172710 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
172711 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
172712 l_recog_line_1                NUMBER;
172713 l_recog_line_2                NUMBER;
172714 
172715 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
172716 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
172717 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
172718 
172719 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
172720 
172721 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
172722 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
172723 
172724 ---------------------------------------------------------------------------------------------------------------
172725 
172726 
172727 --
172728 -- bulk performance
172729 --
172730 l_balance_type_code           VARCHAR2(1);
172731 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
172732 l_log_module                  VARCHAR2(240);
172733 
172734 --
172735 -- Upgrade strategy
172736 --
172737 l_actual_upg_option           VARCHAR2(1);
172738 l_enc_upg_option           VARCHAR2(1);
172739 
172740 --
172741 BEGIN
172742 --
172743 IF g_log_enabled THEN
172744       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_319';
172745 END IF;
172746 --
172747 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172748 
172749       trace
172750          (p_msg      => 'BEGIN of AcctLineType_319'
172751          ,p_level    => C_LEVEL_PROCEDURE
172752          ,p_module   => l_log_module);
172753 
172754 END IF;
172755 --
172756 l_component_type             := 'AMB_JLT';
172757 l_component_code             := 'OFFSET';
172758 l_component_type_code        := 'S';
172759 l_component_appl_id          :=  707;
172760 l_amb_context_code           := 'DEFAULT';
172761 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
172762 l_event_class_code           := 'OSP';
172763 l_event_type_code            := 'OSP';
172764 l_line_definition_owner_code := 'S';
172765 l_line_definition_code       := 'PI_OSP';
172766 --
172767 l_balance_type_code          := 'A';
172768 l_segment                     := NULL;
172769 l_ccid                        := NULL;
172770 l_adr_transaction_coa_id      := NULL;
172771 l_adr_accounting_coa_id       := NULL;
172772 l_adr_flexfield_segment_code  := NULL;
172773 l_adr_flex_value_set_id       := NULL;
172774 l_adr_value_type_code         := NULL;
172775 l_adr_value_combination_id    := NULL;
172776 l_adr_value_segment_code      := NULL;
172777 
172778 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
172779 l_bflow_class_code           := '';    -- 4219869 Business Flow
172780 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
172781 l_budgetary_control_flag     := 'N';
172782 
172783 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
172784 l_bflow_applied_to_amt       := NULL; -- 5132302
172785 l_entered_amt_idx            := NULL;          -- 4262811
172786 l_accted_amt_idx             := NULL;          -- 4262811
172787 l_acc_rev_flag               := NULL;          -- 4262811
172788 l_accrual_line_num           := NULL;          -- 4262811
172789 l_tmp_amt                    := NULL;          -- 4262811
172790 --
172791  
172792 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
172793     l_balance_type_code <> 'B' THEN
172794 IF NVL(p_source_97,9E125) =  2
172795  THEN 
172796 
172797    --
172798    XLA_AE_LINES_PKG.SetNewLine;
172799 
172800    p_balance_type_code          := l_balance_type_code;
172801    -- set the flag so later we will know whether the gain loss line needs to be created
172802    
172803    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
172804      p_actual_flag :='A';
172805    END IF;
172806 
172807    --
172808    -- bulk performance
172809    --
172810    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
172811                                       p_header_num   => 0); -- 4262811
172812    --
172813    -- set accounting line options
172814    --
172815    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
172816            p_natural_side_code          => 'D'
172817          , p_gain_or_loss_flag          => 'N'
172818          , p_gl_transfer_mode_code      => 'S'
172819          , p_acct_entry_type_code       => 'A'
172820          , p_switch_side_flag           => 'Y'
172821          , p_merge_duplicate_code       => 'N'
172822          );
172823    --
172824    l_acc_rev_natural_side_code := 'C';  -- 4262811
172825    -- 
172826    --
172827    -- set accounting line type info
172828    --
172829    xla_ae_lines_pkg.SetAcctLineType
172830       (p_component_type             => l_component_type
172831       ,p_event_type_code            => l_event_type_code
172832       ,p_line_definition_owner_code => l_line_definition_owner_code
172833       ,p_line_definition_code       => l_line_definition_code
172834       ,p_accounting_line_code       => l_component_code
172835       ,p_accounting_line_type_code  => l_component_type_code
172836       ,p_accounting_line_appl_id    => l_component_appl_id
172837       ,p_amb_context_code           => l_amb_context_code
172838       ,p_entity_code                => l_entity_code
172839       ,p_event_class_code           => l_event_class_code);
172840    --
172841    -- set accounting class
172842    --
172843    xla_ae_lines_pkg.SetAcctClass(
172844            p_accounting_class_code  => 'OFFSET'
172845          , p_ae_header_id           => l_ae_header_id
172846          );
172847 
172848    --
172849    -- set rounding class
172850    --
172851    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
172852                       'OFFSET';
172853 
172854    --
172855    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
172856    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
172857    --
172858    -- bulk performance
172859    --
172860    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
172861 
172862    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
172863       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
172864 
172865    -- 4955764
172866    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
172867       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
172868 
172869    -- 4458381 Public Sector Enh
172870    
172871    --
172872    -- set accounting attributes for the line type
172873    --
172874    l_entered_amt_idx := 3;
172875    l_accted_amt_idx  := 8;
172876    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
172877    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
172878    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
172879    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
172880    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
172881    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
172882    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
172883    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
172884    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
172885    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
172886    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
172887    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
172888    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
172889    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
172890    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
172891    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
172892    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
172893 
172894    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
172895    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
172896 
172897    ---------------------------------------------------------------------------------------------------------------
172898    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
172899    ---------------------------------------------------------------------------------------------------------------
172900    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
172901 
172902    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
172903    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
172904 
172905    IF xla_accounting_cache_pkg.GetValueChar
172906          (p_source_code         => 'LEDGER_CATEGORY_CODE'
172907          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
172908    AND l_bflow_method_code = 'PRIOR_ENTRY'
172909 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
172910    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
172911          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
172912        )
172913    THEN
172914          xla_ae_lines_pkg.BflowUpgEntry
172915            (p_business_method_code    => l_bflow_method_code
172916            ,p_business_class_code     => l_bflow_class_code
172917            ,p_balance_type            => l_balance_type_code);
172918    ELSE
172919       NULL;
172920 -- No business flow processing for business flow method of NONE.
172921    END IF;
172922 
172923    --
172924    -- call analytical criteria
172925    --
172926    
172927    --
172928    -- call description
172929    --
172930    
172931 xla_ae_lines_pkg.SetLineDescription(
172932    p_ae_header_id => l_ae_header_id
172933   ,p_description  => Description_2 (
172934      p_application_id         => p_application_id
172935    , p_ae_header_id           => l_ae_header_id 
172936 , p_source_1 => p_source_1
172937 , p_source_4 => p_source_4
172938 , p_source_6 => p_source_6
172939 , p_source_7 => p_source_7
172940 , p_source_7_meaning => p_source_7_meaning
172941    )
172942 );
172943 
172944 
172945    --
172946    -- call ADRs
172947    -- Bug 4922099
172948    --
172949    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
172950         (NVL(l_actual_upg_option, 'N') = 'O') OR
172951         (NVL(l_enc_upg_option, 'N') = 'O')
172952       )
172953    THEN
172954    NULL;
172955    --
172956    --
172957    
172958   l_ccid := AcctDerRule_6(
172959            p_application_id           => p_application_id
172960          , p_ae_header_id             => l_ae_header_id 
172961 , p_source_11 => p_source_11
172962          , x_transaction_coa_id       => l_adr_transaction_coa_id
172963          , x_accounting_coa_id        => l_adr_accounting_coa_id
172964          , x_value_type_code          => l_adr_value_type_code
172965          , p_side                     => 'NA'
172966    );
172967 
172968    xla_ae_lines_pkg.set_ccid(
172969     p_code_combination_id          => l_ccid
172970   , p_value_type_code              => l_adr_value_type_code
172971   , p_transaction_coa_id           => l_adr_transaction_coa_id
172972   , p_accounting_coa_id            => l_adr_accounting_coa_id
172973   , p_adr_code                     => 'CST_DEFAULT'
172974   , p_adr_type_code                => 'S'
172975   , p_component_type               => l_component_type
172976   , p_component_code               => l_component_code
172977   , p_component_type_code          => l_component_type_code
172978   , p_component_appl_id            => l_component_appl_id
172979   , p_amb_context_code             => l_amb_context_code
172980   , p_side                         => 'NA'
172981   );
172982 
172983 
172984    --
172985    --
172986    END IF;
172987    --
172988    -- Bug 4922099
172989    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
172990           (NVL(l_enc_upg_option, 'N') = 'O')
172991         ) AND
172992         (l_bflow_method_code = 'PRIOR_ENTRY')
172993       )
172994    THEN
172995       IF
172996       --
172997       1 = 2
172998       --
172999       THEN
173000       xla_accounting_err_pkg.build_message
173001                                     (p_appli_s_name            => 'XLA'
173002                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
173003                                     ,p_token_1                 => 'LINE_NUMBER'
173004                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
173005                                     ,p_token_2                 => 'LINE_TYPE_NAME'
173006                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
173007                                                                              l_component_type
173008                                                                             ,l_component_code
173009                                                                             ,l_component_type_code
173010                                                                             ,l_component_appl_id
173011                                                                             ,l_amb_context_code
173012                                                                             ,l_entity_code
173013                                                                             ,l_event_class_code
173014                                                                            )
173015                                     ,p_token_3                 => 'OWNER'
173016                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
173017                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
173018                                                                           ,p_lookup_code    => l_component_type_code
173019                                                                          )
173020                                     ,p_token_4                 => 'PRODUCT_NAME'
173021                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
173022                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
173023                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
173024                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
173025                                     ,p_ae_header_id            =>  NULL
173026                                        );
173027 
173028         IF (C_LEVEL_ERROR>= g_log_level) THEN
173029                  trace
173030                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
173031                       ,p_level    => C_LEVEL_ERROR
173032                       ,p_module   => l_log_module);
173033         END IF;
173034       END IF;
173035    END IF;
173036    --
173037    --
173038    ------------------------------------------------------------------------------------------------
173039    -- 4219869 Business Flow
173040    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
173041    -- Prior Entry.  Currently, the following code is always generated.
173042    ------------------------------------------------------------------------------------------------
173043    XLA_AE_LINES_PKG.ValidateCurrentLine;
173044 
173045    ------------------------------------------------------------------------------------
173046    -- 4219869 Business Flow
173047    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
173048    ------------------------------------------------------------------------------------
173049    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
173050 
173051    ----------------------------------------------------------------------------------
173052    -- 4219869 Business Flow
173053    -- Update journal entry status -- Need to generate this within IF <condition>
173054    ----------------------------------------------------------------------------------
173055    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
173056          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
173057          ,p_balance_type_code => l_balance_type_code
173058          );
173059 
173060    -------------------------------------------------------------------------------------------
173061    -- 4262811 - Generate the Accrual Reversal lines
173062    -------------------------------------------------------------------------------------------
173063    BEGIN
173064       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
173065                               (g_array_event(p_event_id).array_value_num('header_index'));
173066       IF l_acc_rev_flag IS NULL THEN
173067          l_acc_rev_flag := 'N';
173068       END IF;
173069    EXCEPTION
173070       WHEN OTHERS THEN
173071          l_acc_rev_flag := 'N';
173072    END;
173073    --
173074    IF (l_acc_rev_flag = 'Y') THEN
173075 
173076        -- 4645092  ------------------------------------------------------------------------------
173077        -- To allow MPA report to determine if it should generate report process
173078        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
173079        ------------------------------------------------------------------------------------------
173080 
173081        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
173082        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
173083    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
173084    -- call ADRs
173085    -- Bug 4922099
173086    --
173087    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
173088         (NVL(l_actual_upg_option, 'N') = 'O') OR
173089         (NVL(l_enc_upg_option, 'N') = 'O')
173090       )
173091    THEN
173092    NULL;
173093    --
173094    --
173095    
173096   l_ccid := AcctDerRule_6(
173097            p_application_id           => p_application_id
173098          , p_ae_header_id             => l_ae_header_id 
173099 , p_source_11 => p_source_11
173100          , x_transaction_coa_id       => l_adr_transaction_coa_id
173101          , x_accounting_coa_id        => l_adr_accounting_coa_id
173102          , x_value_type_code          => l_adr_value_type_code
173103          , p_side                     => 'NA'
173104    );
173105 
173106    xla_ae_lines_pkg.set_ccid(
173107     p_code_combination_id          => l_ccid
173108   , p_value_type_code              => l_adr_value_type_code
173109   , p_transaction_coa_id           => l_adr_transaction_coa_id
173110   , p_accounting_coa_id            => l_adr_accounting_coa_id
173111   , p_adr_code                     => 'CST_DEFAULT'
173112   , p_adr_type_code                => 'S'
173113   , p_component_type               => l_component_type
173114   , p_component_code               => l_component_code
173115   , p_component_type_code          => l_component_type_code
173116   , p_component_appl_id            => l_component_appl_id
173117   , p_amb_context_code             => l_amb_context_code
173118   , p_side                         => 'NA'
173119   );
173120 
173121 
173122    --
173123    --
173124    END IF;
173125 
173126        --
173127        -- Update the line information that should be overwritten
173128        --
173129        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
173130                                          p_header_num   => 1);
173131        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
173132 
173133        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
173134 
173135        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
173136           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
173137        END IF;
173138 
173139       --
173140       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
173141       --
173142       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
173143           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
173144       ELSE
173145           ---------------------------------------------------------------------------------------------------
173146           -- 4262811a Switch Sign
173147           ---------------------------------------------------------------------------------------------------
173148           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
173149           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
173150                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
173151           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
173152                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
173153           -- 5132302
173154           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
173155                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
173156 
173157       END IF;
173158 
173159       -- 4955764
173160       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
173161       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
173162 
173163 
173164       XLA_AE_LINES_PKG.ValidateCurrentLine;
173165       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
173166 
173167       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
173168                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
173169                ,p_balance_type_code => l_balance_type_code);
173170 
173171    END IF;
173172 
173173    -----------------------------------------------------------------------------------------
173174    -- 4262811 Multiperiod Accounting
173175    -----------------------------------------------------------------------------------------
173176      -- No MPA option is assigned.
173177 
173178 
173179 END IF;
173180 END IF;
173181 --
173182 
173183 --
173184 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173185    trace
173186       (p_msg      => 'END of AcctLineType_319'
173187       ,p_level    => C_LEVEL_PROCEDURE
173188       ,p_module   => l_log_module);
173189 END IF;
173190 --
173191 EXCEPTION
173192   WHEN xla_exceptions_pkg.application_exception THEN
173193       RAISE;
173194   WHEN OTHERS THEN
173195        xla_exceptions_pkg.raise_message
173196            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_319');
173197 END AcctLineType_319;
173198 --
173199 
173200 ---------------------------------------
173201 --
173202 -- PRIVATE FUNCTION
173203 --         AcctLineType_320
173204 --
173205 ---------------------------------------
173206 PROCEDURE AcctLineType_320 (
173207   p_application_id        IN NUMBER
173208  ,p_event_id              IN NUMBER
173209  ,p_calculate_acctd_flag  IN VARCHAR2
173210  ,p_calculate_g_l_flag    IN VARCHAR2
173211  ,p_actual_flag           IN OUT VARCHAR2
173212  ,p_balance_type_code     OUT VARCHAR2
173213  ,p_gain_or_loss_ref      OUT VARCHAR2
173214  
173215 --TRANSACTION_ID
173216  , p_source_1            IN NUMBER
173217 --Item Concatenated Segments
173218  , p_source_2            IN VARCHAR2
173219 --Transaction Quantity
173220  , p_source_3            IN NUMBER
173221 --Transaction Unit of Measure Code
173222  , p_source_4            IN VARCHAR2
173223 --Inventory Transaction Type Description
173224  , p_source_5            IN VARCHAR2
173225 --Transaction Distribution Account
173226  , p_source_20            IN NUMBER
173227 --DISTRIBUTION_IDENTIFIER
173228  , p_source_84            IN NUMBER
173229 --Distribution Type
173230  , p_source_85            IN VARCHAR2
173231  , p_source_85_meaning    IN VARCHAR2
173232 --Entered Currency Code
173233  , p_source_88            IN VARCHAR2
173234 --Entered Amount
173235  , p_source_91            IN NUMBER
173236 --Currency Conversion Date
173237  , p_source_92            IN DATE
173238 --Currency Conversion Rate
173239  , p_source_93            IN NUMBER
173240 --Currency Conversion Type
173241  , p_source_94            IN VARCHAR2
173242 --Accounted Amount
173243  , p_source_95            IN NUMBER
173244 --Accounting Line Type
173245  , p_source_97            IN NUMBER
173246 )
173247 IS
173248 
173249 l_component_type              VARCHAR2(80);
173250 l_component_code              VARCHAR2(30);
173251 l_component_type_code         VARCHAR2(1);
173252 l_component_appl_id           INTEGER;
173253 l_amb_context_code            VARCHAR2(30);
173254 l_entity_code                 VARCHAR2(30);
173255 l_event_class_code            VARCHAR2(30);
173256 l_ae_header_id                NUMBER;
173257 l_event_type_code             VARCHAR2(30);
173258 l_line_definition_code        VARCHAR2(30);
173259 l_line_definition_owner_code  VARCHAR2(1);
173260 --
173261 -- adr variables
173262 l_segment                     VARCHAR2(30);
173263 l_ccid                        NUMBER;
173264 l_adr_transaction_coa_id      NUMBER;
173265 l_adr_accounting_coa_id       NUMBER;
173266 l_adr_flexfield_segment_code  VARCHAR2(30);
173267 l_adr_flex_value_set_id       NUMBER;
173268 l_adr_value_type_code         VARCHAR2(30);
173269 l_adr_value_combination_id    NUMBER;
173270 l_adr_value_segment_code      VARCHAR2(30);
173271 
173272 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
173273 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
173274 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
173275 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
173276 
173277 -- 4262811 Variables ------------------------------------------------------------------------------------------
173278 l_entered_amt_idx             NUMBER;
173279 l_accted_amt_idx              NUMBER;
173280 l_acc_rev_flag                VARCHAR2(1);
173281 l_accrual_line_num            NUMBER;
173282 l_tmp_amt                     NUMBER;
173283 l_acc_rev_natural_side_code   VARCHAR2(1);
173284 
173285 l_num_entries                 NUMBER;
173286 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
173287 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
173288 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
173289 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
173290 l_recog_line_1                NUMBER;
173291 l_recog_line_2                NUMBER;
173292 
173293 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
173294 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
173295 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
173296 
173297 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
173298 
173299 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
173300 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
173301 
173302 ---------------------------------------------------------------------------------------------------------------
173303 
173304 
173305 --
173306 -- bulk performance
173307 --
173308 l_balance_type_code           VARCHAR2(1);
173309 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
173310 l_log_module                  VARCHAR2(240);
173311 
173312 --
173313 -- Upgrade strategy
173314 --
173315 l_actual_upg_option           VARCHAR2(1);
173316 l_enc_upg_option           VARCHAR2(1);
173317 
173318 --
173319 BEGIN
173320 --
173321 IF g_log_enabled THEN
173322       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_320';
173323 END IF;
173324 --
173325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173326 
173327       trace
173328          (p_msg      => 'BEGIN of AcctLineType_320'
173329          ,p_level    => C_LEVEL_PROCEDURE
173330          ,p_module   => l_log_module);
173331 
173332 END IF;
173333 --
173334 l_component_type             := 'AMB_JLT';
173335 l_component_code             := 'OFFSET';
173336 l_component_type_code        := 'S';
173337 l_component_appl_id          :=  707;
173338 l_amb_context_code           := 'DEFAULT';
173339 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
173340 l_event_class_code           := 'INT_ORDER_TO_EXP';
173341 l_event_type_code            := 'EXP_REQ_RCPT_NO_TP';
173342 l_line_definition_owner_code := 'S';
173343 l_line_definition_code       := 'PI_EXP_REQ_RCPT_NO_TP';
173344 --
173345 l_balance_type_code          := 'A';
173346 l_segment                     := NULL;
173347 l_ccid                        := NULL;
173348 l_adr_transaction_coa_id      := NULL;
173349 l_adr_accounting_coa_id       := NULL;
173350 l_adr_flexfield_segment_code  := NULL;
173351 l_adr_flex_value_set_id       := NULL;
173352 l_adr_value_type_code         := NULL;
173353 l_adr_value_combination_id    := NULL;
173354 l_adr_value_segment_code      := NULL;
173355 
173356 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
173357 l_bflow_class_code           := '';    -- 4219869 Business Flow
173358 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
173359 l_budgetary_control_flag     := 'N';
173360 
173361 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
173362 l_bflow_applied_to_amt       := NULL; -- 5132302
173363 l_entered_amt_idx            := NULL;          -- 4262811
173364 l_accted_amt_idx             := NULL;          -- 4262811
173365 l_acc_rev_flag               := NULL;          -- 4262811
173366 l_accrual_line_num           := NULL;          -- 4262811
173367 l_tmp_amt                    := NULL;          -- 4262811
173368 --
173369  
173370 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
173371     l_balance_type_code <> 'B' THEN
173372 IF NVL(p_source_97,9E125) =  2
173373  THEN 
173374 
173375    --
173376    XLA_AE_LINES_PKG.SetNewLine;
173377 
173378    p_balance_type_code          := l_balance_type_code;
173379    -- set the flag so later we will know whether the gain loss line needs to be created
173380    
173381    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
173382      p_actual_flag :='A';
173383    END IF;
173384 
173385    --
173386    -- bulk performance
173387    --
173388    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
173389                                       p_header_num   => 0); -- 4262811
173390    --
173391    -- set accounting line options
173392    --
173393    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
173394            p_natural_side_code          => 'D'
173395          , p_gain_or_loss_flag          => 'N'
173396          , p_gl_transfer_mode_code      => 'S'
173397          , p_acct_entry_type_code       => 'A'
173398          , p_switch_side_flag           => 'Y'
173399          , p_merge_duplicate_code       => 'N'
173400          );
173401    --
173402    l_acc_rev_natural_side_code := 'C';  -- 4262811
173403    -- 
173404    --
173405    -- set accounting line type info
173406    --
173407    xla_ae_lines_pkg.SetAcctLineType
173408       (p_component_type             => l_component_type
173409       ,p_event_type_code            => l_event_type_code
173410       ,p_line_definition_owner_code => l_line_definition_owner_code
173411       ,p_line_definition_code       => l_line_definition_code
173412       ,p_accounting_line_code       => l_component_code
173413       ,p_accounting_line_type_code  => l_component_type_code
173414       ,p_accounting_line_appl_id    => l_component_appl_id
173415       ,p_amb_context_code           => l_amb_context_code
173416       ,p_entity_code                => l_entity_code
173417       ,p_event_class_code           => l_event_class_code);
173418    --
173419    -- set accounting class
173420    --
173421    xla_ae_lines_pkg.SetAcctClass(
173422            p_accounting_class_code  => 'OFFSET'
173423          , p_ae_header_id           => l_ae_header_id
173424          );
173425 
173426    --
173427    -- set rounding class
173428    --
173429    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
173430                       'OFFSET';
173431 
173432    --
173433    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
173434    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
173435    --
173436    -- bulk performance
173437    --
173438    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
173439 
173440    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
173441       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
173442 
173443    -- 4955764
173444    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
173445       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
173446 
173447    -- 4458381 Public Sector Enh
173448    
173449    --
173450    -- set accounting attributes for the line type
173451    --
173452    l_entered_amt_idx := 3;
173453    l_accted_amt_idx  := 8;
173454    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
173455    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
173456    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
173457    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
173458    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
173459    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
173460    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
173461    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
173462    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
173463    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
173464    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
173465    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
173466    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
173467    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
173468    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
173469    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
173470    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
173471 
173472    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
173473    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
173474 
173475    ---------------------------------------------------------------------------------------------------------------
173476    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
173477    ---------------------------------------------------------------------------------------------------------------
173478    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
173479 
173480    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
173481    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
173482 
173483    IF xla_accounting_cache_pkg.GetValueChar
173484          (p_source_code         => 'LEDGER_CATEGORY_CODE'
173485          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
173486    AND l_bflow_method_code = 'PRIOR_ENTRY'
173487 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
173488    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
173489          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
173490        )
173491    THEN
173492          xla_ae_lines_pkg.BflowUpgEntry
173493            (p_business_method_code    => l_bflow_method_code
173494            ,p_business_class_code     => l_bflow_class_code
173495            ,p_balance_type            => l_balance_type_code);
173496    ELSE
173497       NULL;
173498 -- No business flow processing for business flow method of NONE.
173499    END IF;
173500 
173501    --
173502    -- call analytical criteria
173503    --
173504    
173505    --
173506    -- call description
173507    --
173508    
173509 xla_ae_lines_pkg.SetLineDescription(
173510    p_ae_header_id => l_ae_header_id
173511   ,p_description  => Description_1 (
173512      p_application_id         => p_application_id
173513    , p_ae_header_id           => l_ae_header_id 
173514 , p_source_1 => p_source_1
173515 , p_source_2 => p_source_2
173516 , p_source_3 => p_source_3
173517 , p_source_4 => p_source_4
173518 , p_source_5 => p_source_5
173519    )
173520 );
173521 
173522 
173523    --
173524    -- call ADRs
173525    -- Bug 4922099
173526    --
173527    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
173528         (NVL(l_actual_upg_option, 'N') = 'O') OR
173529         (NVL(l_enc_upg_option, 'N') = 'O')
173530       )
173531    THEN
173532    NULL;
173533    --
173534    --
173535    
173536   l_ccid := AcctDerRule_16(
173537            p_application_id           => p_application_id
173538          , p_ae_header_id             => l_ae_header_id 
173539 , p_source_20 => p_source_20
173540          , x_transaction_coa_id       => l_adr_transaction_coa_id
173541          , x_accounting_coa_id        => l_adr_accounting_coa_id
173542          , x_value_type_code          => l_adr_value_type_code
173543          , p_side                     => 'NA'
173544    );
173545 
173546    xla_ae_lines_pkg.set_ccid(
173547     p_code_combination_id          => l_ccid
173548   , p_value_type_code              => l_adr_value_type_code
173549   , p_transaction_coa_id           => l_adr_transaction_coa_id
173550   , p_accounting_coa_id            => l_adr_accounting_coa_id
173551   , p_adr_code                     => 'PI_DISTRIBUTION'
173552   , p_adr_type_code                => 'S'
173553   , p_component_type               => l_component_type
173554   , p_component_code               => l_component_code
173555   , p_component_type_code          => l_component_type_code
173556   , p_component_appl_id            => l_component_appl_id
173557   , p_amb_context_code             => l_amb_context_code
173558   , p_side                         => 'NA'
173559   );
173560 
173561 
173562    --
173563    --
173564    END IF;
173565    --
173566    -- Bug 4922099
173567    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
173568           (NVL(l_enc_upg_option, 'N') = 'O')
173569         ) AND
173570         (l_bflow_method_code = 'PRIOR_ENTRY')
173571       )
173572    THEN
173573       IF
173574       --
173575       1 = 2
173576       --
173577       THEN
173578       xla_accounting_err_pkg.build_message
173579                                     (p_appli_s_name            => 'XLA'
173580                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
173581                                     ,p_token_1                 => 'LINE_NUMBER'
173582                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
173583                                     ,p_token_2                 => 'LINE_TYPE_NAME'
173584                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
173585                                                                              l_component_type
173586                                                                             ,l_component_code
173587                                                                             ,l_component_type_code
173588                                                                             ,l_component_appl_id
173589                                                                             ,l_amb_context_code
173590                                                                             ,l_entity_code
173591                                                                             ,l_event_class_code
173592                                                                            )
173593                                     ,p_token_3                 => 'OWNER'
173594                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
173595                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
173596                                                                           ,p_lookup_code    => l_component_type_code
173597                                                                          )
173598                                     ,p_token_4                 => 'PRODUCT_NAME'
173599                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
173600                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
173601                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
173602                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
173603                                     ,p_ae_header_id            =>  NULL
173604                                        );
173605 
173606         IF (C_LEVEL_ERROR>= g_log_level) THEN
173607                  trace
173608                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
173609                       ,p_level    => C_LEVEL_ERROR
173610                       ,p_module   => l_log_module);
173611         END IF;
173612       END IF;
173613    END IF;
173614    --
173615    --
173616    ------------------------------------------------------------------------------------------------
173617    -- 4219869 Business Flow
173618    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
173619    -- Prior Entry.  Currently, the following code is always generated.
173620    ------------------------------------------------------------------------------------------------
173621    XLA_AE_LINES_PKG.ValidateCurrentLine;
173622 
173623    ------------------------------------------------------------------------------------
173624    -- 4219869 Business Flow
173625    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
173626    ------------------------------------------------------------------------------------
173627    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
173628 
173629    ----------------------------------------------------------------------------------
173630    -- 4219869 Business Flow
173631    -- Update journal entry status -- Need to generate this within IF <condition>
173632    ----------------------------------------------------------------------------------
173633    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
173634          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
173635          ,p_balance_type_code => l_balance_type_code
173636          );
173637 
173638    -------------------------------------------------------------------------------------------
173639    -- 4262811 - Generate the Accrual Reversal lines
173640    -------------------------------------------------------------------------------------------
173641    BEGIN
173642       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
173643                               (g_array_event(p_event_id).array_value_num('header_index'));
173644       IF l_acc_rev_flag IS NULL THEN
173645          l_acc_rev_flag := 'N';
173646       END IF;
173647    EXCEPTION
173648       WHEN OTHERS THEN
173649          l_acc_rev_flag := 'N';
173650    END;
173651    --
173652    IF (l_acc_rev_flag = 'Y') THEN
173653 
173654        -- 4645092  ------------------------------------------------------------------------------
173655        -- To allow MPA report to determine if it should generate report process
173656        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
173657        ------------------------------------------------------------------------------------------
173658 
173659        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
173660        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
173661    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
173662    -- call ADRs
173663    -- Bug 4922099
173664    --
173665    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
173666         (NVL(l_actual_upg_option, 'N') = 'O') OR
173667         (NVL(l_enc_upg_option, 'N') = 'O')
173668       )
173669    THEN
173670    NULL;
173671    --
173672    --
173673    
173674   l_ccid := AcctDerRule_16(
173675            p_application_id           => p_application_id
173676          , p_ae_header_id             => l_ae_header_id 
173677 , p_source_20 => p_source_20
173678          , x_transaction_coa_id       => l_adr_transaction_coa_id
173679          , x_accounting_coa_id        => l_adr_accounting_coa_id
173680          , x_value_type_code          => l_adr_value_type_code
173681          , p_side                     => 'NA'
173682    );
173683 
173684    xla_ae_lines_pkg.set_ccid(
173685     p_code_combination_id          => l_ccid
173686   , p_value_type_code              => l_adr_value_type_code
173687   , p_transaction_coa_id           => l_adr_transaction_coa_id
173688   , p_accounting_coa_id            => l_adr_accounting_coa_id
173689   , p_adr_code                     => 'PI_DISTRIBUTION'
173690   , p_adr_type_code                => 'S'
173691   , p_component_type               => l_component_type
173692   , p_component_code               => l_component_code
173693   , p_component_type_code          => l_component_type_code
173694   , p_component_appl_id            => l_component_appl_id
173695   , p_amb_context_code             => l_amb_context_code
173696   , p_side                         => 'NA'
173697   );
173698 
173699 
173700    --
173701    --
173702    END IF;
173703 
173704        --
173705        -- Update the line information that should be overwritten
173706        --
173707        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
173708                                          p_header_num   => 1);
173709        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
173710 
173711        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
173712 
173713        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
173714           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
173715        END IF;
173716 
173717       --
173718       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
173719       --
173720       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
173721           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
173722       ELSE
173723           ---------------------------------------------------------------------------------------------------
173724           -- 4262811a Switch Sign
173725           ---------------------------------------------------------------------------------------------------
173726           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
173727           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
173728                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
173729           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
173730                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
173731           -- 5132302
173732           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
173733                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
173734 
173735       END IF;
173736 
173737       -- 4955764
173738       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
173739       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
173740 
173741 
173742       XLA_AE_LINES_PKG.ValidateCurrentLine;
173743       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
173744 
173745       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
173746                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
173747                ,p_balance_type_code => l_balance_type_code);
173748 
173749    END IF;
173750 
173751    -----------------------------------------------------------------------------------------
173752    -- 4262811 Multiperiod Accounting
173753    -----------------------------------------------------------------------------------------
173754      -- No MPA option is assigned.
173755 
173756 
173757 END IF;
173758 END IF;
173759 --
173760 
173761 --
173762 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173763    trace
173764       (p_msg      => 'END of AcctLineType_320'
173765       ,p_level    => C_LEVEL_PROCEDURE
173766       ,p_module   => l_log_module);
173767 END IF;
173768 --
173769 EXCEPTION
173770   WHEN xla_exceptions_pkg.application_exception THEN
173771       RAISE;
173772   WHEN OTHERS THEN
173773        xla_exceptions_pkg.raise_message
173774            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_320');
173775 END AcctLineType_320;
173776 --
173777 
173778 ---------------------------------------
173779 --
173780 -- PRIVATE FUNCTION
173781 --         AcctLineType_321
173782 --
173783 ---------------------------------------
173784 PROCEDURE AcctLineType_321 (
173785   p_application_id        IN NUMBER
173786  ,p_event_id              IN NUMBER
173787  ,p_calculate_acctd_flag  IN VARCHAR2
173788  ,p_calculate_g_l_flag    IN VARCHAR2
173789  ,p_actual_flag           IN OUT VARCHAR2
173790  ,p_balance_type_code     OUT VARCHAR2
173791  ,p_gain_or_loss_ref      OUT VARCHAR2
173792  
173793 --TRANSACTION_ID
173794  , p_source_1            IN NUMBER
173795 --Item Concatenated Segments
173796  , p_source_2            IN VARCHAR2
173797 --Transaction Quantity
173798  , p_source_3            IN NUMBER
173799 --Transaction Unit of Measure Code
173800  , p_source_4            IN VARCHAR2
173801 --Inventory Transaction Type Description
173802  , p_source_5            IN VARCHAR2
173803 --Cost Management Default Account
173804  , p_source_11            IN NUMBER
173805 --DISTRIBUTION_IDENTIFIER
173806  , p_source_84            IN NUMBER
173807 --Distribution Type
173808  , p_source_85            IN VARCHAR2
173809  , p_source_85_meaning    IN VARCHAR2
173810 --Entered Currency Code
173811  , p_source_88            IN VARCHAR2
173812 --Entered Amount
173813  , p_source_91            IN NUMBER
173814 --Currency Conversion Date
173815  , p_source_92            IN DATE
173816 --Currency Conversion Rate
173817  , p_source_93            IN NUMBER
173818 --Currency Conversion Type
173819  , p_source_94            IN VARCHAR2
173820 --Accounted Amount
173821  , p_source_95            IN NUMBER
173822 --Accounting Line Type
173823  , p_source_97            IN NUMBER
173824 )
173825 IS
173826 
173827 l_component_type              VARCHAR2(80);
173828 l_component_code              VARCHAR2(30);
173829 l_component_type_code         VARCHAR2(1);
173830 l_component_appl_id           INTEGER;
173831 l_amb_context_code            VARCHAR2(30);
173832 l_entity_code                 VARCHAR2(30);
173833 l_event_class_code            VARCHAR2(30);
173834 l_ae_header_id                NUMBER;
173835 l_event_type_code             VARCHAR2(30);
173836 l_line_definition_code        VARCHAR2(30);
173837 l_line_definition_owner_code  VARCHAR2(1);
173838 --
173839 -- adr variables
173840 l_segment                     VARCHAR2(30);
173841 l_ccid                        NUMBER;
173842 l_adr_transaction_coa_id      NUMBER;
173843 l_adr_accounting_coa_id       NUMBER;
173844 l_adr_flexfield_segment_code  VARCHAR2(30);
173845 l_adr_flex_value_set_id       NUMBER;
173846 l_adr_value_type_code         VARCHAR2(30);
173847 l_adr_value_combination_id    NUMBER;
173848 l_adr_value_segment_code      VARCHAR2(30);
173849 
173850 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
173851 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
173852 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
173853 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
173854 
173855 -- 4262811 Variables ------------------------------------------------------------------------------------------
173856 l_entered_amt_idx             NUMBER;
173857 l_accted_amt_idx              NUMBER;
173858 l_acc_rev_flag                VARCHAR2(1);
173859 l_accrual_line_num            NUMBER;
173860 l_tmp_amt                     NUMBER;
173861 l_acc_rev_natural_side_code   VARCHAR2(1);
173862 
173863 l_num_entries                 NUMBER;
173864 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
173865 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
173866 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
173867 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
173868 l_recog_line_1                NUMBER;
173869 l_recog_line_2                NUMBER;
173870 
173871 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
173872 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
173873 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
173874 
173875 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
173876 
173877 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
173878 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
173879 
173880 ---------------------------------------------------------------------------------------------------------------
173881 
173882 
173883 --
173884 -- bulk performance
173885 --
173886 l_balance_type_code           VARCHAR2(1);
173887 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
173888 l_log_module                  VARCHAR2(240);
173889 
173890 --
173891 -- Upgrade strategy
173892 --
173893 l_actual_upg_option           VARCHAR2(1);
173894 l_enc_upg_option           VARCHAR2(1);
173895 
173896 --
173897 BEGIN
173898 --
173899 IF g_log_enabled THEN
173900       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_321';
173901 END IF;
173902 --
173903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173904 
173905       trace
173906          (p_msg      => 'BEGIN of AcctLineType_321'
173907          ,p_level    => C_LEVEL_PROCEDURE
173908          ,p_module   => l_log_module);
173909 
173910 END IF;
173911 --
173912 l_component_type             := 'AMB_JLT';
173913 l_component_code             := 'OFFSET';
173914 l_component_type_code        := 'S';
173915 l_component_appl_id          :=  707;
173916 l_amb_context_code           := 'DEFAULT';
173917 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
173918 l_event_class_code           := 'WIP_MTL';
173919 l_event_type_code            := 'WIP_NEG_COMP_RETURN';
173920 l_line_definition_owner_code := 'S';
173921 l_line_definition_code       := 'PI_WIP_NEG_COMP_RETURN';
173922 --
173923 l_balance_type_code          := 'A';
173924 l_segment                     := NULL;
173925 l_ccid                        := NULL;
173926 l_adr_transaction_coa_id      := NULL;
173927 l_adr_accounting_coa_id       := NULL;
173928 l_adr_flexfield_segment_code  := NULL;
173929 l_adr_flex_value_set_id       := NULL;
173930 l_adr_value_type_code         := NULL;
173931 l_adr_value_combination_id    := NULL;
173932 l_adr_value_segment_code      := NULL;
173933 
173934 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
173935 l_bflow_class_code           := '';    -- 4219869 Business Flow
173936 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
173937 l_budgetary_control_flag     := 'N';
173938 
173939 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
173940 l_bflow_applied_to_amt       := NULL; -- 5132302
173941 l_entered_amt_idx            := NULL;          -- 4262811
173942 l_accted_amt_idx             := NULL;          -- 4262811
173943 l_acc_rev_flag               := NULL;          -- 4262811
173944 l_accrual_line_num           := NULL;          -- 4262811
173945 l_tmp_amt                    := NULL;          -- 4262811
173946 --
173947  
173948 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
173949     l_balance_type_code <> 'B' THEN
173950 IF NVL(p_source_97,9E125) =  2
173951  THEN 
173952 
173953    --
173954    XLA_AE_LINES_PKG.SetNewLine;
173955 
173956    p_balance_type_code          := l_balance_type_code;
173957    -- set the flag so later we will know whether the gain loss line needs to be created
173958    
173959    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
173960      p_actual_flag :='A';
173961    END IF;
173962 
173963    --
173964    -- bulk performance
173965    --
173966    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
173967                                       p_header_num   => 0); -- 4262811
173968    --
173969    -- set accounting line options
173970    --
173971    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
173972            p_natural_side_code          => 'D'
173973          , p_gain_or_loss_flag          => 'N'
173974          , p_gl_transfer_mode_code      => 'S'
173975          , p_acct_entry_type_code       => 'A'
173976          , p_switch_side_flag           => 'Y'
173977          , p_merge_duplicate_code       => 'N'
173978          );
173979    --
173980    l_acc_rev_natural_side_code := 'C';  -- 4262811
173981    -- 
173982    --
173983    -- set accounting line type info
173984    --
173985    xla_ae_lines_pkg.SetAcctLineType
173986       (p_component_type             => l_component_type
173987       ,p_event_type_code            => l_event_type_code
173988       ,p_line_definition_owner_code => l_line_definition_owner_code
173989       ,p_line_definition_code       => l_line_definition_code
173990       ,p_accounting_line_code       => l_component_code
173991       ,p_accounting_line_type_code  => l_component_type_code
173992       ,p_accounting_line_appl_id    => l_component_appl_id
173993       ,p_amb_context_code           => l_amb_context_code
173994       ,p_entity_code                => l_entity_code
173995       ,p_event_class_code           => l_event_class_code);
173996    --
173997    -- set accounting class
173998    --
173999    xla_ae_lines_pkg.SetAcctClass(
174000            p_accounting_class_code  => 'OFFSET'
174001          , p_ae_header_id           => l_ae_header_id
174002          );
174003 
174004    --
174005    -- set rounding class
174006    --
174007    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
174008                       'OFFSET';
174009 
174010    --
174011    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
174012    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
174013    --
174014    -- bulk performance
174015    --
174016    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
174017 
174018    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
174019       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
174020 
174021    -- 4955764
174022    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
174023       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
174024 
174025    -- 4458381 Public Sector Enh
174026    
174027    --
174028    -- set accounting attributes for the line type
174029    --
174030    l_entered_amt_idx := 3;
174031    l_accted_amt_idx  := 8;
174032    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
174033    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
174034    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
174035    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
174036    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
174037    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
174038    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
174039    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
174040    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
174041    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
174042    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
174043    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
174044    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
174045    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
174046    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
174047    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
174048    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
174049 
174050    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
174051    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
174052 
174053    ---------------------------------------------------------------------------------------------------------------
174054    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
174055    ---------------------------------------------------------------------------------------------------------------
174056    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
174057 
174058    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
174059    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
174060 
174061    IF xla_accounting_cache_pkg.GetValueChar
174062          (p_source_code         => 'LEDGER_CATEGORY_CODE'
174063          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
174064    AND l_bflow_method_code = 'PRIOR_ENTRY'
174065 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
174066    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
174067          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
174068        )
174069    THEN
174070          xla_ae_lines_pkg.BflowUpgEntry
174071            (p_business_method_code    => l_bflow_method_code
174072            ,p_business_class_code     => l_bflow_class_code
174073            ,p_balance_type            => l_balance_type_code);
174074    ELSE
174075       NULL;
174076 -- No business flow processing for business flow method of NONE.
174077    END IF;
174078 
174079    --
174080    -- call analytical criteria
174081    --
174082    
174083    --
174084    -- call description
174085    --
174086    
174087 xla_ae_lines_pkg.SetLineDescription(
174088    p_ae_header_id => l_ae_header_id
174089   ,p_description  => Description_1 (
174090      p_application_id         => p_application_id
174091    , p_ae_header_id           => l_ae_header_id 
174092 , p_source_1 => p_source_1
174093 , p_source_2 => p_source_2
174094 , p_source_3 => p_source_3
174095 , p_source_4 => p_source_4
174096 , p_source_5 => p_source_5
174097    )
174098 );
174099 
174100 
174101    --
174102    -- call ADRs
174103    -- Bug 4922099
174104    --
174105    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
174106         (NVL(l_actual_upg_option, 'N') = 'O') OR
174107         (NVL(l_enc_upg_option, 'N') = 'O')
174108       )
174109    THEN
174110    NULL;
174111    --
174112    --
174113    
174114   l_ccid := AcctDerRule_6(
174115            p_application_id           => p_application_id
174116          , p_ae_header_id             => l_ae_header_id 
174117 , p_source_11 => p_source_11
174118          , x_transaction_coa_id       => l_adr_transaction_coa_id
174119          , x_accounting_coa_id        => l_adr_accounting_coa_id
174120          , x_value_type_code          => l_adr_value_type_code
174121          , p_side                     => 'NA'
174122    );
174123 
174124    xla_ae_lines_pkg.set_ccid(
174125     p_code_combination_id          => l_ccid
174126   , p_value_type_code              => l_adr_value_type_code
174127   , p_transaction_coa_id           => l_adr_transaction_coa_id
174128   , p_accounting_coa_id            => l_adr_accounting_coa_id
174129   , p_adr_code                     => 'CST_DEFAULT'
174130   , p_adr_type_code                => 'S'
174131   , p_component_type               => l_component_type
174132   , p_component_code               => l_component_code
174133   , p_component_type_code          => l_component_type_code
174134   , p_component_appl_id            => l_component_appl_id
174135   , p_amb_context_code             => l_amb_context_code
174136   , p_side                         => 'NA'
174137   );
174138 
174139 
174140    --
174141    --
174142    END IF;
174143    --
174144    -- Bug 4922099
174145    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
174146           (NVL(l_enc_upg_option, 'N') = 'O')
174147         ) AND
174148         (l_bflow_method_code = 'PRIOR_ENTRY')
174149       )
174150    THEN
174151       IF
174152       --
174153       1 = 2
174154       --
174155       THEN
174156       xla_accounting_err_pkg.build_message
174157                                     (p_appli_s_name            => 'XLA'
174158                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
174159                                     ,p_token_1                 => 'LINE_NUMBER'
174160                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
174161                                     ,p_token_2                 => 'LINE_TYPE_NAME'
174162                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
174163                                                                              l_component_type
174164                                                                             ,l_component_code
174165                                                                             ,l_component_type_code
174166                                                                             ,l_component_appl_id
174167                                                                             ,l_amb_context_code
174168                                                                             ,l_entity_code
174169                                                                             ,l_event_class_code
174170                                                                            )
174171                                     ,p_token_3                 => 'OWNER'
174172                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
174173                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
174174                                                                           ,p_lookup_code    => l_component_type_code
174175                                                                          )
174176                                     ,p_token_4                 => 'PRODUCT_NAME'
174177                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
174178                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
174179                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
174180                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
174181                                     ,p_ae_header_id            =>  NULL
174182                                        );
174183 
174184         IF (C_LEVEL_ERROR>= g_log_level) THEN
174185                  trace
174186                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
174187                       ,p_level    => C_LEVEL_ERROR
174188                       ,p_module   => l_log_module);
174189         END IF;
174190       END IF;
174191    END IF;
174192    --
174193    --
174194    ------------------------------------------------------------------------------------------------
174195    -- 4219869 Business Flow
174196    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
174197    -- Prior Entry.  Currently, the following code is always generated.
174198    ------------------------------------------------------------------------------------------------
174199    XLA_AE_LINES_PKG.ValidateCurrentLine;
174200 
174201    ------------------------------------------------------------------------------------
174202    -- 4219869 Business Flow
174203    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
174204    ------------------------------------------------------------------------------------
174205    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
174206 
174207    ----------------------------------------------------------------------------------
174208    -- 4219869 Business Flow
174209    -- Update journal entry status -- Need to generate this within IF <condition>
174210    ----------------------------------------------------------------------------------
174211    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
174212          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
174213          ,p_balance_type_code => l_balance_type_code
174214          );
174215 
174216    -------------------------------------------------------------------------------------------
174217    -- 4262811 - Generate the Accrual Reversal lines
174218    -------------------------------------------------------------------------------------------
174219    BEGIN
174220       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
174221                               (g_array_event(p_event_id).array_value_num('header_index'));
174222       IF l_acc_rev_flag IS NULL THEN
174223          l_acc_rev_flag := 'N';
174224       END IF;
174225    EXCEPTION
174226       WHEN OTHERS THEN
174227          l_acc_rev_flag := 'N';
174228    END;
174229    --
174230    IF (l_acc_rev_flag = 'Y') THEN
174231 
174232        -- 4645092  ------------------------------------------------------------------------------
174233        -- To allow MPA report to determine if it should generate report process
174234        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
174235        ------------------------------------------------------------------------------------------
174236 
174237        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
174238        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
174239    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
174240    -- call ADRs
174241    -- Bug 4922099
174242    --
174243    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
174244         (NVL(l_actual_upg_option, 'N') = 'O') OR
174245         (NVL(l_enc_upg_option, 'N') = 'O')
174246       )
174247    THEN
174248    NULL;
174249    --
174250    --
174251    
174252   l_ccid := AcctDerRule_6(
174253            p_application_id           => p_application_id
174254          , p_ae_header_id             => l_ae_header_id 
174255 , p_source_11 => p_source_11
174256          , x_transaction_coa_id       => l_adr_transaction_coa_id
174257          , x_accounting_coa_id        => l_adr_accounting_coa_id
174258          , x_value_type_code          => l_adr_value_type_code
174259          , p_side                     => 'NA'
174260    );
174261 
174262    xla_ae_lines_pkg.set_ccid(
174263     p_code_combination_id          => l_ccid
174264   , p_value_type_code              => l_adr_value_type_code
174265   , p_transaction_coa_id           => l_adr_transaction_coa_id
174266   , p_accounting_coa_id            => l_adr_accounting_coa_id
174267   , p_adr_code                     => 'CST_DEFAULT'
174268   , p_adr_type_code                => 'S'
174269   , p_component_type               => l_component_type
174270   , p_component_code               => l_component_code
174271   , p_component_type_code          => l_component_type_code
174272   , p_component_appl_id            => l_component_appl_id
174273   , p_amb_context_code             => l_amb_context_code
174274   , p_side                         => 'NA'
174275   );
174276 
174277 
174278    --
174279    --
174280    END IF;
174281 
174282        --
174283        -- Update the line information that should be overwritten
174284        --
174285        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
174286                                          p_header_num   => 1);
174287        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
174288 
174289        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
174290 
174291        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
174292           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
174293        END IF;
174294 
174295       --
174296       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
174297       --
174298       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
174299           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
174300       ELSE
174301           ---------------------------------------------------------------------------------------------------
174302           -- 4262811a Switch Sign
174303           ---------------------------------------------------------------------------------------------------
174304           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
174305           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
174306                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
174307           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
174308                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
174309           -- 5132302
174310           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
174311                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
174312 
174313       END IF;
174314 
174315       -- 4955764
174316       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
174317       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
174318 
174319 
174320       XLA_AE_LINES_PKG.ValidateCurrentLine;
174321       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
174322 
174323       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
174324                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
174325                ,p_balance_type_code => l_balance_type_code);
174326 
174327    END IF;
174328 
174329    -----------------------------------------------------------------------------------------
174330    -- 4262811 Multiperiod Accounting
174331    -----------------------------------------------------------------------------------------
174332      -- No MPA option is assigned.
174333 
174334 
174335 END IF;
174336 END IF;
174337 --
174338 
174339 --
174340 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174341    trace
174342       (p_msg      => 'END of AcctLineType_321'
174343       ,p_level    => C_LEVEL_PROCEDURE
174344       ,p_module   => l_log_module);
174345 END IF;
174346 --
174347 EXCEPTION
174348   WHEN xla_exceptions_pkg.application_exception THEN
174349       RAISE;
174350   WHEN OTHERS THEN
174351        xla_exceptions_pkg.raise_message
174352            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_321');
174353 END AcctLineType_321;
174354 --
174355 
174356 ---------------------------------------
174357 --
174358 -- PRIVATE FUNCTION
174359 --         AcctLineType_322
174360 --
174361 ---------------------------------------
174362 PROCEDURE AcctLineType_322 (
174363   p_application_id        IN NUMBER
174364  ,p_event_id              IN NUMBER
174365  ,p_calculate_acctd_flag  IN VARCHAR2
174366  ,p_calculate_g_l_flag    IN VARCHAR2
174367  ,p_actual_flag           IN OUT VARCHAR2
174368  ,p_balance_type_code     OUT VARCHAR2
174369  ,p_gain_or_loss_ref      OUT VARCHAR2
174370  
174371 --TRANSACTION_ID
174372  , p_source_1            IN NUMBER
174373 --Item Concatenated Segments
174374  , p_source_2            IN VARCHAR2
174375 --Transaction Quantity
174376  , p_source_3            IN NUMBER
174377 --Transaction Unit of Measure Code
174378  , p_source_4            IN VARCHAR2
174379 --Inventory Transaction Type Description
174380  , p_source_5            IN VARCHAR2
174381 --Cost Management Default Account
174382  , p_source_11            IN NUMBER
174383 --DISTRIBUTION_IDENTIFIER
174384  , p_source_84            IN NUMBER
174385 --Distribution Type
174386  , p_source_85            IN VARCHAR2
174387  , p_source_85_meaning    IN VARCHAR2
174388 --Entered Currency Code
174389  , p_source_88            IN VARCHAR2
174390 --Entered Amount
174391  , p_source_91            IN NUMBER
174392 --Currency Conversion Date
174393  , p_source_92            IN DATE
174394 --Currency Conversion Rate
174395  , p_source_93            IN NUMBER
174396 --Currency Conversion Type
174397  , p_source_94            IN VARCHAR2
174398 --Accounted Amount
174399  , p_source_95            IN NUMBER
174400 --Accounting Line Type
174401  , p_source_97            IN NUMBER
174402 )
174403 IS
174404 
174405 l_component_type              VARCHAR2(80);
174406 l_component_code              VARCHAR2(30);
174407 l_component_type_code         VARCHAR2(1);
174408 l_component_appl_id           INTEGER;
174409 l_amb_context_code            VARCHAR2(30);
174410 l_entity_code                 VARCHAR2(30);
174411 l_event_class_code            VARCHAR2(30);
174412 l_ae_header_id                NUMBER;
174413 l_event_type_code             VARCHAR2(30);
174414 l_line_definition_code        VARCHAR2(30);
174415 l_line_definition_owner_code  VARCHAR2(1);
174416 --
174417 -- adr variables
174418 l_segment                     VARCHAR2(30);
174419 l_ccid                        NUMBER;
174420 l_adr_transaction_coa_id      NUMBER;
174421 l_adr_accounting_coa_id       NUMBER;
174422 l_adr_flexfield_segment_code  VARCHAR2(30);
174423 l_adr_flex_value_set_id       NUMBER;
174424 l_adr_value_type_code         VARCHAR2(30);
174425 l_adr_value_combination_id    NUMBER;
174426 l_adr_value_segment_code      VARCHAR2(30);
174427 
174428 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
174429 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
174430 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
174431 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
174432 
174433 -- 4262811 Variables ------------------------------------------------------------------------------------------
174434 l_entered_amt_idx             NUMBER;
174435 l_accted_amt_idx              NUMBER;
174436 l_acc_rev_flag                VARCHAR2(1);
174437 l_accrual_line_num            NUMBER;
174438 l_tmp_amt                     NUMBER;
174439 l_acc_rev_natural_side_code   VARCHAR2(1);
174440 
174441 l_num_entries                 NUMBER;
174442 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
174443 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
174444 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
174445 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
174446 l_recog_line_1                NUMBER;
174447 l_recog_line_2                NUMBER;
174448 
174449 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
174450 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
174451 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
174452 
174453 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
174454 
174455 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
174456 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
174457 
174458 ---------------------------------------------------------------------------------------------------------------
174459 
174460 
174461 --
174462 -- bulk performance
174463 --
174464 l_balance_type_code           VARCHAR2(1);
174465 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
174466 l_log_module                  VARCHAR2(240);
174467 
174468 --
174469 -- Upgrade strategy
174470 --
174471 l_actual_upg_option           VARCHAR2(1);
174472 l_enc_upg_option           VARCHAR2(1);
174473 
174474 --
174475 BEGIN
174476 --
174477 IF g_log_enabled THEN
174478       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_322';
174479 END IF;
174480 --
174481 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174482 
174483       trace
174484          (p_msg      => 'BEGIN of AcctLineType_322'
174485          ,p_level    => C_LEVEL_PROCEDURE
174486          ,p_module   => l_log_module);
174487 
174488 END IF;
174489 --
174490 l_component_type             := 'AMB_JLT';
174491 l_component_code             := 'OFFSET';
174492 l_component_type_code        := 'S';
174493 l_component_appl_id          :=  707;
174494 l_amb_context_code           := 'DEFAULT';
174495 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
174496 l_event_class_code           := 'WIP_MTL';
174497 l_event_type_code            := 'WIP_NEG_COMP_ISSUE';
174498 l_line_definition_owner_code := 'S';
174499 l_line_definition_code       := 'PI_WIP_NEG_COMP_ISSUE';
174500 --
174501 l_balance_type_code          := 'A';
174502 l_segment                     := NULL;
174503 l_ccid                        := NULL;
174504 l_adr_transaction_coa_id      := NULL;
174505 l_adr_accounting_coa_id       := NULL;
174506 l_adr_flexfield_segment_code  := NULL;
174507 l_adr_flex_value_set_id       := NULL;
174508 l_adr_value_type_code         := NULL;
174509 l_adr_value_combination_id    := NULL;
174510 l_adr_value_segment_code      := NULL;
174511 
174512 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
174513 l_bflow_class_code           := '';    -- 4219869 Business Flow
174514 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
174515 l_budgetary_control_flag     := 'N';
174516 
174517 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
174518 l_bflow_applied_to_amt       := NULL; -- 5132302
174519 l_entered_amt_idx            := NULL;          -- 4262811
174520 l_accted_amt_idx             := NULL;          -- 4262811
174521 l_acc_rev_flag               := NULL;          -- 4262811
174522 l_accrual_line_num           := NULL;          -- 4262811
174523 l_tmp_amt                    := NULL;          -- 4262811
174524 --
174525  
174526 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
174527     l_balance_type_code <> 'B' THEN
174528 IF NVL(p_source_97,9E125) =  2
174529  THEN 
174530 
174531    --
174532    XLA_AE_LINES_PKG.SetNewLine;
174533 
174534    p_balance_type_code          := l_balance_type_code;
174535    -- set the flag so later we will know whether the gain loss line needs to be created
174536    
174537    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
174538      p_actual_flag :='A';
174539    END IF;
174540 
174541    --
174542    -- bulk performance
174543    --
174544    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
174545                                       p_header_num   => 0); -- 4262811
174546    --
174547    -- set accounting line options
174548    --
174549    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
174550            p_natural_side_code          => 'D'
174551          , p_gain_or_loss_flag          => 'N'
174552          , p_gl_transfer_mode_code      => 'S'
174553          , p_acct_entry_type_code       => 'A'
174554          , p_switch_side_flag           => 'Y'
174555          , p_merge_duplicate_code       => 'N'
174556          );
174557    --
174558    l_acc_rev_natural_side_code := 'C';  -- 4262811
174559    -- 
174560    --
174561    -- set accounting line type info
174562    --
174563    xla_ae_lines_pkg.SetAcctLineType
174564       (p_component_type             => l_component_type
174565       ,p_event_type_code            => l_event_type_code
174566       ,p_line_definition_owner_code => l_line_definition_owner_code
174567       ,p_line_definition_code       => l_line_definition_code
174568       ,p_accounting_line_code       => l_component_code
174569       ,p_accounting_line_type_code  => l_component_type_code
174570       ,p_accounting_line_appl_id    => l_component_appl_id
174571       ,p_amb_context_code           => l_amb_context_code
174572       ,p_entity_code                => l_entity_code
174573       ,p_event_class_code           => l_event_class_code);
174574    --
174575    -- set accounting class
174576    --
174577    xla_ae_lines_pkg.SetAcctClass(
174578            p_accounting_class_code  => 'OFFSET'
174579          , p_ae_header_id           => l_ae_header_id
174580          );
174581 
174582    --
174583    -- set rounding class
174584    --
174585    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
174586                       'OFFSET';
174587 
174588    --
174589    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
174590    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
174591    --
174592    -- bulk performance
174593    --
174594    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
174595 
174596    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
174597       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
174598 
174599    -- 4955764
174600    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
174601       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
174602 
174603    -- 4458381 Public Sector Enh
174604    
174605    --
174606    -- set accounting attributes for the line type
174607    --
174608    l_entered_amt_idx := 3;
174609    l_accted_amt_idx  := 8;
174610    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
174611    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
174612    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
174613    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
174614    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
174615    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
174616    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
174617    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
174618    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
174619    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
174620    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
174621    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
174622    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
174623    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
174624    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
174625    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
174626    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
174627 
174628    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
174629    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
174630 
174631    ---------------------------------------------------------------------------------------------------------------
174632    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
174633    ---------------------------------------------------------------------------------------------------------------
174634    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
174635 
174636    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
174637    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
174638 
174639    IF xla_accounting_cache_pkg.GetValueChar
174640          (p_source_code         => 'LEDGER_CATEGORY_CODE'
174641          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
174642    AND l_bflow_method_code = 'PRIOR_ENTRY'
174643 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
174644    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
174645          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
174646        )
174647    THEN
174648          xla_ae_lines_pkg.BflowUpgEntry
174649            (p_business_method_code    => l_bflow_method_code
174650            ,p_business_class_code     => l_bflow_class_code
174651            ,p_balance_type            => l_balance_type_code);
174652    ELSE
174653       NULL;
174654 -- No business flow processing for business flow method of NONE.
174655    END IF;
174656 
174657    --
174658    -- call analytical criteria
174659    --
174660    
174661    --
174662    -- call description
174663    --
174664    
174665 xla_ae_lines_pkg.SetLineDescription(
174666    p_ae_header_id => l_ae_header_id
174667   ,p_description  => Description_1 (
174668      p_application_id         => p_application_id
174669    , p_ae_header_id           => l_ae_header_id 
174670 , p_source_1 => p_source_1
174671 , p_source_2 => p_source_2
174672 , p_source_3 => p_source_3
174673 , p_source_4 => p_source_4
174674 , p_source_5 => p_source_5
174675    )
174676 );
174677 
174678 
174679    --
174680    -- call ADRs
174681    -- Bug 4922099
174682    --
174683    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
174684         (NVL(l_actual_upg_option, 'N') = 'O') OR
174685         (NVL(l_enc_upg_option, 'N') = 'O')
174686       )
174687    THEN
174688    NULL;
174689    --
174690    --
174691    
174692   l_ccid := AcctDerRule_6(
174693            p_application_id           => p_application_id
174694          , p_ae_header_id             => l_ae_header_id 
174695 , p_source_11 => p_source_11
174696          , x_transaction_coa_id       => l_adr_transaction_coa_id
174697          , x_accounting_coa_id        => l_adr_accounting_coa_id
174698          , x_value_type_code          => l_adr_value_type_code
174699          , p_side                     => 'NA'
174700    );
174701 
174702    xla_ae_lines_pkg.set_ccid(
174703     p_code_combination_id          => l_ccid
174704   , p_value_type_code              => l_adr_value_type_code
174705   , p_transaction_coa_id           => l_adr_transaction_coa_id
174706   , p_accounting_coa_id            => l_adr_accounting_coa_id
174707   , p_adr_code                     => 'CST_DEFAULT'
174708   , p_adr_type_code                => 'S'
174709   , p_component_type               => l_component_type
174710   , p_component_code               => l_component_code
174711   , p_component_type_code          => l_component_type_code
174712   , p_component_appl_id            => l_component_appl_id
174713   , p_amb_context_code             => l_amb_context_code
174714   , p_side                         => 'NA'
174715   );
174716 
174717 
174718    --
174719    --
174720    END IF;
174721    --
174722    -- Bug 4922099
174723    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
174724           (NVL(l_enc_upg_option, 'N') = 'O')
174725         ) AND
174726         (l_bflow_method_code = 'PRIOR_ENTRY')
174727       )
174728    THEN
174729       IF
174730       --
174731       1 = 2
174732       --
174733       THEN
174734       xla_accounting_err_pkg.build_message
174735                                     (p_appli_s_name            => 'XLA'
174736                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
174737                                     ,p_token_1                 => 'LINE_NUMBER'
174738                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
174739                                     ,p_token_2                 => 'LINE_TYPE_NAME'
174740                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
174741                                                                              l_component_type
174742                                                                             ,l_component_code
174743                                                                             ,l_component_type_code
174744                                                                             ,l_component_appl_id
174745                                                                             ,l_amb_context_code
174746                                                                             ,l_entity_code
174747                                                                             ,l_event_class_code
174748                                                                            )
174749                                     ,p_token_3                 => 'OWNER'
174750                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
174751                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
174752                                                                           ,p_lookup_code    => l_component_type_code
174753                                                                          )
174754                                     ,p_token_4                 => 'PRODUCT_NAME'
174755                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
174756                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
174757                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
174758                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
174759                                     ,p_ae_header_id            =>  NULL
174760                                        );
174761 
174762         IF (C_LEVEL_ERROR>= g_log_level) THEN
174763                  trace
174764                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
174765                       ,p_level    => C_LEVEL_ERROR
174766                       ,p_module   => l_log_module);
174767         END IF;
174768       END IF;
174769    END IF;
174770    --
174771    --
174772    ------------------------------------------------------------------------------------------------
174773    -- 4219869 Business Flow
174774    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
174775    -- Prior Entry.  Currently, the following code is always generated.
174776    ------------------------------------------------------------------------------------------------
174777    XLA_AE_LINES_PKG.ValidateCurrentLine;
174778 
174779    ------------------------------------------------------------------------------------
174780    -- 4219869 Business Flow
174781    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
174782    ------------------------------------------------------------------------------------
174783    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
174784 
174785    ----------------------------------------------------------------------------------
174786    -- 4219869 Business Flow
174787    -- Update journal entry status -- Need to generate this within IF <condition>
174788    ----------------------------------------------------------------------------------
174789    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
174790          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
174791          ,p_balance_type_code => l_balance_type_code
174792          );
174793 
174794    -------------------------------------------------------------------------------------------
174795    -- 4262811 - Generate the Accrual Reversal lines
174796    -------------------------------------------------------------------------------------------
174797    BEGIN
174798       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
174799                               (g_array_event(p_event_id).array_value_num('header_index'));
174800       IF l_acc_rev_flag IS NULL THEN
174801          l_acc_rev_flag := 'N';
174802       END IF;
174803    EXCEPTION
174804       WHEN OTHERS THEN
174805          l_acc_rev_flag := 'N';
174806    END;
174807    --
174808    IF (l_acc_rev_flag = 'Y') THEN
174809 
174810        -- 4645092  ------------------------------------------------------------------------------
174811        -- To allow MPA report to determine if it should generate report process
174812        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
174813        ------------------------------------------------------------------------------------------
174814 
174815        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
174816        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
174817    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
174818    -- call ADRs
174819    -- Bug 4922099
174820    --
174821    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
174822         (NVL(l_actual_upg_option, 'N') = 'O') OR
174823         (NVL(l_enc_upg_option, 'N') = 'O')
174824       )
174825    THEN
174826    NULL;
174827    --
174828    --
174829    
174830   l_ccid := AcctDerRule_6(
174831            p_application_id           => p_application_id
174832          , p_ae_header_id             => l_ae_header_id 
174833 , p_source_11 => p_source_11
174834          , x_transaction_coa_id       => l_adr_transaction_coa_id
174835          , x_accounting_coa_id        => l_adr_accounting_coa_id
174836          , x_value_type_code          => l_adr_value_type_code
174837          , p_side                     => 'NA'
174838    );
174839 
174840    xla_ae_lines_pkg.set_ccid(
174841     p_code_combination_id          => l_ccid
174842   , p_value_type_code              => l_adr_value_type_code
174843   , p_transaction_coa_id           => l_adr_transaction_coa_id
174844   , p_accounting_coa_id            => l_adr_accounting_coa_id
174845   , p_adr_code                     => 'CST_DEFAULT'
174846   , p_adr_type_code                => 'S'
174847   , p_component_type               => l_component_type
174848   , p_component_code               => l_component_code
174849   , p_component_type_code          => l_component_type_code
174850   , p_component_appl_id            => l_component_appl_id
174851   , p_amb_context_code             => l_amb_context_code
174852   , p_side                         => 'NA'
174853   );
174854 
174855 
174856    --
174857    --
174858    END IF;
174859 
174860        --
174861        -- Update the line information that should be overwritten
174862        --
174863        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
174864                                          p_header_num   => 1);
174865        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
174866 
174867        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
174868 
174869        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
174870           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
174871        END IF;
174872 
174873       --
174874       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
174875       --
174876       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
174877           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
174878       ELSE
174879           ---------------------------------------------------------------------------------------------------
174880           -- 4262811a Switch Sign
174881           ---------------------------------------------------------------------------------------------------
174882           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
174883           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
174884                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
174885           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
174886                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
174887           -- 5132302
174888           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
174889                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
174890 
174891       END IF;
174892 
174893       -- 4955764
174894       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
174895       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
174896 
174897 
174898       XLA_AE_LINES_PKG.ValidateCurrentLine;
174899       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
174900 
174901       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
174902                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
174903                ,p_balance_type_code => l_balance_type_code);
174904 
174905    END IF;
174906 
174907    -----------------------------------------------------------------------------------------
174908    -- 4262811 Multiperiod Accounting
174909    -----------------------------------------------------------------------------------------
174910      -- No MPA option is assigned.
174911 
174912 
174913 END IF;
174914 END IF;
174915 --
174916 
174917 --
174918 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174919    trace
174920       (p_msg      => 'END of AcctLineType_322'
174921       ,p_level    => C_LEVEL_PROCEDURE
174922       ,p_module   => l_log_module);
174923 END IF;
174924 --
174925 EXCEPTION
174926   WHEN xla_exceptions_pkg.application_exception THEN
174927       RAISE;
174928   WHEN OTHERS THEN
174929        xla_exceptions_pkg.raise_message
174930            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_322');
174931 END AcctLineType_322;
174932 --
174933 
174934 ---------------------------------------
174935 --
174936 -- PRIVATE FUNCTION
174937 --         AcctLineType_323
174938 --
174939 ---------------------------------------
174940 PROCEDURE AcctLineType_323 (
174941   p_application_id        IN NUMBER
174942  ,p_event_id              IN NUMBER
174943  ,p_calculate_acctd_flag  IN VARCHAR2
174944  ,p_calculate_g_l_flag    IN VARCHAR2
174945  ,p_actual_flag           IN OUT VARCHAR2
174946  ,p_balance_type_code     OUT VARCHAR2
174947  ,p_gain_or_loss_ref      OUT VARCHAR2
174948  
174949 --TRANSACTION_ID
174950  , p_source_1            IN NUMBER
174951 --Item Concatenated Segments
174952  , p_source_2            IN VARCHAR2
174953 --Transaction Quantity
174954  , p_source_3            IN NUMBER
174955 --Transaction Unit of Measure Code
174956  , p_source_4            IN VARCHAR2
174957 --Inventory Transaction Type Description
174958  , p_source_5            IN VARCHAR2
174959 --Cost Management Default Account
174960  , p_source_11            IN NUMBER
174961 --DISTRIBUTION_IDENTIFIER
174962  , p_source_84            IN NUMBER
174963 --Distribution Type
174964  , p_source_85            IN VARCHAR2
174965  , p_source_85_meaning    IN VARCHAR2
174966 --Entered Currency Code
174967  , p_source_88            IN VARCHAR2
174968 --Entered Amount
174969  , p_source_91            IN NUMBER
174970 --Currency Conversion Date
174971  , p_source_92            IN DATE
174972 --Currency Conversion Rate
174973  , p_source_93            IN NUMBER
174974 --Currency Conversion Type
174975  , p_source_94            IN VARCHAR2
174976 --Accounted Amount
174977  , p_source_95            IN NUMBER
174978 --Accounting Line Type
174979  , p_source_97            IN NUMBER
174980 )
174981 IS
174982 
174983 l_component_type              VARCHAR2(80);
174984 l_component_code              VARCHAR2(30);
174985 l_component_type_code         VARCHAR2(1);
174986 l_component_appl_id           INTEGER;
174987 l_amb_context_code            VARCHAR2(30);
174988 l_entity_code                 VARCHAR2(30);
174989 l_event_class_code            VARCHAR2(30);
174990 l_ae_header_id                NUMBER;
174991 l_event_type_code             VARCHAR2(30);
174992 l_line_definition_code        VARCHAR2(30);
174993 l_line_definition_owner_code  VARCHAR2(1);
174994 --
174995 -- adr variables
174996 l_segment                     VARCHAR2(30);
174997 l_ccid                        NUMBER;
174998 l_adr_transaction_coa_id      NUMBER;
174999 l_adr_accounting_coa_id       NUMBER;
175000 l_adr_flexfield_segment_code  VARCHAR2(30);
175001 l_adr_flex_value_set_id       NUMBER;
175002 l_adr_value_type_code         VARCHAR2(30);
175003 l_adr_value_combination_id    NUMBER;
175004 l_adr_value_segment_code      VARCHAR2(30);
175005 
175006 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
175007 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
175008 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
175009 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
175010 
175011 -- 4262811 Variables ------------------------------------------------------------------------------------------
175012 l_entered_amt_idx             NUMBER;
175013 l_accted_amt_idx              NUMBER;
175014 l_acc_rev_flag                VARCHAR2(1);
175015 l_accrual_line_num            NUMBER;
175016 l_tmp_amt                     NUMBER;
175017 l_acc_rev_natural_side_code   VARCHAR2(1);
175018 
175019 l_num_entries                 NUMBER;
175020 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
175021 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
175022 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
175023 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
175024 l_recog_line_1                NUMBER;
175025 l_recog_line_2                NUMBER;
175026 
175027 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
175028 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
175029 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
175030 
175031 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
175032 
175033 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
175034 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
175035 
175036 ---------------------------------------------------------------------------------------------------------------
175037 
175038 
175039 --
175040 -- bulk performance
175041 --
175042 l_balance_type_code           VARCHAR2(1);
175043 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
175044 l_log_module                  VARCHAR2(240);
175045 
175046 --
175047 -- Upgrade strategy
175048 --
175049 l_actual_upg_option           VARCHAR2(1);
175050 l_enc_upg_option           VARCHAR2(1);
175051 
175052 --
175053 BEGIN
175054 --
175055 IF g_log_enabled THEN
175056       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_323';
175057 END IF;
175058 --
175059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175060 
175061       trace
175062          (p_msg      => 'BEGIN of AcctLineType_323'
175063          ,p_level    => C_LEVEL_PROCEDURE
175064          ,p_module   => l_log_module);
175065 
175066 END IF;
175067 --
175068 l_component_type             := 'AMB_JLT';
175069 l_component_code             := 'OFFSET';
175070 l_component_type_code        := 'S';
175071 l_component_appl_id          :=  707;
175072 l_amb_context_code           := 'DEFAULT';
175073 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
175074 l_event_class_code           := 'WIP_MTL';
175075 l_event_type_code            := 'WIP_EST_SCRAP_REVERSAL';
175076 l_line_definition_owner_code := 'S';
175077 l_line_definition_code       := 'PI_WIP_EST_SCRAP_REVERSAL';
175078 --
175079 l_balance_type_code          := 'A';
175080 l_segment                     := NULL;
175081 l_ccid                        := NULL;
175082 l_adr_transaction_coa_id      := NULL;
175083 l_adr_accounting_coa_id       := NULL;
175084 l_adr_flexfield_segment_code  := NULL;
175085 l_adr_flex_value_set_id       := NULL;
175086 l_adr_value_type_code         := NULL;
175087 l_adr_value_combination_id    := NULL;
175088 l_adr_value_segment_code      := NULL;
175089 
175090 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
175091 l_bflow_class_code           := '';    -- 4219869 Business Flow
175092 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
175093 l_budgetary_control_flag     := 'N';
175094 
175095 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
175096 l_bflow_applied_to_amt       := NULL; -- 5132302
175097 l_entered_amt_idx            := NULL;          -- 4262811
175098 l_accted_amt_idx             := NULL;          -- 4262811
175099 l_acc_rev_flag               := NULL;          -- 4262811
175100 l_accrual_line_num           := NULL;          -- 4262811
175101 l_tmp_amt                    := NULL;          -- 4262811
175102 --
175103  
175104 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
175105     l_balance_type_code <> 'B' THEN
175106 IF NVL(p_source_97,9E125) =  2
175107  THEN 
175108 
175109    --
175110    XLA_AE_LINES_PKG.SetNewLine;
175111 
175112    p_balance_type_code          := l_balance_type_code;
175113    -- set the flag so later we will know whether the gain loss line needs to be created
175114    
175115    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
175116      p_actual_flag :='A';
175117    END IF;
175118 
175119    --
175120    -- bulk performance
175121    --
175122    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
175123                                       p_header_num   => 0); -- 4262811
175124    --
175125    -- set accounting line options
175126    --
175127    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
175128            p_natural_side_code          => 'D'
175129          , p_gain_or_loss_flag          => 'N'
175130          , p_gl_transfer_mode_code      => 'S'
175131          , p_acct_entry_type_code       => 'A'
175132          , p_switch_side_flag           => 'Y'
175133          , p_merge_duplicate_code       => 'N'
175134          );
175135    --
175136    l_acc_rev_natural_side_code := 'C';  -- 4262811
175137    -- 
175138    --
175139    -- set accounting line type info
175140    --
175141    xla_ae_lines_pkg.SetAcctLineType
175142       (p_component_type             => l_component_type
175143       ,p_event_type_code            => l_event_type_code
175144       ,p_line_definition_owner_code => l_line_definition_owner_code
175145       ,p_line_definition_code       => l_line_definition_code
175146       ,p_accounting_line_code       => l_component_code
175147       ,p_accounting_line_type_code  => l_component_type_code
175148       ,p_accounting_line_appl_id    => l_component_appl_id
175149       ,p_amb_context_code           => l_amb_context_code
175150       ,p_entity_code                => l_entity_code
175151       ,p_event_class_code           => l_event_class_code);
175152    --
175153    -- set accounting class
175154    --
175155    xla_ae_lines_pkg.SetAcctClass(
175156            p_accounting_class_code  => 'OFFSET'
175157          , p_ae_header_id           => l_ae_header_id
175158          );
175159 
175160    --
175161    -- set rounding class
175162    --
175163    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
175164                       'OFFSET';
175165 
175166    --
175167    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
175168    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
175169    --
175170    -- bulk performance
175171    --
175172    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
175173 
175174    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
175175       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
175176 
175177    -- 4955764
175178    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
175179       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
175180 
175181    -- 4458381 Public Sector Enh
175182    
175183    --
175184    -- set accounting attributes for the line type
175185    --
175186    l_entered_amt_idx := 3;
175187    l_accted_amt_idx  := 8;
175188    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
175189    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
175190    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
175191    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
175192    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
175193    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
175194    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
175195    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
175196    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
175197    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
175198    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
175199    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
175200    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
175201    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
175202    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
175203    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
175204    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
175205 
175206    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
175207    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
175208 
175209    ---------------------------------------------------------------------------------------------------------------
175210    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
175211    ---------------------------------------------------------------------------------------------------------------
175212    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
175213 
175214    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
175215    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
175216 
175217    IF xla_accounting_cache_pkg.GetValueChar
175218          (p_source_code         => 'LEDGER_CATEGORY_CODE'
175219          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
175220    AND l_bflow_method_code = 'PRIOR_ENTRY'
175221 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
175222    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
175223          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
175224        )
175225    THEN
175226          xla_ae_lines_pkg.BflowUpgEntry
175227            (p_business_method_code    => l_bflow_method_code
175228            ,p_business_class_code     => l_bflow_class_code
175229            ,p_balance_type            => l_balance_type_code);
175230    ELSE
175231       NULL;
175232 -- No business flow processing for business flow method of NONE.
175233    END IF;
175234 
175235    --
175236    -- call analytical criteria
175237    --
175238    
175239    --
175240    -- call description
175241    --
175242    
175243 xla_ae_lines_pkg.SetLineDescription(
175244    p_ae_header_id => l_ae_header_id
175245   ,p_description  => Description_1 (
175246      p_application_id         => p_application_id
175247    , p_ae_header_id           => l_ae_header_id 
175248 , p_source_1 => p_source_1
175249 , p_source_2 => p_source_2
175250 , p_source_3 => p_source_3
175251 , p_source_4 => p_source_4
175252 , p_source_5 => p_source_5
175253    )
175254 );
175255 
175256 
175257    --
175258    -- call ADRs
175259    -- Bug 4922099
175260    --
175261    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
175262         (NVL(l_actual_upg_option, 'N') = 'O') OR
175263         (NVL(l_enc_upg_option, 'N') = 'O')
175264       )
175265    THEN
175266    NULL;
175267    --
175268    --
175269    
175270   l_ccid := AcctDerRule_6(
175271            p_application_id           => p_application_id
175272          , p_ae_header_id             => l_ae_header_id 
175273 , p_source_11 => p_source_11
175274          , x_transaction_coa_id       => l_adr_transaction_coa_id
175275          , x_accounting_coa_id        => l_adr_accounting_coa_id
175276          , x_value_type_code          => l_adr_value_type_code
175277          , p_side                     => 'NA'
175278    );
175279 
175280    xla_ae_lines_pkg.set_ccid(
175281     p_code_combination_id          => l_ccid
175282   , p_value_type_code              => l_adr_value_type_code
175283   , p_transaction_coa_id           => l_adr_transaction_coa_id
175284   , p_accounting_coa_id            => l_adr_accounting_coa_id
175285   , p_adr_code                     => 'CST_DEFAULT'
175286   , p_adr_type_code                => 'S'
175287   , p_component_type               => l_component_type
175288   , p_component_code               => l_component_code
175289   , p_component_type_code          => l_component_type_code
175290   , p_component_appl_id            => l_component_appl_id
175291   , p_amb_context_code             => l_amb_context_code
175292   , p_side                         => 'NA'
175293   );
175294 
175295 
175296    --
175297    --
175298    END IF;
175299    --
175300    -- Bug 4922099
175301    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
175302           (NVL(l_enc_upg_option, 'N') = 'O')
175303         ) AND
175304         (l_bflow_method_code = 'PRIOR_ENTRY')
175305       )
175306    THEN
175307       IF
175308       --
175309       1 = 2
175310       --
175311       THEN
175312       xla_accounting_err_pkg.build_message
175313                                     (p_appli_s_name            => 'XLA'
175314                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
175315                                     ,p_token_1                 => 'LINE_NUMBER'
175316                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
175317                                     ,p_token_2                 => 'LINE_TYPE_NAME'
175318                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
175319                                                                              l_component_type
175320                                                                             ,l_component_code
175321                                                                             ,l_component_type_code
175322                                                                             ,l_component_appl_id
175323                                                                             ,l_amb_context_code
175324                                                                             ,l_entity_code
175325                                                                             ,l_event_class_code
175326                                                                            )
175327                                     ,p_token_3                 => 'OWNER'
175328                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
175329                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
175330                                                                           ,p_lookup_code    => l_component_type_code
175331                                                                          )
175332                                     ,p_token_4                 => 'PRODUCT_NAME'
175333                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
175334                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
175335                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
175336                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
175337                                     ,p_ae_header_id            =>  NULL
175338                                        );
175339 
175340         IF (C_LEVEL_ERROR>= g_log_level) THEN
175341                  trace
175342                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
175343                       ,p_level    => C_LEVEL_ERROR
175344                       ,p_module   => l_log_module);
175345         END IF;
175346       END IF;
175347    END IF;
175348    --
175349    --
175350    ------------------------------------------------------------------------------------------------
175351    -- 4219869 Business Flow
175352    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
175353    -- Prior Entry.  Currently, the following code is always generated.
175354    ------------------------------------------------------------------------------------------------
175355    XLA_AE_LINES_PKG.ValidateCurrentLine;
175356 
175357    ------------------------------------------------------------------------------------
175358    -- 4219869 Business Flow
175359    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
175360    ------------------------------------------------------------------------------------
175361    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
175362 
175363    ----------------------------------------------------------------------------------
175364    -- 4219869 Business Flow
175365    -- Update journal entry status -- Need to generate this within IF <condition>
175366    ----------------------------------------------------------------------------------
175367    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
175368          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
175369          ,p_balance_type_code => l_balance_type_code
175370          );
175371 
175372    -------------------------------------------------------------------------------------------
175373    -- 4262811 - Generate the Accrual Reversal lines
175374    -------------------------------------------------------------------------------------------
175375    BEGIN
175376       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
175377                               (g_array_event(p_event_id).array_value_num('header_index'));
175378       IF l_acc_rev_flag IS NULL THEN
175379          l_acc_rev_flag := 'N';
175380       END IF;
175381    EXCEPTION
175382       WHEN OTHERS THEN
175383          l_acc_rev_flag := 'N';
175384    END;
175385    --
175386    IF (l_acc_rev_flag = 'Y') THEN
175387 
175388        -- 4645092  ------------------------------------------------------------------------------
175389        -- To allow MPA report to determine if it should generate report process
175390        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
175391        ------------------------------------------------------------------------------------------
175392 
175393        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
175394        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
175395    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
175396    -- call ADRs
175397    -- Bug 4922099
175398    --
175399    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
175400         (NVL(l_actual_upg_option, 'N') = 'O') OR
175401         (NVL(l_enc_upg_option, 'N') = 'O')
175402       )
175403    THEN
175404    NULL;
175405    --
175406    --
175407    
175408   l_ccid := AcctDerRule_6(
175409            p_application_id           => p_application_id
175410          , p_ae_header_id             => l_ae_header_id 
175411 , p_source_11 => p_source_11
175412          , x_transaction_coa_id       => l_adr_transaction_coa_id
175413          , x_accounting_coa_id        => l_adr_accounting_coa_id
175414          , x_value_type_code          => l_adr_value_type_code
175415          , p_side                     => 'NA'
175416    );
175417 
175418    xla_ae_lines_pkg.set_ccid(
175419     p_code_combination_id          => l_ccid
175420   , p_value_type_code              => l_adr_value_type_code
175421   , p_transaction_coa_id           => l_adr_transaction_coa_id
175422   , p_accounting_coa_id            => l_adr_accounting_coa_id
175423   , p_adr_code                     => 'CST_DEFAULT'
175424   , p_adr_type_code                => 'S'
175425   , p_component_type               => l_component_type
175426   , p_component_code               => l_component_code
175427   , p_component_type_code          => l_component_type_code
175428   , p_component_appl_id            => l_component_appl_id
175429   , p_amb_context_code             => l_amb_context_code
175430   , p_side                         => 'NA'
175431   );
175432 
175433 
175434    --
175435    --
175436    END IF;
175437 
175438        --
175439        -- Update the line information that should be overwritten
175440        --
175441        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
175442                                          p_header_num   => 1);
175443        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
175444 
175445        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
175446 
175447        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
175448           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
175449        END IF;
175450 
175451       --
175452       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
175453       --
175454       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
175455           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
175456       ELSE
175457           ---------------------------------------------------------------------------------------------------
175458           -- 4262811a Switch Sign
175459           ---------------------------------------------------------------------------------------------------
175460           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
175461           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
175462                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
175463           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
175464                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
175465           -- 5132302
175466           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
175467                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
175468 
175469       END IF;
175470 
175471       -- 4955764
175472       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
175473       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
175474 
175475 
175476       XLA_AE_LINES_PKG.ValidateCurrentLine;
175477       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
175478 
175479       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
175480                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
175481                ,p_balance_type_code => l_balance_type_code);
175482 
175483    END IF;
175484 
175485    -----------------------------------------------------------------------------------------
175486    -- 4262811 Multiperiod Accounting
175487    -----------------------------------------------------------------------------------------
175488      -- No MPA option is assigned.
175489 
175490 
175491 END IF;
175492 END IF;
175493 --
175494 
175495 --
175496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175497    trace
175498       (p_msg      => 'END of AcctLineType_323'
175499       ,p_level    => C_LEVEL_PROCEDURE
175500       ,p_module   => l_log_module);
175501 END IF;
175502 --
175503 EXCEPTION
175504   WHEN xla_exceptions_pkg.application_exception THEN
175505       RAISE;
175506   WHEN OTHERS THEN
175507        xla_exceptions_pkg.raise_message
175508            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_323');
175509 END AcctLineType_323;
175510 --
175511 
175512 ---------------------------------------
175513 --
175514 -- PRIVATE FUNCTION
175515 --         AcctLineType_324
175516 --
175517 ---------------------------------------
175518 PROCEDURE AcctLineType_324 (
175519   p_application_id        IN NUMBER
175520  ,p_event_id              IN NUMBER
175521  ,p_calculate_acctd_flag  IN VARCHAR2
175522  ,p_calculate_g_l_flag    IN VARCHAR2
175523  ,p_actual_flag           IN OUT VARCHAR2
175524  ,p_balance_type_code     OUT VARCHAR2
175525  ,p_gain_or_loss_ref      OUT VARCHAR2
175526  
175527 --Cost Management Default Account
175528  , p_source_11            IN NUMBER
175529 --DISTRIBUTION_IDENTIFIER
175530  , p_source_84            IN NUMBER
175531 --Distribution Type
175532  , p_source_85            IN VARCHAR2
175533  , p_source_85_meaning    IN VARCHAR2
175534 --Entered Currency Code
175535  , p_source_88            IN VARCHAR2
175536 --Entered Amount
175537  , p_source_91            IN NUMBER
175538 --Currency Conversion Date
175539  , p_source_92            IN DATE
175540 --Currency Conversion Rate
175541  , p_source_93            IN NUMBER
175542 --Currency Conversion Type
175543  , p_source_94            IN VARCHAR2
175544 --Accounted Amount
175545  , p_source_95            IN NUMBER
175546 --Accounting Line Type
175547  , p_source_97            IN NUMBER
175548 )
175549 IS
175550 
175551 l_component_type              VARCHAR2(80);
175552 l_component_code              VARCHAR2(30);
175553 l_component_type_code         VARCHAR2(1);
175554 l_component_appl_id           INTEGER;
175555 l_amb_context_code            VARCHAR2(30);
175556 l_entity_code                 VARCHAR2(30);
175557 l_event_class_code            VARCHAR2(30);
175558 l_ae_header_id                NUMBER;
175559 l_event_type_code             VARCHAR2(30);
175560 l_line_definition_code        VARCHAR2(30);
175561 l_line_definition_owner_code  VARCHAR2(1);
175562 --
175563 -- adr variables
175564 l_segment                     VARCHAR2(30);
175565 l_ccid                        NUMBER;
175566 l_adr_transaction_coa_id      NUMBER;
175567 l_adr_accounting_coa_id       NUMBER;
175568 l_adr_flexfield_segment_code  VARCHAR2(30);
175569 l_adr_flex_value_set_id       NUMBER;
175570 l_adr_value_type_code         VARCHAR2(30);
175571 l_adr_value_combination_id    NUMBER;
175572 l_adr_value_segment_code      VARCHAR2(30);
175573 
175574 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
175575 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
175576 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
175577 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
175578 
175579 -- 4262811 Variables ------------------------------------------------------------------------------------------
175580 l_entered_amt_idx             NUMBER;
175581 l_accted_amt_idx              NUMBER;
175582 l_acc_rev_flag                VARCHAR2(1);
175583 l_accrual_line_num            NUMBER;
175584 l_tmp_amt                     NUMBER;
175585 l_acc_rev_natural_side_code   VARCHAR2(1);
175586 
175587 l_num_entries                 NUMBER;
175588 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
175589 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
175590 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
175591 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
175592 l_recog_line_1                NUMBER;
175593 l_recog_line_2                NUMBER;
175594 
175595 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
175596 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
175597 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
175598 
175599 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
175600 
175601 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
175602 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
175603 
175604 ---------------------------------------------------------------------------------------------------------------
175605 
175606 
175607 --
175608 -- bulk performance
175609 --
175610 l_balance_type_code           VARCHAR2(1);
175611 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
175612 l_log_module                  VARCHAR2(240);
175613 
175614 --
175615 -- Upgrade strategy
175616 --
175617 l_actual_upg_option           VARCHAR2(1);
175618 l_enc_upg_option           VARCHAR2(1);
175619 
175620 --
175621 BEGIN
175622 --
175623 IF g_log_enabled THEN
175624       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_324';
175625 END IF;
175626 --
175627 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175628 
175629       trace
175630          (p_msg      => 'BEGIN of AcctLineType_324'
175631          ,p_level    => C_LEVEL_PROCEDURE
175632          ,p_module   => l_log_module);
175633 
175634 END IF;
175635 --
175636 l_component_type             := 'AMB_JLT';
175637 l_component_code             := 'OFFSET';
175638 l_component_type_code        := 'S';
175639 l_component_appl_id          :=  707;
175640 l_amb_context_code           := 'DEFAULT';
175641 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
175642 l_event_class_code           := 'WIP_LOT';
175643 l_event_type_code            := 'WIP_LOT_ALL';
175644 l_line_definition_owner_code := 'S';
175645 l_line_definition_code       := 'WIP_LOT';
175646 --
175647 l_balance_type_code          := 'A';
175648 l_segment                     := NULL;
175649 l_ccid                        := NULL;
175650 l_adr_transaction_coa_id      := NULL;
175651 l_adr_accounting_coa_id       := NULL;
175652 l_adr_flexfield_segment_code  := NULL;
175653 l_adr_flex_value_set_id       := NULL;
175654 l_adr_value_type_code         := NULL;
175655 l_adr_value_combination_id    := NULL;
175656 l_adr_value_segment_code      := NULL;
175657 
175658 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
175659 l_bflow_class_code           := '';    -- 4219869 Business Flow
175660 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
175661 l_budgetary_control_flag     := 'N';
175662 
175663 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
175664 l_bflow_applied_to_amt       := NULL; -- 5132302
175665 l_entered_amt_idx            := NULL;          -- 4262811
175666 l_accted_amt_idx             := NULL;          -- 4262811
175667 l_acc_rev_flag               := NULL;          -- 4262811
175668 l_accrual_line_num           := NULL;          -- 4262811
175669 l_tmp_amt                    := NULL;          -- 4262811
175670 --
175671  
175672 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
175673     l_balance_type_code <> 'B' THEN
175674 IF NVL(p_source_97,9E125) =  25 OR 
175675 NVL(p_source_97,9E125) =  27
175676  THEN 
175677 
175678    --
175679    XLA_AE_LINES_PKG.SetNewLine;
175680 
175681    p_balance_type_code          := l_balance_type_code;
175682    -- set the flag so later we will know whether the gain loss line needs to be created
175683    
175684    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
175685      p_actual_flag :='A';
175686    END IF;
175687 
175688    --
175689    -- bulk performance
175690    --
175691    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
175692                                       p_header_num   => 0); -- 4262811
175693    --
175694    -- set accounting line options
175695    --
175696    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
175697            p_natural_side_code          => 'D'
175698          , p_gain_or_loss_flag          => 'N'
175699          , p_gl_transfer_mode_code      => 'S'
175700          , p_acct_entry_type_code       => 'A'
175701          , p_switch_side_flag           => 'Y'
175702          , p_merge_duplicate_code       => 'N'
175703          );
175704    --
175705    l_acc_rev_natural_side_code := 'C';  -- 4262811
175706    -- 
175707    --
175708    -- set accounting line type info
175709    --
175710    xla_ae_lines_pkg.SetAcctLineType
175711       (p_component_type             => l_component_type
175712       ,p_event_type_code            => l_event_type_code
175713       ,p_line_definition_owner_code => l_line_definition_owner_code
175714       ,p_line_definition_code       => l_line_definition_code
175715       ,p_accounting_line_code       => l_component_code
175716       ,p_accounting_line_type_code  => l_component_type_code
175717       ,p_accounting_line_appl_id    => l_component_appl_id
175718       ,p_amb_context_code           => l_amb_context_code
175719       ,p_entity_code                => l_entity_code
175720       ,p_event_class_code           => l_event_class_code);
175721    --
175722    -- set accounting class
175723    --
175724    xla_ae_lines_pkg.SetAcctClass(
175725            p_accounting_class_code  => 'OFFSET'
175726          , p_ae_header_id           => l_ae_header_id
175727          );
175728 
175729    --
175730    -- set rounding class
175731    --
175732    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
175733                       'OFFSET';
175734 
175735    --
175736    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
175737    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
175738    --
175739    -- bulk performance
175740    --
175741    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
175742 
175743    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
175744       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
175745 
175746    -- 4955764
175747    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
175748       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
175749 
175750    -- 4458381 Public Sector Enh
175751    
175752    --
175753    -- set accounting attributes for the line type
175754    --
175755    l_entered_amt_idx := 3;
175756    l_accted_amt_idx  := 8;
175757    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
175758    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
175759    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
175760    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
175761    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
175762    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
175763    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
175764    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
175765    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
175766    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
175767    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
175768    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
175769    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
175770    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
175771    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
175772    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
175773    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
175774 
175775    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
175776    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
175777 
175778    ---------------------------------------------------------------------------------------------------------------
175779    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
175780    ---------------------------------------------------------------------------------------------------------------
175781    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
175782 
175783    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
175784    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
175785 
175786    IF xla_accounting_cache_pkg.GetValueChar
175787          (p_source_code         => 'LEDGER_CATEGORY_CODE'
175788          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
175789    AND l_bflow_method_code = 'PRIOR_ENTRY'
175790 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
175791    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
175792          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
175793        )
175794    THEN
175795          xla_ae_lines_pkg.BflowUpgEntry
175796            (p_business_method_code    => l_bflow_method_code
175797            ,p_business_class_code     => l_bflow_class_code
175798            ,p_balance_type            => l_balance_type_code);
175799    ELSE
175800       NULL;
175801 -- No business flow processing for business flow method of NONE.
175802    END IF;
175803 
175804    --
175805    -- call analytical criteria
175806    --
175807    
175808    --
175809    -- call description
175810    --
175811    -- No description or it is inherited.
175812    --
175813    -- call ADRs
175814    -- Bug 4922099
175815    --
175816    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
175817         (NVL(l_actual_upg_option, 'N') = 'O') OR
175818         (NVL(l_enc_upg_option, 'N') = 'O')
175819       )
175820    THEN
175821    NULL;
175822    --
175823    --
175824    
175825   l_ccid := AcctDerRule_6(
175826            p_application_id           => p_application_id
175827          , p_ae_header_id             => l_ae_header_id 
175828 , p_source_11 => p_source_11
175829          , x_transaction_coa_id       => l_adr_transaction_coa_id
175830          , x_accounting_coa_id        => l_adr_accounting_coa_id
175831          , x_value_type_code          => l_adr_value_type_code
175832          , p_side                     => 'NA'
175833    );
175834 
175835    xla_ae_lines_pkg.set_ccid(
175836     p_code_combination_id          => l_ccid
175837   , p_value_type_code              => l_adr_value_type_code
175838   , p_transaction_coa_id           => l_adr_transaction_coa_id
175839   , p_accounting_coa_id            => l_adr_accounting_coa_id
175840   , p_adr_code                     => 'CST_DEFAULT'
175841   , p_adr_type_code                => 'S'
175842   , p_component_type               => l_component_type
175843   , p_component_code               => l_component_code
175844   , p_component_type_code          => l_component_type_code
175845   , p_component_appl_id            => l_component_appl_id
175846   , p_amb_context_code             => l_amb_context_code
175847   , p_side                         => 'NA'
175848   );
175849 
175850 
175851    --
175852    --
175853    END IF;
175854    --
175855    -- Bug 4922099
175856    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
175857           (NVL(l_enc_upg_option, 'N') = 'O')
175858         ) AND
175859         (l_bflow_method_code = 'PRIOR_ENTRY')
175860       )
175861    THEN
175862       IF
175863       --
175864       1 = 2
175865       --
175866       THEN
175867       xla_accounting_err_pkg.build_message
175868                                     (p_appli_s_name            => 'XLA'
175869                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
175870                                     ,p_token_1                 => 'LINE_NUMBER'
175871                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
175872                                     ,p_token_2                 => 'LINE_TYPE_NAME'
175873                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
175874                                                                              l_component_type
175875                                                                             ,l_component_code
175876                                                                             ,l_component_type_code
175877                                                                             ,l_component_appl_id
175878                                                                             ,l_amb_context_code
175879                                                                             ,l_entity_code
175880                                                                             ,l_event_class_code
175881                                                                            )
175882                                     ,p_token_3                 => 'OWNER'
175883                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
175884                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
175885                                                                           ,p_lookup_code    => l_component_type_code
175886                                                                          )
175887                                     ,p_token_4                 => 'PRODUCT_NAME'
175888                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
175889                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
175890                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
175891                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
175892                                     ,p_ae_header_id            =>  NULL
175893                                        );
175894 
175895         IF (C_LEVEL_ERROR>= g_log_level) THEN
175896                  trace
175897                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
175898                       ,p_level    => C_LEVEL_ERROR
175899                       ,p_module   => l_log_module);
175900         END IF;
175901       END IF;
175902    END IF;
175903    --
175904    --
175905    ------------------------------------------------------------------------------------------------
175906    -- 4219869 Business Flow
175907    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
175908    -- Prior Entry.  Currently, the following code is always generated.
175909    ------------------------------------------------------------------------------------------------
175910    XLA_AE_LINES_PKG.ValidateCurrentLine;
175911 
175912    ------------------------------------------------------------------------------------
175913    -- 4219869 Business Flow
175914    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
175915    ------------------------------------------------------------------------------------
175916    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
175917 
175918    ----------------------------------------------------------------------------------
175919    -- 4219869 Business Flow
175920    -- Update journal entry status -- Need to generate this within IF <condition>
175921    ----------------------------------------------------------------------------------
175922    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
175923          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
175924          ,p_balance_type_code => l_balance_type_code
175925          );
175926 
175927    -------------------------------------------------------------------------------------------
175928    -- 4262811 - Generate the Accrual Reversal lines
175929    -------------------------------------------------------------------------------------------
175930    BEGIN
175931       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
175932                               (g_array_event(p_event_id).array_value_num('header_index'));
175933       IF l_acc_rev_flag IS NULL THEN
175934          l_acc_rev_flag := 'N';
175935       END IF;
175936    EXCEPTION
175937       WHEN OTHERS THEN
175938          l_acc_rev_flag := 'N';
175939    END;
175940    --
175941    IF (l_acc_rev_flag = 'Y') THEN
175942 
175943        -- 4645092  ------------------------------------------------------------------------------
175944        -- To allow MPA report to determine if it should generate report process
175945        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
175946        ------------------------------------------------------------------------------------------
175947 
175948        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
175949        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
175950    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
175951    -- call ADRs
175952    -- Bug 4922099
175953    --
175954    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
175955         (NVL(l_actual_upg_option, 'N') = 'O') OR
175956         (NVL(l_enc_upg_option, 'N') = 'O')
175957       )
175958    THEN
175959    NULL;
175960    --
175961    --
175962    
175963   l_ccid := AcctDerRule_6(
175964            p_application_id           => p_application_id
175965          , p_ae_header_id             => l_ae_header_id 
175966 , p_source_11 => p_source_11
175967          , x_transaction_coa_id       => l_adr_transaction_coa_id
175968          , x_accounting_coa_id        => l_adr_accounting_coa_id
175969          , x_value_type_code          => l_adr_value_type_code
175970          , p_side                     => 'NA'
175971    );
175972 
175973    xla_ae_lines_pkg.set_ccid(
175974     p_code_combination_id          => l_ccid
175975   , p_value_type_code              => l_adr_value_type_code
175976   , p_transaction_coa_id           => l_adr_transaction_coa_id
175977   , p_accounting_coa_id            => l_adr_accounting_coa_id
175978   , p_adr_code                     => 'CST_DEFAULT'
175979   , p_adr_type_code                => 'S'
175980   , p_component_type               => l_component_type
175981   , p_component_code               => l_component_code
175982   , p_component_type_code          => l_component_type_code
175983   , p_component_appl_id            => l_component_appl_id
175984   , p_amb_context_code             => l_amb_context_code
175985   , p_side                         => 'NA'
175986   );
175987 
175988 
175989    --
175990    --
175991    END IF;
175992 
175993        --
175994        -- Update the line information that should be overwritten
175995        --
175996        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
175997                                          p_header_num   => 1);
175998        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
175999 
176000        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
176001 
176002        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
176003           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
176004        END IF;
176005 
176006       --
176007       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
176008       --
176009       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
176010           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
176011       ELSE
176012           ---------------------------------------------------------------------------------------------------
176013           -- 4262811a Switch Sign
176014           ---------------------------------------------------------------------------------------------------
176015           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
176016           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
176017                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
176018           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
176019                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
176020           -- 5132302
176021           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
176022                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
176023 
176024       END IF;
176025 
176026       -- 4955764
176027       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
176028       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
176029 
176030 
176031       XLA_AE_LINES_PKG.ValidateCurrentLine;
176032       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
176033 
176034       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
176035                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
176036                ,p_balance_type_code => l_balance_type_code);
176037 
176038    END IF;
176039 
176040    -----------------------------------------------------------------------------------------
176041    -- 4262811 Multiperiod Accounting
176042    -----------------------------------------------------------------------------------------
176043      -- No MPA option is assigned.
176044 
176045 
176046 END IF;
176047 END IF;
176048 --
176049 
176050 --
176051 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176052    trace
176053       (p_msg      => 'END of AcctLineType_324'
176054       ,p_level    => C_LEVEL_PROCEDURE
176055       ,p_module   => l_log_module);
176056 END IF;
176057 --
176058 EXCEPTION
176059   WHEN xla_exceptions_pkg.application_exception THEN
176060       RAISE;
176061   WHEN OTHERS THEN
176062        xla_exceptions_pkg.raise_message
176063            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_324');
176064 END AcctLineType_324;
176065 --
176066 
176067 ---------------------------------------
176068 --
176069 -- PRIVATE FUNCTION
176070 --         AcctLineType_325
176071 --
176072 ---------------------------------------
176073 PROCEDURE AcctLineType_325 (
176074   p_application_id        IN NUMBER
176075  ,p_event_id              IN NUMBER
176076  ,p_calculate_acctd_flag  IN VARCHAR2
176077  ,p_calculate_g_l_flag    IN VARCHAR2
176078  ,p_actual_flag           IN OUT VARCHAR2
176079  ,p_balance_type_code     OUT VARCHAR2
176080  ,p_gain_or_loss_ref      OUT VARCHAR2
176081  
176082 --TRANSACTION_ID
176083  , p_source_1            IN NUMBER
176084 --Item Concatenated Segments
176085  , p_source_2            IN VARCHAR2
176086 --Transaction Quantity
176087  , p_source_3            IN NUMBER
176088 --Transaction Unit of Measure Code
176089  , p_source_4            IN VARCHAR2
176090 --Inventory Transaction Type Description
176091  , p_source_5            IN VARCHAR2
176092 --Cost Management Default Account
176093  , p_source_11            IN NUMBER
176094 --DISTRIBUTION_IDENTIFIER
176095  , p_source_84            IN NUMBER
176096 --Distribution Type
176097  , p_source_85            IN VARCHAR2
176098  , p_source_85_meaning    IN VARCHAR2
176099 --Entered Currency Code
176100  , p_source_88            IN VARCHAR2
176101 --Entered Amount
176102  , p_source_91            IN NUMBER
176103 --Currency Conversion Date
176104  , p_source_92            IN DATE
176105 --Currency Conversion Rate
176106  , p_source_93            IN NUMBER
176107 --Currency Conversion Type
176108  , p_source_94            IN VARCHAR2
176109 --Accounted Amount
176110  , p_source_95            IN NUMBER
176111 --Accounting Line Type
176112  , p_source_97            IN NUMBER
176113 )
176114 IS
176115 
176116 l_component_type              VARCHAR2(80);
176117 l_component_code              VARCHAR2(30);
176118 l_component_type_code         VARCHAR2(1);
176119 l_component_appl_id           INTEGER;
176120 l_amb_context_code            VARCHAR2(30);
176121 l_entity_code                 VARCHAR2(30);
176122 l_event_class_code            VARCHAR2(30);
176123 l_ae_header_id                NUMBER;
176124 l_event_type_code             VARCHAR2(30);
176125 l_line_definition_code        VARCHAR2(30);
176126 l_line_definition_owner_code  VARCHAR2(1);
176127 --
176128 -- adr variables
176129 l_segment                     VARCHAR2(30);
176130 l_ccid                        NUMBER;
176131 l_adr_transaction_coa_id      NUMBER;
176132 l_adr_accounting_coa_id       NUMBER;
176133 l_adr_flexfield_segment_code  VARCHAR2(30);
176134 l_adr_flex_value_set_id       NUMBER;
176135 l_adr_value_type_code         VARCHAR2(30);
176136 l_adr_value_combination_id    NUMBER;
176137 l_adr_value_segment_code      VARCHAR2(30);
176138 
176139 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
176140 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
176141 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
176142 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
176143 
176144 -- 4262811 Variables ------------------------------------------------------------------------------------------
176145 l_entered_amt_idx             NUMBER;
176146 l_accted_amt_idx              NUMBER;
176147 l_acc_rev_flag                VARCHAR2(1);
176148 l_accrual_line_num            NUMBER;
176149 l_tmp_amt                     NUMBER;
176150 l_acc_rev_natural_side_code   VARCHAR2(1);
176151 
176152 l_num_entries                 NUMBER;
176153 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
176154 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
176155 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
176156 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
176157 l_recog_line_1                NUMBER;
176158 l_recog_line_2                NUMBER;
176159 
176160 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
176161 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
176162 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
176163 
176164 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
176165 
176166 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
176167 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
176168 
176169 ---------------------------------------------------------------------------------------------------------------
176170 
176171 
176172 --
176173 -- bulk performance
176174 --
176175 l_balance_type_code           VARCHAR2(1);
176176 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
176177 l_log_module                  VARCHAR2(240);
176178 
176179 --
176180 -- Upgrade strategy
176181 --
176182 l_actual_upg_option           VARCHAR2(1);
176183 l_enc_upg_option           VARCHAR2(1);
176184 
176185 --
176186 BEGIN
176187 --
176188 IF g_log_enabled THEN
176189       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_325';
176190 END IF;
176191 --
176192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176193 
176194       trace
176195          (p_msg      => 'BEGIN of AcctLineType_325'
176196          ,p_level    => C_LEVEL_PROCEDURE
176197          ,p_module   => l_log_module);
176198 
176199 END IF;
176200 --
176201 l_component_type             := 'AMB_JLT';
176202 l_component_code             := 'OFFSET';
176203 l_component_type_code        := 'S';
176204 l_component_appl_id          :=  707;
176205 l_amb_context_code           := 'DEFAULT';
176206 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
176207 l_event_class_code           := 'USER_DEFINE';
176208 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
176209 l_line_definition_owner_code := 'S';
176210 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
176211 --
176212 l_balance_type_code          := 'A';
176213 l_segment                     := NULL;
176214 l_ccid                        := NULL;
176215 l_adr_transaction_coa_id      := NULL;
176216 l_adr_accounting_coa_id       := NULL;
176217 l_adr_flexfield_segment_code  := NULL;
176218 l_adr_flex_value_set_id       := NULL;
176219 l_adr_value_type_code         := NULL;
176220 l_adr_value_combination_id    := NULL;
176221 l_adr_value_segment_code      := NULL;
176222 
176223 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
176224 l_bflow_class_code           := '';    -- 4219869 Business Flow
176225 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
176226 l_budgetary_control_flag     := 'N';
176227 
176228 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
176229 l_bflow_applied_to_amt       := NULL; -- 5132302
176230 l_entered_amt_idx            := NULL;          -- 4262811
176231 l_accted_amt_idx             := NULL;          -- 4262811
176232 l_acc_rev_flag               := NULL;          -- 4262811
176233 l_accrual_line_num           := NULL;          -- 4262811
176234 l_tmp_amt                    := NULL;          -- 4262811
176235 --
176236  
176237 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
176238     l_balance_type_code <> 'B' THEN
176239 IF NVL(p_source_97,9E125) =  2
176240  THEN 
176241 
176242    --
176243    XLA_AE_LINES_PKG.SetNewLine;
176244 
176245    p_balance_type_code          := l_balance_type_code;
176246    -- set the flag so later we will know whether the gain loss line needs to be created
176247    
176248    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
176249      p_actual_flag :='A';
176250    END IF;
176251 
176252    --
176253    -- bulk performance
176254    --
176255    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
176256                                       p_header_num   => 0); -- 4262811
176257    --
176258    -- set accounting line options
176259    --
176260    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
176261            p_natural_side_code          => 'D'
176262          , p_gain_or_loss_flag          => 'N'
176263          , p_gl_transfer_mode_code      => 'S'
176264          , p_acct_entry_type_code       => 'A'
176265          , p_switch_side_flag           => 'Y'
176266          , p_merge_duplicate_code       => 'N'
176267          );
176268    --
176269    l_acc_rev_natural_side_code := 'C';  -- 4262811
176270    -- 
176271    --
176272    -- set accounting line type info
176273    --
176274    xla_ae_lines_pkg.SetAcctLineType
176275       (p_component_type             => l_component_type
176276       ,p_event_type_code            => l_event_type_code
176277       ,p_line_definition_owner_code => l_line_definition_owner_code
176278       ,p_line_definition_code       => l_line_definition_code
176279       ,p_accounting_line_code       => l_component_code
176280       ,p_accounting_line_type_code  => l_component_type_code
176281       ,p_accounting_line_appl_id    => l_component_appl_id
176282       ,p_amb_context_code           => l_amb_context_code
176283       ,p_entity_code                => l_entity_code
176284       ,p_event_class_code           => l_event_class_code);
176285    --
176286    -- set accounting class
176287    --
176288    xla_ae_lines_pkg.SetAcctClass(
176289            p_accounting_class_code  => 'OFFSET'
176290          , p_ae_header_id           => l_ae_header_id
176291          );
176292 
176293    --
176294    -- set rounding class
176295    --
176296    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
176297                       'OFFSET';
176298 
176299    --
176300    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
176301    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
176302    --
176303    -- bulk performance
176304    --
176305    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
176306 
176307    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
176308       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
176309 
176310    -- 4955764
176311    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
176312       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
176313 
176314    -- 4458381 Public Sector Enh
176315    
176316    --
176317    -- set accounting attributes for the line type
176318    --
176319    l_entered_amt_idx := 3;
176320    l_accted_amt_idx  := 8;
176321    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
176322    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
176323    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
176324    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
176325    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
176326    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
176327    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
176328    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
176329    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
176330    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
176331    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
176332    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
176333    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
176334    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
176335    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
176336    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
176337    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
176338 
176339    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
176340    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
176341 
176342    ---------------------------------------------------------------------------------------------------------------
176343    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
176344    ---------------------------------------------------------------------------------------------------------------
176345    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
176346 
176347    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
176348    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
176349 
176350    IF xla_accounting_cache_pkg.GetValueChar
176351          (p_source_code         => 'LEDGER_CATEGORY_CODE'
176352          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
176353    AND l_bflow_method_code = 'PRIOR_ENTRY'
176354 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
176355    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
176356          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
176357        )
176358    THEN
176359          xla_ae_lines_pkg.BflowUpgEntry
176360            (p_business_method_code    => l_bflow_method_code
176361            ,p_business_class_code     => l_bflow_class_code
176362            ,p_balance_type            => l_balance_type_code);
176363    ELSE
176364       NULL;
176365 -- No business flow processing for business flow method of NONE.
176366    END IF;
176367 
176368    --
176369    -- call analytical criteria
176370    --
176371    
176372    --
176373    -- call description
176374    --
176375    
176376 xla_ae_lines_pkg.SetLineDescription(
176377    p_ae_header_id => l_ae_header_id
176378   ,p_description  => Description_1 (
176379      p_application_id         => p_application_id
176380    , p_ae_header_id           => l_ae_header_id 
176381 , p_source_1 => p_source_1
176382 , p_source_2 => p_source_2
176383 , p_source_3 => p_source_3
176384 , p_source_4 => p_source_4
176385 , p_source_5 => p_source_5
176386    )
176387 );
176388 
176389 
176390    --
176391    -- call ADRs
176392    -- Bug 4922099
176393    --
176394    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
176395         (NVL(l_actual_upg_option, 'N') = 'O') OR
176396         (NVL(l_enc_upg_option, 'N') = 'O')
176397       )
176398    THEN
176399    NULL;
176400    --
176401    --
176402    
176403   l_ccid := AcctDerRule_6(
176404            p_application_id           => p_application_id
176405          , p_ae_header_id             => l_ae_header_id 
176406 , p_source_11 => p_source_11
176407          , x_transaction_coa_id       => l_adr_transaction_coa_id
176408          , x_accounting_coa_id        => l_adr_accounting_coa_id
176409          , x_value_type_code          => l_adr_value_type_code
176410          , p_side                     => 'NA'
176411    );
176412 
176413    xla_ae_lines_pkg.set_ccid(
176414     p_code_combination_id          => l_ccid
176415   , p_value_type_code              => l_adr_value_type_code
176416   , p_transaction_coa_id           => l_adr_transaction_coa_id
176417   , p_accounting_coa_id            => l_adr_accounting_coa_id
176418   , p_adr_code                     => 'CST_DEFAULT'
176419   , p_adr_type_code                => 'S'
176420   , p_component_type               => l_component_type
176421   , p_component_code               => l_component_code
176422   , p_component_type_code          => l_component_type_code
176423   , p_component_appl_id            => l_component_appl_id
176424   , p_amb_context_code             => l_amb_context_code
176425   , p_side                         => 'NA'
176426   );
176427 
176428 
176429    --
176430    --
176431    END IF;
176432    --
176433    -- Bug 4922099
176434    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
176435           (NVL(l_enc_upg_option, 'N') = 'O')
176436         ) AND
176437         (l_bflow_method_code = 'PRIOR_ENTRY')
176438       )
176439    THEN
176440       IF
176441       --
176442       1 = 2
176443       --
176444       THEN
176445       xla_accounting_err_pkg.build_message
176446                                     (p_appli_s_name            => 'XLA'
176447                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
176448                                     ,p_token_1                 => 'LINE_NUMBER'
176449                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
176450                                     ,p_token_2                 => 'LINE_TYPE_NAME'
176451                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
176452                                                                              l_component_type
176453                                                                             ,l_component_code
176454                                                                             ,l_component_type_code
176455                                                                             ,l_component_appl_id
176456                                                                             ,l_amb_context_code
176457                                                                             ,l_entity_code
176458                                                                             ,l_event_class_code
176459                                                                            )
176460                                     ,p_token_3                 => 'OWNER'
176461                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
176462                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
176463                                                                           ,p_lookup_code    => l_component_type_code
176464                                                                          )
176465                                     ,p_token_4                 => 'PRODUCT_NAME'
176466                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
176467                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
176468                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
176469                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
176470                                     ,p_ae_header_id            =>  NULL
176471                                        );
176472 
176473         IF (C_LEVEL_ERROR>= g_log_level) THEN
176474                  trace
176475                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
176476                       ,p_level    => C_LEVEL_ERROR
176477                       ,p_module   => l_log_module);
176478         END IF;
176479       END IF;
176480    END IF;
176481    --
176482    --
176483    ------------------------------------------------------------------------------------------------
176484    -- 4219869 Business Flow
176485    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
176486    -- Prior Entry.  Currently, the following code is always generated.
176487    ------------------------------------------------------------------------------------------------
176488    XLA_AE_LINES_PKG.ValidateCurrentLine;
176489 
176490    ------------------------------------------------------------------------------------
176491    -- 4219869 Business Flow
176492    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
176493    ------------------------------------------------------------------------------------
176494    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
176495 
176496    ----------------------------------------------------------------------------------
176497    -- 4219869 Business Flow
176498    -- Update journal entry status -- Need to generate this within IF <condition>
176499    ----------------------------------------------------------------------------------
176500    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
176501          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
176502          ,p_balance_type_code => l_balance_type_code
176503          );
176504 
176505    -------------------------------------------------------------------------------------------
176506    -- 4262811 - Generate the Accrual Reversal lines
176507    -------------------------------------------------------------------------------------------
176508    BEGIN
176509       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
176510                               (g_array_event(p_event_id).array_value_num('header_index'));
176511       IF l_acc_rev_flag IS NULL THEN
176512          l_acc_rev_flag := 'N';
176513       END IF;
176514    EXCEPTION
176515       WHEN OTHERS THEN
176516          l_acc_rev_flag := 'N';
176517    END;
176518    --
176519    IF (l_acc_rev_flag = 'Y') THEN
176520 
176521        -- 4645092  ------------------------------------------------------------------------------
176522        -- To allow MPA report to determine if it should generate report process
176523        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
176524        ------------------------------------------------------------------------------------------
176525 
176526        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
176527        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
176528    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
176529    -- call ADRs
176530    -- Bug 4922099
176531    --
176532    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
176533         (NVL(l_actual_upg_option, 'N') = 'O') OR
176534         (NVL(l_enc_upg_option, 'N') = 'O')
176535       )
176536    THEN
176537    NULL;
176538    --
176539    --
176540    
176541   l_ccid := AcctDerRule_6(
176542            p_application_id           => p_application_id
176543          , p_ae_header_id             => l_ae_header_id 
176544 , p_source_11 => p_source_11
176545          , x_transaction_coa_id       => l_adr_transaction_coa_id
176546          , x_accounting_coa_id        => l_adr_accounting_coa_id
176547          , x_value_type_code          => l_adr_value_type_code
176548          , p_side                     => 'NA'
176549    );
176550 
176551    xla_ae_lines_pkg.set_ccid(
176552     p_code_combination_id          => l_ccid
176553   , p_value_type_code              => l_adr_value_type_code
176554   , p_transaction_coa_id           => l_adr_transaction_coa_id
176555   , p_accounting_coa_id            => l_adr_accounting_coa_id
176556   , p_adr_code                     => 'CST_DEFAULT'
176557   , p_adr_type_code                => 'S'
176558   , p_component_type               => l_component_type
176559   , p_component_code               => l_component_code
176560   , p_component_type_code          => l_component_type_code
176561   , p_component_appl_id            => l_component_appl_id
176562   , p_amb_context_code             => l_amb_context_code
176563   , p_side                         => 'NA'
176564   );
176565 
176566 
176567    --
176568    --
176569    END IF;
176570 
176571        --
176572        -- Update the line information that should be overwritten
176573        --
176574        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
176575                                          p_header_num   => 1);
176576        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
176577 
176578        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
176579 
176580        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
176581           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
176582        END IF;
176583 
176584       --
176585       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
176586       --
176587       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
176588           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
176589       ELSE
176590           ---------------------------------------------------------------------------------------------------
176591           -- 4262811a Switch Sign
176592           ---------------------------------------------------------------------------------------------------
176593           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
176594           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
176595                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
176596           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
176597                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
176598           -- 5132302
176599           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
176600                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
176601 
176602       END IF;
176603 
176604       -- 4955764
176605       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
176606       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
176607 
176608 
176609       XLA_AE_LINES_PKG.ValidateCurrentLine;
176610       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
176611 
176612       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
176613                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
176614                ,p_balance_type_code => l_balance_type_code);
176615 
176616    END IF;
176617 
176618    -----------------------------------------------------------------------------------------
176619    -- 4262811 Multiperiod Accounting
176620    -----------------------------------------------------------------------------------------
176621      -- No MPA option is assigned.
176622 
176623 
176624 END IF;
176625 END IF;
176626 --
176627 
176628 --
176629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176630    trace
176631       (p_msg      => 'END of AcctLineType_325'
176632       ,p_level    => C_LEVEL_PROCEDURE
176633       ,p_module   => l_log_module);
176634 END IF;
176635 --
176636 EXCEPTION
176637   WHEN xla_exceptions_pkg.application_exception THEN
176638       RAISE;
176639   WHEN OTHERS THEN
176640        xla_exceptions_pkg.raise_message
176641            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_325');
176642 END AcctLineType_325;
176643 --
176644 
176645 ---------------------------------------
176646 --
176647 -- PRIVATE FUNCTION
176648 --         AcctLineType_326
176649 --
176650 ---------------------------------------
176651 PROCEDURE AcctLineType_326 (
176652   p_application_id        IN NUMBER
176653  ,p_event_id              IN NUMBER
176654  ,p_calculate_acctd_flag  IN VARCHAR2
176655  ,p_calculate_g_l_flag    IN VARCHAR2
176656  ,p_actual_flag           IN OUT VARCHAR2
176657  ,p_balance_type_code     OUT VARCHAR2
176658  ,p_gain_or_loss_ref      OUT VARCHAR2
176659  
176660 --TRANSACTION_ID
176661  , p_source_1            IN NUMBER
176662 --Item Concatenated Segments
176663  , p_source_2            IN VARCHAR2
176664 --Transaction Quantity
176665  , p_source_3            IN NUMBER
176666 --Transaction Unit of Measure Code
176667  , p_source_4            IN VARCHAR2
176668 --Inventory Transaction Type Description
176669  , p_source_5            IN VARCHAR2
176670 --Cost Management Default Account
176671  , p_source_11            IN NUMBER
176672 --DISTRIBUTION_IDENTIFIER
176673  , p_source_84            IN NUMBER
176674 --Distribution Type
176675  , p_source_85            IN VARCHAR2
176676  , p_source_85_meaning    IN VARCHAR2
176677 --Entered Currency Code
176678  , p_source_88            IN VARCHAR2
176679 --Entered Amount
176680  , p_source_91            IN NUMBER
176681 --Currency Conversion Date
176682  , p_source_92            IN DATE
176683 --Currency Conversion Rate
176684  , p_source_93            IN NUMBER
176685 --Currency Conversion Type
176686  , p_source_94            IN VARCHAR2
176687 --Accounted Amount
176688  , p_source_95            IN NUMBER
176689 --Accounting Line Type
176690  , p_source_97            IN NUMBER
176691 )
176692 IS
176693 
176694 l_component_type              VARCHAR2(80);
176695 l_component_code              VARCHAR2(30);
176696 l_component_type_code         VARCHAR2(1);
176697 l_component_appl_id           INTEGER;
176698 l_amb_context_code            VARCHAR2(30);
176699 l_entity_code                 VARCHAR2(30);
176700 l_event_class_code            VARCHAR2(30);
176701 l_ae_header_id                NUMBER;
176702 l_event_type_code             VARCHAR2(30);
176703 l_line_definition_code        VARCHAR2(30);
176704 l_line_definition_owner_code  VARCHAR2(1);
176705 --
176706 -- adr variables
176707 l_segment                     VARCHAR2(30);
176708 l_ccid                        NUMBER;
176709 l_adr_transaction_coa_id      NUMBER;
176710 l_adr_accounting_coa_id       NUMBER;
176711 l_adr_flexfield_segment_code  VARCHAR2(30);
176712 l_adr_flex_value_set_id       NUMBER;
176713 l_adr_value_type_code         VARCHAR2(30);
176714 l_adr_value_combination_id    NUMBER;
176715 l_adr_value_segment_code      VARCHAR2(30);
176716 
176717 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
176718 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
176719 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
176720 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
176721 
176722 -- 4262811 Variables ------------------------------------------------------------------------------------------
176723 l_entered_amt_idx             NUMBER;
176724 l_accted_amt_idx              NUMBER;
176725 l_acc_rev_flag                VARCHAR2(1);
176726 l_accrual_line_num            NUMBER;
176727 l_tmp_amt                     NUMBER;
176728 l_acc_rev_natural_side_code   VARCHAR2(1);
176729 
176730 l_num_entries                 NUMBER;
176731 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
176732 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
176733 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
176734 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
176735 l_recog_line_1                NUMBER;
176736 l_recog_line_2                NUMBER;
176737 
176738 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
176739 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
176740 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
176741 
176742 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
176743 
176744 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
176745 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
176746 
176747 ---------------------------------------------------------------------------------------------------------------
176748 
176749 
176750 --
176751 -- bulk performance
176752 --
176753 l_balance_type_code           VARCHAR2(1);
176754 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
176755 l_log_module                  VARCHAR2(240);
176756 
176757 --
176758 -- Upgrade strategy
176759 --
176760 l_actual_upg_option           VARCHAR2(1);
176761 l_enc_upg_option           VARCHAR2(1);
176762 
176763 --
176764 BEGIN
176765 --
176766 IF g_log_enabled THEN
176767       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_326';
176768 END IF;
176769 --
176770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176771 
176772       trace
176773          (p_msg      => 'BEGIN of AcctLineType_326'
176774          ,p_level    => C_LEVEL_PROCEDURE
176775          ,p_module   => l_log_module);
176776 
176777 END IF;
176778 --
176779 l_component_type             := 'AMB_JLT';
176780 l_component_code             := 'OFFSET';
176781 l_component_type_code        := 'S';
176782 l_component_appl_id          :=  707;
176783 l_amb_context_code           := 'DEFAULT';
176784 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
176785 l_event_class_code           := 'USER_DEFINE';
176786 l_event_type_code            := 'UMISC_ISSUE';
176787 l_line_definition_owner_code := 'S';
176788 l_line_definition_code       := 'PI_USER_ISSUE';
176789 --
176790 l_balance_type_code          := 'A';
176791 l_segment                     := NULL;
176792 l_ccid                        := NULL;
176793 l_adr_transaction_coa_id      := NULL;
176794 l_adr_accounting_coa_id       := NULL;
176795 l_adr_flexfield_segment_code  := NULL;
176796 l_adr_flex_value_set_id       := NULL;
176797 l_adr_value_type_code         := NULL;
176798 l_adr_value_combination_id    := NULL;
176799 l_adr_value_segment_code      := NULL;
176800 
176801 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
176802 l_bflow_class_code           := '';    -- 4219869 Business Flow
176803 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
176804 l_budgetary_control_flag     := 'N';
176805 
176806 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
176807 l_bflow_applied_to_amt       := NULL; -- 5132302
176808 l_entered_amt_idx            := NULL;          -- 4262811
176809 l_accted_amt_idx             := NULL;          -- 4262811
176810 l_acc_rev_flag               := NULL;          -- 4262811
176811 l_accrual_line_num           := NULL;          -- 4262811
176812 l_tmp_amt                    := NULL;          -- 4262811
176813 --
176814  
176815 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
176816     l_balance_type_code <> 'B' THEN
176817 IF NVL(p_source_97,9E125) =  2
176818  THEN 
176819 
176820    --
176821    XLA_AE_LINES_PKG.SetNewLine;
176822 
176823    p_balance_type_code          := l_balance_type_code;
176824    -- set the flag so later we will know whether the gain loss line needs to be created
176825    
176826    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
176827      p_actual_flag :='A';
176828    END IF;
176829 
176830    --
176831    -- bulk performance
176832    --
176833    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
176834                                       p_header_num   => 0); -- 4262811
176835    --
176836    -- set accounting line options
176837    --
176838    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
176839            p_natural_side_code          => 'D'
176840          , p_gain_or_loss_flag          => 'N'
176841          , p_gl_transfer_mode_code      => 'S'
176842          , p_acct_entry_type_code       => 'A'
176843          , p_switch_side_flag           => 'Y'
176844          , p_merge_duplicate_code       => 'N'
176845          );
176846    --
176847    l_acc_rev_natural_side_code := 'C';  -- 4262811
176848    -- 
176849    --
176850    -- set accounting line type info
176851    --
176852    xla_ae_lines_pkg.SetAcctLineType
176853       (p_component_type             => l_component_type
176854       ,p_event_type_code            => l_event_type_code
176855       ,p_line_definition_owner_code => l_line_definition_owner_code
176856       ,p_line_definition_code       => l_line_definition_code
176857       ,p_accounting_line_code       => l_component_code
176858       ,p_accounting_line_type_code  => l_component_type_code
176859       ,p_accounting_line_appl_id    => l_component_appl_id
176860       ,p_amb_context_code           => l_amb_context_code
176861       ,p_entity_code                => l_entity_code
176862       ,p_event_class_code           => l_event_class_code);
176863    --
176864    -- set accounting class
176865    --
176866    xla_ae_lines_pkg.SetAcctClass(
176867            p_accounting_class_code  => 'OFFSET'
176868          , p_ae_header_id           => l_ae_header_id
176869          );
176870 
176871    --
176872    -- set rounding class
176873    --
176874    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
176875                       'OFFSET';
176876 
176877    --
176878    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
176879    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
176880    --
176881    -- bulk performance
176882    --
176883    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
176884 
176885    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
176886       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
176887 
176888    -- 4955764
176889    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
176890       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
176891 
176892    -- 4458381 Public Sector Enh
176893    
176894    --
176895    -- set accounting attributes for the line type
176896    --
176897    l_entered_amt_idx := 3;
176898    l_accted_amt_idx  := 8;
176899    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
176900    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
176901    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
176902    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
176903    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
176904    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
176905    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
176906    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
176907    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
176908    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
176909    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
176910    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
176911    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
176912    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
176913    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
176914    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
176915    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
176916 
176917    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
176918    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
176919 
176920    ---------------------------------------------------------------------------------------------------------------
176921    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
176922    ---------------------------------------------------------------------------------------------------------------
176923    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
176924 
176925    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
176926    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
176927 
176928    IF xla_accounting_cache_pkg.GetValueChar
176929          (p_source_code         => 'LEDGER_CATEGORY_CODE'
176930          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
176931    AND l_bflow_method_code = 'PRIOR_ENTRY'
176932 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
176933    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
176934          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
176935        )
176936    THEN
176937          xla_ae_lines_pkg.BflowUpgEntry
176938            (p_business_method_code    => l_bflow_method_code
176939            ,p_business_class_code     => l_bflow_class_code
176940            ,p_balance_type            => l_balance_type_code);
176941    ELSE
176942       NULL;
176943 -- No business flow processing for business flow method of NONE.
176944    END IF;
176945 
176946    --
176947    -- call analytical criteria
176948    --
176949    
176950    --
176951    -- call description
176952    --
176953    
176954 xla_ae_lines_pkg.SetLineDescription(
176955    p_ae_header_id => l_ae_header_id
176956   ,p_description  => Description_1 (
176957      p_application_id         => p_application_id
176958    , p_ae_header_id           => l_ae_header_id 
176959 , p_source_1 => p_source_1
176960 , p_source_2 => p_source_2
176961 , p_source_3 => p_source_3
176962 , p_source_4 => p_source_4
176963 , p_source_5 => p_source_5
176964    )
176965 );
176966 
176967 
176968    --
176969    -- call ADRs
176970    -- Bug 4922099
176971    --
176972    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
176973         (NVL(l_actual_upg_option, 'N') = 'O') OR
176974         (NVL(l_enc_upg_option, 'N') = 'O')
176975       )
176976    THEN
176977    NULL;
176978    --
176979    --
176980    
176981   l_ccid := AcctDerRule_6(
176982            p_application_id           => p_application_id
176983          , p_ae_header_id             => l_ae_header_id 
176984 , p_source_11 => p_source_11
176985          , x_transaction_coa_id       => l_adr_transaction_coa_id
176986          , x_accounting_coa_id        => l_adr_accounting_coa_id
176987          , x_value_type_code          => l_adr_value_type_code
176988          , p_side                     => 'NA'
176989    );
176990 
176991    xla_ae_lines_pkg.set_ccid(
176992     p_code_combination_id          => l_ccid
176993   , p_value_type_code              => l_adr_value_type_code
176994   , p_transaction_coa_id           => l_adr_transaction_coa_id
176995   , p_accounting_coa_id            => l_adr_accounting_coa_id
176996   , p_adr_code                     => 'CST_DEFAULT'
176997   , p_adr_type_code                => 'S'
176998   , p_component_type               => l_component_type
176999   , p_component_code               => l_component_code
177000   , p_component_type_code          => l_component_type_code
177001   , p_component_appl_id            => l_component_appl_id
177002   , p_amb_context_code             => l_amb_context_code
177003   , p_side                         => 'NA'
177004   );
177005 
177006 
177007    --
177008    --
177009    END IF;
177010    --
177011    -- Bug 4922099
177012    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
177013           (NVL(l_enc_upg_option, 'N') = 'O')
177014         ) AND
177015         (l_bflow_method_code = 'PRIOR_ENTRY')
177016       )
177017    THEN
177018       IF
177019       --
177020       1 = 2
177021       --
177022       THEN
177023       xla_accounting_err_pkg.build_message
177024                                     (p_appli_s_name            => 'XLA'
177025                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
177026                                     ,p_token_1                 => 'LINE_NUMBER'
177027                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
177028                                     ,p_token_2                 => 'LINE_TYPE_NAME'
177029                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
177030                                                                              l_component_type
177031                                                                             ,l_component_code
177032                                                                             ,l_component_type_code
177033                                                                             ,l_component_appl_id
177034                                                                             ,l_amb_context_code
177035                                                                             ,l_entity_code
177036                                                                             ,l_event_class_code
177037                                                                            )
177038                                     ,p_token_3                 => 'OWNER'
177039                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
177040                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
177041                                                                           ,p_lookup_code    => l_component_type_code
177042                                                                          )
177043                                     ,p_token_4                 => 'PRODUCT_NAME'
177044                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
177045                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
177046                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
177047                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
177048                                     ,p_ae_header_id            =>  NULL
177049                                        );
177050 
177051         IF (C_LEVEL_ERROR>= g_log_level) THEN
177052                  trace
177053                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
177054                       ,p_level    => C_LEVEL_ERROR
177055                       ,p_module   => l_log_module);
177056         END IF;
177057       END IF;
177058    END IF;
177059    --
177060    --
177061    ------------------------------------------------------------------------------------------------
177062    -- 4219869 Business Flow
177063    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
177064    -- Prior Entry.  Currently, the following code is always generated.
177065    ------------------------------------------------------------------------------------------------
177066    XLA_AE_LINES_PKG.ValidateCurrentLine;
177067 
177068    ------------------------------------------------------------------------------------
177069    -- 4219869 Business Flow
177070    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
177071    ------------------------------------------------------------------------------------
177072    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
177073 
177074    ----------------------------------------------------------------------------------
177075    -- 4219869 Business Flow
177076    -- Update journal entry status -- Need to generate this within IF <condition>
177077    ----------------------------------------------------------------------------------
177078    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
177079          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
177080          ,p_balance_type_code => l_balance_type_code
177081          );
177082 
177083    -------------------------------------------------------------------------------------------
177084    -- 4262811 - Generate the Accrual Reversal lines
177085    -------------------------------------------------------------------------------------------
177086    BEGIN
177087       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
177088                               (g_array_event(p_event_id).array_value_num('header_index'));
177089       IF l_acc_rev_flag IS NULL THEN
177090          l_acc_rev_flag := 'N';
177091       END IF;
177092    EXCEPTION
177093       WHEN OTHERS THEN
177094          l_acc_rev_flag := 'N';
177095    END;
177096    --
177097    IF (l_acc_rev_flag = 'Y') THEN
177098 
177099        -- 4645092  ------------------------------------------------------------------------------
177100        -- To allow MPA report to determine if it should generate report process
177101        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
177102        ------------------------------------------------------------------------------------------
177103 
177104        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
177105        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
177106    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
177107    -- call ADRs
177108    -- Bug 4922099
177109    --
177110    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
177111         (NVL(l_actual_upg_option, 'N') = 'O') OR
177112         (NVL(l_enc_upg_option, 'N') = 'O')
177113       )
177114    THEN
177115    NULL;
177116    --
177117    --
177118    
177119   l_ccid := AcctDerRule_6(
177120            p_application_id           => p_application_id
177121          , p_ae_header_id             => l_ae_header_id 
177122 , p_source_11 => p_source_11
177123          , x_transaction_coa_id       => l_adr_transaction_coa_id
177124          , x_accounting_coa_id        => l_adr_accounting_coa_id
177125          , x_value_type_code          => l_adr_value_type_code
177126          , p_side                     => 'NA'
177127    );
177128 
177129    xla_ae_lines_pkg.set_ccid(
177130     p_code_combination_id          => l_ccid
177131   , p_value_type_code              => l_adr_value_type_code
177132   , p_transaction_coa_id           => l_adr_transaction_coa_id
177133   , p_accounting_coa_id            => l_adr_accounting_coa_id
177134   , p_adr_code                     => 'CST_DEFAULT'
177135   , p_adr_type_code                => 'S'
177136   , p_component_type               => l_component_type
177137   , p_component_code               => l_component_code
177138   , p_component_type_code          => l_component_type_code
177139   , p_component_appl_id            => l_component_appl_id
177140   , p_amb_context_code             => l_amb_context_code
177141   , p_side                         => 'NA'
177142   );
177143 
177144 
177145    --
177146    --
177147    END IF;
177148 
177149        --
177150        -- Update the line information that should be overwritten
177151        --
177152        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
177153                                          p_header_num   => 1);
177154        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
177155 
177156        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
177157 
177158        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
177159           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
177160        END IF;
177161 
177162       --
177163       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
177164       --
177165       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
177166           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
177167       ELSE
177168           ---------------------------------------------------------------------------------------------------
177169           -- 4262811a Switch Sign
177170           ---------------------------------------------------------------------------------------------------
177171           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
177172           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
177173                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
177174           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
177175                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
177176           -- 5132302
177177           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
177178                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
177179 
177180       END IF;
177181 
177182       -- 4955764
177183       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
177184       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
177185 
177186 
177187       XLA_AE_LINES_PKG.ValidateCurrentLine;
177188       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
177189 
177190       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
177191                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
177192                ,p_balance_type_code => l_balance_type_code);
177193 
177194    END IF;
177195 
177196    -----------------------------------------------------------------------------------------
177197    -- 4262811 Multiperiod Accounting
177198    -----------------------------------------------------------------------------------------
177199      -- No MPA option is assigned.
177200 
177201 
177202 END IF;
177203 END IF;
177204 --
177205 
177206 --
177207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177208    trace
177209       (p_msg      => 'END of AcctLineType_326'
177210       ,p_level    => C_LEVEL_PROCEDURE
177211       ,p_module   => l_log_module);
177212 END IF;
177213 --
177214 EXCEPTION
177215   WHEN xla_exceptions_pkg.application_exception THEN
177216       RAISE;
177217   WHEN OTHERS THEN
177218        xla_exceptions_pkg.raise_message
177219            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_326');
177220 END AcctLineType_326;
177221 --
177222 
177223 ---------------------------------------
177224 --
177225 -- PRIVATE FUNCTION
177226 --         AcctLineType_327
177227 --
177228 ---------------------------------------
177229 PROCEDURE AcctLineType_327 (
177230   p_application_id        IN NUMBER
177231  ,p_event_id              IN NUMBER
177232  ,p_calculate_acctd_flag  IN VARCHAR2
177233  ,p_calculate_g_l_flag    IN VARCHAR2
177234  ,p_actual_flag           IN OUT VARCHAR2
177235  ,p_balance_type_code     OUT VARCHAR2
177236  ,p_gain_or_loss_ref      OUT VARCHAR2
177237  
177238 --TRANSACTION_ID
177239  , p_source_1            IN NUMBER
177240 --Item Concatenated Segments
177241  , p_source_2            IN VARCHAR2
177242 --Transaction Quantity
177243  , p_source_3            IN NUMBER
177244 --Transaction Unit of Measure Code
177245  , p_source_4            IN VARCHAR2
177246 --Inventory Transaction Type Description
177247  , p_source_5            IN VARCHAR2
177248 --Product Line Accounting Category Expense Account
177249  , p_source_24            IN NUMBER
177250 --DISTRIBUTION_IDENTIFIER
177251  , p_source_84            IN NUMBER
177252 --Distribution Type
177253  , p_source_85            IN VARCHAR2
177254  , p_source_85_meaning    IN VARCHAR2
177255 --Entered Currency Code
177256  , p_source_88            IN VARCHAR2
177257 --Entered Amount
177258  , p_source_91            IN NUMBER
177259 --Currency Conversion Date
177260  , p_source_92            IN DATE
177261 --Currency Conversion Rate
177262  , p_source_93            IN NUMBER
177263 --Currency Conversion Type
177264  , p_source_94            IN VARCHAR2
177265 --Accounted Amount
177266  , p_source_95            IN NUMBER
177267 --Accounting Line Type
177268  , p_source_97            IN NUMBER
177269 )
177270 IS
177271 
177272 l_component_type              VARCHAR2(80);
177273 l_component_code              VARCHAR2(30);
177274 l_component_type_code         VARCHAR2(1);
177275 l_component_appl_id           INTEGER;
177276 l_amb_context_code            VARCHAR2(30);
177277 l_entity_code                 VARCHAR2(30);
177278 l_event_class_code            VARCHAR2(30);
177279 l_ae_header_id                NUMBER;
177280 l_event_type_code             VARCHAR2(30);
177281 l_line_definition_code        VARCHAR2(30);
177282 l_line_definition_owner_code  VARCHAR2(1);
177283 --
177284 -- adr variables
177285 l_segment                     VARCHAR2(30);
177286 l_ccid                        NUMBER;
177287 l_adr_transaction_coa_id      NUMBER;
177288 l_adr_accounting_coa_id       NUMBER;
177289 l_adr_flexfield_segment_code  VARCHAR2(30);
177290 l_adr_flex_value_set_id       NUMBER;
177291 l_adr_value_type_code         VARCHAR2(30);
177292 l_adr_value_combination_id    NUMBER;
177293 l_adr_value_segment_code      VARCHAR2(30);
177294 
177295 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
177296 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
177297 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
177298 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
177299 
177300 -- 4262811 Variables ------------------------------------------------------------------------------------------
177301 l_entered_amt_idx             NUMBER;
177302 l_accted_amt_idx              NUMBER;
177303 l_acc_rev_flag                VARCHAR2(1);
177304 l_accrual_line_num            NUMBER;
177305 l_tmp_amt                     NUMBER;
177306 l_acc_rev_natural_side_code   VARCHAR2(1);
177307 
177308 l_num_entries                 NUMBER;
177309 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
177310 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
177311 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
177312 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
177313 l_recog_line_1                NUMBER;
177314 l_recog_line_2                NUMBER;
177315 
177316 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
177317 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
177318 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
177319 
177320 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
177321 
177322 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
177323 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
177324 
177325 ---------------------------------------------------------------------------------------------------------------
177326 
177327 
177328 --
177329 -- bulk performance
177330 --
177331 l_balance_type_code           VARCHAR2(1);
177332 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
177333 l_log_module                  VARCHAR2(240);
177334 
177335 --
177336 -- Upgrade strategy
177337 --
177338 l_actual_upg_option           VARCHAR2(1);
177339 l_enc_upg_option           VARCHAR2(1);
177340 
177341 --
177342 BEGIN
177343 --
177344 IF g_log_enabled THEN
177345       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_327';
177346 END IF;
177347 --
177348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177349 
177350       trace
177351          (p_msg      => 'BEGIN of AcctLineType_327'
177352          ,p_level    => C_LEVEL_PROCEDURE
177353          ,p_module   => l_log_module);
177354 
177355 END IF;
177356 --
177357 l_component_type             := 'AMB_JLT';
177358 l_component_code             := 'OFFSET';
177359 l_component_type_code        := 'S';
177360 l_component_appl_id          :=  707;
177361 l_amb_context_code           := 'DEFAULT';
177362 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
177363 l_event_class_code           := 'WIP_MTL';
177364 l_event_type_code            := 'WIP_COMP_ISSUE';
177365 l_line_definition_owner_code := 'S';
177366 l_line_definition_code       := 'PI_WIP_COMP_ISSUE';
177367 --
177368 l_balance_type_code          := 'A';
177369 l_segment                     := NULL;
177370 l_ccid                        := NULL;
177371 l_adr_transaction_coa_id      := NULL;
177372 l_adr_accounting_coa_id       := NULL;
177373 l_adr_flexfield_segment_code  := NULL;
177374 l_adr_flex_value_set_id       := NULL;
177375 l_adr_value_type_code         := NULL;
177376 l_adr_value_combination_id    := NULL;
177377 l_adr_value_segment_code      := NULL;
177378 
177379 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
177380 l_bflow_class_code           := '';    -- 4219869 Business Flow
177381 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
177382 l_budgetary_control_flag     := 'N';
177383 
177384 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
177385 l_bflow_applied_to_amt       := NULL; -- 5132302
177386 l_entered_amt_idx            := NULL;          -- 4262811
177387 l_accted_amt_idx             := NULL;          -- 4262811
177388 l_acc_rev_flag               := NULL;          -- 4262811
177389 l_accrual_line_num           := NULL;          -- 4262811
177390 l_tmp_amt                    := NULL;          -- 4262811
177391 --
177392  
177393 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
177394     l_balance_type_code <> 'B' THEN
177395 IF NVL(p_source_97,9E125) =  2
177396  THEN 
177397 
177398    --
177399    XLA_AE_LINES_PKG.SetNewLine;
177400 
177401    p_balance_type_code          := l_balance_type_code;
177402    -- set the flag so later we will know whether the gain loss line needs to be created
177403    
177404    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
177405      p_actual_flag :='A';
177406    END IF;
177407 
177408    --
177409    -- bulk performance
177410    --
177411    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
177412                                       p_header_num   => 0); -- 4262811
177413    --
177414    -- set accounting line options
177415    --
177416    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
177417            p_natural_side_code          => 'D'
177418          , p_gain_or_loss_flag          => 'N'
177419          , p_gl_transfer_mode_code      => 'S'
177420          , p_acct_entry_type_code       => 'A'
177421          , p_switch_side_flag           => 'Y'
177422          , p_merge_duplicate_code       => 'N'
177423          );
177424    --
177425    l_acc_rev_natural_side_code := 'C';  -- 4262811
177426    -- 
177427    --
177428    -- set accounting line type info
177429    --
177430    xla_ae_lines_pkg.SetAcctLineType
177431       (p_component_type             => l_component_type
177432       ,p_event_type_code            => l_event_type_code
177433       ,p_line_definition_owner_code => l_line_definition_owner_code
177434       ,p_line_definition_code       => l_line_definition_code
177435       ,p_accounting_line_code       => l_component_code
177436       ,p_accounting_line_type_code  => l_component_type_code
177437       ,p_accounting_line_appl_id    => l_component_appl_id
177438       ,p_amb_context_code           => l_amb_context_code
177439       ,p_entity_code                => l_entity_code
177440       ,p_event_class_code           => l_event_class_code);
177441    --
177442    -- set accounting class
177443    --
177444    xla_ae_lines_pkg.SetAcctClass(
177445            p_accounting_class_code  => 'OFFSET'
177446          , p_ae_header_id           => l_ae_header_id
177447          );
177448 
177449    --
177450    -- set rounding class
177451    --
177452    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
177453                       'OFFSET';
177454 
177455    --
177456    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
177457    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
177458    --
177459    -- bulk performance
177460    --
177461    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
177462 
177463    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
177464       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
177465 
177466    -- 4955764
177467    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
177468       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
177469 
177470    -- 4458381 Public Sector Enh
177471    
177472    --
177473    -- set accounting attributes for the line type
177474    --
177475    l_entered_amt_idx := 3;
177476    l_accted_amt_idx  := 8;
177477    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
177478    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
177479    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
177480    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
177481    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
177482    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
177483    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
177484    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
177485    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
177486    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
177487    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
177488    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
177489    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
177490    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
177491    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
177492    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
177493    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
177494 
177495    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
177496    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
177497 
177498    ---------------------------------------------------------------------------------------------------------------
177499    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
177500    ---------------------------------------------------------------------------------------------------------------
177501    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
177502 
177503    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
177504    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
177505 
177506    IF xla_accounting_cache_pkg.GetValueChar
177507          (p_source_code         => 'LEDGER_CATEGORY_CODE'
177508          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
177509    AND l_bflow_method_code = 'PRIOR_ENTRY'
177510 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
177511    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
177512          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
177513        )
177514    THEN
177515          xla_ae_lines_pkg.BflowUpgEntry
177516            (p_business_method_code    => l_bflow_method_code
177517            ,p_business_class_code     => l_bflow_class_code
177518            ,p_balance_type            => l_balance_type_code);
177519    ELSE
177520       NULL;
177521 -- No business flow processing for business flow method of NONE.
177522    END IF;
177523 
177524    --
177525    -- call analytical criteria
177526    --
177527    
177528    --
177529    -- call description
177530    --
177531    
177532 xla_ae_lines_pkg.SetLineDescription(
177533    p_ae_header_id => l_ae_header_id
177534   ,p_description  => Description_1 (
177535      p_application_id         => p_application_id
177536    , p_ae_header_id           => l_ae_header_id 
177537 , p_source_1 => p_source_1
177538 , p_source_2 => p_source_2
177539 , p_source_3 => p_source_3
177540 , p_source_4 => p_source_4
177541 , p_source_5 => p_source_5
177542    )
177543 );
177544 
177545 
177546    --
177547    -- call ADRs
177548    -- Bug 4922099
177549    --
177550    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
177551         (NVL(l_actual_upg_option, 'N') = 'O') OR
177552         (NVL(l_enc_upg_option, 'N') = 'O')
177553       )
177554    THEN
177555    NULL;
177556    --
177557    --
177558    
177559   l_ccid := AcctDerRule_13(
177560            p_application_id           => p_application_id
177561          , p_ae_header_id             => l_ae_header_id 
177562 , p_source_24 => p_source_24
177563          , x_transaction_coa_id       => l_adr_transaction_coa_id
177564          , x_accounting_coa_id        => l_adr_accounting_coa_id
177565          , x_value_type_code          => l_adr_value_type_code
177566          , p_side                     => 'NA'
177567    );
177568 
177569    xla_ae_lines_pkg.set_ccid(
177570     p_code_combination_id          => l_ccid
177571   , p_value_type_code              => l_adr_value_type_code
177572   , p_transaction_coa_id           => l_adr_transaction_coa_id
177573   , p_accounting_coa_id            => l_adr_accounting_coa_id
177574   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
177575   , p_adr_type_code                => 'S'
177576   , p_component_type               => l_component_type
177577   , p_component_code               => l_component_code
177578   , p_component_type_code          => l_component_type_code
177579   , p_component_appl_id            => l_component_appl_id
177580   , p_amb_context_code             => l_amb_context_code
177581   , p_side                         => 'NA'
177582   );
177583 
177584 
177585    --
177586    --
177587    END IF;
177588    --
177589    -- Bug 4922099
177590    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
177591           (NVL(l_enc_upg_option, 'N') = 'O')
177592         ) AND
177593         (l_bflow_method_code = 'PRIOR_ENTRY')
177594       )
177595    THEN
177596       IF
177597       --
177598       1 = 2
177599       --
177600       THEN
177601       xla_accounting_err_pkg.build_message
177602                                     (p_appli_s_name            => 'XLA'
177603                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
177604                                     ,p_token_1                 => 'LINE_NUMBER'
177605                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
177606                                     ,p_token_2                 => 'LINE_TYPE_NAME'
177607                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
177608                                                                              l_component_type
177609                                                                             ,l_component_code
177610                                                                             ,l_component_type_code
177611                                                                             ,l_component_appl_id
177612                                                                             ,l_amb_context_code
177613                                                                             ,l_entity_code
177614                                                                             ,l_event_class_code
177615                                                                            )
177616                                     ,p_token_3                 => 'OWNER'
177617                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
177618                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
177619                                                                           ,p_lookup_code    => l_component_type_code
177620                                                                          )
177621                                     ,p_token_4                 => 'PRODUCT_NAME'
177622                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
177623                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
177624                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
177625                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
177626                                     ,p_ae_header_id            =>  NULL
177627                                        );
177628 
177629         IF (C_LEVEL_ERROR>= g_log_level) THEN
177630                  trace
177631                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
177632                       ,p_level    => C_LEVEL_ERROR
177633                       ,p_module   => l_log_module);
177634         END IF;
177635       END IF;
177636    END IF;
177637    --
177638    --
177639    ------------------------------------------------------------------------------------------------
177640    -- 4219869 Business Flow
177641    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
177642    -- Prior Entry.  Currently, the following code is always generated.
177643    ------------------------------------------------------------------------------------------------
177644    XLA_AE_LINES_PKG.ValidateCurrentLine;
177645 
177646    ------------------------------------------------------------------------------------
177647    -- 4219869 Business Flow
177648    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
177649    ------------------------------------------------------------------------------------
177650    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
177651 
177652    ----------------------------------------------------------------------------------
177653    -- 4219869 Business Flow
177654    -- Update journal entry status -- Need to generate this within IF <condition>
177655    ----------------------------------------------------------------------------------
177656    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
177657          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
177658          ,p_balance_type_code => l_balance_type_code
177659          );
177660 
177661    -------------------------------------------------------------------------------------------
177662    -- 4262811 - Generate the Accrual Reversal lines
177663    -------------------------------------------------------------------------------------------
177664    BEGIN
177665       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
177666                               (g_array_event(p_event_id).array_value_num('header_index'));
177667       IF l_acc_rev_flag IS NULL THEN
177668          l_acc_rev_flag := 'N';
177669       END IF;
177670    EXCEPTION
177671       WHEN OTHERS THEN
177672          l_acc_rev_flag := 'N';
177673    END;
177674    --
177675    IF (l_acc_rev_flag = 'Y') THEN
177676 
177677        -- 4645092  ------------------------------------------------------------------------------
177678        -- To allow MPA report to determine if it should generate report process
177679        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
177680        ------------------------------------------------------------------------------------------
177681 
177682        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
177683        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
177684    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
177685    -- call ADRs
177686    -- Bug 4922099
177687    --
177688    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
177689         (NVL(l_actual_upg_option, 'N') = 'O') OR
177690         (NVL(l_enc_upg_option, 'N') = 'O')
177691       )
177692    THEN
177693    NULL;
177694    --
177695    --
177696    
177697   l_ccid := AcctDerRule_13(
177698            p_application_id           => p_application_id
177699          , p_ae_header_id             => l_ae_header_id 
177700 , p_source_24 => p_source_24
177701          , x_transaction_coa_id       => l_adr_transaction_coa_id
177702          , x_accounting_coa_id        => l_adr_accounting_coa_id
177703          , x_value_type_code          => l_adr_value_type_code
177704          , p_side                     => 'NA'
177705    );
177706 
177707    xla_ae_lines_pkg.set_ccid(
177708     p_code_combination_id          => l_ccid
177709   , p_value_type_code              => l_adr_value_type_code
177710   , p_transaction_coa_id           => l_adr_transaction_coa_id
177711   , p_accounting_coa_id            => l_adr_accounting_coa_id
177712   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
177713   , p_adr_type_code                => 'S'
177714   , p_component_type               => l_component_type
177715   , p_component_code               => l_component_code
177716   , p_component_type_code          => l_component_type_code
177717   , p_component_appl_id            => l_component_appl_id
177718   , p_amb_context_code             => l_amb_context_code
177719   , p_side                         => 'NA'
177720   );
177721 
177722 
177723    --
177724    --
177725    END IF;
177726 
177727        --
177728        -- Update the line information that should be overwritten
177729        --
177730        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
177731                                          p_header_num   => 1);
177732        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
177733 
177734        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
177735 
177736        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
177737           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
177738        END IF;
177739 
177740       --
177741       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
177742       --
177743       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
177744           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
177745       ELSE
177746           ---------------------------------------------------------------------------------------------------
177747           -- 4262811a Switch Sign
177748           ---------------------------------------------------------------------------------------------------
177749           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
177750           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
177751                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
177752           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
177753                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
177754           -- 5132302
177755           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
177756                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
177757 
177758       END IF;
177759 
177760       -- 4955764
177761       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
177762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
177763 
177764 
177765       XLA_AE_LINES_PKG.ValidateCurrentLine;
177766       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
177767 
177768       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
177769                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
177770                ,p_balance_type_code => l_balance_type_code);
177771 
177772    END IF;
177773 
177774    -----------------------------------------------------------------------------------------
177775    -- 4262811 Multiperiod Accounting
177776    -----------------------------------------------------------------------------------------
177777      -- No MPA option is assigned.
177778 
177779 
177780 END IF;
177781 END IF;
177782 --
177783 
177784 --
177785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177786    trace
177787       (p_msg      => 'END of AcctLineType_327'
177788       ,p_level    => C_LEVEL_PROCEDURE
177789       ,p_module   => l_log_module);
177790 END IF;
177791 --
177792 EXCEPTION
177793   WHEN xla_exceptions_pkg.application_exception THEN
177794       RAISE;
177795   WHEN OTHERS THEN
177796        xla_exceptions_pkg.raise_message
177797            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_327');
177798 END AcctLineType_327;
177799 --
177800 
177801 ---------------------------------------
177802 --
177803 -- PRIVATE FUNCTION
177804 --         AcctLineType_328
177805 --
177806 ---------------------------------------
177807 PROCEDURE AcctLineType_328 (
177808   p_application_id        IN NUMBER
177809  ,p_event_id              IN NUMBER
177810  ,p_calculate_acctd_flag  IN VARCHAR2
177811  ,p_calculate_g_l_flag    IN VARCHAR2
177812  ,p_actual_flag           IN OUT VARCHAR2
177813  ,p_balance_type_code     OUT VARCHAR2
177814  ,p_gain_or_loss_ref      OUT VARCHAR2
177815  
177816 --Cost Management Default Account
177817  , p_source_11            IN NUMBER
177818 --DISTRIBUTION_IDENTIFIER
177819  , p_source_84            IN NUMBER
177820 --Distribution Type
177821  , p_source_85            IN VARCHAR2
177822  , p_source_85_meaning    IN VARCHAR2
177823 --Entered Currency Code
177824  , p_source_88            IN VARCHAR2
177825 --Entered Amount
177826  , p_source_91            IN NUMBER
177827 --Currency Conversion Date
177828  , p_source_92            IN DATE
177829 --Currency Conversion Rate
177830  , p_source_93            IN NUMBER
177831 --Accounted Amount
177832  , p_source_95            IN NUMBER
177833 --Accounting Line Type
177834  , p_source_97            IN NUMBER
177835 )
177836 IS
177837 
177838 l_component_type              VARCHAR2(80);
177839 l_component_code              VARCHAR2(30);
177840 l_component_type_code         VARCHAR2(1);
177841 l_component_appl_id           INTEGER;
177842 l_amb_context_code            VARCHAR2(30);
177843 l_entity_code                 VARCHAR2(30);
177844 l_event_class_code            VARCHAR2(30);
177845 l_ae_header_id                NUMBER;
177846 l_event_type_code             VARCHAR2(30);
177847 l_line_definition_code        VARCHAR2(30);
177848 l_line_definition_owner_code  VARCHAR2(1);
177849 --
177850 -- adr variables
177851 l_segment                     VARCHAR2(30);
177852 l_ccid                        NUMBER;
177853 l_adr_transaction_coa_id      NUMBER;
177854 l_adr_accounting_coa_id       NUMBER;
177855 l_adr_flexfield_segment_code  VARCHAR2(30);
177856 l_adr_flex_value_set_id       NUMBER;
177857 l_adr_value_type_code         VARCHAR2(30);
177858 l_adr_value_combination_id    NUMBER;
177859 l_adr_value_segment_code      VARCHAR2(30);
177860 
177861 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
177862 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
177863 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
177864 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
177865 
177866 -- 4262811 Variables ------------------------------------------------------------------------------------------
177867 l_entered_amt_idx             NUMBER;
177868 l_accted_amt_idx              NUMBER;
177869 l_acc_rev_flag                VARCHAR2(1);
177870 l_accrual_line_num            NUMBER;
177871 l_tmp_amt                     NUMBER;
177872 l_acc_rev_natural_side_code   VARCHAR2(1);
177873 
177874 l_num_entries                 NUMBER;
177875 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
177876 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
177877 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
177878 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
177879 l_recog_line_1                NUMBER;
177880 l_recog_line_2                NUMBER;
177881 
177882 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
177883 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
177884 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
177885 
177886 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
177887 
177888 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
177889 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
177890 
177891 ---------------------------------------------------------------------------------------------------------------
177892 
177893 
177894 --
177895 -- bulk performance
177896 --
177897 l_balance_type_code           VARCHAR2(1);
177898 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
177899 l_log_module                  VARCHAR2(240);
177900 
177901 --
177902 -- Upgrade strategy
177903 --
177904 l_actual_upg_option           VARCHAR2(1);
177905 l_enc_upg_option           VARCHAR2(1);
177906 
177907 --
177908 BEGIN
177909 --
177910 IF g_log_enabled THEN
177911       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_328';
177912 END IF;
177913 --
177914 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177915 
177916       trace
177917          (p_msg      => 'BEGIN of AcctLineType_328'
177918          ,p_level    => C_LEVEL_PROCEDURE
177919          ,p_module   => l_log_module);
177920 
177921 END IF;
177922 --
177923 l_component_type             := 'AMB_JLT';
177924 l_component_code             := 'OFFSET';
177925 l_component_type_code        := 'S';
177926 l_component_appl_id          :=  707;
177927 l_amb_context_code           := 'DEFAULT';
177928 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
177929 l_event_class_code           := 'OSP';
177930 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
177931 l_line_definition_owner_code := 'S';
177932 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
177933 --
177934 l_balance_type_code          := 'A';
177935 l_segment                     := NULL;
177936 l_ccid                        := NULL;
177937 l_adr_transaction_coa_id      := NULL;
177938 l_adr_accounting_coa_id       := NULL;
177939 l_adr_flexfield_segment_code  := NULL;
177940 l_adr_flex_value_set_id       := NULL;
177941 l_adr_value_type_code         := NULL;
177942 l_adr_value_combination_id    := NULL;
177943 l_adr_value_segment_code      := NULL;
177944 
177945 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
177946 l_bflow_class_code           := '';    -- 4219869 Business Flow
177947 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
177948 l_budgetary_control_flag     := 'N';
177949 
177950 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
177951 l_bflow_applied_to_amt       := NULL; -- 5132302
177952 l_entered_amt_idx            := NULL;          -- 4262811
177953 l_accted_amt_idx             := NULL;          -- 4262811
177954 l_acc_rev_flag               := NULL;          -- 4262811
177955 l_accrual_line_num           := NULL;          -- 4262811
177956 l_tmp_amt                    := NULL;          -- 4262811
177957 --
177958  
177959 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
177960     l_balance_type_code <> 'B' THEN
177961 IF NVL(p_source_97,9E125) =  2
177962  THEN 
177963 
177964    --
177965    XLA_AE_LINES_PKG.SetNewLine;
177966 
177967    p_balance_type_code          := l_balance_type_code;
177968    -- set the flag so later we will know whether the gain loss line needs to be created
177969    
177970    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
177971      p_actual_flag :='A';
177972    END IF;
177973 
177974    --
177975    -- bulk performance
177976    --
177977    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
177978                                       p_header_num   => 0); -- 4262811
177979    --
177980    -- set accounting line options
177981    --
177982    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
177983            p_natural_side_code          => 'D'
177984          , p_gain_or_loss_flag          => 'N'
177985          , p_gl_transfer_mode_code      => 'S'
177986          , p_acct_entry_type_code       => 'A'
177987          , p_switch_side_flag           => 'Y'
177988          , p_merge_duplicate_code       => 'N'
177989          );
177990    --
177991    l_acc_rev_natural_side_code := 'C';  -- 4262811
177992    -- 
177993    --
177994    -- set accounting line type info
177995    --
177996    xla_ae_lines_pkg.SetAcctLineType
177997       (p_component_type             => l_component_type
177998       ,p_event_type_code            => l_event_type_code
177999       ,p_line_definition_owner_code => l_line_definition_owner_code
178000       ,p_line_definition_code       => l_line_definition_code
178001       ,p_accounting_line_code       => l_component_code
178002       ,p_accounting_line_type_code  => l_component_type_code
178003       ,p_accounting_line_appl_id    => l_component_appl_id
178004       ,p_amb_context_code           => l_amb_context_code
178005       ,p_entity_code                => l_entity_code
178006       ,p_event_class_code           => l_event_class_code);
178007    --
178008    -- set accounting class
178009    --
178010    xla_ae_lines_pkg.SetAcctClass(
178011            p_accounting_class_code  => 'OFFSET'
178012          , p_ae_header_id           => l_ae_header_id
178013          );
178014 
178015    --
178016    -- set rounding class
178017    --
178018    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
178019                       'OFFSET';
178020 
178021    --
178022    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
178023    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
178024    --
178025    -- bulk performance
178026    --
178027    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
178028 
178029    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
178030       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
178031 
178032    -- 4955764
178033    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
178034       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
178035 
178036    -- 4458381 Public Sector Enh
178037    
178038    --
178039    -- set accounting attributes for the line type
178040    --
178041    l_entered_amt_idx := 3;
178042    l_accted_amt_idx  := 8;
178043    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
178044    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
178045    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
178046    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
178047    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
178048    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
178049    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
178050    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
178051    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
178052    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
178053    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
178054    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
178055    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
178056    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
178057    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
178058    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
178059    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
178060 
178061    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
178062    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
178063 
178064    ---------------------------------------------------------------------------------------------------------------
178065    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
178066    ---------------------------------------------------------------------------------------------------------------
178067    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
178068 
178069    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
178070    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
178071 
178072    IF xla_accounting_cache_pkg.GetValueChar
178073          (p_source_code         => 'LEDGER_CATEGORY_CODE'
178074          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
178075    AND l_bflow_method_code = 'PRIOR_ENTRY'
178076 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
178077    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
178078          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
178079        )
178080    THEN
178081          xla_ae_lines_pkg.BflowUpgEntry
178082            (p_business_method_code    => l_bflow_method_code
178083            ,p_business_class_code     => l_bflow_class_code
178084            ,p_balance_type            => l_balance_type_code);
178085    ELSE
178086       NULL;
178087 -- No business flow processing for business flow method of NONE.
178088    END IF;
178089 
178090    --
178091    -- call analytical criteria
178092    --
178093    
178094    --
178095    -- call description
178096    --
178097    -- No description or it is inherited.
178098    --
178099    -- call ADRs
178100    -- Bug 4922099
178101    --
178102    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
178103         (NVL(l_actual_upg_option, 'N') = 'O') OR
178104         (NVL(l_enc_upg_option, 'N') = 'O')
178105       )
178106    THEN
178107    NULL;
178108    --
178109    --
178110    
178111   l_ccid := AcctDerRule_6(
178112            p_application_id           => p_application_id
178113          , p_ae_header_id             => l_ae_header_id 
178114 , p_source_11 => p_source_11
178115          , x_transaction_coa_id       => l_adr_transaction_coa_id
178116          , x_accounting_coa_id        => l_adr_accounting_coa_id
178117          , x_value_type_code          => l_adr_value_type_code
178118          , p_side                     => 'NA'
178119    );
178120 
178121    xla_ae_lines_pkg.set_ccid(
178122     p_code_combination_id          => l_ccid
178123   , p_value_type_code              => l_adr_value_type_code
178124   , p_transaction_coa_id           => l_adr_transaction_coa_id
178125   , p_accounting_coa_id            => l_adr_accounting_coa_id
178126   , p_adr_code                     => 'CST_DEFAULT'
178127   , p_adr_type_code                => 'S'
178128   , p_component_type               => l_component_type
178129   , p_component_code               => l_component_code
178130   , p_component_type_code          => l_component_type_code
178131   , p_component_appl_id            => l_component_appl_id
178132   , p_amb_context_code             => l_amb_context_code
178133   , p_side                         => 'NA'
178134   );
178135 
178136 
178137    --
178138    --
178139    END IF;
178140    --
178141    -- Bug 4922099
178142    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
178143           (NVL(l_enc_upg_option, 'N') = 'O')
178144         ) AND
178145         (l_bflow_method_code = 'PRIOR_ENTRY')
178146       )
178147    THEN
178148       IF
178149       --
178150       1 = 2
178151       --
178152       THEN
178153       xla_accounting_err_pkg.build_message
178154                                     (p_appli_s_name            => 'XLA'
178155                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
178156                                     ,p_token_1                 => 'LINE_NUMBER'
178157                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
178158                                     ,p_token_2                 => 'LINE_TYPE_NAME'
178159                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
178160                                                                              l_component_type
178161                                                                             ,l_component_code
178162                                                                             ,l_component_type_code
178163                                                                             ,l_component_appl_id
178164                                                                             ,l_amb_context_code
178165                                                                             ,l_entity_code
178166                                                                             ,l_event_class_code
178167                                                                            )
178168                                     ,p_token_3                 => 'OWNER'
178169                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
178170                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
178171                                                                           ,p_lookup_code    => l_component_type_code
178172                                                                          )
178173                                     ,p_token_4                 => 'PRODUCT_NAME'
178174                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
178175                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
178176                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
178177                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
178178                                     ,p_ae_header_id            =>  NULL
178179                                        );
178180 
178181         IF (C_LEVEL_ERROR>= g_log_level) THEN
178182                  trace
178183                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
178184                       ,p_level    => C_LEVEL_ERROR
178185                       ,p_module   => l_log_module);
178186         END IF;
178187       END IF;
178188    END IF;
178189    --
178190    --
178191    ------------------------------------------------------------------------------------------------
178192    -- 4219869 Business Flow
178193    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
178194    -- Prior Entry.  Currently, the following code is always generated.
178195    ------------------------------------------------------------------------------------------------
178196    XLA_AE_LINES_PKG.ValidateCurrentLine;
178197 
178198    ------------------------------------------------------------------------------------
178199    -- 4219869 Business Flow
178200    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
178201    ------------------------------------------------------------------------------------
178202    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
178203 
178204    ----------------------------------------------------------------------------------
178205    -- 4219869 Business Flow
178206    -- Update journal entry status -- Need to generate this within IF <condition>
178207    ----------------------------------------------------------------------------------
178208    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
178209          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
178210          ,p_balance_type_code => l_balance_type_code
178211          );
178212 
178213    -------------------------------------------------------------------------------------------
178214    -- 4262811 - Generate the Accrual Reversal lines
178215    -------------------------------------------------------------------------------------------
178216    BEGIN
178217       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
178218                               (g_array_event(p_event_id).array_value_num('header_index'));
178219       IF l_acc_rev_flag IS NULL THEN
178220          l_acc_rev_flag := 'N';
178221       END IF;
178222    EXCEPTION
178223       WHEN OTHERS THEN
178224          l_acc_rev_flag := 'N';
178225    END;
178226    --
178227    IF (l_acc_rev_flag = 'Y') THEN
178228 
178229        -- 4645092  ------------------------------------------------------------------------------
178230        -- To allow MPA report to determine if it should generate report process
178231        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
178232        ------------------------------------------------------------------------------------------
178233 
178234        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
178235        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
178236    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
178237    -- call ADRs
178238    -- Bug 4922099
178239    --
178240    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
178241         (NVL(l_actual_upg_option, 'N') = 'O') OR
178242         (NVL(l_enc_upg_option, 'N') = 'O')
178243       )
178244    THEN
178245    NULL;
178246    --
178247    --
178248    
178249   l_ccid := AcctDerRule_6(
178250            p_application_id           => p_application_id
178251          , p_ae_header_id             => l_ae_header_id 
178252 , p_source_11 => p_source_11
178253          , x_transaction_coa_id       => l_adr_transaction_coa_id
178254          , x_accounting_coa_id        => l_adr_accounting_coa_id
178255          , x_value_type_code          => l_adr_value_type_code
178256          , p_side                     => 'NA'
178257    );
178258 
178259    xla_ae_lines_pkg.set_ccid(
178260     p_code_combination_id          => l_ccid
178261   , p_value_type_code              => l_adr_value_type_code
178262   , p_transaction_coa_id           => l_adr_transaction_coa_id
178263   , p_accounting_coa_id            => l_adr_accounting_coa_id
178264   , p_adr_code                     => 'CST_DEFAULT'
178265   , p_adr_type_code                => 'S'
178266   , p_component_type               => l_component_type
178267   , p_component_code               => l_component_code
178268   , p_component_type_code          => l_component_type_code
178269   , p_component_appl_id            => l_component_appl_id
178270   , p_amb_context_code             => l_amb_context_code
178271   , p_side                         => 'NA'
178272   );
178273 
178274 
178275    --
178276    --
178277    END IF;
178278 
178279        --
178280        -- Update the line information that should be overwritten
178281        --
178282        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
178283                                          p_header_num   => 1);
178284        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
178285 
178286        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
178287 
178288        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
178289           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
178290        END IF;
178291 
178292       --
178293       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
178294       --
178295       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
178296           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
178297       ELSE
178298           ---------------------------------------------------------------------------------------------------
178299           -- 4262811a Switch Sign
178300           ---------------------------------------------------------------------------------------------------
178301           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
178302           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
178303                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
178304           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
178305                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
178306           -- 5132302
178307           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
178308                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
178309 
178310       END IF;
178311 
178312       -- 4955764
178313       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
178314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
178315 
178316 
178317       XLA_AE_LINES_PKG.ValidateCurrentLine;
178318       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
178319 
178320       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
178321                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
178322                ,p_balance_type_code => l_balance_type_code);
178323 
178324    END IF;
178325 
178326    -----------------------------------------------------------------------------------------
178327    -- 4262811 Multiperiod Accounting
178328    -----------------------------------------------------------------------------------------
178329      -- No MPA option is assigned.
178330 
178331 
178332 END IF;
178333 END IF;
178334 --
178335 
178336 --
178337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178338    trace
178339       (p_msg      => 'END of AcctLineType_328'
178340       ,p_level    => C_LEVEL_PROCEDURE
178341       ,p_module   => l_log_module);
178342 END IF;
178343 --
178344 EXCEPTION
178345   WHEN xla_exceptions_pkg.application_exception THEN
178346       RAISE;
178347   WHEN OTHERS THEN
178348        xla_exceptions_pkg.raise_message
178349            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_328');
178350 END AcctLineType_328;
178351 --
178352 
178353 ---------------------------------------
178354 --
178355 -- PRIVATE FUNCTION
178356 --         AcctLineType_329
178357 --
178358 ---------------------------------------
178359 PROCEDURE AcctLineType_329 (
178360   p_application_id        IN NUMBER
178361  ,p_event_id              IN NUMBER
178362  ,p_calculate_acctd_flag  IN VARCHAR2
178363  ,p_calculate_g_l_flag    IN VARCHAR2
178364  ,p_actual_flag           IN OUT VARCHAR2
178365  ,p_balance_type_code     OUT VARCHAR2
178366  ,p_gain_or_loss_ref      OUT VARCHAR2
178367  
178368 --TRANSACTION_ID
178369  , p_source_1            IN NUMBER
178370 --Item Concatenated Segments
178371  , p_source_2            IN VARCHAR2
178372 --Transaction Quantity
178373  , p_source_3            IN NUMBER
178374 --Transaction Unit of Measure Code
178375  , p_source_4            IN VARCHAR2
178376 --Inventory Transaction Type Description
178377  , p_source_5            IN VARCHAR2
178378 --Cost Management Default Account
178379  , p_source_11            IN NUMBER
178380 --Applied to Application ID
178381  , p_source_79            IN NUMBER
178382 --Applied to Distribution Link Type
178383  , p_source_80            IN VARCHAR2
178384 --Applied to Entity Code
178385  , p_source_81            IN VARCHAR2
178386 --DISTRIBUTION_IDENTIFIER
178387  , p_source_84            IN NUMBER
178388 --Distribution Type
178389  , p_source_85            IN VARCHAR2
178390  , p_source_85_meaning    IN VARCHAR2
178391 --Encumbrance Reversal Amount Entered
178392  , p_source_87            IN NUMBER
178393 --Entered Currency Code
178394  , p_source_88            IN VARCHAR2
178395 --Transaction Encumbrance Reversal Amount
178396  , p_source_89            IN NUMBER
178397 --Entered Amount
178398  , p_source_91            IN NUMBER
178399 --Currency Conversion Date
178400  , p_source_92            IN DATE
178401 --Currency Conversion Rate
178402  , p_source_93            IN NUMBER
178403 --Currency Conversion Type
178404  , p_source_94            IN VARCHAR2
178405 --Accounted Amount
178406  , p_source_95            IN NUMBER
178407 --Accounting Line Type
178408  , p_source_97            IN NUMBER
178409 --Costing Encumbrance Upgrade Option
178410  , p_source_100            IN VARCHAR2
178411 --TXN_PO_DISTRIBUTION_ID
178412  , p_source_101            IN NUMBER
178413 --TXN_PO_HEADER_ID
178414  , p_source_102            IN NUMBER
178415 --Requisition Budget Account
178416  , p_source_103            IN NUMBER
178417 --Requisition Encumbrance Type Identifier
178418  , p_source_104            IN NUMBER
178419 )
178420 IS
178421 
178422 l_component_type              VARCHAR2(80);
178423 l_component_code              VARCHAR2(30);
178424 l_component_type_code         VARCHAR2(1);
178425 l_component_appl_id           INTEGER;
178426 l_amb_context_code            VARCHAR2(30);
178427 l_entity_code                 VARCHAR2(30);
178428 l_event_class_code            VARCHAR2(30);
178429 l_ae_header_id                NUMBER;
178430 l_event_type_code             VARCHAR2(30);
178431 l_line_definition_code        VARCHAR2(30);
178432 l_line_definition_owner_code  VARCHAR2(1);
178433 --
178434 -- adr variables
178435 l_segment                     VARCHAR2(30);
178436 l_ccid                        NUMBER;
178437 l_adr_transaction_coa_id      NUMBER;
178438 l_adr_accounting_coa_id       NUMBER;
178439 l_adr_flexfield_segment_code  VARCHAR2(30);
178440 l_adr_flex_value_set_id       NUMBER;
178441 l_adr_value_type_code         VARCHAR2(30);
178442 l_adr_value_combination_id    NUMBER;
178443 l_adr_value_segment_code      VARCHAR2(30);
178444 
178445 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
178446 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
178447 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
178448 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
178449 
178450 -- 4262811 Variables ------------------------------------------------------------------------------------------
178451 l_entered_amt_idx             NUMBER;
178452 l_accted_amt_idx              NUMBER;
178453 l_acc_rev_flag                VARCHAR2(1);
178454 l_accrual_line_num            NUMBER;
178455 l_tmp_amt                     NUMBER;
178456 l_acc_rev_natural_side_code   VARCHAR2(1);
178457 
178458 l_num_entries                 NUMBER;
178459 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
178460 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
178461 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
178462 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
178463 l_recog_line_1                NUMBER;
178464 l_recog_line_2                NUMBER;
178465 
178466 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
178467 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
178468 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
178469 
178470 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
178471 
178472 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
178473 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
178474 
178475 ---------------------------------------------------------------------------------------------------------------
178476 
178477 
178478 --
178479 -- bulk performance
178480 --
178481 l_balance_type_code           VARCHAR2(1);
178482 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
178483 l_log_module                  VARCHAR2(240);
178484 
178485 --
178486 -- Upgrade strategy
178487 --
178488 l_actual_upg_option           VARCHAR2(1);
178489 l_enc_upg_option           VARCHAR2(1);
178490 
178491 --
178492 BEGIN
178493 --
178494 IF g_log_enabled THEN
178495       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_329';
178496 END IF;
178497 --
178498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178499 
178500       trace
178501          (p_msg      => 'BEGIN of AcctLineType_329'
178502          ,p_level    => C_LEVEL_PROCEDURE
178503          ,p_module   => l_log_module);
178504 
178505 END IF;
178506 --
178507 l_component_type             := 'AMB_JLT';
178508 l_component_code             := 'OFFSET';
178509 l_component_type_code        := 'S';
178510 l_component_appl_id          :=  707;
178511 l_amb_context_code           := 'DEFAULT';
178512 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
178513 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
178514 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
178515 l_line_definition_owner_code := 'S';
178516 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
178517 --
178518 l_balance_type_code          := 'A';
178519 l_segment                     := NULL;
178520 l_ccid                        := NULL;
178521 l_adr_transaction_coa_id      := NULL;
178522 l_adr_accounting_coa_id       := NULL;
178523 l_adr_flexfield_segment_code  := NULL;
178524 l_adr_flex_value_set_id       := NULL;
178525 l_adr_value_type_code         := NULL;
178526 l_adr_value_combination_id    := NULL;
178527 l_adr_value_segment_code      := NULL;
178528 
178529 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
178530 l_bflow_class_code           := '';    -- 4219869 Business Flow
178531 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
178532 l_budgetary_control_flag     := 'N';
178533 
178534 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
178535 l_bflow_applied_to_amt       := NULL; -- 5132302
178536 l_entered_amt_idx            := NULL;          -- 4262811
178537 l_accted_amt_idx             := NULL;          -- 4262811
178538 l_acc_rev_flag               := NULL;          -- 4262811
178539 l_accrual_line_num           := NULL;          -- 4262811
178540 l_tmp_amt                    := NULL;          -- 4262811
178541 --
178542  
178543 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
178544     l_balance_type_code <> 'B' THEN
178545 IF NVL(p_source_97,9E125) =  2 AND 
178546 p_source_95 >=  0
178547  THEN 
178548 
178549    --
178550    XLA_AE_LINES_PKG.SetNewLine;
178551 
178552    p_balance_type_code          := l_balance_type_code;
178553    -- set the flag so later we will know whether the gain loss line needs to be created
178554    
178555    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
178556      p_actual_flag :='A';
178557    END IF;
178558 
178559    --
178560    -- bulk performance
178561    --
178562    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
178563                                       p_header_num   => 0); -- 4262811
178564    --
178565    -- set accounting line options
178566    --
178567    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
178568            p_natural_side_code          => 'D'
178569          , p_gain_or_loss_flag          => 'N'
178570          , p_gl_transfer_mode_code      => 'S'
178571          , p_acct_entry_type_code       => 'A'
178572          , p_switch_side_flag           => 'Y'
178573          , p_merge_duplicate_code       => 'N'
178574          );
178575    --
178576    l_acc_rev_natural_side_code := 'C';  -- 4262811
178577    -- 
178578    --
178579    -- set accounting line type info
178580    --
178581    xla_ae_lines_pkg.SetAcctLineType
178582       (p_component_type             => l_component_type
178583       ,p_event_type_code            => l_event_type_code
178584       ,p_line_definition_owner_code => l_line_definition_owner_code
178585       ,p_line_definition_code       => l_line_definition_code
178586       ,p_accounting_line_code       => l_component_code
178587       ,p_accounting_line_type_code  => l_component_type_code
178588       ,p_accounting_line_appl_id    => l_component_appl_id
178589       ,p_amb_context_code           => l_amb_context_code
178590       ,p_entity_code                => l_entity_code
178591       ,p_event_class_code           => l_event_class_code);
178592    --
178593    -- set accounting class
178594    --
178595    xla_ae_lines_pkg.SetAcctClass(
178596            p_accounting_class_code  => 'OFFSET'
178597          , p_ae_header_id           => l_ae_header_id
178598          );
178599 
178600    --
178601    -- set rounding class
178602    --
178603    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
178604                       'OFFSET';
178605 
178606    --
178607    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
178608    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
178609    --
178610    -- bulk performance
178611    --
178612    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
178613 
178614    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
178615       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
178616 
178617    -- 4955764
178618    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
178619       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
178620 
178621    -- 4458381 Public Sector Enh
178622    
178623    --
178624    -- set accounting attributes for the line type
178625    --
178626    l_entered_amt_idx := 17;
178627    l_accted_amt_idx  := 22;
178628    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
178629    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
178630    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
178631    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
178632    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
178633    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
178634    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
178635    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
178636    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
178637    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
178638    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
178639    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
178640    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
178641    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
178642    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
178643    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
178644    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
178645    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
178646    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
178647    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
178648    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
178649    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
178650    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
178651    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
178652    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
178653    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
178654    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
178655    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
178656    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
178657    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
178658    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
178659    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
178660    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
178661    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
178662    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
178663    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
178664    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
178665    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
178666    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
178667    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
178668    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
178669    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
178670    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
178671    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
178672    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
178673    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
178674    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
178675    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
178676    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
178677 
178678    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
178679    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
178680 
178681    ---------------------------------------------------------------------------------------------------------------
178682    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
178683    ---------------------------------------------------------------------------------------------------------------
178684    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
178685 
178686    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
178687    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
178688 
178689    IF xla_accounting_cache_pkg.GetValueChar
178690          (p_source_code         => 'LEDGER_CATEGORY_CODE'
178691          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
178692    AND l_bflow_method_code = 'PRIOR_ENTRY'
178693 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
178694    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
178695          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
178696        )
178697    THEN
178698          xla_ae_lines_pkg.BflowUpgEntry
178699            (p_business_method_code    => l_bflow_method_code
178700            ,p_business_class_code     => l_bflow_class_code
178701            ,p_balance_type            => l_balance_type_code);
178702    ELSE
178703       NULL;
178704 -- No business flow processing for business flow method of NONE.
178705    END IF;
178706 
178707    --
178708    -- call analytical criteria
178709    --
178710    
178711    --
178712    -- call description
178713    --
178714    
178715 xla_ae_lines_pkg.SetLineDescription(
178716    p_ae_header_id => l_ae_header_id
178717   ,p_description  => Description_1 (
178718      p_application_id         => p_application_id
178719    , p_ae_header_id           => l_ae_header_id 
178720 , p_source_1 => p_source_1
178721 , p_source_2 => p_source_2
178722 , p_source_3 => p_source_3
178723 , p_source_4 => p_source_4
178724 , p_source_5 => p_source_5
178725    )
178726 );
178727 
178728 
178729    --
178730    -- call ADRs
178731    -- Bug 4922099
178732    --
178733    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
178734         (NVL(l_actual_upg_option, 'N') = 'O') OR
178735         (NVL(l_enc_upg_option, 'N') = 'O')
178736       )
178737    THEN
178738    NULL;
178739    --
178740    --
178741    
178742   l_ccid := AcctDerRule_6(
178743            p_application_id           => p_application_id
178744          , p_ae_header_id             => l_ae_header_id 
178745 , p_source_11 => p_source_11
178746          , x_transaction_coa_id       => l_adr_transaction_coa_id
178747          , x_accounting_coa_id        => l_adr_accounting_coa_id
178748          , x_value_type_code          => l_adr_value_type_code
178749          , p_side                     => 'NA'
178750    );
178751 
178752    xla_ae_lines_pkg.set_ccid(
178753     p_code_combination_id          => l_ccid
178754   , p_value_type_code              => l_adr_value_type_code
178755   , p_transaction_coa_id           => l_adr_transaction_coa_id
178756   , p_accounting_coa_id            => l_adr_accounting_coa_id
178757   , p_adr_code                     => 'CST_DEFAULT'
178758   , p_adr_type_code                => 'S'
178759   , p_component_type               => l_component_type
178760   , p_component_code               => l_component_code
178761   , p_component_type_code          => l_component_type_code
178762   , p_component_appl_id            => l_component_appl_id
178763   , p_amb_context_code             => l_amb_context_code
178764   , p_side                         => 'NA'
178765   );
178766 
178767 
178768    --
178769    --
178770    END IF;
178771    --
178772    -- Bug 4922099
178773    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
178774           (NVL(l_enc_upg_option, 'N') = 'O')
178775         ) AND
178776         (l_bflow_method_code = 'PRIOR_ENTRY')
178777       )
178778    THEN
178779       IF
178780       --
178781       1 = 2
178782       --
178783       THEN
178784       xla_accounting_err_pkg.build_message
178785                                     (p_appli_s_name            => 'XLA'
178786                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
178787                                     ,p_token_1                 => 'LINE_NUMBER'
178788                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
178789                                     ,p_token_2                 => 'LINE_TYPE_NAME'
178790                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
178791                                                                              l_component_type
178792                                                                             ,l_component_code
178793                                                                             ,l_component_type_code
178794                                                                             ,l_component_appl_id
178795                                                                             ,l_amb_context_code
178796                                                                             ,l_entity_code
178797                                                                             ,l_event_class_code
178798                                                                            )
178799                                     ,p_token_3                 => 'OWNER'
178800                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
178801                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
178802                                                                           ,p_lookup_code    => l_component_type_code
178803                                                                          )
178804                                     ,p_token_4                 => 'PRODUCT_NAME'
178805                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
178806                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
178807                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
178808                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
178809                                     ,p_ae_header_id            =>  NULL
178810                                        );
178811 
178812         IF (C_LEVEL_ERROR>= g_log_level) THEN
178813                  trace
178814                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
178815                       ,p_level    => C_LEVEL_ERROR
178816                       ,p_module   => l_log_module);
178817         END IF;
178818       END IF;
178819    END IF;
178820    --
178821    --
178822    ------------------------------------------------------------------------------------------------
178823    -- 4219869 Business Flow
178824    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
178825    -- Prior Entry.  Currently, the following code is always generated.
178826    ------------------------------------------------------------------------------------------------
178827    XLA_AE_LINES_PKG.ValidateCurrentLine;
178828 
178829    ------------------------------------------------------------------------------------
178830    -- 4219869 Business Flow
178831    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
178832    ------------------------------------------------------------------------------------
178833    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
178834 
178835    ----------------------------------------------------------------------------------
178836    -- 4219869 Business Flow
178837    -- Update journal entry status -- Need to generate this within IF <condition>
178838    ----------------------------------------------------------------------------------
178839    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
178840          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
178841          ,p_balance_type_code => l_balance_type_code
178842          );
178843 
178844    -------------------------------------------------------------------------------------------
178845    -- 4262811 - Generate the Accrual Reversal lines
178846    -------------------------------------------------------------------------------------------
178847    BEGIN
178848       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
178849                               (g_array_event(p_event_id).array_value_num('header_index'));
178850       IF l_acc_rev_flag IS NULL THEN
178851          l_acc_rev_flag := 'N';
178852       END IF;
178853    EXCEPTION
178854       WHEN OTHERS THEN
178855          l_acc_rev_flag := 'N';
178856    END;
178857    --
178858    IF (l_acc_rev_flag = 'Y') THEN
178859 
178860        -- 4645092  ------------------------------------------------------------------------------
178861        -- To allow MPA report to determine if it should generate report process
178862        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
178863        ------------------------------------------------------------------------------------------
178864 
178865        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
178866        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
178867    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
178868    -- call ADRs
178869    -- Bug 4922099
178870    --
178871    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
178872         (NVL(l_actual_upg_option, 'N') = 'O') OR
178873         (NVL(l_enc_upg_option, 'N') = 'O')
178874       )
178875    THEN
178876    NULL;
178877    --
178878    --
178879    
178880   l_ccid := AcctDerRule_6(
178881            p_application_id           => p_application_id
178882          , p_ae_header_id             => l_ae_header_id 
178883 , p_source_11 => p_source_11
178884          , x_transaction_coa_id       => l_adr_transaction_coa_id
178885          , x_accounting_coa_id        => l_adr_accounting_coa_id
178886          , x_value_type_code          => l_adr_value_type_code
178887          , p_side                     => 'NA'
178888    );
178889 
178890    xla_ae_lines_pkg.set_ccid(
178891     p_code_combination_id          => l_ccid
178892   , p_value_type_code              => l_adr_value_type_code
178893   , p_transaction_coa_id           => l_adr_transaction_coa_id
178894   , p_accounting_coa_id            => l_adr_accounting_coa_id
178895   , p_adr_code                     => 'CST_DEFAULT'
178896   , p_adr_type_code                => 'S'
178897   , p_component_type               => l_component_type
178898   , p_component_code               => l_component_code
178899   , p_component_type_code          => l_component_type_code
178900   , p_component_appl_id            => l_component_appl_id
178901   , p_amb_context_code             => l_amb_context_code
178902   , p_side                         => 'NA'
178903   );
178904 
178905 
178906    --
178907    --
178908    END IF;
178909 
178910        --
178911        -- Update the line information that should be overwritten
178912        --
178913        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
178914                                          p_header_num   => 1);
178915        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
178916 
178917        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
178918 
178919        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
178920           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
178921        END IF;
178922 
178923       --
178924       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
178925       --
178926       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
178927           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
178928       ELSE
178929           ---------------------------------------------------------------------------------------------------
178930           -- 4262811a Switch Sign
178931           ---------------------------------------------------------------------------------------------------
178932           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
178933           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
178934                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
178935           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
178936                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
178937           -- 5132302
178938           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
178939                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
178940 
178941       END IF;
178942 
178943       -- 4955764
178944       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
178945       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
178946 
178947 
178948       XLA_AE_LINES_PKG.ValidateCurrentLine;
178949       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
178950 
178951       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
178952                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
178953                ,p_balance_type_code => l_balance_type_code);
178954 
178955    END IF;
178956 
178957    -----------------------------------------------------------------------------------------
178958    -- 4262811 Multiperiod Accounting
178959    -----------------------------------------------------------------------------------------
178960      -- No MPA option is assigned.
178961 
178962 
178963 END IF;
178964 END IF;
178965 --
178966 
178967 --
178968 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178969    trace
178970       (p_msg      => 'END of AcctLineType_329'
178971       ,p_level    => C_LEVEL_PROCEDURE
178972       ,p_module   => l_log_module);
178973 END IF;
178974 --
178975 EXCEPTION
178976   WHEN xla_exceptions_pkg.application_exception THEN
178977       RAISE;
178978   WHEN OTHERS THEN
178979        xla_exceptions_pkg.raise_message
178980            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_329');
178981 END AcctLineType_329;
178982 --
178983 
178984 ---------------------------------------
178985 --
178986 -- PRIVATE FUNCTION
178987 --         AcctLineType_330
178988 --
178989 ---------------------------------------
178990 PROCEDURE AcctLineType_330 (
178991   p_application_id        IN NUMBER
178992  ,p_event_id              IN NUMBER
178993  ,p_calculate_acctd_flag  IN VARCHAR2
178994  ,p_calculate_g_l_flag    IN VARCHAR2
178995  ,p_actual_flag           IN OUT VARCHAR2
178996  ,p_balance_type_code     OUT VARCHAR2
178997  ,p_gain_or_loss_ref      OUT VARCHAR2
178998  
178999 --Cost Management Default Account
179000  , p_source_11            IN NUMBER
179001 --DISTRIBUTION_IDENTIFIER
179002  , p_source_84            IN NUMBER
179003 --Distribution Type
179004  , p_source_85            IN VARCHAR2
179005  , p_source_85_meaning    IN VARCHAR2
179006 --Entered Currency Code
179007  , p_source_88            IN VARCHAR2
179008 --Entered Amount
179009  , p_source_91            IN NUMBER
179010 --Currency Conversion Date
179011  , p_source_92            IN DATE
179012 --Currency Conversion Rate
179013  , p_source_93            IN NUMBER
179014 --Currency Conversion Type
179015  , p_source_94            IN VARCHAR2
179016 --Accounted Amount
179017  , p_source_95            IN NUMBER
179018 --Accounting Line Type
179019  , p_source_97            IN NUMBER
179020 )
179021 IS
179022 
179023 l_component_type              VARCHAR2(80);
179024 l_component_code              VARCHAR2(30);
179025 l_component_type_code         VARCHAR2(1);
179026 l_component_appl_id           INTEGER;
179027 l_amb_context_code            VARCHAR2(30);
179028 l_entity_code                 VARCHAR2(30);
179029 l_event_class_code            VARCHAR2(30);
179030 l_ae_header_id                NUMBER;
179031 l_event_type_code             VARCHAR2(30);
179032 l_line_definition_code        VARCHAR2(30);
179033 l_line_definition_owner_code  VARCHAR2(1);
179034 --
179035 -- adr variables
179036 l_segment                     VARCHAR2(30);
179037 l_ccid                        NUMBER;
179038 l_adr_transaction_coa_id      NUMBER;
179039 l_adr_accounting_coa_id       NUMBER;
179040 l_adr_flexfield_segment_code  VARCHAR2(30);
179041 l_adr_flex_value_set_id       NUMBER;
179042 l_adr_value_type_code         VARCHAR2(30);
179043 l_adr_value_combination_id    NUMBER;
179044 l_adr_value_segment_code      VARCHAR2(30);
179045 
179046 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
179047 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
179048 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
179049 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
179050 
179051 -- 4262811 Variables ------------------------------------------------------------------------------------------
179052 l_entered_amt_idx             NUMBER;
179053 l_accted_amt_idx              NUMBER;
179054 l_acc_rev_flag                VARCHAR2(1);
179055 l_accrual_line_num            NUMBER;
179056 l_tmp_amt                     NUMBER;
179057 l_acc_rev_natural_side_code   VARCHAR2(1);
179058 
179059 l_num_entries                 NUMBER;
179060 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
179061 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
179062 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
179063 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
179064 l_recog_line_1                NUMBER;
179065 l_recog_line_2                NUMBER;
179066 
179067 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
179068 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
179069 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
179070 
179071 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
179072 
179073 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
179074 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
179075 
179076 ---------------------------------------------------------------------------------------------------------------
179077 
179078 
179079 --
179080 -- bulk performance
179081 --
179082 l_balance_type_code           VARCHAR2(1);
179083 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
179084 l_log_module                  VARCHAR2(240);
179085 
179086 --
179087 -- Upgrade strategy
179088 --
179089 l_actual_upg_option           VARCHAR2(1);
179090 l_enc_upg_option           VARCHAR2(1);
179091 
179092 --
179093 BEGIN
179094 --
179095 IF g_log_enabled THEN
179096       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_330';
179097 END IF;
179098 --
179099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179100 
179101       trace
179102          (p_msg      => 'BEGIN of AcctLineType_330'
179103          ,p_level    => C_LEVEL_PROCEDURE
179104          ,p_module   => l_log_module);
179105 
179106 END IF;
179107 --
179108 l_component_type             := 'AMB_JLT';
179109 l_component_code             := 'OFFSET';
179110 l_component_type_code        := 'S';
179111 l_component_appl_id          :=  707;
179112 l_amb_context_code           := 'DEFAULT';
179113 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
179114 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
179115 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
179116 l_line_definition_owner_code := 'S';
179117 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
179118 --
179119 l_balance_type_code          := 'A';
179120 l_segment                     := NULL;
179121 l_ccid                        := NULL;
179122 l_adr_transaction_coa_id      := NULL;
179123 l_adr_accounting_coa_id       := NULL;
179124 l_adr_flexfield_segment_code  := NULL;
179125 l_adr_flex_value_set_id       := NULL;
179126 l_adr_value_type_code         := NULL;
179127 l_adr_value_combination_id    := NULL;
179128 l_adr_value_segment_code      := NULL;
179129 
179130 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
179131 l_bflow_class_code           := '';    -- 4219869 Business Flow
179132 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
179133 l_budgetary_control_flag     := 'N';
179134 
179135 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
179136 l_bflow_applied_to_amt       := NULL; -- 5132302
179137 l_entered_amt_idx            := NULL;          -- 4262811
179138 l_accted_amt_idx             := NULL;          -- 4262811
179139 l_acc_rev_flag               := NULL;          -- 4262811
179140 l_accrual_line_num           := NULL;          -- 4262811
179141 l_tmp_amt                    := NULL;          -- 4262811
179142 --
179143  
179144 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
179145     l_balance_type_code <> 'B' THEN
179146 IF NVL(p_source_97,9E125) =  2 AND 
179147 p_source_95 <=  0
179148  THEN 
179149 
179150    --
179151    XLA_AE_LINES_PKG.SetNewLine;
179152 
179153    p_balance_type_code          := l_balance_type_code;
179154    -- set the flag so later we will know whether the gain loss line needs to be created
179155    
179156    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
179157      p_actual_flag :='A';
179158    END IF;
179159 
179160    --
179161    -- bulk performance
179162    --
179163    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
179164                                       p_header_num   => 0); -- 4262811
179165    --
179166    -- set accounting line options
179167    --
179168    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
179169            p_natural_side_code          => 'D'
179170          , p_gain_or_loss_flag          => 'N'
179171          , p_gl_transfer_mode_code      => 'S'
179172          , p_acct_entry_type_code       => 'A'
179173          , p_switch_side_flag           => 'Y'
179174          , p_merge_duplicate_code       => 'N'
179175          );
179176    --
179177    l_acc_rev_natural_side_code := 'C';  -- 4262811
179178    -- 
179179    --
179180    -- set accounting line type info
179181    --
179182    xla_ae_lines_pkg.SetAcctLineType
179183       (p_component_type             => l_component_type
179184       ,p_event_type_code            => l_event_type_code
179185       ,p_line_definition_owner_code => l_line_definition_owner_code
179186       ,p_line_definition_code       => l_line_definition_code
179187       ,p_accounting_line_code       => l_component_code
179188       ,p_accounting_line_type_code  => l_component_type_code
179189       ,p_accounting_line_appl_id    => l_component_appl_id
179190       ,p_amb_context_code           => l_amb_context_code
179191       ,p_entity_code                => l_entity_code
179192       ,p_event_class_code           => l_event_class_code);
179193    --
179194    -- set accounting class
179195    --
179196    xla_ae_lines_pkg.SetAcctClass(
179197            p_accounting_class_code  => 'OFFSET'
179198          , p_ae_header_id           => l_ae_header_id
179199          );
179200 
179201    --
179202    -- set rounding class
179203    --
179204    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
179205                       'OFFSET';
179206 
179207    --
179208    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
179209    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
179210    --
179211    -- bulk performance
179212    --
179213    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
179214 
179215    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
179216       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
179217 
179218    -- 4955764
179219    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
179220       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
179221 
179222    -- 4458381 Public Sector Enh
179223    
179224    --
179225    -- set accounting attributes for the line type
179226    --
179227    l_entered_amt_idx := 3;
179228    l_accted_amt_idx  := 8;
179229    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
179230    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
179231    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
179232    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
179233    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
179234    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
179235    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
179236    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
179237    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
179238    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
179239    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
179240    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
179241    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
179242    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
179243    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
179244    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
179245    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
179246 
179247    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
179248    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
179249 
179250    ---------------------------------------------------------------------------------------------------------------
179251    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
179252    ---------------------------------------------------------------------------------------------------------------
179253    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
179254 
179255    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
179256    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
179257 
179258    IF xla_accounting_cache_pkg.GetValueChar
179259          (p_source_code         => 'LEDGER_CATEGORY_CODE'
179260          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
179261    AND l_bflow_method_code = 'PRIOR_ENTRY'
179262 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
179263    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
179264          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
179265        )
179266    THEN
179267          xla_ae_lines_pkg.BflowUpgEntry
179268            (p_business_method_code    => l_bflow_method_code
179269            ,p_business_class_code     => l_bflow_class_code
179270            ,p_balance_type            => l_balance_type_code);
179271    ELSE
179272       NULL;
179273 -- No business flow processing for business flow method of NONE.
179274    END IF;
179275 
179276    --
179277    -- call analytical criteria
179278    --
179279    
179280    --
179281    -- call description
179282    --
179283    -- No description or it is inherited.
179284    --
179285    -- call ADRs
179286    -- Bug 4922099
179287    --
179288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
179289         (NVL(l_actual_upg_option, 'N') = 'O') OR
179290         (NVL(l_enc_upg_option, 'N') = 'O')
179291       )
179292    THEN
179293    NULL;
179294    --
179295    --
179296    
179297   l_ccid := AcctDerRule_6(
179298            p_application_id           => p_application_id
179299          , p_ae_header_id             => l_ae_header_id 
179300 , p_source_11 => p_source_11
179301          , x_transaction_coa_id       => l_adr_transaction_coa_id
179302          , x_accounting_coa_id        => l_adr_accounting_coa_id
179303          , x_value_type_code          => l_adr_value_type_code
179304          , p_side                     => 'NA'
179305    );
179306 
179307    xla_ae_lines_pkg.set_ccid(
179308     p_code_combination_id          => l_ccid
179309   , p_value_type_code              => l_adr_value_type_code
179310   , p_transaction_coa_id           => l_adr_transaction_coa_id
179311   , p_accounting_coa_id            => l_adr_accounting_coa_id
179312   , p_adr_code                     => 'CST_DEFAULT'
179313   , p_adr_type_code                => 'S'
179314   , p_component_type               => l_component_type
179315   , p_component_code               => l_component_code
179316   , p_component_type_code          => l_component_type_code
179317   , p_component_appl_id            => l_component_appl_id
179318   , p_amb_context_code             => l_amb_context_code
179319   , p_side                         => 'NA'
179320   );
179321 
179322 
179323    --
179324    --
179325    END IF;
179326    --
179327    -- Bug 4922099
179328    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
179329           (NVL(l_enc_upg_option, 'N') = 'O')
179330         ) AND
179331         (l_bflow_method_code = 'PRIOR_ENTRY')
179332       )
179333    THEN
179334       IF
179335       --
179336       1 = 2
179337       --
179338       THEN
179339       xla_accounting_err_pkg.build_message
179340                                     (p_appli_s_name            => 'XLA'
179341                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
179342                                     ,p_token_1                 => 'LINE_NUMBER'
179343                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
179344                                     ,p_token_2                 => 'LINE_TYPE_NAME'
179345                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
179346                                                                              l_component_type
179347                                                                             ,l_component_code
179348                                                                             ,l_component_type_code
179349                                                                             ,l_component_appl_id
179350                                                                             ,l_amb_context_code
179351                                                                             ,l_entity_code
179352                                                                             ,l_event_class_code
179353                                                                            )
179354                                     ,p_token_3                 => 'OWNER'
179355                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
179356                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
179357                                                                           ,p_lookup_code    => l_component_type_code
179358                                                                          )
179359                                     ,p_token_4                 => 'PRODUCT_NAME'
179360                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
179361                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
179362                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
179363                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
179364                                     ,p_ae_header_id            =>  NULL
179365                                        );
179366 
179367         IF (C_LEVEL_ERROR>= g_log_level) THEN
179368                  trace
179369                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
179370                       ,p_level    => C_LEVEL_ERROR
179371                       ,p_module   => l_log_module);
179372         END IF;
179373       END IF;
179374    END IF;
179375    --
179376    --
179377    ------------------------------------------------------------------------------------------------
179378    -- 4219869 Business Flow
179379    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
179380    -- Prior Entry.  Currently, the following code is always generated.
179381    ------------------------------------------------------------------------------------------------
179382    XLA_AE_LINES_PKG.ValidateCurrentLine;
179383 
179384    ------------------------------------------------------------------------------------
179385    -- 4219869 Business Flow
179386    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
179387    ------------------------------------------------------------------------------------
179388    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
179389 
179390    ----------------------------------------------------------------------------------
179391    -- 4219869 Business Flow
179392    -- Update journal entry status -- Need to generate this within IF <condition>
179393    ----------------------------------------------------------------------------------
179394    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
179395          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
179396          ,p_balance_type_code => l_balance_type_code
179397          );
179398 
179399    -------------------------------------------------------------------------------------------
179400    -- 4262811 - Generate the Accrual Reversal lines
179401    -------------------------------------------------------------------------------------------
179402    BEGIN
179403       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
179404                               (g_array_event(p_event_id).array_value_num('header_index'));
179405       IF l_acc_rev_flag IS NULL THEN
179406          l_acc_rev_flag := 'N';
179407       END IF;
179408    EXCEPTION
179409       WHEN OTHERS THEN
179410          l_acc_rev_flag := 'N';
179411    END;
179412    --
179413    IF (l_acc_rev_flag = 'Y') THEN
179414 
179415        -- 4645092  ------------------------------------------------------------------------------
179416        -- To allow MPA report to determine if it should generate report process
179417        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
179418        ------------------------------------------------------------------------------------------
179419 
179420        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
179421        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
179422    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
179423    -- call ADRs
179424    -- Bug 4922099
179425    --
179426    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
179427         (NVL(l_actual_upg_option, 'N') = 'O') OR
179428         (NVL(l_enc_upg_option, 'N') = 'O')
179429       )
179430    THEN
179431    NULL;
179432    --
179433    --
179434    
179435   l_ccid := AcctDerRule_6(
179436            p_application_id           => p_application_id
179437          , p_ae_header_id             => l_ae_header_id 
179438 , p_source_11 => p_source_11
179439          , x_transaction_coa_id       => l_adr_transaction_coa_id
179440          , x_accounting_coa_id        => l_adr_accounting_coa_id
179441          , x_value_type_code          => l_adr_value_type_code
179442          , p_side                     => 'NA'
179443    );
179444 
179445    xla_ae_lines_pkg.set_ccid(
179446     p_code_combination_id          => l_ccid
179447   , p_value_type_code              => l_adr_value_type_code
179448   , p_transaction_coa_id           => l_adr_transaction_coa_id
179449   , p_accounting_coa_id            => l_adr_accounting_coa_id
179450   , p_adr_code                     => 'CST_DEFAULT'
179451   , p_adr_type_code                => 'S'
179452   , p_component_type               => l_component_type
179453   , p_component_code               => l_component_code
179454   , p_component_type_code          => l_component_type_code
179455   , p_component_appl_id            => l_component_appl_id
179456   , p_amb_context_code             => l_amb_context_code
179457   , p_side                         => 'NA'
179458   );
179459 
179460 
179461    --
179462    --
179463    END IF;
179464 
179465        --
179466        -- Update the line information that should be overwritten
179467        --
179468        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
179469                                          p_header_num   => 1);
179470        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
179471 
179472        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
179473 
179474        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
179475           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
179476        END IF;
179477 
179478       --
179479       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
179480       --
179481       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
179482           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
179483       ELSE
179484           ---------------------------------------------------------------------------------------------------
179485           -- 4262811a Switch Sign
179486           ---------------------------------------------------------------------------------------------------
179487           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
179488           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
179489                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
179490           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
179491                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
179492           -- 5132302
179493           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
179494                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
179495 
179496       END IF;
179497 
179498       -- 4955764
179499       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
179500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
179501 
179502 
179503       XLA_AE_LINES_PKG.ValidateCurrentLine;
179504       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
179505 
179506       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
179507                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
179508                ,p_balance_type_code => l_balance_type_code);
179509 
179510    END IF;
179511 
179512    -----------------------------------------------------------------------------------------
179513    -- 4262811 Multiperiod Accounting
179514    -----------------------------------------------------------------------------------------
179515      -- No MPA option is assigned.
179516 
179517 
179518 END IF;
179519 END IF;
179520 --
179521 
179522 --
179523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179524    trace
179525       (p_msg      => 'END of AcctLineType_330'
179526       ,p_level    => C_LEVEL_PROCEDURE
179527       ,p_module   => l_log_module);
179528 END IF;
179529 --
179530 EXCEPTION
179531   WHEN xla_exceptions_pkg.application_exception THEN
179532       RAISE;
179533   WHEN OTHERS THEN
179534        xla_exceptions_pkg.raise_message
179535            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_330');
179536 END AcctLineType_330;
179537 --
179538 
179539 ---------------------------------------
179540 --
179541 -- PRIVATE FUNCTION
179542 --         AcctLineType_331
179543 --
179544 ---------------------------------------
179545 PROCEDURE AcctLineType_331 (
179546   p_application_id        IN NUMBER
179547  ,p_event_id              IN NUMBER
179548  ,p_calculate_acctd_flag  IN VARCHAR2
179549  ,p_calculate_g_l_flag    IN VARCHAR2
179550  ,p_actual_flag           IN OUT VARCHAR2
179551  ,p_balance_type_code     OUT VARCHAR2
179552  ,p_gain_or_loss_ref      OUT VARCHAR2
179553  
179554 --Cost Management Default Account
179555  , p_source_11            IN NUMBER
179556 --DISTRIBUTION_IDENTIFIER
179557  , p_source_84            IN NUMBER
179558 --Distribution Type
179559  , p_source_85            IN VARCHAR2
179560  , p_source_85_meaning    IN VARCHAR2
179561 --Entered Currency Code
179562  , p_source_88            IN VARCHAR2
179563 --Entered Amount
179564  , p_source_91            IN NUMBER
179565 --Currency Conversion Date
179566  , p_source_92            IN DATE
179567 --Currency Conversion Rate
179568  , p_source_93            IN NUMBER
179569 --Currency Conversion Type
179570  , p_source_94            IN VARCHAR2
179571 --Accounted Amount
179572  , p_source_95            IN NUMBER
179573 --Accounting Line Type
179574  , p_source_97            IN NUMBER
179575 )
179576 IS
179577 
179578 l_component_type              VARCHAR2(80);
179579 l_component_code              VARCHAR2(30);
179580 l_component_type_code         VARCHAR2(1);
179581 l_component_appl_id           INTEGER;
179582 l_amb_context_code            VARCHAR2(30);
179583 l_entity_code                 VARCHAR2(30);
179584 l_event_class_code            VARCHAR2(30);
179585 l_ae_header_id                NUMBER;
179586 l_event_type_code             VARCHAR2(30);
179587 l_line_definition_code        VARCHAR2(30);
179588 l_line_definition_owner_code  VARCHAR2(1);
179589 --
179590 -- adr variables
179591 l_segment                     VARCHAR2(30);
179592 l_ccid                        NUMBER;
179593 l_adr_transaction_coa_id      NUMBER;
179594 l_adr_accounting_coa_id       NUMBER;
179595 l_adr_flexfield_segment_code  VARCHAR2(30);
179596 l_adr_flex_value_set_id       NUMBER;
179597 l_adr_value_type_code         VARCHAR2(30);
179598 l_adr_value_combination_id    NUMBER;
179599 l_adr_value_segment_code      VARCHAR2(30);
179600 
179601 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
179602 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
179603 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
179604 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
179605 
179606 -- 4262811 Variables ------------------------------------------------------------------------------------------
179607 l_entered_amt_idx             NUMBER;
179608 l_accted_amt_idx              NUMBER;
179609 l_acc_rev_flag                VARCHAR2(1);
179610 l_accrual_line_num            NUMBER;
179611 l_tmp_amt                     NUMBER;
179612 l_acc_rev_natural_side_code   VARCHAR2(1);
179613 
179614 l_num_entries                 NUMBER;
179615 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
179616 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
179617 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
179618 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
179619 l_recog_line_1                NUMBER;
179620 l_recog_line_2                NUMBER;
179621 
179622 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
179623 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
179624 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
179625 
179626 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
179627 
179628 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
179629 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
179630 
179631 ---------------------------------------------------------------------------------------------------------------
179632 
179633 
179634 --
179635 -- bulk performance
179636 --
179637 l_balance_type_code           VARCHAR2(1);
179638 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
179639 l_log_module                  VARCHAR2(240);
179640 
179641 --
179642 -- Upgrade strategy
179643 --
179644 l_actual_upg_option           VARCHAR2(1);
179645 l_enc_upg_option           VARCHAR2(1);
179646 
179647 --
179648 BEGIN
179649 --
179650 IF g_log_enabled THEN
179651       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_331';
179652 END IF;
179653 --
179654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179655 
179656       trace
179657          (p_msg      => 'BEGIN of AcctLineType_331'
179658          ,p_level    => C_LEVEL_PROCEDURE
179659          ,p_module   => l_log_module);
179660 
179661 END IF;
179662 --
179663 l_component_type             := 'AMB_JLT';
179664 l_component_code             := 'OFFSET';
179665 l_component_type_code        := 'S';
179666 l_component_appl_id          :=  707;
179667 l_amb_context_code           := 'DEFAULT';
179668 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
179669 l_event_class_code           := 'LOT';
179670 l_event_type_code            := 'LOT_ALL';
179671 l_line_definition_owner_code := 'S';
179672 l_line_definition_code       := 'WIP_MATERIAL_LOT';
179673 --
179674 l_balance_type_code          := 'A';
179675 l_segment                     := NULL;
179676 l_ccid                        := NULL;
179677 l_adr_transaction_coa_id      := NULL;
179678 l_adr_accounting_coa_id       := NULL;
179679 l_adr_flexfield_segment_code  := NULL;
179680 l_adr_flex_value_set_id       := NULL;
179681 l_adr_value_type_code         := NULL;
179682 l_adr_value_combination_id    := NULL;
179683 l_adr_value_segment_code      := NULL;
179684 
179685 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
179686 l_bflow_class_code           := '';    -- 4219869 Business Flow
179687 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
179688 l_budgetary_control_flag     := 'N';
179689 
179690 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
179691 l_bflow_applied_to_amt       := NULL; -- 5132302
179692 l_entered_amt_idx            := NULL;          -- 4262811
179693 l_accted_amt_idx             := NULL;          -- 4262811
179694 l_acc_rev_flag               := NULL;          -- 4262811
179695 l_accrual_line_num           := NULL;          -- 4262811
179696 l_tmp_amt                    := NULL;          -- 4262811
179697 --
179698  
179699 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
179700     l_balance_type_code <> 'B' THEN
179701 IF NVL(p_source_97,9E125) =  25 OR 
179702 NVL(p_source_97,9E125) =  27
179703  THEN 
179704 
179705    --
179706    XLA_AE_LINES_PKG.SetNewLine;
179707 
179708    p_balance_type_code          := l_balance_type_code;
179709    -- set the flag so later we will know whether the gain loss line needs to be created
179710    
179711    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
179712      p_actual_flag :='A';
179713    END IF;
179714 
179715    --
179716    -- bulk performance
179717    --
179718    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
179719                                       p_header_num   => 0); -- 4262811
179720    --
179721    -- set accounting line options
179722    --
179723    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
179724            p_natural_side_code          => 'D'
179725          , p_gain_or_loss_flag          => 'N'
179726          , p_gl_transfer_mode_code      => 'S'
179727          , p_acct_entry_type_code       => 'A'
179728          , p_switch_side_flag           => 'Y'
179729          , p_merge_duplicate_code       => 'N'
179730          );
179731    --
179732    l_acc_rev_natural_side_code := 'C';  -- 4262811
179733    -- 
179734    --
179735    -- set accounting line type info
179736    --
179737    xla_ae_lines_pkg.SetAcctLineType
179738       (p_component_type             => l_component_type
179739       ,p_event_type_code            => l_event_type_code
179740       ,p_line_definition_owner_code => l_line_definition_owner_code
179741       ,p_line_definition_code       => l_line_definition_code
179742       ,p_accounting_line_code       => l_component_code
179743       ,p_accounting_line_type_code  => l_component_type_code
179744       ,p_accounting_line_appl_id    => l_component_appl_id
179745       ,p_amb_context_code           => l_amb_context_code
179746       ,p_entity_code                => l_entity_code
179747       ,p_event_class_code           => l_event_class_code);
179748    --
179749    -- set accounting class
179750    --
179751    xla_ae_lines_pkg.SetAcctClass(
179752            p_accounting_class_code  => 'OFFSET'
179753          , p_ae_header_id           => l_ae_header_id
179754          );
179755 
179756    --
179757    -- set rounding class
179758    --
179759    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
179760                       'OFFSET';
179761 
179762    --
179763    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
179764    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
179765    --
179766    -- bulk performance
179767    --
179768    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
179769 
179770    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
179771       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
179772 
179773    -- 4955764
179774    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
179775       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
179776 
179777    -- 4458381 Public Sector Enh
179778    
179779    --
179780    -- set accounting attributes for the line type
179781    --
179782    l_entered_amt_idx := 3;
179783    l_accted_amt_idx  := 8;
179784    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
179785    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
179786    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
179787    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
179788    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
179789    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
179790    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
179791    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
179792    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
179793    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
179794    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
179795    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
179796    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
179797    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
179798    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
179799    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
179800    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
179801 
179802    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
179803    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
179804 
179805    ---------------------------------------------------------------------------------------------------------------
179806    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
179807    ---------------------------------------------------------------------------------------------------------------
179808    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
179809 
179810    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
179811    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
179812 
179813    IF xla_accounting_cache_pkg.GetValueChar
179814          (p_source_code         => 'LEDGER_CATEGORY_CODE'
179815          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
179816    AND l_bflow_method_code = 'PRIOR_ENTRY'
179817 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
179818    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
179819          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
179820        )
179821    THEN
179822          xla_ae_lines_pkg.BflowUpgEntry
179823            (p_business_method_code    => l_bflow_method_code
179824            ,p_business_class_code     => l_bflow_class_code
179825            ,p_balance_type            => l_balance_type_code);
179826    ELSE
179827       NULL;
179828 -- No business flow processing for business flow method of NONE.
179829    END IF;
179830 
179831    --
179832    -- call analytical criteria
179833    --
179834    
179835    --
179836    -- call description
179837    --
179838    -- No description or it is inherited.
179839    --
179840    -- call ADRs
179841    -- Bug 4922099
179842    --
179843    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
179844         (NVL(l_actual_upg_option, 'N') = 'O') OR
179845         (NVL(l_enc_upg_option, 'N') = 'O')
179846       )
179847    THEN
179848    NULL;
179849    --
179850    --
179851    
179852   l_ccid := AcctDerRule_6(
179853            p_application_id           => p_application_id
179854          , p_ae_header_id             => l_ae_header_id 
179855 , p_source_11 => p_source_11
179856          , x_transaction_coa_id       => l_adr_transaction_coa_id
179857          , x_accounting_coa_id        => l_adr_accounting_coa_id
179858          , x_value_type_code          => l_adr_value_type_code
179859          , p_side                     => 'NA'
179860    );
179861 
179862    xla_ae_lines_pkg.set_ccid(
179863     p_code_combination_id          => l_ccid
179864   , p_value_type_code              => l_adr_value_type_code
179865   , p_transaction_coa_id           => l_adr_transaction_coa_id
179866   , p_accounting_coa_id            => l_adr_accounting_coa_id
179867   , p_adr_code                     => 'CST_DEFAULT'
179868   , p_adr_type_code                => 'S'
179869   , p_component_type               => l_component_type
179870   , p_component_code               => l_component_code
179871   , p_component_type_code          => l_component_type_code
179872   , p_component_appl_id            => l_component_appl_id
179873   , p_amb_context_code             => l_amb_context_code
179874   , p_side                         => 'NA'
179875   );
179876 
179877 
179878    --
179879    --
179880    END IF;
179881    --
179882    -- Bug 4922099
179883    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
179884           (NVL(l_enc_upg_option, 'N') = 'O')
179885         ) AND
179886         (l_bflow_method_code = 'PRIOR_ENTRY')
179887       )
179888    THEN
179889       IF
179890       --
179891       1 = 2
179892       --
179893       THEN
179894       xla_accounting_err_pkg.build_message
179895                                     (p_appli_s_name            => 'XLA'
179896                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
179897                                     ,p_token_1                 => 'LINE_NUMBER'
179898                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
179899                                     ,p_token_2                 => 'LINE_TYPE_NAME'
179900                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
179901                                                                              l_component_type
179902                                                                             ,l_component_code
179903                                                                             ,l_component_type_code
179904                                                                             ,l_component_appl_id
179905                                                                             ,l_amb_context_code
179906                                                                             ,l_entity_code
179907                                                                             ,l_event_class_code
179908                                                                            )
179909                                     ,p_token_3                 => 'OWNER'
179910                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
179911                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
179912                                                                           ,p_lookup_code    => l_component_type_code
179913                                                                          )
179914                                     ,p_token_4                 => 'PRODUCT_NAME'
179915                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
179916                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
179917                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
179918                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
179919                                     ,p_ae_header_id            =>  NULL
179920                                        );
179921 
179922         IF (C_LEVEL_ERROR>= g_log_level) THEN
179923                  trace
179924                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
179925                       ,p_level    => C_LEVEL_ERROR
179926                       ,p_module   => l_log_module);
179927         END IF;
179928       END IF;
179929    END IF;
179930    --
179931    --
179932    ------------------------------------------------------------------------------------------------
179933    -- 4219869 Business Flow
179934    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
179935    -- Prior Entry.  Currently, the following code is always generated.
179936    ------------------------------------------------------------------------------------------------
179937    XLA_AE_LINES_PKG.ValidateCurrentLine;
179938 
179939    ------------------------------------------------------------------------------------
179940    -- 4219869 Business Flow
179941    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
179942    ------------------------------------------------------------------------------------
179943    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
179944 
179945    ----------------------------------------------------------------------------------
179946    -- 4219869 Business Flow
179947    -- Update journal entry status -- Need to generate this within IF <condition>
179948    ----------------------------------------------------------------------------------
179949    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
179950          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
179951          ,p_balance_type_code => l_balance_type_code
179952          );
179953 
179954    -------------------------------------------------------------------------------------------
179955    -- 4262811 - Generate the Accrual Reversal lines
179956    -------------------------------------------------------------------------------------------
179957    BEGIN
179958       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
179959                               (g_array_event(p_event_id).array_value_num('header_index'));
179960       IF l_acc_rev_flag IS NULL THEN
179961          l_acc_rev_flag := 'N';
179962       END IF;
179963    EXCEPTION
179964       WHEN OTHERS THEN
179965          l_acc_rev_flag := 'N';
179966    END;
179967    --
179968    IF (l_acc_rev_flag = 'Y') THEN
179969 
179970        -- 4645092  ------------------------------------------------------------------------------
179971        -- To allow MPA report to determine if it should generate report process
179972        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
179973        ------------------------------------------------------------------------------------------
179974 
179975        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
179976        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
179977    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
179978    -- call ADRs
179979    -- Bug 4922099
179980    --
179981    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
179982         (NVL(l_actual_upg_option, 'N') = 'O') OR
179983         (NVL(l_enc_upg_option, 'N') = 'O')
179984       )
179985    THEN
179986    NULL;
179987    --
179988    --
179989    
179990   l_ccid := AcctDerRule_6(
179991            p_application_id           => p_application_id
179992          , p_ae_header_id             => l_ae_header_id 
179993 , p_source_11 => p_source_11
179994          , x_transaction_coa_id       => l_adr_transaction_coa_id
179995          , x_accounting_coa_id        => l_adr_accounting_coa_id
179996          , x_value_type_code          => l_adr_value_type_code
179997          , p_side                     => 'NA'
179998    );
179999 
180000    xla_ae_lines_pkg.set_ccid(
180001     p_code_combination_id          => l_ccid
180002   , p_value_type_code              => l_adr_value_type_code
180003   , p_transaction_coa_id           => l_adr_transaction_coa_id
180004   , p_accounting_coa_id            => l_adr_accounting_coa_id
180005   , p_adr_code                     => 'CST_DEFAULT'
180006   , p_adr_type_code                => 'S'
180007   , p_component_type               => l_component_type
180008   , p_component_code               => l_component_code
180009   , p_component_type_code          => l_component_type_code
180010   , p_component_appl_id            => l_component_appl_id
180011   , p_amb_context_code             => l_amb_context_code
180012   , p_side                         => 'NA'
180013   );
180014 
180015 
180016    --
180017    --
180018    END IF;
180019 
180020        --
180021        -- Update the line information that should be overwritten
180022        --
180023        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
180024                                          p_header_num   => 1);
180025        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
180026 
180027        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
180028 
180029        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
180030           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
180031        END IF;
180032 
180033       --
180034       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
180035       --
180036       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
180037           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
180038       ELSE
180039           ---------------------------------------------------------------------------------------------------
180040           -- 4262811a Switch Sign
180041           ---------------------------------------------------------------------------------------------------
180042           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
180043           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
180044                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
180045           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
180046                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
180047           -- 5132302
180048           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
180049                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
180050 
180051       END IF;
180052 
180053       -- 4955764
180054       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
180055       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
180056 
180057 
180058       XLA_AE_LINES_PKG.ValidateCurrentLine;
180059       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
180060 
180061       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
180062                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
180063                ,p_balance_type_code => l_balance_type_code);
180064 
180065    END IF;
180066 
180067    -----------------------------------------------------------------------------------------
180068    -- 4262811 Multiperiod Accounting
180069    -----------------------------------------------------------------------------------------
180070      -- No MPA option is assigned.
180071 
180072 
180073 END IF;
180074 END IF;
180075 --
180076 
180077 --
180078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180079    trace
180080       (p_msg      => 'END of AcctLineType_331'
180081       ,p_level    => C_LEVEL_PROCEDURE
180082       ,p_module   => l_log_module);
180083 END IF;
180084 --
180085 EXCEPTION
180086   WHEN xla_exceptions_pkg.application_exception THEN
180087       RAISE;
180088   WHEN OTHERS THEN
180089        xla_exceptions_pkg.raise_message
180090            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_331');
180091 END AcctLineType_331;
180092 --
180093 
180094 ---------------------------------------
180095 --
180096 -- PRIVATE FUNCTION
180097 --         AcctLineType_332
180098 --
180099 ---------------------------------------
180100 PROCEDURE AcctLineType_332 (
180101   p_application_id        IN NUMBER
180102  ,p_event_id              IN NUMBER
180103  ,p_calculate_acctd_flag  IN VARCHAR2
180104  ,p_calculate_g_l_flag    IN VARCHAR2
180105  ,p_actual_flag           IN OUT VARCHAR2
180106  ,p_balance_type_code     OUT VARCHAR2
180107  ,p_gain_or_loss_ref      OUT VARCHAR2
180108  
180109 --TRANSACTION_ID
180110  , p_source_1            IN NUMBER
180111 --Item Concatenated Segments
180112  , p_source_2            IN VARCHAR2
180113 --Transaction Quantity
180114  , p_source_3            IN NUMBER
180115 --Transaction Unit of Measure Code
180116  , p_source_4            IN VARCHAR2
180117 --Inventory Transaction Type Description
180118  , p_source_5            IN VARCHAR2
180119 --Product Line Accounting Category Expense Account
180120  , p_source_24            IN NUMBER
180121 --Transfer to Subinventory or Cost Group category expense account
180122  , p_source_25            IN NUMBER
180123 --Cost Group Identifier
180124  , p_source_26            IN NUMBER
180125 --INV Header Transfer Cost Group ID
180126  , p_source_27            IN NUMBER
180127 --INV Header Cost Group ID
180128  , p_source_28            IN NUMBER
180129 --Subinventory Name
180130  , p_source_29            IN VARCHAR2
180131 --INV Header Transfer Subinventory
180132  , p_source_31            IN VARCHAR2
180133 --DISTRIBUTION_IDENTIFIER
180134  , p_source_84            IN NUMBER
180135 --Distribution Type
180136  , p_source_85            IN VARCHAR2
180137  , p_source_85_meaning    IN VARCHAR2
180138 --Entered Currency Code
180139  , p_source_88            IN VARCHAR2
180140 --Entered Amount
180141  , p_source_91            IN NUMBER
180142 --Currency Conversion Date
180143  , p_source_92            IN DATE
180144 --Currency Conversion Rate
180145  , p_source_93            IN NUMBER
180146 --Currency Conversion Type
180147  , p_source_94            IN VARCHAR2
180148 --Accounted Amount
180149  , p_source_95            IN NUMBER
180150 --Accounting Line Type
180151  , p_source_97            IN NUMBER
180152 )
180153 IS
180154 
180155 l_component_type              VARCHAR2(80);
180156 l_component_code              VARCHAR2(30);
180157 l_component_type_code         VARCHAR2(1);
180158 l_component_appl_id           INTEGER;
180159 l_amb_context_code            VARCHAR2(30);
180160 l_entity_code                 VARCHAR2(30);
180161 l_event_class_code            VARCHAR2(30);
180162 l_ae_header_id                NUMBER;
180163 l_event_type_code             VARCHAR2(30);
180164 l_line_definition_code        VARCHAR2(30);
180165 l_line_definition_owner_code  VARCHAR2(1);
180166 --
180167 -- adr variables
180168 l_segment                     VARCHAR2(30);
180169 l_ccid                        NUMBER;
180170 l_adr_transaction_coa_id      NUMBER;
180171 l_adr_accounting_coa_id       NUMBER;
180172 l_adr_flexfield_segment_code  VARCHAR2(30);
180173 l_adr_flex_value_set_id       NUMBER;
180174 l_adr_value_type_code         VARCHAR2(30);
180175 l_adr_value_combination_id    NUMBER;
180176 l_adr_value_segment_code      VARCHAR2(30);
180177 
180178 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
180179 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
180180 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
180181 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
180182 
180183 -- 4262811 Variables ------------------------------------------------------------------------------------------
180184 l_entered_amt_idx             NUMBER;
180185 l_accted_amt_idx              NUMBER;
180186 l_acc_rev_flag                VARCHAR2(1);
180187 l_accrual_line_num            NUMBER;
180188 l_tmp_amt                     NUMBER;
180189 l_acc_rev_natural_side_code   VARCHAR2(1);
180190 
180191 l_num_entries                 NUMBER;
180192 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
180193 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
180194 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
180195 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
180196 l_recog_line_1                NUMBER;
180197 l_recog_line_2                NUMBER;
180198 
180199 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
180200 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
180201 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
180202 
180203 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
180204 
180205 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
180206 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
180207 
180208 ---------------------------------------------------------------------------------------------------------------
180209 
180210 
180211 --
180212 -- bulk performance
180213 --
180214 l_balance_type_code           VARCHAR2(1);
180215 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
180216 l_log_module                  VARCHAR2(240);
180217 
180218 --
180219 -- Upgrade strategy
180220 --
180221 l_actual_upg_option           VARCHAR2(1);
180222 l_enc_upg_option           VARCHAR2(1);
180223 
180224 --
180225 BEGIN
180226 --
180227 IF g_log_enabled THEN
180228       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_332';
180229 END IF;
180230 --
180231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180232 
180233       trace
180234          (p_msg      => 'BEGIN of AcctLineType_332'
180235          ,p_level    => C_LEVEL_PROCEDURE
180236          ,p_module   => l_log_module);
180237 
180238 END IF;
180239 --
180240 l_component_type             := 'AMB_JLT';
180241 l_component_code             := 'OFFSET';
180242 l_component_type_code        := 'S';
180243 l_component_appl_id          :=  707;
180244 l_amb_context_code           := 'DEFAULT';
180245 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
180246 l_event_class_code           := 'USER_DEFINE';
180247 l_event_type_code            := 'UCG_TXFR';
180248 l_line_definition_owner_code := 'S';
180249 l_line_definition_code       := 'PI_CG_TXFR';
180250 --
180251 l_balance_type_code          := 'A';
180252 l_segment                     := NULL;
180253 l_ccid                        := NULL;
180254 l_adr_transaction_coa_id      := NULL;
180255 l_adr_accounting_coa_id       := NULL;
180256 l_adr_flexfield_segment_code  := NULL;
180257 l_adr_flex_value_set_id       := NULL;
180258 l_adr_value_type_code         := NULL;
180259 l_adr_value_combination_id    := NULL;
180260 l_adr_value_segment_code      := NULL;
180261 
180262 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
180263 l_bflow_class_code           := '';    -- 4219869 Business Flow
180264 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
180265 l_budgetary_control_flag     := 'N';
180266 
180267 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
180268 l_bflow_applied_to_amt       := NULL; -- 5132302
180269 l_entered_amt_idx            := NULL;          -- 4262811
180270 l_accted_amt_idx             := NULL;          -- 4262811
180271 l_acc_rev_flag               := NULL;          -- 4262811
180272 l_accrual_line_num           := NULL;          -- 4262811
180273 l_tmp_amt                    := NULL;          -- 4262811
180274 --
180275  
180276 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
180277     l_balance_type_code <> 'B' THEN
180278 IF NVL(p_source_97,9E125) =  2
180279  THEN 
180280 
180281    --
180282    XLA_AE_LINES_PKG.SetNewLine;
180283 
180284    p_balance_type_code          := l_balance_type_code;
180285    -- set the flag so later we will know whether the gain loss line needs to be created
180286    
180287    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
180288      p_actual_flag :='A';
180289    END IF;
180290 
180291    --
180292    -- bulk performance
180293    --
180294    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
180295                                       p_header_num   => 0); -- 4262811
180296    --
180297    -- set accounting line options
180298    --
180299    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
180300            p_natural_side_code          => 'D'
180301          , p_gain_or_loss_flag          => 'N'
180302          , p_gl_transfer_mode_code      => 'S'
180303          , p_acct_entry_type_code       => 'A'
180304          , p_switch_side_flag           => 'Y'
180305          , p_merge_duplicate_code       => 'N'
180306          );
180307    --
180308    l_acc_rev_natural_side_code := 'C';  -- 4262811
180309    -- 
180310    --
180311    -- set accounting line type info
180312    --
180313    xla_ae_lines_pkg.SetAcctLineType
180314       (p_component_type             => l_component_type
180315       ,p_event_type_code            => l_event_type_code
180316       ,p_line_definition_owner_code => l_line_definition_owner_code
180317       ,p_line_definition_code       => l_line_definition_code
180318       ,p_accounting_line_code       => l_component_code
180319       ,p_accounting_line_type_code  => l_component_type_code
180320       ,p_accounting_line_appl_id    => l_component_appl_id
180321       ,p_amb_context_code           => l_amb_context_code
180322       ,p_entity_code                => l_entity_code
180323       ,p_event_class_code           => l_event_class_code);
180324    --
180325    -- set accounting class
180326    --
180327    xla_ae_lines_pkg.SetAcctClass(
180328            p_accounting_class_code  => 'OFFSET'
180329          , p_ae_header_id           => l_ae_header_id
180330          );
180331 
180332    --
180333    -- set rounding class
180334    --
180335    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
180336                       'OFFSET';
180337 
180338    --
180339    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
180340    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
180341    --
180342    -- bulk performance
180343    --
180344    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
180345 
180346    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
180347       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
180348 
180349    -- 4955764
180350    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
180351       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
180352 
180353    -- 4458381 Public Sector Enh
180354    
180355    --
180356    -- set accounting attributes for the line type
180357    --
180358    l_entered_amt_idx := 3;
180359    l_accted_amt_idx  := 8;
180360    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
180361    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
180362    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
180363    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
180364    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
180365    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
180366    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
180367    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
180368    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
180369    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
180370    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
180371    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
180372    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
180373    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
180374    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
180375    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
180376    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
180377 
180378    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
180379    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
180380 
180381    ---------------------------------------------------------------------------------------------------------------
180382    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
180383    ---------------------------------------------------------------------------------------------------------------
180384    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
180385 
180386    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
180387    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
180388 
180389    IF xla_accounting_cache_pkg.GetValueChar
180390          (p_source_code         => 'LEDGER_CATEGORY_CODE'
180391          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
180392    AND l_bflow_method_code = 'PRIOR_ENTRY'
180393 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
180394    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
180395          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
180396        )
180397    THEN
180398          xla_ae_lines_pkg.BflowUpgEntry
180399            (p_business_method_code    => l_bflow_method_code
180400            ,p_business_class_code     => l_bflow_class_code
180401            ,p_balance_type            => l_balance_type_code);
180402    ELSE
180403       NULL;
180404 -- No business flow processing for business flow method of NONE.
180405    END IF;
180406 
180407    --
180408    -- call analytical criteria
180409    --
180410    
180411    --
180412    -- call description
180413    --
180414    
180415 xla_ae_lines_pkg.SetLineDescription(
180416    p_ae_header_id => l_ae_header_id
180417   ,p_description  => Description_1 (
180418      p_application_id         => p_application_id
180419    , p_ae_header_id           => l_ae_header_id 
180420 , p_source_1 => p_source_1
180421 , p_source_2 => p_source_2
180422 , p_source_3 => p_source_3
180423 , p_source_4 => p_source_4
180424 , p_source_5 => p_source_5
180425    )
180426 );
180427 
180428 
180429    --
180430    -- call ADRs
180431    -- Bug 4922099
180432    --
180433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
180434         (NVL(l_actual_upg_option, 'N') = 'O') OR
180435         (NVL(l_enc_upg_option, 'N') = 'O')
180436       )
180437    THEN
180438    NULL;
180439    --
180440    --
180441    
180442   l_ccid := AcctDerRule_15(
180443            p_application_id           => p_application_id
180444          , p_ae_header_id             => l_ae_header_id 
180445 , p_source_24 => p_source_24
180446 , p_source_25 => p_source_25
180447 , p_source_26 => p_source_26
180448 , p_source_27 => p_source_27
180449 , p_source_28 => p_source_28
180450 , p_source_29 => p_source_29
180451 , p_source_31 => p_source_31
180452          , x_transaction_coa_id       => l_adr_transaction_coa_id
180453          , x_accounting_coa_id        => l_adr_accounting_coa_id
180454          , x_value_type_code          => l_adr_value_type_code
180455          , p_side                     => 'NA'
180456    );
180457 
180458    xla_ae_lines_pkg.set_ccid(
180459     p_code_combination_id          => l_ccid
180460   , p_value_type_code              => l_adr_value_type_code
180461   , p_transaction_coa_id           => l_adr_transaction_coa_id
180462   , p_accounting_coa_id            => l_adr_accounting_coa_id
180463   , p_adr_code                     => 'PI_CATEGORY_OFFSET_ADR'
180464   , p_adr_type_code                => 'S'
180465   , p_component_type               => l_component_type
180466   , p_component_code               => l_component_code
180467   , p_component_type_code          => l_component_type_code
180468   , p_component_appl_id            => l_component_appl_id
180469   , p_amb_context_code             => l_amb_context_code
180470   , p_side                         => 'NA'
180471   );
180472 
180473 
180474    --
180475    --
180476    END IF;
180477    --
180478    -- Bug 4922099
180479    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
180480           (NVL(l_enc_upg_option, 'N') = 'O')
180481         ) AND
180482         (l_bflow_method_code = 'PRIOR_ENTRY')
180483       )
180484    THEN
180485       IF
180486       --
180487       1 = 2
180488       --
180489       THEN
180490       xla_accounting_err_pkg.build_message
180491                                     (p_appli_s_name            => 'XLA'
180492                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
180493                                     ,p_token_1                 => 'LINE_NUMBER'
180494                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
180495                                     ,p_token_2                 => 'LINE_TYPE_NAME'
180496                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
180497                                                                              l_component_type
180498                                                                             ,l_component_code
180499                                                                             ,l_component_type_code
180500                                                                             ,l_component_appl_id
180501                                                                             ,l_amb_context_code
180502                                                                             ,l_entity_code
180503                                                                             ,l_event_class_code
180504                                                                            )
180505                                     ,p_token_3                 => 'OWNER'
180506                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
180507                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
180508                                                                           ,p_lookup_code    => l_component_type_code
180509                                                                          )
180510                                     ,p_token_4                 => 'PRODUCT_NAME'
180511                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
180512                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
180513                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
180514                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
180515                                     ,p_ae_header_id            =>  NULL
180516                                        );
180517 
180518         IF (C_LEVEL_ERROR>= g_log_level) THEN
180519                  trace
180520                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
180521                       ,p_level    => C_LEVEL_ERROR
180522                       ,p_module   => l_log_module);
180523         END IF;
180524       END IF;
180525    END IF;
180526    --
180527    --
180528    ------------------------------------------------------------------------------------------------
180529    -- 4219869 Business Flow
180530    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
180531    -- Prior Entry.  Currently, the following code is always generated.
180532    ------------------------------------------------------------------------------------------------
180533    XLA_AE_LINES_PKG.ValidateCurrentLine;
180534 
180535    ------------------------------------------------------------------------------------
180536    -- 4219869 Business Flow
180537    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
180538    ------------------------------------------------------------------------------------
180539    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
180540 
180541    ----------------------------------------------------------------------------------
180542    -- 4219869 Business Flow
180543    -- Update journal entry status -- Need to generate this within IF <condition>
180544    ----------------------------------------------------------------------------------
180545    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
180546          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
180547          ,p_balance_type_code => l_balance_type_code
180548          );
180549 
180550    -------------------------------------------------------------------------------------------
180551    -- 4262811 - Generate the Accrual Reversal lines
180552    -------------------------------------------------------------------------------------------
180553    BEGIN
180554       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
180555                               (g_array_event(p_event_id).array_value_num('header_index'));
180556       IF l_acc_rev_flag IS NULL THEN
180557          l_acc_rev_flag := 'N';
180558       END IF;
180559    EXCEPTION
180560       WHEN OTHERS THEN
180561          l_acc_rev_flag := 'N';
180562    END;
180563    --
180564    IF (l_acc_rev_flag = 'Y') THEN
180565 
180566        -- 4645092  ------------------------------------------------------------------------------
180567        -- To allow MPA report to determine if it should generate report process
180568        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
180569        ------------------------------------------------------------------------------------------
180570 
180571        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
180572        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
180573    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
180574    -- call ADRs
180575    -- Bug 4922099
180576    --
180577    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
180578         (NVL(l_actual_upg_option, 'N') = 'O') OR
180579         (NVL(l_enc_upg_option, 'N') = 'O')
180580       )
180581    THEN
180582    NULL;
180583    --
180584    --
180585    
180586   l_ccid := AcctDerRule_15(
180587            p_application_id           => p_application_id
180588          , p_ae_header_id             => l_ae_header_id 
180589 , p_source_24 => p_source_24
180590 , p_source_25 => p_source_25
180591 , p_source_26 => p_source_26
180592 , p_source_27 => p_source_27
180593 , p_source_28 => p_source_28
180594 , p_source_29 => p_source_29
180595 , p_source_31 => p_source_31
180596          , x_transaction_coa_id       => l_adr_transaction_coa_id
180597          , x_accounting_coa_id        => l_adr_accounting_coa_id
180598          , x_value_type_code          => l_adr_value_type_code
180599          , p_side                     => 'NA'
180600    );
180601 
180602    xla_ae_lines_pkg.set_ccid(
180603     p_code_combination_id          => l_ccid
180604   , p_value_type_code              => l_adr_value_type_code
180605   , p_transaction_coa_id           => l_adr_transaction_coa_id
180606   , p_accounting_coa_id            => l_adr_accounting_coa_id
180607   , p_adr_code                     => 'PI_CATEGORY_OFFSET_ADR'
180608   , p_adr_type_code                => 'S'
180609   , p_component_type               => l_component_type
180610   , p_component_code               => l_component_code
180611   , p_component_type_code          => l_component_type_code
180612   , p_component_appl_id            => l_component_appl_id
180613   , p_amb_context_code             => l_amb_context_code
180614   , p_side                         => 'NA'
180615   );
180616 
180617 
180618    --
180619    --
180620    END IF;
180621 
180622        --
180623        -- Update the line information that should be overwritten
180624        --
180625        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
180626                                          p_header_num   => 1);
180627        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
180628 
180629        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
180630 
180631        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
180632           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
180633        END IF;
180634 
180635       --
180636       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
180637       --
180638       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
180639           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
180640       ELSE
180641           ---------------------------------------------------------------------------------------------------
180642           -- 4262811a Switch Sign
180643           ---------------------------------------------------------------------------------------------------
180644           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
180645           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
180646                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
180647           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
180648                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
180649           -- 5132302
180650           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
180651                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
180652 
180653       END IF;
180654 
180655       -- 4955764
180656       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
180657       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
180658 
180659 
180660       XLA_AE_LINES_PKG.ValidateCurrentLine;
180661       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
180662 
180663       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
180664                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
180665                ,p_balance_type_code => l_balance_type_code);
180666 
180667    END IF;
180668 
180669    -----------------------------------------------------------------------------------------
180670    -- 4262811 Multiperiod Accounting
180671    -----------------------------------------------------------------------------------------
180672      -- No MPA option is assigned.
180673 
180674 
180675 END IF;
180676 END IF;
180677 --
180678 
180679 --
180680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180681    trace
180682       (p_msg      => 'END of AcctLineType_332'
180683       ,p_level    => C_LEVEL_PROCEDURE
180684       ,p_module   => l_log_module);
180685 END IF;
180686 --
180687 EXCEPTION
180688   WHEN xla_exceptions_pkg.application_exception THEN
180689       RAISE;
180690   WHEN OTHERS THEN
180691        xla_exceptions_pkg.raise_message
180692            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_332');
180693 END AcctLineType_332;
180694 --
180695 
180696 ---------------------------------------
180697 --
180698 -- PRIVATE FUNCTION
180699 --         AcctLineType_333
180700 --
180701 ---------------------------------------
180702 PROCEDURE AcctLineType_333 (
180703   p_application_id        IN NUMBER
180704  ,p_event_id              IN NUMBER
180705  ,p_calculate_acctd_flag  IN VARCHAR2
180706  ,p_calculate_g_l_flag    IN VARCHAR2
180707  ,p_actual_flag           IN OUT VARCHAR2
180708  ,p_balance_type_code     OUT VARCHAR2
180709  ,p_gain_or_loss_ref      OUT VARCHAR2
180710  
180711 --TRANSACTION_ID
180712  , p_source_1            IN NUMBER
180713 --Item Concatenated Segments
180714  , p_source_2            IN VARCHAR2
180715 --Transaction Quantity
180716  , p_source_3            IN NUMBER
180717 --Transaction Unit of Measure Code
180718  , p_source_4            IN VARCHAR2
180719 --Inventory Transaction Type Description
180720  , p_source_5            IN VARCHAR2
180721 --Cost Management Default Account
180722  , p_source_11            IN NUMBER
180723 --DISTRIBUTION_IDENTIFIER
180724  , p_source_84            IN NUMBER
180725 --Distribution Type
180726  , p_source_85            IN VARCHAR2
180727  , p_source_85_meaning    IN VARCHAR2
180728 --Entered Currency Code
180729  , p_source_88            IN VARCHAR2
180730 --Entered Amount
180731  , p_source_91            IN NUMBER
180732 --Currency Conversion Date
180733  , p_source_92            IN DATE
180734 --Currency Conversion Rate
180735  , p_source_93            IN NUMBER
180736 --Currency Conversion Type
180737  , p_source_94            IN VARCHAR2
180738 --Accounted Amount
180739  , p_source_95            IN NUMBER
180740 --Accounting Line Type
180741  , p_source_97            IN NUMBER
180742 )
180743 IS
180744 
180745 l_component_type              VARCHAR2(80);
180746 l_component_code              VARCHAR2(30);
180747 l_component_type_code         VARCHAR2(1);
180748 l_component_appl_id           INTEGER;
180749 l_amb_context_code            VARCHAR2(30);
180750 l_entity_code                 VARCHAR2(30);
180751 l_event_class_code            VARCHAR2(30);
180752 l_ae_header_id                NUMBER;
180753 l_event_type_code             VARCHAR2(30);
180754 l_line_definition_code        VARCHAR2(30);
180755 l_line_definition_owner_code  VARCHAR2(1);
180756 --
180757 -- adr variables
180758 l_segment                     VARCHAR2(30);
180759 l_ccid                        NUMBER;
180760 l_adr_transaction_coa_id      NUMBER;
180761 l_adr_accounting_coa_id       NUMBER;
180762 l_adr_flexfield_segment_code  VARCHAR2(30);
180763 l_adr_flex_value_set_id       NUMBER;
180764 l_adr_value_type_code         VARCHAR2(30);
180765 l_adr_value_combination_id    NUMBER;
180766 l_adr_value_segment_code      VARCHAR2(30);
180767 
180768 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
180769 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
180770 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
180771 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
180772 
180773 -- 4262811 Variables ------------------------------------------------------------------------------------------
180774 l_entered_amt_idx             NUMBER;
180775 l_accted_amt_idx              NUMBER;
180776 l_acc_rev_flag                VARCHAR2(1);
180777 l_accrual_line_num            NUMBER;
180778 l_tmp_amt                     NUMBER;
180779 l_acc_rev_natural_side_code   VARCHAR2(1);
180780 
180781 l_num_entries                 NUMBER;
180782 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
180783 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
180784 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
180785 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
180786 l_recog_line_1                NUMBER;
180787 l_recog_line_2                NUMBER;
180788 
180789 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
180790 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
180791 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
180792 
180793 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
180794 
180795 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
180796 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
180797 
180798 ---------------------------------------------------------------------------------------------------------------
180799 
180800 
180801 --
180802 -- bulk performance
180803 --
180804 l_balance_type_code           VARCHAR2(1);
180805 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
180806 l_log_module                  VARCHAR2(240);
180807 
180808 --
180809 -- Upgrade strategy
180810 --
180811 l_actual_upg_option           VARCHAR2(1);
180812 l_enc_upg_option           VARCHAR2(1);
180813 
180814 --
180815 BEGIN
180816 --
180817 IF g_log_enabled THEN
180818       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_333';
180819 END IF;
180820 --
180821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180822 
180823       trace
180824          (p_msg      => 'BEGIN of AcctLineType_333'
180825          ,p_level    => C_LEVEL_PROCEDURE
180826          ,p_module   => l_log_module);
180827 
180828 END IF;
180829 --
180830 l_component_type             := 'AMB_JLT';
180831 l_component_code             := 'OFFSET';
180832 l_component_type_code        := 'S';
180833 l_component_appl_id          :=  707;
180834 l_amb_context_code           := 'DEFAULT';
180835 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
180836 l_event_class_code           := 'USER_DEFINE';
180837 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
180838 l_line_definition_owner_code := 'S';
180839 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
180840 --
180841 l_balance_type_code          := 'A';
180842 l_segment                     := NULL;
180843 l_ccid                        := NULL;
180844 l_adr_transaction_coa_id      := NULL;
180845 l_adr_accounting_coa_id       := NULL;
180846 l_adr_flexfield_segment_code  := NULL;
180847 l_adr_flex_value_set_id       := NULL;
180848 l_adr_value_type_code         := NULL;
180849 l_adr_value_combination_id    := NULL;
180850 l_adr_value_segment_code      := NULL;
180851 
180852 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
180853 l_bflow_class_code           := '';    -- 4219869 Business Flow
180854 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
180855 l_budgetary_control_flag     := 'N';
180856 
180857 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
180858 l_bflow_applied_to_amt       := NULL; -- 5132302
180859 l_entered_amt_idx            := NULL;          -- 4262811
180860 l_accted_amt_idx             := NULL;          -- 4262811
180861 l_acc_rev_flag               := NULL;          -- 4262811
180862 l_accrual_line_num           := NULL;          -- 4262811
180863 l_tmp_amt                    := NULL;          -- 4262811
180864 --
180865  
180866 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
180867     l_balance_type_code <> 'B' THEN
180868 IF NVL(p_source_97,9E125) =  2
180869  THEN 
180870 
180871    --
180872    XLA_AE_LINES_PKG.SetNewLine;
180873 
180874    p_balance_type_code          := l_balance_type_code;
180875    -- set the flag so later we will know whether the gain loss line needs to be created
180876    
180877    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
180878      p_actual_flag :='A';
180879    END IF;
180880 
180881    --
180882    -- bulk performance
180883    --
180884    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
180885                                       p_header_num   => 0); -- 4262811
180886    --
180887    -- set accounting line options
180888    --
180889    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
180890            p_natural_side_code          => 'D'
180891          , p_gain_or_loss_flag          => 'N'
180892          , p_gl_transfer_mode_code      => 'S'
180893          , p_acct_entry_type_code       => 'A'
180894          , p_switch_side_flag           => 'Y'
180895          , p_merge_duplicate_code       => 'N'
180896          );
180897    --
180898    l_acc_rev_natural_side_code := 'C';  -- 4262811
180899    -- 
180900    --
180901    -- set accounting line type info
180902    --
180903    xla_ae_lines_pkg.SetAcctLineType
180904       (p_component_type             => l_component_type
180905       ,p_event_type_code            => l_event_type_code
180906       ,p_line_definition_owner_code => l_line_definition_owner_code
180907       ,p_line_definition_code       => l_line_definition_code
180908       ,p_accounting_line_code       => l_component_code
180909       ,p_accounting_line_type_code  => l_component_type_code
180910       ,p_accounting_line_appl_id    => l_component_appl_id
180911       ,p_amb_context_code           => l_amb_context_code
180912       ,p_entity_code                => l_entity_code
180913       ,p_event_class_code           => l_event_class_code);
180914    --
180915    -- set accounting class
180916    --
180917    xla_ae_lines_pkg.SetAcctClass(
180918            p_accounting_class_code  => 'OFFSET'
180919          , p_ae_header_id           => l_ae_header_id
180920          );
180921 
180922    --
180923    -- set rounding class
180924    --
180925    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
180926                       'OFFSET';
180927 
180928    --
180929    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
180930    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
180931    --
180932    -- bulk performance
180933    --
180934    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
180935 
180936    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
180937       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
180938 
180939    -- 4955764
180940    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
180941       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
180942 
180943    -- 4458381 Public Sector Enh
180944    
180945    --
180946    -- set accounting attributes for the line type
180947    --
180948    l_entered_amt_idx := 3;
180949    l_accted_amt_idx  := 8;
180950    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
180951    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
180952    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
180953    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
180954    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
180955    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
180956    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
180957    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
180958    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
180959    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
180960    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
180961    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
180962    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
180963    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
180964    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
180965    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
180966    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
180967 
180968    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
180969    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
180970 
180971    ---------------------------------------------------------------------------------------------------------------
180972    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
180973    ---------------------------------------------------------------------------------------------------------------
180974    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
180975 
180976    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
180977    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
180978 
180979    IF xla_accounting_cache_pkg.GetValueChar
180980          (p_source_code         => 'LEDGER_CATEGORY_CODE'
180981          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
180982    AND l_bflow_method_code = 'PRIOR_ENTRY'
180983 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
180984    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
180985          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
180986        )
180987    THEN
180988          xla_ae_lines_pkg.BflowUpgEntry
180989            (p_business_method_code    => l_bflow_method_code
180990            ,p_business_class_code     => l_bflow_class_code
180991            ,p_balance_type            => l_balance_type_code);
180992    ELSE
180993       NULL;
180994 -- No business flow processing for business flow method of NONE.
180995    END IF;
180996 
180997    --
180998    -- call analytical criteria
180999    --
181000    
181001    --
181002    -- call description
181003    --
181004    
181005 xla_ae_lines_pkg.SetLineDescription(
181006    p_ae_header_id => l_ae_header_id
181007   ,p_description  => Description_1 (
181008      p_application_id         => p_application_id
181009    , p_ae_header_id           => l_ae_header_id 
181010 , p_source_1 => p_source_1
181011 , p_source_2 => p_source_2
181012 , p_source_3 => p_source_3
181013 , p_source_4 => p_source_4
181014 , p_source_5 => p_source_5
181015    )
181016 );
181017 
181018 
181019    --
181020    -- call ADRs
181021    -- Bug 4922099
181022    --
181023    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
181024         (NVL(l_actual_upg_option, 'N') = 'O') OR
181025         (NVL(l_enc_upg_option, 'N') = 'O')
181026       )
181027    THEN
181028    NULL;
181029    --
181030    --
181031    
181032   l_ccid := AcctDerRule_6(
181033            p_application_id           => p_application_id
181034          , p_ae_header_id             => l_ae_header_id 
181035 , p_source_11 => p_source_11
181036          , x_transaction_coa_id       => l_adr_transaction_coa_id
181037          , x_accounting_coa_id        => l_adr_accounting_coa_id
181038          , x_value_type_code          => l_adr_value_type_code
181039          , p_side                     => 'NA'
181040    );
181041 
181042    xla_ae_lines_pkg.set_ccid(
181043     p_code_combination_id          => l_ccid
181044   , p_value_type_code              => l_adr_value_type_code
181045   , p_transaction_coa_id           => l_adr_transaction_coa_id
181046   , p_accounting_coa_id            => l_adr_accounting_coa_id
181047   , p_adr_code                     => 'CST_DEFAULT'
181048   , p_adr_type_code                => 'S'
181049   , p_component_type               => l_component_type
181050   , p_component_code               => l_component_code
181051   , p_component_type_code          => l_component_type_code
181052   , p_component_appl_id            => l_component_appl_id
181053   , p_amb_context_code             => l_amb_context_code
181054   , p_side                         => 'NA'
181055   );
181056 
181057 
181058    --
181059    --
181060    END IF;
181061    --
181062    -- Bug 4922099
181063    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
181064           (NVL(l_enc_upg_option, 'N') = 'O')
181065         ) AND
181066         (l_bflow_method_code = 'PRIOR_ENTRY')
181067       )
181068    THEN
181069       IF
181070       --
181071       1 = 2
181072       --
181073       THEN
181074       xla_accounting_err_pkg.build_message
181075                                     (p_appli_s_name            => 'XLA'
181076                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
181077                                     ,p_token_1                 => 'LINE_NUMBER'
181078                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
181079                                     ,p_token_2                 => 'LINE_TYPE_NAME'
181080                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
181081                                                                              l_component_type
181082                                                                             ,l_component_code
181083                                                                             ,l_component_type_code
181084                                                                             ,l_component_appl_id
181085                                                                             ,l_amb_context_code
181086                                                                             ,l_entity_code
181087                                                                             ,l_event_class_code
181088                                                                            )
181089                                     ,p_token_3                 => 'OWNER'
181090                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
181091                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
181092                                                                           ,p_lookup_code    => l_component_type_code
181093                                                                          )
181094                                     ,p_token_4                 => 'PRODUCT_NAME'
181095                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
181096                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
181097                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
181098                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
181099                                     ,p_ae_header_id            =>  NULL
181100                                        );
181101 
181102         IF (C_LEVEL_ERROR>= g_log_level) THEN
181103                  trace
181104                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
181105                       ,p_level    => C_LEVEL_ERROR
181106                       ,p_module   => l_log_module);
181107         END IF;
181108       END IF;
181109    END IF;
181110    --
181111    --
181112    ------------------------------------------------------------------------------------------------
181113    -- 4219869 Business Flow
181114    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
181115    -- Prior Entry.  Currently, the following code is always generated.
181116    ------------------------------------------------------------------------------------------------
181117    XLA_AE_LINES_PKG.ValidateCurrentLine;
181118 
181119    ------------------------------------------------------------------------------------
181120    -- 4219869 Business Flow
181121    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
181122    ------------------------------------------------------------------------------------
181123    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
181124 
181125    ----------------------------------------------------------------------------------
181126    -- 4219869 Business Flow
181127    -- Update journal entry status -- Need to generate this within IF <condition>
181128    ----------------------------------------------------------------------------------
181129    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
181130          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
181131          ,p_balance_type_code => l_balance_type_code
181132          );
181133 
181134    -------------------------------------------------------------------------------------------
181135    -- 4262811 - Generate the Accrual Reversal lines
181136    -------------------------------------------------------------------------------------------
181137    BEGIN
181138       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
181139                               (g_array_event(p_event_id).array_value_num('header_index'));
181140       IF l_acc_rev_flag IS NULL THEN
181141          l_acc_rev_flag := 'N';
181142       END IF;
181143    EXCEPTION
181144       WHEN OTHERS THEN
181145          l_acc_rev_flag := 'N';
181146    END;
181147    --
181148    IF (l_acc_rev_flag = 'Y') THEN
181149 
181150        -- 4645092  ------------------------------------------------------------------------------
181151        -- To allow MPA report to determine if it should generate report process
181152        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
181153        ------------------------------------------------------------------------------------------
181154 
181155        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
181156        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
181157    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
181158    -- call ADRs
181159    -- Bug 4922099
181160    --
181161    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
181162         (NVL(l_actual_upg_option, 'N') = 'O') OR
181163         (NVL(l_enc_upg_option, 'N') = 'O')
181164       )
181165    THEN
181166    NULL;
181167    --
181168    --
181169    
181170   l_ccid := AcctDerRule_6(
181171            p_application_id           => p_application_id
181172          , p_ae_header_id             => l_ae_header_id 
181173 , p_source_11 => p_source_11
181174          , x_transaction_coa_id       => l_adr_transaction_coa_id
181175          , x_accounting_coa_id        => l_adr_accounting_coa_id
181176          , x_value_type_code          => l_adr_value_type_code
181177          , p_side                     => 'NA'
181178    );
181179 
181180    xla_ae_lines_pkg.set_ccid(
181181     p_code_combination_id          => l_ccid
181182   , p_value_type_code              => l_adr_value_type_code
181183   , p_transaction_coa_id           => l_adr_transaction_coa_id
181184   , p_accounting_coa_id            => l_adr_accounting_coa_id
181185   , p_adr_code                     => 'CST_DEFAULT'
181186   , p_adr_type_code                => 'S'
181187   , p_component_type               => l_component_type
181188   , p_component_code               => l_component_code
181189   , p_component_type_code          => l_component_type_code
181190   , p_component_appl_id            => l_component_appl_id
181191   , p_amb_context_code             => l_amb_context_code
181192   , p_side                         => 'NA'
181193   );
181194 
181195 
181196    --
181197    --
181198    END IF;
181199 
181200        --
181201        -- Update the line information that should be overwritten
181202        --
181203        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
181204                                          p_header_num   => 1);
181205        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
181206 
181207        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
181208 
181209        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
181210           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
181211        END IF;
181212 
181213       --
181214       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
181215       --
181216       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
181217           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
181218       ELSE
181219           ---------------------------------------------------------------------------------------------------
181220           -- 4262811a Switch Sign
181221           ---------------------------------------------------------------------------------------------------
181222           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
181223           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
181224                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
181225           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
181226                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
181227           -- 5132302
181228           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
181229                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
181230 
181231       END IF;
181232 
181233       -- 4955764
181234       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
181235       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
181236 
181237 
181238       XLA_AE_LINES_PKG.ValidateCurrentLine;
181239       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
181240 
181241       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
181242                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
181243                ,p_balance_type_code => l_balance_type_code);
181244 
181245    END IF;
181246 
181247    -----------------------------------------------------------------------------------------
181248    -- 4262811 Multiperiod Accounting
181249    -----------------------------------------------------------------------------------------
181250      -- No MPA option is assigned.
181251 
181252 
181253 END IF;
181254 END IF;
181255 --
181256 
181257 --
181258 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181259    trace
181260       (p_msg      => 'END of AcctLineType_333'
181261       ,p_level    => C_LEVEL_PROCEDURE
181262       ,p_module   => l_log_module);
181263 END IF;
181264 --
181265 EXCEPTION
181266   WHEN xla_exceptions_pkg.application_exception THEN
181267       RAISE;
181268   WHEN OTHERS THEN
181269        xla_exceptions_pkg.raise_message
181270            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_333');
181271 END AcctLineType_333;
181272 --
181273 
181274 ---------------------------------------
181275 --
181276 -- PRIVATE FUNCTION
181277 --         AcctLineType_334
181278 --
181279 ---------------------------------------
181280 PROCEDURE AcctLineType_334 (
181281   p_application_id        IN NUMBER
181282  ,p_event_id              IN NUMBER
181283  ,p_calculate_acctd_flag  IN VARCHAR2
181284  ,p_calculate_g_l_flag    IN VARCHAR2
181285  ,p_actual_flag           IN OUT VARCHAR2
181286  ,p_balance_type_code     OUT VARCHAR2
181287  ,p_gain_or_loss_ref      OUT VARCHAR2
181288  
181289 --TRANSACTION_ID
181290  , p_source_1            IN NUMBER
181291 --Item Concatenated Segments
181292  , p_source_2            IN VARCHAR2
181293 --Transaction Quantity
181294  , p_source_3            IN NUMBER
181295 --Transaction Unit of Measure Code
181296  , p_source_4            IN VARCHAR2
181297 --Inventory Transaction Type Description
181298  , p_source_5            IN VARCHAR2
181299 --Cost Management Default Account
181300  , p_source_11            IN NUMBER
181301 --DISTRIBUTION_IDENTIFIER
181302  , p_source_84            IN NUMBER
181303 --Distribution Type
181304  , p_source_85            IN VARCHAR2
181305  , p_source_85_meaning    IN VARCHAR2
181306 --Entered Currency Code
181307  , p_source_88            IN VARCHAR2
181308 --Entered Amount
181309  , p_source_91            IN NUMBER
181310 --Currency Conversion Date
181311  , p_source_92            IN DATE
181312 --Currency Conversion Rate
181313  , p_source_93            IN NUMBER
181314 --Currency Conversion Type
181315  , p_source_94            IN VARCHAR2
181316 --Accounted Amount
181317  , p_source_95            IN NUMBER
181318 --Accounting Line Type
181319  , p_source_97            IN NUMBER
181320 )
181321 IS
181322 
181323 l_component_type              VARCHAR2(80);
181324 l_component_code              VARCHAR2(30);
181325 l_component_type_code         VARCHAR2(1);
181326 l_component_appl_id           INTEGER;
181327 l_amb_context_code            VARCHAR2(30);
181328 l_entity_code                 VARCHAR2(30);
181329 l_event_class_code            VARCHAR2(30);
181330 l_ae_header_id                NUMBER;
181331 l_event_type_code             VARCHAR2(30);
181332 l_line_definition_code        VARCHAR2(30);
181333 l_line_definition_owner_code  VARCHAR2(1);
181334 --
181335 -- adr variables
181336 l_segment                     VARCHAR2(30);
181337 l_ccid                        NUMBER;
181338 l_adr_transaction_coa_id      NUMBER;
181339 l_adr_accounting_coa_id       NUMBER;
181340 l_adr_flexfield_segment_code  VARCHAR2(30);
181341 l_adr_flex_value_set_id       NUMBER;
181342 l_adr_value_type_code         VARCHAR2(30);
181343 l_adr_value_combination_id    NUMBER;
181344 l_adr_value_segment_code      VARCHAR2(30);
181345 
181346 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
181347 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
181348 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
181349 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
181350 
181351 -- 4262811 Variables ------------------------------------------------------------------------------------------
181352 l_entered_amt_idx             NUMBER;
181353 l_accted_amt_idx              NUMBER;
181354 l_acc_rev_flag                VARCHAR2(1);
181355 l_accrual_line_num            NUMBER;
181356 l_tmp_amt                     NUMBER;
181357 l_acc_rev_natural_side_code   VARCHAR2(1);
181358 
181359 l_num_entries                 NUMBER;
181360 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
181361 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
181362 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
181363 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
181364 l_recog_line_1                NUMBER;
181365 l_recog_line_2                NUMBER;
181366 
181367 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
181368 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
181369 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
181370 
181371 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
181372 
181373 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
181374 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
181375 
181376 ---------------------------------------------------------------------------------------------------------------
181377 
181378 
181379 --
181380 -- bulk performance
181381 --
181382 l_balance_type_code           VARCHAR2(1);
181383 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
181384 l_log_module                  VARCHAR2(240);
181385 
181386 --
181387 -- Upgrade strategy
181388 --
181389 l_actual_upg_option           VARCHAR2(1);
181390 l_enc_upg_option           VARCHAR2(1);
181391 
181392 --
181393 BEGIN
181394 --
181395 IF g_log_enabled THEN
181396       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_334';
181397 END IF;
181398 --
181399 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181400 
181401       trace
181402          (p_msg      => 'BEGIN of AcctLineType_334'
181403          ,p_level    => C_LEVEL_PROCEDURE
181404          ,p_module   => l_log_module);
181405 
181406 END IF;
181407 --
181408 l_component_type             := 'AMB_JLT';
181409 l_component_code             := 'OFFSET';
181410 l_component_type_code        := 'S';
181411 l_component_appl_id          :=  707;
181412 l_amb_context_code           := 'DEFAULT';
181413 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
181414 l_event_class_code           := 'USER_DEFINE';
181415 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
181416 l_line_definition_owner_code := 'S';
181417 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
181418 --
181419 l_balance_type_code          := 'A';
181420 l_segment                     := NULL;
181421 l_ccid                        := NULL;
181422 l_adr_transaction_coa_id      := NULL;
181423 l_adr_accounting_coa_id       := NULL;
181424 l_adr_flexfield_segment_code  := NULL;
181425 l_adr_flex_value_set_id       := NULL;
181426 l_adr_value_type_code         := NULL;
181427 l_adr_value_combination_id    := NULL;
181428 l_adr_value_segment_code      := NULL;
181429 
181430 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
181431 l_bflow_class_code           := '';    -- 4219869 Business Flow
181432 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
181433 l_budgetary_control_flag     := 'N';
181434 
181435 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
181436 l_bflow_applied_to_amt       := NULL; -- 5132302
181437 l_entered_amt_idx            := NULL;          -- 4262811
181438 l_accted_amt_idx             := NULL;          -- 4262811
181439 l_acc_rev_flag               := NULL;          -- 4262811
181440 l_accrual_line_num           := NULL;          -- 4262811
181441 l_tmp_amt                    := NULL;          -- 4262811
181442 --
181443  
181444 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
181445     l_balance_type_code <> 'B' THEN
181446 IF NVL(p_source_97,9E125) =  2
181447  THEN 
181448 
181449    --
181450    XLA_AE_LINES_PKG.SetNewLine;
181451 
181452    p_balance_type_code          := l_balance_type_code;
181453    -- set the flag so later we will know whether the gain loss line needs to be created
181454    
181455    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
181456      p_actual_flag :='A';
181457    END IF;
181458 
181459    --
181460    -- bulk performance
181461    --
181462    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
181463                                       p_header_num   => 0); -- 4262811
181464    --
181465    -- set accounting line options
181466    --
181467    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
181468            p_natural_side_code          => 'D'
181469          , p_gain_or_loss_flag          => 'N'
181470          , p_gl_transfer_mode_code      => 'S'
181471          , p_acct_entry_type_code       => 'A'
181472          , p_switch_side_flag           => 'Y'
181473          , p_merge_duplicate_code       => 'N'
181474          );
181475    --
181476    l_acc_rev_natural_side_code := 'C';  -- 4262811
181477    -- 
181478    --
181479    -- set accounting line type info
181480    --
181481    xla_ae_lines_pkg.SetAcctLineType
181482       (p_component_type             => l_component_type
181483       ,p_event_type_code            => l_event_type_code
181484       ,p_line_definition_owner_code => l_line_definition_owner_code
181485       ,p_line_definition_code       => l_line_definition_code
181486       ,p_accounting_line_code       => l_component_code
181487       ,p_accounting_line_type_code  => l_component_type_code
181488       ,p_accounting_line_appl_id    => l_component_appl_id
181489       ,p_amb_context_code           => l_amb_context_code
181490       ,p_entity_code                => l_entity_code
181491       ,p_event_class_code           => l_event_class_code);
181492    --
181493    -- set accounting class
181494    --
181495    xla_ae_lines_pkg.SetAcctClass(
181496            p_accounting_class_code  => 'OFFSET'
181497          , p_ae_header_id           => l_ae_header_id
181498          );
181499 
181500    --
181501    -- set rounding class
181502    --
181503    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
181504                       'OFFSET';
181505 
181506    --
181507    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
181508    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
181509    --
181510    -- bulk performance
181511    --
181512    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
181513 
181514    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
181515       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
181516 
181517    -- 4955764
181518    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
181519       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
181520 
181521    -- 4458381 Public Sector Enh
181522    
181523    --
181524    -- set accounting attributes for the line type
181525    --
181526    l_entered_amt_idx := 3;
181527    l_accted_amt_idx  := 8;
181528    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
181529    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
181530    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
181531    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
181532    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
181533    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
181534    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
181535    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
181536    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
181537    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
181538    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
181539    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
181540    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
181541    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
181542    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
181543    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
181544    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
181545 
181546    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
181547    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
181548 
181549    ---------------------------------------------------------------------------------------------------------------
181550    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
181551    ---------------------------------------------------------------------------------------------------------------
181552    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
181553 
181554    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
181555    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
181556 
181557    IF xla_accounting_cache_pkg.GetValueChar
181558          (p_source_code         => 'LEDGER_CATEGORY_CODE'
181559          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
181560    AND l_bflow_method_code = 'PRIOR_ENTRY'
181561 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
181562    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
181563          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
181564        )
181565    THEN
181566          xla_ae_lines_pkg.BflowUpgEntry
181567            (p_business_method_code    => l_bflow_method_code
181568            ,p_business_class_code     => l_bflow_class_code
181569            ,p_balance_type            => l_balance_type_code);
181570    ELSE
181571       NULL;
181572 -- No business flow processing for business flow method of NONE.
181573    END IF;
181574 
181575    --
181576    -- call analytical criteria
181577    --
181578    
181579    --
181580    -- call description
181581    --
181582    
181583 xla_ae_lines_pkg.SetLineDescription(
181584    p_ae_header_id => l_ae_header_id
181585   ,p_description  => Description_1 (
181586      p_application_id         => p_application_id
181587    , p_ae_header_id           => l_ae_header_id 
181588 , p_source_1 => p_source_1
181589 , p_source_2 => p_source_2
181590 , p_source_3 => p_source_3
181591 , p_source_4 => p_source_4
181592 , p_source_5 => p_source_5
181593    )
181594 );
181595 
181596 
181597    --
181598    -- call ADRs
181599    -- Bug 4922099
181600    --
181601    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
181602         (NVL(l_actual_upg_option, 'N') = 'O') OR
181603         (NVL(l_enc_upg_option, 'N') = 'O')
181604       )
181605    THEN
181606    NULL;
181607    --
181608    --
181609    
181610   l_ccid := AcctDerRule_6(
181611            p_application_id           => p_application_id
181612          , p_ae_header_id             => l_ae_header_id 
181613 , p_source_11 => p_source_11
181614          , x_transaction_coa_id       => l_adr_transaction_coa_id
181615          , x_accounting_coa_id        => l_adr_accounting_coa_id
181616          , x_value_type_code          => l_adr_value_type_code
181617          , p_side                     => 'NA'
181618    );
181619 
181620    xla_ae_lines_pkg.set_ccid(
181621     p_code_combination_id          => l_ccid
181622   , p_value_type_code              => l_adr_value_type_code
181623   , p_transaction_coa_id           => l_adr_transaction_coa_id
181624   , p_accounting_coa_id            => l_adr_accounting_coa_id
181625   , p_adr_code                     => 'CST_DEFAULT'
181626   , p_adr_type_code                => 'S'
181627   , p_component_type               => l_component_type
181628   , p_component_code               => l_component_code
181629   , p_component_type_code          => l_component_type_code
181630   , p_component_appl_id            => l_component_appl_id
181631   , p_amb_context_code             => l_amb_context_code
181632   , p_side                         => 'NA'
181633   );
181634 
181635 
181636    --
181637    --
181638    END IF;
181639    --
181640    -- Bug 4922099
181641    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
181642           (NVL(l_enc_upg_option, 'N') = 'O')
181643         ) AND
181644         (l_bflow_method_code = 'PRIOR_ENTRY')
181645       )
181646    THEN
181647       IF
181648       --
181649       1 = 2
181650       --
181651       THEN
181652       xla_accounting_err_pkg.build_message
181653                                     (p_appli_s_name            => 'XLA'
181654                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
181655                                     ,p_token_1                 => 'LINE_NUMBER'
181656                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
181657                                     ,p_token_2                 => 'LINE_TYPE_NAME'
181658                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
181659                                                                              l_component_type
181660                                                                             ,l_component_code
181661                                                                             ,l_component_type_code
181662                                                                             ,l_component_appl_id
181663                                                                             ,l_amb_context_code
181664                                                                             ,l_entity_code
181665                                                                             ,l_event_class_code
181666                                                                            )
181667                                     ,p_token_3                 => 'OWNER'
181668                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
181669                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
181670                                                                           ,p_lookup_code    => l_component_type_code
181671                                                                          )
181672                                     ,p_token_4                 => 'PRODUCT_NAME'
181673                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
181674                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
181675                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
181676                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
181677                                     ,p_ae_header_id            =>  NULL
181678                                        );
181679 
181680         IF (C_LEVEL_ERROR>= g_log_level) THEN
181681                  trace
181682                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
181683                       ,p_level    => C_LEVEL_ERROR
181684                       ,p_module   => l_log_module);
181685         END IF;
181686       END IF;
181687    END IF;
181688    --
181689    --
181690    ------------------------------------------------------------------------------------------------
181691    -- 4219869 Business Flow
181692    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
181693    -- Prior Entry.  Currently, the following code is always generated.
181694    ------------------------------------------------------------------------------------------------
181695    XLA_AE_LINES_PKG.ValidateCurrentLine;
181696 
181697    ------------------------------------------------------------------------------------
181698    -- 4219869 Business Flow
181699    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
181700    ------------------------------------------------------------------------------------
181701    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
181702 
181703    ----------------------------------------------------------------------------------
181704    -- 4219869 Business Flow
181705    -- Update journal entry status -- Need to generate this within IF <condition>
181706    ----------------------------------------------------------------------------------
181707    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
181708          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
181709          ,p_balance_type_code => l_balance_type_code
181710          );
181711 
181712    -------------------------------------------------------------------------------------------
181713    -- 4262811 - Generate the Accrual Reversal lines
181714    -------------------------------------------------------------------------------------------
181715    BEGIN
181716       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
181717                               (g_array_event(p_event_id).array_value_num('header_index'));
181718       IF l_acc_rev_flag IS NULL THEN
181719          l_acc_rev_flag := 'N';
181720       END IF;
181721    EXCEPTION
181722       WHEN OTHERS THEN
181723          l_acc_rev_flag := 'N';
181724    END;
181725    --
181726    IF (l_acc_rev_flag = 'Y') THEN
181727 
181728        -- 4645092  ------------------------------------------------------------------------------
181729        -- To allow MPA report to determine if it should generate report process
181730        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
181731        ------------------------------------------------------------------------------------------
181732 
181733        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
181734        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
181735    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
181736    -- call ADRs
181737    -- Bug 4922099
181738    --
181739    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
181740         (NVL(l_actual_upg_option, 'N') = 'O') OR
181741         (NVL(l_enc_upg_option, 'N') = 'O')
181742       )
181743    THEN
181744    NULL;
181745    --
181746    --
181747    
181748   l_ccid := AcctDerRule_6(
181749            p_application_id           => p_application_id
181750          , p_ae_header_id             => l_ae_header_id 
181751 , p_source_11 => p_source_11
181752          , x_transaction_coa_id       => l_adr_transaction_coa_id
181753          , x_accounting_coa_id        => l_adr_accounting_coa_id
181754          , x_value_type_code          => l_adr_value_type_code
181755          , p_side                     => 'NA'
181756    );
181757 
181758    xla_ae_lines_pkg.set_ccid(
181759     p_code_combination_id          => l_ccid
181760   , p_value_type_code              => l_adr_value_type_code
181761   , p_transaction_coa_id           => l_adr_transaction_coa_id
181762   , p_accounting_coa_id            => l_adr_accounting_coa_id
181763   , p_adr_code                     => 'CST_DEFAULT'
181764   , p_adr_type_code                => 'S'
181765   , p_component_type               => l_component_type
181766   , p_component_code               => l_component_code
181767   , p_component_type_code          => l_component_type_code
181768   , p_component_appl_id            => l_component_appl_id
181769   , p_amb_context_code             => l_amb_context_code
181770   , p_side                         => 'NA'
181771   );
181772 
181773 
181774    --
181775    --
181776    END IF;
181777 
181778        --
181779        -- Update the line information that should be overwritten
181780        --
181781        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
181782                                          p_header_num   => 1);
181783        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
181784 
181785        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
181786 
181787        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
181788           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
181789        END IF;
181790 
181791       --
181792       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
181793       --
181794       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
181795           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
181796       ELSE
181797           ---------------------------------------------------------------------------------------------------
181798           -- 4262811a Switch Sign
181799           ---------------------------------------------------------------------------------------------------
181800           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
181801           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
181802                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
181803           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
181804                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
181805           -- 5132302
181806           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
181807                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
181808 
181809       END IF;
181810 
181811       -- 4955764
181812       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
181813       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
181814 
181815 
181816       XLA_AE_LINES_PKG.ValidateCurrentLine;
181817       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
181818 
181819       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
181820                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
181821                ,p_balance_type_code => l_balance_type_code);
181822 
181823    END IF;
181824 
181825    -----------------------------------------------------------------------------------------
181826    -- 4262811 Multiperiod Accounting
181827    -----------------------------------------------------------------------------------------
181828      -- No MPA option is assigned.
181829 
181830 
181831 END IF;
181832 END IF;
181833 --
181834 
181835 --
181836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181837    trace
181838       (p_msg      => 'END of AcctLineType_334'
181839       ,p_level    => C_LEVEL_PROCEDURE
181840       ,p_module   => l_log_module);
181841 END IF;
181842 --
181843 EXCEPTION
181844   WHEN xla_exceptions_pkg.application_exception THEN
181845       RAISE;
181846   WHEN OTHERS THEN
181847        xla_exceptions_pkg.raise_message
181848            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_334');
181849 END AcctLineType_334;
181850 --
181851 
181852 ---------------------------------------
181853 --
181854 -- PRIVATE FUNCTION
181855 --         AcctLineType_335
181856 --
181857 ---------------------------------------
181858 PROCEDURE AcctLineType_335 (
181859   p_application_id        IN NUMBER
181860  ,p_event_id              IN NUMBER
181861  ,p_calculate_acctd_flag  IN VARCHAR2
181862  ,p_calculate_g_l_flag    IN VARCHAR2
181863  ,p_actual_flag           IN OUT VARCHAR2
181864  ,p_balance_type_code     OUT VARCHAR2
181865  ,p_gain_or_loss_ref      OUT VARCHAR2
181866  
181867 --TRANSACTION_ID
181868  , p_source_1            IN NUMBER
181869 --Item Concatenated Segments
181870  , p_source_2            IN VARCHAR2
181871 --Transaction Quantity
181872  , p_source_3            IN NUMBER
181873 --Transaction Unit of Measure Code
181874  , p_source_4            IN VARCHAR2
181875 --Inventory Transaction Type Description
181876  , p_source_5            IN VARCHAR2
181877 --Cost Management Default Account
181878  , p_source_11            IN NUMBER
181879 --DISTRIBUTION_IDENTIFIER
181880  , p_source_84            IN NUMBER
181881 --Distribution Type
181882  , p_source_85            IN VARCHAR2
181883  , p_source_85_meaning    IN VARCHAR2
181884 --Entered Currency Code
181885  , p_source_88            IN VARCHAR2
181886 --Entered Amount
181887  , p_source_91            IN NUMBER
181888 --Currency Conversion Date
181889  , p_source_92            IN DATE
181890 --Currency Conversion Rate
181891  , p_source_93            IN NUMBER
181892 --Currency Conversion Type
181893  , p_source_94            IN VARCHAR2
181894 --Accounted Amount
181895  , p_source_95            IN NUMBER
181896 --Accounting Line Type
181897  , p_source_97            IN NUMBER
181898 )
181899 IS
181900 
181901 l_component_type              VARCHAR2(80);
181902 l_component_code              VARCHAR2(30);
181903 l_component_type_code         VARCHAR2(1);
181904 l_component_appl_id           INTEGER;
181905 l_amb_context_code            VARCHAR2(30);
181906 l_entity_code                 VARCHAR2(30);
181907 l_event_class_code            VARCHAR2(30);
181908 l_ae_header_id                NUMBER;
181909 l_event_type_code             VARCHAR2(30);
181910 l_line_definition_code        VARCHAR2(30);
181911 l_line_definition_owner_code  VARCHAR2(1);
181912 --
181913 -- adr variables
181914 l_segment                     VARCHAR2(30);
181915 l_ccid                        NUMBER;
181916 l_adr_transaction_coa_id      NUMBER;
181917 l_adr_accounting_coa_id       NUMBER;
181918 l_adr_flexfield_segment_code  VARCHAR2(30);
181919 l_adr_flex_value_set_id       NUMBER;
181920 l_adr_value_type_code         VARCHAR2(30);
181921 l_adr_value_combination_id    NUMBER;
181922 l_adr_value_segment_code      VARCHAR2(30);
181923 
181924 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
181925 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
181926 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
181927 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
181928 
181929 -- 4262811 Variables ------------------------------------------------------------------------------------------
181930 l_entered_amt_idx             NUMBER;
181931 l_accted_amt_idx              NUMBER;
181932 l_acc_rev_flag                VARCHAR2(1);
181933 l_accrual_line_num            NUMBER;
181934 l_tmp_amt                     NUMBER;
181935 l_acc_rev_natural_side_code   VARCHAR2(1);
181936 
181937 l_num_entries                 NUMBER;
181938 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
181939 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
181940 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
181941 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
181942 l_recog_line_1                NUMBER;
181943 l_recog_line_2                NUMBER;
181944 
181945 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
181946 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
181947 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
181948 
181949 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
181950 
181951 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
181952 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
181953 
181954 ---------------------------------------------------------------------------------------------------------------
181955 
181956 
181957 --
181958 -- bulk performance
181959 --
181960 l_balance_type_code           VARCHAR2(1);
181961 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
181962 l_log_module                  VARCHAR2(240);
181963 
181964 --
181965 -- Upgrade strategy
181966 --
181967 l_actual_upg_option           VARCHAR2(1);
181968 l_enc_upg_option           VARCHAR2(1);
181969 
181970 --
181971 BEGIN
181972 --
181973 IF g_log_enabled THEN
181974       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_335';
181975 END IF;
181976 --
181977 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181978 
181979       trace
181980          (p_msg      => 'BEGIN of AcctLineType_335'
181981          ,p_level    => C_LEVEL_PROCEDURE
181982          ,p_module   => l_log_module);
181983 
181984 END IF;
181985 --
181986 l_component_type             := 'AMB_JLT';
181987 l_component_code             := 'OFFSET';
181988 l_component_type_code        := 'S';
181989 l_component_appl_id          :=  707;
181990 l_amb_context_code           := 'DEFAULT';
181991 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
181992 l_event_class_code           := 'WIP_MTL';
181993 l_event_type_code            := 'WIP_SCRAP';
181994 l_line_definition_owner_code := 'S';
181995 l_line_definition_code       := 'PI_WIP_SCRAP';
181996 --
181997 l_balance_type_code          := 'A';
181998 l_segment                     := NULL;
181999 l_ccid                        := NULL;
182000 l_adr_transaction_coa_id      := NULL;
182001 l_adr_accounting_coa_id       := NULL;
182002 l_adr_flexfield_segment_code  := NULL;
182003 l_adr_flex_value_set_id       := NULL;
182004 l_adr_value_type_code         := NULL;
182005 l_adr_value_combination_id    := NULL;
182006 l_adr_value_segment_code      := NULL;
182007 
182008 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
182009 l_bflow_class_code           := '';    -- 4219869 Business Flow
182010 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
182011 l_budgetary_control_flag     := 'N';
182012 
182013 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
182014 l_bflow_applied_to_amt       := NULL; -- 5132302
182015 l_entered_amt_idx            := NULL;          -- 4262811
182016 l_accted_amt_idx             := NULL;          -- 4262811
182017 l_acc_rev_flag               := NULL;          -- 4262811
182018 l_accrual_line_num           := NULL;          -- 4262811
182019 l_tmp_amt                    := NULL;          -- 4262811
182020 --
182021  
182022 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
182023     l_balance_type_code <> 'B' THEN
182024 IF NVL(p_source_97,9E125) =  2
182025  THEN 
182026 
182027    --
182028    XLA_AE_LINES_PKG.SetNewLine;
182029 
182030    p_balance_type_code          := l_balance_type_code;
182031    -- set the flag so later we will know whether the gain loss line needs to be created
182032    
182033    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
182034      p_actual_flag :='A';
182035    END IF;
182036 
182037    --
182038    -- bulk performance
182039    --
182040    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
182041                                       p_header_num   => 0); -- 4262811
182042    --
182043    -- set accounting line options
182044    --
182045    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
182046            p_natural_side_code          => 'D'
182047          , p_gain_or_loss_flag          => 'N'
182048          , p_gl_transfer_mode_code      => 'S'
182049          , p_acct_entry_type_code       => 'A'
182050          , p_switch_side_flag           => 'Y'
182051          , p_merge_duplicate_code       => 'N'
182052          );
182053    --
182054    l_acc_rev_natural_side_code := 'C';  -- 4262811
182055    -- 
182056    --
182057    -- set accounting line type info
182058    --
182059    xla_ae_lines_pkg.SetAcctLineType
182060       (p_component_type             => l_component_type
182061       ,p_event_type_code            => l_event_type_code
182062       ,p_line_definition_owner_code => l_line_definition_owner_code
182063       ,p_line_definition_code       => l_line_definition_code
182064       ,p_accounting_line_code       => l_component_code
182065       ,p_accounting_line_type_code  => l_component_type_code
182066       ,p_accounting_line_appl_id    => l_component_appl_id
182067       ,p_amb_context_code           => l_amb_context_code
182068       ,p_entity_code                => l_entity_code
182069       ,p_event_class_code           => l_event_class_code);
182070    --
182071    -- set accounting class
182072    --
182073    xla_ae_lines_pkg.SetAcctClass(
182074            p_accounting_class_code  => 'OFFSET'
182075          , p_ae_header_id           => l_ae_header_id
182076          );
182077 
182078    --
182079    -- set rounding class
182080    --
182081    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
182082                       'OFFSET';
182083 
182084    --
182085    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
182086    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
182087    --
182088    -- bulk performance
182089    --
182090    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
182091 
182092    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
182093       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
182094 
182095    -- 4955764
182096    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
182097       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
182098 
182099    -- 4458381 Public Sector Enh
182100    
182101    --
182102    -- set accounting attributes for the line type
182103    --
182104    l_entered_amt_idx := 3;
182105    l_accted_amt_idx  := 8;
182106    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
182107    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
182108    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
182109    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
182110    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
182111    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
182112    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
182113    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
182114    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
182115    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
182116    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
182117    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
182118    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
182119    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
182120    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
182121    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
182122    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
182123 
182124    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
182125    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
182126 
182127    ---------------------------------------------------------------------------------------------------------------
182128    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
182129    ---------------------------------------------------------------------------------------------------------------
182130    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
182131 
182132    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
182133    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
182134 
182135    IF xla_accounting_cache_pkg.GetValueChar
182136          (p_source_code         => 'LEDGER_CATEGORY_CODE'
182137          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
182138    AND l_bflow_method_code = 'PRIOR_ENTRY'
182139 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
182140    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
182141          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
182142        )
182143    THEN
182144          xla_ae_lines_pkg.BflowUpgEntry
182145            (p_business_method_code    => l_bflow_method_code
182146            ,p_business_class_code     => l_bflow_class_code
182147            ,p_balance_type            => l_balance_type_code);
182148    ELSE
182149       NULL;
182150 -- No business flow processing for business flow method of NONE.
182151    END IF;
182152 
182153    --
182154    -- call analytical criteria
182155    --
182156    
182157    --
182158    -- call description
182159    --
182160    
182161 xla_ae_lines_pkg.SetLineDescription(
182162    p_ae_header_id => l_ae_header_id
182163   ,p_description  => Description_1 (
182164      p_application_id         => p_application_id
182165    , p_ae_header_id           => l_ae_header_id 
182166 , p_source_1 => p_source_1
182167 , p_source_2 => p_source_2
182168 , p_source_3 => p_source_3
182169 , p_source_4 => p_source_4
182170 , p_source_5 => p_source_5
182171    )
182172 );
182173 
182174 
182175    --
182176    -- call ADRs
182177    -- Bug 4922099
182178    --
182179    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
182180         (NVL(l_actual_upg_option, 'N') = 'O') OR
182181         (NVL(l_enc_upg_option, 'N') = 'O')
182182       )
182183    THEN
182184    NULL;
182185    --
182186    --
182187    
182188   l_ccid := AcctDerRule_6(
182189            p_application_id           => p_application_id
182190          , p_ae_header_id             => l_ae_header_id 
182191 , p_source_11 => p_source_11
182192          , x_transaction_coa_id       => l_adr_transaction_coa_id
182193          , x_accounting_coa_id        => l_adr_accounting_coa_id
182194          , x_value_type_code          => l_adr_value_type_code
182195          , p_side                     => 'NA'
182196    );
182197 
182198    xla_ae_lines_pkg.set_ccid(
182199     p_code_combination_id          => l_ccid
182200   , p_value_type_code              => l_adr_value_type_code
182201   , p_transaction_coa_id           => l_adr_transaction_coa_id
182202   , p_accounting_coa_id            => l_adr_accounting_coa_id
182203   , p_adr_code                     => 'CST_DEFAULT'
182204   , p_adr_type_code                => 'S'
182205   , p_component_type               => l_component_type
182206   , p_component_code               => l_component_code
182207   , p_component_type_code          => l_component_type_code
182208   , p_component_appl_id            => l_component_appl_id
182209   , p_amb_context_code             => l_amb_context_code
182210   , p_side                         => 'NA'
182211   );
182212 
182213 
182214    --
182215    --
182216    END IF;
182217    --
182218    -- Bug 4922099
182219    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
182220           (NVL(l_enc_upg_option, 'N') = 'O')
182221         ) AND
182222         (l_bflow_method_code = 'PRIOR_ENTRY')
182223       )
182224    THEN
182225       IF
182226       --
182227       1 = 2
182228       --
182229       THEN
182230       xla_accounting_err_pkg.build_message
182231                                     (p_appli_s_name            => 'XLA'
182232                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
182233                                     ,p_token_1                 => 'LINE_NUMBER'
182234                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
182235                                     ,p_token_2                 => 'LINE_TYPE_NAME'
182236                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
182237                                                                              l_component_type
182238                                                                             ,l_component_code
182239                                                                             ,l_component_type_code
182240                                                                             ,l_component_appl_id
182241                                                                             ,l_amb_context_code
182242                                                                             ,l_entity_code
182243                                                                             ,l_event_class_code
182244                                                                            )
182245                                     ,p_token_3                 => 'OWNER'
182246                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
182247                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
182248                                                                           ,p_lookup_code    => l_component_type_code
182249                                                                          )
182250                                     ,p_token_4                 => 'PRODUCT_NAME'
182251                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
182252                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
182253                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
182254                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
182255                                     ,p_ae_header_id            =>  NULL
182256                                        );
182257 
182258         IF (C_LEVEL_ERROR>= g_log_level) THEN
182259                  trace
182260                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
182261                       ,p_level    => C_LEVEL_ERROR
182262                       ,p_module   => l_log_module);
182263         END IF;
182264       END IF;
182265    END IF;
182266    --
182267    --
182268    ------------------------------------------------------------------------------------------------
182269    -- 4219869 Business Flow
182270    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
182271    -- Prior Entry.  Currently, the following code is always generated.
182272    ------------------------------------------------------------------------------------------------
182273    XLA_AE_LINES_PKG.ValidateCurrentLine;
182274 
182275    ------------------------------------------------------------------------------------
182276    -- 4219869 Business Flow
182277    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
182278    ------------------------------------------------------------------------------------
182279    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
182280 
182281    ----------------------------------------------------------------------------------
182282    -- 4219869 Business Flow
182283    -- Update journal entry status -- Need to generate this within IF <condition>
182284    ----------------------------------------------------------------------------------
182285    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
182286          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
182287          ,p_balance_type_code => l_balance_type_code
182288          );
182289 
182290    -------------------------------------------------------------------------------------------
182291    -- 4262811 - Generate the Accrual Reversal lines
182292    -------------------------------------------------------------------------------------------
182293    BEGIN
182294       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
182295                               (g_array_event(p_event_id).array_value_num('header_index'));
182296       IF l_acc_rev_flag IS NULL THEN
182297          l_acc_rev_flag := 'N';
182298       END IF;
182299    EXCEPTION
182300       WHEN OTHERS THEN
182301          l_acc_rev_flag := 'N';
182302    END;
182303    --
182304    IF (l_acc_rev_flag = 'Y') THEN
182305 
182306        -- 4645092  ------------------------------------------------------------------------------
182307        -- To allow MPA report to determine if it should generate report process
182308        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
182309        ------------------------------------------------------------------------------------------
182310 
182311        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
182312        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
182313    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
182314    -- call ADRs
182315    -- Bug 4922099
182316    --
182317    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
182318         (NVL(l_actual_upg_option, 'N') = 'O') OR
182319         (NVL(l_enc_upg_option, 'N') = 'O')
182320       )
182321    THEN
182322    NULL;
182323    --
182324    --
182325    
182326   l_ccid := AcctDerRule_6(
182327            p_application_id           => p_application_id
182328          , p_ae_header_id             => l_ae_header_id 
182329 , p_source_11 => p_source_11
182330          , x_transaction_coa_id       => l_adr_transaction_coa_id
182331          , x_accounting_coa_id        => l_adr_accounting_coa_id
182332          , x_value_type_code          => l_adr_value_type_code
182333          , p_side                     => 'NA'
182334    );
182335 
182336    xla_ae_lines_pkg.set_ccid(
182337     p_code_combination_id          => l_ccid
182338   , p_value_type_code              => l_adr_value_type_code
182339   , p_transaction_coa_id           => l_adr_transaction_coa_id
182340   , p_accounting_coa_id            => l_adr_accounting_coa_id
182341   , p_adr_code                     => 'CST_DEFAULT'
182342   , p_adr_type_code                => 'S'
182343   , p_component_type               => l_component_type
182344   , p_component_code               => l_component_code
182345   , p_component_type_code          => l_component_type_code
182346   , p_component_appl_id            => l_component_appl_id
182347   , p_amb_context_code             => l_amb_context_code
182348   , p_side                         => 'NA'
182349   );
182350 
182351 
182352    --
182353    --
182354    END IF;
182355 
182356        --
182357        -- Update the line information that should be overwritten
182358        --
182359        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
182360                                          p_header_num   => 1);
182361        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
182362 
182363        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
182364 
182365        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
182366           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
182367        END IF;
182368 
182369       --
182370       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
182371       --
182372       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
182373           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
182374       ELSE
182375           ---------------------------------------------------------------------------------------------------
182376           -- 4262811a Switch Sign
182377           ---------------------------------------------------------------------------------------------------
182378           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
182379           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
182380                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
182381           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
182382                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
182383           -- 5132302
182384           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
182385                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
182386 
182387       END IF;
182388 
182389       -- 4955764
182390       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
182391       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
182392 
182393 
182394       XLA_AE_LINES_PKG.ValidateCurrentLine;
182395       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
182396 
182397       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
182398                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
182399                ,p_balance_type_code => l_balance_type_code);
182400 
182401    END IF;
182402 
182403    -----------------------------------------------------------------------------------------
182404    -- 4262811 Multiperiod Accounting
182405    -----------------------------------------------------------------------------------------
182406      -- No MPA option is assigned.
182407 
182408 
182409 END IF;
182410 END IF;
182411 --
182412 
182413 --
182414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182415    trace
182416       (p_msg      => 'END of AcctLineType_335'
182417       ,p_level    => C_LEVEL_PROCEDURE
182418       ,p_module   => l_log_module);
182419 END IF;
182420 --
182421 EXCEPTION
182422   WHEN xla_exceptions_pkg.application_exception THEN
182423       RAISE;
182424   WHEN OTHERS THEN
182425        xla_exceptions_pkg.raise_message
182426            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_335');
182427 END AcctLineType_335;
182428 --
182429 
182430 ---------------------------------------
182431 --
182432 -- PRIVATE FUNCTION
182433 --         AcctLineType_336
182434 --
182435 ---------------------------------------
182436 PROCEDURE AcctLineType_336 (
182437   p_application_id        IN NUMBER
182438  ,p_event_id              IN NUMBER
182439  ,p_calculate_acctd_flag  IN VARCHAR2
182440  ,p_calculate_g_l_flag    IN VARCHAR2
182441  ,p_actual_flag           IN OUT VARCHAR2
182442  ,p_balance_type_code     OUT VARCHAR2
182443  ,p_gain_or_loss_ref      OUT VARCHAR2
182444  
182445 --TRANSACTION_ID
182446  , p_source_1            IN NUMBER
182447 --Item Concatenated Segments
182448  , p_source_2            IN VARCHAR2
182449 --Transaction Quantity
182450  , p_source_3            IN NUMBER
182451 --Transaction Unit of Measure Code
182452  , p_source_4            IN VARCHAR2
182453 --Inventory Transaction Type Description
182454  , p_source_5            IN VARCHAR2
182455 --Cost Management Default Account
182456  , p_source_11            IN NUMBER
182457 --Applied to Application ID
182458  , p_source_79            IN NUMBER
182459 --Applied to Distribution Link Type
182460  , p_source_80            IN VARCHAR2
182461 --Applied to Entity Code
182462  , p_source_81            IN VARCHAR2
182463 --Applied To Purchase Document Identifier
182464  , p_source_83            IN NUMBER
182465 --DISTRIBUTION_IDENTIFIER
182466  , p_source_84            IN NUMBER
182467 --Distribution Type
182468  , p_source_85            IN VARCHAR2
182469  , p_source_85_meaning    IN VARCHAR2
182470 --PO Budget Account
182471  , p_source_86            IN NUMBER
182472 --Encumbrance Reversal Amount Entered
182473  , p_source_87            IN NUMBER
182474 --Entered Currency Code
182475  , p_source_88            IN VARCHAR2
182476 --Transaction Encumbrance Reversal Amount
182477  , p_source_89            IN NUMBER
182478 --Entered Amount
182479  , p_source_91            IN NUMBER
182480 --Currency Conversion Date
182481  , p_source_92            IN DATE
182482 --Currency Conversion Rate
182483  , p_source_93            IN NUMBER
182484 --Currency Conversion Type
182485  , p_source_94            IN VARCHAR2
182486 --Accounted Amount
182487  , p_source_95            IN NUMBER
182488 --Purchasing Encumbrance Type Identifier
182489  , p_source_96            IN NUMBER
182490 --Accounting Line Type
182491  , p_source_97            IN NUMBER
182492 --Costing Encumbrance Upgrade Option
182493  , p_source_100            IN VARCHAR2
182494 --TXN_PO_DISTRIBUTION_ID
182495  , p_source_101            IN NUMBER
182496 )
182497 IS
182498 
182499 l_component_type              VARCHAR2(80);
182500 l_component_code              VARCHAR2(30);
182501 l_component_type_code         VARCHAR2(1);
182502 l_component_appl_id           INTEGER;
182503 l_amb_context_code            VARCHAR2(30);
182504 l_entity_code                 VARCHAR2(30);
182505 l_event_class_code            VARCHAR2(30);
182506 l_ae_header_id                NUMBER;
182507 l_event_type_code             VARCHAR2(30);
182508 l_line_definition_code        VARCHAR2(30);
182509 l_line_definition_owner_code  VARCHAR2(1);
182510 --
182511 -- adr variables
182512 l_segment                     VARCHAR2(30);
182513 l_ccid                        NUMBER;
182514 l_adr_transaction_coa_id      NUMBER;
182515 l_adr_accounting_coa_id       NUMBER;
182516 l_adr_flexfield_segment_code  VARCHAR2(30);
182517 l_adr_flex_value_set_id       NUMBER;
182518 l_adr_value_type_code         VARCHAR2(30);
182519 l_adr_value_combination_id    NUMBER;
182520 l_adr_value_segment_code      VARCHAR2(30);
182521 
182522 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
182523 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
182524 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
182525 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
182526 
182527 -- 4262811 Variables ------------------------------------------------------------------------------------------
182528 l_entered_amt_idx             NUMBER;
182529 l_accted_amt_idx              NUMBER;
182530 l_acc_rev_flag                VARCHAR2(1);
182531 l_accrual_line_num            NUMBER;
182532 l_tmp_amt                     NUMBER;
182533 l_acc_rev_natural_side_code   VARCHAR2(1);
182534 
182535 l_num_entries                 NUMBER;
182536 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
182537 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
182538 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
182539 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
182540 l_recog_line_1                NUMBER;
182541 l_recog_line_2                NUMBER;
182542 
182543 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
182544 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
182545 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
182546 
182547 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
182548 
182549 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
182550 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
182551 
182552 ---------------------------------------------------------------------------------------------------------------
182553 
182554 
182555 --
182556 -- bulk performance
182557 --
182558 l_balance_type_code           VARCHAR2(1);
182559 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
182560 l_log_module                  VARCHAR2(240);
182561 
182562 --
182563 -- Upgrade strategy
182564 --
182565 l_actual_upg_option           VARCHAR2(1);
182566 l_enc_upg_option           VARCHAR2(1);
182567 
182568 --
182569 BEGIN
182570 --
182571 IF g_log_enabled THEN
182572       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_336';
182573 END IF;
182574 --
182575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182576 
182577       trace
182578          (p_msg      => 'BEGIN of AcctLineType_336'
182579          ,p_level    => C_LEVEL_PROCEDURE
182580          ,p_module   => l_log_module);
182581 
182582 END IF;
182583 --
182584 l_component_type             := 'AMB_JLT';
182585 l_component_code             := 'OFFSET';
182586 l_component_type_code        := 'S';
182587 l_component_appl_id          :=  707;
182588 l_amb_context_code           := 'DEFAULT';
182589 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
182590 l_event_class_code           := 'PURCHASE_ORDER';
182591 l_event_type_code            := 'LOG_PO_DEL_ADJ';
182592 l_line_definition_owner_code := 'S';
182593 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
182594 --
182595 l_balance_type_code          := 'A';
182596 l_segment                     := NULL;
182597 l_ccid                        := NULL;
182598 l_adr_transaction_coa_id      := NULL;
182599 l_adr_accounting_coa_id       := NULL;
182600 l_adr_flexfield_segment_code  := NULL;
182601 l_adr_flex_value_set_id       := NULL;
182602 l_adr_value_type_code         := NULL;
182603 l_adr_value_combination_id    := NULL;
182604 l_adr_value_segment_code      := NULL;
182605 
182606 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
182607 l_bflow_class_code           := '';    -- 4219869 Business Flow
182608 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
182609 l_budgetary_control_flag     := 'N';
182610 
182611 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
182612 l_bflow_applied_to_amt       := NULL; -- 5132302
182613 l_entered_amt_idx            := NULL;          -- 4262811
182614 l_accted_amt_idx             := NULL;          -- 4262811
182615 l_acc_rev_flag               := NULL;          -- 4262811
182616 l_accrual_line_num           := NULL;          -- 4262811
182617 l_tmp_amt                    := NULL;          -- 4262811
182618 --
182619  
182620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
182621     l_balance_type_code <> 'B' THEN
182622 IF NVL(p_source_97,9E125) =  2
182623  THEN 
182624 
182625    --
182626    XLA_AE_LINES_PKG.SetNewLine;
182627 
182628    p_balance_type_code          := l_balance_type_code;
182629    -- set the flag so later we will know whether the gain loss line needs to be created
182630    
182631    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
182632      p_actual_flag :='A';
182633    END IF;
182634 
182635    --
182636    -- bulk performance
182637    --
182638    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
182639                                       p_header_num   => 0); -- 4262811
182640    --
182641    -- set accounting line options
182642    --
182643    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
182644            p_natural_side_code          => 'D'
182645          , p_gain_or_loss_flag          => 'N'
182646          , p_gl_transfer_mode_code      => 'S'
182647          , p_acct_entry_type_code       => 'A'
182648          , p_switch_side_flag           => 'Y'
182649          , p_merge_duplicate_code       => 'N'
182650          );
182651    --
182652    l_acc_rev_natural_side_code := 'C';  -- 4262811
182653    -- 
182654    --
182655    -- set accounting line type info
182656    --
182657    xla_ae_lines_pkg.SetAcctLineType
182658       (p_component_type             => l_component_type
182659       ,p_event_type_code            => l_event_type_code
182660       ,p_line_definition_owner_code => l_line_definition_owner_code
182661       ,p_line_definition_code       => l_line_definition_code
182662       ,p_accounting_line_code       => l_component_code
182663       ,p_accounting_line_type_code  => l_component_type_code
182664       ,p_accounting_line_appl_id    => l_component_appl_id
182665       ,p_amb_context_code           => l_amb_context_code
182666       ,p_entity_code                => l_entity_code
182667       ,p_event_class_code           => l_event_class_code);
182668    --
182669    -- set accounting class
182670    --
182671    xla_ae_lines_pkg.SetAcctClass(
182672            p_accounting_class_code  => 'OFFSET'
182673          , p_ae_header_id           => l_ae_header_id
182674          );
182675 
182676    --
182677    -- set rounding class
182678    --
182679    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
182680                       'OFFSET';
182681 
182682    --
182683    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
182684    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
182685    --
182686    -- bulk performance
182687    --
182688    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
182689 
182690    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
182691       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
182692 
182693    -- 4955764
182694    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
182695       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
182696 
182697    -- 4458381 Public Sector Enh
182698    
182699    --
182700    -- set accounting attributes for the line type
182701    --
182702    l_entered_amt_idx := 17;
182703    l_accted_amt_idx  := 22;
182704    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
182705    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
182706    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
182707    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
182708    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
182709    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
182710    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
182711    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
182712    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
182713    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
182714    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
182715    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
182716    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
182717    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
182718    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
182719    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
182720    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
182721    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
182722    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
182723    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
182724    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
182725    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
182726    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
182727    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
182728    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
182729    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
182730    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
182731    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
182732    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
182733    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
182734    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
182735    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
182736    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
182737    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
182738    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
182739    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
182740    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
182741    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
182742    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
182743    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
182744    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
182745    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
182746    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
182747    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
182748    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
182749    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
182750    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
182751    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
182752    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
182753 
182754    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
182755    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
182756 
182757    ---------------------------------------------------------------------------------------------------------------
182758    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
182759    ---------------------------------------------------------------------------------------------------------------
182760    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
182761 
182762    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
182763    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
182764 
182765    IF xla_accounting_cache_pkg.GetValueChar
182766          (p_source_code         => 'LEDGER_CATEGORY_CODE'
182767          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
182768    AND l_bflow_method_code = 'PRIOR_ENTRY'
182769 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
182770    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
182771          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
182772        )
182773    THEN
182774          xla_ae_lines_pkg.BflowUpgEntry
182775            (p_business_method_code    => l_bflow_method_code
182776            ,p_business_class_code     => l_bflow_class_code
182777            ,p_balance_type            => l_balance_type_code);
182778    ELSE
182779       NULL;
182780 -- No business flow processing for business flow method of NONE.
182781    END IF;
182782 
182783    --
182784    -- call analytical criteria
182785    --
182786    
182787    --
182788    -- call description
182789    --
182790    
182791 xla_ae_lines_pkg.SetLineDescription(
182792    p_ae_header_id => l_ae_header_id
182793   ,p_description  => Description_1 (
182794      p_application_id         => p_application_id
182795    , p_ae_header_id           => l_ae_header_id 
182796 , p_source_1 => p_source_1
182797 , p_source_2 => p_source_2
182798 , p_source_3 => p_source_3
182799 , p_source_4 => p_source_4
182800 , p_source_5 => p_source_5
182801    )
182802 );
182803 
182804 
182805    --
182806    -- call ADRs
182807    -- Bug 4922099
182808    --
182809    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
182810         (NVL(l_actual_upg_option, 'N') = 'O') OR
182811         (NVL(l_enc_upg_option, 'N') = 'O')
182812       )
182813    THEN
182814    NULL;
182815    --
182816    --
182817    
182818   l_ccid := AcctDerRule_6(
182819            p_application_id           => p_application_id
182820          , p_ae_header_id             => l_ae_header_id 
182821 , p_source_11 => p_source_11
182822          , x_transaction_coa_id       => l_adr_transaction_coa_id
182823          , x_accounting_coa_id        => l_adr_accounting_coa_id
182824          , x_value_type_code          => l_adr_value_type_code
182825          , p_side                     => 'NA'
182826    );
182827 
182828    xla_ae_lines_pkg.set_ccid(
182829     p_code_combination_id          => l_ccid
182830   , p_value_type_code              => l_adr_value_type_code
182831   , p_transaction_coa_id           => l_adr_transaction_coa_id
182832   , p_accounting_coa_id            => l_adr_accounting_coa_id
182833   , p_adr_code                     => 'CST_DEFAULT'
182834   , p_adr_type_code                => 'S'
182835   , p_component_type               => l_component_type
182836   , p_component_code               => l_component_code
182837   , p_component_type_code          => l_component_type_code
182838   , p_component_appl_id            => l_component_appl_id
182839   , p_amb_context_code             => l_amb_context_code
182840   , p_side                         => 'NA'
182841   );
182842 
182843 
182844    --
182845    --
182846    END IF;
182847    --
182848    -- Bug 4922099
182849    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
182850           (NVL(l_enc_upg_option, 'N') = 'O')
182851         ) AND
182852         (l_bflow_method_code = 'PRIOR_ENTRY')
182853       )
182854    THEN
182855       IF
182856       --
182857       1 = 2
182858       --
182859       THEN
182860       xla_accounting_err_pkg.build_message
182861                                     (p_appli_s_name            => 'XLA'
182862                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
182863                                     ,p_token_1                 => 'LINE_NUMBER'
182864                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
182865                                     ,p_token_2                 => 'LINE_TYPE_NAME'
182866                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
182867                                                                              l_component_type
182868                                                                             ,l_component_code
182869                                                                             ,l_component_type_code
182870                                                                             ,l_component_appl_id
182871                                                                             ,l_amb_context_code
182872                                                                             ,l_entity_code
182873                                                                             ,l_event_class_code
182874                                                                            )
182875                                     ,p_token_3                 => 'OWNER'
182876                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
182877                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
182878                                                                           ,p_lookup_code    => l_component_type_code
182879                                                                          )
182880                                     ,p_token_4                 => 'PRODUCT_NAME'
182881                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
182882                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
182883                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
182884                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
182885                                     ,p_ae_header_id            =>  NULL
182886                                        );
182887 
182888         IF (C_LEVEL_ERROR>= g_log_level) THEN
182889                  trace
182890                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
182891                       ,p_level    => C_LEVEL_ERROR
182892                       ,p_module   => l_log_module);
182893         END IF;
182894       END IF;
182895    END IF;
182896    --
182897    --
182898    ------------------------------------------------------------------------------------------------
182899    -- 4219869 Business Flow
182900    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
182901    -- Prior Entry.  Currently, the following code is always generated.
182902    ------------------------------------------------------------------------------------------------
182903    XLA_AE_LINES_PKG.ValidateCurrentLine;
182904 
182905    ------------------------------------------------------------------------------------
182906    -- 4219869 Business Flow
182907    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
182908    ------------------------------------------------------------------------------------
182909    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
182910 
182911    ----------------------------------------------------------------------------------
182912    -- 4219869 Business Flow
182913    -- Update journal entry status -- Need to generate this within IF <condition>
182914    ----------------------------------------------------------------------------------
182915    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
182916          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
182917          ,p_balance_type_code => l_balance_type_code
182918          );
182919 
182920    -------------------------------------------------------------------------------------------
182921    -- 4262811 - Generate the Accrual Reversal lines
182922    -------------------------------------------------------------------------------------------
182923    BEGIN
182924       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
182925                               (g_array_event(p_event_id).array_value_num('header_index'));
182926       IF l_acc_rev_flag IS NULL THEN
182927          l_acc_rev_flag := 'N';
182928       END IF;
182929    EXCEPTION
182930       WHEN OTHERS THEN
182931          l_acc_rev_flag := 'N';
182932    END;
182933    --
182934    IF (l_acc_rev_flag = 'Y') THEN
182935 
182936        -- 4645092  ------------------------------------------------------------------------------
182937        -- To allow MPA report to determine if it should generate report process
182938        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
182939        ------------------------------------------------------------------------------------------
182940 
182941        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
182942        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
182943    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
182944    -- call ADRs
182945    -- Bug 4922099
182946    --
182947    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
182948         (NVL(l_actual_upg_option, 'N') = 'O') OR
182949         (NVL(l_enc_upg_option, 'N') = 'O')
182950       )
182951    THEN
182952    NULL;
182953    --
182954    --
182955    
182956   l_ccid := AcctDerRule_6(
182957            p_application_id           => p_application_id
182958          , p_ae_header_id             => l_ae_header_id 
182959 , p_source_11 => p_source_11
182960          , x_transaction_coa_id       => l_adr_transaction_coa_id
182961          , x_accounting_coa_id        => l_adr_accounting_coa_id
182962          , x_value_type_code          => l_adr_value_type_code
182963          , p_side                     => 'NA'
182964    );
182965 
182966    xla_ae_lines_pkg.set_ccid(
182967     p_code_combination_id          => l_ccid
182968   , p_value_type_code              => l_adr_value_type_code
182969   , p_transaction_coa_id           => l_adr_transaction_coa_id
182970   , p_accounting_coa_id            => l_adr_accounting_coa_id
182971   , p_adr_code                     => 'CST_DEFAULT'
182972   , p_adr_type_code                => 'S'
182973   , p_component_type               => l_component_type
182974   , p_component_code               => l_component_code
182975   , p_component_type_code          => l_component_type_code
182976   , p_component_appl_id            => l_component_appl_id
182977   , p_amb_context_code             => l_amb_context_code
182978   , p_side                         => 'NA'
182979   );
182980 
182981 
182982    --
182983    --
182984    END IF;
182985 
182986        --
182987        -- Update the line information that should be overwritten
182988        --
182989        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
182990                                          p_header_num   => 1);
182991        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
182992 
182993        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
182994 
182995        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
182996           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
182997        END IF;
182998 
182999       --
183000       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
183001       --
183002       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
183003           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
183004       ELSE
183005           ---------------------------------------------------------------------------------------------------
183006           -- 4262811a Switch Sign
183007           ---------------------------------------------------------------------------------------------------
183008           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
183009           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
183010                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
183011           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
183012                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
183013           -- 5132302
183014           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
183015                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
183016 
183017       END IF;
183018 
183019       -- 4955764
183020       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
183021       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
183022 
183023 
183024       XLA_AE_LINES_PKG.ValidateCurrentLine;
183025       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
183026 
183027       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
183028                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
183029                ,p_balance_type_code => l_balance_type_code);
183030 
183031    END IF;
183032 
183033    -----------------------------------------------------------------------------------------
183034    -- 4262811 Multiperiod Accounting
183035    -----------------------------------------------------------------------------------------
183036      -- No MPA option is assigned.
183037 
183038 
183039 END IF;
183040 END IF;
183041 --
183042 
183043 --
183044 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183045    trace
183046       (p_msg      => 'END of AcctLineType_336'
183047       ,p_level    => C_LEVEL_PROCEDURE
183048       ,p_module   => l_log_module);
183049 END IF;
183050 --
183051 EXCEPTION
183052   WHEN xla_exceptions_pkg.application_exception THEN
183053       RAISE;
183054   WHEN OTHERS THEN
183055        xla_exceptions_pkg.raise_message
183056            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_336');
183057 END AcctLineType_336;
183058 --
183059 
183060 ---------------------------------------
183061 --
183062 -- PRIVATE FUNCTION
183063 --         AcctLineType_337
183064 --
183065 ---------------------------------------
183066 PROCEDURE AcctLineType_337 (
183067   p_application_id        IN NUMBER
183068  ,p_event_id              IN NUMBER
183069  ,p_calculate_acctd_flag  IN VARCHAR2
183070  ,p_calculate_g_l_flag    IN VARCHAR2
183071  ,p_actual_flag           IN OUT VARCHAR2
183072  ,p_balance_type_code     OUT VARCHAR2
183073  ,p_gain_or_loss_ref      OUT VARCHAR2
183074  
183075 --TRANSACTION_ID
183076  , p_source_1            IN NUMBER
183077 --Item Concatenated Segments
183078  , p_source_2            IN VARCHAR2
183079 --Transaction Quantity
183080  , p_source_3            IN NUMBER
183081 --Transaction Unit of Measure Code
183082  , p_source_4            IN VARCHAR2
183083 --Inventory Transaction Type Description
183084  , p_source_5            IN VARCHAR2
183085 --Cost Management Default Account
183086  , p_source_11            IN NUMBER
183087 --DISTRIBUTION_IDENTIFIER
183088  , p_source_84            IN NUMBER
183089 --Distribution Type
183090  , p_source_85            IN VARCHAR2
183091  , p_source_85_meaning    IN VARCHAR2
183092 --Entered Currency Code
183093  , p_source_88            IN VARCHAR2
183094 --Entered Amount
183095  , p_source_91            IN NUMBER
183096 --Currency Conversion Date
183097  , p_source_92            IN DATE
183098 --Currency Conversion Rate
183099  , p_source_93            IN NUMBER
183100 --Currency Conversion Type
183101  , p_source_94            IN VARCHAR2
183102 --Accounted Amount
183103  , p_source_95            IN NUMBER
183104 --Accounting Line Type
183105  , p_source_97            IN NUMBER
183106 )
183107 IS
183108 
183109 l_component_type              VARCHAR2(80);
183110 l_component_code              VARCHAR2(30);
183111 l_component_type_code         VARCHAR2(1);
183112 l_component_appl_id           INTEGER;
183113 l_amb_context_code            VARCHAR2(30);
183114 l_entity_code                 VARCHAR2(30);
183115 l_event_class_code            VARCHAR2(30);
183116 l_ae_header_id                NUMBER;
183117 l_event_type_code             VARCHAR2(30);
183118 l_line_definition_code        VARCHAR2(30);
183119 l_line_definition_owner_code  VARCHAR2(1);
183120 --
183121 -- adr variables
183122 l_segment                     VARCHAR2(30);
183123 l_ccid                        NUMBER;
183124 l_adr_transaction_coa_id      NUMBER;
183125 l_adr_accounting_coa_id       NUMBER;
183126 l_adr_flexfield_segment_code  VARCHAR2(30);
183127 l_adr_flex_value_set_id       NUMBER;
183128 l_adr_value_type_code         VARCHAR2(30);
183129 l_adr_value_combination_id    NUMBER;
183130 l_adr_value_segment_code      VARCHAR2(30);
183131 
183132 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
183133 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
183134 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
183135 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
183136 
183137 -- 4262811 Variables ------------------------------------------------------------------------------------------
183138 l_entered_amt_idx             NUMBER;
183139 l_accted_amt_idx              NUMBER;
183140 l_acc_rev_flag                VARCHAR2(1);
183141 l_accrual_line_num            NUMBER;
183142 l_tmp_amt                     NUMBER;
183143 l_acc_rev_natural_side_code   VARCHAR2(1);
183144 
183145 l_num_entries                 NUMBER;
183146 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
183147 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
183148 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
183149 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
183150 l_recog_line_1                NUMBER;
183151 l_recog_line_2                NUMBER;
183152 
183153 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
183154 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
183155 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
183156 
183157 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
183158 
183159 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
183160 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
183161 
183162 ---------------------------------------------------------------------------------------------------------------
183163 
183164 
183165 --
183166 -- bulk performance
183167 --
183168 l_balance_type_code           VARCHAR2(1);
183169 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
183170 l_log_module                  VARCHAR2(240);
183171 
183172 --
183173 -- Upgrade strategy
183174 --
183175 l_actual_upg_option           VARCHAR2(1);
183176 l_enc_upg_option           VARCHAR2(1);
183177 
183178 --
183179 BEGIN
183180 --
183181 IF g_log_enabled THEN
183182       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_337';
183183 END IF;
183184 --
183185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183186 
183187       trace
183188          (p_msg      => 'BEGIN of AcctLineType_337'
183189          ,p_level    => C_LEVEL_PROCEDURE
183190          ,p_module   => l_log_module);
183191 
183192 END IF;
183193 --
183194 l_component_type             := 'AMB_JLT';
183195 l_component_code             := 'OFFSET';
183196 l_component_type_code        := 'S';
183197 l_component_appl_id          :=  707;
183198 l_amb_context_code           := 'DEFAULT';
183199 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
183200 l_event_class_code           := 'USER_DEFINE';
183201 l_event_type_code            := 'UDIR_INTERORG_RCPT';
183202 l_line_definition_owner_code := 'S';
183203 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
183204 --
183205 l_balance_type_code          := 'A';
183206 l_segment                     := NULL;
183207 l_ccid                        := NULL;
183208 l_adr_transaction_coa_id      := NULL;
183209 l_adr_accounting_coa_id       := NULL;
183210 l_adr_flexfield_segment_code  := NULL;
183211 l_adr_flex_value_set_id       := NULL;
183212 l_adr_value_type_code         := NULL;
183213 l_adr_value_combination_id    := NULL;
183214 l_adr_value_segment_code      := NULL;
183215 
183216 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
183217 l_bflow_class_code           := '';    -- 4219869 Business Flow
183218 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
183219 l_budgetary_control_flag     := 'N';
183220 
183221 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
183222 l_bflow_applied_to_amt       := NULL; -- 5132302
183223 l_entered_amt_idx            := NULL;          -- 4262811
183224 l_accted_amt_idx             := NULL;          -- 4262811
183225 l_acc_rev_flag               := NULL;          -- 4262811
183226 l_accrual_line_num           := NULL;          -- 4262811
183227 l_tmp_amt                    := NULL;          -- 4262811
183228 --
183229  
183230 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
183231     l_balance_type_code <> 'B' THEN
183232 IF NVL(p_source_97,9E125) =  2
183233  THEN 
183234 
183235    --
183236    XLA_AE_LINES_PKG.SetNewLine;
183237 
183238    p_balance_type_code          := l_balance_type_code;
183239    -- set the flag so later we will know whether the gain loss line needs to be created
183240    
183241    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
183242      p_actual_flag :='A';
183243    END IF;
183244 
183245    --
183246    -- bulk performance
183247    --
183248    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
183249                                       p_header_num   => 0); -- 4262811
183250    --
183251    -- set accounting line options
183252    --
183253    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
183254            p_natural_side_code          => 'D'
183255          , p_gain_or_loss_flag          => 'N'
183256          , p_gl_transfer_mode_code      => 'S'
183257          , p_acct_entry_type_code       => 'A'
183258          , p_switch_side_flag           => 'Y'
183259          , p_merge_duplicate_code       => 'N'
183260          );
183261    --
183262    l_acc_rev_natural_side_code := 'C';  -- 4262811
183263    -- 
183264    --
183265    -- set accounting line type info
183266    --
183267    xla_ae_lines_pkg.SetAcctLineType
183268       (p_component_type             => l_component_type
183269       ,p_event_type_code            => l_event_type_code
183270       ,p_line_definition_owner_code => l_line_definition_owner_code
183271       ,p_line_definition_code       => l_line_definition_code
183272       ,p_accounting_line_code       => l_component_code
183273       ,p_accounting_line_type_code  => l_component_type_code
183274       ,p_accounting_line_appl_id    => l_component_appl_id
183275       ,p_amb_context_code           => l_amb_context_code
183276       ,p_entity_code                => l_entity_code
183277       ,p_event_class_code           => l_event_class_code);
183278    --
183279    -- set accounting class
183280    --
183281    xla_ae_lines_pkg.SetAcctClass(
183282            p_accounting_class_code  => 'OFFSET'
183283          , p_ae_header_id           => l_ae_header_id
183284          );
183285 
183286    --
183287    -- set rounding class
183288    --
183289    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
183290                       'OFFSET';
183291 
183292    --
183293    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
183294    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
183295    --
183296    -- bulk performance
183297    --
183298    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
183299 
183300    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
183301       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
183302 
183303    -- 4955764
183304    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
183305       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
183306 
183307    -- 4458381 Public Sector Enh
183308    
183309    --
183310    -- set accounting attributes for the line type
183311    --
183312    l_entered_amt_idx := 3;
183313    l_accted_amt_idx  := 8;
183314    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
183315    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
183316    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
183317    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
183318    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
183319    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
183320    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
183321    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
183322    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
183323    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
183324    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
183325    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
183326    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
183327    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
183328    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
183329    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
183330    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
183331 
183332    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
183333    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
183334 
183335    ---------------------------------------------------------------------------------------------------------------
183336    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
183337    ---------------------------------------------------------------------------------------------------------------
183338    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
183339 
183340    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
183341    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
183342 
183343    IF xla_accounting_cache_pkg.GetValueChar
183344          (p_source_code         => 'LEDGER_CATEGORY_CODE'
183345          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
183346    AND l_bflow_method_code = 'PRIOR_ENTRY'
183347 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
183348    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
183349          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
183350        )
183351    THEN
183352          xla_ae_lines_pkg.BflowUpgEntry
183353            (p_business_method_code    => l_bflow_method_code
183354            ,p_business_class_code     => l_bflow_class_code
183355            ,p_balance_type            => l_balance_type_code);
183356    ELSE
183357       NULL;
183358 -- No business flow processing for business flow method of NONE.
183359    END IF;
183360 
183361    --
183362    -- call analytical criteria
183363    --
183364    
183365    --
183366    -- call description
183367    --
183368    
183369 xla_ae_lines_pkg.SetLineDescription(
183370    p_ae_header_id => l_ae_header_id
183371   ,p_description  => Description_1 (
183372      p_application_id         => p_application_id
183373    , p_ae_header_id           => l_ae_header_id 
183374 , p_source_1 => p_source_1
183375 , p_source_2 => p_source_2
183376 , p_source_3 => p_source_3
183377 , p_source_4 => p_source_4
183378 , p_source_5 => p_source_5
183379    )
183380 );
183381 
183382 
183383    --
183384    -- call ADRs
183385    -- Bug 4922099
183386    --
183387    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
183388         (NVL(l_actual_upg_option, 'N') = 'O') OR
183389         (NVL(l_enc_upg_option, 'N') = 'O')
183390       )
183391    THEN
183392    NULL;
183393    --
183394    --
183395    
183396   l_ccid := AcctDerRule_6(
183397            p_application_id           => p_application_id
183398          , p_ae_header_id             => l_ae_header_id 
183399 , p_source_11 => p_source_11
183400          , x_transaction_coa_id       => l_adr_transaction_coa_id
183401          , x_accounting_coa_id        => l_adr_accounting_coa_id
183402          , x_value_type_code          => l_adr_value_type_code
183403          , p_side                     => 'NA'
183404    );
183405 
183406    xla_ae_lines_pkg.set_ccid(
183407     p_code_combination_id          => l_ccid
183408   , p_value_type_code              => l_adr_value_type_code
183409   , p_transaction_coa_id           => l_adr_transaction_coa_id
183410   , p_accounting_coa_id            => l_adr_accounting_coa_id
183411   , p_adr_code                     => 'CST_DEFAULT'
183412   , p_adr_type_code                => 'S'
183413   , p_component_type               => l_component_type
183414   , p_component_code               => l_component_code
183415   , p_component_type_code          => l_component_type_code
183416   , p_component_appl_id            => l_component_appl_id
183417   , p_amb_context_code             => l_amb_context_code
183418   , p_side                         => 'NA'
183419   );
183420 
183421 
183422    --
183423    --
183424    END IF;
183425    --
183426    -- Bug 4922099
183427    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
183428           (NVL(l_enc_upg_option, 'N') = 'O')
183429         ) AND
183430         (l_bflow_method_code = 'PRIOR_ENTRY')
183431       )
183432    THEN
183433       IF
183434       --
183435       1 = 2
183436       --
183437       THEN
183438       xla_accounting_err_pkg.build_message
183439                                     (p_appli_s_name            => 'XLA'
183440                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
183441                                     ,p_token_1                 => 'LINE_NUMBER'
183442                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
183443                                     ,p_token_2                 => 'LINE_TYPE_NAME'
183444                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
183445                                                                              l_component_type
183446                                                                             ,l_component_code
183447                                                                             ,l_component_type_code
183448                                                                             ,l_component_appl_id
183449                                                                             ,l_amb_context_code
183450                                                                             ,l_entity_code
183451                                                                             ,l_event_class_code
183452                                                                            )
183453                                     ,p_token_3                 => 'OWNER'
183454                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
183455                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
183456                                                                           ,p_lookup_code    => l_component_type_code
183457                                                                          )
183458                                     ,p_token_4                 => 'PRODUCT_NAME'
183459                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
183460                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
183461                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
183462                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
183463                                     ,p_ae_header_id            =>  NULL
183464                                        );
183465 
183466         IF (C_LEVEL_ERROR>= g_log_level) THEN
183467                  trace
183468                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
183469                       ,p_level    => C_LEVEL_ERROR
183470                       ,p_module   => l_log_module);
183471         END IF;
183472       END IF;
183473    END IF;
183474    --
183475    --
183476    ------------------------------------------------------------------------------------------------
183477    -- 4219869 Business Flow
183478    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
183479    -- Prior Entry.  Currently, the following code is always generated.
183480    ------------------------------------------------------------------------------------------------
183481    XLA_AE_LINES_PKG.ValidateCurrentLine;
183482 
183483    ------------------------------------------------------------------------------------
183484    -- 4219869 Business Flow
183485    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
183486    ------------------------------------------------------------------------------------
183487    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
183488 
183489    ----------------------------------------------------------------------------------
183490    -- 4219869 Business Flow
183491    -- Update journal entry status -- Need to generate this within IF <condition>
183492    ----------------------------------------------------------------------------------
183493    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
183494          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
183495          ,p_balance_type_code => l_balance_type_code
183496          );
183497 
183498    -------------------------------------------------------------------------------------------
183499    -- 4262811 - Generate the Accrual Reversal lines
183500    -------------------------------------------------------------------------------------------
183501    BEGIN
183502       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
183503                               (g_array_event(p_event_id).array_value_num('header_index'));
183504       IF l_acc_rev_flag IS NULL THEN
183505          l_acc_rev_flag := 'N';
183506       END IF;
183507    EXCEPTION
183508       WHEN OTHERS THEN
183509          l_acc_rev_flag := 'N';
183510    END;
183511    --
183512    IF (l_acc_rev_flag = 'Y') THEN
183513 
183514        -- 4645092  ------------------------------------------------------------------------------
183515        -- To allow MPA report to determine if it should generate report process
183516        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
183517        ------------------------------------------------------------------------------------------
183518 
183519        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
183520        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
183521    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
183522    -- call ADRs
183523    -- Bug 4922099
183524    --
183525    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
183526         (NVL(l_actual_upg_option, 'N') = 'O') OR
183527         (NVL(l_enc_upg_option, 'N') = 'O')
183528       )
183529    THEN
183530    NULL;
183531    --
183532    --
183533    
183534   l_ccid := AcctDerRule_6(
183535            p_application_id           => p_application_id
183536          , p_ae_header_id             => l_ae_header_id 
183537 , p_source_11 => p_source_11
183538          , x_transaction_coa_id       => l_adr_transaction_coa_id
183539          , x_accounting_coa_id        => l_adr_accounting_coa_id
183540          , x_value_type_code          => l_adr_value_type_code
183541          , p_side                     => 'NA'
183542    );
183543 
183544    xla_ae_lines_pkg.set_ccid(
183545     p_code_combination_id          => l_ccid
183546   , p_value_type_code              => l_adr_value_type_code
183547   , p_transaction_coa_id           => l_adr_transaction_coa_id
183548   , p_accounting_coa_id            => l_adr_accounting_coa_id
183549   , p_adr_code                     => 'CST_DEFAULT'
183550   , p_adr_type_code                => 'S'
183551   , p_component_type               => l_component_type
183552   , p_component_code               => l_component_code
183553   , p_component_type_code          => l_component_type_code
183554   , p_component_appl_id            => l_component_appl_id
183555   , p_amb_context_code             => l_amb_context_code
183556   , p_side                         => 'NA'
183557   );
183558 
183559 
183560    --
183561    --
183562    END IF;
183563 
183564        --
183565        -- Update the line information that should be overwritten
183566        --
183567        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
183568                                          p_header_num   => 1);
183569        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
183570 
183571        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
183572 
183573        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
183574           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
183575        END IF;
183576 
183577       --
183578       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
183579       --
183580       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
183581           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
183582       ELSE
183583           ---------------------------------------------------------------------------------------------------
183584           -- 4262811a Switch Sign
183585           ---------------------------------------------------------------------------------------------------
183586           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
183587           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
183588                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
183589           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
183590                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
183591           -- 5132302
183592           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
183593                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
183594 
183595       END IF;
183596 
183597       -- 4955764
183598       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
183599       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
183600 
183601 
183602       XLA_AE_LINES_PKG.ValidateCurrentLine;
183603       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
183604 
183605       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
183606                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
183607                ,p_balance_type_code => l_balance_type_code);
183608 
183609    END IF;
183610 
183611    -----------------------------------------------------------------------------------------
183612    -- 4262811 Multiperiod Accounting
183613    -----------------------------------------------------------------------------------------
183614      -- No MPA option is assigned.
183615 
183616 
183617 END IF;
183618 END IF;
183619 --
183620 
183621 --
183622 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183623    trace
183624       (p_msg      => 'END of AcctLineType_337'
183625       ,p_level    => C_LEVEL_PROCEDURE
183626       ,p_module   => l_log_module);
183627 END IF;
183628 --
183629 EXCEPTION
183630   WHEN xla_exceptions_pkg.application_exception THEN
183631       RAISE;
183632   WHEN OTHERS THEN
183633        xla_exceptions_pkg.raise_message
183634            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_337');
183635 END AcctLineType_337;
183636 --
183637 
183638 ---------------------------------------
183639 --
183640 -- PRIVATE FUNCTION
183641 --         AcctLineType_338
183642 --
183643 ---------------------------------------
183644 PROCEDURE AcctLineType_338 (
183645   p_application_id        IN NUMBER
183646  ,p_event_id              IN NUMBER
183647  ,p_calculate_acctd_flag  IN VARCHAR2
183648  ,p_calculate_g_l_flag    IN VARCHAR2
183649  ,p_actual_flag           IN OUT VARCHAR2
183650  ,p_balance_type_code     OUT VARCHAR2
183651  ,p_gain_or_loss_ref      OUT VARCHAR2
183652  
183653 --Cost Management Default Account
183654  , p_source_11            IN NUMBER
183655 --DISTRIBUTION_IDENTIFIER
183656  , p_source_84            IN NUMBER
183657 --Distribution Type
183658  , p_source_85            IN VARCHAR2
183659  , p_source_85_meaning    IN VARCHAR2
183660 --Entered Currency Code
183661  , p_source_88            IN VARCHAR2
183662 --Entered Amount
183663  , p_source_91            IN NUMBER
183664 --Currency Conversion Date
183665  , p_source_92            IN DATE
183666 --Currency Conversion Rate
183667  , p_source_93            IN NUMBER
183668 --Currency Conversion Type
183669  , p_source_94            IN VARCHAR2
183670 --Accounted Amount
183671  , p_source_95            IN NUMBER
183672 --Accounting Line Type
183673  , p_source_97            IN NUMBER
183674 )
183675 IS
183676 
183677 l_component_type              VARCHAR2(80);
183678 l_component_code              VARCHAR2(30);
183679 l_component_type_code         VARCHAR2(1);
183680 l_component_appl_id           INTEGER;
183681 l_amb_context_code            VARCHAR2(30);
183682 l_entity_code                 VARCHAR2(30);
183683 l_event_class_code            VARCHAR2(30);
183684 l_ae_header_id                NUMBER;
183685 l_event_type_code             VARCHAR2(30);
183686 l_line_definition_code        VARCHAR2(30);
183687 l_line_definition_owner_code  VARCHAR2(1);
183688 --
183689 -- adr variables
183690 l_segment                     VARCHAR2(30);
183691 l_ccid                        NUMBER;
183692 l_adr_transaction_coa_id      NUMBER;
183693 l_adr_accounting_coa_id       NUMBER;
183694 l_adr_flexfield_segment_code  VARCHAR2(30);
183695 l_adr_flex_value_set_id       NUMBER;
183696 l_adr_value_type_code         VARCHAR2(30);
183697 l_adr_value_combination_id    NUMBER;
183698 l_adr_value_segment_code      VARCHAR2(30);
183699 
183700 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
183701 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
183702 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
183703 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
183704 
183705 -- 4262811 Variables ------------------------------------------------------------------------------------------
183706 l_entered_amt_idx             NUMBER;
183707 l_accted_amt_idx              NUMBER;
183708 l_acc_rev_flag                VARCHAR2(1);
183709 l_accrual_line_num            NUMBER;
183710 l_tmp_amt                     NUMBER;
183711 l_acc_rev_natural_side_code   VARCHAR2(1);
183712 
183713 l_num_entries                 NUMBER;
183714 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
183715 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
183716 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
183717 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
183718 l_recog_line_1                NUMBER;
183719 l_recog_line_2                NUMBER;
183720 
183721 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
183722 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
183723 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
183724 
183725 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
183726 
183727 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
183728 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
183729 
183730 ---------------------------------------------------------------------------------------------------------------
183731 
183732 
183733 --
183734 -- bulk performance
183735 --
183736 l_balance_type_code           VARCHAR2(1);
183737 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
183738 l_log_module                  VARCHAR2(240);
183739 
183740 --
183741 -- Upgrade strategy
183742 --
183743 l_actual_upg_option           VARCHAR2(1);
183744 l_enc_upg_option           VARCHAR2(1);
183745 
183746 --
183747 BEGIN
183748 --
183749 IF g_log_enabled THEN
183750       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_338';
183751 END IF;
183752 --
183753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183754 
183755       trace
183756          (p_msg      => 'BEGIN of AcctLineType_338'
183757          ,p_level    => C_LEVEL_PROCEDURE
183758          ,p_module   => l_log_module);
183759 
183760 END IF;
183761 --
183762 l_component_type             := 'AMB_JLT';
183763 l_component_code             := 'OFFSET';
183764 l_component_type_code        := 'S';
183765 l_component_appl_id          :=  707;
183766 l_amb_context_code           := 'DEFAULT';
183767 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
183768 l_event_class_code           := 'USER_DEFINE';
183769 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
183770 l_line_definition_owner_code := 'S';
183771 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
183772 --
183773 l_balance_type_code          := 'A';
183774 l_segment                     := NULL;
183775 l_ccid                        := NULL;
183776 l_adr_transaction_coa_id      := NULL;
183777 l_adr_accounting_coa_id       := NULL;
183778 l_adr_flexfield_segment_code  := NULL;
183779 l_adr_flex_value_set_id       := NULL;
183780 l_adr_value_type_code         := NULL;
183781 l_adr_value_combination_id    := NULL;
183782 l_adr_value_segment_code      := NULL;
183783 
183784 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
183785 l_bflow_class_code           := '';    -- 4219869 Business Flow
183786 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
183787 l_budgetary_control_flag     := 'N';
183788 
183789 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
183790 l_bflow_applied_to_amt       := NULL; -- 5132302
183791 l_entered_amt_idx            := NULL;          -- 4262811
183792 l_accted_amt_idx             := NULL;          -- 4262811
183793 l_acc_rev_flag               := NULL;          -- 4262811
183794 l_accrual_line_num           := NULL;          -- 4262811
183795 l_tmp_amt                    := NULL;          -- 4262811
183796 --
183797  
183798 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
183799     l_balance_type_code <> 'B' THEN
183800 IF NVL(p_source_97,9E125) =  2
183801  THEN 
183802 
183803    --
183804    XLA_AE_LINES_PKG.SetNewLine;
183805 
183806    p_balance_type_code          := l_balance_type_code;
183807    -- set the flag so later we will know whether the gain loss line needs to be created
183808    
183809    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
183810      p_actual_flag :='A';
183811    END IF;
183812 
183813    --
183814    -- bulk performance
183815    --
183816    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
183817                                       p_header_num   => 0); -- 4262811
183818    --
183819    -- set accounting line options
183820    --
183821    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
183822            p_natural_side_code          => 'D'
183823          , p_gain_or_loss_flag          => 'N'
183824          , p_gl_transfer_mode_code      => 'S'
183825          , p_acct_entry_type_code       => 'A'
183826          , p_switch_side_flag           => 'Y'
183827          , p_merge_duplicate_code       => 'N'
183828          );
183829    --
183830    l_acc_rev_natural_side_code := 'C';  -- 4262811
183831    -- 
183832    --
183833    -- set accounting line type info
183834    --
183835    xla_ae_lines_pkg.SetAcctLineType
183836       (p_component_type             => l_component_type
183837       ,p_event_type_code            => l_event_type_code
183838       ,p_line_definition_owner_code => l_line_definition_owner_code
183839       ,p_line_definition_code       => l_line_definition_code
183840       ,p_accounting_line_code       => l_component_code
183841       ,p_accounting_line_type_code  => l_component_type_code
183842       ,p_accounting_line_appl_id    => l_component_appl_id
183843       ,p_amb_context_code           => l_amb_context_code
183844       ,p_entity_code                => l_entity_code
183845       ,p_event_class_code           => l_event_class_code);
183846    --
183847    -- set accounting class
183848    --
183849    xla_ae_lines_pkg.SetAcctClass(
183850            p_accounting_class_code  => 'OFFSET'
183851          , p_ae_header_id           => l_ae_header_id
183852          );
183853 
183854    --
183855    -- set rounding class
183856    --
183857    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
183858                       'OFFSET';
183859 
183860    --
183861    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
183862    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
183863    --
183864    -- bulk performance
183865    --
183866    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
183867 
183868    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
183869       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
183870 
183871    -- 4955764
183872    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
183873       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
183874 
183875    -- 4458381 Public Sector Enh
183876    
183877    --
183878    -- set accounting attributes for the line type
183879    --
183880    l_entered_amt_idx := 3;
183881    l_accted_amt_idx  := 8;
183882    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
183883    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
183884    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
183885    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
183886    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
183887    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
183888    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
183889    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
183890    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
183891    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
183892    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
183893    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
183894    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
183895    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
183896    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
183897    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
183898    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
183899 
183900    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
183901    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
183902 
183903    ---------------------------------------------------------------------------------------------------------------
183904    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
183905    ---------------------------------------------------------------------------------------------------------------
183906    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
183907 
183908    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
183909    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
183910 
183911    IF xla_accounting_cache_pkg.GetValueChar
183912          (p_source_code         => 'LEDGER_CATEGORY_CODE'
183913          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
183914    AND l_bflow_method_code = 'PRIOR_ENTRY'
183915 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
183916    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
183917          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
183918        )
183919    THEN
183920          xla_ae_lines_pkg.BflowUpgEntry
183921            (p_business_method_code    => l_bflow_method_code
183922            ,p_business_class_code     => l_bflow_class_code
183923            ,p_balance_type            => l_balance_type_code);
183924    ELSE
183925       NULL;
183926 -- No business flow processing for business flow method of NONE.
183927    END IF;
183928 
183929    --
183930    -- call analytical criteria
183931    --
183932    
183933    --
183934    -- call description
183935    --
183936    -- No description or it is inherited.
183937    --
183938    -- call ADRs
183939    -- Bug 4922099
183940    --
183941    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
183942         (NVL(l_actual_upg_option, 'N') = 'O') OR
183943         (NVL(l_enc_upg_option, 'N') = 'O')
183944       )
183945    THEN
183946    NULL;
183947    --
183948    --
183949    
183950   l_ccid := AcctDerRule_6(
183951            p_application_id           => p_application_id
183952          , p_ae_header_id             => l_ae_header_id 
183953 , p_source_11 => p_source_11
183954          , x_transaction_coa_id       => l_adr_transaction_coa_id
183955          , x_accounting_coa_id        => l_adr_accounting_coa_id
183956          , x_value_type_code          => l_adr_value_type_code
183957          , p_side                     => 'NA'
183958    );
183959 
183960    xla_ae_lines_pkg.set_ccid(
183961     p_code_combination_id          => l_ccid
183962   , p_value_type_code              => l_adr_value_type_code
183963   , p_transaction_coa_id           => l_adr_transaction_coa_id
183964   , p_accounting_coa_id            => l_adr_accounting_coa_id
183965   , p_adr_code                     => 'CST_DEFAULT'
183966   , p_adr_type_code                => 'S'
183967   , p_component_type               => l_component_type
183968   , p_component_code               => l_component_code
183969   , p_component_type_code          => l_component_type_code
183970   , p_component_appl_id            => l_component_appl_id
183971   , p_amb_context_code             => l_amb_context_code
183972   , p_side                         => 'NA'
183973   );
183974 
183975 
183976    --
183977    --
183978    END IF;
183979    --
183980    -- Bug 4922099
183981    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
183982           (NVL(l_enc_upg_option, 'N') = 'O')
183983         ) AND
183984         (l_bflow_method_code = 'PRIOR_ENTRY')
183985       )
183986    THEN
183987       IF
183988       --
183989       1 = 2
183990       --
183991       THEN
183992       xla_accounting_err_pkg.build_message
183993                                     (p_appli_s_name            => 'XLA'
183994                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
183995                                     ,p_token_1                 => 'LINE_NUMBER'
183996                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
183997                                     ,p_token_2                 => 'LINE_TYPE_NAME'
183998                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
183999                                                                              l_component_type
184000                                                                             ,l_component_code
184001                                                                             ,l_component_type_code
184002                                                                             ,l_component_appl_id
184003                                                                             ,l_amb_context_code
184004                                                                             ,l_entity_code
184005                                                                             ,l_event_class_code
184006                                                                            )
184007                                     ,p_token_3                 => 'OWNER'
184008                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
184009                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
184010                                                                           ,p_lookup_code    => l_component_type_code
184011                                                                          )
184012                                     ,p_token_4                 => 'PRODUCT_NAME'
184013                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
184014                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
184015                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
184016                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
184017                                     ,p_ae_header_id            =>  NULL
184018                                        );
184019 
184020         IF (C_LEVEL_ERROR>= g_log_level) THEN
184021                  trace
184022                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
184023                       ,p_level    => C_LEVEL_ERROR
184024                       ,p_module   => l_log_module);
184025         END IF;
184026       END IF;
184027    END IF;
184028    --
184029    --
184030    ------------------------------------------------------------------------------------------------
184031    -- 4219869 Business Flow
184032    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
184033    -- Prior Entry.  Currently, the following code is always generated.
184034    ------------------------------------------------------------------------------------------------
184035    XLA_AE_LINES_PKG.ValidateCurrentLine;
184036 
184037    ------------------------------------------------------------------------------------
184038    -- 4219869 Business Flow
184039    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
184040    ------------------------------------------------------------------------------------
184041    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
184042 
184043    ----------------------------------------------------------------------------------
184044    -- 4219869 Business Flow
184045    -- Update journal entry status -- Need to generate this within IF <condition>
184046    ----------------------------------------------------------------------------------
184047    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
184048          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
184049          ,p_balance_type_code => l_balance_type_code
184050          );
184051 
184052    -------------------------------------------------------------------------------------------
184053    -- 4262811 - Generate the Accrual Reversal lines
184054    -------------------------------------------------------------------------------------------
184055    BEGIN
184056       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
184057                               (g_array_event(p_event_id).array_value_num('header_index'));
184058       IF l_acc_rev_flag IS NULL THEN
184059          l_acc_rev_flag := 'N';
184060       END IF;
184061    EXCEPTION
184062       WHEN OTHERS THEN
184063          l_acc_rev_flag := 'N';
184064    END;
184065    --
184066    IF (l_acc_rev_flag = 'Y') THEN
184067 
184068        -- 4645092  ------------------------------------------------------------------------------
184069        -- To allow MPA report to determine if it should generate report process
184070        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
184071        ------------------------------------------------------------------------------------------
184072 
184073        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
184074        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
184075    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
184076    -- call ADRs
184077    -- Bug 4922099
184078    --
184079    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
184080         (NVL(l_actual_upg_option, 'N') = 'O') OR
184081         (NVL(l_enc_upg_option, 'N') = 'O')
184082       )
184083    THEN
184084    NULL;
184085    --
184086    --
184087    
184088   l_ccid := AcctDerRule_6(
184089            p_application_id           => p_application_id
184090          , p_ae_header_id             => l_ae_header_id 
184091 , p_source_11 => p_source_11
184092          , x_transaction_coa_id       => l_adr_transaction_coa_id
184093          , x_accounting_coa_id        => l_adr_accounting_coa_id
184094          , x_value_type_code          => l_adr_value_type_code
184095          , p_side                     => 'NA'
184096    );
184097 
184098    xla_ae_lines_pkg.set_ccid(
184099     p_code_combination_id          => l_ccid
184100   , p_value_type_code              => l_adr_value_type_code
184101   , p_transaction_coa_id           => l_adr_transaction_coa_id
184102   , p_accounting_coa_id            => l_adr_accounting_coa_id
184103   , p_adr_code                     => 'CST_DEFAULT'
184104   , p_adr_type_code                => 'S'
184105   , p_component_type               => l_component_type
184106   , p_component_code               => l_component_code
184107   , p_component_type_code          => l_component_type_code
184108   , p_component_appl_id            => l_component_appl_id
184109   , p_amb_context_code             => l_amb_context_code
184110   , p_side                         => 'NA'
184111   );
184112 
184113 
184114    --
184115    --
184116    END IF;
184117 
184118        --
184119        -- Update the line information that should be overwritten
184120        --
184121        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
184122                                          p_header_num   => 1);
184123        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
184124 
184125        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
184126 
184127        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
184128           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
184129        END IF;
184130 
184131       --
184132       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
184133       --
184134       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
184135           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
184136       ELSE
184137           ---------------------------------------------------------------------------------------------------
184138           -- 4262811a Switch Sign
184139           ---------------------------------------------------------------------------------------------------
184140           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
184141           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
184142                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
184143           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
184144                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
184145           -- 5132302
184146           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
184147                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
184148 
184149       END IF;
184150 
184151       -- 4955764
184152       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
184153       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
184154 
184155 
184156       XLA_AE_LINES_PKG.ValidateCurrentLine;
184157       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
184158 
184159       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
184160                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
184161                ,p_balance_type_code => l_balance_type_code);
184162 
184163    END IF;
184164 
184165    -----------------------------------------------------------------------------------------
184166    -- 4262811 Multiperiod Accounting
184167    -----------------------------------------------------------------------------------------
184168      -- No MPA option is assigned.
184169 
184170 
184171 END IF;
184172 END IF;
184173 --
184174 
184175 --
184176 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184177    trace
184178       (p_msg      => 'END of AcctLineType_338'
184179       ,p_level    => C_LEVEL_PROCEDURE
184180       ,p_module   => l_log_module);
184181 END IF;
184182 --
184183 EXCEPTION
184184   WHEN xla_exceptions_pkg.application_exception THEN
184185       RAISE;
184186   WHEN OTHERS THEN
184187        xla_exceptions_pkg.raise_message
184188            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_338');
184189 END AcctLineType_338;
184190 --
184191 
184192 ---------------------------------------
184193 --
184194 -- PRIVATE FUNCTION
184195 --         AcctLineType_339
184196 --
184197 ---------------------------------------
184198 PROCEDURE AcctLineType_339 (
184199   p_application_id        IN NUMBER
184200  ,p_event_id              IN NUMBER
184201  ,p_calculate_acctd_flag  IN VARCHAR2
184202  ,p_calculate_g_l_flag    IN VARCHAR2
184203  ,p_actual_flag           IN OUT VARCHAR2
184204  ,p_balance_type_code     OUT VARCHAR2
184205  ,p_gain_or_loss_ref      OUT VARCHAR2
184206  
184207 --Cost Management Default Account
184208  , p_source_11            IN NUMBER
184209 --DISTRIBUTION_IDENTIFIER
184210  , p_source_84            IN NUMBER
184211 --Distribution Type
184212  , p_source_85            IN VARCHAR2
184213  , p_source_85_meaning    IN VARCHAR2
184214 --Entered Currency Code
184215  , p_source_88            IN VARCHAR2
184216 --Entered Amount
184217  , p_source_91            IN NUMBER
184218 --Currency Conversion Date
184219  , p_source_92            IN DATE
184220 --Currency Conversion Rate
184221  , p_source_93            IN NUMBER
184222 --Accounted Amount
184223  , p_source_95            IN NUMBER
184224 --Accounting Line Type
184225  , p_source_97            IN NUMBER
184226 )
184227 IS
184228 
184229 l_component_type              VARCHAR2(80);
184230 l_component_code              VARCHAR2(30);
184231 l_component_type_code         VARCHAR2(1);
184232 l_component_appl_id           INTEGER;
184233 l_amb_context_code            VARCHAR2(30);
184234 l_entity_code                 VARCHAR2(30);
184235 l_event_class_code            VARCHAR2(30);
184236 l_ae_header_id                NUMBER;
184237 l_event_type_code             VARCHAR2(30);
184238 l_line_definition_code        VARCHAR2(30);
184239 l_line_definition_owner_code  VARCHAR2(1);
184240 --
184241 -- adr variables
184242 l_segment                     VARCHAR2(30);
184243 l_ccid                        NUMBER;
184244 l_adr_transaction_coa_id      NUMBER;
184245 l_adr_accounting_coa_id       NUMBER;
184246 l_adr_flexfield_segment_code  VARCHAR2(30);
184247 l_adr_flex_value_set_id       NUMBER;
184248 l_adr_value_type_code         VARCHAR2(30);
184249 l_adr_value_combination_id    NUMBER;
184250 l_adr_value_segment_code      VARCHAR2(30);
184251 
184252 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
184253 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
184254 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
184255 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
184256 
184257 -- 4262811 Variables ------------------------------------------------------------------------------------------
184258 l_entered_amt_idx             NUMBER;
184259 l_accted_amt_idx              NUMBER;
184260 l_acc_rev_flag                VARCHAR2(1);
184261 l_accrual_line_num            NUMBER;
184262 l_tmp_amt                     NUMBER;
184263 l_acc_rev_natural_side_code   VARCHAR2(1);
184264 
184265 l_num_entries                 NUMBER;
184266 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
184267 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
184268 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
184269 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
184270 l_recog_line_1                NUMBER;
184271 l_recog_line_2                NUMBER;
184272 
184273 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
184274 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
184275 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
184276 
184277 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
184278 
184279 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
184280 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
184281 
184282 ---------------------------------------------------------------------------------------------------------------
184283 
184284 
184285 --
184286 -- bulk performance
184287 --
184288 l_balance_type_code           VARCHAR2(1);
184289 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
184290 l_log_module                  VARCHAR2(240);
184291 
184292 --
184293 -- Upgrade strategy
184294 --
184295 l_actual_upg_option           VARCHAR2(1);
184296 l_enc_upg_option           VARCHAR2(1);
184297 
184298 --
184299 BEGIN
184300 --
184301 IF g_log_enabled THEN
184302       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_339';
184303 END IF;
184304 --
184305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184306 
184307       trace
184308          (p_msg      => 'BEGIN of AcctLineType_339'
184309          ,p_level    => C_LEVEL_PROCEDURE
184310          ,p_module   => l_log_module);
184311 
184312 END IF;
184313 --
184314 l_component_type             := 'AMB_JLT';
184315 l_component_code             := 'OFFSET';
184316 l_component_type_code        := 'S';
184317 l_component_appl_id          :=  707;
184318 l_amb_context_code           := 'DEFAULT';
184319 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
184320 l_event_class_code           := 'OSP';
184321 l_event_type_code            := 'IPV_TRANSFER_WO';
184322 l_line_definition_owner_code := 'S';
184323 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
184324 --
184325 l_balance_type_code          := 'A';
184326 l_segment                     := NULL;
184327 l_ccid                        := NULL;
184328 l_adr_transaction_coa_id      := NULL;
184329 l_adr_accounting_coa_id       := NULL;
184330 l_adr_flexfield_segment_code  := NULL;
184331 l_adr_flex_value_set_id       := NULL;
184332 l_adr_value_type_code         := NULL;
184333 l_adr_value_combination_id    := NULL;
184334 l_adr_value_segment_code      := NULL;
184335 
184336 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
184337 l_bflow_class_code           := '';    -- 4219869 Business Flow
184338 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
184339 l_budgetary_control_flag     := 'N';
184340 
184341 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
184342 l_bflow_applied_to_amt       := NULL; -- 5132302
184343 l_entered_amt_idx            := NULL;          -- 4262811
184344 l_accted_amt_idx             := NULL;          -- 4262811
184345 l_acc_rev_flag               := NULL;          -- 4262811
184346 l_accrual_line_num           := NULL;          -- 4262811
184347 l_tmp_amt                    := NULL;          -- 4262811
184348 --
184349  
184350 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
184351     l_balance_type_code <> 'B' THEN
184352 IF NVL(p_source_97,9E125) =  2
184353  THEN 
184354 
184355    --
184356    XLA_AE_LINES_PKG.SetNewLine;
184357 
184358    p_balance_type_code          := l_balance_type_code;
184359    -- set the flag so later we will know whether the gain loss line needs to be created
184360    
184361    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
184362      p_actual_flag :='A';
184363    END IF;
184364 
184365    --
184366    -- bulk performance
184367    --
184368    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
184369                                       p_header_num   => 0); -- 4262811
184370    --
184371    -- set accounting line options
184372    --
184373    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
184374            p_natural_side_code          => 'D'
184375          , p_gain_or_loss_flag          => 'N'
184376          , p_gl_transfer_mode_code      => 'S'
184377          , p_acct_entry_type_code       => 'A'
184378          , p_switch_side_flag           => 'Y'
184379          , p_merge_duplicate_code       => 'N'
184380          );
184381    --
184382    l_acc_rev_natural_side_code := 'C';  -- 4262811
184383    -- 
184384    --
184385    -- set accounting line type info
184386    --
184387    xla_ae_lines_pkg.SetAcctLineType
184388       (p_component_type             => l_component_type
184389       ,p_event_type_code            => l_event_type_code
184390       ,p_line_definition_owner_code => l_line_definition_owner_code
184391       ,p_line_definition_code       => l_line_definition_code
184392       ,p_accounting_line_code       => l_component_code
184393       ,p_accounting_line_type_code  => l_component_type_code
184394       ,p_accounting_line_appl_id    => l_component_appl_id
184395       ,p_amb_context_code           => l_amb_context_code
184396       ,p_entity_code                => l_entity_code
184397       ,p_event_class_code           => l_event_class_code);
184398    --
184399    -- set accounting class
184400    --
184401    xla_ae_lines_pkg.SetAcctClass(
184402            p_accounting_class_code  => 'OFFSET'
184403          , p_ae_header_id           => l_ae_header_id
184404          );
184405 
184406    --
184407    -- set rounding class
184408    --
184409    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
184410                       'OFFSET';
184411 
184412    --
184413    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
184414    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
184415    --
184416    -- bulk performance
184417    --
184418    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
184419 
184420    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
184421       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
184422 
184423    -- 4955764
184424    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
184425       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
184426 
184427    -- 4458381 Public Sector Enh
184428    
184429    --
184430    -- set accounting attributes for the line type
184431    --
184432    l_entered_amt_idx := 3;
184433    l_accted_amt_idx  := 8;
184434    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
184435    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
184436    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
184437    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
184438    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
184439    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
184440    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
184441    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
184442    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
184443    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
184444    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
184445    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
184446    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
184447    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
184448    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
184449    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
184450    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
184451 
184452    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
184453    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
184454 
184455    ---------------------------------------------------------------------------------------------------------------
184456    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
184457    ---------------------------------------------------------------------------------------------------------------
184458    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
184459 
184460    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
184461    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
184462 
184463    IF xla_accounting_cache_pkg.GetValueChar
184464          (p_source_code         => 'LEDGER_CATEGORY_CODE'
184465          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
184466    AND l_bflow_method_code = 'PRIOR_ENTRY'
184467 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
184468    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
184469          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
184470        )
184471    THEN
184472          xla_ae_lines_pkg.BflowUpgEntry
184473            (p_business_method_code    => l_bflow_method_code
184474            ,p_business_class_code     => l_bflow_class_code
184475            ,p_balance_type            => l_balance_type_code);
184476    ELSE
184477       NULL;
184478 -- No business flow processing for business flow method of NONE.
184479    END IF;
184480 
184481    --
184482    -- call analytical criteria
184483    --
184484    
184485    --
184486    -- call description
184487    --
184488    -- No description or it is inherited.
184489    --
184490    -- call ADRs
184491    -- Bug 4922099
184492    --
184493    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
184494         (NVL(l_actual_upg_option, 'N') = 'O') OR
184495         (NVL(l_enc_upg_option, 'N') = 'O')
184496       )
184497    THEN
184498    NULL;
184499    --
184500    --
184501    
184502   l_ccid := AcctDerRule_6(
184503            p_application_id           => p_application_id
184504          , p_ae_header_id             => l_ae_header_id 
184505 , p_source_11 => p_source_11
184506          , x_transaction_coa_id       => l_adr_transaction_coa_id
184507          , x_accounting_coa_id        => l_adr_accounting_coa_id
184508          , x_value_type_code          => l_adr_value_type_code
184509          , p_side                     => 'NA'
184510    );
184511 
184512    xla_ae_lines_pkg.set_ccid(
184513     p_code_combination_id          => l_ccid
184514   , p_value_type_code              => l_adr_value_type_code
184515   , p_transaction_coa_id           => l_adr_transaction_coa_id
184516   , p_accounting_coa_id            => l_adr_accounting_coa_id
184517   , p_adr_code                     => 'CST_DEFAULT'
184518   , p_adr_type_code                => 'S'
184519   , p_component_type               => l_component_type
184520   , p_component_code               => l_component_code
184521   , p_component_type_code          => l_component_type_code
184522   , p_component_appl_id            => l_component_appl_id
184523   , p_amb_context_code             => l_amb_context_code
184524   , p_side                         => 'NA'
184525   );
184526 
184527 
184528    --
184529    --
184530    END IF;
184531    --
184532    -- Bug 4922099
184533    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
184534           (NVL(l_enc_upg_option, 'N') = 'O')
184535         ) AND
184536         (l_bflow_method_code = 'PRIOR_ENTRY')
184537       )
184538    THEN
184539       IF
184540       --
184541       1 = 2
184542       --
184543       THEN
184544       xla_accounting_err_pkg.build_message
184545                                     (p_appli_s_name            => 'XLA'
184546                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
184547                                     ,p_token_1                 => 'LINE_NUMBER'
184548                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
184549                                     ,p_token_2                 => 'LINE_TYPE_NAME'
184550                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
184551                                                                              l_component_type
184552                                                                             ,l_component_code
184553                                                                             ,l_component_type_code
184554                                                                             ,l_component_appl_id
184555                                                                             ,l_amb_context_code
184556                                                                             ,l_entity_code
184557                                                                             ,l_event_class_code
184558                                                                            )
184559                                     ,p_token_3                 => 'OWNER'
184560                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
184561                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
184562                                                                           ,p_lookup_code    => l_component_type_code
184563                                                                          )
184564                                     ,p_token_4                 => 'PRODUCT_NAME'
184565                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
184566                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
184567                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
184568                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
184569                                     ,p_ae_header_id            =>  NULL
184570                                        );
184571 
184572         IF (C_LEVEL_ERROR>= g_log_level) THEN
184573                  trace
184574                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
184575                       ,p_level    => C_LEVEL_ERROR
184576                       ,p_module   => l_log_module);
184577         END IF;
184578       END IF;
184579    END IF;
184580    --
184581    --
184582    ------------------------------------------------------------------------------------------------
184583    -- 4219869 Business Flow
184584    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
184585    -- Prior Entry.  Currently, the following code is always generated.
184586    ------------------------------------------------------------------------------------------------
184587    XLA_AE_LINES_PKG.ValidateCurrentLine;
184588 
184589    ------------------------------------------------------------------------------------
184590    -- 4219869 Business Flow
184591    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
184592    ------------------------------------------------------------------------------------
184593    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
184594 
184595    ----------------------------------------------------------------------------------
184596    -- 4219869 Business Flow
184597    -- Update journal entry status -- Need to generate this within IF <condition>
184598    ----------------------------------------------------------------------------------
184599    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
184600          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
184601          ,p_balance_type_code => l_balance_type_code
184602          );
184603 
184604    -------------------------------------------------------------------------------------------
184605    -- 4262811 - Generate the Accrual Reversal lines
184606    -------------------------------------------------------------------------------------------
184607    BEGIN
184608       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
184609                               (g_array_event(p_event_id).array_value_num('header_index'));
184610       IF l_acc_rev_flag IS NULL THEN
184611          l_acc_rev_flag := 'N';
184612       END IF;
184613    EXCEPTION
184614       WHEN OTHERS THEN
184615          l_acc_rev_flag := 'N';
184616    END;
184617    --
184618    IF (l_acc_rev_flag = 'Y') THEN
184619 
184620        -- 4645092  ------------------------------------------------------------------------------
184621        -- To allow MPA report to determine if it should generate report process
184622        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
184623        ------------------------------------------------------------------------------------------
184624 
184625        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
184626        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
184627    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
184628    -- call ADRs
184629    -- Bug 4922099
184630    --
184631    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
184632         (NVL(l_actual_upg_option, 'N') = 'O') OR
184633         (NVL(l_enc_upg_option, 'N') = 'O')
184634       )
184635    THEN
184636    NULL;
184637    --
184638    --
184639    
184640   l_ccid := AcctDerRule_6(
184641            p_application_id           => p_application_id
184642          , p_ae_header_id             => l_ae_header_id 
184643 , p_source_11 => p_source_11
184644          , x_transaction_coa_id       => l_adr_transaction_coa_id
184645          , x_accounting_coa_id        => l_adr_accounting_coa_id
184646          , x_value_type_code          => l_adr_value_type_code
184647          , p_side                     => 'NA'
184648    );
184649 
184650    xla_ae_lines_pkg.set_ccid(
184651     p_code_combination_id          => l_ccid
184652   , p_value_type_code              => l_adr_value_type_code
184653   , p_transaction_coa_id           => l_adr_transaction_coa_id
184654   , p_accounting_coa_id            => l_adr_accounting_coa_id
184655   , p_adr_code                     => 'CST_DEFAULT'
184656   , p_adr_type_code                => 'S'
184657   , p_component_type               => l_component_type
184658   , p_component_code               => l_component_code
184659   , p_component_type_code          => l_component_type_code
184660   , p_component_appl_id            => l_component_appl_id
184661   , p_amb_context_code             => l_amb_context_code
184662   , p_side                         => 'NA'
184663   );
184664 
184665 
184666    --
184667    --
184668    END IF;
184669 
184670        --
184671        -- Update the line information that should be overwritten
184672        --
184673        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
184674                                          p_header_num   => 1);
184675        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
184676 
184677        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
184678 
184679        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
184680           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
184681        END IF;
184682 
184683       --
184684       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
184685       --
184686       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
184687           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
184688       ELSE
184689           ---------------------------------------------------------------------------------------------------
184690           -- 4262811a Switch Sign
184691           ---------------------------------------------------------------------------------------------------
184692           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
184693           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
184694                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
184695           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
184696                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
184697           -- 5132302
184698           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
184699                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
184700 
184701       END IF;
184702 
184703       -- 4955764
184704       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
184705       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
184706 
184707 
184708       XLA_AE_LINES_PKG.ValidateCurrentLine;
184709       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
184710 
184711       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
184712                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
184713                ,p_balance_type_code => l_balance_type_code);
184714 
184715    END IF;
184716 
184717    -----------------------------------------------------------------------------------------
184718    -- 4262811 Multiperiod Accounting
184719    -----------------------------------------------------------------------------------------
184720      -- No MPA option is assigned.
184721 
184722 
184723 END IF;
184724 END IF;
184725 --
184726 
184727 --
184728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184729    trace
184730       (p_msg      => 'END of AcctLineType_339'
184731       ,p_level    => C_LEVEL_PROCEDURE
184732       ,p_module   => l_log_module);
184733 END IF;
184734 --
184735 EXCEPTION
184736   WHEN xla_exceptions_pkg.application_exception THEN
184737       RAISE;
184738   WHEN OTHERS THEN
184739        xla_exceptions_pkg.raise_message
184740            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_339');
184741 END AcctLineType_339;
184742 --
184743 
184744 ---------------------------------------
184745 --
184746 -- PRIVATE FUNCTION
184747 --         AcctLineType_340
184748 --
184749 ---------------------------------------
184750 PROCEDURE AcctLineType_340 (
184751   p_application_id        IN NUMBER
184752  ,p_event_id              IN NUMBER
184753  ,p_calculate_acctd_flag  IN VARCHAR2
184754  ,p_calculate_g_l_flag    IN VARCHAR2
184755  ,p_actual_flag           IN OUT VARCHAR2
184756  ,p_balance_type_code     OUT VARCHAR2
184757  ,p_gain_or_loss_ref      OUT VARCHAR2
184758  
184759 --TRANSACTION_ID
184760  , p_source_1            IN NUMBER
184761 --Item Concatenated Segments
184762  , p_source_2            IN VARCHAR2
184763 --Transaction Quantity
184764  , p_source_3            IN NUMBER
184765 --Transaction Unit of Measure Code
184766  , p_source_4            IN VARCHAR2
184767 --Inventory Transaction Type Description
184768  , p_source_5            IN VARCHAR2
184769 --Product Line Accounting Category Expense Account
184770  , p_source_24            IN NUMBER
184771 --Applied to Application ID
184772  , p_source_79            IN NUMBER
184773 --Applied to Distribution Link Type
184774  , p_source_80            IN VARCHAR2
184775 --Applied to Entity Code
184776  , p_source_81            IN VARCHAR2
184777 --DISTRIBUTION_IDENTIFIER
184778  , p_source_84            IN NUMBER
184779 --Distribution Type
184780  , p_source_85            IN VARCHAR2
184781  , p_source_85_meaning    IN VARCHAR2
184782 --Encumbrance Reversal Amount Entered
184783  , p_source_87            IN NUMBER
184784 --Entered Currency Code
184785  , p_source_88            IN VARCHAR2
184786 --Transaction Encumbrance Reversal Amount
184787  , p_source_89            IN NUMBER
184788 --Entered Amount
184789  , p_source_91            IN NUMBER
184790 --Currency Conversion Date
184791  , p_source_92            IN DATE
184792 --Currency Conversion Rate
184793  , p_source_93            IN NUMBER
184794 --Currency Conversion Type
184795  , p_source_94            IN VARCHAR2
184796 --Accounted Amount
184797  , p_source_95            IN NUMBER
184798 --Accounting Line Type
184799  , p_source_97            IN NUMBER
184800 --Costing Encumbrance Upgrade Option
184801  , p_source_100            IN VARCHAR2
184802 --TXN_PO_DISTRIBUTION_ID
184803  , p_source_101            IN NUMBER
184804 --TXN_PO_HEADER_ID
184805  , p_source_102            IN NUMBER
184806 --Requisition Budget Account
184807  , p_source_103            IN NUMBER
184808 --Requisition Encumbrance Type Identifier
184809  , p_source_104            IN NUMBER
184810 )
184811 IS
184812 
184813 l_component_type              VARCHAR2(80);
184814 l_component_code              VARCHAR2(30);
184815 l_component_type_code         VARCHAR2(1);
184816 l_component_appl_id           INTEGER;
184817 l_amb_context_code            VARCHAR2(30);
184818 l_entity_code                 VARCHAR2(30);
184819 l_event_class_code            VARCHAR2(30);
184820 l_ae_header_id                NUMBER;
184821 l_event_type_code             VARCHAR2(30);
184822 l_line_definition_code        VARCHAR2(30);
184823 l_line_definition_owner_code  VARCHAR2(1);
184824 --
184825 -- adr variables
184826 l_segment                     VARCHAR2(30);
184827 l_ccid                        NUMBER;
184828 l_adr_transaction_coa_id      NUMBER;
184829 l_adr_accounting_coa_id       NUMBER;
184830 l_adr_flexfield_segment_code  VARCHAR2(30);
184831 l_adr_flex_value_set_id       NUMBER;
184832 l_adr_value_type_code         VARCHAR2(30);
184833 l_adr_value_combination_id    NUMBER;
184834 l_adr_value_segment_code      VARCHAR2(30);
184835 
184836 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
184837 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
184838 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
184839 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
184840 
184841 -- 4262811 Variables ------------------------------------------------------------------------------------------
184842 l_entered_amt_idx             NUMBER;
184843 l_accted_amt_idx              NUMBER;
184844 l_acc_rev_flag                VARCHAR2(1);
184845 l_accrual_line_num            NUMBER;
184846 l_tmp_amt                     NUMBER;
184847 l_acc_rev_natural_side_code   VARCHAR2(1);
184848 
184849 l_num_entries                 NUMBER;
184850 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
184851 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
184852 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
184853 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
184854 l_recog_line_1                NUMBER;
184855 l_recog_line_2                NUMBER;
184856 
184857 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
184858 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
184859 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
184860 
184861 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
184862 
184863 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
184864 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
184865 
184866 ---------------------------------------------------------------------------------------------------------------
184867 
184868 
184869 --
184870 -- bulk performance
184871 --
184872 l_balance_type_code           VARCHAR2(1);
184873 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
184874 l_log_module                  VARCHAR2(240);
184875 
184876 --
184877 -- Upgrade strategy
184878 --
184879 l_actual_upg_option           VARCHAR2(1);
184880 l_enc_upg_option           VARCHAR2(1);
184881 
184882 --
184883 BEGIN
184884 --
184885 IF g_log_enabled THEN
184886       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_340';
184887 END IF;
184888 --
184889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184890 
184891       trace
184892          (p_msg      => 'BEGIN of AcctLineType_340'
184893          ,p_level    => C_LEVEL_PROCEDURE
184894          ,p_module   => l_log_module);
184895 
184896 END IF;
184897 --
184898 l_component_type             := 'AMB_JLT';
184899 l_component_code             := 'OFFSET';
184900 l_component_type_code        := 'S';
184901 l_component_appl_id          :=  707;
184902 l_amb_context_code           := 'DEFAULT';
184903 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
184904 l_event_class_code           := 'DIR_INTERORG_RCPT';
184905 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
184906 l_line_definition_owner_code := 'S';
184907 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
184908 --
184909 l_balance_type_code          := 'A';
184910 l_segment                     := NULL;
184911 l_ccid                        := NULL;
184912 l_adr_transaction_coa_id      := NULL;
184913 l_adr_accounting_coa_id       := NULL;
184914 l_adr_flexfield_segment_code  := NULL;
184915 l_adr_flex_value_set_id       := NULL;
184916 l_adr_value_type_code         := NULL;
184917 l_adr_value_combination_id    := NULL;
184918 l_adr_value_segment_code      := NULL;
184919 
184920 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
184921 l_bflow_class_code           := '';    -- 4219869 Business Flow
184922 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
184923 l_budgetary_control_flag     := 'N';
184924 
184925 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
184926 l_bflow_applied_to_amt       := NULL; -- 5132302
184927 l_entered_amt_idx            := NULL;          -- 4262811
184928 l_accted_amt_idx             := NULL;          -- 4262811
184929 l_acc_rev_flag               := NULL;          -- 4262811
184930 l_accrual_line_num           := NULL;          -- 4262811
184931 l_tmp_amt                    := NULL;          -- 4262811
184932 --
184933  
184934 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
184935     l_balance_type_code <> 'B' THEN
184936 IF NVL(p_source_97,9E125) =  2
184937  THEN 
184938 
184939    --
184940    XLA_AE_LINES_PKG.SetNewLine;
184941 
184942    p_balance_type_code          := l_balance_type_code;
184943    -- set the flag so later we will know whether the gain loss line needs to be created
184944    
184945    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
184946      p_actual_flag :='A';
184947    END IF;
184948 
184949    --
184950    -- bulk performance
184951    --
184952    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
184953                                       p_header_num   => 0); -- 4262811
184954    --
184955    -- set accounting line options
184956    --
184957    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
184958            p_natural_side_code          => 'D'
184959          , p_gain_or_loss_flag          => 'N'
184960          , p_gl_transfer_mode_code      => 'S'
184961          , p_acct_entry_type_code       => 'A'
184962          , p_switch_side_flag           => 'Y'
184963          , p_merge_duplicate_code       => 'N'
184964          );
184965    --
184966    l_acc_rev_natural_side_code := 'C';  -- 4262811
184967    -- 
184968    --
184969    -- set accounting line type info
184970    --
184971    xla_ae_lines_pkg.SetAcctLineType
184972       (p_component_type             => l_component_type
184973       ,p_event_type_code            => l_event_type_code
184974       ,p_line_definition_owner_code => l_line_definition_owner_code
184975       ,p_line_definition_code       => l_line_definition_code
184976       ,p_accounting_line_code       => l_component_code
184977       ,p_accounting_line_type_code  => l_component_type_code
184978       ,p_accounting_line_appl_id    => l_component_appl_id
184979       ,p_amb_context_code           => l_amb_context_code
184980       ,p_entity_code                => l_entity_code
184981       ,p_event_class_code           => l_event_class_code);
184982    --
184983    -- set accounting class
184984    --
184985    xla_ae_lines_pkg.SetAcctClass(
184986            p_accounting_class_code  => 'OFFSET'
184987          , p_ae_header_id           => l_ae_header_id
184988          );
184989 
184990    --
184991    -- set rounding class
184992    --
184993    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
184994                       'OFFSET';
184995 
184996    --
184997    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
184998    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
184999    --
185000    -- bulk performance
185001    --
185002    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
185003 
185004    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
185005       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
185006 
185007    -- 4955764
185008    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
185009       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
185010 
185011    -- 4458381 Public Sector Enh
185012    
185013    --
185014    -- set accounting attributes for the line type
185015    --
185016    l_entered_amt_idx := 17;
185017    l_accted_amt_idx  := 22;
185018    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
185019    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
185020    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
185021    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
185022    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
185023    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
185024    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
185025    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
185026    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
185027    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
185028    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
185029    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
185030    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
185031    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
185032    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
185033    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
185034    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
185035    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
185036    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
185037    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
185038    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
185039    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
185040    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
185041    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
185042    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
185043    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
185044    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
185045    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
185046    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
185047    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
185048    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
185049    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
185050    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
185051    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
185052    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
185053    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
185054    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
185055    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
185056    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
185057    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
185058    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
185059    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
185060    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
185061    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
185062    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
185063    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
185064    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
185065    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
185066    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
185067 
185068    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
185069    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
185070 
185071    ---------------------------------------------------------------------------------------------------------------
185072    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
185073    ---------------------------------------------------------------------------------------------------------------
185074    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
185075 
185076    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
185077    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
185078 
185079    IF xla_accounting_cache_pkg.GetValueChar
185080          (p_source_code         => 'LEDGER_CATEGORY_CODE'
185081          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
185082    AND l_bflow_method_code = 'PRIOR_ENTRY'
185083 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
185084    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
185085          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
185086        )
185087    THEN
185088          xla_ae_lines_pkg.BflowUpgEntry
185089            (p_business_method_code    => l_bflow_method_code
185090            ,p_business_class_code     => l_bflow_class_code
185091            ,p_balance_type            => l_balance_type_code);
185092    ELSE
185093       NULL;
185094 -- No business flow processing for business flow method of NONE.
185095    END IF;
185096 
185097    --
185098    -- call analytical criteria
185099    --
185100    
185101    --
185102    -- call description
185103    --
185104    
185105 xla_ae_lines_pkg.SetLineDescription(
185106    p_ae_header_id => l_ae_header_id
185107   ,p_description  => Description_1 (
185108      p_application_id         => p_application_id
185109    , p_ae_header_id           => l_ae_header_id 
185110 , p_source_1 => p_source_1
185111 , p_source_2 => p_source_2
185112 , p_source_3 => p_source_3
185113 , p_source_4 => p_source_4
185114 , p_source_5 => p_source_5
185115    )
185116 );
185117 
185118 
185119    --
185120    -- call ADRs
185121    -- Bug 4922099
185122    --
185123    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
185124         (NVL(l_actual_upg_option, 'N') = 'O') OR
185125         (NVL(l_enc_upg_option, 'N') = 'O')
185126       )
185127    THEN
185128    NULL;
185129    --
185130    --
185131    
185132   l_ccid := AcctDerRule_13(
185133            p_application_id           => p_application_id
185134          , p_ae_header_id             => l_ae_header_id 
185135 , p_source_24 => p_source_24
185136          , x_transaction_coa_id       => l_adr_transaction_coa_id
185137          , x_accounting_coa_id        => l_adr_accounting_coa_id
185138          , x_value_type_code          => l_adr_value_type_code
185139          , p_side                     => 'NA'
185140    );
185141 
185142    xla_ae_lines_pkg.set_ccid(
185143     p_code_combination_id          => l_ccid
185144   , p_value_type_code              => l_adr_value_type_code
185145   , p_transaction_coa_id           => l_adr_transaction_coa_id
185146   , p_accounting_coa_id            => l_adr_accounting_coa_id
185147   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
185148   , p_adr_type_code                => 'S'
185149   , p_component_type               => l_component_type
185150   , p_component_code               => l_component_code
185151   , p_component_type_code          => l_component_type_code
185152   , p_component_appl_id            => l_component_appl_id
185153   , p_amb_context_code             => l_amb_context_code
185154   , p_side                         => 'NA'
185155   );
185156 
185157 
185158    --
185159    --
185160    END IF;
185161    --
185162    -- Bug 4922099
185163    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
185164           (NVL(l_enc_upg_option, 'N') = 'O')
185165         ) AND
185166         (l_bflow_method_code = 'PRIOR_ENTRY')
185167       )
185168    THEN
185169       IF
185170       --
185171       1 = 2
185172       --
185173       THEN
185174       xla_accounting_err_pkg.build_message
185175                                     (p_appli_s_name            => 'XLA'
185176                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
185177                                     ,p_token_1                 => 'LINE_NUMBER'
185178                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
185179                                     ,p_token_2                 => 'LINE_TYPE_NAME'
185180                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
185181                                                                              l_component_type
185182                                                                             ,l_component_code
185183                                                                             ,l_component_type_code
185184                                                                             ,l_component_appl_id
185185                                                                             ,l_amb_context_code
185186                                                                             ,l_entity_code
185187                                                                             ,l_event_class_code
185188                                                                            )
185189                                     ,p_token_3                 => 'OWNER'
185190                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
185191                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
185192                                                                           ,p_lookup_code    => l_component_type_code
185193                                                                          )
185194                                     ,p_token_4                 => 'PRODUCT_NAME'
185195                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
185196                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
185197                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
185198                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
185199                                     ,p_ae_header_id            =>  NULL
185200                                        );
185201 
185202         IF (C_LEVEL_ERROR>= g_log_level) THEN
185203                  trace
185204                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
185205                       ,p_level    => C_LEVEL_ERROR
185206                       ,p_module   => l_log_module);
185207         END IF;
185208       END IF;
185209    END IF;
185210    --
185211    --
185212    ------------------------------------------------------------------------------------------------
185213    -- 4219869 Business Flow
185214    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
185215    -- Prior Entry.  Currently, the following code is always generated.
185216    ------------------------------------------------------------------------------------------------
185217    XLA_AE_LINES_PKG.ValidateCurrentLine;
185218 
185219    ------------------------------------------------------------------------------------
185220    -- 4219869 Business Flow
185221    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
185222    ------------------------------------------------------------------------------------
185223    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
185224 
185225    ----------------------------------------------------------------------------------
185226    -- 4219869 Business Flow
185227    -- Update journal entry status -- Need to generate this within IF <condition>
185228    ----------------------------------------------------------------------------------
185229    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
185230          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
185231          ,p_balance_type_code => l_balance_type_code
185232          );
185233 
185234    -------------------------------------------------------------------------------------------
185235    -- 4262811 - Generate the Accrual Reversal lines
185236    -------------------------------------------------------------------------------------------
185237    BEGIN
185238       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
185239                               (g_array_event(p_event_id).array_value_num('header_index'));
185240       IF l_acc_rev_flag IS NULL THEN
185241          l_acc_rev_flag := 'N';
185242       END IF;
185243    EXCEPTION
185244       WHEN OTHERS THEN
185245          l_acc_rev_flag := 'N';
185246    END;
185247    --
185248    IF (l_acc_rev_flag = 'Y') THEN
185249 
185250        -- 4645092  ------------------------------------------------------------------------------
185251        -- To allow MPA report to determine if it should generate report process
185252        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
185253        ------------------------------------------------------------------------------------------
185254 
185255        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
185256        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
185257    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
185258    -- call ADRs
185259    -- Bug 4922099
185260    --
185261    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
185262         (NVL(l_actual_upg_option, 'N') = 'O') OR
185263         (NVL(l_enc_upg_option, 'N') = 'O')
185264       )
185265    THEN
185266    NULL;
185267    --
185268    --
185269    
185270   l_ccid := AcctDerRule_13(
185271            p_application_id           => p_application_id
185272          , p_ae_header_id             => l_ae_header_id 
185273 , p_source_24 => p_source_24
185274          , x_transaction_coa_id       => l_adr_transaction_coa_id
185275          , x_accounting_coa_id        => l_adr_accounting_coa_id
185276          , x_value_type_code          => l_adr_value_type_code
185277          , p_side                     => 'NA'
185278    );
185279 
185280    xla_ae_lines_pkg.set_ccid(
185281     p_code_combination_id          => l_ccid
185282   , p_value_type_code              => l_adr_value_type_code
185283   , p_transaction_coa_id           => l_adr_transaction_coa_id
185284   , p_accounting_coa_id            => l_adr_accounting_coa_id
185285   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
185286   , p_adr_type_code                => 'S'
185287   , p_component_type               => l_component_type
185288   , p_component_code               => l_component_code
185289   , p_component_type_code          => l_component_type_code
185290   , p_component_appl_id            => l_component_appl_id
185291   , p_amb_context_code             => l_amb_context_code
185292   , p_side                         => 'NA'
185293   );
185294 
185295 
185296    --
185297    --
185298    END IF;
185299 
185300        --
185301        -- Update the line information that should be overwritten
185302        --
185303        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
185304                                          p_header_num   => 1);
185305        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
185306 
185307        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
185308 
185309        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
185310           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
185311        END IF;
185312 
185313       --
185314       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
185315       --
185316       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
185317           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
185318       ELSE
185319           ---------------------------------------------------------------------------------------------------
185320           -- 4262811a Switch Sign
185321           ---------------------------------------------------------------------------------------------------
185322           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
185323           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
185324                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
185325           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
185326                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
185327           -- 5132302
185328           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
185329                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
185330 
185331       END IF;
185332 
185333       -- 4955764
185334       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
185335       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
185336 
185337 
185338       XLA_AE_LINES_PKG.ValidateCurrentLine;
185339       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
185340 
185341       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
185342                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
185343                ,p_balance_type_code => l_balance_type_code);
185344 
185345    END IF;
185346 
185347    -----------------------------------------------------------------------------------------
185348    -- 4262811 Multiperiod Accounting
185349    -----------------------------------------------------------------------------------------
185350      -- No MPA option is assigned.
185351 
185352 
185353 END IF;
185354 END IF;
185355 --
185356 
185357 --
185358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185359    trace
185360       (p_msg      => 'END of AcctLineType_340'
185361       ,p_level    => C_LEVEL_PROCEDURE
185362       ,p_module   => l_log_module);
185363 END IF;
185364 --
185365 EXCEPTION
185366   WHEN xla_exceptions_pkg.application_exception THEN
185367       RAISE;
185368   WHEN OTHERS THEN
185369        xla_exceptions_pkg.raise_message
185370            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_340');
185371 END AcctLineType_340;
185372 --
185373 
185374 ---------------------------------------
185375 --
185376 -- PRIVATE FUNCTION
185377 --         AcctLineType_341
185378 --
185379 ---------------------------------------
185380 PROCEDURE AcctLineType_341 (
185381   p_application_id        IN NUMBER
185382  ,p_event_id              IN NUMBER
185383  ,p_calculate_acctd_flag  IN VARCHAR2
185384  ,p_calculate_g_l_flag    IN VARCHAR2
185385  ,p_actual_flag           IN OUT VARCHAR2
185386  ,p_balance_type_code     OUT VARCHAR2
185387  ,p_gain_or_loss_ref      OUT VARCHAR2
185388  
185389 --TRANSACTION_ID
185390  , p_source_1            IN NUMBER
185391 --Item Concatenated Segments
185392  , p_source_2            IN VARCHAR2
185393 --Transaction Quantity
185394  , p_source_3            IN NUMBER
185395 --Transaction Unit of Measure Code
185396  , p_source_4            IN VARCHAR2
185397 --Inventory Transaction Type Description
185398  , p_source_5            IN VARCHAR2
185399 --Cost Management Default Account
185400  , p_source_11            IN NUMBER
185401 --Applied to Application ID
185402  , p_source_79            IN NUMBER
185403 --Applied to Distribution Link Type
185404  , p_source_80            IN VARCHAR2
185405 --Applied to Entity Code
185406  , p_source_81            IN VARCHAR2
185407 --DISTRIBUTION_IDENTIFIER
185408  , p_source_84            IN NUMBER
185409 --Distribution Type
185410  , p_source_85            IN VARCHAR2
185411  , p_source_85_meaning    IN VARCHAR2
185412 --Encumbrance Reversal Amount Entered
185413  , p_source_87            IN NUMBER
185414 --Entered Currency Code
185415  , p_source_88            IN VARCHAR2
185416 --Transaction Encumbrance Reversal Amount
185417  , p_source_89            IN NUMBER
185418 --Entered Amount
185419  , p_source_91            IN NUMBER
185420 --Currency Conversion Date
185421  , p_source_92            IN DATE
185422 --Currency Conversion Rate
185423  , p_source_93            IN NUMBER
185424 --Currency Conversion Type
185425  , p_source_94            IN VARCHAR2
185426 --Accounted Amount
185427  , p_source_95            IN NUMBER
185428 --Accounting Line Type
185429  , p_source_97            IN NUMBER
185430 --Costing Encumbrance Upgrade Option
185431  , p_source_100            IN VARCHAR2
185432 --TXN_PO_DISTRIBUTION_ID
185433  , p_source_101            IN NUMBER
185434 --TXN_PO_HEADER_ID
185435  , p_source_102            IN NUMBER
185436 --Requisition Budget Account
185437  , p_source_103            IN NUMBER
185438 --Requisition Encumbrance Type Identifier
185439  , p_source_104            IN NUMBER
185440 )
185441 IS
185442 
185443 l_component_type              VARCHAR2(80);
185444 l_component_code              VARCHAR2(30);
185445 l_component_type_code         VARCHAR2(1);
185446 l_component_appl_id           INTEGER;
185447 l_amb_context_code            VARCHAR2(30);
185448 l_entity_code                 VARCHAR2(30);
185449 l_event_class_code            VARCHAR2(30);
185450 l_ae_header_id                NUMBER;
185451 l_event_type_code             VARCHAR2(30);
185452 l_line_definition_code        VARCHAR2(30);
185453 l_line_definition_owner_code  VARCHAR2(1);
185454 --
185455 -- adr variables
185456 l_segment                     VARCHAR2(30);
185457 l_ccid                        NUMBER;
185458 l_adr_transaction_coa_id      NUMBER;
185459 l_adr_accounting_coa_id       NUMBER;
185460 l_adr_flexfield_segment_code  VARCHAR2(30);
185461 l_adr_flex_value_set_id       NUMBER;
185462 l_adr_value_type_code         VARCHAR2(30);
185463 l_adr_value_combination_id    NUMBER;
185464 l_adr_value_segment_code      VARCHAR2(30);
185465 
185466 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
185467 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
185468 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
185469 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
185470 
185471 -- 4262811 Variables ------------------------------------------------------------------------------------------
185472 l_entered_amt_idx             NUMBER;
185473 l_accted_amt_idx              NUMBER;
185474 l_acc_rev_flag                VARCHAR2(1);
185475 l_accrual_line_num            NUMBER;
185476 l_tmp_amt                     NUMBER;
185477 l_acc_rev_natural_side_code   VARCHAR2(1);
185478 
185479 l_num_entries                 NUMBER;
185480 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
185481 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
185482 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
185483 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
185484 l_recog_line_1                NUMBER;
185485 l_recog_line_2                NUMBER;
185486 
185487 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
185488 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
185489 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
185490 
185491 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
185492 
185493 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
185494 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
185495 
185496 ---------------------------------------------------------------------------------------------------------------
185497 
185498 
185499 --
185500 -- bulk performance
185501 --
185502 l_balance_type_code           VARCHAR2(1);
185503 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
185504 l_log_module                  VARCHAR2(240);
185505 
185506 --
185507 -- Upgrade strategy
185508 --
185509 l_actual_upg_option           VARCHAR2(1);
185510 l_enc_upg_option           VARCHAR2(1);
185511 
185512 --
185513 BEGIN
185514 --
185515 IF g_log_enabled THEN
185516       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_341';
185517 END IF;
185518 --
185519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185520 
185521       trace
185522          (p_msg      => 'BEGIN of AcctLineType_341'
185523          ,p_level    => C_LEVEL_PROCEDURE
185524          ,p_module   => l_log_module);
185525 
185526 END IF;
185527 --
185528 l_component_type             := 'AMB_JLT';
185529 l_component_code             := 'OFFSET';
185530 l_component_type_code        := 'S';
185531 l_component_appl_id          :=  707;
185532 l_amb_context_code           := 'DEFAULT';
185533 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
185534 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
185535 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
185536 l_line_definition_owner_code := 'S';
185537 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_RCPT';
185538 --
185539 l_balance_type_code          := 'A';
185540 l_segment                     := NULL;
185541 l_ccid                        := NULL;
185542 l_adr_transaction_coa_id      := NULL;
185543 l_adr_accounting_coa_id       := NULL;
185544 l_adr_flexfield_segment_code  := NULL;
185545 l_adr_flex_value_set_id       := NULL;
185546 l_adr_value_type_code         := NULL;
185547 l_adr_value_combination_id    := NULL;
185548 l_adr_value_segment_code      := NULL;
185549 
185550 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
185551 l_bflow_class_code           := '';    -- 4219869 Business Flow
185552 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
185553 l_budgetary_control_flag     := 'N';
185554 
185555 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
185556 l_bflow_applied_to_amt       := NULL; -- 5132302
185557 l_entered_amt_idx            := NULL;          -- 4262811
185558 l_accted_amt_idx             := NULL;          -- 4262811
185559 l_acc_rev_flag               := NULL;          -- 4262811
185560 l_accrual_line_num           := NULL;          -- 4262811
185561 l_tmp_amt                    := NULL;          -- 4262811
185562 --
185563  
185564 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
185565     l_balance_type_code <> 'B' THEN
185566 IF NVL(p_source_97,9E125) =  2
185567  THEN 
185568 
185569    --
185570    XLA_AE_LINES_PKG.SetNewLine;
185571 
185572    p_balance_type_code          := l_balance_type_code;
185573    -- set the flag so later we will know whether the gain loss line needs to be created
185574    
185575    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
185576      p_actual_flag :='A';
185577    END IF;
185578 
185579    --
185580    -- bulk performance
185581    --
185582    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
185583                                       p_header_num   => 0); -- 4262811
185584    --
185585    -- set accounting line options
185586    --
185587    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
185588            p_natural_side_code          => 'D'
185589          , p_gain_or_loss_flag          => 'N'
185590          , p_gl_transfer_mode_code      => 'S'
185591          , p_acct_entry_type_code       => 'A'
185592          , p_switch_side_flag           => 'Y'
185593          , p_merge_duplicate_code       => 'N'
185594          );
185595    --
185596    l_acc_rev_natural_side_code := 'C';  -- 4262811
185597    -- 
185598    --
185599    -- set accounting line type info
185600    --
185601    xla_ae_lines_pkg.SetAcctLineType
185602       (p_component_type             => l_component_type
185603       ,p_event_type_code            => l_event_type_code
185604       ,p_line_definition_owner_code => l_line_definition_owner_code
185605       ,p_line_definition_code       => l_line_definition_code
185606       ,p_accounting_line_code       => l_component_code
185607       ,p_accounting_line_type_code  => l_component_type_code
185608       ,p_accounting_line_appl_id    => l_component_appl_id
185609       ,p_amb_context_code           => l_amb_context_code
185610       ,p_entity_code                => l_entity_code
185611       ,p_event_class_code           => l_event_class_code);
185612    --
185613    -- set accounting class
185614    --
185615    xla_ae_lines_pkg.SetAcctClass(
185616            p_accounting_class_code  => 'OFFSET'
185617          , p_ae_header_id           => l_ae_header_id
185618          );
185619 
185620    --
185621    -- set rounding class
185622    --
185623    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
185624                       'OFFSET';
185625 
185626    --
185627    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
185628    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
185629    --
185630    -- bulk performance
185631    --
185632    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
185633 
185634    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
185635       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
185636 
185637    -- 4955764
185638    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
185639       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
185640 
185641    -- 4458381 Public Sector Enh
185642    
185643    --
185644    -- set accounting attributes for the line type
185645    --
185646    l_entered_amt_idx := 17;
185647    l_accted_amt_idx  := 22;
185648    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
185649    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
185650    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
185651    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
185652    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
185653    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
185654    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
185655    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
185656    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
185657    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
185658    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
185659    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
185660    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
185661    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
185662    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
185663    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
185664    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
185665    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
185666    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
185667    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
185668    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
185669    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
185670    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
185671    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
185672    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
185673    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
185674    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
185675    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
185676    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
185677    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
185678    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
185679    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
185680    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
185681    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
185682    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
185683    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
185684    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
185685    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
185686    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
185687    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
185688    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
185689    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
185690    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
185691    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
185692    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
185693    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
185694    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
185695    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
185696    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
185697 
185698    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
185699    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
185700 
185701    ---------------------------------------------------------------------------------------------------------------
185702    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
185703    ---------------------------------------------------------------------------------------------------------------
185704    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
185705 
185706    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
185707    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
185708 
185709    IF xla_accounting_cache_pkg.GetValueChar
185710          (p_source_code         => 'LEDGER_CATEGORY_CODE'
185711          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
185712    AND l_bflow_method_code = 'PRIOR_ENTRY'
185713 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
185714    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
185715          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
185716        )
185717    THEN
185718          xla_ae_lines_pkg.BflowUpgEntry
185719            (p_business_method_code    => l_bflow_method_code
185720            ,p_business_class_code     => l_bflow_class_code
185721            ,p_balance_type            => l_balance_type_code);
185722    ELSE
185723       NULL;
185724 -- No business flow processing for business flow method of NONE.
185725    END IF;
185726 
185727    --
185728    -- call analytical criteria
185729    --
185730    
185731    --
185732    -- call description
185733    --
185734    
185735 xla_ae_lines_pkg.SetLineDescription(
185736    p_ae_header_id => l_ae_header_id
185737   ,p_description  => Description_1 (
185738      p_application_id         => p_application_id
185739    , p_ae_header_id           => l_ae_header_id 
185740 , p_source_1 => p_source_1
185741 , p_source_2 => p_source_2
185742 , p_source_3 => p_source_3
185743 , p_source_4 => p_source_4
185744 , p_source_5 => p_source_5
185745    )
185746 );
185747 
185748 
185749    --
185750    -- call ADRs
185751    -- Bug 4922099
185752    --
185753    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
185754         (NVL(l_actual_upg_option, 'N') = 'O') OR
185755         (NVL(l_enc_upg_option, 'N') = 'O')
185756       )
185757    THEN
185758    NULL;
185759    --
185760    --
185761    
185762   l_ccid := AcctDerRule_6(
185763            p_application_id           => p_application_id
185764          , p_ae_header_id             => l_ae_header_id 
185765 , p_source_11 => p_source_11
185766          , x_transaction_coa_id       => l_adr_transaction_coa_id
185767          , x_accounting_coa_id        => l_adr_accounting_coa_id
185768          , x_value_type_code          => l_adr_value_type_code
185769          , p_side                     => 'NA'
185770    );
185771 
185772    xla_ae_lines_pkg.set_ccid(
185773     p_code_combination_id          => l_ccid
185774   , p_value_type_code              => l_adr_value_type_code
185775   , p_transaction_coa_id           => l_adr_transaction_coa_id
185776   , p_accounting_coa_id            => l_adr_accounting_coa_id
185777   , p_adr_code                     => 'CST_DEFAULT'
185778   , p_adr_type_code                => 'S'
185779   , p_component_type               => l_component_type
185780   , p_component_code               => l_component_code
185781   , p_component_type_code          => l_component_type_code
185782   , p_component_appl_id            => l_component_appl_id
185783   , p_amb_context_code             => l_amb_context_code
185784   , p_side                         => 'NA'
185785   );
185786 
185787 
185788    --
185789    --
185790    END IF;
185791    --
185792    -- Bug 4922099
185793    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
185794           (NVL(l_enc_upg_option, 'N') = 'O')
185795         ) AND
185796         (l_bflow_method_code = 'PRIOR_ENTRY')
185797       )
185798    THEN
185799       IF
185800       --
185801       1 = 2
185802       --
185803       THEN
185804       xla_accounting_err_pkg.build_message
185805                                     (p_appli_s_name            => 'XLA'
185806                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
185807                                     ,p_token_1                 => 'LINE_NUMBER'
185808                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
185809                                     ,p_token_2                 => 'LINE_TYPE_NAME'
185810                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
185811                                                                              l_component_type
185812                                                                             ,l_component_code
185813                                                                             ,l_component_type_code
185814                                                                             ,l_component_appl_id
185815                                                                             ,l_amb_context_code
185816                                                                             ,l_entity_code
185817                                                                             ,l_event_class_code
185818                                                                            )
185819                                     ,p_token_3                 => 'OWNER'
185820                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
185821                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
185822                                                                           ,p_lookup_code    => l_component_type_code
185823                                                                          )
185824                                     ,p_token_4                 => 'PRODUCT_NAME'
185825                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
185826                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
185827                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
185828                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
185829                                     ,p_ae_header_id            =>  NULL
185830                                        );
185831 
185832         IF (C_LEVEL_ERROR>= g_log_level) THEN
185833                  trace
185834                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
185835                       ,p_level    => C_LEVEL_ERROR
185836                       ,p_module   => l_log_module);
185837         END IF;
185838       END IF;
185839    END IF;
185840    --
185841    --
185842    ------------------------------------------------------------------------------------------------
185843    -- 4219869 Business Flow
185844    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
185845    -- Prior Entry.  Currently, the following code is always generated.
185846    ------------------------------------------------------------------------------------------------
185847    XLA_AE_LINES_PKG.ValidateCurrentLine;
185848 
185849    ------------------------------------------------------------------------------------
185850    -- 4219869 Business Flow
185851    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
185852    ------------------------------------------------------------------------------------
185853    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
185854 
185855    ----------------------------------------------------------------------------------
185856    -- 4219869 Business Flow
185857    -- Update journal entry status -- Need to generate this within IF <condition>
185858    ----------------------------------------------------------------------------------
185859    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
185860          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
185861          ,p_balance_type_code => l_balance_type_code
185862          );
185863 
185864    -------------------------------------------------------------------------------------------
185865    -- 4262811 - Generate the Accrual Reversal lines
185866    -------------------------------------------------------------------------------------------
185867    BEGIN
185868       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
185869                               (g_array_event(p_event_id).array_value_num('header_index'));
185870       IF l_acc_rev_flag IS NULL THEN
185871          l_acc_rev_flag := 'N';
185872       END IF;
185873    EXCEPTION
185874       WHEN OTHERS THEN
185875          l_acc_rev_flag := 'N';
185876    END;
185877    --
185878    IF (l_acc_rev_flag = 'Y') THEN
185879 
185880        -- 4645092  ------------------------------------------------------------------------------
185881        -- To allow MPA report to determine if it should generate report process
185882        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
185883        ------------------------------------------------------------------------------------------
185884 
185885        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
185886        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
185887    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
185888    -- call ADRs
185889    -- Bug 4922099
185890    --
185891    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
185892         (NVL(l_actual_upg_option, 'N') = 'O') OR
185893         (NVL(l_enc_upg_option, 'N') = 'O')
185894       )
185895    THEN
185896    NULL;
185897    --
185898    --
185899    
185900   l_ccid := AcctDerRule_6(
185901            p_application_id           => p_application_id
185902          , p_ae_header_id             => l_ae_header_id 
185903 , p_source_11 => p_source_11
185904          , x_transaction_coa_id       => l_adr_transaction_coa_id
185905          , x_accounting_coa_id        => l_adr_accounting_coa_id
185906          , x_value_type_code          => l_adr_value_type_code
185907          , p_side                     => 'NA'
185908    );
185909 
185910    xla_ae_lines_pkg.set_ccid(
185911     p_code_combination_id          => l_ccid
185912   , p_value_type_code              => l_adr_value_type_code
185913   , p_transaction_coa_id           => l_adr_transaction_coa_id
185914   , p_accounting_coa_id            => l_adr_accounting_coa_id
185915   , p_adr_code                     => 'CST_DEFAULT'
185916   , p_adr_type_code                => 'S'
185917   , p_component_type               => l_component_type
185918   , p_component_code               => l_component_code
185919   , p_component_type_code          => l_component_type_code
185920   , p_component_appl_id            => l_component_appl_id
185921   , p_amb_context_code             => l_amb_context_code
185922   , p_side                         => 'NA'
185923   );
185924 
185925 
185926    --
185927    --
185928    END IF;
185929 
185930        --
185931        -- Update the line information that should be overwritten
185932        --
185933        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
185934                                          p_header_num   => 1);
185935        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
185936 
185937        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
185938 
185939        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
185940           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
185941        END IF;
185942 
185943       --
185944       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
185945       --
185946       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
185947           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
185948       ELSE
185949           ---------------------------------------------------------------------------------------------------
185950           -- 4262811a Switch Sign
185951           ---------------------------------------------------------------------------------------------------
185952           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
185953           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
185954                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
185955           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
185956                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
185957           -- 5132302
185958           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
185959                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
185960 
185961       END IF;
185962 
185963       -- 4955764
185964       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
185965       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
185966 
185967 
185968       XLA_AE_LINES_PKG.ValidateCurrentLine;
185969       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
185970 
185971       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
185972                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
185973                ,p_balance_type_code => l_balance_type_code);
185974 
185975    END IF;
185976 
185977    -----------------------------------------------------------------------------------------
185978    -- 4262811 Multiperiod Accounting
185979    -----------------------------------------------------------------------------------------
185980      -- No MPA option is assigned.
185981 
185982 
185983 END IF;
185984 END IF;
185985 --
185986 
185987 --
185988 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185989    trace
185990       (p_msg      => 'END of AcctLineType_341'
185991       ,p_level    => C_LEVEL_PROCEDURE
185992       ,p_module   => l_log_module);
185993 END IF;
185994 --
185995 EXCEPTION
185996   WHEN xla_exceptions_pkg.application_exception THEN
185997       RAISE;
185998   WHEN OTHERS THEN
185999        xla_exceptions_pkg.raise_message
186000            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_341');
186001 END AcctLineType_341;
186002 --
186003 
186004 ---------------------------------------
186005 --
186006 -- PRIVATE FUNCTION
186007 --         AcctLineType_342
186008 --
186009 ---------------------------------------
186010 PROCEDURE AcctLineType_342 (
186011   p_application_id        IN NUMBER
186012  ,p_event_id              IN NUMBER
186013  ,p_calculate_acctd_flag  IN VARCHAR2
186014  ,p_calculate_g_l_flag    IN VARCHAR2
186015  ,p_actual_flag           IN OUT VARCHAR2
186016  ,p_balance_type_code     OUT VARCHAR2
186017  ,p_gain_or_loss_ref      OUT VARCHAR2
186018  
186019 --TRANSACTION_ID
186020  , p_source_1            IN NUMBER
186021 --Item Concatenated Segments
186022  , p_source_2            IN VARCHAR2
186023 --Transaction Quantity
186024  , p_source_3            IN NUMBER
186025 --Transaction Unit of Measure Code
186026  , p_source_4            IN VARCHAR2
186027 --Inventory Transaction Type Description
186028  , p_source_5            IN VARCHAR2
186029 --Cost Management Default Account
186030  , p_source_11            IN NUMBER
186031 --DISTRIBUTION_IDENTIFIER
186032  , p_source_84            IN NUMBER
186033 --Distribution Type
186034  , p_source_85            IN VARCHAR2
186035  , p_source_85_meaning    IN VARCHAR2
186036 --Entered Currency Code
186037  , p_source_88            IN VARCHAR2
186038 --Entered Amount
186039  , p_source_91            IN NUMBER
186040 --Currency Conversion Date
186041  , p_source_92            IN DATE
186042 --Currency Conversion Rate
186043  , p_source_93            IN NUMBER
186044 --Currency Conversion Type
186045  , p_source_94            IN VARCHAR2
186046 --Accounted Amount
186047  , p_source_95            IN NUMBER
186048 --Accounting Line Type
186049  , p_source_97            IN NUMBER
186050 )
186051 IS
186052 
186053 l_component_type              VARCHAR2(80);
186054 l_component_code              VARCHAR2(30);
186055 l_component_type_code         VARCHAR2(1);
186056 l_component_appl_id           INTEGER;
186057 l_amb_context_code            VARCHAR2(30);
186058 l_entity_code                 VARCHAR2(30);
186059 l_event_class_code            VARCHAR2(30);
186060 l_ae_header_id                NUMBER;
186061 l_event_type_code             VARCHAR2(30);
186062 l_line_definition_code        VARCHAR2(30);
186063 l_line_definition_owner_code  VARCHAR2(1);
186064 --
186065 -- adr variables
186066 l_segment                     VARCHAR2(30);
186067 l_ccid                        NUMBER;
186068 l_adr_transaction_coa_id      NUMBER;
186069 l_adr_accounting_coa_id       NUMBER;
186070 l_adr_flexfield_segment_code  VARCHAR2(30);
186071 l_adr_flex_value_set_id       NUMBER;
186072 l_adr_value_type_code         VARCHAR2(30);
186073 l_adr_value_combination_id    NUMBER;
186074 l_adr_value_segment_code      VARCHAR2(30);
186075 
186076 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
186077 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
186078 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
186079 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
186080 
186081 -- 4262811 Variables ------------------------------------------------------------------------------------------
186082 l_entered_amt_idx             NUMBER;
186083 l_accted_amt_idx              NUMBER;
186084 l_acc_rev_flag                VARCHAR2(1);
186085 l_accrual_line_num            NUMBER;
186086 l_tmp_amt                     NUMBER;
186087 l_acc_rev_natural_side_code   VARCHAR2(1);
186088 
186089 l_num_entries                 NUMBER;
186090 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
186091 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
186092 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
186093 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
186094 l_recog_line_1                NUMBER;
186095 l_recog_line_2                NUMBER;
186096 
186097 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
186098 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
186099 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
186100 
186101 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
186102 
186103 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
186104 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
186105 
186106 ---------------------------------------------------------------------------------------------------------------
186107 
186108 
186109 --
186110 -- bulk performance
186111 --
186112 l_balance_type_code           VARCHAR2(1);
186113 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
186114 l_log_module                  VARCHAR2(240);
186115 
186116 --
186117 -- Upgrade strategy
186118 --
186119 l_actual_upg_option           VARCHAR2(1);
186120 l_enc_upg_option           VARCHAR2(1);
186121 
186122 --
186123 BEGIN
186124 --
186125 IF g_log_enabled THEN
186126       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_342';
186127 END IF;
186128 --
186129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186130 
186131       trace
186132          (p_msg      => 'BEGIN of AcctLineType_342'
186133          ,p_level    => C_LEVEL_PROCEDURE
186134          ,p_module   => l_log_module);
186135 
186136 END IF;
186137 --
186138 l_component_type             := 'AMB_JLT';
186139 l_component_code             := 'OFFSET';
186140 l_component_type_code        := 'S';
186141 l_component_appl_id          :=  707;
186142 l_amb_context_code           := 'DEFAULT';
186143 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
186144 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
186145 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
186146 l_line_definition_owner_code := 'S';
186147 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
186148 --
186149 l_balance_type_code          := 'A';
186150 l_segment                     := NULL;
186151 l_ccid                        := NULL;
186152 l_adr_transaction_coa_id      := NULL;
186153 l_adr_accounting_coa_id       := NULL;
186154 l_adr_flexfield_segment_code  := NULL;
186155 l_adr_flex_value_set_id       := NULL;
186156 l_adr_value_type_code         := NULL;
186157 l_adr_value_combination_id    := NULL;
186158 l_adr_value_segment_code      := NULL;
186159 
186160 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
186161 l_bflow_class_code           := '';    -- 4219869 Business Flow
186162 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
186163 l_budgetary_control_flag     := 'N';
186164 
186165 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
186166 l_bflow_applied_to_amt       := NULL; -- 5132302
186167 l_entered_amt_idx            := NULL;          -- 4262811
186168 l_accted_amt_idx             := NULL;          -- 4262811
186169 l_acc_rev_flag               := NULL;          -- 4262811
186170 l_accrual_line_num           := NULL;          -- 4262811
186171 l_tmp_amt                    := NULL;          -- 4262811
186172 --
186173  
186174 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
186175     l_balance_type_code <> 'B' THEN
186176 IF NVL(p_source_97,9E125) =  2 AND 
186177 p_source_95 >=  0
186178  THEN 
186179 
186180    --
186181    XLA_AE_LINES_PKG.SetNewLine;
186182 
186183    p_balance_type_code          := l_balance_type_code;
186184    -- set the flag so later we will know whether the gain loss line needs to be created
186185    
186186    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
186187      p_actual_flag :='A';
186188    END IF;
186189 
186190    --
186191    -- bulk performance
186192    --
186193    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
186194                                       p_header_num   => 0); -- 4262811
186195    --
186196    -- set accounting line options
186197    --
186198    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
186199            p_natural_side_code          => 'D'
186200          , p_gain_or_loss_flag          => 'N'
186201          , p_gl_transfer_mode_code      => 'S'
186202          , p_acct_entry_type_code       => 'A'
186203          , p_switch_side_flag           => 'Y'
186204          , p_merge_duplicate_code       => 'N'
186205          );
186206    --
186207    l_acc_rev_natural_side_code := 'C';  -- 4262811
186208    -- 
186209    --
186210    -- set accounting line type info
186211    --
186212    xla_ae_lines_pkg.SetAcctLineType
186213       (p_component_type             => l_component_type
186214       ,p_event_type_code            => l_event_type_code
186215       ,p_line_definition_owner_code => l_line_definition_owner_code
186216       ,p_line_definition_code       => l_line_definition_code
186217       ,p_accounting_line_code       => l_component_code
186218       ,p_accounting_line_type_code  => l_component_type_code
186219       ,p_accounting_line_appl_id    => l_component_appl_id
186220       ,p_amb_context_code           => l_amb_context_code
186221       ,p_entity_code                => l_entity_code
186222       ,p_event_class_code           => l_event_class_code);
186223    --
186224    -- set accounting class
186225    --
186226    xla_ae_lines_pkg.SetAcctClass(
186227            p_accounting_class_code  => 'OFFSET'
186228          , p_ae_header_id           => l_ae_header_id
186229          );
186230 
186231    --
186232    -- set rounding class
186233    --
186234    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
186235                       'OFFSET';
186236 
186237    --
186238    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
186239    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
186240    --
186241    -- bulk performance
186242    --
186243    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
186244 
186245    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
186246       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
186247 
186248    -- 4955764
186249    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
186250       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
186251 
186252    -- 4458381 Public Sector Enh
186253    
186254    --
186255    -- set accounting attributes for the line type
186256    --
186257    l_entered_amt_idx := 3;
186258    l_accted_amt_idx  := 8;
186259    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
186260    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
186261    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
186262    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
186263    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
186264    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
186265    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
186266    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
186267    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
186268    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
186269    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
186270    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
186271    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
186272    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
186273    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
186274    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
186275    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
186276 
186277    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
186278    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
186279 
186280    ---------------------------------------------------------------------------------------------------------------
186281    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
186282    ---------------------------------------------------------------------------------------------------------------
186283    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
186284 
186285    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
186286    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
186287 
186288    IF xla_accounting_cache_pkg.GetValueChar
186289          (p_source_code         => 'LEDGER_CATEGORY_CODE'
186290          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
186291    AND l_bflow_method_code = 'PRIOR_ENTRY'
186292 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
186293    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
186294          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
186295        )
186296    THEN
186297          xla_ae_lines_pkg.BflowUpgEntry
186298            (p_business_method_code    => l_bflow_method_code
186299            ,p_business_class_code     => l_bflow_class_code
186300            ,p_balance_type            => l_balance_type_code);
186301    ELSE
186302       NULL;
186303 -- No business flow processing for business flow method of NONE.
186304    END IF;
186305 
186306    --
186307    -- call analytical criteria
186308    --
186309    
186310    --
186311    -- call description
186312    --
186313    
186314 xla_ae_lines_pkg.SetLineDescription(
186315    p_ae_header_id => l_ae_header_id
186316   ,p_description  => Description_1 (
186317      p_application_id         => p_application_id
186318    , p_ae_header_id           => l_ae_header_id 
186319 , p_source_1 => p_source_1
186320 , p_source_2 => p_source_2
186321 , p_source_3 => p_source_3
186322 , p_source_4 => p_source_4
186323 , p_source_5 => p_source_5
186324    )
186325 );
186326 
186327 
186328    --
186329    -- call ADRs
186330    -- Bug 4922099
186331    --
186332    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
186333         (NVL(l_actual_upg_option, 'N') = 'O') OR
186334         (NVL(l_enc_upg_option, 'N') = 'O')
186335       )
186336    THEN
186337    NULL;
186338    --
186339    --
186340    
186341   l_ccid := AcctDerRule_6(
186342            p_application_id           => p_application_id
186343          , p_ae_header_id             => l_ae_header_id 
186344 , p_source_11 => p_source_11
186345          , x_transaction_coa_id       => l_adr_transaction_coa_id
186346          , x_accounting_coa_id        => l_adr_accounting_coa_id
186347          , x_value_type_code          => l_adr_value_type_code
186348          , p_side                     => 'NA'
186349    );
186350 
186351    xla_ae_lines_pkg.set_ccid(
186352     p_code_combination_id          => l_ccid
186353   , p_value_type_code              => l_adr_value_type_code
186354   , p_transaction_coa_id           => l_adr_transaction_coa_id
186355   , p_accounting_coa_id            => l_adr_accounting_coa_id
186356   , p_adr_code                     => 'CST_DEFAULT'
186357   , p_adr_type_code                => 'S'
186358   , p_component_type               => l_component_type
186359   , p_component_code               => l_component_code
186360   , p_component_type_code          => l_component_type_code
186361   , p_component_appl_id            => l_component_appl_id
186362   , p_amb_context_code             => l_amb_context_code
186363   , p_side                         => 'NA'
186364   );
186365 
186366 
186367    --
186368    --
186369    END IF;
186370    --
186371    -- Bug 4922099
186372    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
186373           (NVL(l_enc_upg_option, 'N') = 'O')
186374         ) AND
186375         (l_bflow_method_code = 'PRIOR_ENTRY')
186376       )
186377    THEN
186378       IF
186379       --
186380       1 = 2
186381       --
186382       THEN
186383       xla_accounting_err_pkg.build_message
186384                                     (p_appli_s_name            => 'XLA'
186385                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
186386                                     ,p_token_1                 => 'LINE_NUMBER'
186387                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
186388                                     ,p_token_2                 => 'LINE_TYPE_NAME'
186389                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
186390                                                                              l_component_type
186391                                                                             ,l_component_code
186392                                                                             ,l_component_type_code
186393                                                                             ,l_component_appl_id
186394                                                                             ,l_amb_context_code
186395                                                                             ,l_entity_code
186396                                                                             ,l_event_class_code
186397                                                                            )
186398                                     ,p_token_3                 => 'OWNER'
186399                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
186400                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
186401                                                                           ,p_lookup_code    => l_component_type_code
186402                                                                          )
186403                                     ,p_token_4                 => 'PRODUCT_NAME'
186404                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
186405                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
186406                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
186407                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
186408                                     ,p_ae_header_id            =>  NULL
186409                                        );
186410 
186411         IF (C_LEVEL_ERROR>= g_log_level) THEN
186412                  trace
186413                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
186414                       ,p_level    => C_LEVEL_ERROR
186415                       ,p_module   => l_log_module);
186416         END IF;
186417       END IF;
186418    END IF;
186419    --
186420    --
186421    ------------------------------------------------------------------------------------------------
186422    -- 4219869 Business Flow
186423    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
186424    -- Prior Entry.  Currently, the following code is always generated.
186425    ------------------------------------------------------------------------------------------------
186426    XLA_AE_LINES_PKG.ValidateCurrentLine;
186427 
186428    ------------------------------------------------------------------------------------
186429    -- 4219869 Business Flow
186430    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
186431    ------------------------------------------------------------------------------------
186432    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
186433 
186434    ----------------------------------------------------------------------------------
186435    -- 4219869 Business Flow
186436    -- Update journal entry status -- Need to generate this within IF <condition>
186437    ----------------------------------------------------------------------------------
186438    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
186439          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
186440          ,p_balance_type_code => l_balance_type_code
186441          );
186442 
186443    -------------------------------------------------------------------------------------------
186444    -- 4262811 - Generate the Accrual Reversal lines
186445    -------------------------------------------------------------------------------------------
186446    BEGIN
186447       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
186448                               (g_array_event(p_event_id).array_value_num('header_index'));
186449       IF l_acc_rev_flag IS NULL THEN
186450          l_acc_rev_flag := 'N';
186451       END IF;
186452    EXCEPTION
186453       WHEN OTHERS THEN
186454          l_acc_rev_flag := 'N';
186455    END;
186456    --
186457    IF (l_acc_rev_flag = 'Y') THEN
186458 
186459        -- 4645092  ------------------------------------------------------------------------------
186460        -- To allow MPA report to determine if it should generate report process
186461        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
186462        ------------------------------------------------------------------------------------------
186463 
186464        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
186465        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
186466    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
186467    -- call ADRs
186468    -- Bug 4922099
186469    --
186470    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
186471         (NVL(l_actual_upg_option, 'N') = 'O') OR
186472         (NVL(l_enc_upg_option, 'N') = 'O')
186473       )
186474    THEN
186475    NULL;
186476    --
186477    --
186478    
186479   l_ccid := AcctDerRule_6(
186480            p_application_id           => p_application_id
186481          , p_ae_header_id             => l_ae_header_id 
186482 , p_source_11 => p_source_11
186483          , x_transaction_coa_id       => l_adr_transaction_coa_id
186484          , x_accounting_coa_id        => l_adr_accounting_coa_id
186485          , x_value_type_code          => l_adr_value_type_code
186486          , p_side                     => 'NA'
186487    );
186488 
186489    xla_ae_lines_pkg.set_ccid(
186490     p_code_combination_id          => l_ccid
186491   , p_value_type_code              => l_adr_value_type_code
186492   , p_transaction_coa_id           => l_adr_transaction_coa_id
186493   , p_accounting_coa_id            => l_adr_accounting_coa_id
186494   , p_adr_code                     => 'CST_DEFAULT'
186495   , p_adr_type_code                => 'S'
186496   , p_component_type               => l_component_type
186497   , p_component_code               => l_component_code
186498   , p_component_type_code          => l_component_type_code
186499   , p_component_appl_id            => l_component_appl_id
186500   , p_amb_context_code             => l_amb_context_code
186501   , p_side                         => 'NA'
186502   );
186503 
186504 
186505    --
186506    --
186507    END IF;
186508 
186509        --
186510        -- Update the line information that should be overwritten
186511        --
186512        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
186513                                          p_header_num   => 1);
186514        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
186515 
186516        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
186517 
186518        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
186519           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
186520        END IF;
186521 
186522       --
186523       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
186524       --
186525       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
186526           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
186527       ELSE
186528           ---------------------------------------------------------------------------------------------------
186529           -- 4262811a Switch Sign
186530           ---------------------------------------------------------------------------------------------------
186531           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
186532           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
186533                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
186534           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
186535                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
186536           -- 5132302
186537           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
186538                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
186539 
186540       END IF;
186541 
186542       -- 4955764
186543       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
186544       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
186545 
186546 
186547       XLA_AE_LINES_PKG.ValidateCurrentLine;
186548       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
186549 
186550       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
186551                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
186552                ,p_balance_type_code => l_balance_type_code);
186553 
186554    END IF;
186555 
186556    -----------------------------------------------------------------------------------------
186557    -- 4262811 Multiperiod Accounting
186558    -----------------------------------------------------------------------------------------
186559      -- No MPA option is assigned.
186560 
186561 
186562 END IF;
186563 END IF;
186564 --
186565 
186566 --
186567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186568    trace
186569       (p_msg      => 'END of AcctLineType_342'
186570       ,p_level    => C_LEVEL_PROCEDURE
186571       ,p_module   => l_log_module);
186572 END IF;
186573 --
186574 EXCEPTION
186575   WHEN xla_exceptions_pkg.application_exception THEN
186576       RAISE;
186577   WHEN OTHERS THEN
186578        xla_exceptions_pkg.raise_message
186579            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_342');
186580 END AcctLineType_342;
186581 --
186582 
186583 ---------------------------------------
186584 --
186585 -- PRIVATE FUNCTION
186586 --         AcctLineType_343
186587 --
186588 ---------------------------------------
186589 PROCEDURE AcctLineType_343 (
186590   p_application_id        IN NUMBER
186591  ,p_event_id              IN NUMBER
186592  ,p_calculate_acctd_flag  IN VARCHAR2
186593  ,p_calculate_g_l_flag    IN VARCHAR2
186594  ,p_actual_flag           IN OUT VARCHAR2
186595  ,p_balance_type_code     OUT VARCHAR2
186596  ,p_gain_or_loss_ref      OUT VARCHAR2
186597  
186598 --TRANSACTION_ID
186599  , p_source_1            IN NUMBER
186600 --Item Concatenated Segments
186601  , p_source_2            IN VARCHAR2
186602 --Transaction Quantity
186603  , p_source_3            IN NUMBER
186604 --Transaction Unit of Measure Code
186605  , p_source_4            IN VARCHAR2
186606 --Inventory Transaction Type Description
186607  , p_source_5            IN VARCHAR2
186608 --Cost Management Default Account
186609  , p_source_11            IN NUMBER
186610 --DISTRIBUTION_IDENTIFIER
186611  , p_source_84            IN NUMBER
186612 --Distribution Type
186613  , p_source_85            IN VARCHAR2
186614  , p_source_85_meaning    IN VARCHAR2
186615 --Entered Currency Code
186616  , p_source_88            IN VARCHAR2
186617 --Entered Amount
186618  , p_source_91            IN NUMBER
186619 --Currency Conversion Date
186620  , p_source_92            IN DATE
186621 --Currency Conversion Rate
186622  , p_source_93            IN NUMBER
186623 --Currency Conversion Type
186624  , p_source_94            IN VARCHAR2
186625 --Accounted Amount
186626  , p_source_95            IN NUMBER
186627 --Accounting Line Type
186628  , p_source_97            IN NUMBER
186629 )
186630 IS
186631 
186632 l_component_type              VARCHAR2(80);
186633 l_component_code              VARCHAR2(30);
186634 l_component_type_code         VARCHAR2(1);
186635 l_component_appl_id           INTEGER;
186636 l_amb_context_code            VARCHAR2(30);
186637 l_entity_code                 VARCHAR2(30);
186638 l_event_class_code            VARCHAR2(30);
186639 l_ae_header_id                NUMBER;
186640 l_event_type_code             VARCHAR2(30);
186641 l_line_definition_code        VARCHAR2(30);
186642 l_line_definition_owner_code  VARCHAR2(1);
186643 --
186644 -- adr variables
186645 l_segment                     VARCHAR2(30);
186646 l_ccid                        NUMBER;
186647 l_adr_transaction_coa_id      NUMBER;
186648 l_adr_accounting_coa_id       NUMBER;
186649 l_adr_flexfield_segment_code  VARCHAR2(30);
186650 l_adr_flex_value_set_id       NUMBER;
186651 l_adr_value_type_code         VARCHAR2(30);
186652 l_adr_value_combination_id    NUMBER;
186653 l_adr_value_segment_code      VARCHAR2(30);
186654 
186655 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
186656 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
186657 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
186658 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
186659 
186660 -- 4262811 Variables ------------------------------------------------------------------------------------------
186661 l_entered_amt_idx             NUMBER;
186662 l_accted_amt_idx              NUMBER;
186663 l_acc_rev_flag                VARCHAR2(1);
186664 l_accrual_line_num            NUMBER;
186665 l_tmp_amt                     NUMBER;
186666 l_acc_rev_natural_side_code   VARCHAR2(1);
186667 
186668 l_num_entries                 NUMBER;
186669 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
186670 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
186671 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
186672 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
186673 l_recog_line_1                NUMBER;
186674 l_recog_line_2                NUMBER;
186675 
186676 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
186677 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
186678 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
186679 
186680 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
186681 
186682 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
186683 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
186684 
186685 ---------------------------------------------------------------------------------------------------------------
186686 
186687 
186688 --
186689 -- bulk performance
186690 --
186691 l_balance_type_code           VARCHAR2(1);
186692 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
186693 l_log_module                  VARCHAR2(240);
186694 
186695 --
186696 -- Upgrade strategy
186697 --
186698 l_actual_upg_option           VARCHAR2(1);
186699 l_enc_upg_option           VARCHAR2(1);
186700 
186701 --
186702 BEGIN
186703 --
186704 IF g_log_enabled THEN
186705       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_343';
186706 END IF;
186707 --
186708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186709 
186710       trace
186711          (p_msg      => 'BEGIN of AcctLineType_343'
186712          ,p_level    => C_LEVEL_PROCEDURE
186713          ,p_module   => l_log_module);
186714 
186715 END IF;
186716 --
186717 l_component_type             := 'AMB_JLT';
186718 l_component_code             := 'OFFSET';
186719 l_component_type_code        := 'S';
186720 l_component_appl_id          :=  707;
186721 l_amb_context_code           := 'DEFAULT';
186722 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
186723 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
186724 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
186725 l_line_definition_owner_code := 'S';
186726 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
186727 --
186728 l_balance_type_code          := 'A';
186729 l_segment                     := NULL;
186730 l_ccid                        := NULL;
186731 l_adr_transaction_coa_id      := NULL;
186732 l_adr_accounting_coa_id       := NULL;
186733 l_adr_flexfield_segment_code  := NULL;
186734 l_adr_flex_value_set_id       := NULL;
186735 l_adr_value_type_code         := NULL;
186736 l_adr_value_combination_id    := NULL;
186737 l_adr_value_segment_code      := NULL;
186738 
186739 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
186740 l_bflow_class_code           := '';    -- 4219869 Business Flow
186741 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
186742 l_budgetary_control_flag     := 'N';
186743 
186744 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
186745 l_bflow_applied_to_amt       := NULL; -- 5132302
186746 l_entered_amt_idx            := NULL;          -- 4262811
186747 l_accted_amt_idx             := NULL;          -- 4262811
186748 l_acc_rev_flag               := NULL;          -- 4262811
186749 l_accrual_line_num           := NULL;          -- 4262811
186750 l_tmp_amt                    := NULL;          -- 4262811
186751 --
186752  
186753 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
186754     l_balance_type_code <> 'B' THEN
186755 IF NVL(p_source_97,9E125) =  2 AND 
186756 p_source_95 >=  0
186757  THEN 
186758 
186759    --
186760    XLA_AE_LINES_PKG.SetNewLine;
186761 
186762    p_balance_type_code          := l_balance_type_code;
186763    -- set the flag so later we will know whether the gain loss line needs to be created
186764    
186765    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
186766      p_actual_flag :='A';
186767    END IF;
186768 
186769    --
186770    -- bulk performance
186771    --
186772    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
186773                                       p_header_num   => 0); -- 4262811
186774    --
186775    -- set accounting line options
186776    --
186777    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
186778            p_natural_side_code          => 'D'
186779          , p_gain_or_loss_flag          => 'N'
186780          , p_gl_transfer_mode_code      => 'S'
186781          , p_acct_entry_type_code       => 'A'
186782          , p_switch_side_flag           => 'Y'
186783          , p_merge_duplicate_code       => 'N'
186784          );
186785    --
186786    l_acc_rev_natural_side_code := 'C';  -- 4262811
186787    -- 
186788    --
186789    -- set accounting line type info
186790    --
186791    xla_ae_lines_pkg.SetAcctLineType
186792       (p_component_type             => l_component_type
186793       ,p_event_type_code            => l_event_type_code
186794       ,p_line_definition_owner_code => l_line_definition_owner_code
186795       ,p_line_definition_code       => l_line_definition_code
186796       ,p_accounting_line_code       => l_component_code
186797       ,p_accounting_line_type_code  => l_component_type_code
186798       ,p_accounting_line_appl_id    => l_component_appl_id
186799       ,p_amb_context_code           => l_amb_context_code
186800       ,p_entity_code                => l_entity_code
186801       ,p_event_class_code           => l_event_class_code);
186802    --
186803    -- set accounting class
186804    --
186805    xla_ae_lines_pkg.SetAcctClass(
186806            p_accounting_class_code  => 'OFFSET'
186807          , p_ae_header_id           => l_ae_header_id
186808          );
186809 
186810    --
186811    -- set rounding class
186812    --
186813    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
186814                       'OFFSET';
186815 
186816    --
186817    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
186818    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
186819    --
186820    -- bulk performance
186821    --
186822    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
186823 
186824    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
186825       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
186826 
186827    -- 4955764
186828    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
186829       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
186830 
186831    -- 4458381 Public Sector Enh
186832    
186833    --
186834    -- set accounting attributes for the line type
186835    --
186836    l_entered_amt_idx := 3;
186837    l_accted_amt_idx  := 8;
186838    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
186839    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
186840    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
186841    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
186842    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
186843    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
186844    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
186845    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
186846    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
186847    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
186848    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
186849    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
186850    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
186851    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
186852    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
186853    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
186854    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
186855 
186856    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
186857    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
186858 
186859    ---------------------------------------------------------------------------------------------------------------
186860    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
186861    ---------------------------------------------------------------------------------------------------------------
186862    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
186863 
186864    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
186865    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
186866 
186867    IF xla_accounting_cache_pkg.GetValueChar
186868          (p_source_code         => 'LEDGER_CATEGORY_CODE'
186869          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
186870    AND l_bflow_method_code = 'PRIOR_ENTRY'
186871 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
186872    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
186873          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
186874        )
186875    THEN
186876          xla_ae_lines_pkg.BflowUpgEntry
186877            (p_business_method_code    => l_bflow_method_code
186878            ,p_business_class_code     => l_bflow_class_code
186879            ,p_balance_type            => l_balance_type_code);
186880    ELSE
186881       NULL;
186882 -- No business flow processing for business flow method of NONE.
186883    END IF;
186884 
186885    --
186886    -- call analytical criteria
186887    --
186888    
186889    --
186890    -- call description
186891    --
186892    
186893 xla_ae_lines_pkg.SetLineDescription(
186894    p_ae_header_id => l_ae_header_id
186895   ,p_description  => Description_1 (
186896      p_application_id         => p_application_id
186897    , p_ae_header_id           => l_ae_header_id 
186898 , p_source_1 => p_source_1
186899 , p_source_2 => p_source_2
186900 , p_source_3 => p_source_3
186901 , p_source_4 => p_source_4
186902 , p_source_5 => p_source_5
186903    )
186904 );
186905 
186906 
186907    --
186908    -- call ADRs
186909    -- Bug 4922099
186910    --
186911    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
186912         (NVL(l_actual_upg_option, 'N') = 'O') OR
186913         (NVL(l_enc_upg_option, 'N') = 'O')
186914       )
186915    THEN
186916    NULL;
186917    --
186918    --
186919    
186920   l_ccid := AcctDerRule_6(
186921            p_application_id           => p_application_id
186922          , p_ae_header_id             => l_ae_header_id 
186923 , p_source_11 => p_source_11
186924          , x_transaction_coa_id       => l_adr_transaction_coa_id
186925          , x_accounting_coa_id        => l_adr_accounting_coa_id
186926          , x_value_type_code          => l_adr_value_type_code
186927          , p_side                     => 'NA'
186928    );
186929 
186930    xla_ae_lines_pkg.set_ccid(
186931     p_code_combination_id          => l_ccid
186932   , p_value_type_code              => l_adr_value_type_code
186933   , p_transaction_coa_id           => l_adr_transaction_coa_id
186934   , p_accounting_coa_id            => l_adr_accounting_coa_id
186935   , p_adr_code                     => 'CST_DEFAULT'
186936   , p_adr_type_code                => 'S'
186937   , p_component_type               => l_component_type
186938   , p_component_code               => l_component_code
186939   , p_component_type_code          => l_component_type_code
186940   , p_component_appl_id            => l_component_appl_id
186941   , p_amb_context_code             => l_amb_context_code
186942   , p_side                         => 'NA'
186943   );
186944 
186945 
186946    --
186947    --
186948    END IF;
186949    --
186950    -- Bug 4922099
186951    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
186952           (NVL(l_enc_upg_option, 'N') = 'O')
186953         ) AND
186954         (l_bflow_method_code = 'PRIOR_ENTRY')
186955       )
186956    THEN
186957       IF
186958       --
186959       1 = 2
186960       --
186961       THEN
186962       xla_accounting_err_pkg.build_message
186963                                     (p_appli_s_name            => 'XLA'
186964                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
186965                                     ,p_token_1                 => 'LINE_NUMBER'
186966                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
186967                                     ,p_token_2                 => 'LINE_TYPE_NAME'
186968                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
186969                                                                              l_component_type
186970                                                                             ,l_component_code
186971                                                                             ,l_component_type_code
186972                                                                             ,l_component_appl_id
186973                                                                             ,l_amb_context_code
186974                                                                             ,l_entity_code
186975                                                                             ,l_event_class_code
186976                                                                            )
186977                                     ,p_token_3                 => 'OWNER'
186978                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
186979                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
186980                                                                           ,p_lookup_code    => l_component_type_code
186981                                                                          )
186982                                     ,p_token_4                 => 'PRODUCT_NAME'
186983                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
186984                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
186985                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
186986                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
186987                                     ,p_ae_header_id            =>  NULL
186988                                        );
186989 
186990         IF (C_LEVEL_ERROR>= g_log_level) THEN
186991                  trace
186992                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
186993                       ,p_level    => C_LEVEL_ERROR
186994                       ,p_module   => l_log_module);
186995         END IF;
186996       END IF;
186997    END IF;
186998    --
186999    --
187000    ------------------------------------------------------------------------------------------------
187001    -- 4219869 Business Flow
187002    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
187003    -- Prior Entry.  Currently, the following code is always generated.
187004    ------------------------------------------------------------------------------------------------
187005    XLA_AE_LINES_PKG.ValidateCurrentLine;
187006 
187007    ------------------------------------------------------------------------------------
187008    -- 4219869 Business Flow
187009    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
187010    ------------------------------------------------------------------------------------
187011    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
187012 
187013    ----------------------------------------------------------------------------------
187014    -- 4219869 Business Flow
187015    -- Update journal entry status -- Need to generate this within IF <condition>
187016    ----------------------------------------------------------------------------------
187017    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
187018          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
187019          ,p_balance_type_code => l_balance_type_code
187020          );
187021 
187022    -------------------------------------------------------------------------------------------
187023    -- 4262811 - Generate the Accrual Reversal lines
187024    -------------------------------------------------------------------------------------------
187025    BEGIN
187026       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
187027                               (g_array_event(p_event_id).array_value_num('header_index'));
187028       IF l_acc_rev_flag IS NULL THEN
187029          l_acc_rev_flag := 'N';
187030       END IF;
187031    EXCEPTION
187032       WHEN OTHERS THEN
187033          l_acc_rev_flag := 'N';
187034    END;
187035    --
187036    IF (l_acc_rev_flag = 'Y') THEN
187037 
187038        -- 4645092  ------------------------------------------------------------------------------
187039        -- To allow MPA report to determine if it should generate report process
187040        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
187041        ------------------------------------------------------------------------------------------
187042 
187043        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
187044        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
187045    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
187046    -- call ADRs
187047    -- Bug 4922099
187048    --
187049    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
187050         (NVL(l_actual_upg_option, 'N') = 'O') OR
187051         (NVL(l_enc_upg_option, 'N') = 'O')
187052       )
187053    THEN
187054    NULL;
187055    --
187056    --
187057    
187058   l_ccid := AcctDerRule_6(
187059            p_application_id           => p_application_id
187060          , p_ae_header_id             => l_ae_header_id 
187061 , p_source_11 => p_source_11
187062          , x_transaction_coa_id       => l_adr_transaction_coa_id
187063          , x_accounting_coa_id        => l_adr_accounting_coa_id
187064          , x_value_type_code          => l_adr_value_type_code
187065          , p_side                     => 'NA'
187066    );
187067 
187068    xla_ae_lines_pkg.set_ccid(
187069     p_code_combination_id          => l_ccid
187070   , p_value_type_code              => l_adr_value_type_code
187071   , p_transaction_coa_id           => l_adr_transaction_coa_id
187072   , p_accounting_coa_id            => l_adr_accounting_coa_id
187073   , p_adr_code                     => 'CST_DEFAULT'
187074   , p_adr_type_code                => 'S'
187075   , p_component_type               => l_component_type
187076   , p_component_code               => l_component_code
187077   , p_component_type_code          => l_component_type_code
187078   , p_component_appl_id            => l_component_appl_id
187079   , p_amb_context_code             => l_amb_context_code
187080   , p_side                         => 'NA'
187081   );
187082 
187083 
187084    --
187085    --
187086    END IF;
187087 
187088        --
187089        -- Update the line information that should be overwritten
187090        --
187091        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
187092                                          p_header_num   => 1);
187093        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
187094 
187095        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
187096 
187097        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
187098           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
187099        END IF;
187100 
187101       --
187102       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
187103       --
187104       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
187105           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
187106       ELSE
187107           ---------------------------------------------------------------------------------------------------
187108           -- 4262811a Switch Sign
187109           ---------------------------------------------------------------------------------------------------
187110           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
187111           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
187112                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
187113           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
187114                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
187115           -- 5132302
187116           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
187117                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
187118 
187119       END IF;
187120 
187121       -- 4955764
187122       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
187123       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
187124 
187125 
187126       XLA_AE_LINES_PKG.ValidateCurrentLine;
187127       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
187128 
187129       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
187130                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
187131                ,p_balance_type_code => l_balance_type_code);
187132 
187133    END IF;
187134 
187135    -----------------------------------------------------------------------------------------
187136    -- 4262811 Multiperiod Accounting
187137    -----------------------------------------------------------------------------------------
187138      -- No MPA option is assigned.
187139 
187140 
187141 END IF;
187142 END IF;
187143 --
187144 
187145 --
187146 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187147    trace
187148       (p_msg      => 'END of AcctLineType_343'
187149       ,p_level    => C_LEVEL_PROCEDURE
187150       ,p_module   => l_log_module);
187151 END IF;
187152 --
187153 EXCEPTION
187154   WHEN xla_exceptions_pkg.application_exception THEN
187155       RAISE;
187156   WHEN OTHERS THEN
187157        xla_exceptions_pkg.raise_message
187158            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_343');
187159 END AcctLineType_343;
187160 --
187161 
187162 ---------------------------------------
187163 --
187164 -- PRIVATE FUNCTION
187165 --         AcctLineType_344
187166 --
187167 ---------------------------------------
187168 PROCEDURE AcctLineType_344 (
187169   p_application_id        IN NUMBER
187170  ,p_event_id              IN NUMBER
187171  ,p_calculate_acctd_flag  IN VARCHAR2
187172  ,p_calculate_g_l_flag    IN VARCHAR2
187173  ,p_actual_flag           IN OUT VARCHAR2
187174  ,p_balance_type_code     OUT VARCHAR2
187175  ,p_gain_or_loss_ref      OUT VARCHAR2
187176  
187177 --TRANSACTION_ID
187178  , p_source_1            IN NUMBER
187179 --Item Concatenated Segments
187180  , p_source_2            IN VARCHAR2
187181 --Transaction Quantity
187182  , p_source_3            IN NUMBER
187183 --Transaction Unit of Measure Code
187184  , p_source_4            IN VARCHAR2
187185 --Inventory Transaction Type Description
187186  , p_source_5            IN VARCHAR2
187187 --Product Line Accounting Category Expense Account
187188  , p_source_24            IN NUMBER
187189 --Applied to Application ID
187190  , p_source_79            IN NUMBER
187191 --Applied to Distribution Link Type
187192  , p_source_80            IN VARCHAR2
187193 --Applied to Entity Code
187194  , p_source_81            IN VARCHAR2
187195 --Applied To Purchase Document Identifier
187196  , p_source_83            IN NUMBER
187197 --DISTRIBUTION_IDENTIFIER
187198  , p_source_84            IN NUMBER
187199 --Distribution Type
187200  , p_source_85            IN VARCHAR2
187201  , p_source_85_meaning    IN VARCHAR2
187202 --PO Budget Account
187203  , p_source_86            IN NUMBER
187204 --Encumbrance Reversal Amount Entered
187205  , p_source_87            IN NUMBER
187206 --Entered Currency Code
187207  , p_source_88            IN VARCHAR2
187208 --Transaction Encumbrance Reversal Amount
187209  , p_source_89            IN NUMBER
187210 --Entered Amount
187211  , p_source_91            IN NUMBER
187212 --Currency Conversion Date
187213  , p_source_92            IN DATE
187214 --Currency Conversion Rate
187215  , p_source_93            IN NUMBER
187216 --Currency Conversion Type
187217  , p_source_94            IN VARCHAR2
187218 --Accounted Amount
187219  , p_source_95            IN NUMBER
187220 --Purchasing Encumbrance Type Identifier
187221  , p_source_96            IN NUMBER
187222 --Accounting Line Type
187223  , p_source_97            IN NUMBER
187224 --Costing Encumbrance Upgrade Option
187225  , p_source_100            IN VARCHAR2
187226 --TXN_PO_DISTRIBUTION_ID
187227  , p_source_101            IN NUMBER
187228 )
187229 IS
187230 
187231 l_component_type              VARCHAR2(80);
187232 l_component_code              VARCHAR2(30);
187233 l_component_type_code         VARCHAR2(1);
187234 l_component_appl_id           INTEGER;
187235 l_amb_context_code            VARCHAR2(30);
187236 l_entity_code                 VARCHAR2(30);
187237 l_event_class_code            VARCHAR2(30);
187238 l_ae_header_id                NUMBER;
187239 l_event_type_code             VARCHAR2(30);
187240 l_line_definition_code        VARCHAR2(30);
187241 l_line_definition_owner_code  VARCHAR2(1);
187242 --
187243 -- adr variables
187244 l_segment                     VARCHAR2(30);
187245 l_ccid                        NUMBER;
187246 l_adr_transaction_coa_id      NUMBER;
187247 l_adr_accounting_coa_id       NUMBER;
187248 l_adr_flexfield_segment_code  VARCHAR2(30);
187249 l_adr_flex_value_set_id       NUMBER;
187250 l_adr_value_type_code         VARCHAR2(30);
187251 l_adr_value_combination_id    NUMBER;
187252 l_adr_value_segment_code      VARCHAR2(30);
187253 
187254 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
187255 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
187256 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
187257 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
187258 
187259 -- 4262811 Variables ------------------------------------------------------------------------------------------
187260 l_entered_amt_idx             NUMBER;
187261 l_accted_amt_idx              NUMBER;
187262 l_acc_rev_flag                VARCHAR2(1);
187263 l_accrual_line_num            NUMBER;
187264 l_tmp_amt                     NUMBER;
187265 l_acc_rev_natural_side_code   VARCHAR2(1);
187266 
187267 l_num_entries                 NUMBER;
187268 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
187269 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
187270 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
187271 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
187272 l_recog_line_1                NUMBER;
187273 l_recog_line_2                NUMBER;
187274 
187275 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
187276 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
187277 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
187278 
187279 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
187280 
187281 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
187282 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
187283 
187284 ---------------------------------------------------------------------------------------------------------------
187285 
187286 
187287 --
187288 -- bulk performance
187289 --
187290 l_balance_type_code           VARCHAR2(1);
187291 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
187292 l_log_module                  VARCHAR2(240);
187293 
187294 --
187295 -- Upgrade strategy
187296 --
187297 l_actual_upg_option           VARCHAR2(1);
187298 l_enc_upg_option           VARCHAR2(1);
187299 
187300 --
187301 BEGIN
187302 --
187303 IF g_log_enabled THEN
187304       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_344';
187305 END IF;
187306 --
187307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187308 
187309       trace
187310          (p_msg      => 'BEGIN of AcctLineType_344'
187311          ,p_level    => C_LEVEL_PROCEDURE
187312          ,p_module   => l_log_module);
187313 
187314 END IF;
187315 --
187316 l_component_type             := 'AMB_JLT';
187317 l_component_code             := 'OFFSET';
187318 l_component_type_code        := 'S';
187319 l_component_appl_id          :=  707;
187320 l_amb_context_code           := 'DEFAULT';
187321 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
187322 l_event_class_code           := 'PURCHASE_ORDER';
187323 l_event_type_code            := 'PO_DEL_INV';
187324 l_line_definition_owner_code := 'S';
187325 l_line_definition_code       := 'PI_PO_DEL_INV';
187326 --
187327 l_balance_type_code          := 'A';
187328 l_segment                     := NULL;
187329 l_ccid                        := NULL;
187330 l_adr_transaction_coa_id      := NULL;
187331 l_adr_accounting_coa_id       := NULL;
187332 l_adr_flexfield_segment_code  := NULL;
187333 l_adr_flex_value_set_id       := NULL;
187334 l_adr_value_type_code         := NULL;
187335 l_adr_value_combination_id    := NULL;
187336 l_adr_value_segment_code      := NULL;
187337 
187338 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
187339 l_bflow_class_code           := '';    -- 4219869 Business Flow
187340 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
187341 l_budgetary_control_flag     := 'N';
187342 
187343 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
187344 l_bflow_applied_to_amt       := NULL; -- 5132302
187345 l_entered_amt_idx            := NULL;          -- 4262811
187346 l_accted_amt_idx             := NULL;          -- 4262811
187347 l_acc_rev_flag               := NULL;          -- 4262811
187348 l_accrual_line_num           := NULL;          -- 4262811
187349 l_tmp_amt                    := NULL;          -- 4262811
187350 --
187351  
187352 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
187353     l_balance_type_code <> 'B' THEN
187354 IF NVL(p_source_97,9E125) =  2
187355  THEN 
187356 
187357    --
187358    XLA_AE_LINES_PKG.SetNewLine;
187359 
187360    p_balance_type_code          := l_balance_type_code;
187361    -- set the flag so later we will know whether the gain loss line needs to be created
187362    
187363    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
187364      p_actual_flag :='A';
187365    END IF;
187366 
187367    --
187368    -- bulk performance
187369    --
187370    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
187371                                       p_header_num   => 0); -- 4262811
187372    --
187373    -- set accounting line options
187374    --
187375    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
187376            p_natural_side_code          => 'D'
187377          , p_gain_or_loss_flag          => 'N'
187378          , p_gl_transfer_mode_code      => 'S'
187379          , p_acct_entry_type_code       => 'A'
187380          , p_switch_side_flag           => 'Y'
187381          , p_merge_duplicate_code       => 'N'
187382          );
187383    --
187384    l_acc_rev_natural_side_code := 'C';  -- 4262811
187385    -- 
187386    --
187387    -- set accounting line type info
187388    --
187389    xla_ae_lines_pkg.SetAcctLineType
187390       (p_component_type             => l_component_type
187391       ,p_event_type_code            => l_event_type_code
187392       ,p_line_definition_owner_code => l_line_definition_owner_code
187393       ,p_line_definition_code       => l_line_definition_code
187394       ,p_accounting_line_code       => l_component_code
187395       ,p_accounting_line_type_code  => l_component_type_code
187396       ,p_accounting_line_appl_id    => l_component_appl_id
187397       ,p_amb_context_code           => l_amb_context_code
187398       ,p_entity_code                => l_entity_code
187399       ,p_event_class_code           => l_event_class_code);
187400    --
187401    -- set accounting class
187402    --
187403    xla_ae_lines_pkg.SetAcctClass(
187404            p_accounting_class_code  => 'OFFSET'
187405          , p_ae_header_id           => l_ae_header_id
187406          );
187407 
187408    --
187409    -- set rounding class
187410    --
187411    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
187412                       'OFFSET';
187413 
187414    --
187415    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
187416    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
187417    --
187418    -- bulk performance
187419    --
187420    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
187421 
187422    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
187423       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
187424 
187425    -- 4955764
187426    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
187427       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
187428 
187429    -- 4458381 Public Sector Enh
187430    
187431    --
187432    -- set accounting attributes for the line type
187433    --
187434    l_entered_amt_idx := 17;
187435    l_accted_amt_idx  := 22;
187436    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
187437    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
187438    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
187439    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
187440    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
187441    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
187442    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
187443    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
187444    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
187445    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
187446    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
187447    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
187448    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
187449    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
187450    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
187451    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
187452    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
187453    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
187454    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
187455    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
187456    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
187457    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
187458    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
187459    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
187460    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
187461    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
187462    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
187463    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
187464    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
187465    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
187466    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
187467    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
187468    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
187469    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
187470    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
187471    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
187472    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
187473    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
187474    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
187475    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
187476    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
187477    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
187478    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
187479    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
187480    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
187481    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
187482    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
187483    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
187484    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
187485 
187486    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
187487    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
187488 
187489    ---------------------------------------------------------------------------------------------------------------
187490    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
187491    ---------------------------------------------------------------------------------------------------------------
187492    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
187493 
187494    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
187495    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
187496 
187497    IF xla_accounting_cache_pkg.GetValueChar
187498          (p_source_code         => 'LEDGER_CATEGORY_CODE'
187499          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
187500    AND l_bflow_method_code = 'PRIOR_ENTRY'
187501 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
187502    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
187503          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
187504        )
187505    THEN
187506          xla_ae_lines_pkg.BflowUpgEntry
187507            (p_business_method_code    => l_bflow_method_code
187508            ,p_business_class_code     => l_bflow_class_code
187509            ,p_balance_type            => l_balance_type_code);
187510    ELSE
187511       NULL;
187512 -- No business flow processing for business flow method of NONE.
187513    END IF;
187514 
187515    --
187516    -- call analytical criteria
187517    --
187518    
187519    --
187520    -- call description
187521    --
187522    
187523 xla_ae_lines_pkg.SetLineDescription(
187524    p_ae_header_id => l_ae_header_id
187525   ,p_description  => Description_1 (
187526      p_application_id         => p_application_id
187527    , p_ae_header_id           => l_ae_header_id 
187528 , p_source_1 => p_source_1
187529 , p_source_2 => p_source_2
187530 , p_source_3 => p_source_3
187531 , p_source_4 => p_source_4
187532 , p_source_5 => p_source_5
187533    )
187534 );
187535 
187536 
187537    --
187538    -- call ADRs
187539    -- Bug 4922099
187540    --
187541    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
187542         (NVL(l_actual_upg_option, 'N') = 'O') OR
187543         (NVL(l_enc_upg_option, 'N') = 'O')
187544       )
187545    THEN
187546    NULL;
187547    --
187548    --
187549    
187550   l_ccid := AcctDerRule_13(
187551            p_application_id           => p_application_id
187552          , p_ae_header_id             => l_ae_header_id 
187553 , p_source_24 => p_source_24
187554          , x_transaction_coa_id       => l_adr_transaction_coa_id
187555          , x_accounting_coa_id        => l_adr_accounting_coa_id
187556          , x_value_type_code          => l_adr_value_type_code
187557          , p_side                     => 'NA'
187558    );
187559 
187560    xla_ae_lines_pkg.set_ccid(
187561     p_code_combination_id          => l_ccid
187562   , p_value_type_code              => l_adr_value_type_code
187563   , p_transaction_coa_id           => l_adr_transaction_coa_id
187564   , p_accounting_coa_id            => l_adr_accounting_coa_id
187565   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
187566   , p_adr_type_code                => 'S'
187567   , p_component_type               => l_component_type
187568   , p_component_code               => l_component_code
187569   , p_component_type_code          => l_component_type_code
187570   , p_component_appl_id            => l_component_appl_id
187571   , p_amb_context_code             => l_amb_context_code
187572   , p_side                         => 'NA'
187573   );
187574 
187575 
187576    --
187577    --
187578    END IF;
187579    --
187580    -- Bug 4922099
187581    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
187582           (NVL(l_enc_upg_option, 'N') = 'O')
187583         ) AND
187584         (l_bflow_method_code = 'PRIOR_ENTRY')
187585       )
187586    THEN
187587       IF
187588       --
187589       1 = 2
187590       --
187591       THEN
187592       xla_accounting_err_pkg.build_message
187593                                     (p_appli_s_name            => 'XLA'
187594                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
187595                                     ,p_token_1                 => 'LINE_NUMBER'
187596                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
187597                                     ,p_token_2                 => 'LINE_TYPE_NAME'
187598                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
187599                                                                              l_component_type
187600                                                                             ,l_component_code
187601                                                                             ,l_component_type_code
187602                                                                             ,l_component_appl_id
187603                                                                             ,l_amb_context_code
187604                                                                             ,l_entity_code
187605                                                                             ,l_event_class_code
187606                                                                            )
187607                                     ,p_token_3                 => 'OWNER'
187608                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
187609                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
187610                                                                           ,p_lookup_code    => l_component_type_code
187611                                                                          )
187612                                     ,p_token_4                 => 'PRODUCT_NAME'
187613                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
187614                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
187615                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
187616                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
187617                                     ,p_ae_header_id            =>  NULL
187618                                        );
187619 
187620         IF (C_LEVEL_ERROR>= g_log_level) THEN
187621                  trace
187622                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
187623                       ,p_level    => C_LEVEL_ERROR
187624                       ,p_module   => l_log_module);
187625         END IF;
187626       END IF;
187627    END IF;
187628    --
187629    --
187630    ------------------------------------------------------------------------------------------------
187631    -- 4219869 Business Flow
187632    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
187633    -- Prior Entry.  Currently, the following code is always generated.
187634    ------------------------------------------------------------------------------------------------
187635    XLA_AE_LINES_PKG.ValidateCurrentLine;
187636 
187637    ------------------------------------------------------------------------------------
187638    -- 4219869 Business Flow
187639    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
187640    ------------------------------------------------------------------------------------
187641    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
187642 
187643    ----------------------------------------------------------------------------------
187644    -- 4219869 Business Flow
187645    -- Update journal entry status -- Need to generate this within IF <condition>
187646    ----------------------------------------------------------------------------------
187647    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
187648          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
187649          ,p_balance_type_code => l_balance_type_code
187650          );
187651 
187652    -------------------------------------------------------------------------------------------
187653    -- 4262811 - Generate the Accrual Reversal lines
187654    -------------------------------------------------------------------------------------------
187655    BEGIN
187656       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
187657                               (g_array_event(p_event_id).array_value_num('header_index'));
187658       IF l_acc_rev_flag IS NULL THEN
187659          l_acc_rev_flag := 'N';
187660       END IF;
187661    EXCEPTION
187662       WHEN OTHERS THEN
187663          l_acc_rev_flag := 'N';
187664    END;
187665    --
187666    IF (l_acc_rev_flag = 'Y') THEN
187667 
187668        -- 4645092  ------------------------------------------------------------------------------
187669        -- To allow MPA report to determine if it should generate report process
187670        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
187671        ------------------------------------------------------------------------------------------
187672 
187673        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
187674        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
187675    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
187676    -- call ADRs
187677    -- Bug 4922099
187678    --
187679    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
187680         (NVL(l_actual_upg_option, 'N') = 'O') OR
187681         (NVL(l_enc_upg_option, 'N') = 'O')
187682       )
187683    THEN
187684    NULL;
187685    --
187686    --
187687    
187688   l_ccid := AcctDerRule_13(
187689            p_application_id           => p_application_id
187690          , p_ae_header_id             => l_ae_header_id 
187691 , p_source_24 => p_source_24
187692          , x_transaction_coa_id       => l_adr_transaction_coa_id
187693          , x_accounting_coa_id        => l_adr_accounting_coa_id
187694          , x_value_type_code          => l_adr_value_type_code
187695          , p_side                     => 'NA'
187696    );
187697 
187698    xla_ae_lines_pkg.set_ccid(
187699     p_code_combination_id          => l_ccid
187700   , p_value_type_code              => l_adr_value_type_code
187701   , p_transaction_coa_id           => l_adr_transaction_coa_id
187702   , p_accounting_coa_id            => l_adr_accounting_coa_id
187703   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
187704   , p_adr_type_code                => 'S'
187705   , p_component_type               => l_component_type
187706   , p_component_code               => l_component_code
187707   , p_component_type_code          => l_component_type_code
187708   , p_component_appl_id            => l_component_appl_id
187709   , p_amb_context_code             => l_amb_context_code
187710   , p_side                         => 'NA'
187711   );
187712 
187713 
187714    --
187715    --
187716    END IF;
187717 
187718        --
187719        -- Update the line information that should be overwritten
187720        --
187721        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
187722                                          p_header_num   => 1);
187723        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
187724 
187725        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
187726 
187727        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
187728           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
187729        END IF;
187730 
187731       --
187732       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
187733       --
187734       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
187735           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
187736       ELSE
187737           ---------------------------------------------------------------------------------------------------
187738           -- 4262811a Switch Sign
187739           ---------------------------------------------------------------------------------------------------
187740           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
187741           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
187742                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
187743           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
187744                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
187745           -- 5132302
187746           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
187747                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
187748 
187749       END IF;
187750 
187751       -- 4955764
187752       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
187753       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
187754 
187755 
187756       XLA_AE_LINES_PKG.ValidateCurrentLine;
187757       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
187758 
187759       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
187760                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
187761                ,p_balance_type_code => l_balance_type_code);
187762 
187763    END IF;
187764 
187765    -----------------------------------------------------------------------------------------
187766    -- 4262811 Multiperiod Accounting
187767    -----------------------------------------------------------------------------------------
187768      -- No MPA option is assigned.
187769 
187770 
187771 END IF;
187772 END IF;
187773 --
187774 
187775 --
187776 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187777    trace
187778       (p_msg      => 'END of AcctLineType_344'
187779       ,p_level    => C_LEVEL_PROCEDURE
187780       ,p_module   => l_log_module);
187781 END IF;
187782 --
187783 EXCEPTION
187784   WHEN xla_exceptions_pkg.application_exception THEN
187785       RAISE;
187786   WHEN OTHERS THEN
187787        xla_exceptions_pkg.raise_message
187788            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_344');
187789 END AcctLineType_344;
187790 --
187791 
187792 ---------------------------------------
187793 --
187794 -- PRIVATE FUNCTION
187795 --         AcctLineType_345
187796 --
187797 ---------------------------------------
187798 PROCEDURE AcctLineType_345 (
187799   p_application_id        IN NUMBER
187800  ,p_event_id              IN NUMBER
187801  ,p_calculate_acctd_flag  IN VARCHAR2
187802  ,p_calculate_g_l_flag    IN VARCHAR2
187803  ,p_actual_flag           IN OUT VARCHAR2
187804  ,p_balance_type_code     OUT VARCHAR2
187805  ,p_gain_or_loss_ref      OUT VARCHAR2
187806  
187807 --TRANSACTION_ID
187808  , p_source_1            IN NUMBER
187809 --Item Concatenated Segments
187810  , p_source_2            IN VARCHAR2
187811 --Transaction Quantity
187812  , p_source_3            IN NUMBER
187813 --Transaction Unit of Measure Code
187814  , p_source_4            IN VARCHAR2
187815 --Inventory Transaction Type Description
187816  , p_source_5            IN VARCHAR2
187817 --Cost Management Default Account
187818  , p_source_11            IN NUMBER
187819 --DISTRIBUTION_IDENTIFIER
187820  , p_source_84            IN NUMBER
187821 --Distribution Type
187822  , p_source_85            IN VARCHAR2
187823  , p_source_85_meaning    IN VARCHAR2
187824 --Entered Currency Code
187825  , p_source_88            IN VARCHAR2
187826 --Entered Amount
187827  , p_source_91            IN NUMBER
187828 --Currency Conversion Date
187829  , p_source_92            IN DATE
187830 --Currency Conversion Rate
187831  , p_source_93            IN NUMBER
187832 --Currency Conversion Type
187833  , p_source_94            IN VARCHAR2
187834 --Accounted Amount
187835  , p_source_95            IN NUMBER
187836 --Accounting Line Type
187837  , p_source_97            IN NUMBER
187838 )
187839 IS
187840 
187841 l_component_type              VARCHAR2(80);
187842 l_component_code              VARCHAR2(30);
187843 l_component_type_code         VARCHAR2(1);
187844 l_component_appl_id           INTEGER;
187845 l_amb_context_code            VARCHAR2(30);
187846 l_entity_code                 VARCHAR2(30);
187847 l_event_class_code            VARCHAR2(30);
187848 l_ae_header_id                NUMBER;
187849 l_event_type_code             VARCHAR2(30);
187850 l_line_definition_code        VARCHAR2(30);
187851 l_line_definition_owner_code  VARCHAR2(1);
187852 --
187853 -- adr variables
187854 l_segment                     VARCHAR2(30);
187855 l_ccid                        NUMBER;
187856 l_adr_transaction_coa_id      NUMBER;
187857 l_adr_accounting_coa_id       NUMBER;
187858 l_adr_flexfield_segment_code  VARCHAR2(30);
187859 l_adr_flex_value_set_id       NUMBER;
187860 l_adr_value_type_code         VARCHAR2(30);
187861 l_adr_value_combination_id    NUMBER;
187862 l_adr_value_segment_code      VARCHAR2(30);
187863 
187864 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
187865 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
187866 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
187867 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
187868 
187869 -- 4262811 Variables ------------------------------------------------------------------------------------------
187870 l_entered_amt_idx             NUMBER;
187871 l_accted_amt_idx              NUMBER;
187872 l_acc_rev_flag                VARCHAR2(1);
187873 l_accrual_line_num            NUMBER;
187874 l_tmp_amt                     NUMBER;
187875 l_acc_rev_natural_side_code   VARCHAR2(1);
187876 
187877 l_num_entries                 NUMBER;
187878 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
187879 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
187880 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
187881 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
187882 l_recog_line_1                NUMBER;
187883 l_recog_line_2                NUMBER;
187884 
187885 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
187886 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
187887 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
187888 
187889 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
187890 
187891 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
187892 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
187893 
187894 ---------------------------------------------------------------------------------------------------------------
187895 
187896 
187897 --
187898 -- bulk performance
187899 --
187900 l_balance_type_code           VARCHAR2(1);
187901 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
187902 l_log_module                  VARCHAR2(240);
187903 
187904 --
187905 -- Upgrade strategy
187906 --
187907 l_actual_upg_option           VARCHAR2(1);
187908 l_enc_upg_option           VARCHAR2(1);
187909 
187910 --
187911 BEGIN
187912 --
187913 IF g_log_enabled THEN
187914       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_345';
187915 END IF;
187916 --
187917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187918 
187919       trace
187920          (p_msg      => 'BEGIN of AcctLineType_345'
187921          ,p_level    => C_LEVEL_PROCEDURE
187922          ,p_module   => l_log_module);
187923 
187924 END IF;
187925 --
187926 l_component_type             := 'AMB_JLT';
187927 l_component_code             := 'OFFSET';
187928 l_component_type_code        := 'S';
187929 l_component_appl_id          :=  707;
187930 l_amb_context_code           := 'DEFAULT';
187931 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
187932 l_event_class_code           := 'USER_DEFINE';
187933 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
187934 l_line_definition_owner_code := 'S';
187935 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
187936 --
187937 l_balance_type_code          := 'A';
187938 l_segment                     := NULL;
187939 l_ccid                        := NULL;
187940 l_adr_transaction_coa_id      := NULL;
187941 l_adr_accounting_coa_id       := NULL;
187942 l_adr_flexfield_segment_code  := NULL;
187943 l_adr_flex_value_set_id       := NULL;
187944 l_adr_value_type_code         := NULL;
187945 l_adr_value_combination_id    := NULL;
187946 l_adr_value_segment_code      := NULL;
187947 
187948 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
187949 l_bflow_class_code           := '';    -- 4219869 Business Flow
187950 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
187951 l_budgetary_control_flag     := 'N';
187952 
187953 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
187954 l_bflow_applied_to_amt       := NULL; -- 5132302
187955 l_entered_amt_idx            := NULL;          -- 4262811
187956 l_accted_amt_idx             := NULL;          -- 4262811
187957 l_acc_rev_flag               := NULL;          -- 4262811
187958 l_accrual_line_num           := NULL;          -- 4262811
187959 l_tmp_amt                    := NULL;          -- 4262811
187960 --
187961  
187962 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
187963     l_balance_type_code <> 'B' THEN
187964 IF NVL(p_source_97,9E125) =  2
187965  THEN 
187966 
187967    --
187968    XLA_AE_LINES_PKG.SetNewLine;
187969 
187970    p_balance_type_code          := l_balance_type_code;
187971    -- set the flag so later we will know whether the gain loss line needs to be created
187972    
187973    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
187974      p_actual_flag :='A';
187975    END IF;
187976 
187977    --
187978    -- bulk performance
187979    --
187980    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
187981                                       p_header_num   => 0); -- 4262811
187982    --
187983    -- set accounting line options
187984    --
187985    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
187986            p_natural_side_code          => 'D'
187987          , p_gain_or_loss_flag          => 'N'
187988          , p_gl_transfer_mode_code      => 'S'
187989          , p_acct_entry_type_code       => 'A'
187990          , p_switch_side_flag           => 'Y'
187991          , p_merge_duplicate_code       => 'N'
187992          );
187993    --
187994    l_acc_rev_natural_side_code := 'C';  -- 4262811
187995    -- 
187996    --
187997    -- set accounting line type info
187998    --
187999    xla_ae_lines_pkg.SetAcctLineType
188000       (p_component_type             => l_component_type
188001       ,p_event_type_code            => l_event_type_code
188002       ,p_line_definition_owner_code => l_line_definition_owner_code
188003       ,p_line_definition_code       => l_line_definition_code
188004       ,p_accounting_line_code       => l_component_code
188005       ,p_accounting_line_type_code  => l_component_type_code
188006       ,p_accounting_line_appl_id    => l_component_appl_id
188007       ,p_amb_context_code           => l_amb_context_code
188008       ,p_entity_code                => l_entity_code
188009       ,p_event_class_code           => l_event_class_code);
188010    --
188011    -- set accounting class
188012    --
188013    xla_ae_lines_pkg.SetAcctClass(
188014            p_accounting_class_code  => 'OFFSET'
188015          , p_ae_header_id           => l_ae_header_id
188016          );
188017 
188018    --
188019    -- set rounding class
188020    --
188021    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
188022                       'OFFSET';
188023 
188024    --
188025    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
188026    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
188027    --
188028    -- bulk performance
188029    --
188030    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
188031 
188032    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
188033       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
188034 
188035    -- 4955764
188036    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
188037       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
188038 
188039    -- 4458381 Public Sector Enh
188040    
188041    --
188042    -- set accounting attributes for the line type
188043    --
188044    l_entered_amt_idx := 3;
188045    l_accted_amt_idx  := 8;
188046    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
188047    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
188048    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
188049    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
188050    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
188051    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
188052    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
188053    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
188054    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
188055    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
188056    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
188057    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
188058    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
188059    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
188060    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
188061    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
188062    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
188063 
188064    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
188065    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
188066 
188067    ---------------------------------------------------------------------------------------------------------------
188068    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
188069    ---------------------------------------------------------------------------------------------------------------
188070    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
188071 
188072    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
188073    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
188074 
188075    IF xla_accounting_cache_pkg.GetValueChar
188076          (p_source_code         => 'LEDGER_CATEGORY_CODE'
188077          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
188078    AND l_bflow_method_code = 'PRIOR_ENTRY'
188079 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
188080    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
188081          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
188082        )
188083    THEN
188084          xla_ae_lines_pkg.BflowUpgEntry
188085            (p_business_method_code    => l_bflow_method_code
188086            ,p_business_class_code     => l_bflow_class_code
188087            ,p_balance_type            => l_balance_type_code);
188088    ELSE
188089       NULL;
188090 -- No business flow processing for business flow method of NONE.
188091    END IF;
188092 
188093    --
188094    -- call analytical criteria
188095    --
188096    
188097    --
188098    -- call description
188099    --
188100    
188101 xla_ae_lines_pkg.SetLineDescription(
188102    p_ae_header_id => l_ae_header_id
188103   ,p_description  => Description_1 (
188104      p_application_id         => p_application_id
188105    , p_ae_header_id           => l_ae_header_id 
188106 , p_source_1 => p_source_1
188107 , p_source_2 => p_source_2
188108 , p_source_3 => p_source_3
188109 , p_source_4 => p_source_4
188110 , p_source_5 => p_source_5
188111    )
188112 );
188113 
188114 
188115    --
188116    -- call ADRs
188117    -- Bug 4922099
188118    --
188119    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
188120         (NVL(l_actual_upg_option, 'N') = 'O') OR
188121         (NVL(l_enc_upg_option, 'N') = 'O')
188122       )
188123    THEN
188124    NULL;
188125    --
188126    --
188127    
188128   l_ccid := AcctDerRule_6(
188129            p_application_id           => p_application_id
188130          , p_ae_header_id             => l_ae_header_id 
188131 , p_source_11 => p_source_11
188132          , x_transaction_coa_id       => l_adr_transaction_coa_id
188133          , x_accounting_coa_id        => l_adr_accounting_coa_id
188134          , x_value_type_code          => l_adr_value_type_code
188135          , p_side                     => 'NA'
188136    );
188137 
188138    xla_ae_lines_pkg.set_ccid(
188139     p_code_combination_id          => l_ccid
188140   , p_value_type_code              => l_adr_value_type_code
188141   , p_transaction_coa_id           => l_adr_transaction_coa_id
188142   , p_accounting_coa_id            => l_adr_accounting_coa_id
188143   , p_adr_code                     => 'CST_DEFAULT'
188144   , p_adr_type_code                => 'S'
188145   , p_component_type               => l_component_type
188146   , p_component_code               => l_component_code
188147   , p_component_type_code          => l_component_type_code
188148   , p_component_appl_id            => l_component_appl_id
188149   , p_amb_context_code             => l_amb_context_code
188150   , p_side                         => 'NA'
188151   );
188152 
188153 
188154    --
188155    --
188156    END IF;
188157    --
188158    -- Bug 4922099
188159    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
188160           (NVL(l_enc_upg_option, 'N') = 'O')
188161         ) AND
188162         (l_bflow_method_code = 'PRIOR_ENTRY')
188163       )
188164    THEN
188165       IF
188166       --
188167       1 = 2
188168       --
188169       THEN
188170       xla_accounting_err_pkg.build_message
188171                                     (p_appli_s_name            => 'XLA'
188172                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
188173                                     ,p_token_1                 => 'LINE_NUMBER'
188174                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
188175                                     ,p_token_2                 => 'LINE_TYPE_NAME'
188176                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
188177                                                                              l_component_type
188178                                                                             ,l_component_code
188179                                                                             ,l_component_type_code
188180                                                                             ,l_component_appl_id
188181                                                                             ,l_amb_context_code
188182                                                                             ,l_entity_code
188183                                                                             ,l_event_class_code
188184                                                                            )
188185                                     ,p_token_3                 => 'OWNER'
188186                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
188187                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
188188                                                                           ,p_lookup_code    => l_component_type_code
188189                                                                          )
188190                                     ,p_token_4                 => 'PRODUCT_NAME'
188191                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
188192                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
188193                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
188194                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
188195                                     ,p_ae_header_id            =>  NULL
188196                                        );
188197 
188198         IF (C_LEVEL_ERROR>= g_log_level) THEN
188199                  trace
188200                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
188201                       ,p_level    => C_LEVEL_ERROR
188202                       ,p_module   => l_log_module);
188203         END IF;
188204       END IF;
188205    END IF;
188206    --
188207    --
188208    ------------------------------------------------------------------------------------------------
188209    -- 4219869 Business Flow
188210    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
188211    -- Prior Entry.  Currently, the following code is always generated.
188212    ------------------------------------------------------------------------------------------------
188213    XLA_AE_LINES_PKG.ValidateCurrentLine;
188214 
188215    ------------------------------------------------------------------------------------
188216    -- 4219869 Business Flow
188217    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
188218    ------------------------------------------------------------------------------------
188219    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
188220 
188221    ----------------------------------------------------------------------------------
188222    -- 4219869 Business Flow
188223    -- Update journal entry status -- Need to generate this within IF <condition>
188224    ----------------------------------------------------------------------------------
188225    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
188226          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
188227          ,p_balance_type_code => l_balance_type_code
188228          );
188229 
188230    -------------------------------------------------------------------------------------------
188231    -- 4262811 - Generate the Accrual Reversal lines
188232    -------------------------------------------------------------------------------------------
188233    BEGIN
188234       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
188235                               (g_array_event(p_event_id).array_value_num('header_index'));
188236       IF l_acc_rev_flag IS NULL THEN
188237          l_acc_rev_flag := 'N';
188238       END IF;
188239    EXCEPTION
188240       WHEN OTHERS THEN
188241          l_acc_rev_flag := 'N';
188242    END;
188243    --
188244    IF (l_acc_rev_flag = 'Y') THEN
188245 
188246        -- 4645092  ------------------------------------------------------------------------------
188247        -- To allow MPA report to determine if it should generate report process
188248        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
188249        ------------------------------------------------------------------------------------------
188250 
188251        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
188252        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
188253    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
188254    -- call ADRs
188255    -- Bug 4922099
188256    --
188257    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
188258         (NVL(l_actual_upg_option, 'N') = 'O') OR
188259         (NVL(l_enc_upg_option, 'N') = 'O')
188260       )
188261    THEN
188262    NULL;
188263    --
188264    --
188265    
188266   l_ccid := AcctDerRule_6(
188267            p_application_id           => p_application_id
188268          , p_ae_header_id             => l_ae_header_id 
188269 , p_source_11 => p_source_11
188270          , x_transaction_coa_id       => l_adr_transaction_coa_id
188271          , x_accounting_coa_id        => l_adr_accounting_coa_id
188272          , x_value_type_code          => l_adr_value_type_code
188273          , p_side                     => 'NA'
188274    );
188275 
188276    xla_ae_lines_pkg.set_ccid(
188277     p_code_combination_id          => l_ccid
188278   , p_value_type_code              => l_adr_value_type_code
188279   , p_transaction_coa_id           => l_adr_transaction_coa_id
188280   , p_accounting_coa_id            => l_adr_accounting_coa_id
188281   , p_adr_code                     => 'CST_DEFAULT'
188282   , p_adr_type_code                => 'S'
188283   , p_component_type               => l_component_type
188284   , p_component_code               => l_component_code
188285   , p_component_type_code          => l_component_type_code
188286   , p_component_appl_id            => l_component_appl_id
188287   , p_amb_context_code             => l_amb_context_code
188288   , p_side                         => 'NA'
188289   );
188290 
188291 
188292    --
188293    --
188294    END IF;
188295 
188296        --
188297        -- Update the line information that should be overwritten
188298        --
188299        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
188300                                          p_header_num   => 1);
188301        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
188302 
188303        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
188304 
188305        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
188306           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
188307        END IF;
188308 
188309       --
188310       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
188311       --
188312       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
188313           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
188314       ELSE
188315           ---------------------------------------------------------------------------------------------------
188316           -- 4262811a Switch Sign
188317           ---------------------------------------------------------------------------------------------------
188318           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
188319           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
188320                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
188321           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
188322                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
188323           -- 5132302
188324           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
188325                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
188326 
188327       END IF;
188328 
188329       -- 4955764
188330       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
188331       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
188332 
188333 
188334       XLA_AE_LINES_PKG.ValidateCurrentLine;
188335       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
188336 
188337       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
188338                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
188339                ,p_balance_type_code => l_balance_type_code);
188340 
188341    END IF;
188342 
188343    -----------------------------------------------------------------------------------------
188344    -- 4262811 Multiperiod Accounting
188345    -----------------------------------------------------------------------------------------
188346      -- No MPA option is assigned.
188347 
188348 
188349 END IF;
188350 END IF;
188351 --
188352 
188353 --
188354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188355    trace
188356       (p_msg      => 'END of AcctLineType_345'
188357       ,p_level    => C_LEVEL_PROCEDURE
188358       ,p_module   => l_log_module);
188359 END IF;
188360 --
188361 EXCEPTION
188362   WHEN xla_exceptions_pkg.application_exception THEN
188363       RAISE;
188364   WHEN OTHERS THEN
188365        xla_exceptions_pkg.raise_message
188366            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_345');
188367 END AcctLineType_345;
188368 --
188369 
188370 ---------------------------------------
188371 --
188372 -- PRIVATE FUNCTION
188373 --         AcctLineType_346
188374 --
188375 ---------------------------------------
188376 PROCEDURE AcctLineType_346 (
188377   p_application_id        IN NUMBER
188378  ,p_event_id              IN NUMBER
188379  ,p_calculate_acctd_flag  IN VARCHAR2
188380  ,p_calculate_g_l_flag    IN VARCHAR2
188381  ,p_actual_flag           IN OUT VARCHAR2
188382  ,p_balance_type_code     OUT VARCHAR2
188383  ,p_gain_or_loss_ref      OUT VARCHAR2
188384  
188385 --TRANSACTION_ID
188386  , p_source_1            IN NUMBER
188387 --Item Concatenated Segments
188388  , p_source_2            IN VARCHAR2
188389 --Transaction Quantity
188390  , p_source_3            IN NUMBER
188391 --Transaction Unit of Measure Code
188392  , p_source_4            IN VARCHAR2
188393 --Inventory Transaction Type Description
188394  , p_source_5            IN VARCHAR2
188395 --Cost Management Default Account
188396  , p_source_11            IN NUMBER
188397 --DISTRIBUTION_IDENTIFIER
188398  , p_source_84            IN NUMBER
188399 --Distribution Type
188400  , p_source_85            IN VARCHAR2
188401  , p_source_85_meaning    IN VARCHAR2
188402 --Entered Currency Code
188403  , p_source_88            IN VARCHAR2
188404 --Entered Amount
188405  , p_source_91            IN NUMBER
188406 --Currency Conversion Date
188407  , p_source_92            IN DATE
188408 --Currency Conversion Rate
188409  , p_source_93            IN NUMBER
188410 --Currency Conversion Type
188411  , p_source_94            IN VARCHAR2
188412 --Accounted Amount
188413  , p_source_95            IN NUMBER
188414 --Accounting Line Type
188415  , p_source_97            IN NUMBER
188416 )
188417 IS
188418 
188419 l_component_type              VARCHAR2(80);
188420 l_component_code              VARCHAR2(30);
188421 l_component_type_code         VARCHAR2(1);
188422 l_component_appl_id           INTEGER;
188423 l_amb_context_code            VARCHAR2(30);
188424 l_entity_code                 VARCHAR2(30);
188425 l_event_class_code            VARCHAR2(30);
188426 l_ae_header_id                NUMBER;
188427 l_event_type_code             VARCHAR2(30);
188428 l_line_definition_code        VARCHAR2(30);
188429 l_line_definition_owner_code  VARCHAR2(1);
188430 --
188431 -- adr variables
188432 l_segment                     VARCHAR2(30);
188433 l_ccid                        NUMBER;
188434 l_adr_transaction_coa_id      NUMBER;
188435 l_adr_accounting_coa_id       NUMBER;
188436 l_adr_flexfield_segment_code  VARCHAR2(30);
188437 l_adr_flex_value_set_id       NUMBER;
188438 l_adr_value_type_code         VARCHAR2(30);
188439 l_adr_value_combination_id    NUMBER;
188440 l_adr_value_segment_code      VARCHAR2(30);
188441 
188442 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
188443 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
188444 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
188445 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
188446 
188447 -- 4262811 Variables ------------------------------------------------------------------------------------------
188448 l_entered_amt_idx             NUMBER;
188449 l_accted_amt_idx              NUMBER;
188450 l_acc_rev_flag                VARCHAR2(1);
188451 l_accrual_line_num            NUMBER;
188452 l_tmp_amt                     NUMBER;
188453 l_acc_rev_natural_side_code   VARCHAR2(1);
188454 
188455 l_num_entries                 NUMBER;
188456 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
188457 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
188458 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
188459 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
188460 l_recog_line_1                NUMBER;
188461 l_recog_line_2                NUMBER;
188462 
188463 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
188464 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
188465 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
188466 
188467 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
188468 
188469 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
188470 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
188471 
188472 ---------------------------------------------------------------------------------------------------------------
188473 
188474 
188475 --
188476 -- bulk performance
188477 --
188478 l_balance_type_code           VARCHAR2(1);
188479 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
188480 l_log_module                  VARCHAR2(240);
188481 
188482 --
188483 -- Upgrade strategy
188484 --
188485 l_actual_upg_option           VARCHAR2(1);
188486 l_enc_upg_option           VARCHAR2(1);
188487 
188488 --
188489 BEGIN
188490 --
188491 IF g_log_enabled THEN
188492       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_346';
188493 END IF;
188494 --
188495 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188496 
188497       trace
188498          (p_msg      => 'BEGIN of AcctLineType_346'
188499          ,p_level    => C_LEVEL_PROCEDURE
188500          ,p_module   => l_log_module);
188501 
188502 END IF;
188503 --
188504 l_component_type             := 'AMB_JLT';
188505 l_component_code             := 'OFFSET';
188506 l_component_type_code        := 'S';
188507 l_component_appl_id          :=  707;
188508 l_amb_context_code           := 'DEFAULT';
188509 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
188510 l_event_class_code           := 'USER_DEFINE';
188511 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
188512 l_line_definition_owner_code := 'S';
188513 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
188514 --
188515 l_balance_type_code          := 'A';
188516 l_segment                     := NULL;
188517 l_ccid                        := NULL;
188518 l_adr_transaction_coa_id      := NULL;
188519 l_adr_accounting_coa_id       := NULL;
188520 l_adr_flexfield_segment_code  := NULL;
188521 l_adr_flex_value_set_id       := NULL;
188522 l_adr_value_type_code         := NULL;
188523 l_adr_value_combination_id    := NULL;
188524 l_adr_value_segment_code      := NULL;
188525 
188526 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
188527 l_bflow_class_code           := '';    -- 4219869 Business Flow
188528 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
188529 l_budgetary_control_flag     := 'N';
188530 
188531 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
188532 l_bflow_applied_to_amt       := NULL; -- 5132302
188533 l_entered_amt_idx            := NULL;          -- 4262811
188534 l_accted_amt_idx             := NULL;          -- 4262811
188535 l_acc_rev_flag               := NULL;          -- 4262811
188536 l_accrual_line_num           := NULL;          -- 4262811
188537 l_tmp_amt                    := NULL;          -- 4262811
188538 --
188539  
188540 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
188541     l_balance_type_code <> 'B' THEN
188542 IF NVL(p_source_97,9E125) =  2
188543  THEN 
188544 
188545    --
188546    XLA_AE_LINES_PKG.SetNewLine;
188547 
188548    p_balance_type_code          := l_balance_type_code;
188549    -- set the flag so later we will know whether the gain loss line needs to be created
188550    
188551    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
188552      p_actual_flag :='A';
188553    END IF;
188554 
188555    --
188556    -- bulk performance
188557    --
188558    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
188559                                       p_header_num   => 0); -- 4262811
188560    --
188561    -- set accounting line options
188562    --
188563    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
188564            p_natural_side_code          => 'D'
188565          , p_gain_or_loss_flag          => 'N'
188566          , p_gl_transfer_mode_code      => 'S'
188567          , p_acct_entry_type_code       => 'A'
188568          , p_switch_side_flag           => 'Y'
188569          , p_merge_duplicate_code       => 'N'
188570          );
188571    --
188572    l_acc_rev_natural_side_code := 'C';  -- 4262811
188573    -- 
188574    --
188575    -- set accounting line type info
188576    --
188577    xla_ae_lines_pkg.SetAcctLineType
188578       (p_component_type             => l_component_type
188579       ,p_event_type_code            => l_event_type_code
188580       ,p_line_definition_owner_code => l_line_definition_owner_code
188581       ,p_line_definition_code       => l_line_definition_code
188582       ,p_accounting_line_code       => l_component_code
188583       ,p_accounting_line_type_code  => l_component_type_code
188584       ,p_accounting_line_appl_id    => l_component_appl_id
188585       ,p_amb_context_code           => l_amb_context_code
188586       ,p_entity_code                => l_entity_code
188587       ,p_event_class_code           => l_event_class_code);
188588    --
188589    -- set accounting class
188590    --
188591    xla_ae_lines_pkg.SetAcctClass(
188592            p_accounting_class_code  => 'OFFSET'
188593          , p_ae_header_id           => l_ae_header_id
188594          );
188595 
188596    --
188597    -- set rounding class
188598    --
188599    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
188600                       'OFFSET';
188601 
188602    --
188603    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
188604    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
188605    --
188606    -- bulk performance
188607    --
188608    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
188609 
188610    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
188611       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
188612 
188613    -- 4955764
188614    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
188615       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
188616 
188617    -- 4458381 Public Sector Enh
188618    
188619    --
188620    -- set accounting attributes for the line type
188621    --
188622    l_entered_amt_idx := 3;
188623    l_accted_amt_idx  := 8;
188624    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
188625    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
188626    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
188627    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
188628    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
188629    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
188630    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
188631    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
188632    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
188633    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
188634    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
188635    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
188636    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
188637    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
188638    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
188639    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
188640    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
188641 
188642    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
188643    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
188644 
188645    ---------------------------------------------------------------------------------------------------------------
188646    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
188647    ---------------------------------------------------------------------------------------------------------------
188648    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
188649 
188650    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
188651    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
188652 
188653    IF xla_accounting_cache_pkg.GetValueChar
188654          (p_source_code         => 'LEDGER_CATEGORY_CODE'
188655          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
188656    AND l_bflow_method_code = 'PRIOR_ENTRY'
188657 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
188658    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
188659          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
188660        )
188661    THEN
188662          xla_ae_lines_pkg.BflowUpgEntry
188663            (p_business_method_code    => l_bflow_method_code
188664            ,p_business_class_code     => l_bflow_class_code
188665            ,p_balance_type            => l_balance_type_code);
188666    ELSE
188667       NULL;
188668 -- No business flow processing for business flow method of NONE.
188669    END IF;
188670 
188671    --
188672    -- call analytical criteria
188673    --
188674    
188675    --
188676    -- call description
188677    --
188678    
188679 xla_ae_lines_pkg.SetLineDescription(
188680    p_ae_header_id => l_ae_header_id
188681   ,p_description  => Description_1 (
188682      p_application_id         => p_application_id
188683    , p_ae_header_id           => l_ae_header_id 
188684 , p_source_1 => p_source_1
188685 , p_source_2 => p_source_2
188686 , p_source_3 => p_source_3
188687 , p_source_4 => p_source_4
188688 , p_source_5 => p_source_5
188689    )
188690 );
188691 
188692 
188693    --
188694    -- call ADRs
188695    -- Bug 4922099
188696    --
188697    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
188698         (NVL(l_actual_upg_option, 'N') = 'O') OR
188699         (NVL(l_enc_upg_option, 'N') = 'O')
188700       )
188701    THEN
188702    NULL;
188703    --
188704    --
188705    
188706   l_ccid := AcctDerRule_6(
188707            p_application_id           => p_application_id
188708          , p_ae_header_id             => l_ae_header_id 
188709 , p_source_11 => p_source_11
188710          , x_transaction_coa_id       => l_adr_transaction_coa_id
188711          , x_accounting_coa_id        => l_adr_accounting_coa_id
188712          , x_value_type_code          => l_adr_value_type_code
188713          , p_side                     => 'NA'
188714    );
188715 
188716    xla_ae_lines_pkg.set_ccid(
188717     p_code_combination_id          => l_ccid
188718   , p_value_type_code              => l_adr_value_type_code
188719   , p_transaction_coa_id           => l_adr_transaction_coa_id
188720   , p_accounting_coa_id            => l_adr_accounting_coa_id
188721   , p_adr_code                     => 'CST_DEFAULT'
188722   , p_adr_type_code                => 'S'
188723   , p_component_type               => l_component_type
188724   , p_component_code               => l_component_code
188725   , p_component_type_code          => l_component_type_code
188726   , p_component_appl_id            => l_component_appl_id
188727   , p_amb_context_code             => l_amb_context_code
188728   , p_side                         => 'NA'
188729   );
188730 
188731 
188732    --
188733    --
188734    END IF;
188735    --
188736    -- Bug 4922099
188737    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
188738           (NVL(l_enc_upg_option, 'N') = 'O')
188739         ) AND
188740         (l_bflow_method_code = 'PRIOR_ENTRY')
188741       )
188742    THEN
188743       IF
188744       --
188745       1 = 2
188746       --
188747       THEN
188748       xla_accounting_err_pkg.build_message
188749                                     (p_appli_s_name            => 'XLA'
188750                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
188751                                     ,p_token_1                 => 'LINE_NUMBER'
188752                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
188753                                     ,p_token_2                 => 'LINE_TYPE_NAME'
188754                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
188755                                                                              l_component_type
188756                                                                             ,l_component_code
188757                                                                             ,l_component_type_code
188758                                                                             ,l_component_appl_id
188759                                                                             ,l_amb_context_code
188760                                                                             ,l_entity_code
188761                                                                             ,l_event_class_code
188762                                                                            )
188763                                     ,p_token_3                 => 'OWNER'
188764                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
188765                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
188766                                                                           ,p_lookup_code    => l_component_type_code
188767                                                                          )
188768                                     ,p_token_4                 => 'PRODUCT_NAME'
188769                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
188770                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
188771                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
188772                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
188773                                     ,p_ae_header_id            =>  NULL
188774                                        );
188775 
188776         IF (C_LEVEL_ERROR>= g_log_level) THEN
188777                  trace
188778                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
188779                       ,p_level    => C_LEVEL_ERROR
188780                       ,p_module   => l_log_module);
188781         END IF;
188782       END IF;
188783    END IF;
188784    --
188785    --
188786    ------------------------------------------------------------------------------------------------
188787    -- 4219869 Business Flow
188788    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
188789    -- Prior Entry.  Currently, the following code is always generated.
188790    ------------------------------------------------------------------------------------------------
188791    XLA_AE_LINES_PKG.ValidateCurrentLine;
188792 
188793    ------------------------------------------------------------------------------------
188794    -- 4219869 Business Flow
188795    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
188796    ------------------------------------------------------------------------------------
188797    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
188798 
188799    ----------------------------------------------------------------------------------
188800    -- 4219869 Business Flow
188801    -- Update journal entry status -- Need to generate this within IF <condition>
188802    ----------------------------------------------------------------------------------
188803    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
188804          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
188805          ,p_balance_type_code => l_balance_type_code
188806          );
188807 
188808    -------------------------------------------------------------------------------------------
188809    -- 4262811 - Generate the Accrual Reversal lines
188810    -------------------------------------------------------------------------------------------
188811    BEGIN
188812       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
188813                               (g_array_event(p_event_id).array_value_num('header_index'));
188814       IF l_acc_rev_flag IS NULL THEN
188815          l_acc_rev_flag := 'N';
188816       END IF;
188817    EXCEPTION
188818       WHEN OTHERS THEN
188819          l_acc_rev_flag := 'N';
188820    END;
188821    --
188822    IF (l_acc_rev_flag = 'Y') THEN
188823 
188824        -- 4645092  ------------------------------------------------------------------------------
188825        -- To allow MPA report to determine if it should generate report process
188826        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
188827        ------------------------------------------------------------------------------------------
188828 
188829        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
188830        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
188831    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
188832    -- call ADRs
188833    -- Bug 4922099
188834    --
188835    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
188836         (NVL(l_actual_upg_option, 'N') = 'O') OR
188837         (NVL(l_enc_upg_option, 'N') = 'O')
188838       )
188839    THEN
188840    NULL;
188841    --
188842    --
188843    
188844   l_ccid := AcctDerRule_6(
188845            p_application_id           => p_application_id
188846          , p_ae_header_id             => l_ae_header_id 
188847 , p_source_11 => p_source_11
188848          , x_transaction_coa_id       => l_adr_transaction_coa_id
188849          , x_accounting_coa_id        => l_adr_accounting_coa_id
188850          , x_value_type_code          => l_adr_value_type_code
188851          , p_side                     => 'NA'
188852    );
188853 
188854    xla_ae_lines_pkg.set_ccid(
188855     p_code_combination_id          => l_ccid
188856   , p_value_type_code              => l_adr_value_type_code
188857   , p_transaction_coa_id           => l_adr_transaction_coa_id
188858   , p_accounting_coa_id            => l_adr_accounting_coa_id
188859   , p_adr_code                     => 'CST_DEFAULT'
188860   , p_adr_type_code                => 'S'
188861   , p_component_type               => l_component_type
188862   , p_component_code               => l_component_code
188863   , p_component_type_code          => l_component_type_code
188864   , p_component_appl_id            => l_component_appl_id
188865   , p_amb_context_code             => l_amb_context_code
188866   , p_side                         => 'NA'
188867   );
188868 
188869 
188870    --
188871    --
188872    END IF;
188873 
188874        --
188875        -- Update the line information that should be overwritten
188876        --
188877        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
188878                                          p_header_num   => 1);
188879        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
188880 
188881        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
188882 
188883        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
188884           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
188885        END IF;
188886 
188887       --
188888       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
188889       --
188890       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
188891           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
188892       ELSE
188893           ---------------------------------------------------------------------------------------------------
188894           -- 4262811a Switch Sign
188895           ---------------------------------------------------------------------------------------------------
188896           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
188897           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
188898                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
188899           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
188900                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
188901           -- 5132302
188902           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
188903                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
188904 
188905       END IF;
188906 
188907       -- 4955764
188908       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
188909       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
188910 
188911 
188912       XLA_AE_LINES_PKG.ValidateCurrentLine;
188913       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
188914 
188915       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
188916                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
188917                ,p_balance_type_code => l_balance_type_code);
188918 
188919    END IF;
188920 
188921    -----------------------------------------------------------------------------------------
188922    -- 4262811 Multiperiod Accounting
188923    -----------------------------------------------------------------------------------------
188924      -- No MPA option is assigned.
188925 
188926 
188927 END IF;
188928 END IF;
188929 --
188930 
188931 --
188932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188933    trace
188934       (p_msg      => 'END of AcctLineType_346'
188935       ,p_level    => C_LEVEL_PROCEDURE
188936       ,p_module   => l_log_module);
188937 END IF;
188938 --
188939 EXCEPTION
188940   WHEN xla_exceptions_pkg.application_exception THEN
188941       RAISE;
188942   WHEN OTHERS THEN
188943        xla_exceptions_pkg.raise_message
188944            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_346');
188945 END AcctLineType_346;
188946 --
188947 
188948 ---------------------------------------
188949 --
188950 -- PRIVATE FUNCTION
188951 --         AcctLineType_347
188952 --
188953 ---------------------------------------
188954 PROCEDURE AcctLineType_347 (
188955   p_application_id        IN NUMBER
188956  ,p_event_id              IN NUMBER
188957  ,p_calculate_acctd_flag  IN VARCHAR2
188958  ,p_calculate_g_l_flag    IN VARCHAR2
188959  ,p_actual_flag           IN OUT VARCHAR2
188960  ,p_balance_type_code     OUT VARCHAR2
188961  ,p_gain_or_loss_ref      OUT VARCHAR2
188962  
188963 --TRANSACTION_ID
188964  , p_source_1            IN NUMBER
188965 --Item Concatenated Segments
188966  , p_source_2            IN VARCHAR2
188967 --Transaction Quantity
188968  , p_source_3            IN NUMBER
188969 --Transaction Unit of Measure Code
188970  , p_source_4            IN VARCHAR2
188971 --Inventory Transaction Type Description
188972  , p_source_5            IN VARCHAR2
188973 --Cost Management Default Account
188974  , p_source_11            IN NUMBER
188975 --DISTRIBUTION_IDENTIFIER
188976  , p_source_84            IN NUMBER
188977 --Distribution Type
188978  , p_source_85            IN VARCHAR2
188979  , p_source_85_meaning    IN VARCHAR2
188980 --Entered Currency Code
188981  , p_source_88            IN VARCHAR2
188982 --Entered Amount
188983  , p_source_91            IN NUMBER
188984 --Currency Conversion Date
188985  , p_source_92            IN DATE
188986 --Currency Conversion Rate
188987  , p_source_93            IN NUMBER
188988 --Currency Conversion Type
188989  , p_source_94            IN VARCHAR2
188990 --Accounted Amount
188991  , p_source_95            IN NUMBER
188992 --Accounting Line Type
188993  , p_source_97            IN NUMBER
188994 )
188995 IS
188996 
188997 l_component_type              VARCHAR2(80);
188998 l_component_code              VARCHAR2(30);
188999 l_component_type_code         VARCHAR2(1);
189000 l_component_appl_id           INTEGER;
189001 l_amb_context_code            VARCHAR2(30);
189002 l_entity_code                 VARCHAR2(30);
189003 l_event_class_code            VARCHAR2(30);
189004 l_ae_header_id                NUMBER;
189005 l_event_type_code             VARCHAR2(30);
189006 l_line_definition_code        VARCHAR2(30);
189007 l_line_definition_owner_code  VARCHAR2(1);
189008 --
189009 -- adr variables
189010 l_segment                     VARCHAR2(30);
189011 l_ccid                        NUMBER;
189012 l_adr_transaction_coa_id      NUMBER;
189013 l_adr_accounting_coa_id       NUMBER;
189014 l_adr_flexfield_segment_code  VARCHAR2(30);
189015 l_adr_flex_value_set_id       NUMBER;
189016 l_adr_value_type_code         VARCHAR2(30);
189017 l_adr_value_combination_id    NUMBER;
189018 l_adr_value_segment_code      VARCHAR2(30);
189019 
189020 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
189021 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
189022 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
189023 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
189024 
189025 -- 4262811 Variables ------------------------------------------------------------------------------------------
189026 l_entered_amt_idx             NUMBER;
189027 l_accted_amt_idx              NUMBER;
189028 l_acc_rev_flag                VARCHAR2(1);
189029 l_accrual_line_num            NUMBER;
189030 l_tmp_amt                     NUMBER;
189031 l_acc_rev_natural_side_code   VARCHAR2(1);
189032 
189033 l_num_entries                 NUMBER;
189034 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
189035 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
189036 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
189037 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
189038 l_recog_line_1                NUMBER;
189039 l_recog_line_2                NUMBER;
189040 
189041 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
189042 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
189043 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
189044 
189045 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
189046 
189047 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
189048 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
189049 
189050 ---------------------------------------------------------------------------------------------------------------
189051 
189052 
189053 --
189054 -- bulk performance
189055 --
189056 l_balance_type_code           VARCHAR2(1);
189057 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
189058 l_log_module                  VARCHAR2(240);
189059 
189060 --
189061 -- Upgrade strategy
189062 --
189063 l_actual_upg_option           VARCHAR2(1);
189064 l_enc_upg_option           VARCHAR2(1);
189065 
189066 --
189067 BEGIN
189068 --
189069 IF g_log_enabled THEN
189070       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_347';
189071 END IF;
189072 --
189073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189074 
189075       trace
189076          (p_msg      => 'BEGIN of AcctLineType_347'
189077          ,p_level    => C_LEVEL_PROCEDURE
189078          ,p_module   => l_log_module);
189079 
189080 END IF;
189081 --
189082 l_component_type             := 'AMB_JLT';
189083 l_component_code             := 'OFFSET';
189084 l_component_type_code        := 'S';
189085 l_component_appl_id          :=  707;
189086 l_amb_context_code           := 'DEFAULT';
189087 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
189088 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
189089 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
189090 l_line_definition_owner_code := 'S';
189091 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
189092 --
189093 l_balance_type_code          := 'A';
189094 l_segment                     := NULL;
189095 l_ccid                        := NULL;
189096 l_adr_transaction_coa_id      := NULL;
189097 l_adr_accounting_coa_id       := NULL;
189098 l_adr_flexfield_segment_code  := NULL;
189099 l_adr_flex_value_set_id       := NULL;
189100 l_adr_value_type_code         := NULL;
189101 l_adr_value_combination_id    := NULL;
189102 l_adr_value_segment_code      := NULL;
189103 
189104 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
189105 l_bflow_class_code           := '';    -- 4219869 Business Flow
189106 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
189107 l_budgetary_control_flag     := 'N';
189108 
189109 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
189110 l_bflow_applied_to_amt       := NULL; -- 5132302
189111 l_entered_amt_idx            := NULL;          -- 4262811
189112 l_accted_amt_idx             := NULL;          -- 4262811
189113 l_acc_rev_flag               := NULL;          -- 4262811
189114 l_accrual_line_num           := NULL;          -- 4262811
189115 l_tmp_amt                    := NULL;          -- 4262811
189116 --
189117  
189118 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
189119     l_balance_type_code <> 'B' THEN
189120 IF NVL(p_source_97,9E125) =  2 AND 
189121 p_source_95 <=  0
189122  THEN 
189123 
189124    --
189125    XLA_AE_LINES_PKG.SetNewLine;
189126 
189127    p_balance_type_code          := l_balance_type_code;
189128    -- set the flag so later we will know whether the gain loss line needs to be created
189129    
189130    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
189131      p_actual_flag :='A';
189132    END IF;
189133 
189134    --
189135    -- bulk performance
189136    --
189137    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
189138                                       p_header_num   => 0); -- 4262811
189139    --
189140    -- set accounting line options
189141    --
189142    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
189143            p_natural_side_code          => 'D'
189144          , p_gain_or_loss_flag          => 'N'
189145          , p_gl_transfer_mode_code      => 'S'
189146          , p_acct_entry_type_code       => 'A'
189147          , p_switch_side_flag           => 'Y'
189148          , p_merge_duplicate_code       => 'N'
189149          );
189150    --
189151    l_acc_rev_natural_side_code := 'C';  -- 4262811
189152    -- 
189153    --
189154    -- set accounting line type info
189155    --
189156    xla_ae_lines_pkg.SetAcctLineType
189157       (p_component_type             => l_component_type
189158       ,p_event_type_code            => l_event_type_code
189159       ,p_line_definition_owner_code => l_line_definition_owner_code
189160       ,p_line_definition_code       => l_line_definition_code
189161       ,p_accounting_line_code       => l_component_code
189162       ,p_accounting_line_type_code  => l_component_type_code
189163       ,p_accounting_line_appl_id    => l_component_appl_id
189164       ,p_amb_context_code           => l_amb_context_code
189165       ,p_entity_code                => l_entity_code
189166       ,p_event_class_code           => l_event_class_code);
189167    --
189168    -- set accounting class
189169    --
189170    xla_ae_lines_pkg.SetAcctClass(
189171            p_accounting_class_code  => 'OFFSET'
189172          , p_ae_header_id           => l_ae_header_id
189173          );
189174 
189175    --
189176    -- set rounding class
189177    --
189178    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
189179                       'OFFSET';
189180 
189181    --
189182    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
189183    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
189184    --
189185    -- bulk performance
189186    --
189187    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
189188 
189189    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
189190       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
189191 
189192    -- 4955764
189193    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
189194       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
189195 
189196    -- 4458381 Public Sector Enh
189197    
189198    --
189199    -- set accounting attributes for the line type
189200    --
189201    l_entered_amt_idx := 3;
189202    l_accted_amt_idx  := 8;
189203    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
189204    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
189205    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
189206    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
189207    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
189208    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
189209    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
189210    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
189211    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
189212    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
189213    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
189214    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
189215    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
189216    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
189217    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
189218    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
189219    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
189220 
189221    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
189222    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
189223 
189224    ---------------------------------------------------------------------------------------------------------------
189225    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
189226    ---------------------------------------------------------------------------------------------------------------
189227    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
189228 
189229    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
189230    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
189231 
189232    IF xla_accounting_cache_pkg.GetValueChar
189233          (p_source_code         => 'LEDGER_CATEGORY_CODE'
189234          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
189235    AND l_bflow_method_code = 'PRIOR_ENTRY'
189236 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
189237    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
189238          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
189239        )
189240    THEN
189241          xla_ae_lines_pkg.BflowUpgEntry
189242            (p_business_method_code    => l_bflow_method_code
189243            ,p_business_class_code     => l_bflow_class_code
189244            ,p_balance_type            => l_balance_type_code);
189245    ELSE
189246       NULL;
189247 -- No business flow processing for business flow method of NONE.
189248    END IF;
189249 
189250    --
189251    -- call analytical criteria
189252    --
189253    
189254    --
189255    -- call description
189256    --
189257    
189258 xla_ae_lines_pkg.SetLineDescription(
189259    p_ae_header_id => l_ae_header_id
189260   ,p_description  => Description_1 (
189261      p_application_id         => p_application_id
189262    , p_ae_header_id           => l_ae_header_id 
189263 , p_source_1 => p_source_1
189264 , p_source_2 => p_source_2
189265 , p_source_3 => p_source_3
189266 , p_source_4 => p_source_4
189267 , p_source_5 => p_source_5
189268    )
189269 );
189270 
189271 
189272    --
189273    -- call ADRs
189274    -- Bug 4922099
189275    --
189276    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
189277         (NVL(l_actual_upg_option, 'N') = 'O') OR
189278         (NVL(l_enc_upg_option, 'N') = 'O')
189279       )
189280    THEN
189281    NULL;
189282    --
189283    --
189284    
189285   l_ccid := AcctDerRule_6(
189286            p_application_id           => p_application_id
189287          , p_ae_header_id             => l_ae_header_id 
189288 , p_source_11 => p_source_11
189289          , x_transaction_coa_id       => l_adr_transaction_coa_id
189290          , x_accounting_coa_id        => l_adr_accounting_coa_id
189291          , x_value_type_code          => l_adr_value_type_code
189292          , p_side                     => 'NA'
189293    );
189294 
189295    xla_ae_lines_pkg.set_ccid(
189296     p_code_combination_id          => l_ccid
189297   , p_value_type_code              => l_adr_value_type_code
189298   , p_transaction_coa_id           => l_adr_transaction_coa_id
189299   , p_accounting_coa_id            => l_adr_accounting_coa_id
189300   , p_adr_code                     => 'CST_DEFAULT'
189301   , p_adr_type_code                => 'S'
189302   , p_component_type               => l_component_type
189303   , p_component_code               => l_component_code
189304   , p_component_type_code          => l_component_type_code
189305   , p_component_appl_id            => l_component_appl_id
189306   , p_amb_context_code             => l_amb_context_code
189307   , p_side                         => 'NA'
189308   );
189309 
189310 
189311    --
189312    --
189313    END IF;
189314    --
189315    -- Bug 4922099
189316    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
189317           (NVL(l_enc_upg_option, 'N') = 'O')
189318         ) AND
189319         (l_bflow_method_code = 'PRIOR_ENTRY')
189320       )
189321    THEN
189322       IF
189323       --
189324       1 = 2
189325       --
189326       THEN
189327       xla_accounting_err_pkg.build_message
189328                                     (p_appli_s_name            => 'XLA'
189329                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
189330                                     ,p_token_1                 => 'LINE_NUMBER'
189331                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
189332                                     ,p_token_2                 => 'LINE_TYPE_NAME'
189333                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
189334                                                                              l_component_type
189335                                                                             ,l_component_code
189336                                                                             ,l_component_type_code
189337                                                                             ,l_component_appl_id
189338                                                                             ,l_amb_context_code
189339                                                                             ,l_entity_code
189340                                                                             ,l_event_class_code
189341                                                                            )
189342                                     ,p_token_3                 => 'OWNER'
189343                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
189344                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
189345                                                                           ,p_lookup_code    => l_component_type_code
189346                                                                          )
189347                                     ,p_token_4                 => 'PRODUCT_NAME'
189348                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
189349                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
189350                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
189351                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
189352                                     ,p_ae_header_id            =>  NULL
189353                                        );
189354 
189355         IF (C_LEVEL_ERROR>= g_log_level) THEN
189356                  trace
189357                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
189358                       ,p_level    => C_LEVEL_ERROR
189359                       ,p_module   => l_log_module);
189360         END IF;
189361       END IF;
189362    END IF;
189363    --
189364    --
189365    ------------------------------------------------------------------------------------------------
189366    -- 4219869 Business Flow
189367    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
189368    -- Prior Entry.  Currently, the following code is always generated.
189369    ------------------------------------------------------------------------------------------------
189370    XLA_AE_LINES_PKG.ValidateCurrentLine;
189371 
189372    ------------------------------------------------------------------------------------
189373    -- 4219869 Business Flow
189374    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
189375    ------------------------------------------------------------------------------------
189376    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
189377 
189378    ----------------------------------------------------------------------------------
189379    -- 4219869 Business Flow
189380    -- Update journal entry status -- Need to generate this within IF <condition>
189381    ----------------------------------------------------------------------------------
189382    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
189383          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
189384          ,p_balance_type_code => l_balance_type_code
189385          );
189386 
189387    -------------------------------------------------------------------------------------------
189388    -- 4262811 - Generate the Accrual Reversal lines
189389    -------------------------------------------------------------------------------------------
189390    BEGIN
189391       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
189392                               (g_array_event(p_event_id).array_value_num('header_index'));
189393       IF l_acc_rev_flag IS NULL THEN
189394          l_acc_rev_flag := 'N';
189395       END IF;
189396    EXCEPTION
189397       WHEN OTHERS THEN
189398          l_acc_rev_flag := 'N';
189399    END;
189400    --
189401    IF (l_acc_rev_flag = 'Y') THEN
189402 
189403        -- 4645092  ------------------------------------------------------------------------------
189404        -- To allow MPA report to determine if it should generate report process
189405        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
189406        ------------------------------------------------------------------------------------------
189407 
189408        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
189409        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
189410    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
189411    -- call ADRs
189412    -- Bug 4922099
189413    --
189414    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
189415         (NVL(l_actual_upg_option, 'N') = 'O') OR
189416         (NVL(l_enc_upg_option, 'N') = 'O')
189417       )
189418    THEN
189419    NULL;
189420    --
189421    --
189422    
189423   l_ccid := AcctDerRule_6(
189424            p_application_id           => p_application_id
189425          , p_ae_header_id             => l_ae_header_id 
189426 , p_source_11 => p_source_11
189427          , x_transaction_coa_id       => l_adr_transaction_coa_id
189428          , x_accounting_coa_id        => l_adr_accounting_coa_id
189429          , x_value_type_code          => l_adr_value_type_code
189430          , p_side                     => 'NA'
189431    );
189432 
189433    xla_ae_lines_pkg.set_ccid(
189434     p_code_combination_id          => l_ccid
189435   , p_value_type_code              => l_adr_value_type_code
189436   , p_transaction_coa_id           => l_adr_transaction_coa_id
189437   , p_accounting_coa_id            => l_adr_accounting_coa_id
189438   , p_adr_code                     => 'CST_DEFAULT'
189439   , p_adr_type_code                => 'S'
189440   , p_component_type               => l_component_type
189441   , p_component_code               => l_component_code
189442   , p_component_type_code          => l_component_type_code
189443   , p_component_appl_id            => l_component_appl_id
189444   , p_amb_context_code             => l_amb_context_code
189445   , p_side                         => 'NA'
189446   );
189447 
189448 
189449    --
189450    --
189451    END IF;
189452 
189453        --
189454        -- Update the line information that should be overwritten
189455        --
189456        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
189457                                          p_header_num   => 1);
189458        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
189459 
189460        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
189461 
189462        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
189463           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
189464        END IF;
189465 
189466       --
189467       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
189468       --
189469       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
189470           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
189471       ELSE
189472           ---------------------------------------------------------------------------------------------------
189473           -- 4262811a Switch Sign
189474           ---------------------------------------------------------------------------------------------------
189475           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
189476           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
189477                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
189478           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
189479                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
189480           -- 5132302
189481           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
189482                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
189483 
189484       END IF;
189485 
189486       -- 4955764
189487       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
189488       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
189489 
189490 
189491       XLA_AE_LINES_PKG.ValidateCurrentLine;
189492       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
189493 
189494       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
189495                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
189496                ,p_balance_type_code => l_balance_type_code);
189497 
189498    END IF;
189499 
189500    -----------------------------------------------------------------------------------------
189501    -- 4262811 Multiperiod Accounting
189502    -----------------------------------------------------------------------------------------
189503      -- No MPA option is assigned.
189504 
189505 
189506 END IF;
189507 END IF;
189508 --
189509 
189510 --
189511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189512    trace
189513       (p_msg      => 'END of AcctLineType_347'
189514       ,p_level    => C_LEVEL_PROCEDURE
189515       ,p_module   => l_log_module);
189516 END IF;
189517 --
189518 EXCEPTION
189519   WHEN xla_exceptions_pkg.application_exception THEN
189520       RAISE;
189521   WHEN OTHERS THEN
189522        xla_exceptions_pkg.raise_message
189523            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_347');
189524 END AcctLineType_347;
189525 --
189526 
189527 ---------------------------------------
189528 --
189529 -- PRIVATE FUNCTION
189530 --         AcctLineType_348
189531 --
189532 ---------------------------------------
189533 PROCEDURE AcctLineType_348 (
189534   p_application_id        IN NUMBER
189535  ,p_event_id              IN NUMBER
189536  ,p_calculate_acctd_flag  IN VARCHAR2
189537  ,p_calculate_g_l_flag    IN VARCHAR2
189538  ,p_actual_flag           IN OUT VARCHAR2
189539  ,p_balance_type_code     OUT VARCHAR2
189540  ,p_gain_or_loss_ref      OUT VARCHAR2
189541  
189542 --TRANSACTION_ID
189543  , p_source_1            IN NUMBER
189544 --Item Concatenated Segments
189545  , p_source_2            IN VARCHAR2
189546 --Transaction Quantity
189547  , p_source_3            IN NUMBER
189548 --Transaction Unit of Measure Code
189549  , p_source_4            IN VARCHAR2
189550 --Inventory Transaction Type Description
189551  , p_source_5            IN VARCHAR2
189552 --Cost Management Default Account
189553  , p_source_11            IN NUMBER
189554 --DISTRIBUTION_IDENTIFIER
189555  , p_source_84            IN NUMBER
189556 --Distribution Type
189557  , p_source_85            IN VARCHAR2
189558  , p_source_85_meaning    IN VARCHAR2
189559 --Entered Currency Code
189560  , p_source_88            IN VARCHAR2
189561 --Entered Amount
189562  , p_source_91            IN NUMBER
189563 --Currency Conversion Date
189564  , p_source_92            IN DATE
189565 --Currency Conversion Rate
189566  , p_source_93            IN NUMBER
189567 --Currency Conversion Type
189568  , p_source_94            IN VARCHAR2
189569 --Accounted Amount
189570  , p_source_95            IN NUMBER
189571 --Accounting Line Type
189572  , p_source_97            IN NUMBER
189573 )
189574 IS
189575 
189576 l_component_type              VARCHAR2(80);
189577 l_component_code              VARCHAR2(30);
189578 l_component_type_code         VARCHAR2(1);
189579 l_component_appl_id           INTEGER;
189580 l_amb_context_code            VARCHAR2(30);
189581 l_entity_code                 VARCHAR2(30);
189582 l_event_class_code            VARCHAR2(30);
189583 l_ae_header_id                NUMBER;
189584 l_event_type_code             VARCHAR2(30);
189585 l_line_definition_code        VARCHAR2(30);
189586 l_line_definition_owner_code  VARCHAR2(1);
189587 --
189588 -- adr variables
189589 l_segment                     VARCHAR2(30);
189590 l_ccid                        NUMBER;
189591 l_adr_transaction_coa_id      NUMBER;
189592 l_adr_accounting_coa_id       NUMBER;
189593 l_adr_flexfield_segment_code  VARCHAR2(30);
189594 l_adr_flex_value_set_id       NUMBER;
189595 l_adr_value_type_code         VARCHAR2(30);
189596 l_adr_value_combination_id    NUMBER;
189597 l_adr_value_segment_code      VARCHAR2(30);
189598 
189599 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
189600 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
189601 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
189602 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
189603 
189604 -- 4262811 Variables ------------------------------------------------------------------------------------------
189605 l_entered_amt_idx             NUMBER;
189606 l_accted_amt_idx              NUMBER;
189607 l_acc_rev_flag                VARCHAR2(1);
189608 l_accrual_line_num            NUMBER;
189609 l_tmp_amt                     NUMBER;
189610 l_acc_rev_natural_side_code   VARCHAR2(1);
189611 
189612 l_num_entries                 NUMBER;
189613 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
189614 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
189615 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
189616 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
189617 l_recog_line_1                NUMBER;
189618 l_recog_line_2                NUMBER;
189619 
189620 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
189621 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
189622 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
189623 
189624 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
189625 
189626 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
189627 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
189628 
189629 ---------------------------------------------------------------------------------------------------------------
189630 
189631 
189632 --
189633 -- bulk performance
189634 --
189635 l_balance_type_code           VARCHAR2(1);
189636 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
189637 l_log_module                  VARCHAR2(240);
189638 
189639 --
189640 -- Upgrade strategy
189641 --
189642 l_actual_upg_option           VARCHAR2(1);
189643 l_enc_upg_option           VARCHAR2(1);
189644 
189645 --
189646 BEGIN
189647 --
189648 IF g_log_enabled THEN
189649       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_348';
189650 END IF;
189651 --
189652 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189653 
189654       trace
189655          (p_msg      => 'BEGIN of AcctLineType_348'
189656          ,p_level    => C_LEVEL_PROCEDURE
189657          ,p_module   => l_log_module);
189658 
189659 END IF;
189660 --
189661 l_component_type             := 'AMB_JLT';
189662 l_component_code             := 'OFFSET';
189663 l_component_type_code        := 'S';
189664 l_component_appl_id          :=  707;
189665 l_amb_context_code           := 'DEFAULT';
189666 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
189667 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
189668 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
189669 l_line_definition_owner_code := 'S';
189670 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
189671 --
189672 l_balance_type_code          := 'A';
189673 l_segment                     := NULL;
189674 l_ccid                        := NULL;
189675 l_adr_transaction_coa_id      := NULL;
189676 l_adr_accounting_coa_id       := NULL;
189677 l_adr_flexfield_segment_code  := NULL;
189678 l_adr_flex_value_set_id       := NULL;
189679 l_adr_value_type_code         := NULL;
189680 l_adr_value_combination_id    := NULL;
189681 l_adr_value_segment_code      := NULL;
189682 
189683 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
189684 l_bflow_class_code           := '';    -- 4219869 Business Flow
189685 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
189686 l_budgetary_control_flag     := 'N';
189687 
189688 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
189689 l_bflow_applied_to_amt       := NULL; -- 5132302
189690 l_entered_amt_idx            := NULL;          -- 4262811
189691 l_accted_amt_idx             := NULL;          -- 4262811
189692 l_acc_rev_flag               := NULL;          -- 4262811
189693 l_accrual_line_num           := NULL;          -- 4262811
189694 l_tmp_amt                    := NULL;          -- 4262811
189695 --
189696  
189697 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
189698     l_balance_type_code <> 'B' THEN
189699 IF NVL(p_source_97,9E125) =  2
189700  THEN 
189701 
189702    --
189703    XLA_AE_LINES_PKG.SetNewLine;
189704 
189705    p_balance_type_code          := l_balance_type_code;
189706    -- set the flag so later we will know whether the gain loss line needs to be created
189707    
189708    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
189709      p_actual_flag :='A';
189710    END IF;
189711 
189712    --
189713    -- bulk performance
189714    --
189715    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
189716                                       p_header_num   => 0); -- 4262811
189717    --
189718    -- set accounting line options
189719    --
189720    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
189721            p_natural_side_code          => 'D'
189722          , p_gain_or_loss_flag          => 'N'
189723          , p_gl_transfer_mode_code      => 'S'
189724          , p_acct_entry_type_code       => 'A'
189725          , p_switch_side_flag           => 'Y'
189726          , p_merge_duplicate_code       => 'N'
189727          );
189728    --
189729    l_acc_rev_natural_side_code := 'C';  -- 4262811
189730    -- 
189731    --
189732    -- set accounting line type info
189733    --
189734    xla_ae_lines_pkg.SetAcctLineType
189735       (p_component_type             => l_component_type
189736       ,p_event_type_code            => l_event_type_code
189737       ,p_line_definition_owner_code => l_line_definition_owner_code
189738       ,p_line_definition_code       => l_line_definition_code
189739       ,p_accounting_line_code       => l_component_code
189740       ,p_accounting_line_type_code  => l_component_type_code
189741       ,p_accounting_line_appl_id    => l_component_appl_id
189742       ,p_amb_context_code           => l_amb_context_code
189743       ,p_entity_code                => l_entity_code
189744       ,p_event_class_code           => l_event_class_code);
189745    --
189746    -- set accounting class
189747    --
189748    xla_ae_lines_pkg.SetAcctClass(
189749            p_accounting_class_code  => 'OFFSET'
189750          , p_ae_header_id           => l_ae_header_id
189751          );
189752 
189753    --
189754    -- set rounding class
189755    --
189756    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
189757                       'OFFSET';
189758 
189759    --
189760    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
189761    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
189762    --
189763    -- bulk performance
189764    --
189765    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
189766 
189767    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
189768       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
189769 
189770    -- 4955764
189771    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
189772       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
189773 
189774    -- 4458381 Public Sector Enh
189775    
189776    --
189777    -- set accounting attributes for the line type
189778    --
189779    l_entered_amt_idx := 3;
189780    l_accted_amt_idx  := 8;
189781    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
189782    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
189783    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
189784    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
189785    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
189786    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
189787    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
189788    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
189789    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
189790    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
189791    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
189792    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
189793    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
189794    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
189795    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
189796    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
189797    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
189798 
189799    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
189800    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
189801 
189802    ---------------------------------------------------------------------------------------------------------------
189803    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
189804    ---------------------------------------------------------------------------------------------------------------
189805    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
189806 
189807    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
189808    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
189809 
189810    IF xla_accounting_cache_pkg.GetValueChar
189811          (p_source_code         => 'LEDGER_CATEGORY_CODE'
189812          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
189813    AND l_bflow_method_code = 'PRIOR_ENTRY'
189814 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
189815    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
189816          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
189817        )
189818    THEN
189819          xla_ae_lines_pkg.BflowUpgEntry
189820            (p_business_method_code    => l_bflow_method_code
189821            ,p_business_class_code     => l_bflow_class_code
189822            ,p_balance_type            => l_balance_type_code);
189823    ELSE
189824       NULL;
189825 -- No business flow processing for business flow method of NONE.
189826    END IF;
189827 
189828    --
189829    -- call analytical criteria
189830    --
189831    
189832    --
189833    -- call description
189834    --
189835    
189836 xla_ae_lines_pkg.SetLineDescription(
189837    p_ae_header_id => l_ae_header_id
189838   ,p_description  => Description_1 (
189839      p_application_id         => p_application_id
189840    , p_ae_header_id           => l_ae_header_id 
189841 , p_source_1 => p_source_1
189842 , p_source_2 => p_source_2
189843 , p_source_3 => p_source_3
189844 , p_source_4 => p_source_4
189845 , p_source_5 => p_source_5
189846    )
189847 );
189848 
189849 
189850    --
189851    -- call ADRs
189852    -- Bug 4922099
189853    --
189854    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
189855         (NVL(l_actual_upg_option, 'N') = 'O') OR
189856         (NVL(l_enc_upg_option, 'N') = 'O')
189857       )
189858    THEN
189859    NULL;
189860    --
189861    --
189862    
189863   l_ccid := AcctDerRule_6(
189864            p_application_id           => p_application_id
189865          , p_ae_header_id             => l_ae_header_id 
189866 , p_source_11 => p_source_11
189867          , x_transaction_coa_id       => l_adr_transaction_coa_id
189868          , x_accounting_coa_id        => l_adr_accounting_coa_id
189869          , x_value_type_code          => l_adr_value_type_code
189870          , p_side                     => 'NA'
189871    );
189872 
189873    xla_ae_lines_pkg.set_ccid(
189874     p_code_combination_id          => l_ccid
189875   , p_value_type_code              => l_adr_value_type_code
189876   , p_transaction_coa_id           => l_adr_transaction_coa_id
189877   , p_accounting_coa_id            => l_adr_accounting_coa_id
189878   , p_adr_code                     => 'CST_DEFAULT'
189879   , p_adr_type_code                => 'S'
189880   , p_component_type               => l_component_type
189881   , p_component_code               => l_component_code
189882   , p_component_type_code          => l_component_type_code
189883   , p_component_appl_id            => l_component_appl_id
189884   , p_amb_context_code             => l_amb_context_code
189885   , p_side                         => 'NA'
189886   );
189887 
189888 
189889    --
189890    --
189891    END IF;
189892    --
189893    -- Bug 4922099
189894    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
189895           (NVL(l_enc_upg_option, 'N') = 'O')
189896         ) AND
189897         (l_bflow_method_code = 'PRIOR_ENTRY')
189898       )
189899    THEN
189900       IF
189901       --
189902       1 = 2
189903       --
189904       THEN
189905       xla_accounting_err_pkg.build_message
189906                                     (p_appli_s_name            => 'XLA'
189907                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
189908                                     ,p_token_1                 => 'LINE_NUMBER'
189909                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
189910                                     ,p_token_2                 => 'LINE_TYPE_NAME'
189911                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
189912                                                                              l_component_type
189913                                                                             ,l_component_code
189914                                                                             ,l_component_type_code
189915                                                                             ,l_component_appl_id
189916                                                                             ,l_amb_context_code
189917                                                                             ,l_entity_code
189918                                                                             ,l_event_class_code
189919                                                                            )
189920                                     ,p_token_3                 => 'OWNER'
189921                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
189922                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
189923                                                                           ,p_lookup_code    => l_component_type_code
189924                                                                          )
189925                                     ,p_token_4                 => 'PRODUCT_NAME'
189926                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
189927                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
189928                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
189929                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
189930                                     ,p_ae_header_id            =>  NULL
189931                                        );
189932 
189933         IF (C_LEVEL_ERROR>= g_log_level) THEN
189934                  trace
189935                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
189936                       ,p_level    => C_LEVEL_ERROR
189937                       ,p_module   => l_log_module);
189938         END IF;
189939       END IF;
189940    END IF;
189941    --
189942    --
189943    ------------------------------------------------------------------------------------------------
189944    -- 4219869 Business Flow
189945    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
189946    -- Prior Entry.  Currently, the following code is always generated.
189947    ------------------------------------------------------------------------------------------------
189948    XLA_AE_LINES_PKG.ValidateCurrentLine;
189949 
189950    ------------------------------------------------------------------------------------
189951    -- 4219869 Business Flow
189952    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
189953    ------------------------------------------------------------------------------------
189954    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
189955 
189956    ----------------------------------------------------------------------------------
189957    -- 4219869 Business Flow
189958    -- Update journal entry status -- Need to generate this within IF <condition>
189959    ----------------------------------------------------------------------------------
189960    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
189961          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
189962          ,p_balance_type_code => l_balance_type_code
189963          );
189964 
189965    -------------------------------------------------------------------------------------------
189966    -- 4262811 - Generate the Accrual Reversal lines
189967    -------------------------------------------------------------------------------------------
189968    BEGIN
189969       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
189970                               (g_array_event(p_event_id).array_value_num('header_index'));
189971       IF l_acc_rev_flag IS NULL THEN
189972          l_acc_rev_flag := 'N';
189973       END IF;
189974    EXCEPTION
189975       WHEN OTHERS THEN
189976          l_acc_rev_flag := 'N';
189977    END;
189978    --
189979    IF (l_acc_rev_flag = 'Y') THEN
189980 
189981        -- 4645092  ------------------------------------------------------------------------------
189982        -- To allow MPA report to determine if it should generate report process
189983        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
189984        ------------------------------------------------------------------------------------------
189985 
189986        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
189987        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
189988    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
189989    -- call ADRs
189990    -- Bug 4922099
189991    --
189992    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
189993         (NVL(l_actual_upg_option, 'N') = 'O') OR
189994         (NVL(l_enc_upg_option, 'N') = 'O')
189995       )
189996    THEN
189997    NULL;
189998    --
189999    --
190000    
190001   l_ccid := AcctDerRule_6(
190002            p_application_id           => p_application_id
190003          , p_ae_header_id             => l_ae_header_id 
190004 , p_source_11 => p_source_11
190005          , x_transaction_coa_id       => l_adr_transaction_coa_id
190006          , x_accounting_coa_id        => l_adr_accounting_coa_id
190007          , x_value_type_code          => l_adr_value_type_code
190008          , p_side                     => 'NA'
190009    );
190010 
190011    xla_ae_lines_pkg.set_ccid(
190012     p_code_combination_id          => l_ccid
190013   , p_value_type_code              => l_adr_value_type_code
190014   , p_transaction_coa_id           => l_adr_transaction_coa_id
190015   , p_accounting_coa_id            => l_adr_accounting_coa_id
190016   , p_adr_code                     => 'CST_DEFAULT'
190017   , p_adr_type_code                => 'S'
190018   , p_component_type               => l_component_type
190019   , p_component_code               => l_component_code
190020   , p_component_type_code          => l_component_type_code
190021   , p_component_appl_id            => l_component_appl_id
190022   , p_amb_context_code             => l_amb_context_code
190023   , p_side                         => 'NA'
190024   );
190025 
190026 
190027    --
190028    --
190029    END IF;
190030 
190031        --
190032        -- Update the line information that should be overwritten
190033        --
190034        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
190035                                          p_header_num   => 1);
190036        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
190037 
190038        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
190039 
190040        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
190041           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
190042        END IF;
190043 
190044       --
190045       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
190046       --
190047       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
190048           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
190049       ELSE
190050           ---------------------------------------------------------------------------------------------------
190051           -- 4262811a Switch Sign
190052           ---------------------------------------------------------------------------------------------------
190053           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
190054           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
190055                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
190056           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
190057                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
190058           -- 5132302
190059           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
190060                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
190061 
190062       END IF;
190063 
190064       -- 4955764
190065       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
190066       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
190067 
190068 
190069       XLA_AE_LINES_PKG.ValidateCurrentLine;
190070       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
190071 
190072       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
190073                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
190074                ,p_balance_type_code => l_balance_type_code);
190075 
190076    END IF;
190077 
190078    -----------------------------------------------------------------------------------------
190079    -- 4262811 Multiperiod Accounting
190080    -----------------------------------------------------------------------------------------
190081      -- No MPA option is assigned.
190082 
190083 
190084 END IF;
190085 END IF;
190086 --
190087 
190088 --
190089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190090    trace
190091       (p_msg      => 'END of AcctLineType_348'
190092       ,p_level    => C_LEVEL_PROCEDURE
190093       ,p_module   => l_log_module);
190094 END IF;
190095 --
190096 EXCEPTION
190097   WHEN xla_exceptions_pkg.application_exception THEN
190098       RAISE;
190099   WHEN OTHERS THEN
190100        xla_exceptions_pkg.raise_message
190101            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_348');
190102 END AcctLineType_348;
190103 --
190104 
190105 ---------------------------------------
190106 --
190107 -- PRIVATE FUNCTION
190108 --         AcctLineType_349
190109 --
190110 ---------------------------------------
190111 PROCEDURE AcctLineType_349 (
190112   p_application_id        IN NUMBER
190113  ,p_event_id              IN NUMBER
190114  ,p_calculate_acctd_flag  IN VARCHAR2
190115  ,p_calculate_g_l_flag    IN VARCHAR2
190116  ,p_actual_flag           IN OUT VARCHAR2
190117  ,p_balance_type_code     OUT VARCHAR2
190118  ,p_gain_or_loss_ref      OUT VARCHAR2
190119  
190120 --TRANSACTION_ID
190121  , p_source_1            IN NUMBER
190122 --Item Concatenated Segments
190123  , p_source_2            IN VARCHAR2
190124 --Transaction Quantity
190125  , p_source_3            IN NUMBER
190126 --Transaction Unit of Measure Code
190127  , p_source_4            IN VARCHAR2
190128 --Inventory Transaction Type Description
190129  , p_source_5            IN VARCHAR2
190130 --Transaction Distribution Account
190131  , p_source_20            IN NUMBER
190132 --Transaction Action Name
190133  , p_source_62            IN NUMBER
190134  , p_source_62_meaning    IN VARCHAR2
190135 --DISTRIBUTION_IDENTIFIER
190136  , p_source_84            IN NUMBER
190137 --Distribution Type
190138  , p_source_85            IN VARCHAR2
190139  , p_source_85_meaning    IN VARCHAR2
190140 --Entered Currency Code
190141  , p_source_88            IN VARCHAR2
190142 --Entered Amount
190143  , p_source_91            IN NUMBER
190144 --Currency Conversion Date
190145  , p_source_92            IN DATE
190146 --Currency Conversion Rate
190147  , p_source_93            IN NUMBER
190148 --Currency Conversion Type
190149  , p_source_94            IN VARCHAR2
190150 --Accounted Amount
190151  , p_source_95            IN NUMBER
190152 --Accounting Line Type
190153  , p_source_97            IN NUMBER
190154 )
190155 IS
190156 
190157 l_component_type              VARCHAR2(80);
190158 l_component_code              VARCHAR2(30);
190159 l_component_type_code         VARCHAR2(1);
190160 l_component_appl_id           INTEGER;
190161 l_amb_context_code            VARCHAR2(30);
190162 l_entity_code                 VARCHAR2(30);
190163 l_event_class_code            VARCHAR2(30);
190164 l_ae_header_id                NUMBER;
190165 l_event_type_code             VARCHAR2(30);
190166 l_line_definition_code        VARCHAR2(30);
190167 l_line_definition_owner_code  VARCHAR2(1);
190168 --
190169 -- adr variables
190170 l_segment                     VARCHAR2(30);
190171 l_ccid                        NUMBER;
190172 l_adr_transaction_coa_id      NUMBER;
190173 l_adr_accounting_coa_id       NUMBER;
190174 l_adr_flexfield_segment_code  VARCHAR2(30);
190175 l_adr_flex_value_set_id       NUMBER;
190176 l_adr_value_type_code         VARCHAR2(30);
190177 l_adr_value_combination_id    NUMBER;
190178 l_adr_value_segment_code      VARCHAR2(30);
190179 
190180 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
190181 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
190182 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
190183 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
190184 
190185 -- 4262811 Variables ------------------------------------------------------------------------------------------
190186 l_entered_amt_idx             NUMBER;
190187 l_accted_amt_idx              NUMBER;
190188 l_acc_rev_flag                VARCHAR2(1);
190189 l_accrual_line_num            NUMBER;
190190 l_tmp_amt                     NUMBER;
190191 l_acc_rev_natural_side_code   VARCHAR2(1);
190192 
190193 l_num_entries                 NUMBER;
190194 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
190195 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
190196 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
190197 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
190198 l_recog_line_1                NUMBER;
190199 l_recog_line_2                NUMBER;
190200 
190201 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
190202 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
190203 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
190204 
190205 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
190206 
190207 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
190208 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
190209 
190210 ---------------------------------------------------------------------------------------------------------------
190211 
190212 
190213 --
190214 -- bulk performance
190215 --
190216 l_balance_type_code           VARCHAR2(1);
190217 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
190218 l_log_module                  VARCHAR2(240);
190219 
190220 --
190221 -- Upgrade strategy
190222 --
190223 l_actual_upg_option           VARCHAR2(1);
190224 l_enc_upg_option           VARCHAR2(1);
190225 
190226 --
190227 BEGIN
190228 --
190229 IF g_log_enabled THEN
190230       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_349';
190231 END IF;
190232 --
190233 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190234 
190235       trace
190236          (p_msg      => 'BEGIN of AcctLineType_349'
190237          ,p_level    => C_LEVEL_PROCEDURE
190238          ,p_module   => l_log_module);
190239 
190240 END IF;
190241 --
190242 l_component_type             := 'AMB_JLT';
190243 l_component_code             := 'OFFSET';
190244 l_component_type_code        := 'S';
190245 l_component_appl_id          :=  707;
190246 l_amb_context_code           := 'DEFAULT';
190247 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
190248 l_event_class_code           := 'LOG_INTERCOMPANY';
190249 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
190250 l_line_definition_owner_code := 'S';
190251 l_line_definition_code       := 'PI_LOG_IC_RCPT_RETURN';
190252 --
190253 l_balance_type_code          := 'A';
190254 l_segment                     := NULL;
190255 l_ccid                        := NULL;
190256 l_adr_transaction_coa_id      := NULL;
190257 l_adr_accounting_coa_id       := NULL;
190258 l_adr_flexfield_segment_code  := NULL;
190259 l_adr_flex_value_set_id       := NULL;
190260 l_adr_value_type_code         := NULL;
190261 l_adr_value_combination_id    := NULL;
190262 l_adr_value_segment_code      := NULL;
190263 
190264 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
190265 l_bflow_class_code           := '';    -- 4219869 Business Flow
190266 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
190267 l_budgetary_control_flag     := 'N';
190268 
190269 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
190270 l_bflow_applied_to_amt       := NULL; -- 5132302
190271 l_entered_amt_idx            := NULL;          -- 4262811
190272 l_accted_amt_idx             := NULL;          -- 4262811
190273 l_acc_rev_flag               := NULL;          -- 4262811
190274 l_accrual_line_num           := NULL;          -- 4262811
190275 l_tmp_amt                    := NULL;          -- 4262811
190276 --
190277  
190278 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
190279     l_balance_type_code <> 'B' THEN
190280 IF NVL(p_source_97,9E125) =  2 AND 
190281 ((p_source_95 <=  0 AND 
190282 NVL(p_source_62,9E125) =  13) OR 
190283 (p_source_95 <=  0 AND 
190284 NVL(p_source_62,9E125) =  9) OR 
190285 (p_source_95 >=  0 AND 
190286 NVL(p_source_62,9E125) =  10) OR 
190287 NVL(p_source_62,9E125) =  10 OR 
190288 NVL(p_source_62,9E125) =  13)
190289  THEN 
190290 
190291    --
190292    XLA_AE_LINES_PKG.SetNewLine;
190293 
190294    p_balance_type_code          := l_balance_type_code;
190295    -- set the flag so later we will know whether the gain loss line needs to be created
190296    
190297    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
190298      p_actual_flag :='A';
190299    END IF;
190300 
190301    --
190302    -- bulk performance
190303    --
190304    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
190305                                       p_header_num   => 0); -- 4262811
190306    --
190307    -- set accounting line options
190308    --
190309    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
190310            p_natural_side_code          => 'D'
190311          , p_gain_or_loss_flag          => 'N'
190312          , p_gl_transfer_mode_code      => 'S'
190313          , p_acct_entry_type_code       => 'A'
190314          , p_switch_side_flag           => 'Y'
190315          , p_merge_duplicate_code       => 'N'
190316          );
190317    --
190318    l_acc_rev_natural_side_code := 'C';  -- 4262811
190319    -- 
190320    --
190321    -- set accounting line type info
190322    --
190323    xla_ae_lines_pkg.SetAcctLineType
190324       (p_component_type             => l_component_type
190325       ,p_event_type_code            => l_event_type_code
190326       ,p_line_definition_owner_code => l_line_definition_owner_code
190327       ,p_line_definition_code       => l_line_definition_code
190328       ,p_accounting_line_code       => l_component_code
190329       ,p_accounting_line_type_code  => l_component_type_code
190330       ,p_accounting_line_appl_id    => l_component_appl_id
190331       ,p_amb_context_code           => l_amb_context_code
190332       ,p_entity_code                => l_entity_code
190333       ,p_event_class_code           => l_event_class_code);
190334    --
190335    -- set accounting class
190336    --
190337    xla_ae_lines_pkg.SetAcctClass(
190338            p_accounting_class_code  => 'OFFSET'
190339          , p_ae_header_id           => l_ae_header_id
190340          );
190341 
190342    --
190343    -- set rounding class
190344    --
190345    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
190346                       'OFFSET';
190347 
190348    --
190349    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
190350    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
190351    --
190352    -- bulk performance
190353    --
190354    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
190355 
190356    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
190357       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
190358 
190359    -- 4955764
190360    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
190361       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
190362 
190363    -- 4458381 Public Sector Enh
190364    
190365    --
190366    -- set accounting attributes for the line type
190367    --
190368    l_entered_amt_idx := 3;
190369    l_accted_amt_idx  := 8;
190370    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
190371    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
190372    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
190373    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
190374    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
190375    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
190376    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
190377    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
190378    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
190379    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
190380    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
190381    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
190382    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
190383    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
190384    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
190385    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
190386    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
190387 
190388    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
190389    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
190390 
190391    ---------------------------------------------------------------------------------------------------------------
190392    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
190393    ---------------------------------------------------------------------------------------------------------------
190394    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
190395 
190396    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
190397    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
190398 
190399    IF xla_accounting_cache_pkg.GetValueChar
190400          (p_source_code         => 'LEDGER_CATEGORY_CODE'
190401          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
190402    AND l_bflow_method_code = 'PRIOR_ENTRY'
190403 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
190404    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
190405          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
190406        )
190407    THEN
190408          xla_ae_lines_pkg.BflowUpgEntry
190409            (p_business_method_code    => l_bflow_method_code
190410            ,p_business_class_code     => l_bflow_class_code
190411            ,p_balance_type            => l_balance_type_code);
190412    ELSE
190413       NULL;
190414 -- No business flow processing for business flow method of NONE.
190415    END IF;
190416 
190417    --
190418    -- call analytical criteria
190419    --
190420    
190421    --
190422    -- call description
190423    --
190424    
190425 xla_ae_lines_pkg.SetLineDescription(
190426    p_ae_header_id => l_ae_header_id
190427   ,p_description  => Description_1 (
190428      p_application_id         => p_application_id
190429    , p_ae_header_id           => l_ae_header_id 
190430 , p_source_1 => p_source_1
190431 , p_source_2 => p_source_2
190432 , p_source_3 => p_source_3
190433 , p_source_4 => p_source_4
190434 , p_source_5 => p_source_5
190435    )
190436 );
190437 
190438 
190439    --
190440    -- call ADRs
190441    -- Bug 4922099
190442    --
190443    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
190444         (NVL(l_actual_upg_option, 'N') = 'O') OR
190445         (NVL(l_enc_upg_option, 'N') = 'O')
190446       )
190447    THEN
190448    NULL;
190449    --
190450    --
190451    
190452   l_ccid := AcctDerRule_16(
190453            p_application_id           => p_application_id
190454          , p_ae_header_id             => l_ae_header_id 
190455 , p_source_20 => p_source_20
190456          , x_transaction_coa_id       => l_adr_transaction_coa_id
190457          , x_accounting_coa_id        => l_adr_accounting_coa_id
190458          , x_value_type_code          => l_adr_value_type_code
190459          , p_side                     => 'NA'
190460    );
190461 
190462    xla_ae_lines_pkg.set_ccid(
190463     p_code_combination_id          => l_ccid
190464   , p_value_type_code              => l_adr_value_type_code
190465   , p_transaction_coa_id           => l_adr_transaction_coa_id
190466   , p_accounting_coa_id            => l_adr_accounting_coa_id
190467   , p_adr_code                     => 'PI_DISTRIBUTION'
190468   , p_adr_type_code                => 'S'
190469   , p_component_type               => l_component_type
190470   , p_component_code               => l_component_code
190471   , p_component_type_code          => l_component_type_code
190472   , p_component_appl_id            => l_component_appl_id
190473   , p_amb_context_code             => l_amb_context_code
190474   , p_side                         => 'NA'
190475   );
190476 
190477 
190478    --
190479    --
190480    END IF;
190481    --
190482    -- Bug 4922099
190483    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
190484           (NVL(l_enc_upg_option, 'N') = 'O')
190485         ) AND
190486         (l_bflow_method_code = 'PRIOR_ENTRY')
190487       )
190488    THEN
190489       IF
190490       --
190491       1 = 2
190492       --
190493       THEN
190494       xla_accounting_err_pkg.build_message
190495                                     (p_appli_s_name            => 'XLA'
190496                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
190497                                     ,p_token_1                 => 'LINE_NUMBER'
190498                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
190499                                     ,p_token_2                 => 'LINE_TYPE_NAME'
190500                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
190501                                                                              l_component_type
190502                                                                             ,l_component_code
190503                                                                             ,l_component_type_code
190504                                                                             ,l_component_appl_id
190505                                                                             ,l_amb_context_code
190506                                                                             ,l_entity_code
190507                                                                             ,l_event_class_code
190508                                                                            )
190509                                     ,p_token_3                 => 'OWNER'
190510                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
190511                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
190512                                                                           ,p_lookup_code    => l_component_type_code
190513                                                                          )
190514                                     ,p_token_4                 => 'PRODUCT_NAME'
190515                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
190516                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
190517                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
190518                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
190519                                     ,p_ae_header_id            =>  NULL
190520                                        );
190521 
190522         IF (C_LEVEL_ERROR>= g_log_level) THEN
190523                  trace
190524                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
190525                       ,p_level    => C_LEVEL_ERROR
190526                       ,p_module   => l_log_module);
190527         END IF;
190528       END IF;
190529    END IF;
190530    --
190531    --
190532    ------------------------------------------------------------------------------------------------
190533    -- 4219869 Business Flow
190534    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
190535    -- Prior Entry.  Currently, the following code is always generated.
190536    ------------------------------------------------------------------------------------------------
190537    XLA_AE_LINES_PKG.ValidateCurrentLine;
190538 
190539    ------------------------------------------------------------------------------------
190540    -- 4219869 Business Flow
190541    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
190542    ------------------------------------------------------------------------------------
190543    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
190544 
190545    ----------------------------------------------------------------------------------
190546    -- 4219869 Business Flow
190547    -- Update journal entry status -- Need to generate this within IF <condition>
190548    ----------------------------------------------------------------------------------
190549    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
190550          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
190551          ,p_balance_type_code => l_balance_type_code
190552          );
190553 
190554    -------------------------------------------------------------------------------------------
190555    -- 4262811 - Generate the Accrual Reversal lines
190556    -------------------------------------------------------------------------------------------
190557    BEGIN
190558       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
190559                               (g_array_event(p_event_id).array_value_num('header_index'));
190560       IF l_acc_rev_flag IS NULL THEN
190561          l_acc_rev_flag := 'N';
190562       END IF;
190563    EXCEPTION
190564       WHEN OTHERS THEN
190565          l_acc_rev_flag := 'N';
190566    END;
190567    --
190568    IF (l_acc_rev_flag = 'Y') THEN
190569 
190570        -- 4645092  ------------------------------------------------------------------------------
190571        -- To allow MPA report to determine if it should generate report process
190572        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
190573        ------------------------------------------------------------------------------------------
190574 
190575        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
190576        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
190577    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
190578    -- call ADRs
190579    -- Bug 4922099
190580    --
190581    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
190582         (NVL(l_actual_upg_option, 'N') = 'O') OR
190583         (NVL(l_enc_upg_option, 'N') = 'O')
190584       )
190585    THEN
190586    NULL;
190587    --
190588    --
190589    
190590   l_ccid := AcctDerRule_16(
190591            p_application_id           => p_application_id
190592          , p_ae_header_id             => l_ae_header_id 
190593 , p_source_20 => p_source_20
190594          , x_transaction_coa_id       => l_adr_transaction_coa_id
190595          , x_accounting_coa_id        => l_adr_accounting_coa_id
190596          , x_value_type_code          => l_adr_value_type_code
190597          , p_side                     => 'NA'
190598    );
190599 
190600    xla_ae_lines_pkg.set_ccid(
190601     p_code_combination_id          => l_ccid
190602   , p_value_type_code              => l_adr_value_type_code
190603   , p_transaction_coa_id           => l_adr_transaction_coa_id
190604   , p_accounting_coa_id            => l_adr_accounting_coa_id
190605   , p_adr_code                     => 'PI_DISTRIBUTION'
190606   , p_adr_type_code                => 'S'
190607   , p_component_type               => l_component_type
190608   , p_component_code               => l_component_code
190609   , p_component_type_code          => l_component_type_code
190610   , p_component_appl_id            => l_component_appl_id
190611   , p_amb_context_code             => l_amb_context_code
190612   , p_side                         => 'NA'
190613   );
190614 
190615 
190616    --
190617    --
190618    END IF;
190619 
190620        --
190621        -- Update the line information that should be overwritten
190622        --
190623        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
190624                                          p_header_num   => 1);
190625        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
190626 
190627        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
190628 
190629        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
190630           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
190631        END IF;
190632 
190633       --
190634       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
190635       --
190636       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
190637           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
190638       ELSE
190639           ---------------------------------------------------------------------------------------------------
190640           -- 4262811a Switch Sign
190641           ---------------------------------------------------------------------------------------------------
190642           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
190643           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
190644                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
190645           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
190646                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
190647           -- 5132302
190648           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
190649                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
190650 
190651       END IF;
190652 
190653       -- 4955764
190654       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
190655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
190656 
190657 
190658       XLA_AE_LINES_PKG.ValidateCurrentLine;
190659       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
190660 
190661       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
190662                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
190663                ,p_balance_type_code => l_balance_type_code);
190664 
190665    END IF;
190666 
190667    -----------------------------------------------------------------------------------------
190668    -- 4262811 Multiperiod Accounting
190669    -----------------------------------------------------------------------------------------
190670      -- No MPA option is assigned.
190671 
190672 
190673 END IF;
190674 END IF;
190675 --
190676 
190677 --
190678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190679    trace
190680       (p_msg      => 'END of AcctLineType_349'
190681       ,p_level    => C_LEVEL_PROCEDURE
190682       ,p_module   => l_log_module);
190683 END IF;
190684 --
190685 EXCEPTION
190686   WHEN xla_exceptions_pkg.application_exception THEN
190687       RAISE;
190688   WHEN OTHERS THEN
190689        xla_exceptions_pkg.raise_message
190690            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_349');
190691 END AcctLineType_349;
190692 --
190693 
190694 ---------------------------------------
190695 --
190696 -- PRIVATE FUNCTION
190697 --         AcctLineType_350
190698 --
190699 ---------------------------------------
190700 PROCEDURE AcctLineType_350 (
190701   p_application_id        IN NUMBER
190702  ,p_event_id              IN NUMBER
190703  ,p_calculate_acctd_flag  IN VARCHAR2
190704  ,p_calculate_g_l_flag    IN VARCHAR2
190705  ,p_actual_flag           IN OUT VARCHAR2
190706  ,p_balance_type_code     OUT VARCHAR2
190707  ,p_gain_or_loss_ref      OUT VARCHAR2
190708  
190709 --TRANSACTION_ID
190710  , p_source_1            IN NUMBER
190711 --Item Concatenated Segments
190712  , p_source_2            IN VARCHAR2
190713 --Transaction Quantity
190714  , p_source_3            IN NUMBER
190715 --Transaction Unit of Measure Code
190716  , p_source_4            IN VARCHAR2
190717 --Inventory Transaction Type Description
190718  , p_source_5            IN VARCHAR2
190719 --Cost Management Default Account
190720  , p_source_11            IN NUMBER
190721 --Applied to Application ID
190722  , p_source_79            IN NUMBER
190723 --Applied to Distribution Link Type
190724  , p_source_80            IN VARCHAR2
190725 --Applied to Entity Code
190726  , p_source_81            IN VARCHAR2
190727 --Applied To Purchase Document Identifier
190728  , p_source_83            IN NUMBER
190729 --DISTRIBUTION_IDENTIFIER
190730  , p_source_84            IN NUMBER
190731 --Distribution Type
190732  , p_source_85            IN VARCHAR2
190733  , p_source_85_meaning    IN VARCHAR2
190734 --PO Budget Account
190735  , p_source_86            IN NUMBER
190736 --Encumbrance Reversal Amount Entered
190737  , p_source_87            IN NUMBER
190738 --Entered Currency Code
190739  , p_source_88            IN VARCHAR2
190740 --Transaction Encumbrance Reversal Amount
190741  , p_source_89            IN NUMBER
190742 --Entered Amount
190743  , p_source_91            IN NUMBER
190744 --Currency Conversion Date
190745  , p_source_92            IN DATE
190746 --Currency Conversion Rate
190747  , p_source_93            IN NUMBER
190748 --Currency Conversion Type
190749  , p_source_94            IN VARCHAR2
190750 --Accounted Amount
190751  , p_source_95            IN NUMBER
190752 --Purchasing Encumbrance Type Identifier
190753  , p_source_96            IN NUMBER
190754 --Accounting Line Type
190755  , p_source_97            IN NUMBER
190756 --Costing Encumbrance Upgrade Option
190757  , p_source_100            IN VARCHAR2
190758 --TXN_PO_DISTRIBUTION_ID
190759  , p_source_101            IN NUMBER
190760 )
190761 IS
190762 
190763 l_component_type              VARCHAR2(80);
190764 l_component_code              VARCHAR2(30);
190765 l_component_type_code         VARCHAR2(1);
190766 l_component_appl_id           INTEGER;
190767 l_amb_context_code            VARCHAR2(30);
190768 l_entity_code                 VARCHAR2(30);
190769 l_event_class_code            VARCHAR2(30);
190770 l_ae_header_id                NUMBER;
190771 l_event_type_code             VARCHAR2(30);
190772 l_line_definition_code        VARCHAR2(30);
190773 l_line_definition_owner_code  VARCHAR2(1);
190774 --
190775 -- adr variables
190776 l_segment                     VARCHAR2(30);
190777 l_ccid                        NUMBER;
190778 l_adr_transaction_coa_id      NUMBER;
190779 l_adr_accounting_coa_id       NUMBER;
190780 l_adr_flexfield_segment_code  VARCHAR2(30);
190781 l_adr_flex_value_set_id       NUMBER;
190782 l_adr_value_type_code         VARCHAR2(30);
190783 l_adr_value_combination_id    NUMBER;
190784 l_adr_value_segment_code      VARCHAR2(30);
190785 
190786 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
190787 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
190788 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
190789 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
190790 
190791 -- 4262811 Variables ------------------------------------------------------------------------------------------
190792 l_entered_amt_idx             NUMBER;
190793 l_accted_amt_idx              NUMBER;
190794 l_acc_rev_flag                VARCHAR2(1);
190795 l_accrual_line_num            NUMBER;
190796 l_tmp_amt                     NUMBER;
190797 l_acc_rev_natural_side_code   VARCHAR2(1);
190798 
190799 l_num_entries                 NUMBER;
190800 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
190801 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
190802 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
190803 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
190804 l_recog_line_1                NUMBER;
190805 l_recog_line_2                NUMBER;
190806 
190807 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
190808 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
190809 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
190810 
190811 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
190812 
190813 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
190814 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
190815 
190816 ---------------------------------------------------------------------------------------------------------------
190817 
190818 
190819 --
190820 -- bulk performance
190821 --
190822 l_balance_type_code           VARCHAR2(1);
190823 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
190824 l_log_module                  VARCHAR2(240);
190825 
190826 --
190827 -- Upgrade strategy
190828 --
190829 l_actual_upg_option           VARCHAR2(1);
190830 l_enc_upg_option           VARCHAR2(1);
190831 
190832 --
190833 BEGIN
190834 --
190835 IF g_log_enabled THEN
190836       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_350';
190837 END IF;
190838 --
190839 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190840 
190841       trace
190842          (p_msg      => 'BEGIN of AcctLineType_350'
190843          ,p_level    => C_LEVEL_PROCEDURE
190844          ,p_module   => l_log_module);
190845 
190846 END IF;
190847 --
190848 l_component_type             := 'AMB_JLT';
190849 l_component_code             := 'OFFSET';
190850 l_component_type_code        := 'S';
190851 l_component_appl_id          :=  707;
190852 l_amb_context_code           := 'DEFAULT';
190853 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
190854 l_event_class_code           := 'PURCHASE_ORDER';
190855 l_event_type_code            := 'LOG_PO_DEL_INV';
190856 l_line_definition_owner_code := 'S';
190857 l_line_definition_code       := 'PI_LOG_DEL_INV';
190858 --
190859 l_balance_type_code          := 'A';
190860 l_segment                     := NULL;
190861 l_ccid                        := NULL;
190862 l_adr_transaction_coa_id      := NULL;
190863 l_adr_accounting_coa_id       := NULL;
190864 l_adr_flexfield_segment_code  := NULL;
190865 l_adr_flex_value_set_id       := NULL;
190866 l_adr_value_type_code         := NULL;
190867 l_adr_value_combination_id    := NULL;
190868 l_adr_value_segment_code      := NULL;
190869 
190870 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
190871 l_bflow_class_code           := '';    -- 4219869 Business Flow
190872 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
190873 l_budgetary_control_flag     := 'N';
190874 
190875 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
190876 l_bflow_applied_to_amt       := NULL; -- 5132302
190877 l_entered_amt_idx            := NULL;          -- 4262811
190878 l_accted_amt_idx             := NULL;          -- 4262811
190879 l_acc_rev_flag               := NULL;          -- 4262811
190880 l_accrual_line_num           := NULL;          -- 4262811
190881 l_tmp_amt                    := NULL;          -- 4262811
190882 --
190883  
190884 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
190885     l_balance_type_code <> 'B' THEN
190886 IF NVL(p_source_97,9E125) =  2
190887  THEN 
190888 
190889    --
190890    XLA_AE_LINES_PKG.SetNewLine;
190891 
190892    p_balance_type_code          := l_balance_type_code;
190893    -- set the flag so later we will know whether the gain loss line needs to be created
190894    
190895    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
190896      p_actual_flag :='A';
190897    END IF;
190898 
190899    --
190900    -- bulk performance
190901    --
190902    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
190903                                       p_header_num   => 0); -- 4262811
190904    --
190905    -- set accounting line options
190906    --
190907    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
190908            p_natural_side_code          => 'D'
190909          , p_gain_or_loss_flag          => 'N'
190910          , p_gl_transfer_mode_code      => 'S'
190911          , p_acct_entry_type_code       => 'A'
190912          , p_switch_side_flag           => 'Y'
190913          , p_merge_duplicate_code       => 'N'
190914          );
190915    --
190916    l_acc_rev_natural_side_code := 'C';  -- 4262811
190917    -- 
190918    --
190919    -- set accounting line type info
190920    --
190921    xla_ae_lines_pkg.SetAcctLineType
190922       (p_component_type             => l_component_type
190923       ,p_event_type_code            => l_event_type_code
190924       ,p_line_definition_owner_code => l_line_definition_owner_code
190925       ,p_line_definition_code       => l_line_definition_code
190926       ,p_accounting_line_code       => l_component_code
190927       ,p_accounting_line_type_code  => l_component_type_code
190928       ,p_accounting_line_appl_id    => l_component_appl_id
190929       ,p_amb_context_code           => l_amb_context_code
190930       ,p_entity_code                => l_entity_code
190931       ,p_event_class_code           => l_event_class_code);
190932    --
190933    -- set accounting class
190934    --
190935    xla_ae_lines_pkg.SetAcctClass(
190936            p_accounting_class_code  => 'OFFSET'
190937          , p_ae_header_id           => l_ae_header_id
190938          );
190939 
190940    --
190941    -- set rounding class
190942    --
190943    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
190944                       'OFFSET';
190945 
190946    --
190947    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
190948    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
190949    --
190950    -- bulk performance
190951    --
190952    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
190953 
190954    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
190955       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
190956 
190957    -- 4955764
190958    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
190959       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
190960 
190961    -- 4458381 Public Sector Enh
190962    
190963    --
190964    -- set accounting attributes for the line type
190965    --
190966    l_entered_amt_idx := 17;
190967    l_accted_amt_idx  := 22;
190968    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
190969    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
190970    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
190971    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
190972    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
190973    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
190974    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
190975    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
190976    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
190977    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
190978    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
190979    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
190980    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
190981    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
190982    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
190983    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
190984    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
190985    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
190986    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
190987    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
190988    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
190989    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
190990    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
190991    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
190992    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
190993    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
190994    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
190995    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
190996    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
190997    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
190998    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
190999    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
191000    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
191001    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
191002    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
191003    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
191004    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
191005    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
191006    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
191007    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
191008    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
191009    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
191010    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
191011    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
191012    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
191013    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
191014    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
191015    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
191016    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
191017 
191018    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
191019    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
191020 
191021    ---------------------------------------------------------------------------------------------------------------
191022    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
191023    ---------------------------------------------------------------------------------------------------------------
191024    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
191025 
191026    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
191027    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
191028 
191029    IF xla_accounting_cache_pkg.GetValueChar
191030          (p_source_code         => 'LEDGER_CATEGORY_CODE'
191031          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
191032    AND l_bflow_method_code = 'PRIOR_ENTRY'
191033 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
191034    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
191035          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
191036        )
191037    THEN
191038          xla_ae_lines_pkg.BflowUpgEntry
191039            (p_business_method_code    => l_bflow_method_code
191040            ,p_business_class_code     => l_bflow_class_code
191041            ,p_balance_type            => l_balance_type_code);
191042    ELSE
191043       NULL;
191044 -- No business flow processing for business flow method of NONE.
191045    END IF;
191046 
191047    --
191048    -- call analytical criteria
191049    --
191050    
191051    --
191052    -- call description
191053    --
191054    
191055 xla_ae_lines_pkg.SetLineDescription(
191056    p_ae_header_id => l_ae_header_id
191057   ,p_description  => Description_1 (
191058      p_application_id         => p_application_id
191059    , p_ae_header_id           => l_ae_header_id 
191060 , p_source_1 => p_source_1
191061 , p_source_2 => p_source_2
191062 , p_source_3 => p_source_3
191063 , p_source_4 => p_source_4
191064 , p_source_5 => p_source_5
191065    )
191066 );
191067 
191068 
191069    --
191070    -- call ADRs
191071    -- Bug 4922099
191072    --
191073    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
191074         (NVL(l_actual_upg_option, 'N') = 'O') OR
191075         (NVL(l_enc_upg_option, 'N') = 'O')
191076       )
191077    THEN
191078    NULL;
191079    --
191080    --
191081    
191082   l_ccid := AcctDerRule_6(
191083            p_application_id           => p_application_id
191084          , p_ae_header_id             => l_ae_header_id 
191085 , p_source_11 => p_source_11
191086          , x_transaction_coa_id       => l_adr_transaction_coa_id
191087          , x_accounting_coa_id        => l_adr_accounting_coa_id
191088          , x_value_type_code          => l_adr_value_type_code
191089          , p_side                     => 'NA'
191090    );
191091 
191092    xla_ae_lines_pkg.set_ccid(
191093     p_code_combination_id          => l_ccid
191094   , p_value_type_code              => l_adr_value_type_code
191095   , p_transaction_coa_id           => l_adr_transaction_coa_id
191096   , p_accounting_coa_id            => l_adr_accounting_coa_id
191097   , p_adr_code                     => 'CST_DEFAULT'
191098   , p_adr_type_code                => 'S'
191099   , p_component_type               => l_component_type
191100   , p_component_code               => l_component_code
191101   , p_component_type_code          => l_component_type_code
191102   , p_component_appl_id            => l_component_appl_id
191103   , p_amb_context_code             => l_amb_context_code
191104   , p_side                         => 'NA'
191105   );
191106 
191107 
191108    --
191109    --
191110    END IF;
191111    --
191112    -- Bug 4922099
191113    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
191114           (NVL(l_enc_upg_option, 'N') = 'O')
191115         ) AND
191116         (l_bflow_method_code = 'PRIOR_ENTRY')
191117       )
191118    THEN
191119       IF
191120       --
191121       1 = 2
191122       --
191123       THEN
191124       xla_accounting_err_pkg.build_message
191125                                     (p_appli_s_name            => 'XLA'
191126                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
191127                                     ,p_token_1                 => 'LINE_NUMBER'
191128                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
191129                                     ,p_token_2                 => 'LINE_TYPE_NAME'
191130                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
191131                                                                              l_component_type
191132                                                                             ,l_component_code
191133                                                                             ,l_component_type_code
191134                                                                             ,l_component_appl_id
191135                                                                             ,l_amb_context_code
191136                                                                             ,l_entity_code
191137                                                                             ,l_event_class_code
191138                                                                            )
191139                                     ,p_token_3                 => 'OWNER'
191140                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
191141                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
191142                                                                           ,p_lookup_code    => l_component_type_code
191143                                                                          )
191144                                     ,p_token_4                 => 'PRODUCT_NAME'
191145                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
191146                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
191147                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
191148                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
191149                                     ,p_ae_header_id            =>  NULL
191150                                        );
191151 
191152         IF (C_LEVEL_ERROR>= g_log_level) THEN
191153                  trace
191154                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
191155                       ,p_level    => C_LEVEL_ERROR
191156                       ,p_module   => l_log_module);
191157         END IF;
191158       END IF;
191159    END IF;
191160    --
191161    --
191162    ------------------------------------------------------------------------------------------------
191163    -- 4219869 Business Flow
191164    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
191165    -- Prior Entry.  Currently, the following code is always generated.
191166    ------------------------------------------------------------------------------------------------
191167    XLA_AE_LINES_PKG.ValidateCurrentLine;
191168 
191169    ------------------------------------------------------------------------------------
191170    -- 4219869 Business Flow
191171    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
191172    ------------------------------------------------------------------------------------
191173    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
191174 
191175    ----------------------------------------------------------------------------------
191176    -- 4219869 Business Flow
191177    -- Update journal entry status -- Need to generate this within IF <condition>
191178    ----------------------------------------------------------------------------------
191179    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
191180          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
191181          ,p_balance_type_code => l_balance_type_code
191182          );
191183 
191184    -------------------------------------------------------------------------------------------
191185    -- 4262811 - Generate the Accrual Reversal lines
191186    -------------------------------------------------------------------------------------------
191187    BEGIN
191188       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
191189                               (g_array_event(p_event_id).array_value_num('header_index'));
191190       IF l_acc_rev_flag IS NULL THEN
191191          l_acc_rev_flag := 'N';
191192       END IF;
191193    EXCEPTION
191194       WHEN OTHERS THEN
191195          l_acc_rev_flag := 'N';
191196    END;
191197    --
191198    IF (l_acc_rev_flag = 'Y') THEN
191199 
191200        -- 4645092  ------------------------------------------------------------------------------
191201        -- To allow MPA report to determine if it should generate report process
191202        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
191203        ------------------------------------------------------------------------------------------
191204 
191205        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
191206        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
191207    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
191208    -- call ADRs
191209    -- Bug 4922099
191210    --
191211    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
191212         (NVL(l_actual_upg_option, 'N') = 'O') OR
191213         (NVL(l_enc_upg_option, 'N') = 'O')
191214       )
191215    THEN
191216    NULL;
191217    --
191218    --
191219    
191220   l_ccid := AcctDerRule_6(
191221            p_application_id           => p_application_id
191222          , p_ae_header_id             => l_ae_header_id 
191223 , p_source_11 => p_source_11
191224          , x_transaction_coa_id       => l_adr_transaction_coa_id
191225          , x_accounting_coa_id        => l_adr_accounting_coa_id
191226          , x_value_type_code          => l_adr_value_type_code
191227          , p_side                     => 'NA'
191228    );
191229 
191230    xla_ae_lines_pkg.set_ccid(
191231     p_code_combination_id          => l_ccid
191232   , p_value_type_code              => l_adr_value_type_code
191233   , p_transaction_coa_id           => l_adr_transaction_coa_id
191234   , p_accounting_coa_id            => l_adr_accounting_coa_id
191235   , p_adr_code                     => 'CST_DEFAULT'
191236   , p_adr_type_code                => 'S'
191237   , p_component_type               => l_component_type
191238   , p_component_code               => l_component_code
191239   , p_component_type_code          => l_component_type_code
191240   , p_component_appl_id            => l_component_appl_id
191241   , p_amb_context_code             => l_amb_context_code
191242   , p_side                         => 'NA'
191243   );
191244 
191245 
191246    --
191247    --
191248    END IF;
191249 
191250        --
191251        -- Update the line information that should be overwritten
191252        --
191253        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
191254                                          p_header_num   => 1);
191255        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
191256 
191257        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
191258 
191259        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
191260           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
191261        END IF;
191262 
191263       --
191264       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
191265       --
191266       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
191267           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
191268       ELSE
191269           ---------------------------------------------------------------------------------------------------
191270           -- 4262811a Switch Sign
191271           ---------------------------------------------------------------------------------------------------
191272           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
191273           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
191274                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
191275           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
191276                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
191277           -- 5132302
191278           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
191279                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
191280 
191281       END IF;
191282 
191283       -- 4955764
191284       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
191285       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
191286 
191287 
191288       XLA_AE_LINES_PKG.ValidateCurrentLine;
191289       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
191290 
191291       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
191292                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
191293                ,p_balance_type_code => l_balance_type_code);
191294 
191295    END IF;
191296 
191297    -----------------------------------------------------------------------------------------
191298    -- 4262811 Multiperiod Accounting
191299    -----------------------------------------------------------------------------------------
191300      -- No MPA option is assigned.
191301 
191302 
191303 END IF;
191304 END IF;
191305 --
191306 
191307 --
191308 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191309    trace
191310       (p_msg      => 'END of AcctLineType_350'
191311       ,p_level    => C_LEVEL_PROCEDURE
191312       ,p_module   => l_log_module);
191313 END IF;
191314 --
191315 EXCEPTION
191316   WHEN xla_exceptions_pkg.application_exception THEN
191317       RAISE;
191318   WHEN OTHERS THEN
191319        xla_exceptions_pkg.raise_message
191320            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_350');
191321 END AcctLineType_350;
191322 --
191323 
191324 ---------------------------------------
191325 --
191326 -- PRIVATE FUNCTION
191327 --         AcctLineType_351
191328 --
191329 ---------------------------------------
191330 PROCEDURE AcctLineType_351 (
191331   p_application_id        IN NUMBER
191332  ,p_event_id              IN NUMBER
191333  ,p_calculate_acctd_flag  IN VARCHAR2
191334  ,p_calculate_g_l_flag    IN VARCHAR2
191335  ,p_actual_flag           IN OUT VARCHAR2
191336  ,p_balance_type_code     OUT VARCHAR2
191337  ,p_gain_or_loss_ref      OUT VARCHAR2
191338  
191339 --TRANSACTION_ID
191340  , p_source_1            IN NUMBER
191341 --Item Concatenated Segments
191342  , p_source_2            IN VARCHAR2
191343 --Transaction Quantity
191344  , p_source_3            IN NUMBER
191345 --Transaction Unit of Measure Code
191346  , p_source_4            IN VARCHAR2
191347 --Inventory Transaction Type Description
191348  , p_source_5            IN VARCHAR2
191349 --Transaction Distribution Account
191350  , p_source_20            IN NUMBER
191351 --Applied to Application ID
191352  , p_source_79            IN NUMBER
191353 --Applied to Distribution Link Type
191354  , p_source_80            IN VARCHAR2
191355 --Applied to Entity Code
191356  , p_source_81            IN VARCHAR2
191357 --Applied To Purchase Document Identifier
191358  , p_source_83            IN NUMBER
191359 --DISTRIBUTION_IDENTIFIER
191360  , p_source_84            IN NUMBER
191361 --Distribution Type
191362  , p_source_85            IN VARCHAR2
191363  , p_source_85_meaning    IN VARCHAR2
191364 --PO Budget Account
191365  , p_source_86            IN NUMBER
191366 --Encumbrance Reversal Amount Entered
191367  , p_source_87            IN NUMBER
191368 --Entered Currency Code
191369  , p_source_88            IN VARCHAR2
191370 --Transaction Encumbrance Reversal Amount
191371  , p_source_89            IN NUMBER
191372 --Entered Amount
191373  , p_source_91            IN NUMBER
191374 --Currency Conversion Date
191375  , p_source_92            IN DATE
191376 --Currency Conversion Rate
191377  , p_source_93            IN NUMBER
191378 --Currency Conversion Type
191379  , p_source_94            IN VARCHAR2
191380 --Accounted Amount
191381  , p_source_95            IN NUMBER
191382 --Purchasing Encumbrance Type Identifier
191383  , p_source_96            IN NUMBER
191384 --Accounting Line Type
191385  , p_source_97            IN NUMBER
191386 --Costing Encumbrance Upgrade Option
191387  , p_source_100            IN VARCHAR2
191388 --TXN_PO_DISTRIBUTION_ID
191389  , p_source_101            IN NUMBER
191390 )
191391 IS
191392 
191393 l_component_type              VARCHAR2(80);
191394 l_component_code              VARCHAR2(30);
191395 l_component_type_code         VARCHAR2(1);
191396 l_component_appl_id           INTEGER;
191397 l_amb_context_code            VARCHAR2(30);
191398 l_entity_code                 VARCHAR2(30);
191399 l_event_class_code            VARCHAR2(30);
191400 l_ae_header_id                NUMBER;
191401 l_event_type_code             VARCHAR2(30);
191402 l_line_definition_code        VARCHAR2(30);
191403 l_line_definition_owner_code  VARCHAR2(1);
191404 --
191405 -- adr variables
191406 l_segment                     VARCHAR2(30);
191407 l_ccid                        NUMBER;
191408 l_adr_transaction_coa_id      NUMBER;
191409 l_adr_accounting_coa_id       NUMBER;
191410 l_adr_flexfield_segment_code  VARCHAR2(30);
191411 l_adr_flex_value_set_id       NUMBER;
191412 l_adr_value_type_code         VARCHAR2(30);
191413 l_adr_value_combination_id    NUMBER;
191414 l_adr_value_segment_code      VARCHAR2(30);
191415 
191416 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
191417 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
191418 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
191419 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
191420 
191421 -- 4262811 Variables ------------------------------------------------------------------------------------------
191422 l_entered_amt_idx             NUMBER;
191423 l_accted_amt_idx              NUMBER;
191424 l_acc_rev_flag                VARCHAR2(1);
191425 l_accrual_line_num            NUMBER;
191426 l_tmp_amt                     NUMBER;
191427 l_acc_rev_natural_side_code   VARCHAR2(1);
191428 
191429 l_num_entries                 NUMBER;
191430 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
191431 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
191432 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
191433 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
191434 l_recog_line_1                NUMBER;
191435 l_recog_line_2                NUMBER;
191436 
191437 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
191438 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
191439 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
191440 
191441 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
191442 
191443 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
191444 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
191445 
191446 ---------------------------------------------------------------------------------------------------------------
191447 
191448 
191449 --
191450 -- bulk performance
191451 --
191452 l_balance_type_code           VARCHAR2(1);
191453 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
191454 l_log_module                  VARCHAR2(240);
191455 
191456 --
191457 -- Upgrade strategy
191458 --
191459 l_actual_upg_option           VARCHAR2(1);
191460 l_enc_upg_option           VARCHAR2(1);
191461 
191462 --
191463 BEGIN
191464 --
191465 IF g_log_enabled THEN
191466       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_351';
191467 END IF;
191468 --
191469 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191470 
191471       trace
191472          (p_msg      => 'BEGIN of AcctLineType_351'
191473          ,p_level    => C_LEVEL_PROCEDURE
191474          ,p_module   => l_log_module);
191475 
191476 END IF;
191477 --
191478 l_component_type             := 'AMB_JLT';
191479 l_component_code             := 'OFFSET';
191480 l_component_type_code        := 'S';
191481 l_component_appl_id          :=  707;
191482 l_amb_context_code           := 'DEFAULT';
191483 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
191484 l_event_class_code           := 'PURCHASE_ORDER';
191485 l_event_type_code            := 'LOG_RET_RI_INV';
191486 l_line_definition_owner_code := 'S';
191487 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
191488 --
191489 l_balance_type_code          := 'A';
191490 l_segment                     := NULL;
191491 l_ccid                        := NULL;
191492 l_adr_transaction_coa_id      := NULL;
191493 l_adr_accounting_coa_id       := NULL;
191494 l_adr_flexfield_segment_code  := NULL;
191495 l_adr_flex_value_set_id       := NULL;
191496 l_adr_value_type_code         := NULL;
191497 l_adr_value_combination_id    := NULL;
191498 l_adr_value_segment_code      := NULL;
191499 
191500 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
191501 l_bflow_class_code           := '';    -- 4219869 Business Flow
191502 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
191503 l_budgetary_control_flag     := 'N';
191504 
191505 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
191506 l_bflow_applied_to_amt       := NULL; -- 5132302
191507 l_entered_amt_idx            := NULL;          -- 4262811
191508 l_accted_amt_idx             := NULL;          -- 4262811
191509 l_acc_rev_flag               := NULL;          -- 4262811
191510 l_accrual_line_num           := NULL;          -- 4262811
191511 l_tmp_amt                    := NULL;          -- 4262811
191512 --
191513  
191514 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
191515     l_balance_type_code <> 'B' THEN
191516 IF NVL(p_source_97,9E125) =  2
191517  THEN 
191518 
191519    --
191520    XLA_AE_LINES_PKG.SetNewLine;
191521 
191522    p_balance_type_code          := l_balance_type_code;
191523    -- set the flag so later we will know whether the gain loss line needs to be created
191524    
191525    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
191526      p_actual_flag :='A';
191527    END IF;
191528 
191529    --
191530    -- bulk performance
191531    --
191532    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
191533                                       p_header_num   => 0); -- 4262811
191534    --
191535    -- set accounting line options
191536    --
191537    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
191538            p_natural_side_code          => 'D'
191539          , p_gain_or_loss_flag          => 'N'
191540          , p_gl_transfer_mode_code      => 'S'
191541          , p_acct_entry_type_code       => 'A'
191542          , p_switch_side_flag           => 'Y'
191543          , p_merge_duplicate_code       => 'N'
191544          );
191545    --
191546    l_acc_rev_natural_side_code := 'C';  -- 4262811
191547    -- 
191548    --
191549    -- set accounting line type info
191550    --
191551    xla_ae_lines_pkg.SetAcctLineType
191552       (p_component_type             => l_component_type
191553       ,p_event_type_code            => l_event_type_code
191554       ,p_line_definition_owner_code => l_line_definition_owner_code
191555       ,p_line_definition_code       => l_line_definition_code
191556       ,p_accounting_line_code       => l_component_code
191557       ,p_accounting_line_type_code  => l_component_type_code
191558       ,p_accounting_line_appl_id    => l_component_appl_id
191559       ,p_amb_context_code           => l_amb_context_code
191560       ,p_entity_code                => l_entity_code
191561       ,p_event_class_code           => l_event_class_code);
191562    --
191563    -- set accounting class
191564    --
191565    xla_ae_lines_pkg.SetAcctClass(
191566            p_accounting_class_code  => 'OFFSET'
191567          , p_ae_header_id           => l_ae_header_id
191568          );
191569 
191570    --
191571    -- set rounding class
191572    --
191573    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
191574                       'OFFSET';
191575 
191576    --
191577    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
191578    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
191579    --
191580    -- bulk performance
191581    --
191582    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
191583 
191584    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
191585       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
191586 
191587    -- 4955764
191588    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
191589       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
191590 
191591    -- 4458381 Public Sector Enh
191592    
191593    --
191594    -- set accounting attributes for the line type
191595    --
191596    l_entered_amt_idx := 17;
191597    l_accted_amt_idx  := 22;
191598    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
191599    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
191600    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
191601    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
191602    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
191603    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
191604    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
191605    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
191606    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
191607    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
191608    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
191609    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
191610    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
191611    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
191612    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
191613    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
191614    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
191615    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
191616    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
191617    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
191618    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
191619    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
191620    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
191621    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
191622    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
191623    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
191624    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
191625    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
191626    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
191627    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
191628    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
191629    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
191630    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
191631    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
191632    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
191633    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
191634    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
191635    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
191636    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
191637    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
191638    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
191639    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
191640    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
191641    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
191642    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
191643    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
191644    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
191645    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
191646    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
191647 
191648    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
191649    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
191650 
191651    ---------------------------------------------------------------------------------------------------------------
191652    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
191653    ---------------------------------------------------------------------------------------------------------------
191654    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
191655 
191656    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
191657    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
191658 
191659    IF xla_accounting_cache_pkg.GetValueChar
191660          (p_source_code         => 'LEDGER_CATEGORY_CODE'
191661          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
191662    AND l_bflow_method_code = 'PRIOR_ENTRY'
191663 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
191664    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
191665          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
191666        )
191667    THEN
191668          xla_ae_lines_pkg.BflowUpgEntry
191669            (p_business_method_code    => l_bflow_method_code
191670            ,p_business_class_code     => l_bflow_class_code
191671            ,p_balance_type            => l_balance_type_code);
191672    ELSE
191673       NULL;
191674 -- No business flow processing for business flow method of NONE.
191675    END IF;
191676 
191677    --
191678    -- call analytical criteria
191679    --
191680    
191681    --
191682    -- call description
191683    --
191684    
191685 xla_ae_lines_pkg.SetLineDescription(
191686    p_ae_header_id => l_ae_header_id
191687   ,p_description  => Description_1 (
191688      p_application_id         => p_application_id
191689    , p_ae_header_id           => l_ae_header_id 
191690 , p_source_1 => p_source_1
191691 , p_source_2 => p_source_2
191692 , p_source_3 => p_source_3
191693 , p_source_4 => p_source_4
191694 , p_source_5 => p_source_5
191695    )
191696 );
191697 
191698 
191699    --
191700    -- call ADRs
191701    -- Bug 4922099
191702    --
191703    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
191704         (NVL(l_actual_upg_option, 'N') = 'O') OR
191705         (NVL(l_enc_upg_option, 'N') = 'O')
191706       )
191707    THEN
191708    NULL;
191709    --
191710    --
191711    
191712   l_ccid := AcctDerRule_16(
191713            p_application_id           => p_application_id
191714          , p_ae_header_id             => l_ae_header_id 
191715 , p_source_20 => p_source_20
191716          , x_transaction_coa_id       => l_adr_transaction_coa_id
191717          , x_accounting_coa_id        => l_adr_accounting_coa_id
191718          , x_value_type_code          => l_adr_value_type_code
191719          , p_side                     => 'NA'
191720    );
191721 
191722    xla_ae_lines_pkg.set_ccid(
191723     p_code_combination_id          => l_ccid
191724   , p_value_type_code              => l_adr_value_type_code
191725   , p_transaction_coa_id           => l_adr_transaction_coa_id
191726   , p_accounting_coa_id            => l_adr_accounting_coa_id
191727   , p_adr_code                     => 'PI_DISTRIBUTION'
191728   , p_adr_type_code                => 'S'
191729   , p_component_type               => l_component_type
191730   , p_component_code               => l_component_code
191731   , p_component_type_code          => l_component_type_code
191732   , p_component_appl_id            => l_component_appl_id
191733   , p_amb_context_code             => l_amb_context_code
191734   , p_side                         => 'NA'
191735   );
191736 
191737 
191738    --
191739    --
191740    END IF;
191741    --
191742    -- Bug 4922099
191743    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
191744           (NVL(l_enc_upg_option, 'N') = 'O')
191745         ) AND
191746         (l_bflow_method_code = 'PRIOR_ENTRY')
191747       )
191748    THEN
191749       IF
191750       --
191751       1 = 2
191752       --
191753       THEN
191754       xla_accounting_err_pkg.build_message
191755                                     (p_appli_s_name            => 'XLA'
191756                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
191757                                     ,p_token_1                 => 'LINE_NUMBER'
191758                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
191759                                     ,p_token_2                 => 'LINE_TYPE_NAME'
191760                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
191761                                                                              l_component_type
191762                                                                             ,l_component_code
191763                                                                             ,l_component_type_code
191764                                                                             ,l_component_appl_id
191765                                                                             ,l_amb_context_code
191766                                                                             ,l_entity_code
191767                                                                             ,l_event_class_code
191768                                                                            )
191769                                     ,p_token_3                 => 'OWNER'
191770                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
191771                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
191772                                                                           ,p_lookup_code    => l_component_type_code
191773                                                                          )
191774                                     ,p_token_4                 => 'PRODUCT_NAME'
191775                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
191776                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
191777                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
191778                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
191779                                     ,p_ae_header_id            =>  NULL
191780                                        );
191781 
191782         IF (C_LEVEL_ERROR>= g_log_level) THEN
191783                  trace
191784                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
191785                       ,p_level    => C_LEVEL_ERROR
191786                       ,p_module   => l_log_module);
191787         END IF;
191788       END IF;
191789    END IF;
191790    --
191791    --
191792    ------------------------------------------------------------------------------------------------
191793    -- 4219869 Business Flow
191794    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
191795    -- Prior Entry.  Currently, the following code is always generated.
191796    ------------------------------------------------------------------------------------------------
191797    XLA_AE_LINES_PKG.ValidateCurrentLine;
191798 
191799    ------------------------------------------------------------------------------------
191800    -- 4219869 Business Flow
191801    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
191802    ------------------------------------------------------------------------------------
191803    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
191804 
191805    ----------------------------------------------------------------------------------
191806    -- 4219869 Business Flow
191807    -- Update journal entry status -- Need to generate this within IF <condition>
191808    ----------------------------------------------------------------------------------
191809    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
191810          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
191811          ,p_balance_type_code => l_balance_type_code
191812          );
191813 
191814    -------------------------------------------------------------------------------------------
191815    -- 4262811 - Generate the Accrual Reversal lines
191816    -------------------------------------------------------------------------------------------
191817    BEGIN
191818       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
191819                               (g_array_event(p_event_id).array_value_num('header_index'));
191820       IF l_acc_rev_flag IS NULL THEN
191821          l_acc_rev_flag := 'N';
191822       END IF;
191823    EXCEPTION
191824       WHEN OTHERS THEN
191825          l_acc_rev_flag := 'N';
191826    END;
191827    --
191828    IF (l_acc_rev_flag = 'Y') THEN
191829 
191830        -- 4645092  ------------------------------------------------------------------------------
191831        -- To allow MPA report to determine if it should generate report process
191832        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
191833        ------------------------------------------------------------------------------------------
191834 
191835        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
191836        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
191837    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
191838    -- call ADRs
191839    -- Bug 4922099
191840    --
191841    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
191842         (NVL(l_actual_upg_option, 'N') = 'O') OR
191843         (NVL(l_enc_upg_option, 'N') = 'O')
191844       )
191845    THEN
191846    NULL;
191847    --
191848    --
191849    
191850   l_ccid := AcctDerRule_16(
191851            p_application_id           => p_application_id
191852          , p_ae_header_id             => l_ae_header_id 
191853 , p_source_20 => p_source_20
191854          , x_transaction_coa_id       => l_adr_transaction_coa_id
191855          , x_accounting_coa_id        => l_adr_accounting_coa_id
191856          , x_value_type_code          => l_adr_value_type_code
191857          , p_side                     => 'NA'
191858    );
191859 
191860    xla_ae_lines_pkg.set_ccid(
191861     p_code_combination_id          => l_ccid
191862   , p_value_type_code              => l_adr_value_type_code
191863   , p_transaction_coa_id           => l_adr_transaction_coa_id
191864   , p_accounting_coa_id            => l_adr_accounting_coa_id
191865   , p_adr_code                     => 'PI_DISTRIBUTION'
191866   , p_adr_type_code                => 'S'
191867   , p_component_type               => l_component_type
191868   , p_component_code               => l_component_code
191869   , p_component_type_code          => l_component_type_code
191870   , p_component_appl_id            => l_component_appl_id
191871   , p_amb_context_code             => l_amb_context_code
191872   , p_side                         => 'NA'
191873   );
191874 
191875 
191876    --
191877    --
191878    END IF;
191879 
191880        --
191881        -- Update the line information that should be overwritten
191882        --
191883        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
191884                                          p_header_num   => 1);
191885        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
191886 
191887        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
191888 
191889        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
191890           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
191891        END IF;
191892 
191893       --
191894       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
191895       --
191896       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
191897           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
191898       ELSE
191899           ---------------------------------------------------------------------------------------------------
191900           -- 4262811a Switch Sign
191901           ---------------------------------------------------------------------------------------------------
191902           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
191903           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
191904                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
191905           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
191906                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
191907           -- 5132302
191908           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
191909                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
191910 
191911       END IF;
191912 
191913       -- 4955764
191914       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
191915       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
191916 
191917 
191918       XLA_AE_LINES_PKG.ValidateCurrentLine;
191919       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
191920 
191921       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
191922                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
191923                ,p_balance_type_code => l_balance_type_code);
191924 
191925    END IF;
191926 
191927    -----------------------------------------------------------------------------------------
191928    -- 4262811 Multiperiod Accounting
191929    -----------------------------------------------------------------------------------------
191930      -- No MPA option is assigned.
191931 
191932 
191933 END IF;
191934 END IF;
191935 --
191936 
191937 --
191938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191939    trace
191940       (p_msg      => 'END of AcctLineType_351'
191941       ,p_level    => C_LEVEL_PROCEDURE
191942       ,p_module   => l_log_module);
191943 END IF;
191944 --
191945 EXCEPTION
191946   WHEN xla_exceptions_pkg.application_exception THEN
191947       RAISE;
191948   WHEN OTHERS THEN
191949        xla_exceptions_pkg.raise_message
191950            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_351');
191951 END AcctLineType_351;
191952 --
191953 
191954 ---------------------------------------
191955 --
191956 -- PRIVATE FUNCTION
191957 --         AcctLineType_352
191958 --
191959 ---------------------------------------
191960 PROCEDURE AcctLineType_352 (
191961   p_application_id        IN NUMBER
191962  ,p_event_id              IN NUMBER
191963  ,p_calculate_acctd_flag  IN VARCHAR2
191964  ,p_calculate_g_l_flag    IN VARCHAR2
191965  ,p_actual_flag           IN OUT VARCHAR2
191966  ,p_balance_type_code     OUT VARCHAR2
191967  ,p_gain_or_loss_ref      OUT VARCHAR2
191968  
191969 --TRANSACTION_ID
191970  , p_source_1            IN NUMBER
191971 --Item Concatenated Segments
191972  , p_source_2            IN VARCHAR2
191973 --Transaction Quantity
191974  , p_source_3            IN NUMBER
191975 --Transaction Unit of Measure Code
191976  , p_source_4            IN VARCHAR2
191977 --Inventory Transaction Type Description
191978  , p_source_5            IN VARCHAR2
191979 --Cost Management Default Account
191980  , p_source_11            IN NUMBER
191981 --DISTRIBUTION_IDENTIFIER
191982  , p_source_84            IN NUMBER
191983 --Distribution Type
191984  , p_source_85            IN VARCHAR2
191985  , p_source_85_meaning    IN VARCHAR2
191986 --Entered Currency Code
191987  , p_source_88            IN VARCHAR2
191988 --Entered Amount
191989  , p_source_91            IN NUMBER
191990 --Currency Conversion Date
191991  , p_source_92            IN DATE
191992 --Currency Conversion Rate
191993  , p_source_93            IN NUMBER
191994 --Currency Conversion Type
191995  , p_source_94            IN VARCHAR2
191996 --Accounted Amount
191997  , p_source_95            IN NUMBER
191998 --Accounting Line Type
191999  , p_source_97            IN NUMBER
192000 )
192001 IS
192002 
192003 l_component_type              VARCHAR2(80);
192004 l_component_code              VARCHAR2(30);
192005 l_component_type_code         VARCHAR2(1);
192006 l_component_appl_id           INTEGER;
192007 l_amb_context_code            VARCHAR2(30);
192008 l_entity_code                 VARCHAR2(30);
192009 l_event_class_code            VARCHAR2(30);
192010 l_ae_header_id                NUMBER;
192011 l_event_type_code             VARCHAR2(30);
192012 l_line_definition_code        VARCHAR2(30);
192013 l_line_definition_owner_code  VARCHAR2(1);
192014 --
192015 -- adr variables
192016 l_segment                     VARCHAR2(30);
192017 l_ccid                        NUMBER;
192018 l_adr_transaction_coa_id      NUMBER;
192019 l_adr_accounting_coa_id       NUMBER;
192020 l_adr_flexfield_segment_code  VARCHAR2(30);
192021 l_adr_flex_value_set_id       NUMBER;
192022 l_adr_value_type_code         VARCHAR2(30);
192023 l_adr_value_combination_id    NUMBER;
192024 l_adr_value_segment_code      VARCHAR2(30);
192025 
192026 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
192027 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
192028 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
192029 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
192030 
192031 -- 4262811 Variables ------------------------------------------------------------------------------------------
192032 l_entered_amt_idx             NUMBER;
192033 l_accted_amt_idx              NUMBER;
192034 l_acc_rev_flag                VARCHAR2(1);
192035 l_accrual_line_num            NUMBER;
192036 l_tmp_amt                     NUMBER;
192037 l_acc_rev_natural_side_code   VARCHAR2(1);
192038 
192039 l_num_entries                 NUMBER;
192040 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
192041 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
192042 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
192043 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
192044 l_recog_line_1                NUMBER;
192045 l_recog_line_2                NUMBER;
192046 
192047 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
192048 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
192049 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
192050 
192051 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
192052 
192053 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
192054 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
192055 
192056 ---------------------------------------------------------------------------------------------------------------
192057 
192058 
192059 --
192060 -- bulk performance
192061 --
192062 l_balance_type_code           VARCHAR2(1);
192063 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
192064 l_log_module                  VARCHAR2(240);
192065 
192066 --
192067 -- Upgrade strategy
192068 --
192069 l_actual_upg_option           VARCHAR2(1);
192070 l_enc_upg_option           VARCHAR2(1);
192071 
192072 --
192073 BEGIN
192074 --
192075 IF g_log_enabled THEN
192076       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_352';
192077 END IF;
192078 --
192079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192080 
192081       trace
192082          (p_msg      => 'BEGIN of AcctLineType_352'
192083          ,p_level    => C_LEVEL_PROCEDURE
192084          ,p_module   => l_log_module);
192085 
192086 END IF;
192087 --
192088 l_component_type             := 'AMB_JLT';
192089 l_component_code             := 'OFFSET';
192090 l_component_type_code        := 'S';
192091 l_component_appl_id          :=  707;
192092 l_amb_context_code           := 'DEFAULT';
192093 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
192094 l_event_class_code           := 'USER_DEFINE';
192095 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
192096 l_line_definition_owner_code := 'S';
192097 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
192098 --
192099 l_balance_type_code          := 'A';
192100 l_segment                     := NULL;
192101 l_ccid                        := NULL;
192102 l_adr_transaction_coa_id      := NULL;
192103 l_adr_accounting_coa_id       := NULL;
192104 l_adr_flexfield_segment_code  := NULL;
192105 l_adr_flex_value_set_id       := NULL;
192106 l_adr_value_type_code         := NULL;
192107 l_adr_value_combination_id    := NULL;
192108 l_adr_value_segment_code      := NULL;
192109 
192110 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
192111 l_bflow_class_code           := '';    -- 4219869 Business Flow
192112 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
192113 l_budgetary_control_flag     := 'N';
192114 
192115 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
192116 l_bflow_applied_to_amt       := NULL; -- 5132302
192117 l_entered_amt_idx            := NULL;          -- 4262811
192118 l_accted_amt_idx             := NULL;          -- 4262811
192119 l_acc_rev_flag               := NULL;          -- 4262811
192120 l_accrual_line_num           := NULL;          -- 4262811
192121 l_tmp_amt                    := NULL;          -- 4262811
192122 --
192123  
192124 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
192125     l_balance_type_code <> 'B' THEN
192126 IF NVL(p_source_97,9E125) =  2
192127  THEN 
192128 
192129    --
192130    XLA_AE_LINES_PKG.SetNewLine;
192131 
192132    p_balance_type_code          := l_balance_type_code;
192133    -- set the flag so later we will know whether the gain loss line needs to be created
192134    
192135    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
192136      p_actual_flag :='A';
192137    END IF;
192138 
192139    --
192140    -- bulk performance
192141    --
192142    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
192143                                       p_header_num   => 0); -- 4262811
192144    --
192145    -- set accounting line options
192146    --
192147    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
192148            p_natural_side_code          => 'D'
192149          , p_gain_or_loss_flag          => 'N'
192150          , p_gl_transfer_mode_code      => 'S'
192151          , p_acct_entry_type_code       => 'A'
192152          , p_switch_side_flag           => 'Y'
192153          , p_merge_duplicate_code       => 'N'
192154          );
192155    --
192156    l_acc_rev_natural_side_code := 'C';  -- 4262811
192157    -- 
192158    --
192159    -- set accounting line type info
192160    --
192161    xla_ae_lines_pkg.SetAcctLineType
192162       (p_component_type             => l_component_type
192163       ,p_event_type_code            => l_event_type_code
192164       ,p_line_definition_owner_code => l_line_definition_owner_code
192165       ,p_line_definition_code       => l_line_definition_code
192166       ,p_accounting_line_code       => l_component_code
192167       ,p_accounting_line_type_code  => l_component_type_code
192168       ,p_accounting_line_appl_id    => l_component_appl_id
192169       ,p_amb_context_code           => l_amb_context_code
192170       ,p_entity_code                => l_entity_code
192171       ,p_event_class_code           => l_event_class_code);
192172    --
192173    -- set accounting class
192174    --
192175    xla_ae_lines_pkg.SetAcctClass(
192176            p_accounting_class_code  => 'OFFSET'
192177          , p_ae_header_id           => l_ae_header_id
192178          );
192179 
192180    --
192181    -- set rounding class
192182    --
192183    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
192184                       'OFFSET';
192185 
192186    --
192187    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
192188    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
192189    --
192190    -- bulk performance
192191    --
192192    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
192193 
192194    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
192195       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
192196 
192197    -- 4955764
192198    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
192199       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
192200 
192201    -- 4458381 Public Sector Enh
192202    
192203    --
192204    -- set accounting attributes for the line type
192205    --
192206    l_entered_amt_idx := 3;
192207    l_accted_amt_idx  := 8;
192208    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
192209    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
192210    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
192211    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
192212    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
192213    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
192214    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
192215    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
192216    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
192217    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
192218    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
192219    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
192220    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
192221    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
192222    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
192223    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
192224    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
192225 
192226    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
192227    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
192228 
192229    ---------------------------------------------------------------------------------------------------------------
192230    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
192231    ---------------------------------------------------------------------------------------------------------------
192232    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
192233 
192234    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
192235    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
192236 
192237    IF xla_accounting_cache_pkg.GetValueChar
192238          (p_source_code         => 'LEDGER_CATEGORY_CODE'
192239          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
192240    AND l_bflow_method_code = 'PRIOR_ENTRY'
192241 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
192242    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
192243          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
192244        )
192245    THEN
192246          xla_ae_lines_pkg.BflowUpgEntry
192247            (p_business_method_code    => l_bflow_method_code
192248            ,p_business_class_code     => l_bflow_class_code
192249            ,p_balance_type            => l_balance_type_code);
192250    ELSE
192251       NULL;
192252 -- No business flow processing for business flow method of NONE.
192253    END IF;
192254 
192255    --
192256    -- call analytical criteria
192257    --
192258    
192259    --
192260    -- call description
192261    --
192262    
192263 xla_ae_lines_pkg.SetLineDescription(
192264    p_ae_header_id => l_ae_header_id
192265   ,p_description  => Description_1 (
192266      p_application_id         => p_application_id
192267    , p_ae_header_id           => l_ae_header_id 
192268 , p_source_1 => p_source_1
192269 , p_source_2 => p_source_2
192270 , p_source_3 => p_source_3
192271 , p_source_4 => p_source_4
192272 , p_source_5 => p_source_5
192273    )
192274 );
192275 
192276 
192277    --
192278    -- call ADRs
192279    -- Bug 4922099
192280    --
192281    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
192282         (NVL(l_actual_upg_option, 'N') = 'O') OR
192283         (NVL(l_enc_upg_option, 'N') = 'O')
192284       )
192285    THEN
192286    NULL;
192287    --
192288    --
192289    
192290   l_ccid := AcctDerRule_6(
192291            p_application_id           => p_application_id
192292          , p_ae_header_id             => l_ae_header_id 
192293 , p_source_11 => p_source_11
192294          , x_transaction_coa_id       => l_adr_transaction_coa_id
192295          , x_accounting_coa_id        => l_adr_accounting_coa_id
192296          , x_value_type_code          => l_adr_value_type_code
192297          , p_side                     => 'NA'
192298    );
192299 
192300    xla_ae_lines_pkg.set_ccid(
192301     p_code_combination_id          => l_ccid
192302   , p_value_type_code              => l_adr_value_type_code
192303   , p_transaction_coa_id           => l_adr_transaction_coa_id
192304   , p_accounting_coa_id            => l_adr_accounting_coa_id
192305   , p_adr_code                     => 'CST_DEFAULT'
192306   , p_adr_type_code                => 'S'
192307   , p_component_type               => l_component_type
192308   , p_component_code               => l_component_code
192309   , p_component_type_code          => l_component_type_code
192310   , p_component_appl_id            => l_component_appl_id
192311   , p_amb_context_code             => l_amb_context_code
192312   , p_side                         => 'NA'
192313   );
192314 
192315 
192316    --
192317    --
192318    END IF;
192319    --
192320    -- Bug 4922099
192321    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
192322           (NVL(l_enc_upg_option, 'N') = 'O')
192323         ) AND
192324         (l_bflow_method_code = 'PRIOR_ENTRY')
192325       )
192326    THEN
192327       IF
192328       --
192329       1 = 2
192330       --
192331       THEN
192332       xla_accounting_err_pkg.build_message
192333                                     (p_appli_s_name            => 'XLA'
192334                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
192335                                     ,p_token_1                 => 'LINE_NUMBER'
192336                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
192337                                     ,p_token_2                 => 'LINE_TYPE_NAME'
192338                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
192339                                                                              l_component_type
192340                                                                             ,l_component_code
192341                                                                             ,l_component_type_code
192342                                                                             ,l_component_appl_id
192343                                                                             ,l_amb_context_code
192344                                                                             ,l_entity_code
192345                                                                             ,l_event_class_code
192346                                                                            )
192347                                     ,p_token_3                 => 'OWNER'
192348                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
192349                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
192350                                                                           ,p_lookup_code    => l_component_type_code
192351                                                                          )
192352                                     ,p_token_4                 => 'PRODUCT_NAME'
192353                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
192354                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
192355                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
192356                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
192357                                     ,p_ae_header_id            =>  NULL
192358                                        );
192359 
192360         IF (C_LEVEL_ERROR>= g_log_level) THEN
192361                  trace
192362                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
192363                       ,p_level    => C_LEVEL_ERROR
192364                       ,p_module   => l_log_module);
192365         END IF;
192366       END IF;
192367    END IF;
192368    --
192369    --
192370    ------------------------------------------------------------------------------------------------
192371    -- 4219869 Business Flow
192372    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
192373    -- Prior Entry.  Currently, the following code is always generated.
192374    ------------------------------------------------------------------------------------------------
192375    XLA_AE_LINES_PKG.ValidateCurrentLine;
192376 
192377    ------------------------------------------------------------------------------------
192378    -- 4219869 Business Flow
192379    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
192380    ------------------------------------------------------------------------------------
192381    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
192382 
192383    ----------------------------------------------------------------------------------
192384    -- 4219869 Business Flow
192385    -- Update journal entry status -- Need to generate this within IF <condition>
192386    ----------------------------------------------------------------------------------
192387    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
192388          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
192389          ,p_balance_type_code => l_balance_type_code
192390          );
192391 
192392    -------------------------------------------------------------------------------------------
192393    -- 4262811 - Generate the Accrual Reversal lines
192394    -------------------------------------------------------------------------------------------
192395    BEGIN
192396       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
192397                               (g_array_event(p_event_id).array_value_num('header_index'));
192398       IF l_acc_rev_flag IS NULL THEN
192399          l_acc_rev_flag := 'N';
192400       END IF;
192401    EXCEPTION
192402       WHEN OTHERS THEN
192403          l_acc_rev_flag := 'N';
192404    END;
192405    --
192406    IF (l_acc_rev_flag = 'Y') THEN
192407 
192408        -- 4645092  ------------------------------------------------------------------------------
192409        -- To allow MPA report to determine if it should generate report process
192410        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
192411        ------------------------------------------------------------------------------------------
192412 
192413        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
192414        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
192415    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
192416    -- call ADRs
192417    -- Bug 4922099
192418    --
192419    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
192420         (NVL(l_actual_upg_option, 'N') = 'O') OR
192421         (NVL(l_enc_upg_option, 'N') = 'O')
192422       )
192423    THEN
192424    NULL;
192425    --
192426    --
192427    
192428   l_ccid := AcctDerRule_6(
192429            p_application_id           => p_application_id
192430          , p_ae_header_id             => l_ae_header_id 
192431 , p_source_11 => p_source_11
192432          , x_transaction_coa_id       => l_adr_transaction_coa_id
192433          , x_accounting_coa_id        => l_adr_accounting_coa_id
192434          , x_value_type_code          => l_adr_value_type_code
192435          , p_side                     => 'NA'
192436    );
192437 
192438    xla_ae_lines_pkg.set_ccid(
192439     p_code_combination_id          => l_ccid
192440   , p_value_type_code              => l_adr_value_type_code
192441   , p_transaction_coa_id           => l_adr_transaction_coa_id
192442   , p_accounting_coa_id            => l_adr_accounting_coa_id
192443   , p_adr_code                     => 'CST_DEFAULT'
192444   , p_adr_type_code                => 'S'
192445   , p_component_type               => l_component_type
192446   , p_component_code               => l_component_code
192447   , p_component_type_code          => l_component_type_code
192448   , p_component_appl_id            => l_component_appl_id
192449   , p_amb_context_code             => l_amb_context_code
192450   , p_side                         => 'NA'
192451   );
192452 
192453 
192454    --
192455    --
192456    END IF;
192457 
192458        --
192459        -- Update the line information that should be overwritten
192460        --
192461        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
192462                                          p_header_num   => 1);
192463        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
192464 
192465        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
192466 
192467        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
192468           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
192469        END IF;
192470 
192471       --
192472       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
192473       --
192474       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
192475           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
192476       ELSE
192477           ---------------------------------------------------------------------------------------------------
192478           -- 4262811a Switch Sign
192479           ---------------------------------------------------------------------------------------------------
192480           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
192481           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
192482                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
192483           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
192484                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
192485           -- 5132302
192486           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
192487                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
192488 
192489       END IF;
192490 
192491       -- 4955764
192492       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
192493       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
192494 
192495 
192496       XLA_AE_LINES_PKG.ValidateCurrentLine;
192497       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
192498 
192499       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
192500                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
192501                ,p_balance_type_code => l_balance_type_code);
192502 
192503    END IF;
192504 
192505    -----------------------------------------------------------------------------------------
192506    -- 4262811 Multiperiod Accounting
192507    -----------------------------------------------------------------------------------------
192508      -- No MPA option is assigned.
192509 
192510 
192511 END IF;
192512 END IF;
192513 --
192514 
192515 --
192516 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192517    trace
192518       (p_msg      => 'END of AcctLineType_352'
192519       ,p_level    => C_LEVEL_PROCEDURE
192520       ,p_module   => l_log_module);
192521 END IF;
192522 --
192523 EXCEPTION
192524   WHEN xla_exceptions_pkg.application_exception THEN
192525       RAISE;
192526   WHEN OTHERS THEN
192527        xla_exceptions_pkg.raise_message
192528            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_352');
192529 END AcctLineType_352;
192530 --
192531 
192532 ---------------------------------------
192533 --
192534 -- PRIVATE FUNCTION
192535 --         AcctLineType_353
192536 --
192537 ---------------------------------------
192538 PROCEDURE AcctLineType_353 (
192539   p_application_id        IN NUMBER
192540  ,p_event_id              IN NUMBER
192541  ,p_calculate_acctd_flag  IN VARCHAR2
192542  ,p_calculate_g_l_flag    IN VARCHAR2
192543  ,p_actual_flag           IN OUT VARCHAR2
192544  ,p_balance_type_code     OUT VARCHAR2
192545  ,p_gain_or_loss_ref      OUT VARCHAR2
192546  
192547 --TRANSACTION_ID
192548  , p_source_1            IN NUMBER
192549 --Item Concatenated Segments
192550  , p_source_2            IN VARCHAR2
192551 --Transaction Quantity
192552  , p_source_3            IN NUMBER
192553 --Transaction Unit of Measure Code
192554  , p_source_4            IN VARCHAR2
192555 --Inventory Transaction Type Description
192556  , p_source_5            IN VARCHAR2
192557 --Cost Management Default Account
192558  , p_source_11            IN NUMBER
192559 --DISTRIBUTION_IDENTIFIER
192560  , p_source_84            IN NUMBER
192561 --Distribution Type
192562  , p_source_85            IN VARCHAR2
192563  , p_source_85_meaning    IN VARCHAR2
192564 --Entered Currency Code
192565  , p_source_88            IN VARCHAR2
192566 --Entered Amount
192567  , p_source_91            IN NUMBER
192568 --Currency Conversion Date
192569  , p_source_92            IN DATE
192570 --Currency Conversion Rate
192571  , p_source_93            IN NUMBER
192572 --Currency Conversion Type
192573  , p_source_94            IN VARCHAR2
192574 --Accounted Amount
192575  , p_source_95            IN NUMBER
192576 --Accounting Line Type
192577  , p_source_97            IN NUMBER
192578 )
192579 IS
192580 
192581 l_component_type              VARCHAR2(80);
192582 l_component_code              VARCHAR2(30);
192583 l_component_type_code         VARCHAR2(1);
192584 l_component_appl_id           INTEGER;
192585 l_amb_context_code            VARCHAR2(30);
192586 l_entity_code                 VARCHAR2(30);
192587 l_event_class_code            VARCHAR2(30);
192588 l_ae_header_id                NUMBER;
192589 l_event_type_code             VARCHAR2(30);
192590 l_line_definition_code        VARCHAR2(30);
192591 l_line_definition_owner_code  VARCHAR2(1);
192592 --
192593 -- adr variables
192594 l_segment                     VARCHAR2(30);
192595 l_ccid                        NUMBER;
192596 l_adr_transaction_coa_id      NUMBER;
192597 l_adr_accounting_coa_id       NUMBER;
192598 l_adr_flexfield_segment_code  VARCHAR2(30);
192599 l_adr_flex_value_set_id       NUMBER;
192600 l_adr_value_type_code         VARCHAR2(30);
192601 l_adr_value_combination_id    NUMBER;
192602 l_adr_value_segment_code      VARCHAR2(30);
192603 
192604 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
192605 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
192606 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
192607 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
192608 
192609 -- 4262811 Variables ------------------------------------------------------------------------------------------
192610 l_entered_amt_idx             NUMBER;
192611 l_accted_amt_idx              NUMBER;
192612 l_acc_rev_flag                VARCHAR2(1);
192613 l_accrual_line_num            NUMBER;
192614 l_tmp_amt                     NUMBER;
192615 l_acc_rev_natural_side_code   VARCHAR2(1);
192616 
192617 l_num_entries                 NUMBER;
192618 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
192619 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
192620 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
192621 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
192622 l_recog_line_1                NUMBER;
192623 l_recog_line_2                NUMBER;
192624 
192625 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
192626 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
192627 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
192628 
192629 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
192630 
192631 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
192632 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
192633 
192634 ---------------------------------------------------------------------------------------------------------------
192635 
192636 
192637 --
192638 -- bulk performance
192639 --
192640 l_balance_type_code           VARCHAR2(1);
192641 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
192642 l_log_module                  VARCHAR2(240);
192643 
192644 --
192645 -- Upgrade strategy
192646 --
192647 l_actual_upg_option           VARCHAR2(1);
192648 l_enc_upg_option           VARCHAR2(1);
192649 
192650 --
192651 BEGIN
192652 --
192653 IF g_log_enabled THEN
192654       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_353';
192655 END IF;
192656 --
192657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192658 
192659       trace
192660          (p_msg      => 'BEGIN of AcctLineType_353'
192661          ,p_level    => C_LEVEL_PROCEDURE
192662          ,p_module   => l_log_module);
192663 
192664 END IF;
192665 --
192666 l_component_type             := 'AMB_JLT';
192667 l_component_code             := 'OFFSET';
192668 l_component_type_code        := 'S';
192669 l_component_appl_id          :=  707;
192670 l_amb_context_code           := 'DEFAULT';
192671 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
192672 l_event_class_code           := 'WIP_MTL';
192673 l_event_type_code            := 'WIP_ASSEMBLY_RETURN';
192674 l_line_definition_owner_code := 'S';
192675 l_line_definition_code       := 'PI_WIP_ASSEMBLY_RETURN';
192676 --
192677 l_balance_type_code          := 'A';
192678 l_segment                     := NULL;
192679 l_ccid                        := NULL;
192680 l_adr_transaction_coa_id      := NULL;
192681 l_adr_accounting_coa_id       := NULL;
192682 l_adr_flexfield_segment_code  := NULL;
192683 l_adr_flex_value_set_id       := NULL;
192684 l_adr_value_type_code         := NULL;
192685 l_adr_value_combination_id    := NULL;
192686 l_adr_value_segment_code      := NULL;
192687 
192688 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
192689 l_bflow_class_code           := '';    -- 4219869 Business Flow
192690 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
192691 l_budgetary_control_flag     := 'N';
192692 
192693 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
192694 l_bflow_applied_to_amt       := NULL; -- 5132302
192695 l_entered_amt_idx            := NULL;          -- 4262811
192696 l_accted_amt_idx             := NULL;          -- 4262811
192697 l_acc_rev_flag               := NULL;          -- 4262811
192698 l_accrual_line_num           := NULL;          -- 4262811
192699 l_tmp_amt                    := NULL;          -- 4262811
192700 --
192701  
192702 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
192703     l_balance_type_code <> 'B' THEN
192704 IF NVL(p_source_97,9E125) =  2
192705  THEN 
192706 
192707    --
192708    XLA_AE_LINES_PKG.SetNewLine;
192709 
192710    p_balance_type_code          := l_balance_type_code;
192711    -- set the flag so later we will know whether the gain loss line needs to be created
192712    
192713    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
192714      p_actual_flag :='A';
192715    END IF;
192716 
192717    --
192718    -- bulk performance
192719    --
192720    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
192721                                       p_header_num   => 0); -- 4262811
192722    --
192723    -- set accounting line options
192724    --
192725    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
192726            p_natural_side_code          => 'D'
192727          , p_gain_or_loss_flag          => 'N'
192728          , p_gl_transfer_mode_code      => 'S'
192729          , p_acct_entry_type_code       => 'A'
192730          , p_switch_side_flag           => 'Y'
192731          , p_merge_duplicate_code       => 'N'
192732          );
192733    --
192734    l_acc_rev_natural_side_code := 'C';  -- 4262811
192735    -- 
192736    --
192737    -- set accounting line type info
192738    --
192739    xla_ae_lines_pkg.SetAcctLineType
192740       (p_component_type             => l_component_type
192741       ,p_event_type_code            => l_event_type_code
192742       ,p_line_definition_owner_code => l_line_definition_owner_code
192743       ,p_line_definition_code       => l_line_definition_code
192744       ,p_accounting_line_code       => l_component_code
192745       ,p_accounting_line_type_code  => l_component_type_code
192746       ,p_accounting_line_appl_id    => l_component_appl_id
192747       ,p_amb_context_code           => l_amb_context_code
192748       ,p_entity_code                => l_entity_code
192749       ,p_event_class_code           => l_event_class_code);
192750    --
192751    -- set accounting class
192752    --
192753    xla_ae_lines_pkg.SetAcctClass(
192754            p_accounting_class_code  => 'OFFSET'
192755          , p_ae_header_id           => l_ae_header_id
192756          );
192757 
192758    --
192759    -- set rounding class
192760    --
192761    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
192762                       'OFFSET';
192763 
192764    --
192765    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
192766    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
192767    --
192768    -- bulk performance
192769    --
192770    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
192771 
192772    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
192773       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
192774 
192775    -- 4955764
192776    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
192777       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
192778 
192779    -- 4458381 Public Sector Enh
192780    
192781    --
192782    -- set accounting attributes for the line type
192783    --
192784    l_entered_amt_idx := 3;
192785    l_accted_amt_idx  := 8;
192786    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
192787    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
192788    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
192789    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
192790    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
192791    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
192792    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
192793    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
192794    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
192795    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
192796    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
192797    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
192798    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
192799    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
192800    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
192801    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
192802    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
192803 
192804    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
192805    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
192806 
192807    ---------------------------------------------------------------------------------------------------------------
192808    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
192809    ---------------------------------------------------------------------------------------------------------------
192810    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
192811 
192812    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
192813    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
192814 
192815    IF xla_accounting_cache_pkg.GetValueChar
192816          (p_source_code         => 'LEDGER_CATEGORY_CODE'
192817          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
192818    AND l_bflow_method_code = 'PRIOR_ENTRY'
192819 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
192820    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
192821          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
192822        )
192823    THEN
192824          xla_ae_lines_pkg.BflowUpgEntry
192825            (p_business_method_code    => l_bflow_method_code
192826            ,p_business_class_code     => l_bflow_class_code
192827            ,p_balance_type            => l_balance_type_code);
192828    ELSE
192829       NULL;
192830 -- No business flow processing for business flow method of NONE.
192831    END IF;
192832 
192833    --
192834    -- call analytical criteria
192835    --
192836    
192837    --
192838    -- call description
192839    --
192840    
192841 xla_ae_lines_pkg.SetLineDescription(
192842    p_ae_header_id => l_ae_header_id
192843   ,p_description  => Description_1 (
192844      p_application_id         => p_application_id
192845    , p_ae_header_id           => l_ae_header_id 
192846 , p_source_1 => p_source_1
192847 , p_source_2 => p_source_2
192848 , p_source_3 => p_source_3
192849 , p_source_4 => p_source_4
192850 , p_source_5 => p_source_5
192851    )
192852 );
192853 
192854 
192855    --
192856    -- call ADRs
192857    -- Bug 4922099
192858    --
192859    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
192860         (NVL(l_actual_upg_option, 'N') = 'O') OR
192861         (NVL(l_enc_upg_option, 'N') = 'O')
192862       )
192863    THEN
192864    NULL;
192865    --
192866    --
192867    
192868   l_ccid := AcctDerRule_6(
192869            p_application_id           => p_application_id
192870          , p_ae_header_id             => l_ae_header_id 
192871 , p_source_11 => p_source_11
192872          , x_transaction_coa_id       => l_adr_transaction_coa_id
192873          , x_accounting_coa_id        => l_adr_accounting_coa_id
192874          , x_value_type_code          => l_adr_value_type_code
192875          , p_side                     => 'NA'
192876    );
192877 
192878    xla_ae_lines_pkg.set_ccid(
192879     p_code_combination_id          => l_ccid
192880   , p_value_type_code              => l_adr_value_type_code
192881   , p_transaction_coa_id           => l_adr_transaction_coa_id
192882   , p_accounting_coa_id            => l_adr_accounting_coa_id
192883   , p_adr_code                     => 'CST_DEFAULT'
192884   , p_adr_type_code                => 'S'
192885   , p_component_type               => l_component_type
192886   , p_component_code               => l_component_code
192887   , p_component_type_code          => l_component_type_code
192888   , p_component_appl_id            => l_component_appl_id
192889   , p_amb_context_code             => l_amb_context_code
192890   , p_side                         => 'NA'
192891   );
192892 
192893 
192894    --
192895    --
192896    END IF;
192897    --
192898    -- Bug 4922099
192899    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
192900           (NVL(l_enc_upg_option, 'N') = 'O')
192901         ) AND
192902         (l_bflow_method_code = 'PRIOR_ENTRY')
192903       )
192904    THEN
192905       IF
192906       --
192907       1 = 2
192908       --
192909       THEN
192910       xla_accounting_err_pkg.build_message
192911                                     (p_appli_s_name            => 'XLA'
192912                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
192913                                     ,p_token_1                 => 'LINE_NUMBER'
192914                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
192915                                     ,p_token_2                 => 'LINE_TYPE_NAME'
192916                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
192917                                                                              l_component_type
192918                                                                             ,l_component_code
192919                                                                             ,l_component_type_code
192920                                                                             ,l_component_appl_id
192921                                                                             ,l_amb_context_code
192922                                                                             ,l_entity_code
192923                                                                             ,l_event_class_code
192924                                                                            )
192925                                     ,p_token_3                 => 'OWNER'
192926                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
192927                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
192928                                                                           ,p_lookup_code    => l_component_type_code
192929                                                                          )
192930                                     ,p_token_4                 => 'PRODUCT_NAME'
192931                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
192932                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
192933                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
192934                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
192935                                     ,p_ae_header_id            =>  NULL
192936                                        );
192937 
192938         IF (C_LEVEL_ERROR>= g_log_level) THEN
192939                  trace
192940                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
192941                       ,p_level    => C_LEVEL_ERROR
192942                       ,p_module   => l_log_module);
192943         END IF;
192944       END IF;
192945    END IF;
192946    --
192947    --
192948    ------------------------------------------------------------------------------------------------
192949    -- 4219869 Business Flow
192950    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
192951    -- Prior Entry.  Currently, the following code is always generated.
192952    ------------------------------------------------------------------------------------------------
192953    XLA_AE_LINES_PKG.ValidateCurrentLine;
192954 
192955    ------------------------------------------------------------------------------------
192956    -- 4219869 Business Flow
192957    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
192958    ------------------------------------------------------------------------------------
192959    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
192960 
192961    ----------------------------------------------------------------------------------
192962    -- 4219869 Business Flow
192963    -- Update journal entry status -- Need to generate this within IF <condition>
192964    ----------------------------------------------------------------------------------
192965    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
192966          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
192967          ,p_balance_type_code => l_balance_type_code
192968          );
192969 
192970    -------------------------------------------------------------------------------------------
192971    -- 4262811 - Generate the Accrual Reversal lines
192972    -------------------------------------------------------------------------------------------
192973    BEGIN
192974       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
192975                               (g_array_event(p_event_id).array_value_num('header_index'));
192976       IF l_acc_rev_flag IS NULL THEN
192977          l_acc_rev_flag := 'N';
192978       END IF;
192979    EXCEPTION
192980       WHEN OTHERS THEN
192981          l_acc_rev_flag := 'N';
192982    END;
192983    --
192984    IF (l_acc_rev_flag = 'Y') THEN
192985 
192986        -- 4645092  ------------------------------------------------------------------------------
192987        -- To allow MPA report to determine if it should generate report process
192988        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
192989        ------------------------------------------------------------------------------------------
192990 
192991        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
192992        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
192993    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
192994    -- call ADRs
192995    -- Bug 4922099
192996    --
192997    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
192998         (NVL(l_actual_upg_option, 'N') = 'O') OR
192999         (NVL(l_enc_upg_option, 'N') = 'O')
193000       )
193001    THEN
193002    NULL;
193003    --
193004    --
193005    
193006   l_ccid := AcctDerRule_6(
193007            p_application_id           => p_application_id
193008          , p_ae_header_id             => l_ae_header_id 
193009 , p_source_11 => p_source_11
193010          , x_transaction_coa_id       => l_adr_transaction_coa_id
193011          , x_accounting_coa_id        => l_adr_accounting_coa_id
193012          , x_value_type_code          => l_adr_value_type_code
193013          , p_side                     => 'NA'
193014    );
193015 
193016    xla_ae_lines_pkg.set_ccid(
193017     p_code_combination_id          => l_ccid
193018   , p_value_type_code              => l_adr_value_type_code
193019   , p_transaction_coa_id           => l_adr_transaction_coa_id
193020   , p_accounting_coa_id            => l_adr_accounting_coa_id
193021   , p_adr_code                     => 'CST_DEFAULT'
193022   , p_adr_type_code                => 'S'
193023   , p_component_type               => l_component_type
193024   , p_component_code               => l_component_code
193025   , p_component_type_code          => l_component_type_code
193026   , p_component_appl_id            => l_component_appl_id
193027   , p_amb_context_code             => l_amb_context_code
193028   , p_side                         => 'NA'
193029   );
193030 
193031 
193032    --
193033    --
193034    END IF;
193035 
193036        --
193037        -- Update the line information that should be overwritten
193038        --
193039        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
193040                                          p_header_num   => 1);
193041        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
193042 
193043        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
193044 
193045        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
193046           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
193047        END IF;
193048 
193049       --
193050       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
193051       --
193052       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
193053           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
193054       ELSE
193055           ---------------------------------------------------------------------------------------------------
193056           -- 4262811a Switch Sign
193057           ---------------------------------------------------------------------------------------------------
193058           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
193059           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
193060                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
193061           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
193062                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
193063           -- 5132302
193064           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
193065                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
193066 
193067       END IF;
193068 
193069       -- 4955764
193070       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
193071       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
193072 
193073 
193074       XLA_AE_LINES_PKG.ValidateCurrentLine;
193075       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
193076 
193077       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
193078                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
193079                ,p_balance_type_code => l_balance_type_code);
193080 
193081    END IF;
193082 
193083    -----------------------------------------------------------------------------------------
193084    -- 4262811 Multiperiod Accounting
193085    -----------------------------------------------------------------------------------------
193086      -- No MPA option is assigned.
193087 
193088 
193089 END IF;
193090 END IF;
193091 --
193092 
193093 --
193094 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193095    trace
193096       (p_msg      => 'END of AcctLineType_353'
193097       ,p_level    => C_LEVEL_PROCEDURE
193098       ,p_module   => l_log_module);
193099 END IF;
193100 --
193101 EXCEPTION
193102   WHEN xla_exceptions_pkg.application_exception THEN
193103       RAISE;
193104   WHEN OTHERS THEN
193105        xla_exceptions_pkg.raise_message
193106            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_353');
193107 END AcctLineType_353;
193108 --
193109 
193110 ---------------------------------------
193111 --
193112 -- PRIVATE FUNCTION
193113 --         AcctLineType_354
193114 --
193115 ---------------------------------------
193116 PROCEDURE AcctLineType_354 (
193117   p_application_id        IN NUMBER
193118  ,p_event_id              IN NUMBER
193119  ,p_calculate_acctd_flag  IN VARCHAR2
193120  ,p_calculate_g_l_flag    IN VARCHAR2
193121  ,p_actual_flag           IN OUT VARCHAR2
193122  ,p_balance_type_code     OUT VARCHAR2
193123  ,p_gain_or_loss_ref      OUT VARCHAR2
193124  
193125 --TRANSACTION_ID
193126  , p_source_1            IN NUMBER
193127 --Item Concatenated Segments
193128  , p_source_2            IN VARCHAR2
193129 --Transaction Quantity
193130  , p_source_3            IN NUMBER
193131 --Transaction Unit of Measure Code
193132  , p_source_4            IN VARCHAR2
193133 --Inventory Transaction Type Description
193134  , p_source_5            IN VARCHAR2
193135 --Cost Management Default Account
193136  , p_source_11            IN NUMBER
193137 --DISTRIBUTION_IDENTIFIER
193138  , p_source_84            IN NUMBER
193139 --Distribution Type
193140  , p_source_85            IN VARCHAR2
193141  , p_source_85_meaning    IN VARCHAR2
193142 --Entered Currency Code
193143  , p_source_88            IN VARCHAR2
193144 --Entered Amount
193145  , p_source_91            IN NUMBER
193146 --Currency Conversion Date
193147  , p_source_92            IN DATE
193148 --Currency Conversion Rate
193149  , p_source_93            IN NUMBER
193150 --Currency Conversion Type
193151  , p_source_94            IN VARCHAR2
193152 --Accounted Amount
193153  , p_source_95            IN NUMBER
193154 --Accounting Line Type
193155  , p_source_97            IN NUMBER
193156 )
193157 IS
193158 
193159 l_component_type              VARCHAR2(80);
193160 l_component_code              VARCHAR2(30);
193161 l_component_type_code         VARCHAR2(1);
193162 l_component_appl_id           INTEGER;
193163 l_amb_context_code            VARCHAR2(30);
193164 l_entity_code                 VARCHAR2(30);
193165 l_event_class_code            VARCHAR2(30);
193166 l_ae_header_id                NUMBER;
193167 l_event_type_code             VARCHAR2(30);
193168 l_line_definition_code        VARCHAR2(30);
193169 l_line_definition_owner_code  VARCHAR2(1);
193170 --
193171 -- adr variables
193172 l_segment                     VARCHAR2(30);
193173 l_ccid                        NUMBER;
193174 l_adr_transaction_coa_id      NUMBER;
193175 l_adr_accounting_coa_id       NUMBER;
193176 l_adr_flexfield_segment_code  VARCHAR2(30);
193177 l_adr_flex_value_set_id       NUMBER;
193178 l_adr_value_type_code         VARCHAR2(30);
193179 l_adr_value_combination_id    NUMBER;
193180 l_adr_value_segment_code      VARCHAR2(30);
193181 
193182 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
193183 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
193184 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
193185 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
193186 
193187 -- 4262811 Variables ------------------------------------------------------------------------------------------
193188 l_entered_amt_idx             NUMBER;
193189 l_accted_amt_idx              NUMBER;
193190 l_acc_rev_flag                VARCHAR2(1);
193191 l_accrual_line_num            NUMBER;
193192 l_tmp_amt                     NUMBER;
193193 l_acc_rev_natural_side_code   VARCHAR2(1);
193194 
193195 l_num_entries                 NUMBER;
193196 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
193197 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
193198 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
193199 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
193200 l_recog_line_1                NUMBER;
193201 l_recog_line_2                NUMBER;
193202 
193203 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
193204 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
193205 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
193206 
193207 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
193208 
193209 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
193210 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
193211 
193212 ---------------------------------------------------------------------------------------------------------------
193213 
193214 
193215 --
193216 -- bulk performance
193217 --
193218 l_balance_type_code           VARCHAR2(1);
193219 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
193220 l_log_module                  VARCHAR2(240);
193221 
193222 --
193223 -- Upgrade strategy
193224 --
193225 l_actual_upg_option           VARCHAR2(1);
193226 l_enc_upg_option           VARCHAR2(1);
193227 
193228 --
193229 BEGIN
193230 --
193231 IF g_log_enabled THEN
193232       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_354';
193233 END IF;
193234 --
193235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193236 
193237       trace
193238          (p_msg      => 'BEGIN of AcctLineType_354'
193239          ,p_level    => C_LEVEL_PROCEDURE
193240          ,p_module   => l_log_module);
193241 
193242 END IF;
193243 --
193244 l_component_type             := 'AMB_JLT';
193245 l_component_code             := 'OFFSET';
193246 l_component_type_code        := 'S';
193247 l_component_appl_id          :=  707;
193248 l_amb_context_code           := 'DEFAULT';
193249 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
193250 l_event_class_code           := 'WIP_MTL';
193251 l_event_type_code            := 'WIP_COMP_RETURN';
193252 l_line_definition_owner_code := 'S';
193253 l_line_definition_code       := 'PI_WIP_COMP_RETURN';
193254 --
193255 l_balance_type_code          := 'A';
193256 l_segment                     := NULL;
193257 l_ccid                        := NULL;
193258 l_adr_transaction_coa_id      := NULL;
193259 l_adr_accounting_coa_id       := NULL;
193260 l_adr_flexfield_segment_code  := NULL;
193261 l_adr_flex_value_set_id       := NULL;
193262 l_adr_value_type_code         := NULL;
193263 l_adr_value_combination_id    := NULL;
193264 l_adr_value_segment_code      := NULL;
193265 
193266 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
193267 l_bflow_class_code           := '';    -- 4219869 Business Flow
193268 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
193269 l_budgetary_control_flag     := 'N';
193270 
193271 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
193272 l_bflow_applied_to_amt       := NULL; -- 5132302
193273 l_entered_amt_idx            := NULL;          -- 4262811
193274 l_accted_amt_idx             := NULL;          -- 4262811
193275 l_acc_rev_flag               := NULL;          -- 4262811
193276 l_accrual_line_num           := NULL;          -- 4262811
193277 l_tmp_amt                    := NULL;          -- 4262811
193278 --
193279  
193280 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
193281     l_balance_type_code <> 'B' THEN
193282 IF NVL(p_source_97,9E125) =  2
193283  THEN 
193284 
193285    --
193286    XLA_AE_LINES_PKG.SetNewLine;
193287 
193288    p_balance_type_code          := l_balance_type_code;
193289    -- set the flag so later we will know whether the gain loss line needs to be created
193290    
193291    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
193292      p_actual_flag :='A';
193293    END IF;
193294 
193295    --
193296    -- bulk performance
193297    --
193298    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
193299                                       p_header_num   => 0); -- 4262811
193300    --
193301    -- set accounting line options
193302    --
193303    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
193304            p_natural_side_code          => 'D'
193305          , p_gain_or_loss_flag          => 'N'
193306          , p_gl_transfer_mode_code      => 'S'
193307          , p_acct_entry_type_code       => 'A'
193308          , p_switch_side_flag           => 'Y'
193309          , p_merge_duplicate_code       => 'N'
193310          );
193311    --
193312    l_acc_rev_natural_side_code := 'C';  -- 4262811
193313    -- 
193314    --
193315    -- set accounting line type info
193316    --
193317    xla_ae_lines_pkg.SetAcctLineType
193318       (p_component_type             => l_component_type
193319       ,p_event_type_code            => l_event_type_code
193320       ,p_line_definition_owner_code => l_line_definition_owner_code
193321       ,p_line_definition_code       => l_line_definition_code
193322       ,p_accounting_line_code       => l_component_code
193323       ,p_accounting_line_type_code  => l_component_type_code
193324       ,p_accounting_line_appl_id    => l_component_appl_id
193325       ,p_amb_context_code           => l_amb_context_code
193326       ,p_entity_code                => l_entity_code
193327       ,p_event_class_code           => l_event_class_code);
193328    --
193329    -- set accounting class
193330    --
193331    xla_ae_lines_pkg.SetAcctClass(
193332            p_accounting_class_code  => 'OFFSET'
193333          , p_ae_header_id           => l_ae_header_id
193334          );
193335 
193336    --
193337    -- set rounding class
193338    --
193339    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
193340                       'OFFSET';
193341 
193342    --
193343    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
193344    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
193345    --
193346    -- bulk performance
193347    --
193348    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
193349 
193350    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
193351       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
193352 
193353    -- 4955764
193354    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
193355       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
193356 
193357    -- 4458381 Public Sector Enh
193358    
193359    --
193360    -- set accounting attributes for the line type
193361    --
193362    l_entered_amt_idx := 3;
193363    l_accted_amt_idx  := 8;
193364    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
193365    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
193366    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
193367    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
193368    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
193369    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
193370    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
193371    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
193372    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
193373    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
193374    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
193375    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
193376    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
193377    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
193378    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
193379    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
193380    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
193381 
193382    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
193383    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
193384 
193385    ---------------------------------------------------------------------------------------------------------------
193386    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
193387    ---------------------------------------------------------------------------------------------------------------
193388    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
193389 
193390    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
193391    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
193392 
193393    IF xla_accounting_cache_pkg.GetValueChar
193394          (p_source_code         => 'LEDGER_CATEGORY_CODE'
193395          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
193396    AND l_bflow_method_code = 'PRIOR_ENTRY'
193397 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
193398    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
193399          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
193400        )
193401    THEN
193402          xla_ae_lines_pkg.BflowUpgEntry
193403            (p_business_method_code    => l_bflow_method_code
193404            ,p_business_class_code     => l_bflow_class_code
193405            ,p_balance_type            => l_balance_type_code);
193406    ELSE
193407       NULL;
193408 -- No business flow processing for business flow method of NONE.
193409    END IF;
193410 
193411    --
193412    -- call analytical criteria
193413    --
193414    
193415    --
193416    -- call description
193417    --
193418    
193419 xla_ae_lines_pkg.SetLineDescription(
193420    p_ae_header_id => l_ae_header_id
193421   ,p_description  => Description_1 (
193422      p_application_id         => p_application_id
193423    , p_ae_header_id           => l_ae_header_id 
193424 , p_source_1 => p_source_1
193425 , p_source_2 => p_source_2
193426 , p_source_3 => p_source_3
193427 , p_source_4 => p_source_4
193428 , p_source_5 => p_source_5
193429    )
193430 );
193431 
193432 
193433    --
193434    -- call ADRs
193435    -- Bug 4922099
193436    --
193437    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
193438         (NVL(l_actual_upg_option, 'N') = 'O') OR
193439         (NVL(l_enc_upg_option, 'N') = 'O')
193440       )
193441    THEN
193442    NULL;
193443    --
193444    --
193445    
193446   l_ccid := AcctDerRule_6(
193447            p_application_id           => p_application_id
193448          , p_ae_header_id             => l_ae_header_id 
193449 , p_source_11 => p_source_11
193450          , x_transaction_coa_id       => l_adr_transaction_coa_id
193451          , x_accounting_coa_id        => l_adr_accounting_coa_id
193452          , x_value_type_code          => l_adr_value_type_code
193453          , p_side                     => 'NA'
193454    );
193455 
193456    xla_ae_lines_pkg.set_ccid(
193457     p_code_combination_id          => l_ccid
193458   , p_value_type_code              => l_adr_value_type_code
193459   , p_transaction_coa_id           => l_adr_transaction_coa_id
193460   , p_accounting_coa_id            => l_adr_accounting_coa_id
193461   , p_adr_code                     => 'CST_DEFAULT'
193462   , p_adr_type_code                => 'S'
193463   , p_component_type               => l_component_type
193464   , p_component_code               => l_component_code
193465   , p_component_type_code          => l_component_type_code
193466   , p_component_appl_id            => l_component_appl_id
193467   , p_amb_context_code             => l_amb_context_code
193468   , p_side                         => 'NA'
193469   );
193470 
193471 
193472    --
193473    --
193474    END IF;
193475    --
193476    -- Bug 4922099
193477    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
193478           (NVL(l_enc_upg_option, 'N') = 'O')
193479         ) AND
193480         (l_bflow_method_code = 'PRIOR_ENTRY')
193481       )
193482    THEN
193483       IF
193484       --
193485       1 = 2
193486       --
193487       THEN
193488       xla_accounting_err_pkg.build_message
193489                                     (p_appli_s_name            => 'XLA'
193490                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
193491                                     ,p_token_1                 => 'LINE_NUMBER'
193492                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
193493                                     ,p_token_2                 => 'LINE_TYPE_NAME'
193494                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
193495                                                                              l_component_type
193496                                                                             ,l_component_code
193497                                                                             ,l_component_type_code
193498                                                                             ,l_component_appl_id
193499                                                                             ,l_amb_context_code
193500                                                                             ,l_entity_code
193501                                                                             ,l_event_class_code
193502                                                                            )
193503                                     ,p_token_3                 => 'OWNER'
193504                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
193505                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
193506                                                                           ,p_lookup_code    => l_component_type_code
193507                                                                          )
193508                                     ,p_token_4                 => 'PRODUCT_NAME'
193509                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
193510                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
193511                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
193512                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
193513                                     ,p_ae_header_id            =>  NULL
193514                                        );
193515 
193516         IF (C_LEVEL_ERROR>= g_log_level) THEN
193517                  trace
193518                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
193519                       ,p_level    => C_LEVEL_ERROR
193520                       ,p_module   => l_log_module);
193521         END IF;
193522       END IF;
193523    END IF;
193524    --
193525    --
193526    ------------------------------------------------------------------------------------------------
193527    -- 4219869 Business Flow
193528    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
193529    -- Prior Entry.  Currently, the following code is always generated.
193530    ------------------------------------------------------------------------------------------------
193531    XLA_AE_LINES_PKG.ValidateCurrentLine;
193532 
193533    ------------------------------------------------------------------------------------
193534    -- 4219869 Business Flow
193535    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
193536    ------------------------------------------------------------------------------------
193537    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
193538 
193539    ----------------------------------------------------------------------------------
193540    -- 4219869 Business Flow
193541    -- Update journal entry status -- Need to generate this within IF <condition>
193542    ----------------------------------------------------------------------------------
193543    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
193544          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
193545          ,p_balance_type_code => l_balance_type_code
193546          );
193547 
193548    -------------------------------------------------------------------------------------------
193549    -- 4262811 - Generate the Accrual Reversal lines
193550    -------------------------------------------------------------------------------------------
193551    BEGIN
193552       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
193553                               (g_array_event(p_event_id).array_value_num('header_index'));
193554       IF l_acc_rev_flag IS NULL THEN
193555          l_acc_rev_flag := 'N';
193556       END IF;
193557    EXCEPTION
193558       WHEN OTHERS THEN
193559          l_acc_rev_flag := 'N';
193560    END;
193561    --
193562    IF (l_acc_rev_flag = 'Y') THEN
193563 
193564        -- 4645092  ------------------------------------------------------------------------------
193565        -- To allow MPA report to determine if it should generate report process
193566        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
193567        ------------------------------------------------------------------------------------------
193568 
193569        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
193570        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
193571    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
193572    -- call ADRs
193573    -- Bug 4922099
193574    --
193575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
193576         (NVL(l_actual_upg_option, 'N') = 'O') OR
193577         (NVL(l_enc_upg_option, 'N') = 'O')
193578       )
193579    THEN
193580    NULL;
193581    --
193582    --
193583    
193584   l_ccid := AcctDerRule_6(
193585            p_application_id           => p_application_id
193586          , p_ae_header_id             => l_ae_header_id 
193587 , p_source_11 => p_source_11
193588          , x_transaction_coa_id       => l_adr_transaction_coa_id
193589          , x_accounting_coa_id        => l_adr_accounting_coa_id
193590          , x_value_type_code          => l_adr_value_type_code
193591          , p_side                     => 'NA'
193592    );
193593 
193594    xla_ae_lines_pkg.set_ccid(
193595     p_code_combination_id          => l_ccid
193596   , p_value_type_code              => l_adr_value_type_code
193597   , p_transaction_coa_id           => l_adr_transaction_coa_id
193598   , p_accounting_coa_id            => l_adr_accounting_coa_id
193599   , p_adr_code                     => 'CST_DEFAULT'
193600   , p_adr_type_code                => 'S'
193601   , p_component_type               => l_component_type
193602   , p_component_code               => l_component_code
193603   , p_component_type_code          => l_component_type_code
193604   , p_component_appl_id            => l_component_appl_id
193605   , p_amb_context_code             => l_amb_context_code
193606   , p_side                         => 'NA'
193607   );
193608 
193609 
193610    --
193611    --
193612    END IF;
193613 
193614        --
193615        -- Update the line information that should be overwritten
193616        --
193617        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
193618                                          p_header_num   => 1);
193619        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
193620 
193621        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
193622 
193623        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
193624           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
193625        END IF;
193626 
193627       --
193628       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
193629       --
193630       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
193631           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
193632       ELSE
193633           ---------------------------------------------------------------------------------------------------
193634           -- 4262811a Switch Sign
193635           ---------------------------------------------------------------------------------------------------
193636           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
193637           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
193638                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
193639           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
193640                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
193641           -- 5132302
193642           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
193643                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
193644 
193645       END IF;
193646 
193647       -- 4955764
193648       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
193649       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
193650 
193651 
193652       XLA_AE_LINES_PKG.ValidateCurrentLine;
193653       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
193654 
193655       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
193656                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
193657                ,p_balance_type_code => l_balance_type_code);
193658 
193659    END IF;
193660 
193661    -----------------------------------------------------------------------------------------
193662    -- 4262811 Multiperiod Accounting
193663    -----------------------------------------------------------------------------------------
193664      -- No MPA option is assigned.
193665 
193666 
193667 END IF;
193668 END IF;
193669 --
193670 
193671 --
193672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193673    trace
193674       (p_msg      => 'END of AcctLineType_354'
193675       ,p_level    => C_LEVEL_PROCEDURE
193676       ,p_module   => l_log_module);
193677 END IF;
193678 --
193679 EXCEPTION
193680   WHEN xla_exceptions_pkg.application_exception THEN
193681       RAISE;
193682   WHEN OTHERS THEN
193683        xla_exceptions_pkg.raise_message
193684            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_354');
193685 END AcctLineType_354;
193686 --
193687 
193688 ---------------------------------------
193689 --
193690 -- PRIVATE FUNCTION
193691 --         AcctLineType_355
193692 --
193693 ---------------------------------------
193694 PROCEDURE AcctLineType_355 (
193695   p_application_id        IN NUMBER
193696  ,p_event_id              IN NUMBER
193697  ,p_calculate_acctd_flag  IN VARCHAR2
193698  ,p_calculate_g_l_flag    IN VARCHAR2
193699  ,p_actual_flag           IN OUT VARCHAR2
193700  ,p_balance_type_code     OUT VARCHAR2
193701  ,p_gain_or_loss_ref      OUT VARCHAR2
193702  
193703 --TRANSACTION_ID
193704  , p_source_1            IN NUMBER
193705 --Item Concatenated Segments
193706  , p_source_2            IN VARCHAR2
193707 --Transaction Quantity
193708  , p_source_3            IN NUMBER
193709 --Transaction Unit of Measure Code
193710  , p_source_4            IN VARCHAR2
193711 --Inventory Transaction Type Description
193712  , p_source_5            IN VARCHAR2
193713 --Cost Management Default Account
193714  , p_source_11            IN NUMBER
193715 --DISTRIBUTION_IDENTIFIER
193716  , p_source_84            IN NUMBER
193717 --Distribution Type
193718  , p_source_85            IN VARCHAR2
193719  , p_source_85_meaning    IN VARCHAR2
193720 --Entered Currency Code
193721  , p_source_88            IN VARCHAR2
193722 --Entered Amount
193723  , p_source_91            IN NUMBER
193724 --Currency Conversion Date
193725  , p_source_92            IN DATE
193726 --Currency Conversion Rate
193727  , p_source_93            IN NUMBER
193728 --Currency Conversion Type
193729  , p_source_94            IN VARCHAR2
193730 --Accounted Amount
193731  , p_source_95            IN NUMBER
193732 --Accounting Line Type
193733  , p_source_97            IN NUMBER
193734 )
193735 IS
193736 
193737 l_component_type              VARCHAR2(80);
193738 l_component_code              VARCHAR2(30);
193739 l_component_type_code         VARCHAR2(1);
193740 l_component_appl_id           INTEGER;
193741 l_amb_context_code            VARCHAR2(30);
193742 l_entity_code                 VARCHAR2(30);
193743 l_event_class_code            VARCHAR2(30);
193744 l_ae_header_id                NUMBER;
193745 l_event_type_code             VARCHAR2(30);
193746 l_line_definition_code        VARCHAR2(30);
193747 l_line_definition_owner_code  VARCHAR2(1);
193748 --
193749 -- adr variables
193750 l_segment                     VARCHAR2(30);
193751 l_ccid                        NUMBER;
193752 l_adr_transaction_coa_id      NUMBER;
193753 l_adr_accounting_coa_id       NUMBER;
193754 l_adr_flexfield_segment_code  VARCHAR2(30);
193755 l_adr_flex_value_set_id       NUMBER;
193756 l_adr_value_type_code         VARCHAR2(30);
193757 l_adr_value_combination_id    NUMBER;
193758 l_adr_value_segment_code      VARCHAR2(30);
193759 
193760 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
193761 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
193762 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
193763 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
193764 
193765 -- 4262811 Variables ------------------------------------------------------------------------------------------
193766 l_entered_amt_idx             NUMBER;
193767 l_accted_amt_idx              NUMBER;
193768 l_acc_rev_flag                VARCHAR2(1);
193769 l_accrual_line_num            NUMBER;
193770 l_tmp_amt                     NUMBER;
193771 l_acc_rev_natural_side_code   VARCHAR2(1);
193772 
193773 l_num_entries                 NUMBER;
193774 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
193775 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
193776 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
193777 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
193778 l_recog_line_1                NUMBER;
193779 l_recog_line_2                NUMBER;
193780 
193781 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
193782 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
193783 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
193784 
193785 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
193786 
193787 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
193788 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
193789 
193790 ---------------------------------------------------------------------------------------------------------------
193791 
193792 
193793 --
193794 -- bulk performance
193795 --
193796 l_balance_type_code           VARCHAR2(1);
193797 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
193798 l_log_module                  VARCHAR2(240);
193799 
193800 --
193801 -- Upgrade strategy
193802 --
193803 l_actual_upg_option           VARCHAR2(1);
193804 l_enc_upg_option           VARCHAR2(1);
193805 
193806 --
193807 BEGIN
193808 --
193809 IF g_log_enabled THEN
193810       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_355';
193811 END IF;
193812 --
193813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193814 
193815       trace
193816          (p_msg      => 'BEGIN of AcctLineType_355'
193817          ,p_level    => C_LEVEL_PROCEDURE
193818          ,p_module   => l_log_module);
193819 
193820 END IF;
193821 --
193822 l_component_type             := 'AMB_JLT';
193823 l_component_code             := 'OFFSET';
193824 l_component_type_code        := 'S';
193825 l_component_appl_id          :=  707;
193826 l_amb_context_code           := 'DEFAULT';
193827 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
193828 l_event_class_code           := 'MISC_ISSUE_RCPT';
193829 l_event_type_code            := 'MISC_ISSUE_RCPT_ALL';
193830 l_line_definition_owner_code := 'S';
193831 l_line_definition_code       := 'PI_MISC_ISSUE_RCPT';
193832 --
193833 l_balance_type_code          := 'A';
193834 l_segment                     := NULL;
193835 l_ccid                        := NULL;
193836 l_adr_transaction_coa_id      := NULL;
193837 l_adr_accounting_coa_id       := NULL;
193838 l_adr_flexfield_segment_code  := NULL;
193839 l_adr_flex_value_set_id       := NULL;
193840 l_adr_value_type_code         := NULL;
193841 l_adr_value_combination_id    := NULL;
193842 l_adr_value_segment_code      := NULL;
193843 
193844 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
193845 l_bflow_class_code           := '';    -- 4219869 Business Flow
193846 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
193847 l_budgetary_control_flag     := 'N';
193848 
193849 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
193850 l_bflow_applied_to_amt       := NULL; -- 5132302
193851 l_entered_amt_idx            := NULL;          -- 4262811
193852 l_accted_amt_idx             := NULL;          -- 4262811
193853 l_acc_rev_flag               := NULL;          -- 4262811
193854 l_accrual_line_num           := NULL;          -- 4262811
193855 l_tmp_amt                    := NULL;          -- 4262811
193856 --
193857  
193858 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
193859     l_balance_type_code <> 'B' THEN
193860 IF NVL(p_source_97,9E125) =  2
193861  THEN 
193862 
193863    --
193864    XLA_AE_LINES_PKG.SetNewLine;
193865 
193866    p_balance_type_code          := l_balance_type_code;
193867    -- set the flag so later we will know whether the gain loss line needs to be created
193868    
193869    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
193870      p_actual_flag :='A';
193871    END IF;
193872 
193873    --
193874    -- bulk performance
193875    --
193876    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
193877                                       p_header_num   => 0); -- 4262811
193878    --
193879    -- set accounting line options
193880    --
193881    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
193882            p_natural_side_code          => 'D'
193883          , p_gain_or_loss_flag          => 'N'
193884          , p_gl_transfer_mode_code      => 'S'
193885          , p_acct_entry_type_code       => 'A'
193886          , p_switch_side_flag           => 'Y'
193887          , p_merge_duplicate_code       => 'N'
193888          );
193889    --
193890    l_acc_rev_natural_side_code := 'C';  -- 4262811
193891    -- 
193892    --
193893    -- set accounting line type info
193894    --
193895    xla_ae_lines_pkg.SetAcctLineType
193896       (p_component_type             => l_component_type
193897       ,p_event_type_code            => l_event_type_code
193898       ,p_line_definition_owner_code => l_line_definition_owner_code
193899       ,p_line_definition_code       => l_line_definition_code
193900       ,p_accounting_line_code       => l_component_code
193901       ,p_accounting_line_type_code  => l_component_type_code
193902       ,p_accounting_line_appl_id    => l_component_appl_id
193903       ,p_amb_context_code           => l_amb_context_code
193904       ,p_entity_code                => l_entity_code
193905       ,p_event_class_code           => l_event_class_code);
193906    --
193907    -- set accounting class
193908    --
193909    xla_ae_lines_pkg.SetAcctClass(
193910            p_accounting_class_code  => 'OFFSET'
193911          , p_ae_header_id           => l_ae_header_id
193912          );
193913 
193914    --
193915    -- set rounding class
193916    --
193917    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
193918                       'OFFSET';
193919 
193920    --
193921    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
193922    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
193923    --
193924    -- bulk performance
193925    --
193926    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
193927 
193928    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
193929       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
193930 
193931    -- 4955764
193932    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
193933       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
193934 
193935    -- 4458381 Public Sector Enh
193936    
193937    --
193938    -- set accounting attributes for the line type
193939    --
193940    l_entered_amt_idx := 3;
193941    l_accted_amt_idx  := 8;
193942    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
193943    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
193944    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
193945    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
193946    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
193947    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
193948    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
193949    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
193950    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
193951    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
193952    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
193953    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
193954    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
193955    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
193956    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
193957    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
193958    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
193959 
193960    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
193961    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
193962 
193963    ---------------------------------------------------------------------------------------------------------------
193964    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
193965    ---------------------------------------------------------------------------------------------------------------
193966    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
193967 
193968    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
193969    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
193970 
193971    IF xla_accounting_cache_pkg.GetValueChar
193972          (p_source_code         => 'LEDGER_CATEGORY_CODE'
193973          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
193974    AND l_bflow_method_code = 'PRIOR_ENTRY'
193975 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
193976    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
193977          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
193978        )
193979    THEN
193980          xla_ae_lines_pkg.BflowUpgEntry
193981            (p_business_method_code    => l_bflow_method_code
193982            ,p_business_class_code     => l_bflow_class_code
193983            ,p_balance_type            => l_balance_type_code);
193984    ELSE
193985       NULL;
193986 -- No business flow processing for business flow method of NONE.
193987    END IF;
193988 
193989    --
193990    -- call analytical criteria
193991    --
193992    
193993    --
193994    -- call description
193995    --
193996    
193997 xla_ae_lines_pkg.SetLineDescription(
193998    p_ae_header_id => l_ae_header_id
193999   ,p_description  => Description_1 (
194000      p_application_id         => p_application_id
194001    , p_ae_header_id           => l_ae_header_id 
194002 , p_source_1 => p_source_1
194003 , p_source_2 => p_source_2
194004 , p_source_3 => p_source_3
194005 , p_source_4 => p_source_4
194006 , p_source_5 => p_source_5
194007    )
194008 );
194009 
194010 
194011    --
194012    -- call ADRs
194013    -- Bug 4922099
194014    --
194015    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
194016         (NVL(l_actual_upg_option, 'N') = 'O') OR
194017         (NVL(l_enc_upg_option, 'N') = 'O')
194018       )
194019    THEN
194020    NULL;
194021    --
194022    --
194023    
194024   l_ccid := AcctDerRule_6(
194025            p_application_id           => p_application_id
194026          , p_ae_header_id             => l_ae_header_id 
194027 , p_source_11 => p_source_11
194028          , x_transaction_coa_id       => l_adr_transaction_coa_id
194029          , x_accounting_coa_id        => l_adr_accounting_coa_id
194030          , x_value_type_code          => l_adr_value_type_code
194031          , p_side                     => 'NA'
194032    );
194033 
194034    xla_ae_lines_pkg.set_ccid(
194035     p_code_combination_id          => l_ccid
194036   , p_value_type_code              => l_adr_value_type_code
194037   , p_transaction_coa_id           => l_adr_transaction_coa_id
194038   , p_accounting_coa_id            => l_adr_accounting_coa_id
194039   , p_adr_code                     => 'CST_DEFAULT'
194040   , p_adr_type_code                => 'S'
194041   , p_component_type               => l_component_type
194042   , p_component_code               => l_component_code
194043   , p_component_type_code          => l_component_type_code
194044   , p_component_appl_id            => l_component_appl_id
194045   , p_amb_context_code             => l_amb_context_code
194046   , p_side                         => 'NA'
194047   );
194048 
194049 
194050    --
194051    --
194052    END IF;
194053    --
194054    -- Bug 4922099
194055    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
194056           (NVL(l_enc_upg_option, 'N') = 'O')
194057         ) AND
194058         (l_bflow_method_code = 'PRIOR_ENTRY')
194059       )
194060    THEN
194061       IF
194062       --
194063       1 = 2
194064       --
194065       THEN
194066       xla_accounting_err_pkg.build_message
194067                                     (p_appli_s_name            => 'XLA'
194068                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
194069                                     ,p_token_1                 => 'LINE_NUMBER'
194070                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
194071                                     ,p_token_2                 => 'LINE_TYPE_NAME'
194072                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
194073                                                                              l_component_type
194074                                                                             ,l_component_code
194075                                                                             ,l_component_type_code
194076                                                                             ,l_component_appl_id
194077                                                                             ,l_amb_context_code
194078                                                                             ,l_entity_code
194079                                                                             ,l_event_class_code
194080                                                                            )
194081                                     ,p_token_3                 => 'OWNER'
194082                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
194083                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
194084                                                                           ,p_lookup_code    => l_component_type_code
194085                                                                          )
194086                                     ,p_token_4                 => 'PRODUCT_NAME'
194087                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
194088                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
194089                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
194090                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
194091                                     ,p_ae_header_id            =>  NULL
194092                                        );
194093 
194094         IF (C_LEVEL_ERROR>= g_log_level) THEN
194095                  trace
194096                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
194097                       ,p_level    => C_LEVEL_ERROR
194098                       ,p_module   => l_log_module);
194099         END IF;
194100       END IF;
194101    END IF;
194102    --
194103    --
194104    ------------------------------------------------------------------------------------------------
194105    -- 4219869 Business Flow
194106    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
194107    -- Prior Entry.  Currently, the following code is always generated.
194108    ------------------------------------------------------------------------------------------------
194109    XLA_AE_LINES_PKG.ValidateCurrentLine;
194110 
194111    ------------------------------------------------------------------------------------
194112    -- 4219869 Business Flow
194113    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
194114    ------------------------------------------------------------------------------------
194115    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
194116 
194117    ----------------------------------------------------------------------------------
194118    -- 4219869 Business Flow
194119    -- Update journal entry status -- Need to generate this within IF <condition>
194120    ----------------------------------------------------------------------------------
194121    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
194122          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
194123          ,p_balance_type_code => l_balance_type_code
194124          );
194125 
194126    -------------------------------------------------------------------------------------------
194127    -- 4262811 - Generate the Accrual Reversal lines
194128    -------------------------------------------------------------------------------------------
194129    BEGIN
194130       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
194131                               (g_array_event(p_event_id).array_value_num('header_index'));
194132       IF l_acc_rev_flag IS NULL THEN
194133          l_acc_rev_flag := 'N';
194134       END IF;
194135    EXCEPTION
194136       WHEN OTHERS THEN
194137          l_acc_rev_flag := 'N';
194138    END;
194139    --
194140    IF (l_acc_rev_flag = 'Y') THEN
194141 
194142        -- 4645092  ------------------------------------------------------------------------------
194143        -- To allow MPA report to determine if it should generate report process
194144        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
194145        ------------------------------------------------------------------------------------------
194146 
194147        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
194148        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
194149    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
194150    -- call ADRs
194151    -- Bug 4922099
194152    --
194153    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
194154         (NVL(l_actual_upg_option, 'N') = 'O') OR
194155         (NVL(l_enc_upg_option, 'N') = 'O')
194156       )
194157    THEN
194158    NULL;
194159    --
194160    --
194161    
194162   l_ccid := AcctDerRule_6(
194163            p_application_id           => p_application_id
194164          , p_ae_header_id             => l_ae_header_id 
194165 , p_source_11 => p_source_11
194166          , x_transaction_coa_id       => l_adr_transaction_coa_id
194167          , x_accounting_coa_id        => l_adr_accounting_coa_id
194168          , x_value_type_code          => l_adr_value_type_code
194169          , p_side                     => 'NA'
194170    );
194171 
194172    xla_ae_lines_pkg.set_ccid(
194173     p_code_combination_id          => l_ccid
194174   , p_value_type_code              => l_adr_value_type_code
194175   , p_transaction_coa_id           => l_adr_transaction_coa_id
194176   , p_accounting_coa_id            => l_adr_accounting_coa_id
194177   , p_adr_code                     => 'CST_DEFAULT'
194178   , p_adr_type_code                => 'S'
194179   , p_component_type               => l_component_type
194180   , p_component_code               => l_component_code
194181   , p_component_type_code          => l_component_type_code
194182   , p_component_appl_id            => l_component_appl_id
194183   , p_amb_context_code             => l_amb_context_code
194184   , p_side                         => 'NA'
194185   );
194186 
194187 
194188    --
194189    --
194190    END IF;
194191 
194192        --
194193        -- Update the line information that should be overwritten
194194        --
194195        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
194196                                          p_header_num   => 1);
194197        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
194198 
194199        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
194200 
194201        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
194202           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
194203        END IF;
194204 
194205       --
194206       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
194207       --
194208       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
194209           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
194210       ELSE
194211           ---------------------------------------------------------------------------------------------------
194212           -- 4262811a Switch Sign
194213           ---------------------------------------------------------------------------------------------------
194214           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
194215           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
194216                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
194217           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
194218                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
194219           -- 5132302
194220           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
194221                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
194222 
194223       END IF;
194224 
194225       -- 4955764
194226       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
194227       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
194228 
194229 
194230       XLA_AE_LINES_PKG.ValidateCurrentLine;
194231       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
194232 
194233       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
194234                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
194235                ,p_balance_type_code => l_balance_type_code);
194236 
194237    END IF;
194238 
194239    -----------------------------------------------------------------------------------------
194240    -- 4262811 Multiperiod Accounting
194241    -----------------------------------------------------------------------------------------
194242      -- No MPA option is assigned.
194243 
194244 
194245 END IF;
194246 END IF;
194247 --
194248 
194249 --
194250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194251    trace
194252       (p_msg      => 'END of AcctLineType_355'
194253       ,p_level    => C_LEVEL_PROCEDURE
194254       ,p_module   => l_log_module);
194255 END IF;
194256 --
194257 EXCEPTION
194258   WHEN xla_exceptions_pkg.application_exception THEN
194259       RAISE;
194260   WHEN OTHERS THEN
194261        xla_exceptions_pkg.raise_message
194262            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_355');
194263 END AcctLineType_355;
194264 --
194265 
194266 ---------------------------------------
194267 --
194268 -- PRIVATE FUNCTION
194269 --         AcctLineType_356
194270 --
194271 ---------------------------------------
194272 PROCEDURE AcctLineType_356 (
194273   p_application_id        IN NUMBER
194274  ,p_event_id              IN NUMBER
194275  ,p_calculate_acctd_flag  IN VARCHAR2
194276  ,p_calculate_g_l_flag    IN VARCHAR2
194277  ,p_actual_flag           IN OUT VARCHAR2
194278  ,p_balance_type_code     OUT VARCHAR2
194279  ,p_gain_or_loss_ref      OUT VARCHAR2
194280  
194281 --TRANSACTION_ID
194282  , p_source_1            IN NUMBER
194283 --Item Concatenated Segments
194284  , p_source_2            IN VARCHAR2
194285 --Transaction Quantity
194286  , p_source_3            IN NUMBER
194287 --Transaction Unit of Measure Code
194288  , p_source_4            IN VARCHAR2
194289 --Inventory Transaction Type Description
194290  , p_source_5            IN VARCHAR2
194291 --Cost Management Default Account
194292  , p_source_11            IN NUMBER
194293 --Applied to Application ID
194294  , p_source_79            IN NUMBER
194295 --Applied to Distribution Link Type
194296  , p_source_80            IN VARCHAR2
194297 --Applied to Entity Code
194298  , p_source_81            IN VARCHAR2
194299 --Applied To Purchase Document Identifier
194300  , p_source_83            IN NUMBER
194301 --DISTRIBUTION_IDENTIFIER
194302  , p_source_84            IN NUMBER
194303 --Distribution Type
194304  , p_source_85            IN VARCHAR2
194305  , p_source_85_meaning    IN VARCHAR2
194306 --PO Budget Account
194307  , p_source_86            IN NUMBER
194308 --Encumbrance Reversal Amount Entered
194309  , p_source_87            IN NUMBER
194310 --Entered Currency Code
194311  , p_source_88            IN VARCHAR2
194312 --Transaction Encumbrance Reversal Amount
194313  , p_source_89            IN NUMBER
194314 --Entered Amount
194315  , p_source_91            IN NUMBER
194316 --Currency Conversion Date
194317  , p_source_92            IN DATE
194318 --Currency Conversion Rate
194319  , p_source_93            IN NUMBER
194320 --Currency Conversion Type
194321  , p_source_94            IN VARCHAR2
194322 --Accounted Amount
194323  , p_source_95            IN NUMBER
194324 --Purchasing Encumbrance Type Identifier
194325  , p_source_96            IN NUMBER
194326 --Accounting Line Type
194327  , p_source_97            IN NUMBER
194328 --Costing Encumbrance Upgrade Option
194329  , p_source_100            IN VARCHAR2
194330 --TXN_PO_DISTRIBUTION_ID
194331  , p_source_101            IN NUMBER
194332 )
194333 IS
194334 
194335 l_component_type              VARCHAR2(80);
194336 l_component_code              VARCHAR2(30);
194337 l_component_type_code         VARCHAR2(1);
194338 l_component_appl_id           INTEGER;
194339 l_amb_context_code            VARCHAR2(30);
194340 l_entity_code                 VARCHAR2(30);
194341 l_event_class_code            VARCHAR2(30);
194342 l_ae_header_id                NUMBER;
194343 l_event_type_code             VARCHAR2(30);
194344 l_line_definition_code        VARCHAR2(30);
194345 l_line_definition_owner_code  VARCHAR2(1);
194346 --
194347 -- adr variables
194348 l_segment                     VARCHAR2(30);
194349 l_ccid                        NUMBER;
194350 l_adr_transaction_coa_id      NUMBER;
194351 l_adr_accounting_coa_id       NUMBER;
194352 l_adr_flexfield_segment_code  VARCHAR2(30);
194353 l_adr_flex_value_set_id       NUMBER;
194354 l_adr_value_type_code         VARCHAR2(30);
194355 l_adr_value_combination_id    NUMBER;
194356 l_adr_value_segment_code      VARCHAR2(30);
194357 
194358 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
194359 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
194360 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
194361 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
194362 
194363 -- 4262811 Variables ------------------------------------------------------------------------------------------
194364 l_entered_amt_idx             NUMBER;
194365 l_accted_amt_idx              NUMBER;
194366 l_acc_rev_flag                VARCHAR2(1);
194367 l_accrual_line_num            NUMBER;
194368 l_tmp_amt                     NUMBER;
194369 l_acc_rev_natural_side_code   VARCHAR2(1);
194370 
194371 l_num_entries                 NUMBER;
194372 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
194373 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
194374 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
194375 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
194376 l_recog_line_1                NUMBER;
194377 l_recog_line_2                NUMBER;
194378 
194379 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
194380 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
194381 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
194382 
194383 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
194384 
194385 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
194386 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
194387 
194388 ---------------------------------------------------------------------------------------------------------------
194389 
194390 
194391 --
194392 -- bulk performance
194393 --
194394 l_balance_type_code           VARCHAR2(1);
194395 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
194396 l_log_module                  VARCHAR2(240);
194397 
194398 --
194399 -- Upgrade strategy
194400 --
194401 l_actual_upg_option           VARCHAR2(1);
194402 l_enc_upg_option           VARCHAR2(1);
194403 
194404 --
194405 BEGIN
194406 --
194407 IF g_log_enabled THEN
194408       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_356';
194409 END IF;
194410 --
194411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194412 
194413       trace
194414          (p_msg      => 'BEGIN of AcctLineType_356'
194415          ,p_level    => C_LEVEL_PROCEDURE
194416          ,p_module   => l_log_module);
194417 
194418 END IF;
194419 --
194420 l_component_type             := 'AMB_JLT';
194421 l_component_code             := 'OFFSET';
194422 l_component_type_code        := 'S';
194423 l_component_appl_id          :=  707;
194424 l_amb_context_code           := 'DEFAULT';
194425 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
194426 l_event_class_code           := 'PURCHASE_ORDER';
194427 l_event_type_code            := 'PO_DEL_ADJ';
194428 l_line_definition_owner_code := 'S';
194429 l_line_definition_code       := 'PI_PO_DEL_ADJ';
194430 --
194431 l_balance_type_code          := 'A';
194432 l_segment                     := NULL;
194433 l_ccid                        := NULL;
194434 l_adr_transaction_coa_id      := NULL;
194435 l_adr_accounting_coa_id       := NULL;
194436 l_adr_flexfield_segment_code  := NULL;
194437 l_adr_flex_value_set_id       := NULL;
194438 l_adr_value_type_code         := NULL;
194439 l_adr_value_combination_id    := NULL;
194440 l_adr_value_segment_code      := NULL;
194441 
194442 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
194443 l_bflow_class_code           := '';    -- 4219869 Business Flow
194444 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
194445 l_budgetary_control_flag     := 'N';
194446 
194447 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
194448 l_bflow_applied_to_amt       := NULL; -- 5132302
194449 l_entered_amt_idx            := NULL;          -- 4262811
194450 l_accted_amt_idx             := NULL;          -- 4262811
194451 l_acc_rev_flag               := NULL;          -- 4262811
194452 l_accrual_line_num           := NULL;          -- 4262811
194453 l_tmp_amt                    := NULL;          -- 4262811
194454 --
194455  
194456 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
194457     l_balance_type_code <> 'B' THEN
194458 IF NVL(p_source_97,9E125) =  2
194459  THEN 
194460 
194461    --
194462    XLA_AE_LINES_PKG.SetNewLine;
194463 
194464    p_balance_type_code          := l_balance_type_code;
194465    -- set the flag so later we will know whether the gain loss line needs to be created
194466    
194467    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
194468      p_actual_flag :='A';
194469    END IF;
194470 
194471    --
194472    -- bulk performance
194473    --
194474    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
194475                                       p_header_num   => 0); -- 4262811
194476    --
194477    -- set accounting line options
194478    --
194479    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
194480            p_natural_side_code          => 'D'
194481          , p_gain_or_loss_flag          => 'N'
194482          , p_gl_transfer_mode_code      => 'S'
194483          , p_acct_entry_type_code       => 'A'
194484          , p_switch_side_flag           => 'Y'
194485          , p_merge_duplicate_code       => 'N'
194486          );
194487    --
194488    l_acc_rev_natural_side_code := 'C';  -- 4262811
194489    -- 
194490    --
194491    -- set accounting line type info
194492    --
194493    xla_ae_lines_pkg.SetAcctLineType
194494       (p_component_type             => l_component_type
194495       ,p_event_type_code            => l_event_type_code
194496       ,p_line_definition_owner_code => l_line_definition_owner_code
194497       ,p_line_definition_code       => l_line_definition_code
194498       ,p_accounting_line_code       => l_component_code
194499       ,p_accounting_line_type_code  => l_component_type_code
194500       ,p_accounting_line_appl_id    => l_component_appl_id
194501       ,p_amb_context_code           => l_amb_context_code
194502       ,p_entity_code                => l_entity_code
194503       ,p_event_class_code           => l_event_class_code);
194504    --
194505    -- set accounting class
194506    --
194507    xla_ae_lines_pkg.SetAcctClass(
194508            p_accounting_class_code  => 'OFFSET'
194509          , p_ae_header_id           => l_ae_header_id
194510          );
194511 
194512    --
194513    -- set rounding class
194514    --
194515    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
194516                       'OFFSET';
194517 
194518    --
194519    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
194520    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
194521    --
194522    -- bulk performance
194523    --
194524    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
194525 
194526    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
194527       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
194528 
194529    -- 4955764
194530    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
194531       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
194532 
194533    -- 4458381 Public Sector Enh
194534    
194535    --
194536    -- set accounting attributes for the line type
194537    --
194538    l_entered_amt_idx := 17;
194539    l_accted_amt_idx  := 22;
194540    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
194541    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
194542    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
194543    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
194544    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
194545    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
194546    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
194547    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
194548    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
194549    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
194550    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
194551    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
194552    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
194553    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
194554    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
194555    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
194556    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
194557    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
194558    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
194559    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
194560    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
194561    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
194562    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
194563    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
194564    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
194565    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
194566    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
194567    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
194568    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
194569    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
194570    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
194571    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
194572    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
194573    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
194574    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
194575    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
194576    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
194577    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
194578    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
194579    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
194580    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
194581    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
194582    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
194583    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
194584    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
194585    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
194586    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
194587    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
194588    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
194589 
194590    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
194591    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
194592 
194593    ---------------------------------------------------------------------------------------------------------------
194594    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
194595    ---------------------------------------------------------------------------------------------------------------
194596    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
194597 
194598    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
194599    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
194600 
194601    IF xla_accounting_cache_pkg.GetValueChar
194602          (p_source_code         => 'LEDGER_CATEGORY_CODE'
194603          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
194604    AND l_bflow_method_code = 'PRIOR_ENTRY'
194605 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
194606    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
194607          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
194608        )
194609    THEN
194610          xla_ae_lines_pkg.BflowUpgEntry
194611            (p_business_method_code    => l_bflow_method_code
194612            ,p_business_class_code     => l_bflow_class_code
194613            ,p_balance_type            => l_balance_type_code);
194614    ELSE
194615       NULL;
194616 -- No business flow processing for business flow method of NONE.
194617    END IF;
194618 
194619    --
194620    -- call analytical criteria
194621    --
194622    
194623    --
194624    -- call description
194625    --
194626    
194627 xla_ae_lines_pkg.SetLineDescription(
194628    p_ae_header_id => l_ae_header_id
194629   ,p_description  => Description_1 (
194630      p_application_id         => p_application_id
194631    , p_ae_header_id           => l_ae_header_id 
194632 , p_source_1 => p_source_1
194633 , p_source_2 => p_source_2
194634 , p_source_3 => p_source_3
194635 , p_source_4 => p_source_4
194636 , p_source_5 => p_source_5
194637    )
194638 );
194639 
194640 
194641    --
194642    -- call ADRs
194643    -- Bug 4922099
194644    --
194645    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
194646         (NVL(l_actual_upg_option, 'N') = 'O') OR
194647         (NVL(l_enc_upg_option, 'N') = 'O')
194648       )
194649    THEN
194650    NULL;
194651    --
194652    --
194653    
194654   l_ccid := AcctDerRule_6(
194655            p_application_id           => p_application_id
194656          , p_ae_header_id             => l_ae_header_id 
194657 , p_source_11 => p_source_11
194658          , x_transaction_coa_id       => l_adr_transaction_coa_id
194659          , x_accounting_coa_id        => l_adr_accounting_coa_id
194660          , x_value_type_code          => l_adr_value_type_code
194661          , p_side                     => 'NA'
194662    );
194663 
194664    xla_ae_lines_pkg.set_ccid(
194665     p_code_combination_id          => l_ccid
194666   , p_value_type_code              => l_adr_value_type_code
194667   , p_transaction_coa_id           => l_adr_transaction_coa_id
194668   , p_accounting_coa_id            => l_adr_accounting_coa_id
194669   , p_adr_code                     => 'CST_DEFAULT'
194670   , p_adr_type_code                => 'S'
194671   , p_component_type               => l_component_type
194672   , p_component_code               => l_component_code
194673   , p_component_type_code          => l_component_type_code
194674   , p_component_appl_id            => l_component_appl_id
194675   , p_amb_context_code             => l_amb_context_code
194676   , p_side                         => 'NA'
194677   );
194678 
194679 
194680    --
194681    --
194682    END IF;
194683    --
194684    -- Bug 4922099
194685    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
194686           (NVL(l_enc_upg_option, 'N') = 'O')
194687         ) AND
194688         (l_bflow_method_code = 'PRIOR_ENTRY')
194689       )
194690    THEN
194691       IF
194692       --
194693       1 = 2
194694       --
194695       THEN
194696       xla_accounting_err_pkg.build_message
194697                                     (p_appli_s_name            => 'XLA'
194698                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
194699                                     ,p_token_1                 => 'LINE_NUMBER'
194700                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
194701                                     ,p_token_2                 => 'LINE_TYPE_NAME'
194702                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
194703                                                                              l_component_type
194704                                                                             ,l_component_code
194705                                                                             ,l_component_type_code
194706                                                                             ,l_component_appl_id
194707                                                                             ,l_amb_context_code
194708                                                                             ,l_entity_code
194709                                                                             ,l_event_class_code
194710                                                                            )
194711                                     ,p_token_3                 => 'OWNER'
194712                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
194713                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
194714                                                                           ,p_lookup_code    => l_component_type_code
194715                                                                          )
194716                                     ,p_token_4                 => 'PRODUCT_NAME'
194717                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
194718                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
194719                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
194720                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
194721                                     ,p_ae_header_id            =>  NULL
194722                                        );
194723 
194724         IF (C_LEVEL_ERROR>= g_log_level) THEN
194725                  trace
194726                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
194727                       ,p_level    => C_LEVEL_ERROR
194728                       ,p_module   => l_log_module);
194729         END IF;
194730       END IF;
194731    END IF;
194732    --
194733    --
194734    ------------------------------------------------------------------------------------------------
194735    -- 4219869 Business Flow
194736    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
194737    -- Prior Entry.  Currently, the following code is always generated.
194738    ------------------------------------------------------------------------------------------------
194739    XLA_AE_LINES_PKG.ValidateCurrentLine;
194740 
194741    ------------------------------------------------------------------------------------
194742    -- 4219869 Business Flow
194743    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
194744    ------------------------------------------------------------------------------------
194745    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
194746 
194747    ----------------------------------------------------------------------------------
194748    -- 4219869 Business Flow
194749    -- Update journal entry status -- Need to generate this within IF <condition>
194750    ----------------------------------------------------------------------------------
194751    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
194752          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
194753          ,p_balance_type_code => l_balance_type_code
194754          );
194755 
194756    -------------------------------------------------------------------------------------------
194757    -- 4262811 - Generate the Accrual Reversal lines
194758    -------------------------------------------------------------------------------------------
194759    BEGIN
194760       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
194761                               (g_array_event(p_event_id).array_value_num('header_index'));
194762       IF l_acc_rev_flag IS NULL THEN
194763          l_acc_rev_flag := 'N';
194764       END IF;
194765    EXCEPTION
194766       WHEN OTHERS THEN
194767          l_acc_rev_flag := 'N';
194768    END;
194769    --
194770    IF (l_acc_rev_flag = 'Y') THEN
194771 
194772        -- 4645092  ------------------------------------------------------------------------------
194773        -- To allow MPA report to determine if it should generate report process
194774        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
194775        ------------------------------------------------------------------------------------------
194776 
194777        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
194778        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
194779    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
194780    -- call ADRs
194781    -- Bug 4922099
194782    --
194783    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
194784         (NVL(l_actual_upg_option, 'N') = 'O') OR
194785         (NVL(l_enc_upg_option, 'N') = 'O')
194786       )
194787    THEN
194788    NULL;
194789    --
194790    --
194791    
194792   l_ccid := AcctDerRule_6(
194793            p_application_id           => p_application_id
194794          , p_ae_header_id             => l_ae_header_id 
194795 , p_source_11 => p_source_11
194796          , x_transaction_coa_id       => l_adr_transaction_coa_id
194797          , x_accounting_coa_id        => l_adr_accounting_coa_id
194798          , x_value_type_code          => l_adr_value_type_code
194799          , p_side                     => 'NA'
194800    );
194801 
194802    xla_ae_lines_pkg.set_ccid(
194803     p_code_combination_id          => l_ccid
194804   , p_value_type_code              => l_adr_value_type_code
194805   , p_transaction_coa_id           => l_adr_transaction_coa_id
194806   , p_accounting_coa_id            => l_adr_accounting_coa_id
194807   , p_adr_code                     => 'CST_DEFAULT'
194808   , p_adr_type_code                => 'S'
194809   , p_component_type               => l_component_type
194810   , p_component_code               => l_component_code
194811   , p_component_type_code          => l_component_type_code
194812   , p_component_appl_id            => l_component_appl_id
194813   , p_amb_context_code             => l_amb_context_code
194814   , p_side                         => 'NA'
194815   );
194816 
194817 
194818    --
194819    --
194820    END IF;
194821 
194822        --
194823        -- Update the line information that should be overwritten
194824        --
194825        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
194826                                          p_header_num   => 1);
194827        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
194828 
194829        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
194830 
194831        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
194832           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
194833        END IF;
194834 
194835       --
194836       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
194837       --
194838       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
194839           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
194840       ELSE
194841           ---------------------------------------------------------------------------------------------------
194842           -- 4262811a Switch Sign
194843           ---------------------------------------------------------------------------------------------------
194844           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
194845           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
194846                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
194847           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
194848                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
194849           -- 5132302
194850           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
194851                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
194852 
194853       END IF;
194854 
194855       -- 4955764
194856       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
194857       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
194858 
194859 
194860       XLA_AE_LINES_PKG.ValidateCurrentLine;
194861       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
194862 
194863       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
194864                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
194865                ,p_balance_type_code => l_balance_type_code);
194866 
194867    END IF;
194868 
194869    -----------------------------------------------------------------------------------------
194870    -- 4262811 Multiperiod Accounting
194871    -----------------------------------------------------------------------------------------
194872      -- No MPA option is assigned.
194873 
194874 
194875 END IF;
194876 END IF;
194877 --
194878 
194879 --
194880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194881    trace
194882       (p_msg      => 'END of AcctLineType_356'
194883       ,p_level    => C_LEVEL_PROCEDURE
194884       ,p_module   => l_log_module);
194885 END IF;
194886 --
194887 EXCEPTION
194888   WHEN xla_exceptions_pkg.application_exception THEN
194889       RAISE;
194890   WHEN OTHERS THEN
194891        xla_exceptions_pkg.raise_message
194892            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_356');
194893 END AcctLineType_356;
194894 --
194895 
194896 ---------------------------------------
194897 --
194898 -- PRIVATE FUNCTION
194899 --         AcctLineType_357
194900 --
194901 ---------------------------------------
194902 PROCEDURE AcctLineType_357 (
194903   p_application_id        IN NUMBER
194904  ,p_event_id              IN NUMBER
194905  ,p_calculate_acctd_flag  IN VARCHAR2
194906  ,p_calculate_g_l_flag    IN VARCHAR2
194907  ,p_actual_flag           IN OUT VARCHAR2
194908  ,p_balance_type_code     OUT VARCHAR2
194909  ,p_gain_or_loss_ref      OUT VARCHAR2
194910  
194911 --TRANSACTION_ID
194912  , p_source_1            IN NUMBER
194913 --Item Concatenated Segments
194914  , p_source_2            IN VARCHAR2
194915 --Transaction Quantity
194916  , p_source_3            IN NUMBER
194917 --Transaction Unit of Measure Code
194918  , p_source_4            IN VARCHAR2
194919 --Inventory Transaction Type Description
194920  , p_source_5            IN VARCHAR2
194921 --Product Line Accounting Category Expense Account
194922  , p_source_24            IN NUMBER
194923 --Transfer to Subinventory or Cost Group category expense account
194924  , p_source_25            IN NUMBER
194925 --Cost Group Identifier
194926  , p_source_26            IN NUMBER
194927 --INV Header Transfer Cost Group ID
194928  , p_source_27            IN NUMBER
194929 --INV Header Cost Group ID
194930  , p_source_28            IN NUMBER
194931 --Subinventory Name
194932  , p_source_29            IN VARCHAR2
194933 --INV Header Transfer Subinventory
194934  , p_source_31            IN VARCHAR2
194935 --DISTRIBUTION_IDENTIFIER
194936  , p_source_84            IN NUMBER
194937 --Distribution Type
194938  , p_source_85            IN VARCHAR2
194939  , p_source_85_meaning    IN VARCHAR2
194940 --Entered Currency Code
194941  , p_source_88            IN VARCHAR2
194942 --Entered Amount
194943  , p_source_91            IN NUMBER
194944 --Currency Conversion Date
194945  , p_source_92            IN DATE
194946 --Currency Conversion Rate
194947  , p_source_93            IN NUMBER
194948 --Currency Conversion Type
194949  , p_source_94            IN VARCHAR2
194950 --Accounted Amount
194951  , p_source_95            IN NUMBER
194952 --Accounting Line Type
194953  , p_source_97            IN NUMBER
194954 )
194955 IS
194956 
194957 l_component_type              VARCHAR2(80);
194958 l_component_code              VARCHAR2(30);
194959 l_component_type_code         VARCHAR2(1);
194960 l_component_appl_id           INTEGER;
194961 l_amb_context_code            VARCHAR2(30);
194962 l_entity_code                 VARCHAR2(30);
194963 l_event_class_code            VARCHAR2(30);
194964 l_ae_header_id                NUMBER;
194965 l_event_type_code             VARCHAR2(30);
194966 l_line_definition_code        VARCHAR2(30);
194967 l_line_definition_owner_code  VARCHAR2(1);
194968 --
194969 -- adr variables
194970 l_segment                     VARCHAR2(30);
194971 l_ccid                        NUMBER;
194972 l_adr_transaction_coa_id      NUMBER;
194973 l_adr_accounting_coa_id       NUMBER;
194974 l_adr_flexfield_segment_code  VARCHAR2(30);
194975 l_adr_flex_value_set_id       NUMBER;
194976 l_adr_value_type_code         VARCHAR2(30);
194977 l_adr_value_combination_id    NUMBER;
194978 l_adr_value_segment_code      VARCHAR2(30);
194979 
194980 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
194981 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
194982 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
194983 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
194984 
194985 -- 4262811 Variables ------------------------------------------------------------------------------------------
194986 l_entered_amt_idx             NUMBER;
194987 l_accted_amt_idx              NUMBER;
194988 l_acc_rev_flag                VARCHAR2(1);
194989 l_accrual_line_num            NUMBER;
194990 l_tmp_amt                     NUMBER;
194991 l_acc_rev_natural_side_code   VARCHAR2(1);
194992 
194993 l_num_entries                 NUMBER;
194994 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
194995 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
194996 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
194997 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
194998 l_recog_line_1                NUMBER;
194999 l_recog_line_2                NUMBER;
195000 
195001 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
195002 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
195003 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
195004 
195005 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
195006 
195007 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
195008 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
195009 
195010 ---------------------------------------------------------------------------------------------------------------
195011 
195012 
195013 --
195014 -- bulk performance
195015 --
195016 l_balance_type_code           VARCHAR2(1);
195017 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
195018 l_log_module                  VARCHAR2(240);
195019 
195020 --
195021 -- Upgrade strategy
195022 --
195023 l_actual_upg_option           VARCHAR2(1);
195024 l_enc_upg_option           VARCHAR2(1);
195025 
195026 --
195027 BEGIN
195028 --
195029 IF g_log_enabled THEN
195030       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_357';
195031 END IF;
195032 --
195033 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195034 
195035       trace
195036          (p_msg      => 'BEGIN of AcctLineType_357'
195037          ,p_level    => C_LEVEL_PROCEDURE
195038          ,p_module   => l_log_module);
195039 
195040 END IF;
195041 --
195042 l_component_type             := 'AMB_JLT';
195043 l_component_code             := 'OFFSET';
195044 l_component_type_code        := 'S';
195045 l_component_appl_id          :=  707;
195046 l_amb_context_code           := 'DEFAULT';
195047 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
195048 l_event_class_code           := 'USER_DEFINE';
195049 l_event_type_code            := 'USUB_TXFR';
195050 l_line_definition_owner_code := 'S';
195051 l_line_definition_code       := 'PI_INTRAORG_TXFR';
195052 --
195053 l_balance_type_code          := 'A';
195054 l_segment                     := NULL;
195055 l_ccid                        := NULL;
195056 l_adr_transaction_coa_id      := NULL;
195057 l_adr_accounting_coa_id       := NULL;
195058 l_adr_flexfield_segment_code  := NULL;
195059 l_adr_flex_value_set_id       := NULL;
195060 l_adr_value_type_code         := NULL;
195061 l_adr_value_combination_id    := NULL;
195062 l_adr_value_segment_code      := NULL;
195063 
195064 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
195065 l_bflow_class_code           := '';    -- 4219869 Business Flow
195066 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
195067 l_budgetary_control_flag     := 'N';
195068 
195069 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
195070 l_bflow_applied_to_amt       := NULL; -- 5132302
195071 l_entered_amt_idx            := NULL;          -- 4262811
195072 l_accted_amt_idx             := NULL;          -- 4262811
195073 l_acc_rev_flag               := NULL;          -- 4262811
195074 l_accrual_line_num           := NULL;          -- 4262811
195075 l_tmp_amt                    := NULL;          -- 4262811
195076 --
195077  
195078 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
195079     l_balance_type_code <> 'B' THEN
195080 IF NVL(p_source_97,9E125) =  2
195081  THEN 
195082 
195083    --
195084    XLA_AE_LINES_PKG.SetNewLine;
195085 
195086    p_balance_type_code          := l_balance_type_code;
195087    -- set the flag so later we will know whether the gain loss line needs to be created
195088    
195089    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
195090      p_actual_flag :='A';
195091    END IF;
195092 
195093    --
195094    -- bulk performance
195095    --
195096    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
195097                                       p_header_num   => 0); -- 4262811
195098    --
195099    -- set accounting line options
195100    --
195101    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
195102            p_natural_side_code          => 'D'
195103          , p_gain_or_loss_flag          => 'N'
195104          , p_gl_transfer_mode_code      => 'S'
195105          , p_acct_entry_type_code       => 'A'
195106          , p_switch_side_flag           => 'Y'
195107          , p_merge_duplicate_code       => 'N'
195108          );
195109    --
195110    l_acc_rev_natural_side_code := 'C';  -- 4262811
195111    -- 
195112    --
195113    -- set accounting line type info
195114    --
195115    xla_ae_lines_pkg.SetAcctLineType
195116       (p_component_type             => l_component_type
195117       ,p_event_type_code            => l_event_type_code
195118       ,p_line_definition_owner_code => l_line_definition_owner_code
195119       ,p_line_definition_code       => l_line_definition_code
195120       ,p_accounting_line_code       => l_component_code
195121       ,p_accounting_line_type_code  => l_component_type_code
195122       ,p_accounting_line_appl_id    => l_component_appl_id
195123       ,p_amb_context_code           => l_amb_context_code
195124       ,p_entity_code                => l_entity_code
195125       ,p_event_class_code           => l_event_class_code);
195126    --
195127    -- set accounting class
195128    --
195129    xla_ae_lines_pkg.SetAcctClass(
195130            p_accounting_class_code  => 'OFFSET'
195131          , p_ae_header_id           => l_ae_header_id
195132          );
195133 
195134    --
195135    -- set rounding class
195136    --
195137    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
195138                       'OFFSET';
195139 
195140    --
195141    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
195142    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
195143    --
195144    -- bulk performance
195145    --
195146    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
195147 
195148    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
195149       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
195150 
195151    -- 4955764
195152    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
195153       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
195154 
195155    -- 4458381 Public Sector Enh
195156    
195157    --
195158    -- set accounting attributes for the line type
195159    --
195160    l_entered_amt_idx := 3;
195161    l_accted_amt_idx  := 8;
195162    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
195163    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
195164    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
195165    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
195166    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
195167    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
195168    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
195169    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
195170    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
195171    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
195172    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
195173    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
195174    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
195175    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
195176    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
195177    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
195178    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
195179 
195180    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
195181    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
195182 
195183    ---------------------------------------------------------------------------------------------------------------
195184    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
195185    ---------------------------------------------------------------------------------------------------------------
195186    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
195187 
195188    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
195189    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
195190 
195191    IF xla_accounting_cache_pkg.GetValueChar
195192          (p_source_code         => 'LEDGER_CATEGORY_CODE'
195193          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
195194    AND l_bflow_method_code = 'PRIOR_ENTRY'
195195 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
195196    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
195197          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
195198        )
195199    THEN
195200          xla_ae_lines_pkg.BflowUpgEntry
195201            (p_business_method_code    => l_bflow_method_code
195202            ,p_business_class_code     => l_bflow_class_code
195203            ,p_balance_type            => l_balance_type_code);
195204    ELSE
195205       NULL;
195206 -- No business flow processing for business flow method of NONE.
195207    END IF;
195208 
195209    --
195210    -- call analytical criteria
195211    --
195212    
195213    --
195214    -- call description
195215    --
195216    
195217 xla_ae_lines_pkg.SetLineDescription(
195218    p_ae_header_id => l_ae_header_id
195219   ,p_description  => Description_1 (
195220      p_application_id         => p_application_id
195221    , p_ae_header_id           => l_ae_header_id 
195222 , p_source_1 => p_source_1
195223 , p_source_2 => p_source_2
195224 , p_source_3 => p_source_3
195225 , p_source_4 => p_source_4
195226 , p_source_5 => p_source_5
195227    )
195228 );
195229 
195230 
195231    --
195232    -- call ADRs
195233    -- Bug 4922099
195234    --
195235    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
195236         (NVL(l_actual_upg_option, 'N') = 'O') OR
195237         (NVL(l_enc_upg_option, 'N') = 'O')
195238       )
195239    THEN
195240    NULL;
195241    --
195242    --
195243    
195244   l_ccid := AcctDerRule_15(
195245            p_application_id           => p_application_id
195246          , p_ae_header_id             => l_ae_header_id 
195247 , p_source_24 => p_source_24
195248 , p_source_25 => p_source_25
195249 , p_source_26 => p_source_26
195250 , p_source_27 => p_source_27
195251 , p_source_28 => p_source_28
195252 , p_source_29 => p_source_29
195253 , p_source_31 => p_source_31
195254          , x_transaction_coa_id       => l_adr_transaction_coa_id
195255          , x_accounting_coa_id        => l_adr_accounting_coa_id
195256          , x_value_type_code          => l_adr_value_type_code
195257          , p_side                     => 'NA'
195258    );
195259 
195260    xla_ae_lines_pkg.set_ccid(
195261     p_code_combination_id          => l_ccid
195262   , p_value_type_code              => l_adr_value_type_code
195263   , p_transaction_coa_id           => l_adr_transaction_coa_id
195264   , p_accounting_coa_id            => l_adr_accounting_coa_id
195265   , p_adr_code                     => 'PI_CATEGORY_OFFSET_ADR'
195266   , p_adr_type_code                => 'S'
195267   , p_component_type               => l_component_type
195268   , p_component_code               => l_component_code
195269   , p_component_type_code          => l_component_type_code
195270   , p_component_appl_id            => l_component_appl_id
195271   , p_amb_context_code             => l_amb_context_code
195272   , p_side                         => 'NA'
195273   );
195274 
195275 
195276    --
195277    --
195278    END IF;
195279    --
195280    -- Bug 4922099
195281    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
195282           (NVL(l_enc_upg_option, 'N') = 'O')
195283         ) AND
195284         (l_bflow_method_code = 'PRIOR_ENTRY')
195285       )
195286    THEN
195287       IF
195288       --
195289       1 = 2
195290       --
195291       THEN
195292       xla_accounting_err_pkg.build_message
195293                                     (p_appli_s_name            => 'XLA'
195294                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
195295                                     ,p_token_1                 => 'LINE_NUMBER'
195296                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
195297                                     ,p_token_2                 => 'LINE_TYPE_NAME'
195298                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
195299                                                                              l_component_type
195300                                                                             ,l_component_code
195301                                                                             ,l_component_type_code
195302                                                                             ,l_component_appl_id
195303                                                                             ,l_amb_context_code
195304                                                                             ,l_entity_code
195305                                                                             ,l_event_class_code
195306                                                                            )
195307                                     ,p_token_3                 => 'OWNER'
195308                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
195309                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
195310                                                                           ,p_lookup_code    => l_component_type_code
195311                                                                          )
195312                                     ,p_token_4                 => 'PRODUCT_NAME'
195313                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
195314                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
195315                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
195316                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
195317                                     ,p_ae_header_id            =>  NULL
195318                                        );
195319 
195320         IF (C_LEVEL_ERROR>= g_log_level) THEN
195321                  trace
195322                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
195323                       ,p_level    => C_LEVEL_ERROR
195324                       ,p_module   => l_log_module);
195325         END IF;
195326       END IF;
195327    END IF;
195328    --
195329    --
195330    ------------------------------------------------------------------------------------------------
195331    -- 4219869 Business Flow
195332    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
195333    -- Prior Entry.  Currently, the following code is always generated.
195334    ------------------------------------------------------------------------------------------------
195335    XLA_AE_LINES_PKG.ValidateCurrentLine;
195336 
195337    ------------------------------------------------------------------------------------
195338    -- 4219869 Business Flow
195339    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
195340    ------------------------------------------------------------------------------------
195341    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
195342 
195343    ----------------------------------------------------------------------------------
195344    -- 4219869 Business Flow
195345    -- Update journal entry status -- Need to generate this within IF <condition>
195346    ----------------------------------------------------------------------------------
195347    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
195348          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
195349          ,p_balance_type_code => l_balance_type_code
195350          );
195351 
195352    -------------------------------------------------------------------------------------------
195353    -- 4262811 - Generate the Accrual Reversal lines
195354    -------------------------------------------------------------------------------------------
195355    BEGIN
195356       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
195357                               (g_array_event(p_event_id).array_value_num('header_index'));
195358       IF l_acc_rev_flag IS NULL THEN
195359          l_acc_rev_flag := 'N';
195360       END IF;
195361    EXCEPTION
195362       WHEN OTHERS THEN
195363          l_acc_rev_flag := 'N';
195364    END;
195365    --
195366    IF (l_acc_rev_flag = 'Y') THEN
195367 
195368        -- 4645092  ------------------------------------------------------------------------------
195369        -- To allow MPA report to determine if it should generate report process
195370        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
195371        ------------------------------------------------------------------------------------------
195372 
195373        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
195374        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
195375    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
195376    -- call ADRs
195377    -- Bug 4922099
195378    --
195379    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
195380         (NVL(l_actual_upg_option, 'N') = 'O') OR
195381         (NVL(l_enc_upg_option, 'N') = 'O')
195382       )
195383    THEN
195384    NULL;
195385    --
195386    --
195387    
195388   l_ccid := AcctDerRule_15(
195389            p_application_id           => p_application_id
195390          , p_ae_header_id             => l_ae_header_id 
195391 , p_source_24 => p_source_24
195392 , p_source_25 => p_source_25
195393 , p_source_26 => p_source_26
195394 , p_source_27 => p_source_27
195395 , p_source_28 => p_source_28
195396 , p_source_29 => p_source_29
195397 , p_source_31 => p_source_31
195398          , x_transaction_coa_id       => l_adr_transaction_coa_id
195399          , x_accounting_coa_id        => l_adr_accounting_coa_id
195400          , x_value_type_code          => l_adr_value_type_code
195401          , p_side                     => 'NA'
195402    );
195403 
195404    xla_ae_lines_pkg.set_ccid(
195405     p_code_combination_id          => l_ccid
195406   , p_value_type_code              => l_adr_value_type_code
195407   , p_transaction_coa_id           => l_adr_transaction_coa_id
195408   , p_accounting_coa_id            => l_adr_accounting_coa_id
195409   , p_adr_code                     => 'PI_CATEGORY_OFFSET_ADR'
195410   , p_adr_type_code                => 'S'
195411   , p_component_type               => l_component_type
195412   , p_component_code               => l_component_code
195413   , p_component_type_code          => l_component_type_code
195414   , p_component_appl_id            => l_component_appl_id
195415   , p_amb_context_code             => l_amb_context_code
195416   , p_side                         => 'NA'
195417   );
195418 
195419 
195420    --
195421    --
195422    END IF;
195423 
195424        --
195425        -- Update the line information that should be overwritten
195426        --
195427        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
195428                                          p_header_num   => 1);
195429        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
195430 
195431        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
195432 
195433        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
195434           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
195435        END IF;
195436 
195437       --
195438       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
195439       --
195440       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
195441           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
195442       ELSE
195443           ---------------------------------------------------------------------------------------------------
195444           -- 4262811a Switch Sign
195445           ---------------------------------------------------------------------------------------------------
195446           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
195447           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
195448                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
195449           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
195450                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
195451           -- 5132302
195452           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
195453                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
195454 
195455       END IF;
195456 
195457       -- 4955764
195458       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
195459       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
195460 
195461 
195462       XLA_AE_LINES_PKG.ValidateCurrentLine;
195463       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
195464 
195465       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
195466                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
195467                ,p_balance_type_code => l_balance_type_code);
195468 
195469    END IF;
195470 
195471    -----------------------------------------------------------------------------------------
195472    -- 4262811 Multiperiod Accounting
195473    -----------------------------------------------------------------------------------------
195474      -- No MPA option is assigned.
195475 
195476 
195477 END IF;
195478 END IF;
195479 --
195480 
195481 --
195482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195483    trace
195484       (p_msg      => 'END of AcctLineType_357'
195485       ,p_level    => C_LEVEL_PROCEDURE
195486       ,p_module   => l_log_module);
195487 END IF;
195488 --
195489 EXCEPTION
195490   WHEN xla_exceptions_pkg.application_exception THEN
195491       RAISE;
195492   WHEN OTHERS THEN
195493        xla_exceptions_pkg.raise_message
195494            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_357');
195495 END AcctLineType_357;
195496 --
195497 
195498 ---------------------------------------
195499 --
195500 -- PRIVATE FUNCTION
195501 --         AcctLineType_358
195502 --
195503 ---------------------------------------
195504 PROCEDURE AcctLineType_358 (
195505   p_application_id        IN NUMBER
195506  ,p_event_id              IN NUMBER
195507  ,p_calculate_acctd_flag  IN VARCHAR2
195508  ,p_calculate_g_l_flag    IN VARCHAR2
195509  ,p_actual_flag           IN OUT VARCHAR2
195510  ,p_balance_type_code     OUT VARCHAR2
195511  ,p_gain_or_loss_ref      OUT VARCHAR2
195512  
195513 --Offset Account for the Write Off
195514  , p_source_10            IN NUMBER
195515 --Distribution Type
195516  , p_source_85            IN VARCHAR2
195517  , p_source_85_meaning    IN VARCHAR2
195518 --Entered Currency Code
195519  , p_source_88            IN VARCHAR2
195520 --Entered Amount
195521  , p_source_91            IN NUMBER
195522 --Currency Conversion Date
195523  , p_source_92            IN DATE
195524 --Currency Conversion Rate
195525  , p_source_93            IN NUMBER
195526 --Currency Conversion Type
195527  , p_source_94            IN VARCHAR2
195528 --Accounted Amount
195529  , p_source_95            IN NUMBER
195530 --Line Number
195531  , p_source_98            IN NUMBER
195532 --WRITE_OFF_ID
195533  , p_source_99            IN NUMBER
195534 )
195535 IS
195536 
195537 l_component_type              VARCHAR2(80);
195538 l_component_code              VARCHAR2(30);
195539 l_component_type_code         VARCHAR2(1);
195540 l_component_appl_id           INTEGER;
195541 l_amb_context_code            VARCHAR2(30);
195542 l_entity_code                 VARCHAR2(30);
195543 l_event_class_code            VARCHAR2(30);
195544 l_ae_header_id                NUMBER;
195545 l_event_type_code             VARCHAR2(30);
195546 l_line_definition_code        VARCHAR2(30);
195547 l_line_definition_owner_code  VARCHAR2(1);
195548 --
195549 -- adr variables
195550 l_segment                     VARCHAR2(30);
195551 l_ccid                        NUMBER;
195552 l_adr_transaction_coa_id      NUMBER;
195553 l_adr_accounting_coa_id       NUMBER;
195554 l_adr_flexfield_segment_code  VARCHAR2(30);
195555 l_adr_flex_value_set_id       NUMBER;
195556 l_adr_value_type_code         VARCHAR2(30);
195557 l_adr_value_combination_id    NUMBER;
195558 l_adr_value_segment_code      VARCHAR2(30);
195559 
195560 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
195561 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
195562 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
195563 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
195564 
195565 -- 4262811 Variables ------------------------------------------------------------------------------------------
195566 l_entered_amt_idx             NUMBER;
195567 l_accted_amt_idx              NUMBER;
195568 l_acc_rev_flag                VARCHAR2(1);
195569 l_accrual_line_num            NUMBER;
195570 l_tmp_amt                     NUMBER;
195571 l_acc_rev_natural_side_code   VARCHAR2(1);
195572 
195573 l_num_entries                 NUMBER;
195574 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
195575 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
195576 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
195577 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
195578 l_recog_line_1                NUMBER;
195579 l_recog_line_2                NUMBER;
195580 
195581 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
195582 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
195583 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
195584 
195585 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
195586 
195587 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
195588 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
195589 
195590 ---------------------------------------------------------------------------------------------------------------
195591 
195592 
195593 --
195594 -- bulk performance
195595 --
195596 l_balance_type_code           VARCHAR2(1);
195597 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
195598 l_log_module                  VARCHAR2(240);
195599 
195600 --
195601 -- Upgrade strategy
195602 --
195603 l_actual_upg_option           VARCHAR2(1);
195604 l_enc_upg_option           VARCHAR2(1);
195605 
195606 --
195607 BEGIN
195608 --
195609 IF g_log_enabled THEN
195610       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_358';
195611 END IF;
195612 --
195613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195614 
195615       trace
195616          (p_msg      => 'BEGIN of AcctLineType_358'
195617          ,p_level    => C_LEVEL_PROCEDURE
195618          ,p_module   => l_log_module);
195619 
195620 END IF;
195621 --
195622 l_component_type             := 'AMB_JLT';
195623 l_component_code             := 'OFFSET';
195624 l_component_type_code        := 'S';
195625 l_component_appl_id          :=  707;
195626 l_amb_context_code           := 'DEFAULT';
195627 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
195628 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
195629 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
195630 l_line_definition_owner_code := 'S';
195631 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
195632 --
195633 l_balance_type_code          := 'A';
195634 l_segment                     := NULL;
195635 l_ccid                        := NULL;
195636 l_adr_transaction_coa_id      := NULL;
195637 l_adr_accounting_coa_id       := NULL;
195638 l_adr_flexfield_segment_code  := NULL;
195639 l_adr_flex_value_set_id       := NULL;
195640 l_adr_value_type_code         := NULL;
195641 l_adr_value_combination_id    := NULL;
195642 l_adr_value_segment_code      := NULL;
195643 
195644 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
195645 l_bflow_class_code           := '';    -- 4219869 Business Flow
195646 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
195647 l_budgetary_control_flag     := 'N';
195648 
195649 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
195650 l_bflow_applied_to_amt       := NULL; -- 5132302
195651 l_entered_amt_idx            := NULL;          -- 4262811
195652 l_accted_amt_idx             := NULL;          -- 4262811
195653 l_acc_rev_flag               := NULL;          -- 4262811
195654 l_accrual_line_num           := NULL;          -- 4262811
195655 l_tmp_amt                    := NULL;          -- 4262811
195656 --
195657  
195658 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
195659     l_balance_type_code <> 'B' THEN
195660 IF NVL(p_source_98,9E125) =  1
195661  THEN 
195662 
195663    --
195664    XLA_AE_LINES_PKG.SetNewLine;
195665 
195666    p_balance_type_code          := l_balance_type_code;
195667    -- set the flag so later we will know whether the gain loss line needs to be created
195668    
195669    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
195670      p_actual_flag :='A';
195671    END IF;
195672 
195673    --
195674    -- bulk performance
195675    --
195676    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
195677                                       p_header_num   => 0); -- 4262811
195678    --
195679    -- set accounting line options
195680    --
195681    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
195682            p_natural_side_code          => 'C'
195683          , p_gain_or_loss_flag          => 'N'
195684          , p_gl_transfer_mode_code      => 'S'
195685          , p_acct_entry_type_code       => 'A'
195686          , p_switch_side_flag           => 'Y'
195687          , p_merge_duplicate_code       => 'N'
195688          );
195689    --
195690    l_acc_rev_natural_side_code := 'D';  -- 4262811
195691    -- 
195692    --
195693    -- set accounting line type info
195694    --
195695    xla_ae_lines_pkg.SetAcctLineType
195696       (p_component_type             => l_component_type
195697       ,p_event_type_code            => l_event_type_code
195698       ,p_line_definition_owner_code => l_line_definition_owner_code
195699       ,p_line_definition_code       => l_line_definition_code
195700       ,p_accounting_line_code       => l_component_code
195701       ,p_accounting_line_type_code  => l_component_type_code
195702       ,p_accounting_line_appl_id    => l_component_appl_id
195703       ,p_amb_context_code           => l_amb_context_code
195704       ,p_entity_code                => l_entity_code
195705       ,p_event_class_code           => l_event_class_code);
195706    --
195707    -- set accounting class
195708    --
195709    xla_ae_lines_pkg.SetAcctClass(
195710            p_accounting_class_code  => 'OFFSET'
195711          , p_ae_header_id           => l_ae_header_id
195712          );
195713 
195714    --
195715    -- set rounding class
195716    --
195717    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
195718                       'OFFSET';
195719 
195720    --
195721    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
195722    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
195723    --
195724    -- bulk performance
195725    --
195726    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
195727 
195728    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
195729       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
195730 
195731    -- 4955764
195732    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
195733       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
195734 
195735    -- 4458381 Public Sector Enh
195736    
195737    --
195738    -- set accounting attributes for the line type
195739    --
195740    l_entered_amt_idx := 3;
195741    l_accted_amt_idx  := 8;
195742    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
195743    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
195744    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_99);
195745    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
195746    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
195747    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
195748    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
195749    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
195750    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
195751    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
195752    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
195753    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
195754    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
195755    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
195756    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
195757    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
195758    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
195759 
195760    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
195761    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
195762 
195763    ---------------------------------------------------------------------------------------------------------------
195764    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
195765    ---------------------------------------------------------------------------------------------------------------
195766    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
195767 
195768    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
195769    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
195770 
195771    IF xla_accounting_cache_pkg.GetValueChar
195772          (p_source_code         => 'LEDGER_CATEGORY_CODE'
195773          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
195774    AND l_bflow_method_code = 'PRIOR_ENTRY'
195775 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
195776    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
195777          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
195778        )
195779    THEN
195780          xla_ae_lines_pkg.BflowUpgEntry
195781            (p_business_method_code    => l_bflow_method_code
195782            ,p_business_class_code     => l_bflow_class_code
195783            ,p_balance_type            => l_balance_type_code);
195784    ELSE
195785       NULL;
195786 -- No business flow processing for business flow method of NONE.
195787    END IF;
195788 
195789    --
195790    -- call analytical criteria
195791    --
195792    
195793    --
195794    -- call description
195795    --
195796    -- No description or it is inherited.
195797    --
195798    -- call ADRs
195799    -- Bug 4922099
195800    --
195801    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
195802         (NVL(l_actual_upg_option, 'N') = 'O') OR
195803         (NVL(l_enc_upg_option, 'N') = 'O')
195804       )
195805    THEN
195806    NULL;
195807    --
195808    --
195809    
195810   l_ccid := AcctDerRule_5(
195811            p_application_id           => p_application_id
195812          , p_ae_header_id             => l_ae_header_id 
195813 , p_source_10 => p_source_10
195814          , x_transaction_coa_id       => l_adr_transaction_coa_id
195815          , x_accounting_coa_id        => l_adr_accounting_coa_id
195816          , x_value_type_code          => l_adr_value_type_code
195817          , p_side                     => 'NA'
195818    );
195819 
195820    xla_ae_lines_pkg.set_ccid(
195821     p_code_combination_id          => l_ccid
195822   , p_value_type_code              => l_adr_value_type_code
195823   , p_transaction_coa_id           => l_adr_transaction_coa_id
195824   , p_accounting_coa_id            => l_adr_accounting_coa_id
195825   , p_adr_code                     => 'CST_AWO_OFFSET'
195826   , p_adr_type_code                => 'S'
195827   , p_component_type               => l_component_type
195828   , p_component_code               => l_component_code
195829   , p_component_type_code          => l_component_type_code
195830   , p_component_appl_id            => l_component_appl_id
195831   , p_amb_context_code             => l_amb_context_code
195832   , p_side                         => 'NA'
195833   );
195834 
195835 
195836    --
195837    --
195838    END IF;
195839    --
195840    -- Bug 4922099
195841    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
195842           (NVL(l_enc_upg_option, 'N') = 'O')
195843         ) AND
195844         (l_bflow_method_code = 'PRIOR_ENTRY')
195845       )
195846    THEN
195847       IF
195848       --
195849       1 = 2
195850       --
195851       THEN
195852       xla_accounting_err_pkg.build_message
195853                                     (p_appli_s_name            => 'XLA'
195854                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
195855                                     ,p_token_1                 => 'LINE_NUMBER'
195856                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
195857                                     ,p_token_2                 => 'LINE_TYPE_NAME'
195858                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
195859                                                                              l_component_type
195860                                                                             ,l_component_code
195861                                                                             ,l_component_type_code
195862                                                                             ,l_component_appl_id
195863                                                                             ,l_amb_context_code
195864                                                                             ,l_entity_code
195865                                                                             ,l_event_class_code
195866                                                                            )
195867                                     ,p_token_3                 => 'OWNER'
195868                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
195869                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
195870                                                                           ,p_lookup_code    => l_component_type_code
195871                                                                          )
195872                                     ,p_token_4                 => 'PRODUCT_NAME'
195873                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
195874                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
195875                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
195876                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
195877                                     ,p_ae_header_id            =>  NULL
195878                                        );
195879 
195880         IF (C_LEVEL_ERROR>= g_log_level) THEN
195881                  trace
195882                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
195883                       ,p_level    => C_LEVEL_ERROR
195884                       ,p_module   => l_log_module);
195885         END IF;
195886       END IF;
195887    END IF;
195888    --
195889    --
195890    ------------------------------------------------------------------------------------------------
195891    -- 4219869 Business Flow
195892    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
195893    -- Prior Entry.  Currently, the following code is always generated.
195894    ------------------------------------------------------------------------------------------------
195895    XLA_AE_LINES_PKG.ValidateCurrentLine;
195896 
195897    ------------------------------------------------------------------------------------
195898    -- 4219869 Business Flow
195899    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
195900    ------------------------------------------------------------------------------------
195901    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
195902 
195903    ----------------------------------------------------------------------------------
195904    -- 4219869 Business Flow
195905    -- Update journal entry status -- Need to generate this within IF <condition>
195906    ----------------------------------------------------------------------------------
195907    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
195908          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
195909          ,p_balance_type_code => l_balance_type_code
195910          );
195911 
195912    -------------------------------------------------------------------------------------------
195913    -- 4262811 - Generate the Accrual Reversal lines
195914    -------------------------------------------------------------------------------------------
195915    BEGIN
195916       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
195917                               (g_array_event(p_event_id).array_value_num('header_index'));
195918       IF l_acc_rev_flag IS NULL THEN
195919          l_acc_rev_flag := 'N';
195920       END IF;
195921    EXCEPTION
195922       WHEN OTHERS THEN
195923          l_acc_rev_flag := 'N';
195924    END;
195925    --
195926    IF (l_acc_rev_flag = 'Y') THEN
195927 
195928        -- 4645092  ------------------------------------------------------------------------------
195929        -- To allow MPA report to determine if it should generate report process
195930        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
195931        ------------------------------------------------------------------------------------------
195932 
195933        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
195934        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
195935    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
195936    -- call ADRs
195937    -- Bug 4922099
195938    --
195939    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
195940         (NVL(l_actual_upg_option, 'N') = 'O') OR
195941         (NVL(l_enc_upg_option, 'N') = 'O')
195942       )
195943    THEN
195944    NULL;
195945    --
195946    --
195947    
195948   l_ccid := AcctDerRule_5(
195949            p_application_id           => p_application_id
195950          , p_ae_header_id             => l_ae_header_id 
195951 , p_source_10 => p_source_10
195952          , x_transaction_coa_id       => l_adr_transaction_coa_id
195953          , x_accounting_coa_id        => l_adr_accounting_coa_id
195954          , x_value_type_code          => l_adr_value_type_code
195955          , p_side                     => 'NA'
195956    );
195957 
195958    xla_ae_lines_pkg.set_ccid(
195959     p_code_combination_id          => l_ccid
195960   , p_value_type_code              => l_adr_value_type_code
195961   , p_transaction_coa_id           => l_adr_transaction_coa_id
195962   , p_accounting_coa_id            => l_adr_accounting_coa_id
195963   , p_adr_code                     => 'CST_AWO_OFFSET'
195964   , p_adr_type_code                => 'S'
195965   , p_component_type               => l_component_type
195966   , p_component_code               => l_component_code
195967   , p_component_type_code          => l_component_type_code
195968   , p_component_appl_id            => l_component_appl_id
195969   , p_amb_context_code             => l_amb_context_code
195970   , p_side                         => 'NA'
195971   );
195972 
195973 
195974    --
195975    --
195976    END IF;
195977 
195978        --
195979        -- Update the line information that should be overwritten
195980        --
195981        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
195982                                          p_header_num   => 1);
195983        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
195984 
195985        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
195986 
195987        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
195988           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
195989        END IF;
195990 
195991       --
195992       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
195993       --
195994       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
195995           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
195996       ELSE
195997           ---------------------------------------------------------------------------------------------------
195998           -- 4262811a Switch Sign
195999           ---------------------------------------------------------------------------------------------------
196000           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
196001           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
196002                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
196003           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
196004                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
196005           -- 5132302
196006           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
196007                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
196008 
196009       END IF;
196010 
196011       -- 4955764
196012       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
196013       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
196014 
196015 
196016       XLA_AE_LINES_PKG.ValidateCurrentLine;
196017       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
196018 
196019       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
196020                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
196021                ,p_balance_type_code => l_balance_type_code);
196022 
196023    END IF;
196024 
196025    -----------------------------------------------------------------------------------------
196026    -- 4262811 Multiperiod Accounting
196027    -----------------------------------------------------------------------------------------
196028      -- No MPA option is assigned.
196029 
196030 
196031 END IF;
196032 END IF;
196033 --
196034 
196035 --
196036 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196037    trace
196038       (p_msg      => 'END of AcctLineType_358'
196039       ,p_level    => C_LEVEL_PROCEDURE
196040       ,p_module   => l_log_module);
196041 END IF;
196042 --
196043 EXCEPTION
196044   WHEN xla_exceptions_pkg.application_exception THEN
196045       RAISE;
196046   WHEN OTHERS THEN
196047        xla_exceptions_pkg.raise_message
196048            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_358');
196049 END AcctLineType_358;
196050 --
196051 
196052 ---------------------------------------
196053 --
196054 -- PRIVATE FUNCTION
196055 --         AcctLineType_359
196056 --
196057 ---------------------------------------
196058 PROCEDURE AcctLineType_359 (
196059   p_application_id        IN NUMBER
196060  ,p_event_id              IN NUMBER
196061  ,p_calculate_acctd_flag  IN VARCHAR2
196062  ,p_calculate_g_l_flag    IN VARCHAR2
196063  ,p_actual_flag           IN OUT VARCHAR2
196064  ,p_balance_type_code     OUT VARCHAR2
196065  ,p_gain_or_loss_ref      OUT VARCHAR2
196066  
196067 --TRANSACTION_ID
196068  , p_source_1            IN NUMBER
196069 --Item Concatenated Segments
196070  , p_source_2            IN VARCHAR2
196071 --Transaction Quantity
196072  , p_source_3            IN NUMBER
196073 --Transaction Unit of Measure Code
196074  , p_source_4            IN VARCHAR2
196075 --Inventory Transaction Type Description
196076  , p_source_5            IN VARCHAR2
196077 --Cost Management Default Account
196078  , p_source_11            IN NUMBER
196079 --DISTRIBUTION_IDENTIFIER
196080  , p_source_84            IN NUMBER
196081 --Distribution Type
196082  , p_source_85            IN VARCHAR2
196083  , p_source_85_meaning    IN VARCHAR2
196084 --Entered Currency Code
196085  , p_source_88            IN VARCHAR2
196086 --Entered Amount
196087  , p_source_91            IN NUMBER
196088 --Currency Conversion Date
196089  , p_source_92            IN DATE
196090 --Currency Conversion Rate
196091  , p_source_93            IN NUMBER
196092 --Currency Conversion Type
196093  , p_source_94            IN VARCHAR2
196094 --Accounted Amount
196095  , p_source_95            IN NUMBER
196096 --Accounting Line Type
196097  , p_source_97            IN NUMBER
196098 )
196099 IS
196100 
196101 l_component_type              VARCHAR2(80);
196102 l_component_code              VARCHAR2(30);
196103 l_component_type_code         VARCHAR2(1);
196104 l_component_appl_id           INTEGER;
196105 l_amb_context_code            VARCHAR2(30);
196106 l_entity_code                 VARCHAR2(30);
196107 l_event_class_code            VARCHAR2(30);
196108 l_ae_header_id                NUMBER;
196109 l_event_type_code             VARCHAR2(30);
196110 l_line_definition_code        VARCHAR2(30);
196111 l_line_definition_owner_code  VARCHAR2(1);
196112 --
196113 -- adr variables
196114 l_segment                     VARCHAR2(30);
196115 l_ccid                        NUMBER;
196116 l_adr_transaction_coa_id      NUMBER;
196117 l_adr_accounting_coa_id       NUMBER;
196118 l_adr_flexfield_segment_code  VARCHAR2(30);
196119 l_adr_flex_value_set_id       NUMBER;
196120 l_adr_value_type_code         VARCHAR2(30);
196121 l_adr_value_combination_id    NUMBER;
196122 l_adr_value_segment_code      VARCHAR2(30);
196123 
196124 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
196125 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
196126 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
196127 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
196128 
196129 -- 4262811 Variables ------------------------------------------------------------------------------------------
196130 l_entered_amt_idx             NUMBER;
196131 l_accted_amt_idx              NUMBER;
196132 l_acc_rev_flag                VARCHAR2(1);
196133 l_accrual_line_num            NUMBER;
196134 l_tmp_amt                     NUMBER;
196135 l_acc_rev_natural_side_code   VARCHAR2(1);
196136 
196137 l_num_entries                 NUMBER;
196138 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
196139 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
196140 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
196141 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
196142 l_recog_line_1                NUMBER;
196143 l_recog_line_2                NUMBER;
196144 
196145 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
196146 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
196147 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
196148 
196149 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
196150 
196151 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
196152 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
196153 
196154 ---------------------------------------------------------------------------------------------------------------
196155 
196156 
196157 --
196158 -- bulk performance
196159 --
196160 l_balance_type_code           VARCHAR2(1);
196161 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
196162 l_log_module                  VARCHAR2(240);
196163 
196164 --
196165 -- Upgrade strategy
196166 --
196167 l_actual_upg_option           VARCHAR2(1);
196168 l_enc_upg_option           VARCHAR2(1);
196169 
196170 --
196171 BEGIN
196172 --
196173 IF g_log_enabled THEN
196174       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_359';
196175 END IF;
196176 --
196177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196178 
196179       trace
196180          (p_msg      => 'BEGIN of AcctLineType_359'
196181          ,p_level    => C_LEVEL_PROCEDURE
196182          ,p_module   => l_log_module);
196183 
196184 END IF;
196185 --
196186 l_component_type             := 'AMB_JLT';
196187 l_component_code             := 'OFFSET';
196188 l_component_type_code        := 'S';
196189 l_component_appl_id          :=  707;
196190 l_amb_context_code           := 'DEFAULT';
196191 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
196192 l_event_class_code           := 'DIR_INTERORG_SHIP';
196193 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
196194 l_line_definition_owner_code := 'S';
196195 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
196196 --
196197 l_balance_type_code          := 'A';
196198 l_segment                     := NULL;
196199 l_ccid                        := NULL;
196200 l_adr_transaction_coa_id      := NULL;
196201 l_adr_accounting_coa_id       := NULL;
196202 l_adr_flexfield_segment_code  := NULL;
196203 l_adr_flex_value_set_id       := NULL;
196204 l_adr_value_type_code         := NULL;
196205 l_adr_value_combination_id    := NULL;
196206 l_adr_value_segment_code      := NULL;
196207 
196208 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
196209 l_bflow_class_code           := '';    -- 4219869 Business Flow
196210 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
196211 l_budgetary_control_flag     := 'N';
196212 
196213 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
196214 l_bflow_applied_to_amt       := NULL; -- 5132302
196215 l_entered_amt_idx            := NULL;          -- 4262811
196216 l_accted_amt_idx             := NULL;          -- 4262811
196217 l_acc_rev_flag               := NULL;          -- 4262811
196218 l_accrual_line_num           := NULL;          -- 4262811
196219 l_tmp_amt                    := NULL;          -- 4262811
196220 --
196221  
196222 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
196223     l_balance_type_code <> 'B' THEN
196224 IF NVL(p_source_97,9E125) =  2
196225  THEN 
196226 
196227    --
196228    XLA_AE_LINES_PKG.SetNewLine;
196229 
196230    p_balance_type_code          := l_balance_type_code;
196231    -- set the flag so later we will know whether the gain loss line needs to be created
196232    
196233    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
196234      p_actual_flag :='A';
196235    END IF;
196236 
196237    --
196238    -- bulk performance
196239    --
196240    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
196241                                       p_header_num   => 0); -- 4262811
196242    --
196243    -- set accounting line options
196244    --
196245    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
196246            p_natural_side_code          => 'D'
196247          , p_gain_or_loss_flag          => 'N'
196248          , p_gl_transfer_mode_code      => 'S'
196249          , p_acct_entry_type_code       => 'A'
196250          , p_switch_side_flag           => 'Y'
196251          , p_merge_duplicate_code       => 'N'
196252          );
196253    --
196254    l_acc_rev_natural_side_code := 'C';  -- 4262811
196255    -- 
196256    --
196257    -- set accounting line type info
196258    --
196259    xla_ae_lines_pkg.SetAcctLineType
196260       (p_component_type             => l_component_type
196261       ,p_event_type_code            => l_event_type_code
196262       ,p_line_definition_owner_code => l_line_definition_owner_code
196263       ,p_line_definition_code       => l_line_definition_code
196264       ,p_accounting_line_code       => l_component_code
196265       ,p_accounting_line_type_code  => l_component_type_code
196266       ,p_accounting_line_appl_id    => l_component_appl_id
196267       ,p_amb_context_code           => l_amb_context_code
196268       ,p_entity_code                => l_entity_code
196269       ,p_event_class_code           => l_event_class_code);
196270    --
196271    -- set accounting class
196272    --
196273    xla_ae_lines_pkg.SetAcctClass(
196274            p_accounting_class_code  => 'OFFSET'
196275          , p_ae_header_id           => l_ae_header_id
196276          );
196277 
196278    --
196279    -- set rounding class
196280    --
196281    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
196282                       'OFFSET';
196283 
196284    --
196285    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
196286    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
196287    --
196288    -- bulk performance
196289    --
196290    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
196291 
196292    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
196293       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
196294 
196295    -- 4955764
196296    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
196297       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
196298 
196299    -- 4458381 Public Sector Enh
196300    
196301    --
196302    -- set accounting attributes for the line type
196303    --
196304    l_entered_amt_idx := 3;
196305    l_accted_amt_idx  := 8;
196306    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
196307    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
196308    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
196309    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
196310    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
196311    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
196312    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
196313    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
196314    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
196315    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
196316    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
196317    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
196318    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
196319    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
196320    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
196321    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
196322    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
196323 
196324    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
196325    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
196326 
196327    ---------------------------------------------------------------------------------------------------------------
196328    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
196329    ---------------------------------------------------------------------------------------------------------------
196330    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
196331 
196332    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
196333    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
196334 
196335    IF xla_accounting_cache_pkg.GetValueChar
196336          (p_source_code         => 'LEDGER_CATEGORY_CODE'
196337          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
196338    AND l_bflow_method_code = 'PRIOR_ENTRY'
196339 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
196340    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
196341          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
196342        )
196343    THEN
196344          xla_ae_lines_pkg.BflowUpgEntry
196345            (p_business_method_code    => l_bflow_method_code
196346            ,p_business_class_code     => l_bflow_class_code
196347            ,p_balance_type            => l_balance_type_code);
196348    ELSE
196349       NULL;
196350 -- No business flow processing for business flow method of NONE.
196351    END IF;
196352 
196353    --
196354    -- call analytical criteria
196355    --
196356    
196357    --
196358    -- call description
196359    --
196360    
196361 xla_ae_lines_pkg.SetLineDescription(
196362    p_ae_header_id => l_ae_header_id
196363   ,p_description  => Description_1 (
196364      p_application_id         => p_application_id
196365    , p_ae_header_id           => l_ae_header_id 
196366 , p_source_1 => p_source_1
196367 , p_source_2 => p_source_2
196368 , p_source_3 => p_source_3
196369 , p_source_4 => p_source_4
196370 , p_source_5 => p_source_5
196371    )
196372 );
196373 
196374 
196375    --
196376    -- call ADRs
196377    -- Bug 4922099
196378    --
196379    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
196380         (NVL(l_actual_upg_option, 'N') = 'O') OR
196381         (NVL(l_enc_upg_option, 'N') = 'O')
196382       )
196383    THEN
196384    NULL;
196385    --
196386    --
196387    
196388   l_ccid := AcctDerRule_6(
196389            p_application_id           => p_application_id
196390          , p_ae_header_id             => l_ae_header_id 
196391 , p_source_11 => p_source_11
196392          , x_transaction_coa_id       => l_adr_transaction_coa_id
196393          , x_accounting_coa_id        => l_adr_accounting_coa_id
196394          , x_value_type_code          => l_adr_value_type_code
196395          , p_side                     => 'NA'
196396    );
196397 
196398    xla_ae_lines_pkg.set_ccid(
196399     p_code_combination_id          => l_ccid
196400   , p_value_type_code              => l_adr_value_type_code
196401   , p_transaction_coa_id           => l_adr_transaction_coa_id
196402   , p_accounting_coa_id            => l_adr_accounting_coa_id
196403   , p_adr_code                     => 'CST_DEFAULT'
196404   , p_adr_type_code                => 'S'
196405   , p_component_type               => l_component_type
196406   , p_component_code               => l_component_code
196407   , p_component_type_code          => l_component_type_code
196408   , p_component_appl_id            => l_component_appl_id
196409   , p_amb_context_code             => l_amb_context_code
196410   , p_side                         => 'NA'
196411   );
196412 
196413 
196414    --
196415    --
196416    END IF;
196417    --
196418    -- Bug 4922099
196419    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
196420           (NVL(l_enc_upg_option, 'N') = 'O')
196421         ) AND
196422         (l_bflow_method_code = 'PRIOR_ENTRY')
196423       )
196424    THEN
196425       IF
196426       --
196427       1 = 2
196428       --
196429       THEN
196430       xla_accounting_err_pkg.build_message
196431                                     (p_appli_s_name            => 'XLA'
196432                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
196433                                     ,p_token_1                 => 'LINE_NUMBER'
196434                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
196435                                     ,p_token_2                 => 'LINE_TYPE_NAME'
196436                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
196437                                                                              l_component_type
196438                                                                             ,l_component_code
196439                                                                             ,l_component_type_code
196440                                                                             ,l_component_appl_id
196441                                                                             ,l_amb_context_code
196442                                                                             ,l_entity_code
196443                                                                             ,l_event_class_code
196444                                                                            )
196445                                     ,p_token_3                 => 'OWNER'
196446                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
196447                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
196448                                                                           ,p_lookup_code    => l_component_type_code
196449                                                                          )
196450                                     ,p_token_4                 => 'PRODUCT_NAME'
196451                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
196452                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
196453                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
196454                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
196455                                     ,p_ae_header_id            =>  NULL
196456                                        );
196457 
196458         IF (C_LEVEL_ERROR>= g_log_level) THEN
196459                  trace
196460                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
196461                       ,p_level    => C_LEVEL_ERROR
196462                       ,p_module   => l_log_module);
196463         END IF;
196464       END IF;
196465    END IF;
196466    --
196467    --
196468    ------------------------------------------------------------------------------------------------
196469    -- 4219869 Business Flow
196470    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
196471    -- Prior Entry.  Currently, the following code is always generated.
196472    ------------------------------------------------------------------------------------------------
196473    XLA_AE_LINES_PKG.ValidateCurrentLine;
196474 
196475    ------------------------------------------------------------------------------------
196476    -- 4219869 Business Flow
196477    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
196478    ------------------------------------------------------------------------------------
196479    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
196480 
196481    ----------------------------------------------------------------------------------
196482    -- 4219869 Business Flow
196483    -- Update journal entry status -- Need to generate this within IF <condition>
196484    ----------------------------------------------------------------------------------
196485    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
196486          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
196487          ,p_balance_type_code => l_balance_type_code
196488          );
196489 
196490    -------------------------------------------------------------------------------------------
196491    -- 4262811 - Generate the Accrual Reversal lines
196492    -------------------------------------------------------------------------------------------
196493    BEGIN
196494       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
196495                               (g_array_event(p_event_id).array_value_num('header_index'));
196496       IF l_acc_rev_flag IS NULL THEN
196497          l_acc_rev_flag := 'N';
196498       END IF;
196499    EXCEPTION
196500       WHEN OTHERS THEN
196501          l_acc_rev_flag := 'N';
196502    END;
196503    --
196504    IF (l_acc_rev_flag = 'Y') THEN
196505 
196506        -- 4645092  ------------------------------------------------------------------------------
196507        -- To allow MPA report to determine if it should generate report process
196508        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
196509        ------------------------------------------------------------------------------------------
196510 
196511        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
196512        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
196513    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
196514    -- call ADRs
196515    -- Bug 4922099
196516    --
196517    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
196518         (NVL(l_actual_upg_option, 'N') = 'O') OR
196519         (NVL(l_enc_upg_option, 'N') = 'O')
196520       )
196521    THEN
196522    NULL;
196523    --
196524    --
196525    
196526   l_ccid := AcctDerRule_6(
196527            p_application_id           => p_application_id
196528          , p_ae_header_id             => l_ae_header_id 
196529 , p_source_11 => p_source_11
196530          , x_transaction_coa_id       => l_adr_transaction_coa_id
196531          , x_accounting_coa_id        => l_adr_accounting_coa_id
196532          , x_value_type_code          => l_adr_value_type_code
196533          , p_side                     => 'NA'
196534    );
196535 
196536    xla_ae_lines_pkg.set_ccid(
196537     p_code_combination_id          => l_ccid
196538   , p_value_type_code              => l_adr_value_type_code
196539   , p_transaction_coa_id           => l_adr_transaction_coa_id
196540   , p_accounting_coa_id            => l_adr_accounting_coa_id
196541   , p_adr_code                     => 'CST_DEFAULT'
196542   , p_adr_type_code                => 'S'
196543   , p_component_type               => l_component_type
196544   , p_component_code               => l_component_code
196545   , p_component_type_code          => l_component_type_code
196546   , p_component_appl_id            => l_component_appl_id
196547   , p_amb_context_code             => l_amb_context_code
196548   , p_side                         => 'NA'
196549   );
196550 
196551 
196552    --
196553    --
196554    END IF;
196555 
196556        --
196557        -- Update the line information that should be overwritten
196558        --
196559        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
196560                                          p_header_num   => 1);
196561        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
196562 
196563        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
196564 
196565        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
196566           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
196567        END IF;
196568 
196569       --
196570       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
196571       --
196572       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
196573           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
196574       ELSE
196575           ---------------------------------------------------------------------------------------------------
196576           -- 4262811a Switch Sign
196577           ---------------------------------------------------------------------------------------------------
196578           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
196579           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
196580                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
196581           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
196582                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
196583           -- 5132302
196584           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
196585                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
196586 
196587       END IF;
196588 
196589       -- 4955764
196590       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
196591       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
196592 
196593 
196594       XLA_AE_LINES_PKG.ValidateCurrentLine;
196595       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
196596 
196597       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
196598                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
196599                ,p_balance_type_code => l_balance_type_code);
196600 
196601    END IF;
196602 
196603    -----------------------------------------------------------------------------------------
196604    -- 4262811 Multiperiod Accounting
196605    -----------------------------------------------------------------------------------------
196606      -- No MPA option is assigned.
196607 
196608 
196609 END IF;
196610 END IF;
196611 --
196612 
196613 --
196614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196615    trace
196616       (p_msg      => 'END of AcctLineType_359'
196617       ,p_level    => C_LEVEL_PROCEDURE
196618       ,p_module   => l_log_module);
196619 END IF;
196620 --
196621 EXCEPTION
196622   WHEN xla_exceptions_pkg.application_exception THEN
196623       RAISE;
196624   WHEN OTHERS THEN
196625        xla_exceptions_pkg.raise_message
196626            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_359');
196627 END AcctLineType_359;
196628 --
196629 
196630 ---------------------------------------
196631 --
196632 -- PRIVATE FUNCTION
196633 --         AcctLineType_360
196634 --
196635 ---------------------------------------
196636 PROCEDURE AcctLineType_360 (
196637   p_application_id        IN NUMBER
196638  ,p_event_id              IN NUMBER
196639  ,p_calculate_acctd_flag  IN VARCHAR2
196640  ,p_calculate_g_l_flag    IN VARCHAR2
196641  ,p_actual_flag           IN OUT VARCHAR2
196642  ,p_balance_type_code     OUT VARCHAR2
196643  ,p_gain_or_loss_ref      OUT VARCHAR2
196644  
196645 --TRANSACTION_ID
196646  , p_source_1            IN NUMBER
196647 --Item Concatenated Segments
196648  , p_source_2            IN VARCHAR2
196649 --Transaction Quantity
196650  , p_source_3            IN NUMBER
196651 --Transaction Unit of Measure Code
196652  , p_source_4            IN VARCHAR2
196653 --Inventory Transaction Type Description
196654  , p_source_5            IN VARCHAR2
196655 --Cost Management Default Account
196656  , p_source_11            IN NUMBER
196657 --Applied to Application ID
196658  , p_source_79            IN NUMBER
196659 --Applied to Distribution Link Type
196660  , p_source_80            IN VARCHAR2
196661 --Applied to Entity Code
196662  , p_source_81            IN VARCHAR2
196663 --DISTRIBUTION_IDENTIFIER
196664  , p_source_84            IN NUMBER
196665 --Distribution Type
196666  , p_source_85            IN VARCHAR2
196667  , p_source_85_meaning    IN VARCHAR2
196668 --Encumbrance Reversal Amount Entered
196669  , p_source_87            IN NUMBER
196670 --Entered Currency Code
196671  , p_source_88            IN VARCHAR2
196672 --Transaction Encumbrance Reversal Amount
196673  , p_source_89            IN NUMBER
196674 --Entered Amount
196675  , p_source_91            IN NUMBER
196676 --Currency Conversion Date
196677  , p_source_92            IN DATE
196678 --Currency Conversion Rate
196679  , p_source_93            IN NUMBER
196680 --Currency Conversion Type
196681  , p_source_94            IN VARCHAR2
196682 --Accounted Amount
196683  , p_source_95            IN NUMBER
196684 --Accounting Line Type
196685  , p_source_97            IN NUMBER
196686 --Costing Encumbrance Upgrade Option
196687  , p_source_100            IN VARCHAR2
196688 --TXN_PO_DISTRIBUTION_ID
196689  , p_source_101            IN NUMBER
196690 --TXN_PO_HEADER_ID
196691  , p_source_102            IN NUMBER
196692 --Requisition Budget Account
196693  , p_source_103            IN NUMBER
196694 --Requisition Encumbrance Type Identifier
196695  , p_source_104            IN NUMBER
196696 )
196697 IS
196698 
196699 l_component_type              VARCHAR2(80);
196700 l_component_code              VARCHAR2(30);
196701 l_component_type_code         VARCHAR2(1);
196702 l_component_appl_id           INTEGER;
196703 l_amb_context_code            VARCHAR2(30);
196704 l_entity_code                 VARCHAR2(30);
196705 l_event_class_code            VARCHAR2(30);
196706 l_ae_header_id                NUMBER;
196707 l_event_type_code             VARCHAR2(30);
196708 l_line_definition_code        VARCHAR2(30);
196709 l_line_definition_owner_code  VARCHAR2(1);
196710 --
196711 -- adr variables
196712 l_segment                     VARCHAR2(30);
196713 l_ccid                        NUMBER;
196714 l_adr_transaction_coa_id      NUMBER;
196715 l_adr_accounting_coa_id       NUMBER;
196716 l_adr_flexfield_segment_code  VARCHAR2(30);
196717 l_adr_flex_value_set_id       NUMBER;
196718 l_adr_value_type_code         VARCHAR2(30);
196719 l_adr_value_combination_id    NUMBER;
196720 l_adr_value_segment_code      VARCHAR2(30);
196721 
196722 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
196723 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
196724 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
196725 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
196726 
196727 -- 4262811 Variables ------------------------------------------------------------------------------------------
196728 l_entered_amt_idx             NUMBER;
196729 l_accted_amt_idx              NUMBER;
196730 l_acc_rev_flag                VARCHAR2(1);
196731 l_accrual_line_num            NUMBER;
196732 l_tmp_amt                     NUMBER;
196733 l_acc_rev_natural_side_code   VARCHAR2(1);
196734 
196735 l_num_entries                 NUMBER;
196736 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
196737 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
196738 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
196739 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
196740 l_recog_line_1                NUMBER;
196741 l_recog_line_2                NUMBER;
196742 
196743 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
196744 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
196745 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
196746 
196747 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
196748 
196749 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
196750 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
196751 
196752 ---------------------------------------------------------------------------------------------------------------
196753 
196754 
196755 --
196756 -- bulk performance
196757 --
196758 l_balance_type_code           VARCHAR2(1);
196759 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
196760 l_log_module                  VARCHAR2(240);
196761 
196762 --
196763 -- Upgrade strategy
196764 --
196765 l_actual_upg_option           VARCHAR2(1);
196766 l_enc_upg_option           VARCHAR2(1);
196767 
196768 --
196769 BEGIN
196770 --
196771 IF g_log_enabled THEN
196772       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_360';
196773 END IF;
196774 --
196775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196776 
196777       trace
196778          (p_msg      => 'BEGIN of AcctLineType_360'
196779          ,p_level    => C_LEVEL_PROCEDURE
196780          ,p_module   => l_log_module);
196781 
196782 END IF;
196783 --
196784 l_component_type             := 'AMB_JLT';
196785 l_component_code             := 'OFFSET';
196786 l_component_type_code        := 'S';
196787 l_component_appl_id          :=  707;
196788 l_amb_context_code           := 'DEFAULT';
196789 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
196790 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
196791 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
196792 l_line_definition_owner_code := 'S';
196793 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
196794 --
196795 l_balance_type_code          := 'A';
196796 l_segment                     := NULL;
196797 l_ccid                        := NULL;
196798 l_adr_transaction_coa_id      := NULL;
196799 l_adr_accounting_coa_id       := NULL;
196800 l_adr_flexfield_segment_code  := NULL;
196801 l_adr_flex_value_set_id       := NULL;
196802 l_adr_value_type_code         := NULL;
196803 l_adr_value_combination_id    := NULL;
196804 l_adr_value_segment_code      := NULL;
196805 
196806 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
196807 l_bflow_class_code           := '';    -- 4219869 Business Flow
196808 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
196809 l_budgetary_control_flag     := 'N';
196810 
196811 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
196812 l_bflow_applied_to_amt       := NULL; -- 5132302
196813 l_entered_amt_idx            := NULL;          -- 4262811
196814 l_accted_amt_idx             := NULL;          -- 4262811
196815 l_acc_rev_flag               := NULL;          -- 4262811
196816 l_accrual_line_num           := NULL;          -- 4262811
196817 l_tmp_amt                    := NULL;          -- 4262811
196818 --
196819  
196820 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
196821     l_balance_type_code <> 'B' THEN
196822 IF NVL(p_source_97,9E125) =  2 AND 
196823 p_source_95 >=  0
196824  THEN 
196825 
196826    --
196827    XLA_AE_LINES_PKG.SetNewLine;
196828 
196829    p_balance_type_code          := l_balance_type_code;
196830    -- set the flag so later we will know whether the gain loss line needs to be created
196831    
196832    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
196833      p_actual_flag :='A';
196834    END IF;
196835 
196836    --
196837    -- bulk performance
196838    --
196839    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
196840                                       p_header_num   => 0); -- 4262811
196841    --
196842    -- set accounting line options
196843    --
196844    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
196845            p_natural_side_code          => 'D'
196846          , p_gain_or_loss_flag          => 'N'
196847          , p_gl_transfer_mode_code      => 'S'
196848          , p_acct_entry_type_code       => 'A'
196849          , p_switch_side_flag           => 'Y'
196850          , p_merge_duplicate_code       => 'N'
196851          );
196852    --
196853    l_acc_rev_natural_side_code := 'C';  -- 4262811
196854    -- 
196855    --
196856    -- set accounting line type info
196857    --
196858    xla_ae_lines_pkg.SetAcctLineType
196859       (p_component_type             => l_component_type
196860       ,p_event_type_code            => l_event_type_code
196861       ,p_line_definition_owner_code => l_line_definition_owner_code
196862       ,p_line_definition_code       => l_line_definition_code
196863       ,p_accounting_line_code       => l_component_code
196864       ,p_accounting_line_type_code  => l_component_type_code
196865       ,p_accounting_line_appl_id    => l_component_appl_id
196866       ,p_amb_context_code           => l_amb_context_code
196867       ,p_entity_code                => l_entity_code
196868       ,p_event_class_code           => l_event_class_code);
196869    --
196870    -- set accounting class
196871    --
196872    xla_ae_lines_pkg.SetAcctClass(
196873            p_accounting_class_code  => 'OFFSET'
196874          , p_ae_header_id           => l_ae_header_id
196875          );
196876 
196877    --
196878    -- set rounding class
196879    --
196880    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
196881                       'OFFSET';
196882 
196883    --
196884    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
196885    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
196886    --
196887    -- bulk performance
196888    --
196889    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
196890 
196891    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
196892       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
196893 
196894    -- 4955764
196895    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
196896       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
196897 
196898    -- 4458381 Public Sector Enh
196899    
196900    --
196901    -- set accounting attributes for the line type
196902    --
196903    l_entered_amt_idx := 17;
196904    l_accted_amt_idx  := 22;
196905    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
196906    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
196907    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
196908    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
196909    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
196910    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
196911    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
196912    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
196913    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
196914    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
196915    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
196916    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
196917    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
196918    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
196919    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
196920    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
196921    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
196922    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
196923    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
196924    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
196925    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
196926    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
196927    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
196928    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
196929    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
196930    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
196931    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
196932    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
196933    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
196934    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
196935    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
196936    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
196937    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
196938    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
196939    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
196940    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
196941    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
196942    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
196943    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
196944    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
196945    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
196946    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
196947    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
196948    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
196949    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
196950    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
196951    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
196952    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
196953    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
196954 
196955    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
196956    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
196957 
196958    ---------------------------------------------------------------------------------------------------------------
196959    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
196960    ---------------------------------------------------------------------------------------------------------------
196961    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
196962 
196963    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
196964    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
196965 
196966    IF xla_accounting_cache_pkg.GetValueChar
196967          (p_source_code         => 'LEDGER_CATEGORY_CODE'
196968          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
196969    AND l_bflow_method_code = 'PRIOR_ENTRY'
196970 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
196971    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
196972          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
196973        )
196974    THEN
196975          xla_ae_lines_pkg.BflowUpgEntry
196976            (p_business_method_code    => l_bflow_method_code
196977            ,p_business_class_code     => l_bflow_class_code
196978            ,p_balance_type            => l_balance_type_code);
196979    ELSE
196980       NULL;
196981 -- No business flow processing for business flow method of NONE.
196982    END IF;
196983 
196984    --
196985    -- call analytical criteria
196986    --
196987    
196988    --
196989    -- call description
196990    --
196991    
196992 xla_ae_lines_pkg.SetLineDescription(
196993    p_ae_header_id => l_ae_header_id
196994   ,p_description  => Description_1 (
196995      p_application_id         => p_application_id
196996    , p_ae_header_id           => l_ae_header_id 
196997 , p_source_1 => p_source_1
196998 , p_source_2 => p_source_2
196999 , p_source_3 => p_source_3
197000 , p_source_4 => p_source_4
197001 , p_source_5 => p_source_5
197002    )
197003 );
197004 
197005 
197006    --
197007    -- call ADRs
197008    -- Bug 4922099
197009    --
197010    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
197011         (NVL(l_actual_upg_option, 'N') = 'O') OR
197012         (NVL(l_enc_upg_option, 'N') = 'O')
197013       )
197014    THEN
197015    NULL;
197016    --
197017    --
197018    
197019   l_ccid := AcctDerRule_6(
197020            p_application_id           => p_application_id
197021          , p_ae_header_id             => l_ae_header_id 
197022 , p_source_11 => p_source_11
197023          , x_transaction_coa_id       => l_adr_transaction_coa_id
197024          , x_accounting_coa_id        => l_adr_accounting_coa_id
197025          , x_value_type_code          => l_adr_value_type_code
197026          , p_side                     => 'NA'
197027    );
197028 
197029    xla_ae_lines_pkg.set_ccid(
197030     p_code_combination_id          => l_ccid
197031   , p_value_type_code              => l_adr_value_type_code
197032   , p_transaction_coa_id           => l_adr_transaction_coa_id
197033   , p_accounting_coa_id            => l_adr_accounting_coa_id
197034   , p_adr_code                     => 'CST_DEFAULT'
197035   , p_adr_type_code                => 'S'
197036   , p_component_type               => l_component_type
197037   , p_component_code               => l_component_code
197038   , p_component_type_code          => l_component_type_code
197039   , p_component_appl_id            => l_component_appl_id
197040   , p_amb_context_code             => l_amb_context_code
197041   , p_side                         => 'NA'
197042   );
197043 
197044 
197045    --
197046    --
197047    END IF;
197048    --
197049    -- Bug 4922099
197050    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
197051           (NVL(l_enc_upg_option, 'N') = 'O')
197052         ) AND
197053         (l_bflow_method_code = 'PRIOR_ENTRY')
197054       )
197055    THEN
197056       IF
197057       --
197058       1 = 2
197059       --
197060       THEN
197061       xla_accounting_err_pkg.build_message
197062                                     (p_appli_s_name            => 'XLA'
197063                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
197064                                     ,p_token_1                 => 'LINE_NUMBER'
197065                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
197066                                     ,p_token_2                 => 'LINE_TYPE_NAME'
197067                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
197068                                                                              l_component_type
197069                                                                             ,l_component_code
197070                                                                             ,l_component_type_code
197071                                                                             ,l_component_appl_id
197072                                                                             ,l_amb_context_code
197073                                                                             ,l_entity_code
197074                                                                             ,l_event_class_code
197075                                                                            )
197076                                     ,p_token_3                 => 'OWNER'
197077                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
197078                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
197079                                                                           ,p_lookup_code    => l_component_type_code
197080                                                                          )
197081                                     ,p_token_4                 => 'PRODUCT_NAME'
197082                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
197083                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
197084                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
197085                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
197086                                     ,p_ae_header_id            =>  NULL
197087                                        );
197088 
197089         IF (C_LEVEL_ERROR>= g_log_level) THEN
197090                  trace
197091                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
197092                       ,p_level    => C_LEVEL_ERROR
197093                       ,p_module   => l_log_module);
197094         END IF;
197095       END IF;
197096    END IF;
197097    --
197098    --
197099    ------------------------------------------------------------------------------------------------
197100    -- 4219869 Business Flow
197101    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
197102    -- Prior Entry.  Currently, the following code is always generated.
197103    ------------------------------------------------------------------------------------------------
197104    XLA_AE_LINES_PKG.ValidateCurrentLine;
197105 
197106    ------------------------------------------------------------------------------------
197107    -- 4219869 Business Flow
197108    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
197109    ------------------------------------------------------------------------------------
197110    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
197111 
197112    ----------------------------------------------------------------------------------
197113    -- 4219869 Business Flow
197114    -- Update journal entry status -- Need to generate this within IF <condition>
197115    ----------------------------------------------------------------------------------
197116    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
197117          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
197118          ,p_balance_type_code => l_balance_type_code
197119          );
197120 
197121    -------------------------------------------------------------------------------------------
197122    -- 4262811 - Generate the Accrual Reversal lines
197123    -------------------------------------------------------------------------------------------
197124    BEGIN
197125       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
197126                               (g_array_event(p_event_id).array_value_num('header_index'));
197127       IF l_acc_rev_flag IS NULL THEN
197128          l_acc_rev_flag := 'N';
197129       END IF;
197130    EXCEPTION
197131       WHEN OTHERS THEN
197132          l_acc_rev_flag := 'N';
197133    END;
197134    --
197135    IF (l_acc_rev_flag = 'Y') THEN
197136 
197137        -- 4645092  ------------------------------------------------------------------------------
197138        -- To allow MPA report to determine if it should generate report process
197139        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
197140        ------------------------------------------------------------------------------------------
197141 
197142        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
197143        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
197144    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
197145    -- call ADRs
197146    -- Bug 4922099
197147    --
197148    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
197149         (NVL(l_actual_upg_option, 'N') = 'O') OR
197150         (NVL(l_enc_upg_option, 'N') = 'O')
197151       )
197152    THEN
197153    NULL;
197154    --
197155    --
197156    
197157   l_ccid := AcctDerRule_6(
197158            p_application_id           => p_application_id
197159          , p_ae_header_id             => l_ae_header_id 
197160 , p_source_11 => p_source_11
197161          , x_transaction_coa_id       => l_adr_transaction_coa_id
197162          , x_accounting_coa_id        => l_adr_accounting_coa_id
197163          , x_value_type_code          => l_adr_value_type_code
197164          , p_side                     => 'NA'
197165    );
197166 
197167    xla_ae_lines_pkg.set_ccid(
197168     p_code_combination_id          => l_ccid
197169   , p_value_type_code              => l_adr_value_type_code
197170   , p_transaction_coa_id           => l_adr_transaction_coa_id
197171   , p_accounting_coa_id            => l_adr_accounting_coa_id
197172   , p_adr_code                     => 'CST_DEFAULT'
197173   , p_adr_type_code                => 'S'
197174   , p_component_type               => l_component_type
197175   , p_component_code               => l_component_code
197176   , p_component_type_code          => l_component_type_code
197177   , p_component_appl_id            => l_component_appl_id
197178   , p_amb_context_code             => l_amb_context_code
197179   , p_side                         => 'NA'
197180   );
197181 
197182 
197183    --
197184    --
197185    END IF;
197186 
197187        --
197188        -- Update the line information that should be overwritten
197189        --
197190        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
197191                                          p_header_num   => 1);
197192        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
197193 
197194        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
197195 
197196        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
197197           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
197198        END IF;
197199 
197200       --
197201       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
197202       --
197203       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
197204           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
197205       ELSE
197206           ---------------------------------------------------------------------------------------------------
197207           -- 4262811a Switch Sign
197208           ---------------------------------------------------------------------------------------------------
197209           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
197210           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
197211                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
197212           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
197213                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
197214           -- 5132302
197215           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
197216                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
197217 
197218       END IF;
197219 
197220       -- 4955764
197221       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
197222       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
197223 
197224 
197225       XLA_AE_LINES_PKG.ValidateCurrentLine;
197226       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
197227 
197228       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
197229                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
197230                ,p_balance_type_code => l_balance_type_code);
197231 
197232    END IF;
197233 
197234    -----------------------------------------------------------------------------------------
197235    -- 4262811 Multiperiod Accounting
197236    -----------------------------------------------------------------------------------------
197237      -- No MPA option is assigned.
197238 
197239 
197240 END IF;
197241 END IF;
197242 --
197243 
197244 --
197245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197246    trace
197247       (p_msg      => 'END of AcctLineType_360'
197248       ,p_level    => C_LEVEL_PROCEDURE
197249       ,p_module   => l_log_module);
197250 END IF;
197251 --
197252 EXCEPTION
197253   WHEN xla_exceptions_pkg.application_exception THEN
197254       RAISE;
197255   WHEN OTHERS THEN
197256        xla_exceptions_pkg.raise_message
197257            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_360');
197258 END AcctLineType_360;
197259 --
197260 
197261 ---------------------------------------
197262 --
197263 -- PRIVATE FUNCTION
197264 --         AcctLineType_361
197265 --
197266 ---------------------------------------
197267 PROCEDURE AcctLineType_361 (
197268   p_application_id        IN NUMBER
197269  ,p_event_id              IN NUMBER
197270  ,p_calculate_acctd_flag  IN VARCHAR2
197271  ,p_calculate_g_l_flag    IN VARCHAR2
197272  ,p_actual_flag           IN OUT VARCHAR2
197273  ,p_balance_type_code     OUT VARCHAR2
197274  ,p_gain_or_loss_ref      OUT VARCHAR2
197275  
197276 --TRANSACTION_ID
197277  , p_source_1            IN NUMBER
197278 --Item Concatenated Segments
197279  , p_source_2            IN VARCHAR2
197280 --Transaction Quantity
197281  , p_source_3            IN NUMBER
197282 --Transaction Unit of Measure Code
197283  , p_source_4            IN VARCHAR2
197284 --Inventory Transaction Type Description
197285  , p_source_5            IN VARCHAR2
197286 --Transaction Distribution Account
197287  , p_source_20            IN NUMBER
197288 --DISTRIBUTION_IDENTIFIER
197289  , p_source_84            IN NUMBER
197290 --Distribution Type
197291  , p_source_85            IN VARCHAR2
197292  , p_source_85_meaning    IN VARCHAR2
197293 --Entered Currency Code
197294  , p_source_88            IN VARCHAR2
197295 --Entered Amount
197296  , p_source_91            IN NUMBER
197297 --Currency Conversion Date
197298  , p_source_92            IN DATE
197299 --Currency Conversion Rate
197300  , p_source_93            IN NUMBER
197301 --Currency Conversion Type
197302  , p_source_94            IN VARCHAR2
197303 --Accounted Amount
197304  , p_source_95            IN NUMBER
197305 --Accounting Line Type
197306  , p_source_97            IN NUMBER
197307 )
197308 IS
197309 
197310 l_component_type              VARCHAR2(80);
197311 l_component_code              VARCHAR2(30);
197312 l_component_type_code         VARCHAR2(1);
197313 l_component_appl_id           INTEGER;
197314 l_amb_context_code            VARCHAR2(30);
197315 l_entity_code                 VARCHAR2(30);
197316 l_event_class_code            VARCHAR2(30);
197317 l_ae_header_id                NUMBER;
197318 l_event_type_code             VARCHAR2(30);
197319 l_line_definition_code        VARCHAR2(30);
197320 l_line_definition_owner_code  VARCHAR2(1);
197321 --
197322 -- adr variables
197323 l_segment                     VARCHAR2(30);
197324 l_ccid                        NUMBER;
197325 l_adr_transaction_coa_id      NUMBER;
197326 l_adr_accounting_coa_id       NUMBER;
197327 l_adr_flexfield_segment_code  VARCHAR2(30);
197328 l_adr_flex_value_set_id       NUMBER;
197329 l_adr_value_type_code         VARCHAR2(30);
197330 l_adr_value_combination_id    NUMBER;
197331 l_adr_value_segment_code      VARCHAR2(30);
197332 
197333 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
197334 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
197335 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
197336 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
197337 
197338 -- 4262811 Variables ------------------------------------------------------------------------------------------
197339 l_entered_amt_idx             NUMBER;
197340 l_accted_amt_idx              NUMBER;
197341 l_acc_rev_flag                VARCHAR2(1);
197342 l_accrual_line_num            NUMBER;
197343 l_tmp_amt                     NUMBER;
197344 l_acc_rev_natural_side_code   VARCHAR2(1);
197345 
197346 l_num_entries                 NUMBER;
197347 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
197348 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
197349 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
197350 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
197351 l_recog_line_1                NUMBER;
197352 l_recog_line_2                NUMBER;
197353 
197354 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
197355 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
197356 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
197357 
197358 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
197359 
197360 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
197361 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
197362 
197363 ---------------------------------------------------------------------------------------------------------------
197364 
197365 
197366 --
197367 -- bulk performance
197368 --
197369 l_balance_type_code           VARCHAR2(1);
197370 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
197371 l_log_module                  VARCHAR2(240);
197372 
197373 --
197374 -- Upgrade strategy
197375 --
197376 l_actual_upg_option           VARCHAR2(1);
197377 l_enc_upg_option           VARCHAR2(1);
197378 
197379 --
197380 BEGIN
197381 --
197382 IF g_log_enabled THEN
197383       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_361';
197384 END IF;
197385 --
197386 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197387 
197388       trace
197389          (p_msg      => 'BEGIN of AcctLineType_361'
197390          ,p_level    => C_LEVEL_PROCEDURE
197391          ,p_module   => l_log_module);
197392 
197393 END IF;
197394 --
197395 l_component_type             := 'AMB_JLT';
197396 l_component_code             := 'OFFSET';
197397 l_component_type_code        := 'S';
197398 l_component_appl_id          :=  707;
197399 l_amb_context_code           := 'DEFAULT';
197400 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
197401 l_event_class_code           := 'INT_ORDER_TO_EXP';
197402 l_event_type_code            := 'EXP_REQ_RCPT_TP';
197403 l_line_definition_owner_code := 'S';
197404 l_line_definition_code       := 'PI_EXP_REQ_RCPT_TP';
197405 --
197406 l_balance_type_code          := 'A';
197407 l_segment                     := NULL;
197408 l_ccid                        := NULL;
197409 l_adr_transaction_coa_id      := NULL;
197410 l_adr_accounting_coa_id       := NULL;
197411 l_adr_flexfield_segment_code  := NULL;
197412 l_adr_flex_value_set_id       := NULL;
197413 l_adr_value_type_code         := NULL;
197414 l_adr_value_combination_id    := NULL;
197415 l_adr_value_segment_code      := NULL;
197416 
197417 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
197418 l_bflow_class_code           := '';    -- 4219869 Business Flow
197419 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
197420 l_budgetary_control_flag     := 'N';
197421 
197422 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
197423 l_bflow_applied_to_amt       := NULL; -- 5132302
197424 l_entered_amt_idx            := NULL;          -- 4262811
197425 l_accted_amt_idx             := NULL;          -- 4262811
197426 l_acc_rev_flag               := NULL;          -- 4262811
197427 l_accrual_line_num           := NULL;          -- 4262811
197428 l_tmp_amt                    := NULL;          -- 4262811
197429 --
197430  
197431 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
197432     l_balance_type_code <> 'B' THEN
197433 IF NVL(p_source_97,9E125) =  2
197434  THEN 
197435 
197436    --
197437    XLA_AE_LINES_PKG.SetNewLine;
197438 
197439    p_balance_type_code          := l_balance_type_code;
197440    -- set the flag so later we will know whether the gain loss line needs to be created
197441    
197442    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
197443      p_actual_flag :='A';
197444    END IF;
197445 
197446    --
197447    -- bulk performance
197448    --
197449    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
197450                                       p_header_num   => 0); -- 4262811
197451    --
197452    -- set accounting line options
197453    --
197454    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
197455            p_natural_side_code          => 'D'
197456          , p_gain_or_loss_flag          => 'N'
197457          , p_gl_transfer_mode_code      => 'S'
197458          , p_acct_entry_type_code       => 'A'
197459          , p_switch_side_flag           => 'Y'
197460          , p_merge_duplicate_code       => 'N'
197461          );
197462    --
197463    l_acc_rev_natural_side_code := 'C';  -- 4262811
197464    -- 
197465    --
197466    -- set accounting line type info
197467    --
197468    xla_ae_lines_pkg.SetAcctLineType
197469       (p_component_type             => l_component_type
197470       ,p_event_type_code            => l_event_type_code
197471       ,p_line_definition_owner_code => l_line_definition_owner_code
197472       ,p_line_definition_code       => l_line_definition_code
197473       ,p_accounting_line_code       => l_component_code
197474       ,p_accounting_line_type_code  => l_component_type_code
197475       ,p_accounting_line_appl_id    => l_component_appl_id
197476       ,p_amb_context_code           => l_amb_context_code
197477       ,p_entity_code                => l_entity_code
197478       ,p_event_class_code           => l_event_class_code);
197479    --
197480    -- set accounting class
197481    --
197482    xla_ae_lines_pkg.SetAcctClass(
197483            p_accounting_class_code  => 'OFFSET'
197484          , p_ae_header_id           => l_ae_header_id
197485          );
197486 
197487    --
197488    -- set rounding class
197489    --
197490    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
197491                       'OFFSET';
197492 
197493    --
197494    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
197495    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
197496    --
197497    -- bulk performance
197498    --
197499    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
197500 
197501    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
197502       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
197503 
197504    -- 4955764
197505    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
197506       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
197507 
197508    -- 4458381 Public Sector Enh
197509    
197510    --
197511    -- set accounting attributes for the line type
197512    --
197513    l_entered_amt_idx := 3;
197514    l_accted_amt_idx  := 8;
197515    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
197516    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
197517    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
197518    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
197519    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
197520    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
197521    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
197522    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
197523    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
197524    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
197525    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
197526    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
197527    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
197528    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
197529    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
197530    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
197531    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
197532 
197533    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
197534    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
197535 
197536    ---------------------------------------------------------------------------------------------------------------
197537    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
197538    ---------------------------------------------------------------------------------------------------------------
197539    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
197540 
197541    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
197542    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
197543 
197544    IF xla_accounting_cache_pkg.GetValueChar
197545          (p_source_code         => 'LEDGER_CATEGORY_CODE'
197546          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
197547    AND l_bflow_method_code = 'PRIOR_ENTRY'
197548 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
197549    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
197550          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
197551        )
197552    THEN
197553          xla_ae_lines_pkg.BflowUpgEntry
197554            (p_business_method_code    => l_bflow_method_code
197555            ,p_business_class_code     => l_bflow_class_code
197556            ,p_balance_type            => l_balance_type_code);
197557    ELSE
197558       NULL;
197559 -- No business flow processing for business flow method of NONE.
197560    END IF;
197561 
197562    --
197563    -- call analytical criteria
197564    --
197565    
197566    --
197567    -- call description
197568    --
197569    
197570 xla_ae_lines_pkg.SetLineDescription(
197571    p_ae_header_id => l_ae_header_id
197572   ,p_description  => Description_1 (
197573      p_application_id         => p_application_id
197574    , p_ae_header_id           => l_ae_header_id 
197575 , p_source_1 => p_source_1
197576 , p_source_2 => p_source_2
197577 , p_source_3 => p_source_3
197578 , p_source_4 => p_source_4
197579 , p_source_5 => p_source_5
197580    )
197581 );
197582 
197583 
197584    --
197585    -- call ADRs
197586    -- Bug 4922099
197587    --
197588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
197589         (NVL(l_actual_upg_option, 'N') = 'O') OR
197590         (NVL(l_enc_upg_option, 'N') = 'O')
197591       )
197592    THEN
197593    NULL;
197594    --
197595    --
197596    
197597   l_ccid := AcctDerRule_16(
197598            p_application_id           => p_application_id
197599          , p_ae_header_id             => l_ae_header_id 
197600 , p_source_20 => p_source_20
197601          , x_transaction_coa_id       => l_adr_transaction_coa_id
197602          , x_accounting_coa_id        => l_adr_accounting_coa_id
197603          , x_value_type_code          => l_adr_value_type_code
197604          , p_side                     => 'NA'
197605    );
197606 
197607    xla_ae_lines_pkg.set_ccid(
197608     p_code_combination_id          => l_ccid
197609   , p_value_type_code              => l_adr_value_type_code
197610   , p_transaction_coa_id           => l_adr_transaction_coa_id
197611   , p_accounting_coa_id            => l_adr_accounting_coa_id
197612   , p_adr_code                     => 'PI_DISTRIBUTION'
197613   , p_adr_type_code                => 'S'
197614   , p_component_type               => l_component_type
197615   , p_component_code               => l_component_code
197616   , p_component_type_code          => l_component_type_code
197617   , p_component_appl_id            => l_component_appl_id
197618   , p_amb_context_code             => l_amb_context_code
197619   , p_side                         => 'NA'
197620   );
197621 
197622 
197623    --
197624    --
197625    END IF;
197626    --
197627    -- Bug 4922099
197628    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
197629           (NVL(l_enc_upg_option, 'N') = 'O')
197630         ) AND
197631         (l_bflow_method_code = 'PRIOR_ENTRY')
197632       )
197633    THEN
197634       IF
197635       --
197636       1 = 2
197637       --
197638       THEN
197639       xla_accounting_err_pkg.build_message
197640                                     (p_appli_s_name            => 'XLA'
197641                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
197642                                     ,p_token_1                 => 'LINE_NUMBER'
197643                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
197644                                     ,p_token_2                 => 'LINE_TYPE_NAME'
197645                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
197646                                                                              l_component_type
197647                                                                             ,l_component_code
197648                                                                             ,l_component_type_code
197649                                                                             ,l_component_appl_id
197650                                                                             ,l_amb_context_code
197651                                                                             ,l_entity_code
197652                                                                             ,l_event_class_code
197653                                                                            )
197654                                     ,p_token_3                 => 'OWNER'
197655                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
197656                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
197657                                                                           ,p_lookup_code    => l_component_type_code
197658                                                                          )
197659                                     ,p_token_4                 => 'PRODUCT_NAME'
197660                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
197661                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
197662                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
197663                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
197664                                     ,p_ae_header_id            =>  NULL
197665                                        );
197666 
197667         IF (C_LEVEL_ERROR>= g_log_level) THEN
197668                  trace
197669                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
197670                       ,p_level    => C_LEVEL_ERROR
197671                       ,p_module   => l_log_module);
197672         END IF;
197673       END IF;
197674    END IF;
197675    --
197676    --
197677    ------------------------------------------------------------------------------------------------
197678    -- 4219869 Business Flow
197679    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
197680    -- Prior Entry.  Currently, the following code is always generated.
197681    ------------------------------------------------------------------------------------------------
197682    XLA_AE_LINES_PKG.ValidateCurrentLine;
197683 
197684    ------------------------------------------------------------------------------------
197685    -- 4219869 Business Flow
197686    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
197687    ------------------------------------------------------------------------------------
197688    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
197689 
197690    ----------------------------------------------------------------------------------
197691    -- 4219869 Business Flow
197692    -- Update journal entry status -- Need to generate this within IF <condition>
197693    ----------------------------------------------------------------------------------
197694    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
197695          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
197696          ,p_balance_type_code => l_balance_type_code
197697          );
197698 
197699    -------------------------------------------------------------------------------------------
197700    -- 4262811 - Generate the Accrual Reversal lines
197701    -------------------------------------------------------------------------------------------
197702    BEGIN
197703       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
197704                               (g_array_event(p_event_id).array_value_num('header_index'));
197705       IF l_acc_rev_flag IS NULL THEN
197706          l_acc_rev_flag := 'N';
197707       END IF;
197708    EXCEPTION
197709       WHEN OTHERS THEN
197710          l_acc_rev_flag := 'N';
197711    END;
197712    --
197713    IF (l_acc_rev_flag = 'Y') THEN
197714 
197715        -- 4645092  ------------------------------------------------------------------------------
197716        -- To allow MPA report to determine if it should generate report process
197717        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
197718        ------------------------------------------------------------------------------------------
197719 
197720        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
197721        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
197722    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
197723    -- call ADRs
197724    -- Bug 4922099
197725    --
197726    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
197727         (NVL(l_actual_upg_option, 'N') = 'O') OR
197728         (NVL(l_enc_upg_option, 'N') = 'O')
197729       )
197730    THEN
197731    NULL;
197732    --
197733    --
197734    
197735   l_ccid := AcctDerRule_16(
197736            p_application_id           => p_application_id
197737          , p_ae_header_id             => l_ae_header_id 
197738 , p_source_20 => p_source_20
197739          , x_transaction_coa_id       => l_adr_transaction_coa_id
197740          , x_accounting_coa_id        => l_adr_accounting_coa_id
197741          , x_value_type_code          => l_adr_value_type_code
197742          , p_side                     => 'NA'
197743    );
197744 
197745    xla_ae_lines_pkg.set_ccid(
197746     p_code_combination_id          => l_ccid
197747   , p_value_type_code              => l_adr_value_type_code
197748   , p_transaction_coa_id           => l_adr_transaction_coa_id
197749   , p_accounting_coa_id            => l_adr_accounting_coa_id
197750   , p_adr_code                     => 'PI_DISTRIBUTION'
197751   , p_adr_type_code                => 'S'
197752   , p_component_type               => l_component_type
197753   , p_component_code               => l_component_code
197754   , p_component_type_code          => l_component_type_code
197755   , p_component_appl_id            => l_component_appl_id
197756   , p_amb_context_code             => l_amb_context_code
197757   , p_side                         => 'NA'
197758   );
197759 
197760 
197761    --
197762    --
197763    END IF;
197764 
197765        --
197766        -- Update the line information that should be overwritten
197767        --
197768        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
197769                                          p_header_num   => 1);
197770        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
197771 
197772        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
197773 
197774        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
197775           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
197776        END IF;
197777 
197778       --
197779       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
197780       --
197781       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
197782           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
197783       ELSE
197784           ---------------------------------------------------------------------------------------------------
197785           -- 4262811a Switch Sign
197786           ---------------------------------------------------------------------------------------------------
197787           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
197788           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
197789                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
197790           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
197791                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
197792           -- 5132302
197793           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
197794                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
197795 
197796       END IF;
197797 
197798       -- 4955764
197799       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
197800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
197801 
197802 
197803       XLA_AE_LINES_PKG.ValidateCurrentLine;
197804       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
197805 
197806       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
197807                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
197808                ,p_balance_type_code => l_balance_type_code);
197809 
197810    END IF;
197811 
197812    -----------------------------------------------------------------------------------------
197813    -- 4262811 Multiperiod Accounting
197814    -----------------------------------------------------------------------------------------
197815      -- No MPA option is assigned.
197816 
197817 
197818 END IF;
197819 END IF;
197820 --
197821 
197822 --
197823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197824    trace
197825       (p_msg      => 'END of AcctLineType_361'
197826       ,p_level    => C_LEVEL_PROCEDURE
197827       ,p_module   => l_log_module);
197828 END IF;
197829 --
197830 EXCEPTION
197831   WHEN xla_exceptions_pkg.application_exception THEN
197832       RAISE;
197833   WHEN OTHERS THEN
197834        xla_exceptions_pkg.raise_message
197835            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_361');
197836 END AcctLineType_361;
197837 --
197838 
197839 ---------------------------------------
197840 --
197841 -- PRIVATE FUNCTION
197842 --         AcctLineType_362
197843 --
197844 ---------------------------------------
197845 PROCEDURE AcctLineType_362 (
197846   p_application_id        IN NUMBER
197847  ,p_event_id              IN NUMBER
197848  ,p_calculate_acctd_flag  IN VARCHAR2
197849  ,p_calculate_g_l_flag    IN VARCHAR2
197850  ,p_actual_flag           IN OUT VARCHAR2
197851  ,p_balance_type_code     OUT VARCHAR2
197852  ,p_gain_or_loss_ref      OUT VARCHAR2
197853  
197854 --TRANSACTION_ID
197855  , p_source_1            IN NUMBER
197856 --Item Concatenated Segments
197857  , p_source_2            IN VARCHAR2
197858 --Transaction Quantity
197859  , p_source_3            IN NUMBER
197860 --Transaction Unit of Measure Code
197861  , p_source_4            IN VARCHAR2
197862 --Inventory Transaction Type Description
197863  , p_source_5            IN VARCHAR2
197864 --Cost Management Default Account
197865  , p_source_11            IN NUMBER
197866 --DISTRIBUTION_IDENTIFIER
197867  , p_source_84            IN NUMBER
197868 --Distribution Type
197869  , p_source_85            IN VARCHAR2
197870  , p_source_85_meaning    IN VARCHAR2
197871 --Entered Currency Code
197872  , p_source_88            IN VARCHAR2
197873 --Entered Amount
197874  , p_source_91            IN NUMBER
197875 --Currency Conversion Date
197876  , p_source_92            IN DATE
197877 --Currency Conversion Rate
197878  , p_source_93            IN NUMBER
197879 --Currency Conversion Type
197880  , p_source_94            IN VARCHAR2
197881 --Accounted Amount
197882  , p_source_95            IN NUMBER
197883 --Accounting Line Type
197884  , p_source_97            IN NUMBER
197885 )
197886 IS
197887 
197888 l_component_type              VARCHAR2(80);
197889 l_component_code              VARCHAR2(30);
197890 l_component_type_code         VARCHAR2(1);
197891 l_component_appl_id           INTEGER;
197892 l_amb_context_code            VARCHAR2(30);
197893 l_entity_code                 VARCHAR2(30);
197894 l_event_class_code            VARCHAR2(30);
197895 l_ae_header_id                NUMBER;
197896 l_event_type_code             VARCHAR2(30);
197897 l_line_definition_code        VARCHAR2(30);
197898 l_line_definition_owner_code  VARCHAR2(1);
197899 --
197900 -- adr variables
197901 l_segment                     VARCHAR2(30);
197902 l_ccid                        NUMBER;
197903 l_adr_transaction_coa_id      NUMBER;
197904 l_adr_accounting_coa_id       NUMBER;
197905 l_adr_flexfield_segment_code  VARCHAR2(30);
197906 l_adr_flex_value_set_id       NUMBER;
197907 l_adr_value_type_code         VARCHAR2(30);
197908 l_adr_value_combination_id    NUMBER;
197909 l_adr_value_segment_code      VARCHAR2(30);
197910 
197911 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
197912 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
197913 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
197914 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
197915 
197916 -- 4262811 Variables ------------------------------------------------------------------------------------------
197917 l_entered_amt_idx             NUMBER;
197918 l_accted_amt_idx              NUMBER;
197919 l_acc_rev_flag                VARCHAR2(1);
197920 l_accrual_line_num            NUMBER;
197921 l_tmp_amt                     NUMBER;
197922 l_acc_rev_natural_side_code   VARCHAR2(1);
197923 
197924 l_num_entries                 NUMBER;
197925 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
197926 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
197927 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
197928 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
197929 l_recog_line_1                NUMBER;
197930 l_recog_line_2                NUMBER;
197931 
197932 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
197933 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
197934 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
197935 
197936 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
197937 
197938 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
197939 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
197940 
197941 ---------------------------------------------------------------------------------------------------------------
197942 
197943 
197944 --
197945 -- bulk performance
197946 --
197947 l_balance_type_code           VARCHAR2(1);
197948 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
197949 l_log_module                  VARCHAR2(240);
197950 
197951 --
197952 -- Upgrade strategy
197953 --
197954 l_actual_upg_option           VARCHAR2(1);
197955 l_enc_upg_option           VARCHAR2(1);
197956 
197957 --
197958 BEGIN
197959 --
197960 IF g_log_enabled THEN
197961       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_362';
197962 END IF;
197963 --
197964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197965 
197966       trace
197967          (p_msg      => 'BEGIN of AcctLineType_362'
197968          ,p_level    => C_LEVEL_PROCEDURE
197969          ,p_module   => l_log_module);
197970 
197971 END IF;
197972 --
197973 l_component_type             := 'AMB_JLT';
197974 l_component_code             := 'OFFSET';
197975 l_component_type_code        := 'S';
197976 l_component_appl_id          :=  707;
197977 l_amb_context_code           := 'DEFAULT';
197978 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
197979 l_event_class_code           := 'INT_ORDER_TO_EXP';
197980 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
197981 l_line_definition_owner_code := 'S';
197982 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_NO_TP';
197983 --
197984 l_balance_type_code          := 'A';
197985 l_segment                     := NULL;
197986 l_ccid                        := NULL;
197987 l_adr_transaction_coa_id      := NULL;
197988 l_adr_accounting_coa_id       := NULL;
197989 l_adr_flexfield_segment_code  := NULL;
197990 l_adr_flex_value_set_id       := NULL;
197991 l_adr_value_type_code         := NULL;
197992 l_adr_value_combination_id    := NULL;
197993 l_adr_value_segment_code      := NULL;
197994 
197995 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
197996 l_bflow_class_code           := '';    -- 4219869 Business Flow
197997 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
197998 l_budgetary_control_flag     := 'N';
197999 
198000 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
198001 l_bflow_applied_to_amt       := NULL; -- 5132302
198002 l_entered_amt_idx            := NULL;          -- 4262811
198003 l_accted_amt_idx             := NULL;          -- 4262811
198004 l_acc_rev_flag               := NULL;          -- 4262811
198005 l_accrual_line_num           := NULL;          -- 4262811
198006 l_tmp_amt                    := NULL;          -- 4262811
198007 --
198008  
198009 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
198010     l_balance_type_code <> 'B' THEN
198011 IF NVL(p_source_97,9E125) =  2
198012  THEN 
198013 
198014    --
198015    XLA_AE_LINES_PKG.SetNewLine;
198016 
198017    p_balance_type_code          := l_balance_type_code;
198018    -- set the flag so later we will know whether the gain loss line needs to be created
198019    
198020    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
198021      p_actual_flag :='A';
198022    END IF;
198023 
198024    --
198025    -- bulk performance
198026    --
198027    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
198028                                       p_header_num   => 0); -- 4262811
198029    --
198030    -- set accounting line options
198031    --
198032    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
198033            p_natural_side_code          => 'D'
198034          , p_gain_or_loss_flag          => 'N'
198035          , p_gl_transfer_mode_code      => 'S'
198036          , p_acct_entry_type_code       => 'A'
198037          , p_switch_side_flag           => 'Y'
198038          , p_merge_duplicate_code       => 'N'
198039          );
198040    --
198041    l_acc_rev_natural_side_code := 'C';  -- 4262811
198042    -- 
198043    --
198044    -- set accounting line type info
198045    --
198046    xla_ae_lines_pkg.SetAcctLineType
198047       (p_component_type             => l_component_type
198048       ,p_event_type_code            => l_event_type_code
198049       ,p_line_definition_owner_code => l_line_definition_owner_code
198050       ,p_line_definition_code       => l_line_definition_code
198051       ,p_accounting_line_code       => l_component_code
198052       ,p_accounting_line_type_code  => l_component_type_code
198053       ,p_accounting_line_appl_id    => l_component_appl_id
198054       ,p_amb_context_code           => l_amb_context_code
198055       ,p_entity_code                => l_entity_code
198056       ,p_event_class_code           => l_event_class_code);
198057    --
198058    -- set accounting class
198059    --
198060    xla_ae_lines_pkg.SetAcctClass(
198061            p_accounting_class_code  => 'OFFSET'
198062          , p_ae_header_id           => l_ae_header_id
198063          );
198064 
198065    --
198066    -- set rounding class
198067    --
198068    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
198069                       'OFFSET';
198070 
198071    --
198072    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
198073    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
198074    --
198075    -- bulk performance
198076    --
198077    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
198078 
198079    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
198080       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
198081 
198082    -- 4955764
198083    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
198084       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
198085 
198086    -- 4458381 Public Sector Enh
198087    
198088    --
198089    -- set accounting attributes for the line type
198090    --
198091    l_entered_amt_idx := 3;
198092    l_accted_amt_idx  := 8;
198093    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
198094    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
198095    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
198096    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
198097    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
198098    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
198099    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
198100    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
198101    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
198102    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
198103    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
198104    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
198105    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
198106    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
198107    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
198108    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
198109    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
198110 
198111    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
198112    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
198113 
198114    ---------------------------------------------------------------------------------------------------------------
198115    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
198116    ---------------------------------------------------------------------------------------------------------------
198117    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
198118 
198119    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
198120    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
198121 
198122    IF xla_accounting_cache_pkg.GetValueChar
198123          (p_source_code         => 'LEDGER_CATEGORY_CODE'
198124          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
198125    AND l_bflow_method_code = 'PRIOR_ENTRY'
198126 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
198127    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
198128          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
198129        )
198130    THEN
198131          xla_ae_lines_pkg.BflowUpgEntry
198132            (p_business_method_code    => l_bflow_method_code
198133            ,p_business_class_code     => l_bflow_class_code
198134            ,p_balance_type            => l_balance_type_code);
198135    ELSE
198136       NULL;
198137 -- No business flow processing for business flow method of NONE.
198138    END IF;
198139 
198140    --
198141    -- call analytical criteria
198142    --
198143    
198144    --
198145    -- call description
198146    --
198147    
198148 xla_ae_lines_pkg.SetLineDescription(
198149    p_ae_header_id => l_ae_header_id
198150   ,p_description  => Description_1 (
198151      p_application_id         => p_application_id
198152    , p_ae_header_id           => l_ae_header_id 
198153 , p_source_1 => p_source_1
198154 , p_source_2 => p_source_2
198155 , p_source_3 => p_source_3
198156 , p_source_4 => p_source_4
198157 , p_source_5 => p_source_5
198158    )
198159 );
198160 
198161 
198162    --
198163    -- call ADRs
198164    -- Bug 4922099
198165    --
198166    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
198167         (NVL(l_actual_upg_option, 'N') = 'O') OR
198168         (NVL(l_enc_upg_option, 'N') = 'O')
198169       )
198170    THEN
198171    NULL;
198172    --
198173    --
198174    
198175   l_ccid := AcctDerRule_6(
198176            p_application_id           => p_application_id
198177          , p_ae_header_id             => l_ae_header_id 
198178 , p_source_11 => p_source_11
198179          , x_transaction_coa_id       => l_adr_transaction_coa_id
198180          , x_accounting_coa_id        => l_adr_accounting_coa_id
198181          , x_value_type_code          => l_adr_value_type_code
198182          , p_side                     => 'NA'
198183    );
198184 
198185    xla_ae_lines_pkg.set_ccid(
198186     p_code_combination_id          => l_ccid
198187   , p_value_type_code              => l_adr_value_type_code
198188   , p_transaction_coa_id           => l_adr_transaction_coa_id
198189   , p_accounting_coa_id            => l_adr_accounting_coa_id
198190   , p_adr_code                     => 'CST_DEFAULT'
198191   , p_adr_type_code                => 'S'
198192   , p_component_type               => l_component_type
198193   , p_component_code               => l_component_code
198194   , p_component_type_code          => l_component_type_code
198195   , p_component_appl_id            => l_component_appl_id
198196   , p_amb_context_code             => l_amb_context_code
198197   , p_side                         => 'NA'
198198   );
198199 
198200 
198201    --
198202    --
198203    END IF;
198204    --
198205    -- Bug 4922099
198206    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
198207           (NVL(l_enc_upg_option, 'N') = 'O')
198208         ) AND
198209         (l_bflow_method_code = 'PRIOR_ENTRY')
198210       )
198211    THEN
198212       IF
198213       --
198214       1 = 2
198215       --
198216       THEN
198217       xla_accounting_err_pkg.build_message
198218                                     (p_appli_s_name            => 'XLA'
198219                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
198220                                     ,p_token_1                 => 'LINE_NUMBER'
198221                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
198222                                     ,p_token_2                 => 'LINE_TYPE_NAME'
198223                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
198224                                                                              l_component_type
198225                                                                             ,l_component_code
198226                                                                             ,l_component_type_code
198227                                                                             ,l_component_appl_id
198228                                                                             ,l_amb_context_code
198229                                                                             ,l_entity_code
198230                                                                             ,l_event_class_code
198231                                                                            )
198232                                     ,p_token_3                 => 'OWNER'
198233                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
198234                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
198235                                                                           ,p_lookup_code    => l_component_type_code
198236                                                                          )
198237                                     ,p_token_4                 => 'PRODUCT_NAME'
198238                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
198239                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
198240                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
198241                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
198242                                     ,p_ae_header_id            =>  NULL
198243                                        );
198244 
198245         IF (C_LEVEL_ERROR>= g_log_level) THEN
198246                  trace
198247                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
198248                       ,p_level    => C_LEVEL_ERROR
198249                       ,p_module   => l_log_module);
198250         END IF;
198251       END IF;
198252    END IF;
198253    --
198254    --
198255    ------------------------------------------------------------------------------------------------
198256    -- 4219869 Business Flow
198257    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
198258    -- Prior Entry.  Currently, the following code is always generated.
198259    ------------------------------------------------------------------------------------------------
198260    XLA_AE_LINES_PKG.ValidateCurrentLine;
198261 
198262    ------------------------------------------------------------------------------------
198263    -- 4219869 Business Flow
198264    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
198265    ------------------------------------------------------------------------------------
198266    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
198267 
198268    ----------------------------------------------------------------------------------
198269    -- 4219869 Business Flow
198270    -- Update journal entry status -- Need to generate this within IF <condition>
198271    ----------------------------------------------------------------------------------
198272    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
198273          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
198274          ,p_balance_type_code => l_balance_type_code
198275          );
198276 
198277    -------------------------------------------------------------------------------------------
198278    -- 4262811 - Generate the Accrual Reversal lines
198279    -------------------------------------------------------------------------------------------
198280    BEGIN
198281       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
198282                               (g_array_event(p_event_id).array_value_num('header_index'));
198283       IF l_acc_rev_flag IS NULL THEN
198284          l_acc_rev_flag := 'N';
198285       END IF;
198286    EXCEPTION
198287       WHEN OTHERS THEN
198288          l_acc_rev_flag := 'N';
198289    END;
198290    --
198291    IF (l_acc_rev_flag = 'Y') THEN
198292 
198293        -- 4645092  ------------------------------------------------------------------------------
198294        -- To allow MPA report to determine if it should generate report process
198295        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
198296        ------------------------------------------------------------------------------------------
198297 
198298        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
198299        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
198300    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
198301    -- call ADRs
198302    -- Bug 4922099
198303    --
198304    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
198305         (NVL(l_actual_upg_option, 'N') = 'O') OR
198306         (NVL(l_enc_upg_option, 'N') = 'O')
198307       )
198308    THEN
198309    NULL;
198310    --
198311    --
198312    
198313   l_ccid := AcctDerRule_6(
198314            p_application_id           => p_application_id
198315          , p_ae_header_id             => l_ae_header_id 
198316 , p_source_11 => p_source_11
198317          , x_transaction_coa_id       => l_adr_transaction_coa_id
198318          , x_accounting_coa_id        => l_adr_accounting_coa_id
198319          , x_value_type_code          => l_adr_value_type_code
198320          , p_side                     => 'NA'
198321    );
198322 
198323    xla_ae_lines_pkg.set_ccid(
198324     p_code_combination_id          => l_ccid
198325   , p_value_type_code              => l_adr_value_type_code
198326   , p_transaction_coa_id           => l_adr_transaction_coa_id
198327   , p_accounting_coa_id            => l_adr_accounting_coa_id
198328   , p_adr_code                     => 'CST_DEFAULT'
198329   , p_adr_type_code                => 'S'
198330   , p_component_type               => l_component_type
198331   , p_component_code               => l_component_code
198332   , p_component_type_code          => l_component_type_code
198333   , p_component_appl_id            => l_component_appl_id
198334   , p_amb_context_code             => l_amb_context_code
198335   , p_side                         => 'NA'
198336   );
198337 
198338 
198339    --
198340    --
198341    END IF;
198342 
198343        --
198344        -- Update the line information that should be overwritten
198345        --
198346        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
198347                                          p_header_num   => 1);
198348        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
198349 
198350        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
198351 
198352        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
198353           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
198354        END IF;
198355 
198356       --
198357       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
198358       --
198359       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
198360           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
198361       ELSE
198362           ---------------------------------------------------------------------------------------------------
198363           -- 4262811a Switch Sign
198364           ---------------------------------------------------------------------------------------------------
198365           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
198366           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
198367                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
198368           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
198369                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
198370           -- 5132302
198371           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
198372                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
198373 
198374       END IF;
198375 
198376       -- 4955764
198377       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
198378       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
198379 
198380 
198381       XLA_AE_LINES_PKG.ValidateCurrentLine;
198382       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
198383 
198384       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
198385                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
198386                ,p_balance_type_code => l_balance_type_code);
198387 
198388    END IF;
198389 
198390    -----------------------------------------------------------------------------------------
198391    -- 4262811 Multiperiod Accounting
198392    -----------------------------------------------------------------------------------------
198393      -- No MPA option is assigned.
198394 
198395 
198396 END IF;
198397 END IF;
198398 --
198399 
198400 --
198401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198402    trace
198403       (p_msg      => 'END of AcctLineType_362'
198404       ,p_level    => C_LEVEL_PROCEDURE
198405       ,p_module   => l_log_module);
198406 END IF;
198407 --
198408 EXCEPTION
198409   WHEN xla_exceptions_pkg.application_exception THEN
198410       RAISE;
198411   WHEN OTHERS THEN
198412        xla_exceptions_pkg.raise_message
198413            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_362');
198414 END AcctLineType_362;
198415 --
198416 
198417 ---------------------------------------
198418 --
198419 -- PRIVATE FUNCTION
198420 --         AcctLineType_363
198421 --
198422 ---------------------------------------
198423 PROCEDURE AcctLineType_363 (
198424   p_application_id        IN NUMBER
198425  ,p_event_id              IN NUMBER
198426  ,p_calculate_acctd_flag  IN VARCHAR2
198427  ,p_calculate_g_l_flag    IN VARCHAR2
198428  ,p_actual_flag           IN OUT VARCHAR2
198429  ,p_balance_type_code     OUT VARCHAR2
198430  ,p_gain_or_loss_ref      OUT VARCHAR2
198431  
198432 --TRANSACTION_ID
198433  , p_source_1            IN NUMBER
198434 --Item Concatenated Segments
198435  , p_source_2            IN VARCHAR2
198436 --Transaction Quantity
198437  , p_source_3            IN NUMBER
198438 --Transaction Unit of Measure Code
198439  , p_source_4            IN VARCHAR2
198440 --Inventory Transaction Type Description
198441  , p_source_5            IN VARCHAR2
198442 --Cost Management Default Account
198443  , p_source_11            IN NUMBER
198444 --DISTRIBUTION_IDENTIFIER
198445  , p_source_84            IN NUMBER
198446 --Distribution Type
198447  , p_source_85            IN VARCHAR2
198448  , p_source_85_meaning    IN VARCHAR2
198449 --Entered Currency Code
198450  , p_source_88            IN VARCHAR2
198451 --Entered Amount
198452  , p_source_91            IN NUMBER
198453 --Currency Conversion Date
198454  , p_source_92            IN DATE
198455 --Currency Conversion Rate
198456  , p_source_93            IN NUMBER
198457 --Currency Conversion Type
198458  , p_source_94            IN VARCHAR2
198459 --Accounted Amount
198460  , p_source_95            IN NUMBER
198461 --Accounting Line Type
198462  , p_source_97            IN NUMBER
198463 )
198464 IS
198465 
198466 l_component_type              VARCHAR2(80);
198467 l_component_code              VARCHAR2(30);
198468 l_component_type_code         VARCHAR2(1);
198469 l_component_appl_id           INTEGER;
198470 l_amb_context_code            VARCHAR2(30);
198471 l_entity_code                 VARCHAR2(30);
198472 l_event_class_code            VARCHAR2(30);
198473 l_ae_header_id                NUMBER;
198474 l_event_type_code             VARCHAR2(30);
198475 l_line_definition_code        VARCHAR2(30);
198476 l_line_definition_owner_code  VARCHAR2(1);
198477 --
198478 -- adr variables
198479 l_segment                     VARCHAR2(30);
198480 l_ccid                        NUMBER;
198481 l_adr_transaction_coa_id      NUMBER;
198482 l_adr_accounting_coa_id       NUMBER;
198483 l_adr_flexfield_segment_code  VARCHAR2(30);
198484 l_adr_flex_value_set_id       NUMBER;
198485 l_adr_value_type_code         VARCHAR2(30);
198486 l_adr_value_combination_id    NUMBER;
198487 l_adr_value_segment_code      VARCHAR2(30);
198488 
198489 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
198490 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
198491 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
198492 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
198493 
198494 -- 4262811 Variables ------------------------------------------------------------------------------------------
198495 l_entered_amt_idx             NUMBER;
198496 l_accted_amt_idx              NUMBER;
198497 l_acc_rev_flag                VARCHAR2(1);
198498 l_accrual_line_num            NUMBER;
198499 l_tmp_amt                     NUMBER;
198500 l_acc_rev_natural_side_code   VARCHAR2(1);
198501 
198502 l_num_entries                 NUMBER;
198503 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
198504 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
198505 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
198506 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
198507 l_recog_line_1                NUMBER;
198508 l_recog_line_2                NUMBER;
198509 
198510 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
198511 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
198512 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
198513 
198514 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
198515 
198516 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
198517 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
198518 
198519 ---------------------------------------------------------------------------------------------------------------
198520 
198521 
198522 --
198523 -- bulk performance
198524 --
198525 l_balance_type_code           VARCHAR2(1);
198526 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
198527 l_log_module                  VARCHAR2(240);
198528 
198529 --
198530 -- Upgrade strategy
198531 --
198532 l_actual_upg_option           VARCHAR2(1);
198533 l_enc_upg_option           VARCHAR2(1);
198534 
198535 --
198536 BEGIN
198537 --
198538 IF g_log_enabled THEN
198539       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_363';
198540 END IF;
198541 --
198542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198543 
198544       trace
198545          (p_msg      => 'BEGIN of AcctLineType_363'
198546          ,p_level    => C_LEVEL_PROCEDURE
198547          ,p_module   => l_log_module);
198548 
198549 END IF;
198550 --
198551 l_component_type             := 'AMB_JLT';
198552 l_component_code             := 'OFFSET';
198553 l_component_type_code        := 'S';
198554 l_component_appl_id          :=  707;
198555 l_amb_context_code           := 'DEFAULT';
198556 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
198557 l_event_class_code           := 'INT_ORDER_TO_EXP';
198558 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
198559 l_line_definition_owner_code := 'S';
198560 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_TP';
198561 --
198562 l_balance_type_code          := 'A';
198563 l_segment                     := NULL;
198564 l_ccid                        := NULL;
198565 l_adr_transaction_coa_id      := NULL;
198566 l_adr_accounting_coa_id       := NULL;
198567 l_adr_flexfield_segment_code  := NULL;
198568 l_adr_flex_value_set_id       := NULL;
198569 l_adr_value_type_code         := NULL;
198570 l_adr_value_combination_id    := NULL;
198571 l_adr_value_segment_code      := NULL;
198572 
198573 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
198574 l_bflow_class_code           := '';    -- 4219869 Business Flow
198575 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
198576 l_budgetary_control_flag     := 'N';
198577 
198578 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
198579 l_bflow_applied_to_amt       := NULL; -- 5132302
198580 l_entered_amt_idx            := NULL;          -- 4262811
198581 l_accted_amt_idx             := NULL;          -- 4262811
198582 l_acc_rev_flag               := NULL;          -- 4262811
198583 l_accrual_line_num           := NULL;          -- 4262811
198584 l_tmp_amt                    := NULL;          -- 4262811
198585 --
198586  
198587 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
198588     l_balance_type_code <> 'B' THEN
198589 IF NVL(p_source_97,9E125) =  2
198590  THEN 
198591 
198592    --
198593    XLA_AE_LINES_PKG.SetNewLine;
198594 
198595    p_balance_type_code          := l_balance_type_code;
198596    -- set the flag so later we will know whether the gain loss line needs to be created
198597    
198598    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
198599      p_actual_flag :='A';
198600    END IF;
198601 
198602    --
198603    -- bulk performance
198604    --
198605    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
198606                                       p_header_num   => 0); -- 4262811
198607    --
198608    -- set accounting line options
198609    --
198610    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
198611            p_natural_side_code          => 'D'
198612          , p_gain_or_loss_flag          => 'N'
198613          , p_gl_transfer_mode_code      => 'S'
198614          , p_acct_entry_type_code       => 'A'
198615          , p_switch_side_flag           => 'Y'
198616          , p_merge_duplicate_code       => 'N'
198617          );
198618    --
198619    l_acc_rev_natural_side_code := 'C';  -- 4262811
198620    -- 
198621    --
198622    -- set accounting line type info
198623    --
198624    xla_ae_lines_pkg.SetAcctLineType
198625       (p_component_type             => l_component_type
198626       ,p_event_type_code            => l_event_type_code
198627       ,p_line_definition_owner_code => l_line_definition_owner_code
198628       ,p_line_definition_code       => l_line_definition_code
198629       ,p_accounting_line_code       => l_component_code
198630       ,p_accounting_line_type_code  => l_component_type_code
198631       ,p_accounting_line_appl_id    => l_component_appl_id
198632       ,p_amb_context_code           => l_amb_context_code
198633       ,p_entity_code                => l_entity_code
198634       ,p_event_class_code           => l_event_class_code);
198635    --
198636    -- set accounting class
198637    --
198638    xla_ae_lines_pkg.SetAcctClass(
198639            p_accounting_class_code  => 'OFFSET'
198640          , p_ae_header_id           => l_ae_header_id
198641          );
198642 
198643    --
198644    -- set rounding class
198645    --
198646    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
198647                       'OFFSET';
198648 
198649    --
198650    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
198651    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
198652    --
198653    -- bulk performance
198654    --
198655    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
198656 
198657    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
198658       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
198659 
198660    -- 4955764
198661    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
198662       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
198663 
198664    -- 4458381 Public Sector Enh
198665    
198666    --
198667    -- set accounting attributes for the line type
198668    --
198669    l_entered_amt_idx := 3;
198670    l_accted_amt_idx  := 8;
198671    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
198672    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
198673    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
198674    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
198675    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
198676    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
198677    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
198678    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
198679    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
198680    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
198681    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
198682    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
198683    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
198684    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
198685    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
198686    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
198687    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
198688 
198689    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
198690    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
198691 
198692    ---------------------------------------------------------------------------------------------------------------
198693    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
198694    ---------------------------------------------------------------------------------------------------------------
198695    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
198696 
198697    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
198698    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
198699 
198700    IF xla_accounting_cache_pkg.GetValueChar
198701          (p_source_code         => 'LEDGER_CATEGORY_CODE'
198702          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
198703    AND l_bflow_method_code = 'PRIOR_ENTRY'
198704 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
198705    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
198706          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
198707        )
198708    THEN
198709          xla_ae_lines_pkg.BflowUpgEntry
198710            (p_business_method_code    => l_bflow_method_code
198711            ,p_business_class_code     => l_bflow_class_code
198712            ,p_balance_type            => l_balance_type_code);
198713    ELSE
198714       NULL;
198715 -- No business flow processing for business flow method of NONE.
198716    END IF;
198717 
198718    --
198719    -- call analytical criteria
198720    --
198721    
198722    --
198723    -- call description
198724    --
198725    
198726 xla_ae_lines_pkg.SetLineDescription(
198727    p_ae_header_id => l_ae_header_id
198728   ,p_description  => Description_1 (
198729      p_application_id         => p_application_id
198730    , p_ae_header_id           => l_ae_header_id 
198731 , p_source_1 => p_source_1
198732 , p_source_2 => p_source_2
198733 , p_source_3 => p_source_3
198734 , p_source_4 => p_source_4
198735 , p_source_5 => p_source_5
198736    )
198737 );
198738 
198739 
198740    --
198741    -- call ADRs
198742    -- Bug 4922099
198743    --
198744    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
198745         (NVL(l_actual_upg_option, 'N') = 'O') OR
198746         (NVL(l_enc_upg_option, 'N') = 'O')
198747       )
198748    THEN
198749    NULL;
198750    --
198751    --
198752    
198753   l_ccid := AcctDerRule_6(
198754            p_application_id           => p_application_id
198755          , p_ae_header_id             => l_ae_header_id 
198756 , p_source_11 => p_source_11
198757          , x_transaction_coa_id       => l_adr_transaction_coa_id
198758          , x_accounting_coa_id        => l_adr_accounting_coa_id
198759          , x_value_type_code          => l_adr_value_type_code
198760          , p_side                     => 'NA'
198761    );
198762 
198763    xla_ae_lines_pkg.set_ccid(
198764     p_code_combination_id          => l_ccid
198765   , p_value_type_code              => l_adr_value_type_code
198766   , p_transaction_coa_id           => l_adr_transaction_coa_id
198767   , p_accounting_coa_id            => l_adr_accounting_coa_id
198768   , p_adr_code                     => 'CST_DEFAULT'
198769   , p_adr_type_code                => 'S'
198770   , p_component_type               => l_component_type
198771   , p_component_code               => l_component_code
198772   , p_component_type_code          => l_component_type_code
198773   , p_component_appl_id            => l_component_appl_id
198774   , p_amb_context_code             => l_amb_context_code
198775   , p_side                         => 'NA'
198776   );
198777 
198778 
198779    --
198780    --
198781    END IF;
198782    --
198783    -- Bug 4922099
198784    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
198785           (NVL(l_enc_upg_option, 'N') = 'O')
198786         ) AND
198787         (l_bflow_method_code = 'PRIOR_ENTRY')
198788       )
198789    THEN
198790       IF
198791       --
198792       1 = 2
198793       --
198794       THEN
198795       xla_accounting_err_pkg.build_message
198796                                     (p_appli_s_name            => 'XLA'
198797                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
198798                                     ,p_token_1                 => 'LINE_NUMBER'
198799                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
198800                                     ,p_token_2                 => 'LINE_TYPE_NAME'
198801                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
198802                                                                              l_component_type
198803                                                                             ,l_component_code
198804                                                                             ,l_component_type_code
198805                                                                             ,l_component_appl_id
198806                                                                             ,l_amb_context_code
198807                                                                             ,l_entity_code
198808                                                                             ,l_event_class_code
198809                                                                            )
198810                                     ,p_token_3                 => 'OWNER'
198811                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
198812                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
198813                                                                           ,p_lookup_code    => l_component_type_code
198814                                                                          )
198815                                     ,p_token_4                 => 'PRODUCT_NAME'
198816                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
198817                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
198818                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
198819                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
198820                                     ,p_ae_header_id            =>  NULL
198821                                        );
198822 
198823         IF (C_LEVEL_ERROR>= g_log_level) THEN
198824                  trace
198825                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
198826                       ,p_level    => C_LEVEL_ERROR
198827                       ,p_module   => l_log_module);
198828         END IF;
198829       END IF;
198830    END IF;
198831    --
198832    --
198833    ------------------------------------------------------------------------------------------------
198834    -- 4219869 Business Flow
198835    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
198836    -- Prior Entry.  Currently, the following code is always generated.
198837    ------------------------------------------------------------------------------------------------
198838    XLA_AE_LINES_PKG.ValidateCurrentLine;
198839 
198840    ------------------------------------------------------------------------------------
198841    -- 4219869 Business Flow
198842    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
198843    ------------------------------------------------------------------------------------
198844    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
198845 
198846    ----------------------------------------------------------------------------------
198847    -- 4219869 Business Flow
198848    -- Update journal entry status -- Need to generate this within IF <condition>
198849    ----------------------------------------------------------------------------------
198850    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
198851          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
198852          ,p_balance_type_code => l_balance_type_code
198853          );
198854 
198855    -------------------------------------------------------------------------------------------
198856    -- 4262811 - Generate the Accrual Reversal lines
198857    -------------------------------------------------------------------------------------------
198858    BEGIN
198859       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
198860                               (g_array_event(p_event_id).array_value_num('header_index'));
198861       IF l_acc_rev_flag IS NULL THEN
198862          l_acc_rev_flag := 'N';
198863       END IF;
198864    EXCEPTION
198865       WHEN OTHERS THEN
198866          l_acc_rev_flag := 'N';
198867    END;
198868    --
198869    IF (l_acc_rev_flag = 'Y') THEN
198870 
198871        -- 4645092  ------------------------------------------------------------------------------
198872        -- To allow MPA report to determine if it should generate report process
198873        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
198874        ------------------------------------------------------------------------------------------
198875 
198876        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
198877        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
198878    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
198879    -- call ADRs
198880    -- Bug 4922099
198881    --
198882    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
198883         (NVL(l_actual_upg_option, 'N') = 'O') OR
198884         (NVL(l_enc_upg_option, 'N') = 'O')
198885       )
198886    THEN
198887    NULL;
198888    --
198889    --
198890    
198891   l_ccid := AcctDerRule_6(
198892            p_application_id           => p_application_id
198893          , p_ae_header_id             => l_ae_header_id 
198894 , p_source_11 => p_source_11
198895          , x_transaction_coa_id       => l_adr_transaction_coa_id
198896          , x_accounting_coa_id        => l_adr_accounting_coa_id
198897          , x_value_type_code          => l_adr_value_type_code
198898          , p_side                     => 'NA'
198899    );
198900 
198901    xla_ae_lines_pkg.set_ccid(
198902     p_code_combination_id          => l_ccid
198903   , p_value_type_code              => l_adr_value_type_code
198904   , p_transaction_coa_id           => l_adr_transaction_coa_id
198905   , p_accounting_coa_id            => l_adr_accounting_coa_id
198906   , p_adr_code                     => 'CST_DEFAULT'
198907   , p_adr_type_code                => 'S'
198908   , p_component_type               => l_component_type
198909   , p_component_code               => l_component_code
198910   , p_component_type_code          => l_component_type_code
198911   , p_component_appl_id            => l_component_appl_id
198912   , p_amb_context_code             => l_amb_context_code
198913   , p_side                         => 'NA'
198914   );
198915 
198916 
198917    --
198918    --
198919    END IF;
198920 
198921        --
198922        -- Update the line information that should be overwritten
198923        --
198924        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
198925                                          p_header_num   => 1);
198926        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
198927 
198928        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
198929 
198930        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
198931           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
198932        END IF;
198933 
198934       --
198935       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
198936       --
198937       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
198938           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
198939       ELSE
198940           ---------------------------------------------------------------------------------------------------
198941           -- 4262811a Switch Sign
198942           ---------------------------------------------------------------------------------------------------
198943           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
198944           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
198945                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
198946           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
198947                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
198948           -- 5132302
198949           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
198950                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
198951 
198952       END IF;
198953 
198954       -- 4955764
198955       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
198956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
198957 
198958 
198959       XLA_AE_LINES_PKG.ValidateCurrentLine;
198960       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
198961 
198962       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
198963                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
198964                ,p_balance_type_code => l_balance_type_code);
198965 
198966    END IF;
198967 
198968    -----------------------------------------------------------------------------------------
198969    -- 4262811 Multiperiod Accounting
198970    -----------------------------------------------------------------------------------------
198971      -- No MPA option is assigned.
198972 
198973 
198974 END IF;
198975 END IF;
198976 --
198977 
198978 --
198979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198980    trace
198981       (p_msg      => 'END of AcctLineType_363'
198982       ,p_level    => C_LEVEL_PROCEDURE
198983       ,p_module   => l_log_module);
198984 END IF;
198985 --
198986 EXCEPTION
198987   WHEN xla_exceptions_pkg.application_exception THEN
198988       RAISE;
198989   WHEN OTHERS THEN
198990        xla_exceptions_pkg.raise_message
198991            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_363');
198992 END AcctLineType_363;
198993 --
198994 
198995 ---------------------------------------
198996 --
198997 -- PRIVATE FUNCTION
198998 --         AcctLineType_364
198999 --
199000 ---------------------------------------
199001 PROCEDURE AcctLineType_364 (
199002   p_application_id        IN NUMBER
199003  ,p_event_id              IN NUMBER
199004  ,p_calculate_acctd_flag  IN VARCHAR2
199005  ,p_calculate_g_l_flag    IN VARCHAR2
199006  ,p_actual_flag           IN OUT VARCHAR2
199007  ,p_balance_type_code     OUT VARCHAR2
199008  ,p_gain_or_loss_ref      OUT VARCHAR2
199009  
199010 --TRANSACTION_ID
199011  , p_source_1            IN NUMBER
199012 --Item Concatenated Segments
199013  , p_source_2            IN VARCHAR2
199014 --Transaction Quantity
199015  , p_source_3            IN NUMBER
199016 --Transaction Unit of Measure Code
199017  , p_source_4            IN VARCHAR2
199018 --Inventory Transaction Type Description
199019  , p_source_5            IN VARCHAR2
199020 --Transaction Distribution Account
199021  , p_source_20            IN NUMBER
199022 --Transaction Action Name
199023  , p_source_62            IN NUMBER
199024  , p_source_62_meaning    IN VARCHAR2
199025 --DISTRIBUTION_IDENTIFIER
199026  , p_source_84            IN NUMBER
199027 --Distribution Type
199028  , p_source_85            IN VARCHAR2
199029  , p_source_85_meaning    IN VARCHAR2
199030 --Entered Currency Code
199031  , p_source_88            IN VARCHAR2
199032 --Entered Amount
199033  , p_source_91            IN NUMBER
199034 --Currency Conversion Date
199035  , p_source_92            IN DATE
199036 --Currency Conversion Rate
199037  , p_source_93            IN NUMBER
199038 --Currency Conversion Type
199039  , p_source_94            IN VARCHAR2
199040 --Accounted Amount
199041  , p_source_95            IN NUMBER
199042 --Accounting Line Type
199043  , p_source_97            IN NUMBER
199044 )
199045 IS
199046 
199047 l_component_type              VARCHAR2(80);
199048 l_component_code              VARCHAR2(30);
199049 l_component_type_code         VARCHAR2(1);
199050 l_component_appl_id           INTEGER;
199051 l_amb_context_code            VARCHAR2(30);
199052 l_entity_code                 VARCHAR2(30);
199053 l_event_class_code            VARCHAR2(30);
199054 l_ae_header_id                NUMBER;
199055 l_event_type_code             VARCHAR2(30);
199056 l_line_definition_code        VARCHAR2(30);
199057 l_line_definition_owner_code  VARCHAR2(1);
199058 --
199059 -- adr variables
199060 l_segment                     VARCHAR2(30);
199061 l_ccid                        NUMBER;
199062 l_adr_transaction_coa_id      NUMBER;
199063 l_adr_accounting_coa_id       NUMBER;
199064 l_adr_flexfield_segment_code  VARCHAR2(30);
199065 l_adr_flex_value_set_id       NUMBER;
199066 l_adr_value_type_code         VARCHAR2(30);
199067 l_adr_value_combination_id    NUMBER;
199068 l_adr_value_segment_code      VARCHAR2(30);
199069 
199070 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
199071 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
199072 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
199073 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
199074 
199075 -- 4262811 Variables ------------------------------------------------------------------------------------------
199076 l_entered_amt_idx             NUMBER;
199077 l_accted_amt_idx              NUMBER;
199078 l_acc_rev_flag                VARCHAR2(1);
199079 l_accrual_line_num            NUMBER;
199080 l_tmp_amt                     NUMBER;
199081 l_acc_rev_natural_side_code   VARCHAR2(1);
199082 
199083 l_num_entries                 NUMBER;
199084 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
199085 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
199086 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
199087 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
199088 l_recog_line_1                NUMBER;
199089 l_recog_line_2                NUMBER;
199090 
199091 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
199092 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
199093 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
199094 
199095 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
199096 
199097 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
199098 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
199099 
199100 ---------------------------------------------------------------------------------------------------------------
199101 
199102 
199103 --
199104 -- bulk performance
199105 --
199106 l_balance_type_code           VARCHAR2(1);
199107 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
199108 l_log_module                  VARCHAR2(240);
199109 
199110 --
199111 -- Upgrade strategy
199112 --
199113 l_actual_upg_option           VARCHAR2(1);
199114 l_enc_upg_option           VARCHAR2(1);
199115 
199116 --
199117 BEGIN
199118 --
199119 IF g_log_enabled THEN
199120       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_364';
199121 END IF;
199122 --
199123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199124 
199125       trace
199126          (p_msg      => 'BEGIN of AcctLineType_364'
199127          ,p_level    => C_LEVEL_PROCEDURE
199128          ,p_module   => l_log_module);
199129 
199130 END IF;
199131 --
199132 l_component_type             := 'AMB_JLT';
199133 l_component_code             := 'OFFSET';
199134 l_component_type_code        := 'S';
199135 l_component_appl_id          :=  707;
199136 l_amb_context_code           := 'DEFAULT';
199137 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
199138 l_event_class_code           := 'LOG_INTERCOMPANY';
199139 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
199140 l_line_definition_owner_code := 'S';
199141 l_line_definition_code       := 'PI_LOG_IC_SHIPMENT_RCPT';
199142 --
199143 l_balance_type_code          := 'A';
199144 l_segment                     := NULL;
199145 l_ccid                        := NULL;
199146 l_adr_transaction_coa_id      := NULL;
199147 l_adr_accounting_coa_id       := NULL;
199148 l_adr_flexfield_segment_code  := NULL;
199149 l_adr_flex_value_set_id       := NULL;
199150 l_adr_value_type_code         := NULL;
199151 l_adr_value_combination_id    := NULL;
199152 l_adr_value_segment_code      := NULL;
199153 
199154 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
199155 l_bflow_class_code           := '';    -- 4219869 Business Flow
199156 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
199157 l_budgetary_control_flag     := 'N';
199158 
199159 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
199160 l_bflow_applied_to_amt       := NULL; -- 5132302
199161 l_entered_amt_idx            := NULL;          -- 4262811
199162 l_accted_amt_idx             := NULL;          -- 4262811
199163 l_acc_rev_flag               := NULL;          -- 4262811
199164 l_accrual_line_num           := NULL;          -- 4262811
199165 l_tmp_amt                    := NULL;          -- 4262811
199166 --
199167  
199168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
199169     l_balance_type_code <> 'B' THEN
199170 IF NVL(p_source_97,9E125) =  2 AND 
199171 ((p_source_95 <=  0 AND 
199172 NVL(p_source_62,9E125) =  13) OR 
199173 (p_source_95 <=  0 AND 
199174 NVL(p_source_62,9E125) =  9) OR 
199175 (p_source_95 >=  0 AND 
199176 NVL(p_source_62,9E125) =  10) OR 
199177 NVL(p_source_62,9E125) =  10 OR 
199178 NVL(p_source_62,9E125) =  13)
199179  THEN 
199180 
199181    --
199182    XLA_AE_LINES_PKG.SetNewLine;
199183 
199184    p_balance_type_code          := l_balance_type_code;
199185    -- set the flag so later we will know whether the gain loss line needs to be created
199186    
199187    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
199188      p_actual_flag :='A';
199189    END IF;
199190 
199191    --
199192    -- bulk performance
199193    --
199194    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
199195                                       p_header_num   => 0); -- 4262811
199196    --
199197    -- set accounting line options
199198    --
199199    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
199200            p_natural_side_code          => 'D'
199201          , p_gain_or_loss_flag          => 'N'
199202          , p_gl_transfer_mode_code      => 'S'
199203          , p_acct_entry_type_code       => 'A'
199204          , p_switch_side_flag           => 'Y'
199205          , p_merge_duplicate_code       => 'N'
199206          );
199207    --
199208    l_acc_rev_natural_side_code := 'C';  -- 4262811
199209    -- 
199210    --
199211    -- set accounting line type info
199212    --
199213    xla_ae_lines_pkg.SetAcctLineType
199214       (p_component_type             => l_component_type
199215       ,p_event_type_code            => l_event_type_code
199216       ,p_line_definition_owner_code => l_line_definition_owner_code
199217       ,p_line_definition_code       => l_line_definition_code
199218       ,p_accounting_line_code       => l_component_code
199219       ,p_accounting_line_type_code  => l_component_type_code
199220       ,p_accounting_line_appl_id    => l_component_appl_id
199221       ,p_amb_context_code           => l_amb_context_code
199222       ,p_entity_code                => l_entity_code
199223       ,p_event_class_code           => l_event_class_code);
199224    --
199225    -- set accounting class
199226    --
199227    xla_ae_lines_pkg.SetAcctClass(
199228            p_accounting_class_code  => 'OFFSET'
199229          , p_ae_header_id           => l_ae_header_id
199230          );
199231 
199232    --
199233    -- set rounding class
199234    --
199235    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
199236                       'OFFSET';
199237 
199238    --
199239    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
199240    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
199241    --
199242    -- bulk performance
199243    --
199244    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
199245 
199246    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
199247       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
199248 
199249    -- 4955764
199250    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
199251       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
199252 
199253    -- 4458381 Public Sector Enh
199254    
199255    --
199256    -- set accounting attributes for the line type
199257    --
199258    l_entered_amt_idx := 3;
199259    l_accted_amt_idx  := 8;
199260    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
199261    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
199262    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
199263    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
199264    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
199265    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
199266    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
199267    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
199268    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
199269    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
199270    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
199271    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
199272    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
199273    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
199274    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
199275    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
199276    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
199277 
199278    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
199279    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
199280 
199281    ---------------------------------------------------------------------------------------------------------------
199282    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
199283    ---------------------------------------------------------------------------------------------------------------
199284    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
199285 
199286    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
199287    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
199288 
199289    IF xla_accounting_cache_pkg.GetValueChar
199290          (p_source_code         => 'LEDGER_CATEGORY_CODE'
199291          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
199292    AND l_bflow_method_code = 'PRIOR_ENTRY'
199293 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
199294    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
199295          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
199296        )
199297    THEN
199298          xla_ae_lines_pkg.BflowUpgEntry
199299            (p_business_method_code    => l_bflow_method_code
199300            ,p_business_class_code     => l_bflow_class_code
199301            ,p_balance_type            => l_balance_type_code);
199302    ELSE
199303       NULL;
199304 -- No business flow processing for business flow method of NONE.
199305    END IF;
199306 
199307    --
199308    -- call analytical criteria
199309    --
199310    
199311    --
199312    -- call description
199313    --
199314    
199315 xla_ae_lines_pkg.SetLineDescription(
199316    p_ae_header_id => l_ae_header_id
199317   ,p_description  => Description_1 (
199318      p_application_id         => p_application_id
199319    , p_ae_header_id           => l_ae_header_id 
199320 , p_source_1 => p_source_1
199321 , p_source_2 => p_source_2
199322 , p_source_3 => p_source_3
199323 , p_source_4 => p_source_4
199324 , p_source_5 => p_source_5
199325    )
199326 );
199327 
199328 
199329    --
199330    -- call ADRs
199331    -- Bug 4922099
199332    --
199333    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
199334         (NVL(l_actual_upg_option, 'N') = 'O') OR
199335         (NVL(l_enc_upg_option, 'N') = 'O')
199336       )
199337    THEN
199338    NULL;
199339    --
199340    --
199341    
199342   l_ccid := AcctDerRule_16(
199343            p_application_id           => p_application_id
199344          , p_ae_header_id             => l_ae_header_id 
199345 , p_source_20 => p_source_20
199346          , x_transaction_coa_id       => l_adr_transaction_coa_id
199347          , x_accounting_coa_id        => l_adr_accounting_coa_id
199348          , x_value_type_code          => l_adr_value_type_code
199349          , p_side                     => 'NA'
199350    );
199351 
199352    xla_ae_lines_pkg.set_ccid(
199353     p_code_combination_id          => l_ccid
199354   , p_value_type_code              => l_adr_value_type_code
199355   , p_transaction_coa_id           => l_adr_transaction_coa_id
199356   , p_accounting_coa_id            => l_adr_accounting_coa_id
199357   , p_adr_code                     => 'PI_DISTRIBUTION'
199358   , p_adr_type_code                => 'S'
199359   , p_component_type               => l_component_type
199360   , p_component_code               => l_component_code
199361   , p_component_type_code          => l_component_type_code
199362   , p_component_appl_id            => l_component_appl_id
199363   , p_amb_context_code             => l_amb_context_code
199364   , p_side                         => 'NA'
199365   );
199366 
199367 
199368    --
199369    --
199370    END IF;
199371    --
199372    -- Bug 4922099
199373    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
199374           (NVL(l_enc_upg_option, 'N') = 'O')
199375         ) AND
199376         (l_bflow_method_code = 'PRIOR_ENTRY')
199377       )
199378    THEN
199379       IF
199380       --
199381       1 = 2
199382       --
199383       THEN
199384       xla_accounting_err_pkg.build_message
199385                                     (p_appli_s_name            => 'XLA'
199386                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
199387                                     ,p_token_1                 => 'LINE_NUMBER'
199388                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
199389                                     ,p_token_2                 => 'LINE_TYPE_NAME'
199390                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
199391                                                                              l_component_type
199392                                                                             ,l_component_code
199393                                                                             ,l_component_type_code
199394                                                                             ,l_component_appl_id
199395                                                                             ,l_amb_context_code
199396                                                                             ,l_entity_code
199397                                                                             ,l_event_class_code
199398                                                                            )
199399                                     ,p_token_3                 => 'OWNER'
199400                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
199401                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
199402                                                                           ,p_lookup_code    => l_component_type_code
199403                                                                          )
199404                                     ,p_token_4                 => 'PRODUCT_NAME'
199405                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
199406                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
199407                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
199408                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
199409                                     ,p_ae_header_id            =>  NULL
199410                                        );
199411 
199412         IF (C_LEVEL_ERROR>= g_log_level) THEN
199413                  trace
199414                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
199415                       ,p_level    => C_LEVEL_ERROR
199416                       ,p_module   => l_log_module);
199417         END IF;
199418       END IF;
199419    END IF;
199420    --
199421    --
199422    ------------------------------------------------------------------------------------------------
199423    -- 4219869 Business Flow
199424    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
199425    -- Prior Entry.  Currently, the following code is always generated.
199426    ------------------------------------------------------------------------------------------------
199427    XLA_AE_LINES_PKG.ValidateCurrentLine;
199428 
199429    ------------------------------------------------------------------------------------
199430    -- 4219869 Business Flow
199431    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
199432    ------------------------------------------------------------------------------------
199433    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
199434 
199435    ----------------------------------------------------------------------------------
199436    -- 4219869 Business Flow
199437    -- Update journal entry status -- Need to generate this within IF <condition>
199438    ----------------------------------------------------------------------------------
199439    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
199440          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
199441          ,p_balance_type_code => l_balance_type_code
199442          );
199443 
199444    -------------------------------------------------------------------------------------------
199445    -- 4262811 - Generate the Accrual Reversal lines
199446    -------------------------------------------------------------------------------------------
199447    BEGIN
199448       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
199449                               (g_array_event(p_event_id).array_value_num('header_index'));
199450       IF l_acc_rev_flag IS NULL THEN
199451          l_acc_rev_flag := 'N';
199452       END IF;
199453    EXCEPTION
199454       WHEN OTHERS THEN
199455          l_acc_rev_flag := 'N';
199456    END;
199457    --
199458    IF (l_acc_rev_flag = 'Y') THEN
199459 
199460        -- 4645092  ------------------------------------------------------------------------------
199461        -- To allow MPA report to determine if it should generate report process
199462        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
199463        ------------------------------------------------------------------------------------------
199464 
199465        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
199466        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
199467    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
199468    -- call ADRs
199469    -- Bug 4922099
199470    --
199471    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
199472         (NVL(l_actual_upg_option, 'N') = 'O') OR
199473         (NVL(l_enc_upg_option, 'N') = 'O')
199474       )
199475    THEN
199476    NULL;
199477    --
199478    --
199479    
199480   l_ccid := AcctDerRule_16(
199481            p_application_id           => p_application_id
199482          , p_ae_header_id             => l_ae_header_id 
199483 , p_source_20 => p_source_20
199484          , x_transaction_coa_id       => l_adr_transaction_coa_id
199485          , x_accounting_coa_id        => l_adr_accounting_coa_id
199486          , x_value_type_code          => l_adr_value_type_code
199487          , p_side                     => 'NA'
199488    );
199489 
199490    xla_ae_lines_pkg.set_ccid(
199491     p_code_combination_id          => l_ccid
199492   , p_value_type_code              => l_adr_value_type_code
199493   , p_transaction_coa_id           => l_adr_transaction_coa_id
199494   , p_accounting_coa_id            => l_adr_accounting_coa_id
199495   , p_adr_code                     => 'PI_DISTRIBUTION'
199496   , p_adr_type_code                => 'S'
199497   , p_component_type               => l_component_type
199498   , p_component_code               => l_component_code
199499   , p_component_type_code          => l_component_type_code
199500   , p_component_appl_id            => l_component_appl_id
199501   , p_amb_context_code             => l_amb_context_code
199502   , p_side                         => 'NA'
199503   );
199504 
199505 
199506    --
199507    --
199508    END IF;
199509 
199510        --
199511        -- Update the line information that should be overwritten
199512        --
199513        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
199514                                          p_header_num   => 1);
199515        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
199516 
199517        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
199518 
199519        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
199520           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
199521        END IF;
199522 
199523       --
199524       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
199525       --
199526       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
199527           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
199528       ELSE
199529           ---------------------------------------------------------------------------------------------------
199530           -- 4262811a Switch Sign
199531           ---------------------------------------------------------------------------------------------------
199532           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
199533           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
199534                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
199535           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
199536                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
199537           -- 5132302
199538           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
199539                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
199540 
199541       END IF;
199542 
199543       -- 4955764
199544       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
199545       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
199546 
199547 
199548       XLA_AE_LINES_PKG.ValidateCurrentLine;
199549       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
199550 
199551       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
199552                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
199553                ,p_balance_type_code => l_balance_type_code);
199554 
199555    END IF;
199556 
199557    -----------------------------------------------------------------------------------------
199558    -- 4262811 Multiperiod Accounting
199559    -----------------------------------------------------------------------------------------
199560      -- No MPA option is assigned.
199561 
199562 
199563 END IF;
199564 END IF;
199565 --
199566 
199567 --
199568 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199569    trace
199570       (p_msg      => 'END of AcctLineType_364'
199571       ,p_level    => C_LEVEL_PROCEDURE
199572       ,p_module   => l_log_module);
199573 END IF;
199574 --
199575 EXCEPTION
199576   WHEN xla_exceptions_pkg.application_exception THEN
199577       RAISE;
199578   WHEN OTHERS THEN
199579        xla_exceptions_pkg.raise_message
199580            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_364');
199581 END AcctLineType_364;
199582 --
199583 
199584 ---------------------------------------
199585 --
199586 -- PRIVATE FUNCTION
199587 --         AcctLineType_365
199588 --
199589 ---------------------------------------
199590 PROCEDURE AcctLineType_365 (
199591   p_application_id        IN NUMBER
199592  ,p_event_id              IN NUMBER
199593  ,p_calculate_acctd_flag  IN VARCHAR2
199594  ,p_calculate_g_l_flag    IN VARCHAR2
199595  ,p_actual_flag           IN OUT VARCHAR2
199596  ,p_balance_type_code     OUT VARCHAR2
199597  ,p_gain_or_loss_ref      OUT VARCHAR2
199598  
199599 --TRANSACTION_ID
199600  , p_source_1            IN NUMBER
199601 --Item Concatenated Segments
199602  , p_source_2            IN VARCHAR2
199603 --Transaction Quantity
199604  , p_source_3            IN NUMBER
199605 --Transaction Unit of Measure Code
199606  , p_source_4            IN VARCHAR2
199607 --Inventory Transaction Type Description
199608  , p_source_5            IN VARCHAR2
199609 --Cost Management Default Account
199610  , p_source_11            IN NUMBER
199611 --Applied to Application ID
199612  , p_source_79            IN NUMBER
199613 --Applied to Distribution Link Type
199614  , p_source_80            IN VARCHAR2
199615 --Applied to Entity Code
199616  , p_source_81            IN VARCHAR2
199617 --Applied To Purchase Document Identifier
199618  , p_source_83            IN NUMBER
199619 --DISTRIBUTION_IDENTIFIER
199620  , p_source_84            IN NUMBER
199621 --Distribution Type
199622  , p_source_85            IN VARCHAR2
199623  , p_source_85_meaning    IN VARCHAR2
199624 --PO Budget Account
199625  , p_source_86            IN NUMBER
199626 --Encumbrance Reversal Amount Entered
199627  , p_source_87            IN NUMBER
199628 --Entered Currency Code
199629  , p_source_88            IN VARCHAR2
199630 --Transaction Encumbrance Reversal Amount
199631  , p_source_89            IN NUMBER
199632 --Entered Amount
199633  , p_source_91            IN NUMBER
199634 --Currency Conversion Date
199635  , p_source_92            IN DATE
199636 --Currency Conversion Rate
199637  , p_source_93            IN NUMBER
199638 --Currency Conversion Type
199639  , p_source_94            IN VARCHAR2
199640 --Accounted Amount
199641  , p_source_95            IN NUMBER
199642 --Purchasing Encumbrance Type Identifier
199643  , p_source_96            IN NUMBER
199644 --Accounting Line Type
199645  , p_source_97            IN NUMBER
199646 --Costing Encumbrance Upgrade Option
199647  , p_source_100            IN VARCHAR2
199648 --TXN_PO_DISTRIBUTION_ID
199649  , p_source_101            IN NUMBER
199650 )
199651 IS
199652 
199653 l_component_type              VARCHAR2(80);
199654 l_component_code              VARCHAR2(30);
199655 l_component_type_code         VARCHAR2(1);
199656 l_component_appl_id           INTEGER;
199657 l_amb_context_code            VARCHAR2(30);
199658 l_entity_code                 VARCHAR2(30);
199659 l_event_class_code            VARCHAR2(30);
199660 l_ae_header_id                NUMBER;
199661 l_event_type_code             VARCHAR2(30);
199662 l_line_definition_code        VARCHAR2(30);
199663 l_line_definition_owner_code  VARCHAR2(1);
199664 --
199665 -- adr variables
199666 l_segment                     VARCHAR2(30);
199667 l_ccid                        NUMBER;
199668 l_adr_transaction_coa_id      NUMBER;
199669 l_adr_accounting_coa_id       NUMBER;
199670 l_adr_flexfield_segment_code  VARCHAR2(30);
199671 l_adr_flex_value_set_id       NUMBER;
199672 l_adr_value_type_code         VARCHAR2(30);
199673 l_adr_value_combination_id    NUMBER;
199674 l_adr_value_segment_code      VARCHAR2(30);
199675 
199676 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
199677 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
199678 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
199679 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
199680 
199681 -- 4262811 Variables ------------------------------------------------------------------------------------------
199682 l_entered_amt_idx             NUMBER;
199683 l_accted_amt_idx              NUMBER;
199684 l_acc_rev_flag                VARCHAR2(1);
199685 l_accrual_line_num            NUMBER;
199686 l_tmp_amt                     NUMBER;
199687 l_acc_rev_natural_side_code   VARCHAR2(1);
199688 
199689 l_num_entries                 NUMBER;
199690 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
199691 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
199692 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
199693 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
199694 l_recog_line_1                NUMBER;
199695 l_recog_line_2                NUMBER;
199696 
199697 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
199698 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
199699 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
199700 
199701 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
199702 
199703 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
199704 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
199705 
199706 ---------------------------------------------------------------------------------------------------------------
199707 
199708 
199709 --
199710 -- bulk performance
199711 --
199712 l_balance_type_code           VARCHAR2(1);
199713 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
199714 l_log_module                  VARCHAR2(240);
199715 
199716 --
199717 -- Upgrade strategy
199718 --
199719 l_actual_upg_option           VARCHAR2(1);
199720 l_enc_upg_option           VARCHAR2(1);
199721 
199722 --
199723 BEGIN
199724 --
199725 IF g_log_enabled THEN
199726       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_365';
199727 END IF;
199728 --
199729 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199730 
199731       trace
199732          (p_msg      => 'BEGIN of AcctLineType_365'
199733          ,p_level    => C_LEVEL_PROCEDURE
199734          ,p_module   => l_log_module);
199735 
199736 END IF;
199737 --
199738 l_component_type             := 'AMB_JLT';
199739 l_component_code             := 'OFFSET';
199740 l_component_type_code        := 'S';
199741 l_component_appl_id          :=  707;
199742 l_amb_context_code           := 'DEFAULT';
199743 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
199744 l_event_class_code           := 'PURCHASE_ORDER';
199745 l_event_type_code            := 'RET_RI_INV';
199746 l_line_definition_owner_code := 'S';
199747 l_line_definition_code       := 'PI_RET_RI_INV';
199748 --
199749 l_balance_type_code          := 'A';
199750 l_segment                     := NULL;
199751 l_ccid                        := NULL;
199752 l_adr_transaction_coa_id      := NULL;
199753 l_adr_accounting_coa_id       := NULL;
199754 l_adr_flexfield_segment_code  := NULL;
199755 l_adr_flex_value_set_id       := NULL;
199756 l_adr_value_type_code         := NULL;
199757 l_adr_value_combination_id    := NULL;
199758 l_adr_value_segment_code      := NULL;
199759 
199760 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
199761 l_bflow_class_code           := '';    -- 4219869 Business Flow
199762 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
199763 l_budgetary_control_flag     := 'N';
199764 
199765 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
199766 l_bflow_applied_to_amt       := NULL; -- 5132302
199767 l_entered_amt_idx            := NULL;          -- 4262811
199768 l_accted_amt_idx             := NULL;          -- 4262811
199769 l_acc_rev_flag               := NULL;          -- 4262811
199770 l_accrual_line_num           := NULL;          -- 4262811
199771 l_tmp_amt                    := NULL;          -- 4262811
199772 --
199773  
199774 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
199775     l_balance_type_code <> 'B' THEN
199776 IF NVL(p_source_97,9E125) =  2
199777  THEN 
199778 
199779    --
199780    XLA_AE_LINES_PKG.SetNewLine;
199781 
199782    p_balance_type_code          := l_balance_type_code;
199783    -- set the flag so later we will know whether the gain loss line needs to be created
199784    
199785    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
199786      p_actual_flag :='A';
199787    END IF;
199788 
199789    --
199790    -- bulk performance
199791    --
199792    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
199793                                       p_header_num   => 0); -- 4262811
199794    --
199795    -- set accounting line options
199796    --
199797    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
199798            p_natural_side_code          => 'D'
199799          , p_gain_or_loss_flag          => 'N'
199800          , p_gl_transfer_mode_code      => 'S'
199801          , p_acct_entry_type_code       => 'A'
199802          , p_switch_side_flag           => 'Y'
199803          , p_merge_duplicate_code       => 'N'
199804          );
199805    --
199806    l_acc_rev_natural_side_code := 'C';  -- 4262811
199807    -- 
199808    --
199809    -- set accounting line type info
199810    --
199811    xla_ae_lines_pkg.SetAcctLineType
199812       (p_component_type             => l_component_type
199813       ,p_event_type_code            => l_event_type_code
199814       ,p_line_definition_owner_code => l_line_definition_owner_code
199815       ,p_line_definition_code       => l_line_definition_code
199816       ,p_accounting_line_code       => l_component_code
199817       ,p_accounting_line_type_code  => l_component_type_code
199818       ,p_accounting_line_appl_id    => l_component_appl_id
199819       ,p_amb_context_code           => l_amb_context_code
199820       ,p_entity_code                => l_entity_code
199821       ,p_event_class_code           => l_event_class_code);
199822    --
199823    -- set accounting class
199824    --
199825    xla_ae_lines_pkg.SetAcctClass(
199826            p_accounting_class_code  => 'OFFSET'
199827          , p_ae_header_id           => l_ae_header_id
199828          );
199829 
199830    --
199831    -- set rounding class
199832    --
199833    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
199834                       'OFFSET';
199835 
199836    --
199837    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
199838    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
199839    --
199840    -- bulk performance
199841    --
199842    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
199843 
199844    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
199845       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
199846 
199847    -- 4955764
199848    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
199849       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
199850 
199851    -- 4458381 Public Sector Enh
199852    
199853    --
199854    -- set accounting attributes for the line type
199855    --
199856    l_entered_amt_idx := 17;
199857    l_accted_amt_idx  := 22;
199858    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
199859    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
199860    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
199861    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
199862    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
199863    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
199864    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
199865    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
199866    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
199867    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
199868    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
199869    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
199870    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
199871    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
199872    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
199873    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
199874    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
199875    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
199876    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
199877    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
199878    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
199879    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
199880    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
199881    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
199882    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
199883    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
199884    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
199885    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
199886    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
199887    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
199888    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
199889    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
199890    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
199891    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
199892    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
199893    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
199894    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
199895    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
199896    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
199897    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
199898    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
199899    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
199900    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
199901    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
199902    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
199903    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
199904    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
199905    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
199906    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
199907 
199908    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
199909    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
199910 
199911    ---------------------------------------------------------------------------------------------------------------
199912    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
199913    ---------------------------------------------------------------------------------------------------------------
199914    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
199915 
199916    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
199917    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
199918 
199919    IF xla_accounting_cache_pkg.GetValueChar
199920          (p_source_code         => 'LEDGER_CATEGORY_CODE'
199921          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
199922    AND l_bflow_method_code = 'PRIOR_ENTRY'
199923 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
199924    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
199925          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
199926        )
199927    THEN
199928          xla_ae_lines_pkg.BflowUpgEntry
199929            (p_business_method_code    => l_bflow_method_code
199930            ,p_business_class_code     => l_bflow_class_code
199931            ,p_balance_type            => l_balance_type_code);
199932    ELSE
199933       NULL;
199934 -- No business flow processing for business flow method of NONE.
199935    END IF;
199936 
199937    --
199938    -- call analytical criteria
199939    --
199940    
199941    --
199942    -- call description
199943    --
199944    
199945 xla_ae_lines_pkg.SetLineDescription(
199946    p_ae_header_id => l_ae_header_id
199947   ,p_description  => Description_1 (
199948      p_application_id         => p_application_id
199949    , p_ae_header_id           => l_ae_header_id 
199950 , p_source_1 => p_source_1
199951 , p_source_2 => p_source_2
199952 , p_source_3 => p_source_3
199953 , p_source_4 => p_source_4
199954 , p_source_5 => p_source_5
199955    )
199956 );
199957 
199958 
199959    --
199960    -- call ADRs
199961    -- Bug 4922099
199962    --
199963    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
199964         (NVL(l_actual_upg_option, 'N') = 'O') OR
199965         (NVL(l_enc_upg_option, 'N') = 'O')
199966       )
199967    THEN
199968    NULL;
199969    --
199970    --
199971    
199972   l_ccid := AcctDerRule_6(
199973            p_application_id           => p_application_id
199974          , p_ae_header_id             => l_ae_header_id 
199975 , p_source_11 => p_source_11
199976          , x_transaction_coa_id       => l_adr_transaction_coa_id
199977          , x_accounting_coa_id        => l_adr_accounting_coa_id
199978          , x_value_type_code          => l_adr_value_type_code
199979          , p_side                     => 'NA'
199980    );
199981 
199982    xla_ae_lines_pkg.set_ccid(
199983     p_code_combination_id          => l_ccid
199984   , p_value_type_code              => l_adr_value_type_code
199985   , p_transaction_coa_id           => l_adr_transaction_coa_id
199986   , p_accounting_coa_id            => l_adr_accounting_coa_id
199987   , p_adr_code                     => 'CST_DEFAULT'
199988   , p_adr_type_code                => 'S'
199989   , p_component_type               => l_component_type
199990   , p_component_code               => l_component_code
199991   , p_component_type_code          => l_component_type_code
199992   , p_component_appl_id            => l_component_appl_id
199993   , p_amb_context_code             => l_amb_context_code
199994   , p_side                         => 'NA'
199995   );
199996 
199997 
199998    --
199999    --
200000    END IF;
200001    --
200002    -- Bug 4922099
200003    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
200004           (NVL(l_enc_upg_option, 'N') = 'O')
200005         ) AND
200006         (l_bflow_method_code = 'PRIOR_ENTRY')
200007       )
200008    THEN
200009       IF
200010       --
200011       1 = 2
200012       --
200013       THEN
200014       xla_accounting_err_pkg.build_message
200015                                     (p_appli_s_name            => 'XLA'
200016                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
200017                                     ,p_token_1                 => 'LINE_NUMBER'
200018                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
200019                                     ,p_token_2                 => 'LINE_TYPE_NAME'
200020                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
200021                                                                              l_component_type
200022                                                                             ,l_component_code
200023                                                                             ,l_component_type_code
200024                                                                             ,l_component_appl_id
200025                                                                             ,l_amb_context_code
200026                                                                             ,l_entity_code
200027                                                                             ,l_event_class_code
200028                                                                            )
200029                                     ,p_token_3                 => 'OWNER'
200030                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
200031                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
200032                                                                           ,p_lookup_code    => l_component_type_code
200033                                                                          )
200034                                     ,p_token_4                 => 'PRODUCT_NAME'
200035                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
200036                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
200037                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
200038                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
200039                                     ,p_ae_header_id            =>  NULL
200040                                        );
200041 
200042         IF (C_LEVEL_ERROR>= g_log_level) THEN
200043                  trace
200044                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
200045                       ,p_level    => C_LEVEL_ERROR
200046                       ,p_module   => l_log_module);
200047         END IF;
200048       END IF;
200049    END IF;
200050    --
200051    --
200052    ------------------------------------------------------------------------------------------------
200053    -- 4219869 Business Flow
200054    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
200055    -- Prior Entry.  Currently, the following code is always generated.
200056    ------------------------------------------------------------------------------------------------
200057    XLA_AE_LINES_PKG.ValidateCurrentLine;
200058 
200059    ------------------------------------------------------------------------------------
200060    -- 4219869 Business Flow
200061    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
200062    ------------------------------------------------------------------------------------
200063    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
200064 
200065    ----------------------------------------------------------------------------------
200066    -- 4219869 Business Flow
200067    -- Update journal entry status -- Need to generate this within IF <condition>
200068    ----------------------------------------------------------------------------------
200069    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
200070          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
200071          ,p_balance_type_code => l_balance_type_code
200072          );
200073 
200074    -------------------------------------------------------------------------------------------
200075    -- 4262811 - Generate the Accrual Reversal lines
200076    -------------------------------------------------------------------------------------------
200077    BEGIN
200078       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
200079                               (g_array_event(p_event_id).array_value_num('header_index'));
200080       IF l_acc_rev_flag IS NULL THEN
200081          l_acc_rev_flag := 'N';
200082       END IF;
200083    EXCEPTION
200084       WHEN OTHERS THEN
200085          l_acc_rev_flag := 'N';
200086    END;
200087    --
200088    IF (l_acc_rev_flag = 'Y') THEN
200089 
200090        -- 4645092  ------------------------------------------------------------------------------
200091        -- To allow MPA report to determine if it should generate report process
200092        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
200093        ------------------------------------------------------------------------------------------
200094 
200095        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
200096        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
200097    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
200098    -- call ADRs
200099    -- Bug 4922099
200100    --
200101    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
200102         (NVL(l_actual_upg_option, 'N') = 'O') OR
200103         (NVL(l_enc_upg_option, 'N') = 'O')
200104       )
200105    THEN
200106    NULL;
200107    --
200108    --
200109    
200110   l_ccid := AcctDerRule_6(
200111            p_application_id           => p_application_id
200112          , p_ae_header_id             => l_ae_header_id 
200113 , p_source_11 => p_source_11
200114          , x_transaction_coa_id       => l_adr_transaction_coa_id
200115          , x_accounting_coa_id        => l_adr_accounting_coa_id
200116          , x_value_type_code          => l_adr_value_type_code
200117          , p_side                     => 'NA'
200118    );
200119 
200120    xla_ae_lines_pkg.set_ccid(
200121     p_code_combination_id          => l_ccid
200122   , p_value_type_code              => l_adr_value_type_code
200123   , p_transaction_coa_id           => l_adr_transaction_coa_id
200124   , p_accounting_coa_id            => l_adr_accounting_coa_id
200125   , p_adr_code                     => 'CST_DEFAULT'
200126   , p_adr_type_code                => 'S'
200127   , p_component_type               => l_component_type
200128   , p_component_code               => l_component_code
200129   , p_component_type_code          => l_component_type_code
200130   , p_component_appl_id            => l_component_appl_id
200131   , p_amb_context_code             => l_amb_context_code
200132   , p_side                         => 'NA'
200133   );
200134 
200135 
200136    --
200137    --
200138    END IF;
200139 
200140        --
200141        -- Update the line information that should be overwritten
200142        --
200143        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
200144                                          p_header_num   => 1);
200145        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
200146 
200147        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
200148 
200149        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
200150           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
200151        END IF;
200152 
200153       --
200154       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
200155       --
200156       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
200157           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
200158       ELSE
200159           ---------------------------------------------------------------------------------------------------
200160           -- 4262811a Switch Sign
200161           ---------------------------------------------------------------------------------------------------
200162           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
200163           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
200164                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
200165           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
200166                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
200167           -- 5132302
200168           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
200169                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
200170 
200171       END IF;
200172 
200173       -- 4955764
200174       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
200175       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
200176 
200177 
200178       XLA_AE_LINES_PKG.ValidateCurrentLine;
200179       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
200180 
200181       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
200182                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
200183                ,p_balance_type_code => l_balance_type_code);
200184 
200185    END IF;
200186 
200187    -----------------------------------------------------------------------------------------
200188    -- 4262811 Multiperiod Accounting
200189    -----------------------------------------------------------------------------------------
200190      -- No MPA option is assigned.
200191 
200192 
200193 END IF;
200194 END IF;
200195 --
200196 
200197 --
200198 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200199    trace
200200       (p_msg      => 'END of AcctLineType_365'
200201       ,p_level    => C_LEVEL_PROCEDURE
200202       ,p_module   => l_log_module);
200203 END IF;
200204 --
200205 EXCEPTION
200206   WHEN xla_exceptions_pkg.application_exception THEN
200207       RAISE;
200208   WHEN OTHERS THEN
200209        xla_exceptions_pkg.raise_message
200210            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_365');
200211 END AcctLineType_365;
200212 --
200213 
200214 ---------------------------------------
200215 --
200216 -- PRIVATE FUNCTION
200217 --         AcctLineType_366
200218 --
200219 ---------------------------------------
200220 PROCEDURE AcctLineType_366 (
200221   p_application_id        IN NUMBER
200222  ,p_event_id              IN NUMBER
200223  ,p_calculate_acctd_flag  IN VARCHAR2
200224  ,p_calculate_g_l_flag    IN VARCHAR2
200225  ,p_actual_flag           IN OUT VARCHAR2
200226  ,p_balance_type_code     OUT VARCHAR2
200227  ,p_gain_or_loss_ref      OUT VARCHAR2
200228  
200229 --TRANSACTION_ID
200230  , p_source_1            IN NUMBER
200231 --Item Concatenated Segments
200232  , p_source_2            IN VARCHAR2
200233 --Transaction Quantity
200234  , p_source_3            IN NUMBER
200235 --Transaction Unit of Measure Code
200236  , p_source_4            IN VARCHAR2
200237 --Inventory Transaction Type Description
200238  , p_source_5            IN VARCHAR2
200239 --Cost Management Default Account
200240  , p_source_11            IN NUMBER
200241 --DISTRIBUTION_IDENTIFIER
200242  , p_source_84            IN NUMBER
200243 --Distribution Type
200244  , p_source_85            IN VARCHAR2
200245  , p_source_85_meaning    IN VARCHAR2
200246 --Entered Currency Code
200247  , p_source_88            IN VARCHAR2
200248 --Entered Amount
200249  , p_source_91            IN NUMBER
200250 --Currency Conversion Date
200251  , p_source_92            IN DATE
200252 --Currency Conversion Rate
200253  , p_source_93            IN NUMBER
200254 --Currency Conversion Type
200255  , p_source_94            IN VARCHAR2
200256 --Accounted Amount
200257  , p_source_95            IN NUMBER
200258 --Accounting Line Type
200259  , p_source_97            IN NUMBER
200260 )
200261 IS
200262 
200263 l_component_type              VARCHAR2(80);
200264 l_component_code              VARCHAR2(30);
200265 l_component_type_code         VARCHAR2(1);
200266 l_component_appl_id           INTEGER;
200267 l_amb_context_code            VARCHAR2(30);
200268 l_entity_code                 VARCHAR2(30);
200269 l_event_class_code            VARCHAR2(30);
200270 l_ae_header_id                NUMBER;
200271 l_event_type_code             VARCHAR2(30);
200272 l_line_definition_code        VARCHAR2(30);
200273 l_line_definition_owner_code  VARCHAR2(1);
200274 --
200275 -- adr variables
200276 l_segment                     VARCHAR2(30);
200277 l_ccid                        NUMBER;
200278 l_adr_transaction_coa_id      NUMBER;
200279 l_adr_accounting_coa_id       NUMBER;
200280 l_adr_flexfield_segment_code  VARCHAR2(30);
200281 l_adr_flex_value_set_id       NUMBER;
200282 l_adr_value_type_code         VARCHAR2(30);
200283 l_adr_value_combination_id    NUMBER;
200284 l_adr_value_segment_code      VARCHAR2(30);
200285 
200286 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
200287 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
200288 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
200289 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
200290 
200291 -- 4262811 Variables ------------------------------------------------------------------------------------------
200292 l_entered_amt_idx             NUMBER;
200293 l_accted_amt_idx              NUMBER;
200294 l_acc_rev_flag                VARCHAR2(1);
200295 l_accrual_line_num            NUMBER;
200296 l_tmp_amt                     NUMBER;
200297 l_acc_rev_natural_side_code   VARCHAR2(1);
200298 
200299 l_num_entries                 NUMBER;
200300 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
200301 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
200302 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
200303 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
200304 l_recog_line_1                NUMBER;
200305 l_recog_line_2                NUMBER;
200306 
200307 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
200308 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
200309 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
200310 
200311 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
200312 
200313 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
200314 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
200315 
200316 ---------------------------------------------------------------------------------------------------------------
200317 
200318 
200319 --
200320 -- bulk performance
200321 --
200322 l_balance_type_code           VARCHAR2(1);
200323 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
200324 l_log_module                  VARCHAR2(240);
200325 
200326 --
200327 -- Upgrade strategy
200328 --
200329 l_actual_upg_option           VARCHAR2(1);
200330 l_enc_upg_option           VARCHAR2(1);
200331 
200332 --
200333 BEGIN
200334 --
200335 IF g_log_enabled THEN
200336       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_366';
200337 END IF;
200338 --
200339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200340 
200341       trace
200342          (p_msg      => 'BEGIN of AcctLineType_366'
200343          ,p_level    => C_LEVEL_PROCEDURE
200344          ,p_module   => l_log_module);
200345 
200346 END IF;
200347 --
200348 l_component_type             := 'AMB_JLT';
200349 l_component_code             := 'OFFSET';
200350 l_component_type_code        := 'S';
200351 l_component_appl_id          :=  707;
200352 l_amb_context_code           := 'DEFAULT';
200353 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
200354 l_event_class_code           := 'USER_DEFINE';
200355 l_event_type_code            := 'UDIR_INTERORG_SHIP';
200356 l_line_definition_owner_code := 'S';
200357 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
200358 --
200359 l_balance_type_code          := 'A';
200360 l_segment                     := NULL;
200361 l_ccid                        := NULL;
200362 l_adr_transaction_coa_id      := NULL;
200363 l_adr_accounting_coa_id       := NULL;
200364 l_adr_flexfield_segment_code  := NULL;
200365 l_adr_flex_value_set_id       := NULL;
200366 l_adr_value_type_code         := NULL;
200367 l_adr_value_combination_id    := NULL;
200368 l_adr_value_segment_code      := NULL;
200369 
200370 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
200371 l_bflow_class_code           := '';    -- 4219869 Business Flow
200372 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
200373 l_budgetary_control_flag     := 'N';
200374 
200375 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
200376 l_bflow_applied_to_amt       := NULL; -- 5132302
200377 l_entered_amt_idx            := NULL;          -- 4262811
200378 l_accted_amt_idx             := NULL;          -- 4262811
200379 l_acc_rev_flag               := NULL;          -- 4262811
200380 l_accrual_line_num           := NULL;          -- 4262811
200381 l_tmp_amt                    := NULL;          -- 4262811
200382 --
200383  
200384 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
200385     l_balance_type_code <> 'B' THEN
200386 IF NVL(p_source_97,9E125) =  2
200387  THEN 
200388 
200389    --
200390    XLA_AE_LINES_PKG.SetNewLine;
200391 
200392    p_balance_type_code          := l_balance_type_code;
200393    -- set the flag so later we will know whether the gain loss line needs to be created
200394    
200395    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
200396      p_actual_flag :='A';
200397    END IF;
200398 
200399    --
200400    -- bulk performance
200401    --
200402    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
200403                                       p_header_num   => 0); -- 4262811
200404    --
200405    -- set accounting line options
200406    --
200407    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
200408            p_natural_side_code          => 'D'
200409          , p_gain_or_loss_flag          => 'N'
200410          , p_gl_transfer_mode_code      => 'S'
200411          , p_acct_entry_type_code       => 'A'
200412          , p_switch_side_flag           => 'Y'
200413          , p_merge_duplicate_code       => 'N'
200414          );
200415    --
200416    l_acc_rev_natural_side_code := 'C';  -- 4262811
200417    -- 
200418    --
200419    -- set accounting line type info
200420    --
200421    xla_ae_lines_pkg.SetAcctLineType
200422       (p_component_type             => l_component_type
200423       ,p_event_type_code            => l_event_type_code
200424       ,p_line_definition_owner_code => l_line_definition_owner_code
200425       ,p_line_definition_code       => l_line_definition_code
200426       ,p_accounting_line_code       => l_component_code
200427       ,p_accounting_line_type_code  => l_component_type_code
200428       ,p_accounting_line_appl_id    => l_component_appl_id
200429       ,p_amb_context_code           => l_amb_context_code
200430       ,p_entity_code                => l_entity_code
200431       ,p_event_class_code           => l_event_class_code);
200432    --
200433    -- set accounting class
200434    --
200435    xla_ae_lines_pkg.SetAcctClass(
200436            p_accounting_class_code  => 'OFFSET'
200437          , p_ae_header_id           => l_ae_header_id
200438          );
200439 
200440    --
200441    -- set rounding class
200442    --
200443    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
200444                       'OFFSET';
200445 
200446    --
200447    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
200448    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
200449    --
200450    -- bulk performance
200451    --
200452    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
200453 
200454    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
200455       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
200456 
200457    -- 4955764
200458    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
200459       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
200460 
200461    -- 4458381 Public Sector Enh
200462    
200463    --
200464    -- set accounting attributes for the line type
200465    --
200466    l_entered_amt_idx := 3;
200467    l_accted_amt_idx  := 8;
200468    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
200469    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
200470    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
200471    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
200472    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
200473    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
200474    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
200475    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
200476    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
200477    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
200478    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
200479    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
200480    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
200481    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
200482    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
200483    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
200484    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
200485 
200486    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
200487    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
200488 
200489    ---------------------------------------------------------------------------------------------------------------
200490    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
200491    ---------------------------------------------------------------------------------------------------------------
200492    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
200493 
200494    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
200495    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
200496 
200497    IF xla_accounting_cache_pkg.GetValueChar
200498          (p_source_code         => 'LEDGER_CATEGORY_CODE'
200499          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
200500    AND l_bflow_method_code = 'PRIOR_ENTRY'
200501 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
200502    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
200503          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
200504        )
200505    THEN
200506          xla_ae_lines_pkg.BflowUpgEntry
200507            (p_business_method_code    => l_bflow_method_code
200508            ,p_business_class_code     => l_bflow_class_code
200509            ,p_balance_type            => l_balance_type_code);
200510    ELSE
200511       NULL;
200512 -- No business flow processing for business flow method of NONE.
200513    END IF;
200514 
200515    --
200516    -- call analytical criteria
200517    --
200518    
200519    --
200520    -- call description
200521    --
200522    
200523 xla_ae_lines_pkg.SetLineDescription(
200524    p_ae_header_id => l_ae_header_id
200525   ,p_description  => Description_1 (
200526      p_application_id         => p_application_id
200527    , p_ae_header_id           => l_ae_header_id 
200528 , p_source_1 => p_source_1
200529 , p_source_2 => p_source_2
200530 , p_source_3 => p_source_3
200531 , p_source_4 => p_source_4
200532 , p_source_5 => p_source_5
200533    )
200534 );
200535 
200536 
200537    --
200538    -- call ADRs
200539    -- Bug 4922099
200540    --
200541    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
200542         (NVL(l_actual_upg_option, 'N') = 'O') OR
200543         (NVL(l_enc_upg_option, 'N') = 'O')
200544       )
200545    THEN
200546    NULL;
200547    --
200548    --
200549    
200550   l_ccid := AcctDerRule_6(
200551            p_application_id           => p_application_id
200552          , p_ae_header_id             => l_ae_header_id 
200553 , p_source_11 => p_source_11
200554          , x_transaction_coa_id       => l_adr_transaction_coa_id
200555          , x_accounting_coa_id        => l_adr_accounting_coa_id
200556          , x_value_type_code          => l_adr_value_type_code
200557          , p_side                     => 'NA'
200558    );
200559 
200560    xla_ae_lines_pkg.set_ccid(
200561     p_code_combination_id          => l_ccid
200562   , p_value_type_code              => l_adr_value_type_code
200563   , p_transaction_coa_id           => l_adr_transaction_coa_id
200564   , p_accounting_coa_id            => l_adr_accounting_coa_id
200565   , p_adr_code                     => 'CST_DEFAULT'
200566   , p_adr_type_code                => 'S'
200567   , p_component_type               => l_component_type
200568   , p_component_code               => l_component_code
200569   , p_component_type_code          => l_component_type_code
200570   , p_component_appl_id            => l_component_appl_id
200571   , p_amb_context_code             => l_amb_context_code
200572   , p_side                         => 'NA'
200573   );
200574 
200575 
200576    --
200577    --
200578    END IF;
200579    --
200580    -- Bug 4922099
200581    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
200582           (NVL(l_enc_upg_option, 'N') = 'O')
200583         ) AND
200584         (l_bflow_method_code = 'PRIOR_ENTRY')
200585       )
200586    THEN
200587       IF
200588       --
200589       1 = 2
200590       --
200591       THEN
200592       xla_accounting_err_pkg.build_message
200593                                     (p_appli_s_name            => 'XLA'
200594                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
200595                                     ,p_token_1                 => 'LINE_NUMBER'
200596                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
200597                                     ,p_token_2                 => 'LINE_TYPE_NAME'
200598                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
200599                                                                              l_component_type
200600                                                                             ,l_component_code
200601                                                                             ,l_component_type_code
200602                                                                             ,l_component_appl_id
200603                                                                             ,l_amb_context_code
200604                                                                             ,l_entity_code
200605                                                                             ,l_event_class_code
200606                                                                            )
200607                                     ,p_token_3                 => 'OWNER'
200608                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
200609                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
200610                                                                           ,p_lookup_code    => l_component_type_code
200611                                                                          )
200612                                     ,p_token_4                 => 'PRODUCT_NAME'
200613                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
200614                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
200615                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
200616                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
200617                                     ,p_ae_header_id            =>  NULL
200618                                        );
200619 
200620         IF (C_LEVEL_ERROR>= g_log_level) THEN
200621                  trace
200622                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
200623                       ,p_level    => C_LEVEL_ERROR
200624                       ,p_module   => l_log_module);
200625         END IF;
200626       END IF;
200627    END IF;
200628    --
200629    --
200630    ------------------------------------------------------------------------------------------------
200631    -- 4219869 Business Flow
200632    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
200633    -- Prior Entry.  Currently, the following code is always generated.
200634    ------------------------------------------------------------------------------------------------
200635    XLA_AE_LINES_PKG.ValidateCurrentLine;
200636 
200637    ------------------------------------------------------------------------------------
200638    -- 4219869 Business Flow
200639    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
200640    ------------------------------------------------------------------------------------
200641    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
200642 
200643    ----------------------------------------------------------------------------------
200644    -- 4219869 Business Flow
200645    -- Update journal entry status -- Need to generate this within IF <condition>
200646    ----------------------------------------------------------------------------------
200647    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
200648          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
200649          ,p_balance_type_code => l_balance_type_code
200650          );
200651 
200652    -------------------------------------------------------------------------------------------
200653    -- 4262811 - Generate the Accrual Reversal lines
200654    -------------------------------------------------------------------------------------------
200655    BEGIN
200656       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
200657                               (g_array_event(p_event_id).array_value_num('header_index'));
200658       IF l_acc_rev_flag IS NULL THEN
200659          l_acc_rev_flag := 'N';
200660       END IF;
200661    EXCEPTION
200662       WHEN OTHERS THEN
200663          l_acc_rev_flag := 'N';
200664    END;
200665    --
200666    IF (l_acc_rev_flag = 'Y') THEN
200667 
200668        -- 4645092  ------------------------------------------------------------------------------
200669        -- To allow MPA report to determine if it should generate report process
200670        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
200671        ------------------------------------------------------------------------------------------
200672 
200673        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
200674        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
200675    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
200676    -- call ADRs
200677    -- Bug 4922099
200678    --
200679    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
200680         (NVL(l_actual_upg_option, 'N') = 'O') OR
200681         (NVL(l_enc_upg_option, 'N') = 'O')
200682       )
200683    THEN
200684    NULL;
200685    --
200686    --
200687    
200688   l_ccid := AcctDerRule_6(
200689            p_application_id           => p_application_id
200690          , p_ae_header_id             => l_ae_header_id 
200691 , p_source_11 => p_source_11
200692          , x_transaction_coa_id       => l_adr_transaction_coa_id
200693          , x_accounting_coa_id        => l_adr_accounting_coa_id
200694          , x_value_type_code          => l_adr_value_type_code
200695          , p_side                     => 'NA'
200696    );
200697 
200698    xla_ae_lines_pkg.set_ccid(
200699     p_code_combination_id          => l_ccid
200700   , p_value_type_code              => l_adr_value_type_code
200701   , p_transaction_coa_id           => l_adr_transaction_coa_id
200702   , p_accounting_coa_id            => l_adr_accounting_coa_id
200703   , p_adr_code                     => 'CST_DEFAULT'
200704   , p_adr_type_code                => 'S'
200705   , p_component_type               => l_component_type
200706   , p_component_code               => l_component_code
200707   , p_component_type_code          => l_component_type_code
200708   , p_component_appl_id            => l_component_appl_id
200709   , p_amb_context_code             => l_amb_context_code
200710   , p_side                         => 'NA'
200711   );
200712 
200713 
200714    --
200715    --
200716    END IF;
200717 
200718        --
200719        -- Update the line information that should be overwritten
200720        --
200721        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
200722                                          p_header_num   => 1);
200723        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
200724 
200725        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
200726 
200727        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
200728           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
200729        END IF;
200730 
200731       --
200732       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
200733       --
200734       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
200735           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
200736       ELSE
200737           ---------------------------------------------------------------------------------------------------
200738           -- 4262811a Switch Sign
200739           ---------------------------------------------------------------------------------------------------
200740           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
200741           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
200742                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
200743           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
200744                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
200745           -- 5132302
200746           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
200747                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
200748 
200749       END IF;
200750 
200751       -- 4955764
200752       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
200753       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
200754 
200755 
200756       XLA_AE_LINES_PKG.ValidateCurrentLine;
200757       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
200758 
200759       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
200760                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
200761                ,p_balance_type_code => l_balance_type_code);
200762 
200763    END IF;
200764 
200765    -----------------------------------------------------------------------------------------
200766    -- 4262811 Multiperiod Accounting
200767    -----------------------------------------------------------------------------------------
200768      -- No MPA option is assigned.
200769 
200770 
200771 END IF;
200772 END IF;
200773 --
200774 
200775 --
200776 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200777    trace
200778       (p_msg      => 'END of AcctLineType_366'
200779       ,p_level    => C_LEVEL_PROCEDURE
200780       ,p_module   => l_log_module);
200781 END IF;
200782 --
200783 EXCEPTION
200784   WHEN xla_exceptions_pkg.application_exception THEN
200785       RAISE;
200786   WHEN OTHERS THEN
200787        xla_exceptions_pkg.raise_message
200788            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_366');
200789 END AcctLineType_366;
200790 --
200791 
200792 ---------------------------------------
200793 --
200794 -- PRIVATE FUNCTION
200795 --         AcctLineType_367
200796 --
200797 ---------------------------------------
200798 PROCEDURE AcctLineType_367 (
200799   p_application_id        IN NUMBER
200800  ,p_event_id              IN NUMBER
200801  ,p_calculate_acctd_flag  IN VARCHAR2
200802  ,p_calculate_g_l_flag    IN VARCHAR2
200803  ,p_actual_flag           IN OUT VARCHAR2
200804  ,p_balance_type_code     OUT VARCHAR2
200805  ,p_gain_or_loss_ref      OUT VARCHAR2
200806  
200807 --TRANSACTION_ID
200808  , p_source_1            IN NUMBER
200809 --Item Concatenated Segments
200810  , p_source_2            IN VARCHAR2
200811 --Transaction Quantity
200812  , p_source_3            IN NUMBER
200813 --Transaction Unit of Measure Code
200814  , p_source_4            IN VARCHAR2
200815 --Inventory Transaction Type Description
200816  , p_source_5            IN VARCHAR2
200817 --Cost Management Default Account
200818  , p_source_11            IN NUMBER
200819 --DISTRIBUTION_IDENTIFIER
200820  , p_source_84            IN NUMBER
200821 --Distribution Type
200822  , p_source_85            IN VARCHAR2
200823  , p_source_85_meaning    IN VARCHAR2
200824 --Entered Currency Code
200825  , p_source_88            IN VARCHAR2
200826 --Entered Amount
200827  , p_source_91            IN NUMBER
200828 --Currency Conversion Date
200829  , p_source_92            IN DATE
200830 --Currency Conversion Rate
200831  , p_source_93            IN NUMBER
200832 --Currency Conversion Type
200833  , p_source_94            IN VARCHAR2
200834 --Accounted Amount
200835  , p_source_95            IN NUMBER
200836 --Accounting Line Type
200837  , p_source_97            IN NUMBER
200838 )
200839 IS
200840 
200841 l_component_type              VARCHAR2(80);
200842 l_component_code              VARCHAR2(30);
200843 l_component_type_code         VARCHAR2(1);
200844 l_component_appl_id           INTEGER;
200845 l_amb_context_code            VARCHAR2(30);
200846 l_entity_code                 VARCHAR2(30);
200847 l_event_class_code            VARCHAR2(30);
200848 l_ae_header_id                NUMBER;
200849 l_event_type_code             VARCHAR2(30);
200850 l_line_definition_code        VARCHAR2(30);
200851 l_line_definition_owner_code  VARCHAR2(1);
200852 --
200853 -- adr variables
200854 l_segment                     VARCHAR2(30);
200855 l_ccid                        NUMBER;
200856 l_adr_transaction_coa_id      NUMBER;
200857 l_adr_accounting_coa_id       NUMBER;
200858 l_adr_flexfield_segment_code  VARCHAR2(30);
200859 l_adr_flex_value_set_id       NUMBER;
200860 l_adr_value_type_code         VARCHAR2(30);
200861 l_adr_value_combination_id    NUMBER;
200862 l_adr_value_segment_code      VARCHAR2(30);
200863 
200864 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
200865 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
200866 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
200867 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
200868 
200869 -- 4262811 Variables ------------------------------------------------------------------------------------------
200870 l_entered_amt_idx             NUMBER;
200871 l_accted_amt_idx              NUMBER;
200872 l_acc_rev_flag                VARCHAR2(1);
200873 l_accrual_line_num            NUMBER;
200874 l_tmp_amt                     NUMBER;
200875 l_acc_rev_natural_side_code   VARCHAR2(1);
200876 
200877 l_num_entries                 NUMBER;
200878 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
200879 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
200880 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
200881 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
200882 l_recog_line_1                NUMBER;
200883 l_recog_line_2                NUMBER;
200884 
200885 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
200886 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
200887 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
200888 
200889 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
200890 
200891 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
200892 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
200893 
200894 ---------------------------------------------------------------------------------------------------------------
200895 
200896 
200897 --
200898 -- bulk performance
200899 --
200900 l_balance_type_code           VARCHAR2(1);
200901 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
200902 l_log_module                  VARCHAR2(240);
200903 
200904 --
200905 -- Upgrade strategy
200906 --
200907 l_actual_upg_option           VARCHAR2(1);
200908 l_enc_upg_option           VARCHAR2(1);
200909 
200910 --
200911 BEGIN
200912 --
200913 IF g_log_enabled THEN
200914       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_367';
200915 END IF;
200916 --
200917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200918 
200919       trace
200920          (p_msg      => 'BEGIN of AcctLineType_367'
200921          ,p_level    => C_LEVEL_PROCEDURE
200922          ,p_module   => l_log_module);
200923 
200924 END IF;
200925 --
200926 l_component_type             := 'AMB_JLT';
200927 l_component_code             := 'OFFSET';
200928 l_component_type_code        := 'S';
200929 l_component_appl_id          :=  707;
200930 l_amb_context_code           := 'DEFAULT';
200931 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
200932 l_event_class_code           := 'USER_DEFINE';
200933 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
200934 l_line_definition_owner_code := 'S';
200935 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
200936 --
200937 l_balance_type_code          := 'A';
200938 l_segment                     := NULL;
200939 l_ccid                        := NULL;
200940 l_adr_transaction_coa_id      := NULL;
200941 l_adr_accounting_coa_id       := NULL;
200942 l_adr_flexfield_segment_code  := NULL;
200943 l_adr_flex_value_set_id       := NULL;
200944 l_adr_value_type_code         := NULL;
200945 l_adr_value_combination_id    := NULL;
200946 l_adr_value_segment_code      := NULL;
200947 
200948 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
200949 l_bflow_class_code           := '';    -- 4219869 Business Flow
200950 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
200951 l_budgetary_control_flag     := 'N';
200952 
200953 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
200954 l_bflow_applied_to_amt       := NULL; -- 5132302
200955 l_entered_amt_idx            := NULL;          -- 4262811
200956 l_accted_amt_idx             := NULL;          -- 4262811
200957 l_acc_rev_flag               := NULL;          -- 4262811
200958 l_accrual_line_num           := NULL;          -- 4262811
200959 l_tmp_amt                    := NULL;          -- 4262811
200960 --
200961  
200962 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
200963     l_balance_type_code <> 'B' THEN
200964 IF NVL(p_source_97,9E125) =  2
200965  THEN 
200966 
200967    --
200968    XLA_AE_LINES_PKG.SetNewLine;
200969 
200970    p_balance_type_code          := l_balance_type_code;
200971    -- set the flag so later we will know whether the gain loss line needs to be created
200972    
200973    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
200974      p_actual_flag :='A';
200975    END IF;
200976 
200977    --
200978    -- bulk performance
200979    --
200980    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
200981                                       p_header_num   => 0); -- 4262811
200982    --
200983    -- set accounting line options
200984    --
200985    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
200986            p_natural_side_code          => 'D'
200987          , p_gain_or_loss_flag          => 'N'
200988          , p_gl_transfer_mode_code      => 'S'
200989          , p_acct_entry_type_code       => 'A'
200990          , p_switch_side_flag           => 'Y'
200991          , p_merge_duplicate_code       => 'N'
200992          );
200993    --
200994    l_acc_rev_natural_side_code := 'C';  -- 4262811
200995    -- 
200996    --
200997    -- set accounting line type info
200998    --
200999    xla_ae_lines_pkg.SetAcctLineType
201000       (p_component_type             => l_component_type
201001       ,p_event_type_code            => l_event_type_code
201002       ,p_line_definition_owner_code => l_line_definition_owner_code
201003       ,p_line_definition_code       => l_line_definition_code
201004       ,p_accounting_line_code       => l_component_code
201005       ,p_accounting_line_type_code  => l_component_type_code
201006       ,p_accounting_line_appl_id    => l_component_appl_id
201007       ,p_amb_context_code           => l_amb_context_code
201008       ,p_entity_code                => l_entity_code
201009       ,p_event_class_code           => l_event_class_code);
201010    --
201011    -- set accounting class
201012    --
201013    xla_ae_lines_pkg.SetAcctClass(
201014            p_accounting_class_code  => 'OFFSET'
201015          , p_ae_header_id           => l_ae_header_id
201016          );
201017 
201018    --
201019    -- set rounding class
201020    --
201021    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
201022                       'OFFSET';
201023 
201024    --
201025    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
201026    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
201027    --
201028    -- bulk performance
201029    --
201030    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
201031 
201032    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
201033       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
201034 
201035    -- 4955764
201036    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
201037       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
201038 
201039    -- 4458381 Public Sector Enh
201040    
201041    --
201042    -- set accounting attributes for the line type
201043    --
201044    l_entered_amt_idx := 3;
201045    l_accted_amt_idx  := 8;
201046    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
201047    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
201048    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
201049    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
201050    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
201051    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
201052    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
201053    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
201054    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
201055    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
201056    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
201057    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
201058    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
201059    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
201060    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
201061    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
201062    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
201063 
201064    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
201065    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
201066 
201067    ---------------------------------------------------------------------------------------------------------------
201068    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
201069    ---------------------------------------------------------------------------------------------------------------
201070    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
201071 
201072    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
201073    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
201074 
201075    IF xla_accounting_cache_pkg.GetValueChar
201076          (p_source_code         => 'LEDGER_CATEGORY_CODE'
201077          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
201078    AND l_bflow_method_code = 'PRIOR_ENTRY'
201079 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
201080    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
201081          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
201082        )
201083    THEN
201084          xla_ae_lines_pkg.BflowUpgEntry
201085            (p_business_method_code    => l_bflow_method_code
201086            ,p_business_class_code     => l_bflow_class_code
201087            ,p_balance_type            => l_balance_type_code);
201088    ELSE
201089       NULL;
201090 -- No business flow processing for business flow method of NONE.
201091    END IF;
201092 
201093    --
201094    -- call analytical criteria
201095    --
201096    
201097    --
201098    -- call description
201099    --
201100    
201101 xla_ae_lines_pkg.SetLineDescription(
201102    p_ae_header_id => l_ae_header_id
201103   ,p_description  => Description_1 (
201104      p_application_id         => p_application_id
201105    , p_ae_header_id           => l_ae_header_id 
201106 , p_source_1 => p_source_1
201107 , p_source_2 => p_source_2
201108 , p_source_3 => p_source_3
201109 , p_source_4 => p_source_4
201110 , p_source_5 => p_source_5
201111    )
201112 );
201113 
201114 
201115    --
201116    -- call ADRs
201117    -- Bug 4922099
201118    --
201119    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
201120         (NVL(l_actual_upg_option, 'N') = 'O') OR
201121         (NVL(l_enc_upg_option, 'N') = 'O')
201122       )
201123    THEN
201124    NULL;
201125    --
201126    --
201127    
201128   l_ccid := AcctDerRule_6(
201129            p_application_id           => p_application_id
201130          , p_ae_header_id             => l_ae_header_id 
201131 , p_source_11 => p_source_11
201132          , x_transaction_coa_id       => l_adr_transaction_coa_id
201133          , x_accounting_coa_id        => l_adr_accounting_coa_id
201134          , x_value_type_code          => l_adr_value_type_code
201135          , p_side                     => 'NA'
201136    );
201137 
201138    xla_ae_lines_pkg.set_ccid(
201139     p_code_combination_id          => l_ccid
201140   , p_value_type_code              => l_adr_value_type_code
201141   , p_transaction_coa_id           => l_adr_transaction_coa_id
201142   , p_accounting_coa_id            => l_adr_accounting_coa_id
201143   , p_adr_code                     => 'CST_DEFAULT'
201144   , p_adr_type_code                => 'S'
201145   , p_component_type               => l_component_type
201146   , p_component_code               => l_component_code
201147   , p_component_type_code          => l_component_type_code
201148   , p_component_appl_id            => l_component_appl_id
201149   , p_amb_context_code             => l_amb_context_code
201150   , p_side                         => 'NA'
201151   );
201152 
201153 
201154    --
201155    --
201156    END IF;
201157    --
201158    -- Bug 4922099
201159    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
201160           (NVL(l_enc_upg_option, 'N') = 'O')
201161         ) AND
201162         (l_bflow_method_code = 'PRIOR_ENTRY')
201163       )
201164    THEN
201165       IF
201166       --
201167       1 = 2
201168       --
201169       THEN
201170       xla_accounting_err_pkg.build_message
201171                                     (p_appli_s_name            => 'XLA'
201172                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
201173                                     ,p_token_1                 => 'LINE_NUMBER'
201174                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
201175                                     ,p_token_2                 => 'LINE_TYPE_NAME'
201176                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
201177                                                                              l_component_type
201178                                                                             ,l_component_code
201179                                                                             ,l_component_type_code
201180                                                                             ,l_component_appl_id
201181                                                                             ,l_amb_context_code
201182                                                                             ,l_entity_code
201183                                                                             ,l_event_class_code
201184                                                                            )
201185                                     ,p_token_3                 => 'OWNER'
201186                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
201187                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
201188                                                                           ,p_lookup_code    => l_component_type_code
201189                                                                          )
201190                                     ,p_token_4                 => 'PRODUCT_NAME'
201191                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
201192                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
201193                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
201194                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
201195                                     ,p_ae_header_id            =>  NULL
201196                                        );
201197 
201198         IF (C_LEVEL_ERROR>= g_log_level) THEN
201199                  trace
201200                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
201201                       ,p_level    => C_LEVEL_ERROR
201202                       ,p_module   => l_log_module);
201203         END IF;
201204       END IF;
201205    END IF;
201206    --
201207    --
201208    ------------------------------------------------------------------------------------------------
201209    -- 4219869 Business Flow
201210    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
201211    -- Prior Entry.  Currently, the following code is always generated.
201212    ------------------------------------------------------------------------------------------------
201213    XLA_AE_LINES_PKG.ValidateCurrentLine;
201214 
201215    ------------------------------------------------------------------------------------
201216    -- 4219869 Business Flow
201217    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
201218    ------------------------------------------------------------------------------------
201219    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
201220 
201221    ----------------------------------------------------------------------------------
201222    -- 4219869 Business Flow
201223    -- Update journal entry status -- Need to generate this within IF <condition>
201224    ----------------------------------------------------------------------------------
201225    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
201226          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
201227          ,p_balance_type_code => l_balance_type_code
201228          );
201229 
201230    -------------------------------------------------------------------------------------------
201231    -- 4262811 - Generate the Accrual Reversal lines
201232    -------------------------------------------------------------------------------------------
201233    BEGIN
201234       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
201235                               (g_array_event(p_event_id).array_value_num('header_index'));
201236       IF l_acc_rev_flag IS NULL THEN
201237          l_acc_rev_flag := 'N';
201238       END IF;
201239    EXCEPTION
201240       WHEN OTHERS THEN
201241          l_acc_rev_flag := 'N';
201242    END;
201243    --
201244    IF (l_acc_rev_flag = 'Y') THEN
201245 
201246        -- 4645092  ------------------------------------------------------------------------------
201247        -- To allow MPA report to determine if it should generate report process
201248        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
201249        ------------------------------------------------------------------------------------------
201250 
201251        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
201252        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
201253    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
201254    -- call ADRs
201255    -- Bug 4922099
201256    --
201257    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
201258         (NVL(l_actual_upg_option, 'N') = 'O') OR
201259         (NVL(l_enc_upg_option, 'N') = 'O')
201260       )
201261    THEN
201262    NULL;
201263    --
201264    --
201265    
201266   l_ccid := AcctDerRule_6(
201267            p_application_id           => p_application_id
201268          , p_ae_header_id             => l_ae_header_id 
201269 , p_source_11 => p_source_11
201270          , x_transaction_coa_id       => l_adr_transaction_coa_id
201271          , x_accounting_coa_id        => l_adr_accounting_coa_id
201272          , x_value_type_code          => l_adr_value_type_code
201273          , p_side                     => 'NA'
201274    );
201275 
201276    xla_ae_lines_pkg.set_ccid(
201277     p_code_combination_id          => l_ccid
201278   , p_value_type_code              => l_adr_value_type_code
201279   , p_transaction_coa_id           => l_adr_transaction_coa_id
201280   , p_accounting_coa_id            => l_adr_accounting_coa_id
201281   , p_adr_code                     => 'CST_DEFAULT'
201282   , p_adr_type_code                => 'S'
201283   , p_component_type               => l_component_type
201284   , p_component_code               => l_component_code
201285   , p_component_type_code          => l_component_type_code
201286   , p_component_appl_id            => l_component_appl_id
201287   , p_amb_context_code             => l_amb_context_code
201288   , p_side                         => 'NA'
201289   );
201290 
201291 
201292    --
201293    --
201294    END IF;
201295 
201296        --
201297        -- Update the line information that should be overwritten
201298        --
201299        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
201300                                          p_header_num   => 1);
201301        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
201302 
201303        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
201304 
201305        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
201306           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
201307        END IF;
201308 
201309       --
201310       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
201311       --
201312       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
201313           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
201314       ELSE
201315           ---------------------------------------------------------------------------------------------------
201316           -- 4262811a Switch Sign
201317           ---------------------------------------------------------------------------------------------------
201318           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
201319           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
201320                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
201321           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
201322                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
201323           -- 5132302
201324           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
201325                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
201326 
201327       END IF;
201328 
201329       -- 4955764
201330       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
201331       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
201332 
201333 
201334       XLA_AE_LINES_PKG.ValidateCurrentLine;
201335       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
201336 
201337       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
201338                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
201339                ,p_balance_type_code => l_balance_type_code);
201340 
201341    END IF;
201342 
201343    -----------------------------------------------------------------------------------------
201344    -- 4262811 Multiperiod Accounting
201345    -----------------------------------------------------------------------------------------
201346      -- No MPA option is assigned.
201347 
201348 
201349 END IF;
201350 END IF;
201351 --
201352 
201353 --
201354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201355    trace
201356       (p_msg      => 'END of AcctLineType_367'
201357       ,p_level    => C_LEVEL_PROCEDURE
201358       ,p_module   => l_log_module);
201359 END IF;
201360 --
201361 EXCEPTION
201362   WHEN xla_exceptions_pkg.application_exception THEN
201363       RAISE;
201364   WHEN OTHERS THEN
201365        xla_exceptions_pkg.raise_message
201366            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_367');
201367 END AcctLineType_367;
201368 --
201369 
201370 ---------------------------------------
201371 --
201372 -- PRIVATE FUNCTION
201373 --         AcctLineType_368
201374 --
201375 ---------------------------------------
201376 PROCEDURE AcctLineType_368 (
201377   p_application_id        IN NUMBER
201378  ,p_event_id              IN NUMBER
201379  ,p_calculate_acctd_flag  IN VARCHAR2
201380  ,p_calculate_g_l_flag    IN VARCHAR2
201381  ,p_actual_flag           IN OUT VARCHAR2
201382  ,p_balance_type_code     OUT VARCHAR2
201383  ,p_gain_or_loss_ref      OUT VARCHAR2
201384  
201385 --Cost Management Default Account
201386  , p_source_11            IN NUMBER
201387 --DISTRIBUTION_IDENTIFIER
201388  , p_source_84            IN NUMBER
201389 --Distribution Type
201390  , p_source_85            IN VARCHAR2
201391  , p_source_85_meaning    IN VARCHAR2
201392 --Entered Currency Code
201393  , p_source_88            IN VARCHAR2
201394 --Entered Amount
201395  , p_source_91            IN NUMBER
201396 --Currency Conversion Date
201397  , p_source_92            IN DATE
201398 --Currency Conversion Rate
201399  , p_source_93            IN NUMBER
201400 --Currency Conversion Type
201401  , p_source_94            IN VARCHAR2
201402 --Accounted Amount
201403  , p_source_95            IN NUMBER
201404 --Accounting Line Type
201405  , p_source_97            IN NUMBER
201406 )
201407 IS
201408 
201409 l_component_type              VARCHAR2(80);
201410 l_component_code              VARCHAR2(30);
201411 l_component_type_code         VARCHAR2(1);
201412 l_component_appl_id           INTEGER;
201413 l_amb_context_code            VARCHAR2(30);
201414 l_entity_code                 VARCHAR2(30);
201415 l_event_class_code            VARCHAR2(30);
201416 l_ae_header_id                NUMBER;
201417 l_event_type_code             VARCHAR2(30);
201418 l_line_definition_code        VARCHAR2(30);
201419 l_line_definition_owner_code  VARCHAR2(1);
201420 --
201421 -- adr variables
201422 l_segment                     VARCHAR2(30);
201423 l_ccid                        NUMBER;
201424 l_adr_transaction_coa_id      NUMBER;
201425 l_adr_accounting_coa_id       NUMBER;
201426 l_adr_flexfield_segment_code  VARCHAR2(30);
201427 l_adr_flex_value_set_id       NUMBER;
201428 l_adr_value_type_code         VARCHAR2(30);
201429 l_adr_value_combination_id    NUMBER;
201430 l_adr_value_segment_code      VARCHAR2(30);
201431 
201432 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
201433 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
201434 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
201435 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
201436 
201437 -- 4262811 Variables ------------------------------------------------------------------------------------------
201438 l_entered_amt_idx             NUMBER;
201439 l_accted_amt_idx              NUMBER;
201440 l_acc_rev_flag                VARCHAR2(1);
201441 l_accrual_line_num            NUMBER;
201442 l_tmp_amt                     NUMBER;
201443 l_acc_rev_natural_side_code   VARCHAR2(1);
201444 
201445 l_num_entries                 NUMBER;
201446 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
201447 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
201448 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
201449 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
201450 l_recog_line_1                NUMBER;
201451 l_recog_line_2                NUMBER;
201452 
201453 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
201454 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
201455 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
201456 
201457 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
201458 
201459 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
201460 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
201461 
201462 ---------------------------------------------------------------------------------------------------------------
201463 
201464 
201465 --
201466 -- bulk performance
201467 --
201468 l_balance_type_code           VARCHAR2(1);
201469 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
201470 l_log_module                  VARCHAR2(240);
201471 
201472 --
201473 -- Upgrade strategy
201474 --
201475 l_actual_upg_option           VARCHAR2(1);
201476 l_enc_upg_option           VARCHAR2(1);
201477 
201478 --
201479 BEGIN
201480 --
201481 IF g_log_enabled THEN
201482       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_368';
201483 END IF;
201484 --
201485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201486 
201487       trace
201488          (p_msg      => 'BEGIN of AcctLineType_368'
201489          ,p_level    => C_LEVEL_PROCEDURE
201490          ,p_module   => l_log_module);
201491 
201492 END IF;
201493 --
201494 l_component_type             := 'AMB_JLT';
201495 l_component_code             := 'OFFSET';
201496 l_component_type_code        := 'S';
201497 l_component_appl_id          :=  707;
201498 l_amb_context_code           := 'DEFAULT';
201499 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
201500 l_event_class_code           := 'USER_DEFINE';
201501 l_event_type_code            := 'UMISC_RCPT';
201502 l_line_definition_owner_code := 'S';
201503 l_line_definition_code       := 'PI_USER_RCPT';
201504 --
201505 l_balance_type_code          := 'A';
201506 l_segment                     := NULL;
201507 l_ccid                        := NULL;
201508 l_adr_transaction_coa_id      := NULL;
201509 l_adr_accounting_coa_id       := NULL;
201510 l_adr_flexfield_segment_code  := NULL;
201511 l_adr_flex_value_set_id       := NULL;
201512 l_adr_value_type_code         := NULL;
201513 l_adr_value_combination_id    := NULL;
201514 l_adr_value_segment_code      := NULL;
201515 
201516 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
201517 l_bflow_class_code           := '';    -- 4219869 Business Flow
201518 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
201519 l_budgetary_control_flag     := 'N';
201520 
201521 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
201522 l_bflow_applied_to_amt       := NULL; -- 5132302
201523 l_entered_amt_idx            := NULL;          -- 4262811
201524 l_accted_amt_idx             := NULL;          -- 4262811
201525 l_acc_rev_flag               := NULL;          -- 4262811
201526 l_accrual_line_num           := NULL;          -- 4262811
201527 l_tmp_amt                    := NULL;          -- 4262811
201528 --
201529  
201530 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
201531     l_balance_type_code <> 'B' THEN
201532 IF NVL(p_source_97,9E125) =  2
201533  THEN 
201534 
201535    --
201536    XLA_AE_LINES_PKG.SetNewLine;
201537 
201538    p_balance_type_code          := l_balance_type_code;
201539    -- set the flag so later we will know whether the gain loss line needs to be created
201540    
201541    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
201542      p_actual_flag :='A';
201543    END IF;
201544 
201545    --
201546    -- bulk performance
201547    --
201548    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
201549                                       p_header_num   => 0); -- 4262811
201550    --
201551    -- set accounting line options
201552    --
201553    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
201554            p_natural_side_code          => 'D'
201555          , p_gain_or_loss_flag          => 'N'
201556          , p_gl_transfer_mode_code      => 'S'
201557          , p_acct_entry_type_code       => 'A'
201558          , p_switch_side_flag           => 'Y'
201559          , p_merge_duplicate_code       => 'N'
201560          );
201561    --
201562    l_acc_rev_natural_side_code := 'C';  -- 4262811
201563    -- 
201564    --
201565    -- set accounting line type info
201566    --
201567    xla_ae_lines_pkg.SetAcctLineType
201568       (p_component_type             => l_component_type
201569       ,p_event_type_code            => l_event_type_code
201570       ,p_line_definition_owner_code => l_line_definition_owner_code
201571       ,p_line_definition_code       => l_line_definition_code
201572       ,p_accounting_line_code       => l_component_code
201573       ,p_accounting_line_type_code  => l_component_type_code
201574       ,p_accounting_line_appl_id    => l_component_appl_id
201575       ,p_amb_context_code           => l_amb_context_code
201576       ,p_entity_code                => l_entity_code
201577       ,p_event_class_code           => l_event_class_code);
201578    --
201579    -- set accounting class
201580    --
201581    xla_ae_lines_pkg.SetAcctClass(
201582            p_accounting_class_code  => 'OFFSET'
201583          , p_ae_header_id           => l_ae_header_id
201584          );
201585 
201586    --
201587    -- set rounding class
201588    --
201589    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
201590                       'OFFSET';
201591 
201592    --
201593    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
201594    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
201595    --
201596    -- bulk performance
201597    --
201598    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
201599 
201600    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
201601       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
201602 
201603    -- 4955764
201604    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
201605       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
201606 
201607    -- 4458381 Public Sector Enh
201608    
201609    --
201610    -- set accounting attributes for the line type
201611    --
201612    l_entered_amt_idx := 3;
201613    l_accted_amt_idx  := 8;
201614    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
201615    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
201616    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
201617    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
201618    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
201619    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
201620    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
201621    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
201622    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
201623    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
201624    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
201625    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
201626    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
201627    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
201628    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
201629    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
201630    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
201631 
201632    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
201633    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
201634 
201635    ---------------------------------------------------------------------------------------------------------------
201636    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
201637    ---------------------------------------------------------------------------------------------------------------
201638    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
201639 
201640    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
201641    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
201642 
201643    IF xla_accounting_cache_pkg.GetValueChar
201644          (p_source_code         => 'LEDGER_CATEGORY_CODE'
201645          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
201646    AND l_bflow_method_code = 'PRIOR_ENTRY'
201647 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
201648    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
201649          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
201650        )
201651    THEN
201652          xla_ae_lines_pkg.BflowUpgEntry
201653            (p_business_method_code    => l_bflow_method_code
201654            ,p_business_class_code     => l_bflow_class_code
201655            ,p_balance_type            => l_balance_type_code);
201656    ELSE
201657       NULL;
201658 -- No business flow processing for business flow method of NONE.
201659    END IF;
201660 
201661    --
201662    -- call analytical criteria
201663    --
201664    
201665    --
201666    -- call description
201667    --
201668    -- No description or it is inherited.
201669    --
201670    -- call ADRs
201671    -- Bug 4922099
201672    --
201673    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
201674         (NVL(l_actual_upg_option, 'N') = 'O') OR
201675         (NVL(l_enc_upg_option, 'N') = 'O')
201676       )
201677    THEN
201678    NULL;
201679    --
201680    --
201681    
201682   l_ccid := AcctDerRule_6(
201683            p_application_id           => p_application_id
201684          , p_ae_header_id             => l_ae_header_id 
201685 , p_source_11 => p_source_11
201686          , x_transaction_coa_id       => l_adr_transaction_coa_id
201687          , x_accounting_coa_id        => l_adr_accounting_coa_id
201688          , x_value_type_code          => l_adr_value_type_code
201689          , p_side                     => 'NA'
201690    );
201691 
201692    xla_ae_lines_pkg.set_ccid(
201693     p_code_combination_id          => l_ccid
201694   , p_value_type_code              => l_adr_value_type_code
201695   , p_transaction_coa_id           => l_adr_transaction_coa_id
201696   , p_accounting_coa_id            => l_adr_accounting_coa_id
201697   , p_adr_code                     => 'CST_DEFAULT'
201698   , p_adr_type_code                => 'S'
201699   , p_component_type               => l_component_type
201700   , p_component_code               => l_component_code
201701   , p_component_type_code          => l_component_type_code
201702   , p_component_appl_id            => l_component_appl_id
201703   , p_amb_context_code             => l_amb_context_code
201704   , p_side                         => 'NA'
201705   );
201706 
201707 
201708    --
201709    --
201710    END IF;
201711    --
201712    -- Bug 4922099
201713    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
201714           (NVL(l_enc_upg_option, 'N') = 'O')
201715         ) AND
201716         (l_bflow_method_code = 'PRIOR_ENTRY')
201717       )
201718    THEN
201719       IF
201720       --
201721       1 = 2
201722       --
201723       THEN
201724       xla_accounting_err_pkg.build_message
201725                                     (p_appli_s_name            => 'XLA'
201726                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
201727                                     ,p_token_1                 => 'LINE_NUMBER'
201728                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
201729                                     ,p_token_2                 => 'LINE_TYPE_NAME'
201730                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
201731                                                                              l_component_type
201732                                                                             ,l_component_code
201733                                                                             ,l_component_type_code
201734                                                                             ,l_component_appl_id
201735                                                                             ,l_amb_context_code
201736                                                                             ,l_entity_code
201737                                                                             ,l_event_class_code
201738                                                                            )
201739                                     ,p_token_3                 => 'OWNER'
201740                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
201741                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
201742                                                                           ,p_lookup_code    => l_component_type_code
201743                                                                          )
201744                                     ,p_token_4                 => 'PRODUCT_NAME'
201745                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
201746                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
201747                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
201748                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
201749                                     ,p_ae_header_id            =>  NULL
201750                                        );
201751 
201752         IF (C_LEVEL_ERROR>= g_log_level) THEN
201753                  trace
201754                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
201755                       ,p_level    => C_LEVEL_ERROR
201756                       ,p_module   => l_log_module);
201757         END IF;
201758       END IF;
201759    END IF;
201760    --
201761    --
201762    ------------------------------------------------------------------------------------------------
201763    -- 4219869 Business Flow
201764    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
201765    -- Prior Entry.  Currently, the following code is always generated.
201766    ------------------------------------------------------------------------------------------------
201767    XLA_AE_LINES_PKG.ValidateCurrentLine;
201768 
201769    ------------------------------------------------------------------------------------
201770    -- 4219869 Business Flow
201771    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
201772    ------------------------------------------------------------------------------------
201773    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
201774 
201775    ----------------------------------------------------------------------------------
201776    -- 4219869 Business Flow
201777    -- Update journal entry status -- Need to generate this within IF <condition>
201778    ----------------------------------------------------------------------------------
201779    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
201780          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
201781          ,p_balance_type_code => l_balance_type_code
201782          );
201783 
201784    -------------------------------------------------------------------------------------------
201785    -- 4262811 - Generate the Accrual Reversal lines
201786    -------------------------------------------------------------------------------------------
201787    BEGIN
201788       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
201789                               (g_array_event(p_event_id).array_value_num('header_index'));
201790       IF l_acc_rev_flag IS NULL THEN
201791          l_acc_rev_flag := 'N';
201792       END IF;
201793    EXCEPTION
201794       WHEN OTHERS THEN
201795          l_acc_rev_flag := 'N';
201796    END;
201797    --
201798    IF (l_acc_rev_flag = 'Y') THEN
201799 
201800        -- 4645092  ------------------------------------------------------------------------------
201801        -- To allow MPA report to determine if it should generate report process
201802        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
201803        ------------------------------------------------------------------------------------------
201804 
201805        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
201806        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
201807    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
201808    -- call ADRs
201809    -- Bug 4922099
201810    --
201811    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
201812         (NVL(l_actual_upg_option, 'N') = 'O') OR
201813         (NVL(l_enc_upg_option, 'N') = 'O')
201814       )
201815    THEN
201816    NULL;
201817    --
201818    --
201819    
201820   l_ccid := AcctDerRule_6(
201821            p_application_id           => p_application_id
201822          , p_ae_header_id             => l_ae_header_id 
201823 , p_source_11 => p_source_11
201824          , x_transaction_coa_id       => l_adr_transaction_coa_id
201825          , x_accounting_coa_id        => l_adr_accounting_coa_id
201826          , x_value_type_code          => l_adr_value_type_code
201827          , p_side                     => 'NA'
201828    );
201829 
201830    xla_ae_lines_pkg.set_ccid(
201831     p_code_combination_id          => l_ccid
201832   , p_value_type_code              => l_adr_value_type_code
201833   , p_transaction_coa_id           => l_adr_transaction_coa_id
201834   , p_accounting_coa_id            => l_adr_accounting_coa_id
201835   , p_adr_code                     => 'CST_DEFAULT'
201836   , p_adr_type_code                => 'S'
201837   , p_component_type               => l_component_type
201838   , p_component_code               => l_component_code
201839   , p_component_type_code          => l_component_type_code
201840   , p_component_appl_id            => l_component_appl_id
201841   , p_amb_context_code             => l_amb_context_code
201842   , p_side                         => 'NA'
201843   );
201844 
201845 
201846    --
201847    --
201848    END IF;
201849 
201850        --
201851        -- Update the line information that should be overwritten
201852        --
201853        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
201854                                          p_header_num   => 1);
201855        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
201856 
201857        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
201858 
201859        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
201860           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
201861        END IF;
201862 
201863       --
201864       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
201865       --
201866       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
201867           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
201868       ELSE
201869           ---------------------------------------------------------------------------------------------------
201870           -- 4262811a Switch Sign
201871           ---------------------------------------------------------------------------------------------------
201872           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
201873           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
201874                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
201875           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
201876                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
201877           -- 5132302
201878           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
201879                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
201880 
201881       END IF;
201882 
201883       -- 4955764
201884       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
201885       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
201886 
201887 
201888       XLA_AE_LINES_PKG.ValidateCurrentLine;
201889       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
201890 
201891       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
201892                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
201893                ,p_balance_type_code => l_balance_type_code);
201894 
201895    END IF;
201896 
201897    -----------------------------------------------------------------------------------------
201898    -- 4262811 Multiperiod Accounting
201899    -----------------------------------------------------------------------------------------
201900      -- No MPA option is assigned.
201901 
201902 
201903 END IF;
201904 END IF;
201905 --
201906 
201907 --
201908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201909    trace
201910       (p_msg      => 'END of AcctLineType_368'
201911       ,p_level    => C_LEVEL_PROCEDURE
201912       ,p_module   => l_log_module);
201913 END IF;
201914 --
201915 EXCEPTION
201916   WHEN xla_exceptions_pkg.application_exception THEN
201917       RAISE;
201918   WHEN OTHERS THEN
201919        xla_exceptions_pkg.raise_message
201920            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_368');
201921 END AcctLineType_368;
201922 --
201923 
201924 ---------------------------------------
201925 --
201926 -- PRIVATE FUNCTION
201927 --         AcctLineType_369
201928 --
201929 ---------------------------------------
201930 PROCEDURE AcctLineType_369 (
201931   p_application_id        IN NUMBER
201932  ,p_event_id              IN NUMBER
201933  ,p_calculate_acctd_flag  IN VARCHAR2
201934  ,p_calculate_g_l_flag    IN VARCHAR2
201935  ,p_actual_flag           IN OUT VARCHAR2
201936  ,p_balance_type_code     OUT VARCHAR2
201937  ,p_gain_or_loss_ref      OUT VARCHAR2
201938  
201939 --TRANSACTION_ID
201940  , p_source_1            IN NUMBER
201941 --Item Concatenated Segments
201942  , p_source_2            IN VARCHAR2
201943 --Transaction Quantity
201944  , p_source_3            IN NUMBER
201945 --Transaction Unit of Measure Code
201946  , p_source_4            IN VARCHAR2
201947 --Inventory Transaction Type Description
201948  , p_source_5            IN VARCHAR2
201949 --Cost Management Default Account
201950  , p_source_11            IN NUMBER
201951 --DISTRIBUTION_IDENTIFIER
201952  , p_source_84            IN NUMBER
201953 --Distribution Type
201954  , p_source_85            IN VARCHAR2
201955  , p_source_85_meaning    IN VARCHAR2
201956 --Entered Currency Code
201957  , p_source_88            IN VARCHAR2
201958 --Entered Amount
201959  , p_source_91            IN NUMBER
201960 --Currency Conversion Date
201961  , p_source_92            IN DATE
201962 --Currency Conversion Rate
201963  , p_source_93            IN NUMBER
201964 --Currency Conversion Type
201965  , p_source_94            IN VARCHAR2
201966 --Accounted Amount
201967  , p_source_95            IN NUMBER
201968 --Accounting Line Type
201969  , p_source_97            IN NUMBER
201970 )
201971 IS
201972 
201973 l_component_type              VARCHAR2(80);
201974 l_component_code              VARCHAR2(30);
201975 l_component_type_code         VARCHAR2(1);
201976 l_component_appl_id           INTEGER;
201977 l_amb_context_code            VARCHAR2(30);
201978 l_entity_code                 VARCHAR2(30);
201979 l_event_class_code            VARCHAR2(30);
201980 l_ae_header_id                NUMBER;
201981 l_event_type_code             VARCHAR2(30);
201982 l_line_definition_code        VARCHAR2(30);
201983 l_line_definition_owner_code  VARCHAR2(1);
201984 --
201985 -- adr variables
201986 l_segment                     VARCHAR2(30);
201987 l_ccid                        NUMBER;
201988 l_adr_transaction_coa_id      NUMBER;
201989 l_adr_accounting_coa_id       NUMBER;
201990 l_adr_flexfield_segment_code  VARCHAR2(30);
201991 l_adr_flex_value_set_id       NUMBER;
201992 l_adr_value_type_code         VARCHAR2(30);
201993 l_adr_value_combination_id    NUMBER;
201994 l_adr_value_segment_code      VARCHAR2(30);
201995 
201996 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
201997 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
201998 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
201999 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
202000 
202001 -- 4262811 Variables ------------------------------------------------------------------------------------------
202002 l_entered_amt_idx             NUMBER;
202003 l_accted_amt_idx              NUMBER;
202004 l_acc_rev_flag                VARCHAR2(1);
202005 l_accrual_line_num            NUMBER;
202006 l_tmp_amt                     NUMBER;
202007 l_acc_rev_natural_side_code   VARCHAR2(1);
202008 
202009 l_num_entries                 NUMBER;
202010 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
202011 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
202012 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
202013 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
202014 l_recog_line_1                NUMBER;
202015 l_recog_line_2                NUMBER;
202016 
202017 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
202018 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
202019 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
202020 
202021 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
202022 
202023 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
202024 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
202025 
202026 ---------------------------------------------------------------------------------------------------------------
202027 
202028 
202029 --
202030 -- bulk performance
202031 --
202032 l_balance_type_code           VARCHAR2(1);
202033 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
202034 l_log_module                  VARCHAR2(240);
202035 
202036 --
202037 -- Upgrade strategy
202038 --
202039 l_actual_upg_option           VARCHAR2(1);
202040 l_enc_upg_option           VARCHAR2(1);
202041 
202042 --
202043 BEGIN
202044 --
202045 IF g_log_enabled THEN
202046       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_369';
202047 END IF;
202048 --
202049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202050 
202051       trace
202052          (p_msg      => 'BEGIN of AcctLineType_369'
202053          ,p_level    => C_LEVEL_PROCEDURE
202054          ,p_module   => l_log_module);
202055 
202056 END IF;
202057 --
202058 l_component_type             := 'AMB_JLT';
202059 l_component_code             := 'OFFSET';
202060 l_component_type_code        := 'S';
202061 l_component_appl_id          :=  707;
202062 l_amb_context_code           := 'DEFAULT';
202063 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
202064 l_event_class_code           := 'WIP_MTL';
202065 l_event_type_code            := 'WIP_ASSEMBLY_COMPLETION';
202066 l_line_definition_owner_code := 'S';
202067 l_line_definition_code       := 'PI_WIP_ASSEMBLY_COMPLETION';
202068 --
202069 l_balance_type_code          := 'A';
202070 l_segment                     := NULL;
202071 l_ccid                        := NULL;
202072 l_adr_transaction_coa_id      := NULL;
202073 l_adr_accounting_coa_id       := NULL;
202074 l_adr_flexfield_segment_code  := NULL;
202075 l_adr_flex_value_set_id       := NULL;
202076 l_adr_value_type_code         := NULL;
202077 l_adr_value_combination_id    := NULL;
202078 l_adr_value_segment_code      := NULL;
202079 
202080 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
202081 l_bflow_class_code           := '';    -- 4219869 Business Flow
202082 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
202083 l_budgetary_control_flag     := 'N';
202084 
202085 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
202086 l_bflow_applied_to_amt       := NULL; -- 5132302
202087 l_entered_amt_idx            := NULL;          -- 4262811
202088 l_accted_amt_idx             := NULL;          -- 4262811
202089 l_acc_rev_flag               := NULL;          -- 4262811
202090 l_accrual_line_num           := NULL;          -- 4262811
202091 l_tmp_amt                    := NULL;          -- 4262811
202092 --
202093  
202094 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
202095     l_balance_type_code <> 'B' THEN
202096 IF NVL(p_source_97,9E125) =  2
202097  THEN 
202098 
202099    --
202100    XLA_AE_LINES_PKG.SetNewLine;
202101 
202102    p_balance_type_code          := l_balance_type_code;
202103    -- set the flag so later we will know whether the gain loss line needs to be created
202104    
202105    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
202106      p_actual_flag :='A';
202107    END IF;
202108 
202109    --
202110    -- bulk performance
202111    --
202112    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
202113                                       p_header_num   => 0); -- 4262811
202114    --
202115    -- set accounting line options
202116    --
202117    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
202118            p_natural_side_code          => 'D'
202119          , p_gain_or_loss_flag          => 'N'
202120          , p_gl_transfer_mode_code      => 'S'
202121          , p_acct_entry_type_code       => 'A'
202122          , p_switch_side_flag           => 'Y'
202123          , p_merge_duplicate_code       => 'N'
202124          );
202125    --
202126    l_acc_rev_natural_side_code := 'C';  -- 4262811
202127    -- 
202128    --
202129    -- set accounting line type info
202130    --
202131    xla_ae_lines_pkg.SetAcctLineType
202132       (p_component_type             => l_component_type
202133       ,p_event_type_code            => l_event_type_code
202134       ,p_line_definition_owner_code => l_line_definition_owner_code
202135       ,p_line_definition_code       => l_line_definition_code
202136       ,p_accounting_line_code       => l_component_code
202137       ,p_accounting_line_type_code  => l_component_type_code
202138       ,p_accounting_line_appl_id    => l_component_appl_id
202139       ,p_amb_context_code           => l_amb_context_code
202140       ,p_entity_code                => l_entity_code
202141       ,p_event_class_code           => l_event_class_code);
202142    --
202143    -- set accounting class
202144    --
202145    xla_ae_lines_pkg.SetAcctClass(
202146            p_accounting_class_code  => 'OFFSET'
202147          , p_ae_header_id           => l_ae_header_id
202148          );
202149 
202150    --
202151    -- set rounding class
202152    --
202153    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
202154                       'OFFSET';
202155 
202156    --
202157    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
202158    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
202159    --
202160    -- bulk performance
202161    --
202162    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
202163 
202164    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
202165       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
202166 
202167    -- 4955764
202168    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
202169       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
202170 
202171    -- 4458381 Public Sector Enh
202172    
202173    --
202174    -- set accounting attributes for the line type
202175    --
202176    l_entered_amt_idx := 3;
202177    l_accted_amt_idx  := 8;
202178    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
202179    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
202180    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
202181    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
202182    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
202183    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
202184    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
202185    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
202186    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
202187    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
202188    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
202189    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
202190    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
202191    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
202192    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
202193    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
202194    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
202195 
202196    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
202197    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
202198 
202199    ---------------------------------------------------------------------------------------------------------------
202200    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
202201    ---------------------------------------------------------------------------------------------------------------
202202    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
202203 
202204    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
202205    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
202206 
202207    IF xla_accounting_cache_pkg.GetValueChar
202208          (p_source_code         => 'LEDGER_CATEGORY_CODE'
202209          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
202210    AND l_bflow_method_code = 'PRIOR_ENTRY'
202211 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
202212    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
202213          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
202214        )
202215    THEN
202216          xla_ae_lines_pkg.BflowUpgEntry
202217            (p_business_method_code    => l_bflow_method_code
202218            ,p_business_class_code     => l_bflow_class_code
202219            ,p_balance_type            => l_balance_type_code);
202220    ELSE
202221       NULL;
202222 -- No business flow processing for business flow method of NONE.
202223    END IF;
202224 
202225    --
202226    -- call analytical criteria
202227    --
202228    
202229    --
202230    -- call description
202231    --
202232    
202233 xla_ae_lines_pkg.SetLineDescription(
202234    p_ae_header_id => l_ae_header_id
202235   ,p_description  => Description_1 (
202236      p_application_id         => p_application_id
202237    , p_ae_header_id           => l_ae_header_id 
202238 , p_source_1 => p_source_1
202239 , p_source_2 => p_source_2
202240 , p_source_3 => p_source_3
202241 , p_source_4 => p_source_4
202242 , p_source_5 => p_source_5
202243    )
202244 );
202245 
202246 
202247    --
202248    -- call ADRs
202249    -- Bug 4922099
202250    --
202251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
202252         (NVL(l_actual_upg_option, 'N') = 'O') OR
202253         (NVL(l_enc_upg_option, 'N') = 'O')
202254       )
202255    THEN
202256    NULL;
202257    --
202258    --
202259    
202260   l_ccid := AcctDerRule_6(
202261            p_application_id           => p_application_id
202262          , p_ae_header_id             => l_ae_header_id 
202263 , p_source_11 => p_source_11
202264          , x_transaction_coa_id       => l_adr_transaction_coa_id
202265          , x_accounting_coa_id        => l_adr_accounting_coa_id
202266          , x_value_type_code          => l_adr_value_type_code
202267          , p_side                     => 'NA'
202268    );
202269 
202270    xla_ae_lines_pkg.set_ccid(
202271     p_code_combination_id          => l_ccid
202272   , p_value_type_code              => l_adr_value_type_code
202273   , p_transaction_coa_id           => l_adr_transaction_coa_id
202274   , p_accounting_coa_id            => l_adr_accounting_coa_id
202275   , p_adr_code                     => 'CST_DEFAULT'
202276   , p_adr_type_code                => 'S'
202277   , p_component_type               => l_component_type
202278   , p_component_code               => l_component_code
202279   , p_component_type_code          => l_component_type_code
202280   , p_component_appl_id            => l_component_appl_id
202281   , p_amb_context_code             => l_amb_context_code
202282   , p_side                         => 'NA'
202283   );
202284 
202285 
202286    --
202287    --
202288    END IF;
202289    --
202290    -- Bug 4922099
202291    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
202292           (NVL(l_enc_upg_option, 'N') = 'O')
202293         ) AND
202294         (l_bflow_method_code = 'PRIOR_ENTRY')
202295       )
202296    THEN
202297       IF
202298       --
202299       1 = 2
202300       --
202301       THEN
202302       xla_accounting_err_pkg.build_message
202303                                     (p_appli_s_name            => 'XLA'
202304                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
202305                                     ,p_token_1                 => 'LINE_NUMBER'
202306                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
202307                                     ,p_token_2                 => 'LINE_TYPE_NAME'
202308                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
202309                                                                              l_component_type
202310                                                                             ,l_component_code
202311                                                                             ,l_component_type_code
202312                                                                             ,l_component_appl_id
202313                                                                             ,l_amb_context_code
202314                                                                             ,l_entity_code
202315                                                                             ,l_event_class_code
202316                                                                            )
202317                                     ,p_token_3                 => 'OWNER'
202318                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
202319                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
202320                                                                           ,p_lookup_code    => l_component_type_code
202321                                                                          )
202322                                     ,p_token_4                 => 'PRODUCT_NAME'
202323                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
202324                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
202325                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
202326                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
202327                                     ,p_ae_header_id            =>  NULL
202328                                        );
202329 
202330         IF (C_LEVEL_ERROR>= g_log_level) THEN
202331                  trace
202332                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
202333                       ,p_level    => C_LEVEL_ERROR
202334                       ,p_module   => l_log_module);
202335         END IF;
202336       END IF;
202337    END IF;
202338    --
202339    --
202340    ------------------------------------------------------------------------------------------------
202341    -- 4219869 Business Flow
202342    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
202343    -- Prior Entry.  Currently, the following code is always generated.
202344    ------------------------------------------------------------------------------------------------
202345    XLA_AE_LINES_PKG.ValidateCurrentLine;
202346 
202347    ------------------------------------------------------------------------------------
202348    -- 4219869 Business Flow
202349    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
202350    ------------------------------------------------------------------------------------
202351    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
202352 
202353    ----------------------------------------------------------------------------------
202354    -- 4219869 Business Flow
202355    -- Update journal entry status -- Need to generate this within IF <condition>
202356    ----------------------------------------------------------------------------------
202357    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
202358          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
202359          ,p_balance_type_code => l_balance_type_code
202360          );
202361 
202362    -------------------------------------------------------------------------------------------
202363    -- 4262811 - Generate the Accrual Reversal lines
202364    -------------------------------------------------------------------------------------------
202365    BEGIN
202366       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
202367                               (g_array_event(p_event_id).array_value_num('header_index'));
202368       IF l_acc_rev_flag IS NULL THEN
202369          l_acc_rev_flag := 'N';
202370       END IF;
202371    EXCEPTION
202372       WHEN OTHERS THEN
202373          l_acc_rev_flag := 'N';
202374    END;
202375    --
202376    IF (l_acc_rev_flag = 'Y') THEN
202377 
202378        -- 4645092  ------------------------------------------------------------------------------
202379        -- To allow MPA report to determine if it should generate report process
202380        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
202381        ------------------------------------------------------------------------------------------
202382 
202383        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
202384        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
202385    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
202386    -- call ADRs
202387    -- Bug 4922099
202388    --
202389    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
202390         (NVL(l_actual_upg_option, 'N') = 'O') OR
202391         (NVL(l_enc_upg_option, 'N') = 'O')
202392       )
202393    THEN
202394    NULL;
202395    --
202396    --
202397    
202398   l_ccid := AcctDerRule_6(
202399            p_application_id           => p_application_id
202400          , p_ae_header_id             => l_ae_header_id 
202401 , p_source_11 => p_source_11
202402          , x_transaction_coa_id       => l_adr_transaction_coa_id
202403          , x_accounting_coa_id        => l_adr_accounting_coa_id
202404          , x_value_type_code          => l_adr_value_type_code
202405          , p_side                     => 'NA'
202406    );
202407 
202408    xla_ae_lines_pkg.set_ccid(
202409     p_code_combination_id          => l_ccid
202410   , p_value_type_code              => l_adr_value_type_code
202411   , p_transaction_coa_id           => l_adr_transaction_coa_id
202412   , p_accounting_coa_id            => l_adr_accounting_coa_id
202413   , p_adr_code                     => 'CST_DEFAULT'
202414   , p_adr_type_code                => 'S'
202415   , p_component_type               => l_component_type
202416   , p_component_code               => l_component_code
202417   , p_component_type_code          => l_component_type_code
202418   , p_component_appl_id            => l_component_appl_id
202419   , p_amb_context_code             => l_amb_context_code
202420   , p_side                         => 'NA'
202421   );
202422 
202423 
202424    --
202425    --
202426    END IF;
202427 
202428        --
202429        -- Update the line information that should be overwritten
202430        --
202431        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
202432                                          p_header_num   => 1);
202433        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
202434 
202435        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
202436 
202437        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
202438           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
202439        END IF;
202440 
202441       --
202442       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
202443       --
202444       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
202445           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
202446       ELSE
202447           ---------------------------------------------------------------------------------------------------
202448           -- 4262811a Switch Sign
202449           ---------------------------------------------------------------------------------------------------
202450           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
202451           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
202452                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
202453           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
202454                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
202455           -- 5132302
202456           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
202457                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
202458 
202459       END IF;
202460 
202461       -- 4955764
202462       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
202463       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
202464 
202465 
202466       XLA_AE_LINES_PKG.ValidateCurrentLine;
202467       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
202468 
202469       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
202470                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
202471                ,p_balance_type_code => l_balance_type_code);
202472 
202473    END IF;
202474 
202475    -----------------------------------------------------------------------------------------
202476    -- 4262811 Multiperiod Accounting
202477    -----------------------------------------------------------------------------------------
202478      -- No MPA option is assigned.
202479 
202480 
202481 END IF;
202482 END IF;
202483 --
202484 
202485 --
202486 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202487    trace
202488       (p_msg      => 'END of AcctLineType_369'
202489       ,p_level    => C_LEVEL_PROCEDURE
202490       ,p_module   => l_log_module);
202491 END IF;
202492 --
202493 EXCEPTION
202494   WHEN xla_exceptions_pkg.application_exception THEN
202495       RAISE;
202496   WHEN OTHERS THEN
202497        xla_exceptions_pkg.raise_message
202498            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_369');
202499 END AcctLineType_369;
202500 --
202501 
202502 ---------------------------------------
202503 --
202504 -- PRIVATE FUNCTION
202505 --         AcctLineType_370
202506 --
202507 ---------------------------------------
202508 PROCEDURE AcctLineType_370 (
202509   p_application_id        IN NUMBER
202510  ,p_event_id              IN NUMBER
202511  ,p_calculate_acctd_flag  IN VARCHAR2
202512  ,p_calculate_g_l_flag    IN VARCHAR2
202513  ,p_actual_flag           IN OUT VARCHAR2
202514  ,p_balance_type_code     OUT VARCHAR2
202515  ,p_gain_or_loss_ref      OUT VARCHAR2
202516  
202517 --Cost Management Default Account
202518  , p_source_11            IN NUMBER
202519 --DISTRIBUTION_IDENTIFIER
202520  , p_source_84            IN NUMBER
202521 --Distribution Type
202522  , p_source_85            IN VARCHAR2
202523  , p_source_85_meaning    IN VARCHAR2
202524 --Entered Currency Code
202525  , p_source_88            IN VARCHAR2
202526 --Entered Amount
202527  , p_source_91            IN NUMBER
202528 --Currency Conversion Date
202529  , p_source_92            IN DATE
202530 --Currency Conversion Rate
202531  , p_source_93            IN NUMBER
202532 --Accounted Amount
202533  , p_source_95            IN NUMBER
202534 --Accounting Line Type
202535  , p_source_97            IN NUMBER
202536 )
202537 IS
202538 
202539 l_component_type              VARCHAR2(80);
202540 l_component_code              VARCHAR2(30);
202541 l_component_type_code         VARCHAR2(1);
202542 l_component_appl_id           INTEGER;
202543 l_amb_context_code            VARCHAR2(30);
202544 l_entity_code                 VARCHAR2(30);
202545 l_event_class_code            VARCHAR2(30);
202546 l_ae_header_id                NUMBER;
202547 l_event_type_code             VARCHAR2(30);
202548 l_line_definition_code        VARCHAR2(30);
202549 l_line_definition_owner_code  VARCHAR2(1);
202550 --
202551 -- adr variables
202552 l_segment                     VARCHAR2(30);
202553 l_ccid                        NUMBER;
202554 l_adr_transaction_coa_id      NUMBER;
202555 l_adr_accounting_coa_id       NUMBER;
202556 l_adr_flexfield_segment_code  VARCHAR2(30);
202557 l_adr_flex_value_set_id       NUMBER;
202558 l_adr_value_type_code         VARCHAR2(30);
202559 l_adr_value_combination_id    NUMBER;
202560 l_adr_value_segment_code      VARCHAR2(30);
202561 
202562 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
202563 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
202564 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
202565 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
202566 
202567 -- 4262811 Variables ------------------------------------------------------------------------------------------
202568 l_entered_amt_idx             NUMBER;
202569 l_accted_amt_idx              NUMBER;
202570 l_acc_rev_flag                VARCHAR2(1);
202571 l_accrual_line_num            NUMBER;
202572 l_tmp_amt                     NUMBER;
202573 l_acc_rev_natural_side_code   VARCHAR2(1);
202574 
202575 l_num_entries                 NUMBER;
202576 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
202577 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
202578 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
202579 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
202580 l_recog_line_1                NUMBER;
202581 l_recog_line_2                NUMBER;
202582 
202583 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
202584 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
202585 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
202586 
202587 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
202588 
202589 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
202590 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
202591 
202592 ---------------------------------------------------------------------------------------------------------------
202593 
202594 
202595 --
202596 -- bulk performance
202597 --
202598 l_balance_type_code           VARCHAR2(1);
202599 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
202600 l_log_module                  VARCHAR2(240);
202601 
202602 --
202603 -- Upgrade strategy
202604 --
202605 l_actual_upg_option           VARCHAR2(1);
202606 l_enc_upg_option           VARCHAR2(1);
202607 
202608 --
202609 BEGIN
202610 --
202611 IF g_log_enabled THEN
202612       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_370';
202613 END IF;
202614 --
202615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202616 
202617       trace
202618          (p_msg      => 'BEGIN of AcctLineType_370'
202619          ,p_level    => C_LEVEL_PROCEDURE
202620          ,p_module   => l_log_module);
202621 
202622 END IF;
202623 --
202624 l_component_type             := 'AMB_JLT';
202625 l_component_code             := 'OVERHEAD_ABSORPTION';
202626 l_component_type_code        := 'S';
202627 l_component_appl_id          :=  707;
202628 l_amb_context_code           := 'DEFAULT';
202629 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
202630 l_event_class_code           := 'OSP';
202631 l_event_type_code            := 'IPV_TRANSFER_WO';
202632 l_line_definition_owner_code := 'S';
202633 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
202634 --
202635 l_balance_type_code          := 'A';
202636 l_segment                     := NULL;
202637 l_ccid                        := NULL;
202638 l_adr_transaction_coa_id      := NULL;
202639 l_adr_accounting_coa_id       := NULL;
202640 l_adr_flexfield_segment_code  := NULL;
202641 l_adr_flex_value_set_id       := NULL;
202642 l_adr_value_type_code         := NULL;
202643 l_adr_value_combination_id    := NULL;
202644 l_adr_value_segment_code      := NULL;
202645 
202646 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
202647 l_bflow_class_code           := '';    -- 4219869 Business Flow
202648 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
202649 l_budgetary_control_flag     := 'N';
202650 
202651 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
202652 l_bflow_applied_to_amt       := NULL; -- 5132302
202653 l_entered_amt_idx            := NULL;          -- 4262811
202654 l_accted_amt_idx             := NULL;          -- 4262811
202655 l_acc_rev_flag               := NULL;          -- 4262811
202656 l_accrual_line_num           := NULL;          -- 4262811
202657 l_tmp_amt                    := NULL;          -- 4262811
202658 --
202659  
202660 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
202661     l_balance_type_code <> 'B' THEN
202662 IF NVL(p_source_97,9E125) =  3
202663  THEN 
202664 
202665    --
202666    XLA_AE_LINES_PKG.SetNewLine;
202667 
202668    p_balance_type_code          := l_balance_type_code;
202669    -- set the flag so later we will know whether the gain loss line needs to be created
202670    
202671    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
202672      p_actual_flag :='A';
202673    END IF;
202674 
202675    --
202676    -- bulk performance
202677    --
202678    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
202679                                       p_header_num   => 0); -- 4262811
202680    --
202681    -- set accounting line options
202682    --
202683    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
202684            p_natural_side_code          => 'D'
202685          , p_gain_or_loss_flag          => 'N'
202686          , p_gl_transfer_mode_code      => 'S'
202687          , p_acct_entry_type_code       => 'A'
202688          , p_switch_side_flag           => 'Y'
202689          , p_merge_duplicate_code       => 'N'
202690          );
202691    --
202692    l_acc_rev_natural_side_code := 'C';  -- 4262811
202693    -- 
202694    --
202695    -- set accounting line type info
202696    --
202697    xla_ae_lines_pkg.SetAcctLineType
202698       (p_component_type             => l_component_type
202699       ,p_event_type_code            => l_event_type_code
202700       ,p_line_definition_owner_code => l_line_definition_owner_code
202701       ,p_line_definition_code       => l_line_definition_code
202702       ,p_accounting_line_code       => l_component_code
202703       ,p_accounting_line_type_code  => l_component_type_code
202704       ,p_accounting_line_appl_id    => l_component_appl_id
202705       ,p_amb_context_code           => l_amb_context_code
202706       ,p_entity_code                => l_entity_code
202707       ,p_event_class_code           => l_event_class_code);
202708    --
202709    -- set accounting class
202710    --
202711    xla_ae_lines_pkg.SetAcctClass(
202712            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
202713          , p_ae_header_id           => l_ae_header_id
202714          );
202715 
202716    --
202717    -- set rounding class
202718    --
202719    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
202720                       'OVERHEAD_ABSORPTION';
202721 
202722    --
202723    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
202724    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
202725    --
202726    -- bulk performance
202727    --
202728    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
202729 
202730    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
202731       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
202732 
202733    -- 4955764
202734    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
202735       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
202736 
202737    -- 4458381 Public Sector Enh
202738    
202739    --
202740    -- set accounting attributes for the line type
202741    --
202742    l_entered_amt_idx := 3;
202743    l_accted_amt_idx  := 8;
202744    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
202745    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
202746    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
202747    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
202748    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
202749    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
202750    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
202751    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
202752    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
202753    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
202754    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
202755    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
202756    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
202757    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
202758    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
202759    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
202760    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
202761 
202762    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
202763    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
202764 
202765    ---------------------------------------------------------------------------------------------------------------
202766    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
202767    ---------------------------------------------------------------------------------------------------------------
202768    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
202769 
202770    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
202771    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
202772 
202773    IF xla_accounting_cache_pkg.GetValueChar
202774          (p_source_code         => 'LEDGER_CATEGORY_CODE'
202775          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
202776    AND l_bflow_method_code = 'PRIOR_ENTRY'
202777 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
202778    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
202779          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
202780        )
202781    THEN
202782          xla_ae_lines_pkg.BflowUpgEntry
202783            (p_business_method_code    => l_bflow_method_code
202784            ,p_business_class_code     => l_bflow_class_code
202785            ,p_balance_type            => l_balance_type_code);
202786    ELSE
202787       NULL;
202788 -- No business flow processing for business flow method of NONE.
202789    END IF;
202790 
202791    --
202792    -- call analytical criteria
202793    --
202794    
202795    --
202796    -- call description
202797    --
202798    -- No description or it is inherited.
202799    --
202800    -- call ADRs
202801    -- Bug 4922099
202802    --
202803    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
202804         (NVL(l_actual_upg_option, 'N') = 'O') OR
202805         (NVL(l_enc_upg_option, 'N') = 'O')
202806       )
202807    THEN
202808    NULL;
202809    --
202810    --
202811    
202812   l_ccid := AcctDerRule_6(
202813            p_application_id           => p_application_id
202814          , p_ae_header_id             => l_ae_header_id 
202815 , p_source_11 => p_source_11
202816          , x_transaction_coa_id       => l_adr_transaction_coa_id
202817          , x_accounting_coa_id        => l_adr_accounting_coa_id
202818          , x_value_type_code          => l_adr_value_type_code
202819          , p_side                     => 'NA'
202820    );
202821 
202822    xla_ae_lines_pkg.set_ccid(
202823     p_code_combination_id          => l_ccid
202824   , p_value_type_code              => l_adr_value_type_code
202825   , p_transaction_coa_id           => l_adr_transaction_coa_id
202826   , p_accounting_coa_id            => l_adr_accounting_coa_id
202827   , p_adr_code                     => 'CST_DEFAULT'
202828   , p_adr_type_code                => 'S'
202829   , p_component_type               => l_component_type
202830   , p_component_code               => l_component_code
202831   , p_component_type_code          => l_component_type_code
202832   , p_component_appl_id            => l_component_appl_id
202833   , p_amb_context_code             => l_amb_context_code
202834   , p_side                         => 'NA'
202835   );
202836 
202837 
202838    --
202839    --
202840    END IF;
202841    --
202842    -- Bug 4922099
202843    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
202844           (NVL(l_enc_upg_option, 'N') = 'O')
202845         ) AND
202846         (l_bflow_method_code = 'PRIOR_ENTRY')
202847       )
202848    THEN
202849       IF
202850       --
202851       1 = 2
202852       --
202853       THEN
202854       xla_accounting_err_pkg.build_message
202855                                     (p_appli_s_name            => 'XLA'
202856                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
202857                                     ,p_token_1                 => 'LINE_NUMBER'
202858                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
202859                                     ,p_token_2                 => 'LINE_TYPE_NAME'
202860                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
202861                                                                              l_component_type
202862                                                                             ,l_component_code
202863                                                                             ,l_component_type_code
202864                                                                             ,l_component_appl_id
202865                                                                             ,l_amb_context_code
202866                                                                             ,l_entity_code
202867                                                                             ,l_event_class_code
202868                                                                            )
202869                                     ,p_token_3                 => 'OWNER'
202870                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
202871                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
202872                                                                           ,p_lookup_code    => l_component_type_code
202873                                                                          )
202874                                     ,p_token_4                 => 'PRODUCT_NAME'
202875                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
202876                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
202877                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
202878                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
202879                                     ,p_ae_header_id            =>  NULL
202880                                        );
202881 
202882         IF (C_LEVEL_ERROR>= g_log_level) THEN
202883                  trace
202884                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
202885                       ,p_level    => C_LEVEL_ERROR
202886                       ,p_module   => l_log_module);
202887         END IF;
202888       END IF;
202889    END IF;
202890    --
202891    --
202892    ------------------------------------------------------------------------------------------------
202893    -- 4219869 Business Flow
202894    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
202895    -- Prior Entry.  Currently, the following code is always generated.
202896    ------------------------------------------------------------------------------------------------
202897    XLA_AE_LINES_PKG.ValidateCurrentLine;
202898 
202899    ------------------------------------------------------------------------------------
202900    -- 4219869 Business Flow
202901    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
202902    ------------------------------------------------------------------------------------
202903    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
202904 
202905    ----------------------------------------------------------------------------------
202906    -- 4219869 Business Flow
202907    -- Update journal entry status -- Need to generate this within IF <condition>
202908    ----------------------------------------------------------------------------------
202909    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
202910          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
202911          ,p_balance_type_code => l_balance_type_code
202912          );
202913 
202914    -------------------------------------------------------------------------------------------
202915    -- 4262811 - Generate the Accrual Reversal lines
202916    -------------------------------------------------------------------------------------------
202917    BEGIN
202918       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
202919                               (g_array_event(p_event_id).array_value_num('header_index'));
202920       IF l_acc_rev_flag IS NULL THEN
202921          l_acc_rev_flag := 'N';
202922       END IF;
202923    EXCEPTION
202924       WHEN OTHERS THEN
202925          l_acc_rev_flag := 'N';
202926    END;
202927    --
202928    IF (l_acc_rev_flag = 'Y') THEN
202929 
202930        -- 4645092  ------------------------------------------------------------------------------
202931        -- To allow MPA report to determine if it should generate report process
202932        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
202933        ------------------------------------------------------------------------------------------
202934 
202935        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
202936        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
202937    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
202938    -- call ADRs
202939    -- Bug 4922099
202940    --
202941    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
202942         (NVL(l_actual_upg_option, 'N') = 'O') OR
202943         (NVL(l_enc_upg_option, 'N') = 'O')
202944       )
202945    THEN
202946    NULL;
202947    --
202948    --
202949    
202950   l_ccid := AcctDerRule_6(
202951            p_application_id           => p_application_id
202952          , p_ae_header_id             => l_ae_header_id 
202953 , p_source_11 => p_source_11
202954          , x_transaction_coa_id       => l_adr_transaction_coa_id
202955          , x_accounting_coa_id        => l_adr_accounting_coa_id
202956          , x_value_type_code          => l_adr_value_type_code
202957          , p_side                     => 'NA'
202958    );
202959 
202960    xla_ae_lines_pkg.set_ccid(
202961     p_code_combination_id          => l_ccid
202962   , p_value_type_code              => l_adr_value_type_code
202963   , p_transaction_coa_id           => l_adr_transaction_coa_id
202964   , p_accounting_coa_id            => l_adr_accounting_coa_id
202965   , p_adr_code                     => 'CST_DEFAULT'
202966   , p_adr_type_code                => 'S'
202967   , p_component_type               => l_component_type
202968   , p_component_code               => l_component_code
202969   , p_component_type_code          => l_component_type_code
202970   , p_component_appl_id            => l_component_appl_id
202971   , p_amb_context_code             => l_amb_context_code
202972   , p_side                         => 'NA'
202973   );
202974 
202975 
202976    --
202977    --
202978    END IF;
202979 
202980        --
202981        -- Update the line information that should be overwritten
202982        --
202983        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
202984                                          p_header_num   => 1);
202985        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
202986 
202987        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
202988 
202989        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
202990           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
202991        END IF;
202992 
202993       --
202994       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
202995       --
202996       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
202997           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
202998       ELSE
202999           ---------------------------------------------------------------------------------------------------
203000           -- 4262811a Switch Sign
203001           ---------------------------------------------------------------------------------------------------
203002           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
203003           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
203004                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
203005           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
203006                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
203007           -- 5132302
203008           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
203009                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
203010 
203011       END IF;
203012 
203013       -- 4955764
203014       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
203015       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
203016 
203017 
203018       XLA_AE_LINES_PKG.ValidateCurrentLine;
203019       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
203020 
203021       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
203022                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
203023                ,p_balance_type_code => l_balance_type_code);
203024 
203025    END IF;
203026 
203027    -----------------------------------------------------------------------------------------
203028    -- 4262811 Multiperiod Accounting
203029    -----------------------------------------------------------------------------------------
203030      -- No MPA option is assigned.
203031 
203032 
203033 END IF;
203034 END IF;
203035 --
203036 
203037 --
203038 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203039    trace
203040       (p_msg      => 'END of AcctLineType_370'
203041       ,p_level    => C_LEVEL_PROCEDURE
203042       ,p_module   => l_log_module);
203043 END IF;
203044 --
203045 EXCEPTION
203046   WHEN xla_exceptions_pkg.application_exception THEN
203047       RAISE;
203048   WHEN OTHERS THEN
203049        xla_exceptions_pkg.raise_message
203050            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_370');
203051 END AcctLineType_370;
203052 --
203053 
203054 ---------------------------------------
203055 --
203056 -- PRIVATE FUNCTION
203057 --         AcctLineType_371
203058 --
203059 ---------------------------------------
203060 PROCEDURE AcctLineType_371 (
203061   p_application_id        IN NUMBER
203062  ,p_event_id              IN NUMBER
203063  ,p_calculate_acctd_flag  IN VARCHAR2
203064  ,p_calculate_g_l_flag    IN VARCHAR2
203065  ,p_actual_flag           IN OUT VARCHAR2
203066  ,p_balance_type_code     OUT VARCHAR2
203067  ,p_gain_or_loss_ref      OUT VARCHAR2
203068  
203069 --TRANSACTION_ID
203070  , p_source_1            IN NUMBER
203071 --Transaction Unit of Measure Code
203072  , p_source_4            IN VARCHAR2
203073 --Primary Quantity of the Transaction
203074  , p_source_6            IN NUMBER
203075 --WIP Transaction Type
203076  , p_source_7            IN NUMBER
203077  , p_source_7_meaning    IN VARCHAR2
203078 --Cost Management Default Account
203079  , p_source_11            IN NUMBER
203080 --DISTRIBUTION_IDENTIFIER
203081  , p_source_84            IN NUMBER
203082 --Distribution Type
203083  , p_source_85            IN VARCHAR2
203084  , p_source_85_meaning    IN VARCHAR2
203085 --Entered Currency Code
203086  , p_source_88            IN VARCHAR2
203087 --Entered Amount
203088  , p_source_91            IN NUMBER
203089 --Currency Conversion Date
203090  , p_source_92            IN DATE
203091 --Currency Conversion Rate
203092  , p_source_93            IN NUMBER
203093 --Accounted Amount
203094  , p_source_95            IN NUMBER
203095 --Accounting Line Type
203096  , p_source_97            IN NUMBER
203097 )
203098 IS
203099 
203100 l_component_type              VARCHAR2(80);
203101 l_component_code              VARCHAR2(30);
203102 l_component_type_code         VARCHAR2(1);
203103 l_component_appl_id           INTEGER;
203104 l_amb_context_code            VARCHAR2(30);
203105 l_entity_code                 VARCHAR2(30);
203106 l_event_class_code            VARCHAR2(30);
203107 l_ae_header_id                NUMBER;
203108 l_event_type_code             VARCHAR2(30);
203109 l_line_definition_code        VARCHAR2(30);
203110 l_line_definition_owner_code  VARCHAR2(1);
203111 --
203112 -- adr variables
203113 l_segment                     VARCHAR2(30);
203114 l_ccid                        NUMBER;
203115 l_adr_transaction_coa_id      NUMBER;
203116 l_adr_accounting_coa_id       NUMBER;
203117 l_adr_flexfield_segment_code  VARCHAR2(30);
203118 l_adr_flex_value_set_id       NUMBER;
203119 l_adr_value_type_code         VARCHAR2(30);
203120 l_adr_value_combination_id    NUMBER;
203121 l_adr_value_segment_code      VARCHAR2(30);
203122 
203123 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
203124 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
203125 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
203126 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
203127 
203128 -- 4262811 Variables ------------------------------------------------------------------------------------------
203129 l_entered_amt_idx             NUMBER;
203130 l_accted_amt_idx              NUMBER;
203131 l_acc_rev_flag                VARCHAR2(1);
203132 l_accrual_line_num            NUMBER;
203133 l_tmp_amt                     NUMBER;
203134 l_acc_rev_natural_side_code   VARCHAR2(1);
203135 
203136 l_num_entries                 NUMBER;
203137 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
203138 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
203139 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
203140 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
203141 l_recog_line_1                NUMBER;
203142 l_recog_line_2                NUMBER;
203143 
203144 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
203145 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
203146 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
203147 
203148 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
203149 
203150 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
203151 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
203152 
203153 ---------------------------------------------------------------------------------------------------------------
203154 
203155 
203156 --
203157 -- bulk performance
203158 --
203159 l_balance_type_code           VARCHAR2(1);
203160 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
203161 l_log_module                  VARCHAR2(240);
203162 
203163 --
203164 -- Upgrade strategy
203165 --
203166 l_actual_upg_option           VARCHAR2(1);
203167 l_enc_upg_option           VARCHAR2(1);
203168 
203169 --
203170 BEGIN
203171 --
203172 IF g_log_enabled THEN
203173       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_371';
203174 END IF;
203175 --
203176 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203177 
203178       trace
203179          (p_msg      => 'BEGIN of AcctLineType_371'
203180          ,p_level    => C_LEVEL_PROCEDURE
203181          ,p_module   => l_log_module);
203182 
203183 END IF;
203184 --
203185 l_component_type             := 'AMB_JLT';
203186 l_component_code             := 'OVERHEAD_ABSORPTION';
203187 l_component_type_code        := 'S';
203188 l_component_appl_id          :=  707;
203189 l_amb_context_code           := 'DEFAULT';
203190 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
203191 l_event_class_code           := 'OSP';
203192 l_event_type_code            := 'OSP';
203193 l_line_definition_owner_code := 'S';
203194 l_line_definition_code       := 'PI_OSP';
203195 --
203196 l_balance_type_code          := 'A';
203197 l_segment                     := NULL;
203198 l_ccid                        := NULL;
203199 l_adr_transaction_coa_id      := NULL;
203200 l_adr_accounting_coa_id       := NULL;
203201 l_adr_flexfield_segment_code  := NULL;
203202 l_adr_flex_value_set_id       := NULL;
203203 l_adr_value_type_code         := NULL;
203204 l_adr_value_combination_id    := NULL;
203205 l_adr_value_segment_code      := NULL;
203206 
203207 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
203208 l_bflow_class_code           := '';    -- 4219869 Business Flow
203209 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
203210 l_budgetary_control_flag     := 'N';
203211 
203212 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
203213 l_bflow_applied_to_amt       := NULL; -- 5132302
203214 l_entered_amt_idx            := NULL;          -- 4262811
203215 l_accted_amt_idx             := NULL;          -- 4262811
203216 l_acc_rev_flag               := NULL;          -- 4262811
203217 l_accrual_line_num           := NULL;          -- 4262811
203218 l_tmp_amt                    := NULL;          -- 4262811
203219 --
203220  
203221 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
203222     l_balance_type_code <> 'B' THEN
203223 IF NVL(p_source_97,9E125) =  3
203224  THEN 
203225 
203226    --
203227    XLA_AE_LINES_PKG.SetNewLine;
203228 
203229    p_balance_type_code          := l_balance_type_code;
203230    -- set the flag so later we will know whether the gain loss line needs to be created
203231    
203232    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
203233      p_actual_flag :='A';
203234    END IF;
203235 
203236    --
203237    -- bulk performance
203238    --
203239    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
203240                                       p_header_num   => 0); -- 4262811
203241    --
203242    -- set accounting line options
203243    --
203244    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
203245            p_natural_side_code          => 'D'
203246          , p_gain_or_loss_flag          => 'N'
203247          , p_gl_transfer_mode_code      => 'S'
203248          , p_acct_entry_type_code       => 'A'
203249          , p_switch_side_flag           => 'Y'
203250          , p_merge_duplicate_code       => 'N'
203251          );
203252    --
203253    l_acc_rev_natural_side_code := 'C';  -- 4262811
203254    -- 
203255    --
203256    -- set accounting line type info
203257    --
203258    xla_ae_lines_pkg.SetAcctLineType
203259       (p_component_type             => l_component_type
203260       ,p_event_type_code            => l_event_type_code
203261       ,p_line_definition_owner_code => l_line_definition_owner_code
203262       ,p_line_definition_code       => l_line_definition_code
203263       ,p_accounting_line_code       => l_component_code
203264       ,p_accounting_line_type_code  => l_component_type_code
203265       ,p_accounting_line_appl_id    => l_component_appl_id
203266       ,p_amb_context_code           => l_amb_context_code
203267       ,p_entity_code                => l_entity_code
203268       ,p_event_class_code           => l_event_class_code);
203269    --
203270    -- set accounting class
203271    --
203272    xla_ae_lines_pkg.SetAcctClass(
203273            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
203274          , p_ae_header_id           => l_ae_header_id
203275          );
203276 
203277    --
203278    -- set rounding class
203279    --
203280    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
203281                       'OVERHEAD_ABSORPTION';
203282 
203283    --
203284    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
203285    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
203286    --
203287    -- bulk performance
203288    --
203289    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
203290 
203291    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
203292       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
203293 
203294    -- 4955764
203295    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
203296       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
203297 
203298    -- 4458381 Public Sector Enh
203299    
203300    --
203301    -- set accounting attributes for the line type
203302    --
203303    l_entered_amt_idx := 3;
203304    l_accted_amt_idx  := 8;
203305    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
203306    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
203307    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
203308    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
203309    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
203310    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
203311    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
203312    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
203313    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
203314    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
203315    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
203316    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
203317    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
203318    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
203319    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
203320    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
203321    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
203322 
203323    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
203324    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
203325 
203326    ---------------------------------------------------------------------------------------------------------------
203327    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
203328    ---------------------------------------------------------------------------------------------------------------
203329    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
203330 
203331    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
203332    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
203333 
203334    IF xla_accounting_cache_pkg.GetValueChar
203335          (p_source_code         => 'LEDGER_CATEGORY_CODE'
203336          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
203337    AND l_bflow_method_code = 'PRIOR_ENTRY'
203338 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
203339    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
203340          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
203341        )
203342    THEN
203343          xla_ae_lines_pkg.BflowUpgEntry
203344            (p_business_method_code    => l_bflow_method_code
203345            ,p_business_class_code     => l_bflow_class_code
203346            ,p_balance_type            => l_balance_type_code);
203347    ELSE
203348       NULL;
203349 -- No business flow processing for business flow method of NONE.
203350    END IF;
203351 
203352    --
203353    -- call analytical criteria
203354    --
203355    
203356    --
203357    -- call description
203358    --
203359    
203360 xla_ae_lines_pkg.SetLineDescription(
203361    p_ae_header_id => l_ae_header_id
203362   ,p_description  => Description_2 (
203363      p_application_id         => p_application_id
203364    , p_ae_header_id           => l_ae_header_id 
203365 , p_source_1 => p_source_1
203366 , p_source_4 => p_source_4
203367 , p_source_6 => p_source_6
203368 , p_source_7 => p_source_7
203369 , p_source_7_meaning => p_source_7_meaning
203370    )
203371 );
203372 
203373 
203374    --
203375    -- call ADRs
203376    -- Bug 4922099
203377    --
203378    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
203379         (NVL(l_actual_upg_option, 'N') = 'O') OR
203380         (NVL(l_enc_upg_option, 'N') = 'O')
203381       )
203382    THEN
203383    NULL;
203384    --
203385    --
203386    
203387   l_ccid := AcctDerRule_6(
203388            p_application_id           => p_application_id
203389          , p_ae_header_id             => l_ae_header_id 
203390 , p_source_11 => p_source_11
203391          , x_transaction_coa_id       => l_adr_transaction_coa_id
203392          , x_accounting_coa_id        => l_adr_accounting_coa_id
203393          , x_value_type_code          => l_adr_value_type_code
203394          , p_side                     => 'NA'
203395    );
203396 
203397    xla_ae_lines_pkg.set_ccid(
203398     p_code_combination_id          => l_ccid
203399   , p_value_type_code              => l_adr_value_type_code
203400   , p_transaction_coa_id           => l_adr_transaction_coa_id
203401   , p_accounting_coa_id            => l_adr_accounting_coa_id
203402   , p_adr_code                     => 'CST_DEFAULT'
203403   , p_adr_type_code                => 'S'
203404   , p_component_type               => l_component_type
203405   , p_component_code               => l_component_code
203406   , p_component_type_code          => l_component_type_code
203407   , p_component_appl_id            => l_component_appl_id
203408   , p_amb_context_code             => l_amb_context_code
203409   , p_side                         => 'NA'
203410   );
203411 
203412 
203413    --
203414    --
203415    END IF;
203416    --
203417    -- Bug 4922099
203418    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
203419           (NVL(l_enc_upg_option, 'N') = 'O')
203420         ) AND
203421         (l_bflow_method_code = 'PRIOR_ENTRY')
203422       )
203423    THEN
203424       IF
203425       --
203426       1 = 2
203427       --
203428       THEN
203429       xla_accounting_err_pkg.build_message
203430                                     (p_appli_s_name            => 'XLA'
203431                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
203432                                     ,p_token_1                 => 'LINE_NUMBER'
203433                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
203434                                     ,p_token_2                 => 'LINE_TYPE_NAME'
203435                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
203436                                                                              l_component_type
203437                                                                             ,l_component_code
203438                                                                             ,l_component_type_code
203439                                                                             ,l_component_appl_id
203440                                                                             ,l_amb_context_code
203441                                                                             ,l_entity_code
203442                                                                             ,l_event_class_code
203443                                                                            )
203444                                     ,p_token_3                 => 'OWNER'
203445                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
203446                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
203447                                                                           ,p_lookup_code    => l_component_type_code
203448                                                                          )
203449                                     ,p_token_4                 => 'PRODUCT_NAME'
203450                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
203451                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
203452                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
203453                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
203454                                     ,p_ae_header_id            =>  NULL
203455                                        );
203456 
203457         IF (C_LEVEL_ERROR>= g_log_level) THEN
203458                  trace
203459                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
203460                       ,p_level    => C_LEVEL_ERROR
203461                       ,p_module   => l_log_module);
203462         END IF;
203463       END IF;
203464    END IF;
203465    --
203466    --
203467    ------------------------------------------------------------------------------------------------
203468    -- 4219869 Business Flow
203469    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
203470    -- Prior Entry.  Currently, the following code is always generated.
203471    ------------------------------------------------------------------------------------------------
203472    XLA_AE_LINES_PKG.ValidateCurrentLine;
203473 
203474    ------------------------------------------------------------------------------------
203475    -- 4219869 Business Flow
203476    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
203477    ------------------------------------------------------------------------------------
203478    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
203479 
203480    ----------------------------------------------------------------------------------
203481    -- 4219869 Business Flow
203482    -- Update journal entry status -- Need to generate this within IF <condition>
203483    ----------------------------------------------------------------------------------
203484    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
203485          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
203486          ,p_balance_type_code => l_balance_type_code
203487          );
203488 
203489    -------------------------------------------------------------------------------------------
203490    -- 4262811 - Generate the Accrual Reversal lines
203491    -------------------------------------------------------------------------------------------
203492    BEGIN
203493       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
203494                               (g_array_event(p_event_id).array_value_num('header_index'));
203495       IF l_acc_rev_flag IS NULL THEN
203496          l_acc_rev_flag := 'N';
203497       END IF;
203498    EXCEPTION
203499       WHEN OTHERS THEN
203500          l_acc_rev_flag := 'N';
203501    END;
203502    --
203503    IF (l_acc_rev_flag = 'Y') THEN
203504 
203505        -- 4645092  ------------------------------------------------------------------------------
203506        -- To allow MPA report to determine if it should generate report process
203507        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
203508        ------------------------------------------------------------------------------------------
203509 
203510        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
203511        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
203512    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
203513    -- call ADRs
203514    -- Bug 4922099
203515    --
203516    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
203517         (NVL(l_actual_upg_option, 'N') = 'O') OR
203518         (NVL(l_enc_upg_option, 'N') = 'O')
203519       )
203520    THEN
203521    NULL;
203522    --
203523    --
203524    
203525   l_ccid := AcctDerRule_6(
203526            p_application_id           => p_application_id
203527          , p_ae_header_id             => l_ae_header_id 
203528 , p_source_11 => p_source_11
203529          , x_transaction_coa_id       => l_adr_transaction_coa_id
203530          , x_accounting_coa_id        => l_adr_accounting_coa_id
203531          , x_value_type_code          => l_adr_value_type_code
203532          , p_side                     => 'NA'
203533    );
203534 
203535    xla_ae_lines_pkg.set_ccid(
203536     p_code_combination_id          => l_ccid
203537   , p_value_type_code              => l_adr_value_type_code
203538   , p_transaction_coa_id           => l_adr_transaction_coa_id
203539   , p_accounting_coa_id            => l_adr_accounting_coa_id
203540   , p_adr_code                     => 'CST_DEFAULT'
203541   , p_adr_type_code                => 'S'
203542   , p_component_type               => l_component_type
203543   , p_component_code               => l_component_code
203544   , p_component_type_code          => l_component_type_code
203545   , p_component_appl_id            => l_component_appl_id
203546   , p_amb_context_code             => l_amb_context_code
203547   , p_side                         => 'NA'
203548   );
203549 
203550 
203551    --
203552    --
203553    END IF;
203554 
203555        --
203556        -- Update the line information that should be overwritten
203557        --
203558        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
203559                                          p_header_num   => 1);
203560        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
203561 
203562        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
203563 
203564        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
203565           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
203566        END IF;
203567 
203568       --
203569       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
203570       --
203571       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
203572           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
203573       ELSE
203574           ---------------------------------------------------------------------------------------------------
203575           -- 4262811a Switch Sign
203576           ---------------------------------------------------------------------------------------------------
203577           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
203578           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
203579                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
203580           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
203581                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
203582           -- 5132302
203583           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
203584                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
203585 
203586       END IF;
203587 
203588       -- 4955764
203589       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
203590       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
203591 
203592 
203593       XLA_AE_LINES_PKG.ValidateCurrentLine;
203594       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
203595 
203596       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
203597                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
203598                ,p_balance_type_code => l_balance_type_code);
203599 
203600    END IF;
203601 
203602    -----------------------------------------------------------------------------------------
203603    -- 4262811 Multiperiod Accounting
203604    -----------------------------------------------------------------------------------------
203605      -- No MPA option is assigned.
203606 
203607 
203608 END IF;
203609 END IF;
203610 --
203611 
203612 --
203613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203614    trace
203615       (p_msg      => 'END of AcctLineType_371'
203616       ,p_level    => C_LEVEL_PROCEDURE
203617       ,p_module   => l_log_module);
203618 END IF;
203619 --
203620 EXCEPTION
203621   WHEN xla_exceptions_pkg.application_exception THEN
203622       RAISE;
203623   WHEN OTHERS THEN
203624        xla_exceptions_pkg.raise_message
203625            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_371');
203626 END AcctLineType_371;
203627 --
203628 
203629 ---------------------------------------
203630 --
203631 -- PRIVATE FUNCTION
203632 --         AcctLineType_372
203633 --
203634 ---------------------------------------
203635 PROCEDURE AcctLineType_372 (
203636   p_application_id        IN NUMBER
203637  ,p_event_id              IN NUMBER
203638  ,p_calculate_acctd_flag  IN VARCHAR2
203639  ,p_calculate_g_l_flag    IN VARCHAR2
203640  ,p_actual_flag           IN OUT VARCHAR2
203641  ,p_balance_type_code     OUT VARCHAR2
203642  ,p_gain_or_loss_ref      OUT VARCHAR2
203643  
203644 --Cost Management Default Account
203645  , p_source_11            IN NUMBER
203646 --DISTRIBUTION_IDENTIFIER
203647  , p_source_84            IN NUMBER
203648 --Distribution Type
203649  , p_source_85            IN VARCHAR2
203650  , p_source_85_meaning    IN VARCHAR2
203651 --Entered Currency Code
203652  , p_source_88            IN VARCHAR2
203653 --Entered Amount
203654  , p_source_91            IN NUMBER
203655 --Currency Conversion Date
203656  , p_source_92            IN DATE
203657 --Currency Conversion Rate
203658  , p_source_93            IN NUMBER
203659 --Currency Conversion Type
203660  , p_source_94            IN VARCHAR2
203661 --Accounted Amount
203662  , p_source_95            IN NUMBER
203663 --Accounting Line Type
203664  , p_source_97            IN NUMBER
203665 )
203666 IS
203667 
203668 l_component_type              VARCHAR2(80);
203669 l_component_code              VARCHAR2(30);
203670 l_component_type_code         VARCHAR2(1);
203671 l_component_appl_id           INTEGER;
203672 l_amb_context_code            VARCHAR2(30);
203673 l_entity_code                 VARCHAR2(30);
203674 l_event_class_code            VARCHAR2(30);
203675 l_ae_header_id                NUMBER;
203676 l_event_type_code             VARCHAR2(30);
203677 l_line_definition_code        VARCHAR2(30);
203678 l_line_definition_owner_code  VARCHAR2(1);
203679 --
203680 -- adr variables
203681 l_segment                     VARCHAR2(30);
203682 l_ccid                        NUMBER;
203683 l_adr_transaction_coa_id      NUMBER;
203684 l_adr_accounting_coa_id       NUMBER;
203685 l_adr_flexfield_segment_code  VARCHAR2(30);
203686 l_adr_flex_value_set_id       NUMBER;
203687 l_adr_value_type_code         VARCHAR2(30);
203688 l_adr_value_combination_id    NUMBER;
203689 l_adr_value_segment_code      VARCHAR2(30);
203690 
203691 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
203692 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
203693 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
203694 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
203695 
203696 -- 4262811 Variables ------------------------------------------------------------------------------------------
203697 l_entered_amt_idx             NUMBER;
203698 l_accted_amt_idx              NUMBER;
203699 l_acc_rev_flag                VARCHAR2(1);
203700 l_accrual_line_num            NUMBER;
203701 l_tmp_amt                     NUMBER;
203702 l_acc_rev_natural_side_code   VARCHAR2(1);
203703 
203704 l_num_entries                 NUMBER;
203705 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
203706 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
203707 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
203708 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
203709 l_recog_line_1                NUMBER;
203710 l_recog_line_2                NUMBER;
203711 
203712 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
203713 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
203714 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
203715 
203716 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
203717 
203718 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
203719 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
203720 
203721 ---------------------------------------------------------------------------------------------------------------
203722 
203723 
203724 --
203725 -- bulk performance
203726 --
203727 l_balance_type_code           VARCHAR2(1);
203728 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
203729 l_log_module                  VARCHAR2(240);
203730 
203731 --
203732 -- Upgrade strategy
203733 --
203734 l_actual_upg_option           VARCHAR2(1);
203735 l_enc_upg_option           VARCHAR2(1);
203736 
203737 --
203738 BEGIN
203739 --
203740 IF g_log_enabled THEN
203741       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_372';
203742 END IF;
203743 --
203744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203745 
203746       trace
203747          (p_msg      => 'BEGIN of AcctLineType_372'
203748          ,p_level    => C_LEVEL_PROCEDURE
203749          ,p_module   => l_log_module);
203750 
203751 END IF;
203752 --
203753 l_component_type             := 'AMB_JLT';
203754 l_component_code             := 'OVERHEAD_ABSORPTION';
203755 l_component_type_code        := 'S';
203756 l_component_appl_id          :=  707;
203757 l_amb_context_code           := 'DEFAULT';
203758 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
203759 l_event_class_code           := 'ABSORPTION';
203760 l_event_type_code            := 'ABSORPTION_ALL';
203761 l_line_definition_owner_code := 'S';
203762 l_line_definition_code       := 'ABSORPTION';
203763 --
203764 l_balance_type_code          := 'A';
203765 l_segment                     := NULL;
203766 l_ccid                        := NULL;
203767 l_adr_transaction_coa_id      := NULL;
203768 l_adr_accounting_coa_id       := NULL;
203769 l_adr_flexfield_segment_code  := NULL;
203770 l_adr_flex_value_set_id       := NULL;
203771 l_adr_value_type_code         := NULL;
203772 l_adr_value_combination_id    := NULL;
203773 l_adr_value_segment_code      := NULL;
203774 
203775 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
203776 l_bflow_class_code           := '';    -- 4219869 Business Flow
203777 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
203778 l_budgetary_control_flag     := 'N';
203779 
203780 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
203781 l_bflow_applied_to_amt       := NULL; -- 5132302
203782 l_entered_amt_idx            := NULL;          -- 4262811
203783 l_accted_amt_idx             := NULL;          -- 4262811
203784 l_acc_rev_flag               := NULL;          -- 4262811
203785 l_accrual_line_num           := NULL;          -- 4262811
203786 l_tmp_amt                    := NULL;          -- 4262811
203787 --
203788  
203789 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
203790     l_balance_type_code <> 'B' THEN
203791 IF NVL(p_source_97,9E125) =  3
203792  THEN 
203793 
203794    --
203795    XLA_AE_LINES_PKG.SetNewLine;
203796 
203797    p_balance_type_code          := l_balance_type_code;
203798    -- set the flag so later we will know whether the gain loss line needs to be created
203799    
203800    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
203801      p_actual_flag :='A';
203802    END IF;
203803 
203804    --
203805    -- bulk performance
203806    --
203807    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
203808                                       p_header_num   => 0); -- 4262811
203809    --
203810    -- set accounting line options
203811    --
203812    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
203813            p_natural_side_code          => 'D'
203814          , p_gain_or_loss_flag          => 'N'
203815          , p_gl_transfer_mode_code      => 'S'
203816          , p_acct_entry_type_code       => 'A'
203817          , p_switch_side_flag           => 'Y'
203818          , p_merge_duplicate_code       => 'N'
203819          );
203820    --
203821    l_acc_rev_natural_side_code := 'C';  -- 4262811
203822    -- 
203823    --
203824    -- set accounting line type info
203825    --
203826    xla_ae_lines_pkg.SetAcctLineType
203827       (p_component_type             => l_component_type
203828       ,p_event_type_code            => l_event_type_code
203829       ,p_line_definition_owner_code => l_line_definition_owner_code
203830       ,p_line_definition_code       => l_line_definition_code
203831       ,p_accounting_line_code       => l_component_code
203832       ,p_accounting_line_type_code  => l_component_type_code
203833       ,p_accounting_line_appl_id    => l_component_appl_id
203834       ,p_amb_context_code           => l_amb_context_code
203835       ,p_entity_code                => l_entity_code
203836       ,p_event_class_code           => l_event_class_code);
203837    --
203838    -- set accounting class
203839    --
203840    xla_ae_lines_pkg.SetAcctClass(
203841            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
203842          , p_ae_header_id           => l_ae_header_id
203843          );
203844 
203845    --
203846    -- set rounding class
203847    --
203848    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
203849                       'OVERHEAD_ABSORPTION';
203850 
203851    --
203852    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
203853    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
203854    --
203855    -- bulk performance
203856    --
203857    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
203858 
203859    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
203860       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
203861 
203862    -- 4955764
203863    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
203864       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
203865 
203866    -- 4458381 Public Sector Enh
203867    
203868    --
203869    -- set accounting attributes for the line type
203870    --
203871    l_entered_amt_idx := 3;
203872    l_accted_amt_idx  := 8;
203873    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
203874    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
203875    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
203876    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
203877    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
203878    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
203879    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
203880    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
203881    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
203882    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
203883    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
203884    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
203885    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
203886    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
203887    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
203888    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
203889    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
203890 
203891    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
203892    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
203893 
203894    ---------------------------------------------------------------------------------------------------------------
203895    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
203896    ---------------------------------------------------------------------------------------------------------------
203897    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
203898 
203899    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
203900    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
203901 
203902    IF xla_accounting_cache_pkg.GetValueChar
203903          (p_source_code         => 'LEDGER_CATEGORY_CODE'
203904          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
203905    AND l_bflow_method_code = 'PRIOR_ENTRY'
203906 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
203907    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
203908          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
203909        )
203910    THEN
203911          xla_ae_lines_pkg.BflowUpgEntry
203912            (p_business_method_code    => l_bflow_method_code
203913            ,p_business_class_code     => l_bflow_class_code
203914            ,p_balance_type            => l_balance_type_code);
203915    ELSE
203916       NULL;
203917 -- No business flow processing for business flow method of NONE.
203918    END IF;
203919 
203920    --
203921    -- call analytical criteria
203922    --
203923    
203924    --
203925    -- call description
203926    --
203927    -- No description or it is inherited.
203928    --
203929    -- call ADRs
203930    -- Bug 4922099
203931    --
203932    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
203933         (NVL(l_actual_upg_option, 'N') = 'O') OR
203934         (NVL(l_enc_upg_option, 'N') = 'O')
203935       )
203936    THEN
203937    NULL;
203938    --
203939    --
203940    
203941   l_ccid := AcctDerRule_6(
203942            p_application_id           => p_application_id
203943          , p_ae_header_id             => l_ae_header_id 
203944 , p_source_11 => p_source_11
203945          , x_transaction_coa_id       => l_adr_transaction_coa_id
203946          , x_accounting_coa_id        => l_adr_accounting_coa_id
203947          , x_value_type_code          => l_adr_value_type_code
203948          , p_side                     => 'NA'
203949    );
203950 
203951    xla_ae_lines_pkg.set_ccid(
203952     p_code_combination_id          => l_ccid
203953   , p_value_type_code              => l_adr_value_type_code
203954   , p_transaction_coa_id           => l_adr_transaction_coa_id
203955   , p_accounting_coa_id            => l_adr_accounting_coa_id
203956   , p_adr_code                     => 'CST_DEFAULT'
203957   , p_adr_type_code                => 'S'
203958   , p_component_type               => l_component_type
203959   , p_component_code               => l_component_code
203960   , p_component_type_code          => l_component_type_code
203961   , p_component_appl_id            => l_component_appl_id
203962   , p_amb_context_code             => l_amb_context_code
203963   , p_side                         => 'NA'
203964   );
203965 
203966 
203967    --
203968    --
203969    END IF;
203970    --
203971    -- Bug 4922099
203972    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
203973           (NVL(l_enc_upg_option, 'N') = 'O')
203974         ) AND
203975         (l_bflow_method_code = 'PRIOR_ENTRY')
203976       )
203977    THEN
203978       IF
203979       --
203980       1 = 2
203981       --
203982       THEN
203983       xla_accounting_err_pkg.build_message
203984                                     (p_appli_s_name            => 'XLA'
203985                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
203986                                     ,p_token_1                 => 'LINE_NUMBER'
203987                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
203988                                     ,p_token_2                 => 'LINE_TYPE_NAME'
203989                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
203990                                                                              l_component_type
203991                                                                             ,l_component_code
203992                                                                             ,l_component_type_code
203993                                                                             ,l_component_appl_id
203994                                                                             ,l_amb_context_code
203995                                                                             ,l_entity_code
203996                                                                             ,l_event_class_code
203997                                                                            )
203998                                     ,p_token_3                 => 'OWNER'
203999                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
204000                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
204001                                                                           ,p_lookup_code    => l_component_type_code
204002                                                                          )
204003                                     ,p_token_4                 => 'PRODUCT_NAME'
204004                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
204005                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
204006                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
204007                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
204008                                     ,p_ae_header_id            =>  NULL
204009                                        );
204010 
204011         IF (C_LEVEL_ERROR>= g_log_level) THEN
204012                  trace
204013                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
204014                       ,p_level    => C_LEVEL_ERROR
204015                       ,p_module   => l_log_module);
204016         END IF;
204017       END IF;
204018    END IF;
204019    --
204020    --
204021    ------------------------------------------------------------------------------------------------
204022    -- 4219869 Business Flow
204023    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
204024    -- Prior Entry.  Currently, the following code is always generated.
204025    ------------------------------------------------------------------------------------------------
204026    XLA_AE_LINES_PKG.ValidateCurrentLine;
204027 
204028    ------------------------------------------------------------------------------------
204029    -- 4219869 Business Flow
204030    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
204031    ------------------------------------------------------------------------------------
204032    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
204033 
204034    ----------------------------------------------------------------------------------
204035    -- 4219869 Business Flow
204036    -- Update journal entry status -- Need to generate this within IF <condition>
204037    ----------------------------------------------------------------------------------
204038    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
204039          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
204040          ,p_balance_type_code => l_balance_type_code
204041          );
204042 
204043    -------------------------------------------------------------------------------------------
204044    -- 4262811 - Generate the Accrual Reversal lines
204045    -------------------------------------------------------------------------------------------
204046    BEGIN
204047       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
204048                               (g_array_event(p_event_id).array_value_num('header_index'));
204049       IF l_acc_rev_flag IS NULL THEN
204050          l_acc_rev_flag := 'N';
204051       END IF;
204052    EXCEPTION
204053       WHEN OTHERS THEN
204054          l_acc_rev_flag := 'N';
204055    END;
204056    --
204057    IF (l_acc_rev_flag = 'Y') THEN
204058 
204059        -- 4645092  ------------------------------------------------------------------------------
204060        -- To allow MPA report to determine if it should generate report process
204061        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
204062        ------------------------------------------------------------------------------------------
204063 
204064        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
204065        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
204066    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
204067    -- call ADRs
204068    -- Bug 4922099
204069    --
204070    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
204071         (NVL(l_actual_upg_option, 'N') = 'O') OR
204072         (NVL(l_enc_upg_option, 'N') = 'O')
204073       )
204074    THEN
204075    NULL;
204076    --
204077    --
204078    
204079   l_ccid := AcctDerRule_6(
204080            p_application_id           => p_application_id
204081          , p_ae_header_id             => l_ae_header_id 
204082 , p_source_11 => p_source_11
204083          , x_transaction_coa_id       => l_adr_transaction_coa_id
204084          , x_accounting_coa_id        => l_adr_accounting_coa_id
204085          , x_value_type_code          => l_adr_value_type_code
204086          , p_side                     => 'NA'
204087    );
204088 
204089    xla_ae_lines_pkg.set_ccid(
204090     p_code_combination_id          => l_ccid
204091   , p_value_type_code              => l_adr_value_type_code
204092   , p_transaction_coa_id           => l_adr_transaction_coa_id
204093   , p_accounting_coa_id            => l_adr_accounting_coa_id
204094   , p_adr_code                     => 'CST_DEFAULT'
204095   , p_adr_type_code                => 'S'
204096   , p_component_type               => l_component_type
204097   , p_component_code               => l_component_code
204098   , p_component_type_code          => l_component_type_code
204099   , p_component_appl_id            => l_component_appl_id
204100   , p_amb_context_code             => l_amb_context_code
204101   , p_side                         => 'NA'
204102   );
204103 
204104 
204105    --
204106    --
204107    END IF;
204108 
204109        --
204110        -- Update the line information that should be overwritten
204111        --
204112        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
204113                                          p_header_num   => 1);
204114        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
204115 
204116        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
204117 
204118        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
204119           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
204120        END IF;
204121 
204122       --
204123       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
204124       --
204125       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
204126           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
204127       ELSE
204128           ---------------------------------------------------------------------------------------------------
204129           -- 4262811a Switch Sign
204130           ---------------------------------------------------------------------------------------------------
204131           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
204132           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
204133                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
204134           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
204135                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
204136           -- 5132302
204137           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
204138                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
204139 
204140       END IF;
204141 
204142       -- 4955764
204143       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
204144       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
204145 
204146 
204147       XLA_AE_LINES_PKG.ValidateCurrentLine;
204148       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
204149 
204150       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
204151                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
204152                ,p_balance_type_code => l_balance_type_code);
204153 
204154    END IF;
204155 
204156    -----------------------------------------------------------------------------------------
204157    -- 4262811 Multiperiod Accounting
204158    -----------------------------------------------------------------------------------------
204159      -- No MPA option is assigned.
204160 
204161 
204162 END IF;
204163 END IF;
204164 --
204165 
204166 --
204167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204168    trace
204169       (p_msg      => 'END of AcctLineType_372'
204170       ,p_level    => C_LEVEL_PROCEDURE
204171       ,p_module   => l_log_module);
204172 END IF;
204173 --
204174 EXCEPTION
204175   WHEN xla_exceptions_pkg.application_exception THEN
204176       RAISE;
204177   WHEN OTHERS THEN
204178        xla_exceptions_pkg.raise_message
204179            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_372');
204180 END AcctLineType_372;
204181 --
204182 
204183 ---------------------------------------
204184 --
204185 -- PRIVATE FUNCTION
204186 --         AcctLineType_373
204187 --
204188 ---------------------------------------
204189 PROCEDURE AcctLineType_373 (
204190   p_application_id        IN NUMBER
204191  ,p_event_id              IN NUMBER
204192  ,p_calculate_acctd_flag  IN VARCHAR2
204193  ,p_calculate_g_l_flag    IN VARCHAR2
204194  ,p_actual_flag           IN OUT VARCHAR2
204195  ,p_balance_type_code     OUT VARCHAR2
204196  ,p_gain_or_loss_ref      OUT VARCHAR2
204197  
204198 --Cost Management Default Account
204199  , p_source_11            IN NUMBER
204200 --DISTRIBUTION_IDENTIFIER
204201  , p_source_84            IN NUMBER
204202 --Distribution Type
204203  , p_source_85            IN VARCHAR2
204204  , p_source_85_meaning    IN VARCHAR2
204205 --Entered Currency Code
204206  , p_source_88            IN VARCHAR2
204207 --Entered Amount
204208  , p_source_91            IN NUMBER
204209 --Currency Conversion Date
204210  , p_source_92            IN DATE
204211 --Currency Conversion Rate
204212  , p_source_93            IN NUMBER
204213 --Accounted Amount
204214  , p_source_95            IN NUMBER
204215 --Accounting Line Type
204216  , p_source_97            IN NUMBER
204217 )
204218 IS
204219 
204220 l_component_type              VARCHAR2(80);
204221 l_component_code              VARCHAR2(30);
204222 l_component_type_code         VARCHAR2(1);
204223 l_component_appl_id           INTEGER;
204224 l_amb_context_code            VARCHAR2(30);
204225 l_entity_code                 VARCHAR2(30);
204226 l_event_class_code            VARCHAR2(30);
204227 l_ae_header_id                NUMBER;
204228 l_event_type_code             VARCHAR2(30);
204229 l_line_definition_code        VARCHAR2(30);
204230 l_line_definition_owner_code  VARCHAR2(1);
204231 --
204232 -- adr variables
204233 l_segment                     VARCHAR2(30);
204234 l_ccid                        NUMBER;
204235 l_adr_transaction_coa_id      NUMBER;
204236 l_adr_accounting_coa_id       NUMBER;
204237 l_adr_flexfield_segment_code  VARCHAR2(30);
204238 l_adr_flex_value_set_id       NUMBER;
204239 l_adr_value_type_code         VARCHAR2(30);
204240 l_adr_value_combination_id    NUMBER;
204241 l_adr_value_segment_code      VARCHAR2(30);
204242 
204243 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
204244 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
204245 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
204246 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
204247 
204248 -- 4262811 Variables ------------------------------------------------------------------------------------------
204249 l_entered_amt_idx             NUMBER;
204250 l_accted_amt_idx              NUMBER;
204251 l_acc_rev_flag                VARCHAR2(1);
204252 l_accrual_line_num            NUMBER;
204253 l_tmp_amt                     NUMBER;
204254 l_acc_rev_natural_side_code   VARCHAR2(1);
204255 
204256 l_num_entries                 NUMBER;
204257 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
204258 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
204259 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
204260 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
204261 l_recog_line_1                NUMBER;
204262 l_recog_line_2                NUMBER;
204263 
204264 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
204265 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
204266 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
204267 
204268 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
204269 
204270 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
204271 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
204272 
204273 ---------------------------------------------------------------------------------------------------------------
204274 
204275 
204276 --
204277 -- bulk performance
204278 --
204279 l_balance_type_code           VARCHAR2(1);
204280 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
204281 l_log_module                  VARCHAR2(240);
204282 
204283 --
204284 -- Upgrade strategy
204285 --
204286 l_actual_upg_option           VARCHAR2(1);
204287 l_enc_upg_option           VARCHAR2(1);
204288 
204289 --
204290 BEGIN
204291 --
204292 IF g_log_enabled THEN
204293       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_373';
204294 END IF;
204295 --
204296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204297 
204298       trace
204299          (p_msg      => 'BEGIN of AcctLineType_373'
204300          ,p_level    => C_LEVEL_PROCEDURE
204301          ,p_module   => l_log_module);
204302 
204303 END IF;
204304 --
204305 l_component_type             := 'AMB_JLT';
204306 l_component_code             := 'OVERHEAD_ABSORPTION';
204307 l_component_type_code        := 'S';
204308 l_component_appl_id          :=  707;
204309 l_amb_context_code           := 'DEFAULT';
204310 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
204311 l_event_class_code           := 'OSP';
204312 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
204313 l_line_definition_owner_code := 'S';
204314 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
204315 --
204316 l_balance_type_code          := 'A';
204317 l_segment                     := NULL;
204318 l_ccid                        := NULL;
204319 l_adr_transaction_coa_id      := NULL;
204320 l_adr_accounting_coa_id       := NULL;
204321 l_adr_flexfield_segment_code  := NULL;
204322 l_adr_flex_value_set_id       := NULL;
204323 l_adr_value_type_code         := NULL;
204324 l_adr_value_combination_id    := NULL;
204325 l_adr_value_segment_code      := NULL;
204326 
204327 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
204328 l_bflow_class_code           := '';    -- 4219869 Business Flow
204329 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
204330 l_budgetary_control_flag     := 'N';
204331 
204332 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
204333 l_bflow_applied_to_amt       := NULL; -- 5132302
204334 l_entered_amt_idx            := NULL;          -- 4262811
204335 l_accted_amt_idx             := NULL;          -- 4262811
204336 l_acc_rev_flag               := NULL;          -- 4262811
204337 l_accrual_line_num           := NULL;          -- 4262811
204338 l_tmp_amt                    := NULL;          -- 4262811
204339 --
204340  
204341 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
204342     l_balance_type_code <> 'B' THEN
204343 IF NVL(p_source_97,9E125) =  3
204344  THEN 
204345 
204346    --
204347    XLA_AE_LINES_PKG.SetNewLine;
204348 
204349    p_balance_type_code          := l_balance_type_code;
204350    -- set the flag so later we will know whether the gain loss line needs to be created
204351    
204352    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
204353      p_actual_flag :='A';
204354    END IF;
204355 
204356    --
204357    -- bulk performance
204358    --
204359    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
204360                                       p_header_num   => 0); -- 4262811
204361    --
204362    -- set accounting line options
204363    --
204364    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
204365            p_natural_side_code          => 'D'
204366          , p_gain_or_loss_flag          => 'N'
204367          , p_gl_transfer_mode_code      => 'S'
204368          , p_acct_entry_type_code       => 'A'
204369          , p_switch_side_flag           => 'Y'
204370          , p_merge_duplicate_code       => 'N'
204371          );
204372    --
204373    l_acc_rev_natural_side_code := 'C';  -- 4262811
204374    -- 
204375    --
204376    -- set accounting line type info
204377    --
204378    xla_ae_lines_pkg.SetAcctLineType
204379       (p_component_type             => l_component_type
204380       ,p_event_type_code            => l_event_type_code
204381       ,p_line_definition_owner_code => l_line_definition_owner_code
204382       ,p_line_definition_code       => l_line_definition_code
204383       ,p_accounting_line_code       => l_component_code
204384       ,p_accounting_line_type_code  => l_component_type_code
204385       ,p_accounting_line_appl_id    => l_component_appl_id
204386       ,p_amb_context_code           => l_amb_context_code
204387       ,p_entity_code                => l_entity_code
204388       ,p_event_class_code           => l_event_class_code);
204389    --
204390    -- set accounting class
204391    --
204392    xla_ae_lines_pkg.SetAcctClass(
204393            p_accounting_class_code  => 'OVERHEAD_ABSORPTION'
204394          , p_ae_header_id           => l_ae_header_id
204395          );
204396 
204397    --
204398    -- set rounding class
204399    --
204400    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
204401                       'OVERHEAD_ABSORPTION';
204402 
204403    --
204404    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
204405    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
204406    --
204407    -- bulk performance
204408    --
204409    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
204410 
204411    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
204412       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
204413 
204414    -- 4955764
204415    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
204416       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
204417 
204418    -- 4458381 Public Sector Enh
204419    
204420    --
204421    -- set accounting attributes for the line type
204422    --
204423    l_entered_amt_idx := 3;
204424    l_accted_amt_idx  := 8;
204425    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
204426    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
204427    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
204428    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
204429    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
204430    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
204431    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
204432    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
204433    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
204434    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
204435    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
204436    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
204437    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
204438    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
204439    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
204440    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
204441    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
204442 
204443    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
204444    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
204445 
204446    ---------------------------------------------------------------------------------------------------------------
204447    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
204448    ---------------------------------------------------------------------------------------------------------------
204449    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
204450 
204451    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
204452    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
204453 
204454    IF xla_accounting_cache_pkg.GetValueChar
204455          (p_source_code         => 'LEDGER_CATEGORY_CODE'
204456          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
204457    AND l_bflow_method_code = 'PRIOR_ENTRY'
204458 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
204459    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
204460          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
204461        )
204462    THEN
204463          xla_ae_lines_pkg.BflowUpgEntry
204464            (p_business_method_code    => l_bflow_method_code
204465            ,p_business_class_code     => l_bflow_class_code
204466            ,p_balance_type            => l_balance_type_code);
204467    ELSE
204468       NULL;
204469 -- No business flow processing for business flow method of NONE.
204470    END IF;
204471 
204472    --
204473    -- call analytical criteria
204474    --
204475    
204476    --
204477    -- call description
204478    --
204479    -- No description or it is inherited.
204480    --
204481    -- call ADRs
204482    -- Bug 4922099
204483    --
204484    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
204485         (NVL(l_actual_upg_option, 'N') = 'O') OR
204486         (NVL(l_enc_upg_option, 'N') = 'O')
204487       )
204488    THEN
204489    NULL;
204490    --
204491    --
204492    
204493   l_ccid := AcctDerRule_6(
204494            p_application_id           => p_application_id
204495          , p_ae_header_id             => l_ae_header_id 
204496 , p_source_11 => p_source_11
204497          , x_transaction_coa_id       => l_adr_transaction_coa_id
204498          , x_accounting_coa_id        => l_adr_accounting_coa_id
204499          , x_value_type_code          => l_adr_value_type_code
204500          , p_side                     => 'NA'
204501    );
204502 
204503    xla_ae_lines_pkg.set_ccid(
204504     p_code_combination_id          => l_ccid
204505   , p_value_type_code              => l_adr_value_type_code
204506   , p_transaction_coa_id           => l_adr_transaction_coa_id
204507   , p_accounting_coa_id            => l_adr_accounting_coa_id
204508   , p_adr_code                     => 'CST_DEFAULT'
204509   , p_adr_type_code                => 'S'
204510   , p_component_type               => l_component_type
204511   , p_component_code               => l_component_code
204512   , p_component_type_code          => l_component_type_code
204513   , p_component_appl_id            => l_component_appl_id
204514   , p_amb_context_code             => l_amb_context_code
204515   , p_side                         => 'NA'
204516   );
204517 
204518 
204519    --
204520    --
204521    END IF;
204522    --
204523    -- Bug 4922099
204524    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
204525           (NVL(l_enc_upg_option, 'N') = 'O')
204526         ) AND
204527         (l_bflow_method_code = 'PRIOR_ENTRY')
204528       )
204529    THEN
204530       IF
204531       --
204532       1 = 2
204533       --
204534       THEN
204535       xla_accounting_err_pkg.build_message
204536                                     (p_appli_s_name            => 'XLA'
204537                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
204538                                     ,p_token_1                 => 'LINE_NUMBER'
204539                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
204540                                     ,p_token_2                 => 'LINE_TYPE_NAME'
204541                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
204542                                                                              l_component_type
204543                                                                             ,l_component_code
204544                                                                             ,l_component_type_code
204545                                                                             ,l_component_appl_id
204546                                                                             ,l_amb_context_code
204547                                                                             ,l_entity_code
204548                                                                             ,l_event_class_code
204549                                                                            )
204550                                     ,p_token_3                 => 'OWNER'
204551                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
204552                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
204553                                                                           ,p_lookup_code    => l_component_type_code
204554                                                                          )
204555                                     ,p_token_4                 => 'PRODUCT_NAME'
204556                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
204557                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
204558                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
204559                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
204560                                     ,p_ae_header_id            =>  NULL
204561                                        );
204562 
204563         IF (C_LEVEL_ERROR>= g_log_level) THEN
204564                  trace
204565                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
204566                       ,p_level    => C_LEVEL_ERROR
204567                       ,p_module   => l_log_module);
204568         END IF;
204569       END IF;
204570    END IF;
204571    --
204572    --
204573    ------------------------------------------------------------------------------------------------
204574    -- 4219869 Business Flow
204575    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
204576    -- Prior Entry.  Currently, the following code is always generated.
204577    ------------------------------------------------------------------------------------------------
204578    XLA_AE_LINES_PKG.ValidateCurrentLine;
204579 
204580    ------------------------------------------------------------------------------------
204581    -- 4219869 Business Flow
204582    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
204583    ------------------------------------------------------------------------------------
204584    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
204585 
204586    ----------------------------------------------------------------------------------
204587    -- 4219869 Business Flow
204588    -- Update journal entry status -- Need to generate this within IF <condition>
204589    ----------------------------------------------------------------------------------
204590    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
204591          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
204592          ,p_balance_type_code => l_balance_type_code
204593          );
204594 
204595    -------------------------------------------------------------------------------------------
204596    -- 4262811 - Generate the Accrual Reversal lines
204597    -------------------------------------------------------------------------------------------
204598    BEGIN
204599       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
204600                               (g_array_event(p_event_id).array_value_num('header_index'));
204601       IF l_acc_rev_flag IS NULL THEN
204602          l_acc_rev_flag := 'N';
204603       END IF;
204604    EXCEPTION
204605       WHEN OTHERS THEN
204606          l_acc_rev_flag := 'N';
204607    END;
204608    --
204609    IF (l_acc_rev_flag = 'Y') THEN
204610 
204611        -- 4645092  ------------------------------------------------------------------------------
204612        -- To allow MPA report to determine if it should generate report process
204613        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
204614        ------------------------------------------------------------------------------------------
204615 
204616        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
204617        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
204618    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
204619    -- call ADRs
204620    -- Bug 4922099
204621    --
204622    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
204623         (NVL(l_actual_upg_option, 'N') = 'O') OR
204624         (NVL(l_enc_upg_option, 'N') = 'O')
204625       )
204626    THEN
204627    NULL;
204628    --
204629    --
204630    
204631   l_ccid := AcctDerRule_6(
204632            p_application_id           => p_application_id
204633          , p_ae_header_id             => l_ae_header_id 
204634 , p_source_11 => p_source_11
204635          , x_transaction_coa_id       => l_adr_transaction_coa_id
204636          , x_accounting_coa_id        => l_adr_accounting_coa_id
204637          , x_value_type_code          => l_adr_value_type_code
204638          , p_side                     => 'NA'
204639    );
204640 
204641    xla_ae_lines_pkg.set_ccid(
204642     p_code_combination_id          => l_ccid
204643   , p_value_type_code              => l_adr_value_type_code
204644   , p_transaction_coa_id           => l_adr_transaction_coa_id
204645   , p_accounting_coa_id            => l_adr_accounting_coa_id
204646   , p_adr_code                     => 'CST_DEFAULT'
204647   , p_adr_type_code                => 'S'
204648   , p_component_type               => l_component_type
204649   , p_component_code               => l_component_code
204650   , p_component_type_code          => l_component_type_code
204651   , p_component_appl_id            => l_component_appl_id
204652   , p_amb_context_code             => l_amb_context_code
204653   , p_side                         => 'NA'
204654   );
204655 
204656 
204657    --
204658    --
204659    END IF;
204660 
204661        --
204662        -- Update the line information that should be overwritten
204663        --
204664        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
204665                                          p_header_num   => 1);
204666        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
204667 
204668        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
204669 
204670        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
204671           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
204672        END IF;
204673 
204674       --
204675       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
204676       --
204677       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
204678           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
204679       ELSE
204680           ---------------------------------------------------------------------------------------------------
204681           -- 4262811a Switch Sign
204682           ---------------------------------------------------------------------------------------------------
204683           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
204684           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
204685                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
204686           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
204687                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
204688           -- 5132302
204689           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
204690                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
204691 
204692       END IF;
204693 
204694       -- 4955764
204695       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
204696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
204697 
204698 
204699       XLA_AE_LINES_PKG.ValidateCurrentLine;
204700       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
204701 
204702       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
204703                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
204704                ,p_balance_type_code => l_balance_type_code);
204705 
204706    END IF;
204707 
204708    -----------------------------------------------------------------------------------------
204709    -- 4262811 Multiperiod Accounting
204710    -----------------------------------------------------------------------------------------
204711      -- No MPA option is assigned.
204712 
204713 
204714 END IF;
204715 END IF;
204716 --
204717 
204718 --
204719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204720    trace
204721       (p_msg      => 'END of AcctLineType_373'
204722       ,p_level    => C_LEVEL_PROCEDURE
204723       ,p_module   => l_log_module);
204724 END IF;
204725 --
204726 EXCEPTION
204727   WHEN xla_exceptions_pkg.application_exception THEN
204728       RAISE;
204729   WHEN OTHERS THEN
204730        xla_exceptions_pkg.raise_message
204731            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_373');
204732 END AcctLineType_373;
204733 --
204734 
204735 ---------------------------------------
204736 --
204737 -- PRIVATE FUNCTION
204738 --         AcctLineType_374
204739 --
204740 ---------------------------------------
204741 PROCEDURE AcctLineType_374 (
204742   p_application_id        IN NUMBER
204743  ,p_event_id              IN NUMBER
204744  ,p_calculate_acctd_flag  IN VARCHAR2
204745  ,p_calculate_g_l_flag    IN VARCHAR2
204746  ,p_actual_flag           IN OUT VARCHAR2
204747  ,p_balance_type_code     OUT VARCHAR2
204748  ,p_gain_or_loss_ref      OUT VARCHAR2
204749  
204750 --TRANSACTION_ID
204751  , p_source_1            IN NUMBER
204752 --Item Concatenated Segments
204753  , p_source_2            IN VARCHAR2
204754 --Transaction Quantity
204755  , p_source_3            IN NUMBER
204756 --Transaction Unit of Measure Code
204757  , p_source_4            IN VARCHAR2
204758 --Inventory Transaction Type Description
204759  , p_source_5            IN VARCHAR2
204760 --Product Line Accounting Category Bridging Account
204761  , p_source_22            IN NUMBER
204762 --DISTRIBUTION_IDENTIFIER
204763  , p_source_84            IN NUMBER
204764 --Distribution Type
204765  , p_source_85            IN VARCHAR2
204766  , p_source_85_meaning    IN VARCHAR2
204767 --Entered Currency Code
204768  , p_source_88            IN VARCHAR2
204769 --Entered Amount
204770  , p_source_91            IN NUMBER
204771 --Currency Conversion Date
204772  , p_source_92            IN DATE
204773 --Currency Conversion Rate
204774  , p_source_93            IN NUMBER
204775 --Currency Conversion Type
204776  , p_source_94            IN VARCHAR2
204777 --Accounted Amount
204778  , p_source_95            IN NUMBER
204779 --Accounting Line Type
204780  , p_source_97            IN NUMBER
204781 )
204782 IS
204783 
204784 l_component_type              VARCHAR2(80);
204785 l_component_code              VARCHAR2(30);
204786 l_component_type_code         VARCHAR2(1);
204787 l_component_appl_id           INTEGER;
204788 l_amb_context_code            VARCHAR2(30);
204789 l_entity_code                 VARCHAR2(30);
204790 l_event_class_code            VARCHAR2(30);
204791 l_ae_header_id                NUMBER;
204792 l_event_type_code             VARCHAR2(30);
204793 l_line_definition_code        VARCHAR2(30);
204794 l_line_definition_owner_code  VARCHAR2(1);
204795 --
204796 -- adr variables
204797 l_segment                     VARCHAR2(30);
204798 l_ccid                        NUMBER;
204799 l_adr_transaction_coa_id      NUMBER;
204800 l_adr_accounting_coa_id       NUMBER;
204801 l_adr_flexfield_segment_code  VARCHAR2(30);
204802 l_adr_flex_value_set_id       NUMBER;
204803 l_adr_value_type_code         VARCHAR2(30);
204804 l_adr_value_combination_id    NUMBER;
204805 l_adr_value_segment_code      VARCHAR2(30);
204806 
204807 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
204808 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
204809 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
204810 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
204811 
204812 -- 4262811 Variables ------------------------------------------------------------------------------------------
204813 l_entered_amt_idx             NUMBER;
204814 l_accted_amt_idx              NUMBER;
204815 l_acc_rev_flag                VARCHAR2(1);
204816 l_accrual_line_num            NUMBER;
204817 l_tmp_amt                     NUMBER;
204818 l_acc_rev_natural_side_code   VARCHAR2(1);
204819 
204820 l_num_entries                 NUMBER;
204821 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
204822 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
204823 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
204824 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
204825 l_recog_line_1                NUMBER;
204826 l_recog_line_2                NUMBER;
204827 
204828 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
204829 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
204830 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
204831 
204832 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
204833 
204834 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
204835 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
204836 
204837 ---------------------------------------------------------------------------------------------------------------
204838 
204839 
204840 --
204841 -- bulk performance
204842 --
204843 l_balance_type_code           VARCHAR2(1);
204844 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
204845 l_log_module                  VARCHAR2(240);
204846 
204847 --
204848 -- Upgrade strategy
204849 --
204850 l_actual_upg_option           VARCHAR2(1);
204851 l_enc_upg_option           VARCHAR2(1);
204852 
204853 --
204854 BEGIN
204855 --
204856 IF g_log_enabled THEN
204857       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_374';
204858 END IF;
204859 --
204860 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204861 
204862       trace
204863          (p_msg      => 'BEGIN of AcctLineType_374'
204864          ,p_level    => C_LEVEL_PROCEDURE
204865          ,p_module   => l_log_module);
204866 
204867 END IF;
204868 --
204869 l_component_type             := 'AMB_JLT';
204870 l_component_code             := 'PI_BRIDGING';
204871 l_component_type_code        := 'S';
204872 l_component_appl_id          :=  707;
204873 l_amb_context_code           := 'DEFAULT';
204874 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
204875 l_event_class_code           := 'USER_DEFINE';
204876 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
204877 l_line_definition_owner_code := 'S';
204878 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
204879 --
204880 l_balance_type_code          := 'A';
204881 l_segment                     := NULL;
204882 l_ccid                        := NULL;
204883 l_adr_transaction_coa_id      := NULL;
204884 l_adr_accounting_coa_id       := NULL;
204885 l_adr_flexfield_segment_code  := NULL;
204886 l_adr_flex_value_set_id       := NULL;
204887 l_adr_value_type_code         := NULL;
204888 l_adr_value_combination_id    := NULL;
204889 l_adr_value_segment_code      := NULL;
204890 
204891 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
204892 l_bflow_class_code           := '';    -- 4219869 Business Flow
204893 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
204894 l_budgetary_control_flag     := 'N';
204895 
204896 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
204897 l_bflow_applied_to_amt       := NULL; -- 5132302
204898 l_entered_amt_idx            := NULL;          -- 4262811
204899 l_accted_amt_idx             := NULL;          -- 4262811
204900 l_acc_rev_flag               := NULL;          -- 4262811
204901 l_accrual_line_num           := NULL;          -- 4262811
204902 l_tmp_amt                    := NULL;          -- 4262811
204903 --
204904  
204905 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
204906     l_balance_type_code <> 'B' THEN
204907 IF NVL(p_source_97,9E125) =  1
204908  THEN 
204909 
204910    --
204911    XLA_AE_LINES_PKG.SetNewLine;
204912 
204913    p_balance_type_code          := l_balance_type_code;
204914    -- set the flag so later we will know whether the gain loss line needs to be created
204915    
204916    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
204917      p_actual_flag :='A';
204918    END IF;
204919 
204920    --
204921    -- bulk performance
204922    --
204923    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
204924                                       p_header_num   => 0); -- 4262811
204925    --
204926    -- set accounting line options
204927    --
204928    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
204929            p_natural_side_code          => 'C'
204930          , p_gain_or_loss_flag          => 'N'
204931          , p_gl_transfer_mode_code      => 'S'
204932          , p_acct_entry_type_code       => 'A'
204933          , p_switch_side_flag           => 'Y'
204934          , p_merge_duplicate_code       => 'N'
204935          );
204936    --
204937    l_acc_rev_natural_side_code := 'D';  -- 4262811
204938    -- 
204939    --
204940    -- set accounting line type info
204941    --
204942    xla_ae_lines_pkg.SetAcctLineType
204943       (p_component_type             => l_component_type
204944       ,p_event_type_code            => l_event_type_code
204945       ,p_line_definition_owner_code => l_line_definition_owner_code
204946       ,p_line_definition_code       => l_line_definition_code
204947       ,p_accounting_line_code       => l_component_code
204948       ,p_accounting_line_type_code  => l_component_type_code
204949       ,p_accounting_line_appl_id    => l_component_appl_id
204950       ,p_amb_context_code           => l_amb_context_code
204951       ,p_entity_code                => l_entity_code
204952       ,p_event_class_code           => l_event_class_code);
204953    --
204954    -- set accounting class
204955    --
204956    xla_ae_lines_pkg.SetAcctClass(
204957            p_accounting_class_code  => 'BRIDGING'
204958          , p_ae_header_id           => l_ae_header_id
204959          );
204960 
204961    --
204962    -- set rounding class
204963    --
204964    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
204965                       'BRIDGING';
204966 
204967    --
204968    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
204969    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
204970    --
204971    -- bulk performance
204972    --
204973    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
204974 
204975    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
204976       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
204977 
204978    -- 4955764
204979    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
204980       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
204981 
204982    -- 4458381 Public Sector Enh
204983    
204984    --
204985    -- set accounting attributes for the line type
204986    --
204987    l_entered_amt_idx := 3;
204988    l_accted_amt_idx  := 8;
204989    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
204990    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
204991    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
204992    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
204993    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
204994    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
204995    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
204996    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
204997    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
204998    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
204999    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
205000    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
205001    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
205002    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
205003    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
205004    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
205005    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
205006 
205007    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
205008    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
205009 
205010    ---------------------------------------------------------------------------------------------------------------
205011    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
205012    ---------------------------------------------------------------------------------------------------------------
205013    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
205014 
205015    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
205016    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
205017 
205018    IF xla_accounting_cache_pkg.GetValueChar
205019          (p_source_code         => 'LEDGER_CATEGORY_CODE'
205020          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
205021    AND l_bflow_method_code = 'PRIOR_ENTRY'
205022 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
205023    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
205024          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
205025        )
205026    THEN
205027          xla_ae_lines_pkg.BflowUpgEntry
205028            (p_business_method_code    => l_bflow_method_code
205029            ,p_business_class_code     => l_bflow_class_code
205030            ,p_balance_type            => l_balance_type_code);
205031    ELSE
205032       NULL;
205033 -- No business flow processing for business flow method of NONE.
205034    END IF;
205035 
205036    --
205037    -- call analytical criteria
205038    --
205039    
205040    --
205041    -- call description
205042    --
205043    
205044 xla_ae_lines_pkg.SetLineDescription(
205045    p_ae_header_id => l_ae_header_id
205046   ,p_description  => Description_1 (
205047      p_application_id         => p_application_id
205048    , p_ae_header_id           => l_ae_header_id 
205049 , p_source_1 => p_source_1
205050 , p_source_2 => p_source_2
205051 , p_source_3 => p_source_3
205052 , p_source_4 => p_source_4
205053 , p_source_5 => p_source_5
205054    )
205055 );
205056 
205057 
205058    --
205059    -- call ADRs
205060    -- Bug 4922099
205061    --
205062    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
205063         (NVL(l_actual_upg_option, 'N') = 'O') OR
205064         (NVL(l_enc_upg_option, 'N') = 'O')
205065       )
205066    THEN
205067    NULL;
205068    --
205069    --
205070    
205071   l_ccid := AcctDerRule_11(
205072            p_application_id           => p_application_id
205073          , p_ae_header_id             => l_ae_header_id 
205074 , p_source_22 => p_source_22
205075          , x_transaction_coa_id       => l_adr_transaction_coa_id
205076          , x_accounting_coa_id        => l_adr_accounting_coa_id
205077          , x_value_type_code          => l_adr_value_type_code
205078          , p_side                     => 'NA'
205079    );
205080 
205081    xla_ae_lines_pkg.set_ccid(
205082     p_code_combination_id          => l_ccid
205083   , p_value_type_code              => l_adr_value_type_code
205084   , p_transaction_coa_id           => l_adr_transaction_coa_id
205085   , p_accounting_coa_id            => l_adr_accounting_coa_id
205086   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
205087   , p_adr_type_code                => 'S'
205088   , p_component_type               => l_component_type
205089   , p_component_code               => l_component_code
205090   , p_component_type_code          => l_component_type_code
205091   , p_component_appl_id            => l_component_appl_id
205092   , p_amb_context_code             => l_amb_context_code
205093   , p_side                         => 'NA'
205094   );
205095 
205096 
205097    --
205098    --
205099    END IF;
205100    --
205101    -- Bug 4922099
205102    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
205103           (NVL(l_enc_upg_option, 'N') = 'O')
205104         ) AND
205105         (l_bflow_method_code = 'PRIOR_ENTRY')
205106       )
205107    THEN
205108       IF
205109       --
205110       1 = 2
205111       --
205112       THEN
205113       xla_accounting_err_pkg.build_message
205114                                     (p_appli_s_name            => 'XLA'
205115                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
205116                                     ,p_token_1                 => 'LINE_NUMBER'
205117                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
205118                                     ,p_token_2                 => 'LINE_TYPE_NAME'
205119                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
205120                                                                              l_component_type
205121                                                                             ,l_component_code
205122                                                                             ,l_component_type_code
205123                                                                             ,l_component_appl_id
205124                                                                             ,l_amb_context_code
205125                                                                             ,l_entity_code
205126                                                                             ,l_event_class_code
205127                                                                            )
205128                                     ,p_token_3                 => 'OWNER'
205129                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
205130                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
205131                                                                           ,p_lookup_code    => l_component_type_code
205132                                                                          )
205133                                     ,p_token_4                 => 'PRODUCT_NAME'
205134                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
205135                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
205136                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
205137                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
205138                                     ,p_ae_header_id            =>  NULL
205139                                        );
205140 
205141         IF (C_LEVEL_ERROR>= g_log_level) THEN
205142                  trace
205143                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
205144                       ,p_level    => C_LEVEL_ERROR
205145                       ,p_module   => l_log_module);
205146         END IF;
205147       END IF;
205148    END IF;
205149    --
205150    --
205151    ------------------------------------------------------------------------------------------------
205152    -- 4219869 Business Flow
205153    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
205154    -- Prior Entry.  Currently, the following code is always generated.
205155    ------------------------------------------------------------------------------------------------
205156    XLA_AE_LINES_PKG.ValidateCurrentLine;
205157 
205158    ------------------------------------------------------------------------------------
205159    -- 4219869 Business Flow
205160    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
205161    ------------------------------------------------------------------------------------
205162    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
205163 
205164    ----------------------------------------------------------------------------------
205165    -- 4219869 Business Flow
205166    -- Update journal entry status -- Need to generate this within IF <condition>
205167    ----------------------------------------------------------------------------------
205168    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
205169          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
205170          ,p_balance_type_code => l_balance_type_code
205171          );
205172 
205173    -------------------------------------------------------------------------------------------
205174    -- 4262811 - Generate the Accrual Reversal lines
205175    -------------------------------------------------------------------------------------------
205176    BEGIN
205177       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
205178                               (g_array_event(p_event_id).array_value_num('header_index'));
205179       IF l_acc_rev_flag IS NULL THEN
205180          l_acc_rev_flag := 'N';
205181       END IF;
205182    EXCEPTION
205183       WHEN OTHERS THEN
205184          l_acc_rev_flag := 'N';
205185    END;
205186    --
205187    IF (l_acc_rev_flag = 'Y') THEN
205188 
205189        -- 4645092  ------------------------------------------------------------------------------
205190        -- To allow MPA report to determine if it should generate report process
205191        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
205192        ------------------------------------------------------------------------------------------
205193 
205194        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
205195        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
205196    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
205197    -- call ADRs
205198    -- Bug 4922099
205199    --
205200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
205201         (NVL(l_actual_upg_option, 'N') = 'O') OR
205202         (NVL(l_enc_upg_option, 'N') = 'O')
205203       )
205204    THEN
205205    NULL;
205206    --
205207    --
205208    
205209   l_ccid := AcctDerRule_11(
205210            p_application_id           => p_application_id
205211          , p_ae_header_id             => l_ae_header_id 
205212 , p_source_22 => p_source_22
205213          , x_transaction_coa_id       => l_adr_transaction_coa_id
205214          , x_accounting_coa_id        => l_adr_accounting_coa_id
205215          , x_value_type_code          => l_adr_value_type_code
205216          , p_side                     => 'NA'
205217    );
205218 
205219    xla_ae_lines_pkg.set_ccid(
205220     p_code_combination_id          => l_ccid
205221   , p_value_type_code              => l_adr_value_type_code
205222   , p_transaction_coa_id           => l_adr_transaction_coa_id
205223   , p_accounting_coa_id            => l_adr_accounting_coa_id
205224   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
205225   , p_adr_type_code                => 'S'
205226   , p_component_type               => l_component_type
205227   , p_component_code               => l_component_code
205228   , p_component_type_code          => l_component_type_code
205229   , p_component_appl_id            => l_component_appl_id
205230   , p_amb_context_code             => l_amb_context_code
205231   , p_side                         => 'NA'
205232   );
205233 
205234 
205235    --
205236    --
205237    END IF;
205238 
205239        --
205240        -- Update the line information that should be overwritten
205241        --
205242        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
205243                                          p_header_num   => 1);
205244        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
205245 
205246        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
205247 
205248        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
205249           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
205250        END IF;
205251 
205252       --
205253       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
205254       --
205255       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
205256           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
205257       ELSE
205258           ---------------------------------------------------------------------------------------------------
205259           -- 4262811a Switch Sign
205260           ---------------------------------------------------------------------------------------------------
205261           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
205262           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
205263                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
205264           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
205265                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
205266           -- 5132302
205267           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
205268                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
205269 
205270       END IF;
205271 
205272       -- 4955764
205273       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
205274       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
205275 
205276 
205277       XLA_AE_LINES_PKG.ValidateCurrentLine;
205278       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
205279 
205280       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
205281                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
205282                ,p_balance_type_code => l_balance_type_code);
205283 
205284    END IF;
205285 
205286    -----------------------------------------------------------------------------------------
205287    -- 4262811 Multiperiod Accounting
205288    -----------------------------------------------------------------------------------------
205289      -- No MPA option is assigned.
205290 
205291 
205292 END IF;
205293 END IF;
205294 --
205295 
205296 --
205297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205298    trace
205299       (p_msg      => 'END of AcctLineType_374'
205300       ,p_level    => C_LEVEL_PROCEDURE
205301       ,p_module   => l_log_module);
205302 END IF;
205303 --
205304 EXCEPTION
205305   WHEN xla_exceptions_pkg.application_exception THEN
205306       RAISE;
205307   WHEN OTHERS THEN
205308        xla_exceptions_pkg.raise_message
205309            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_374');
205310 END AcctLineType_374;
205311 --
205312 
205313 ---------------------------------------
205314 --
205315 -- PRIVATE FUNCTION
205316 --         AcctLineType_375
205317 --
205318 ---------------------------------------
205319 PROCEDURE AcctLineType_375 (
205320   p_application_id        IN NUMBER
205321  ,p_event_id              IN NUMBER
205322  ,p_calculate_acctd_flag  IN VARCHAR2
205323  ,p_calculate_g_l_flag    IN VARCHAR2
205324  ,p_actual_flag           IN OUT VARCHAR2
205325  ,p_balance_type_code     OUT VARCHAR2
205326  ,p_gain_or_loss_ref      OUT VARCHAR2
205327  
205328 --TRANSACTION_ID
205329  , p_source_1            IN NUMBER
205330 --Item Concatenated Segments
205331  , p_source_2            IN VARCHAR2
205332 --Transaction Quantity
205333  , p_source_3            IN NUMBER
205334 --Transaction Unit of Measure Code
205335  , p_source_4            IN VARCHAR2
205336 --Inventory Transaction Type Description
205337  , p_source_5            IN VARCHAR2
205338 --Product Line Accounting Category Bridging Account
205339  , p_source_22            IN NUMBER
205340 --Applied to Application ID
205341  , p_source_79            IN NUMBER
205342 --Applied to Distribution Link Type
205343  , p_source_80            IN VARCHAR2
205344 --Applied to Entity Code
205345  , p_source_81            IN VARCHAR2
205346 --Applied To Purchase Document Identifier
205347  , p_source_83            IN NUMBER
205348 --DISTRIBUTION_IDENTIFIER
205349  , p_source_84            IN NUMBER
205350 --Distribution Type
205351  , p_source_85            IN VARCHAR2
205352  , p_source_85_meaning    IN VARCHAR2
205353 --PO Budget Account
205354  , p_source_86            IN NUMBER
205355 --Encumbrance Reversal Amount Entered
205356  , p_source_87            IN NUMBER
205357 --Entered Currency Code
205358  , p_source_88            IN VARCHAR2
205359 --Transaction Encumbrance Reversal Amount
205360  , p_source_89            IN NUMBER
205361 --Entered Amount
205362  , p_source_91            IN NUMBER
205363 --Currency Conversion Date
205364  , p_source_92            IN DATE
205365 --Currency Conversion Rate
205366  , p_source_93            IN NUMBER
205367 --Currency Conversion Type
205368  , p_source_94            IN VARCHAR2
205369 --Accounted Amount
205370  , p_source_95            IN NUMBER
205371 --Purchasing Encumbrance Type Identifier
205372  , p_source_96            IN NUMBER
205373 --Accounting Line Type
205374  , p_source_97            IN NUMBER
205375 --Costing Encumbrance Upgrade Option
205376  , p_source_100            IN VARCHAR2
205377 --TXN_PO_DISTRIBUTION_ID
205378  , p_source_101            IN NUMBER
205379 --Subinventory Type Indicator
205380  , p_source_110            IN VARCHAR2
205381  , p_source_110_meaning    IN VARCHAR2
205382 )
205383 IS
205384 
205385 l_component_type              VARCHAR2(80);
205386 l_component_code              VARCHAR2(30);
205387 l_component_type_code         VARCHAR2(1);
205388 l_component_appl_id           INTEGER;
205389 l_amb_context_code            VARCHAR2(30);
205390 l_entity_code                 VARCHAR2(30);
205391 l_event_class_code            VARCHAR2(30);
205392 l_ae_header_id                NUMBER;
205393 l_event_type_code             VARCHAR2(30);
205394 l_line_definition_code        VARCHAR2(30);
205395 l_line_definition_owner_code  VARCHAR2(1);
205396 --
205397 -- adr variables
205398 l_segment                     VARCHAR2(30);
205399 l_ccid                        NUMBER;
205400 l_adr_transaction_coa_id      NUMBER;
205401 l_adr_accounting_coa_id       NUMBER;
205402 l_adr_flexfield_segment_code  VARCHAR2(30);
205403 l_adr_flex_value_set_id       NUMBER;
205404 l_adr_value_type_code         VARCHAR2(30);
205405 l_adr_value_combination_id    NUMBER;
205406 l_adr_value_segment_code      VARCHAR2(30);
205407 
205408 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
205409 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
205410 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
205411 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
205412 
205413 -- 4262811 Variables ------------------------------------------------------------------------------------------
205414 l_entered_amt_idx             NUMBER;
205415 l_accted_amt_idx              NUMBER;
205416 l_acc_rev_flag                VARCHAR2(1);
205417 l_accrual_line_num            NUMBER;
205418 l_tmp_amt                     NUMBER;
205419 l_acc_rev_natural_side_code   VARCHAR2(1);
205420 
205421 l_num_entries                 NUMBER;
205422 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
205423 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
205424 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
205425 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
205426 l_recog_line_1                NUMBER;
205427 l_recog_line_2                NUMBER;
205428 
205429 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
205430 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
205431 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
205432 
205433 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
205434 
205435 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
205436 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
205437 
205438 ---------------------------------------------------------------------------------------------------------------
205439 
205440 
205441 --
205442 -- bulk performance
205443 --
205444 l_balance_type_code           VARCHAR2(1);
205445 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
205446 l_log_module                  VARCHAR2(240);
205447 
205448 --
205449 -- Upgrade strategy
205450 --
205451 l_actual_upg_option           VARCHAR2(1);
205452 l_enc_upg_option           VARCHAR2(1);
205453 
205454 --
205455 BEGIN
205456 --
205457 IF g_log_enabled THEN
205458       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_375';
205459 END IF;
205460 --
205461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205462 
205463       trace
205464          (p_msg      => 'BEGIN of AcctLineType_375'
205465          ,p_level    => C_LEVEL_PROCEDURE
205466          ,p_module   => l_log_module);
205467 
205468 END IF;
205469 --
205470 l_component_type             := 'AMB_JLT';
205471 l_component_code             := 'PI_BRIDGING';
205472 l_component_type_code        := 'S';
205473 l_component_appl_id          :=  707;
205474 l_amb_context_code           := 'DEFAULT';
205475 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
205476 l_event_class_code           := 'PURCHASE_ORDER';
205477 l_event_type_code            := 'PO_DEL_INV';
205478 l_line_definition_owner_code := 'S';
205479 l_line_definition_code       := 'PI_PO_DEL_INV';
205480 --
205481 l_balance_type_code          := 'A';
205482 l_segment                     := NULL;
205483 l_ccid                        := NULL;
205484 l_adr_transaction_coa_id      := NULL;
205485 l_adr_accounting_coa_id       := NULL;
205486 l_adr_flexfield_segment_code  := NULL;
205487 l_adr_flex_value_set_id       := NULL;
205488 l_adr_value_type_code         := NULL;
205489 l_adr_value_combination_id    := NULL;
205490 l_adr_value_segment_code      := NULL;
205491 
205492 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
205493 l_bflow_class_code           := '';    -- 4219869 Business Flow
205494 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
205495 l_budgetary_control_flag     := 'N';
205496 
205497 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
205498 l_bflow_applied_to_amt       := NULL; -- 5132302
205499 l_entered_amt_idx            := NULL;          -- 4262811
205500 l_accted_amt_idx             := NULL;          -- 4262811
205501 l_acc_rev_flag               := NULL;          -- 4262811
205502 l_accrual_line_num           := NULL;          -- 4262811
205503 l_tmp_amt                    := NULL;          -- 4262811
205504 --
205505  
205506 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
205507     l_balance_type_code <> 'B' THEN
205508 IF (NVL(p_source_97,9E125) =  5 AND 
205509 p_source_110 IS NOT NULL AND 
205510 NVL(p_source_110,'
205511 ') =  'Y')
205512  THEN 
205513 
205514    --
205515    XLA_AE_LINES_PKG.SetNewLine;
205516 
205517    p_balance_type_code          := l_balance_type_code;
205518    -- set the flag so later we will know whether the gain loss line needs to be created
205519    
205520    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
205521      p_actual_flag :='A';
205522    END IF;
205523 
205524    --
205525    -- bulk performance
205526    --
205527    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
205528                                       p_header_num   => 0); -- 4262811
205529    --
205530    -- set accounting line options
205531    --
205532    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
205533            p_natural_side_code          => 'D'
205534          , p_gain_or_loss_flag          => 'N'
205535          , p_gl_transfer_mode_code      => 'S'
205536          , p_acct_entry_type_code       => 'A'
205537          , p_switch_side_flag           => 'Y'
205538          , p_merge_duplicate_code       => 'N'
205539          );
205540    --
205541    l_acc_rev_natural_side_code := 'C';  -- 4262811
205542    -- 
205543    --
205544    -- set accounting line type info
205545    --
205546    xla_ae_lines_pkg.SetAcctLineType
205547       (p_component_type             => l_component_type
205548       ,p_event_type_code            => l_event_type_code
205549       ,p_line_definition_owner_code => l_line_definition_owner_code
205550       ,p_line_definition_code       => l_line_definition_code
205551       ,p_accounting_line_code       => l_component_code
205552       ,p_accounting_line_type_code  => l_component_type_code
205553       ,p_accounting_line_appl_id    => l_component_appl_id
205554       ,p_amb_context_code           => l_amb_context_code
205555       ,p_entity_code                => l_entity_code
205556       ,p_event_class_code           => l_event_class_code);
205557    --
205558    -- set accounting class
205559    --
205560    xla_ae_lines_pkg.SetAcctClass(
205561            p_accounting_class_code  => 'BRIDGING'
205562          , p_ae_header_id           => l_ae_header_id
205563          );
205564 
205565    --
205566    -- set rounding class
205567    --
205568    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
205569                       'BRIDGING';
205570 
205571    --
205572    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
205573    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
205574    --
205575    -- bulk performance
205576    --
205577    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
205578 
205579    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
205580       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
205581 
205582    -- 4955764
205583    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
205584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
205585 
205586    -- 4458381 Public Sector Enh
205587    
205588    --
205589    -- set accounting attributes for the line type
205590    --
205591    l_entered_amt_idx := 17;
205592    l_accted_amt_idx  := 22;
205593    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
205594    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
205595    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
205596    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
205597    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
205598    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
205599    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
205600    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
205601    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
205602    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
205603    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
205604    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
205605    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
205606    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
205607    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
205608    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
205609    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
205610    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
205611    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
205612    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
205613    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
205614    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
205615    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
205616    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
205617    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
205618    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
205619    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
205620    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
205621    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
205622    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
205623    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
205624    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
205625    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
205626    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
205627    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
205628    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
205629    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
205630    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
205631    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
205632    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
205633    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
205634    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
205635    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
205636    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
205637    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
205638    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
205639    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
205640    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
205641    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
205642 
205643    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
205644    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
205645 
205646    ---------------------------------------------------------------------------------------------------------------
205647    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
205648    ---------------------------------------------------------------------------------------------------------------
205649    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
205650 
205651    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
205652    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
205653 
205654    IF xla_accounting_cache_pkg.GetValueChar
205655          (p_source_code         => 'LEDGER_CATEGORY_CODE'
205656          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
205657    AND l_bflow_method_code = 'PRIOR_ENTRY'
205658 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
205659    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
205660          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
205661        )
205662    THEN
205663          xla_ae_lines_pkg.BflowUpgEntry
205664            (p_business_method_code    => l_bflow_method_code
205665            ,p_business_class_code     => l_bflow_class_code
205666            ,p_balance_type            => l_balance_type_code);
205667    ELSE
205668       NULL;
205669 -- No business flow processing for business flow method of NONE.
205670    END IF;
205671 
205672    --
205673    -- call analytical criteria
205674    --
205675    
205676    --
205677    -- call description
205678    --
205679    
205680 xla_ae_lines_pkg.SetLineDescription(
205681    p_ae_header_id => l_ae_header_id
205682   ,p_description  => Description_1 (
205683      p_application_id         => p_application_id
205684    , p_ae_header_id           => l_ae_header_id 
205685 , p_source_1 => p_source_1
205686 , p_source_2 => p_source_2
205687 , p_source_3 => p_source_3
205688 , p_source_4 => p_source_4
205689 , p_source_5 => p_source_5
205690    )
205691 );
205692 
205693 
205694    --
205695    -- call ADRs
205696    -- Bug 4922099
205697    --
205698    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
205699         (NVL(l_actual_upg_option, 'N') = 'O') OR
205700         (NVL(l_enc_upg_option, 'N') = 'O')
205701       )
205702    THEN
205703    NULL;
205704    --
205705    --
205706    
205707   l_ccid := AcctDerRule_11(
205708            p_application_id           => p_application_id
205709          , p_ae_header_id             => l_ae_header_id 
205710 , p_source_22 => p_source_22
205711          , x_transaction_coa_id       => l_adr_transaction_coa_id
205712          , x_accounting_coa_id        => l_adr_accounting_coa_id
205713          , x_value_type_code          => l_adr_value_type_code
205714          , p_side                     => 'NA'
205715    );
205716 
205717    xla_ae_lines_pkg.set_ccid(
205718     p_code_combination_id          => l_ccid
205719   , p_value_type_code              => l_adr_value_type_code
205720   , p_transaction_coa_id           => l_adr_transaction_coa_id
205721   , p_accounting_coa_id            => l_adr_accounting_coa_id
205722   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
205723   , p_adr_type_code                => 'S'
205724   , p_component_type               => l_component_type
205725   , p_component_code               => l_component_code
205726   , p_component_type_code          => l_component_type_code
205727   , p_component_appl_id            => l_component_appl_id
205728   , p_amb_context_code             => l_amb_context_code
205729   , p_side                         => 'NA'
205730   );
205731 
205732 
205733    --
205734    --
205735    END IF;
205736    --
205737    -- Bug 4922099
205738    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
205739           (NVL(l_enc_upg_option, 'N') = 'O')
205740         ) AND
205741         (l_bflow_method_code = 'PRIOR_ENTRY')
205742       )
205743    THEN
205744       IF
205745       --
205746       1 = 2
205747       --
205748       THEN
205749       xla_accounting_err_pkg.build_message
205750                                     (p_appli_s_name            => 'XLA'
205751                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
205752                                     ,p_token_1                 => 'LINE_NUMBER'
205753                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
205754                                     ,p_token_2                 => 'LINE_TYPE_NAME'
205755                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
205756                                                                              l_component_type
205757                                                                             ,l_component_code
205758                                                                             ,l_component_type_code
205759                                                                             ,l_component_appl_id
205760                                                                             ,l_amb_context_code
205761                                                                             ,l_entity_code
205762                                                                             ,l_event_class_code
205763                                                                            )
205764                                     ,p_token_3                 => 'OWNER'
205765                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
205766                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
205767                                                                           ,p_lookup_code    => l_component_type_code
205768                                                                          )
205769                                     ,p_token_4                 => 'PRODUCT_NAME'
205770                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
205771                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
205772                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
205773                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
205774                                     ,p_ae_header_id            =>  NULL
205775                                        );
205776 
205777         IF (C_LEVEL_ERROR>= g_log_level) THEN
205778                  trace
205779                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
205780                       ,p_level    => C_LEVEL_ERROR
205781                       ,p_module   => l_log_module);
205782         END IF;
205783       END IF;
205784    END IF;
205785    --
205786    --
205787    ------------------------------------------------------------------------------------------------
205788    -- 4219869 Business Flow
205789    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
205790    -- Prior Entry.  Currently, the following code is always generated.
205791    ------------------------------------------------------------------------------------------------
205792    XLA_AE_LINES_PKG.ValidateCurrentLine;
205793 
205794    ------------------------------------------------------------------------------------
205795    -- 4219869 Business Flow
205796    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
205797    ------------------------------------------------------------------------------------
205798    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
205799 
205800    ----------------------------------------------------------------------------------
205801    -- 4219869 Business Flow
205802    -- Update journal entry status -- Need to generate this within IF <condition>
205803    ----------------------------------------------------------------------------------
205804    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
205805          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
205806          ,p_balance_type_code => l_balance_type_code
205807          );
205808 
205809    -------------------------------------------------------------------------------------------
205810    -- 4262811 - Generate the Accrual Reversal lines
205811    -------------------------------------------------------------------------------------------
205812    BEGIN
205813       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
205814                               (g_array_event(p_event_id).array_value_num('header_index'));
205815       IF l_acc_rev_flag IS NULL THEN
205816          l_acc_rev_flag := 'N';
205817       END IF;
205818    EXCEPTION
205819       WHEN OTHERS THEN
205820          l_acc_rev_flag := 'N';
205821    END;
205822    --
205823    IF (l_acc_rev_flag = 'Y') THEN
205824 
205825        -- 4645092  ------------------------------------------------------------------------------
205826        -- To allow MPA report to determine if it should generate report process
205827        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
205828        ------------------------------------------------------------------------------------------
205829 
205830        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
205831        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
205832    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
205833    -- call ADRs
205834    -- Bug 4922099
205835    --
205836    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
205837         (NVL(l_actual_upg_option, 'N') = 'O') OR
205838         (NVL(l_enc_upg_option, 'N') = 'O')
205839       )
205840    THEN
205841    NULL;
205842    --
205843    --
205844    
205845   l_ccid := AcctDerRule_11(
205846            p_application_id           => p_application_id
205847          , p_ae_header_id             => l_ae_header_id 
205848 , p_source_22 => p_source_22
205849          , x_transaction_coa_id       => l_adr_transaction_coa_id
205850          , x_accounting_coa_id        => l_adr_accounting_coa_id
205851          , x_value_type_code          => l_adr_value_type_code
205852          , p_side                     => 'NA'
205853    );
205854 
205855    xla_ae_lines_pkg.set_ccid(
205856     p_code_combination_id          => l_ccid
205857   , p_value_type_code              => l_adr_value_type_code
205858   , p_transaction_coa_id           => l_adr_transaction_coa_id
205859   , p_accounting_coa_id            => l_adr_accounting_coa_id
205860   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
205861   , p_adr_type_code                => 'S'
205862   , p_component_type               => l_component_type
205863   , p_component_code               => l_component_code
205864   , p_component_type_code          => l_component_type_code
205865   , p_component_appl_id            => l_component_appl_id
205866   , p_amb_context_code             => l_amb_context_code
205867   , p_side                         => 'NA'
205868   );
205869 
205870 
205871    --
205872    --
205873    END IF;
205874 
205875        --
205876        -- Update the line information that should be overwritten
205877        --
205878        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
205879                                          p_header_num   => 1);
205880        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
205881 
205882        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
205883 
205884        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
205885           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
205886        END IF;
205887 
205888       --
205889       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
205890       --
205891       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
205892           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
205893       ELSE
205894           ---------------------------------------------------------------------------------------------------
205895           -- 4262811a Switch Sign
205896           ---------------------------------------------------------------------------------------------------
205897           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
205898           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
205899                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
205900           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
205901                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
205902           -- 5132302
205903           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
205904                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
205905 
205906       END IF;
205907 
205908       -- 4955764
205909       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
205910       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
205911 
205912 
205913       XLA_AE_LINES_PKG.ValidateCurrentLine;
205914       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
205915 
205916       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
205917                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
205918                ,p_balance_type_code => l_balance_type_code);
205919 
205920    END IF;
205921 
205922    -----------------------------------------------------------------------------------------
205923    -- 4262811 Multiperiod Accounting
205924    -----------------------------------------------------------------------------------------
205925      -- No MPA option is assigned.
205926 
205927 
205928 END IF;
205929 END IF;
205930 --
205931 
205932 --
205933 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205934    trace
205935       (p_msg      => 'END of AcctLineType_375'
205936       ,p_level    => C_LEVEL_PROCEDURE
205937       ,p_module   => l_log_module);
205938 END IF;
205939 --
205940 EXCEPTION
205941   WHEN xla_exceptions_pkg.application_exception THEN
205942       RAISE;
205943   WHEN OTHERS THEN
205944        xla_exceptions_pkg.raise_message
205945            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_375');
205946 END AcctLineType_375;
205947 --
205948 
205949 ---------------------------------------
205950 --
205951 -- PRIVATE FUNCTION
205952 --         AcctLineType_376
205953 --
205954 ---------------------------------------
205955 PROCEDURE AcctLineType_376 (
205956   p_application_id        IN NUMBER
205957  ,p_event_id              IN NUMBER
205958  ,p_calculate_acctd_flag  IN VARCHAR2
205959  ,p_calculate_g_l_flag    IN VARCHAR2
205960  ,p_actual_flag           IN OUT VARCHAR2
205961  ,p_balance_type_code     OUT VARCHAR2
205962  ,p_gain_or_loss_ref      OUT VARCHAR2
205963  
205964 --TRANSACTION_ID
205965  , p_source_1            IN NUMBER
205966 --Item Concatenated Segments
205967  , p_source_2            IN VARCHAR2
205968 --Transaction Quantity
205969  , p_source_3            IN NUMBER
205970 --Transaction Unit of Measure Code
205971  , p_source_4            IN VARCHAR2
205972 --Inventory Transaction Type Description
205973  , p_source_5            IN VARCHAR2
205974 --Product Line Accounting Category Bridging Account
205975  , p_source_22            IN NUMBER
205976 --Applied to Application ID
205977  , p_source_79            IN NUMBER
205978 --Applied to Distribution Link Type
205979  , p_source_80            IN VARCHAR2
205980 --Applied to Entity Code
205981  , p_source_81            IN VARCHAR2
205982 --DISTRIBUTION_IDENTIFIER
205983  , p_source_84            IN NUMBER
205984 --Distribution Type
205985  , p_source_85            IN VARCHAR2
205986  , p_source_85_meaning    IN VARCHAR2
205987 --Encumbrance Reversal Amount Entered
205988  , p_source_87            IN NUMBER
205989 --Entered Currency Code
205990  , p_source_88            IN VARCHAR2
205991 --Transaction Encumbrance Reversal Amount
205992  , p_source_89            IN NUMBER
205993 --Entered Amount
205994  , p_source_91            IN NUMBER
205995 --Currency Conversion Date
205996  , p_source_92            IN DATE
205997 --Currency Conversion Rate
205998  , p_source_93            IN NUMBER
205999 --Currency Conversion Type
206000  , p_source_94            IN VARCHAR2
206001 --Accounted Amount
206002  , p_source_95            IN NUMBER
206003 --Accounting Line Type
206004  , p_source_97            IN NUMBER
206005 --Costing Encumbrance Upgrade Option
206006  , p_source_100            IN VARCHAR2
206007 --TXN_PO_DISTRIBUTION_ID
206008  , p_source_101            IN NUMBER
206009 --TXN_PO_HEADER_ID
206010  , p_source_102            IN NUMBER
206011 --Requisition Budget Account
206012  , p_source_103            IN NUMBER
206013 --Requisition Encumbrance Type Identifier
206014  , p_source_104            IN NUMBER
206015 )
206016 IS
206017 
206018 l_component_type              VARCHAR2(80);
206019 l_component_code              VARCHAR2(30);
206020 l_component_type_code         VARCHAR2(1);
206021 l_component_appl_id           INTEGER;
206022 l_amb_context_code            VARCHAR2(30);
206023 l_entity_code                 VARCHAR2(30);
206024 l_event_class_code            VARCHAR2(30);
206025 l_ae_header_id                NUMBER;
206026 l_event_type_code             VARCHAR2(30);
206027 l_line_definition_code        VARCHAR2(30);
206028 l_line_definition_owner_code  VARCHAR2(1);
206029 --
206030 -- adr variables
206031 l_segment                     VARCHAR2(30);
206032 l_ccid                        NUMBER;
206033 l_adr_transaction_coa_id      NUMBER;
206034 l_adr_accounting_coa_id       NUMBER;
206035 l_adr_flexfield_segment_code  VARCHAR2(30);
206036 l_adr_flex_value_set_id       NUMBER;
206037 l_adr_value_type_code         VARCHAR2(30);
206038 l_adr_value_combination_id    NUMBER;
206039 l_adr_value_segment_code      VARCHAR2(30);
206040 
206041 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
206042 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
206043 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
206044 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
206045 
206046 -- 4262811 Variables ------------------------------------------------------------------------------------------
206047 l_entered_amt_idx             NUMBER;
206048 l_accted_amt_idx              NUMBER;
206049 l_acc_rev_flag                VARCHAR2(1);
206050 l_accrual_line_num            NUMBER;
206051 l_tmp_amt                     NUMBER;
206052 l_acc_rev_natural_side_code   VARCHAR2(1);
206053 
206054 l_num_entries                 NUMBER;
206055 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
206056 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
206057 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
206058 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
206059 l_recog_line_1                NUMBER;
206060 l_recog_line_2                NUMBER;
206061 
206062 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
206063 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
206064 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
206065 
206066 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
206067 
206068 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
206069 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
206070 
206071 ---------------------------------------------------------------------------------------------------------------
206072 
206073 
206074 --
206075 -- bulk performance
206076 --
206077 l_balance_type_code           VARCHAR2(1);
206078 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
206079 l_log_module                  VARCHAR2(240);
206080 
206081 --
206082 -- Upgrade strategy
206083 --
206084 l_actual_upg_option           VARCHAR2(1);
206085 l_enc_upg_option           VARCHAR2(1);
206086 
206087 --
206088 BEGIN
206089 --
206090 IF g_log_enabled THEN
206091       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_376';
206092 END IF;
206093 --
206094 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206095 
206096       trace
206097          (p_msg      => 'BEGIN of AcctLineType_376'
206098          ,p_level    => C_LEVEL_PROCEDURE
206099          ,p_module   => l_log_module);
206100 
206101 END IF;
206102 --
206103 l_component_type             := 'AMB_JLT';
206104 l_component_code             := 'PI_BRIDGING';
206105 l_component_type_code        := 'S';
206106 l_component_appl_id          :=  707;
206107 l_amb_context_code           := 'DEFAULT';
206108 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
206109 l_event_class_code           := 'DIR_INTERORG_RCPT';
206110 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
206111 l_line_definition_owner_code := 'S';
206112 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
206113 --
206114 l_balance_type_code          := 'A';
206115 l_segment                     := NULL;
206116 l_ccid                        := NULL;
206117 l_adr_transaction_coa_id      := NULL;
206118 l_adr_accounting_coa_id       := NULL;
206119 l_adr_flexfield_segment_code  := NULL;
206120 l_adr_flex_value_set_id       := NULL;
206121 l_adr_value_type_code         := NULL;
206122 l_adr_value_combination_id    := NULL;
206123 l_adr_value_segment_code      := NULL;
206124 
206125 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
206126 l_bflow_class_code           := '';    -- 4219869 Business Flow
206127 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
206128 l_budgetary_control_flag     := 'N';
206129 
206130 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
206131 l_bflow_applied_to_amt       := NULL; -- 5132302
206132 l_entered_amt_idx            := NULL;          -- 4262811
206133 l_accted_amt_idx             := NULL;          -- 4262811
206134 l_acc_rev_flag               := NULL;          -- 4262811
206135 l_accrual_line_num           := NULL;          -- 4262811
206136 l_tmp_amt                    := NULL;          -- 4262811
206137 --
206138  
206139 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
206140     l_balance_type_code <> 'B' THEN
206141 IF NVL(p_source_97,9E125) =  1
206142  THEN 
206143 
206144    --
206145    XLA_AE_LINES_PKG.SetNewLine;
206146 
206147    p_balance_type_code          := l_balance_type_code;
206148    -- set the flag so later we will know whether the gain loss line needs to be created
206149    
206150    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
206151      p_actual_flag :='A';
206152    END IF;
206153 
206154    --
206155    -- bulk performance
206156    --
206157    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
206158                                       p_header_num   => 0); -- 4262811
206159    --
206160    -- set accounting line options
206161    --
206162    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
206163            p_natural_side_code          => 'C'
206164          , p_gain_or_loss_flag          => 'N'
206165          , p_gl_transfer_mode_code      => 'S'
206166          , p_acct_entry_type_code       => 'A'
206167          , p_switch_side_flag           => 'Y'
206168          , p_merge_duplicate_code       => 'N'
206169          );
206170    --
206171    l_acc_rev_natural_side_code := 'D';  -- 4262811
206172    -- 
206173    --
206174    -- set accounting line type info
206175    --
206176    xla_ae_lines_pkg.SetAcctLineType
206177       (p_component_type             => l_component_type
206178       ,p_event_type_code            => l_event_type_code
206179       ,p_line_definition_owner_code => l_line_definition_owner_code
206180       ,p_line_definition_code       => l_line_definition_code
206181       ,p_accounting_line_code       => l_component_code
206182       ,p_accounting_line_type_code  => l_component_type_code
206183       ,p_accounting_line_appl_id    => l_component_appl_id
206184       ,p_amb_context_code           => l_amb_context_code
206185       ,p_entity_code                => l_entity_code
206186       ,p_event_class_code           => l_event_class_code);
206187    --
206188    -- set accounting class
206189    --
206190    xla_ae_lines_pkg.SetAcctClass(
206191            p_accounting_class_code  => 'BRIDGING'
206192          , p_ae_header_id           => l_ae_header_id
206193          );
206194 
206195    --
206196    -- set rounding class
206197    --
206198    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
206199                       'BRIDGING';
206200 
206201    --
206202    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
206203    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
206204    --
206205    -- bulk performance
206206    --
206207    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
206208 
206209    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
206210       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
206211 
206212    -- 4955764
206213    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
206214       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
206215 
206216    -- 4458381 Public Sector Enh
206217    
206218    --
206219    -- set accounting attributes for the line type
206220    --
206221    l_entered_amt_idx := 17;
206222    l_accted_amt_idx  := 22;
206223    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
206224    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
206225    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
206226    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
206227    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
206228    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
206229    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
206230    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
206231    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
206232    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
206233    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
206234    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
206235    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
206236    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
206237    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
206238    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
206239    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
206240    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
206241    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
206242    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
206243    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
206244    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
206245    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
206246    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
206247    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
206248    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
206249    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
206250    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
206251    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
206252    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
206253    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
206254    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
206255    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
206256    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
206257    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
206258    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
206259    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
206260    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
206261    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
206262    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
206263    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
206264    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
206265    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
206266    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
206267    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
206268    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
206269    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
206270    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
206271    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
206272 
206273    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
206274    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
206275 
206276    ---------------------------------------------------------------------------------------------------------------
206277    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
206278    ---------------------------------------------------------------------------------------------------------------
206279    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
206280 
206281    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
206282    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
206283 
206284    IF xla_accounting_cache_pkg.GetValueChar
206285          (p_source_code         => 'LEDGER_CATEGORY_CODE'
206286          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
206287    AND l_bflow_method_code = 'PRIOR_ENTRY'
206288 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
206289    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
206290          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
206291        )
206292    THEN
206293          xla_ae_lines_pkg.BflowUpgEntry
206294            (p_business_method_code    => l_bflow_method_code
206295            ,p_business_class_code     => l_bflow_class_code
206296            ,p_balance_type            => l_balance_type_code);
206297    ELSE
206298       NULL;
206299 -- No business flow processing for business flow method of NONE.
206300    END IF;
206301 
206302    --
206303    -- call analytical criteria
206304    --
206305    
206306    --
206307    -- call description
206308    --
206309    
206310 xla_ae_lines_pkg.SetLineDescription(
206311    p_ae_header_id => l_ae_header_id
206312   ,p_description  => Description_1 (
206313      p_application_id         => p_application_id
206314    , p_ae_header_id           => l_ae_header_id 
206315 , p_source_1 => p_source_1
206316 , p_source_2 => p_source_2
206317 , p_source_3 => p_source_3
206318 , p_source_4 => p_source_4
206319 , p_source_5 => p_source_5
206320    )
206321 );
206322 
206323 
206324    --
206325    -- call ADRs
206326    -- Bug 4922099
206327    --
206328    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
206329         (NVL(l_actual_upg_option, 'N') = 'O') OR
206330         (NVL(l_enc_upg_option, 'N') = 'O')
206331       )
206332    THEN
206333    NULL;
206334    --
206335    --
206336    
206337   l_ccid := AcctDerRule_11(
206338            p_application_id           => p_application_id
206339          , p_ae_header_id             => l_ae_header_id 
206340 , p_source_22 => p_source_22
206341          , x_transaction_coa_id       => l_adr_transaction_coa_id
206342          , x_accounting_coa_id        => l_adr_accounting_coa_id
206343          , x_value_type_code          => l_adr_value_type_code
206344          , p_side                     => 'NA'
206345    );
206346 
206347    xla_ae_lines_pkg.set_ccid(
206348     p_code_combination_id          => l_ccid
206349   , p_value_type_code              => l_adr_value_type_code
206350   , p_transaction_coa_id           => l_adr_transaction_coa_id
206351   , p_accounting_coa_id            => l_adr_accounting_coa_id
206352   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
206353   , p_adr_type_code                => 'S'
206354   , p_component_type               => l_component_type
206355   , p_component_code               => l_component_code
206356   , p_component_type_code          => l_component_type_code
206357   , p_component_appl_id            => l_component_appl_id
206358   , p_amb_context_code             => l_amb_context_code
206359   , p_side                         => 'NA'
206360   );
206361 
206362 
206363    --
206364    --
206365    END IF;
206366    --
206367    -- Bug 4922099
206368    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
206369           (NVL(l_enc_upg_option, 'N') = 'O')
206370         ) AND
206371         (l_bflow_method_code = 'PRIOR_ENTRY')
206372       )
206373    THEN
206374       IF
206375       --
206376       1 = 2
206377       --
206378       THEN
206379       xla_accounting_err_pkg.build_message
206380                                     (p_appli_s_name            => 'XLA'
206381                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
206382                                     ,p_token_1                 => 'LINE_NUMBER'
206383                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
206384                                     ,p_token_2                 => 'LINE_TYPE_NAME'
206385                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
206386                                                                              l_component_type
206387                                                                             ,l_component_code
206388                                                                             ,l_component_type_code
206389                                                                             ,l_component_appl_id
206390                                                                             ,l_amb_context_code
206391                                                                             ,l_entity_code
206392                                                                             ,l_event_class_code
206393                                                                            )
206394                                     ,p_token_3                 => 'OWNER'
206395                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
206396                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
206397                                                                           ,p_lookup_code    => l_component_type_code
206398                                                                          )
206399                                     ,p_token_4                 => 'PRODUCT_NAME'
206400                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
206401                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
206402                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
206403                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
206404                                     ,p_ae_header_id            =>  NULL
206405                                        );
206406 
206407         IF (C_LEVEL_ERROR>= g_log_level) THEN
206408                  trace
206409                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
206410                       ,p_level    => C_LEVEL_ERROR
206411                       ,p_module   => l_log_module);
206412         END IF;
206413       END IF;
206414    END IF;
206415    --
206416    --
206417    ------------------------------------------------------------------------------------------------
206418    -- 4219869 Business Flow
206419    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
206420    -- Prior Entry.  Currently, the following code is always generated.
206421    ------------------------------------------------------------------------------------------------
206422    XLA_AE_LINES_PKG.ValidateCurrentLine;
206423 
206424    ------------------------------------------------------------------------------------
206425    -- 4219869 Business Flow
206426    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
206427    ------------------------------------------------------------------------------------
206428    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
206429 
206430    ----------------------------------------------------------------------------------
206431    -- 4219869 Business Flow
206432    -- Update journal entry status -- Need to generate this within IF <condition>
206433    ----------------------------------------------------------------------------------
206434    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
206435          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
206436          ,p_balance_type_code => l_balance_type_code
206437          );
206438 
206439    -------------------------------------------------------------------------------------------
206440    -- 4262811 - Generate the Accrual Reversal lines
206441    -------------------------------------------------------------------------------------------
206442    BEGIN
206443       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
206444                               (g_array_event(p_event_id).array_value_num('header_index'));
206445       IF l_acc_rev_flag IS NULL THEN
206446          l_acc_rev_flag := 'N';
206447       END IF;
206448    EXCEPTION
206449       WHEN OTHERS THEN
206450          l_acc_rev_flag := 'N';
206451    END;
206452    --
206453    IF (l_acc_rev_flag = 'Y') THEN
206454 
206455        -- 4645092  ------------------------------------------------------------------------------
206456        -- To allow MPA report to determine if it should generate report process
206457        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
206458        ------------------------------------------------------------------------------------------
206459 
206460        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
206461        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
206462    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
206463    -- call ADRs
206464    -- Bug 4922099
206465    --
206466    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
206467         (NVL(l_actual_upg_option, 'N') = 'O') OR
206468         (NVL(l_enc_upg_option, 'N') = 'O')
206469       )
206470    THEN
206471    NULL;
206472    --
206473    --
206474    
206475   l_ccid := AcctDerRule_11(
206476            p_application_id           => p_application_id
206477          , p_ae_header_id             => l_ae_header_id 
206478 , p_source_22 => p_source_22
206479          , x_transaction_coa_id       => l_adr_transaction_coa_id
206480          , x_accounting_coa_id        => l_adr_accounting_coa_id
206481          , x_value_type_code          => l_adr_value_type_code
206482          , p_side                     => 'NA'
206483    );
206484 
206485    xla_ae_lines_pkg.set_ccid(
206486     p_code_combination_id          => l_ccid
206487   , p_value_type_code              => l_adr_value_type_code
206488   , p_transaction_coa_id           => l_adr_transaction_coa_id
206489   , p_accounting_coa_id            => l_adr_accounting_coa_id
206490   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
206491   , p_adr_type_code                => 'S'
206492   , p_component_type               => l_component_type
206493   , p_component_code               => l_component_code
206494   , p_component_type_code          => l_component_type_code
206495   , p_component_appl_id            => l_component_appl_id
206496   , p_amb_context_code             => l_amb_context_code
206497   , p_side                         => 'NA'
206498   );
206499 
206500 
206501    --
206502    --
206503    END IF;
206504 
206505        --
206506        -- Update the line information that should be overwritten
206507        --
206508        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
206509                                          p_header_num   => 1);
206510        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
206511 
206512        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
206513 
206514        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
206515           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
206516        END IF;
206517 
206518       --
206519       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
206520       --
206521       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
206522           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
206523       ELSE
206524           ---------------------------------------------------------------------------------------------------
206525           -- 4262811a Switch Sign
206526           ---------------------------------------------------------------------------------------------------
206527           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
206528           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
206529                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
206530           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
206531                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
206532           -- 5132302
206533           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
206534                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
206535 
206536       END IF;
206537 
206538       -- 4955764
206539       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
206540       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
206541 
206542 
206543       XLA_AE_LINES_PKG.ValidateCurrentLine;
206544       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
206545 
206546       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
206547                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
206548                ,p_balance_type_code => l_balance_type_code);
206549 
206550    END IF;
206551 
206552    -----------------------------------------------------------------------------------------
206553    -- 4262811 Multiperiod Accounting
206554    -----------------------------------------------------------------------------------------
206555      -- No MPA option is assigned.
206556 
206557 
206558 END IF;
206559 END IF;
206560 --
206561 
206562 --
206563 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206564    trace
206565       (p_msg      => 'END of AcctLineType_376'
206566       ,p_level    => C_LEVEL_PROCEDURE
206567       ,p_module   => l_log_module);
206568 END IF;
206569 --
206570 EXCEPTION
206571   WHEN xla_exceptions_pkg.application_exception THEN
206572       RAISE;
206573   WHEN OTHERS THEN
206574        xla_exceptions_pkg.raise_message
206575            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_376');
206576 END AcctLineType_376;
206577 --
206578 
206579 ---------------------------------------
206580 --
206581 -- PRIVATE FUNCTION
206582 --         AcctLineType_377
206583 --
206584 ---------------------------------------
206585 PROCEDURE AcctLineType_377 (
206586   p_application_id        IN NUMBER
206587  ,p_event_id              IN NUMBER
206588  ,p_calculate_acctd_flag  IN VARCHAR2
206589  ,p_calculate_g_l_flag    IN VARCHAR2
206590  ,p_actual_flag           IN OUT VARCHAR2
206591  ,p_balance_type_code     OUT VARCHAR2
206592  ,p_gain_or_loss_ref      OUT VARCHAR2
206593  
206594 --TRANSACTION_ID
206595  , p_source_1            IN NUMBER
206596 --Item Concatenated Segments
206597  , p_source_2            IN VARCHAR2
206598 --Transaction Quantity
206599  , p_source_3            IN NUMBER
206600 --Transaction Unit of Measure Code
206601  , p_source_4            IN VARCHAR2
206602 --Inventory Transaction Type Description
206603  , p_source_5            IN VARCHAR2
206604 --Product Line Accounting Category Bridging Account
206605  , p_source_22            IN NUMBER
206606 --DISTRIBUTION_IDENTIFIER
206607  , p_source_84            IN NUMBER
206608 --Distribution Type
206609  , p_source_85            IN VARCHAR2
206610  , p_source_85_meaning    IN VARCHAR2
206611 --Entered Currency Code
206612  , p_source_88            IN VARCHAR2
206613 --Entered Amount
206614  , p_source_91            IN NUMBER
206615 --Currency Conversion Date
206616  , p_source_92            IN DATE
206617 --Currency Conversion Rate
206618  , p_source_93            IN NUMBER
206619 --Currency Conversion Type
206620  , p_source_94            IN VARCHAR2
206621 --Accounted Amount
206622  , p_source_95            IN NUMBER
206623 --Accounting Line Type
206624  , p_source_97            IN NUMBER
206625 --Subinventory Type Indicator
206626  , p_source_110            IN VARCHAR2
206627  , p_source_110_meaning    IN VARCHAR2
206628 )
206629 IS
206630 
206631 l_component_type              VARCHAR2(80);
206632 l_component_code              VARCHAR2(30);
206633 l_component_type_code         VARCHAR2(1);
206634 l_component_appl_id           INTEGER;
206635 l_amb_context_code            VARCHAR2(30);
206636 l_entity_code                 VARCHAR2(30);
206637 l_event_class_code            VARCHAR2(30);
206638 l_ae_header_id                NUMBER;
206639 l_event_type_code             VARCHAR2(30);
206640 l_line_definition_code        VARCHAR2(30);
206641 l_line_definition_owner_code  VARCHAR2(1);
206642 --
206643 -- adr variables
206644 l_segment                     VARCHAR2(30);
206645 l_ccid                        NUMBER;
206646 l_adr_transaction_coa_id      NUMBER;
206647 l_adr_accounting_coa_id       NUMBER;
206648 l_adr_flexfield_segment_code  VARCHAR2(30);
206649 l_adr_flex_value_set_id       NUMBER;
206650 l_adr_value_type_code         VARCHAR2(30);
206651 l_adr_value_combination_id    NUMBER;
206652 l_adr_value_segment_code      VARCHAR2(30);
206653 
206654 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
206655 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
206656 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
206657 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
206658 
206659 -- 4262811 Variables ------------------------------------------------------------------------------------------
206660 l_entered_amt_idx             NUMBER;
206661 l_accted_amt_idx              NUMBER;
206662 l_acc_rev_flag                VARCHAR2(1);
206663 l_accrual_line_num            NUMBER;
206664 l_tmp_amt                     NUMBER;
206665 l_acc_rev_natural_side_code   VARCHAR2(1);
206666 
206667 l_num_entries                 NUMBER;
206668 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
206669 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
206670 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
206671 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
206672 l_recog_line_1                NUMBER;
206673 l_recog_line_2                NUMBER;
206674 
206675 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
206676 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
206677 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
206678 
206679 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
206680 
206681 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
206682 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
206683 
206684 ---------------------------------------------------------------------------------------------------------------
206685 
206686 
206687 --
206688 -- bulk performance
206689 --
206690 l_balance_type_code           VARCHAR2(1);
206691 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
206692 l_log_module                  VARCHAR2(240);
206693 
206694 --
206695 -- Upgrade strategy
206696 --
206697 l_actual_upg_option           VARCHAR2(1);
206698 l_enc_upg_option           VARCHAR2(1);
206699 
206700 --
206701 BEGIN
206702 --
206703 IF g_log_enabled THEN
206704       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_377';
206705 END IF;
206706 --
206707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206708 
206709       trace
206710          (p_msg      => 'BEGIN of AcctLineType_377'
206711          ,p_level    => C_LEVEL_PROCEDURE
206712          ,p_module   => l_log_module);
206713 
206714 END IF;
206715 --
206716 l_component_type             := 'AMB_JLT';
206717 l_component_code             := 'PI_BRIDGING';
206718 l_component_type_code        := 'S';
206719 l_component_appl_id          :=  707;
206720 l_amb_context_code           := 'DEFAULT';
206721 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
206722 l_event_class_code           := 'WIP_MTL';
206723 l_event_type_code            := 'WIP_ASSEMBLY_RETURN';
206724 l_line_definition_owner_code := 'S';
206725 l_line_definition_code       := 'PI_WIP_ASSEMBLY_RETURN';
206726 --
206727 l_balance_type_code          := 'A';
206728 l_segment                     := NULL;
206729 l_ccid                        := NULL;
206730 l_adr_transaction_coa_id      := NULL;
206731 l_adr_accounting_coa_id       := NULL;
206732 l_adr_flexfield_segment_code  := NULL;
206733 l_adr_flex_value_set_id       := NULL;
206734 l_adr_value_type_code         := NULL;
206735 l_adr_value_combination_id    := NULL;
206736 l_adr_value_segment_code      := NULL;
206737 
206738 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
206739 l_bflow_class_code           := '';    -- 4219869 Business Flow
206740 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
206741 l_budgetary_control_flag     := 'N';
206742 
206743 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
206744 l_bflow_applied_to_amt       := NULL; -- 5132302
206745 l_entered_amt_idx            := NULL;          -- 4262811
206746 l_accted_amt_idx             := NULL;          -- 4262811
206747 l_acc_rev_flag               := NULL;          -- 4262811
206748 l_accrual_line_num           := NULL;          -- 4262811
206749 l_tmp_amt                    := NULL;          -- 4262811
206750 --
206751  
206752 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
206753     l_balance_type_code <> 'B' THEN
206754 IF (NVL(p_source_97,9E125) =  1 OR 
206755 NVL(p_source_97,9E125) =  2 OR 
206756 NVL(p_source_97,9E125) =  3) AND 
206757 NVL(p_source_110,'
206758 ') =  'Y'
206759  THEN 
206760 
206761    --
206762    XLA_AE_LINES_PKG.SetNewLine;
206763 
206764    p_balance_type_code          := l_balance_type_code;
206765    -- set the flag so later we will know whether the gain loss line needs to be created
206766    
206767    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
206768      p_actual_flag :='A';
206769    END IF;
206770 
206771    --
206772    -- bulk performance
206773    --
206774    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
206775                                       p_header_num   => 0); -- 4262811
206776    --
206777    -- set accounting line options
206778    --
206779    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
206780            p_natural_side_code          => 'C'
206781          , p_gain_or_loss_flag          => 'N'
206782          , p_gl_transfer_mode_code      => 'S'
206783          , p_acct_entry_type_code       => 'A'
206784          , p_switch_side_flag           => 'Y'
206785          , p_merge_duplicate_code       => 'N'
206786          );
206787    --
206788    l_acc_rev_natural_side_code := 'D';  -- 4262811
206789    -- 
206790    --
206791    -- set accounting line type info
206792    --
206793    xla_ae_lines_pkg.SetAcctLineType
206794       (p_component_type             => l_component_type
206795       ,p_event_type_code            => l_event_type_code
206796       ,p_line_definition_owner_code => l_line_definition_owner_code
206797       ,p_line_definition_code       => l_line_definition_code
206798       ,p_accounting_line_code       => l_component_code
206799       ,p_accounting_line_type_code  => l_component_type_code
206800       ,p_accounting_line_appl_id    => l_component_appl_id
206801       ,p_amb_context_code           => l_amb_context_code
206802       ,p_entity_code                => l_entity_code
206803       ,p_event_class_code           => l_event_class_code);
206804    --
206805    -- set accounting class
206806    --
206807    xla_ae_lines_pkg.SetAcctClass(
206808            p_accounting_class_code  => 'BRIDGING'
206809          , p_ae_header_id           => l_ae_header_id
206810          );
206811 
206812    --
206813    -- set rounding class
206814    --
206815    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
206816                       'BRIDGING';
206817 
206818    --
206819    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
206820    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
206821    --
206822    -- bulk performance
206823    --
206824    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
206825 
206826    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
206827       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
206828 
206829    -- 4955764
206830    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
206831       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
206832 
206833    -- 4458381 Public Sector Enh
206834    
206835    --
206836    -- set accounting attributes for the line type
206837    --
206838    l_entered_amt_idx := 3;
206839    l_accted_amt_idx  := 8;
206840    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
206841    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
206842    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
206843    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
206844    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
206845    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
206846    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
206847    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
206848    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
206849    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
206850    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
206851    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
206852    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
206853    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
206854    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
206855    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
206856    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
206857 
206858    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
206859    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
206860 
206861    ---------------------------------------------------------------------------------------------------------------
206862    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
206863    ---------------------------------------------------------------------------------------------------------------
206864    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
206865 
206866    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
206867    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
206868 
206869    IF xla_accounting_cache_pkg.GetValueChar
206870          (p_source_code         => 'LEDGER_CATEGORY_CODE'
206871          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
206872    AND l_bflow_method_code = 'PRIOR_ENTRY'
206873 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
206874    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
206875          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
206876        )
206877    THEN
206878          xla_ae_lines_pkg.BflowUpgEntry
206879            (p_business_method_code    => l_bflow_method_code
206880            ,p_business_class_code     => l_bflow_class_code
206881            ,p_balance_type            => l_balance_type_code);
206882    ELSE
206883       NULL;
206884 -- No business flow processing for business flow method of NONE.
206885    END IF;
206886 
206887    --
206888    -- call analytical criteria
206889    --
206890    
206891    --
206892    -- call description
206893    --
206894    
206895 xla_ae_lines_pkg.SetLineDescription(
206896    p_ae_header_id => l_ae_header_id
206897   ,p_description  => Description_1 (
206898      p_application_id         => p_application_id
206899    , p_ae_header_id           => l_ae_header_id 
206900 , p_source_1 => p_source_1
206901 , p_source_2 => p_source_2
206902 , p_source_3 => p_source_3
206903 , p_source_4 => p_source_4
206904 , p_source_5 => p_source_5
206905    )
206906 );
206907 
206908 
206909    --
206910    -- call ADRs
206911    -- Bug 4922099
206912    --
206913    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
206914         (NVL(l_actual_upg_option, 'N') = 'O') OR
206915         (NVL(l_enc_upg_option, 'N') = 'O')
206916       )
206917    THEN
206918    NULL;
206919    --
206920    --
206921    
206922   l_ccid := AcctDerRule_11(
206923            p_application_id           => p_application_id
206924          , p_ae_header_id             => l_ae_header_id 
206925 , p_source_22 => p_source_22
206926          , x_transaction_coa_id       => l_adr_transaction_coa_id
206927          , x_accounting_coa_id        => l_adr_accounting_coa_id
206928          , x_value_type_code          => l_adr_value_type_code
206929          , p_side                     => 'NA'
206930    );
206931 
206932    xla_ae_lines_pkg.set_ccid(
206933     p_code_combination_id          => l_ccid
206934   , p_value_type_code              => l_adr_value_type_code
206935   , p_transaction_coa_id           => l_adr_transaction_coa_id
206936   , p_accounting_coa_id            => l_adr_accounting_coa_id
206937   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
206938   , p_adr_type_code                => 'S'
206939   , p_component_type               => l_component_type
206940   , p_component_code               => l_component_code
206941   , p_component_type_code          => l_component_type_code
206942   , p_component_appl_id            => l_component_appl_id
206943   , p_amb_context_code             => l_amb_context_code
206944   , p_side                         => 'NA'
206945   );
206946 
206947 
206948    --
206949    --
206950    END IF;
206951    --
206952    -- Bug 4922099
206953    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
206954           (NVL(l_enc_upg_option, 'N') = 'O')
206955         ) AND
206956         (l_bflow_method_code = 'PRIOR_ENTRY')
206957       )
206958    THEN
206959       IF
206960       --
206961       1 = 2
206962       --
206963       THEN
206964       xla_accounting_err_pkg.build_message
206965                                     (p_appli_s_name            => 'XLA'
206966                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
206967                                     ,p_token_1                 => 'LINE_NUMBER'
206968                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
206969                                     ,p_token_2                 => 'LINE_TYPE_NAME'
206970                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
206971                                                                              l_component_type
206972                                                                             ,l_component_code
206973                                                                             ,l_component_type_code
206974                                                                             ,l_component_appl_id
206975                                                                             ,l_amb_context_code
206976                                                                             ,l_entity_code
206977                                                                             ,l_event_class_code
206978                                                                            )
206979                                     ,p_token_3                 => 'OWNER'
206980                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
206981                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
206982                                                                           ,p_lookup_code    => l_component_type_code
206983                                                                          )
206984                                     ,p_token_4                 => 'PRODUCT_NAME'
206985                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
206986                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
206987                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
206988                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
206989                                     ,p_ae_header_id            =>  NULL
206990                                        );
206991 
206992         IF (C_LEVEL_ERROR>= g_log_level) THEN
206993                  trace
206994                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
206995                       ,p_level    => C_LEVEL_ERROR
206996                       ,p_module   => l_log_module);
206997         END IF;
206998       END IF;
206999    END IF;
207000    --
207001    --
207002    ------------------------------------------------------------------------------------------------
207003    -- 4219869 Business Flow
207004    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
207005    -- Prior Entry.  Currently, the following code is always generated.
207006    ------------------------------------------------------------------------------------------------
207007    XLA_AE_LINES_PKG.ValidateCurrentLine;
207008 
207009    ------------------------------------------------------------------------------------
207010    -- 4219869 Business Flow
207011    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
207012    ------------------------------------------------------------------------------------
207013    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
207014 
207015    ----------------------------------------------------------------------------------
207016    -- 4219869 Business Flow
207017    -- Update journal entry status -- Need to generate this within IF <condition>
207018    ----------------------------------------------------------------------------------
207019    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
207020          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
207021          ,p_balance_type_code => l_balance_type_code
207022          );
207023 
207024    -------------------------------------------------------------------------------------------
207025    -- 4262811 - Generate the Accrual Reversal lines
207026    -------------------------------------------------------------------------------------------
207027    BEGIN
207028       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
207029                               (g_array_event(p_event_id).array_value_num('header_index'));
207030       IF l_acc_rev_flag IS NULL THEN
207031          l_acc_rev_flag := 'N';
207032       END IF;
207033    EXCEPTION
207034       WHEN OTHERS THEN
207035          l_acc_rev_flag := 'N';
207036    END;
207037    --
207038    IF (l_acc_rev_flag = 'Y') THEN
207039 
207040        -- 4645092  ------------------------------------------------------------------------------
207041        -- To allow MPA report to determine if it should generate report process
207042        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
207043        ------------------------------------------------------------------------------------------
207044 
207045        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
207046        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
207047    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
207048    -- call ADRs
207049    -- Bug 4922099
207050    --
207051    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
207052         (NVL(l_actual_upg_option, 'N') = 'O') OR
207053         (NVL(l_enc_upg_option, 'N') = 'O')
207054       )
207055    THEN
207056    NULL;
207057    --
207058    --
207059    
207060   l_ccid := AcctDerRule_11(
207061            p_application_id           => p_application_id
207062          , p_ae_header_id             => l_ae_header_id 
207063 , p_source_22 => p_source_22
207064          , x_transaction_coa_id       => l_adr_transaction_coa_id
207065          , x_accounting_coa_id        => l_adr_accounting_coa_id
207066          , x_value_type_code          => l_adr_value_type_code
207067          , p_side                     => 'NA'
207068    );
207069 
207070    xla_ae_lines_pkg.set_ccid(
207071     p_code_combination_id          => l_ccid
207072   , p_value_type_code              => l_adr_value_type_code
207073   , p_transaction_coa_id           => l_adr_transaction_coa_id
207074   , p_accounting_coa_id            => l_adr_accounting_coa_id
207075   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
207076   , p_adr_type_code                => 'S'
207077   , p_component_type               => l_component_type
207078   , p_component_code               => l_component_code
207079   , p_component_type_code          => l_component_type_code
207080   , p_component_appl_id            => l_component_appl_id
207081   , p_amb_context_code             => l_amb_context_code
207082   , p_side                         => 'NA'
207083   );
207084 
207085 
207086    --
207087    --
207088    END IF;
207089 
207090        --
207091        -- Update the line information that should be overwritten
207092        --
207093        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
207094                                          p_header_num   => 1);
207095        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
207096 
207097        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
207098 
207099        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
207100           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
207101        END IF;
207102 
207103       --
207104       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
207105       --
207106       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
207107           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
207108       ELSE
207109           ---------------------------------------------------------------------------------------------------
207110           -- 4262811a Switch Sign
207111           ---------------------------------------------------------------------------------------------------
207112           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
207113           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
207114                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
207115           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
207116                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
207117           -- 5132302
207118           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
207119                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
207120 
207121       END IF;
207122 
207123       -- 4955764
207124       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
207125       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
207126 
207127 
207128       XLA_AE_LINES_PKG.ValidateCurrentLine;
207129       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
207130 
207131       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
207132                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
207133                ,p_balance_type_code => l_balance_type_code);
207134 
207135    END IF;
207136 
207137    -----------------------------------------------------------------------------------------
207138    -- 4262811 Multiperiod Accounting
207139    -----------------------------------------------------------------------------------------
207140      -- No MPA option is assigned.
207141 
207142 
207143 END IF;
207144 END IF;
207145 --
207146 
207147 --
207148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207149    trace
207150       (p_msg      => 'END of AcctLineType_377'
207151       ,p_level    => C_LEVEL_PROCEDURE
207152       ,p_module   => l_log_module);
207153 END IF;
207154 --
207155 EXCEPTION
207156   WHEN xla_exceptions_pkg.application_exception THEN
207157       RAISE;
207158   WHEN OTHERS THEN
207159        xla_exceptions_pkg.raise_message
207160            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_377');
207161 END AcctLineType_377;
207162 --
207163 
207164 ---------------------------------------
207165 --
207166 -- PRIVATE FUNCTION
207167 --         AcctLineType_378
207168 --
207169 ---------------------------------------
207170 PROCEDURE AcctLineType_378 (
207171   p_application_id        IN NUMBER
207172  ,p_event_id              IN NUMBER
207173  ,p_calculate_acctd_flag  IN VARCHAR2
207174  ,p_calculate_g_l_flag    IN VARCHAR2
207175  ,p_actual_flag           IN OUT VARCHAR2
207176  ,p_balance_type_code     OUT VARCHAR2
207177  ,p_gain_or_loss_ref      OUT VARCHAR2
207178  
207179 --TRANSACTION_ID
207180  , p_source_1            IN NUMBER
207181 --Item Concatenated Segments
207182  , p_source_2            IN VARCHAR2
207183 --Transaction Quantity
207184  , p_source_3            IN NUMBER
207185 --Transaction Unit of Measure Code
207186  , p_source_4            IN VARCHAR2
207187 --Inventory Transaction Type Description
207188  , p_source_5            IN VARCHAR2
207189 --Product Line Accounting Category Bridging Account
207190  , p_source_22            IN NUMBER
207191 --DISTRIBUTION_IDENTIFIER
207192  , p_source_84            IN NUMBER
207193 --Distribution Type
207194  , p_source_85            IN VARCHAR2
207195  , p_source_85_meaning    IN VARCHAR2
207196 --Entered Currency Code
207197  , p_source_88            IN VARCHAR2
207198 --Entered Amount
207199  , p_source_91            IN NUMBER
207200 --Currency Conversion Date
207201  , p_source_92            IN DATE
207202 --Currency Conversion Rate
207203  , p_source_93            IN NUMBER
207204 --Currency Conversion Type
207205  , p_source_94            IN VARCHAR2
207206 --Accounted Amount
207207  , p_source_95            IN NUMBER
207208 --Accounting Line Type
207209  , p_source_97            IN NUMBER
207210 )
207211 IS
207212 
207213 l_component_type              VARCHAR2(80);
207214 l_component_code              VARCHAR2(30);
207215 l_component_type_code         VARCHAR2(1);
207216 l_component_appl_id           INTEGER;
207217 l_amb_context_code            VARCHAR2(30);
207218 l_entity_code                 VARCHAR2(30);
207219 l_event_class_code            VARCHAR2(30);
207220 l_ae_header_id                NUMBER;
207221 l_event_type_code             VARCHAR2(30);
207222 l_line_definition_code        VARCHAR2(30);
207223 l_line_definition_owner_code  VARCHAR2(1);
207224 --
207225 -- adr variables
207226 l_segment                     VARCHAR2(30);
207227 l_ccid                        NUMBER;
207228 l_adr_transaction_coa_id      NUMBER;
207229 l_adr_accounting_coa_id       NUMBER;
207230 l_adr_flexfield_segment_code  VARCHAR2(30);
207231 l_adr_flex_value_set_id       NUMBER;
207232 l_adr_value_type_code         VARCHAR2(30);
207233 l_adr_value_combination_id    NUMBER;
207234 l_adr_value_segment_code      VARCHAR2(30);
207235 
207236 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
207237 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
207238 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
207239 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
207240 
207241 -- 4262811 Variables ------------------------------------------------------------------------------------------
207242 l_entered_amt_idx             NUMBER;
207243 l_accted_amt_idx              NUMBER;
207244 l_acc_rev_flag                VARCHAR2(1);
207245 l_accrual_line_num            NUMBER;
207246 l_tmp_amt                     NUMBER;
207247 l_acc_rev_natural_side_code   VARCHAR2(1);
207248 
207249 l_num_entries                 NUMBER;
207250 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
207251 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
207252 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
207253 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
207254 l_recog_line_1                NUMBER;
207255 l_recog_line_2                NUMBER;
207256 
207257 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
207258 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
207259 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
207260 
207261 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
207262 
207263 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
207264 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
207265 
207266 ---------------------------------------------------------------------------------------------------------------
207267 
207268 
207269 --
207270 -- bulk performance
207271 --
207272 l_balance_type_code           VARCHAR2(1);
207273 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
207274 l_log_module                  VARCHAR2(240);
207275 
207276 --
207277 -- Upgrade strategy
207278 --
207279 l_actual_upg_option           VARCHAR2(1);
207280 l_enc_upg_option           VARCHAR2(1);
207281 
207282 --
207283 BEGIN
207284 --
207285 IF g_log_enabled THEN
207286       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_378';
207287 END IF;
207288 --
207289 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207290 
207291       trace
207292          (p_msg      => 'BEGIN of AcctLineType_378'
207293          ,p_level    => C_LEVEL_PROCEDURE
207294          ,p_module   => l_log_module);
207295 
207296 END IF;
207297 --
207298 l_component_type             := 'AMB_JLT';
207299 l_component_code             := 'PI_BRIDGING';
207300 l_component_type_code        := 'S';
207301 l_component_appl_id          :=  707;
207302 l_amb_context_code           := 'DEFAULT';
207303 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
207304 l_event_class_code           := 'USER_DEFINE';
207305 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
207306 l_line_definition_owner_code := 'S';
207307 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
207308 --
207309 l_balance_type_code          := 'A';
207310 l_segment                     := NULL;
207311 l_ccid                        := NULL;
207312 l_adr_transaction_coa_id      := NULL;
207313 l_adr_accounting_coa_id       := NULL;
207314 l_adr_flexfield_segment_code  := NULL;
207315 l_adr_flex_value_set_id       := NULL;
207316 l_adr_value_type_code         := NULL;
207317 l_adr_value_combination_id    := NULL;
207318 l_adr_value_segment_code      := NULL;
207319 
207320 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
207321 l_bflow_class_code           := '';    -- 4219869 Business Flow
207322 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
207323 l_budgetary_control_flag     := 'N';
207324 
207325 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
207326 l_bflow_applied_to_amt       := NULL; -- 5132302
207327 l_entered_amt_idx            := NULL;          -- 4262811
207328 l_accted_amt_idx             := NULL;          -- 4262811
207329 l_acc_rev_flag               := NULL;          -- 4262811
207330 l_accrual_line_num           := NULL;          -- 4262811
207331 l_tmp_amt                    := NULL;          -- 4262811
207332 --
207333  
207334 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
207335     l_balance_type_code <> 'B' THEN
207336 IF NVL(p_source_97,9E125) =  1
207337  THEN 
207338 
207339    --
207340    XLA_AE_LINES_PKG.SetNewLine;
207341 
207342    p_balance_type_code          := l_balance_type_code;
207343    -- set the flag so later we will know whether the gain loss line needs to be created
207344    
207345    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
207346      p_actual_flag :='A';
207347    END IF;
207348 
207349    --
207350    -- bulk performance
207351    --
207352    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
207353                                       p_header_num   => 0); -- 4262811
207354    --
207355    -- set accounting line options
207356    --
207357    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
207358            p_natural_side_code          => 'C'
207359          , p_gain_or_loss_flag          => 'N'
207360          , p_gl_transfer_mode_code      => 'S'
207361          , p_acct_entry_type_code       => 'A'
207362          , p_switch_side_flag           => 'Y'
207363          , p_merge_duplicate_code       => 'N'
207364          );
207365    --
207366    l_acc_rev_natural_side_code := 'D';  -- 4262811
207367    -- 
207368    --
207369    -- set accounting line type info
207370    --
207371    xla_ae_lines_pkg.SetAcctLineType
207372       (p_component_type             => l_component_type
207373       ,p_event_type_code            => l_event_type_code
207374       ,p_line_definition_owner_code => l_line_definition_owner_code
207375       ,p_line_definition_code       => l_line_definition_code
207376       ,p_accounting_line_code       => l_component_code
207377       ,p_accounting_line_type_code  => l_component_type_code
207378       ,p_accounting_line_appl_id    => l_component_appl_id
207379       ,p_amb_context_code           => l_amb_context_code
207380       ,p_entity_code                => l_entity_code
207381       ,p_event_class_code           => l_event_class_code);
207382    --
207383    -- set accounting class
207384    --
207385    xla_ae_lines_pkg.SetAcctClass(
207386            p_accounting_class_code  => 'BRIDGING'
207387          , p_ae_header_id           => l_ae_header_id
207388          );
207389 
207390    --
207391    -- set rounding class
207392    --
207393    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
207394                       'BRIDGING';
207395 
207396    --
207397    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
207398    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
207399    --
207400    -- bulk performance
207401    --
207402    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
207403 
207404    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
207405       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
207406 
207407    -- 4955764
207408    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
207409       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
207410 
207411    -- 4458381 Public Sector Enh
207412    
207413    --
207414    -- set accounting attributes for the line type
207415    --
207416    l_entered_amt_idx := 3;
207417    l_accted_amt_idx  := 8;
207418    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
207419    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
207420    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
207421    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
207422    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
207423    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
207424    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
207425    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
207426    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
207427    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
207428    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
207429    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
207430    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
207431    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
207432    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
207433    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
207434    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
207435 
207436    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
207437    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
207438 
207439    ---------------------------------------------------------------------------------------------------------------
207440    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
207441    ---------------------------------------------------------------------------------------------------------------
207442    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
207443 
207444    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
207445    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
207446 
207447    IF xla_accounting_cache_pkg.GetValueChar
207448          (p_source_code         => 'LEDGER_CATEGORY_CODE'
207449          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
207450    AND l_bflow_method_code = 'PRIOR_ENTRY'
207451 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
207452    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
207453          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
207454        )
207455    THEN
207456          xla_ae_lines_pkg.BflowUpgEntry
207457            (p_business_method_code    => l_bflow_method_code
207458            ,p_business_class_code     => l_bflow_class_code
207459            ,p_balance_type            => l_balance_type_code);
207460    ELSE
207461       NULL;
207462 -- No business flow processing for business flow method of NONE.
207463    END IF;
207464 
207465    --
207466    -- call analytical criteria
207467    --
207468    
207469    --
207470    -- call description
207471    --
207472    
207473 xla_ae_lines_pkg.SetLineDescription(
207474    p_ae_header_id => l_ae_header_id
207475   ,p_description  => Description_1 (
207476      p_application_id         => p_application_id
207477    , p_ae_header_id           => l_ae_header_id 
207478 , p_source_1 => p_source_1
207479 , p_source_2 => p_source_2
207480 , p_source_3 => p_source_3
207481 , p_source_4 => p_source_4
207482 , p_source_5 => p_source_5
207483    )
207484 );
207485 
207486 
207487    --
207488    -- call ADRs
207489    -- Bug 4922099
207490    --
207491    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
207492         (NVL(l_actual_upg_option, 'N') = 'O') OR
207493         (NVL(l_enc_upg_option, 'N') = 'O')
207494       )
207495    THEN
207496    NULL;
207497    --
207498    --
207499    
207500   l_ccid := AcctDerRule_11(
207501            p_application_id           => p_application_id
207502          , p_ae_header_id             => l_ae_header_id 
207503 , p_source_22 => p_source_22
207504          , x_transaction_coa_id       => l_adr_transaction_coa_id
207505          , x_accounting_coa_id        => l_adr_accounting_coa_id
207506          , x_value_type_code          => l_adr_value_type_code
207507          , p_side                     => 'NA'
207508    );
207509 
207510    xla_ae_lines_pkg.set_ccid(
207511     p_code_combination_id          => l_ccid
207512   , p_value_type_code              => l_adr_value_type_code
207513   , p_transaction_coa_id           => l_adr_transaction_coa_id
207514   , p_accounting_coa_id            => l_adr_accounting_coa_id
207515   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
207516   , p_adr_type_code                => 'S'
207517   , p_component_type               => l_component_type
207518   , p_component_code               => l_component_code
207519   , p_component_type_code          => l_component_type_code
207520   , p_component_appl_id            => l_component_appl_id
207521   , p_amb_context_code             => l_amb_context_code
207522   , p_side                         => 'NA'
207523   );
207524 
207525 
207526    --
207527    --
207528    END IF;
207529    --
207530    -- Bug 4922099
207531    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
207532           (NVL(l_enc_upg_option, 'N') = 'O')
207533         ) AND
207534         (l_bflow_method_code = 'PRIOR_ENTRY')
207535       )
207536    THEN
207537       IF
207538       --
207539       1 = 2
207540       --
207541       THEN
207542       xla_accounting_err_pkg.build_message
207543                                     (p_appli_s_name            => 'XLA'
207544                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
207545                                     ,p_token_1                 => 'LINE_NUMBER'
207546                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
207547                                     ,p_token_2                 => 'LINE_TYPE_NAME'
207548                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
207549                                                                              l_component_type
207550                                                                             ,l_component_code
207551                                                                             ,l_component_type_code
207552                                                                             ,l_component_appl_id
207553                                                                             ,l_amb_context_code
207554                                                                             ,l_entity_code
207555                                                                             ,l_event_class_code
207556                                                                            )
207557                                     ,p_token_3                 => 'OWNER'
207558                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
207559                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
207560                                                                           ,p_lookup_code    => l_component_type_code
207561                                                                          )
207562                                     ,p_token_4                 => 'PRODUCT_NAME'
207563                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
207564                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
207565                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
207566                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
207567                                     ,p_ae_header_id            =>  NULL
207568                                        );
207569 
207570         IF (C_LEVEL_ERROR>= g_log_level) THEN
207571                  trace
207572                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
207573                       ,p_level    => C_LEVEL_ERROR
207574                       ,p_module   => l_log_module);
207575         END IF;
207576       END IF;
207577    END IF;
207578    --
207579    --
207580    ------------------------------------------------------------------------------------------------
207581    -- 4219869 Business Flow
207582    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
207583    -- Prior Entry.  Currently, the following code is always generated.
207584    ------------------------------------------------------------------------------------------------
207585    XLA_AE_LINES_PKG.ValidateCurrentLine;
207586 
207587    ------------------------------------------------------------------------------------
207588    -- 4219869 Business Flow
207589    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
207590    ------------------------------------------------------------------------------------
207591    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
207592 
207593    ----------------------------------------------------------------------------------
207594    -- 4219869 Business Flow
207595    -- Update journal entry status -- Need to generate this within IF <condition>
207596    ----------------------------------------------------------------------------------
207597    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
207598          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
207599          ,p_balance_type_code => l_balance_type_code
207600          );
207601 
207602    -------------------------------------------------------------------------------------------
207603    -- 4262811 - Generate the Accrual Reversal lines
207604    -------------------------------------------------------------------------------------------
207605    BEGIN
207606       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
207607                               (g_array_event(p_event_id).array_value_num('header_index'));
207608       IF l_acc_rev_flag IS NULL THEN
207609          l_acc_rev_flag := 'N';
207610       END IF;
207611    EXCEPTION
207612       WHEN OTHERS THEN
207613          l_acc_rev_flag := 'N';
207614    END;
207615    --
207616    IF (l_acc_rev_flag = 'Y') THEN
207617 
207618        -- 4645092  ------------------------------------------------------------------------------
207619        -- To allow MPA report to determine if it should generate report process
207620        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
207621        ------------------------------------------------------------------------------------------
207622 
207623        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
207624        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
207625    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
207626    -- call ADRs
207627    -- Bug 4922099
207628    --
207629    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
207630         (NVL(l_actual_upg_option, 'N') = 'O') OR
207631         (NVL(l_enc_upg_option, 'N') = 'O')
207632       )
207633    THEN
207634    NULL;
207635    --
207636    --
207637    
207638   l_ccid := AcctDerRule_11(
207639            p_application_id           => p_application_id
207640          , p_ae_header_id             => l_ae_header_id 
207641 , p_source_22 => p_source_22
207642          , x_transaction_coa_id       => l_adr_transaction_coa_id
207643          , x_accounting_coa_id        => l_adr_accounting_coa_id
207644          , x_value_type_code          => l_adr_value_type_code
207645          , p_side                     => 'NA'
207646    );
207647 
207648    xla_ae_lines_pkg.set_ccid(
207649     p_code_combination_id          => l_ccid
207650   , p_value_type_code              => l_adr_value_type_code
207651   , p_transaction_coa_id           => l_adr_transaction_coa_id
207652   , p_accounting_coa_id            => l_adr_accounting_coa_id
207653   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
207654   , p_adr_type_code                => 'S'
207655   , p_component_type               => l_component_type
207656   , p_component_code               => l_component_code
207657   , p_component_type_code          => l_component_type_code
207658   , p_component_appl_id            => l_component_appl_id
207659   , p_amb_context_code             => l_amb_context_code
207660   , p_side                         => 'NA'
207661   );
207662 
207663 
207664    --
207665    --
207666    END IF;
207667 
207668        --
207669        -- Update the line information that should be overwritten
207670        --
207671        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
207672                                          p_header_num   => 1);
207673        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
207674 
207675        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
207676 
207677        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
207678           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
207679        END IF;
207680 
207681       --
207682       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
207683       --
207684       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
207685           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
207686       ELSE
207687           ---------------------------------------------------------------------------------------------------
207688           -- 4262811a Switch Sign
207689           ---------------------------------------------------------------------------------------------------
207690           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
207691           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
207692                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
207693           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
207694                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
207695           -- 5132302
207696           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
207697                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
207698 
207699       END IF;
207700 
207701       -- 4955764
207702       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
207703       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
207704 
207705 
207706       XLA_AE_LINES_PKG.ValidateCurrentLine;
207707       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
207708 
207709       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
207710                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
207711                ,p_balance_type_code => l_balance_type_code);
207712 
207713    END IF;
207714 
207715    -----------------------------------------------------------------------------------------
207716    -- 4262811 Multiperiod Accounting
207717    -----------------------------------------------------------------------------------------
207718      -- No MPA option is assigned.
207719 
207720 
207721 END IF;
207722 END IF;
207723 --
207724 
207725 --
207726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207727    trace
207728       (p_msg      => 'END of AcctLineType_378'
207729       ,p_level    => C_LEVEL_PROCEDURE
207730       ,p_module   => l_log_module);
207731 END IF;
207732 --
207733 EXCEPTION
207734   WHEN xla_exceptions_pkg.application_exception THEN
207735       RAISE;
207736   WHEN OTHERS THEN
207737        xla_exceptions_pkg.raise_message
207738            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_378');
207739 END AcctLineType_378;
207740 --
207741 
207742 ---------------------------------------
207743 --
207744 -- PRIVATE FUNCTION
207745 --         AcctLineType_379
207746 --
207747 ---------------------------------------
207748 PROCEDURE AcctLineType_379 (
207749   p_application_id        IN NUMBER
207750  ,p_event_id              IN NUMBER
207751  ,p_calculate_acctd_flag  IN VARCHAR2
207752  ,p_calculate_g_l_flag    IN VARCHAR2
207753  ,p_actual_flag           IN OUT VARCHAR2
207754  ,p_balance_type_code     OUT VARCHAR2
207755  ,p_gain_or_loss_ref      OUT VARCHAR2
207756  
207757 --TRANSACTION_ID
207758  , p_source_1            IN NUMBER
207759 --Item Concatenated Segments
207760  , p_source_2            IN VARCHAR2
207761 --Transaction Quantity
207762  , p_source_3            IN NUMBER
207763 --Transaction Unit of Measure Code
207764  , p_source_4            IN VARCHAR2
207765 --Inventory Transaction Type Description
207766  , p_source_5            IN VARCHAR2
207767 --Product Line Accounting Category Bridging Account
207768  , p_source_22            IN NUMBER
207769 --DISTRIBUTION_IDENTIFIER
207770  , p_source_84            IN NUMBER
207771 --Distribution Type
207772  , p_source_85            IN VARCHAR2
207773  , p_source_85_meaning    IN VARCHAR2
207774 --Entered Currency Code
207775  , p_source_88            IN VARCHAR2
207776 --Entered Amount
207777  , p_source_91            IN NUMBER
207778 --Currency Conversion Date
207779  , p_source_92            IN DATE
207780 --Currency Conversion Rate
207781  , p_source_93            IN NUMBER
207782 --Currency Conversion Type
207783  , p_source_94            IN VARCHAR2
207784 --Accounted Amount
207785  , p_source_95            IN NUMBER
207786 --Accounting Line Type
207787  , p_source_97            IN NUMBER
207788 )
207789 IS
207790 
207791 l_component_type              VARCHAR2(80);
207792 l_component_code              VARCHAR2(30);
207793 l_component_type_code         VARCHAR2(1);
207794 l_component_appl_id           INTEGER;
207795 l_amb_context_code            VARCHAR2(30);
207796 l_entity_code                 VARCHAR2(30);
207797 l_event_class_code            VARCHAR2(30);
207798 l_ae_header_id                NUMBER;
207799 l_event_type_code             VARCHAR2(30);
207800 l_line_definition_code        VARCHAR2(30);
207801 l_line_definition_owner_code  VARCHAR2(1);
207802 --
207803 -- adr variables
207804 l_segment                     VARCHAR2(30);
207805 l_ccid                        NUMBER;
207806 l_adr_transaction_coa_id      NUMBER;
207807 l_adr_accounting_coa_id       NUMBER;
207808 l_adr_flexfield_segment_code  VARCHAR2(30);
207809 l_adr_flex_value_set_id       NUMBER;
207810 l_adr_value_type_code         VARCHAR2(30);
207811 l_adr_value_combination_id    NUMBER;
207812 l_adr_value_segment_code      VARCHAR2(30);
207813 
207814 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
207815 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
207816 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
207817 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
207818 
207819 -- 4262811 Variables ------------------------------------------------------------------------------------------
207820 l_entered_amt_idx             NUMBER;
207821 l_accted_amt_idx              NUMBER;
207822 l_acc_rev_flag                VARCHAR2(1);
207823 l_accrual_line_num            NUMBER;
207824 l_tmp_amt                     NUMBER;
207825 l_acc_rev_natural_side_code   VARCHAR2(1);
207826 
207827 l_num_entries                 NUMBER;
207828 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
207829 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
207830 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
207831 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
207832 l_recog_line_1                NUMBER;
207833 l_recog_line_2                NUMBER;
207834 
207835 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
207836 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
207837 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
207838 
207839 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
207840 
207841 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
207842 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
207843 
207844 ---------------------------------------------------------------------------------------------------------------
207845 
207846 
207847 --
207848 -- bulk performance
207849 --
207850 l_balance_type_code           VARCHAR2(1);
207851 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
207852 l_log_module                  VARCHAR2(240);
207853 
207854 --
207855 -- Upgrade strategy
207856 --
207857 l_actual_upg_option           VARCHAR2(1);
207858 l_enc_upg_option           VARCHAR2(1);
207859 
207860 --
207861 BEGIN
207862 --
207863 IF g_log_enabled THEN
207864       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_379';
207865 END IF;
207866 --
207867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207868 
207869       trace
207870          (p_msg      => 'BEGIN of AcctLineType_379'
207871          ,p_level    => C_LEVEL_PROCEDURE
207872          ,p_module   => l_log_module);
207873 
207874 END IF;
207875 --
207876 l_component_type             := 'AMB_JLT';
207877 l_component_code             := 'PI_BRIDGING';
207878 l_component_type_code        := 'S';
207879 l_component_appl_id          :=  707;
207880 l_amb_context_code           := 'DEFAULT';
207881 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
207882 l_event_class_code           := 'USER_DEFINE';
207883 l_event_type_code            := 'UDIR_INTERORG_SHIP';
207884 l_line_definition_owner_code := 'S';
207885 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
207886 --
207887 l_balance_type_code          := 'A';
207888 l_segment                     := NULL;
207889 l_ccid                        := NULL;
207890 l_adr_transaction_coa_id      := NULL;
207891 l_adr_accounting_coa_id       := NULL;
207892 l_adr_flexfield_segment_code  := NULL;
207893 l_adr_flex_value_set_id       := NULL;
207894 l_adr_value_type_code         := NULL;
207895 l_adr_value_combination_id    := NULL;
207896 l_adr_value_segment_code      := NULL;
207897 
207898 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
207899 l_bflow_class_code           := '';    -- 4219869 Business Flow
207900 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
207901 l_budgetary_control_flag     := 'N';
207902 
207903 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
207904 l_bflow_applied_to_amt       := NULL; -- 5132302
207905 l_entered_amt_idx            := NULL;          -- 4262811
207906 l_accted_amt_idx             := NULL;          -- 4262811
207907 l_acc_rev_flag               := NULL;          -- 4262811
207908 l_accrual_line_num           := NULL;          -- 4262811
207909 l_tmp_amt                    := NULL;          -- 4262811
207910 --
207911  
207912 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
207913     l_balance_type_code <> 'B' THEN
207914 IF NVL(p_source_97,9E125) =  1
207915  THEN 
207916 
207917    --
207918    XLA_AE_LINES_PKG.SetNewLine;
207919 
207920    p_balance_type_code          := l_balance_type_code;
207921    -- set the flag so later we will know whether the gain loss line needs to be created
207922    
207923    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
207924      p_actual_flag :='A';
207925    END IF;
207926 
207927    --
207928    -- bulk performance
207929    --
207930    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
207931                                       p_header_num   => 0); -- 4262811
207932    --
207933    -- set accounting line options
207934    --
207935    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
207936            p_natural_side_code          => 'C'
207937          , p_gain_or_loss_flag          => 'N'
207938          , p_gl_transfer_mode_code      => 'S'
207939          , p_acct_entry_type_code       => 'A'
207940          , p_switch_side_flag           => 'Y'
207941          , p_merge_duplicate_code       => 'N'
207942          );
207943    --
207944    l_acc_rev_natural_side_code := 'D';  -- 4262811
207945    -- 
207946    --
207947    -- set accounting line type info
207948    --
207949    xla_ae_lines_pkg.SetAcctLineType
207950       (p_component_type             => l_component_type
207951       ,p_event_type_code            => l_event_type_code
207952       ,p_line_definition_owner_code => l_line_definition_owner_code
207953       ,p_line_definition_code       => l_line_definition_code
207954       ,p_accounting_line_code       => l_component_code
207955       ,p_accounting_line_type_code  => l_component_type_code
207956       ,p_accounting_line_appl_id    => l_component_appl_id
207957       ,p_amb_context_code           => l_amb_context_code
207958       ,p_entity_code                => l_entity_code
207959       ,p_event_class_code           => l_event_class_code);
207960    --
207961    -- set accounting class
207962    --
207963    xla_ae_lines_pkg.SetAcctClass(
207964            p_accounting_class_code  => 'BRIDGING'
207965          , p_ae_header_id           => l_ae_header_id
207966          );
207967 
207968    --
207969    -- set rounding class
207970    --
207971    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
207972                       'BRIDGING';
207973 
207974    --
207975    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
207976    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
207977    --
207978    -- bulk performance
207979    --
207980    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
207981 
207982    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
207983       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
207984 
207985    -- 4955764
207986    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
207987       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
207988 
207989    -- 4458381 Public Sector Enh
207990    
207991    --
207992    -- set accounting attributes for the line type
207993    --
207994    l_entered_amt_idx := 3;
207995    l_accted_amt_idx  := 8;
207996    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
207997    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
207998    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
207999    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
208000    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
208001    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
208002    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
208003    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
208004    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
208005    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
208006    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
208007    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
208008    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
208009    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
208010    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
208011    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
208012    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
208013 
208014    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
208015    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
208016 
208017    ---------------------------------------------------------------------------------------------------------------
208018    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
208019    ---------------------------------------------------------------------------------------------------------------
208020    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
208021 
208022    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
208023    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
208024 
208025    IF xla_accounting_cache_pkg.GetValueChar
208026          (p_source_code         => 'LEDGER_CATEGORY_CODE'
208027          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
208028    AND l_bflow_method_code = 'PRIOR_ENTRY'
208029 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
208030    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
208031          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
208032        )
208033    THEN
208034          xla_ae_lines_pkg.BflowUpgEntry
208035            (p_business_method_code    => l_bflow_method_code
208036            ,p_business_class_code     => l_bflow_class_code
208037            ,p_balance_type            => l_balance_type_code);
208038    ELSE
208039       NULL;
208040 -- No business flow processing for business flow method of NONE.
208041    END IF;
208042 
208043    --
208044    -- call analytical criteria
208045    --
208046    
208047    --
208048    -- call description
208049    --
208050    
208051 xla_ae_lines_pkg.SetLineDescription(
208052    p_ae_header_id => l_ae_header_id
208053   ,p_description  => Description_1 (
208054      p_application_id         => p_application_id
208055    , p_ae_header_id           => l_ae_header_id 
208056 , p_source_1 => p_source_1
208057 , p_source_2 => p_source_2
208058 , p_source_3 => p_source_3
208059 , p_source_4 => p_source_4
208060 , p_source_5 => p_source_5
208061    )
208062 );
208063 
208064 
208065    --
208066    -- call ADRs
208067    -- Bug 4922099
208068    --
208069    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
208070         (NVL(l_actual_upg_option, 'N') = 'O') OR
208071         (NVL(l_enc_upg_option, 'N') = 'O')
208072       )
208073    THEN
208074    NULL;
208075    --
208076    --
208077    
208078   l_ccid := AcctDerRule_11(
208079            p_application_id           => p_application_id
208080          , p_ae_header_id             => l_ae_header_id 
208081 , p_source_22 => p_source_22
208082          , x_transaction_coa_id       => l_adr_transaction_coa_id
208083          , x_accounting_coa_id        => l_adr_accounting_coa_id
208084          , x_value_type_code          => l_adr_value_type_code
208085          , p_side                     => 'NA'
208086    );
208087 
208088    xla_ae_lines_pkg.set_ccid(
208089     p_code_combination_id          => l_ccid
208090   , p_value_type_code              => l_adr_value_type_code
208091   , p_transaction_coa_id           => l_adr_transaction_coa_id
208092   , p_accounting_coa_id            => l_adr_accounting_coa_id
208093   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
208094   , p_adr_type_code                => 'S'
208095   , p_component_type               => l_component_type
208096   , p_component_code               => l_component_code
208097   , p_component_type_code          => l_component_type_code
208098   , p_component_appl_id            => l_component_appl_id
208099   , p_amb_context_code             => l_amb_context_code
208100   , p_side                         => 'NA'
208101   );
208102 
208103 
208104    --
208105    --
208106    END IF;
208107    --
208108    -- Bug 4922099
208109    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
208110           (NVL(l_enc_upg_option, 'N') = 'O')
208111         ) AND
208112         (l_bflow_method_code = 'PRIOR_ENTRY')
208113       )
208114    THEN
208115       IF
208116       --
208117       1 = 2
208118       --
208119       THEN
208120       xla_accounting_err_pkg.build_message
208121                                     (p_appli_s_name            => 'XLA'
208122                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
208123                                     ,p_token_1                 => 'LINE_NUMBER'
208124                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
208125                                     ,p_token_2                 => 'LINE_TYPE_NAME'
208126                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
208127                                                                              l_component_type
208128                                                                             ,l_component_code
208129                                                                             ,l_component_type_code
208130                                                                             ,l_component_appl_id
208131                                                                             ,l_amb_context_code
208132                                                                             ,l_entity_code
208133                                                                             ,l_event_class_code
208134                                                                            )
208135                                     ,p_token_3                 => 'OWNER'
208136                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
208137                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
208138                                                                           ,p_lookup_code    => l_component_type_code
208139                                                                          )
208140                                     ,p_token_4                 => 'PRODUCT_NAME'
208141                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
208142                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
208143                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
208144                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
208145                                     ,p_ae_header_id            =>  NULL
208146                                        );
208147 
208148         IF (C_LEVEL_ERROR>= g_log_level) THEN
208149                  trace
208150                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
208151                       ,p_level    => C_LEVEL_ERROR
208152                       ,p_module   => l_log_module);
208153         END IF;
208154       END IF;
208155    END IF;
208156    --
208157    --
208158    ------------------------------------------------------------------------------------------------
208159    -- 4219869 Business Flow
208160    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
208161    -- Prior Entry.  Currently, the following code is always generated.
208162    ------------------------------------------------------------------------------------------------
208163    XLA_AE_LINES_PKG.ValidateCurrentLine;
208164 
208165    ------------------------------------------------------------------------------------
208166    -- 4219869 Business Flow
208167    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
208168    ------------------------------------------------------------------------------------
208169    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
208170 
208171    ----------------------------------------------------------------------------------
208172    -- 4219869 Business Flow
208173    -- Update journal entry status -- Need to generate this within IF <condition>
208174    ----------------------------------------------------------------------------------
208175    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
208176          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
208177          ,p_balance_type_code => l_balance_type_code
208178          );
208179 
208180    -------------------------------------------------------------------------------------------
208181    -- 4262811 - Generate the Accrual Reversal lines
208182    -------------------------------------------------------------------------------------------
208183    BEGIN
208184       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
208185                               (g_array_event(p_event_id).array_value_num('header_index'));
208186       IF l_acc_rev_flag IS NULL THEN
208187          l_acc_rev_flag := 'N';
208188       END IF;
208189    EXCEPTION
208190       WHEN OTHERS THEN
208191          l_acc_rev_flag := 'N';
208192    END;
208193    --
208194    IF (l_acc_rev_flag = 'Y') THEN
208195 
208196        -- 4645092  ------------------------------------------------------------------------------
208197        -- To allow MPA report to determine if it should generate report process
208198        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
208199        ------------------------------------------------------------------------------------------
208200 
208201        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
208202        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
208203    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
208204    -- call ADRs
208205    -- Bug 4922099
208206    --
208207    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
208208         (NVL(l_actual_upg_option, 'N') = 'O') OR
208209         (NVL(l_enc_upg_option, 'N') = 'O')
208210       )
208211    THEN
208212    NULL;
208213    --
208214    --
208215    
208216   l_ccid := AcctDerRule_11(
208217            p_application_id           => p_application_id
208218          , p_ae_header_id             => l_ae_header_id 
208219 , p_source_22 => p_source_22
208220          , x_transaction_coa_id       => l_adr_transaction_coa_id
208221          , x_accounting_coa_id        => l_adr_accounting_coa_id
208222          , x_value_type_code          => l_adr_value_type_code
208223          , p_side                     => 'NA'
208224    );
208225 
208226    xla_ae_lines_pkg.set_ccid(
208227     p_code_combination_id          => l_ccid
208228   , p_value_type_code              => l_adr_value_type_code
208229   , p_transaction_coa_id           => l_adr_transaction_coa_id
208230   , p_accounting_coa_id            => l_adr_accounting_coa_id
208231   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
208232   , p_adr_type_code                => 'S'
208233   , p_component_type               => l_component_type
208234   , p_component_code               => l_component_code
208235   , p_component_type_code          => l_component_type_code
208236   , p_component_appl_id            => l_component_appl_id
208237   , p_amb_context_code             => l_amb_context_code
208238   , p_side                         => 'NA'
208239   );
208240 
208241 
208242    --
208243    --
208244    END IF;
208245 
208246        --
208247        -- Update the line information that should be overwritten
208248        --
208249        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
208250                                          p_header_num   => 1);
208251        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
208252 
208253        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
208254 
208255        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
208256           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
208257        END IF;
208258 
208259       --
208260       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
208261       --
208262       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
208263           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
208264       ELSE
208265           ---------------------------------------------------------------------------------------------------
208266           -- 4262811a Switch Sign
208267           ---------------------------------------------------------------------------------------------------
208268           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
208269           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
208270                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
208271           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
208272                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
208273           -- 5132302
208274           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
208275                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
208276 
208277       END IF;
208278 
208279       -- 4955764
208280       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
208281       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
208282 
208283 
208284       XLA_AE_LINES_PKG.ValidateCurrentLine;
208285       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
208286 
208287       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
208288                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
208289                ,p_balance_type_code => l_balance_type_code);
208290 
208291    END IF;
208292 
208293    -----------------------------------------------------------------------------------------
208294    -- 4262811 Multiperiod Accounting
208295    -----------------------------------------------------------------------------------------
208296      -- No MPA option is assigned.
208297 
208298 
208299 END IF;
208300 END IF;
208301 --
208302 
208303 --
208304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
208305    trace
208306       (p_msg      => 'END of AcctLineType_379'
208307       ,p_level    => C_LEVEL_PROCEDURE
208308       ,p_module   => l_log_module);
208309 END IF;
208310 --
208311 EXCEPTION
208312   WHEN xla_exceptions_pkg.application_exception THEN
208313       RAISE;
208314   WHEN OTHERS THEN
208315        xla_exceptions_pkg.raise_message
208316            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_379');
208317 END AcctLineType_379;
208318 --
208319 
208320 ---------------------------------------
208321 --
208322 -- PRIVATE FUNCTION
208323 --         AcctLineType_380
208324 --
208325 ---------------------------------------
208326 PROCEDURE AcctLineType_380 (
208327   p_application_id        IN NUMBER
208328  ,p_event_id              IN NUMBER
208329  ,p_calculate_acctd_flag  IN VARCHAR2
208330  ,p_calculate_g_l_flag    IN VARCHAR2
208331  ,p_actual_flag           IN OUT VARCHAR2
208332  ,p_balance_type_code     OUT VARCHAR2
208333  ,p_gain_or_loss_ref      OUT VARCHAR2
208334  
208335 --TRANSACTION_ID
208336  , p_source_1            IN NUMBER
208337 --Item Concatenated Segments
208338  , p_source_2            IN VARCHAR2
208339 --Transaction Quantity
208340  , p_source_3            IN NUMBER
208341 --Transaction Unit of Measure Code
208342  , p_source_4            IN VARCHAR2
208343 --Inventory Transaction Type Description
208344  , p_source_5            IN VARCHAR2
208345 --Product Line Accounting Category Bridging Account
208346  , p_source_22            IN NUMBER
208347 --DISTRIBUTION_IDENTIFIER
208348  , p_source_84            IN NUMBER
208349 --Distribution Type
208350  , p_source_85            IN VARCHAR2
208351  , p_source_85_meaning    IN VARCHAR2
208352 --Entered Currency Code
208353  , p_source_88            IN VARCHAR2
208354 --Entered Amount
208355  , p_source_91            IN NUMBER
208356 --Currency Conversion Date
208357  , p_source_92            IN DATE
208358 --Currency Conversion Rate
208359  , p_source_93            IN NUMBER
208360 --Currency Conversion Type
208361  , p_source_94            IN VARCHAR2
208362 --Accounted Amount
208363  , p_source_95            IN NUMBER
208364 --Accounting Line Type
208365  , p_source_97            IN NUMBER
208366 )
208367 IS
208368 
208369 l_component_type              VARCHAR2(80);
208370 l_component_code              VARCHAR2(30);
208371 l_component_type_code         VARCHAR2(1);
208372 l_component_appl_id           INTEGER;
208373 l_amb_context_code            VARCHAR2(30);
208374 l_entity_code                 VARCHAR2(30);
208375 l_event_class_code            VARCHAR2(30);
208376 l_ae_header_id                NUMBER;
208377 l_event_type_code             VARCHAR2(30);
208378 l_line_definition_code        VARCHAR2(30);
208379 l_line_definition_owner_code  VARCHAR2(1);
208380 --
208381 -- adr variables
208382 l_segment                     VARCHAR2(30);
208383 l_ccid                        NUMBER;
208384 l_adr_transaction_coa_id      NUMBER;
208385 l_adr_accounting_coa_id       NUMBER;
208386 l_adr_flexfield_segment_code  VARCHAR2(30);
208387 l_adr_flex_value_set_id       NUMBER;
208388 l_adr_value_type_code         VARCHAR2(30);
208389 l_adr_value_combination_id    NUMBER;
208390 l_adr_value_segment_code      VARCHAR2(30);
208391 
208392 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
208393 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
208394 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
208395 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
208396 
208397 -- 4262811 Variables ------------------------------------------------------------------------------------------
208398 l_entered_amt_idx             NUMBER;
208399 l_accted_amt_idx              NUMBER;
208400 l_acc_rev_flag                VARCHAR2(1);
208401 l_accrual_line_num            NUMBER;
208402 l_tmp_amt                     NUMBER;
208403 l_acc_rev_natural_side_code   VARCHAR2(1);
208404 
208405 l_num_entries                 NUMBER;
208406 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
208407 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
208408 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
208409 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
208410 l_recog_line_1                NUMBER;
208411 l_recog_line_2                NUMBER;
208412 
208413 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
208414 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
208415 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
208416 
208417 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
208418 
208419 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
208420 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
208421 
208422 ---------------------------------------------------------------------------------------------------------------
208423 
208424 
208425 --
208426 -- bulk performance
208427 --
208428 l_balance_type_code           VARCHAR2(1);
208429 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
208430 l_log_module                  VARCHAR2(240);
208431 
208432 --
208433 -- Upgrade strategy
208434 --
208435 l_actual_upg_option           VARCHAR2(1);
208436 l_enc_upg_option           VARCHAR2(1);
208437 
208438 --
208439 BEGIN
208440 --
208441 IF g_log_enabled THEN
208442       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_380';
208443 END IF;
208444 --
208445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
208446 
208447       trace
208448          (p_msg      => 'BEGIN of AcctLineType_380'
208449          ,p_level    => C_LEVEL_PROCEDURE
208450          ,p_module   => l_log_module);
208451 
208452 END IF;
208453 --
208454 l_component_type             := 'AMB_JLT';
208455 l_component_code             := 'PI_BRIDGING';
208456 l_component_type_code        := 'S';
208457 l_component_appl_id          :=  707;
208458 l_amb_context_code           := 'DEFAULT';
208459 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
208460 l_event_class_code           := 'USER_DEFINE';
208461 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
208462 l_line_definition_owner_code := 'S';
208463 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
208464 --
208465 l_balance_type_code          := 'A';
208466 l_segment                     := NULL;
208467 l_ccid                        := NULL;
208468 l_adr_transaction_coa_id      := NULL;
208469 l_adr_accounting_coa_id       := NULL;
208470 l_adr_flexfield_segment_code  := NULL;
208471 l_adr_flex_value_set_id       := NULL;
208472 l_adr_value_type_code         := NULL;
208473 l_adr_value_combination_id    := NULL;
208474 l_adr_value_segment_code      := NULL;
208475 
208476 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
208477 l_bflow_class_code           := '';    -- 4219869 Business Flow
208478 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
208479 l_budgetary_control_flag     := 'N';
208480 
208481 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
208482 l_bflow_applied_to_amt       := NULL; -- 5132302
208483 l_entered_amt_idx            := NULL;          -- 4262811
208484 l_accted_amt_idx             := NULL;          -- 4262811
208485 l_acc_rev_flag               := NULL;          -- 4262811
208486 l_accrual_line_num           := NULL;          -- 4262811
208487 l_tmp_amt                    := NULL;          -- 4262811
208488 --
208489  
208490 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
208491     l_balance_type_code <> 'B' THEN
208492 IF NVL(p_source_97,9E125) =  1
208493  THEN 
208494 
208495    --
208496    XLA_AE_LINES_PKG.SetNewLine;
208497 
208498    p_balance_type_code          := l_balance_type_code;
208499    -- set the flag so later we will know whether the gain loss line needs to be created
208500    
208501    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
208502      p_actual_flag :='A';
208503    END IF;
208504 
208505    --
208506    -- bulk performance
208507    --
208508    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
208509                                       p_header_num   => 0); -- 4262811
208510    --
208511    -- set accounting line options
208512    --
208513    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
208514            p_natural_side_code          => 'C'
208515          , p_gain_or_loss_flag          => 'N'
208516          , p_gl_transfer_mode_code      => 'S'
208517          , p_acct_entry_type_code       => 'A'
208518          , p_switch_side_flag           => 'Y'
208519          , p_merge_duplicate_code       => 'N'
208520          );
208521    --
208522    l_acc_rev_natural_side_code := 'D';  -- 4262811
208523    -- 
208524    --
208525    -- set accounting line type info
208526    --
208527    xla_ae_lines_pkg.SetAcctLineType
208528       (p_component_type             => l_component_type
208529       ,p_event_type_code            => l_event_type_code
208530       ,p_line_definition_owner_code => l_line_definition_owner_code
208531       ,p_line_definition_code       => l_line_definition_code
208532       ,p_accounting_line_code       => l_component_code
208533       ,p_accounting_line_type_code  => l_component_type_code
208534       ,p_accounting_line_appl_id    => l_component_appl_id
208535       ,p_amb_context_code           => l_amb_context_code
208536       ,p_entity_code                => l_entity_code
208537       ,p_event_class_code           => l_event_class_code);
208538    --
208539    -- set accounting class
208540    --
208541    xla_ae_lines_pkg.SetAcctClass(
208542            p_accounting_class_code  => 'BRIDGING'
208543          , p_ae_header_id           => l_ae_header_id
208544          );
208545 
208546    --
208547    -- set rounding class
208548    --
208549    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
208550                       'BRIDGING';
208551 
208552    --
208553    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
208554    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
208555    --
208556    -- bulk performance
208557    --
208558    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
208559 
208560    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
208561       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
208562 
208563    -- 4955764
208564    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
208565       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
208566 
208567    -- 4458381 Public Sector Enh
208568    
208569    --
208570    -- set accounting attributes for the line type
208571    --
208572    l_entered_amt_idx := 3;
208573    l_accted_amt_idx  := 8;
208574    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
208575    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
208576    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
208577    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
208578    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
208579    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
208580    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
208581    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
208582    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
208583    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
208584    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
208585    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
208586    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
208587    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
208588    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
208589    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
208590    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
208591 
208592    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
208593    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
208594 
208595    ---------------------------------------------------------------------------------------------------------------
208596    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
208597    ---------------------------------------------------------------------------------------------------------------
208598    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
208599 
208600    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
208601    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
208602 
208603    IF xla_accounting_cache_pkg.GetValueChar
208604          (p_source_code         => 'LEDGER_CATEGORY_CODE'
208605          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
208606    AND l_bflow_method_code = 'PRIOR_ENTRY'
208607 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
208608    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
208609          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
208610        )
208611    THEN
208612          xla_ae_lines_pkg.BflowUpgEntry
208613            (p_business_method_code    => l_bflow_method_code
208614            ,p_business_class_code     => l_bflow_class_code
208615            ,p_balance_type            => l_balance_type_code);
208616    ELSE
208617       NULL;
208618 -- No business flow processing for business flow method of NONE.
208619    END IF;
208620 
208621    --
208622    -- call analytical criteria
208623    --
208624    
208625    --
208626    -- call description
208627    --
208628    
208629 xla_ae_lines_pkg.SetLineDescription(
208630    p_ae_header_id => l_ae_header_id
208631   ,p_description  => Description_1 (
208632      p_application_id         => p_application_id
208633    , p_ae_header_id           => l_ae_header_id 
208634 , p_source_1 => p_source_1
208635 , p_source_2 => p_source_2
208636 , p_source_3 => p_source_3
208637 , p_source_4 => p_source_4
208638 , p_source_5 => p_source_5
208639    )
208640 );
208641 
208642 
208643    --
208644    -- call ADRs
208645    -- Bug 4922099
208646    --
208647    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
208648         (NVL(l_actual_upg_option, 'N') = 'O') OR
208649         (NVL(l_enc_upg_option, 'N') = 'O')
208650       )
208651    THEN
208652    NULL;
208653    --
208654    --
208655    
208656   l_ccid := AcctDerRule_11(
208657            p_application_id           => p_application_id
208658          , p_ae_header_id             => l_ae_header_id 
208659 , p_source_22 => p_source_22
208660          , x_transaction_coa_id       => l_adr_transaction_coa_id
208661          , x_accounting_coa_id        => l_adr_accounting_coa_id
208662          , x_value_type_code          => l_adr_value_type_code
208663          , p_side                     => 'NA'
208664    );
208665 
208666    xla_ae_lines_pkg.set_ccid(
208667     p_code_combination_id          => l_ccid
208668   , p_value_type_code              => l_adr_value_type_code
208669   , p_transaction_coa_id           => l_adr_transaction_coa_id
208670   , p_accounting_coa_id            => l_adr_accounting_coa_id
208671   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
208672   , p_adr_type_code                => 'S'
208673   , p_component_type               => l_component_type
208674   , p_component_code               => l_component_code
208675   , p_component_type_code          => l_component_type_code
208676   , p_component_appl_id            => l_component_appl_id
208677   , p_amb_context_code             => l_amb_context_code
208678   , p_side                         => 'NA'
208679   );
208680 
208681 
208682    --
208683    --
208684    END IF;
208685    --
208686    -- Bug 4922099
208687    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
208688           (NVL(l_enc_upg_option, 'N') = 'O')
208689         ) AND
208690         (l_bflow_method_code = 'PRIOR_ENTRY')
208691       )
208692    THEN
208693       IF
208694       --
208695       1 = 2
208696       --
208697       THEN
208698       xla_accounting_err_pkg.build_message
208699                                     (p_appli_s_name            => 'XLA'
208700                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
208701                                     ,p_token_1                 => 'LINE_NUMBER'
208702                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
208703                                     ,p_token_2                 => 'LINE_TYPE_NAME'
208704                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
208705                                                                              l_component_type
208706                                                                             ,l_component_code
208707                                                                             ,l_component_type_code
208708                                                                             ,l_component_appl_id
208709                                                                             ,l_amb_context_code
208710                                                                             ,l_entity_code
208711                                                                             ,l_event_class_code
208712                                                                            )
208713                                     ,p_token_3                 => 'OWNER'
208714                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
208715                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
208716                                                                           ,p_lookup_code    => l_component_type_code
208717                                                                          )
208718                                     ,p_token_4                 => 'PRODUCT_NAME'
208719                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
208720                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
208721                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
208722                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
208723                                     ,p_ae_header_id            =>  NULL
208724                                        );
208725 
208726         IF (C_LEVEL_ERROR>= g_log_level) THEN
208727                  trace
208728                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
208729                       ,p_level    => C_LEVEL_ERROR
208730                       ,p_module   => l_log_module);
208731         END IF;
208732       END IF;
208733    END IF;
208734    --
208735    --
208736    ------------------------------------------------------------------------------------------------
208737    -- 4219869 Business Flow
208738    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
208739    -- Prior Entry.  Currently, the following code is always generated.
208740    ------------------------------------------------------------------------------------------------
208741    XLA_AE_LINES_PKG.ValidateCurrentLine;
208742 
208743    ------------------------------------------------------------------------------------
208744    -- 4219869 Business Flow
208745    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
208746    ------------------------------------------------------------------------------------
208747    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
208748 
208749    ----------------------------------------------------------------------------------
208750    -- 4219869 Business Flow
208751    -- Update journal entry status -- Need to generate this within IF <condition>
208752    ----------------------------------------------------------------------------------
208753    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
208754          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
208755          ,p_balance_type_code => l_balance_type_code
208756          );
208757 
208758    -------------------------------------------------------------------------------------------
208759    -- 4262811 - Generate the Accrual Reversal lines
208760    -------------------------------------------------------------------------------------------
208761    BEGIN
208762       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
208763                               (g_array_event(p_event_id).array_value_num('header_index'));
208764       IF l_acc_rev_flag IS NULL THEN
208765          l_acc_rev_flag := 'N';
208766       END IF;
208767    EXCEPTION
208768       WHEN OTHERS THEN
208769          l_acc_rev_flag := 'N';
208770    END;
208771    --
208772    IF (l_acc_rev_flag = 'Y') THEN
208773 
208774        -- 4645092  ------------------------------------------------------------------------------
208775        -- To allow MPA report to determine if it should generate report process
208776        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
208777        ------------------------------------------------------------------------------------------
208778 
208779        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
208780        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
208781    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
208782    -- call ADRs
208783    -- Bug 4922099
208784    --
208785    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
208786         (NVL(l_actual_upg_option, 'N') = 'O') OR
208787         (NVL(l_enc_upg_option, 'N') = 'O')
208788       )
208789    THEN
208790    NULL;
208791    --
208792    --
208793    
208794   l_ccid := AcctDerRule_11(
208795            p_application_id           => p_application_id
208796          , p_ae_header_id             => l_ae_header_id 
208797 , p_source_22 => p_source_22
208798          , x_transaction_coa_id       => l_adr_transaction_coa_id
208799          , x_accounting_coa_id        => l_adr_accounting_coa_id
208800          , x_value_type_code          => l_adr_value_type_code
208801          , p_side                     => 'NA'
208802    );
208803 
208804    xla_ae_lines_pkg.set_ccid(
208805     p_code_combination_id          => l_ccid
208806   , p_value_type_code              => l_adr_value_type_code
208807   , p_transaction_coa_id           => l_adr_transaction_coa_id
208808   , p_accounting_coa_id            => l_adr_accounting_coa_id
208809   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
208810   , p_adr_type_code                => 'S'
208811   , p_component_type               => l_component_type
208812   , p_component_code               => l_component_code
208813   , p_component_type_code          => l_component_type_code
208814   , p_component_appl_id            => l_component_appl_id
208815   , p_amb_context_code             => l_amb_context_code
208816   , p_side                         => 'NA'
208817   );
208818 
208819 
208820    --
208821    --
208822    END IF;
208823 
208824        --
208825        -- Update the line information that should be overwritten
208826        --
208827        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
208828                                          p_header_num   => 1);
208829        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
208830 
208831        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
208832 
208833        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
208834           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
208835        END IF;
208836 
208837       --
208838       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
208839       --
208840       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
208841           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
208842       ELSE
208843           ---------------------------------------------------------------------------------------------------
208844           -- 4262811a Switch Sign
208845           ---------------------------------------------------------------------------------------------------
208846           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
208847           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
208848                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
208849           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
208850                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
208851           -- 5132302
208852           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
208853                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
208854 
208855       END IF;
208856 
208857       -- 4955764
208858       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
208859       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
208860 
208861 
208862       XLA_AE_LINES_PKG.ValidateCurrentLine;
208863       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
208864 
208865       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
208866                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
208867                ,p_balance_type_code => l_balance_type_code);
208868 
208869    END IF;
208870 
208871    -----------------------------------------------------------------------------------------
208872    -- 4262811 Multiperiod Accounting
208873    -----------------------------------------------------------------------------------------
208874      -- No MPA option is assigned.
208875 
208876 
208877 END IF;
208878 END IF;
208879 --
208880 
208881 --
208882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
208883    trace
208884       (p_msg      => 'END of AcctLineType_380'
208885       ,p_level    => C_LEVEL_PROCEDURE
208886       ,p_module   => l_log_module);
208887 END IF;
208888 --
208889 EXCEPTION
208890   WHEN xla_exceptions_pkg.application_exception THEN
208891       RAISE;
208892   WHEN OTHERS THEN
208893        xla_exceptions_pkg.raise_message
208894            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_380');
208895 END AcctLineType_380;
208896 --
208897 
208898 ---------------------------------------
208899 --
208900 -- PRIVATE FUNCTION
208901 --         AcctLineType_381
208902 --
208903 ---------------------------------------
208904 PROCEDURE AcctLineType_381 (
208905   p_application_id        IN NUMBER
208906  ,p_event_id              IN NUMBER
208907  ,p_calculate_acctd_flag  IN VARCHAR2
208908  ,p_calculate_g_l_flag    IN VARCHAR2
208909  ,p_actual_flag           IN OUT VARCHAR2
208910  ,p_balance_type_code     OUT VARCHAR2
208911  ,p_gain_or_loss_ref      OUT VARCHAR2
208912  
208913 --TRANSACTION_ID
208914  , p_source_1            IN NUMBER
208915 --Item Concatenated Segments
208916  , p_source_2            IN VARCHAR2
208917 --Transaction Quantity
208918  , p_source_3            IN NUMBER
208919 --Transaction Unit of Measure Code
208920  , p_source_4            IN VARCHAR2
208921 --Inventory Transaction Type Description
208922  , p_source_5            IN VARCHAR2
208923 --Product Line Accounting Category Bridging Account
208924  , p_source_22            IN NUMBER
208925 --DISTRIBUTION_IDENTIFIER
208926  , p_source_84            IN NUMBER
208927 --Distribution Type
208928  , p_source_85            IN VARCHAR2
208929  , p_source_85_meaning    IN VARCHAR2
208930 --Entered Currency Code
208931  , p_source_88            IN VARCHAR2
208932 --Entered Amount
208933  , p_source_91            IN NUMBER
208934 --Currency Conversion Date
208935  , p_source_92            IN DATE
208936 --Currency Conversion Rate
208937  , p_source_93            IN NUMBER
208938 --Currency Conversion Type
208939  , p_source_94            IN VARCHAR2
208940 --Accounted Amount
208941  , p_source_95            IN NUMBER
208942 --Accounting Line Type
208943  , p_source_97            IN NUMBER
208944 --Subinventory Type Indicator
208945  , p_source_110            IN VARCHAR2
208946  , p_source_110_meaning    IN VARCHAR2
208947 )
208948 IS
208949 
208950 l_component_type              VARCHAR2(80);
208951 l_component_code              VARCHAR2(30);
208952 l_component_type_code         VARCHAR2(1);
208953 l_component_appl_id           INTEGER;
208954 l_amb_context_code            VARCHAR2(30);
208955 l_entity_code                 VARCHAR2(30);
208956 l_event_class_code            VARCHAR2(30);
208957 l_ae_header_id                NUMBER;
208958 l_event_type_code             VARCHAR2(30);
208959 l_line_definition_code        VARCHAR2(30);
208960 l_line_definition_owner_code  VARCHAR2(1);
208961 --
208962 -- adr variables
208963 l_segment                     VARCHAR2(30);
208964 l_ccid                        NUMBER;
208965 l_adr_transaction_coa_id      NUMBER;
208966 l_adr_accounting_coa_id       NUMBER;
208967 l_adr_flexfield_segment_code  VARCHAR2(30);
208968 l_adr_flex_value_set_id       NUMBER;
208969 l_adr_value_type_code         VARCHAR2(30);
208970 l_adr_value_combination_id    NUMBER;
208971 l_adr_value_segment_code      VARCHAR2(30);
208972 
208973 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
208974 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
208975 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
208976 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
208977 
208978 -- 4262811 Variables ------------------------------------------------------------------------------------------
208979 l_entered_amt_idx             NUMBER;
208980 l_accted_amt_idx              NUMBER;
208981 l_acc_rev_flag                VARCHAR2(1);
208982 l_accrual_line_num            NUMBER;
208983 l_tmp_amt                     NUMBER;
208984 l_acc_rev_natural_side_code   VARCHAR2(1);
208985 
208986 l_num_entries                 NUMBER;
208987 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
208988 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
208989 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
208990 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
208991 l_recog_line_1                NUMBER;
208992 l_recog_line_2                NUMBER;
208993 
208994 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
208995 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
208996 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
208997 
208998 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
208999 
209000 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
209001 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
209002 
209003 ---------------------------------------------------------------------------------------------------------------
209004 
209005 
209006 --
209007 -- bulk performance
209008 --
209009 l_balance_type_code           VARCHAR2(1);
209010 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
209011 l_log_module                  VARCHAR2(240);
209012 
209013 --
209014 -- Upgrade strategy
209015 --
209016 l_actual_upg_option           VARCHAR2(1);
209017 l_enc_upg_option           VARCHAR2(1);
209018 
209019 --
209020 BEGIN
209021 --
209022 IF g_log_enabled THEN
209023       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_381';
209024 END IF;
209025 --
209026 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209027 
209028       trace
209029          (p_msg      => 'BEGIN of AcctLineType_381'
209030          ,p_level    => C_LEVEL_PROCEDURE
209031          ,p_module   => l_log_module);
209032 
209033 END IF;
209034 --
209035 l_component_type             := 'AMB_JLT';
209036 l_component_code             := 'PI_BRIDGING';
209037 l_component_type_code        := 'S';
209038 l_component_appl_id          :=  707;
209039 l_amb_context_code           := 'DEFAULT';
209040 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
209041 l_event_class_code           := 'WIP_MTL';
209042 l_event_type_code            := 'WIP_NEG_COMP_RETURN';
209043 l_line_definition_owner_code := 'S';
209044 l_line_definition_code       := 'PI_WIP_NEG_COMP_RETURN';
209045 --
209046 l_balance_type_code          := 'A';
209047 l_segment                     := NULL;
209048 l_ccid                        := NULL;
209049 l_adr_transaction_coa_id      := NULL;
209050 l_adr_accounting_coa_id       := NULL;
209051 l_adr_flexfield_segment_code  := NULL;
209052 l_adr_flex_value_set_id       := NULL;
209053 l_adr_value_type_code         := NULL;
209054 l_adr_value_combination_id    := NULL;
209055 l_adr_value_segment_code      := NULL;
209056 
209057 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
209058 l_bflow_class_code           := '';    -- 4219869 Business Flow
209059 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
209060 l_budgetary_control_flag     := 'N';
209061 
209062 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
209063 l_bflow_applied_to_amt       := NULL; -- 5132302
209064 l_entered_amt_idx            := NULL;          -- 4262811
209065 l_accted_amt_idx             := NULL;          -- 4262811
209066 l_acc_rev_flag               := NULL;          -- 4262811
209067 l_accrual_line_num           := NULL;          -- 4262811
209068 l_tmp_amt                    := NULL;          -- 4262811
209069 --
209070  
209071 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
209072     l_balance_type_code <> 'B' THEN
209073 IF (NVL(p_source_97,9E125) =  1 OR 
209074 NVL(p_source_97,9E125) =  2 OR 
209075 NVL(p_source_97,9E125) =  3) AND 
209076 NVL(p_source_110,'
209077 ') =  'Y'
209078  THEN 
209079 
209080    --
209081    XLA_AE_LINES_PKG.SetNewLine;
209082 
209083    p_balance_type_code          := l_balance_type_code;
209084    -- set the flag so later we will know whether the gain loss line needs to be created
209085    
209086    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
209087      p_actual_flag :='A';
209088    END IF;
209089 
209090    --
209091    -- bulk performance
209092    --
209093    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
209094                                       p_header_num   => 0); -- 4262811
209095    --
209096    -- set accounting line options
209097    --
209098    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
209099            p_natural_side_code          => 'C'
209100          , p_gain_or_loss_flag          => 'N'
209101          , p_gl_transfer_mode_code      => 'S'
209102          , p_acct_entry_type_code       => 'A'
209103          , p_switch_side_flag           => 'Y'
209104          , p_merge_duplicate_code       => 'N'
209105          );
209106    --
209107    l_acc_rev_natural_side_code := 'D';  -- 4262811
209108    -- 
209109    --
209110    -- set accounting line type info
209111    --
209112    xla_ae_lines_pkg.SetAcctLineType
209113       (p_component_type             => l_component_type
209114       ,p_event_type_code            => l_event_type_code
209115       ,p_line_definition_owner_code => l_line_definition_owner_code
209116       ,p_line_definition_code       => l_line_definition_code
209117       ,p_accounting_line_code       => l_component_code
209118       ,p_accounting_line_type_code  => l_component_type_code
209119       ,p_accounting_line_appl_id    => l_component_appl_id
209120       ,p_amb_context_code           => l_amb_context_code
209121       ,p_entity_code                => l_entity_code
209122       ,p_event_class_code           => l_event_class_code);
209123    --
209124    -- set accounting class
209125    --
209126    xla_ae_lines_pkg.SetAcctClass(
209127            p_accounting_class_code  => 'BRIDGING'
209128          , p_ae_header_id           => l_ae_header_id
209129          );
209130 
209131    --
209132    -- set rounding class
209133    --
209134    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
209135                       'BRIDGING';
209136 
209137    --
209138    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
209139    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
209140    --
209141    -- bulk performance
209142    --
209143    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
209144 
209145    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
209146       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
209147 
209148    -- 4955764
209149    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
209150       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
209151 
209152    -- 4458381 Public Sector Enh
209153    
209154    --
209155    -- set accounting attributes for the line type
209156    --
209157    l_entered_amt_idx := 3;
209158    l_accted_amt_idx  := 8;
209159    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
209160    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
209161    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
209162    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
209163    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
209164    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
209165    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
209166    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
209167    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
209168    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
209169    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
209170    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
209171    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
209172    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
209173    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
209174    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
209175    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
209176 
209177    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
209178    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
209179 
209180    ---------------------------------------------------------------------------------------------------------------
209181    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
209182    ---------------------------------------------------------------------------------------------------------------
209183    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
209184 
209185    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
209186    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
209187 
209188    IF xla_accounting_cache_pkg.GetValueChar
209189          (p_source_code         => 'LEDGER_CATEGORY_CODE'
209190          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
209191    AND l_bflow_method_code = 'PRIOR_ENTRY'
209192 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
209193    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
209194          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
209195        )
209196    THEN
209197          xla_ae_lines_pkg.BflowUpgEntry
209198            (p_business_method_code    => l_bflow_method_code
209199            ,p_business_class_code     => l_bflow_class_code
209200            ,p_balance_type            => l_balance_type_code);
209201    ELSE
209202       NULL;
209203 -- No business flow processing for business flow method of NONE.
209204    END IF;
209205 
209206    --
209207    -- call analytical criteria
209208    --
209209    
209210    --
209211    -- call description
209212    --
209213    
209214 xla_ae_lines_pkg.SetLineDescription(
209215    p_ae_header_id => l_ae_header_id
209216   ,p_description  => Description_1 (
209217      p_application_id         => p_application_id
209218    , p_ae_header_id           => l_ae_header_id 
209219 , p_source_1 => p_source_1
209220 , p_source_2 => p_source_2
209221 , p_source_3 => p_source_3
209222 , p_source_4 => p_source_4
209223 , p_source_5 => p_source_5
209224    )
209225 );
209226 
209227 
209228    --
209229    -- call ADRs
209230    -- Bug 4922099
209231    --
209232    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
209233         (NVL(l_actual_upg_option, 'N') = 'O') OR
209234         (NVL(l_enc_upg_option, 'N') = 'O')
209235       )
209236    THEN
209237    NULL;
209238    --
209239    --
209240    
209241   l_ccid := AcctDerRule_11(
209242            p_application_id           => p_application_id
209243          , p_ae_header_id             => l_ae_header_id 
209244 , p_source_22 => p_source_22
209245          , x_transaction_coa_id       => l_adr_transaction_coa_id
209246          , x_accounting_coa_id        => l_adr_accounting_coa_id
209247          , x_value_type_code          => l_adr_value_type_code
209248          , p_side                     => 'NA'
209249    );
209250 
209251    xla_ae_lines_pkg.set_ccid(
209252     p_code_combination_id          => l_ccid
209253   , p_value_type_code              => l_adr_value_type_code
209254   , p_transaction_coa_id           => l_adr_transaction_coa_id
209255   , p_accounting_coa_id            => l_adr_accounting_coa_id
209256   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
209257   , p_adr_type_code                => 'S'
209258   , p_component_type               => l_component_type
209259   , p_component_code               => l_component_code
209260   , p_component_type_code          => l_component_type_code
209261   , p_component_appl_id            => l_component_appl_id
209262   , p_amb_context_code             => l_amb_context_code
209263   , p_side                         => 'NA'
209264   );
209265 
209266 
209267    --
209268    --
209269    END IF;
209270    --
209271    -- Bug 4922099
209272    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
209273           (NVL(l_enc_upg_option, 'N') = 'O')
209274         ) AND
209275         (l_bflow_method_code = 'PRIOR_ENTRY')
209276       )
209277    THEN
209278       IF
209279       --
209280       1 = 2
209281       --
209282       THEN
209283       xla_accounting_err_pkg.build_message
209284                                     (p_appli_s_name            => 'XLA'
209285                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
209286                                     ,p_token_1                 => 'LINE_NUMBER'
209287                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
209288                                     ,p_token_2                 => 'LINE_TYPE_NAME'
209289                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
209290                                                                              l_component_type
209291                                                                             ,l_component_code
209292                                                                             ,l_component_type_code
209293                                                                             ,l_component_appl_id
209294                                                                             ,l_amb_context_code
209295                                                                             ,l_entity_code
209296                                                                             ,l_event_class_code
209297                                                                            )
209298                                     ,p_token_3                 => 'OWNER'
209299                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
209300                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
209301                                                                           ,p_lookup_code    => l_component_type_code
209302                                                                          )
209303                                     ,p_token_4                 => 'PRODUCT_NAME'
209304                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
209305                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
209306                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
209307                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
209308                                     ,p_ae_header_id            =>  NULL
209309                                        );
209310 
209311         IF (C_LEVEL_ERROR>= g_log_level) THEN
209312                  trace
209313                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
209314                       ,p_level    => C_LEVEL_ERROR
209315                       ,p_module   => l_log_module);
209316         END IF;
209317       END IF;
209318    END IF;
209319    --
209320    --
209321    ------------------------------------------------------------------------------------------------
209322    -- 4219869 Business Flow
209323    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
209324    -- Prior Entry.  Currently, the following code is always generated.
209325    ------------------------------------------------------------------------------------------------
209326    XLA_AE_LINES_PKG.ValidateCurrentLine;
209327 
209328    ------------------------------------------------------------------------------------
209329    -- 4219869 Business Flow
209330    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
209331    ------------------------------------------------------------------------------------
209332    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
209333 
209334    ----------------------------------------------------------------------------------
209335    -- 4219869 Business Flow
209336    -- Update journal entry status -- Need to generate this within IF <condition>
209337    ----------------------------------------------------------------------------------
209338    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
209339          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
209340          ,p_balance_type_code => l_balance_type_code
209341          );
209342 
209343    -------------------------------------------------------------------------------------------
209344    -- 4262811 - Generate the Accrual Reversal lines
209345    -------------------------------------------------------------------------------------------
209346    BEGIN
209347       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
209348                               (g_array_event(p_event_id).array_value_num('header_index'));
209349       IF l_acc_rev_flag IS NULL THEN
209350          l_acc_rev_flag := 'N';
209351       END IF;
209352    EXCEPTION
209353       WHEN OTHERS THEN
209354          l_acc_rev_flag := 'N';
209355    END;
209356    --
209357    IF (l_acc_rev_flag = 'Y') THEN
209358 
209359        -- 4645092  ------------------------------------------------------------------------------
209360        -- To allow MPA report to determine if it should generate report process
209361        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
209362        ------------------------------------------------------------------------------------------
209363 
209364        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
209365        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
209366    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
209367    -- call ADRs
209368    -- Bug 4922099
209369    --
209370    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
209371         (NVL(l_actual_upg_option, 'N') = 'O') OR
209372         (NVL(l_enc_upg_option, 'N') = 'O')
209373       )
209374    THEN
209375    NULL;
209376    --
209377    --
209378    
209379   l_ccid := AcctDerRule_11(
209380            p_application_id           => p_application_id
209381          , p_ae_header_id             => l_ae_header_id 
209382 , p_source_22 => p_source_22
209383          , x_transaction_coa_id       => l_adr_transaction_coa_id
209384          , x_accounting_coa_id        => l_adr_accounting_coa_id
209385          , x_value_type_code          => l_adr_value_type_code
209386          , p_side                     => 'NA'
209387    );
209388 
209389    xla_ae_lines_pkg.set_ccid(
209390     p_code_combination_id          => l_ccid
209391   , p_value_type_code              => l_adr_value_type_code
209392   , p_transaction_coa_id           => l_adr_transaction_coa_id
209393   , p_accounting_coa_id            => l_adr_accounting_coa_id
209394   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
209395   , p_adr_type_code                => 'S'
209396   , p_component_type               => l_component_type
209397   , p_component_code               => l_component_code
209398   , p_component_type_code          => l_component_type_code
209399   , p_component_appl_id            => l_component_appl_id
209400   , p_amb_context_code             => l_amb_context_code
209401   , p_side                         => 'NA'
209402   );
209403 
209404 
209405    --
209406    --
209407    END IF;
209408 
209409        --
209410        -- Update the line information that should be overwritten
209411        --
209412        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
209413                                          p_header_num   => 1);
209414        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
209415 
209416        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
209417 
209418        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
209419           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
209420        END IF;
209421 
209422       --
209423       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
209424       --
209425       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
209426           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
209427       ELSE
209428           ---------------------------------------------------------------------------------------------------
209429           -- 4262811a Switch Sign
209430           ---------------------------------------------------------------------------------------------------
209431           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
209432           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
209433                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
209434           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
209435                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
209436           -- 5132302
209437           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
209438                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
209439 
209440       END IF;
209441 
209442       -- 4955764
209443       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
209444       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
209445 
209446 
209447       XLA_AE_LINES_PKG.ValidateCurrentLine;
209448       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
209449 
209450       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
209451                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
209452                ,p_balance_type_code => l_balance_type_code);
209453 
209454    END IF;
209455 
209456    -----------------------------------------------------------------------------------------
209457    -- 4262811 Multiperiod Accounting
209458    -----------------------------------------------------------------------------------------
209459      -- No MPA option is assigned.
209460 
209461 
209462 END IF;
209463 END IF;
209464 --
209465 
209466 --
209467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209468    trace
209469       (p_msg      => 'END of AcctLineType_381'
209470       ,p_level    => C_LEVEL_PROCEDURE
209471       ,p_module   => l_log_module);
209472 END IF;
209473 --
209474 EXCEPTION
209475   WHEN xla_exceptions_pkg.application_exception THEN
209476       RAISE;
209477   WHEN OTHERS THEN
209478        xla_exceptions_pkg.raise_message
209479            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_381');
209480 END AcctLineType_381;
209481 --
209482 
209483 ---------------------------------------
209484 --
209485 -- PRIVATE FUNCTION
209486 --         AcctLineType_382
209487 --
209488 ---------------------------------------
209489 PROCEDURE AcctLineType_382 (
209490   p_application_id        IN NUMBER
209491  ,p_event_id              IN NUMBER
209492  ,p_calculate_acctd_flag  IN VARCHAR2
209493  ,p_calculate_g_l_flag    IN VARCHAR2
209494  ,p_actual_flag           IN OUT VARCHAR2
209495  ,p_balance_type_code     OUT VARCHAR2
209496  ,p_gain_or_loss_ref      OUT VARCHAR2
209497  
209498 --TRANSACTION_ID
209499  , p_source_1            IN NUMBER
209500 --Item Concatenated Segments
209501  , p_source_2            IN VARCHAR2
209502 --Transaction Quantity
209503  , p_source_3            IN NUMBER
209504 --Transaction Unit of Measure Code
209505  , p_source_4            IN VARCHAR2
209506 --Inventory Transaction Type Description
209507  , p_source_5            IN VARCHAR2
209508 --Product Line Accounting Category Bridging Account
209509  , p_source_22            IN NUMBER
209510 --DISTRIBUTION_IDENTIFIER
209511  , p_source_84            IN NUMBER
209512 --Distribution Type
209513  , p_source_85            IN VARCHAR2
209514  , p_source_85_meaning    IN VARCHAR2
209515 --Entered Currency Code
209516  , p_source_88            IN VARCHAR2
209517 --Entered Amount
209518  , p_source_91            IN NUMBER
209519 --Currency Conversion Date
209520  , p_source_92            IN DATE
209521 --Currency Conversion Rate
209522  , p_source_93            IN NUMBER
209523 --Currency Conversion Type
209524  , p_source_94            IN VARCHAR2
209525 --Accounted Amount
209526  , p_source_95            IN NUMBER
209527 --Accounting Line Type
209528  , p_source_97            IN NUMBER
209529 )
209530 IS
209531 
209532 l_component_type              VARCHAR2(80);
209533 l_component_code              VARCHAR2(30);
209534 l_component_type_code         VARCHAR2(1);
209535 l_component_appl_id           INTEGER;
209536 l_amb_context_code            VARCHAR2(30);
209537 l_entity_code                 VARCHAR2(30);
209538 l_event_class_code            VARCHAR2(30);
209539 l_ae_header_id                NUMBER;
209540 l_event_type_code             VARCHAR2(30);
209541 l_line_definition_code        VARCHAR2(30);
209542 l_line_definition_owner_code  VARCHAR2(1);
209543 --
209544 -- adr variables
209545 l_segment                     VARCHAR2(30);
209546 l_ccid                        NUMBER;
209547 l_adr_transaction_coa_id      NUMBER;
209548 l_adr_accounting_coa_id       NUMBER;
209549 l_adr_flexfield_segment_code  VARCHAR2(30);
209550 l_adr_flex_value_set_id       NUMBER;
209551 l_adr_value_type_code         VARCHAR2(30);
209552 l_adr_value_combination_id    NUMBER;
209553 l_adr_value_segment_code      VARCHAR2(30);
209554 
209555 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
209556 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
209557 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
209558 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
209559 
209560 -- 4262811 Variables ------------------------------------------------------------------------------------------
209561 l_entered_amt_idx             NUMBER;
209562 l_accted_amt_idx              NUMBER;
209563 l_acc_rev_flag                VARCHAR2(1);
209564 l_accrual_line_num            NUMBER;
209565 l_tmp_amt                     NUMBER;
209566 l_acc_rev_natural_side_code   VARCHAR2(1);
209567 
209568 l_num_entries                 NUMBER;
209569 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
209570 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
209571 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
209572 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
209573 l_recog_line_1                NUMBER;
209574 l_recog_line_2                NUMBER;
209575 
209576 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
209577 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
209578 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
209579 
209580 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
209581 
209582 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
209583 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
209584 
209585 ---------------------------------------------------------------------------------------------------------------
209586 
209587 
209588 --
209589 -- bulk performance
209590 --
209591 l_balance_type_code           VARCHAR2(1);
209592 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
209593 l_log_module                  VARCHAR2(240);
209594 
209595 --
209596 -- Upgrade strategy
209597 --
209598 l_actual_upg_option           VARCHAR2(1);
209599 l_enc_upg_option           VARCHAR2(1);
209600 
209601 --
209602 BEGIN
209603 --
209604 IF g_log_enabled THEN
209605       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_382';
209606 END IF;
209607 --
209608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209609 
209610       trace
209611          (p_msg      => 'BEGIN of AcctLineType_382'
209612          ,p_level    => C_LEVEL_PROCEDURE
209613          ,p_module   => l_log_module);
209614 
209615 END IF;
209616 --
209617 l_component_type             := 'AMB_JLT';
209618 l_component_code             := 'PI_BRIDGING';
209619 l_component_type_code        := 'S';
209620 l_component_appl_id          :=  707;
209621 l_amb_context_code           := 'DEFAULT';
209622 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
209623 l_event_class_code           := 'DIR_INTERORG_SHIP';
209624 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
209625 l_line_definition_owner_code := 'S';
209626 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
209627 --
209628 l_balance_type_code          := 'A';
209629 l_segment                     := NULL;
209630 l_ccid                        := NULL;
209631 l_adr_transaction_coa_id      := NULL;
209632 l_adr_accounting_coa_id       := NULL;
209633 l_adr_flexfield_segment_code  := NULL;
209634 l_adr_flex_value_set_id       := NULL;
209635 l_adr_value_type_code         := NULL;
209636 l_adr_value_combination_id    := NULL;
209637 l_adr_value_segment_code      := NULL;
209638 
209639 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
209640 l_bflow_class_code           := '';    -- 4219869 Business Flow
209641 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
209642 l_budgetary_control_flag     := 'N';
209643 
209644 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
209645 l_bflow_applied_to_amt       := NULL; -- 5132302
209646 l_entered_amt_idx            := NULL;          -- 4262811
209647 l_accted_amt_idx             := NULL;          -- 4262811
209648 l_acc_rev_flag               := NULL;          -- 4262811
209649 l_accrual_line_num           := NULL;          -- 4262811
209650 l_tmp_amt                    := NULL;          -- 4262811
209651 --
209652  
209653 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
209654     l_balance_type_code <> 'B' THEN
209655 IF NVL(p_source_97,9E125) =  1
209656  THEN 
209657 
209658    --
209659    XLA_AE_LINES_PKG.SetNewLine;
209660 
209661    p_balance_type_code          := l_balance_type_code;
209662    -- set the flag so later we will know whether the gain loss line needs to be created
209663    
209664    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
209665      p_actual_flag :='A';
209666    END IF;
209667 
209668    --
209669    -- bulk performance
209670    --
209671    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
209672                                       p_header_num   => 0); -- 4262811
209673    --
209674    -- set accounting line options
209675    --
209676    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
209677            p_natural_side_code          => 'C'
209678          , p_gain_or_loss_flag          => 'N'
209679          , p_gl_transfer_mode_code      => 'S'
209680          , p_acct_entry_type_code       => 'A'
209681          , p_switch_side_flag           => 'Y'
209682          , p_merge_duplicate_code       => 'N'
209683          );
209684    --
209685    l_acc_rev_natural_side_code := 'D';  -- 4262811
209686    -- 
209687    --
209688    -- set accounting line type info
209689    --
209690    xla_ae_lines_pkg.SetAcctLineType
209691       (p_component_type             => l_component_type
209692       ,p_event_type_code            => l_event_type_code
209693       ,p_line_definition_owner_code => l_line_definition_owner_code
209694       ,p_line_definition_code       => l_line_definition_code
209695       ,p_accounting_line_code       => l_component_code
209696       ,p_accounting_line_type_code  => l_component_type_code
209697       ,p_accounting_line_appl_id    => l_component_appl_id
209698       ,p_amb_context_code           => l_amb_context_code
209699       ,p_entity_code                => l_entity_code
209700       ,p_event_class_code           => l_event_class_code);
209701    --
209702    -- set accounting class
209703    --
209704    xla_ae_lines_pkg.SetAcctClass(
209705            p_accounting_class_code  => 'BRIDGING'
209706          , p_ae_header_id           => l_ae_header_id
209707          );
209708 
209709    --
209710    -- set rounding class
209711    --
209712    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
209713                       'BRIDGING';
209714 
209715    --
209716    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
209717    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
209718    --
209719    -- bulk performance
209720    --
209721    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
209722 
209723    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
209724       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
209725 
209726    -- 4955764
209727    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
209728       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
209729 
209730    -- 4458381 Public Sector Enh
209731    
209732    --
209733    -- set accounting attributes for the line type
209734    --
209735    l_entered_amt_idx := 3;
209736    l_accted_amt_idx  := 8;
209737    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
209738    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
209739    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
209740    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
209741    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
209742    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
209743    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
209744    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
209745    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
209746    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
209747    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
209748    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
209749    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
209750    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
209751    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
209752    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
209753    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
209754 
209755    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
209756    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
209757 
209758    ---------------------------------------------------------------------------------------------------------------
209759    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
209760    ---------------------------------------------------------------------------------------------------------------
209761    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
209762 
209763    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
209764    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
209765 
209766    IF xla_accounting_cache_pkg.GetValueChar
209767          (p_source_code         => 'LEDGER_CATEGORY_CODE'
209768          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
209769    AND l_bflow_method_code = 'PRIOR_ENTRY'
209770 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
209771    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
209772          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
209773        )
209774    THEN
209775          xla_ae_lines_pkg.BflowUpgEntry
209776            (p_business_method_code    => l_bflow_method_code
209777            ,p_business_class_code     => l_bflow_class_code
209778            ,p_balance_type            => l_balance_type_code);
209779    ELSE
209780       NULL;
209781 -- No business flow processing for business flow method of NONE.
209782    END IF;
209783 
209784    --
209785    -- call analytical criteria
209786    --
209787    
209788    --
209789    -- call description
209790    --
209791    
209792 xla_ae_lines_pkg.SetLineDescription(
209793    p_ae_header_id => l_ae_header_id
209794   ,p_description  => Description_1 (
209795      p_application_id         => p_application_id
209796    , p_ae_header_id           => l_ae_header_id 
209797 , p_source_1 => p_source_1
209798 , p_source_2 => p_source_2
209799 , p_source_3 => p_source_3
209800 , p_source_4 => p_source_4
209801 , p_source_5 => p_source_5
209802    )
209803 );
209804 
209805 
209806    --
209807    -- call ADRs
209808    -- Bug 4922099
209809    --
209810    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
209811         (NVL(l_actual_upg_option, 'N') = 'O') OR
209812         (NVL(l_enc_upg_option, 'N') = 'O')
209813       )
209814    THEN
209815    NULL;
209816    --
209817    --
209818    
209819   l_ccid := AcctDerRule_11(
209820            p_application_id           => p_application_id
209821          , p_ae_header_id             => l_ae_header_id 
209822 , p_source_22 => p_source_22
209823          , x_transaction_coa_id       => l_adr_transaction_coa_id
209824          , x_accounting_coa_id        => l_adr_accounting_coa_id
209825          , x_value_type_code          => l_adr_value_type_code
209826          , p_side                     => 'NA'
209827    );
209828 
209829    xla_ae_lines_pkg.set_ccid(
209830     p_code_combination_id          => l_ccid
209831   , p_value_type_code              => l_adr_value_type_code
209832   , p_transaction_coa_id           => l_adr_transaction_coa_id
209833   , p_accounting_coa_id            => l_adr_accounting_coa_id
209834   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
209835   , p_adr_type_code                => 'S'
209836   , p_component_type               => l_component_type
209837   , p_component_code               => l_component_code
209838   , p_component_type_code          => l_component_type_code
209839   , p_component_appl_id            => l_component_appl_id
209840   , p_amb_context_code             => l_amb_context_code
209841   , p_side                         => 'NA'
209842   );
209843 
209844 
209845    --
209846    --
209847    END IF;
209848    --
209849    -- Bug 4922099
209850    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
209851           (NVL(l_enc_upg_option, 'N') = 'O')
209852         ) AND
209853         (l_bflow_method_code = 'PRIOR_ENTRY')
209854       )
209855    THEN
209856       IF
209857       --
209858       1 = 2
209859       --
209860       THEN
209861       xla_accounting_err_pkg.build_message
209862                                     (p_appli_s_name            => 'XLA'
209863                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
209864                                     ,p_token_1                 => 'LINE_NUMBER'
209865                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
209866                                     ,p_token_2                 => 'LINE_TYPE_NAME'
209867                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
209868                                                                              l_component_type
209869                                                                             ,l_component_code
209870                                                                             ,l_component_type_code
209871                                                                             ,l_component_appl_id
209872                                                                             ,l_amb_context_code
209873                                                                             ,l_entity_code
209874                                                                             ,l_event_class_code
209875                                                                            )
209876                                     ,p_token_3                 => 'OWNER'
209877                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
209878                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
209879                                                                           ,p_lookup_code    => l_component_type_code
209880                                                                          )
209881                                     ,p_token_4                 => 'PRODUCT_NAME'
209882                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
209883                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
209884                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
209885                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
209886                                     ,p_ae_header_id            =>  NULL
209887                                        );
209888 
209889         IF (C_LEVEL_ERROR>= g_log_level) THEN
209890                  trace
209891                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
209892                       ,p_level    => C_LEVEL_ERROR
209893                       ,p_module   => l_log_module);
209894         END IF;
209895       END IF;
209896    END IF;
209897    --
209898    --
209899    ------------------------------------------------------------------------------------------------
209900    -- 4219869 Business Flow
209901    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
209902    -- Prior Entry.  Currently, the following code is always generated.
209903    ------------------------------------------------------------------------------------------------
209904    XLA_AE_LINES_PKG.ValidateCurrentLine;
209905 
209906    ------------------------------------------------------------------------------------
209907    -- 4219869 Business Flow
209908    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
209909    ------------------------------------------------------------------------------------
209910    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
209911 
209912    ----------------------------------------------------------------------------------
209913    -- 4219869 Business Flow
209914    -- Update journal entry status -- Need to generate this within IF <condition>
209915    ----------------------------------------------------------------------------------
209916    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
209917          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
209918          ,p_balance_type_code => l_balance_type_code
209919          );
209920 
209921    -------------------------------------------------------------------------------------------
209922    -- 4262811 - Generate the Accrual Reversal lines
209923    -------------------------------------------------------------------------------------------
209924    BEGIN
209925       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
209926                               (g_array_event(p_event_id).array_value_num('header_index'));
209927       IF l_acc_rev_flag IS NULL THEN
209928          l_acc_rev_flag := 'N';
209929       END IF;
209930    EXCEPTION
209931       WHEN OTHERS THEN
209932          l_acc_rev_flag := 'N';
209933    END;
209934    --
209935    IF (l_acc_rev_flag = 'Y') THEN
209936 
209937        -- 4645092  ------------------------------------------------------------------------------
209938        -- To allow MPA report to determine if it should generate report process
209939        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
209940        ------------------------------------------------------------------------------------------
209941 
209942        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
209943        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
209944    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
209945    -- call ADRs
209946    -- Bug 4922099
209947    --
209948    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
209949         (NVL(l_actual_upg_option, 'N') = 'O') OR
209950         (NVL(l_enc_upg_option, 'N') = 'O')
209951       )
209952    THEN
209953    NULL;
209954    --
209955    --
209956    
209957   l_ccid := AcctDerRule_11(
209958            p_application_id           => p_application_id
209959          , p_ae_header_id             => l_ae_header_id 
209960 , p_source_22 => p_source_22
209961          , x_transaction_coa_id       => l_adr_transaction_coa_id
209962          , x_accounting_coa_id        => l_adr_accounting_coa_id
209963          , x_value_type_code          => l_adr_value_type_code
209964          , p_side                     => 'NA'
209965    );
209966 
209967    xla_ae_lines_pkg.set_ccid(
209968     p_code_combination_id          => l_ccid
209969   , p_value_type_code              => l_adr_value_type_code
209970   , p_transaction_coa_id           => l_adr_transaction_coa_id
209971   , p_accounting_coa_id            => l_adr_accounting_coa_id
209972   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
209973   , p_adr_type_code                => 'S'
209974   , p_component_type               => l_component_type
209975   , p_component_code               => l_component_code
209976   , p_component_type_code          => l_component_type_code
209977   , p_component_appl_id            => l_component_appl_id
209978   , p_amb_context_code             => l_amb_context_code
209979   , p_side                         => 'NA'
209980   );
209981 
209982 
209983    --
209984    --
209985    END IF;
209986 
209987        --
209988        -- Update the line information that should be overwritten
209989        --
209990        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
209991                                          p_header_num   => 1);
209992        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
209993 
209994        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
209995 
209996        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
209997           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
209998        END IF;
209999 
210000       --
210001       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
210002       --
210003       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
210004           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
210005       ELSE
210006           ---------------------------------------------------------------------------------------------------
210007           -- 4262811a Switch Sign
210008           ---------------------------------------------------------------------------------------------------
210009           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
210010           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
210011                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
210012           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
210013                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
210014           -- 5132302
210015           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
210016                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
210017 
210018       END IF;
210019 
210020       -- 4955764
210021       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
210022       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
210023 
210024 
210025       XLA_AE_LINES_PKG.ValidateCurrentLine;
210026       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
210027 
210028       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
210029                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
210030                ,p_balance_type_code => l_balance_type_code);
210031 
210032    END IF;
210033 
210034    -----------------------------------------------------------------------------------------
210035    -- 4262811 Multiperiod Accounting
210036    -----------------------------------------------------------------------------------------
210037      -- No MPA option is assigned.
210038 
210039 
210040 END IF;
210041 END IF;
210042 --
210043 
210044 --
210045 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
210046    trace
210047       (p_msg      => 'END of AcctLineType_382'
210048       ,p_level    => C_LEVEL_PROCEDURE
210049       ,p_module   => l_log_module);
210050 END IF;
210051 --
210052 EXCEPTION
210053   WHEN xla_exceptions_pkg.application_exception THEN
210054       RAISE;
210055   WHEN OTHERS THEN
210056        xla_exceptions_pkg.raise_message
210057            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_382');
210058 END AcctLineType_382;
210059 --
210060 
210061 ---------------------------------------
210062 --
210063 -- PRIVATE FUNCTION
210064 --         AcctLineType_383
210065 --
210066 ---------------------------------------
210067 PROCEDURE AcctLineType_383 (
210068   p_application_id        IN NUMBER
210069  ,p_event_id              IN NUMBER
210070  ,p_calculate_acctd_flag  IN VARCHAR2
210071  ,p_calculate_g_l_flag    IN VARCHAR2
210072  ,p_actual_flag           IN OUT VARCHAR2
210073  ,p_balance_type_code     OUT VARCHAR2
210074  ,p_gain_or_loss_ref      OUT VARCHAR2
210075  
210076 --TRANSACTION_ID
210077  , p_source_1            IN NUMBER
210078 --Item Concatenated Segments
210079  , p_source_2            IN VARCHAR2
210080 --Transaction Quantity
210081  , p_source_3            IN NUMBER
210082 --Transaction Unit of Measure Code
210083  , p_source_4            IN VARCHAR2
210084 --Inventory Transaction Type Description
210085  , p_source_5            IN VARCHAR2
210086 --Cost Element Name
210087  , p_source_15            IN NUMBER
210088 --Product Line Accounting Category Bridging Account
210089  , p_source_22            IN NUMBER
210090 --DISTRIBUTION_IDENTIFIER
210091  , p_source_84            IN NUMBER
210092 --Distribution Type
210093  , p_source_85            IN VARCHAR2
210094  , p_source_85_meaning    IN VARCHAR2
210095 --Entered Currency Code
210096  , p_source_88            IN VARCHAR2
210097 --Entered Amount
210098  , p_source_91            IN NUMBER
210099 --Currency Conversion Date
210100  , p_source_92            IN DATE
210101 --Currency Conversion Rate
210102  , p_source_93            IN NUMBER
210103 --Currency Conversion Type
210104  , p_source_94            IN VARCHAR2
210105 --Accounted Amount
210106  , p_source_95            IN NUMBER
210107 --Accounting Line Type
210108  , p_source_97            IN NUMBER
210109 )
210110 IS
210111 
210112 l_component_type              VARCHAR2(80);
210113 l_component_code              VARCHAR2(30);
210114 l_component_type_code         VARCHAR2(1);
210115 l_component_appl_id           INTEGER;
210116 l_amb_context_code            VARCHAR2(30);
210117 l_entity_code                 VARCHAR2(30);
210118 l_event_class_code            VARCHAR2(30);
210119 l_ae_header_id                NUMBER;
210120 l_event_type_code             VARCHAR2(30);
210121 l_line_definition_code        VARCHAR2(30);
210122 l_line_definition_owner_code  VARCHAR2(1);
210123 --
210124 -- adr variables
210125 l_segment                     VARCHAR2(30);
210126 l_ccid                        NUMBER;
210127 l_adr_transaction_coa_id      NUMBER;
210128 l_adr_accounting_coa_id       NUMBER;
210129 l_adr_flexfield_segment_code  VARCHAR2(30);
210130 l_adr_flex_value_set_id       NUMBER;
210131 l_adr_value_type_code         VARCHAR2(30);
210132 l_adr_value_combination_id    NUMBER;
210133 l_adr_value_segment_code      VARCHAR2(30);
210134 
210135 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
210136 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
210137 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
210138 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
210139 
210140 -- 4262811 Variables ------------------------------------------------------------------------------------------
210141 l_entered_amt_idx             NUMBER;
210142 l_accted_amt_idx              NUMBER;
210143 l_acc_rev_flag                VARCHAR2(1);
210144 l_accrual_line_num            NUMBER;
210145 l_tmp_amt                     NUMBER;
210146 l_acc_rev_natural_side_code   VARCHAR2(1);
210147 
210148 l_num_entries                 NUMBER;
210149 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
210150 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
210151 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
210152 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
210153 l_recog_line_1                NUMBER;
210154 l_recog_line_2                NUMBER;
210155 
210156 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
210157 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
210158 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
210159 
210160 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
210161 
210162 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
210163 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
210164 
210165 ---------------------------------------------------------------------------------------------------------------
210166 
210167 
210168 --
210169 -- bulk performance
210170 --
210171 l_balance_type_code           VARCHAR2(1);
210172 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
210173 l_log_module                  VARCHAR2(240);
210174 
210175 --
210176 -- Upgrade strategy
210177 --
210178 l_actual_upg_option           VARCHAR2(1);
210179 l_enc_upg_option           VARCHAR2(1);
210180 
210181 --
210182 BEGIN
210183 --
210184 IF g_log_enabled THEN
210185       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_383';
210186 END IF;
210187 --
210188 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
210189 
210190       trace
210191          (p_msg      => 'BEGIN of AcctLineType_383'
210192          ,p_level    => C_LEVEL_PROCEDURE
210193          ,p_module   => l_log_module);
210194 
210195 END IF;
210196 --
210197 l_component_type             := 'AMB_JLT';
210198 l_component_code             := 'PI_BRIDGING';
210199 l_component_type_code        := 'S';
210200 l_component_appl_id          :=  707;
210201 l_amb_context_code           := 'DEFAULT';
210202 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
210203 l_event_class_code           := 'CON_INV_OWNR_TXFR';
210204 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
210205 l_line_definition_owner_code := 'S';
210206 l_line_definition_code       := 'PI_CON_INV_OWNR_TRFR';
210207 --
210208 l_balance_type_code          := 'A';
210209 l_segment                     := NULL;
210210 l_ccid                        := NULL;
210211 l_adr_transaction_coa_id      := NULL;
210212 l_adr_accounting_coa_id       := NULL;
210213 l_adr_flexfield_segment_code  := NULL;
210214 l_adr_flex_value_set_id       := NULL;
210215 l_adr_value_type_code         := NULL;
210216 l_adr_value_combination_id    := NULL;
210217 l_adr_value_segment_code      := NULL;
210218 
210219 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
210220 l_bflow_class_code           := '';    -- 4219869 Business Flow
210221 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
210222 l_budgetary_control_flag     := 'N';
210223 
210224 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
210225 l_bflow_applied_to_amt       := NULL; -- 5132302
210226 l_entered_amt_idx            := NULL;          -- 4262811
210227 l_accted_amt_idx             := NULL;          -- 4262811
210228 l_acc_rev_flag               := NULL;          -- 4262811
210229 l_accrual_line_num           := NULL;          -- 4262811
210230 l_tmp_amt                    := NULL;          -- 4262811
210231 --
210232  
210233 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
210234     l_balance_type_code <> 'B' THEN
210235 IF (NVL(p_source_97,9E125) =  1 AND 
210236 NVL(p_source_15,9E125) =  1) OR 
210237 (NVL(p_source_97,9E125) =  6)
210238  THEN 
210239 
210240    --
210241    XLA_AE_LINES_PKG.SetNewLine;
210242 
210243    p_balance_type_code          := l_balance_type_code;
210244    -- set the flag so later we will know whether the gain loss line needs to be created
210245    
210246    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
210247      p_actual_flag :='A';
210248    END IF;
210249 
210250    --
210251    -- bulk performance
210252    --
210253    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
210254                                       p_header_num   => 0); -- 4262811
210255    --
210256    -- set accounting line options
210257    --
210258    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
210259            p_natural_side_code          => 'C'
210260          , p_gain_or_loss_flag          => 'N'
210261          , p_gl_transfer_mode_code      => 'S'
210262          , p_acct_entry_type_code       => 'A'
210263          , p_switch_side_flag           => 'Y'
210264          , p_merge_duplicate_code       => 'N'
210265          );
210266    --
210267    l_acc_rev_natural_side_code := 'D';  -- 4262811
210268    -- 
210269    --
210270    -- set accounting line type info
210271    --
210272    xla_ae_lines_pkg.SetAcctLineType
210273       (p_component_type             => l_component_type
210274       ,p_event_type_code            => l_event_type_code
210275       ,p_line_definition_owner_code => l_line_definition_owner_code
210276       ,p_line_definition_code       => l_line_definition_code
210277       ,p_accounting_line_code       => l_component_code
210278       ,p_accounting_line_type_code  => l_component_type_code
210279       ,p_accounting_line_appl_id    => l_component_appl_id
210280       ,p_amb_context_code           => l_amb_context_code
210281       ,p_entity_code                => l_entity_code
210282       ,p_event_class_code           => l_event_class_code);
210283    --
210284    -- set accounting class
210285    --
210286    xla_ae_lines_pkg.SetAcctClass(
210287            p_accounting_class_code  => 'BRIDGING'
210288          , p_ae_header_id           => l_ae_header_id
210289          );
210290 
210291    --
210292    -- set rounding class
210293    --
210294    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
210295                       'BRIDGING';
210296 
210297    --
210298    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
210299    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
210300    --
210301    -- bulk performance
210302    --
210303    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
210304 
210305    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
210306       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
210307 
210308    -- 4955764
210309    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
210310       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
210311 
210312    -- 4458381 Public Sector Enh
210313    
210314    --
210315    -- set accounting attributes for the line type
210316    --
210317    l_entered_amt_idx := 3;
210318    l_accted_amt_idx  := 8;
210319    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
210320    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
210321    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
210322    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
210323    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
210324    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
210325    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
210326    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
210327    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
210328    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
210329    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
210330    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
210331    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
210332    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
210333    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
210334    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
210335    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
210336 
210337    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
210338    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
210339 
210340    ---------------------------------------------------------------------------------------------------------------
210341    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
210342    ---------------------------------------------------------------------------------------------------------------
210343    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
210344 
210345    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
210346    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
210347 
210348    IF xla_accounting_cache_pkg.GetValueChar
210349          (p_source_code         => 'LEDGER_CATEGORY_CODE'
210350          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
210351    AND l_bflow_method_code = 'PRIOR_ENTRY'
210352 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
210353    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
210354          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
210355        )
210356    THEN
210357          xla_ae_lines_pkg.BflowUpgEntry
210358            (p_business_method_code    => l_bflow_method_code
210359            ,p_business_class_code     => l_bflow_class_code
210360            ,p_balance_type            => l_balance_type_code);
210361    ELSE
210362       NULL;
210363 -- No business flow processing for business flow method of NONE.
210364    END IF;
210365 
210366    --
210367    -- call analytical criteria
210368    --
210369    
210370    --
210371    -- call description
210372    --
210373    
210374 xla_ae_lines_pkg.SetLineDescription(
210375    p_ae_header_id => l_ae_header_id
210376   ,p_description  => Description_1 (
210377      p_application_id         => p_application_id
210378    , p_ae_header_id           => l_ae_header_id 
210379 , p_source_1 => p_source_1
210380 , p_source_2 => p_source_2
210381 , p_source_3 => p_source_3
210382 , p_source_4 => p_source_4
210383 , p_source_5 => p_source_5
210384    )
210385 );
210386 
210387 
210388    --
210389    -- call ADRs
210390    -- Bug 4922099
210391    --
210392    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
210393         (NVL(l_actual_upg_option, 'N') = 'O') OR
210394         (NVL(l_enc_upg_option, 'N') = 'O')
210395       )
210396    THEN
210397    NULL;
210398    --
210399    --
210400    
210401   l_ccid := AcctDerRule_11(
210402            p_application_id           => p_application_id
210403          , p_ae_header_id             => l_ae_header_id 
210404 , p_source_22 => p_source_22
210405          , x_transaction_coa_id       => l_adr_transaction_coa_id
210406          , x_accounting_coa_id        => l_adr_accounting_coa_id
210407          , x_value_type_code          => l_adr_value_type_code
210408          , p_side                     => 'NA'
210409    );
210410 
210411    xla_ae_lines_pkg.set_ccid(
210412     p_code_combination_id          => l_ccid
210413   , p_value_type_code              => l_adr_value_type_code
210414   , p_transaction_coa_id           => l_adr_transaction_coa_id
210415   , p_accounting_coa_id            => l_adr_accounting_coa_id
210416   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
210417   , p_adr_type_code                => 'S'
210418   , p_component_type               => l_component_type
210419   , p_component_code               => l_component_code
210420   , p_component_type_code          => l_component_type_code
210421   , p_component_appl_id            => l_component_appl_id
210422   , p_amb_context_code             => l_amb_context_code
210423   , p_side                         => 'NA'
210424   );
210425 
210426 
210427    --
210428    --
210429    END IF;
210430    --
210431    -- Bug 4922099
210432    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
210433           (NVL(l_enc_upg_option, 'N') = 'O')
210434         ) AND
210435         (l_bflow_method_code = 'PRIOR_ENTRY')
210436       )
210437    THEN
210438       IF
210439       --
210440       1 = 2
210441       --
210442       THEN
210443       xla_accounting_err_pkg.build_message
210444                                     (p_appli_s_name            => 'XLA'
210445                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
210446                                     ,p_token_1                 => 'LINE_NUMBER'
210447                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
210448                                     ,p_token_2                 => 'LINE_TYPE_NAME'
210449                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
210450                                                                              l_component_type
210451                                                                             ,l_component_code
210452                                                                             ,l_component_type_code
210453                                                                             ,l_component_appl_id
210454                                                                             ,l_amb_context_code
210455                                                                             ,l_entity_code
210456                                                                             ,l_event_class_code
210457                                                                            )
210458                                     ,p_token_3                 => 'OWNER'
210459                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
210460                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
210461                                                                           ,p_lookup_code    => l_component_type_code
210462                                                                          )
210463                                     ,p_token_4                 => 'PRODUCT_NAME'
210464                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
210465                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
210466                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
210467                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
210468                                     ,p_ae_header_id            =>  NULL
210469                                        );
210470 
210471         IF (C_LEVEL_ERROR>= g_log_level) THEN
210472                  trace
210473                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
210474                       ,p_level    => C_LEVEL_ERROR
210475                       ,p_module   => l_log_module);
210476         END IF;
210477       END IF;
210478    END IF;
210479    --
210480    --
210481    ------------------------------------------------------------------------------------------------
210482    -- 4219869 Business Flow
210483    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
210484    -- Prior Entry.  Currently, the following code is always generated.
210485    ------------------------------------------------------------------------------------------------
210486    XLA_AE_LINES_PKG.ValidateCurrentLine;
210487 
210488    ------------------------------------------------------------------------------------
210489    -- 4219869 Business Flow
210490    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
210491    ------------------------------------------------------------------------------------
210492    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
210493 
210494    ----------------------------------------------------------------------------------
210495    -- 4219869 Business Flow
210496    -- Update journal entry status -- Need to generate this within IF <condition>
210497    ----------------------------------------------------------------------------------
210498    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
210499          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
210500          ,p_balance_type_code => l_balance_type_code
210501          );
210502 
210503    -------------------------------------------------------------------------------------------
210504    -- 4262811 - Generate the Accrual Reversal lines
210505    -------------------------------------------------------------------------------------------
210506    BEGIN
210507       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
210508                               (g_array_event(p_event_id).array_value_num('header_index'));
210509       IF l_acc_rev_flag IS NULL THEN
210510          l_acc_rev_flag := 'N';
210511       END IF;
210512    EXCEPTION
210513       WHEN OTHERS THEN
210514          l_acc_rev_flag := 'N';
210515    END;
210516    --
210517    IF (l_acc_rev_flag = 'Y') THEN
210518 
210519        -- 4645092  ------------------------------------------------------------------------------
210520        -- To allow MPA report to determine if it should generate report process
210521        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
210522        ------------------------------------------------------------------------------------------
210523 
210524        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
210525        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
210526    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
210527    -- call ADRs
210528    -- Bug 4922099
210529    --
210530    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
210531         (NVL(l_actual_upg_option, 'N') = 'O') OR
210532         (NVL(l_enc_upg_option, 'N') = 'O')
210533       )
210534    THEN
210535    NULL;
210536    --
210537    --
210538    
210539   l_ccid := AcctDerRule_11(
210540            p_application_id           => p_application_id
210541          , p_ae_header_id             => l_ae_header_id 
210542 , p_source_22 => p_source_22
210543          , x_transaction_coa_id       => l_adr_transaction_coa_id
210544          , x_accounting_coa_id        => l_adr_accounting_coa_id
210545          , x_value_type_code          => l_adr_value_type_code
210546          , p_side                     => 'NA'
210547    );
210548 
210549    xla_ae_lines_pkg.set_ccid(
210550     p_code_combination_id          => l_ccid
210551   , p_value_type_code              => l_adr_value_type_code
210552   , p_transaction_coa_id           => l_adr_transaction_coa_id
210553   , p_accounting_coa_id            => l_adr_accounting_coa_id
210554   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
210555   , p_adr_type_code                => 'S'
210556   , p_component_type               => l_component_type
210557   , p_component_code               => l_component_code
210558   , p_component_type_code          => l_component_type_code
210559   , p_component_appl_id            => l_component_appl_id
210560   , p_amb_context_code             => l_amb_context_code
210561   , p_side                         => 'NA'
210562   );
210563 
210564 
210565    --
210566    --
210567    END IF;
210568 
210569        --
210570        -- Update the line information that should be overwritten
210571        --
210572        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
210573                                          p_header_num   => 1);
210574        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
210575 
210576        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
210577 
210578        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
210579           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
210580        END IF;
210581 
210582       --
210583       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
210584       --
210585       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
210586           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
210587       ELSE
210588           ---------------------------------------------------------------------------------------------------
210589           -- 4262811a Switch Sign
210590           ---------------------------------------------------------------------------------------------------
210591           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
210592           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
210593                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
210594           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
210595                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
210596           -- 5132302
210597           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
210598                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
210599 
210600       END IF;
210601 
210602       -- 4955764
210603       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
210604       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
210605 
210606 
210607       XLA_AE_LINES_PKG.ValidateCurrentLine;
210608       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
210609 
210610       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
210611                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
210612                ,p_balance_type_code => l_balance_type_code);
210613 
210614    END IF;
210615 
210616    -----------------------------------------------------------------------------------------
210617    -- 4262811 Multiperiod Accounting
210618    -----------------------------------------------------------------------------------------
210619      -- No MPA option is assigned.
210620 
210621 
210622 END IF;
210623 END IF;
210624 --
210625 
210626 --
210627 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
210628    trace
210629       (p_msg      => 'END of AcctLineType_383'
210630       ,p_level    => C_LEVEL_PROCEDURE
210631       ,p_module   => l_log_module);
210632 END IF;
210633 --
210634 EXCEPTION
210635   WHEN xla_exceptions_pkg.application_exception THEN
210636       RAISE;
210637   WHEN OTHERS THEN
210638        xla_exceptions_pkg.raise_message
210639            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_383');
210640 END AcctLineType_383;
210641 --
210642 
210643 ---------------------------------------
210644 --
210645 -- PRIVATE FUNCTION
210646 --         AcctLineType_384
210647 --
210648 ---------------------------------------
210649 PROCEDURE AcctLineType_384 (
210650   p_application_id        IN NUMBER
210651  ,p_event_id              IN NUMBER
210652  ,p_calculate_acctd_flag  IN VARCHAR2
210653  ,p_calculate_g_l_flag    IN VARCHAR2
210654  ,p_actual_flag           IN OUT VARCHAR2
210655  ,p_balance_type_code     OUT VARCHAR2
210656  ,p_gain_or_loss_ref      OUT VARCHAR2
210657  
210658 --TRANSACTION_ID
210659  , p_source_1            IN NUMBER
210660 --Item Concatenated Segments
210661  , p_source_2            IN VARCHAR2
210662 --Transaction Quantity
210663  , p_source_3            IN NUMBER
210664 --Transaction Unit of Measure Code
210665  , p_source_4            IN VARCHAR2
210666 --Inventory Transaction Type Description
210667  , p_source_5            IN VARCHAR2
210668 --Product Line Accounting Category Bridging Account
210669  , p_source_22            IN NUMBER
210670 --DISTRIBUTION_IDENTIFIER
210671  , p_source_84            IN NUMBER
210672 --Distribution Type
210673  , p_source_85            IN VARCHAR2
210674  , p_source_85_meaning    IN VARCHAR2
210675 --Entered Currency Code
210676  , p_source_88            IN VARCHAR2
210677 --Entered Amount
210678  , p_source_91            IN NUMBER
210679 --Currency Conversion Date
210680  , p_source_92            IN DATE
210681 --Currency Conversion Rate
210682  , p_source_93            IN NUMBER
210683 --Currency Conversion Type
210684  , p_source_94            IN VARCHAR2
210685 --Accounted Amount
210686  , p_source_95            IN NUMBER
210687 --Accounting Line Type
210688  , p_source_97            IN NUMBER
210689 --Subinventory Type Indicator
210690  , p_source_110            IN VARCHAR2
210691  , p_source_110_meaning    IN VARCHAR2
210692 )
210693 IS
210694 
210695 l_component_type              VARCHAR2(80);
210696 l_component_code              VARCHAR2(30);
210697 l_component_type_code         VARCHAR2(1);
210698 l_component_appl_id           INTEGER;
210699 l_amb_context_code            VARCHAR2(30);
210700 l_entity_code                 VARCHAR2(30);
210701 l_event_class_code            VARCHAR2(30);
210702 l_ae_header_id                NUMBER;
210703 l_event_type_code             VARCHAR2(30);
210704 l_line_definition_code        VARCHAR2(30);
210705 l_line_definition_owner_code  VARCHAR2(1);
210706 --
210707 -- adr variables
210708 l_segment                     VARCHAR2(30);
210709 l_ccid                        NUMBER;
210710 l_adr_transaction_coa_id      NUMBER;
210711 l_adr_accounting_coa_id       NUMBER;
210712 l_adr_flexfield_segment_code  VARCHAR2(30);
210713 l_adr_flex_value_set_id       NUMBER;
210714 l_adr_value_type_code         VARCHAR2(30);
210715 l_adr_value_combination_id    NUMBER;
210716 l_adr_value_segment_code      VARCHAR2(30);
210717 
210718 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
210719 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
210720 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
210721 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
210722 
210723 -- 4262811 Variables ------------------------------------------------------------------------------------------
210724 l_entered_amt_idx             NUMBER;
210725 l_accted_amt_idx              NUMBER;
210726 l_acc_rev_flag                VARCHAR2(1);
210727 l_accrual_line_num            NUMBER;
210728 l_tmp_amt                     NUMBER;
210729 l_acc_rev_natural_side_code   VARCHAR2(1);
210730 
210731 l_num_entries                 NUMBER;
210732 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
210733 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
210734 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
210735 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
210736 l_recog_line_1                NUMBER;
210737 l_recog_line_2                NUMBER;
210738 
210739 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
210740 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
210741 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
210742 
210743 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
210744 
210745 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
210746 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
210747 
210748 ---------------------------------------------------------------------------------------------------------------
210749 
210750 
210751 --
210752 -- bulk performance
210753 --
210754 l_balance_type_code           VARCHAR2(1);
210755 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
210756 l_log_module                  VARCHAR2(240);
210757 
210758 --
210759 -- Upgrade strategy
210760 --
210761 l_actual_upg_option           VARCHAR2(1);
210762 l_enc_upg_option           VARCHAR2(1);
210763 
210764 --
210765 BEGIN
210766 --
210767 IF g_log_enabled THEN
210768       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_384';
210769 END IF;
210770 --
210771 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
210772 
210773       trace
210774          (p_msg      => 'BEGIN of AcctLineType_384'
210775          ,p_level    => C_LEVEL_PROCEDURE
210776          ,p_module   => l_log_module);
210777 
210778 END IF;
210779 --
210780 l_component_type             := 'AMB_JLT';
210781 l_component_code             := 'PI_BRIDGING';
210782 l_component_type_code        := 'S';
210783 l_component_appl_id          :=  707;
210784 l_amb_context_code           := 'DEFAULT';
210785 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
210786 l_event_class_code           := 'WIP_MTL';
210787 l_event_type_code            := 'WIP_COMP_ISSUE';
210788 l_line_definition_owner_code := 'S';
210789 l_line_definition_code       := 'PI_WIP_COMP_ISSUE';
210790 --
210791 l_balance_type_code          := 'A';
210792 l_segment                     := NULL;
210793 l_ccid                        := NULL;
210794 l_adr_transaction_coa_id      := NULL;
210795 l_adr_accounting_coa_id       := NULL;
210796 l_adr_flexfield_segment_code  := NULL;
210797 l_adr_flex_value_set_id       := NULL;
210798 l_adr_value_type_code         := NULL;
210799 l_adr_value_combination_id    := NULL;
210800 l_adr_value_segment_code      := NULL;
210801 
210802 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
210803 l_bflow_class_code           := '';    -- 4219869 Business Flow
210804 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
210805 l_budgetary_control_flag     := 'N';
210806 
210807 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
210808 l_bflow_applied_to_amt       := NULL; -- 5132302
210809 l_entered_amt_idx            := NULL;          -- 4262811
210810 l_accted_amt_idx             := NULL;          -- 4262811
210811 l_acc_rev_flag               := NULL;          -- 4262811
210812 l_accrual_line_num           := NULL;          -- 4262811
210813 l_tmp_amt                    := NULL;          -- 4262811
210814 --
210815  
210816 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
210817     l_balance_type_code <> 'B' THEN
210818 IF (NVL(p_source_97,9E125) =  1 OR 
210819 NVL(p_source_97,9E125) =  2 OR 
210820 NVL(p_source_97,9E125) =  3) AND 
210821 NVL(p_source_110,'
210822 ') =  'Y'
210823  THEN 
210824 
210825    --
210826    XLA_AE_LINES_PKG.SetNewLine;
210827 
210828    p_balance_type_code          := l_balance_type_code;
210829    -- set the flag so later we will know whether the gain loss line needs to be created
210830    
210831    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
210832      p_actual_flag :='A';
210833    END IF;
210834 
210835    --
210836    -- bulk performance
210837    --
210838    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
210839                                       p_header_num   => 0); -- 4262811
210840    --
210841    -- set accounting line options
210842    --
210843    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
210844            p_natural_side_code          => 'C'
210845          , p_gain_or_loss_flag          => 'N'
210846          , p_gl_transfer_mode_code      => 'S'
210847          , p_acct_entry_type_code       => 'A'
210848          , p_switch_side_flag           => 'Y'
210849          , p_merge_duplicate_code       => 'N'
210850          );
210851    --
210852    l_acc_rev_natural_side_code := 'D';  -- 4262811
210853    -- 
210854    --
210855    -- set accounting line type info
210856    --
210857    xla_ae_lines_pkg.SetAcctLineType
210858       (p_component_type             => l_component_type
210859       ,p_event_type_code            => l_event_type_code
210860       ,p_line_definition_owner_code => l_line_definition_owner_code
210861       ,p_line_definition_code       => l_line_definition_code
210862       ,p_accounting_line_code       => l_component_code
210863       ,p_accounting_line_type_code  => l_component_type_code
210864       ,p_accounting_line_appl_id    => l_component_appl_id
210865       ,p_amb_context_code           => l_amb_context_code
210866       ,p_entity_code                => l_entity_code
210867       ,p_event_class_code           => l_event_class_code);
210868    --
210869    -- set accounting class
210870    --
210871    xla_ae_lines_pkg.SetAcctClass(
210872            p_accounting_class_code  => 'BRIDGING'
210873          , p_ae_header_id           => l_ae_header_id
210874          );
210875 
210876    --
210877    -- set rounding class
210878    --
210879    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
210880                       'BRIDGING';
210881 
210882    --
210883    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
210884    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
210885    --
210886    -- bulk performance
210887    --
210888    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
210889 
210890    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
210891       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
210892 
210893    -- 4955764
210894    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
210895       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
210896 
210897    -- 4458381 Public Sector Enh
210898    
210899    --
210900    -- set accounting attributes for the line type
210901    --
210902    l_entered_amt_idx := 3;
210903    l_accted_amt_idx  := 8;
210904    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
210905    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
210906    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
210907    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
210908    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
210909    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
210910    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
210911    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
210912    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
210913    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
210914    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
210915    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
210916    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
210917    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
210918    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
210919    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
210920    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
210921 
210922    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
210923    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
210924 
210925    ---------------------------------------------------------------------------------------------------------------
210926    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
210927    ---------------------------------------------------------------------------------------------------------------
210928    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
210929 
210930    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
210931    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
210932 
210933    IF xla_accounting_cache_pkg.GetValueChar
210934          (p_source_code         => 'LEDGER_CATEGORY_CODE'
210935          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
210936    AND l_bflow_method_code = 'PRIOR_ENTRY'
210937 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
210938    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
210939          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
210940        )
210941    THEN
210942          xla_ae_lines_pkg.BflowUpgEntry
210943            (p_business_method_code    => l_bflow_method_code
210944            ,p_business_class_code     => l_bflow_class_code
210945            ,p_balance_type            => l_balance_type_code);
210946    ELSE
210947       NULL;
210948 -- No business flow processing for business flow method of NONE.
210949    END IF;
210950 
210951    --
210952    -- call analytical criteria
210953    --
210954    
210955    --
210956    -- call description
210957    --
210958    
210959 xla_ae_lines_pkg.SetLineDescription(
210960    p_ae_header_id => l_ae_header_id
210961   ,p_description  => Description_1 (
210962      p_application_id         => p_application_id
210963    , p_ae_header_id           => l_ae_header_id 
210964 , p_source_1 => p_source_1
210965 , p_source_2 => p_source_2
210966 , p_source_3 => p_source_3
210967 , p_source_4 => p_source_4
210968 , p_source_5 => p_source_5
210969    )
210970 );
210971 
210972 
210973    --
210974    -- call ADRs
210975    -- Bug 4922099
210976    --
210977    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
210978         (NVL(l_actual_upg_option, 'N') = 'O') OR
210979         (NVL(l_enc_upg_option, 'N') = 'O')
210980       )
210981    THEN
210982    NULL;
210983    --
210984    --
210985    
210986   l_ccid := AcctDerRule_11(
210987            p_application_id           => p_application_id
210988          , p_ae_header_id             => l_ae_header_id 
210989 , p_source_22 => p_source_22
210990          , x_transaction_coa_id       => l_adr_transaction_coa_id
210991          , x_accounting_coa_id        => l_adr_accounting_coa_id
210992          , x_value_type_code          => l_adr_value_type_code
210993          , p_side                     => 'NA'
210994    );
210995 
210996    xla_ae_lines_pkg.set_ccid(
210997     p_code_combination_id          => l_ccid
210998   , p_value_type_code              => l_adr_value_type_code
210999   , p_transaction_coa_id           => l_adr_transaction_coa_id
211000   , p_accounting_coa_id            => l_adr_accounting_coa_id
211001   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
211002   , p_adr_type_code                => 'S'
211003   , p_component_type               => l_component_type
211004   , p_component_code               => l_component_code
211005   , p_component_type_code          => l_component_type_code
211006   , p_component_appl_id            => l_component_appl_id
211007   , p_amb_context_code             => l_amb_context_code
211008   , p_side                         => 'NA'
211009   );
211010 
211011 
211012    --
211013    --
211014    END IF;
211015    --
211016    -- Bug 4922099
211017    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
211018           (NVL(l_enc_upg_option, 'N') = 'O')
211019         ) AND
211020         (l_bflow_method_code = 'PRIOR_ENTRY')
211021       )
211022    THEN
211023       IF
211024       --
211025       1 = 2
211026       --
211027       THEN
211028       xla_accounting_err_pkg.build_message
211029                                     (p_appli_s_name            => 'XLA'
211030                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
211031                                     ,p_token_1                 => 'LINE_NUMBER'
211032                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
211033                                     ,p_token_2                 => 'LINE_TYPE_NAME'
211034                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
211035                                                                              l_component_type
211036                                                                             ,l_component_code
211037                                                                             ,l_component_type_code
211038                                                                             ,l_component_appl_id
211039                                                                             ,l_amb_context_code
211040                                                                             ,l_entity_code
211041                                                                             ,l_event_class_code
211042                                                                            )
211043                                     ,p_token_3                 => 'OWNER'
211044                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
211045                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
211046                                                                           ,p_lookup_code    => l_component_type_code
211047                                                                          )
211048                                     ,p_token_4                 => 'PRODUCT_NAME'
211049                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
211050                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
211051                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
211052                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
211053                                     ,p_ae_header_id            =>  NULL
211054                                        );
211055 
211056         IF (C_LEVEL_ERROR>= g_log_level) THEN
211057                  trace
211058                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
211059                       ,p_level    => C_LEVEL_ERROR
211060                       ,p_module   => l_log_module);
211061         END IF;
211062       END IF;
211063    END IF;
211064    --
211065    --
211066    ------------------------------------------------------------------------------------------------
211067    -- 4219869 Business Flow
211068    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
211069    -- Prior Entry.  Currently, the following code is always generated.
211070    ------------------------------------------------------------------------------------------------
211071    XLA_AE_LINES_PKG.ValidateCurrentLine;
211072 
211073    ------------------------------------------------------------------------------------
211074    -- 4219869 Business Flow
211075    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
211076    ------------------------------------------------------------------------------------
211077    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
211078 
211079    ----------------------------------------------------------------------------------
211080    -- 4219869 Business Flow
211081    -- Update journal entry status -- Need to generate this within IF <condition>
211082    ----------------------------------------------------------------------------------
211083    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
211084          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
211085          ,p_balance_type_code => l_balance_type_code
211086          );
211087 
211088    -------------------------------------------------------------------------------------------
211089    -- 4262811 - Generate the Accrual Reversal lines
211090    -------------------------------------------------------------------------------------------
211091    BEGIN
211092       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
211093                               (g_array_event(p_event_id).array_value_num('header_index'));
211094       IF l_acc_rev_flag IS NULL THEN
211095          l_acc_rev_flag := 'N';
211096       END IF;
211097    EXCEPTION
211098       WHEN OTHERS THEN
211099          l_acc_rev_flag := 'N';
211100    END;
211101    --
211102    IF (l_acc_rev_flag = 'Y') THEN
211103 
211104        -- 4645092  ------------------------------------------------------------------------------
211105        -- To allow MPA report to determine if it should generate report process
211106        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
211107        ------------------------------------------------------------------------------------------
211108 
211109        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
211110        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
211111    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
211112    -- call ADRs
211113    -- Bug 4922099
211114    --
211115    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
211116         (NVL(l_actual_upg_option, 'N') = 'O') OR
211117         (NVL(l_enc_upg_option, 'N') = 'O')
211118       )
211119    THEN
211120    NULL;
211121    --
211122    --
211123    
211124   l_ccid := AcctDerRule_11(
211125            p_application_id           => p_application_id
211126          , p_ae_header_id             => l_ae_header_id 
211127 , p_source_22 => p_source_22
211128          , x_transaction_coa_id       => l_adr_transaction_coa_id
211129          , x_accounting_coa_id        => l_adr_accounting_coa_id
211130          , x_value_type_code          => l_adr_value_type_code
211131          , p_side                     => 'NA'
211132    );
211133 
211134    xla_ae_lines_pkg.set_ccid(
211135     p_code_combination_id          => l_ccid
211136   , p_value_type_code              => l_adr_value_type_code
211137   , p_transaction_coa_id           => l_adr_transaction_coa_id
211138   , p_accounting_coa_id            => l_adr_accounting_coa_id
211139   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
211140   , p_adr_type_code                => 'S'
211141   , p_component_type               => l_component_type
211142   , p_component_code               => l_component_code
211143   , p_component_type_code          => l_component_type_code
211144   , p_component_appl_id            => l_component_appl_id
211145   , p_amb_context_code             => l_amb_context_code
211146   , p_side                         => 'NA'
211147   );
211148 
211149 
211150    --
211151    --
211152    END IF;
211153 
211154        --
211155        -- Update the line information that should be overwritten
211156        --
211157        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
211158                                          p_header_num   => 1);
211159        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
211160 
211161        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
211162 
211163        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
211164           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
211165        END IF;
211166 
211167       --
211168       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
211169       --
211170       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
211171           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
211172       ELSE
211173           ---------------------------------------------------------------------------------------------------
211174           -- 4262811a Switch Sign
211175           ---------------------------------------------------------------------------------------------------
211176           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
211177           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
211178                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
211179           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
211180                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
211181           -- 5132302
211182           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
211183                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
211184 
211185       END IF;
211186 
211187       -- 4955764
211188       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
211189       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
211190 
211191 
211192       XLA_AE_LINES_PKG.ValidateCurrentLine;
211193       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
211194 
211195       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
211196                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
211197                ,p_balance_type_code => l_balance_type_code);
211198 
211199    END IF;
211200 
211201    -----------------------------------------------------------------------------------------
211202    -- 4262811 Multiperiod Accounting
211203    -----------------------------------------------------------------------------------------
211204      -- No MPA option is assigned.
211205 
211206 
211207 END IF;
211208 END IF;
211209 --
211210 
211211 --
211212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
211213    trace
211214       (p_msg      => 'END of AcctLineType_384'
211215       ,p_level    => C_LEVEL_PROCEDURE
211216       ,p_module   => l_log_module);
211217 END IF;
211218 --
211219 EXCEPTION
211220   WHEN xla_exceptions_pkg.application_exception THEN
211221       RAISE;
211222   WHEN OTHERS THEN
211223        xla_exceptions_pkg.raise_message
211224            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_384');
211225 END AcctLineType_384;
211226 --
211227 
211228 ---------------------------------------
211229 --
211230 -- PRIVATE FUNCTION
211231 --         AcctLineType_385
211232 --
211233 ---------------------------------------
211234 PROCEDURE AcctLineType_385 (
211235   p_application_id        IN NUMBER
211236  ,p_event_id              IN NUMBER
211237  ,p_calculate_acctd_flag  IN VARCHAR2
211238  ,p_calculate_g_l_flag    IN VARCHAR2
211239  ,p_actual_flag           IN OUT VARCHAR2
211240  ,p_balance_type_code     OUT VARCHAR2
211241  ,p_gain_or_loss_ref      OUT VARCHAR2
211242  
211243 --TRANSACTION_ID
211244  , p_source_1            IN NUMBER
211245 --Item Concatenated Segments
211246  , p_source_2            IN VARCHAR2
211247 --Transaction Quantity
211248  , p_source_3            IN NUMBER
211249 --Transaction Unit of Measure Code
211250  , p_source_4            IN VARCHAR2
211251 --Inventory Transaction Type Description
211252  , p_source_5            IN VARCHAR2
211253 --Product Line Accounting Category Bridging Account
211254  , p_source_22            IN NUMBER
211255 --DISTRIBUTION_IDENTIFIER
211256  , p_source_84            IN NUMBER
211257 --Distribution Type
211258  , p_source_85            IN VARCHAR2
211259  , p_source_85_meaning    IN VARCHAR2
211260 --Entered Currency Code
211261  , p_source_88            IN VARCHAR2
211262 --Entered Amount
211263  , p_source_91            IN NUMBER
211264 --Currency Conversion Date
211265  , p_source_92            IN DATE
211266 --Currency Conversion Rate
211267  , p_source_93            IN NUMBER
211268 --Currency Conversion Type
211269  , p_source_94            IN VARCHAR2
211270 --Accounted Amount
211271  , p_source_95            IN NUMBER
211272 --Accounting Line Type
211273  , p_source_97            IN NUMBER
211274 --Organization Identifier
211275  , p_source_111            IN NUMBER
211276 --Transfer Organization Name
211277  , p_source_112            IN NUMBER
211278 )
211279 IS
211280 
211281 l_component_type              VARCHAR2(80);
211282 l_component_code              VARCHAR2(30);
211283 l_component_type_code         VARCHAR2(1);
211284 l_component_appl_id           INTEGER;
211285 l_amb_context_code            VARCHAR2(30);
211286 l_entity_code                 VARCHAR2(30);
211287 l_event_class_code            VARCHAR2(30);
211288 l_ae_header_id                NUMBER;
211289 l_event_type_code             VARCHAR2(30);
211290 l_line_definition_code        VARCHAR2(30);
211291 l_line_definition_owner_code  VARCHAR2(1);
211292 --
211293 -- adr variables
211294 l_segment                     VARCHAR2(30);
211295 l_ccid                        NUMBER;
211296 l_adr_transaction_coa_id      NUMBER;
211297 l_adr_accounting_coa_id       NUMBER;
211298 l_adr_flexfield_segment_code  VARCHAR2(30);
211299 l_adr_flex_value_set_id       NUMBER;
211300 l_adr_value_type_code         VARCHAR2(30);
211301 l_adr_value_combination_id    NUMBER;
211302 l_adr_value_segment_code      VARCHAR2(30);
211303 
211304 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
211305 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
211306 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
211307 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
211308 
211309 -- 4262811 Variables ------------------------------------------------------------------------------------------
211310 l_entered_amt_idx             NUMBER;
211311 l_accted_amt_idx              NUMBER;
211312 l_acc_rev_flag                VARCHAR2(1);
211313 l_accrual_line_num            NUMBER;
211314 l_tmp_amt                     NUMBER;
211315 l_acc_rev_natural_side_code   VARCHAR2(1);
211316 
211317 l_num_entries                 NUMBER;
211318 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
211319 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
211320 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
211321 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
211322 l_recog_line_1                NUMBER;
211323 l_recog_line_2                NUMBER;
211324 
211325 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
211326 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
211327 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
211328 
211329 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
211330 
211331 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
211332 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
211333 
211334 ---------------------------------------------------------------------------------------------------------------
211335 
211336 
211337 --
211338 -- bulk performance
211339 --
211340 l_balance_type_code           VARCHAR2(1);
211341 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
211342 l_log_module                  VARCHAR2(240);
211343 
211344 --
211345 -- Upgrade strategy
211346 --
211347 l_actual_upg_option           VARCHAR2(1);
211348 l_enc_upg_option           VARCHAR2(1);
211349 
211350 --
211351 BEGIN
211352 --
211353 IF g_log_enabled THEN
211354       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_385';
211355 END IF;
211356 --
211357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
211358 
211359       trace
211360          (p_msg      => 'BEGIN of AcctLineType_385'
211361          ,p_level    => C_LEVEL_PROCEDURE
211362          ,p_module   => l_log_module);
211363 
211364 END IF;
211365 --
211366 l_component_type             := 'AMB_JLT';
211367 l_component_code             := 'PI_BRIDGING';
211368 l_component_type_code        := 'S';
211369 l_component_appl_id          :=  707;
211370 l_amb_context_code           := 'DEFAULT';
211371 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
211372 l_event_class_code           := 'INT_ORDER_TO_EXP';
211373 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
211374 l_line_definition_owner_code := 'S';
211375 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_NO_TP';
211376 --
211377 l_balance_type_code          := 'A';
211378 l_segment                     := NULL;
211379 l_ccid                        := NULL;
211380 l_adr_transaction_coa_id      := NULL;
211381 l_adr_accounting_coa_id       := NULL;
211382 l_adr_flexfield_segment_code  := NULL;
211383 l_adr_flex_value_set_id       := NULL;
211384 l_adr_value_type_code         := NULL;
211385 l_adr_value_combination_id    := NULL;
211386 l_adr_value_segment_code      := NULL;
211387 
211388 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
211389 l_bflow_class_code           := '';    -- 4219869 Business Flow
211390 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
211391 l_budgetary_control_flag     := 'N';
211392 
211393 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
211394 l_bflow_applied_to_amt       := NULL; -- 5132302
211395 l_entered_amt_idx            := NULL;          -- 4262811
211396 l_accted_amt_idx             := NULL;          -- 4262811
211397 l_acc_rev_flag               := NULL;          -- 4262811
211398 l_accrual_line_num           := NULL;          -- 4262811
211399 l_tmp_amt                    := NULL;          -- 4262811
211400 --
211401  
211402 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
211403     l_balance_type_code <> 'B' THEN
211404 IF NVL(p_source_97,9E125) =  1 AND 
211405 p_source_111 IS NOT NULL AND 
211406 p_source_112 IS NOT NULL AND 
211407 NVL(p_source_111,9E125) <> NVL(p_source_112,9E125) 
211408  THEN 
211409 
211410    --
211411    XLA_AE_LINES_PKG.SetNewLine;
211412 
211413    p_balance_type_code          := l_balance_type_code;
211414    -- set the flag so later we will know whether the gain loss line needs to be created
211415    
211416    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
211417      p_actual_flag :='A';
211418    END IF;
211419 
211420    --
211421    -- bulk performance
211422    --
211423    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
211424                                       p_header_num   => 0); -- 4262811
211425    --
211426    -- set accounting line options
211427    --
211428    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
211429            p_natural_side_code          => 'C'
211430          , p_gain_or_loss_flag          => 'N'
211431          , p_gl_transfer_mode_code      => 'S'
211432          , p_acct_entry_type_code       => 'A'
211433          , p_switch_side_flag           => 'Y'
211434          , p_merge_duplicate_code       => 'N'
211435          );
211436    --
211437    l_acc_rev_natural_side_code := 'D';  -- 4262811
211438    -- 
211439    --
211440    -- set accounting line type info
211441    --
211442    xla_ae_lines_pkg.SetAcctLineType
211443       (p_component_type             => l_component_type
211444       ,p_event_type_code            => l_event_type_code
211445       ,p_line_definition_owner_code => l_line_definition_owner_code
211446       ,p_line_definition_code       => l_line_definition_code
211447       ,p_accounting_line_code       => l_component_code
211448       ,p_accounting_line_type_code  => l_component_type_code
211449       ,p_accounting_line_appl_id    => l_component_appl_id
211450       ,p_amb_context_code           => l_amb_context_code
211451       ,p_entity_code                => l_entity_code
211452       ,p_event_class_code           => l_event_class_code);
211453    --
211454    -- set accounting class
211455    --
211456    xla_ae_lines_pkg.SetAcctClass(
211457            p_accounting_class_code  => 'BRIDGING'
211458          , p_ae_header_id           => l_ae_header_id
211459          );
211460 
211461    --
211462    -- set rounding class
211463    --
211464    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
211465                       'BRIDGING';
211466 
211467    --
211468    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
211469    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
211470    --
211471    -- bulk performance
211472    --
211473    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
211474 
211475    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
211476       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
211477 
211478    -- 4955764
211479    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
211480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
211481 
211482    -- 4458381 Public Sector Enh
211483    
211484    --
211485    -- set accounting attributes for the line type
211486    --
211487    l_entered_amt_idx := 3;
211488    l_accted_amt_idx  := 8;
211489    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
211490    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
211491    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
211492    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
211493    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
211494    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
211495    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
211496    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
211497    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
211498    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
211499    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
211500    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
211501    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
211502    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
211503    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
211504    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
211505    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
211506 
211507    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
211508    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
211509 
211510    ---------------------------------------------------------------------------------------------------------------
211511    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
211512    ---------------------------------------------------------------------------------------------------------------
211513    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
211514 
211515    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
211516    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
211517 
211518    IF xla_accounting_cache_pkg.GetValueChar
211519          (p_source_code         => 'LEDGER_CATEGORY_CODE'
211520          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
211521    AND l_bflow_method_code = 'PRIOR_ENTRY'
211522 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
211523    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
211524          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
211525        )
211526    THEN
211527          xla_ae_lines_pkg.BflowUpgEntry
211528            (p_business_method_code    => l_bflow_method_code
211529            ,p_business_class_code     => l_bflow_class_code
211530            ,p_balance_type            => l_balance_type_code);
211531    ELSE
211532       NULL;
211533 -- No business flow processing for business flow method of NONE.
211534    END IF;
211535 
211536    --
211537    -- call analytical criteria
211538    --
211539    
211540    --
211541    -- call description
211542    --
211543    
211544 xla_ae_lines_pkg.SetLineDescription(
211545    p_ae_header_id => l_ae_header_id
211546   ,p_description  => Description_1 (
211547      p_application_id         => p_application_id
211548    , p_ae_header_id           => l_ae_header_id 
211549 , p_source_1 => p_source_1
211550 , p_source_2 => p_source_2
211551 , p_source_3 => p_source_3
211552 , p_source_4 => p_source_4
211553 , p_source_5 => p_source_5
211554    )
211555 );
211556 
211557 
211558    --
211559    -- call ADRs
211560    -- Bug 4922099
211561    --
211562    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
211563         (NVL(l_actual_upg_option, 'N') = 'O') OR
211564         (NVL(l_enc_upg_option, 'N') = 'O')
211565       )
211566    THEN
211567    NULL;
211568    --
211569    --
211570    
211571   l_ccid := AcctDerRule_11(
211572            p_application_id           => p_application_id
211573          , p_ae_header_id             => l_ae_header_id 
211574 , p_source_22 => p_source_22
211575          , x_transaction_coa_id       => l_adr_transaction_coa_id
211576          , x_accounting_coa_id        => l_adr_accounting_coa_id
211577          , x_value_type_code          => l_adr_value_type_code
211578          , p_side                     => 'NA'
211579    );
211580 
211581    xla_ae_lines_pkg.set_ccid(
211582     p_code_combination_id          => l_ccid
211583   , p_value_type_code              => l_adr_value_type_code
211584   , p_transaction_coa_id           => l_adr_transaction_coa_id
211585   , p_accounting_coa_id            => l_adr_accounting_coa_id
211586   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
211587   , p_adr_type_code                => 'S'
211588   , p_component_type               => l_component_type
211589   , p_component_code               => l_component_code
211590   , p_component_type_code          => l_component_type_code
211591   , p_component_appl_id            => l_component_appl_id
211592   , p_amb_context_code             => l_amb_context_code
211593   , p_side                         => 'NA'
211594   );
211595 
211596 
211597    --
211598    --
211599    END IF;
211600    --
211601    -- Bug 4922099
211602    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
211603           (NVL(l_enc_upg_option, 'N') = 'O')
211604         ) AND
211605         (l_bflow_method_code = 'PRIOR_ENTRY')
211606       )
211607    THEN
211608       IF
211609       --
211610       1 = 2
211611       --
211612       THEN
211613       xla_accounting_err_pkg.build_message
211614                                     (p_appli_s_name            => 'XLA'
211615                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
211616                                     ,p_token_1                 => 'LINE_NUMBER'
211617                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
211618                                     ,p_token_2                 => 'LINE_TYPE_NAME'
211619                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
211620                                                                              l_component_type
211621                                                                             ,l_component_code
211622                                                                             ,l_component_type_code
211623                                                                             ,l_component_appl_id
211624                                                                             ,l_amb_context_code
211625                                                                             ,l_entity_code
211626                                                                             ,l_event_class_code
211627                                                                            )
211628                                     ,p_token_3                 => 'OWNER'
211629                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
211630                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
211631                                                                           ,p_lookup_code    => l_component_type_code
211632                                                                          )
211633                                     ,p_token_4                 => 'PRODUCT_NAME'
211634                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
211635                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
211636                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
211637                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
211638                                     ,p_ae_header_id            =>  NULL
211639                                        );
211640 
211641         IF (C_LEVEL_ERROR>= g_log_level) THEN
211642                  trace
211643                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
211644                       ,p_level    => C_LEVEL_ERROR
211645                       ,p_module   => l_log_module);
211646         END IF;
211647       END IF;
211648    END IF;
211649    --
211650    --
211651    ------------------------------------------------------------------------------------------------
211652    -- 4219869 Business Flow
211653    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
211654    -- Prior Entry.  Currently, the following code is always generated.
211655    ------------------------------------------------------------------------------------------------
211656    XLA_AE_LINES_PKG.ValidateCurrentLine;
211657 
211658    ------------------------------------------------------------------------------------
211659    -- 4219869 Business Flow
211660    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
211661    ------------------------------------------------------------------------------------
211662    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
211663 
211664    ----------------------------------------------------------------------------------
211665    -- 4219869 Business Flow
211666    -- Update journal entry status -- Need to generate this within IF <condition>
211667    ----------------------------------------------------------------------------------
211668    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
211669          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
211670          ,p_balance_type_code => l_balance_type_code
211671          );
211672 
211673    -------------------------------------------------------------------------------------------
211674    -- 4262811 - Generate the Accrual Reversal lines
211675    -------------------------------------------------------------------------------------------
211676    BEGIN
211677       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
211678                               (g_array_event(p_event_id).array_value_num('header_index'));
211679       IF l_acc_rev_flag IS NULL THEN
211680          l_acc_rev_flag := 'N';
211681       END IF;
211682    EXCEPTION
211683       WHEN OTHERS THEN
211684          l_acc_rev_flag := 'N';
211685    END;
211686    --
211687    IF (l_acc_rev_flag = 'Y') THEN
211688 
211689        -- 4645092  ------------------------------------------------------------------------------
211690        -- To allow MPA report to determine if it should generate report process
211691        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
211692        ------------------------------------------------------------------------------------------
211693 
211694        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
211695        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
211696    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
211697    -- call ADRs
211698    -- Bug 4922099
211699    --
211700    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
211701         (NVL(l_actual_upg_option, 'N') = 'O') OR
211702         (NVL(l_enc_upg_option, 'N') = 'O')
211703       )
211704    THEN
211705    NULL;
211706    --
211707    --
211708    
211709   l_ccid := AcctDerRule_11(
211710            p_application_id           => p_application_id
211711          , p_ae_header_id             => l_ae_header_id 
211712 , p_source_22 => p_source_22
211713          , x_transaction_coa_id       => l_adr_transaction_coa_id
211714          , x_accounting_coa_id        => l_adr_accounting_coa_id
211715          , x_value_type_code          => l_adr_value_type_code
211716          , p_side                     => 'NA'
211717    );
211718 
211719    xla_ae_lines_pkg.set_ccid(
211720     p_code_combination_id          => l_ccid
211721   , p_value_type_code              => l_adr_value_type_code
211722   , p_transaction_coa_id           => l_adr_transaction_coa_id
211723   , p_accounting_coa_id            => l_adr_accounting_coa_id
211724   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
211725   , p_adr_type_code                => 'S'
211726   , p_component_type               => l_component_type
211727   , p_component_code               => l_component_code
211728   , p_component_type_code          => l_component_type_code
211729   , p_component_appl_id            => l_component_appl_id
211730   , p_amb_context_code             => l_amb_context_code
211731   , p_side                         => 'NA'
211732   );
211733 
211734 
211735    --
211736    --
211737    END IF;
211738 
211739        --
211740        -- Update the line information that should be overwritten
211741        --
211742        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
211743                                          p_header_num   => 1);
211744        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
211745 
211746        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
211747 
211748        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
211749           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
211750        END IF;
211751 
211752       --
211753       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
211754       --
211755       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
211756           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
211757       ELSE
211758           ---------------------------------------------------------------------------------------------------
211759           -- 4262811a Switch Sign
211760           ---------------------------------------------------------------------------------------------------
211761           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
211762           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
211763                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
211764           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
211765                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
211766           -- 5132302
211767           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
211768                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
211769 
211770       END IF;
211771 
211772       -- 4955764
211773       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
211774       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
211775 
211776 
211777       XLA_AE_LINES_PKG.ValidateCurrentLine;
211778       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
211779 
211780       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
211781                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
211782                ,p_balance_type_code => l_balance_type_code);
211783 
211784    END IF;
211785 
211786    -----------------------------------------------------------------------------------------
211787    -- 4262811 Multiperiod Accounting
211788    -----------------------------------------------------------------------------------------
211789      -- No MPA option is assigned.
211790 
211791 
211792 END IF;
211793 END IF;
211794 --
211795 
211796 --
211797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
211798    trace
211799       (p_msg      => 'END of AcctLineType_385'
211800       ,p_level    => C_LEVEL_PROCEDURE
211801       ,p_module   => l_log_module);
211802 END IF;
211803 --
211804 EXCEPTION
211805   WHEN xla_exceptions_pkg.application_exception THEN
211806       RAISE;
211807   WHEN OTHERS THEN
211808        xla_exceptions_pkg.raise_message
211809            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_385');
211810 END AcctLineType_385;
211811 --
211812 
211813 ---------------------------------------
211814 --
211815 -- PRIVATE FUNCTION
211816 --         AcctLineType_386
211817 --
211818 ---------------------------------------
211819 PROCEDURE AcctLineType_386 (
211820   p_application_id        IN NUMBER
211821  ,p_event_id              IN NUMBER
211822  ,p_calculate_acctd_flag  IN VARCHAR2
211823  ,p_calculate_g_l_flag    IN VARCHAR2
211824  ,p_actual_flag           IN OUT VARCHAR2
211825  ,p_balance_type_code     OUT VARCHAR2
211826  ,p_gain_or_loss_ref      OUT VARCHAR2
211827  
211828 --TRANSACTION_ID
211829  , p_source_1            IN NUMBER
211830 --Item Concatenated Segments
211831  , p_source_2            IN VARCHAR2
211832 --Transaction Quantity
211833  , p_source_3            IN NUMBER
211834 --Transaction Unit of Measure Code
211835  , p_source_4            IN VARCHAR2
211836 --Inventory Transaction Type Description
211837  , p_source_5            IN VARCHAR2
211838 --Product Line Accounting Category Bridging Account
211839  , p_source_22            IN NUMBER
211840 --Applied to Application ID
211841  , p_source_79            IN NUMBER
211842 --Applied to Distribution Link Type
211843  , p_source_80            IN VARCHAR2
211844 --Applied to Entity Code
211845  , p_source_81            IN VARCHAR2
211846 --Applied To Purchase Document Identifier
211847  , p_source_83            IN NUMBER
211848 --DISTRIBUTION_IDENTIFIER
211849  , p_source_84            IN NUMBER
211850 --Distribution Type
211851  , p_source_85            IN VARCHAR2
211852  , p_source_85_meaning    IN VARCHAR2
211853 --PO Budget Account
211854  , p_source_86            IN NUMBER
211855 --Encumbrance Reversal Amount Entered
211856  , p_source_87            IN NUMBER
211857 --Entered Currency Code
211858  , p_source_88            IN VARCHAR2
211859 --Transaction Encumbrance Reversal Amount
211860  , p_source_89            IN NUMBER
211861 --Entered Amount
211862  , p_source_91            IN NUMBER
211863 --Currency Conversion Date
211864  , p_source_92            IN DATE
211865 --Currency Conversion Rate
211866  , p_source_93            IN NUMBER
211867 --Currency Conversion Type
211868  , p_source_94            IN VARCHAR2
211869 --Accounted Amount
211870  , p_source_95            IN NUMBER
211871 --Purchasing Encumbrance Type Identifier
211872  , p_source_96            IN NUMBER
211873 --Accounting Line Type
211874  , p_source_97            IN NUMBER
211875 --Costing Encumbrance Upgrade Option
211876  , p_source_100            IN VARCHAR2
211877 --TXN_PO_DISTRIBUTION_ID
211878  , p_source_101            IN NUMBER
211879 --Subinventory Type Indicator
211880  , p_source_110            IN VARCHAR2
211881  , p_source_110_meaning    IN VARCHAR2
211882 )
211883 IS
211884 
211885 l_component_type              VARCHAR2(80);
211886 l_component_code              VARCHAR2(30);
211887 l_component_type_code         VARCHAR2(1);
211888 l_component_appl_id           INTEGER;
211889 l_amb_context_code            VARCHAR2(30);
211890 l_entity_code                 VARCHAR2(30);
211891 l_event_class_code            VARCHAR2(30);
211892 l_ae_header_id                NUMBER;
211893 l_event_type_code             VARCHAR2(30);
211894 l_line_definition_code        VARCHAR2(30);
211895 l_line_definition_owner_code  VARCHAR2(1);
211896 --
211897 -- adr variables
211898 l_segment                     VARCHAR2(30);
211899 l_ccid                        NUMBER;
211900 l_adr_transaction_coa_id      NUMBER;
211901 l_adr_accounting_coa_id       NUMBER;
211902 l_adr_flexfield_segment_code  VARCHAR2(30);
211903 l_adr_flex_value_set_id       NUMBER;
211904 l_adr_value_type_code         VARCHAR2(30);
211905 l_adr_value_combination_id    NUMBER;
211906 l_adr_value_segment_code      VARCHAR2(30);
211907 
211908 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
211909 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
211910 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
211911 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
211912 
211913 -- 4262811 Variables ------------------------------------------------------------------------------------------
211914 l_entered_amt_idx             NUMBER;
211915 l_accted_amt_idx              NUMBER;
211916 l_acc_rev_flag                VARCHAR2(1);
211917 l_accrual_line_num            NUMBER;
211918 l_tmp_amt                     NUMBER;
211919 l_acc_rev_natural_side_code   VARCHAR2(1);
211920 
211921 l_num_entries                 NUMBER;
211922 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
211923 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
211924 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
211925 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
211926 l_recog_line_1                NUMBER;
211927 l_recog_line_2                NUMBER;
211928 
211929 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
211930 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
211931 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
211932 
211933 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
211934 
211935 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
211936 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
211937 
211938 ---------------------------------------------------------------------------------------------------------------
211939 
211940 
211941 --
211942 -- bulk performance
211943 --
211944 l_balance_type_code           VARCHAR2(1);
211945 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
211946 l_log_module                  VARCHAR2(240);
211947 
211948 --
211949 -- Upgrade strategy
211950 --
211951 l_actual_upg_option           VARCHAR2(1);
211952 l_enc_upg_option           VARCHAR2(1);
211953 
211954 --
211955 BEGIN
211956 --
211957 IF g_log_enabled THEN
211958       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_386';
211959 END IF;
211960 --
211961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
211962 
211963       trace
211964          (p_msg      => 'BEGIN of AcctLineType_386'
211965          ,p_level    => C_LEVEL_PROCEDURE
211966          ,p_module   => l_log_module);
211967 
211968 END IF;
211969 --
211970 l_component_type             := 'AMB_JLT';
211971 l_component_code             := 'PI_BRIDGING';
211972 l_component_type_code        := 'S';
211973 l_component_appl_id          :=  707;
211974 l_amb_context_code           := 'DEFAULT';
211975 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
211976 l_event_class_code           := 'PURCHASE_ORDER';
211977 l_event_type_code            := 'PO_DEL_ADJ';
211978 l_line_definition_owner_code := 'S';
211979 l_line_definition_code       := 'PI_PO_DEL_ADJ';
211980 --
211981 l_balance_type_code          := 'A';
211982 l_segment                     := NULL;
211983 l_ccid                        := NULL;
211984 l_adr_transaction_coa_id      := NULL;
211985 l_adr_accounting_coa_id       := NULL;
211986 l_adr_flexfield_segment_code  := NULL;
211987 l_adr_flex_value_set_id       := NULL;
211988 l_adr_value_type_code         := NULL;
211989 l_adr_value_combination_id    := NULL;
211990 l_adr_value_segment_code      := NULL;
211991 
211992 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
211993 l_bflow_class_code           := '';    -- 4219869 Business Flow
211994 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
211995 l_budgetary_control_flag     := 'N';
211996 
211997 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
211998 l_bflow_applied_to_amt       := NULL; -- 5132302
211999 l_entered_amt_idx            := NULL;          -- 4262811
212000 l_accted_amt_idx             := NULL;          -- 4262811
212001 l_acc_rev_flag               := NULL;          -- 4262811
212002 l_accrual_line_num           := NULL;          -- 4262811
212003 l_tmp_amt                    := NULL;          -- 4262811
212004 --
212005  
212006 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
212007     l_balance_type_code <> 'B' THEN
212008 IF (NVL(p_source_97,9E125) =  5 AND 
212009 p_source_110 IS NOT NULL AND 
212010 NVL(p_source_110,'
212011 ') =  'Y')
212012  THEN 
212013 
212014    --
212015    XLA_AE_LINES_PKG.SetNewLine;
212016 
212017    p_balance_type_code          := l_balance_type_code;
212018    -- set the flag so later we will know whether the gain loss line needs to be created
212019    
212020    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
212021      p_actual_flag :='A';
212022    END IF;
212023 
212024    --
212025    -- bulk performance
212026    --
212027    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
212028                                       p_header_num   => 0); -- 4262811
212029    --
212030    -- set accounting line options
212031    --
212032    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
212033            p_natural_side_code          => 'D'
212034          , p_gain_or_loss_flag          => 'N'
212035          , p_gl_transfer_mode_code      => 'S'
212036          , p_acct_entry_type_code       => 'A'
212037          , p_switch_side_flag           => 'Y'
212038          , p_merge_duplicate_code       => 'N'
212039          );
212040    --
212041    l_acc_rev_natural_side_code := 'C';  -- 4262811
212042    -- 
212043    --
212044    -- set accounting line type info
212045    --
212046    xla_ae_lines_pkg.SetAcctLineType
212047       (p_component_type             => l_component_type
212048       ,p_event_type_code            => l_event_type_code
212049       ,p_line_definition_owner_code => l_line_definition_owner_code
212050       ,p_line_definition_code       => l_line_definition_code
212051       ,p_accounting_line_code       => l_component_code
212052       ,p_accounting_line_type_code  => l_component_type_code
212053       ,p_accounting_line_appl_id    => l_component_appl_id
212054       ,p_amb_context_code           => l_amb_context_code
212055       ,p_entity_code                => l_entity_code
212056       ,p_event_class_code           => l_event_class_code);
212057    --
212058    -- set accounting class
212059    --
212060    xla_ae_lines_pkg.SetAcctClass(
212061            p_accounting_class_code  => 'BRIDGING'
212062          , p_ae_header_id           => l_ae_header_id
212063          );
212064 
212065    --
212066    -- set rounding class
212067    --
212068    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
212069                       'BRIDGING';
212070 
212071    --
212072    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
212073    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
212074    --
212075    -- bulk performance
212076    --
212077    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
212078 
212079    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
212080       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
212081 
212082    -- 4955764
212083    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
212084       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
212085 
212086    -- 4458381 Public Sector Enh
212087    
212088    --
212089    -- set accounting attributes for the line type
212090    --
212091    l_entered_amt_idx := 17;
212092    l_accted_amt_idx  := 22;
212093    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
212094    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
212095    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
212096    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
212097    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
212098    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
212099    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
212100    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
212101    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
212102    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
212103    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
212104    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
212105    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
212106    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
212107    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
212108    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
212109    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
212110    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
212111    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
212112    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
212113    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
212114    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
212115    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
212116    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
212117    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
212118    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
212119    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
212120    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
212121    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
212122    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
212123    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
212124    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
212125    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
212126    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
212127    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
212128    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
212129    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
212130    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
212131    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
212132    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
212133    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
212134    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
212135    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
212136    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
212137    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
212138    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
212139    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
212140    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
212141    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
212142 
212143    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
212144    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
212145 
212146    ---------------------------------------------------------------------------------------------------------------
212147    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
212148    ---------------------------------------------------------------------------------------------------------------
212149    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
212150 
212151    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
212152    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
212153 
212154    IF xla_accounting_cache_pkg.GetValueChar
212155          (p_source_code         => 'LEDGER_CATEGORY_CODE'
212156          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
212157    AND l_bflow_method_code = 'PRIOR_ENTRY'
212158 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
212159    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
212160          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
212161        )
212162    THEN
212163          xla_ae_lines_pkg.BflowUpgEntry
212164            (p_business_method_code    => l_bflow_method_code
212165            ,p_business_class_code     => l_bflow_class_code
212166            ,p_balance_type            => l_balance_type_code);
212167    ELSE
212168       NULL;
212169 -- No business flow processing for business flow method of NONE.
212170    END IF;
212171 
212172    --
212173    -- call analytical criteria
212174    --
212175    
212176    --
212177    -- call description
212178    --
212179    
212180 xla_ae_lines_pkg.SetLineDescription(
212181    p_ae_header_id => l_ae_header_id
212182   ,p_description  => Description_1 (
212183      p_application_id         => p_application_id
212184    , p_ae_header_id           => l_ae_header_id 
212185 , p_source_1 => p_source_1
212186 , p_source_2 => p_source_2
212187 , p_source_3 => p_source_3
212188 , p_source_4 => p_source_4
212189 , p_source_5 => p_source_5
212190    )
212191 );
212192 
212193 
212194    --
212195    -- call ADRs
212196    -- Bug 4922099
212197    --
212198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
212199         (NVL(l_actual_upg_option, 'N') = 'O') OR
212200         (NVL(l_enc_upg_option, 'N') = 'O')
212201       )
212202    THEN
212203    NULL;
212204    --
212205    --
212206    
212207   l_ccid := AcctDerRule_11(
212208            p_application_id           => p_application_id
212209          , p_ae_header_id             => l_ae_header_id 
212210 , p_source_22 => p_source_22
212211          , x_transaction_coa_id       => l_adr_transaction_coa_id
212212          , x_accounting_coa_id        => l_adr_accounting_coa_id
212213          , x_value_type_code          => l_adr_value_type_code
212214          , p_side                     => 'NA'
212215    );
212216 
212217    xla_ae_lines_pkg.set_ccid(
212218     p_code_combination_id          => l_ccid
212219   , p_value_type_code              => l_adr_value_type_code
212220   , p_transaction_coa_id           => l_adr_transaction_coa_id
212221   , p_accounting_coa_id            => l_adr_accounting_coa_id
212222   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
212223   , p_adr_type_code                => 'S'
212224   , p_component_type               => l_component_type
212225   , p_component_code               => l_component_code
212226   , p_component_type_code          => l_component_type_code
212227   , p_component_appl_id            => l_component_appl_id
212228   , p_amb_context_code             => l_amb_context_code
212229   , p_side                         => 'NA'
212230   );
212231 
212232 
212233    --
212234    --
212235    END IF;
212236    --
212237    -- Bug 4922099
212238    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
212239           (NVL(l_enc_upg_option, 'N') = 'O')
212240         ) AND
212241         (l_bflow_method_code = 'PRIOR_ENTRY')
212242       )
212243    THEN
212244       IF
212245       --
212246       1 = 2
212247       --
212248       THEN
212249       xla_accounting_err_pkg.build_message
212250                                     (p_appli_s_name            => 'XLA'
212251                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
212252                                     ,p_token_1                 => 'LINE_NUMBER'
212253                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
212254                                     ,p_token_2                 => 'LINE_TYPE_NAME'
212255                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
212256                                                                              l_component_type
212257                                                                             ,l_component_code
212258                                                                             ,l_component_type_code
212259                                                                             ,l_component_appl_id
212260                                                                             ,l_amb_context_code
212261                                                                             ,l_entity_code
212262                                                                             ,l_event_class_code
212263                                                                            )
212264                                     ,p_token_3                 => 'OWNER'
212265                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
212266                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
212267                                                                           ,p_lookup_code    => l_component_type_code
212268                                                                          )
212269                                     ,p_token_4                 => 'PRODUCT_NAME'
212270                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
212271                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
212272                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
212273                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
212274                                     ,p_ae_header_id            =>  NULL
212275                                        );
212276 
212277         IF (C_LEVEL_ERROR>= g_log_level) THEN
212278                  trace
212279                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
212280                       ,p_level    => C_LEVEL_ERROR
212281                       ,p_module   => l_log_module);
212282         END IF;
212283       END IF;
212284    END IF;
212285    --
212286    --
212287    ------------------------------------------------------------------------------------------------
212288    -- 4219869 Business Flow
212289    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
212290    -- Prior Entry.  Currently, the following code is always generated.
212291    ------------------------------------------------------------------------------------------------
212292    XLA_AE_LINES_PKG.ValidateCurrentLine;
212293 
212294    ------------------------------------------------------------------------------------
212295    -- 4219869 Business Flow
212296    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
212297    ------------------------------------------------------------------------------------
212298    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
212299 
212300    ----------------------------------------------------------------------------------
212301    -- 4219869 Business Flow
212302    -- Update journal entry status -- Need to generate this within IF <condition>
212303    ----------------------------------------------------------------------------------
212304    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
212305          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
212306          ,p_balance_type_code => l_balance_type_code
212307          );
212308 
212309    -------------------------------------------------------------------------------------------
212310    -- 4262811 - Generate the Accrual Reversal lines
212311    -------------------------------------------------------------------------------------------
212312    BEGIN
212313       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
212314                               (g_array_event(p_event_id).array_value_num('header_index'));
212315       IF l_acc_rev_flag IS NULL THEN
212316          l_acc_rev_flag := 'N';
212317       END IF;
212318    EXCEPTION
212319       WHEN OTHERS THEN
212320          l_acc_rev_flag := 'N';
212321    END;
212322    --
212323    IF (l_acc_rev_flag = 'Y') THEN
212324 
212325        -- 4645092  ------------------------------------------------------------------------------
212326        -- To allow MPA report to determine if it should generate report process
212327        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
212328        ------------------------------------------------------------------------------------------
212329 
212330        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
212331        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
212332    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
212333    -- call ADRs
212334    -- Bug 4922099
212335    --
212336    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
212337         (NVL(l_actual_upg_option, 'N') = 'O') OR
212338         (NVL(l_enc_upg_option, 'N') = 'O')
212339       )
212340    THEN
212341    NULL;
212342    --
212343    --
212344    
212345   l_ccid := AcctDerRule_11(
212346            p_application_id           => p_application_id
212347          , p_ae_header_id             => l_ae_header_id 
212348 , p_source_22 => p_source_22
212349          , x_transaction_coa_id       => l_adr_transaction_coa_id
212350          , x_accounting_coa_id        => l_adr_accounting_coa_id
212351          , x_value_type_code          => l_adr_value_type_code
212352          , p_side                     => 'NA'
212353    );
212354 
212355    xla_ae_lines_pkg.set_ccid(
212356     p_code_combination_id          => l_ccid
212357   , p_value_type_code              => l_adr_value_type_code
212358   , p_transaction_coa_id           => l_adr_transaction_coa_id
212359   , p_accounting_coa_id            => l_adr_accounting_coa_id
212360   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
212361   , p_adr_type_code                => 'S'
212362   , p_component_type               => l_component_type
212363   , p_component_code               => l_component_code
212364   , p_component_type_code          => l_component_type_code
212365   , p_component_appl_id            => l_component_appl_id
212366   , p_amb_context_code             => l_amb_context_code
212367   , p_side                         => 'NA'
212368   );
212369 
212370 
212371    --
212372    --
212373    END IF;
212374 
212375        --
212376        -- Update the line information that should be overwritten
212377        --
212378        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
212379                                          p_header_num   => 1);
212380        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
212381 
212382        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
212383 
212384        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
212385           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
212386        END IF;
212387 
212388       --
212389       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
212390       --
212391       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
212392           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
212393       ELSE
212394           ---------------------------------------------------------------------------------------------------
212395           -- 4262811a Switch Sign
212396           ---------------------------------------------------------------------------------------------------
212397           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
212398           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
212399                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
212400           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
212401                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
212402           -- 5132302
212403           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
212404                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
212405 
212406       END IF;
212407 
212408       -- 4955764
212409       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
212410       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
212411 
212412 
212413       XLA_AE_LINES_PKG.ValidateCurrentLine;
212414       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
212415 
212416       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
212417                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
212418                ,p_balance_type_code => l_balance_type_code);
212419 
212420    END IF;
212421 
212422    -----------------------------------------------------------------------------------------
212423    -- 4262811 Multiperiod Accounting
212424    -----------------------------------------------------------------------------------------
212425      -- No MPA option is assigned.
212426 
212427 
212428 END IF;
212429 END IF;
212430 --
212431 
212432 --
212433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
212434    trace
212435       (p_msg      => 'END of AcctLineType_386'
212436       ,p_level    => C_LEVEL_PROCEDURE
212437       ,p_module   => l_log_module);
212438 END IF;
212439 --
212440 EXCEPTION
212441   WHEN xla_exceptions_pkg.application_exception THEN
212442       RAISE;
212443   WHEN OTHERS THEN
212444        xla_exceptions_pkg.raise_message
212445            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_386');
212446 END AcctLineType_386;
212447 --
212448 
212449 ---------------------------------------
212450 --
212451 -- PRIVATE FUNCTION
212452 --         AcctLineType_387
212453 --
212454 ---------------------------------------
212455 PROCEDURE AcctLineType_387 (
212456   p_application_id        IN NUMBER
212457  ,p_event_id              IN NUMBER
212458  ,p_calculate_acctd_flag  IN VARCHAR2
212459  ,p_calculate_g_l_flag    IN VARCHAR2
212460  ,p_actual_flag           IN OUT VARCHAR2
212461  ,p_balance_type_code     OUT VARCHAR2
212462  ,p_gain_or_loss_ref      OUT VARCHAR2
212463  
212464 --Product Line Accounting Category Bridging Account
212465  , p_source_22            IN NUMBER
212466 --DISTRIBUTION_IDENTIFIER
212467  , p_source_84            IN NUMBER
212468 --Distribution Type
212469  , p_source_85            IN VARCHAR2
212470  , p_source_85_meaning    IN VARCHAR2
212471 --Entered Currency Code
212472  , p_source_88            IN VARCHAR2
212473 --Entered Amount
212474  , p_source_91            IN NUMBER
212475 --Currency Conversion Date
212476  , p_source_92            IN DATE
212477 --Currency Conversion Rate
212478  , p_source_93            IN NUMBER
212479 --Currency Conversion Type
212480  , p_source_94            IN VARCHAR2
212481 --Accounted Amount
212482  , p_source_95            IN NUMBER
212483 --Accounting Line Type
212484  , p_source_97            IN NUMBER
212485 )
212486 IS
212487 
212488 l_component_type              VARCHAR2(80);
212489 l_component_code              VARCHAR2(30);
212490 l_component_type_code         VARCHAR2(1);
212491 l_component_appl_id           INTEGER;
212492 l_amb_context_code            VARCHAR2(30);
212493 l_entity_code                 VARCHAR2(30);
212494 l_event_class_code            VARCHAR2(30);
212495 l_ae_header_id                NUMBER;
212496 l_event_type_code             VARCHAR2(30);
212497 l_line_definition_code        VARCHAR2(30);
212498 l_line_definition_owner_code  VARCHAR2(1);
212499 --
212500 -- adr variables
212501 l_segment                     VARCHAR2(30);
212502 l_ccid                        NUMBER;
212503 l_adr_transaction_coa_id      NUMBER;
212504 l_adr_accounting_coa_id       NUMBER;
212505 l_adr_flexfield_segment_code  VARCHAR2(30);
212506 l_adr_flex_value_set_id       NUMBER;
212507 l_adr_value_type_code         VARCHAR2(30);
212508 l_adr_value_combination_id    NUMBER;
212509 l_adr_value_segment_code      VARCHAR2(30);
212510 
212511 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
212512 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
212513 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
212514 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
212515 
212516 -- 4262811 Variables ------------------------------------------------------------------------------------------
212517 l_entered_amt_idx             NUMBER;
212518 l_accted_amt_idx              NUMBER;
212519 l_acc_rev_flag                VARCHAR2(1);
212520 l_accrual_line_num            NUMBER;
212521 l_tmp_amt                     NUMBER;
212522 l_acc_rev_natural_side_code   VARCHAR2(1);
212523 
212524 l_num_entries                 NUMBER;
212525 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
212526 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
212527 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
212528 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
212529 l_recog_line_1                NUMBER;
212530 l_recog_line_2                NUMBER;
212531 
212532 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
212533 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
212534 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
212535 
212536 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
212537 
212538 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
212539 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
212540 
212541 ---------------------------------------------------------------------------------------------------------------
212542 
212543 
212544 --
212545 -- bulk performance
212546 --
212547 l_balance_type_code           VARCHAR2(1);
212548 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
212549 l_log_module                  VARCHAR2(240);
212550 
212551 --
212552 -- Upgrade strategy
212553 --
212554 l_actual_upg_option           VARCHAR2(1);
212555 l_enc_upg_option           VARCHAR2(1);
212556 
212557 --
212558 BEGIN
212559 --
212560 IF g_log_enabled THEN
212561       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_387';
212562 END IF;
212563 --
212564 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
212565 
212566       trace
212567          (p_msg      => 'BEGIN of AcctLineType_387'
212568          ,p_level    => C_LEVEL_PROCEDURE
212569          ,p_module   => l_log_module);
212570 
212571 END IF;
212572 --
212573 l_component_type             := 'AMB_JLT';
212574 l_component_code             := 'PI_BRIDGING';
212575 l_component_type_code        := 'S';
212576 l_component_appl_id          :=  707;
212577 l_amb_context_code           := 'DEFAULT';
212578 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
212579 l_event_class_code           := 'USER_DEFINE';
212580 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
212581 l_line_definition_owner_code := 'S';
212582 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
212583 --
212584 l_balance_type_code          := 'A';
212585 l_segment                     := NULL;
212586 l_ccid                        := NULL;
212587 l_adr_transaction_coa_id      := NULL;
212588 l_adr_accounting_coa_id       := NULL;
212589 l_adr_flexfield_segment_code  := NULL;
212590 l_adr_flex_value_set_id       := NULL;
212591 l_adr_value_type_code         := NULL;
212592 l_adr_value_combination_id    := NULL;
212593 l_adr_value_segment_code      := NULL;
212594 
212595 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
212596 l_bflow_class_code           := '';    -- 4219869 Business Flow
212597 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
212598 l_budgetary_control_flag     := 'N';
212599 
212600 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
212601 l_bflow_applied_to_amt       := NULL; -- 5132302
212602 l_entered_amt_idx            := NULL;          -- 4262811
212603 l_accted_amt_idx             := NULL;          -- 4262811
212604 l_acc_rev_flag               := NULL;          -- 4262811
212605 l_accrual_line_num           := NULL;          -- 4262811
212606 l_tmp_amt                    := NULL;          -- 4262811
212607 --
212608  
212609 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
212610     l_balance_type_code <> 'B' THEN
212611 IF NVL(p_source_97,9E125) =  1
212612  THEN 
212613 
212614    --
212615    XLA_AE_LINES_PKG.SetNewLine;
212616 
212617    p_balance_type_code          := l_balance_type_code;
212618    -- set the flag so later we will know whether the gain loss line needs to be created
212619    
212620    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
212621      p_actual_flag :='A';
212622    END IF;
212623 
212624    --
212625    -- bulk performance
212626    --
212627    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
212628                                       p_header_num   => 0); -- 4262811
212629    --
212630    -- set accounting line options
212631    --
212632    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
212633            p_natural_side_code          => 'C'
212634          , p_gain_or_loss_flag          => 'N'
212635          , p_gl_transfer_mode_code      => 'S'
212636          , p_acct_entry_type_code       => 'A'
212637          , p_switch_side_flag           => 'Y'
212638          , p_merge_duplicate_code       => 'N'
212639          );
212640    --
212641    l_acc_rev_natural_side_code := 'D';  -- 4262811
212642    -- 
212643    --
212644    -- set accounting line type info
212645    --
212646    xla_ae_lines_pkg.SetAcctLineType
212647       (p_component_type             => l_component_type
212648       ,p_event_type_code            => l_event_type_code
212649       ,p_line_definition_owner_code => l_line_definition_owner_code
212650       ,p_line_definition_code       => l_line_definition_code
212651       ,p_accounting_line_code       => l_component_code
212652       ,p_accounting_line_type_code  => l_component_type_code
212653       ,p_accounting_line_appl_id    => l_component_appl_id
212654       ,p_amb_context_code           => l_amb_context_code
212655       ,p_entity_code                => l_entity_code
212656       ,p_event_class_code           => l_event_class_code);
212657    --
212658    -- set accounting class
212659    --
212660    xla_ae_lines_pkg.SetAcctClass(
212661            p_accounting_class_code  => 'BRIDGING'
212662          , p_ae_header_id           => l_ae_header_id
212663          );
212664 
212665    --
212666    -- set rounding class
212667    --
212668    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
212669                       'BRIDGING';
212670 
212671    --
212672    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
212673    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
212674    --
212675    -- bulk performance
212676    --
212677    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
212678 
212679    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
212680       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
212681 
212682    -- 4955764
212683    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
212684       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
212685 
212686    -- 4458381 Public Sector Enh
212687    
212688    --
212689    -- set accounting attributes for the line type
212690    --
212691    l_entered_amt_idx := 3;
212692    l_accted_amt_idx  := 8;
212693    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
212694    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
212695    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
212696    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
212697    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
212698    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
212699    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
212700    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
212701    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
212702    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
212703    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
212704    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
212705    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
212706    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
212707    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
212708    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
212709    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
212710 
212711    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
212712    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
212713 
212714    ---------------------------------------------------------------------------------------------------------------
212715    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
212716    ---------------------------------------------------------------------------------------------------------------
212717    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
212718 
212719    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
212720    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
212721 
212722    IF xla_accounting_cache_pkg.GetValueChar
212723          (p_source_code         => 'LEDGER_CATEGORY_CODE'
212724          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
212725    AND l_bflow_method_code = 'PRIOR_ENTRY'
212726 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
212727    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
212728          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
212729        )
212730    THEN
212731          xla_ae_lines_pkg.BflowUpgEntry
212732            (p_business_method_code    => l_bflow_method_code
212733            ,p_business_class_code     => l_bflow_class_code
212734            ,p_balance_type            => l_balance_type_code);
212735    ELSE
212736       NULL;
212737 -- No business flow processing for business flow method of NONE.
212738    END IF;
212739 
212740    --
212741    -- call analytical criteria
212742    --
212743    
212744    --
212745    -- call description
212746    --
212747    -- No description or it is inherited.
212748    --
212749    -- call ADRs
212750    -- Bug 4922099
212751    --
212752    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
212753         (NVL(l_actual_upg_option, 'N') = 'O') OR
212754         (NVL(l_enc_upg_option, 'N') = 'O')
212755       )
212756    THEN
212757    NULL;
212758    --
212759    --
212760    
212761   l_ccid := AcctDerRule_11(
212762            p_application_id           => p_application_id
212763          , p_ae_header_id             => l_ae_header_id 
212764 , p_source_22 => p_source_22
212765          , x_transaction_coa_id       => l_adr_transaction_coa_id
212766          , x_accounting_coa_id        => l_adr_accounting_coa_id
212767          , x_value_type_code          => l_adr_value_type_code
212768          , p_side                     => 'NA'
212769    );
212770 
212771    xla_ae_lines_pkg.set_ccid(
212772     p_code_combination_id          => l_ccid
212773   , p_value_type_code              => l_adr_value_type_code
212774   , p_transaction_coa_id           => l_adr_transaction_coa_id
212775   , p_accounting_coa_id            => l_adr_accounting_coa_id
212776   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
212777   , p_adr_type_code                => 'S'
212778   , p_component_type               => l_component_type
212779   , p_component_code               => l_component_code
212780   , p_component_type_code          => l_component_type_code
212781   , p_component_appl_id            => l_component_appl_id
212782   , p_amb_context_code             => l_amb_context_code
212783   , p_side                         => 'NA'
212784   );
212785 
212786 
212787    --
212788    --
212789    END IF;
212790    --
212791    -- Bug 4922099
212792    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
212793           (NVL(l_enc_upg_option, 'N') = 'O')
212794         ) AND
212795         (l_bflow_method_code = 'PRIOR_ENTRY')
212796       )
212797    THEN
212798       IF
212799       --
212800       1 = 2
212801       --
212802       THEN
212803       xla_accounting_err_pkg.build_message
212804                                     (p_appli_s_name            => 'XLA'
212805                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
212806                                     ,p_token_1                 => 'LINE_NUMBER'
212807                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
212808                                     ,p_token_2                 => 'LINE_TYPE_NAME'
212809                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
212810                                                                              l_component_type
212811                                                                             ,l_component_code
212812                                                                             ,l_component_type_code
212813                                                                             ,l_component_appl_id
212814                                                                             ,l_amb_context_code
212815                                                                             ,l_entity_code
212816                                                                             ,l_event_class_code
212817                                                                            )
212818                                     ,p_token_3                 => 'OWNER'
212819                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
212820                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
212821                                                                           ,p_lookup_code    => l_component_type_code
212822                                                                          )
212823                                     ,p_token_4                 => 'PRODUCT_NAME'
212824                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
212825                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
212826                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
212827                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
212828                                     ,p_ae_header_id            =>  NULL
212829                                        );
212830 
212831         IF (C_LEVEL_ERROR>= g_log_level) THEN
212832                  trace
212833                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
212834                       ,p_level    => C_LEVEL_ERROR
212835                       ,p_module   => l_log_module);
212836         END IF;
212837       END IF;
212838    END IF;
212839    --
212840    --
212841    ------------------------------------------------------------------------------------------------
212842    -- 4219869 Business Flow
212843    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
212844    -- Prior Entry.  Currently, the following code is always generated.
212845    ------------------------------------------------------------------------------------------------
212846    XLA_AE_LINES_PKG.ValidateCurrentLine;
212847 
212848    ------------------------------------------------------------------------------------
212849    -- 4219869 Business Flow
212850    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
212851    ------------------------------------------------------------------------------------
212852    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
212853 
212854    ----------------------------------------------------------------------------------
212855    -- 4219869 Business Flow
212856    -- Update journal entry status -- Need to generate this within IF <condition>
212857    ----------------------------------------------------------------------------------
212858    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
212859          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
212860          ,p_balance_type_code => l_balance_type_code
212861          );
212862 
212863    -------------------------------------------------------------------------------------------
212864    -- 4262811 - Generate the Accrual Reversal lines
212865    -------------------------------------------------------------------------------------------
212866    BEGIN
212867       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
212868                               (g_array_event(p_event_id).array_value_num('header_index'));
212869       IF l_acc_rev_flag IS NULL THEN
212870          l_acc_rev_flag := 'N';
212871       END IF;
212872    EXCEPTION
212873       WHEN OTHERS THEN
212874          l_acc_rev_flag := 'N';
212875    END;
212876    --
212877    IF (l_acc_rev_flag = 'Y') THEN
212878 
212879        -- 4645092  ------------------------------------------------------------------------------
212880        -- To allow MPA report to determine if it should generate report process
212881        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
212882        ------------------------------------------------------------------------------------------
212883 
212884        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
212885        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
212886    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
212887    -- call ADRs
212888    -- Bug 4922099
212889    --
212890    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
212891         (NVL(l_actual_upg_option, 'N') = 'O') OR
212892         (NVL(l_enc_upg_option, 'N') = 'O')
212893       )
212894    THEN
212895    NULL;
212896    --
212897    --
212898    
212899   l_ccid := AcctDerRule_11(
212900            p_application_id           => p_application_id
212901          , p_ae_header_id             => l_ae_header_id 
212902 , p_source_22 => p_source_22
212903          , x_transaction_coa_id       => l_adr_transaction_coa_id
212904          , x_accounting_coa_id        => l_adr_accounting_coa_id
212905          , x_value_type_code          => l_adr_value_type_code
212906          , p_side                     => 'NA'
212907    );
212908 
212909    xla_ae_lines_pkg.set_ccid(
212910     p_code_combination_id          => l_ccid
212911   , p_value_type_code              => l_adr_value_type_code
212912   , p_transaction_coa_id           => l_adr_transaction_coa_id
212913   , p_accounting_coa_id            => l_adr_accounting_coa_id
212914   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
212915   , p_adr_type_code                => 'S'
212916   , p_component_type               => l_component_type
212917   , p_component_code               => l_component_code
212918   , p_component_type_code          => l_component_type_code
212919   , p_component_appl_id            => l_component_appl_id
212920   , p_amb_context_code             => l_amb_context_code
212921   , p_side                         => 'NA'
212922   );
212923 
212924 
212925    --
212926    --
212927    END IF;
212928 
212929        --
212930        -- Update the line information that should be overwritten
212931        --
212932        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
212933                                          p_header_num   => 1);
212934        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
212935 
212936        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
212937 
212938        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
212939           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
212940        END IF;
212941 
212942       --
212943       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
212944       --
212945       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
212946           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
212947       ELSE
212948           ---------------------------------------------------------------------------------------------------
212949           -- 4262811a Switch Sign
212950           ---------------------------------------------------------------------------------------------------
212951           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
212952           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
212953                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
212954           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
212955                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
212956           -- 5132302
212957           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
212958                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
212959 
212960       END IF;
212961 
212962       -- 4955764
212963       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
212964       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
212965 
212966 
212967       XLA_AE_LINES_PKG.ValidateCurrentLine;
212968       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
212969 
212970       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
212971                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
212972                ,p_balance_type_code => l_balance_type_code);
212973 
212974    END IF;
212975 
212976    -----------------------------------------------------------------------------------------
212977    -- 4262811 Multiperiod Accounting
212978    -----------------------------------------------------------------------------------------
212979      -- No MPA option is assigned.
212980 
212981 
212982 END IF;
212983 END IF;
212984 --
212985 
212986 --
212987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
212988    trace
212989       (p_msg      => 'END of AcctLineType_387'
212990       ,p_level    => C_LEVEL_PROCEDURE
212991       ,p_module   => l_log_module);
212992 END IF;
212993 --
212994 EXCEPTION
212995   WHEN xla_exceptions_pkg.application_exception THEN
212996       RAISE;
212997   WHEN OTHERS THEN
212998        xla_exceptions_pkg.raise_message
212999            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_387');
213000 END AcctLineType_387;
213001 --
213002 
213003 ---------------------------------------
213004 --
213005 -- PRIVATE FUNCTION
213006 --         AcctLineType_388
213007 --
213008 ---------------------------------------
213009 PROCEDURE AcctLineType_388 (
213010   p_application_id        IN NUMBER
213011  ,p_event_id              IN NUMBER
213012  ,p_calculate_acctd_flag  IN VARCHAR2
213013  ,p_calculate_g_l_flag    IN VARCHAR2
213014  ,p_actual_flag           IN OUT VARCHAR2
213015  ,p_balance_type_code     OUT VARCHAR2
213016  ,p_gain_or_loss_ref      OUT VARCHAR2
213017  
213018 --TRANSACTION_ID
213019  , p_source_1            IN NUMBER
213020 --Item Concatenated Segments
213021  , p_source_2            IN VARCHAR2
213022 --Transaction Quantity
213023  , p_source_3            IN NUMBER
213024 --Transaction Unit of Measure Code
213025  , p_source_4            IN VARCHAR2
213026 --Inventory Transaction Type Description
213027  , p_source_5            IN VARCHAR2
213028 --Product Line Accounting Category Bridging Account
213029  , p_source_22            IN NUMBER
213030 --DISTRIBUTION_IDENTIFIER
213031  , p_source_84            IN NUMBER
213032 --Distribution Type
213033  , p_source_85            IN VARCHAR2
213034  , p_source_85_meaning    IN VARCHAR2
213035 --Entered Currency Code
213036  , p_source_88            IN VARCHAR2
213037 --Entered Amount
213038  , p_source_91            IN NUMBER
213039 --Currency Conversion Date
213040  , p_source_92            IN DATE
213041 --Currency Conversion Rate
213042  , p_source_93            IN NUMBER
213043 --Currency Conversion Type
213044  , p_source_94            IN VARCHAR2
213045 --Accounted Amount
213046  , p_source_95            IN NUMBER
213047 --Accounting Line Type
213048  , p_source_97            IN NUMBER
213049 --Subinventory Type Indicator
213050  , p_source_110            IN VARCHAR2
213051  , p_source_110_meaning    IN VARCHAR2
213052 )
213053 IS
213054 
213055 l_component_type              VARCHAR2(80);
213056 l_component_code              VARCHAR2(30);
213057 l_component_type_code         VARCHAR2(1);
213058 l_component_appl_id           INTEGER;
213059 l_amb_context_code            VARCHAR2(30);
213060 l_entity_code                 VARCHAR2(30);
213061 l_event_class_code            VARCHAR2(30);
213062 l_ae_header_id                NUMBER;
213063 l_event_type_code             VARCHAR2(30);
213064 l_line_definition_code        VARCHAR2(30);
213065 l_line_definition_owner_code  VARCHAR2(1);
213066 --
213067 -- adr variables
213068 l_segment                     VARCHAR2(30);
213069 l_ccid                        NUMBER;
213070 l_adr_transaction_coa_id      NUMBER;
213071 l_adr_accounting_coa_id       NUMBER;
213072 l_adr_flexfield_segment_code  VARCHAR2(30);
213073 l_adr_flex_value_set_id       NUMBER;
213074 l_adr_value_type_code         VARCHAR2(30);
213075 l_adr_value_combination_id    NUMBER;
213076 l_adr_value_segment_code      VARCHAR2(30);
213077 
213078 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
213079 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
213080 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
213081 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
213082 
213083 -- 4262811 Variables ------------------------------------------------------------------------------------------
213084 l_entered_amt_idx             NUMBER;
213085 l_accted_amt_idx              NUMBER;
213086 l_acc_rev_flag                VARCHAR2(1);
213087 l_accrual_line_num            NUMBER;
213088 l_tmp_amt                     NUMBER;
213089 l_acc_rev_natural_side_code   VARCHAR2(1);
213090 
213091 l_num_entries                 NUMBER;
213092 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
213093 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
213094 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
213095 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
213096 l_recog_line_1                NUMBER;
213097 l_recog_line_2                NUMBER;
213098 
213099 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
213100 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
213101 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
213102 
213103 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
213104 
213105 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
213106 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
213107 
213108 ---------------------------------------------------------------------------------------------------------------
213109 
213110 
213111 --
213112 -- bulk performance
213113 --
213114 l_balance_type_code           VARCHAR2(1);
213115 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
213116 l_log_module                  VARCHAR2(240);
213117 
213118 --
213119 -- Upgrade strategy
213120 --
213121 l_actual_upg_option           VARCHAR2(1);
213122 l_enc_upg_option           VARCHAR2(1);
213123 
213124 --
213125 BEGIN
213126 --
213127 IF g_log_enabled THEN
213128       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_388';
213129 END IF;
213130 --
213131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
213132 
213133       trace
213134          (p_msg      => 'BEGIN of AcctLineType_388'
213135          ,p_level    => C_LEVEL_PROCEDURE
213136          ,p_module   => l_log_module);
213137 
213138 END IF;
213139 --
213140 l_component_type             := 'AMB_JLT';
213141 l_component_code             := 'PI_BRIDGING';
213142 l_component_type_code        := 'S';
213143 l_component_appl_id          :=  707;
213144 l_amb_context_code           := 'DEFAULT';
213145 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
213146 l_event_class_code           := 'WIP_MTL';
213147 l_event_type_code            := 'WIP_ASSEMBLY_COMPLETION';
213148 l_line_definition_owner_code := 'S';
213149 l_line_definition_code       := 'PI_WIP_ASSEMBLY_COMPLETION';
213150 --
213151 l_balance_type_code          := 'A';
213152 l_segment                     := NULL;
213153 l_ccid                        := NULL;
213154 l_adr_transaction_coa_id      := NULL;
213155 l_adr_accounting_coa_id       := NULL;
213156 l_adr_flexfield_segment_code  := NULL;
213157 l_adr_flex_value_set_id       := NULL;
213158 l_adr_value_type_code         := NULL;
213159 l_adr_value_combination_id    := NULL;
213160 l_adr_value_segment_code      := NULL;
213161 
213162 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
213163 l_bflow_class_code           := '';    -- 4219869 Business Flow
213164 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
213165 l_budgetary_control_flag     := 'N';
213166 
213167 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
213168 l_bflow_applied_to_amt       := NULL; -- 5132302
213169 l_entered_amt_idx            := NULL;          -- 4262811
213170 l_accted_amt_idx             := NULL;          -- 4262811
213171 l_acc_rev_flag               := NULL;          -- 4262811
213172 l_accrual_line_num           := NULL;          -- 4262811
213173 l_tmp_amt                    := NULL;          -- 4262811
213174 --
213175  
213176 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
213177     l_balance_type_code <> 'B' THEN
213178 IF (NVL(p_source_97,9E125) =  1 OR 
213179 NVL(p_source_97,9E125) =  2 OR 
213180 NVL(p_source_97,9E125) =  3) AND 
213181 NVL(p_source_110,'
213182 ') =  'Y'
213183  THEN 
213184 
213185    --
213186    XLA_AE_LINES_PKG.SetNewLine;
213187 
213188    p_balance_type_code          := l_balance_type_code;
213189    -- set the flag so later we will know whether the gain loss line needs to be created
213190    
213191    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
213192      p_actual_flag :='A';
213193    END IF;
213194 
213195    --
213196    -- bulk performance
213197    --
213198    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
213199                                       p_header_num   => 0); -- 4262811
213200    --
213201    -- set accounting line options
213202    --
213203    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
213204            p_natural_side_code          => 'C'
213205          , p_gain_or_loss_flag          => 'N'
213206          , p_gl_transfer_mode_code      => 'S'
213207          , p_acct_entry_type_code       => 'A'
213208          , p_switch_side_flag           => 'Y'
213209          , p_merge_duplicate_code       => 'N'
213210          );
213211    --
213212    l_acc_rev_natural_side_code := 'D';  -- 4262811
213213    -- 
213214    --
213215    -- set accounting line type info
213216    --
213217    xla_ae_lines_pkg.SetAcctLineType
213218       (p_component_type             => l_component_type
213219       ,p_event_type_code            => l_event_type_code
213220       ,p_line_definition_owner_code => l_line_definition_owner_code
213221       ,p_line_definition_code       => l_line_definition_code
213222       ,p_accounting_line_code       => l_component_code
213223       ,p_accounting_line_type_code  => l_component_type_code
213224       ,p_accounting_line_appl_id    => l_component_appl_id
213225       ,p_amb_context_code           => l_amb_context_code
213226       ,p_entity_code                => l_entity_code
213227       ,p_event_class_code           => l_event_class_code);
213228    --
213229    -- set accounting class
213230    --
213231    xla_ae_lines_pkg.SetAcctClass(
213232            p_accounting_class_code  => 'BRIDGING'
213233          , p_ae_header_id           => l_ae_header_id
213234          );
213235 
213236    --
213237    -- set rounding class
213238    --
213239    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
213240                       'BRIDGING';
213241 
213242    --
213243    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
213244    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
213245    --
213246    -- bulk performance
213247    --
213248    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
213249 
213250    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
213251       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
213252 
213253    -- 4955764
213254    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
213255       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
213256 
213257    -- 4458381 Public Sector Enh
213258    
213259    --
213260    -- set accounting attributes for the line type
213261    --
213262    l_entered_amt_idx := 3;
213263    l_accted_amt_idx  := 8;
213264    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
213265    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
213266    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
213267    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
213268    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
213269    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
213270    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
213271    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
213272    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
213273    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
213274    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
213275    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
213276    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
213277    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
213278    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
213279    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
213280    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
213281 
213282    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
213283    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
213284 
213285    ---------------------------------------------------------------------------------------------------------------
213286    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
213287    ---------------------------------------------------------------------------------------------------------------
213288    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
213289 
213290    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
213291    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
213292 
213293    IF xla_accounting_cache_pkg.GetValueChar
213294          (p_source_code         => 'LEDGER_CATEGORY_CODE'
213295          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
213296    AND l_bflow_method_code = 'PRIOR_ENTRY'
213297 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
213298    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
213299          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
213300        )
213301    THEN
213302          xla_ae_lines_pkg.BflowUpgEntry
213303            (p_business_method_code    => l_bflow_method_code
213304            ,p_business_class_code     => l_bflow_class_code
213305            ,p_balance_type            => l_balance_type_code);
213306    ELSE
213307       NULL;
213308 -- No business flow processing for business flow method of NONE.
213309    END IF;
213310 
213311    --
213312    -- call analytical criteria
213313    --
213314    
213315    --
213316    -- call description
213317    --
213318    
213319 xla_ae_lines_pkg.SetLineDescription(
213320    p_ae_header_id => l_ae_header_id
213321   ,p_description  => Description_1 (
213322      p_application_id         => p_application_id
213323    , p_ae_header_id           => l_ae_header_id 
213324 , p_source_1 => p_source_1
213325 , p_source_2 => p_source_2
213326 , p_source_3 => p_source_3
213327 , p_source_4 => p_source_4
213328 , p_source_5 => p_source_5
213329    )
213330 );
213331 
213332 
213333    --
213334    -- call ADRs
213335    -- Bug 4922099
213336    --
213337    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
213338         (NVL(l_actual_upg_option, 'N') = 'O') OR
213339         (NVL(l_enc_upg_option, 'N') = 'O')
213340       )
213341    THEN
213342    NULL;
213343    --
213344    --
213345    
213346   l_ccid := AcctDerRule_11(
213347            p_application_id           => p_application_id
213348          , p_ae_header_id             => l_ae_header_id 
213349 , p_source_22 => p_source_22
213350          , x_transaction_coa_id       => l_adr_transaction_coa_id
213351          , x_accounting_coa_id        => l_adr_accounting_coa_id
213352          , x_value_type_code          => l_adr_value_type_code
213353          , p_side                     => 'NA'
213354    );
213355 
213356    xla_ae_lines_pkg.set_ccid(
213357     p_code_combination_id          => l_ccid
213358   , p_value_type_code              => l_adr_value_type_code
213359   , p_transaction_coa_id           => l_adr_transaction_coa_id
213360   , p_accounting_coa_id            => l_adr_accounting_coa_id
213361   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
213362   , p_adr_type_code                => 'S'
213363   , p_component_type               => l_component_type
213364   , p_component_code               => l_component_code
213365   , p_component_type_code          => l_component_type_code
213366   , p_component_appl_id            => l_component_appl_id
213367   , p_amb_context_code             => l_amb_context_code
213368   , p_side                         => 'NA'
213369   );
213370 
213371 
213372    --
213373    --
213374    END IF;
213375    --
213376    -- Bug 4922099
213377    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
213378           (NVL(l_enc_upg_option, 'N') = 'O')
213379         ) AND
213380         (l_bflow_method_code = 'PRIOR_ENTRY')
213381       )
213382    THEN
213383       IF
213384       --
213385       1 = 2
213386       --
213387       THEN
213388       xla_accounting_err_pkg.build_message
213389                                     (p_appli_s_name            => 'XLA'
213390                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
213391                                     ,p_token_1                 => 'LINE_NUMBER'
213392                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
213393                                     ,p_token_2                 => 'LINE_TYPE_NAME'
213394                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
213395                                                                              l_component_type
213396                                                                             ,l_component_code
213397                                                                             ,l_component_type_code
213398                                                                             ,l_component_appl_id
213399                                                                             ,l_amb_context_code
213400                                                                             ,l_entity_code
213401                                                                             ,l_event_class_code
213402                                                                            )
213403                                     ,p_token_3                 => 'OWNER'
213404                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
213405                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
213406                                                                           ,p_lookup_code    => l_component_type_code
213407                                                                          )
213408                                     ,p_token_4                 => 'PRODUCT_NAME'
213409                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
213410                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
213411                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
213412                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
213413                                     ,p_ae_header_id            =>  NULL
213414                                        );
213415 
213416         IF (C_LEVEL_ERROR>= g_log_level) THEN
213417                  trace
213418                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
213419                       ,p_level    => C_LEVEL_ERROR
213420                       ,p_module   => l_log_module);
213421         END IF;
213422       END IF;
213423    END IF;
213424    --
213425    --
213426    ------------------------------------------------------------------------------------------------
213427    -- 4219869 Business Flow
213428    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
213429    -- Prior Entry.  Currently, the following code is always generated.
213430    ------------------------------------------------------------------------------------------------
213431    XLA_AE_LINES_PKG.ValidateCurrentLine;
213432 
213433    ------------------------------------------------------------------------------------
213434    -- 4219869 Business Flow
213435    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
213436    ------------------------------------------------------------------------------------
213437    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
213438 
213439    ----------------------------------------------------------------------------------
213440    -- 4219869 Business Flow
213441    -- Update journal entry status -- Need to generate this within IF <condition>
213442    ----------------------------------------------------------------------------------
213443    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
213444          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
213445          ,p_balance_type_code => l_balance_type_code
213446          );
213447 
213448    -------------------------------------------------------------------------------------------
213449    -- 4262811 - Generate the Accrual Reversal lines
213450    -------------------------------------------------------------------------------------------
213451    BEGIN
213452       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
213453                               (g_array_event(p_event_id).array_value_num('header_index'));
213454       IF l_acc_rev_flag IS NULL THEN
213455          l_acc_rev_flag := 'N';
213456       END IF;
213457    EXCEPTION
213458       WHEN OTHERS THEN
213459          l_acc_rev_flag := 'N';
213460    END;
213461    --
213462    IF (l_acc_rev_flag = 'Y') THEN
213463 
213464        -- 4645092  ------------------------------------------------------------------------------
213465        -- To allow MPA report to determine if it should generate report process
213466        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
213467        ------------------------------------------------------------------------------------------
213468 
213469        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
213470        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
213471    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
213472    -- call ADRs
213473    -- Bug 4922099
213474    --
213475    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
213476         (NVL(l_actual_upg_option, 'N') = 'O') OR
213477         (NVL(l_enc_upg_option, 'N') = 'O')
213478       )
213479    THEN
213480    NULL;
213481    --
213482    --
213483    
213484   l_ccid := AcctDerRule_11(
213485            p_application_id           => p_application_id
213486          , p_ae_header_id             => l_ae_header_id 
213487 , p_source_22 => p_source_22
213488          , x_transaction_coa_id       => l_adr_transaction_coa_id
213489          , x_accounting_coa_id        => l_adr_accounting_coa_id
213490          , x_value_type_code          => l_adr_value_type_code
213491          , p_side                     => 'NA'
213492    );
213493 
213494    xla_ae_lines_pkg.set_ccid(
213495     p_code_combination_id          => l_ccid
213496   , p_value_type_code              => l_adr_value_type_code
213497   , p_transaction_coa_id           => l_adr_transaction_coa_id
213498   , p_accounting_coa_id            => l_adr_accounting_coa_id
213499   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
213500   , p_adr_type_code                => 'S'
213501   , p_component_type               => l_component_type
213502   , p_component_code               => l_component_code
213503   , p_component_type_code          => l_component_type_code
213504   , p_component_appl_id            => l_component_appl_id
213505   , p_amb_context_code             => l_amb_context_code
213506   , p_side                         => 'NA'
213507   );
213508 
213509 
213510    --
213511    --
213512    END IF;
213513 
213514        --
213515        -- Update the line information that should be overwritten
213516        --
213517        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
213518                                          p_header_num   => 1);
213519        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
213520 
213521        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
213522 
213523        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
213524           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
213525        END IF;
213526 
213527       --
213528       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
213529       --
213530       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
213531           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
213532       ELSE
213533           ---------------------------------------------------------------------------------------------------
213534           -- 4262811a Switch Sign
213535           ---------------------------------------------------------------------------------------------------
213536           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
213537           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
213538                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
213539           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
213540                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
213541           -- 5132302
213542           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
213543                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
213544 
213545       END IF;
213546 
213547       -- 4955764
213548       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
213549       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
213550 
213551 
213552       XLA_AE_LINES_PKG.ValidateCurrentLine;
213553       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
213554 
213555       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
213556                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
213557                ,p_balance_type_code => l_balance_type_code);
213558 
213559    END IF;
213560 
213561    -----------------------------------------------------------------------------------------
213562    -- 4262811 Multiperiod Accounting
213563    -----------------------------------------------------------------------------------------
213564      -- No MPA option is assigned.
213565 
213566 
213567 END IF;
213568 END IF;
213569 --
213570 
213571 --
213572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
213573    trace
213574       (p_msg      => 'END of AcctLineType_388'
213575       ,p_level    => C_LEVEL_PROCEDURE
213576       ,p_module   => l_log_module);
213577 END IF;
213578 --
213579 EXCEPTION
213580   WHEN xla_exceptions_pkg.application_exception THEN
213581       RAISE;
213582   WHEN OTHERS THEN
213583        xla_exceptions_pkg.raise_message
213584            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_388');
213585 END AcctLineType_388;
213586 --
213587 
213588 ---------------------------------------
213589 --
213590 -- PRIVATE FUNCTION
213591 --         AcctLineType_389
213592 --
213593 ---------------------------------------
213594 PROCEDURE AcctLineType_389 (
213595   p_application_id        IN NUMBER
213596  ,p_event_id              IN NUMBER
213597  ,p_calculate_acctd_flag  IN VARCHAR2
213598  ,p_calculate_g_l_flag    IN VARCHAR2
213599  ,p_actual_flag           IN OUT VARCHAR2
213600  ,p_balance_type_code     OUT VARCHAR2
213601  ,p_gain_or_loss_ref      OUT VARCHAR2
213602  
213603 --TRANSACTION_ID
213604  , p_source_1            IN NUMBER
213605 --Item Concatenated Segments
213606  , p_source_2            IN VARCHAR2
213607 --Transaction Quantity
213608  , p_source_3            IN NUMBER
213609 --Transaction Unit of Measure Code
213610  , p_source_4            IN VARCHAR2
213611 --Inventory Transaction Type Description
213612  , p_source_5            IN VARCHAR2
213613 --Product Line Accounting Category Bridging Account
213614  , p_source_22            IN NUMBER
213615 --DISTRIBUTION_IDENTIFIER
213616  , p_source_84            IN NUMBER
213617 --Distribution Type
213618  , p_source_85            IN VARCHAR2
213619  , p_source_85_meaning    IN VARCHAR2
213620 --Entered Currency Code
213621  , p_source_88            IN VARCHAR2
213622 --Entered Amount
213623  , p_source_91            IN NUMBER
213624 --Currency Conversion Date
213625  , p_source_92            IN DATE
213626 --Currency Conversion Rate
213627  , p_source_93            IN NUMBER
213628 --Currency Conversion Type
213629  , p_source_94            IN VARCHAR2
213630 --Accounted Amount
213631  , p_source_95            IN NUMBER
213632 --Accounting Line Type
213633  , p_source_97            IN NUMBER
213634 --Organization Identifier
213635  , p_source_111            IN NUMBER
213636 --Transfer Organization Name
213637  , p_source_112            IN NUMBER
213638 )
213639 IS
213640 
213641 l_component_type              VARCHAR2(80);
213642 l_component_code              VARCHAR2(30);
213643 l_component_type_code         VARCHAR2(1);
213644 l_component_appl_id           INTEGER;
213645 l_amb_context_code            VARCHAR2(30);
213646 l_entity_code                 VARCHAR2(30);
213647 l_event_class_code            VARCHAR2(30);
213648 l_ae_header_id                NUMBER;
213649 l_event_type_code             VARCHAR2(30);
213650 l_line_definition_code        VARCHAR2(30);
213651 l_line_definition_owner_code  VARCHAR2(1);
213652 --
213653 -- adr variables
213654 l_segment                     VARCHAR2(30);
213655 l_ccid                        NUMBER;
213656 l_adr_transaction_coa_id      NUMBER;
213657 l_adr_accounting_coa_id       NUMBER;
213658 l_adr_flexfield_segment_code  VARCHAR2(30);
213659 l_adr_flex_value_set_id       NUMBER;
213660 l_adr_value_type_code         VARCHAR2(30);
213661 l_adr_value_combination_id    NUMBER;
213662 l_adr_value_segment_code      VARCHAR2(30);
213663 
213664 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
213665 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
213666 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
213667 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
213668 
213669 -- 4262811 Variables ------------------------------------------------------------------------------------------
213670 l_entered_amt_idx             NUMBER;
213671 l_accted_amt_idx              NUMBER;
213672 l_acc_rev_flag                VARCHAR2(1);
213673 l_accrual_line_num            NUMBER;
213674 l_tmp_amt                     NUMBER;
213675 l_acc_rev_natural_side_code   VARCHAR2(1);
213676 
213677 l_num_entries                 NUMBER;
213678 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
213679 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
213680 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
213681 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
213682 l_recog_line_1                NUMBER;
213683 l_recog_line_2                NUMBER;
213684 
213685 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
213686 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
213687 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
213688 
213689 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
213690 
213691 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
213692 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
213693 
213694 ---------------------------------------------------------------------------------------------------------------
213695 
213696 
213697 --
213698 -- bulk performance
213699 --
213700 l_balance_type_code           VARCHAR2(1);
213701 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
213702 l_log_module                  VARCHAR2(240);
213703 
213704 --
213705 -- Upgrade strategy
213706 --
213707 l_actual_upg_option           VARCHAR2(1);
213708 l_enc_upg_option           VARCHAR2(1);
213709 
213710 --
213711 BEGIN
213712 --
213713 IF g_log_enabled THEN
213714       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_389';
213715 END IF;
213716 --
213717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
213718 
213719       trace
213720          (p_msg      => 'BEGIN of AcctLineType_389'
213721          ,p_level    => C_LEVEL_PROCEDURE
213722          ,p_module   => l_log_module);
213723 
213724 END IF;
213725 --
213726 l_component_type             := 'AMB_JLT';
213727 l_component_code             := 'PI_BRIDGING';
213728 l_component_type_code        := 'S';
213729 l_component_appl_id          :=  707;
213730 l_amb_context_code           := 'DEFAULT';
213731 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
213732 l_event_class_code           := 'INT_ORDER_TO_EXP';
213733 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
213734 l_line_definition_owner_code := 'S';
213735 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_TP';
213736 --
213737 l_balance_type_code          := 'A';
213738 l_segment                     := NULL;
213739 l_ccid                        := NULL;
213740 l_adr_transaction_coa_id      := NULL;
213741 l_adr_accounting_coa_id       := NULL;
213742 l_adr_flexfield_segment_code  := NULL;
213743 l_adr_flex_value_set_id       := NULL;
213744 l_adr_value_type_code         := NULL;
213745 l_adr_value_combination_id    := NULL;
213746 l_adr_value_segment_code      := NULL;
213747 
213748 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
213749 l_bflow_class_code           := '';    -- 4219869 Business Flow
213750 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
213751 l_budgetary_control_flag     := 'N';
213752 
213753 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
213754 l_bflow_applied_to_amt       := NULL; -- 5132302
213755 l_entered_amt_idx            := NULL;          -- 4262811
213756 l_accted_amt_idx             := NULL;          -- 4262811
213757 l_acc_rev_flag               := NULL;          -- 4262811
213758 l_accrual_line_num           := NULL;          -- 4262811
213759 l_tmp_amt                    := NULL;          -- 4262811
213760 --
213761  
213762 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
213763     l_balance_type_code <> 'B' THEN
213764 IF NVL(p_source_97,9E125) =  1 AND 
213765 p_source_111 IS NOT NULL AND 
213766 p_source_112 IS NOT NULL AND 
213767 NVL(p_source_111,9E125) <> NVL(p_source_112,9E125) 
213768  THEN 
213769 
213770    --
213771    XLA_AE_LINES_PKG.SetNewLine;
213772 
213773    p_balance_type_code          := l_balance_type_code;
213774    -- set the flag so later we will know whether the gain loss line needs to be created
213775    
213776    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
213777      p_actual_flag :='A';
213778    END IF;
213779 
213780    --
213781    -- bulk performance
213782    --
213783    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
213784                                       p_header_num   => 0); -- 4262811
213785    --
213786    -- set accounting line options
213787    --
213788    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
213789            p_natural_side_code          => 'C'
213790          , p_gain_or_loss_flag          => 'N'
213791          , p_gl_transfer_mode_code      => 'S'
213792          , p_acct_entry_type_code       => 'A'
213793          , p_switch_side_flag           => 'Y'
213794          , p_merge_duplicate_code       => 'N'
213795          );
213796    --
213797    l_acc_rev_natural_side_code := 'D';  -- 4262811
213798    -- 
213799    --
213800    -- set accounting line type info
213801    --
213802    xla_ae_lines_pkg.SetAcctLineType
213803       (p_component_type             => l_component_type
213804       ,p_event_type_code            => l_event_type_code
213805       ,p_line_definition_owner_code => l_line_definition_owner_code
213806       ,p_line_definition_code       => l_line_definition_code
213807       ,p_accounting_line_code       => l_component_code
213808       ,p_accounting_line_type_code  => l_component_type_code
213809       ,p_accounting_line_appl_id    => l_component_appl_id
213810       ,p_amb_context_code           => l_amb_context_code
213811       ,p_entity_code                => l_entity_code
213812       ,p_event_class_code           => l_event_class_code);
213813    --
213814    -- set accounting class
213815    --
213816    xla_ae_lines_pkg.SetAcctClass(
213817            p_accounting_class_code  => 'BRIDGING'
213818          , p_ae_header_id           => l_ae_header_id
213819          );
213820 
213821    --
213822    -- set rounding class
213823    --
213824    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
213825                       'BRIDGING';
213826 
213827    --
213828    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
213829    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
213830    --
213831    -- bulk performance
213832    --
213833    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
213834 
213835    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
213836       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
213837 
213838    -- 4955764
213839    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
213840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
213841 
213842    -- 4458381 Public Sector Enh
213843    
213844    --
213845    -- set accounting attributes for the line type
213846    --
213847    l_entered_amt_idx := 3;
213848    l_accted_amt_idx  := 8;
213849    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
213850    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
213851    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
213852    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
213853    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
213854    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
213855    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
213856    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
213857    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
213858    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
213859    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
213860    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
213861    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
213862    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
213863    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
213864    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
213865    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
213866 
213867    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
213868    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
213869 
213870    ---------------------------------------------------------------------------------------------------------------
213871    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
213872    ---------------------------------------------------------------------------------------------------------------
213873    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
213874 
213875    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
213876    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
213877 
213878    IF xla_accounting_cache_pkg.GetValueChar
213879          (p_source_code         => 'LEDGER_CATEGORY_CODE'
213880          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
213881    AND l_bflow_method_code = 'PRIOR_ENTRY'
213882 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
213883    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
213884          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
213885        )
213886    THEN
213887          xla_ae_lines_pkg.BflowUpgEntry
213888            (p_business_method_code    => l_bflow_method_code
213889            ,p_business_class_code     => l_bflow_class_code
213890            ,p_balance_type            => l_balance_type_code);
213891    ELSE
213892       NULL;
213893 -- No business flow processing for business flow method of NONE.
213894    END IF;
213895 
213896    --
213897    -- call analytical criteria
213898    --
213899    
213900    --
213901    -- call description
213902    --
213903    
213904 xla_ae_lines_pkg.SetLineDescription(
213905    p_ae_header_id => l_ae_header_id
213906   ,p_description  => Description_1 (
213907      p_application_id         => p_application_id
213908    , p_ae_header_id           => l_ae_header_id 
213909 , p_source_1 => p_source_1
213910 , p_source_2 => p_source_2
213911 , p_source_3 => p_source_3
213912 , p_source_4 => p_source_4
213913 , p_source_5 => p_source_5
213914    )
213915 );
213916 
213917 
213918    --
213919    -- call ADRs
213920    -- Bug 4922099
213921    --
213922    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
213923         (NVL(l_actual_upg_option, 'N') = 'O') OR
213924         (NVL(l_enc_upg_option, 'N') = 'O')
213925       )
213926    THEN
213927    NULL;
213928    --
213929    --
213930    
213931   l_ccid := AcctDerRule_11(
213932            p_application_id           => p_application_id
213933          , p_ae_header_id             => l_ae_header_id 
213934 , p_source_22 => p_source_22
213935          , x_transaction_coa_id       => l_adr_transaction_coa_id
213936          , x_accounting_coa_id        => l_adr_accounting_coa_id
213937          , x_value_type_code          => l_adr_value_type_code
213938          , p_side                     => 'NA'
213939    );
213940 
213941    xla_ae_lines_pkg.set_ccid(
213942     p_code_combination_id          => l_ccid
213943   , p_value_type_code              => l_adr_value_type_code
213944   , p_transaction_coa_id           => l_adr_transaction_coa_id
213945   , p_accounting_coa_id            => l_adr_accounting_coa_id
213946   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
213947   , p_adr_type_code                => 'S'
213948   , p_component_type               => l_component_type
213949   , p_component_code               => l_component_code
213950   , p_component_type_code          => l_component_type_code
213951   , p_component_appl_id            => l_component_appl_id
213952   , p_amb_context_code             => l_amb_context_code
213953   , p_side                         => 'NA'
213954   );
213955 
213956 
213957    --
213958    --
213959    END IF;
213960    --
213961    -- Bug 4922099
213962    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
213963           (NVL(l_enc_upg_option, 'N') = 'O')
213964         ) AND
213965         (l_bflow_method_code = 'PRIOR_ENTRY')
213966       )
213967    THEN
213968       IF
213969       --
213970       1 = 2
213971       --
213972       THEN
213973       xla_accounting_err_pkg.build_message
213974                                     (p_appli_s_name            => 'XLA'
213975                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
213976                                     ,p_token_1                 => 'LINE_NUMBER'
213977                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
213978                                     ,p_token_2                 => 'LINE_TYPE_NAME'
213979                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
213980                                                                              l_component_type
213981                                                                             ,l_component_code
213982                                                                             ,l_component_type_code
213983                                                                             ,l_component_appl_id
213984                                                                             ,l_amb_context_code
213985                                                                             ,l_entity_code
213986                                                                             ,l_event_class_code
213987                                                                            )
213988                                     ,p_token_3                 => 'OWNER'
213989                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
213990                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
213991                                                                           ,p_lookup_code    => l_component_type_code
213992                                                                          )
213993                                     ,p_token_4                 => 'PRODUCT_NAME'
213994                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
213995                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
213996                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
213997                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
213998                                     ,p_ae_header_id            =>  NULL
213999                                        );
214000 
214001         IF (C_LEVEL_ERROR>= g_log_level) THEN
214002                  trace
214003                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
214004                       ,p_level    => C_LEVEL_ERROR
214005                       ,p_module   => l_log_module);
214006         END IF;
214007       END IF;
214008    END IF;
214009    --
214010    --
214011    ------------------------------------------------------------------------------------------------
214012    -- 4219869 Business Flow
214013    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
214014    -- Prior Entry.  Currently, the following code is always generated.
214015    ------------------------------------------------------------------------------------------------
214016    XLA_AE_LINES_PKG.ValidateCurrentLine;
214017 
214018    ------------------------------------------------------------------------------------
214019    -- 4219869 Business Flow
214020    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
214021    ------------------------------------------------------------------------------------
214022    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
214023 
214024    ----------------------------------------------------------------------------------
214025    -- 4219869 Business Flow
214026    -- Update journal entry status -- Need to generate this within IF <condition>
214027    ----------------------------------------------------------------------------------
214028    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
214029          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
214030          ,p_balance_type_code => l_balance_type_code
214031          );
214032 
214033    -------------------------------------------------------------------------------------------
214034    -- 4262811 - Generate the Accrual Reversal lines
214035    -------------------------------------------------------------------------------------------
214036    BEGIN
214037       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
214038                               (g_array_event(p_event_id).array_value_num('header_index'));
214039       IF l_acc_rev_flag IS NULL THEN
214040          l_acc_rev_flag := 'N';
214041       END IF;
214042    EXCEPTION
214043       WHEN OTHERS THEN
214044          l_acc_rev_flag := 'N';
214045    END;
214046    --
214047    IF (l_acc_rev_flag = 'Y') THEN
214048 
214049        -- 4645092  ------------------------------------------------------------------------------
214050        -- To allow MPA report to determine if it should generate report process
214051        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
214052        ------------------------------------------------------------------------------------------
214053 
214054        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
214055        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
214056    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
214057    -- call ADRs
214058    -- Bug 4922099
214059    --
214060    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
214061         (NVL(l_actual_upg_option, 'N') = 'O') OR
214062         (NVL(l_enc_upg_option, 'N') = 'O')
214063       )
214064    THEN
214065    NULL;
214066    --
214067    --
214068    
214069   l_ccid := AcctDerRule_11(
214070            p_application_id           => p_application_id
214071          , p_ae_header_id             => l_ae_header_id 
214072 , p_source_22 => p_source_22
214073          , x_transaction_coa_id       => l_adr_transaction_coa_id
214074          , x_accounting_coa_id        => l_adr_accounting_coa_id
214075          , x_value_type_code          => l_adr_value_type_code
214076          , p_side                     => 'NA'
214077    );
214078 
214079    xla_ae_lines_pkg.set_ccid(
214080     p_code_combination_id          => l_ccid
214081   , p_value_type_code              => l_adr_value_type_code
214082   , p_transaction_coa_id           => l_adr_transaction_coa_id
214083   , p_accounting_coa_id            => l_adr_accounting_coa_id
214084   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
214085   , p_adr_type_code                => 'S'
214086   , p_component_type               => l_component_type
214087   , p_component_code               => l_component_code
214088   , p_component_type_code          => l_component_type_code
214089   , p_component_appl_id            => l_component_appl_id
214090   , p_amb_context_code             => l_amb_context_code
214091   , p_side                         => 'NA'
214092   );
214093 
214094 
214095    --
214096    --
214097    END IF;
214098 
214099        --
214100        -- Update the line information that should be overwritten
214101        --
214102        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
214103                                          p_header_num   => 1);
214104        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
214105 
214106        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
214107 
214108        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
214109           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
214110        END IF;
214111 
214112       --
214113       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
214114       --
214115       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
214116           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
214117       ELSE
214118           ---------------------------------------------------------------------------------------------------
214119           -- 4262811a Switch Sign
214120           ---------------------------------------------------------------------------------------------------
214121           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
214122           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
214123                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
214124           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
214125                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
214126           -- 5132302
214127           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
214128                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
214129 
214130       END IF;
214131 
214132       -- 4955764
214133       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
214134       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
214135 
214136 
214137       XLA_AE_LINES_PKG.ValidateCurrentLine;
214138       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
214139 
214140       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
214141                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
214142                ,p_balance_type_code => l_balance_type_code);
214143 
214144    END IF;
214145 
214146    -----------------------------------------------------------------------------------------
214147    -- 4262811 Multiperiod Accounting
214148    -----------------------------------------------------------------------------------------
214149      -- No MPA option is assigned.
214150 
214151 
214152 END IF;
214153 END IF;
214154 --
214155 
214156 --
214157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
214158    trace
214159       (p_msg      => 'END of AcctLineType_389'
214160       ,p_level    => C_LEVEL_PROCEDURE
214161       ,p_module   => l_log_module);
214162 END IF;
214163 --
214164 EXCEPTION
214165   WHEN xla_exceptions_pkg.application_exception THEN
214166       RAISE;
214167   WHEN OTHERS THEN
214168        xla_exceptions_pkg.raise_message
214169            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_389');
214170 END AcctLineType_389;
214171 --
214172 
214173 ---------------------------------------
214174 --
214175 -- PRIVATE FUNCTION
214176 --         AcctLineType_390
214177 --
214178 ---------------------------------------
214179 PROCEDURE AcctLineType_390 (
214180   p_application_id        IN NUMBER
214181  ,p_event_id              IN NUMBER
214182  ,p_calculate_acctd_flag  IN VARCHAR2
214183  ,p_calculate_g_l_flag    IN VARCHAR2
214184  ,p_actual_flag           IN OUT VARCHAR2
214185  ,p_balance_type_code     OUT VARCHAR2
214186  ,p_gain_or_loss_ref      OUT VARCHAR2
214187  
214188 --TRANSACTION_ID
214189  , p_source_1            IN NUMBER
214190 --Item Concatenated Segments
214191  , p_source_2            IN VARCHAR2
214192 --Transaction Quantity
214193  , p_source_3            IN NUMBER
214194 --Transaction Unit of Measure Code
214195  , p_source_4            IN VARCHAR2
214196 --Inventory Transaction Type Description
214197  , p_source_5            IN VARCHAR2
214198 --Product Line Accounting Category Bridging Account
214199  , p_source_22            IN NUMBER
214200 --Applied to Application ID
214201  , p_source_79            IN NUMBER
214202 --Applied to Distribution Link Type
214203  , p_source_80            IN VARCHAR2
214204 --Applied to Entity Code
214205  , p_source_81            IN VARCHAR2
214206 --Applied To Purchase Document Identifier
214207  , p_source_83            IN NUMBER
214208 --DISTRIBUTION_IDENTIFIER
214209  , p_source_84            IN NUMBER
214210 --Distribution Type
214211  , p_source_85            IN VARCHAR2
214212  , p_source_85_meaning    IN VARCHAR2
214213 --PO Budget Account
214214  , p_source_86            IN NUMBER
214215 --Encumbrance Reversal Amount Entered
214216  , p_source_87            IN NUMBER
214217 --Entered Currency Code
214218  , p_source_88            IN VARCHAR2
214219 --Transaction Encumbrance Reversal Amount
214220  , p_source_89            IN NUMBER
214221 --Entered Amount
214222  , p_source_91            IN NUMBER
214223 --Currency Conversion Date
214224  , p_source_92            IN DATE
214225 --Currency Conversion Rate
214226  , p_source_93            IN NUMBER
214227 --Currency Conversion Type
214228  , p_source_94            IN VARCHAR2
214229 --Accounted Amount
214230  , p_source_95            IN NUMBER
214231 --Purchasing Encumbrance Type Identifier
214232  , p_source_96            IN NUMBER
214233 --Accounting Line Type
214234  , p_source_97            IN NUMBER
214235 --Costing Encumbrance Upgrade Option
214236  , p_source_100            IN VARCHAR2
214237 --TXN_PO_DISTRIBUTION_ID
214238  , p_source_101            IN NUMBER
214239 --Subinventory Type Indicator
214240  , p_source_110            IN VARCHAR2
214241  , p_source_110_meaning    IN VARCHAR2
214242 )
214243 IS
214244 
214245 l_component_type              VARCHAR2(80);
214246 l_component_code              VARCHAR2(30);
214247 l_component_type_code         VARCHAR2(1);
214248 l_component_appl_id           INTEGER;
214249 l_amb_context_code            VARCHAR2(30);
214250 l_entity_code                 VARCHAR2(30);
214251 l_event_class_code            VARCHAR2(30);
214252 l_ae_header_id                NUMBER;
214253 l_event_type_code             VARCHAR2(30);
214254 l_line_definition_code        VARCHAR2(30);
214255 l_line_definition_owner_code  VARCHAR2(1);
214256 --
214257 -- adr variables
214258 l_segment                     VARCHAR2(30);
214259 l_ccid                        NUMBER;
214260 l_adr_transaction_coa_id      NUMBER;
214261 l_adr_accounting_coa_id       NUMBER;
214262 l_adr_flexfield_segment_code  VARCHAR2(30);
214263 l_adr_flex_value_set_id       NUMBER;
214264 l_adr_value_type_code         VARCHAR2(30);
214265 l_adr_value_combination_id    NUMBER;
214266 l_adr_value_segment_code      VARCHAR2(30);
214267 
214268 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
214269 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
214270 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
214271 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
214272 
214273 -- 4262811 Variables ------------------------------------------------------------------------------------------
214274 l_entered_amt_idx             NUMBER;
214275 l_accted_amt_idx              NUMBER;
214276 l_acc_rev_flag                VARCHAR2(1);
214277 l_accrual_line_num            NUMBER;
214278 l_tmp_amt                     NUMBER;
214279 l_acc_rev_natural_side_code   VARCHAR2(1);
214280 
214281 l_num_entries                 NUMBER;
214282 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
214283 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
214284 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
214285 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
214286 l_recog_line_1                NUMBER;
214287 l_recog_line_2                NUMBER;
214288 
214289 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
214290 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
214291 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
214292 
214293 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
214294 
214295 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
214296 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
214297 
214298 ---------------------------------------------------------------------------------------------------------------
214299 
214300 
214301 --
214302 -- bulk performance
214303 --
214304 l_balance_type_code           VARCHAR2(1);
214305 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
214306 l_log_module                  VARCHAR2(240);
214307 
214308 --
214309 -- Upgrade strategy
214310 --
214311 l_actual_upg_option           VARCHAR2(1);
214312 l_enc_upg_option           VARCHAR2(1);
214313 
214314 --
214315 BEGIN
214316 --
214317 IF g_log_enabled THEN
214318       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_390';
214319 END IF;
214320 --
214321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
214322 
214323       trace
214324          (p_msg      => 'BEGIN of AcctLineType_390'
214325          ,p_level    => C_LEVEL_PROCEDURE
214326          ,p_module   => l_log_module);
214327 
214328 END IF;
214329 --
214330 l_component_type             := 'AMB_JLT';
214331 l_component_code             := 'PI_BRIDGING';
214332 l_component_type_code        := 'S';
214333 l_component_appl_id          :=  707;
214334 l_amb_context_code           := 'DEFAULT';
214335 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
214336 l_event_class_code           := 'PURCHASE_ORDER';
214337 l_event_type_code            := 'RET_RI_INV';
214338 l_line_definition_owner_code := 'S';
214339 l_line_definition_code       := 'PI_RET_RI_INV';
214340 --
214341 l_balance_type_code          := 'A';
214342 l_segment                     := NULL;
214343 l_ccid                        := NULL;
214344 l_adr_transaction_coa_id      := NULL;
214345 l_adr_accounting_coa_id       := NULL;
214346 l_adr_flexfield_segment_code  := NULL;
214347 l_adr_flex_value_set_id       := NULL;
214348 l_adr_value_type_code         := NULL;
214349 l_adr_value_combination_id    := NULL;
214350 l_adr_value_segment_code      := NULL;
214351 
214352 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
214353 l_bflow_class_code           := '';    -- 4219869 Business Flow
214354 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
214355 l_budgetary_control_flag     := 'N';
214356 
214357 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
214358 l_bflow_applied_to_amt       := NULL; -- 5132302
214359 l_entered_amt_idx            := NULL;          -- 4262811
214360 l_accted_amt_idx             := NULL;          -- 4262811
214361 l_acc_rev_flag               := NULL;          -- 4262811
214362 l_accrual_line_num           := NULL;          -- 4262811
214363 l_tmp_amt                    := NULL;          -- 4262811
214364 --
214365  
214366 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
214367     l_balance_type_code <> 'B' THEN
214368 IF (NVL(p_source_97,9E125) =  5 AND 
214369 p_source_110 IS NOT NULL AND 
214370 NVL(p_source_110,'
214371 ') =  'Y')
214372  THEN 
214373 
214374    --
214375    XLA_AE_LINES_PKG.SetNewLine;
214376 
214377    p_balance_type_code          := l_balance_type_code;
214378    -- set the flag so later we will know whether the gain loss line needs to be created
214379    
214380    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
214381      p_actual_flag :='A';
214382    END IF;
214383 
214384    --
214385    -- bulk performance
214386    --
214387    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
214388                                       p_header_num   => 0); -- 4262811
214389    --
214390    -- set accounting line options
214391    --
214392    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
214393            p_natural_side_code          => 'D'
214394          , p_gain_or_loss_flag          => 'N'
214395          , p_gl_transfer_mode_code      => 'S'
214396          , p_acct_entry_type_code       => 'A'
214397          , p_switch_side_flag           => 'Y'
214398          , p_merge_duplicate_code       => 'N'
214399          );
214400    --
214401    l_acc_rev_natural_side_code := 'C';  -- 4262811
214402    -- 
214403    --
214404    -- set accounting line type info
214405    --
214406    xla_ae_lines_pkg.SetAcctLineType
214407       (p_component_type             => l_component_type
214408       ,p_event_type_code            => l_event_type_code
214409       ,p_line_definition_owner_code => l_line_definition_owner_code
214410       ,p_line_definition_code       => l_line_definition_code
214411       ,p_accounting_line_code       => l_component_code
214412       ,p_accounting_line_type_code  => l_component_type_code
214413       ,p_accounting_line_appl_id    => l_component_appl_id
214414       ,p_amb_context_code           => l_amb_context_code
214415       ,p_entity_code                => l_entity_code
214416       ,p_event_class_code           => l_event_class_code);
214417    --
214418    -- set accounting class
214419    --
214420    xla_ae_lines_pkg.SetAcctClass(
214421            p_accounting_class_code  => 'BRIDGING'
214422          , p_ae_header_id           => l_ae_header_id
214423          );
214424 
214425    --
214426    -- set rounding class
214427    --
214428    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
214429                       'BRIDGING';
214430 
214431    --
214432    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
214433    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
214434    --
214435    -- bulk performance
214436    --
214437    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
214438 
214439    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
214440       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
214441 
214442    -- 4955764
214443    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
214444       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
214445 
214446    -- 4458381 Public Sector Enh
214447    
214448    --
214449    -- set accounting attributes for the line type
214450    --
214451    l_entered_amt_idx := 17;
214452    l_accted_amt_idx  := 22;
214453    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
214454    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
214455    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
214456    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
214457    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
214458    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
214459    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
214460    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
214461    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
214462    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
214463    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
214464    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
214465    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
214466    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
214467    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
214468    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
214469    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
214470    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
214471    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
214472    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
214473    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
214474    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
214475    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
214476    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
214477    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
214478    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
214479    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
214480    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
214481    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
214482    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
214483    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
214484    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
214485    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
214486    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
214487    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
214488    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
214489    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
214490    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
214491    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
214492    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
214493    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
214494    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
214495    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
214496    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
214497    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
214498    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
214499    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
214500    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
214501    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
214502 
214503    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
214504    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
214505 
214506    ---------------------------------------------------------------------------------------------------------------
214507    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
214508    ---------------------------------------------------------------------------------------------------------------
214509    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
214510 
214511    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
214512    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
214513 
214514    IF xla_accounting_cache_pkg.GetValueChar
214515          (p_source_code         => 'LEDGER_CATEGORY_CODE'
214516          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
214517    AND l_bflow_method_code = 'PRIOR_ENTRY'
214518 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
214519    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
214520          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
214521        )
214522    THEN
214523          xla_ae_lines_pkg.BflowUpgEntry
214524            (p_business_method_code    => l_bflow_method_code
214525            ,p_business_class_code     => l_bflow_class_code
214526            ,p_balance_type            => l_balance_type_code);
214527    ELSE
214528       NULL;
214529 -- No business flow processing for business flow method of NONE.
214530    END IF;
214531 
214532    --
214533    -- call analytical criteria
214534    --
214535    
214536    --
214537    -- call description
214538    --
214539    
214540 xla_ae_lines_pkg.SetLineDescription(
214541    p_ae_header_id => l_ae_header_id
214542   ,p_description  => Description_1 (
214543      p_application_id         => p_application_id
214544    , p_ae_header_id           => l_ae_header_id 
214545 , p_source_1 => p_source_1
214546 , p_source_2 => p_source_2
214547 , p_source_3 => p_source_3
214548 , p_source_4 => p_source_4
214549 , p_source_5 => p_source_5
214550    )
214551 );
214552 
214553 
214554    --
214555    -- call ADRs
214556    -- Bug 4922099
214557    --
214558    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
214559         (NVL(l_actual_upg_option, 'N') = 'O') OR
214560         (NVL(l_enc_upg_option, 'N') = 'O')
214561       )
214562    THEN
214563    NULL;
214564    --
214565    --
214566    
214567   l_ccid := AcctDerRule_11(
214568            p_application_id           => p_application_id
214569          , p_ae_header_id             => l_ae_header_id 
214570 , p_source_22 => p_source_22
214571          , x_transaction_coa_id       => l_adr_transaction_coa_id
214572          , x_accounting_coa_id        => l_adr_accounting_coa_id
214573          , x_value_type_code          => l_adr_value_type_code
214574          , p_side                     => 'NA'
214575    );
214576 
214577    xla_ae_lines_pkg.set_ccid(
214578     p_code_combination_id          => l_ccid
214579   , p_value_type_code              => l_adr_value_type_code
214580   , p_transaction_coa_id           => l_adr_transaction_coa_id
214581   , p_accounting_coa_id            => l_adr_accounting_coa_id
214582   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
214583   , p_adr_type_code                => 'S'
214584   , p_component_type               => l_component_type
214585   , p_component_code               => l_component_code
214586   , p_component_type_code          => l_component_type_code
214587   , p_component_appl_id            => l_component_appl_id
214588   , p_amb_context_code             => l_amb_context_code
214589   , p_side                         => 'NA'
214590   );
214591 
214592 
214593    --
214594    --
214595    END IF;
214596    --
214597    -- Bug 4922099
214598    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
214599           (NVL(l_enc_upg_option, 'N') = 'O')
214600         ) AND
214601         (l_bflow_method_code = 'PRIOR_ENTRY')
214602       )
214603    THEN
214604       IF
214605       --
214606       1 = 2
214607       --
214608       THEN
214609       xla_accounting_err_pkg.build_message
214610                                     (p_appli_s_name            => 'XLA'
214611                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
214612                                     ,p_token_1                 => 'LINE_NUMBER'
214613                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
214614                                     ,p_token_2                 => 'LINE_TYPE_NAME'
214615                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
214616                                                                              l_component_type
214617                                                                             ,l_component_code
214618                                                                             ,l_component_type_code
214619                                                                             ,l_component_appl_id
214620                                                                             ,l_amb_context_code
214621                                                                             ,l_entity_code
214622                                                                             ,l_event_class_code
214623                                                                            )
214624                                     ,p_token_3                 => 'OWNER'
214625                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
214626                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
214627                                                                           ,p_lookup_code    => l_component_type_code
214628                                                                          )
214629                                     ,p_token_4                 => 'PRODUCT_NAME'
214630                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
214631                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
214632                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
214633                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
214634                                     ,p_ae_header_id            =>  NULL
214635                                        );
214636 
214637         IF (C_LEVEL_ERROR>= g_log_level) THEN
214638                  trace
214639                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
214640                       ,p_level    => C_LEVEL_ERROR
214641                       ,p_module   => l_log_module);
214642         END IF;
214643       END IF;
214644    END IF;
214645    --
214646    --
214647    ------------------------------------------------------------------------------------------------
214648    -- 4219869 Business Flow
214649    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
214650    -- Prior Entry.  Currently, the following code is always generated.
214651    ------------------------------------------------------------------------------------------------
214652    XLA_AE_LINES_PKG.ValidateCurrentLine;
214653 
214654    ------------------------------------------------------------------------------------
214655    -- 4219869 Business Flow
214656    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
214657    ------------------------------------------------------------------------------------
214658    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
214659 
214660    ----------------------------------------------------------------------------------
214661    -- 4219869 Business Flow
214662    -- Update journal entry status -- Need to generate this within IF <condition>
214663    ----------------------------------------------------------------------------------
214664    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
214665          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
214666          ,p_balance_type_code => l_balance_type_code
214667          );
214668 
214669    -------------------------------------------------------------------------------------------
214670    -- 4262811 - Generate the Accrual Reversal lines
214671    -------------------------------------------------------------------------------------------
214672    BEGIN
214673       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
214674                               (g_array_event(p_event_id).array_value_num('header_index'));
214675       IF l_acc_rev_flag IS NULL THEN
214676          l_acc_rev_flag := 'N';
214677       END IF;
214678    EXCEPTION
214679       WHEN OTHERS THEN
214680          l_acc_rev_flag := 'N';
214681    END;
214682    --
214683    IF (l_acc_rev_flag = 'Y') THEN
214684 
214685        -- 4645092  ------------------------------------------------------------------------------
214686        -- To allow MPA report to determine if it should generate report process
214687        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
214688        ------------------------------------------------------------------------------------------
214689 
214690        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
214691        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
214692    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
214693    -- call ADRs
214694    -- Bug 4922099
214695    --
214696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
214697         (NVL(l_actual_upg_option, 'N') = 'O') OR
214698         (NVL(l_enc_upg_option, 'N') = 'O')
214699       )
214700    THEN
214701    NULL;
214702    --
214703    --
214704    
214705   l_ccid := AcctDerRule_11(
214706            p_application_id           => p_application_id
214707          , p_ae_header_id             => l_ae_header_id 
214708 , p_source_22 => p_source_22
214709          , x_transaction_coa_id       => l_adr_transaction_coa_id
214710          , x_accounting_coa_id        => l_adr_accounting_coa_id
214711          , x_value_type_code          => l_adr_value_type_code
214712          , p_side                     => 'NA'
214713    );
214714 
214715    xla_ae_lines_pkg.set_ccid(
214716     p_code_combination_id          => l_ccid
214717   , p_value_type_code              => l_adr_value_type_code
214718   , p_transaction_coa_id           => l_adr_transaction_coa_id
214719   , p_accounting_coa_id            => l_adr_accounting_coa_id
214720   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
214721   , p_adr_type_code                => 'S'
214722   , p_component_type               => l_component_type
214723   , p_component_code               => l_component_code
214724   , p_component_type_code          => l_component_type_code
214725   , p_component_appl_id            => l_component_appl_id
214726   , p_amb_context_code             => l_amb_context_code
214727   , p_side                         => 'NA'
214728   );
214729 
214730 
214731    --
214732    --
214733    END IF;
214734 
214735        --
214736        -- Update the line information that should be overwritten
214737        --
214738        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
214739                                          p_header_num   => 1);
214740        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
214741 
214742        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
214743 
214744        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
214745           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
214746        END IF;
214747 
214748       --
214749       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
214750       --
214751       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
214752           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
214753       ELSE
214754           ---------------------------------------------------------------------------------------------------
214755           -- 4262811a Switch Sign
214756           ---------------------------------------------------------------------------------------------------
214757           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
214758           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
214759                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
214760           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
214761                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
214762           -- 5132302
214763           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
214764                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
214765 
214766       END IF;
214767 
214768       -- 4955764
214769       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
214770       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
214771 
214772 
214773       XLA_AE_LINES_PKG.ValidateCurrentLine;
214774       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
214775 
214776       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
214777                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
214778                ,p_balance_type_code => l_balance_type_code);
214779 
214780    END IF;
214781 
214782    -----------------------------------------------------------------------------------------
214783    -- 4262811 Multiperiod Accounting
214784    -----------------------------------------------------------------------------------------
214785      -- No MPA option is assigned.
214786 
214787 
214788 END IF;
214789 END IF;
214790 --
214791 
214792 --
214793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
214794    trace
214795       (p_msg      => 'END of AcctLineType_390'
214796       ,p_level    => C_LEVEL_PROCEDURE
214797       ,p_module   => l_log_module);
214798 END IF;
214799 --
214800 EXCEPTION
214801   WHEN xla_exceptions_pkg.application_exception THEN
214802       RAISE;
214803   WHEN OTHERS THEN
214804        xla_exceptions_pkg.raise_message
214805            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_390');
214806 END AcctLineType_390;
214807 --
214808 
214809 ---------------------------------------
214810 --
214811 -- PRIVATE FUNCTION
214812 --         AcctLineType_391
214813 --
214814 ---------------------------------------
214815 PROCEDURE AcctLineType_391 (
214816   p_application_id        IN NUMBER
214817  ,p_event_id              IN NUMBER
214818  ,p_calculate_acctd_flag  IN VARCHAR2
214819  ,p_calculate_g_l_flag    IN VARCHAR2
214820  ,p_actual_flag           IN OUT VARCHAR2
214821  ,p_balance_type_code     OUT VARCHAR2
214822  ,p_gain_or_loss_ref      OUT VARCHAR2
214823  
214824 --TRANSACTION_ID
214825  , p_source_1            IN NUMBER
214826 --Item Concatenated Segments
214827  , p_source_2            IN VARCHAR2
214828 --Transaction Quantity
214829  , p_source_3            IN NUMBER
214830 --Transaction Unit of Measure Code
214831  , p_source_4            IN VARCHAR2
214832 --Inventory Transaction Type Description
214833  , p_source_5            IN VARCHAR2
214834 --Product Line Accounting Category Bridging Account
214835  , p_source_22            IN NUMBER
214836 --DISTRIBUTION_IDENTIFIER
214837  , p_source_84            IN NUMBER
214838 --Distribution Type
214839  , p_source_85            IN VARCHAR2
214840  , p_source_85_meaning    IN VARCHAR2
214841 --Entered Currency Code
214842  , p_source_88            IN VARCHAR2
214843 --Entered Amount
214844  , p_source_91            IN NUMBER
214845 --Currency Conversion Date
214846  , p_source_92            IN DATE
214847 --Currency Conversion Rate
214848  , p_source_93            IN NUMBER
214849 --Currency Conversion Type
214850  , p_source_94            IN VARCHAR2
214851 --Accounted Amount
214852  , p_source_95            IN NUMBER
214853 --Accounting Line Type
214854  , p_source_97            IN NUMBER
214855 )
214856 IS
214857 
214858 l_component_type              VARCHAR2(80);
214859 l_component_code              VARCHAR2(30);
214860 l_component_type_code         VARCHAR2(1);
214861 l_component_appl_id           INTEGER;
214862 l_amb_context_code            VARCHAR2(30);
214863 l_entity_code                 VARCHAR2(30);
214864 l_event_class_code            VARCHAR2(30);
214865 l_ae_header_id                NUMBER;
214866 l_event_type_code             VARCHAR2(30);
214867 l_line_definition_code        VARCHAR2(30);
214868 l_line_definition_owner_code  VARCHAR2(1);
214869 --
214870 -- adr variables
214871 l_segment                     VARCHAR2(30);
214872 l_ccid                        NUMBER;
214873 l_adr_transaction_coa_id      NUMBER;
214874 l_adr_accounting_coa_id       NUMBER;
214875 l_adr_flexfield_segment_code  VARCHAR2(30);
214876 l_adr_flex_value_set_id       NUMBER;
214877 l_adr_value_type_code         VARCHAR2(30);
214878 l_adr_value_combination_id    NUMBER;
214879 l_adr_value_segment_code      VARCHAR2(30);
214880 
214881 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
214882 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
214883 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
214884 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
214885 
214886 -- 4262811 Variables ------------------------------------------------------------------------------------------
214887 l_entered_amt_idx             NUMBER;
214888 l_accted_amt_idx              NUMBER;
214889 l_acc_rev_flag                VARCHAR2(1);
214890 l_accrual_line_num            NUMBER;
214891 l_tmp_amt                     NUMBER;
214892 l_acc_rev_natural_side_code   VARCHAR2(1);
214893 
214894 l_num_entries                 NUMBER;
214895 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
214896 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
214897 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
214898 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
214899 l_recog_line_1                NUMBER;
214900 l_recog_line_2                NUMBER;
214901 
214902 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
214903 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
214904 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
214905 
214906 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
214907 
214908 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
214909 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
214910 
214911 ---------------------------------------------------------------------------------------------------------------
214912 
214913 
214914 --
214915 -- bulk performance
214916 --
214917 l_balance_type_code           VARCHAR2(1);
214918 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
214919 l_log_module                  VARCHAR2(240);
214920 
214921 --
214922 -- Upgrade strategy
214923 --
214924 l_actual_upg_option           VARCHAR2(1);
214925 l_enc_upg_option           VARCHAR2(1);
214926 
214927 --
214928 BEGIN
214929 --
214930 IF g_log_enabled THEN
214931       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_391';
214932 END IF;
214933 --
214934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
214935 
214936       trace
214937          (p_msg      => 'BEGIN of AcctLineType_391'
214938          ,p_level    => C_LEVEL_PROCEDURE
214939          ,p_module   => l_log_module);
214940 
214941 END IF;
214942 --
214943 l_component_type             := 'AMB_JLT';
214944 l_component_code             := 'PI_BRIDGING';
214945 l_component_type_code        := 'S';
214946 l_component_appl_id          :=  707;
214947 l_amb_context_code           := 'DEFAULT';
214948 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
214949 l_event_class_code           := 'USER_DEFINE';
214950 l_event_type_code            := 'UDIR_INTERORG_RCPT';
214951 l_line_definition_owner_code := 'S';
214952 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
214953 --
214954 l_balance_type_code          := 'A';
214955 l_segment                     := NULL;
214956 l_ccid                        := NULL;
214957 l_adr_transaction_coa_id      := NULL;
214958 l_adr_accounting_coa_id       := NULL;
214959 l_adr_flexfield_segment_code  := NULL;
214960 l_adr_flex_value_set_id       := NULL;
214961 l_adr_value_type_code         := NULL;
214962 l_adr_value_combination_id    := NULL;
214963 l_adr_value_segment_code      := NULL;
214964 
214965 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
214966 l_bflow_class_code           := '';    -- 4219869 Business Flow
214967 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
214968 l_budgetary_control_flag     := 'N';
214969 
214970 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
214971 l_bflow_applied_to_amt       := NULL; -- 5132302
214972 l_entered_amt_idx            := NULL;          -- 4262811
214973 l_accted_amt_idx             := NULL;          -- 4262811
214974 l_acc_rev_flag               := NULL;          -- 4262811
214975 l_accrual_line_num           := NULL;          -- 4262811
214976 l_tmp_amt                    := NULL;          -- 4262811
214977 --
214978  
214979 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
214980     l_balance_type_code <> 'B' THEN
214981 IF NVL(p_source_97,9E125) =  1
214982  THEN 
214983 
214984    --
214985    XLA_AE_LINES_PKG.SetNewLine;
214986 
214987    p_balance_type_code          := l_balance_type_code;
214988    -- set the flag so later we will know whether the gain loss line needs to be created
214989    
214990    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
214991      p_actual_flag :='A';
214992    END IF;
214993 
214994    --
214995    -- bulk performance
214996    --
214997    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
214998                                       p_header_num   => 0); -- 4262811
214999    --
215000    -- set accounting line options
215001    --
215002    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
215003            p_natural_side_code          => 'C'
215004          , p_gain_or_loss_flag          => 'N'
215005          , p_gl_transfer_mode_code      => 'S'
215006          , p_acct_entry_type_code       => 'A'
215007          , p_switch_side_flag           => 'Y'
215008          , p_merge_duplicate_code       => 'N'
215009          );
215010    --
215011    l_acc_rev_natural_side_code := 'D';  -- 4262811
215012    -- 
215013    --
215014    -- set accounting line type info
215015    --
215016    xla_ae_lines_pkg.SetAcctLineType
215017       (p_component_type             => l_component_type
215018       ,p_event_type_code            => l_event_type_code
215019       ,p_line_definition_owner_code => l_line_definition_owner_code
215020       ,p_line_definition_code       => l_line_definition_code
215021       ,p_accounting_line_code       => l_component_code
215022       ,p_accounting_line_type_code  => l_component_type_code
215023       ,p_accounting_line_appl_id    => l_component_appl_id
215024       ,p_amb_context_code           => l_amb_context_code
215025       ,p_entity_code                => l_entity_code
215026       ,p_event_class_code           => l_event_class_code);
215027    --
215028    -- set accounting class
215029    --
215030    xla_ae_lines_pkg.SetAcctClass(
215031            p_accounting_class_code  => 'BRIDGING'
215032          , p_ae_header_id           => l_ae_header_id
215033          );
215034 
215035    --
215036    -- set rounding class
215037    --
215038    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
215039                       'BRIDGING';
215040 
215041    --
215042    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
215043    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
215044    --
215045    -- bulk performance
215046    --
215047    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
215048 
215049    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
215050       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
215051 
215052    -- 4955764
215053    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
215054       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
215055 
215056    -- 4458381 Public Sector Enh
215057    
215058    --
215059    -- set accounting attributes for the line type
215060    --
215061    l_entered_amt_idx := 3;
215062    l_accted_amt_idx  := 8;
215063    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
215064    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
215065    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
215066    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
215067    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
215068    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
215069    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
215070    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
215071    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
215072    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
215073    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
215074    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
215075    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
215076    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
215077    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
215078    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
215079    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
215080 
215081    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
215082    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
215083 
215084    ---------------------------------------------------------------------------------------------------------------
215085    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
215086    ---------------------------------------------------------------------------------------------------------------
215087    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
215088 
215089    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
215090    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
215091 
215092    IF xla_accounting_cache_pkg.GetValueChar
215093          (p_source_code         => 'LEDGER_CATEGORY_CODE'
215094          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
215095    AND l_bflow_method_code = 'PRIOR_ENTRY'
215096 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
215097    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
215098          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
215099        )
215100    THEN
215101          xla_ae_lines_pkg.BflowUpgEntry
215102            (p_business_method_code    => l_bflow_method_code
215103            ,p_business_class_code     => l_bflow_class_code
215104            ,p_balance_type            => l_balance_type_code);
215105    ELSE
215106       NULL;
215107 -- No business flow processing for business flow method of NONE.
215108    END IF;
215109 
215110    --
215111    -- call analytical criteria
215112    --
215113    
215114    --
215115    -- call description
215116    --
215117    
215118 xla_ae_lines_pkg.SetLineDescription(
215119    p_ae_header_id => l_ae_header_id
215120   ,p_description  => Description_1 (
215121      p_application_id         => p_application_id
215122    , p_ae_header_id           => l_ae_header_id 
215123 , p_source_1 => p_source_1
215124 , p_source_2 => p_source_2
215125 , p_source_3 => p_source_3
215126 , p_source_4 => p_source_4
215127 , p_source_5 => p_source_5
215128    )
215129 );
215130 
215131 
215132    --
215133    -- call ADRs
215134    -- Bug 4922099
215135    --
215136    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
215137         (NVL(l_actual_upg_option, 'N') = 'O') OR
215138         (NVL(l_enc_upg_option, 'N') = 'O')
215139       )
215140    THEN
215141    NULL;
215142    --
215143    --
215144    
215145   l_ccid := AcctDerRule_11(
215146            p_application_id           => p_application_id
215147          , p_ae_header_id             => l_ae_header_id 
215148 , p_source_22 => p_source_22
215149          , x_transaction_coa_id       => l_adr_transaction_coa_id
215150          , x_accounting_coa_id        => l_adr_accounting_coa_id
215151          , x_value_type_code          => l_adr_value_type_code
215152          , p_side                     => 'NA'
215153    );
215154 
215155    xla_ae_lines_pkg.set_ccid(
215156     p_code_combination_id          => l_ccid
215157   , p_value_type_code              => l_adr_value_type_code
215158   , p_transaction_coa_id           => l_adr_transaction_coa_id
215159   , p_accounting_coa_id            => l_adr_accounting_coa_id
215160   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
215161   , p_adr_type_code                => 'S'
215162   , p_component_type               => l_component_type
215163   , p_component_code               => l_component_code
215164   , p_component_type_code          => l_component_type_code
215165   , p_component_appl_id            => l_component_appl_id
215166   , p_amb_context_code             => l_amb_context_code
215167   , p_side                         => 'NA'
215168   );
215169 
215170 
215171    --
215172    --
215173    END IF;
215174    --
215175    -- Bug 4922099
215176    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
215177           (NVL(l_enc_upg_option, 'N') = 'O')
215178         ) AND
215179         (l_bflow_method_code = 'PRIOR_ENTRY')
215180       )
215181    THEN
215182       IF
215183       --
215184       1 = 2
215185       --
215186       THEN
215187       xla_accounting_err_pkg.build_message
215188                                     (p_appli_s_name            => 'XLA'
215189                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
215190                                     ,p_token_1                 => 'LINE_NUMBER'
215191                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
215192                                     ,p_token_2                 => 'LINE_TYPE_NAME'
215193                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
215194                                                                              l_component_type
215195                                                                             ,l_component_code
215196                                                                             ,l_component_type_code
215197                                                                             ,l_component_appl_id
215198                                                                             ,l_amb_context_code
215199                                                                             ,l_entity_code
215200                                                                             ,l_event_class_code
215201                                                                            )
215202                                     ,p_token_3                 => 'OWNER'
215203                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
215204                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
215205                                                                           ,p_lookup_code    => l_component_type_code
215206                                                                          )
215207                                     ,p_token_4                 => 'PRODUCT_NAME'
215208                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
215209                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
215210                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
215211                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
215212                                     ,p_ae_header_id            =>  NULL
215213                                        );
215214 
215215         IF (C_LEVEL_ERROR>= g_log_level) THEN
215216                  trace
215217                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
215218                       ,p_level    => C_LEVEL_ERROR
215219                       ,p_module   => l_log_module);
215220         END IF;
215221       END IF;
215222    END IF;
215223    --
215224    --
215225    ------------------------------------------------------------------------------------------------
215226    -- 4219869 Business Flow
215227    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
215228    -- Prior Entry.  Currently, the following code is always generated.
215229    ------------------------------------------------------------------------------------------------
215230    XLA_AE_LINES_PKG.ValidateCurrentLine;
215231 
215232    ------------------------------------------------------------------------------------
215233    -- 4219869 Business Flow
215234    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
215235    ------------------------------------------------------------------------------------
215236    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
215237 
215238    ----------------------------------------------------------------------------------
215239    -- 4219869 Business Flow
215240    -- Update journal entry status -- Need to generate this within IF <condition>
215241    ----------------------------------------------------------------------------------
215242    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
215243          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
215244          ,p_balance_type_code => l_balance_type_code
215245          );
215246 
215247    -------------------------------------------------------------------------------------------
215248    -- 4262811 - Generate the Accrual Reversal lines
215249    -------------------------------------------------------------------------------------------
215250    BEGIN
215251       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
215252                               (g_array_event(p_event_id).array_value_num('header_index'));
215253       IF l_acc_rev_flag IS NULL THEN
215254          l_acc_rev_flag := 'N';
215255       END IF;
215256    EXCEPTION
215257       WHEN OTHERS THEN
215258          l_acc_rev_flag := 'N';
215259    END;
215260    --
215261    IF (l_acc_rev_flag = 'Y') THEN
215262 
215263        -- 4645092  ------------------------------------------------------------------------------
215264        -- To allow MPA report to determine if it should generate report process
215265        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
215266        ------------------------------------------------------------------------------------------
215267 
215268        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
215269        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
215270    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
215271    -- call ADRs
215272    -- Bug 4922099
215273    --
215274    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
215275         (NVL(l_actual_upg_option, 'N') = 'O') OR
215276         (NVL(l_enc_upg_option, 'N') = 'O')
215277       )
215278    THEN
215279    NULL;
215280    --
215281    --
215282    
215283   l_ccid := AcctDerRule_11(
215284            p_application_id           => p_application_id
215285          , p_ae_header_id             => l_ae_header_id 
215286 , p_source_22 => p_source_22
215287          , x_transaction_coa_id       => l_adr_transaction_coa_id
215288          , x_accounting_coa_id        => l_adr_accounting_coa_id
215289          , x_value_type_code          => l_adr_value_type_code
215290          , p_side                     => 'NA'
215291    );
215292 
215293    xla_ae_lines_pkg.set_ccid(
215294     p_code_combination_id          => l_ccid
215295   , p_value_type_code              => l_adr_value_type_code
215296   , p_transaction_coa_id           => l_adr_transaction_coa_id
215297   , p_accounting_coa_id            => l_adr_accounting_coa_id
215298   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
215299   , p_adr_type_code                => 'S'
215300   , p_component_type               => l_component_type
215301   , p_component_code               => l_component_code
215302   , p_component_type_code          => l_component_type_code
215303   , p_component_appl_id            => l_component_appl_id
215304   , p_amb_context_code             => l_amb_context_code
215305   , p_side                         => 'NA'
215306   );
215307 
215308 
215309    --
215310    --
215311    END IF;
215312 
215313        --
215314        -- Update the line information that should be overwritten
215315        --
215316        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
215317                                          p_header_num   => 1);
215318        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
215319 
215320        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
215321 
215322        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
215323           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
215324        END IF;
215325 
215326       --
215327       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
215328       --
215329       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
215330           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
215331       ELSE
215332           ---------------------------------------------------------------------------------------------------
215333           -- 4262811a Switch Sign
215334           ---------------------------------------------------------------------------------------------------
215335           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
215336           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
215337                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
215338           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
215339                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
215340           -- 5132302
215341           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
215342                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
215343 
215344       END IF;
215345 
215346       -- 4955764
215347       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
215348       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
215349 
215350 
215351       XLA_AE_LINES_PKG.ValidateCurrentLine;
215352       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
215353 
215354       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
215355                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
215356                ,p_balance_type_code => l_balance_type_code);
215357 
215358    END IF;
215359 
215360    -----------------------------------------------------------------------------------------
215361    -- 4262811 Multiperiod Accounting
215362    -----------------------------------------------------------------------------------------
215363      -- No MPA option is assigned.
215364 
215365 
215366 END IF;
215367 END IF;
215368 --
215369 
215370 --
215371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
215372    trace
215373       (p_msg      => 'END of AcctLineType_391'
215374       ,p_level    => C_LEVEL_PROCEDURE
215375       ,p_module   => l_log_module);
215376 END IF;
215377 --
215378 EXCEPTION
215379   WHEN xla_exceptions_pkg.application_exception THEN
215380       RAISE;
215381   WHEN OTHERS THEN
215382        xla_exceptions_pkg.raise_message
215383            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_391');
215384 END AcctLineType_391;
215385 --
215386 
215387 ---------------------------------------
215388 --
215389 -- PRIVATE FUNCTION
215390 --         AcctLineType_392
215391 --
215392 ---------------------------------------
215393 PROCEDURE AcctLineType_392 (
215394   p_application_id        IN NUMBER
215395  ,p_event_id              IN NUMBER
215396  ,p_calculate_acctd_flag  IN VARCHAR2
215397  ,p_calculate_g_l_flag    IN VARCHAR2
215398  ,p_actual_flag           IN OUT VARCHAR2
215399  ,p_balance_type_code     OUT VARCHAR2
215400  ,p_gain_or_loss_ref      OUT VARCHAR2
215401  
215402 --TRANSACTION_ID
215403  , p_source_1            IN NUMBER
215404 --Item Concatenated Segments
215405  , p_source_2            IN VARCHAR2
215406 --Transaction Quantity
215407  , p_source_3            IN NUMBER
215408 --Transaction Unit of Measure Code
215409  , p_source_4            IN VARCHAR2
215410 --Inventory Transaction Type Description
215411  , p_source_5            IN VARCHAR2
215412 --Product Line Accounting Category Bridging Account
215413  , p_source_22            IN NUMBER
215414 --DISTRIBUTION_IDENTIFIER
215415  , p_source_84            IN NUMBER
215416 --Distribution Type
215417  , p_source_85            IN VARCHAR2
215418  , p_source_85_meaning    IN VARCHAR2
215419 --Entered Currency Code
215420  , p_source_88            IN VARCHAR2
215421 --Entered Amount
215422  , p_source_91            IN NUMBER
215423 --Currency Conversion Date
215424  , p_source_92            IN DATE
215425 --Currency Conversion Rate
215426  , p_source_93            IN NUMBER
215427 --Currency Conversion Type
215428  , p_source_94            IN VARCHAR2
215429 --Accounted Amount
215430  , p_source_95            IN NUMBER
215431 --Accounting Line Type
215432  , p_source_97            IN NUMBER
215433 --Subinventory Type Indicator
215434  , p_source_110            IN VARCHAR2
215435  , p_source_110_meaning    IN VARCHAR2
215436 )
215437 IS
215438 
215439 l_component_type              VARCHAR2(80);
215440 l_component_code              VARCHAR2(30);
215441 l_component_type_code         VARCHAR2(1);
215442 l_component_appl_id           INTEGER;
215443 l_amb_context_code            VARCHAR2(30);
215444 l_entity_code                 VARCHAR2(30);
215445 l_event_class_code            VARCHAR2(30);
215446 l_ae_header_id                NUMBER;
215447 l_event_type_code             VARCHAR2(30);
215448 l_line_definition_code        VARCHAR2(30);
215449 l_line_definition_owner_code  VARCHAR2(1);
215450 --
215451 -- adr variables
215452 l_segment                     VARCHAR2(30);
215453 l_ccid                        NUMBER;
215454 l_adr_transaction_coa_id      NUMBER;
215455 l_adr_accounting_coa_id       NUMBER;
215456 l_adr_flexfield_segment_code  VARCHAR2(30);
215457 l_adr_flex_value_set_id       NUMBER;
215458 l_adr_value_type_code         VARCHAR2(30);
215459 l_adr_value_combination_id    NUMBER;
215460 l_adr_value_segment_code      VARCHAR2(30);
215461 
215462 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
215463 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
215464 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
215465 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
215466 
215467 -- 4262811 Variables ------------------------------------------------------------------------------------------
215468 l_entered_amt_idx             NUMBER;
215469 l_accted_amt_idx              NUMBER;
215470 l_acc_rev_flag                VARCHAR2(1);
215471 l_accrual_line_num            NUMBER;
215472 l_tmp_amt                     NUMBER;
215473 l_acc_rev_natural_side_code   VARCHAR2(1);
215474 
215475 l_num_entries                 NUMBER;
215476 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
215477 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
215478 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
215479 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
215480 l_recog_line_1                NUMBER;
215481 l_recog_line_2                NUMBER;
215482 
215483 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
215484 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
215485 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
215486 
215487 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
215488 
215489 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
215490 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
215491 
215492 ---------------------------------------------------------------------------------------------------------------
215493 
215494 
215495 --
215496 -- bulk performance
215497 --
215498 l_balance_type_code           VARCHAR2(1);
215499 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
215500 l_log_module                  VARCHAR2(240);
215501 
215502 --
215503 -- Upgrade strategy
215504 --
215505 l_actual_upg_option           VARCHAR2(1);
215506 l_enc_upg_option           VARCHAR2(1);
215507 
215508 --
215509 BEGIN
215510 --
215511 IF g_log_enabled THEN
215512       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_392';
215513 END IF;
215514 --
215515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
215516 
215517       trace
215518          (p_msg      => 'BEGIN of AcctLineType_392'
215519          ,p_level    => C_LEVEL_PROCEDURE
215520          ,p_module   => l_log_module);
215521 
215522 END IF;
215523 --
215524 l_component_type             := 'AMB_JLT';
215525 l_component_code             := 'PI_BRIDGING';
215526 l_component_type_code        := 'S';
215527 l_component_appl_id          :=  707;
215528 l_amb_context_code           := 'DEFAULT';
215529 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
215530 l_event_class_code           := 'WIP_MTL';
215531 l_event_type_code            := 'WIP_COMP_RETURN';
215532 l_line_definition_owner_code := 'S';
215533 l_line_definition_code       := 'PI_WIP_COMP_RETURN';
215534 --
215535 l_balance_type_code          := 'A';
215536 l_segment                     := NULL;
215537 l_ccid                        := NULL;
215538 l_adr_transaction_coa_id      := NULL;
215539 l_adr_accounting_coa_id       := NULL;
215540 l_adr_flexfield_segment_code  := NULL;
215541 l_adr_flex_value_set_id       := NULL;
215542 l_adr_value_type_code         := NULL;
215543 l_adr_value_combination_id    := NULL;
215544 l_adr_value_segment_code      := NULL;
215545 
215546 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
215547 l_bflow_class_code           := '';    -- 4219869 Business Flow
215548 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
215549 l_budgetary_control_flag     := 'N';
215550 
215551 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
215552 l_bflow_applied_to_amt       := NULL; -- 5132302
215553 l_entered_amt_idx            := NULL;          -- 4262811
215554 l_accted_amt_idx             := NULL;          -- 4262811
215555 l_acc_rev_flag               := NULL;          -- 4262811
215556 l_accrual_line_num           := NULL;          -- 4262811
215557 l_tmp_amt                    := NULL;          -- 4262811
215558 --
215559  
215560 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
215561     l_balance_type_code <> 'B' THEN
215562 IF (NVL(p_source_97,9E125) =  1 OR 
215563 NVL(p_source_97,9E125) =  2 OR 
215564 NVL(p_source_97,9E125) =  3) AND 
215565 NVL(p_source_110,'
215566 ') =  'Y'
215567  THEN 
215568 
215569    --
215570    XLA_AE_LINES_PKG.SetNewLine;
215571 
215572    p_balance_type_code          := l_balance_type_code;
215573    -- set the flag so later we will know whether the gain loss line needs to be created
215574    
215575    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
215576      p_actual_flag :='A';
215577    END IF;
215578 
215579    --
215580    -- bulk performance
215581    --
215582    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
215583                                       p_header_num   => 0); -- 4262811
215584    --
215585    -- set accounting line options
215586    --
215587    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
215588            p_natural_side_code          => 'C'
215589          , p_gain_or_loss_flag          => 'N'
215590          , p_gl_transfer_mode_code      => 'S'
215591          , p_acct_entry_type_code       => 'A'
215592          , p_switch_side_flag           => 'Y'
215593          , p_merge_duplicate_code       => 'N'
215594          );
215595    --
215596    l_acc_rev_natural_side_code := 'D';  -- 4262811
215597    -- 
215598    --
215599    -- set accounting line type info
215600    --
215601    xla_ae_lines_pkg.SetAcctLineType
215602       (p_component_type             => l_component_type
215603       ,p_event_type_code            => l_event_type_code
215604       ,p_line_definition_owner_code => l_line_definition_owner_code
215605       ,p_line_definition_code       => l_line_definition_code
215606       ,p_accounting_line_code       => l_component_code
215607       ,p_accounting_line_type_code  => l_component_type_code
215608       ,p_accounting_line_appl_id    => l_component_appl_id
215609       ,p_amb_context_code           => l_amb_context_code
215610       ,p_entity_code                => l_entity_code
215611       ,p_event_class_code           => l_event_class_code);
215612    --
215613    -- set accounting class
215614    --
215615    xla_ae_lines_pkg.SetAcctClass(
215616            p_accounting_class_code  => 'BRIDGING'
215617          , p_ae_header_id           => l_ae_header_id
215618          );
215619 
215620    --
215621    -- set rounding class
215622    --
215623    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
215624                       'BRIDGING';
215625 
215626    --
215627    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
215628    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
215629    --
215630    -- bulk performance
215631    --
215632    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
215633 
215634    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
215635       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
215636 
215637    -- 4955764
215638    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
215639       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
215640 
215641    -- 4458381 Public Sector Enh
215642    
215643    --
215644    -- set accounting attributes for the line type
215645    --
215646    l_entered_amt_idx := 3;
215647    l_accted_amt_idx  := 8;
215648    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
215649    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
215650    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
215651    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
215652    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
215653    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
215654    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
215655    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
215656    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
215657    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
215658    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
215659    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
215660    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
215661    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
215662    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
215663    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
215664    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
215665 
215666    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
215667    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
215668 
215669    ---------------------------------------------------------------------------------------------------------------
215670    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
215671    ---------------------------------------------------------------------------------------------------------------
215672    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
215673 
215674    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
215675    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
215676 
215677    IF xla_accounting_cache_pkg.GetValueChar
215678          (p_source_code         => 'LEDGER_CATEGORY_CODE'
215679          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
215680    AND l_bflow_method_code = 'PRIOR_ENTRY'
215681 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
215682    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
215683          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
215684        )
215685    THEN
215686          xla_ae_lines_pkg.BflowUpgEntry
215687            (p_business_method_code    => l_bflow_method_code
215688            ,p_business_class_code     => l_bflow_class_code
215689            ,p_balance_type            => l_balance_type_code);
215690    ELSE
215691       NULL;
215692 -- No business flow processing for business flow method of NONE.
215693    END IF;
215694 
215695    --
215696    -- call analytical criteria
215697    --
215698    
215699    --
215700    -- call description
215701    --
215702    
215703 xla_ae_lines_pkg.SetLineDescription(
215704    p_ae_header_id => l_ae_header_id
215705   ,p_description  => Description_1 (
215706      p_application_id         => p_application_id
215707    , p_ae_header_id           => l_ae_header_id 
215708 , p_source_1 => p_source_1
215709 , p_source_2 => p_source_2
215710 , p_source_3 => p_source_3
215711 , p_source_4 => p_source_4
215712 , p_source_5 => p_source_5
215713    )
215714 );
215715 
215716 
215717    --
215718    -- call ADRs
215719    -- Bug 4922099
215720    --
215721    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
215722         (NVL(l_actual_upg_option, 'N') = 'O') OR
215723         (NVL(l_enc_upg_option, 'N') = 'O')
215724       )
215725    THEN
215726    NULL;
215727    --
215728    --
215729    
215730   l_ccid := AcctDerRule_11(
215731            p_application_id           => p_application_id
215732          , p_ae_header_id             => l_ae_header_id 
215733 , p_source_22 => p_source_22
215734          , x_transaction_coa_id       => l_adr_transaction_coa_id
215735          , x_accounting_coa_id        => l_adr_accounting_coa_id
215736          , x_value_type_code          => l_adr_value_type_code
215737          , p_side                     => 'NA'
215738    );
215739 
215740    xla_ae_lines_pkg.set_ccid(
215741     p_code_combination_id          => l_ccid
215742   , p_value_type_code              => l_adr_value_type_code
215743   , p_transaction_coa_id           => l_adr_transaction_coa_id
215744   , p_accounting_coa_id            => l_adr_accounting_coa_id
215745   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
215746   , p_adr_type_code                => 'S'
215747   , p_component_type               => l_component_type
215748   , p_component_code               => l_component_code
215749   , p_component_type_code          => l_component_type_code
215750   , p_component_appl_id            => l_component_appl_id
215751   , p_amb_context_code             => l_amb_context_code
215752   , p_side                         => 'NA'
215753   );
215754 
215755 
215756    --
215757    --
215758    END IF;
215759    --
215760    -- Bug 4922099
215761    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
215762           (NVL(l_enc_upg_option, 'N') = 'O')
215763         ) AND
215764         (l_bflow_method_code = 'PRIOR_ENTRY')
215765       )
215766    THEN
215767       IF
215768       --
215769       1 = 2
215770       --
215771       THEN
215772       xla_accounting_err_pkg.build_message
215773                                     (p_appli_s_name            => 'XLA'
215774                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
215775                                     ,p_token_1                 => 'LINE_NUMBER'
215776                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
215777                                     ,p_token_2                 => 'LINE_TYPE_NAME'
215778                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
215779                                                                              l_component_type
215780                                                                             ,l_component_code
215781                                                                             ,l_component_type_code
215782                                                                             ,l_component_appl_id
215783                                                                             ,l_amb_context_code
215784                                                                             ,l_entity_code
215785                                                                             ,l_event_class_code
215786                                                                            )
215787                                     ,p_token_3                 => 'OWNER'
215788                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
215789                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
215790                                                                           ,p_lookup_code    => l_component_type_code
215791                                                                          )
215792                                     ,p_token_4                 => 'PRODUCT_NAME'
215793                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
215794                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
215795                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
215796                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
215797                                     ,p_ae_header_id            =>  NULL
215798                                        );
215799 
215800         IF (C_LEVEL_ERROR>= g_log_level) THEN
215801                  trace
215802                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
215803                       ,p_level    => C_LEVEL_ERROR
215804                       ,p_module   => l_log_module);
215805         END IF;
215806       END IF;
215807    END IF;
215808    --
215809    --
215810    ------------------------------------------------------------------------------------------------
215811    -- 4219869 Business Flow
215812    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
215813    -- Prior Entry.  Currently, the following code is always generated.
215814    ------------------------------------------------------------------------------------------------
215815    XLA_AE_LINES_PKG.ValidateCurrentLine;
215816 
215817    ------------------------------------------------------------------------------------
215818    -- 4219869 Business Flow
215819    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
215820    ------------------------------------------------------------------------------------
215821    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
215822 
215823    ----------------------------------------------------------------------------------
215824    -- 4219869 Business Flow
215825    -- Update journal entry status -- Need to generate this within IF <condition>
215826    ----------------------------------------------------------------------------------
215827    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
215828          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
215829          ,p_balance_type_code => l_balance_type_code
215830          );
215831 
215832    -------------------------------------------------------------------------------------------
215833    -- 4262811 - Generate the Accrual Reversal lines
215834    -------------------------------------------------------------------------------------------
215835    BEGIN
215836       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
215837                               (g_array_event(p_event_id).array_value_num('header_index'));
215838       IF l_acc_rev_flag IS NULL THEN
215839          l_acc_rev_flag := 'N';
215840       END IF;
215841    EXCEPTION
215842       WHEN OTHERS THEN
215843          l_acc_rev_flag := 'N';
215844    END;
215845    --
215846    IF (l_acc_rev_flag = 'Y') THEN
215847 
215848        -- 4645092  ------------------------------------------------------------------------------
215849        -- To allow MPA report to determine if it should generate report process
215850        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
215851        ------------------------------------------------------------------------------------------
215852 
215853        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
215854        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
215855    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
215856    -- call ADRs
215857    -- Bug 4922099
215858    --
215859    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
215860         (NVL(l_actual_upg_option, 'N') = 'O') OR
215861         (NVL(l_enc_upg_option, 'N') = 'O')
215862       )
215863    THEN
215864    NULL;
215865    --
215866    --
215867    
215868   l_ccid := AcctDerRule_11(
215869            p_application_id           => p_application_id
215870          , p_ae_header_id             => l_ae_header_id 
215871 , p_source_22 => p_source_22
215872          , x_transaction_coa_id       => l_adr_transaction_coa_id
215873          , x_accounting_coa_id        => l_adr_accounting_coa_id
215874          , x_value_type_code          => l_adr_value_type_code
215875          , p_side                     => 'NA'
215876    );
215877 
215878    xla_ae_lines_pkg.set_ccid(
215879     p_code_combination_id          => l_ccid
215880   , p_value_type_code              => l_adr_value_type_code
215881   , p_transaction_coa_id           => l_adr_transaction_coa_id
215882   , p_accounting_coa_id            => l_adr_accounting_coa_id
215883   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
215884   , p_adr_type_code                => 'S'
215885   , p_component_type               => l_component_type
215886   , p_component_code               => l_component_code
215887   , p_component_type_code          => l_component_type_code
215888   , p_component_appl_id            => l_component_appl_id
215889   , p_amb_context_code             => l_amb_context_code
215890   , p_side                         => 'NA'
215891   );
215892 
215893 
215894    --
215895    --
215896    END IF;
215897 
215898        --
215899        -- Update the line information that should be overwritten
215900        --
215901        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
215902                                          p_header_num   => 1);
215903        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
215904 
215905        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
215906 
215907        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
215908           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
215909        END IF;
215910 
215911       --
215912       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
215913       --
215914       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
215915           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
215916       ELSE
215917           ---------------------------------------------------------------------------------------------------
215918           -- 4262811a Switch Sign
215919           ---------------------------------------------------------------------------------------------------
215920           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
215921           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
215922                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
215923           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
215924                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
215925           -- 5132302
215926           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
215927                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
215928 
215929       END IF;
215930 
215931       -- 4955764
215932       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
215933       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
215934 
215935 
215936       XLA_AE_LINES_PKG.ValidateCurrentLine;
215937       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
215938 
215939       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
215940                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
215941                ,p_balance_type_code => l_balance_type_code);
215942 
215943    END IF;
215944 
215945    -----------------------------------------------------------------------------------------
215946    -- 4262811 Multiperiod Accounting
215947    -----------------------------------------------------------------------------------------
215948      -- No MPA option is assigned.
215949 
215950 
215951 END IF;
215952 END IF;
215953 --
215954 
215955 --
215956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
215957    trace
215958       (p_msg      => 'END of AcctLineType_392'
215959       ,p_level    => C_LEVEL_PROCEDURE
215960       ,p_module   => l_log_module);
215961 END IF;
215962 --
215963 EXCEPTION
215964   WHEN xla_exceptions_pkg.application_exception THEN
215965       RAISE;
215966   WHEN OTHERS THEN
215967        xla_exceptions_pkg.raise_message
215968            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_392');
215969 END AcctLineType_392;
215970 --
215971 
215972 ---------------------------------------
215973 --
215974 -- PRIVATE FUNCTION
215975 --         AcctLineType_393
215976 --
215977 ---------------------------------------
215978 PROCEDURE AcctLineType_393 (
215979   p_application_id        IN NUMBER
215980  ,p_event_id              IN NUMBER
215981  ,p_calculate_acctd_flag  IN VARCHAR2
215982  ,p_calculate_g_l_flag    IN VARCHAR2
215983  ,p_actual_flag           IN OUT VARCHAR2
215984  ,p_balance_type_code     OUT VARCHAR2
215985  ,p_gain_or_loss_ref      OUT VARCHAR2
215986  
215987 --TRANSACTION_ID
215988  , p_source_1            IN NUMBER
215989 --Item Concatenated Segments
215990  , p_source_2            IN VARCHAR2
215991 --Transaction Quantity
215992  , p_source_3            IN NUMBER
215993 --Transaction Unit of Measure Code
215994  , p_source_4            IN VARCHAR2
215995 --Inventory Transaction Type Description
215996  , p_source_5            IN VARCHAR2
215997 --Product Line Accounting Category Bridging Account
215998  , p_source_22            IN NUMBER
215999 --DISTRIBUTION_IDENTIFIER
216000  , p_source_84            IN NUMBER
216001 --Distribution Type
216002  , p_source_85            IN VARCHAR2
216003  , p_source_85_meaning    IN VARCHAR2
216004 --Entered Currency Code
216005  , p_source_88            IN VARCHAR2
216006 --Entered Amount
216007  , p_source_91            IN NUMBER
216008 --Currency Conversion Date
216009  , p_source_92            IN DATE
216010 --Currency Conversion Rate
216011  , p_source_93            IN NUMBER
216012 --Currency Conversion Type
216013  , p_source_94            IN VARCHAR2
216014 --Accounted Amount
216015  , p_source_95            IN NUMBER
216016 --Accounting Line Type
216017  , p_source_97            IN NUMBER
216018 --Subinventory Type Indicator
216019  , p_source_110            IN VARCHAR2
216020  , p_source_110_meaning    IN VARCHAR2
216021 )
216022 IS
216023 
216024 l_component_type              VARCHAR2(80);
216025 l_component_code              VARCHAR2(30);
216026 l_component_type_code         VARCHAR2(1);
216027 l_component_appl_id           INTEGER;
216028 l_amb_context_code            VARCHAR2(30);
216029 l_entity_code                 VARCHAR2(30);
216030 l_event_class_code            VARCHAR2(30);
216031 l_ae_header_id                NUMBER;
216032 l_event_type_code             VARCHAR2(30);
216033 l_line_definition_code        VARCHAR2(30);
216034 l_line_definition_owner_code  VARCHAR2(1);
216035 --
216036 -- adr variables
216037 l_segment                     VARCHAR2(30);
216038 l_ccid                        NUMBER;
216039 l_adr_transaction_coa_id      NUMBER;
216040 l_adr_accounting_coa_id       NUMBER;
216041 l_adr_flexfield_segment_code  VARCHAR2(30);
216042 l_adr_flex_value_set_id       NUMBER;
216043 l_adr_value_type_code         VARCHAR2(30);
216044 l_adr_value_combination_id    NUMBER;
216045 l_adr_value_segment_code      VARCHAR2(30);
216046 
216047 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
216048 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
216049 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
216050 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
216051 
216052 -- 4262811 Variables ------------------------------------------------------------------------------------------
216053 l_entered_amt_idx             NUMBER;
216054 l_accted_amt_idx              NUMBER;
216055 l_acc_rev_flag                VARCHAR2(1);
216056 l_accrual_line_num            NUMBER;
216057 l_tmp_amt                     NUMBER;
216058 l_acc_rev_natural_side_code   VARCHAR2(1);
216059 
216060 l_num_entries                 NUMBER;
216061 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
216062 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
216063 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
216064 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
216065 l_recog_line_1                NUMBER;
216066 l_recog_line_2                NUMBER;
216067 
216068 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
216069 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
216070 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
216071 
216072 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
216073 
216074 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
216075 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
216076 
216077 ---------------------------------------------------------------------------------------------------------------
216078 
216079 
216080 --
216081 -- bulk performance
216082 --
216083 l_balance_type_code           VARCHAR2(1);
216084 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
216085 l_log_module                  VARCHAR2(240);
216086 
216087 --
216088 -- Upgrade strategy
216089 --
216090 l_actual_upg_option           VARCHAR2(1);
216091 l_enc_upg_option           VARCHAR2(1);
216092 
216093 --
216094 BEGIN
216095 --
216096 IF g_log_enabled THEN
216097       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_393';
216098 END IF;
216099 --
216100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
216101 
216102       trace
216103          (p_msg      => 'BEGIN of AcctLineType_393'
216104          ,p_level    => C_LEVEL_PROCEDURE
216105          ,p_module   => l_log_module);
216106 
216107 END IF;
216108 --
216109 l_component_type             := 'AMB_JLT';
216110 l_component_code             := 'PI_BRIDGING';
216111 l_component_type_code        := 'S';
216112 l_component_appl_id          :=  707;
216113 l_amb_context_code           := 'DEFAULT';
216114 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
216115 l_event_class_code           := 'WIP_MTL';
216116 l_event_type_code            := 'WIP_NEG_COMP_ISSUE';
216117 l_line_definition_owner_code := 'S';
216118 l_line_definition_code       := 'PI_WIP_NEG_COMP_ISSUE';
216119 --
216120 l_balance_type_code          := 'A';
216121 l_segment                     := NULL;
216122 l_ccid                        := NULL;
216123 l_adr_transaction_coa_id      := NULL;
216124 l_adr_accounting_coa_id       := NULL;
216125 l_adr_flexfield_segment_code  := NULL;
216126 l_adr_flex_value_set_id       := NULL;
216127 l_adr_value_type_code         := NULL;
216128 l_adr_value_combination_id    := NULL;
216129 l_adr_value_segment_code      := NULL;
216130 
216131 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
216132 l_bflow_class_code           := '';    -- 4219869 Business Flow
216133 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
216134 l_budgetary_control_flag     := 'N';
216135 
216136 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
216137 l_bflow_applied_to_amt       := NULL; -- 5132302
216138 l_entered_amt_idx            := NULL;          -- 4262811
216139 l_accted_amt_idx             := NULL;          -- 4262811
216140 l_acc_rev_flag               := NULL;          -- 4262811
216141 l_accrual_line_num           := NULL;          -- 4262811
216142 l_tmp_amt                    := NULL;          -- 4262811
216143 --
216144  
216145 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
216146     l_balance_type_code <> 'B' THEN
216147 IF (NVL(p_source_97,9E125) =  1 OR 
216148 NVL(p_source_97,9E125) =  2 OR 
216149 NVL(p_source_97,9E125) =  3) AND 
216150 NVL(p_source_110,'
216151 ') =  'Y'
216152  THEN 
216153 
216154    --
216155    XLA_AE_LINES_PKG.SetNewLine;
216156 
216157    p_balance_type_code          := l_balance_type_code;
216158    -- set the flag so later we will know whether the gain loss line needs to be created
216159    
216160    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
216161      p_actual_flag :='A';
216162    END IF;
216163 
216164    --
216165    -- bulk performance
216166    --
216167    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
216168                                       p_header_num   => 0); -- 4262811
216169    --
216170    -- set accounting line options
216171    --
216172    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
216173            p_natural_side_code          => 'C'
216174          , p_gain_or_loss_flag          => 'N'
216175          , p_gl_transfer_mode_code      => 'S'
216176          , p_acct_entry_type_code       => 'A'
216177          , p_switch_side_flag           => 'Y'
216178          , p_merge_duplicate_code       => 'N'
216179          );
216180    --
216181    l_acc_rev_natural_side_code := 'D';  -- 4262811
216182    -- 
216183    --
216184    -- set accounting line type info
216185    --
216186    xla_ae_lines_pkg.SetAcctLineType
216187       (p_component_type             => l_component_type
216188       ,p_event_type_code            => l_event_type_code
216189       ,p_line_definition_owner_code => l_line_definition_owner_code
216190       ,p_line_definition_code       => l_line_definition_code
216191       ,p_accounting_line_code       => l_component_code
216192       ,p_accounting_line_type_code  => l_component_type_code
216193       ,p_accounting_line_appl_id    => l_component_appl_id
216194       ,p_amb_context_code           => l_amb_context_code
216195       ,p_entity_code                => l_entity_code
216196       ,p_event_class_code           => l_event_class_code);
216197    --
216198    -- set accounting class
216199    --
216200    xla_ae_lines_pkg.SetAcctClass(
216201            p_accounting_class_code  => 'BRIDGING'
216202          , p_ae_header_id           => l_ae_header_id
216203          );
216204 
216205    --
216206    -- set rounding class
216207    --
216208    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
216209                       'BRIDGING';
216210 
216211    --
216212    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
216213    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
216214    --
216215    -- bulk performance
216216    --
216217    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
216218 
216219    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
216220       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
216221 
216222    -- 4955764
216223    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
216224       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
216225 
216226    -- 4458381 Public Sector Enh
216227    
216228    --
216229    -- set accounting attributes for the line type
216230    --
216231    l_entered_amt_idx := 3;
216232    l_accted_amt_idx  := 8;
216233    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
216234    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
216235    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
216236    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
216237    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
216238    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
216239    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
216240    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
216241    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
216242    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
216243    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
216244    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
216245    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
216246    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
216247    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
216248    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
216249    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
216250 
216251    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
216252    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
216253 
216254    ---------------------------------------------------------------------------------------------------------------
216255    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
216256    ---------------------------------------------------------------------------------------------------------------
216257    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
216258 
216259    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
216260    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
216261 
216262    IF xla_accounting_cache_pkg.GetValueChar
216263          (p_source_code         => 'LEDGER_CATEGORY_CODE'
216264          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
216265    AND l_bflow_method_code = 'PRIOR_ENTRY'
216266 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
216267    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
216268          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
216269        )
216270    THEN
216271          xla_ae_lines_pkg.BflowUpgEntry
216272            (p_business_method_code    => l_bflow_method_code
216273            ,p_business_class_code     => l_bflow_class_code
216274            ,p_balance_type            => l_balance_type_code);
216275    ELSE
216276       NULL;
216277 -- No business flow processing for business flow method of NONE.
216278    END IF;
216279 
216280    --
216281    -- call analytical criteria
216282    --
216283    
216284    --
216285    -- call description
216286    --
216287    
216288 xla_ae_lines_pkg.SetLineDescription(
216289    p_ae_header_id => l_ae_header_id
216290   ,p_description  => Description_1 (
216291      p_application_id         => p_application_id
216292    , p_ae_header_id           => l_ae_header_id 
216293 , p_source_1 => p_source_1
216294 , p_source_2 => p_source_2
216295 , p_source_3 => p_source_3
216296 , p_source_4 => p_source_4
216297 , p_source_5 => p_source_5
216298    )
216299 );
216300 
216301 
216302    --
216303    -- call ADRs
216304    -- Bug 4922099
216305    --
216306    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
216307         (NVL(l_actual_upg_option, 'N') = 'O') OR
216308         (NVL(l_enc_upg_option, 'N') = 'O')
216309       )
216310    THEN
216311    NULL;
216312    --
216313    --
216314    
216315   l_ccid := AcctDerRule_11(
216316            p_application_id           => p_application_id
216317          , p_ae_header_id             => l_ae_header_id 
216318 , p_source_22 => p_source_22
216319          , x_transaction_coa_id       => l_adr_transaction_coa_id
216320          , x_accounting_coa_id        => l_adr_accounting_coa_id
216321          , x_value_type_code          => l_adr_value_type_code
216322          , p_side                     => 'NA'
216323    );
216324 
216325    xla_ae_lines_pkg.set_ccid(
216326     p_code_combination_id          => l_ccid
216327   , p_value_type_code              => l_adr_value_type_code
216328   , p_transaction_coa_id           => l_adr_transaction_coa_id
216329   , p_accounting_coa_id            => l_adr_accounting_coa_id
216330   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
216331   , p_adr_type_code                => 'S'
216332   , p_component_type               => l_component_type
216333   , p_component_code               => l_component_code
216334   , p_component_type_code          => l_component_type_code
216335   , p_component_appl_id            => l_component_appl_id
216336   , p_amb_context_code             => l_amb_context_code
216337   , p_side                         => 'NA'
216338   );
216339 
216340 
216341    --
216342    --
216343    END IF;
216344    --
216345    -- Bug 4922099
216346    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
216347           (NVL(l_enc_upg_option, 'N') = 'O')
216348         ) AND
216349         (l_bflow_method_code = 'PRIOR_ENTRY')
216350       )
216351    THEN
216352       IF
216353       --
216354       1 = 2
216355       --
216356       THEN
216357       xla_accounting_err_pkg.build_message
216358                                     (p_appli_s_name            => 'XLA'
216359                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
216360                                     ,p_token_1                 => 'LINE_NUMBER'
216361                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
216362                                     ,p_token_2                 => 'LINE_TYPE_NAME'
216363                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
216364                                                                              l_component_type
216365                                                                             ,l_component_code
216366                                                                             ,l_component_type_code
216367                                                                             ,l_component_appl_id
216368                                                                             ,l_amb_context_code
216369                                                                             ,l_entity_code
216370                                                                             ,l_event_class_code
216371                                                                            )
216372                                     ,p_token_3                 => 'OWNER'
216373                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
216374                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
216375                                                                           ,p_lookup_code    => l_component_type_code
216376                                                                          )
216377                                     ,p_token_4                 => 'PRODUCT_NAME'
216378                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
216379                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
216380                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
216381                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
216382                                     ,p_ae_header_id            =>  NULL
216383                                        );
216384 
216385         IF (C_LEVEL_ERROR>= g_log_level) THEN
216386                  trace
216387                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
216388                       ,p_level    => C_LEVEL_ERROR
216389                       ,p_module   => l_log_module);
216390         END IF;
216391       END IF;
216392    END IF;
216393    --
216394    --
216395    ------------------------------------------------------------------------------------------------
216396    -- 4219869 Business Flow
216397    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
216398    -- Prior Entry.  Currently, the following code is always generated.
216399    ------------------------------------------------------------------------------------------------
216400    XLA_AE_LINES_PKG.ValidateCurrentLine;
216401 
216402    ------------------------------------------------------------------------------------
216403    -- 4219869 Business Flow
216404    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
216405    ------------------------------------------------------------------------------------
216406    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
216407 
216408    ----------------------------------------------------------------------------------
216409    -- 4219869 Business Flow
216410    -- Update journal entry status -- Need to generate this within IF <condition>
216411    ----------------------------------------------------------------------------------
216412    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
216413          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
216414          ,p_balance_type_code => l_balance_type_code
216415          );
216416 
216417    -------------------------------------------------------------------------------------------
216418    -- 4262811 - Generate the Accrual Reversal lines
216419    -------------------------------------------------------------------------------------------
216420    BEGIN
216421       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
216422                               (g_array_event(p_event_id).array_value_num('header_index'));
216423       IF l_acc_rev_flag IS NULL THEN
216424          l_acc_rev_flag := 'N';
216425       END IF;
216426    EXCEPTION
216427       WHEN OTHERS THEN
216428          l_acc_rev_flag := 'N';
216429    END;
216430    --
216431    IF (l_acc_rev_flag = 'Y') THEN
216432 
216433        -- 4645092  ------------------------------------------------------------------------------
216434        -- To allow MPA report to determine if it should generate report process
216435        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
216436        ------------------------------------------------------------------------------------------
216437 
216438        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
216439        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
216440    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
216441    -- call ADRs
216442    -- Bug 4922099
216443    --
216444    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
216445         (NVL(l_actual_upg_option, 'N') = 'O') OR
216446         (NVL(l_enc_upg_option, 'N') = 'O')
216447       )
216448    THEN
216449    NULL;
216450    --
216451    --
216452    
216453   l_ccid := AcctDerRule_11(
216454            p_application_id           => p_application_id
216455          , p_ae_header_id             => l_ae_header_id 
216456 , p_source_22 => p_source_22
216457          , x_transaction_coa_id       => l_adr_transaction_coa_id
216458          , x_accounting_coa_id        => l_adr_accounting_coa_id
216459          , x_value_type_code          => l_adr_value_type_code
216460          , p_side                     => 'NA'
216461    );
216462 
216463    xla_ae_lines_pkg.set_ccid(
216464     p_code_combination_id          => l_ccid
216465   , p_value_type_code              => l_adr_value_type_code
216466   , p_transaction_coa_id           => l_adr_transaction_coa_id
216467   , p_accounting_coa_id            => l_adr_accounting_coa_id
216468   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
216469   , p_adr_type_code                => 'S'
216470   , p_component_type               => l_component_type
216471   , p_component_code               => l_component_code
216472   , p_component_type_code          => l_component_type_code
216473   , p_component_appl_id            => l_component_appl_id
216474   , p_amb_context_code             => l_amb_context_code
216475   , p_side                         => 'NA'
216476   );
216477 
216478 
216479    --
216480    --
216481    END IF;
216482 
216483        --
216484        -- Update the line information that should be overwritten
216485        --
216486        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
216487                                          p_header_num   => 1);
216488        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
216489 
216490        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
216491 
216492        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
216493           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
216494        END IF;
216495 
216496       --
216497       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
216498       --
216499       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
216500           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
216501       ELSE
216502           ---------------------------------------------------------------------------------------------------
216503           -- 4262811a Switch Sign
216504           ---------------------------------------------------------------------------------------------------
216505           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
216506           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
216507                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
216508           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
216509                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
216510           -- 5132302
216511           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
216512                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
216513 
216514       END IF;
216515 
216516       -- 4955764
216517       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
216518       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
216519 
216520 
216521       XLA_AE_LINES_PKG.ValidateCurrentLine;
216522       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
216523 
216524       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
216525                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
216526                ,p_balance_type_code => l_balance_type_code);
216527 
216528    END IF;
216529 
216530    -----------------------------------------------------------------------------------------
216531    -- 4262811 Multiperiod Accounting
216532    -----------------------------------------------------------------------------------------
216533      -- No MPA option is assigned.
216534 
216535 
216536 END IF;
216537 END IF;
216538 --
216539 
216540 --
216541 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
216542    trace
216543       (p_msg      => 'END of AcctLineType_393'
216544       ,p_level    => C_LEVEL_PROCEDURE
216545       ,p_module   => l_log_module);
216546 END IF;
216547 --
216548 EXCEPTION
216549   WHEN xla_exceptions_pkg.application_exception THEN
216550       RAISE;
216551   WHEN OTHERS THEN
216552        xla_exceptions_pkg.raise_message
216553            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_393');
216554 END AcctLineType_393;
216555 --
216556 
216557 ---------------------------------------
216558 --
216559 -- PRIVATE FUNCTION
216560 --         AcctLineType_394
216561 --
216562 ---------------------------------------
216563 PROCEDURE AcctLineType_394 (
216564   p_application_id        IN NUMBER
216565  ,p_event_id              IN NUMBER
216566  ,p_calculate_acctd_flag  IN VARCHAR2
216567  ,p_calculate_g_l_flag    IN VARCHAR2
216568  ,p_actual_flag           IN OUT VARCHAR2
216569  ,p_balance_type_code     OUT VARCHAR2
216570  ,p_gain_or_loss_ref      OUT VARCHAR2
216571  
216572 --TRANSACTION_ID
216573  , p_source_1            IN NUMBER
216574 --Item Concatenated Segments
216575  , p_source_2            IN VARCHAR2
216576 --Transaction Quantity
216577  , p_source_3            IN NUMBER
216578 --Transaction Unit of Measure Code
216579  , p_source_4            IN VARCHAR2
216580 --Inventory Transaction Type Description
216581  , p_source_5            IN VARCHAR2
216582 --Product Line Accounting Category Bridging Account
216583  , p_source_22            IN NUMBER
216584 --DISTRIBUTION_IDENTIFIER
216585  , p_source_84            IN NUMBER
216586 --Distribution Type
216587  , p_source_85            IN VARCHAR2
216588  , p_source_85_meaning    IN VARCHAR2
216589 --Entered Currency Code
216590  , p_source_88            IN VARCHAR2
216591 --Entered Amount
216592  , p_source_91            IN NUMBER
216593 --Currency Conversion Date
216594  , p_source_92            IN DATE
216595 --Currency Conversion Rate
216596  , p_source_93            IN NUMBER
216597 --Currency Conversion Type
216598  , p_source_94            IN VARCHAR2
216599 --Accounted Amount
216600  , p_source_95            IN NUMBER
216601 --Accounting Line Type
216602  , p_source_97            IN NUMBER
216603 )
216604 IS
216605 
216606 l_component_type              VARCHAR2(80);
216607 l_component_code              VARCHAR2(30);
216608 l_component_type_code         VARCHAR2(1);
216609 l_component_appl_id           INTEGER;
216610 l_amb_context_code            VARCHAR2(30);
216611 l_entity_code                 VARCHAR2(30);
216612 l_event_class_code            VARCHAR2(30);
216613 l_ae_header_id                NUMBER;
216614 l_event_type_code             VARCHAR2(30);
216615 l_line_definition_code        VARCHAR2(30);
216616 l_line_definition_owner_code  VARCHAR2(1);
216617 --
216618 -- adr variables
216619 l_segment                     VARCHAR2(30);
216620 l_ccid                        NUMBER;
216621 l_adr_transaction_coa_id      NUMBER;
216622 l_adr_accounting_coa_id       NUMBER;
216623 l_adr_flexfield_segment_code  VARCHAR2(30);
216624 l_adr_flex_value_set_id       NUMBER;
216625 l_adr_value_type_code         VARCHAR2(30);
216626 l_adr_value_combination_id    NUMBER;
216627 l_adr_value_segment_code      VARCHAR2(30);
216628 
216629 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
216630 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
216631 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
216632 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
216633 
216634 -- 4262811 Variables ------------------------------------------------------------------------------------------
216635 l_entered_amt_idx             NUMBER;
216636 l_accted_amt_idx              NUMBER;
216637 l_acc_rev_flag                VARCHAR2(1);
216638 l_accrual_line_num            NUMBER;
216639 l_tmp_amt                     NUMBER;
216640 l_acc_rev_natural_side_code   VARCHAR2(1);
216641 
216642 l_num_entries                 NUMBER;
216643 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
216644 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
216645 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
216646 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
216647 l_recog_line_1                NUMBER;
216648 l_recog_line_2                NUMBER;
216649 
216650 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
216651 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
216652 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
216653 
216654 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
216655 
216656 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
216657 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
216658 
216659 ---------------------------------------------------------------------------------------------------------------
216660 
216661 
216662 --
216663 -- bulk performance
216664 --
216665 l_balance_type_code           VARCHAR2(1);
216666 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
216667 l_log_module                  VARCHAR2(240);
216668 
216669 --
216670 -- Upgrade strategy
216671 --
216672 l_actual_upg_option           VARCHAR2(1);
216673 l_enc_upg_option           VARCHAR2(1);
216674 
216675 --
216676 BEGIN
216677 --
216678 IF g_log_enabled THEN
216679       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_394';
216680 END IF;
216681 --
216682 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
216683 
216684       trace
216685          (p_msg      => 'BEGIN of AcctLineType_394'
216686          ,p_level    => C_LEVEL_PROCEDURE
216687          ,p_module   => l_log_module);
216688 
216689 END IF;
216690 --
216691 l_component_type             := 'AMB_JLT';
216692 l_component_code             := 'PI_BRIDGING 211FM';
216693 l_component_type_code        := 'S';
216694 l_component_appl_id          :=  707;
216695 l_amb_context_code           := 'DEFAULT';
216696 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
216697 l_event_class_code           := 'USER_DEFINE';
216698 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
216699 l_line_definition_owner_code := 'S';
216700 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
216701 --
216702 l_balance_type_code          := 'A';
216703 l_segment                     := NULL;
216704 l_ccid                        := NULL;
216705 l_adr_transaction_coa_id      := NULL;
216706 l_adr_accounting_coa_id       := NULL;
216707 l_adr_flexfield_segment_code  := NULL;
216708 l_adr_flex_value_set_id       := NULL;
216709 l_adr_value_type_code         := NULL;
216710 l_adr_value_combination_id    := NULL;
216711 l_adr_value_segment_code      := NULL;
216712 
216713 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
216714 l_bflow_class_code           := '';    -- 4219869 Business Flow
216715 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
216716 l_budgetary_control_flag     := 'N';
216717 
216718 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
216719 l_bflow_applied_to_amt       := NULL; -- 5132302
216720 l_entered_amt_idx            := NULL;          -- 4262811
216721 l_accted_amt_idx             := NULL;          -- 4262811
216722 l_acc_rev_flag               := NULL;          -- 4262811
216723 l_accrual_line_num           := NULL;          -- 4262811
216724 l_tmp_amt                    := NULL;          -- 4262811
216725 --
216726  
216727 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
216728     l_balance_type_code <> 'B' THEN
216729 IF NVL(p_source_97,9E125) =  1
216730  THEN 
216731 
216732    --
216733    XLA_AE_LINES_PKG.SetNewLine;
216734 
216735    p_balance_type_code          := l_balance_type_code;
216736    -- set the flag so later we will know whether the gain loss line needs to be created
216737    
216738    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
216739      p_actual_flag :='A';
216740    END IF;
216741 
216742    --
216743    -- bulk performance
216744    --
216745    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
216746                                       p_header_num   => 0); -- 4262811
216747    --
216748    -- set accounting line options
216749    --
216750    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
216751            p_natural_side_code          => 'D'
216752          , p_gain_or_loss_flag          => 'N'
216753          , p_gl_transfer_mode_code      => 'S'
216754          , p_acct_entry_type_code       => 'A'
216755          , p_switch_side_flag           => 'Y'
216756          , p_merge_duplicate_code       => 'N'
216757          );
216758    --
216759    l_acc_rev_natural_side_code := 'C';  -- 4262811
216760    -- 
216761    --
216762    -- set accounting line type info
216763    --
216764    xla_ae_lines_pkg.SetAcctLineType
216765       (p_component_type             => l_component_type
216766       ,p_event_type_code            => l_event_type_code
216767       ,p_line_definition_owner_code => l_line_definition_owner_code
216768       ,p_line_definition_code       => l_line_definition_code
216769       ,p_accounting_line_code       => l_component_code
216770       ,p_accounting_line_type_code  => l_component_type_code
216771       ,p_accounting_line_appl_id    => l_component_appl_id
216772       ,p_amb_context_code           => l_amb_context_code
216773       ,p_entity_code                => l_entity_code
216774       ,p_event_class_code           => l_event_class_code);
216775    --
216776    -- set accounting class
216777    --
216778    xla_ae_lines_pkg.SetAcctClass(
216779            p_accounting_class_code  => 'BRIDGING'
216780          , p_ae_header_id           => l_ae_header_id
216781          );
216782 
216783    --
216784    -- set rounding class
216785    --
216786    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
216787                       'BRIDGING';
216788 
216789    --
216790    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
216791    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
216792    --
216793    -- bulk performance
216794    --
216795    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
216796 
216797    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
216798       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
216799 
216800    -- 4955764
216801    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
216802       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
216803 
216804    -- 4458381 Public Sector Enh
216805    
216806    --
216807    -- set accounting attributes for the line type
216808    --
216809    l_entered_amt_idx := 3;
216810    l_accted_amt_idx  := 8;
216811    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
216812    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
216813    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
216814    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
216815    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
216816    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
216817    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
216818    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
216819    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
216820    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
216821    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
216822    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
216823    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
216824    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
216825    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
216826    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
216827    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
216828 
216829    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
216830    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
216831 
216832    ---------------------------------------------------------------------------------------------------------------
216833    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
216834    ---------------------------------------------------------------------------------------------------------------
216835    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
216836 
216837    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
216838    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
216839 
216840    IF xla_accounting_cache_pkg.GetValueChar
216841          (p_source_code         => 'LEDGER_CATEGORY_CODE'
216842          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
216843    AND l_bflow_method_code = 'PRIOR_ENTRY'
216844 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
216845    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
216846          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
216847        )
216848    THEN
216849          xla_ae_lines_pkg.BflowUpgEntry
216850            (p_business_method_code    => l_bflow_method_code
216851            ,p_business_class_code     => l_bflow_class_code
216852            ,p_balance_type            => l_balance_type_code);
216853    ELSE
216854       NULL;
216855 -- No business flow processing for business flow method of NONE.
216856    END IF;
216857 
216858    --
216859    -- call analytical criteria
216860    --
216861    
216862    --
216863    -- call description
216864    --
216865    
216866 xla_ae_lines_pkg.SetLineDescription(
216867    p_ae_header_id => l_ae_header_id
216868   ,p_description  => Description_1 (
216869      p_application_id         => p_application_id
216870    , p_ae_header_id           => l_ae_header_id 
216871 , p_source_1 => p_source_1
216872 , p_source_2 => p_source_2
216873 , p_source_3 => p_source_3
216874 , p_source_4 => p_source_4
216875 , p_source_5 => p_source_5
216876    )
216877 );
216878 
216879 
216880    --
216881    -- call ADRs
216882    -- Bug 4922099
216883    --
216884    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
216885         (NVL(l_actual_upg_option, 'N') = 'O') OR
216886         (NVL(l_enc_upg_option, 'N') = 'O')
216887       )
216888    THEN
216889    NULL;
216890    --
216891    --
216892    
216893   l_ccid := AcctDerRule_11(
216894            p_application_id           => p_application_id
216895          , p_ae_header_id             => l_ae_header_id 
216896 , p_source_22 => p_source_22
216897          , x_transaction_coa_id       => l_adr_transaction_coa_id
216898          , x_accounting_coa_id        => l_adr_accounting_coa_id
216899          , x_value_type_code          => l_adr_value_type_code
216900          , p_side                     => 'NA'
216901    );
216902 
216903    xla_ae_lines_pkg.set_ccid(
216904     p_code_combination_id          => l_ccid
216905   , p_value_type_code              => l_adr_value_type_code
216906   , p_transaction_coa_id           => l_adr_transaction_coa_id
216907   , p_accounting_coa_id            => l_adr_accounting_coa_id
216908   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
216909   , p_adr_type_code                => 'S'
216910   , p_component_type               => l_component_type
216911   , p_component_code               => l_component_code
216912   , p_component_type_code          => l_component_type_code
216913   , p_component_appl_id            => l_component_appl_id
216914   , p_amb_context_code             => l_amb_context_code
216915   , p_side                         => 'NA'
216916   );
216917 
216918 
216919    --
216920    --
216921    END IF;
216922    --
216923    -- Bug 4922099
216924    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
216925           (NVL(l_enc_upg_option, 'N') = 'O')
216926         ) AND
216927         (l_bflow_method_code = 'PRIOR_ENTRY')
216928       )
216929    THEN
216930       IF
216931       --
216932       1 = 2
216933       --
216934       THEN
216935       xla_accounting_err_pkg.build_message
216936                                     (p_appli_s_name            => 'XLA'
216937                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
216938                                     ,p_token_1                 => 'LINE_NUMBER'
216939                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
216940                                     ,p_token_2                 => 'LINE_TYPE_NAME'
216941                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
216942                                                                              l_component_type
216943                                                                             ,l_component_code
216944                                                                             ,l_component_type_code
216945                                                                             ,l_component_appl_id
216946                                                                             ,l_amb_context_code
216947                                                                             ,l_entity_code
216948                                                                             ,l_event_class_code
216949                                                                            )
216950                                     ,p_token_3                 => 'OWNER'
216951                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
216952                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
216953                                                                           ,p_lookup_code    => l_component_type_code
216954                                                                          )
216955                                     ,p_token_4                 => 'PRODUCT_NAME'
216956                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
216957                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
216958                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
216959                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
216960                                     ,p_ae_header_id            =>  NULL
216961                                        );
216962 
216963         IF (C_LEVEL_ERROR>= g_log_level) THEN
216964                  trace
216965                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
216966                       ,p_level    => C_LEVEL_ERROR
216967                       ,p_module   => l_log_module);
216968         END IF;
216969       END IF;
216970    END IF;
216971    --
216972    --
216973    ------------------------------------------------------------------------------------------------
216974    -- 4219869 Business Flow
216975    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
216976    -- Prior Entry.  Currently, the following code is always generated.
216977    ------------------------------------------------------------------------------------------------
216978    XLA_AE_LINES_PKG.ValidateCurrentLine;
216979 
216980    ------------------------------------------------------------------------------------
216981    -- 4219869 Business Flow
216982    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
216983    ------------------------------------------------------------------------------------
216984    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
216985 
216986    ----------------------------------------------------------------------------------
216987    -- 4219869 Business Flow
216988    -- Update journal entry status -- Need to generate this within IF <condition>
216989    ----------------------------------------------------------------------------------
216990    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
216991          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
216992          ,p_balance_type_code => l_balance_type_code
216993          );
216994 
216995    -------------------------------------------------------------------------------------------
216996    -- 4262811 - Generate the Accrual Reversal lines
216997    -------------------------------------------------------------------------------------------
216998    BEGIN
216999       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
217000                               (g_array_event(p_event_id).array_value_num('header_index'));
217001       IF l_acc_rev_flag IS NULL THEN
217002          l_acc_rev_flag := 'N';
217003       END IF;
217004    EXCEPTION
217005       WHEN OTHERS THEN
217006          l_acc_rev_flag := 'N';
217007    END;
217008    --
217009    IF (l_acc_rev_flag = 'Y') THEN
217010 
217011        -- 4645092  ------------------------------------------------------------------------------
217012        -- To allow MPA report to determine if it should generate report process
217013        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
217014        ------------------------------------------------------------------------------------------
217015 
217016        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
217017        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
217018    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
217019    -- call ADRs
217020    -- Bug 4922099
217021    --
217022    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
217023         (NVL(l_actual_upg_option, 'N') = 'O') OR
217024         (NVL(l_enc_upg_option, 'N') = 'O')
217025       )
217026    THEN
217027    NULL;
217028    --
217029    --
217030    
217031   l_ccid := AcctDerRule_11(
217032            p_application_id           => p_application_id
217033          , p_ae_header_id             => l_ae_header_id 
217034 , p_source_22 => p_source_22
217035          , x_transaction_coa_id       => l_adr_transaction_coa_id
217036          , x_accounting_coa_id        => l_adr_accounting_coa_id
217037          , x_value_type_code          => l_adr_value_type_code
217038          , p_side                     => 'NA'
217039    );
217040 
217041    xla_ae_lines_pkg.set_ccid(
217042     p_code_combination_id          => l_ccid
217043   , p_value_type_code              => l_adr_value_type_code
217044   , p_transaction_coa_id           => l_adr_transaction_coa_id
217045   , p_accounting_coa_id            => l_adr_accounting_coa_id
217046   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
217047   , p_adr_type_code                => 'S'
217048   , p_component_type               => l_component_type
217049   , p_component_code               => l_component_code
217050   , p_component_type_code          => l_component_type_code
217051   , p_component_appl_id            => l_component_appl_id
217052   , p_amb_context_code             => l_amb_context_code
217053   , p_side                         => 'NA'
217054   );
217055 
217056 
217057    --
217058    --
217059    END IF;
217060 
217061        --
217062        -- Update the line information that should be overwritten
217063        --
217064        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
217065                                          p_header_num   => 1);
217066        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
217067 
217068        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
217069 
217070        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
217071           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
217072        END IF;
217073 
217074       --
217075       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
217076       --
217077       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
217078           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
217079       ELSE
217080           ---------------------------------------------------------------------------------------------------
217081           -- 4262811a Switch Sign
217082           ---------------------------------------------------------------------------------------------------
217083           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
217084           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
217085                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
217086           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
217087                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
217088           -- 5132302
217089           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
217090                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
217091 
217092       END IF;
217093 
217094       -- 4955764
217095       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
217096       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
217097 
217098 
217099       XLA_AE_LINES_PKG.ValidateCurrentLine;
217100       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
217101 
217102       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
217103                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
217104                ,p_balance_type_code => l_balance_type_code);
217105 
217106    END IF;
217107 
217108    -----------------------------------------------------------------------------------------
217109    -- 4262811 Multiperiod Accounting
217110    -----------------------------------------------------------------------------------------
217111      -- No MPA option is assigned.
217112 
217113 
217114 END IF;
217115 END IF;
217116 --
217117 
217118 --
217119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
217120    trace
217121       (p_msg      => 'END of AcctLineType_394'
217122       ,p_level    => C_LEVEL_PROCEDURE
217123       ,p_module   => l_log_module);
217124 END IF;
217125 --
217126 EXCEPTION
217127   WHEN xla_exceptions_pkg.application_exception THEN
217128       RAISE;
217129   WHEN OTHERS THEN
217130        xla_exceptions_pkg.raise_message
217131            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_394');
217132 END AcctLineType_394;
217133 --
217134 
217135 ---------------------------------------
217136 --
217137 -- PRIVATE FUNCTION
217138 --         AcctLineType_395
217139 --
217140 ---------------------------------------
217141 PROCEDURE AcctLineType_395 (
217142   p_application_id        IN NUMBER
217143  ,p_event_id              IN NUMBER
217144  ,p_calculate_acctd_flag  IN VARCHAR2
217145  ,p_calculate_g_l_flag    IN VARCHAR2
217146  ,p_actual_flag           IN OUT VARCHAR2
217147  ,p_balance_type_code     OUT VARCHAR2
217148  ,p_gain_or_loss_ref      OUT VARCHAR2
217149  
217150 --Product Line Accounting Category Bridging Account
217151  , p_source_22            IN NUMBER
217152 --DISTRIBUTION_IDENTIFIER
217153  , p_source_84            IN NUMBER
217154 --Distribution Type
217155  , p_source_85            IN VARCHAR2
217156  , p_source_85_meaning    IN VARCHAR2
217157 --Entered Currency Code
217158  , p_source_88            IN VARCHAR2
217159 --Entered Amount
217160  , p_source_91            IN NUMBER
217161 --Currency Conversion Date
217162  , p_source_92            IN DATE
217163 --Currency Conversion Rate
217164  , p_source_93            IN NUMBER
217165 --Currency Conversion Type
217166  , p_source_94            IN VARCHAR2
217167 --Accounted Amount
217168  , p_source_95            IN NUMBER
217169 --Accounting Line Type
217170  , p_source_97            IN NUMBER
217171 )
217172 IS
217173 
217174 l_component_type              VARCHAR2(80);
217175 l_component_code              VARCHAR2(30);
217176 l_component_type_code         VARCHAR2(1);
217177 l_component_appl_id           INTEGER;
217178 l_amb_context_code            VARCHAR2(30);
217179 l_entity_code                 VARCHAR2(30);
217180 l_event_class_code            VARCHAR2(30);
217181 l_ae_header_id                NUMBER;
217182 l_event_type_code             VARCHAR2(30);
217183 l_line_definition_code        VARCHAR2(30);
217184 l_line_definition_owner_code  VARCHAR2(1);
217185 --
217186 -- adr variables
217187 l_segment                     VARCHAR2(30);
217188 l_ccid                        NUMBER;
217189 l_adr_transaction_coa_id      NUMBER;
217190 l_adr_accounting_coa_id       NUMBER;
217191 l_adr_flexfield_segment_code  VARCHAR2(30);
217192 l_adr_flex_value_set_id       NUMBER;
217193 l_adr_value_type_code         VARCHAR2(30);
217194 l_adr_value_combination_id    NUMBER;
217195 l_adr_value_segment_code      VARCHAR2(30);
217196 
217197 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
217198 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
217199 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
217200 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
217201 
217202 -- 4262811 Variables ------------------------------------------------------------------------------------------
217203 l_entered_amt_idx             NUMBER;
217204 l_accted_amt_idx              NUMBER;
217205 l_acc_rev_flag                VARCHAR2(1);
217206 l_accrual_line_num            NUMBER;
217207 l_tmp_amt                     NUMBER;
217208 l_acc_rev_natural_side_code   VARCHAR2(1);
217209 
217210 l_num_entries                 NUMBER;
217211 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
217212 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
217213 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
217214 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
217215 l_recog_line_1                NUMBER;
217216 l_recog_line_2                NUMBER;
217217 
217218 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
217219 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
217220 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
217221 
217222 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
217223 
217224 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
217225 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
217226 
217227 ---------------------------------------------------------------------------------------------------------------
217228 
217229 
217230 --
217231 -- bulk performance
217232 --
217233 l_balance_type_code           VARCHAR2(1);
217234 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
217235 l_log_module                  VARCHAR2(240);
217236 
217237 --
217238 -- Upgrade strategy
217239 --
217240 l_actual_upg_option           VARCHAR2(1);
217241 l_enc_upg_option           VARCHAR2(1);
217242 
217243 --
217244 BEGIN
217245 --
217246 IF g_log_enabled THEN
217247       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_395';
217248 END IF;
217249 --
217250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
217251 
217252       trace
217253          (p_msg      => 'BEGIN of AcctLineType_395'
217254          ,p_level    => C_LEVEL_PROCEDURE
217255          ,p_module   => l_log_module);
217256 
217257 END IF;
217258 --
217259 l_component_type             := 'AMB_JLT';
217260 l_component_code             := 'PI_BRIDGING 211FM';
217261 l_component_type_code        := 'S';
217262 l_component_appl_id          :=  707;
217263 l_amb_context_code           := 'DEFAULT';
217264 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
217265 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
217266 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
217267 l_line_definition_owner_code := 'S';
217268 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
217269 --
217270 l_balance_type_code          := 'A';
217271 l_segment                     := NULL;
217272 l_ccid                        := NULL;
217273 l_adr_transaction_coa_id      := NULL;
217274 l_adr_accounting_coa_id       := NULL;
217275 l_adr_flexfield_segment_code  := NULL;
217276 l_adr_flex_value_set_id       := NULL;
217277 l_adr_value_type_code         := NULL;
217278 l_adr_value_combination_id    := NULL;
217279 l_adr_value_segment_code      := NULL;
217280 
217281 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
217282 l_bflow_class_code           := '';    -- 4219869 Business Flow
217283 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
217284 l_budgetary_control_flag     := 'N';
217285 
217286 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
217287 l_bflow_applied_to_amt       := NULL; -- 5132302
217288 l_entered_amt_idx            := NULL;          -- 4262811
217289 l_accted_amt_idx             := NULL;          -- 4262811
217290 l_acc_rev_flag               := NULL;          -- 4262811
217291 l_accrual_line_num           := NULL;          -- 4262811
217292 l_tmp_amt                    := NULL;          -- 4262811
217293 --
217294  
217295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
217296     l_balance_type_code <> 'B' THEN
217297 IF NVL(p_source_97,9E125) =  1
217298  THEN 
217299 
217300    --
217301    XLA_AE_LINES_PKG.SetNewLine;
217302 
217303    p_balance_type_code          := l_balance_type_code;
217304    -- set the flag so later we will know whether the gain loss line needs to be created
217305    
217306    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
217307      p_actual_flag :='A';
217308    END IF;
217309 
217310    --
217311    -- bulk performance
217312    --
217313    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
217314                                       p_header_num   => 0); -- 4262811
217315    --
217316    -- set accounting line options
217317    --
217318    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
217319            p_natural_side_code          => 'C'
217320          , p_gain_or_loss_flag          => 'N'
217321          , p_gl_transfer_mode_code      => 'S'
217322          , p_acct_entry_type_code       => 'A'
217323          , p_switch_side_flag           => 'Y'
217324          , p_merge_duplicate_code       => 'N'
217325          );
217326    --
217327    l_acc_rev_natural_side_code := 'D';  -- 4262811
217328    -- 
217329    --
217330    -- set accounting line type info
217331    --
217332    xla_ae_lines_pkg.SetAcctLineType
217333       (p_component_type             => l_component_type
217334       ,p_event_type_code            => l_event_type_code
217335       ,p_line_definition_owner_code => l_line_definition_owner_code
217336       ,p_line_definition_code       => l_line_definition_code
217337       ,p_accounting_line_code       => l_component_code
217338       ,p_accounting_line_type_code  => l_component_type_code
217339       ,p_accounting_line_appl_id    => l_component_appl_id
217340       ,p_amb_context_code           => l_amb_context_code
217341       ,p_entity_code                => l_entity_code
217342       ,p_event_class_code           => l_event_class_code);
217343    --
217344    -- set accounting class
217345    --
217346    xla_ae_lines_pkg.SetAcctClass(
217347            p_accounting_class_code  => 'BRIDGING'
217348          , p_ae_header_id           => l_ae_header_id
217349          );
217350 
217351    --
217352    -- set rounding class
217353    --
217354    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
217355                       'BRIDGING';
217356 
217357    --
217358    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
217359    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
217360    --
217361    -- bulk performance
217362    --
217363    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
217364 
217365    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
217366       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
217367 
217368    -- 4955764
217369    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
217370       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
217371 
217372    -- 4458381 Public Sector Enh
217373    
217374    --
217375    -- set accounting attributes for the line type
217376    --
217377    l_entered_amt_idx := 3;
217378    l_accted_amt_idx  := 8;
217379    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
217380    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
217381    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
217382    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
217383    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
217384    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
217385    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
217386    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
217387    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
217388    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
217389    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
217390    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
217391    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
217392    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
217393    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
217394    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
217395    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
217396 
217397    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
217398    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
217399 
217400    ---------------------------------------------------------------------------------------------------------------
217401    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
217402    ---------------------------------------------------------------------------------------------------------------
217403    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
217404 
217405    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
217406    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
217407 
217408    IF xla_accounting_cache_pkg.GetValueChar
217409          (p_source_code         => 'LEDGER_CATEGORY_CODE'
217410          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
217411    AND l_bflow_method_code = 'PRIOR_ENTRY'
217412 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
217413    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
217414          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
217415        )
217416    THEN
217417          xla_ae_lines_pkg.BflowUpgEntry
217418            (p_business_method_code    => l_bflow_method_code
217419            ,p_business_class_code     => l_bflow_class_code
217420            ,p_balance_type            => l_balance_type_code);
217421    ELSE
217422       NULL;
217423 -- No business flow processing for business flow method of NONE.
217424    END IF;
217425 
217426    --
217427    -- call analytical criteria
217428    --
217429    
217430    --
217431    -- call description
217432    --
217433    -- No description or it is inherited.
217434    --
217435    -- call ADRs
217436    -- Bug 4922099
217437    --
217438    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
217439         (NVL(l_actual_upg_option, 'N') = 'O') OR
217440         (NVL(l_enc_upg_option, 'N') = 'O')
217441       )
217442    THEN
217443    NULL;
217444    --
217445    --
217446    
217447   l_ccid := AcctDerRule_11(
217448            p_application_id           => p_application_id
217449          , p_ae_header_id             => l_ae_header_id 
217450 , p_source_22 => p_source_22
217451          , x_transaction_coa_id       => l_adr_transaction_coa_id
217452          , x_accounting_coa_id        => l_adr_accounting_coa_id
217453          , x_value_type_code          => l_adr_value_type_code
217454          , p_side                     => 'NA'
217455    );
217456 
217457    xla_ae_lines_pkg.set_ccid(
217458     p_code_combination_id          => l_ccid
217459   , p_value_type_code              => l_adr_value_type_code
217460   , p_transaction_coa_id           => l_adr_transaction_coa_id
217461   , p_accounting_coa_id            => l_adr_accounting_coa_id
217462   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
217463   , p_adr_type_code                => 'S'
217464   , p_component_type               => l_component_type
217465   , p_component_code               => l_component_code
217466   , p_component_type_code          => l_component_type_code
217467   , p_component_appl_id            => l_component_appl_id
217468   , p_amb_context_code             => l_amb_context_code
217469   , p_side                         => 'NA'
217470   );
217471 
217472 
217473    --
217474    --
217475    END IF;
217476    --
217477    -- Bug 4922099
217478    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
217479           (NVL(l_enc_upg_option, 'N') = 'O')
217480         ) AND
217481         (l_bflow_method_code = 'PRIOR_ENTRY')
217482       )
217483    THEN
217484       IF
217485       --
217486       1 = 2
217487       --
217488       THEN
217489       xla_accounting_err_pkg.build_message
217490                                     (p_appli_s_name            => 'XLA'
217491                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
217492                                     ,p_token_1                 => 'LINE_NUMBER'
217493                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
217494                                     ,p_token_2                 => 'LINE_TYPE_NAME'
217495                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
217496                                                                              l_component_type
217497                                                                             ,l_component_code
217498                                                                             ,l_component_type_code
217499                                                                             ,l_component_appl_id
217500                                                                             ,l_amb_context_code
217501                                                                             ,l_entity_code
217502                                                                             ,l_event_class_code
217503                                                                            )
217504                                     ,p_token_3                 => 'OWNER'
217505                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
217506                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
217507                                                                           ,p_lookup_code    => l_component_type_code
217508                                                                          )
217509                                     ,p_token_4                 => 'PRODUCT_NAME'
217510                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
217511                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
217512                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
217513                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
217514                                     ,p_ae_header_id            =>  NULL
217515                                        );
217516 
217517         IF (C_LEVEL_ERROR>= g_log_level) THEN
217518                  trace
217519                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
217520                       ,p_level    => C_LEVEL_ERROR
217521                       ,p_module   => l_log_module);
217522         END IF;
217523       END IF;
217524    END IF;
217525    --
217526    --
217527    ------------------------------------------------------------------------------------------------
217528    -- 4219869 Business Flow
217529    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
217530    -- Prior Entry.  Currently, the following code is always generated.
217531    ------------------------------------------------------------------------------------------------
217532    XLA_AE_LINES_PKG.ValidateCurrentLine;
217533 
217534    ------------------------------------------------------------------------------------
217535    -- 4219869 Business Flow
217536    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
217537    ------------------------------------------------------------------------------------
217538    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
217539 
217540    ----------------------------------------------------------------------------------
217541    -- 4219869 Business Flow
217542    -- Update journal entry status -- Need to generate this within IF <condition>
217543    ----------------------------------------------------------------------------------
217544    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
217545          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
217546          ,p_balance_type_code => l_balance_type_code
217547          );
217548 
217549    -------------------------------------------------------------------------------------------
217550    -- 4262811 - Generate the Accrual Reversal lines
217551    -------------------------------------------------------------------------------------------
217552    BEGIN
217553       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
217554                               (g_array_event(p_event_id).array_value_num('header_index'));
217555       IF l_acc_rev_flag IS NULL THEN
217556          l_acc_rev_flag := 'N';
217557       END IF;
217558    EXCEPTION
217559       WHEN OTHERS THEN
217560          l_acc_rev_flag := 'N';
217561    END;
217562    --
217563    IF (l_acc_rev_flag = 'Y') THEN
217564 
217565        -- 4645092  ------------------------------------------------------------------------------
217566        -- To allow MPA report to determine if it should generate report process
217567        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
217568        ------------------------------------------------------------------------------------------
217569 
217570        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
217571        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
217572    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
217573    -- call ADRs
217574    -- Bug 4922099
217575    --
217576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
217577         (NVL(l_actual_upg_option, 'N') = 'O') OR
217578         (NVL(l_enc_upg_option, 'N') = 'O')
217579       )
217580    THEN
217581    NULL;
217582    --
217583    --
217584    
217585   l_ccid := AcctDerRule_11(
217586            p_application_id           => p_application_id
217587          , p_ae_header_id             => l_ae_header_id 
217588 , p_source_22 => p_source_22
217589          , x_transaction_coa_id       => l_adr_transaction_coa_id
217590          , x_accounting_coa_id        => l_adr_accounting_coa_id
217591          , x_value_type_code          => l_adr_value_type_code
217592          , p_side                     => 'NA'
217593    );
217594 
217595    xla_ae_lines_pkg.set_ccid(
217596     p_code_combination_id          => l_ccid
217597   , p_value_type_code              => l_adr_value_type_code
217598   , p_transaction_coa_id           => l_adr_transaction_coa_id
217599   , p_accounting_coa_id            => l_adr_accounting_coa_id
217600   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
217601   , p_adr_type_code                => 'S'
217602   , p_component_type               => l_component_type
217603   , p_component_code               => l_component_code
217604   , p_component_type_code          => l_component_type_code
217605   , p_component_appl_id            => l_component_appl_id
217606   , p_amb_context_code             => l_amb_context_code
217607   , p_side                         => 'NA'
217608   );
217609 
217610 
217611    --
217612    --
217613    END IF;
217614 
217615        --
217616        -- Update the line information that should be overwritten
217617        --
217618        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
217619                                          p_header_num   => 1);
217620        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
217621 
217622        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
217623 
217624        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
217625           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
217626        END IF;
217627 
217628       --
217629       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
217630       --
217631       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
217632           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
217633       ELSE
217634           ---------------------------------------------------------------------------------------------------
217635           -- 4262811a Switch Sign
217636           ---------------------------------------------------------------------------------------------------
217637           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
217638           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
217639                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
217640           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
217641                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
217642           -- 5132302
217643           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
217644                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
217645 
217646       END IF;
217647 
217648       -- 4955764
217649       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
217650       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
217651 
217652 
217653       XLA_AE_LINES_PKG.ValidateCurrentLine;
217654       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
217655 
217656       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
217657                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
217658                ,p_balance_type_code => l_balance_type_code);
217659 
217660    END IF;
217661 
217662    -----------------------------------------------------------------------------------------
217663    -- 4262811 Multiperiod Accounting
217664    -----------------------------------------------------------------------------------------
217665      -- No MPA option is assigned.
217666 
217667 
217668 END IF;
217669 END IF;
217670 --
217671 
217672 --
217673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
217674    trace
217675       (p_msg      => 'END of AcctLineType_395'
217676       ,p_level    => C_LEVEL_PROCEDURE
217677       ,p_module   => l_log_module);
217678 END IF;
217679 --
217680 EXCEPTION
217681   WHEN xla_exceptions_pkg.application_exception THEN
217682       RAISE;
217683   WHEN OTHERS THEN
217684        xla_exceptions_pkg.raise_message
217685            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_395');
217686 END AcctLineType_395;
217687 --
217688 
217689 ---------------------------------------
217690 --
217691 -- PRIVATE FUNCTION
217692 --         AcctLineType_396
217693 --
217694 ---------------------------------------
217695 PROCEDURE AcctLineType_396 (
217696   p_application_id        IN NUMBER
217697  ,p_event_id              IN NUMBER
217698  ,p_calculate_acctd_flag  IN VARCHAR2
217699  ,p_calculate_g_l_flag    IN VARCHAR2
217700  ,p_actual_flag           IN OUT VARCHAR2
217701  ,p_balance_type_code     OUT VARCHAR2
217702  ,p_gain_or_loss_ref      OUT VARCHAR2
217703  
217704 --TRANSACTION_ID
217705  , p_source_1            IN NUMBER
217706 --Item Concatenated Segments
217707  , p_source_2            IN VARCHAR2
217708 --Transaction Quantity
217709  , p_source_3            IN NUMBER
217710 --Transaction Unit of Measure Code
217711  , p_source_4            IN VARCHAR2
217712 --Inventory Transaction Type Description
217713  , p_source_5            IN VARCHAR2
217714 --Product Line Accounting Category Bridging Account
217715  , p_source_22            IN NUMBER
217716 --DISTRIBUTION_IDENTIFIER
217717  , p_source_84            IN NUMBER
217718 --Distribution Type
217719  , p_source_85            IN VARCHAR2
217720  , p_source_85_meaning    IN VARCHAR2
217721 --Entered Currency Code
217722  , p_source_88            IN VARCHAR2
217723 --Entered Amount
217724  , p_source_91            IN NUMBER
217725 --Currency Conversion Date
217726  , p_source_92            IN DATE
217727 --Currency Conversion Rate
217728  , p_source_93            IN NUMBER
217729 --Currency Conversion Type
217730  , p_source_94            IN VARCHAR2
217731 --Accounted Amount
217732  , p_source_95            IN NUMBER
217733 --Accounting Line Type
217734  , p_source_97            IN NUMBER
217735 )
217736 IS
217737 
217738 l_component_type              VARCHAR2(80);
217739 l_component_code              VARCHAR2(30);
217740 l_component_type_code         VARCHAR2(1);
217741 l_component_appl_id           INTEGER;
217742 l_amb_context_code            VARCHAR2(30);
217743 l_entity_code                 VARCHAR2(30);
217744 l_event_class_code            VARCHAR2(30);
217745 l_ae_header_id                NUMBER;
217746 l_event_type_code             VARCHAR2(30);
217747 l_line_definition_code        VARCHAR2(30);
217748 l_line_definition_owner_code  VARCHAR2(1);
217749 --
217750 -- adr variables
217751 l_segment                     VARCHAR2(30);
217752 l_ccid                        NUMBER;
217753 l_adr_transaction_coa_id      NUMBER;
217754 l_adr_accounting_coa_id       NUMBER;
217755 l_adr_flexfield_segment_code  VARCHAR2(30);
217756 l_adr_flex_value_set_id       NUMBER;
217757 l_adr_value_type_code         VARCHAR2(30);
217758 l_adr_value_combination_id    NUMBER;
217759 l_adr_value_segment_code      VARCHAR2(30);
217760 
217761 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
217762 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
217763 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
217764 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
217765 
217766 -- 4262811 Variables ------------------------------------------------------------------------------------------
217767 l_entered_amt_idx             NUMBER;
217768 l_accted_amt_idx              NUMBER;
217769 l_acc_rev_flag                VARCHAR2(1);
217770 l_accrual_line_num            NUMBER;
217771 l_tmp_amt                     NUMBER;
217772 l_acc_rev_natural_side_code   VARCHAR2(1);
217773 
217774 l_num_entries                 NUMBER;
217775 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
217776 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
217777 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
217778 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
217779 l_recog_line_1                NUMBER;
217780 l_recog_line_2                NUMBER;
217781 
217782 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
217783 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
217784 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
217785 
217786 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
217787 
217788 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
217789 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
217790 
217791 ---------------------------------------------------------------------------------------------------------------
217792 
217793 
217794 --
217795 -- bulk performance
217796 --
217797 l_balance_type_code           VARCHAR2(1);
217798 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
217799 l_log_module                  VARCHAR2(240);
217800 
217801 --
217802 -- Upgrade strategy
217803 --
217804 l_actual_upg_option           VARCHAR2(1);
217805 l_enc_upg_option           VARCHAR2(1);
217806 
217807 --
217808 BEGIN
217809 --
217810 IF g_log_enabled THEN
217811       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_396';
217812 END IF;
217813 --
217814 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
217815 
217816       trace
217817          (p_msg      => 'BEGIN of AcctLineType_396'
217818          ,p_level    => C_LEVEL_PROCEDURE
217819          ,p_module   => l_log_module);
217820 
217821 END IF;
217822 --
217823 l_component_type             := 'AMB_JLT';
217824 l_component_code             := 'PI_BRIDGING 211FM';
217825 l_component_type_code        := 'S';
217826 l_component_appl_id          :=  707;
217827 l_amb_context_code           := 'DEFAULT';
217828 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
217829 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
217830 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
217831 l_line_definition_owner_code := 'S';
217832 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
217833 --
217834 l_balance_type_code          := 'A';
217835 l_segment                     := NULL;
217836 l_ccid                        := NULL;
217837 l_adr_transaction_coa_id      := NULL;
217838 l_adr_accounting_coa_id       := NULL;
217839 l_adr_flexfield_segment_code  := NULL;
217840 l_adr_flex_value_set_id       := NULL;
217841 l_adr_value_type_code         := NULL;
217842 l_adr_value_combination_id    := NULL;
217843 l_adr_value_segment_code      := NULL;
217844 
217845 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
217846 l_bflow_class_code           := '';    -- 4219869 Business Flow
217847 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
217848 l_budgetary_control_flag     := 'N';
217849 
217850 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
217851 l_bflow_applied_to_amt       := NULL; -- 5132302
217852 l_entered_amt_idx            := NULL;          -- 4262811
217853 l_accted_amt_idx             := NULL;          -- 4262811
217854 l_acc_rev_flag               := NULL;          -- 4262811
217855 l_accrual_line_num           := NULL;          -- 4262811
217856 l_tmp_amt                    := NULL;          -- 4262811
217857 --
217858  
217859 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
217860     l_balance_type_code <> 'B' THEN
217861 IF NVL(p_source_97,9E125) =  1
217862  THEN 
217863 
217864    --
217865    XLA_AE_LINES_PKG.SetNewLine;
217866 
217867    p_balance_type_code          := l_balance_type_code;
217868    -- set the flag so later we will know whether the gain loss line needs to be created
217869    
217870    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
217871      p_actual_flag :='A';
217872    END IF;
217873 
217874    --
217875    -- bulk performance
217876    --
217877    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
217878                                       p_header_num   => 0); -- 4262811
217879    --
217880    -- set accounting line options
217881    --
217882    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
217883            p_natural_side_code          => 'C'
217884          , p_gain_or_loss_flag          => 'N'
217885          , p_gl_transfer_mode_code      => 'S'
217886          , p_acct_entry_type_code       => 'A'
217887          , p_switch_side_flag           => 'Y'
217888          , p_merge_duplicate_code       => 'N'
217889          );
217890    --
217891    l_acc_rev_natural_side_code := 'D';  -- 4262811
217892    -- 
217893    --
217894    -- set accounting line type info
217895    --
217896    xla_ae_lines_pkg.SetAcctLineType
217897       (p_component_type             => l_component_type
217898       ,p_event_type_code            => l_event_type_code
217899       ,p_line_definition_owner_code => l_line_definition_owner_code
217900       ,p_line_definition_code       => l_line_definition_code
217901       ,p_accounting_line_code       => l_component_code
217902       ,p_accounting_line_type_code  => l_component_type_code
217903       ,p_accounting_line_appl_id    => l_component_appl_id
217904       ,p_amb_context_code           => l_amb_context_code
217905       ,p_entity_code                => l_entity_code
217906       ,p_event_class_code           => l_event_class_code);
217907    --
217908    -- set accounting class
217909    --
217910    xla_ae_lines_pkg.SetAcctClass(
217911            p_accounting_class_code  => 'BRIDGING'
217912          , p_ae_header_id           => l_ae_header_id
217913          );
217914 
217915    --
217916    -- set rounding class
217917    --
217918    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
217919                       'BRIDGING';
217920 
217921    --
217922    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
217923    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
217924    --
217925    -- bulk performance
217926    --
217927    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
217928 
217929    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
217930       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
217931 
217932    -- 4955764
217933    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
217934       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
217935 
217936    -- 4458381 Public Sector Enh
217937    
217938    --
217939    -- set accounting attributes for the line type
217940    --
217941    l_entered_amt_idx := 3;
217942    l_accted_amt_idx  := 8;
217943    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
217944    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
217945    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
217946    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
217947    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
217948    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
217949    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
217950    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
217951    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
217952    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
217953    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
217954    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
217955    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
217956    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
217957    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
217958    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
217959    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
217960 
217961    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
217962    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
217963 
217964    ---------------------------------------------------------------------------------------------------------------
217965    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
217966    ---------------------------------------------------------------------------------------------------------------
217967    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
217968 
217969    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
217970    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
217971 
217972    IF xla_accounting_cache_pkg.GetValueChar
217973          (p_source_code         => 'LEDGER_CATEGORY_CODE'
217974          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
217975    AND l_bflow_method_code = 'PRIOR_ENTRY'
217976 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
217977    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
217978          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
217979        )
217980    THEN
217981          xla_ae_lines_pkg.BflowUpgEntry
217982            (p_business_method_code    => l_bflow_method_code
217983            ,p_business_class_code     => l_bflow_class_code
217984            ,p_balance_type            => l_balance_type_code);
217985    ELSE
217986       NULL;
217987 -- No business flow processing for business flow method of NONE.
217988    END IF;
217989 
217990    --
217991    -- call analytical criteria
217992    --
217993    
217994    --
217995    -- call description
217996    --
217997    
217998 xla_ae_lines_pkg.SetLineDescription(
217999    p_ae_header_id => l_ae_header_id
218000   ,p_description  => Description_1 (
218001      p_application_id         => p_application_id
218002    , p_ae_header_id           => l_ae_header_id 
218003 , p_source_1 => p_source_1
218004 , p_source_2 => p_source_2
218005 , p_source_3 => p_source_3
218006 , p_source_4 => p_source_4
218007 , p_source_5 => p_source_5
218008    )
218009 );
218010 
218011 
218012    --
218013    -- call ADRs
218014    -- Bug 4922099
218015    --
218016    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
218017         (NVL(l_actual_upg_option, 'N') = 'O') OR
218018         (NVL(l_enc_upg_option, 'N') = 'O')
218019       )
218020    THEN
218021    NULL;
218022    --
218023    --
218024    
218025   l_ccid := AcctDerRule_11(
218026            p_application_id           => p_application_id
218027          , p_ae_header_id             => l_ae_header_id 
218028 , p_source_22 => p_source_22
218029          , x_transaction_coa_id       => l_adr_transaction_coa_id
218030          , x_accounting_coa_id        => l_adr_accounting_coa_id
218031          , x_value_type_code          => l_adr_value_type_code
218032          , p_side                     => 'NA'
218033    );
218034 
218035    xla_ae_lines_pkg.set_ccid(
218036     p_code_combination_id          => l_ccid
218037   , p_value_type_code              => l_adr_value_type_code
218038   , p_transaction_coa_id           => l_adr_transaction_coa_id
218039   , p_accounting_coa_id            => l_adr_accounting_coa_id
218040   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
218041   , p_adr_type_code                => 'S'
218042   , p_component_type               => l_component_type
218043   , p_component_code               => l_component_code
218044   , p_component_type_code          => l_component_type_code
218045   , p_component_appl_id            => l_component_appl_id
218046   , p_amb_context_code             => l_amb_context_code
218047   , p_side                         => 'NA'
218048   );
218049 
218050 
218051    --
218052    --
218053    END IF;
218054    --
218055    -- Bug 4922099
218056    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
218057           (NVL(l_enc_upg_option, 'N') = 'O')
218058         ) AND
218059         (l_bflow_method_code = 'PRIOR_ENTRY')
218060       )
218061    THEN
218062       IF
218063       --
218064       1 = 2
218065       --
218066       THEN
218067       xla_accounting_err_pkg.build_message
218068                                     (p_appli_s_name            => 'XLA'
218069                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
218070                                     ,p_token_1                 => 'LINE_NUMBER'
218071                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
218072                                     ,p_token_2                 => 'LINE_TYPE_NAME'
218073                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
218074                                                                              l_component_type
218075                                                                             ,l_component_code
218076                                                                             ,l_component_type_code
218077                                                                             ,l_component_appl_id
218078                                                                             ,l_amb_context_code
218079                                                                             ,l_entity_code
218080                                                                             ,l_event_class_code
218081                                                                            )
218082                                     ,p_token_3                 => 'OWNER'
218083                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
218084                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
218085                                                                           ,p_lookup_code    => l_component_type_code
218086                                                                          )
218087                                     ,p_token_4                 => 'PRODUCT_NAME'
218088                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
218089                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
218090                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
218091                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
218092                                     ,p_ae_header_id            =>  NULL
218093                                        );
218094 
218095         IF (C_LEVEL_ERROR>= g_log_level) THEN
218096                  trace
218097                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
218098                       ,p_level    => C_LEVEL_ERROR
218099                       ,p_module   => l_log_module);
218100         END IF;
218101       END IF;
218102    END IF;
218103    --
218104    --
218105    ------------------------------------------------------------------------------------------------
218106    -- 4219869 Business Flow
218107    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
218108    -- Prior Entry.  Currently, the following code is always generated.
218109    ------------------------------------------------------------------------------------------------
218110    XLA_AE_LINES_PKG.ValidateCurrentLine;
218111 
218112    ------------------------------------------------------------------------------------
218113    -- 4219869 Business Flow
218114    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
218115    ------------------------------------------------------------------------------------
218116    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
218117 
218118    ----------------------------------------------------------------------------------
218119    -- 4219869 Business Flow
218120    -- Update journal entry status -- Need to generate this within IF <condition>
218121    ----------------------------------------------------------------------------------
218122    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
218123          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
218124          ,p_balance_type_code => l_balance_type_code
218125          );
218126 
218127    -------------------------------------------------------------------------------------------
218128    -- 4262811 - Generate the Accrual Reversal lines
218129    -------------------------------------------------------------------------------------------
218130    BEGIN
218131       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
218132                               (g_array_event(p_event_id).array_value_num('header_index'));
218133       IF l_acc_rev_flag IS NULL THEN
218134          l_acc_rev_flag := 'N';
218135       END IF;
218136    EXCEPTION
218137       WHEN OTHERS THEN
218138          l_acc_rev_flag := 'N';
218139    END;
218140    --
218141    IF (l_acc_rev_flag = 'Y') THEN
218142 
218143        -- 4645092  ------------------------------------------------------------------------------
218144        -- To allow MPA report to determine if it should generate report process
218145        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
218146        ------------------------------------------------------------------------------------------
218147 
218148        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
218149        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
218150    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
218151    -- call ADRs
218152    -- Bug 4922099
218153    --
218154    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
218155         (NVL(l_actual_upg_option, 'N') = 'O') OR
218156         (NVL(l_enc_upg_option, 'N') = 'O')
218157       )
218158    THEN
218159    NULL;
218160    --
218161    --
218162    
218163   l_ccid := AcctDerRule_11(
218164            p_application_id           => p_application_id
218165          , p_ae_header_id             => l_ae_header_id 
218166 , p_source_22 => p_source_22
218167          , x_transaction_coa_id       => l_adr_transaction_coa_id
218168          , x_accounting_coa_id        => l_adr_accounting_coa_id
218169          , x_value_type_code          => l_adr_value_type_code
218170          , p_side                     => 'NA'
218171    );
218172 
218173    xla_ae_lines_pkg.set_ccid(
218174     p_code_combination_id          => l_ccid
218175   , p_value_type_code              => l_adr_value_type_code
218176   , p_transaction_coa_id           => l_adr_transaction_coa_id
218177   , p_accounting_coa_id            => l_adr_accounting_coa_id
218178   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
218179   , p_adr_type_code                => 'S'
218180   , p_component_type               => l_component_type
218181   , p_component_code               => l_component_code
218182   , p_component_type_code          => l_component_type_code
218183   , p_component_appl_id            => l_component_appl_id
218184   , p_amb_context_code             => l_amb_context_code
218185   , p_side                         => 'NA'
218186   );
218187 
218188 
218189    --
218190    --
218191    END IF;
218192 
218193        --
218194        -- Update the line information that should be overwritten
218195        --
218196        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
218197                                          p_header_num   => 1);
218198        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
218199 
218200        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
218201 
218202        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
218203           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
218204        END IF;
218205 
218206       --
218207       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
218208       --
218209       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
218210           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
218211       ELSE
218212           ---------------------------------------------------------------------------------------------------
218213           -- 4262811a Switch Sign
218214           ---------------------------------------------------------------------------------------------------
218215           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
218216           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
218217                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
218218           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
218219                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
218220           -- 5132302
218221           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
218222                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
218223 
218224       END IF;
218225 
218226       -- 4955764
218227       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
218228       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
218229 
218230 
218231       XLA_AE_LINES_PKG.ValidateCurrentLine;
218232       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
218233 
218234       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
218235                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
218236                ,p_balance_type_code => l_balance_type_code);
218237 
218238    END IF;
218239 
218240    -----------------------------------------------------------------------------------------
218241    -- 4262811 Multiperiod Accounting
218242    -----------------------------------------------------------------------------------------
218243      -- No MPA option is assigned.
218244 
218245 
218246 END IF;
218247 END IF;
218248 --
218249 
218250 --
218251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
218252    trace
218253       (p_msg      => 'END of AcctLineType_396'
218254       ,p_level    => C_LEVEL_PROCEDURE
218255       ,p_module   => l_log_module);
218256 END IF;
218257 --
218258 EXCEPTION
218259   WHEN xla_exceptions_pkg.application_exception THEN
218260       RAISE;
218261   WHEN OTHERS THEN
218262        xla_exceptions_pkg.raise_message
218263            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_396');
218264 END AcctLineType_396;
218265 --
218266 
218267 ---------------------------------------
218268 --
218269 -- PRIVATE FUNCTION
218270 --         AcctLineType_397
218271 --
218272 ---------------------------------------
218273 PROCEDURE AcctLineType_397 (
218274   p_application_id        IN NUMBER
218275  ,p_event_id              IN NUMBER
218276  ,p_calculate_acctd_flag  IN VARCHAR2
218277  ,p_calculate_g_l_flag    IN VARCHAR2
218278  ,p_actual_flag           IN OUT VARCHAR2
218279  ,p_balance_type_code     OUT VARCHAR2
218280  ,p_gain_or_loss_ref      OUT VARCHAR2
218281  
218282 --TRANSACTION_ID
218283  , p_source_1            IN NUMBER
218284 --Item Concatenated Segments
218285  , p_source_2            IN VARCHAR2
218286 --Transaction Quantity
218287  , p_source_3            IN NUMBER
218288 --Transaction Unit of Measure Code
218289  , p_source_4            IN VARCHAR2
218290 --Inventory Transaction Type Description
218291  , p_source_5            IN VARCHAR2
218292 --Product Line Accounting Category Bridging Account
218293  , p_source_22            IN NUMBER
218294 --DISTRIBUTION_IDENTIFIER
218295  , p_source_84            IN NUMBER
218296 --Distribution Type
218297  , p_source_85            IN VARCHAR2
218298  , p_source_85_meaning    IN VARCHAR2
218299 --Entered Currency Code
218300  , p_source_88            IN VARCHAR2
218301 --Entered Amount
218302  , p_source_91            IN NUMBER
218303 --Currency Conversion Date
218304  , p_source_92            IN DATE
218305 --Currency Conversion Rate
218306  , p_source_93            IN NUMBER
218307 --Currency Conversion Type
218308  , p_source_94            IN VARCHAR2
218309 --Accounted Amount
218310  , p_source_95            IN NUMBER
218311 --Accounting Line Type
218312  , p_source_97            IN NUMBER
218313 )
218314 IS
218315 
218316 l_component_type              VARCHAR2(80);
218317 l_component_code              VARCHAR2(30);
218318 l_component_type_code         VARCHAR2(1);
218319 l_component_appl_id           INTEGER;
218320 l_amb_context_code            VARCHAR2(30);
218321 l_entity_code                 VARCHAR2(30);
218322 l_event_class_code            VARCHAR2(30);
218323 l_ae_header_id                NUMBER;
218324 l_event_type_code             VARCHAR2(30);
218325 l_line_definition_code        VARCHAR2(30);
218326 l_line_definition_owner_code  VARCHAR2(1);
218327 --
218328 -- adr variables
218329 l_segment                     VARCHAR2(30);
218330 l_ccid                        NUMBER;
218331 l_adr_transaction_coa_id      NUMBER;
218332 l_adr_accounting_coa_id       NUMBER;
218333 l_adr_flexfield_segment_code  VARCHAR2(30);
218334 l_adr_flex_value_set_id       NUMBER;
218335 l_adr_value_type_code         VARCHAR2(30);
218336 l_adr_value_combination_id    NUMBER;
218337 l_adr_value_segment_code      VARCHAR2(30);
218338 
218339 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
218340 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
218341 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
218342 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
218343 
218344 -- 4262811 Variables ------------------------------------------------------------------------------------------
218345 l_entered_amt_idx             NUMBER;
218346 l_accted_amt_idx              NUMBER;
218347 l_acc_rev_flag                VARCHAR2(1);
218348 l_accrual_line_num            NUMBER;
218349 l_tmp_amt                     NUMBER;
218350 l_acc_rev_natural_side_code   VARCHAR2(1);
218351 
218352 l_num_entries                 NUMBER;
218353 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
218354 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
218355 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
218356 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
218357 l_recog_line_1                NUMBER;
218358 l_recog_line_2                NUMBER;
218359 
218360 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
218361 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
218362 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
218363 
218364 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
218365 
218366 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
218367 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
218368 
218369 ---------------------------------------------------------------------------------------------------------------
218370 
218371 
218372 --
218373 -- bulk performance
218374 --
218375 l_balance_type_code           VARCHAR2(1);
218376 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
218377 l_log_module                  VARCHAR2(240);
218378 
218379 --
218380 -- Upgrade strategy
218381 --
218382 l_actual_upg_option           VARCHAR2(1);
218383 l_enc_upg_option           VARCHAR2(1);
218384 
218385 --
218386 BEGIN
218387 --
218388 IF g_log_enabled THEN
218389       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_397';
218390 END IF;
218391 --
218392 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
218393 
218394       trace
218395          (p_msg      => 'BEGIN of AcctLineType_397'
218396          ,p_level    => C_LEVEL_PROCEDURE
218397          ,p_module   => l_log_module);
218398 
218399 END IF;
218400 --
218401 l_component_type             := 'AMB_JLT';
218402 l_component_code             := 'PI_BRIDGING 211FM';
218403 l_component_type_code        := 'S';
218404 l_component_appl_id          :=  707;
218405 l_amb_context_code           := 'DEFAULT';
218406 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
218407 l_event_class_code           := 'USER_DEFINE';
218408 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
218409 l_line_definition_owner_code := 'S';
218410 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
218411 --
218412 l_balance_type_code          := 'A';
218413 l_segment                     := NULL;
218414 l_ccid                        := NULL;
218415 l_adr_transaction_coa_id      := NULL;
218416 l_adr_accounting_coa_id       := NULL;
218417 l_adr_flexfield_segment_code  := NULL;
218418 l_adr_flex_value_set_id       := NULL;
218419 l_adr_value_type_code         := NULL;
218420 l_adr_value_combination_id    := NULL;
218421 l_adr_value_segment_code      := NULL;
218422 
218423 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
218424 l_bflow_class_code           := '';    -- 4219869 Business Flow
218425 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
218426 l_budgetary_control_flag     := 'N';
218427 
218428 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
218429 l_bflow_applied_to_amt       := NULL; -- 5132302
218430 l_entered_amt_idx            := NULL;          -- 4262811
218431 l_accted_amt_idx             := NULL;          -- 4262811
218432 l_acc_rev_flag               := NULL;          -- 4262811
218433 l_accrual_line_num           := NULL;          -- 4262811
218434 l_tmp_amt                    := NULL;          -- 4262811
218435 --
218436  
218437 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
218438     l_balance_type_code <> 'B' THEN
218439 IF NVL(p_source_97,9E125) =  1
218440  THEN 
218441 
218442    --
218443    XLA_AE_LINES_PKG.SetNewLine;
218444 
218445    p_balance_type_code          := l_balance_type_code;
218446    -- set the flag so later we will know whether the gain loss line needs to be created
218447    
218448    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
218449      p_actual_flag :='A';
218450    END IF;
218451 
218452    --
218453    -- bulk performance
218454    --
218455    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
218456                                       p_header_num   => 0); -- 4262811
218457    --
218458    -- set accounting line options
218459    --
218460    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
218461            p_natural_side_code          => 'D'
218462          , p_gain_or_loss_flag          => 'N'
218463          , p_gl_transfer_mode_code      => 'S'
218464          , p_acct_entry_type_code       => 'A'
218465          , p_switch_side_flag           => 'Y'
218466          , p_merge_duplicate_code       => 'N'
218467          );
218468    --
218469    l_acc_rev_natural_side_code := 'C';  -- 4262811
218470    -- 
218471    --
218472    -- set accounting line type info
218473    --
218474    xla_ae_lines_pkg.SetAcctLineType
218475       (p_component_type             => l_component_type
218476       ,p_event_type_code            => l_event_type_code
218477       ,p_line_definition_owner_code => l_line_definition_owner_code
218478       ,p_line_definition_code       => l_line_definition_code
218479       ,p_accounting_line_code       => l_component_code
218480       ,p_accounting_line_type_code  => l_component_type_code
218481       ,p_accounting_line_appl_id    => l_component_appl_id
218482       ,p_amb_context_code           => l_amb_context_code
218483       ,p_entity_code                => l_entity_code
218484       ,p_event_class_code           => l_event_class_code);
218485    --
218486    -- set accounting class
218487    --
218488    xla_ae_lines_pkg.SetAcctClass(
218489            p_accounting_class_code  => 'BRIDGING'
218490          , p_ae_header_id           => l_ae_header_id
218491          );
218492 
218493    --
218494    -- set rounding class
218495    --
218496    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
218497                       'BRIDGING';
218498 
218499    --
218500    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
218501    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
218502    --
218503    -- bulk performance
218504    --
218505    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
218506 
218507    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
218508       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
218509 
218510    -- 4955764
218511    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
218512       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
218513 
218514    -- 4458381 Public Sector Enh
218515    
218516    --
218517    -- set accounting attributes for the line type
218518    --
218519    l_entered_amt_idx := 3;
218520    l_accted_amt_idx  := 8;
218521    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
218522    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
218523    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
218524    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
218525    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
218526    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
218527    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
218528    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
218529    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
218530    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
218531    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
218532    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
218533    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
218534    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
218535    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
218536    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
218537    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
218538 
218539    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
218540    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
218541 
218542    ---------------------------------------------------------------------------------------------------------------
218543    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
218544    ---------------------------------------------------------------------------------------------------------------
218545    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
218546 
218547    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
218548    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
218549 
218550    IF xla_accounting_cache_pkg.GetValueChar
218551          (p_source_code         => 'LEDGER_CATEGORY_CODE'
218552          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
218553    AND l_bflow_method_code = 'PRIOR_ENTRY'
218554 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
218555    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
218556          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
218557        )
218558    THEN
218559          xla_ae_lines_pkg.BflowUpgEntry
218560            (p_business_method_code    => l_bflow_method_code
218561            ,p_business_class_code     => l_bflow_class_code
218562            ,p_balance_type            => l_balance_type_code);
218563    ELSE
218564       NULL;
218565 -- No business flow processing for business flow method of NONE.
218566    END IF;
218567 
218568    --
218569    -- call analytical criteria
218570    --
218571    
218572    --
218573    -- call description
218574    --
218575    
218576 xla_ae_lines_pkg.SetLineDescription(
218577    p_ae_header_id => l_ae_header_id
218578   ,p_description  => Description_1 (
218579      p_application_id         => p_application_id
218580    , p_ae_header_id           => l_ae_header_id 
218581 , p_source_1 => p_source_1
218582 , p_source_2 => p_source_2
218583 , p_source_3 => p_source_3
218584 , p_source_4 => p_source_4
218585 , p_source_5 => p_source_5
218586    )
218587 );
218588 
218589 
218590    --
218591    -- call ADRs
218592    -- Bug 4922099
218593    --
218594    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
218595         (NVL(l_actual_upg_option, 'N') = 'O') OR
218596         (NVL(l_enc_upg_option, 'N') = 'O')
218597       )
218598    THEN
218599    NULL;
218600    --
218601    --
218602    
218603   l_ccid := AcctDerRule_11(
218604            p_application_id           => p_application_id
218605          , p_ae_header_id             => l_ae_header_id 
218606 , p_source_22 => p_source_22
218607          , x_transaction_coa_id       => l_adr_transaction_coa_id
218608          , x_accounting_coa_id        => l_adr_accounting_coa_id
218609          , x_value_type_code          => l_adr_value_type_code
218610          , p_side                     => 'NA'
218611    );
218612 
218613    xla_ae_lines_pkg.set_ccid(
218614     p_code_combination_id          => l_ccid
218615   , p_value_type_code              => l_adr_value_type_code
218616   , p_transaction_coa_id           => l_adr_transaction_coa_id
218617   , p_accounting_coa_id            => l_adr_accounting_coa_id
218618   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
218619   , p_adr_type_code                => 'S'
218620   , p_component_type               => l_component_type
218621   , p_component_code               => l_component_code
218622   , p_component_type_code          => l_component_type_code
218623   , p_component_appl_id            => l_component_appl_id
218624   , p_amb_context_code             => l_amb_context_code
218625   , p_side                         => 'NA'
218626   );
218627 
218628 
218629    --
218630    --
218631    END IF;
218632    --
218633    -- Bug 4922099
218634    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
218635           (NVL(l_enc_upg_option, 'N') = 'O')
218636         ) AND
218637         (l_bflow_method_code = 'PRIOR_ENTRY')
218638       )
218639    THEN
218640       IF
218641       --
218642       1 = 2
218643       --
218644       THEN
218645       xla_accounting_err_pkg.build_message
218646                                     (p_appli_s_name            => 'XLA'
218647                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
218648                                     ,p_token_1                 => 'LINE_NUMBER'
218649                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
218650                                     ,p_token_2                 => 'LINE_TYPE_NAME'
218651                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
218652                                                                              l_component_type
218653                                                                             ,l_component_code
218654                                                                             ,l_component_type_code
218655                                                                             ,l_component_appl_id
218656                                                                             ,l_amb_context_code
218657                                                                             ,l_entity_code
218658                                                                             ,l_event_class_code
218659                                                                            )
218660                                     ,p_token_3                 => 'OWNER'
218661                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
218662                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
218663                                                                           ,p_lookup_code    => l_component_type_code
218664                                                                          )
218665                                     ,p_token_4                 => 'PRODUCT_NAME'
218666                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
218667                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
218668                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
218669                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
218670                                     ,p_ae_header_id            =>  NULL
218671                                        );
218672 
218673         IF (C_LEVEL_ERROR>= g_log_level) THEN
218674                  trace
218675                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
218676                       ,p_level    => C_LEVEL_ERROR
218677                       ,p_module   => l_log_module);
218678         END IF;
218679       END IF;
218680    END IF;
218681    --
218682    --
218683    ------------------------------------------------------------------------------------------------
218684    -- 4219869 Business Flow
218685    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
218686    -- Prior Entry.  Currently, the following code is always generated.
218687    ------------------------------------------------------------------------------------------------
218688    XLA_AE_LINES_PKG.ValidateCurrentLine;
218689 
218690    ------------------------------------------------------------------------------------
218691    -- 4219869 Business Flow
218692    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
218693    ------------------------------------------------------------------------------------
218694    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
218695 
218696    ----------------------------------------------------------------------------------
218697    -- 4219869 Business Flow
218698    -- Update journal entry status -- Need to generate this within IF <condition>
218699    ----------------------------------------------------------------------------------
218700    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
218701          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
218702          ,p_balance_type_code => l_balance_type_code
218703          );
218704 
218705    -------------------------------------------------------------------------------------------
218706    -- 4262811 - Generate the Accrual Reversal lines
218707    -------------------------------------------------------------------------------------------
218708    BEGIN
218709       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
218710                               (g_array_event(p_event_id).array_value_num('header_index'));
218711       IF l_acc_rev_flag IS NULL THEN
218712          l_acc_rev_flag := 'N';
218713       END IF;
218714    EXCEPTION
218715       WHEN OTHERS THEN
218716          l_acc_rev_flag := 'N';
218717    END;
218718    --
218719    IF (l_acc_rev_flag = 'Y') THEN
218720 
218721        -- 4645092  ------------------------------------------------------------------------------
218722        -- To allow MPA report to determine if it should generate report process
218723        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
218724        ------------------------------------------------------------------------------------------
218725 
218726        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
218727        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
218728    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
218729    -- call ADRs
218730    -- Bug 4922099
218731    --
218732    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
218733         (NVL(l_actual_upg_option, 'N') = 'O') OR
218734         (NVL(l_enc_upg_option, 'N') = 'O')
218735       )
218736    THEN
218737    NULL;
218738    --
218739    --
218740    
218741   l_ccid := AcctDerRule_11(
218742            p_application_id           => p_application_id
218743          , p_ae_header_id             => l_ae_header_id 
218744 , p_source_22 => p_source_22
218745          , x_transaction_coa_id       => l_adr_transaction_coa_id
218746          , x_accounting_coa_id        => l_adr_accounting_coa_id
218747          , x_value_type_code          => l_adr_value_type_code
218748          , p_side                     => 'NA'
218749    );
218750 
218751    xla_ae_lines_pkg.set_ccid(
218752     p_code_combination_id          => l_ccid
218753   , p_value_type_code              => l_adr_value_type_code
218754   , p_transaction_coa_id           => l_adr_transaction_coa_id
218755   , p_accounting_coa_id            => l_adr_accounting_coa_id
218756   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
218757   , p_adr_type_code                => 'S'
218758   , p_component_type               => l_component_type
218759   , p_component_code               => l_component_code
218760   , p_component_type_code          => l_component_type_code
218761   , p_component_appl_id            => l_component_appl_id
218762   , p_amb_context_code             => l_amb_context_code
218763   , p_side                         => 'NA'
218764   );
218765 
218766 
218767    --
218768    --
218769    END IF;
218770 
218771        --
218772        -- Update the line information that should be overwritten
218773        --
218774        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
218775                                          p_header_num   => 1);
218776        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
218777 
218778        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
218779 
218780        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
218781           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
218782        END IF;
218783 
218784       --
218785       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
218786       --
218787       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
218788           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
218789       ELSE
218790           ---------------------------------------------------------------------------------------------------
218791           -- 4262811a Switch Sign
218792           ---------------------------------------------------------------------------------------------------
218793           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
218794           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
218795                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
218796           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
218797                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
218798           -- 5132302
218799           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
218800                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
218801 
218802       END IF;
218803 
218804       -- 4955764
218805       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
218806       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
218807 
218808 
218809       XLA_AE_LINES_PKG.ValidateCurrentLine;
218810       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
218811 
218812       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
218813                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
218814                ,p_balance_type_code => l_balance_type_code);
218815 
218816    END IF;
218817 
218818    -----------------------------------------------------------------------------------------
218819    -- 4262811 Multiperiod Accounting
218820    -----------------------------------------------------------------------------------------
218821      -- No MPA option is assigned.
218822 
218823 
218824 END IF;
218825 END IF;
218826 --
218827 
218828 --
218829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
218830    trace
218831       (p_msg      => 'END of AcctLineType_397'
218832       ,p_level    => C_LEVEL_PROCEDURE
218833       ,p_module   => l_log_module);
218834 END IF;
218835 --
218836 EXCEPTION
218837   WHEN xla_exceptions_pkg.application_exception THEN
218838       RAISE;
218839   WHEN OTHERS THEN
218840        xla_exceptions_pkg.raise_message
218841            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_397');
218842 END AcctLineType_397;
218843 --
218844 
218845 ---------------------------------------
218846 --
218847 -- PRIVATE FUNCTION
218848 --         AcctLineType_398
218849 --
218850 ---------------------------------------
218851 PROCEDURE AcctLineType_398 (
218852   p_application_id        IN NUMBER
218853  ,p_event_id              IN NUMBER
218854  ,p_calculate_acctd_flag  IN VARCHAR2
218855  ,p_calculate_g_l_flag    IN VARCHAR2
218856  ,p_actual_flag           IN OUT VARCHAR2
218857  ,p_balance_type_code     OUT VARCHAR2
218858  ,p_gain_or_loss_ref      OUT VARCHAR2
218859  
218860 --TRANSACTION_ID
218861  , p_source_1            IN NUMBER
218862 --Item Concatenated Segments
218863  , p_source_2            IN VARCHAR2
218864 --Transaction Quantity
218865  , p_source_3            IN NUMBER
218866 --Transaction Unit of Measure Code
218867  , p_source_4            IN VARCHAR2
218868 --Inventory Transaction Type Description
218869  , p_source_5            IN VARCHAR2
218870 --Product Line Accounting Category Bridging Account
218871  , p_source_22            IN NUMBER
218872 --Applied to Application ID
218873  , p_source_79            IN NUMBER
218874 --Applied to Distribution Link Type
218875  , p_source_80            IN VARCHAR2
218876 --Applied to Entity Code
218877  , p_source_81            IN VARCHAR2
218878 --DISTRIBUTION_IDENTIFIER
218879  , p_source_84            IN NUMBER
218880 --Distribution Type
218881  , p_source_85            IN VARCHAR2
218882  , p_source_85_meaning    IN VARCHAR2
218883 --Encumbrance Reversal Amount Entered
218884  , p_source_87            IN NUMBER
218885 --Entered Currency Code
218886  , p_source_88            IN VARCHAR2
218887 --Transaction Encumbrance Reversal Amount
218888  , p_source_89            IN NUMBER
218889 --Entered Amount
218890  , p_source_91            IN NUMBER
218891 --Currency Conversion Date
218892  , p_source_92            IN DATE
218893 --Currency Conversion Rate
218894  , p_source_93            IN NUMBER
218895 --Currency Conversion Type
218896  , p_source_94            IN VARCHAR2
218897 --Accounted Amount
218898  , p_source_95            IN NUMBER
218899 --Accounting Line Type
218900  , p_source_97            IN NUMBER
218901 --Costing Encumbrance Upgrade Option
218902  , p_source_100            IN VARCHAR2
218903 --TXN_PO_DISTRIBUTION_ID
218904  , p_source_101            IN NUMBER
218905 --TXN_PO_HEADER_ID
218906  , p_source_102            IN NUMBER
218907 --Requisition Budget Account
218908  , p_source_103            IN NUMBER
218909 --Requisition Encumbrance Type Identifier
218910  , p_source_104            IN NUMBER
218911 )
218912 IS
218913 
218914 l_component_type              VARCHAR2(80);
218915 l_component_code              VARCHAR2(30);
218916 l_component_type_code         VARCHAR2(1);
218917 l_component_appl_id           INTEGER;
218918 l_amb_context_code            VARCHAR2(30);
218919 l_entity_code                 VARCHAR2(30);
218920 l_event_class_code            VARCHAR2(30);
218921 l_ae_header_id                NUMBER;
218922 l_event_type_code             VARCHAR2(30);
218923 l_line_definition_code        VARCHAR2(30);
218924 l_line_definition_owner_code  VARCHAR2(1);
218925 --
218926 -- adr variables
218927 l_segment                     VARCHAR2(30);
218928 l_ccid                        NUMBER;
218929 l_adr_transaction_coa_id      NUMBER;
218930 l_adr_accounting_coa_id       NUMBER;
218931 l_adr_flexfield_segment_code  VARCHAR2(30);
218932 l_adr_flex_value_set_id       NUMBER;
218933 l_adr_value_type_code         VARCHAR2(30);
218934 l_adr_value_combination_id    NUMBER;
218935 l_adr_value_segment_code      VARCHAR2(30);
218936 
218937 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
218938 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
218939 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
218940 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
218941 
218942 -- 4262811 Variables ------------------------------------------------------------------------------------------
218943 l_entered_amt_idx             NUMBER;
218944 l_accted_amt_idx              NUMBER;
218945 l_acc_rev_flag                VARCHAR2(1);
218946 l_accrual_line_num            NUMBER;
218947 l_tmp_amt                     NUMBER;
218948 l_acc_rev_natural_side_code   VARCHAR2(1);
218949 
218950 l_num_entries                 NUMBER;
218951 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
218952 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
218953 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
218954 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
218955 l_recog_line_1                NUMBER;
218956 l_recog_line_2                NUMBER;
218957 
218958 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
218959 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
218960 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
218961 
218962 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
218963 
218964 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
218965 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
218966 
218967 ---------------------------------------------------------------------------------------------------------------
218968 
218969 
218970 --
218971 -- bulk performance
218972 --
218973 l_balance_type_code           VARCHAR2(1);
218974 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
218975 l_log_module                  VARCHAR2(240);
218976 
218977 --
218978 -- Upgrade strategy
218979 --
218980 l_actual_upg_option           VARCHAR2(1);
218981 l_enc_upg_option           VARCHAR2(1);
218982 
218983 --
218984 BEGIN
218985 --
218986 IF g_log_enabled THEN
218987       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_398';
218988 END IF;
218989 --
218990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
218991 
218992       trace
218993          (p_msg      => 'BEGIN of AcctLineType_398'
218994          ,p_level    => C_LEVEL_PROCEDURE
218995          ,p_module   => l_log_module);
218996 
218997 END IF;
218998 --
218999 l_component_type             := 'AMB_JLT';
219000 l_component_code             := 'PI_BRIDGING_121';
219001 l_component_type_code        := 'S';
219002 l_component_appl_id          :=  707;
219003 l_amb_context_code           := 'DEFAULT';
219004 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
219005 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
219006 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
219007 l_line_definition_owner_code := 'S';
219008 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_RCPT';
219009 --
219010 l_balance_type_code          := 'A';
219011 l_segment                     := NULL;
219012 l_ccid                        := NULL;
219013 l_adr_transaction_coa_id      := NULL;
219014 l_adr_accounting_coa_id       := NULL;
219015 l_adr_flexfield_segment_code  := NULL;
219016 l_adr_flex_value_set_id       := NULL;
219017 l_adr_value_type_code         := NULL;
219018 l_adr_value_combination_id    := NULL;
219019 l_adr_value_segment_code      := NULL;
219020 
219021 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
219022 l_bflow_class_code           := '';    -- 4219869 Business Flow
219023 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
219024 l_budgetary_control_flag     := 'N';
219025 
219026 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
219027 l_bflow_applied_to_amt       := NULL; -- 5132302
219028 l_entered_amt_idx            := NULL;          -- 4262811
219029 l_accted_amt_idx             := NULL;          -- 4262811
219030 l_acc_rev_flag               := NULL;          -- 4262811
219031 l_accrual_line_num           := NULL;          -- 4262811
219032 l_tmp_amt                    := NULL;          -- 4262811
219033 --
219034  
219035 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
219036     l_balance_type_code <> 'B' THEN
219037 IF NVL(p_source_97,9E125) =  14
219038  THEN 
219039 
219040    --
219041    XLA_AE_LINES_PKG.SetNewLine;
219042 
219043    p_balance_type_code          := l_balance_type_code;
219044    -- set the flag so later we will know whether the gain loss line needs to be created
219045    
219046    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
219047      p_actual_flag :='A';
219048    END IF;
219049 
219050    --
219051    -- bulk performance
219052    --
219053    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
219054                                       p_header_num   => 0); -- 4262811
219055    --
219056    -- set accounting line options
219057    --
219058    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
219059            p_natural_side_code          => 'D'
219060          , p_gain_or_loss_flag          => 'N'
219061          , p_gl_transfer_mode_code      => 'S'
219062          , p_acct_entry_type_code       => 'A'
219063          , p_switch_side_flag           => 'Y'
219064          , p_merge_duplicate_code       => 'N'
219065          );
219066    --
219067    l_acc_rev_natural_side_code := 'C';  -- 4262811
219068    -- 
219069    --
219070    -- set accounting line type info
219071    --
219072    xla_ae_lines_pkg.SetAcctLineType
219073       (p_component_type             => l_component_type
219074       ,p_event_type_code            => l_event_type_code
219075       ,p_line_definition_owner_code => l_line_definition_owner_code
219076       ,p_line_definition_code       => l_line_definition_code
219077       ,p_accounting_line_code       => l_component_code
219078       ,p_accounting_line_type_code  => l_component_type_code
219079       ,p_accounting_line_appl_id    => l_component_appl_id
219080       ,p_amb_context_code           => l_amb_context_code
219081       ,p_entity_code                => l_entity_code
219082       ,p_event_class_code           => l_event_class_code);
219083    --
219084    -- set accounting class
219085    --
219086    xla_ae_lines_pkg.SetAcctClass(
219087            p_accounting_class_code  => 'BRIDGING'
219088          , p_ae_header_id           => l_ae_header_id
219089          );
219090 
219091    --
219092    -- set rounding class
219093    --
219094    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
219095                       'BRIDGING';
219096 
219097    --
219098    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
219099    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
219100    --
219101    -- bulk performance
219102    --
219103    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
219104 
219105    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
219106       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
219107 
219108    -- 4955764
219109    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
219110       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
219111 
219112    -- 4458381 Public Sector Enh
219113    
219114    --
219115    -- set accounting attributes for the line type
219116    --
219117    l_entered_amt_idx := 17;
219118    l_accted_amt_idx  := 22;
219119    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
219120    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
219121    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
219122    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
219123    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
219124    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
219125    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
219126    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
219127    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
219128    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
219129    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
219130    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
219131    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
219132    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
219133    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
219134    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
219135    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
219136    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
219137    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
219138    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
219139    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
219140    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
219141    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
219142    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
219143    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
219144    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
219145    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
219146    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
219147    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
219148    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
219149    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
219150    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
219151    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
219152    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
219153    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
219154    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
219155    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
219156    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
219157    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
219158    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
219159    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
219160    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
219161    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
219162    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
219163    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
219164    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
219165    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
219166    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
219167    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
219168 
219169    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
219170    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
219171 
219172    ---------------------------------------------------------------------------------------------------------------
219173    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
219174    ---------------------------------------------------------------------------------------------------------------
219175    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
219176 
219177    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
219178    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
219179 
219180    IF xla_accounting_cache_pkg.GetValueChar
219181          (p_source_code         => 'LEDGER_CATEGORY_CODE'
219182          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
219183    AND l_bflow_method_code = 'PRIOR_ENTRY'
219184 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
219185    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
219186          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
219187        )
219188    THEN
219189          xla_ae_lines_pkg.BflowUpgEntry
219190            (p_business_method_code    => l_bflow_method_code
219191            ,p_business_class_code     => l_bflow_class_code
219192            ,p_balance_type            => l_balance_type_code);
219193    ELSE
219194       NULL;
219195 -- No business flow processing for business flow method of NONE.
219196    END IF;
219197 
219198    --
219199    -- call analytical criteria
219200    --
219201    
219202    --
219203    -- call description
219204    --
219205    
219206 xla_ae_lines_pkg.SetLineDescription(
219207    p_ae_header_id => l_ae_header_id
219208   ,p_description  => Description_1 (
219209      p_application_id         => p_application_id
219210    , p_ae_header_id           => l_ae_header_id 
219211 , p_source_1 => p_source_1
219212 , p_source_2 => p_source_2
219213 , p_source_3 => p_source_3
219214 , p_source_4 => p_source_4
219215 , p_source_5 => p_source_5
219216    )
219217 );
219218 
219219 
219220    --
219221    -- call ADRs
219222    -- Bug 4922099
219223    --
219224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
219225         (NVL(l_actual_upg_option, 'N') = 'O') OR
219226         (NVL(l_enc_upg_option, 'N') = 'O')
219227       )
219228    THEN
219229    NULL;
219230    --
219231    --
219232    
219233   l_ccid := AcctDerRule_11(
219234            p_application_id           => p_application_id
219235          , p_ae_header_id             => l_ae_header_id 
219236 , p_source_22 => p_source_22
219237          , x_transaction_coa_id       => l_adr_transaction_coa_id
219238          , x_accounting_coa_id        => l_adr_accounting_coa_id
219239          , x_value_type_code          => l_adr_value_type_code
219240          , p_side                     => 'NA'
219241    );
219242 
219243    xla_ae_lines_pkg.set_ccid(
219244     p_code_combination_id          => l_ccid
219245   , p_value_type_code              => l_adr_value_type_code
219246   , p_transaction_coa_id           => l_adr_transaction_coa_id
219247   , p_accounting_coa_id            => l_adr_accounting_coa_id
219248   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
219249   , p_adr_type_code                => 'S'
219250   , p_component_type               => l_component_type
219251   , p_component_code               => l_component_code
219252   , p_component_type_code          => l_component_type_code
219253   , p_component_appl_id            => l_component_appl_id
219254   , p_amb_context_code             => l_amb_context_code
219255   , p_side                         => 'NA'
219256   );
219257 
219258 
219259    --
219260    --
219261    END IF;
219262    --
219263    -- Bug 4922099
219264    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
219265           (NVL(l_enc_upg_option, 'N') = 'O')
219266         ) AND
219267         (l_bflow_method_code = 'PRIOR_ENTRY')
219268       )
219269    THEN
219270       IF
219271       --
219272       1 = 2
219273       --
219274       THEN
219275       xla_accounting_err_pkg.build_message
219276                                     (p_appli_s_name            => 'XLA'
219277                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
219278                                     ,p_token_1                 => 'LINE_NUMBER'
219279                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
219280                                     ,p_token_2                 => 'LINE_TYPE_NAME'
219281                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
219282                                                                              l_component_type
219283                                                                             ,l_component_code
219284                                                                             ,l_component_type_code
219285                                                                             ,l_component_appl_id
219286                                                                             ,l_amb_context_code
219287                                                                             ,l_entity_code
219288                                                                             ,l_event_class_code
219289                                                                            )
219290                                     ,p_token_3                 => 'OWNER'
219291                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
219292                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
219293                                                                           ,p_lookup_code    => l_component_type_code
219294                                                                          )
219295                                     ,p_token_4                 => 'PRODUCT_NAME'
219296                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
219297                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
219298                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
219299                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
219300                                     ,p_ae_header_id            =>  NULL
219301                                        );
219302 
219303         IF (C_LEVEL_ERROR>= g_log_level) THEN
219304                  trace
219305                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
219306                       ,p_level    => C_LEVEL_ERROR
219307                       ,p_module   => l_log_module);
219308         END IF;
219309       END IF;
219310    END IF;
219311    --
219312    --
219313    ------------------------------------------------------------------------------------------------
219314    -- 4219869 Business Flow
219315    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
219316    -- Prior Entry.  Currently, the following code is always generated.
219317    ------------------------------------------------------------------------------------------------
219318    XLA_AE_LINES_PKG.ValidateCurrentLine;
219319 
219320    ------------------------------------------------------------------------------------
219321    -- 4219869 Business Flow
219322    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
219323    ------------------------------------------------------------------------------------
219324    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
219325 
219326    ----------------------------------------------------------------------------------
219327    -- 4219869 Business Flow
219328    -- Update journal entry status -- Need to generate this within IF <condition>
219329    ----------------------------------------------------------------------------------
219330    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
219331          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
219332          ,p_balance_type_code => l_balance_type_code
219333          );
219334 
219335    -------------------------------------------------------------------------------------------
219336    -- 4262811 - Generate the Accrual Reversal lines
219337    -------------------------------------------------------------------------------------------
219338    BEGIN
219339       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
219340                               (g_array_event(p_event_id).array_value_num('header_index'));
219341       IF l_acc_rev_flag IS NULL THEN
219342          l_acc_rev_flag := 'N';
219343       END IF;
219344    EXCEPTION
219345       WHEN OTHERS THEN
219346          l_acc_rev_flag := 'N';
219347    END;
219348    --
219349    IF (l_acc_rev_flag = 'Y') THEN
219350 
219351        -- 4645092  ------------------------------------------------------------------------------
219352        -- To allow MPA report to determine if it should generate report process
219353        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
219354        ------------------------------------------------------------------------------------------
219355 
219356        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
219357        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
219358    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
219359    -- call ADRs
219360    -- Bug 4922099
219361    --
219362    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
219363         (NVL(l_actual_upg_option, 'N') = 'O') OR
219364         (NVL(l_enc_upg_option, 'N') = 'O')
219365       )
219366    THEN
219367    NULL;
219368    --
219369    --
219370    
219371   l_ccid := AcctDerRule_11(
219372            p_application_id           => p_application_id
219373          , p_ae_header_id             => l_ae_header_id 
219374 , p_source_22 => p_source_22
219375          , x_transaction_coa_id       => l_adr_transaction_coa_id
219376          , x_accounting_coa_id        => l_adr_accounting_coa_id
219377          , x_value_type_code          => l_adr_value_type_code
219378          , p_side                     => 'NA'
219379    );
219380 
219381    xla_ae_lines_pkg.set_ccid(
219382     p_code_combination_id          => l_ccid
219383   , p_value_type_code              => l_adr_value_type_code
219384   , p_transaction_coa_id           => l_adr_transaction_coa_id
219385   , p_accounting_coa_id            => l_adr_accounting_coa_id
219386   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
219387   , p_adr_type_code                => 'S'
219388   , p_component_type               => l_component_type
219389   , p_component_code               => l_component_code
219390   , p_component_type_code          => l_component_type_code
219391   , p_component_appl_id            => l_component_appl_id
219392   , p_amb_context_code             => l_amb_context_code
219393   , p_side                         => 'NA'
219394   );
219395 
219396 
219397    --
219398    --
219399    END IF;
219400 
219401        --
219402        -- Update the line information that should be overwritten
219403        --
219404        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
219405                                          p_header_num   => 1);
219406        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
219407 
219408        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
219409 
219410        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
219411           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
219412        END IF;
219413 
219414       --
219415       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
219416       --
219417       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
219418           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
219419       ELSE
219420           ---------------------------------------------------------------------------------------------------
219421           -- 4262811a Switch Sign
219422           ---------------------------------------------------------------------------------------------------
219423           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
219424           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
219425                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
219426           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
219427                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
219428           -- 5132302
219429           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
219430                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
219431 
219432       END IF;
219433 
219434       -- 4955764
219435       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
219436       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
219437 
219438 
219439       XLA_AE_LINES_PKG.ValidateCurrentLine;
219440       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
219441 
219442       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
219443                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
219444                ,p_balance_type_code => l_balance_type_code);
219445 
219446    END IF;
219447 
219448    -----------------------------------------------------------------------------------------
219449    -- 4262811 Multiperiod Accounting
219450    -----------------------------------------------------------------------------------------
219451      -- No MPA option is assigned.
219452 
219453 
219454 END IF;
219455 END IF;
219456 --
219457 
219458 --
219459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
219460    trace
219461       (p_msg      => 'END of AcctLineType_398'
219462       ,p_level    => C_LEVEL_PROCEDURE
219463       ,p_module   => l_log_module);
219464 END IF;
219465 --
219466 EXCEPTION
219467   WHEN xla_exceptions_pkg.application_exception THEN
219468       RAISE;
219469   WHEN OTHERS THEN
219470        xla_exceptions_pkg.raise_message
219471            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_398');
219472 END AcctLineType_398;
219473 --
219474 
219475 ---------------------------------------
219476 --
219477 -- PRIVATE FUNCTION
219478 --         AcctLineType_399
219479 --
219480 ---------------------------------------
219481 PROCEDURE AcctLineType_399 (
219482   p_application_id        IN NUMBER
219483  ,p_event_id              IN NUMBER
219484  ,p_calculate_acctd_flag  IN VARCHAR2
219485  ,p_calculate_g_l_flag    IN VARCHAR2
219486  ,p_actual_flag           IN OUT VARCHAR2
219487  ,p_balance_type_code     OUT VARCHAR2
219488  ,p_gain_or_loss_ref      OUT VARCHAR2
219489  
219490 --TRANSACTION_ID
219491  , p_source_1            IN NUMBER
219492 --Item Concatenated Segments
219493  , p_source_2            IN VARCHAR2
219494 --Transaction Quantity
219495  , p_source_3            IN NUMBER
219496 --Transaction Unit of Measure Code
219497  , p_source_4            IN VARCHAR2
219498 --Inventory Transaction Type Description
219499  , p_source_5            IN VARCHAR2
219500 --Product Line Accounting Category Bridging Account
219501  , p_source_22            IN NUMBER
219502 --Applied to Application ID
219503  , p_source_79            IN NUMBER
219504 --Applied to Distribution Link Type
219505  , p_source_80            IN VARCHAR2
219506 --Applied to Entity Code
219507  , p_source_81            IN VARCHAR2
219508 --DISTRIBUTION_IDENTIFIER
219509  , p_source_84            IN NUMBER
219510 --Distribution Type
219511  , p_source_85            IN VARCHAR2
219512  , p_source_85_meaning    IN VARCHAR2
219513 --Encumbrance Reversal Amount Entered
219514  , p_source_87            IN NUMBER
219515 --Entered Currency Code
219516  , p_source_88            IN VARCHAR2
219517 --Transaction Encumbrance Reversal Amount
219518  , p_source_89            IN NUMBER
219519 --Entered Amount
219520  , p_source_91            IN NUMBER
219521 --Currency Conversion Date
219522  , p_source_92            IN DATE
219523 --Currency Conversion Rate
219524  , p_source_93            IN NUMBER
219525 --Currency Conversion Type
219526  , p_source_94            IN VARCHAR2
219527 --Accounted Amount
219528  , p_source_95            IN NUMBER
219529 --Accounting Line Type
219530  , p_source_97            IN NUMBER
219531 --Costing Encumbrance Upgrade Option
219532  , p_source_100            IN VARCHAR2
219533 --TXN_PO_DISTRIBUTION_ID
219534  , p_source_101            IN NUMBER
219535 --TXN_PO_HEADER_ID
219536  , p_source_102            IN NUMBER
219537 --Requisition Budget Account
219538  , p_source_103            IN NUMBER
219539 --Requisition Encumbrance Type Identifier
219540  , p_source_104            IN NUMBER
219541 )
219542 IS
219543 
219544 l_component_type              VARCHAR2(80);
219545 l_component_code              VARCHAR2(30);
219546 l_component_type_code         VARCHAR2(1);
219547 l_component_appl_id           INTEGER;
219548 l_amb_context_code            VARCHAR2(30);
219549 l_entity_code                 VARCHAR2(30);
219550 l_event_class_code            VARCHAR2(30);
219551 l_ae_header_id                NUMBER;
219552 l_event_type_code             VARCHAR2(30);
219553 l_line_definition_code        VARCHAR2(30);
219554 l_line_definition_owner_code  VARCHAR2(1);
219555 --
219556 -- adr variables
219557 l_segment                     VARCHAR2(30);
219558 l_ccid                        NUMBER;
219559 l_adr_transaction_coa_id      NUMBER;
219560 l_adr_accounting_coa_id       NUMBER;
219561 l_adr_flexfield_segment_code  VARCHAR2(30);
219562 l_adr_flex_value_set_id       NUMBER;
219563 l_adr_value_type_code         VARCHAR2(30);
219564 l_adr_value_combination_id    NUMBER;
219565 l_adr_value_segment_code      VARCHAR2(30);
219566 
219567 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
219568 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
219569 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
219570 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
219571 
219572 -- 4262811 Variables ------------------------------------------------------------------------------------------
219573 l_entered_amt_idx             NUMBER;
219574 l_accted_amt_idx              NUMBER;
219575 l_acc_rev_flag                VARCHAR2(1);
219576 l_accrual_line_num            NUMBER;
219577 l_tmp_amt                     NUMBER;
219578 l_acc_rev_natural_side_code   VARCHAR2(1);
219579 
219580 l_num_entries                 NUMBER;
219581 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
219582 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
219583 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
219584 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
219585 l_recog_line_1                NUMBER;
219586 l_recog_line_2                NUMBER;
219587 
219588 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
219589 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
219590 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
219591 
219592 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
219593 
219594 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
219595 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
219596 
219597 ---------------------------------------------------------------------------------------------------------------
219598 
219599 
219600 --
219601 -- bulk performance
219602 --
219603 l_balance_type_code           VARCHAR2(1);
219604 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
219605 l_log_module                  VARCHAR2(240);
219606 
219607 --
219608 -- Upgrade strategy
219609 --
219610 l_actual_upg_option           VARCHAR2(1);
219611 l_enc_upg_option           VARCHAR2(1);
219612 
219613 --
219614 BEGIN
219615 --
219616 IF g_log_enabled THEN
219617       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_399';
219618 END IF;
219619 --
219620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
219621 
219622       trace
219623          (p_msg      => 'BEGIN of AcctLineType_399'
219624          ,p_level    => C_LEVEL_PROCEDURE
219625          ,p_module   => l_log_module);
219626 
219627 END IF;
219628 --
219629 l_component_type             := 'AMB_JLT';
219630 l_component_code             := 'PI_BRIDGING_122';
219631 l_component_type_code        := 'S';
219632 l_component_appl_id          :=  707;
219633 l_amb_context_code           := 'DEFAULT';
219634 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
219635 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
219636 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
219637 l_line_definition_owner_code := 'S';
219638 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
219639 --
219640 l_balance_type_code          := 'A';
219641 l_segment                     := NULL;
219642 l_ccid                        := NULL;
219643 l_adr_transaction_coa_id      := NULL;
219644 l_adr_accounting_coa_id       := NULL;
219645 l_adr_flexfield_segment_code  := NULL;
219646 l_adr_flex_value_set_id       := NULL;
219647 l_adr_value_type_code         := NULL;
219648 l_adr_value_combination_id    := NULL;
219649 l_adr_value_segment_code      := NULL;
219650 
219651 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
219652 l_bflow_class_code           := '';    -- 4219869 Business Flow
219653 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
219654 l_budgetary_control_flag     := 'N';
219655 
219656 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
219657 l_bflow_applied_to_amt       := NULL; -- 5132302
219658 l_entered_amt_idx            := NULL;          -- 4262811
219659 l_accted_amt_idx             := NULL;          -- 4262811
219660 l_acc_rev_flag               := NULL;          -- 4262811
219661 l_accrual_line_num           := NULL;          -- 4262811
219662 l_tmp_amt                    := NULL;          -- 4262811
219663 --
219664  
219665 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
219666     l_balance_type_code <> 'B' THEN
219667 IF NVL(p_source_97,9E125) =  9
219668  THEN 
219669 
219670    --
219671    XLA_AE_LINES_PKG.SetNewLine;
219672 
219673    p_balance_type_code          := l_balance_type_code;
219674    -- set the flag so later we will know whether the gain loss line needs to be created
219675    
219676    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
219677      p_actual_flag :='A';
219678    END IF;
219679 
219680    --
219681    -- bulk performance
219682    --
219683    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
219684                                       p_header_num   => 0); -- 4262811
219685    --
219686    -- set accounting line options
219687    --
219688    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
219689            p_natural_side_code          => 'D'
219690          , p_gain_or_loss_flag          => 'N'
219691          , p_gl_transfer_mode_code      => 'S'
219692          , p_acct_entry_type_code       => 'A'
219693          , p_switch_side_flag           => 'Y'
219694          , p_merge_duplicate_code       => 'N'
219695          );
219696    --
219697    l_acc_rev_natural_side_code := 'C';  -- 4262811
219698    -- 
219699    --
219700    -- set accounting line type info
219701    --
219702    xla_ae_lines_pkg.SetAcctLineType
219703       (p_component_type             => l_component_type
219704       ,p_event_type_code            => l_event_type_code
219705       ,p_line_definition_owner_code => l_line_definition_owner_code
219706       ,p_line_definition_code       => l_line_definition_code
219707       ,p_accounting_line_code       => l_component_code
219708       ,p_accounting_line_type_code  => l_component_type_code
219709       ,p_accounting_line_appl_id    => l_component_appl_id
219710       ,p_amb_context_code           => l_amb_context_code
219711       ,p_entity_code                => l_entity_code
219712       ,p_event_class_code           => l_event_class_code);
219713    --
219714    -- set accounting class
219715    --
219716    xla_ae_lines_pkg.SetAcctClass(
219717            p_accounting_class_code  => 'BRIDGING'
219718          , p_ae_header_id           => l_ae_header_id
219719          );
219720 
219721    --
219722    -- set rounding class
219723    --
219724    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
219725                       'BRIDGING';
219726 
219727    --
219728    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
219729    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
219730    --
219731    -- bulk performance
219732    --
219733    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
219734 
219735    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
219736       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
219737 
219738    -- 4955764
219739    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
219740       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
219741 
219742    -- 4458381 Public Sector Enh
219743    
219744    --
219745    -- set accounting attributes for the line type
219746    --
219747    l_entered_amt_idx := 17;
219748    l_accted_amt_idx  := 22;
219749    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
219750    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
219751    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
219752    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
219753    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
219754    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
219755    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
219756    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
219757    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
219758    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
219759    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
219760    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
219761    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
219762    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
219763    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
219764    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
219765    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
219766    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
219767    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
219768    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
219769    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
219770    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
219771    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
219772    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
219773    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
219774    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
219775    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
219776    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
219777    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
219778    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
219779    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
219780    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
219781    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
219782    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
219783    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
219784    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
219785    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
219786    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
219787    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
219788    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
219789    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
219790    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
219791    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
219792    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
219793    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
219794    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
219795    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
219796    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
219797    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
219798 
219799    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
219800    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
219801 
219802    ---------------------------------------------------------------------------------------------------------------
219803    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
219804    ---------------------------------------------------------------------------------------------------------------
219805    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
219806 
219807    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
219808    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
219809 
219810    IF xla_accounting_cache_pkg.GetValueChar
219811          (p_source_code         => 'LEDGER_CATEGORY_CODE'
219812          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
219813    AND l_bflow_method_code = 'PRIOR_ENTRY'
219814 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
219815    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
219816          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
219817        )
219818    THEN
219819          xla_ae_lines_pkg.BflowUpgEntry
219820            (p_business_method_code    => l_bflow_method_code
219821            ,p_business_class_code     => l_bflow_class_code
219822            ,p_balance_type            => l_balance_type_code);
219823    ELSE
219824       NULL;
219825 -- No business flow processing for business flow method of NONE.
219826    END IF;
219827 
219828    --
219829    -- call analytical criteria
219830    --
219831    
219832    --
219833    -- call description
219834    --
219835    
219836 xla_ae_lines_pkg.SetLineDescription(
219837    p_ae_header_id => l_ae_header_id
219838   ,p_description  => Description_1 (
219839      p_application_id         => p_application_id
219840    , p_ae_header_id           => l_ae_header_id 
219841 , p_source_1 => p_source_1
219842 , p_source_2 => p_source_2
219843 , p_source_3 => p_source_3
219844 , p_source_4 => p_source_4
219845 , p_source_5 => p_source_5
219846    )
219847 );
219848 
219849 
219850    --
219851    -- call ADRs
219852    -- Bug 4922099
219853    --
219854    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
219855         (NVL(l_actual_upg_option, 'N') = 'O') OR
219856         (NVL(l_enc_upg_option, 'N') = 'O')
219857       )
219858    THEN
219859    NULL;
219860    --
219861    --
219862    
219863   l_ccid := AcctDerRule_11(
219864            p_application_id           => p_application_id
219865          , p_ae_header_id             => l_ae_header_id 
219866 , p_source_22 => p_source_22
219867          , x_transaction_coa_id       => l_adr_transaction_coa_id
219868          , x_accounting_coa_id        => l_adr_accounting_coa_id
219869          , x_value_type_code          => l_adr_value_type_code
219870          , p_side                     => 'NA'
219871    );
219872 
219873    xla_ae_lines_pkg.set_ccid(
219874     p_code_combination_id          => l_ccid
219875   , p_value_type_code              => l_adr_value_type_code
219876   , p_transaction_coa_id           => l_adr_transaction_coa_id
219877   , p_accounting_coa_id            => l_adr_accounting_coa_id
219878   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
219879   , p_adr_type_code                => 'S'
219880   , p_component_type               => l_component_type
219881   , p_component_code               => l_component_code
219882   , p_component_type_code          => l_component_type_code
219883   , p_component_appl_id            => l_component_appl_id
219884   , p_amb_context_code             => l_amb_context_code
219885   , p_side                         => 'NA'
219886   );
219887 
219888 
219889    --
219890    --
219891    END IF;
219892    --
219893    -- Bug 4922099
219894    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
219895           (NVL(l_enc_upg_option, 'N') = 'O')
219896         ) AND
219897         (l_bflow_method_code = 'PRIOR_ENTRY')
219898       )
219899    THEN
219900       IF
219901       --
219902       1 = 2
219903       --
219904       THEN
219905       xla_accounting_err_pkg.build_message
219906                                     (p_appli_s_name            => 'XLA'
219907                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
219908                                     ,p_token_1                 => 'LINE_NUMBER'
219909                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
219910                                     ,p_token_2                 => 'LINE_TYPE_NAME'
219911                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
219912                                                                              l_component_type
219913                                                                             ,l_component_code
219914                                                                             ,l_component_type_code
219915                                                                             ,l_component_appl_id
219916                                                                             ,l_amb_context_code
219917                                                                             ,l_entity_code
219918                                                                             ,l_event_class_code
219919                                                                            )
219920                                     ,p_token_3                 => 'OWNER'
219921                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
219922                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
219923                                                                           ,p_lookup_code    => l_component_type_code
219924                                                                          )
219925                                     ,p_token_4                 => 'PRODUCT_NAME'
219926                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
219927                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
219928                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
219929                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
219930                                     ,p_ae_header_id            =>  NULL
219931                                        );
219932 
219933         IF (C_LEVEL_ERROR>= g_log_level) THEN
219934                  trace
219935                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
219936                       ,p_level    => C_LEVEL_ERROR
219937                       ,p_module   => l_log_module);
219938         END IF;
219939       END IF;
219940    END IF;
219941    --
219942    --
219943    ------------------------------------------------------------------------------------------------
219944    -- 4219869 Business Flow
219945    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
219946    -- Prior Entry.  Currently, the following code is always generated.
219947    ------------------------------------------------------------------------------------------------
219948    XLA_AE_LINES_PKG.ValidateCurrentLine;
219949 
219950    ------------------------------------------------------------------------------------
219951    -- 4219869 Business Flow
219952    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
219953    ------------------------------------------------------------------------------------
219954    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
219955 
219956    ----------------------------------------------------------------------------------
219957    -- 4219869 Business Flow
219958    -- Update journal entry status -- Need to generate this within IF <condition>
219959    ----------------------------------------------------------------------------------
219960    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
219961          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
219962          ,p_balance_type_code => l_balance_type_code
219963          );
219964 
219965    -------------------------------------------------------------------------------------------
219966    -- 4262811 - Generate the Accrual Reversal lines
219967    -------------------------------------------------------------------------------------------
219968    BEGIN
219969       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
219970                               (g_array_event(p_event_id).array_value_num('header_index'));
219971       IF l_acc_rev_flag IS NULL THEN
219972          l_acc_rev_flag := 'N';
219973       END IF;
219974    EXCEPTION
219975       WHEN OTHERS THEN
219976          l_acc_rev_flag := 'N';
219977    END;
219978    --
219979    IF (l_acc_rev_flag = 'Y') THEN
219980 
219981        -- 4645092  ------------------------------------------------------------------------------
219982        -- To allow MPA report to determine if it should generate report process
219983        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
219984        ------------------------------------------------------------------------------------------
219985 
219986        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
219987        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
219988    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
219989    -- call ADRs
219990    -- Bug 4922099
219991    --
219992    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
219993         (NVL(l_actual_upg_option, 'N') = 'O') OR
219994         (NVL(l_enc_upg_option, 'N') = 'O')
219995       )
219996    THEN
219997    NULL;
219998    --
219999    --
220000    
220001   l_ccid := AcctDerRule_11(
220002            p_application_id           => p_application_id
220003          , p_ae_header_id             => l_ae_header_id 
220004 , p_source_22 => p_source_22
220005          , x_transaction_coa_id       => l_adr_transaction_coa_id
220006          , x_accounting_coa_id        => l_adr_accounting_coa_id
220007          , x_value_type_code          => l_adr_value_type_code
220008          , p_side                     => 'NA'
220009    );
220010 
220011    xla_ae_lines_pkg.set_ccid(
220012     p_code_combination_id          => l_ccid
220013   , p_value_type_code              => l_adr_value_type_code
220014   , p_transaction_coa_id           => l_adr_transaction_coa_id
220015   , p_accounting_coa_id            => l_adr_accounting_coa_id
220016   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
220017   , p_adr_type_code                => 'S'
220018   , p_component_type               => l_component_type
220019   , p_component_code               => l_component_code
220020   , p_component_type_code          => l_component_type_code
220021   , p_component_appl_id            => l_component_appl_id
220022   , p_amb_context_code             => l_amb_context_code
220023   , p_side                         => 'NA'
220024   );
220025 
220026 
220027    --
220028    --
220029    END IF;
220030 
220031        --
220032        -- Update the line information that should be overwritten
220033        --
220034        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
220035                                          p_header_num   => 1);
220036        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
220037 
220038        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
220039 
220040        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
220041           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
220042        END IF;
220043 
220044       --
220045       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
220046       --
220047       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
220048           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
220049       ELSE
220050           ---------------------------------------------------------------------------------------------------
220051           -- 4262811a Switch Sign
220052           ---------------------------------------------------------------------------------------------------
220053           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
220054           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
220055                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
220056           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
220057                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
220058           -- 5132302
220059           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
220060                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
220061 
220062       END IF;
220063 
220064       -- 4955764
220065       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
220066       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
220067 
220068 
220069       XLA_AE_LINES_PKG.ValidateCurrentLine;
220070       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
220071 
220072       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
220073                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
220074                ,p_balance_type_code => l_balance_type_code);
220075 
220076    END IF;
220077 
220078    -----------------------------------------------------------------------------------------
220079    -- 4262811 Multiperiod Accounting
220080    -----------------------------------------------------------------------------------------
220081      -- No MPA option is assigned.
220082 
220083 
220084 END IF;
220085 END IF;
220086 --
220087 
220088 --
220089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
220090    trace
220091       (p_msg      => 'END of AcctLineType_399'
220092       ,p_level    => C_LEVEL_PROCEDURE
220093       ,p_module   => l_log_module);
220094 END IF;
220095 --
220096 EXCEPTION
220097   WHEN xla_exceptions_pkg.application_exception THEN
220098       RAISE;
220099   WHEN OTHERS THEN
220100        xla_exceptions_pkg.raise_message
220101            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_399');
220102 END AcctLineType_399;
220103 --
220104 
220105 ---------------------------------------
220106 --
220107 -- PRIVATE FUNCTION
220108 --         AcctLineType_400
220109 --
220110 ---------------------------------------
220111 PROCEDURE AcctLineType_400 (
220112   p_application_id        IN NUMBER
220113  ,p_event_id              IN NUMBER
220114  ,p_calculate_acctd_flag  IN VARCHAR2
220115  ,p_calculate_g_l_flag    IN VARCHAR2
220116  ,p_actual_flag           IN OUT VARCHAR2
220117  ,p_balance_type_code     OUT VARCHAR2
220118  ,p_gain_or_loss_ref      OUT VARCHAR2
220119  
220120 --TRANSACTION_ID
220121  , p_source_1            IN NUMBER
220122 --Item Concatenated Segments
220123  , p_source_2            IN VARCHAR2
220124 --Transaction Quantity
220125  , p_source_3            IN NUMBER
220126 --Transaction Unit of Measure Code
220127  , p_source_4            IN VARCHAR2
220128 --Inventory Transaction Type Description
220129  , p_source_5            IN VARCHAR2
220130 --Product Line Accounting Category Bridging Account
220131  , p_source_22            IN NUMBER
220132 --Applied to Application ID
220133  , p_source_79            IN NUMBER
220134 --Applied to Distribution Link Type
220135  , p_source_80            IN VARCHAR2
220136 --Applied to Entity Code
220137  , p_source_81            IN VARCHAR2
220138 --DISTRIBUTION_IDENTIFIER
220139  , p_source_84            IN NUMBER
220140 --Distribution Type
220141  , p_source_85            IN VARCHAR2
220142  , p_source_85_meaning    IN VARCHAR2
220143 --Encumbrance Reversal Amount Entered
220144  , p_source_87            IN NUMBER
220145 --Entered Currency Code
220146  , p_source_88            IN VARCHAR2
220147 --Transaction Encumbrance Reversal Amount
220148  , p_source_89            IN NUMBER
220149 --Entered Amount
220150  , p_source_91            IN NUMBER
220151 --Currency Conversion Date
220152  , p_source_92            IN DATE
220153 --Currency Conversion Rate
220154  , p_source_93            IN NUMBER
220155 --Currency Conversion Type
220156  , p_source_94            IN VARCHAR2
220157 --Accounted Amount
220158  , p_source_95            IN NUMBER
220159 --Accounting Line Type
220160  , p_source_97            IN NUMBER
220161 --Costing Encumbrance Upgrade Option
220162  , p_source_100            IN VARCHAR2
220163 --TXN_PO_DISTRIBUTION_ID
220164  , p_source_101            IN NUMBER
220165 --TXN_PO_HEADER_ID
220166  , p_source_102            IN NUMBER
220167 --Requisition Budget Account
220168  , p_source_103            IN NUMBER
220169 --Requisition Encumbrance Type Identifier
220170  , p_source_104            IN NUMBER
220171 )
220172 IS
220173 
220174 l_component_type              VARCHAR2(80);
220175 l_component_code              VARCHAR2(30);
220176 l_component_type_code         VARCHAR2(1);
220177 l_component_appl_id           INTEGER;
220178 l_amb_context_code            VARCHAR2(30);
220179 l_entity_code                 VARCHAR2(30);
220180 l_event_class_code            VARCHAR2(30);
220181 l_ae_header_id                NUMBER;
220182 l_event_type_code             VARCHAR2(30);
220183 l_line_definition_code        VARCHAR2(30);
220184 l_line_definition_owner_code  VARCHAR2(1);
220185 --
220186 -- adr variables
220187 l_segment                     VARCHAR2(30);
220188 l_ccid                        NUMBER;
220189 l_adr_transaction_coa_id      NUMBER;
220190 l_adr_accounting_coa_id       NUMBER;
220191 l_adr_flexfield_segment_code  VARCHAR2(30);
220192 l_adr_flex_value_set_id       NUMBER;
220193 l_adr_value_type_code         VARCHAR2(30);
220194 l_adr_value_combination_id    NUMBER;
220195 l_adr_value_segment_code      VARCHAR2(30);
220196 
220197 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
220198 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
220199 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
220200 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
220201 
220202 -- 4262811 Variables ------------------------------------------------------------------------------------------
220203 l_entered_amt_idx             NUMBER;
220204 l_accted_amt_idx              NUMBER;
220205 l_acc_rev_flag                VARCHAR2(1);
220206 l_accrual_line_num            NUMBER;
220207 l_tmp_amt                     NUMBER;
220208 l_acc_rev_natural_side_code   VARCHAR2(1);
220209 
220210 l_num_entries                 NUMBER;
220211 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
220212 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
220213 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
220214 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
220215 l_recog_line_1                NUMBER;
220216 l_recog_line_2                NUMBER;
220217 
220218 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
220219 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
220220 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
220221 
220222 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
220223 
220224 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
220225 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
220226 
220227 ---------------------------------------------------------------------------------------------------------------
220228 
220229 
220230 --
220231 -- bulk performance
220232 --
220233 l_balance_type_code           VARCHAR2(1);
220234 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
220235 l_log_module                  VARCHAR2(240);
220236 
220237 --
220238 -- Upgrade strategy
220239 --
220240 l_actual_upg_option           VARCHAR2(1);
220241 l_enc_upg_option           VARCHAR2(1);
220242 
220243 --
220244 BEGIN
220245 --
220246 IF g_log_enabled THEN
220247       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_400';
220248 END IF;
220249 --
220250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
220251 
220252       trace
220253          (p_msg      => 'BEGIN of AcctLineType_400'
220254          ,p_level    => C_LEVEL_PROCEDURE
220255          ,p_module   => l_log_module);
220256 
220257 END IF;
220258 --
220259 l_component_type             := 'AMB_JLT';
220260 l_component_code             := 'PI_BRIDGING_122';
220261 l_component_type_code        := 'S';
220262 l_component_appl_id          :=  707;
220263 l_amb_context_code           := 'DEFAULT';
220264 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
220265 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
220266 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
220267 l_line_definition_owner_code := 'S';
220268 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
220269 --
220270 l_balance_type_code          := 'A';
220271 l_segment                     := NULL;
220272 l_ccid                        := NULL;
220273 l_adr_transaction_coa_id      := NULL;
220274 l_adr_accounting_coa_id       := NULL;
220275 l_adr_flexfield_segment_code  := NULL;
220276 l_adr_flex_value_set_id       := NULL;
220277 l_adr_value_type_code         := NULL;
220278 l_adr_value_combination_id    := NULL;
220279 l_adr_value_segment_code      := NULL;
220280 
220281 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
220282 l_bflow_class_code           := '';    -- 4219869 Business Flow
220283 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
220284 l_budgetary_control_flag     := 'N';
220285 
220286 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
220287 l_bflow_applied_to_amt       := NULL; -- 5132302
220288 l_entered_amt_idx            := NULL;          -- 4262811
220289 l_accted_amt_idx             := NULL;          -- 4262811
220290 l_acc_rev_flag               := NULL;          -- 4262811
220291 l_accrual_line_num           := NULL;          -- 4262811
220292 l_tmp_amt                    := NULL;          -- 4262811
220293 --
220294  
220295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
220296     l_balance_type_code <> 'B' THEN
220297 IF NVL(p_source_97,9E125) =  9
220298  THEN 
220299 
220300    --
220301    XLA_AE_LINES_PKG.SetNewLine;
220302 
220303    p_balance_type_code          := l_balance_type_code;
220304    -- set the flag so later we will know whether the gain loss line needs to be created
220305    
220306    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
220307      p_actual_flag :='A';
220308    END IF;
220309 
220310    --
220311    -- bulk performance
220312    --
220313    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
220314                                       p_header_num   => 0); -- 4262811
220315    --
220316    -- set accounting line options
220317    --
220318    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
220319            p_natural_side_code          => 'D'
220320          , p_gain_or_loss_flag          => 'N'
220321          , p_gl_transfer_mode_code      => 'S'
220322          , p_acct_entry_type_code       => 'A'
220323          , p_switch_side_flag           => 'Y'
220324          , p_merge_duplicate_code       => 'N'
220325          );
220326    --
220327    l_acc_rev_natural_side_code := 'C';  -- 4262811
220328    -- 
220329    --
220330    -- set accounting line type info
220331    --
220332    xla_ae_lines_pkg.SetAcctLineType
220333       (p_component_type             => l_component_type
220334       ,p_event_type_code            => l_event_type_code
220335       ,p_line_definition_owner_code => l_line_definition_owner_code
220336       ,p_line_definition_code       => l_line_definition_code
220337       ,p_accounting_line_code       => l_component_code
220338       ,p_accounting_line_type_code  => l_component_type_code
220339       ,p_accounting_line_appl_id    => l_component_appl_id
220340       ,p_amb_context_code           => l_amb_context_code
220341       ,p_entity_code                => l_entity_code
220342       ,p_event_class_code           => l_event_class_code);
220343    --
220344    -- set accounting class
220345    --
220346    xla_ae_lines_pkg.SetAcctClass(
220347            p_accounting_class_code  => 'BRIDGING'
220348          , p_ae_header_id           => l_ae_header_id
220349          );
220350 
220351    --
220352    -- set rounding class
220353    --
220354    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
220355                       'BRIDGING';
220356 
220357    --
220358    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
220359    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
220360    --
220361    -- bulk performance
220362    --
220363    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
220364 
220365    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
220366       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
220367 
220368    -- 4955764
220369    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
220370       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
220371 
220372    -- 4458381 Public Sector Enh
220373    
220374    --
220375    -- set accounting attributes for the line type
220376    --
220377    l_entered_amt_idx := 17;
220378    l_accted_amt_idx  := 22;
220379    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
220380    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
220381    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
220382    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
220383    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
220384    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
220385    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
220386    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
220387    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
220388    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
220389    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
220390    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
220391    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
220392    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
220393    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
220394    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
220395    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
220396    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
220397    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
220398    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
220399    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
220400    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
220401    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
220402    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
220403    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
220404    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
220405    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
220406    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
220407    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
220408    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
220409    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
220410    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
220411    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
220412    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
220413    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
220414    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
220415    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
220416    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
220417    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
220418    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
220419    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
220420    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
220421    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
220422    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
220423    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
220424    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
220425    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
220426    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
220427    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
220428 
220429    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
220430    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
220431 
220432    ---------------------------------------------------------------------------------------------------------------
220433    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
220434    ---------------------------------------------------------------------------------------------------------------
220435    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
220436 
220437    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
220438    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
220439 
220440    IF xla_accounting_cache_pkg.GetValueChar
220441          (p_source_code         => 'LEDGER_CATEGORY_CODE'
220442          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
220443    AND l_bflow_method_code = 'PRIOR_ENTRY'
220444 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
220445    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
220446          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
220447        )
220448    THEN
220449          xla_ae_lines_pkg.BflowUpgEntry
220450            (p_business_method_code    => l_bflow_method_code
220451            ,p_business_class_code     => l_bflow_class_code
220452            ,p_balance_type            => l_balance_type_code);
220453    ELSE
220454       NULL;
220455 -- No business flow processing for business flow method of NONE.
220456    END IF;
220457 
220458    --
220459    -- call analytical criteria
220460    --
220461    
220462    --
220463    -- call description
220464    --
220465    
220466 xla_ae_lines_pkg.SetLineDescription(
220467    p_ae_header_id => l_ae_header_id
220468   ,p_description  => Description_1 (
220469      p_application_id         => p_application_id
220470    , p_ae_header_id           => l_ae_header_id 
220471 , p_source_1 => p_source_1
220472 , p_source_2 => p_source_2
220473 , p_source_3 => p_source_3
220474 , p_source_4 => p_source_4
220475 , p_source_5 => p_source_5
220476    )
220477 );
220478 
220479 
220480    --
220481    -- call ADRs
220482    -- Bug 4922099
220483    --
220484    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
220485         (NVL(l_actual_upg_option, 'N') = 'O') OR
220486         (NVL(l_enc_upg_option, 'N') = 'O')
220487       )
220488    THEN
220489    NULL;
220490    --
220491    --
220492    
220493   l_ccid := AcctDerRule_11(
220494            p_application_id           => p_application_id
220495          , p_ae_header_id             => l_ae_header_id 
220496 , p_source_22 => p_source_22
220497          , x_transaction_coa_id       => l_adr_transaction_coa_id
220498          , x_accounting_coa_id        => l_adr_accounting_coa_id
220499          , x_value_type_code          => l_adr_value_type_code
220500          , p_side                     => 'NA'
220501    );
220502 
220503    xla_ae_lines_pkg.set_ccid(
220504     p_code_combination_id          => l_ccid
220505   , p_value_type_code              => l_adr_value_type_code
220506   , p_transaction_coa_id           => l_adr_transaction_coa_id
220507   , p_accounting_coa_id            => l_adr_accounting_coa_id
220508   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
220509   , p_adr_type_code                => 'S'
220510   , p_component_type               => l_component_type
220511   , p_component_code               => l_component_code
220512   , p_component_type_code          => l_component_type_code
220513   , p_component_appl_id            => l_component_appl_id
220514   , p_amb_context_code             => l_amb_context_code
220515   , p_side                         => 'NA'
220516   );
220517 
220518 
220519    --
220520    --
220521    END IF;
220522    --
220523    -- Bug 4922099
220524    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
220525           (NVL(l_enc_upg_option, 'N') = 'O')
220526         ) AND
220527         (l_bflow_method_code = 'PRIOR_ENTRY')
220528       )
220529    THEN
220530       IF
220531       --
220532       1 = 2
220533       --
220534       THEN
220535       xla_accounting_err_pkg.build_message
220536                                     (p_appli_s_name            => 'XLA'
220537                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
220538                                     ,p_token_1                 => 'LINE_NUMBER'
220539                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
220540                                     ,p_token_2                 => 'LINE_TYPE_NAME'
220541                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
220542                                                                              l_component_type
220543                                                                             ,l_component_code
220544                                                                             ,l_component_type_code
220545                                                                             ,l_component_appl_id
220546                                                                             ,l_amb_context_code
220547                                                                             ,l_entity_code
220548                                                                             ,l_event_class_code
220549                                                                            )
220550                                     ,p_token_3                 => 'OWNER'
220551                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
220552                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
220553                                                                           ,p_lookup_code    => l_component_type_code
220554                                                                          )
220555                                     ,p_token_4                 => 'PRODUCT_NAME'
220556                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
220557                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
220558                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
220559                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
220560                                     ,p_ae_header_id            =>  NULL
220561                                        );
220562 
220563         IF (C_LEVEL_ERROR>= g_log_level) THEN
220564                  trace
220565                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
220566                       ,p_level    => C_LEVEL_ERROR
220567                       ,p_module   => l_log_module);
220568         END IF;
220569       END IF;
220570    END IF;
220571    --
220572    --
220573    ------------------------------------------------------------------------------------------------
220574    -- 4219869 Business Flow
220575    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
220576    -- Prior Entry.  Currently, the following code is always generated.
220577    ------------------------------------------------------------------------------------------------
220578    XLA_AE_LINES_PKG.ValidateCurrentLine;
220579 
220580    ------------------------------------------------------------------------------------
220581    -- 4219869 Business Flow
220582    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
220583    ------------------------------------------------------------------------------------
220584    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
220585 
220586    ----------------------------------------------------------------------------------
220587    -- 4219869 Business Flow
220588    -- Update journal entry status -- Need to generate this within IF <condition>
220589    ----------------------------------------------------------------------------------
220590    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
220591          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
220592          ,p_balance_type_code => l_balance_type_code
220593          );
220594 
220595    -------------------------------------------------------------------------------------------
220596    -- 4262811 - Generate the Accrual Reversal lines
220597    -------------------------------------------------------------------------------------------
220598    BEGIN
220599       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
220600                               (g_array_event(p_event_id).array_value_num('header_index'));
220601       IF l_acc_rev_flag IS NULL THEN
220602          l_acc_rev_flag := 'N';
220603       END IF;
220604    EXCEPTION
220605       WHEN OTHERS THEN
220606          l_acc_rev_flag := 'N';
220607    END;
220608    --
220609    IF (l_acc_rev_flag = 'Y') THEN
220610 
220611        -- 4645092  ------------------------------------------------------------------------------
220612        -- To allow MPA report to determine if it should generate report process
220613        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
220614        ------------------------------------------------------------------------------------------
220615 
220616        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
220617        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
220618    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
220619    -- call ADRs
220620    -- Bug 4922099
220621    --
220622    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
220623         (NVL(l_actual_upg_option, 'N') = 'O') OR
220624         (NVL(l_enc_upg_option, 'N') = 'O')
220625       )
220626    THEN
220627    NULL;
220628    --
220629    --
220630    
220631   l_ccid := AcctDerRule_11(
220632            p_application_id           => p_application_id
220633          , p_ae_header_id             => l_ae_header_id 
220634 , p_source_22 => p_source_22
220635          , x_transaction_coa_id       => l_adr_transaction_coa_id
220636          , x_accounting_coa_id        => l_adr_accounting_coa_id
220637          , x_value_type_code          => l_adr_value_type_code
220638          , p_side                     => 'NA'
220639    );
220640 
220641    xla_ae_lines_pkg.set_ccid(
220642     p_code_combination_id          => l_ccid
220643   , p_value_type_code              => l_adr_value_type_code
220644   , p_transaction_coa_id           => l_adr_transaction_coa_id
220645   , p_accounting_coa_id            => l_adr_accounting_coa_id
220646   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
220647   , p_adr_type_code                => 'S'
220648   , p_component_type               => l_component_type
220649   , p_component_code               => l_component_code
220650   , p_component_type_code          => l_component_type_code
220651   , p_component_appl_id            => l_component_appl_id
220652   , p_amb_context_code             => l_amb_context_code
220653   , p_side                         => 'NA'
220654   );
220655 
220656 
220657    --
220658    --
220659    END IF;
220660 
220661        --
220662        -- Update the line information that should be overwritten
220663        --
220664        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
220665                                          p_header_num   => 1);
220666        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
220667 
220668        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
220669 
220670        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
220671           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
220672        END IF;
220673 
220674       --
220675       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
220676       --
220677       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
220678           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
220679       ELSE
220680           ---------------------------------------------------------------------------------------------------
220681           -- 4262811a Switch Sign
220682           ---------------------------------------------------------------------------------------------------
220683           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
220684           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
220685                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
220686           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
220687                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
220688           -- 5132302
220689           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
220690                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
220691 
220692       END IF;
220693 
220694       -- 4955764
220695       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
220696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
220697 
220698 
220699       XLA_AE_LINES_PKG.ValidateCurrentLine;
220700       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
220701 
220702       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
220703                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
220704                ,p_balance_type_code => l_balance_type_code);
220705 
220706    END IF;
220707 
220708    -----------------------------------------------------------------------------------------
220709    -- 4262811 Multiperiod Accounting
220710    -----------------------------------------------------------------------------------------
220711      -- No MPA option is assigned.
220712 
220713 
220714 END IF;
220715 END IF;
220716 --
220717 
220718 --
220719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
220720    trace
220721       (p_msg      => 'END of AcctLineType_400'
220722       ,p_level    => C_LEVEL_PROCEDURE
220723       ,p_module   => l_log_module);
220724 END IF;
220725 --
220726 EXCEPTION
220727   WHEN xla_exceptions_pkg.application_exception THEN
220728       RAISE;
220729   WHEN OTHERS THEN
220730        xla_exceptions_pkg.raise_message
220731            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_400');
220732 END AcctLineType_400;
220733 --
220734 
220735 ---------------------------------------
220736 --
220737 -- PRIVATE FUNCTION
220738 --         AcctLineType_401
220739 --
220740 ---------------------------------------
220741 PROCEDURE AcctLineType_401 (
220742   p_application_id        IN NUMBER
220743  ,p_event_id              IN NUMBER
220744  ,p_calculate_acctd_flag  IN VARCHAR2
220745  ,p_calculate_g_l_flag    IN VARCHAR2
220746  ,p_actual_flag           IN OUT VARCHAR2
220747  ,p_balance_type_code     OUT VARCHAR2
220748  ,p_gain_or_loss_ref      OUT VARCHAR2
220749  
220750 --TRANSACTION_ID
220751  , p_source_1            IN NUMBER
220752 --Item Concatenated Segments
220753  , p_source_2            IN VARCHAR2
220754 --Transaction Quantity
220755  , p_source_3            IN NUMBER
220756 --Transaction Unit of Measure Code
220757  , p_source_4            IN VARCHAR2
220758 --Inventory Transaction Type Description
220759  , p_source_5            IN VARCHAR2
220760 --Product Line Accounting Category Bridging Account
220761  , p_source_22            IN NUMBER
220762 --DISTRIBUTION_IDENTIFIER
220763  , p_source_84            IN NUMBER
220764 --Distribution Type
220765  , p_source_85            IN VARCHAR2
220766  , p_source_85_meaning    IN VARCHAR2
220767 --Entered Currency Code
220768  , p_source_88            IN VARCHAR2
220769 --Entered Amount
220770  , p_source_91            IN NUMBER
220771 --Currency Conversion Date
220772  , p_source_92            IN DATE
220773 --Currency Conversion Rate
220774  , p_source_93            IN NUMBER
220775 --Currency Conversion Type
220776  , p_source_94            IN VARCHAR2
220777 --Accounted Amount
220778  , p_source_95            IN NUMBER
220779 --Accounting Line Type
220780  , p_source_97            IN NUMBER
220781 )
220782 IS
220783 
220784 l_component_type              VARCHAR2(80);
220785 l_component_code              VARCHAR2(30);
220786 l_component_type_code         VARCHAR2(1);
220787 l_component_appl_id           INTEGER;
220788 l_amb_context_code            VARCHAR2(30);
220789 l_entity_code                 VARCHAR2(30);
220790 l_event_class_code            VARCHAR2(30);
220791 l_ae_header_id                NUMBER;
220792 l_event_type_code             VARCHAR2(30);
220793 l_line_definition_code        VARCHAR2(30);
220794 l_line_definition_owner_code  VARCHAR2(1);
220795 --
220796 -- adr variables
220797 l_segment                     VARCHAR2(30);
220798 l_ccid                        NUMBER;
220799 l_adr_transaction_coa_id      NUMBER;
220800 l_adr_accounting_coa_id       NUMBER;
220801 l_adr_flexfield_segment_code  VARCHAR2(30);
220802 l_adr_flex_value_set_id       NUMBER;
220803 l_adr_value_type_code         VARCHAR2(30);
220804 l_adr_value_combination_id    NUMBER;
220805 l_adr_value_segment_code      VARCHAR2(30);
220806 
220807 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
220808 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
220809 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
220810 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
220811 
220812 -- 4262811 Variables ------------------------------------------------------------------------------------------
220813 l_entered_amt_idx             NUMBER;
220814 l_accted_amt_idx              NUMBER;
220815 l_acc_rev_flag                VARCHAR2(1);
220816 l_accrual_line_num            NUMBER;
220817 l_tmp_amt                     NUMBER;
220818 l_acc_rev_natural_side_code   VARCHAR2(1);
220819 
220820 l_num_entries                 NUMBER;
220821 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
220822 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
220823 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
220824 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
220825 l_recog_line_1                NUMBER;
220826 l_recog_line_2                NUMBER;
220827 
220828 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
220829 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
220830 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
220831 
220832 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
220833 
220834 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
220835 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
220836 
220837 ---------------------------------------------------------------------------------------------------------------
220838 
220839 
220840 --
220841 -- bulk performance
220842 --
220843 l_balance_type_code           VARCHAR2(1);
220844 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
220845 l_log_module                  VARCHAR2(240);
220846 
220847 --
220848 -- Upgrade strategy
220849 --
220850 l_actual_upg_option           VARCHAR2(1);
220851 l_enc_upg_option           VARCHAR2(1);
220852 
220853 --
220854 BEGIN
220855 --
220856 IF g_log_enabled THEN
220857       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_401';
220858 END IF;
220859 --
220860 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
220861 
220862       trace
220863          (p_msg      => 'BEGIN of AcctLineType_401'
220864          ,p_level    => C_LEVEL_PROCEDURE
220865          ,p_module   => l_log_module);
220866 
220867 END IF;
220868 --
220869 l_component_type             := 'AMB_JLT';
220870 l_component_code             := 'PI_BRIDGING_17';
220871 l_component_type_code        := 'S';
220872 l_component_appl_id          :=  707;
220873 l_amb_context_code           := 'DEFAULT';
220874 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
220875 l_event_class_code           := 'LOG_INTERCOMPANY';
220876 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
220877 l_line_definition_owner_code := 'S';
220878 l_line_definition_code       := 'PI_LOG_IC_RCPT_RETURN';
220879 --
220880 l_balance_type_code          := 'A';
220881 l_segment                     := NULL;
220882 l_ccid                        := NULL;
220883 l_adr_transaction_coa_id      := NULL;
220884 l_adr_accounting_coa_id       := NULL;
220885 l_adr_flexfield_segment_code  := NULL;
220886 l_adr_flex_value_set_id       := NULL;
220887 l_adr_value_type_code         := NULL;
220888 l_adr_value_combination_id    := NULL;
220889 l_adr_value_segment_code      := NULL;
220890 
220891 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
220892 l_bflow_class_code           := '';    -- 4219869 Business Flow
220893 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
220894 l_budgetary_control_flag     := 'N';
220895 
220896 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
220897 l_bflow_applied_to_amt       := NULL; -- 5132302
220898 l_entered_amt_idx            := NULL;          -- 4262811
220899 l_accted_amt_idx             := NULL;          -- 4262811
220900 l_acc_rev_flag               := NULL;          -- 4262811
220901 l_accrual_line_num           := NULL;          -- 4262811
220902 l_tmp_amt                    := NULL;          -- 4262811
220903 --
220904  
220905 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
220906     l_balance_type_code <> 'B' THEN
220907 IF NVL(p_source_97,9E125) =  1
220908  THEN 
220909 
220910    --
220911    XLA_AE_LINES_PKG.SetNewLine;
220912 
220913    p_balance_type_code          := l_balance_type_code;
220914    -- set the flag so later we will know whether the gain loss line needs to be created
220915    
220916    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
220917      p_actual_flag :='A';
220918    END IF;
220919 
220920    --
220921    -- bulk performance
220922    --
220923    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
220924                                       p_header_num   => 0); -- 4262811
220925    --
220926    -- set accounting line options
220927    --
220928    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
220929            p_natural_side_code          => 'C'
220930          , p_gain_or_loss_flag          => 'N'
220931          , p_gl_transfer_mode_code      => 'S'
220932          , p_acct_entry_type_code       => 'A'
220933          , p_switch_side_flag           => 'Y'
220934          , p_merge_duplicate_code       => 'N'
220935          );
220936    --
220937    l_acc_rev_natural_side_code := 'D';  -- 4262811
220938    -- 
220939    --
220940    -- set accounting line type info
220941    --
220942    xla_ae_lines_pkg.SetAcctLineType
220943       (p_component_type             => l_component_type
220944       ,p_event_type_code            => l_event_type_code
220945       ,p_line_definition_owner_code => l_line_definition_owner_code
220946       ,p_line_definition_code       => l_line_definition_code
220947       ,p_accounting_line_code       => l_component_code
220948       ,p_accounting_line_type_code  => l_component_type_code
220949       ,p_accounting_line_appl_id    => l_component_appl_id
220950       ,p_amb_context_code           => l_amb_context_code
220951       ,p_entity_code                => l_entity_code
220952       ,p_event_class_code           => l_event_class_code);
220953    --
220954    -- set accounting class
220955    --
220956    xla_ae_lines_pkg.SetAcctClass(
220957            p_accounting_class_code  => 'BRIDGING'
220958          , p_ae_header_id           => l_ae_header_id
220959          );
220960 
220961    --
220962    -- set rounding class
220963    --
220964    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
220965                       'BRIDGING';
220966 
220967    --
220968    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
220969    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
220970    --
220971    -- bulk performance
220972    --
220973    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
220974 
220975    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
220976       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
220977 
220978    -- 4955764
220979    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
220980       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
220981 
220982    -- 4458381 Public Sector Enh
220983    
220984    --
220985    -- set accounting attributes for the line type
220986    --
220987    l_entered_amt_idx := 3;
220988    l_accted_amt_idx  := 8;
220989    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
220990    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
220991    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
220992    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
220993    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
220994    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
220995    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
220996    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
220997    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
220998    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
220999    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
221000    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
221001    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
221002    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
221003    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
221004    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
221005    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
221006 
221007    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
221008    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
221009 
221010    ---------------------------------------------------------------------------------------------------------------
221011    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
221012    ---------------------------------------------------------------------------------------------------------------
221013    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
221014 
221015    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
221016    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
221017 
221018    IF xla_accounting_cache_pkg.GetValueChar
221019          (p_source_code         => 'LEDGER_CATEGORY_CODE'
221020          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
221021    AND l_bflow_method_code = 'PRIOR_ENTRY'
221022 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
221023    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
221024          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
221025        )
221026    THEN
221027          xla_ae_lines_pkg.BflowUpgEntry
221028            (p_business_method_code    => l_bflow_method_code
221029            ,p_business_class_code     => l_bflow_class_code
221030            ,p_balance_type            => l_balance_type_code);
221031    ELSE
221032       NULL;
221033 -- No business flow processing for business flow method of NONE.
221034    END IF;
221035 
221036    --
221037    -- call analytical criteria
221038    --
221039    
221040    --
221041    -- call description
221042    --
221043    
221044 xla_ae_lines_pkg.SetLineDescription(
221045    p_ae_header_id => l_ae_header_id
221046   ,p_description  => Description_1 (
221047      p_application_id         => p_application_id
221048    , p_ae_header_id           => l_ae_header_id 
221049 , p_source_1 => p_source_1
221050 , p_source_2 => p_source_2
221051 , p_source_3 => p_source_3
221052 , p_source_4 => p_source_4
221053 , p_source_5 => p_source_5
221054    )
221055 );
221056 
221057 
221058    --
221059    -- call ADRs
221060    -- Bug 4922099
221061    --
221062    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
221063         (NVL(l_actual_upg_option, 'N') = 'O') OR
221064         (NVL(l_enc_upg_option, 'N') = 'O')
221065       )
221066    THEN
221067    NULL;
221068    --
221069    --
221070    
221071   l_ccid := AcctDerRule_11(
221072            p_application_id           => p_application_id
221073          , p_ae_header_id             => l_ae_header_id 
221074 , p_source_22 => p_source_22
221075          , x_transaction_coa_id       => l_adr_transaction_coa_id
221076          , x_accounting_coa_id        => l_adr_accounting_coa_id
221077          , x_value_type_code          => l_adr_value_type_code
221078          , p_side                     => 'NA'
221079    );
221080 
221081    xla_ae_lines_pkg.set_ccid(
221082     p_code_combination_id          => l_ccid
221083   , p_value_type_code              => l_adr_value_type_code
221084   , p_transaction_coa_id           => l_adr_transaction_coa_id
221085   , p_accounting_coa_id            => l_adr_accounting_coa_id
221086   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
221087   , p_adr_type_code                => 'S'
221088   , p_component_type               => l_component_type
221089   , p_component_code               => l_component_code
221090   , p_component_type_code          => l_component_type_code
221091   , p_component_appl_id            => l_component_appl_id
221092   , p_amb_context_code             => l_amb_context_code
221093   , p_side                         => 'NA'
221094   );
221095 
221096 
221097    --
221098    --
221099    END IF;
221100    --
221101    -- Bug 4922099
221102    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
221103           (NVL(l_enc_upg_option, 'N') = 'O')
221104         ) AND
221105         (l_bflow_method_code = 'PRIOR_ENTRY')
221106       )
221107    THEN
221108       IF
221109       --
221110       1 = 2
221111       --
221112       THEN
221113       xla_accounting_err_pkg.build_message
221114                                     (p_appli_s_name            => 'XLA'
221115                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
221116                                     ,p_token_1                 => 'LINE_NUMBER'
221117                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
221118                                     ,p_token_2                 => 'LINE_TYPE_NAME'
221119                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
221120                                                                              l_component_type
221121                                                                             ,l_component_code
221122                                                                             ,l_component_type_code
221123                                                                             ,l_component_appl_id
221124                                                                             ,l_amb_context_code
221125                                                                             ,l_entity_code
221126                                                                             ,l_event_class_code
221127                                                                            )
221128                                     ,p_token_3                 => 'OWNER'
221129                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
221130                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
221131                                                                           ,p_lookup_code    => l_component_type_code
221132                                                                          )
221133                                     ,p_token_4                 => 'PRODUCT_NAME'
221134                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
221135                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
221136                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
221137                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
221138                                     ,p_ae_header_id            =>  NULL
221139                                        );
221140 
221141         IF (C_LEVEL_ERROR>= g_log_level) THEN
221142                  trace
221143                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
221144                       ,p_level    => C_LEVEL_ERROR
221145                       ,p_module   => l_log_module);
221146         END IF;
221147       END IF;
221148    END IF;
221149    --
221150    --
221151    ------------------------------------------------------------------------------------------------
221152    -- 4219869 Business Flow
221153    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
221154    -- Prior Entry.  Currently, the following code is always generated.
221155    ------------------------------------------------------------------------------------------------
221156    XLA_AE_LINES_PKG.ValidateCurrentLine;
221157 
221158    ------------------------------------------------------------------------------------
221159    -- 4219869 Business Flow
221160    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
221161    ------------------------------------------------------------------------------------
221162    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
221163 
221164    ----------------------------------------------------------------------------------
221165    -- 4219869 Business Flow
221166    -- Update journal entry status -- Need to generate this within IF <condition>
221167    ----------------------------------------------------------------------------------
221168    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
221169          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
221170          ,p_balance_type_code => l_balance_type_code
221171          );
221172 
221173    -------------------------------------------------------------------------------------------
221174    -- 4262811 - Generate the Accrual Reversal lines
221175    -------------------------------------------------------------------------------------------
221176    BEGIN
221177       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
221178                               (g_array_event(p_event_id).array_value_num('header_index'));
221179       IF l_acc_rev_flag IS NULL THEN
221180          l_acc_rev_flag := 'N';
221181       END IF;
221182    EXCEPTION
221183       WHEN OTHERS THEN
221184          l_acc_rev_flag := 'N';
221185    END;
221186    --
221187    IF (l_acc_rev_flag = 'Y') THEN
221188 
221189        -- 4645092  ------------------------------------------------------------------------------
221190        -- To allow MPA report to determine if it should generate report process
221191        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
221192        ------------------------------------------------------------------------------------------
221193 
221194        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
221195        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
221196    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
221197    -- call ADRs
221198    -- Bug 4922099
221199    --
221200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
221201         (NVL(l_actual_upg_option, 'N') = 'O') OR
221202         (NVL(l_enc_upg_option, 'N') = 'O')
221203       )
221204    THEN
221205    NULL;
221206    --
221207    --
221208    
221209   l_ccid := AcctDerRule_11(
221210            p_application_id           => p_application_id
221211          , p_ae_header_id             => l_ae_header_id 
221212 , p_source_22 => p_source_22
221213          , x_transaction_coa_id       => l_adr_transaction_coa_id
221214          , x_accounting_coa_id        => l_adr_accounting_coa_id
221215          , x_value_type_code          => l_adr_value_type_code
221216          , p_side                     => 'NA'
221217    );
221218 
221219    xla_ae_lines_pkg.set_ccid(
221220     p_code_combination_id          => l_ccid
221221   , p_value_type_code              => l_adr_value_type_code
221222   , p_transaction_coa_id           => l_adr_transaction_coa_id
221223   , p_accounting_coa_id            => l_adr_accounting_coa_id
221224   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
221225   , p_adr_type_code                => 'S'
221226   , p_component_type               => l_component_type
221227   , p_component_code               => l_component_code
221228   , p_component_type_code          => l_component_type_code
221229   , p_component_appl_id            => l_component_appl_id
221230   , p_amb_context_code             => l_amb_context_code
221231   , p_side                         => 'NA'
221232   );
221233 
221234 
221235    --
221236    --
221237    END IF;
221238 
221239        --
221240        -- Update the line information that should be overwritten
221241        --
221242        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
221243                                          p_header_num   => 1);
221244        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
221245 
221246        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
221247 
221248        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
221249           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
221250        END IF;
221251 
221252       --
221253       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
221254       --
221255       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
221256           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
221257       ELSE
221258           ---------------------------------------------------------------------------------------------------
221259           -- 4262811a Switch Sign
221260           ---------------------------------------------------------------------------------------------------
221261           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
221262           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
221263                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
221264           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
221265                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
221266           -- 5132302
221267           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
221268                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
221269 
221270       END IF;
221271 
221272       -- 4955764
221273       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
221274       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
221275 
221276 
221277       XLA_AE_LINES_PKG.ValidateCurrentLine;
221278       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
221279 
221280       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
221281                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
221282                ,p_balance_type_code => l_balance_type_code);
221283 
221284    END IF;
221285 
221286    -----------------------------------------------------------------------------------------
221287    -- 4262811 Multiperiod Accounting
221288    -----------------------------------------------------------------------------------------
221289      -- No MPA option is assigned.
221290 
221291 
221292 END IF;
221293 END IF;
221294 --
221295 
221296 --
221297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
221298    trace
221299       (p_msg      => 'END of AcctLineType_401'
221300       ,p_level    => C_LEVEL_PROCEDURE
221301       ,p_module   => l_log_module);
221302 END IF;
221303 --
221304 EXCEPTION
221305   WHEN xla_exceptions_pkg.application_exception THEN
221306       RAISE;
221307   WHEN OTHERS THEN
221308        xla_exceptions_pkg.raise_message
221309            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_401');
221310 END AcctLineType_401;
221311 --
221312 
221313 ---------------------------------------
221314 --
221315 -- PRIVATE FUNCTION
221316 --         AcctLineType_402
221317 --
221318 ---------------------------------------
221319 PROCEDURE AcctLineType_402 (
221320   p_application_id        IN NUMBER
221321  ,p_event_id              IN NUMBER
221322  ,p_calculate_acctd_flag  IN VARCHAR2
221323  ,p_calculate_g_l_flag    IN VARCHAR2
221324  ,p_actual_flag           IN OUT VARCHAR2
221325  ,p_balance_type_code     OUT VARCHAR2
221326  ,p_gain_or_loss_ref      OUT VARCHAR2
221327  
221328 --TRANSACTION_ID
221329  , p_source_1            IN NUMBER
221330 --Item Concatenated Segments
221331  , p_source_2            IN VARCHAR2
221332 --Transaction Quantity
221333  , p_source_3            IN NUMBER
221334 --Transaction Unit of Measure Code
221335  , p_source_4            IN VARCHAR2
221336 --Inventory Transaction Type Description
221337  , p_source_5            IN VARCHAR2
221338 --Product Line Accounting Category Bridging Account
221339  , p_source_22            IN NUMBER
221340 --DISTRIBUTION_IDENTIFIER
221341  , p_source_84            IN NUMBER
221342 --Distribution Type
221343  , p_source_85            IN VARCHAR2
221344  , p_source_85_meaning    IN VARCHAR2
221345 --Entered Currency Code
221346  , p_source_88            IN VARCHAR2
221347 --Entered Amount
221348  , p_source_91            IN NUMBER
221349 --Currency Conversion Date
221350  , p_source_92            IN DATE
221351 --Currency Conversion Rate
221352  , p_source_93            IN NUMBER
221353 --Currency Conversion Type
221354  , p_source_94            IN VARCHAR2
221355 --Accounted Amount
221356  , p_source_95            IN NUMBER
221357 --Accounting Line Type
221358  , p_source_97            IN NUMBER
221359 )
221360 IS
221361 
221362 l_component_type              VARCHAR2(80);
221363 l_component_code              VARCHAR2(30);
221364 l_component_type_code         VARCHAR2(1);
221365 l_component_appl_id           INTEGER;
221366 l_amb_context_code            VARCHAR2(30);
221367 l_entity_code                 VARCHAR2(30);
221368 l_event_class_code            VARCHAR2(30);
221369 l_ae_header_id                NUMBER;
221370 l_event_type_code             VARCHAR2(30);
221371 l_line_definition_code        VARCHAR2(30);
221372 l_line_definition_owner_code  VARCHAR2(1);
221373 --
221374 -- adr variables
221375 l_segment                     VARCHAR2(30);
221376 l_ccid                        NUMBER;
221377 l_adr_transaction_coa_id      NUMBER;
221378 l_adr_accounting_coa_id       NUMBER;
221379 l_adr_flexfield_segment_code  VARCHAR2(30);
221380 l_adr_flex_value_set_id       NUMBER;
221381 l_adr_value_type_code         VARCHAR2(30);
221382 l_adr_value_combination_id    NUMBER;
221383 l_adr_value_segment_code      VARCHAR2(30);
221384 
221385 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
221386 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
221387 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
221388 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
221389 
221390 -- 4262811 Variables ------------------------------------------------------------------------------------------
221391 l_entered_amt_idx             NUMBER;
221392 l_accted_amt_idx              NUMBER;
221393 l_acc_rev_flag                VARCHAR2(1);
221394 l_accrual_line_num            NUMBER;
221395 l_tmp_amt                     NUMBER;
221396 l_acc_rev_natural_side_code   VARCHAR2(1);
221397 
221398 l_num_entries                 NUMBER;
221399 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
221400 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
221401 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
221402 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
221403 l_recog_line_1                NUMBER;
221404 l_recog_line_2                NUMBER;
221405 
221406 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
221407 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
221408 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
221409 
221410 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
221411 
221412 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
221413 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
221414 
221415 ---------------------------------------------------------------------------------------------------------------
221416 
221417 
221418 --
221419 -- bulk performance
221420 --
221421 l_balance_type_code           VARCHAR2(1);
221422 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
221423 l_log_module                  VARCHAR2(240);
221424 
221425 --
221426 -- Upgrade strategy
221427 --
221428 l_actual_upg_option           VARCHAR2(1);
221429 l_enc_upg_option           VARCHAR2(1);
221430 
221431 --
221432 BEGIN
221433 --
221434 IF g_log_enabled THEN
221435       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_402';
221436 END IF;
221437 --
221438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
221439 
221440       trace
221441          (p_msg      => 'BEGIN of AcctLineType_402'
221442          ,p_level    => C_LEVEL_PROCEDURE
221443          ,p_module   => l_log_module);
221444 
221445 END IF;
221446 --
221447 l_component_type             := 'AMB_JLT';
221448 l_component_code             := 'PI_BRIDGING_17';
221449 l_component_type_code        := 'S';
221450 l_component_appl_id          :=  707;
221451 l_amb_context_code           := 'DEFAULT';
221452 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
221453 l_event_class_code           := 'LOG_INTERCOMPANY';
221454 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
221455 l_line_definition_owner_code := 'S';
221456 l_line_definition_code       := 'PI_LOG_IC_SHIPMENT_RCPT';
221457 --
221458 l_balance_type_code          := 'A';
221459 l_segment                     := NULL;
221460 l_ccid                        := NULL;
221461 l_adr_transaction_coa_id      := NULL;
221462 l_adr_accounting_coa_id       := NULL;
221463 l_adr_flexfield_segment_code  := NULL;
221464 l_adr_flex_value_set_id       := NULL;
221465 l_adr_value_type_code         := NULL;
221466 l_adr_value_combination_id    := NULL;
221467 l_adr_value_segment_code      := NULL;
221468 
221469 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
221470 l_bflow_class_code           := '';    -- 4219869 Business Flow
221471 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
221472 l_budgetary_control_flag     := 'N';
221473 
221474 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
221475 l_bflow_applied_to_amt       := NULL; -- 5132302
221476 l_entered_amt_idx            := NULL;          -- 4262811
221477 l_accted_amt_idx             := NULL;          -- 4262811
221478 l_acc_rev_flag               := NULL;          -- 4262811
221479 l_accrual_line_num           := NULL;          -- 4262811
221480 l_tmp_amt                    := NULL;          -- 4262811
221481 --
221482  
221483 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
221484     l_balance_type_code <> 'B' THEN
221485 IF NVL(p_source_97,9E125) =  1
221486  THEN 
221487 
221488    --
221489    XLA_AE_LINES_PKG.SetNewLine;
221490 
221491    p_balance_type_code          := l_balance_type_code;
221492    -- set the flag so later we will know whether the gain loss line needs to be created
221493    
221494    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
221495      p_actual_flag :='A';
221496    END IF;
221497 
221498    --
221499    -- bulk performance
221500    --
221501    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
221502                                       p_header_num   => 0); -- 4262811
221503    --
221504    -- set accounting line options
221505    --
221506    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
221507            p_natural_side_code          => 'C'
221508          , p_gain_or_loss_flag          => 'N'
221509          , p_gl_transfer_mode_code      => 'S'
221510          , p_acct_entry_type_code       => 'A'
221511          , p_switch_side_flag           => 'Y'
221512          , p_merge_duplicate_code       => 'N'
221513          );
221514    --
221515    l_acc_rev_natural_side_code := 'D';  -- 4262811
221516    -- 
221517    --
221518    -- set accounting line type info
221519    --
221520    xla_ae_lines_pkg.SetAcctLineType
221521       (p_component_type             => l_component_type
221522       ,p_event_type_code            => l_event_type_code
221523       ,p_line_definition_owner_code => l_line_definition_owner_code
221524       ,p_line_definition_code       => l_line_definition_code
221525       ,p_accounting_line_code       => l_component_code
221526       ,p_accounting_line_type_code  => l_component_type_code
221527       ,p_accounting_line_appl_id    => l_component_appl_id
221528       ,p_amb_context_code           => l_amb_context_code
221529       ,p_entity_code                => l_entity_code
221530       ,p_event_class_code           => l_event_class_code);
221531    --
221532    -- set accounting class
221533    --
221534    xla_ae_lines_pkg.SetAcctClass(
221535            p_accounting_class_code  => 'BRIDGING'
221536          , p_ae_header_id           => l_ae_header_id
221537          );
221538 
221539    --
221540    -- set rounding class
221541    --
221542    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
221543                       'BRIDGING';
221544 
221545    --
221546    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
221547    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
221548    --
221549    -- bulk performance
221550    --
221551    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
221552 
221553    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
221554       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
221555 
221556    -- 4955764
221557    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
221558       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
221559 
221560    -- 4458381 Public Sector Enh
221561    
221562    --
221563    -- set accounting attributes for the line type
221564    --
221565    l_entered_amt_idx := 3;
221566    l_accted_amt_idx  := 8;
221567    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
221568    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
221569    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
221570    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
221571    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
221572    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
221573    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
221574    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
221575    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
221576    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
221577    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
221578    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
221579    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
221580    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
221581    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
221582    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
221583    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
221584 
221585    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
221586    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
221587 
221588    ---------------------------------------------------------------------------------------------------------------
221589    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
221590    ---------------------------------------------------------------------------------------------------------------
221591    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
221592 
221593    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
221594    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
221595 
221596    IF xla_accounting_cache_pkg.GetValueChar
221597          (p_source_code         => 'LEDGER_CATEGORY_CODE'
221598          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
221599    AND l_bflow_method_code = 'PRIOR_ENTRY'
221600 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
221601    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
221602          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
221603        )
221604    THEN
221605          xla_ae_lines_pkg.BflowUpgEntry
221606            (p_business_method_code    => l_bflow_method_code
221607            ,p_business_class_code     => l_bflow_class_code
221608            ,p_balance_type            => l_balance_type_code);
221609    ELSE
221610       NULL;
221611 -- No business flow processing for business flow method of NONE.
221612    END IF;
221613 
221614    --
221615    -- call analytical criteria
221616    --
221617    
221618    --
221619    -- call description
221620    --
221621    
221622 xla_ae_lines_pkg.SetLineDescription(
221623    p_ae_header_id => l_ae_header_id
221624   ,p_description  => Description_1 (
221625      p_application_id         => p_application_id
221626    , p_ae_header_id           => l_ae_header_id 
221627 , p_source_1 => p_source_1
221628 , p_source_2 => p_source_2
221629 , p_source_3 => p_source_3
221630 , p_source_4 => p_source_4
221631 , p_source_5 => p_source_5
221632    )
221633 );
221634 
221635 
221636    --
221637    -- call ADRs
221638    -- Bug 4922099
221639    --
221640    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
221641         (NVL(l_actual_upg_option, 'N') = 'O') OR
221642         (NVL(l_enc_upg_option, 'N') = 'O')
221643       )
221644    THEN
221645    NULL;
221646    --
221647    --
221648    
221649   l_ccid := AcctDerRule_11(
221650            p_application_id           => p_application_id
221651          , p_ae_header_id             => l_ae_header_id 
221652 , p_source_22 => p_source_22
221653          , x_transaction_coa_id       => l_adr_transaction_coa_id
221654          , x_accounting_coa_id        => l_adr_accounting_coa_id
221655          , x_value_type_code          => l_adr_value_type_code
221656          , p_side                     => 'NA'
221657    );
221658 
221659    xla_ae_lines_pkg.set_ccid(
221660     p_code_combination_id          => l_ccid
221661   , p_value_type_code              => l_adr_value_type_code
221662   , p_transaction_coa_id           => l_adr_transaction_coa_id
221663   , p_accounting_coa_id            => l_adr_accounting_coa_id
221664   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
221665   , p_adr_type_code                => 'S'
221666   , p_component_type               => l_component_type
221667   , p_component_code               => l_component_code
221668   , p_component_type_code          => l_component_type_code
221669   , p_component_appl_id            => l_component_appl_id
221670   , p_amb_context_code             => l_amb_context_code
221671   , p_side                         => 'NA'
221672   );
221673 
221674 
221675    --
221676    --
221677    END IF;
221678    --
221679    -- Bug 4922099
221680    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
221681           (NVL(l_enc_upg_option, 'N') = 'O')
221682         ) AND
221683         (l_bflow_method_code = 'PRIOR_ENTRY')
221684       )
221685    THEN
221686       IF
221687       --
221688       1 = 2
221689       --
221690       THEN
221691       xla_accounting_err_pkg.build_message
221692                                     (p_appli_s_name            => 'XLA'
221693                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
221694                                     ,p_token_1                 => 'LINE_NUMBER'
221695                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
221696                                     ,p_token_2                 => 'LINE_TYPE_NAME'
221697                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
221698                                                                              l_component_type
221699                                                                             ,l_component_code
221700                                                                             ,l_component_type_code
221701                                                                             ,l_component_appl_id
221702                                                                             ,l_amb_context_code
221703                                                                             ,l_entity_code
221704                                                                             ,l_event_class_code
221705                                                                            )
221706                                     ,p_token_3                 => 'OWNER'
221707                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
221708                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
221709                                                                           ,p_lookup_code    => l_component_type_code
221710                                                                          )
221711                                     ,p_token_4                 => 'PRODUCT_NAME'
221712                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
221713                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
221714                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
221715                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
221716                                     ,p_ae_header_id            =>  NULL
221717                                        );
221718 
221719         IF (C_LEVEL_ERROR>= g_log_level) THEN
221720                  trace
221721                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
221722                       ,p_level    => C_LEVEL_ERROR
221723                       ,p_module   => l_log_module);
221724         END IF;
221725       END IF;
221726    END IF;
221727    --
221728    --
221729    ------------------------------------------------------------------------------------------------
221730    -- 4219869 Business Flow
221731    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
221732    -- Prior Entry.  Currently, the following code is always generated.
221733    ------------------------------------------------------------------------------------------------
221734    XLA_AE_LINES_PKG.ValidateCurrentLine;
221735 
221736    ------------------------------------------------------------------------------------
221737    -- 4219869 Business Flow
221738    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
221739    ------------------------------------------------------------------------------------
221740    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
221741 
221742    ----------------------------------------------------------------------------------
221743    -- 4219869 Business Flow
221744    -- Update journal entry status -- Need to generate this within IF <condition>
221745    ----------------------------------------------------------------------------------
221746    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
221747          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
221748          ,p_balance_type_code => l_balance_type_code
221749          );
221750 
221751    -------------------------------------------------------------------------------------------
221752    -- 4262811 - Generate the Accrual Reversal lines
221753    -------------------------------------------------------------------------------------------
221754    BEGIN
221755       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
221756                               (g_array_event(p_event_id).array_value_num('header_index'));
221757       IF l_acc_rev_flag IS NULL THEN
221758          l_acc_rev_flag := 'N';
221759       END IF;
221760    EXCEPTION
221761       WHEN OTHERS THEN
221762          l_acc_rev_flag := 'N';
221763    END;
221764    --
221765    IF (l_acc_rev_flag = 'Y') THEN
221766 
221767        -- 4645092  ------------------------------------------------------------------------------
221768        -- To allow MPA report to determine if it should generate report process
221769        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
221770        ------------------------------------------------------------------------------------------
221771 
221772        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
221773        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
221774    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
221775    -- call ADRs
221776    -- Bug 4922099
221777    --
221778    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
221779         (NVL(l_actual_upg_option, 'N') = 'O') OR
221780         (NVL(l_enc_upg_option, 'N') = 'O')
221781       )
221782    THEN
221783    NULL;
221784    --
221785    --
221786    
221787   l_ccid := AcctDerRule_11(
221788            p_application_id           => p_application_id
221789          , p_ae_header_id             => l_ae_header_id 
221790 , p_source_22 => p_source_22
221791          , x_transaction_coa_id       => l_adr_transaction_coa_id
221792          , x_accounting_coa_id        => l_adr_accounting_coa_id
221793          , x_value_type_code          => l_adr_value_type_code
221794          , p_side                     => 'NA'
221795    );
221796 
221797    xla_ae_lines_pkg.set_ccid(
221798     p_code_combination_id          => l_ccid
221799   , p_value_type_code              => l_adr_value_type_code
221800   , p_transaction_coa_id           => l_adr_transaction_coa_id
221801   , p_accounting_coa_id            => l_adr_accounting_coa_id
221802   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
221803   , p_adr_type_code                => 'S'
221804   , p_component_type               => l_component_type
221805   , p_component_code               => l_component_code
221806   , p_component_type_code          => l_component_type_code
221807   , p_component_appl_id            => l_component_appl_id
221808   , p_amb_context_code             => l_amb_context_code
221809   , p_side                         => 'NA'
221810   );
221811 
221812 
221813    --
221814    --
221815    END IF;
221816 
221817        --
221818        -- Update the line information that should be overwritten
221819        --
221820        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
221821                                          p_header_num   => 1);
221822        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
221823 
221824        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
221825 
221826        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
221827           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
221828        END IF;
221829 
221830       --
221831       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
221832       --
221833       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
221834           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
221835       ELSE
221836           ---------------------------------------------------------------------------------------------------
221837           -- 4262811a Switch Sign
221838           ---------------------------------------------------------------------------------------------------
221839           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
221840           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
221841                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
221842           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
221843                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
221844           -- 5132302
221845           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
221846                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
221847 
221848       END IF;
221849 
221850       -- 4955764
221851       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
221852       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
221853 
221854 
221855       XLA_AE_LINES_PKG.ValidateCurrentLine;
221856       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
221857 
221858       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
221859                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
221860                ,p_balance_type_code => l_balance_type_code);
221861 
221862    END IF;
221863 
221864    -----------------------------------------------------------------------------------------
221865    -- 4262811 Multiperiod Accounting
221866    -----------------------------------------------------------------------------------------
221867      -- No MPA option is assigned.
221868 
221869 
221870 END IF;
221871 END IF;
221872 --
221873 
221874 --
221875 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
221876    trace
221877       (p_msg      => 'END of AcctLineType_402'
221878       ,p_level    => C_LEVEL_PROCEDURE
221879       ,p_module   => l_log_module);
221880 END IF;
221881 --
221882 EXCEPTION
221883   WHEN xla_exceptions_pkg.application_exception THEN
221884       RAISE;
221885   WHEN OTHERS THEN
221886        xla_exceptions_pkg.raise_message
221887            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_402');
221888 END AcctLineType_402;
221889 --
221890 
221891 ---------------------------------------
221892 --
221893 -- PRIVATE FUNCTION
221894 --         AcctLineType_403
221895 --
221896 ---------------------------------------
221897 PROCEDURE AcctLineType_403 (
221898   p_application_id        IN NUMBER
221899  ,p_event_id              IN NUMBER
221900  ,p_calculate_acctd_flag  IN VARCHAR2
221901  ,p_calculate_g_l_flag    IN VARCHAR2
221902  ,p_actual_flag           IN OUT VARCHAR2
221903  ,p_balance_type_code     OUT VARCHAR2
221904  ,p_gain_or_loss_ref      OUT VARCHAR2
221905  
221906 --TRANSACTION_ID
221907  , p_source_1            IN NUMBER
221908 --Item Concatenated Segments
221909  , p_source_2            IN VARCHAR2
221910 --Transaction Quantity
221911  , p_source_3            IN NUMBER
221912 --Transaction Unit of Measure Code
221913  , p_source_4            IN VARCHAR2
221914 --Inventory Transaction Type Description
221915  , p_source_5            IN VARCHAR2
221916 --Product Line Accounting Category Bridging Account
221917  , p_source_22            IN NUMBER
221918 --DISTRIBUTION_IDENTIFIER
221919  , p_source_84            IN NUMBER
221920 --Distribution Type
221921  , p_source_85            IN VARCHAR2
221922  , p_source_85_meaning    IN VARCHAR2
221923 --Entered Currency Code
221924  , p_source_88            IN VARCHAR2
221925 --Entered Amount
221926  , p_source_91            IN NUMBER
221927 --Currency Conversion Date
221928  , p_source_92            IN DATE
221929 --Currency Conversion Rate
221930  , p_source_93            IN NUMBER
221931 --Currency Conversion Type
221932  , p_source_94            IN VARCHAR2
221933 --Accounted Amount
221934  , p_source_95            IN NUMBER
221935 --Accounting Line Type
221936  , p_source_97            IN NUMBER
221937 )
221938 IS
221939 
221940 l_component_type              VARCHAR2(80);
221941 l_component_code              VARCHAR2(30);
221942 l_component_type_code         VARCHAR2(1);
221943 l_component_appl_id           INTEGER;
221944 l_amb_context_code            VARCHAR2(30);
221945 l_entity_code                 VARCHAR2(30);
221946 l_event_class_code            VARCHAR2(30);
221947 l_ae_header_id                NUMBER;
221948 l_event_type_code             VARCHAR2(30);
221949 l_line_definition_code        VARCHAR2(30);
221950 l_line_definition_owner_code  VARCHAR2(1);
221951 --
221952 -- adr variables
221953 l_segment                     VARCHAR2(30);
221954 l_ccid                        NUMBER;
221955 l_adr_transaction_coa_id      NUMBER;
221956 l_adr_accounting_coa_id       NUMBER;
221957 l_adr_flexfield_segment_code  VARCHAR2(30);
221958 l_adr_flex_value_set_id       NUMBER;
221959 l_adr_value_type_code         VARCHAR2(30);
221960 l_adr_value_combination_id    NUMBER;
221961 l_adr_value_segment_code      VARCHAR2(30);
221962 
221963 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
221964 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
221965 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
221966 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
221967 
221968 -- 4262811 Variables ------------------------------------------------------------------------------------------
221969 l_entered_amt_idx             NUMBER;
221970 l_accted_amt_idx              NUMBER;
221971 l_acc_rev_flag                VARCHAR2(1);
221972 l_accrual_line_num            NUMBER;
221973 l_tmp_amt                     NUMBER;
221974 l_acc_rev_natural_side_code   VARCHAR2(1);
221975 
221976 l_num_entries                 NUMBER;
221977 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
221978 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
221979 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
221980 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
221981 l_recog_line_1                NUMBER;
221982 l_recog_line_2                NUMBER;
221983 
221984 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
221985 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
221986 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
221987 
221988 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
221989 
221990 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
221991 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
221992 
221993 ---------------------------------------------------------------------------------------------------------------
221994 
221995 
221996 --
221997 -- bulk performance
221998 --
221999 l_balance_type_code           VARCHAR2(1);
222000 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
222001 l_log_module                  VARCHAR2(240);
222002 
222003 --
222004 -- Upgrade strategy
222005 --
222006 l_actual_upg_option           VARCHAR2(1);
222007 l_enc_upg_option           VARCHAR2(1);
222008 
222009 --
222010 BEGIN
222011 --
222012 IF g_log_enabled THEN
222013       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_403';
222014 END IF;
222015 --
222016 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
222017 
222018       trace
222019          (p_msg      => 'BEGIN of AcctLineType_403'
222020          ,p_level    => C_LEVEL_PROCEDURE
222021          ,p_module   => l_log_module);
222022 
222023 END IF;
222024 --
222025 l_component_type             := 'AMB_JLT';
222026 l_component_code             := 'PI_BRIDGING_212';
222027 l_component_type_code        := 'S';
222028 l_component_appl_id          :=  707;
222029 l_amb_context_code           := 'DEFAULT';
222030 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
222031 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
222032 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
222033 l_line_definition_owner_code := 'S';
222034 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
222035 --
222036 l_balance_type_code          := 'A';
222037 l_segment                     := NULL;
222038 l_ccid                        := NULL;
222039 l_adr_transaction_coa_id      := NULL;
222040 l_adr_accounting_coa_id       := NULL;
222041 l_adr_flexfield_segment_code  := NULL;
222042 l_adr_flex_value_set_id       := NULL;
222043 l_adr_value_type_code         := NULL;
222044 l_adr_value_combination_id    := NULL;
222045 l_adr_value_segment_code      := NULL;
222046 
222047 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
222048 l_bflow_class_code           := '';    -- 4219869 Business Flow
222049 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
222050 l_budgetary_control_flag     := 'N';
222051 
222052 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
222053 l_bflow_applied_to_amt       := NULL; -- 5132302
222054 l_entered_amt_idx            := NULL;          -- 4262811
222055 l_accted_amt_idx             := NULL;          -- 4262811
222056 l_acc_rev_flag               := NULL;          -- 4262811
222057 l_accrual_line_num           := NULL;          -- 4262811
222058 l_tmp_amt                    := NULL;          -- 4262811
222059 --
222060  
222061 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
222062     l_balance_type_code <> 'B' THEN
222063 IF NVL(p_source_97,9E125) =  14
222064  THEN 
222065 
222066    --
222067    XLA_AE_LINES_PKG.SetNewLine;
222068 
222069    p_balance_type_code          := l_balance_type_code;
222070    -- set the flag so later we will know whether the gain loss line needs to be created
222071    
222072    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
222073      p_actual_flag :='A';
222074    END IF;
222075 
222076    --
222077    -- bulk performance
222078    --
222079    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
222080                                       p_header_num   => 0); -- 4262811
222081    --
222082    -- set accounting line options
222083    --
222084    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
222085            p_natural_side_code          => 'D'
222086          , p_gain_or_loss_flag          => 'N'
222087          , p_gl_transfer_mode_code      => 'S'
222088          , p_acct_entry_type_code       => 'A'
222089          , p_switch_side_flag           => 'Y'
222090          , p_merge_duplicate_code       => 'N'
222091          );
222092    --
222093    l_acc_rev_natural_side_code := 'C';  -- 4262811
222094    -- 
222095    --
222096    -- set accounting line type info
222097    --
222098    xla_ae_lines_pkg.SetAcctLineType
222099       (p_component_type             => l_component_type
222100       ,p_event_type_code            => l_event_type_code
222101       ,p_line_definition_owner_code => l_line_definition_owner_code
222102       ,p_line_definition_code       => l_line_definition_code
222103       ,p_accounting_line_code       => l_component_code
222104       ,p_accounting_line_type_code  => l_component_type_code
222105       ,p_accounting_line_appl_id    => l_component_appl_id
222106       ,p_amb_context_code           => l_amb_context_code
222107       ,p_entity_code                => l_entity_code
222108       ,p_event_class_code           => l_event_class_code);
222109    --
222110    -- set accounting class
222111    --
222112    xla_ae_lines_pkg.SetAcctClass(
222113            p_accounting_class_code  => 'BRIDGING'
222114          , p_ae_header_id           => l_ae_header_id
222115          );
222116 
222117    --
222118    -- set rounding class
222119    --
222120    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
222121                       'BRIDGING';
222122 
222123    --
222124    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
222125    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
222126    --
222127    -- bulk performance
222128    --
222129    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
222130 
222131    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
222132       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
222133 
222134    -- 4955764
222135    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
222136       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
222137 
222138    -- 4458381 Public Sector Enh
222139    
222140    --
222141    -- set accounting attributes for the line type
222142    --
222143    l_entered_amt_idx := 3;
222144    l_accted_amt_idx  := 8;
222145    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
222146    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
222147    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
222148    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
222149    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
222150    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
222151    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
222152    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
222153    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
222154    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
222155    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
222156    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
222157    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
222158    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
222159    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
222160    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
222161    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
222162 
222163    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
222164    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
222165 
222166    ---------------------------------------------------------------------------------------------------------------
222167    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
222168    ---------------------------------------------------------------------------------------------------------------
222169    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
222170 
222171    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
222172    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
222173 
222174    IF xla_accounting_cache_pkg.GetValueChar
222175          (p_source_code         => 'LEDGER_CATEGORY_CODE'
222176          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
222177    AND l_bflow_method_code = 'PRIOR_ENTRY'
222178 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
222179    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
222180          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
222181        )
222182    THEN
222183          xla_ae_lines_pkg.BflowUpgEntry
222184            (p_business_method_code    => l_bflow_method_code
222185            ,p_business_class_code     => l_bflow_class_code
222186            ,p_balance_type            => l_balance_type_code);
222187    ELSE
222188       NULL;
222189 -- No business flow processing for business flow method of NONE.
222190    END IF;
222191 
222192    --
222193    -- call analytical criteria
222194    --
222195    
222196    --
222197    -- call description
222198    --
222199    
222200 xla_ae_lines_pkg.SetLineDescription(
222201    p_ae_header_id => l_ae_header_id
222202   ,p_description  => Description_1 (
222203      p_application_id         => p_application_id
222204    , p_ae_header_id           => l_ae_header_id 
222205 , p_source_1 => p_source_1
222206 , p_source_2 => p_source_2
222207 , p_source_3 => p_source_3
222208 , p_source_4 => p_source_4
222209 , p_source_5 => p_source_5
222210    )
222211 );
222212 
222213 
222214    --
222215    -- call ADRs
222216    -- Bug 4922099
222217    --
222218    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
222219         (NVL(l_actual_upg_option, 'N') = 'O') OR
222220         (NVL(l_enc_upg_option, 'N') = 'O')
222221       )
222222    THEN
222223    NULL;
222224    --
222225    --
222226    
222227   l_ccid := AcctDerRule_11(
222228            p_application_id           => p_application_id
222229          , p_ae_header_id             => l_ae_header_id 
222230 , p_source_22 => p_source_22
222231          , x_transaction_coa_id       => l_adr_transaction_coa_id
222232          , x_accounting_coa_id        => l_adr_accounting_coa_id
222233          , x_value_type_code          => l_adr_value_type_code
222234          , p_side                     => 'NA'
222235    );
222236 
222237    xla_ae_lines_pkg.set_ccid(
222238     p_code_combination_id          => l_ccid
222239   , p_value_type_code              => l_adr_value_type_code
222240   , p_transaction_coa_id           => l_adr_transaction_coa_id
222241   , p_accounting_coa_id            => l_adr_accounting_coa_id
222242   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
222243   , p_adr_type_code                => 'S'
222244   , p_component_type               => l_component_type
222245   , p_component_code               => l_component_code
222246   , p_component_type_code          => l_component_type_code
222247   , p_component_appl_id            => l_component_appl_id
222248   , p_amb_context_code             => l_amb_context_code
222249   , p_side                         => 'NA'
222250   );
222251 
222252 
222253    --
222254    --
222255    END IF;
222256    --
222257    -- Bug 4922099
222258    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
222259           (NVL(l_enc_upg_option, 'N') = 'O')
222260         ) AND
222261         (l_bflow_method_code = 'PRIOR_ENTRY')
222262       )
222263    THEN
222264       IF
222265       --
222266       1 = 2
222267       --
222268       THEN
222269       xla_accounting_err_pkg.build_message
222270                                     (p_appli_s_name            => 'XLA'
222271                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
222272                                     ,p_token_1                 => 'LINE_NUMBER'
222273                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
222274                                     ,p_token_2                 => 'LINE_TYPE_NAME'
222275                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
222276                                                                              l_component_type
222277                                                                             ,l_component_code
222278                                                                             ,l_component_type_code
222279                                                                             ,l_component_appl_id
222280                                                                             ,l_amb_context_code
222281                                                                             ,l_entity_code
222282                                                                             ,l_event_class_code
222283                                                                            )
222284                                     ,p_token_3                 => 'OWNER'
222285                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
222286                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
222287                                                                           ,p_lookup_code    => l_component_type_code
222288                                                                          )
222289                                     ,p_token_4                 => 'PRODUCT_NAME'
222290                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
222291                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
222292                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
222293                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
222294                                     ,p_ae_header_id            =>  NULL
222295                                        );
222296 
222297         IF (C_LEVEL_ERROR>= g_log_level) THEN
222298                  trace
222299                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
222300                       ,p_level    => C_LEVEL_ERROR
222301                       ,p_module   => l_log_module);
222302         END IF;
222303       END IF;
222304    END IF;
222305    --
222306    --
222307    ------------------------------------------------------------------------------------------------
222308    -- 4219869 Business Flow
222309    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
222310    -- Prior Entry.  Currently, the following code is always generated.
222311    ------------------------------------------------------------------------------------------------
222312    XLA_AE_LINES_PKG.ValidateCurrentLine;
222313 
222314    ------------------------------------------------------------------------------------
222315    -- 4219869 Business Flow
222316    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
222317    ------------------------------------------------------------------------------------
222318    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
222319 
222320    ----------------------------------------------------------------------------------
222321    -- 4219869 Business Flow
222322    -- Update journal entry status -- Need to generate this within IF <condition>
222323    ----------------------------------------------------------------------------------
222324    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
222325          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
222326          ,p_balance_type_code => l_balance_type_code
222327          );
222328 
222329    -------------------------------------------------------------------------------------------
222330    -- 4262811 - Generate the Accrual Reversal lines
222331    -------------------------------------------------------------------------------------------
222332    BEGIN
222333       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
222334                               (g_array_event(p_event_id).array_value_num('header_index'));
222335       IF l_acc_rev_flag IS NULL THEN
222336          l_acc_rev_flag := 'N';
222337       END IF;
222338    EXCEPTION
222339       WHEN OTHERS THEN
222340          l_acc_rev_flag := 'N';
222341    END;
222342    --
222343    IF (l_acc_rev_flag = 'Y') THEN
222344 
222345        -- 4645092  ------------------------------------------------------------------------------
222346        -- To allow MPA report to determine if it should generate report process
222347        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
222348        ------------------------------------------------------------------------------------------
222349 
222350        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
222351        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
222352    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
222353    -- call ADRs
222354    -- Bug 4922099
222355    --
222356    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
222357         (NVL(l_actual_upg_option, 'N') = 'O') OR
222358         (NVL(l_enc_upg_option, 'N') = 'O')
222359       )
222360    THEN
222361    NULL;
222362    --
222363    --
222364    
222365   l_ccid := AcctDerRule_11(
222366            p_application_id           => p_application_id
222367          , p_ae_header_id             => l_ae_header_id 
222368 , p_source_22 => p_source_22
222369          , x_transaction_coa_id       => l_adr_transaction_coa_id
222370          , x_accounting_coa_id        => l_adr_accounting_coa_id
222371          , x_value_type_code          => l_adr_value_type_code
222372          , p_side                     => 'NA'
222373    );
222374 
222375    xla_ae_lines_pkg.set_ccid(
222376     p_code_combination_id          => l_ccid
222377   , p_value_type_code              => l_adr_value_type_code
222378   , p_transaction_coa_id           => l_adr_transaction_coa_id
222379   , p_accounting_coa_id            => l_adr_accounting_coa_id
222380   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
222381   , p_adr_type_code                => 'S'
222382   , p_component_type               => l_component_type
222383   , p_component_code               => l_component_code
222384   , p_component_type_code          => l_component_type_code
222385   , p_component_appl_id            => l_component_appl_id
222386   , p_amb_context_code             => l_amb_context_code
222387   , p_side                         => 'NA'
222388   );
222389 
222390 
222391    --
222392    --
222393    END IF;
222394 
222395        --
222396        -- Update the line information that should be overwritten
222397        --
222398        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
222399                                          p_header_num   => 1);
222400        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
222401 
222402        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
222403 
222404        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
222405           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
222406        END IF;
222407 
222408       --
222409       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
222410       --
222411       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
222412           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
222413       ELSE
222414           ---------------------------------------------------------------------------------------------------
222415           -- 4262811a Switch Sign
222416           ---------------------------------------------------------------------------------------------------
222417           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
222418           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
222419                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
222420           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
222421                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
222422           -- 5132302
222423           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
222424                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
222425 
222426       END IF;
222427 
222428       -- 4955764
222429       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
222430       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
222431 
222432 
222433       XLA_AE_LINES_PKG.ValidateCurrentLine;
222434       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
222435 
222436       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
222437                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
222438                ,p_balance_type_code => l_balance_type_code);
222439 
222440    END IF;
222441 
222442    -----------------------------------------------------------------------------------------
222443    -- 4262811 Multiperiod Accounting
222444    -----------------------------------------------------------------------------------------
222445      -- No MPA option is assigned.
222446 
222447 
222448 END IF;
222449 END IF;
222450 --
222451 
222452 --
222453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
222454    trace
222455       (p_msg      => 'END of AcctLineType_403'
222456       ,p_level    => C_LEVEL_PROCEDURE
222457       ,p_module   => l_log_module);
222458 END IF;
222459 --
222460 EXCEPTION
222461   WHEN xla_exceptions_pkg.application_exception THEN
222462       RAISE;
222463   WHEN OTHERS THEN
222464        xla_exceptions_pkg.raise_message
222465            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_403');
222466 END AcctLineType_403;
222467 --
222468 
222469 ---------------------------------------
222470 --
222471 -- PRIVATE FUNCTION
222472 --         AcctLineType_404
222473 --
222474 ---------------------------------------
222475 PROCEDURE AcctLineType_404 (
222476   p_application_id        IN NUMBER
222477  ,p_event_id              IN NUMBER
222478  ,p_calculate_acctd_flag  IN VARCHAR2
222479  ,p_calculate_g_l_flag    IN VARCHAR2
222480  ,p_actual_flag           IN OUT VARCHAR2
222481  ,p_balance_type_code     OUT VARCHAR2
222482  ,p_gain_or_loss_ref      OUT VARCHAR2
222483  
222484 --TRANSACTION_ID
222485  , p_source_1            IN NUMBER
222486 --Item Concatenated Segments
222487  , p_source_2            IN VARCHAR2
222488 --Transaction Quantity
222489  , p_source_3            IN NUMBER
222490 --Transaction Unit of Measure Code
222491  , p_source_4            IN VARCHAR2
222492 --Inventory Transaction Type Description
222493  , p_source_5            IN VARCHAR2
222494 --Product Line Accounting Category Bridging Account
222495  , p_source_22            IN NUMBER
222496 --DISTRIBUTION_IDENTIFIER
222497  , p_source_84            IN NUMBER
222498 --Distribution Type
222499  , p_source_85            IN VARCHAR2
222500  , p_source_85_meaning    IN VARCHAR2
222501 --Entered Currency Code
222502  , p_source_88            IN VARCHAR2
222503 --Entered Amount
222504  , p_source_91            IN NUMBER
222505 --Currency Conversion Date
222506  , p_source_92            IN DATE
222507 --Currency Conversion Rate
222508  , p_source_93            IN NUMBER
222509 --Currency Conversion Type
222510  , p_source_94            IN VARCHAR2
222511 --Accounted Amount
222512  , p_source_95            IN NUMBER
222513 --Accounting Line Type
222514  , p_source_97            IN NUMBER
222515 )
222516 IS
222517 
222518 l_component_type              VARCHAR2(80);
222519 l_component_code              VARCHAR2(30);
222520 l_component_type_code         VARCHAR2(1);
222521 l_component_appl_id           INTEGER;
222522 l_amb_context_code            VARCHAR2(30);
222523 l_entity_code                 VARCHAR2(30);
222524 l_event_class_code            VARCHAR2(30);
222525 l_ae_header_id                NUMBER;
222526 l_event_type_code             VARCHAR2(30);
222527 l_line_definition_code        VARCHAR2(30);
222528 l_line_definition_owner_code  VARCHAR2(1);
222529 --
222530 -- adr variables
222531 l_segment                     VARCHAR2(30);
222532 l_ccid                        NUMBER;
222533 l_adr_transaction_coa_id      NUMBER;
222534 l_adr_accounting_coa_id       NUMBER;
222535 l_adr_flexfield_segment_code  VARCHAR2(30);
222536 l_adr_flex_value_set_id       NUMBER;
222537 l_adr_value_type_code         VARCHAR2(30);
222538 l_adr_value_combination_id    NUMBER;
222539 l_adr_value_segment_code      VARCHAR2(30);
222540 
222541 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
222542 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
222543 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
222544 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
222545 
222546 -- 4262811 Variables ------------------------------------------------------------------------------------------
222547 l_entered_amt_idx             NUMBER;
222548 l_accted_amt_idx              NUMBER;
222549 l_acc_rev_flag                VARCHAR2(1);
222550 l_accrual_line_num            NUMBER;
222551 l_tmp_amt                     NUMBER;
222552 l_acc_rev_natural_side_code   VARCHAR2(1);
222553 
222554 l_num_entries                 NUMBER;
222555 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
222556 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
222557 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
222558 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
222559 l_recog_line_1                NUMBER;
222560 l_recog_line_2                NUMBER;
222561 
222562 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
222563 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
222564 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
222565 
222566 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
222567 
222568 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
222569 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
222570 
222571 ---------------------------------------------------------------------------------------------------------------
222572 
222573 
222574 --
222575 -- bulk performance
222576 --
222577 l_balance_type_code           VARCHAR2(1);
222578 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
222579 l_log_module                  VARCHAR2(240);
222580 
222581 --
222582 -- Upgrade strategy
222583 --
222584 l_actual_upg_option           VARCHAR2(1);
222585 l_enc_upg_option           VARCHAR2(1);
222586 
222587 --
222588 BEGIN
222589 --
222590 IF g_log_enabled THEN
222591       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_404';
222592 END IF;
222593 --
222594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
222595 
222596       trace
222597          (p_msg      => 'BEGIN of AcctLineType_404'
222598          ,p_level    => C_LEVEL_PROCEDURE
222599          ,p_module   => l_log_module);
222600 
222601 END IF;
222602 --
222603 l_component_type             := 'AMB_JLT';
222604 l_component_code             := 'PI_BRIDGING_212';
222605 l_component_type_code        := 'S';
222606 l_component_appl_id          :=  707;
222607 l_amb_context_code           := 'DEFAULT';
222608 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
222609 l_event_class_code           := 'USER_DEFINE';
222610 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
222611 l_line_definition_owner_code := 'S';
222612 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
222613 --
222614 l_balance_type_code          := 'A';
222615 l_segment                     := NULL;
222616 l_ccid                        := NULL;
222617 l_adr_transaction_coa_id      := NULL;
222618 l_adr_accounting_coa_id       := NULL;
222619 l_adr_flexfield_segment_code  := NULL;
222620 l_adr_flex_value_set_id       := NULL;
222621 l_adr_value_type_code         := NULL;
222622 l_adr_value_combination_id    := NULL;
222623 l_adr_value_segment_code      := NULL;
222624 
222625 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
222626 l_bflow_class_code           := '';    -- 4219869 Business Flow
222627 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
222628 l_budgetary_control_flag     := 'N';
222629 
222630 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
222631 l_bflow_applied_to_amt       := NULL; -- 5132302
222632 l_entered_amt_idx            := NULL;          -- 4262811
222633 l_accted_amt_idx             := NULL;          -- 4262811
222634 l_acc_rev_flag               := NULL;          -- 4262811
222635 l_accrual_line_num           := NULL;          -- 4262811
222636 l_tmp_amt                    := NULL;          -- 4262811
222637 --
222638  
222639 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
222640     l_balance_type_code <> 'B' THEN
222641 IF NVL(p_source_97,9E125) =  14
222642  THEN 
222643 
222644    --
222645    XLA_AE_LINES_PKG.SetNewLine;
222646 
222647    p_balance_type_code          := l_balance_type_code;
222648    -- set the flag so later we will know whether the gain loss line needs to be created
222649    
222650    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
222651      p_actual_flag :='A';
222652    END IF;
222653 
222654    --
222655    -- bulk performance
222656    --
222657    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
222658                                       p_header_num   => 0); -- 4262811
222659    --
222660    -- set accounting line options
222661    --
222662    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
222663            p_natural_side_code          => 'D'
222664          , p_gain_or_loss_flag          => 'N'
222665          , p_gl_transfer_mode_code      => 'S'
222666          , p_acct_entry_type_code       => 'A'
222667          , p_switch_side_flag           => 'Y'
222668          , p_merge_duplicate_code       => 'N'
222669          );
222670    --
222671    l_acc_rev_natural_side_code := 'C';  -- 4262811
222672    -- 
222673    --
222674    -- set accounting line type info
222675    --
222676    xla_ae_lines_pkg.SetAcctLineType
222677       (p_component_type             => l_component_type
222678       ,p_event_type_code            => l_event_type_code
222679       ,p_line_definition_owner_code => l_line_definition_owner_code
222680       ,p_line_definition_code       => l_line_definition_code
222681       ,p_accounting_line_code       => l_component_code
222682       ,p_accounting_line_type_code  => l_component_type_code
222683       ,p_accounting_line_appl_id    => l_component_appl_id
222684       ,p_amb_context_code           => l_amb_context_code
222685       ,p_entity_code                => l_entity_code
222686       ,p_event_class_code           => l_event_class_code);
222687    --
222688    -- set accounting class
222689    --
222690    xla_ae_lines_pkg.SetAcctClass(
222691            p_accounting_class_code  => 'BRIDGING'
222692          , p_ae_header_id           => l_ae_header_id
222693          );
222694 
222695    --
222696    -- set rounding class
222697    --
222698    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
222699                       'BRIDGING';
222700 
222701    --
222702    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
222703    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
222704    --
222705    -- bulk performance
222706    --
222707    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
222708 
222709    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
222710       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
222711 
222712    -- 4955764
222713    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
222714       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
222715 
222716    -- 4458381 Public Sector Enh
222717    
222718    --
222719    -- set accounting attributes for the line type
222720    --
222721    l_entered_amt_idx := 3;
222722    l_accted_amt_idx  := 8;
222723    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
222724    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
222725    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
222726    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
222727    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
222728    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
222729    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
222730    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
222731    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
222732    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
222733    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
222734    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
222735    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
222736    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
222737    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
222738    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
222739    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
222740 
222741    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
222742    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
222743 
222744    ---------------------------------------------------------------------------------------------------------------
222745    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
222746    ---------------------------------------------------------------------------------------------------------------
222747    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
222748 
222749    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
222750    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
222751 
222752    IF xla_accounting_cache_pkg.GetValueChar
222753          (p_source_code         => 'LEDGER_CATEGORY_CODE'
222754          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
222755    AND l_bflow_method_code = 'PRIOR_ENTRY'
222756 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
222757    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
222758          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
222759        )
222760    THEN
222761          xla_ae_lines_pkg.BflowUpgEntry
222762            (p_business_method_code    => l_bflow_method_code
222763            ,p_business_class_code     => l_bflow_class_code
222764            ,p_balance_type            => l_balance_type_code);
222765    ELSE
222766       NULL;
222767 -- No business flow processing for business flow method of NONE.
222768    END IF;
222769 
222770    --
222771    -- call analytical criteria
222772    --
222773    
222774    --
222775    -- call description
222776    --
222777    
222778 xla_ae_lines_pkg.SetLineDescription(
222779    p_ae_header_id => l_ae_header_id
222780   ,p_description  => Description_1 (
222781      p_application_id         => p_application_id
222782    , p_ae_header_id           => l_ae_header_id 
222783 , p_source_1 => p_source_1
222784 , p_source_2 => p_source_2
222785 , p_source_3 => p_source_3
222786 , p_source_4 => p_source_4
222787 , p_source_5 => p_source_5
222788    )
222789 );
222790 
222791 
222792    --
222793    -- call ADRs
222794    -- Bug 4922099
222795    --
222796    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
222797         (NVL(l_actual_upg_option, 'N') = 'O') OR
222798         (NVL(l_enc_upg_option, 'N') = 'O')
222799       )
222800    THEN
222801    NULL;
222802    --
222803    --
222804    
222805   l_ccid := AcctDerRule_11(
222806            p_application_id           => p_application_id
222807          , p_ae_header_id             => l_ae_header_id 
222808 , p_source_22 => p_source_22
222809          , x_transaction_coa_id       => l_adr_transaction_coa_id
222810          , x_accounting_coa_id        => l_adr_accounting_coa_id
222811          , x_value_type_code          => l_adr_value_type_code
222812          , p_side                     => 'NA'
222813    );
222814 
222815    xla_ae_lines_pkg.set_ccid(
222816     p_code_combination_id          => l_ccid
222817   , p_value_type_code              => l_adr_value_type_code
222818   , p_transaction_coa_id           => l_adr_transaction_coa_id
222819   , p_accounting_coa_id            => l_adr_accounting_coa_id
222820   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
222821   , p_adr_type_code                => 'S'
222822   , p_component_type               => l_component_type
222823   , p_component_code               => l_component_code
222824   , p_component_type_code          => l_component_type_code
222825   , p_component_appl_id            => l_component_appl_id
222826   , p_amb_context_code             => l_amb_context_code
222827   , p_side                         => 'NA'
222828   );
222829 
222830 
222831    --
222832    --
222833    END IF;
222834    --
222835    -- Bug 4922099
222836    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
222837           (NVL(l_enc_upg_option, 'N') = 'O')
222838         ) AND
222839         (l_bflow_method_code = 'PRIOR_ENTRY')
222840       )
222841    THEN
222842       IF
222843       --
222844       1 = 2
222845       --
222846       THEN
222847       xla_accounting_err_pkg.build_message
222848                                     (p_appli_s_name            => 'XLA'
222849                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
222850                                     ,p_token_1                 => 'LINE_NUMBER'
222851                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
222852                                     ,p_token_2                 => 'LINE_TYPE_NAME'
222853                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
222854                                                                              l_component_type
222855                                                                             ,l_component_code
222856                                                                             ,l_component_type_code
222857                                                                             ,l_component_appl_id
222858                                                                             ,l_amb_context_code
222859                                                                             ,l_entity_code
222860                                                                             ,l_event_class_code
222861                                                                            )
222862                                     ,p_token_3                 => 'OWNER'
222863                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
222864                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
222865                                                                           ,p_lookup_code    => l_component_type_code
222866                                                                          )
222867                                     ,p_token_4                 => 'PRODUCT_NAME'
222868                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
222869                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
222870                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
222871                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
222872                                     ,p_ae_header_id            =>  NULL
222873                                        );
222874 
222875         IF (C_LEVEL_ERROR>= g_log_level) THEN
222876                  trace
222877                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
222878                       ,p_level    => C_LEVEL_ERROR
222879                       ,p_module   => l_log_module);
222880         END IF;
222881       END IF;
222882    END IF;
222883    --
222884    --
222885    ------------------------------------------------------------------------------------------------
222886    -- 4219869 Business Flow
222887    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
222888    -- Prior Entry.  Currently, the following code is always generated.
222889    ------------------------------------------------------------------------------------------------
222890    XLA_AE_LINES_PKG.ValidateCurrentLine;
222891 
222892    ------------------------------------------------------------------------------------
222893    -- 4219869 Business Flow
222894    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
222895    ------------------------------------------------------------------------------------
222896    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
222897 
222898    ----------------------------------------------------------------------------------
222899    -- 4219869 Business Flow
222900    -- Update journal entry status -- Need to generate this within IF <condition>
222901    ----------------------------------------------------------------------------------
222902    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
222903          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
222904          ,p_balance_type_code => l_balance_type_code
222905          );
222906 
222907    -------------------------------------------------------------------------------------------
222908    -- 4262811 - Generate the Accrual Reversal lines
222909    -------------------------------------------------------------------------------------------
222910    BEGIN
222911       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
222912                               (g_array_event(p_event_id).array_value_num('header_index'));
222913       IF l_acc_rev_flag IS NULL THEN
222914          l_acc_rev_flag := 'N';
222915       END IF;
222916    EXCEPTION
222917       WHEN OTHERS THEN
222918          l_acc_rev_flag := 'N';
222919    END;
222920    --
222921    IF (l_acc_rev_flag = 'Y') THEN
222922 
222923        -- 4645092  ------------------------------------------------------------------------------
222924        -- To allow MPA report to determine if it should generate report process
222925        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
222926        ------------------------------------------------------------------------------------------
222927 
222928        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
222929        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
222930    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
222931    -- call ADRs
222932    -- Bug 4922099
222933    --
222934    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
222935         (NVL(l_actual_upg_option, 'N') = 'O') OR
222936         (NVL(l_enc_upg_option, 'N') = 'O')
222937       )
222938    THEN
222939    NULL;
222940    --
222941    --
222942    
222943   l_ccid := AcctDerRule_11(
222944            p_application_id           => p_application_id
222945          , p_ae_header_id             => l_ae_header_id 
222946 , p_source_22 => p_source_22
222947          , x_transaction_coa_id       => l_adr_transaction_coa_id
222948          , x_accounting_coa_id        => l_adr_accounting_coa_id
222949          , x_value_type_code          => l_adr_value_type_code
222950          , p_side                     => 'NA'
222951    );
222952 
222953    xla_ae_lines_pkg.set_ccid(
222954     p_code_combination_id          => l_ccid
222955   , p_value_type_code              => l_adr_value_type_code
222956   , p_transaction_coa_id           => l_adr_transaction_coa_id
222957   , p_accounting_coa_id            => l_adr_accounting_coa_id
222958   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
222959   , p_adr_type_code                => 'S'
222960   , p_component_type               => l_component_type
222961   , p_component_code               => l_component_code
222962   , p_component_type_code          => l_component_type_code
222963   , p_component_appl_id            => l_component_appl_id
222964   , p_amb_context_code             => l_amb_context_code
222965   , p_side                         => 'NA'
222966   );
222967 
222968 
222969    --
222970    --
222971    END IF;
222972 
222973        --
222974        -- Update the line information that should be overwritten
222975        --
222976        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
222977                                          p_header_num   => 1);
222978        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
222979 
222980        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
222981 
222982        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
222983           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
222984        END IF;
222985 
222986       --
222987       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
222988       --
222989       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
222990           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
222991       ELSE
222992           ---------------------------------------------------------------------------------------------------
222993           -- 4262811a Switch Sign
222994           ---------------------------------------------------------------------------------------------------
222995           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
222996           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
222997                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
222998           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
222999                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
223000           -- 5132302
223001           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
223002                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
223003 
223004       END IF;
223005 
223006       -- 4955764
223007       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
223008       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
223009 
223010 
223011       XLA_AE_LINES_PKG.ValidateCurrentLine;
223012       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
223013 
223014       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
223015                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
223016                ,p_balance_type_code => l_balance_type_code);
223017 
223018    END IF;
223019 
223020    -----------------------------------------------------------------------------------------
223021    -- 4262811 Multiperiod Accounting
223022    -----------------------------------------------------------------------------------------
223023      -- No MPA option is assigned.
223024 
223025 
223026 END IF;
223027 END IF;
223028 --
223029 
223030 --
223031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
223032    trace
223033       (p_msg      => 'END of AcctLineType_404'
223034       ,p_level    => C_LEVEL_PROCEDURE
223035       ,p_module   => l_log_module);
223036 END IF;
223037 --
223038 EXCEPTION
223039   WHEN xla_exceptions_pkg.application_exception THEN
223040       RAISE;
223041   WHEN OTHERS THEN
223042        xla_exceptions_pkg.raise_message
223043            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_404');
223044 END AcctLineType_404;
223045 --
223046 
223047 ---------------------------------------
223048 --
223049 -- PRIVATE FUNCTION
223050 --         AcctLineType_405
223051 --
223052 ---------------------------------------
223053 PROCEDURE AcctLineType_405 (
223054   p_application_id        IN NUMBER
223055  ,p_event_id              IN NUMBER
223056  ,p_calculate_acctd_flag  IN VARCHAR2
223057  ,p_calculate_g_l_flag    IN VARCHAR2
223058  ,p_actual_flag           IN OUT VARCHAR2
223059  ,p_balance_type_code     OUT VARCHAR2
223060  ,p_gain_or_loss_ref      OUT VARCHAR2
223061  
223062 --TRANSACTION_ID
223063  , p_source_1            IN NUMBER
223064 --Item Concatenated Segments
223065  , p_source_2            IN VARCHAR2
223066 --Transaction Quantity
223067  , p_source_3            IN NUMBER
223068 --Transaction Unit of Measure Code
223069  , p_source_4            IN VARCHAR2
223070 --Inventory Transaction Type Description
223071  , p_source_5            IN VARCHAR2
223072 --Interorg Expense Account
223073  , p_source_34            IN NUMBER
223074 --DISTRIBUTION_IDENTIFIER
223075  , p_source_84            IN NUMBER
223076 --Distribution Type
223077  , p_source_85            IN VARCHAR2
223078  , p_source_85_meaning    IN VARCHAR2
223079 --Entered Currency Code
223080  , p_source_88            IN VARCHAR2
223081 --Entered Amount
223082  , p_source_91            IN NUMBER
223083 --Currency Conversion Date
223084  , p_source_92            IN DATE
223085 --Currency Conversion Rate
223086  , p_source_93            IN NUMBER
223087 --Currency Conversion Type
223088  , p_source_94            IN VARCHAR2
223089 --Accounted Amount
223090  , p_source_95            IN NUMBER
223091 --Accounting Line Type
223092  , p_source_97            IN NUMBER
223093 )
223094 IS
223095 
223096 l_component_type              VARCHAR2(80);
223097 l_component_code              VARCHAR2(30);
223098 l_component_type_code         VARCHAR2(1);
223099 l_component_appl_id           INTEGER;
223100 l_amb_context_code            VARCHAR2(30);
223101 l_entity_code                 VARCHAR2(30);
223102 l_event_class_code            VARCHAR2(30);
223103 l_ae_header_id                NUMBER;
223104 l_event_type_code             VARCHAR2(30);
223105 l_line_definition_code        VARCHAR2(30);
223106 l_line_definition_owner_code  VARCHAR2(1);
223107 --
223108 -- adr variables
223109 l_segment                     VARCHAR2(30);
223110 l_ccid                        NUMBER;
223111 l_adr_transaction_coa_id      NUMBER;
223112 l_adr_accounting_coa_id       NUMBER;
223113 l_adr_flexfield_segment_code  VARCHAR2(30);
223114 l_adr_flex_value_set_id       NUMBER;
223115 l_adr_value_type_code         VARCHAR2(30);
223116 l_adr_value_combination_id    NUMBER;
223117 l_adr_value_segment_code      VARCHAR2(30);
223118 
223119 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
223120 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
223121 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
223122 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
223123 
223124 -- 4262811 Variables ------------------------------------------------------------------------------------------
223125 l_entered_amt_idx             NUMBER;
223126 l_accted_amt_idx              NUMBER;
223127 l_acc_rev_flag                VARCHAR2(1);
223128 l_accrual_line_num            NUMBER;
223129 l_tmp_amt                     NUMBER;
223130 l_acc_rev_natural_side_code   VARCHAR2(1);
223131 
223132 l_num_entries                 NUMBER;
223133 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
223134 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
223135 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
223136 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
223137 l_recog_line_1                NUMBER;
223138 l_recog_line_2                NUMBER;
223139 
223140 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
223141 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
223142 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
223143 
223144 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
223145 
223146 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
223147 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
223148 
223149 ---------------------------------------------------------------------------------------------------------------
223150 
223151 
223152 --
223153 -- bulk performance
223154 --
223155 l_balance_type_code           VARCHAR2(1);
223156 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
223157 l_log_module                  VARCHAR2(240);
223158 
223159 --
223160 -- Upgrade strategy
223161 --
223162 l_actual_upg_option           VARCHAR2(1);
223163 l_enc_upg_option           VARCHAR2(1);
223164 
223165 --
223166 BEGIN
223167 --
223168 IF g_log_enabled THEN
223169       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_405';
223170 END IF;
223171 --
223172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
223173 
223174       trace
223175          (p_msg      => 'BEGIN of AcctLineType_405'
223176          ,p_level    => C_LEVEL_PROCEDURE
223177          ,p_module   => l_log_module);
223178 
223179 END IF;
223180 --
223181 l_component_type             := 'AMB_JLT';
223182 l_component_code             := 'PI_EXPENSE';
223183 l_component_type_code        := 'S';
223184 l_component_appl_id          :=  707;
223185 l_amb_context_code           := 'DEFAULT';
223186 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
223187 l_event_class_code           := 'USER_DEFINE';
223188 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
223189 l_line_definition_owner_code := 'S';
223190 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
223191 --
223192 l_balance_type_code          := 'A';
223193 l_segment                     := NULL;
223194 l_ccid                        := NULL;
223195 l_adr_transaction_coa_id      := NULL;
223196 l_adr_accounting_coa_id       := NULL;
223197 l_adr_flexfield_segment_code  := NULL;
223198 l_adr_flex_value_set_id       := NULL;
223199 l_adr_value_type_code         := NULL;
223200 l_adr_value_combination_id    := NULL;
223201 l_adr_value_segment_code      := NULL;
223202 
223203 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
223204 l_bflow_class_code           := '';    -- 4219869 Business Flow
223205 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
223206 l_budgetary_control_flag     := 'N';
223207 
223208 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
223209 l_bflow_applied_to_amt       := NULL; -- 5132302
223210 l_entered_amt_idx            := NULL;          -- 4262811
223211 l_accted_amt_idx             := NULL;          -- 4262811
223212 l_acc_rev_flag               := NULL;          -- 4262811
223213 l_accrual_line_num           := NULL;          -- 4262811
223214 l_tmp_amt                    := NULL;          -- 4262811
223215 --
223216  
223217 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
223218     l_balance_type_code <> 'B' THEN
223219 IF NVL(p_source_97,9E125) =  1
223220  THEN 
223221 
223222    --
223223    XLA_AE_LINES_PKG.SetNewLine;
223224 
223225    p_balance_type_code          := l_balance_type_code;
223226    -- set the flag so later we will know whether the gain loss line needs to be created
223227    
223228    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
223229      p_actual_flag :='A';
223230    END IF;
223231 
223232    --
223233    -- bulk performance
223234    --
223235    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
223236                                       p_header_num   => 0); -- 4262811
223237    --
223238    -- set accounting line options
223239    --
223240    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
223241            p_natural_side_code          => 'D'
223242          , p_gain_or_loss_flag          => 'N'
223243          , p_gl_transfer_mode_code      => 'S'
223244          , p_acct_entry_type_code       => 'A'
223245          , p_switch_side_flag           => 'Y'
223246          , p_merge_duplicate_code       => 'N'
223247          );
223248    --
223249    l_acc_rev_natural_side_code := 'C';  -- 4262811
223250    -- 
223251    --
223252    -- set accounting line type info
223253    --
223254    xla_ae_lines_pkg.SetAcctLineType
223255       (p_component_type             => l_component_type
223256       ,p_event_type_code            => l_event_type_code
223257       ,p_line_definition_owner_code => l_line_definition_owner_code
223258       ,p_line_definition_code       => l_line_definition_code
223259       ,p_accounting_line_code       => l_component_code
223260       ,p_accounting_line_type_code  => l_component_type_code
223261       ,p_accounting_line_appl_id    => l_component_appl_id
223262       ,p_amb_context_code           => l_amb_context_code
223263       ,p_entity_code                => l_entity_code
223264       ,p_event_class_code           => l_event_class_code);
223265    --
223266    -- set accounting class
223267    --
223268    xla_ae_lines_pkg.SetAcctClass(
223269            p_accounting_class_code  => 'EXPENSE'
223270          , p_ae_header_id           => l_ae_header_id
223271          );
223272 
223273    --
223274    -- set rounding class
223275    --
223276    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
223277                       'EXPENSE';
223278 
223279    --
223280    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
223281    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
223282    --
223283    -- bulk performance
223284    --
223285    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
223286 
223287    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
223288       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
223289 
223290    -- 4955764
223291    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
223292       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
223293 
223294    -- 4458381 Public Sector Enh
223295    
223296    --
223297    -- set accounting attributes for the line type
223298    --
223299    l_entered_amt_idx := 3;
223300    l_accted_amt_idx  := 8;
223301    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
223302    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
223303    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
223304    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
223305    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
223306    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
223307    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
223308    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
223309    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
223310    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
223311    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
223312    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
223313    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
223314    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
223315    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
223316    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
223317    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
223318 
223319    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
223320    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
223321 
223322    ---------------------------------------------------------------------------------------------------------------
223323    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
223324    ---------------------------------------------------------------------------------------------------------------
223325    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
223326 
223327    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
223328    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
223329 
223330    IF xla_accounting_cache_pkg.GetValueChar
223331          (p_source_code         => 'LEDGER_CATEGORY_CODE'
223332          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
223333    AND l_bflow_method_code = 'PRIOR_ENTRY'
223334 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
223335    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
223336          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
223337        )
223338    THEN
223339          xla_ae_lines_pkg.BflowUpgEntry
223340            (p_business_method_code    => l_bflow_method_code
223341            ,p_business_class_code     => l_bflow_class_code
223342            ,p_balance_type            => l_balance_type_code);
223343    ELSE
223344       NULL;
223345 -- No business flow processing for business flow method of NONE.
223346    END IF;
223347 
223348    --
223349    -- call analytical criteria
223350    --
223351    
223352    --
223353    -- call description
223354    --
223355    
223356 xla_ae_lines_pkg.SetLineDescription(
223357    p_ae_header_id => l_ae_header_id
223358   ,p_description  => Description_1 (
223359      p_application_id         => p_application_id
223360    , p_ae_header_id           => l_ae_header_id 
223361 , p_source_1 => p_source_1
223362 , p_source_2 => p_source_2
223363 , p_source_3 => p_source_3
223364 , p_source_4 => p_source_4
223365 , p_source_5 => p_source_5
223366    )
223367 );
223368 
223369 
223370    --
223371    -- call ADRs
223372    -- Bug 4922099
223373    --
223374    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
223375         (NVL(l_actual_upg_option, 'N') = 'O') OR
223376         (NVL(l_enc_upg_option, 'N') = 'O')
223377       )
223378    THEN
223379    NULL;
223380    --
223381    --
223382    
223383   l_ccid := AcctDerRule_19(
223384            p_application_id           => p_application_id
223385          , p_ae_header_id             => l_ae_header_id 
223386 , p_source_34 => p_source_34
223387          , x_transaction_coa_id       => l_adr_transaction_coa_id
223388          , x_accounting_coa_id        => l_adr_accounting_coa_id
223389          , x_value_type_code          => l_adr_value_type_code
223390          , p_side                     => 'NA'
223391    );
223392 
223393    xla_ae_lines_pkg.set_ccid(
223394     p_code_combination_id          => l_ccid
223395   , p_value_type_code              => l_adr_value_type_code
223396   , p_transaction_coa_id           => l_adr_transaction_coa_id
223397   , p_accounting_coa_id            => l_adr_accounting_coa_id
223398   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
223399   , p_adr_type_code                => 'S'
223400   , p_component_type               => l_component_type
223401   , p_component_code               => l_component_code
223402   , p_component_type_code          => l_component_type_code
223403   , p_component_appl_id            => l_component_appl_id
223404   , p_amb_context_code             => l_amb_context_code
223405   , p_side                         => 'NA'
223406   );
223407 
223408 
223409    --
223410    --
223411    END IF;
223412    --
223413    -- Bug 4922099
223414    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
223415           (NVL(l_enc_upg_option, 'N') = 'O')
223416         ) AND
223417         (l_bflow_method_code = 'PRIOR_ENTRY')
223418       )
223419    THEN
223420       IF
223421       --
223422       1 = 2
223423       --
223424       THEN
223425       xla_accounting_err_pkg.build_message
223426                                     (p_appli_s_name            => 'XLA'
223427                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
223428                                     ,p_token_1                 => 'LINE_NUMBER'
223429                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
223430                                     ,p_token_2                 => 'LINE_TYPE_NAME'
223431                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
223432                                                                              l_component_type
223433                                                                             ,l_component_code
223434                                                                             ,l_component_type_code
223435                                                                             ,l_component_appl_id
223436                                                                             ,l_amb_context_code
223437                                                                             ,l_entity_code
223438                                                                             ,l_event_class_code
223439                                                                            )
223440                                     ,p_token_3                 => 'OWNER'
223441                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
223442                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
223443                                                                           ,p_lookup_code    => l_component_type_code
223444                                                                          )
223445                                     ,p_token_4                 => 'PRODUCT_NAME'
223446                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
223447                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
223448                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
223449                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
223450                                     ,p_ae_header_id            =>  NULL
223451                                        );
223452 
223453         IF (C_LEVEL_ERROR>= g_log_level) THEN
223454                  trace
223455                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
223456                       ,p_level    => C_LEVEL_ERROR
223457                       ,p_module   => l_log_module);
223458         END IF;
223459       END IF;
223460    END IF;
223461    --
223462    --
223463    ------------------------------------------------------------------------------------------------
223464    -- 4219869 Business Flow
223465    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
223466    -- Prior Entry.  Currently, the following code is always generated.
223467    ------------------------------------------------------------------------------------------------
223468    XLA_AE_LINES_PKG.ValidateCurrentLine;
223469 
223470    ------------------------------------------------------------------------------------
223471    -- 4219869 Business Flow
223472    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
223473    ------------------------------------------------------------------------------------
223474    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
223475 
223476    ----------------------------------------------------------------------------------
223477    -- 4219869 Business Flow
223478    -- Update journal entry status -- Need to generate this within IF <condition>
223479    ----------------------------------------------------------------------------------
223480    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
223481          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
223482          ,p_balance_type_code => l_balance_type_code
223483          );
223484 
223485    -------------------------------------------------------------------------------------------
223486    -- 4262811 - Generate the Accrual Reversal lines
223487    -------------------------------------------------------------------------------------------
223488    BEGIN
223489       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
223490                               (g_array_event(p_event_id).array_value_num('header_index'));
223491       IF l_acc_rev_flag IS NULL THEN
223492          l_acc_rev_flag := 'N';
223493       END IF;
223494    EXCEPTION
223495       WHEN OTHERS THEN
223496          l_acc_rev_flag := 'N';
223497    END;
223498    --
223499    IF (l_acc_rev_flag = 'Y') THEN
223500 
223501        -- 4645092  ------------------------------------------------------------------------------
223502        -- To allow MPA report to determine if it should generate report process
223503        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
223504        ------------------------------------------------------------------------------------------
223505 
223506        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
223507        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
223508    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
223509    -- call ADRs
223510    -- Bug 4922099
223511    --
223512    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
223513         (NVL(l_actual_upg_option, 'N') = 'O') OR
223514         (NVL(l_enc_upg_option, 'N') = 'O')
223515       )
223516    THEN
223517    NULL;
223518    --
223519    --
223520    
223521   l_ccid := AcctDerRule_19(
223522            p_application_id           => p_application_id
223523          , p_ae_header_id             => l_ae_header_id 
223524 , p_source_34 => p_source_34
223525          , x_transaction_coa_id       => l_adr_transaction_coa_id
223526          , x_accounting_coa_id        => l_adr_accounting_coa_id
223527          , x_value_type_code          => l_adr_value_type_code
223528          , p_side                     => 'NA'
223529    );
223530 
223531    xla_ae_lines_pkg.set_ccid(
223532     p_code_combination_id          => l_ccid
223533   , p_value_type_code              => l_adr_value_type_code
223534   , p_transaction_coa_id           => l_adr_transaction_coa_id
223535   , p_accounting_coa_id            => l_adr_accounting_coa_id
223536   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
223537   , p_adr_type_code                => 'S'
223538   , p_component_type               => l_component_type
223539   , p_component_code               => l_component_code
223540   , p_component_type_code          => l_component_type_code
223541   , p_component_appl_id            => l_component_appl_id
223542   , p_amb_context_code             => l_amb_context_code
223543   , p_side                         => 'NA'
223544   );
223545 
223546 
223547    --
223548    --
223549    END IF;
223550 
223551        --
223552        -- Update the line information that should be overwritten
223553        --
223554        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
223555                                          p_header_num   => 1);
223556        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
223557 
223558        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
223559 
223560        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
223561           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
223562        END IF;
223563 
223564       --
223565       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
223566       --
223567       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
223568           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
223569       ELSE
223570           ---------------------------------------------------------------------------------------------------
223571           -- 4262811a Switch Sign
223572           ---------------------------------------------------------------------------------------------------
223573           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
223574           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
223575                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
223576           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
223577                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
223578           -- 5132302
223579           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
223580                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
223581 
223582       END IF;
223583 
223584       -- 4955764
223585       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
223586       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
223587 
223588 
223589       XLA_AE_LINES_PKG.ValidateCurrentLine;
223590       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
223591 
223592       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
223593                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
223594                ,p_balance_type_code => l_balance_type_code);
223595 
223596    END IF;
223597 
223598    -----------------------------------------------------------------------------------------
223599    -- 4262811 Multiperiod Accounting
223600    -----------------------------------------------------------------------------------------
223601      -- No MPA option is assigned.
223602 
223603 
223604 END IF;
223605 END IF;
223606 --
223607 
223608 --
223609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
223610    trace
223611       (p_msg      => 'END of AcctLineType_405'
223612       ,p_level    => C_LEVEL_PROCEDURE
223613       ,p_module   => l_log_module);
223614 END IF;
223615 --
223616 EXCEPTION
223617   WHEN xla_exceptions_pkg.application_exception THEN
223618       RAISE;
223619   WHEN OTHERS THEN
223620        xla_exceptions_pkg.raise_message
223621            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_405');
223622 END AcctLineType_405;
223623 --
223624 
223625 ---------------------------------------
223626 --
223627 -- PRIVATE FUNCTION
223628 --         AcctLineType_406
223629 --
223630 ---------------------------------------
223631 PROCEDURE AcctLineType_406 (
223632   p_application_id        IN NUMBER
223633  ,p_event_id              IN NUMBER
223634  ,p_calculate_acctd_flag  IN VARCHAR2
223635  ,p_calculate_g_l_flag    IN VARCHAR2
223636  ,p_actual_flag           IN OUT VARCHAR2
223637  ,p_balance_type_code     OUT VARCHAR2
223638  ,p_gain_or_loss_ref      OUT VARCHAR2
223639  
223640 --Interorg Expense Account
223641  , p_source_34            IN NUMBER
223642 --DISTRIBUTION_IDENTIFIER
223643  , p_source_84            IN NUMBER
223644 --Distribution Type
223645  , p_source_85            IN VARCHAR2
223646  , p_source_85_meaning    IN VARCHAR2
223647 --Entered Currency Code
223648  , p_source_88            IN VARCHAR2
223649 --Entered Amount
223650  , p_source_91            IN NUMBER
223651 --Currency Conversion Date
223652  , p_source_92            IN DATE
223653 --Currency Conversion Rate
223654  , p_source_93            IN NUMBER
223655 --Currency Conversion Type
223656  , p_source_94            IN VARCHAR2
223657 --Accounted Amount
223658  , p_source_95            IN NUMBER
223659 --Accounting Line Type
223660  , p_source_97            IN NUMBER
223661 )
223662 IS
223663 
223664 l_component_type              VARCHAR2(80);
223665 l_component_code              VARCHAR2(30);
223666 l_component_type_code         VARCHAR2(1);
223667 l_component_appl_id           INTEGER;
223668 l_amb_context_code            VARCHAR2(30);
223669 l_entity_code                 VARCHAR2(30);
223670 l_event_class_code            VARCHAR2(30);
223671 l_ae_header_id                NUMBER;
223672 l_event_type_code             VARCHAR2(30);
223673 l_line_definition_code        VARCHAR2(30);
223674 l_line_definition_owner_code  VARCHAR2(1);
223675 --
223676 -- adr variables
223677 l_segment                     VARCHAR2(30);
223678 l_ccid                        NUMBER;
223679 l_adr_transaction_coa_id      NUMBER;
223680 l_adr_accounting_coa_id       NUMBER;
223681 l_adr_flexfield_segment_code  VARCHAR2(30);
223682 l_adr_flex_value_set_id       NUMBER;
223683 l_adr_value_type_code         VARCHAR2(30);
223684 l_adr_value_combination_id    NUMBER;
223685 l_adr_value_segment_code      VARCHAR2(30);
223686 
223687 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
223688 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
223689 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
223690 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
223691 
223692 -- 4262811 Variables ------------------------------------------------------------------------------------------
223693 l_entered_amt_idx             NUMBER;
223694 l_accted_amt_idx              NUMBER;
223695 l_acc_rev_flag                VARCHAR2(1);
223696 l_accrual_line_num            NUMBER;
223697 l_tmp_amt                     NUMBER;
223698 l_acc_rev_natural_side_code   VARCHAR2(1);
223699 
223700 l_num_entries                 NUMBER;
223701 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
223702 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
223703 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
223704 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
223705 l_recog_line_1                NUMBER;
223706 l_recog_line_2                NUMBER;
223707 
223708 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
223709 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
223710 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
223711 
223712 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
223713 
223714 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
223715 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
223716 
223717 ---------------------------------------------------------------------------------------------------------------
223718 
223719 
223720 --
223721 -- bulk performance
223722 --
223723 l_balance_type_code           VARCHAR2(1);
223724 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
223725 l_log_module                  VARCHAR2(240);
223726 
223727 --
223728 -- Upgrade strategy
223729 --
223730 l_actual_upg_option           VARCHAR2(1);
223731 l_enc_upg_option           VARCHAR2(1);
223732 
223733 --
223734 BEGIN
223735 --
223736 IF g_log_enabled THEN
223737       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_406';
223738 END IF;
223739 --
223740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
223741 
223742       trace
223743          (p_msg      => 'BEGIN of AcctLineType_406'
223744          ,p_level    => C_LEVEL_PROCEDURE
223745          ,p_module   => l_log_module);
223746 
223747 END IF;
223748 --
223749 l_component_type             := 'AMB_JLT';
223750 l_component_code             := 'PI_EXPENSE';
223751 l_component_type_code        := 'S';
223752 l_component_appl_id          :=  707;
223753 l_amb_context_code           := 'DEFAULT';
223754 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
223755 l_event_class_code           := 'USER_DEFINE';
223756 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
223757 l_line_definition_owner_code := 'S';
223758 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
223759 --
223760 l_balance_type_code          := 'A';
223761 l_segment                     := NULL;
223762 l_ccid                        := NULL;
223763 l_adr_transaction_coa_id      := NULL;
223764 l_adr_accounting_coa_id       := NULL;
223765 l_adr_flexfield_segment_code  := NULL;
223766 l_adr_flex_value_set_id       := NULL;
223767 l_adr_value_type_code         := NULL;
223768 l_adr_value_combination_id    := NULL;
223769 l_adr_value_segment_code      := NULL;
223770 
223771 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
223772 l_bflow_class_code           := '';    -- 4219869 Business Flow
223773 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
223774 l_budgetary_control_flag     := 'N';
223775 
223776 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
223777 l_bflow_applied_to_amt       := NULL; -- 5132302
223778 l_entered_amt_idx            := NULL;          -- 4262811
223779 l_accted_amt_idx             := NULL;          -- 4262811
223780 l_acc_rev_flag               := NULL;          -- 4262811
223781 l_accrual_line_num           := NULL;          -- 4262811
223782 l_tmp_amt                    := NULL;          -- 4262811
223783 --
223784  
223785 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
223786     l_balance_type_code <> 'B' THEN
223787 IF NVL(p_source_97,9E125) =  1
223788  THEN 
223789 
223790    --
223791    XLA_AE_LINES_PKG.SetNewLine;
223792 
223793    p_balance_type_code          := l_balance_type_code;
223794    -- set the flag so later we will know whether the gain loss line needs to be created
223795    
223796    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
223797      p_actual_flag :='A';
223798    END IF;
223799 
223800    --
223801    -- bulk performance
223802    --
223803    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
223804                                       p_header_num   => 0); -- 4262811
223805    --
223806    -- set accounting line options
223807    --
223808    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
223809            p_natural_side_code          => 'D'
223810          , p_gain_or_loss_flag          => 'N'
223811          , p_gl_transfer_mode_code      => 'S'
223812          , p_acct_entry_type_code       => 'A'
223813          , p_switch_side_flag           => 'Y'
223814          , p_merge_duplicate_code       => 'N'
223815          );
223816    --
223817    l_acc_rev_natural_side_code := 'C';  -- 4262811
223818    -- 
223819    --
223820    -- set accounting line type info
223821    --
223822    xla_ae_lines_pkg.SetAcctLineType
223823       (p_component_type             => l_component_type
223824       ,p_event_type_code            => l_event_type_code
223825       ,p_line_definition_owner_code => l_line_definition_owner_code
223826       ,p_line_definition_code       => l_line_definition_code
223827       ,p_accounting_line_code       => l_component_code
223828       ,p_accounting_line_type_code  => l_component_type_code
223829       ,p_accounting_line_appl_id    => l_component_appl_id
223830       ,p_amb_context_code           => l_amb_context_code
223831       ,p_entity_code                => l_entity_code
223832       ,p_event_class_code           => l_event_class_code);
223833    --
223834    -- set accounting class
223835    --
223836    xla_ae_lines_pkg.SetAcctClass(
223837            p_accounting_class_code  => 'EXPENSE'
223838          , p_ae_header_id           => l_ae_header_id
223839          );
223840 
223841    --
223842    -- set rounding class
223843    --
223844    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
223845                       'EXPENSE';
223846 
223847    --
223848    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
223849    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
223850    --
223851    -- bulk performance
223852    --
223853    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
223854 
223855    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
223856       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
223857 
223858    -- 4955764
223859    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
223860       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
223861 
223862    -- 4458381 Public Sector Enh
223863    
223864    --
223865    -- set accounting attributes for the line type
223866    --
223867    l_entered_amt_idx := 3;
223868    l_accted_amt_idx  := 8;
223869    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
223870    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
223871    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
223872    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
223873    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
223874    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
223875    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
223876    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
223877    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
223878    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
223879    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
223880    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
223881    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
223882    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
223883    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
223884    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
223885    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
223886 
223887    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
223888    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
223889 
223890    ---------------------------------------------------------------------------------------------------------------
223891    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
223892    ---------------------------------------------------------------------------------------------------------------
223893    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
223894 
223895    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
223896    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
223897 
223898    IF xla_accounting_cache_pkg.GetValueChar
223899          (p_source_code         => 'LEDGER_CATEGORY_CODE'
223900          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
223901    AND l_bflow_method_code = 'PRIOR_ENTRY'
223902 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
223903    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
223904          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
223905        )
223906    THEN
223907          xla_ae_lines_pkg.BflowUpgEntry
223908            (p_business_method_code    => l_bflow_method_code
223909            ,p_business_class_code     => l_bflow_class_code
223910            ,p_balance_type            => l_balance_type_code);
223911    ELSE
223912       NULL;
223913 -- No business flow processing for business flow method of NONE.
223914    END IF;
223915 
223916    --
223917    -- call analytical criteria
223918    --
223919    
223920    --
223921    -- call description
223922    --
223923    -- No description or it is inherited.
223924    --
223925    -- call ADRs
223926    -- Bug 4922099
223927    --
223928    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
223929         (NVL(l_actual_upg_option, 'N') = 'O') OR
223930         (NVL(l_enc_upg_option, 'N') = 'O')
223931       )
223932    THEN
223933    NULL;
223934    --
223935    --
223936    
223937   l_ccid := AcctDerRule_19(
223938            p_application_id           => p_application_id
223939          , p_ae_header_id             => l_ae_header_id 
223940 , p_source_34 => p_source_34
223941          , x_transaction_coa_id       => l_adr_transaction_coa_id
223942          , x_accounting_coa_id        => l_adr_accounting_coa_id
223943          , x_value_type_code          => l_adr_value_type_code
223944          , p_side                     => 'NA'
223945    );
223946 
223947    xla_ae_lines_pkg.set_ccid(
223948     p_code_combination_id          => l_ccid
223949   , p_value_type_code              => l_adr_value_type_code
223950   , p_transaction_coa_id           => l_adr_transaction_coa_id
223951   , p_accounting_coa_id            => l_adr_accounting_coa_id
223952   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
223953   , p_adr_type_code                => 'S'
223954   , p_component_type               => l_component_type
223955   , p_component_code               => l_component_code
223956   , p_component_type_code          => l_component_type_code
223957   , p_component_appl_id            => l_component_appl_id
223958   , p_amb_context_code             => l_amb_context_code
223959   , p_side                         => 'NA'
223960   );
223961 
223962 
223963    --
223964    --
223965    END IF;
223966    --
223967    -- Bug 4922099
223968    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
223969           (NVL(l_enc_upg_option, 'N') = 'O')
223970         ) AND
223971         (l_bflow_method_code = 'PRIOR_ENTRY')
223972       )
223973    THEN
223974       IF
223975       --
223976       1 = 2
223977       --
223978       THEN
223979       xla_accounting_err_pkg.build_message
223980                                     (p_appli_s_name            => 'XLA'
223981                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
223982                                     ,p_token_1                 => 'LINE_NUMBER'
223983                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
223984                                     ,p_token_2                 => 'LINE_TYPE_NAME'
223985                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
223986                                                                              l_component_type
223987                                                                             ,l_component_code
223988                                                                             ,l_component_type_code
223989                                                                             ,l_component_appl_id
223990                                                                             ,l_amb_context_code
223991                                                                             ,l_entity_code
223992                                                                             ,l_event_class_code
223993                                                                            )
223994                                     ,p_token_3                 => 'OWNER'
223995                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
223996                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
223997                                                                           ,p_lookup_code    => l_component_type_code
223998                                                                          )
223999                                     ,p_token_4                 => 'PRODUCT_NAME'
224000                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
224001                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
224002                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
224003                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
224004                                     ,p_ae_header_id            =>  NULL
224005                                        );
224006 
224007         IF (C_LEVEL_ERROR>= g_log_level) THEN
224008                  trace
224009                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
224010                       ,p_level    => C_LEVEL_ERROR
224011                       ,p_module   => l_log_module);
224012         END IF;
224013       END IF;
224014    END IF;
224015    --
224016    --
224017    ------------------------------------------------------------------------------------------------
224018    -- 4219869 Business Flow
224019    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
224020    -- Prior Entry.  Currently, the following code is always generated.
224021    ------------------------------------------------------------------------------------------------
224022    XLA_AE_LINES_PKG.ValidateCurrentLine;
224023 
224024    ------------------------------------------------------------------------------------
224025    -- 4219869 Business Flow
224026    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
224027    ------------------------------------------------------------------------------------
224028    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
224029 
224030    ----------------------------------------------------------------------------------
224031    -- 4219869 Business Flow
224032    -- Update journal entry status -- Need to generate this within IF <condition>
224033    ----------------------------------------------------------------------------------
224034    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
224035          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
224036          ,p_balance_type_code => l_balance_type_code
224037          );
224038 
224039    -------------------------------------------------------------------------------------------
224040    -- 4262811 - Generate the Accrual Reversal lines
224041    -------------------------------------------------------------------------------------------
224042    BEGIN
224043       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
224044                               (g_array_event(p_event_id).array_value_num('header_index'));
224045       IF l_acc_rev_flag IS NULL THEN
224046          l_acc_rev_flag := 'N';
224047       END IF;
224048    EXCEPTION
224049       WHEN OTHERS THEN
224050          l_acc_rev_flag := 'N';
224051    END;
224052    --
224053    IF (l_acc_rev_flag = 'Y') THEN
224054 
224055        -- 4645092  ------------------------------------------------------------------------------
224056        -- To allow MPA report to determine if it should generate report process
224057        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
224058        ------------------------------------------------------------------------------------------
224059 
224060        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
224061        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
224062    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
224063    -- call ADRs
224064    -- Bug 4922099
224065    --
224066    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
224067         (NVL(l_actual_upg_option, 'N') = 'O') OR
224068         (NVL(l_enc_upg_option, 'N') = 'O')
224069       )
224070    THEN
224071    NULL;
224072    --
224073    --
224074    
224075   l_ccid := AcctDerRule_19(
224076            p_application_id           => p_application_id
224077          , p_ae_header_id             => l_ae_header_id 
224078 , p_source_34 => p_source_34
224079          , x_transaction_coa_id       => l_adr_transaction_coa_id
224080          , x_accounting_coa_id        => l_adr_accounting_coa_id
224081          , x_value_type_code          => l_adr_value_type_code
224082          , p_side                     => 'NA'
224083    );
224084 
224085    xla_ae_lines_pkg.set_ccid(
224086     p_code_combination_id          => l_ccid
224087   , p_value_type_code              => l_adr_value_type_code
224088   , p_transaction_coa_id           => l_adr_transaction_coa_id
224089   , p_accounting_coa_id            => l_adr_accounting_coa_id
224090   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
224091   , p_adr_type_code                => 'S'
224092   , p_component_type               => l_component_type
224093   , p_component_code               => l_component_code
224094   , p_component_type_code          => l_component_type_code
224095   , p_component_appl_id            => l_component_appl_id
224096   , p_amb_context_code             => l_amb_context_code
224097   , p_side                         => 'NA'
224098   );
224099 
224100 
224101    --
224102    --
224103    END IF;
224104 
224105        --
224106        -- Update the line information that should be overwritten
224107        --
224108        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
224109                                          p_header_num   => 1);
224110        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
224111 
224112        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
224113 
224114        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
224115           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
224116        END IF;
224117 
224118       --
224119       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
224120       --
224121       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
224122           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
224123       ELSE
224124           ---------------------------------------------------------------------------------------------------
224125           -- 4262811a Switch Sign
224126           ---------------------------------------------------------------------------------------------------
224127           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
224128           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
224129                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
224130           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
224131                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
224132           -- 5132302
224133           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
224134                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
224135 
224136       END IF;
224137 
224138       -- 4955764
224139       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
224140       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
224141 
224142 
224143       XLA_AE_LINES_PKG.ValidateCurrentLine;
224144       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
224145 
224146       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
224147                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
224148                ,p_balance_type_code => l_balance_type_code);
224149 
224150    END IF;
224151 
224152    -----------------------------------------------------------------------------------------
224153    -- 4262811 Multiperiod Accounting
224154    -----------------------------------------------------------------------------------------
224155      -- No MPA option is assigned.
224156 
224157 
224158 END IF;
224159 END IF;
224160 --
224161 
224162 --
224163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
224164    trace
224165       (p_msg      => 'END of AcctLineType_406'
224166       ,p_level    => C_LEVEL_PROCEDURE
224167       ,p_module   => l_log_module);
224168 END IF;
224169 --
224170 EXCEPTION
224171   WHEN xla_exceptions_pkg.application_exception THEN
224172       RAISE;
224173   WHEN OTHERS THEN
224174        xla_exceptions_pkg.raise_message
224175            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_406');
224176 END AcctLineType_406;
224177 --
224178 
224179 ---------------------------------------
224180 --
224181 -- PRIVATE FUNCTION
224182 --         AcctLineType_407
224183 --
224184 ---------------------------------------
224185 PROCEDURE AcctLineType_407 (
224186   p_application_id        IN NUMBER
224187  ,p_event_id              IN NUMBER
224188  ,p_calculate_acctd_flag  IN VARCHAR2
224189  ,p_calculate_g_l_flag    IN VARCHAR2
224190  ,p_actual_flag           IN OUT VARCHAR2
224191  ,p_balance_type_code     OUT VARCHAR2
224192  ,p_gain_or_loss_ref      OUT VARCHAR2
224193  
224194 --TRANSACTION_ID
224195  , p_source_1            IN NUMBER
224196 --Item Concatenated Segments
224197  , p_source_2            IN VARCHAR2
224198 --Transaction Quantity
224199  , p_source_3            IN NUMBER
224200 --Transaction Unit of Measure Code
224201  , p_source_4            IN VARCHAR2
224202 --Inventory Transaction Type Description
224203  , p_source_5            IN VARCHAR2
224204 --Product Line Accounting Category Expense Account
224205  , p_source_24            IN NUMBER
224206 --Applied to Application ID
224207  , p_source_79            IN NUMBER
224208 --Applied to Distribution Link Type
224209  , p_source_80            IN VARCHAR2
224210 --Applied to Entity Code
224211  , p_source_81            IN VARCHAR2
224212 --Applied To Purchase Document Identifier
224213  , p_source_83            IN NUMBER
224214 --DISTRIBUTION_IDENTIFIER
224215  , p_source_84            IN NUMBER
224216 --Distribution Type
224217  , p_source_85            IN VARCHAR2
224218  , p_source_85_meaning    IN VARCHAR2
224219 --PO Budget Account
224220  , p_source_86            IN NUMBER
224221 --Encumbrance Reversal Amount Entered
224222  , p_source_87            IN NUMBER
224223 --Entered Currency Code
224224  , p_source_88            IN VARCHAR2
224225 --Transaction Encumbrance Reversal Amount
224226  , p_source_89            IN NUMBER
224227 --Entered Amount
224228  , p_source_91            IN NUMBER
224229 --Currency Conversion Date
224230  , p_source_92            IN DATE
224231 --Currency Conversion Rate
224232  , p_source_93            IN NUMBER
224233 --Currency Conversion Type
224234  , p_source_94            IN VARCHAR2
224235 --Accounted Amount
224236  , p_source_95            IN NUMBER
224237 --Purchasing Encumbrance Type Identifier
224238  , p_source_96            IN NUMBER
224239 --Accounting Line Type
224240  , p_source_97            IN NUMBER
224241 --Costing Encumbrance Upgrade Option
224242  , p_source_100            IN VARCHAR2
224243 --TXN_PO_DISTRIBUTION_ID
224244  , p_source_101            IN NUMBER
224245 --Subinventory Type Indicator
224246  , p_source_110            IN VARCHAR2
224247  , p_source_110_meaning    IN VARCHAR2
224248 )
224249 IS
224250 
224251 l_component_type              VARCHAR2(80);
224252 l_component_code              VARCHAR2(30);
224253 l_component_type_code         VARCHAR2(1);
224254 l_component_appl_id           INTEGER;
224255 l_amb_context_code            VARCHAR2(30);
224256 l_entity_code                 VARCHAR2(30);
224257 l_event_class_code            VARCHAR2(30);
224258 l_ae_header_id                NUMBER;
224259 l_event_type_code             VARCHAR2(30);
224260 l_line_definition_code        VARCHAR2(30);
224261 l_line_definition_owner_code  VARCHAR2(1);
224262 --
224263 -- adr variables
224264 l_segment                     VARCHAR2(30);
224265 l_ccid                        NUMBER;
224266 l_adr_transaction_coa_id      NUMBER;
224267 l_adr_accounting_coa_id       NUMBER;
224268 l_adr_flexfield_segment_code  VARCHAR2(30);
224269 l_adr_flex_value_set_id       NUMBER;
224270 l_adr_value_type_code         VARCHAR2(30);
224271 l_adr_value_combination_id    NUMBER;
224272 l_adr_value_segment_code      VARCHAR2(30);
224273 
224274 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
224275 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
224276 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
224277 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
224278 
224279 -- 4262811 Variables ------------------------------------------------------------------------------------------
224280 l_entered_amt_idx             NUMBER;
224281 l_accted_amt_idx              NUMBER;
224282 l_acc_rev_flag                VARCHAR2(1);
224283 l_accrual_line_num            NUMBER;
224284 l_tmp_amt                     NUMBER;
224285 l_acc_rev_natural_side_code   VARCHAR2(1);
224286 
224287 l_num_entries                 NUMBER;
224288 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
224289 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
224290 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
224291 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
224292 l_recog_line_1                NUMBER;
224293 l_recog_line_2                NUMBER;
224294 
224295 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
224296 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
224297 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
224298 
224299 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
224300 
224301 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
224302 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
224303 
224304 ---------------------------------------------------------------------------------------------------------------
224305 
224306 
224307 --
224308 -- bulk performance
224309 --
224310 l_balance_type_code           VARCHAR2(1);
224311 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
224312 l_log_module                  VARCHAR2(240);
224313 
224314 --
224315 -- Upgrade strategy
224316 --
224317 l_actual_upg_option           VARCHAR2(1);
224318 l_enc_upg_option           VARCHAR2(1);
224319 
224320 --
224321 BEGIN
224322 --
224323 IF g_log_enabled THEN
224324       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_407';
224325 END IF;
224326 --
224327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
224328 
224329       trace
224330          (p_msg      => 'BEGIN of AcctLineType_407'
224331          ,p_level    => C_LEVEL_PROCEDURE
224332          ,p_module   => l_log_module);
224333 
224334 END IF;
224335 --
224336 l_component_type             := 'AMB_JLT';
224337 l_component_code             := 'PI_EXPENSE';
224338 l_component_type_code        := 'S';
224339 l_component_appl_id          :=  707;
224340 l_amb_context_code           := 'DEFAULT';
224341 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
224342 l_event_class_code           := 'PURCHASE_ORDER';
224343 l_event_type_code            := 'PO_DEL_INV';
224344 l_line_definition_owner_code := 'S';
224345 l_line_definition_code       := 'PI_PO_DEL_INV';
224346 --
224347 l_balance_type_code          := 'A';
224348 l_segment                     := NULL;
224349 l_ccid                        := NULL;
224350 l_adr_transaction_coa_id      := NULL;
224351 l_adr_accounting_coa_id       := NULL;
224352 l_adr_flexfield_segment_code  := NULL;
224353 l_adr_flex_value_set_id       := NULL;
224354 l_adr_value_type_code         := NULL;
224355 l_adr_value_combination_id    := NULL;
224356 l_adr_value_segment_code      := NULL;
224357 
224358 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
224359 l_bflow_class_code           := '';    -- 4219869 Business Flow
224360 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
224361 l_budgetary_control_flag     := 'N';
224362 
224363 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
224364 l_bflow_applied_to_amt       := NULL; -- 5132302
224365 l_entered_amt_idx            := NULL;          -- 4262811
224366 l_accted_amt_idx             := NULL;          -- 4262811
224367 l_acc_rev_flag               := NULL;          -- 4262811
224368 l_accrual_line_num           := NULL;          -- 4262811
224369 l_tmp_amt                    := NULL;          -- 4262811
224370 --
224371  
224372 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
224373     l_balance_type_code <> 'B' THEN
224374 IF (NVL(p_source_97,9E125) =  5 AND 
224375 p_source_110 IS NOT NULL AND 
224376 NVL(p_source_110,'
224377 ') =  'Y')
224378  THEN 
224379 
224380    --
224381    XLA_AE_LINES_PKG.SetNewLine;
224382 
224383    p_balance_type_code          := l_balance_type_code;
224384    -- set the flag so later we will know whether the gain loss line needs to be created
224385    
224386    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
224387      p_actual_flag :='A';
224388    END IF;
224389 
224390    --
224391    -- bulk performance
224392    --
224393    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
224394                                       p_header_num   => 0); -- 4262811
224395    --
224396    -- set accounting line options
224397    --
224398    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
224399            p_natural_side_code          => 'C'
224400          , p_gain_or_loss_flag          => 'N'
224401          , p_gl_transfer_mode_code      => 'S'
224402          , p_acct_entry_type_code       => 'A'
224403          , p_switch_side_flag           => 'Y'
224404          , p_merge_duplicate_code       => 'N'
224405          );
224406    --
224407    l_acc_rev_natural_side_code := 'D';  -- 4262811
224408    -- 
224409    --
224410    -- set accounting line type info
224411    --
224412    xla_ae_lines_pkg.SetAcctLineType
224413       (p_component_type             => l_component_type
224414       ,p_event_type_code            => l_event_type_code
224415       ,p_line_definition_owner_code => l_line_definition_owner_code
224416       ,p_line_definition_code       => l_line_definition_code
224417       ,p_accounting_line_code       => l_component_code
224418       ,p_accounting_line_type_code  => l_component_type_code
224419       ,p_accounting_line_appl_id    => l_component_appl_id
224420       ,p_amb_context_code           => l_amb_context_code
224421       ,p_entity_code                => l_entity_code
224422       ,p_event_class_code           => l_event_class_code);
224423    --
224424    -- set accounting class
224425    --
224426    xla_ae_lines_pkg.SetAcctClass(
224427            p_accounting_class_code  => 'EXPENSE'
224428          , p_ae_header_id           => l_ae_header_id
224429          );
224430 
224431    --
224432    -- set rounding class
224433    --
224434    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
224435                       'EXPENSE';
224436 
224437    --
224438    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
224439    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
224440    --
224441    -- bulk performance
224442    --
224443    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
224444 
224445    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
224446       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
224447 
224448    -- 4955764
224449    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
224450       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
224451 
224452    -- 4458381 Public Sector Enh
224453    
224454    --
224455    -- set accounting attributes for the line type
224456    --
224457    l_entered_amt_idx := 17;
224458    l_accted_amt_idx  := 22;
224459    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
224460    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
224461    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
224462    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
224463    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
224464    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
224465    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
224466    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
224467    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
224468    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
224469    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
224470    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
224471    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
224472    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
224473    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
224474    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
224475    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
224476    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
224477    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
224478    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
224479    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
224480    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
224481    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
224482    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
224483    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
224484    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
224485    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
224486    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
224487    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
224488    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
224489    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
224490    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
224491    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
224492    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
224493    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
224494    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
224495    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
224496    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
224497    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
224498    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
224499    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
224500    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
224501    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
224502    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
224503    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
224504    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
224505    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
224506    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
224507    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
224508 
224509    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
224510    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
224511 
224512    ---------------------------------------------------------------------------------------------------------------
224513    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
224514    ---------------------------------------------------------------------------------------------------------------
224515    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
224516 
224517    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
224518    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
224519 
224520    IF xla_accounting_cache_pkg.GetValueChar
224521          (p_source_code         => 'LEDGER_CATEGORY_CODE'
224522          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
224523    AND l_bflow_method_code = 'PRIOR_ENTRY'
224524 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
224525    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
224526          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
224527        )
224528    THEN
224529          xla_ae_lines_pkg.BflowUpgEntry
224530            (p_business_method_code    => l_bflow_method_code
224531            ,p_business_class_code     => l_bflow_class_code
224532            ,p_balance_type            => l_balance_type_code);
224533    ELSE
224534       NULL;
224535 -- No business flow processing for business flow method of NONE.
224536    END IF;
224537 
224538    --
224539    -- call analytical criteria
224540    --
224541    
224542    --
224543    -- call description
224544    --
224545    
224546 xla_ae_lines_pkg.SetLineDescription(
224547    p_ae_header_id => l_ae_header_id
224548   ,p_description  => Description_1 (
224549      p_application_id         => p_application_id
224550    , p_ae_header_id           => l_ae_header_id 
224551 , p_source_1 => p_source_1
224552 , p_source_2 => p_source_2
224553 , p_source_3 => p_source_3
224554 , p_source_4 => p_source_4
224555 , p_source_5 => p_source_5
224556    )
224557 );
224558 
224559 
224560    --
224561    -- call ADRs
224562    -- Bug 4922099
224563    --
224564    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
224565         (NVL(l_actual_upg_option, 'N') = 'O') OR
224566         (NVL(l_enc_upg_option, 'N') = 'O')
224567       )
224568    THEN
224569    NULL;
224570    --
224571    --
224572    
224573   l_ccid := AcctDerRule_13(
224574            p_application_id           => p_application_id
224575          , p_ae_header_id             => l_ae_header_id 
224576 , p_source_24 => p_source_24
224577          , x_transaction_coa_id       => l_adr_transaction_coa_id
224578          , x_accounting_coa_id        => l_adr_accounting_coa_id
224579          , x_value_type_code          => l_adr_value_type_code
224580          , p_side                     => 'NA'
224581    );
224582 
224583    xla_ae_lines_pkg.set_ccid(
224584     p_code_combination_id          => l_ccid
224585   , p_value_type_code              => l_adr_value_type_code
224586   , p_transaction_coa_id           => l_adr_transaction_coa_id
224587   , p_accounting_coa_id            => l_adr_accounting_coa_id
224588   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
224589   , p_adr_type_code                => 'S'
224590   , p_component_type               => l_component_type
224591   , p_component_code               => l_component_code
224592   , p_component_type_code          => l_component_type_code
224593   , p_component_appl_id            => l_component_appl_id
224594   , p_amb_context_code             => l_amb_context_code
224595   , p_side                         => 'NA'
224596   );
224597 
224598 
224599    --
224600    --
224601    END IF;
224602    --
224603    -- Bug 4922099
224604    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
224605           (NVL(l_enc_upg_option, 'N') = 'O')
224606         ) AND
224607         (l_bflow_method_code = 'PRIOR_ENTRY')
224608       )
224609    THEN
224610       IF
224611       --
224612       1 = 2
224613       --
224614       THEN
224615       xla_accounting_err_pkg.build_message
224616                                     (p_appli_s_name            => 'XLA'
224617                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
224618                                     ,p_token_1                 => 'LINE_NUMBER'
224619                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
224620                                     ,p_token_2                 => 'LINE_TYPE_NAME'
224621                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
224622                                                                              l_component_type
224623                                                                             ,l_component_code
224624                                                                             ,l_component_type_code
224625                                                                             ,l_component_appl_id
224626                                                                             ,l_amb_context_code
224627                                                                             ,l_entity_code
224628                                                                             ,l_event_class_code
224629                                                                            )
224630                                     ,p_token_3                 => 'OWNER'
224631                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
224632                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
224633                                                                           ,p_lookup_code    => l_component_type_code
224634                                                                          )
224635                                     ,p_token_4                 => 'PRODUCT_NAME'
224636                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
224637                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
224638                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
224639                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
224640                                     ,p_ae_header_id            =>  NULL
224641                                        );
224642 
224643         IF (C_LEVEL_ERROR>= g_log_level) THEN
224644                  trace
224645                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
224646                       ,p_level    => C_LEVEL_ERROR
224647                       ,p_module   => l_log_module);
224648         END IF;
224649       END IF;
224650    END IF;
224651    --
224652    --
224653    ------------------------------------------------------------------------------------------------
224654    -- 4219869 Business Flow
224655    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
224656    -- Prior Entry.  Currently, the following code is always generated.
224657    ------------------------------------------------------------------------------------------------
224658    XLA_AE_LINES_PKG.ValidateCurrentLine;
224659 
224660    ------------------------------------------------------------------------------------
224661    -- 4219869 Business Flow
224662    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
224663    ------------------------------------------------------------------------------------
224664    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
224665 
224666    ----------------------------------------------------------------------------------
224667    -- 4219869 Business Flow
224668    -- Update journal entry status -- Need to generate this within IF <condition>
224669    ----------------------------------------------------------------------------------
224670    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
224671          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
224672          ,p_balance_type_code => l_balance_type_code
224673          );
224674 
224675    -------------------------------------------------------------------------------------------
224676    -- 4262811 - Generate the Accrual Reversal lines
224677    -------------------------------------------------------------------------------------------
224678    BEGIN
224679       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
224680                               (g_array_event(p_event_id).array_value_num('header_index'));
224681       IF l_acc_rev_flag IS NULL THEN
224682          l_acc_rev_flag := 'N';
224683       END IF;
224684    EXCEPTION
224685       WHEN OTHERS THEN
224686          l_acc_rev_flag := 'N';
224687    END;
224688    --
224689    IF (l_acc_rev_flag = 'Y') THEN
224690 
224691        -- 4645092  ------------------------------------------------------------------------------
224692        -- To allow MPA report to determine if it should generate report process
224693        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
224694        ------------------------------------------------------------------------------------------
224695 
224696        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
224697        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
224698    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
224699    -- call ADRs
224700    -- Bug 4922099
224701    --
224702    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
224703         (NVL(l_actual_upg_option, 'N') = 'O') OR
224704         (NVL(l_enc_upg_option, 'N') = 'O')
224705       )
224706    THEN
224707    NULL;
224708    --
224709    --
224710    
224711   l_ccid := AcctDerRule_13(
224712            p_application_id           => p_application_id
224713          , p_ae_header_id             => l_ae_header_id 
224714 , p_source_24 => p_source_24
224715          , x_transaction_coa_id       => l_adr_transaction_coa_id
224716          , x_accounting_coa_id        => l_adr_accounting_coa_id
224717          , x_value_type_code          => l_adr_value_type_code
224718          , p_side                     => 'NA'
224719    );
224720 
224721    xla_ae_lines_pkg.set_ccid(
224722     p_code_combination_id          => l_ccid
224723   , p_value_type_code              => l_adr_value_type_code
224724   , p_transaction_coa_id           => l_adr_transaction_coa_id
224725   , p_accounting_coa_id            => l_adr_accounting_coa_id
224726   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
224727   , p_adr_type_code                => 'S'
224728   , p_component_type               => l_component_type
224729   , p_component_code               => l_component_code
224730   , p_component_type_code          => l_component_type_code
224731   , p_component_appl_id            => l_component_appl_id
224732   , p_amb_context_code             => l_amb_context_code
224733   , p_side                         => 'NA'
224734   );
224735 
224736 
224737    --
224738    --
224739    END IF;
224740 
224741        --
224742        -- Update the line information that should be overwritten
224743        --
224744        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
224745                                          p_header_num   => 1);
224746        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
224747 
224748        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
224749 
224750        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
224751           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
224752        END IF;
224753 
224754       --
224755       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
224756       --
224757       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
224758           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
224759       ELSE
224760           ---------------------------------------------------------------------------------------------------
224761           -- 4262811a Switch Sign
224762           ---------------------------------------------------------------------------------------------------
224763           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
224764           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
224765                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
224766           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
224767                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
224768           -- 5132302
224769           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
224770                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
224771 
224772       END IF;
224773 
224774       -- 4955764
224775       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
224776       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
224777 
224778 
224779       XLA_AE_LINES_PKG.ValidateCurrentLine;
224780       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
224781 
224782       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
224783                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
224784                ,p_balance_type_code => l_balance_type_code);
224785 
224786    END IF;
224787 
224788    -----------------------------------------------------------------------------------------
224789    -- 4262811 Multiperiod Accounting
224790    -----------------------------------------------------------------------------------------
224791      -- No MPA option is assigned.
224792 
224793 
224794 END IF;
224795 END IF;
224796 --
224797 
224798 --
224799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
224800    trace
224801       (p_msg      => 'END of AcctLineType_407'
224802       ,p_level    => C_LEVEL_PROCEDURE
224803       ,p_module   => l_log_module);
224804 END IF;
224805 --
224806 EXCEPTION
224807   WHEN xla_exceptions_pkg.application_exception THEN
224808       RAISE;
224809   WHEN OTHERS THEN
224810        xla_exceptions_pkg.raise_message
224811            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_407');
224812 END AcctLineType_407;
224813 --
224814 
224815 ---------------------------------------
224816 --
224817 -- PRIVATE FUNCTION
224818 --         AcctLineType_408
224819 --
224820 ---------------------------------------
224821 PROCEDURE AcctLineType_408 (
224822   p_application_id        IN NUMBER
224823  ,p_event_id              IN NUMBER
224824  ,p_calculate_acctd_flag  IN VARCHAR2
224825  ,p_calculate_g_l_flag    IN VARCHAR2
224826  ,p_actual_flag           IN OUT VARCHAR2
224827  ,p_balance_type_code     OUT VARCHAR2
224828  ,p_gain_or_loss_ref      OUT VARCHAR2
224829  
224830 --TRANSACTION_ID
224831  , p_source_1            IN NUMBER
224832 --Item Concatenated Segments
224833  , p_source_2            IN VARCHAR2
224834 --Transaction Quantity
224835  , p_source_3            IN NUMBER
224836 --Transaction Unit of Measure Code
224837  , p_source_4            IN VARCHAR2
224838 --Inventory Transaction Type Description
224839  , p_source_5            IN VARCHAR2
224840 --Product Line Accounting Category Expense Account
224841  , p_source_24            IN NUMBER
224842 --Applied to Application ID
224843  , p_source_79            IN NUMBER
224844 --Applied to Distribution Link Type
224845  , p_source_80            IN VARCHAR2
224846 --Applied to Entity Code
224847  , p_source_81            IN VARCHAR2
224848 --Applied To Purchase Document Identifier
224849  , p_source_83            IN NUMBER
224850 --DISTRIBUTION_IDENTIFIER
224851  , p_source_84            IN NUMBER
224852 --Distribution Type
224853  , p_source_85            IN VARCHAR2
224854  , p_source_85_meaning    IN VARCHAR2
224855 --PO Budget Account
224856  , p_source_86            IN NUMBER
224857 --Encumbrance Reversal Amount Entered
224858  , p_source_87            IN NUMBER
224859 --Entered Currency Code
224860  , p_source_88            IN VARCHAR2
224861 --Transaction Encumbrance Reversal Amount
224862  , p_source_89            IN NUMBER
224863 --Entered Amount
224864  , p_source_91            IN NUMBER
224865 --Currency Conversion Date
224866  , p_source_92            IN DATE
224867 --Currency Conversion Rate
224868  , p_source_93            IN NUMBER
224869 --Currency Conversion Type
224870  , p_source_94            IN VARCHAR2
224871 --Accounted Amount
224872  , p_source_95            IN NUMBER
224873 --Purchasing Encumbrance Type Identifier
224874  , p_source_96            IN NUMBER
224875 --Accounting Line Type
224876  , p_source_97            IN NUMBER
224877 --Costing Encumbrance Upgrade Option
224878  , p_source_100            IN VARCHAR2
224879 --TXN_PO_DISTRIBUTION_ID
224880  , p_source_101            IN NUMBER
224881 --Subinventory Type Indicator
224882  , p_source_110            IN VARCHAR2
224883  , p_source_110_meaning    IN VARCHAR2
224884 )
224885 IS
224886 
224887 l_component_type              VARCHAR2(80);
224888 l_component_code              VARCHAR2(30);
224889 l_component_type_code         VARCHAR2(1);
224890 l_component_appl_id           INTEGER;
224891 l_amb_context_code            VARCHAR2(30);
224892 l_entity_code                 VARCHAR2(30);
224893 l_event_class_code            VARCHAR2(30);
224894 l_ae_header_id                NUMBER;
224895 l_event_type_code             VARCHAR2(30);
224896 l_line_definition_code        VARCHAR2(30);
224897 l_line_definition_owner_code  VARCHAR2(1);
224898 --
224899 -- adr variables
224900 l_segment                     VARCHAR2(30);
224901 l_ccid                        NUMBER;
224902 l_adr_transaction_coa_id      NUMBER;
224903 l_adr_accounting_coa_id       NUMBER;
224904 l_adr_flexfield_segment_code  VARCHAR2(30);
224905 l_adr_flex_value_set_id       NUMBER;
224906 l_adr_value_type_code         VARCHAR2(30);
224907 l_adr_value_combination_id    NUMBER;
224908 l_adr_value_segment_code      VARCHAR2(30);
224909 
224910 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
224911 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
224912 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
224913 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
224914 
224915 -- 4262811 Variables ------------------------------------------------------------------------------------------
224916 l_entered_amt_idx             NUMBER;
224917 l_accted_amt_idx              NUMBER;
224918 l_acc_rev_flag                VARCHAR2(1);
224919 l_accrual_line_num            NUMBER;
224920 l_tmp_amt                     NUMBER;
224921 l_acc_rev_natural_side_code   VARCHAR2(1);
224922 
224923 l_num_entries                 NUMBER;
224924 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
224925 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
224926 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
224927 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
224928 l_recog_line_1                NUMBER;
224929 l_recog_line_2                NUMBER;
224930 
224931 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
224932 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
224933 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
224934 
224935 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
224936 
224937 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
224938 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
224939 
224940 ---------------------------------------------------------------------------------------------------------------
224941 
224942 
224943 --
224944 -- bulk performance
224945 --
224946 l_balance_type_code           VARCHAR2(1);
224947 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
224948 l_log_module                  VARCHAR2(240);
224949 
224950 --
224951 -- Upgrade strategy
224952 --
224953 l_actual_upg_option           VARCHAR2(1);
224954 l_enc_upg_option           VARCHAR2(1);
224955 
224956 --
224957 BEGIN
224958 --
224959 IF g_log_enabled THEN
224960       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_408';
224961 END IF;
224962 --
224963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
224964 
224965       trace
224966          (p_msg      => 'BEGIN of AcctLineType_408'
224967          ,p_level    => C_LEVEL_PROCEDURE
224968          ,p_module   => l_log_module);
224969 
224970 END IF;
224971 --
224972 l_component_type             := 'AMB_JLT';
224973 l_component_code             := 'PI_EXPENSE';
224974 l_component_type_code        := 'S';
224975 l_component_appl_id          :=  707;
224976 l_amb_context_code           := 'DEFAULT';
224977 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
224978 l_event_class_code           := 'PURCHASE_ORDER';
224979 l_event_type_code            := 'RET_RI_INV';
224980 l_line_definition_owner_code := 'S';
224981 l_line_definition_code       := 'PI_RET_RI_INV';
224982 --
224983 l_balance_type_code          := 'A';
224984 l_segment                     := NULL;
224985 l_ccid                        := NULL;
224986 l_adr_transaction_coa_id      := NULL;
224987 l_adr_accounting_coa_id       := NULL;
224988 l_adr_flexfield_segment_code  := NULL;
224989 l_adr_flex_value_set_id       := NULL;
224990 l_adr_value_type_code         := NULL;
224991 l_adr_value_combination_id    := NULL;
224992 l_adr_value_segment_code      := NULL;
224993 
224994 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
224995 l_bflow_class_code           := '';    -- 4219869 Business Flow
224996 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
224997 l_budgetary_control_flag     := 'N';
224998 
224999 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
225000 l_bflow_applied_to_amt       := NULL; -- 5132302
225001 l_entered_amt_idx            := NULL;          -- 4262811
225002 l_accted_amt_idx             := NULL;          -- 4262811
225003 l_acc_rev_flag               := NULL;          -- 4262811
225004 l_accrual_line_num           := NULL;          -- 4262811
225005 l_tmp_amt                    := NULL;          -- 4262811
225006 --
225007  
225008 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
225009     l_balance_type_code <> 'B' THEN
225010 IF (NVL(p_source_97,9E125) =  5 AND 
225011 p_source_110 IS NOT NULL AND 
225012 NVL(p_source_110,'
225013 ') =  'Y')
225014  THEN 
225015 
225016    --
225017    XLA_AE_LINES_PKG.SetNewLine;
225018 
225019    p_balance_type_code          := l_balance_type_code;
225020    -- set the flag so later we will know whether the gain loss line needs to be created
225021    
225022    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
225023      p_actual_flag :='A';
225024    END IF;
225025 
225026    --
225027    -- bulk performance
225028    --
225029    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
225030                                       p_header_num   => 0); -- 4262811
225031    --
225032    -- set accounting line options
225033    --
225034    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
225035            p_natural_side_code          => 'C'
225036          , p_gain_or_loss_flag          => 'N'
225037          , p_gl_transfer_mode_code      => 'S'
225038          , p_acct_entry_type_code       => 'A'
225039          , p_switch_side_flag           => 'Y'
225040          , p_merge_duplicate_code       => 'N'
225041          );
225042    --
225043    l_acc_rev_natural_side_code := 'D';  -- 4262811
225044    -- 
225045    --
225046    -- set accounting line type info
225047    --
225048    xla_ae_lines_pkg.SetAcctLineType
225049       (p_component_type             => l_component_type
225050       ,p_event_type_code            => l_event_type_code
225051       ,p_line_definition_owner_code => l_line_definition_owner_code
225052       ,p_line_definition_code       => l_line_definition_code
225053       ,p_accounting_line_code       => l_component_code
225054       ,p_accounting_line_type_code  => l_component_type_code
225055       ,p_accounting_line_appl_id    => l_component_appl_id
225056       ,p_amb_context_code           => l_amb_context_code
225057       ,p_entity_code                => l_entity_code
225058       ,p_event_class_code           => l_event_class_code);
225059    --
225060    -- set accounting class
225061    --
225062    xla_ae_lines_pkg.SetAcctClass(
225063            p_accounting_class_code  => 'EXPENSE'
225064          , p_ae_header_id           => l_ae_header_id
225065          );
225066 
225067    --
225068    -- set rounding class
225069    --
225070    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
225071                       'EXPENSE';
225072 
225073    --
225074    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
225075    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
225076    --
225077    -- bulk performance
225078    --
225079    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
225080 
225081    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
225082       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
225083 
225084    -- 4955764
225085    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
225086       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
225087 
225088    -- 4458381 Public Sector Enh
225089    
225090    --
225091    -- set accounting attributes for the line type
225092    --
225093    l_entered_amt_idx := 17;
225094    l_accted_amt_idx  := 22;
225095    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
225096    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
225097    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
225098    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
225099    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
225100    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
225101    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
225102    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
225103    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
225104    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
225105    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
225106    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
225107    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
225108    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
225109    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
225110    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
225111    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
225112    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
225113    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
225114    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
225115    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
225116    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
225117    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
225118    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
225119    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
225120    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
225121    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
225122    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
225123    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
225124    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
225125    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
225126    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
225127    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
225128    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
225129    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
225130    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
225131    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
225132    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
225133    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
225134    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
225135    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
225136    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
225137    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
225138    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
225139    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
225140    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
225141    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
225142    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
225143    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
225144 
225145    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
225146    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
225147 
225148    ---------------------------------------------------------------------------------------------------------------
225149    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
225150    ---------------------------------------------------------------------------------------------------------------
225151    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
225152 
225153    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
225154    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
225155 
225156    IF xla_accounting_cache_pkg.GetValueChar
225157          (p_source_code         => 'LEDGER_CATEGORY_CODE'
225158          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
225159    AND l_bflow_method_code = 'PRIOR_ENTRY'
225160 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
225161    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
225162          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
225163        )
225164    THEN
225165          xla_ae_lines_pkg.BflowUpgEntry
225166            (p_business_method_code    => l_bflow_method_code
225167            ,p_business_class_code     => l_bflow_class_code
225168            ,p_balance_type            => l_balance_type_code);
225169    ELSE
225170       NULL;
225171 -- No business flow processing for business flow method of NONE.
225172    END IF;
225173 
225174    --
225175    -- call analytical criteria
225176    --
225177    
225178    --
225179    -- call description
225180    --
225181    
225182 xla_ae_lines_pkg.SetLineDescription(
225183    p_ae_header_id => l_ae_header_id
225184   ,p_description  => Description_1 (
225185      p_application_id         => p_application_id
225186    , p_ae_header_id           => l_ae_header_id 
225187 , p_source_1 => p_source_1
225188 , p_source_2 => p_source_2
225189 , p_source_3 => p_source_3
225190 , p_source_4 => p_source_4
225191 , p_source_5 => p_source_5
225192    )
225193 );
225194 
225195 
225196    --
225197    -- call ADRs
225198    -- Bug 4922099
225199    --
225200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
225201         (NVL(l_actual_upg_option, 'N') = 'O') OR
225202         (NVL(l_enc_upg_option, 'N') = 'O')
225203       )
225204    THEN
225205    NULL;
225206    --
225207    --
225208    
225209   l_ccid := AcctDerRule_13(
225210            p_application_id           => p_application_id
225211          , p_ae_header_id             => l_ae_header_id 
225212 , p_source_24 => p_source_24
225213          , x_transaction_coa_id       => l_adr_transaction_coa_id
225214          , x_accounting_coa_id        => l_adr_accounting_coa_id
225215          , x_value_type_code          => l_adr_value_type_code
225216          , p_side                     => 'NA'
225217    );
225218 
225219    xla_ae_lines_pkg.set_ccid(
225220     p_code_combination_id          => l_ccid
225221   , p_value_type_code              => l_adr_value_type_code
225222   , p_transaction_coa_id           => l_adr_transaction_coa_id
225223   , p_accounting_coa_id            => l_adr_accounting_coa_id
225224   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
225225   , p_adr_type_code                => 'S'
225226   , p_component_type               => l_component_type
225227   , p_component_code               => l_component_code
225228   , p_component_type_code          => l_component_type_code
225229   , p_component_appl_id            => l_component_appl_id
225230   , p_amb_context_code             => l_amb_context_code
225231   , p_side                         => 'NA'
225232   );
225233 
225234 
225235    --
225236    --
225237    END IF;
225238    --
225239    -- Bug 4922099
225240    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
225241           (NVL(l_enc_upg_option, 'N') = 'O')
225242         ) AND
225243         (l_bflow_method_code = 'PRIOR_ENTRY')
225244       )
225245    THEN
225246       IF
225247       --
225248       1 = 2
225249       --
225250       THEN
225251       xla_accounting_err_pkg.build_message
225252                                     (p_appli_s_name            => 'XLA'
225253                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
225254                                     ,p_token_1                 => 'LINE_NUMBER'
225255                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
225256                                     ,p_token_2                 => 'LINE_TYPE_NAME'
225257                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
225258                                                                              l_component_type
225259                                                                             ,l_component_code
225260                                                                             ,l_component_type_code
225261                                                                             ,l_component_appl_id
225262                                                                             ,l_amb_context_code
225263                                                                             ,l_entity_code
225264                                                                             ,l_event_class_code
225265                                                                            )
225266                                     ,p_token_3                 => 'OWNER'
225267                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
225268                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
225269                                                                           ,p_lookup_code    => l_component_type_code
225270                                                                          )
225271                                     ,p_token_4                 => 'PRODUCT_NAME'
225272                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
225273                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
225274                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
225275                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
225276                                     ,p_ae_header_id            =>  NULL
225277                                        );
225278 
225279         IF (C_LEVEL_ERROR>= g_log_level) THEN
225280                  trace
225281                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
225282                       ,p_level    => C_LEVEL_ERROR
225283                       ,p_module   => l_log_module);
225284         END IF;
225285       END IF;
225286    END IF;
225287    --
225288    --
225289    ------------------------------------------------------------------------------------------------
225290    -- 4219869 Business Flow
225291    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
225292    -- Prior Entry.  Currently, the following code is always generated.
225293    ------------------------------------------------------------------------------------------------
225294    XLA_AE_LINES_PKG.ValidateCurrentLine;
225295 
225296    ------------------------------------------------------------------------------------
225297    -- 4219869 Business Flow
225298    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
225299    ------------------------------------------------------------------------------------
225300    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
225301 
225302    ----------------------------------------------------------------------------------
225303    -- 4219869 Business Flow
225304    -- Update journal entry status -- Need to generate this within IF <condition>
225305    ----------------------------------------------------------------------------------
225306    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
225307          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
225308          ,p_balance_type_code => l_balance_type_code
225309          );
225310 
225311    -------------------------------------------------------------------------------------------
225312    -- 4262811 - Generate the Accrual Reversal lines
225313    -------------------------------------------------------------------------------------------
225314    BEGIN
225315       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
225316                               (g_array_event(p_event_id).array_value_num('header_index'));
225317       IF l_acc_rev_flag IS NULL THEN
225318          l_acc_rev_flag := 'N';
225319       END IF;
225320    EXCEPTION
225321       WHEN OTHERS THEN
225322          l_acc_rev_flag := 'N';
225323    END;
225324    --
225325    IF (l_acc_rev_flag = 'Y') THEN
225326 
225327        -- 4645092  ------------------------------------------------------------------------------
225328        -- To allow MPA report to determine if it should generate report process
225329        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
225330        ------------------------------------------------------------------------------------------
225331 
225332        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
225333        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
225334    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
225335    -- call ADRs
225336    -- Bug 4922099
225337    --
225338    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
225339         (NVL(l_actual_upg_option, 'N') = 'O') OR
225340         (NVL(l_enc_upg_option, 'N') = 'O')
225341       )
225342    THEN
225343    NULL;
225344    --
225345    --
225346    
225347   l_ccid := AcctDerRule_13(
225348            p_application_id           => p_application_id
225349          , p_ae_header_id             => l_ae_header_id 
225350 , p_source_24 => p_source_24
225351          , x_transaction_coa_id       => l_adr_transaction_coa_id
225352          , x_accounting_coa_id        => l_adr_accounting_coa_id
225353          , x_value_type_code          => l_adr_value_type_code
225354          , p_side                     => 'NA'
225355    );
225356 
225357    xla_ae_lines_pkg.set_ccid(
225358     p_code_combination_id          => l_ccid
225359   , p_value_type_code              => l_adr_value_type_code
225360   , p_transaction_coa_id           => l_adr_transaction_coa_id
225361   , p_accounting_coa_id            => l_adr_accounting_coa_id
225362   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
225363   , p_adr_type_code                => 'S'
225364   , p_component_type               => l_component_type
225365   , p_component_code               => l_component_code
225366   , p_component_type_code          => l_component_type_code
225367   , p_component_appl_id            => l_component_appl_id
225368   , p_amb_context_code             => l_amb_context_code
225369   , p_side                         => 'NA'
225370   );
225371 
225372 
225373    --
225374    --
225375    END IF;
225376 
225377        --
225378        -- Update the line information that should be overwritten
225379        --
225380        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
225381                                          p_header_num   => 1);
225382        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
225383 
225384        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
225385 
225386        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
225387           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
225388        END IF;
225389 
225390       --
225391       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
225392       --
225393       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
225394           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
225395       ELSE
225396           ---------------------------------------------------------------------------------------------------
225397           -- 4262811a Switch Sign
225398           ---------------------------------------------------------------------------------------------------
225399           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
225400           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
225401                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
225402           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
225403                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
225404           -- 5132302
225405           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
225406                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
225407 
225408       END IF;
225409 
225410       -- 4955764
225411       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
225412       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
225413 
225414 
225415       XLA_AE_LINES_PKG.ValidateCurrentLine;
225416       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
225417 
225418       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
225419                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
225420                ,p_balance_type_code => l_balance_type_code);
225421 
225422    END IF;
225423 
225424    -----------------------------------------------------------------------------------------
225425    -- 4262811 Multiperiod Accounting
225426    -----------------------------------------------------------------------------------------
225427      -- No MPA option is assigned.
225428 
225429 
225430 END IF;
225431 END IF;
225432 --
225433 
225434 --
225435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
225436    trace
225437       (p_msg      => 'END of AcctLineType_408'
225438       ,p_level    => C_LEVEL_PROCEDURE
225439       ,p_module   => l_log_module);
225440 END IF;
225441 --
225442 EXCEPTION
225443   WHEN xla_exceptions_pkg.application_exception THEN
225444       RAISE;
225445   WHEN OTHERS THEN
225446        xla_exceptions_pkg.raise_message
225447            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_408');
225448 END AcctLineType_408;
225449 --
225450 
225451 ---------------------------------------
225452 --
225453 -- PRIVATE FUNCTION
225454 --         AcctLineType_409
225455 --
225456 ---------------------------------------
225457 PROCEDURE AcctLineType_409 (
225458   p_application_id        IN NUMBER
225459  ,p_event_id              IN NUMBER
225460  ,p_calculate_acctd_flag  IN VARCHAR2
225461  ,p_calculate_g_l_flag    IN VARCHAR2
225462  ,p_actual_flag           IN OUT VARCHAR2
225463  ,p_balance_type_code     OUT VARCHAR2
225464  ,p_gain_or_loss_ref      OUT VARCHAR2
225465  
225466 --TRANSACTION_ID
225467  , p_source_1            IN NUMBER
225468 --Item Concatenated Segments
225469  , p_source_2            IN VARCHAR2
225470 --Transaction Quantity
225471  , p_source_3            IN NUMBER
225472 --Transaction Unit of Measure Code
225473  , p_source_4            IN VARCHAR2
225474 --Inventory Transaction Type Description
225475  , p_source_5            IN VARCHAR2
225476 --Interorg Expense Account
225477  , p_source_34            IN NUMBER
225478 --Applied to Application ID
225479  , p_source_79            IN NUMBER
225480 --Applied to Distribution Link Type
225481  , p_source_80            IN VARCHAR2
225482 --Applied to Entity Code
225483  , p_source_81            IN VARCHAR2
225484 --DISTRIBUTION_IDENTIFIER
225485  , p_source_84            IN NUMBER
225486 --Distribution Type
225487  , p_source_85            IN VARCHAR2
225488  , p_source_85_meaning    IN VARCHAR2
225489 --Encumbrance Reversal Amount Entered
225490  , p_source_87            IN NUMBER
225491 --Entered Currency Code
225492  , p_source_88            IN VARCHAR2
225493 --Transaction Encumbrance Reversal Amount
225494  , p_source_89            IN NUMBER
225495 --Entered Amount
225496  , p_source_91            IN NUMBER
225497 --Currency Conversion Date
225498  , p_source_92            IN DATE
225499 --Currency Conversion Rate
225500  , p_source_93            IN NUMBER
225501 --Currency Conversion Type
225502  , p_source_94            IN VARCHAR2
225503 --Accounted Amount
225504  , p_source_95            IN NUMBER
225505 --Accounting Line Type
225506  , p_source_97            IN NUMBER
225507 --Costing Encumbrance Upgrade Option
225508  , p_source_100            IN VARCHAR2
225509 --TXN_PO_DISTRIBUTION_ID
225510  , p_source_101            IN NUMBER
225511 --TXN_PO_HEADER_ID
225512  , p_source_102            IN NUMBER
225513 --Requisition Budget Account
225514  , p_source_103            IN NUMBER
225515 --Requisition Encumbrance Type Identifier
225516  , p_source_104            IN NUMBER
225517 )
225518 IS
225519 
225520 l_component_type              VARCHAR2(80);
225521 l_component_code              VARCHAR2(30);
225522 l_component_type_code         VARCHAR2(1);
225523 l_component_appl_id           INTEGER;
225524 l_amb_context_code            VARCHAR2(30);
225525 l_entity_code                 VARCHAR2(30);
225526 l_event_class_code            VARCHAR2(30);
225527 l_ae_header_id                NUMBER;
225528 l_event_type_code             VARCHAR2(30);
225529 l_line_definition_code        VARCHAR2(30);
225530 l_line_definition_owner_code  VARCHAR2(1);
225531 --
225532 -- adr variables
225533 l_segment                     VARCHAR2(30);
225534 l_ccid                        NUMBER;
225535 l_adr_transaction_coa_id      NUMBER;
225536 l_adr_accounting_coa_id       NUMBER;
225537 l_adr_flexfield_segment_code  VARCHAR2(30);
225538 l_adr_flex_value_set_id       NUMBER;
225539 l_adr_value_type_code         VARCHAR2(30);
225540 l_adr_value_combination_id    NUMBER;
225541 l_adr_value_segment_code      VARCHAR2(30);
225542 
225543 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
225544 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
225545 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
225546 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
225547 
225548 -- 4262811 Variables ------------------------------------------------------------------------------------------
225549 l_entered_amt_idx             NUMBER;
225550 l_accted_amt_idx              NUMBER;
225551 l_acc_rev_flag                VARCHAR2(1);
225552 l_accrual_line_num            NUMBER;
225553 l_tmp_amt                     NUMBER;
225554 l_acc_rev_natural_side_code   VARCHAR2(1);
225555 
225556 l_num_entries                 NUMBER;
225557 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
225558 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
225559 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
225560 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
225561 l_recog_line_1                NUMBER;
225562 l_recog_line_2                NUMBER;
225563 
225564 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
225565 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
225566 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
225567 
225568 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
225569 
225570 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
225571 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
225572 
225573 ---------------------------------------------------------------------------------------------------------------
225574 
225575 
225576 --
225577 -- bulk performance
225578 --
225579 l_balance_type_code           VARCHAR2(1);
225580 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
225581 l_log_module                  VARCHAR2(240);
225582 
225583 --
225584 -- Upgrade strategy
225585 --
225586 l_actual_upg_option           VARCHAR2(1);
225587 l_enc_upg_option           VARCHAR2(1);
225588 
225589 --
225590 BEGIN
225591 --
225592 IF g_log_enabled THEN
225593       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_409';
225594 END IF;
225595 --
225596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
225597 
225598       trace
225599          (p_msg      => 'BEGIN of AcctLineType_409'
225600          ,p_level    => C_LEVEL_PROCEDURE
225601          ,p_module   => l_log_module);
225602 
225603 END IF;
225604 --
225605 l_component_type             := 'AMB_JLT';
225606 l_component_code             := 'PI_EXPENSE';
225607 l_component_type_code        := 'S';
225608 l_component_appl_id          :=  707;
225609 l_amb_context_code           := 'DEFAULT';
225610 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
225611 l_event_class_code           := 'DIR_INTERORG_RCPT';
225612 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
225613 l_line_definition_owner_code := 'S';
225614 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
225615 --
225616 l_balance_type_code          := 'A';
225617 l_segment                     := NULL;
225618 l_ccid                        := NULL;
225619 l_adr_transaction_coa_id      := NULL;
225620 l_adr_accounting_coa_id       := NULL;
225621 l_adr_flexfield_segment_code  := NULL;
225622 l_adr_flex_value_set_id       := NULL;
225623 l_adr_value_type_code         := NULL;
225624 l_adr_value_combination_id    := NULL;
225625 l_adr_value_segment_code      := NULL;
225626 
225627 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
225628 l_bflow_class_code           := '';    -- 4219869 Business Flow
225629 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
225630 l_budgetary_control_flag     := 'N';
225631 
225632 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
225633 l_bflow_applied_to_amt       := NULL; -- 5132302
225634 l_entered_amt_idx            := NULL;          -- 4262811
225635 l_accted_amt_idx             := NULL;          -- 4262811
225636 l_acc_rev_flag               := NULL;          -- 4262811
225637 l_accrual_line_num           := NULL;          -- 4262811
225638 l_tmp_amt                    := NULL;          -- 4262811
225639 --
225640  
225641 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
225642     l_balance_type_code <> 'B' THEN
225643 IF NVL(p_source_97,9E125) =  1
225644  THEN 
225645 
225646    --
225647    XLA_AE_LINES_PKG.SetNewLine;
225648 
225649    p_balance_type_code          := l_balance_type_code;
225650    -- set the flag so later we will know whether the gain loss line needs to be created
225651    
225652    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
225653      p_actual_flag :='A';
225654    END IF;
225655 
225656    --
225657    -- bulk performance
225658    --
225659    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
225660                                       p_header_num   => 0); -- 4262811
225661    --
225662    -- set accounting line options
225663    --
225664    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
225665            p_natural_side_code          => 'D'
225666          , p_gain_or_loss_flag          => 'N'
225667          , p_gl_transfer_mode_code      => 'S'
225668          , p_acct_entry_type_code       => 'A'
225669          , p_switch_side_flag           => 'Y'
225670          , p_merge_duplicate_code       => 'N'
225671          );
225672    --
225673    l_acc_rev_natural_side_code := 'C';  -- 4262811
225674    -- 
225675    --
225676    -- set accounting line type info
225677    --
225678    xla_ae_lines_pkg.SetAcctLineType
225679       (p_component_type             => l_component_type
225680       ,p_event_type_code            => l_event_type_code
225681       ,p_line_definition_owner_code => l_line_definition_owner_code
225682       ,p_line_definition_code       => l_line_definition_code
225683       ,p_accounting_line_code       => l_component_code
225684       ,p_accounting_line_type_code  => l_component_type_code
225685       ,p_accounting_line_appl_id    => l_component_appl_id
225686       ,p_amb_context_code           => l_amb_context_code
225687       ,p_entity_code                => l_entity_code
225688       ,p_event_class_code           => l_event_class_code);
225689    --
225690    -- set accounting class
225691    --
225692    xla_ae_lines_pkg.SetAcctClass(
225693            p_accounting_class_code  => 'EXPENSE'
225694          , p_ae_header_id           => l_ae_header_id
225695          );
225696 
225697    --
225698    -- set rounding class
225699    --
225700    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
225701                       'EXPENSE';
225702 
225703    --
225704    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
225705    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
225706    --
225707    -- bulk performance
225708    --
225709    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
225710 
225711    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
225712       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
225713 
225714    -- 4955764
225715    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
225716       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
225717 
225718    -- 4458381 Public Sector Enh
225719    
225720    --
225721    -- set accounting attributes for the line type
225722    --
225723    l_entered_amt_idx := 17;
225724    l_accted_amt_idx  := 22;
225725    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
225726    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
225727    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
225728    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
225729    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
225730    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
225731    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
225732    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
225733    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
225734    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
225735    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
225736    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
225737    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
225738    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
225739    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
225740    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
225741    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
225742    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
225743    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
225744    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
225745    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
225746    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
225747    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
225748    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
225749    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
225750    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
225751    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
225752    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
225753    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
225754    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
225755    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
225756    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
225757    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
225758    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
225759    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
225760    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
225761    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
225762    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
225763    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
225764    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
225765    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
225766    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
225767    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
225768    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
225769    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
225770    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
225771    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
225772    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
225773    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
225774 
225775    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
225776    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
225777 
225778    ---------------------------------------------------------------------------------------------------------------
225779    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
225780    ---------------------------------------------------------------------------------------------------------------
225781    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
225782 
225783    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
225784    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
225785 
225786    IF xla_accounting_cache_pkg.GetValueChar
225787          (p_source_code         => 'LEDGER_CATEGORY_CODE'
225788          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
225789    AND l_bflow_method_code = 'PRIOR_ENTRY'
225790 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
225791    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
225792          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
225793        )
225794    THEN
225795          xla_ae_lines_pkg.BflowUpgEntry
225796            (p_business_method_code    => l_bflow_method_code
225797            ,p_business_class_code     => l_bflow_class_code
225798            ,p_balance_type            => l_balance_type_code);
225799    ELSE
225800       NULL;
225801 -- No business flow processing for business flow method of NONE.
225802    END IF;
225803 
225804    --
225805    -- call analytical criteria
225806    --
225807    
225808    --
225809    -- call description
225810    --
225811    
225812 xla_ae_lines_pkg.SetLineDescription(
225813    p_ae_header_id => l_ae_header_id
225814   ,p_description  => Description_1 (
225815      p_application_id         => p_application_id
225816    , p_ae_header_id           => l_ae_header_id 
225817 , p_source_1 => p_source_1
225818 , p_source_2 => p_source_2
225819 , p_source_3 => p_source_3
225820 , p_source_4 => p_source_4
225821 , p_source_5 => p_source_5
225822    )
225823 );
225824 
225825 
225826    --
225827    -- call ADRs
225828    -- Bug 4922099
225829    --
225830    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
225831         (NVL(l_actual_upg_option, 'N') = 'O') OR
225832         (NVL(l_enc_upg_option, 'N') = 'O')
225833       )
225834    THEN
225835    NULL;
225836    --
225837    --
225838    
225839   l_ccid := AcctDerRule_19(
225840            p_application_id           => p_application_id
225841          , p_ae_header_id             => l_ae_header_id 
225842 , p_source_34 => p_source_34
225843          , x_transaction_coa_id       => l_adr_transaction_coa_id
225844          , x_accounting_coa_id        => l_adr_accounting_coa_id
225845          , x_value_type_code          => l_adr_value_type_code
225846          , p_side                     => 'NA'
225847    );
225848 
225849    xla_ae_lines_pkg.set_ccid(
225850     p_code_combination_id          => l_ccid
225851   , p_value_type_code              => l_adr_value_type_code
225852   , p_transaction_coa_id           => l_adr_transaction_coa_id
225853   , p_accounting_coa_id            => l_adr_accounting_coa_id
225854   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
225855   , p_adr_type_code                => 'S'
225856   , p_component_type               => l_component_type
225857   , p_component_code               => l_component_code
225858   , p_component_type_code          => l_component_type_code
225859   , p_component_appl_id            => l_component_appl_id
225860   , p_amb_context_code             => l_amb_context_code
225861   , p_side                         => 'NA'
225862   );
225863 
225864 
225865    --
225866    --
225867    END IF;
225868    --
225869    -- Bug 4922099
225870    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
225871           (NVL(l_enc_upg_option, 'N') = 'O')
225872         ) AND
225873         (l_bflow_method_code = 'PRIOR_ENTRY')
225874       )
225875    THEN
225876       IF
225877       --
225878       1 = 2
225879       --
225880       THEN
225881       xla_accounting_err_pkg.build_message
225882                                     (p_appli_s_name            => 'XLA'
225883                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
225884                                     ,p_token_1                 => 'LINE_NUMBER'
225885                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
225886                                     ,p_token_2                 => 'LINE_TYPE_NAME'
225887                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
225888                                                                              l_component_type
225889                                                                             ,l_component_code
225890                                                                             ,l_component_type_code
225891                                                                             ,l_component_appl_id
225892                                                                             ,l_amb_context_code
225893                                                                             ,l_entity_code
225894                                                                             ,l_event_class_code
225895                                                                            )
225896                                     ,p_token_3                 => 'OWNER'
225897                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
225898                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
225899                                                                           ,p_lookup_code    => l_component_type_code
225900                                                                          )
225901                                     ,p_token_4                 => 'PRODUCT_NAME'
225902                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
225903                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
225904                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
225905                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
225906                                     ,p_ae_header_id            =>  NULL
225907                                        );
225908 
225909         IF (C_LEVEL_ERROR>= g_log_level) THEN
225910                  trace
225911                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
225912                       ,p_level    => C_LEVEL_ERROR
225913                       ,p_module   => l_log_module);
225914         END IF;
225915       END IF;
225916    END IF;
225917    --
225918    --
225919    ------------------------------------------------------------------------------------------------
225920    -- 4219869 Business Flow
225921    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
225922    -- Prior Entry.  Currently, the following code is always generated.
225923    ------------------------------------------------------------------------------------------------
225924    XLA_AE_LINES_PKG.ValidateCurrentLine;
225925 
225926    ------------------------------------------------------------------------------------
225927    -- 4219869 Business Flow
225928    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
225929    ------------------------------------------------------------------------------------
225930    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
225931 
225932    ----------------------------------------------------------------------------------
225933    -- 4219869 Business Flow
225934    -- Update journal entry status -- Need to generate this within IF <condition>
225935    ----------------------------------------------------------------------------------
225936    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
225937          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
225938          ,p_balance_type_code => l_balance_type_code
225939          );
225940 
225941    -------------------------------------------------------------------------------------------
225942    -- 4262811 - Generate the Accrual Reversal lines
225943    -------------------------------------------------------------------------------------------
225944    BEGIN
225945       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
225946                               (g_array_event(p_event_id).array_value_num('header_index'));
225947       IF l_acc_rev_flag IS NULL THEN
225948          l_acc_rev_flag := 'N';
225949       END IF;
225950    EXCEPTION
225951       WHEN OTHERS THEN
225952          l_acc_rev_flag := 'N';
225953    END;
225954    --
225955    IF (l_acc_rev_flag = 'Y') THEN
225956 
225957        -- 4645092  ------------------------------------------------------------------------------
225958        -- To allow MPA report to determine if it should generate report process
225959        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
225960        ------------------------------------------------------------------------------------------
225961 
225962        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
225963        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
225964    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
225965    -- call ADRs
225966    -- Bug 4922099
225967    --
225968    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
225969         (NVL(l_actual_upg_option, 'N') = 'O') OR
225970         (NVL(l_enc_upg_option, 'N') = 'O')
225971       )
225972    THEN
225973    NULL;
225974    --
225975    --
225976    
225977   l_ccid := AcctDerRule_19(
225978            p_application_id           => p_application_id
225979          , p_ae_header_id             => l_ae_header_id 
225980 , p_source_34 => p_source_34
225981          , x_transaction_coa_id       => l_adr_transaction_coa_id
225982          , x_accounting_coa_id        => l_adr_accounting_coa_id
225983          , x_value_type_code          => l_adr_value_type_code
225984          , p_side                     => 'NA'
225985    );
225986 
225987    xla_ae_lines_pkg.set_ccid(
225988     p_code_combination_id          => l_ccid
225989   , p_value_type_code              => l_adr_value_type_code
225990   , p_transaction_coa_id           => l_adr_transaction_coa_id
225991   , p_accounting_coa_id            => l_adr_accounting_coa_id
225992   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
225993   , p_adr_type_code                => 'S'
225994   , p_component_type               => l_component_type
225995   , p_component_code               => l_component_code
225996   , p_component_type_code          => l_component_type_code
225997   , p_component_appl_id            => l_component_appl_id
225998   , p_amb_context_code             => l_amb_context_code
225999   , p_side                         => 'NA'
226000   );
226001 
226002 
226003    --
226004    --
226005    END IF;
226006 
226007        --
226008        -- Update the line information that should be overwritten
226009        --
226010        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
226011                                          p_header_num   => 1);
226012        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
226013 
226014        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
226015 
226016        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
226017           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
226018        END IF;
226019 
226020       --
226021       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
226022       --
226023       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
226024           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
226025       ELSE
226026           ---------------------------------------------------------------------------------------------------
226027           -- 4262811a Switch Sign
226028           ---------------------------------------------------------------------------------------------------
226029           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
226030           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
226031                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
226032           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
226033                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
226034           -- 5132302
226035           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
226036                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
226037 
226038       END IF;
226039 
226040       -- 4955764
226041       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
226042       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
226043 
226044 
226045       XLA_AE_LINES_PKG.ValidateCurrentLine;
226046       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
226047 
226048       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
226049                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
226050                ,p_balance_type_code => l_balance_type_code);
226051 
226052    END IF;
226053 
226054    -----------------------------------------------------------------------------------------
226055    -- 4262811 Multiperiod Accounting
226056    -----------------------------------------------------------------------------------------
226057      -- No MPA option is assigned.
226058 
226059 
226060 END IF;
226061 END IF;
226062 --
226063 
226064 --
226065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
226066    trace
226067       (p_msg      => 'END of AcctLineType_409'
226068       ,p_level    => C_LEVEL_PROCEDURE
226069       ,p_module   => l_log_module);
226070 END IF;
226071 --
226072 EXCEPTION
226073   WHEN xla_exceptions_pkg.application_exception THEN
226074       RAISE;
226075   WHEN OTHERS THEN
226076        xla_exceptions_pkg.raise_message
226077            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_409');
226078 END AcctLineType_409;
226079 --
226080 
226081 ---------------------------------------
226082 --
226083 -- PRIVATE FUNCTION
226084 --         AcctLineType_410
226085 --
226086 ---------------------------------------
226087 PROCEDURE AcctLineType_410 (
226088   p_application_id        IN NUMBER
226089  ,p_event_id              IN NUMBER
226090  ,p_calculate_acctd_flag  IN VARCHAR2
226091  ,p_calculate_g_l_flag    IN VARCHAR2
226092  ,p_actual_flag           IN OUT VARCHAR2
226093  ,p_balance_type_code     OUT VARCHAR2
226094  ,p_gain_or_loss_ref      OUT VARCHAR2
226095  
226096 --Inventory Item Expense Account
226097  , p_source_53            IN NUMBER
226098 --DISTRIBUTION_IDENTIFIER
226099  , p_source_84            IN NUMBER
226100 --Distribution Type
226101  , p_source_85            IN VARCHAR2
226102  , p_source_85_meaning    IN VARCHAR2
226103 --Entered Currency Code
226104  , p_source_88            IN VARCHAR2
226105 --Entered Amount
226106  , p_source_91            IN NUMBER
226107 --Currency Conversion Date
226108  , p_source_92            IN DATE
226109 --Currency Conversion Rate
226110  , p_source_93            IN NUMBER
226111 --Accounted Amount
226112  , p_source_95            IN NUMBER
226113 --Accounting Line Type
226114  , p_source_97            IN NUMBER
226115 )
226116 IS
226117 
226118 l_component_type              VARCHAR2(80);
226119 l_component_code              VARCHAR2(30);
226120 l_component_type_code         VARCHAR2(1);
226121 l_component_appl_id           INTEGER;
226122 l_amb_context_code            VARCHAR2(30);
226123 l_entity_code                 VARCHAR2(30);
226124 l_event_class_code            VARCHAR2(30);
226125 l_ae_header_id                NUMBER;
226126 l_event_type_code             VARCHAR2(30);
226127 l_line_definition_code        VARCHAR2(30);
226128 l_line_definition_owner_code  VARCHAR2(1);
226129 --
226130 -- adr variables
226131 l_segment                     VARCHAR2(30);
226132 l_ccid                        NUMBER;
226133 l_adr_transaction_coa_id      NUMBER;
226134 l_adr_accounting_coa_id       NUMBER;
226135 l_adr_flexfield_segment_code  VARCHAR2(30);
226136 l_adr_flex_value_set_id       NUMBER;
226137 l_adr_value_type_code         VARCHAR2(30);
226138 l_adr_value_combination_id    NUMBER;
226139 l_adr_value_segment_code      VARCHAR2(30);
226140 
226141 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
226142 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
226143 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
226144 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
226145 
226146 -- 4262811 Variables ------------------------------------------------------------------------------------------
226147 l_entered_amt_idx             NUMBER;
226148 l_accted_amt_idx              NUMBER;
226149 l_acc_rev_flag                VARCHAR2(1);
226150 l_accrual_line_num            NUMBER;
226151 l_tmp_amt                     NUMBER;
226152 l_acc_rev_natural_side_code   VARCHAR2(1);
226153 
226154 l_num_entries                 NUMBER;
226155 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
226156 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
226157 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
226158 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
226159 l_recog_line_1                NUMBER;
226160 l_recog_line_2                NUMBER;
226161 
226162 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
226163 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
226164 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
226165 
226166 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
226167 
226168 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
226169 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
226170 
226171 ---------------------------------------------------------------------------------------------------------------
226172 
226173 
226174 --
226175 -- bulk performance
226176 --
226177 l_balance_type_code           VARCHAR2(1);
226178 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
226179 l_log_module                  VARCHAR2(240);
226180 
226181 --
226182 -- Upgrade strategy
226183 --
226184 l_actual_upg_option           VARCHAR2(1);
226185 l_enc_upg_option           VARCHAR2(1);
226186 
226187 --
226188 BEGIN
226189 --
226190 IF g_log_enabled THEN
226191       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_410';
226192 END IF;
226193 --
226194 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
226195 
226196       trace
226197          (p_msg      => 'BEGIN of AcctLineType_410'
226198          ,p_level    => C_LEVEL_PROCEDURE
226199          ,p_module   => l_log_module);
226200 
226201 END IF;
226202 --
226203 l_component_type             := 'AMB_JLT';
226204 l_component_code             := 'PI_EXPENSE';
226205 l_component_type_code        := 'S';
226206 l_component_appl_id          :=  707;
226207 l_amb_context_code           := 'DEFAULT';
226208 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
226209 l_event_class_code           := 'OSP';
226210 l_event_type_code            := 'IPV_TRANSFER_WO';
226211 l_line_definition_owner_code := 'S';
226212 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
226213 --
226214 l_balance_type_code          := 'A';
226215 l_segment                     := NULL;
226216 l_ccid                        := NULL;
226217 l_adr_transaction_coa_id      := NULL;
226218 l_adr_accounting_coa_id       := NULL;
226219 l_adr_flexfield_segment_code  := NULL;
226220 l_adr_flex_value_set_id       := NULL;
226221 l_adr_value_type_code         := NULL;
226222 l_adr_value_combination_id    := NULL;
226223 l_adr_value_segment_code      := NULL;
226224 
226225 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
226226 l_bflow_class_code           := '';    -- 4219869 Business Flow
226227 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
226228 l_budgetary_control_flag     := 'N';
226229 
226230 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
226231 l_bflow_applied_to_amt       := NULL; -- 5132302
226232 l_entered_amt_idx            := NULL;          -- 4262811
226233 l_accted_amt_idx             := NULL;          -- 4262811
226234 l_acc_rev_flag               := NULL;          -- 4262811
226235 l_accrual_line_num           := NULL;          -- 4262811
226236 l_tmp_amt                    := NULL;          -- 4262811
226237 --
226238  
226239 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
226240     l_balance_type_code <> 'B' THEN
226241 IF NVL(p_source_97,9E125) =  7
226242  THEN 
226243 
226244    --
226245    XLA_AE_LINES_PKG.SetNewLine;
226246 
226247    p_balance_type_code          := l_balance_type_code;
226248    -- set the flag so later we will know whether the gain loss line needs to be created
226249    
226250    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
226251      p_actual_flag :='A';
226252    END IF;
226253 
226254    --
226255    -- bulk performance
226256    --
226257    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
226258                                       p_header_num   => 0); -- 4262811
226259    --
226260    -- set accounting line options
226261    --
226262    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
226263            p_natural_side_code          => 'D'
226264          , p_gain_or_loss_flag          => 'N'
226265          , p_gl_transfer_mode_code      => 'S'
226266          , p_acct_entry_type_code       => 'A'
226267          , p_switch_side_flag           => 'Y'
226268          , p_merge_duplicate_code       => 'N'
226269          );
226270    --
226271    l_acc_rev_natural_side_code := 'C';  -- 4262811
226272    -- 
226273    --
226274    -- set accounting line type info
226275    --
226276    xla_ae_lines_pkg.SetAcctLineType
226277       (p_component_type             => l_component_type
226278       ,p_event_type_code            => l_event_type_code
226279       ,p_line_definition_owner_code => l_line_definition_owner_code
226280       ,p_line_definition_code       => l_line_definition_code
226281       ,p_accounting_line_code       => l_component_code
226282       ,p_accounting_line_type_code  => l_component_type_code
226283       ,p_accounting_line_appl_id    => l_component_appl_id
226284       ,p_amb_context_code           => l_amb_context_code
226285       ,p_entity_code                => l_entity_code
226286       ,p_event_class_code           => l_event_class_code);
226287    --
226288    -- set accounting class
226289    --
226290    xla_ae_lines_pkg.SetAcctClass(
226291            p_accounting_class_code  => 'EXPENSE'
226292          , p_ae_header_id           => l_ae_header_id
226293          );
226294 
226295    --
226296    -- set rounding class
226297    --
226298    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
226299                       'EXPENSE';
226300 
226301    --
226302    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
226303    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
226304    --
226305    -- bulk performance
226306    --
226307    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
226308 
226309    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
226310       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
226311 
226312    -- 4955764
226313    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
226314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
226315 
226316    -- 4458381 Public Sector Enh
226317    
226318    --
226319    -- set accounting attributes for the line type
226320    --
226321    l_entered_amt_idx := 3;
226322    l_accted_amt_idx  := 8;
226323    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
226324    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
226325    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
226326    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
226327    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
226328    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
226329    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
226330    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
226331    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
226332    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
226333    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
226334    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
226335    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
226336    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
226337    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
226338    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
226339    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
226340 
226341    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
226342    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
226343 
226344    ---------------------------------------------------------------------------------------------------------------
226345    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
226346    ---------------------------------------------------------------------------------------------------------------
226347    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
226348 
226349    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
226350    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
226351 
226352    IF xla_accounting_cache_pkg.GetValueChar
226353          (p_source_code         => 'LEDGER_CATEGORY_CODE'
226354          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
226355    AND l_bflow_method_code = 'PRIOR_ENTRY'
226356 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
226357    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
226358          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
226359        )
226360    THEN
226361          xla_ae_lines_pkg.BflowUpgEntry
226362            (p_business_method_code    => l_bflow_method_code
226363            ,p_business_class_code     => l_bflow_class_code
226364            ,p_balance_type            => l_balance_type_code);
226365    ELSE
226366       NULL;
226367 -- No business flow processing for business flow method of NONE.
226368    END IF;
226369 
226370    --
226371    -- call analytical criteria
226372    --
226373    
226374    --
226375    -- call description
226376    --
226377    -- No description or it is inherited.
226378    --
226379    -- call ADRs
226380    -- Bug 4922099
226381    --
226382    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
226383         (NVL(l_actual_upg_option, 'N') = 'O') OR
226384         (NVL(l_enc_upg_option, 'N') = 'O')
226385       )
226386    THEN
226387    NULL;
226388    --
226389    --
226390    
226391   l_ccid := AcctDerRule_30(
226392            p_application_id           => p_application_id
226393          , p_ae_header_id             => l_ae_header_id 
226394 , p_source_53 => p_source_53
226395          , x_transaction_coa_id       => l_adr_transaction_coa_id
226396          , x_accounting_coa_id        => l_adr_accounting_coa_id
226397          , x_value_type_code          => l_adr_value_type_code
226398          , p_side                     => 'NA'
226399    );
226400 
226401    xla_ae_lines_pkg.set_ccid(
226402     p_code_combination_id          => l_ccid
226403   , p_value_type_code              => l_adr_value_type_code
226404   , p_transaction_coa_id           => l_adr_transaction_coa_id
226405   , p_accounting_coa_id            => l_adr_accounting_coa_id
226406   , p_adr_code                     => 'PI_ITEM_EXPENSE'
226407   , p_adr_type_code                => 'S'
226408   , p_component_type               => l_component_type
226409   , p_component_code               => l_component_code
226410   , p_component_type_code          => l_component_type_code
226411   , p_component_appl_id            => l_component_appl_id
226412   , p_amb_context_code             => l_amb_context_code
226413   , p_side                         => 'NA'
226414   );
226415 
226416 
226417    --
226418    --
226419    END IF;
226420    --
226421    -- Bug 4922099
226422    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
226423           (NVL(l_enc_upg_option, 'N') = 'O')
226424         ) AND
226425         (l_bflow_method_code = 'PRIOR_ENTRY')
226426       )
226427    THEN
226428       IF
226429       --
226430       1 = 2
226431       --
226432       THEN
226433       xla_accounting_err_pkg.build_message
226434                                     (p_appli_s_name            => 'XLA'
226435                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
226436                                     ,p_token_1                 => 'LINE_NUMBER'
226437                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
226438                                     ,p_token_2                 => 'LINE_TYPE_NAME'
226439                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
226440                                                                              l_component_type
226441                                                                             ,l_component_code
226442                                                                             ,l_component_type_code
226443                                                                             ,l_component_appl_id
226444                                                                             ,l_amb_context_code
226445                                                                             ,l_entity_code
226446                                                                             ,l_event_class_code
226447                                                                            )
226448                                     ,p_token_3                 => 'OWNER'
226449                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
226450                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
226451                                                                           ,p_lookup_code    => l_component_type_code
226452                                                                          )
226453                                     ,p_token_4                 => 'PRODUCT_NAME'
226454                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
226455                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
226456                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
226457                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
226458                                     ,p_ae_header_id            =>  NULL
226459                                        );
226460 
226461         IF (C_LEVEL_ERROR>= g_log_level) THEN
226462                  trace
226463                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
226464                       ,p_level    => C_LEVEL_ERROR
226465                       ,p_module   => l_log_module);
226466         END IF;
226467       END IF;
226468    END IF;
226469    --
226470    --
226471    ------------------------------------------------------------------------------------------------
226472    -- 4219869 Business Flow
226473    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
226474    -- Prior Entry.  Currently, the following code is always generated.
226475    ------------------------------------------------------------------------------------------------
226476    XLA_AE_LINES_PKG.ValidateCurrentLine;
226477 
226478    ------------------------------------------------------------------------------------
226479    -- 4219869 Business Flow
226480    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
226481    ------------------------------------------------------------------------------------
226482    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
226483 
226484    ----------------------------------------------------------------------------------
226485    -- 4219869 Business Flow
226486    -- Update journal entry status -- Need to generate this within IF <condition>
226487    ----------------------------------------------------------------------------------
226488    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
226489          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
226490          ,p_balance_type_code => l_balance_type_code
226491          );
226492 
226493    -------------------------------------------------------------------------------------------
226494    -- 4262811 - Generate the Accrual Reversal lines
226495    -------------------------------------------------------------------------------------------
226496    BEGIN
226497       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
226498                               (g_array_event(p_event_id).array_value_num('header_index'));
226499       IF l_acc_rev_flag IS NULL THEN
226500          l_acc_rev_flag := 'N';
226501       END IF;
226502    EXCEPTION
226503       WHEN OTHERS THEN
226504          l_acc_rev_flag := 'N';
226505    END;
226506    --
226507    IF (l_acc_rev_flag = 'Y') THEN
226508 
226509        -- 4645092  ------------------------------------------------------------------------------
226510        -- To allow MPA report to determine if it should generate report process
226511        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
226512        ------------------------------------------------------------------------------------------
226513 
226514        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
226515        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
226516    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
226517    -- call ADRs
226518    -- Bug 4922099
226519    --
226520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
226521         (NVL(l_actual_upg_option, 'N') = 'O') OR
226522         (NVL(l_enc_upg_option, 'N') = 'O')
226523       )
226524    THEN
226525    NULL;
226526    --
226527    --
226528    
226529   l_ccid := AcctDerRule_30(
226530            p_application_id           => p_application_id
226531          , p_ae_header_id             => l_ae_header_id 
226532 , p_source_53 => p_source_53
226533          , x_transaction_coa_id       => l_adr_transaction_coa_id
226534          , x_accounting_coa_id        => l_adr_accounting_coa_id
226535          , x_value_type_code          => l_adr_value_type_code
226536          , p_side                     => 'NA'
226537    );
226538 
226539    xla_ae_lines_pkg.set_ccid(
226540     p_code_combination_id          => l_ccid
226541   , p_value_type_code              => l_adr_value_type_code
226542   , p_transaction_coa_id           => l_adr_transaction_coa_id
226543   , p_accounting_coa_id            => l_adr_accounting_coa_id
226544   , p_adr_code                     => 'PI_ITEM_EXPENSE'
226545   , p_adr_type_code                => 'S'
226546   , p_component_type               => l_component_type
226547   , p_component_code               => l_component_code
226548   , p_component_type_code          => l_component_type_code
226549   , p_component_appl_id            => l_component_appl_id
226550   , p_amb_context_code             => l_amb_context_code
226551   , p_side                         => 'NA'
226552   );
226553 
226554 
226555    --
226556    --
226557    END IF;
226558 
226559        --
226560        -- Update the line information that should be overwritten
226561        --
226562        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
226563                                          p_header_num   => 1);
226564        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
226565 
226566        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
226567 
226568        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
226569           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
226570        END IF;
226571 
226572       --
226573       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
226574       --
226575       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
226576           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
226577       ELSE
226578           ---------------------------------------------------------------------------------------------------
226579           -- 4262811a Switch Sign
226580           ---------------------------------------------------------------------------------------------------
226581           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
226582           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
226583                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
226584           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
226585                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
226586           -- 5132302
226587           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
226588                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
226589 
226590       END IF;
226591 
226592       -- 4955764
226593       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
226594       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
226595 
226596 
226597       XLA_AE_LINES_PKG.ValidateCurrentLine;
226598       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
226599 
226600       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
226601                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
226602                ,p_balance_type_code => l_balance_type_code);
226603 
226604    END IF;
226605 
226606    -----------------------------------------------------------------------------------------
226607    -- 4262811 Multiperiod Accounting
226608    -----------------------------------------------------------------------------------------
226609      -- No MPA option is assigned.
226610 
226611 
226612 END IF;
226613 END IF;
226614 --
226615 
226616 --
226617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
226618    trace
226619       (p_msg      => 'END of AcctLineType_410'
226620       ,p_level    => C_LEVEL_PROCEDURE
226621       ,p_module   => l_log_module);
226622 END IF;
226623 --
226624 EXCEPTION
226625   WHEN xla_exceptions_pkg.application_exception THEN
226626       RAISE;
226627   WHEN OTHERS THEN
226628        xla_exceptions_pkg.raise_message
226629            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_410');
226630 END AcctLineType_410;
226631 --
226632 
226633 ---------------------------------------
226634 --
226635 -- PRIVATE FUNCTION
226636 --         AcctLineType_411
226637 --
226638 ---------------------------------------
226639 PROCEDURE AcctLineType_411 (
226640   p_application_id        IN NUMBER
226641  ,p_event_id              IN NUMBER
226642  ,p_calculate_acctd_flag  IN VARCHAR2
226643  ,p_calculate_g_l_flag    IN VARCHAR2
226644  ,p_actual_flag           IN OUT VARCHAR2
226645  ,p_balance_type_code     OUT VARCHAR2
226646  ,p_gain_or_loss_ref      OUT VARCHAR2
226647  
226648 --TRANSACTION_ID
226649  , p_source_1            IN NUMBER
226650 --Item Concatenated Segments
226651  , p_source_2            IN VARCHAR2
226652 --Transaction Quantity
226653  , p_source_3            IN NUMBER
226654 --Transaction Unit of Measure Code
226655  , p_source_4            IN VARCHAR2
226656 --Inventory Transaction Type Description
226657  , p_source_5            IN VARCHAR2
226658 --Interorg Expense Account
226659  , p_source_34            IN NUMBER
226660 --DISTRIBUTION_IDENTIFIER
226661  , p_source_84            IN NUMBER
226662 --Distribution Type
226663  , p_source_85            IN VARCHAR2
226664  , p_source_85_meaning    IN VARCHAR2
226665 --Entered Currency Code
226666  , p_source_88            IN VARCHAR2
226667 --Entered Amount
226668  , p_source_91            IN NUMBER
226669 --Currency Conversion Date
226670  , p_source_92            IN DATE
226671 --Currency Conversion Rate
226672  , p_source_93            IN NUMBER
226673 --Currency Conversion Type
226674  , p_source_94            IN VARCHAR2
226675 --Accounted Amount
226676  , p_source_95            IN NUMBER
226677 --Accounting Line Type
226678  , p_source_97            IN NUMBER
226679 )
226680 IS
226681 
226682 l_component_type              VARCHAR2(80);
226683 l_component_code              VARCHAR2(30);
226684 l_component_type_code         VARCHAR2(1);
226685 l_component_appl_id           INTEGER;
226686 l_amb_context_code            VARCHAR2(30);
226687 l_entity_code                 VARCHAR2(30);
226688 l_event_class_code            VARCHAR2(30);
226689 l_ae_header_id                NUMBER;
226690 l_event_type_code             VARCHAR2(30);
226691 l_line_definition_code        VARCHAR2(30);
226692 l_line_definition_owner_code  VARCHAR2(1);
226693 --
226694 -- adr variables
226695 l_segment                     VARCHAR2(30);
226696 l_ccid                        NUMBER;
226697 l_adr_transaction_coa_id      NUMBER;
226698 l_adr_accounting_coa_id       NUMBER;
226699 l_adr_flexfield_segment_code  VARCHAR2(30);
226700 l_adr_flex_value_set_id       NUMBER;
226701 l_adr_value_type_code         VARCHAR2(30);
226702 l_adr_value_combination_id    NUMBER;
226703 l_adr_value_segment_code      VARCHAR2(30);
226704 
226705 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
226706 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
226707 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
226708 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
226709 
226710 -- 4262811 Variables ------------------------------------------------------------------------------------------
226711 l_entered_amt_idx             NUMBER;
226712 l_accted_amt_idx              NUMBER;
226713 l_acc_rev_flag                VARCHAR2(1);
226714 l_accrual_line_num            NUMBER;
226715 l_tmp_amt                     NUMBER;
226716 l_acc_rev_natural_side_code   VARCHAR2(1);
226717 
226718 l_num_entries                 NUMBER;
226719 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
226720 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
226721 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
226722 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
226723 l_recog_line_1                NUMBER;
226724 l_recog_line_2                NUMBER;
226725 
226726 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
226727 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
226728 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
226729 
226730 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
226731 
226732 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
226733 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
226734 
226735 ---------------------------------------------------------------------------------------------------------------
226736 
226737 
226738 --
226739 -- bulk performance
226740 --
226741 l_balance_type_code           VARCHAR2(1);
226742 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
226743 l_log_module                  VARCHAR2(240);
226744 
226745 --
226746 -- Upgrade strategy
226747 --
226748 l_actual_upg_option           VARCHAR2(1);
226749 l_enc_upg_option           VARCHAR2(1);
226750 
226751 --
226752 BEGIN
226753 --
226754 IF g_log_enabled THEN
226755       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_411';
226756 END IF;
226757 --
226758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
226759 
226760       trace
226761          (p_msg      => 'BEGIN of AcctLineType_411'
226762          ,p_level    => C_LEVEL_PROCEDURE
226763          ,p_module   => l_log_module);
226764 
226765 END IF;
226766 --
226767 l_component_type             := 'AMB_JLT';
226768 l_component_code             := 'PI_EXPENSE';
226769 l_component_type_code        := 'S';
226770 l_component_appl_id          :=  707;
226771 l_amb_context_code           := 'DEFAULT';
226772 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
226773 l_event_class_code           := 'USER_DEFINE';
226774 l_event_type_code            := 'UDIR_INTERORG_RCPT';
226775 l_line_definition_owner_code := 'S';
226776 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
226777 --
226778 l_balance_type_code          := 'A';
226779 l_segment                     := NULL;
226780 l_ccid                        := NULL;
226781 l_adr_transaction_coa_id      := NULL;
226782 l_adr_accounting_coa_id       := NULL;
226783 l_adr_flexfield_segment_code  := NULL;
226784 l_adr_flex_value_set_id       := NULL;
226785 l_adr_value_type_code         := NULL;
226786 l_adr_value_combination_id    := NULL;
226787 l_adr_value_segment_code      := NULL;
226788 
226789 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
226790 l_bflow_class_code           := '';    -- 4219869 Business Flow
226791 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
226792 l_budgetary_control_flag     := 'N';
226793 
226794 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
226795 l_bflow_applied_to_amt       := NULL; -- 5132302
226796 l_entered_amt_idx            := NULL;          -- 4262811
226797 l_accted_amt_idx             := NULL;          -- 4262811
226798 l_acc_rev_flag               := NULL;          -- 4262811
226799 l_accrual_line_num           := NULL;          -- 4262811
226800 l_tmp_amt                    := NULL;          -- 4262811
226801 --
226802  
226803 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
226804     l_balance_type_code <> 'B' THEN
226805 IF NVL(p_source_97,9E125) =  1
226806  THEN 
226807 
226808    --
226809    XLA_AE_LINES_PKG.SetNewLine;
226810 
226811    p_balance_type_code          := l_balance_type_code;
226812    -- set the flag so later we will know whether the gain loss line needs to be created
226813    
226814    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
226815      p_actual_flag :='A';
226816    END IF;
226817 
226818    --
226819    -- bulk performance
226820    --
226821    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
226822                                       p_header_num   => 0); -- 4262811
226823    --
226824    -- set accounting line options
226825    --
226826    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
226827            p_natural_side_code          => 'D'
226828          , p_gain_or_loss_flag          => 'N'
226829          , p_gl_transfer_mode_code      => 'S'
226830          , p_acct_entry_type_code       => 'A'
226831          , p_switch_side_flag           => 'Y'
226832          , p_merge_duplicate_code       => 'N'
226833          );
226834    --
226835    l_acc_rev_natural_side_code := 'C';  -- 4262811
226836    -- 
226837    --
226838    -- set accounting line type info
226839    --
226840    xla_ae_lines_pkg.SetAcctLineType
226841       (p_component_type             => l_component_type
226842       ,p_event_type_code            => l_event_type_code
226843       ,p_line_definition_owner_code => l_line_definition_owner_code
226844       ,p_line_definition_code       => l_line_definition_code
226845       ,p_accounting_line_code       => l_component_code
226846       ,p_accounting_line_type_code  => l_component_type_code
226847       ,p_accounting_line_appl_id    => l_component_appl_id
226848       ,p_amb_context_code           => l_amb_context_code
226849       ,p_entity_code                => l_entity_code
226850       ,p_event_class_code           => l_event_class_code);
226851    --
226852    -- set accounting class
226853    --
226854    xla_ae_lines_pkg.SetAcctClass(
226855            p_accounting_class_code  => 'EXPENSE'
226856          , p_ae_header_id           => l_ae_header_id
226857          );
226858 
226859    --
226860    -- set rounding class
226861    --
226862    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
226863                       'EXPENSE';
226864 
226865    --
226866    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
226867    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
226868    --
226869    -- bulk performance
226870    --
226871    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
226872 
226873    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
226874       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
226875 
226876    -- 4955764
226877    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
226878       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
226879 
226880    -- 4458381 Public Sector Enh
226881    
226882    --
226883    -- set accounting attributes for the line type
226884    --
226885    l_entered_amt_idx := 3;
226886    l_accted_amt_idx  := 8;
226887    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
226888    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
226889    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
226890    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
226891    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
226892    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
226893    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
226894    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
226895    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
226896    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
226897    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
226898    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
226899    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
226900    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
226901    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
226902    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
226903    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
226904 
226905    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
226906    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
226907 
226908    ---------------------------------------------------------------------------------------------------------------
226909    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
226910    ---------------------------------------------------------------------------------------------------------------
226911    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
226912 
226913    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
226914    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
226915 
226916    IF xla_accounting_cache_pkg.GetValueChar
226917          (p_source_code         => 'LEDGER_CATEGORY_CODE'
226918          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
226919    AND l_bflow_method_code = 'PRIOR_ENTRY'
226920 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
226921    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
226922          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
226923        )
226924    THEN
226925          xla_ae_lines_pkg.BflowUpgEntry
226926            (p_business_method_code    => l_bflow_method_code
226927            ,p_business_class_code     => l_bflow_class_code
226928            ,p_balance_type            => l_balance_type_code);
226929    ELSE
226930       NULL;
226931 -- No business flow processing for business flow method of NONE.
226932    END IF;
226933 
226934    --
226935    -- call analytical criteria
226936    --
226937    
226938    --
226939    -- call description
226940    --
226941    
226942 xla_ae_lines_pkg.SetLineDescription(
226943    p_ae_header_id => l_ae_header_id
226944   ,p_description  => Description_1 (
226945      p_application_id         => p_application_id
226946    , p_ae_header_id           => l_ae_header_id 
226947 , p_source_1 => p_source_1
226948 , p_source_2 => p_source_2
226949 , p_source_3 => p_source_3
226950 , p_source_4 => p_source_4
226951 , p_source_5 => p_source_5
226952    )
226953 );
226954 
226955 
226956    --
226957    -- call ADRs
226958    -- Bug 4922099
226959    --
226960    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
226961         (NVL(l_actual_upg_option, 'N') = 'O') OR
226962         (NVL(l_enc_upg_option, 'N') = 'O')
226963       )
226964    THEN
226965    NULL;
226966    --
226967    --
226968    
226969   l_ccid := AcctDerRule_19(
226970            p_application_id           => p_application_id
226971          , p_ae_header_id             => l_ae_header_id 
226972 , p_source_34 => p_source_34
226973          , x_transaction_coa_id       => l_adr_transaction_coa_id
226974          , x_accounting_coa_id        => l_adr_accounting_coa_id
226975          , x_value_type_code          => l_adr_value_type_code
226976          , p_side                     => 'NA'
226977    );
226978 
226979    xla_ae_lines_pkg.set_ccid(
226980     p_code_combination_id          => l_ccid
226981   , p_value_type_code              => l_adr_value_type_code
226982   , p_transaction_coa_id           => l_adr_transaction_coa_id
226983   , p_accounting_coa_id            => l_adr_accounting_coa_id
226984   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
226985   , p_adr_type_code                => 'S'
226986   , p_component_type               => l_component_type
226987   , p_component_code               => l_component_code
226988   , p_component_type_code          => l_component_type_code
226989   , p_component_appl_id            => l_component_appl_id
226990   , p_amb_context_code             => l_amb_context_code
226991   , p_side                         => 'NA'
226992   );
226993 
226994 
226995    --
226996    --
226997    END IF;
226998    --
226999    -- Bug 4922099
227000    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
227001           (NVL(l_enc_upg_option, 'N') = 'O')
227002         ) AND
227003         (l_bflow_method_code = 'PRIOR_ENTRY')
227004       )
227005    THEN
227006       IF
227007       --
227008       1 = 2
227009       --
227010       THEN
227011       xla_accounting_err_pkg.build_message
227012                                     (p_appli_s_name            => 'XLA'
227013                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
227014                                     ,p_token_1                 => 'LINE_NUMBER'
227015                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
227016                                     ,p_token_2                 => 'LINE_TYPE_NAME'
227017                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
227018                                                                              l_component_type
227019                                                                             ,l_component_code
227020                                                                             ,l_component_type_code
227021                                                                             ,l_component_appl_id
227022                                                                             ,l_amb_context_code
227023                                                                             ,l_entity_code
227024                                                                             ,l_event_class_code
227025                                                                            )
227026                                     ,p_token_3                 => 'OWNER'
227027                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
227028                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
227029                                                                           ,p_lookup_code    => l_component_type_code
227030                                                                          )
227031                                     ,p_token_4                 => 'PRODUCT_NAME'
227032                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
227033                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
227034                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
227035                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
227036                                     ,p_ae_header_id            =>  NULL
227037                                        );
227038 
227039         IF (C_LEVEL_ERROR>= g_log_level) THEN
227040                  trace
227041                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
227042                       ,p_level    => C_LEVEL_ERROR
227043                       ,p_module   => l_log_module);
227044         END IF;
227045       END IF;
227046    END IF;
227047    --
227048    --
227049    ------------------------------------------------------------------------------------------------
227050    -- 4219869 Business Flow
227051    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
227052    -- Prior Entry.  Currently, the following code is always generated.
227053    ------------------------------------------------------------------------------------------------
227054    XLA_AE_LINES_PKG.ValidateCurrentLine;
227055 
227056    ------------------------------------------------------------------------------------
227057    -- 4219869 Business Flow
227058    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
227059    ------------------------------------------------------------------------------------
227060    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
227061 
227062    ----------------------------------------------------------------------------------
227063    -- 4219869 Business Flow
227064    -- Update journal entry status -- Need to generate this within IF <condition>
227065    ----------------------------------------------------------------------------------
227066    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
227067          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
227068          ,p_balance_type_code => l_balance_type_code
227069          );
227070 
227071    -------------------------------------------------------------------------------------------
227072    -- 4262811 - Generate the Accrual Reversal lines
227073    -------------------------------------------------------------------------------------------
227074    BEGIN
227075       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
227076                               (g_array_event(p_event_id).array_value_num('header_index'));
227077       IF l_acc_rev_flag IS NULL THEN
227078          l_acc_rev_flag := 'N';
227079       END IF;
227080    EXCEPTION
227081       WHEN OTHERS THEN
227082          l_acc_rev_flag := 'N';
227083    END;
227084    --
227085    IF (l_acc_rev_flag = 'Y') THEN
227086 
227087        -- 4645092  ------------------------------------------------------------------------------
227088        -- To allow MPA report to determine if it should generate report process
227089        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
227090        ------------------------------------------------------------------------------------------
227091 
227092        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
227093        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
227094    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
227095    -- call ADRs
227096    -- Bug 4922099
227097    --
227098    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
227099         (NVL(l_actual_upg_option, 'N') = 'O') OR
227100         (NVL(l_enc_upg_option, 'N') = 'O')
227101       )
227102    THEN
227103    NULL;
227104    --
227105    --
227106    
227107   l_ccid := AcctDerRule_19(
227108            p_application_id           => p_application_id
227109          , p_ae_header_id             => l_ae_header_id 
227110 , p_source_34 => p_source_34
227111          , x_transaction_coa_id       => l_adr_transaction_coa_id
227112          , x_accounting_coa_id        => l_adr_accounting_coa_id
227113          , x_value_type_code          => l_adr_value_type_code
227114          , p_side                     => 'NA'
227115    );
227116 
227117    xla_ae_lines_pkg.set_ccid(
227118     p_code_combination_id          => l_ccid
227119   , p_value_type_code              => l_adr_value_type_code
227120   , p_transaction_coa_id           => l_adr_transaction_coa_id
227121   , p_accounting_coa_id            => l_adr_accounting_coa_id
227122   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
227123   , p_adr_type_code                => 'S'
227124   , p_component_type               => l_component_type
227125   , p_component_code               => l_component_code
227126   , p_component_type_code          => l_component_type_code
227127   , p_component_appl_id            => l_component_appl_id
227128   , p_amb_context_code             => l_amb_context_code
227129   , p_side                         => 'NA'
227130   );
227131 
227132 
227133    --
227134    --
227135    END IF;
227136 
227137        --
227138        -- Update the line information that should be overwritten
227139        --
227140        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
227141                                          p_header_num   => 1);
227142        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
227143 
227144        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
227145 
227146        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
227147           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
227148        END IF;
227149 
227150       --
227151       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
227152       --
227153       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
227154           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
227155       ELSE
227156           ---------------------------------------------------------------------------------------------------
227157           -- 4262811a Switch Sign
227158           ---------------------------------------------------------------------------------------------------
227159           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
227160           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
227161                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
227162           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
227163                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
227164           -- 5132302
227165           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
227166                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
227167 
227168       END IF;
227169 
227170       -- 4955764
227171       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
227172       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
227173 
227174 
227175       XLA_AE_LINES_PKG.ValidateCurrentLine;
227176       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
227177 
227178       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
227179                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
227180                ,p_balance_type_code => l_balance_type_code);
227181 
227182    END IF;
227183 
227184    -----------------------------------------------------------------------------------------
227185    -- 4262811 Multiperiod Accounting
227186    -----------------------------------------------------------------------------------------
227187      -- No MPA option is assigned.
227188 
227189 
227190 END IF;
227191 END IF;
227192 --
227193 
227194 --
227195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
227196    trace
227197       (p_msg      => 'END of AcctLineType_411'
227198       ,p_level    => C_LEVEL_PROCEDURE
227199       ,p_module   => l_log_module);
227200 END IF;
227201 --
227202 EXCEPTION
227203   WHEN xla_exceptions_pkg.application_exception THEN
227204       RAISE;
227205   WHEN OTHERS THEN
227206        xla_exceptions_pkg.raise_message
227207            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_411');
227208 END AcctLineType_411;
227209 --
227210 
227211 ---------------------------------------
227212 --
227213 -- PRIVATE FUNCTION
227214 --         AcctLineType_412
227215 --
227216 ---------------------------------------
227217 PROCEDURE AcctLineType_412 (
227218   p_application_id        IN NUMBER
227219  ,p_event_id              IN NUMBER
227220  ,p_calculate_acctd_flag  IN VARCHAR2
227221  ,p_calculate_g_l_flag    IN VARCHAR2
227222  ,p_actual_flag           IN OUT VARCHAR2
227223  ,p_balance_type_code     OUT VARCHAR2
227224  ,p_gain_or_loss_ref      OUT VARCHAR2
227225  
227226 --TRANSACTION_ID
227227  , p_source_1            IN NUMBER
227228 --Item Concatenated Segments
227229  , p_source_2            IN VARCHAR2
227230 --Transaction Quantity
227231  , p_source_3            IN NUMBER
227232 --Transaction Unit of Measure Code
227233  , p_source_4            IN VARCHAR2
227234 --Inventory Transaction Type Description
227235  , p_source_5            IN VARCHAR2
227236 --Product Line Accounting Category Expense Account
227237  , p_source_24            IN NUMBER
227238 --Applied to Application ID
227239  , p_source_79            IN NUMBER
227240 --Applied to Distribution Link Type
227241  , p_source_80            IN VARCHAR2
227242 --Applied to Entity Code
227243  , p_source_81            IN VARCHAR2
227244 --Applied To Purchase Document Identifier
227245  , p_source_83            IN NUMBER
227246 --DISTRIBUTION_IDENTIFIER
227247  , p_source_84            IN NUMBER
227248 --Distribution Type
227249  , p_source_85            IN VARCHAR2
227250  , p_source_85_meaning    IN VARCHAR2
227251 --PO Budget Account
227252  , p_source_86            IN NUMBER
227253 --Encumbrance Reversal Amount Entered
227254  , p_source_87            IN NUMBER
227255 --Entered Currency Code
227256  , p_source_88            IN VARCHAR2
227257 --Transaction Encumbrance Reversal Amount
227258  , p_source_89            IN NUMBER
227259 --Entered Amount
227260  , p_source_91            IN NUMBER
227261 --Currency Conversion Date
227262  , p_source_92            IN DATE
227263 --Currency Conversion Rate
227264  , p_source_93            IN NUMBER
227265 --Currency Conversion Type
227266  , p_source_94            IN VARCHAR2
227267 --Accounted Amount
227268  , p_source_95            IN NUMBER
227269 --Purchasing Encumbrance Type Identifier
227270  , p_source_96            IN NUMBER
227271 --Accounting Line Type
227272  , p_source_97            IN NUMBER
227273 --Costing Encumbrance Upgrade Option
227274  , p_source_100            IN VARCHAR2
227275 --TXN_PO_DISTRIBUTION_ID
227276  , p_source_101            IN NUMBER
227277 --Subinventory Type Indicator
227278  , p_source_110            IN VARCHAR2
227279  , p_source_110_meaning    IN VARCHAR2
227280 )
227281 IS
227282 
227283 l_component_type              VARCHAR2(80);
227284 l_component_code              VARCHAR2(30);
227285 l_component_type_code         VARCHAR2(1);
227286 l_component_appl_id           INTEGER;
227287 l_amb_context_code            VARCHAR2(30);
227288 l_entity_code                 VARCHAR2(30);
227289 l_event_class_code            VARCHAR2(30);
227290 l_ae_header_id                NUMBER;
227291 l_event_type_code             VARCHAR2(30);
227292 l_line_definition_code        VARCHAR2(30);
227293 l_line_definition_owner_code  VARCHAR2(1);
227294 --
227295 -- adr variables
227296 l_segment                     VARCHAR2(30);
227297 l_ccid                        NUMBER;
227298 l_adr_transaction_coa_id      NUMBER;
227299 l_adr_accounting_coa_id       NUMBER;
227300 l_adr_flexfield_segment_code  VARCHAR2(30);
227301 l_adr_flex_value_set_id       NUMBER;
227302 l_adr_value_type_code         VARCHAR2(30);
227303 l_adr_value_combination_id    NUMBER;
227304 l_adr_value_segment_code      VARCHAR2(30);
227305 
227306 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
227307 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
227308 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
227309 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
227310 
227311 -- 4262811 Variables ------------------------------------------------------------------------------------------
227312 l_entered_amt_idx             NUMBER;
227313 l_accted_amt_idx              NUMBER;
227314 l_acc_rev_flag                VARCHAR2(1);
227315 l_accrual_line_num            NUMBER;
227316 l_tmp_amt                     NUMBER;
227317 l_acc_rev_natural_side_code   VARCHAR2(1);
227318 
227319 l_num_entries                 NUMBER;
227320 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
227321 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
227322 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
227323 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
227324 l_recog_line_1                NUMBER;
227325 l_recog_line_2                NUMBER;
227326 
227327 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
227328 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
227329 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
227330 
227331 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
227332 
227333 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
227334 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
227335 
227336 ---------------------------------------------------------------------------------------------------------------
227337 
227338 
227339 --
227340 -- bulk performance
227341 --
227342 l_balance_type_code           VARCHAR2(1);
227343 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
227344 l_log_module                  VARCHAR2(240);
227345 
227346 --
227347 -- Upgrade strategy
227348 --
227349 l_actual_upg_option           VARCHAR2(1);
227350 l_enc_upg_option           VARCHAR2(1);
227351 
227352 --
227353 BEGIN
227354 --
227355 IF g_log_enabled THEN
227356       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_412';
227357 END IF;
227358 --
227359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
227360 
227361       trace
227362          (p_msg      => 'BEGIN of AcctLineType_412'
227363          ,p_level    => C_LEVEL_PROCEDURE
227364          ,p_module   => l_log_module);
227365 
227366 END IF;
227367 --
227368 l_component_type             := 'AMB_JLT';
227369 l_component_code             := 'PI_EXPENSE';
227370 l_component_type_code        := 'S';
227371 l_component_appl_id          :=  707;
227372 l_amb_context_code           := 'DEFAULT';
227373 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
227374 l_event_class_code           := 'PURCHASE_ORDER';
227375 l_event_type_code            := 'PO_DEL_ADJ';
227376 l_line_definition_owner_code := 'S';
227377 l_line_definition_code       := 'PI_PO_DEL_ADJ';
227378 --
227379 l_balance_type_code          := 'A';
227380 l_segment                     := NULL;
227381 l_ccid                        := NULL;
227382 l_adr_transaction_coa_id      := NULL;
227383 l_adr_accounting_coa_id       := NULL;
227384 l_adr_flexfield_segment_code  := NULL;
227385 l_adr_flex_value_set_id       := NULL;
227386 l_adr_value_type_code         := NULL;
227387 l_adr_value_combination_id    := NULL;
227388 l_adr_value_segment_code      := NULL;
227389 
227390 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
227391 l_bflow_class_code           := '';    -- 4219869 Business Flow
227392 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
227393 l_budgetary_control_flag     := 'N';
227394 
227395 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
227396 l_bflow_applied_to_amt       := NULL; -- 5132302
227397 l_entered_amt_idx            := NULL;          -- 4262811
227398 l_accted_amt_idx             := NULL;          -- 4262811
227399 l_acc_rev_flag               := NULL;          -- 4262811
227400 l_accrual_line_num           := NULL;          -- 4262811
227401 l_tmp_amt                    := NULL;          -- 4262811
227402 --
227403  
227404 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
227405     l_balance_type_code <> 'B' THEN
227406 IF (NVL(p_source_97,9E125) =  5 AND 
227407 p_source_110 IS NOT NULL AND 
227408 NVL(p_source_110,'
227409 ') =  'Y')
227410  THEN 
227411 
227412    --
227413    XLA_AE_LINES_PKG.SetNewLine;
227414 
227415    p_balance_type_code          := l_balance_type_code;
227416    -- set the flag so later we will know whether the gain loss line needs to be created
227417    
227418    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
227419      p_actual_flag :='A';
227420    END IF;
227421 
227422    --
227423    -- bulk performance
227424    --
227425    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
227426                                       p_header_num   => 0); -- 4262811
227427    --
227428    -- set accounting line options
227429    --
227430    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
227431            p_natural_side_code          => 'C'
227432          , p_gain_or_loss_flag          => 'N'
227433          , p_gl_transfer_mode_code      => 'S'
227434          , p_acct_entry_type_code       => 'A'
227435          , p_switch_side_flag           => 'Y'
227436          , p_merge_duplicate_code       => 'N'
227437          );
227438    --
227439    l_acc_rev_natural_side_code := 'D';  -- 4262811
227440    -- 
227441    --
227442    -- set accounting line type info
227443    --
227444    xla_ae_lines_pkg.SetAcctLineType
227445       (p_component_type             => l_component_type
227446       ,p_event_type_code            => l_event_type_code
227447       ,p_line_definition_owner_code => l_line_definition_owner_code
227448       ,p_line_definition_code       => l_line_definition_code
227449       ,p_accounting_line_code       => l_component_code
227450       ,p_accounting_line_type_code  => l_component_type_code
227451       ,p_accounting_line_appl_id    => l_component_appl_id
227452       ,p_amb_context_code           => l_amb_context_code
227453       ,p_entity_code                => l_entity_code
227454       ,p_event_class_code           => l_event_class_code);
227455    --
227456    -- set accounting class
227457    --
227458    xla_ae_lines_pkg.SetAcctClass(
227459            p_accounting_class_code  => 'EXPENSE'
227460          , p_ae_header_id           => l_ae_header_id
227461          );
227462 
227463    --
227464    -- set rounding class
227465    --
227466    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
227467                       'EXPENSE';
227468 
227469    --
227470    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
227471    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
227472    --
227473    -- bulk performance
227474    --
227475    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
227476 
227477    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
227478       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
227479 
227480    -- 4955764
227481    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
227482       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
227483 
227484    -- 4458381 Public Sector Enh
227485    
227486    --
227487    -- set accounting attributes for the line type
227488    --
227489    l_entered_amt_idx := 17;
227490    l_accted_amt_idx  := 22;
227491    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
227492    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
227493    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
227494    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
227495    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
227496    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
227497    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
227498    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
227499    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
227500    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
227501    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
227502    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
227503    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
227504    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
227505    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
227506    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
227507    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
227508    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
227509    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
227510    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
227511    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
227512    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
227513    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
227514    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
227515    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
227516    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
227517    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
227518    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
227519    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
227520    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
227521    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
227522    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
227523    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
227524    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
227525    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
227526    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
227527    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
227528    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
227529    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
227530    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
227531    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
227532    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
227533    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
227534    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
227535    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
227536    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
227537    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
227538    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
227539    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
227540 
227541    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
227542    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
227543 
227544    ---------------------------------------------------------------------------------------------------------------
227545    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
227546    ---------------------------------------------------------------------------------------------------------------
227547    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
227548 
227549    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
227550    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
227551 
227552    IF xla_accounting_cache_pkg.GetValueChar
227553          (p_source_code         => 'LEDGER_CATEGORY_CODE'
227554          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
227555    AND l_bflow_method_code = 'PRIOR_ENTRY'
227556 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
227557    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
227558          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
227559        )
227560    THEN
227561          xla_ae_lines_pkg.BflowUpgEntry
227562            (p_business_method_code    => l_bflow_method_code
227563            ,p_business_class_code     => l_bflow_class_code
227564            ,p_balance_type            => l_balance_type_code);
227565    ELSE
227566       NULL;
227567 -- No business flow processing for business flow method of NONE.
227568    END IF;
227569 
227570    --
227571    -- call analytical criteria
227572    --
227573    
227574    --
227575    -- call description
227576    --
227577    
227578 xla_ae_lines_pkg.SetLineDescription(
227579    p_ae_header_id => l_ae_header_id
227580   ,p_description  => Description_1 (
227581      p_application_id         => p_application_id
227582    , p_ae_header_id           => l_ae_header_id 
227583 , p_source_1 => p_source_1
227584 , p_source_2 => p_source_2
227585 , p_source_3 => p_source_3
227586 , p_source_4 => p_source_4
227587 , p_source_5 => p_source_5
227588    )
227589 );
227590 
227591 
227592    --
227593    -- call ADRs
227594    -- Bug 4922099
227595    --
227596    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
227597         (NVL(l_actual_upg_option, 'N') = 'O') OR
227598         (NVL(l_enc_upg_option, 'N') = 'O')
227599       )
227600    THEN
227601    NULL;
227602    --
227603    --
227604    
227605   l_ccid := AcctDerRule_13(
227606            p_application_id           => p_application_id
227607          , p_ae_header_id             => l_ae_header_id 
227608 , p_source_24 => p_source_24
227609          , x_transaction_coa_id       => l_adr_transaction_coa_id
227610          , x_accounting_coa_id        => l_adr_accounting_coa_id
227611          , x_value_type_code          => l_adr_value_type_code
227612          , p_side                     => 'NA'
227613    );
227614 
227615    xla_ae_lines_pkg.set_ccid(
227616     p_code_combination_id          => l_ccid
227617   , p_value_type_code              => l_adr_value_type_code
227618   , p_transaction_coa_id           => l_adr_transaction_coa_id
227619   , p_accounting_coa_id            => l_adr_accounting_coa_id
227620   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
227621   , p_adr_type_code                => 'S'
227622   , p_component_type               => l_component_type
227623   , p_component_code               => l_component_code
227624   , p_component_type_code          => l_component_type_code
227625   , p_component_appl_id            => l_component_appl_id
227626   , p_amb_context_code             => l_amb_context_code
227627   , p_side                         => 'NA'
227628   );
227629 
227630 
227631    --
227632    --
227633    END IF;
227634    --
227635    -- Bug 4922099
227636    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
227637           (NVL(l_enc_upg_option, 'N') = 'O')
227638         ) AND
227639         (l_bflow_method_code = 'PRIOR_ENTRY')
227640       )
227641    THEN
227642       IF
227643       --
227644       1 = 2
227645       --
227646       THEN
227647       xla_accounting_err_pkg.build_message
227648                                     (p_appli_s_name            => 'XLA'
227649                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
227650                                     ,p_token_1                 => 'LINE_NUMBER'
227651                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
227652                                     ,p_token_2                 => 'LINE_TYPE_NAME'
227653                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
227654                                                                              l_component_type
227655                                                                             ,l_component_code
227656                                                                             ,l_component_type_code
227657                                                                             ,l_component_appl_id
227658                                                                             ,l_amb_context_code
227659                                                                             ,l_entity_code
227660                                                                             ,l_event_class_code
227661                                                                            )
227662                                     ,p_token_3                 => 'OWNER'
227663                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
227664                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
227665                                                                           ,p_lookup_code    => l_component_type_code
227666                                                                          )
227667                                     ,p_token_4                 => 'PRODUCT_NAME'
227668                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
227669                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
227670                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
227671                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
227672                                     ,p_ae_header_id            =>  NULL
227673                                        );
227674 
227675         IF (C_LEVEL_ERROR>= g_log_level) THEN
227676                  trace
227677                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
227678                       ,p_level    => C_LEVEL_ERROR
227679                       ,p_module   => l_log_module);
227680         END IF;
227681       END IF;
227682    END IF;
227683    --
227684    --
227685    ------------------------------------------------------------------------------------------------
227686    -- 4219869 Business Flow
227687    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
227688    -- Prior Entry.  Currently, the following code is always generated.
227689    ------------------------------------------------------------------------------------------------
227690    XLA_AE_LINES_PKG.ValidateCurrentLine;
227691 
227692    ------------------------------------------------------------------------------------
227693    -- 4219869 Business Flow
227694    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
227695    ------------------------------------------------------------------------------------
227696    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
227697 
227698    ----------------------------------------------------------------------------------
227699    -- 4219869 Business Flow
227700    -- Update journal entry status -- Need to generate this within IF <condition>
227701    ----------------------------------------------------------------------------------
227702    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
227703          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
227704          ,p_balance_type_code => l_balance_type_code
227705          );
227706 
227707    -------------------------------------------------------------------------------------------
227708    -- 4262811 - Generate the Accrual Reversal lines
227709    -------------------------------------------------------------------------------------------
227710    BEGIN
227711       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
227712                               (g_array_event(p_event_id).array_value_num('header_index'));
227713       IF l_acc_rev_flag IS NULL THEN
227714          l_acc_rev_flag := 'N';
227715       END IF;
227716    EXCEPTION
227717       WHEN OTHERS THEN
227718          l_acc_rev_flag := 'N';
227719    END;
227720    --
227721    IF (l_acc_rev_flag = 'Y') THEN
227722 
227723        -- 4645092  ------------------------------------------------------------------------------
227724        -- To allow MPA report to determine if it should generate report process
227725        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
227726        ------------------------------------------------------------------------------------------
227727 
227728        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
227729        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
227730    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
227731    -- call ADRs
227732    -- Bug 4922099
227733    --
227734    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
227735         (NVL(l_actual_upg_option, 'N') = 'O') OR
227736         (NVL(l_enc_upg_option, 'N') = 'O')
227737       )
227738    THEN
227739    NULL;
227740    --
227741    --
227742    
227743   l_ccid := AcctDerRule_13(
227744            p_application_id           => p_application_id
227745          , p_ae_header_id             => l_ae_header_id 
227746 , p_source_24 => p_source_24
227747          , x_transaction_coa_id       => l_adr_transaction_coa_id
227748          , x_accounting_coa_id        => l_adr_accounting_coa_id
227749          , x_value_type_code          => l_adr_value_type_code
227750          , p_side                     => 'NA'
227751    );
227752 
227753    xla_ae_lines_pkg.set_ccid(
227754     p_code_combination_id          => l_ccid
227755   , p_value_type_code              => l_adr_value_type_code
227756   , p_transaction_coa_id           => l_adr_transaction_coa_id
227757   , p_accounting_coa_id            => l_adr_accounting_coa_id
227758   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
227759   , p_adr_type_code                => 'S'
227760   , p_component_type               => l_component_type
227761   , p_component_code               => l_component_code
227762   , p_component_type_code          => l_component_type_code
227763   , p_component_appl_id            => l_component_appl_id
227764   , p_amb_context_code             => l_amb_context_code
227765   , p_side                         => 'NA'
227766   );
227767 
227768 
227769    --
227770    --
227771    END IF;
227772 
227773        --
227774        -- Update the line information that should be overwritten
227775        --
227776        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
227777                                          p_header_num   => 1);
227778        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
227779 
227780        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
227781 
227782        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
227783           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
227784        END IF;
227785 
227786       --
227787       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
227788       --
227789       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
227790           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
227791       ELSE
227792           ---------------------------------------------------------------------------------------------------
227793           -- 4262811a Switch Sign
227794           ---------------------------------------------------------------------------------------------------
227795           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
227796           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
227797                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
227798           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
227799                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
227800           -- 5132302
227801           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
227802                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
227803 
227804       END IF;
227805 
227806       -- 4955764
227807       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
227808       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
227809 
227810 
227811       XLA_AE_LINES_PKG.ValidateCurrentLine;
227812       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
227813 
227814       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
227815                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
227816                ,p_balance_type_code => l_balance_type_code);
227817 
227818    END IF;
227819 
227820    -----------------------------------------------------------------------------------------
227821    -- 4262811 Multiperiod Accounting
227822    -----------------------------------------------------------------------------------------
227823      -- No MPA option is assigned.
227824 
227825 
227826 END IF;
227827 END IF;
227828 --
227829 
227830 --
227831 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
227832    trace
227833       (p_msg      => 'END of AcctLineType_412'
227834       ,p_level    => C_LEVEL_PROCEDURE
227835       ,p_module   => l_log_module);
227836 END IF;
227837 --
227838 EXCEPTION
227839   WHEN xla_exceptions_pkg.application_exception THEN
227840       RAISE;
227841   WHEN OTHERS THEN
227842        xla_exceptions_pkg.raise_message
227843            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_412');
227844 END AcctLineType_412;
227845 --
227846 
227847 ---------------------------------------
227848 --
227849 -- PRIVATE FUNCTION
227850 --         AcctLineType_413
227851 --
227852 ---------------------------------------
227853 PROCEDURE AcctLineType_413 (
227854   p_application_id        IN NUMBER
227855  ,p_event_id              IN NUMBER
227856  ,p_calculate_acctd_flag  IN VARCHAR2
227857  ,p_calculate_g_l_flag    IN VARCHAR2
227858  ,p_actual_flag           IN OUT VARCHAR2
227859  ,p_balance_type_code     OUT VARCHAR2
227860  ,p_gain_or_loss_ref      OUT VARCHAR2
227861  
227862 --TRANSACTION_ID
227863  , p_source_1            IN NUMBER
227864 --Transaction Unit of Measure Code
227865  , p_source_4            IN VARCHAR2
227866 --Primary Quantity of the Transaction
227867  , p_source_6            IN NUMBER
227868 --WIP Transaction Type
227869  , p_source_7            IN NUMBER
227870  , p_source_7_meaning    IN VARCHAR2
227871 --Inventory Item Expense Account
227872  , p_source_53            IN NUMBER
227873 --DISTRIBUTION_IDENTIFIER
227874  , p_source_84            IN NUMBER
227875 --Distribution Type
227876  , p_source_85            IN VARCHAR2
227877  , p_source_85_meaning    IN VARCHAR2
227878 --Entered Currency Code
227879  , p_source_88            IN VARCHAR2
227880 --Entered Amount
227881  , p_source_91            IN NUMBER
227882 --Currency Conversion Date
227883  , p_source_92            IN DATE
227884 --Currency Conversion Rate
227885  , p_source_93            IN NUMBER
227886 --Accounted Amount
227887  , p_source_95            IN NUMBER
227888 --Accounting Line Type
227889  , p_source_97            IN NUMBER
227890 )
227891 IS
227892 
227893 l_component_type              VARCHAR2(80);
227894 l_component_code              VARCHAR2(30);
227895 l_component_type_code         VARCHAR2(1);
227896 l_component_appl_id           INTEGER;
227897 l_amb_context_code            VARCHAR2(30);
227898 l_entity_code                 VARCHAR2(30);
227899 l_event_class_code            VARCHAR2(30);
227900 l_ae_header_id                NUMBER;
227901 l_event_type_code             VARCHAR2(30);
227902 l_line_definition_code        VARCHAR2(30);
227903 l_line_definition_owner_code  VARCHAR2(1);
227904 --
227905 -- adr variables
227906 l_segment                     VARCHAR2(30);
227907 l_ccid                        NUMBER;
227908 l_adr_transaction_coa_id      NUMBER;
227909 l_adr_accounting_coa_id       NUMBER;
227910 l_adr_flexfield_segment_code  VARCHAR2(30);
227911 l_adr_flex_value_set_id       NUMBER;
227912 l_adr_value_type_code         VARCHAR2(30);
227913 l_adr_value_combination_id    NUMBER;
227914 l_adr_value_segment_code      VARCHAR2(30);
227915 
227916 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
227917 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
227918 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
227919 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
227920 
227921 -- 4262811 Variables ------------------------------------------------------------------------------------------
227922 l_entered_amt_idx             NUMBER;
227923 l_accted_amt_idx              NUMBER;
227924 l_acc_rev_flag                VARCHAR2(1);
227925 l_accrual_line_num            NUMBER;
227926 l_tmp_amt                     NUMBER;
227927 l_acc_rev_natural_side_code   VARCHAR2(1);
227928 
227929 l_num_entries                 NUMBER;
227930 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
227931 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
227932 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
227933 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
227934 l_recog_line_1                NUMBER;
227935 l_recog_line_2                NUMBER;
227936 
227937 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
227938 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
227939 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
227940 
227941 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
227942 
227943 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
227944 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
227945 
227946 ---------------------------------------------------------------------------------------------------------------
227947 
227948 
227949 --
227950 -- bulk performance
227951 --
227952 l_balance_type_code           VARCHAR2(1);
227953 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
227954 l_log_module                  VARCHAR2(240);
227955 
227956 --
227957 -- Upgrade strategy
227958 --
227959 l_actual_upg_option           VARCHAR2(1);
227960 l_enc_upg_option           VARCHAR2(1);
227961 
227962 --
227963 BEGIN
227964 --
227965 IF g_log_enabled THEN
227966       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_413';
227967 END IF;
227968 --
227969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
227970 
227971       trace
227972          (p_msg      => 'BEGIN of AcctLineType_413'
227973          ,p_level    => C_LEVEL_PROCEDURE
227974          ,p_module   => l_log_module);
227975 
227976 END IF;
227977 --
227978 l_component_type             := 'AMB_JLT';
227979 l_component_code             := 'PI_EXPENSE';
227980 l_component_type_code        := 'S';
227981 l_component_appl_id          :=  707;
227982 l_amb_context_code           := 'DEFAULT';
227983 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
227984 l_event_class_code           := 'OSP';
227985 l_event_type_code            := 'OSP';
227986 l_line_definition_owner_code := 'S';
227987 l_line_definition_code       := 'PI_OSP';
227988 --
227989 l_balance_type_code          := 'A';
227990 l_segment                     := NULL;
227991 l_ccid                        := NULL;
227992 l_adr_transaction_coa_id      := NULL;
227993 l_adr_accounting_coa_id       := NULL;
227994 l_adr_flexfield_segment_code  := NULL;
227995 l_adr_flex_value_set_id       := NULL;
227996 l_adr_value_type_code         := NULL;
227997 l_adr_value_combination_id    := NULL;
227998 l_adr_value_segment_code      := NULL;
227999 
228000 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
228001 l_bflow_class_code           := '';    -- 4219869 Business Flow
228002 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
228003 l_budgetary_control_flag     := 'N';
228004 
228005 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
228006 l_bflow_applied_to_amt       := NULL; -- 5132302
228007 l_entered_amt_idx            := NULL;          -- 4262811
228008 l_accted_amt_idx             := NULL;          -- 4262811
228009 l_acc_rev_flag               := NULL;          -- 4262811
228010 l_accrual_line_num           := NULL;          -- 4262811
228011 l_tmp_amt                    := NULL;          -- 4262811
228012 --
228013  
228014 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
228015     l_balance_type_code <> 'B' THEN
228016 IF NVL(p_source_97,9E125) =  7
228017  THEN 
228018 
228019    --
228020    XLA_AE_LINES_PKG.SetNewLine;
228021 
228022    p_balance_type_code          := l_balance_type_code;
228023    -- set the flag so later we will know whether the gain loss line needs to be created
228024    
228025    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
228026      p_actual_flag :='A';
228027    END IF;
228028 
228029    --
228030    -- bulk performance
228031    --
228032    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
228033                                       p_header_num   => 0); -- 4262811
228034    --
228035    -- set accounting line options
228036    --
228037    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
228038            p_natural_side_code          => 'D'
228039          , p_gain_or_loss_flag          => 'N'
228040          , p_gl_transfer_mode_code      => 'S'
228041          , p_acct_entry_type_code       => 'A'
228042          , p_switch_side_flag           => 'Y'
228043          , p_merge_duplicate_code       => 'N'
228044          );
228045    --
228046    l_acc_rev_natural_side_code := 'C';  -- 4262811
228047    -- 
228048    --
228049    -- set accounting line type info
228050    --
228051    xla_ae_lines_pkg.SetAcctLineType
228052       (p_component_type             => l_component_type
228053       ,p_event_type_code            => l_event_type_code
228054       ,p_line_definition_owner_code => l_line_definition_owner_code
228055       ,p_line_definition_code       => l_line_definition_code
228056       ,p_accounting_line_code       => l_component_code
228057       ,p_accounting_line_type_code  => l_component_type_code
228058       ,p_accounting_line_appl_id    => l_component_appl_id
228059       ,p_amb_context_code           => l_amb_context_code
228060       ,p_entity_code                => l_entity_code
228061       ,p_event_class_code           => l_event_class_code);
228062    --
228063    -- set accounting class
228064    --
228065    xla_ae_lines_pkg.SetAcctClass(
228066            p_accounting_class_code  => 'EXPENSE'
228067          , p_ae_header_id           => l_ae_header_id
228068          );
228069 
228070    --
228071    -- set rounding class
228072    --
228073    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
228074                       'EXPENSE';
228075 
228076    --
228077    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
228078    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
228079    --
228080    -- bulk performance
228081    --
228082    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
228083 
228084    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
228085       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
228086 
228087    -- 4955764
228088    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
228089       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
228090 
228091    -- 4458381 Public Sector Enh
228092    
228093    --
228094    -- set accounting attributes for the line type
228095    --
228096    l_entered_amt_idx := 3;
228097    l_accted_amt_idx  := 8;
228098    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
228099    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
228100    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
228101    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
228102    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
228103    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
228104    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
228105    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
228106    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
228107    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
228108    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
228109    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
228110    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
228111    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
228112    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
228113    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
228114    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
228115 
228116    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
228117    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
228118 
228119    ---------------------------------------------------------------------------------------------------------------
228120    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
228121    ---------------------------------------------------------------------------------------------------------------
228122    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
228123 
228124    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
228125    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
228126 
228127    IF xla_accounting_cache_pkg.GetValueChar
228128          (p_source_code         => 'LEDGER_CATEGORY_CODE'
228129          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
228130    AND l_bflow_method_code = 'PRIOR_ENTRY'
228131 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
228132    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
228133          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
228134        )
228135    THEN
228136          xla_ae_lines_pkg.BflowUpgEntry
228137            (p_business_method_code    => l_bflow_method_code
228138            ,p_business_class_code     => l_bflow_class_code
228139            ,p_balance_type            => l_balance_type_code);
228140    ELSE
228141       NULL;
228142 -- No business flow processing for business flow method of NONE.
228143    END IF;
228144 
228145    --
228146    -- call analytical criteria
228147    --
228148    
228149    --
228150    -- call description
228151    --
228152    
228153 xla_ae_lines_pkg.SetLineDescription(
228154    p_ae_header_id => l_ae_header_id
228155   ,p_description  => Description_2 (
228156      p_application_id         => p_application_id
228157    , p_ae_header_id           => l_ae_header_id 
228158 , p_source_1 => p_source_1
228159 , p_source_4 => p_source_4
228160 , p_source_6 => p_source_6
228161 , p_source_7 => p_source_7
228162 , p_source_7_meaning => p_source_7_meaning
228163    )
228164 );
228165 
228166 
228167    --
228168    -- call ADRs
228169    -- Bug 4922099
228170    --
228171    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
228172         (NVL(l_actual_upg_option, 'N') = 'O') OR
228173         (NVL(l_enc_upg_option, 'N') = 'O')
228174       )
228175    THEN
228176    NULL;
228177    --
228178    --
228179    
228180   l_ccid := AcctDerRule_30(
228181            p_application_id           => p_application_id
228182          , p_ae_header_id             => l_ae_header_id 
228183 , p_source_53 => p_source_53
228184          , x_transaction_coa_id       => l_adr_transaction_coa_id
228185          , x_accounting_coa_id        => l_adr_accounting_coa_id
228186          , x_value_type_code          => l_adr_value_type_code
228187          , p_side                     => 'NA'
228188    );
228189 
228190    xla_ae_lines_pkg.set_ccid(
228191     p_code_combination_id          => l_ccid
228192   , p_value_type_code              => l_adr_value_type_code
228193   , p_transaction_coa_id           => l_adr_transaction_coa_id
228194   , p_accounting_coa_id            => l_adr_accounting_coa_id
228195   , p_adr_code                     => 'PI_ITEM_EXPENSE'
228196   , p_adr_type_code                => 'S'
228197   , p_component_type               => l_component_type
228198   , p_component_code               => l_component_code
228199   , p_component_type_code          => l_component_type_code
228200   , p_component_appl_id            => l_component_appl_id
228201   , p_amb_context_code             => l_amb_context_code
228202   , p_side                         => 'NA'
228203   );
228204 
228205 
228206    --
228207    --
228208    END IF;
228209    --
228210    -- Bug 4922099
228211    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
228212           (NVL(l_enc_upg_option, 'N') = 'O')
228213         ) AND
228214         (l_bflow_method_code = 'PRIOR_ENTRY')
228215       )
228216    THEN
228217       IF
228218       --
228219       1 = 2
228220       --
228221       THEN
228222       xla_accounting_err_pkg.build_message
228223                                     (p_appli_s_name            => 'XLA'
228224                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
228225                                     ,p_token_1                 => 'LINE_NUMBER'
228226                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
228227                                     ,p_token_2                 => 'LINE_TYPE_NAME'
228228                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
228229                                                                              l_component_type
228230                                                                             ,l_component_code
228231                                                                             ,l_component_type_code
228232                                                                             ,l_component_appl_id
228233                                                                             ,l_amb_context_code
228234                                                                             ,l_entity_code
228235                                                                             ,l_event_class_code
228236                                                                            )
228237                                     ,p_token_3                 => 'OWNER'
228238                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
228239                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
228240                                                                           ,p_lookup_code    => l_component_type_code
228241                                                                          )
228242                                     ,p_token_4                 => 'PRODUCT_NAME'
228243                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
228244                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
228245                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
228246                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
228247                                     ,p_ae_header_id            =>  NULL
228248                                        );
228249 
228250         IF (C_LEVEL_ERROR>= g_log_level) THEN
228251                  trace
228252                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
228253                       ,p_level    => C_LEVEL_ERROR
228254                       ,p_module   => l_log_module);
228255         END IF;
228256       END IF;
228257    END IF;
228258    --
228259    --
228260    ------------------------------------------------------------------------------------------------
228261    -- 4219869 Business Flow
228262    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
228263    -- Prior Entry.  Currently, the following code is always generated.
228264    ------------------------------------------------------------------------------------------------
228265    XLA_AE_LINES_PKG.ValidateCurrentLine;
228266 
228267    ------------------------------------------------------------------------------------
228268    -- 4219869 Business Flow
228269    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
228270    ------------------------------------------------------------------------------------
228271    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
228272 
228273    ----------------------------------------------------------------------------------
228274    -- 4219869 Business Flow
228275    -- Update journal entry status -- Need to generate this within IF <condition>
228276    ----------------------------------------------------------------------------------
228277    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
228278          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
228279          ,p_balance_type_code => l_balance_type_code
228280          );
228281 
228282    -------------------------------------------------------------------------------------------
228283    -- 4262811 - Generate the Accrual Reversal lines
228284    -------------------------------------------------------------------------------------------
228285    BEGIN
228286       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
228287                               (g_array_event(p_event_id).array_value_num('header_index'));
228288       IF l_acc_rev_flag IS NULL THEN
228289          l_acc_rev_flag := 'N';
228290       END IF;
228291    EXCEPTION
228292       WHEN OTHERS THEN
228293          l_acc_rev_flag := 'N';
228294    END;
228295    --
228296    IF (l_acc_rev_flag = 'Y') THEN
228297 
228298        -- 4645092  ------------------------------------------------------------------------------
228299        -- To allow MPA report to determine if it should generate report process
228300        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
228301        ------------------------------------------------------------------------------------------
228302 
228303        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
228304        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
228305    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
228306    -- call ADRs
228307    -- Bug 4922099
228308    --
228309    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
228310         (NVL(l_actual_upg_option, 'N') = 'O') OR
228311         (NVL(l_enc_upg_option, 'N') = 'O')
228312       )
228313    THEN
228314    NULL;
228315    --
228316    --
228317    
228318   l_ccid := AcctDerRule_30(
228319            p_application_id           => p_application_id
228320          , p_ae_header_id             => l_ae_header_id 
228321 , p_source_53 => p_source_53
228322          , x_transaction_coa_id       => l_adr_transaction_coa_id
228323          , x_accounting_coa_id        => l_adr_accounting_coa_id
228324          , x_value_type_code          => l_adr_value_type_code
228325          , p_side                     => 'NA'
228326    );
228327 
228328    xla_ae_lines_pkg.set_ccid(
228329     p_code_combination_id          => l_ccid
228330   , p_value_type_code              => l_adr_value_type_code
228331   , p_transaction_coa_id           => l_adr_transaction_coa_id
228332   , p_accounting_coa_id            => l_adr_accounting_coa_id
228333   , p_adr_code                     => 'PI_ITEM_EXPENSE'
228334   , p_adr_type_code                => 'S'
228335   , p_component_type               => l_component_type
228336   , p_component_code               => l_component_code
228337   , p_component_type_code          => l_component_type_code
228338   , p_component_appl_id            => l_component_appl_id
228339   , p_amb_context_code             => l_amb_context_code
228340   , p_side                         => 'NA'
228341   );
228342 
228343 
228344    --
228345    --
228346    END IF;
228347 
228348        --
228349        -- Update the line information that should be overwritten
228350        --
228351        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
228352                                          p_header_num   => 1);
228353        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
228354 
228355        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
228356 
228357        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
228358           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
228359        END IF;
228360 
228361       --
228362       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
228363       --
228364       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
228365           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
228366       ELSE
228367           ---------------------------------------------------------------------------------------------------
228368           -- 4262811a Switch Sign
228369           ---------------------------------------------------------------------------------------------------
228370           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
228371           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
228372                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
228373           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
228374                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
228375           -- 5132302
228376           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
228377                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
228378 
228379       END IF;
228380 
228381       -- 4955764
228382       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
228383       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
228384 
228385 
228386       XLA_AE_LINES_PKG.ValidateCurrentLine;
228387       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
228388 
228389       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
228390                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
228391                ,p_balance_type_code => l_balance_type_code);
228392 
228393    END IF;
228394 
228395    -----------------------------------------------------------------------------------------
228396    -- 4262811 Multiperiod Accounting
228397    -----------------------------------------------------------------------------------------
228398      -- No MPA option is assigned.
228399 
228400 
228401 END IF;
228402 END IF;
228403 --
228404 
228405 --
228406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
228407    trace
228408       (p_msg      => 'END of AcctLineType_413'
228409       ,p_level    => C_LEVEL_PROCEDURE
228410       ,p_module   => l_log_module);
228411 END IF;
228412 --
228413 EXCEPTION
228414   WHEN xla_exceptions_pkg.application_exception THEN
228415       RAISE;
228416   WHEN OTHERS THEN
228417        xla_exceptions_pkg.raise_message
228418            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_413');
228419 END AcctLineType_413;
228420 --
228421 
228422 ---------------------------------------
228423 --
228424 -- PRIVATE FUNCTION
228425 --         AcctLineType_414
228426 --
228427 ---------------------------------------
228428 PROCEDURE AcctLineType_414 (
228429   p_application_id        IN NUMBER
228430  ,p_event_id              IN NUMBER
228431  ,p_calculate_acctd_flag  IN VARCHAR2
228432  ,p_calculate_g_l_flag    IN VARCHAR2
228433  ,p_actual_flag           IN OUT VARCHAR2
228434  ,p_balance_type_code     OUT VARCHAR2
228435  ,p_gain_or_loss_ref      OUT VARCHAR2
228436  
228437 --Inventory Item Expense Account
228438  , p_source_53            IN NUMBER
228439 --DISTRIBUTION_IDENTIFIER
228440  , p_source_84            IN NUMBER
228441 --Distribution Type
228442  , p_source_85            IN VARCHAR2
228443  , p_source_85_meaning    IN VARCHAR2
228444 --Entered Currency Code
228445  , p_source_88            IN VARCHAR2
228446 --Entered Amount
228447  , p_source_91            IN NUMBER
228448 --Currency Conversion Date
228449  , p_source_92            IN DATE
228450 --Currency Conversion Rate
228451  , p_source_93            IN NUMBER
228452 --Accounted Amount
228453  , p_source_95            IN NUMBER
228454 --Accounting Line Type
228455  , p_source_97            IN NUMBER
228456 )
228457 IS
228458 
228459 l_component_type              VARCHAR2(80);
228460 l_component_code              VARCHAR2(30);
228461 l_component_type_code         VARCHAR2(1);
228462 l_component_appl_id           INTEGER;
228463 l_amb_context_code            VARCHAR2(30);
228464 l_entity_code                 VARCHAR2(30);
228465 l_event_class_code            VARCHAR2(30);
228466 l_ae_header_id                NUMBER;
228467 l_event_type_code             VARCHAR2(30);
228468 l_line_definition_code        VARCHAR2(30);
228469 l_line_definition_owner_code  VARCHAR2(1);
228470 --
228471 -- adr variables
228472 l_segment                     VARCHAR2(30);
228473 l_ccid                        NUMBER;
228474 l_adr_transaction_coa_id      NUMBER;
228475 l_adr_accounting_coa_id       NUMBER;
228476 l_adr_flexfield_segment_code  VARCHAR2(30);
228477 l_adr_flex_value_set_id       NUMBER;
228478 l_adr_value_type_code         VARCHAR2(30);
228479 l_adr_value_combination_id    NUMBER;
228480 l_adr_value_segment_code      VARCHAR2(30);
228481 
228482 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
228483 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
228484 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
228485 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
228486 
228487 -- 4262811 Variables ------------------------------------------------------------------------------------------
228488 l_entered_amt_idx             NUMBER;
228489 l_accted_amt_idx              NUMBER;
228490 l_acc_rev_flag                VARCHAR2(1);
228491 l_accrual_line_num            NUMBER;
228492 l_tmp_amt                     NUMBER;
228493 l_acc_rev_natural_side_code   VARCHAR2(1);
228494 
228495 l_num_entries                 NUMBER;
228496 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
228497 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
228498 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
228499 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
228500 l_recog_line_1                NUMBER;
228501 l_recog_line_2                NUMBER;
228502 
228503 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
228504 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
228505 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
228506 
228507 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
228508 
228509 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
228510 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
228511 
228512 ---------------------------------------------------------------------------------------------------------------
228513 
228514 
228515 --
228516 -- bulk performance
228517 --
228518 l_balance_type_code           VARCHAR2(1);
228519 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
228520 l_log_module                  VARCHAR2(240);
228521 
228522 --
228523 -- Upgrade strategy
228524 --
228525 l_actual_upg_option           VARCHAR2(1);
228526 l_enc_upg_option           VARCHAR2(1);
228527 
228528 --
228529 BEGIN
228530 --
228531 IF g_log_enabled THEN
228532       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_414';
228533 END IF;
228534 --
228535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
228536 
228537       trace
228538          (p_msg      => 'BEGIN of AcctLineType_414'
228539          ,p_level    => C_LEVEL_PROCEDURE
228540          ,p_module   => l_log_module);
228541 
228542 END IF;
228543 --
228544 l_component_type             := 'AMB_JLT';
228545 l_component_code             := 'PI_EXPENSE';
228546 l_component_type_code        := 'S';
228547 l_component_appl_id          :=  707;
228548 l_amb_context_code           := 'DEFAULT';
228549 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
228550 l_event_class_code           := 'OSP';
228551 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
228552 l_line_definition_owner_code := 'S';
228553 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
228554 --
228555 l_balance_type_code          := 'A';
228556 l_segment                     := NULL;
228557 l_ccid                        := NULL;
228558 l_adr_transaction_coa_id      := NULL;
228559 l_adr_accounting_coa_id       := NULL;
228560 l_adr_flexfield_segment_code  := NULL;
228561 l_adr_flex_value_set_id       := NULL;
228562 l_adr_value_type_code         := NULL;
228563 l_adr_value_combination_id    := NULL;
228564 l_adr_value_segment_code      := NULL;
228565 
228566 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
228567 l_bflow_class_code           := '';    -- 4219869 Business Flow
228568 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
228569 l_budgetary_control_flag     := 'N';
228570 
228571 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
228572 l_bflow_applied_to_amt       := NULL; -- 5132302
228573 l_entered_amt_idx            := NULL;          -- 4262811
228574 l_accted_amt_idx             := NULL;          -- 4262811
228575 l_acc_rev_flag               := NULL;          -- 4262811
228576 l_accrual_line_num           := NULL;          -- 4262811
228577 l_tmp_amt                    := NULL;          -- 4262811
228578 --
228579  
228580 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
228581     l_balance_type_code <> 'B' THEN
228582 IF NVL(p_source_97,9E125) =  7
228583  THEN 
228584 
228585    --
228586    XLA_AE_LINES_PKG.SetNewLine;
228587 
228588    p_balance_type_code          := l_balance_type_code;
228589    -- set the flag so later we will know whether the gain loss line needs to be created
228590    
228591    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
228592      p_actual_flag :='A';
228593    END IF;
228594 
228595    --
228596    -- bulk performance
228597    --
228598    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
228599                                       p_header_num   => 0); -- 4262811
228600    --
228601    -- set accounting line options
228602    --
228603    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
228604            p_natural_side_code          => 'D'
228605          , p_gain_or_loss_flag          => 'N'
228606          , p_gl_transfer_mode_code      => 'S'
228607          , p_acct_entry_type_code       => 'A'
228608          , p_switch_side_flag           => 'Y'
228609          , p_merge_duplicate_code       => 'N'
228610          );
228611    --
228612    l_acc_rev_natural_side_code := 'C';  -- 4262811
228613    -- 
228614    --
228615    -- set accounting line type info
228616    --
228617    xla_ae_lines_pkg.SetAcctLineType
228618       (p_component_type             => l_component_type
228619       ,p_event_type_code            => l_event_type_code
228620       ,p_line_definition_owner_code => l_line_definition_owner_code
228621       ,p_line_definition_code       => l_line_definition_code
228622       ,p_accounting_line_code       => l_component_code
228623       ,p_accounting_line_type_code  => l_component_type_code
228624       ,p_accounting_line_appl_id    => l_component_appl_id
228625       ,p_amb_context_code           => l_amb_context_code
228626       ,p_entity_code                => l_entity_code
228627       ,p_event_class_code           => l_event_class_code);
228628    --
228629    -- set accounting class
228630    --
228631    xla_ae_lines_pkg.SetAcctClass(
228632            p_accounting_class_code  => 'EXPENSE'
228633          , p_ae_header_id           => l_ae_header_id
228634          );
228635 
228636    --
228637    -- set rounding class
228638    --
228639    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
228640                       'EXPENSE';
228641 
228642    --
228643    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
228644    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
228645    --
228646    -- bulk performance
228647    --
228648    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
228649 
228650    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
228651       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
228652 
228653    -- 4955764
228654    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
228655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
228656 
228657    -- 4458381 Public Sector Enh
228658    
228659    --
228660    -- set accounting attributes for the line type
228661    --
228662    l_entered_amt_idx := 3;
228663    l_accted_amt_idx  := 8;
228664    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
228665    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
228666    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
228667    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
228668    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
228669    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
228670    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
228671    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
228672    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
228673    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
228674    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
228675    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
228676    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
228677    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
228678    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
228679    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
228680    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
228681 
228682    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
228683    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
228684 
228685    ---------------------------------------------------------------------------------------------------------------
228686    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
228687    ---------------------------------------------------------------------------------------------------------------
228688    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
228689 
228690    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
228691    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
228692 
228693    IF xla_accounting_cache_pkg.GetValueChar
228694          (p_source_code         => 'LEDGER_CATEGORY_CODE'
228695          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
228696    AND l_bflow_method_code = 'PRIOR_ENTRY'
228697 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
228698    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
228699          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
228700        )
228701    THEN
228702          xla_ae_lines_pkg.BflowUpgEntry
228703            (p_business_method_code    => l_bflow_method_code
228704            ,p_business_class_code     => l_bflow_class_code
228705            ,p_balance_type            => l_balance_type_code);
228706    ELSE
228707       NULL;
228708 -- No business flow processing for business flow method of NONE.
228709    END IF;
228710 
228711    --
228712    -- call analytical criteria
228713    --
228714    
228715    --
228716    -- call description
228717    --
228718    -- No description or it is inherited.
228719    --
228720    -- call ADRs
228721    -- Bug 4922099
228722    --
228723    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
228724         (NVL(l_actual_upg_option, 'N') = 'O') OR
228725         (NVL(l_enc_upg_option, 'N') = 'O')
228726       )
228727    THEN
228728    NULL;
228729    --
228730    --
228731    
228732   l_ccid := AcctDerRule_30(
228733            p_application_id           => p_application_id
228734          , p_ae_header_id             => l_ae_header_id 
228735 , p_source_53 => p_source_53
228736          , x_transaction_coa_id       => l_adr_transaction_coa_id
228737          , x_accounting_coa_id        => l_adr_accounting_coa_id
228738          , x_value_type_code          => l_adr_value_type_code
228739          , p_side                     => 'NA'
228740    );
228741 
228742    xla_ae_lines_pkg.set_ccid(
228743     p_code_combination_id          => l_ccid
228744   , p_value_type_code              => l_adr_value_type_code
228745   , p_transaction_coa_id           => l_adr_transaction_coa_id
228746   , p_accounting_coa_id            => l_adr_accounting_coa_id
228747   , p_adr_code                     => 'PI_ITEM_EXPENSE'
228748   , p_adr_type_code                => 'S'
228749   , p_component_type               => l_component_type
228750   , p_component_code               => l_component_code
228751   , p_component_type_code          => l_component_type_code
228752   , p_component_appl_id            => l_component_appl_id
228753   , p_amb_context_code             => l_amb_context_code
228754   , p_side                         => 'NA'
228755   );
228756 
228757 
228758    --
228759    --
228760    END IF;
228761    --
228762    -- Bug 4922099
228763    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
228764           (NVL(l_enc_upg_option, 'N') = 'O')
228765         ) AND
228766         (l_bflow_method_code = 'PRIOR_ENTRY')
228767       )
228768    THEN
228769       IF
228770       --
228771       1 = 2
228772       --
228773       THEN
228774       xla_accounting_err_pkg.build_message
228775                                     (p_appli_s_name            => 'XLA'
228776                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
228777                                     ,p_token_1                 => 'LINE_NUMBER'
228778                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
228779                                     ,p_token_2                 => 'LINE_TYPE_NAME'
228780                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
228781                                                                              l_component_type
228782                                                                             ,l_component_code
228783                                                                             ,l_component_type_code
228784                                                                             ,l_component_appl_id
228785                                                                             ,l_amb_context_code
228786                                                                             ,l_entity_code
228787                                                                             ,l_event_class_code
228788                                                                            )
228789                                     ,p_token_3                 => 'OWNER'
228790                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
228791                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
228792                                                                           ,p_lookup_code    => l_component_type_code
228793                                                                          )
228794                                     ,p_token_4                 => 'PRODUCT_NAME'
228795                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
228796                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
228797                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
228798                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
228799                                     ,p_ae_header_id            =>  NULL
228800                                        );
228801 
228802         IF (C_LEVEL_ERROR>= g_log_level) THEN
228803                  trace
228804                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
228805                       ,p_level    => C_LEVEL_ERROR
228806                       ,p_module   => l_log_module);
228807         END IF;
228808       END IF;
228809    END IF;
228810    --
228811    --
228812    ------------------------------------------------------------------------------------------------
228813    -- 4219869 Business Flow
228814    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
228815    -- Prior Entry.  Currently, the following code is always generated.
228816    ------------------------------------------------------------------------------------------------
228817    XLA_AE_LINES_PKG.ValidateCurrentLine;
228818 
228819    ------------------------------------------------------------------------------------
228820    -- 4219869 Business Flow
228821    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
228822    ------------------------------------------------------------------------------------
228823    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
228824 
228825    ----------------------------------------------------------------------------------
228826    -- 4219869 Business Flow
228827    -- Update journal entry status -- Need to generate this within IF <condition>
228828    ----------------------------------------------------------------------------------
228829    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
228830          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
228831          ,p_balance_type_code => l_balance_type_code
228832          );
228833 
228834    -------------------------------------------------------------------------------------------
228835    -- 4262811 - Generate the Accrual Reversal lines
228836    -------------------------------------------------------------------------------------------
228837    BEGIN
228838       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
228839                               (g_array_event(p_event_id).array_value_num('header_index'));
228840       IF l_acc_rev_flag IS NULL THEN
228841          l_acc_rev_flag := 'N';
228842       END IF;
228843    EXCEPTION
228844       WHEN OTHERS THEN
228845          l_acc_rev_flag := 'N';
228846    END;
228847    --
228848    IF (l_acc_rev_flag = 'Y') THEN
228849 
228850        -- 4645092  ------------------------------------------------------------------------------
228851        -- To allow MPA report to determine if it should generate report process
228852        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
228853        ------------------------------------------------------------------------------------------
228854 
228855        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
228856        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
228857    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
228858    -- call ADRs
228859    -- Bug 4922099
228860    --
228861    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
228862         (NVL(l_actual_upg_option, 'N') = 'O') OR
228863         (NVL(l_enc_upg_option, 'N') = 'O')
228864       )
228865    THEN
228866    NULL;
228867    --
228868    --
228869    
228870   l_ccid := AcctDerRule_30(
228871            p_application_id           => p_application_id
228872          , p_ae_header_id             => l_ae_header_id 
228873 , p_source_53 => p_source_53
228874          , x_transaction_coa_id       => l_adr_transaction_coa_id
228875          , x_accounting_coa_id        => l_adr_accounting_coa_id
228876          , x_value_type_code          => l_adr_value_type_code
228877          , p_side                     => 'NA'
228878    );
228879 
228880    xla_ae_lines_pkg.set_ccid(
228881     p_code_combination_id          => l_ccid
228882   , p_value_type_code              => l_adr_value_type_code
228883   , p_transaction_coa_id           => l_adr_transaction_coa_id
228884   , p_accounting_coa_id            => l_adr_accounting_coa_id
228885   , p_adr_code                     => 'PI_ITEM_EXPENSE'
228886   , p_adr_type_code                => 'S'
228887   , p_component_type               => l_component_type
228888   , p_component_code               => l_component_code
228889   , p_component_type_code          => l_component_type_code
228890   , p_component_appl_id            => l_component_appl_id
228891   , p_amb_context_code             => l_amb_context_code
228892   , p_side                         => 'NA'
228893   );
228894 
228895 
228896    --
228897    --
228898    END IF;
228899 
228900        --
228901        -- Update the line information that should be overwritten
228902        --
228903        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
228904                                          p_header_num   => 1);
228905        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
228906 
228907        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
228908 
228909        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
228910           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
228911        END IF;
228912 
228913       --
228914       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
228915       --
228916       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
228917           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
228918       ELSE
228919           ---------------------------------------------------------------------------------------------------
228920           -- 4262811a Switch Sign
228921           ---------------------------------------------------------------------------------------------------
228922           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
228923           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
228924                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
228925           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
228926                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
228927           -- 5132302
228928           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
228929                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
228930 
228931       END IF;
228932 
228933       -- 4955764
228934       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
228935       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
228936 
228937 
228938       XLA_AE_LINES_PKG.ValidateCurrentLine;
228939       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
228940 
228941       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
228942                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
228943                ,p_balance_type_code => l_balance_type_code);
228944 
228945    END IF;
228946 
228947    -----------------------------------------------------------------------------------------
228948    -- 4262811 Multiperiod Accounting
228949    -----------------------------------------------------------------------------------------
228950      -- No MPA option is assigned.
228951 
228952 
228953 END IF;
228954 END IF;
228955 --
228956 
228957 --
228958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
228959    trace
228960       (p_msg      => 'END of AcctLineType_414'
228961       ,p_level    => C_LEVEL_PROCEDURE
228962       ,p_module   => l_log_module);
228963 END IF;
228964 --
228965 EXCEPTION
228966   WHEN xla_exceptions_pkg.application_exception THEN
228967       RAISE;
228968   WHEN OTHERS THEN
228969        xla_exceptions_pkg.raise_message
228970            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_414');
228971 END AcctLineType_414;
228972 --
228973 
228974 ---------------------------------------
228975 --
228976 -- PRIVATE FUNCTION
228977 --         AcctLineType_415
228978 --
228979 ---------------------------------------
228980 PROCEDURE AcctLineType_415 (
228981   p_application_id        IN NUMBER
228982  ,p_event_id              IN NUMBER
228983  ,p_calculate_acctd_flag  IN VARCHAR2
228984  ,p_calculate_g_l_flag    IN VARCHAR2
228985  ,p_actual_flag           IN OUT VARCHAR2
228986  ,p_balance_type_code     OUT VARCHAR2
228987  ,p_gain_or_loss_ref      OUT VARCHAR2
228988  
228989 --TRANSACTION_ID
228990  , p_source_1            IN NUMBER
228991 --Item Concatenated Segments
228992  , p_source_2            IN VARCHAR2
228993 --Transaction Quantity
228994  , p_source_3            IN NUMBER
228995 --Transaction Unit of Measure Code
228996  , p_source_4            IN VARCHAR2
228997 --Inventory Transaction Type Description
228998  , p_source_5            IN VARCHAR2
228999 --Cost Element Name
229000  , p_source_15            IN NUMBER
229001 --Product Line Accounting Category Expense Account
229002  , p_source_24            IN NUMBER
229003 --DISTRIBUTION_IDENTIFIER
229004  , p_source_84            IN NUMBER
229005 --Distribution Type
229006  , p_source_85            IN VARCHAR2
229007  , p_source_85_meaning    IN VARCHAR2
229008 --Entered Currency Code
229009  , p_source_88            IN VARCHAR2
229010 --Entered Amount
229011  , p_source_91            IN NUMBER
229012 --Currency Conversion Date
229013  , p_source_92            IN DATE
229014 --Currency Conversion Rate
229015  , p_source_93            IN NUMBER
229016 --Currency Conversion Type
229017  , p_source_94            IN VARCHAR2
229018 --Accounted Amount
229019  , p_source_95            IN NUMBER
229020 --Accounting Line Type
229021  , p_source_97            IN NUMBER
229022 )
229023 IS
229024 
229025 l_component_type              VARCHAR2(80);
229026 l_component_code              VARCHAR2(30);
229027 l_component_type_code         VARCHAR2(1);
229028 l_component_appl_id           INTEGER;
229029 l_amb_context_code            VARCHAR2(30);
229030 l_entity_code                 VARCHAR2(30);
229031 l_event_class_code            VARCHAR2(30);
229032 l_ae_header_id                NUMBER;
229033 l_event_type_code             VARCHAR2(30);
229034 l_line_definition_code        VARCHAR2(30);
229035 l_line_definition_owner_code  VARCHAR2(1);
229036 --
229037 -- adr variables
229038 l_segment                     VARCHAR2(30);
229039 l_ccid                        NUMBER;
229040 l_adr_transaction_coa_id      NUMBER;
229041 l_adr_accounting_coa_id       NUMBER;
229042 l_adr_flexfield_segment_code  VARCHAR2(30);
229043 l_adr_flex_value_set_id       NUMBER;
229044 l_adr_value_type_code         VARCHAR2(30);
229045 l_adr_value_combination_id    NUMBER;
229046 l_adr_value_segment_code      VARCHAR2(30);
229047 
229048 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
229049 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
229050 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
229051 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
229052 
229053 -- 4262811 Variables ------------------------------------------------------------------------------------------
229054 l_entered_amt_idx             NUMBER;
229055 l_accted_amt_idx              NUMBER;
229056 l_acc_rev_flag                VARCHAR2(1);
229057 l_accrual_line_num            NUMBER;
229058 l_tmp_amt                     NUMBER;
229059 l_acc_rev_natural_side_code   VARCHAR2(1);
229060 
229061 l_num_entries                 NUMBER;
229062 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
229063 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
229064 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
229065 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
229066 l_recog_line_1                NUMBER;
229067 l_recog_line_2                NUMBER;
229068 
229069 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
229070 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
229071 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
229072 
229073 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
229074 
229075 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
229076 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
229077 
229078 ---------------------------------------------------------------------------------------------------------------
229079 
229080 
229081 --
229082 -- bulk performance
229083 --
229084 l_balance_type_code           VARCHAR2(1);
229085 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
229086 l_log_module                  VARCHAR2(240);
229087 
229088 --
229089 -- Upgrade strategy
229090 --
229091 l_actual_upg_option           VARCHAR2(1);
229092 l_enc_upg_option           VARCHAR2(1);
229093 
229094 --
229095 BEGIN
229096 --
229097 IF g_log_enabled THEN
229098       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_415';
229099 END IF;
229100 --
229101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
229102 
229103       trace
229104          (p_msg      => 'BEGIN of AcctLineType_415'
229105          ,p_level    => C_LEVEL_PROCEDURE
229106          ,p_module   => l_log_module);
229107 
229108 END IF;
229109 --
229110 l_component_type             := 'AMB_JLT';
229111 l_component_code             := 'PI_EXPENSE';
229112 l_component_type_code        := 'S';
229113 l_component_appl_id          :=  707;
229114 l_amb_context_code           := 'DEFAULT';
229115 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
229116 l_event_class_code           := 'CON_INV_OWNR_TXFR';
229117 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
229118 l_line_definition_owner_code := 'S';
229119 l_line_definition_code       := 'PI_CON_INV_OWNR_TRFR';
229120 --
229121 l_balance_type_code          := 'A';
229122 l_segment                     := NULL;
229123 l_ccid                        := NULL;
229124 l_adr_transaction_coa_id      := NULL;
229125 l_adr_accounting_coa_id       := NULL;
229126 l_adr_flexfield_segment_code  := NULL;
229127 l_adr_flex_value_set_id       := NULL;
229128 l_adr_value_type_code         := NULL;
229129 l_adr_value_combination_id    := NULL;
229130 l_adr_value_segment_code      := NULL;
229131 
229132 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
229133 l_bflow_class_code           := '';    -- 4219869 Business Flow
229134 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
229135 l_budgetary_control_flag     := 'N';
229136 
229137 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
229138 l_bflow_applied_to_amt       := NULL; -- 5132302
229139 l_entered_amt_idx            := NULL;          -- 4262811
229140 l_accted_amt_idx             := NULL;          -- 4262811
229141 l_acc_rev_flag               := NULL;          -- 4262811
229142 l_accrual_line_num           := NULL;          -- 4262811
229143 l_tmp_amt                    := NULL;          -- 4262811
229144 --
229145  
229146 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
229147     l_balance_type_code <> 'B' THEN
229148 IF (NVL(p_source_97,9E125) =  1 AND 
229149 NVL(p_source_15,9E125) =  1) OR 
229150 (NVL(p_source_97,9E125) =  6)
229151  THEN 
229152 
229153    --
229154    XLA_AE_LINES_PKG.SetNewLine;
229155 
229156    p_balance_type_code          := l_balance_type_code;
229157    -- set the flag so later we will know whether the gain loss line needs to be created
229158    
229159    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
229160      p_actual_flag :='A';
229161    END IF;
229162 
229163    --
229164    -- bulk performance
229165    --
229166    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
229167                                       p_header_num   => 0); -- 4262811
229168    --
229169    -- set accounting line options
229170    --
229171    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
229172            p_natural_side_code          => 'D'
229173          , p_gain_or_loss_flag          => 'N'
229174          , p_gl_transfer_mode_code      => 'S'
229175          , p_acct_entry_type_code       => 'A'
229176          , p_switch_side_flag           => 'Y'
229177          , p_merge_duplicate_code       => 'N'
229178          );
229179    --
229180    l_acc_rev_natural_side_code := 'C';  -- 4262811
229181    -- 
229182    --
229183    -- set accounting line type info
229184    --
229185    xla_ae_lines_pkg.SetAcctLineType
229186       (p_component_type             => l_component_type
229187       ,p_event_type_code            => l_event_type_code
229188       ,p_line_definition_owner_code => l_line_definition_owner_code
229189       ,p_line_definition_code       => l_line_definition_code
229190       ,p_accounting_line_code       => l_component_code
229191       ,p_accounting_line_type_code  => l_component_type_code
229192       ,p_accounting_line_appl_id    => l_component_appl_id
229193       ,p_amb_context_code           => l_amb_context_code
229194       ,p_entity_code                => l_entity_code
229195       ,p_event_class_code           => l_event_class_code);
229196    --
229197    -- set accounting class
229198    --
229199    xla_ae_lines_pkg.SetAcctClass(
229200            p_accounting_class_code  => 'EXPENSE'
229201          , p_ae_header_id           => l_ae_header_id
229202          );
229203 
229204    --
229205    -- set rounding class
229206    --
229207    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
229208                       'EXPENSE';
229209 
229210    --
229211    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
229212    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
229213    --
229214    -- bulk performance
229215    --
229216    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
229217 
229218    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
229219       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
229220 
229221    -- 4955764
229222    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
229223       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
229224 
229225    -- 4458381 Public Sector Enh
229226    
229227    --
229228    -- set accounting attributes for the line type
229229    --
229230    l_entered_amt_idx := 3;
229231    l_accted_amt_idx  := 8;
229232    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
229233    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
229234    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
229235    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
229236    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
229237    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
229238    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
229239    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
229240    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
229241    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
229242    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
229243    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
229244    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
229245    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
229246    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
229247    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
229248    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
229249 
229250    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
229251    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
229252 
229253    ---------------------------------------------------------------------------------------------------------------
229254    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
229255    ---------------------------------------------------------------------------------------------------------------
229256    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
229257 
229258    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
229259    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
229260 
229261    IF xla_accounting_cache_pkg.GetValueChar
229262          (p_source_code         => 'LEDGER_CATEGORY_CODE'
229263          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
229264    AND l_bflow_method_code = 'PRIOR_ENTRY'
229265 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
229266    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
229267          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
229268        )
229269    THEN
229270          xla_ae_lines_pkg.BflowUpgEntry
229271            (p_business_method_code    => l_bflow_method_code
229272            ,p_business_class_code     => l_bflow_class_code
229273            ,p_balance_type            => l_balance_type_code);
229274    ELSE
229275       NULL;
229276 -- No business flow processing for business flow method of NONE.
229277    END IF;
229278 
229279    --
229280    -- call analytical criteria
229281    --
229282    
229283    --
229284    -- call description
229285    --
229286    
229287 xla_ae_lines_pkg.SetLineDescription(
229288    p_ae_header_id => l_ae_header_id
229289   ,p_description  => Description_1 (
229290      p_application_id         => p_application_id
229291    , p_ae_header_id           => l_ae_header_id 
229292 , p_source_1 => p_source_1
229293 , p_source_2 => p_source_2
229294 , p_source_3 => p_source_3
229295 , p_source_4 => p_source_4
229296 , p_source_5 => p_source_5
229297    )
229298 );
229299 
229300 
229301    --
229302    -- call ADRs
229303    -- Bug 4922099
229304    --
229305    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
229306         (NVL(l_actual_upg_option, 'N') = 'O') OR
229307         (NVL(l_enc_upg_option, 'N') = 'O')
229308       )
229309    THEN
229310    NULL;
229311    --
229312    --
229313    
229314   l_ccid := AcctDerRule_13(
229315            p_application_id           => p_application_id
229316          , p_ae_header_id             => l_ae_header_id 
229317 , p_source_24 => p_source_24
229318          , x_transaction_coa_id       => l_adr_transaction_coa_id
229319          , x_accounting_coa_id        => l_adr_accounting_coa_id
229320          , x_value_type_code          => l_adr_value_type_code
229321          , p_side                     => 'NA'
229322    );
229323 
229324    xla_ae_lines_pkg.set_ccid(
229325     p_code_combination_id          => l_ccid
229326   , p_value_type_code              => l_adr_value_type_code
229327   , p_transaction_coa_id           => l_adr_transaction_coa_id
229328   , p_accounting_coa_id            => l_adr_accounting_coa_id
229329   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
229330   , p_adr_type_code                => 'S'
229331   , p_component_type               => l_component_type
229332   , p_component_code               => l_component_code
229333   , p_component_type_code          => l_component_type_code
229334   , p_component_appl_id            => l_component_appl_id
229335   , p_amb_context_code             => l_amb_context_code
229336   , p_side                         => 'NA'
229337   );
229338 
229339 
229340    --
229341    --
229342    END IF;
229343    --
229344    -- Bug 4922099
229345    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
229346           (NVL(l_enc_upg_option, 'N') = 'O')
229347         ) AND
229348         (l_bflow_method_code = 'PRIOR_ENTRY')
229349       )
229350    THEN
229351       IF
229352       --
229353       1 = 2
229354       --
229355       THEN
229356       xla_accounting_err_pkg.build_message
229357                                     (p_appli_s_name            => 'XLA'
229358                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
229359                                     ,p_token_1                 => 'LINE_NUMBER'
229360                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
229361                                     ,p_token_2                 => 'LINE_TYPE_NAME'
229362                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
229363                                                                              l_component_type
229364                                                                             ,l_component_code
229365                                                                             ,l_component_type_code
229366                                                                             ,l_component_appl_id
229367                                                                             ,l_amb_context_code
229368                                                                             ,l_entity_code
229369                                                                             ,l_event_class_code
229370                                                                            )
229371                                     ,p_token_3                 => 'OWNER'
229372                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
229373                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
229374                                                                           ,p_lookup_code    => l_component_type_code
229375                                                                          )
229376                                     ,p_token_4                 => 'PRODUCT_NAME'
229377                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
229378                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
229379                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
229380                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
229381                                     ,p_ae_header_id            =>  NULL
229382                                        );
229383 
229384         IF (C_LEVEL_ERROR>= g_log_level) THEN
229385                  trace
229386                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
229387                       ,p_level    => C_LEVEL_ERROR
229388                       ,p_module   => l_log_module);
229389         END IF;
229390       END IF;
229391    END IF;
229392    --
229393    --
229394    ------------------------------------------------------------------------------------------------
229395    -- 4219869 Business Flow
229396    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
229397    -- Prior Entry.  Currently, the following code is always generated.
229398    ------------------------------------------------------------------------------------------------
229399    XLA_AE_LINES_PKG.ValidateCurrentLine;
229400 
229401    ------------------------------------------------------------------------------------
229402    -- 4219869 Business Flow
229403    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
229404    ------------------------------------------------------------------------------------
229405    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
229406 
229407    ----------------------------------------------------------------------------------
229408    -- 4219869 Business Flow
229409    -- Update journal entry status -- Need to generate this within IF <condition>
229410    ----------------------------------------------------------------------------------
229411    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
229412          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
229413          ,p_balance_type_code => l_balance_type_code
229414          );
229415 
229416    -------------------------------------------------------------------------------------------
229417    -- 4262811 - Generate the Accrual Reversal lines
229418    -------------------------------------------------------------------------------------------
229419    BEGIN
229420       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
229421                               (g_array_event(p_event_id).array_value_num('header_index'));
229422       IF l_acc_rev_flag IS NULL THEN
229423          l_acc_rev_flag := 'N';
229424       END IF;
229425    EXCEPTION
229426       WHEN OTHERS THEN
229427          l_acc_rev_flag := 'N';
229428    END;
229429    --
229430    IF (l_acc_rev_flag = 'Y') THEN
229431 
229432        -- 4645092  ------------------------------------------------------------------------------
229433        -- To allow MPA report to determine if it should generate report process
229434        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
229435        ------------------------------------------------------------------------------------------
229436 
229437        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
229438        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
229439    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
229440    -- call ADRs
229441    -- Bug 4922099
229442    --
229443    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
229444         (NVL(l_actual_upg_option, 'N') = 'O') OR
229445         (NVL(l_enc_upg_option, 'N') = 'O')
229446       )
229447    THEN
229448    NULL;
229449    --
229450    --
229451    
229452   l_ccid := AcctDerRule_13(
229453            p_application_id           => p_application_id
229454          , p_ae_header_id             => l_ae_header_id 
229455 , p_source_24 => p_source_24
229456          , x_transaction_coa_id       => l_adr_transaction_coa_id
229457          , x_accounting_coa_id        => l_adr_accounting_coa_id
229458          , x_value_type_code          => l_adr_value_type_code
229459          , p_side                     => 'NA'
229460    );
229461 
229462    xla_ae_lines_pkg.set_ccid(
229463     p_code_combination_id          => l_ccid
229464   , p_value_type_code              => l_adr_value_type_code
229465   , p_transaction_coa_id           => l_adr_transaction_coa_id
229466   , p_accounting_coa_id            => l_adr_accounting_coa_id
229467   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
229468   , p_adr_type_code                => 'S'
229469   , p_component_type               => l_component_type
229470   , p_component_code               => l_component_code
229471   , p_component_type_code          => l_component_type_code
229472   , p_component_appl_id            => l_component_appl_id
229473   , p_amb_context_code             => l_amb_context_code
229474   , p_side                         => 'NA'
229475   );
229476 
229477 
229478    --
229479    --
229480    END IF;
229481 
229482        --
229483        -- Update the line information that should be overwritten
229484        --
229485        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
229486                                          p_header_num   => 1);
229487        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
229488 
229489        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
229490 
229491        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
229492           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
229493        END IF;
229494 
229495       --
229496       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
229497       --
229498       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
229499           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
229500       ELSE
229501           ---------------------------------------------------------------------------------------------------
229502           -- 4262811a Switch Sign
229503           ---------------------------------------------------------------------------------------------------
229504           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
229505           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
229506                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
229507           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
229508                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
229509           -- 5132302
229510           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
229511                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
229512 
229513       END IF;
229514 
229515       -- 4955764
229516       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
229517       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
229518 
229519 
229520       XLA_AE_LINES_PKG.ValidateCurrentLine;
229521       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
229522 
229523       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
229524                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
229525                ,p_balance_type_code => l_balance_type_code);
229526 
229527    END IF;
229528 
229529    -----------------------------------------------------------------------------------------
229530    -- 4262811 Multiperiod Accounting
229531    -----------------------------------------------------------------------------------------
229532      -- No MPA option is assigned.
229533 
229534 
229535 END IF;
229536 END IF;
229537 --
229538 
229539 --
229540 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
229541    trace
229542       (p_msg      => 'END of AcctLineType_415'
229543       ,p_level    => C_LEVEL_PROCEDURE
229544       ,p_module   => l_log_module);
229545 END IF;
229546 --
229547 EXCEPTION
229548   WHEN xla_exceptions_pkg.application_exception THEN
229549       RAISE;
229550   WHEN OTHERS THEN
229551        xla_exceptions_pkg.raise_message
229552            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_415');
229553 END AcctLineType_415;
229554 --
229555 
229556 ---------------------------------------
229557 --
229558 -- PRIVATE FUNCTION
229559 --         AcctLineType_416
229560 --
229561 ---------------------------------------
229562 PROCEDURE AcctLineType_416 (
229563   p_application_id        IN NUMBER
229564  ,p_event_id              IN NUMBER
229565  ,p_calculate_acctd_flag  IN VARCHAR2
229566  ,p_calculate_g_l_flag    IN VARCHAR2
229567  ,p_actual_flag           IN OUT VARCHAR2
229568  ,p_balance_type_code     OUT VARCHAR2
229569  ,p_gain_or_loss_ref      OUT VARCHAR2
229570  
229571 --TRANSACTION_ID
229572  , p_source_1            IN NUMBER
229573 --Item Concatenated Segments
229574  , p_source_2            IN VARCHAR2
229575 --Transaction Quantity
229576  , p_source_3            IN NUMBER
229577 --Transaction Unit of Measure Code
229578  , p_source_4            IN VARCHAR2
229579 --Inventory Transaction Type Description
229580  , p_source_5            IN VARCHAR2
229581 --Interorg Expense Account
229582  , p_source_34            IN NUMBER
229583 --Applied to Application ID
229584  , p_source_79            IN NUMBER
229585 --Applied to Distribution Link Type
229586  , p_source_80            IN VARCHAR2
229587 --Applied to Entity Code
229588  , p_source_81            IN VARCHAR2
229589 --DISTRIBUTION_IDENTIFIER
229590  , p_source_84            IN NUMBER
229591 --Distribution Type
229592  , p_source_85            IN VARCHAR2
229593  , p_source_85_meaning    IN VARCHAR2
229594 --Encumbrance Reversal Amount Entered
229595  , p_source_87            IN NUMBER
229596 --Entered Currency Code
229597  , p_source_88            IN VARCHAR2
229598 --Transaction Encumbrance Reversal Amount
229599  , p_source_89            IN NUMBER
229600 --Entered Amount
229601  , p_source_91            IN NUMBER
229602 --Currency Conversion Date
229603  , p_source_92            IN DATE
229604 --Currency Conversion Rate
229605  , p_source_93            IN NUMBER
229606 --Currency Conversion Type
229607  , p_source_94            IN VARCHAR2
229608 --Accounted Amount
229609  , p_source_95            IN NUMBER
229610 --Accounting Line Type
229611  , p_source_97            IN NUMBER
229612 --Costing Encumbrance Upgrade Option
229613  , p_source_100            IN VARCHAR2
229614 --TXN_PO_DISTRIBUTION_ID
229615  , p_source_101            IN NUMBER
229616 --TXN_PO_HEADER_ID
229617  , p_source_102            IN NUMBER
229618 --Requisition Budget Account
229619  , p_source_103            IN NUMBER
229620 --Requisition Encumbrance Type Identifier
229621  , p_source_104            IN NUMBER
229622 )
229623 IS
229624 
229625 l_component_type              VARCHAR2(80);
229626 l_component_code              VARCHAR2(30);
229627 l_component_type_code         VARCHAR2(1);
229628 l_component_appl_id           INTEGER;
229629 l_amb_context_code            VARCHAR2(30);
229630 l_entity_code                 VARCHAR2(30);
229631 l_event_class_code            VARCHAR2(30);
229632 l_ae_header_id                NUMBER;
229633 l_event_type_code             VARCHAR2(30);
229634 l_line_definition_code        VARCHAR2(30);
229635 l_line_definition_owner_code  VARCHAR2(1);
229636 --
229637 -- adr variables
229638 l_segment                     VARCHAR2(30);
229639 l_ccid                        NUMBER;
229640 l_adr_transaction_coa_id      NUMBER;
229641 l_adr_accounting_coa_id       NUMBER;
229642 l_adr_flexfield_segment_code  VARCHAR2(30);
229643 l_adr_flex_value_set_id       NUMBER;
229644 l_adr_value_type_code         VARCHAR2(30);
229645 l_adr_value_combination_id    NUMBER;
229646 l_adr_value_segment_code      VARCHAR2(30);
229647 
229648 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
229649 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
229650 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
229651 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
229652 
229653 -- 4262811 Variables ------------------------------------------------------------------------------------------
229654 l_entered_amt_idx             NUMBER;
229655 l_accted_amt_idx              NUMBER;
229656 l_acc_rev_flag                VARCHAR2(1);
229657 l_accrual_line_num            NUMBER;
229658 l_tmp_amt                     NUMBER;
229659 l_acc_rev_natural_side_code   VARCHAR2(1);
229660 
229661 l_num_entries                 NUMBER;
229662 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
229663 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
229664 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
229665 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
229666 l_recog_line_1                NUMBER;
229667 l_recog_line_2                NUMBER;
229668 
229669 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
229670 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
229671 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
229672 
229673 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
229674 
229675 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
229676 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
229677 
229678 ---------------------------------------------------------------------------------------------------------------
229679 
229680 
229681 --
229682 -- bulk performance
229683 --
229684 l_balance_type_code           VARCHAR2(1);
229685 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
229686 l_log_module                  VARCHAR2(240);
229687 
229688 --
229689 -- Upgrade strategy
229690 --
229691 l_actual_upg_option           VARCHAR2(1);
229692 l_enc_upg_option           VARCHAR2(1);
229693 
229694 --
229695 BEGIN
229696 --
229697 IF g_log_enabled THEN
229698       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_416';
229699 END IF;
229700 --
229701 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
229702 
229703       trace
229704          (p_msg      => 'BEGIN of AcctLineType_416'
229705          ,p_level    => C_LEVEL_PROCEDURE
229706          ,p_module   => l_log_module);
229707 
229708 END IF;
229709 --
229710 l_component_type             := 'AMB_JLT';
229711 l_component_code             := 'PI_EXPENSE_122';
229712 l_component_type_code        := 'S';
229713 l_component_appl_id          :=  707;
229714 l_amb_context_code           := 'DEFAULT';
229715 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
229716 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
229717 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
229718 l_line_definition_owner_code := 'S';
229719 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
229720 --
229721 l_balance_type_code          := 'A';
229722 l_segment                     := NULL;
229723 l_ccid                        := NULL;
229724 l_adr_transaction_coa_id      := NULL;
229725 l_adr_accounting_coa_id       := NULL;
229726 l_adr_flexfield_segment_code  := NULL;
229727 l_adr_flex_value_set_id       := NULL;
229728 l_adr_value_type_code         := NULL;
229729 l_adr_value_combination_id    := NULL;
229730 l_adr_value_segment_code      := NULL;
229731 
229732 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
229733 l_bflow_class_code           := '';    -- 4219869 Business Flow
229734 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
229735 l_budgetary_control_flag     := 'N';
229736 
229737 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
229738 l_bflow_applied_to_amt       := NULL; -- 5132302
229739 l_entered_amt_idx            := NULL;          -- 4262811
229740 l_accted_amt_idx             := NULL;          -- 4262811
229741 l_acc_rev_flag               := NULL;          -- 4262811
229742 l_accrual_line_num           := NULL;          -- 4262811
229743 l_tmp_amt                    := NULL;          -- 4262811
229744 --
229745  
229746 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
229747     l_balance_type_code <> 'B' THEN
229748 IF NVL(p_source_97,9E125) =  9
229749  THEN 
229750 
229751    --
229752    XLA_AE_LINES_PKG.SetNewLine;
229753 
229754    p_balance_type_code          := l_balance_type_code;
229755    -- set the flag so later we will know whether the gain loss line needs to be created
229756    
229757    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
229758      p_actual_flag :='A';
229759    END IF;
229760 
229761    --
229762    -- bulk performance
229763    --
229764    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
229765                                       p_header_num   => 0); -- 4262811
229766    --
229767    -- set accounting line options
229768    --
229769    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
229770            p_natural_side_code          => 'C'
229771          , p_gain_or_loss_flag          => 'N'
229772          , p_gl_transfer_mode_code      => 'S'
229773          , p_acct_entry_type_code       => 'A'
229774          , p_switch_side_flag           => 'Y'
229775          , p_merge_duplicate_code       => 'N'
229776          );
229777    --
229778    l_acc_rev_natural_side_code := 'D';  -- 4262811
229779    -- 
229780    --
229781    -- set accounting line type info
229782    --
229783    xla_ae_lines_pkg.SetAcctLineType
229784       (p_component_type             => l_component_type
229785       ,p_event_type_code            => l_event_type_code
229786       ,p_line_definition_owner_code => l_line_definition_owner_code
229787       ,p_line_definition_code       => l_line_definition_code
229788       ,p_accounting_line_code       => l_component_code
229789       ,p_accounting_line_type_code  => l_component_type_code
229790       ,p_accounting_line_appl_id    => l_component_appl_id
229791       ,p_amb_context_code           => l_amb_context_code
229792       ,p_entity_code                => l_entity_code
229793       ,p_event_class_code           => l_event_class_code);
229794    --
229795    -- set accounting class
229796    --
229797    xla_ae_lines_pkg.SetAcctClass(
229798            p_accounting_class_code  => 'EXPENSE'
229799          , p_ae_header_id           => l_ae_header_id
229800          );
229801 
229802    --
229803    -- set rounding class
229804    --
229805    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
229806                       'EXPENSE';
229807 
229808    --
229809    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
229810    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
229811    --
229812    -- bulk performance
229813    --
229814    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
229815 
229816    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
229817       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
229818 
229819    -- 4955764
229820    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
229821       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
229822 
229823    -- 4458381 Public Sector Enh
229824    
229825    --
229826    -- set accounting attributes for the line type
229827    --
229828    l_entered_amt_idx := 17;
229829    l_accted_amt_idx  := 22;
229830    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
229831    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
229832    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
229833    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
229834    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
229835    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
229836    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
229837    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
229838    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
229839    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
229840    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
229841    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
229842    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
229843    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
229844    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
229845    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
229846    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
229847    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
229848    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
229849    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
229850    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
229851    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
229852    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
229853    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
229854    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
229855    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
229856    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
229857    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
229858    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
229859    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
229860    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
229861    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
229862    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
229863    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
229864    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
229865    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
229866    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
229867    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
229868    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
229869    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
229870    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
229871    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
229872    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
229873    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
229874    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
229875    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
229876    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
229877    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
229878    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
229879 
229880    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
229881    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
229882 
229883    ---------------------------------------------------------------------------------------------------------------
229884    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
229885    ---------------------------------------------------------------------------------------------------------------
229886    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
229887 
229888    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
229889    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
229890 
229891    IF xla_accounting_cache_pkg.GetValueChar
229892          (p_source_code         => 'LEDGER_CATEGORY_CODE'
229893          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
229894    AND l_bflow_method_code = 'PRIOR_ENTRY'
229895 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
229896    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
229897          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
229898        )
229899    THEN
229900          xla_ae_lines_pkg.BflowUpgEntry
229901            (p_business_method_code    => l_bflow_method_code
229902            ,p_business_class_code     => l_bflow_class_code
229903            ,p_balance_type            => l_balance_type_code);
229904    ELSE
229905       NULL;
229906 -- No business flow processing for business flow method of NONE.
229907    END IF;
229908 
229909    --
229910    -- call analytical criteria
229911    --
229912    
229913    --
229914    -- call description
229915    --
229916    
229917 xla_ae_lines_pkg.SetLineDescription(
229918    p_ae_header_id => l_ae_header_id
229919   ,p_description  => Description_1 (
229920      p_application_id         => p_application_id
229921    , p_ae_header_id           => l_ae_header_id 
229922 , p_source_1 => p_source_1
229923 , p_source_2 => p_source_2
229924 , p_source_3 => p_source_3
229925 , p_source_4 => p_source_4
229926 , p_source_5 => p_source_5
229927    )
229928 );
229929 
229930 
229931    --
229932    -- call ADRs
229933    -- Bug 4922099
229934    --
229935    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
229936         (NVL(l_actual_upg_option, 'N') = 'O') OR
229937         (NVL(l_enc_upg_option, 'N') = 'O')
229938       )
229939    THEN
229940    NULL;
229941    --
229942    --
229943    
229944   l_ccid := AcctDerRule_19(
229945            p_application_id           => p_application_id
229946          , p_ae_header_id             => l_ae_header_id 
229947 , p_source_34 => p_source_34
229948          , x_transaction_coa_id       => l_adr_transaction_coa_id
229949          , x_accounting_coa_id        => l_adr_accounting_coa_id
229950          , x_value_type_code          => l_adr_value_type_code
229951          , p_side                     => 'NA'
229952    );
229953 
229954    xla_ae_lines_pkg.set_ccid(
229955     p_code_combination_id          => l_ccid
229956   , p_value_type_code              => l_adr_value_type_code
229957   , p_transaction_coa_id           => l_adr_transaction_coa_id
229958   , p_accounting_coa_id            => l_adr_accounting_coa_id
229959   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
229960   , p_adr_type_code                => 'S'
229961   , p_component_type               => l_component_type
229962   , p_component_code               => l_component_code
229963   , p_component_type_code          => l_component_type_code
229964   , p_component_appl_id            => l_component_appl_id
229965   , p_amb_context_code             => l_amb_context_code
229966   , p_side                         => 'NA'
229967   );
229968 
229969 
229970    --
229971    --
229972    END IF;
229973    --
229974    -- Bug 4922099
229975    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
229976           (NVL(l_enc_upg_option, 'N') = 'O')
229977         ) AND
229978         (l_bflow_method_code = 'PRIOR_ENTRY')
229979       )
229980    THEN
229981       IF
229982       --
229983       1 = 2
229984       --
229985       THEN
229986       xla_accounting_err_pkg.build_message
229987                                     (p_appli_s_name            => 'XLA'
229988                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
229989                                     ,p_token_1                 => 'LINE_NUMBER'
229990                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
229991                                     ,p_token_2                 => 'LINE_TYPE_NAME'
229992                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
229993                                                                              l_component_type
229994                                                                             ,l_component_code
229995                                                                             ,l_component_type_code
229996                                                                             ,l_component_appl_id
229997                                                                             ,l_amb_context_code
229998                                                                             ,l_entity_code
229999                                                                             ,l_event_class_code
230000                                                                            )
230001                                     ,p_token_3                 => 'OWNER'
230002                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
230003                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
230004                                                                           ,p_lookup_code    => l_component_type_code
230005                                                                          )
230006                                     ,p_token_4                 => 'PRODUCT_NAME'
230007                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
230008                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
230009                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
230010                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
230011                                     ,p_ae_header_id            =>  NULL
230012                                        );
230013 
230014         IF (C_LEVEL_ERROR>= g_log_level) THEN
230015                  trace
230016                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
230017                       ,p_level    => C_LEVEL_ERROR
230018                       ,p_module   => l_log_module);
230019         END IF;
230020       END IF;
230021    END IF;
230022    --
230023    --
230024    ------------------------------------------------------------------------------------------------
230025    -- 4219869 Business Flow
230026    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
230027    -- Prior Entry.  Currently, the following code is always generated.
230028    ------------------------------------------------------------------------------------------------
230029    XLA_AE_LINES_PKG.ValidateCurrentLine;
230030 
230031    ------------------------------------------------------------------------------------
230032    -- 4219869 Business Flow
230033    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
230034    ------------------------------------------------------------------------------------
230035    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
230036 
230037    ----------------------------------------------------------------------------------
230038    -- 4219869 Business Flow
230039    -- Update journal entry status -- Need to generate this within IF <condition>
230040    ----------------------------------------------------------------------------------
230041    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
230042          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
230043          ,p_balance_type_code => l_balance_type_code
230044          );
230045 
230046    -------------------------------------------------------------------------------------------
230047    -- 4262811 - Generate the Accrual Reversal lines
230048    -------------------------------------------------------------------------------------------
230049    BEGIN
230050       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
230051                               (g_array_event(p_event_id).array_value_num('header_index'));
230052       IF l_acc_rev_flag IS NULL THEN
230053          l_acc_rev_flag := 'N';
230054       END IF;
230055    EXCEPTION
230056       WHEN OTHERS THEN
230057          l_acc_rev_flag := 'N';
230058    END;
230059    --
230060    IF (l_acc_rev_flag = 'Y') THEN
230061 
230062        -- 4645092  ------------------------------------------------------------------------------
230063        -- To allow MPA report to determine if it should generate report process
230064        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
230065        ------------------------------------------------------------------------------------------
230066 
230067        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
230068        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
230069    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
230070    -- call ADRs
230071    -- Bug 4922099
230072    --
230073    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
230074         (NVL(l_actual_upg_option, 'N') = 'O') OR
230075         (NVL(l_enc_upg_option, 'N') = 'O')
230076       )
230077    THEN
230078    NULL;
230079    --
230080    --
230081    
230082   l_ccid := AcctDerRule_19(
230083            p_application_id           => p_application_id
230084          , p_ae_header_id             => l_ae_header_id 
230085 , p_source_34 => p_source_34
230086          , x_transaction_coa_id       => l_adr_transaction_coa_id
230087          , x_accounting_coa_id        => l_adr_accounting_coa_id
230088          , x_value_type_code          => l_adr_value_type_code
230089          , p_side                     => 'NA'
230090    );
230091 
230092    xla_ae_lines_pkg.set_ccid(
230093     p_code_combination_id          => l_ccid
230094   , p_value_type_code              => l_adr_value_type_code
230095   , p_transaction_coa_id           => l_adr_transaction_coa_id
230096   , p_accounting_coa_id            => l_adr_accounting_coa_id
230097   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
230098   , p_adr_type_code                => 'S'
230099   , p_component_type               => l_component_type
230100   , p_component_code               => l_component_code
230101   , p_component_type_code          => l_component_type_code
230102   , p_component_appl_id            => l_component_appl_id
230103   , p_amb_context_code             => l_amb_context_code
230104   , p_side                         => 'NA'
230105   );
230106 
230107 
230108    --
230109    --
230110    END IF;
230111 
230112        --
230113        -- Update the line information that should be overwritten
230114        --
230115        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
230116                                          p_header_num   => 1);
230117        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
230118 
230119        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
230120 
230121        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
230122           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
230123        END IF;
230124 
230125       --
230126       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
230127       --
230128       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
230129           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
230130       ELSE
230131           ---------------------------------------------------------------------------------------------------
230132           -- 4262811a Switch Sign
230133           ---------------------------------------------------------------------------------------------------
230134           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
230135           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
230136                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
230137           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
230138                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
230139           -- 5132302
230140           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
230141                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
230142 
230143       END IF;
230144 
230145       -- 4955764
230146       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
230147       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
230148 
230149 
230150       XLA_AE_LINES_PKG.ValidateCurrentLine;
230151       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
230152 
230153       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
230154                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
230155                ,p_balance_type_code => l_balance_type_code);
230156 
230157    END IF;
230158 
230159    -----------------------------------------------------------------------------------------
230160    -- 4262811 Multiperiod Accounting
230161    -----------------------------------------------------------------------------------------
230162      -- No MPA option is assigned.
230163 
230164 
230165 END IF;
230166 END IF;
230167 --
230168 
230169 --
230170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
230171    trace
230172       (p_msg      => 'END of AcctLineType_416'
230173       ,p_level    => C_LEVEL_PROCEDURE
230174       ,p_module   => l_log_module);
230175 END IF;
230176 --
230177 EXCEPTION
230178   WHEN xla_exceptions_pkg.application_exception THEN
230179       RAISE;
230180   WHEN OTHERS THEN
230181        xla_exceptions_pkg.raise_message
230182            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_416');
230183 END AcctLineType_416;
230184 --
230185 
230186 ---------------------------------------
230187 --
230188 -- PRIVATE FUNCTION
230189 --         AcctLineType_417
230190 --
230191 ---------------------------------------
230192 PROCEDURE AcctLineType_417 (
230193   p_application_id        IN NUMBER
230194  ,p_event_id              IN NUMBER
230195  ,p_calculate_acctd_flag  IN VARCHAR2
230196  ,p_calculate_g_l_flag    IN VARCHAR2
230197  ,p_actual_flag           IN OUT VARCHAR2
230198  ,p_balance_type_code     OUT VARCHAR2
230199  ,p_gain_or_loss_ref      OUT VARCHAR2
230200  
230201 --TRANSACTION_ID
230202  , p_source_1            IN NUMBER
230203 --Item Concatenated Segments
230204  , p_source_2            IN VARCHAR2
230205 --Transaction Quantity
230206  , p_source_3            IN NUMBER
230207 --Transaction Unit of Measure Code
230208  , p_source_4            IN VARCHAR2
230209 --Inventory Transaction Type Description
230210  , p_source_5            IN VARCHAR2
230211 --Product Line Accounting Category Expense Account
230212  , p_source_24            IN NUMBER
230213 --Applied to Application ID
230214  , p_source_79            IN NUMBER
230215 --Applied to Distribution Link Type
230216  , p_source_80            IN VARCHAR2
230217 --Applied to Entity Code
230218  , p_source_81            IN VARCHAR2
230219 --DISTRIBUTION_IDENTIFIER
230220  , p_source_84            IN NUMBER
230221 --Distribution Type
230222  , p_source_85            IN VARCHAR2
230223  , p_source_85_meaning    IN VARCHAR2
230224 --Encumbrance Reversal Amount Entered
230225  , p_source_87            IN NUMBER
230226 --Entered Currency Code
230227  , p_source_88            IN VARCHAR2
230228 --Transaction Encumbrance Reversal Amount
230229  , p_source_89            IN NUMBER
230230 --Entered Amount
230231  , p_source_91            IN NUMBER
230232 --Currency Conversion Date
230233  , p_source_92            IN DATE
230234 --Currency Conversion Rate
230235  , p_source_93            IN NUMBER
230236 --Currency Conversion Type
230237  , p_source_94            IN VARCHAR2
230238 --Accounted Amount
230239  , p_source_95            IN NUMBER
230240 --Accounting Line Type
230241  , p_source_97            IN NUMBER
230242 --Costing Encumbrance Upgrade Option
230243  , p_source_100            IN VARCHAR2
230244 --TXN_PO_DISTRIBUTION_ID
230245  , p_source_101            IN NUMBER
230246 --TXN_PO_HEADER_ID
230247  , p_source_102            IN NUMBER
230248 --Requisition Budget Account
230249  , p_source_103            IN NUMBER
230250 --Requisition Encumbrance Type Identifier
230251  , p_source_104            IN NUMBER
230252 )
230253 IS
230254 
230255 l_component_type              VARCHAR2(80);
230256 l_component_code              VARCHAR2(30);
230257 l_component_type_code         VARCHAR2(1);
230258 l_component_appl_id           INTEGER;
230259 l_amb_context_code            VARCHAR2(30);
230260 l_entity_code                 VARCHAR2(30);
230261 l_event_class_code            VARCHAR2(30);
230262 l_ae_header_id                NUMBER;
230263 l_event_type_code             VARCHAR2(30);
230264 l_line_definition_code        VARCHAR2(30);
230265 l_line_definition_owner_code  VARCHAR2(1);
230266 --
230267 -- adr variables
230268 l_segment                     VARCHAR2(30);
230269 l_ccid                        NUMBER;
230270 l_adr_transaction_coa_id      NUMBER;
230271 l_adr_accounting_coa_id       NUMBER;
230272 l_adr_flexfield_segment_code  VARCHAR2(30);
230273 l_adr_flex_value_set_id       NUMBER;
230274 l_adr_value_type_code         VARCHAR2(30);
230275 l_adr_value_combination_id    NUMBER;
230276 l_adr_value_segment_code      VARCHAR2(30);
230277 
230278 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
230279 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
230280 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
230281 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
230282 
230283 -- 4262811 Variables ------------------------------------------------------------------------------------------
230284 l_entered_amt_idx             NUMBER;
230285 l_accted_amt_idx              NUMBER;
230286 l_acc_rev_flag                VARCHAR2(1);
230287 l_accrual_line_num            NUMBER;
230288 l_tmp_amt                     NUMBER;
230289 l_acc_rev_natural_side_code   VARCHAR2(1);
230290 
230291 l_num_entries                 NUMBER;
230292 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
230293 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
230294 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
230295 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
230296 l_recog_line_1                NUMBER;
230297 l_recog_line_2                NUMBER;
230298 
230299 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
230300 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
230301 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
230302 
230303 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
230304 
230305 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
230306 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
230307 
230308 ---------------------------------------------------------------------------------------------------------------
230309 
230310 
230311 --
230312 -- bulk performance
230313 --
230314 l_balance_type_code           VARCHAR2(1);
230315 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
230316 l_log_module                  VARCHAR2(240);
230317 
230318 --
230319 -- Upgrade strategy
230320 --
230321 l_actual_upg_option           VARCHAR2(1);
230322 l_enc_upg_option           VARCHAR2(1);
230323 
230324 --
230325 BEGIN
230326 --
230327 IF g_log_enabled THEN
230328       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_417';
230329 END IF;
230330 --
230331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
230332 
230333       trace
230334          (p_msg      => 'BEGIN of AcctLineType_417'
230335          ,p_level    => C_LEVEL_PROCEDURE
230336          ,p_module   => l_log_module);
230337 
230338 END IF;
230339 --
230340 l_component_type             := 'AMB_JLT';
230341 l_component_code             := 'PI_EXPENSE_122';
230342 l_component_type_code        := 'S';
230343 l_component_appl_id          :=  707;
230344 l_amb_context_code           := 'DEFAULT';
230345 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
230346 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
230347 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
230348 l_line_definition_owner_code := 'S';
230349 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
230350 --
230351 l_balance_type_code          := 'A';
230352 l_segment                     := NULL;
230353 l_ccid                        := NULL;
230354 l_adr_transaction_coa_id      := NULL;
230355 l_adr_accounting_coa_id       := NULL;
230356 l_adr_flexfield_segment_code  := NULL;
230357 l_adr_flex_value_set_id       := NULL;
230358 l_adr_value_type_code         := NULL;
230359 l_adr_value_combination_id    := NULL;
230360 l_adr_value_segment_code      := NULL;
230361 
230362 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
230363 l_bflow_class_code           := '';    -- 4219869 Business Flow
230364 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
230365 l_budgetary_control_flag     := 'N';
230366 
230367 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
230368 l_bflow_applied_to_amt       := NULL; -- 5132302
230369 l_entered_amt_idx            := NULL;          -- 4262811
230370 l_accted_amt_idx             := NULL;          -- 4262811
230371 l_acc_rev_flag               := NULL;          -- 4262811
230372 l_accrual_line_num           := NULL;          -- 4262811
230373 l_tmp_amt                    := NULL;          -- 4262811
230374 --
230375  
230376 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
230377     l_balance_type_code <> 'B' THEN
230378 IF NVL(p_source_97,9E125) =  9
230379  THEN 
230380 
230381    --
230382    XLA_AE_LINES_PKG.SetNewLine;
230383 
230384    p_balance_type_code          := l_balance_type_code;
230385    -- set the flag so later we will know whether the gain loss line needs to be created
230386    
230387    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
230388      p_actual_flag :='A';
230389    END IF;
230390 
230391    --
230392    -- bulk performance
230393    --
230394    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
230395                                       p_header_num   => 0); -- 4262811
230396    --
230397    -- set accounting line options
230398    --
230399    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
230400            p_natural_side_code          => 'C'
230401          , p_gain_or_loss_flag          => 'N'
230402          , p_gl_transfer_mode_code      => 'S'
230403          , p_acct_entry_type_code       => 'A'
230404          , p_switch_side_flag           => 'Y'
230405          , p_merge_duplicate_code       => 'N'
230406          );
230407    --
230408    l_acc_rev_natural_side_code := 'D';  -- 4262811
230409    -- 
230410    --
230411    -- set accounting line type info
230412    --
230413    xla_ae_lines_pkg.SetAcctLineType
230414       (p_component_type             => l_component_type
230415       ,p_event_type_code            => l_event_type_code
230416       ,p_line_definition_owner_code => l_line_definition_owner_code
230417       ,p_line_definition_code       => l_line_definition_code
230418       ,p_accounting_line_code       => l_component_code
230419       ,p_accounting_line_type_code  => l_component_type_code
230420       ,p_accounting_line_appl_id    => l_component_appl_id
230421       ,p_amb_context_code           => l_amb_context_code
230422       ,p_entity_code                => l_entity_code
230423       ,p_event_class_code           => l_event_class_code);
230424    --
230425    -- set accounting class
230426    --
230427    xla_ae_lines_pkg.SetAcctClass(
230428            p_accounting_class_code  => 'EXPENSE'
230429          , p_ae_header_id           => l_ae_header_id
230430          );
230431 
230432    --
230433    -- set rounding class
230434    --
230435    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
230436                       'EXPENSE';
230437 
230438    --
230439    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
230440    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
230441    --
230442    -- bulk performance
230443    --
230444    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
230445 
230446    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
230447       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
230448 
230449    -- 4955764
230450    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
230451       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
230452 
230453    -- 4458381 Public Sector Enh
230454    
230455    --
230456    -- set accounting attributes for the line type
230457    --
230458    l_entered_amt_idx := 17;
230459    l_accted_amt_idx  := 22;
230460    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
230461    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
230462    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
230463    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
230464    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
230465    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
230466    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
230467    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
230468    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
230469    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
230470    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
230471    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
230472    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
230473    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
230474    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
230475    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
230476    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
230477    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
230478    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
230479    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
230480    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
230481    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
230482    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
230483    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
230484    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
230485    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
230486    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
230487    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
230488    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
230489    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
230490    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
230491    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
230492    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
230493    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
230494    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
230495    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
230496    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
230497    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
230498    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
230499    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
230500    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
230501    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
230502    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
230503    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
230504    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
230505    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
230506    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
230507    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
230508    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
230509 
230510    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
230511    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
230512 
230513    ---------------------------------------------------------------------------------------------------------------
230514    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
230515    ---------------------------------------------------------------------------------------------------------------
230516    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
230517 
230518    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
230519    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
230520 
230521    IF xla_accounting_cache_pkg.GetValueChar
230522          (p_source_code         => 'LEDGER_CATEGORY_CODE'
230523          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
230524    AND l_bflow_method_code = 'PRIOR_ENTRY'
230525 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
230526    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
230527          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
230528        )
230529    THEN
230530          xla_ae_lines_pkg.BflowUpgEntry
230531            (p_business_method_code    => l_bflow_method_code
230532            ,p_business_class_code     => l_bflow_class_code
230533            ,p_balance_type            => l_balance_type_code);
230534    ELSE
230535       NULL;
230536 -- No business flow processing for business flow method of NONE.
230537    END IF;
230538 
230539    --
230540    -- call analytical criteria
230541    --
230542    
230543    --
230544    -- call description
230545    --
230546    
230547 xla_ae_lines_pkg.SetLineDescription(
230548    p_ae_header_id => l_ae_header_id
230549   ,p_description  => Description_1 (
230550      p_application_id         => p_application_id
230551    , p_ae_header_id           => l_ae_header_id 
230552 , p_source_1 => p_source_1
230553 , p_source_2 => p_source_2
230554 , p_source_3 => p_source_3
230555 , p_source_4 => p_source_4
230556 , p_source_5 => p_source_5
230557    )
230558 );
230559 
230560 
230561    --
230562    -- call ADRs
230563    -- Bug 4922099
230564    --
230565    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
230566         (NVL(l_actual_upg_option, 'N') = 'O') OR
230567         (NVL(l_enc_upg_option, 'N') = 'O')
230568       )
230569    THEN
230570    NULL;
230571    --
230572    --
230573    
230574   l_ccid := AcctDerRule_13(
230575            p_application_id           => p_application_id
230576          , p_ae_header_id             => l_ae_header_id 
230577 , p_source_24 => p_source_24
230578          , x_transaction_coa_id       => l_adr_transaction_coa_id
230579          , x_accounting_coa_id        => l_adr_accounting_coa_id
230580          , x_value_type_code          => l_adr_value_type_code
230581          , p_side                     => 'NA'
230582    );
230583 
230584    xla_ae_lines_pkg.set_ccid(
230585     p_code_combination_id          => l_ccid
230586   , p_value_type_code              => l_adr_value_type_code
230587   , p_transaction_coa_id           => l_adr_transaction_coa_id
230588   , p_accounting_coa_id            => l_adr_accounting_coa_id
230589   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
230590   , p_adr_type_code                => 'S'
230591   , p_component_type               => l_component_type
230592   , p_component_code               => l_component_code
230593   , p_component_type_code          => l_component_type_code
230594   , p_component_appl_id            => l_component_appl_id
230595   , p_amb_context_code             => l_amb_context_code
230596   , p_side                         => 'NA'
230597   );
230598 
230599 
230600    --
230601    --
230602    END IF;
230603    --
230604    -- Bug 4922099
230605    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
230606           (NVL(l_enc_upg_option, 'N') = 'O')
230607         ) AND
230608         (l_bflow_method_code = 'PRIOR_ENTRY')
230609       )
230610    THEN
230611       IF
230612       --
230613       1 = 2
230614       --
230615       THEN
230616       xla_accounting_err_pkg.build_message
230617                                     (p_appli_s_name            => 'XLA'
230618                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
230619                                     ,p_token_1                 => 'LINE_NUMBER'
230620                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
230621                                     ,p_token_2                 => 'LINE_TYPE_NAME'
230622                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
230623                                                                              l_component_type
230624                                                                             ,l_component_code
230625                                                                             ,l_component_type_code
230626                                                                             ,l_component_appl_id
230627                                                                             ,l_amb_context_code
230628                                                                             ,l_entity_code
230629                                                                             ,l_event_class_code
230630                                                                            )
230631                                     ,p_token_3                 => 'OWNER'
230632                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
230633                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
230634                                                                           ,p_lookup_code    => l_component_type_code
230635                                                                          )
230636                                     ,p_token_4                 => 'PRODUCT_NAME'
230637                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
230638                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
230639                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
230640                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
230641                                     ,p_ae_header_id            =>  NULL
230642                                        );
230643 
230644         IF (C_LEVEL_ERROR>= g_log_level) THEN
230645                  trace
230646                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
230647                       ,p_level    => C_LEVEL_ERROR
230648                       ,p_module   => l_log_module);
230649         END IF;
230650       END IF;
230651    END IF;
230652    --
230653    --
230654    ------------------------------------------------------------------------------------------------
230655    -- 4219869 Business Flow
230656    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
230657    -- Prior Entry.  Currently, the following code is always generated.
230658    ------------------------------------------------------------------------------------------------
230659    XLA_AE_LINES_PKG.ValidateCurrentLine;
230660 
230661    ------------------------------------------------------------------------------------
230662    -- 4219869 Business Flow
230663    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
230664    ------------------------------------------------------------------------------------
230665    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
230666 
230667    ----------------------------------------------------------------------------------
230668    -- 4219869 Business Flow
230669    -- Update journal entry status -- Need to generate this within IF <condition>
230670    ----------------------------------------------------------------------------------
230671    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
230672          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
230673          ,p_balance_type_code => l_balance_type_code
230674          );
230675 
230676    -------------------------------------------------------------------------------------------
230677    -- 4262811 - Generate the Accrual Reversal lines
230678    -------------------------------------------------------------------------------------------
230679    BEGIN
230680       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
230681                               (g_array_event(p_event_id).array_value_num('header_index'));
230682       IF l_acc_rev_flag IS NULL THEN
230683          l_acc_rev_flag := 'N';
230684       END IF;
230685    EXCEPTION
230686       WHEN OTHERS THEN
230687          l_acc_rev_flag := 'N';
230688    END;
230689    --
230690    IF (l_acc_rev_flag = 'Y') THEN
230691 
230692        -- 4645092  ------------------------------------------------------------------------------
230693        -- To allow MPA report to determine if it should generate report process
230694        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
230695        ------------------------------------------------------------------------------------------
230696 
230697        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
230698        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
230699    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
230700    -- call ADRs
230701    -- Bug 4922099
230702    --
230703    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
230704         (NVL(l_actual_upg_option, 'N') = 'O') OR
230705         (NVL(l_enc_upg_option, 'N') = 'O')
230706       )
230707    THEN
230708    NULL;
230709    --
230710    --
230711    
230712   l_ccid := AcctDerRule_13(
230713            p_application_id           => p_application_id
230714          , p_ae_header_id             => l_ae_header_id 
230715 , p_source_24 => p_source_24
230716          , x_transaction_coa_id       => l_adr_transaction_coa_id
230717          , x_accounting_coa_id        => l_adr_accounting_coa_id
230718          , x_value_type_code          => l_adr_value_type_code
230719          , p_side                     => 'NA'
230720    );
230721 
230722    xla_ae_lines_pkg.set_ccid(
230723     p_code_combination_id          => l_ccid
230724   , p_value_type_code              => l_adr_value_type_code
230725   , p_transaction_coa_id           => l_adr_transaction_coa_id
230726   , p_accounting_coa_id            => l_adr_accounting_coa_id
230727   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
230728   , p_adr_type_code                => 'S'
230729   , p_component_type               => l_component_type
230730   , p_component_code               => l_component_code
230731   , p_component_type_code          => l_component_type_code
230732   , p_component_appl_id            => l_component_appl_id
230733   , p_amb_context_code             => l_amb_context_code
230734   , p_side                         => 'NA'
230735   );
230736 
230737 
230738    --
230739    --
230740    END IF;
230741 
230742        --
230743        -- Update the line information that should be overwritten
230744        --
230745        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
230746                                          p_header_num   => 1);
230747        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
230748 
230749        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
230750 
230751        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
230752           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
230753        END IF;
230754 
230755       --
230756       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
230757       --
230758       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
230759           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
230760       ELSE
230761           ---------------------------------------------------------------------------------------------------
230762           -- 4262811a Switch Sign
230763           ---------------------------------------------------------------------------------------------------
230764           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
230765           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
230766                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
230767           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
230768                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
230769           -- 5132302
230770           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
230771                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
230772 
230773       END IF;
230774 
230775       -- 4955764
230776       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
230777       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
230778 
230779 
230780       XLA_AE_LINES_PKG.ValidateCurrentLine;
230781       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
230782 
230783       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
230784                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
230785                ,p_balance_type_code => l_balance_type_code);
230786 
230787    END IF;
230788 
230789    -----------------------------------------------------------------------------------------
230790    -- 4262811 Multiperiod Accounting
230791    -----------------------------------------------------------------------------------------
230792      -- No MPA option is assigned.
230793 
230794 
230795 END IF;
230796 END IF;
230797 --
230798 
230799 --
230800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
230801    trace
230802       (p_msg      => 'END of AcctLineType_417'
230803       ,p_level    => C_LEVEL_PROCEDURE
230804       ,p_module   => l_log_module);
230805 END IF;
230806 --
230807 EXCEPTION
230808   WHEN xla_exceptions_pkg.application_exception THEN
230809       RAISE;
230810   WHEN OTHERS THEN
230811        xla_exceptions_pkg.raise_message
230812            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_417');
230813 END AcctLineType_417;
230814 --
230815 
230816 ---------------------------------------
230817 --
230818 -- PRIVATE FUNCTION
230819 --         AcctLineType_418
230820 --
230821 ---------------------------------------
230822 PROCEDURE AcctLineType_418 (
230823   p_application_id        IN NUMBER
230824  ,p_event_id              IN NUMBER
230825  ,p_calculate_acctd_flag  IN VARCHAR2
230826  ,p_calculate_g_l_flag    IN VARCHAR2
230827  ,p_actual_flag           IN OUT VARCHAR2
230828  ,p_balance_type_code     OUT VARCHAR2
230829  ,p_gain_or_loss_ref      OUT VARCHAR2
230830  
230831 --TRANSACTION_ID
230832  , p_source_1            IN NUMBER
230833 --Item Concatenated Segments
230834  , p_source_2            IN VARCHAR2
230835 --Transaction Quantity
230836  , p_source_3            IN NUMBER
230837 --Transaction Unit of Measure Code
230838  , p_source_4            IN VARCHAR2
230839 --Inventory Transaction Type Description
230840  , p_source_5            IN VARCHAR2
230841 --Interorg Expense Account
230842  , p_source_34            IN NUMBER
230843 --DISTRIBUTION_IDENTIFIER
230844  , p_source_84            IN NUMBER
230845 --Distribution Type
230846  , p_source_85            IN VARCHAR2
230847  , p_source_85_meaning    IN VARCHAR2
230848 --Entered Currency Code
230849  , p_source_88            IN VARCHAR2
230850 --Entered Amount
230851  , p_source_91            IN NUMBER
230852 --Currency Conversion Date
230853  , p_source_92            IN DATE
230854 --Currency Conversion Rate
230855  , p_source_93            IN NUMBER
230856 --Currency Conversion Type
230857  , p_source_94            IN VARCHAR2
230858 --Accounted Amount
230859  , p_source_95            IN NUMBER
230860 --Accounting Line Type
230861  , p_source_97            IN NUMBER
230862 )
230863 IS
230864 
230865 l_component_type              VARCHAR2(80);
230866 l_component_code              VARCHAR2(30);
230867 l_component_type_code         VARCHAR2(1);
230868 l_component_appl_id           INTEGER;
230869 l_amb_context_code            VARCHAR2(30);
230870 l_entity_code                 VARCHAR2(30);
230871 l_event_class_code            VARCHAR2(30);
230872 l_ae_header_id                NUMBER;
230873 l_event_type_code             VARCHAR2(30);
230874 l_line_definition_code        VARCHAR2(30);
230875 l_line_definition_owner_code  VARCHAR2(1);
230876 --
230877 -- adr variables
230878 l_segment                     VARCHAR2(30);
230879 l_ccid                        NUMBER;
230880 l_adr_transaction_coa_id      NUMBER;
230881 l_adr_accounting_coa_id       NUMBER;
230882 l_adr_flexfield_segment_code  VARCHAR2(30);
230883 l_adr_flex_value_set_id       NUMBER;
230884 l_adr_value_type_code         VARCHAR2(30);
230885 l_adr_value_combination_id    NUMBER;
230886 l_adr_value_segment_code      VARCHAR2(30);
230887 
230888 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
230889 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
230890 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
230891 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
230892 
230893 -- 4262811 Variables ------------------------------------------------------------------------------------------
230894 l_entered_amt_idx             NUMBER;
230895 l_accted_amt_idx              NUMBER;
230896 l_acc_rev_flag                VARCHAR2(1);
230897 l_accrual_line_num            NUMBER;
230898 l_tmp_amt                     NUMBER;
230899 l_acc_rev_natural_side_code   VARCHAR2(1);
230900 
230901 l_num_entries                 NUMBER;
230902 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
230903 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
230904 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
230905 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
230906 l_recog_line_1                NUMBER;
230907 l_recog_line_2                NUMBER;
230908 
230909 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
230910 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
230911 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
230912 
230913 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
230914 
230915 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
230916 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
230917 
230918 ---------------------------------------------------------------------------------------------------------------
230919 
230920 
230921 --
230922 -- bulk performance
230923 --
230924 l_balance_type_code           VARCHAR2(1);
230925 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
230926 l_log_module                  VARCHAR2(240);
230927 
230928 --
230929 -- Upgrade strategy
230930 --
230931 l_actual_upg_option           VARCHAR2(1);
230932 l_enc_upg_option           VARCHAR2(1);
230933 
230934 --
230935 BEGIN
230936 --
230937 IF g_log_enabled THEN
230938       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_418';
230939 END IF;
230940 --
230941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
230942 
230943       trace
230944          (p_msg      => 'BEGIN of AcctLineType_418'
230945          ,p_level    => C_LEVEL_PROCEDURE
230946          ,p_module   => l_log_module);
230947 
230948 END IF;
230949 --
230950 l_component_type             := 'AMB_JLT';
230951 l_component_code             := 'PI_EXPENSE_211TO';
230952 l_component_type_code        := 'S';
230953 l_component_appl_id          :=  707;
230954 l_amb_context_code           := 'DEFAULT';
230955 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
230956 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
230957 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
230958 l_line_definition_owner_code := 'S';
230959 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
230960 --
230961 l_balance_type_code          := 'A';
230962 l_segment                     := NULL;
230963 l_ccid                        := NULL;
230964 l_adr_transaction_coa_id      := NULL;
230965 l_adr_accounting_coa_id       := NULL;
230966 l_adr_flexfield_segment_code  := NULL;
230967 l_adr_flex_value_set_id       := NULL;
230968 l_adr_value_type_code         := NULL;
230969 l_adr_value_combination_id    := NULL;
230970 l_adr_value_segment_code      := NULL;
230971 
230972 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
230973 l_bflow_class_code           := '';    -- 4219869 Business Flow
230974 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
230975 l_budgetary_control_flag     := 'N';
230976 
230977 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
230978 l_bflow_applied_to_amt       := NULL; -- 5132302
230979 l_entered_amt_idx            := NULL;          -- 4262811
230980 l_accted_amt_idx             := NULL;          -- 4262811
230981 l_acc_rev_flag               := NULL;          -- 4262811
230982 l_accrual_line_num           := NULL;          -- 4262811
230983 l_tmp_amt                    := NULL;          -- 4262811
230984 --
230985  
230986 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
230987     l_balance_type_code <> 'B' THEN
230988 IF NVL(p_source_97,9E125) =  14
230989  THEN 
230990 
230991    --
230992    XLA_AE_LINES_PKG.SetNewLine;
230993 
230994    p_balance_type_code          := l_balance_type_code;
230995    -- set the flag so later we will know whether the gain loss line needs to be created
230996    
230997    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
230998      p_actual_flag :='A';
230999    END IF;
231000 
231001    --
231002    -- bulk performance
231003    --
231004    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
231005                                       p_header_num   => 0); -- 4262811
231006    --
231007    -- set accounting line options
231008    --
231009    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
231010            p_natural_side_code          => 'D'
231011          , p_gain_or_loss_flag          => 'N'
231012          , p_gl_transfer_mode_code      => 'S'
231013          , p_acct_entry_type_code       => 'A'
231014          , p_switch_side_flag           => 'Y'
231015          , p_merge_duplicate_code       => 'N'
231016          );
231017    --
231018    l_acc_rev_natural_side_code := 'C';  -- 4262811
231019    -- 
231020    --
231021    -- set accounting line type info
231022    --
231023    xla_ae_lines_pkg.SetAcctLineType
231024       (p_component_type             => l_component_type
231025       ,p_event_type_code            => l_event_type_code
231026       ,p_line_definition_owner_code => l_line_definition_owner_code
231027       ,p_line_definition_code       => l_line_definition_code
231028       ,p_accounting_line_code       => l_component_code
231029       ,p_accounting_line_type_code  => l_component_type_code
231030       ,p_accounting_line_appl_id    => l_component_appl_id
231031       ,p_amb_context_code           => l_amb_context_code
231032       ,p_entity_code                => l_entity_code
231033       ,p_event_class_code           => l_event_class_code);
231034    --
231035    -- set accounting class
231036    --
231037    xla_ae_lines_pkg.SetAcctClass(
231038            p_accounting_class_code  => 'EXPENSE'
231039          , p_ae_header_id           => l_ae_header_id
231040          );
231041 
231042    --
231043    -- set rounding class
231044    --
231045    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
231046                       'EXPENSE';
231047 
231048    --
231049    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
231050    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
231051    --
231052    -- bulk performance
231053    --
231054    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
231055 
231056    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
231057       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
231058 
231059    -- 4955764
231060    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
231061       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
231062 
231063    -- 4458381 Public Sector Enh
231064    
231065    --
231066    -- set accounting attributes for the line type
231067    --
231068    l_entered_amt_idx := 3;
231069    l_accted_amt_idx  := 8;
231070    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
231071    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
231072    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
231073    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
231074    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
231075    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
231076    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
231077    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
231078    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
231079    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
231080    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
231081    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
231082    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
231083    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
231084    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
231085    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
231086    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
231087 
231088    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
231089    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
231090 
231091    ---------------------------------------------------------------------------------------------------------------
231092    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
231093    ---------------------------------------------------------------------------------------------------------------
231094    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
231095 
231096    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
231097    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
231098 
231099    IF xla_accounting_cache_pkg.GetValueChar
231100          (p_source_code         => 'LEDGER_CATEGORY_CODE'
231101          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
231102    AND l_bflow_method_code = 'PRIOR_ENTRY'
231103 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
231104    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
231105          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
231106        )
231107    THEN
231108          xla_ae_lines_pkg.BflowUpgEntry
231109            (p_business_method_code    => l_bflow_method_code
231110            ,p_business_class_code     => l_bflow_class_code
231111            ,p_balance_type            => l_balance_type_code);
231112    ELSE
231113       NULL;
231114 -- No business flow processing for business flow method of NONE.
231115    END IF;
231116 
231117    --
231118    -- call analytical criteria
231119    --
231120    
231121    --
231122    -- call description
231123    --
231124    
231125 xla_ae_lines_pkg.SetLineDescription(
231126    p_ae_header_id => l_ae_header_id
231127   ,p_description  => Description_1 (
231128      p_application_id         => p_application_id
231129    , p_ae_header_id           => l_ae_header_id 
231130 , p_source_1 => p_source_1
231131 , p_source_2 => p_source_2
231132 , p_source_3 => p_source_3
231133 , p_source_4 => p_source_4
231134 , p_source_5 => p_source_5
231135    )
231136 );
231137 
231138 
231139    --
231140    -- call ADRs
231141    -- Bug 4922099
231142    --
231143    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
231144         (NVL(l_actual_upg_option, 'N') = 'O') OR
231145         (NVL(l_enc_upg_option, 'N') = 'O')
231146       )
231147    THEN
231148    NULL;
231149    --
231150    --
231151    
231152   l_ccid := AcctDerRule_19(
231153            p_application_id           => p_application_id
231154          , p_ae_header_id             => l_ae_header_id 
231155 , p_source_34 => p_source_34
231156          , x_transaction_coa_id       => l_adr_transaction_coa_id
231157          , x_accounting_coa_id        => l_adr_accounting_coa_id
231158          , x_value_type_code          => l_adr_value_type_code
231159          , p_side                     => 'NA'
231160    );
231161 
231162    xla_ae_lines_pkg.set_ccid(
231163     p_code_combination_id          => l_ccid
231164   , p_value_type_code              => l_adr_value_type_code
231165   , p_transaction_coa_id           => l_adr_transaction_coa_id
231166   , p_accounting_coa_id            => l_adr_accounting_coa_id
231167   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
231168   , p_adr_type_code                => 'S'
231169   , p_component_type               => l_component_type
231170   , p_component_code               => l_component_code
231171   , p_component_type_code          => l_component_type_code
231172   , p_component_appl_id            => l_component_appl_id
231173   , p_amb_context_code             => l_amb_context_code
231174   , p_side                         => 'NA'
231175   );
231176 
231177 
231178    --
231179    --
231180    END IF;
231181    --
231182    -- Bug 4922099
231183    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
231184           (NVL(l_enc_upg_option, 'N') = 'O')
231185         ) AND
231186         (l_bflow_method_code = 'PRIOR_ENTRY')
231187       )
231188    THEN
231189       IF
231190       --
231191       1 = 2
231192       --
231193       THEN
231194       xla_accounting_err_pkg.build_message
231195                                     (p_appli_s_name            => 'XLA'
231196                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
231197                                     ,p_token_1                 => 'LINE_NUMBER'
231198                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
231199                                     ,p_token_2                 => 'LINE_TYPE_NAME'
231200                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
231201                                                                              l_component_type
231202                                                                             ,l_component_code
231203                                                                             ,l_component_type_code
231204                                                                             ,l_component_appl_id
231205                                                                             ,l_amb_context_code
231206                                                                             ,l_entity_code
231207                                                                             ,l_event_class_code
231208                                                                            )
231209                                     ,p_token_3                 => 'OWNER'
231210                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
231211                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
231212                                                                           ,p_lookup_code    => l_component_type_code
231213                                                                          )
231214                                     ,p_token_4                 => 'PRODUCT_NAME'
231215                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
231216                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
231217                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
231218                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
231219                                     ,p_ae_header_id            =>  NULL
231220                                        );
231221 
231222         IF (C_LEVEL_ERROR>= g_log_level) THEN
231223                  trace
231224                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
231225                       ,p_level    => C_LEVEL_ERROR
231226                       ,p_module   => l_log_module);
231227         END IF;
231228       END IF;
231229    END IF;
231230    --
231231    --
231232    ------------------------------------------------------------------------------------------------
231233    -- 4219869 Business Flow
231234    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
231235    -- Prior Entry.  Currently, the following code is always generated.
231236    ------------------------------------------------------------------------------------------------
231237    XLA_AE_LINES_PKG.ValidateCurrentLine;
231238 
231239    ------------------------------------------------------------------------------------
231240    -- 4219869 Business Flow
231241    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
231242    ------------------------------------------------------------------------------------
231243    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
231244 
231245    ----------------------------------------------------------------------------------
231246    -- 4219869 Business Flow
231247    -- Update journal entry status -- Need to generate this within IF <condition>
231248    ----------------------------------------------------------------------------------
231249    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
231250          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
231251          ,p_balance_type_code => l_balance_type_code
231252          );
231253 
231254    -------------------------------------------------------------------------------------------
231255    -- 4262811 - Generate the Accrual Reversal lines
231256    -------------------------------------------------------------------------------------------
231257    BEGIN
231258       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
231259                               (g_array_event(p_event_id).array_value_num('header_index'));
231260       IF l_acc_rev_flag IS NULL THEN
231261          l_acc_rev_flag := 'N';
231262       END IF;
231263    EXCEPTION
231264       WHEN OTHERS THEN
231265          l_acc_rev_flag := 'N';
231266    END;
231267    --
231268    IF (l_acc_rev_flag = 'Y') THEN
231269 
231270        -- 4645092  ------------------------------------------------------------------------------
231271        -- To allow MPA report to determine if it should generate report process
231272        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
231273        ------------------------------------------------------------------------------------------
231274 
231275        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
231276        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
231277    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
231278    -- call ADRs
231279    -- Bug 4922099
231280    --
231281    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
231282         (NVL(l_actual_upg_option, 'N') = 'O') OR
231283         (NVL(l_enc_upg_option, 'N') = 'O')
231284       )
231285    THEN
231286    NULL;
231287    --
231288    --
231289    
231290   l_ccid := AcctDerRule_19(
231291            p_application_id           => p_application_id
231292          , p_ae_header_id             => l_ae_header_id 
231293 , p_source_34 => p_source_34
231294          , x_transaction_coa_id       => l_adr_transaction_coa_id
231295          , x_accounting_coa_id        => l_adr_accounting_coa_id
231296          , x_value_type_code          => l_adr_value_type_code
231297          , p_side                     => 'NA'
231298    );
231299 
231300    xla_ae_lines_pkg.set_ccid(
231301     p_code_combination_id          => l_ccid
231302   , p_value_type_code              => l_adr_value_type_code
231303   , p_transaction_coa_id           => l_adr_transaction_coa_id
231304   , p_accounting_coa_id            => l_adr_accounting_coa_id
231305   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
231306   , p_adr_type_code                => 'S'
231307   , p_component_type               => l_component_type
231308   , p_component_code               => l_component_code
231309   , p_component_type_code          => l_component_type_code
231310   , p_component_appl_id            => l_component_appl_id
231311   , p_amb_context_code             => l_amb_context_code
231312   , p_side                         => 'NA'
231313   );
231314 
231315 
231316    --
231317    --
231318    END IF;
231319 
231320        --
231321        -- Update the line information that should be overwritten
231322        --
231323        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
231324                                          p_header_num   => 1);
231325        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
231326 
231327        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
231328 
231329        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
231330           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
231331        END IF;
231332 
231333       --
231334       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
231335       --
231336       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
231337           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
231338       ELSE
231339           ---------------------------------------------------------------------------------------------------
231340           -- 4262811a Switch Sign
231341           ---------------------------------------------------------------------------------------------------
231342           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
231343           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
231344                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
231345           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
231346                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
231347           -- 5132302
231348           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
231349                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
231350 
231351       END IF;
231352 
231353       -- 4955764
231354       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
231355       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
231356 
231357 
231358       XLA_AE_LINES_PKG.ValidateCurrentLine;
231359       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
231360 
231361       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
231362                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
231363                ,p_balance_type_code => l_balance_type_code);
231364 
231365    END IF;
231366 
231367    -----------------------------------------------------------------------------------------
231368    -- 4262811 Multiperiod Accounting
231369    -----------------------------------------------------------------------------------------
231370      -- No MPA option is assigned.
231371 
231372 
231373 END IF;
231374 END IF;
231375 --
231376 
231377 --
231378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
231379    trace
231380       (p_msg      => 'END of AcctLineType_418'
231381       ,p_level    => C_LEVEL_PROCEDURE
231382       ,p_module   => l_log_module);
231383 END IF;
231384 --
231385 EXCEPTION
231386   WHEN xla_exceptions_pkg.application_exception THEN
231387       RAISE;
231388   WHEN OTHERS THEN
231389        xla_exceptions_pkg.raise_message
231390            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_418');
231391 END AcctLineType_418;
231392 --
231393 
231394 ---------------------------------------
231395 --
231396 -- PRIVATE FUNCTION
231397 --         AcctLineType_419
231398 --
231399 ---------------------------------------
231400 PROCEDURE AcctLineType_419 (
231401   p_application_id        IN NUMBER
231402  ,p_event_id              IN NUMBER
231403  ,p_calculate_acctd_flag  IN VARCHAR2
231404  ,p_calculate_g_l_flag    IN VARCHAR2
231405  ,p_actual_flag           IN OUT VARCHAR2
231406  ,p_balance_type_code     OUT VARCHAR2
231407  ,p_gain_or_loss_ref      OUT VARCHAR2
231408  
231409 --TRANSACTION_ID
231410  , p_source_1            IN NUMBER
231411 --Item Concatenated Segments
231412  , p_source_2            IN VARCHAR2
231413 --Transaction Quantity
231414  , p_source_3            IN NUMBER
231415 --Transaction Unit of Measure Code
231416  , p_source_4            IN VARCHAR2
231417 --Inventory Transaction Type Description
231418  , p_source_5            IN VARCHAR2
231419 --Interorg Expense Account
231420  , p_source_34            IN NUMBER
231421 --DISTRIBUTION_IDENTIFIER
231422  , p_source_84            IN NUMBER
231423 --Distribution Type
231424  , p_source_85            IN VARCHAR2
231425  , p_source_85_meaning    IN VARCHAR2
231426 --Entered Currency Code
231427  , p_source_88            IN VARCHAR2
231428 --Entered Amount
231429  , p_source_91            IN NUMBER
231430 --Currency Conversion Date
231431  , p_source_92            IN DATE
231432 --Currency Conversion Rate
231433  , p_source_93            IN NUMBER
231434 --Currency Conversion Type
231435  , p_source_94            IN VARCHAR2
231436 --Accounted Amount
231437  , p_source_95            IN NUMBER
231438 --Accounting Line Type
231439  , p_source_97            IN NUMBER
231440 )
231441 IS
231442 
231443 l_component_type              VARCHAR2(80);
231444 l_component_code              VARCHAR2(30);
231445 l_component_type_code         VARCHAR2(1);
231446 l_component_appl_id           INTEGER;
231447 l_amb_context_code            VARCHAR2(30);
231448 l_entity_code                 VARCHAR2(30);
231449 l_event_class_code            VARCHAR2(30);
231450 l_ae_header_id                NUMBER;
231451 l_event_type_code             VARCHAR2(30);
231452 l_line_definition_code        VARCHAR2(30);
231453 l_line_definition_owner_code  VARCHAR2(1);
231454 --
231455 -- adr variables
231456 l_segment                     VARCHAR2(30);
231457 l_ccid                        NUMBER;
231458 l_adr_transaction_coa_id      NUMBER;
231459 l_adr_accounting_coa_id       NUMBER;
231460 l_adr_flexfield_segment_code  VARCHAR2(30);
231461 l_adr_flex_value_set_id       NUMBER;
231462 l_adr_value_type_code         VARCHAR2(30);
231463 l_adr_value_combination_id    NUMBER;
231464 l_adr_value_segment_code      VARCHAR2(30);
231465 
231466 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
231467 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
231468 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
231469 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
231470 
231471 -- 4262811 Variables ------------------------------------------------------------------------------------------
231472 l_entered_amt_idx             NUMBER;
231473 l_accted_amt_idx              NUMBER;
231474 l_acc_rev_flag                VARCHAR2(1);
231475 l_accrual_line_num            NUMBER;
231476 l_tmp_amt                     NUMBER;
231477 l_acc_rev_natural_side_code   VARCHAR2(1);
231478 
231479 l_num_entries                 NUMBER;
231480 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
231481 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
231482 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
231483 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
231484 l_recog_line_1                NUMBER;
231485 l_recog_line_2                NUMBER;
231486 
231487 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
231488 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
231489 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
231490 
231491 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
231492 
231493 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
231494 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
231495 
231496 ---------------------------------------------------------------------------------------------------------------
231497 
231498 
231499 --
231500 -- bulk performance
231501 --
231502 l_balance_type_code           VARCHAR2(1);
231503 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
231504 l_log_module                  VARCHAR2(240);
231505 
231506 --
231507 -- Upgrade strategy
231508 --
231509 l_actual_upg_option           VARCHAR2(1);
231510 l_enc_upg_option           VARCHAR2(1);
231511 
231512 --
231513 BEGIN
231514 --
231515 IF g_log_enabled THEN
231516       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_419';
231517 END IF;
231518 --
231519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
231520 
231521       trace
231522          (p_msg      => 'BEGIN of AcctLineType_419'
231523          ,p_level    => C_LEVEL_PROCEDURE
231524          ,p_module   => l_log_module);
231525 
231526 END IF;
231527 --
231528 l_component_type             := 'AMB_JLT';
231529 l_component_code             := 'PI_EXPENSE_211TO';
231530 l_component_type_code        := 'S';
231531 l_component_appl_id          :=  707;
231532 l_amb_context_code           := 'DEFAULT';
231533 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
231534 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
231535 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
231536 l_line_definition_owner_code := 'S';
231537 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
231538 --
231539 l_balance_type_code          := 'A';
231540 l_segment                     := NULL;
231541 l_ccid                        := NULL;
231542 l_adr_transaction_coa_id      := NULL;
231543 l_adr_accounting_coa_id       := NULL;
231544 l_adr_flexfield_segment_code  := NULL;
231545 l_adr_flex_value_set_id       := NULL;
231546 l_adr_value_type_code         := NULL;
231547 l_adr_value_combination_id    := NULL;
231548 l_adr_value_segment_code      := NULL;
231549 
231550 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
231551 l_bflow_class_code           := '';    -- 4219869 Business Flow
231552 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
231553 l_budgetary_control_flag     := 'N';
231554 
231555 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
231556 l_bflow_applied_to_amt       := NULL; -- 5132302
231557 l_entered_amt_idx            := NULL;          -- 4262811
231558 l_accted_amt_idx             := NULL;          -- 4262811
231559 l_acc_rev_flag               := NULL;          -- 4262811
231560 l_accrual_line_num           := NULL;          -- 4262811
231561 l_tmp_amt                    := NULL;          -- 4262811
231562 --
231563  
231564 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
231565     l_balance_type_code <> 'B' THEN
231566 IF NVL(p_source_97,9E125) =  14
231567  THEN 
231568 
231569    --
231570    XLA_AE_LINES_PKG.SetNewLine;
231571 
231572    p_balance_type_code          := l_balance_type_code;
231573    -- set the flag so later we will know whether the gain loss line needs to be created
231574    
231575    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
231576      p_actual_flag :='A';
231577    END IF;
231578 
231579    --
231580    -- bulk performance
231581    --
231582    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
231583                                       p_header_num   => 0); -- 4262811
231584    --
231585    -- set accounting line options
231586    --
231587    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
231588            p_natural_side_code          => 'D'
231589          , p_gain_or_loss_flag          => 'N'
231590          , p_gl_transfer_mode_code      => 'S'
231591          , p_acct_entry_type_code       => 'A'
231592          , p_switch_side_flag           => 'Y'
231593          , p_merge_duplicate_code       => 'N'
231594          );
231595    --
231596    l_acc_rev_natural_side_code := 'C';  -- 4262811
231597    -- 
231598    --
231599    -- set accounting line type info
231600    --
231601    xla_ae_lines_pkg.SetAcctLineType
231602       (p_component_type             => l_component_type
231603       ,p_event_type_code            => l_event_type_code
231604       ,p_line_definition_owner_code => l_line_definition_owner_code
231605       ,p_line_definition_code       => l_line_definition_code
231606       ,p_accounting_line_code       => l_component_code
231607       ,p_accounting_line_type_code  => l_component_type_code
231608       ,p_accounting_line_appl_id    => l_component_appl_id
231609       ,p_amb_context_code           => l_amb_context_code
231610       ,p_entity_code                => l_entity_code
231611       ,p_event_class_code           => l_event_class_code);
231612    --
231613    -- set accounting class
231614    --
231615    xla_ae_lines_pkg.SetAcctClass(
231616            p_accounting_class_code  => 'EXPENSE'
231617          , p_ae_header_id           => l_ae_header_id
231618          );
231619 
231620    --
231621    -- set rounding class
231622    --
231623    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
231624                       'EXPENSE';
231625 
231626    --
231627    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
231628    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
231629    --
231630    -- bulk performance
231631    --
231632    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
231633 
231634    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
231635       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
231636 
231637    -- 4955764
231638    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
231639       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
231640 
231641    -- 4458381 Public Sector Enh
231642    
231643    --
231644    -- set accounting attributes for the line type
231645    --
231646    l_entered_amt_idx := 3;
231647    l_accted_amt_idx  := 8;
231648    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
231649    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
231650    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
231651    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
231652    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
231653    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
231654    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
231655    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
231656    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
231657    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
231658    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
231659    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
231660    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
231661    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
231662    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
231663    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
231664    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
231665 
231666    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
231667    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
231668 
231669    ---------------------------------------------------------------------------------------------------------------
231670    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
231671    ---------------------------------------------------------------------------------------------------------------
231672    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
231673 
231674    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
231675    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
231676 
231677    IF xla_accounting_cache_pkg.GetValueChar
231678          (p_source_code         => 'LEDGER_CATEGORY_CODE'
231679          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
231680    AND l_bflow_method_code = 'PRIOR_ENTRY'
231681 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
231682    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
231683          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
231684        )
231685    THEN
231686          xla_ae_lines_pkg.BflowUpgEntry
231687            (p_business_method_code    => l_bflow_method_code
231688            ,p_business_class_code     => l_bflow_class_code
231689            ,p_balance_type            => l_balance_type_code);
231690    ELSE
231691       NULL;
231692 -- No business flow processing for business flow method of NONE.
231693    END IF;
231694 
231695    --
231696    -- call analytical criteria
231697    --
231698    
231699    --
231700    -- call description
231701    --
231702    
231703 xla_ae_lines_pkg.SetLineDescription(
231704    p_ae_header_id => l_ae_header_id
231705   ,p_description  => Description_1 (
231706      p_application_id         => p_application_id
231707    , p_ae_header_id           => l_ae_header_id 
231708 , p_source_1 => p_source_1
231709 , p_source_2 => p_source_2
231710 , p_source_3 => p_source_3
231711 , p_source_4 => p_source_4
231712 , p_source_5 => p_source_5
231713    )
231714 );
231715 
231716 
231717    --
231718    -- call ADRs
231719    -- Bug 4922099
231720    --
231721    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
231722         (NVL(l_actual_upg_option, 'N') = 'O') OR
231723         (NVL(l_enc_upg_option, 'N') = 'O')
231724       )
231725    THEN
231726    NULL;
231727    --
231728    --
231729    
231730   l_ccid := AcctDerRule_19(
231731            p_application_id           => p_application_id
231732          , p_ae_header_id             => l_ae_header_id 
231733 , p_source_34 => p_source_34
231734          , x_transaction_coa_id       => l_adr_transaction_coa_id
231735          , x_accounting_coa_id        => l_adr_accounting_coa_id
231736          , x_value_type_code          => l_adr_value_type_code
231737          , p_side                     => 'NA'
231738    );
231739 
231740    xla_ae_lines_pkg.set_ccid(
231741     p_code_combination_id          => l_ccid
231742   , p_value_type_code              => l_adr_value_type_code
231743   , p_transaction_coa_id           => l_adr_transaction_coa_id
231744   , p_accounting_coa_id            => l_adr_accounting_coa_id
231745   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
231746   , p_adr_type_code                => 'S'
231747   , p_component_type               => l_component_type
231748   , p_component_code               => l_component_code
231749   , p_component_type_code          => l_component_type_code
231750   , p_component_appl_id            => l_component_appl_id
231751   , p_amb_context_code             => l_amb_context_code
231752   , p_side                         => 'NA'
231753   );
231754 
231755 
231756    --
231757    --
231758    END IF;
231759    --
231760    -- Bug 4922099
231761    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
231762           (NVL(l_enc_upg_option, 'N') = 'O')
231763         ) AND
231764         (l_bflow_method_code = 'PRIOR_ENTRY')
231765       )
231766    THEN
231767       IF
231768       --
231769       1 = 2
231770       --
231771       THEN
231772       xla_accounting_err_pkg.build_message
231773                                     (p_appli_s_name            => 'XLA'
231774                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
231775                                     ,p_token_1                 => 'LINE_NUMBER'
231776                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
231777                                     ,p_token_2                 => 'LINE_TYPE_NAME'
231778                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
231779                                                                              l_component_type
231780                                                                             ,l_component_code
231781                                                                             ,l_component_type_code
231782                                                                             ,l_component_appl_id
231783                                                                             ,l_amb_context_code
231784                                                                             ,l_entity_code
231785                                                                             ,l_event_class_code
231786                                                                            )
231787                                     ,p_token_3                 => 'OWNER'
231788                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
231789                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
231790                                                                           ,p_lookup_code    => l_component_type_code
231791                                                                          )
231792                                     ,p_token_4                 => 'PRODUCT_NAME'
231793                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
231794                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
231795                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
231796                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
231797                                     ,p_ae_header_id            =>  NULL
231798                                        );
231799 
231800         IF (C_LEVEL_ERROR>= g_log_level) THEN
231801                  trace
231802                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
231803                       ,p_level    => C_LEVEL_ERROR
231804                       ,p_module   => l_log_module);
231805         END IF;
231806       END IF;
231807    END IF;
231808    --
231809    --
231810    ------------------------------------------------------------------------------------------------
231811    -- 4219869 Business Flow
231812    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
231813    -- Prior Entry.  Currently, the following code is always generated.
231814    ------------------------------------------------------------------------------------------------
231815    XLA_AE_LINES_PKG.ValidateCurrentLine;
231816 
231817    ------------------------------------------------------------------------------------
231818    -- 4219869 Business Flow
231819    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
231820    ------------------------------------------------------------------------------------
231821    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
231822 
231823    ----------------------------------------------------------------------------------
231824    -- 4219869 Business Flow
231825    -- Update journal entry status -- Need to generate this within IF <condition>
231826    ----------------------------------------------------------------------------------
231827    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
231828          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
231829          ,p_balance_type_code => l_balance_type_code
231830          );
231831 
231832    -------------------------------------------------------------------------------------------
231833    -- 4262811 - Generate the Accrual Reversal lines
231834    -------------------------------------------------------------------------------------------
231835    BEGIN
231836       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
231837                               (g_array_event(p_event_id).array_value_num('header_index'));
231838       IF l_acc_rev_flag IS NULL THEN
231839          l_acc_rev_flag := 'N';
231840       END IF;
231841    EXCEPTION
231842       WHEN OTHERS THEN
231843          l_acc_rev_flag := 'N';
231844    END;
231845    --
231846    IF (l_acc_rev_flag = 'Y') THEN
231847 
231848        -- 4645092  ------------------------------------------------------------------------------
231849        -- To allow MPA report to determine if it should generate report process
231850        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
231851        ------------------------------------------------------------------------------------------
231852 
231853        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
231854        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
231855    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
231856    -- call ADRs
231857    -- Bug 4922099
231858    --
231859    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
231860         (NVL(l_actual_upg_option, 'N') = 'O') OR
231861         (NVL(l_enc_upg_option, 'N') = 'O')
231862       )
231863    THEN
231864    NULL;
231865    --
231866    --
231867    
231868   l_ccid := AcctDerRule_19(
231869            p_application_id           => p_application_id
231870          , p_ae_header_id             => l_ae_header_id 
231871 , p_source_34 => p_source_34
231872          , x_transaction_coa_id       => l_adr_transaction_coa_id
231873          , x_accounting_coa_id        => l_adr_accounting_coa_id
231874          , x_value_type_code          => l_adr_value_type_code
231875          , p_side                     => 'NA'
231876    );
231877 
231878    xla_ae_lines_pkg.set_ccid(
231879     p_code_combination_id          => l_ccid
231880   , p_value_type_code              => l_adr_value_type_code
231881   , p_transaction_coa_id           => l_adr_transaction_coa_id
231882   , p_accounting_coa_id            => l_adr_accounting_coa_id
231883   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
231884   , p_adr_type_code                => 'S'
231885   , p_component_type               => l_component_type
231886   , p_component_code               => l_component_code
231887   , p_component_type_code          => l_component_type_code
231888   , p_component_appl_id            => l_component_appl_id
231889   , p_amb_context_code             => l_amb_context_code
231890   , p_side                         => 'NA'
231891   );
231892 
231893 
231894    --
231895    --
231896    END IF;
231897 
231898        --
231899        -- Update the line information that should be overwritten
231900        --
231901        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
231902                                          p_header_num   => 1);
231903        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
231904 
231905        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
231906 
231907        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
231908           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
231909        END IF;
231910 
231911       --
231912       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
231913       --
231914       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
231915           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
231916       ELSE
231917           ---------------------------------------------------------------------------------------------------
231918           -- 4262811a Switch Sign
231919           ---------------------------------------------------------------------------------------------------
231920           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
231921           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
231922                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
231923           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
231924                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
231925           -- 5132302
231926           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
231927                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
231928 
231929       END IF;
231930 
231931       -- 4955764
231932       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
231933       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
231934 
231935 
231936       XLA_AE_LINES_PKG.ValidateCurrentLine;
231937       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
231938 
231939       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
231940                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
231941                ,p_balance_type_code => l_balance_type_code);
231942 
231943    END IF;
231944 
231945    -----------------------------------------------------------------------------------------
231946    -- 4262811 Multiperiod Accounting
231947    -----------------------------------------------------------------------------------------
231948      -- No MPA option is assigned.
231949 
231950 
231951 END IF;
231952 END IF;
231953 --
231954 
231955 --
231956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
231957    trace
231958       (p_msg      => 'END of AcctLineType_419'
231959       ,p_level    => C_LEVEL_PROCEDURE
231960       ,p_module   => l_log_module);
231961 END IF;
231962 --
231963 EXCEPTION
231964   WHEN xla_exceptions_pkg.application_exception THEN
231965       RAISE;
231966   WHEN OTHERS THEN
231967        xla_exceptions_pkg.raise_message
231968            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_419');
231969 END AcctLineType_419;
231970 --
231971 
231972 ---------------------------------------
231973 --
231974 -- PRIVATE FUNCTION
231975 --         AcctLineType_420
231976 --
231977 ---------------------------------------
231978 PROCEDURE AcctLineType_420 (
231979   p_application_id        IN NUMBER
231980  ,p_event_id              IN NUMBER
231981  ,p_calculate_acctd_flag  IN VARCHAR2
231982  ,p_calculate_g_l_flag    IN VARCHAR2
231983  ,p_actual_flag           IN OUT VARCHAR2
231984  ,p_balance_type_code     OUT VARCHAR2
231985  ,p_gain_or_loss_ref      OUT VARCHAR2
231986  
231987 --TRANSACTION_ID
231988  , p_source_1            IN NUMBER
231989 --Item Concatenated Segments
231990  , p_source_2            IN VARCHAR2
231991 --Transaction Quantity
231992  , p_source_3            IN NUMBER
231993 --Transaction Unit of Measure Code
231994  , p_source_4            IN VARCHAR2
231995 --Inventory Transaction Type Description
231996  , p_source_5            IN VARCHAR2
231997 --Product Line Accounting Category Expense Account
231998  , p_source_24            IN NUMBER
231999 --Inventory Organization Expense Account
232000  , p_source_38            IN NUMBER
232001 --Primary Cost Method
232002  , p_source_39            IN NUMBER
232003  , p_source_39_meaning    IN VARCHAR2
232004 --DISTRIBUTION_IDENTIFIER
232005  , p_source_84            IN NUMBER
232006 --Distribution Type
232007  , p_source_85            IN VARCHAR2
232008  , p_source_85_meaning    IN VARCHAR2
232009 --Entered Currency Code
232010  , p_source_88            IN VARCHAR2
232011 --Entered Amount
232012  , p_source_91            IN NUMBER
232013 --Currency Conversion Date
232014  , p_source_92            IN DATE
232015 --Currency Conversion Rate
232016  , p_source_93            IN NUMBER
232017 --Currency Conversion Type
232018  , p_source_94            IN VARCHAR2
232019 --Accounted Amount
232020  , p_source_95            IN NUMBER
232021 --Accounting Line Type
232022  , p_source_97            IN NUMBER
232023 )
232024 IS
232025 
232026 l_component_type              VARCHAR2(80);
232027 l_component_code              VARCHAR2(30);
232028 l_component_type_code         VARCHAR2(1);
232029 l_component_appl_id           INTEGER;
232030 l_amb_context_code            VARCHAR2(30);
232031 l_entity_code                 VARCHAR2(30);
232032 l_event_class_code            VARCHAR2(30);
232033 l_ae_header_id                NUMBER;
232034 l_event_type_code             VARCHAR2(30);
232035 l_line_definition_code        VARCHAR2(30);
232036 l_line_definition_owner_code  VARCHAR2(1);
232037 --
232038 -- adr variables
232039 l_segment                     VARCHAR2(30);
232040 l_ccid                        NUMBER;
232041 l_adr_transaction_coa_id      NUMBER;
232042 l_adr_accounting_coa_id       NUMBER;
232043 l_adr_flexfield_segment_code  VARCHAR2(30);
232044 l_adr_flex_value_set_id       NUMBER;
232045 l_adr_value_type_code         VARCHAR2(30);
232046 l_adr_value_combination_id    NUMBER;
232047 l_adr_value_segment_code      VARCHAR2(30);
232048 
232049 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
232050 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
232051 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
232052 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
232053 
232054 -- 4262811 Variables ------------------------------------------------------------------------------------------
232055 l_entered_amt_idx             NUMBER;
232056 l_accted_amt_idx              NUMBER;
232057 l_acc_rev_flag                VARCHAR2(1);
232058 l_accrual_line_num            NUMBER;
232059 l_tmp_amt                     NUMBER;
232060 l_acc_rev_natural_side_code   VARCHAR2(1);
232061 
232062 l_num_entries                 NUMBER;
232063 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
232064 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
232065 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
232066 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
232067 l_recog_line_1                NUMBER;
232068 l_recog_line_2                NUMBER;
232069 
232070 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
232071 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
232072 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
232073 
232074 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
232075 
232076 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
232077 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
232078 
232079 ---------------------------------------------------------------------------------------------------------------
232080 
232081 
232082 --
232083 -- bulk performance
232084 --
232085 l_balance_type_code           VARCHAR2(1);
232086 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
232087 l_log_module                  VARCHAR2(240);
232088 
232089 --
232090 -- Upgrade strategy
232091 --
232092 l_actual_upg_option           VARCHAR2(1);
232093 l_enc_upg_option           VARCHAR2(1);
232094 
232095 --
232096 BEGIN
232097 --
232098 IF g_log_enabled THEN
232099       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_420';
232100 END IF;
232101 --
232102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
232103 
232104       trace
232105          (p_msg      => 'BEGIN of AcctLineType_420'
232106          ,p_level    => C_LEVEL_PROCEDURE
232107          ,p_module   => l_log_module);
232108 
232109 END IF;
232110 --
232111 l_component_type             := 'AMB_JLT';
232112 l_component_code             := 'PI_EXPENSE_211TO';
232113 l_component_type_code        := 'S';
232114 l_component_appl_id          :=  707;
232115 l_amb_context_code           := 'DEFAULT';
232116 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
232117 l_event_class_code           := 'USER_DEFINE';
232118 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
232119 l_line_definition_owner_code := 'S';
232120 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
232121 --
232122 l_balance_type_code          := 'A';
232123 l_segment                     := NULL;
232124 l_ccid                        := NULL;
232125 l_adr_transaction_coa_id      := NULL;
232126 l_adr_accounting_coa_id       := NULL;
232127 l_adr_flexfield_segment_code  := NULL;
232128 l_adr_flex_value_set_id       := NULL;
232129 l_adr_value_type_code         := NULL;
232130 l_adr_value_combination_id    := NULL;
232131 l_adr_value_segment_code      := NULL;
232132 
232133 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
232134 l_bflow_class_code           := '';    -- 4219869 Business Flow
232135 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
232136 l_budgetary_control_flag     := 'N';
232137 
232138 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
232139 l_bflow_applied_to_amt       := NULL; -- 5132302
232140 l_entered_amt_idx            := NULL;          -- 4262811
232141 l_accted_amt_idx             := NULL;          -- 4262811
232142 l_acc_rev_flag               := NULL;          -- 4262811
232143 l_accrual_line_num           := NULL;          -- 4262811
232144 l_tmp_amt                    := NULL;          -- 4262811
232145 --
232146  
232147 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
232148     l_balance_type_code <> 'B' THEN
232149 IF NVL(p_source_97,9E125) =  9
232150  THEN 
232151 
232152    --
232153    XLA_AE_LINES_PKG.SetNewLine;
232154 
232155    p_balance_type_code          := l_balance_type_code;
232156    -- set the flag so later we will know whether the gain loss line needs to be created
232157    
232158    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
232159      p_actual_flag :='A';
232160    END IF;
232161 
232162    --
232163    -- bulk performance
232164    --
232165    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
232166                                       p_header_num   => 0); -- 4262811
232167    --
232168    -- set accounting line options
232169    --
232170    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
232171            p_natural_side_code          => 'C'
232172          , p_gain_or_loss_flag          => 'N'
232173          , p_gl_transfer_mode_code      => 'S'
232174          , p_acct_entry_type_code       => 'A'
232175          , p_switch_side_flag           => 'Y'
232176          , p_merge_duplicate_code       => 'N'
232177          );
232178    --
232179    l_acc_rev_natural_side_code := 'D';  -- 4262811
232180    -- 
232181    --
232182    -- set accounting line type info
232183    --
232184    xla_ae_lines_pkg.SetAcctLineType
232185       (p_component_type             => l_component_type
232186       ,p_event_type_code            => l_event_type_code
232187       ,p_line_definition_owner_code => l_line_definition_owner_code
232188       ,p_line_definition_code       => l_line_definition_code
232189       ,p_accounting_line_code       => l_component_code
232190       ,p_accounting_line_type_code  => l_component_type_code
232191       ,p_accounting_line_appl_id    => l_component_appl_id
232192       ,p_amb_context_code           => l_amb_context_code
232193       ,p_entity_code                => l_entity_code
232194       ,p_event_class_code           => l_event_class_code);
232195    --
232196    -- set accounting class
232197    --
232198    xla_ae_lines_pkg.SetAcctClass(
232199            p_accounting_class_code  => 'EXPENSE'
232200          , p_ae_header_id           => l_ae_header_id
232201          );
232202 
232203    --
232204    -- set rounding class
232205    --
232206    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
232207                       'EXPENSE';
232208 
232209    --
232210    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
232211    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
232212    --
232213    -- bulk performance
232214    --
232215    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
232216 
232217    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
232218       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
232219 
232220    -- 4955764
232221    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
232222       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
232223 
232224    -- 4458381 Public Sector Enh
232225    
232226    --
232227    -- set accounting attributes for the line type
232228    --
232229    l_entered_amt_idx := 3;
232230    l_accted_amt_idx  := 8;
232231    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
232232    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
232233    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
232234    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
232235    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
232236    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
232237    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
232238    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
232239    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
232240    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
232241    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
232242    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
232243    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
232244    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
232245    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
232246    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
232247    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
232248 
232249    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
232250    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
232251 
232252    ---------------------------------------------------------------------------------------------------------------
232253    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
232254    ---------------------------------------------------------------------------------------------------------------
232255    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
232256 
232257    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
232258    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
232259 
232260    IF xla_accounting_cache_pkg.GetValueChar
232261          (p_source_code         => 'LEDGER_CATEGORY_CODE'
232262          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
232263    AND l_bflow_method_code = 'PRIOR_ENTRY'
232264 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
232265    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
232266          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
232267        )
232268    THEN
232269          xla_ae_lines_pkg.BflowUpgEntry
232270            (p_business_method_code    => l_bflow_method_code
232271            ,p_business_class_code     => l_bflow_class_code
232272            ,p_balance_type            => l_balance_type_code);
232273    ELSE
232274       NULL;
232275 -- No business flow processing for business flow method of NONE.
232276    END IF;
232277 
232278    --
232279    -- call analytical criteria
232280    --
232281    
232282    --
232283    -- call description
232284    --
232285    
232286 xla_ae_lines_pkg.SetLineDescription(
232287    p_ae_header_id => l_ae_header_id
232288   ,p_description  => Description_1 (
232289      p_application_id         => p_application_id
232290    , p_ae_header_id           => l_ae_header_id 
232291 , p_source_1 => p_source_1
232292 , p_source_2 => p_source_2
232293 , p_source_3 => p_source_3
232294 , p_source_4 => p_source_4
232295 , p_source_5 => p_source_5
232296    )
232297 );
232298 
232299 
232300    --
232301    -- call ADRs
232302    -- Bug 4922099
232303    --
232304    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
232305         (NVL(l_actual_upg_option, 'N') = 'O') OR
232306         (NVL(l_enc_upg_option, 'N') = 'O')
232307       )
232308    THEN
232309    NULL;
232310    --
232311    --
232312    
232313   l_ccid := AcctDerRule_23(
232314            p_application_id           => p_application_id
232315          , p_ae_header_id             => l_ae_header_id 
232316 , p_source_24 => p_source_24
232317 , p_source_38 => p_source_38
232318 , p_source_39 => p_source_39
232319 , p_source_39_meaning => p_source_39_meaning
232320          , x_transaction_coa_id       => l_adr_transaction_coa_id
232321          , x_accounting_coa_id        => l_adr_accounting_coa_id
232322          , x_value_type_code          => l_adr_value_type_code
232323          , p_side                     => 'NA'
232324    );
232325 
232326    xla_ae_lines_pkg.set_ccid(
232327     p_code_combination_id          => l_ccid
232328   , p_value_type_code              => l_adr_value_type_code
232329   , p_transaction_coa_id           => l_adr_transaction_coa_id
232330   , p_accounting_coa_id            => l_adr_accounting_coa_id
232331   , p_adr_code                     => 'PI_INTERORG_SHIP_EXPENSE'
232332   , p_adr_type_code                => 'S'
232333   , p_component_type               => l_component_type
232334   , p_component_code               => l_component_code
232335   , p_component_type_code          => l_component_type_code
232336   , p_component_appl_id            => l_component_appl_id
232337   , p_amb_context_code             => l_amb_context_code
232338   , p_side                         => 'NA'
232339   );
232340 
232341 
232342    --
232343    --
232344    END IF;
232345    --
232346    -- Bug 4922099
232347    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
232348           (NVL(l_enc_upg_option, 'N') = 'O')
232349         ) AND
232350         (l_bflow_method_code = 'PRIOR_ENTRY')
232351       )
232352    THEN
232353       IF
232354       --
232355       1 = 2
232356       --
232357       THEN
232358       xla_accounting_err_pkg.build_message
232359                                     (p_appli_s_name            => 'XLA'
232360                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
232361                                     ,p_token_1                 => 'LINE_NUMBER'
232362                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
232363                                     ,p_token_2                 => 'LINE_TYPE_NAME'
232364                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
232365                                                                              l_component_type
232366                                                                             ,l_component_code
232367                                                                             ,l_component_type_code
232368                                                                             ,l_component_appl_id
232369                                                                             ,l_amb_context_code
232370                                                                             ,l_entity_code
232371                                                                             ,l_event_class_code
232372                                                                            )
232373                                     ,p_token_3                 => 'OWNER'
232374                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
232375                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
232376                                                                           ,p_lookup_code    => l_component_type_code
232377                                                                          )
232378                                     ,p_token_4                 => 'PRODUCT_NAME'
232379                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
232380                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
232381                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
232382                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
232383                                     ,p_ae_header_id            =>  NULL
232384                                        );
232385 
232386         IF (C_LEVEL_ERROR>= g_log_level) THEN
232387                  trace
232388                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
232389                       ,p_level    => C_LEVEL_ERROR
232390                       ,p_module   => l_log_module);
232391         END IF;
232392       END IF;
232393    END IF;
232394    --
232395    --
232396    ------------------------------------------------------------------------------------------------
232397    -- 4219869 Business Flow
232398    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
232399    -- Prior Entry.  Currently, the following code is always generated.
232400    ------------------------------------------------------------------------------------------------
232401    XLA_AE_LINES_PKG.ValidateCurrentLine;
232402 
232403    ------------------------------------------------------------------------------------
232404    -- 4219869 Business Flow
232405    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
232406    ------------------------------------------------------------------------------------
232407    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
232408 
232409    ----------------------------------------------------------------------------------
232410    -- 4219869 Business Flow
232411    -- Update journal entry status -- Need to generate this within IF <condition>
232412    ----------------------------------------------------------------------------------
232413    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
232414          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
232415          ,p_balance_type_code => l_balance_type_code
232416          );
232417 
232418    -------------------------------------------------------------------------------------------
232419    -- 4262811 - Generate the Accrual Reversal lines
232420    -------------------------------------------------------------------------------------------
232421    BEGIN
232422       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
232423                               (g_array_event(p_event_id).array_value_num('header_index'));
232424       IF l_acc_rev_flag IS NULL THEN
232425          l_acc_rev_flag := 'N';
232426       END IF;
232427    EXCEPTION
232428       WHEN OTHERS THEN
232429          l_acc_rev_flag := 'N';
232430    END;
232431    --
232432    IF (l_acc_rev_flag = 'Y') THEN
232433 
232434        -- 4645092  ------------------------------------------------------------------------------
232435        -- To allow MPA report to determine if it should generate report process
232436        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
232437        ------------------------------------------------------------------------------------------
232438 
232439        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
232440        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
232441    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
232442    -- call ADRs
232443    -- Bug 4922099
232444    --
232445    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
232446         (NVL(l_actual_upg_option, 'N') = 'O') OR
232447         (NVL(l_enc_upg_option, 'N') = 'O')
232448       )
232449    THEN
232450    NULL;
232451    --
232452    --
232453    
232454   l_ccid := AcctDerRule_23(
232455            p_application_id           => p_application_id
232456          , p_ae_header_id             => l_ae_header_id 
232457 , p_source_24 => p_source_24
232458 , p_source_38 => p_source_38
232459 , p_source_39 => p_source_39
232460 , p_source_39_meaning => p_source_39_meaning
232461          , x_transaction_coa_id       => l_adr_transaction_coa_id
232462          , x_accounting_coa_id        => l_adr_accounting_coa_id
232463          , x_value_type_code          => l_adr_value_type_code
232464          , p_side                     => 'NA'
232465    );
232466 
232467    xla_ae_lines_pkg.set_ccid(
232468     p_code_combination_id          => l_ccid
232469   , p_value_type_code              => l_adr_value_type_code
232470   , p_transaction_coa_id           => l_adr_transaction_coa_id
232471   , p_accounting_coa_id            => l_adr_accounting_coa_id
232472   , p_adr_code                     => 'PI_INTERORG_SHIP_EXPENSE'
232473   , p_adr_type_code                => 'S'
232474   , p_component_type               => l_component_type
232475   , p_component_code               => l_component_code
232476   , p_component_type_code          => l_component_type_code
232477   , p_component_appl_id            => l_component_appl_id
232478   , p_amb_context_code             => l_amb_context_code
232479   , p_side                         => 'NA'
232480   );
232481 
232482 
232483    --
232484    --
232485    END IF;
232486 
232487        --
232488        -- Update the line information that should be overwritten
232489        --
232490        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
232491                                          p_header_num   => 1);
232492        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
232493 
232494        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
232495 
232496        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
232497           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
232498        END IF;
232499 
232500       --
232501       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
232502       --
232503       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
232504           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
232505       ELSE
232506           ---------------------------------------------------------------------------------------------------
232507           -- 4262811a Switch Sign
232508           ---------------------------------------------------------------------------------------------------
232509           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
232510           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
232511                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
232512           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
232513                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
232514           -- 5132302
232515           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
232516                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
232517 
232518       END IF;
232519 
232520       -- 4955764
232521       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
232522       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
232523 
232524 
232525       XLA_AE_LINES_PKG.ValidateCurrentLine;
232526       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
232527 
232528       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
232529                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
232530                ,p_balance_type_code => l_balance_type_code);
232531 
232532    END IF;
232533 
232534    -----------------------------------------------------------------------------------------
232535    -- 4262811 Multiperiod Accounting
232536    -----------------------------------------------------------------------------------------
232537      -- No MPA option is assigned.
232538 
232539 
232540 END IF;
232541 END IF;
232542 --
232543 
232544 --
232545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
232546    trace
232547       (p_msg      => 'END of AcctLineType_420'
232548       ,p_level    => C_LEVEL_PROCEDURE
232549       ,p_module   => l_log_module);
232550 END IF;
232551 --
232552 EXCEPTION
232553   WHEN xla_exceptions_pkg.application_exception THEN
232554       RAISE;
232555   WHEN OTHERS THEN
232556        xla_exceptions_pkg.raise_message
232557            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_420');
232558 END AcctLineType_420;
232559 --
232560 
232561 ---------------------------------------
232562 --
232563 -- PRIVATE FUNCTION
232564 --         AcctLineType_421
232565 --
232566 ---------------------------------------
232567 PROCEDURE AcctLineType_421 (
232568   p_application_id        IN NUMBER
232569  ,p_event_id              IN NUMBER
232570  ,p_calculate_acctd_flag  IN VARCHAR2
232571  ,p_calculate_g_l_flag    IN VARCHAR2
232572  ,p_actual_flag           IN OUT VARCHAR2
232573  ,p_balance_type_code     OUT VARCHAR2
232574  ,p_gain_or_loss_ref      OUT VARCHAR2
232575  
232576 --TRANSACTION_ID
232577  , p_source_1            IN NUMBER
232578 --Item Concatenated Segments
232579  , p_source_2            IN VARCHAR2
232580 --Transaction Quantity
232581  , p_source_3            IN NUMBER
232582 --Transaction Unit of Measure Code
232583  , p_source_4            IN VARCHAR2
232584 --Inventory Transaction Type Description
232585  , p_source_5            IN VARCHAR2
232586 --Product Line Accounting Category Expense Account
232587  , p_source_24            IN NUMBER
232588 --Applied to Application ID
232589  , p_source_79            IN NUMBER
232590 --Applied to Distribution Link Type
232591  , p_source_80            IN VARCHAR2
232592 --Applied to Entity Code
232593  , p_source_81            IN VARCHAR2
232594 --Applied To Purchase Document Identifier
232595  , p_source_83            IN NUMBER
232596 --DISTRIBUTION_IDENTIFIER
232597  , p_source_84            IN NUMBER
232598 --Distribution Type
232599  , p_source_85            IN VARCHAR2
232600  , p_source_85_meaning    IN VARCHAR2
232601 --PO Budget Account
232602  , p_source_86            IN NUMBER
232603 --Encumbrance Reversal Amount Entered
232604  , p_source_87            IN NUMBER
232605 --Entered Currency Code
232606  , p_source_88            IN VARCHAR2
232607 --Transaction Encumbrance Reversal Amount
232608  , p_source_89            IN NUMBER
232609 --Entered Amount
232610  , p_source_91            IN NUMBER
232611 --Currency Conversion Date
232612  , p_source_92            IN DATE
232613 --Currency Conversion Rate
232614  , p_source_93            IN NUMBER
232615 --Currency Conversion Type
232616  , p_source_94            IN VARCHAR2
232617 --Accounted Amount
232618  , p_source_95            IN NUMBER
232619 --Purchasing Encumbrance Type Identifier
232620  , p_source_96            IN NUMBER
232621 --Accounting Line Type
232622  , p_source_97            IN NUMBER
232623 --Costing Encumbrance Upgrade Option
232624  , p_source_100            IN VARCHAR2
232625 --TXN_PO_DISTRIBUTION_ID
232626  , p_source_101            IN NUMBER
232627 )
232628 IS
232629 
232630 l_component_type              VARCHAR2(80);
232631 l_component_code              VARCHAR2(30);
232632 l_component_type_code         VARCHAR2(1);
232633 l_component_appl_id           INTEGER;
232634 l_amb_context_code            VARCHAR2(30);
232635 l_entity_code                 VARCHAR2(30);
232636 l_event_class_code            VARCHAR2(30);
232637 l_ae_header_id                NUMBER;
232638 l_event_type_code             VARCHAR2(30);
232639 l_line_definition_code        VARCHAR2(30);
232640 l_line_definition_owner_code  VARCHAR2(1);
232641 --
232642 -- adr variables
232643 l_segment                     VARCHAR2(30);
232644 l_ccid                        NUMBER;
232645 l_adr_transaction_coa_id      NUMBER;
232646 l_adr_accounting_coa_id       NUMBER;
232647 l_adr_flexfield_segment_code  VARCHAR2(30);
232648 l_adr_flex_value_set_id       NUMBER;
232649 l_adr_value_type_code         VARCHAR2(30);
232650 l_adr_value_combination_id    NUMBER;
232651 l_adr_value_segment_code      VARCHAR2(30);
232652 
232653 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
232654 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
232655 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
232656 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
232657 
232658 -- 4262811 Variables ------------------------------------------------------------------------------------------
232659 l_entered_amt_idx             NUMBER;
232660 l_accted_amt_idx              NUMBER;
232661 l_acc_rev_flag                VARCHAR2(1);
232662 l_accrual_line_num            NUMBER;
232663 l_tmp_amt                     NUMBER;
232664 l_acc_rev_natural_side_code   VARCHAR2(1);
232665 
232666 l_num_entries                 NUMBER;
232667 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
232668 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
232669 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
232670 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
232671 l_recog_line_1                NUMBER;
232672 l_recog_line_2                NUMBER;
232673 
232674 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
232675 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
232676 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
232677 
232678 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
232679 
232680 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
232681 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
232682 
232683 ---------------------------------------------------------------------------------------------------------------
232684 
232685 
232686 --
232687 -- bulk performance
232688 --
232689 l_balance_type_code           VARCHAR2(1);
232690 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
232691 l_log_module                  VARCHAR2(240);
232692 
232693 --
232694 -- Upgrade strategy
232695 --
232696 l_actual_upg_option           VARCHAR2(1);
232697 l_enc_upg_option           VARCHAR2(1);
232698 
232699 --
232700 BEGIN
232701 --
232702 IF g_log_enabled THEN
232703       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_421';
232704 END IF;
232705 --
232706 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
232707 
232708       trace
232709          (p_msg      => 'BEGIN of AcctLineType_421'
232710          ,p_level    => C_LEVEL_PROCEDURE
232711          ,p_module   => l_log_module);
232712 
232713 END IF;
232714 --
232715 l_component_type             := 'AMB_JLT';
232716 l_component_code             := 'PI_EXP_LOG_PO_DEL_INV';
232717 l_component_type_code        := 'S';
232718 l_component_appl_id          :=  707;
232719 l_amb_context_code           := 'DEFAULT';
232720 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
232721 l_event_class_code           := 'PURCHASE_ORDER';
232722 l_event_type_code            := 'LOG_PO_DEL_INV';
232723 l_line_definition_owner_code := 'S';
232724 l_line_definition_code       := 'PI_LOG_DEL_INV';
232725 --
232726 l_balance_type_code          := 'A';
232727 l_segment                     := NULL;
232728 l_ccid                        := NULL;
232729 l_adr_transaction_coa_id      := NULL;
232730 l_adr_accounting_coa_id       := NULL;
232731 l_adr_flexfield_segment_code  := NULL;
232732 l_adr_flex_value_set_id       := NULL;
232733 l_adr_value_type_code         := NULL;
232734 l_adr_value_combination_id    := NULL;
232735 l_adr_value_segment_code      := NULL;
232736 
232737 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
232738 l_bflow_class_code           := '';    -- 4219869 Business Flow
232739 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
232740 l_budgetary_control_flag     := 'N';
232741 
232742 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
232743 l_bflow_applied_to_amt       := NULL; -- 5132302
232744 l_entered_amt_idx            := NULL;          -- 4262811
232745 l_accted_amt_idx             := NULL;          -- 4262811
232746 l_acc_rev_flag               := NULL;          -- 4262811
232747 l_accrual_line_num           := NULL;          -- 4262811
232748 l_tmp_amt                    := NULL;          -- 4262811
232749 --
232750  
232751 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
232752     l_balance_type_code <> 'B' THEN
232753 IF NVL(p_source_97,9E125) =  1
232754  THEN 
232755 
232756    --
232757    XLA_AE_LINES_PKG.SetNewLine;
232758 
232759    p_balance_type_code          := l_balance_type_code;
232760    -- set the flag so later we will know whether the gain loss line needs to be created
232761    
232762    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
232763      p_actual_flag :='A';
232764    END IF;
232765 
232766    --
232767    -- bulk performance
232768    --
232769    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
232770                                       p_header_num   => 0); -- 4262811
232771    --
232772    -- set accounting line options
232773    --
232774    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
232775            p_natural_side_code          => 'D'
232776          , p_gain_or_loss_flag          => 'N'
232777          , p_gl_transfer_mode_code      => 'S'
232778          , p_acct_entry_type_code       => 'A'
232779          , p_switch_side_flag           => 'Y'
232780          , p_merge_duplicate_code       => 'N'
232781          );
232782    --
232783    l_acc_rev_natural_side_code := 'C';  -- 4262811
232784    -- 
232785    --
232786    -- set accounting line type info
232787    --
232788    xla_ae_lines_pkg.SetAcctLineType
232789       (p_component_type             => l_component_type
232790       ,p_event_type_code            => l_event_type_code
232791       ,p_line_definition_owner_code => l_line_definition_owner_code
232792       ,p_line_definition_code       => l_line_definition_code
232793       ,p_accounting_line_code       => l_component_code
232794       ,p_accounting_line_type_code  => l_component_type_code
232795       ,p_accounting_line_appl_id    => l_component_appl_id
232796       ,p_amb_context_code           => l_amb_context_code
232797       ,p_entity_code                => l_entity_code
232798       ,p_event_class_code           => l_event_class_code);
232799    --
232800    -- set accounting class
232801    --
232802    xla_ae_lines_pkg.SetAcctClass(
232803            p_accounting_class_code  => 'EXPENSE'
232804          , p_ae_header_id           => l_ae_header_id
232805          );
232806 
232807    --
232808    -- set rounding class
232809    --
232810    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
232811                       'EXPENSE';
232812 
232813    --
232814    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
232815    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
232816    --
232817    -- bulk performance
232818    --
232819    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
232820 
232821    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
232822       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
232823 
232824    -- 4955764
232825    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
232826       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
232827 
232828    -- 4458381 Public Sector Enh
232829    
232830    --
232831    -- set accounting attributes for the line type
232832    --
232833    l_entered_amt_idx := 17;
232834    l_accted_amt_idx  := 22;
232835    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
232836    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
232837    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
232838    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
232839    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
232840    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
232841    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
232842    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
232843    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
232844    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
232845    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
232846    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
232847    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
232848    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
232849    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
232850    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
232851    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
232852    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
232853    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
232854    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
232855    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
232856    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
232857    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
232858    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
232859    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
232860    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
232861    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
232862    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
232863    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
232864    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
232865    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
232866    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
232867    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
232868    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
232869    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
232870    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
232871    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
232872    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
232873    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
232874    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
232875    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
232876    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
232877    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
232878    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
232879    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
232880    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
232881    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
232882    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
232883    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
232884 
232885    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
232886    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
232887 
232888    ---------------------------------------------------------------------------------------------------------------
232889    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
232890    ---------------------------------------------------------------------------------------------------------------
232891    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
232892 
232893    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
232894    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
232895 
232896    IF xla_accounting_cache_pkg.GetValueChar
232897          (p_source_code         => 'LEDGER_CATEGORY_CODE'
232898          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
232899    AND l_bflow_method_code = 'PRIOR_ENTRY'
232900 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
232901    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
232902          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
232903        )
232904    THEN
232905          xla_ae_lines_pkg.BflowUpgEntry
232906            (p_business_method_code    => l_bflow_method_code
232907            ,p_business_class_code     => l_bflow_class_code
232908            ,p_balance_type            => l_balance_type_code);
232909    ELSE
232910       NULL;
232911 -- No business flow processing for business flow method of NONE.
232912    END IF;
232913 
232914    --
232915    -- call analytical criteria
232916    --
232917    
232918    --
232919    -- call description
232920    --
232921    
232922 xla_ae_lines_pkg.SetLineDescription(
232923    p_ae_header_id => l_ae_header_id
232924   ,p_description  => Description_1 (
232925      p_application_id         => p_application_id
232926    , p_ae_header_id           => l_ae_header_id 
232927 , p_source_1 => p_source_1
232928 , p_source_2 => p_source_2
232929 , p_source_3 => p_source_3
232930 , p_source_4 => p_source_4
232931 , p_source_5 => p_source_5
232932    )
232933 );
232934 
232935 
232936    --
232937    -- call ADRs
232938    -- Bug 4922099
232939    --
232940    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
232941         (NVL(l_actual_upg_option, 'N') = 'O') OR
232942         (NVL(l_enc_upg_option, 'N') = 'O')
232943       )
232944    THEN
232945    NULL;
232946    --
232947    --
232948    
232949   l_ccid := AcctDerRule_13(
232950            p_application_id           => p_application_id
232951          , p_ae_header_id             => l_ae_header_id 
232952 , p_source_24 => p_source_24
232953          , x_transaction_coa_id       => l_adr_transaction_coa_id
232954          , x_accounting_coa_id        => l_adr_accounting_coa_id
232955          , x_value_type_code          => l_adr_value_type_code
232956          , p_side                     => 'NA'
232957    );
232958 
232959    xla_ae_lines_pkg.set_ccid(
232960     p_code_combination_id          => l_ccid
232961   , p_value_type_code              => l_adr_value_type_code
232962   , p_transaction_coa_id           => l_adr_transaction_coa_id
232963   , p_accounting_coa_id            => l_adr_accounting_coa_id
232964   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
232965   , p_adr_type_code                => 'S'
232966   , p_component_type               => l_component_type
232967   , p_component_code               => l_component_code
232968   , p_component_type_code          => l_component_type_code
232969   , p_component_appl_id            => l_component_appl_id
232970   , p_amb_context_code             => l_amb_context_code
232971   , p_side                         => 'NA'
232972   );
232973 
232974 
232975    --
232976    --
232977    END IF;
232978    --
232979    -- Bug 4922099
232980    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
232981           (NVL(l_enc_upg_option, 'N') = 'O')
232982         ) AND
232983         (l_bflow_method_code = 'PRIOR_ENTRY')
232984       )
232985    THEN
232986       IF
232987       --
232988       1 = 2
232989       --
232990       THEN
232991       xla_accounting_err_pkg.build_message
232992                                     (p_appli_s_name            => 'XLA'
232993                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
232994                                     ,p_token_1                 => 'LINE_NUMBER'
232995                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
232996                                     ,p_token_2                 => 'LINE_TYPE_NAME'
232997                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
232998                                                                              l_component_type
232999                                                                             ,l_component_code
233000                                                                             ,l_component_type_code
233001                                                                             ,l_component_appl_id
233002                                                                             ,l_amb_context_code
233003                                                                             ,l_entity_code
233004                                                                             ,l_event_class_code
233005                                                                            )
233006                                     ,p_token_3                 => 'OWNER'
233007                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
233008                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
233009                                                                           ,p_lookup_code    => l_component_type_code
233010                                                                          )
233011                                     ,p_token_4                 => 'PRODUCT_NAME'
233012                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
233013                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
233014                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
233015                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
233016                                     ,p_ae_header_id            =>  NULL
233017                                        );
233018 
233019         IF (C_LEVEL_ERROR>= g_log_level) THEN
233020                  trace
233021                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
233022                       ,p_level    => C_LEVEL_ERROR
233023                       ,p_module   => l_log_module);
233024         END IF;
233025       END IF;
233026    END IF;
233027    --
233028    --
233029    ------------------------------------------------------------------------------------------------
233030    -- 4219869 Business Flow
233031    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
233032    -- Prior Entry.  Currently, the following code is always generated.
233033    ------------------------------------------------------------------------------------------------
233034    XLA_AE_LINES_PKG.ValidateCurrentLine;
233035 
233036    ------------------------------------------------------------------------------------
233037    -- 4219869 Business Flow
233038    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
233039    ------------------------------------------------------------------------------------
233040    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
233041 
233042    ----------------------------------------------------------------------------------
233043    -- 4219869 Business Flow
233044    -- Update journal entry status -- Need to generate this within IF <condition>
233045    ----------------------------------------------------------------------------------
233046    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
233047          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
233048          ,p_balance_type_code => l_balance_type_code
233049          );
233050 
233051    -------------------------------------------------------------------------------------------
233052    -- 4262811 - Generate the Accrual Reversal lines
233053    -------------------------------------------------------------------------------------------
233054    BEGIN
233055       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
233056                               (g_array_event(p_event_id).array_value_num('header_index'));
233057       IF l_acc_rev_flag IS NULL THEN
233058          l_acc_rev_flag := 'N';
233059       END IF;
233060    EXCEPTION
233061       WHEN OTHERS THEN
233062          l_acc_rev_flag := 'N';
233063    END;
233064    --
233065    IF (l_acc_rev_flag = 'Y') THEN
233066 
233067        -- 4645092  ------------------------------------------------------------------------------
233068        -- To allow MPA report to determine if it should generate report process
233069        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
233070        ------------------------------------------------------------------------------------------
233071 
233072        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
233073        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
233074    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
233075    -- call ADRs
233076    -- Bug 4922099
233077    --
233078    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
233079         (NVL(l_actual_upg_option, 'N') = 'O') OR
233080         (NVL(l_enc_upg_option, 'N') = 'O')
233081       )
233082    THEN
233083    NULL;
233084    --
233085    --
233086    
233087   l_ccid := AcctDerRule_13(
233088            p_application_id           => p_application_id
233089          , p_ae_header_id             => l_ae_header_id 
233090 , p_source_24 => p_source_24
233091          , x_transaction_coa_id       => l_adr_transaction_coa_id
233092          , x_accounting_coa_id        => l_adr_accounting_coa_id
233093          , x_value_type_code          => l_adr_value_type_code
233094          , p_side                     => 'NA'
233095    );
233096 
233097    xla_ae_lines_pkg.set_ccid(
233098     p_code_combination_id          => l_ccid
233099   , p_value_type_code              => l_adr_value_type_code
233100   , p_transaction_coa_id           => l_adr_transaction_coa_id
233101   , p_accounting_coa_id            => l_adr_accounting_coa_id
233102   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
233103   , p_adr_type_code                => 'S'
233104   , p_component_type               => l_component_type
233105   , p_component_code               => l_component_code
233106   , p_component_type_code          => l_component_type_code
233107   , p_component_appl_id            => l_component_appl_id
233108   , p_amb_context_code             => l_amb_context_code
233109   , p_side                         => 'NA'
233110   );
233111 
233112 
233113    --
233114    --
233115    END IF;
233116 
233117        --
233118        -- Update the line information that should be overwritten
233119        --
233120        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
233121                                          p_header_num   => 1);
233122        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
233123 
233124        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
233125 
233126        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
233127           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
233128        END IF;
233129 
233130       --
233131       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
233132       --
233133       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
233134           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
233135       ELSE
233136           ---------------------------------------------------------------------------------------------------
233137           -- 4262811a Switch Sign
233138           ---------------------------------------------------------------------------------------------------
233139           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
233140           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
233141                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
233142           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
233143                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
233144           -- 5132302
233145           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
233146                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
233147 
233148       END IF;
233149 
233150       -- 4955764
233151       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
233152       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
233153 
233154 
233155       XLA_AE_LINES_PKG.ValidateCurrentLine;
233156       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
233157 
233158       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
233159                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
233160                ,p_balance_type_code => l_balance_type_code);
233161 
233162    END IF;
233163 
233164    -----------------------------------------------------------------------------------------
233165    -- 4262811 Multiperiod Accounting
233166    -----------------------------------------------------------------------------------------
233167      -- No MPA option is assigned.
233168 
233169 
233170 END IF;
233171 END IF;
233172 --
233173 
233174 --
233175 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
233176    trace
233177       (p_msg      => 'END of AcctLineType_421'
233178       ,p_level    => C_LEVEL_PROCEDURE
233179       ,p_module   => l_log_module);
233180 END IF;
233181 --
233182 EXCEPTION
233183   WHEN xla_exceptions_pkg.application_exception THEN
233184       RAISE;
233185   WHEN OTHERS THEN
233186        xla_exceptions_pkg.raise_message
233187            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_421');
233188 END AcctLineType_421;
233189 --
233190 
233191 ---------------------------------------
233192 --
233193 -- PRIVATE FUNCTION
233194 --         AcctLineType_422
233195 --
233196 ---------------------------------------
233197 PROCEDURE AcctLineType_422 (
233198   p_application_id        IN NUMBER
233199  ,p_event_id              IN NUMBER
233200  ,p_calculate_acctd_flag  IN VARCHAR2
233201  ,p_calculate_g_l_flag    IN VARCHAR2
233202  ,p_actual_flag           IN OUT VARCHAR2
233203  ,p_balance_type_code     OUT VARCHAR2
233204  ,p_gain_or_loss_ref      OUT VARCHAR2
233205  
233206 --TRANSACTION_ID
233207  , p_source_1            IN NUMBER
233208 --Item Concatenated Segments
233209  , p_source_2            IN VARCHAR2
233210 --Transaction Quantity
233211  , p_source_3            IN NUMBER
233212 --Transaction Unit of Measure Code
233213  , p_source_4            IN VARCHAR2
233214 --Inventory Transaction Type Description
233215  , p_source_5            IN VARCHAR2
233216 --Product Line Accounting Category Expense Account
233217  , p_source_24            IN NUMBER
233218 --Applied to Application ID
233219  , p_source_79            IN NUMBER
233220 --Applied to Distribution Link Type
233221  , p_source_80            IN VARCHAR2
233222 --Applied to Entity Code
233223  , p_source_81            IN VARCHAR2
233224 --Applied To Purchase Document Identifier
233225  , p_source_83            IN NUMBER
233226 --DISTRIBUTION_IDENTIFIER
233227  , p_source_84            IN NUMBER
233228 --Distribution Type
233229  , p_source_85            IN VARCHAR2
233230  , p_source_85_meaning    IN VARCHAR2
233231 --PO Budget Account
233232  , p_source_86            IN NUMBER
233233 --Encumbrance Reversal Amount Entered
233234  , p_source_87            IN NUMBER
233235 --Entered Currency Code
233236  , p_source_88            IN VARCHAR2
233237 --Transaction Encumbrance Reversal Amount
233238  , p_source_89            IN NUMBER
233239 --Entered Amount
233240  , p_source_91            IN NUMBER
233241 --Currency Conversion Date
233242  , p_source_92            IN DATE
233243 --Currency Conversion Rate
233244  , p_source_93            IN NUMBER
233245 --Currency Conversion Type
233246  , p_source_94            IN VARCHAR2
233247 --Accounted Amount
233248  , p_source_95            IN NUMBER
233249 --Purchasing Encumbrance Type Identifier
233250  , p_source_96            IN NUMBER
233251 --Accounting Line Type
233252  , p_source_97            IN NUMBER
233253 --Costing Encumbrance Upgrade Option
233254  , p_source_100            IN VARCHAR2
233255 --TXN_PO_DISTRIBUTION_ID
233256  , p_source_101            IN NUMBER
233257 )
233258 IS
233259 
233260 l_component_type              VARCHAR2(80);
233261 l_component_code              VARCHAR2(30);
233262 l_component_type_code         VARCHAR2(1);
233263 l_component_appl_id           INTEGER;
233264 l_amb_context_code            VARCHAR2(30);
233265 l_entity_code                 VARCHAR2(30);
233266 l_event_class_code            VARCHAR2(30);
233267 l_ae_header_id                NUMBER;
233268 l_event_type_code             VARCHAR2(30);
233269 l_line_definition_code        VARCHAR2(30);
233270 l_line_definition_owner_code  VARCHAR2(1);
233271 --
233272 -- adr variables
233273 l_segment                     VARCHAR2(30);
233274 l_ccid                        NUMBER;
233275 l_adr_transaction_coa_id      NUMBER;
233276 l_adr_accounting_coa_id       NUMBER;
233277 l_adr_flexfield_segment_code  VARCHAR2(30);
233278 l_adr_flex_value_set_id       NUMBER;
233279 l_adr_value_type_code         VARCHAR2(30);
233280 l_adr_value_combination_id    NUMBER;
233281 l_adr_value_segment_code      VARCHAR2(30);
233282 
233283 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
233284 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
233285 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
233286 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
233287 
233288 -- 4262811 Variables ------------------------------------------------------------------------------------------
233289 l_entered_amt_idx             NUMBER;
233290 l_accted_amt_idx              NUMBER;
233291 l_acc_rev_flag                VARCHAR2(1);
233292 l_accrual_line_num            NUMBER;
233293 l_tmp_amt                     NUMBER;
233294 l_acc_rev_natural_side_code   VARCHAR2(1);
233295 
233296 l_num_entries                 NUMBER;
233297 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
233298 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
233299 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
233300 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
233301 l_recog_line_1                NUMBER;
233302 l_recog_line_2                NUMBER;
233303 
233304 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
233305 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
233306 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
233307 
233308 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
233309 
233310 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
233311 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
233312 
233313 ---------------------------------------------------------------------------------------------------------------
233314 
233315 
233316 --
233317 -- bulk performance
233318 --
233319 l_balance_type_code           VARCHAR2(1);
233320 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
233321 l_log_module                  VARCHAR2(240);
233322 
233323 --
233324 -- Upgrade strategy
233325 --
233326 l_actual_upg_option           VARCHAR2(1);
233327 l_enc_upg_option           VARCHAR2(1);
233328 
233329 --
233330 BEGIN
233331 --
233332 IF g_log_enabled THEN
233333       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_422';
233334 END IF;
233335 --
233336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
233337 
233338       trace
233339          (p_msg      => 'BEGIN of AcctLineType_422'
233340          ,p_level    => C_LEVEL_PROCEDURE
233341          ,p_module   => l_log_module);
233342 
233343 END IF;
233344 --
233345 l_component_type             := 'AMB_JLT';
233346 l_component_code             := 'PI_EXP_LOG_PO_DEL_INV';
233347 l_component_type_code        := 'S';
233348 l_component_appl_id          :=  707;
233349 l_amb_context_code           := 'DEFAULT';
233350 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
233351 l_event_class_code           := 'PURCHASE_ORDER';
233352 l_event_type_code            := 'LOG_PO_DEL_ADJ';
233353 l_line_definition_owner_code := 'S';
233354 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
233355 --
233356 l_balance_type_code          := 'A';
233357 l_segment                     := NULL;
233358 l_ccid                        := NULL;
233359 l_adr_transaction_coa_id      := NULL;
233360 l_adr_accounting_coa_id       := NULL;
233361 l_adr_flexfield_segment_code  := NULL;
233362 l_adr_flex_value_set_id       := NULL;
233363 l_adr_value_type_code         := NULL;
233364 l_adr_value_combination_id    := NULL;
233365 l_adr_value_segment_code      := NULL;
233366 
233367 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
233368 l_bflow_class_code           := '';    -- 4219869 Business Flow
233369 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
233370 l_budgetary_control_flag     := 'N';
233371 
233372 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
233373 l_bflow_applied_to_amt       := NULL; -- 5132302
233374 l_entered_amt_idx            := NULL;          -- 4262811
233375 l_accted_amt_idx             := NULL;          -- 4262811
233376 l_acc_rev_flag               := NULL;          -- 4262811
233377 l_accrual_line_num           := NULL;          -- 4262811
233378 l_tmp_amt                    := NULL;          -- 4262811
233379 --
233380  
233381 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
233382     l_balance_type_code <> 'B' THEN
233383 IF NVL(p_source_97,9E125) =  1
233384  THEN 
233385 
233386    --
233387    XLA_AE_LINES_PKG.SetNewLine;
233388 
233389    p_balance_type_code          := l_balance_type_code;
233390    -- set the flag so later we will know whether the gain loss line needs to be created
233391    
233392    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
233393      p_actual_flag :='A';
233394    END IF;
233395 
233396    --
233397    -- bulk performance
233398    --
233399    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
233400                                       p_header_num   => 0); -- 4262811
233401    --
233402    -- set accounting line options
233403    --
233404    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
233405            p_natural_side_code          => 'D'
233406          , p_gain_or_loss_flag          => 'N'
233407          , p_gl_transfer_mode_code      => 'S'
233408          , p_acct_entry_type_code       => 'A'
233409          , p_switch_side_flag           => 'Y'
233410          , p_merge_duplicate_code       => 'N'
233411          );
233412    --
233413    l_acc_rev_natural_side_code := 'C';  -- 4262811
233414    -- 
233415    --
233416    -- set accounting line type info
233417    --
233418    xla_ae_lines_pkg.SetAcctLineType
233419       (p_component_type             => l_component_type
233420       ,p_event_type_code            => l_event_type_code
233421       ,p_line_definition_owner_code => l_line_definition_owner_code
233422       ,p_line_definition_code       => l_line_definition_code
233423       ,p_accounting_line_code       => l_component_code
233424       ,p_accounting_line_type_code  => l_component_type_code
233425       ,p_accounting_line_appl_id    => l_component_appl_id
233426       ,p_amb_context_code           => l_amb_context_code
233427       ,p_entity_code                => l_entity_code
233428       ,p_event_class_code           => l_event_class_code);
233429    --
233430    -- set accounting class
233431    --
233432    xla_ae_lines_pkg.SetAcctClass(
233433            p_accounting_class_code  => 'EXPENSE'
233434          , p_ae_header_id           => l_ae_header_id
233435          );
233436 
233437    --
233438    -- set rounding class
233439    --
233440    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
233441                       'EXPENSE';
233442 
233443    --
233444    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
233445    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
233446    --
233447    -- bulk performance
233448    --
233449    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
233450 
233451    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
233452       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
233453 
233454    -- 4955764
233455    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
233456       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
233457 
233458    -- 4458381 Public Sector Enh
233459    
233460    --
233461    -- set accounting attributes for the line type
233462    --
233463    l_entered_amt_idx := 17;
233464    l_accted_amt_idx  := 22;
233465    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
233466    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
233467    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
233468    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
233469    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
233470    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
233471    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
233472    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
233473    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
233474    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
233475    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
233476    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
233477    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
233478    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
233479    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
233480    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
233481    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
233482    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
233483    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
233484    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
233485    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
233486    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
233487    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
233488    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
233489    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
233490    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
233491    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
233492    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
233493    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
233494    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
233495    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
233496    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
233497    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
233498    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
233499    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
233500    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
233501    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
233502    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
233503    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
233504    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
233505    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
233506    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
233507    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
233508    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
233509    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
233510    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
233511    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
233512    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
233513    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
233514 
233515    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
233516    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
233517 
233518    ---------------------------------------------------------------------------------------------------------------
233519    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
233520    ---------------------------------------------------------------------------------------------------------------
233521    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
233522 
233523    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
233524    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
233525 
233526    IF xla_accounting_cache_pkg.GetValueChar
233527          (p_source_code         => 'LEDGER_CATEGORY_CODE'
233528          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
233529    AND l_bflow_method_code = 'PRIOR_ENTRY'
233530 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
233531    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
233532          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
233533        )
233534    THEN
233535          xla_ae_lines_pkg.BflowUpgEntry
233536            (p_business_method_code    => l_bflow_method_code
233537            ,p_business_class_code     => l_bflow_class_code
233538            ,p_balance_type            => l_balance_type_code);
233539    ELSE
233540       NULL;
233541 -- No business flow processing for business flow method of NONE.
233542    END IF;
233543 
233544    --
233545    -- call analytical criteria
233546    --
233547    
233548    --
233549    -- call description
233550    --
233551    
233552 xla_ae_lines_pkg.SetLineDescription(
233553    p_ae_header_id => l_ae_header_id
233554   ,p_description  => Description_1 (
233555      p_application_id         => p_application_id
233556    , p_ae_header_id           => l_ae_header_id 
233557 , p_source_1 => p_source_1
233558 , p_source_2 => p_source_2
233559 , p_source_3 => p_source_3
233560 , p_source_4 => p_source_4
233561 , p_source_5 => p_source_5
233562    )
233563 );
233564 
233565 
233566    --
233567    -- call ADRs
233568    -- Bug 4922099
233569    --
233570    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
233571         (NVL(l_actual_upg_option, 'N') = 'O') OR
233572         (NVL(l_enc_upg_option, 'N') = 'O')
233573       )
233574    THEN
233575    NULL;
233576    --
233577    --
233578    
233579   l_ccid := AcctDerRule_13(
233580            p_application_id           => p_application_id
233581          , p_ae_header_id             => l_ae_header_id 
233582 , p_source_24 => p_source_24
233583          , x_transaction_coa_id       => l_adr_transaction_coa_id
233584          , x_accounting_coa_id        => l_adr_accounting_coa_id
233585          , x_value_type_code          => l_adr_value_type_code
233586          , p_side                     => 'NA'
233587    );
233588 
233589    xla_ae_lines_pkg.set_ccid(
233590     p_code_combination_id          => l_ccid
233591   , p_value_type_code              => l_adr_value_type_code
233592   , p_transaction_coa_id           => l_adr_transaction_coa_id
233593   , p_accounting_coa_id            => l_adr_accounting_coa_id
233594   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
233595   , p_adr_type_code                => 'S'
233596   , p_component_type               => l_component_type
233597   , p_component_code               => l_component_code
233598   , p_component_type_code          => l_component_type_code
233599   , p_component_appl_id            => l_component_appl_id
233600   , p_amb_context_code             => l_amb_context_code
233601   , p_side                         => 'NA'
233602   );
233603 
233604 
233605    --
233606    --
233607    END IF;
233608    --
233609    -- Bug 4922099
233610    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
233611           (NVL(l_enc_upg_option, 'N') = 'O')
233612         ) AND
233613         (l_bflow_method_code = 'PRIOR_ENTRY')
233614       )
233615    THEN
233616       IF
233617       --
233618       1 = 2
233619       --
233620       THEN
233621       xla_accounting_err_pkg.build_message
233622                                     (p_appli_s_name            => 'XLA'
233623                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
233624                                     ,p_token_1                 => 'LINE_NUMBER'
233625                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
233626                                     ,p_token_2                 => 'LINE_TYPE_NAME'
233627                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
233628                                                                              l_component_type
233629                                                                             ,l_component_code
233630                                                                             ,l_component_type_code
233631                                                                             ,l_component_appl_id
233632                                                                             ,l_amb_context_code
233633                                                                             ,l_entity_code
233634                                                                             ,l_event_class_code
233635                                                                            )
233636                                     ,p_token_3                 => 'OWNER'
233637                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
233638                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
233639                                                                           ,p_lookup_code    => l_component_type_code
233640                                                                          )
233641                                     ,p_token_4                 => 'PRODUCT_NAME'
233642                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
233643                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
233644                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
233645                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
233646                                     ,p_ae_header_id            =>  NULL
233647                                        );
233648 
233649         IF (C_LEVEL_ERROR>= g_log_level) THEN
233650                  trace
233651                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
233652                       ,p_level    => C_LEVEL_ERROR
233653                       ,p_module   => l_log_module);
233654         END IF;
233655       END IF;
233656    END IF;
233657    --
233658    --
233659    ------------------------------------------------------------------------------------------------
233660    -- 4219869 Business Flow
233661    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
233662    -- Prior Entry.  Currently, the following code is always generated.
233663    ------------------------------------------------------------------------------------------------
233664    XLA_AE_LINES_PKG.ValidateCurrentLine;
233665 
233666    ------------------------------------------------------------------------------------
233667    -- 4219869 Business Flow
233668    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
233669    ------------------------------------------------------------------------------------
233670    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
233671 
233672    ----------------------------------------------------------------------------------
233673    -- 4219869 Business Flow
233674    -- Update journal entry status -- Need to generate this within IF <condition>
233675    ----------------------------------------------------------------------------------
233676    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
233677          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
233678          ,p_balance_type_code => l_balance_type_code
233679          );
233680 
233681    -------------------------------------------------------------------------------------------
233682    -- 4262811 - Generate the Accrual Reversal lines
233683    -------------------------------------------------------------------------------------------
233684    BEGIN
233685       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
233686                               (g_array_event(p_event_id).array_value_num('header_index'));
233687       IF l_acc_rev_flag IS NULL THEN
233688          l_acc_rev_flag := 'N';
233689       END IF;
233690    EXCEPTION
233691       WHEN OTHERS THEN
233692          l_acc_rev_flag := 'N';
233693    END;
233694    --
233695    IF (l_acc_rev_flag = 'Y') THEN
233696 
233697        -- 4645092  ------------------------------------------------------------------------------
233698        -- To allow MPA report to determine if it should generate report process
233699        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
233700        ------------------------------------------------------------------------------------------
233701 
233702        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
233703        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
233704    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
233705    -- call ADRs
233706    -- Bug 4922099
233707    --
233708    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
233709         (NVL(l_actual_upg_option, 'N') = 'O') OR
233710         (NVL(l_enc_upg_option, 'N') = 'O')
233711       )
233712    THEN
233713    NULL;
233714    --
233715    --
233716    
233717   l_ccid := AcctDerRule_13(
233718            p_application_id           => p_application_id
233719          , p_ae_header_id             => l_ae_header_id 
233720 , p_source_24 => p_source_24
233721          , x_transaction_coa_id       => l_adr_transaction_coa_id
233722          , x_accounting_coa_id        => l_adr_accounting_coa_id
233723          , x_value_type_code          => l_adr_value_type_code
233724          , p_side                     => 'NA'
233725    );
233726 
233727    xla_ae_lines_pkg.set_ccid(
233728     p_code_combination_id          => l_ccid
233729   , p_value_type_code              => l_adr_value_type_code
233730   , p_transaction_coa_id           => l_adr_transaction_coa_id
233731   , p_accounting_coa_id            => l_adr_accounting_coa_id
233732   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
233733   , p_adr_type_code                => 'S'
233734   , p_component_type               => l_component_type
233735   , p_component_code               => l_component_code
233736   , p_component_type_code          => l_component_type_code
233737   , p_component_appl_id            => l_component_appl_id
233738   , p_amb_context_code             => l_amb_context_code
233739   , p_side                         => 'NA'
233740   );
233741 
233742 
233743    --
233744    --
233745    END IF;
233746 
233747        --
233748        -- Update the line information that should be overwritten
233749        --
233750        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
233751                                          p_header_num   => 1);
233752        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
233753 
233754        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
233755 
233756        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
233757           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
233758        END IF;
233759 
233760       --
233761       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
233762       --
233763       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
233764           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
233765       ELSE
233766           ---------------------------------------------------------------------------------------------------
233767           -- 4262811a Switch Sign
233768           ---------------------------------------------------------------------------------------------------
233769           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
233770           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
233771                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
233772           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
233773                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
233774           -- 5132302
233775           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
233776                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
233777 
233778       END IF;
233779 
233780       -- 4955764
233781       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
233782       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
233783 
233784 
233785       XLA_AE_LINES_PKG.ValidateCurrentLine;
233786       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
233787 
233788       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
233789                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
233790                ,p_balance_type_code => l_balance_type_code);
233791 
233792    END IF;
233793 
233794    -----------------------------------------------------------------------------------------
233795    -- 4262811 Multiperiod Accounting
233796    -----------------------------------------------------------------------------------------
233797      -- No MPA option is assigned.
233798 
233799 
233800 END IF;
233801 END IF;
233802 --
233803 
233804 --
233805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
233806    trace
233807       (p_msg      => 'END of AcctLineType_422'
233808       ,p_level    => C_LEVEL_PROCEDURE
233809       ,p_module   => l_log_module);
233810 END IF;
233811 --
233812 EXCEPTION
233813   WHEN xla_exceptions_pkg.application_exception THEN
233814       RAISE;
233815   WHEN OTHERS THEN
233816        xla_exceptions_pkg.raise_message
233817            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_422');
233818 END AcctLineType_422;
233819 --
233820 
233821 ---------------------------------------
233822 --
233823 -- PRIVATE FUNCTION
233824 --         AcctLineType_423
233825 --
233826 ---------------------------------------
233827 PROCEDURE AcctLineType_423 (
233828   p_application_id        IN NUMBER
233829  ,p_event_id              IN NUMBER
233830  ,p_calculate_acctd_flag  IN VARCHAR2
233831  ,p_calculate_g_l_flag    IN VARCHAR2
233832  ,p_actual_flag           IN OUT VARCHAR2
233833  ,p_balance_type_code     OUT VARCHAR2
233834  ,p_gain_or_loss_ref      OUT VARCHAR2
233835  
233836 --TRANSACTION_ID
233837  , p_source_1            IN NUMBER
233838 --Item Concatenated Segments
233839  , p_source_2            IN VARCHAR2
233840 --Transaction Quantity
233841  , p_source_3            IN NUMBER
233842 --Transaction Unit of Measure Code
233843  , p_source_4            IN VARCHAR2
233844 --Inventory Transaction Type Description
233845  , p_source_5            IN VARCHAR2
233846 --Product Line Accounting Category Expense Account
233847  , p_source_24            IN NUMBER
233848 --Applied to Application ID
233849  , p_source_79            IN NUMBER
233850 --Applied to Distribution Link Type
233851  , p_source_80            IN VARCHAR2
233852 --Applied to Entity Code
233853  , p_source_81            IN VARCHAR2
233854 --Applied To Purchase Document Identifier
233855  , p_source_83            IN NUMBER
233856 --DISTRIBUTION_IDENTIFIER
233857  , p_source_84            IN NUMBER
233858 --Distribution Type
233859  , p_source_85            IN VARCHAR2
233860  , p_source_85_meaning    IN VARCHAR2
233861 --PO Budget Account
233862  , p_source_86            IN NUMBER
233863 --Encumbrance Reversal Amount Entered
233864  , p_source_87            IN NUMBER
233865 --Entered Currency Code
233866  , p_source_88            IN VARCHAR2
233867 --Transaction Encumbrance Reversal Amount
233868  , p_source_89            IN NUMBER
233869 --Entered Amount
233870  , p_source_91            IN NUMBER
233871 --Currency Conversion Date
233872  , p_source_92            IN DATE
233873 --Currency Conversion Rate
233874  , p_source_93            IN NUMBER
233875 --Currency Conversion Type
233876  , p_source_94            IN VARCHAR2
233877 --Accounted Amount
233878  , p_source_95            IN NUMBER
233879 --Purchasing Encumbrance Type Identifier
233880  , p_source_96            IN NUMBER
233881 --Accounting Line Type
233882  , p_source_97            IN NUMBER
233883 --Costing Encumbrance Upgrade Option
233884  , p_source_100            IN VARCHAR2
233885 --TXN_PO_DISTRIBUTION_ID
233886  , p_source_101            IN NUMBER
233887 )
233888 IS
233889 
233890 l_component_type              VARCHAR2(80);
233891 l_component_code              VARCHAR2(30);
233892 l_component_type_code         VARCHAR2(1);
233893 l_component_appl_id           INTEGER;
233894 l_amb_context_code            VARCHAR2(30);
233895 l_entity_code                 VARCHAR2(30);
233896 l_event_class_code            VARCHAR2(30);
233897 l_ae_header_id                NUMBER;
233898 l_event_type_code             VARCHAR2(30);
233899 l_line_definition_code        VARCHAR2(30);
233900 l_line_definition_owner_code  VARCHAR2(1);
233901 --
233902 -- adr variables
233903 l_segment                     VARCHAR2(30);
233904 l_ccid                        NUMBER;
233905 l_adr_transaction_coa_id      NUMBER;
233906 l_adr_accounting_coa_id       NUMBER;
233907 l_adr_flexfield_segment_code  VARCHAR2(30);
233908 l_adr_flex_value_set_id       NUMBER;
233909 l_adr_value_type_code         VARCHAR2(30);
233910 l_adr_value_combination_id    NUMBER;
233911 l_adr_value_segment_code      VARCHAR2(30);
233912 
233913 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
233914 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
233915 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
233916 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
233917 
233918 -- 4262811 Variables ------------------------------------------------------------------------------------------
233919 l_entered_amt_idx             NUMBER;
233920 l_accted_amt_idx              NUMBER;
233921 l_acc_rev_flag                VARCHAR2(1);
233922 l_accrual_line_num            NUMBER;
233923 l_tmp_amt                     NUMBER;
233924 l_acc_rev_natural_side_code   VARCHAR2(1);
233925 
233926 l_num_entries                 NUMBER;
233927 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
233928 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
233929 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
233930 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
233931 l_recog_line_1                NUMBER;
233932 l_recog_line_2                NUMBER;
233933 
233934 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
233935 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
233936 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
233937 
233938 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
233939 
233940 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
233941 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
233942 
233943 ---------------------------------------------------------------------------------------------------------------
233944 
233945 
233946 --
233947 -- bulk performance
233948 --
233949 l_balance_type_code           VARCHAR2(1);
233950 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
233951 l_log_module                  VARCHAR2(240);
233952 
233953 --
233954 -- Upgrade strategy
233955 --
233956 l_actual_upg_option           VARCHAR2(1);
233957 l_enc_upg_option           VARCHAR2(1);
233958 
233959 --
233960 BEGIN
233961 --
233962 IF g_log_enabled THEN
233963       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_423';
233964 END IF;
233965 --
233966 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
233967 
233968       trace
233969          (p_msg      => 'BEGIN of AcctLineType_423'
233970          ,p_level    => C_LEVEL_PROCEDURE
233971          ,p_module   => l_log_module);
233972 
233973 END IF;
233974 --
233975 l_component_type             := 'AMB_JLT';
233976 l_component_code             := 'PI_EXP_LOG_PO_DEL_INV';
233977 l_component_type_code        := 'S';
233978 l_component_appl_id          :=  707;
233979 l_amb_context_code           := 'DEFAULT';
233980 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
233981 l_event_class_code           := 'PURCHASE_ORDER';
233982 l_event_type_code            := 'LOG_RET_RI_INV';
233983 l_line_definition_owner_code := 'S';
233984 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
233985 --
233986 l_balance_type_code          := 'A';
233987 l_segment                     := NULL;
233988 l_ccid                        := NULL;
233989 l_adr_transaction_coa_id      := NULL;
233990 l_adr_accounting_coa_id       := NULL;
233991 l_adr_flexfield_segment_code  := NULL;
233992 l_adr_flex_value_set_id       := NULL;
233993 l_adr_value_type_code         := NULL;
233994 l_adr_value_combination_id    := NULL;
233995 l_adr_value_segment_code      := NULL;
233996 
233997 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
233998 l_bflow_class_code           := '';    -- 4219869 Business Flow
233999 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
234000 l_budgetary_control_flag     := 'N';
234001 
234002 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
234003 l_bflow_applied_to_amt       := NULL; -- 5132302
234004 l_entered_amt_idx            := NULL;          -- 4262811
234005 l_accted_amt_idx             := NULL;          -- 4262811
234006 l_acc_rev_flag               := NULL;          -- 4262811
234007 l_accrual_line_num           := NULL;          -- 4262811
234008 l_tmp_amt                    := NULL;          -- 4262811
234009 --
234010  
234011 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
234012     l_balance_type_code <> 'B' THEN
234013 IF NVL(p_source_97,9E125) =  1
234014  THEN 
234015 
234016    --
234017    XLA_AE_LINES_PKG.SetNewLine;
234018 
234019    p_balance_type_code          := l_balance_type_code;
234020    -- set the flag so later we will know whether the gain loss line needs to be created
234021    
234022    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
234023      p_actual_flag :='A';
234024    END IF;
234025 
234026    --
234027    -- bulk performance
234028    --
234029    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
234030                                       p_header_num   => 0); -- 4262811
234031    --
234032    -- set accounting line options
234033    --
234034    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
234035            p_natural_side_code          => 'D'
234036          , p_gain_or_loss_flag          => 'N'
234037          , p_gl_transfer_mode_code      => 'S'
234038          , p_acct_entry_type_code       => 'A'
234039          , p_switch_side_flag           => 'Y'
234040          , p_merge_duplicate_code       => 'N'
234041          );
234042    --
234043    l_acc_rev_natural_side_code := 'C';  -- 4262811
234044    -- 
234045    --
234046    -- set accounting line type info
234047    --
234048    xla_ae_lines_pkg.SetAcctLineType
234049       (p_component_type             => l_component_type
234050       ,p_event_type_code            => l_event_type_code
234051       ,p_line_definition_owner_code => l_line_definition_owner_code
234052       ,p_line_definition_code       => l_line_definition_code
234053       ,p_accounting_line_code       => l_component_code
234054       ,p_accounting_line_type_code  => l_component_type_code
234055       ,p_accounting_line_appl_id    => l_component_appl_id
234056       ,p_amb_context_code           => l_amb_context_code
234057       ,p_entity_code                => l_entity_code
234058       ,p_event_class_code           => l_event_class_code);
234059    --
234060    -- set accounting class
234061    --
234062    xla_ae_lines_pkg.SetAcctClass(
234063            p_accounting_class_code  => 'EXPENSE'
234064          , p_ae_header_id           => l_ae_header_id
234065          );
234066 
234067    --
234068    -- set rounding class
234069    --
234070    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
234071                       'EXPENSE';
234072 
234073    --
234074    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
234075    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
234076    --
234077    -- bulk performance
234078    --
234079    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
234080 
234081    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
234082       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
234083 
234084    -- 4955764
234085    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
234086       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
234087 
234088    -- 4458381 Public Sector Enh
234089    
234090    --
234091    -- set accounting attributes for the line type
234092    --
234093    l_entered_amt_idx := 17;
234094    l_accted_amt_idx  := 22;
234095    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
234096    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
234097    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
234098    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
234099    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
234100    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
234101    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
234102    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
234103    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
234104    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
234105    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
234106    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
234107    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
234108    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
234109    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
234110    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
234111    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
234112    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
234113    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
234114    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
234115    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
234116    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
234117    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
234118    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
234119    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
234120    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
234121    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
234122    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
234123    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
234124    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
234125    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
234126    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
234127    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
234128    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
234129    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
234130    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
234131    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
234132    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
234133    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
234134    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
234135    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
234136    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
234137    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
234138    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
234139    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
234140    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
234141    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
234142    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
234143    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
234144 
234145    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
234146    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
234147 
234148    ---------------------------------------------------------------------------------------------------------------
234149    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
234150    ---------------------------------------------------------------------------------------------------------------
234151    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
234152 
234153    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
234154    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
234155 
234156    IF xla_accounting_cache_pkg.GetValueChar
234157          (p_source_code         => 'LEDGER_CATEGORY_CODE'
234158          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
234159    AND l_bflow_method_code = 'PRIOR_ENTRY'
234160 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
234161    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
234162          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
234163        )
234164    THEN
234165          xla_ae_lines_pkg.BflowUpgEntry
234166            (p_business_method_code    => l_bflow_method_code
234167            ,p_business_class_code     => l_bflow_class_code
234168            ,p_balance_type            => l_balance_type_code);
234169    ELSE
234170       NULL;
234171 -- No business flow processing for business flow method of NONE.
234172    END IF;
234173 
234174    --
234175    -- call analytical criteria
234176    --
234177    
234178    --
234179    -- call description
234180    --
234181    
234182 xla_ae_lines_pkg.SetLineDescription(
234183    p_ae_header_id => l_ae_header_id
234184   ,p_description  => Description_1 (
234185      p_application_id         => p_application_id
234186    , p_ae_header_id           => l_ae_header_id 
234187 , p_source_1 => p_source_1
234188 , p_source_2 => p_source_2
234189 , p_source_3 => p_source_3
234190 , p_source_4 => p_source_4
234191 , p_source_5 => p_source_5
234192    )
234193 );
234194 
234195 
234196    --
234197    -- call ADRs
234198    -- Bug 4922099
234199    --
234200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
234201         (NVL(l_actual_upg_option, 'N') = 'O') OR
234202         (NVL(l_enc_upg_option, 'N') = 'O')
234203       )
234204    THEN
234205    NULL;
234206    --
234207    --
234208    
234209   l_ccid := AcctDerRule_13(
234210            p_application_id           => p_application_id
234211          , p_ae_header_id             => l_ae_header_id 
234212 , p_source_24 => p_source_24
234213          , x_transaction_coa_id       => l_adr_transaction_coa_id
234214          , x_accounting_coa_id        => l_adr_accounting_coa_id
234215          , x_value_type_code          => l_adr_value_type_code
234216          , p_side                     => 'NA'
234217    );
234218 
234219    xla_ae_lines_pkg.set_ccid(
234220     p_code_combination_id          => l_ccid
234221   , p_value_type_code              => l_adr_value_type_code
234222   , p_transaction_coa_id           => l_adr_transaction_coa_id
234223   , p_accounting_coa_id            => l_adr_accounting_coa_id
234224   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
234225   , p_adr_type_code                => 'S'
234226   , p_component_type               => l_component_type
234227   , p_component_code               => l_component_code
234228   , p_component_type_code          => l_component_type_code
234229   , p_component_appl_id            => l_component_appl_id
234230   , p_amb_context_code             => l_amb_context_code
234231   , p_side                         => 'NA'
234232   );
234233 
234234 
234235    --
234236    --
234237    END IF;
234238    --
234239    -- Bug 4922099
234240    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
234241           (NVL(l_enc_upg_option, 'N') = 'O')
234242         ) AND
234243         (l_bflow_method_code = 'PRIOR_ENTRY')
234244       )
234245    THEN
234246       IF
234247       --
234248       1 = 2
234249       --
234250       THEN
234251       xla_accounting_err_pkg.build_message
234252                                     (p_appli_s_name            => 'XLA'
234253                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
234254                                     ,p_token_1                 => 'LINE_NUMBER'
234255                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
234256                                     ,p_token_2                 => 'LINE_TYPE_NAME'
234257                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
234258                                                                              l_component_type
234259                                                                             ,l_component_code
234260                                                                             ,l_component_type_code
234261                                                                             ,l_component_appl_id
234262                                                                             ,l_amb_context_code
234263                                                                             ,l_entity_code
234264                                                                             ,l_event_class_code
234265                                                                            )
234266                                     ,p_token_3                 => 'OWNER'
234267                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
234268                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
234269                                                                           ,p_lookup_code    => l_component_type_code
234270                                                                          )
234271                                     ,p_token_4                 => 'PRODUCT_NAME'
234272                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
234273                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
234274                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
234275                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
234276                                     ,p_ae_header_id            =>  NULL
234277                                        );
234278 
234279         IF (C_LEVEL_ERROR>= g_log_level) THEN
234280                  trace
234281                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
234282                       ,p_level    => C_LEVEL_ERROR
234283                       ,p_module   => l_log_module);
234284         END IF;
234285       END IF;
234286    END IF;
234287    --
234288    --
234289    ------------------------------------------------------------------------------------------------
234290    -- 4219869 Business Flow
234291    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
234292    -- Prior Entry.  Currently, the following code is always generated.
234293    ------------------------------------------------------------------------------------------------
234294    XLA_AE_LINES_PKG.ValidateCurrentLine;
234295 
234296    ------------------------------------------------------------------------------------
234297    -- 4219869 Business Flow
234298    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
234299    ------------------------------------------------------------------------------------
234300    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
234301 
234302    ----------------------------------------------------------------------------------
234303    -- 4219869 Business Flow
234304    -- Update journal entry status -- Need to generate this within IF <condition>
234305    ----------------------------------------------------------------------------------
234306    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
234307          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
234308          ,p_balance_type_code => l_balance_type_code
234309          );
234310 
234311    -------------------------------------------------------------------------------------------
234312    -- 4262811 - Generate the Accrual Reversal lines
234313    -------------------------------------------------------------------------------------------
234314    BEGIN
234315       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
234316                               (g_array_event(p_event_id).array_value_num('header_index'));
234317       IF l_acc_rev_flag IS NULL THEN
234318          l_acc_rev_flag := 'N';
234319       END IF;
234320    EXCEPTION
234321       WHEN OTHERS THEN
234322          l_acc_rev_flag := 'N';
234323    END;
234324    --
234325    IF (l_acc_rev_flag = 'Y') THEN
234326 
234327        -- 4645092  ------------------------------------------------------------------------------
234328        -- To allow MPA report to determine if it should generate report process
234329        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
234330        ------------------------------------------------------------------------------------------
234331 
234332        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
234333        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
234334    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
234335    -- call ADRs
234336    -- Bug 4922099
234337    --
234338    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
234339         (NVL(l_actual_upg_option, 'N') = 'O') OR
234340         (NVL(l_enc_upg_option, 'N') = 'O')
234341       )
234342    THEN
234343    NULL;
234344    --
234345    --
234346    
234347   l_ccid := AcctDerRule_13(
234348            p_application_id           => p_application_id
234349          , p_ae_header_id             => l_ae_header_id 
234350 , p_source_24 => p_source_24
234351          , x_transaction_coa_id       => l_adr_transaction_coa_id
234352          , x_accounting_coa_id        => l_adr_accounting_coa_id
234353          , x_value_type_code          => l_adr_value_type_code
234354          , p_side                     => 'NA'
234355    );
234356 
234357    xla_ae_lines_pkg.set_ccid(
234358     p_code_combination_id          => l_ccid
234359   , p_value_type_code              => l_adr_value_type_code
234360   , p_transaction_coa_id           => l_adr_transaction_coa_id
234361   , p_accounting_coa_id            => l_adr_accounting_coa_id
234362   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
234363   , p_adr_type_code                => 'S'
234364   , p_component_type               => l_component_type
234365   , p_component_code               => l_component_code
234366   , p_component_type_code          => l_component_type_code
234367   , p_component_appl_id            => l_component_appl_id
234368   , p_amb_context_code             => l_amb_context_code
234369   , p_side                         => 'NA'
234370   );
234371 
234372 
234373    --
234374    --
234375    END IF;
234376 
234377        --
234378        -- Update the line information that should be overwritten
234379        --
234380        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
234381                                          p_header_num   => 1);
234382        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
234383 
234384        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
234385 
234386        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
234387           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
234388        END IF;
234389 
234390       --
234391       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
234392       --
234393       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
234394           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
234395       ELSE
234396           ---------------------------------------------------------------------------------------------------
234397           -- 4262811a Switch Sign
234398           ---------------------------------------------------------------------------------------------------
234399           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
234400           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
234401                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
234402           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
234403                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
234404           -- 5132302
234405           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
234406                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
234407 
234408       END IF;
234409 
234410       -- 4955764
234411       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
234412       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
234413 
234414 
234415       XLA_AE_LINES_PKG.ValidateCurrentLine;
234416       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
234417 
234418       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
234419                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
234420                ,p_balance_type_code => l_balance_type_code);
234421 
234422    END IF;
234423 
234424    -----------------------------------------------------------------------------------------
234425    -- 4262811 Multiperiod Accounting
234426    -----------------------------------------------------------------------------------------
234427      -- No MPA option is assigned.
234428 
234429 
234430 END IF;
234431 END IF;
234432 --
234433 
234434 --
234435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
234436    trace
234437       (p_msg      => 'END of AcctLineType_423'
234438       ,p_level    => C_LEVEL_PROCEDURE
234439       ,p_module   => l_log_module);
234440 END IF;
234441 --
234442 EXCEPTION
234443   WHEN xla_exceptions_pkg.application_exception THEN
234444       RAISE;
234445   WHEN OTHERS THEN
234446        xla_exceptions_pkg.raise_message
234447            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_423');
234448 END AcctLineType_423;
234449 --
234450 
234451 ---------------------------------------
234452 --
234453 -- PRIVATE FUNCTION
234454 --         AcctLineType_424
234455 --
234456 ---------------------------------------
234457 PROCEDURE AcctLineType_424 (
234458   p_application_id        IN NUMBER
234459  ,p_event_id              IN NUMBER
234460  ,p_calculate_acctd_flag  IN VARCHAR2
234461  ,p_calculate_g_l_flag    IN VARCHAR2
234462  ,p_actual_flag           IN OUT VARCHAR2
234463  ,p_balance_type_code     OUT VARCHAR2
234464  ,p_gain_or_loss_ref      OUT VARCHAR2
234465  
234466 --TRANSACTION_ID
234467  , p_source_1            IN NUMBER
234468 --Item Concatenated Segments
234469  , p_source_2            IN VARCHAR2
234470 --Transaction Quantity
234471  , p_source_3            IN NUMBER
234472 --Transaction Unit of Measure Code
234473  , p_source_4            IN VARCHAR2
234474 --Inventory Transaction Type Description
234475  , p_source_5            IN VARCHAR2
234476 --Interorg Bridging Account
234477  , p_source_46            IN NUMBER
234478 --Applied to Application ID
234479  , p_source_79            IN NUMBER
234480 --Applied to Distribution Link Type
234481  , p_source_80            IN VARCHAR2
234482 --Applied to Entity Code
234483  , p_source_81            IN VARCHAR2
234484 --DISTRIBUTION_IDENTIFIER
234485  , p_source_84            IN NUMBER
234486 --Distribution Type
234487  , p_source_85            IN VARCHAR2
234488  , p_source_85_meaning    IN VARCHAR2
234489 --Encumbrance Reversal Amount Entered
234490  , p_source_87            IN NUMBER
234491 --Entered Currency Code
234492  , p_source_88            IN VARCHAR2
234493 --Transaction Encumbrance Reversal Amount
234494  , p_source_89            IN NUMBER
234495 --Entered Amount
234496  , p_source_91            IN NUMBER
234497 --Currency Conversion Date
234498  , p_source_92            IN DATE
234499 --Currency Conversion Rate
234500  , p_source_93            IN NUMBER
234501 --Currency Conversion Type
234502  , p_source_94            IN VARCHAR2
234503 --Accounted Amount
234504  , p_source_95            IN NUMBER
234505 --Accounting Line Type
234506  , p_source_97            IN NUMBER
234507 --Costing Encumbrance Upgrade Option
234508  , p_source_100            IN VARCHAR2
234509 --TXN_PO_DISTRIBUTION_ID
234510  , p_source_101            IN NUMBER
234511 --TXN_PO_HEADER_ID
234512  , p_source_102            IN NUMBER
234513 --Requisition Budget Account
234514  , p_source_103            IN NUMBER
234515 --Requisition Encumbrance Type Identifier
234516  , p_source_104            IN NUMBER
234517 )
234518 IS
234519 
234520 l_component_type              VARCHAR2(80);
234521 l_component_code              VARCHAR2(30);
234522 l_component_type_code         VARCHAR2(1);
234523 l_component_appl_id           INTEGER;
234524 l_amb_context_code            VARCHAR2(30);
234525 l_entity_code                 VARCHAR2(30);
234526 l_event_class_code            VARCHAR2(30);
234527 l_ae_header_id                NUMBER;
234528 l_event_type_code             VARCHAR2(30);
234529 l_line_definition_code        VARCHAR2(30);
234530 l_line_definition_owner_code  VARCHAR2(1);
234531 --
234532 -- adr variables
234533 l_segment                     VARCHAR2(30);
234534 l_ccid                        NUMBER;
234535 l_adr_transaction_coa_id      NUMBER;
234536 l_adr_accounting_coa_id       NUMBER;
234537 l_adr_flexfield_segment_code  VARCHAR2(30);
234538 l_adr_flex_value_set_id       NUMBER;
234539 l_adr_value_type_code         VARCHAR2(30);
234540 l_adr_value_combination_id    NUMBER;
234541 l_adr_value_segment_code      VARCHAR2(30);
234542 
234543 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
234544 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
234545 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
234546 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
234547 
234548 -- 4262811 Variables ------------------------------------------------------------------------------------------
234549 l_entered_amt_idx             NUMBER;
234550 l_accted_amt_idx              NUMBER;
234551 l_acc_rev_flag                VARCHAR2(1);
234552 l_accrual_line_num            NUMBER;
234553 l_tmp_amt                     NUMBER;
234554 l_acc_rev_natural_side_code   VARCHAR2(1);
234555 
234556 l_num_entries                 NUMBER;
234557 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
234558 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
234559 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
234560 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
234561 l_recog_line_1                NUMBER;
234562 l_recog_line_2                NUMBER;
234563 
234564 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
234565 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
234566 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
234567 
234568 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
234569 
234570 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
234571 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
234572 
234573 ---------------------------------------------------------------------------------------------------------------
234574 
234575 
234576 --
234577 -- bulk performance
234578 --
234579 l_balance_type_code           VARCHAR2(1);
234580 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
234581 l_log_module                  VARCHAR2(240);
234582 
234583 --
234584 -- Upgrade strategy
234585 --
234586 l_actual_upg_option           VARCHAR2(1);
234587 l_enc_upg_option           VARCHAR2(1);
234588 
234589 --
234590 BEGIN
234591 --
234592 IF g_log_enabled THEN
234593       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_424';
234594 END IF;
234595 --
234596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
234597 
234598       trace
234599          (p_msg      => 'BEGIN of AcctLineType_424'
234600          ,p_level    => C_LEVEL_PROCEDURE
234601          ,p_module   => l_log_module);
234602 
234603 END IF;
234604 --
234605 l_component_type             := 'AMB_JLT';
234606 l_component_code             := 'PI_INTRANSIT_BRIDGING_121';
234607 l_component_type_code        := 'S';
234608 l_component_appl_id          :=  707;
234609 l_amb_context_code           := 'DEFAULT';
234610 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
234611 l_event_class_code           := 'FOB_SHIP_RECIPIENT_RCPT';
234612 l_event_type_code            := 'FOB_SHIP_RECIPIENT_RCPT';
234613 l_line_definition_owner_code := 'S';
234614 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_RCPT';
234615 --
234616 l_balance_type_code          := 'A';
234617 l_segment                     := NULL;
234618 l_ccid                        := NULL;
234619 l_adr_transaction_coa_id      := NULL;
234620 l_adr_accounting_coa_id       := NULL;
234621 l_adr_flexfield_segment_code  := NULL;
234622 l_adr_flex_value_set_id       := NULL;
234623 l_adr_value_type_code         := NULL;
234624 l_adr_value_combination_id    := NULL;
234625 l_adr_value_segment_code      := NULL;
234626 
234627 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
234628 l_bflow_class_code           := '';    -- 4219869 Business Flow
234629 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
234630 l_budgetary_control_flag     := 'N';
234631 
234632 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
234633 l_bflow_applied_to_amt       := NULL; -- 5132302
234634 l_entered_amt_idx            := NULL;          -- 4262811
234635 l_accted_amt_idx             := NULL;          -- 4262811
234636 l_acc_rev_flag               := NULL;          -- 4262811
234637 l_accrual_line_num           := NULL;          -- 4262811
234638 l_tmp_amt                    := NULL;          -- 4262811
234639 --
234640  
234641 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
234642     l_balance_type_code <> 'B' THEN
234643 IF NVL(p_source_97,9E125) =  14
234644  THEN 
234645 
234646    --
234647    XLA_AE_LINES_PKG.SetNewLine;
234648 
234649    p_balance_type_code          := l_balance_type_code;
234650    -- set the flag so later we will know whether the gain loss line needs to be created
234651    
234652    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
234653      p_actual_flag :='A';
234654    END IF;
234655 
234656    --
234657    -- bulk performance
234658    --
234659    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
234660                                       p_header_num   => 0); -- 4262811
234661    --
234662    -- set accounting line options
234663    --
234664    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
234665            p_natural_side_code          => 'C'
234666          , p_gain_or_loss_flag          => 'N'
234667          , p_gl_transfer_mode_code      => 'S'
234668          , p_acct_entry_type_code       => 'A'
234669          , p_switch_side_flag           => 'Y'
234670          , p_merge_duplicate_code       => 'N'
234671          );
234672    --
234673    l_acc_rev_natural_side_code := 'D';  -- 4262811
234674    -- 
234675    --
234676    -- set accounting line type info
234677    --
234678    xla_ae_lines_pkg.SetAcctLineType
234679       (p_component_type             => l_component_type
234680       ,p_event_type_code            => l_event_type_code
234681       ,p_line_definition_owner_code => l_line_definition_owner_code
234682       ,p_line_definition_code       => l_line_definition_code
234683       ,p_accounting_line_code       => l_component_code
234684       ,p_accounting_line_type_code  => l_component_type_code
234685       ,p_accounting_line_appl_id    => l_component_appl_id
234686       ,p_amb_context_code           => l_amb_context_code
234687       ,p_entity_code                => l_entity_code
234688       ,p_event_class_code           => l_event_class_code);
234689    --
234690    -- set accounting class
234691    --
234692    xla_ae_lines_pkg.SetAcctClass(
234693            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
234694          , p_ae_header_id           => l_ae_header_id
234695          );
234696 
234697    --
234698    -- set rounding class
234699    --
234700    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
234701                       'INTRANSIT_BRIDGING';
234702 
234703    --
234704    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
234705    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
234706    --
234707    -- bulk performance
234708    --
234709    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
234710 
234711    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
234712       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
234713 
234714    -- 4955764
234715    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
234716       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
234717 
234718    -- 4458381 Public Sector Enh
234719    
234720    --
234721    -- set accounting attributes for the line type
234722    --
234723    l_entered_amt_idx := 17;
234724    l_accted_amt_idx  := 22;
234725    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
234726    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
234727    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
234728    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
234729    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
234730    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
234731    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
234732    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
234733    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
234734    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
234735    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
234736    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
234737    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
234738    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
234739    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
234740    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
234741    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
234742    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
234743    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
234744    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
234745    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
234746    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
234747    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
234748    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
234749    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
234750    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
234751    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
234752    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
234753    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
234754    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
234755    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
234756    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
234757    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
234758    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
234759    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
234760    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
234761    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
234762    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
234763    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
234764    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
234765    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
234766    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
234767    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
234768    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
234769    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
234770    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
234771    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
234772    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
234773    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
234774 
234775    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
234776    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
234777 
234778    ---------------------------------------------------------------------------------------------------------------
234779    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
234780    ---------------------------------------------------------------------------------------------------------------
234781    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
234782 
234783    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
234784    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
234785 
234786    IF xla_accounting_cache_pkg.GetValueChar
234787          (p_source_code         => 'LEDGER_CATEGORY_CODE'
234788          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
234789    AND l_bflow_method_code = 'PRIOR_ENTRY'
234790 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
234791    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
234792          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
234793        )
234794    THEN
234795          xla_ae_lines_pkg.BflowUpgEntry
234796            (p_business_method_code    => l_bflow_method_code
234797            ,p_business_class_code     => l_bflow_class_code
234798            ,p_balance_type            => l_balance_type_code);
234799    ELSE
234800       NULL;
234801 -- No business flow processing for business flow method of NONE.
234802    END IF;
234803 
234804    --
234805    -- call analytical criteria
234806    --
234807    
234808    --
234809    -- call description
234810    --
234811    
234812 xla_ae_lines_pkg.SetLineDescription(
234813    p_ae_header_id => l_ae_header_id
234814   ,p_description  => Description_1 (
234815      p_application_id         => p_application_id
234816    , p_ae_header_id           => l_ae_header_id 
234817 , p_source_1 => p_source_1
234818 , p_source_2 => p_source_2
234819 , p_source_3 => p_source_3
234820 , p_source_4 => p_source_4
234821 , p_source_5 => p_source_5
234822    )
234823 );
234824 
234825 
234826    --
234827    -- call ADRs
234828    -- Bug 4922099
234829    --
234830    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
234831         (NVL(l_actual_upg_option, 'N') = 'O') OR
234832         (NVL(l_enc_upg_option, 'N') = 'O')
234833       )
234834    THEN
234835    NULL;
234836    --
234837    --
234838    
234839   l_ccid := AcctDerRule_26(
234840            p_application_id           => p_application_id
234841          , p_ae_header_id             => l_ae_header_id 
234842 , p_source_46 => p_source_46
234843          , x_transaction_coa_id       => l_adr_transaction_coa_id
234844          , x_accounting_coa_id        => l_adr_accounting_coa_id
234845          , x_value_type_code          => l_adr_value_type_code
234846          , p_side                     => 'NA'
234847    );
234848 
234849    xla_ae_lines_pkg.set_ccid(
234850     p_code_combination_id          => l_ccid
234851   , p_value_type_code              => l_adr_value_type_code
234852   , p_transaction_coa_id           => l_adr_transaction_coa_id
234853   , p_accounting_coa_id            => l_adr_accounting_coa_id
234854   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
234855   , p_adr_type_code                => 'S'
234856   , p_component_type               => l_component_type
234857   , p_component_code               => l_component_code
234858   , p_component_type_code          => l_component_type_code
234859   , p_component_appl_id            => l_component_appl_id
234860   , p_amb_context_code             => l_amb_context_code
234861   , p_side                         => 'NA'
234862   );
234863 
234864 
234865    --
234866    --
234867    END IF;
234868    --
234869    -- Bug 4922099
234870    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
234871           (NVL(l_enc_upg_option, 'N') = 'O')
234872         ) AND
234873         (l_bflow_method_code = 'PRIOR_ENTRY')
234874       )
234875    THEN
234876       IF
234877       --
234878       1 = 2
234879       --
234880       THEN
234881       xla_accounting_err_pkg.build_message
234882                                     (p_appli_s_name            => 'XLA'
234883                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
234884                                     ,p_token_1                 => 'LINE_NUMBER'
234885                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
234886                                     ,p_token_2                 => 'LINE_TYPE_NAME'
234887                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
234888                                                                              l_component_type
234889                                                                             ,l_component_code
234890                                                                             ,l_component_type_code
234891                                                                             ,l_component_appl_id
234892                                                                             ,l_amb_context_code
234893                                                                             ,l_entity_code
234894                                                                             ,l_event_class_code
234895                                                                            )
234896                                     ,p_token_3                 => 'OWNER'
234897                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
234898                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
234899                                                                           ,p_lookup_code    => l_component_type_code
234900                                                                          )
234901                                     ,p_token_4                 => 'PRODUCT_NAME'
234902                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
234903                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
234904                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
234905                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
234906                                     ,p_ae_header_id            =>  NULL
234907                                        );
234908 
234909         IF (C_LEVEL_ERROR>= g_log_level) THEN
234910                  trace
234911                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
234912                       ,p_level    => C_LEVEL_ERROR
234913                       ,p_module   => l_log_module);
234914         END IF;
234915       END IF;
234916    END IF;
234917    --
234918    --
234919    ------------------------------------------------------------------------------------------------
234920    -- 4219869 Business Flow
234921    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
234922    -- Prior Entry.  Currently, the following code is always generated.
234923    ------------------------------------------------------------------------------------------------
234924    XLA_AE_LINES_PKG.ValidateCurrentLine;
234925 
234926    ------------------------------------------------------------------------------------
234927    -- 4219869 Business Flow
234928    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
234929    ------------------------------------------------------------------------------------
234930    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
234931 
234932    ----------------------------------------------------------------------------------
234933    -- 4219869 Business Flow
234934    -- Update journal entry status -- Need to generate this within IF <condition>
234935    ----------------------------------------------------------------------------------
234936    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
234937          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
234938          ,p_balance_type_code => l_balance_type_code
234939          );
234940 
234941    -------------------------------------------------------------------------------------------
234942    -- 4262811 - Generate the Accrual Reversal lines
234943    -------------------------------------------------------------------------------------------
234944    BEGIN
234945       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
234946                               (g_array_event(p_event_id).array_value_num('header_index'));
234947       IF l_acc_rev_flag IS NULL THEN
234948          l_acc_rev_flag := 'N';
234949       END IF;
234950    EXCEPTION
234951       WHEN OTHERS THEN
234952          l_acc_rev_flag := 'N';
234953    END;
234954    --
234955    IF (l_acc_rev_flag = 'Y') THEN
234956 
234957        -- 4645092  ------------------------------------------------------------------------------
234958        -- To allow MPA report to determine if it should generate report process
234959        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
234960        ------------------------------------------------------------------------------------------
234961 
234962        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
234963        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
234964    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
234965    -- call ADRs
234966    -- Bug 4922099
234967    --
234968    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
234969         (NVL(l_actual_upg_option, 'N') = 'O') OR
234970         (NVL(l_enc_upg_option, 'N') = 'O')
234971       )
234972    THEN
234973    NULL;
234974    --
234975    --
234976    
234977   l_ccid := AcctDerRule_26(
234978            p_application_id           => p_application_id
234979          , p_ae_header_id             => l_ae_header_id 
234980 , p_source_46 => p_source_46
234981          , x_transaction_coa_id       => l_adr_transaction_coa_id
234982          , x_accounting_coa_id        => l_adr_accounting_coa_id
234983          , x_value_type_code          => l_adr_value_type_code
234984          , p_side                     => 'NA'
234985    );
234986 
234987    xla_ae_lines_pkg.set_ccid(
234988     p_code_combination_id          => l_ccid
234989   , p_value_type_code              => l_adr_value_type_code
234990   , p_transaction_coa_id           => l_adr_transaction_coa_id
234991   , p_accounting_coa_id            => l_adr_accounting_coa_id
234992   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
234993   , p_adr_type_code                => 'S'
234994   , p_component_type               => l_component_type
234995   , p_component_code               => l_component_code
234996   , p_component_type_code          => l_component_type_code
234997   , p_component_appl_id            => l_component_appl_id
234998   , p_amb_context_code             => l_amb_context_code
234999   , p_side                         => 'NA'
235000   );
235001 
235002 
235003    --
235004    --
235005    END IF;
235006 
235007        --
235008        -- Update the line information that should be overwritten
235009        --
235010        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
235011                                          p_header_num   => 1);
235012        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
235013 
235014        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
235015 
235016        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
235017           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
235018        END IF;
235019 
235020       --
235021       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
235022       --
235023       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
235024           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
235025       ELSE
235026           ---------------------------------------------------------------------------------------------------
235027           -- 4262811a Switch Sign
235028           ---------------------------------------------------------------------------------------------------
235029           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
235030           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
235031                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
235032           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
235033                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
235034           -- 5132302
235035           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
235036                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
235037 
235038       END IF;
235039 
235040       -- 4955764
235041       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
235042       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
235043 
235044 
235045       XLA_AE_LINES_PKG.ValidateCurrentLine;
235046       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
235047 
235048       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
235049                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
235050                ,p_balance_type_code => l_balance_type_code);
235051 
235052    END IF;
235053 
235054    -----------------------------------------------------------------------------------------
235055    -- 4262811 Multiperiod Accounting
235056    -----------------------------------------------------------------------------------------
235057      -- No MPA option is assigned.
235058 
235059 
235060 END IF;
235061 END IF;
235062 --
235063 
235064 --
235065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
235066    trace
235067       (p_msg      => 'END of AcctLineType_424'
235068       ,p_level    => C_LEVEL_PROCEDURE
235069       ,p_module   => l_log_module);
235070 END IF;
235071 --
235072 EXCEPTION
235073   WHEN xla_exceptions_pkg.application_exception THEN
235074       RAISE;
235075   WHEN OTHERS THEN
235076        xla_exceptions_pkg.raise_message
235077            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_424');
235078 END AcctLineType_424;
235079 --
235080 
235081 ---------------------------------------
235082 --
235083 -- PRIVATE FUNCTION
235084 --         AcctLineType_425
235085 --
235086 ---------------------------------------
235087 PROCEDURE AcctLineType_425 (
235088   p_application_id        IN NUMBER
235089  ,p_event_id              IN NUMBER
235090  ,p_calculate_acctd_flag  IN VARCHAR2
235091  ,p_calculate_g_l_flag    IN VARCHAR2
235092  ,p_actual_flag           IN OUT VARCHAR2
235093  ,p_balance_type_code     OUT VARCHAR2
235094  ,p_gain_or_loss_ref      OUT VARCHAR2
235095  
235096 --TRANSACTION_ID
235097  , p_source_1            IN NUMBER
235098 --Item Concatenated Segments
235099  , p_source_2            IN VARCHAR2
235100 --Transaction Quantity
235101  , p_source_3            IN NUMBER
235102 --Transaction Unit of Measure Code
235103  , p_source_4            IN VARCHAR2
235104 --Inventory Transaction Type Description
235105  , p_source_5            IN VARCHAR2
235106 --Interorg Bridging Account
235107  , p_source_46            IN NUMBER
235108 --DISTRIBUTION_IDENTIFIER
235109  , p_source_84            IN NUMBER
235110 --Distribution Type
235111  , p_source_85            IN VARCHAR2
235112  , p_source_85_meaning    IN VARCHAR2
235113 --Entered Currency Code
235114  , p_source_88            IN VARCHAR2
235115 --Entered Amount
235116  , p_source_91            IN NUMBER
235117 --Currency Conversion Date
235118  , p_source_92            IN DATE
235119 --Currency Conversion Rate
235120  , p_source_93            IN NUMBER
235121 --Currency Conversion Type
235122  , p_source_94            IN VARCHAR2
235123 --Accounted Amount
235124  , p_source_95            IN NUMBER
235125 --Accounting Line Type
235126  , p_source_97            IN NUMBER
235127 )
235128 IS
235129 
235130 l_component_type              VARCHAR2(80);
235131 l_component_code              VARCHAR2(30);
235132 l_component_type_code         VARCHAR2(1);
235133 l_component_appl_id           INTEGER;
235134 l_amb_context_code            VARCHAR2(30);
235135 l_entity_code                 VARCHAR2(30);
235136 l_event_class_code            VARCHAR2(30);
235137 l_ae_header_id                NUMBER;
235138 l_event_type_code             VARCHAR2(30);
235139 l_line_definition_code        VARCHAR2(30);
235140 l_line_definition_owner_code  VARCHAR2(1);
235141 --
235142 -- adr variables
235143 l_segment                     VARCHAR2(30);
235144 l_ccid                        NUMBER;
235145 l_adr_transaction_coa_id      NUMBER;
235146 l_adr_accounting_coa_id       NUMBER;
235147 l_adr_flexfield_segment_code  VARCHAR2(30);
235148 l_adr_flex_value_set_id       NUMBER;
235149 l_adr_value_type_code         VARCHAR2(30);
235150 l_adr_value_combination_id    NUMBER;
235151 l_adr_value_segment_code      VARCHAR2(30);
235152 
235153 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
235154 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
235155 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
235156 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
235157 
235158 -- 4262811 Variables ------------------------------------------------------------------------------------------
235159 l_entered_amt_idx             NUMBER;
235160 l_accted_amt_idx              NUMBER;
235161 l_acc_rev_flag                VARCHAR2(1);
235162 l_accrual_line_num            NUMBER;
235163 l_tmp_amt                     NUMBER;
235164 l_acc_rev_natural_side_code   VARCHAR2(1);
235165 
235166 l_num_entries                 NUMBER;
235167 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
235168 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
235169 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
235170 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
235171 l_recog_line_1                NUMBER;
235172 l_recog_line_2                NUMBER;
235173 
235174 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
235175 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
235176 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
235177 
235178 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
235179 
235180 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
235181 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
235182 
235183 ---------------------------------------------------------------------------------------------------------------
235184 
235185 
235186 --
235187 -- bulk performance
235188 --
235189 l_balance_type_code           VARCHAR2(1);
235190 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
235191 l_log_module                  VARCHAR2(240);
235192 
235193 --
235194 -- Upgrade strategy
235195 --
235196 l_actual_upg_option           VARCHAR2(1);
235197 l_enc_upg_option           VARCHAR2(1);
235198 
235199 --
235200 BEGIN
235201 --
235202 IF g_log_enabled THEN
235203       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_425';
235204 END IF;
235205 --
235206 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
235207 
235208       trace
235209          (p_msg      => 'BEGIN of AcctLineType_425'
235210          ,p_level    => C_LEVEL_PROCEDURE
235211          ,p_module   => l_log_module);
235212 
235213 END IF;
235214 --
235215 l_component_type             := 'AMB_JLT';
235216 l_component_code             := 'PI_INTRANSIT_BRIDGING_122FM';
235217 l_component_type_code        := 'S';
235218 l_component_appl_id          :=  707;
235219 l_amb_context_code           := 'DEFAULT';
235220 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
235221 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
235222 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
235223 l_line_definition_owner_code := 'S';
235224 l_line_definition_code       := 'PI_RCPT_SENDER_RCPT_TP';
235225 --
235226 l_balance_type_code          := 'A';
235227 l_segment                     := NULL;
235228 l_ccid                        := NULL;
235229 l_adr_transaction_coa_id      := NULL;
235230 l_adr_accounting_coa_id       := NULL;
235231 l_adr_flexfield_segment_code  := NULL;
235232 l_adr_flex_value_set_id       := NULL;
235233 l_adr_value_type_code         := NULL;
235234 l_adr_value_combination_id    := NULL;
235235 l_adr_value_segment_code      := NULL;
235236 
235237 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
235238 l_bflow_class_code           := '';    -- 4219869 Business Flow
235239 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
235240 l_budgetary_control_flag     := 'N';
235241 
235242 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
235243 l_bflow_applied_to_amt       := NULL; -- 5132302
235244 l_entered_amt_idx            := NULL;          -- 4262811
235245 l_accted_amt_idx             := NULL;          -- 4262811
235246 l_acc_rev_flag               := NULL;          -- 4262811
235247 l_accrual_line_num           := NULL;          -- 4262811
235248 l_tmp_amt                    := NULL;          -- 4262811
235249 --
235250  
235251 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
235252     l_balance_type_code <> 'B' THEN
235253 IF NVL(p_source_97,9E125) =  14
235254  THEN 
235255 
235256    --
235257    XLA_AE_LINES_PKG.SetNewLine;
235258 
235259    p_balance_type_code          := l_balance_type_code;
235260    -- set the flag so later we will know whether the gain loss line needs to be created
235261    
235262    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
235263      p_actual_flag :='A';
235264    END IF;
235265 
235266    --
235267    -- bulk performance
235268    --
235269    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
235270                                       p_header_num   => 0); -- 4262811
235271    --
235272    -- set accounting line options
235273    --
235274    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
235275            p_natural_side_code          => 'C'
235276          , p_gain_or_loss_flag          => 'N'
235277          , p_gl_transfer_mode_code      => 'S'
235278          , p_acct_entry_type_code       => 'A'
235279          , p_switch_side_flag           => 'Y'
235280          , p_merge_duplicate_code       => 'N'
235281          );
235282    --
235283    l_acc_rev_natural_side_code := 'D';  -- 4262811
235284    -- 
235285    --
235286    -- set accounting line type info
235287    --
235288    xla_ae_lines_pkg.SetAcctLineType
235289       (p_component_type             => l_component_type
235290       ,p_event_type_code            => l_event_type_code
235291       ,p_line_definition_owner_code => l_line_definition_owner_code
235292       ,p_line_definition_code       => l_line_definition_code
235293       ,p_accounting_line_code       => l_component_code
235294       ,p_accounting_line_type_code  => l_component_type_code
235295       ,p_accounting_line_appl_id    => l_component_appl_id
235296       ,p_amb_context_code           => l_amb_context_code
235297       ,p_entity_code                => l_entity_code
235298       ,p_event_class_code           => l_event_class_code);
235299    --
235300    -- set accounting class
235301    --
235302    xla_ae_lines_pkg.SetAcctClass(
235303            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
235304          , p_ae_header_id           => l_ae_header_id
235305          );
235306 
235307    --
235308    -- set rounding class
235309    --
235310    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
235311                       'INTRANSIT_BRIDGING';
235312 
235313    --
235314    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
235315    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
235316    --
235317    -- bulk performance
235318    --
235319    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
235320 
235321    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
235322       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
235323 
235324    -- 4955764
235325    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
235326       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
235327 
235328    -- 4458381 Public Sector Enh
235329    
235330    --
235331    -- set accounting attributes for the line type
235332    --
235333    l_entered_amt_idx := 3;
235334    l_accted_amt_idx  := 8;
235335    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
235336    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
235337    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
235338    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
235339    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
235340    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
235341    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
235342    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
235343    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
235344    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
235345    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
235346    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
235347    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
235348    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
235349    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
235350    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
235351    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
235352 
235353    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
235354    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
235355 
235356    ---------------------------------------------------------------------------------------------------------------
235357    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
235358    ---------------------------------------------------------------------------------------------------------------
235359    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
235360 
235361    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
235362    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
235363 
235364    IF xla_accounting_cache_pkg.GetValueChar
235365          (p_source_code         => 'LEDGER_CATEGORY_CODE'
235366          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
235367    AND l_bflow_method_code = 'PRIOR_ENTRY'
235368 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
235369    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
235370          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
235371        )
235372    THEN
235373          xla_ae_lines_pkg.BflowUpgEntry
235374            (p_business_method_code    => l_bflow_method_code
235375            ,p_business_class_code     => l_bflow_class_code
235376            ,p_balance_type            => l_balance_type_code);
235377    ELSE
235378       NULL;
235379 -- No business flow processing for business flow method of NONE.
235380    END IF;
235381 
235382    --
235383    -- call analytical criteria
235384    --
235385    
235386    --
235387    -- call description
235388    --
235389    
235390 xla_ae_lines_pkg.SetLineDescription(
235391    p_ae_header_id => l_ae_header_id
235392   ,p_description  => Description_1 (
235393      p_application_id         => p_application_id
235394    , p_ae_header_id           => l_ae_header_id 
235395 , p_source_1 => p_source_1
235396 , p_source_2 => p_source_2
235397 , p_source_3 => p_source_3
235398 , p_source_4 => p_source_4
235399 , p_source_5 => p_source_5
235400    )
235401 );
235402 
235403 
235404    --
235405    -- call ADRs
235406    -- Bug 4922099
235407    --
235408    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
235409         (NVL(l_actual_upg_option, 'N') = 'O') OR
235410         (NVL(l_enc_upg_option, 'N') = 'O')
235411       )
235412    THEN
235413    NULL;
235414    --
235415    --
235416    
235417   l_ccid := AcctDerRule_26(
235418            p_application_id           => p_application_id
235419          , p_ae_header_id             => l_ae_header_id 
235420 , p_source_46 => p_source_46
235421          , x_transaction_coa_id       => l_adr_transaction_coa_id
235422          , x_accounting_coa_id        => l_adr_accounting_coa_id
235423          , x_value_type_code          => l_adr_value_type_code
235424          , p_side                     => 'NA'
235425    );
235426 
235427    xla_ae_lines_pkg.set_ccid(
235428     p_code_combination_id          => l_ccid
235429   , p_value_type_code              => l_adr_value_type_code
235430   , p_transaction_coa_id           => l_adr_transaction_coa_id
235431   , p_accounting_coa_id            => l_adr_accounting_coa_id
235432   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
235433   , p_adr_type_code                => 'S'
235434   , p_component_type               => l_component_type
235435   , p_component_code               => l_component_code
235436   , p_component_type_code          => l_component_type_code
235437   , p_component_appl_id            => l_component_appl_id
235438   , p_amb_context_code             => l_amb_context_code
235439   , p_side                         => 'NA'
235440   );
235441 
235442 
235443    --
235444    --
235445    END IF;
235446    --
235447    -- Bug 4922099
235448    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
235449           (NVL(l_enc_upg_option, 'N') = 'O')
235450         ) AND
235451         (l_bflow_method_code = 'PRIOR_ENTRY')
235452       )
235453    THEN
235454       IF
235455       --
235456       1 = 2
235457       --
235458       THEN
235459       xla_accounting_err_pkg.build_message
235460                                     (p_appli_s_name            => 'XLA'
235461                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
235462                                     ,p_token_1                 => 'LINE_NUMBER'
235463                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
235464                                     ,p_token_2                 => 'LINE_TYPE_NAME'
235465                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
235466                                                                              l_component_type
235467                                                                             ,l_component_code
235468                                                                             ,l_component_type_code
235469                                                                             ,l_component_appl_id
235470                                                                             ,l_amb_context_code
235471                                                                             ,l_entity_code
235472                                                                             ,l_event_class_code
235473                                                                            )
235474                                     ,p_token_3                 => 'OWNER'
235475                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
235476                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
235477                                                                           ,p_lookup_code    => l_component_type_code
235478                                                                          )
235479                                     ,p_token_4                 => 'PRODUCT_NAME'
235480                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
235481                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
235482                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
235483                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
235484                                     ,p_ae_header_id            =>  NULL
235485                                        );
235486 
235487         IF (C_LEVEL_ERROR>= g_log_level) THEN
235488                  trace
235489                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
235490                       ,p_level    => C_LEVEL_ERROR
235491                       ,p_module   => l_log_module);
235492         END IF;
235493       END IF;
235494    END IF;
235495    --
235496    --
235497    ------------------------------------------------------------------------------------------------
235498    -- 4219869 Business Flow
235499    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
235500    -- Prior Entry.  Currently, the following code is always generated.
235501    ------------------------------------------------------------------------------------------------
235502    XLA_AE_LINES_PKG.ValidateCurrentLine;
235503 
235504    ------------------------------------------------------------------------------------
235505    -- 4219869 Business Flow
235506    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
235507    ------------------------------------------------------------------------------------
235508    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
235509 
235510    ----------------------------------------------------------------------------------
235511    -- 4219869 Business Flow
235512    -- Update journal entry status -- Need to generate this within IF <condition>
235513    ----------------------------------------------------------------------------------
235514    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
235515          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
235516          ,p_balance_type_code => l_balance_type_code
235517          );
235518 
235519    -------------------------------------------------------------------------------------------
235520    -- 4262811 - Generate the Accrual Reversal lines
235521    -------------------------------------------------------------------------------------------
235522    BEGIN
235523       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
235524                               (g_array_event(p_event_id).array_value_num('header_index'));
235525       IF l_acc_rev_flag IS NULL THEN
235526          l_acc_rev_flag := 'N';
235527       END IF;
235528    EXCEPTION
235529       WHEN OTHERS THEN
235530          l_acc_rev_flag := 'N';
235531    END;
235532    --
235533    IF (l_acc_rev_flag = 'Y') THEN
235534 
235535        -- 4645092  ------------------------------------------------------------------------------
235536        -- To allow MPA report to determine if it should generate report process
235537        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
235538        ------------------------------------------------------------------------------------------
235539 
235540        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
235541        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
235542    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
235543    -- call ADRs
235544    -- Bug 4922099
235545    --
235546    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
235547         (NVL(l_actual_upg_option, 'N') = 'O') OR
235548         (NVL(l_enc_upg_option, 'N') = 'O')
235549       )
235550    THEN
235551    NULL;
235552    --
235553    --
235554    
235555   l_ccid := AcctDerRule_26(
235556            p_application_id           => p_application_id
235557          , p_ae_header_id             => l_ae_header_id 
235558 , p_source_46 => p_source_46
235559          , x_transaction_coa_id       => l_adr_transaction_coa_id
235560          , x_accounting_coa_id        => l_adr_accounting_coa_id
235561          , x_value_type_code          => l_adr_value_type_code
235562          , p_side                     => 'NA'
235563    );
235564 
235565    xla_ae_lines_pkg.set_ccid(
235566     p_code_combination_id          => l_ccid
235567   , p_value_type_code              => l_adr_value_type_code
235568   , p_transaction_coa_id           => l_adr_transaction_coa_id
235569   , p_accounting_coa_id            => l_adr_accounting_coa_id
235570   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
235571   , p_adr_type_code                => 'S'
235572   , p_component_type               => l_component_type
235573   , p_component_code               => l_component_code
235574   , p_component_type_code          => l_component_type_code
235575   , p_component_appl_id            => l_component_appl_id
235576   , p_amb_context_code             => l_amb_context_code
235577   , p_side                         => 'NA'
235578   );
235579 
235580 
235581    --
235582    --
235583    END IF;
235584 
235585        --
235586        -- Update the line information that should be overwritten
235587        --
235588        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
235589                                          p_header_num   => 1);
235590        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
235591 
235592        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
235593 
235594        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
235595           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
235596        END IF;
235597 
235598       --
235599       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
235600       --
235601       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
235602           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
235603       ELSE
235604           ---------------------------------------------------------------------------------------------------
235605           -- 4262811a Switch Sign
235606           ---------------------------------------------------------------------------------------------------
235607           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
235608           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
235609                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
235610           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
235611                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
235612           -- 5132302
235613           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
235614                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
235615 
235616       END IF;
235617 
235618       -- 4955764
235619       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
235620       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
235621 
235622 
235623       XLA_AE_LINES_PKG.ValidateCurrentLine;
235624       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
235625 
235626       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
235627                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
235628                ,p_balance_type_code => l_balance_type_code);
235629 
235630    END IF;
235631 
235632    -----------------------------------------------------------------------------------------
235633    -- 4262811 Multiperiod Accounting
235634    -----------------------------------------------------------------------------------------
235635      -- No MPA option is assigned.
235636 
235637 
235638 END IF;
235639 END IF;
235640 --
235641 
235642 --
235643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
235644    trace
235645       (p_msg      => 'END of AcctLineType_425'
235646       ,p_level    => C_LEVEL_PROCEDURE
235647       ,p_module   => l_log_module);
235648 END IF;
235649 --
235650 EXCEPTION
235651   WHEN xla_exceptions_pkg.application_exception THEN
235652       RAISE;
235653   WHEN OTHERS THEN
235654        xla_exceptions_pkg.raise_message
235655            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_425');
235656 END AcctLineType_425;
235657 --
235658 
235659 ---------------------------------------
235660 --
235661 -- PRIVATE FUNCTION
235662 --         AcctLineType_426
235663 --
235664 ---------------------------------------
235665 PROCEDURE AcctLineType_426 (
235666   p_application_id        IN NUMBER
235667  ,p_event_id              IN NUMBER
235668  ,p_calculate_acctd_flag  IN VARCHAR2
235669  ,p_calculate_g_l_flag    IN VARCHAR2
235670  ,p_actual_flag           IN OUT VARCHAR2
235671  ,p_balance_type_code     OUT VARCHAR2
235672  ,p_gain_or_loss_ref      OUT VARCHAR2
235673  
235674 --TRANSACTION_ID
235675  , p_source_1            IN NUMBER
235676 --Item Concatenated Segments
235677  , p_source_2            IN VARCHAR2
235678 --Transaction Quantity
235679  , p_source_3            IN NUMBER
235680 --Transaction Unit of Measure Code
235681  , p_source_4            IN VARCHAR2
235682 --Inventory Transaction Type Description
235683  , p_source_5            IN VARCHAR2
235684 --Interorg Bridging Account
235685  , p_source_46            IN NUMBER
235686 --DISTRIBUTION_IDENTIFIER
235687  , p_source_84            IN NUMBER
235688 --Distribution Type
235689  , p_source_85            IN VARCHAR2
235690  , p_source_85_meaning    IN VARCHAR2
235691 --Entered Currency Code
235692  , p_source_88            IN VARCHAR2
235693 --Entered Amount
235694  , p_source_91            IN NUMBER
235695 --Currency Conversion Date
235696  , p_source_92            IN DATE
235697 --Currency Conversion Rate
235698  , p_source_93            IN NUMBER
235699 --Currency Conversion Type
235700  , p_source_94            IN VARCHAR2
235701 --Accounted Amount
235702  , p_source_95            IN NUMBER
235703 --Accounting Line Type
235704  , p_source_97            IN NUMBER
235705 )
235706 IS
235707 
235708 l_component_type              VARCHAR2(80);
235709 l_component_code              VARCHAR2(30);
235710 l_component_type_code         VARCHAR2(1);
235711 l_component_appl_id           INTEGER;
235712 l_amb_context_code            VARCHAR2(30);
235713 l_entity_code                 VARCHAR2(30);
235714 l_event_class_code            VARCHAR2(30);
235715 l_ae_header_id                NUMBER;
235716 l_event_type_code             VARCHAR2(30);
235717 l_line_definition_code        VARCHAR2(30);
235718 l_line_definition_owner_code  VARCHAR2(1);
235719 --
235720 -- adr variables
235721 l_segment                     VARCHAR2(30);
235722 l_ccid                        NUMBER;
235723 l_adr_transaction_coa_id      NUMBER;
235724 l_adr_accounting_coa_id       NUMBER;
235725 l_adr_flexfield_segment_code  VARCHAR2(30);
235726 l_adr_flex_value_set_id       NUMBER;
235727 l_adr_value_type_code         VARCHAR2(30);
235728 l_adr_value_combination_id    NUMBER;
235729 l_adr_value_segment_code      VARCHAR2(30);
235730 
235731 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
235732 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
235733 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
235734 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
235735 
235736 -- 4262811 Variables ------------------------------------------------------------------------------------------
235737 l_entered_amt_idx             NUMBER;
235738 l_accted_amt_idx              NUMBER;
235739 l_acc_rev_flag                VARCHAR2(1);
235740 l_accrual_line_num            NUMBER;
235741 l_tmp_amt                     NUMBER;
235742 l_acc_rev_natural_side_code   VARCHAR2(1);
235743 
235744 l_num_entries                 NUMBER;
235745 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
235746 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
235747 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
235748 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
235749 l_recog_line_1                NUMBER;
235750 l_recog_line_2                NUMBER;
235751 
235752 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
235753 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
235754 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
235755 
235756 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
235757 
235758 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
235759 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
235760 
235761 ---------------------------------------------------------------------------------------------------------------
235762 
235763 
235764 --
235765 -- bulk performance
235766 --
235767 l_balance_type_code           VARCHAR2(1);
235768 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
235769 l_log_module                  VARCHAR2(240);
235770 
235771 --
235772 -- Upgrade strategy
235773 --
235774 l_actual_upg_option           VARCHAR2(1);
235775 l_enc_upg_option           VARCHAR2(1);
235776 
235777 --
235778 BEGIN
235779 --
235780 IF g_log_enabled THEN
235781       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_426';
235782 END IF;
235783 --
235784 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
235785 
235786       trace
235787          (p_msg      => 'BEGIN of AcctLineType_426'
235788          ,p_level    => C_LEVEL_PROCEDURE
235789          ,p_module   => l_log_module);
235790 
235791 END IF;
235792 --
235793 l_component_type             := 'AMB_JLT';
235794 l_component_code             := 'PI_INTRANSIT_BRIDGING_122FM';
235795 l_component_type_code        := 'S';
235796 l_component_appl_id          :=  707;
235797 l_amb_context_code           := 'DEFAULT';
235798 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
235799 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
235800 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
235801 l_line_definition_owner_code := 'S';
235802 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
235803 --
235804 l_balance_type_code          := 'A';
235805 l_segment                     := NULL;
235806 l_ccid                        := NULL;
235807 l_adr_transaction_coa_id      := NULL;
235808 l_adr_accounting_coa_id       := NULL;
235809 l_adr_flexfield_segment_code  := NULL;
235810 l_adr_flex_value_set_id       := NULL;
235811 l_adr_value_type_code         := NULL;
235812 l_adr_value_combination_id    := NULL;
235813 l_adr_value_segment_code      := NULL;
235814 
235815 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
235816 l_bflow_class_code           := '';    -- 4219869 Business Flow
235817 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
235818 l_budgetary_control_flag     := 'N';
235819 
235820 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
235821 l_bflow_applied_to_amt       := NULL; -- 5132302
235822 l_entered_amt_idx            := NULL;          -- 4262811
235823 l_accted_amt_idx             := NULL;          -- 4262811
235824 l_acc_rev_flag               := NULL;          -- 4262811
235825 l_accrual_line_num           := NULL;          -- 4262811
235826 l_tmp_amt                    := NULL;          -- 4262811
235827 --
235828  
235829 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
235830     l_balance_type_code <> 'B' THEN
235831 IF NVL(p_source_97,9E125) =  14
235832  THEN 
235833 
235834    --
235835    XLA_AE_LINES_PKG.SetNewLine;
235836 
235837    p_balance_type_code          := l_balance_type_code;
235838    -- set the flag so later we will know whether the gain loss line needs to be created
235839    
235840    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
235841      p_actual_flag :='A';
235842    END IF;
235843 
235844    --
235845    -- bulk performance
235846    --
235847    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
235848                                       p_header_num   => 0); -- 4262811
235849    --
235850    -- set accounting line options
235851    --
235852    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
235853            p_natural_side_code          => 'C'
235854          , p_gain_or_loss_flag          => 'N'
235855          , p_gl_transfer_mode_code      => 'S'
235856          , p_acct_entry_type_code       => 'A'
235857          , p_switch_side_flag           => 'Y'
235858          , p_merge_duplicate_code       => 'N'
235859          );
235860    --
235861    l_acc_rev_natural_side_code := 'D';  -- 4262811
235862    -- 
235863    --
235864    -- set accounting line type info
235865    --
235866    xla_ae_lines_pkg.SetAcctLineType
235867       (p_component_type             => l_component_type
235868       ,p_event_type_code            => l_event_type_code
235869       ,p_line_definition_owner_code => l_line_definition_owner_code
235870       ,p_line_definition_code       => l_line_definition_code
235871       ,p_accounting_line_code       => l_component_code
235872       ,p_accounting_line_type_code  => l_component_type_code
235873       ,p_accounting_line_appl_id    => l_component_appl_id
235874       ,p_amb_context_code           => l_amb_context_code
235875       ,p_entity_code                => l_entity_code
235876       ,p_event_class_code           => l_event_class_code);
235877    --
235878    -- set accounting class
235879    --
235880    xla_ae_lines_pkg.SetAcctClass(
235881            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
235882          , p_ae_header_id           => l_ae_header_id
235883          );
235884 
235885    --
235886    -- set rounding class
235887    --
235888    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
235889                       'INTRANSIT_BRIDGING';
235890 
235891    --
235892    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
235893    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
235894    --
235895    -- bulk performance
235896    --
235897    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
235898 
235899    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
235900       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
235901 
235902    -- 4955764
235903    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
235904       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
235905 
235906    -- 4458381 Public Sector Enh
235907    
235908    --
235909    -- set accounting attributes for the line type
235910    --
235911    l_entered_amt_idx := 3;
235912    l_accted_amt_idx  := 8;
235913    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
235914    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
235915    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
235916    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
235917    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
235918    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
235919    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
235920    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
235921    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
235922    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
235923    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
235924    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
235925    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
235926    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
235927    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
235928    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
235929    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
235930 
235931    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
235932    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
235933 
235934    ---------------------------------------------------------------------------------------------------------------
235935    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
235936    ---------------------------------------------------------------------------------------------------------------
235937    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
235938 
235939    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
235940    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
235941 
235942    IF xla_accounting_cache_pkg.GetValueChar
235943          (p_source_code         => 'LEDGER_CATEGORY_CODE'
235944          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
235945    AND l_bflow_method_code = 'PRIOR_ENTRY'
235946 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
235947    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
235948          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
235949        )
235950    THEN
235951          xla_ae_lines_pkg.BflowUpgEntry
235952            (p_business_method_code    => l_bflow_method_code
235953            ,p_business_class_code     => l_bflow_class_code
235954            ,p_balance_type            => l_balance_type_code);
235955    ELSE
235956       NULL;
235957 -- No business flow processing for business flow method of NONE.
235958    END IF;
235959 
235960    --
235961    -- call analytical criteria
235962    --
235963    
235964    --
235965    -- call description
235966    --
235967    
235968 xla_ae_lines_pkg.SetLineDescription(
235969    p_ae_header_id => l_ae_header_id
235970   ,p_description  => Description_1 (
235971      p_application_id         => p_application_id
235972    , p_ae_header_id           => l_ae_header_id 
235973 , p_source_1 => p_source_1
235974 , p_source_2 => p_source_2
235975 , p_source_3 => p_source_3
235976 , p_source_4 => p_source_4
235977 , p_source_5 => p_source_5
235978    )
235979 );
235980 
235981 
235982    --
235983    -- call ADRs
235984    -- Bug 4922099
235985    --
235986    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
235987         (NVL(l_actual_upg_option, 'N') = 'O') OR
235988         (NVL(l_enc_upg_option, 'N') = 'O')
235989       )
235990    THEN
235991    NULL;
235992    --
235993    --
235994    
235995   l_ccid := AcctDerRule_26(
235996            p_application_id           => p_application_id
235997          , p_ae_header_id             => l_ae_header_id 
235998 , p_source_46 => p_source_46
235999          , x_transaction_coa_id       => l_adr_transaction_coa_id
236000          , x_accounting_coa_id        => l_adr_accounting_coa_id
236001          , x_value_type_code          => l_adr_value_type_code
236002          , p_side                     => 'NA'
236003    );
236004 
236005    xla_ae_lines_pkg.set_ccid(
236006     p_code_combination_id          => l_ccid
236007   , p_value_type_code              => l_adr_value_type_code
236008   , p_transaction_coa_id           => l_adr_transaction_coa_id
236009   , p_accounting_coa_id            => l_adr_accounting_coa_id
236010   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
236011   , p_adr_type_code                => 'S'
236012   , p_component_type               => l_component_type
236013   , p_component_code               => l_component_code
236014   , p_component_type_code          => l_component_type_code
236015   , p_component_appl_id            => l_component_appl_id
236016   , p_amb_context_code             => l_amb_context_code
236017   , p_side                         => 'NA'
236018   );
236019 
236020 
236021    --
236022    --
236023    END IF;
236024    --
236025    -- Bug 4922099
236026    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
236027           (NVL(l_enc_upg_option, 'N') = 'O')
236028         ) AND
236029         (l_bflow_method_code = 'PRIOR_ENTRY')
236030       )
236031    THEN
236032       IF
236033       --
236034       1 = 2
236035       --
236036       THEN
236037       xla_accounting_err_pkg.build_message
236038                                     (p_appli_s_name            => 'XLA'
236039                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
236040                                     ,p_token_1                 => 'LINE_NUMBER'
236041                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
236042                                     ,p_token_2                 => 'LINE_TYPE_NAME'
236043                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
236044                                                                              l_component_type
236045                                                                             ,l_component_code
236046                                                                             ,l_component_type_code
236047                                                                             ,l_component_appl_id
236048                                                                             ,l_amb_context_code
236049                                                                             ,l_entity_code
236050                                                                             ,l_event_class_code
236051                                                                            )
236052                                     ,p_token_3                 => 'OWNER'
236053                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
236054                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
236055                                                                           ,p_lookup_code    => l_component_type_code
236056                                                                          )
236057                                     ,p_token_4                 => 'PRODUCT_NAME'
236058                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
236059                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
236060                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
236061                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
236062                                     ,p_ae_header_id            =>  NULL
236063                                        );
236064 
236065         IF (C_LEVEL_ERROR>= g_log_level) THEN
236066                  trace
236067                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
236068                       ,p_level    => C_LEVEL_ERROR
236069                       ,p_module   => l_log_module);
236070         END IF;
236071       END IF;
236072    END IF;
236073    --
236074    --
236075    ------------------------------------------------------------------------------------------------
236076    -- 4219869 Business Flow
236077    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
236078    -- Prior Entry.  Currently, the following code is always generated.
236079    ------------------------------------------------------------------------------------------------
236080    XLA_AE_LINES_PKG.ValidateCurrentLine;
236081 
236082    ------------------------------------------------------------------------------------
236083    -- 4219869 Business Flow
236084    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
236085    ------------------------------------------------------------------------------------
236086    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
236087 
236088    ----------------------------------------------------------------------------------
236089    -- 4219869 Business Flow
236090    -- Update journal entry status -- Need to generate this within IF <condition>
236091    ----------------------------------------------------------------------------------
236092    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
236093          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
236094          ,p_balance_type_code => l_balance_type_code
236095          );
236096 
236097    -------------------------------------------------------------------------------------------
236098    -- 4262811 - Generate the Accrual Reversal lines
236099    -------------------------------------------------------------------------------------------
236100    BEGIN
236101       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
236102                               (g_array_event(p_event_id).array_value_num('header_index'));
236103       IF l_acc_rev_flag IS NULL THEN
236104          l_acc_rev_flag := 'N';
236105       END IF;
236106    EXCEPTION
236107       WHEN OTHERS THEN
236108          l_acc_rev_flag := 'N';
236109    END;
236110    --
236111    IF (l_acc_rev_flag = 'Y') THEN
236112 
236113        -- 4645092  ------------------------------------------------------------------------------
236114        -- To allow MPA report to determine if it should generate report process
236115        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
236116        ------------------------------------------------------------------------------------------
236117 
236118        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
236119        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
236120    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
236121    -- call ADRs
236122    -- Bug 4922099
236123    --
236124    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
236125         (NVL(l_actual_upg_option, 'N') = 'O') OR
236126         (NVL(l_enc_upg_option, 'N') = 'O')
236127       )
236128    THEN
236129    NULL;
236130    --
236131    --
236132    
236133   l_ccid := AcctDerRule_26(
236134            p_application_id           => p_application_id
236135          , p_ae_header_id             => l_ae_header_id 
236136 , p_source_46 => p_source_46
236137          , x_transaction_coa_id       => l_adr_transaction_coa_id
236138          , x_accounting_coa_id        => l_adr_accounting_coa_id
236139          , x_value_type_code          => l_adr_value_type_code
236140          , p_side                     => 'NA'
236141    );
236142 
236143    xla_ae_lines_pkg.set_ccid(
236144     p_code_combination_id          => l_ccid
236145   , p_value_type_code              => l_adr_value_type_code
236146   , p_transaction_coa_id           => l_adr_transaction_coa_id
236147   , p_accounting_coa_id            => l_adr_accounting_coa_id
236148   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
236149   , p_adr_type_code                => 'S'
236150   , p_component_type               => l_component_type
236151   , p_component_code               => l_component_code
236152   , p_component_type_code          => l_component_type_code
236153   , p_component_appl_id            => l_component_appl_id
236154   , p_amb_context_code             => l_amb_context_code
236155   , p_side                         => 'NA'
236156   );
236157 
236158 
236159    --
236160    --
236161    END IF;
236162 
236163        --
236164        -- Update the line information that should be overwritten
236165        --
236166        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
236167                                          p_header_num   => 1);
236168        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
236169 
236170        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
236171 
236172        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
236173           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
236174        END IF;
236175 
236176       --
236177       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
236178       --
236179       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
236180           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
236181       ELSE
236182           ---------------------------------------------------------------------------------------------------
236183           -- 4262811a Switch Sign
236184           ---------------------------------------------------------------------------------------------------
236185           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
236186           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
236187                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
236188           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
236189                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
236190           -- 5132302
236191           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
236192                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
236193 
236194       END IF;
236195 
236196       -- 4955764
236197       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
236198       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
236199 
236200 
236201       XLA_AE_LINES_PKG.ValidateCurrentLine;
236202       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
236203 
236204       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
236205                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
236206                ,p_balance_type_code => l_balance_type_code);
236207 
236208    END IF;
236209 
236210    -----------------------------------------------------------------------------------------
236211    -- 4262811 Multiperiod Accounting
236212    -----------------------------------------------------------------------------------------
236213      -- No MPA option is assigned.
236214 
236215 
236216 END IF;
236217 END IF;
236218 --
236219 
236220 --
236221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
236222    trace
236223       (p_msg      => 'END of AcctLineType_426'
236224       ,p_level    => C_LEVEL_PROCEDURE
236225       ,p_module   => l_log_module);
236226 END IF;
236227 --
236228 EXCEPTION
236229   WHEN xla_exceptions_pkg.application_exception THEN
236230       RAISE;
236231   WHEN OTHERS THEN
236232        xla_exceptions_pkg.raise_message
236233            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_426');
236234 END AcctLineType_426;
236235 --
236236 
236237 ---------------------------------------
236238 --
236239 -- PRIVATE FUNCTION
236240 --         AcctLineType_427
236241 --
236242 ---------------------------------------
236243 PROCEDURE AcctLineType_427 (
236244   p_application_id        IN NUMBER
236245  ,p_event_id              IN NUMBER
236246  ,p_calculate_acctd_flag  IN VARCHAR2
236247  ,p_calculate_g_l_flag    IN VARCHAR2
236248  ,p_actual_flag           IN OUT VARCHAR2
236249  ,p_balance_type_code     OUT VARCHAR2
236250  ,p_gain_or_loss_ref      OUT VARCHAR2
236251  
236252 --TRANSACTION_ID
236253  , p_source_1            IN NUMBER
236254 --Item Concatenated Segments
236255  , p_source_2            IN VARCHAR2
236256 --Transaction Quantity
236257  , p_source_3            IN NUMBER
236258 --Transaction Unit of Measure Code
236259  , p_source_4            IN VARCHAR2
236260 --Inventory Transaction Type Description
236261  , p_source_5            IN VARCHAR2
236262 --Interorg Bridging Account
236263  , p_source_46            IN NUMBER
236264 --DISTRIBUTION_IDENTIFIER
236265  , p_source_84            IN NUMBER
236266 --Distribution Type
236267  , p_source_85            IN VARCHAR2
236268  , p_source_85_meaning    IN VARCHAR2
236269 --Entered Currency Code
236270  , p_source_88            IN VARCHAR2
236271 --Entered Amount
236272  , p_source_91            IN NUMBER
236273 --Currency Conversion Date
236274  , p_source_92            IN DATE
236275 --Currency Conversion Rate
236276  , p_source_93            IN NUMBER
236277 --Currency Conversion Type
236278  , p_source_94            IN VARCHAR2
236279 --Accounted Amount
236280  , p_source_95            IN NUMBER
236281 --Accounting Line Type
236282  , p_source_97            IN NUMBER
236283 )
236284 IS
236285 
236286 l_component_type              VARCHAR2(80);
236287 l_component_code              VARCHAR2(30);
236288 l_component_type_code         VARCHAR2(1);
236289 l_component_appl_id           INTEGER;
236290 l_amb_context_code            VARCHAR2(30);
236291 l_entity_code                 VARCHAR2(30);
236292 l_event_class_code            VARCHAR2(30);
236293 l_ae_header_id                NUMBER;
236294 l_event_type_code             VARCHAR2(30);
236295 l_line_definition_code        VARCHAR2(30);
236296 l_line_definition_owner_code  VARCHAR2(1);
236297 --
236298 -- adr variables
236299 l_segment                     VARCHAR2(30);
236300 l_ccid                        NUMBER;
236301 l_adr_transaction_coa_id      NUMBER;
236302 l_adr_accounting_coa_id       NUMBER;
236303 l_adr_flexfield_segment_code  VARCHAR2(30);
236304 l_adr_flex_value_set_id       NUMBER;
236305 l_adr_value_type_code         VARCHAR2(30);
236306 l_adr_value_combination_id    NUMBER;
236307 l_adr_value_segment_code      VARCHAR2(30);
236308 
236309 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
236310 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
236311 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
236312 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
236313 
236314 -- 4262811 Variables ------------------------------------------------------------------------------------------
236315 l_entered_amt_idx             NUMBER;
236316 l_accted_amt_idx              NUMBER;
236317 l_acc_rev_flag                VARCHAR2(1);
236318 l_accrual_line_num            NUMBER;
236319 l_tmp_amt                     NUMBER;
236320 l_acc_rev_natural_side_code   VARCHAR2(1);
236321 
236322 l_num_entries                 NUMBER;
236323 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
236324 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
236325 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
236326 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
236327 l_recog_line_1                NUMBER;
236328 l_recog_line_2                NUMBER;
236329 
236330 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
236331 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
236332 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
236333 
236334 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
236335 
236336 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
236337 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
236338 
236339 ---------------------------------------------------------------------------------------------------------------
236340 
236341 
236342 --
236343 -- bulk performance
236344 --
236345 l_balance_type_code           VARCHAR2(1);
236346 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
236347 l_log_module                  VARCHAR2(240);
236348 
236349 --
236350 -- Upgrade strategy
236351 --
236352 l_actual_upg_option           VARCHAR2(1);
236353 l_enc_upg_option           VARCHAR2(1);
236354 
236355 --
236356 BEGIN
236357 --
236358 IF g_log_enabled THEN
236359       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_427';
236360 END IF;
236361 --
236362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
236363 
236364       trace
236365          (p_msg      => 'BEGIN of AcctLineType_427'
236366          ,p_level    => C_LEVEL_PROCEDURE
236367          ,p_module   => l_log_module);
236368 
236369 END IF;
236370 --
236371 l_component_type             := 'AMB_JLT';
236372 l_component_code             := 'PI_INTRANSIT_BRIDGING_211TO';
236373 l_component_type_code        := 'S';
236374 l_component_appl_id          :=  707;
236375 l_amb_context_code           := 'DEFAULT';
236376 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
236377 l_event_class_code           := 'USER_DEFINE';
236378 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
236379 l_line_definition_owner_code := 'S';
236380 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
236381 --
236382 l_balance_type_code          := 'A';
236383 l_segment                     := NULL;
236384 l_ccid                        := NULL;
236385 l_adr_transaction_coa_id      := NULL;
236386 l_adr_accounting_coa_id       := NULL;
236387 l_adr_flexfield_segment_code  := NULL;
236388 l_adr_flex_value_set_id       := NULL;
236389 l_adr_value_type_code         := NULL;
236390 l_adr_value_combination_id    := NULL;
236391 l_adr_value_segment_code      := NULL;
236392 
236393 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
236394 l_bflow_class_code           := '';    -- 4219869 Business Flow
236395 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
236396 l_budgetary_control_flag     := 'N';
236397 
236398 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
236399 l_bflow_applied_to_amt       := NULL; -- 5132302
236400 l_entered_amt_idx            := NULL;          -- 4262811
236401 l_accted_amt_idx             := NULL;          -- 4262811
236402 l_acc_rev_flag               := NULL;          -- 4262811
236403 l_accrual_line_num           := NULL;          -- 4262811
236404 l_tmp_amt                    := NULL;          -- 4262811
236405 --
236406  
236407 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
236408     l_balance_type_code <> 'B' THEN
236409 IF NVL(p_source_97,9E125) =  9
236410  THEN 
236411 
236412    --
236413    XLA_AE_LINES_PKG.SetNewLine;
236414 
236415    p_balance_type_code          := l_balance_type_code;
236416    -- set the flag so later we will know whether the gain loss line needs to be created
236417    
236418    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
236419      p_actual_flag :='A';
236420    END IF;
236421 
236422    --
236423    -- bulk performance
236424    --
236425    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
236426                                       p_header_num   => 0); -- 4262811
236427    --
236428    -- set accounting line options
236429    --
236430    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
236431            p_natural_side_code          => 'D'
236432          , p_gain_or_loss_flag          => 'N'
236433          , p_gl_transfer_mode_code      => 'S'
236434          , p_acct_entry_type_code       => 'A'
236435          , p_switch_side_flag           => 'Y'
236436          , p_merge_duplicate_code       => 'N'
236437          );
236438    --
236439    l_acc_rev_natural_side_code := 'C';  -- 4262811
236440    -- 
236441    --
236442    -- set accounting line type info
236443    --
236444    xla_ae_lines_pkg.SetAcctLineType
236445       (p_component_type             => l_component_type
236446       ,p_event_type_code            => l_event_type_code
236447       ,p_line_definition_owner_code => l_line_definition_owner_code
236448       ,p_line_definition_code       => l_line_definition_code
236449       ,p_accounting_line_code       => l_component_code
236450       ,p_accounting_line_type_code  => l_component_type_code
236451       ,p_accounting_line_appl_id    => l_component_appl_id
236452       ,p_amb_context_code           => l_amb_context_code
236453       ,p_entity_code                => l_entity_code
236454       ,p_event_class_code           => l_event_class_code);
236455    --
236456    -- set accounting class
236457    --
236458    xla_ae_lines_pkg.SetAcctClass(
236459            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
236460          , p_ae_header_id           => l_ae_header_id
236461          );
236462 
236463    --
236464    -- set rounding class
236465    --
236466    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
236467                       'INTRANSIT_BRIDGING';
236468 
236469    --
236470    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
236471    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
236472    --
236473    -- bulk performance
236474    --
236475    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
236476 
236477    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
236478       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
236479 
236480    -- 4955764
236481    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
236482       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
236483 
236484    -- 4458381 Public Sector Enh
236485    
236486    --
236487    -- set accounting attributes for the line type
236488    --
236489    l_entered_amt_idx := 3;
236490    l_accted_amt_idx  := 8;
236491    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
236492    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
236493    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
236494    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
236495    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
236496    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
236497    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
236498    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
236499    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
236500    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
236501    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
236502    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
236503    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
236504    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
236505    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
236506    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
236507    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
236508 
236509    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
236510    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
236511 
236512    ---------------------------------------------------------------------------------------------------------------
236513    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
236514    ---------------------------------------------------------------------------------------------------------------
236515    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
236516 
236517    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
236518    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
236519 
236520    IF xla_accounting_cache_pkg.GetValueChar
236521          (p_source_code         => 'LEDGER_CATEGORY_CODE'
236522          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
236523    AND l_bflow_method_code = 'PRIOR_ENTRY'
236524 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
236525    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
236526          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
236527        )
236528    THEN
236529          xla_ae_lines_pkg.BflowUpgEntry
236530            (p_business_method_code    => l_bflow_method_code
236531            ,p_business_class_code     => l_bflow_class_code
236532            ,p_balance_type            => l_balance_type_code);
236533    ELSE
236534       NULL;
236535 -- No business flow processing for business flow method of NONE.
236536    END IF;
236537 
236538    --
236539    -- call analytical criteria
236540    --
236541    
236542    --
236543    -- call description
236544    --
236545    
236546 xla_ae_lines_pkg.SetLineDescription(
236547    p_ae_header_id => l_ae_header_id
236548   ,p_description  => Description_1 (
236549      p_application_id         => p_application_id
236550    , p_ae_header_id           => l_ae_header_id 
236551 , p_source_1 => p_source_1
236552 , p_source_2 => p_source_2
236553 , p_source_3 => p_source_3
236554 , p_source_4 => p_source_4
236555 , p_source_5 => p_source_5
236556    )
236557 );
236558 
236559 
236560    --
236561    -- call ADRs
236562    -- Bug 4922099
236563    --
236564    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
236565         (NVL(l_actual_upg_option, 'N') = 'O') OR
236566         (NVL(l_enc_upg_option, 'N') = 'O')
236567       )
236568    THEN
236569    NULL;
236570    --
236571    --
236572    
236573   l_ccid := AcctDerRule_26(
236574            p_application_id           => p_application_id
236575          , p_ae_header_id             => l_ae_header_id 
236576 , p_source_46 => p_source_46
236577          , x_transaction_coa_id       => l_adr_transaction_coa_id
236578          , x_accounting_coa_id        => l_adr_accounting_coa_id
236579          , x_value_type_code          => l_adr_value_type_code
236580          , p_side                     => 'NA'
236581    );
236582 
236583    xla_ae_lines_pkg.set_ccid(
236584     p_code_combination_id          => l_ccid
236585   , p_value_type_code              => l_adr_value_type_code
236586   , p_transaction_coa_id           => l_adr_transaction_coa_id
236587   , p_accounting_coa_id            => l_adr_accounting_coa_id
236588   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
236589   , p_adr_type_code                => 'S'
236590   , p_component_type               => l_component_type
236591   , p_component_code               => l_component_code
236592   , p_component_type_code          => l_component_type_code
236593   , p_component_appl_id            => l_component_appl_id
236594   , p_amb_context_code             => l_amb_context_code
236595   , p_side                         => 'NA'
236596   );
236597 
236598 
236599    --
236600    --
236601    END IF;
236602    --
236603    -- Bug 4922099
236604    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
236605           (NVL(l_enc_upg_option, 'N') = 'O')
236606         ) AND
236607         (l_bflow_method_code = 'PRIOR_ENTRY')
236608       )
236609    THEN
236610       IF
236611       --
236612       1 = 2
236613       --
236614       THEN
236615       xla_accounting_err_pkg.build_message
236616                                     (p_appli_s_name            => 'XLA'
236617                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
236618                                     ,p_token_1                 => 'LINE_NUMBER'
236619                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
236620                                     ,p_token_2                 => 'LINE_TYPE_NAME'
236621                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
236622                                                                              l_component_type
236623                                                                             ,l_component_code
236624                                                                             ,l_component_type_code
236625                                                                             ,l_component_appl_id
236626                                                                             ,l_amb_context_code
236627                                                                             ,l_entity_code
236628                                                                             ,l_event_class_code
236629                                                                            )
236630                                     ,p_token_3                 => 'OWNER'
236631                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
236632                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
236633                                                                           ,p_lookup_code    => l_component_type_code
236634                                                                          )
236635                                     ,p_token_4                 => 'PRODUCT_NAME'
236636                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
236637                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
236638                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
236639                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
236640                                     ,p_ae_header_id            =>  NULL
236641                                        );
236642 
236643         IF (C_LEVEL_ERROR>= g_log_level) THEN
236644                  trace
236645                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
236646                       ,p_level    => C_LEVEL_ERROR
236647                       ,p_module   => l_log_module);
236648         END IF;
236649       END IF;
236650    END IF;
236651    --
236652    --
236653    ------------------------------------------------------------------------------------------------
236654    -- 4219869 Business Flow
236655    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
236656    -- Prior Entry.  Currently, the following code is always generated.
236657    ------------------------------------------------------------------------------------------------
236658    XLA_AE_LINES_PKG.ValidateCurrentLine;
236659 
236660    ------------------------------------------------------------------------------------
236661    -- 4219869 Business Flow
236662    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
236663    ------------------------------------------------------------------------------------
236664    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
236665 
236666    ----------------------------------------------------------------------------------
236667    -- 4219869 Business Flow
236668    -- Update journal entry status -- Need to generate this within IF <condition>
236669    ----------------------------------------------------------------------------------
236670    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
236671          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
236672          ,p_balance_type_code => l_balance_type_code
236673          );
236674 
236675    -------------------------------------------------------------------------------------------
236676    -- 4262811 - Generate the Accrual Reversal lines
236677    -------------------------------------------------------------------------------------------
236678    BEGIN
236679       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
236680                               (g_array_event(p_event_id).array_value_num('header_index'));
236681       IF l_acc_rev_flag IS NULL THEN
236682          l_acc_rev_flag := 'N';
236683       END IF;
236684    EXCEPTION
236685       WHEN OTHERS THEN
236686          l_acc_rev_flag := 'N';
236687    END;
236688    --
236689    IF (l_acc_rev_flag = 'Y') THEN
236690 
236691        -- 4645092  ------------------------------------------------------------------------------
236692        -- To allow MPA report to determine if it should generate report process
236693        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
236694        ------------------------------------------------------------------------------------------
236695 
236696        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
236697        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
236698    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
236699    -- call ADRs
236700    -- Bug 4922099
236701    --
236702    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
236703         (NVL(l_actual_upg_option, 'N') = 'O') OR
236704         (NVL(l_enc_upg_option, 'N') = 'O')
236705       )
236706    THEN
236707    NULL;
236708    --
236709    --
236710    
236711   l_ccid := AcctDerRule_26(
236712            p_application_id           => p_application_id
236713          , p_ae_header_id             => l_ae_header_id 
236714 , p_source_46 => p_source_46
236715          , x_transaction_coa_id       => l_adr_transaction_coa_id
236716          , x_accounting_coa_id        => l_adr_accounting_coa_id
236717          , x_value_type_code          => l_adr_value_type_code
236718          , p_side                     => 'NA'
236719    );
236720 
236721    xla_ae_lines_pkg.set_ccid(
236722     p_code_combination_id          => l_ccid
236723   , p_value_type_code              => l_adr_value_type_code
236724   , p_transaction_coa_id           => l_adr_transaction_coa_id
236725   , p_accounting_coa_id            => l_adr_accounting_coa_id
236726   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
236727   , p_adr_type_code                => 'S'
236728   , p_component_type               => l_component_type
236729   , p_component_code               => l_component_code
236730   , p_component_type_code          => l_component_type_code
236731   , p_component_appl_id            => l_component_appl_id
236732   , p_amb_context_code             => l_amb_context_code
236733   , p_side                         => 'NA'
236734   );
236735 
236736 
236737    --
236738    --
236739    END IF;
236740 
236741        --
236742        -- Update the line information that should be overwritten
236743        --
236744        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
236745                                          p_header_num   => 1);
236746        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
236747 
236748        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
236749 
236750        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
236751           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
236752        END IF;
236753 
236754       --
236755       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
236756       --
236757       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
236758           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
236759       ELSE
236760           ---------------------------------------------------------------------------------------------------
236761           -- 4262811a Switch Sign
236762           ---------------------------------------------------------------------------------------------------
236763           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
236764           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
236765                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
236766           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
236767                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
236768           -- 5132302
236769           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
236770                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
236771 
236772       END IF;
236773 
236774       -- 4955764
236775       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
236776       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
236777 
236778 
236779       XLA_AE_LINES_PKG.ValidateCurrentLine;
236780       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
236781 
236782       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
236783                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
236784                ,p_balance_type_code => l_balance_type_code);
236785 
236786    END IF;
236787 
236788    -----------------------------------------------------------------------------------------
236789    -- 4262811 Multiperiod Accounting
236790    -----------------------------------------------------------------------------------------
236791      -- No MPA option is assigned.
236792 
236793 
236794 END IF;
236795 END IF;
236796 --
236797 
236798 --
236799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
236800    trace
236801       (p_msg      => 'END of AcctLineType_427'
236802       ,p_level    => C_LEVEL_PROCEDURE
236803       ,p_module   => l_log_module);
236804 END IF;
236805 --
236806 EXCEPTION
236807   WHEN xla_exceptions_pkg.application_exception THEN
236808       RAISE;
236809   WHEN OTHERS THEN
236810        xla_exceptions_pkg.raise_message
236811            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_427');
236812 END AcctLineType_427;
236813 --
236814 
236815 ---------------------------------------
236816 --
236817 -- PRIVATE FUNCTION
236818 --         AcctLineType_428
236819 --
236820 ---------------------------------------
236821 PROCEDURE AcctLineType_428 (
236822   p_application_id        IN NUMBER
236823  ,p_event_id              IN NUMBER
236824  ,p_calculate_acctd_flag  IN VARCHAR2
236825  ,p_calculate_g_l_flag    IN VARCHAR2
236826  ,p_actual_flag           IN OUT VARCHAR2
236827  ,p_balance_type_code     OUT VARCHAR2
236828  ,p_gain_or_loss_ref      OUT VARCHAR2
236829  
236830 --TRANSACTION_ID
236831  , p_source_1            IN NUMBER
236832 --Item Concatenated Segments
236833  , p_source_2            IN VARCHAR2
236834 --Transaction Quantity
236835  , p_source_3            IN NUMBER
236836 --Transaction Unit of Measure Code
236837  , p_source_4            IN VARCHAR2
236838 --Inventory Transaction Type Description
236839  , p_source_5            IN VARCHAR2
236840 --Interorg Bridging Account
236841  , p_source_46            IN NUMBER
236842 --DISTRIBUTION_IDENTIFIER
236843  , p_source_84            IN NUMBER
236844 --Distribution Type
236845  , p_source_85            IN VARCHAR2
236846  , p_source_85_meaning    IN VARCHAR2
236847 --Entered Currency Code
236848  , p_source_88            IN VARCHAR2
236849 --Entered Amount
236850  , p_source_91            IN NUMBER
236851 --Currency Conversion Date
236852  , p_source_92            IN DATE
236853 --Currency Conversion Rate
236854  , p_source_93            IN NUMBER
236855 --Currency Conversion Type
236856  , p_source_94            IN VARCHAR2
236857 --Accounted Amount
236858  , p_source_95            IN NUMBER
236859 --Accounting Line Type
236860  , p_source_97            IN NUMBER
236861 )
236862 IS
236863 
236864 l_component_type              VARCHAR2(80);
236865 l_component_code              VARCHAR2(30);
236866 l_component_type_code         VARCHAR2(1);
236867 l_component_appl_id           INTEGER;
236868 l_amb_context_code            VARCHAR2(30);
236869 l_entity_code                 VARCHAR2(30);
236870 l_event_class_code            VARCHAR2(30);
236871 l_ae_header_id                NUMBER;
236872 l_event_type_code             VARCHAR2(30);
236873 l_line_definition_code        VARCHAR2(30);
236874 l_line_definition_owner_code  VARCHAR2(1);
236875 --
236876 -- adr variables
236877 l_segment                     VARCHAR2(30);
236878 l_ccid                        NUMBER;
236879 l_adr_transaction_coa_id      NUMBER;
236880 l_adr_accounting_coa_id       NUMBER;
236881 l_adr_flexfield_segment_code  VARCHAR2(30);
236882 l_adr_flex_value_set_id       NUMBER;
236883 l_adr_value_type_code         VARCHAR2(30);
236884 l_adr_value_combination_id    NUMBER;
236885 l_adr_value_segment_code      VARCHAR2(30);
236886 
236887 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
236888 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
236889 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
236890 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
236891 
236892 -- 4262811 Variables ------------------------------------------------------------------------------------------
236893 l_entered_amt_idx             NUMBER;
236894 l_accted_amt_idx              NUMBER;
236895 l_acc_rev_flag                VARCHAR2(1);
236896 l_accrual_line_num            NUMBER;
236897 l_tmp_amt                     NUMBER;
236898 l_acc_rev_natural_side_code   VARCHAR2(1);
236899 
236900 l_num_entries                 NUMBER;
236901 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
236902 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
236903 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
236904 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
236905 l_recog_line_1                NUMBER;
236906 l_recog_line_2                NUMBER;
236907 
236908 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
236909 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
236910 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
236911 
236912 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
236913 
236914 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
236915 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
236916 
236917 ---------------------------------------------------------------------------------------------------------------
236918 
236919 
236920 --
236921 -- bulk performance
236922 --
236923 l_balance_type_code           VARCHAR2(1);
236924 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
236925 l_log_module                  VARCHAR2(240);
236926 
236927 --
236928 -- Upgrade strategy
236929 --
236930 l_actual_upg_option           VARCHAR2(1);
236931 l_enc_upg_option           VARCHAR2(1);
236932 
236933 --
236934 BEGIN
236935 --
236936 IF g_log_enabled THEN
236937       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_428';
236938 END IF;
236939 --
236940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
236941 
236942       trace
236943          (p_msg      => 'BEGIN of AcctLineType_428'
236944          ,p_level    => C_LEVEL_PROCEDURE
236945          ,p_module   => l_log_module);
236946 
236947 END IF;
236948 --
236949 l_component_type             := 'AMB_JLT';
236950 l_component_code             := 'PI_INTRANSIT_BRIDGING_211TO';
236951 l_component_type_code        := 'S';
236952 l_component_appl_id          :=  707;
236953 l_amb_context_code           := 'DEFAULT';
236954 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
236955 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
236956 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
236957 l_line_definition_owner_code := 'S';
236958 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
236959 --
236960 l_balance_type_code          := 'A';
236961 l_segment                     := NULL;
236962 l_ccid                        := NULL;
236963 l_adr_transaction_coa_id      := NULL;
236964 l_adr_accounting_coa_id       := NULL;
236965 l_adr_flexfield_segment_code  := NULL;
236966 l_adr_flex_value_set_id       := NULL;
236967 l_adr_value_type_code         := NULL;
236968 l_adr_value_combination_id    := NULL;
236969 l_adr_value_segment_code      := NULL;
236970 
236971 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
236972 l_bflow_class_code           := '';    -- 4219869 Business Flow
236973 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
236974 l_budgetary_control_flag     := 'N';
236975 
236976 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
236977 l_bflow_applied_to_amt       := NULL; -- 5132302
236978 l_entered_amt_idx            := NULL;          -- 4262811
236979 l_accted_amt_idx             := NULL;          -- 4262811
236980 l_acc_rev_flag               := NULL;          -- 4262811
236981 l_accrual_line_num           := NULL;          -- 4262811
236982 l_tmp_amt                    := NULL;          -- 4262811
236983 --
236984  
236985 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
236986     l_balance_type_code <> 'B' THEN
236987 IF NVL(p_source_97,9E125) =  14
236988  THEN 
236989 
236990    --
236991    XLA_AE_LINES_PKG.SetNewLine;
236992 
236993    p_balance_type_code          := l_balance_type_code;
236994    -- set the flag so later we will know whether the gain loss line needs to be created
236995    
236996    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
236997      p_actual_flag :='A';
236998    END IF;
236999 
237000    --
237001    -- bulk performance
237002    --
237003    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
237004                                       p_header_num   => 0); -- 4262811
237005    --
237006    -- set accounting line options
237007    --
237008    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
237009            p_natural_side_code          => 'C'
237010          , p_gain_or_loss_flag          => 'N'
237011          , p_gl_transfer_mode_code      => 'S'
237012          , p_acct_entry_type_code       => 'A'
237013          , p_switch_side_flag           => 'Y'
237014          , p_merge_duplicate_code       => 'N'
237015          );
237016    --
237017    l_acc_rev_natural_side_code := 'D';  -- 4262811
237018    -- 
237019    --
237020    -- set accounting line type info
237021    --
237022    xla_ae_lines_pkg.SetAcctLineType
237023       (p_component_type             => l_component_type
237024       ,p_event_type_code            => l_event_type_code
237025       ,p_line_definition_owner_code => l_line_definition_owner_code
237026       ,p_line_definition_code       => l_line_definition_code
237027       ,p_accounting_line_code       => l_component_code
237028       ,p_accounting_line_type_code  => l_component_type_code
237029       ,p_accounting_line_appl_id    => l_component_appl_id
237030       ,p_amb_context_code           => l_amb_context_code
237031       ,p_entity_code                => l_entity_code
237032       ,p_event_class_code           => l_event_class_code);
237033    --
237034    -- set accounting class
237035    --
237036    xla_ae_lines_pkg.SetAcctClass(
237037            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
237038          , p_ae_header_id           => l_ae_header_id
237039          );
237040 
237041    --
237042    -- set rounding class
237043    --
237044    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
237045                       'INTRANSIT_BRIDGING';
237046 
237047    --
237048    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
237049    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
237050    --
237051    -- bulk performance
237052    --
237053    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
237054 
237055    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
237056       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
237057 
237058    -- 4955764
237059    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
237060       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
237061 
237062    -- 4458381 Public Sector Enh
237063    
237064    --
237065    -- set accounting attributes for the line type
237066    --
237067    l_entered_amt_idx := 3;
237068    l_accted_amt_idx  := 8;
237069    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
237070    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
237071    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
237072    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
237073    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
237074    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
237075    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
237076    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
237077    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
237078    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
237079    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
237080    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
237081    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
237082    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
237083    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
237084    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
237085    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
237086 
237087    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
237088    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
237089 
237090    ---------------------------------------------------------------------------------------------------------------
237091    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
237092    ---------------------------------------------------------------------------------------------------------------
237093    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
237094 
237095    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
237096    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
237097 
237098    IF xla_accounting_cache_pkg.GetValueChar
237099          (p_source_code         => 'LEDGER_CATEGORY_CODE'
237100          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
237101    AND l_bflow_method_code = 'PRIOR_ENTRY'
237102 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
237103    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
237104          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
237105        )
237106    THEN
237107          xla_ae_lines_pkg.BflowUpgEntry
237108            (p_business_method_code    => l_bflow_method_code
237109            ,p_business_class_code     => l_bflow_class_code
237110            ,p_balance_type            => l_balance_type_code);
237111    ELSE
237112       NULL;
237113 -- No business flow processing for business flow method of NONE.
237114    END IF;
237115 
237116    --
237117    -- call analytical criteria
237118    --
237119    
237120    --
237121    -- call description
237122    --
237123    
237124 xla_ae_lines_pkg.SetLineDescription(
237125    p_ae_header_id => l_ae_header_id
237126   ,p_description  => Description_1 (
237127      p_application_id         => p_application_id
237128    , p_ae_header_id           => l_ae_header_id 
237129 , p_source_1 => p_source_1
237130 , p_source_2 => p_source_2
237131 , p_source_3 => p_source_3
237132 , p_source_4 => p_source_4
237133 , p_source_5 => p_source_5
237134    )
237135 );
237136 
237137 
237138    --
237139    -- call ADRs
237140    -- Bug 4922099
237141    --
237142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
237143         (NVL(l_actual_upg_option, 'N') = 'O') OR
237144         (NVL(l_enc_upg_option, 'N') = 'O')
237145       )
237146    THEN
237147    NULL;
237148    --
237149    --
237150    
237151   l_ccid := AcctDerRule_26(
237152            p_application_id           => p_application_id
237153          , p_ae_header_id             => l_ae_header_id 
237154 , p_source_46 => p_source_46
237155          , x_transaction_coa_id       => l_adr_transaction_coa_id
237156          , x_accounting_coa_id        => l_adr_accounting_coa_id
237157          , x_value_type_code          => l_adr_value_type_code
237158          , p_side                     => 'NA'
237159    );
237160 
237161    xla_ae_lines_pkg.set_ccid(
237162     p_code_combination_id          => l_ccid
237163   , p_value_type_code              => l_adr_value_type_code
237164   , p_transaction_coa_id           => l_adr_transaction_coa_id
237165   , p_accounting_coa_id            => l_adr_accounting_coa_id
237166   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
237167   , p_adr_type_code                => 'S'
237168   , p_component_type               => l_component_type
237169   , p_component_code               => l_component_code
237170   , p_component_type_code          => l_component_type_code
237171   , p_component_appl_id            => l_component_appl_id
237172   , p_amb_context_code             => l_amb_context_code
237173   , p_side                         => 'NA'
237174   );
237175 
237176 
237177    --
237178    --
237179    END IF;
237180    --
237181    -- Bug 4922099
237182    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
237183           (NVL(l_enc_upg_option, 'N') = 'O')
237184         ) AND
237185         (l_bflow_method_code = 'PRIOR_ENTRY')
237186       )
237187    THEN
237188       IF
237189       --
237190       1 = 2
237191       --
237192       THEN
237193       xla_accounting_err_pkg.build_message
237194                                     (p_appli_s_name            => 'XLA'
237195                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
237196                                     ,p_token_1                 => 'LINE_NUMBER'
237197                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
237198                                     ,p_token_2                 => 'LINE_TYPE_NAME'
237199                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
237200                                                                              l_component_type
237201                                                                             ,l_component_code
237202                                                                             ,l_component_type_code
237203                                                                             ,l_component_appl_id
237204                                                                             ,l_amb_context_code
237205                                                                             ,l_entity_code
237206                                                                             ,l_event_class_code
237207                                                                            )
237208                                     ,p_token_3                 => 'OWNER'
237209                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
237210                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
237211                                                                           ,p_lookup_code    => l_component_type_code
237212                                                                          )
237213                                     ,p_token_4                 => 'PRODUCT_NAME'
237214                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
237215                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
237216                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
237217                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
237218                                     ,p_ae_header_id            =>  NULL
237219                                        );
237220 
237221         IF (C_LEVEL_ERROR>= g_log_level) THEN
237222                  trace
237223                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
237224                       ,p_level    => C_LEVEL_ERROR
237225                       ,p_module   => l_log_module);
237226         END IF;
237227       END IF;
237228    END IF;
237229    --
237230    --
237231    ------------------------------------------------------------------------------------------------
237232    -- 4219869 Business Flow
237233    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
237234    -- Prior Entry.  Currently, the following code is always generated.
237235    ------------------------------------------------------------------------------------------------
237236    XLA_AE_LINES_PKG.ValidateCurrentLine;
237237 
237238    ------------------------------------------------------------------------------------
237239    -- 4219869 Business Flow
237240    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
237241    ------------------------------------------------------------------------------------
237242    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
237243 
237244    ----------------------------------------------------------------------------------
237245    -- 4219869 Business Flow
237246    -- Update journal entry status -- Need to generate this within IF <condition>
237247    ----------------------------------------------------------------------------------
237248    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
237249          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
237250          ,p_balance_type_code => l_balance_type_code
237251          );
237252 
237253    -------------------------------------------------------------------------------------------
237254    -- 4262811 - Generate the Accrual Reversal lines
237255    -------------------------------------------------------------------------------------------
237256    BEGIN
237257       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
237258                               (g_array_event(p_event_id).array_value_num('header_index'));
237259       IF l_acc_rev_flag IS NULL THEN
237260          l_acc_rev_flag := 'N';
237261       END IF;
237262    EXCEPTION
237263       WHEN OTHERS THEN
237264          l_acc_rev_flag := 'N';
237265    END;
237266    --
237267    IF (l_acc_rev_flag = 'Y') THEN
237268 
237269        -- 4645092  ------------------------------------------------------------------------------
237270        -- To allow MPA report to determine if it should generate report process
237271        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
237272        ------------------------------------------------------------------------------------------
237273 
237274        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
237275        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
237276    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
237277    -- call ADRs
237278    -- Bug 4922099
237279    --
237280    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
237281         (NVL(l_actual_upg_option, 'N') = 'O') OR
237282         (NVL(l_enc_upg_option, 'N') = 'O')
237283       )
237284    THEN
237285    NULL;
237286    --
237287    --
237288    
237289   l_ccid := AcctDerRule_26(
237290            p_application_id           => p_application_id
237291          , p_ae_header_id             => l_ae_header_id 
237292 , p_source_46 => p_source_46
237293          , x_transaction_coa_id       => l_adr_transaction_coa_id
237294          , x_accounting_coa_id        => l_adr_accounting_coa_id
237295          , x_value_type_code          => l_adr_value_type_code
237296          , p_side                     => 'NA'
237297    );
237298 
237299    xla_ae_lines_pkg.set_ccid(
237300     p_code_combination_id          => l_ccid
237301   , p_value_type_code              => l_adr_value_type_code
237302   , p_transaction_coa_id           => l_adr_transaction_coa_id
237303   , p_accounting_coa_id            => l_adr_accounting_coa_id
237304   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
237305   , p_adr_type_code                => 'S'
237306   , p_component_type               => l_component_type
237307   , p_component_code               => l_component_code
237308   , p_component_type_code          => l_component_type_code
237309   , p_component_appl_id            => l_component_appl_id
237310   , p_amb_context_code             => l_amb_context_code
237311   , p_side                         => 'NA'
237312   );
237313 
237314 
237315    --
237316    --
237317    END IF;
237318 
237319        --
237320        -- Update the line information that should be overwritten
237321        --
237322        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
237323                                          p_header_num   => 1);
237324        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
237325 
237326        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
237327 
237328        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
237329           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
237330        END IF;
237331 
237332       --
237333       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
237334       --
237335       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
237336           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
237337       ELSE
237338           ---------------------------------------------------------------------------------------------------
237339           -- 4262811a Switch Sign
237340           ---------------------------------------------------------------------------------------------------
237341           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
237342           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
237343                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
237344           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
237345                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
237346           -- 5132302
237347           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
237348                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
237349 
237350       END IF;
237351 
237352       -- 4955764
237353       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
237354       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
237355 
237356 
237357       XLA_AE_LINES_PKG.ValidateCurrentLine;
237358       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
237359 
237360       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
237361                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
237362                ,p_balance_type_code => l_balance_type_code);
237363 
237364    END IF;
237365 
237366    -----------------------------------------------------------------------------------------
237367    -- 4262811 Multiperiod Accounting
237368    -----------------------------------------------------------------------------------------
237369      -- No MPA option is assigned.
237370 
237371 
237372 END IF;
237373 END IF;
237374 --
237375 
237376 --
237377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
237378    trace
237379       (p_msg      => 'END of AcctLineType_428'
237380       ,p_level    => C_LEVEL_PROCEDURE
237381       ,p_module   => l_log_module);
237382 END IF;
237383 --
237384 EXCEPTION
237385   WHEN xla_exceptions_pkg.application_exception THEN
237386       RAISE;
237387   WHEN OTHERS THEN
237388        xla_exceptions_pkg.raise_message
237389            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_428');
237390 END AcctLineType_428;
237391 --
237392 
237393 ---------------------------------------
237394 --
237395 -- PRIVATE FUNCTION
237396 --         AcctLineType_429
237397 --
237398 ---------------------------------------
237399 PROCEDURE AcctLineType_429 (
237400   p_application_id        IN NUMBER
237401  ,p_event_id              IN NUMBER
237402  ,p_calculate_acctd_flag  IN VARCHAR2
237403  ,p_calculate_g_l_flag    IN VARCHAR2
237404  ,p_actual_flag           IN OUT VARCHAR2
237405  ,p_balance_type_code     OUT VARCHAR2
237406  ,p_gain_or_loss_ref      OUT VARCHAR2
237407  
237408 --TRANSACTION_ID
237409  , p_source_1            IN NUMBER
237410 --Item Concatenated Segments
237411  , p_source_2            IN VARCHAR2
237412 --Transaction Quantity
237413  , p_source_3            IN NUMBER
237414 --Transaction Unit of Measure Code
237415  , p_source_4            IN VARCHAR2
237416 --Inventory Transaction Type Description
237417  , p_source_5            IN VARCHAR2
237418 --Interorg Bridging Account
237419  , p_source_46            IN NUMBER
237420 --DISTRIBUTION_IDENTIFIER
237421  , p_source_84            IN NUMBER
237422 --Distribution Type
237423  , p_source_85            IN VARCHAR2
237424  , p_source_85_meaning    IN VARCHAR2
237425 --Entered Currency Code
237426  , p_source_88            IN VARCHAR2
237427 --Entered Amount
237428  , p_source_91            IN NUMBER
237429 --Currency Conversion Date
237430  , p_source_92            IN DATE
237431 --Currency Conversion Rate
237432  , p_source_93            IN NUMBER
237433 --Currency Conversion Type
237434  , p_source_94            IN VARCHAR2
237435 --Accounted Amount
237436  , p_source_95            IN NUMBER
237437 --Accounting Line Type
237438  , p_source_97            IN NUMBER
237439 )
237440 IS
237441 
237442 l_component_type              VARCHAR2(80);
237443 l_component_code              VARCHAR2(30);
237444 l_component_type_code         VARCHAR2(1);
237445 l_component_appl_id           INTEGER;
237446 l_amb_context_code            VARCHAR2(30);
237447 l_entity_code                 VARCHAR2(30);
237448 l_event_class_code            VARCHAR2(30);
237449 l_ae_header_id                NUMBER;
237450 l_event_type_code             VARCHAR2(30);
237451 l_line_definition_code        VARCHAR2(30);
237452 l_line_definition_owner_code  VARCHAR2(1);
237453 --
237454 -- adr variables
237455 l_segment                     VARCHAR2(30);
237456 l_ccid                        NUMBER;
237457 l_adr_transaction_coa_id      NUMBER;
237458 l_adr_accounting_coa_id       NUMBER;
237459 l_adr_flexfield_segment_code  VARCHAR2(30);
237460 l_adr_flex_value_set_id       NUMBER;
237461 l_adr_value_type_code         VARCHAR2(30);
237462 l_adr_value_combination_id    NUMBER;
237463 l_adr_value_segment_code      VARCHAR2(30);
237464 
237465 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
237466 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
237467 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
237468 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
237469 
237470 -- 4262811 Variables ------------------------------------------------------------------------------------------
237471 l_entered_amt_idx             NUMBER;
237472 l_accted_amt_idx              NUMBER;
237473 l_acc_rev_flag                VARCHAR2(1);
237474 l_accrual_line_num            NUMBER;
237475 l_tmp_amt                     NUMBER;
237476 l_acc_rev_natural_side_code   VARCHAR2(1);
237477 
237478 l_num_entries                 NUMBER;
237479 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
237480 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
237481 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
237482 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
237483 l_recog_line_1                NUMBER;
237484 l_recog_line_2                NUMBER;
237485 
237486 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
237487 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
237488 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
237489 
237490 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
237491 
237492 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
237493 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
237494 
237495 ---------------------------------------------------------------------------------------------------------------
237496 
237497 
237498 --
237499 -- bulk performance
237500 --
237501 l_balance_type_code           VARCHAR2(1);
237502 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
237503 l_log_module                  VARCHAR2(240);
237504 
237505 --
237506 -- Upgrade strategy
237507 --
237508 l_actual_upg_option           VARCHAR2(1);
237509 l_enc_upg_option           VARCHAR2(1);
237510 
237511 --
237512 BEGIN
237513 --
237514 IF g_log_enabled THEN
237515       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_429';
237516 END IF;
237517 --
237518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
237519 
237520       trace
237521          (p_msg      => 'BEGIN of AcctLineType_429'
237522          ,p_level    => C_LEVEL_PROCEDURE
237523          ,p_module   => l_log_module);
237524 
237525 END IF;
237526 --
237527 l_component_type             := 'AMB_JLT';
237528 l_component_code             := 'PI_INTRANSIT_BRIDGING_211TO';
237529 l_component_type_code        := 'S';
237530 l_component_appl_id          :=  707;
237531 l_amb_context_code           := 'DEFAULT';
237532 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
237533 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
237534 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
237535 l_line_definition_owner_code := 'S';
237536 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
237537 --
237538 l_balance_type_code          := 'A';
237539 l_segment                     := NULL;
237540 l_ccid                        := NULL;
237541 l_adr_transaction_coa_id      := NULL;
237542 l_adr_accounting_coa_id       := NULL;
237543 l_adr_flexfield_segment_code  := NULL;
237544 l_adr_flex_value_set_id       := NULL;
237545 l_adr_value_type_code         := NULL;
237546 l_adr_value_combination_id    := NULL;
237547 l_adr_value_segment_code      := NULL;
237548 
237549 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
237550 l_bflow_class_code           := '';    -- 4219869 Business Flow
237551 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
237552 l_budgetary_control_flag     := 'N';
237553 
237554 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
237555 l_bflow_applied_to_amt       := NULL; -- 5132302
237556 l_entered_amt_idx            := NULL;          -- 4262811
237557 l_accted_amt_idx             := NULL;          -- 4262811
237558 l_acc_rev_flag               := NULL;          -- 4262811
237559 l_accrual_line_num           := NULL;          -- 4262811
237560 l_tmp_amt                    := NULL;          -- 4262811
237561 --
237562  
237563 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
237564     l_balance_type_code <> 'B' THEN
237565 IF NVL(p_source_97,9E125) =  14
237566  THEN 
237567 
237568    --
237569    XLA_AE_LINES_PKG.SetNewLine;
237570 
237571    p_balance_type_code          := l_balance_type_code;
237572    -- set the flag so later we will know whether the gain loss line needs to be created
237573    
237574    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
237575      p_actual_flag :='A';
237576    END IF;
237577 
237578    --
237579    -- bulk performance
237580    --
237581    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
237582                                       p_header_num   => 0); -- 4262811
237583    --
237584    -- set accounting line options
237585    --
237586    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
237587            p_natural_side_code          => 'C'
237588          , p_gain_or_loss_flag          => 'N'
237589          , p_gl_transfer_mode_code      => 'S'
237590          , p_acct_entry_type_code       => 'A'
237591          , p_switch_side_flag           => 'Y'
237592          , p_merge_duplicate_code       => 'N'
237593          );
237594    --
237595    l_acc_rev_natural_side_code := 'D';  -- 4262811
237596    -- 
237597    --
237598    -- set accounting line type info
237599    --
237600    xla_ae_lines_pkg.SetAcctLineType
237601       (p_component_type             => l_component_type
237602       ,p_event_type_code            => l_event_type_code
237603       ,p_line_definition_owner_code => l_line_definition_owner_code
237604       ,p_line_definition_code       => l_line_definition_code
237605       ,p_accounting_line_code       => l_component_code
237606       ,p_accounting_line_type_code  => l_component_type_code
237607       ,p_accounting_line_appl_id    => l_component_appl_id
237608       ,p_amb_context_code           => l_amb_context_code
237609       ,p_entity_code                => l_entity_code
237610       ,p_event_class_code           => l_event_class_code);
237611    --
237612    -- set accounting class
237613    --
237614    xla_ae_lines_pkg.SetAcctClass(
237615            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
237616          , p_ae_header_id           => l_ae_header_id
237617          );
237618 
237619    --
237620    -- set rounding class
237621    --
237622    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
237623                       'INTRANSIT_BRIDGING';
237624 
237625    --
237626    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
237627    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
237628    --
237629    -- bulk performance
237630    --
237631    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
237632 
237633    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
237634       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
237635 
237636    -- 4955764
237637    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
237638       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
237639 
237640    -- 4458381 Public Sector Enh
237641    
237642    --
237643    -- set accounting attributes for the line type
237644    --
237645    l_entered_amt_idx := 3;
237646    l_accted_amt_idx  := 8;
237647    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
237648    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
237649    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
237650    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
237651    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
237652    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
237653    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
237654    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
237655    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
237656    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
237657    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
237658    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
237659    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
237660    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
237661    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
237662    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
237663    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
237664 
237665    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
237666    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
237667 
237668    ---------------------------------------------------------------------------------------------------------------
237669    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
237670    ---------------------------------------------------------------------------------------------------------------
237671    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
237672 
237673    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
237674    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
237675 
237676    IF xla_accounting_cache_pkg.GetValueChar
237677          (p_source_code         => 'LEDGER_CATEGORY_CODE'
237678          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
237679    AND l_bflow_method_code = 'PRIOR_ENTRY'
237680 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
237681    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
237682          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
237683        )
237684    THEN
237685          xla_ae_lines_pkg.BflowUpgEntry
237686            (p_business_method_code    => l_bflow_method_code
237687            ,p_business_class_code     => l_bflow_class_code
237688            ,p_balance_type            => l_balance_type_code);
237689    ELSE
237690       NULL;
237691 -- No business flow processing for business flow method of NONE.
237692    END IF;
237693 
237694    --
237695    -- call analytical criteria
237696    --
237697    
237698    --
237699    -- call description
237700    --
237701    
237702 xla_ae_lines_pkg.SetLineDescription(
237703    p_ae_header_id => l_ae_header_id
237704   ,p_description  => Description_1 (
237705      p_application_id         => p_application_id
237706    , p_ae_header_id           => l_ae_header_id 
237707 , p_source_1 => p_source_1
237708 , p_source_2 => p_source_2
237709 , p_source_3 => p_source_3
237710 , p_source_4 => p_source_4
237711 , p_source_5 => p_source_5
237712    )
237713 );
237714 
237715 
237716    --
237717    -- call ADRs
237718    -- Bug 4922099
237719    --
237720    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
237721         (NVL(l_actual_upg_option, 'N') = 'O') OR
237722         (NVL(l_enc_upg_option, 'N') = 'O')
237723       )
237724    THEN
237725    NULL;
237726    --
237727    --
237728    
237729   l_ccid := AcctDerRule_26(
237730            p_application_id           => p_application_id
237731          , p_ae_header_id             => l_ae_header_id 
237732 , p_source_46 => p_source_46
237733          , x_transaction_coa_id       => l_adr_transaction_coa_id
237734          , x_accounting_coa_id        => l_adr_accounting_coa_id
237735          , x_value_type_code          => l_adr_value_type_code
237736          , p_side                     => 'NA'
237737    );
237738 
237739    xla_ae_lines_pkg.set_ccid(
237740     p_code_combination_id          => l_ccid
237741   , p_value_type_code              => l_adr_value_type_code
237742   , p_transaction_coa_id           => l_adr_transaction_coa_id
237743   , p_accounting_coa_id            => l_adr_accounting_coa_id
237744   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
237745   , p_adr_type_code                => 'S'
237746   , p_component_type               => l_component_type
237747   , p_component_code               => l_component_code
237748   , p_component_type_code          => l_component_type_code
237749   , p_component_appl_id            => l_component_appl_id
237750   , p_amb_context_code             => l_amb_context_code
237751   , p_side                         => 'NA'
237752   );
237753 
237754 
237755    --
237756    --
237757    END IF;
237758    --
237759    -- Bug 4922099
237760    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
237761           (NVL(l_enc_upg_option, 'N') = 'O')
237762         ) AND
237763         (l_bflow_method_code = 'PRIOR_ENTRY')
237764       )
237765    THEN
237766       IF
237767       --
237768       1 = 2
237769       --
237770       THEN
237771       xla_accounting_err_pkg.build_message
237772                                     (p_appli_s_name            => 'XLA'
237773                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
237774                                     ,p_token_1                 => 'LINE_NUMBER'
237775                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
237776                                     ,p_token_2                 => 'LINE_TYPE_NAME'
237777                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
237778                                                                              l_component_type
237779                                                                             ,l_component_code
237780                                                                             ,l_component_type_code
237781                                                                             ,l_component_appl_id
237782                                                                             ,l_amb_context_code
237783                                                                             ,l_entity_code
237784                                                                             ,l_event_class_code
237785                                                                            )
237786                                     ,p_token_3                 => 'OWNER'
237787                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
237788                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
237789                                                                           ,p_lookup_code    => l_component_type_code
237790                                                                          )
237791                                     ,p_token_4                 => 'PRODUCT_NAME'
237792                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
237793                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
237794                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
237795                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
237796                                     ,p_ae_header_id            =>  NULL
237797                                        );
237798 
237799         IF (C_LEVEL_ERROR>= g_log_level) THEN
237800                  trace
237801                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
237802                       ,p_level    => C_LEVEL_ERROR
237803                       ,p_module   => l_log_module);
237804         END IF;
237805       END IF;
237806    END IF;
237807    --
237808    --
237809    ------------------------------------------------------------------------------------------------
237810    -- 4219869 Business Flow
237811    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
237812    -- Prior Entry.  Currently, the following code is always generated.
237813    ------------------------------------------------------------------------------------------------
237814    XLA_AE_LINES_PKG.ValidateCurrentLine;
237815 
237816    ------------------------------------------------------------------------------------
237817    -- 4219869 Business Flow
237818    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
237819    ------------------------------------------------------------------------------------
237820    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
237821 
237822    ----------------------------------------------------------------------------------
237823    -- 4219869 Business Flow
237824    -- Update journal entry status -- Need to generate this within IF <condition>
237825    ----------------------------------------------------------------------------------
237826    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
237827          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
237828          ,p_balance_type_code => l_balance_type_code
237829          );
237830 
237831    -------------------------------------------------------------------------------------------
237832    -- 4262811 - Generate the Accrual Reversal lines
237833    -------------------------------------------------------------------------------------------
237834    BEGIN
237835       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
237836                               (g_array_event(p_event_id).array_value_num('header_index'));
237837       IF l_acc_rev_flag IS NULL THEN
237838          l_acc_rev_flag := 'N';
237839       END IF;
237840    EXCEPTION
237841       WHEN OTHERS THEN
237842          l_acc_rev_flag := 'N';
237843    END;
237844    --
237845    IF (l_acc_rev_flag = 'Y') THEN
237846 
237847        -- 4645092  ------------------------------------------------------------------------------
237848        -- To allow MPA report to determine if it should generate report process
237849        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
237850        ------------------------------------------------------------------------------------------
237851 
237852        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
237853        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
237854    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
237855    -- call ADRs
237856    -- Bug 4922099
237857    --
237858    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
237859         (NVL(l_actual_upg_option, 'N') = 'O') OR
237860         (NVL(l_enc_upg_option, 'N') = 'O')
237861       )
237862    THEN
237863    NULL;
237864    --
237865    --
237866    
237867   l_ccid := AcctDerRule_26(
237868            p_application_id           => p_application_id
237869          , p_ae_header_id             => l_ae_header_id 
237870 , p_source_46 => p_source_46
237871          , x_transaction_coa_id       => l_adr_transaction_coa_id
237872          , x_accounting_coa_id        => l_adr_accounting_coa_id
237873          , x_value_type_code          => l_adr_value_type_code
237874          , p_side                     => 'NA'
237875    );
237876 
237877    xla_ae_lines_pkg.set_ccid(
237878     p_code_combination_id          => l_ccid
237879   , p_value_type_code              => l_adr_value_type_code
237880   , p_transaction_coa_id           => l_adr_transaction_coa_id
237881   , p_accounting_coa_id            => l_adr_accounting_coa_id
237882   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
237883   , p_adr_type_code                => 'S'
237884   , p_component_type               => l_component_type
237885   , p_component_code               => l_component_code
237886   , p_component_type_code          => l_component_type_code
237887   , p_component_appl_id            => l_component_appl_id
237888   , p_amb_context_code             => l_amb_context_code
237889   , p_side                         => 'NA'
237890   );
237891 
237892 
237893    --
237894    --
237895    END IF;
237896 
237897        --
237898        -- Update the line information that should be overwritten
237899        --
237900        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
237901                                          p_header_num   => 1);
237902        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
237903 
237904        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
237905 
237906        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
237907           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
237908        END IF;
237909 
237910       --
237911       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
237912       --
237913       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
237914           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
237915       ELSE
237916           ---------------------------------------------------------------------------------------------------
237917           -- 4262811a Switch Sign
237918           ---------------------------------------------------------------------------------------------------
237919           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
237920           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
237921                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
237922           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
237923                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
237924           -- 5132302
237925           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
237926                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
237927 
237928       END IF;
237929 
237930       -- 4955764
237931       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
237932       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
237933 
237934 
237935       XLA_AE_LINES_PKG.ValidateCurrentLine;
237936       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
237937 
237938       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
237939                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
237940                ,p_balance_type_code => l_balance_type_code);
237941 
237942    END IF;
237943 
237944    -----------------------------------------------------------------------------------------
237945    -- 4262811 Multiperiod Accounting
237946    -----------------------------------------------------------------------------------------
237947      -- No MPA option is assigned.
237948 
237949 
237950 END IF;
237951 END IF;
237952 --
237953 
237954 --
237955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
237956    trace
237957       (p_msg      => 'END of AcctLineType_429'
237958       ,p_level    => C_LEVEL_PROCEDURE
237959       ,p_module   => l_log_module);
237960 END IF;
237961 --
237962 EXCEPTION
237963   WHEN xla_exceptions_pkg.application_exception THEN
237964       RAISE;
237965   WHEN OTHERS THEN
237966        xla_exceptions_pkg.raise_message
237967            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_429');
237968 END AcctLineType_429;
237969 --
237970 
237971 ---------------------------------------
237972 --
237973 -- PRIVATE FUNCTION
237974 --         AcctLineType_430
237975 --
237976 ---------------------------------------
237977 PROCEDURE AcctLineType_430 (
237978   p_application_id        IN NUMBER
237979  ,p_event_id              IN NUMBER
237980  ,p_calculate_acctd_flag  IN VARCHAR2
237981  ,p_calculate_g_l_flag    IN VARCHAR2
237982  ,p_actual_flag           IN OUT VARCHAR2
237983  ,p_balance_type_code     OUT VARCHAR2
237984  ,p_gain_or_loss_ref      OUT VARCHAR2
237985  
237986 --TRANSACTION_ID
237987  , p_source_1            IN NUMBER
237988 --Item Concatenated Segments
237989  , p_source_2            IN VARCHAR2
237990 --Transaction Quantity
237991  , p_source_3            IN NUMBER
237992 --Transaction Unit of Measure Code
237993  , p_source_4            IN VARCHAR2
237994 --Inventory Transaction Type Description
237995  , p_source_5            IN VARCHAR2
237996 --Interorg Bridging Account
237997  , p_source_46            IN NUMBER
237998 --DISTRIBUTION_IDENTIFIER
237999  , p_source_84            IN NUMBER
238000 --Distribution Type
238001  , p_source_85            IN VARCHAR2
238002  , p_source_85_meaning    IN VARCHAR2
238003 --Entered Currency Code
238004  , p_source_88            IN VARCHAR2
238005 --Entered Amount
238006  , p_source_91            IN NUMBER
238007 --Currency Conversion Date
238008  , p_source_92            IN DATE
238009 --Currency Conversion Rate
238010  , p_source_93            IN NUMBER
238011 --Currency Conversion Type
238012  , p_source_94            IN VARCHAR2
238013 --Accounted Amount
238014  , p_source_95            IN NUMBER
238015 --Accounting Line Type
238016  , p_source_97            IN NUMBER
238017 )
238018 IS
238019 
238020 l_component_type              VARCHAR2(80);
238021 l_component_code              VARCHAR2(30);
238022 l_component_type_code         VARCHAR2(1);
238023 l_component_appl_id           INTEGER;
238024 l_amb_context_code            VARCHAR2(30);
238025 l_entity_code                 VARCHAR2(30);
238026 l_event_class_code            VARCHAR2(30);
238027 l_ae_header_id                NUMBER;
238028 l_event_type_code             VARCHAR2(30);
238029 l_line_definition_code        VARCHAR2(30);
238030 l_line_definition_owner_code  VARCHAR2(1);
238031 --
238032 -- adr variables
238033 l_segment                     VARCHAR2(30);
238034 l_ccid                        NUMBER;
238035 l_adr_transaction_coa_id      NUMBER;
238036 l_adr_accounting_coa_id       NUMBER;
238037 l_adr_flexfield_segment_code  VARCHAR2(30);
238038 l_adr_flex_value_set_id       NUMBER;
238039 l_adr_value_type_code         VARCHAR2(30);
238040 l_adr_value_combination_id    NUMBER;
238041 l_adr_value_segment_code      VARCHAR2(30);
238042 
238043 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
238044 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
238045 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
238046 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
238047 
238048 -- 4262811 Variables ------------------------------------------------------------------------------------------
238049 l_entered_amt_idx             NUMBER;
238050 l_accted_amt_idx              NUMBER;
238051 l_acc_rev_flag                VARCHAR2(1);
238052 l_accrual_line_num            NUMBER;
238053 l_tmp_amt                     NUMBER;
238054 l_acc_rev_natural_side_code   VARCHAR2(1);
238055 
238056 l_num_entries                 NUMBER;
238057 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
238058 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
238059 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
238060 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
238061 l_recog_line_1                NUMBER;
238062 l_recog_line_2                NUMBER;
238063 
238064 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
238065 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
238066 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
238067 
238068 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
238069 
238070 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
238071 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
238072 
238073 ---------------------------------------------------------------------------------------------------------------
238074 
238075 
238076 --
238077 -- bulk performance
238078 --
238079 l_balance_type_code           VARCHAR2(1);
238080 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
238081 l_log_module                  VARCHAR2(240);
238082 
238083 --
238084 -- Upgrade strategy
238085 --
238086 l_actual_upg_option           VARCHAR2(1);
238087 l_enc_upg_option           VARCHAR2(1);
238088 
238089 --
238090 BEGIN
238091 --
238092 IF g_log_enabled THEN
238093       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_430';
238094 END IF;
238095 --
238096 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
238097 
238098       trace
238099          (p_msg      => 'BEGIN of AcctLineType_430'
238100          ,p_level    => C_LEVEL_PROCEDURE
238101          ,p_module   => l_log_module);
238102 
238103 END IF;
238104 --
238105 l_component_type             := 'AMB_JLT';
238106 l_component_code             := 'PI_INTRANSIT_BRIDGING_212';
238107 l_component_type_code        := 'S';
238108 l_component_appl_id          :=  707;
238109 l_amb_context_code           := 'DEFAULT';
238110 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
238111 l_event_class_code           := 'USER_DEFINE';
238112 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
238113 l_line_definition_owner_code := 'S';
238114 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
238115 --
238116 l_balance_type_code          := 'A';
238117 l_segment                     := NULL;
238118 l_ccid                        := NULL;
238119 l_adr_transaction_coa_id      := NULL;
238120 l_adr_accounting_coa_id       := NULL;
238121 l_adr_flexfield_segment_code  := NULL;
238122 l_adr_flex_value_set_id       := NULL;
238123 l_adr_value_type_code         := NULL;
238124 l_adr_value_combination_id    := NULL;
238125 l_adr_value_segment_code      := NULL;
238126 
238127 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
238128 l_bflow_class_code           := '';    -- 4219869 Business Flow
238129 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
238130 l_budgetary_control_flag     := 'N';
238131 
238132 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
238133 l_bflow_applied_to_amt       := NULL; -- 5132302
238134 l_entered_amt_idx            := NULL;          -- 4262811
238135 l_accted_amt_idx             := NULL;          -- 4262811
238136 l_acc_rev_flag               := NULL;          -- 4262811
238137 l_accrual_line_num           := NULL;          -- 4262811
238138 l_tmp_amt                    := NULL;          -- 4262811
238139 --
238140  
238141 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
238142     l_balance_type_code <> 'B' THEN
238143 IF NVL(p_source_97,9E125) =  14
238144  THEN 
238145 
238146    --
238147    XLA_AE_LINES_PKG.SetNewLine;
238148 
238149    p_balance_type_code          := l_balance_type_code;
238150    -- set the flag so later we will know whether the gain loss line needs to be created
238151    
238152    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
238153      p_actual_flag :='A';
238154    END IF;
238155 
238156    --
238157    -- bulk performance
238158    --
238159    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
238160                                       p_header_num   => 0); -- 4262811
238161    --
238162    -- set accounting line options
238163    --
238164    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
238165            p_natural_side_code          => 'C'
238166          , p_gain_or_loss_flag          => 'N'
238167          , p_gl_transfer_mode_code      => 'S'
238168          , p_acct_entry_type_code       => 'A'
238169          , p_switch_side_flag           => 'Y'
238170          , p_merge_duplicate_code       => 'N'
238171          );
238172    --
238173    l_acc_rev_natural_side_code := 'D';  -- 4262811
238174    -- 
238175    --
238176    -- set accounting line type info
238177    --
238178    xla_ae_lines_pkg.SetAcctLineType
238179       (p_component_type             => l_component_type
238180       ,p_event_type_code            => l_event_type_code
238181       ,p_line_definition_owner_code => l_line_definition_owner_code
238182       ,p_line_definition_code       => l_line_definition_code
238183       ,p_accounting_line_code       => l_component_code
238184       ,p_accounting_line_type_code  => l_component_type_code
238185       ,p_accounting_line_appl_id    => l_component_appl_id
238186       ,p_amb_context_code           => l_amb_context_code
238187       ,p_entity_code                => l_entity_code
238188       ,p_event_class_code           => l_event_class_code);
238189    --
238190    -- set accounting class
238191    --
238192    xla_ae_lines_pkg.SetAcctClass(
238193            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
238194          , p_ae_header_id           => l_ae_header_id
238195          );
238196 
238197    --
238198    -- set rounding class
238199    --
238200    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
238201                       'INTRANSIT_BRIDGING';
238202 
238203    --
238204    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
238205    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
238206    --
238207    -- bulk performance
238208    --
238209    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
238210 
238211    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
238212       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
238213 
238214    -- 4955764
238215    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
238216       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
238217 
238218    -- 4458381 Public Sector Enh
238219    
238220    --
238221    -- set accounting attributes for the line type
238222    --
238223    l_entered_amt_idx := 3;
238224    l_accted_amt_idx  := 8;
238225    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
238226    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
238227    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
238228    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
238229    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
238230    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
238231    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
238232    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
238233    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
238234    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
238235    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
238236    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
238237    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
238238    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
238239    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
238240    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
238241    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
238242 
238243    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
238244    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
238245 
238246    ---------------------------------------------------------------------------------------------------------------
238247    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
238248    ---------------------------------------------------------------------------------------------------------------
238249    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
238250 
238251    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
238252    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
238253 
238254    IF xla_accounting_cache_pkg.GetValueChar
238255          (p_source_code         => 'LEDGER_CATEGORY_CODE'
238256          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
238257    AND l_bflow_method_code = 'PRIOR_ENTRY'
238258 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
238259    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
238260          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
238261        )
238262    THEN
238263          xla_ae_lines_pkg.BflowUpgEntry
238264            (p_business_method_code    => l_bflow_method_code
238265            ,p_business_class_code     => l_bflow_class_code
238266            ,p_balance_type            => l_balance_type_code);
238267    ELSE
238268       NULL;
238269 -- No business flow processing for business flow method of NONE.
238270    END IF;
238271 
238272    --
238273    -- call analytical criteria
238274    --
238275    
238276    --
238277    -- call description
238278    --
238279    
238280 xla_ae_lines_pkg.SetLineDescription(
238281    p_ae_header_id => l_ae_header_id
238282   ,p_description  => Description_1 (
238283      p_application_id         => p_application_id
238284    , p_ae_header_id           => l_ae_header_id 
238285 , p_source_1 => p_source_1
238286 , p_source_2 => p_source_2
238287 , p_source_3 => p_source_3
238288 , p_source_4 => p_source_4
238289 , p_source_5 => p_source_5
238290    )
238291 );
238292 
238293 
238294    --
238295    -- call ADRs
238296    -- Bug 4922099
238297    --
238298    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
238299         (NVL(l_actual_upg_option, 'N') = 'O') OR
238300         (NVL(l_enc_upg_option, 'N') = 'O')
238301       )
238302    THEN
238303    NULL;
238304    --
238305    --
238306    
238307   l_ccid := AcctDerRule_26(
238308            p_application_id           => p_application_id
238309          , p_ae_header_id             => l_ae_header_id 
238310 , p_source_46 => p_source_46
238311          , x_transaction_coa_id       => l_adr_transaction_coa_id
238312          , x_accounting_coa_id        => l_adr_accounting_coa_id
238313          , x_value_type_code          => l_adr_value_type_code
238314          , p_side                     => 'NA'
238315    );
238316 
238317    xla_ae_lines_pkg.set_ccid(
238318     p_code_combination_id          => l_ccid
238319   , p_value_type_code              => l_adr_value_type_code
238320   , p_transaction_coa_id           => l_adr_transaction_coa_id
238321   , p_accounting_coa_id            => l_adr_accounting_coa_id
238322   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
238323   , p_adr_type_code                => 'S'
238324   , p_component_type               => l_component_type
238325   , p_component_code               => l_component_code
238326   , p_component_type_code          => l_component_type_code
238327   , p_component_appl_id            => l_component_appl_id
238328   , p_amb_context_code             => l_amb_context_code
238329   , p_side                         => 'NA'
238330   );
238331 
238332 
238333    --
238334    --
238335    END IF;
238336    --
238337    -- Bug 4922099
238338    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
238339           (NVL(l_enc_upg_option, 'N') = 'O')
238340         ) AND
238341         (l_bflow_method_code = 'PRIOR_ENTRY')
238342       )
238343    THEN
238344       IF
238345       --
238346       1 = 2
238347       --
238348       THEN
238349       xla_accounting_err_pkg.build_message
238350                                     (p_appli_s_name            => 'XLA'
238351                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
238352                                     ,p_token_1                 => 'LINE_NUMBER'
238353                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
238354                                     ,p_token_2                 => 'LINE_TYPE_NAME'
238355                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
238356                                                                              l_component_type
238357                                                                             ,l_component_code
238358                                                                             ,l_component_type_code
238359                                                                             ,l_component_appl_id
238360                                                                             ,l_amb_context_code
238361                                                                             ,l_entity_code
238362                                                                             ,l_event_class_code
238363                                                                            )
238364                                     ,p_token_3                 => 'OWNER'
238365                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
238366                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
238367                                                                           ,p_lookup_code    => l_component_type_code
238368                                                                          )
238369                                     ,p_token_4                 => 'PRODUCT_NAME'
238370                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
238371                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
238372                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
238373                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
238374                                     ,p_ae_header_id            =>  NULL
238375                                        );
238376 
238377         IF (C_LEVEL_ERROR>= g_log_level) THEN
238378                  trace
238379                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
238380                       ,p_level    => C_LEVEL_ERROR
238381                       ,p_module   => l_log_module);
238382         END IF;
238383       END IF;
238384    END IF;
238385    --
238386    --
238387    ------------------------------------------------------------------------------------------------
238388    -- 4219869 Business Flow
238389    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
238390    -- Prior Entry.  Currently, the following code is always generated.
238391    ------------------------------------------------------------------------------------------------
238392    XLA_AE_LINES_PKG.ValidateCurrentLine;
238393 
238394    ------------------------------------------------------------------------------------
238395    -- 4219869 Business Flow
238396    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
238397    ------------------------------------------------------------------------------------
238398    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
238399 
238400    ----------------------------------------------------------------------------------
238401    -- 4219869 Business Flow
238402    -- Update journal entry status -- Need to generate this within IF <condition>
238403    ----------------------------------------------------------------------------------
238404    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
238405          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
238406          ,p_balance_type_code => l_balance_type_code
238407          );
238408 
238409    -------------------------------------------------------------------------------------------
238410    -- 4262811 - Generate the Accrual Reversal lines
238411    -------------------------------------------------------------------------------------------
238412    BEGIN
238413       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
238414                               (g_array_event(p_event_id).array_value_num('header_index'));
238415       IF l_acc_rev_flag IS NULL THEN
238416          l_acc_rev_flag := 'N';
238417       END IF;
238418    EXCEPTION
238419       WHEN OTHERS THEN
238420          l_acc_rev_flag := 'N';
238421    END;
238422    --
238423    IF (l_acc_rev_flag = 'Y') THEN
238424 
238425        -- 4645092  ------------------------------------------------------------------------------
238426        -- To allow MPA report to determine if it should generate report process
238427        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
238428        ------------------------------------------------------------------------------------------
238429 
238430        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
238431        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
238432    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
238433    -- call ADRs
238434    -- Bug 4922099
238435    --
238436    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
238437         (NVL(l_actual_upg_option, 'N') = 'O') OR
238438         (NVL(l_enc_upg_option, 'N') = 'O')
238439       )
238440    THEN
238441    NULL;
238442    --
238443    --
238444    
238445   l_ccid := AcctDerRule_26(
238446            p_application_id           => p_application_id
238447          , p_ae_header_id             => l_ae_header_id 
238448 , p_source_46 => p_source_46
238449          , x_transaction_coa_id       => l_adr_transaction_coa_id
238450          , x_accounting_coa_id        => l_adr_accounting_coa_id
238451          , x_value_type_code          => l_adr_value_type_code
238452          , p_side                     => 'NA'
238453    );
238454 
238455    xla_ae_lines_pkg.set_ccid(
238456     p_code_combination_id          => l_ccid
238457   , p_value_type_code              => l_adr_value_type_code
238458   , p_transaction_coa_id           => l_adr_transaction_coa_id
238459   , p_accounting_coa_id            => l_adr_accounting_coa_id
238460   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
238461   , p_adr_type_code                => 'S'
238462   , p_component_type               => l_component_type
238463   , p_component_code               => l_component_code
238464   , p_component_type_code          => l_component_type_code
238465   , p_component_appl_id            => l_component_appl_id
238466   , p_amb_context_code             => l_amb_context_code
238467   , p_side                         => 'NA'
238468   );
238469 
238470 
238471    --
238472    --
238473    END IF;
238474 
238475        --
238476        -- Update the line information that should be overwritten
238477        --
238478        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
238479                                          p_header_num   => 1);
238480        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
238481 
238482        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
238483 
238484        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
238485           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
238486        END IF;
238487 
238488       --
238489       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
238490       --
238491       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
238492           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
238493       ELSE
238494           ---------------------------------------------------------------------------------------------------
238495           -- 4262811a Switch Sign
238496           ---------------------------------------------------------------------------------------------------
238497           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
238498           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
238499                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
238500           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
238501                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
238502           -- 5132302
238503           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
238504                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
238505 
238506       END IF;
238507 
238508       -- 4955764
238509       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
238510       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
238511 
238512 
238513       XLA_AE_LINES_PKG.ValidateCurrentLine;
238514       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
238515 
238516       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
238517                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
238518                ,p_balance_type_code => l_balance_type_code);
238519 
238520    END IF;
238521 
238522    -----------------------------------------------------------------------------------------
238523    -- 4262811 Multiperiod Accounting
238524    -----------------------------------------------------------------------------------------
238525      -- No MPA option is assigned.
238526 
238527 
238528 END IF;
238529 END IF;
238530 --
238531 
238532 --
238533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
238534    trace
238535       (p_msg      => 'END of AcctLineType_430'
238536       ,p_level    => C_LEVEL_PROCEDURE
238537       ,p_module   => l_log_module);
238538 END IF;
238539 --
238540 EXCEPTION
238541   WHEN xla_exceptions_pkg.application_exception THEN
238542       RAISE;
238543   WHEN OTHERS THEN
238544        xla_exceptions_pkg.raise_message
238545            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_430');
238546 END AcctLineType_430;
238547 --
238548 
238549 ---------------------------------------
238550 --
238551 -- PRIVATE FUNCTION
238552 --         AcctLineType_431
238553 --
238554 ---------------------------------------
238555 PROCEDURE AcctLineType_431 (
238556   p_application_id        IN NUMBER
238557  ,p_event_id              IN NUMBER
238558  ,p_calculate_acctd_flag  IN VARCHAR2
238559  ,p_calculate_g_l_flag    IN VARCHAR2
238560  ,p_actual_flag           IN OUT VARCHAR2
238561  ,p_balance_type_code     OUT VARCHAR2
238562  ,p_gain_or_loss_ref      OUT VARCHAR2
238563  
238564 --TRANSACTION_ID
238565  , p_source_1            IN NUMBER
238566 --Item Concatenated Segments
238567  , p_source_2            IN VARCHAR2
238568 --Transaction Quantity
238569  , p_source_3            IN NUMBER
238570 --Transaction Unit of Measure Code
238571  , p_source_4            IN VARCHAR2
238572 --Inventory Transaction Type Description
238573  , p_source_5            IN VARCHAR2
238574 --Interorg Bridging Account
238575  , p_source_46            IN NUMBER
238576 --DISTRIBUTION_IDENTIFIER
238577  , p_source_84            IN NUMBER
238578 --Distribution Type
238579  , p_source_85            IN VARCHAR2
238580  , p_source_85_meaning    IN VARCHAR2
238581 --Entered Currency Code
238582  , p_source_88            IN VARCHAR2
238583 --Entered Amount
238584  , p_source_91            IN NUMBER
238585 --Currency Conversion Date
238586  , p_source_92            IN DATE
238587 --Currency Conversion Rate
238588  , p_source_93            IN NUMBER
238589 --Currency Conversion Type
238590  , p_source_94            IN VARCHAR2
238591 --Accounted Amount
238592  , p_source_95            IN NUMBER
238593 --Accounting Line Type
238594  , p_source_97            IN NUMBER
238595 )
238596 IS
238597 
238598 l_component_type              VARCHAR2(80);
238599 l_component_code              VARCHAR2(30);
238600 l_component_type_code         VARCHAR2(1);
238601 l_component_appl_id           INTEGER;
238602 l_amb_context_code            VARCHAR2(30);
238603 l_entity_code                 VARCHAR2(30);
238604 l_event_class_code            VARCHAR2(30);
238605 l_ae_header_id                NUMBER;
238606 l_event_type_code             VARCHAR2(30);
238607 l_line_definition_code        VARCHAR2(30);
238608 l_line_definition_owner_code  VARCHAR2(1);
238609 --
238610 -- adr variables
238611 l_segment                     VARCHAR2(30);
238612 l_ccid                        NUMBER;
238613 l_adr_transaction_coa_id      NUMBER;
238614 l_adr_accounting_coa_id       NUMBER;
238615 l_adr_flexfield_segment_code  VARCHAR2(30);
238616 l_adr_flex_value_set_id       NUMBER;
238617 l_adr_value_type_code         VARCHAR2(30);
238618 l_adr_value_combination_id    NUMBER;
238619 l_adr_value_segment_code      VARCHAR2(30);
238620 
238621 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
238622 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
238623 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
238624 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
238625 
238626 -- 4262811 Variables ------------------------------------------------------------------------------------------
238627 l_entered_amt_idx             NUMBER;
238628 l_accted_amt_idx              NUMBER;
238629 l_acc_rev_flag                VARCHAR2(1);
238630 l_accrual_line_num            NUMBER;
238631 l_tmp_amt                     NUMBER;
238632 l_acc_rev_natural_side_code   VARCHAR2(1);
238633 
238634 l_num_entries                 NUMBER;
238635 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
238636 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
238637 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
238638 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
238639 l_recog_line_1                NUMBER;
238640 l_recog_line_2                NUMBER;
238641 
238642 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
238643 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
238644 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
238645 
238646 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
238647 
238648 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
238649 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
238650 
238651 ---------------------------------------------------------------------------------------------------------------
238652 
238653 
238654 --
238655 -- bulk performance
238656 --
238657 l_balance_type_code           VARCHAR2(1);
238658 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
238659 l_log_module                  VARCHAR2(240);
238660 
238661 --
238662 -- Upgrade strategy
238663 --
238664 l_actual_upg_option           VARCHAR2(1);
238665 l_enc_upg_option           VARCHAR2(1);
238666 
238667 --
238668 BEGIN
238669 --
238670 IF g_log_enabled THEN
238671       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_431';
238672 END IF;
238673 --
238674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
238675 
238676       trace
238677          (p_msg      => 'BEGIN of AcctLineType_431'
238678          ,p_level    => C_LEVEL_PROCEDURE
238679          ,p_module   => l_log_module);
238680 
238681 END IF;
238682 --
238683 l_component_type             := 'AMB_JLT';
238684 l_component_code             := 'PI_INTRANSIT_BRIDGING_212';
238685 l_component_type_code        := 'S';
238686 l_component_appl_id          :=  707;
238687 l_amb_context_code           := 'DEFAULT';
238688 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
238689 l_event_class_code           := 'USER_DEFINE';
238690 l_event_type_code            := 'UFOB_RCPT_SENDER_SHIP';
238691 l_line_definition_owner_code := 'S';
238692 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
238693 --
238694 l_balance_type_code          := 'A';
238695 l_segment                     := NULL;
238696 l_ccid                        := NULL;
238697 l_adr_transaction_coa_id      := NULL;
238698 l_adr_accounting_coa_id       := NULL;
238699 l_adr_flexfield_segment_code  := NULL;
238700 l_adr_flex_value_set_id       := NULL;
238701 l_adr_value_type_code         := NULL;
238702 l_adr_value_combination_id    := NULL;
238703 l_adr_value_segment_code      := NULL;
238704 
238705 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
238706 l_bflow_class_code           := '';    -- 4219869 Business Flow
238707 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
238708 l_budgetary_control_flag     := 'N';
238709 
238710 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
238711 l_bflow_applied_to_amt       := NULL; -- 5132302
238712 l_entered_amt_idx            := NULL;          -- 4262811
238713 l_accted_amt_idx             := NULL;          -- 4262811
238714 l_acc_rev_flag               := NULL;          -- 4262811
238715 l_accrual_line_num           := NULL;          -- 4262811
238716 l_tmp_amt                    := NULL;          -- 4262811
238717 --
238718  
238719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
238720     l_balance_type_code <> 'B' THEN
238721 IF NVL(p_source_97,9E125) =  14
238722  THEN 
238723 
238724    --
238725    XLA_AE_LINES_PKG.SetNewLine;
238726 
238727    p_balance_type_code          := l_balance_type_code;
238728    -- set the flag so later we will know whether the gain loss line needs to be created
238729    
238730    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
238731      p_actual_flag :='A';
238732    END IF;
238733 
238734    --
238735    -- bulk performance
238736    --
238737    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
238738                                       p_header_num   => 0); -- 4262811
238739    --
238740    -- set accounting line options
238741    --
238742    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
238743            p_natural_side_code          => 'C'
238744          , p_gain_or_loss_flag          => 'N'
238745          , p_gl_transfer_mode_code      => 'S'
238746          , p_acct_entry_type_code       => 'A'
238747          , p_switch_side_flag           => 'Y'
238748          , p_merge_duplicate_code       => 'N'
238749          );
238750    --
238751    l_acc_rev_natural_side_code := 'D';  -- 4262811
238752    -- 
238753    --
238754    -- set accounting line type info
238755    --
238756    xla_ae_lines_pkg.SetAcctLineType
238757       (p_component_type             => l_component_type
238758       ,p_event_type_code            => l_event_type_code
238759       ,p_line_definition_owner_code => l_line_definition_owner_code
238760       ,p_line_definition_code       => l_line_definition_code
238761       ,p_accounting_line_code       => l_component_code
238762       ,p_accounting_line_type_code  => l_component_type_code
238763       ,p_accounting_line_appl_id    => l_component_appl_id
238764       ,p_amb_context_code           => l_amb_context_code
238765       ,p_entity_code                => l_entity_code
238766       ,p_event_class_code           => l_event_class_code);
238767    --
238768    -- set accounting class
238769    --
238770    xla_ae_lines_pkg.SetAcctClass(
238771            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
238772          , p_ae_header_id           => l_ae_header_id
238773          );
238774 
238775    --
238776    -- set rounding class
238777    --
238778    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
238779                       'INTRANSIT_BRIDGING';
238780 
238781    --
238782    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
238783    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
238784    --
238785    -- bulk performance
238786    --
238787    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
238788 
238789    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
238790       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
238791 
238792    -- 4955764
238793    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
238794       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
238795 
238796    -- 4458381 Public Sector Enh
238797    
238798    --
238799    -- set accounting attributes for the line type
238800    --
238801    l_entered_amt_idx := 3;
238802    l_accted_amt_idx  := 8;
238803    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
238804    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
238805    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
238806    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
238807    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
238808    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
238809    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
238810    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
238811    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
238812    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
238813    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
238814    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
238815    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
238816    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
238817    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
238818    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
238819    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
238820 
238821    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
238822    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
238823 
238824    ---------------------------------------------------------------------------------------------------------------
238825    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
238826    ---------------------------------------------------------------------------------------------------------------
238827    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
238828 
238829    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
238830    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
238831 
238832    IF xla_accounting_cache_pkg.GetValueChar
238833          (p_source_code         => 'LEDGER_CATEGORY_CODE'
238834          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
238835    AND l_bflow_method_code = 'PRIOR_ENTRY'
238836 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
238837    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
238838          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
238839        )
238840    THEN
238841          xla_ae_lines_pkg.BflowUpgEntry
238842            (p_business_method_code    => l_bflow_method_code
238843            ,p_business_class_code     => l_bflow_class_code
238844            ,p_balance_type            => l_balance_type_code);
238845    ELSE
238846       NULL;
238847 -- No business flow processing for business flow method of NONE.
238848    END IF;
238849 
238850    --
238851    -- call analytical criteria
238852    --
238853    
238854    --
238855    -- call description
238856    --
238857    
238858 xla_ae_lines_pkg.SetLineDescription(
238859    p_ae_header_id => l_ae_header_id
238860   ,p_description  => Description_1 (
238861      p_application_id         => p_application_id
238862    , p_ae_header_id           => l_ae_header_id 
238863 , p_source_1 => p_source_1
238864 , p_source_2 => p_source_2
238865 , p_source_3 => p_source_3
238866 , p_source_4 => p_source_4
238867 , p_source_5 => p_source_5
238868    )
238869 );
238870 
238871 
238872    --
238873    -- call ADRs
238874    -- Bug 4922099
238875    --
238876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
238877         (NVL(l_actual_upg_option, 'N') = 'O') OR
238878         (NVL(l_enc_upg_option, 'N') = 'O')
238879       )
238880    THEN
238881    NULL;
238882    --
238883    --
238884    
238885   l_ccid := AcctDerRule_26(
238886            p_application_id           => p_application_id
238887          , p_ae_header_id             => l_ae_header_id 
238888 , p_source_46 => p_source_46
238889          , x_transaction_coa_id       => l_adr_transaction_coa_id
238890          , x_accounting_coa_id        => l_adr_accounting_coa_id
238891          , x_value_type_code          => l_adr_value_type_code
238892          , p_side                     => 'NA'
238893    );
238894 
238895    xla_ae_lines_pkg.set_ccid(
238896     p_code_combination_id          => l_ccid
238897   , p_value_type_code              => l_adr_value_type_code
238898   , p_transaction_coa_id           => l_adr_transaction_coa_id
238899   , p_accounting_coa_id            => l_adr_accounting_coa_id
238900   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
238901   , p_adr_type_code                => 'S'
238902   , p_component_type               => l_component_type
238903   , p_component_code               => l_component_code
238904   , p_component_type_code          => l_component_type_code
238905   , p_component_appl_id            => l_component_appl_id
238906   , p_amb_context_code             => l_amb_context_code
238907   , p_side                         => 'NA'
238908   );
238909 
238910 
238911    --
238912    --
238913    END IF;
238914    --
238915    -- Bug 4922099
238916    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
238917           (NVL(l_enc_upg_option, 'N') = 'O')
238918         ) AND
238919         (l_bflow_method_code = 'PRIOR_ENTRY')
238920       )
238921    THEN
238922       IF
238923       --
238924       1 = 2
238925       --
238926       THEN
238927       xla_accounting_err_pkg.build_message
238928                                     (p_appli_s_name            => 'XLA'
238929                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
238930                                     ,p_token_1                 => 'LINE_NUMBER'
238931                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
238932                                     ,p_token_2                 => 'LINE_TYPE_NAME'
238933                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
238934                                                                              l_component_type
238935                                                                             ,l_component_code
238936                                                                             ,l_component_type_code
238937                                                                             ,l_component_appl_id
238938                                                                             ,l_amb_context_code
238939                                                                             ,l_entity_code
238940                                                                             ,l_event_class_code
238941                                                                            )
238942                                     ,p_token_3                 => 'OWNER'
238943                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
238944                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
238945                                                                           ,p_lookup_code    => l_component_type_code
238946                                                                          )
238947                                     ,p_token_4                 => 'PRODUCT_NAME'
238948                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
238949                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
238950                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
238951                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
238952                                     ,p_ae_header_id            =>  NULL
238953                                        );
238954 
238955         IF (C_LEVEL_ERROR>= g_log_level) THEN
238956                  trace
238957                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
238958                       ,p_level    => C_LEVEL_ERROR
238959                       ,p_module   => l_log_module);
238960         END IF;
238961       END IF;
238962    END IF;
238963    --
238964    --
238965    ------------------------------------------------------------------------------------------------
238966    -- 4219869 Business Flow
238967    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
238968    -- Prior Entry.  Currently, the following code is always generated.
238969    ------------------------------------------------------------------------------------------------
238970    XLA_AE_LINES_PKG.ValidateCurrentLine;
238971 
238972    ------------------------------------------------------------------------------------
238973    -- 4219869 Business Flow
238974    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
238975    ------------------------------------------------------------------------------------
238976    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
238977 
238978    ----------------------------------------------------------------------------------
238979    -- 4219869 Business Flow
238980    -- Update journal entry status -- Need to generate this within IF <condition>
238981    ----------------------------------------------------------------------------------
238982    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
238983          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
238984          ,p_balance_type_code => l_balance_type_code
238985          );
238986 
238987    -------------------------------------------------------------------------------------------
238988    -- 4262811 - Generate the Accrual Reversal lines
238989    -------------------------------------------------------------------------------------------
238990    BEGIN
238991       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
238992                               (g_array_event(p_event_id).array_value_num('header_index'));
238993       IF l_acc_rev_flag IS NULL THEN
238994          l_acc_rev_flag := 'N';
238995       END IF;
238996    EXCEPTION
238997       WHEN OTHERS THEN
238998          l_acc_rev_flag := 'N';
238999    END;
239000    --
239001    IF (l_acc_rev_flag = 'Y') THEN
239002 
239003        -- 4645092  ------------------------------------------------------------------------------
239004        -- To allow MPA report to determine if it should generate report process
239005        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
239006        ------------------------------------------------------------------------------------------
239007 
239008        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
239009        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
239010    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
239011    -- call ADRs
239012    -- Bug 4922099
239013    --
239014    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
239015         (NVL(l_actual_upg_option, 'N') = 'O') OR
239016         (NVL(l_enc_upg_option, 'N') = 'O')
239017       )
239018    THEN
239019    NULL;
239020    --
239021    --
239022    
239023   l_ccid := AcctDerRule_26(
239024            p_application_id           => p_application_id
239025          , p_ae_header_id             => l_ae_header_id 
239026 , p_source_46 => p_source_46
239027          , x_transaction_coa_id       => l_adr_transaction_coa_id
239028          , x_accounting_coa_id        => l_adr_accounting_coa_id
239029          , x_value_type_code          => l_adr_value_type_code
239030          , p_side                     => 'NA'
239031    );
239032 
239033    xla_ae_lines_pkg.set_ccid(
239034     p_code_combination_id          => l_ccid
239035   , p_value_type_code              => l_adr_value_type_code
239036   , p_transaction_coa_id           => l_adr_transaction_coa_id
239037   , p_accounting_coa_id            => l_adr_accounting_coa_id
239038   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
239039   , p_adr_type_code                => 'S'
239040   , p_component_type               => l_component_type
239041   , p_component_code               => l_component_code
239042   , p_component_type_code          => l_component_type_code
239043   , p_component_appl_id            => l_component_appl_id
239044   , p_amb_context_code             => l_amb_context_code
239045   , p_side                         => 'NA'
239046   );
239047 
239048 
239049    --
239050    --
239051    END IF;
239052 
239053        --
239054        -- Update the line information that should be overwritten
239055        --
239056        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
239057                                          p_header_num   => 1);
239058        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
239059 
239060        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
239061 
239062        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
239063           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
239064        END IF;
239065 
239066       --
239067       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
239068       --
239069       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
239070           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
239071       ELSE
239072           ---------------------------------------------------------------------------------------------------
239073           -- 4262811a Switch Sign
239074           ---------------------------------------------------------------------------------------------------
239075           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
239076           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
239077                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
239078           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
239079                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
239080           -- 5132302
239081           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
239082                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
239083 
239084       END IF;
239085 
239086       -- 4955764
239087       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
239088       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
239089 
239090 
239091       XLA_AE_LINES_PKG.ValidateCurrentLine;
239092       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
239093 
239094       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
239095                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
239096                ,p_balance_type_code => l_balance_type_code);
239097 
239098    END IF;
239099 
239100    -----------------------------------------------------------------------------------------
239101    -- 4262811 Multiperiod Accounting
239102    -----------------------------------------------------------------------------------------
239103      -- No MPA option is assigned.
239104 
239105 
239106 END IF;
239107 END IF;
239108 --
239109 
239110 --
239111 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
239112    trace
239113       (p_msg      => 'END of AcctLineType_431'
239114       ,p_level    => C_LEVEL_PROCEDURE
239115       ,p_module   => l_log_module);
239116 END IF;
239117 --
239118 EXCEPTION
239119   WHEN xla_exceptions_pkg.application_exception THEN
239120       RAISE;
239121   WHEN OTHERS THEN
239122        xla_exceptions_pkg.raise_message
239123            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_431');
239124 END AcctLineType_431;
239125 --
239126 
239127 ---------------------------------------
239128 --
239129 -- PRIVATE FUNCTION
239130 --         AcctLineType_432
239131 --
239132 ---------------------------------------
239133 PROCEDURE AcctLineType_432 (
239134   p_application_id        IN NUMBER
239135  ,p_event_id              IN NUMBER
239136  ,p_calculate_acctd_flag  IN VARCHAR2
239137  ,p_calculate_g_l_flag    IN VARCHAR2
239138  ,p_actual_flag           IN OUT VARCHAR2
239139  ,p_balance_type_code     OUT VARCHAR2
239140  ,p_gain_or_loss_ref      OUT VARCHAR2
239141  
239142 --TRANSACTION_ID
239143  , p_source_1            IN NUMBER
239144 --Item Concatenated Segments
239145  , p_source_2            IN VARCHAR2
239146 --Transaction Quantity
239147  , p_source_3            IN NUMBER
239148 --Transaction Unit of Measure Code
239149  , p_source_4            IN VARCHAR2
239150 --Inventory Transaction Type Description
239151  , p_source_5            IN VARCHAR2
239152 --Interorg Bridging Account
239153  , p_source_46            IN NUMBER
239154 --DISTRIBUTION_IDENTIFIER
239155  , p_source_84            IN NUMBER
239156 --Distribution Type
239157  , p_source_85            IN VARCHAR2
239158  , p_source_85_meaning    IN VARCHAR2
239159 --Entered Currency Code
239160  , p_source_88            IN VARCHAR2
239161 --Entered Amount
239162  , p_source_91            IN NUMBER
239163 --Currency Conversion Date
239164  , p_source_92            IN DATE
239165 --Currency Conversion Rate
239166  , p_source_93            IN NUMBER
239167 --Currency Conversion Type
239168  , p_source_94            IN VARCHAR2
239169 --Accounted Amount
239170  , p_source_95            IN NUMBER
239171 --Accounting Line Type
239172  , p_source_97            IN NUMBER
239173 )
239174 IS
239175 
239176 l_component_type              VARCHAR2(80);
239177 l_component_code              VARCHAR2(30);
239178 l_component_type_code         VARCHAR2(1);
239179 l_component_appl_id           INTEGER;
239180 l_amb_context_code            VARCHAR2(30);
239181 l_entity_code                 VARCHAR2(30);
239182 l_event_class_code            VARCHAR2(30);
239183 l_ae_header_id                NUMBER;
239184 l_event_type_code             VARCHAR2(30);
239185 l_line_definition_code        VARCHAR2(30);
239186 l_line_definition_owner_code  VARCHAR2(1);
239187 --
239188 -- adr variables
239189 l_segment                     VARCHAR2(30);
239190 l_ccid                        NUMBER;
239191 l_adr_transaction_coa_id      NUMBER;
239192 l_adr_accounting_coa_id       NUMBER;
239193 l_adr_flexfield_segment_code  VARCHAR2(30);
239194 l_adr_flex_value_set_id       NUMBER;
239195 l_adr_value_type_code         VARCHAR2(30);
239196 l_adr_value_combination_id    NUMBER;
239197 l_adr_value_segment_code      VARCHAR2(30);
239198 
239199 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
239200 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
239201 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
239202 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
239203 
239204 -- 4262811 Variables ------------------------------------------------------------------------------------------
239205 l_entered_amt_idx             NUMBER;
239206 l_accted_amt_idx              NUMBER;
239207 l_acc_rev_flag                VARCHAR2(1);
239208 l_accrual_line_num            NUMBER;
239209 l_tmp_amt                     NUMBER;
239210 l_acc_rev_natural_side_code   VARCHAR2(1);
239211 
239212 l_num_entries                 NUMBER;
239213 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
239214 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
239215 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
239216 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
239217 l_recog_line_1                NUMBER;
239218 l_recog_line_2                NUMBER;
239219 
239220 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
239221 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
239222 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
239223 
239224 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
239225 
239226 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
239227 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
239228 
239229 ---------------------------------------------------------------------------------------------------------------
239230 
239231 
239232 --
239233 -- bulk performance
239234 --
239235 l_balance_type_code           VARCHAR2(1);
239236 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
239237 l_log_module                  VARCHAR2(240);
239238 
239239 --
239240 -- Upgrade strategy
239241 --
239242 l_actual_upg_option           VARCHAR2(1);
239243 l_enc_upg_option           VARCHAR2(1);
239244 
239245 --
239246 BEGIN
239247 --
239248 IF g_log_enabled THEN
239249       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_432';
239250 END IF;
239251 --
239252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
239253 
239254       trace
239255          (p_msg      => 'BEGIN of AcctLineType_432'
239256          ,p_level    => C_LEVEL_PROCEDURE
239257          ,p_module   => l_log_module);
239258 
239259 END IF;
239260 --
239261 l_component_type             := 'AMB_JLT';
239262 l_component_code             := 'PI_INTRANSIT_BRIDGING_212';
239263 l_component_type_code        := 'S';
239264 l_component_appl_id          :=  707;
239265 l_amb_context_code           := 'DEFAULT';
239266 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
239267 l_event_class_code           := 'FOB_RCPT_SENDER_SHIP';
239268 l_event_type_code            := 'FOB_RCPT_SENDER_SHIP';
239269 l_line_definition_owner_code := 'S';
239270 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_SHIP';
239271 --
239272 l_balance_type_code          := 'A';
239273 l_segment                     := NULL;
239274 l_ccid                        := NULL;
239275 l_adr_transaction_coa_id      := NULL;
239276 l_adr_accounting_coa_id       := NULL;
239277 l_adr_flexfield_segment_code  := NULL;
239278 l_adr_flex_value_set_id       := NULL;
239279 l_adr_value_type_code         := NULL;
239280 l_adr_value_combination_id    := NULL;
239281 l_adr_value_segment_code      := NULL;
239282 
239283 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
239284 l_bflow_class_code           := '';    -- 4219869 Business Flow
239285 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
239286 l_budgetary_control_flag     := 'N';
239287 
239288 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
239289 l_bflow_applied_to_amt       := NULL; -- 5132302
239290 l_entered_amt_idx            := NULL;          -- 4262811
239291 l_accted_amt_idx             := NULL;          -- 4262811
239292 l_acc_rev_flag               := NULL;          -- 4262811
239293 l_accrual_line_num           := NULL;          -- 4262811
239294 l_tmp_amt                    := NULL;          -- 4262811
239295 --
239296  
239297 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
239298     l_balance_type_code <> 'B' THEN
239299 IF NVL(p_source_97,9E125) =  14
239300  THEN 
239301 
239302    --
239303    XLA_AE_LINES_PKG.SetNewLine;
239304 
239305    p_balance_type_code          := l_balance_type_code;
239306    -- set the flag so later we will know whether the gain loss line needs to be created
239307    
239308    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
239309      p_actual_flag :='A';
239310    END IF;
239311 
239312    --
239313    -- bulk performance
239314    --
239315    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
239316                                       p_header_num   => 0); -- 4262811
239317    --
239318    -- set accounting line options
239319    --
239320    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
239321            p_natural_side_code          => 'C'
239322          , p_gain_or_loss_flag          => 'N'
239323          , p_gl_transfer_mode_code      => 'S'
239324          , p_acct_entry_type_code       => 'A'
239325          , p_switch_side_flag           => 'Y'
239326          , p_merge_duplicate_code       => 'N'
239327          );
239328    --
239329    l_acc_rev_natural_side_code := 'D';  -- 4262811
239330    -- 
239331    --
239332    -- set accounting line type info
239333    --
239334    xla_ae_lines_pkg.SetAcctLineType
239335       (p_component_type             => l_component_type
239336       ,p_event_type_code            => l_event_type_code
239337       ,p_line_definition_owner_code => l_line_definition_owner_code
239338       ,p_line_definition_code       => l_line_definition_code
239339       ,p_accounting_line_code       => l_component_code
239340       ,p_accounting_line_type_code  => l_component_type_code
239341       ,p_accounting_line_appl_id    => l_component_appl_id
239342       ,p_amb_context_code           => l_amb_context_code
239343       ,p_entity_code                => l_entity_code
239344       ,p_event_class_code           => l_event_class_code);
239345    --
239346    -- set accounting class
239347    --
239348    xla_ae_lines_pkg.SetAcctClass(
239349            p_accounting_class_code  => 'INTRANSIT_BRIDGING'
239350          , p_ae_header_id           => l_ae_header_id
239351          );
239352 
239353    --
239354    -- set rounding class
239355    --
239356    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
239357                       'INTRANSIT_BRIDGING';
239358 
239359    --
239360    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
239361    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
239362    --
239363    -- bulk performance
239364    --
239365    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
239366 
239367    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
239368       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
239369 
239370    -- 4955764
239371    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
239372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
239373 
239374    -- 4458381 Public Sector Enh
239375    
239376    --
239377    -- set accounting attributes for the line type
239378    --
239379    l_entered_amt_idx := 3;
239380    l_accted_amt_idx  := 8;
239381    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
239382    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
239383    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
239384    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
239385    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
239386    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
239387    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
239388    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
239389    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
239390    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
239391    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
239392    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
239393    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
239394    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
239395    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
239396    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
239397    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
239398 
239399    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
239400    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
239401 
239402    ---------------------------------------------------------------------------------------------------------------
239403    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
239404    ---------------------------------------------------------------------------------------------------------------
239405    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
239406 
239407    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
239408    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
239409 
239410    IF xla_accounting_cache_pkg.GetValueChar
239411          (p_source_code         => 'LEDGER_CATEGORY_CODE'
239412          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
239413    AND l_bflow_method_code = 'PRIOR_ENTRY'
239414 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
239415    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
239416          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
239417        )
239418    THEN
239419          xla_ae_lines_pkg.BflowUpgEntry
239420            (p_business_method_code    => l_bflow_method_code
239421            ,p_business_class_code     => l_bflow_class_code
239422            ,p_balance_type            => l_balance_type_code);
239423    ELSE
239424       NULL;
239425 -- No business flow processing for business flow method of NONE.
239426    END IF;
239427 
239428    --
239429    -- call analytical criteria
239430    --
239431    
239432    --
239433    -- call description
239434    --
239435    
239436 xla_ae_lines_pkg.SetLineDescription(
239437    p_ae_header_id => l_ae_header_id
239438   ,p_description  => Description_1 (
239439      p_application_id         => p_application_id
239440    , p_ae_header_id           => l_ae_header_id 
239441 , p_source_1 => p_source_1
239442 , p_source_2 => p_source_2
239443 , p_source_3 => p_source_3
239444 , p_source_4 => p_source_4
239445 , p_source_5 => p_source_5
239446    )
239447 );
239448 
239449 
239450    --
239451    -- call ADRs
239452    -- Bug 4922099
239453    --
239454    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
239455         (NVL(l_actual_upg_option, 'N') = 'O') OR
239456         (NVL(l_enc_upg_option, 'N') = 'O')
239457       )
239458    THEN
239459    NULL;
239460    --
239461    --
239462    
239463   l_ccid := AcctDerRule_26(
239464            p_application_id           => p_application_id
239465          , p_ae_header_id             => l_ae_header_id 
239466 , p_source_46 => p_source_46
239467          , x_transaction_coa_id       => l_adr_transaction_coa_id
239468          , x_accounting_coa_id        => l_adr_accounting_coa_id
239469          , x_value_type_code          => l_adr_value_type_code
239470          , p_side                     => 'NA'
239471    );
239472 
239473    xla_ae_lines_pkg.set_ccid(
239474     p_code_combination_id          => l_ccid
239475   , p_value_type_code              => l_adr_value_type_code
239476   , p_transaction_coa_id           => l_adr_transaction_coa_id
239477   , p_accounting_coa_id            => l_adr_accounting_coa_id
239478   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
239479   , p_adr_type_code                => 'S'
239480   , p_component_type               => l_component_type
239481   , p_component_code               => l_component_code
239482   , p_component_type_code          => l_component_type_code
239483   , p_component_appl_id            => l_component_appl_id
239484   , p_amb_context_code             => l_amb_context_code
239485   , p_side                         => 'NA'
239486   );
239487 
239488 
239489    --
239490    --
239491    END IF;
239492    --
239493    -- Bug 4922099
239494    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
239495           (NVL(l_enc_upg_option, 'N') = 'O')
239496         ) AND
239497         (l_bflow_method_code = 'PRIOR_ENTRY')
239498       )
239499    THEN
239500       IF
239501       --
239502       1 = 2
239503       --
239504       THEN
239505       xla_accounting_err_pkg.build_message
239506                                     (p_appli_s_name            => 'XLA'
239507                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
239508                                     ,p_token_1                 => 'LINE_NUMBER'
239509                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
239510                                     ,p_token_2                 => 'LINE_TYPE_NAME'
239511                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
239512                                                                              l_component_type
239513                                                                             ,l_component_code
239514                                                                             ,l_component_type_code
239515                                                                             ,l_component_appl_id
239516                                                                             ,l_amb_context_code
239517                                                                             ,l_entity_code
239518                                                                             ,l_event_class_code
239519                                                                            )
239520                                     ,p_token_3                 => 'OWNER'
239521                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
239522                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
239523                                                                           ,p_lookup_code    => l_component_type_code
239524                                                                          )
239525                                     ,p_token_4                 => 'PRODUCT_NAME'
239526                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
239527                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
239528                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
239529                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
239530                                     ,p_ae_header_id            =>  NULL
239531                                        );
239532 
239533         IF (C_LEVEL_ERROR>= g_log_level) THEN
239534                  trace
239535                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
239536                       ,p_level    => C_LEVEL_ERROR
239537                       ,p_module   => l_log_module);
239538         END IF;
239539       END IF;
239540    END IF;
239541    --
239542    --
239543    ------------------------------------------------------------------------------------------------
239544    -- 4219869 Business Flow
239545    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
239546    -- Prior Entry.  Currently, the following code is always generated.
239547    ------------------------------------------------------------------------------------------------
239548    XLA_AE_LINES_PKG.ValidateCurrentLine;
239549 
239550    ------------------------------------------------------------------------------------
239551    -- 4219869 Business Flow
239552    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
239553    ------------------------------------------------------------------------------------
239554    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
239555 
239556    ----------------------------------------------------------------------------------
239557    -- 4219869 Business Flow
239558    -- Update journal entry status -- Need to generate this within IF <condition>
239559    ----------------------------------------------------------------------------------
239560    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
239561          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
239562          ,p_balance_type_code => l_balance_type_code
239563          );
239564 
239565    -------------------------------------------------------------------------------------------
239566    -- 4262811 - Generate the Accrual Reversal lines
239567    -------------------------------------------------------------------------------------------
239568    BEGIN
239569       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
239570                               (g_array_event(p_event_id).array_value_num('header_index'));
239571       IF l_acc_rev_flag IS NULL THEN
239572          l_acc_rev_flag := 'N';
239573       END IF;
239574    EXCEPTION
239575       WHEN OTHERS THEN
239576          l_acc_rev_flag := 'N';
239577    END;
239578    --
239579    IF (l_acc_rev_flag = 'Y') THEN
239580 
239581        -- 4645092  ------------------------------------------------------------------------------
239582        -- To allow MPA report to determine if it should generate report process
239583        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
239584        ------------------------------------------------------------------------------------------
239585 
239586        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
239587        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
239588    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
239589    -- call ADRs
239590    -- Bug 4922099
239591    --
239592    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
239593         (NVL(l_actual_upg_option, 'N') = 'O') OR
239594         (NVL(l_enc_upg_option, 'N') = 'O')
239595       )
239596    THEN
239597    NULL;
239598    --
239599    --
239600    
239601   l_ccid := AcctDerRule_26(
239602            p_application_id           => p_application_id
239603          , p_ae_header_id             => l_ae_header_id 
239604 , p_source_46 => p_source_46
239605          , x_transaction_coa_id       => l_adr_transaction_coa_id
239606          , x_accounting_coa_id        => l_adr_accounting_coa_id
239607          , x_value_type_code          => l_adr_value_type_code
239608          , p_side                     => 'NA'
239609    );
239610 
239611    xla_ae_lines_pkg.set_ccid(
239612     p_code_combination_id          => l_ccid
239613   , p_value_type_code              => l_adr_value_type_code
239614   , p_transaction_coa_id           => l_adr_transaction_coa_id
239615   , p_accounting_coa_id            => l_adr_accounting_coa_id
239616   , p_adr_code                     => 'PI_INTRANSIT_BRIDGING'
239617   , p_adr_type_code                => 'S'
239618   , p_component_type               => l_component_type
239619   , p_component_code               => l_component_code
239620   , p_component_type_code          => l_component_type_code
239621   , p_component_appl_id            => l_component_appl_id
239622   , p_amb_context_code             => l_amb_context_code
239623   , p_side                         => 'NA'
239624   );
239625 
239626 
239627    --
239628    --
239629    END IF;
239630 
239631        --
239632        -- Update the line information that should be overwritten
239633        --
239634        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
239635                                          p_header_num   => 1);
239636        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
239637 
239638        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
239639 
239640        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
239641           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
239642        END IF;
239643 
239644       --
239645       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
239646       --
239647       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
239648           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
239649       ELSE
239650           ---------------------------------------------------------------------------------------------------
239651           -- 4262811a Switch Sign
239652           ---------------------------------------------------------------------------------------------------
239653           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
239654           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
239655                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
239656           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
239657                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
239658           -- 5132302
239659           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
239660                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
239661 
239662       END IF;
239663 
239664       -- 4955764
239665       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
239666       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
239667 
239668 
239669       XLA_AE_LINES_PKG.ValidateCurrentLine;
239670       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
239671 
239672       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
239673                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
239674                ,p_balance_type_code => l_balance_type_code);
239675 
239676    END IF;
239677 
239678    -----------------------------------------------------------------------------------------
239679    -- 4262811 Multiperiod Accounting
239680    -----------------------------------------------------------------------------------------
239681      -- No MPA option is assigned.
239682 
239683 
239684 END IF;
239685 END IF;
239686 --
239687 
239688 --
239689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
239690    trace
239691       (p_msg      => 'END of AcctLineType_432'
239692       ,p_level    => C_LEVEL_PROCEDURE
239693       ,p_module   => l_log_module);
239694 END IF;
239695 --
239696 EXCEPTION
239697   WHEN xla_exceptions_pkg.application_exception THEN
239698       RAISE;
239699   WHEN OTHERS THEN
239700        xla_exceptions_pkg.raise_message
239701            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_432');
239702 END AcctLineType_432;
239703 --
239704 
239705 ---------------------------------------
239706 --
239707 -- PRIVATE FUNCTION
239708 --         AcctLineType_433
239709 --
239710 ---------------------------------------
239711 PROCEDURE AcctLineType_433 (
239712   p_application_id        IN NUMBER
239713  ,p_event_id              IN NUMBER
239714  ,p_calculate_acctd_flag  IN VARCHAR2
239715  ,p_calculate_g_l_flag    IN VARCHAR2
239716  ,p_actual_flag           IN OUT VARCHAR2
239717  ,p_balance_type_code     OUT VARCHAR2
239718  ,p_gain_or_loss_ref      OUT VARCHAR2
239719  
239720 --TRANSACTION_ID
239721  , p_source_1            IN NUMBER
239722 --Item Concatenated Segments
239723  , p_source_2            IN VARCHAR2
239724 --Transaction Quantity
239725  , p_source_3            IN NUMBER
239726 --Transaction Unit of Measure Code
239727  , p_source_4            IN VARCHAR2
239728 --Inventory Transaction Type Description
239729  , p_source_5            IN VARCHAR2
239730 --Interorg Expense Account
239731  , p_source_34            IN NUMBER
239732 --DISTRIBUTION_IDENTIFIER
239733  , p_source_84            IN NUMBER
239734 --Distribution Type
239735  , p_source_85            IN VARCHAR2
239736  , p_source_85_meaning    IN VARCHAR2
239737 --Entered Currency Code
239738  , p_source_88            IN VARCHAR2
239739 --Entered Amount
239740  , p_source_91            IN NUMBER
239741 --Currency Conversion Date
239742  , p_source_92            IN DATE
239743 --Currency Conversion Rate
239744  , p_source_93            IN NUMBER
239745 --Currency Conversion Type
239746  , p_source_94            IN VARCHAR2
239747 --Accounted Amount
239748  , p_source_95            IN NUMBER
239749 --Accounting Line Type
239750  , p_source_97            IN NUMBER
239751 )
239752 IS
239753 
239754 l_component_type              VARCHAR2(80);
239755 l_component_code              VARCHAR2(30);
239756 l_component_type_code         VARCHAR2(1);
239757 l_component_appl_id           INTEGER;
239758 l_amb_context_code            VARCHAR2(30);
239759 l_entity_code                 VARCHAR2(30);
239760 l_event_class_code            VARCHAR2(30);
239761 l_ae_header_id                NUMBER;
239762 l_event_type_code             VARCHAR2(30);
239763 l_line_definition_code        VARCHAR2(30);
239764 l_line_definition_owner_code  VARCHAR2(1);
239765 --
239766 -- adr variables
239767 l_segment                     VARCHAR2(30);
239768 l_ccid                        NUMBER;
239769 l_adr_transaction_coa_id      NUMBER;
239770 l_adr_accounting_coa_id       NUMBER;
239771 l_adr_flexfield_segment_code  VARCHAR2(30);
239772 l_adr_flex_value_set_id       NUMBER;
239773 l_adr_value_type_code         VARCHAR2(30);
239774 l_adr_value_combination_id    NUMBER;
239775 l_adr_value_segment_code      VARCHAR2(30);
239776 
239777 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
239778 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
239779 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
239780 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
239781 
239782 -- 4262811 Variables ------------------------------------------------------------------------------------------
239783 l_entered_amt_idx             NUMBER;
239784 l_accted_amt_idx              NUMBER;
239785 l_acc_rev_flag                VARCHAR2(1);
239786 l_accrual_line_num            NUMBER;
239787 l_tmp_amt                     NUMBER;
239788 l_acc_rev_natural_side_code   VARCHAR2(1);
239789 
239790 l_num_entries                 NUMBER;
239791 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
239792 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
239793 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
239794 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
239795 l_recog_line_1                NUMBER;
239796 l_recog_line_2                NUMBER;
239797 
239798 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
239799 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
239800 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
239801 
239802 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
239803 
239804 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
239805 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
239806 
239807 ---------------------------------------------------------------------------------------------------------------
239808 
239809 
239810 --
239811 -- bulk performance
239812 --
239813 l_balance_type_code           VARCHAR2(1);
239814 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
239815 l_log_module                  VARCHAR2(240);
239816 
239817 --
239818 -- Upgrade strategy
239819 --
239820 l_actual_upg_option           VARCHAR2(1);
239821 l_enc_upg_option           VARCHAR2(1);
239822 
239823 --
239824 BEGIN
239825 --
239826 IF g_log_enabled THEN
239827       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_433';
239828 END IF;
239829 --
239830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
239831 
239832       trace
239833          (p_msg      => 'BEGIN of AcctLineType_433'
239834          ,p_level    => C_LEVEL_PROCEDURE
239835          ,p_module   => l_log_module);
239836 
239837 END IF;
239838 --
239839 l_component_type             := 'AMB_JLT';
239840 l_component_code             := 'PI_INTRANSIT_EXPENSE_212';
239841 l_component_type_code        := 'S';
239842 l_component_appl_id          :=  707;
239843 l_amb_context_code           := 'DEFAULT';
239844 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
239845 l_event_class_code           := 'USER_DEFINE';
239846 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
239847 l_line_definition_owner_code := 'S';
239848 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
239849 --
239850 l_balance_type_code          := 'A';
239851 l_segment                     := NULL;
239852 l_ccid                        := NULL;
239853 l_adr_transaction_coa_id      := NULL;
239854 l_adr_accounting_coa_id       := NULL;
239855 l_adr_flexfield_segment_code  := NULL;
239856 l_adr_flex_value_set_id       := NULL;
239857 l_adr_value_type_code         := NULL;
239858 l_adr_value_combination_id    := NULL;
239859 l_adr_value_segment_code      := NULL;
239860 
239861 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
239862 l_bflow_class_code           := '';    -- 4219869 Business Flow
239863 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
239864 l_budgetary_control_flag     := 'N';
239865 
239866 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
239867 l_bflow_applied_to_amt       := NULL; -- 5132302
239868 l_entered_amt_idx            := NULL;          -- 4262811
239869 l_accted_amt_idx             := NULL;          -- 4262811
239870 l_acc_rev_flag               := NULL;          -- 4262811
239871 l_accrual_line_num           := NULL;          -- 4262811
239872 l_tmp_amt                    := NULL;          -- 4262811
239873 --
239874  
239875 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
239876     l_balance_type_code <> 'B' THEN
239877 IF NVL(p_source_97,9E125) =  14
239878  THEN 
239879 
239880    --
239881    XLA_AE_LINES_PKG.SetNewLine;
239882 
239883    p_balance_type_code          := l_balance_type_code;
239884    -- set the flag so later we will know whether the gain loss line needs to be created
239885    
239886    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
239887      p_actual_flag :='A';
239888    END IF;
239889 
239890    --
239891    -- bulk performance
239892    --
239893    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
239894                                       p_header_num   => 0); -- 4262811
239895    --
239896    -- set accounting line options
239897    --
239898    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
239899            p_natural_side_code          => 'D'
239900          , p_gain_or_loss_flag          => 'N'
239901          , p_gl_transfer_mode_code      => 'S'
239902          , p_acct_entry_type_code       => 'A'
239903          , p_switch_side_flag           => 'Y'
239904          , p_merge_duplicate_code       => 'N'
239905          );
239906    --
239907    l_acc_rev_natural_side_code := 'C';  -- 4262811
239908    -- 
239909    --
239910    -- set accounting line type info
239911    --
239912    xla_ae_lines_pkg.SetAcctLineType
239913       (p_component_type             => l_component_type
239914       ,p_event_type_code            => l_event_type_code
239915       ,p_line_definition_owner_code => l_line_definition_owner_code
239916       ,p_line_definition_code       => l_line_definition_code
239917       ,p_accounting_line_code       => l_component_code
239918       ,p_accounting_line_type_code  => l_component_type_code
239919       ,p_accounting_line_appl_id    => l_component_appl_id
239920       ,p_amb_context_code           => l_amb_context_code
239921       ,p_entity_code                => l_entity_code
239922       ,p_event_class_code           => l_event_class_code);
239923    --
239924    -- set accounting class
239925    --
239926    xla_ae_lines_pkg.SetAcctClass(
239927            p_accounting_class_code  => 'EXPENSE'
239928          , p_ae_header_id           => l_ae_header_id
239929          );
239930 
239931    --
239932    -- set rounding class
239933    --
239934    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
239935                       'EXPENSE';
239936 
239937    --
239938    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
239939    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
239940    --
239941    -- bulk performance
239942    --
239943    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
239944 
239945    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
239946       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
239947 
239948    -- 4955764
239949    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
239950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
239951 
239952    -- 4458381 Public Sector Enh
239953    
239954    --
239955    -- set accounting attributes for the line type
239956    --
239957    l_entered_amt_idx := 3;
239958    l_accted_amt_idx  := 8;
239959    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
239960    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
239961    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
239962    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
239963    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
239964    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
239965    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
239966    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
239967    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
239968    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
239969    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
239970    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
239971    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
239972    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
239973    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
239974    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
239975    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
239976 
239977    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
239978    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
239979 
239980    ---------------------------------------------------------------------------------------------------------------
239981    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
239982    ---------------------------------------------------------------------------------------------------------------
239983    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
239984 
239985    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
239986    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
239987 
239988    IF xla_accounting_cache_pkg.GetValueChar
239989          (p_source_code         => 'LEDGER_CATEGORY_CODE'
239990          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
239991    AND l_bflow_method_code = 'PRIOR_ENTRY'
239992 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
239993    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
239994          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
239995        )
239996    THEN
239997          xla_ae_lines_pkg.BflowUpgEntry
239998            (p_business_method_code    => l_bflow_method_code
239999            ,p_business_class_code     => l_bflow_class_code
240000            ,p_balance_type            => l_balance_type_code);
240001    ELSE
240002       NULL;
240003 -- No business flow processing for business flow method of NONE.
240004    END IF;
240005 
240006    --
240007    -- call analytical criteria
240008    --
240009    
240010    --
240011    -- call description
240012    --
240013    
240014 xla_ae_lines_pkg.SetLineDescription(
240015    p_ae_header_id => l_ae_header_id
240016   ,p_description  => Description_1 (
240017      p_application_id         => p_application_id
240018    , p_ae_header_id           => l_ae_header_id 
240019 , p_source_1 => p_source_1
240020 , p_source_2 => p_source_2
240021 , p_source_3 => p_source_3
240022 , p_source_4 => p_source_4
240023 , p_source_5 => p_source_5
240024    )
240025 );
240026 
240027 
240028    --
240029    -- call ADRs
240030    -- Bug 4922099
240031    --
240032    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
240033         (NVL(l_actual_upg_option, 'N') = 'O') OR
240034         (NVL(l_enc_upg_option, 'N') = 'O')
240035       )
240036    THEN
240037    NULL;
240038    --
240039    --
240040    
240041   l_ccid := AcctDerRule_19(
240042            p_application_id           => p_application_id
240043          , p_ae_header_id             => l_ae_header_id 
240044 , p_source_34 => p_source_34
240045          , x_transaction_coa_id       => l_adr_transaction_coa_id
240046          , x_accounting_coa_id        => l_adr_accounting_coa_id
240047          , x_value_type_code          => l_adr_value_type_code
240048          , p_side                     => 'NA'
240049    );
240050 
240051    xla_ae_lines_pkg.set_ccid(
240052     p_code_combination_id          => l_ccid
240053   , p_value_type_code              => l_adr_value_type_code
240054   , p_transaction_coa_id           => l_adr_transaction_coa_id
240055   , p_accounting_coa_id            => l_adr_accounting_coa_id
240056   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
240057   , p_adr_type_code                => 'S'
240058   , p_component_type               => l_component_type
240059   , p_component_code               => l_component_code
240060   , p_component_type_code          => l_component_type_code
240061   , p_component_appl_id            => l_component_appl_id
240062   , p_amb_context_code             => l_amb_context_code
240063   , p_side                         => 'NA'
240064   );
240065 
240066 
240067    --
240068    --
240069    END IF;
240070    --
240071    -- Bug 4922099
240072    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
240073           (NVL(l_enc_upg_option, 'N') = 'O')
240074         ) AND
240075         (l_bflow_method_code = 'PRIOR_ENTRY')
240076       )
240077    THEN
240078       IF
240079       --
240080       1 = 2
240081       --
240082       THEN
240083       xla_accounting_err_pkg.build_message
240084                                     (p_appli_s_name            => 'XLA'
240085                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
240086                                     ,p_token_1                 => 'LINE_NUMBER'
240087                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
240088                                     ,p_token_2                 => 'LINE_TYPE_NAME'
240089                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
240090                                                                              l_component_type
240091                                                                             ,l_component_code
240092                                                                             ,l_component_type_code
240093                                                                             ,l_component_appl_id
240094                                                                             ,l_amb_context_code
240095                                                                             ,l_entity_code
240096                                                                             ,l_event_class_code
240097                                                                            )
240098                                     ,p_token_3                 => 'OWNER'
240099                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
240100                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
240101                                                                           ,p_lookup_code    => l_component_type_code
240102                                                                          )
240103                                     ,p_token_4                 => 'PRODUCT_NAME'
240104                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
240105                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
240106                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
240107                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
240108                                     ,p_ae_header_id            =>  NULL
240109                                        );
240110 
240111         IF (C_LEVEL_ERROR>= g_log_level) THEN
240112                  trace
240113                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
240114                       ,p_level    => C_LEVEL_ERROR
240115                       ,p_module   => l_log_module);
240116         END IF;
240117       END IF;
240118    END IF;
240119    --
240120    --
240121    ------------------------------------------------------------------------------------------------
240122    -- 4219869 Business Flow
240123    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
240124    -- Prior Entry.  Currently, the following code is always generated.
240125    ------------------------------------------------------------------------------------------------
240126    XLA_AE_LINES_PKG.ValidateCurrentLine;
240127 
240128    ------------------------------------------------------------------------------------
240129    -- 4219869 Business Flow
240130    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
240131    ------------------------------------------------------------------------------------
240132    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
240133 
240134    ----------------------------------------------------------------------------------
240135    -- 4219869 Business Flow
240136    -- Update journal entry status -- Need to generate this within IF <condition>
240137    ----------------------------------------------------------------------------------
240138    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
240139          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
240140          ,p_balance_type_code => l_balance_type_code
240141          );
240142 
240143    -------------------------------------------------------------------------------------------
240144    -- 4262811 - Generate the Accrual Reversal lines
240145    -------------------------------------------------------------------------------------------
240146    BEGIN
240147       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
240148                               (g_array_event(p_event_id).array_value_num('header_index'));
240149       IF l_acc_rev_flag IS NULL THEN
240150          l_acc_rev_flag := 'N';
240151       END IF;
240152    EXCEPTION
240153       WHEN OTHERS THEN
240154          l_acc_rev_flag := 'N';
240155    END;
240156    --
240157    IF (l_acc_rev_flag = 'Y') THEN
240158 
240159        -- 4645092  ------------------------------------------------------------------------------
240160        -- To allow MPA report to determine if it should generate report process
240161        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
240162        ------------------------------------------------------------------------------------------
240163 
240164        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
240165        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
240166    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
240167    -- call ADRs
240168    -- Bug 4922099
240169    --
240170    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
240171         (NVL(l_actual_upg_option, 'N') = 'O') OR
240172         (NVL(l_enc_upg_option, 'N') = 'O')
240173       )
240174    THEN
240175    NULL;
240176    --
240177    --
240178    
240179   l_ccid := AcctDerRule_19(
240180            p_application_id           => p_application_id
240181          , p_ae_header_id             => l_ae_header_id 
240182 , p_source_34 => p_source_34
240183          , x_transaction_coa_id       => l_adr_transaction_coa_id
240184          , x_accounting_coa_id        => l_adr_accounting_coa_id
240185          , x_value_type_code          => l_adr_value_type_code
240186          , p_side                     => 'NA'
240187    );
240188 
240189    xla_ae_lines_pkg.set_ccid(
240190     p_code_combination_id          => l_ccid
240191   , p_value_type_code              => l_adr_value_type_code
240192   , p_transaction_coa_id           => l_adr_transaction_coa_id
240193   , p_accounting_coa_id            => l_adr_accounting_coa_id
240194   , p_adr_code                     => 'PI_INTERORG_EXPENSE'
240195   , p_adr_type_code                => 'S'
240196   , p_component_type               => l_component_type
240197   , p_component_code               => l_component_code
240198   , p_component_type_code          => l_component_type_code
240199   , p_component_appl_id            => l_component_appl_id
240200   , p_amb_context_code             => l_amb_context_code
240201   , p_side                         => 'NA'
240202   );
240203 
240204 
240205    --
240206    --
240207    END IF;
240208 
240209        --
240210        -- Update the line information that should be overwritten
240211        --
240212        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
240213                                          p_header_num   => 1);
240214        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
240215 
240216        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
240217 
240218        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
240219           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
240220        END IF;
240221 
240222       --
240223       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
240224       --
240225       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
240226           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
240227       ELSE
240228           ---------------------------------------------------------------------------------------------------
240229           -- 4262811a Switch Sign
240230           ---------------------------------------------------------------------------------------------------
240231           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
240232           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
240233                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
240234           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
240235                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
240236           -- 5132302
240237           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
240238                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
240239 
240240       END IF;
240241 
240242       -- 4955764
240243       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
240244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
240245 
240246 
240247       XLA_AE_LINES_PKG.ValidateCurrentLine;
240248       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
240249 
240250       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
240251                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
240252                ,p_balance_type_code => l_balance_type_code);
240253 
240254    END IF;
240255 
240256    -----------------------------------------------------------------------------------------
240257    -- 4262811 Multiperiod Accounting
240258    -----------------------------------------------------------------------------------------
240259      -- No MPA option is assigned.
240260 
240261 
240262 END IF;
240263 END IF;
240264 --
240265 
240266 --
240267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
240268    trace
240269       (p_msg      => 'END of AcctLineType_433'
240270       ,p_level    => C_LEVEL_PROCEDURE
240271       ,p_module   => l_log_module);
240272 END IF;
240273 --
240274 EXCEPTION
240275   WHEN xla_exceptions_pkg.application_exception THEN
240276       RAISE;
240277   WHEN OTHERS THEN
240278        xla_exceptions_pkg.raise_message
240279            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_433');
240280 END AcctLineType_433;
240281 --
240282 
240283 ---------------------------------------
240284 --
240285 -- PRIVATE FUNCTION
240286 --         AcctLineType_434
240287 --
240288 ---------------------------------------
240289 PROCEDURE AcctLineType_434 (
240290   p_application_id        IN NUMBER
240291  ,p_event_id              IN NUMBER
240292  ,p_calculate_acctd_flag  IN VARCHAR2
240293  ,p_calculate_g_l_flag    IN VARCHAR2
240294  ,p_actual_flag           IN OUT VARCHAR2
240295  ,p_balance_type_code     OUT VARCHAR2
240296  ,p_gain_or_loss_ref      OUT VARCHAR2
240297  
240298 --TRANSACTION_ID
240299  , p_source_1            IN NUMBER
240300 --Item Concatenated Segments
240301  , p_source_2            IN VARCHAR2
240302 --Transaction Quantity
240303  , p_source_3            IN NUMBER
240304 --Transaction Unit of Measure Code
240305  , p_source_4            IN VARCHAR2
240306 --Inventory Transaction Type Description
240307  , p_source_5            IN VARCHAR2
240308 --Product Line Accounting Category Bridging Account
240309  , p_source_22            IN NUMBER
240310 --Cost Group Identifier
240311  , p_source_26            IN NUMBER
240312 --INV Header Transfer Cost Group ID
240313  , p_source_27            IN NUMBER
240314 --INV Header Cost Group ID
240315  , p_source_28            IN NUMBER
240316 --Subinventory Name
240317  , p_source_29            IN VARCHAR2
240318 --INV Header Subinventory
240319  , p_source_30            IN VARCHAR2
240320 --Transfer to Subinventory or Cost Group category bridging account
240321  , p_source_47            IN NUMBER
240322 --DISTRIBUTION_IDENTIFIER
240323  , p_source_84            IN NUMBER
240324 --Distribution Type
240325  , p_source_85            IN VARCHAR2
240326  , p_source_85_meaning    IN VARCHAR2
240327 --Entered Currency Code
240328  , p_source_88            IN VARCHAR2
240329 --Entered Amount
240330  , p_source_91            IN NUMBER
240331 --Currency Conversion Date
240332  , p_source_92            IN DATE
240333 --Currency Conversion Rate
240334  , p_source_93            IN NUMBER
240335 --Currency Conversion Type
240336  , p_source_94            IN VARCHAR2
240337 --Accounted Amount
240338  , p_source_95            IN NUMBER
240339 --Accounting Line Type
240340  , p_source_97            IN NUMBER
240341 )
240342 IS
240343 
240344 l_component_type              VARCHAR2(80);
240345 l_component_code              VARCHAR2(30);
240346 l_component_type_code         VARCHAR2(1);
240347 l_component_appl_id           INTEGER;
240348 l_amb_context_code            VARCHAR2(30);
240349 l_entity_code                 VARCHAR2(30);
240350 l_event_class_code            VARCHAR2(30);
240351 l_ae_header_id                NUMBER;
240352 l_event_type_code             VARCHAR2(30);
240353 l_line_definition_code        VARCHAR2(30);
240354 l_line_definition_owner_code  VARCHAR2(1);
240355 --
240356 -- adr variables
240357 l_segment                     VARCHAR2(30);
240358 l_ccid                        NUMBER;
240359 l_adr_transaction_coa_id      NUMBER;
240360 l_adr_accounting_coa_id       NUMBER;
240361 l_adr_flexfield_segment_code  VARCHAR2(30);
240362 l_adr_flex_value_set_id       NUMBER;
240363 l_adr_value_type_code         VARCHAR2(30);
240364 l_adr_value_combination_id    NUMBER;
240365 l_adr_value_segment_code      VARCHAR2(30);
240366 
240367 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
240368 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
240369 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
240370 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
240371 
240372 -- 4262811 Variables ------------------------------------------------------------------------------------------
240373 l_entered_amt_idx             NUMBER;
240374 l_accted_amt_idx              NUMBER;
240375 l_acc_rev_flag                VARCHAR2(1);
240376 l_accrual_line_num            NUMBER;
240377 l_tmp_amt                     NUMBER;
240378 l_acc_rev_natural_side_code   VARCHAR2(1);
240379 
240380 l_num_entries                 NUMBER;
240381 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
240382 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
240383 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
240384 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
240385 l_recog_line_1                NUMBER;
240386 l_recog_line_2                NUMBER;
240387 
240388 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
240389 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
240390 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
240391 
240392 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
240393 
240394 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
240395 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
240396 
240397 ---------------------------------------------------------------------------------------------------------------
240398 
240399 
240400 --
240401 -- bulk performance
240402 --
240403 l_balance_type_code           VARCHAR2(1);
240404 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
240405 l_log_module                  VARCHAR2(240);
240406 
240407 --
240408 -- Upgrade strategy
240409 --
240410 l_actual_upg_option           VARCHAR2(1);
240411 l_enc_upg_option           VARCHAR2(1);
240412 
240413 --
240414 BEGIN
240415 --
240416 IF g_log_enabled THEN
240417       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_434';
240418 END IF;
240419 --
240420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
240421 
240422       trace
240423          (p_msg      => 'BEGIN of AcctLineType_434'
240424          ,p_level    => C_LEVEL_PROCEDURE
240425          ,p_module   => l_log_module);
240426 
240427 END IF;
240428 --
240429 l_component_type             := 'AMB_JLT';
240430 l_component_code             := 'PI_INTRAORG_TXFR_SUB_TXFR_BRID';
240431 l_component_type_code        := 'S';
240432 l_component_appl_id          :=  707;
240433 l_amb_context_code           := 'DEFAULT';
240434 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
240435 l_event_class_code           := 'USER_DEFINE';
240436 l_event_type_code            := 'UCG_TXFR';
240437 l_line_definition_owner_code := 'S';
240438 l_line_definition_code       := 'PI_CG_TXFR';
240439 --
240440 l_balance_type_code          := 'A';
240441 l_segment                     := NULL;
240442 l_ccid                        := NULL;
240443 l_adr_transaction_coa_id      := NULL;
240444 l_adr_accounting_coa_id       := NULL;
240445 l_adr_flexfield_segment_code  := NULL;
240446 l_adr_flex_value_set_id       := NULL;
240447 l_adr_value_type_code         := NULL;
240448 l_adr_value_combination_id    := NULL;
240449 l_adr_value_segment_code      := NULL;
240450 
240451 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
240452 l_bflow_class_code           := '';    -- 4219869 Business Flow
240453 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
240454 l_budgetary_control_flag     := 'N';
240455 
240456 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
240457 l_bflow_applied_to_amt       := NULL; -- 5132302
240458 l_entered_amt_idx            := NULL;          -- 4262811
240459 l_accted_amt_idx             := NULL;          -- 4262811
240460 l_acc_rev_flag               := NULL;          -- 4262811
240461 l_accrual_line_num           := NULL;          -- 4262811
240462 l_tmp_amt                    := NULL;          -- 4262811
240463 --
240464  
240465 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
240466     l_balance_type_code <> 'B' THEN
240467 IF NVL(p_source_97,9E125) =  1
240468  THEN 
240469 
240470    --
240471    XLA_AE_LINES_PKG.SetNewLine;
240472 
240473    p_balance_type_code          := l_balance_type_code;
240474    -- set the flag so later we will know whether the gain loss line needs to be created
240475    
240476    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
240477      p_actual_flag :='A';
240478    END IF;
240479 
240480    --
240481    -- bulk performance
240482    --
240483    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
240484                                       p_header_num   => 0); -- 4262811
240485    --
240486    -- set accounting line options
240487    --
240488    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
240489            p_natural_side_code          => 'C'
240490          , p_gain_or_loss_flag          => 'N'
240491          , p_gl_transfer_mode_code      => 'S'
240492          , p_acct_entry_type_code       => 'A'
240493          , p_switch_side_flag           => 'Y'
240494          , p_merge_duplicate_code       => 'N'
240495          );
240496    --
240497    l_acc_rev_natural_side_code := 'D';  -- 4262811
240498    -- 
240499    --
240500    -- set accounting line type info
240501    --
240502    xla_ae_lines_pkg.SetAcctLineType
240503       (p_component_type             => l_component_type
240504       ,p_event_type_code            => l_event_type_code
240505       ,p_line_definition_owner_code => l_line_definition_owner_code
240506       ,p_line_definition_code       => l_line_definition_code
240507       ,p_accounting_line_code       => l_component_code
240508       ,p_accounting_line_type_code  => l_component_type_code
240509       ,p_accounting_line_appl_id    => l_component_appl_id
240510       ,p_amb_context_code           => l_amb_context_code
240511       ,p_entity_code                => l_entity_code
240512       ,p_event_class_code           => l_event_class_code);
240513    --
240514    -- set accounting class
240515    --
240516    xla_ae_lines_pkg.SetAcctClass(
240517            p_accounting_class_code  => 'BRIDGING'
240518          , p_ae_header_id           => l_ae_header_id
240519          );
240520 
240521    --
240522    -- set rounding class
240523    --
240524    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
240525                       'BRIDGING';
240526 
240527    --
240528    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
240529    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
240530    --
240531    -- bulk performance
240532    --
240533    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
240534 
240535    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
240536       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
240537 
240538    -- 4955764
240539    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
240540       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
240541 
240542    -- 4458381 Public Sector Enh
240543    
240544    --
240545    -- set accounting attributes for the line type
240546    --
240547    l_entered_amt_idx := 3;
240548    l_accted_amt_idx  := 8;
240549    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
240550    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
240551    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
240552    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
240553    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
240554    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
240555    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
240556    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
240557    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
240558    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
240559    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
240560    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
240561    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
240562    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
240563    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
240564    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
240565    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
240566 
240567    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
240568    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
240569 
240570    ---------------------------------------------------------------------------------------------------------------
240571    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
240572    ---------------------------------------------------------------------------------------------------------------
240573    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
240574 
240575    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
240576    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
240577 
240578    IF xla_accounting_cache_pkg.GetValueChar
240579          (p_source_code         => 'LEDGER_CATEGORY_CODE'
240580          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
240581    AND l_bflow_method_code = 'PRIOR_ENTRY'
240582 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
240583    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
240584          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
240585        )
240586    THEN
240587          xla_ae_lines_pkg.BflowUpgEntry
240588            (p_business_method_code    => l_bflow_method_code
240589            ,p_business_class_code     => l_bflow_class_code
240590            ,p_balance_type            => l_balance_type_code);
240591    ELSE
240592       NULL;
240593 -- No business flow processing for business flow method of NONE.
240594    END IF;
240595 
240596    --
240597    -- call analytical criteria
240598    --
240599    
240600    --
240601    -- call description
240602    --
240603    
240604 xla_ae_lines_pkg.SetLineDescription(
240605    p_ae_header_id => l_ae_header_id
240606   ,p_description  => Description_1 (
240607      p_application_id         => p_application_id
240608    , p_ae_header_id           => l_ae_header_id 
240609 , p_source_1 => p_source_1
240610 , p_source_2 => p_source_2
240611 , p_source_3 => p_source_3
240612 , p_source_4 => p_source_4
240613 , p_source_5 => p_source_5
240614    )
240615 );
240616 
240617 
240618    --
240619    -- call ADRs
240620    -- Bug 4922099
240621    --
240622    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
240623         (NVL(l_actual_upg_option, 'N') = 'O') OR
240624         (NVL(l_enc_upg_option, 'N') = 'O')
240625       )
240626    THEN
240627    NULL;
240628    --
240629    --
240630    
240631   l_ccid := AcctDerRule_27(
240632            p_application_id           => p_application_id
240633          , p_ae_header_id             => l_ae_header_id 
240634 , p_source_22 => p_source_22
240635 , p_source_26 => p_source_26
240636 , p_source_27 => p_source_27
240637 , p_source_28 => p_source_28
240638 , p_source_29 => p_source_29
240639 , p_source_30 => p_source_30
240640 , p_source_47 => p_source_47
240641          , x_transaction_coa_id       => l_adr_transaction_coa_id
240642          , x_accounting_coa_id        => l_adr_accounting_coa_id
240643          , x_value_type_code          => l_adr_value_type_code
240644          , p_side                     => 'NA'
240645    );
240646 
240647    xla_ae_lines_pkg.set_ccid(
240648     p_code_combination_id          => l_ccid
240649   , p_value_type_code              => l_adr_value_type_code
240650   , p_transaction_coa_id           => l_adr_transaction_coa_id
240651   , p_accounting_coa_id            => l_adr_accounting_coa_id
240652   , p_adr_code                     => 'PI_INTRAORG_TRX_BRIDGING_ADR'
240653   , p_adr_type_code                => 'S'
240654   , p_component_type               => l_component_type
240655   , p_component_code               => l_component_code
240656   , p_component_type_code          => l_component_type_code
240657   , p_component_appl_id            => l_component_appl_id
240658   , p_amb_context_code             => l_amb_context_code
240659   , p_side                         => 'NA'
240660   );
240661 
240662 
240663    --
240664    --
240665    END IF;
240666    --
240667    -- Bug 4922099
240668    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
240669           (NVL(l_enc_upg_option, 'N') = 'O')
240670         ) AND
240671         (l_bflow_method_code = 'PRIOR_ENTRY')
240672       )
240673    THEN
240674       IF
240675       --
240676       1 = 2
240677       --
240678       THEN
240679       xla_accounting_err_pkg.build_message
240680                                     (p_appli_s_name            => 'XLA'
240681                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
240682                                     ,p_token_1                 => 'LINE_NUMBER'
240683                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
240684                                     ,p_token_2                 => 'LINE_TYPE_NAME'
240685                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
240686                                                                              l_component_type
240687                                                                             ,l_component_code
240688                                                                             ,l_component_type_code
240689                                                                             ,l_component_appl_id
240690                                                                             ,l_amb_context_code
240691                                                                             ,l_entity_code
240692                                                                             ,l_event_class_code
240693                                                                            )
240694                                     ,p_token_3                 => 'OWNER'
240695                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
240696                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
240697                                                                           ,p_lookup_code    => l_component_type_code
240698                                                                          )
240699                                     ,p_token_4                 => 'PRODUCT_NAME'
240700                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
240701                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
240702                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
240703                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
240704                                     ,p_ae_header_id            =>  NULL
240705                                        );
240706 
240707         IF (C_LEVEL_ERROR>= g_log_level) THEN
240708                  trace
240709                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
240710                       ,p_level    => C_LEVEL_ERROR
240711                       ,p_module   => l_log_module);
240712         END IF;
240713       END IF;
240714    END IF;
240715    --
240716    --
240717    ------------------------------------------------------------------------------------------------
240718    -- 4219869 Business Flow
240719    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
240720    -- Prior Entry.  Currently, the following code is always generated.
240721    ------------------------------------------------------------------------------------------------
240722    XLA_AE_LINES_PKG.ValidateCurrentLine;
240723 
240724    ------------------------------------------------------------------------------------
240725    -- 4219869 Business Flow
240726    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
240727    ------------------------------------------------------------------------------------
240728    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
240729 
240730    ----------------------------------------------------------------------------------
240731    -- 4219869 Business Flow
240732    -- Update journal entry status -- Need to generate this within IF <condition>
240733    ----------------------------------------------------------------------------------
240734    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
240735          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
240736          ,p_balance_type_code => l_balance_type_code
240737          );
240738 
240739    -------------------------------------------------------------------------------------------
240740    -- 4262811 - Generate the Accrual Reversal lines
240741    -------------------------------------------------------------------------------------------
240742    BEGIN
240743       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
240744                               (g_array_event(p_event_id).array_value_num('header_index'));
240745       IF l_acc_rev_flag IS NULL THEN
240746          l_acc_rev_flag := 'N';
240747       END IF;
240748    EXCEPTION
240749       WHEN OTHERS THEN
240750          l_acc_rev_flag := 'N';
240751    END;
240752    --
240753    IF (l_acc_rev_flag = 'Y') THEN
240754 
240755        -- 4645092  ------------------------------------------------------------------------------
240756        -- To allow MPA report to determine if it should generate report process
240757        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
240758        ------------------------------------------------------------------------------------------
240759 
240760        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
240761        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
240762    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
240763    -- call ADRs
240764    -- Bug 4922099
240765    --
240766    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
240767         (NVL(l_actual_upg_option, 'N') = 'O') OR
240768         (NVL(l_enc_upg_option, 'N') = 'O')
240769       )
240770    THEN
240771    NULL;
240772    --
240773    --
240774    
240775   l_ccid := AcctDerRule_27(
240776            p_application_id           => p_application_id
240777          , p_ae_header_id             => l_ae_header_id 
240778 , p_source_22 => p_source_22
240779 , p_source_26 => p_source_26
240780 , p_source_27 => p_source_27
240781 , p_source_28 => p_source_28
240782 , p_source_29 => p_source_29
240783 , p_source_30 => p_source_30
240784 , p_source_47 => p_source_47
240785          , x_transaction_coa_id       => l_adr_transaction_coa_id
240786          , x_accounting_coa_id        => l_adr_accounting_coa_id
240787          , x_value_type_code          => l_adr_value_type_code
240788          , p_side                     => 'NA'
240789    );
240790 
240791    xla_ae_lines_pkg.set_ccid(
240792     p_code_combination_id          => l_ccid
240793   , p_value_type_code              => l_adr_value_type_code
240794   , p_transaction_coa_id           => l_adr_transaction_coa_id
240795   , p_accounting_coa_id            => l_adr_accounting_coa_id
240796   , p_adr_code                     => 'PI_INTRAORG_TRX_BRIDGING_ADR'
240797   , p_adr_type_code                => 'S'
240798   , p_component_type               => l_component_type
240799   , p_component_code               => l_component_code
240800   , p_component_type_code          => l_component_type_code
240801   , p_component_appl_id            => l_component_appl_id
240802   , p_amb_context_code             => l_amb_context_code
240803   , p_side                         => 'NA'
240804   );
240805 
240806 
240807    --
240808    --
240809    END IF;
240810 
240811        --
240812        -- Update the line information that should be overwritten
240813        --
240814        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
240815                                          p_header_num   => 1);
240816        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
240817 
240818        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
240819 
240820        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
240821           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
240822        END IF;
240823 
240824       --
240825       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
240826       --
240827       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
240828           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
240829       ELSE
240830           ---------------------------------------------------------------------------------------------------
240831           -- 4262811a Switch Sign
240832           ---------------------------------------------------------------------------------------------------
240833           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
240834           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
240835                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
240836           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
240837                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
240838           -- 5132302
240839           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
240840                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
240841 
240842       END IF;
240843 
240844       -- 4955764
240845       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
240846       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
240847 
240848 
240849       XLA_AE_LINES_PKG.ValidateCurrentLine;
240850       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
240851 
240852       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
240853                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
240854                ,p_balance_type_code => l_balance_type_code);
240855 
240856    END IF;
240857 
240858    -----------------------------------------------------------------------------------------
240859    -- 4262811 Multiperiod Accounting
240860    -----------------------------------------------------------------------------------------
240861      -- No MPA option is assigned.
240862 
240863 
240864 END IF;
240865 END IF;
240866 --
240867 
240868 --
240869 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
240870    trace
240871       (p_msg      => 'END of AcctLineType_434'
240872       ,p_level    => C_LEVEL_PROCEDURE
240873       ,p_module   => l_log_module);
240874 END IF;
240875 --
240876 EXCEPTION
240877   WHEN xla_exceptions_pkg.application_exception THEN
240878       RAISE;
240879   WHEN OTHERS THEN
240880        xla_exceptions_pkg.raise_message
240881            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_434');
240882 END AcctLineType_434;
240883 --
240884 
240885 ---------------------------------------
240886 --
240887 -- PRIVATE FUNCTION
240888 --         AcctLineType_435
240889 --
240890 ---------------------------------------
240891 PROCEDURE AcctLineType_435 (
240892   p_application_id        IN NUMBER
240893  ,p_event_id              IN NUMBER
240894  ,p_calculate_acctd_flag  IN VARCHAR2
240895  ,p_calculate_g_l_flag    IN VARCHAR2
240896  ,p_actual_flag           IN OUT VARCHAR2
240897  ,p_balance_type_code     OUT VARCHAR2
240898  ,p_gain_or_loss_ref      OUT VARCHAR2
240899  
240900 --TRANSACTION_ID
240901  , p_source_1            IN NUMBER
240902 --Item Concatenated Segments
240903  , p_source_2            IN VARCHAR2
240904 --Transaction Quantity
240905  , p_source_3            IN NUMBER
240906 --Transaction Unit of Measure Code
240907  , p_source_4            IN VARCHAR2
240908 --Inventory Transaction Type Description
240909  , p_source_5            IN VARCHAR2
240910 --Product Line Accounting Category Bridging Account
240911  , p_source_22            IN NUMBER
240912 --Cost Group Identifier
240913  , p_source_26            IN NUMBER
240914 --INV Header Transfer Cost Group ID
240915  , p_source_27            IN NUMBER
240916 --INV Header Cost Group ID
240917  , p_source_28            IN NUMBER
240918 --Subinventory Name
240919  , p_source_29            IN VARCHAR2
240920 --INV Header Subinventory
240921  , p_source_30            IN VARCHAR2
240922 --Transfer to Subinventory or Cost Group category bridging account
240923  , p_source_47            IN NUMBER
240924 --DISTRIBUTION_IDENTIFIER
240925  , p_source_84            IN NUMBER
240926 --Distribution Type
240927  , p_source_85            IN VARCHAR2
240928  , p_source_85_meaning    IN VARCHAR2
240929 --Entered Currency Code
240930  , p_source_88            IN VARCHAR2
240931 --Entered Amount
240932  , p_source_91            IN NUMBER
240933 --Currency Conversion Date
240934  , p_source_92            IN DATE
240935 --Currency Conversion Rate
240936  , p_source_93            IN NUMBER
240937 --Currency Conversion Type
240938  , p_source_94            IN VARCHAR2
240939 --Accounted Amount
240940  , p_source_95            IN NUMBER
240941 --Accounting Line Type
240942  , p_source_97            IN NUMBER
240943 )
240944 IS
240945 
240946 l_component_type              VARCHAR2(80);
240947 l_component_code              VARCHAR2(30);
240948 l_component_type_code         VARCHAR2(1);
240949 l_component_appl_id           INTEGER;
240950 l_amb_context_code            VARCHAR2(30);
240951 l_entity_code                 VARCHAR2(30);
240952 l_event_class_code            VARCHAR2(30);
240953 l_ae_header_id                NUMBER;
240954 l_event_type_code             VARCHAR2(30);
240955 l_line_definition_code        VARCHAR2(30);
240956 l_line_definition_owner_code  VARCHAR2(1);
240957 --
240958 -- adr variables
240959 l_segment                     VARCHAR2(30);
240960 l_ccid                        NUMBER;
240961 l_adr_transaction_coa_id      NUMBER;
240962 l_adr_accounting_coa_id       NUMBER;
240963 l_adr_flexfield_segment_code  VARCHAR2(30);
240964 l_adr_flex_value_set_id       NUMBER;
240965 l_adr_value_type_code         VARCHAR2(30);
240966 l_adr_value_combination_id    NUMBER;
240967 l_adr_value_segment_code      VARCHAR2(30);
240968 
240969 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
240970 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
240971 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
240972 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
240973 
240974 -- 4262811 Variables ------------------------------------------------------------------------------------------
240975 l_entered_amt_idx             NUMBER;
240976 l_accted_amt_idx              NUMBER;
240977 l_acc_rev_flag                VARCHAR2(1);
240978 l_accrual_line_num            NUMBER;
240979 l_tmp_amt                     NUMBER;
240980 l_acc_rev_natural_side_code   VARCHAR2(1);
240981 
240982 l_num_entries                 NUMBER;
240983 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
240984 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
240985 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
240986 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
240987 l_recog_line_1                NUMBER;
240988 l_recog_line_2                NUMBER;
240989 
240990 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
240991 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
240992 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
240993 
240994 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
240995 
240996 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
240997 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
240998 
240999 ---------------------------------------------------------------------------------------------------------------
241000 
241001 
241002 --
241003 -- bulk performance
241004 --
241005 l_balance_type_code           VARCHAR2(1);
241006 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
241007 l_log_module                  VARCHAR2(240);
241008 
241009 --
241010 -- Upgrade strategy
241011 --
241012 l_actual_upg_option           VARCHAR2(1);
241013 l_enc_upg_option           VARCHAR2(1);
241014 
241015 --
241016 BEGIN
241017 --
241018 IF g_log_enabled THEN
241019       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_435';
241020 END IF;
241021 --
241022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
241023 
241024       trace
241025          (p_msg      => 'BEGIN of AcctLineType_435'
241026          ,p_level    => C_LEVEL_PROCEDURE
241027          ,p_module   => l_log_module);
241028 
241029 END IF;
241030 --
241031 l_component_type             := 'AMB_JLT';
241032 l_component_code             := 'PI_INTRAORG_TXFR_SUB_TXFR_BRID';
241033 l_component_type_code        := 'S';
241034 l_component_appl_id          :=  707;
241035 l_amb_context_code           := 'DEFAULT';
241036 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
241037 l_event_class_code           := 'INTRAORG_TXFR';
241038 l_event_type_code            := 'INTRAORG_TXFR_ALL';
241039 l_line_definition_owner_code := 'S';
241040 l_line_definition_code       := 'PI_INTRAORG_TXFR';
241041 --
241042 l_balance_type_code          := 'A';
241043 l_segment                     := NULL;
241044 l_ccid                        := NULL;
241045 l_adr_transaction_coa_id      := NULL;
241046 l_adr_accounting_coa_id       := NULL;
241047 l_adr_flexfield_segment_code  := NULL;
241048 l_adr_flex_value_set_id       := NULL;
241049 l_adr_value_type_code         := NULL;
241050 l_adr_value_combination_id    := NULL;
241051 l_adr_value_segment_code      := NULL;
241052 
241053 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
241054 l_bflow_class_code           := '';    -- 4219869 Business Flow
241055 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
241056 l_budgetary_control_flag     := 'N';
241057 
241058 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
241059 l_bflow_applied_to_amt       := NULL; -- 5132302
241060 l_entered_amt_idx            := NULL;          -- 4262811
241061 l_accted_amt_idx             := NULL;          -- 4262811
241062 l_acc_rev_flag               := NULL;          -- 4262811
241063 l_accrual_line_num           := NULL;          -- 4262811
241064 l_tmp_amt                    := NULL;          -- 4262811
241065 --
241066  
241067 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
241068     l_balance_type_code <> 'B' THEN
241069 IF NVL(p_source_97,9E125) =  1
241070  THEN 
241071 
241072    --
241073    XLA_AE_LINES_PKG.SetNewLine;
241074 
241075    p_balance_type_code          := l_balance_type_code;
241076    -- set the flag so later we will know whether the gain loss line needs to be created
241077    
241078    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
241079      p_actual_flag :='A';
241080    END IF;
241081 
241082    --
241083    -- bulk performance
241084    --
241085    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
241086                                       p_header_num   => 0); -- 4262811
241087    --
241088    -- set accounting line options
241089    --
241090    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
241091            p_natural_side_code          => 'C'
241092          , p_gain_or_loss_flag          => 'N'
241093          , p_gl_transfer_mode_code      => 'S'
241094          , p_acct_entry_type_code       => 'A'
241095          , p_switch_side_flag           => 'Y'
241096          , p_merge_duplicate_code       => 'N'
241097          );
241098    --
241099    l_acc_rev_natural_side_code := 'D';  -- 4262811
241100    -- 
241101    --
241102    -- set accounting line type info
241103    --
241104    xla_ae_lines_pkg.SetAcctLineType
241105       (p_component_type             => l_component_type
241106       ,p_event_type_code            => l_event_type_code
241107       ,p_line_definition_owner_code => l_line_definition_owner_code
241108       ,p_line_definition_code       => l_line_definition_code
241109       ,p_accounting_line_code       => l_component_code
241110       ,p_accounting_line_type_code  => l_component_type_code
241111       ,p_accounting_line_appl_id    => l_component_appl_id
241112       ,p_amb_context_code           => l_amb_context_code
241113       ,p_entity_code                => l_entity_code
241114       ,p_event_class_code           => l_event_class_code);
241115    --
241116    -- set accounting class
241117    --
241118    xla_ae_lines_pkg.SetAcctClass(
241119            p_accounting_class_code  => 'BRIDGING'
241120          , p_ae_header_id           => l_ae_header_id
241121          );
241122 
241123    --
241124    -- set rounding class
241125    --
241126    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
241127                       'BRIDGING';
241128 
241129    --
241130    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
241131    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
241132    --
241133    -- bulk performance
241134    --
241135    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
241136 
241137    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
241138       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
241139 
241140    -- 4955764
241141    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
241142       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
241143 
241144    -- 4458381 Public Sector Enh
241145    
241146    --
241147    -- set accounting attributes for the line type
241148    --
241149    l_entered_amt_idx := 3;
241150    l_accted_amt_idx  := 8;
241151    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
241152    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
241153    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
241154    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
241155    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
241156    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
241157    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
241158    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
241159    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
241160    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
241161    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
241162    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
241163    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
241164    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
241165    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
241166    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
241167    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
241168 
241169    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
241170    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
241171 
241172    ---------------------------------------------------------------------------------------------------------------
241173    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
241174    ---------------------------------------------------------------------------------------------------------------
241175    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
241176 
241177    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
241178    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
241179 
241180    IF xla_accounting_cache_pkg.GetValueChar
241181          (p_source_code         => 'LEDGER_CATEGORY_CODE'
241182          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
241183    AND l_bflow_method_code = 'PRIOR_ENTRY'
241184 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
241185    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
241186          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
241187        )
241188    THEN
241189          xla_ae_lines_pkg.BflowUpgEntry
241190            (p_business_method_code    => l_bflow_method_code
241191            ,p_business_class_code     => l_bflow_class_code
241192            ,p_balance_type            => l_balance_type_code);
241193    ELSE
241194       NULL;
241195 -- No business flow processing for business flow method of NONE.
241196    END IF;
241197 
241198    --
241199    -- call analytical criteria
241200    --
241201    
241202    --
241203    -- call description
241204    --
241205    
241206 xla_ae_lines_pkg.SetLineDescription(
241207    p_ae_header_id => l_ae_header_id
241208   ,p_description  => Description_1 (
241209      p_application_id         => p_application_id
241210    , p_ae_header_id           => l_ae_header_id 
241211 , p_source_1 => p_source_1
241212 , p_source_2 => p_source_2
241213 , p_source_3 => p_source_3
241214 , p_source_4 => p_source_4
241215 , p_source_5 => p_source_5
241216    )
241217 );
241218 
241219 
241220    --
241221    -- call ADRs
241222    -- Bug 4922099
241223    --
241224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
241225         (NVL(l_actual_upg_option, 'N') = 'O') OR
241226         (NVL(l_enc_upg_option, 'N') = 'O')
241227       )
241228    THEN
241229    NULL;
241230    --
241231    --
241232    
241233   l_ccid := AcctDerRule_27(
241234            p_application_id           => p_application_id
241235          , p_ae_header_id             => l_ae_header_id 
241236 , p_source_22 => p_source_22
241237 , p_source_26 => p_source_26
241238 , p_source_27 => p_source_27
241239 , p_source_28 => p_source_28
241240 , p_source_29 => p_source_29
241241 , p_source_30 => p_source_30
241242 , p_source_47 => p_source_47
241243          , x_transaction_coa_id       => l_adr_transaction_coa_id
241244          , x_accounting_coa_id        => l_adr_accounting_coa_id
241245          , x_value_type_code          => l_adr_value_type_code
241246          , p_side                     => 'NA'
241247    );
241248 
241249    xla_ae_lines_pkg.set_ccid(
241250     p_code_combination_id          => l_ccid
241251   , p_value_type_code              => l_adr_value_type_code
241252   , p_transaction_coa_id           => l_adr_transaction_coa_id
241253   , p_accounting_coa_id            => l_adr_accounting_coa_id
241254   , p_adr_code                     => 'PI_INTRAORG_TRX_BRIDGING_ADR'
241255   , p_adr_type_code                => 'S'
241256   , p_component_type               => l_component_type
241257   , p_component_code               => l_component_code
241258   , p_component_type_code          => l_component_type_code
241259   , p_component_appl_id            => l_component_appl_id
241260   , p_amb_context_code             => l_amb_context_code
241261   , p_side                         => 'NA'
241262   );
241263 
241264 
241265    --
241266    --
241267    END IF;
241268    --
241269    -- Bug 4922099
241270    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
241271           (NVL(l_enc_upg_option, 'N') = 'O')
241272         ) AND
241273         (l_bflow_method_code = 'PRIOR_ENTRY')
241274       )
241275    THEN
241276       IF
241277       --
241278       1 = 2
241279       --
241280       THEN
241281       xla_accounting_err_pkg.build_message
241282                                     (p_appli_s_name            => 'XLA'
241283                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
241284                                     ,p_token_1                 => 'LINE_NUMBER'
241285                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
241286                                     ,p_token_2                 => 'LINE_TYPE_NAME'
241287                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
241288                                                                              l_component_type
241289                                                                             ,l_component_code
241290                                                                             ,l_component_type_code
241291                                                                             ,l_component_appl_id
241292                                                                             ,l_amb_context_code
241293                                                                             ,l_entity_code
241294                                                                             ,l_event_class_code
241295                                                                            )
241296                                     ,p_token_3                 => 'OWNER'
241297                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
241298                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
241299                                                                           ,p_lookup_code    => l_component_type_code
241300                                                                          )
241301                                     ,p_token_4                 => 'PRODUCT_NAME'
241302                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
241303                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
241304                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
241305                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
241306                                     ,p_ae_header_id            =>  NULL
241307                                        );
241308 
241309         IF (C_LEVEL_ERROR>= g_log_level) THEN
241310                  trace
241311                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
241312                       ,p_level    => C_LEVEL_ERROR
241313                       ,p_module   => l_log_module);
241314         END IF;
241315       END IF;
241316    END IF;
241317    --
241318    --
241319    ------------------------------------------------------------------------------------------------
241320    -- 4219869 Business Flow
241321    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
241322    -- Prior Entry.  Currently, the following code is always generated.
241323    ------------------------------------------------------------------------------------------------
241324    XLA_AE_LINES_PKG.ValidateCurrentLine;
241325 
241326    ------------------------------------------------------------------------------------
241327    -- 4219869 Business Flow
241328    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
241329    ------------------------------------------------------------------------------------
241330    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
241331 
241332    ----------------------------------------------------------------------------------
241333    -- 4219869 Business Flow
241334    -- Update journal entry status -- Need to generate this within IF <condition>
241335    ----------------------------------------------------------------------------------
241336    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
241337          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
241338          ,p_balance_type_code => l_balance_type_code
241339          );
241340 
241341    -------------------------------------------------------------------------------------------
241342    -- 4262811 - Generate the Accrual Reversal lines
241343    -------------------------------------------------------------------------------------------
241344    BEGIN
241345       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
241346                               (g_array_event(p_event_id).array_value_num('header_index'));
241347       IF l_acc_rev_flag IS NULL THEN
241348          l_acc_rev_flag := 'N';
241349       END IF;
241350    EXCEPTION
241351       WHEN OTHERS THEN
241352          l_acc_rev_flag := 'N';
241353    END;
241354    --
241355    IF (l_acc_rev_flag = 'Y') THEN
241356 
241357        -- 4645092  ------------------------------------------------------------------------------
241358        -- To allow MPA report to determine if it should generate report process
241359        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
241360        ------------------------------------------------------------------------------------------
241361 
241362        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
241363        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
241364    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
241365    -- call ADRs
241366    -- Bug 4922099
241367    --
241368    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
241369         (NVL(l_actual_upg_option, 'N') = 'O') OR
241370         (NVL(l_enc_upg_option, 'N') = 'O')
241371       )
241372    THEN
241373    NULL;
241374    --
241375    --
241376    
241377   l_ccid := AcctDerRule_27(
241378            p_application_id           => p_application_id
241379          , p_ae_header_id             => l_ae_header_id 
241380 , p_source_22 => p_source_22
241381 , p_source_26 => p_source_26
241382 , p_source_27 => p_source_27
241383 , p_source_28 => p_source_28
241384 , p_source_29 => p_source_29
241385 , p_source_30 => p_source_30
241386 , p_source_47 => p_source_47
241387          , x_transaction_coa_id       => l_adr_transaction_coa_id
241388          , x_accounting_coa_id        => l_adr_accounting_coa_id
241389          , x_value_type_code          => l_adr_value_type_code
241390          , p_side                     => 'NA'
241391    );
241392 
241393    xla_ae_lines_pkg.set_ccid(
241394     p_code_combination_id          => l_ccid
241395   , p_value_type_code              => l_adr_value_type_code
241396   , p_transaction_coa_id           => l_adr_transaction_coa_id
241397   , p_accounting_coa_id            => l_adr_accounting_coa_id
241398   , p_adr_code                     => 'PI_INTRAORG_TRX_BRIDGING_ADR'
241399   , p_adr_type_code                => 'S'
241400   , p_component_type               => l_component_type
241401   , p_component_code               => l_component_code
241402   , p_component_type_code          => l_component_type_code
241403   , p_component_appl_id            => l_component_appl_id
241404   , p_amb_context_code             => l_amb_context_code
241405   , p_side                         => 'NA'
241406   );
241407 
241408 
241409    --
241410    --
241411    END IF;
241412 
241413        --
241414        -- Update the line information that should be overwritten
241415        --
241416        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
241417                                          p_header_num   => 1);
241418        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
241419 
241420        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
241421 
241422        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
241423           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
241424        END IF;
241425 
241426       --
241427       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
241428       --
241429       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
241430           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
241431       ELSE
241432           ---------------------------------------------------------------------------------------------------
241433           -- 4262811a Switch Sign
241434           ---------------------------------------------------------------------------------------------------
241435           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
241436           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
241437                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
241438           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
241439                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
241440           -- 5132302
241441           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
241442                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
241443 
241444       END IF;
241445 
241446       -- 4955764
241447       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
241448       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
241449 
241450 
241451       XLA_AE_LINES_PKG.ValidateCurrentLine;
241452       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
241453 
241454       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
241455                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
241456                ,p_balance_type_code => l_balance_type_code);
241457 
241458    END IF;
241459 
241460    -----------------------------------------------------------------------------------------
241461    -- 4262811 Multiperiod Accounting
241462    -----------------------------------------------------------------------------------------
241463      -- No MPA option is assigned.
241464 
241465 
241466 END IF;
241467 END IF;
241468 --
241469 
241470 --
241471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
241472    trace
241473       (p_msg      => 'END of AcctLineType_435'
241474       ,p_level    => C_LEVEL_PROCEDURE
241475       ,p_module   => l_log_module);
241476 END IF;
241477 --
241478 EXCEPTION
241479   WHEN xla_exceptions_pkg.application_exception THEN
241480       RAISE;
241481   WHEN OTHERS THEN
241482        xla_exceptions_pkg.raise_message
241483            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_435');
241484 END AcctLineType_435;
241485 --
241486 
241487 ---------------------------------------
241488 --
241489 -- PRIVATE FUNCTION
241490 --         AcctLineType_436
241491 --
241492 ---------------------------------------
241493 PROCEDURE AcctLineType_436 (
241494   p_application_id        IN NUMBER
241495  ,p_event_id              IN NUMBER
241496  ,p_calculate_acctd_flag  IN VARCHAR2
241497  ,p_calculate_g_l_flag    IN VARCHAR2
241498  ,p_actual_flag           IN OUT VARCHAR2
241499  ,p_balance_type_code     OUT VARCHAR2
241500  ,p_gain_or_loss_ref      OUT VARCHAR2
241501  
241502 --TRANSACTION_ID
241503  , p_source_1            IN NUMBER
241504 --Item Concatenated Segments
241505  , p_source_2            IN VARCHAR2
241506 --Transaction Quantity
241507  , p_source_3            IN NUMBER
241508 --Transaction Unit of Measure Code
241509  , p_source_4            IN VARCHAR2
241510 --Inventory Transaction Type Description
241511  , p_source_5            IN VARCHAR2
241512 --Product Line Accounting Category Bridging Account
241513  , p_source_22            IN NUMBER
241514 --Cost Group Identifier
241515  , p_source_26            IN NUMBER
241516 --INV Header Transfer Cost Group ID
241517  , p_source_27            IN NUMBER
241518 --INV Header Cost Group ID
241519  , p_source_28            IN NUMBER
241520 --Subinventory Name
241521  , p_source_29            IN VARCHAR2
241522 --INV Header Subinventory
241523  , p_source_30            IN VARCHAR2
241524 --Transfer to Subinventory or Cost Group category bridging account
241525  , p_source_47            IN NUMBER
241526 --DISTRIBUTION_IDENTIFIER
241527  , p_source_84            IN NUMBER
241528 --Distribution Type
241529  , p_source_85            IN VARCHAR2
241530  , p_source_85_meaning    IN VARCHAR2
241531 --Entered Currency Code
241532  , p_source_88            IN VARCHAR2
241533 --Entered Amount
241534  , p_source_91            IN NUMBER
241535 --Currency Conversion Date
241536  , p_source_92            IN DATE
241537 --Currency Conversion Rate
241538  , p_source_93            IN NUMBER
241539 --Currency Conversion Type
241540  , p_source_94            IN VARCHAR2
241541 --Accounted Amount
241542  , p_source_95            IN NUMBER
241543 --Accounting Line Type
241544  , p_source_97            IN NUMBER
241545 )
241546 IS
241547 
241548 l_component_type              VARCHAR2(80);
241549 l_component_code              VARCHAR2(30);
241550 l_component_type_code         VARCHAR2(1);
241551 l_component_appl_id           INTEGER;
241552 l_amb_context_code            VARCHAR2(30);
241553 l_entity_code                 VARCHAR2(30);
241554 l_event_class_code            VARCHAR2(30);
241555 l_ae_header_id                NUMBER;
241556 l_event_type_code             VARCHAR2(30);
241557 l_line_definition_code        VARCHAR2(30);
241558 l_line_definition_owner_code  VARCHAR2(1);
241559 --
241560 -- adr variables
241561 l_segment                     VARCHAR2(30);
241562 l_ccid                        NUMBER;
241563 l_adr_transaction_coa_id      NUMBER;
241564 l_adr_accounting_coa_id       NUMBER;
241565 l_adr_flexfield_segment_code  VARCHAR2(30);
241566 l_adr_flex_value_set_id       NUMBER;
241567 l_adr_value_type_code         VARCHAR2(30);
241568 l_adr_value_combination_id    NUMBER;
241569 l_adr_value_segment_code      VARCHAR2(30);
241570 
241571 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
241572 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
241573 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
241574 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
241575 
241576 -- 4262811 Variables ------------------------------------------------------------------------------------------
241577 l_entered_amt_idx             NUMBER;
241578 l_accted_amt_idx              NUMBER;
241579 l_acc_rev_flag                VARCHAR2(1);
241580 l_accrual_line_num            NUMBER;
241581 l_tmp_amt                     NUMBER;
241582 l_acc_rev_natural_side_code   VARCHAR2(1);
241583 
241584 l_num_entries                 NUMBER;
241585 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
241586 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
241587 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
241588 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
241589 l_recog_line_1                NUMBER;
241590 l_recog_line_2                NUMBER;
241591 
241592 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
241593 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
241594 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
241595 
241596 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
241597 
241598 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
241599 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
241600 
241601 ---------------------------------------------------------------------------------------------------------------
241602 
241603 
241604 --
241605 -- bulk performance
241606 --
241607 l_balance_type_code           VARCHAR2(1);
241608 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
241609 l_log_module                  VARCHAR2(240);
241610 
241611 --
241612 -- Upgrade strategy
241613 --
241614 l_actual_upg_option           VARCHAR2(1);
241615 l_enc_upg_option           VARCHAR2(1);
241616 
241617 --
241618 BEGIN
241619 --
241620 IF g_log_enabled THEN
241621       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_436';
241622 END IF;
241623 --
241624 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
241625 
241626       trace
241627          (p_msg      => 'BEGIN of AcctLineType_436'
241628          ,p_level    => C_LEVEL_PROCEDURE
241629          ,p_module   => l_log_module);
241630 
241631 END IF;
241632 --
241633 l_component_type             := 'AMB_JLT';
241634 l_component_code             := 'PI_INTRAORG_TXFR_SUB_TXFR_BRID';
241635 l_component_type_code        := 'S';
241636 l_component_appl_id          :=  707;
241637 l_amb_context_code           := 'DEFAULT';
241638 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
241639 l_event_class_code           := 'USER_DEFINE';
241640 l_event_type_code            := 'USUB_TXFR';
241641 l_line_definition_owner_code := 'S';
241642 l_line_definition_code       := 'PI_INTRAORG_TXFR';
241643 --
241644 l_balance_type_code          := 'A';
241645 l_segment                     := NULL;
241646 l_ccid                        := NULL;
241647 l_adr_transaction_coa_id      := NULL;
241648 l_adr_accounting_coa_id       := NULL;
241649 l_adr_flexfield_segment_code  := NULL;
241650 l_adr_flex_value_set_id       := NULL;
241651 l_adr_value_type_code         := NULL;
241652 l_adr_value_combination_id    := NULL;
241653 l_adr_value_segment_code      := NULL;
241654 
241655 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
241656 l_bflow_class_code           := '';    -- 4219869 Business Flow
241657 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
241658 l_budgetary_control_flag     := 'N';
241659 
241660 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
241661 l_bflow_applied_to_amt       := NULL; -- 5132302
241662 l_entered_amt_idx            := NULL;          -- 4262811
241663 l_accted_amt_idx             := NULL;          -- 4262811
241664 l_acc_rev_flag               := NULL;          -- 4262811
241665 l_accrual_line_num           := NULL;          -- 4262811
241666 l_tmp_amt                    := NULL;          -- 4262811
241667 --
241668  
241669 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
241670     l_balance_type_code <> 'B' THEN
241671 IF NVL(p_source_97,9E125) =  1
241672  THEN 
241673 
241674    --
241675    XLA_AE_LINES_PKG.SetNewLine;
241676 
241677    p_balance_type_code          := l_balance_type_code;
241678    -- set the flag so later we will know whether the gain loss line needs to be created
241679    
241680    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
241681      p_actual_flag :='A';
241682    END IF;
241683 
241684    --
241685    -- bulk performance
241686    --
241687    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
241688                                       p_header_num   => 0); -- 4262811
241689    --
241690    -- set accounting line options
241691    --
241692    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
241693            p_natural_side_code          => 'C'
241694          , p_gain_or_loss_flag          => 'N'
241695          , p_gl_transfer_mode_code      => 'S'
241696          , p_acct_entry_type_code       => 'A'
241697          , p_switch_side_flag           => 'Y'
241698          , p_merge_duplicate_code       => 'N'
241699          );
241700    --
241701    l_acc_rev_natural_side_code := 'D';  -- 4262811
241702    -- 
241703    --
241704    -- set accounting line type info
241705    --
241706    xla_ae_lines_pkg.SetAcctLineType
241707       (p_component_type             => l_component_type
241708       ,p_event_type_code            => l_event_type_code
241709       ,p_line_definition_owner_code => l_line_definition_owner_code
241710       ,p_line_definition_code       => l_line_definition_code
241711       ,p_accounting_line_code       => l_component_code
241712       ,p_accounting_line_type_code  => l_component_type_code
241713       ,p_accounting_line_appl_id    => l_component_appl_id
241714       ,p_amb_context_code           => l_amb_context_code
241715       ,p_entity_code                => l_entity_code
241716       ,p_event_class_code           => l_event_class_code);
241717    --
241718    -- set accounting class
241719    --
241720    xla_ae_lines_pkg.SetAcctClass(
241721            p_accounting_class_code  => 'BRIDGING'
241722          , p_ae_header_id           => l_ae_header_id
241723          );
241724 
241725    --
241726    -- set rounding class
241727    --
241728    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
241729                       'BRIDGING';
241730 
241731    --
241732    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
241733    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
241734    --
241735    -- bulk performance
241736    --
241737    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
241738 
241739    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
241740       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
241741 
241742    -- 4955764
241743    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
241744       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
241745 
241746    -- 4458381 Public Sector Enh
241747    
241748    --
241749    -- set accounting attributes for the line type
241750    --
241751    l_entered_amt_idx := 3;
241752    l_accted_amt_idx  := 8;
241753    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
241754    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
241755    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
241756    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
241757    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
241758    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
241759    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
241760    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
241761    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
241762    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
241763    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
241764    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
241765    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
241766    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
241767    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
241768    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
241769    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
241770 
241771    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
241772    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
241773 
241774    ---------------------------------------------------------------------------------------------------------------
241775    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
241776    ---------------------------------------------------------------------------------------------------------------
241777    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
241778 
241779    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
241780    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
241781 
241782    IF xla_accounting_cache_pkg.GetValueChar
241783          (p_source_code         => 'LEDGER_CATEGORY_CODE'
241784          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
241785    AND l_bflow_method_code = 'PRIOR_ENTRY'
241786 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
241787    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
241788          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
241789        )
241790    THEN
241791          xla_ae_lines_pkg.BflowUpgEntry
241792            (p_business_method_code    => l_bflow_method_code
241793            ,p_business_class_code     => l_bflow_class_code
241794            ,p_balance_type            => l_balance_type_code);
241795    ELSE
241796       NULL;
241797 -- No business flow processing for business flow method of NONE.
241798    END IF;
241799 
241800    --
241801    -- call analytical criteria
241802    --
241803    
241804    --
241805    -- call description
241806    --
241807    
241808 xla_ae_lines_pkg.SetLineDescription(
241809    p_ae_header_id => l_ae_header_id
241810   ,p_description  => Description_1 (
241811      p_application_id         => p_application_id
241812    , p_ae_header_id           => l_ae_header_id 
241813 , p_source_1 => p_source_1
241814 , p_source_2 => p_source_2
241815 , p_source_3 => p_source_3
241816 , p_source_4 => p_source_4
241817 , p_source_5 => p_source_5
241818    )
241819 );
241820 
241821 
241822    --
241823    -- call ADRs
241824    -- Bug 4922099
241825    --
241826    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
241827         (NVL(l_actual_upg_option, 'N') = 'O') OR
241828         (NVL(l_enc_upg_option, 'N') = 'O')
241829       )
241830    THEN
241831    NULL;
241832    --
241833    --
241834    
241835   l_ccid := AcctDerRule_27(
241836            p_application_id           => p_application_id
241837          , p_ae_header_id             => l_ae_header_id 
241838 , p_source_22 => p_source_22
241839 , p_source_26 => p_source_26
241840 , p_source_27 => p_source_27
241841 , p_source_28 => p_source_28
241842 , p_source_29 => p_source_29
241843 , p_source_30 => p_source_30
241844 , p_source_47 => p_source_47
241845          , x_transaction_coa_id       => l_adr_transaction_coa_id
241846          , x_accounting_coa_id        => l_adr_accounting_coa_id
241847          , x_value_type_code          => l_adr_value_type_code
241848          , p_side                     => 'NA'
241849    );
241850 
241851    xla_ae_lines_pkg.set_ccid(
241852     p_code_combination_id          => l_ccid
241853   , p_value_type_code              => l_adr_value_type_code
241854   , p_transaction_coa_id           => l_adr_transaction_coa_id
241855   , p_accounting_coa_id            => l_adr_accounting_coa_id
241856   , p_adr_code                     => 'PI_INTRAORG_TRX_BRIDGING_ADR'
241857   , p_adr_type_code                => 'S'
241858   , p_component_type               => l_component_type
241859   , p_component_code               => l_component_code
241860   , p_component_type_code          => l_component_type_code
241861   , p_component_appl_id            => l_component_appl_id
241862   , p_amb_context_code             => l_amb_context_code
241863   , p_side                         => 'NA'
241864   );
241865 
241866 
241867    --
241868    --
241869    END IF;
241870    --
241871    -- Bug 4922099
241872    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
241873           (NVL(l_enc_upg_option, 'N') = 'O')
241874         ) AND
241875         (l_bflow_method_code = 'PRIOR_ENTRY')
241876       )
241877    THEN
241878       IF
241879       --
241880       1 = 2
241881       --
241882       THEN
241883       xla_accounting_err_pkg.build_message
241884                                     (p_appli_s_name            => 'XLA'
241885                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
241886                                     ,p_token_1                 => 'LINE_NUMBER'
241887                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
241888                                     ,p_token_2                 => 'LINE_TYPE_NAME'
241889                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
241890                                                                              l_component_type
241891                                                                             ,l_component_code
241892                                                                             ,l_component_type_code
241893                                                                             ,l_component_appl_id
241894                                                                             ,l_amb_context_code
241895                                                                             ,l_entity_code
241896                                                                             ,l_event_class_code
241897                                                                            )
241898                                     ,p_token_3                 => 'OWNER'
241899                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
241900                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
241901                                                                           ,p_lookup_code    => l_component_type_code
241902                                                                          )
241903                                     ,p_token_4                 => 'PRODUCT_NAME'
241904                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
241905                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
241906                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
241907                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
241908                                     ,p_ae_header_id            =>  NULL
241909                                        );
241910 
241911         IF (C_LEVEL_ERROR>= g_log_level) THEN
241912                  trace
241913                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
241914                       ,p_level    => C_LEVEL_ERROR
241915                       ,p_module   => l_log_module);
241916         END IF;
241917       END IF;
241918    END IF;
241919    --
241920    --
241921    ------------------------------------------------------------------------------------------------
241922    -- 4219869 Business Flow
241923    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
241924    -- Prior Entry.  Currently, the following code is always generated.
241925    ------------------------------------------------------------------------------------------------
241926    XLA_AE_LINES_PKG.ValidateCurrentLine;
241927 
241928    ------------------------------------------------------------------------------------
241929    -- 4219869 Business Flow
241930    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
241931    ------------------------------------------------------------------------------------
241932    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
241933 
241934    ----------------------------------------------------------------------------------
241935    -- 4219869 Business Flow
241936    -- Update journal entry status -- Need to generate this within IF <condition>
241937    ----------------------------------------------------------------------------------
241938    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
241939          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
241940          ,p_balance_type_code => l_balance_type_code
241941          );
241942 
241943    -------------------------------------------------------------------------------------------
241944    -- 4262811 - Generate the Accrual Reversal lines
241945    -------------------------------------------------------------------------------------------
241946    BEGIN
241947       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
241948                               (g_array_event(p_event_id).array_value_num('header_index'));
241949       IF l_acc_rev_flag IS NULL THEN
241950          l_acc_rev_flag := 'N';
241951       END IF;
241952    EXCEPTION
241953       WHEN OTHERS THEN
241954          l_acc_rev_flag := 'N';
241955    END;
241956    --
241957    IF (l_acc_rev_flag = 'Y') THEN
241958 
241959        -- 4645092  ------------------------------------------------------------------------------
241960        -- To allow MPA report to determine if it should generate report process
241961        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
241962        ------------------------------------------------------------------------------------------
241963 
241964        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
241965        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
241966    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
241967    -- call ADRs
241968    -- Bug 4922099
241969    --
241970    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
241971         (NVL(l_actual_upg_option, 'N') = 'O') OR
241972         (NVL(l_enc_upg_option, 'N') = 'O')
241973       )
241974    THEN
241975    NULL;
241976    --
241977    --
241978    
241979   l_ccid := AcctDerRule_27(
241980            p_application_id           => p_application_id
241981          , p_ae_header_id             => l_ae_header_id 
241982 , p_source_22 => p_source_22
241983 , p_source_26 => p_source_26
241984 , p_source_27 => p_source_27
241985 , p_source_28 => p_source_28
241986 , p_source_29 => p_source_29
241987 , p_source_30 => p_source_30
241988 , p_source_47 => p_source_47
241989          , x_transaction_coa_id       => l_adr_transaction_coa_id
241990          , x_accounting_coa_id        => l_adr_accounting_coa_id
241991          , x_value_type_code          => l_adr_value_type_code
241992          , p_side                     => 'NA'
241993    );
241994 
241995    xla_ae_lines_pkg.set_ccid(
241996     p_code_combination_id          => l_ccid
241997   , p_value_type_code              => l_adr_value_type_code
241998   , p_transaction_coa_id           => l_adr_transaction_coa_id
241999   , p_accounting_coa_id            => l_adr_accounting_coa_id
242000   , p_adr_code                     => 'PI_INTRAORG_TRX_BRIDGING_ADR'
242001   , p_adr_type_code                => 'S'
242002   , p_component_type               => l_component_type
242003   , p_component_code               => l_component_code
242004   , p_component_type_code          => l_component_type_code
242005   , p_component_appl_id            => l_component_appl_id
242006   , p_amb_context_code             => l_amb_context_code
242007   , p_side                         => 'NA'
242008   );
242009 
242010 
242011    --
242012    --
242013    END IF;
242014 
242015        --
242016        -- Update the line information that should be overwritten
242017        --
242018        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
242019                                          p_header_num   => 1);
242020        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
242021 
242022        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
242023 
242024        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
242025           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
242026        END IF;
242027 
242028       --
242029       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
242030       --
242031       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
242032           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
242033       ELSE
242034           ---------------------------------------------------------------------------------------------------
242035           -- 4262811a Switch Sign
242036           ---------------------------------------------------------------------------------------------------
242037           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
242038           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
242039                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
242040           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
242041                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
242042           -- 5132302
242043           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
242044                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
242045 
242046       END IF;
242047 
242048       -- 4955764
242049       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
242050       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
242051 
242052 
242053       XLA_AE_LINES_PKG.ValidateCurrentLine;
242054       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
242055 
242056       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
242057                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
242058                ,p_balance_type_code => l_balance_type_code);
242059 
242060    END IF;
242061 
242062    -----------------------------------------------------------------------------------------
242063    -- 4262811 Multiperiod Accounting
242064    -----------------------------------------------------------------------------------------
242065      -- No MPA option is assigned.
242066 
242067 
242068 END IF;
242069 END IF;
242070 --
242071 
242072 --
242073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
242074    trace
242075       (p_msg      => 'END of AcctLineType_436'
242076       ,p_level    => C_LEVEL_PROCEDURE
242077       ,p_module   => l_log_module);
242078 END IF;
242079 --
242080 EXCEPTION
242081   WHEN xla_exceptions_pkg.application_exception THEN
242082       RAISE;
242083   WHEN OTHERS THEN
242084        xla_exceptions_pkg.raise_message
242085            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_436');
242086 END AcctLineType_436;
242087 --
242088 
242089 ---------------------------------------
242090 --
242091 -- PRIVATE FUNCTION
242092 --         AcctLineType_437
242093 --
242094 ---------------------------------------
242095 PROCEDURE AcctLineType_437 (
242096   p_application_id        IN NUMBER
242097  ,p_event_id              IN NUMBER
242098  ,p_calculate_acctd_flag  IN VARCHAR2
242099  ,p_calculate_g_l_flag    IN VARCHAR2
242100  ,p_actual_flag           IN OUT VARCHAR2
242101  ,p_balance_type_code     OUT VARCHAR2
242102  ,p_gain_or_loss_ref      OUT VARCHAR2
242103  
242104 --TRANSACTION_ID
242105  , p_source_1            IN NUMBER
242106 --Item Concatenated Segments
242107  , p_source_2            IN VARCHAR2
242108 --Transaction Quantity
242109  , p_source_3            IN NUMBER
242110 --Transaction Unit of Measure Code
242111  , p_source_4            IN VARCHAR2
242112 --Inventory Transaction Type Description
242113  , p_source_5            IN VARCHAR2
242114 --Product Line Accounting Category Expense Account
242115  , p_source_24            IN NUMBER
242116 --Transfer to Subinventory or Cost Group category expense account
242117  , p_source_25            IN NUMBER
242118 --Cost Group Identifier
242119  , p_source_26            IN NUMBER
242120 --INV Header Transfer Cost Group ID
242121  , p_source_27            IN NUMBER
242122 --INV Header Cost Group ID
242123  , p_source_28            IN NUMBER
242124 --Subinventory Name
242125  , p_source_29            IN VARCHAR2
242126 --INV Header Subinventory
242127  , p_source_30            IN VARCHAR2
242128 --DISTRIBUTION_IDENTIFIER
242129  , p_source_84            IN NUMBER
242130 --Distribution Type
242131  , p_source_85            IN VARCHAR2
242132  , p_source_85_meaning    IN VARCHAR2
242133 --Entered Currency Code
242134  , p_source_88            IN VARCHAR2
242135 --Entered Amount
242136  , p_source_91            IN NUMBER
242137 --Currency Conversion Date
242138  , p_source_92            IN DATE
242139 --Currency Conversion Rate
242140  , p_source_93            IN NUMBER
242141 --Currency Conversion Type
242142  , p_source_94            IN VARCHAR2
242143 --Accounted Amount
242144  , p_source_95            IN NUMBER
242145 --Accounting Line Type
242146  , p_source_97            IN NUMBER
242147 )
242148 IS
242149 
242150 l_component_type              VARCHAR2(80);
242151 l_component_code              VARCHAR2(30);
242152 l_component_type_code         VARCHAR2(1);
242153 l_component_appl_id           INTEGER;
242154 l_amb_context_code            VARCHAR2(30);
242155 l_entity_code                 VARCHAR2(30);
242156 l_event_class_code            VARCHAR2(30);
242157 l_ae_header_id                NUMBER;
242158 l_event_type_code             VARCHAR2(30);
242159 l_line_definition_code        VARCHAR2(30);
242160 l_line_definition_owner_code  VARCHAR2(1);
242161 --
242162 -- adr variables
242163 l_segment                     VARCHAR2(30);
242164 l_ccid                        NUMBER;
242165 l_adr_transaction_coa_id      NUMBER;
242166 l_adr_accounting_coa_id       NUMBER;
242167 l_adr_flexfield_segment_code  VARCHAR2(30);
242168 l_adr_flex_value_set_id       NUMBER;
242169 l_adr_value_type_code         VARCHAR2(30);
242170 l_adr_value_combination_id    NUMBER;
242171 l_adr_value_segment_code      VARCHAR2(30);
242172 
242173 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
242174 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
242175 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
242176 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
242177 
242178 -- 4262811 Variables ------------------------------------------------------------------------------------------
242179 l_entered_amt_idx             NUMBER;
242180 l_accted_amt_idx              NUMBER;
242181 l_acc_rev_flag                VARCHAR2(1);
242182 l_accrual_line_num            NUMBER;
242183 l_tmp_amt                     NUMBER;
242184 l_acc_rev_natural_side_code   VARCHAR2(1);
242185 
242186 l_num_entries                 NUMBER;
242187 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
242188 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
242189 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
242190 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
242191 l_recog_line_1                NUMBER;
242192 l_recog_line_2                NUMBER;
242193 
242194 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
242195 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
242196 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
242197 
242198 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
242199 
242200 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
242201 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
242202 
242203 ---------------------------------------------------------------------------------------------------------------
242204 
242205 
242206 --
242207 -- bulk performance
242208 --
242209 l_balance_type_code           VARCHAR2(1);
242210 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
242211 l_log_module                  VARCHAR2(240);
242212 
242213 --
242214 -- Upgrade strategy
242215 --
242216 l_actual_upg_option           VARCHAR2(1);
242217 l_enc_upg_option           VARCHAR2(1);
242218 
242219 --
242220 BEGIN
242221 --
242222 IF g_log_enabled THEN
242223       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_437';
242224 END IF;
242225 --
242226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
242227 
242228       trace
242229          (p_msg      => 'BEGIN of AcctLineType_437'
242230          ,p_level    => C_LEVEL_PROCEDURE
242231          ,p_module   => l_log_module);
242232 
242233 END IF;
242234 --
242235 l_component_type             := 'AMB_JLT';
242236 l_component_code             := 'PI_INTRAORG_TXFR_SUB_TXFR_EXP';
242237 l_component_type_code        := 'S';
242238 l_component_appl_id          :=  707;
242239 l_amb_context_code           := 'DEFAULT';
242240 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
242241 l_event_class_code           := 'INTRAORG_TXFR';
242242 l_event_type_code            := 'INTRAORG_TXFR_ALL';
242243 l_line_definition_owner_code := 'S';
242244 l_line_definition_code       := 'PI_INTRAORG_TXFR';
242245 --
242246 l_balance_type_code          := 'A';
242247 l_segment                     := NULL;
242248 l_ccid                        := NULL;
242249 l_adr_transaction_coa_id      := NULL;
242250 l_adr_accounting_coa_id       := NULL;
242251 l_adr_flexfield_segment_code  := NULL;
242252 l_adr_flex_value_set_id       := NULL;
242253 l_adr_value_type_code         := NULL;
242254 l_adr_value_combination_id    := NULL;
242255 l_adr_value_segment_code      := NULL;
242256 
242257 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
242258 l_bflow_class_code           := '';    -- 4219869 Business Flow
242259 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
242260 l_budgetary_control_flag     := 'N';
242261 
242262 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
242263 l_bflow_applied_to_amt       := NULL; -- 5132302
242264 l_entered_amt_idx            := NULL;          -- 4262811
242265 l_accted_amt_idx             := NULL;          -- 4262811
242266 l_acc_rev_flag               := NULL;          -- 4262811
242267 l_accrual_line_num           := NULL;          -- 4262811
242268 l_tmp_amt                    := NULL;          -- 4262811
242269 --
242270  
242271 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
242272     l_balance_type_code <> 'B' THEN
242273 IF NVL(p_source_97,9E125) =  2
242274  THEN 
242275 
242276    --
242277    XLA_AE_LINES_PKG.SetNewLine;
242278 
242279    p_balance_type_code          := l_balance_type_code;
242280    -- set the flag so later we will know whether the gain loss line needs to be created
242281    
242282    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
242283      p_actual_flag :='A';
242284    END IF;
242285 
242286    --
242287    -- bulk performance
242288    --
242289    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
242290                                       p_header_num   => 0); -- 4262811
242291    --
242292    -- set accounting line options
242293    --
242294    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
242295            p_natural_side_code          => 'C'
242296          , p_gain_or_loss_flag          => 'N'
242297          , p_gl_transfer_mode_code      => 'S'
242298          , p_acct_entry_type_code       => 'A'
242299          , p_switch_side_flag           => 'Y'
242300          , p_merge_duplicate_code       => 'N'
242301          );
242302    --
242303    l_acc_rev_natural_side_code := 'D';  -- 4262811
242304    -- 
242305    --
242306    -- set accounting line type info
242307    --
242308    xla_ae_lines_pkg.SetAcctLineType
242309       (p_component_type             => l_component_type
242310       ,p_event_type_code            => l_event_type_code
242311       ,p_line_definition_owner_code => l_line_definition_owner_code
242312       ,p_line_definition_code       => l_line_definition_code
242313       ,p_accounting_line_code       => l_component_code
242314       ,p_accounting_line_type_code  => l_component_type_code
242315       ,p_accounting_line_appl_id    => l_component_appl_id
242316       ,p_amb_context_code           => l_amb_context_code
242317       ,p_entity_code                => l_entity_code
242318       ,p_event_class_code           => l_event_class_code);
242319    --
242320    -- set accounting class
242321    --
242322    xla_ae_lines_pkg.SetAcctClass(
242323            p_accounting_class_code  => 'EXPENSE'
242324          , p_ae_header_id           => l_ae_header_id
242325          );
242326 
242327    --
242328    -- set rounding class
242329    --
242330    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
242331                       'EXPENSE';
242332 
242333    --
242334    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
242335    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
242336    --
242337    -- bulk performance
242338    --
242339    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
242340 
242341    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
242342       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
242343 
242344    -- 4955764
242345    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
242346       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
242347 
242348    -- 4458381 Public Sector Enh
242349    
242350    --
242351    -- set accounting attributes for the line type
242352    --
242353    l_entered_amt_idx := 3;
242354    l_accted_amt_idx  := 8;
242355    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
242356    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
242357    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
242358    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
242359    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
242360    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
242361    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
242362    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
242363    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
242364    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
242365    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
242366    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
242367    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
242368    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
242369    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
242370    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
242371    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
242372 
242373    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
242374    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
242375 
242376    ---------------------------------------------------------------------------------------------------------------
242377    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
242378    ---------------------------------------------------------------------------------------------------------------
242379    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
242380 
242381    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
242382    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
242383 
242384    IF xla_accounting_cache_pkg.GetValueChar
242385          (p_source_code         => 'LEDGER_CATEGORY_CODE'
242386          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
242387    AND l_bflow_method_code = 'PRIOR_ENTRY'
242388 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
242389    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
242390          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
242391        )
242392    THEN
242393          xla_ae_lines_pkg.BflowUpgEntry
242394            (p_business_method_code    => l_bflow_method_code
242395            ,p_business_class_code     => l_bflow_class_code
242396            ,p_balance_type            => l_balance_type_code);
242397    ELSE
242398       NULL;
242399 -- No business flow processing for business flow method of NONE.
242400    END IF;
242401 
242402    --
242403    -- call analytical criteria
242404    --
242405    
242406    --
242407    -- call description
242408    --
242409    
242410 xla_ae_lines_pkg.SetLineDescription(
242411    p_ae_header_id => l_ae_header_id
242412   ,p_description  => Description_1 (
242413      p_application_id         => p_application_id
242414    , p_ae_header_id           => l_ae_header_id 
242415 , p_source_1 => p_source_1
242416 , p_source_2 => p_source_2
242417 , p_source_3 => p_source_3
242418 , p_source_4 => p_source_4
242419 , p_source_5 => p_source_5
242420    )
242421 );
242422 
242423 
242424    --
242425    -- call ADRs
242426    -- Bug 4922099
242427    --
242428    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
242429         (NVL(l_actual_upg_option, 'N') = 'O') OR
242430         (NVL(l_enc_upg_option, 'N') = 'O')
242431       )
242432    THEN
242433    NULL;
242434    --
242435    --
242436    
242437   l_ccid := AcctDerRule_14(
242438            p_application_id           => p_application_id
242439          , p_ae_header_id             => l_ae_header_id 
242440 , p_source_24 => p_source_24
242441 , p_source_25 => p_source_25
242442 , p_source_26 => p_source_26
242443 , p_source_27 => p_source_27
242444 , p_source_28 => p_source_28
242445 , p_source_29 => p_source_29
242446 , p_source_30 => p_source_30
242447          , x_transaction_coa_id       => l_adr_transaction_coa_id
242448          , x_accounting_coa_id        => l_adr_accounting_coa_id
242449          , x_value_type_code          => l_adr_value_type_code
242450          , p_side                     => 'NA'
242451    );
242452 
242453    xla_ae_lines_pkg.set_ccid(
242454     p_code_combination_id          => l_ccid
242455   , p_value_type_code              => l_adr_value_type_code
242456   , p_transaction_coa_id           => l_adr_transaction_coa_id
242457   , p_accounting_coa_id            => l_adr_accounting_coa_id
242458   , p_adr_code                     => 'PI_CATEGORY_EXPENSE_ADR'
242459   , p_adr_type_code                => 'S'
242460   , p_component_type               => l_component_type
242461   , p_component_code               => l_component_code
242462   , p_component_type_code          => l_component_type_code
242463   , p_component_appl_id            => l_component_appl_id
242464   , p_amb_context_code             => l_amb_context_code
242465   , p_side                         => 'NA'
242466   );
242467 
242468 
242469    --
242470    --
242471    END IF;
242472    --
242473    -- Bug 4922099
242474    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
242475           (NVL(l_enc_upg_option, 'N') = 'O')
242476         ) AND
242477         (l_bflow_method_code = 'PRIOR_ENTRY')
242478       )
242479    THEN
242480       IF
242481       --
242482       1 = 2
242483       --
242484       THEN
242485       xla_accounting_err_pkg.build_message
242486                                     (p_appli_s_name            => 'XLA'
242487                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
242488                                     ,p_token_1                 => 'LINE_NUMBER'
242489                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
242490                                     ,p_token_2                 => 'LINE_TYPE_NAME'
242491                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
242492                                                                              l_component_type
242493                                                                             ,l_component_code
242494                                                                             ,l_component_type_code
242495                                                                             ,l_component_appl_id
242496                                                                             ,l_amb_context_code
242497                                                                             ,l_entity_code
242498                                                                             ,l_event_class_code
242499                                                                            )
242500                                     ,p_token_3                 => 'OWNER'
242501                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
242502                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
242503                                                                           ,p_lookup_code    => l_component_type_code
242504                                                                          )
242505                                     ,p_token_4                 => 'PRODUCT_NAME'
242506                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
242507                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
242508                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
242509                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
242510                                     ,p_ae_header_id            =>  NULL
242511                                        );
242512 
242513         IF (C_LEVEL_ERROR>= g_log_level) THEN
242514                  trace
242515                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
242516                       ,p_level    => C_LEVEL_ERROR
242517                       ,p_module   => l_log_module);
242518         END IF;
242519       END IF;
242520    END IF;
242521    --
242522    --
242523    ------------------------------------------------------------------------------------------------
242524    -- 4219869 Business Flow
242525    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
242526    -- Prior Entry.  Currently, the following code is always generated.
242527    ------------------------------------------------------------------------------------------------
242528    XLA_AE_LINES_PKG.ValidateCurrentLine;
242529 
242530    ------------------------------------------------------------------------------------
242531    -- 4219869 Business Flow
242532    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
242533    ------------------------------------------------------------------------------------
242534    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
242535 
242536    ----------------------------------------------------------------------------------
242537    -- 4219869 Business Flow
242538    -- Update journal entry status -- Need to generate this within IF <condition>
242539    ----------------------------------------------------------------------------------
242540    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
242541          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
242542          ,p_balance_type_code => l_balance_type_code
242543          );
242544 
242545    -------------------------------------------------------------------------------------------
242546    -- 4262811 - Generate the Accrual Reversal lines
242547    -------------------------------------------------------------------------------------------
242548    BEGIN
242549       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
242550                               (g_array_event(p_event_id).array_value_num('header_index'));
242551       IF l_acc_rev_flag IS NULL THEN
242552          l_acc_rev_flag := 'N';
242553       END IF;
242554    EXCEPTION
242555       WHEN OTHERS THEN
242556          l_acc_rev_flag := 'N';
242557    END;
242558    --
242559    IF (l_acc_rev_flag = 'Y') THEN
242560 
242561        -- 4645092  ------------------------------------------------------------------------------
242562        -- To allow MPA report to determine if it should generate report process
242563        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
242564        ------------------------------------------------------------------------------------------
242565 
242566        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
242567        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
242568    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
242569    -- call ADRs
242570    -- Bug 4922099
242571    --
242572    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
242573         (NVL(l_actual_upg_option, 'N') = 'O') OR
242574         (NVL(l_enc_upg_option, 'N') = 'O')
242575       )
242576    THEN
242577    NULL;
242578    --
242579    --
242580    
242581   l_ccid := AcctDerRule_14(
242582            p_application_id           => p_application_id
242583          , p_ae_header_id             => l_ae_header_id 
242584 , p_source_24 => p_source_24
242585 , p_source_25 => p_source_25
242586 , p_source_26 => p_source_26
242587 , p_source_27 => p_source_27
242588 , p_source_28 => p_source_28
242589 , p_source_29 => p_source_29
242590 , p_source_30 => p_source_30
242591          , x_transaction_coa_id       => l_adr_transaction_coa_id
242592          , x_accounting_coa_id        => l_adr_accounting_coa_id
242593          , x_value_type_code          => l_adr_value_type_code
242594          , p_side                     => 'NA'
242595    );
242596 
242597    xla_ae_lines_pkg.set_ccid(
242598     p_code_combination_id          => l_ccid
242599   , p_value_type_code              => l_adr_value_type_code
242600   , p_transaction_coa_id           => l_adr_transaction_coa_id
242601   , p_accounting_coa_id            => l_adr_accounting_coa_id
242602   , p_adr_code                     => 'PI_CATEGORY_EXPENSE_ADR'
242603   , p_adr_type_code                => 'S'
242604   , p_component_type               => l_component_type
242605   , p_component_code               => l_component_code
242606   , p_component_type_code          => l_component_type_code
242607   , p_component_appl_id            => l_component_appl_id
242608   , p_amb_context_code             => l_amb_context_code
242609   , p_side                         => 'NA'
242610   );
242611 
242612 
242613    --
242614    --
242615    END IF;
242616 
242617        --
242618        -- Update the line information that should be overwritten
242619        --
242620        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
242621                                          p_header_num   => 1);
242622        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
242623 
242624        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
242625 
242626        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
242627           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
242628        END IF;
242629 
242630       --
242631       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
242632       --
242633       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
242634           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
242635       ELSE
242636           ---------------------------------------------------------------------------------------------------
242637           -- 4262811a Switch Sign
242638           ---------------------------------------------------------------------------------------------------
242639           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
242640           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
242641                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
242642           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
242643                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
242644           -- 5132302
242645           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
242646                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
242647 
242648       END IF;
242649 
242650       -- 4955764
242651       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
242652       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
242653 
242654 
242655       XLA_AE_LINES_PKG.ValidateCurrentLine;
242656       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
242657 
242658       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
242659                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
242660                ,p_balance_type_code => l_balance_type_code);
242661 
242662    END IF;
242663 
242664    -----------------------------------------------------------------------------------------
242665    -- 4262811 Multiperiod Accounting
242666    -----------------------------------------------------------------------------------------
242667      -- No MPA option is assigned.
242668 
242669 
242670 END IF;
242671 END IF;
242672 --
242673 
242674 --
242675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
242676    trace
242677       (p_msg      => 'END of AcctLineType_437'
242678       ,p_level    => C_LEVEL_PROCEDURE
242679       ,p_module   => l_log_module);
242680 END IF;
242681 --
242682 EXCEPTION
242683   WHEN xla_exceptions_pkg.application_exception THEN
242684       RAISE;
242685   WHEN OTHERS THEN
242686        xla_exceptions_pkg.raise_message
242687            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_437');
242688 END AcctLineType_437;
242689 --
242690 
242691 ---------------------------------------
242692 --
242693 -- PRIVATE FUNCTION
242694 --         AcctLineType_438
242695 --
242696 ---------------------------------------
242697 PROCEDURE AcctLineType_438 (
242698   p_application_id        IN NUMBER
242699  ,p_event_id              IN NUMBER
242700  ,p_calculate_acctd_flag  IN VARCHAR2
242701  ,p_calculate_g_l_flag    IN VARCHAR2
242702  ,p_actual_flag           IN OUT VARCHAR2
242703  ,p_balance_type_code     OUT VARCHAR2
242704  ,p_gain_or_loss_ref      OUT VARCHAR2
242705  
242706 --TRANSACTION_ID
242707  , p_source_1            IN NUMBER
242708 --Item Concatenated Segments
242709  , p_source_2            IN VARCHAR2
242710 --Transaction Quantity
242711  , p_source_3            IN NUMBER
242712 --Transaction Unit of Measure Code
242713  , p_source_4            IN VARCHAR2
242714 --Inventory Transaction Type Description
242715  , p_source_5            IN VARCHAR2
242716 --Product Line Accounting Category Expense Account
242717  , p_source_24            IN NUMBER
242718 --Transfer to Subinventory or Cost Group category expense account
242719  , p_source_25            IN NUMBER
242720 --Cost Group Identifier
242721  , p_source_26            IN NUMBER
242722 --INV Header Transfer Cost Group ID
242723  , p_source_27            IN NUMBER
242724 --INV Header Cost Group ID
242725  , p_source_28            IN NUMBER
242726 --Subinventory Name
242727  , p_source_29            IN VARCHAR2
242728 --INV Header Subinventory
242729  , p_source_30            IN VARCHAR2
242730 --DISTRIBUTION_IDENTIFIER
242731  , p_source_84            IN NUMBER
242732 --Distribution Type
242733  , p_source_85            IN VARCHAR2
242734  , p_source_85_meaning    IN VARCHAR2
242735 --Entered Currency Code
242736  , p_source_88            IN VARCHAR2
242737 --Entered Amount
242738  , p_source_91            IN NUMBER
242739 --Currency Conversion Date
242740  , p_source_92            IN DATE
242741 --Currency Conversion Rate
242742  , p_source_93            IN NUMBER
242743 --Currency Conversion Type
242744  , p_source_94            IN VARCHAR2
242745 --Accounted Amount
242746  , p_source_95            IN NUMBER
242747 --Accounting Line Type
242748  , p_source_97            IN NUMBER
242749 )
242750 IS
242751 
242752 l_component_type              VARCHAR2(80);
242753 l_component_code              VARCHAR2(30);
242754 l_component_type_code         VARCHAR2(1);
242755 l_component_appl_id           INTEGER;
242756 l_amb_context_code            VARCHAR2(30);
242757 l_entity_code                 VARCHAR2(30);
242758 l_event_class_code            VARCHAR2(30);
242759 l_ae_header_id                NUMBER;
242760 l_event_type_code             VARCHAR2(30);
242761 l_line_definition_code        VARCHAR2(30);
242762 l_line_definition_owner_code  VARCHAR2(1);
242763 --
242764 -- adr variables
242765 l_segment                     VARCHAR2(30);
242766 l_ccid                        NUMBER;
242767 l_adr_transaction_coa_id      NUMBER;
242768 l_adr_accounting_coa_id       NUMBER;
242769 l_adr_flexfield_segment_code  VARCHAR2(30);
242770 l_adr_flex_value_set_id       NUMBER;
242771 l_adr_value_type_code         VARCHAR2(30);
242772 l_adr_value_combination_id    NUMBER;
242773 l_adr_value_segment_code      VARCHAR2(30);
242774 
242775 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
242776 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
242777 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
242778 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
242779 
242780 -- 4262811 Variables ------------------------------------------------------------------------------------------
242781 l_entered_amt_idx             NUMBER;
242782 l_accted_amt_idx              NUMBER;
242783 l_acc_rev_flag                VARCHAR2(1);
242784 l_accrual_line_num            NUMBER;
242785 l_tmp_amt                     NUMBER;
242786 l_acc_rev_natural_side_code   VARCHAR2(1);
242787 
242788 l_num_entries                 NUMBER;
242789 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
242790 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
242791 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
242792 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
242793 l_recog_line_1                NUMBER;
242794 l_recog_line_2                NUMBER;
242795 
242796 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
242797 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
242798 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
242799 
242800 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
242801 
242802 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
242803 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
242804 
242805 ---------------------------------------------------------------------------------------------------------------
242806 
242807 
242808 --
242809 -- bulk performance
242810 --
242811 l_balance_type_code           VARCHAR2(1);
242812 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
242813 l_log_module                  VARCHAR2(240);
242814 
242815 --
242816 -- Upgrade strategy
242817 --
242818 l_actual_upg_option           VARCHAR2(1);
242819 l_enc_upg_option           VARCHAR2(1);
242820 
242821 --
242822 BEGIN
242823 --
242824 IF g_log_enabled THEN
242825       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_438';
242826 END IF;
242827 --
242828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
242829 
242830       trace
242831          (p_msg      => 'BEGIN of AcctLineType_438'
242832          ,p_level    => C_LEVEL_PROCEDURE
242833          ,p_module   => l_log_module);
242834 
242835 END IF;
242836 --
242837 l_component_type             := 'AMB_JLT';
242838 l_component_code             := 'PI_INTRAORG_TXFR_SUB_TXFR_EXP';
242839 l_component_type_code        := 'S';
242840 l_component_appl_id          :=  707;
242841 l_amb_context_code           := 'DEFAULT';
242842 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
242843 l_event_class_code           := 'USER_DEFINE';
242844 l_event_type_code            := 'UCG_TXFR';
242845 l_line_definition_owner_code := 'S';
242846 l_line_definition_code       := 'PI_CG_TXFR';
242847 --
242848 l_balance_type_code          := 'A';
242849 l_segment                     := NULL;
242850 l_ccid                        := NULL;
242851 l_adr_transaction_coa_id      := NULL;
242852 l_adr_accounting_coa_id       := NULL;
242853 l_adr_flexfield_segment_code  := NULL;
242854 l_adr_flex_value_set_id       := NULL;
242855 l_adr_value_type_code         := NULL;
242856 l_adr_value_combination_id    := NULL;
242857 l_adr_value_segment_code      := NULL;
242858 
242859 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
242860 l_bflow_class_code           := '';    -- 4219869 Business Flow
242861 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
242862 l_budgetary_control_flag     := 'N';
242863 
242864 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
242865 l_bflow_applied_to_amt       := NULL; -- 5132302
242866 l_entered_amt_idx            := NULL;          -- 4262811
242867 l_accted_amt_idx             := NULL;          -- 4262811
242868 l_acc_rev_flag               := NULL;          -- 4262811
242869 l_accrual_line_num           := NULL;          -- 4262811
242870 l_tmp_amt                    := NULL;          -- 4262811
242871 --
242872  
242873 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
242874     l_balance_type_code <> 'B' THEN
242875 IF NVL(p_source_97,9E125) =  2
242876  THEN 
242877 
242878    --
242879    XLA_AE_LINES_PKG.SetNewLine;
242880 
242881    p_balance_type_code          := l_balance_type_code;
242882    -- set the flag so later we will know whether the gain loss line needs to be created
242883    
242884    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
242885      p_actual_flag :='A';
242886    END IF;
242887 
242888    --
242889    -- bulk performance
242890    --
242891    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
242892                                       p_header_num   => 0); -- 4262811
242893    --
242894    -- set accounting line options
242895    --
242896    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
242897            p_natural_side_code          => 'C'
242898          , p_gain_or_loss_flag          => 'N'
242899          , p_gl_transfer_mode_code      => 'S'
242900          , p_acct_entry_type_code       => 'A'
242901          , p_switch_side_flag           => 'Y'
242902          , p_merge_duplicate_code       => 'N'
242903          );
242904    --
242905    l_acc_rev_natural_side_code := 'D';  -- 4262811
242906    -- 
242907    --
242908    -- set accounting line type info
242909    --
242910    xla_ae_lines_pkg.SetAcctLineType
242911       (p_component_type             => l_component_type
242912       ,p_event_type_code            => l_event_type_code
242913       ,p_line_definition_owner_code => l_line_definition_owner_code
242914       ,p_line_definition_code       => l_line_definition_code
242915       ,p_accounting_line_code       => l_component_code
242916       ,p_accounting_line_type_code  => l_component_type_code
242917       ,p_accounting_line_appl_id    => l_component_appl_id
242918       ,p_amb_context_code           => l_amb_context_code
242919       ,p_entity_code                => l_entity_code
242920       ,p_event_class_code           => l_event_class_code);
242921    --
242922    -- set accounting class
242923    --
242924    xla_ae_lines_pkg.SetAcctClass(
242925            p_accounting_class_code  => 'EXPENSE'
242926          , p_ae_header_id           => l_ae_header_id
242927          );
242928 
242929    --
242930    -- set rounding class
242931    --
242932    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
242933                       'EXPENSE';
242934 
242935    --
242936    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
242937    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
242938    --
242939    -- bulk performance
242940    --
242941    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
242942 
242943    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
242944       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
242945 
242946    -- 4955764
242947    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
242948       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
242949 
242950    -- 4458381 Public Sector Enh
242951    
242952    --
242953    -- set accounting attributes for the line type
242954    --
242955    l_entered_amt_idx := 3;
242956    l_accted_amt_idx  := 8;
242957    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
242958    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
242959    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
242960    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
242961    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
242962    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
242963    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
242964    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
242965    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
242966    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
242967    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
242968    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
242969    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
242970    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
242971    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
242972    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
242973    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
242974 
242975    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
242976    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
242977 
242978    ---------------------------------------------------------------------------------------------------------------
242979    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
242980    ---------------------------------------------------------------------------------------------------------------
242981    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
242982 
242983    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
242984    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
242985 
242986    IF xla_accounting_cache_pkg.GetValueChar
242987          (p_source_code         => 'LEDGER_CATEGORY_CODE'
242988          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
242989    AND l_bflow_method_code = 'PRIOR_ENTRY'
242990 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
242991    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
242992          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
242993        )
242994    THEN
242995          xla_ae_lines_pkg.BflowUpgEntry
242996            (p_business_method_code    => l_bflow_method_code
242997            ,p_business_class_code     => l_bflow_class_code
242998            ,p_balance_type            => l_balance_type_code);
242999    ELSE
243000       NULL;
243001 -- No business flow processing for business flow method of NONE.
243002    END IF;
243003 
243004    --
243005    -- call analytical criteria
243006    --
243007    
243008    --
243009    -- call description
243010    --
243011    
243012 xla_ae_lines_pkg.SetLineDescription(
243013    p_ae_header_id => l_ae_header_id
243014   ,p_description  => Description_1 (
243015      p_application_id         => p_application_id
243016    , p_ae_header_id           => l_ae_header_id 
243017 , p_source_1 => p_source_1
243018 , p_source_2 => p_source_2
243019 , p_source_3 => p_source_3
243020 , p_source_4 => p_source_4
243021 , p_source_5 => p_source_5
243022    )
243023 );
243024 
243025 
243026    --
243027    -- call ADRs
243028    -- Bug 4922099
243029    --
243030    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
243031         (NVL(l_actual_upg_option, 'N') = 'O') OR
243032         (NVL(l_enc_upg_option, 'N') = 'O')
243033       )
243034    THEN
243035    NULL;
243036    --
243037    --
243038    
243039   l_ccid := AcctDerRule_14(
243040            p_application_id           => p_application_id
243041          , p_ae_header_id             => l_ae_header_id 
243042 , p_source_24 => p_source_24
243043 , p_source_25 => p_source_25
243044 , p_source_26 => p_source_26
243045 , p_source_27 => p_source_27
243046 , p_source_28 => p_source_28
243047 , p_source_29 => p_source_29
243048 , p_source_30 => p_source_30
243049          , x_transaction_coa_id       => l_adr_transaction_coa_id
243050          , x_accounting_coa_id        => l_adr_accounting_coa_id
243051          , x_value_type_code          => l_adr_value_type_code
243052          , p_side                     => 'NA'
243053    );
243054 
243055    xla_ae_lines_pkg.set_ccid(
243056     p_code_combination_id          => l_ccid
243057   , p_value_type_code              => l_adr_value_type_code
243058   , p_transaction_coa_id           => l_adr_transaction_coa_id
243059   , p_accounting_coa_id            => l_adr_accounting_coa_id
243060   , p_adr_code                     => 'PI_CATEGORY_EXPENSE_ADR'
243061   , p_adr_type_code                => 'S'
243062   , p_component_type               => l_component_type
243063   , p_component_code               => l_component_code
243064   , p_component_type_code          => l_component_type_code
243065   , p_component_appl_id            => l_component_appl_id
243066   , p_amb_context_code             => l_amb_context_code
243067   , p_side                         => 'NA'
243068   );
243069 
243070 
243071    --
243072    --
243073    END IF;
243074    --
243075    -- Bug 4922099
243076    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
243077           (NVL(l_enc_upg_option, 'N') = 'O')
243078         ) AND
243079         (l_bflow_method_code = 'PRIOR_ENTRY')
243080       )
243081    THEN
243082       IF
243083       --
243084       1 = 2
243085       --
243086       THEN
243087       xla_accounting_err_pkg.build_message
243088                                     (p_appli_s_name            => 'XLA'
243089                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
243090                                     ,p_token_1                 => 'LINE_NUMBER'
243091                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
243092                                     ,p_token_2                 => 'LINE_TYPE_NAME'
243093                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
243094                                                                              l_component_type
243095                                                                             ,l_component_code
243096                                                                             ,l_component_type_code
243097                                                                             ,l_component_appl_id
243098                                                                             ,l_amb_context_code
243099                                                                             ,l_entity_code
243100                                                                             ,l_event_class_code
243101                                                                            )
243102                                     ,p_token_3                 => 'OWNER'
243103                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
243104                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
243105                                                                           ,p_lookup_code    => l_component_type_code
243106                                                                          )
243107                                     ,p_token_4                 => 'PRODUCT_NAME'
243108                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
243109                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
243110                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
243111                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
243112                                     ,p_ae_header_id            =>  NULL
243113                                        );
243114 
243115         IF (C_LEVEL_ERROR>= g_log_level) THEN
243116                  trace
243117                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
243118                       ,p_level    => C_LEVEL_ERROR
243119                       ,p_module   => l_log_module);
243120         END IF;
243121       END IF;
243122    END IF;
243123    --
243124    --
243125    ------------------------------------------------------------------------------------------------
243126    -- 4219869 Business Flow
243127    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
243128    -- Prior Entry.  Currently, the following code is always generated.
243129    ------------------------------------------------------------------------------------------------
243130    XLA_AE_LINES_PKG.ValidateCurrentLine;
243131 
243132    ------------------------------------------------------------------------------------
243133    -- 4219869 Business Flow
243134    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
243135    ------------------------------------------------------------------------------------
243136    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
243137 
243138    ----------------------------------------------------------------------------------
243139    -- 4219869 Business Flow
243140    -- Update journal entry status -- Need to generate this within IF <condition>
243141    ----------------------------------------------------------------------------------
243142    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
243143          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
243144          ,p_balance_type_code => l_balance_type_code
243145          );
243146 
243147    -------------------------------------------------------------------------------------------
243148    -- 4262811 - Generate the Accrual Reversal lines
243149    -------------------------------------------------------------------------------------------
243150    BEGIN
243151       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
243152                               (g_array_event(p_event_id).array_value_num('header_index'));
243153       IF l_acc_rev_flag IS NULL THEN
243154          l_acc_rev_flag := 'N';
243155       END IF;
243156    EXCEPTION
243157       WHEN OTHERS THEN
243158          l_acc_rev_flag := 'N';
243159    END;
243160    --
243161    IF (l_acc_rev_flag = 'Y') THEN
243162 
243163        -- 4645092  ------------------------------------------------------------------------------
243164        -- To allow MPA report to determine if it should generate report process
243165        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
243166        ------------------------------------------------------------------------------------------
243167 
243168        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
243169        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
243170    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
243171    -- call ADRs
243172    -- Bug 4922099
243173    --
243174    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
243175         (NVL(l_actual_upg_option, 'N') = 'O') OR
243176         (NVL(l_enc_upg_option, 'N') = 'O')
243177       )
243178    THEN
243179    NULL;
243180    --
243181    --
243182    
243183   l_ccid := AcctDerRule_14(
243184            p_application_id           => p_application_id
243185          , p_ae_header_id             => l_ae_header_id 
243186 , p_source_24 => p_source_24
243187 , p_source_25 => p_source_25
243188 , p_source_26 => p_source_26
243189 , p_source_27 => p_source_27
243190 , p_source_28 => p_source_28
243191 , p_source_29 => p_source_29
243192 , p_source_30 => p_source_30
243193          , x_transaction_coa_id       => l_adr_transaction_coa_id
243194          , x_accounting_coa_id        => l_adr_accounting_coa_id
243195          , x_value_type_code          => l_adr_value_type_code
243196          , p_side                     => 'NA'
243197    );
243198 
243199    xla_ae_lines_pkg.set_ccid(
243200     p_code_combination_id          => l_ccid
243201   , p_value_type_code              => l_adr_value_type_code
243202   , p_transaction_coa_id           => l_adr_transaction_coa_id
243203   , p_accounting_coa_id            => l_adr_accounting_coa_id
243204   , p_adr_code                     => 'PI_CATEGORY_EXPENSE_ADR'
243205   , p_adr_type_code                => 'S'
243206   , p_component_type               => l_component_type
243207   , p_component_code               => l_component_code
243208   , p_component_type_code          => l_component_type_code
243209   , p_component_appl_id            => l_component_appl_id
243210   , p_amb_context_code             => l_amb_context_code
243211   , p_side                         => 'NA'
243212   );
243213 
243214 
243215    --
243216    --
243217    END IF;
243218 
243219        --
243220        -- Update the line information that should be overwritten
243221        --
243222        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
243223                                          p_header_num   => 1);
243224        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
243225 
243226        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
243227 
243228        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
243229           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
243230        END IF;
243231 
243232       --
243233       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
243234       --
243235       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
243236           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
243237       ELSE
243238           ---------------------------------------------------------------------------------------------------
243239           -- 4262811a Switch Sign
243240           ---------------------------------------------------------------------------------------------------
243241           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
243242           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
243243                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
243244           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
243245                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
243246           -- 5132302
243247           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
243248                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
243249 
243250       END IF;
243251 
243252       -- 4955764
243253       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
243254       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
243255 
243256 
243257       XLA_AE_LINES_PKG.ValidateCurrentLine;
243258       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
243259 
243260       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
243261                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
243262                ,p_balance_type_code => l_balance_type_code);
243263 
243264    END IF;
243265 
243266    -----------------------------------------------------------------------------------------
243267    -- 4262811 Multiperiod Accounting
243268    -----------------------------------------------------------------------------------------
243269      -- No MPA option is assigned.
243270 
243271 
243272 END IF;
243273 END IF;
243274 --
243275 
243276 --
243277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
243278    trace
243279       (p_msg      => 'END of AcctLineType_438'
243280       ,p_level    => C_LEVEL_PROCEDURE
243281       ,p_module   => l_log_module);
243282 END IF;
243283 --
243284 EXCEPTION
243285   WHEN xla_exceptions_pkg.application_exception THEN
243286       RAISE;
243287   WHEN OTHERS THEN
243288        xla_exceptions_pkg.raise_message
243289            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_438');
243290 END AcctLineType_438;
243291 --
243292 
243293 ---------------------------------------
243294 --
243295 -- PRIVATE FUNCTION
243296 --         AcctLineType_439
243297 --
243298 ---------------------------------------
243299 PROCEDURE AcctLineType_439 (
243300   p_application_id        IN NUMBER
243301  ,p_event_id              IN NUMBER
243302  ,p_calculate_acctd_flag  IN VARCHAR2
243303  ,p_calculate_g_l_flag    IN VARCHAR2
243304  ,p_actual_flag           IN OUT VARCHAR2
243305  ,p_balance_type_code     OUT VARCHAR2
243306  ,p_gain_or_loss_ref      OUT VARCHAR2
243307  
243308 --TRANSACTION_ID
243309  , p_source_1            IN NUMBER
243310 --Item Concatenated Segments
243311  , p_source_2            IN VARCHAR2
243312 --Transaction Quantity
243313  , p_source_3            IN NUMBER
243314 --Transaction Unit of Measure Code
243315  , p_source_4            IN VARCHAR2
243316 --Inventory Transaction Type Description
243317  , p_source_5            IN VARCHAR2
243318 --Product Line Accounting Category Expense Account
243319  , p_source_24            IN NUMBER
243320 --Transfer to Subinventory or Cost Group category expense account
243321  , p_source_25            IN NUMBER
243322 --Cost Group Identifier
243323  , p_source_26            IN NUMBER
243324 --INV Header Transfer Cost Group ID
243325  , p_source_27            IN NUMBER
243326 --INV Header Cost Group ID
243327  , p_source_28            IN NUMBER
243328 --Subinventory Name
243329  , p_source_29            IN VARCHAR2
243330 --INV Header Subinventory
243331  , p_source_30            IN VARCHAR2
243332 --DISTRIBUTION_IDENTIFIER
243333  , p_source_84            IN NUMBER
243334 --Distribution Type
243335  , p_source_85            IN VARCHAR2
243336  , p_source_85_meaning    IN VARCHAR2
243337 --Entered Currency Code
243338  , p_source_88            IN VARCHAR2
243339 --Entered Amount
243340  , p_source_91            IN NUMBER
243341 --Currency Conversion Date
243342  , p_source_92            IN DATE
243343 --Currency Conversion Rate
243344  , p_source_93            IN NUMBER
243345 --Currency Conversion Type
243346  , p_source_94            IN VARCHAR2
243347 --Accounted Amount
243348  , p_source_95            IN NUMBER
243349 --Accounting Line Type
243350  , p_source_97            IN NUMBER
243351 )
243352 IS
243353 
243354 l_component_type              VARCHAR2(80);
243355 l_component_code              VARCHAR2(30);
243356 l_component_type_code         VARCHAR2(1);
243357 l_component_appl_id           INTEGER;
243358 l_amb_context_code            VARCHAR2(30);
243359 l_entity_code                 VARCHAR2(30);
243360 l_event_class_code            VARCHAR2(30);
243361 l_ae_header_id                NUMBER;
243362 l_event_type_code             VARCHAR2(30);
243363 l_line_definition_code        VARCHAR2(30);
243364 l_line_definition_owner_code  VARCHAR2(1);
243365 --
243366 -- adr variables
243367 l_segment                     VARCHAR2(30);
243368 l_ccid                        NUMBER;
243369 l_adr_transaction_coa_id      NUMBER;
243370 l_adr_accounting_coa_id       NUMBER;
243371 l_adr_flexfield_segment_code  VARCHAR2(30);
243372 l_adr_flex_value_set_id       NUMBER;
243373 l_adr_value_type_code         VARCHAR2(30);
243374 l_adr_value_combination_id    NUMBER;
243375 l_adr_value_segment_code      VARCHAR2(30);
243376 
243377 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
243378 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
243379 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
243380 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
243381 
243382 -- 4262811 Variables ------------------------------------------------------------------------------------------
243383 l_entered_amt_idx             NUMBER;
243384 l_accted_amt_idx              NUMBER;
243385 l_acc_rev_flag                VARCHAR2(1);
243386 l_accrual_line_num            NUMBER;
243387 l_tmp_amt                     NUMBER;
243388 l_acc_rev_natural_side_code   VARCHAR2(1);
243389 
243390 l_num_entries                 NUMBER;
243391 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
243392 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
243393 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
243394 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
243395 l_recog_line_1                NUMBER;
243396 l_recog_line_2                NUMBER;
243397 
243398 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
243399 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
243400 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
243401 
243402 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
243403 
243404 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
243405 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
243406 
243407 ---------------------------------------------------------------------------------------------------------------
243408 
243409 
243410 --
243411 -- bulk performance
243412 --
243413 l_balance_type_code           VARCHAR2(1);
243414 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
243415 l_log_module                  VARCHAR2(240);
243416 
243417 --
243418 -- Upgrade strategy
243419 --
243420 l_actual_upg_option           VARCHAR2(1);
243421 l_enc_upg_option           VARCHAR2(1);
243422 
243423 --
243424 BEGIN
243425 --
243426 IF g_log_enabled THEN
243427       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_439';
243428 END IF;
243429 --
243430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
243431 
243432       trace
243433          (p_msg      => 'BEGIN of AcctLineType_439'
243434          ,p_level    => C_LEVEL_PROCEDURE
243435          ,p_module   => l_log_module);
243436 
243437 END IF;
243438 --
243439 l_component_type             := 'AMB_JLT';
243440 l_component_code             := 'PI_INTRAORG_TXFR_SUB_TXFR_EXP';
243441 l_component_type_code        := 'S';
243442 l_component_appl_id          :=  707;
243443 l_amb_context_code           := 'DEFAULT';
243444 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
243445 l_event_class_code           := 'USER_DEFINE';
243446 l_event_type_code            := 'USUB_TXFR';
243447 l_line_definition_owner_code := 'S';
243448 l_line_definition_code       := 'PI_INTRAORG_TXFR';
243449 --
243450 l_balance_type_code          := 'A';
243451 l_segment                     := NULL;
243452 l_ccid                        := NULL;
243453 l_adr_transaction_coa_id      := NULL;
243454 l_adr_accounting_coa_id       := NULL;
243455 l_adr_flexfield_segment_code  := NULL;
243456 l_adr_flex_value_set_id       := NULL;
243457 l_adr_value_type_code         := NULL;
243458 l_adr_value_combination_id    := NULL;
243459 l_adr_value_segment_code      := NULL;
243460 
243461 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
243462 l_bflow_class_code           := '';    -- 4219869 Business Flow
243463 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
243464 l_budgetary_control_flag     := 'N';
243465 
243466 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
243467 l_bflow_applied_to_amt       := NULL; -- 5132302
243468 l_entered_amt_idx            := NULL;          -- 4262811
243469 l_accted_amt_idx             := NULL;          -- 4262811
243470 l_acc_rev_flag               := NULL;          -- 4262811
243471 l_accrual_line_num           := NULL;          -- 4262811
243472 l_tmp_amt                    := NULL;          -- 4262811
243473 --
243474  
243475 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
243476     l_balance_type_code <> 'B' THEN
243477 IF NVL(p_source_97,9E125) =  2
243478  THEN 
243479 
243480    --
243481    XLA_AE_LINES_PKG.SetNewLine;
243482 
243483    p_balance_type_code          := l_balance_type_code;
243484    -- set the flag so later we will know whether the gain loss line needs to be created
243485    
243486    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
243487      p_actual_flag :='A';
243488    END IF;
243489 
243490    --
243491    -- bulk performance
243492    --
243493    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
243494                                       p_header_num   => 0); -- 4262811
243495    --
243496    -- set accounting line options
243497    --
243498    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
243499            p_natural_side_code          => 'C'
243500          , p_gain_or_loss_flag          => 'N'
243501          , p_gl_transfer_mode_code      => 'S'
243502          , p_acct_entry_type_code       => 'A'
243503          , p_switch_side_flag           => 'Y'
243504          , p_merge_duplicate_code       => 'N'
243505          );
243506    --
243507    l_acc_rev_natural_side_code := 'D';  -- 4262811
243508    -- 
243509    --
243510    -- set accounting line type info
243511    --
243512    xla_ae_lines_pkg.SetAcctLineType
243513       (p_component_type             => l_component_type
243514       ,p_event_type_code            => l_event_type_code
243515       ,p_line_definition_owner_code => l_line_definition_owner_code
243516       ,p_line_definition_code       => l_line_definition_code
243517       ,p_accounting_line_code       => l_component_code
243518       ,p_accounting_line_type_code  => l_component_type_code
243519       ,p_accounting_line_appl_id    => l_component_appl_id
243520       ,p_amb_context_code           => l_amb_context_code
243521       ,p_entity_code                => l_entity_code
243522       ,p_event_class_code           => l_event_class_code);
243523    --
243524    -- set accounting class
243525    --
243526    xla_ae_lines_pkg.SetAcctClass(
243527            p_accounting_class_code  => 'EXPENSE'
243528          , p_ae_header_id           => l_ae_header_id
243529          );
243530 
243531    --
243532    -- set rounding class
243533    --
243534    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
243535                       'EXPENSE';
243536 
243537    --
243538    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
243539    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
243540    --
243541    -- bulk performance
243542    --
243543    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
243544 
243545    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
243546       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
243547 
243548    -- 4955764
243549    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
243550       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
243551 
243552    -- 4458381 Public Sector Enh
243553    
243554    --
243555    -- set accounting attributes for the line type
243556    --
243557    l_entered_amt_idx := 3;
243558    l_accted_amt_idx  := 8;
243559    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
243560    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
243561    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
243562    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
243563    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
243564    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
243565    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
243566    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
243567    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
243568    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
243569    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
243570    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
243571    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
243572    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
243573    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
243574    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
243575    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
243576 
243577    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
243578    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
243579 
243580    ---------------------------------------------------------------------------------------------------------------
243581    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
243582    ---------------------------------------------------------------------------------------------------------------
243583    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
243584 
243585    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
243586    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
243587 
243588    IF xla_accounting_cache_pkg.GetValueChar
243589          (p_source_code         => 'LEDGER_CATEGORY_CODE'
243590          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
243591    AND l_bflow_method_code = 'PRIOR_ENTRY'
243592 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
243593    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
243594          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
243595        )
243596    THEN
243597          xla_ae_lines_pkg.BflowUpgEntry
243598            (p_business_method_code    => l_bflow_method_code
243599            ,p_business_class_code     => l_bflow_class_code
243600            ,p_balance_type            => l_balance_type_code);
243601    ELSE
243602       NULL;
243603 -- No business flow processing for business flow method of NONE.
243604    END IF;
243605 
243606    --
243607    -- call analytical criteria
243608    --
243609    
243610    --
243611    -- call description
243612    --
243613    
243614 xla_ae_lines_pkg.SetLineDescription(
243615    p_ae_header_id => l_ae_header_id
243616   ,p_description  => Description_1 (
243617      p_application_id         => p_application_id
243618    , p_ae_header_id           => l_ae_header_id 
243619 , p_source_1 => p_source_1
243620 , p_source_2 => p_source_2
243621 , p_source_3 => p_source_3
243622 , p_source_4 => p_source_4
243623 , p_source_5 => p_source_5
243624    )
243625 );
243626 
243627 
243628    --
243629    -- call ADRs
243630    -- Bug 4922099
243631    --
243632    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
243633         (NVL(l_actual_upg_option, 'N') = 'O') OR
243634         (NVL(l_enc_upg_option, 'N') = 'O')
243635       )
243636    THEN
243637    NULL;
243638    --
243639    --
243640    
243641   l_ccid := AcctDerRule_14(
243642            p_application_id           => p_application_id
243643          , p_ae_header_id             => l_ae_header_id 
243644 , p_source_24 => p_source_24
243645 , p_source_25 => p_source_25
243646 , p_source_26 => p_source_26
243647 , p_source_27 => p_source_27
243648 , p_source_28 => p_source_28
243649 , p_source_29 => p_source_29
243650 , p_source_30 => p_source_30
243651          , x_transaction_coa_id       => l_adr_transaction_coa_id
243652          , x_accounting_coa_id        => l_adr_accounting_coa_id
243653          , x_value_type_code          => l_adr_value_type_code
243654          , p_side                     => 'NA'
243655    );
243656 
243657    xla_ae_lines_pkg.set_ccid(
243658     p_code_combination_id          => l_ccid
243659   , p_value_type_code              => l_adr_value_type_code
243660   , p_transaction_coa_id           => l_adr_transaction_coa_id
243661   , p_accounting_coa_id            => l_adr_accounting_coa_id
243662   , p_adr_code                     => 'PI_CATEGORY_EXPENSE_ADR'
243663   , p_adr_type_code                => 'S'
243664   , p_component_type               => l_component_type
243665   , p_component_code               => l_component_code
243666   , p_component_type_code          => l_component_type_code
243667   , p_component_appl_id            => l_component_appl_id
243668   , p_amb_context_code             => l_amb_context_code
243669   , p_side                         => 'NA'
243670   );
243671 
243672 
243673    --
243674    --
243675    END IF;
243676    --
243677    -- Bug 4922099
243678    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
243679           (NVL(l_enc_upg_option, 'N') = 'O')
243680         ) AND
243681         (l_bflow_method_code = 'PRIOR_ENTRY')
243682       )
243683    THEN
243684       IF
243685       --
243686       1 = 2
243687       --
243688       THEN
243689       xla_accounting_err_pkg.build_message
243690                                     (p_appli_s_name            => 'XLA'
243691                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
243692                                     ,p_token_1                 => 'LINE_NUMBER'
243693                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
243694                                     ,p_token_2                 => 'LINE_TYPE_NAME'
243695                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
243696                                                                              l_component_type
243697                                                                             ,l_component_code
243698                                                                             ,l_component_type_code
243699                                                                             ,l_component_appl_id
243700                                                                             ,l_amb_context_code
243701                                                                             ,l_entity_code
243702                                                                             ,l_event_class_code
243703                                                                            )
243704                                     ,p_token_3                 => 'OWNER'
243705                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
243706                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
243707                                                                           ,p_lookup_code    => l_component_type_code
243708                                                                          )
243709                                     ,p_token_4                 => 'PRODUCT_NAME'
243710                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
243711                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
243712                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
243713                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
243714                                     ,p_ae_header_id            =>  NULL
243715                                        );
243716 
243717         IF (C_LEVEL_ERROR>= g_log_level) THEN
243718                  trace
243719                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
243720                       ,p_level    => C_LEVEL_ERROR
243721                       ,p_module   => l_log_module);
243722         END IF;
243723       END IF;
243724    END IF;
243725    --
243726    --
243727    ------------------------------------------------------------------------------------------------
243728    -- 4219869 Business Flow
243729    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
243730    -- Prior Entry.  Currently, the following code is always generated.
243731    ------------------------------------------------------------------------------------------------
243732    XLA_AE_LINES_PKG.ValidateCurrentLine;
243733 
243734    ------------------------------------------------------------------------------------
243735    -- 4219869 Business Flow
243736    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
243737    ------------------------------------------------------------------------------------
243738    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
243739 
243740    ----------------------------------------------------------------------------------
243741    -- 4219869 Business Flow
243742    -- Update journal entry status -- Need to generate this within IF <condition>
243743    ----------------------------------------------------------------------------------
243744    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
243745          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
243746          ,p_balance_type_code => l_balance_type_code
243747          );
243748 
243749    -------------------------------------------------------------------------------------------
243750    -- 4262811 - Generate the Accrual Reversal lines
243751    -------------------------------------------------------------------------------------------
243752    BEGIN
243753       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
243754                               (g_array_event(p_event_id).array_value_num('header_index'));
243755       IF l_acc_rev_flag IS NULL THEN
243756          l_acc_rev_flag := 'N';
243757       END IF;
243758    EXCEPTION
243759       WHEN OTHERS THEN
243760          l_acc_rev_flag := 'N';
243761    END;
243762    --
243763    IF (l_acc_rev_flag = 'Y') THEN
243764 
243765        -- 4645092  ------------------------------------------------------------------------------
243766        -- To allow MPA report to determine if it should generate report process
243767        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
243768        ------------------------------------------------------------------------------------------
243769 
243770        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
243771        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
243772    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
243773    -- call ADRs
243774    -- Bug 4922099
243775    --
243776    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
243777         (NVL(l_actual_upg_option, 'N') = 'O') OR
243778         (NVL(l_enc_upg_option, 'N') = 'O')
243779       )
243780    THEN
243781    NULL;
243782    --
243783    --
243784    
243785   l_ccid := AcctDerRule_14(
243786            p_application_id           => p_application_id
243787          , p_ae_header_id             => l_ae_header_id 
243788 , p_source_24 => p_source_24
243789 , p_source_25 => p_source_25
243790 , p_source_26 => p_source_26
243791 , p_source_27 => p_source_27
243792 , p_source_28 => p_source_28
243793 , p_source_29 => p_source_29
243794 , p_source_30 => p_source_30
243795          , x_transaction_coa_id       => l_adr_transaction_coa_id
243796          , x_accounting_coa_id        => l_adr_accounting_coa_id
243797          , x_value_type_code          => l_adr_value_type_code
243798          , p_side                     => 'NA'
243799    );
243800 
243801    xla_ae_lines_pkg.set_ccid(
243802     p_code_combination_id          => l_ccid
243803   , p_value_type_code              => l_adr_value_type_code
243804   , p_transaction_coa_id           => l_adr_transaction_coa_id
243805   , p_accounting_coa_id            => l_adr_accounting_coa_id
243806   , p_adr_code                     => 'PI_CATEGORY_EXPENSE_ADR'
243807   , p_adr_type_code                => 'S'
243808   , p_component_type               => l_component_type
243809   , p_component_code               => l_component_code
243810   , p_component_type_code          => l_component_type_code
243811   , p_component_appl_id            => l_component_appl_id
243812   , p_amb_context_code             => l_amb_context_code
243813   , p_side                         => 'NA'
243814   );
243815 
243816 
243817    --
243818    --
243819    END IF;
243820 
243821        --
243822        -- Update the line information that should be overwritten
243823        --
243824        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
243825                                          p_header_num   => 1);
243826        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
243827 
243828        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
243829 
243830        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
243831           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
243832        END IF;
243833 
243834       --
243835       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
243836       --
243837       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
243838           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
243839       ELSE
243840           ---------------------------------------------------------------------------------------------------
243841           -- 4262811a Switch Sign
243842           ---------------------------------------------------------------------------------------------------
243843           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
243844           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
243845                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
243846           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
243847                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
243848           -- 5132302
243849           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
243850                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
243851 
243852       END IF;
243853 
243854       -- 4955764
243855       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
243856       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
243857 
243858 
243859       XLA_AE_LINES_PKG.ValidateCurrentLine;
243860       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
243861 
243862       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
243863                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
243864                ,p_balance_type_code => l_balance_type_code);
243865 
243866    END IF;
243867 
243868    -----------------------------------------------------------------------------------------
243869    -- 4262811 Multiperiod Accounting
243870    -----------------------------------------------------------------------------------------
243871      -- No MPA option is assigned.
243872 
243873 
243874 END IF;
243875 END IF;
243876 --
243877 
243878 --
243879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
243880    trace
243881       (p_msg      => 'END of AcctLineType_439'
243882       ,p_level    => C_LEVEL_PROCEDURE
243883       ,p_module   => l_log_module);
243884 END IF;
243885 --
243886 EXCEPTION
243887   WHEN xla_exceptions_pkg.application_exception THEN
243888       RAISE;
243889   WHEN OTHERS THEN
243890        xla_exceptions_pkg.raise_message
243891            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_439');
243892 END AcctLineType_439;
243893 --
243894 
243895 ---------------------------------------
243896 --
243897 -- PRIVATE FUNCTION
243898 --         AcctLineType_440
243899 --
243900 ---------------------------------------
243901 PROCEDURE AcctLineType_440 (
243902   p_application_id        IN NUMBER
243903  ,p_event_id              IN NUMBER
243904  ,p_calculate_acctd_flag  IN VARCHAR2
243905  ,p_calculate_g_l_flag    IN VARCHAR2
243906  ,p_actual_flag           IN OUT VARCHAR2
243907  ,p_balance_type_code     OUT VARCHAR2
243908  ,p_gain_or_loss_ref      OUT VARCHAR2
243909  
243910 --TRANSACTION_ID
243911  , p_source_1            IN NUMBER
243912 --Item Concatenated Segments
243913  , p_source_2            IN VARCHAR2
243914 --Transaction Quantity
243915  , p_source_3            IN NUMBER
243916 --Transaction Unit of Measure Code
243917  , p_source_4            IN VARCHAR2
243918 --Inventory Transaction Type Description
243919  , p_source_5            IN VARCHAR2
243920 --Product Line Accounting Category Bridging Account
243921  , p_source_22            IN NUMBER
243922 --Applied to Application ID
243923  , p_source_79            IN NUMBER
243924 --Applied to Distribution Link Type
243925  , p_source_80            IN VARCHAR2
243926 --Applied to Entity Code
243927  , p_source_81            IN VARCHAR2
243928 --Applied To Purchase Document Identifier
243929  , p_source_83            IN NUMBER
243930 --DISTRIBUTION_IDENTIFIER
243931  , p_source_84            IN NUMBER
243932 --Distribution Type
243933  , p_source_85            IN VARCHAR2
243934  , p_source_85_meaning    IN VARCHAR2
243935 --PO Budget Account
243936  , p_source_86            IN NUMBER
243937 --Encumbrance Reversal Amount Entered
243938  , p_source_87            IN NUMBER
243939 --Entered Currency Code
243940  , p_source_88            IN VARCHAR2
243941 --Transaction Encumbrance Reversal Amount
243942  , p_source_89            IN NUMBER
243943 --Entered Amount
243944  , p_source_91            IN NUMBER
243945 --Currency Conversion Date
243946  , p_source_92            IN DATE
243947 --Currency Conversion Rate
243948  , p_source_93            IN NUMBER
243949 --Currency Conversion Type
243950  , p_source_94            IN VARCHAR2
243951 --Accounted Amount
243952  , p_source_95            IN NUMBER
243953 --Purchasing Encumbrance Type Identifier
243954  , p_source_96            IN NUMBER
243955 --Accounting Line Type
243956  , p_source_97            IN NUMBER
243957 --Costing Encumbrance Upgrade Option
243958  , p_source_100            IN VARCHAR2
243959 --TXN_PO_DISTRIBUTION_ID
243960  , p_source_101            IN NUMBER
243961 )
243962 IS
243963 
243964 l_component_type              VARCHAR2(80);
243965 l_component_code              VARCHAR2(30);
243966 l_component_type_code         VARCHAR2(1);
243967 l_component_appl_id           INTEGER;
243968 l_amb_context_code            VARCHAR2(30);
243969 l_entity_code                 VARCHAR2(30);
243970 l_event_class_code            VARCHAR2(30);
243971 l_ae_header_id                NUMBER;
243972 l_event_type_code             VARCHAR2(30);
243973 l_line_definition_code        VARCHAR2(30);
243974 l_line_definition_owner_code  VARCHAR2(1);
243975 --
243976 -- adr variables
243977 l_segment                     VARCHAR2(30);
243978 l_ccid                        NUMBER;
243979 l_adr_transaction_coa_id      NUMBER;
243980 l_adr_accounting_coa_id       NUMBER;
243981 l_adr_flexfield_segment_code  VARCHAR2(30);
243982 l_adr_flex_value_set_id       NUMBER;
243983 l_adr_value_type_code         VARCHAR2(30);
243984 l_adr_value_combination_id    NUMBER;
243985 l_adr_value_segment_code      VARCHAR2(30);
243986 
243987 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
243988 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
243989 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
243990 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
243991 
243992 -- 4262811 Variables ------------------------------------------------------------------------------------------
243993 l_entered_amt_idx             NUMBER;
243994 l_accted_amt_idx              NUMBER;
243995 l_acc_rev_flag                VARCHAR2(1);
243996 l_accrual_line_num            NUMBER;
243997 l_tmp_amt                     NUMBER;
243998 l_acc_rev_natural_side_code   VARCHAR2(1);
243999 
244000 l_num_entries                 NUMBER;
244001 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
244002 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
244003 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
244004 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
244005 l_recog_line_1                NUMBER;
244006 l_recog_line_2                NUMBER;
244007 
244008 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
244009 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
244010 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
244011 
244012 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
244013 
244014 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
244015 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
244016 
244017 ---------------------------------------------------------------------------------------------------------------
244018 
244019 
244020 --
244021 -- bulk performance
244022 --
244023 l_balance_type_code           VARCHAR2(1);
244024 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
244025 l_log_module                  VARCHAR2(240);
244026 
244027 --
244028 -- Upgrade strategy
244029 --
244030 l_actual_upg_option           VARCHAR2(1);
244031 l_enc_upg_option           VARCHAR2(1);
244032 
244033 --
244034 BEGIN
244035 --
244036 IF g_log_enabled THEN
244037       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_440';
244038 END IF;
244039 --
244040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
244041 
244042       trace
244043          (p_msg      => 'BEGIN of AcctLineType_440'
244044          ,p_level    => C_LEVEL_PROCEDURE
244045          ,p_module   => l_log_module);
244046 
244047 END IF;
244048 --
244049 l_component_type             := 'AMB_JLT';
244050 l_component_code             := 'PI_LOG_DEL_BRIDGING';
244051 l_component_type_code        := 'S';
244052 l_component_appl_id          :=  707;
244053 l_amb_context_code           := 'DEFAULT';
244054 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
244055 l_event_class_code           := 'PURCHASE_ORDER';
244056 l_event_type_code            := 'LOG_PO_DEL_ADJ';
244057 l_line_definition_owner_code := 'S';
244058 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
244059 --
244060 l_balance_type_code          := 'A';
244061 l_segment                     := NULL;
244062 l_ccid                        := NULL;
244063 l_adr_transaction_coa_id      := NULL;
244064 l_adr_accounting_coa_id       := NULL;
244065 l_adr_flexfield_segment_code  := NULL;
244066 l_adr_flex_value_set_id       := NULL;
244067 l_adr_value_type_code         := NULL;
244068 l_adr_value_combination_id    := NULL;
244069 l_adr_value_segment_code      := NULL;
244070 
244071 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
244072 l_bflow_class_code           := '';    -- 4219869 Business Flow
244073 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
244074 l_budgetary_control_flag     := 'N';
244075 
244076 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
244077 l_bflow_applied_to_amt       := NULL; -- 5132302
244078 l_entered_amt_idx            := NULL;          -- 4262811
244079 l_accted_amt_idx             := NULL;          -- 4262811
244080 l_acc_rev_flag               := NULL;          -- 4262811
244081 l_accrual_line_num           := NULL;          -- 4262811
244082 l_tmp_amt                    := NULL;          -- 4262811
244083 --
244084  
244085 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
244086     l_balance_type_code <> 'B' THEN
244087 IF NVL(p_source_97,9E125) =  1
244088  THEN 
244089 
244090    --
244091    XLA_AE_LINES_PKG.SetNewLine;
244092 
244093    p_balance_type_code          := l_balance_type_code;
244094    -- set the flag so later we will know whether the gain loss line needs to be created
244095    
244096    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
244097      p_actual_flag :='A';
244098    END IF;
244099 
244100    --
244101    -- bulk performance
244102    --
244103    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
244104                                       p_header_num   => 0); -- 4262811
244105    --
244106    -- set accounting line options
244107    --
244108    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
244109            p_natural_side_code          => 'C'
244110          , p_gain_or_loss_flag          => 'N'
244111          , p_gl_transfer_mode_code      => 'S'
244112          , p_acct_entry_type_code       => 'A'
244113          , p_switch_side_flag           => 'Y'
244114          , p_merge_duplicate_code       => 'N'
244115          );
244116    --
244117    l_acc_rev_natural_side_code := 'D';  -- 4262811
244118    -- 
244119    --
244120    -- set accounting line type info
244121    --
244122    xla_ae_lines_pkg.SetAcctLineType
244123       (p_component_type             => l_component_type
244124       ,p_event_type_code            => l_event_type_code
244125       ,p_line_definition_owner_code => l_line_definition_owner_code
244126       ,p_line_definition_code       => l_line_definition_code
244127       ,p_accounting_line_code       => l_component_code
244128       ,p_accounting_line_type_code  => l_component_type_code
244129       ,p_accounting_line_appl_id    => l_component_appl_id
244130       ,p_amb_context_code           => l_amb_context_code
244131       ,p_entity_code                => l_entity_code
244132       ,p_event_class_code           => l_event_class_code);
244133    --
244134    -- set accounting class
244135    --
244136    xla_ae_lines_pkg.SetAcctClass(
244137            p_accounting_class_code  => 'BRIDGING'
244138          , p_ae_header_id           => l_ae_header_id
244139          );
244140 
244141    --
244142    -- set rounding class
244143    --
244144    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
244145                       'BRIDGING';
244146 
244147    --
244148    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
244149    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
244150    --
244151    -- bulk performance
244152    --
244153    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
244154 
244155    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
244156       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
244157 
244158    -- 4955764
244159    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
244160       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
244161 
244162    -- 4458381 Public Sector Enh
244163    
244164    --
244165    -- set accounting attributes for the line type
244166    --
244167    l_entered_amt_idx := 17;
244168    l_accted_amt_idx  := 22;
244169    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
244170    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
244171    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
244172    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
244173    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
244174    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
244175    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
244176    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
244177    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
244178    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
244179    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
244180    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
244181    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
244182    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
244183    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
244184    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
244185    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
244186    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
244187    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
244188    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
244189    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
244190    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
244191    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
244192    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
244193    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
244194    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
244195    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
244196    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
244197    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
244198    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
244199    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
244200    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
244201    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
244202    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
244203    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
244204    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
244205    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
244206    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
244207    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
244208    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
244209    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
244210    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
244211    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
244212    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
244213    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
244214    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
244215    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
244216    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
244217    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
244218 
244219    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
244220    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
244221 
244222    ---------------------------------------------------------------------------------------------------------------
244223    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
244224    ---------------------------------------------------------------------------------------------------------------
244225    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
244226 
244227    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
244228    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
244229 
244230    IF xla_accounting_cache_pkg.GetValueChar
244231          (p_source_code         => 'LEDGER_CATEGORY_CODE'
244232          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
244233    AND l_bflow_method_code = 'PRIOR_ENTRY'
244234 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
244235    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
244236          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
244237        )
244238    THEN
244239          xla_ae_lines_pkg.BflowUpgEntry
244240            (p_business_method_code    => l_bflow_method_code
244241            ,p_business_class_code     => l_bflow_class_code
244242            ,p_balance_type            => l_balance_type_code);
244243    ELSE
244244       NULL;
244245 -- No business flow processing for business flow method of NONE.
244246    END IF;
244247 
244248    --
244249    -- call analytical criteria
244250    --
244251    
244252    --
244253    -- call description
244254    --
244255    
244256 xla_ae_lines_pkg.SetLineDescription(
244257    p_ae_header_id => l_ae_header_id
244258   ,p_description  => Description_1 (
244259      p_application_id         => p_application_id
244260    , p_ae_header_id           => l_ae_header_id 
244261 , p_source_1 => p_source_1
244262 , p_source_2 => p_source_2
244263 , p_source_3 => p_source_3
244264 , p_source_4 => p_source_4
244265 , p_source_5 => p_source_5
244266    )
244267 );
244268 
244269 
244270    --
244271    -- call ADRs
244272    -- Bug 4922099
244273    --
244274    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
244275         (NVL(l_actual_upg_option, 'N') = 'O') OR
244276         (NVL(l_enc_upg_option, 'N') = 'O')
244277       )
244278    THEN
244279    NULL;
244280    --
244281    --
244282    
244283   l_ccid := AcctDerRule_11(
244284            p_application_id           => p_application_id
244285          , p_ae_header_id             => l_ae_header_id 
244286 , p_source_22 => p_source_22
244287          , x_transaction_coa_id       => l_adr_transaction_coa_id
244288          , x_accounting_coa_id        => l_adr_accounting_coa_id
244289          , x_value_type_code          => l_adr_value_type_code
244290          , p_side                     => 'NA'
244291    );
244292 
244293    xla_ae_lines_pkg.set_ccid(
244294     p_code_combination_id          => l_ccid
244295   , p_value_type_code              => l_adr_value_type_code
244296   , p_transaction_coa_id           => l_adr_transaction_coa_id
244297   , p_accounting_coa_id            => l_adr_accounting_coa_id
244298   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
244299   , p_adr_type_code                => 'S'
244300   , p_component_type               => l_component_type
244301   , p_component_code               => l_component_code
244302   , p_component_type_code          => l_component_type_code
244303   , p_component_appl_id            => l_component_appl_id
244304   , p_amb_context_code             => l_amb_context_code
244305   , p_side                         => 'NA'
244306   );
244307 
244308 
244309    --
244310    --
244311    END IF;
244312    --
244313    -- Bug 4922099
244314    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
244315           (NVL(l_enc_upg_option, 'N') = 'O')
244316         ) AND
244317         (l_bflow_method_code = 'PRIOR_ENTRY')
244318       )
244319    THEN
244320       IF
244321       --
244322       1 = 2
244323       --
244324       THEN
244325       xla_accounting_err_pkg.build_message
244326                                     (p_appli_s_name            => 'XLA'
244327                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
244328                                     ,p_token_1                 => 'LINE_NUMBER'
244329                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
244330                                     ,p_token_2                 => 'LINE_TYPE_NAME'
244331                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
244332                                                                              l_component_type
244333                                                                             ,l_component_code
244334                                                                             ,l_component_type_code
244335                                                                             ,l_component_appl_id
244336                                                                             ,l_amb_context_code
244337                                                                             ,l_entity_code
244338                                                                             ,l_event_class_code
244339                                                                            )
244340                                     ,p_token_3                 => 'OWNER'
244341                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
244342                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
244343                                                                           ,p_lookup_code    => l_component_type_code
244344                                                                          )
244345                                     ,p_token_4                 => 'PRODUCT_NAME'
244346                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
244347                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
244348                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
244349                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
244350                                     ,p_ae_header_id            =>  NULL
244351                                        );
244352 
244353         IF (C_LEVEL_ERROR>= g_log_level) THEN
244354                  trace
244355                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
244356                       ,p_level    => C_LEVEL_ERROR
244357                       ,p_module   => l_log_module);
244358         END IF;
244359       END IF;
244360    END IF;
244361    --
244362    --
244363    ------------------------------------------------------------------------------------------------
244364    -- 4219869 Business Flow
244365    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
244366    -- Prior Entry.  Currently, the following code is always generated.
244367    ------------------------------------------------------------------------------------------------
244368    XLA_AE_LINES_PKG.ValidateCurrentLine;
244369 
244370    ------------------------------------------------------------------------------------
244371    -- 4219869 Business Flow
244372    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
244373    ------------------------------------------------------------------------------------
244374    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
244375 
244376    ----------------------------------------------------------------------------------
244377    -- 4219869 Business Flow
244378    -- Update journal entry status -- Need to generate this within IF <condition>
244379    ----------------------------------------------------------------------------------
244380    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
244381          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
244382          ,p_balance_type_code => l_balance_type_code
244383          );
244384 
244385    -------------------------------------------------------------------------------------------
244386    -- 4262811 - Generate the Accrual Reversal lines
244387    -------------------------------------------------------------------------------------------
244388    BEGIN
244389       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
244390                               (g_array_event(p_event_id).array_value_num('header_index'));
244391       IF l_acc_rev_flag IS NULL THEN
244392          l_acc_rev_flag := 'N';
244393       END IF;
244394    EXCEPTION
244395       WHEN OTHERS THEN
244396          l_acc_rev_flag := 'N';
244397    END;
244398    --
244399    IF (l_acc_rev_flag = 'Y') THEN
244400 
244401        -- 4645092  ------------------------------------------------------------------------------
244402        -- To allow MPA report to determine if it should generate report process
244403        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
244404        ------------------------------------------------------------------------------------------
244405 
244406        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
244407        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
244408    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
244409    -- call ADRs
244410    -- Bug 4922099
244411    --
244412    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
244413         (NVL(l_actual_upg_option, 'N') = 'O') OR
244414         (NVL(l_enc_upg_option, 'N') = 'O')
244415       )
244416    THEN
244417    NULL;
244418    --
244419    --
244420    
244421   l_ccid := AcctDerRule_11(
244422            p_application_id           => p_application_id
244423          , p_ae_header_id             => l_ae_header_id 
244424 , p_source_22 => p_source_22
244425          , x_transaction_coa_id       => l_adr_transaction_coa_id
244426          , x_accounting_coa_id        => l_adr_accounting_coa_id
244427          , x_value_type_code          => l_adr_value_type_code
244428          , p_side                     => 'NA'
244429    );
244430 
244431    xla_ae_lines_pkg.set_ccid(
244432     p_code_combination_id          => l_ccid
244433   , p_value_type_code              => l_adr_value_type_code
244434   , p_transaction_coa_id           => l_adr_transaction_coa_id
244435   , p_accounting_coa_id            => l_adr_accounting_coa_id
244436   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
244437   , p_adr_type_code                => 'S'
244438   , p_component_type               => l_component_type
244439   , p_component_code               => l_component_code
244440   , p_component_type_code          => l_component_type_code
244441   , p_component_appl_id            => l_component_appl_id
244442   , p_amb_context_code             => l_amb_context_code
244443   , p_side                         => 'NA'
244444   );
244445 
244446 
244447    --
244448    --
244449    END IF;
244450 
244451        --
244452        -- Update the line information that should be overwritten
244453        --
244454        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
244455                                          p_header_num   => 1);
244456        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
244457 
244458        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
244459 
244460        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
244461           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
244462        END IF;
244463 
244464       --
244465       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
244466       --
244467       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
244468           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
244469       ELSE
244470           ---------------------------------------------------------------------------------------------------
244471           -- 4262811a Switch Sign
244472           ---------------------------------------------------------------------------------------------------
244473           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
244474           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
244475                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
244476           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
244477                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
244478           -- 5132302
244479           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
244480                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
244481 
244482       END IF;
244483 
244484       -- 4955764
244485       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
244486       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
244487 
244488 
244489       XLA_AE_LINES_PKG.ValidateCurrentLine;
244490       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
244491 
244492       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
244493                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
244494                ,p_balance_type_code => l_balance_type_code);
244495 
244496    END IF;
244497 
244498    -----------------------------------------------------------------------------------------
244499    -- 4262811 Multiperiod Accounting
244500    -----------------------------------------------------------------------------------------
244501      -- No MPA option is assigned.
244502 
244503 
244504 END IF;
244505 END IF;
244506 --
244507 
244508 --
244509 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
244510    trace
244511       (p_msg      => 'END of AcctLineType_440'
244512       ,p_level    => C_LEVEL_PROCEDURE
244513       ,p_module   => l_log_module);
244514 END IF;
244515 --
244516 EXCEPTION
244517   WHEN xla_exceptions_pkg.application_exception THEN
244518       RAISE;
244519   WHEN OTHERS THEN
244520        xla_exceptions_pkg.raise_message
244521            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_440');
244522 END AcctLineType_440;
244523 --
244524 
244525 ---------------------------------------
244526 --
244527 -- PRIVATE FUNCTION
244528 --         AcctLineType_441
244529 --
244530 ---------------------------------------
244531 PROCEDURE AcctLineType_441 (
244532   p_application_id        IN NUMBER
244533  ,p_event_id              IN NUMBER
244534  ,p_calculate_acctd_flag  IN VARCHAR2
244535  ,p_calculate_g_l_flag    IN VARCHAR2
244536  ,p_actual_flag           IN OUT VARCHAR2
244537  ,p_balance_type_code     OUT VARCHAR2
244538  ,p_gain_or_loss_ref      OUT VARCHAR2
244539  
244540 --TRANSACTION_ID
244541  , p_source_1            IN NUMBER
244542 --Item Concatenated Segments
244543  , p_source_2            IN VARCHAR2
244544 --Transaction Quantity
244545  , p_source_3            IN NUMBER
244546 --Transaction Unit of Measure Code
244547  , p_source_4            IN VARCHAR2
244548 --Inventory Transaction Type Description
244549  , p_source_5            IN VARCHAR2
244550 --Product Line Accounting Category Bridging Account
244551  , p_source_22            IN NUMBER
244552 --Applied to Application ID
244553  , p_source_79            IN NUMBER
244554 --Applied to Distribution Link Type
244555  , p_source_80            IN VARCHAR2
244556 --Applied to Entity Code
244557  , p_source_81            IN VARCHAR2
244558 --Applied To Purchase Document Identifier
244559  , p_source_83            IN NUMBER
244560 --DISTRIBUTION_IDENTIFIER
244561  , p_source_84            IN NUMBER
244562 --Distribution Type
244563  , p_source_85            IN VARCHAR2
244564  , p_source_85_meaning    IN VARCHAR2
244565 --PO Budget Account
244566  , p_source_86            IN NUMBER
244567 --Encumbrance Reversal Amount Entered
244568  , p_source_87            IN NUMBER
244569 --Entered Currency Code
244570  , p_source_88            IN VARCHAR2
244571 --Transaction Encumbrance Reversal Amount
244572  , p_source_89            IN NUMBER
244573 --Entered Amount
244574  , p_source_91            IN NUMBER
244575 --Currency Conversion Date
244576  , p_source_92            IN DATE
244577 --Currency Conversion Rate
244578  , p_source_93            IN NUMBER
244579 --Currency Conversion Type
244580  , p_source_94            IN VARCHAR2
244581 --Accounted Amount
244582  , p_source_95            IN NUMBER
244583 --Purchasing Encumbrance Type Identifier
244584  , p_source_96            IN NUMBER
244585 --Accounting Line Type
244586  , p_source_97            IN NUMBER
244587 --Costing Encumbrance Upgrade Option
244588  , p_source_100            IN VARCHAR2
244589 --TXN_PO_DISTRIBUTION_ID
244590  , p_source_101            IN NUMBER
244591 )
244592 IS
244593 
244594 l_component_type              VARCHAR2(80);
244595 l_component_code              VARCHAR2(30);
244596 l_component_type_code         VARCHAR2(1);
244597 l_component_appl_id           INTEGER;
244598 l_amb_context_code            VARCHAR2(30);
244599 l_entity_code                 VARCHAR2(30);
244600 l_event_class_code            VARCHAR2(30);
244601 l_ae_header_id                NUMBER;
244602 l_event_type_code             VARCHAR2(30);
244603 l_line_definition_code        VARCHAR2(30);
244604 l_line_definition_owner_code  VARCHAR2(1);
244605 --
244606 -- adr variables
244607 l_segment                     VARCHAR2(30);
244608 l_ccid                        NUMBER;
244609 l_adr_transaction_coa_id      NUMBER;
244610 l_adr_accounting_coa_id       NUMBER;
244611 l_adr_flexfield_segment_code  VARCHAR2(30);
244612 l_adr_flex_value_set_id       NUMBER;
244613 l_adr_value_type_code         VARCHAR2(30);
244614 l_adr_value_combination_id    NUMBER;
244615 l_adr_value_segment_code      VARCHAR2(30);
244616 
244617 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
244618 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
244619 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
244620 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
244621 
244622 -- 4262811 Variables ------------------------------------------------------------------------------------------
244623 l_entered_amt_idx             NUMBER;
244624 l_accted_amt_idx              NUMBER;
244625 l_acc_rev_flag                VARCHAR2(1);
244626 l_accrual_line_num            NUMBER;
244627 l_tmp_amt                     NUMBER;
244628 l_acc_rev_natural_side_code   VARCHAR2(1);
244629 
244630 l_num_entries                 NUMBER;
244631 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
244632 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
244633 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
244634 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
244635 l_recog_line_1                NUMBER;
244636 l_recog_line_2                NUMBER;
244637 
244638 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
244639 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
244640 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
244641 
244642 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
244643 
244644 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
244645 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
244646 
244647 ---------------------------------------------------------------------------------------------------------------
244648 
244649 
244650 --
244651 -- bulk performance
244652 --
244653 l_balance_type_code           VARCHAR2(1);
244654 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
244655 l_log_module                  VARCHAR2(240);
244656 
244657 --
244658 -- Upgrade strategy
244659 --
244660 l_actual_upg_option           VARCHAR2(1);
244661 l_enc_upg_option           VARCHAR2(1);
244662 
244663 --
244664 BEGIN
244665 --
244666 IF g_log_enabled THEN
244667       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_441';
244668 END IF;
244669 --
244670 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
244671 
244672       trace
244673          (p_msg      => 'BEGIN of AcctLineType_441'
244674          ,p_level    => C_LEVEL_PROCEDURE
244675          ,p_module   => l_log_module);
244676 
244677 END IF;
244678 --
244679 l_component_type             := 'AMB_JLT';
244680 l_component_code             := 'PI_LOG_DEL_BRIDGING';
244681 l_component_type_code        := 'S';
244682 l_component_appl_id          :=  707;
244683 l_amb_context_code           := 'DEFAULT';
244684 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
244685 l_event_class_code           := 'PURCHASE_ORDER';
244686 l_event_type_code            := 'LOG_RET_RI_INV';
244687 l_line_definition_owner_code := 'S';
244688 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
244689 --
244690 l_balance_type_code          := 'A';
244691 l_segment                     := NULL;
244692 l_ccid                        := NULL;
244693 l_adr_transaction_coa_id      := NULL;
244694 l_adr_accounting_coa_id       := NULL;
244695 l_adr_flexfield_segment_code  := NULL;
244696 l_adr_flex_value_set_id       := NULL;
244697 l_adr_value_type_code         := NULL;
244698 l_adr_value_combination_id    := NULL;
244699 l_adr_value_segment_code      := NULL;
244700 
244701 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
244702 l_bflow_class_code           := '';    -- 4219869 Business Flow
244703 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
244704 l_budgetary_control_flag     := 'N';
244705 
244706 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
244707 l_bflow_applied_to_amt       := NULL; -- 5132302
244708 l_entered_amt_idx            := NULL;          -- 4262811
244709 l_accted_amt_idx             := NULL;          -- 4262811
244710 l_acc_rev_flag               := NULL;          -- 4262811
244711 l_accrual_line_num           := NULL;          -- 4262811
244712 l_tmp_amt                    := NULL;          -- 4262811
244713 --
244714  
244715 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
244716     l_balance_type_code <> 'B' THEN
244717 IF NVL(p_source_97,9E125) =  1
244718  THEN 
244719 
244720    --
244721    XLA_AE_LINES_PKG.SetNewLine;
244722 
244723    p_balance_type_code          := l_balance_type_code;
244724    -- set the flag so later we will know whether the gain loss line needs to be created
244725    
244726    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
244727      p_actual_flag :='A';
244728    END IF;
244729 
244730    --
244731    -- bulk performance
244732    --
244733    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
244734                                       p_header_num   => 0); -- 4262811
244735    --
244736    -- set accounting line options
244737    --
244738    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
244739            p_natural_side_code          => 'C'
244740          , p_gain_or_loss_flag          => 'N'
244741          , p_gl_transfer_mode_code      => 'S'
244742          , p_acct_entry_type_code       => 'A'
244743          , p_switch_side_flag           => 'Y'
244744          , p_merge_duplicate_code       => 'N'
244745          );
244746    --
244747    l_acc_rev_natural_side_code := 'D';  -- 4262811
244748    -- 
244749    --
244750    -- set accounting line type info
244751    --
244752    xla_ae_lines_pkg.SetAcctLineType
244753       (p_component_type             => l_component_type
244754       ,p_event_type_code            => l_event_type_code
244755       ,p_line_definition_owner_code => l_line_definition_owner_code
244756       ,p_line_definition_code       => l_line_definition_code
244757       ,p_accounting_line_code       => l_component_code
244758       ,p_accounting_line_type_code  => l_component_type_code
244759       ,p_accounting_line_appl_id    => l_component_appl_id
244760       ,p_amb_context_code           => l_amb_context_code
244761       ,p_entity_code                => l_entity_code
244762       ,p_event_class_code           => l_event_class_code);
244763    --
244764    -- set accounting class
244765    --
244766    xla_ae_lines_pkg.SetAcctClass(
244767            p_accounting_class_code  => 'BRIDGING'
244768          , p_ae_header_id           => l_ae_header_id
244769          );
244770 
244771    --
244772    -- set rounding class
244773    --
244774    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
244775                       'BRIDGING';
244776 
244777    --
244778    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
244779    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
244780    --
244781    -- bulk performance
244782    --
244783    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
244784 
244785    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
244786       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
244787 
244788    -- 4955764
244789    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
244790       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
244791 
244792    -- 4458381 Public Sector Enh
244793    
244794    --
244795    -- set accounting attributes for the line type
244796    --
244797    l_entered_amt_idx := 17;
244798    l_accted_amt_idx  := 22;
244799    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
244800    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
244801    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
244802    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
244803    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
244804    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
244805    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
244806    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
244807    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
244808    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
244809    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
244810    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
244811    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
244812    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
244813    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
244814    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
244815    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
244816    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
244817    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
244818    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
244819    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
244820    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
244821    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
244822    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
244823    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
244824    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
244825    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
244826    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
244827    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
244828    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
244829    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
244830    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
244831    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
244832    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
244833    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
244834    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
244835    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
244836    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
244837    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
244838    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
244839    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
244840    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
244841    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
244842    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
244843    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
244844    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
244845    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
244846    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
244847    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
244848 
244849    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
244850    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
244851 
244852    ---------------------------------------------------------------------------------------------------------------
244853    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
244854    ---------------------------------------------------------------------------------------------------------------
244855    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
244856 
244857    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
244858    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
244859 
244860    IF xla_accounting_cache_pkg.GetValueChar
244861          (p_source_code         => 'LEDGER_CATEGORY_CODE'
244862          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
244863    AND l_bflow_method_code = 'PRIOR_ENTRY'
244864 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
244865    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
244866          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
244867        )
244868    THEN
244869          xla_ae_lines_pkg.BflowUpgEntry
244870            (p_business_method_code    => l_bflow_method_code
244871            ,p_business_class_code     => l_bflow_class_code
244872            ,p_balance_type            => l_balance_type_code);
244873    ELSE
244874       NULL;
244875 -- No business flow processing for business flow method of NONE.
244876    END IF;
244877 
244878    --
244879    -- call analytical criteria
244880    --
244881    
244882    --
244883    -- call description
244884    --
244885    
244886 xla_ae_lines_pkg.SetLineDescription(
244887    p_ae_header_id => l_ae_header_id
244888   ,p_description  => Description_1 (
244889      p_application_id         => p_application_id
244890    , p_ae_header_id           => l_ae_header_id 
244891 , p_source_1 => p_source_1
244892 , p_source_2 => p_source_2
244893 , p_source_3 => p_source_3
244894 , p_source_4 => p_source_4
244895 , p_source_5 => p_source_5
244896    )
244897 );
244898 
244899 
244900    --
244901    -- call ADRs
244902    -- Bug 4922099
244903    --
244904    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
244905         (NVL(l_actual_upg_option, 'N') = 'O') OR
244906         (NVL(l_enc_upg_option, 'N') = 'O')
244907       )
244908    THEN
244909    NULL;
244910    --
244911    --
244912    
244913   l_ccid := AcctDerRule_11(
244914            p_application_id           => p_application_id
244915          , p_ae_header_id             => l_ae_header_id 
244916 , p_source_22 => p_source_22
244917          , x_transaction_coa_id       => l_adr_transaction_coa_id
244918          , x_accounting_coa_id        => l_adr_accounting_coa_id
244919          , x_value_type_code          => l_adr_value_type_code
244920          , p_side                     => 'NA'
244921    );
244922 
244923    xla_ae_lines_pkg.set_ccid(
244924     p_code_combination_id          => l_ccid
244925   , p_value_type_code              => l_adr_value_type_code
244926   , p_transaction_coa_id           => l_adr_transaction_coa_id
244927   , p_accounting_coa_id            => l_adr_accounting_coa_id
244928   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
244929   , p_adr_type_code                => 'S'
244930   , p_component_type               => l_component_type
244931   , p_component_code               => l_component_code
244932   , p_component_type_code          => l_component_type_code
244933   , p_component_appl_id            => l_component_appl_id
244934   , p_amb_context_code             => l_amb_context_code
244935   , p_side                         => 'NA'
244936   );
244937 
244938 
244939    --
244940    --
244941    END IF;
244942    --
244943    -- Bug 4922099
244944    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
244945           (NVL(l_enc_upg_option, 'N') = 'O')
244946         ) AND
244947         (l_bflow_method_code = 'PRIOR_ENTRY')
244948       )
244949    THEN
244950       IF
244951       --
244952       1 = 2
244953       --
244954       THEN
244955       xla_accounting_err_pkg.build_message
244956                                     (p_appli_s_name            => 'XLA'
244957                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
244958                                     ,p_token_1                 => 'LINE_NUMBER'
244959                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
244960                                     ,p_token_2                 => 'LINE_TYPE_NAME'
244961                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
244962                                                                              l_component_type
244963                                                                             ,l_component_code
244964                                                                             ,l_component_type_code
244965                                                                             ,l_component_appl_id
244966                                                                             ,l_amb_context_code
244967                                                                             ,l_entity_code
244968                                                                             ,l_event_class_code
244969                                                                            )
244970                                     ,p_token_3                 => 'OWNER'
244971                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
244972                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
244973                                                                           ,p_lookup_code    => l_component_type_code
244974                                                                          )
244975                                     ,p_token_4                 => 'PRODUCT_NAME'
244976                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
244977                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
244978                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
244979                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
244980                                     ,p_ae_header_id            =>  NULL
244981                                        );
244982 
244983         IF (C_LEVEL_ERROR>= g_log_level) THEN
244984                  trace
244985                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
244986                       ,p_level    => C_LEVEL_ERROR
244987                       ,p_module   => l_log_module);
244988         END IF;
244989       END IF;
244990    END IF;
244991    --
244992    --
244993    ------------------------------------------------------------------------------------------------
244994    -- 4219869 Business Flow
244995    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
244996    -- Prior Entry.  Currently, the following code is always generated.
244997    ------------------------------------------------------------------------------------------------
244998    XLA_AE_LINES_PKG.ValidateCurrentLine;
244999 
245000    ------------------------------------------------------------------------------------
245001    -- 4219869 Business Flow
245002    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
245003    ------------------------------------------------------------------------------------
245004    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
245005 
245006    ----------------------------------------------------------------------------------
245007    -- 4219869 Business Flow
245008    -- Update journal entry status -- Need to generate this within IF <condition>
245009    ----------------------------------------------------------------------------------
245010    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
245011          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
245012          ,p_balance_type_code => l_balance_type_code
245013          );
245014 
245015    -------------------------------------------------------------------------------------------
245016    -- 4262811 - Generate the Accrual Reversal lines
245017    -------------------------------------------------------------------------------------------
245018    BEGIN
245019       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
245020                               (g_array_event(p_event_id).array_value_num('header_index'));
245021       IF l_acc_rev_flag IS NULL THEN
245022          l_acc_rev_flag := 'N';
245023       END IF;
245024    EXCEPTION
245025       WHEN OTHERS THEN
245026          l_acc_rev_flag := 'N';
245027    END;
245028    --
245029    IF (l_acc_rev_flag = 'Y') THEN
245030 
245031        -- 4645092  ------------------------------------------------------------------------------
245032        -- To allow MPA report to determine if it should generate report process
245033        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
245034        ------------------------------------------------------------------------------------------
245035 
245036        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
245037        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
245038    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
245039    -- call ADRs
245040    -- Bug 4922099
245041    --
245042    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
245043         (NVL(l_actual_upg_option, 'N') = 'O') OR
245044         (NVL(l_enc_upg_option, 'N') = 'O')
245045       )
245046    THEN
245047    NULL;
245048    --
245049    --
245050    
245051   l_ccid := AcctDerRule_11(
245052            p_application_id           => p_application_id
245053          , p_ae_header_id             => l_ae_header_id 
245054 , p_source_22 => p_source_22
245055          , x_transaction_coa_id       => l_adr_transaction_coa_id
245056          , x_accounting_coa_id        => l_adr_accounting_coa_id
245057          , x_value_type_code          => l_adr_value_type_code
245058          , p_side                     => 'NA'
245059    );
245060 
245061    xla_ae_lines_pkg.set_ccid(
245062     p_code_combination_id          => l_ccid
245063   , p_value_type_code              => l_adr_value_type_code
245064   , p_transaction_coa_id           => l_adr_transaction_coa_id
245065   , p_accounting_coa_id            => l_adr_accounting_coa_id
245066   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
245067   , p_adr_type_code                => 'S'
245068   , p_component_type               => l_component_type
245069   , p_component_code               => l_component_code
245070   , p_component_type_code          => l_component_type_code
245071   , p_component_appl_id            => l_component_appl_id
245072   , p_amb_context_code             => l_amb_context_code
245073   , p_side                         => 'NA'
245074   );
245075 
245076 
245077    --
245078    --
245079    END IF;
245080 
245081        --
245082        -- Update the line information that should be overwritten
245083        --
245084        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
245085                                          p_header_num   => 1);
245086        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
245087 
245088        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
245089 
245090        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
245091           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
245092        END IF;
245093 
245094       --
245095       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
245096       --
245097       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
245098           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
245099       ELSE
245100           ---------------------------------------------------------------------------------------------------
245101           -- 4262811a Switch Sign
245102           ---------------------------------------------------------------------------------------------------
245103           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
245104           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
245105                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
245106           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
245107                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
245108           -- 5132302
245109           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
245110                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
245111 
245112       END IF;
245113 
245114       -- 4955764
245115       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
245116       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
245117 
245118 
245119       XLA_AE_LINES_PKG.ValidateCurrentLine;
245120       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
245121 
245122       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
245123                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
245124                ,p_balance_type_code => l_balance_type_code);
245125 
245126    END IF;
245127 
245128    -----------------------------------------------------------------------------------------
245129    -- 4262811 Multiperiod Accounting
245130    -----------------------------------------------------------------------------------------
245131      -- No MPA option is assigned.
245132 
245133 
245134 END IF;
245135 END IF;
245136 --
245137 
245138 --
245139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
245140    trace
245141       (p_msg      => 'END of AcctLineType_441'
245142       ,p_level    => C_LEVEL_PROCEDURE
245143       ,p_module   => l_log_module);
245144 END IF;
245145 --
245146 EXCEPTION
245147   WHEN xla_exceptions_pkg.application_exception THEN
245148       RAISE;
245149   WHEN OTHERS THEN
245150        xla_exceptions_pkg.raise_message
245151            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_441');
245152 END AcctLineType_441;
245153 --
245154 
245155 ---------------------------------------
245156 --
245157 -- PRIVATE FUNCTION
245158 --         AcctLineType_442
245159 --
245160 ---------------------------------------
245161 PROCEDURE AcctLineType_442 (
245162   p_application_id        IN NUMBER
245163  ,p_event_id              IN NUMBER
245164  ,p_calculate_acctd_flag  IN VARCHAR2
245165  ,p_calculate_g_l_flag    IN VARCHAR2
245166  ,p_actual_flag           IN OUT VARCHAR2
245167  ,p_balance_type_code     OUT VARCHAR2
245168  ,p_gain_or_loss_ref      OUT VARCHAR2
245169  
245170 --TRANSACTION_ID
245171  , p_source_1            IN NUMBER
245172 --Item Concatenated Segments
245173  , p_source_2            IN VARCHAR2
245174 --Transaction Quantity
245175  , p_source_3            IN NUMBER
245176 --Transaction Unit of Measure Code
245177  , p_source_4            IN VARCHAR2
245178 --Inventory Transaction Type Description
245179  , p_source_5            IN VARCHAR2
245180 --Product Line Accounting Category Bridging Account
245181  , p_source_22            IN NUMBER
245182 --Applied to Application ID
245183  , p_source_79            IN NUMBER
245184 --Applied to Distribution Link Type
245185  , p_source_80            IN VARCHAR2
245186 --Applied to Entity Code
245187  , p_source_81            IN VARCHAR2
245188 --Applied To Purchase Document Identifier
245189  , p_source_83            IN NUMBER
245190 --DISTRIBUTION_IDENTIFIER
245191  , p_source_84            IN NUMBER
245192 --Distribution Type
245193  , p_source_85            IN VARCHAR2
245194  , p_source_85_meaning    IN VARCHAR2
245195 --PO Budget Account
245196  , p_source_86            IN NUMBER
245197 --Encumbrance Reversal Amount Entered
245198  , p_source_87            IN NUMBER
245199 --Entered Currency Code
245200  , p_source_88            IN VARCHAR2
245201 --Transaction Encumbrance Reversal Amount
245202  , p_source_89            IN NUMBER
245203 --Entered Amount
245204  , p_source_91            IN NUMBER
245205 --Currency Conversion Date
245206  , p_source_92            IN DATE
245207 --Currency Conversion Rate
245208  , p_source_93            IN NUMBER
245209 --Currency Conversion Type
245210  , p_source_94            IN VARCHAR2
245211 --Accounted Amount
245212  , p_source_95            IN NUMBER
245213 --Purchasing Encumbrance Type Identifier
245214  , p_source_96            IN NUMBER
245215 --Accounting Line Type
245216  , p_source_97            IN NUMBER
245217 --Costing Encumbrance Upgrade Option
245218  , p_source_100            IN VARCHAR2
245219 --TXN_PO_DISTRIBUTION_ID
245220  , p_source_101            IN NUMBER
245221 )
245222 IS
245223 
245224 l_component_type              VARCHAR2(80);
245225 l_component_code              VARCHAR2(30);
245226 l_component_type_code         VARCHAR2(1);
245227 l_component_appl_id           INTEGER;
245228 l_amb_context_code            VARCHAR2(30);
245229 l_entity_code                 VARCHAR2(30);
245230 l_event_class_code            VARCHAR2(30);
245231 l_ae_header_id                NUMBER;
245232 l_event_type_code             VARCHAR2(30);
245233 l_line_definition_code        VARCHAR2(30);
245234 l_line_definition_owner_code  VARCHAR2(1);
245235 --
245236 -- adr variables
245237 l_segment                     VARCHAR2(30);
245238 l_ccid                        NUMBER;
245239 l_adr_transaction_coa_id      NUMBER;
245240 l_adr_accounting_coa_id       NUMBER;
245241 l_adr_flexfield_segment_code  VARCHAR2(30);
245242 l_adr_flex_value_set_id       NUMBER;
245243 l_adr_value_type_code         VARCHAR2(30);
245244 l_adr_value_combination_id    NUMBER;
245245 l_adr_value_segment_code      VARCHAR2(30);
245246 
245247 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
245248 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
245249 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
245250 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
245251 
245252 -- 4262811 Variables ------------------------------------------------------------------------------------------
245253 l_entered_amt_idx             NUMBER;
245254 l_accted_amt_idx              NUMBER;
245255 l_acc_rev_flag                VARCHAR2(1);
245256 l_accrual_line_num            NUMBER;
245257 l_tmp_amt                     NUMBER;
245258 l_acc_rev_natural_side_code   VARCHAR2(1);
245259 
245260 l_num_entries                 NUMBER;
245261 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
245262 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
245263 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
245264 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
245265 l_recog_line_1                NUMBER;
245266 l_recog_line_2                NUMBER;
245267 
245268 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
245269 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
245270 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
245271 
245272 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
245273 
245274 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
245275 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
245276 
245277 ---------------------------------------------------------------------------------------------------------------
245278 
245279 
245280 --
245281 -- bulk performance
245282 --
245283 l_balance_type_code           VARCHAR2(1);
245284 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
245285 l_log_module                  VARCHAR2(240);
245286 
245287 --
245288 -- Upgrade strategy
245289 --
245290 l_actual_upg_option           VARCHAR2(1);
245291 l_enc_upg_option           VARCHAR2(1);
245292 
245293 --
245294 BEGIN
245295 --
245296 IF g_log_enabled THEN
245297       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_442';
245298 END IF;
245299 --
245300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
245301 
245302       trace
245303          (p_msg      => 'BEGIN of AcctLineType_442'
245304          ,p_level    => C_LEVEL_PROCEDURE
245305          ,p_module   => l_log_module);
245306 
245307 END IF;
245308 --
245309 l_component_type             := 'AMB_JLT';
245310 l_component_code             := 'PI_LOG_DEL_BRIDGING';
245311 l_component_type_code        := 'S';
245312 l_component_appl_id          :=  707;
245313 l_amb_context_code           := 'DEFAULT';
245314 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
245315 l_event_class_code           := 'PURCHASE_ORDER';
245316 l_event_type_code            := 'LOG_PO_DEL_INV';
245317 l_line_definition_owner_code := 'S';
245318 l_line_definition_code       := 'PI_LOG_DEL_INV';
245319 --
245320 l_balance_type_code          := 'A';
245321 l_segment                     := NULL;
245322 l_ccid                        := NULL;
245323 l_adr_transaction_coa_id      := NULL;
245324 l_adr_accounting_coa_id       := NULL;
245325 l_adr_flexfield_segment_code  := NULL;
245326 l_adr_flex_value_set_id       := NULL;
245327 l_adr_value_type_code         := NULL;
245328 l_adr_value_combination_id    := NULL;
245329 l_adr_value_segment_code      := NULL;
245330 
245331 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
245332 l_bflow_class_code           := '';    -- 4219869 Business Flow
245333 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
245334 l_budgetary_control_flag     := 'N';
245335 
245336 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
245337 l_bflow_applied_to_amt       := NULL; -- 5132302
245338 l_entered_amt_idx            := NULL;          -- 4262811
245339 l_accted_amt_idx             := NULL;          -- 4262811
245340 l_acc_rev_flag               := NULL;          -- 4262811
245341 l_accrual_line_num           := NULL;          -- 4262811
245342 l_tmp_amt                    := NULL;          -- 4262811
245343 --
245344  
245345 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
245346     l_balance_type_code <> 'B' THEN
245347 IF NVL(p_source_97,9E125) =  1
245348  THEN 
245349 
245350    --
245351    XLA_AE_LINES_PKG.SetNewLine;
245352 
245353    p_balance_type_code          := l_balance_type_code;
245354    -- set the flag so later we will know whether the gain loss line needs to be created
245355    
245356    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
245357      p_actual_flag :='A';
245358    END IF;
245359 
245360    --
245361    -- bulk performance
245362    --
245363    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
245364                                       p_header_num   => 0); -- 4262811
245365    --
245366    -- set accounting line options
245367    --
245368    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
245369            p_natural_side_code          => 'C'
245370          , p_gain_or_loss_flag          => 'N'
245371          , p_gl_transfer_mode_code      => 'S'
245372          , p_acct_entry_type_code       => 'A'
245373          , p_switch_side_flag           => 'Y'
245374          , p_merge_duplicate_code       => 'N'
245375          );
245376    --
245377    l_acc_rev_natural_side_code := 'D';  -- 4262811
245378    -- 
245379    --
245380    -- set accounting line type info
245381    --
245382    xla_ae_lines_pkg.SetAcctLineType
245383       (p_component_type             => l_component_type
245384       ,p_event_type_code            => l_event_type_code
245385       ,p_line_definition_owner_code => l_line_definition_owner_code
245386       ,p_line_definition_code       => l_line_definition_code
245387       ,p_accounting_line_code       => l_component_code
245388       ,p_accounting_line_type_code  => l_component_type_code
245389       ,p_accounting_line_appl_id    => l_component_appl_id
245390       ,p_amb_context_code           => l_amb_context_code
245391       ,p_entity_code                => l_entity_code
245392       ,p_event_class_code           => l_event_class_code);
245393    --
245394    -- set accounting class
245395    --
245396    xla_ae_lines_pkg.SetAcctClass(
245397            p_accounting_class_code  => 'BRIDGING'
245398          , p_ae_header_id           => l_ae_header_id
245399          );
245400 
245401    --
245402    -- set rounding class
245403    --
245404    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
245405                       'BRIDGING';
245406 
245407    --
245408    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
245409    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
245410    --
245411    -- bulk performance
245412    --
245413    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
245414 
245415    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
245416       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
245417 
245418    -- 4955764
245419    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
245420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
245421 
245422    -- 4458381 Public Sector Enh
245423    
245424    --
245425    -- set accounting attributes for the line type
245426    --
245427    l_entered_amt_idx := 17;
245428    l_accted_amt_idx  := 22;
245429    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
245430    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
245431    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
245432    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
245433    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
245434    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
245435    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
245436    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
245437    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
245438    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
245439    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
245440    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
245441    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
245442    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
245443    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
245444    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
245445    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
245446    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
245447    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
245448    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
245449    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
245450    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
245451    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
245452    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
245453    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
245454    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
245455    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
245456    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
245457    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
245458    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
245459    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
245460    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
245461    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
245462    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
245463    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
245464    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
245465    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
245466    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
245467    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
245468    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
245469    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
245470    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
245471    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
245472    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
245473    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
245474    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
245475    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
245476    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
245477    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
245478 
245479    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
245480    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
245481 
245482    ---------------------------------------------------------------------------------------------------------------
245483    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
245484    ---------------------------------------------------------------------------------------------------------------
245485    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
245486 
245487    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
245488    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
245489 
245490    IF xla_accounting_cache_pkg.GetValueChar
245491          (p_source_code         => 'LEDGER_CATEGORY_CODE'
245492          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
245493    AND l_bflow_method_code = 'PRIOR_ENTRY'
245494 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
245495    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
245496          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
245497        )
245498    THEN
245499          xla_ae_lines_pkg.BflowUpgEntry
245500            (p_business_method_code    => l_bflow_method_code
245501            ,p_business_class_code     => l_bflow_class_code
245502            ,p_balance_type            => l_balance_type_code);
245503    ELSE
245504       NULL;
245505 -- No business flow processing for business flow method of NONE.
245506    END IF;
245507 
245508    --
245509    -- call analytical criteria
245510    --
245511    
245512    --
245513    -- call description
245514    --
245515    
245516 xla_ae_lines_pkg.SetLineDescription(
245517    p_ae_header_id => l_ae_header_id
245518   ,p_description  => Description_1 (
245519      p_application_id         => p_application_id
245520    , p_ae_header_id           => l_ae_header_id 
245521 , p_source_1 => p_source_1
245522 , p_source_2 => p_source_2
245523 , p_source_3 => p_source_3
245524 , p_source_4 => p_source_4
245525 , p_source_5 => p_source_5
245526    )
245527 );
245528 
245529 
245530    --
245531    -- call ADRs
245532    -- Bug 4922099
245533    --
245534    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
245535         (NVL(l_actual_upg_option, 'N') = 'O') OR
245536         (NVL(l_enc_upg_option, 'N') = 'O')
245537       )
245538    THEN
245539    NULL;
245540    --
245541    --
245542    
245543   l_ccid := AcctDerRule_11(
245544            p_application_id           => p_application_id
245545          , p_ae_header_id             => l_ae_header_id 
245546 , p_source_22 => p_source_22
245547          , x_transaction_coa_id       => l_adr_transaction_coa_id
245548          , x_accounting_coa_id        => l_adr_accounting_coa_id
245549          , x_value_type_code          => l_adr_value_type_code
245550          , p_side                     => 'NA'
245551    );
245552 
245553    xla_ae_lines_pkg.set_ccid(
245554     p_code_combination_id          => l_ccid
245555   , p_value_type_code              => l_adr_value_type_code
245556   , p_transaction_coa_id           => l_adr_transaction_coa_id
245557   , p_accounting_coa_id            => l_adr_accounting_coa_id
245558   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
245559   , p_adr_type_code                => 'S'
245560   , p_component_type               => l_component_type
245561   , p_component_code               => l_component_code
245562   , p_component_type_code          => l_component_type_code
245563   , p_component_appl_id            => l_component_appl_id
245564   , p_amb_context_code             => l_amb_context_code
245565   , p_side                         => 'NA'
245566   );
245567 
245568 
245569    --
245570    --
245571    END IF;
245572    --
245573    -- Bug 4922099
245574    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
245575           (NVL(l_enc_upg_option, 'N') = 'O')
245576         ) AND
245577         (l_bflow_method_code = 'PRIOR_ENTRY')
245578       )
245579    THEN
245580       IF
245581       --
245582       1 = 2
245583       --
245584       THEN
245585       xla_accounting_err_pkg.build_message
245586                                     (p_appli_s_name            => 'XLA'
245587                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
245588                                     ,p_token_1                 => 'LINE_NUMBER'
245589                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
245590                                     ,p_token_2                 => 'LINE_TYPE_NAME'
245591                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
245592                                                                              l_component_type
245593                                                                             ,l_component_code
245594                                                                             ,l_component_type_code
245595                                                                             ,l_component_appl_id
245596                                                                             ,l_amb_context_code
245597                                                                             ,l_entity_code
245598                                                                             ,l_event_class_code
245599                                                                            )
245600                                     ,p_token_3                 => 'OWNER'
245601                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
245602                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
245603                                                                           ,p_lookup_code    => l_component_type_code
245604                                                                          )
245605                                     ,p_token_4                 => 'PRODUCT_NAME'
245606                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
245607                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
245608                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
245609                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
245610                                     ,p_ae_header_id            =>  NULL
245611                                        );
245612 
245613         IF (C_LEVEL_ERROR>= g_log_level) THEN
245614                  trace
245615                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
245616                       ,p_level    => C_LEVEL_ERROR
245617                       ,p_module   => l_log_module);
245618         END IF;
245619       END IF;
245620    END IF;
245621    --
245622    --
245623    ------------------------------------------------------------------------------------------------
245624    -- 4219869 Business Flow
245625    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
245626    -- Prior Entry.  Currently, the following code is always generated.
245627    ------------------------------------------------------------------------------------------------
245628    XLA_AE_LINES_PKG.ValidateCurrentLine;
245629 
245630    ------------------------------------------------------------------------------------
245631    -- 4219869 Business Flow
245632    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
245633    ------------------------------------------------------------------------------------
245634    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
245635 
245636    ----------------------------------------------------------------------------------
245637    -- 4219869 Business Flow
245638    -- Update journal entry status -- Need to generate this within IF <condition>
245639    ----------------------------------------------------------------------------------
245640    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
245641          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
245642          ,p_balance_type_code => l_balance_type_code
245643          );
245644 
245645    -------------------------------------------------------------------------------------------
245646    -- 4262811 - Generate the Accrual Reversal lines
245647    -------------------------------------------------------------------------------------------
245648    BEGIN
245649       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
245650                               (g_array_event(p_event_id).array_value_num('header_index'));
245651       IF l_acc_rev_flag IS NULL THEN
245652          l_acc_rev_flag := 'N';
245653       END IF;
245654    EXCEPTION
245655       WHEN OTHERS THEN
245656          l_acc_rev_flag := 'N';
245657    END;
245658    --
245659    IF (l_acc_rev_flag = 'Y') THEN
245660 
245661        -- 4645092  ------------------------------------------------------------------------------
245662        -- To allow MPA report to determine if it should generate report process
245663        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
245664        ------------------------------------------------------------------------------------------
245665 
245666        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
245667        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
245668    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
245669    -- call ADRs
245670    -- Bug 4922099
245671    --
245672    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
245673         (NVL(l_actual_upg_option, 'N') = 'O') OR
245674         (NVL(l_enc_upg_option, 'N') = 'O')
245675       )
245676    THEN
245677    NULL;
245678    --
245679    --
245680    
245681   l_ccid := AcctDerRule_11(
245682            p_application_id           => p_application_id
245683          , p_ae_header_id             => l_ae_header_id 
245684 , p_source_22 => p_source_22
245685          , x_transaction_coa_id       => l_adr_transaction_coa_id
245686          , x_accounting_coa_id        => l_adr_accounting_coa_id
245687          , x_value_type_code          => l_adr_value_type_code
245688          , p_side                     => 'NA'
245689    );
245690 
245691    xla_ae_lines_pkg.set_ccid(
245692     p_code_combination_id          => l_ccid
245693   , p_value_type_code              => l_adr_value_type_code
245694   , p_transaction_coa_id           => l_adr_transaction_coa_id
245695   , p_accounting_coa_id            => l_adr_accounting_coa_id
245696   , p_adr_code                     => 'PI_BRIDGING_ACCOUNT'
245697   , p_adr_type_code                => 'S'
245698   , p_component_type               => l_component_type
245699   , p_component_code               => l_component_code
245700   , p_component_type_code          => l_component_type_code
245701   , p_component_appl_id            => l_component_appl_id
245702   , p_amb_context_code             => l_amb_context_code
245703   , p_side                         => 'NA'
245704   );
245705 
245706 
245707    --
245708    --
245709    END IF;
245710 
245711        --
245712        -- Update the line information that should be overwritten
245713        --
245714        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
245715                                          p_header_num   => 1);
245716        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
245717 
245718        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
245719 
245720        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
245721           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
245722        END IF;
245723 
245724       --
245725       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
245726       --
245727       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
245728           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
245729       ELSE
245730           ---------------------------------------------------------------------------------------------------
245731           -- 4262811a Switch Sign
245732           ---------------------------------------------------------------------------------------------------
245733           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
245734           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
245735                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
245736           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
245737                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
245738           -- 5132302
245739           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
245740                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
245741 
245742       END IF;
245743 
245744       -- 4955764
245745       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
245746       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
245747 
245748 
245749       XLA_AE_LINES_PKG.ValidateCurrentLine;
245750       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
245751 
245752       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
245753                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
245754                ,p_balance_type_code => l_balance_type_code);
245755 
245756    END IF;
245757 
245758    -----------------------------------------------------------------------------------------
245759    -- 4262811 Multiperiod Accounting
245760    -----------------------------------------------------------------------------------------
245761      -- No MPA option is assigned.
245762 
245763 
245764 END IF;
245765 END IF;
245766 --
245767 
245768 --
245769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
245770    trace
245771       (p_msg      => 'END of AcctLineType_442'
245772       ,p_level    => C_LEVEL_PROCEDURE
245773       ,p_module   => l_log_module);
245774 END IF;
245775 --
245776 EXCEPTION
245777   WHEN xla_exceptions_pkg.application_exception THEN
245778       RAISE;
245779   WHEN OTHERS THEN
245780        xla_exceptions_pkg.raise_message
245781            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_442');
245782 END AcctLineType_442;
245783 --
245784 
245785 ---------------------------------------
245786 --
245787 -- PRIVATE FUNCTION
245788 --         AcctLineType_443
245789 --
245790 ---------------------------------------
245791 PROCEDURE AcctLineType_443 (
245792   p_application_id        IN NUMBER
245793  ,p_event_id              IN NUMBER
245794  ,p_calculate_acctd_flag  IN VARCHAR2
245795  ,p_calculate_g_l_flag    IN VARCHAR2
245796  ,p_actual_flag           IN OUT VARCHAR2
245797  ,p_balance_type_code     OUT VARCHAR2
245798  ,p_gain_or_loss_ref      OUT VARCHAR2
245799  
245800 --TRANSACTION_ID
245801  , p_source_1            IN NUMBER
245802 --Item Concatenated Segments
245803  , p_source_2            IN VARCHAR2
245804 --Transaction Quantity
245805  , p_source_3            IN NUMBER
245806 --Transaction Unit of Measure Code
245807  , p_source_4            IN VARCHAR2
245808 --Inventory Transaction Type Description
245809  , p_source_5            IN VARCHAR2
245810 --Product Line Accounting Category Expense Account
245811  , p_source_24            IN NUMBER
245812 --DISTRIBUTION_IDENTIFIER
245813  , p_source_84            IN NUMBER
245814 --Distribution Type
245815  , p_source_85            IN VARCHAR2
245816  , p_source_85_meaning    IN VARCHAR2
245817 --Entered Currency Code
245818  , p_source_88            IN VARCHAR2
245819 --Entered Amount
245820  , p_source_91            IN NUMBER
245821 --Currency Conversion Date
245822  , p_source_92            IN DATE
245823 --Currency Conversion Rate
245824  , p_source_93            IN NUMBER
245825 --Currency Conversion Type
245826  , p_source_94            IN VARCHAR2
245827 --Accounted Amount
245828  , p_source_95            IN NUMBER
245829 --Accounting Line Type
245830  , p_source_97            IN NUMBER
245831 )
245832 IS
245833 
245834 l_component_type              VARCHAR2(80);
245835 l_component_code              VARCHAR2(30);
245836 l_component_type_code         VARCHAR2(1);
245837 l_component_appl_id           INTEGER;
245838 l_amb_context_code            VARCHAR2(30);
245839 l_entity_code                 VARCHAR2(30);
245840 l_event_class_code            VARCHAR2(30);
245841 l_ae_header_id                NUMBER;
245842 l_event_type_code             VARCHAR2(30);
245843 l_line_definition_code        VARCHAR2(30);
245844 l_line_definition_owner_code  VARCHAR2(1);
245845 --
245846 -- adr variables
245847 l_segment                     VARCHAR2(30);
245848 l_ccid                        NUMBER;
245849 l_adr_transaction_coa_id      NUMBER;
245850 l_adr_accounting_coa_id       NUMBER;
245851 l_adr_flexfield_segment_code  VARCHAR2(30);
245852 l_adr_flex_value_set_id       NUMBER;
245853 l_adr_value_type_code         VARCHAR2(30);
245854 l_adr_value_combination_id    NUMBER;
245855 l_adr_value_segment_code      VARCHAR2(30);
245856 
245857 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
245858 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
245859 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
245860 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
245861 
245862 -- 4262811 Variables ------------------------------------------------------------------------------------------
245863 l_entered_amt_idx             NUMBER;
245864 l_accted_amt_idx              NUMBER;
245865 l_acc_rev_flag                VARCHAR2(1);
245866 l_accrual_line_num            NUMBER;
245867 l_tmp_amt                     NUMBER;
245868 l_acc_rev_natural_side_code   VARCHAR2(1);
245869 
245870 l_num_entries                 NUMBER;
245871 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
245872 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
245873 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
245874 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
245875 l_recog_line_1                NUMBER;
245876 l_recog_line_2                NUMBER;
245877 
245878 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
245879 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
245880 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
245881 
245882 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
245883 
245884 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
245885 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
245886 
245887 ---------------------------------------------------------------------------------------------------------------
245888 
245889 
245890 --
245891 -- bulk performance
245892 --
245893 l_balance_type_code           VARCHAR2(1);
245894 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
245895 l_log_module                  VARCHAR2(240);
245896 
245897 --
245898 -- Upgrade strategy
245899 --
245900 l_actual_upg_option           VARCHAR2(1);
245901 l_enc_upg_option           VARCHAR2(1);
245902 
245903 --
245904 BEGIN
245905 --
245906 IF g_log_enabled THEN
245907       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_443';
245908 END IF;
245909 --
245910 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
245911 
245912       trace
245913          (p_msg      => 'BEGIN of AcctLineType_443'
245914          ,p_level    => C_LEVEL_PROCEDURE
245915          ,p_module   => l_log_module);
245916 
245917 END IF;
245918 --
245919 l_component_type             := 'AMB_JLT';
245920 l_component_code             := 'PI_LOG_IC_EXPENSE';
245921 l_component_type_code        := 'S';
245922 l_component_appl_id          :=  707;
245923 l_amb_context_code           := 'DEFAULT';
245924 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
245925 l_event_class_code           := 'LOG_INTERCOMPANY';
245926 l_event_type_code            := 'LOG_IC_RCPT_RETURN';
245927 l_line_definition_owner_code := 'S';
245928 l_line_definition_code       := 'PI_LOG_IC_RCPT_RETURN';
245929 --
245930 l_balance_type_code          := 'A';
245931 l_segment                     := NULL;
245932 l_ccid                        := NULL;
245933 l_adr_transaction_coa_id      := NULL;
245934 l_adr_accounting_coa_id       := NULL;
245935 l_adr_flexfield_segment_code  := NULL;
245936 l_adr_flex_value_set_id       := NULL;
245937 l_adr_value_type_code         := NULL;
245938 l_adr_value_combination_id    := NULL;
245939 l_adr_value_segment_code      := NULL;
245940 
245941 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
245942 l_bflow_class_code           := '';    -- 4219869 Business Flow
245943 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
245944 l_budgetary_control_flag     := 'N';
245945 
245946 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
245947 l_bflow_applied_to_amt       := NULL; -- 5132302
245948 l_entered_amt_idx            := NULL;          -- 4262811
245949 l_accted_amt_idx             := NULL;          -- 4262811
245950 l_acc_rev_flag               := NULL;          -- 4262811
245951 l_accrual_line_num           := NULL;          -- 4262811
245952 l_tmp_amt                    := NULL;          -- 4262811
245953 --
245954  
245955 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
245956     l_balance_type_code <> 'B' THEN
245957 IF NVL(p_source_97,9E125) =  1
245958  THEN 
245959 
245960    --
245961    XLA_AE_LINES_PKG.SetNewLine;
245962 
245963    p_balance_type_code          := l_balance_type_code;
245964    -- set the flag so later we will know whether the gain loss line needs to be created
245965    
245966    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
245967      p_actual_flag :='A';
245968    END IF;
245969 
245970    --
245971    -- bulk performance
245972    --
245973    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
245974                                       p_header_num   => 0); -- 4262811
245975    --
245976    -- set accounting line options
245977    --
245978    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
245979            p_natural_side_code          => 'D'
245980          , p_gain_or_loss_flag          => 'N'
245981          , p_gl_transfer_mode_code      => 'S'
245982          , p_acct_entry_type_code       => 'A'
245983          , p_switch_side_flag           => 'Y'
245984          , p_merge_duplicate_code       => 'N'
245985          );
245986    --
245987    l_acc_rev_natural_side_code := 'C';  -- 4262811
245988    -- 
245989    --
245990    -- set accounting line type info
245991    --
245992    xla_ae_lines_pkg.SetAcctLineType
245993       (p_component_type             => l_component_type
245994       ,p_event_type_code            => l_event_type_code
245995       ,p_line_definition_owner_code => l_line_definition_owner_code
245996       ,p_line_definition_code       => l_line_definition_code
245997       ,p_accounting_line_code       => l_component_code
245998       ,p_accounting_line_type_code  => l_component_type_code
245999       ,p_accounting_line_appl_id    => l_component_appl_id
246000       ,p_amb_context_code           => l_amb_context_code
246001       ,p_entity_code                => l_entity_code
246002       ,p_event_class_code           => l_event_class_code);
246003    --
246004    -- set accounting class
246005    --
246006    xla_ae_lines_pkg.SetAcctClass(
246007            p_accounting_class_code  => 'EXPENSE'
246008          , p_ae_header_id           => l_ae_header_id
246009          );
246010 
246011    --
246012    -- set rounding class
246013    --
246014    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
246015                       'EXPENSE';
246016 
246017    --
246018    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
246019    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
246020    --
246021    -- bulk performance
246022    --
246023    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
246024 
246025    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
246026       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
246027 
246028    -- 4955764
246029    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
246030       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
246031 
246032    -- 4458381 Public Sector Enh
246033    
246034    --
246035    -- set accounting attributes for the line type
246036    --
246037    l_entered_amt_idx := 3;
246038    l_accted_amt_idx  := 8;
246039    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
246040    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
246041    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
246042    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
246043    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
246044    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
246045    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
246046    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
246047    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
246048    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
246049    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
246050    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
246051    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
246052    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
246053    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
246054    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
246055    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
246056 
246057    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
246058    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
246059 
246060    ---------------------------------------------------------------------------------------------------------------
246061    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
246062    ---------------------------------------------------------------------------------------------------------------
246063    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
246064 
246065    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
246066    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
246067 
246068    IF xla_accounting_cache_pkg.GetValueChar
246069          (p_source_code         => 'LEDGER_CATEGORY_CODE'
246070          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
246071    AND l_bflow_method_code = 'PRIOR_ENTRY'
246072 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
246073    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
246074          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
246075        )
246076    THEN
246077          xla_ae_lines_pkg.BflowUpgEntry
246078            (p_business_method_code    => l_bflow_method_code
246079            ,p_business_class_code     => l_bflow_class_code
246080            ,p_balance_type            => l_balance_type_code);
246081    ELSE
246082       NULL;
246083 -- No business flow processing for business flow method of NONE.
246084    END IF;
246085 
246086    --
246087    -- call analytical criteria
246088    --
246089    
246090    --
246091    -- call description
246092    --
246093    
246094 xla_ae_lines_pkg.SetLineDescription(
246095    p_ae_header_id => l_ae_header_id
246096   ,p_description  => Description_1 (
246097      p_application_id         => p_application_id
246098    , p_ae_header_id           => l_ae_header_id 
246099 , p_source_1 => p_source_1
246100 , p_source_2 => p_source_2
246101 , p_source_3 => p_source_3
246102 , p_source_4 => p_source_4
246103 , p_source_5 => p_source_5
246104    )
246105 );
246106 
246107 
246108    --
246109    -- call ADRs
246110    -- Bug 4922099
246111    --
246112    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
246113         (NVL(l_actual_upg_option, 'N') = 'O') OR
246114         (NVL(l_enc_upg_option, 'N') = 'O')
246115       )
246116    THEN
246117    NULL;
246118    --
246119    --
246120    
246121   l_ccid := AcctDerRule_13(
246122            p_application_id           => p_application_id
246123          , p_ae_header_id             => l_ae_header_id 
246124 , p_source_24 => p_source_24
246125          , x_transaction_coa_id       => l_adr_transaction_coa_id
246126          , x_accounting_coa_id        => l_adr_accounting_coa_id
246127          , x_value_type_code          => l_adr_value_type_code
246128          , p_side                     => 'NA'
246129    );
246130 
246131    xla_ae_lines_pkg.set_ccid(
246132     p_code_combination_id          => l_ccid
246133   , p_value_type_code              => l_adr_value_type_code
246134   , p_transaction_coa_id           => l_adr_transaction_coa_id
246135   , p_accounting_coa_id            => l_adr_accounting_coa_id
246136   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
246137   , p_adr_type_code                => 'S'
246138   , p_component_type               => l_component_type
246139   , p_component_code               => l_component_code
246140   , p_component_type_code          => l_component_type_code
246141   , p_component_appl_id            => l_component_appl_id
246142   , p_amb_context_code             => l_amb_context_code
246143   , p_side                         => 'NA'
246144   );
246145 
246146 
246147    --
246148    --
246149    END IF;
246150    --
246151    -- Bug 4922099
246152    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
246153           (NVL(l_enc_upg_option, 'N') = 'O')
246154         ) AND
246155         (l_bflow_method_code = 'PRIOR_ENTRY')
246156       )
246157    THEN
246158       IF
246159       --
246160       1 = 2
246161       --
246162       THEN
246163       xla_accounting_err_pkg.build_message
246164                                     (p_appli_s_name            => 'XLA'
246165                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
246166                                     ,p_token_1                 => 'LINE_NUMBER'
246167                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
246168                                     ,p_token_2                 => 'LINE_TYPE_NAME'
246169                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
246170                                                                              l_component_type
246171                                                                             ,l_component_code
246172                                                                             ,l_component_type_code
246173                                                                             ,l_component_appl_id
246174                                                                             ,l_amb_context_code
246175                                                                             ,l_entity_code
246176                                                                             ,l_event_class_code
246177                                                                            )
246178                                     ,p_token_3                 => 'OWNER'
246179                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
246180                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
246181                                                                           ,p_lookup_code    => l_component_type_code
246182                                                                          )
246183                                     ,p_token_4                 => 'PRODUCT_NAME'
246184                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
246185                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
246186                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
246187                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
246188                                     ,p_ae_header_id            =>  NULL
246189                                        );
246190 
246191         IF (C_LEVEL_ERROR>= g_log_level) THEN
246192                  trace
246193                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
246194                       ,p_level    => C_LEVEL_ERROR
246195                       ,p_module   => l_log_module);
246196         END IF;
246197       END IF;
246198    END IF;
246199    --
246200    --
246201    ------------------------------------------------------------------------------------------------
246202    -- 4219869 Business Flow
246203    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
246204    -- Prior Entry.  Currently, the following code is always generated.
246205    ------------------------------------------------------------------------------------------------
246206    XLA_AE_LINES_PKG.ValidateCurrentLine;
246207 
246208    ------------------------------------------------------------------------------------
246209    -- 4219869 Business Flow
246210    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
246211    ------------------------------------------------------------------------------------
246212    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
246213 
246214    ----------------------------------------------------------------------------------
246215    -- 4219869 Business Flow
246216    -- Update journal entry status -- Need to generate this within IF <condition>
246217    ----------------------------------------------------------------------------------
246218    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
246219          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
246220          ,p_balance_type_code => l_balance_type_code
246221          );
246222 
246223    -------------------------------------------------------------------------------------------
246224    -- 4262811 - Generate the Accrual Reversal lines
246225    -------------------------------------------------------------------------------------------
246226    BEGIN
246227       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
246228                               (g_array_event(p_event_id).array_value_num('header_index'));
246229       IF l_acc_rev_flag IS NULL THEN
246230          l_acc_rev_flag := 'N';
246231       END IF;
246232    EXCEPTION
246233       WHEN OTHERS THEN
246234          l_acc_rev_flag := 'N';
246235    END;
246236    --
246237    IF (l_acc_rev_flag = 'Y') THEN
246238 
246239        -- 4645092  ------------------------------------------------------------------------------
246240        -- To allow MPA report to determine if it should generate report process
246241        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
246242        ------------------------------------------------------------------------------------------
246243 
246244        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
246245        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
246246    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
246247    -- call ADRs
246248    -- Bug 4922099
246249    --
246250    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
246251         (NVL(l_actual_upg_option, 'N') = 'O') OR
246252         (NVL(l_enc_upg_option, 'N') = 'O')
246253       )
246254    THEN
246255    NULL;
246256    --
246257    --
246258    
246259   l_ccid := AcctDerRule_13(
246260            p_application_id           => p_application_id
246261          , p_ae_header_id             => l_ae_header_id 
246262 , p_source_24 => p_source_24
246263          , x_transaction_coa_id       => l_adr_transaction_coa_id
246264          , x_accounting_coa_id        => l_adr_accounting_coa_id
246265          , x_value_type_code          => l_adr_value_type_code
246266          , p_side                     => 'NA'
246267    );
246268 
246269    xla_ae_lines_pkg.set_ccid(
246270     p_code_combination_id          => l_ccid
246271   , p_value_type_code              => l_adr_value_type_code
246272   , p_transaction_coa_id           => l_adr_transaction_coa_id
246273   , p_accounting_coa_id            => l_adr_accounting_coa_id
246274   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
246275   , p_adr_type_code                => 'S'
246276   , p_component_type               => l_component_type
246277   , p_component_code               => l_component_code
246278   , p_component_type_code          => l_component_type_code
246279   , p_component_appl_id            => l_component_appl_id
246280   , p_amb_context_code             => l_amb_context_code
246281   , p_side                         => 'NA'
246282   );
246283 
246284 
246285    --
246286    --
246287    END IF;
246288 
246289        --
246290        -- Update the line information that should be overwritten
246291        --
246292        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
246293                                          p_header_num   => 1);
246294        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
246295 
246296        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
246297 
246298        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
246299           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
246300        END IF;
246301 
246302       --
246303       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
246304       --
246305       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
246306           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
246307       ELSE
246308           ---------------------------------------------------------------------------------------------------
246309           -- 4262811a Switch Sign
246310           ---------------------------------------------------------------------------------------------------
246311           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
246312           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
246313                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
246314           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
246315                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
246316           -- 5132302
246317           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
246318                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
246319 
246320       END IF;
246321 
246322       -- 4955764
246323       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
246324       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
246325 
246326 
246327       XLA_AE_LINES_PKG.ValidateCurrentLine;
246328       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
246329 
246330       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
246331                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
246332                ,p_balance_type_code => l_balance_type_code);
246333 
246334    END IF;
246335 
246336    -----------------------------------------------------------------------------------------
246337    -- 4262811 Multiperiod Accounting
246338    -----------------------------------------------------------------------------------------
246339      -- No MPA option is assigned.
246340 
246341 
246342 END IF;
246343 END IF;
246344 --
246345 
246346 --
246347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
246348    trace
246349       (p_msg      => 'END of AcctLineType_443'
246350       ,p_level    => C_LEVEL_PROCEDURE
246351       ,p_module   => l_log_module);
246352 END IF;
246353 --
246354 EXCEPTION
246355   WHEN xla_exceptions_pkg.application_exception THEN
246356       RAISE;
246357   WHEN OTHERS THEN
246358        xla_exceptions_pkg.raise_message
246359            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_443');
246360 END AcctLineType_443;
246361 --
246362 
246363 ---------------------------------------
246364 --
246365 -- PRIVATE FUNCTION
246366 --         AcctLineType_444
246367 --
246368 ---------------------------------------
246369 PROCEDURE AcctLineType_444 (
246370   p_application_id        IN NUMBER
246371  ,p_event_id              IN NUMBER
246372  ,p_calculate_acctd_flag  IN VARCHAR2
246373  ,p_calculate_g_l_flag    IN VARCHAR2
246374  ,p_actual_flag           IN OUT VARCHAR2
246375  ,p_balance_type_code     OUT VARCHAR2
246376  ,p_gain_or_loss_ref      OUT VARCHAR2
246377  
246378 --TRANSACTION_ID
246379  , p_source_1            IN NUMBER
246380 --Item Concatenated Segments
246381  , p_source_2            IN VARCHAR2
246382 --Transaction Quantity
246383  , p_source_3            IN NUMBER
246384 --Transaction Unit of Measure Code
246385  , p_source_4            IN VARCHAR2
246386 --Inventory Transaction Type Description
246387  , p_source_5            IN VARCHAR2
246388 --Product Line Accounting Category Expense Account
246389  , p_source_24            IN NUMBER
246390 --DISTRIBUTION_IDENTIFIER
246391  , p_source_84            IN NUMBER
246392 --Distribution Type
246393  , p_source_85            IN VARCHAR2
246394  , p_source_85_meaning    IN VARCHAR2
246395 --Entered Currency Code
246396  , p_source_88            IN VARCHAR2
246397 --Entered Amount
246398  , p_source_91            IN NUMBER
246399 --Currency Conversion Date
246400  , p_source_92            IN DATE
246401 --Currency Conversion Rate
246402  , p_source_93            IN NUMBER
246403 --Currency Conversion Type
246404  , p_source_94            IN VARCHAR2
246405 --Accounted Amount
246406  , p_source_95            IN NUMBER
246407 --Accounting Line Type
246408  , p_source_97            IN NUMBER
246409 )
246410 IS
246411 
246412 l_component_type              VARCHAR2(80);
246413 l_component_code              VARCHAR2(30);
246414 l_component_type_code         VARCHAR2(1);
246415 l_component_appl_id           INTEGER;
246416 l_amb_context_code            VARCHAR2(30);
246417 l_entity_code                 VARCHAR2(30);
246418 l_event_class_code            VARCHAR2(30);
246419 l_ae_header_id                NUMBER;
246420 l_event_type_code             VARCHAR2(30);
246421 l_line_definition_code        VARCHAR2(30);
246422 l_line_definition_owner_code  VARCHAR2(1);
246423 --
246424 -- adr variables
246425 l_segment                     VARCHAR2(30);
246426 l_ccid                        NUMBER;
246427 l_adr_transaction_coa_id      NUMBER;
246428 l_adr_accounting_coa_id       NUMBER;
246429 l_adr_flexfield_segment_code  VARCHAR2(30);
246430 l_adr_flex_value_set_id       NUMBER;
246431 l_adr_value_type_code         VARCHAR2(30);
246432 l_adr_value_combination_id    NUMBER;
246433 l_adr_value_segment_code      VARCHAR2(30);
246434 
246435 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
246436 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
246437 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
246438 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
246439 
246440 -- 4262811 Variables ------------------------------------------------------------------------------------------
246441 l_entered_amt_idx             NUMBER;
246442 l_accted_amt_idx              NUMBER;
246443 l_acc_rev_flag                VARCHAR2(1);
246444 l_accrual_line_num            NUMBER;
246445 l_tmp_amt                     NUMBER;
246446 l_acc_rev_natural_side_code   VARCHAR2(1);
246447 
246448 l_num_entries                 NUMBER;
246449 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
246450 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
246451 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
246452 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
246453 l_recog_line_1                NUMBER;
246454 l_recog_line_2                NUMBER;
246455 
246456 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
246457 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
246458 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
246459 
246460 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
246461 
246462 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
246463 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
246464 
246465 ---------------------------------------------------------------------------------------------------------------
246466 
246467 
246468 --
246469 -- bulk performance
246470 --
246471 l_balance_type_code           VARCHAR2(1);
246472 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
246473 l_log_module                  VARCHAR2(240);
246474 
246475 --
246476 -- Upgrade strategy
246477 --
246478 l_actual_upg_option           VARCHAR2(1);
246479 l_enc_upg_option           VARCHAR2(1);
246480 
246481 --
246482 BEGIN
246483 --
246484 IF g_log_enabled THEN
246485       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_444';
246486 END IF;
246487 --
246488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
246489 
246490       trace
246491          (p_msg      => 'BEGIN of AcctLineType_444'
246492          ,p_level    => C_LEVEL_PROCEDURE
246493          ,p_module   => l_log_module);
246494 
246495 END IF;
246496 --
246497 l_component_type             := 'AMB_JLT';
246498 l_component_code             := 'PI_LOG_IC_EXPENSE';
246499 l_component_type_code        := 'S';
246500 l_component_appl_id          :=  707;
246501 l_amb_context_code           := 'DEFAULT';
246502 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
246503 l_event_class_code           := 'LOG_INTERCOMPANY';
246504 l_event_type_code            := 'LOG_IC_SHIPMENT_RCPT';
246505 l_line_definition_owner_code := 'S';
246506 l_line_definition_code       := 'PI_LOG_IC_SHIPMENT_RCPT';
246507 --
246508 l_balance_type_code          := 'A';
246509 l_segment                     := NULL;
246510 l_ccid                        := NULL;
246511 l_adr_transaction_coa_id      := NULL;
246512 l_adr_accounting_coa_id       := NULL;
246513 l_adr_flexfield_segment_code  := NULL;
246514 l_adr_flex_value_set_id       := NULL;
246515 l_adr_value_type_code         := NULL;
246516 l_adr_value_combination_id    := NULL;
246517 l_adr_value_segment_code      := NULL;
246518 
246519 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
246520 l_bflow_class_code           := '';    -- 4219869 Business Flow
246521 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
246522 l_budgetary_control_flag     := 'N';
246523 
246524 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
246525 l_bflow_applied_to_amt       := NULL; -- 5132302
246526 l_entered_amt_idx            := NULL;          -- 4262811
246527 l_accted_amt_idx             := NULL;          -- 4262811
246528 l_acc_rev_flag               := NULL;          -- 4262811
246529 l_accrual_line_num           := NULL;          -- 4262811
246530 l_tmp_amt                    := NULL;          -- 4262811
246531 --
246532  
246533 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
246534     l_balance_type_code <> 'B' THEN
246535 IF NVL(p_source_97,9E125) =  1
246536  THEN 
246537 
246538    --
246539    XLA_AE_LINES_PKG.SetNewLine;
246540 
246541    p_balance_type_code          := l_balance_type_code;
246542    -- set the flag so later we will know whether the gain loss line needs to be created
246543    
246544    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
246545      p_actual_flag :='A';
246546    END IF;
246547 
246548    --
246549    -- bulk performance
246550    --
246551    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
246552                                       p_header_num   => 0); -- 4262811
246553    --
246554    -- set accounting line options
246555    --
246556    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
246557            p_natural_side_code          => 'D'
246558          , p_gain_or_loss_flag          => 'N'
246559          , p_gl_transfer_mode_code      => 'S'
246560          , p_acct_entry_type_code       => 'A'
246561          , p_switch_side_flag           => 'Y'
246562          , p_merge_duplicate_code       => 'N'
246563          );
246564    --
246565    l_acc_rev_natural_side_code := 'C';  -- 4262811
246566    -- 
246567    --
246568    -- set accounting line type info
246569    --
246570    xla_ae_lines_pkg.SetAcctLineType
246571       (p_component_type             => l_component_type
246572       ,p_event_type_code            => l_event_type_code
246573       ,p_line_definition_owner_code => l_line_definition_owner_code
246574       ,p_line_definition_code       => l_line_definition_code
246575       ,p_accounting_line_code       => l_component_code
246576       ,p_accounting_line_type_code  => l_component_type_code
246577       ,p_accounting_line_appl_id    => l_component_appl_id
246578       ,p_amb_context_code           => l_amb_context_code
246579       ,p_entity_code                => l_entity_code
246580       ,p_event_class_code           => l_event_class_code);
246581    --
246582    -- set accounting class
246583    --
246584    xla_ae_lines_pkg.SetAcctClass(
246585            p_accounting_class_code  => 'EXPENSE'
246586          , p_ae_header_id           => l_ae_header_id
246587          );
246588 
246589    --
246590    -- set rounding class
246591    --
246592    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
246593                       'EXPENSE';
246594 
246595    --
246596    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
246597    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
246598    --
246599    -- bulk performance
246600    --
246601    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
246602 
246603    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
246604       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
246605 
246606    -- 4955764
246607    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
246608       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
246609 
246610    -- 4458381 Public Sector Enh
246611    
246612    --
246613    -- set accounting attributes for the line type
246614    --
246615    l_entered_amt_idx := 3;
246616    l_accted_amt_idx  := 8;
246617    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
246618    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
246619    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
246620    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
246621    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
246622    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
246623    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
246624    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
246625    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
246626    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
246627    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
246628    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
246629    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
246630    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
246631    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
246632    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
246633    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
246634 
246635    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
246636    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
246637 
246638    ---------------------------------------------------------------------------------------------------------------
246639    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
246640    ---------------------------------------------------------------------------------------------------------------
246641    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
246642 
246643    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
246644    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
246645 
246646    IF xla_accounting_cache_pkg.GetValueChar
246647          (p_source_code         => 'LEDGER_CATEGORY_CODE'
246648          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
246649    AND l_bflow_method_code = 'PRIOR_ENTRY'
246650 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
246651    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
246652          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
246653        )
246654    THEN
246655          xla_ae_lines_pkg.BflowUpgEntry
246656            (p_business_method_code    => l_bflow_method_code
246657            ,p_business_class_code     => l_bflow_class_code
246658            ,p_balance_type            => l_balance_type_code);
246659    ELSE
246660       NULL;
246661 -- No business flow processing for business flow method of NONE.
246662    END IF;
246663 
246664    --
246665    -- call analytical criteria
246666    --
246667    
246668    --
246669    -- call description
246670    --
246671    
246672 xla_ae_lines_pkg.SetLineDescription(
246673    p_ae_header_id => l_ae_header_id
246674   ,p_description  => Description_1 (
246675      p_application_id         => p_application_id
246676    , p_ae_header_id           => l_ae_header_id 
246677 , p_source_1 => p_source_1
246678 , p_source_2 => p_source_2
246679 , p_source_3 => p_source_3
246680 , p_source_4 => p_source_4
246681 , p_source_5 => p_source_5
246682    )
246683 );
246684 
246685 
246686    --
246687    -- call ADRs
246688    -- Bug 4922099
246689    --
246690    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
246691         (NVL(l_actual_upg_option, 'N') = 'O') OR
246692         (NVL(l_enc_upg_option, 'N') = 'O')
246693       )
246694    THEN
246695    NULL;
246696    --
246697    --
246698    
246699   l_ccid := AcctDerRule_13(
246700            p_application_id           => p_application_id
246701          , p_ae_header_id             => l_ae_header_id 
246702 , p_source_24 => p_source_24
246703          , x_transaction_coa_id       => l_adr_transaction_coa_id
246704          , x_accounting_coa_id        => l_adr_accounting_coa_id
246705          , x_value_type_code          => l_adr_value_type_code
246706          , p_side                     => 'NA'
246707    );
246708 
246709    xla_ae_lines_pkg.set_ccid(
246710     p_code_combination_id          => l_ccid
246711   , p_value_type_code              => l_adr_value_type_code
246712   , p_transaction_coa_id           => l_adr_transaction_coa_id
246713   , p_accounting_coa_id            => l_adr_accounting_coa_id
246714   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
246715   , p_adr_type_code                => 'S'
246716   , p_component_type               => l_component_type
246717   , p_component_code               => l_component_code
246718   , p_component_type_code          => l_component_type_code
246719   , p_component_appl_id            => l_component_appl_id
246720   , p_amb_context_code             => l_amb_context_code
246721   , p_side                         => 'NA'
246722   );
246723 
246724 
246725    --
246726    --
246727    END IF;
246728    --
246729    -- Bug 4922099
246730    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
246731           (NVL(l_enc_upg_option, 'N') = 'O')
246732         ) AND
246733         (l_bflow_method_code = 'PRIOR_ENTRY')
246734       )
246735    THEN
246736       IF
246737       --
246738       1 = 2
246739       --
246740       THEN
246741       xla_accounting_err_pkg.build_message
246742                                     (p_appli_s_name            => 'XLA'
246743                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
246744                                     ,p_token_1                 => 'LINE_NUMBER'
246745                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
246746                                     ,p_token_2                 => 'LINE_TYPE_NAME'
246747                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
246748                                                                              l_component_type
246749                                                                             ,l_component_code
246750                                                                             ,l_component_type_code
246751                                                                             ,l_component_appl_id
246752                                                                             ,l_amb_context_code
246753                                                                             ,l_entity_code
246754                                                                             ,l_event_class_code
246755                                                                            )
246756                                     ,p_token_3                 => 'OWNER'
246757                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
246758                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
246759                                                                           ,p_lookup_code    => l_component_type_code
246760                                                                          )
246761                                     ,p_token_4                 => 'PRODUCT_NAME'
246762                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
246763                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
246764                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
246765                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
246766                                     ,p_ae_header_id            =>  NULL
246767                                        );
246768 
246769         IF (C_LEVEL_ERROR>= g_log_level) THEN
246770                  trace
246771                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
246772                       ,p_level    => C_LEVEL_ERROR
246773                       ,p_module   => l_log_module);
246774         END IF;
246775       END IF;
246776    END IF;
246777    --
246778    --
246779    ------------------------------------------------------------------------------------------------
246780    -- 4219869 Business Flow
246781    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
246782    -- Prior Entry.  Currently, the following code is always generated.
246783    ------------------------------------------------------------------------------------------------
246784    XLA_AE_LINES_PKG.ValidateCurrentLine;
246785 
246786    ------------------------------------------------------------------------------------
246787    -- 4219869 Business Flow
246788    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
246789    ------------------------------------------------------------------------------------
246790    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
246791 
246792    ----------------------------------------------------------------------------------
246793    -- 4219869 Business Flow
246794    -- Update journal entry status -- Need to generate this within IF <condition>
246795    ----------------------------------------------------------------------------------
246796    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
246797          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
246798          ,p_balance_type_code => l_balance_type_code
246799          );
246800 
246801    -------------------------------------------------------------------------------------------
246802    -- 4262811 - Generate the Accrual Reversal lines
246803    -------------------------------------------------------------------------------------------
246804    BEGIN
246805       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
246806                               (g_array_event(p_event_id).array_value_num('header_index'));
246807       IF l_acc_rev_flag IS NULL THEN
246808          l_acc_rev_flag := 'N';
246809       END IF;
246810    EXCEPTION
246811       WHEN OTHERS THEN
246812          l_acc_rev_flag := 'N';
246813    END;
246814    --
246815    IF (l_acc_rev_flag = 'Y') THEN
246816 
246817        -- 4645092  ------------------------------------------------------------------------------
246818        -- To allow MPA report to determine if it should generate report process
246819        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
246820        ------------------------------------------------------------------------------------------
246821 
246822        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
246823        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
246824    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
246825    -- call ADRs
246826    -- Bug 4922099
246827    --
246828    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
246829         (NVL(l_actual_upg_option, 'N') = 'O') OR
246830         (NVL(l_enc_upg_option, 'N') = 'O')
246831       )
246832    THEN
246833    NULL;
246834    --
246835    --
246836    
246837   l_ccid := AcctDerRule_13(
246838            p_application_id           => p_application_id
246839          , p_ae_header_id             => l_ae_header_id 
246840 , p_source_24 => p_source_24
246841          , x_transaction_coa_id       => l_adr_transaction_coa_id
246842          , x_accounting_coa_id        => l_adr_accounting_coa_id
246843          , x_value_type_code          => l_adr_value_type_code
246844          , p_side                     => 'NA'
246845    );
246846 
246847    xla_ae_lines_pkg.set_ccid(
246848     p_code_combination_id          => l_ccid
246849   , p_value_type_code              => l_adr_value_type_code
246850   , p_transaction_coa_id           => l_adr_transaction_coa_id
246851   , p_accounting_coa_id            => l_adr_accounting_coa_id
246852   , p_adr_code                     => 'PI_CATEGORY_EXPENSE'
246853   , p_adr_type_code                => 'S'
246854   , p_component_type               => l_component_type
246855   , p_component_code               => l_component_code
246856   , p_component_type_code          => l_component_type_code
246857   , p_component_appl_id            => l_component_appl_id
246858   , p_amb_context_code             => l_amb_context_code
246859   , p_side                         => 'NA'
246860   );
246861 
246862 
246863    --
246864    --
246865    END IF;
246866 
246867        --
246868        -- Update the line information that should be overwritten
246869        --
246870        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
246871                                          p_header_num   => 1);
246872        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
246873 
246874        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
246875 
246876        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
246877           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
246878        END IF;
246879 
246880       --
246881       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
246882       --
246883       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
246884           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
246885       ELSE
246886           ---------------------------------------------------------------------------------------------------
246887           -- 4262811a Switch Sign
246888           ---------------------------------------------------------------------------------------------------
246889           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
246890           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
246891                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
246892           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
246893                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
246894           -- 5132302
246895           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
246896                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
246897 
246898       END IF;
246899 
246900       -- 4955764
246901       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
246902       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
246903 
246904 
246905       XLA_AE_LINES_PKG.ValidateCurrentLine;
246906       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
246907 
246908       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
246909                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
246910                ,p_balance_type_code => l_balance_type_code);
246911 
246912    END IF;
246913 
246914    -----------------------------------------------------------------------------------------
246915    -- 4262811 Multiperiod Accounting
246916    -----------------------------------------------------------------------------------------
246917      -- No MPA option is assigned.
246918 
246919 
246920 END IF;
246921 END IF;
246922 --
246923 
246924 --
246925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
246926    trace
246927       (p_msg      => 'END of AcctLineType_444'
246928       ,p_level    => C_LEVEL_PROCEDURE
246929       ,p_module   => l_log_module);
246930 END IF;
246931 --
246932 EXCEPTION
246933   WHEN xla_exceptions_pkg.application_exception THEN
246934       RAISE;
246935   WHEN OTHERS THEN
246936        xla_exceptions_pkg.raise_message
246937            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_444');
246938 END AcctLineType_444;
246939 --
246940 
246941 ---------------------------------------
246942 --
246943 -- PRIVATE FUNCTION
246944 --         AcctLineType_445
246945 --
246946 ---------------------------------------
246947 PROCEDURE AcctLineType_445 (
246948   p_application_id        IN NUMBER
246949  ,p_event_id              IN NUMBER
246950  ,p_calculate_acctd_flag  IN VARCHAR2
246951  ,p_calculate_g_l_flag    IN VARCHAR2
246952  ,p_actual_flag           IN OUT VARCHAR2
246953  ,p_balance_type_code     OUT VARCHAR2
246954  ,p_gain_or_loss_ref      OUT VARCHAR2
246955  
246956 --TRANSACTION_ID
246957  , p_source_1            IN NUMBER
246958 --Item Concatenated Segments
246959  , p_source_2            IN VARCHAR2
246960 --Transaction Quantity
246961  , p_source_3            IN NUMBER
246962 --Transaction Unit of Measure Code
246963  , p_source_4            IN VARCHAR2
246964 --Inventory Transaction Type Description
246965  , p_source_5            IN VARCHAR2
246966 --Interorg Revenue Account
246967  , p_source_33            IN NUMBER
246968 --DISTRIBUTION_IDENTIFIER
246969  , p_source_84            IN NUMBER
246970 --Distribution Type
246971  , p_source_85            IN VARCHAR2
246972  , p_source_85_meaning    IN VARCHAR2
246973 --Entered Currency Code
246974  , p_source_88            IN VARCHAR2
246975 --Entered Amount
246976  , p_source_91            IN NUMBER
246977 --Currency Conversion Date
246978  , p_source_92            IN DATE
246979 --Currency Conversion Rate
246980  , p_source_93            IN NUMBER
246981 --Currency Conversion Type
246982  , p_source_94            IN VARCHAR2
246983 --Accounted Amount
246984  , p_source_95            IN NUMBER
246985 --Accounting Line Type
246986  , p_source_97            IN NUMBER
246987 )
246988 IS
246989 
246990 l_component_type              VARCHAR2(80);
246991 l_component_code              VARCHAR2(30);
246992 l_component_type_code         VARCHAR2(1);
246993 l_component_appl_id           INTEGER;
246994 l_amb_context_code            VARCHAR2(30);
246995 l_entity_code                 VARCHAR2(30);
246996 l_event_class_code            VARCHAR2(30);
246997 l_ae_header_id                NUMBER;
246998 l_event_type_code             VARCHAR2(30);
246999 l_line_definition_code        VARCHAR2(30);
247000 l_line_definition_owner_code  VARCHAR2(1);
247001 --
247002 -- adr variables
247003 l_segment                     VARCHAR2(30);
247004 l_ccid                        NUMBER;
247005 l_adr_transaction_coa_id      NUMBER;
247006 l_adr_accounting_coa_id       NUMBER;
247007 l_adr_flexfield_segment_code  VARCHAR2(30);
247008 l_adr_flex_value_set_id       NUMBER;
247009 l_adr_value_type_code         VARCHAR2(30);
247010 l_adr_value_combination_id    NUMBER;
247011 l_adr_value_segment_code      VARCHAR2(30);
247012 
247013 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
247014 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
247015 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
247016 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
247017 
247018 -- 4262811 Variables ------------------------------------------------------------------------------------------
247019 l_entered_amt_idx             NUMBER;
247020 l_accted_amt_idx              NUMBER;
247021 l_acc_rev_flag                VARCHAR2(1);
247022 l_accrual_line_num            NUMBER;
247023 l_tmp_amt                     NUMBER;
247024 l_acc_rev_natural_side_code   VARCHAR2(1);
247025 
247026 l_num_entries                 NUMBER;
247027 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
247028 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
247029 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
247030 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
247031 l_recog_line_1                NUMBER;
247032 l_recog_line_2                NUMBER;
247033 
247034 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
247035 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
247036 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
247037 
247038 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
247039 
247040 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
247041 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
247042 
247043 ---------------------------------------------------------------------------------------------------------------
247044 
247045 
247046 --
247047 -- bulk performance
247048 --
247049 l_balance_type_code           VARCHAR2(1);
247050 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
247051 l_log_module                  VARCHAR2(240);
247052 
247053 --
247054 -- Upgrade strategy
247055 --
247056 l_actual_upg_option           VARCHAR2(1);
247057 l_enc_upg_option           VARCHAR2(1);
247058 
247059 --
247060 BEGIN
247061 --
247062 IF g_log_enabled THEN
247063       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_445';
247064 END IF;
247065 --
247066 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
247067 
247068       trace
247069          (p_msg      => 'BEGIN of AcctLineType_445'
247070          ,p_level    => C_LEVEL_PROCEDURE
247071          ,p_module   => l_log_module);
247072 
247073 END IF;
247074 --
247075 l_component_type             := 'AMB_JLT';
247076 l_component_code             := 'PI_REVENUE';
247077 l_component_type_code        := 'S';
247078 l_component_appl_id          :=  707;
247079 l_amb_context_code           := 'DEFAULT';
247080 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
247081 l_event_class_code           := 'DIR_INTERORG_SHIP';
247082 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
247083 l_line_definition_owner_code := 'S';
247084 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
247085 --
247086 l_balance_type_code          := 'A';
247087 l_segment                     := NULL;
247088 l_ccid                        := NULL;
247089 l_adr_transaction_coa_id      := NULL;
247090 l_adr_accounting_coa_id       := NULL;
247091 l_adr_flexfield_segment_code  := NULL;
247092 l_adr_flex_value_set_id       := NULL;
247093 l_adr_value_type_code         := NULL;
247094 l_adr_value_combination_id    := NULL;
247095 l_adr_value_segment_code      := NULL;
247096 
247097 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
247098 l_bflow_class_code           := '';    -- 4219869 Business Flow
247099 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
247100 l_budgetary_control_flag     := 'N';
247101 
247102 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
247103 l_bflow_applied_to_amt       := NULL; -- 5132302
247104 l_entered_amt_idx            := NULL;          -- 4262811
247105 l_accted_amt_idx             := NULL;          -- 4262811
247106 l_acc_rev_flag               := NULL;          -- 4262811
247107 l_accrual_line_num           := NULL;          -- 4262811
247108 l_tmp_amt                    := NULL;          -- 4262811
247109 --
247110  
247111 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
247112     l_balance_type_code <> 'B' THEN
247113 IF NVL(p_source_97,9E125) =  1
247114  THEN 
247115 
247116    --
247117    XLA_AE_LINES_PKG.SetNewLine;
247118 
247119    p_balance_type_code          := l_balance_type_code;
247120    -- set the flag so later we will know whether the gain loss line needs to be created
247121    
247122    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
247123      p_actual_flag :='A';
247124    END IF;
247125 
247126    --
247127    -- bulk performance
247128    --
247129    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
247130                                       p_header_num   => 0); -- 4262811
247131    --
247132    -- set accounting line options
247133    --
247134    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
247135            p_natural_side_code          => 'D'
247136          , p_gain_or_loss_flag          => 'N'
247137          , p_gl_transfer_mode_code      => 'S'
247138          , p_acct_entry_type_code       => 'A'
247139          , p_switch_side_flag           => 'Y'
247140          , p_merge_duplicate_code       => 'N'
247141          );
247142    --
247143    l_acc_rev_natural_side_code := 'C';  -- 4262811
247144    -- 
247145    --
247146    -- set accounting line type info
247147    --
247148    xla_ae_lines_pkg.SetAcctLineType
247149       (p_component_type             => l_component_type
247150       ,p_event_type_code            => l_event_type_code
247151       ,p_line_definition_owner_code => l_line_definition_owner_code
247152       ,p_line_definition_code       => l_line_definition_code
247153       ,p_accounting_line_code       => l_component_code
247154       ,p_accounting_line_type_code  => l_component_type_code
247155       ,p_accounting_line_appl_id    => l_component_appl_id
247156       ,p_amb_context_code           => l_amb_context_code
247157       ,p_entity_code                => l_entity_code
247158       ,p_event_class_code           => l_event_class_code);
247159    --
247160    -- set accounting class
247161    --
247162    xla_ae_lines_pkg.SetAcctClass(
247163            p_accounting_class_code  => 'REVENUE'
247164          , p_ae_header_id           => l_ae_header_id
247165          );
247166 
247167    --
247168    -- set rounding class
247169    --
247170    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
247171                       'REVENUE';
247172 
247173    --
247174    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
247175    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
247176    --
247177    -- bulk performance
247178    --
247179    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
247180 
247181    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
247182       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
247183 
247184    -- 4955764
247185    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
247186       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
247187 
247188    -- 4458381 Public Sector Enh
247189    
247190    --
247191    -- set accounting attributes for the line type
247192    --
247193    l_entered_amt_idx := 3;
247194    l_accted_amt_idx  := 8;
247195    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
247196    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
247197    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
247198    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
247199    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
247200    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
247201    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
247202    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
247203    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
247204    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
247205    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
247206    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
247207    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
247208    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
247209    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
247210    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
247211    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
247212 
247213    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
247214    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
247215 
247216    ---------------------------------------------------------------------------------------------------------------
247217    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
247218    ---------------------------------------------------------------------------------------------------------------
247219    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
247220 
247221    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
247222    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
247223 
247224    IF xla_accounting_cache_pkg.GetValueChar
247225          (p_source_code         => 'LEDGER_CATEGORY_CODE'
247226          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
247227    AND l_bflow_method_code = 'PRIOR_ENTRY'
247228 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
247229    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
247230          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
247231        )
247232    THEN
247233          xla_ae_lines_pkg.BflowUpgEntry
247234            (p_business_method_code    => l_bflow_method_code
247235            ,p_business_class_code     => l_bflow_class_code
247236            ,p_balance_type            => l_balance_type_code);
247237    ELSE
247238       NULL;
247239 -- No business flow processing for business flow method of NONE.
247240    END IF;
247241 
247242    --
247243    -- call analytical criteria
247244    --
247245    
247246    --
247247    -- call description
247248    --
247249    
247250 xla_ae_lines_pkg.SetLineDescription(
247251    p_ae_header_id => l_ae_header_id
247252   ,p_description  => Description_1 (
247253      p_application_id         => p_application_id
247254    , p_ae_header_id           => l_ae_header_id 
247255 , p_source_1 => p_source_1
247256 , p_source_2 => p_source_2
247257 , p_source_3 => p_source_3
247258 , p_source_4 => p_source_4
247259 , p_source_5 => p_source_5
247260    )
247261 );
247262 
247263 
247264    --
247265    -- call ADRs
247266    -- Bug 4922099
247267    --
247268    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
247269         (NVL(l_actual_upg_option, 'N') = 'O') OR
247270         (NVL(l_enc_upg_option, 'N') = 'O')
247271       )
247272    THEN
247273    NULL;
247274    --
247275    --
247276    
247277   l_ccid := AcctDerRule_18(
247278            p_application_id           => p_application_id
247279          , p_ae_header_id             => l_ae_header_id 
247280 , p_source_33 => p_source_33
247281          , x_transaction_coa_id       => l_adr_transaction_coa_id
247282          , x_accounting_coa_id        => l_adr_accounting_coa_id
247283          , x_value_type_code          => l_adr_value_type_code
247284          , p_side                     => 'NA'
247285    );
247286 
247287    xla_ae_lines_pkg.set_ccid(
247288     p_code_combination_id          => l_ccid
247289   , p_value_type_code              => l_adr_value_type_code
247290   , p_transaction_coa_id           => l_adr_transaction_coa_id
247291   , p_accounting_coa_id            => l_adr_accounting_coa_id
247292   , p_adr_code                     => 'PI_INTEROG_REVENUE'
247293   , p_adr_type_code                => 'S'
247294   , p_component_type               => l_component_type
247295   , p_component_code               => l_component_code
247296   , p_component_type_code          => l_component_type_code
247297   , p_component_appl_id            => l_component_appl_id
247298   , p_amb_context_code             => l_amb_context_code
247299   , p_side                         => 'NA'
247300   );
247301 
247302 
247303    --
247304    --
247305    END IF;
247306    --
247307    -- Bug 4922099
247308    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
247309           (NVL(l_enc_upg_option, 'N') = 'O')
247310         ) AND
247311         (l_bflow_method_code = 'PRIOR_ENTRY')
247312       )
247313    THEN
247314       IF
247315       --
247316       1 = 2
247317       --
247318       THEN
247319       xla_accounting_err_pkg.build_message
247320                                     (p_appli_s_name            => 'XLA'
247321                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
247322                                     ,p_token_1                 => 'LINE_NUMBER'
247323                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
247324                                     ,p_token_2                 => 'LINE_TYPE_NAME'
247325                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
247326                                                                              l_component_type
247327                                                                             ,l_component_code
247328                                                                             ,l_component_type_code
247329                                                                             ,l_component_appl_id
247330                                                                             ,l_amb_context_code
247331                                                                             ,l_entity_code
247332                                                                             ,l_event_class_code
247333                                                                            )
247334                                     ,p_token_3                 => 'OWNER'
247335                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
247336                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
247337                                                                           ,p_lookup_code    => l_component_type_code
247338                                                                          )
247339                                     ,p_token_4                 => 'PRODUCT_NAME'
247340                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
247341                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
247342                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
247343                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
247344                                     ,p_ae_header_id            =>  NULL
247345                                        );
247346 
247347         IF (C_LEVEL_ERROR>= g_log_level) THEN
247348                  trace
247349                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
247350                       ,p_level    => C_LEVEL_ERROR
247351                       ,p_module   => l_log_module);
247352         END IF;
247353       END IF;
247354    END IF;
247355    --
247356    --
247357    ------------------------------------------------------------------------------------------------
247358    -- 4219869 Business Flow
247359    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
247360    -- Prior Entry.  Currently, the following code is always generated.
247361    ------------------------------------------------------------------------------------------------
247362    XLA_AE_LINES_PKG.ValidateCurrentLine;
247363 
247364    ------------------------------------------------------------------------------------
247365    -- 4219869 Business Flow
247366    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
247367    ------------------------------------------------------------------------------------
247368    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
247369 
247370    ----------------------------------------------------------------------------------
247371    -- 4219869 Business Flow
247372    -- Update journal entry status -- Need to generate this within IF <condition>
247373    ----------------------------------------------------------------------------------
247374    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
247375          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
247376          ,p_balance_type_code => l_balance_type_code
247377          );
247378 
247379    -------------------------------------------------------------------------------------------
247380    -- 4262811 - Generate the Accrual Reversal lines
247381    -------------------------------------------------------------------------------------------
247382    BEGIN
247383       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
247384                               (g_array_event(p_event_id).array_value_num('header_index'));
247385       IF l_acc_rev_flag IS NULL THEN
247386          l_acc_rev_flag := 'N';
247387       END IF;
247388    EXCEPTION
247389       WHEN OTHERS THEN
247390          l_acc_rev_flag := 'N';
247391    END;
247392    --
247393    IF (l_acc_rev_flag = 'Y') THEN
247394 
247395        -- 4645092  ------------------------------------------------------------------------------
247396        -- To allow MPA report to determine if it should generate report process
247397        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
247398        ------------------------------------------------------------------------------------------
247399 
247400        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
247401        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
247402    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
247403    -- call ADRs
247404    -- Bug 4922099
247405    --
247406    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
247407         (NVL(l_actual_upg_option, 'N') = 'O') OR
247408         (NVL(l_enc_upg_option, 'N') = 'O')
247409       )
247410    THEN
247411    NULL;
247412    --
247413    --
247414    
247415   l_ccid := AcctDerRule_18(
247416            p_application_id           => p_application_id
247417          , p_ae_header_id             => l_ae_header_id 
247418 , p_source_33 => p_source_33
247419          , x_transaction_coa_id       => l_adr_transaction_coa_id
247420          , x_accounting_coa_id        => l_adr_accounting_coa_id
247421          , x_value_type_code          => l_adr_value_type_code
247422          , p_side                     => 'NA'
247423    );
247424 
247425    xla_ae_lines_pkg.set_ccid(
247426     p_code_combination_id          => l_ccid
247427   , p_value_type_code              => l_adr_value_type_code
247428   , p_transaction_coa_id           => l_adr_transaction_coa_id
247429   , p_accounting_coa_id            => l_adr_accounting_coa_id
247430   , p_adr_code                     => 'PI_INTEROG_REVENUE'
247431   , p_adr_type_code                => 'S'
247432   , p_component_type               => l_component_type
247433   , p_component_code               => l_component_code
247434   , p_component_type_code          => l_component_type_code
247435   , p_component_appl_id            => l_component_appl_id
247436   , p_amb_context_code             => l_amb_context_code
247437   , p_side                         => 'NA'
247438   );
247439 
247440 
247441    --
247442    --
247443    END IF;
247444 
247445        --
247446        -- Update the line information that should be overwritten
247447        --
247448        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
247449                                          p_header_num   => 1);
247450        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
247451 
247452        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
247453 
247454        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
247455           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
247456        END IF;
247457 
247458       --
247459       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
247460       --
247461       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
247462           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
247463       ELSE
247464           ---------------------------------------------------------------------------------------------------
247465           -- 4262811a Switch Sign
247466           ---------------------------------------------------------------------------------------------------
247467           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
247468           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
247469                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
247470           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
247471                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
247472           -- 5132302
247473           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
247474                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
247475 
247476       END IF;
247477 
247478       -- 4955764
247479       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
247480       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
247481 
247482 
247483       XLA_AE_LINES_PKG.ValidateCurrentLine;
247484       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
247485 
247486       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
247487                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
247488                ,p_balance_type_code => l_balance_type_code);
247489 
247490    END IF;
247491 
247492    -----------------------------------------------------------------------------------------
247493    -- 4262811 Multiperiod Accounting
247494    -----------------------------------------------------------------------------------------
247495      -- No MPA option is assigned.
247496 
247497 
247498 END IF;
247499 END IF;
247500 --
247501 
247502 --
247503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
247504    trace
247505       (p_msg      => 'END of AcctLineType_445'
247506       ,p_level    => C_LEVEL_PROCEDURE
247507       ,p_module   => l_log_module);
247508 END IF;
247509 --
247510 EXCEPTION
247511   WHEN xla_exceptions_pkg.application_exception THEN
247512       RAISE;
247513   WHEN OTHERS THEN
247514        xla_exceptions_pkg.raise_message
247515            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_445');
247516 END AcctLineType_445;
247517 --
247518 
247519 ---------------------------------------
247520 --
247521 -- PRIVATE FUNCTION
247522 --         AcctLineType_446
247523 --
247524 ---------------------------------------
247525 PROCEDURE AcctLineType_446 (
247526   p_application_id        IN NUMBER
247527  ,p_event_id              IN NUMBER
247528  ,p_calculate_acctd_flag  IN VARCHAR2
247529  ,p_calculate_g_l_flag    IN VARCHAR2
247530  ,p_actual_flag           IN OUT VARCHAR2
247531  ,p_balance_type_code     OUT VARCHAR2
247532  ,p_gain_or_loss_ref      OUT VARCHAR2
247533  
247534 --TRANSACTION_ID
247535  , p_source_1            IN NUMBER
247536 --Item Concatenated Segments
247537  , p_source_2            IN VARCHAR2
247538 --Transaction Quantity
247539  , p_source_3            IN NUMBER
247540 --Transaction Unit of Measure Code
247541  , p_source_4            IN VARCHAR2
247542 --Inventory Transaction Type Description
247543  , p_source_5            IN VARCHAR2
247544 --Interorg Revenue Account
247545  , p_source_33            IN NUMBER
247546 --DISTRIBUTION_IDENTIFIER
247547  , p_source_84            IN NUMBER
247548 --Distribution Type
247549  , p_source_85            IN VARCHAR2
247550  , p_source_85_meaning    IN VARCHAR2
247551 --Entered Currency Code
247552  , p_source_88            IN VARCHAR2
247553 --Entered Amount
247554  , p_source_91            IN NUMBER
247555 --Currency Conversion Date
247556  , p_source_92            IN DATE
247557 --Currency Conversion Rate
247558  , p_source_93            IN NUMBER
247559 --Currency Conversion Type
247560  , p_source_94            IN VARCHAR2
247561 --Accounted Amount
247562  , p_source_95            IN NUMBER
247563 --Accounting Line Type
247564  , p_source_97            IN NUMBER
247565 )
247566 IS
247567 
247568 l_component_type              VARCHAR2(80);
247569 l_component_code              VARCHAR2(30);
247570 l_component_type_code         VARCHAR2(1);
247571 l_component_appl_id           INTEGER;
247572 l_amb_context_code            VARCHAR2(30);
247573 l_entity_code                 VARCHAR2(30);
247574 l_event_class_code            VARCHAR2(30);
247575 l_ae_header_id                NUMBER;
247576 l_event_type_code             VARCHAR2(30);
247577 l_line_definition_code        VARCHAR2(30);
247578 l_line_definition_owner_code  VARCHAR2(1);
247579 --
247580 -- adr variables
247581 l_segment                     VARCHAR2(30);
247582 l_ccid                        NUMBER;
247583 l_adr_transaction_coa_id      NUMBER;
247584 l_adr_accounting_coa_id       NUMBER;
247585 l_adr_flexfield_segment_code  VARCHAR2(30);
247586 l_adr_flex_value_set_id       NUMBER;
247587 l_adr_value_type_code         VARCHAR2(30);
247588 l_adr_value_combination_id    NUMBER;
247589 l_adr_value_segment_code      VARCHAR2(30);
247590 
247591 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
247592 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
247593 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
247594 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
247595 
247596 -- 4262811 Variables ------------------------------------------------------------------------------------------
247597 l_entered_amt_idx             NUMBER;
247598 l_accted_amt_idx              NUMBER;
247599 l_acc_rev_flag                VARCHAR2(1);
247600 l_accrual_line_num            NUMBER;
247601 l_tmp_amt                     NUMBER;
247602 l_acc_rev_natural_side_code   VARCHAR2(1);
247603 
247604 l_num_entries                 NUMBER;
247605 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
247606 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
247607 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
247608 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
247609 l_recog_line_1                NUMBER;
247610 l_recog_line_2                NUMBER;
247611 
247612 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
247613 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
247614 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
247615 
247616 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
247617 
247618 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
247619 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
247620 
247621 ---------------------------------------------------------------------------------------------------------------
247622 
247623 
247624 --
247625 -- bulk performance
247626 --
247627 l_balance_type_code           VARCHAR2(1);
247628 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
247629 l_log_module                  VARCHAR2(240);
247630 
247631 --
247632 -- Upgrade strategy
247633 --
247634 l_actual_upg_option           VARCHAR2(1);
247635 l_enc_upg_option           VARCHAR2(1);
247636 
247637 --
247638 BEGIN
247639 --
247640 IF g_log_enabled THEN
247641       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_446';
247642 END IF;
247643 --
247644 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
247645 
247646       trace
247647          (p_msg      => 'BEGIN of AcctLineType_446'
247648          ,p_level    => C_LEVEL_PROCEDURE
247649          ,p_module   => l_log_module);
247650 
247651 END IF;
247652 --
247653 l_component_type             := 'AMB_JLT';
247654 l_component_code             := 'PI_REVENUE';
247655 l_component_type_code        := 'S';
247656 l_component_appl_id          :=  707;
247657 l_amb_context_code           := 'DEFAULT';
247658 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
247659 l_event_class_code           := 'USER_DEFINE';
247660 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
247661 l_line_definition_owner_code := 'S';
247662 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
247663 --
247664 l_balance_type_code          := 'A';
247665 l_segment                     := NULL;
247666 l_ccid                        := NULL;
247667 l_adr_transaction_coa_id      := NULL;
247668 l_adr_accounting_coa_id       := NULL;
247669 l_adr_flexfield_segment_code  := NULL;
247670 l_adr_flex_value_set_id       := NULL;
247671 l_adr_value_type_code         := NULL;
247672 l_adr_value_combination_id    := NULL;
247673 l_adr_value_segment_code      := NULL;
247674 
247675 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
247676 l_bflow_class_code           := '';    -- 4219869 Business Flow
247677 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
247678 l_budgetary_control_flag     := 'N';
247679 
247680 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
247681 l_bflow_applied_to_amt       := NULL; -- 5132302
247682 l_entered_amt_idx            := NULL;          -- 4262811
247683 l_accted_amt_idx             := NULL;          -- 4262811
247684 l_acc_rev_flag               := NULL;          -- 4262811
247685 l_accrual_line_num           := NULL;          -- 4262811
247686 l_tmp_amt                    := NULL;          -- 4262811
247687 --
247688  
247689 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
247690     l_balance_type_code <> 'B' THEN
247691 IF NVL(p_source_97,9E125) =  1
247692  THEN 
247693 
247694    --
247695    XLA_AE_LINES_PKG.SetNewLine;
247696 
247697    p_balance_type_code          := l_balance_type_code;
247698    -- set the flag so later we will know whether the gain loss line needs to be created
247699    
247700    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
247701      p_actual_flag :='A';
247702    END IF;
247703 
247704    --
247705    -- bulk performance
247706    --
247707    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
247708                                       p_header_num   => 0); -- 4262811
247709    --
247710    -- set accounting line options
247711    --
247712    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
247713            p_natural_side_code          => 'D'
247714          , p_gain_or_loss_flag          => 'N'
247715          , p_gl_transfer_mode_code      => 'S'
247716          , p_acct_entry_type_code       => 'A'
247717          , p_switch_side_flag           => 'Y'
247718          , p_merge_duplicate_code       => 'N'
247719          );
247720    --
247721    l_acc_rev_natural_side_code := 'C';  -- 4262811
247722    -- 
247723    --
247724    -- set accounting line type info
247725    --
247726    xla_ae_lines_pkg.SetAcctLineType
247727       (p_component_type             => l_component_type
247728       ,p_event_type_code            => l_event_type_code
247729       ,p_line_definition_owner_code => l_line_definition_owner_code
247730       ,p_line_definition_code       => l_line_definition_code
247731       ,p_accounting_line_code       => l_component_code
247732       ,p_accounting_line_type_code  => l_component_type_code
247733       ,p_accounting_line_appl_id    => l_component_appl_id
247734       ,p_amb_context_code           => l_amb_context_code
247735       ,p_entity_code                => l_entity_code
247736       ,p_event_class_code           => l_event_class_code);
247737    --
247738    -- set accounting class
247739    --
247740    xla_ae_lines_pkg.SetAcctClass(
247741            p_accounting_class_code  => 'REVENUE'
247742          , p_ae_header_id           => l_ae_header_id
247743          );
247744 
247745    --
247746    -- set rounding class
247747    --
247748    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
247749                       'REVENUE';
247750 
247751    --
247752    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
247753    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
247754    --
247755    -- bulk performance
247756    --
247757    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
247758 
247759    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
247760       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
247761 
247762    -- 4955764
247763    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
247764       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
247765 
247766    -- 4458381 Public Sector Enh
247767    
247768    --
247769    -- set accounting attributes for the line type
247770    --
247771    l_entered_amt_idx := 3;
247772    l_accted_amt_idx  := 8;
247773    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
247774    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
247775    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
247776    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
247777    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
247778    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
247779    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
247780    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
247781    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
247782    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
247783    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
247784    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
247785    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
247786    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
247787    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
247788    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
247789    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
247790 
247791    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
247792    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
247793 
247794    ---------------------------------------------------------------------------------------------------------------
247795    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
247796    ---------------------------------------------------------------------------------------------------------------
247797    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
247798 
247799    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
247800    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
247801 
247802    IF xla_accounting_cache_pkg.GetValueChar
247803          (p_source_code         => 'LEDGER_CATEGORY_CODE'
247804          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
247805    AND l_bflow_method_code = 'PRIOR_ENTRY'
247806 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
247807    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
247808          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
247809        )
247810    THEN
247811          xla_ae_lines_pkg.BflowUpgEntry
247812            (p_business_method_code    => l_bflow_method_code
247813            ,p_business_class_code     => l_bflow_class_code
247814            ,p_balance_type            => l_balance_type_code);
247815    ELSE
247816       NULL;
247817 -- No business flow processing for business flow method of NONE.
247818    END IF;
247819 
247820    --
247821    -- call analytical criteria
247822    --
247823    
247824    --
247825    -- call description
247826    --
247827    
247828 xla_ae_lines_pkg.SetLineDescription(
247829    p_ae_header_id => l_ae_header_id
247830   ,p_description  => Description_1 (
247831      p_application_id         => p_application_id
247832    , p_ae_header_id           => l_ae_header_id 
247833 , p_source_1 => p_source_1
247834 , p_source_2 => p_source_2
247835 , p_source_3 => p_source_3
247836 , p_source_4 => p_source_4
247837 , p_source_5 => p_source_5
247838    )
247839 );
247840 
247841 
247842    --
247843    -- call ADRs
247844    -- Bug 4922099
247845    --
247846    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
247847         (NVL(l_actual_upg_option, 'N') = 'O') OR
247848         (NVL(l_enc_upg_option, 'N') = 'O')
247849       )
247850    THEN
247851    NULL;
247852    --
247853    --
247854    
247855   l_ccid := AcctDerRule_18(
247856            p_application_id           => p_application_id
247857          , p_ae_header_id             => l_ae_header_id 
247858 , p_source_33 => p_source_33
247859          , x_transaction_coa_id       => l_adr_transaction_coa_id
247860          , x_accounting_coa_id        => l_adr_accounting_coa_id
247861          , x_value_type_code          => l_adr_value_type_code
247862          , p_side                     => 'NA'
247863    );
247864 
247865    xla_ae_lines_pkg.set_ccid(
247866     p_code_combination_id          => l_ccid
247867   , p_value_type_code              => l_adr_value_type_code
247868   , p_transaction_coa_id           => l_adr_transaction_coa_id
247869   , p_accounting_coa_id            => l_adr_accounting_coa_id
247870   , p_adr_code                     => 'PI_INTEROG_REVENUE'
247871   , p_adr_type_code                => 'S'
247872   , p_component_type               => l_component_type
247873   , p_component_code               => l_component_code
247874   , p_component_type_code          => l_component_type_code
247875   , p_component_appl_id            => l_component_appl_id
247876   , p_amb_context_code             => l_amb_context_code
247877   , p_side                         => 'NA'
247878   );
247879 
247880 
247881    --
247882    --
247883    END IF;
247884    --
247885    -- Bug 4922099
247886    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
247887           (NVL(l_enc_upg_option, 'N') = 'O')
247888         ) AND
247889         (l_bflow_method_code = 'PRIOR_ENTRY')
247890       )
247891    THEN
247892       IF
247893       --
247894       1 = 2
247895       --
247896       THEN
247897       xla_accounting_err_pkg.build_message
247898                                     (p_appli_s_name            => 'XLA'
247899                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
247900                                     ,p_token_1                 => 'LINE_NUMBER'
247901                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
247902                                     ,p_token_2                 => 'LINE_TYPE_NAME'
247903                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
247904                                                                              l_component_type
247905                                                                             ,l_component_code
247906                                                                             ,l_component_type_code
247907                                                                             ,l_component_appl_id
247908                                                                             ,l_amb_context_code
247909                                                                             ,l_entity_code
247910                                                                             ,l_event_class_code
247911                                                                            )
247912                                     ,p_token_3                 => 'OWNER'
247913                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
247914                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
247915                                                                           ,p_lookup_code    => l_component_type_code
247916                                                                          )
247917                                     ,p_token_4                 => 'PRODUCT_NAME'
247918                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
247919                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
247920                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
247921                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
247922                                     ,p_ae_header_id            =>  NULL
247923                                        );
247924 
247925         IF (C_LEVEL_ERROR>= g_log_level) THEN
247926                  trace
247927                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
247928                       ,p_level    => C_LEVEL_ERROR
247929                       ,p_module   => l_log_module);
247930         END IF;
247931       END IF;
247932    END IF;
247933    --
247934    --
247935    ------------------------------------------------------------------------------------------------
247936    -- 4219869 Business Flow
247937    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
247938    -- Prior Entry.  Currently, the following code is always generated.
247939    ------------------------------------------------------------------------------------------------
247940    XLA_AE_LINES_PKG.ValidateCurrentLine;
247941 
247942    ------------------------------------------------------------------------------------
247943    -- 4219869 Business Flow
247944    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
247945    ------------------------------------------------------------------------------------
247946    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
247947 
247948    ----------------------------------------------------------------------------------
247949    -- 4219869 Business Flow
247950    -- Update journal entry status -- Need to generate this within IF <condition>
247951    ----------------------------------------------------------------------------------
247952    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
247953          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
247954          ,p_balance_type_code => l_balance_type_code
247955          );
247956 
247957    -------------------------------------------------------------------------------------------
247958    -- 4262811 - Generate the Accrual Reversal lines
247959    -------------------------------------------------------------------------------------------
247960    BEGIN
247961       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
247962                               (g_array_event(p_event_id).array_value_num('header_index'));
247963       IF l_acc_rev_flag IS NULL THEN
247964          l_acc_rev_flag := 'N';
247965       END IF;
247966    EXCEPTION
247967       WHEN OTHERS THEN
247968          l_acc_rev_flag := 'N';
247969    END;
247970    --
247971    IF (l_acc_rev_flag = 'Y') THEN
247972 
247973        -- 4645092  ------------------------------------------------------------------------------
247974        -- To allow MPA report to determine if it should generate report process
247975        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
247976        ------------------------------------------------------------------------------------------
247977 
247978        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
247979        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
247980    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
247981    -- call ADRs
247982    -- Bug 4922099
247983    --
247984    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
247985         (NVL(l_actual_upg_option, 'N') = 'O') OR
247986         (NVL(l_enc_upg_option, 'N') = 'O')
247987       )
247988    THEN
247989    NULL;
247990    --
247991    --
247992    
247993   l_ccid := AcctDerRule_18(
247994            p_application_id           => p_application_id
247995          , p_ae_header_id             => l_ae_header_id 
247996 , p_source_33 => p_source_33
247997          , x_transaction_coa_id       => l_adr_transaction_coa_id
247998          , x_accounting_coa_id        => l_adr_accounting_coa_id
247999          , x_value_type_code          => l_adr_value_type_code
248000          , p_side                     => 'NA'
248001    );
248002 
248003    xla_ae_lines_pkg.set_ccid(
248004     p_code_combination_id          => l_ccid
248005   , p_value_type_code              => l_adr_value_type_code
248006   , p_transaction_coa_id           => l_adr_transaction_coa_id
248007   , p_accounting_coa_id            => l_adr_accounting_coa_id
248008   , p_adr_code                     => 'PI_INTEROG_REVENUE'
248009   , p_adr_type_code                => 'S'
248010   , p_component_type               => l_component_type
248011   , p_component_code               => l_component_code
248012   , p_component_type_code          => l_component_type_code
248013   , p_component_appl_id            => l_component_appl_id
248014   , p_amb_context_code             => l_amb_context_code
248015   , p_side                         => 'NA'
248016   );
248017 
248018 
248019    --
248020    --
248021    END IF;
248022 
248023        --
248024        -- Update the line information that should be overwritten
248025        --
248026        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
248027                                          p_header_num   => 1);
248028        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
248029 
248030        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
248031 
248032        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
248033           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
248034        END IF;
248035 
248036       --
248037       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
248038       --
248039       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
248040           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
248041       ELSE
248042           ---------------------------------------------------------------------------------------------------
248043           -- 4262811a Switch Sign
248044           ---------------------------------------------------------------------------------------------------
248045           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
248046           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
248047                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
248048           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
248049                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
248050           -- 5132302
248051           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
248052                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
248053 
248054       END IF;
248055 
248056       -- 4955764
248057       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
248058       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
248059 
248060 
248061       XLA_AE_LINES_PKG.ValidateCurrentLine;
248062       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
248063 
248064       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
248065                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
248066                ,p_balance_type_code => l_balance_type_code);
248067 
248068    END IF;
248069 
248070    -----------------------------------------------------------------------------------------
248071    -- 4262811 Multiperiod Accounting
248072    -----------------------------------------------------------------------------------------
248073      -- No MPA option is assigned.
248074 
248075 
248076 END IF;
248077 END IF;
248078 --
248079 
248080 --
248081 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
248082    trace
248083       (p_msg      => 'END of AcctLineType_446'
248084       ,p_level    => C_LEVEL_PROCEDURE
248085       ,p_module   => l_log_module);
248086 END IF;
248087 --
248088 EXCEPTION
248089   WHEN xla_exceptions_pkg.application_exception THEN
248090       RAISE;
248091   WHEN OTHERS THEN
248092        xla_exceptions_pkg.raise_message
248093            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_446');
248094 END AcctLineType_446;
248095 --
248096 
248097 ---------------------------------------
248098 --
248099 -- PRIVATE FUNCTION
248100 --         AcctLineType_447
248101 --
248102 ---------------------------------------
248103 PROCEDURE AcctLineType_447 (
248104   p_application_id        IN NUMBER
248105  ,p_event_id              IN NUMBER
248106  ,p_calculate_acctd_flag  IN VARCHAR2
248107  ,p_calculate_g_l_flag    IN VARCHAR2
248108  ,p_actual_flag           IN OUT VARCHAR2
248109  ,p_balance_type_code     OUT VARCHAR2
248110  ,p_gain_or_loss_ref      OUT VARCHAR2
248111  
248112 --TRANSACTION_ID
248113  , p_source_1            IN NUMBER
248114 --Item Concatenated Segments
248115  , p_source_2            IN VARCHAR2
248116 --Transaction Quantity
248117  , p_source_3            IN NUMBER
248118 --Transaction Unit of Measure Code
248119  , p_source_4            IN VARCHAR2
248120 --Inventory Transaction Type Description
248121  , p_source_5            IN VARCHAR2
248122 --Interorg Revenue Account
248123  , p_source_33            IN NUMBER
248124 --DISTRIBUTION_IDENTIFIER
248125  , p_source_84            IN NUMBER
248126 --Distribution Type
248127  , p_source_85            IN VARCHAR2
248128  , p_source_85_meaning    IN VARCHAR2
248129 --Entered Currency Code
248130  , p_source_88            IN VARCHAR2
248131 --Entered Amount
248132  , p_source_91            IN NUMBER
248133 --Currency Conversion Date
248134  , p_source_92            IN DATE
248135 --Currency Conversion Rate
248136  , p_source_93            IN NUMBER
248137 --Currency Conversion Type
248138  , p_source_94            IN VARCHAR2
248139 --Accounted Amount
248140  , p_source_95            IN NUMBER
248141 --Accounting Line Type
248142  , p_source_97            IN NUMBER
248143 --Organization Identifier
248144  , p_source_111            IN NUMBER
248145 --Transfer Organization Name
248146  , p_source_112            IN NUMBER
248147 )
248148 IS
248149 
248150 l_component_type              VARCHAR2(80);
248151 l_component_code              VARCHAR2(30);
248152 l_component_type_code         VARCHAR2(1);
248153 l_component_appl_id           INTEGER;
248154 l_amb_context_code            VARCHAR2(30);
248155 l_entity_code                 VARCHAR2(30);
248156 l_event_class_code            VARCHAR2(30);
248157 l_ae_header_id                NUMBER;
248158 l_event_type_code             VARCHAR2(30);
248159 l_line_definition_code        VARCHAR2(30);
248160 l_line_definition_owner_code  VARCHAR2(1);
248161 --
248162 -- adr variables
248163 l_segment                     VARCHAR2(30);
248164 l_ccid                        NUMBER;
248165 l_adr_transaction_coa_id      NUMBER;
248166 l_adr_accounting_coa_id       NUMBER;
248167 l_adr_flexfield_segment_code  VARCHAR2(30);
248168 l_adr_flex_value_set_id       NUMBER;
248169 l_adr_value_type_code         VARCHAR2(30);
248170 l_adr_value_combination_id    NUMBER;
248171 l_adr_value_segment_code      VARCHAR2(30);
248172 
248173 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
248174 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
248175 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
248176 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
248177 
248178 -- 4262811 Variables ------------------------------------------------------------------------------------------
248179 l_entered_amt_idx             NUMBER;
248180 l_accted_amt_idx              NUMBER;
248181 l_acc_rev_flag                VARCHAR2(1);
248182 l_accrual_line_num            NUMBER;
248183 l_tmp_amt                     NUMBER;
248184 l_acc_rev_natural_side_code   VARCHAR2(1);
248185 
248186 l_num_entries                 NUMBER;
248187 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
248188 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
248189 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
248190 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
248191 l_recog_line_1                NUMBER;
248192 l_recog_line_2                NUMBER;
248193 
248194 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
248195 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
248196 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
248197 
248198 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
248199 
248200 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
248201 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
248202 
248203 ---------------------------------------------------------------------------------------------------------------
248204 
248205 
248206 --
248207 -- bulk performance
248208 --
248209 l_balance_type_code           VARCHAR2(1);
248210 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
248211 l_log_module                  VARCHAR2(240);
248212 
248213 --
248214 -- Upgrade strategy
248215 --
248216 l_actual_upg_option           VARCHAR2(1);
248217 l_enc_upg_option           VARCHAR2(1);
248218 
248219 --
248220 BEGIN
248221 --
248222 IF g_log_enabled THEN
248223       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_447';
248224 END IF;
248225 --
248226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
248227 
248228       trace
248229          (p_msg      => 'BEGIN of AcctLineType_447'
248230          ,p_level    => C_LEVEL_PROCEDURE
248231          ,p_module   => l_log_module);
248232 
248233 END IF;
248234 --
248235 l_component_type             := 'AMB_JLT';
248236 l_component_code             := 'PI_REVENUE';
248237 l_component_type_code        := 'S';
248238 l_component_appl_id          :=  707;
248239 l_amb_context_code           := 'DEFAULT';
248240 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
248241 l_event_class_code           := 'INT_ORDER_TO_EXP';
248242 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
248243 l_line_definition_owner_code := 'S';
248244 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_NO_TP';
248245 --
248246 l_balance_type_code          := 'A';
248247 l_segment                     := NULL;
248248 l_ccid                        := NULL;
248249 l_adr_transaction_coa_id      := NULL;
248250 l_adr_accounting_coa_id       := NULL;
248251 l_adr_flexfield_segment_code  := NULL;
248252 l_adr_flex_value_set_id       := NULL;
248253 l_adr_value_type_code         := NULL;
248254 l_adr_value_combination_id    := NULL;
248255 l_adr_value_segment_code      := NULL;
248256 
248257 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
248258 l_bflow_class_code           := '';    -- 4219869 Business Flow
248259 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
248260 l_budgetary_control_flag     := 'N';
248261 
248262 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
248263 l_bflow_applied_to_amt       := NULL; -- 5132302
248264 l_entered_amt_idx            := NULL;          -- 4262811
248265 l_accted_amt_idx             := NULL;          -- 4262811
248266 l_acc_rev_flag               := NULL;          -- 4262811
248267 l_accrual_line_num           := NULL;          -- 4262811
248268 l_tmp_amt                    := NULL;          -- 4262811
248269 --
248270  
248271 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
248272     l_balance_type_code <> 'B' THEN
248273 IF NVL(p_source_97,9E125) =  1 AND 
248274 p_source_111 IS NOT NULL AND 
248275 p_source_112 IS NOT NULL AND 
248276 NVL(p_source_111,9E125) <> NVL(p_source_112,9E125) 
248277  THEN 
248278 
248279    --
248280    XLA_AE_LINES_PKG.SetNewLine;
248281 
248282    p_balance_type_code          := l_balance_type_code;
248283    -- set the flag so later we will know whether the gain loss line needs to be created
248284    
248285    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
248286      p_actual_flag :='A';
248287    END IF;
248288 
248289    --
248290    -- bulk performance
248291    --
248292    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
248293                                       p_header_num   => 0); -- 4262811
248294    --
248295    -- set accounting line options
248296    --
248297    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
248298            p_natural_side_code          => 'D'
248299          , p_gain_or_loss_flag          => 'N'
248300          , p_gl_transfer_mode_code      => 'S'
248301          , p_acct_entry_type_code       => 'A'
248302          , p_switch_side_flag           => 'Y'
248303          , p_merge_duplicate_code       => 'N'
248304          );
248305    --
248306    l_acc_rev_natural_side_code := 'C';  -- 4262811
248307    -- 
248308    --
248309    -- set accounting line type info
248310    --
248311    xla_ae_lines_pkg.SetAcctLineType
248312       (p_component_type             => l_component_type
248313       ,p_event_type_code            => l_event_type_code
248314       ,p_line_definition_owner_code => l_line_definition_owner_code
248315       ,p_line_definition_code       => l_line_definition_code
248316       ,p_accounting_line_code       => l_component_code
248317       ,p_accounting_line_type_code  => l_component_type_code
248318       ,p_accounting_line_appl_id    => l_component_appl_id
248319       ,p_amb_context_code           => l_amb_context_code
248320       ,p_entity_code                => l_entity_code
248321       ,p_event_class_code           => l_event_class_code);
248322    --
248323    -- set accounting class
248324    --
248325    xla_ae_lines_pkg.SetAcctClass(
248326            p_accounting_class_code  => 'REVENUE'
248327          , p_ae_header_id           => l_ae_header_id
248328          );
248329 
248330    --
248331    -- set rounding class
248332    --
248333    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
248334                       'REVENUE';
248335 
248336    --
248337    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
248338    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
248339    --
248340    -- bulk performance
248341    --
248342    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
248343 
248344    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
248345       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
248346 
248347    -- 4955764
248348    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
248349       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
248350 
248351    -- 4458381 Public Sector Enh
248352    
248353    --
248354    -- set accounting attributes for the line type
248355    --
248356    l_entered_amt_idx := 3;
248357    l_accted_amt_idx  := 8;
248358    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
248359    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
248360    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
248361    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
248362    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
248363    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
248364    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
248365    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
248366    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
248367    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
248368    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
248369    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
248370    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
248371    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
248372    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
248373    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
248374    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
248375 
248376    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
248377    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
248378 
248379    ---------------------------------------------------------------------------------------------------------------
248380    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
248381    ---------------------------------------------------------------------------------------------------------------
248382    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
248383 
248384    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
248385    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
248386 
248387    IF xla_accounting_cache_pkg.GetValueChar
248388          (p_source_code         => 'LEDGER_CATEGORY_CODE'
248389          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
248390    AND l_bflow_method_code = 'PRIOR_ENTRY'
248391 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
248392    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
248393          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
248394        )
248395    THEN
248396          xla_ae_lines_pkg.BflowUpgEntry
248397            (p_business_method_code    => l_bflow_method_code
248398            ,p_business_class_code     => l_bflow_class_code
248399            ,p_balance_type            => l_balance_type_code);
248400    ELSE
248401       NULL;
248402 -- No business flow processing for business flow method of NONE.
248403    END IF;
248404 
248405    --
248406    -- call analytical criteria
248407    --
248408    
248409    --
248410    -- call description
248411    --
248412    
248413 xla_ae_lines_pkg.SetLineDescription(
248414    p_ae_header_id => l_ae_header_id
248415   ,p_description  => Description_1 (
248416      p_application_id         => p_application_id
248417    , p_ae_header_id           => l_ae_header_id 
248418 , p_source_1 => p_source_1
248419 , p_source_2 => p_source_2
248420 , p_source_3 => p_source_3
248421 , p_source_4 => p_source_4
248422 , p_source_5 => p_source_5
248423    )
248424 );
248425 
248426 
248427    --
248428    -- call ADRs
248429    -- Bug 4922099
248430    --
248431    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
248432         (NVL(l_actual_upg_option, 'N') = 'O') OR
248433         (NVL(l_enc_upg_option, 'N') = 'O')
248434       )
248435    THEN
248436    NULL;
248437    --
248438    --
248439    
248440   l_ccid := AcctDerRule_18(
248441            p_application_id           => p_application_id
248442          , p_ae_header_id             => l_ae_header_id 
248443 , p_source_33 => p_source_33
248444          , x_transaction_coa_id       => l_adr_transaction_coa_id
248445          , x_accounting_coa_id        => l_adr_accounting_coa_id
248446          , x_value_type_code          => l_adr_value_type_code
248447          , p_side                     => 'NA'
248448    );
248449 
248450    xla_ae_lines_pkg.set_ccid(
248451     p_code_combination_id          => l_ccid
248452   , p_value_type_code              => l_adr_value_type_code
248453   , p_transaction_coa_id           => l_adr_transaction_coa_id
248454   , p_accounting_coa_id            => l_adr_accounting_coa_id
248455   , p_adr_code                     => 'PI_INTEROG_REVENUE'
248456   , p_adr_type_code                => 'S'
248457   , p_component_type               => l_component_type
248458   , p_component_code               => l_component_code
248459   , p_component_type_code          => l_component_type_code
248460   , p_component_appl_id            => l_component_appl_id
248461   , p_amb_context_code             => l_amb_context_code
248462   , p_side                         => 'NA'
248463   );
248464 
248465 
248466    --
248467    --
248468    END IF;
248469    --
248470    -- Bug 4922099
248471    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
248472           (NVL(l_enc_upg_option, 'N') = 'O')
248473         ) AND
248474         (l_bflow_method_code = 'PRIOR_ENTRY')
248475       )
248476    THEN
248477       IF
248478       --
248479       1 = 2
248480       --
248481       THEN
248482       xla_accounting_err_pkg.build_message
248483                                     (p_appli_s_name            => 'XLA'
248484                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
248485                                     ,p_token_1                 => 'LINE_NUMBER'
248486                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
248487                                     ,p_token_2                 => 'LINE_TYPE_NAME'
248488                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
248489                                                                              l_component_type
248490                                                                             ,l_component_code
248491                                                                             ,l_component_type_code
248492                                                                             ,l_component_appl_id
248493                                                                             ,l_amb_context_code
248494                                                                             ,l_entity_code
248495                                                                             ,l_event_class_code
248496                                                                            )
248497                                     ,p_token_3                 => 'OWNER'
248498                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
248499                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
248500                                                                           ,p_lookup_code    => l_component_type_code
248501                                                                          )
248502                                     ,p_token_4                 => 'PRODUCT_NAME'
248503                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
248504                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
248505                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
248506                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
248507                                     ,p_ae_header_id            =>  NULL
248508                                        );
248509 
248510         IF (C_LEVEL_ERROR>= g_log_level) THEN
248511                  trace
248512                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
248513                       ,p_level    => C_LEVEL_ERROR
248514                       ,p_module   => l_log_module);
248515         END IF;
248516       END IF;
248517    END IF;
248518    --
248519    --
248520    ------------------------------------------------------------------------------------------------
248521    -- 4219869 Business Flow
248522    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
248523    -- Prior Entry.  Currently, the following code is always generated.
248524    ------------------------------------------------------------------------------------------------
248525    XLA_AE_LINES_PKG.ValidateCurrentLine;
248526 
248527    ------------------------------------------------------------------------------------
248528    -- 4219869 Business Flow
248529    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
248530    ------------------------------------------------------------------------------------
248531    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
248532 
248533    ----------------------------------------------------------------------------------
248534    -- 4219869 Business Flow
248535    -- Update journal entry status -- Need to generate this within IF <condition>
248536    ----------------------------------------------------------------------------------
248537    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
248538          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
248539          ,p_balance_type_code => l_balance_type_code
248540          );
248541 
248542    -------------------------------------------------------------------------------------------
248543    -- 4262811 - Generate the Accrual Reversal lines
248544    -------------------------------------------------------------------------------------------
248545    BEGIN
248546       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
248547                               (g_array_event(p_event_id).array_value_num('header_index'));
248548       IF l_acc_rev_flag IS NULL THEN
248549          l_acc_rev_flag := 'N';
248550       END IF;
248551    EXCEPTION
248552       WHEN OTHERS THEN
248553          l_acc_rev_flag := 'N';
248554    END;
248555    --
248556    IF (l_acc_rev_flag = 'Y') THEN
248557 
248558        -- 4645092  ------------------------------------------------------------------------------
248559        -- To allow MPA report to determine if it should generate report process
248560        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
248561        ------------------------------------------------------------------------------------------
248562 
248563        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
248564        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
248565    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
248566    -- call ADRs
248567    -- Bug 4922099
248568    --
248569    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
248570         (NVL(l_actual_upg_option, 'N') = 'O') OR
248571         (NVL(l_enc_upg_option, 'N') = 'O')
248572       )
248573    THEN
248574    NULL;
248575    --
248576    --
248577    
248578   l_ccid := AcctDerRule_18(
248579            p_application_id           => p_application_id
248580          , p_ae_header_id             => l_ae_header_id 
248581 , p_source_33 => p_source_33
248582          , x_transaction_coa_id       => l_adr_transaction_coa_id
248583          , x_accounting_coa_id        => l_adr_accounting_coa_id
248584          , x_value_type_code          => l_adr_value_type_code
248585          , p_side                     => 'NA'
248586    );
248587 
248588    xla_ae_lines_pkg.set_ccid(
248589     p_code_combination_id          => l_ccid
248590   , p_value_type_code              => l_adr_value_type_code
248591   , p_transaction_coa_id           => l_adr_transaction_coa_id
248592   , p_accounting_coa_id            => l_adr_accounting_coa_id
248593   , p_adr_code                     => 'PI_INTEROG_REVENUE'
248594   , p_adr_type_code                => 'S'
248595   , p_component_type               => l_component_type
248596   , p_component_code               => l_component_code
248597   , p_component_type_code          => l_component_type_code
248598   , p_component_appl_id            => l_component_appl_id
248599   , p_amb_context_code             => l_amb_context_code
248600   , p_side                         => 'NA'
248601   );
248602 
248603 
248604    --
248605    --
248606    END IF;
248607 
248608        --
248609        -- Update the line information that should be overwritten
248610        --
248611        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
248612                                          p_header_num   => 1);
248613        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
248614 
248615        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
248616 
248617        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
248618           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
248619        END IF;
248620 
248621       --
248622       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
248623       --
248624       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
248625           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
248626       ELSE
248627           ---------------------------------------------------------------------------------------------------
248628           -- 4262811a Switch Sign
248629           ---------------------------------------------------------------------------------------------------
248630           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
248631           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
248632                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
248633           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
248634                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
248635           -- 5132302
248636           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
248637                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
248638 
248639       END IF;
248640 
248641       -- 4955764
248642       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
248643       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
248644 
248645 
248646       XLA_AE_LINES_PKG.ValidateCurrentLine;
248647       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
248648 
248649       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
248650                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
248651                ,p_balance_type_code => l_balance_type_code);
248652 
248653    END IF;
248654 
248655    -----------------------------------------------------------------------------------------
248656    -- 4262811 Multiperiod Accounting
248657    -----------------------------------------------------------------------------------------
248658      -- No MPA option is assigned.
248659 
248660 
248661 END IF;
248662 END IF;
248663 --
248664 
248665 --
248666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
248667    trace
248668       (p_msg      => 'END of AcctLineType_447'
248669       ,p_level    => C_LEVEL_PROCEDURE
248670       ,p_module   => l_log_module);
248671 END IF;
248672 --
248673 EXCEPTION
248674   WHEN xla_exceptions_pkg.application_exception THEN
248675       RAISE;
248676   WHEN OTHERS THEN
248677        xla_exceptions_pkg.raise_message
248678            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_447');
248679 END AcctLineType_447;
248680 --
248681 
248682 ---------------------------------------
248683 --
248684 -- PRIVATE FUNCTION
248685 --         AcctLineType_448
248686 --
248687 ---------------------------------------
248688 PROCEDURE AcctLineType_448 (
248689   p_application_id        IN NUMBER
248690  ,p_event_id              IN NUMBER
248691  ,p_calculate_acctd_flag  IN VARCHAR2
248692  ,p_calculate_g_l_flag    IN VARCHAR2
248693  ,p_actual_flag           IN OUT VARCHAR2
248694  ,p_balance_type_code     OUT VARCHAR2
248695  ,p_gain_or_loss_ref      OUT VARCHAR2
248696  
248697 --TRANSACTION_ID
248698  , p_source_1            IN NUMBER
248699 --Item Concatenated Segments
248700  , p_source_2            IN VARCHAR2
248701 --Transaction Quantity
248702  , p_source_3            IN NUMBER
248703 --Transaction Unit of Measure Code
248704  , p_source_4            IN VARCHAR2
248705 --Inventory Transaction Type Description
248706  , p_source_5            IN VARCHAR2
248707 --Interorg Revenue Account
248708  , p_source_33            IN NUMBER
248709 --DISTRIBUTION_IDENTIFIER
248710  , p_source_84            IN NUMBER
248711 --Distribution Type
248712  , p_source_85            IN VARCHAR2
248713  , p_source_85_meaning    IN VARCHAR2
248714 --Entered Currency Code
248715  , p_source_88            IN VARCHAR2
248716 --Entered Amount
248717  , p_source_91            IN NUMBER
248718 --Currency Conversion Date
248719  , p_source_92            IN DATE
248720 --Currency Conversion Rate
248721  , p_source_93            IN NUMBER
248722 --Currency Conversion Type
248723  , p_source_94            IN VARCHAR2
248724 --Accounted Amount
248725  , p_source_95            IN NUMBER
248726 --Accounting Line Type
248727  , p_source_97            IN NUMBER
248728 --Organization Identifier
248729  , p_source_111            IN NUMBER
248730 --Transfer Organization Name
248731  , p_source_112            IN NUMBER
248732 )
248733 IS
248734 
248735 l_component_type              VARCHAR2(80);
248736 l_component_code              VARCHAR2(30);
248737 l_component_type_code         VARCHAR2(1);
248738 l_component_appl_id           INTEGER;
248739 l_amb_context_code            VARCHAR2(30);
248740 l_entity_code                 VARCHAR2(30);
248741 l_event_class_code            VARCHAR2(30);
248742 l_ae_header_id                NUMBER;
248743 l_event_type_code             VARCHAR2(30);
248744 l_line_definition_code        VARCHAR2(30);
248745 l_line_definition_owner_code  VARCHAR2(1);
248746 --
248747 -- adr variables
248748 l_segment                     VARCHAR2(30);
248749 l_ccid                        NUMBER;
248750 l_adr_transaction_coa_id      NUMBER;
248751 l_adr_accounting_coa_id       NUMBER;
248752 l_adr_flexfield_segment_code  VARCHAR2(30);
248753 l_adr_flex_value_set_id       NUMBER;
248754 l_adr_value_type_code         VARCHAR2(30);
248755 l_adr_value_combination_id    NUMBER;
248756 l_adr_value_segment_code      VARCHAR2(30);
248757 
248758 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
248759 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
248760 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
248761 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
248762 
248763 -- 4262811 Variables ------------------------------------------------------------------------------------------
248764 l_entered_amt_idx             NUMBER;
248765 l_accted_amt_idx              NUMBER;
248766 l_acc_rev_flag                VARCHAR2(1);
248767 l_accrual_line_num            NUMBER;
248768 l_tmp_amt                     NUMBER;
248769 l_acc_rev_natural_side_code   VARCHAR2(1);
248770 
248771 l_num_entries                 NUMBER;
248772 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
248773 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
248774 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
248775 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
248776 l_recog_line_1                NUMBER;
248777 l_recog_line_2                NUMBER;
248778 
248779 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
248780 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
248781 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
248782 
248783 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
248784 
248785 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
248786 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
248787 
248788 ---------------------------------------------------------------------------------------------------------------
248789 
248790 
248791 --
248792 -- bulk performance
248793 --
248794 l_balance_type_code           VARCHAR2(1);
248795 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
248796 l_log_module                  VARCHAR2(240);
248797 
248798 --
248799 -- Upgrade strategy
248800 --
248801 l_actual_upg_option           VARCHAR2(1);
248802 l_enc_upg_option           VARCHAR2(1);
248803 
248804 --
248805 BEGIN
248806 --
248807 IF g_log_enabled THEN
248808       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_448';
248809 END IF;
248810 --
248811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
248812 
248813       trace
248814          (p_msg      => 'BEGIN of AcctLineType_448'
248815          ,p_level    => C_LEVEL_PROCEDURE
248816          ,p_module   => l_log_module);
248817 
248818 END IF;
248819 --
248820 l_component_type             := 'AMB_JLT';
248821 l_component_code             := 'PI_REVENUE';
248822 l_component_type_code        := 'S';
248823 l_component_appl_id          :=  707;
248824 l_amb_context_code           := 'DEFAULT';
248825 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
248826 l_event_class_code           := 'INT_ORDER_TO_EXP';
248827 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
248828 l_line_definition_owner_code := 'S';
248829 l_line_definition_code       := 'PI_INT_ORDER_ISSUE_TP';
248830 --
248831 l_balance_type_code          := 'A';
248832 l_segment                     := NULL;
248833 l_ccid                        := NULL;
248834 l_adr_transaction_coa_id      := NULL;
248835 l_adr_accounting_coa_id       := NULL;
248836 l_adr_flexfield_segment_code  := NULL;
248837 l_adr_flex_value_set_id       := NULL;
248838 l_adr_value_type_code         := NULL;
248839 l_adr_value_combination_id    := NULL;
248840 l_adr_value_segment_code      := NULL;
248841 
248842 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
248843 l_bflow_class_code           := '';    -- 4219869 Business Flow
248844 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
248845 l_budgetary_control_flag     := 'N';
248846 
248847 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
248848 l_bflow_applied_to_amt       := NULL; -- 5132302
248849 l_entered_amt_idx            := NULL;          -- 4262811
248850 l_accted_amt_idx             := NULL;          -- 4262811
248851 l_acc_rev_flag               := NULL;          -- 4262811
248852 l_accrual_line_num           := NULL;          -- 4262811
248853 l_tmp_amt                    := NULL;          -- 4262811
248854 --
248855  
248856 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
248857     l_balance_type_code <> 'B' THEN
248858 IF NVL(p_source_97,9E125) =  1 AND 
248859 p_source_111 IS NOT NULL AND 
248860 p_source_112 IS NOT NULL AND 
248861 NVL(p_source_111,9E125) <> NVL(p_source_112,9E125) 
248862  THEN 
248863 
248864    --
248865    XLA_AE_LINES_PKG.SetNewLine;
248866 
248867    p_balance_type_code          := l_balance_type_code;
248868    -- set the flag so later we will know whether the gain loss line needs to be created
248869    
248870    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
248871      p_actual_flag :='A';
248872    END IF;
248873 
248874    --
248875    -- bulk performance
248876    --
248877    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
248878                                       p_header_num   => 0); -- 4262811
248879    --
248880    -- set accounting line options
248881    --
248882    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
248883            p_natural_side_code          => 'D'
248884          , p_gain_or_loss_flag          => 'N'
248885          , p_gl_transfer_mode_code      => 'S'
248886          , p_acct_entry_type_code       => 'A'
248887          , p_switch_side_flag           => 'Y'
248888          , p_merge_duplicate_code       => 'N'
248889          );
248890    --
248891    l_acc_rev_natural_side_code := 'C';  -- 4262811
248892    -- 
248893    --
248894    -- set accounting line type info
248895    --
248896    xla_ae_lines_pkg.SetAcctLineType
248897       (p_component_type             => l_component_type
248898       ,p_event_type_code            => l_event_type_code
248899       ,p_line_definition_owner_code => l_line_definition_owner_code
248900       ,p_line_definition_code       => l_line_definition_code
248901       ,p_accounting_line_code       => l_component_code
248902       ,p_accounting_line_type_code  => l_component_type_code
248903       ,p_accounting_line_appl_id    => l_component_appl_id
248904       ,p_amb_context_code           => l_amb_context_code
248905       ,p_entity_code                => l_entity_code
248906       ,p_event_class_code           => l_event_class_code);
248907    --
248908    -- set accounting class
248909    --
248910    xla_ae_lines_pkg.SetAcctClass(
248911            p_accounting_class_code  => 'REVENUE'
248912          , p_ae_header_id           => l_ae_header_id
248913          );
248914 
248915    --
248916    -- set rounding class
248917    --
248918    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
248919                       'REVENUE';
248920 
248921    --
248922    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
248923    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
248924    --
248925    -- bulk performance
248926    --
248927    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
248928 
248929    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
248930       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
248931 
248932    -- 4955764
248933    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
248934       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
248935 
248936    -- 4458381 Public Sector Enh
248937    
248938    --
248939    -- set accounting attributes for the line type
248940    --
248941    l_entered_amt_idx := 3;
248942    l_accted_amt_idx  := 8;
248943    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
248944    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
248945    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
248946    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
248947    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
248948    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
248949    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
248950    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
248951    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
248952    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
248953    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
248954    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
248955    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
248956    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
248957    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
248958    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
248959    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
248960 
248961    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
248962    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
248963 
248964    ---------------------------------------------------------------------------------------------------------------
248965    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
248966    ---------------------------------------------------------------------------------------------------------------
248967    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
248968 
248969    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
248970    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
248971 
248972    IF xla_accounting_cache_pkg.GetValueChar
248973          (p_source_code         => 'LEDGER_CATEGORY_CODE'
248974          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
248975    AND l_bflow_method_code = 'PRIOR_ENTRY'
248976 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
248977    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
248978          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
248979        )
248980    THEN
248981          xla_ae_lines_pkg.BflowUpgEntry
248982            (p_business_method_code    => l_bflow_method_code
248983            ,p_business_class_code     => l_bflow_class_code
248984            ,p_balance_type            => l_balance_type_code);
248985    ELSE
248986       NULL;
248987 -- No business flow processing for business flow method of NONE.
248988    END IF;
248989 
248990    --
248991    -- call analytical criteria
248992    --
248993    
248994    --
248995    -- call description
248996    --
248997    
248998 xla_ae_lines_pkg.SetLineDescription(
248999    p_ae_header_id => l_ae_header_id
249000   ,p_description  => Description_1 (
249001      p_application_id         => p_application_id
249002    , p_ae_header_id           => l_ae_header_id 
249003 , p_source_1 => p_source_1
249004 , p_source_2 => p_source_2
249005 , p_source_3 => p_source_3
249006 , p_source_4 => p_source_4
249007 , p_source_5 => p_source_5
249008    )
249009 );
249010 
249011 
249012    --
249013    -- call ADRs
249014    -- Bug 4922099
249015    --
249016    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
249017         (NVL(l_actual_upg_option, 'N') = 'O') OR
249018         (NVL(l_enc_upg_option, 'N') = 'O')
249019       )
249020    THEN
249021    NULL;
249022    --
249023    --
249024    
249025   l_ccid := AcctDerRule_18(
249026            p_application_id           => p_application_id
249027          , p_ae_header_id             => l_ae_header_id 
249028 , p_source_33 => p_source_33
249029          , x_transaction_coa_id       => l_adr_transaction_coa_id
249030          , x_accounting_coa_id        => l_adr_accounting_coa_id
249031          , x_value_type_code          => l_adr_value_type_code
249032          , p_side                     => 'NA'
249033    );
249034 
249035    xla_ae_lines_pkg.set_ccid(
249036     p_code_combination_id          => l_ccid
249037   , p_value_type_code              => l_adr_value_type_code
249038   , p_transaction_coa_id           => l_adr_transaction_coa_id
249039   , p_accounting_coa_id            => l_adr_accounting_coa_id
249040   , p_adr_code                     => 'PI_INTEROG_REVENUE'
249041   , p_adr_type_code                => 'S'
249042   , p_component_type               => l_component_type
249043   , p_component_code               => l_component_code
249044   , p_component_type_code          => l_component_type_code
249045   , p_component_appl_id            => l_component_appl_id
249046   , p_amb_context_code             => l_amb_context_code
249047   , p_side                         => 'NA'
249048   );
249049 
249050 
249051    --
249052    --
249053    END IF;
249054    --
249055    -- Bug 4922099
249056    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
249057           (NVL(l_enc_upg_option, 'N') = 'O')
249058         ) AND
249059         (l_bflow_method_code = 'PRIOR_ENTRY')
249060       )
249061    THEN
249062       IF
249063       --
249064       1 = 2
249065       --
249066       THEN
249067       xla_accounting_err_pkg.build_message
249068                                     (p_appli_s_name            => 'XLA'
249069                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
249070                                     ,p_token_1                 => 'LINE_NUMBER'
249071                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
249072                                     ,p_token_2                 => 'LINE_TYPE_NAME'
249073                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
249074                                                                              l_component_type
249075                                                                             ,l_component_code
249076                                                                             ,l_component_type_code
249077                                                                             ,l_component_appl_id
249078                                                                             ,l_amb_context_code
249079                                                                             ,l_entity_code
249080                                                                             ,l_event_class_code
249081                                                                            )
249082                                     ,p_token_3                 => 'OWNER'
249083                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
249084                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
249085                                                                           ,p_lookup_code    => l_component_type_code
249086                                                                          )
249087                                     ,p_token_4                 => 'PRODUCT_NAME'
249088                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
249089                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
249090                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
249091                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
249092                                     ,p_ae_header_id            =>  NULL
249093                                        );
249094 
249095         IF (C_LEVEL_ERROR>= g_log_level) THEN
249096                  trace
249097                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
249098                       ,p_level    => C_LEVEL_ERROR
249099                       ,p_module   => l_log_module);
249100         END IF;
249101       END IF;
249102    END IF;
249103    --
249104    --
249105    ------------------------------------------------------------------------------------------------
249106    -- 4219869 Business Flow
249107    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
249108    -- Prior Entry.  Currently, the following code is always generated.
249109    ------------------------------------------------------------------------------------------------
249110    XLA_AE_LINES_PKG.ValidateCurrentLine;
249111 
249112    ------------------------------------------------------------------------------------
249113    -- 4219869 Business Flow
249114    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
249115    ------------------------------------------------------------------------------------
249116    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
249117 
249118    ----------------------------------------------------------------------------------
249119    -- 4219869 Business Flow
249120    -- Update journal entry status -- Need to generate this within IF <condition>
249121    ----------------------------------------------------------------------------------
249122    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
249123          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
249124          ,p_balance_type_code => l_balance_type_code
249125          );
249126 
249127    -------------------------------------------------------------------------------------------
249128    -- 4262811 - Generate the Accrual Reversal lines
249129    -------------------------------------------------------------------------------------------
249130    BEGIN
249131       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
249132                               (g_array_event(p_event_id).array_value_num('header_index'));
249133       IF l_acc_rev_flag IS NULL THEN
249134          l_acc_rev_flag := 'N';
249135       END IF;
249136    EXCEPTION
249137       WHEN OTHERS THEN
249138          l_acc_rev_flag := 'N';
249139    END;
249140    --
249141    IF (l_acc_rev_flag = 'Y') THEN
249142 
249143        -- 4645092  ------------------------------------------------------------------------------
249144        -- To allow MPA report to determine if it should generate report process
249145        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
249146        ------------------------------------------------------------------------------------------
249147 
249148        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
249149        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
249150    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
249151    -- call ADRs
249152    -- Bug 4922099
249153    --
249154    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
249155         (NVL(l_actual_upg_option, 'N') = 'O') OR
249156         (NVL(l_enc_upg_option, 'N') = 'O')
249157       )
249158    THEN
249159    NULL;
249160    --
249161    --
249162    
249163   l_ccid := AcctDerRule_18(
249164            p_application_id           => p_application_id
249165          , p_ae_header_id             => l_ae_header_id 
249166 , p_source_33 => p_source_33
249167          , x_transaction_coa_id       => l_adr_transaction_coa_id
249168          , x_accounting_coa_id        => l_adr_accounting_coa_id
249169          , x_value_type_code          => l_adr_value_type_code
249170          , p_side                     => 'NA'
249171    );
249172 
249173    xla_ae_lines_pkg.set_ccid(
249174     p_code_combination_id          => l_ccid
249175   , p_value_type_code              => l_adr_value_type_code
249176   , p_transaction_coa_id           => l_adr_transaction_coa_id
249177   , p_accounting_coa_id            => l_adr_accounting_coa_id
249178   , p_adr_code                     => 'PI_INTEROG_REVENUE'
249179   , p_adr_type_code                => 'S'
249180   , p_component_type               => l_component_type
249181   , p_component_code               => l_component_code
249182   , p_component_type_code          => l_component_type_code
249183   , p_component_appl_id            => l_component_appl_id
249184   , p_amb_context_code             => l_amb_context_code
249185   , p_side                         => 'NA'
249186   );
249187 
249188 
249189    --
249190    --
249191    END IF;
249192 
249193        --
249194        -- Update the line information that should be overwritten
249195        --
249196        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
249197                                          p_header_num   => 1);
249198        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
249199 
249200        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
249201 
249202        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
249203           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
249204        END IF;
249205 
249206       --
249207       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
249208       --
249209       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
249210           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
249211       ELSE
249212           ---------------------------------------------------------------------------------------------------
249213           -- 4262811a Switch Sign
249214           ---------------------------------------------------------------------------------------------------
249215           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
249216           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
249217                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
249218           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
249219                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
249220           -- 5132302
249221           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
249222                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
249223 
249224       END IF;
249225 
249226       -- 4955764
249227       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
249228       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
249229 
249230 
249231       XLA_AE_LINES_PKG.ValidateCurrentLine;
249232       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
249233 
249234       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
249235                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
249236                ,p_balance_type_code => l_balance_type_code);
249237 
249238    END IF;
249239 
249240    -----------------------------------------------------------------------------------------
249241    -- 4262811 Multiperiod Accounting
249242    -----------------------------------------------------------------------------------------
249243      -- No MPA option is assigned.
249244 
249245 
249246 END IF;
249247 END IF;
249248 --
249249 
249250 --
249251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
249252    trace
249253       (p_msg      => 'END of AcctLineType_448'
249254       ,p_level    => C_LEVEL_PROCEDURE
249255       ,p_module   => l_log_module);
249256 END IF;
249257 --
249258 EXCEPTION
249259   WHEN xla_exceptions_pkg.application_exception THEN
249260       RAISE;
249261   WHEN OTHERS THEN
249262        xla_exceptions_pkg.raise_message
249263            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_448');
249264 END AcctLineType_448;
249265 --
249266 
249267 ---------------------------------------
249268 --
249269 -- PRIVATE FUNCTION
249270 --         AcctLineType_449
249271 --
249272 ---------------------------------------
249273 PROCEDURE AcctLineType_449 (
249274   p_application_id        IN NUMBER
249275  ,p_event_id              IN NUMBER
249276  ,p_calculate_acctd_flag  IN VARCHAR2
249277  ,p_calculate_g_l_flag    IN VARCHAR2
249278  ,p_actual_flag           IN OUT VARCHAR2
249279  ,p_balance_type_code     OUT VARCHAR2
249280  ,p_gain_or_loss_ref      OUT VARCHAR2
249281  
249282 --TRANSACTION_ID
249283  , p_source_1            IN NUMBER
249284 --Item Concatenated Segments
249285  , p_source_2            IN VARCHAR2
249286 --Transaction Quantity
249287  , p_source_3            IN NUMBER
249288 --Transaction Unit of Measure Code
249289  , p_source_4            IN VARCHAR2
249290 --Inventory Transaction Type Description
249291  , p_source_5            IN VARCHAR2
249292 --Interorg Revenue Account
249293  , p_source_33            IN NUMBER
249294 --DISTRIBUTION_IDENTIFIER
249295  , p_source_84            IN NUMBER
249296 --Distribution Type
249297  , p_source_85            IN VARCHAR2
249298  , p_source_85_meaning    IN VARCHAR2
249299 --Entered Currency Code
249300  , p_source_88            IN VARCHAR2
249301 --Entered Amount
249302  , p_source_91            IN NUMBER
249303 --Currency Conversion Date
249304  , p_source_92            IN DATE
249305 --Currency Conversion Rate
249306  , p_source_93            IN NUMBER
249307 --Currency Conversion Type
249308  , p_source_94            IN VARCHAR2
249309 --Accounted Amount
249310  , p_source_95            IN NUMBER
249311 --Accounting Line Type
249312  , p_source_97            IN NUMBER
249313 )
249314 IS
249315 
249316 l_component_type              VARCHAR2(80);
249317 l_component_code              VARCHAR2(30);
249318 l_component_type_code         VARCHAR2(1);
249319 l_component_appl_id           INTEGER;
249320 l_amb_context_code            VARCHAR2(30);
249321 l_entity_code                 VARCHAR2(30);
249322 l_event_class_code            VARCHAR2(30);
249323 l_ae_header_id                NUMBER;
249324 l_event_type_code             VARCHAR2(30);
249325 l_line_definition_code        VARCHAR2(30);
249326 l_line_definition_owner_code  VARCHAR2(1);
249327 --
249328 -- adr variables
249329 l_segment                     VARCHAR2(30);
249330 l_ccid                        NUMBER;
249331 l_adr_transaction_coa_id      NUMBER;
249332 l_adr_accounting_coa_id       NUMBER;
249333 l_adr_flexfield_segment_code  VARCHAR2(30);
249334 l_adr_flex_value_set_id       NUMBER;
249335 l_adr_value_type_code         VARCHAR2(30);
249336 l_adr_value_combination_id    NUMBER;
249337 l_adr_value_segment_code      VARCHAR2(30);
249338 
249339 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
249340 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
249341 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
249342 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
249343 
249344 -- 4262811 Variables ------------------------------------------------------------------------------------------
249345 l_entered_amt_idx             NUMBER;
249346 l_accted_amt_idx              NUMBER;
249347 l_acc_rev_flag                VARCHAR2(1);
249348 l_accrual_line_num            NUMBER;
249349 l_tmp_amt                     NUMBER;
249350 l_acc_rev_natural_side_code   VARCHAR2(1);
249351 
249352 l_num_entries                 NUMBER;
249353 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
249354 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
249355 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
249356 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
249357 l_recog_line_1                NUMBER;
249358 l_recog_line_2                NUMBER;
249359 
249360 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
249361 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
249362 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
249363 
249364 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
249365 
249366 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
249367 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
249368 
249369 ---------------------------------------------------------------------------------------------------------------
249370 
249371 
249372 --
249373 -- bulk performance
249374 --
249375 l_balance_type_code           VARCHAR2(1);
249376 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
249377 l_log_module                  VARCHAR2(240);
249378 
249379 --
249380 -- Upgrade strategy
249381 --
249382 l_actual_upg_option           VARCHAR2(1);
249383 l_enc_upg_option           VARCHAR2(1);
249384 
249385 --
249386 BEGIN
249387 --
249388 IF g_log_enabled THEN
249389       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_449';
249390 END IF;
249391 --
249392 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
249393 
249394       trace
249395          (p_msg      => 'BEGIN of AcctLineType_449'
249396          ,p_level    => C_LEVEL_PROCEDURE
249397          ,p_module   => l_log_module);
249398 
249399 END IF;
249400 --
249401 l_component_type             := 'AMB_JLT';
249402 l_component_code             := 'PI_REVENUE';
249403 l_component_type_code        := 'S';
249404 l_component_appl_id          :=  707;
249405 l_amb_context_code           := 'DEFAULT';
249406 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
249407 l_event_class_code           := 'USER_DEFINE';
249408 l_event_type_code            := 'UDIR_INTERORG_SHIP';
249409 l_line_definition_owner_code := 'S';
249410 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
249411 --
249412 l_balance_type_code          := 'A';
249413 l_segment                     := NULL;
249414 l_ccid                        := NULL;
249415 l_adr_transaction_coa_id      := NULL;
249416 l_adr_accounting_coa_id       := NULL;
249417 l_adr_flexfield_segment_code  := NULL;
249418 l_adr_flex_value_set_id       := NULL;
249419 l_adr_value_type_code         := NULL;
249420 l_adr_value_combination_id    := NULL;
249421 l_adr_value_segment_code      := NULL;
249422 
249423 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
249424 l_bflow_class_code           := '';    -- 4219869 Business Flow
249425 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
249426 l_budgetary_control_flag     := 'N';
249427 
249428 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
249429 l_bflow_applied_to_amt       := NULL; -- 5132302
249430 l_entered_amt_idx            := NULL;          -- 4262811
249431 l_accted_amt_idx             := NULL;          -- 4262811
249432 l_acc_rev_flag               := NULL;          -- 4262811
249433 l_accrual_line_num           := NULL;          -- 4262811
249434 l_tmp_amt                    := NULL;          -- 4262811
249435 --
249436  
249437 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
249438     l_balance_type_code <> 'B' THEN
249439 IF NVL(p_source_97,9E125) =  1
249440  THEN 
249441 
249442    --
249443    XLA_AE_LINES_PKG.SetNewLine;
249444 
249445    p_balance_type_code          := l_balance_type_code;
249446    -- set the flag so later we will know whether the gain loss line needs to be created
249447    
249448    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
249449      p_actual_flag :='A';
249450    END IF;
249451 
249452    --
249453    -- bulk performance
249454    --
249455    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
249456                                       p_header_num   => 0); -- 4262811
249457    --
249458    -- set accounting line options
249459    --
249460    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
249461            p_natural_side_code          => 'D'
249462          , p_gain_or_loss_flag          => 'N'
249463          , p_gl_transfer_mode_code      => 'S'
249464          , p_acct_entry_type_code       => 'A'
249465          , p_switch_side_flag           => 'Y'
249466          , p_merge_duplicate_code       => 'N'
249467          );
249468    --
249469    l_acc_rev_natural_side_code := 'C';  -- 4262811
249470    -- 
249471    --
249472    -- set accounting line type info
249473    --
249474    xla_ae_lines_pkg.SetAcctLineType
249475       (p_component_type             => l_component_type
249476       ,p_event_type_code            => l_event_type_code
249477       ,p_line_definition_owner_code => l_line_definition_owner_code
249478       ,p_line_definition_code       => l_line_definition_code
249479       ,p_accounting_line_code       => l_component_code
249480       ,p_accounting_line_type_code  => l_component_type_code
249481       ,p_accounting_line_appl_id    => l_component_appl_id
249482       ,p_amb_context_code           => l_amb_context_code
249483       ,p_entity_code                => l_entity_code
249484       ,p_event_class_code           => l_event_class_code);
249485    --
249486    -- set accounting class
249487    --
249488    xla_ae_lines_pkg.SetAcctClass(
249489            p_accounting_class_code  => 'REVENUE'
249490          , p_ae_header_id           => l_ae_header_id
249491          );
249492 
249493    --
249494    -- set rounding class
249495    --
249496    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
249497                       'REVENUE';
249498 
249499    --
249500    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
249501    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
249502    --
249503    -- bulk performance
249504    --
249505    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
249506 
249507    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
249508       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
249509 
249510    -- 4955764
249511    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
249512       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
249513 
249514    -- 4458381 Public Sector Enh
249515    
249516    --
249517    -- set accounting attributes for the line type
249518    --
249519    l_entered_amt_idx := 3;
249520    l_accted_amt_idx  := 8;
249521    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
249522    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
249523    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
249524    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
249525    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
249526    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
249527    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
249528    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
249529    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
249530    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
249531    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
249532    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
249533    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
249534    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
249535    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
249536    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
249537    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
249538 
249539    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
249540    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
249541 
249542    ---------------------------------------------------------------------------------------------------------------
249543    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
249544    ---------------------------------------------------------------------------------------------------------------
249545    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
249546 
249547    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
249548    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
249549 
249550    IF xla_accounting_cache_pkg.GetValueChar
249551          (p_source_code         => 'LEDGER_CATEGORY_CODE'
249552          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
249553    AND l_bflow_method_code = 'PRIOR_ENTRY'
249554 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
249555    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
249556          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
249557        )
249558    THEN
249559          xla_ae_lines_pkg.BflowUpgEntry
249560            (p_business_method_code    => l_bflow_method_code
249561            ,p_business_class_code     => l_bflow_class_code
249562            ,p_balance_type            => l_balance_type_code);
249563    ELSE
249564       NULL;
249565 -- No business flow processing for business flow method of NONE.
249566    END IF;
249567 
249568    --
249569    -- call analytical criteria
249570    --
249571    
249572    --
249573    -- call description
249574    --
249575    
249576 xla_ae_lines_pkg.SetLineDescription(
249577    p_ae_header_id => l_ae_header_id
249578   ,p_description  => Description_1 (
249579      p_application_id         => p_application_id
249580    , p_ae_header_id           => l_ae_header_id 
249581 , p_source_1 => p_source_1
249582 , p_source_2 => p_source_2
249583 , p_source_3 => p_source_3
249584 , p_source_4 => p_source_4
249585 , p_source_5 => p_source_5
249586    )
249587 );
249588 
249589 
249590    --
249591    -- call ADRs
249592    -- Bug 4922099
249593    --
249594    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
249595         (NVL(l_actual_upg_option, 'N') = 'O') OR
249596         (NVL(l_enc_upg_option, 'N') = 'O')
249597       )
249598    THEN
249599    NULL;
249600    --
249601    --
249602    
249603   l_ccid := AcctDerRule_18(
249604            p_application_id           => p_application_id
249605          , p_ae_header_id             => l_ae_header_id 
249606 , p_source_33 => p_source_33
249607          , x_transaction_coa_id       => l_adr_transaction_coa_id
249608          , x_accounting_coa_id        => l_adr_accounting_coa_id
249609          , x_value_type_code          => l_adr_value_type_code
249610          , p_side                     => 'NA'
249611    );
249612 
249613    xla_ae_lines_pkg.set_ccid(
249614     p_code_combination_id          => l_ccid
249615   , p_value_type_code              => l_adr_value_type_code
249616   , p_transaction_coa_id           => l_adr_transaction_coa_id
249617   , p_accounting_coa_id            => l_adr_accounting_coa_id
249618   , p_adr_code                     => 'PI_INTEROG_REVENUE'
249619   , p_adr_type_code                => 'S'
249620   , p_component_type               => l_component_type
249621   , p_component_code               => l_component_code
249622   , p_component_type_code          => l_component_type_code
249623   , p_component_appl_id            => l_component_appl_id
249624   , p_amb_context_code             => l_amb_context_code
249625   , p_side                         => 'NA'
249626   );
249627 
249628 
249629    --
249630    --
249631    END IF;
249632    --
249633    -- Bug 4922099
249634    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
249635           (NVL(l_enc_upg_option, 'N') = 'O')
249636         ) AND
249637         (l_bflow_method_code = 'PRIOR_ENTRY')
249638       )
249639    THEN
249640       IF
249641       --
249642       1 = 2
249643       --
249644       THEN
249645       xla_accounting_err_pkg.build_message
249646                                     (p_appli_s_name            => 'XLA'
249647                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
249648                                     ,p_token_1                 => 'LINE_NUMBER'
249649                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
249650                                     ,p_token_2                 => 'LINE_TYPE_NAME'
249651                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
249652                                                                              l_component_type
249653                                                                             ,l_component_code
249654                                                                             ,l_component_type_code
249655                                                                             ,l_component_appl_id
249656                                                                             ,l_amb_context_code
249657                                                                             ,l_entity_code
249658                                                                             ,l_event_class_code
249659                                                                            )
249660                                     ,p_token_3                 => 'OWNER'
249661                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
249662                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
249663                                                                           ,p_lookup_code    => l_component_type_code
249664                                                                          )
249665                                     ,p_token_4                 => 'PRODUCT_NAME'
249666                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
249667                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
249668                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
249669                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
249670                                     ,p_ae_header_id            =>  NULL
249671                                        );
249672 
249673         IF (C_LEVEL_ERROR>= g_log_level) THEN
249674                  trace
249675                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
249676                       ,p_level    => C_LEVEL_ERROR
249677                       ,p_module   => l_log_module);
249678         END IF;
249679       END IF;
249680    END IF;
249681    --
249682    --
249683    ------------------------------------------------------------------------------------------------
249684    -- 4219869 Business Flow
249685    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
249686    -- Prior Entry.  Currently, the following code is always generated.
249687    ------------------------------------------------------------------------------------------------
249688    XLA_AE_LINES_PKG.ValidateCurrentLine;
249689 
249690    ------------------------------------------------------------------------------------
249691    -- 4219869 Business Flow
249692    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
249693    ------------------------------------------------------------------------------------
249694    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
249695 
249696    ----------------------------------------------------------------------------------
249697    -- 4219869 Business Flow
249698    -- Update journal entry status -- Need to generate this within IF <condition>
249699    ----------------------------------------------------------------------------------
249700    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
249701          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
249702          ,p_balance_type_code => l_balance_type_code
249703          );
249704 
249705    -------------------------------------------------------------------------------------------
249706    -- 4262811 - Generate the Accrual Reversal lines
249707    -------------------------------------------------------------------------------------------
249708    BEGIN
249709       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
249710                               (g_array_event(p_event_id).array_value_num('header_index'));
249711       IF l_acc_rev_flag IS NULL THEN
249712          l_acc_rev_flag := 'N';
249713       END IF;
249714    EXCEPTION
249715       WHEN OTHERS THEN
249716          l_acc_rev_flag := 'N';
249717    END;
249718    --
249719    IF (l_acc_rev_flag = 'Y') THEN
249720 
249721        -- 4645092  ------------------------------------------------------------------------------
249722        -- To allow MPA report to determine if it should generate report process
249723        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
249724        ------------------------------------------------------------------------------------------
249725 
249726        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
249727        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
249728    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
249729    -- call ADRs
249730    -- Bug 4922099
249731    --
249732    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
249733         (NVL(l_actual_upg_option, 'N') = 'O') OR
249734         (NVL(l_enc_upg_option, 'N') = 'O')
249735       )
249736    THEN
249737    NULL;
249738    --
249739    --
249740    
249741   l_ccid := AcctDerRule_18(
249742            p_application_id           => p_application_id
249743          , p_ae_header_id             => l_ae_header_id 
249744 , p_source_33 => p_source_33
249745          , x_transaction_coa_id       => l_adr_transaction_coa_id
249746          , x_accounting_coa_id        => l_adr_accounting_coa_id
249747          , x_value_type_code          => l_adr_value_type_code
249748          , p_side                     => 'NA'
249749    );
249750 
249751    xla_ae_lines_pkg.set_ccid(
249752     p_code_combination_id          => l_ccid
249753   , p_value_type_code              => l_adr_value_type_code
249754   , p_transaction_coa_id           => l_adr_transaction_coa_id
249755   , p_accounting_coa_id            => l_adr_accounting_coa_id
249756   , p_adr_code                     => 'PI_INTEROG_REVENUE'
249757   , p_adr_type_code                => 'S'
249758   , p_component_type               => l_component_type
249759   , p_component_code               => l_component_code
249760   , p_component_type_code          => l_component_type_code
249761   , p_component_appl_id            => l_component_appl_id
249762   , p_amb_context_code             => l_amb_context_code
249763   , p_side                         => 'NA'
249764   );
249765 
249766 
249767    --
249768    --
249769    END IF;
249770 
249771        --
249772        -- Update the line information that should be overwritten
249773        --
249774        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
249775                                          p_header_num   => 1);
249776        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
249777 
249778        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
249779 
249780        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
249781           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
249782        END IF;
249783 
249784       --
249785       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
249786       --
249787       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
249788           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
249789       ELSE
249790           ---------------------------------------------------------------------------------------------------
249791           -- 4262811a Switch Sign
249792           ---------------------------------------------------------------------------------------------------
249793           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
249794           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
249795                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
249796           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
249797                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
249798           -- 5132302
249799           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
249800                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
249801 
249802       END IF;
249803 
249804       -- 4955764
249805       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
249806       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
249807 
249808 
249809       XLA_AE_LINES_PKG.ValidateCurrentLine;
249810       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
249811 
249812       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
249813                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
249814                ,p_balance_type_code => l_balance_type_code);
249815 
249816    END IF;
249817 
249818    -----------------------------------------------------------------------------------------
249819    -- 4262811 Multiperiod Accounting
249820    -----------------------------------------------------------------------------------------
249821      -- No MPA option is assigned.
249822 
249823 
249824 END IF;
249825 END IF;
249826 --
249827 
249828 --
249829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
249830    trace
249831       (p_msg      => 'END of AcctLineType_449'
249832       ,p_level    => C_LEVEL_PROCEDURE
249833       ,p_module   => l_log_module);
249834 END IF;
249835 --
249836 EXCEPTION
249837   WHEN xla_exceptions_pkg.application_exception THEN
249838       RAISE;
249839   WHEN OTHERS THEN
249840        xla_exceptions_pkg.raise_message
249841            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_449');
249842 END AcctLineType_449;
249843 --
249844 
249845 ---------------------------------------
249846 --
249847 -- PRIVATE FUNCTION
249848 --         AcctLineType_450
249849 --
249850 ---------------------------------------
249851 PROCEDURE AcctLineType_450 (
249852   p_application_id        IN NUMBER
249853  ,p_event_id              IN NUMBER
249854  ,p_calculate_acctd_flag  IN VARCHAR2
249855  ,p_calculate_g_l_flag    IN VARCHAR2
249856  ,p_actual_flag           IN OUT VARCHAR2
249857  ,p_balance_type_code     OUT VARCHAR2
249858  ,p_gain_or_loss_ref      OUT VARCHAR2
249859  
249860 --TRANSACTION_ID
249861  , p_source_1            IN NUMBER
249862 --Item Concatenated Segments
249863  , p_source_2            IN VARCHAR2
249864 --Transaction Quantity
249865  , p_source_3            IN NUMBER
249866 --Transaction Unit of Measure Code
249867  , p_source_4            IN VARCHAR2
249868 --Inventory Transaction Type Description
249869  , p_source_5            IN VARCHAR2
249870 --Interorg Revenue Account
249871  , p_source_33            IN NUMBER
249872 --DISTRIBUTION_IDENTIFIER
249873  , p_source_84            IN NUMBER
249874 --Distribution Type
249875  , p_source_85            IN VARCHAR2
249876  , p_source_85_meaning    IN VARCHAR2
249877 --Entered Currency Code
249878  , p_source_88            IN VARCHAR2
249879 --Entered Amount
249880  , p_source_91            IN NUMBER
249881 --Currency Conversion Date
249882  , p_source_92            IN DATE
249883 --Currency Conversion Rate
249884  , p_source_93            IN NUMBER
249885 --Currency Conversion Type
249886  , p_source_94            IN VARCHAR2
249887 --Accounted Amount
249888  , p_source_95            IN NUMBER
249889 --Accounting Line Type
249890  , p_source_97            IN NUMBER
249891 )
249892 IS
249893 
249894 l_component_type              VARCHAR2(80);
249895 l_component_code              VARCHAR2(30);
249896 l_component_type_code         VARCHAR2(1);
249897 l_component_appl_id           INTEGER;
249898 l_amb_context_code            VARCHAR2(30);
249899 l_entity_code                 VARCHAR2(30);
249900 l_event_class_code            VARCHAR2(30);
249901 l_ae_header_id                NUMBER;
249902 l_event_type_code             VARCHAR2(30);
249903 l_line_definition_code        VARCHAR2(30);
249904 l_line_definition_owner_code  VARCHAR2(1);
249905 --
249906 -- adr variables
249907 l_segment                     VARCHAR2(30);
249908 l_ccid                        NUMBER;
249909 l_adr_transaction_coa_id      NUMBER;
249910 l_adr_accounting_coa_id       NUMBER;
249911 l_adr_flexfield_segment_code  VARCHAR2(30);
249912 l_adr_flex_value_set_id       NUMBER;
249913 l_adr_value_type_code         VARCHAR2(30);
249914 l_adr_value_combination_id    NUMBER;
249915 l_adr_value_segment_code      VARCHAR2(30);
249916 
249917 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
249918 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
249919 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
249920 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
249921 
249922 -- 4262811 Variables ------------------------------------------------------------------------------------------
249923 l_entered_amt_idx             NUMBER;
249924 l_accted_amt_idx              NUMBER;
249925 l_acc_rev_flag                VARCHAR2(1);
249926 l_accrual_line_num            NUMBER;
249927 l_tmp_amt                     NUMBER;
249928 l_acc_rev_natural_side_code   VARCHAR2(1);
249929 
249930 l_num_entries                 NUMBER;
249931 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
249932 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
249933 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
249934 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
249935 l_recog_line_1                NUMBER;
249936 l_recog_line_2                NUMBER;
249937 
249938 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
249939 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
249940 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
249941 
249942 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
249943 
249944 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
249945 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
249946 
249947 ---------------------------------------------------------------------------------------------------------------
249948 
249949 
249950 --
249951 -- bulk performance
249952 --
249953 l_balance_type_code           VARCHAR2(1);
249954 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
249955 l_log_module                  VARCHAR2(240);
249956 
249957 --
249958 -- Upgrade strategy
249959 --
249960 l_actual_upg_option           VARCHAR2(1);
249961 l_enc_upg_option           VARCHAR2(1);
249962 
249963 --
249964 BEGIN
249965 --
249966 IF g_log_enabled THEN
249967       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_450';
249968 END IF;
249969 --
249970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
249971 
249972       trace
249973          (p_msg      => 'BEGIN of AcctLineType_450'
249974          ,p_level    => C_LEVEL_PROCEDURE
249975          ,p_module   => l_log_module);
249976 
249977 END IF;
249978 --
249979 l_component_type             := 'AMB_JLT';
249980 l_component_code             := 'PI_REVENUE';
249981 l_component_type_code        := 'S';
249982 l_component_appl_id          :=  707;
249983 l_amb_context_code           := 'DEFAULT';
249984 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
249985 l_event_class_code           := 'USER_DEFINE';
249986 l_event_type_code            := 'UDIR_INTERORG_SHIP_NO_TP';
249987 l_line_definition_owner_code := 'S';
249988 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_NTP';
249989 --
249990 l_balance_type_code          := 'A';
249991 l_segment                     := NULL;
249992 l_ccid                        := NULL;
249993 l_adr_transaction_coa_id      := NULL;
249994 l_adr_accounting_coa_id       := NULL;
249995 l_adr_flexfield_segment_code  := NULL;
249996 l_adr_flex_value_set_id       := NULL;
249997 l_adr_value_type_code         := NULL;
249998 l_adr_value_combination_id    := NULL;
249999 l_adr_value_segment_code      := NULL;
250000 
250001 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
250002 l_bflow_class_code           := '';    -- 4219869 Business Flow
250003 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
250004 l_budgetary_control_flag     := 'N';
250005 
250006 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
250007 l_bflow_applied_to_amt       := NULL; -- 5132302
250008 l_entered_amt_idx            := NULL;          -- 4262811
250009 l_accted_amt_idx             := NULL;          -- 4262811
250010 l_acc_rev_flag               := NULL;          -- 4262811
250011 l_accrual_line_num           := NULL;          -- 4262811
250012 l_tmp_amt                    := NULL;          -- 4262811
250013 --
250014  
250015 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
250016     l_balance_type_code <> 'B' THEN
250017 IF NVL(p_source_97,9E125) =  1
250018  THEN 
250019 
250020    --
250021    XLA_AE_LINES_PKG.SetNewLine;
250022 
250023    p_balance_type_code          := l_balance_type_code;
250024    -- set the flag so later we will know whether the gain loss line needs to be created
250025    
250026    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
250027      p_actual_flag :='A';
250028    END IF;
250029 
250030    --
250031    -- bulk performance
250032    --
250033    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
250034                                       p_header_num   => 0); -- 4262811
250035    --
250036    -- set accounting line options
250037    --
250038    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
250039            p_natural_side_code          => 'D'
250040          , p_gain_or_loss_flag          => 'N'
250041          , p_gl_transfer_mode_code      => 'S'
250042          , p_acct_entry_type_code       => 'A'
250043          , p_switch_side_flag           => 'Y'
250044          , p_merge_duplicate_code       => 'N'
250045          );
250046    --
250047    l_acc_rev_natural_side_code := 'C';  -- 4262811
250048    -- 
250049    --
250050    -- set accounting line type info
250051    --
250052    xla_ae_lines_pkg.SetAcctLineType
250053       (p_component_type             => l_component_type
250054       ,p_event_type_code            => l_event_type_code
250055       ,p_line_definition_owner_code => l_line_definition_owner_code
250056       ,p_line_definition_code       => l_line_definition_code
250057       ,p_accounting_line_code       => l_component_code
250058       ,p_accounting_line_type_code  => l_component_type_code
250059       ,p_accounting_line_appl_id    => l_component_appl_id
250060       ,p_amb_context_code           => l_amb_context_code
250061       ,p_entity_code                => l_entity_code
250062       ,p_event_class_code           => l_event_class_code);
250063    --
250064    -- set accounting class
250065    --
250066    xla_ae_lines_pkg.SetAcctClass(
250067            p_accounting_class_code  => 'REVENUE'
250068          , p_ae_header_id           => l_ae_header_id
250069          );
250070 
250071    --
250072    -- set rounding class
250073    --
250074    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
250075                       'REVENUE';
250076 
250077    --
250078    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
250079    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
250080    --
250081    -- bulk performance
250082    --
250083    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
250084 
250085    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
250086       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
250087 
250088    -- 4955764
250089    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
250090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
250091 
250092    -- 4458381 Public Sector Enh
250093    
250094    --
250095    -- set accounting attributes for the line type
250096    --
250097    l_entered_amt_idx := 3;
250098    l_accted_amt_idx  := 8;
250099    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
250100    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
250101    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
250102    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
250103    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
250104    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
250105    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
250106    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
250107    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
250108    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
250109    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
250110    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
250111    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
250112    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
250113    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
250114    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
250115    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
250116 
250117    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
250118    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
250119 
250120    ---------------------------------------------------------------------------------------------------------------
250121    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
250122    ---------------------------------------------------------------------------------------------------------------
250123    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
250124 
250125    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
250126    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
250127 
250128    IF xla_accounting_cache_pkg.GetValueChar
250129          (p_source_code         => 'LEDGER_CATEGORY_CODE'
250130          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
250131    AND l_bflow_method_code = 'PRIOR_ENTRY'
250132 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
250133    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
250134          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
250135        )
250136    THEN
250137          xla_ae_lines_pkg.BflowUpgEntry
250138            (p_business_method_code    => l_bflow_method_code
250139            ,p_business_class_code     => l_bflow_class_code
250140            ,p_balance_type            => l_balance_type_code);
250141    ELSE
250142       NULL;
250143 -- No business flow processing for business flow method of NONE.
250144    END IF;
250145 
250146    --
250147    -- call analytical criteria
250148    --
250149    
250150    --
250151    -- call description
250152    --
250153    
250154 xla_ae_lines_pkg.SetLineDescription(
250155    p_ae_header_id => l_ae_header_id
250156   ,p_description  => Description_1 (
250157      p_application_id         => p_application_id
250158    , p_ae_header_id           => l_ae_header_id 
250159 , p_source_1 => p_source_1
250160 , p_source_2 => p_source_2
250161 , p_source_3 => p_source_3
250162 , p_source_4 => p_source_4
250163 , p_source_5 => p_source_5
250164    )
250165 );
250166 
250167 
250168    --
250169    -- call ADRs
250170    -- Bug 4922099
250171    --
250172    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
250173         (NVL(l_actual_upg_option, 'N') = 'O') OR
250174         (NVL(l_enc_upg_option, 'N') = 'O')
250175       )
250176    THEN
250177    NULL;
250178    --
250179    --
250180    
250181   l_ccid := AcctDerRule_18(
250182            p_application_id           => p_application_id
250183          , p_ae_header_id             => l_ae_header_id 
250184 , p_source_33 => p_source_33
250185          , x_transaction_coa_id       => l_adr_transaction_coa_id
250186          , x_accounting_coa_id        => l_adr_accounting_coa_id
250187          , x_value_type_code          => l_adr_value_type_code
250188          , p_side                     => 'NA'
250189    );
250190 
250191    xla_ae_lines_pkg.set_ccid(
250192     p_code_combination_id          => l_ccid
250193   , p_value_type_code              => l_adr_value_type_code
250194   , p_transaction_coa_id           => l_adr_transaction_coa_id
250195   , p_accounting_coa_id            => l_adr_accounting_coa_id
250196   , p_adr_code                     => 'PI_INTEROG_REVENUE'
250197   , p_adr_type_code                => 'S'
250198   , p_component_type               => l_component_type
250199   , p_component_code               => l_component_code
250200   , p_component_type_code          => l_component_type_code
250201   , p_component_appl_id            => l_component_appl_id
250202   , p_amb_context_code             => l_amb_context_code
250203   , p_side                         => 'NA'
250204   );
250205 
250206 
250207    --
250208    --
250209    END IF;
250210    --
250211    -- Bug 4922099
250212    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
250213           (NVL(l_enc_upg_option, 'N') = 'O')
250214         ) AND
250215         (l_bflow_method_code = 'PRIOR_ENTRY')
250216       )
250217    THEN
250218       IF
250219       --
250220       1 = 2
250221       --
250222       THEN
250223       xla_accounting_err_pkg.build_message
250224                                     (p_appli_s_name            => 'XLA'
250225                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
250226                                     ,p_token_1                 => 'LINE_NUMBER'
250227                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
250228                                     ,p_token_2                 => 'LINE_TYPE_NAME'
250229                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
250230                                                                              l_component_type
250231                                                                             ,l_component_code
250232                                                                             ,l_component_type_code
250233                                                                             ,l_component_appl_id
250234                                                                             ,l_amb_context_code
250235                                                                             ,l_entity_code
250236                                                                             ,l_event_class_code
250237                                                                            )
250238                                     ,p_token_3                 => 'OWNER'
250239                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
250240                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
250241                                                                           ,p_lookup_code    => l_component_type_code
250242                                                                          )
250243                                     ,p_token_4                 => 'PRODUCT_NAME'
250244                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
250245                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
250246                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
250247                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
250248                                     ,p_ae_header_id            =>  NULL
250249                                        );
250250 
250251         IF (C_LEVEL_ERROR>= g_log_level) THEN
250252                  trace
250253                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
250254                       ,p_level    => C_LEVEL_ERROR
250255                       ,p_module   => l_log_module);
250256         END IF;
250257       END IF;
250258    END IF;
250259    --
250260    --
250261    ------------------------------------------------------------------------------------------------
250262    -- 4219869 Business Flow
250263    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
250264    -- Prior Entry.  Currently, the following code is always generated.
250265    ------------------------------------------------------------------------------------------------
250266    XLA_AE_LINES_PKG.ValidateCurrentLine;
250267 
250268    ------------------------------------------------------------------------------------
250269    -- 4219869 Business Flow
250270    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
250271    ------------------------------------------------------------------------------------
250272    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
250273 
250274    ----------------------------------------------------------------------------------
250275    -- 4219869 Business Flow
250276    -- Update journal entry status -- Need to generate this within IF <condition>
250277    ----------------------------------------------------------------------------------
250278    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
250279          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
250280          ,p_balance_type_code => l_balance_type_code
250281          );
250282 
250283    -------------------------------------------------------------------------------------------
250284    -- 4262811 - Generate the Accrual Reversal lines
250285    -------------------------------------------------------------------------------------------
250286    BEGIN
250287       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
250288                               (g_array_event(p_event_id).array_value_num('header_index'));
250289       IF l_acc_rev_flag IS NULL THEN
250290          l_acc_rev_flag := 'N';
250291       END IF;
250292    EXCEPTION
250293       WHEN OTHERS THEN
250294          l_acc_rev_flag := 'N';
250295    END;
250296    --
250297    IF (l_acc_rev_flag = 'Y') THEN
250298 
250299        -- 4645092  ------------------------------------------------------------------------------
250300        -- To allow MPA report to determine if it should generate report process
250301        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
250302        ------------------------------------------------------------------------------------------
250303 
250304        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
250305        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
250306    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
250307    -- call ADRs
250308    -- Bug 4922099
250309    --
250310    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
250311         (NVL(l_actual_upg_option, 'N') = 'O') OR
250312         (NVL(l_enc_upg_option, 'N') = 'O')
250313       )
250314    THEN
250315    NULL;
250316    --
250317    --
250318    
250319   l_ccid := AcctDerRule_18(
250320            p_application_id           => p_application_id
250321          , p_ae_header_id             => l_ae_header_id 
250322 , p_source_33 => p_source_33
250323          , x_transaction_coa_id       => l_adr_transaction_coa_id
250324          , x_accounting_coa_id        => l_adr_accounting_coa_id
250325          , x_value_type_code          => l_adr_value_type_code
250326          , p_side                     => 'NA'
250327    );
250328 
250329    xla_ae_lines_pkg.set_ccid(
250330     p_code_combination_id          => l_ccid
250331   , p_value_type_code              => l_adr_value_type_code
250332   , p_transaction_coa_id           => l_adr_transaction_coa_id
250333   , p_accounting_coa_id            => l_adr_accounting_coa_id
250334   , p_adr_code                     => 'PI_INTEROG_REVENUE'
250335   , p_adr_type_code                => 'S'
250336   , p_component_type               => l_component_type
250337   , p_component_code               => l_component_code
250338   , p_component_type_code          => l_component_type_code
250339   , p_component_appl_id            => l_component_appl_id
250340   , p_amb_context_code             => l_amb_context_code
250341   , p_side                         => 'NA'
250342   );
250343 
250344 
250345    --
250346    --
250347    END IF;
250348 
250349        --
250350        -- Update the line information that should be overwritten
250351        --
250352        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
250353                                          p_header_num   => 1);
250354        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
250355 
250356        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
250357 
250358        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
250359           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
250360        END IF;
250361 
250362       --
250363       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
250364       --
250365       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
250366           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
250367       ELSE
250368           ---------------------------------------------------------------------------------------------------
250369           -- 4262811a Switch Sign
250370           ---------------------------------------------------------------------------------------------------
250371           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
250372           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
250373                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
250374           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
250375                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
250376           -- 5132302
250377           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
250378                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
250379 
250380       END IF;
250381 
250382       -- 4955764
250383       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
250384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
250385 
250386 
250387       XLA_AE_LINES_PKG.ValidateCurrentLine;
250388       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
250389 
250390       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
250391                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
250392                ,p_balance_type_code => l_balance_type_code);
250393 
250394    END IF;
250395 
250396    -----------------------------------------------------------------------------------------
250397    -- 4262811 Multiperiod Accounting
250398    -----------------------------------------------------------------------------------------
250399      -- No MPA option is assigned.
250400 
250401 
250402 END IF;
250403 END IF;
250404 --
250405 
250406 --
250407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
250408    trace
250409       (p_msg      => 'END of AcctLineType_450'
250410       ,p_level    => C_LEVEL_PROCEDURE
250411       ,p_module   => l_log_module);
250412 END IF;
250413 --
250414 EXCEPTION
250415   WHEN xla_exceptions_pkg.application_exception THEN
250416       RAISE;
250417   WHEN OTHERS THEN
250418        xla_exceptions_pkg.raise_message
250419            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_450');
250420 END AcctLineType_450;
250421 --
250422 
250423 ---------------------------------------
250424 --
250425 -- PRIVATE FUNCTION
250426 --         AcctLineType_451
250427 --
250428 ---------------------------------------
250429 PROCEDURE AcctLineType_451 (
250430   p_application_id        IN NUMBER
250431  ,p_event_id              IN NUMBER
250432  ,p_calculate_acctd_flag  IN VARCHAR2
250433  ,p_calculate_g_l_flag    IN VARCHAR2
250434  ,p_actual_flag           IN OUT VARCHAR2
250435  ,p_balance_type_code     OUT VARCHAR2
250436  ,p_gain_or_loss_ref      OUT VARCHAR2
250437  
250438 --TRANSACTION_ID
250439  , p_source_1            IN NUMBER
250440 --Item Concatenated Segments
250441  , p_source_2            IN VARCHAR2
250442 --Transaction Quantity
250443  , p_source_3            IN NUMBER
250444 --Transaction Unit of Measure Code
250445  , p_source_4            IN VARCHAR2
250446 --Inventory Transaction Type Description
250447  , p_source_5            IN VARCHAR2
250448 --Interorg Revenue Account
250449  , p_source_33            IN NUMBER
250450 --DISTRIBUTION_IDENTIFIER
250451  , p_source_84            IN NUMBER
250452 --Distribution Type
250453  , p_source_85            IN VARCHAR2
250454  , p_source_85_meaning    IN VARCHAR2
250455 --Entered Currency Code
250456  , p_source_88            IN VARCHAR2
250457 --Entered Amount
250458  , p_source_91            IN NUMBER
250459 --Currency Conversion Date
250460  , p_source_92            IN DATE
250461 --Currency Conversion Rate
250462  , p_source_93            IN NUMBER
250463 --Currency Conversion Type
250464  , p_source_94            IN VARCHAR2
250465 --Accounted Amount
250466  , p_source_95            IN NUMBER
250467 --Accounting Line Type
250468  , p_source_97            IN NUMBER
250469 )
250470 IS
250471 
250472 l_component_type              VARCHAR2(80);
250473 l_component_code              VARCHAR2(30);
250474 l_component_type_code         VARCHAR2(1);
250475 l_component_appl_id           INTEGER;
250476 l_amb_context_code            VARCHAR2(30);
250477 l_entity_code                 VARCHAR2(30);
250478 l_event_class_code            VARCHAR2(30);
250479 l_ae_header_id                NUMBER;
250480 l_event_type_code             VARCHAR2(30);
250481 l_line_definition_code        VARCHAR2(30);
250482 l_line_definition_owner_code  VARCHAR2(1);
250483 --
250484 -- adr variables
250485 l_segment                     VARCHAR2(30);
250486 l_ccid                        NUMBER;
250487 l_adr_transaction_coa_id      NUMBER;
250488 l_adr_accounting_coa_id       NUMBER;
250489 l_adr_flexfield_segment_code  VARCHAR2(30);
250490 l_adr_flex_value_set_id       NUMBER;
250491 l_adr_value_type_code         VARCHAR2(30);
250492 l_adr_value_combination_id    NUMBER;
250493 l_adr_value_segment_code      VARCHAR2(30);
250494 
250495 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
250496 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
250497 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
250498 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
250499 
250500 -- 4262811 Variables ------------------------------------------------------------------------------------------
250501 l_entered_amt_idx             NUMBER;
250502 l_accted_amt_idx              NUMBER;
250503 l_acc_rev_flag                VARCHAR2(1);
250504 l_accrual_line_num            NUMBER;
250505 l_tmp_amt                     NUMBER;
250506 l_acc_rev_natural_side_code   VARCHAR2(1);
250507 
250508 l_num_entries                 NUMBER;
250509 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
250510 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
250511 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
250512 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
250513 l_recog_line_1                NUMBER;
250514 l_recog_line_2                NUMBER;
250515 
250516 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
250517 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
250518 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
250519 
250520 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
250521 
250522 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
250523 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
250524 
250525 ---------------------------------------------------------------------------------------------------------------
250526 
250527 
250528 --
250529 -- bulk performance
250530 --
250531 l_balance_type_code           VARCHAR2(1);
250532 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
250533 l_log_module                  VARCHAR2(240);
250534 
250535 --
250536 -- Upgrade strategy
250537 --
250538 l_actual_upg_option           VARCHAR2(1);
250539 l_enc_upg_option           VARCHAR2(1);
250540 
250541 --
250542 BEGIN
250543 --
250544 IF g_log_enabled THEN
250545       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_451';
250546 END IF;
250547 --
250548 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
250549 
250550       trace
250551          (p_msg      => 'BEGIN of AcctLineType_451'
250552          ,p_level    => C_LEVEL_PROCEDURE
250553          ,p_module   => l_log_module);
250554 
250555 END IF;
250556 --
250557 l_component_type             := 'AMB_JLT';
250558 l_component_code             := 'PI_REVENUE_122FM';
250559 l_component_type_code        := 'S';
250560 l_component_appl_id          :=  707;
250561 l_amb_context_code           := 'DEFAULT';
250562 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
250563 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
250564 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_TP';
250565 l_line_definition_owner_code := 'S';
250566 l_line_definition_code       := 'PI_RCPT_SENDER_RCPT_TP';
250567 --
250568 l_balance_type_code          := 'A';
250569 l_segment                     := NULL;
250570 l_ccid                        := NULL;
250571 l_adr_transaction_coa_id      := NULL;
250572 l_adr_accounting_coa_id       := NULL;
250573 l_adr_flexfield_segment_code  := NULL;
250574 l_adr_flex_value_set_id       := NULL;
250575 l_adr_value_type_code         := NULL;
250576 l_adr_value_combination_id    := NULL;
250577 l_adr_value_segment_code      := NULL;
250578 
250579 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
250580 l_bflow_class_code           := '';    -- 4219869 Business Flow
250581 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
250582 l_budgetary_control_flag     := 'N';
250583 
250584 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
250585 l_bflow_applied_to_amt       := NULL; -- 5132302
250586 l_entered_amt_idx            := NULL;          -- 4262811
250587 l_accted_amt_idx             := NULL;          -- 4262811
250588 l_acc_rev_flag               := NULL;          -- 4262811
250589 l_accrual_line_num           := NULL;          -- 4262811
250590 l_tmp_amt                    := NULL;          -- 4262811
250591 --
250592  
250593 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
250594     l_balance_type_code <> 'B' THEN
250595 IF NVL(p_source_97,9E125) =  14
250596  THEN 
250597 
250598    --
250599    XLA_AE_LINES_PKG.SetNewLine;
250600 
250601    p_balance_type_code          := l_balance_type_code;
250602    -- set the flag so later we will know whether the gain loss line needs to be created
250603    
250604    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
250605      p_actual_flag :='A';
250606    END IF;
250607 
250608    --
250609    -- bulk performance
250610    --
250611    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
250612                                       p_header_num   => 0); -- 4262811
250613    --
250614    -- set accounting line options
250615    --
250616    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
250617            p_natural_side_code          => 'D'
250618          , p_gain_or_loss_flag          => 'N'
250619          , p_gl_transfer_mode_code      => 'S'
250620          , p_acct_entry_type_code       => 'A'
250621          , p_switch_side_flag           => 'Y'
250622          , p_merge_duplicate_code       => 'N'
250623          );
250624    --
250625    l_acc_rev_natural_side_code := 'C';  -- 4262811
250626    -- 
250627    --
250628    -- set accounting line type info
250629    --
250630    xla_ae_lines_pkg.SetAcctLineType
250631       (p_component_type             => l_component_type
250632       ,p_event_type_code            => l_event_type_code
250633       ,p_line_definition_owner_code => l_line_definition_owner_code
250634       ,p_line_definition_code       => l_line_definition_code
250635       ,p_accounting_line_code       => l_component_code
250636       ,p_accounting_line_type_code  => l_component_type_code
250637       ,p_accounting_line_appl_id    => l_component_appl_id
250638       ,p_amb_context_code           => l_amb_context_code
250639       ,p_entity_code                => l_entity_code
250640       ,p_event_class_code           => l_event_class_code);
250641    --
250642    -- set accounting class
250643    --
250644    xla_ae_lines_pkg.SetAcctClass(
250645            p_accounting_class_code  => 'REVENUE'
250646          , p_ae_header_id           => l_ae_header_id
250647          );
250648 
250649    --
250650    -- set rounding class
250651    --
250652    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
250653                       'REVENUE';
250654 
250655    --
250656    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
250657    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
250658    --
250659    -- bulk performance
250660    --
250661    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
250662 
250663    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
250664       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
250665 
250666    -- 4955764
250667    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
250668       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
250669 
250670    -- 4458381 Public Sector Enh
250671    
250672    --
250673    -- set accounting attributes for the line type
250674    --
250675    l_entered_amt_idx := 3;
250676    l_accted_amt_idx  := 8;
250677    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
250678    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
250679    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
250680    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
250681    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
250682    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
250683    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
250684    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
250685    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
250686    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
250687    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
250688    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
250689    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
250690    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
250691    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
250692    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
250693    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
250694 
250695    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
250696    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
250697 
250698    ---------------------------------------------------------------------------------------------------------------
250699    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
250700    ---------------------------------------------------------------------------------------------------------------
250701    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
250702 
250703    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
250704    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
250705 
250706    IF xla_accounting_cache_pkg.GetValueChar
250707          (p_source_code         => 'LEDGER_CATEGORY_CODE'
250708          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
250709    AND l_bflow_method_code = 'PRIOR_ENTRY'
250710 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
250711    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
250712          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
250713        )
250714    THEN
250715          xla_ae_lines_pkg.BflowUpgEntry
250716            (p_business_method_code    => l_bflow_method_code
250717            ,p_business_class_code     => l_bflow_class_code
250718            ,p_balance_type            => l_balance_type_code);
250719    ELSE
250720       NULL;
250721 -- No business flow processing for business flow method of NONE.
250722    END IF;
250723 
250724    --
250725    -- call analytical criteria
250726    --
250727    
250728    --
250729    -- call description
250730    --
250731    
250732 xla_ae_lines_pkg.SetLineDescription(
250733    p_ae_header_id => l_ae_header_id
250734   ,p_description  => Description_1 (
250735      p_application_id         => p_application_id
250736    , p_ae_header_id           => l_ae_header_id 
250737 , p_source_1 => p_source_1
250738 , p_source_2 => p_source_2
250739 , p_source_3 => p_source_3
250740 , p_source_4 => p_source_4
250741 , p_source_5 => p_source_5
250742    )
250743 );
250744 
250745 
250746    --
250747    -- call ADRs
250748    -- Bug 4922099
250749    --
250750    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
250751         (NVL(l_actual_upg_option, 'N') = 'O') OR
250752         (NVL(l_enc_upg_option, 'N') = 'O')
250753       )
250754    THEN
250755    NULL;
250756    --
250757    --
250758    
250759   l_ccid := AcctDerRule_18(
250760            p_application_id           => p_application_id
250761          , p_ae_header_id             => l_ae_header_id 
250762 , p_source_33 => p_source_33
250763          , x_transaction_coa_id       => l_adr_transaction_coa_id
250764          , x_accounting_coa_id        => l_adr_accounting_coa_id
250765          , x_value_type_code          => l_adr_value_type_code
250766          , p_side                     => 'NA'
250767    );
250768 
250769    xla_ae_lines_pkg.set_ccid(
250770     p_code_combination_id          => l_ccid
250771   , p_value_type_code              => l_adr_value_type_code
250772   , p_transaction_coa_id           => l_adr_transaction_coa_id
250773   , p_accounting_coa_id            => l_adr_accounting_coa_id
250774   , p_adr_code                     => 'PI_INTEROG_REVENUE'
250775   , p_adr_type_code                => 'S'
250776   , p_component_type               => l_component_type
250777   , p_component_code               => l_component_code
250778   , p_component_type_code          => l_component_type_code
250779   , p_component_appl_id            => l_component_appl_id
250780   , p_amb_context_code             => l_amb_context_code
250781   , p_side                         => 'NA'
250782   );
250783 
250784 
250785    --
250786    --
250787    END IF;
250788    --
250789    -- Bug 4922099
250790    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
250791           (NVL(l_enc_upg_option, 'N') = 'O')
250792         ) AND
250793         (l_bflow_method_code = 'PRIOR_ENTRY')
250794       )
250795    THEN
250796       IF
250797       --
250798       1 = 2
250799       --
250800       THEN
250801       xla_accounting_err_pkg.build_message
250802                                     (p_appli_s_name            => 'XLA'
250803                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
250804                                     ,p_token_1                 => 'LINE_NUMBER'
250805                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
250806                                     ,p_token_2                 => 'LINE_TYPE_NAME'
250807                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
250808                                                                              l_component_type
250809                                                                             ,l_component_code
250810                                                                             ,l_component_type_code
250811                                                                             ,l_component_appl_id
250812                                                                             ,l_amb_context_code
250813                                                                             ,l_entity_code
250814                                                                             ,l_event_class_code
250815                                                                            )
250816                                     ,p_token_3                 => 'OWNER'
250817                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
250818                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
250819                                                                           ,p_lookup_code    => l_component_type_code
250820                                                                          )
250821                                     ,p_token_4                 => 'PRODUCT_NAME'
250822                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
250823                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
250824                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
250825                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
250826                                     ,p_ae_header_id            =>  NULL
250827                                        );
250828 
250829         IF (C_LEVEL_ERROR>= g_log_level) THEN
250830                  trace
250831                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
250832                       ,p_level    => C_LEVEL_ERROR
250833                       ,p_module   => l_log_module);
250834         END IF;
250835       END IF;
250836    END IF;
250837    --
250838    --
250839    ------------------------------------------------------------------------------------------------
250840    -- 4219869 Business Flow
250841    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
250842    -- Prior Entry.  Currently, the following code is always generated.
250843    ------------------------------------------------------------------------------------------------
250844    XLA_AE_LINES_PKG.ValidateCurrentLine;
250845 
250846    ------------------------------------------------------------------------------------
250847    -- 4219869 Business Flow
250848    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
250849    ------------------------------------------------------------------------------------
250850    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
250851 
250852    ----------------------------------------------------------------------------------
250853    -- 4219869 Business Flow
250854    -- Update journal entry status -- Need to generate this within IF <condition>
250855    ----------------------------------------------------------------------------------
250856    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
250857          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
250858          ,p_balance_type_code => l_balance_type_code
250859          );
250860 
250861    -------------------------------------------------------------------------------------------
250862    -- 4262811 - Generate the Accrual Reversal lines
250863    -------------------------------------------------------------------------------------------
250864    BEGIN
250865       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
250866                               (g_array_event(p_event_id).array_value_num('header_index'));
250867       IF l_acc_rev_flag IS NULL THEN
250868          l_acc_rev_flag := 'N';
250869       END IF;
250870    EXCEPTION
250871       WHEN OTHERS THEN
250872          l_acc_rev_flag := 'N';
250873    END;
250874    --
250875    IF (l_acc_rev_flag = 'Y') THEN
250876 
250877        -- 4645092  ------------------------------------------------------------------------------
250878        -- To allow MPA report to determine if it should generate report process
250879        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
250880        ------------------------------------------------------------------------------------------
250881 
250882        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
250883        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
250884    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
250885    -- call ADRs
250886    -- Bug 4922099
250887    --
250888    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
250889         (NVL(l_actual_upg_option, 'N') = 'O') OR
250890         (NVL(l_enc_upg_option, 'N') = 'O')
250891       )
250892    THEN
250893    NULL;
250894    --
250895    --
250896    
250897   l_ccid := AcctDerRule_18(
250898            p_application_id           => p_application_id
250899          , p_ae_header_id             => l_ae_header_id 
250900 , p_source_33 => p_source_33
250901          , x_transaction_coa_id       => l_adr_transaction_coa_id
250902          , x_accounting_coa_id        => l_adr_accounting_coa_id
250903          , x_value_type_code          => l_adr_value_type_code
250904          , p_side                     => 'NA'
250905    );
250906 
250907    xla_ae_lines_pkg.set_ccid(
250908     p_code_combination_id          => l_ccid
250909   , p_value_type_code              => l_adr_value_type_code
250910   , p_transaction_coa_id           => l_adr_transaction_coa_id
250911   , p_accounting_coa_id            => l_adr_accounting_coa_id
250912   , p_adr_code                     => 'PI_INTEROG_REVENUE'
250913   , p_adr_type_code                => 'S'
250914   , p_component_type               => l_component_type
250915   , p_component_code               => l_component_code
250916   , p_component_type_code          => l_component_type_code
250917   , p_component_appl_id            => l_component_appl_id
250918   , p_amb_context_code             => l_amb_context_code
250919   , p_side                         => 'NA'
250920   );
250921 
250922 
250923    --
250924    --
250925    END IF;
250926 
250927        --
250928        -- Update the line information that should be overwritten
250929        --
250930        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
250931                                          p_header_num   => 1);
250932        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
250933 
250934        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
250935 
250936        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
250937           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
250938        END IF;
250939 
250940       --
250941       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
250942       --
250943       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
250944           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
250945       ELSE
250946           ---------------------------------------------------------------------------------------------------
250947           -- 4262811a Switch Sign
250948           ---------------------------------------------------------------------------------------------------
250949           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
250950           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
250951                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
250952           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
250953                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
250954           -- 5132302
250955           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
250956                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
250957 
250958       END IF;
250959 
250960       -- 4955764
250961       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
250962       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
250963 
250964 
250965       XLA_AE_LINES_PKG.ValidateCurrentLine;
250966       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
250967 
250968       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
250969                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
250970                ,p_balance_type_code => l_balance_type_code);
250971 
250972    END IF;
250973 
250974    -----------------------------------------------------------------------------------------
250975    -- 4262811 Multiperiod Accounting
250976    -----------------------------------------------------------------------------------------
250977      -- No MPA option is assigned.
250978 
250979 
250980 END IF;
250981 END IF;
250982 --
250983 
250984 --
250985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
250986    trace
250987       (p_msg      => 'END of AcctLineType_451'
250988       ,p_level    => C_LEVEL_PROCEDURE
250989       ,p_module   => l_log_module);
250990 END IF;
250991 --
250992 EXCEPTION
250993   WHEN xla_exceptions_pkg.application_exception THEN
250994       RAISE;
250995   WHEN OTHERS THEN
250996        xla_exceptions_pkg.raise_message
250997            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_451');
250998 END AcctLineType_451;
250999 --
251000 
251001 ---------------------------------------
251002 --
251003 -- PRIVATE FUNCTION
251004 --         AcctLineType_452
251005 --
251006 ---------------------------------------
251007 PROCEDURE AcctLineType_452 (
251008   p_application_id        IN NUMBER
251009  ,p_event_id              IN NUMBER
251010  ,p_calculate_acctd_flag  IN VARCHAR2
251011  ,p_calculate_g_l_flag    IN VARCHAR2
251012  ,p_actual_flag           IN OUT VARCHAR2
251013  ,p_balance_type_code     OUT VARCHAR2
251014  ,p_gain_or_loss_ref      OUT VARCHAR2
251015  
251016 --TRANSACTION_ID
251017  , p_source_1            IN NUMBER
251018 --Item Concatenated Segments
251019  , p_source_2            IN VARCHAR2
251020 --Transaction Quantity
251021  , p_source_3            IN NUMBER
251022 --Transaction Unit of Measure Code
251023  , p_source_4            IN VARCHAR2
251024 --Inventory Transaction Type Description
251025  , p_source_5            IN VARCHAR2
251026 --Interorg Revenue Account
251027  , p_source_33            IN NUMBER
251028 --DISTRIBUTION_IDENTIFIER
251029  , p_source_84            IN NUMBER
251030 --Distribution Type
251031  , p_source_85            IN VARCHAR2
251032  , p_source_85_meaning    IN VARCHAR2
251033 --Entered Currency Code
251034  , p_source_88            IN VARCHAR2
251035 --Entered Amount
251036  , p_source_91            IN NUMBER
251037 --Currency Conversion Date
251038  , p_source_92            IN DATE
251039 --Currency Conversion Rate
251040  , p_source_93            IN NUMBER
251041 --Currency Conversion Type
251042  , p_source_94            IN VARCHAR2
251043 --Accounted Amount
251044  , p_source_95            IN NUMBER
251045 --Accounting Line Type
251046  , p_source_97            IN NUMBER
251047 )
251048 IS
251049 
251050 l_component_type              VARCHAR2(80);
251051 l_component_code              VARCHAR2(30);
251052 l_component_type_code         VARCHAR2(1);
251053 l_component_appl_id           INTEGER;
251054 l_amb_context_code            VARCHAR2(30);
251055 l_entity_code                 VARCHAR2(30);
251056 l_event_class_code            VARCHAR2(30);
251057 l_ae_header_id                NUMBER;
251058 l_event_type_code             VARCHAR2(30);
251059 l_line_definition_code        VARCHAR2(30);
251060 l_line_definition_owner_code  VARCHAR2(1);
251061 --
251062 -- adr variables
251063 l_segment                     VARCHAR2(30);
251064 l_ccid                        NUMBER;
251065 l_adr_transaction_coa_id      NUMBER;
251066 l_adr_accounting_coa_id       NUMBER;
251067 l_adr_flexfield_segment_code  VARCHAR2(30);
251068 l_adr_flex_value_set_id       NUMBER;
251069 l_adr_value_type_code         VARCHAR2(30);
251070 l_adr_value_combination_id    NUMBER;
251071 l_adr_value_segment_code      VARCHAR2(30);
251072 
251073 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
251074 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
251075 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
251076 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
251077 
251078 -- 4262811 Variables ------------------------------------------------------------------------------------------
251079 l_entered_amt_idx             NUMBER;
251080 l_accted_amt_idx              NUMBER;
251081 l_acc_rev_flag                VARCHAR2(1);
251082 l_accrual_line_num            NUMBER;
251083 l_tmp_amt                     NUMBER;
251084 l_acc_rev_natural_side_code   VARCHAR2(1);
251085 
251086 l_num_entries                 NUMBER;
251087 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
251088 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
251089 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
251090 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
251091 l_recog_line_1                NUMBER;
251092 l_recog_line_2                NUMBER;
251093 
251094 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
251095 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
251096 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
251097 
251098 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
251099 
251100 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
251101 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
251102 
251103 ---------------------------------------------------------------------------------------------------------------
251104 
251105 
251106 --
251107 -- bulk performance
251108 --
251109 l_balance_type_code           VARCHAR2(1);
251110 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
251111 l_log_module                  VARCHAR2(240);
251112 
251113 --
251114 -- Upgrade strategy
251115 --
251116 l_actual_upg_option           VARCHAR2(1);
251117 l_enc_upg_option           VARCHAR2(1);
251118 
251119 --
251120 BEGIN
251121 --
251122 IF g_log_enabled THEN
251123       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_452';
251124 END IF;
251125 --
251126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
251127 
251128       trace
251129          (p_msg      => 'BEGIN of AcctLineType_452'
251130          ,p_level    => C_LEVEL_PROCEDURE
251131          ,p_module   => l_log_module);
251132 
251133 END IF;
251134 --
251135 l_component_type             := 'AMB_JLT';
251136 l_component_code             := 'PI_REVENUE_122FM';
251137 l_component_type_code        := 'S';
251138 l_component_appl_id          :=  707;
251139 l_amb_context_code           := 'DEFAULT';
251140 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
251141 l_event_class_code           := 'FOB_RCPT_SENDER_RCPT';
251142 l_event_type_code            := 'FOB_RCPT_SENDER_RCPT_NO_TP';
251143 l_line_definition_owner_code := 'S';
251144 l_line_definition_code       := 'PI_FOB_RCPT_SENDER_RCPT_NTP';
251145 --
251146 l_balance_type_code          := 'A';
251147 l_segment                     := NULL;
251148 l_ccid                        := NULL;
251149 l_adr_transaction_coa_id      := NULL;
251150 l_adr_accounting_coa_id       := NULL;
251151 l_adr_flexfield_segment_code  := NULL;
251152 l_adr_flex_value_set_id       := NULL;
251153 l_adr_value_type_code         := NULL;
251154 l_adr_value_combination_id    := NULL;
251155 l_adr_value_segment_code      := NULL;
251156 
251157 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
251158 l_bflow_class_code           := '';    -- 4219869 Business Flow
251159 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
251160 l_budgetary_control_flag     := 'N';
251161 
251162 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
251163 l_bflow_applied_to_amt       := NULL; -- 5132302
251164 l_entered_amt_idx            := NULL;          -- 4262811
251165 l_accted_amt_idx             := NULL;          -- 4262811
251166 l_acc_rev_flag               := NULL;          -- 4262811
251167 l_accrual_line_num           := NULL;          -- 4262811
251168 l_tmp_amt                    := NULL;          -- 4262811
251169 --
251170  
251171 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
251172     l_balance_type_code <> 'B' THEN
251173 IF NVL(p_source_97,9E125) =  14
251174  THEN 
251175 
251176    --
251177    XLA_AE_LINES_PKG.SetNewLine;
251178 
251179    p_balance_type_code          := l_balance_type_code;
251180    -- set the flag so later we will know whether the gain loss line needs to be created
251181    
251182    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
251183      p_actual_flag :='A';
251184    END IF;
251185 
251186    --
251187    -- bulk performance
251188    --
251189    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
251190                                       p_header_num   => 0); -- 4262811
251191    --
251192    -- set accounting line options
251193    --
251194    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
251195            p_natural_side_code          => 'D'
251196          , p_gain_or_loss_flag          => 'N'
251197          , p_gl_transfer_mode_code      => 'S'
251198          , p_acct_entry_type_code       => 'A'
251199          , p_switch_side_flag           => 'Y'
251200          , p_merge_duplicate_code       => 'N'
251201          );
251202    --
251203    l_acc_rev_natural_side_code := 'C';  -- 4262811
251204    -- 
251205    --
251206    -- set accounting line type info
251207    --
251208    xla_ae_lines_pkg.SetAcctLineType
251209       (p_component_type             => l_component_type
251210       ,p_event_type_code            => l_event_type_code
251211       ,p_line_definition_owner_code => l_line_definition_owner_code
251212       ,p_line_definition_code       => l_line_definition_code
251213       ,p_accounting_line_code       => l_component_code
251214       ,p_accounting_line_type_code  => l_component_type_code
251215       ,p_accounting_line_appl_id    => l_component_appl_id
251216       ,p_amb_context_code           => l_amb_context_code
251217       ,p_entity_code                => l_entity_code
251218       ,p_event_class_code           => l_event_class_code);
251219    --
251220    -- set accounting class
251221    --
251222    xla_ae_lines_pkg.SetAcctClass(
251223            p_accounting_class_code  => 'REVENUE'
251224          , p_ae_header_id           => l_ae_header_id
251225          );
251226 
251227    --
251228    -- set rounding class
251229    --
251230    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
251231                       'REVENUE';
251232 
251233    --
251234    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
251235    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
251236    --
251237    -- bulk performance
251238    --
251239    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
251240 
251241    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
251242       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
251243 
251244    -- 4955764
251245    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
251246       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
251247 
251248    -- 4458381 Public Sector Enh
251249    
251250    --
251251    -- set accounting attributes for the line type
251252    --
251253    l_entered_amt_idx := 3;
251254    l_accted_amt_idx  := 8;
251255    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
251256    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
251257    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
251258    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
251259    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
251260    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
251261    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
251262    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
251263    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
251264    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
251265    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
251266    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
251267    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
251268    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
251269    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
251270    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
251271    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
251272 
251273    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
251274    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
251275 
251276    ---------------------------------------------------------------------------------------------------------------
251277    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
251278    ---------------------------------------------------------------------------------------------------------------
251279    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
251280 
251281    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
251282    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
251283 
251284    IF xla_accounting_cache_pkg.GetValueChar
251285          (p_source_code         => 'LEDGER_CATEGORY_CODE'
251286          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
251287    AND l_bflow_method_code = 'PRIOR_ENTRY'
251288 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
251289    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
251290          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
251291        )
251292    THEN
251293          xla_ae_lines_pkg.BflowUpgEntry
251294            (p_business_method_code    => l_bflow_method_code
251295            ,p_business_class_code     => l_bflow_class_code
251296            ,p_balance_type            => l_balance_type_code);
251297    ELSE
251298       NULL;
251299 -- No business flow processing for business flow method of NONE.
251300    END IF;
251301 
251302    --
251303    -- call analytical criteria
251304    --
251305    
251306    --
251307    -- call description
251308    --
251309    
251310 xla_ae_lines_pkg.SetLineDescription(
251311    p_ae_header_id => l_ae_header_id
251312   ,p_description  => Description_1 (
251313      p_application_id         => p_application_id
251314    , p_ae_header_id           => l_ae_header_id 
251315 , p_source_1 => p_source_1
251316 , p_source_2 => p_source_2
251317 , p_source_3 => p_source_3
251318 , p_source_4 => p_source_4
251319 , p_source_5 => p_source_5
251320    )
251321 );
251322 
251323 
251324    --
251325    -- call ADRs
251326    -- Bug 4922099
251327    --
251328    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
251329         (NVL(l_actual_upg_option, 'N') = 'O') OR
251330         (NVL(l_enc_upg_option, 'N') = 'O')
251331       )
251332    THEN
251333    NULL;
251334    --
251335    --
251336    
251337   l_ccid := AcctDerRule_18(
251338            p_application_id           => p_application_id
251339          , p_ae_header_id             => l_ae_header_id 
251340 , p_source_33 => p_source_33
251341          , x_transaction_coa_id       => l_adr_transaction_coa_id
251342          , x_accounting_coa_id        => l_adr_accounting_coa_id
251343          , x_value_type_code          => l_adr_value_type_code
251344          , p_side                     => 'NA'
251345    );
251346 
251347    xla_ae_lines_pkg.set_ccid(
251348     p_code_combination_id          => l_ccid
251349   , p_value_type_code              => l_adr_value_type_code
251350   , p_transaction_coa_id           => l_adr_transaction_coa_id
251351   , p_accounting_coa_id            => l_adr_accounting_coa_id
251352   , p_adr_code                     => 'PI_INTEROG_REVENUE'
251353   , p_adr_type_code                => 'S'
251354   , p_component_type               => l_component_type
251355   , p_component_code               => l_component_code
251356   , p_component_type_code          => l_component_type_code
251357   , p_component_appl_id            => l_component_appl_id
251358   , p_amb_context_code             => l_amb_context_code
251359   , p_side                         => 'NA'
251360   );
251361 
251362 
251363    --
251364    --
251365    END IF;
251366    --
251367    -- Bug 4922099
251368    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
251369           (NVL(l_enc_upg_option, 'N') = 'O')
251370         ) AND
251371         (l_bflow_method_code = 'PRIOR_ENTRY')
251372       )
251373    THEN
251374       IF
251375       --
251376       1 = 2
251377       --
251378       THEN
251379       xla_accounting_err_pkg.build_message
251380                                     (p_appli_s_name            => 'XLA'
251381                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
251382                                     ,p_token_1                 => 'LINE_NUMBER'
251383                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
251384                                     ,p_token_2                 => 'LINE_TYPE_NAME'
251385                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
251386                                                                              l_component_type
251387                                                                             ,l_component_code
251388                                                                             ,l_component_type_code
251389                                                                             ,l_component_appl_id
251390                                                                             ,l_amb_context_code
251391                                                                             ,l_entity_code
251392                                                                             ,l_event_class_code
251393                                                                            )
251394                                     ,p_token_3                 => 'OWNER'
251395                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
251396                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
251397                                                                           ,p_lookup_code    => l_component_type_code
251398                                                                          )
251399                                     ,p_token_4                 => 'PRODUCT_NAME'
251400                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
251401                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
251402                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
251403                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
251404                                     ,p_ae_header_id            =>  NULL
251405                                        );
251406 
251407         IF (C_LEVEL_ERROR>= g_log_level) THEN
251408                  trace
251409                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
251410                       ,p_level    => C_LEVEL_ERROR
251411                       ,p_module   => l_log_module);
251412         END IF;
251413       END IF;
251414    END IF;
251415    --
251416    --
251417    ------------------------------------------------------------------------------------------------
251418    -- 4219869 Business Flow
251419    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
251420    -- Prior Entry.  Currently, the following code is always generated.
251421    ------------------------------------------------------------------------------------------------
251422    XLA_AE_LINES_PKG.ValidateCurrentLine;
251423 
251424    ------------------------------------------------------------------------------------
251425    -- 4219869 Business Flow
251426    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
251427    ------------------------------------------------------------------------------------
251428    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
251429 
251430    ----------------------------------------------------------------------------------
251431    -- 4219869 Business Flow
251432    -- Update journal entry status -- Need to generate this within IF <condition>
251433    ----------------------------------------------------------------------------------
251434    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
251435          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
251436          ,p_balance_type_code => l_balance_type_code
251437          );
251438 
251439    -------------------------------------------------------------------------------------------
251440    -- 4262811 - Generate the Accrual Reversal lines
251441    -------------------------------------------------------------------------------------------
251442    BEGIN
251443       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
251444                               (g_array_event(p_event_id).array_value_num('header_index'));
251445       IF l_acc_rev_flag IS NULL THEN
251446          l_acc_rev_flag := 'N';
251447       END IF;
251448    EXCEPTION
251449       WHEN OTHERS THEN
251450          l_acc_rev_flag := 'N';
251451    END;
251452    --
251453    IF (l_acc_rev_flag = 'Y') THEN
251454 
251455        -- 4645092  ------------------------------------------------------------------------------
251456        -- To allow MPA report to determine if it should generate report process
251457        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
251458        ------------------------------------------------------------------------------------------
251459 
251460        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
251461        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
251462    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
251463    -- call ADRs
251464    -- Bug 4922099
251465    --
251466    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
251467         (NVL(l_actual_upg_option, 'N') = 'O') OR
251468         (NVL(l_enc_upg_option, 'N') = 'O')
251469       )
251470    THEN
251471    NULL;
251472    --
251473    --
251474    
251475   l_ccid := AcctDerRule_18(
251476            p_application_id           => p_application_id
251477          , p_ae_header_id             => l_ae_header_id 
251478 , p_source_33 => p_source_33
251479          , x_transaction_coa_id       => l_adr_transaction_coa_id
251480          , x_accounting_coa_id        => l_adr_accounting_coa_id
251481          , x_value_type_code          => l_adr_value_type_code
251482          , p_side                     => 'NA'
251483    );
251484 
251485    xla_ae_lines_pkg.set_ccid(
251486     p_code_combination_id          => l_ccid
251487   , p_value_type_code              => l_adr_value_type_code
251488   , p_transaction_coa_id           => l_adr_transaction_coa_id
251489   , p_accounting_coa_id            => l_adr_accounting_coa_id
251490   , p_adr_code                     => 'PI_INTEROG_REVENUE'
251491   , p_adr_type_code                => 'S'
251492   , p_component_type               => l_component_type
251493   , p_component_code               => l_component_code
251494   , p_component_type_code          => l_component_type_code
251495   , p_component_appl_id            => l_component_appl_id
251496   , p_amb_context_code             => l_amb_context_code
251497   , p_side                         => 'NA'
251498   );
251499 
251500 
251501    --
251502    --
251503    END IF;
251504 
251505        --
251506        -- Update the line information that should be overwritten
251507        --
251508        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
251509                                          p_header_num   => 1);
251510        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
251511 
251512        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
251513 
251514        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
251515           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
251516        END IF;
251517 
251518       --
251519       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
251520       --
251521       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
251522           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
251523       ELSE
251524           ---------------------------------------------------------------------------------------------------
251525           -- 4262811a Switch Sign
251526           ---------------------------------------------------------------------------------------------------
251527           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
251528           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
251529                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
251530           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
251531                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
251532           -- 5132302
251533           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
251534                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
251535 
251536       END IF;
251537 
251538       -- 4955764
251539       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
251540       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
251541 
251542 
251543       XLA_AE_LINES_PKG.ValidateCurrentLine;
251544       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
251545 
251546       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
251547                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
251548                ,p_balance_type_code => l_balance_type_code);
251549 
251550    END IF;
251551 
251552    -----------------------------------------------------------------------------------------
251553    -- 4262811 Multiperiod Accounting
251554    -----------------------------------------------------------------------------------------
251555      -- No MPA option is assigned.
251556 
251557 
251558 END IF;
251559 END IF;
251560 --
251561 
251562 --
251563 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
251564    trace
251565       (p_msg      => 'END of AcctLineType_452'
251566       ,p_level    => C_LEVEL_PROCEDURE
251567       ,p_module   => l_log_module);
251568 END IF;
251569 --
251570 EXCEPTION
251571   WHEN xla_exceptions_pkg.application_exception THEN
251572       RAISE;
251573   WHEN OTHERS THEN
251574        xla_exceptions_pkg.raise_message
251575            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_452');
251576 END AcctLineType_452;
251577 --
251578 
251579 ---------------------------------------
251580 --
251581 -- PRIVATE FUNCTION
251582 --         AcctLineType_453
251583 --
251584 ---------------------------------------
251585 PROCEDURE AcctLineType_453 (
251586   p_application_id        IN NUMBER
251587  ,p_event_id              IN NUMBER
251588  ,p_calculate_acctd_flag  IN VARCHAR2
251589  ,p_calculate_g_l_flag    IN VARCHAR2
251590  ,p_actual_flag           IN OUT VARCHAR2
251591  ,p_balance_type_code     OUT VARCHAR2
251592  ,p_gain_or_loss_ref      OUT VARCHAR2
251593  
251594 --TRANSACTION_ID
251595  , p_source_1            IN NUMBER
251596 --Item Concatenated Segments
251597  , p_source_2            IN VARCHAR2
251598 --Transaction Quantity
251599  , p_source_3            IN NUMBER
251600 --Transaction Unit of Measure Code
251601  , p_source_4            IN VARCHAR2
251602 --Inventory Transaction Type Description
251603  , p_source_5            IN VARCHAR2
251604 --Interorg Revenue Account
251605  , p_source_33            IN NUMBER
251606 --DISTRIBUTION_IDENTIFIER
251607  , p_source_84            IN NUMBER
251608 --Distribution Type
251609  , p_source_85            IN VARCHAR2
251610  , p_source_85_meaning    IN VARCHAR2
251611 --Entered Currency Code
251612  , p_source_88            IN VARCHAR2
251613 --Entered Amount
251614  , p_source_91            IN NUMBER
251615 --Currency Conversion Date
251616  , p_source_92            IN DATE
251617 --Currency Conversion Rate
251618  , p_source_93            IN NUMBER
251619 --Currency Conversion Type
251620  , p_source_94            IN VARCHAR2
251621 --Accounted Amount
251622  , p_source_95            IN NUMBER
251623 --Accounting Line Type
251624  , p_source_97            IN NUMBER
251625 )
251626 IS
251627 
251628 l_component_type              VARCHAR2(80);
251629 l_component_code              VARCHAR2(30);
251630 l_component_type_code         VARCHAR2(1);
251631 l_component_appl_id           INTEGER;
251632 l_amb_context_code            VARCHAR2(30);
251633 l_entity_code                 VARCHAR2(30);
251634 l_event_class_code            VARCHAR2(30);
251635 l_ae_header_id                NUMBER;
251636 l_event_type_code             VARCHAR2(30);
251637 l_line_definition_code        VARCHAR2(30);
251638 l_line_definition_owner_code  VARCHAR2(1);
251639 --
251640 -- adr variables
251641 l_segment                     VARCHAR2(30);
251642 l_ccid                        NUMBER;
251643 l_adr_transaction_coa_id      NUMBER;
251644 l_adr_accounting_coa_id       NUMBER;
251645 l_adr_flexfield_segment_code  VARCHAR2(30);
251646 l_adr_flex_value_set_id       NUMBER;
251647 l_adr_value_type_code         VARCHAR2(30);
251648 l_adr_value_combination_id    NUMBER;
251649 l_adr_value_segment_code      VARCHAR2(30);
251650 
251651 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
251652 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
251653 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
251654 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
251655 
251656 -- 4262811 Variables ------------------------------------------------------------------------------------------
251657 l_entered_amt_idx             NUMBER;
251658 l_accted_amt_idx              NUMBER;
251659 l_acc_rev_flag                VARCHAR2(1);
251660 l_accrual_line_num            NUMBER;
251661 l_tmp_amt                     NUMBER;
251662 l_acc_rev_natural_side_code   VARCHAR2(1);
251663 
251664 l_num_entries                 NUMBER;
251665 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
251666 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
251667 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
251668 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
251669 l_recog_line_1                NUMBER;
251670 l_recog_line_2                NUMBER;
251671 
251672 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
251673 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
251674 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
251675 
251676 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
251677 
251678 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
251679 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
251680 
251681 ---------------------------------------------------------------------------------------------------------------
251682 
251683 
251684 --
251685 -- bulk performance
251686 --
251687 l_balance_type_code           VARCHAR2(1);
251688 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
251689 l_log_module                  VARCHAR2(240);
251690 
251691 --
251692 -- Upgrade strategy
251693 --
251694 l_actual_upg_option           VARCHAR2(1);
251695 l_enc_upg_option           VARCHAR2(1);
251696 
251697 --
251698 BEGIN
251699 --
251700 IF g_log_enabled THEN
251701       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_453';
251702 END IF;
251703 --
251704 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
251705 
251706       trace
251707          (p_msg      => 'BEGIN of AcctLineType_453'
251708          ,p_level    => C_LEVEL_PROCEDURE
251709          ,p_module   => l_log_module);
251710 
251711 END IF;
251712 --
251713 l_component_type             := 'AMB_JLT';
251714 l_component_code             := 'PI_REVENUE_211FM';
251715 l_component_type_code        := 'S';
251716 l_component_appl_id          :=  707;
251717 l_amb_context_code           := 'DEFAULT';
251718 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
251719 l_event_class_code           := 'USER_DEFINE';
251720 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
251721 l_line_definition_owner_code := 'S';
251722 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
251723 --
251724 l_balance_type_code          := 'A';
251725 l_segment                     := NULL;
251726 l_ccid                        := NULL;
251727 l_adr_transaction_coa_id      := NULL;
251728 l_adr_accounting_coa_id       := NULL;
251729 l_adr_flexfield_segment_code  := NULL;
251730 l_adr_flex_value_set_id       := NULL;
251731 l_adr_value_type_code         := NULL;
251732 l_adr_value_combination_id    := NULL;
251733 l_adr_value_segment_code      := NULL;
251734 
251735 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
251736 l_bflow_class_code           := '';    -- 4219869 Business Flow
251737 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
251738 l_budgetary_control_flag     := 'N';
251739 
251740 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
251741 l_bflow_applied_to_amt       := NULL; -- 5132302
251742 l_entered_amt_idx            := NULL;          -- 4262811
251743 l_accted_amt_idx             := NULL;          -- 4262811
251744 l_acc_rev_flag               := NULL;          -- 4262811
251745 l_accrual_line_num           := NULL;          -- 4262811
251746 l_tmp_amt                    := NULL;          -- 4262811
251747 --
251748  
251749 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
251750     l_balance_type_code <> 'B' THEN
251751 IF NVL(p_source_97,9E125) =  1
251752  THEN 
251753 
251754    --
251755    XLA_AE_LINES_PKG.SetNewLine;
251756 
251757    p_balance_type_code          := l_balance_type_code;
251758    -- set the flag so later we will know whether the gain loss line needs to be created
251759    
251760    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
251761      p_actual_flag :='A';
251762    END IF;
251763 
251764    --
251765    -- bulk performance
251766    --
251767    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
251768                                       p_header_num   => 0); -- 4262811
251769    --
251770    -- set accounting line options
251771    --
251772    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
251773            p_natural_side_code          => 'C'
251774          , p_gain_or_loss_flag          => 'N'
251775          , p_gl_transfer_mode_code      => 'S'
251776          , p_acct_entry_type_code       => 'A'
251777          , p_switch_side_flag           => 'Y'
251778          , p_merge_duplicate_code       => 'N'
251779          );
251780    --
251781    l_acc_rev_natural_side_code := 'D';  -- 4262811
251782    -- 
251783    --
251784    -- set accounting line type info
251785    --
251786    xla_ae_lines_pkg.SetAcctLineType
251787       (p_component_type             => l_component_type
251788       ,p_event_type_code            => l_event_type_code
251789       ,p_line_definition_owner_code => l_line_definition_owner_code
251790       ,p_line_definition_code       => l_line_definition_code
251791       ,p_accounting_line_code       => l_component_code
251792       ,p_accounting_line_type_code  => l_component_type_code
251793       ,p_accounting_line_appl_id    => l_component_appl_id
251794       ,p_amb_context_code           => l_amb_context_code
251795       ,p_entity_code                => l_entity_code
251796       ,p_event_class_code           => l_event_class_code);
251797    --
251798    -- set accounting class
251799    --
251800    xla_ae_lines_pkg.SetAcctClass(
251801            p_accounting_class_code  => 'REVENUE'
251802          , p_ae_header_id           => l_ae_header_id
251803          );
251804 
251805    --
251806    -- set rounding class
251807    --
251808    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
251809                       'REVENUE';
251810 
251811    --
251812    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
251813    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
251814    --
251815    -- bulk performance
251816    --
251817    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
251818 
251819    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
251820       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
251821 
251822    -- 4955764
251823    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
251824       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
251825 
251826    -- 4458381 Public Sector Enh
251827    
251828    --
251829    -- set accounting attributes for the line type
251830    --
251831    l_entered_amt_idx := 3;
251832    l_accted_amt_idx  := 8;
251833    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
251834    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
251835    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
251836    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
251837    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
251838    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
251839    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
251840    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
251841    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
251842    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
251843    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
251844    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
251845    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
251846    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
251847    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
251848    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
251849    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
251850 
251851    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
251852    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
251853 
251854    ---------------------------------------------------------------------------------------------------------------
251855    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
251856    ---------------------------------------------------------------------------------------------------------------
251857    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
251858 
251859    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
251860    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
251861 
251862    IF xla_accounting_cache_pkg.GetValueChar
251863          (p_source_code         => 'LEDGER_CATEGORY_CODE'
251864          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
251865    AND l_bflow_method_code = 'PRIOR_ENTRY'
251866 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
251867    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
251868          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
251869        )
251870    THEN
251871          xla_ae_lines_pkg.BflowUpgEntry
251872            (p_business_method_code    => l_bflow_method_code
251873            ,p_business_class_code     => l_bflow_class_code
251874            ,p_balance_type            => l_balance_type_code);
251875    ELSE
251876       NULL;
251877 -- No business flow processing for business flow method of NONE.
251878    END IF;
251879 
251880    --
251881    -- call analytical criteria
251882    --
251883    
251884    --
251885    -- call description
251886    --
251887    
251888 xla_ae_lines_pkg.SetLineDescription(
251889    p_ae_header_id => l_ae_header_id
251890   ,p_description  => Description_1 (
251891      p_application_id         => p_application_id
251892    , p_ae_header_id           => l_ae_header_id 
251893 , p_source_1 => p_source_1
251894 , p_source_2 => p_source_2
251895 , p_source_3 => p_source_3
251896 , p_source_4 => p_source_4
251897 , p_source_5 => p_source_5
251898    )
251899 );
251900 
251901 
251902    --
251903    -- call ADRs
251904    -- Bug 4922099
251905    --
251906    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
251907         (NVL(l_actual_upg_option, 'N') = 'O') OR
251908         (NVL(l_enc_upg_option, 'N') = 'O')
251909       )
251910    THEN
251911    NULL;
251912    --
251913    --
251914    
251915   l_ccid := AcctDerRule_18(
251916            p_application_id           => p_application_id
251917          , p_ae_header_id             => l_ae_header_id 
251918 , p_source_33 => p_source_33
251919          , x_transaction_coa_id       => l_adr_transaction_coa_id
251920          , x_accounting_coa_id        => l_adr_accounting_coa_id
251921          , x_value_type_code          => l_adr_value_type_code
251922          , p_side                     => 'NA'
251923    );
251924 
251925    xla_ae_lines_pkg.set_ccid(
251926     p_code_combination_id          => l_ccid
251927   , p_value_type_code              => l_adr_value_type_code
251928   , p_transaction_coa_id           => l_adr_transaction_coa_id
251929   , p_accounting_coa_id            => l_adr_accounting_coa_id
251930   , p_adr_code                     => 'PI_INTEROG_REVENUE'
251931   , p_adr_type_code                => 'S'
251932   , p_component_type               => l_component_type
251933   , p_component_code               => l_component_code
251934   , p_component_type_code          => l_component_type_code
251935   , p_component_appl_id            => l_component_appl_id
251936   , p_amb_context_code             => l_amb_context_code
251937   , p_side                         => 'NA'
251938   );
251939 
251940 
251941    --
251942    --
251943    END IF;
251944    --
251945    -- Bug 4922099
251946    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
251947           (NVL(l_enc_upg_option, 'N') = 'O')
251948         ) AND
251949         (l_bflow_method_code = 'PRIOR_ENTRY')
251950       )
251951    THEN
251952       IF
251953       --
251954       1 = 2
251955       --
251956       THEN
251957       xla_accounting_err_pkg.build_message
251958                                     (p_appli_s_name            => 'XLA'
251959                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
251960                                     ,p_token_1                 => 'LINE_NUMBER'
251961                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
251962                                     ,p_token_2                 => 'LINE_TYPE_NAME'
251963                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
251964                                                                              l_component_type
251965                                                                             ,l_component_code
251966                                                                             ,l_component_type_code
251967                                                                             ,l_component_appl_id
251968                                                                             ,l_amb_context_code
251969                                                                             ,l_entity_code
251970                                                                             ,l_event_class_code
251971                                                                            )
251972                                     ,p_token_3                 => 'OWNER'
251973                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
251974                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
251975                                                                           ,p_lookup_code    => l_component_type_code
251976                                                                          )
251977                                     ,p_token_4                 => 'PRODUCT_NAME'
251978                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
251979                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
251980                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
251981                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
251982                                     ,p_ae_header_id            =>  NULL
251983                                        );
251984 
251985         IF (C_LEVEL_ERROR>= g_log_level) THEN
251986                  trace
251987                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
251988                       ,p_level    => C_LEVEL_ERROR
251989                       ,p_module   => l_log_module);
251990         END IF;
251991       END IF;
251992    END IF;
251993    --
251994    --
251995    ------------------------------------------------------------------------------------------------
251996    -- 4219869 Business Flow
251997    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
251998    -- Prior Entry.  Currently, the following code is always generated.
251999    ------------------------------------------------------------------------------------------------
252000    XLA_AE_LINES_PKG.ValidateCurrentLine;
252001 
252002    ------------------------------------------------------------------------------------
252003    -- 4219869 Business Flow
252004    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
252005    ------------------------------------------------------------------------------------
252006    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
252007 
252008    ----------------------------------------------------------------------------------
252009    -- 4219869 Business Flow
252010    -- Update journal entry status -- Need to generate this within IF <condition>
252011    ----------------------------------------------------------------------------------
252012    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
252013          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
252014          ,p_balance_type_code => l_balance_type_code
252015          );
252016 
252017    -------------------------------------------------------------------------------------------
252018    -- 4262811 - Generate the Accrual Reversal lines
252019    -------------------------------------------------------------------------------------------
252020    BEGIN
252021       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
252022                               (g_array_event(p_event_id).array_value_num('header_index'));
252023       IF l_acc_rev_flag IS NULL THEN
252024          l_acc_rev_flag := 'N';
252025       END IF;
252026    EXCEPTION
252027       WHEN OTHERS THEN
252028          l_acc_rev_flag := 'N';
252029    END;
252030    --
252031    IF (l_acc_rev_flag = 'Y') THEN
252032 
252033        -- 4645092  ------------------------------------------------------------------------------
252034        -- To allow MPA report to determine if it should generate report process
252035        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
252036        ------------------------------------------------------------------------------------------
252037 
252038        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
252039        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
252040    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
252041    -- call ADRs
252042    -- Bug 4922099
252043    --
252044    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
252045         (NVL(l_actual_upg_option, 'N') = 'O') OR
252046         (NVL(l_enc_upg_option, 'N') = 'O')
252047       )
252048    THEN
252049    NULL;
252050    --
252051    --
252052    
252053   l_ccid := AcctDerRule_18(
252054            p_application_id           => p_application_id
252055          , p_ae_header_id             => l_ae_header_id 
252056 , p_source_33 => p_source_33
252057          , x_transaction_coa_id       => l_adr_transaction_coa_id
252058          , x_accounting_coa_id        => l_adr_accounting_coa_id
252059          , x_value_type_code          => l_adr_value_type_code
252060          , p_side                     => 'NA'
252061    );
252062 
252063    xla_ae_lines_pkg.set_ccid(
252064     p_code_combination_id          => l_ccid
252065   , p_value_type_code              => l_adr_value_type_code
252066   , p_transaction_coa_id           => l_adr_transaction_coa_id
252067   , p_accounting_coa_id            => l_adr_accounting_coa_id
252068   , p_adr_code                     => 'PI_INTEROG_REVENUE'
252069   , p_adr_type_code                => 'S'
252070   , p_component_type               => l_component_type
252071   , p_component_code               => l_component_code
252072   , p_component_type_code          => l_component_type_code
252073   , p_component_appl_id            => l_component_appl_id
252074   , p_amb_context_code             => l_amb_context_code
252075   , p_side                         => 'NA'
252076   );
252077 
252078 
252079    --
252080    --
252081    END IF;
252082 
252083        --
252084        -- Update the line information that should be overwritten
252085        --
252086        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
252087                                          p_header_num   => 1);
252088        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
252089 
252090        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
252091 
252092        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
252093           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
252094        END IF;
252095 
252096       --
252097       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
252098       --
252099       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
252100           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
252101       ELSE
252102           ---------------------------------------------------------------------------------------------------
252103           -- 4262811a Switch Sign
252104           ---------------------------------------------------------------------------------------------------
252105           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
252106           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
252107                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
252108           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
252109                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
252110           -- 5132302
252111           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
252112                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
252113 
252114       END IF;
252115 
252116       -- 4955764
252117       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
252118       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
252119 
252120 
252121       XLA_AE_LINES_PKG.ValidateCurrentLine;
252122       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
252123 
252124       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
252125                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
252126                ,p_balance_type_code => l_balance_type_code);
252127 
252128    END IF;
252129 
252130    -----------------------------------------------------------------------------------------
252131    -- 4262811 Multiperiod Accounting
252132    -----------------------------------------------------------------------------------------
252133      -- No MPA option is assigned.
252134 
252135 
252136 END IF;
252137 END IF;
252138 --
252139 
252140 --
252141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
252142    trace
252143       (p_msg      => 'END of AcctLineType_453'
252144       ,p_level    => C_LEVEL_PROCEDURE
252145       ,p_module   => l_log_module);
252146 END IF;
252147 --
252148 EXCEPTION
252149   WHEN xla_exceptions_pkg.application_exception THEN
252150       RAISE;
252151   WHEN OTHERS THEN
252152        xla_exceptions_pkg.raise_message
252153            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_453');
252154 END AcctLineType_453;
252155 --
252156 
252157 ---------------------------------------
252158 --
252159 -- PRIVATE FUNCTION
252160 --         AcctLineType_454
252161 --
252162 ---------------------------------------
252163 PROCEDURE AcctLineType_454 (
252164   p_application_id        IN NUMBER
252165  ,p_event_id              IN NUMBER
252166  ,p_calculate_acctd_flag  IN VARCHAR2
252167  ,p_calculate_g_l_flag    IN VARCHAR2
252168  ,p_actual_flag           IN OUT VARCHAR2
252169  ,p_balance_type_code     OUT VARCHAR2
252170  ,p_gain_or_loss_ref      OUT VARCHAR2
252171  
252172 --TRANSACTION_ID
252173  , p_source_1            IN NUMBER
252174 --Item Concatenated Segments
252175  , p_source_2            IN VARCHAR2
252176 --Transaction Quantity
252177  , p_source_3            IN NUMBER
252178 --Transaction Unit of Measure Code
252179  , p_source_4            IN VARCHAR2
252180 --Inventory Transaction Type Description
252181  , p_source_5            IN VARCHAR2
252182 --Interorg Revenue Account
252183  , p_source_33            IN NUMBER
252184 --DISTRIBUTION_IDENTIFIER
252185  , p_source_84            IN NUMBER
252186 --Distribution Type
252187  , p_source_85            IN VARCHAR2
252188  , p_source_85_meaning    IN VARCHAR2
252189 --Entered Currency Code
252190  , p_source_88            IN VARCHAR2
252191 --Entered Amount
252192  , p_source_91            IN NUMBER
252193 --Currency Conversion Date
252194  , p_source_92            IN DATE
252195 --Currency Conversion Rate
252196  , p_source_93            IN NUMBER
252197 --Currency Conversion Type
252198  , p_source_94            IN VARCHAR2
252199 --Accounted Amount
252200  , p_source_95            IN NUMBER
252201 --Accounting Line Type
252202  , p_source_97            IN NUMBER
252203 )
252204 IS
252205 
252206 l_component_type              VARCHAR2(80);
252207 l_component_code              VARCHAR2(30);
252208 l_component_type_code         VARCHAR2(1);
252209 l_component_appl_id           INTEGER;
252210 l_amb_context_code            VARCHAR2(30);
252211 l_entity_code                 VARCHAR2(30);
252212 l_event_class_code            VARCHAR2(30);
252213 l_ae_header_id                NUMBER;
252214 l_event_type_code             VARCHAR2(30);
252215 l_line_definition_code        VARCHAR2(30);
252216 l_line_definition_owner_code  VARCHAR2(1);
252217 --
252218 -- adr variables
252219 l_segment                     VARCHAR2(30);
252220 l_ccid                        NUMBER;
252221 l_adr_transaction_coa_id      NUMBER;
252222 l_adr_accounting_coa_id       NUMBER;
252223 l_adr_flexfield_segment_code  VARCHAR2(30);
252224 l_adr_flex_value_set_id       NUMBER;
252225 l_adr_value_type_code         VARCHAR2(30);
252226 l_adr_value_combination_id    NUMBER;
252227 l_adr_value_segment_code      VARCHAR2(30);
252228 
252229 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
252230 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
252231 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
252232 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
252233 
252234 -- 4262811 Variables ------------------------------------------------------------------------------------------
252235 l_entered_amt_idx             NUMBER;
252236 l_accted_amt_idx              NUMBER;
252237 l_acc_rev_flag                VARCHAR2(1);
252238 l_accrual_line_num            NUMBER;
252239 l_tmp_amt                     NUMBER;
252240 l_acc_rev_natural_side_code   VARCHAR2(1);
252241 
252242 l_num_entries                 NUMBER;
252243 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
252244 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
252245 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
252246 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
252247 l_recog_line_1                NUMBER;
252248 l_recog_line_2                NUMBER;
252249 
252250 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
252251 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
252252 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
252253 
252254 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
252255 
252256 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
252257 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
252258 
252259 ---------------------------------------------------------------------------------------------------------------
252260 
252261 
252262 --
252263 -- bulk performance
252264 --
252265 l_balance_type_code           VARCHAR2(1);
252266 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
252267 l_log_module                  VARCHAR2(240);
252268 
252269 --
252270 -- Upgrade strategy
252271 --
252272 l_actual_upg_option           VARCHAR2(1);
252273 l_enc_upg_option           VARCHAR2(1);
252274 
252275 --
252276 BEGIN
252277 --
252278 IF g_log_enabled THEN
252279       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_454';
252280 END IF;
252281 --
252282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
252283 
252284       trace
252285          (p_msg      => 'BEGIN of AcctLineType_454'
252286          ,p_level    => C_LEVEL_PROCEDURE
252287          ,p_module   => l_log_module);
252288 
252289 END IF;
252290 --
252291 l_component_type             := 'AMB_JLT';
252292 l_component_code             := 'PI_REVENUE_211FM';
252293 l_component_type_code        := 'S';
252294 l_component_appl_id          :=  707;
252295 l_amb_context_code           := 'DEFAULT';
252296 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
252297 l_event_class_code           := 'USER_DEFINE';
252298 l_event_type_code            := 'UFOB_SHIP_SENDER_SHIP_TP';
252299 l_line_definition_owner_code := 'S';
252300 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
252301 --
252302 l_balance_type_code          := 'A';
252303 l_segment                     := NULL;
252304 l_ccid                        := NULL;
252305 l_adr_transaction_coa_id      := NULL;
252306 l_adr_accounting_coa_id       := NULL;
252307 l_adr_flexfield_segment_code  := NULL;
252308 l_adr_flex_value_set_id       := NULL;
252309 l_adr_value_type_code         := NULL;
252310 l_adr_value_combination_id    := NULL;
252311 l_adr_value_segment_code      := NULL;
252312 
252313 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
252314 l_bflow_class_code           := '';    -- 4219869 Business Flow
252315 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
252316 l_budgetary_control_flag     := 'N';
252317 
252318 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
252319 l_bflow_applied_to_amt       := NULL; -- 5132302
252320 l_entered_amt_idx            := NULL;          -- 4262811
252321 l_accted_amt_idx             := NULL;          -- 4262811
252322 l_acc_rev_flag               := NULL;          -- 4262811
252323 l_accrual_line_num           := NULL;          -- 4262811
252324 l_tmp_amt                    := NULL;          -- 4262811
252325 --
252326  
252327 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
252328     l_balance_type_code <> 'B' THEN
252329 IF NVL(p_source_97,9E125) =  1
252330  THEN 
252331 
252332    --
252333    XLA_AE_LINES_PKG.SetNewLine;
252334 
252335    p_balance_type_code          := l_balance_type_code;
252336    -- set the flag so later we will know whether the gain loss line needs to be created
252337    
252338    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
252339      p_actual_flag :='A';
252340    END IF;
252341 
252342    --
252343    -- bulk performance
252344    --
252345    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
252346                                       p_header_num   => 0); -- 4262811
252347    --
252348    -- set accounting line options
252349    --
252350    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
252351            p_natural_side_code          => 'C'
252352          , p_gain_or_loss_flag          => 'N'
252353          , p_gl_transfer_mode_code      => 'S'
252354          , p_acct_entry_type_code       => 'A'
252355          , p_switch_side_flag           => 'Y'
252356          , p_merge_duplicate_code       => 'N'
252357          );
252358    --
252359    l_acc_rev_natural_side_code := 'D';  -- 4262811
252360    -- 
252361    --
252362    -- set accounting line type info
252363    --
252364    xla_ae_lines_pkg.SetAcctLineType
252365       (p_component_type             => l_component_type
252366       ,p_event_type_code            => l_event_type_code
252367       ,p_line_definition_owner_code => l_line_definition_owner_code
252368       ,p_line_definition_code       => l_line_definition_code
252369       ,p_accounting_line_code       => l_component_code
252370       ,p_accounting_line_type_code  => l_component_type_code
252371       ,p_accounting_line_appl_id    => l_component_appl_id
252372       ,p_amb_context_code           => l_amb_context_code
252373       ,p_entity_code                => l_entity_code
252374       ,p_event_class_code           => l_event_class_code);
252375    --
252376    -- set accounting class
252377    --
252378    xla_ae_lines_pkg.SetAcctClass(
252379            p_accounting_class_code  => 'REVENUE'
252380          , p_ae_header_id           => l_ae_header_id
252381          );
252382 
252383    --
252384    -- set rounding class
252385    --
252386    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
252387                       'REVENUE';
252388 
252389    --
252390    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
252391    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
252392    --
252393    -- bulk performance
252394    --
252395    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
252396 
252397    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
252398       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
252399 
252400    -- 4955764
252401    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
252402       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
252403 
252404    -- 4458381 Public Sector Enh
252405    
252406    --
252407    -- set accounting attributes for the line type
252408    --
252409    l_entered_amt_idx := 3;
252410    l_accted_amt_idx  := 8;
252411    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
252412    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
252413    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
252414    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
252415    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
252416    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
252417    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
252418    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
252419    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
252420    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
252421    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
252422    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
252423    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
252424    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
252425    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
252426    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
252427    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
252428 
252429    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
252430    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
252431 
252432    ---------------------------------------------------------------------------------------------------------------
252433    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
252434    ---------------------------------------------------------------------------------------------------------------
252435    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
252436 
252437    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
252438    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
252439 
252440    IF xla_accounting_cache_pkg.GetValueChar
252441          (p_source_code         => 'LEDGER_CATEGORY_CODE'
252442          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
252443    AND l_bflow_method_code = 'PRIOR_ENTRY'
252444 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
252445    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
252446          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
252447        )
252448    THEN
252449          xla_ae_lines_pkg.BflowUpgEntry
252450            (p_business_method_code    => l_bflow_method_code
252451            ,p_business_class_code     => l_bflow_class_code
252452            ,p_balance_type            => l_balance_type_code);
252453    ELSE
252454       NULL;
252455 -- No business flow processing for business flow method of NONE.
252456    END IF;
252457 
252458    --
252459    -- call analytical criteria
252460    --
252461    
252462    --
252463    -- call description
252464    --
252465    
252466 xla_ae_lines_pkg.SetLineDescription(
252467    p_ae_header_id => l_ae_header_id
252468   ,p_description  => Description_1 (
252469      p_application_id         => p_application_id
252470    , p_ae_header_id           => l_ae_header_id 
252471 , p_source_1 => p_source_1
252472 , p_source_2 => p_source_2
252473 , p_source_3 => p_source_3
252474 , p_source_4 => p_source_4
252475 , p_source_5 => p_source_5
252476    )
252477 );
252478 
252479 
252480    --
252481    -- call ADRs
252482    -- Bug 4922099
252483    --
252484    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
252485         (NVL(l_actual_upg_option, 'N') = 'O') OR
252486         (NVL(l_enc_upg_option, 'N') = 'O')
252487       )
252488    THEN
252489    NULL;
252490    --
252491    --
252492    
252493   l_ccid := AcctDerRule_18(
252494            p_application_id           => p_application_id
252495          , p_ae_header_id             => l_ae_header_id 
252496 , p_source_33 => p_source_33
252497          , x_transaction_coa_id       => l_adr_transaction_coa_id
252498          , x_accounting_coa_id        => l_adr_accounting_coa_id
252499          , x_value_type_code          => l_adr_value_type_code
252500          , p_side                     => 'NA'
252501    );
252502 
252503    xla_ae_lines_pkg.set_ccid(
252504     p_code_combination_id          => l_ccid
252505   , p_value_type_code              => l_adr_value_type_code
252506   , p_transaction_coa_id           => l_adr_transaction_coa_id
252507   , p_accounting_coa_id            => l_adr_accounting_coa_id
252508   , p_adr_code                     => 'PI_INTEROG_REVENUE'
252509   , p_adr_type_code                => 'S'
252510   , p_component_type               => l_component_type
252511   , p_component_code               => l_component_code
252512   , p_component_type_code          => l_component_type_code
252513   , p_component_appl_id            => l_component_appl_id
252514   , p_amb_context_code             => l_amb_context_code
252515   , p_side                         => 'NA'
252516   );
252517 
252518 
252519    --
252520    --
252521    END IF;
252522    --
252523    -- Bug 4922099
252524    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
252525           (NVL(l_enc_upg_option, 'N') = 'O')
252526         ) AND
252527         (l_bflow_method_code = 'PRIOR_ENTRY')
252528       )
252529    THEN
252530       IF
252531       --
252532       1 = 2
252533       --
252534       THEN
252535       xla_accounting_err_pkg.build_message
252536                                     (p_appli_s_name            => 'XLA'
252537                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
252538                                     ,p_token_1                 => 'LINE_NUMBER'
252539                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
252540                                     ,p_token_2                 => 'LINE_TYPE_NAME'
252541                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
252542                                                                              l_component_type
252543                                                                             ,l_component_code
252544                                                                             ,l_component_type_code
252545                                                                             ,l_component_appl_id
252546                                                                             ,l_amb_context_code
252547                                                                             ,l_entity_code
252548                                                                             ,l_event_class_code
252549                                                                            )
252550                                     ,p_token_3                 => 'OWNER'
252551                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
252552                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
252553                                                                           ,p_lookup_code    => l_component_type_code
252554                                                                          )
252555                                     ,p_token_4                 => 'PRODUCT_NAME'
252556                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
252557                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
252558                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
252559                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
252560                                     ,p_ae_header_id            =>  NULL
252561                                        );
252562 
252563         IF (C_LEVEL_ERROR>= g_log_level) THEN
252564                  trace
252565                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
252566                       ,p_level    => C_LEVEL_ERROR
252567                       ,p_module   => l_log_module);
252568         END IF;
252569       END IF;
252570    END IF;
252571    --
252572    --
252573    ------------------------------------------------------------------------------------------------
252574    -- 4219869 Business Flow
252575    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
252576    -- Prior Entry.  Currently, the following code is always generated.
252577    ------------------------------------------------------------------------------------------------
252578    XLA_AE_LINES_PKG.ValidateCurrentLine;
252579 
252580    ------------------------------------------------------------------------------------
252581    -- 4219869 Business Flow
252582    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
252583    ------------------------------------------------------------------------------------
252584    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
252585 
252586    ----------------------------------------------------------------------------------
252587    -- 4219869 Business Flow
252588    -- Update journal entry status -- Need to generate this within IF <condition>
252589    ----------------------------------------------------------------------------------
252590    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
252591          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
252592          ,p_balance_type_code => l_balance_type_code
252593          );
252594 
252595    -------------------------------------------------------------------------------------------
252596    -- 4262811 - Generate the Accrual Reversal lines
252597    -------------------------------------------------------------------------------------------
252598    BEGIN
252599       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
252600                               (g_array_event(p_event_id).array_value_num('header_index'));
252601       IF l_acc_rev_flag IS NULL THEN
252602          l_acc_rev_flag := 'N';
252603       END IF;
252604    EXCEPTION
252605       WHEN OTHERS THEN
252606          l_acc_rev_flag := 'N';
252607    END;
252608    --
252609    IF (l_acc_rev_flag = 'Y') THEN
252610 
252611        -- 4645092  ------------------------------------------------------------------------------
252612        -- To allow MPA report to determine if it should generate report process
252613        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
252614        ------------------------------------------------------------------------------------------
252615 
252616        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
252617        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
252618    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
252619    -- call ADRs
252620    -- Bug 4922099
252621    --
252622    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
252623         (NVL(l_actual_upg_option, 'N') = 'O') OR
252624         (NVL(l_enc_upg_option, 'N') = 'O')
252625       )
252626    THEN
252627    NULL;
252628    --
252629    --
252630    
252631   l_ccid := AcctDerRule_18(
252632            p_application_id           => p_application_id
252633          , p_ae_header_id             => l_ae_header_id 
252634 , p_source_33 => p_source_33
252635          , x_transaction_coa_id       => l_adr_transaction_coa_id
252636          , x_accounting_coa_id        => l_adr_accounting_coa_id
252637          , x_value_type_code          => l_adr_value_type_code
252638          , p_side                     => 'NA'
252639    );
252640 
252641    xla_ae_lines_pkg.set_ccid(
252642     p_code_combination_id          => l_ccid
252643   , p_value_type_code              => l_adr_value_type_code
252644   , p_transaction_coa_id           => l_adr_transaction_coa_id
252645   , p_accounting_coa_id            => l_adr_accounting_coa_id
252646   , p_adr_code                     => 'PI_INTEROG_REVENUE'
252647   , p_adr_type_code                => 'S'
252648   , p_component_type               => l_component_type
252649   , p_component_code               => l_component_code
252650   , p_component_type_code          => l_component_type_code
252651   , p_component_appl_id            => l_component_appl_id
252652   , p_amb_context_code             => l_amb_context_code
252653   , p_side                         => 'NA'
252654   );
252655 
252656 
252657    --
252658    --
252659    END IF;
252660 
252661        --
252662        -- Update the line information that should be overwritten
252663        --
252664        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
252665                                          p_header_num   => 1);
252666        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
252667 
252668        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
252669 
252670        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
252671           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
252672        END IF;
252673 
252674       --
252675       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
252676       --
252677       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
252678           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
252679       ELSE
252680           ---------------------------------------------------------------------------------------------------
252681           -- 4262811a Switch Sign
252682           ---------------------------------------------------------------------------------------------------
252683           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
252684           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
252685                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
252686           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
252687                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
252688           -- 5132302
252689           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
252690                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
252691 
252692       END IF;
252693 
252694       -- 4955764
252695       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
252696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
252697 
252698 
252699       XLA_AE_LINES_PKG.ValidateCurrentLine;
252700       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
252701 
252702       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
252703                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
252704                ,p_balance_type_code => l_balance_type_code);
252705 
252706    END IF;
252707 
252708    -----------------------------------------------------------------------------------------
252709    -- 4262811 Multiperiod Accounting
252710    -----------------------------------------------------------------------------------------
252711      -- No MPA option is assigned.
252712 
252713 
252714 END IF;
252715 END IF;
252716 --
252717 
252718 --
252719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
252720    trace
252721       (p_msg      => 'END of AcctLineType_454'
252722       ,p_level    => C_LEVEL_PROCEDURE
252723       ,p_module   => l_log_module);
252724 END IF;
252725 --
252726 EXCEPTION
252727   WHEN xla_exceptions_pkg.application_exception THEN
252728       RAISE;
252729   WHEN OTHERS THEN
252730        xla_exceptions_pkg.raise_message
252731            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_454');
252732 END AcctLineType_454;
252733 --
252734 
252735 ---------------------------------------
252736 --
252737 -- PRIVATE FUNCTION
252738 --         AcctLineType_455
252739 --
252740 ---------------------------------------
252741 PROCEDURE AcctLineType_455 (
252742   p_application_id        IN NUMBER
252743  ,p_event_id              IN NUMBER
252744  ,p_calculate_acctd_flag  IN VARCHAR2
252745  ,p_calculate_g_l_flag    IN VARCHAR2
252746  ,p_actual_flag           IN OUT VARCHAR2
252747  ,p_balance_type_code     OUT VARCHAR2
252748  ,p_gain_or_loss_ref      OUT VARCHAR2
252749  
252750 --Interorg Revenue Account
252751  , p_source_33            IN NUMBER
252752 --DISTRIBUTION_IDENTIFIER
252753  , p_source_84            IN NUMBER
252754 --Distribution Type
252755  , p_source_85            IN VARCHAR2
252756  , p_source_85_meaning    IN VARCHAR2
252757 --Entered Currency Code
252758  , p_source_88            IN VARCHAR2
252759 --Entered Amount
252760  , p_source_91            IN NUMBER
252761 --Currency Conversion Date
252762  , p_source_92            IN DATE
252763 --Currency Conversion Rate
252764  , p_source_93            IN NUMBER
252765 --Currency Conversion Type
252766  , p_source_94            IN VARCHAR2
252767 --Accounted Amount
252768  , p_source_95            IN NUMBER
252769 --Accounting Line Type
252770  , p_source_97            IN NUMBER
252771 )
252772 IS
252773 
252774 l_component_type              VARCHAR2(80);
252775 l_component_code              VARCHAR2(30);
252776 l_component_type_code         VARCHAR2(1);
252777 l_component_appl_id           INTEGER;
252778 l_amb_context_code            VARCHAR2(30);
252779 l_entity_code                 VARCHAR2(30);
252780 l_event_class_code            VARCHAR2(30);
252781 l_ae_header_id                NUMBER;
252782 l_event_type_code             VARCHAR2(30);
252783 l_line_definition_code        VARCHAR2(30);
252784 l_line_definition_owner_code  VARCHAR2(1);
252785 --
252786 -- adr variables
252787 l_segment                     VARCHAR2(30);
252788 l_ccid                        NUMBER;
252789 l_adr_transaction_coa_id      NUMBER;
252790 l_adr_accounting_coa_id       NUMBER;
252791 l_adr_flexfield_segment_code  VARCHAR2(30);
252792 l_adr_flex_value_set_id       NUMBER;
252793 l_adr_value_type_code         VARCHAR2(30);
252794 l_adr_value_combination_id    NUMBER;
252795 l_adr_value_segment_code      VARCHAR2(30);
252796 
252797 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
252798 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
252799 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
252800 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
252801 
252802 -- 4262811 Variables ------------------------------------------------------------------------------------------
252803 l_entered_amt_idx             NUMBER;
252804 l_accted_amt_idx              NUMBER;
252805 l_acc_rev_flag                VARCHAR2(1);
252806 l_accrual_line_num            NUMBER;
252807 l_tmp_amt                     NUMBER;
252808 l_acc_rev_natural_side_code   VARCHAR2(1);
252809 
252810 l_num_entries                 NUMBER;
252811 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
252812 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
252813 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
252814 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
252815 l_recog_line_1                NUMBER;
252816 l_recog_line_2                NUMBER;
252817 
252818 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
252819 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
252820 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
252821 
252822 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
252823 
252824 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
252825 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
252826 
252827 ---------------------------------------------------------------------------------------------------------------
252828 
252829 
252830 --
252831 -- bulk performance
252832 --
252833 l_balance_type_code           VARCHAR2(1);
252834 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
252835 l_log_module                  VARCHAR2(240);
252836 
252837 --
252838 -- Upgrade strategy
252839 --
252840 l_actual_upg_option           VARCHAR2(1);
252841 l_enc_upg_option           VARCHAR2(1);
252842 
252843 --
252844 BEGIN
252845 --
252846 IF g_log_enabled THEN
252847       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_455';
252848 END IF;
252849 --
252850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
252851 
252852       trace
252853          (p_msg      => 'BEGIN of AcctLineType_455'
252854          ,p_level    => C_LEVEL_PROCEDURE
252855          ,p_module   => l_log_module);
252856 
252857 END IF;
252858 --
252859 l_component_type             := 'AMB_JLT';
252860 l_component_code             := 'PI_REV_PAIR_REC';
252861 l_component_type_code        := 'S';
252862 l_component_appl_id          :=  707;
252863 l_amb_context_code           := 'DEFAULT';
252864 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
252865 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
252866 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
252867 l_line_definition_owner_code := 'S';
252868 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_NTP';
252869 --
252870 l_balance_type_code          := 'A';
252871 l_segment                     := NULL;
252872 l_ccid                        := NULL;
252873 l_adr_transaction_coa_id      := NULL;
252874 l_adr_accounting_coa_id       := NULL;
252875 l_adr_flexfield_segment_code  := NULL;
252876 l_adr_flex_value_set_id       := NULL;
252877 l_adr_value_type_code         := NULL;
252878 l_adr_value_combination_id    := NULL;
252879 l_adr_value_segment_code      := NULL;
252880 
252881 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
252882 l_bflow_class_code           := '';    -- 4219869 Business Flow
252883 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
252884 l_budgetary_control_flag     := 'N';
252885 
252886 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
252887 l_bflow_applied_to_amt       := NULL; -- 5132302
252888 l_entered_amt_idx            := NULL;          -- 4262811
252889 l_accted_amt_idx             := NULL;          -- 4262811
252890 l_acc_rev_flag               := NULL;          -- 4262811
252891 l_accrual_line_num           := NULL;          -- 4262811
252892 l_tmp_amt                    := NULL;          -- 4262811
252893 --
252894  
252895 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
252896     l_balance_type_code <> 'B' THEN
252897 IF NVL(p_source_97,9E125) =  1
252898  THEN 
252899 
252900    --
252901    XLA_AE_LINES_PKG.SetNewLine;
252902 
252903    p_balance_type_code          := l_balance_type_code;
252904    -- set the flag so later we will know whether the gain loss line needs to be created
252905    
252906    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
252907      p_actual_flag :='A';
252908    END IF;
252909 
252910    --
252911    -- bulk performance
252912    --
252913    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
252914                                       p_header_num   => 0); -- 4262811
252915    --
252916    -- set accounting line options
252917    --
252918    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
252919            p_natural_side_code          => 'D'
252920          , p_gain_or_loss_flag          => 'N'
252921          , p_gl_transfer_mode_code      => 'S'
252922          , p_acct_entry_type_code       => 'A'
252923          , p_switch_side_flag           => 'Y'
252924          , p_merge_duplicate_code       => 'N'
252925          );
252926    --
252927    l_acc_rev_natural_side_code := 'C';  -- 4262811
252928    -- 
252929    --
252930    -- set accounting line type info
252931    --
252932    xla_ae_lines_pkg.SetAcctLineType
252933       (p_component_type             => l_component_type
252934       ,p_event_type_code            => l_event_type_code
252935       ,p_line_definition_owner_code => l_line_definition_owner_code
252936       ,p_line_definition_code       => l_line_definition_code
252937       ,p_accounting_line_code       => l_component_code
252938       ,p_accounting_line_type_code  => l_component_type_code
252939       ,p_accounting_line_appl_id    => l_component_appl_id
252940       ,p_amb_context_code           => l_amb_context_code
252941       ,p_entity_code                => l_entity_code
252942       ,p_event_class_code           => l_event_class_code);
252943    --
252944    -- set accounting class
252945    --
252946    xla_ae_lines_pkg.SetAcctClass(
252947            p_accounting_class_code  => 'REVENUE'
252948          , p_ae_header_id           => l_ae_header_id
252949          );
252950 
252951    --
252952    -- set rounding class
252953    --
252954    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
252955                       'REVENUE';
252956 
252957    --
252958    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
252959    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
252960    --
252961    -- bulk performance
252962    --
252963    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
252964 
252965    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
252966       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
252967 
252968    -- 4955764
252969    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
252970       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
252971 
252972    -- 4458381 Public Sector Enh
252973    
252974    --
252975    -- set accounting attributes for the line type
252976    --
252977    l_entered_amt_idx := 3;
252978    l_accted_amt_idx  := 8;
252979    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
252980    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
252981    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
252982    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
252983    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
252984    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
252985    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
252986    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
252987    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
252988    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
252989    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
252990    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
252991    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
252992    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
252993    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
252994    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
252995    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
252996 
252997    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
252998    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
252999 
253000    ---------------------------------------------------------------------------------------------------------------
253001    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
253002    ---------------------------------------------------------------------------------------------------------------
253003    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
253004 
253005    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
253006    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
253007 
253008    IF xla_accounting_cache_pkg.GetValueChar
253009          (p_source_code         => 'LEDGER_CATEGORY_CODE'
253010          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
253011    AND l_bflow_method_code = 'PRIOR_ENTRY'
253012 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
253013    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
253014          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
253015        )
253016    THEN
253017          xla_ae_lines_pkg.BflowUpgEntry
253018            (p_business_method_code    => l_bflow_method_code
253019            ,p_business_class_code     => l_bflow_class_code
253020            ,p_balance_type            => l_balance_type_code);
253021    ELSE
253022       NULL;
253023 -- No business flow processing for business flow method of NONE.
253024    END IF;
253025 
253026    --
253027    -- call analytical criteria
253028    --
253029    
253030    --
253031    -- call description
253032    --
253033    -- No description or it is inherited.
253034    --
253035    -- call ADRs
253036    -- Bug 4922099
253037    --
253038    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
253039         (NVL(l_actual_upg_option, 'N') = 'O') OR
253040         (NVL(l_enc_upg_option, 'N') = 'O')
253041       )
253042    THEN
253043    NULL;
253044    --
253045    --
253046    
253047   l_ccid := AcctDerRule_18(
253048            p_application_id           => p_application_id
253049          , p_ae_header_id             => l_ae_header_id 
253050 , p_source_33 => p_source_33
253051          , x_transaction_coa_id       => l_adr_transaction_coa_id
253052          , x_accounting_coa_id        => l_adr_accounting_coa_id
253053          , x_value_type_code          => l_adr_value_type_code
253054          , p_side                     => 'NA'
253055    );
253056 
253057    xla_ae_lines_pkg.set_ccid(
253058     p_code_combination_id          => l_ccid
253059   , p_value_type_code              => l_adr_value_type_code
253060   , p_transaction_coa_id           => l_adr_transaction_coa_id
253061   , p_accounting_coa_id            => l_adr_accounting_coa_id
253062   , p_adr_code                     => 'PI_INTEROG_REVENUE'
253063   , p_adr_type_code                => 'S'
253064   , p_component_type               => l_component_type
253065   , p_component_code               => l_component_code
253066   , p_component_type_code          => l_component_type_code
253067   , p_component_appl_id            => l_component_appl_id
253068   , p_amb_context_code             => l_amb_context_code
253069   , p_side                         => 'NA'
253070   );
253071 
253072 
253073    --
253074    --
253075    END IF;
253076    --
253077    -- Bug 4922099
253078    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
253079           (NVL(l_enc_upg_option, 'N') = 'O')
253080         ) AND
253081         (l_bflow_method_code = 'PRIOR_ENTRY')
253082       )
253083    THEN
253084       IF
253085       --
253086       1 = 2
253087       --
253088       THEN
253089       xla_accounting_err_pkg.build_message
253090                                     (p_appli_s_name            => 'XLA'
253091                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
253092                                     ,p_token_1                 => 'LINE_NUMBER'
253093                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
253094                                     ,p_token_2                 => 'LINE_TYPE_NAME'
253095                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
253096                                                                              l_component_type
253097                                                                             ,l_component_code
253098                                                                             ,l_component_type_code
253099                                                                             ,l_component_appl_id
253100                                                                             ,l_amb_context_code
253101                                                                             ,l_entity_code
253102                                                                             ,l_event_class_code
253103                                                                            )
253104                                     ,p_token_3                 => 'OWNER'
253105                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
253106                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
253107                                                                           ,p_lookup_code    => l_component_type_code
253108                                                                          )
253109                                     ,p_token_4                 => 'PRODUCT_NAME'
253110                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
253111                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
253112                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
253113                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
253114                                     ,p_ae_header_id            =>  NULL
253115                                        );
253116 
253117         IF (C_LEVEL_ERROR>= g_log_level) THEN
253118                  trace
253119                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
253120                       ,p_level    => C_LEVEL_ERROR
253121                       ,p_module   => l_log_module);
253122         END IF;
253123       END IF;
253124    END IF;
253125    --
253126    --
253127    ------------------------------------------------------------------------------------------------
253128    -- 4219869 Business Flow
253129    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
253130    -- Prior Entry.  Currently, the following code is always generated.
253131    ------------------------------------------------------------------------------------------------
253132    XLA_AE_LINES_PKG.ValidateCurrentLine;
253133 
253134    ------------------------------------------------------------------------------------
253135    -- 4219869 Business Flow
253136    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
253137    ------------------------------------------------------------------------------------
253138    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
253139 
253140    ----------------------------------------------------------------------------------
253141    -- 4219869 Business Flow
253142    -- Update journal entry status -- Need to generate this within IF <condition>
253143    ----------------------------------------------------------------------------------
253144    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
253145          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
253146          ,p_balance_type_code => l_balance_type_code
253147          );
253148 
253149    -------------------------------------------------------------------------------------------
253150    -- 4262811 - Generate the Accrual Reversal lines
253151    -------------------------------------------------------------------------------------------
253152    BEGIN
253153       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
253154                               (g_array_event(p_event_id).array_value_num('header_index'));
253155       IF l_acc_rev_flag IS NULL THEN
253156          l_acc_rev_flag := 'N';
253157       END IF;
253158    EXCEPTION
253159       WHEN OTHERS THEN
253160          l_acc_rev_flag := 'N';
253161    END;
253162    --
253163    IF (l_acc_rev_flag = 'Y') THEN
253164 
253165        -- 4645092  ------------------------------------------------------------------------------
253166        -- To allow MPA report to determine if it should generate report process
253167        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
253168        ------------------------------------------------------------------------------------------
253169 
253170        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
253171        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
253172    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
253173    -- call ADRs
253174    -- Bug 4922099
253175    --
253176    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
253177         (NVL(l_actual_upg_option, 'N') = 'O') OR
253178         (NVL(l_enc_upg_option, 'N') = 'O')
253179       )
253180    THEN
253181    NULL;
253182    --
253183    --
253184    
253185   l_ccid := AcctDerRule_18(
253186            p_application_id           => p_application_id
253187          , p_ae_header_id             => l_ae_header_id 
253188 , p_source_33 => p_source_33
253189          , x_transaction_coa_id       => l_adr_transaction_coa_id
253190          , x_accounting_coa_id        => l_adr_accounting_coa_id
253191          , x_value_type_code          => l_adr_value_type_code
253192          , p_side                     => 'NA'
253193    );
253194 
253195    xla_ae_lines_pkg.set_ccid(
253196     p_code_combination_id          => l_ccid
253197   , p_value_type_code              => l_adr_value_type_code
253198   , p_transaction_coa_id           => l_adr_transaction_coa_id
253199   , p_accounting_coa_id            => l_adr_accounting_coa_id
253200   , p_adr_code                     => 'PI_INTEROG_REVENUE'
253201   , p_adr_type_code                => 'S'
253202   , p_component_type               => l_component_type
253203   , p_component_code               => l_component_code
253204   , p_component_type_code          => l_component_type_code
253205   , p_component_appl_id            => l_component_appl_id
253206   , p_amb_context_code             => l_amb_context_code
253207   , p_side                         => 'NA'
253208   );
253209 
253210 
253211    --
253212    --
253213    END IF;
253214 
253215        --
253216        -- Update the line information that should be overwritten
253217        --
253218        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
253219                                          p_header_num   => 1);
253220        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
253221 
253222        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
253223 
253224        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
253225           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
253226        END IF;
253227 
253228       --
253229       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
253230       --
253231       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
253232           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
253233       ELSE
253234           ---------------------------------------------------------------------------------------------------
253235           -- 4262811a Switch Sign
253236           ---------------------------------------------------------------------------------------------------
253237           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
253238           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
253239                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
253240           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
253241                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
253242           -- 5132302
253243           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
253244                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
253245 
253246       END IF;
253247 
253248       -- 4955764
253249       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
253250       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
253251 
253252 
253253       XLA_AE_LINES_PKG.ValidateCurrentLine;
253254       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
253255 
253256       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
253257                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
253258                ,p_balance_type_code => l_balance_type_code);
253259 
253260    END IF;
253261 
253262    -----------------------------------------------------------------------------------------
253263    -- 4262811 Multiperiod Accounting
253264    -----------------------------------------------------------------------------------------
253265      -- No MPA option is assigned.
253266 
253267 
253268 END IF;
253269 END IF;
253270 --
253271 
253272 --
253273 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
253274    trace
253275       (p_msg      => 'END of AcctLineType_455'
253276       ,p_level    => C_LEVEL_PROCEDURE
253277       ,p_module   => l_log_module);
253278 END IF;
253279 --
253280 EXCEPTION
253281   WHEN xla_exceptions_pkg.application_exception THEN
253282       RAISE;
253283   WHEN OTHERS THEN
253284        xla_exceptions_pkg.raise_message
253285            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_455');
253286 END AcctLineType_455;
253287 --
253288 
253289 ---------------------------------------
253290 --
253291 -- PRIVATE FUNCTION
253292 --         AcctLineType_456
253293 --
253294 ---------------------------------------
253295 PROCEDURE AcctLineType_456 (
253296   p_application_id        IN NUMBER
253297  ,p_event_id              IN NUMBER
253298  ,p_calculate_acctd_flag  IN VARCHAR2
253299  ,p_calculate_g_l_flag    IN VARCHAR2
253300  ,p_actual_flag           IN OUT VARCHAR2
253301  ,p_balance_type_code     OUT VARCHAR2
253302  ,p_gain_or_loss_ref      OUT VARCHAR2
253303  
253304 --TRANSACTION_ID
253305  , p_source_1            IN NUMBER
253306 --Item Concatenated Segments
253307  , p_source_2            IN VARCHAR2
253308 --Transaction Quantity
253309  , p_source_3            IN NUMBER
253310 --Transaction Unit of Measure Code
253311  , p_source_4            IN VARCHAR2
253312 --Inventory Transaction Type Description
253313  , p_source_5            IN VARCHAR2
253314 --Interorg Revenue Account
253315  , p_source_33            IN NUMBER
253316 --DISTRIBUTION_IDENTIFIER
253317  , p_source_84            IN NUMBER
253318 --Distribution Type
253319  , p_source_85            IN VARCHAR2
253320  , p_source_85_meaning    IN VARCHAR2
253321 --Entered Currency Code
253322  , p_source_88            IN VARCHAR2
253323 --Entered Amount
253324  , p_source_91            IN NUMBER
253325 --Currency Conversion Date
253326  , p_source_92            IN DATE
253327 --Currency Conversion Rate
253328  , p_source_93            IN NUMBER
253329 --Currency Conversion Type
253330  , p_source_94            IN VARCHAR2
253331 --Accounted Amount
253332  , p_source_95            IN NUMBER
253333 --Accounting Line Type
253334  , p_source_97            IN NUMBER
253335 )
253336 IS
253337 
253338 l_component_type              VARCHAR2(80);
253339 l_component_code              VARCHAR2(30);
253340 l_component_type_code         VARCHAR2(1);
253341 l_component_appl_id           INTEGER;
253342 l_amb_context_code            VARCHAR2(30);
253343 l_entity_code                 VARCHAR2(30);
253344 l_event_class_code            VARCHAR2(30);
253345 l_ae_header_id                NUMBER;
253346 l_event_type_code             VARCHAR2(30);
253347 l_line_definition_code        VARCHAR2(30);
253348 l_line_definition_owner_code  VARCHAR2(1);
253349 --
253350 -- adr variables
253351 l_segment                     VARCHAR2(30);
253352 l_ccid                        NUMBER;
253353 l_adr_transaction_coa_id      NUMBER;
253354 l_adr_accounting_coa_id       NUMBER;
253355 l_adr_flexfield_segment_code  VARCHAR2(30);
253356 l_adr_flex_value_set_id       NUMBER;
253357 l_adr_value_type_code         VARCHAR2(30);
253358 l_adr_value_combination_id    NUMBER;
253359 l_adr_value_segment_code      VARCHAR2(30);
253360 
253361 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
253362 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
253363 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
253364 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
253365 
253366 -- 4262811 Variables ------------------------------------------------------------------------------------------
253367 l_entered_amt_idx             NUMBER;
253368 l_accted_amt_idx              NUMBER;
253369 l_acc_rev_flag                VARCHAR2(1);
253370 l_accrual_line_num            NUMBER;
253371 l_tmp_amt                     NUMBER;
253372 l_acc_rev_natural_side_code   VARCHAR2(1);
253373 
253374 l_num_entries                 NUMBER;
253375 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
253376 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
253377 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
253378 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
253379 l_recog_line_1                NUMBER;
253380 l_recog_line_2                NUMBER;
253381 
253382 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
253383 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
253384 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
253385 
253386 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
253387 
253388 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
253389 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
253390 
253391 ---------------------------------------------------------------------------------------------------------------
253392 
253393 
253394 --
253395 -- bulk performance
253396 --
253397 l_balance_type_code           VARCHAR2(1);
253398 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
253399 l_log_module                  VARCHAR2(240);
253400 
253401 --
253402 -- Upgrade strategy
253403 --
253404 l_actual_upg_option           VARCHAR2(1);
253405 l_enc_upg_option           VARCHAR2(1);
253406 
253407 --
253408 BEGIN
253409 --
253410 IF g_log_enabled THEN
253411       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_456';
253412 END IF;
253413 --
253414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
253415 
253416       trace
253417          (p_msg      => 'BEGIN of AcctLineType_456'
253418          ,p_level    => C_LEVEL_PROCEDURE
253419          ,p_module   => l_log_module);
253420 
253421 END IF;
253422 --
253423 l_component_type             := 'AMB_JLT';
253424 l_component_code             := 'PI_REV_PAIR_REC';
253425 l_component_type_code        := 'S';
253426 l_component_appl_id          :=  707;
253427 l_amb_context_code           := 'DEFAULT';
253428 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
253429 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
253430 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
253431 l_line_definition_owner_code := 'S';
253432 l_line_definition_code       := 'PI_FOB_SHIP_SENDER_SHIP_TP';
253433 --
253434 l_balance_type_code          := 'A';
253435 l_segment                     := NULL;
253436 l_ccid                        := NULL;
253437 l_adr_transaction_coa_id      := NULL;
253438 l_adr_accounting_coa_id       := NULL;
253439 l_adr_flexfield_segment_code  := NULL;
253440 l_adr_flex_value_set_id       := NULL;
253441 l_adr_value_type_code         := NULL;
253442 l_adr_value_combination_id    := NULL;
253443 l_adr_value_segment_code      := NULL;
253444 
253445 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
253446 l_bflow_class_code           := '';    -- 4219869 Business Flow
253447 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
253448 l_budgetary_control_flag     := 'N';
253449 
253450 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
253451 l_bflow_applied_to_amt       := NULL; -- 5132302
253452 l_entered_amt_idx            := NULL;          -- 4262811
253453 l_accted_amt_idx             := NULL;          -- 4262811
253454 l_acc_rev_flag               := NULL;          -- 4262811
253455 l_accrual_line_num           := NULL;          -- 4262811
253456 l_tmp_amt                    := NULL;          -- 4262811
253457 --
253458  
253459 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
253460     l_balance_type_code <> 'B' THEN
253461 IF NVL(p_source_97,9E125) =  1
253462  THEN 
253463 
253464    --
253465    XLA_AE_LINES_PKG.SetNewLine;
253466 
253467    p_balance_type_code          := l_balance_type_code;
253468    -- set the flag so later we will know whether the gain loss line needs to be created
253469    
253470    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
253471      p_actual_flag :='A';
253472    END IF;
253473 
253474    --
253475    -- bulk performance
253476    --
253477    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
253478                                       p_header_num   => 0); -- 4262811
253479    --
253480    -- set accounting line options
253481    --
253482    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
253483            p_natural_side_code          => 'D'
253484          , p_gain_or_loss_flag          => 'N'
253485          , p_gl_transfer_mode_code      => 'S'
253486          , p_acct_entry_type_code       => 'A'
253487          , p_switch_side_flag           => 'Y'
253488          , p_merge_duplicate_code       => 'N'
253489          );
253490    --
253491    l_acc_rev_natural_side_code := 'C';  -- 4262811
253492    -- 
253493    --
253494    -- set accounting line type info
253495    --
253496    xla_ae_lines_pkg.SetAcctLineType
253497       (p_component_type             => l_component_type
253498       ,p_event_type_code            => l_event_type_code
253499       ,p_line_definition_owner_code => l_line_definition_owner_code
253500       ,p_line_definition_code       => l_line_definition_code
253501       ,p_accounting_line_code       => l_component_code
253502       ,p_accounting_line_type_code  => l_component_type_code
253503       ,p_accounting_line_appl_id    => l_component_appl_id
253504       ,p_amb_context_code           => l_amb_context_code
253505       ,p_entity_code                => l_entity_code
253506       ,p_event_class_code           => l_event_class_code);
253507    --
253508    -- set accounting class
253509    --
253510    xla_ae_lines_pkg.SetAcctClass(
253511            p_accounting_class_code  => 'REVENUE'
253512          , p_ae_header_id           => l_ae_header_id
253513          );
253514 
253515    --
253516    -- set rounding class
253517    --
253518    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
253519                       'REVENUE';
253520 
253521    --
253522    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
253523    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
253524    --
253525    -- bulk performance
253526    --
253527    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
253528 
253529    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
253530       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
253531 
253532    -- 4955764
253533    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
253534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
253535 
253536    -- 4458381 Public Sector Enh
253537    
253538    --
253539    -- set accounting attributes for the line type
253540    --
253541    l_entered_amt_idx := 3;
253542    l_accted_amt_idx  := 8;
253543    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
253544    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
253545    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
253546    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
253547    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
253548    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
253549    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
253550    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
253551    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
253552    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
253553    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
253554    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
253555    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
253556    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
253557    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
253558    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
253559    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
253560 
253561    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
253562    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
253563 
253564    ---------------------------------------------------------------------------------------------------------------
253565    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
253566    ---------------------------------------------------------------------------------------------------------------
253567    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
253568 
253569    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
253570    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
253571 
253572    IF xla_accounting_cache_pkg.GetValueChar
253573          (p_source_code         => 'LEDGER_CATEGORY_CODE'
253574          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
253575    AND l_bflow_method_code = 'PRIOR_ENTRY'
253576 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
253577    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
253578          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
253579        )
253580    THEN
253581          xla_ae_lines_pkg.BflowUpgEntry
253582            (p_business_method_code    => l_bflow_method_code
253583            ,p_business_class_code     => l_bflow_class_code
253584            ,p_balance_type            => l_balance_type_code);
253585    ELSE
253586       NULL;
253587 -- No business flow processing for business flow method of NONE.
253588    END IF;
253589 
253590    --
253591    -- call analytical criteria
253592    --
253593    
253594    --
253595    -- call description
253596    --
253597    
253598 xla_ae_lines_pkg.SetLineDescription(
253599    p_ae_header_id => l_ae_header_id
253600   ,p_description  => Description_1 (
253601      p_application_id         => p_application_id
253602    , p_ae_header_id           => l_ae_header_id 
253603 , p_source_1 => p_source_1
253604 , p_source_2 => p_source_2
253605 , p_source_3 => p_source_3
253606 , p_source_4 => p_source_4
253607 , p_source_5 => p_source_5
253608    )
253609 );
253610 
253611 
253612    --
253613    -- call ADRs
253614    -- Bug 4922099
253615    --
253616    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
253617         (NVL(l_actual_upg_option, 'N') = 'O') OR
253618         (NVL(l_enc_upg_option, 'N') = 'O')
253619       )
253620    THEN
253621    NULL;
253622    --
253623    --
253624    
253625   l_ccid := AcctDerRule_18(
253626            p_application_id           => p_application_id
253627          , p_ae_header_id             => l_ae_header_id 
253628 , p_source_33 => p_source_33
253629          , x_transaction_coa_id       => l_adr_transaction_coa_id
253630          , x_accounting_coa_id        => l_adr_accounting_coa_id
253631          , x_value_type_code          => l_adr_value_type_code
253632          , p_side                     => 'NA'
253633    );
253634 
253635    xla_ae_lines_pkg.set_ccid(
253636     p_code_combination_id          => l_ccid
253637   , p_value_type_code              => l_adr_value_type_code
253638   , p_transaction_coa_id           => l_adr_transaction_coa_id
253639   , p_accounting_coa_id            => l_adr_accounting_coa_id
253640   , p_adr_code                     => 'PI_INTEROG_REVENUE'
253641   , p_adr_type_code                => 'S'
253642   , p_component_type               => l_component_type
253643   , p_component_code               => l_component_code
253644   , p_component_type_code          => l_component_type_code
253645   , p_component_appl_id            => l_component_appl_id
253646   , p_amb_context_code             => l_amb_context_code
253647   , p_side                         => 'NA'
253648   );
253649 
253650 
253651    --
253652    --
253653    END IF;
253654    --
253655    -- Bug 4922099
253656    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
253657           (NVL(l_enc_upg_option, 'N') = 'O')
253658         ) AND
253659         (l_bflow_method_code = 'PRIOR_ENTRY')
253660       )
253661    THEN
253662       IF
253663       --
253664       1 = 2
253665       --
253666       THEN
253667       xla_accounting_err_pkg.build_message
253668                                     (p_appli_s_name            => 'XLA'
253669                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
253670                                     ,p_token_1                 => 'LINE_NUMBER'
253671                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
253672                                     ,p_token_2                 => 'LINE_TYPE_NAME'
253673                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
253674                                                                              l_component_type
253675                                                                             ,l_component_code
253676                                                                             ,l_component_type_code
253677                                                                             ,l_component_appl_id
253678                                                                             ,l_amb_context_code
253679                                                                             ,l_entity_code
253680                                                                             ,l_event_class_code
253681                                                                            )
253682                                     ,p_token_3                 => 'OWNER'
253683                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
253684                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
253685                                                                           ,p_lookup_code    => l_component_type_code
253686                                                                          )
253687                                     ,p_token_4                 => 'PRODUCT_NAME'
253688                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
253689                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
253690                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
253691                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
253692                                     ,p_ae_header_id            =>  NULL
253693                                        );
253694 
253695         IF (C_LEVEL_ERROR>= g_log_level) THEN
253696                  trace
253697                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
253698                       ,p_level    => C_LEVEL_ERROR
253699                       ,p_module   => l_log_module);
253700         END IF;
253701       END IF;
253702    END IF;
253703    --
253704    --
253705    ------------------------------------------------------------------------------------------------
253706    -- 4219869 Business Flow
253707    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
253708    -- Prior Entry.  Currently, the following code is always generated.
253709    ------------------------------------------------------------------------------------------------
253710    XLA_AE_LINES_PKG.ValidateCurrentLine;
253711 
253712    ------------------------------------------------------------------------------------
253713    -- 4219869 Business Flow
253714    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
253715    ------------------------------------------------------------------------------------
253716    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
253717 
253718    ----------------------------------------------------------------------------------
253719    -- 4219869 Business Flow
253720    -- Update journal entry status -- Need to generate this within IF <condition>
253721    ----------------------------------------------------------------------------------
253722    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
253723          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
253724          ,p_balance_type_code => l_balance_type_code
253725          );
253726 
253727    -------------------------------------------------------------------------------------------
253728    -- 4262811 - Generate the Accrual Reversal lines
253729    -------------------------------------------------------------------------------------------
253730    BEGIN
253731       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
253732                               (g_array_event(p_event_id).array_value_num('header_index'));
253733       IF l_acc_rev_flag IS NULL THEN
253734          l_acc_rev_flag := 'N';
253735       END IF;
253736    EXCEPTION
253737       WHEN OTHERS THEN
253738          l_acc_rev_flag := 'N';
253739    END;
253740    --
253741    IF (l_acc_rev_flag = 'Y') THEN
253742 
253743        -- 4645092  ------------------------------------------------------------------------------
253744        -- To allow MPA report to determine if it should generate report process
253745        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
253746        ------------------------------------------------------------------------------------------
253747 
253748        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
253749        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
253750    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
253751    -- call ADRs
253752    -- Bug 4922099
253753    --
253754    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
253755         (NVL(l_actual_upg_option, 'N') = 'O') OR
253756         (NVL(l_enc_upg_option, 'N') = 'O')
253757       )
253758    THEN
253759    NULL;
253760    --
253761    --
253762    
253763   l_ccid := AcctDerRule_18(
253764            p_application_id           => p_application_id
253765          , p_ae_header_id             => l_ae_header_id 
253766 , p_source_33 => p_source_33
253767          , x_transaction_coa_id       => l_adr_transaction_coa_id
253768          , x_accounting_coa_id        => l_adr_accounting_coa_id
253769          , x_value_type_code          => l_adr_value_type_code
253770          , p_side                     => 'NA'
253771    );
253772 
253773    xla_ae_lines_pkg.set_ccid(
253774     p_code_combination_id          => l_ccid
253775   , p_value_type_code              => l_adr_value_type_code
253776   , p_transaction_coa_id           => l_adr_transaction_coa_id
253777   , p_accounting_coa_id            => l_adr_accounting_coa_id
253778   , p_adr_code                     => 'PI_INTEROG_REVENUE'
253779   , p_adr_type_code                => 'S'
253780   , p_component_type               => l_component_type
253781   , p_component_code               => l_component_code
253782   , p_component_type_code          => l_component_type_code
253783   , p_component_appl_id            => l_component_appl_id
253784   , p_amb_context_code             => l_amb_context_code
253785   , p_side                         => 'NA'
253786   );
253787 
253788 
253789    --
253790    --
253791    END IF;
253792 
253793        --
253794        -- Update the line information that should be overwritten
253795        --
253796        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
253797                                          p_header_num   => 1);
253798        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
253799 
253800        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
253801 
253802        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
253803           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
253804        END IF;
253805 
253806       --
253807       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
253808       --
253809       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
253810           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
253811       ELSE
253812           ---------------------------------------------------------------------------------------------------
253813           -- 4262811a Switch Sign
253814           ---------------------------------------------------------------------------------------------------
253815           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
253816           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
253817                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
253818           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
253819                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
253820           -- 5132302
253821           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
253822                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
253823 
253824       END IF;
253825 
253826       -- 4955764
253827       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
253828       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
253829 
253830 
253831       XLA_AE_LINES_PKG.ValidateCurrentLine;
253832       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
253833 
253834       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
253835                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
253836                ,p_balance_type_code => l_balance_type_code);
253837 
253838    END IF;
253839 
253840    -----------------------------------------------------------------------------------------
253841    -- 4262811 Multiperiod Accounting
253842    -----------------------------------------------------------------------------------------
253843      -- No MPA option is assigned.
253844 
253845 
253846 END IF;
253847 END IF;
253848 --
253849 
253850 --
253851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
253852    trace
253853       (p_msg      => 'END of AcctLineType_456'
253854       ,p_level    => C_LEVEL_PROCEDURE
253855       ,p_module   => l_log_module);
253856 END IF;
253857 --
253858 EXCEPTION
253859   WHEN xla_exceptions_pkg.application_exception THEN
253860       RAISE;
253861   WHEN OTHERS THEN
253862        xla_exceptions_pkg.raise_message
253863            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_456');
253864 END AcctLineType_456;
253865 --
253866 
253867 ---------------------------------------
253868 --
253869 -- PRIVATE FUNCTION
253870 --         AcctLineType_457
253871 --
253872 ---------------------------------------
253873 PROCEDURE AcctLineType_457 (
253874   p_application_id        IN NUMBER
253875  ,p_event_id              IN NUMBER
253876  ,p_calculate_acctd_flag  IN VARCHAR2
253877  ,p_calculate_g_l_flag    IN VARCHAR2
253878  ,p_actual_flag           IN OUT VARCHAR2
253879  ,p_balance_type_code     OUT VARCHAR2
253880  ,p_gain_or_loss_ref      OUT VARCHAR2
253881  
253882 --Discrete Job Bridging Account
253883  , p_source_54            IN NUMBER
253884 --WIP Entity Type
253885  , p_source_55            IN NUMBER
253886  , p_source_55_meaning    IN VARCHAR2
253887 --Flow Schedule Bridging Account
253888  , p_source_56            IN NUMBER
253889 --Repetitive Item Bridging Account
253890  , p_source_57            IN NUMBER
253891 --DISTRIBUTION_IDENTIFIER
253892  , p_source_84            IN NUMBER
253893 --Distribution Type
253894  , p_source_85            IN VARCHAR2
253895  , p_source_85_meaning    IN VARCHAR2
253896 --Entered Currency Code
253897  , p_source_88            IN VARCHAR2
253898 --Entered Amount
253899  , p_source_91            IN NUMBER
253900 --Currency Conversion Date
253901  , p_source_92            IN DATE
253902 --Currency Conversion Rate
253903  , p_source_93            IN NUMBER
253904 --Accounted Amount
253905  , p_source_95            IN NUMBER
253906 --Accounting Line Type
253907  , p_source_97            IN NUMBER
253908 )
253909 IS
253910 
253911 l_component_type              VARCHAR2(80);
253912 l_component_code              VARCHAR2(30);
253913 l_component_type_code         VARCHAR2(1);
253914 l_component_appl_id           INTEGER;
253915 l_amb_context_code            VARCHAR2(30);
253916 l_entity_code                 VARCHAR2(30);
253917 l_event_class_code            VARCHAR2(30);
253918 l_ae_header_id                NUMBER;
253919 l_event_type_code             VARCHAR2(30);
253920 l_line_definition_code        VARCHAR2(30);
253921 l_line_definition_owner_code  VARCHAR2(1);
253922 --
253923 -- adr variables
253924 l_segment                     VARCHAR2(30);
253925 l_ccid                        NUMBER;
253926 l_adr_transaction_coa_id      NUMBER;
253927 l_adr_accounting_coa_id       NUMBER;
253928 l_adr_flexfield_segment_code  VARCHAR2(30);
253929 l_adr_flex_value_set_id       NUMBER;
253930 l_adr_value_type_code         VARCHAR2(30);
253931 l_adr_value_combination_id    NUMBER;
253932 l_adr_value_segment_code      VARCHAR2(30);
253933 
253934 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
253935 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
253936 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
253937 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
253938 
253939 -- 4262811 Variables ------------------------------------------------------------------------------------------
253940 l_entered_amt_idx             NUMBER;
253941 l_accted_amt_idx              NUMBER;
253942 l_acc_rev_flag                VARCHAR2(1);
253943 l_accrual_line_num            NUMBER;
253944 l_tmp_amt                     NUMBER;
253945 l_acc_rev_natural_side_code   VARCHAR2(1);
253946 
253947 l_num_entries                 NUMBER;
253948 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
253949 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
253950 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
253951 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
253952 l_recog_line_1                NUMBER;
253953 l_recog_line_2                NUMBER;
253954 
253955 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
253956 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
253957 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
253958 
253959 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
253960 
253961 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
253962 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
253963 
253964 ---------------------------------------------------------------------------------------------------------------
253965 
253966 
253967 --
253968 -- bulk performance
253969 --
253970 l_balance_type_code           VARCHAR2(1);
253971 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
253972 l_log_module                  VARCHAR2(240);
253973 
253974 --
253975 -- Upgrade strategy
253976 --
253977 l_actual_upg_option           VARCHAR2(1);
253978 l_enc_upg_option           VARCHAR2(1);
253979 
253980 --
253981 BEGIN
253982 --
253983 IF g_log_enabled THEN
253984       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_457';
253985 END IF;
253986 --
253987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
253988 
253989       trace
253990          (p_msg      => 'BEGIN of AcctLineType_457'
253991          ,p_level    => C_LEVEL_PROCEDURE
253992          ,p_module   => l_log_module);
253993 
253994 END IF;
253995 --
253996 l_component_type             := 'AMB_JLT';
253997 l_component_code             := 'PI_WIP_BRIDGING';
253998 l_component_type_code        := 'S';
253999 l_component_appl_id          :=  707;
254000 l_amb_context_code           := 'DEFAULT';
254001 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
254002 l_event_class_code           := 'OSP';
254003 l_event_type_code            := 'IPV_TRANSFER_WO';
254004 l_line_definition_owner_code := 'S';
254005 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
254006 --
254007 l_balance_type_code          := 'A';
254008 l_segment                     := NULL;
254009 l_ccid                        := NULL;
254010 l_adr_transaction_coa_id      := NULL;
254011 l_adr_accounting_coa_id       := NULL;
254012 l_adr_flexfield_segment_code  := NULL;
254013 l_adr_flex_value_set_id       := NULL;
254014 l_adr_value_type_code         := NULL;
254015 l_adr_value_combination_id    := NULL;
254016 l_adr_value_segment_code      := NULL;
254017 
254018 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
254019 l_bflow_class_code           := '';    -- 4219869 Business Flow
254020 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
254021 l_budgetary_control_flag     := 'N';
254022 
254023 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
254024 l_bflow_applied_to_amt       := NULL; -- 5132302
254025 l_entered_amt_idx            := NULL;          -- 4262811
254026 l_accted_amt_idx             := NULL;          -- 4262811
254027 l_acc_rev_flag               := NULL;          -- 4262811
254028 l_accrual_line_num           := NULL;          -- 4262811
254029 l_tmp_amt                    := NULL;          -- 4262811
254030 --
254031  
254032 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
254033     l_balance_type_code <> 'B' THEN
254034 IF NVL(p_source_97,9E125) =  7
254035  THEN 
254036 
254037    --
254038    XLA_AE_LINES_PKG.SetNewLine;
254039 
254040    p_balance_type_code          := l_balance_type_code;
254041    -- set the flag so later we will know whether the gain loss line needs to be created
254042    
254043    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
254044      p_actual_flag :='A';
254045    END IF;
254046 
254047    --
254048    -- bulk performance
254049    --
254050    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
254051                                       p_header_num   => 0); -- 4262811
254052    --
254053    -- set accounting line options
254054    --
254055    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
254056            p_natural_side_code          => 'C'
254057          , p_gain_or_loss_flag          => 'N'
254058          , p_gl_transfer_mode_code      => 'S'
254059          , p_acct_entry_type_code       => 'A'
254060          , p_switch_side_flag           => 'Y'
254061          , p_merge_duplicate_code       => 'N'
254062          );
254063    --
254064    l_acc_rev_natural_side_code := 'D';  -- 4262811
254065    -- 
254066    --
254067    -- set accounting line type info
254068    --
254069    xla_ae_lines_pkg.SetAcctLineType
254070       (p_component_type             => l_component_type
254071       ,p_event_type_code            => l_event_type_code
254072       ,p_line_definition_owner_code => l_line_definition_owner_code
254073       ,p_line_definition_code       => l_line_definition_code
254074       ,p_accounting_line_code       => l_component_code
254075       ,p_accounting_line_type_code  => l_component_type_code
254076       ,p_accounting_line_appl_id    => l_component_appl_id
254077       ,p_amb_context_code           => l_amb_context_code
254078       ,p_entity_code                => l_entity_code
254079       ,p_event_class_code           => l_event_class_code);
254080    --
254081    -- set accounting class
254082    --
254083    xla_ae_lines_pkg.SetAcctClass(
254084            p_accounting_class_code  => 'WIP_BRIDGING'
254085          , p_ae_header_id           => l_ae_header_id
254086          );
254087 
254088    --
254089    -- set rounding class
254090    --
254091    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
254092                       'WIP_BRIDGING';
254093 
254094    --
254095    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
254096    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
254097    --
254098    -- bulk performance
254099    --
254100    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
254101 
254102    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
254103       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
254104 
254105    -- 4955764
254106    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
254107       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
254108 
254109    -- 4458381 Public Sector Enh
254110    
254111    --
254112    -- set accounting attributes for the line type
254113    --
254114    l_entered_amt_idx := 3;
254115    l_accted_amt_idx  := 8;
254116    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
254117    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
254118    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
254119    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
254120    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
254121    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
254122    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
254123    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
254124    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
254125    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
254126    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
254127    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
254128    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
254129    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
254130    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
254131    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
254132    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
254133 
254134    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
254135    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
254136 
254137    ---------------------------------------------------------------------------------------------------------------
254138    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
254139    ---------------------------------------------------------------------------------------------------------------
254140    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
254141 
254142    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
254143    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
254144 
254145    IF xla_accounting_cache_pkg.GetValueChar
254146          (p_source_code         => 'LEDGER_CATEGORY_CODE'
254147          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
254148    AND l_bflow_method_code = 'PRIOR_ENTRY'
254149 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
254150    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
254151          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
254152        )
254153    THEN
254154          xla_ae_lines_pkg.BflowUpgEntry
254155            (p_business_method_code    => l_bflow_method_code
254156            ,p_business_class_code     => l_bflow_class_code
254157            ,p_balance_type            => l_balance_type_code);
254158    ELSE
254159       NULL;
254160 -- No business flow processing for business flow method of NONE.
254161    END IF;
254162 
254163    --
254164    -- call analytical criteria
254165    --
254166    
254167    --
254168    -- call description
254169    --
254170    -- No description or it is inherited.
254171    --
254172    -- call ADRs
254173    -- Bug 4922099
254174    --
254175    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
254176         (NVL(l_actual_upg_option, 'N') = 'O') OR
254177         (NVL(l_enc_upg_option, 'N') = 'O')
254178       )
254179    THEN
254180    NULL;
254181    --
254182    --
254183    
254184   l_ccid := AcctDerRule_31(
254185            p_application_id           => p_application_id
254186          , p_ae_header_id             => l_ae_header_id 
254187 , p_source_54 => p_source_54
254188 , p_source_55 => p_source_55
254189 , p_source_55_meaning => p_source_55_meaning
254190 , p_source_56 => p_source_56
254191 , p_source_57 => p_source_57
254192          , x_transaction_coa_id       => l_adr_transaction_coa_id
254193          , x_accounting_coa_id        => l_adr_accounting_coa_id
254194          , x_value_type_code          => l_adr_value_type_code
254195          , p_side                     => 'NA'
254196    );
254197 
254198    xla_ae_lines_pkg.set_ccid(
254199     p_code_combination_id          => l_ccid
254200   , p_value_type_code              => l_adr_value_type_code
254201   , p_transaction_coa_id           => l_adr_transaction_coa_id
254202   , p_accounting_coa_id            => l_adr_accounting_coa_id
254203   , p_adr_code                     => 'PI_OSP_BRIDGING'
254204   , p_adr_type_code                => 'S'
254205   , p_component_type               => l_component_type
254206   , p_component_code               => l_component_code
254207   , p_component_type_code          => l_component_type_code
254208   , p_component_appl_id            => l_component_appl_id
254209   , p_amb_context_code             => l_amb_context_code
254210   , p_side                         => 'NA'
254211   );
254212 
254213 
254214    --
254215    --
254216    END IF;
254217    --
254218    -- Bug 4922099
254219    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
254220           (NVL(l_enc_upg_option, 'N') = 'O')
254221         ) AND
254222         (l_bflow_method_code = 'PRIOR_ENTRY')
254223       )
254224    THEN
254225       IF
254226       --
254227       1 = 2
254228       --
254229       THEN
254230       xla_accounting_err_pkg.build_message
254231                                     (p_appli_s_name            => 'XLA'
254232                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
254233                                     ,p_token_1                 => 'LINE_NUMBER'
254234                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
254235                                     ,p_token_2                 => 'LINE_TYPE_NAME'
254236                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
254237                                                                              l_component_type
254238                                                                             ,l_component_code
254239                                                                             ,l_component_type_code
254240                                                                             ,l_component_appl_id
254241                                                                             ,l_amb_context_code
254242                                                                             ,l_entity_code
254243                                                                             ,l_event_class_code
254244                                                                            )
254245                                     ,p_token_3                 => 'OWNER'
254246                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
254247                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
254248                                                                           ,p_lookup_code    => l_component_type_code
254249                                                                          )
254250                                     ,p_token_4                 => 'PRODUCT_NAME'
254251                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
254252                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
254253                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
254254                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
254255                                     ,p_ae_header_id            =>  NULL
254256                                        );
254257 
254258         IF (C_LEVEL_ERROR>= g_log_level) THEN
254259                  trace
254260                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
254261                       ,p_level    => C_LEVEL_ERROR
254262                       ,p_module   => l_log_module);
254263         END IF;
254264       END IF;
254265    END IF;
254266    --
254267    --
254268    ------------------------------------------------------------------------------------------------
254269    -- 4219869 Business Flow
254270    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
254271    -- Prior Entry.  Currently, the following code is always generated.
254272    ------------------------------------------------------------------------------------------------
254273    XLA_AE_LINES_PKG.ValidateCurrentLine;
254274 
254275    ------------------------------------------------------------------------------------
254276    -- 4219869 Business Flow
254277    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
254278    ------------------------------------------------------------------------------------
254279    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
254280 
254281    ----------------------------------------------------------------------------------
254282    -- 4219869 Business Flow
254283    -- Update journal entry status -- Need to generate this within IF <condition>
254284    ----------------------------------------------------------------------------------
254285    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
254286          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
254287          ,p_balance_type_code => l_balance_type_code
254288          );
254289 
254290    -------------------------------------------------------------------------------------------
254291    -- 4262811 - Generate the Accrual Reversal lines
254292    -------------------------------------------------------------------------------------------
254293    BEGIN
254294       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
254295                               (g_array_event(p_event_id).array_value_num('header_index'));
254296       IF l_acc_rev_flag IS NULL THEN
254297          l_acc_rev_flag := 'N';
254298       END IF;
254299    EXCEPTION
254300       WHEN OTHERS THEN
254301          l_acc_rev_flag := 'N';
254302    END;
254303    --
254304    IF (l_acc_rev_flag = 'Y') THEN
254305 
254306        -- 4645092  ------------------------------------------------------------------------------
254307        -- To allow MPA report to determine if it should generate report process
254308        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
254309        ------------------------------------------------------------------------------------------
254310 
254311        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
254312        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
254313    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
254314    -- call ADRs
254315    -- Bug 4922099
254316    --
254317    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
254318         (NVL(l_actual_upg_option, 'N') = 'O') OR
254319         (NVL(l_enc_upg_option, 'N') = 'O')
254320       )
254321    THEN
254322    NULL;
254323    --
254324    --
254325    
254326   l_ccid := AcctDerRule_31(
254327            p_application_id           => p_application_id
254328          , p_ae_header_id             => l_ae_header_id 
254329 , p_source_54 => p_source_54
254330 , p_source_55 => p_source_55
254331 , p_source_55_meaning => p_source_55_meaning
254332 , p_source_56 => p_source_56
254333 , p_source_57 => p_source_57
254334          , x_transaction_coa_id       => l_adr_transaction_coa_id
254335          , x_accounting_coa_id        => l_adr_accounting_coa_id
254336          , x_value_type_code          => l_adr_value_type_code
254337          , p_side                     => 'NA'
254338    );
254339 
254340    xla_ae_lines_pkg.set_ccid(
254341     p_code_combination_id          => l_ccid
254342   , p_value_type_code              => l_adr_value_type_code
254343   , p_transaction_coa_id           => l_adr_transaction_coa_id
254344   , p_accounting_coa_id            => l_adr_accounting_coa_id
254345   , p_adr_code                     => 'PI_OSP_BRIDGING'
254346   , p_adr_type_code                => 'S'
254347   , p_component_type               => l_component_type
254348   , p_component_code               => l_component_code
254349   , p_component_type_code          => l_component_type_code
254350   , p_component_appl_id            => l_component_appl_id
254351   , p_amb_context_code             => l_amb_context_code
254352   , p_side                         => 'NA'
254353   );
254354 
254355 
254356    --
254357    --
254358    END IF;
254359 
254360        --
254361        -- Update the line information that should be overwritten
254362        --
254363        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
254364                                          p_header_num   => 1);
254365        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
254366 
254367        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
254368 
254369        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
254370           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
254371        END IF;
254372 
254373       --
254374       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
254375       --
254376       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
254377           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
254378       ELSE
254379           ---------------------------------------------------------------------------------------------------
254380           -- 4262811a Switch Sign
254381           ---------------------------------------------------------------------------------------------------
254382           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
254383           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
254384                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
254385           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
254386                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
254387           -- 5132302
254388           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
254389                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
254390 
254391       END IF;
254392 
254393       -- 4955764
254394       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
254395       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
254396 
254397 
254398       XLA_AE_LINES_PKG.ValidateCurrentLine;
254399       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
254400 
254401       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
254402                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
254403                ,p_balance_type_code => l_balance_type_code);
254404 
254405    END IF;
254406 
254407    -----------------------------------------------------------------------------------------
254408    -- 4262811 Multiperiod Accounting
254409    -----------------------------------------------------------------------------------------
254410      -- No MPA option is assigned.
254411 
254412 
254413 END IF;
254414 END IF;
254415 --
254416 
254417 --
254418 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
254419    trace
254420       (p_msg      => 'END of AcctLineType_457'
254421       ,p_level    => C_LEVEL_PROCEDURE
254422       ,p_module   => l_log_module);
254423 END IF;
254424 --
254425 EXCEPTION
254426   WHEN xla_exceptions_pkg.application_exception THEN
254427       RAISE;
254428   WHEN OTHERS THEN
254429        xla_exceptions_pkg.raise_message
254430            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_457');
254431 END AcctLineType_457;
254432 --
254433 
254434 ---------------------------------------
254435 --
254436 -- PRIVATE FUNCTION
254437 --         AcctLineType_458
254438 --
254439 ---------------------------------------
254440 PROCEDURE AcctLineType_458 (
254441   p_application_id        IN NUMBER
254442  ,p_event_id              IN NUMBER
254443  ,p_calculate_acctd_flag  IN VARCHAR2
254444  ,p_calculate_g_l_flag    IN VARCHAR2
254445  ,p_actual_flag           IN OUT VARCHAR2
254446  ,p_balance_type_code     OUT VARCHAR2
254447  ,p_gain_or_loss_ref      OUT VARCHAR2
254448  
254449 --TRANSACTION_ID
254450  , p_source_1            IN NUMBER
254451 --Item Concatenated Segments
254452  , p_source_2            IN VARCHAR2
254453 --Transaction Quantity
254454  , p_source_3            IN NUMBER
254455 --Transaction Unit of Measure Code
254456  , p_source_4            IN VARCHAR2
254457 --Inventory Transaction Type Description
254458  , p_source_5            IN VARCHAR2
254459 --Transaction Distribution Account
254460  , p_source_20            IN NUMBER
254461 --Discrete Job Bridging Account
254462  , p_source_54            IN NUMBER
254463 --WIP Entity Type
254464  , p_source_55            IN NUMBER
254465  , p_source_55_meaning    IN VARCHAR2
254466 --Flow Schedule Bridging Account
254467  , p_source_56            IN NUMBER
254468 --Repetitive Item Bridging Account
254469  , p_source_57            IN NUMBER
254470 --TRANSACTION_SOURCE_ID
254471  , p_source_61            IN NUMBER
254472 --Transaction Action Name
254473  , p_source_62            IN NUMBER
254474  , p_source_62_meaning    IN VARCHAR2
254475 --DISTRIBUTION_IDENTIFIER
254476  , p_source_84            IN NUMBER
254477 --Distribution Type
254478  , p_source_85            IN VARCHAR2
254479  , p_source_85_meaning    IN VARCHAR2
254480 --Entered Currency Code
254481  , p_source_88            IN VARCHAR2
254482 --Entered Amount
254483  , p_source_91            IN NUMBER
254484 --Currency Conversion Date
254485  , p_source_92            IN DATE
254486 --Currency Conversion Rate
254487  , p_source_93            IN NUMBER
254488 --Currency Conversion Type
254489  , p_source_94            IN VARCHAR2
254490 --Accounted Amount
254491  , p_source_95            IN NUMBER
254492 --Accounting Line Type
254493  , p_source_97            IN NUMBER
254494 --Subinventory Type Indicator
254495  , p_source_110            IN VARCHAR2
254496  , p_source_110_meaning    IN VARCHAR2
254497 )
254498 IS
254499 
254500 l_component_type              VARCHAR2(80);
254501 l_component_code              VARCHAR2(30);
254502 l_component_type_code         VARCHAR2(1);
254503 l_component_appl_id           INTEGER;
254504 l_amb_context_code            VARCHAR2(30);
254505 l_entity_code                 VARCHAR2(30);
254506 l_event_class_code            VARCHAR2(30);
254507 l_ae_header_id                NUMBER;
254508 l_event_type_code             VARCHAR2(30);
254509 l_line_definition_code        VARCHAR2(30);
254510 l_line_definition_owner_code  VARCHAR2(1);
254511 --
254512 -- adr variables
254513 l_segment                     VARCHAR2(30);
254514 l_ccid                        NUMBER;
254515 l_adr_transaction_coa_id      NUMBER;
254516 l_adr_accounting_coa_id       NUMBER;
254517 l_adr_flexfield_segment_code  VARCHAR2(30);
254518 l_adr_flex_value_set_id       NUMBER;
254519 l_adr_value_type_code         VARCHAR2(30);
254520 l_adr_value_combination_id    NUMBER;
254521 l_adr_value_segment_code      VARCHAR2(30);
254522 
254523 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
254524 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
254525 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
254526 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
254527 
254528 -- 4262811 Variables ------------------------------------------------------------------------------------------
254529 l_entered_amt_idx             NUMBER;
254530 l_accted_amt_idx              NUMBER;
254531 l_acc_rev_flag                VARCHAR2(1);
254532 l_accrual_line_num            NUMBER;
254533 l_tmp_amt                     NUMBER;
254534 l_acc_rev_natural_side_code   VARCHAR2(1);
254535 
254536 l_num_entries                 NUMBER;
254537 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
254538 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
254539 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
254540 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
254541 l_recog_line_1                NUMBER;
254542 l_recog_line_2                NUMBER;
254543 
254544 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
254545 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
254546 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
254547 
254548 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
254549 
254550 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
254551 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
254552 
254553 ---------------------------------------------------------------------------------------------------------------
254554 
254555 
254556 --
254557 -- bulk performance
254558 --
254559 l_balance_type_code           VARCHAR2(1);
254560 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
254561 l_log_module                  VARCHAR2(240);
254562 
254563 --
254564 -- Upgrade strategy
254565 --
254566 l_actual_upg_option           VARCHAR2(1);
254567 l_enc_upg_option           VARCHAR2(1);
254568 
254569 --
254570 BEGIN
254571 --
254572 IF g_log_enabled THEN
254573       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_458';
254574 END IF;
254575 --
254576 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
254577 
254578       trace
254579          (p_msg      => 'BEGIN of AcctLineType_458'
254580          ,p_level    => C_LEVEL_PROCEDURE
254581          ,p_module   => l_log_module);
254582 
254583 END IF;
254584 --
254585 l_component_type             := 'AMB_JLT';
254586 l_component_code             := 'PI_WIP_BRIDGING';
254587 l_component_type_code        := 'S';
254588 l_component_appl_id          :=  707;
254589 l_amb_context_code           := 'DEFAULT';
254590 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
254591 l_event_class_code           := 'WIP_MTL';
254592 l_event_type_code            := 'WIP_ASSEMBLY_RETURN';
254593 l_line_definition_owner_code := 'S';
254594 l_line_definition_code       := 'PI_WIP_ASSEMBLY_RETURN';
254595 --
254596 l_balance_type_code          := 'A';
254597 l_segment                     := NULL;
254598 l_ccid                        := NULL;
254599 l_adr_transaction_coa_id      := NULL;
254600 l_adr_accounting_coa_id       := NULL;
254601 l_adr_flexfield_segment_code  := NULL;
254602 l_adr_flex_value_set_id       := NULL;
254603 l_adr_value_type_code         := NULL;
254604 l_adr_value_combination_id    := NULL;
254605 l_adr_value_segment_code      := NULL;
254606 
254607 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
254608 l_bflow_class_code           := '';    -- 4219869 Business Flow
254609 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
254610 l_budgetary_control_flag     := 'N';
254611 
254612 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
254613 l_bflow_applied_to_amt       := NULL; -- 5132302
254614 l_entered_amt_idx            := NULL;          -- 4262811
254615 l_accted_amt_idx             := NULL;          -- 4262811
254616 l_acc_rev_flag               := NULL;          -- 4262811
254617 l_accrual_line_num           := NULL;          -- 4262811
254618 l_tmp_amt                    := NULL;          -- 4262811
254619 --
254620  
254621 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
254622     l_balance_type_code <> 'B' THEN
254623 IF (NVL(p_source_97,9E125) =  7 OR 
254624 NVL(p_source_97,9E125) =  13) AND 
254625 NVL(p_source_110,'
254626 ') =  'Y'
254627  THEN 
254628 
254629    --
254630    XLA_AE_LINES_PKG.SetNewLine;
254631 
254632    p_balance_type_code          := l_balance_type_code;
254633    -- set the flag so later we will know whether the gain loss line needs to be created
254634    
254635    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
254636      p_actual_flag :='A';
254637    END IF;
254638 
254639    --
254640    -- bulk performance
254641    --
254642    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
254643                                       p_header_num   => 0); -- 4262811
254644    --
254645    -- set accounting line options
254646    --
254647    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
254648            p_natural_side_code          => 'C'
254649          , p_gain_or_loss_flag          => 'N'
254650          , p_gl_transfer_mode_code      => 'S'
254651          , p_acct_entry_type_code       => 'A'
254652          , p_switch_side_flag           => 'Y'
254653          , p_merge_duplicate_code       => 'N'
254654          );
254655    --
254656    l_acc_rev_natural_side_code := 'D';  -- 4262811
254657    -- 
254658    --
254659    -- set accounting line type info
254660    --
254661    xla_ae_lines_pkg.SetAcctLineType
254662       (p_component_type             => l_component_type
254663       ,p_event_type_code            => l_event_type_code
254664       ,p_line_definition_owner_code => l_line_definition_owner_code
254665       ,p_line_definition_code       => l_line_definition_code
254666       ,p_accounting_line_code       => l_component_code
254667       ,p_accounting_line_type_code  => l_component_type_code
254668       ,p_accounting_line_appl_id    => l_component_appl_id
254669       ,p_amb_context_code           => l_amb_context_code
254670       ,p_entity_code                => l_entity_code
254671       ,p_event_class_code           => l_event_class_code);
254672    --
254673    -- set accounting class
254674    --
254675    xla_ae_lines_pkg.SetAcctClass(
254676            p_accounting_class_code  => 'WIP_BRIDGING'
254677          , p_ae_header_id           => l_ae_header_id
254678          );
254679 
254680    --
254681    -- set rounding class
254682    --
254683    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
254684                       'WIP_BRIDGING';
254685 
254686    --
254687    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
254688    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
254689    --
254690    -- bulk performance
254691    --
254692    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
254693 
254694    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
254695       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
254696 
254697    -- 4955764
254698    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
254699       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
254700 
254701    -- 4458381 Public Sector Enh
254702    
254703    --
254704    -- set accounting attributes for the line type
254705    --
254706    l_entered_amt_idx := 3;
254707    l_accted_amt_idx  := 8;
254708    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
254709    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
254710    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
254711    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
254712    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
254713    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
254714    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
254715    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
254716    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
254717    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
254718    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
254719    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
254720    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
254721    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
254722    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
254723    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
254724    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
254725 
254726    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
254727    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
254728 
254729    ---------------------------------------------------------------------------------------------------------------
254730    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
254731    ---------------------------------------------------------------------------------------------------------------
254732    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
254733 
254734    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
254735    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
254736 
254737    IF xla_accounting_cache_pkg.GetValueChar
254738          (p_source_code         => 'LEDGER_CATEGORY_CODE'
254739          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
254740    AND l_bflow_method_code = 'PRIOR_ENTRY'
254741 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
254742    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
254743          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
254744        )
254745    THEN
254746          xla_ae_lines_pkg.BflowUpgEntry
254747            (p_business_method_code    => l_bflow_method_code
254748            ,p_business_class_code     => l_bflow_class_code
254749            ,p_balance_type            => l_balance_type_code);
254750    ELSE
254751       NULL;
254752 -- No business flow processing for business flow method of NONE.
254753    END IF;
254754 
254755    --
254756    -- call analytical criteria
254757    --
254758    
254759    --
254760    -- call description
254761    --
254762    
254763 xla_ae_lines_pkg.SetLineDescription(
254764    p_ae_header_id => l_ae_header_id
254765   ,p_description  => Description_1 (
254766      p_application_id         => p_application_id
254767    , p_ae_header_id           => l_ae_header_id 
254768 , p_source_1 => p_source_1
254769 , p_source_2 => p_source_2
254770 , p_source_3 => p_source_3
254771 , p_source_4 => p_source_4
254772 , p_source_5 => p_source_5
254773    )
254774 );
254775 
254776 
254777    --
254778    -- call ADRs
254779    -- Bug 4922099
254780    --
254781    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
254782         (NVL(l_actual_upg_option, 'N') = 'O') OR
254783         (NVL(l_enc_upg_option, 'N') = 'O')
254784       )
254785    THEN
254786    NULL;
254787    --
254788    --
254789    
254790   l_ccid := AcctDerRule_35(
254791            p_application_id           => p_application_id
254792          , p_ae_header_id             => l_ae_header_id 
254793 , p_source_20 => p_source_20
254794 , p_source_54 => p_source_54
254795 , p_source_55 => p_source_55
254796 , p_source_55_meaning => p_source_55_meaning
254797 , p_source_56 => p_source_56
254798 , p_source_57 => p_source_57
254799 , p_source_61 => p_source_61
254800 , p_source_62 => p_source_62
254801 , p_source_62_meaning => p_source_62_meaning
254802          , x_transaction_coa_id       => l_adr_transaction_coa_id
254803          , x_accounting_coa_id        => l_adr_accounting_coa_id
254804          , x_value_type_code          => l_adr_value_type_code
254805          , p_side                     => 'NA'
254806    );
254807 
254808    xla_ae_lines_pkg.set_ccid(
254809     p_code_combination_id          => l_ccid
254810   , p_value_type_code              => l_adr_value_type_code
254811   , p_transaction_coa_id           => l_adr_transaction_coa_id
254812   , p_accounting_coa_id            => l_adr_accounting_coa_id
254813   , p_adr_code                     => 'PI_WIP_BRIDGING'
254814   , p_adr_type_code                => 'S'
254815   , p_component_type               => l_component_type
254816   , p_component_code               => l_component_code
254817   , p_component_type_code          => l_component_type_code
254818   , p_component_appl_id            => l_component_appl_id
254819   , p_amb_context_code             => l_amb_context_code
254820   , p_side                         => 'NA'
254821   );
254822 
254823 
254824    --
254825    --
254826    END IF;
254827    --
254828    -- Bug 4922099
254829    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
254830           (NVL(l_enc_upg_option, 'N') = 'O')
254831         ) AND
254832         (l_bflow_method_code = 'PRIOR_ENTRY')
254833       )
254834    THEN
254835       IF
254836       --
254837       1 = 2
254838       --
254839       THEN
254840       xla_accounting_err_pkg.build_message
254841                                     (p_appli_s_name            => 'XLA'
254842                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
254843                                     ,p_token_1                 => 'LINE_NUMBER'
254844                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
254845                                     ,p_token_2                 => 'LINE_TYPE_NAME'
254846                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
254847                                                                              l_component_type
254848                                                                             ,l_component_code
254849                                                                             ,l_component_type_code
254850                                                                             ,l_component_appl_id
254851                                                                             ,l_amb_context_code
254852                                                                             ,l_entity_code
254853                                                                             ,l_event_class_code
254854                                                                            )
254855                                     ,p_token_3                 => 'OWNER'
254856                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
254857                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
254858                                                                           ,p_lookup_code    => l_component_type_code
254859                                                                          )
254860                                     ,p_token_4                 => 'PRODUCT_NAME'
254861                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
254862                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
254863                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
254864                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
254865                                     ,p_ae_header_id            =>  NULL
254866                                        );
254867 
254868         IF (C_LEVEL_ERROR>= g_log_level) THEN
254869                  trace
254870                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
254871                       ,p_level    => C_LEVEL_ERROR
254872                       ,p_module   => l_log_module);
254873         END IF;
254874       END IF;
254875    END IF;
254876    --
254877    --
254878    ------------------------------------------------------------------------------------------------
254879    -- 4219869 Business Flow
254880    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
254881    -- Prior Entry.  Currently, the following code is always generated.
254882    ------------------------------------------------------------------------------------------------
254883    XLA_AE_LINES_PKG.ValidateCurrentLine;
254884 
254885    ------------------------------------------------------------------------------------
254886    -- 4219869 Business Flow
254887    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
254888    ------------------------------------------------------------------------------------
254889    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
254890 
254891    ----------------------------------------------------------------------------------
254892    -- 4219869 Business Flow
254893    -- Update journal entry status -- Need to generate this within IF <condition>
254894    ----------------------------------------------------------------------------------
254895    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
254896          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
254897          ,p_balance_type_code => l_balance_type_code
254898          );
254899 
254900    -------------------------------------------------------------------------------------------
254901    -- 4262811 - Generate the Accrual Reversal lines
254902    -------------------------------------------------------------------------------------------
254903    BEGIN
254904       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
254905                               (g_array_event(p_event_id).array_value_num('header_index'));
254906       IF l_acc_rev_flag IS NULL THEN
254907          l_acc_rev_flag := 'N';
254908       END IF;
254909    EXCEPTION
254910       WHEN OTHERS THEN
254911          l_acc_rev_flag := 'N';
254912    END;
254913    --
254914    IF (l_acc_rev_flag = 'Y') THEN
254915 
254916        -- 4645092  ------------------------------------------------------------------------------
254917        -- To allow MPA report to determine if it should generate report process
254918        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
254919        ------------------------------------------------------------------------------------------
254920 
254921        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
254922        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
254923    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
254924    -- call ADRs
254925    -- Bug 4922099
254926    --
254927    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
254928         (NVL(l_actual_upg_option, 'N') = 'O') OR
254929         (NVL(l_enc_upg_option, 'N') = 'O')
254930       )
254931    THEN
254932    NULL;
254933    --
254934    --
254935    
254936   l_ccid := AcctDerRule_35(
254937            p_application_id           => p_application_id
254938          , p_ae_header_id             => l_ae_header_id 
254939 , p_source_20 => p_source_20
254940 , p_source_54 => p_source_54
254941 , p_source_55 => p_source_55
254942 , p_source_55_meaning => p_source_55_meaning
254943 , p_source_56 => p_source_56
254944 , p_source_57 => p_source_57
254945 , p_source_61 => p_source_61
254946 , p_source_62 => p_source_62
254947 , p_source_62_meaning => p_source_62_meaning
254948          , x_transaction_coa_id       => l_adr_transaction_coa_id
254949          , x_accounting_coa_id        => l_adr_accounting_coa_id
254950          , x_value_type_code          => l_adr_value_type_code
254951          , p_side                     => 'NA'
254952    );
254953 
254954    xla_ae_lines_pkg.set_ccid(
254955     p_code_combination_id          => l_ccid
254956   , p_value_type_code              => l_adr_value_type_code
254957   , p_transaction_coa_id           => l_adr_transaction_coa_id
254958   , p_accounting_coa_id            => l_adr_accounting_coa_id
254959   , p_adr_code                     => 'PI_WIP_BRIDGING'
254960   , p_adr_type_code                => 'S'
254961   , p_component_type               => l_component_type
254962   , p_component_code               => l_component_code
254963   , p_component_type_code          => l_component_type_code
254964   , p_component_appl_id            => l_component_appl_id
254965   , p_amb_context_code             => l_amb_context_code
254966   , p_side                         => 'NA'
254967   );
254968 
254969 
254970    --
254971    --
254972    END IF;
254973 
254974        --
254975        -- Update the line information that should be overwritten
254976        --
254977        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
254978                                          p_header_num   => 1);
254979        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
254980 
254981        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
254982 
254983        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
254984           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
254985        END IF;
254986 
254987       --
254988       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
254989       --
254990       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
254991           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
254992       ELSE
254993           ---------------------------------------------------------------------------------------------------
254994           -- 4262811a Switch Sign
254995           ---------------------------------------------------------------------------------------------------
254996           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
254997           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
254998                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
254999           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
255000                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
255001           -- 5132302
255002           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
255003                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
255004 
255005       END IF;
255006 
255007       -- 4955764
255008       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
255009       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
255010 
255011 
255012       XLA_AE_LINES_PKG.ValidateCurrentLine;
255013       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
255014 
255015       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
255016                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
255017                ,p_balance_type_code => l_balance_type_code);
255018 
255019    END IF;
255020 
255021    -----------------------------------------------------------------------------------------
255022    -- 4262811 Multiperiod Accounting
255023    -----------------------------------------------------------------------------------------
255024      -- No MPA option is assigned.
255025 
255026 
255027 END IF;
255028 END IF;
255029 --
255030 
255031 --
255032 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
255033    trace
255034       (p_msg      => 'END of AcctLineType_458'
255035       ,p_level    => C_LEVEL_PROCEDURE
255036       ,p_module   => l_log_module);
255037 END IF;
255038 --
255039 EXCEPTION
255040   WHEN xla_exceptions_pkg.application_exception THEN
255041       RAISE;
255042   WHEN OTHERS THEN
255043        xla_exceptions_pkg.raise_message
255044            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_458');
255045 END AcctLineType_458;
255046 --
255047 
255048 ---------------------------------------
255049 --
255050 -- PRIVATE FUNCTION
255051 --         AcctLineType_459
255052 --
255053 ---------------------------------------
255054 PROCEDURE AcctLineType_459 (
255055   p_application_id        IN NUMBER
255056  ,p_event_id              IN NUMBER
255057  ,p_calculate_acctd_flag  IN VARCHAR2
255058  ,p_calculate_g_l_flag    IN VARCHAR2
255059  ,p_actual_flag           IN OUT VARCHAR2
255060  ,p_balance_type_code     OUT VARCHAR2
255061  ,p_gain_or_loss_ref      OUT VARCHAR2
255062  
255063 --Discrete Job Bridging Account
255064  , p_source_54            IN NUMBER
255065 --WIP Entity Type
255066  , p_source_55            IN NUMBER
255067  , p_source_55_meaning    IN VARCHAR2
255068 --Flow Schedule Bridging Account
255069  , p_source_56            IN NUMBER
255070 --Repetitive Item Bridging Account
255071  , p_source_57            IN NUMBER
255072 --DISTRIBUTION_IDENTIFIER
255073  , p_source_84            IN NUMBER
255074 --Distribution Type
255075  , p_source_85            IN VARCHAR2
255076  , p_source_85_meaning    IN VARCHAR2
255077 --Entered Currency Code
255078  , p_source_88            IN VARCHAR2
255079 --Entered Amount
255080  , p_source_91            IN NUMBER
255081 --Currency Conversion Date
255082  , p_source_92            IN DATE
255083 --Currency Conversion Rate
255084  , p_source_93            IN NUMBER
255085 --Accounted Amount
255086  , p_source_95            IN NUMBER
255087 --Accounting Line Type
255088  , p_source_97            IN NUMBER
255089 )
255090 IS
255091 
255092 l_component_type              VARCHAR2(80);
255093 l_component_code              VARCHAR2(30);
255094 l_component_type_code         VARCHAR2(1);
255095 l_component_appl_id           INTEGER;
255096 l_amb_context_code            VARCHAR2(30);
255097 l_entity_code                 VARCHAR2(30);
255098 l_event_class_code            VARCHAR2(30);
255099 l_ae_header_id                NUMBER;
255100 l_event_type_code             VARCHAR2(30);
255101 l_line_definition_code        VARCHAR2(30);
255102 l_line_definition_owner_code  VARCHAR2(1);
255103 --
255104 -- adr variables
255105 l_segment                     VARCHAR2(30);
255106 l_ccid                        NUMBER;
255107 l_adr_transaction_coa_id      NUMBER;
255108 l_adr_accounting_coa_id       NUMBER;
255109 l_adr_flexfield_segment_code  VARCHAR2(30);
255110 l_adr_flex_value_set_id       NUMBER;
255111 l_adr_value_type_code         VARCHAR2(30);
255112 l_adr_value_combination_id    NUMBER;
255113 l_adr_value_segment_code      VARCHAR2(30);
255114 
255115 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
255116 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
255117 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
255118 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
255119 
255120 -- 4262811 Variables ------------------------------------------------------------------------------------------
255121 l_entered_amt_idx             NUMBER;
255122 l_accted_amt_idx              NUMBER;
255123 l_acc_rev_flag                VARCHAR2(1);
255124 l_accrual_line_num            NUMBER;
255125 l_tmp_amt                     NUMBER;
255126 l_acc_rev_natural_side_code   VARCHAR2(1);
255127 
255128 l_num_entries                 NUMBER;
255129 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
255130 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
255131 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
255132 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
255133 l_recog_line_1                NUMBER;
255134 l_recog_line_2                NUMBER;
255135 
255136 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
255137 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
255138 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
255139 
255140 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
255141 
255142 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
255143 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
255144 
255145 ---------------------------------------------------------------------------------------------------------------
255146 
255147 
255148 --
255149 -- bulk performance
255150 --
255151 l_balance_type_code           VARCHAR2(1);
255152 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
255153 l_log_module                  VARCHAR2(240);
255154 
255155 --
255156 -- Upgrade strategy
255157 --
255158 l_actual_upg_option           VARCHAR2(1);
255159 l_enc_upg_option           VARCHAR2(1);
255160 
255161 --
255162 BEGIN
255163 --
255164 IF g_log_enabled THEN
255165       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_459';
255166 END IF;
255167 --
255168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
255169 
255170       trace
255171          (p_msg      => 'BEGIN of AcctLineType_459'
255172          ,p_level    => C_LEVEL_PROCEDURE
255173          ,p_module   => l_log_module);
255174 
255175 END IF;
255176 --
255177 l_component_type             := 'AMB_JLT';
255178 l_component_code             := 'PI_WIP_BRIDGING';
255179 l_component_type_code        := 'S';
255180 l_component_appl_id          :=  707;
255181 l_amb_context_code           := 'DEFAULT';
255182 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
255183 l_event_class_code           := 'OSP';
255184 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
255185 l_line_definition_owner_code := 'S';
255186 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
255187 --
255188 l_balance_type_code          := 'A';
255189 l_segment                     := NULL;
255190 l_ccid                        := NULL;
255191 l_adr_transaction_coa_id      := NULL;
255192 l_adr_accounting_coa_id       := NULL;
255193 l_adr_flexfield_segment_code  := NULL;
255194 l_adr_flex_value_set_id       := NULL;
255195 l_adr_value_type_code         := NULL;
255196 l_adr_value_combination_id    := NULL;
255197 l_adr_value_segment_code      := NULL;
255198 
255199 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
255200 l_bflow_class_code           := '';    -- 4219869 Business Flow
255201 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
255202 l_budgetary_control_flag     := 'N';
255203 
255204 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
255205 l_bflow_applied_to_amt       := NULL; -- 5132302
255206 l_entered_amt_idx            := NULL;          -- 4262811
255207 l_accted_amt_idx             := NULL;          -- 4262811
255208 l_acc_rev_flag               := NULL;          -- 4262811
255209 l_accrual_line_num           := NULL;          -- 4262811
255210 l_tmp_amt                    := NULL;          -- 4262811
255211 --
255212  
255213 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
255214     l_balance_type_code <> 'B' THEN
255215 IF NVL(p_source_97,9E125) =  7
255216  THEN 
255217 
255218    --
255219    XLA_AE_LINES_PKG.SetNewLine;
255220 
255221    p_balance_type_code          := l_balance_type_code;
255222    -- set the flag so later we will know whether the gain loss line needs to be created
255223    
255224    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
255225      p_actual_flag :='A';
255226    END IF;
255227 
255228    --
255229    -- bulk performance
255230    --
255231    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
255232                                       p_header_num   => 0); -- 4262811
255233    --
255234    -- set accounting line options
255235    --
255236    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
255237            p_natural_side_code          => 'C'
255238          , p_gain_or_loss_flag          => 'N'
255239          , p_gl_transfer_mode_code      => 'S'
255240          , p_acct_entry_type_code       => 'A'
255241          , p_switch_side_flag           => 'Y'
255242          , p_merge_duplicate_code       => 'N'
255243          );
255244    --
255245    l_acc_rev_natural_side_code := 'D';  -- 4262811
255246    -- 
255247    --
255248    -- set accounting line type info
255249    --
255250    xla_ae_lines_pkg.SetAcctLineType
255251       (p_component_type             => l_component_type
255252       ,p_event_type_code            => l_event_type_code
255253       ,p_line_definition_owner_code => l_line_definition_owner_code
255254       ,p_line_definition_code       => l_line_definition_code
255255       ,p_accounting_line_code       => l_component_code
255256       ,p_accounting_line_type_code  => l_component_type_code
255257       ,p_accounting_line_appl_id    => l_component_appl_id
255258       ,p_amb_context_code           => l_amb_context_code
255259       ,p_entity_code                => l_entity_code
255260       ,p_event_class_code           => l_event_class_code);
255261    --
255262    -- set accounting class
255263    --
255264    xla_ae_lines_pkg.SetAcctClass(
255265            p_accounting_class_code  => 'WIP_BRIDGING'
255266          , p_ae_header_id           => l_ae_header_id
255267          );
255268 
255269    --
255270    -- set rounding class
255271    --
255272    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
255273                       'WIP_BRIDGING';
255274 
255275    --
255276    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
255277    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
255278    --
255279    -- bulk performance
255280    --
255281    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
255282 
255283    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
255284       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
255285 
255286    -- 4955764
255287    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
255288       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
255289 
255290    -- 4458381 Public Sector Enh
255291    
255292    --
255293    -- set accounting attributes for the line type
255294    --
255295    l_entered_amt_idx := 3;
255296    l_accted_amt_idx  := 8;
255297    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
255298    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
255299    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
255300    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
255301    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
255302    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
255303    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
255304    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
255305    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
255306    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
255307    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
255308    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
255309    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
255310    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
255311    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
255312    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
255313    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
255314 
255315    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
255316    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
255317 
255318    ---------------------------------------------------------------------------------------------------------------
255319    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
255320    ---------------------------------------------------------------------------------------------------------------
255321    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
255322 
255323    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
255324    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
255325 
255326    IF xla_accounting_cache_pkg.GetValueChar
255327          (p_source_code         => 'LEDGER_CATEGORY_CODE'
255328          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
255329    AND l_bflow_method_code = 'PRIOR_ENTRY'
255330 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
255331    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
255332          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
255333        )
255334    THEN
255335          xla_ae_lines_pkg.BflowUpgEntry
255336            (p_business_method_code    => l_bflow_method_code
255337            ,p_business_class_code     => l_bflow_class_code
255338            ,p_balance_type            => l_balance_type_code);
255339    ELSE
255340       NULL;
255341 -- No business flow processing for business flow method of NONE.
255342    END IF;
255343 
255344    --
255345    -- call analytical criteria
255346    --
255347    
255348    --
255349    -- call description
255350    --
255351    -- No description or it is inherited.
255352    --
255353    -- call ADRs
255354    -- Bug 4922099
255355    --
255356    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
255357         (NVL(l_actual_upg_option, 'N') = 'O') OR
255358         (NVL(l_enc_upg_option, 'N') = 'O')
255359       )
255360    THEN
255361    NULL;
255362    --
255363    --
255364    
255365   l_ccid := AcctDerRule_31(
255366            p_application_id           => p_application_id
255367          , p_ae_header_id             => l_ae_header_id 
255368 , p_source_54 => p_source_54
255369 , p_source_55 => p_source_55
255370 , p_source_55_meaning => p_source_55_meaning
255371 , p_source_56 => p_source_56
255372 , p_source_57 => p_source_57
255373          , x_transaction_coa_id       => l_adr_transaction_coa_id
255374          , x_accounting_coa_id        => l_adr_accounting_coa_id
255375          , x_value_type_code          => l_adr_value_type_code
255376          , p_side                     => 'NA'
255377    );
255378 
255379    xla_ae_lines_pkg.set_ccid(
255380     p_code_combination_id          => l_ccid
255381   , p_value_type_code              => l_adr_value_type_code
255382   , p_transaction_coa_id           => l_adr_transaction_coa_id
255383   , p_accounting_coa_id            => l_adr_accounting_coa_id
255384   , p_adr_code                     => 'PI_OSP_BRIDGING'
255385   , p_adr_type_code                => 'S'
255386   , p_component_type               => l_component_type
255387   , p_component_code               => l_component_code
255388   , p_component_type_code          => l_component_type_code
255389   , p_component_appl_id            => l_component_appl_id
255390   , p_amb_context_code             => l_amb_context_code
255391   , p_side                         => 'NA'
255392   );
255393 
255394 
255395    --
255396    --
255397    END IF;
255398    --
255399    -- Bug 4922099
255400    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
255401           (NVL(l_enc_upg_option, 'N') = 'O')
255402         ) AND
255403         (l_bflow_method_code = 'PRIOR_ENTRY')
255404       )
255405    THEN
255406       IF
255407       --
255408       1 = 2
255409       --
255410       THEN
255411       xla_accounting_err_pkg.build_message
255412                                     (p_appli_s_name            => 'XLA'
255413                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
255414                                     ,p_token_1                 => 'LINE_NUMBER'
255415                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
255416                                     ,p_token_2                 => 'LINE_TYPE_NAME'
255417                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
255418                                                                              l_component_type
255419                                                                             ,l_component_code
255420                                                                             ,l_component_type_code
255421                                                                             ,l_component_appl_id
255422                                                                             ,l_amb_context_code
255423                                                                             ,l_entity_code
255424                                                                             ,l_event_class_code
255425                                                                            )
255426                                     ,p_token_3                 => 'OWNER'
255427                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
255428                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
255429                                                                           ,p_lookup_code    => l_component_type_code
255430                                                                          )
255431                                     ,p_token_4                 => 'PRODUCT_NAME'
255432                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
255433                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
255434                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
255435                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
255436                                     ,p_ae_header_id            =>  NULL
255437                                        );
255438 
255439         IF (C_LEVEL_ERROR>= g_log_level) THEN
255440                  trace
255441                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
255442                       ,p_level    => C_LEVEL_ERROR
255443                       ,p_module   => l_log_module);
255444         END IF;
255445       END IF;
255446    END IF;
255447    --
255448    --
255449    ------------------------------------------------------------------------------------------------
255450    -- 4219869 Business Flow
255451    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
255452    -- Prior Entry.  Currently, the following code is always generated.
255453    ------------------------------------------------------------------------------------------------
255454    XLA_AE_LINES_PKG.ValidateCurrentLine;
255455 
255456    ------------------------------------------------------------------------------------
255457    -- 4219869 Business Flow
255458    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
255459    ------------------------------------------------------------------------------------
255460    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
255461 
255462    ----------------------------------------------------------------------------------
255463    -- 4219869 Business Flow
255464    -- Update journal entry status -- Need to generate this within IF <condition>
255465    ----------------------------------------------------------------------------------
255466    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
255467          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
255468          ,p_balance_type_code => l_balance_type_code
255469          );
255470 
255471    -------------------------------------------------------------------------------------------
255472    -- 4262811 - Generate the Accrual Reversal lines
255473    -------------------------------------------------------------------------------------------
255474    BEGIN
255475       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
255476                               (g_array_event(p_event_id).array_value_num('header_index'));
255477       IF l_acc_rev_flag IS NULL THEN
255478          l_acc_rev_flag := 'N';
255479       END IF;
255480    EXCEPTION
255481       WHEN OTHERS THEN
255482          l_acc_rev_flag := 'N';
255483    END;
255484    --
255485    IF (l_acc_rev_flag = 'Y') THEN
255486 
255487        -- 4645092  ------------------------------------------------------------------------------
255488        -- To allow MPA report to determine if it should generate report process
255489        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
255490        ------------------------------------------------------------------------------------------
255491 
255492        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
255493        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
255494    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
255495    -- call ADRs
255496    -- Bug 4922099
255497    --
255498    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
255499         (NVL(l_actual_upg_option, 'N') = 'O') OR
255500         (NVL(l_enc_upg_option, 'N') = 'O')
255501       )
255502    THEN
255503    NULL;
255504    --
255505    --
255506    
255507   l_ccid := AcctDerRule_31(
255508            p_application_id           => p_application_id
255509          , p_ae_header_id             => l_ae_header_id 
255510 , p_source_54 => p_source_54
255511 , p_source_55 => p_source_55
255512 , p_source_55_meaning => p_source_55_meaning
255513 , p_source_56 => p_source_56
255514 , p_source_57 => p_source_57
255515          , x_transaction_coa_id       => l_adr_transaction_coa_id
255516          , x_accounting_coa_id        => l_adr_accounting_coa_id
255517          , x_value_type_code          => l_adr_value_type_code
255518          , p_side                     => 'NA'
255519    );
255520 
255521    xla_ae_lines_pkg.set_ccid(
255522     p_code_combination_id          => l_ccid
255523   , p_value_type_code              => l_adr_value_type_code
255524   , p_transaction_coa_id           => l_adr_transaction_coa_id
255525   , p_accounting_coa_id            => l_adr_accounting_coa_id
255526   , p_adr_code                     => 'PI_OSP_BRIDGING'
255527   , p_adr_type_code                => 'S'
255528   , p_component_type               => l_component_type
255529   , p_component_code               => l_component_code
255530   , p_component_type_code          => l_component_type_code
255531   , p_component_appl_id            => l_component_appl_id
255532   , p_amb_context_code             => l_amb_context_code
255533   , p_side                         => 'NA'
255534   );
255535 
255536 
255537    --
255538    --
255539    END IF;
255540 
255541        --
255542        -- Update the line information that should be overwritten
255543        --
255544        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
255545                                          p_header_num   => 1);
255546        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
255547 
255548        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
255549 
255550        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
255551           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
255552        END IF;
255553 
255554       --
255555       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
255556       --
255557       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
255558           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
255559       ELSE
255560           ---------------------------------------------------------------------------------------------------
255561           -- 4262811a Switch Sign
255562           ---------------------------------------------------------------------------------------------------
255563           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
255564           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
255565                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
255566           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
255567                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
255568           -- 5132302
255569           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
255570                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
255571 
255572       END IF;
255573 
255574       -- 4955764
255575       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
255576       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
255577 
255578 
255579       XLA_AE_LINES_PKG.ValidateCurrentLine;
255580       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
255581 
255582       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
255583                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
255584                ,p_balance_type_code => l_balance_type_code);
255585 
255586    END IF;
255587 
255588    -----------------------------------------------------------------------------------------
255589    -- 4262811 Multiperiod Accounting
255590    -----------------------------------------------------------------------------------------
255591      -- No MPA option is assigned.
255592 
255593 
255594 END IF;
255595 END IF;
255596 --
255597 
255598 --
255599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
255600    trace
255601       (p_msg      => 'END of AcctLineType_459'
255602       ,p_level    => C_LEVEL_PROCEDURE
255603       ,p_module   => l_log_module);
255604 END IF;
255605 --
255606 EXCEPTION
255607   WHEN xla_exceptions_pkg.application_exception THEN
255608       RAISE;
255609   WHEN OTHERS THEN
255610        xla_exceptions_pkg.raise_message
255611            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_459');
255612 END AcctLineType_459;
255613 --
255614 
255615 ---------------------------------------
255616 --
255617 -- PRIVATE FUNCTION
255618 --         AcctLineType_460
255619 --
255620 ---------------------------------------
255621 PROCEDURE AcctLineType_460 (
255622   p_application_id        IN NUMBER
255623  ,p_event_id              IN NUMBER
255624  ,p_calculate_acctd_flag  IN VARCHAR2
255625  ,p_calculate_g_l_flag    IN VARCHAR2
255626  ,p_actual_flag           IN OUT VARCHAR2
255627  ,p_balance_type_code     OUT VARCHAR2
255628  ,p_gain_or_loss_ref      OUT VARCHAR2
255629  
255630 --TRANSACTION_ID
255631  , p_source_1            IN NUMBER
255632 --Item Concatenated Segments
255633  , p_source_2            IN VARCHAR2
255634 --Transaction Quantity
255635  , p_source_3            IN NUMBER
255636 --Transaction Unit of Measure Code
255637  , p_source_4            IN VARCHAR2
255638 --Inventory Transaction Type Description
255639  , p_source_5            IN VARCHAR2
255640 --Transaction Distribution Account
255641  , p_source_20            IN NUMBER
255642 --Discrete Job Bridging Account
255643  , p_source_54            IN NUMBER
255644 --WIP Entity Type
255645  , p_source_55            IN NUMBER
255646  , p_source_55_meaning    IN VARCHAR2
255647 --Flow Schedule Bridging Account
255648  , p_source_56            IN NUMBER
255649 --Repetitive Item Bridging Account
255650  , p_source_57            IN NUMBER
255651 --TRANSACTION_SOURCE_ID
255652  , p_source_61            IN NUMBER
255653 --Transaction Action Name
255654  , p_source_62            IN NUMBER
255655  , p_source_62_meaning    IN VARCHAR2
255656 --DISTRIBUTION_IDENTIFIER
255657  , p_source_84            IN NUMBER
255658 --Distribution Type
255659  , p_source_85            IN VARCHAR2
255660  , p_source_85_meaning    IN VARCHAR2
255661 --Entered Currency Code
255662  , p_source_88            IN VARCHAR2
255663 --Entered Amount
255664  , p_source_91            IN NUMBER
255665 --Currency Conversion Date
255666  , p_source_92            IN DATE
255667 --Currency Conversion Rate
255668  , p_source_93            IN NUMBER
255669 --Currency Conversion Type
255670  , p_source_94            IN VARCHAR2
255671 --Accounted Amount
255672  , p_source_95            IN NUMBER
255673 --Accounting Line Type
255674  , p_source_97            IN NUMBER
255675 --Subinventory Type Indicator
255676  , p_source_110            IN VARCHAR2
255677  , p_source_110_meaning    IN VARCHAR2
255678 )
255679 IS
255680 
255681 l_component_type              VARCHAR2(80);
255682 l_component_code              VARCHAR2(30);
255683 l_component_type_code         VARCHAR2(1);
255684 l_component_appl_id           INTEGER;
255685 l_amb_context_code            VARCHAR2(30);
255686 l_entity_code                 VARCHAR2(30);
255687 l_event_class_code            VARCHAR2(30);
255688 l_ae_header_id                NUMBER;
255689 l_event_type_code             VARCHAR2(30);
255690 l_line_definition_code        VARCHAR2(30);
255691 l_line_definition_owner_code  VARCHAR2(1);
255692 --
255693 -- adr variables
255694 l_segment                     VARCHAR2(30);
255695 l_ccid                        NUMBER;
255696 l_adr_transaction_coa_id      NUMBER;
255697 l_adr_accounting_coa_id       NUMBER;
255698 l_adr_flexfield_segment_code  VARCHAR2(30);
255699 l_adr_flex_value_set_id       NUMBER;
255700 l_adr_value_type_code         VARCHAR2(30);
255701 l_adr_value_combination_id    NUMBER;
255702 l_adr_value_segment_code      VARCHAR2(30);
255703 
255704 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
255705 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
255706 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
255707 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
255708 
255709 -- 4262811 Variables ------------------------------------------------------------------------------------------
255710 l_entered_amt_idx             NUMBER;
255711 l_accted_amt_idx              NUMBER;
255712 l_acc_rev_flag                VARCHAR2(1);
255713 l_accrual_line_num            NUMBER;
255714 l_tmp_amt                     NUMBER;
255715 l_acc_rev_natural_side_code   VARCHAR2(1);
255716 
255717 l_num_entries                 NUMBER;
255718 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
255719 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
255720 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
255721 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
255722 l_recog_line_1                NUMBER;
255723 l_recog_line_2                NUMBER;
255724 
255725 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
255726 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
255727 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
255728 
255729 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
255730 
255731 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
255732 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
255733 
255734 ---------------------------------------------------------------------------------------------------------------
255735 
255736 
255737 --
255738 -- bulk performance
255739 --
255740 l_balance_type_code           VARCHAR2(1);
255741 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
255742 l_log_module                  VARCHAR2(240);
255743 
255744 --
255745 -- Upgrade strategy
255746 --
255747 l_actual_upg_option           VARCHAR2(1);
255748 l_enc_upg_option           VARCHAR2(1);
255749 
255750 --
255751 BEGIN
255752 --
255753 IF g_log_enabled THEN
255754       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_460';
255755 END IF;
255756 --
255757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
255758 
255759       trace
255760          (p_msg      => 'BEGIN of AcctLineType_460'
255761          ,p_level    => C_LEVEL_PROCEDURE
255762          ,p_module   => l_log_module);
255763 
255764 END IF;
255765 --
255766 l_component_type             := 'AMB_JLT';
255767 l_component_code             := 'PI_WIP_BRIDGING';
255768 l_component_type_code        := 'S';
255769 l_component_appl_id          :=  707;
255770 l_amb_context_code           := 'DEFAULT';
255771 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
255772 l_event_class_code           := 'WIP_MTL';
255773 l_event_type_code            := 'WIP_NEG_COMP_ISSUE';
255774 l_line_definition_owner_code := 'S';
255775 l_line_definition_code       := 'PI_WIP_NEG_COMP_ISSUE';
255776 --
255777 l_balance_type_code          := 'A';
255778 l_segment                     := NULL;
255779 l_ccid                        := NULL;
255780 l_adr_transaction_coa_id      := NULL;
255781 l_adr_accounting_coa_id       := NULL;
255782 l_adr_flexfield_segment_code  := NULL;
255783 l_adr_flex_value_set_id       := NULL;
255784 l_adr_value_type_code         := NULL;
255785 l_adr_value_combination_id    := NULL;
255786 l_adr_value_segment_code      := NULL;
255787 
255788 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
255789 l_bflow_class_code           := '';    -- 4219869 Business Flow
255790 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
255791 l_budgetary_control_flag     := 'N';
255792 
255793 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
255794 l_bflow_applied_to_amt       := NULL; -- 5132302
255795 l_entered_amt_idx            := NULL;          -- 4262811
255796 l_accted_amt_idx             := NULL;          -- 4262811
255797 l_acc_rev_flag               := NULL;          -- 4262811
255798 l_accrual_line_num           := NULL;          -- 4262811
255799 l_tmp_amt                    := NULL;          -- 4262811
255800 --
255801  
255802 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
255803     l_balance_type_code <> 'B' THEN
255804 IF (NVL(p_source_97,9E125) =  7 OR 
255805 NVL(p_source_97,9E125) =  13) AND 
255806 NVL(p_source_110,'
255807 ') =  'Y'
255808  THEN 
255809 
255810    --
255811    XLA_AE_LINES_PKG.SetNewLine;
255812 
255813    p_balance_type_code          := l_balance_type_code;
255814    -- set the flag so later we will know whether the gain loss line needs to be created
255815    
255816    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
255817      p_actual_flag :='A';
255818    END IF;
255819 
255820    --
255821    -- bulk performance
255822    --
255823    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
255824                                       p_header_num   => 0); -- 4262811
255825    --
255826    -- set accounting line options
255827    --
255828    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
255829            p_natural_side_code          => 'C'
255830          , p_gain_or_loss_flag          => 'N'
255831          , p_gl_transfer_mode_code      => 'S'
255832          , p_acct_entry_type_code       => 'A'
255833          , p_switch_side_flag           => 'Y'
255834          , p_merge_duplicate_code       => 'N'
255835          );
255836    --
255837    l_acc_rev_natural_side_code := 'D';  -- 4262811
255838    -- 
255839    --
255840    -- set accounting line type info
255841    --
255842    xla_ae_lines_pkg.SetAcctLineType
255843       (p_component_type             => l_component_type
255844       ,p_event_type_code            => l_event_type_code
255845       ,p_line_definition_owner_code => l_line_definition_owner_code
255846       ,p_line_definition_code       => l_line_definition_code
255847       ,p_accounting_line_code       => l_component_code
255848       ,p_accounting_line_type_code  => l_component_type_code
255849       ,p_accounting_line_appl_id    => l_component_appl_id
255850       ,p_amb_context_code           => l_amb_context_code
255851       ,p_entity_code                => l_entity_code
255852       ,p_event_class_code           => l_event_class_code);
255853    --
255854    -- set accounting class
255855    --
255856    xla_ae_lines_pkg.SetAcctClass(
255857            p_accounting_class_code  => 'WIP_BRIDGING'
255858          , p_ae_header_id           => l_ae_header_id
255859          );
255860 
255861    --
255862    -- set rounding class
255863    --
255864    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
255865                       'WIP_BRIDGING';
255866 
255867    --
255868    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
255869    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
255870    --
255871    -- bulk performance
255872    --
255873    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
255874 
255875    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
255876       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
255877 
255878    -- 4955764
255879    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
255880       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
255881 
255882    -- 4458381 Public Sector Enh
255883    
255884    --
255885    -- set accounting attributes for the line type
255886    --
255887    l_entered_amt_idx := 3;
255888    l_accted_amt_idx  := 8;
255889    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
255890    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
255891    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
255892    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
255893    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
255894    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
255895    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
255896    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
255897    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
255898    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
255899    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
255900    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
255901    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
255902    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
255903    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
255904    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
255905    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
255906 
255907    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
255908    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
255909 
255910    ---------------------------------------------------------------------------------------------------------------
255911    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
255912    ---------------------------------------------------------------------------------------------------------------
255913    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
255914 
255915    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
255916    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
255917 
255918    IF xla_accounting_cache_pkg.GetValueChar
255919          (p_source_code         => 'LEDGER_CATEGORY_CODE'
255920          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
255921    AND l_bflow_method_code = 'PRIOR_ENTRY'
255922 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
255923    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
255924          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
255925        )
255926    THEN
255927          xla_ae_lines_pkg.BflowUpgEntry
255928            (p_business_method_code    => l_bflow_method_code
255929            ,p_business_class_code     => l_bflow_class_code
255930            ,p_balance_type            => l_balance_type_code);
255931    ELSE
255932       NULL;
255933 -- No business flow processing for business flow method of NONE.
255934    END IF;
255935 
255936    --
255937    -- call analytical criteria
255938    --
255939    
255940    --
255941    -- call description
255942    --
255943    
255944 xla_ae_lines_pkg.SetLineDescription(
255945    p_ae_header_id => l_ae_header_id
255946   ,p_description  => Description_1 (
255947      p_application_id         => p_application_id
255948    , p_ae_header_id           => l_ae_header_id 
255949 , p_source_1 => p_source_1
255950 , p_source_2 => p_source_2
255951 , p_source_3 => p_source_3
255952 , p_source_4 => p_source_4
255953 , p_source_5 => p_source_5
255954    )
255955 );
255956 
255957 
255958    --
255959    -- call ADRs
255960    -- Bug 4922099
255961    --
255962    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
255963         (NVL(l_actual_upg_option, 'N') = 'O') OR
255964         (NVL(l_enc_upg_option, 'N') = 'O')
255965       )
255966    THEN
255967    NULL;
255968    --
255969    --
255970    
255971   l_ccid := AcctDerRule_35(
255972            p_application_id           => p_application_id
255973          , p_ae_header_id             => l_ae_header_id 
255974 , p_source_20 => p_source_20
255975 , p_source_54 => p_source_54
255976 , p_source_55 => p_source_55
255977 , p_source_55_meaning => p_source_55_meaning
255978 , p_source_56 => p_source_56
255979 , p_source_57 => p_source_57
255980 , p_source_61 => p_source_61
255981 , p_source_62 => p_source_62
255982 , p_source_62_meaning => p_source_62_meaning
255983          , x_transaction_coa_id       => l_adr_transaction_coa_id
255984          , x_accounting_coa_id        => l_adr_accounting_coa_id
255985          , x_value_type_code          => l_adr_value_type_code
255986          , p_side                     => 'NA'
255987    );
255988 
255989    xla_ae_lines_pkg.set_ccid(
255990     p_code_combination_id          => l_ccid
255991   , p_value_type_code              => l_adr_value_type_code
255992   , p_transaction_coa_id           => l_adr_transaction_coa_id
255993   , p_accounting_coa_id            => l_adr_accounting_coa_id
255994   , p_adr_code                     => 'PI_WIP_BRIDGING'
255995   , p_adr_type_code                => 'S'
255996   , p_component_type               => l_component_type
255997   , p_component_code               => l_component_code
255998   , p_component_type_code          => l_component_type_code
255999   , p_component_appl_id            => l_component_appl_id
256000   , p_amb_context_code             => l_amb_context_code
256001   , p_side                         => 'NA'
256002   );
256003 
256004 
256005    --
256006    --
256007    END IF;
256008    --
256009    -- Bug 4922099
256010    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
256011           (NVL(l_enc_upg_option, 'N') = 'O')
256012         ) AND
256013         (l_bflow_method_code = 'PRIOR_ENTRY')
256014       )
256015    THEN
256016       IF
256017       --
256018       1 = 2
256019       --
256020       THEN
256021       xla_accounting_err_pkg.build_message
256022                                     (p_appli_s_name            => 'XLA'
256023                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
256024                                     ,p_token_1                 => 'LINE_NUMBER'
256025                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
256026                                     ,p_token_2                 => 'LINE_TYPE_NAME'
256027                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
256028                                                                              l_component_type
256029                                                                             ,l_component_code
256030                                                                             ,l_component_type_code
256031                                                                             ,l_component_appl_id
256032                                                                             ,l_amb_context_code
256033                                                                             ,l_entity_code
256034                                                                             ,l_event_class_code
256035                                                                            )
256036                                     ,p_token_3                 => 'OWNER'
256037                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
256038                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
256039                                                                           ,p_lookup_code    => l_component_type_code
256040                                                                          )
256041                                     ,p_token_4                 => 'PRODUCT_NAME'
256042                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
256043                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
256044                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
256045                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
256046                                     ,p_ae_header_id            =>  NULL
256047                                        );
256048 
256049         IF (C_LEVEL_ERROR>= g_log_level) THEN
256050                  trace
256051                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
256052                       ,p_level    => C_LEVEL_ERROR
256053                       ,p_module   => l_log_module);
256054         END IF;
256055       END IF;
256056    END IF;
256057    --
256058    --
256059    ------------------------------------------------------------------------------------------------
256060    -- 4219869 Business Flow
256061    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
256062    -- Prior Entry.  Currently, the following code is always generated.
256063    ------------------------------------------------------------------------------------------------
256064    XLA_AE_LINES_PKG.ValidateCurrentLine;
256065 
256066    ------------------------------------------------------------------------------------
256067    -- 4219869 Business Flow
256068    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
256069    ------------------------------------------------------------------------------------
256070    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
256071 
256072    ----------------------------------------------------------------------------------
256073    -- 4219869 Business Flow
256074    -- Update journal entry status -- Need to generate this within IF <condition>
256075    ----------------------------------------------------------------------------------
256076    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
256077          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
256078          ,p_balance_type_code => l_balance_type_code
256079          );
256080 
256081    -------------------------------------------------------------------------------------------
256082    -- 4262811 - Generate the Accrual Reversal lines
256083    -------------------------------------------------------------------------------------------
256084    BEGIN
256085       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
256086                               (g_array_event(p_event_id).array_value_num('header_index'));
256087       IF l_acc_rev_flag IS NULL THEN
256088          l_acc_rev_flag := 'N';
256089       END IF;
256090    EXCEPTION
256091       WHEN OTHERS THEN
256092          l_acc_rev_flag := 'N';
256093    END;
256094    --
256095    IF (l_acc_rev_flag = 'Y') THEN
256096 
256097        -- 4645092  ------------------------------------------------------------------------------
256098        -- To allow MPA report to determine if it should generate report process
256099        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
256100        ------------------------------------------------------------------------------------------
256101 
256102        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
256103        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
256104    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
256105    -- call ADRs
256106    -- Bug 4922099
256107    --
256108    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
256109         (NVL(l_actual_upg_option, 'N') = 'O') OR
256110         (NVL(l_enc_upg_option, 'N') = 'O')
256111       )
256112    THEN
256113    NULL;
256114    --
256115    --
256116    
256117   l_ccid := AcctDerRule_35(
256118            p_application_id           => p_application_id
256119          , p_ae_header_id             => l_ae_header_id 
256120 , p_source_20 => p_source_20
256121 , p_source_54 => p_source_54
256122 , p_source_55 => p_source_55
256123 , p_source_55_meaning => p_source_55_meaning
256124 , p_source_56 => p_source_56
256125 , p_source_57 => p_source_57
256126 , p_source_61 => p_source_61
256127 , p_source_62 => p_source_62
256128 , p_source_62_meaning => p_source_62_meaning
256129          , x_transaction_coa_id       => l_adr_transaction_coa_id
256130          , x_accounting_coa_id        => l_adr_accounting_coa_id
256131          , x_value_type_code          => l_adr_value_type_code
256132          , p_side                     => 'NA'
256133    );
256134 
256135    xla_ae_lines_pkg.set_ccid(
256136     p_code_combination_id          => l_ccid
256137   , p_value_type_code              => l_adr_value_type_code
256138   , p_transaction_coa_id           => l_adr_transaction_coa_id
256139   , p_accounting_coa_id            => l_adr_accounting_coa_id
256140   , p_adr_code                     => 'PI_WIP_BRIDGING'
256141   , p_adr_type_code                => 'S'
256142   , p_component_type               => l_component_type
256143   , p_component_code               => l_component_code
256144   , p_component_type_code          => l_component_type_code
256145   , p_component_appl_id            => l_component_appl_id
256146   , p_amb_context_code             => l_amb_context_code
256147   , p_side                         => 'NA'
256148   );
256149 
256150 
256151    --
256152    --
256153    END IF;
256154 
256155        --
256156        -- Update the line information that should be overwritten
256157        --
256158        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
256159                                          p_header_num   => 1);
256160        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
256161 
256162        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
256163 
256164        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
256165           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
256166        END IF;
256167 
256168       --
256169       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
256170       --
256171       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
256172           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
256173       ELSE
256174           ---------------------------------------------------------------------------------------------------
256175           -- 4262811a Switch Sign
256176           ---------------------------------------------------------------------------------------------------
256177           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
256178           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
256179                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
256180           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
256181                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
256182           -- 5132302
256183           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
256184                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
256185 
256186       END IF;
256187 
256188       -- 4955764
256189       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
256190       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
256191 
256192 
256193       XLA_AE_LINES_PKG.ValidateCurrentLine;
256194       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
256195 
256196       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
256197                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
256198                ,p_balance_type_code => l_balance_type_code);
256199 
256200    END IF;
256201 
256202    -----------------------------------------------------------------------------------------
256203    -- 4262811 Multiperiod Accounting
256204    -----------------------------------------------------------------------------------------
256205      -- No MPA option is assigned.
256206 
256207 
256208 END IF;
256209 END IF;
256210 --
256211 
256212 --
256213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256214    trace
256215       (p_msg      => 'END of AcctLineType_460'
256216       ,p_level    => C_LEVEL_PROCEDURE
256217       ,p_module   => l_log_module);
256218 END IF;
256219 --
256220 EXCEPTION
256221   WHEN xla_exceptions_pkg.application_exception THEN
256222       RAISE;
256223   WHEN OTHERS THEN
256224        xla_exceptions_pkg.raise_message
256225            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_460');
256226 END AcctLineType_460;
256227 --
256228 
256229 ---------------------------------------
256230 --
256231 -- PRIVATE FUNCTION
256232 --         AcctLineType_461
256233 --
256234 ---------------------------------------
256235 PROCEDURE AcctLineType_461 (
256236   p_application_id        IN NUMBER
256237  ,p_event_id              IN NUMBER
256238  ,p_calculate_acctd_flag  IN VARCHAR2
256239  ,p_calculate_g_l_flag    IN VARCHAR2
256240  ,p_actual_flag           IN OUT VARCHAR2
256241  ,p_balance_type_code     OUT VARCHAR2
256242  ,p_gain_or_loss_ref      OUT VARCHAR2
256243  
256244 --TRANSACTION_ID
256245  , p_source_1            IN NUMBER
256246 --Item Concatenated Segments
256247  , p_source_2            IN VARCHAR2
256248 --Transaction Quantity
256249  , p_source_3            IN NUMBER
256250 --Transaction Unit of Measure Code
256251  , p_source_4            IN VARCHAR2
256252 --Inventory Transaction Type Description
256253  , p_source_5            IN VARCHAR2
256254 --Transaction Distribution Account
256255  , p_source_20            IN NUMBER
256256 --Discrete Job Bridging Account
256257  , p_source_54            IN NUMBER
256258 --WIP Entity Type
256259  , p_source_55            IN NUMBER
256260  , p_source_55_meaning    IN VARCHAR2
256261 --Flow Schedule Bridging Account
256262  , p_source_56            IN NUMBER
256263 --Repetitive Item Bridging Account
256264  , p_source_57            IN NUMBER
256265 --TRANSACTION_SOURCE_ID
256266  , p_source_61            IN NUMBER
256267 --Transaction Action Name
256268  , p_source_62            IN NUMBER
256269  , p_source_62_meaning    IN VARCHAR2
256270 --DISTRIBUTION_IDENTIFIER
256271  , p_source_84            IN NUMBER
256272 --Distribution Type
256273  , p_source_85            IN VARCHAR2
256274  , p_source_85_meaning    IN VARCHAR2
256275 --Entered Currency Code
256276  , p_source_88            IN VARCHAR2
256277 --Entered Amount
256278  , p_source_91            IN NUMBER
256279 --Currency Conversion Date
256280  , p_source_92            IN DATE
256281 --Currency Conversion Rate
256282  , p_source_93            IN NUMBER
256283 --Currency Conversion Type
256284  , p_source_94            IN VARCHAR2
256285 --Accounted Amount
256286  , p_source_95            IN NUMBER
256287 --Accounting Line Type
256288  , p_source_97            IN NUMBER
256289 --Subinventory Type Indicator
256290  , p_source_110            IN VARCHAR2
256291  , p_source_110_meaning    IN VARCHAR2
256292 )
256293 IS
256294 
256295 l_component_type              VARCHAR2(80);
256296 l_component_code              VARCHAR2(30);
256297 l_component_type_code         VARCHAR2(1);
256298 l_component_appl_id           INTEGER;
256299 l_amb_context_code            VARCHAR2(30);
256300 l_entity_code                 VARCHAR2(30);
256301 l_event_class_code            VARCHAR2(30);
256302 l_ae_header_id                NUMBER;
256303 l_event_type_code             VARCHAR2(30);
256304 l_line_definition_code        VARCHAR2(30);
256305 l_line_definition_owner_code  VARCHAR2(1);
256306 --
256307 -- adr variables
256308 l_segment                     VARCHAR2(30);
256309 l_ccid                        NUMBER;
256310 l_adr_transaction_coa_id      NUMBER;
256311 l_adr_accounting_coa_id       NUMBER;
256312 l_adr_flexfield_segment_code  VARCHAR2(30);
256313 l_adr_flex_value_set_id       NUMBER;
256314 l_adr_value_type_code         VARCHAR2(30);
256315 l_adr_value_combination_id    NUMBER;
256316 l_adr_value_segment_code      VARCHAR2(30);
256317 
256318 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
256319 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
256320 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
256321 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
256322 
256323 -- 4262811 Variables ------------------------------------------------------------------------------------------
256324 l_entered_amt_idx             NUMBER;
256325 l_accted_amt_idx              NUMBER;
256326 l_acc_rev_flag                VARCHAR2(1);
256327 l_accrual_line_num            NUMBER;
256328 l_tmp_amt                     NUMBER;
256329 l_acc_rev_natural_side_code   VARCHAR2(1);
256330 
256331 l_num_entries                 NUMBER;
256332 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
256333 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
256334 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
256335 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
256336 l_recog_line_1                NUMBER;
256337 l_recog_line_2                NUMBER;
256338 
256339 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
256340 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
256341 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
256342 
256343 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
256344 
256345 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
256346 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
256347 
256348 ---------------------------------------------------------------------------------------------------------------
256349 
256350 
256351 --
256352 -- bulk performance
256353 --
256354 l_balance_type_code           VARCHAR2(1);
256355 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
256356 l_log_module                  VARCHAR2(240);
256357 
256358 --
256359 -- Upgrade strategy
256360 --
256361 l_actual_upg_option           VARCHAR2(1);
256362 l_enc_upg_option           VARCHAR2(1);
256363 
256364 --
256365 BEGIN
256366 --
256367 IF g_log_enabled THEN
256368       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_461';
256369 END IF;
256370 --
256371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256372 
256373       trace
256374          (p_msg      => 'BEGIN of AcctLineType_461'
256375          ,p_level    => C_LEVEL_PROCEDURE
256376          ,p_module   => l_log_module);
256377 
256378 END IF;
256379 --
256380 l_component_type             := 'AMB_JLT';
256381 l_component_code             := 'PI_WIP_BRIDGING';
256382 l_component_type_code        := 'S';
256383 l_component_appl_id          :=  707;
256384 l_amb_context_code           := 'DEFAULT';
256385 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
256386 l_event_class_code           := 'WIP_MTL';
256387 l_event_type_code            := 'WIP_ASSEMBLY_COMPLETION';
256388 l_line_definition_owner_code := 'S';
256389 l_line_definition_code       := 'PI_WIP_ASSEMBLY_COMPLETION';
256390 --
256391 l_balance_type_code          := 'A';
256392 l_segment                     := NULL;
256393 l_ccid                        := NULL;
256394 l_adr_transaction_coa_id      := NULL;
256395 l_adr_accounting_coa_id       := NULL;
256396 l_adr_flexfield_segment_code  := NULL;
256397 l_adr_flex_value_set_id       := NULL;
256398 l_adr_value_type_code         := NULL;
256399 l_adr_value_combination_id    := NULL;
256400 l_adr_value_segment_code      := NULL;
256401 
256402 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
256403 l_bflow_class_code           := '';    -- 4219869 Business Flow
256404 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
256405 l_budgetary_control_flag     := 'N';
256406 
256407 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
256408 l_bflow_applied_to_amt       := NULL; -- 5132302
256409 l_entered_amt_idx            := NULL;          -- 4262811
256410 l_accted_amt_idx             := NULL;          -- 4262811
256411 l_acc_rev_flag               := NULL;          -- 4262811
256412 l_accrual_line_num           := NULL;          -- 4262811
256413 l_tmp_amt                    := NULL;          -- 4262811
256414 --
256415  
256416 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
256417     l_balance_type_code <> 'B' THEN
256418 IF (NVL(p_source_97,9E125) =  7 OR 
256419 NVL(p_source_97,9E125) =  13) AND 
256420 NVL(p_source_110,'
256421 ') =  'Y'
256422  THEN 
256423 
256424    --
256425    XLA_AE_LINES_PKG.SetNewLine;
256426 
256427    p_balance_type_code          := l_balance_type_code;
256428    -- set the flag so later we will know whether the gain loss line needs to be created
256429    
256430    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
256431      p_actual_flag :='A';
256432    END IF;
256433 
256434    --
256435    -- bulk performance
256436    --
256437    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
256438                                       p_header_num   => 0); -- 4262811
256439    --
256440    -- set accounting line options
256441    --
256442    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
256443            p_natural_side_code          => 'C'
256444          , p_gain_or_loss_flag          => 'N'
256445          , p_gl_transfer_mode_code      => 'S'
256446          , p_acct_entry_type_code       => 'A'
256447          , p_switch_side_flag           => 'Y'
256448          , p_merge_duplicate_code       => 'N'
256449          );
256450    --
256451    l_acc_rev_natural_side_code := 'D';  -- 4262811
256452    -- 
256453    --
256454    -- set accounting line type info
256455    --
256456    xla_ae_lines_pkg.SetAcctLineType
256457       (p_component_type             => l_component_type
256458       ,p_event_type_code            => l_event_type_code
256459       ,p_line_definition_owner_code => l_line_definition_owner_code
256460       ,p_line_definition_code       => l_line_definition_code
256461       ,p_accounting_line_code       => l_component_code
256462       ,p_accounting_line_type_code  => l_component_type_code
256463       ,p_accounting_line_appl_id    => l_component_appl_id
256464       ,p_amb_context_code           => l_amb_context_code
256465       ,p_entity_code                => l_entity_code
256466       ,p_event_class_code           => l_event_class_code);
256467    --
256468    -- set accounting class
256469    --
256470    xla_ae_lines_pkg.SetAcctClass(
256471            p_accounting_class_code  => 'WIP_BRIDGING'
256472          , p_ae_header_id           => l_ae_header_id
256473          );
256474 
256475    --
256476    -- set rounding class
256477    --
256478    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
256479                       'WIP_BRIDGING';
256480 
256481    --
256482    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
256483    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
256484    --
256485    -- bulk performance
256486    --
256487    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
256488 
256489    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
256490       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
256491 
256492    -- 4955764
256493    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
256494       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
256495 
256496    -- 4458381 Public Sector Enh
256497    
256498    --
256499    -- set accounting attributes for the line type
256500    --
256501    l_entered_amt_idx := 3;
256502    l_accted_amt_idx  := 8;
256503    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
256504    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
256505    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
256506    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
256507    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
256508    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
256509    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
256510    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
256511    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
256512    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
256513    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
256514    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
256515    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
256516    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
256517    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
256518    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
256519    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
256520 
256521    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
256522    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
256523 
256524    ---------------------------------------------------------------------------------------------------------------
256525    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
256526    ---------------------------------------------------------------------------------------------------------------
256527    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
256528 
256529    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
256530    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
256531 
256532    IF xla_accounting_cache_pkg.GetValueChar
256533          (p_source_code         => 'LEDGER_CATEGORY_CODE'
256534          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
256535    AND l_bflow_method_code = 'PRIOR_ENTRY'
256536 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
256537    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
256538          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
256539        )
256540    THEN
256541          xla_ae_lines_pkg.BflowUpgEntry
256542            (p_business_method_code    => l_bflow_method_code
256543            ,p_business_class_code     => l_bflow_class_code
256544            ,p_balance_type            => l_balance_type_code);
256545    ELSE
256546       NULL;
256547 -- No business flow processing for business flow method of NONE.
256548    END IF;
256549 
256550    --
256551    -- call analytical criteria
256552    --
256553    
256554    --
256555    -- call description
256556    --
256557    
256558 xla_ae_lines_pkg.SetLineDescription(
256559    p_ae_header_id => l_ae_header_id
256560   ,p_description  => Description_1 (
256561      p_application_id         => p_application_id
256562    , p_ae_header_id           => l_ae_header_id 
256563 , p_source_1 => p_source_1
256564 , p_source_2 => p_source_2
256565 , p_source_3 => p_source_3
256566 , p_source_4 => p_source_4
256567 , p_source_5 => p_source_5
256568    )
256569 );
256570 
256571 
256572    --
256573    -- call ADRs
256574    -- Bug 4922099
256575    --
256576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
256577         (NVL(l_actual_upg_option, 'N') = 'O') OR
256578         (NVL(l_enc_upg_option, 'N') = 'O')
256579       )
256580    THEN
256581    NULL;
256582    --
256583    --
256584    
256585   l_ccid := AcctDerRule_35(
256586            p_application_id           => p_application_id
256587          , p_ae_header_id             => l_ae_header_id 
256588 , p_source_20 => p_source_20
256589 , p_source_54 => p_source_54
256590 , p_source_55 => p_source_55
256591 , p_source_55_meaning => p_source_55_meaning
256592 , p_source_56 => p_source_56
256593 , p_source_57 => p_source_57
256594 , p_source_61 => p_source_61
256595 , p_source_62 => p_source_62
256596 , p_source_62_meaning => p_source_62_meaning
256597          , x_transaction_coa_id       => l_adr_transaction_coa_id
256598          , x_accounting_coa_id        => l_adr_accounting_coa_id
256599          , x_value_type_code          => l_adr_value_type_code
256600          , p_side                     => 'NA'
256601    );
256602 
256603    xla_ae_lines_pkg.set_ccid(
256604     p_code_combination_id          => l_ccid
256605   , p_value_type_code              => l_adr_value_type_code
256606   , p_transaction_coa_id           => l_adr_transaction_coa_id
256607   , p_accounting_coa_id            => l_adr_accounting_coa_id
256608   , p_adr_code                     => 'PI_WIP_BRIDGING'
256609   , p_adr_type_code                => 'S'
256610   , p_component_type               => l_component_type
256611   , p_component_code               => l_component_code
256612   , p_component_type_code          => l_component_type_code
256613   , p_component_appl_id            => l_component_appl_id
256614   , p_amb_context_code             => l_amb_context_code
256615   , p_side                         => 'NA'
256616   );
256617 
256618 
256619    --
256620    --
256621    END IF;
256622    --
256623    -- Bug 4922099
256624    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
256625           (NVL(l_enc_upg_option, 'N') = 'O')
256626         ) AND
256627         (l_bflow_method_code = 'PRIOR_ENTRY')
256628       )
256629    THEN
256630       IF
256631       --
256632       1 = 2
256633       --
256634       THEN
256635       xla_accounting_err_pkg.build_message
256636                                     (p_appli_s_name            => 'XLA'
256637                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
256638                                     ,p_token_1                 => 'LINE_NUMBER'
256639                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
256640                                     ,p_token_2                 => 'LINE_TYPE_NAME'
256641                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
256642                                                                              l_component_type
256643                                                                             ,l_component_code
256644                                                                             ,l_component_type_code
256645                                                                             ,l_component_appl_id
256646                                                                             ,l_amb_context_code
256647                                                                             ,l_entity_code
256648                                                                             ,l_event_class_code
256649                                                                            )
256650                                     ,p_token_3                 => 'OWNER'
256651                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
256652                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
256653                                                                           ,p_lookup_code    => l_component_type_code
256654                                                                          )
256655                                     ,p_token_4                 => 'PRODUCT_NAME'
256656                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
256657                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
256658                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
256659                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
256660                                     ,p_ae_header_id            =>  NULL
256661                                        );
256662 
256663         IF (C_LEVEL_ERROR>= g_log_level) THEN
256664                  trace
256665                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
256666                       ,p_level    => C_LEVEL_ERROR
256667                       ,p_module   => l_log_module);
256668         END IF;
256669       END IF;
256670    END IF;
256671    --
256672    --
256673    ------------------------------------------------------------------------------------------------
256674    -- 4219869 Business Flow
256675    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
256676    -- Prior Entry.  Currently, the following code is always generated.
256677    ------------------------------------------------------------------------------------------------
256678    XLA_AE_LINES_PKG.ValidateCurrentLine;
256679 
256680    ------------------------------------------------------------------------------------
256681    -- 4219869 Business Flow
256682    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
256683    ------------------------------------------------------------------------------------
256684    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
256685 
256686    ----------------------------------------------------------------------------------
256687    -- 4219869 Business Flow
256688    -- Update journal entry status -- Need to generate this within IF <condition>
256689    ----------------------------------------------------------------------------------
256690    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
256691          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
256692          ,p_balance_type_code => l_balance_type_code
256693          );
256694 
256695    -------------------------------------------------------------------------------------------
256696    -- 4262811 - Generate the Accrual Reversal lines
256697    -------------------------------------------------------------------------------------------
256698    BEGIN
256699       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
256700                               (g_array_event(p_event_id).array_value_num('header_index'));
256701       IF l_acc_rev_flag IS NULL THEN
256702          l_acc_rev_flag := 'N';
256703       END IF;
256704    EXCEPTION
256705       WHEN OTHERS THEN
256706          l_acc_rev_flag := 'N';
256707    END;
256708    --
256709    IF (l_acc_rev_flag = 'Y') THEN
256710 
256711        -- 4645092  ------------------------------------------------------------------------------
256712        -- To allow MPA report to determine if it should generate report process
256713        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
256714        ------------------------------------------------------------------------------------------
256715 
256716        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
256717        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
256718    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
256719    -- call ADRs
256720    -- Bug 4922099
256721    --
256722    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
256723         (NVL(l_actual_upg_option, 'N') = 'O') OR
256724         (NVL(l_enc_upg_option, 'N') = 'O')
256725       )
256726    THEN
256727    NULL;
256728    --
256729    --
256730    
256731   l_ccid := AcctDerRule_35(
256732            p_application_id           => p_application_id
256733          , p_ae_header_id             => l_ae_header_id 
256734 , p_source_20 => p_source_20
256735 , p_source_54 => p_source_54
256736 , p_source_55 => p_source_55
256737 , p_source_55_meaning => p_source_55_meaning
256738 , p_source_56 => p_source_56
256739 , p_source_57 => p_source_57
256740 , p_source_61 => p_source_61
256741 , p_source_62 => p_source_62
256742 , p_source_62_meaning => p_source_62_meaning
256743          , x_transaction_coa_id       => l_adr_transaction_coa_id
256744          , x_accounting_coa_id        => l_adr_accounting_coa_id
256745          , x_value_type_code          => l_adr_value_type_code
256746          , p_side                     => 'NA'
256747    );
256748 
256749    xla_ae_lines_pkg.set_ccid(
256750     p_code_combination_id          => l_ccid
256751   , p_value_type_code              => l_adr_value_type_code
256752   , p_transaction_coa_id           => l_adr_transaction_coa_id
256753   , p_accounting_coa_id            => l_adr_accounting_coa_id
256754   , p_adr_code                     => 'PI_WIP_BRIDGING'
256755   , p_adr_type_code                => 'S'
256756   , p_component_type               => l_component_type
256757   , p_component_code               => l_component_code
256758   , p_component_type_code          => l_component_type_code
256759   , p_component_appl_id            => l_component_appl_id
256760   , p_amb_context_code             => l_amb_context_code
256761   , p_side                         => 'NA'
256762   );
256763 
256764 
256765    --
256766    --
256767    END IF;
256768 
256769        --
256770        -- Update the line information that should be overwritten
256771        --
256772        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
256773                                          p_header_num   => 1);
256774        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
256775 
256776        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
256777 
256778        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
256779           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
256780        END IF;
256781 
256782       --
256783       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
256784       --
256785       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
256786           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
256787       ELSE
256788           ---------------------------------------------------------------------------------------------------
256789           -- 4262811a Switch Sign
256790           ---------------------------------------------------------------------------------------------------
256791           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
256792           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
256793                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
256794           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
256795                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
256796           -- 5132302
256797           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
256798                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
256799 
256800       END IF;
256801 
256802       -- 4955764
256803       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
256804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
256805 
256806 
256807       XLA_AE_LINES_PKG.ValidateCurrentLine;
256808       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
256809 
256810       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
256811                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
256812                ,p_balance_type_code => l_balance_type_code);
256813 
256814    END IF;
256815 
256816    -----------------------------------------------------------------------------------------
256817    -- 4262811 Multiperiod Accounting
256818    -----------------------------------------------------------------------------------------
256819      -- No MPA option is assigned.
256820 
256821 
256822 END IF;
256823 END IF;
256824 --
256825 
256826 --
256827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256828    trace
256829       (p_msg      => 'END of AcctLineType_461'
256830       ,p_level    => C_LEVEL_PROCEDURE
256831       ,p_module   => l_log_module);
256832 END IF;
256833 --
256834 EXCEPTION
256835   WHEN xla_exceptions_pkg.application_exception THEN
256836       RAISE;
256837   WHEN OTHERS THEN
256838        xla_exceptions_pkg.raise_message
256839            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_461');
256840 END AcctLineType_461;
256841 --
256842 
256843 ---------------------------------------
256844 --
256845 -- PRIVATE FUNCTION
256846 --         AcctLineType_462
256847 --
256848 ---------------------------------------
256849 PROCEDURE AcctLineType_462 (
256850   p_application_id        IN NUMBER
256851  ,p_event_id              IN NUMBER
256852  ,p_calculate_acctd_flag  IN VARCHAR2
256853  ,p_calculate_g_l_flag    IN VARCHAR2
256854  ,p_actual_flag           IN OUT VARCHAR2
256855  ,p_balance_type_code     OUT VARCHAR2
256856  ,p_gain_or_loss_ref      OUT VARCHAR2
256857  
256858 --TRANSACTION_ID
256859  , p_source_1            IN NUMBER
256860 --Item Concatenated Segments
256861  , p_source_2            IN VARCHAR2
256862 --Transaction Quantity
256863  , p_source_3            IN NUMBER
256864 --Transaction Unit of Measure Code
256865  , p_source_4            IN VARCHAR2
256866 --Inventory Transaction Type Description
256867  , p_source_5            IN VARCHAR2
256868 --Transaction Distribution Account
256869  , p_source_20            IN NUMBER
256870 --Discrete Job Bridging Account
256871  , p_source_54            IN NUMBER
256872 --WIP Entity Type
256873  , p_source_55            IN NUMBER
256874  , p_source_55_meaning    IN VARCHAR2
256875 --Flow Schedule Bridging Account
256876  , p_source_56            IN NUMBER
256877 --Repetitive Item Bridging Account
256878  , p_source_57            IN NUMBER
256879 --TRANSACTION_SOURCE_ID
256880  , p_source_61            IN NUMBER
256881 --Transaction Action Name
256882  , p_source_62            IN NUMBER
256883  , p_source_62_meaning    IN VARCHAR2
256884 --DISTRIBUTION_IDENTIFIER
256885  , p_source_84            IN NUMBER
256886 --Distribution Type
256887  , p_source_85            IN VARCHAR2
256888  , p_source_85_meaning    IN VARCHAR2
256889 --Entered Currency Code
256890  , p_source_88            IN VARCHAR2
256891 --Entered Amount
256892  , p_source_91            IN NUMBER
256893 --Currency Conversion Date
256894  , p_source_92            IN DATE
256895 --Currency Conversion Rate
256896  , p_source_93            IN NUMBER
256897 --Currency Conversion Type
256898  , p_source_94            IN VARCHAR2
256899 --Accounted Amount
256900  , p_source_95            IN NUMBER
256901 --Accounting Line Type
256902  , p_source_97            IN NUMBER
256903 --Subinventory Type Indicator
256904  , p_source_110            IN VARCHAR2
256905  , p_source_110_meaning    IN VARCHAR2
256906 )
256907 IS
256908 
256909 l_component_type              VARCHAR2(80);
256910 l_component_code              VARCHAR2(30);
256911 l_component_type_code         VARCHAR2(1);
256912 l_component_appl_id           INTEGER;
256913 l_amb_context_code            VARCHAR2(30);
256914 l_entity_code                 VARCHAR2(30);
256915 l_event_class_code            VARCHAR2(30);
256916 l_ae_header_id                NUMBER;
256917 l_event_type_code             VARCHAR2(30);
256918 l_line_definition_code        VARCHAR2(30);
256919 l_line_definition_owner_code  VARCHAR2(1);
256920 --
256921 -- adr variables
256922 l_segment                     VARCHAR2(30);
256923 l_ccid                        NUMBER;
256924 l_adr_transaction_coa_id      NUMBER;
256925 l_adr_accounting_coa_id       NUMBER;
256926 l_adr_flexfield_segment_code  VARCHAR2(30);
256927 l_adr_flex_value_set_id       NUMBER;
256928 l_adr_value_type_code         VARCHAR2(30);
256929 l_adr_value_combination_id    NUMBER;
256930 l_adr_value_segment_code      VARCHAR2(30);
256931 
256932 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
256933 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
256934 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
256935 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
256936 
256937 -- 4262811 Variables ------------------------------------------------------------------------------------------
256938 l_entered_amt_idx             NUMBER;
256939 l_accted_amt_idx              NUMBER;
256940 l_acc_rev_flag                VARCHAR2(1);
256941 l_accrual_line_num            NUMBER;
256942 l_tmp_amt                     NUMBER;
256943 l_acc_rev_natural_side_code   VARCHAR2(1);
256944 
256945 l_num_entries                 NUMBER;
256946 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
256947 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
256948 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
256949 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
256950 l_recog_line_1                NUMBER;
256951 l_recog_line_2                NUMBER;
256952 
256953 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
256954 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
256955 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
256956 
256957 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
256958 
256959 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
256960 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
256961 
256962 ---------------------------------------------------------------------------------------------------------------
256963 
256964 
256965 --
256966 -- bulk performance
256967 --
256968 l_balance_type_code           VARCHAR2(1);
256969 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
256970 l_log_module                  VARCHAR2(240);
256971 
256972 --
256973 -- Upgrade strategy
256974 --
256975 l_actual_upg_option           VARCHAR2(1);
256976 l_enc_upg_option           VARCHAR2(1);
256977 
256978 --
256979 BEGIN
256980 --
256981 IF g_log_enabled THEN
256982       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_462';
256983 END IF;
256984 --
256985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256986 
256987       trace
256988          (p_msg      => 'BEGIN of AcctLineType_462'
256989          ,p_level    => C_LEVEL_PROCEDURE
256990          ,p_module   => l_log_module);
256991 
256992 END IF;
256993 --
256994 l_component_type             := 'AMB_JLT';
256995 l_component_code             := 'PI_WIP_BRIDGING';
256996 l_component_type_code        := 'S';
256997 l_component_appl_id          :=  707;
256998 l_amb_context_code           := 'DEFAULT';
256999 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
257000 l_event_class_code           := 'WIP_MTL';
257001 l_event_type_code            := 'WIP_NEG_COMP_RETURN';
257002 l_line_definition_owner_code := 'S';
257003 l_line_definition_code       := 'PI_WIP_NEG_COMP_RETURN';
257004 --
257005 l_balance_type_code          := 'A';
257006 l_segment                     := NULL;
257007 l_ccid                        := NULL;
257008 l_adr_transaction_coa_id      := NULL;
257009 l_adr_accounting_coa_id       := NULL;
257010 l_adr_flexfield_segment_code  := NULL;
257011 l_adr_flex_value_set_id       := NULL;
257012 l_adr_value_type_code         := NULL;
257013 l_adr_value_combination_id    := NULL;
257014 l_adr_value_segment_code      := NULL;
257015 
257016 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
257017 l_bflow_class_code           := '';    -- 4219869 Business Flow
257018 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
257019 l_budgetary_control_flag     := 'N';
257020 
257021 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
257022 l_bflow_applied_to_amt       := NULL; -- 5132302
257023 l_entered_amt_idx            := NULL;          -- 4262811
257024 l_accted_amt_idx             := NULL;          -- 4262811
257025 l_acc_rev_flag               := NULL;          -- 4262811
257026 l_accrual_line_num           := NULL;          -- 4262811
257027 l_tmp_amt                    := NULL;          -- 4262811
257028 --
257029  
257030 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
257031     l_balance_type_code <> 'B' THEN
257032 IF (NVL(p_source_97,9E125) =  7 OR 
257033 NVL(p_source_97,9E125) =  13) AND 
257034 NVL(p_source_110,'
257035 ') =  'Y'
257036  THEN 
257037 
257038    --
257039    XLA_AE_LINES_PKG.SetNewLine;
257040 
257041    p_balance_type_code          := l_balance_type_code;
257042    -- set the flag so later we will know whether the gain loss line needs to be created
257043    
257044    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
257045      p_actual_flag :='A';
257046    END IF;
257047 
257048    --
257049    -- bulk performance
257050    --
257051    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
257052                                       p_header_num   => 0); -- 4262811
257053    --
257054    -- set accounting line options
257055    --
257056    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
257057            p_natural_side_code          => 'C'
257058          , p_gain_or_loss_flag          => 'N'
257059          , p_gl_transfer_mode_code      => 'S'
257060          , p_acct_entry_type_code       => 'A'
257061          , p_switch_side_flag           => 'Y'
257062          , p_merge_duplicate_code       => 'N'
257063          );
257064    --
257065    l_acc_rev_natural_side_code := 'D';  -- 4262811
257066    -- 
257067    --
257068    -- set accounting line type info
257069    --
257070    xla_ae_lines_pkg.SetAcctLineType
257071       (p_component_type             => l_component_type
257072       ,p_event_type_code            => l_event_type_code
257073       ,p_line_definition_owner_code => l_line_definition_owner_code
257074       ,p_line_definition_code       => l_line_definition_code
257075       ,p_accounting_line_code       => l_component_code
257076       ,p_accounting_line_type_code  => l_component_type_code
257077       ,p_accounting_line_appl_id    => l_component_appl_id
257078       ,p_amb_context_code           => l_amb_context_code
257079       ,p_entity_code                => l_entity_code
257080       ,p_event_class_code           => l_event_class_code);
257081    --
257082    -- set accounting class
257083    --
257084    xla_ae_lines_pkg.SetAcctClass(
257085            p_accounting_class_code  => 'WIP_BRIDGING'
257086          , p_ae_header_id           => l_ae_header_id
257087          );
257088 
257089    --
257090    -- set rounding class
257091    --
257092    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
257093                       'WIP_BRIDGING';
257094 
257095    --
257096    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
257097    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
257098    --
257099    -- bulk performance
257100    --
257101    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
257102 
257103    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
257104       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
257105 
257106    -- 4955764
257107    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
257108       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
257109 
257110    -- 4458381 Public Sector Enh
257111    
257112    --
257113    -- set accounting attributes for the line type
257114    --
257115    l_entered_amt_idx := 3;
257116    l_accted_amt_idx  := 8;
257117    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
257118    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
257119    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
257120    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
257121    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
257122    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
257123    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
257124    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
257125    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
257126    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
257127    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
257128    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
257129    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
257130    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
257131    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
257132    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
257133    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
257134 
257135    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
257136    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
257137 
257138    ---------------------------------------------------------------------------------------------------------------
257139    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
257140    ---------------------------------------------------------------------------------------------------------------
257141    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
257142 
257143    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
257144    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
257145 
257146    IF xla_accounting_cache_pkg.GetValueChar
257147          (p_source_code         => 'LEDGER_CATEGORY_CODE'
257148          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
257149    AND l_bflow_method_code = 'PRIOR_ENTRY'
257150 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
257151    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
257152          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
257153        )
257154    THEN
257155          xla_ae_lines_pkg.BflowUpgEntry
257156            (p_business_method_code    => l_bflow_method_code
257157            ,p_business_class_code     => l_bflow_class_code
257158            ,p_balance_type            => l_balance_type_code);
257159    ELSE
257160       NULL;
257161 -- No business flow processing for business flow method of NONE.
257162    END IF;
257163 
257164    --
257165    -- call analytical criteria
257166    --
257167    
257168    --
257169    -- call description
257170    --
257171    
257172 xla_ae_lines_pkg.SetLineDescription(
257173    p_ae_header_id => l_ae_header_id
257174   ,p_description  => Description_1 (
257175      p_application_id         => p_application_id
257176    , p_ae_header_id           => l_ae_header_id 
257177 , p_source_1 => p_source_1
257178 , p_source_2 => p_source_2
257179 , p_source_3 => p_source_3
257180 , p_source_4 => p_source_4
257181 , p_source_5 => p_source_5
257182    )
257183 );
257184 
257185 
257186    --
257187    -- call ADRs
257188    -- Bug 4922099
257189    --
257190    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
257191         (NVL(l_actual_upg_option, 'N') = 'O') OR
257192         (NVL(l_enc_upg_option, 'N') = 'O')
257193       )
257194    THEN
257195    NULL;
257196    --
257197    --
257198    
257199   l_ccid := AcctDerRule_35(
257200            p_application_id           => p_application_id
257201          , p_ae_header_id             => l_ae_header_id 
257202 , p_source_20 => p_source_20
257203 , p_source_54 => p_source_54
257204 , p_source_55 => p_source_55
257205 , p_source_55_meaning => p_source_55_meaning
257206 , p_source_56 => p_source_56
257207 , p_source_57 => p_source_57
257208 , p_source_61 => p_source_61
257209 , p_source_62 => p_source_62
257210 , p_source_62_meaning => p_source_62_meaning
257211          , x_transaction_coa_id       => l_adr_transaction_coa_id
257212          , x_accounting_coa_id        => l_adr_accounting_coa_id
257213          , x_value_type_code          => l_adr_value_type_code
257214          , p_side                     => 'NA'
257215    );
257216 
257217    xla_ae_lines_pkg.set_ccid(
257218     p_code_combination_id          => l_ccid
257219   , p_value_type_code              => l_adr_value_type_code
257220   , p_transaction_coa_id           => l_adr_transaction_coa_id
257221   , p_accounting_coa_id            => l_adr_accounting_coa_id
257222   , p_adr_code                     => 'PI_WIP_BRIDGING'
257223   , p_adr_type_code                => 'S'
257224   , p_component_type               => l_component_type
257225   , p_component_code               => l_component_code
257226   , p_component_type_code          => l_component_type_code
257227   , p_component_appl_id            => l_component_appl_id
257228   , p_amb_context_code             => l_amb_context_code
257229   , p_side                         => 'NA'
257230   );
257231 
257232 
257233    --
257234    --
257235    END IF;
257236    --
257237    -- Bug 4922099
257238    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
257239           (NVL(l_enc_upg_option, 'N') = 'O')
257240         ) AND
257241         (l_bflow_method_code = 'PRIOR_ENTRY')
257242       )
257243    THEN
257244       IF
257245       --
257246       1 = 2
257247       --
257248       THEN
257249       xla_accounting_err_pkg.build_message
257250                                     (p_appli_s_name            => 'XLA'
257251                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
257252                                     ,p_token_1                 => 'LINE_NUMBER'
257253                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
257254                                     ,p_token_2                 => 'LINE_TYPE_NAME'
257255                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
257256                                                                              l_component_type
257257                                                                             ,l_component_code
257258                                                                             ,l_component_type_code
257259                                                                             ,l_component_appl_id
257260                                                                             ,l_amb_context_code
257261                                                                             ,l_entity_code
257262                                                                             ,l_event_class_code
257263                                                                            )
257264                                     ,p_token_3                 => 'OWNER'
257265                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
257266                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
257267                                                                           ,p_lookup_code    => l_component_type_code
257268                                                                          )
257269                                     ,p_token_4                 => 'PRODUCT_NAME'
257270                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
257271                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
257272                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
257273                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
257274                                     ,p_ae_header_id            =>  NULL
257275                                        );
257276 
257277         IF (C_LEVEL_ERROR>= g_log_level) THEN
257278                  trace
257279                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
257280                       ,p_level    => C_LEVEL_ERROR
257281                       ,p_module   => l_log_module);
257282         END IF;
257283       END IF;
257284    END IF;
257285    --
257286    --
257287    ------------------------------------------------------------------------------------------------
257288    -- 4219869 Business Flow
257289    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
257290    -- Prior Entry.  Currently, the following code is always generated.
257291    ------------------------------------------------------------------------------------------------
257292    XLA_AE_LINES_PKG.ValidateCurrentLine;
257293 
257294    ------------------------------------------------------------------------------------
257295    -- 4219869 Business Flow
257296    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
257297    ------------------------------------------------------------------------------------
257298    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
257299 
257300    ----------------------------------------------------------------------------------
257301    -- 4219869 Business Flow
257302    -- Update journal entry status -- Need to generate this within IF <condition>
257303    ----------------------------------------------------------------------------------
257304    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
257305          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
257306          ,p_balance_type_code => l_balance_type_code
257307          );
257308 
257309    -------------------------------------------------------------------------------------------
257310    -- 4262811 - Generate the Accrual Reversal lines
257311    -------------------------------------------------------------------------------------------
257312    BEGIN
257313       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
257314                               (g_array_event(p_event_id).array_value_num('header_index'));
257315       IF l_acc_rev_flag IS NULL THEN
257316          l_acc_rev_flag := 'N';
257317       END IF;
257318    EXCEPTION
257319       WHEN OTHERS THEN
257320          l_acc_rev_flag := 'N';
257321    END;
257322    --
257323    IF (l_acc_rev_flag = 'Y') THEN
257324 
257325        -- 4645092  ------------------------------------------------------------------------------
257326        -- To allow MPA report to determine if it should generate report process
257327        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
257328        ------------------------------------------------------------------------------------------
257329 
257330        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
257331        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
257332    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
257333    -- call ADRs
257334    -- Bug 4922099
257335    --
257336    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
257337         (NVL(l_actual_upg_option, 'N') = 'O') OR
257338         (NVL(l_enc_upg_option, 'N') = 'O')
257339       )
257340    THEN
257341    NULL;
257342    --
257343    --
257344    
257345   l_ccid := AcctDerRule_35(
257346            p_application_id           => p_application_id
257347          , p_ae_header_id             => l_ae_header_id 
257348 , p_source_20 => p_source_20
257349 , p_source_54 => p_source_54
257350 , p_source_55 => p_source_55
257351 , p_source_55_meaning => p_source_55_meaning
257352 , p_source_56 => p_source_56
257353 , p_source_57 => p_source_57
257354 , p_source_61 => p_source_61
257355 , p_source_62 => p_source_62
257356 , p_source_62_meaning => p_source_62_meaning
257357          , x_transaction_coa_id       => l_adr_transaction_coa_id
257358          , x_accounting_coa_id        => l_adr_accounting_coa_id
257359          , x_value_type_code          => l_adr_value_type_code
257360          , p_side                     => 'NA'
257361    );
257362 
257363    xla_ae_lines_pkg.set_ccid(
257364     p_code_combination_id          => l_ccid
257365   , p_value_type_code              => l_adr_value_type_code
257366   , p_transaction_coa_id           => l_adr_transaction_coa_id
257367   , p_accounting_coa_id            => l_adr_accounting_coa_id
257368   , p_adr_code                     => 'PI_WIP_BRIDGING'
257369   , p_adr_type_code                => 'S'
257370   , p_component_type               => l_component_type
257371   , p_component_code               => l_component_code
257372   , p_component_type_code          => l_component_type_code
257373   , p_component_appl_id            => l_component_appl_id
257374   , p_amb_context_code             => l_amb_context_code
257375   , p_side                         => 'NA'
257376   );
257377 
257378 
257379    --
257380    --
257381    END IF;
257382 
257383        --
257384        -- Update the line information that should be overwritten
257385        --
257386        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
257387                                          p_header_num   => 1);
257388        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
257389 
257390        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
257391 
257392        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
257393           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
257394        END IF;
257395 
257396       --
257397       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
257398       --
257399       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
257400           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
257401       ELSE
257402           ---------------------------------------------------------------------------------------------------
257403           -- 4262811a Switch Sign
257404           ---------------------------------------------------------------------------------------------------
257405           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
257406           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
257407                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
257408           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
257409                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
257410           -- 5132302
257411           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
257412                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
257413 
257414       END IF;
257415 
257416       -- 4955764
257417       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
257418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
257419 
257420 
257421       XLA_AE_LINES_PKG.ValidateCurrentLine;
257422       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
257423 
257424       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
257425                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
257426                ,p_balance_type_code => l_balance_type_code);
257427 
257428    END IF;
257429 
257430    -----------------------------------------------------------------------------------------
257431    -- 4262811 Multiperiod Accounting
257432    -----------------------------------------------------------------------------------------
257433      -- No MPA option is assigned.
257434 
257435 
257436 END IF;
257437 END IF;
257438 --
257439 
257440 --
257441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
257442    trace
257443       (p_msg      => 'END of AcctLineType_462'
257444       ,p_level    => C_LEVEL_PROCEDURE
257445       ,p_module   => l_log_module);
257446 END IF;
257447 --
257448 EXCEPTION
257449   WHEN xla_exceptions_pkg.application_exception THEN
257450       RAISE;
257451   WHEN OTHERS THEN
257452        xla_exceptions_pkg.raise_message
257453            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_462');
257454 END AcctLineType_462;
257455 --
257456 
257457 ---------------------------------------
257458 --
257459 -- PRIVATE FUNCTION
257460 --         AcctLineType_463
257461 --
257462 ---------------------------------------
257463 PROCEDURE AcctLineType_463 (
257464   p_application_id        IN NUMBER
257465  ,p_event_id              IN NUMBER
257466  ,p_calculate_acctd_flag  IN VARCHAR2
257467  ,p_calculate_g_l_flag    IN VARCHAR2
257468  ,p_actual_flag           IN OUT VARCHAR2
257469  ,p_balance_type_code     OUT VARCHAR2
257470  ,p_gain_or_loss_ref      OUT VARCHAR2
257471  
257472 --TRANSACTION_ID
257473  , p_source_1            IN NUMBER
257474 --Transaction Unit of Measure Code
257475  , p_source_4            IN VARCHAR2
257476 --Primary Quantity of the Transaction
257477  , p_source_6            IN NUMBER
257478 --WIP Transaction Type
257479  , p_source_7            IN NUMBER
257480  , p_source_7_meaning    IN VARCHAR2
257481 --Discrete Job Bridging Account
257482  , p_source_54            IN NUMBER
257483 --WIP Entity Type
257484  , p_source_55            IN NUMBER
257485  , p_source_55_meaning    IN VARCHAR2
257486 --Flow Schedule Bridging Account
257487  , p_source_56            IN NUMBER
257488 --Repetitive Item Bridging Account
257489  , p_source_57            IN NUMBER
257490 --DISTRIBUTION_IDENTIFIER
257491  , p_source_84            IN NUMBER
257492 --Distribution Type
257493  , p_source_85            IN VARCHAR2
257494  , p_source_85_meaning    IN VARCHAR2
257495 --Entered Currency Code
257496  , p_source_88            IN VARCHAR2
257497 --Entered Amount
257498  , p_source_91            IN NUMBER
257499 --Currency Conversion Date
257500  , p_source_92            IN DATE
257501 --Currency Conversion Rate
257502  , p_source_93            IN NUMBER
257503 --Accounted Amount
257504  , p_source_95            IN NUMBER
257505 --Accounting Line Type
257506  , p_source_97            IN NUMBER
257507 )
257508 IS
257509 
257510 l_component_type              VARCHAR2(80);
257511 l_component_code              VARCHAR2(30);
257512 l_component_type_code         VARCHAR2(1);
257513 l_component_appl_id           INTEGER;
257514 l_amb_context_code            VARCHAR2(30);
257515 l_entity_code                 VARCHAR2(30);
257516 l_event_class_code            VARCHAR2(30);
257517 l_ae_header_id                NUMBER;
257518 l_event_type_code             VARCHAR2(30);
257519 l_line_definition_code        VARCHAR2(30);
257520 l_line_definition_owner_code  VARCHAR2(1);
257521 --
257522 -- adr variables
257523 l_segment                     VARCHAR2(30);
257524 l_ccid                        NUMBER;
257525 l_adr_transaction_coa_id      NUMBER;
257526 l_adr_accounting_coa_id       NUMBER;
257527 l_adr_flexfield_segment_code  VARCHAR2(30);
257528 l_adr_flex_value_set_id       NUMBER;
257529 l_adr_value_type_code         VARCHAR2(30);
257530 l_adr_value_combination_id    NUMBER;
257531 l_adr_value_segment_code      VARCHAR2(30);
257532 
257533 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
257534 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
257535 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
257536 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
257537 
257538 -- 4262811 Variables ------------------------------------------------------------------------------------------
257539 l_entered_amt_idx             NUMBER;
257540 l_accted_amt_idx              NUMBER;
257541 l_acc_rev_flag                VARCHAR2(1);
257542 l_accrual_line_num            NUMBER;
257543 l_tmp_amt                     NUMBER;
257544 l_acc_rev_natural_side_code   VARCHAR2(1);
257545 
257546 l_num_entries                 NUMBER;
257547 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
257548 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
257549 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
257550 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
257551 l_recog_line_1                NUMBER;
257552 l_recog_line_2                NUMBER;
257553 
257554 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
257555 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
257556 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
257557 
257558 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
257559 
257560 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
257561 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
257562 
257563 ---------------------------------------------------------------------------------------------------------------
257564 
257565 
257566 --
257567 -- bulk performance
257568 --
257569 l_balance_type_code           VARCHAR2(1);
257570 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
257571 l_log_module                  VARCHAR2(240);
257572 
257573 --
257574 -- Upgrade strategy
257575 --
257576 l_actual_upg_option           VARCHAR2(1);
257577 l_enc_upg_option           VARCHAR2(1);
257578 
257579 --
257580 BEGIN
257581 --
257582 IF g_log_enabled THEN
257583       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_463';
257584 END IF;
257585 --
257586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
257587 
257588       trace
257589          (p_msg      => 'BEGIN of AcctLineType_463'
257590          ,p_level    => C_LEVEL_PROCEDURE
257591          ,p_module   => l_log_module);
257592 
257593 END IF;
257594 --
257595 l_component_type             := 'AMB_JLT';
257596 l_component_code             := 'PI_WIP_BRIDGING';
257597 l_component_type_code        := 'S';
257598 l_component_appl_id          :=  707;
257599 l_amb_context_code           := 'DEFAULT';
257600 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
257601 l_event_class_code           := 'OSP';
257602 l_event_type_code            := 'OSP';
257603 l_line_definition_owner_code := 'S';
257604 l_line_definition_code       := 'PI_OSP';
257605 --
257606 l_balance_type_code          := 'A';
257607 l_segment                     := NULL;
257608 l_ccid                        := NULL;
257609 l_adr_transaction_coa_id      := NULL;
257610 l_adr_accounting_coa_id       := NULL;
257611 l_adr_flexfield_segment_code  := NULL;
257612 l_adr_flex_value_set_id       := NULL;
257613 l_adr_value_type_code         := NULL;
257614 l_adr_value_combination_id    := NULL;
257615 l_adr_value_segment_code      := NULL;
257616 
257617 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
257618 l_bflow_class_code           := '';    -- 4219869 Business Flow
257619 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
257620 l_budgetary_control_flag     := 'N';
257621 
257622 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
257623 l_bflow_applied_to_amt       := NULL; -- 5132302
257624 l_entered_amt_idx            := NULL;          -- 4262811
257625 l_accted_amt_idx             := NULL;          -- 4262811
257626 l_acc_rev_flag               := NULL;          -- 4262811
257627 l_accrual_line_num           := NULL;          -- 4262811
257628 l_tmp_amt                    := NULL;          -- 4262811
257629 --
257630  
257631 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
257632     l_balance_type_code <> 'B' THEN
257633 IF NVL(p_source_97,9E125) =  7
257634  THEN 
257635 
257636    --
257637    XLA_AE_LINES_PKG.SetNewLine;
257638 
257639    p_balance_type_code          := l_balance_type_code;
257640    -- set the flag so later we will know whether the gain loss line needs to be created
257641    
257642    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
257643      p_actual_flag :='A';
257644    END IF;
257645 
257646    --
257647    -- bulk performance
257648    --
257649    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
257650                                       p_header_num   => 0); -- 4262811
257651    --
257652    -- set accounting line options
257653    --
257654    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
257655            p_natural_side_code          => 'C'
257656          , p_gain_or_loss_flag          => 'N'
257657          , p_gl_transfer_mode_code      => 'S'
257658          , p_acct_entry_type_code       => 'A'
257659          , p_switch_side_flag           => 'Y'
257660          , p_merge_duplicate_code       => 'N'
257661          );
257662    --
257663    l_acc_rev_natural_side_code := 'D';  -- 4262811
257664    -- 
257665    --
257666    -- set accounting line type info
257667    --
257668    xla_ae_lines_pkg.SetAcctLineType
257669       (p_component_type             => l_component_type
257670       ,p_event_type_code            => l_event_type_code
257671       ,p_line_definition_owner_code => l_line_definition_owner_code
257672       ,p_line_definition_code       => l_line_definition_code
257673       ,p_accounting_line_code       => l_component_code
257674       ,p_accounting_line_type_code  => l_component_type_code
257675       ,p_accounting_line_appl_id    => l_component_appl_id
257676       ,p_amb_context_code           => l_amb_context_code
257677       ,p_entity_code                => l_entity_code
257678       ,p_event_class_code           => l_event_class_code);
257679    --
257680    -- set accounting class
257681    --
257682    xla_ae_lines_pkg.SetAcctClass(
257683            p_accounting_class_code  => 'WIP_BRIDGING'
257684          , p_ae_header_id           => l_ae_header_id
257685          );
257686 
257687    --
257688    -- set rounding class
257689    --
257690    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
257691                       'WIP_BRIDGING';
257692 
257693    --
257694    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
257695    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
257696    --
257697    -- bulk performance
257698    --
257699    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
257700 
257701    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
257702       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
257703 
257704    -- 4955764
257705    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
257706       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
257707 
257708    -- 4458381 Public Sector Enh
257709    
257710    --
257711    -- set accounting attributes for the line type
257712    --
257713    l_entered_amt_idx := 3;
257714    l_accted_amt_idx  := 8;
257715    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
257716    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
257717    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
257718    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
257719    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
257720    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
257721    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
257722    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
257723    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
257724    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
257725    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
257726    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
257727    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
257728    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
257729    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
257730    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
257731    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
257732 
257733    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
257734    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
257735 
257736    ---------------------------------------------------------------------------------------------------------------
257737    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
257738    ---------------------------------------------------------------------------------------------------------------
257739    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
257740 
257741    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
257742    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
257743 
257744    IF xla_accounting_cache_pkg.GetValueChar
257745          (p_source_code         => 'LEDGER_CATEGORY_CODE'
257746          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
257747    AND l_bflow_method_code = 'PRIOR_ENTRY'
257748 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
257749    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
257750          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
257751        )
257752    THEN
257753          xla_ae_lines_pkg.BflowUpgEntry
257754            (p_business_method_code    => l_bflow_method_code
257755            ,p_business_class_code     => l_bflow_class_code
257756            ,p_balance_type            => l_balance_type_code);
257757    ELSE
257758       NULL;
257759 -- No business flow processing for business flow method of NONE.
257760    END IF;
257761 
257762    --
257763    -- call analytical criteria
257764    --
257765    
257766    --
257767    -- call description
257768    --
257769    
257770 xla_ae_lines_pkg.SetLineDescription(
257771    p_ae_header_id => l_ae_header_id
257772   ,p_description  => Description_2 (
257773      p_application_id         => p_application_id
257774    , p_ae_header_id           => l_ae_header_id 
257775 , p_source_1 => p_source_1
257776 , p_source_4 => p_source_4
257777 , p_source_6 => p_source_6
257778 , p_source_7 => p_source_7
257779 , p_source_7_meaning => p_source_7_meaning
257780    )
257781 );
257782 
257783 
257784    --
257785    -- call ADRs
257786    -- Bug 4922099
257787    --
257788    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
257789         (NVL(l_actual_upg_option, 'N') = 'O') OR
257790         (NVL(l_enc_upg_option, 'N') = 'O')
257791       )
257792    THEN
257793    NULL;
257794    --
257795    --
257796    
257797   l_ccid := AcctDerRule_31(
257798            p_application_id           => p_application_id
257799          , p_ae_header_id             => l_ae_header_id 
257800 , p_source_54 => p_source_54
257801 , p_source_55 => p_source_55
257802 , p_source_55_meaning => p_source_55_meaning
257803 , p_source_56 => p_source_56
257804 , p_source_57 => p_source_57
257805          , x_transaction_coa_id       => l_adr_transaction_coa_id
257806          , x_accounting_coa_id        => l_adr_accounting_coa_id
257807          , x_value_type_code          => l_adr_value_type_code
257808          , p_side                     => 'NA'
257809    );
257810 
257811    xla_ae_lines_pkg.set_ccid(
257812     p_code_combination_id          => l_ccid
257813   , p_value_type_code              => l_adr_value_type_code
257814   , p_transaction_coa_id           => l_adr_transaction_coa_id
257815   , p_accounting_coa_id            => l_adr_accounting_coa_id
257816   , p_adr_code                     => 'PI_OSP_BRIDGING'
257817   , p_adr_type_code                => 'S'
257818   , p_component_type               => l_component_type
257819   , p_component_code               => l_component_code
257820   , p_component_type_code          => l_component_type_code
257821   , p_component_appl_id            => l_component_appl_id
257822   , p_amb_context_code             => l_amb_context_code
257823   , p_side                         => 'NA'
257824   );
257825 
257826 
257827    --
257828    --
257829    END IF;
257830    --
257831    -- Bug 4922099
257832    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
257833           (NVL(l_enc_upg_option, 'N') = 'O')
257834         ) AND
257835         (l_bflow_method_code = 'PRIOR_ENTRY')
257836       )
257837    THEN
257838       IF
257839       --
257840       1 = 2
257841       --
257842       THEN
257843       xla_accounting_err_pkg.build_message
257844                                     (p_appli_s_name            => 'XLA'
257845                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
257846                                     ,p_token_1                 => 'LINE_NUMBER'
257847                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
257848                                     ,p_token_2                 => 'LINE_TYPE_NAME'
257849                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
257850                                                                              l_component_type
257851                                                                             ,l_component_code
257852                                                                             ,l_component_type_code
257853                                                                             ,l_component_appl_id
257854                                                                             ,l_amb_context_code
257855                                                                             ,l_entity_code
257856                                                                             ,l_event_class_code
257857                                                                            )
257858                                     ,p_token_3                 => 'OWNER'
257859                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
257860                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
257861                                                                           ,p_lookup_code    => l_component_type_code
257862                                                                          )
257863                                     ,p_token_4                 => 'PRODUCT_NAME'
257864                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
257865                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
257866                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
257867                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
257868                                     ,p_ae_header_id            =>  NULL
257869                                        );
257870 
257871         IF (C_LEVEL_ERROR>= g_log_level) THEN
257872                  trace
257873                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
257874                       ,p_level    => C_LEVEL_ERROR
257875                       ,p_module   => l_log_module);
257876         END IF;
257877       END IF;
257878    END IF;
257879    --
257880    --
257881    ------------------------------------------------------------------------------------------------
257882    -- 4219869 Business Flow
257883    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
257884    -- Prior Entry.  Currently, the following code is always generated.
257885    ------------------------------------------------------------------------------------------------
257886    XLA_AE_LINES_PKG.ValidateCurrentLine;
257887 
257888    ------------------------------------------------------------------------------------
257889    -- 4219869 Business Flow
257890    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
257891    ------------------------------------------------------------------------------------
257892    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
257893 
257894    ----------------------------------------------------------------------------------
257895    -- 4219869 Business Flow
257896    -- Update journal entry status -- Need to generate this within IF <condition>
257897    ----------------------------------------------------------------------------------
257898    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
257899          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
257900          ,p_balance_type_code => l_balance_type_code
257901          );
257902 
257903    -------------------------------------------------------------------------------------------
257904    -- 4262811 - Generate the Accrual Reversal lines
257905    -------------------------------------------------------------------------------------------
257906    BEGIN
257907       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
257908                               (g_array_event(p_event_id).array_value_num('header_index'));
257909       IF l_acc_rev_flag IS NULL THEN
257910          l_acc_rev_flag := 'N';
257911       END IF;
257912    EXCEPTION
257913       WHEN OTHERS THEN
257914          l_acc_rev_flag := 'N';
257915    END;
257916    --
257917    IF (l_acc_rev_flag = 'Y') THEN
257918 
257919        -- 4645092  ------------------------------------------------------------------------------
257920        -- To allow MPA report to determine if it should generate report process
257921        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
257922        ------------------------------------------------------------------------------------------
257923 
257924        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
257925        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
257926    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
257927    -- call ADRs
257928    -- Bug 4922099
257929    --
257930    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
257931         (NVL(l_actual_upg_option, 'N') = 'O') OR
257932         (NVL(l_enc_upg_option, 'N') = 'O')
257933       )
257934    THEN
257935    NULL;
257936    --
257937    --
257938    
257939   l_ccid := AcctDerRule_31(
257940            p_application_id           => p_application_id
257941          , p_ae_header_id             => l_ae_header_id 
257942 , p_source_54 => p_source_54
257943 , p_source_55 => p_source_55
257944 , p_source_55_meaning => p_source_55_meaning
257945 , p_source_56 => p_source_56
257946 , p_source_57 => p_source_57
257947          , x_transaction_coa_id       => l_adr_transaction_coa_id
257948          , x_accounting_coa_id        => l_adr_accounting_coa_id
257949          , x_value_type_code          => l_adr_value_type_code
257950          , p_side                     => 'NA'
257951    );
257952 
257953    xla_ae_lines_pkg.set_ccid(
257954     p_code_combination_id          => l_ccid
257955   , p_value_type_code              => l_adr_value_type_code
257956   , p_transaction_coa_id           => l_adr_transaction_coa_id
257957   , p_accounting_coa_id            => l_adr_accounting_coa_id
257958   , p_adr_code                     => 'PI_OSP_BRIDGING'
257959   , p_adr_type_code                => 'S'
257960   , p_component_type               => l_component_type
257961   , p_component_code               => l_component_code
257962   , p_component_type_code          => l_component_type_code
257963   , p_component_appl_id            => l_component_appl_id
257964   , p_amb_context_code             => l_amb_context_code
257965   , p_side                         => 'NA'
257966   );
257967 
257968 
257969    --
257970    --
257971    END IF;
257972 
257973        --
257974        -- Update the line information that should be overwritten
257975        --
257976        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
257977                                          p_header_num   => 1);
257978        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
257979 
257980        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
257981 
257982        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
257983           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
257984        END IF;
257985 
257986       --
257987       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
257988       --
257989       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
257990           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
257991       ELSE
257992           ---------------------------------------------------------------------------------------------------
257993           -- 4262811a Switch Sign
257994           ---------------------------------------------------------------------------------------------------
257995           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
257996           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
257997                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
257998           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
257999                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
258000           -- 5132302
258001           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
258002                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
258003 
258004       END IF;
258005 
258006       -- 4955764
258007       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
258008       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
258009 
258010 
258011       XLA_AE_LINES_PKG.ValidateCurrentLine;
258012       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
258013 
258014       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
258015                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
258016                ,p_balance_type_code => l_balance_type_code);
258017 
258018    END IF;
258019 
258020    -----------------------------------------------------------------------------------------
258021    -- 4262811 Multiperiod Accounting
258022    -----------------------------------------------------------------------------------------
258023      -- No MPA option is assigned.
258024 
258025 
258026 END IF;
258027 END IF;
258028 --
258029 
258030 --
258031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
258032    trace
258033       (p_msg      => 'END of AcctLineType_463'
258034       ,p_level    => C_LEVEL_PROCEDURE
258035       ,p_module   => l_log_module);
258036 END IF;
258037 --
258038 EXCEPTION
258039   WHEN xla_exceptions_pkg.application_exception THEN
258040       RAISE;
258041   WHEN OTHERS THEN
258042        xla_exceptions_pkg.raise_message
258043            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_463');
258044 END AcctLineType_463;
258045 --
258046 
258047 ---------------------------------------
258048 --
258049 -- PRIVATE FUNCTION
258050 --         AcctLineType_464
258051 --
258052 ---------------------------------------
258053 PROCEDURE AcctLineType_464 (
258054   p_application_id        IN NUMBER
258055  ,p_event_id              IN NUMBER
258056  ,p_calculate_acctd_flag  IN VARCHAR2
258057  ,p_calculate_g_l_flag    IN VARCHAR2
258058  ,p_actual_flag           IN OUT VARCHAR2
258059  ,p_balance_type_code     OUT VARCHAR2
258060  ,p_gain_or_loss_ref      OUT VARCHAR2
258061  
258062 --TRANSACTION_ID
258063  , p_source_1            IN NUMBER
258064 --Item Concatenated Segments
258065  , p_source_2            IN VARCHAR2
258066 --Transaction Quantity
258067  , p_source_3            IN NUMBER
258068 --Transaction Unit of Measure Code
258069  , p_source_4            IN VARCHAR2
258070 --Inventory Transaction Type Description
258071  , p_source_5            IN VARCHAR2
258072 --Transaction Distribution Account
258073  , p_source_20            IN NUMBER
258074 --Discrete Job Bridging Account
258075  , p_source_54            IN NUMBER
258076 --WIP Entity Type
258077  , p_source_55            IN NUMBER
258078  , p_source_55_meaning    IN VARCHAR2
258079 --Flow Schedule Bridging Account
258080  , p_source_56            IN NUMBER
258081 --Repetitive Item Bridging Account
258082  , p_source_57            IN NUMBER
258083 --TRANSACTION_SOURCE_ID
258084  , p_source_61            IN NUMBER
258085 --Transaction Action Name
258086  , p_source_62            IN NUMBER
258087  , p_source_62_meaning    IN VARCHAR2
258088 --DISTRIBUTION_IDENTIFIER
258089  , p_source_84            IN NUMBER
258090 --Distribution Type
258091  , p_source_85            IN VARCHAR2
258092  , p_source_85_meaning    IN VARCHAR2
258093 --Entered Currency Code
258094  , p_source_88            IN VARCHAR2
258095 --Entered Amount
258096  , p_source_91            IN NUMBER
258097 --Currency Conversion Date
258098  , p_source_92            IN DATE
258099 --Currency Conversion Rate
258100  , p_source_93            IN NUMBER
258101 --Currency Conversion Type
258102  , p_source_94            IN VARCHAR2
258103 --Accounted Amount
258104  , p_source_95            IN NUMBER
258105 --Accounting Line Type
258106  , p_source_97            IN NUMBER
258107 --Subinventory Type Indicator
258108  , p_source_110            IN VARCHAR2
258109  , p_source_110_meaning    IN VARCHAR2
258110 )
258111 IS
258112 
258113 l_component_type              VARCHAR2(80);
258114 l_component_code              VARCHAR2(30);
258115 l_component_type_code         VARCHAR2(1);
258116 l_component_appl_id           INTEGER;
258117 l_amb_context_code            VARCHAR2(30);
258118 l_entity_code                 VARCHAR2(30);
258119 l_event_class_code            VARCHAR2(30);
258120 l_ae_header_id                NUMBER;
258121 l_event_type_code             VARCHAR2(30);
258122 l_line_definition_code        VARCHAR2(30);
258123 l_line_definition_owner_code  VARCHAR2(1);
258124 --
258125 -- adr variables
258126 l_segment                     VARCHAR2(30);
258127 l_ccid                        NUMBER;
258128 l_adr_transaction_coa_id      NUMBER;
258129 l_adr_accounting_coa_id       NUMBER;
258130 l_adr_flexfield_segment_code  VARCHAR2(30);
258131 l_adr_flex_value_set_id       NUMBER;
258132 l_adr_value_type_code         VARCHAR2(30);
258133 l_adr_value_combination_id    NUMBER;
258134 l_adr_value_segment_code      VARCHAR2(30);
258135 
258136 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
258137 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
258138 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
258139 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
258140 
258141 -- 4262811 Variables ------------------------------------------------------------------------------------------
258142 l_entered_amt_idx             NUMBER;
258143 l_accted_amt_idx              NUMBER;
258144 l_acc_rev_flag                VARCHAR2(1);
258145 l_accrual_line_num            NUMBER;
258146 l_tmp_amt                     NUMBER;
258147 l_acc_rev_natural_side_code   VARCHAR2(1);
258148 
258149 l_num_entries                 NUMBER;
258150 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
258151 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
258152 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
258153 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
258154 l_recog_line_1                NUMBER;
258155 l_recog_line_2                NUMBER;
258156 
258157 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
258158 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
258159 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
258160 
258161 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
258162 
258163 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
258164 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
258165 
258166 ---------------------------------------------------------------------------------------------------------------
258167 
258168 
258169 --
258170 -- bulk performance
258171 --
258172 l_balance_type_code           VARCHAR2(1);
258173 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
258174 l_log_module                  VARCHAR2(240);
258175 
258176 --
258177 -- Upgrade strategy
258178 --
258179 l_actual_upg_option           VARCHAR2(1);
258180 l_enc_upg_option           VARCHAR2(1);
258181 
258182 --
258183 BEGIN
258184 --
258185 IF g_log_enabled THEN
258186       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_464';
258187 END IF;
258188 --
258189 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
258190 
258191       trace
258192          (p_msg      => 'BEGIN of AcctLineType_464'
258193          ,p_level    => C_LEVEL_PROCEDURE
258194          ,p_module   => l_log_module);
258195 
258196 END IF;
258197 --
258198 l_component_type             := 'AMB_JLT';
258199 l_component_code             := 'PI_WIP_BRIDGING';
258200 l_component_type_code        := 'S';
258201 l_component_appl_id          :=  707;
258202 l_amb_context_code           := 'DEFAULT';
258203 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
258204 l_event_class_code           := 'WIP_MTL';
258205 l_event_type_code            := 'WIP_COMP_RETURN';
258206 l_line_definition_owner_code := 'S';
258207 l_line_definition_code       := 'PI_WIP_COMP_RETURN';
258208 --
258209 l_balance_type_code          := 'A';
258210 l_segment                     := NULL;
258211 l_ccid                        := NULL;
258212 l_adr_transaction_coa_id      := NULL;
258213 l_adr_accounting_coa_id       := NULL;
258214 l_adr_flexfield_segment_code  := NULL;
258215 l_adr_flex_value_set_id       := NULL;
258216 l_adr_value_type_code         := NULL;
258217 l_adr_value_combination_id    := NULL;
258218 l_adr_value_segment_code      := NULL;
258219 
258220 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
258221 l_bflow_class_code           := '';    -- 4219869 Business Flow
258222 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
258223 l_budgetary_control_flag     := 'N';
258224 
258225 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
258226 l_bflow_applied_to_amt       := NULL; -- 5132302
258227 l_entered_amt_idx            := NULL;          -- 4262811
258228 l_accted_amt_idx             := NULL;          -- 4262811
258229 l_acc_rev_flag               := NULL;          -- 4262811
258230 l_accrual_line_num           := NULL;          -- 4262811
258231 l_tmp_amt                    := NULL;          -- 4262811
258232 --
258233  
258234 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
258235     l_balance_type_code <> 'B' THEN
258236 IF (NVL(p_source_97,9E125) =  7 OR 
258237 NVL(p_source_97,9E125) =  13) AND 
258238 NVL(p_source_110,'
258239 ') =  'Y'
258240  THEN 
258241 
258242    --
258243    XLA_AE_LINES_PKG.SetNewLine;
258244 
258245    p_balance_type_code          := l_balance_type_code;
258246    -- set the flag so later we will know whether the gain loss line needs to be created
258247    
258248    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
258249      p_actual_flag :='A';
258250    END IF;
258251 
258252    --
258253    -- bulk performance
258254    --
258255    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
258256                                       p_header_num   => 0); -- 4262811
258257    --
258258    -- set accounting line options
258259    --
258260    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
258261            p_natural_side_code          => 'C'
258262          , p_gain_or_loss_flag          => 'N'
258263          , p_gl_transfer_mode_code      => 'S'
258264          , p_acct_entry_type_code       => 'A'
258265          , p_switch_side_flag           => 'Y'
258266          , p_merge_duplicate_code       => 'N'
258267          );
258268    --
258269    l_acc_rev_natural_side_code := 'D';  -- 4262811
258270    -- 
258271    --
258272    -- set accounting line type info
258273    --
258274    xla_ae_lines_pkg.SetAcctLineType
258275       (p_component_type             => l_component_type
258276       ,p_event_type_code            => l_event_type_code
258277       ,p_line_definition_owner_code => l_line_definition_owner_code
258278       ,p_line_definition_code       => l_line_definition_code
258279       ,p_accounting_line_code       => l_component_code
258280       ,p_accounting_line_type_code  => l_component_type_code
258281       ,p_accounting_line_appl_id    => l_component_appl_id
258282       ,p_amb_context_code           => l_amb_context_code
258283       ,p_entity_code                => l_entity_code
258284       ,p_event_class_code           => l_event_class_code);
258285    --
258286    -- set accounting class
258287    --
258288    xla_ae_lines_pkg.SetAcctClass(
258289            p_accounting_class_code  => 'WIP_BRIDGING'
258290          , p_ae_header_id           => l_ae_header_id
258291          );
258292 
258293    --
258294    -- set rounding class
258295    --
258296    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
258297                       'WIP_BRIDGING';
258298 
258299    --
258300    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
258301    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
258302    --
258303    -- bulk performance
258304    --
258305    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
258306 
258307    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
258308       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
258309 
258310    -- 4955764
258311    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
258312       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
258313 
258314    -- 4458381 Public Sector Enh
258315    
258316    --
258317    -- set accounting attributes for the line type
258318    --
258319    l_entered_amt_idx := 3;
258320    l_accted_amt_idx  := 8;
258321    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
258322    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
258323    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
258324    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
258325    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
258326    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
258327    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
258328    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
258329    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
258330    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
258331    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
258332    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
258333    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
258334    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
258335    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
258336    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
258337    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
258338 
258339    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
258340    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
258341 
258342    ---------------------------------------------------------------------------------------------------------------
258343    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
258344    ---------------------------------------------------------------------------------------------------------------
258345    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
258346 
258347    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
258348    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
258349 
258350    IF xla_accounting_cache_pkg.GetValueChar
258351          (p_source_code         => 'LEDGER_CATEGORY_CODE'
258352          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
258353    AND l_bflow_method_code = 'PRIOR_ENTRY'
258354 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
258355    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
258356          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
258357        )
258358    THEN
258359          xla_ae_lines_pkg.BflowUpgEntry
258360            (p_business_method_code    => l_bflow_method_code
258361            ,p_business_class_code     => l_bflow_class_code
258362            ,p_balance_type            => l_balance_type_code);
258363    ELSE
258364       NULL;
258365 -- No business flow processing for business flow method of NONE.
258366    END IF;
258367 
258368    --
258369    -- call analytical criteria
258370    --
258371    
258372    --
258373    -- call description
258374    --
258375    
258376 xla_ae_lines_pkg.SetLineDescription(
258377    p_ae_header_id => l_ae_header_id
258378   ,p_description  => Description_1 (
258379      p_application_id         => p_application_id
258380    , p_ae_header_id           => l_ae_header_id 
258381 , p_source_1 => p_source_1
258382 , p_source_2 => p_source_2
258383 , p_source_3 => p_source_3
258384 , p_source_4 => p_source_4
258385 , p_source_5 => p_source_5
258386    )
258387 );
258388 
258389 
258390    --
258391    -- call ADRs
258392    -- Bug 4922099
258393    --
258394    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
258395         (NVL(l_actual_upg_option, 'N') = 'O') OR
258396         (NVL(l_enc_upg_option, 'N') = 'O')
258397       )
258398    THEN
258399    NULL;
258400    --
258401    --
258402    
258403   l_ccid := AcctDerRule_35(
258404            p_application_id           => p_application_id
258405          , p_ae_header_id             => l_ae_header_id 
258406 , p_source_20 => p_source_20
258407 , p_source_54 => p_source_54
258408 , p_source_55 => p_source_55
258409 , p_source_55_meaning => p_source_55_meaning
258410 , p_source_56 => p_source_56
258411 , p_source_57 => p_source_57
258412 , p_source_61 => p_source_61
258413 , p_source_62 => p_source_62
258414 , p_source_62_meaning => p_source_62_meaning
258415          , x_transaction_coa_id       => l_adr_transaction_coa_id
258416          , x_accounting_coa_id        => l_adr_accounting_coa_id
258417          , x_value_type_code          => l_adr_value_type_code
258418          , p_side                     => 'NA'
258419    );
258420 
258421    xla_ae_lines_pkg.set_ccid(
258422     p_code_combination_id          => l_ccid
258423   , p_value_type_code              => l_adr_value_type_code
258424   , p_transaction_coa_id           => l_adr_transaction_coa_id
258425   , p_accounting_coa_id            => l_adr_accounting_coa_id
258426   , p_adr_code                     => 'PI_WIP_BRIDGING'
258427   , p_adr_type_code                => 'S'
258428   , p_component_type               => l_component_type
258429   , p_component_code               => l_component_code
258430   , p_component_type_code          => l_component_type_code
258431   , p_component_appl_id            => l_component_appl_id
258432   , p_amb_context_code             => l_amb_context_code
258433   , p_side                         => 'NA'
258434   );
258435 
258436 
258437    --
258438    --
258439    END IF;
258440    --
258441    -- Bug 4922099
258442    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
258443           (NVL(l_enc_upg_option, 'N') = 'O')
258444         ) AND
258445         (l_bflow_method_code = 'PRIOR_ENTRY')
258446       )
258447    THEN
258448       IF
258449       --
258450       1 = 2
258451       --
258452       THEN
258453       xla_accounting_err_pkg.build_message
258454                                     (p_appli_s_name            => 'XLA'
258455                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
258456                                     ,p_token_1                 => 'LINE_NUMBER'
258457                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
258458                                     ,p_token_2                 => 'LINE_TYPE_NAME'
258459                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
258460                                                                              l_component_type
258461                                                                             ,l_component_code
258462                                                                             ,l_component_type_code
258463                                                                             ,l_component_appl_id
258464                                                                             ,l_amb_context_code
258465                                                                             ,l_entity_code
258466                                                                             ,l_event_class_code
258467                                                                            )
258468                                     ,p_token_3                 => 'OWNER'
258469                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
258470                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
258471                                                                           ,p_lookup_code    => l_component_type_code
258472                                                                          )
258473                                     ,p_token_4                 => 'PRODUCT_NAME'
258474                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
258475                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
258476                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
258477                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
258478                                     ,p_ae_header_id            =>  NULL
258479                                        );
258480 
258481         IF (C_LEVEL_ERROR>= g_log_level) THEN
258482                  trace
258483                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
258484                       ,p_level    => C_LEVEL_ERROR
258485                       ,p_module   => l_log_module);
258486         END IF;
258487       END IF;
258488    END IF;
258489    --
258490    --
258491    ------------------------------------------------------------------------------------------------
258492    -- 4219869 Business Flow
258493    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
258494    -- Prior Entry.  Currently, the following code is always generated.
258495    ------------------------------------------------------------------------------------------------
258496    XLA_AE_LINES_PKG.ValidateCurrentLine;
258497 
258498    ------------------------------------------------------------------------------------
258499    -- 4219869 Business Flow
258500    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
258501    ------------------------------------------------------------------------------------
258502    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
258503 
258504    ----------------------------------------------------------------------------------
258505    -- 4219869 Business Flow
258506    -- Update journal entry status -- Need to generate this within IF <condition>
258507    ----------------------------------------------------------------------------------
258508    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
258509          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
258510          ,p_balance_type_code => l_balance_type_code
258511          );
258512 
258513    -------------------------------------------------------------------------------------------
258514    -- 4262811 - Generate the Accrual Reversal lines
258515    -------------------------------------------------------------------------------------------
258516    BEGIN
258517       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
258518                               (g_array_event(p_event_id).array_value_num('header_index'));
258519       IF l_acc_rev_flag IS NULL THEN
258520          l_acc_rev_flag := 'N';
258521       END IF;
258522    EXCEPTION
258523       WHEN OTHERS THEN
258524          l_acc_rev_flag := 'N';
258525    END;
258526    --
258527    IF (l_acc_rev_flag = 'Y') THEN
258528 
258529        -- 4645092  ------------------------------------------------------------------------------
258530        -- To allow MPA report to determine if it should generate report process
258531        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
258532        ------------------------------------------------------------------------------------------
258533 
258534        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
258535        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
258536    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
258537    -- call ADRs
258538    -- Bug 4922099
258539    --
258540    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
258541         (NVL(l_actual_upg_option, 'N') = 'O') OR
258542         (NVL(l_enc_upg_option, 'N') = 'O')
258543       )
258544    THEN
258545    NULL;
258546    --
258547    --
258548    
258549   l_ccid := AcctDerRule_35(
258550            p_application_id           => p_application_id
258551          , p_ae_header_id             => l_ae_header_id 
258552 , p_source_20 => p_source_20
258553 , p_source_54 => p_source_54
258554 , p_source_55 => p_source_55
258555 , p_source_55_meaning => p_source_55_meaning
258556 , p_source_56 => p_source_56
258557 , p_source_57 => p_source_57
258558 , p_source_61 => p_source_61
258559 , p_source_62 => p_source_62
258560 , p_source_62_meaning => p_source_62_meaning
258561          , x_transaction_coa_id       => l_adr_transaction_coa_id
258562          , x_accounting_coa_id        => l_adr_accounting_coa_id
258563          , x_value_type_code          => l_adr_value_type_code
258564          , p_side                     => 'NA'
258565    );
258566 
258567    xla_ae_lines_pkg.set_ccid(
258568     p_code_combination_id          => l_ccid
258569   , p_value_type_code              => l_adr_value_type_code
258570   , p_transaction_coa_id           => l_adr_transaction_coa_id
258571   , p_accounting_coa_id            => l_adr_accounting_coa_id
258572   , p_adr_code                     => 'PI_WIP_BRIDGING'
258573   , p_adr_type_code                => 'S'
258574   , p_component_type               => l_component_type
258575   , p_component_code               => l_component_code
258576   , p_component_type_code          => l_component_type_code
258577   , p_component_appl_id            => l_component_appl_id
258578   , p_amb_context_code             => l_amb_context_code
258579   , p_side                         => 'NA'
258580   );
258581 
258582 
258583    --
258584    --
258585    END IF;
258586 
258587        --
258588        -- Update the line information that should be overwritten
258589        --
258590        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
258591                                          p_header_num   => 1);
258592        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
258593 
258594        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
258595 
258596        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
258597           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
258598        END IF;
258599 
258600       --
258601       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
258602       --
258603       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
258604           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
258605       ELSE
258606           ---------------------------------------------------------------------------------------------------
258607           -- 4262811a Switch Sign
258608           ---------------------------------------------------------------------------------------------------
258609           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
258610           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
258611                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
258612           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
258613                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
258614           -- 5132302
258615           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
258616                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
258617 
258618       END IF;
258619 
258620       -- 4955764
258621       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
258622       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
258623 
258624 
258625       XLA_AE_LINES_PKG.ValidateCurrentLine;
258626       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
258627 
258628       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
258629                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
258630                ,p_balance_type_code => l_balance_type_code);
258631 
258632    END IF;
258633 
258634    -----------------------------------------------------------------------------------------
258635    -- 4262811 Multiperiod Accounting
258636    -----------------------------------------------------------------------------------------
258637      -- No MPA option is assigned.
258638 
258639 
258640 END IF;
258641 END IF;
258642 --
258643 
258644 --
258645 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
258646    trace
258647       (p_msg      => 'END of AcctLineType_464'
258648       ,p_level    => C_LEVEL_PROCEDURE
258649       ,p_module   => l_log_module);
258650 END IF;
258651 --
258652 EXCEPTION
258653   WHEN xla_exceptions_pkg.application_exception THEN
258654       RAISE;
258655   WHEN OTHERS THEN
258656        xla_exceptions_pkg.raise_message
258657            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_464');
258658 END AcctLineType_464;
258659 --
258660 
258661 ---------------------------------------
258662 --
258663 -- PRIVATE FUNCTION
258664 --         AcctLineType_465
258665 --
258666 ---------------------------------------
258667 PROCEDURE AcctLineType_465 (
258668   p_application_id        IN NUMBER
258669  ,p_event_id              IN NUMBER
258670  ,p_calculate_acctd_flag  IN VARCHAR2
258671  ,p_calculate_g_l_flag    IN VARCHAR2
258672  ,p_actual_flag           IN OUT VARCHAR2
258673  ,p_balance_type_code     OUT VARCHAR2
258674  ,p_gain_or_loss_ref      OUT VARCHAR2
258675  
258676 --TRANSACTION_ID
258677  , p_source_1            IN NUMBER
258678 --Item Concatenated Segments
258679  , p_source_2            IN VARCHAR2
258680 --Transaction Quantity
258681  , p_source_3            IN NUMBER
258682 --Transaction Unit of Measure Code
258683  , p_source_4            IN VARCHAR2
258684 --Inventory Transaction Type Description
258685  , p_source_5            IN VARCHAR2
258686 --Transaction Distribution Account
258687  , p_source_20            IN NUMBER
258688 --Discrete Job Bridging Account
258689  , p_source_54            IN NUMBER
258690 --WIP Entity Type
258691  , p_source_55            IN NUMBER
258692  , p_source_55_meaning    IN VARCHAR2
258693 --Flow Schedule Bridging Account
258694  , p_source_56            IN NUMBER
258695 --Repetitive Item Bridging Account
258696  , p_source_57            IN NUMBER
258697 --TRANSACTION_SOURCE_ID
258698  , p_source_61            IN NUMBER
258699 --Transaction Action Name
258700  , p_source_62            IN NUMBER
258701  , p_source_62_meaning    IN VARCHAR2
258702 --DISTRIBUTION_IDENTIFIER
258703  , p_source_84            IN NUMBER
258704 --Distribution Type
258705  , p_source_85            IN VARCHAR2
258706  , p_source_85_meaning    IN VARCHAR2
258707 --Entered Currency Code
258708  , p_source_88            IN VARCHAR2
258709 --Entered Amount
258710  , p_source_91            IN NUMBER
258711 --Currency Conversion Date
258712  , p_source_92            IN DATE
258713 --Currency Conversion Rate
258714  , p_source_93            IN NUMBER
258715 --Currency Conversion Type
258716  , p_source_94            IN VARCHAR2
258717 --Accounted Amount
258718  , p_source_95            IN NUMBER
258719 --Accounting Line Type
258720  , p_source_97            IN NUMBER
258721 --Subinventory Type Indicator
258722  , p_source_110            IN VARCHAR2
258723  , p_source_110_meaning    IN VARCHAR2
258724 )
258725 IS
258726 
258727 l_component_type              VARCHAR2(80);
258728 l_component_code              VARCHAR2(30);
258729 l_component_type_code         VARCHAR2(1);
258730 l_component_appl_id           INTEGER;
258731 l_amb_context_code            VARCHAR2(30);
258732 l_entity_code                 VARCHAR2(30);
258733 l_event_class_code            VARCHAR2(30);
258734 l_ae_header_id                NUMBER;
258735 l_event_type_code             VARCHAR2(30);
258736 l_line_definition_code        VARCHAR2(30);
258737 l_line_definition_owner_code  VARCHAR2(1);
258738 --
258739 -- adr variables
258740 l_segment                     VARCHAR2(30);
258741 l_ccid                        NUMBER;
258742 l_adr_transaction_coa_id      NUMBER;
258743 l_adr_accounting_coa_id       NUMBER;
258744 l_adr_flexfield_segment_code  VARCHAR2(30);
258745 l_adr_flex_value_set_id       NUMBER;
258746 l_adr_value_type_code         VARCHAR2(30);
258747 l_adr_value_combination_id    NUMBER;
258748 l_adr_value_segment_code      VARCHAR2(30);
258749 
258750 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
258751 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
258752 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
258753 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
258754 
258755 -- 4262811 Variables ------------------------------------------------------------------------------------------
258756 l_entered_amt_idx             NUMBER;
258757 l_accted_amt_idx              NUMBER;
258758 l_acc_rev_flag                VARCHAR2(1);
258759 l_accrual_line_num            NUMBER;
258760 l_tmp_amt                     NUMBER;
258761 l_acc_rev_natural_side_code   VARCHAR2(1);
258762 
258763 l_num_entries                 NUMBER;
258764 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
258765 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
258766 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
258767 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
258768 l_recog_line_1                NUMBER;
258769 l_recog_line_2                NUMBER;
258770 
258771 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
258772 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
258773 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
258774 
258775 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
258776 
258777 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
258778 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
258779 
258780 ---------------------------------------------------------------------------------------------------------------
258781 
258782 
258783 --
258784 -- bulk performance
258785 --
258786 l_balance_type_code           VARCHAR2(1);
258787 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
258788 l_log_module                  VARCHAR2(240);
258789 
258790 --
258791 -- Upgrade strategy
258792 --
258793 l_actual_upg_option           VARCHAR2(1);
258794 l_enc_upg_option           VARCHAR2(1);
258795 
258796 --
258797 BEGIN
258798 --
258799 IF g_log_enabled THEN
258800       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_465';
258801 END IF;
258802 --
258803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
258804 
258805       trace
258806          (p_msg      => 'BEGIN of AcctLineType_465'
258807          ,p_level    => C_LEVEL_PROCEDURE
258808          ,p_module   => l_log_module);
258809 
258810 END IF;
258811 --
258812 l_component_type             := 'AMB_JLT';
258813 l_component_code             := 'PI_WIP_BRIDGING';
258814 l_component_type_code        := 'S';
258815 l_component_appl_id          :=  707;
258816 l_amb_context_code           := 'DEFAULT';
258817 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
258818 l_event_class_code           := 'WIP_MTL';
258819 l_event_type_code            := 'WIP_COMP_ISSUE';
258820 l_line_definition_owner_code := 'S';
258821 l_line_definition_code       := 'PI_WIP_COMP_ISSUE';
258822 --
258823 l_balance_type_code          := 'A';
258824 l_segment                     := NULL;
258825 l_ccid                        := NULL;
258826 l_adr_transaction_coa_id      := NULL;
258827 l_adr_accounting_coa_id       := NULL;
258828 l_adr_flexfield_segment_code  := NULL;
258829 l_adr_flex_value_set_id       := NULL;
258830 l_adr_value_type_code         := NULL;
258831 l_adr_value_combination_id    := NULL;
258832 l_adr_value_segment_code      := NULL;
258833 
258834 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
258835 l_bflow_class_code           := '';    -- 4219869 Business Flow
258836 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
258837 l_budgetary_control_flag     := 'N';
258838 
258839 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
258840 l_bflow_applied_to_amt       := NULL; -- 5132302
258841 l_entered_amt_idx            := NULL;          -- 4262811
258842 l_accted_amt_idx             := NULL;          -- 4262811
258843 l_acc_rev_flag               := NULL;          -- 4262811
258844 l_accrual_line_num           := NULL;          -- 4262811
258845 l_tmp_amt                    := NULL;          -- 4262811
258846 --
258847  
258848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
258849     l_balance_type_code <> 'B' THEN
258850 IF (NVL(p_source_97,9E125) =  7 OR 
258851 NVL(p_source_97,9E125) =  13) AND 
258852 NVL(p_source_110,'
258853 ') =  'Y'
258854  THEN 
258855 
258856    --
258857    XLA_AE_LINES_PKG.SetNewLine;
258858 
258859    p_balance_type_code          := l_balance_type_code;
258860    -- set the flag so later we will know whether the gain loss line needs to be created
258861    
258862    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
258863      p_actual_flag :='A';
258864    END IF;
258865 
258866    --
258867    -- bulk performance
258868    --
258869    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
258870                                       p_header_num   => 0); -- 4262811
258871    --
258872    -- set accounting line options
258873    --
258874    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
258875            p_natural_side_code          => 'C'
258876          , p_gain_or_loss_flag          => 'N'
258877          , p_gl_transfer_mode_code      => 'S'
258878          , p_acct_entry_type_code       => 'A'
258879          , p_switch_side_flag           => 'Y'
258880          , p_merge_duplicate_code       => 'N'
258881          );
258882    --
258883    l_acc_rev_natural_side_code := 'D';  -- 4262811
258884    -- 
258885    --
258886    -- set accounting line type info
258887    --
258888    xla_ae_lines_pkg.SetAcctLineType
258889       (p_component_type             => l_component_type
258890       ,p_event_type_code            => l_event_type_code
258891       ,p_line_definition_owner_code => l_line_definition_owner_code
258892       ,p_line_definition_code       => l_line_definition_code
258893       ,p_accounting_line_code       => l_component_code
258894       ,p_accounting_line_type_code  => l_component_type_code
258895       ,p_accounting_line_appl_id    => l_component_appl_id
258896       ,p_amb_context_code           => l_amb_context_code
258897       ,p_entity_code                => l_entity_code
258898       ,p_event_class_code           => l_event_class_code);
258899    --
258900    -- set accounting class
258901    --
258902    xla_ae_lines_pkg.SetAcctClass(
258903            p_accounting_class_code  => 'WIP_BRIDGING'
258904          , p_ae_header_id           => l_ae_header_id
258905          );
258906 
258907    --
258908    -- set rounding class
258909    --
258910    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
258911                       'WIP_BRIDGING';
258912 
258913    --
258914    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
258915    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
258916    --
258917    -- bulk performance
258918    --
258919    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
258920 
258921    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
258922       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
258923 
258924    -- 4955764
258925    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
258926       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
258927 
258928    -- 4458381 Public Sector Enh
258929    
258930    --
258931    -- set accounting attributes for the line type
258932    --
258933    l_entered_amt_idx := 3;
258934    l_accted_amt_idx  := 8;
258935    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
258936    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
258937    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
258938    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
258939    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
258940    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
258941    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
258942    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
258943    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
258944    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
258945    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
258946    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
258947    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
258948    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
258949    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
258950    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
258951    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
258952 
258953    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
258954    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
258955 
258956    ---------------------------------------------------------------------------------------------------------------
258957    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
258958    ---------------------------------------------------------------------------------------------------------------
258959    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
258960 
258961    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
258962    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
258963 
258964    IF xla_accounting_cache_pkg.GetValueChar
258965          (p_source_code         => 'LEDGER_CATEGORY_CODE'
258966          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
258967    AND l_bflow_method_code = 'PRIOR_ENTRY'
258968 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
258969    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
258970          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
258971        )
258972    THEN
258973          xla_ae_lines_pkg.BflowUpgEntry
258974            (p_business_method_code    => l_bflow_method_code
258975            ,p_business_class_code     => l_bflow_class_code
258976            ,p_balance_type            => l_balance_type_code);
258977    ELSE
258978       NULL;
258979 -- No business flow processing for business flow method of NONE.
258980    END IF;
258981 
258982    --
258983    -- call analytical criteria
258984    --
258985    
258986    --
258987    -- call description
258988    --
258989    
258990 xla_ae_lines_pkg.SetLineDescription(
258991    p_ae_header_id => l_ae_header_id
258992   ,p_description  => Description_1 (
258993      p_application_id         => p_application_id
258994    , p_ae_header_id           => l_ae_header_id 
258995 , p_source_1 => p_source_1
258996 , p_source_2 => p_source_2
258997 , p_source_3 => p_source_3
258998 , p_source_4 => p_source_4
258999 , p_source_5 => p_source_5
259000    )
259001 );
259002 
259003 
259004    --
259005    -- call ADRs
259006    -- Bug 4922099
259007    --
259008    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
259009         (NVL(l_actual_upg_option, 'N') = 'O') OR
259010         (NVL(l_enc_upg_option, 'N') = 'O')
259011       )
259012    THEN
259013    NULL;
259014    --
259015    --
259016    
259017   l_ccid := AcctDerRule_35(
259018            p_application_id           => p_application_id
259019          , p_ae_header_id             => l_ae_header_id 
259020 , p_source_20 => p_source_20
259021 , p_source_54 => p_source_54
259022 , p_source_55 => p_source_55
259023 , p_source_55_meaning => p_source_55_meaning
259024 , p_source_56 => p_source_56
259025 , p_source_57 => p_source_57
259026 , p_source_61 => p_source_61
259027 , p_source_62 => p_source_62
259028 , p_source_62_meaning => p_source_62_meaning
259029          , x_transaction_coa_id       => l_adr_transaction_coa_id
259030          , x_accounting_coa_id        => l_adr_accounting_coa_id
259031          , x_value_type_code          => l_adr_value_type_code
259032          , p_side                     => 'NA'
259033    );
259034 
259035    xla_ae_lines_pkg.set_ccid(
259036     p_code_combination_id          => l_ccid
259037   , p_value_type_code              => l_adr_value_type_code
259038   , p_transaction_coa_id           => l_adr_transaction_coa_id
259039   , p_accounting_coa_id            => l_adr_accounting_coa_id
259040   , p_adr_code                     => 'PI_WIP_BRIDGING'
259041   , p_adr_type_code                => 'S'
259042   , p_component_type               => l_component_type
259043   , p_component_code               => l_component_code
259044   , p_component_type_code          => l_component_type_code
259045   , p_component_appl_id            => l_component_appl_id
259046   , p_amb_context_code             => l_amb_context_code
259047   , p_side                         => 'NA'
259048   );
259049 
259050 
259051    --
259052    --
259053    END IF;
259054    --
259055    -- Bug 4922099
259056    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
259057           (NVL(l_enc_upg_option, 'N') = 'O')
259058         ) AND
259059         (l_bflow_method_code = 'PRIOR_ENTRY')
259060       )
259061    THEN
259062       IF
259063       --
259064       1 = 2
259065       --
259066       THEN
259067       xla_accounting_err_pkg.build_message
259068                                     (p_appli_s_name            => 'XLA'
259069                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
259070                                     ,p_token_1                 => 'LINE_NUMBER'
259071                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
259072                                     ,p_token_2                 => 'LINE_TYPE_NAME'
259073                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
259074                                                                              l_component_type
259075                                                                             ,l_component_code
259076                                                                             ,l_component_type_code
259077                                                                             ,l_component_appl_id
259078                                                                             ,l_amb_context_code
259079                                                                             ,l_entity_code
259080                                                                             ,l_event_class_code
259081                                                                            )
259082                                     ,p_token_3                 => 'OWNER'
259083                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
259084                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
259085                                                                           ,p_lookup_code    => l_component_type_code
259086                                                                          )
259087                                     ,p_token_4                 => 'PRODUCT_NAME'
259088                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
259089                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
259090                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
259091                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
259092                                     ,p_ae_header_id            =>  NULL
259093                                        );
259094 
259095         IF (C_LEVEL_ERROR>= g_log_level) THEN
259096                  trace
259097                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
259098                       ,p_level    => C_LEVEL_ERROR
259099                       ,p_module   => l_log_module);
259100         END IF;
259101       END IF;
259102    END IF;
259103    --
259104    --
259105    ------------------------------------------------------------------------------------------------
259106    -- 4219869 Business Flow
259107    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
259108    -- Prior Entry.  Currently, the following code is always generated.
259109    ------------------------------------------------------------------------------------------------
259110    XLA_AE_LINES_PKG.ValidateCurrentLine;
259111 
259112    ------------------------------------------------------------------------------------
259113    -- 4219869 Business Flow
259114    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
259115    ------------------------------------------------------------------------------------
259116    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
259117 
259118    ----------------------------------------------------------------------------------
259119    -- 4219869 Business Flow
259120    -- Update journal entry status -- Need to generate this within IF <condition>
259121    ----------------------------------------------------------------------------------
259122    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
259123          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
259124          ,p_balance_type_code => l_balance_type_code
259125          );
259126 
259127    -------------------------------------------------------------------------------------------
259128    -- 4262811 - Generate the Accrual Reversal lines
259129    -------------------------------------------------------------------------------------------
259130    BEGIN
259131       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
259132                               (g_array_event(p_event_id).array_value_num('header_index'));
259133       IF l_acc_rev_flag IS NULL THEN
259134          l_acc_rev_flag := 'N';
259135       END IF;
259136    EXCEPTION
259137       WHEN OTHERS THEN
259138          l_acc_rev_flag := 'N';
259139    END;
259140    --
259141    IF (l_acc_rev_flag = 'Y') THEN
259142 
259143        -- 4645092  ------------------------------------------------------------------------------
259144        -- To allow MPA report to determine if it should generate report process
259145        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
259146        ------------------------------------------------------------------------------------------
259147 
259148        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
259149        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
259150    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
259151    -- call ADRs
259152    -- Bug 4922099
259153    --
259154    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
259155         (NVL(l_actual_upg_option, 'N') = 'O') OR
259156         (NVL(l_enc_upg_option, 'N') = 'O')
259157       )
259158    THEN
259159    NULL;
259160    --
259161    --
259162    
259163   l_ccid := AcctDerRule_35(
259164            p_application_id           => p_application_id
259165          , p_ae_header_id             => l_ae_header_id 
259166 , p_source_20 => p_source_20
259167 , p_source_54 => p_source_54
259168 , p_source_55 => p_source_55
259169 , p_source_55_meaning => p_source_55_meaning
259170 , p_source_56 => p_source_56
259171 , p_source_57 => p_source_57
259172 , p_source_61 => p_source_61
259173 , p_source_62 => p_source_62
259174 , p_source_62_meaning => p_source_62_meaning
259175          , x_transaction_coa_id       => l_adr_transaction_coa_id
259176          , x_accounting_coa_id        => l_adr_accounting_coa_id
259177          , x_value_type_code          => l_adr_value_type_code
259178          , p_side                     => 'NA'
259179    );
259180 
259181    xla_ae_lines_pkg.set_ccid(
259182     p_code_combination_id          => l_ccid
259183   , p_value_type_code              => l_adr_value_type_code
259184   , p_transaction_coa_id           => l_adr_transaction_coa_id
259185   , p_accounting_coa_id            => l_adr_accounting_coa_id
259186   , p_adr_code                     => 'PI_WIP_BRIDGING'
259187   , p_adr_type_code                => 'S'
259188   , p_component_type               => l_component_type
259189   , p_component_code               => l_component_code
259190   , p_component_type_code          => l_component_type_code
259191   , p_component_appl_id            => l_component_appl_id
259192   , p_amb_context_code             => l_amb_context_code
259193   , p_side                         => 'NA'
259194   );
259195 
259196 
259197    --
259198    --
259199    END IF;
259200 
259201        --
259202        -- Update the line information that should be overwritten
259203        --
259204        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
259205                                          p_header_num   => 1);
259206        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
259207 
259208        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
259209 
259210        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
259211           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
259212        END IF;
259213 
259214       --
259215       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
259216       --
259217       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
259218           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
259219       ELSE
259220           ---------------------------------------------------------------------------------------------------
259221           -- 4262811a Switch Sign
259222           ---------------------------------------------------------------------------------------------------
259223           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
259224           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
259225                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
259226           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
259227                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
259228           -- 5132302
259229           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
259230                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
259231 
259232       END IF;
259233 
259234       -- 4955764
259235       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
259236       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
259237 
259238 
259239       XLA_AE_LINES_PKG.ValidateCurrentLine;
259240       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
259241 
259242       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
259243                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
259244                ,p_balance_type_code => l_balance_type_code);
259245 
259246    END IF;
259247 
259248    -----------------------------------------------------------------------------------------
259249    -- 4262811 Multiperiod Accounting
259250    -----------------------------------------------------------------------------------------
259251      -- No MPA option is assigned.
259252 
259253 
259254 END IF;
259255 END IF;
259256 --
259257 
259258 --
259259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
259260    trace
259261       (p_msg      => 'END of AcctLineType_465'
259262       ,p_level    => C_LEVEL_PROCEDURE
259263       ,p_module   => l_log_module);
259264 END IF;
259265 --
259266 EXCEPTION
259267   WHEN xla_exceptions_pkg.application_exception THEN
259268       RAISE;
259269   WHEN OTHERS THEN
259270        xla_exceptions_pkg.raise_message
259271            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_465');
259272 END AcctLineType_465;
259273 --
259274 
259275 ---------------------------------------
259276 --
259277 -- PRIVATE FUNCTION
259278 --         AcctLineType_466
259279 --
259280 ---------------------------------------
259281 PROCEDURE AcctLineType_466 (
259282   p_application_id        IN NUMBER
259283  ,p_event_id              IN NUMBER
259284  ,p_calculate_acctd_flag  IN VARCHAR2
259285  ,p_calculate_g_l_flag    IN VARCHAR2
259286  ,p_actual_flag           IN OUT VARCHAR2
259287  ,p_balance_type_code     OUT VARCHAR2
259288  ,p_gain_or_loss_ref      OUT VARCHAR2
259289  
259290 --TRANSACTION_ID
259291  , p_source_1            IN NUMBER
259292 --Item Concatenated Segments
259293  , p_source_2            IN VARCHAR2
259294 --Transaction Quantity
259295  , p_source_3            IN NUMBER
259296 --Transaction Unit of Measure Code
259297  , p_source_4            IN VARCHAR2
259298 --Inventory Transaction Type Description
259299  , p_source_5            IN VARCHAR2
259300 --Cost Management Default Account
259301  , p_source_11            IN NUMBER
259302 --DISTRIBUTION_IDENTIFIER
259303  , p_source_84            IN NUMBER
259304 --Distribution Type
259305  , p_source_85            IN VARCHAR2
259306  , p_source_85_meaning    IN VARCHAR2
259307 --Entered Currency Code
259308  , p_source_88            IN VARCHAR2
259309 --Entered Amount
259310  , p_source_91            IN NUMBER
259311 --Currency Conversion Date
259312  , p_source_92            IN DATE
259313 --Currency Conversion Rate
259314  , p_source_93            IN NUMBER
259315 --Currency Conversion Type
259316  , p_source_94            IN VARCHAR2
259317 --Accounted Amount
259318  , p_source_95            IN NUMBER
259319 --Accounting Line Type
259320  , p_source_97            IN NUMBER
259321 )
259322 IS
259323 
259324 l_component_type              VARCHAR2(80);
259325 l_component_code              VARCHAR2(30);
259326 l_component_type_code         VARCHAR2(1);
259327 l_component_appl_id           INTEGER;
259328 l_amb_context_code            VARCHAR2(30);
259329 l_entity_code                 VARCHAR2(30);
259330 l_event_class_code            VARCHAR2(30);
259331 l_ae_header_id                NUMBER;
259332 l_event_type_code             VARCHAR2(30);
259333 l_line_definition_code        VARCHAR2(30);
259334 l_line_definition_owner_code  VARCHAR2(1);
259335 --
259336 -- adr variables
259337 l_segment                     VARCHAR2(30);
259338 l_ccid                        NUMBER;
259339 l_adr_transaction_coa_id      NUMBER;
259340 l_adr_accounting_coa_id       NUMBER;
259341 l_adr_flexfield_segment_code  VARCHAR2(30);
259342 l_adr_flex_value_set_id       NUMBER;
259343 l_adr_value_type_code         VARCHAR2(30);
259344 l_adr_value_combination_id    NUMBER;
259345 l_adr_value_segment_code      VARCHAR2(30);
259346 
259347 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
259348 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
259349 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
259350 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
259351 
259352 -- 4262811 Variables ------------------------------------------------------------------------------------------
259353 l_entered_amt_idx             NUMBER;
259354 l_accted_amt_idx              NUMBER;
259355 l_acc_rev_flag                VARCHAR2(1);
259356 l_accrual_line_num            NUMBER;
259357 l_tmp_amt                     NUMBER;
259358 l_acc_rev_natural_side_code   VARCHAR2(1);
259359 
259360 l_num_entries                 NUMBER;
259361 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
259362 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
259363 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
259364 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
259365 l_recog_line_1                NUMBER;
259366 l_recog_line_2                NUMBER;
259367 
259368 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
259369 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
259370 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
259371 
259372 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
259373 
259374 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
259375 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
259376 
259377 ---------------------------------------------------------------------------------------------------------------
259378 
259379 
259380 --
259381 -- bulk performance
259382 --
259383 l_balance_type_code           VARCHAR2(1);
259384 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
259385 l_log_module                  VARCHAR2(240);
259386 
259387 --
259388 -- Upgrade strategy
259389 --
259390 l_actual_upg_option           VARCHAR2(1);
259391 l_enc_upg_option           VARCHAR2(1);
259392 
259393 --
259394 BEGIN
259395 --
259396 IF g_log_enabled THEN
259397       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_466';
259398 END IF;
259399 --
259400 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
259401 
259402       trace
259403          (p_msg      => 'BEGIN of AcctLineType_466'
259404          ,p_level    => C_LEVEL_PROCEDURE
259405          ,p_module   => l_log_module);
259406 
259407 END IF;
259408 --
259409 l_component_type             := 'AMB_JLT';
259410 l_component_code             := 'PROFIT_IN_INVENTORY';
259411 l_component_type_code        := 'S';
259412 l_component_appl_id          :=  707;
259413 l_amb_context_code           := 'DEFAULT';
259414 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
259415 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
259416 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
259417 l_line_definition_owner_code := 'S';
259418 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
259419 --
259420 l_balance_type_code          := 'A';
259421 l_segment                     := NULL;
259422 l_ccid                        := NULL;
259423 l_adr_transaction_coa_id      := NULL;
259424 l_adr_accounting_coa_id       := NULL;
259425 l_adr_flexfield_segment_code  := NULL;
259426 l_adr_flex_value_set_id       := NULL;
259427 l_adr_value_type_code         := NULL;
259428 l_adr_value_combination_id    := NULL;
259429 l_adr_value_segment_code      := NULL;
259430 
259431 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
259432 l_bflow_class_code           := '';    -- 4219869 Business Flow
259433 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
259434 l_budgetary_control_flag     := 'N';
259435 
259436 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
259437 l_bflow_applied_to_amt       := NULL; -- 5132302
259438 l_entered_amt_idx            := NULL;          -- 4262811
259439 l_accted_amt_idx             := NULL;          -- 4262811
259440 l_acc_rev_flag               := NULL;          -- 4262811
259441 l_accrual_line_num           := NULL;          -- 4262811
259442 l_tmp_amt                    := NULL;          -- 4262811
259443 --
259444  
259445 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
259446     l_balance_type_code <> 'B' THEN
259447 IF NVL(p_source_97,9E125) =  30
259448  THEN 
259449 
259450    --
259451    XLA_AE_LINES_PKG.SetNewLine;
259452 
259453    p_balance_type_code          := l_balance_type_code;
259454    -- set the flag so later we will know whether the gain loss line needs to be created
259455    
259456    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
259457      p_actual_flag :='A';
259458    END IF;
259459 
259460    --
259461    -- bulk performance
259462    --
259463    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
259464                                       p_header_num   => 0); -- 4262811
259465    --
259466    -- set accounting line options
259467    --
259468    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
259469            p_natural_side_code          => 'D'
259470          , p_gain_or_loss_flag          => 'N'
259471          , p_gl_transfer_mode_code      => 'S'
259472          , p_acct_entry_type_code       => 'A'
259473          , p_switch_side_flag           => 'Y'
259474          , p_merge_duplicate_code       => 'N'
259475          );
259476    --
259477    l_acc_rev_natural_side_code := 'C';  -- 4262811
259478    -- 
259479    --
259480    -- set accounting line type info
259481    --
259482    xla_ae_lines_pkg.SetAcctLineType
259483       (p_component_type             => l_component_type
259484       ,p_event_type_code            => l_event_type_code
259485       ,p_line_definition_owner_code => l_line_definition_owner_code
259486       ,p_line_definition_code       => l_line_definition_code
259487       ,p_accounting_line_code       => l_component_code
259488       ,p_accounting_line_type_code  => l_component_type_code
259489       ,p_accounting_line_appl_id    => l_component_appl_id
259490       ,p_amb_context_code           => l_amb_context_code
259491       ,p_entity_code                => l_entity_code
259492       ,p_event_class_code           => l_event_class_code);
259493    --
259494    -- set accounting class
259495    --
259496    xla_ae_lines_pkg.SetAcctClass(
259497            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
259498          , p_ae_header_id           => l_ae_header_id
259499          );
259500 
259501    --
259502    -- set rounding class
259503    --
259504    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
259505                       'PROFIT_IN_INVENTORY';
259506 
259507    --
259508    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
259509    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
259510    --
259511    -- bulk performance
259512    --
259513    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
259514 
259515    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
259516       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
259517 
259518    -- 4955764
259519    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
259520       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
259521 
259522    -- 4458381 Public Sector Enh
259523    
259524    --
259525    -- set accounting attributes for the line type
259526    --
259527    l_entered_amt_idx := 3;
259528    l_accted_amt_idx  := 8;
259529    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
259530    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
259531    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
259532    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
259533    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
259534    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
259535    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
259536    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
259537    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
259538    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
259539    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
259540    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
259541    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
259542    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
259543    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
259544    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
259545    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
259546 
259547    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
259548    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
259549 
259550    ---------------------------------------------------------------------------------------------------------------
259551    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
259552    ---------------------------------------------------------------------------------------------------------------
259553    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
259554 
259555    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
259556    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
259557 
259558    IF xla_accounting_cache_pkg.GetValueChar
259559          (p_source_code         => 'LEDGER_CATEGORY_CODE'
259560          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
259561    AND l_bflow_method_code = 'PRIOR_ENTRY'
259562 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
259563    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
259564          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
259565        )
259566    THEN
259567          xla_ae_lines_pkg.BflowUpgEntry
259568            (p_business_method_code    => l_bflow_method_code
259569            ,p_business_class_code     => l_bflow_class_code
259570            ,p_balance_type            => l_balance_type_code);
259571    ELSE
259572       NULL;
259573 -- No business flow processing for business flow method of NONE.
259574    END IF;
259575 
259576    --
259577    -- call analytical criteria
259578    --
259579    
259580    --
259581    -- call description
259582    --
259583    
259584 xla_ae_lines_pkg.SetLineDescription(
259585    p_ae_header_id => l_ae_header_id
259586   ,p_description  => Description_1 (
259587      p_application_id         => p_application_id
259588    , p_ae_header_id           => l_ae_header_id 
259589 , p_source_1 => p_source_1
259590 , p_source_2 => p_source_2
259591 , p_source_3 => p_source_3
259592 , p_source_4 => p_source_4
259593 , p_source_5 => p_source_5
259594    )
259595 );
259596 
259597 
259598    --
259599    -- call ADRs
259600    -- Bug 4922099
259601    --
259602    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
259603         (NVL(l_actual_upg_option, 'N') = 'O') OR
259604         (NVL(l_enc_upg_option, 'N') = 'O')
259605       )
259606    THEN
259607    NULL;
259608    --
259609    --
259610    
259611   l_ccid := AcctDerRule_6(
259612            p_application_id           => p_application_id
259613          , p_ae_header_id             => l_ae_header_id 
259614 , p_source_11 => p_source_11
259615          , x_transaction_coa_id       => l_adr_transaction_coa_id
259616          , x_accounting_coa_id        => l_adr_accounting_coa_id
259617          , x_value_type_code          => l_adr_value_type_code
259618          , p_side                     => 'NA'
259619    );
259620 
259621    xla_ae_lines_pkg.set_ccid(
259622     p_code_combination_id          => l_ccid
259623   , p_value_type_code              => l_adr_value_type_code
259624   , p_transaction_coa_id           => l_adr_transaction_coa_id
259625   , p_accounting_coa_id            => l_adr_accounting_coa_id
259626   , p_adr_code                     => 'CST_DEFAULT'
259627   , p_adr_type_code                => 'S'
259628   , p_component_type               => l_component_type
259629   , p_component_code               => l_component_code
259630   , p_component_type_code          => l_component_type_code
259631   , p_component_appl_id            => l_component_appl_id
259632   , p_amb_context_code             => l_amb_context_code
259633   , p_side                         => 'NA'
259634   );
259635 
259636 
259637    --
259638    --
259639    END IF;
259640    --
259641    -- Bug 4922099
259642    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
259643           (NVL(l_enc_upg_option, 'N') = 'O')
259644         ) AND
259645         (l_bflow_method_code = 'PRIOR_ENTRY')
259646       )
259647    THEN
259648       IF
259649       --
259650       1 = 2
259651       --
259652       THEN
259653       xla_accounting_err_pkg.build_message
259654                                     (p_appli_s_name            => 'XLA'
259655                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
259656                                     ,p_token_1                 => 'LINE_NUMBER'
259657                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
259658                                     ,p_token_2                 => 'LINE_TYPE_NAME'
259659                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
259660                                                                              l_component_type
259661                                                                             ,l_component_code
259662                                                                             ,l_component_type_code
259663                                                                             ,l_component_appl_id
259664                                                                             ,l_amb_context_code
259665                                                                             ,l_entity_code
259666                                                                             ,l_event_class_code
259667                                                                            )
259668                                     ,p_token_3                 => 'OWNER'
259669                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
259670                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
259671                                                                           ,p_lookup_code    => l_component_type_code
259672                                                                          )
259673                                     ,p_token_4                 => 'PRODUCT_NAME'
259674                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
259675                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
259676                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
259677                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
259678                                     ,p_ae_header_id            =>  NULL
259679                                        );
259680 
259681         IF (C_LEVEL_ERROR>= g_log_level) THEN
259682                  trace
259683                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
259684                       ,p_level    => C_LEVEL_ERROR
259685                       ,p_module   => l_log_module);
259686         END IF;
259687       END IF;
259688    END IF;
259689    --
259690    --
259691    ------------------------------------------------------------------------------------------------
259692    -- 4219869 Business Flow
259693    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
259694    -- Prior Entry.  Currently, the following code is always generated.
259695    ------------------------------------------------------------------------------------------------
259696    XLA_AE_LINES_PKG.ValidateCurrentLine;
259697 
259698    ------------------------------------------------------------------------------------
259699    -- 4219869 Business Flow
259700    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
259701    ------------------------------------------------------------------------------------
259702    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
259703 
259704    ----------------------------------------------------------------------------------
259705    -- 4219869 Business Flow
259706    -- Update journal entry status -- Need to generate this within IF <condition>
259707    ----------------------------------------------------------------------------------
259708    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
259709          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
259710          ,p_balance_type_code => l_balance_type_code
259711          );
259712 
259713    -------------------------------------------------------------------------------------------
259714    -- 4262811 - Generate the Accrual Reversal lines
259715    -------------------------------------------------------------------------------------------
259716    BEGIN
259717       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
259718                               (g_array_event(p_event_id).array_value_num('header_index'));
259719       IF l_acc_rev_flag IS NULL THEN
259720          l_acc_rev_flag := 'N';
259721       END IF;
259722    EXCEPTION
259723       WHEN OTHERS THEN
259724          l_acc_rev_flag := 'N';
259725    END;
259726    --
259727    IF (l_acc_rev_flag = 'Y') THEN
259728 
259729        -- 4645092  ------------------------------------------------------------------------------
259730        -- To allow MPA report to determine if it should generate report process
259731        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
259732        ------------------------------------------------------------------------------------------
259733 
259734        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
259735        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
259736    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
259737    -- call ADRs
259738    -- Bug 4922099
259739    --
259740    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
259741         (NVL(l_actual_upg_option, 'N') = 'O') OR
259742         (NVL(l_enc_upg_option, 'N') = 'O')
259743       )
259744    THEN
259745    NULL;
259746    --
259747    --
259748    
259749   l_ccid := AcctDerRule_6(
259750            p_application_id           => p_application_id
259751          , p_ae_header_id             => l_ae_header_id 
259752 , p_source_11 => p_source_11
259753          , x_transaction_coa_id       => l_adr_transaction_coa_id
259754          , x_accounting_coa_id        => l_adr_accounting_coa_id
259755          , x_value_type_code          => l_adr_value_type_code
259756          , p_side                     => 'NA'
259757    );
259758 
259759    xla_ae_lines_pkg.set_ccid(
259760     p_code_combination_id          => l_ccid
259761   , p_value_type_code              => l_adr_value_type_code
259762   , p_transaction_coa_id           => l_adr_transaction_coa_id
259763   , p_accounting_coa_id            => l_adr_accounting_coa_id
259764   , p_adr_code                     => 'CST_DEFAULT'
259765   , p_adr_type_code                => 'S'
259766   , p_component_type               => l_component_type
259767   , p_component_code               => l_component_code
259768   , p_component_type_code          => l_component_type_code
259769   , p_component_appl_id            => l_component_appl_id
259770   , p_amb_context_code             => l_amb_context_code
259771   , p_side                         => 'NA'
259772   );
259773 
259774 
259775    --
259776    --
259777    END IF;
259778 
259779        --
259780        -- Update the line information that should be overwritten
259781        --
259782        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
259783                                          p_header_num   => 1);
259784        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
259785 
259786        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
259787 
259788        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
259789           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
259790        END IF;
259791 
259792       --
259793       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
259794       --
259795       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
259796           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
259797       ELSE
259798           ---------------------------------------------------------------------------------------------------
259799           -- 4262811a Switch Sign
259800           ---------------------------------------------------------------------------------------------------
259801           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
259802           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
259803                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
259804           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
259805                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
259806           -- 5132302
259807           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
259808                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
259809 
259810       END IF;
259811 
259812       -- 4955764
259813       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
259814       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
259815 
259816 
259817       XLA_AE_LINES_PKG.ValidateCurrentLine;
259818       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
259819 
259820       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
259821                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
259822                ,p_balance_type_code => l_balance_type_code);
259823 
259824    END IF;
259825 
259826    -----------------------------------------------------------------------------------------
259827    -- 4262811 Multiperiod Accounting
259828    -----------------------------------------------------------------------------------------
259829      -- No MPA option is assigned.
259830 
259831 
259832 END IF;
259833 END IF;
259834 --
259835 
259836 --
259837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
259838    trace
259839       (p_msg      => 'END of AcctLineType_466'
259840       ,p_level    => C_LEVEL_PROCEDURE
259841       ,p_module   => l_log_module);
259842 END IF;
259843 --
259844 EXCEPTION
259845   WHEN xla_exceptions_pkg.application_exception THEN
259846       RAISE;
259847   WHEN OTHERS THEN
259848        xla_exceptions_pkg.raise_message
259849            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_466');
259850 END AcctLineType_466;
259851 --
259852 
259853 ---------------------------------------
259854 --
259855 -- PRIVATE FUNCTION
259856 --         AcctLineType_467
259857 --
259858 ---------------------------------------
259859 PROCEDURE AcctLineType_467 (
259860   p_application_id        IN NUMBER
259861  ,p_event_id              IN NUMBER
259862  ,p_calculate_acctd_flag  IN VARCHAR2
259863  ,p_calculate_g_l_flag    IN VARCHAR2
259864  ,p_actual_flag           IN OUT VARCHAR2
259865  ,p_balance_type_code     OUT VARCHAR2
259866  ,p_gain_or_loss_ref      OUT VARCHAR2
259867  
259868 --TRANSACTION_ID
259869  , p_source_1            IN NUMBER
259870 --Item Concatenated Segments
259871  , p_source_2            IN VARCHAR2
259872 --Transaction Quantity
259873  , p_source_3            IN NUMBER
259874 --Transaction Unit of Measure Code
259875  , p_source_4            IN VARCHAR2
259876 --Inventory Transaction Type Description
259877  , p_source_5            IN VARCHAR2
259878 --Cost Management Default Account
259879  , p_source_11            IN NUMBER
259880 --DISTRIBUTION_IDENTIFIER
259881  , p_source_84            IN NUMBER
259882 --Distribution Type
259883  , p_source_85            IN VARCHAR2
259884  , p_source_85_meaning    IN VARCHAR2
259885 --Entered Currency Code
259886  , p_source_88            IN VARCHAR2
259887 --Entered Amount
259888  , p_source_91            IN NUMBER
259889 --Currency Conversion Date
259890  , p_source_92            IN DATE
259891 --Currency Conversion Rate
259892  , p_source_93            IN NUMBER
259893 --Currency Conversion Type
259894  , p_source_94            IN VARCHAR2
259895 --Accounted Amount
259896  , p_source_95            IN NUMBER
259897 --Accounting Line Type
259898  , p_source_97            IN NUMBER
259899 )
259900 IS
259901 
259902 l_component_type              VARCHAR2(80);
259903 l_component_code              VARCHAR2(30);
259904 l_component_type_code         VARCHAR2(1);
259905 l_component_appl_id           INTEGER;
259906 l_amb_context_code            VARCHAR2(30);
259907 l_entity_code                 VARCHAR2(30);
259908 l_event_class_code            VARCHAR2(30);
259909 l_ae_header_id                NUMBER;
259910 l_event_type_code             VARCHAR2(30);
259911 l_line_definition_code        VARCHAR2(30);
259912 l_line_definition_owner_code  VARCHAR2(1);
259913 --
259914 -- adr variables
259915 l_segment                     VARCHAR2(30);
259916 l_ccid                        NUMBER;
259917 l_adr_transaction_coa_id      NUMBER;
259918 l_adr_accounting_coa_id       NUMBER;
259919 l_adr_flexfield_segment_code  VARCHAR2(30);
259920 l_adr_flex_value_set_id       NUMBER;
259921 l_adr_value_type_code         VARCHAR2(30);
259922 l_adr_value_combination_id    NUMBER;
259923 l_adr_value_segment_code      VARCHAR2(30);
259924 
259925 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
259926 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
259927 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
259928 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
259929 
259930 -- 4262811 Variables ------------------------------------------------------------------------------------------
259931 l_entered_amt_idx             NUMBER;
259932 l_accted_amt_idx              NUMBER;
259933 l_acc_rev_flag                VARCHAR2(1);
259934 l_accrual_line_num            NUMBER;
259935 l_tmp_amt                     NUMBER;
259936 l_acc_rev_natural_side_code   VARCHAR2(1);
259937 
259938 l_num_entries                 NUMBER;
259939 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
259940 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
259941 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
259942 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
259943 l_recog_line_1                NUMBER;
259944 l_recog_line_2                NUMBER;
259945 
259946 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
259947 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
259948 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
259949 
259950 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
259951 
259952 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
259953 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
259954 
259955 ---------------------------------------------------------------------------------------------------------------
259956 
259957 
259958 --
259959 -- bulk performance
259960 --
259961 l_balance_type_code           VARCHAR2(1);
259962 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
259963 l_log_module                  VARCHAR2(240);
259964 
259965 --
259966 -- Upgrade strategy
259967 --
259968 l_actual_upg_option           VARCHAR2(1);
259969 l_enc_upg_option           VARCHAR2(1);
259970 
259971 --
259972 BEGIN
259973 --
259974 IF g_log_enabled THEN
259975       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_467';
259976 END IF;
259977 --
259978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
259979 
259980       trace
259981          (p_msg      => 'BEGIN of AcctLineType_467'
259982          ,p_level    => C_LEVEL_PROCEDURE
259983          ,p_module   => l_log_module);
259984 
259985 END IF;
259986 --
259987 l_component_type             := 'AMB_JLT';
259988 l_component_code             := 'PROFIT_IN_INVENTORY';
259989 l_component_type_code        := 'S';
259990 l_component_appl_id          :=  707;
259991 l_amb_context_code           := 'DEFAULT';
259992 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
259993 l_event_class_code           := 'USER_DEFINE';
259994 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
259995 l_line_definition_owner_code := 'S';
259996 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
259997 --
259998 l_balance_type_code          := 'A';
259999 l_segment                     := NULL;
260000 l_ccid                        := NULL;
260001 l_adr_transaction_coa_id      := NULL;
260002 l_adr_accounting_coa_id       := NULL;
260003 l_adr_flexfield_segment_code  := NULL;
260004 l_adr_flex_value_set_id       := NULL;
260005 l_adr_value_type_code         := NULL;
260006 l_adr_value_combination_id    := NULL;
260007 l_adr_value_segment_code      := NULL;
260008 
260009 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
260010 l_bflow_class_code           := '';    -- 4219869 Business Flow
260011 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
260012 l_budgetary_control_flag     := 'N';
260013 
260014 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
260015 l_bflow_applied_to_amt       := NULL; -- 5132302
260016 l_entered_amt_idx            := NULL;          -- 4262811
260017 l_accted_amt_idx             := NULL;          -- 4262811
260018 l_acc_rev_flag               := NULL;          -- 4262811
260019 l_accrual_line_num           := NULL;          -- 4262811
260020 l_tmp_amt                    := NULL;          -- 4262811
260021 --
260022  
260023 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
260024     l_balance_type_code <> 'B' THEN
260025 IF NVL(p_source_97,9E125) =  30
260026  THEN 
260027 
260028    --
260029    XLA_AE_LINES_PKG.SetNewLine;
260030 
260031    p_balance_type_code          := l_balance_type_code;
260032    -- set the flag so later we will know whether the gain loss line needs to be created
260033    
260034    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
260035      p_actual_flag :='A';
260036    END IF;
260037 
260038    --
260039    -- bulk performance
260040    --
260041    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
260042                                       p_header_num   => 0); -- 4262811
260043    --
260044    -- set accounting line options
260045    --
260046    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
260047            p_natural_side_code          => 'D'
260048          , p_gain_or_loss_flag          => 'N'
260049          , p_gl_transfer_mode_code      => 'S'
260050          , p_acct_entry_type_code       => 'A'
260051          , p_switch_side_flag           => 'Y'
260052          , p_merge_duplicate_code       => 'N'
260053          );
260054    --
260055    l_acc_rev_natural_side_code := 'C';  -- 4262811
260056    -- 
260057    --
260058    -- set accounting line type info
260059    --
260060    xla_ae_lines_pkg.SetAcctLineType
260061       (p_component_type             => l_component_type
260062       ,p_event_type_code            => l_event_type_code
260063       ,p_line_definition_owner_code => l_line_definition_owner_code
260064       ,p_line_definition_code       => l_line_definition_code
260065       ,p_accounting_line_code       => l_component_code
260066       ,p_accounting_line_type_code  => l_component_type_code
260067       ,p_accounting_line_appl_id    => l_component_appl_id
260068       ,p_amb_context_code           => l_amb_context_code
260069       ,p_entity_code                => l_entity_code
260070       ,p_event_class_code           => l_event_class_code);
260071    --
260072    -- set accounting class
260073    --
260074    xla_ae_lines_pkg.SetAcctClass(
260075            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
260076          , p_ae_header_id           => l_ae_header_id
260077          );
260078 
260079    --
260080    -- set rounding class
260081    --
260082    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
260083                       'PROFIT_IN_INVENTORY';
260084 
260085    --
260086    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
260087    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
260088    --
260089    -- bulk performance
260090    --
260091    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
260092 
260093    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
260094       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
260095 
260096    -- 4955764
260097    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
260098       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
260099 
260100    -- 4458381 Public Sector Enh
260101    
260102    --
260103    -- set accounting attributes for the line type
260104    --
260105    l_entered_amt_idx := 3;
260106    l_accted_amt_idx  := 8;
260107    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
260108    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
260109    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
260110    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
260111    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
260112    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
260113    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
260114    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
260115    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
260116    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
260117    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
260118    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
260119    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
260120    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
260121    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
260122    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
260123    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
260124 
260125    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
260126    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
260127 
260128    ---------------------------------------------------------------------------------------------------------------
260129    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
260130    ---------------------------------------------------------------------------------------------------------------
260131    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
260132 
260133    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
260134    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
260135 
260136    IF xla_accounting_cache_pkg.GetValueChar
260137          (p_source_code         => 'LEDGER_CATEGORY_CODE'
260138          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
260139    AND l_bflow_method_code = 'PRIOR_ENTRY'
260140 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
260141    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
260142          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
260143        )
260144    THEN
260145          xla_ae_lines_pkg.BflowUpgEntry
260146            (p_business_method_code    => l_bflow_method_code
260147            ,p_business_class_code     => l_bflow_class_code
260148            ,p_balance_type            => l_balance_type_code);
260149    ELSE
260150       NULL;
260151 -- No business flow processing for business flow method of NONE.
260152    END IF;
260153 
260154    --
260155    -- call analytical criteria
260156    --
260157    
260158    --
260159    -- call description
260160    --
260161    
260162 xla_ae_lines_pkg.SetLineDescription(
260163    p_ae_header_id => l_ae_header_id
260164   ,p_description  => Description_1 (
260165      p_application_id         => p_application_id
260166    , p_ae_header_id           => l_ae_header_id 
260167 , p_source_1 => p_source_1
260168 , p_source_2 => p_source_2
260169 , p_source_3 => p_source_3
260170 , p_source_4 => p_source_4
260171 , p_source_5 => p_source_5
260172    )
260173 );
260174 
260175 
260176    --
260177    -- call ADRs
260178    -- Bug 4922099
260179    --
260180    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
260181         (NVL(l_actual_upg_option, 'N') = 'O') OR
260182         (NVL(l_enc_upg_option, 'N') = 'O')
260183       )
260184    THEN
260185    NULL;
260186    --
260187    --
260188    
260189   l_ccid := AcctDerRule_6(
260190            p_application_id           => p_application_id
260191          , p_ae_header_id             => l_ae_header_id 
260192 , p_source_11 => p_source_11
260193          , x_transaction_coa_id       => l_adr_transaction_coa_id
260194          , x_accounting_coa_id        => l_adr_accounting_coa_id
260195          , x_value_type_code          => l_adr_value_type_code
260196          , p_side                     => 'NA'
260197    );
260198 
260199    xla_ae_lines_pkg.set_ccid(
260200     p_code_combination_id          => l_ccid
260201   , p_value_type_code              => l_adr_value_type_code
260202   , p_transaction_coa_id           => l_adr_transaction_coa_id
260203   , p_accounting_coa_id            => l_adr_accounting_coa_id
260204   , p_adr_code                     => 'CST_DEFAULT'
260205   , p_adr_type_code                => 'S'
260206   , p_component_type               => l_component_type
260207   , p_component_code               => l_component_code
260208   , p_component_type_code          => l_component_type_code
260209   , p_component_appl_id            => l_component_appl_id
260210   , p_amb_context_code             => l_amb_context_code
260211   , p_side                         => 'NA'
260212   );
260213 
260214 
260215    --
260216    --
260217    END IF;
260218    --
260219    -- Bug 4922099
260220    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
260221           (NVL(l_enc_upg_option, 'N') = 'O')
260222         ) AND
260223         (l_bflow_method_code = 'PRIOR_ENTRY')
260224       )
260225    THEN
260226       IF
260227       --
260228       1 = 2
260229       --
260230       THEN
260231       xla_accounting_err_pkg.build_message
260232                                     (p_appli_s_name            => 'XLA'
260233                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
260234                                     ,p_token_1                 => 'LINE_NUMBER'
260235                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
260236                                     ,p_token_2                 => 'LINE_TYPE_NAME'
260237                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
260238                                                                              l_component_type
260239                                                                             ,l_component_code
260240                                                                             ,l_component_type_code
260241                                                                             ,l_component_appl_id
260242                                                                             ,l_amb_context_code
260243                                                                             ,l_entity_code
260244                                                                             ,l_event_class_code
260245                                                                            )
260246                                     ,p_token_3                 => 'OWNER'
260247                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
260248                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
260249                                                                           ,p_lookup_code    => l_component_type_code
260250                                                                          )
260251                                     ,p_token_4                 => 'PRODUCT_NAME'
260252                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
260253                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
260254                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
260255                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
260256                                     ,p_ae_header_id            =>  NULL
260257                                        );
260258 
260259         IF (C_LEVEL_ERROR>= g_log_level) THEN
260260                  trace
260261                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
260262                       ,p_level    => C_LEVEL_ERROR
260263                       ,p_module   => l_log_module);
260264         END IF;
260265       END IF;
260266    END IF;
260267    --
260268    --
260269    ------------------------------------------------------------------------------------------------
260270    -- 4219869 Business Flow
260271    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
260272    -- Prior Entry.  Currently, the following code is always generated.
260273    ------------------------------------------------------------------------------------------------
260274    XLA_AE_LINES_PKG.ValidateCurrentLine;
260275 
260276    ------------------------------------------------------------------------------------
260277    -- 4219869 Business Flow
260278    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
260279    ------------------------------------------------------------------------------------
260280    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
260281 
260282    ----------------------------------------------------------------------------------
260283    -- 4219869 Business Flow
260284    -- Update journal entry status -- Need to generate this within IF <condition>
260285    ----------------------------------------------------------------------------------
260286    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
260287          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
260288          ,p_balance_type_code => l_balance_type_code
260289          );
260290 
260291    -------------------------------------------------------------------------------------------
260292    -- 4262811 - Generate the Accrual Reversal lines
260293    -------------------------------------------------------------------------------------------
260294    BEGIN
260295       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
260296                               (g_array_event(p_event_id).array_value_num('header_index'));
260297       IF l_acc_rev_flag IS NULL THEN
260298          l_acc_rev_flag := 'N';
260299       END IF;
260300    EXCEPTION
260301       WHEN OTHERS THEN
260302          l_acc_rev_flag := 'N';
260303    END;
260304    --
260305    IF (l_acc_rev_flag = 'Y') THEN
260306 
260307        -- 4645092  ------------------------------------------------------------------------------
260308        -- To allow MPA report to determine if it should generate report process
260309        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
260310        ------------------------------------------------------------------------------------------
260311 
260312        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
260313        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
260314    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
260315    -- call ADRs
260316    -- Bug 4922099
260317    --
260318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
260319         (NVL(l_actual_upg_option, 'N') = 'O') OR
260320         (NVL(l_enc_upg_option, 'N') = 'O')
260321       )
260322    THEN
260323    NULL;
260324    --
260325    --
260326    
260327   l_ccid := AcctDerRule_6(
260328            p_application_id           => p_application_id
260329          , p_ae_header_id             => l_ae_header_id 
260330 , p_source_11 => p_source_11
260331          , x_transaction_coa_id       => l_adr_transaction_coa_id
260332          , x_accounting_coa_id        => l_adr_accounting_coa_id
260333          , x_value_type_code          => l_adr_value_type_code
260334          , p_side                     => 'NA'
260335    );
260336 
260337    xla_ae_lines_pkg.set_ccid(
260338     p_code_combination_id          => l_ccid
260339   , p_value_type_code              => l_adr_value_type_code
260340   , p_transaction_coa_id           => l_adr_transaction_coa_id
260341   , p_accounting_coa_id            => l_adr_accounting_coa_id
260342   , p_adr_code                     => 'CST_DEFAULT'
260343   , p_adr_type_code                => 'S'
260344   , p_component_type               => l_component_type
260345   , p_component_code               => l_component_code
260346   , p_component_type_code          => l_component_type_code
260347   , p_component_appl_id            => l_component_appl_id
260348   , p_amb_context_code             => l_amb_context_code
260349   , p_side                         => 'NA'
260350   );
260351 
260352 
260353    --
260354    --
260355    END IF;
260356 
260357        --
260358        -- Update the line information that should be overwritten
260359        --
260360        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
260361                                          p_header_num   => 1);
260362        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
260363 
260364        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
260365 
260366        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
260367           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
260368        END IF;
260369 
260370       --
260371       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
260372       --
260373       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
260374           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
260375       ELSE
260376           ---------------------------------------------------------------------------------------------------
260377           -- 4262811a Switch Sign
260378           ---------------------------------------------------------------------------------------------------
260379           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
260380           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
260381                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
260382           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
260383                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
260384           -- 5132302
260385           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
260386                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
260387 
260388       END IF;
260389 
260390       -- 4955764
260391       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
260392       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
260393 
260394 
260395       XLA_AE_LINES_PKG.ValidateCurrentLine;
260396       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
260397 
260398       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
260399                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
260400                ,p_balance_type_code => l_balance_type_code);
260401 
260402    END IF;
260403 
260404    -----------------------------------------------------------------------------------------
260405    -- 4262811 Multiperiod Accounting
260406    -----------------------------------------------------------------------------------------
260407      -- No MPA option is assigned.
260408 
260409 
260410 END IF;
260411 END IF;
260412 --
260413 
260414 --
260415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
260416    trace
260417       (p_msg      => 'END of AcctLineType_467'
260418       ,p_level    => C_LEVEL_PROCEDURE
260419       ,p_module   => l_log_module);
260420 END IF;
260421 --
260422 EXCEPTION
260423   WHEN xla_exceptions_pkg.application_exception THEN
260424       RAISE;
260425   WHEN OTHERS THEN
260426        xla_exceptions_pkg.raise_message
260427            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_467');
260428 END AcctLineType_467;
260429 --
260430 
260431 ---------------------------------------
260432 --
260433 -- PRIVATE FUNCTION
260434 --         AcctLineType_468
260435 --
260436 ---------------------------------------
260437 PROCEDURE AcctLineType_468 (
260438   p_application_id        IN NUMBER
260439  ,p_event_id              IN NUMBER
260440  ,p_calculate_acctd_flag  IN VARCHAR2
260441  ,p_calculate_g_l_flag    IN VARCHAR2
260442  ,p_actual_flag           IN OUT VARCHAR2
260443  ,p_balance_type_code     OUT VARCHAR2
260444  ,p_gain_or_loss_ref      OUT VARCHAR2
260445  
260446 --TRANSACTION_ID
260447  , p_source_1            IN NUMBER
260448 --Item Concatenated Segments
260449  , p_source_2            IN VARCHAR2
260450 --Transaction Quantity
260451  , p_source_3            IN NUMBER
260452 --Transaction Unit of Measure Code
260453  , p_source_4            IN VARCHAR2
260454 --Inventory Transaction Type Description
260455  , p_source_5            IN VARCHAR2
260456 --Profit in Inventory Account
260457  , p_source_37            IN NUMBER
260458 --DISTRIBUTION_IDENTIFIER
260459  , p_source_84            IN NUMBER
260460 --Distribution Type
260461  , p_source_85            IN VARCHAR2
260462  , p_source_85_meaning    IN VARCHAR2
260463 --Entered Currency Code
260464  , p_source_88            IN VARCHAR2
260465 --Entered Amount
260466  , p_source_91            IN NUMBER
260467 --Currency Conversion Date
260468  , p_source_92            IN DATE
260469 --Currency Conversion Rate
260470  , p_source_93            IN NUMBER
260471 --Currency Conversion Type
260472  , p_source_94            IN VARCHAR2
260473 --Accounted Amount
260474  , p_source_95            IN NUMBER
260475 --Accounting Line Type
260476  , p_source_97            IN NUMBER
260477 )
260478 IS
260479 
260480 l_component_type              VARCHAR2(80);
260481 l_component_code              VARCHAR2(30);
260482 l_component_type_code         VARCHAR2(1);
260483 l_component_appl_id           INTEGER;
260484 l_amb_context_code            VARCHAR2(30);
260485 l_entity_code                 VARCHAR2(30);
260486 l_event_class_code            VARCHAR2(30);
260487 l_ae_header_id                NUMBER;
260488 l_event_type_code             VARCHAR2(30);
260489 l_line_definition_code        VARCHAR2(30);
260490 l_line_definition_owner_code  VARCHAR2(1);
260491 --
260492 -- adr variables
260493 l_segment                     VARCHAR2(30);
260494 l_ccid                        NUMBER;
260495 l_adr_transaction_coa_id      NUMBER;
260496 l_adr_accounting_coa_id       NUMBER;
260497 l_adr_flexfield_segment_code  VARCHAR2(30);
260498 l_adr_flex_value_set_id       NUMBER;
260499 l_adr_value_type_code         VARCHAR2(30);
260500 l_adr_value_combination_id    NUMBER;
260501 l_adr_value_segment_code      VARCHAR2(30);
260502 
260503 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
260504 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
260505 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
260506 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
260507 
260508 -- 4262811 Variables ------------------------------------------------------------------------------------------
260509 l_entered_amt_idx             NUMBER;
260510 l_accted_amt_idx              NUMBER;
260511 l_acc_rev_flag                VARCHAR2(1);
260512 l_accrual_line_num            NUMBER;
260513 l_tmp_amt                     NUMBER;
260514 l_acc_rev_natural_side_code   VARCHAR2(1);
260515 
260516 l_num_entries                 NUMBER;
260517 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
260518 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
260519 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
260520 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
260521 l_recog_line_1                NUMBER;
260522 l_recog_line_2                NUMBER;
260523 
260524 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
260525 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
260526 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
260527 
260528 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
260529 
260530 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
260531 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
260532 
260533 ---------------------------------------------------------------------------------------------------------------
260534 
260535 
260536 --
260537 -- bulk performance
260538 --
260539 l_balance_type_code           VARCHAR2(1);
260540 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
260541 l_log_module                  VARCHAR2(240);
260542 
260543 --
260544 -- Upgrade strategy
260545 --
260546 l_actual_upg_option           VARCHAR2(1);
260547 l_enc_upg_option           VARCHAR2(1);
260548 
260549 --
260550 BEGIN
260551 --
260552 IF g_log_enabled THEN
260553       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_468';
260554 END IF;
260555 --
260556 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
260557 
260558       trace
260559          (p_msg      => 'BEGIN of AcctLineType_468'
260560          ,p_level    => C_LEVEL_PROCEDURE
260561          ,p_module   => l_log_module);
260562 
260563 END IF;
260564 --
260565 l_component_type             := 'AMB_JLT';
260566 l_component_code             := 'PROFIT_IN_INVENTORY';
260567 l_component_type_code        := 'S';
260568 l_component_appl_id          :=  707;
260569 l_amb_context_code           := 'DEFAULT';
260570 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
260571 l_event_class_code           := 'USER_DEFINE';
260572 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
260573 l_line_definition_owner_code := 'S';
260574 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
260575 --
260576 l_balance_type_code          := 'A';
260577 l_segment                     := NULL;
260578 l_ccid                        := NULL;
260579 l_adr_transaction_coa_id      := NULL;
260580 l_adr_accounting_coa_id       := NULL;
260581 l_adr_flexfield_segment_code  := NULL;
260582 l_adr_flex_value_set_id       := NULL;
260583 l_adr_value_type_code         := NULL;
260584 l_adr_value_combination_id    := NULL;
260585 l_adr_value_segment_code      := NULL;
260586 
260587 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
260588 l_bflow_class_code           := '';    -- 4219869 Business Flow
260589 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
260590 l_budgetary_control_flag     := 'N';
260591 
260592 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
260593 l_bflow_applied_to_amt       := NULL; -- 5132302
260594 l_entered_amt_idx            := NULL;          -- 4262811
260595 l_accted_amt_idx             := NULL;          -- 4262811
260596 l_acc_rev_flag               := NULL;          -- 4262811
260597 l_accrual_line_num           := NULL;          -- 4262811
260598 l_tmp_amt                    := NULL;          -- 4262811
260599 --
260600  
260601 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
260602     l_balance_type_code <> 'B' THEN
260603 IF NVL(p_source_97,9E125) =  30
260604  THEN 
260605 
260606    --
260607    XLA_AE_LINES_PKG.SetNewLine;
260608 
260609    p_balance_type_code          := l_balance_type_code;
260610    -- set the flag so later we will know whether the gain loss line needs to be created
260611    
260612    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
260613      p_actual_flag :='A';
260614    END IF;
260615 
260616    --
260617    -- bulk performance
260618    --
260619    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
260620                                       p_header_num   => 0); -- 4262811
260621    --
260622    -- set accounting line options
260623    --
260624    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
260625            p_natural_side_code          => 'D'
260626          , p_gain_or_loss_flag          => 'N'
260627          , p_gl_transfer_mode_code      => 'S'
260628          , p_acct_entry_type_code       => 'A'
260629          , p_switch_side_flag           => 'Y'
260630          , p_merge_duplicate_code       => 'N'
260631          );
260632    --
260633    l_acc_rev_natural_side_code := 'C';  -- 4262811
260634    -- 
260635    --
260636    -- set accounting line type info
260637    --
260638    xla_ae_lines_pkg.SetAcctLineType
260639       (p_component_type             => l_component_type
260640       ,p_event_type_code            => l_event_type_code
260641       ,p_line_definition_owner_code => l_line_definition_owner_code
260642       ,p_line_definition_code       => l_line_definition_code
260643       ,p_accounting_line_code       => l_component_code
260644       ,p_accounting_line_type_code  => l_component_type_code
260645       ,p_accounting_line_appl_id    => l_component_appl_id
260646       ,p_amb_context_code           => l_amb_context_code
260647       ,p_entity_code                => l_entity_code
260648       ,p_event_class_code           => l_event_class_code);
260649    --
260650    -- set accounting class
260651    --
260652    xla_ae_lines_pkg.SetAcctClass(
260653            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
260654          , p_ae_header_id           => l_ae_header_id
260655          );
260656 
260657    --
260658    -- set rounding class
260659    --
260660    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
260661                       'PROFIT_IN_INVENTORY';
260662 
260663    --
260664    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
260665    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
260666    --
260667    -- bulk performance
260668    --
260669    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
260670 
260671    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
260672       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
260673 
260674    -- 4955764
260675    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
260676       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
260677 
260678    -- 4458381 Public Sector Enh
260679    
260680    --
260681    -- set accounting attributes for the line type
260682    --
260683    l_entered_amt_idx := 3;
260684    l_accted_amt_idx  := 8;
260685    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
260686    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
260687    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
260688    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
260689    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
260690    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
260691    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
260692    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
260693    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
260694    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
260695    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
260696    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
260697    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
260698    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
260699    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
260700    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
260701    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
260702 
260703    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
260704    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
260705 
260706    ---------------------------------------------------------------------------------------------------------------
260707    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
260708    ---------------------------------------------------------------------------------------------------------------
260709    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
260710 
260711    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
260712    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
260713 
260714    IF xla_accounting_cache_pkg.GetValueChar
260715          (p_source_code         => 'LEDGER_CATEGORY_CODE'
260716          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
260717    AND l_bflow_method_code = 'PRIOR_ENTRY'
260718 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
260719    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
260720          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
260721        )
260722    THEN
260723          xla_ae_lines_pkg.BflowUpgEntry
260724            (p_business_method_code    => l_bflow_method_code
260725            ,p_business_class_code     => l_bflow_class_code
260726            ,p_balance_type            => l_balance_type_code);
260727    ELSE
260728       NULL;
260729 -- No business flow processing for business flow method of NONE.
260730    END IF;
260731 
260732    --
260733    -- call analytical criteria
260734    --
260735    
260736    --
260737    -- call description
260738    --
260739    
260740 xla_ae_lines_pkg.SetLineDescription(
260741    p_ae_header_id => l_ae_header_id
260742   ,p_description  => Description_1 (
260743      p_application_id         => p_application_id
260744    , p_ae_header_id           => l_ae_header_id 
260745 , p_source_1 => p_source_1
260746 , p_source_2 => p_source_2
260747 , p_source_3 => p_source_3
260748 , p_source_4 => p_source_4
260749 , p_source_5 => p_source_5
260750    )
260751 );
260752 
260753 
260754    --
260755    -- call ADRs
260756    -- Bug 4922099
260757    --
260758    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
260759         (NVL(l_actual_upg_option, 'N') = 'O') OR
260760         (NVL(l_enc_upg_option, 'N') = 'O')
260761       )
260762    THEN
260763    NULL;
260764    --
260765    --
260766    
260767   l_ccid := AcctDerRule_22(
260768            p_application_id           => p_application_id
260769          , p_ae_header_id             => l_ae_header_id 
260770 , p_source_37 => p_source_37
260771          , x_transaction_coa_id       => l_adr_transaction_coa_id
260772          , x_accounting_coa_id        => l_adr_accounting_coa_id
260773          , x_value_type_code          => l_adr_value_type_code
260774          , p_side                     => 'NA'
260775    );
260776 
260777    xla_ae_lines_pkg.set_ccid(
260778     p_code_combination_id          => l_ccid
260779   , p_value_type_code              => l_adr_value_type_code
260780   , p_transaction_coa_id           => l_adr_transaction_coa_id
260781   , p_accounting_coa_id            => l_adr_accounting_coa_id
260782   , p_adr_code                     => 'PI_INTERORG_PROFIT'
260783   , p_adr_type_code                => 'S'
260784   , p_component_type               => l_component_type
260785   , p_component_code               => l_component_code
260786   , p_component_type_code          => l_component_type_code
260787   , p_component_appl_id            => l_component_appl_id
260788   , p_amb_context_code             => l_amb_context_code
260789   , p_side                         => 'NA'
260790   );
260791 
260792 
260793    --
260794    --
260795    END IF;
260796    --
260797    -- Bug 4922099
260798    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
260799           (NVL(l_enc_upg_option, 'N') = 'O')
260800         ) AND
260801         (l_bflow_method_code = 'PRIOR_ENTRY')
260802       )
260803    THEN
260804       IF
260805       --
260806       1 = 2
260807       --
260808       THEN
260809       xla_accounting_err_pkg.build_message
260810                                     (p_appli_s_name            => 'XLA'
260811                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
260812                                     ,p_token_1                 => 'LINE_NUMBER'
260813                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
260814                                     ,p_token_2                 => 'LINE_TYPE_NAME'
260815                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
260816                                                                              l_component_type
260817                                                                             ,l_component_code
260818                                                                             ,l_component_type_code
260819                                                                             ,l_component_appl_id
260820                                                                             ,l_amb_context_code
260821                                                                             ,l_entity_code
260822                                                                             ,l_event_class_code
260823                                                                            )
260824                                     ,p_token_3                 => 'OWNER'
260825                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
260826                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
260827                                                                           ,p_lookup_code    => l_component_type_code
260828                                                                          )
260829                                     ,p_token_4                 => 'PRODUCT_NAME'
260830                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
260831                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
260832                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
260833                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
260834                                     ,p_ae_header_id            =>  NULL
260835                                        );
260836 
260837         IF (C_LEVEL_ERROR>= g_log_level) THEN
260838                  trace
260839                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
260840                       ,p_level    => C_LEVEL_ERROR
260841                       ,p_module   => l_log_module);
260842         END IF;
260843       END IF;
260844    END IF;
260845    --
260846    --
260847    ------------------------------------------------------------------------------------------------
260848    -- 4219869 Business Flow
260849    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
260850    -- Prior Entry.  Currently, the following code is always generated.
260851    ------------------------------------------------------------------------------------------------
260852    XLA_AE_LINES_PKG.ValidateCurrentLine;
260853 
260854    ------------------------------------------------------------------------------------
260855    -- 4219869 Business Flow
260856    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
260857    ------------------------------------------------------------------------------------
260858    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
260859 
260860    ----------------------------------------------------------------------------------
260861    -- 4219869 Business Flow
260862    -- Update journal entry status -- Need to generate this within IF <condition>
260863    ----------------------------------------------------------------------------------
260864    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
260865          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
260866          ,p_balance_type_code => l_balance_type_code
260867          );
260868 
260869    -------------------------------------------------------------------------------------------
260870    -- 4262811 - Generate the Accrual Reversal lines
260871    -------------------------------------------------------------------------------------------
260872    BEGIN
260873       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
260874                               (g_array_event(p_event_id).array_value_num('header_index'));
260875       IF l_acc_rev_flag IS NULL THEN
260876          l_acc_rev_flag := 'N';
260877       END IF;
260878    EXCEPTION
260879       WHEN OTHERS THEN
260880          l_acc_rev_flag := 'N';
260881    END;
260882    --
260883    IF (l_acc_rev_flag = 'Y') THEN
260884 
260885        -- 4645092  ------------------------------------------------------------------------------
260886        -- To allow MPA report to determine if it should generate report process
260887        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
260888        ------------------------------------------------------------------------------------------
260889 
260890        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
260891        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
260892    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
260893    -- call ADRs
260894    -- Bug 4922099
260895    --
260896    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
260897         (NVL(l_actual_upg_option, 'N') = 'O') OR
260898         (NVL(l_enc_upg_option, 'N') = 'O')
260899       )
260900    THEN
260901    NULL;
260902    --
260903    --
260904    
260905   l_ccid := AcctDerRule_22(
260906            p_application_id           => p_application_id
260907          , p_ae_header_id             => l_ae_header_id 
260908 , p_source_37 => p_source_37
260909          , x_transaction_coa_id       => l_adr_transaction_coa_id
260910          , x_accounting_coa_id        => l_adr_accounting_coa_id
260911          , x_value_type_code          => l_adr_value_type_code
260912          , p_side                     => 'NA'
260913    );
260914 
260915    xla_ae_lines_pkg.set_ccid(
260916     p_code_combination_id          => l_ccid
260917   , p_value_type_code              => l_adr_value_type_code
260918   , p_transaction_coa_id           => l_adr_transaction_coa_id
260919   , p_accounting_coa_id            => l_adr_accounting_coa_id
260920   , p_adr_code                     => 'PI_INTERORG_PROFIT'
260921   , p_adr_type_code                => 'S'
260922   , p_component_type               => l_component_type
260923   , p_component_code               => l_component_code
260924   , p_component_type_code          => l_component_type_code
260925   , p_component_appl_id            => l_component_appl_id
260926   , p_amb_context_code             => l_amb_context_code
260927   , p_side                         => 'NA'
260928   );
260929 
260930 
260931    --
260932    --
260933    END IF;
260934 
260935        --
260936        -- Update the line information that should be overwritten
260937        --
260938        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
260939                                          p_header_num   => 1);
260940        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
260941 
260942        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
260943 
260944        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
260945           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
260946        END IF;
260947 
260948       --
260949       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
260950       --
260951       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
260952           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
260953       ELSE
260954           ---------------------------------------------------------------------------------------------------
260955           -- 4262811a Switch Sign
260956           ---------------------------------------------------------------------------------------------------
260957           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
260958           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
260959                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
260960           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
260961                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
260962           -- 5132302
260963           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
260964                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
260965 
260966       END IF;
260967 
260968       -- 4955764
260969       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
260970       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
260971 
260972 
260973       XLA_AE_LINES_PKG.ValidateCurrentLine;
260974       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
260975 
260976       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
260977                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
260978                ,p_balance_type_code => l_balance_type_code);
260979 
260980    END IF;
260981 
260982    -----------------------------------------------------------------------------------------
260983    -- 4262811 Multiperiod Accounting
260984    -----------------------------------------------------------------------------------------
260985      -- No MPA option is assigned.
260986 
260987 
260988 END IF;
260989 END IF;
260990 --
260991 
260992 --
260993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
260994    trace
260995       (p_msg      => 'END of AcctLineType_468'
260996       ,p_level    => C_LEVEL_PROCEDURE
260997       ,p_module   => l_log_module);
260998 END IF;
260999 --
261000 EXCEPTION
261001   WHEN xla_exceptions_pkg.application_exception THEN
261002       RAISE;
261003   WHEN OTHERS THEN
261004        xla_exceptions_pkg.raise_message
261005            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_468');
261006 END AcctLineType_468;
261007 --
261008 
261009 ---------------------------------------
261010 --
261011 -- PRIVATE FUNCTION
261012 --         AcctLineType_469
261013 --
261014 ---------------------------------------
261015 PROCEDURE AcctLineType_469 (
261016   p_application_id        IN NUMBER
261017  ,p_event_id              IN NUMBER
261018  ,p_calculate_acctd_flag  IN VARCHAR2
261019  ,p_calculate_g_l_flag    IN VARCHAR2
261020  ,p_actual_flag           IN OUT VARCHAR2
261021  ,p_balance_type_code     OUT VARCHAR2
261022  ,p_gain_or_loss_ref      OUT VARCHAR2
261023  
261024 --TRANSACTION_ID
261025  , p_source_1            IN NUMBER
261026 --Item Concatenated Segments
261027  , p_source_2            IN VARCHAR2
261028 --Transaction Quantity
261029  , p_source_3            IN NUMBER
261030 --Transaction Unit of Measure Code
261031  , p_source_4            IN VARCHAR2
261032 --Inventory Transaction Type Description
261033  , p_source_5            IN VARCHAR2
261034 --Profit in Inventory Account
261035  , p_source_37            IN NUMBER
261036 --Applied to Application ID
261037  , p_source_79            IN NUMBER
261038 --Applied to Distribution Link Type
261039  , p_source_80            IN VARCHAR2
261040 --Applied to Entity Code
261041  , p_source_81            IN VARCHAR2
261042 --DISTRIBUTION_IDENTIFIER
261043  , p_source_84            IN NUMBER
261044 --Distribution Type
261045  , p_source_85            IN VARCHAR2
261046  , p_source_85_meaning    IN VARCHAR2
261047 --Encumbrance Reversal Amount Entered
261048  , p_source_87            IN NUMBER
261049 --Entered Currency Code
261050  , p_source_88            IN VARCHAR2
261051 --Transaction Encumbrance Reversal Amount
261052  , p_source_89            IN NUMBER
261053 --Entered Amount
261054  , p_source_91            IN NUMBER
261055 --Currency Conversion Date
261056  , p_source_92            IN DATE
261057 --Currency Conversion Rate
261058  , p_source_93            IN NUMBER
261059 --Currency Conversion Type
261060  , p_source_94            IN VARCHAR2
261061 --Accounted Amount
261062  , p_source_95            IN NUMBER
261063 --Accounting Line Type
261064  , p_source_97            IN NUMBER
261065 --Costing Encumbrance Upgrade Option
261066  , p_source_100            IN VARCHAR2
261067 --TXN_PO_DISTRIBUTION_ID
261068  , p_source_101            IN NUMBER
261069 --TXN_PO_HEADER_ID
261070  , p_source_102            IN NUMBER
261071 --Requisition Budget Account
261072  , p_source_103            IN NUMBER
261073 --Requisition Encumbrance Type Identifier
261074  , p_source_104            IN NUMBER
261075 )
261076 IS
261077 
261078 l_component_type              VARCHAR2(80);
261079 l_component_code              VARCHAR2(30);
261080 l_component_type_code         VARCHAR2(1);
261081 l_component_appl_id           INTEGER;
261082 l_amb_context_code            VARCHAR2(30);
261083 l_entity_code                 VARCHAR2(30);
261084 l_event_class_code            VARCHAR2(30);
261085 l_ae_header_id                NUMBER;
261086 l_event_type_code             VARCHAR2(30);
261087 l_line_definition_code        VARCHAR2(30);
261088 l_line_definition_owner_code  VARCHAR2(1);
261089 --
261090 -- adr variables
261091 l_segment                     VARCHAR2(30);
261092 l_ccid                        NUMBER;
261093 l_adr_transaction_coa_id      NUMBER;
261094 l_adr_accounting_coa_id       NUMBER;
261095 l_adr_flexfield_segment_code  VARCHAR2(30);
261096 l_adr_flex_value_set_id       NUMBER;
261097 l_adr_value_type_code         VARCHAR2(30);
261098 l_adr_value_combination_id    NUMBER;
261099 l_adr_value_segment_code      VARCHAR2(30);
261100 
261101 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
261102 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
261103 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
261104 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
261105 
261106 -- 4262811 Variables ------------------------------------------------------------------------------------------
261107 l_entered_amt_idx             NUMBER;
261108 l_accted_amt_idx              NUMBER;
261109 l_acc_rev_flag                VARCHAR2(1);
261110 l_accrual_line_num            NUMBER;
261111 l_tmp_amt                     NUMBER;
261112 l_acc_rev_natural_side_code   VARCHAR2(1);
261113 
261114 l_num_entries                 NUMBER;
261115 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
261116 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
261117 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
261118 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
261119 l_recog_line_1                NUMBER;
261120 l_recog_line_2                NUMBER;
261121 
261122 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
261123 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
261124 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
261125 
261126 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
261127 
261128 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
261129 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
261130 
261131 ---------------------------------------------------------------------------------------------------------------
261132 
261133 
261134 --
261135 -- bulk performance
261136 --
261137 l_balance_type_code           VARCHAR2(1);
261138 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
261139 l_log_module                  VARCHAR2(240);
261140 
261141 --
261142 -- Upgrade strategy
261143 --
261144 l_actual_upg_option           VARCHAR2(1);
261145 l_enc_upg_option           VARCHAR2(1);
261146 
261147 --
261148 BEGIN
261149 --
261150 IF g_log_enabled THEN
261151       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_469';
261152 END IF;
261153 --
261154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261155 
261156       trace
261157          (p_msg      => 'BEGIN of AcctLineType_469'
261158          ,p_level    => C_LEVEL_PROCEDURE
261159          ,p_module   => l_log_module);
261160 
261161 END IF;
261162 --
261163 l_component_type             := 'AMB_JLT';
261164 l_component_code             := 'PROFIT_IN_INVENTORY';
261165 l_component_type_code        := 'S';
261166 l_component_appl_id          :=  707;
261167 l_amb_context_code           := 'DEFAULT';
261168 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
261169 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
261170 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
261171 l_line_definition_owner_code := 'S';
261172 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
261173 --
261174 l_balance_type_code          := 'A';
261175 l_segment                     := NULL;
261176 l_ccid                        := NULL;
261177 l_adr_transaction_coa_id      := NULL;
261178 l_adr_accounting_coa_id       := NULL;
261179 l_adr_flexfield_segment_code  := NULL;
261180 l_adr_flex_value_set_id       := NULL;
261181 l_adr_value_type_code         := NULL;
261182 l_adr_value_combination_id    := NULL;
261183 l_adr_value_segment_code      := NULL;
261184 
261185 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
261186 l_bflow_class_code           := '';    -- 4219869 Business Flow
261187 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
261188 l_budgetary_control_flag     := 'N';
261189 
261190 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
261191 l_bflow_applied_to_amt       := NULL; -- 5132302
261192 l_entered_amt_idx            := NULL;          -- 4262811
261193 l_accted_amt_idx             := NULL;          -- 4262811
261194 l_acc_rev_flag               := NULL;          -- 4262811
261195 l_accrual_line_num           := NULL;          -- 4262811
261196 l_tmp_amt                    := NULL;          -- 4262811
261197 --
261198  
261199 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
261200     l_balance_type_code <> 'B' THEN
261201 IF NVL(p_source_97,9E125) =  30
261202  THEN 
261203 
261204    --
261205    XLA_AE_LINES_PKG.SetNewLine;
261206 
261207    p_balance_type_code          := l_balance_type_code;
261208    -- set the flag so later we will know whether the gain loss line needs to be created
261209    
261210    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
261211      p_actual_flag :='A';
261212    END IF;
261213 
261214    --
261215    -- bulk performance
261216    --
261217    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
261218                                       p_header_num   => 0); -- 4262811
261219    --
261220    -- set accounting line options
261221    --
261222    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
261223            p_natural_side_code          => 'D'
261224          , p_gain_or_loss_flag          => 'N'
261225          , p_gl_transfer_mode_code      => 'S'
261226          , p_acct_entry_type_code       => 'A'
261227          , p_switch_side_flag           => 'Y'
261228          , p_merge_duplicate_code       => 'N'
261229          );
261230    --
261231    l_acc_rev_natural_side_code := 'C';  -- 4262811
261232    -- 
261233    --
261234    -- set accounting line type info
261235    --
261236    xla_ae_lines_pkg.SetAcctLineType
261237       (p_component_type             => l_component_type
261238       ,p_event_type_code            => l_event_type_code
261239       ,p_line_definition_owner_code => l_line_definition_owner_code
261240       ,p_line_definition_code       => l_line_definition_code
261241       ,p_accounting_line_code       => l_component_code
261242       ,p_accounting_line_type_code  => l_component_type_code
261243       ,p_accounting_line_appl_id    => l_component_appl_id
261244       ,p_amb_context_code           => l_amb_context_code
261245       ,p_entity_code                => l_entity_code
261246       ,p_event_class_code           => l_event_class_code);
261247    --
261248    -- set accounting class
261249    --
261250    xla_ae_lines_pkg.SetAcctClass(
261251            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
261252          , p_ae_header_id           => l_ae_header_id
261253          );
261254 
261255    --
261256    -- set rounding class
261257    --
261258    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
261259                       'PROFIT_IN_INVENTORY';
261260 
261261    --
261262    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
261263    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
261264    --
261265    -- bulk performance
261266    --
261267    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
261268 
261269    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
261270       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
261271 
261272    -- 4955764
261273    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
261274       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
261275 
261276    -- 4458381 Public Sector Enh
261277    
261278    --
261279    -- set accounting attributes for the line type
261280    --
261281    l_entered_amt_idx := 17;
261282    l_accted_amt_idx  := 22;
261283    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
261284    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
261285    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
261286    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
261287    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
261288    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
261289    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
261290    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
261291    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
261292    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
261293    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
261294    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
261295    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
261296    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
261297    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
261298    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
261299    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
261300    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
261301    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
261302    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
261303    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
261304    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
261305    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
261306    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
261307    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
261308    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
261309    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
261310    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
261311    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
261312    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
261313    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
261314    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
261315    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
261316    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
261317    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
261318    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
261319    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
261320    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
261321    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
261322    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
261323    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
261324    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
261325    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
261326    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
261327    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
261328    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
261329    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
261330    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
261331    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
261332 
261333    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
261334    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
261335 
261336    ---------------------------------------------------------------------------------------------------------------
261337    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
261338    ---------------------------------------------------------------------------------------------------------------
261339    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
261340 
261341    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
261342    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
261343 
261344    IF xla_accounting_cache_pkg.GetValueChar
261345          (p_source_code         => 'LEDGER_CATEGORY_CODE'
261346          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
261347    AND l_bflow_method_code = 'PRIOR_ENTRY'
261348 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
261349    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
261350          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
261351        )
261352    THEN
261353          xla_ae_lines_pkg.BflowUpgEntry
261354            (p_business_method_code    => l_bflow_method_code
261355            ,p_business_class_code     => l_bflow_class_code
261356            ,p_balance_type            => l_balance_type_code);
261357    ELSE
261358       NULL;
261359 -- No business flow processing for business flow method of NONE.
261360    END IF;
261361 
261362    --
261363    -- call analytical criteria
261364    --
261365    
261366    --
261367    -- call description
261368    --
261369    
261370 xla_ae_lines_pkg.SetLineDescription(
261371    p_ae_header_id => l_ae_header_id
261372   ,p_description  => Description_1 (
261373      p_application_id         => p_application_id
261374    , p_ae_header_id           => l_ae_header_id 
261375 , p_source_1 => p_source_1
261376 , p_source_2 => p_source_2
261377 , p_source_3 => p_source_3
261378 , p_source_4 => p_source_4
261379 , p_source_5 => p_source_5
261380    )
261381 );
261382 
261383 
261384    --
261385    -- call ADRs
261386    -- Bug 4922099
261387    --
261388    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
261389         (NVL(l_actual_upg_option, 'N') = 'O') OR
261390         (NVL(l_enc_upg_option, 'N') = 'O')
261391       )
261392    THEN
261393    NULL;
261394    --
261395    --
261396    
261397   l_ccid := AcctDerRule_22(
261398            p_application_id           => p_application_id
261399          , p_ae_header_id             => l_ae_header_id 
261400 , p_source_37 => p_source_37
261401          , x_transaction_coa_id       => l_adr_transaction_coa_id
261402          , x_accounting_coa_id        => l_adr_accounting_coa_id
261403          , x_value_type_code          => l_adr_value_type_code
261404          , p_side                     => 'NA'
261405    );
261406 
261407    xla_ae_lines_pkg.set_ccid(
261408     p_code_combination_id          => l_ccid
261409   , p_value_type_code              => l_adr_value_type_code
261410   , p_transaction_coa_id           => l_adr_transaction_coa_id
261411   , p_accounting_coa_id            => l_adr_accounting_coa_id
261412   , p_adr_code                     => 'PI_INTERORG_PROFIT'
261413   , p_adr_type_code                => 'S'
261414   , p_component_type               => l_component_type
261415   , p_component_code               => l_component_code
261416   , p_component_type_code          => l_component_type_code
261417   , p_component_appl_id            => l_component_appl_id
261418   , p_amb_context_code             => l_amb_context_code
261419   , p_side                         => 'NA'
261420   );
261421 
261422 
261423    --
261424    --
261425    END IF;
261426    --
261427    -- Bug 4922099
261428    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
261429           (NVL(l_enc_upg_option, 'N') = 'O')
261430         ) AND
261431         (l_bflow_method_code = 'PRIOR_ENTRY')
261432       )
261433    THEN
261434       IF
261435       --
261436       1 = 2
261437       --
261438       THEN
261439       xla_accounting_err_pkg.build_message
261440                                     (p_appli_s_name            => 'XLA'
261441                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
261442                                     ,p_token_1                 => 'LINE_NUMBER'
261443                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
261444                                     ,p_token_2                 => 'LINE_TYPE_NAME'
261445                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
261446                                                                              l_component_type
261447                                                                             ,l_component_code
261448                                                                             ,l_component_type_code
261449                                                                             ,l_component_appl_id
261450                                                                             ,l_amb_context_code
261451                                                                             ,l_entity_code
261452                                                                             ,l_event_class_code
261453                                                                            )
261454                                     ,p_token_3                 => 'OWNER'
261455                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
261456                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
261457                                                                           ,p_lookup_code    => l_component_type_code
261458                                                                          )
261459                                     ,p_token_4                 => 'PRODUCT_NAME'
261460                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
261461                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
261462                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
261463                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
261464                                     ,p_ae_header_id            =>  NULL
261465                                        );
261466 
261467         IF (C_LEVEL_ERROR>= g_log_level) THEN
261468                  trace
261469                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
261470                       ,p_level    => C_LEVEL_ERROR
261471                       ,p_module   => l_log_module);
261472         END IF;
261473       END IF;
261474    END IF;
261475    --
261476    --
261477    ------------------------------------------------------------------------------------------------
261478    -- 4219869 Business Flow
261479    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
261480    -- Prior Entry.  Currently, the following code is always generated.
261481    ------------------------------------------------------------------------------------------------
261482    XLA_AE_LINES_PKG.ValidateCurrentLine;
261483 
261484    ------------------------------------------------------------------------------------
261485    -- 4219869 Business Flow
261486    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
261487    ------------------------------------------------------------------------------------
261488    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
261489 
261490    ----------------------------------------------------------------------------------
261491    -- 4219869 Business Flow
261492    -- Update journal entry status -- Need to generate this within IF <condition>
261493    ----------------------------------------------------------------------------------
261494    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
261495          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
261496          ,p_balance_type_code => l_balance_type_code
261497          );
261498 
261499    -------------------------------------------------------------------------------------------
261500    -- 4262811 - Generate the Accrual Reversal lines
261501    -------------------------------------------------------------------------------------------
261502    BEGIN
261503       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
261504                               (g_array_event(p_event_id).array_value_num('header_index'));
261505       IF l_acc_rev_flag IS NULL THEN
261506          l_acc_rev_flag := 'N';
261507       END IF;
261508    EXCEPTION
261509       WHEN OTHERS THEN
261510          l_acc_rev_flag := 'N';
261511    END;
261512    --
261513    IF (l_acc_rev_flag = 'Y') THEN
261514 
261515        -- 4645092  ------------------------------------------------------------------------------
261516        -- To allow MPA report to determine if it should generate report process
261517        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
261518        ------------------------------------------------------------------------------------------
261519 
261520        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
261521        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
261522    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
261523    -- call ADRs
261524    -- Bug 4922099
261525    --
261526    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
261527         (NVL(l_actual_upg_option, 'N') = 'O') OR
261528         (NVL(l_enc_upg_option, 'N') = 'O')
261529       )
261530    THEN
261531    NULL;
261532    --
261533    --
261534    
261535   l_ccid := AcctDerRule_22(
261536            p_application_id           => p_application_id
261537          , p_ae_header_id             => l_ae_header_id 
261538 , p_source_37 => p_source_37
261539          , x_transaction_coa_id       => l_adr_transaction_coa_id
261540          , x_accounting_coa_id        => l_adr_accounting_coa_id
261541          , x_value_type_code          => l_adr_value_type_code
261542          , p_side                     => 'NA'
261543    );
261544 
261545    xla_ae_lines_pkg.set_ccid(
261546     p_code_combination_id          => l_ccid
261547   , p_value_type_code              => l_adr_value_type_code
261548   , p_transaction_coa_id           => l_adr_transaction_coa_id
261549   , p_accounting_coa_id            => l_adr_accounting_coa_id
261550   , p_adr_code                     => 'PI_INTERORG_PROFIT'
261551   , p_adr_type_code                => 'S'
261552   , p_component_type               => l_component_type
261553   , p_component_code               => l_component_code
261554   , p_component_type_code          => l_component_type_code
261555   , p_component_appl_id            => l_component_appl_id
261556   , p_amb_context_code             => l_amb_context_code
261557   , p_side                         => 'NA'
261558   );
261559 
261560 
261561    --
261562    --
261563    END IF;
261564 
261565        --
261566        -- Update the line information that should be overwritten
261567        --
261568        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
261569                                          p_header_num   => 1);
261570        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
261571 
261572        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
261573 
261574        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
261575           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
261576        END IF;
261577 
261578       --
261579       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
261580       --
261581       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
261582           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
261583       ELSE
261584           ---------------------------------------------------------------------------------------------------
261585           -- 4262811a Switch Sign
261586           ---------------------------------------------------------------------------------------------------
261587           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
261588           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
261589                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
261590           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
261591                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
261592           -- 5132302
261593           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
261594                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
261595 
261596       END IF;
261597 
261598       -- 4955764
261599       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
261600       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
261601 
261602 
261603       XLA_AE_LINES_PKG.ValidateCurrentLine;
261604       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
261605 
261606       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
261607                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
261608                ,p_balance_type_code => l_balance_type_code);
261609 
261610    END IF;
261611 
261612    -----------------------------------------------------------------------------------------
261613    -- 4262811 Multiperiod Accounting
261614    -----------------------------------------------------------------------------------------
261615      -- No MPA option is assigned.
261616 
261617 
261618 END IF;
261619 END IF;
261620 --
261621 
261622 --
261623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261624    trace
261625       (p_msg      => 'END of AcctLineType_469'
261626       ,p_level    => C_LEVEL_PROCEDURE
261627       ,p_module   => l_log_module);
261628 END IF;
261629 --
261630 EXCEPTION
261631   WHEN xla_exceptions_pkg.application_exception THEN
261632       RAISE;
261633   WHEN OTHERS THEN
261634        xla_exceptions_pkg.raise_message
261635            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_469');
261636 END AcctLineType_469;
261637 --
261638 
261639 ---------------------------------------
261640 --
261641 -- PRIVATE FUNCTION
261642 --         AcctLineType_470
261643 --
261644 ---------------------------------------
261645 PROCEDURE AcctLineType_470 (
261646   p_application_id        IN NUMBER
261647  ,p_event_id              IN NUMBER
261648  ,p_calculate_acctd_flag  IN VARCHAR2
261649  ,p_calculate_g_l_flag    IN VARCHAR2
261650  ,p_actual_flag           IN OUT VARCHAR2
261651  ,p_balance_type_code     OUT VARCHAR2
261652  ,p_gain_or_loss_ref      OUT VARCHAR2
261653  
261654 --TRANSACTION_ID
261655  , p_source_1            IN NUMBER
261656 --Item Concatenated Segments
261657  , p_source_2            IN VARCHAR2
261658 --Transaction Quantity
261659  , p_source_3            IN NUMBER
261660 --Transaction Unit of Measure Code
261661  , p_source_4            IN VARCHAR2
261662 --Inventory Transaction Type Description
261663  , p_source_5            IN VARCHAR2
261664 --Cost Management Default Account
261665  , p_source_11            IN NUMBER
261666 --Applied to Application ID
261667  , p_source_79            IN NUMBER
261668 --Applied to Distribution Link Type
261669  , p_source_80            IN VARCHAR2
261670 --Applied to Entity Code
261671  , p_source_81            IN VARCHAR2
261672 --DISTRIBUTION_IDENTIFIER
261673  , p_source_84            IN NUMBER
261674 --Distribution Type
261675  , p_source_85            IN VARCHAR2
261676  , p_source_85_meaning    IN VARCHAR2
261677 --Encumbrance Reversal Amount Entered
261678  , p_source_87            IN NUMBER
261679 --Entered Currency Code
261680  , p_source_88            IN VARCHAR2
261681 --Transaction Encumbrance Reversal Amount
261682  , p_source_89            IN NUMBER
261683 --Entered Amount
261684  , p_source_91            IN NUMBER
261685 --Currency Conversion Date
261686  , p_source_92            IN DATE
261687 --Currency Conversion Rate
261688  , p_source_93            IN NUMBER
261689 --Currency Conversion Type
261690  , p_source_94            IN VARCHAR2
261691 --Accounted Amount
261692  , p_source_95            IN NUMBER
261693 --Accounting Line Type
261694  , p_source_97            IN NUMBER
261695 --Costing Encumbrance Upgrade Option
261696  , p_source_100            IN VARCHAR2
261697 --TXN_PO_DISTRIBUTION_ID
261698  , p_source_101            IN NUMBER
261699 --TXN_PO_HEADER_ID
261700  , p_source_102            IN NUMBER
261701 --Requisition Budget Account
261702  , p_source_103            IN NUMBER
261703 --Requisition Encumbrance Type Identifier
261704  , p_source_104            IN NUMBER
261705 )
261706 IS
261707 
261708 l_component_type              VARCHAR2(80);
261709 l_component_code              VARCHAR2(30);
261710 l_component_type_code         VARCHAR2(1);
261711 l_component_appl_id           INTEGER;
261712 l_amb_context_code            VARCHAR2(30);
261713 l_entity_code                 VARCHAR2(30);
261714 l_event_class_code            VARCHAR2(30);
261715 l_ae_header_id                NUMBER;
261716 l_event_type_code             VARCHAR2(30);
261717 l_line_definition_code        VARCHAR2(30);
261718 l_line_definition_owner_code  VARCHAR2(1);
261719 --
261720 -- adr variables
261721 l_segment                     VARCHAR2(30);
261722 l_ccid                        NUMBER;
261723 l_adr_transaction_coa_id      NUMBER;
261724 l_adr_accounting_coa_id       NUMBER;
261725 l_adr_flexfield_segment_code  VARCHAR2(30);
261726 l_adr_flex_value_set_id       NUMBER;
261727 l_adr_value_type_code         VARCHAR2(30);
261728 l_adr_value_combination_id    NUMBER;
261729 l_adr_value_segment_code      VARCHAR2(30);
261730 
261731 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
261732 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
261733 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
261734 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
261735 
261736 -- 4262811 Variables ------------------------------------------------------------------------------------------
261737 l_entered_amt_idx             NUMBER;
261738 l_accted_amt_idx              NUMBER;
261739 l_acc_rev_flag                VARCHAR2(1);
261740 l_accrual_line_num            NUMBER;
261741 l_tmp_amt                     NUMBER;
261742 l_acc_rev_natural_side_code   VARCHAR2(1);
261743 
261744 l_num_entries                 NUMBER;
261745 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
261746 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
261747 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
261748 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
261749 l_recog_line_1                NUMBER;
261750 l_recog_line_2                NUMBER;
261751 
261752 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
261753 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
261754 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
261755 
261756 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
261757 
261758 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
261759 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
261760 
261761 ---------------------------------------------------------------------------------------------------------------
261762 
261763 
261764 --
261765 -- bulk performance
261766 --
261767 l_balance_type_code           VARCHAR2(1);
261768 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
261769 l_log_module                  VARCHAR2(240);
261770 
261771 --
261772 -- Upgrade strategy
261773 --
261774 l_actual_upg_option           VARCHAR2(1);
261775 l_enc_upg_option           VARCHAR2(1);
261776 
261777 --
261778 BEGIN
261779 --
261780 IF g_log_enabled THEN
261781       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_470';
261782 END IF;
261783 --
261784 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261785 
261786       trace
261787          (p_msg      => 'BEGIN of AcctLineType_470'
261788          ,p_level    => C_LEVEL_PROCEDURE
261789          ,p_module   => l_log_module);
261790 
261791 END IF;
261792 --
261793 l_component_type             := 'AMB_JLT';
261794 l_component_code             := 'PROFIT_IN_INVENTORY';
261795 l_component_type_code        := 'S';
261796 l_component_appl_id          :=  707;
261797 l_amb_context_code           := 'DEFAULT';
261798 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
261799 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
261800 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
261801 l_line_definition_owner_code := 'S';
261802 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
261803 --
261804 l_balance_type_code          := 'A';
261805 l_segment                     := NULL;
261806 l_ccid                        := NULL;
261807 l_adr_transaction_coa_id      := NULL;
261808 l_adr_accounting_coa_id       := NULL;
261809 l_adr_flexfield_segment_code  := NULL;
261810 l_adr_flex_value_set_id       := NULL;
261811 l_adr_value_type_code         := NULL;
261812 l_adr_value_combination_id    := NULL;
261813 l_adr_value_segment_code      := NULL;
261814 
261815 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
261816 l_bflow_class_code           := '';    -- 4219869 Business Flow
261817 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
261818 l_budgetary_control_flag     := 'N';
261819 
261820 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
261821 l_bflow_applied_to_amt       := NULL; -- 5132302
261822 l_entered_amt_idx            := NULL;          -- 4262811
261823 l_accted_amt_idx             := NULL;          -- 4262811
261824 l_acc_rev_flag               := NULL;          -- 4262811
261825 l_accrual_line_num           := NULL;          -- 4262811
261826 l_tmp_amt                    := NULL;          -- 4262811
261827 --
261828  
261829 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
261830     l_balance_type_code <> 'B' THEN
261831 IF NVL(p_source_97,9E125) =  30
261832  THEN 
261833 
261834    --
261835    XLA_AE_LINES_PKG.SetNewLine;
261836 
261837    p_balance_type_code          := l_balance_type_code;
261838    -- set the flag so later we will know whether the gain loss line needs to be created
261839    
261840    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
261841      p_actual_flag :='A';
261842    END IF;
261843 
261844    --
261845    -- bulk performance
261846    --
261847    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
261848                                       p_header_num   => 0); -- 4262811
261849    --
261850    -- set accounting line options
261851    --
261852    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
261853            p_natural_side_code          => 'D'
261854          , p_gain_or_loss_flag          => 'N'
261855          , p_gl_transfer_mode_code      => 'S'
261856          , p_acct_entry_type_code       => 'A'
261857          , p_switch_side_flag           => 'Y'
261858          , p_merge_duplicate_code       => 'N'
261859          );
261860    --
261861    l_acc_rev_natural_side_code := 'C';  -- 4262811
261862    -- 
261863    --
261864    -- set accounting line type info
261865    --
261866    xla_ae_lines_pkg.SetAcctLineType
261867       (p_component_type             => l_component_type
261868       ,p_event_type_code            => l_event_type_code
261869       ,p_line_definition_owner_code => l_line_definition_owner_code
261870       ,p_line_definition_code       => l_line_definition_code
261871       ,p_accounting_line_code       => l_component_code
261872       ,p_accounting_line_type_code  => l_component_type_code
261873       ,p_accounting_line_appl_id    => l_component_appl_id
261874       ,p_amb_context_code           => l_amb_context_code
261875       ,p_entity_code                => l_entity_code
261876       ,p_event_class_code           => l_event_class_code);
261877    --
261878    -- set accounting class
261879    --
261880    xla_ae_lines_pkg.SetAcctClass(
261881            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
261882          , p_ae_header_id           => l_ae_header_id
261883          );
261884 
261885    --
261886    -- set rounding class
261887    --
261888    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
261889                       'PROFIT_IN_INVENTORY';
261890 
261891    --
261892    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
261893    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
261894    --
261895    -- bulk performance
261896    --
261897    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
261898 
261899    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
261900       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
261901 
261902    -- 4955764
261903    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
261904       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
261905 
261906    -- 4458381 Public Sector Enh
261907    
261908    --
261909    -- set accounting attributes for the line type
261910    --
261911    l_entered_amt_idx := 17;
261912    l_accted_amt_idx  := 22;
261913    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
261914    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
261915    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
261916    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
261917    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
261918    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
261919    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
261920    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
261921    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
261922    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
261923    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
261924    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
261925    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
261926    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
261927    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
261928    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
261929    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
261930    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
261931    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
261932    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
261933    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
261934    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
261935    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
261936    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
261937    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
261938    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
261939    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
261940    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
261941    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
261942    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
261943    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
261944    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
261945    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
261946    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
261947    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
261948    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
261949    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
261950    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
261951    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
261952    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
261953    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
261954    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
261955    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
261956    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
261957    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
261958    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
261959    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
261960    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
261961    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
261962 
261963    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
261964    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
261965 
261966    ---------------------------------------------------------------------------------------------------------------
261967    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
261968    ---------------------------------------------------------------------------------------------------------------
261969    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
261970 
261971    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
261972    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
261973 
261974    IF xla_accounting_cache_pkg.GetValueChar
261975          (p_source_code         => 'LEDGER_CATEGORY_CODE'
261976          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
261977    AND l_bflow_method_code = 'PRIOR_ENTRY'
261978 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
261979    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
261980          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
261981        )
261982    THEN
261983          xla_ae_lines_pkg.BflowUpgEntry
261984            (p_business_method_code    => l_bflow_method_code
261985            ,p_business_class_code     => l_bflow_class_code
261986            ,p_balance_type            => l_balance_type_code);
261987    ELSE
261988       NULL;
261989 -- No business flow processing for business flow method of NONE.
261990    END IF;
261991 
261992    --
261993    -- call analytical criteria
261994    --
261995    
261996    --
261997    -- call description
261998    --
261999    
262000 xla_ae_lines_pkg.SetLineDescription(
262001    p_ae_header_id => l_ae_header_id
262002   ,p_description  => Description_1 (
262003      p_application_id         => p_application_id
262004    , p_ae_header_id           => l_ae_header_id 
262005 , p_source_1 => p_source_1
262006 , p_source_2 => p_source_2
262007 , p_source_3 => p_source_3
262008 , p_source_4 => p_source_4
262009 , p_source_5 => p_source_5
262010    )
262011 );
262012 
262013 
262014    --
262015    -- call ADRs
262016    -- Bug 4922099
262017    --
262018    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
262019         (NVL(l_actual_upg_option, 'N') = 'O') OR
262020         (NVL(l_enc_upg_option, 'N') = 'O')
262021       )
262022    THEN
262023    NULL;
262024    --
262025    --
262026    
262027   l_ccid := AcctDerRule_6(
262028            p_application_id           => p_application_id
262029          , p_ae_header_id             => l_ae_header_id 
262030 , p_source_11 => p_source_11
262031          , x_transaction_coa_id       => l_adr_transaction_coa_id
262032          , x_accounting_coa_id        => l_adr_accounting_coa_id
262033          , x_value_type_code          => l_adr_value_type_code
262034          , p_side                     => 'NA'
262035    );
262036 
262037    xla_ae_lines_pkg.set_ccid(
262038     p_code_combination_id          => l_ccid
262039   , p_value_type_code              => l_adr_value_type_code
262040   , p_transaction_coa_id           => l_adr_transaction_coa_id
262041   , p_accounting_coa_id            => l_adr_accounting_coa_id
262042   , p_adr_code                     => 'CST_DEFAULT'
262043   , p_adr_type_code                => 'S'
262044   , p_component_type               => l_component_type
262045   , p_component_code               => l_component_code
262046   , p_component_type_code          => l_component_type_code
262047   , p_component_appl_id            => l_component_appl_id
262048   , p_amb_context_code             => l_amb_context_code
262049   , p_side                         => 'NA'
262050   );
262051 
262052 
262053    --
262054    --
262055    END IF;
262056    --
262057    -- Bug 4922099
262058    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
262059           (NVL(l_enc_upg_option, 'N') = 'O')
262060         ) AND
262061         (l_bflow_method_code = 'PRIOR_ENTRY')
262062       )
262063    THEN
262064       IF
262065       --
262066       1 = 2
262067       --
262068       THEN
262069       xla_accounting_err_pkg.build_message
262070                                     (p_appli_s_name            => 'XLA'
262071                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
262072                                     ,p_token_1                 => 'LINE_NUMBER'
262073                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
262074                                     ,p_token_2                 => 'LINE_TYPE_NAME'
262075                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
262076                                                                              l_component_type
262077                                                                             ,l_component_code
262078                                                                             ,l_component_type_code
262079                                                                             ,l_component_appl_id
262080                                                                             ,l_amb_context_code
262081                                                                             ,l_entity_code
262082                                                                             ,l_event_class_code
262083                                                                            )
262084                                     ,p_token_3                 => 'OWNER'
262085                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
262086                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
262087                                                                           ,p_lookup_code    => l_component_type_code
262088                                                                          )
262089                                     ,p_token_4                 => 'PRODUCT_NAME'
262090                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
262091                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
262092                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
262093                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
262094                                     ,p_ae_header_id            =>  NULL
262095                                        );
262096 
262097         IF (C_LEVEL_ERROR>= g_log_level) THEN
262098                  trace
262099                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
262100                       ,p_level    => C_LEVEL_ERROR
262101                       ,p_module   => l_log_module);
262102         END IF;
262103       END IF;
262104    END IF;
262105    --
262106    --
262107    ------------------------------------------------------------------------------------------------
262108    -- 4219869 Business Flow
262109    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
262110    -- Prior Entry.  Currently, the following code is always generated.
262111    ------------------------------------------------------------------------------------------------
262112    XLA_AE_LINES_PKG.ValidateCurrentLine;
262113 
262114    ------------------------------------------------------------------------------------
262115    -- 4219869 Business Flow
262116    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
262117    ------------------------------------------------------------------------------------
262118    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
262119 
262120    ----------------------------------------------------------------------------------
262121    -- 4219869 Business Flow
262122    -- Update journal entry status -- Need to generate this within IF <condition>
262123    ----------------------------------------------------------------------------------
262124    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
262125          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
262126          ,p_balance_type_code => l_balance_type_code
262127          );
262128 
262129    -------------------------------------------------------------------------------------------
262130    -- 4262811 - Generate the Accrual Reversal lines
262131    -------------------------------------------------------------------------------------------
262132    BEGIN
262133       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
262134                               (g_array_event(p_event_id).array_value_num('header_index'));
262135       IF l_acc_rev_flag IS NULL THEN
262136          l_acc_rev_flag := 'N';
262137       END IF;
262138    EXCEPTION
262139       WHEN OTHERS THEN
262140          l_acc_rev_flag := 'N';
262141    END;
262142    --
262143    IF (l_acc_rev_flag = 'Y') THEN
262144 
262145        -- 4645092  ------------------------------------------------------------------------------
262146        -- To allow MPA report to determine if it should generate report process
262147        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
262148        ------------------------------------------------------------------------------------------
262149 
262150        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
262151        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
262152    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
262153    -- call ADRs
262154    -- Bug 4922099
262155    --
262156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
262157         (NVL(l_actual_upg_option, 'N') = 'O') OR
262158         (NVL(l_enc_upg_option, 'N') = 'O')
262159       )
262160    THEN
262161    NULL;
262162    --
262163    --
262164    
262165   l_ccid := AcctDerRule_6(
262166            p_application_id           => p_application_id
262167          , p_ae_header_id             => l_ae_header_id 
262168 , p_source_11 => p_source_11
262169          , x_transaction_coa_id       => l_adr_transaction_coa_id
262170          , x_accounting_coa_id        => l_adr_accounting_coa_id
262171          , x_value_type_code          => l_adr_value_type_code
262172          , p_side                     => 'NA'
262173    );
262174 
262175    xla_ae_lines_pkg.set_ccid(
262176     p_code_combination_id          => l_ccid
262177   , p_value_type_code              => l_adr_value_type_code
262178   , p_transaction_coa_id           => l_adr_transaction_coa_id
262179   , p_accounting_coa_id            => l_adr_accounting_coa_id
262180   , p_adr_code                     => 'CST_DEFAULT'
262181   , p_adr_type_code                => 'S'
262182   , p_component_type               => l_component_type
262183   , p_component_code               => l_component_code
262184   , p_component_type_code          => l_component_type_code
262185   , p_component_appl_id            => l_component_appl_id
262186   , p_amb_context_code             => l_amb_context_code
262187   , p_side                         => 'NA'
262188   );
262189 
262190 
262191    --
262192    --
262193    END IF;
262194 
262195        --
262196        -- Update the line information that should be overwritten
262197        --
262198        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
262199                                          p_header_num   => 1);
262200        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
262201 
262202        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
262203 
262204        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
262205           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
262206        END IF;
262207 
262208       --
262209       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
262210       --
262211       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
262212           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
262213       ELSE
262214           ---------------------------------------------------------------------------------------------------
262215           -- 4262811a Switch Sign
262216           ---------------------------------------------------------------------------------------------------
262217           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
262218           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
262219                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
262220           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
262221                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
262222           -- 5132302
262223           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
262224                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
262225 
262226       END IF;
262227 
262228       -- 4955764
262229       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
262230       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
262231 
262232 
262233       XLA_AE_LINES_PKG.ValidateCurrentLine;
262234       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
262235 
262236       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
262237                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
262238                ,p_balance_type_code => l_balance_type_code);
262239 
262240    END IF;
262241 
262242    -----------------------------------------------------------------------------------------
262243    -- 4262811 Multiperiod Accounting
262244    -----------------------------------------------------------------------------------------
262245      -- No MPA option is assigned.
262246 
262247 
262248 END IF;
262249 END IF;
262250 --
262251 
262252 --
262253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
262254    trace
262255       (p_msg      => 'END of AcctLineType_470'
262256       ,p_level    => C_LEVEL_PROCEDURE
262257       ,p_module   => l_log_module);
262258 END IF;
262259 --
262260 EXCEPTION
262261   WHEN xla_exceptions_pkg.application_exception THEN
262262       RAISE;
262263   WHEN OTHERS THEN
262264        xla_exceptions_pkg.raise_message
262265            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_470');
262266 END AcctLineType_470;
262267 --
262268 
262269 ---------------------------------------
262270 --
262271 -- PRIVATE FUNCTION
262272 --         AcctLineType_471
262273 --
262274 ---------------------------------------
262275 PROCEDURE AcctLineType_471 (
262276   p_application_id        IN NUMBER
262277  ,p_event_id              IN NUMBER
262278  ,p_calculate_acctd_flag  IN VARCHAR2
262279  ,p_calculate_g_l_flag    IN VARCHAR2
262280  ,p_actual_flag           IN OUT VARCHAR2
262281  ,p_balance_type_code     OUT VARCHAR2
262282  ,p_gain_or_loss_ref      OUT VARCHAR2
262283  
262284 --TRANSACTION_ID
262285  , p_source_1            IN NUMBER
262286 --Item Concatenated Segments
262287  , p_source_2            IN VARCHAR2
262288 --Transaction Quantity
262289  , p_source_3            IN NUMBER
262290 --Transaction Unit of Measure Code
262291  , p_source_4            IN VARCHAR2
262292 --Inventory Transaction Type Description
262293  , p_source_5            IN VARCHAR2
262294 --Profit in Inventory Account
262295  , p_source_37            IN NUMBER
262296 --DISTRIBUTION_IDENTIFIER
262297  , p_source_84            IN NUMBER
262298 --Distribution Type
262299  , p_source_85            IN VARCHAR2
262300  , p_source_85_meaning    IN VARCHAR2
262301 --Entered Currency Code
262302  , p_source_88            IN VARCHAR2
262303 --Entered Amount
262304  , p_source_91            IN NUMBER
262305 --Currency Conversion Date
262306  , p_source_92            IN DATE
262307 --Currency Conversion Rate
262308  , p_source_93            IN NUMBER
262309 --Currency Conversion Type
262310  , p_source_94            IN VARCHAR2
262311 --Accounted Amount
262312  , p_source_95            IN NUMBER
262313 --Accounting Line Type
262314  , p_source_97            IN NUMBER
262315 )
262316 IS
262317 
262318 l_component_type              VARCHAR2(80);
262319 l_component_code              VARCHAR2(30);
262320 l_component_type_code         VARCHAR2(1);
262321 l_component_appl_id           INTEGER;
262322 l_amb_context_code            VARCHAR2(30);
262323 l_entity_code                 VARCHAR2(30);
262324 l_event_class_code            VARCHAR2(30);
262325 l_ae_header_id                NUMBER;
262326 l_event_type_code             VARCHAR2(30);
262327 l_line_definition_code        VARCHAR2(30);
262328 l_line_definition_owner_code  VARCHAR2(1);
262329 --
262330 -- adr variables
262331 l_segment                     VARCHAR2(30);
262332 l_ccid                        NUMBER;
262333 l_adr_transaction_coa_id      NUMBER;
262334 l_adr_accounting_coa_id       NUMBER;
262335 l_adr_flexfield_segment_code  VARCHAR2(30);
262336 l_adr_flex_value_set_id       NUMBER;
262337 l_adr_value_type_code         VARCHAR2(30);
262338 l_adr_value_combination_id    NUMBER;
262339 l_adr_value_segment_code      VARCHAR2(30);
262340 
262341 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
262342 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
262343 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
262344 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
262345 
262346 -- 4262811 Variables ------------------------------------------------------------------------------------------
262347 l_entered_amt_idx             NUMBER;
262348 l_accted_amt_idx              NUMBER;
262349 l_acc_rev_flag                VARCHAR2(1);
262350 l_accrual_line_num            NUMBER;
262351 l_tmp_amt                     NUMBER;
262352 l_acc_rev_natural_side_code   VARCHAR2(1);
262353 
262354 l_num_entries                 NUMBER;
262355 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
262356 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
262357 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
262358 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
262359 l_recog_line_1                NUMBER;
262360 l_recog_line_2                NUMBER;
262361 
262362 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
262363 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
262364 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
262365 
262366 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
262367 
262368 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
262369 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
262370 
262371 ---------------------------------------------------------------------------------------------------------------
262372 
262373 
262374 --
262375 -- bulk performance
262376 --
262377 l_balance_type_code           VARCHAR2(1);
262378 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
262379 l_log_module                  VARCHAR2(240);
262380 
262381 --
262382 -- Upgrade strategy
262383 --
262384 l_actual_upg_option           VARCHAR2(1);
262385 l_enc_upg_option           VARCHAR2(1);
262386 
262387 --
262388 BEGIN
262389 --
262390 IF g_log_enabled THEN
262391       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_471';
262392 END IF;
262393 --
262394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
262395 
262396       trace
262397          (p_msg      => 'BEGIN of AcctLineType_471'
262398          ,p_level    => C_LEVEL_PROCEDURE
262399          ,p_module   => l_log_module);
262400 
262401 END IF;
262402 --
262403 l_component_type             := 'AMB_JLT';
262404 l_component_code             := 'PROFIT_IN_INVENTORY';
262405 l_component_type_code        := 'S';
262406 l_component_appl_id          :=  707;
262407 l_amb_context_code           := 'DEFAULT';
262408 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
262409 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
262410 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
262411 l_line_definition_owner_code := 'S';
262412 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
262413 --
262414 l_balance_type_code          := 'A';
262415 l_segment                     := NULL;
262416 l_ccid                        := NULL;
262417 l_adr_transaction_coa_id      := NULL;
262418 l_adr_accounting_coa_id       := NULL;
262419 l_adr_flexfield_segment_code  := NULL;
262420 l_adr_flex_value_set_id       := NULL;
262421 l_adr_value_type_code         := NULL;
262422 l_adr_value_combination_id    := NULL;
262423 l_adr_value_segment_code      := NULL;
262424 
262425 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
262426 l_bflow_class_code           := '';    -- 4219869 Business Flow
262427 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
262428 l_budgetary_control_flag     := 'N';
262429 
262430 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
262431 l_bflow_applied_to_amt       := NULL; -- 5132302
262432 l_entered_amt_idx            := NULL;          -- 4262811
262433 l_accted_amt_idx             := NULL;          -- 4262811
262434 l_acc_rev_flag               := NULL;          -- 4262811
262435 l_accrual_line_num           := NULL;          -- 4262811
262436 l_tmp_amt                    := NULL;          -- 4262811
262437 --
262438  
262439 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
262440     l_balance_type_code <> 'B' THEN
262441 IF NVL(p_source_97,9E125) =  30
262442  THEN 
262443 
262444    --
262445    XLA_AE_LINES_PKG.SetNewLine;
262446 
262447    p_balance_type_code          := l_balance_type_code;
262448    -- set the flag so later we will know whether the gain loss line needs to be created
262449    
262450    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
262451      p_actual_flag :='A';
262452    END IF;
262453 
262454    --
262455    -- bulk performance
262456    --
262457    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
262458                                       p_header_num   => 0); -- 4262811
262459    --
262460    -- set accounting line options
262461    --
262462    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
262463            p_natural_side_code          => 'D'
262464          , p_gain_or_loss_flag          => 'N'
262465          , p_gl_transfer_mode_code      => 'S'
262466          , p_acct_entry_type_code       => 'A'
262467          , p_switch_side_flag           => 'Y'
262468          , p_merge_duplicate_code       => 'N'
262469          );
262470    --
262471    l_acc_rev_natural_side_code := 'C';  -- 4262811
262472    -- 
262473    --
262474    -- set accounting line type info
262475    --
262476    xla_ae_lines_pkg.SetAcctLineType
262477       (p_component_type             => l_component_type
262478       ,p_event_type_code            => l_event_type_code
262479       ,p_line_definition_owner_code => l_line_definition_owner_code
262480       ,p_line_definition_code       => l_line_definition_code
262481       ,p_accounting_line_code       => l_component_code
262482       ,p_accounting_line_type_code  => l_component_type_code
262483       ,p_accounting_line_appl_id    => l_component_appl_id
262484       ,p_amb_context_code           => l_amb_context_code
262485       ,p_entity_code                => l_entity_code
262486       ,p_event_class_code           => l_event_class_code);
262487    --
262488    -- set accounting class
262489    --
262490    xla_ae_lines_pkg.SetAcctClass(
262491            p_accounting_class_code  => 'PROFIT_IN_INVENTORY'
262492          , p_ae_header_id           => l_ae_header_id
262493          );
262494 
262495    --
262496    -- set rounding class
262497    --
262498    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
262499                       'PROFIT_IN_INVENTORY';
262500 
262501    --
262502    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
262503    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
262504    --
262505    -- bulk performance
262506    --
262507    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
262508 
262509    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
262510       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
262511 
262512    -- 4955764
262513    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
262514       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
262515 
262516    -- 4458381 Public Sector Enh
262517    
262518    --
262519    -- set accounting attributes for the line type
262520    --
262521    l_entered_amt_idx := 3;
262522    l_accted_amt_idx  := 8;
262523    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
262524    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
262525    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
262526    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
262527    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
262528    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
262529    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
262530    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
262531    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
262532    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
262533    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
262534    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
262535    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
262536    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
262537    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
262538    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
262539    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
262540 
262541    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
262542    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
262543 
262544    ---------------------------------------------------------------------------------------------------------------
262545    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
262546    ---------------------------------------------------------------------------------------------------------------
262547    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
262548 
262549    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
262550    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
262551 
262552    IF xla_accounting_cache_pkg.GetValueChar
262553          (p_source_code         => 'LEDGER_CATEGORY_CODE'
262554          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
262555    AND l_bflow_method_code = 'PRIOR_ENTRY'
262556 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
262557    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
262558          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
262559        )
262560    THEN
262561          xla_ae_lines_pkg.BflowUpgEntry
262562            (p_business_method_code    => l_bflow_method_code
262563            ,p_business_class_code     => l_bflow_class_code
262564            ,p_balance_type            => l_balance_type_code);
262565    ELSE
262566       NULL;
262567 -- No business flow processing for business flow method of NONE.
262568    END IF;
262569 
262570    --
262571    -- call analytical criteria
262572    --
262573    
262574    --
262575    -- call description
262576    --
262577    
262578 xla_ae_lines_pkg.SetLineDescription(
262579    p_ae_header_id => l_ae_header_id
262580   ,p_description  => Description_1 (
262581      p_application_id         => p_application_id
262582    , p_ae_header_id           => l_ae_header_id 
262583 , p_source_1 => p_source_1
262584 , p_source_2 => p_source_2
262585 , p_source_3 => p_source_3
262586 , p_source_4 => p_source_4
262587 , p_source_5 => p_source_5
262588    )
262589 );
262590 
262591 
262592    --
262593    -- call ADRs
262594    -- Bug 4922099
262595    --
262596    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
262597         (NVL(l_actual_upg_option, 'N') = 'O') OR
262598         (NVL(l_enc_upg_option, 'N') = 'O')
262599       )
262600    THEN
262601    NULL;
262602    --
262603    --
262604    
262605   l_ccid := AcctDerRule_22(
262606            p_application_id           => p_application_id
262607          , p_ae_header_id             => l_ae_header_id 
262608 , p_source_37 => p_source_37
262609          , x_transaction_coa_id       => l_adr_transaction_coa_id
262610          , x_accounting_coa_id        => l_adr_accounting_coa_id
262611          , x_value_type_code          => l_adr_value_type_code
262612          , p_side                     => 'NA'
262613    );
262614 
262615    xla_ae_lines_pkg.set_ccid(
262616     p_code_combination_id          => l_ccid
262617   , p_value_type_code              => l_adr_value_type_code
262618   , p_transaction_coa_id           => l_adr_transaction_coa_id
262619   , p_accounting_coa_id            => l_adr_accounting_coa_id
262620   , p_adr_code                     => 'PI_INTERORG_PROFIT'
262621   , p_adr_type_code                => 'S'
262622   , p_component_type               => l_component_type
262623   , p_component_code               => l_component_code
262624   , p_component_type_code          => l_component_type_code
262625   , p_component_appl_id            => l_component_appl_id
262626   , p_amb_context_code             => l_amb_context_code
262627   , p_side                         => 'NA'
262628   );
262629 
262630 
262631    --
262632    --
262633    END IF;
262634    --
262635    -- Bug 4922099
262636    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
262637           (NVL(l_enc_upg_option, 'N') = 'O')
262638         ) AND
262639         (l_bflow_method_code = 'PRIOR_ENTRY')
262640       )
262641    THEN
262642       IF
262643       --
262644       1 = 2
262645       --
262646       THEN
262647       xla_accounting_err_pkg.build_message
262648                                     (p_appli_s_name            => 'XLA'
262649                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
262650                                     ,p_token_1                 => 'LINE_NUMBER'
262651                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
262652                                     ,p_token_2                 => 'LINE_TYPE_NAME'
262653                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
262654                                                                              l_component_type
262655                                                                             ,l_component_code
262656                                                                             ,l_component_type_code
262657                                                                             ,l_component_appl_id
262658                                                                             ,l_amb_context_code
262659                                                                             ,l_entity_code
262660                                                                             ,l_event_class_code
262661                                                                            )
262662                                     ,p_token_3                 => 'OWNER'
262663                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
262664                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
262665                                                                           ,p_lookup_code    => l_component_type_code
262666                                                                          )
262667                                     ,p_token_4                 => 'PRODUCT_NAME'
262668                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
262669                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
262670                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
262671                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
262672                                     ,p_ae_header_id            =>  NULL
262673                                        );
262674 
262675         IF (C_LEVEL_ERROR>= g_log_level) THEN
262676                  trace
262677                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
262678                       ,p_level    => C_LEVEL_ERROR
262679                       ,p_module   => l_log_module);
262680         END IF;
262681       END IF;
262682    END IF;
262683    --
262684    --
262685    ------------------------------------------------------------------------------------------------
262686    -- 4219869 Business Flow
262687    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
262688    -- Prior Entry.  Currently, the following code is always generated.
262689    ------------------------------------------------------------------------------------------------
262690    XLA_AE_LINES_PKG.ValidateCurrentLine;
262691 
262692    ------------------------------------------------------------------------------------
262693    -- 4219869 Business Flow
262694    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
262695    ------------------------------------------------------------------------------------
262696    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
262697 
262698    ----------------------------------------------------------------------------------
262699    -- 4219869 Business Flow
262700    -- Update journal entry status -- Need to generate this within IF <condition>
262701    ----------------------------------------------------------------------------------
262702    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
262703          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
262704          ,p_balance_type_code => l_balance_type_code
262705          );
262706 
262707    -------------------------------------------------------------------------------------------
262708    -- 4262811 - Generate the Accrual Reversal lines
262709    -------------------------------------------------------------------------------------------
262710    BEGIN
262711       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
262712                               (g_array_event(p_event_id).array_value_num('header_index'));
262713       IF l_acc_rev_flag IS NULL THEN
262714          l_acc_rev_flag := 'N';
262715       END IF;
262716    EXCEPTION
262717       WHEN OTHERS THEN
262718          l_acc_rev_flag := 'N';
262719    END;
262720    --
262721    IF (l_acc_rev_flag = 'Y') THEN
262722 
262723        -- 4645092  ------------------------------------------------------------------------------
262724        -- To allow MPA report to determine if it should generate report process
262725        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
262726        ------------------------------------------------------------------------------------------
262727 
262728        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
262729        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
262730    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
262731    -- call ADRs
262732    -- Bug 4922099
262733    --
262734    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
262735         (NVL(l_actual_upg_option, 'N') = 'O') OR
262736         (NVL(l_enc_upg_option, 'N') = 'O')
262737       )
262738    THEN
262739    NULL;
262740    --
262741    --
262742    
262743   l_ccid := AcctDerRule_22(
262744            p_application_id           => p_application_id
262745          , p_ae_header_id             => l_ae_header_id 
262746 , p_source_37 => p_source_37
262747          , x_transaction_coa_id       => l_adr_transaction_coa_id
262748          , x_accounting_coa_id        => l_adr_accounting_coa_id
262749          , x_value_type_code          => l_adr_value_type_code
262750          , p_side                     => 'NA'
262751    );
262752 
262753    xla_ae_lines_pkg.set_ccid(
262754     p_code_combination_id          => l_ccid
262755   , p_value_type_code              => l_adr_value_type_code
262756   , p_transaction_coa_id           => l_adr_transaction_coa_id
262757   , p_accounting_coa_id            => l_adr_accounting_coa_id
262758   , p_adr_code                     => 'PI_INTERORG_PROFIT'
262759   , p_adr_type_code                => 'S'
262760   , p_component_type               => l_component_type
262761   , p_component_code               => l_component_code
262762   , p_component_type_code          => l_component_type_code
262763   , p_component_appl_id            => l_component_appl_id
262764   , p_amb_context_code             => l_amb_context_code
262765   , p_side                         => 'NA'
262766   );
262767 
262768 
262769    --
262770    --
262771    END IF;
262772 
262773        --
262774        -- Update the line information that should be overwritten
262775        --
262776        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
262777                                          p_header_num   => 1);
262778        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
262779 
262780        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
262781 
262782        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
262783           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
262784        END IF;
262785 
262786       --
262787       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
262788       --
262789       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
262790           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
262791       ELSE
262792           ---------------------------------------------------------------------------------------------------
262793           -- 4262811a Switch Sign
262794           ---------------------------------------------------------------------------------------------------
262795           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
262796           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
262797                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
262798           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
262799                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
262800           -- 5132302
262801           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
262802                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
262803 
262804       END IF;
262805 
262806       -- 4955764
262807       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
262808       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
262809 
262810 
262811       XLA_AE_LINES_PKG.ValidateCurrentLine;
262812       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
262813 
262814       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
262815                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
262816                ,p_balance_type_code => l_balance_type_code);
262817 
262818    END IF;
262819 
262820    -----------------------------------------------------------------------------------------
262821    -- 4262811 Multiperiod Accounting
262822    -----------------------------------------------------------------------------------------
262823      -- No MPA option is assigned.
262824 
262825 
262826 END IF;
262827 END IF;
262828 --
262829 
262830 --
262831 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
262832    trace
262833       (p_msg      => 'END of AcctLineType_471'
262834       ,p_level    => C_LEVEL_PROCEDURE
262835       ,p_module   => l_log_module);
262836 END IF;
262837 --
262838 EXCEPTION
262839   WHEN xla_exceptions_pkg.application_exception THEN
262840       RAISE;
262841   WHEN OTHERS THEN
262842        xla_exceptions_pkg.raise_message
262843            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_471');
262844 END AcctLineType_471;
262845 --
262846 
262847 ---------------------------------------
262848 --
262849 -- PRIVATE FUNCTION
262850 --         AcctLineType_472
262851 --
262852 ---------------------------------------
262853 PROCEDURE AcctLineType_472 (
262854   p_application_id        IN NUMBER
262855  ,p_event_id              IN NUMBER
262856  ,p_calculate_acctd_flag  IN VARCHAR2
262857  ,p_calculate_g_l_flag    IN VARCHAR2
262858  ,p_actual_flag           IN OUT VARCHAR2
262859  ,p_balance_type_code     OUT VARCHAR2
262860  ,p_gain_or_loss_ref      OUT VARCHAR2
262861  
262862 --Cost Management Default Account
262863  , p_source_11            IN NUMBER
262864 --DISTRIBUTION_IDENTIFIER
262865  , p_source_84            IN NUMBER
262866 --Distribution Type
262867  , p_source_85            IN VARCHAR2
262868  , p_source_85_meaning    IN VARCHAR2
262869 --Entered Currency Code
262870  , p_source_88            IN VARCHAR2
262871 --Entered Amount
262872  , p_source_91            IN NUMBER
262873 --Currency Conversion Date
262874  , p_source_92            IN DATE
262875 --Currency Conversion Rate
262876  , p_source_93            IN NUMBER
262877 --Currency Conversion Type
262878  , p_source_94            IN VARCHAR2
262879 --Accounted Amount
262880  , p_source_95            IN NUMBER
262881 --Accounting Line Type
262882  , p_source_97            IN NUMBER
262883 )
262884 IS
262885 
262886 l_component_type              VARCHAR2(80);
262887 l_component_code              VARCHAR2(30);
262888 l_component_type_code         VARCHAR2(1);
262889 l_component_appl_id           INTEGER;
262890 l_amb_context_code            VARCHAR2(30);
262891 l_entity_code                 VARCHAR2(30);
262892 l_event_class_code            VARCHAR2(30);
262893 l_ae_header_id                NUMBER;
262894 l_event_type_code             VARCHAR2(30);
262895 l_line_definition_code        VARCHAR2(30);
262896 l_line_definition_owner_code  VARCHAR2(1);
262897 --
262898 -- adr variables
262899 l_segment                     VARCHAR2(30);
262900 l_ccid                        NUMBER;
262901 l_adr_transaction_coa_id      NUMBER;
262902 l_adr_accounting_coa_id       NUMBER;
262903 l_adr_flexfield_segment_code  VARCHAR2(30);
262904 l_adr_flex_value_set_id       NUMBER;
262905 l_adr_value_type_code         VARCHAR2(30);
262906 l_adr_value_combination_id    NUMBER;
262907 l_adr_value_segment_code      VARCHAR2(30);
262908 
262909 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
262910 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
262911 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
262912 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
262913 
262914 -- 4262811 Variables ------------------------------------------------------------------------------------------
262915 l_entered_amt_idx             NUMBER;
262916 l_accted_amt_idx              NUMBER;
262917 l_acc_rev_flag                VARCHAR2(1);
262918 l_accrual_line_num            NUMBER;
262919 l_tmp_amt                     NUMBER;
262920 l_acc_rev_natural_side_code   VARCHAR2(1);
262921 
262922 l_num_entries                 NUMBER;
262923 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
262924 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
262925 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
262926 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
262927 l_recog_line_1                NUMBER;
262928 l_recog_line_2                NUMBER;
262929 
262930 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
262931 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
262932 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
262933 
262934 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
262935 
262936 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
262937 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
262938 
262939 ---------------------------------------------------------------------------------------------------------------
262940 
262941 
262942 --
262943 -- bulk performance
262944 --
262945 l_balance_type_code           VARCHAR2(1);
262946 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
262947 l_log_module                  VARCHAR2(240);
262948 
262949 --
262950 -- Upgrade strategy
262951 --
262952 l_actual_upg_option           VARCHAR2(1);
262953 l_enc_upg_option           VARCHAR2(1);
262954 
262955 --
262956 BEGIN
262957 --
262958 IF g_log_enabled THEN
262959       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_472';
262960 END IF;
262961 --
262962 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
262963 
262964       trace
262965          (p_msg      => 'BEGIN of AcctLineType_472'
262966          ,p_level    => C_LEVEL_PROCEDURE
262967          ,p_module   => l_log_module);
262968 
262969 END IF;
262970 --
262971 l_component_type             := 'AMB_JLT';
262972 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
262973 l_component_type_code        := 'S';
262974 l_component_appl_id          :=  707;
262975 l_amb_context_code           := 'DEFAULT';
262976 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
262977 l_event_class_code           := 'USER_DEFINE';
262978 l_event_type_code            := 'UDIR_INTERORG_RCPT_NO_TP';
262979 l_line_definition_owner_code := 'S';
262980 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_NO_TP';
262981 --
262982 l_balance_type_code          := 'A';
262983 l_segment                     := NULL;
262984 l_ccid                        := NULL;
262985 l_adr_transaction_coa_id      := NULL;
262986 l_adr_accounting_coa_id       := NULL;
262987 l_adr_flexfield_segment_code  := NULL;
262988 l_adr_flex_value_set_id       := NULL;
262989 l_adr_value_type_code         := NULL;
262990 l_adr_value_combination_id    := NULL;
262991 l_adr_value_segment_code      := NULL;
262992 
262993 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
262994 l_bflow_class_code           := '';    -- 4219869 Business Flow
262995 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
262996 l_budgetary_control_flag     := 'N';
262997 
262998 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
262999 l_bflow_applied_to_amt       := NULL; -- 5132302
263000 l_entered_amt_idx            := NULL;          -- 4262811
263001 l_accted_amt_idx             := NULL;          -- 4262811
263002 l_acc_rev_flag               := NULL;          -- 4262811
263003 l_accrual_line_num           := NULL;          -- 4262811
263004 l_tmp_amt                    := NULL;          -- 4262811
263005 --
263006  
263007 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
263008     l_balance_type_code <> 'B' THEN
263009 IF NVL(p_source_97,9E125) =  6
263010  THEN 
263011 
263012    --
263013    XLA_AE_LINES_PKG.SetNewLine;
263014 
263015    p_balance_type_code          := l_balance_type_code;
263016    -- set the flag so later we will know whether the gain loss line needs to be created
263017    
263018    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
263019      p_actual_flag :='A';
263020    END IF;
263021 
263022    --
263023    -- bulk performance
263024    --
263025    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
263026                                       p_header_num   => 0); -- 4262811
263027    --
263028    -- set accounting line options
263029    --
263030    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
263031            p_natural_side_code          => 'D'
263032          , p_gain_or_loss_flag          => 'N'
263033          , p_gl_transfer_mode_code      => 'S'
263034          , p_acct_entry_type_code       => 'A'
263035          , p_switch_side_flag           => 'Y'
263036          , p_merge_duplicate_code       => 'N'
263037          );
263038    --
263039    l_acc_rev_natural_side_code := 'C';  -- 4262811
263040    -- 
263041    --
263042    -- set accounting line type info
263043    --
263044    xla_ae_lines_pkg.SetAcctLineType
263045       (p_component_type             => l_component_type
263046       ,p_event_type_code            => l_event_type_code
263047       ,p_line_definition_owner_code => l_line_definition_owner_code
263048       ,p_line_definition_code       => l_line_definition_code
263049       ,p_accounting_line_code       => l_component_code
263050       ,p_accounting_line_type_code  => l_component_type_code
263051       ,p_accounting_line_appl_id    => l_component_appl_id
263052       ,p_amb_context_code           => l_amb_context_code
263053       ,p_entity_code                => l_entity_code
263054       ,p_event_class_code           => l_event_class_code);
263055    --
263056    -- set accounting class
263057    --
263058    xla_ae_lines_pkg.SetAcctClass(
263059            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
263060          , p_ae_header_id           => l_ae_header_id
263061          );
263062 
263063    --
263064    -- set rounding class
263065    --
263066    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
263067                       'PURCHASE_PRICE_VARIANCE';
263068 
263069    --
263070    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
263071    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
263072    --
263073    -- bulk performance
263074    --
263075    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
263076 
263077    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
263078       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
263079 
263080    -- 4955764
263081    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
263082       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
263083 
263084    -- 4458381 Public Sector Enh
263085    
263086    --
263087    -- set accounting attributes for the line type
263088    --
263089    l_entered_amt_idx := 3;
263090    l_accted_amt_idx  := 8;
263091    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
263092    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
263093    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
263094    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
263095    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
263096    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
263097    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
263098    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
263099    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
263100    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
263101    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
263102    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
263103    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
263104    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
263105    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
263106    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
263107    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
263108 
263109    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
263110    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
263111 
263112    ---------------------------------------------------------------------------------------------------------------
263113    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
263114    ---------------------------------------------------------------------------------------------------------------
263115    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
263116 
263117    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
263118    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
263119 
263120    IF xla_accounting_cache_pkg.GetValueChar
263121          (p_source_code         => 'LEDGER_CATEGORY_CODE'
263122          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
263123    AND l_bflow_method_code = 'PRIOR_ENTRY'
263124 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
263125    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
263126          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
263127        )
263128    THEN
263129          xla_ae_lines_pkg.BflowUpgEntry
263130            (p_business_method_code    => l_bflow_method_code
263131            ,p_business_class_code     => l_bflow_class_code
263132            ,p_balance_type            => l_balance_type_code);
263133    ELSE
263134       NULL;
263135 -- No business flow processing for business flow method of NONE.
263136    END IF;
263137 
263138    --
263139    -- call analytical criteria
263140    --
263141    
263142    --
263143    -- call description
263144    --
263145    -- No description or it is inherited.
263146    --
263147    -- call ADRs
263148    -- Bug 4922099
263149    --
263150    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
263151         (NVL(l_actual_upg_option, 'N') = 'O') OR
263152         (NVL(l_enc_upg_option, 'N') = 'O')
263153       )
263154    THEN
263155    NULL;
263156    --
263157    --
263158    
263159   l_ccid := AcctDerRule_6(
263160            p_application_id           => p_application_id
263161          , p_ae_header_id             => l_ae_header_id 
263162 , p_source_11 => p_source_11
263163          , x_transaction_coa_id       => l_adr_transaction_coa_id
263164          , x_accounting_coa_id        => l_adr_accounting_coa_id
263165          , x_value_type_code          => l_adr_value_type_code
263166          , p_side                     => 'NA'
263167    );
263168 
263169    xla_ae_lines_pkg.set_ccid(
263170     p_code_combination_id          => l_ccid
263171   , p_value_type_code              => l_adr_value_type_code
263172   , p_transaction_coa_id           => l_adr_transaction_coa_id
263173   , p_accounting_coa_id            => l_adr_accounting_coa_id
263174   , p_adr_code                     => 'CST_DEFAULT'
263175   , p_adr_type_code                => 'S'
263176   , p_component_type               => l_component_type
263177   , p_component_code               => l_component_code
263178   , p_component_type_code          => l_component_type_code
263179   , p_component_appl_id            => l_component_appl_id
263180   , p_amb_context_code             => l_amb_context_code
263181   , p_side                         => 'NA'
263182   );
263183 
263184 
263185    --
263186    --
263187    END IF;
263188    --
263189    -- Bug 4922099
263190    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
263191           (NVL(l_enc_upg_option, 'N') = 'O')
263192         ) AND
263193         (l_bflow_method_code = 'PRIOR_ENTRY')
263194       )
263195    THEN
263196       IF
263197       --
263198       1 = 2
263199       --
263200       THEN
263201       xla_accounting_err_pkg.build_message
263202                                     (p_appli_s_name            => 'XLA'
263203                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
263204                                     ,p_token_1                 => 'LINE_NUMBER'
263205                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
263206                                     ,p_token_2                 => 'LINE_TYPE_NAME'
263207                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
263208                                                                              l_component_type
263209                                                                             ,l_component_code
263210                                                                             ,l_component_type_code
263211                                                                             ,l_component_appl_id
263212                                                                             ,l_amb_context_code
263213                                                                             ,l_entity_code
263214                                                                             ,l_event_class_code
263215                                                                            )
263216                                     ,p_token_3                 => 'OWNER'
263217                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
263218                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
263219                                                                           ,p_lookup_code    => l_component_type_code
263220                                                                          )
263221                                     ,p_token_4                 => 'PRODUCT_NAME'
263222                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
263223                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
263224                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
263225                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
263226                                     ,p_ae_header_id            =>  NULL
263227                                        );
263228 
263229         IF (C_LEVEL_ERROR>= g_log_level) THEN
263230                  trace
263231                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
263232                       ,p_level    => C_LEVEL_ERROR
263233                       ,p_module   => l_log_module);
263234         END IF;
263235       END IF;
263236    END IF;
263237    --
263238    --
263239    ------------------------------------------------------------------------------------------------
263240    -- 4219869 Business Flow
263241    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
263242    -- Prior Entry.  Currently, the following code is always generated.
263243    ------------------------------------------------------------------------------------------------
263244    XLA_AE_LINES_PKG.ValidateCurrentLine;
263245 
263246    ------------------------------------------------------------------------------------
263247    -- 4219869 Business Flow
263248    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
263249    ------------------------------------------------------------------------------------
263250    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
263251 
263252    ----------------------------------------------------------------------------------
263253    -- 4219869 Business Flow
263254    -- Update journal entry status -- Need to generate this within IF <condition>
263255    ----------------------------------------------------------------------------------
263256    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
263257          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
263258          ,p_balance_type_code => l_balance_type_code
263259          );
263260 
263261    -------------------------------------------------------------------------------------------
263262    -- 4262811 - Generate the Accrual Reversal lines
263263    -------------------------------------------------------------------------------------------
263264    BEGIN
263265       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
263266                               (g_array_event(p_event_id).array_value_num('header_index'));
263267       IF l_acc_rev_flag IS NULL THEN
263268          l_acc_rev_flag := 'N';
263269       END IF;
263270    EXCEPTION
263271       WHEN OTHERS THEN
263272          l_acc_rev_flag := 'N';
263273    END;
263274    --
263275    IF (l_acc_rev_flag = 'Y') THEN
263276 
263277        -- 4645092  ------------------------------------------------------------------------------
263278        -- To allow MPA report to determine if it should generate report process
263279        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
263280        ------------------------------------------------------------------------------------------
263281 
263282        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
263283        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
263284    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
263285    -- call ADRs
263286    -- Bug 4922099
263287    --
263288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
263289         (NVL(l_actual_upg_option, 'N') = 'O') OR
263290         (NVL(l_enc_upg_option, 'N') = 'O')
263291       )
263292    THEN
263293    NULL;
263294    --
263295    --
263296    
263297   l_ccid := AcctDerRule_6(
263298            p_application_id           => p_application_id
263299          , p_ae_header_id             => l_ae_header_id 
263300 , p_source_11 => p_source_11
263301          , x_transaction_coa_id       => l_adr_transaction_coa_id
263302          , x_accounting_coa_id        => l_adr_accounting_coa_id
263303          , x_value_type_code          => l_adr_value_type_code
263304          , p_side                     => 'NA'
263305    );
263306 
263307    xla_ae_lines_pkg.set_ccid(
263308     p_code_combination_id          => l_ccid
263309   , p_value_type_code              => l_adr_value_type_code
263310   , p_transaction_coa_id           => l_adr_transaction_coa_id
263311   , p_accounting_coa_id            => l_adr_accounting_coa_id
263312   , p_adr_code                     => 'CST_DEFAULT'
263313   , p_adr_type_code                => 'S'
263314   , p_component_type               => l_component_type
263315   , p_component_code               => l_component_code
263316   , p_component_type_code          => l_component_type_code
263317   , p_component_appl_id            => l_component_appl_id
263318   , p_amb_context_code             => l_amb_context_code
263319   , p_side                         => 'NA'
263320   );
263321 
263322 
263323    --
263324    --
263325    END IF;
263326 
263327        --
263328        -- Update the line information that should be overwritten
263329        --
263330        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
263331                                          p_header_num   => 1);
263332        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
263333 
263334        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
263335 
263336        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
263337           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
263338        END IF;
263339 
263340       --
263341       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
263342       --
263343       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
263344           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
263345       ELSE
263346           ---------------------------------------------------------------------------------------------------
263347           -- 4262811a Switch Sign
263348           ---------------------------------------------------------------------------------------------------
263349           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
263350           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
263351                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
263352           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
263353                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
263354           -- 5132302
263355           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
263356                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
263357 
263358       END IF;
263359 
263360       -- 4955764
263361       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
263362       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
263363 
263364 
263365       XLA_AE_LINES_PKG.ValidateCurrentLine;
263366       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
263367 
263368       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
263369                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
263370                ,p_balance_type_code => l_balance_type_code);
263371 
263372    END IF;
263373 
263374    -----------------------------------------------------------------------------------------
263375    -- 4262811 Multiperiod Accounting
263376    -----------------------------------------------------------------------------------------
263377      -- No MPA option is assigned.
263378 
263379 
263380 END IF;
263381 END IF;
263382 --
263383 
263384 --
263385 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
263386    trace
263387       (p_msg      => 'END of AcctLineType_472'
263388       ,p_level    => C_LEVEL_PROCEDURE
263389       ,p_module   => l_log_module);
263390 END IF;
263391 --
263392 EXCEPTION
263393   WHEN xla_exceptions_pkg.application_exception THEN
263394       RAISE;
263395   WHEN OTHERS THEN
263396        xla_exceptions_pkg.raise_message
263397            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_472');
263398 END AcctLineType_472;
263399 --
263400 
263401 ---------------------------------------
263402 --
263403 -- PRIVATE FUNCTION
263404 --         AcctLineType_473
263405 --
263406 ---------------------------------------
263407 PROCEDURE AcctLineType_473 (
263408   p_application_id        IN NUMBER
263409  ,p_event_id              IN NUMBER
263410  ,p_calculate_acctd_flag  IN VARCHAR2
263411  ,p_calculate_g_l_flag    IN VARCHAR2
263412  ,p_actual_flag           IN OUT VARCHAR2
263413  ,p_balance_type_code     OUT VARCHAR2
263414  ,p_gain_or_loss_ref      OUT VARCHAR2
263415  
263416 --TRANSACTION_ID
263417  , p_source_1            IN NUMBER
263418 --Item Concatenated Segments
263419  , p_source_2            IN VARCHAR2
263420 --Transaction Quantity
263421  , p_source_3            IN NUMBER
263422 --Transaction Unit of Measure Code
263423  , p_source_4            IN VARCHAR2
263424 --Inventory Transaction Type Description
263425  , p_source_5            IN VARCHAR2
263426 --Cost Management Default Account
263427  , p_source_11            IN NUMBER
263428 --Applied to Application ID
263429  , p_source_79            IN NUMBER
263430 --Applied to Distribution Link Type
263431  , p_source_80            IN VARCHAR2
263432 --Applied to Entity Code
263433  , p_source_81            IN VARCHAR2
263434 --DISTRIBUTION_IDENTIFIER
263435  , p_source_84            IN NUMBER
263436 --Distribution Type
263437  , p_source_85            IN VARCHAR2
263438  , p_source_85_meaning    IN VARCHAR2
263439 --Encumbrance Reversal Amount Entered
263440  , p_source_87            IN NUMBER
263441 --Entered Currency Code
263442  , p_source_88            IN VARCHAR2
263443 --Transaction Encumbrance Reversal Amount
263444  , p_source_89            IN NUMBER
263445 --Entered Amount
263446  , p_source_91            IN NUMBER
263447 --Currency Conversion Date
263448  , p_source_92            IN DATE
263449 --Currency Conversion Rate
263450  , p_source_93            IN NUMBER
263451 --Currency Conversion Type
263452  , p_source_94            IN VARCHAR2
263453 --Accounted Amount
263454  , p_source_95            IN NUMBER
263455 --Accounting Line Type
263456  , p_source_97            IN NUMBER
263457 --Costing Encumbrance Upgrade Option
263458  , p_source_100            IN VARCHAR2
263459 --TXN_PO_DISTRIBUTION_ID
263460  , p_source_101            IN NUMBER
263461 --TXN_PO_HEADER_ID
263462  , p_source_102            IN NUMBER
263463 --Requisition Budget Account
263464  , p_source_103            IN NUMBER
263465 --Requisition Encumbrance Type Identifier
263466  , p_source_104            IN NUMBER
263467 )
263468 IS
263469 
263470 l_component_type              VARCHAR2(80);
263471 l_component_code              VARCHAR2(30);
263472 l_component_type_code         VARCHAR2(1);
263473 l_component_appl_id           INTEGER;
263474 l_amb_context_code            VARCHAR2(30);
263475 l_entity_code                 VARCHAR2(30);
263476 l_event_class_code            VARCHAR2(30);
263477 l_ae_header_id                NUMBER;
263478 l_event_type_code             VARCHAR2(30);
263479 l_line_definition_code        VARCHAR2(30);
263480 l_line_definition_owner_code  VARCHAR2(1);
263481 --
263482 -- adr variables
263483 l_segment                     VARCHAR2(30);
263484 l_ccid                        NUMBER;
263485 l_adr_transaction_coa_id      NUMBER;
263486 l_adr_accounting_coa_id       NUMBER;
263487 l_adr_flexfield_segment_code  VARCHAR2(30);
263488 l_adr_flex_value_set_id       NUMBER;
263489 l_adr_value_type_code         VARCHAR2(30);
263490 l_adr_value_combination_id    NUMBER;
263491 l_adr_value_segment_code      VARCHAR2(30);
263492 
263493 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
263494 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
263495 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
263496 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
263497 
263498 -- 4262811 Variables ------------------------------------------------------------------------------------------
263499 l_entered_amt_idx             NUMBER;
263500 l_accted_amt_idx              NUMBER;
263501 l_acc_rev_flag                VARCHAR2(1);
263502 l_accrual_line_num            NUMBER;
263503 l_tmp_amt                     NUMBER;
263504 l_acc_rev_natural_side_code   VARCHAR2(1);
263505 
263506 l_num_entries                 NUMBER;
263507 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
263508 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
263509 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
263510 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
263511 l_recog_line_1                NUMBER;
263512 l_recog_line_2                NUMBER;
263513 
263514 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
263515 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
263516 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
263517 
263518 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
263519 
263520 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
263521 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
263522 
263523 ---------------------------------------------------------------------------------------------------------------
263524 
263525 
263526 --
263527 -- bulk performance
263528 --
263529 l_balance_type_code           VARCHAR2(1);
263530 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
263531 l_log_module                  VARCHAR2(240);
263532 
263533 --
263534 -- Upgrade strategy
263535 --
263536 l_actual_upg_option           VARCHAR2(1);
263537 l_enc_upg_option           VARCHAR2(1);
263538 
263539 --
263540 BEGIN
263541 --
263542 IF g_log_enabled THEN
263543       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_473';
263544 END IF;
263545 --
263546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
263547 
263548       trace
263549          (p_msg      => 'BEGIN of AcctLineType_473'
263550          ,p_level    => C_LEVEL_PROCEDURE
263551          ,p_module   => l_log_module);
263552 
263553 END IF;
263554 --
263555 l_component_type             := 'AMB_JLT';
263556 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
263557 l_component_type_code        := 'S';
263558 l_component_appl_id          :=  707;
263559 l_amb_context_code           := 'DEFAULT';
263560 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
263561 l_event_class_code           := 'DIR_INTERORG_RCPT';
263562 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
263563 l_line_definition_owner_code := 'S';
263564 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
263565 --
263566 l_balance_type_code          := 'A';
263567 l_segment                     := NULL;
263568 l_ccid                        := NULL;
263569 l_adr_transaction_coa_id      := NULL;
263570 l_adr_accounting_coa_id       := NULL;
263571 l_adr_flexfield_segment_code  := NULL;
263572 l_adr_flex_value_set_id       := NULL;
263573 l_adr_value_type_code         := NULL;
263574 l_adr_value_combination_id    := NULL;
263575 l_adr_value_segment_code      := NULL;
263576 
263577 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
263578 l_bflow_class_code           := '';    -- 4219869 Business Flow
263579 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
263580 l_budgetary_control_flag     := 'N';
263581 
263582 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
263583 l_bflow_applied_to_amt       := NULL; -- 5132302
263584 l_entered_amt_idx            := NULL;          -- 4262811
263585 l_accted_amt_idx             := NULL;          -- 4262811
263586 l_acc_rev_flag               := NULL;          -- 4262811
263587 l_accrual_line_num           := NULL;          -- 4262811
263588 l_tmp_amt                    := NULL;          -- 4262811
263589 --
263590  
263591 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
263592     l_balance_type_code <> 'B' THEN
263593 IF NVL(p_source_97,9E125) =  6
263594  THEN 
263595 
263596    --
263597    XLA_AE_LINES_PKG.SetNewLine;
263598 
263599    p_balance_type_code          := l_balance_type_code;
263600    -- set the flag so later we will know whether the gain loss line needs to be created
263601    
263602    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
263603      p_actual_flag :='A';
263604    END IF;
263605 
263606    --
263607    -- bulk performance
263608    --
263609    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
263610                                       p_header_num   => 0); -- 4262811
263611    --
263612    -- set accounting line options
263613    --
263614    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
263615            p_natural_side_code          => 'D'
263616          , p_gain_or_loss_flag          => 'N'
263617          , p_gl_transfer_mode_code      => 'S'
263618          , p_acct_entry_type_code       => 'A'
263619          , p_switch_side_flag           => 'Y'
263620          , p_merge_duplicate_code       => 'N'
263621          );
263622    --
263623    l_acc_rev_natural_side_code := 'C';  -- 4262811
263624    -- 
263625    --
263626    -- set accounting line type info
263627    --
263628    xla_ae_lines_pkg.SetAcctLineType
263629       (p_component_type             => l_component_type
263630       ,p_event_type_code            => l_event_type_code
263631       ,p_line_definition_owner_code => l_line_definition_owner_code
263632       ,p_line_definition_code       => l_line_definition_code
263633       ,p_accounting_line_code       => l_component_code
263634       ,p_accounting_line_type_code  => l_component_type_code
263635       ,p_accounting_line_appl_id    => l_component_appl_id
263636       ,p_amb_context_code           => l_amb_context_code
263637       ,p_entity_code                => l_entity_code
263638       ,p_event_class_code           => l_event_class_code);
263639    --
263640    -- set accounting class
263641    --
263642    xla_ae_lines_pkg.SetAcctClass(
263643            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
263644          , p_ae_header_id           => l_ae_header_id
263645          );
263646 
263647    --
263648    -- set rounding class
263649    --
263650    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
263651                       'PURCHASE_PRICE_VARIANCE';
263652 
263653    --
263654    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
263655    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
263656    --
263657    -- bulk performance
263658    --
263659    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
263660 
263661    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
263662       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
263663 
263664    -- 4955764
263665    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
263666       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
263667 
263668    -- 4458381 Public Sector Enh
263669    
263670    --
263671    -- set accounting attributes for the line type
263672    --
263673    l_entered_amt_idx := 17;
263674    l_accted_amt_idx  := 22;
263675    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
263676    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
263677    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
263678    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
263679    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
263680    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
263681    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
263682    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
263683    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
263684    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
263685    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
263686    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
263687    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
263688    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
263689    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
263690    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
263691    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
263692    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
263693    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
263694    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
263695    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
263696    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
263697    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
263698    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
263699    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
263700    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
263701    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
263702    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
263703    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
263704    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
263705    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
263706    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
263707    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
263708    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
263709    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
263710    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
263711    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
263712    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
263713    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
263714    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
263715    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
263716    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
263717    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
263718    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
263719    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
263720    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
263721    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
263722    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
263723    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
263724 
263725    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
263726    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
263727 
263728    ---------------------------------------------------------------------------------------------------------------
263729    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
263730    ---------------------------------------------------------------------------------------------------------------
263731    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
263732 
263733    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
263734    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
263735 
263736    IF xla_accounting_cache_pkg.GetValueChar
263737          (p_source_code         => 'LEDGER_CATEGORY_CODE'
263738          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
263739    AND l_bflow_method_code = 'PRIOR_ENTRY'
263740 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
263741    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
263742          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
263743        )
263744    THEN
263745          xla_ae_lines_pkg.BflowUpgEntry
263746            (p_business_method_code    => l_bflow_method_code
263747            ,p_business_class_code     => l_bflow_class_code
263748            ,p_balance_type            => l_balance_type_code);
263749    ELSE
263750       NULL;
263751 -- No business flow processing for business flow method of NONE.
263752    END IF;
263753 
263754    --
263755    -- call analytical criteria
263756    --
263757    
263758    --
263759    -- call description
263760    --
263761    
263762 xla_ae_lines_pkg.SetLineDescription(
263763    p_ae_header_id => l_ae_header_id
263764   ,p_description  => Description_1 (
263765      p_application_id         => p_application_id
263766    , p_ae_header_id           => l_ae_header_id 
263767 , p_source_1 => p_source_1
263768 , p_source_2 => p_source_2
263769 , p_source_3 => p_source_3
263770 , p_source_4 => p_source_4
263771 , p_source_5 => p_source_5
263772    )
263773 );
263774 
263775 
263776    --
263777    -- call ADRs
263778    -- Bug 4922099
263779    --
263780    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
263781         (NVL(l_actual_upg_option, 'N') = 'O') OR
263782         (NVL(l_enc_upg_option, 'N') = 'O')
263783       )
263784    THEN
263785    NULL;
263786    --
263787    --
263788    
263789   l_ccid := AcctDerRule_6(
263790            p_application_id           => p_application_id
263791          , p_ae_header_id             => l_ae_header_id 
263792 , p_source_11 => p_source_11
263793          , x_transaction_coa_id       => l_adr_transaction_coa_id
263794          , x_accounting_coa_id        => l_adr_accounting_coa_id
263795          , x_value_type_code          => l_adr_value_type_code
263796          , p_side                     => 'NA'
263797    );
263798 
263799    xla_ae_lines_pkg.set_ccid(
263800     p_code_combination_id          => l_ccid
263801   , p_value_type_code              => l_adr_value_type_code
263802   , p_transaction_coa_id           => l_adr_transaction_coa_id
263803   , p_accounting_coa_id            => l_adr_accounting_coa_id
263804   , p_adr_code                     => 'CST_DEFAULT'
263805   , p_adr_type_code                => 'S'
263806   , p_component_type               => l_component_type
263807   , p_component_code               => l_component_code
263808   , p_component_type_code          => l_component_type_code
263809   , p_component_appl_id            => l_component_appl_id
263810   , p_amb_context_code             => l_amb_context_code
263811   , p_side                         => 'NA'
263812   );
263813 
263814 
263815    --
263816    --
263817    END IF;
263818    --
263819    -- Bug 4922099
263820    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
263821           (NVL(l_enc_upg_option, 'N') = 'O')
263822         ) AND
263823         (l_bflow_method_code = 'PRIOR_ENTRY')
263824       )
263825    THEN
263826       IF
263827       --
263828       1 = 2
263829       --
263830       THEN
263831       xla_accounting_err_pkg.build_message
263832                                     (p_appli_s_name            => 'XLA'
263833                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
263834                                     ,p_token_1                 => 'LINE_NUMBER'
263835                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
263836                                     ,p_token_2                 => 'LINE_TYPE_NAME'
263837                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
263838                                                                              l_component_type
263839                                                                             ,l_component_code
263840                                                                             ,l_component_type_code
263841                                                                             ,l_component_appl_id
263842                                                                             ,l_amb_context_code
263843                                                                             ,l_entity_code
263844                                                                             ,l_event_class_code
263845                                                                            )
263846                                     ,p_token_3                 => 'OWNER'
263847                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
263848                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
263849                                                                           ,p_lookup_code    => l_component_type_code
263850                                                                          )
263851                                     ,p_token_4                 => 'PRODUCT_NAME'
263852                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
263853                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
263854                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
263855                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
263856                                     ,p_ae_header_id            =>  NULL
263857                                        );
263858 
263859         IF (C_LEVEL_ERROR>= g_log_level) THEN
263860                  trace
263861                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
263862                       ,p_level    => C_LEVEL_ERROR
263863                       ,p_module   => l_log_module);
263864         END IF;
263865       END IF;
263866    END IF;
263867    --
263868    --
263869    ------------------------------------------------------------------------------------------------
263870    -- 4219869 Business Flow
263871    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
263872    -- Prior Entry.  Currently, the following code is always generated.
263873    ------------------------------------------------------------------------------------------------
263874    XLA_AE_LINES_PKG.ValidateCurrentLine;
263875 
263876    ------------------------------------------------------------------------------------
263877    -- 4219869 Business Flow
263878    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
263879    ------------------------------------------------------------------------------------
263880    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
263881 
263882    ----------------------------------------------------------------------------------
263883    -- 4219869 Business Flow
263884    -- Update journal entry status -- Need to generate this within IF <condition>
263885    ----------------------------------------------------------------------------------
263886    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
263887          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
263888          ,p_balance_type_code => l_balance_type_code
263889          );
263890 
263891    -------------------------------------------------------------------------------------------
263892    -- 4262811 - Generate the Accrual Reversal lines
263893    -------------------------------------------------------------------------------------------
263894    BEGIN
263895       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
263896                               (g_array_event(p_event_id).array_value_num('header_index'));
263897       IF l_acc_rev_flag IS NULL THEN
263898          l_acc_rev_flag := 'N';
263899       END IF;
263900    EXCEPTION
263901       WHEN OTHERS THEN
263902          l_acc_rev_flag := 'N';
263903    END;
263904    --
263905    IF (l_acc_rev_flag = 'Y') THEN
263906 
263907        -- 4645092  ------------------------------------------------------------------------------
263908        -- To allow MPA report to determine if it should generate report process
263909        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
263910        ------------------------------------------------------------------------------------------
263911 
263912        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
263913        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
263914    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
263915    -- call ADRs
263916    -- Bug 4922099
263917    --
263918    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
263919         (NVL(l_actual_upg_option, 'N') = 'O') OR
263920         (NVL(l_enc_upg_option, 'N') = 'O')
263921       )
263922    THEN
263923    NULL;
263924    --
263925    --
263926    
263927   l_ccid := AcctDerRule_6(
263928            p_application_id           => p_application_id
263929          , p_ae_header_id             => l_ae_header_id 
263930 , p_source_11 => p_source_11
263931          , x_transaction_coa_id       => l_adr_transaction_coa_id
263932          , x_accounting_coa_id        => l_adr_accounting_coa_id
263933          , x_value_type_code          => l_adr_value_type_code
263934          , p_side                     => 'NA'
263935    );
263936 
263937    xla_ae_lines_pkg.set_ccid(
263938     p_code_combination_id          => l_ccid
263939   , p_value_type_code              => l_adr_value_type_code
263940   , p_transaction_coa_id           => l_adr_transaction_coa_id
263941   , p_accounting_coa_id            => l_adr_accounting_coa_id
263942   , p_adr_code                     => 'CST_DEFAULT'
263943   , p_adr_type_code                => 'S'
263944   , p_component_type               => l_component_type
263945   , p_component_code               => l_component_code
263946   , p_component_type_code          => l_component_type_code
263947   , p_component_appl_id            => l_component_appl_id
263948   , p_amb_context_code             => l_amb_context_code
263949   , p_side                         => 'NA'
263950   );
263951 
263952 
263953    --
263954    --
263955    END IF;
263956 
263957        --
263958        -- Update the line information that should be overwritten
263959        --
263960        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
263961                                          p_header_num   => 1);
263962        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
263963 
263964        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
263965 
263966        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
263967           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
263968        END IF;
263969 
263970       --
263971       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
263972       --
263973       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
263974           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
263975       ELSE
263976           ---------------------------------------------------------------------------------------------------
263977           -- 4262811a Switch Sign
263978           ---------------------------------------------------------------------------------------------------
263979           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
263980           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
263981                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
263982           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
263983                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
263984           -- 5132302
263985           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
263986                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
263987 
263988       END IF;
263989 
263990       -- 4955764
263991       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
263992       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
263993 
263994 
263995       XLA_AE_LINES_PKG.ValidateCurrentLine;
263996       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
263997 
263998       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
263999                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
264000                ,p_balance_type_code => l_balance_type_code);
264001 
264002    END IF;
264003 
264004    -----------------------------------------------------------------------------------------
264005    -- 4262811 Multiperiod Accounting
264006    -----------------------------------------------------------------------------------------
264007      -- No MPA option is assigned.
264008 
264009 
264010 END IF;
264011 END IF;
264012 --
264013 
264014 --
264015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
264016    trace
264017       (p_msg      => 'END of AcctLineType_473'
264018       ,p_level    => C_LEVEL_PROCEDURE
264019       ,p_module   => l_log_module);
264020 END IF;
264021 --
264022 EXCEPTION
264023   WHEN xla_exceptions_pkg.application_exception THEN
264024       RAISE;
264025   WHEN OTHERS THEN
264026        xla_exceptions_pkg.raise_message
264027            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_473');
264028 END AcctLineType_473;
264029 --
264030 
264031 ---------------------------------------
264032 --
264033 -- PRIVATE FUNCTION
264034 --         AcctLineType_474
264035 --
264036 ---------------------------------------
264037 PROCEDURE AcctLineType_474 (
264038   p_application_id        IN NUMBER
264039  ,p_event_id              IN NUMBER
264040  ,p_calculate_acctd_flag  IN VARCHAR2
264041  ,p_calculate_g_l_flag    IN VARCHAR2
264042  ,p_actual_flag           IN OUT VARCHAR2
264043  ,p_balance_type_code     OUT VARCHAR2
264044  ,p_gain_or_loss_ref      OUT VARCHAR2
264045  
264046 --TRANSACTION_ID
264047  , p_source_1            IN NUMBER
264048 --Item Concatenated Segments
264049  , p_source_2            IN VARCHAR2
264050 --Transaction Quantity
264051  , p_source_3            IN NUMBER
264052 --Transaction Unit of Measure Code
264053  , p_source_4            IN VARCHAR2
264054 --Inventory Transaction Type Description
264055  , p_source_5            IN VARCHAR2
264056 --Inventory Organization Purchase Price Variance Account
264057  , p_source_58            IN NUMBER
264058 --Applied to Application ID
264059  , p_source_79            IN NUMBER
264060 --Applied to Distribution Link Type
264061  , p_source_80            IN VARCHAR2
264062 --Applied to Entity Code
264063  , p_source_81            IN VARCHAR2
264064 --Applied To Purchase Document Identifier
264065  , p_source_83            IN NUMBER
264066 --DISTRIBUTION_IDENTIFIER
264067  , p_source_84            IN NUMBER
264068 --Distribution Type
264069  , p_source_85            IN VARCHAR2
264070  , p_source_85_meaning    IN VARCHAR2
264071 --PO Budget Account
264072  , p_source_86            IN NUMBER
264073 --Encumbrance Reversal Amount Entered
264074  , p_source_87            IN NUMBER
264075 --Entered Currency Code
264076  , p_source_88            IN VARCHAR2
264077 --Transaction Encumbrance Reversal Amount
264078  , p_source_89            IN NUMBER
264079 --Entered Amount
264080  , p_source_91            IN NUMBER
264081 --Currency Conversion Date
264082  , p_source_92            IN DATE
264083 --Currency Conversion Rate
264084  , p_source_93            IN NUMBER
264085 --Currency Conversion Type
264086  , p_source_94            IN VARCHAR2
264087 --Accounted Amount
264088  , p_source_95            IN NUMBER
264089 --Purchasing Encumbrance Type Identifier
264090  , p_source_96            IN NUMBER
264091 --Accounting Line Type
264092  , p_source_97            IN NUMBER
264093 --Costing Encumbrance Upgrade Option
264094  , p_source_100            IN VARCHAR2
264095 --TXN_PO_DISTRIBUTION_ID
264096  , p_source_101            IN NUMBER
264097 )
264098 IS
264099 
264100 l_component_type              VARCHAR2(80);
264101 l_component_code              VARCHAR2(30);
264102 l_component_type_code         VARCHAR2(1);
264103 l_component_appl_id           INTEGER;
264104 l_amb_context_code            VARCHAR2(30);
264105 l_entity_code                 VARCHAR2(30);
264106 l_event_class_code            VARCHAR2(30);
264107 l_ae_header_id                NUMBER;
264108 l_event_type_code             VARCHAR2(30);
264109 l_line_definition_code        VARCHAR2(30);
264110 l_line_definition_owner_code  VARCHAR2(1);
264111 --
264112 -- adr variables
264113 l_segment                     VARCHAR2(30);
264114 l_ccid                        NUMBER;
264115 l_adr_transaction_coa_id      NUMBER;
264116 l_adr_accounting_coa_id       NUMBER;
264117 l_adr_flexfield_segment_code  VARCHAR2(30);
264118 l_adr_flex_value_set_id       NUMBER;
264119 l_adr_value_type_code         VARCHAR2(30);
264120 l_adr_value_combination_id    NUMBER;
264121 l_adr_value_segment_code      VARCHAR2(30);
264122 
264123 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
264124 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
264125 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
264126 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
264127 
264128 -- 4262811 Variables ------------------------------------------------------------------------------------------
264129 l_entered_amt_idx             NUMBER;
264130 l_accted_amt_idx              NUMBER;
264131 l_acc_rev_flag                VARCHAR2(1);
264132 l_accrual_line_num            NUMBER;
264133 l_tmp_amt                     NUMBER;
264134 l_acc_rev_natural_side_code   VARCHAR2(1);
264135 
264136 l_num_entries                 NUMBER;
264137 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
264138 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
264139 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
264140 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
264141 l_recog_line_1                NUMBER;
264142 l_recog_line_2                NUMBER;
264143 
264144 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
264145 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
264146 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
264147 
264148 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
264149 
264150 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
264151 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
264152 
264153 ---------------------------------------------------------------------------------------------------------------
264154 
264155 
264156 --
264157 -- bulk performance
264158 --
264159 l_balance_type_code           VARCHAR2(1);
264160 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
264161 l_log_module                  VARCHAR2(240);
264162 
264163 --
264164 -- Upgrade strategy
264165 --
264166 l_actual_upg_option           VARCHAR2(1);
264167 l_enc_upg_option           VARCHAR2(1);
264168 
264169 --
264170 BEGIN
264171 --
264172 IF g_log_enabled THEN
264173       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_474';
264174 END IF;
264175 --
264176 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
264177 
264178       trace
264179          (p_msg      => 'BEGIN of AcctLineType_474'
264180          ,p_level    => C_LEVEL_PROCEDURE
264181          ,p_module   => l_log_module);
264182 
264183 END IF;
264184 --
264185 l_component_type             := 'AMB_JLT';
264186 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
264187 l_component_type_code        := 'S';
264188 l_component_appl_id          :=  707;
264189 l_amb_context_code           := 'DEFAULT';
264190 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
264191 l_event_class_code           := 'PURCHASE_ORDER';
264192 l_event_type_code            := 'PO_DEL_INV';
264193 l_line_definition_owner_code := 'S';
264194 l_line_definition_code       := 'PI_PO_DEL_INV';
264195 --
264196 l_balance_type_code          := 'A';
264197 l_segment                     := NULL;
264198 l_ccid                        := NULL;
264199 l_adr_transaction_coa_id      := NULL;
264200 l_adr_accounting_coa_id       := NULL;
264201 l_adr_flexfield_segment_code  := NULL;
264202 l_adr_flex_value_set_id       := NULL;
264203 l_adr_value_type_code         := NULL;
264204 l_adr_value_combination_id    := NULL;
264205 l_adr_value_segment_code      := NULL;
264206 
264207 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
264208 l_bflow_class_code           := '';    -- 4219869 Business Flow
264209 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
264210 l_budgetary_control_flag     := 'N';
264211 
264212 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
264213 l_bflow_applied_to_amt       := NULL; -- 5132302
264214 l_entered_amt_idx            := NULL;          -- 4262811
264215 l_accted_amt_idx             := NULL;          -- 4262811
264216 l_acc_rev_flag               := NULL;          -- 4262811
264217 l_accrual_line_num           := NULL;          -- 4262811
264218 l_tmp_amt                    := NULL;          -- 4262811
264219 --
264220  
264221 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
264222     l_balance_type_code <> 'B' THEN
264223 IF NVL(p_source_97,9E125) =  6
264224  THEN 
264225 
264226    --
264227    XLA_AE_LINES_PKG.SetNewLine;
264228 
264229    p_balance_type_code          := l_balance_type_code;
264230    -- set the flag so later we will know whether the gain loss line needs to be created
264231    
264232    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
264233      p_actual_flag :='A';
264234    END IF;
264235 
264236    --
264237    -- bulk performance
264238    --
264239    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
264240                                       p_header_num   => 0); -- 4262811
264241    --
264242    -- set accounting line options
264243    --
264244    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
264245            p_natural_side_code          => 'D'
264246          , p_gain_or_loss_flag          => 'N'
264247          , p_gl_transfer_mode_code      => 'S'
264248          , p_acct_entry_type_code       => 'A'
264249          , p_switch_side_flag           => 'Y'
264250          , p_merge_duplicate_code       => 'N'
264251          );
264252    --
264253    l_acc_rev_natural_side_code := 'C';  -- 4262811
264254    -- 
264255    --
264256    -- set accounting line type info
264257    --
264258    xla_ae_lines_pkg.SetAcctLineType
264259       (p_component_type             => l_component_type
264260       ,p_event_type_code            => l_event_type_code
264261       ,p_line_definition_owner_code => l_line_definition_owner_code
264262       ,p_line_definition_code       => l_line_definition_code
264263       ,p_accounting_line_code       => l_component_code
264264       ,p_accounting_line_type_code  => l_component_type_code
264265       ,p_accounting_line_appl_id    => l_component_appl_id
264266       ,p_amb_context_code           => l_amb_context_code
264267       ,p_entity_code                => l_entity_code
264268       ,p_event_class_code           => l_event_class_code);
264269    --
264270    -- set accounting class
264271    --
264272    xla_ae_lines_pkg.SetAcctClass(
264273            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
264274          , p_ae_header_id           => l_ae_header_id
264275          );
264276 
264277    --
264278    -- set rounding class
264279    --
264280    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
264281                       'PURCHASE_PRICE_VARIANCE';
264282 
264283    --
264284    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
264285    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
264286    --
264287    -- bulk performance
264288    --
264289    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
264290 
264291    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
264292       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
264293 
264294    -- 4955764
264295    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
264296       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
264297 
264298    -- 4458381 Public Sector Enh
264299    
264300    --
264301    -- set accounting attributes for the line type
264302    --
264303    l_entered_amt_idx := 17;
264304    l_accted_amt_idx  := 22;
264305    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
264306    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
264307    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
264308    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
264309    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
264310    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
264311    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
264312    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
264313    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
264314    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
264315    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
264316    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
264317    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
264318    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
264319    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
264320    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
264321    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
264322    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
264323    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
264324    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
264325    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
264326    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
264327    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
264328    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
264329    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
264330    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
264331    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
264332    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
264333    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
264334    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
264335    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
264336    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
264337    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
264338    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
264339    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
264340    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
264341    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
264342    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
264343    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
264344    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
264345    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
264346    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
264347    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
264348    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
264349    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
264350    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
264351    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
264352    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
264353    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
264354 
264355    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
264356    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
264357 
264358    ---------------------------------------------------------------------------------------------------------------
264359    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
264360    ---------------------------------------------------------------------------------------------------------------
264361    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
264362 
264363    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
264364    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
264365 
264366    IF xla_accounting_cache_pkg.GetValueChar
264367          (p_source_code         => 'LEDGER_CATEGORY_CODE'
264368          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
264369    AND l_bflow_method_code = 'PRIOR_ENTRY'
264370 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
264371    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
264372          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
264373        )
264374    THEN
264375          xla_ae_lines_pkg.BflowUpgEntry
264376            (p_business_method_code    => l_bflow_method_code
264377            ,p_business_class_code     => l_bflow_class_code
264378            ,p_balance_type            => l_balance_type_code);
264379    ELSE
264380       NULL;
264381 -- No business flow processing for business flow method of NONE.
264382    END IF;
264383 
264384    --
264385    -- call analytical criteria
264386    --
264387    
264388    --
264389    -- call description
264390    --
264391    
264392 xla_ae_lines_pkg.SetLineDescription(
264393    p_ae_header_id => l_ae_header_id
264394   ,p_description  => Description_1 (
264395      p_application_id         => p_application_id
264396    , p_ae_header_id           => l_ae_header_id 
264397 , p_source_1 => p_source_1
264398 , p_source_2 => p_source_2
264399 , p_source_3 => p_source_3
264400 , p_source_4 => p_source_4
264401 , p_source_5 => p_source_5
264402    )
264403 );
264404 
264405 
264406    --
264407    -- call ADRs
264408    -- Bug 4922099
264409    --
264410    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
264411         (NVL(l_actual_upg_option, 'N') = 'O') OR
264412         (NVL(l_enc_upg_option, 'N') = 'O')
264413       )
264414    THEN
264415    NULL;
264416    --
264417    --
264418    
264419   l_ccid := AcctDerRule_32(
264420            p_application_id           => p_application_id
264421          , p_ae_header_id             => l_ae_header_id 
264422 , p_source_58 => p_source_58
264423          , x_transaction_coa_id       => l_adr_transaction_coa_id
264424          , x_accounting_coa_id        => l_adr_accounting_coa_id
264425          , x_value_type_code          => l_adr_value_type_code
264426          , p_side                     => 'NA'
264427    );
264428 
264429    xla_ae_lines_pkg.set_ccid(
264430     p_code_combination_id          => l_ccid
264431   , p_value_type_code              => l_adr_value_type_code
264432   , p_transaction_coa_id           => l_adr_transaction_coa_id
264433   , p_accounting_coa_id            => l_adr_accounting_coa_id
264434   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
264435   , p_adr_type_code                => 'S'
264436   , p_component_type               => l_component_type
264437   , p_component_code               => l_component_code
264438   , p_component_type_code          => l_component_type_code
264439   , p_component_appl_id            => l_component_appl_id
264440   , p_amb_context_code             => l_amb_context_code
264441   , p_side                         => 'NA'
264442   );
264443 
264444 
264445    --
264446    --
264447    END IF;
264448    --
264449    -- Bug 4922099
264450    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
264451           (NVL(l_enc_upg_option, 'N') = 'O')
264452         ) AND
264453         (l_bflow_method_code = 'PRIOR_ENTRY')
264454       )
264455    THEN
264456       IF
264457       --
264458       1 = 2
264459       --
264460       THEN
264461       xla_accounting_err_pkg.build_message
264462                                     (p_appli_s_name            => 'XLA'
264463                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
264464                                     ,p_token_1                 => 'LINE_NUMBER'
264465                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
264466                                     ,p_token_2                 => 'LINE_TYPE_NAME'
264467                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
264468                                                                              l_component_type
264469                                                                             ,l_component_code
264470                                                                             ,l_component_type_code
264471                                                                             ,l_component_appl_id
264472                                                                             ,l_amb_context_code
264473                                                                             ,l_entity_code
264474                                                                             ,l_event_class_code
264475                                                                            )
264476                                     ,p_token_3                 => 'OWNER'
264477                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
264478                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
264479                                                                           ,p_lookup_code    => l_component_type_code
264480                                                                          )
264481                                     ,p_token_4                 => 'PRODUCT_NAME'
264482                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
264483                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
264484                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
264485                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
264486                                     ,p_ae_header_id            =>  NULL
264487                                        );
264488 
264489         IF (C_LEVEL_ERROR>= g_log_level) THEN
264490                  trace
264491                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
264492                       ,p_level    => C_LEVEL_ERROR
264493                       ,p_module   => l_log_module);
264494         END IF;
264495       END IF;
264496    END IF;
264497    --
264498    --
264499    ------------------------------------------------------------------------------------------------
264500    -- 4219869 Business Flow
264501    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
264502    -- Prior Entry.  Currently, the following code is always generated.
264503    ------------------------------------------------------------------------------------------------
264504    XLA_AE_LINES_PKG.ValidateCurrentLine;
264505 
264506    ------------------------------------------------------------------------------------
264507    -- 4219869 Business Flow
264508    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
264509    ------------------------------------------------------------------------------------
264510    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
264511 
264512    ----------------------------------------------------------------------------------
264513    -- 4219869 Business Flow
264514    -- Update journal entry status -- Need to generate this within IF <condition>
264515    ----------------------------------------------------------------------------------
264516    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
264517          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
264518          ,p_balance_type_code => l_balance_type_code
264519          );
264520 
264521    -------------------------------------------------------------------------------------------
264522    -- 4262811 - Generate the Accrual Reversal lines
264523    -------------------------------------------------------------------------------------------
264524    BEGIN
264525       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
264526                               (g_array_event(p_event_id).array_value_num('header_index'));
264527       IF l_acc_rev_flag IS NULL THEN
264528          l_acc_rev_flag := 'N';
264529       END IF;
264530    EXCEPTION
264531       WHEN OTHERS THEN
264532          l_acc_rev_flag := 'N';
264533    END;
264534    --
264535    IF (l_acc_rev_flag = 'Y') THEN
264536 
264537        -- 4645092  ------------------------------------------------------------------------------
264538        -- To allow MPA report to determine if it should generate report process
264539        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
264540        ------------------------------------------------------------------------------------------
264541 
264542        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
264543        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
264544    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
264545    -- call ADRs
264546    -- Bug 4922099
264547    --
264548    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
264549         (NVL(l_actual_upg_option, 'N') = 'O') OR
264550         (NVL(l_enc_upg_option, 'N') = 'O')
264551       )
264552    THEN
264553    NULL;
264554    --
264555    --
264556    
264557   l_ccid := AcctDerRule_32(
264558            p_application_id           => p_application_id
264559          , p_ae_header_id             => l_ae_header_id 
264560 , p_source_58 => p_source_58
264561          , x_transaction_coa_id       => l_adr_transaction_coa_id
264562          , x_accounting_coa_id        => l_adr_accounting_coa_id
264563          , x_value_type_code          => l_adr_value_type_code
264564          , p_side                     => 'NA'
264565    );
264566 
264567    xla_ae_lines_pkg.set_ccid(
264568     p_code_combination_id          => l_ccid
264569   , p_value_type_code              => l_adr_value_type_code
264570   , p_transaction_coa_id           => l_adr_transaction_coa_id
264571   , p_accounting_coa_id            => l_adr_accounting_coa_id
264572   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
264573   , p_adr_type_code                => 'S'
264574   , p_component_type               => l_component_type
264575   , p_component_code               => l_component_code
264576   , p_component_type_code          => l_component_type_code
264577   , p_component_appl_id            => l_component_appl_id
264578   , p_amb_context_code             => l_amb_context_code
264579   , p_side                         => 'NA'
264580   );
264581 
264582 
264583    --
264584    --
264585    END IF;
264586 
264587        --
264588        -- Update the line information that should be overwritten
264589        --
264590        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
264591                                          p_header_num   => 1);
264592        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
264593 
264594        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
264595 
264596        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
264597           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
264598        END IF;
264599 
264600       --
264601       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
264602       --
264603       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
264604           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
264605       ELSE
264606           ---------------------------------------------------------------------------------------------------
264607           -- 4262811a Switch Sign
264608           ---------------------------------------------------------------------------------------------------
264609           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
264610           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
264611                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
264612           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
264613                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
264614           -- 5132302
264615           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
264616                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
264617 
264618       END IF;
264619 
264620       -- 4955764
264621       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
264622       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
264623 
264624 
264625       XLA_AE_LINES_PKG.ValidateCurrentLine;
264626       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
264627 
264628       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
264629                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
264630                ,p_balance_type_code => l_balance_type_code);
264631 
264632    END IF;
264633 
264634    -----------------------------------------------------------------------------------------
264635    -- 4262811 Multiperiod Accounting
264636    -----------------------------------------------------------------------------------------
264637      -- No MPA option is assigned.
264638 
264639 
264640 END IF;
264641 END IF;
264642 --
264643 
264644 --
264645 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
264646    trace
264647       (p_msg      => 'END of AcctLineType_474'
264648       ,p_level    => C_LEVEL_PROCEDURE
264649       ,p_module   => l_log_module);
264650 END IF;
264651 --
264652 EXCEPTION
264653   WHEN xla_exceptions_pkg.application_exception THEN
264654       RAISE;
264655   WHEN OTHERS THEN
264656        xla_exceptions_pkg.raise_message
264657            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_474');
264658 END AcctLineType_474;
264659 --
264660 
264661 ---------------------------------------
264662 --
264663 -- PRIVATE FUNCTION
264664 --         AcctLineType_475
264665 --
264666 ---------------------------------------
264667 PROCEDURE AcctLineType_475 (
264668   p_application_id        IN NUMBER
264669  ,p_event_id              IN NUMBER
264670  ,p_calculate_acctd_flag  IN VARCHAR2
264671  ,p_calculate_g_l_flag    IN VARCHAR2
264672  ,p_actual_flag           IN OUT VARCHAR2
264673  ,p_balance_type_code     OUT VARCHAR2
264674  ,p_gain_or_loss_ref      OUT VARCHAR2
264675  
264676 --TRANSACTION_ID
264677  , p_source_1            IN NUMBER
264678 --Item Concatenated Segments
264679  , p_source_2            IN VARCHAR2
264680 --Transaction Quantity
264681  , p_source_3            IN NUMBER
264682 --Transaction Unit of Measure Code
264683  , p_source_4            IN VARCHAR2
264684 --Inventory Transaction Type Description
264685  , p_source_5            IN VARCHAR2
264686 --Cost Management Default Account
264687  , p_source_11            IN NUMBER
264688 --Applied to Application ID
264689  , p_source_79            IN NUMBER
264690 --Applied to Distribution Link Type
264691  , p_source_80            IN VARCHAR2
264692 --Applied to Entity Code
264693  , p_source_81            IN VARCHAR2
264694 --Applied To Purchase Document Identifier
264695  , p_source_83            IN NUMBER
264696 --DISTRIBUTION_IDENTIFIER
264697  , p_source_84            IN NUMBER
264698 --Distribution Type
264699  , p_source_85            IN VARCHAR2
264700  , p_source_85_meaning    IN VARCHAR2
264701 --PO Budget Account
264702  , p_source_86            IN NUMBER
264703 --Encumbrance Reversal Amount Entered
264704  , p_source_87            IN NUMBER
264705 --Entered Currency Code
264706  , p_source_88            IN VARCHAR2
264707 --Transaction Encumbrance Reversal Amount
264708  , p_source_89            IN NUMBER
264709 --Entered Amount
264710  , p_source_91            IN NUMBER
264711 --Currency Conversion Date
264712  , p_source_92            IN DATE
264713 --Currency Conversion Rate
264714  , p_source_93            IN NUMBER
264715 --Currency Conversion Type
264716  , p_source_94            IN VARCHAR2
264717 --Accounted Amount
264718  , p_source_95            IN NUMBER
264719 --Purchasing Encumbrance Type Identifier
264720  , p_source_96            IN NUMBER
264721 --Accounting Line Type
264722  , p_source_97            IN NUMBER
264723 --Costing Encumbrance Upgrade Option
264724  , p_source_100            IN VARCHAR2
264725 --TXN_PO_DISTRIBUTION_ID
264726  , p_source_101            IN NUMBER
264727 )
264728 IS
264729 
264730 l_component_type              VARCHAR2(80);
264731 l_component_code              VARCHAR2(30);
264732 l_component_type_code         VARCHAR2(1);
264733 l_component_appl_id           INTEGER;
264734 l_amb_context_code            VARCHAR2(30);
264735 l_entity_code                 VARCHAR2(30);
264736 l_event_class_code            VARCHAR2(30);
264737 l_ae_header_id                NUMBER;
264738 l_event_type_code             VARCHAR2(30);
264739 l_line_definition_code        VARCHAR2(30);
264740 l_line_definition_owner_code  VARCHAR2(1);
264741 --
264742 -- adr variables
264743 l_segment                     VARCHAR2(30);
264744 l_ccid                        NUMBER;
264745 l_adr_transaction_coa_id      NUMBER;
264746 l_adr_accounting_coa_id       NUMBER;
264747 l_adr_flexfield_segment_code  VARCHAR2(30);
264748 l_adr_flex_value_set_id       NUMBER;
264749 l_adr_value_type_code         VARCHAR2(30);
264750 l_adr_value_combination_id    NUMBER;
264751 l_adr_value_segment_code      VARCHAR2(30);
264752 
264753 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
264754 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
264755 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
264756 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
264757 
264758 -- 4262811 Variables ------------------------------------------------------------------------------------------
264759 l_entered_amt_idx             NUMBER;
264760 l_accted_amt_idx              NUMBER;
264761 l_acc_rev_flag                VARCHAR2(1);
264762 l_accrual_line_num            NUMBER;
264763 l_tmp_amt                     NUMBER;
264764 l_acc_rev_natural_side_code   VARCHAR2(1);
264765 
264766 l_num_entries                 NUMBER;
264767 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
264768 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
264769 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
264770 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
264771 l_recog_line_1                NUMBER;
264772 l_recog_line_2                NUMBER;
264773 
264774 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
264775 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
264776 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
264777 
264778 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
264779 
264780 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
264781 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
264782 
264783 ---------------------------------------------------------------------------------------------------------------
264784 
264785 
264786 --
264787 -- bulk performance
264788 --
264789 l_balance_type_code           VARCHAR2(1);
264790 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
264791 l_log_module                  VARCHAR2(240);
264792 
264793 --
264794 -- Upgrade strategy
264795 --
264796 l_actual_upg_option           VARCHAR2(1);
264797 l_enc_upg_option           VARCHAR2(1);
264798 
264799 --
264800 BEGIN
264801 --
264802 IF g_log_enabled THEN
264803       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_475';
264804 END IF;
264805 --
264806 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
264807 
264808       trace
264809          (p_msg      => 'BEGIN of AcctLineType_475'
264810          ,p_level    => C_LEVEL_PROCEDURE
264811          ,p_module   => l_log_module);
264812 
264813 END IF;
264814 --
264815 l_component_type             := 'AMB_JLT';
264816 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
264817 l_component_type_code        := 'S';
264818 l_component_appl_id          :=  707;
264819 l_amb_context_code           := 'DEFAULT';
264820 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
264821 l_event_class_code           := 'PURCHASE_ORDER';
264822 l_event_type_code            := 'LOG_RET_RI_INV';
264823 l_line_definition_owner_code := 'S';
264824 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
264825 --
264826 l_balance_type_code          := 'A';
264827 l_segment                     := NULL;
264828 l_ccid                        := NULL;
264829 l_adr_transaction_coa_id      := NULL;
264830 l_adr_accounting_coa_id       := NULL;
264831 l_adr_flexfield_segment_code  := NULL;
264832 l_adr_flex_value_set_id       := NULL;
264833 l_adr_value_type_code         := NULL;
264834 l_adr_value_combination_id    := NULL;
264835 l_adr_value_segment_code      := NULL;
264836 
264837 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
264838 l_bflow_class_code           := '';    -- 4219869 Business Flow
264839 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
264840 l_budgetary_control_flag     := 'N';
264841 
264842 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
264843 l_bflow_applied_to_amt       := NULL; -- 5132302
264844 l_entered_amt_idx            := NULL;          -- 4262811
264845 l_accted_amt_idx             := NULL;          -- 4262811
264846 l_acc_rev_flag               := NULL;          -- 4262811
264847 l_accrual_line_num           := NULL;          -- 4262811
264848 l_tmp_amt                    := NULL;          -- 4262811
264849 --
264850  
264851 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
264852     l_balance_type_code <> 'B' THEN
264853 IF NVL(p_source_97,9E125) =  6
264854  THEN 
264855 
264856    --
264857    XLA_AE_LINES_PKG.SetNewLine;
264858 
264859    p_balance_type_code          := l_balance_type_code;
264860    -- set the flag so later we will know whether the gain loss line needs to be created
264861    
264862    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
264863      p_actual_flag :='A';
264864    END IF;
264865 
264866    --
264867    -- bulk performance
264868    --
264869    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
264870                                       p_header_num   => 0); -- 4262811
264871    --
264872    -- set accounting line options
264873    --
264874    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
264875            p_natural_side_code          => 'D'
264876          , p_gain_or_loss_flag          => 'N'
264877          , p_gl_transfer_mode_code      => 'S'
264878          , p_acct_entry_type_code       => 'A'
264879          , p_switch_side_flag           => 'Y'
264880          , p_merge_duplicate_code       => 'N'
264881          );
264882    --
264883    l_acc_rev_natural_side_code := 'C';  -- 4262811
264884    -- 
264885    --
264886    -- set accounting line type info
264887    --
264888    xla_ae_lines_pkg.SetAcctLineType
264889       (p_component_type             => l_component_type
264890       ,p_event_type_code            => l_event_type_code
264891       ,p_line_definition_owner_code => l_line_definition_owner_code
264892       ,p_line_definition_code       => l_line_definition_code
264893       ,p_accounting_line_code       => l_component_code
264894       ,p_accounting_line_type_code  => l_component_type_code
264895       ,p_accounting_line_appl_id    => l_component_appl_id
264896       ,p_amb_context_code           => l_amb_context_code
264897       ,p_entity_code                => l_entity_code
264898       ,p_event_class_code           => l_event_class_code);
264899    --
264900    -- set accounting class
264901    --
264902    xla_ae_lines_pkg.SetAcctClass(
264903            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
264904          , p_ae_header_id           => l_ae_header_id
264905          );
264906 
264907    --
264908    -- set rounding class
264909    --
264910    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
264911                       'PURCHASE_PRICE_VARIANCE';
264912 
264913    --
264914    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
264915    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
264916    --
264917    -- bulk performance
264918    --
264919    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
264920 
264921    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
264922       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
264923 
264924    -- 4955764
264925    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
264926       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
264927 
264928    -- 4458381 Public Sector Enh
264929    
264930    --
264931    -- set accounting attributes for the line type
264932    --
264933    l_entered_amt_idx := 17;
264934    l_accted_amt_idx  := 22;
264935    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
264936    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
264937    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
264938    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
264939    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
264940    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
264941    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
264942    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
264943    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
264944    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
264945    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
264946    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
264947    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
264948    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
264949    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
264950    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
264951    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
264952    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
264953    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
264954    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
264955    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
264956    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
264957    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
264958    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
264959    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
264960    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
264961    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
264962    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
264963    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
264964    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
264965    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
264966    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
264967    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
264968    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
264969    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
264970    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
264971    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
264972    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
264973    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
264974    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
264975    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
264976    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
264977    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
264978    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
264979    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
264980    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
264981    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
264982    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
264983    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
264984 
264985    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
264986    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
264987 
264988    ---------------------------------------------------------------------------------------------------------------
264989    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
264990    ---------------------------------------------------------------------------------------------------------------
264991    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
264992 
264993    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
264994    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
264995 
264996    IF xla_accounting_cache_pkg.GetValueChar
264997          (p_source_code         => 'LEDGER_CATEGORY_CODE'
264998          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
264999    AND l_bflow_method_code = 'PRIOR_ENTRY'
265000 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
265001    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
265002          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
265003        )
265004    THEN
265005          xla_ae_lines_pkg.BflowUpgEntry
265006            (p_business_method_code    => l_bflow_method_code
265007            ,p_business_class_code     => l_bflow_class_code
265008            ,p_balance_type            => l_balance_type_code);
265009    ELSE
265010       NULL;
265011 -- No business flow processing for business flow method of NONE.
265012    END IF;
265013 
265014    --
265015    -- call analytical criteria
265016    --
265017    
265018    --
265019    -- call description
265020    --
265021    
265022 xla_ae_lines_pkg.SetLineDescription(
265023    p_ae_header_id => l_ae_header_id
265024   ,p_description  => Description_1 (
265025      p_application_id         => p_application_id
265026    , p_ae_header_id           => l_ae_header_id 
265027 , p_source_1 => p_source_1
265028 , p_source_2 => p_source_2
265029 , p_source_3 => p_source_3
265030 , p_source_4 => p_source_4
265031 , p_source_5 => p_source_5
265032    )
265033 );
265034 
265035 
265036    --
265037    -- call ADRs
265038    -- Bug 4922099
265039    --
265040    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
265041         (NVL(l_actual_upg_option, 'N') = 'O') OR
265042         (NVL(l_enc_upg_option, 'N') = 'O')
265043       )
265044    THEN
265045    NULL;
265046    --
265047    --
265048    
265049   l_ccid := AcctDerRule_6(
265050            p_application_id           => p_application_id
265051          , p_ae_header_id             => l_ae_header_id 
265052 , p_source_11 => p_source_11
265053          , x_transaction_coa_id       => l_adr_transaction_coa_id
265054          , x_accounting_coa_id        => l_adr_accounting_coa_id
265055          , x_value_type_code          => l_adr_value_type_code
265056          , p_side                     => 'NA'
265057    );
265058 
265059    xla_ae_lines_pkg.set_ccid(
265060     p_code_combination_id          => l_ccid
265061   , p_value_type_code              => l_adr_value_type_code
265062   , p_transaction_coa_id           => l_adr_transaction_coa_id
265063   , p_accounting_coa_id            => l_adr_accounting_coa_id
265064   , p_adr_code                     => 'CST_DEFAULT'
265065   , p_adr_type_code                => 'S'
265066   , p_component_type               => l_component_type
265067   , p_component_code               => l_component_code
265068   , p_component_type_code          => l_component_type_code
265069   , p_component_appl_id            => l_component_appl_id
265070   , p_amb_context_code             => l_amb_context_code
265071   , p_side                         => 'NA'
265072   );
265073 
265074 
265075    --
265076    --
265077    END IF;
265078    --
265079    -- Bug 4922099
265080    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
265081           (NVL(l_enc_upg_option, 'N') = 'O')
265082         ) AND
265083         (l_bflow_method_code = 'PRIOR_ENTRY')
265084       )
265085    THEN
265086       IF
265087       --
265088       1 = 2
265089       --
265090       THEN
265091       xla_accounting_err_pkg.build_message
265092                                     (p_appli_s_name            => 'XLA'
265093                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
265094                                     ,p_token_1                 => 'LINE_NUMBER'
265095                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
265096                                     ,p_token_2                 => 'LINE_TYPE_NAME'
265097                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
265098                                                                              l_component_type
265099                                                                             ,l_component_code
265100                                                                             ,l_component_type_code
265101                                                                             ,l_component_appl_id
265102                                                                             ,l_amb_context_code
265103                                                                             ,l_entity_code
265104                                                                             ,l_event_class_code
265105                                                                            )
265106                                     ,p_token_3                 => 'OWNER'
265107                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
265108                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
265109                                                                           ,p_lookup_code    => l_component_type_code
265110                                                                          )
265111                                     ,p_token_4                 => 'PRODUCT_NAME'
265112                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
265113                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
265114                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
265115                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
265116                                     ,p_ae_header_id            =>  NULL
265117                                        );
265118 
265119         IF (C_LEVEL_ERROR>= g_log_level) THEN
265120                  trace
265121                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
265122                       ,p_level    => C_LEVEL_ERROR
265123                       ,p_module   => l_log_module);
265124         END IF;
265125       END IF;
265126    END IF;
265127    --
265128    --
265129    ------------------------------------------------------------------------------------------------
265130    -- 4219869 Business Flow
265131    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
265132    -- Prior Entry.  Currently, the following code is always generated.
265133    ------------------------------------------------------------------------------------------------
265134    XLA_AE_LINES_PKG.ValidateCurrentLine;
265135 
265136    ------------------------------------------------------------------------------------
265137    -- 4219869 Business Flow
265138    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
265139    ------------------------------------------------------------------------------------
265140    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
265141 
265142    ----------------------------------------------------------------------------------
265143    -- 4219869 Business Flow
265144    -- Update journal entry status -- Need to generate this within IF <condition>
265145    ----------------------------------------------------------------------------------
265146    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
265147          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
265148          ,p_balance_type_code => l_balance_type_code
265149          );
265150 
265151    -------------------------------------------------------------------------------------------
265152    -- 4262811 - Generate the Accrual Reversal lines
265153    -------------------------------------------------------------------------------------------
265154    BEGIN
265155       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
265156                               (g_array_event(p_event_id).array_value_num('header_index'));
265157       IF l_acc_rev_flag IS NULL THEN
265158          l_acc_rev_flag := 'N';
265159       END IF;
265160    EXCEPTION
265161       WHEN OTHERS THEN
265162          l_acc_rev_flag := 'N';
265163    END;
265164    --
265165    IF (l_acc_rev_flag = 'Y') THEN
265166 
265167        -- 4645092  ------------------------------------------------------------------------------
265168        -- To allow MPA report to determine if it should generate report process
265169        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
265170        ------------------------------------------------------------------------------------------
265171 
265172        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
265173        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
265174    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
265175    -- call ADRs
265176    -- Bug 4922099
265177    --
265178    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
265179         (NVL(l_actual_upg_option, 'N') = 'O') OR
265180         (NVL(l_enc_upg_option, 'N') = 'O')
265181       )
265182    THEN
265183    NULL;
265184    --
265185    --
265186    
265187   l_ccid := AcctDerRule_6(
265188            p_application_id           => p_application_id
265189          , p_ae_header_id             => l_ae_header_id 
265190 , p_source_11 => p_source_11
265191          , x_transaction_coa_id       => l_adr_transaction_coa_id
265192          , x_accounting_coa_id        => l_adr_accounting_coa_id
265193          , x_value_type_code          => l_adr_value_type_code
265194          , p_side                     => 'NA'
265195    );
265196 
265197    xla_ae_lines_pkg.set_ccid(
265198     p_code_combination_id          => l_ccid
265199   , p_value_type_code              => l_adr_value_type_code
265200   , p_transaction_coa_id           => l_adr_transaction_coa_id
265201   , p_accounting_coa_id            => l_adr_accounting_coa_id
265202   , p_adr_code                     => 'CST_DEFAULT'
265203   , p_adr_type_code                => 'S'
265204   , p_component_type               => l_component_type
265205   , p_component_code               => l_component_code
265206   , p_component_type_code          => l_component_type_code
265207   , p_component_appl_id            => l_component_appl_id
265208   , p_amb_context_code             => l_amb_context_code
265209   , p_side                         => 'NA'
265210   );
265211 
265212 
265213    --
265214    --
265215    END IF;
265216 
265217        --
265218        -- Update the line information that should be overwritten
265219        --
265220        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
265221                                          p_header_num   => 1);
265222        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
265223 
265224        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
265225 
265226        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
265227           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
265228        END IF;
265229 
265230       --
265231       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
265232       --
265233       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
265234           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
265235       ELSE
265236           ---------------------------------------------------------------------------------------------------
265237           -- 4262811a Switch Sign
265238           ---------------------------------------------------------------------------------------------------
265239           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
265240           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
265241                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
265242           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
265243                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
265244           -- 5132302
265245           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
265246                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
265247 
265248       END IF;
265249 
265250       -- 4955764
265251       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
265252       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
265253 
265254 
265255       XLA_AE_LINES_PKG.ValidateCurrentLine;
265256       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
265257 
265258       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
265259                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
265260                ,p_balance_type_code => l_balance_type_code);
265261 
265262    END IF;
265263 
265264    -----------------------------------------------------------------------------------------
265265    -- 4262811 Multiperiod Accounting
265266    -----------------------------------------------------------------------------------------
265267      -- No MPA option is assigned.
265268 
265269 
265270 END IF;
265271 END IF;
265272 --
265273 
265274 --
265275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
265276    trace
265277       (p_msg      => 'END of AcctLineType_475'
265278       ,p_level    => C_LEVEL_PROCEDURE
265279       ,p_module   => l_log_module);
265280 END IF;
265281 --
265282 EXCEPTION
265283   WHEN xla_exceptions_pkg.application_exception THEN
265284       RAISE;
265285   WHEN OTHERS THEN
265286        xla_exceptions_pkg.raise_message
265287            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_475');
265288 END AcctLineType_475;
265289 --
265290 
265291 ---------------------------------------
265292 --
265293 -- PRIVATE FUNCTION
265294 --         AcctLineType_476
265295 --
265296 ---------------------------------------
265297 PROCEDURE AcctLineType_476 (
265298   p_application_id        IN NUMBER
265299  ,p_event_id              IN NUMBER
265300  ,p_calculate_acctd_flag  IN VARCHAR2
265301  ,p_calculate_g_l_flag    IN VARCHAR2
265302  ,p_actual_flag           IN OUT VARCHAR2
265303  ,p_balance_type_code     OUT VARCHAR2
265304  ,p_gain_or_loss_ref      OUT VARCHAR2
265305  
265306 --TRANSACTION_ID
265307  , p_source_1            IN NUMBER
265308 --Item Concatenated Segments
265309  , p_source_2            IN VARCHAR2
265310 --Transaction Quantity
265311  , p_source_3            IN NUMBER
265312 --Transaction Unit of Measure Code
265313  , p_source_4            IN VARCHAR2
265314 --Inventory Transaction Type Description
265315  , p_source_5            IN VARCHAR2
265316 --Cost Management Default Account
265317  , p_source_11            IN NUMBER
265318 --Applied to Application ID
265319  , p_source_79            IN NUMBER
265320 --Applied to Distribution Link Type
265321  , p_source_80            IN VARCHAR2
265322 --Applied to Entity Code
265323  , p_source_81            IN VARCHAR2
265324 --Applied To Purchase Document Identifier
265325  , p_source_83            IN NUMBER
265326 --DISTRIBUTION_IDENTIFIER
265327  , p_source_84            IN NUMBER
265328 --Distribution Type
265329  , p_source_85            IN VARCHAR2
265330  , p_source_85_meaning    IN VARCHAR2
265331 --PO Budget Account
265332  , p_source_86            IN NUMBER
265333 --Encumbrance Reversal Amount Entered
265334  , p_source_87            IN NUMBER
265335 --Entered Currency Code
265336  , p_source_88            IN VARCHAR2
265337 --Transaction Encumbrance Reversal Amount
265338  , p_source_89            IN NUMBER
265339 --Entered Amount
265340  , p_source_91            IN NUMBER
265341 --Currency Conversion Date
265342  , p_source_92            IN DATE
265343 --Currency Conversion Rate
265344  , p_source_93            IN NUMBER
265345 --Currency Conversion Type
265346  , p_source_94            IN VARCHAR2
265347 --Accounted Amount
265348  , p_source_95            IN NUMBER
265349 --Purchasing Encumbrance Type Identifier
265350  , p_source_96            IN NUMBER
265351 --Accounting Line Type
265352  , p_source_97            IN NUMBER
265353 --Costing Encumbrance Upgrade Option
265354  , p_source_100            IN VARCHAR2
265355 --TXN_PO_DISTRIBUTION_ID
265356  , p_source_101            IN NUMBER
265357 )
265358 IS
265359 
265360 l_component_type              VARCHAR2(80);
265361 l_component_code              VARCHAR2(30);
265362 l_component_type_code         VARCHAR2(1);
265363 l_component_appl_id           INTEGER;
265364 l_amb_context_code            VARCHAR2(30);
265365 l_entity_code                 VARCHAR2(30);
265366 l_event_class_code            VARCHAR2(30);
265367 l_ae_header_id                NUMBER;
265368 l_event_type_code             VARCHAR2(30);
265369 l_line_definition_code        VARCHAR2(30);
265370 l_line_definition_owner_code  VARCHAR2(1);
265371 --
265372 -- adr variables
265373 l_segment                     VARCHAR2(30);
265374 l_ccid                        NUMBER;
265375 l_adr_transaction_coa_id      NUMBER;
265376 l_adr_accounting_coa_id       NUMBER;
265377 l_adr_flexfield_segment_code  VARCHAR2(30);
265378 l_adr_flex_value_set_id       NUMBER;
265379 l_adr_value_type_code         VARCHAR2(30);
265380 l_adr_value_combination_id    NUMBER;
265381 l_adr_value_segment_code      VARCHAR2(30);
265382 
265383 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
265384 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
265385 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
265386 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
265387 
265388 -- 4262811 Variables ------------------------------------------------------------------------------------------
265389 l_entered_amt_idx             NUMBER;
265390 l_accted_amt_idx              NUMBER;
265391 l_acc_rev_flag                VARCHAR2(1);
265392 l_accrual_line_num            NUMBER;
265393 l_tmp_amt                     NUMBER;
265394 l_acc_rev_natural_side_code   VARCHAR2(1);
265395 
265396 l_num_entries                 NUMBER;
265397 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
265398 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
265399 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
265400 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
265401 l_recog_line_1                NUMBER;
265402 l_recog_line_2                NUMBER;
265403 
265404 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
265405 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
265406 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
265407 
265408 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
265409 
265410 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
265411 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
265412 
265413 ---------------------------------------------------------------------------------------------------------------
265414 
265415 
265416 --
265417 -- bulk performance
265418 --
265419 l_balance_type_code           VARCHAR2(1);
265420 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
265421 l_log_module                  VARCHAR2(240);
265422 
265423 --
265424 -- Upgrade strategy
265425 --
265426 l_actual_upg_option           VARCHAR2(1);
265427 l_enc_upg_option           VARCHAR2(1);
265428 
265429 --
265430 BEGIN
265431 --
265432 IF g_log_enabled THEN
265433       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_476';
265434 END IF;
265435 --
265436 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
265437 
265438       trace
265439          (p_msg      => 'BEGIN of AcctLineType_476'
265440          ,p_level    => C_LEVEL_PROCEDURE
265441          ,p_module   => l_log_module);
265442 
265443 END IF;
265444 --
265445 l_component_type             := 'AMB_JLT';
265446 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
265447 l_component_type_code        := 'S';
265448 l_component_appl_id          :=  707;
265449 l_amb_context_code           := 'DEFAULT';
265450 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
265451 l_event_class_code           := 'PURCHASE_ORDER';
265452 l_event_type_code            := 'LOG_PO_DEL_INV';
265453 l_line_definition_owner_code := 'S';
265454 l_line_definition_code       := 'PI_LOG_DEL_INV';
265455 --
265456 l_balance_type_code          := 'A';
265457 l_segment                     := NULL;
265458 l_ccid                        := NULL;
265459 l_adr_transaction_coa_id      := NULL;
265460 l_adr_accounting_coa_id       := NULL;
265461 l_adr_flexfield_segment_code  := NULL;
265462 l_adr_flex_value_set_id       := NULL;
265463 l_adr_value_type_code         := NULL;
265464 l_adr_value_combination_id    := NULL;
265465 l_adr_value_segment_code      := NULL;
265466 
265467 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
265468 l_bflow_class_code           := '';    -- 4219869 Business Flow
265469 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
265470 l_budgetary_control_flag     := 'N';
265471 
265472 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
265473 l_bflow_applied_to_amt       := NULL; -- 5132302
265474 l_entered_amt_idx            := NULL;          -- 4262811
265475 l_accted_amt_idx             := NULL;          -- 4262811
265476 l_acc_rev_flag               := NULL;          -- 4262811
265477 l_accrual_line_num           := NULL;          -- 4262811
265478 l_tmp_amt                    := NULL;          -- 4262811
265479 --
265480  
265481 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
265482     l_balance_type_code <> 'B' THEN
265483 IF NVL(p_source_97,9E125) =  6
265484  THEN 
265485 
265486    --
265487    XLA_AE_LINES_PKG.SetNewLine;
265488 
265489    p_balance_type_code          := l_balance_type_code;
265490    -- set the flag so later we will know whether the gain loss line needs to be created
265491    
265492    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
265493      p_actual_flag :='A';
265494    END IF;
265495 
265496    --
265497    -- bulk performance
265498    --
265499    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
265500                                       p_header_num   => 0); -- 4262811
265501    --
265502    -- set accounting line options
265503    --
265504    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
265505            p_natural_side_code          => 'D'
265506          , p_gain_or_loss_flag          => 'N'
265507          , p_gl_transfer_mode_code      => 'S'
265508          , p_acct_entry_type_code       => 'A'
265509          , p_switch_side_flag           => 'Y'
265510          , p_merge_duplicate_code       => 'N'
265511          );
265512    --
265513    l_acc_rev_natural_side_code := 'C';  -- 4262811
265514    -- 
265515    --
265516    -- set accounting line type info
265517    --
265518    xla_ae_lines_pkg.SetAcctLineType
265519       (p_component_type             => l_component_type
265520       ,p_event_type_code            => l_event_type_code
265521       ,p_line_definition_owner_code => l_line_definition_owner_code
265522       ,p_line_definition_code       => l_line_definition_code
265523       ,p_accounting_line_code       => l_component_code
265524       ,p_accounting_line_type_code  => l_component_type_code
265525       ,p_accounting_line_appl_id    => l_component_appl_id
265526       ,p_amb_context_code           => l_amb_context_code
265527       ,p_entity_code                => l_entity_code
265528       ,p_event_class_code           => l_event_class_code);
265529    --
265530    -- set accounting class
265531    --
265532    xla_ae_lines_pkg.SetAcctClass(
265533            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
265534          , p_ae_header_id           => l_ae_header_id
265535          );
265536 
265537    --
265538    -- set rounding class
265539    --
265540    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
265541                       'PURCHASE_PRICE_VARIANCE';
265542 
265543    --
265544    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
265545    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
265546    --
265547    -- bulk performance
265548    --
265549    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
265550 
265551    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
265552       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
265553 
265554    -- 4955764
265555    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
265556       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
265557 
265558    -- 4458381 Public Sector Enh
265559    
265560    --
265561    -- set accounting attributes for the line type
265562    --
265563    l_entered_amt_idx := 17;
265564    l_accted_amt_idx  := 22;
265565    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
265566    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
265567    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
265568    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
265569    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
265570    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
265571    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
265572    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
265573    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
265574    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
265575    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
265576    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
265577    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
265578    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
265579    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
265580    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
265581    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
265582    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
265583    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
265584    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
265585    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
265586    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
265587    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
265588    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
265589    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
265590    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
265591    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
265592    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
265593    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
265594    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
265595    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
265596    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
265597    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
265598    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
265599    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
265600    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
265601    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
265602    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
265603    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
265604    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
265605    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
265606    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
265607    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
265608    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
265609    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
265610    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
265611    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
265612    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
265613    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
265614 
265615    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
265616    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
265617 
265618    ---------------------------------------------------------------------------------------------------------------
265619    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
265620    ---------------------------------------------------------------------------------------------------------------
265621    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
265622 
265623    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
265624    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
265625 
265626    IF xla_accounting_cache_pkg.GetValueChar
265627          (p_source_code         => 'LEDGER_CATEGORY_CODE'
265628          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
265629    AND l_bflow_method_code = 'PRIOR_ENTRY'
265630 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
265631    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
265632          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
265633        )
265634    THEN
265635          xla_ae_lines_pkg.BflowUpgEntry
265636            (p_business_method_code    => l_bflow_method_code
265637            ,p_business_class_code     => l_bflow_class_code
265638            ,p_balance_type            => l_balance_type_code);
265639    ELSE
265640       NULL;
265641 -- No business flow processing for business flow method of NONE.
265642    END IF;
265643 
265644    --
265645    -- call analytical criteria
265646    --
265647    
265648    --
265649    -- call description
265650    --
265651    
265652 xla_ae_lines_pkg.SetLineDescription(
265653    p_ae_header_id => l_ae_header_id
265654   ,p_description  => Description_1 (
265655      p_application_id         => p_application_id
265656    , p_ae_header_id           => l_ae_header_id 
265657 , p_source_1 => p_source_1
265658 , p_source_2 => p_source_2
265659 , p_source_3 => p_source_3
265660 , p_source_4 => p_source_4
265661 , p_source_5 => p_source_5
265662    )
265663 );
265664 
265665 
265666    --
265667    -- call ADRs
265668    -- Bug 4922099
265669    --
265670    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
265671         (NVL(l_actual_upg_option, 'N') = 'O') OR
265672         (NVL(l_enc_upg_option, 'N') = 'O')
265673       )
265674    THEN
265675    NULL;
265676    --
265677    --
265678    
265679   l_ccid := AcctDerRule_6(
265680            p_application_id           => p_application_id
265681          , p_ae_header_id             => l_ae_header_id 
265682 , p_source_11 => p_source_11
265683          , x_transaction_coa_id       => l_adr_transaction_coa_id
265684          , x_accounting_coa_id        => l_adr_accounting_coa_id
265685          , x_value_type_code          => l_adr_value_type_code
265686          , p_side                     => 'NA'
265687    );
265688 
265689    xla_ae_lines_pkg.set_ccid(
265690     p_code_combination_id          => l_ccid
265691   , p_value_type_code              => l_adr_value_type_code
265692   , p_transaction_coa_id           => l_adr_transaction_coa_id
265693   , p_accounting_coa_id            => l_adr_accounting_coa_id
265694   , p_adr_code                     => 'CST_DEFAULT'
265695   , p_adr_type_code                => 'S'
265696   , p_component_type               => l_component_type
265697   , p_component_code               => l_component_code
265698   , p_component_type_code          => l_component_type_code
265699   , p_component_appl_id            => l_component_appl_id
265700   , p_amb_context_code             => l_amb_context_code
265701   , p_side                         => 'NA'
265702   );
265703 
265704 
265705    --
265706    --
265707    END IF;
265708    --
265709    -- Bug 4922099
265710    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
265711           (NVL(l_enc_upg_option, 'N') = 'O')
265712         ) AND
265713         (l_bflow_method_code = 'PRIOR_ENTRY')
265714       )
265715    THEN
265716       IF
265717       --
265718       1 = 2
265719       --
265720       THEN
265721       xla_accounting_err_pkg.build_message
265722                                     (p_appli_s_name            => 'XLA'
265723                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
265724                                     ,p_token_1                 => 'LINE_NUMBER'
265725                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
265726                                     ,p_token_2                 => 'LINE_TYPE_NAME'
265727                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
265728                                                                              l_component_type
265729                                                                             ,l_component_code
265730                                                                             ,l_component_type_code
265731                                                                             ,l_component_appl_id
265732                                                                             ,l_amb_context_code
265733                                                                             ,l_entity_code
265734                                                                             ,l_event_class_code
265735                                                                            )
265736                                     ,p_token_3                 => 'OWNER'
265737                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
265738                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
265739                                                                           ,p_lookup_code    => l_component_type_code
265740                                                                          )
265741                                     ,p_token_4                 => 'PRODUCT_NAME'
265742                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
265743                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
265744                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
265745                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
265746                                     ,p_ae_header_id            =>  NULL
265747                                        );
265748 
265749         IF (C_LEVEL_ERROR>= g_log_level) THEN
265750                  trace
265751                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
265752                       ,p_level    => C_LEVEL_ERROR
265753                       ,p_module   => l_log_module);
265754         END IF;
265755       END IF;
265756    END IF;
265757    --
265758    --
265759    ------------------------------------------------------------------------------------------------
265760    -- 4219869 Business Flow
265761    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
265762    -- Prior Entry.  Currently, the following code is always generated.
265763    ------------------------------------------------------------------------------------------------
265764    XLA_AE_LINES_PKG.ValidateCurrentLine;
265765 
265766    ------------------------------------------------------------------------------------
265767    -- 4219869 Business Flow
265768    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
265769    ------------------------------------------------------------------------------------
265770    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
265771 
265772    ----------------------------------------------------------------------------------
265773    -- 4219869 Business Flow
265774    -- Update journal entry status -- Need to generate this within IF <condition>
265775    ----------------------------------------------------------------------------------
265776    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
265777          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
265778          ,p_balance_type_code => l_balance_type_code
265779          );
265780 
265781    -------------------------------------------------------------------------------------------
265782    -- 4262811 - Generate the Accrual Reversal lines
265783    -------------------------------------------------------------------------------------------
265784    BEGIN
265785       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
265786                               (g_array_event(p_event_id).array_value_num('header_index'));
265787       IF l_acc_rev_flag IS NULL THEN
265788          l_acc_rev_flag := 'N';
265789       END IF;
265790    EXCEPTION
265791       WHEN OTHERS THEN
265792          l_acc_rev_flag := 'N';
265793    END;
265794    --
265795    IF (l_acc_rev_flag = 'Y') THEN
265796 
265797        -- 4645092  ------------------------------------------------------------------------------
265798        -- To allow MPA report to determine if it should generate report process
265799        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
265800        ------------------------------------------------------------------------------------------
265801 
265802        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
265803        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
265804    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
265805    -- call ADRs
265806    -- Bug 4922099
265807    --
265808    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
265809         (NVL(l_actual_upg_option, 'N') = 'O') OR
265810         (NVL(l_enc_upg_option, 'N') = 'O')
265811       )
265812    THEN
265813    NULL;
265814    --
265815    --
265816    
265817   l_ccid := AcctDerRule_6(
265818            p_application_id           => p_application_id
265819          , p_ae_header_id             => l_ae_header_id 
265820 , p_source_11 => p_source_11
265821          , x_transaction_coa_id       => l_adr_transaction_coa_id
265822          , x_accounting_coa_id        => l_adr_accounting_coa_id
265823          , x_value_type_code          => l_adr_value_type_code
265824          , p_side                     => 'NA'
265825    );
265826 
265827    xla_ae_lines_pkg.set_ccid(
265828     p_code_combination_id          => l_ccid
265829   , p_value_type_code              => l_adr_value_type_code
265830   , p_transaction_coa_id           => l_adr_transaction_coa_id
265831   , p_accounting_coa_id            => l_adr_accounting_coa_id
265832   , p_adr_code                     => 'CST_DEFAULT'
265833   , p_adr_type_code                => 'S'
265834   , p_component_type               => l_component_type
265835   , p_component_code               => l_component_code
265836   , p_component_type_code          => l_component_type_code
265837   , p_component_appl_id            => l_component_appl_id
265838   , p_amb_context_code             => l_amb_context_code
265839   , p_side                         => 'NA'
265840   );
265841 
265842 
265843    --
265844    --
265845    END IF;
265846 
265847        --
265848        -- Update the line information that should be overwritten
265849        --
265850        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
265851                                          p_header_num   => 1);
265852        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
265853 
265854        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
265855 
265856        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
265857           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
265858        END IF;
265859 
265860       --
265861       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
265862       --
265863       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
265864           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
265865       ELSE
265866           ---------------------------------------------------------------------------------------------------
265867           -- 4262811a Switch Sign
265868           ---------------------------------------------------------------------------------------------------
265869           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
265870           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
265871                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
265872           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
265873                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
265874           -- 5132302
265875           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
265876                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
265877 
265878       END IF;
265879 
265880       -- 4955764
265881       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
265882       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
265883 
265884 
265885       XLA_AE_LINES_PKG.ValidateCurrentLine;
265886       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
265887 
265888       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
265889                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
265890                ,p_balance_type_code => l_balance_type_code);
265891 
265892    END IF;
265893 
265894    -----------------------------------------------------------------------------------------
265895    -- 4262811 Multiperiod Accounting
265896    -----------------------------------------------------------------------------------------
265897      -- No MPA option is assigned.
265898 
265899 
265900 END IF;
265901 END IF;
265902 --
265903 
265904 --
265905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
265906    trace
265907       (p_msg      => 'END of AcctLineType_476'
265908       ,p_level    => C_LEVEL_PROCEDURE
265909       ,p_module   => l_log_module);
265910 END IF;
265911 --
265912 EXCEPTION
265913   WHEN xla_exceptions_pkg.application_exception THEN
265914       RAISE;
265915   WHEN OTHERS THEN
265916        xla_exceptions_pkg.raise_message
265917            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_476');
265918 END AcctLineType_476;
265919 --
265920 
265921 ---------------------------------------
265922 --
265923 -- PRIVATE FUNCTION
265924 --         AcctLineType_477
265925 --
265926 ---------------------------------------
265927 PROCEDURE AcctLineType_477 (
265928   p_application_id        IN NUMBER
265929  ,p_event_id              IN NUMBER
265930  ,p_calculate_acctd_flag  IN VARCHAR2
265931  ,p_calculate_g_l_flag    IN VARCHAR2
265932  ,p_actual_flag           IN OUT VARCHAR2
265933  ,p_balance_type_code     OUT VARCHAR2
265934  ,p_gain_or_loss_ref      OUT VARCHAR2
265935  
265936 --TRANSACTION_ID
265937  , p_source_1            IN NUMBER
265938 --Item Concatenated Segments
265939  , p_source_2            IN VARCHAR2
265940 --Transaction Quantity
265941  , p_source_3            IN NUMBER
265942 --Transaction Unit of Measure Code
265943  , p_source_4            IN VARCHAR2
265944 --Inventory Transaction Type Description
265945  , p_source_5            IN VARCHAR2
265946 --Cost Management Default Account
265947  , p_source_11            IN NUMBER
265948 --Applied to Application ID
265949  , p_source_79            IN NUMBER
265950 --Applied to Distribution Link Type
265951  , p_source_80            IN VARCHAR2
265952 --Applied to Entity Code
265953  , p_source_81            IN VARCHAR2
265954 --Applied To Purchase Document Identifier
265955  , p_source_83            IN NUMBER
265956 --DISTRIBUTION_IDENTIFIER
265957  , p_source_84            IN NUMBER
265958 --Distribution Type
265959  , p_source_85            IN VARCHAR2
265960  , p_source_85_meaning    IN VARCHAR2
265961 --PO Budget Account
265962  , p_source_86            IN NUMBER
265963 --Encumbrance Reversal Amount Entered
265964  , p_source_87            IN NUMBER
265965 --Entered Currency Code
265966  , p_source_88            IN VARCHAR2
265967 --Transaction Encumbrance Reversal Amount
265968  , p_source_89            IN NUMBER
265969 --Entered Amount
265970  , p_source_91            IN NUMBER
265971 --Currency Conversion Date
265972  , p_source_92            IN DATE
265973 --Currency Conversion Rate
265974  , p_source_93            IN NUMBER
265975 --Currency Conversion Type
265976  , p_source_94            IN VARCHAR2
265977 --Accounted Amount
265978  , p_source_95            IN NUMBER
265979 --Purchasing Encumbrance Type Identifier
265980  , p_source_96            IN NUMBER
265981 --Accounting Line Type
265982  , p_source_97            IN NUMBER
265983 --Costing Encumbrance Upgrade Option
265984  , p_source_100            IN VARCHAR2
265985 --TXN_PO_DISTRIBUTION_ID
265986  , p_source_101            IN NUMBER
265987 )
265988 IS
265989 
265990 l_component_type              VARCHAR2(80);
265991 l_component_code              VARCHAR2(30);
265992 l_component_type_code         VARCHAR2(1);
265993 l_component_appl_id           INTEGER;
265994 l_amb_context_code            VARCHAR2(30);
265995 l_entity_code                 VARCHAR2(30);
265996 l_event_class_code            VARCHAR2(30);
265997 l_ae_header_id                NUMBER;
265998 l_event_type_code             VARCHAR2(30);
265999 l_line_definition_code        VARCHAR2(30);
266000 l_line_definition_owner_code  VARCHAR2(1);
266001 --
266002 -- adr variables
266003 l_segment                     VARCHAR2(30);
266004 l_ccid                        NUMBER;
266005 l_adr_transaction_coa_id      NUMBER;
266006 l_adr_accounting_coa_id       NUMBER;
266007 l_adr_flexfield_segment_code  VARCHAR2(30);
266008 l_adr_flex_value_set_id       NUMBER;
266009 l_adr_value_type_code         VARCHAR2(30);
266010 l_adr_value_combination_id    NUMBER;
266011 l_adr_value_segment_code      VARCHAR2(30);
266012 
266013 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
266014 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
266015 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
266016 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
266017 
266018 -- 4262811 Variables ------------------------------------------------------------------------------------------
266019 l_entered_amt_idx             NUMBER;
266020 l_accted_amt_idx              NUMBER;
266021 l_acc_rev_flag                VARCHAR2(1);
266022 l_accrual_line_num            NUMBER;
266023 l_tmp_amt                     NUMBER;
266024 l_acc_rev_natural_side_code   VARCHAR2(1);
266025 
266026 l_num_entries                 NUMBER;
266027 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
266028 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
266029 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
266030 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
266031 l_recog_line_1                NUMBER;
266032 l_recog_line_2                NUMBER;
266033 
266034 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
266035 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
266036 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
266037 
266038 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
266039 
266040 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
266041 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
266042 
266043 ---------------------------------------------------------------------------------------------------------------
266044 
266045 
266046 --
266047 -- bulk performance
266048 --
266049 l_balance_type_code           VARCHAR2(1);
266050 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
266051 l_log_module                  VARCHAR2(240);
266052 
266053 --
266054 -- Upgrade strategy
266055 --
266056 l_actual_upg_option           VARCHAR2(1);
266057 l_enc_upg_option           VARCHAR2(1);
266058 
266059 --
266060 BEGIN
266061 --
266062 IF g_log_enabled THEN
266063       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_477';
266064 END IF;
266065 --
266066 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
266067 
266068       trace
266069          (p_msg      => 'BEGIN of AcctLineType_477'
266070          ,p_level    => C_LEVEL_PROCEDURE
266071          ,p_module   => l_log_module);
266072 
266073 END IF;
266074 --
266075 l_component_type             := 'AMB_JLT';
266076 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
266077 l_component_type_code        := 'S';
266078 l_component_appl_id          :=  707;
266079 l_amb_context_code           := 'DEFAULT';
266080 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
266081 l_event_class_code           := 'PURCHASE_ORDER';
266082 l_event_type_code            := 'LOG_PO_DEL_ADJ';
266083 l_line_definition_owner_code := 'S';
266084 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
266085 --
266086 l_balance_type_code          := 'A';
266087 l_segment                     := NULL;
266088 l_ccid                        := NULL;
266089 l_adr_transaction_coa_id      := NULL;
266090 l_adr_accounting_coa_id       := NULL;
266091 l_adr_flexfield_segment_code  := NULL;
266092 l_adr_flex_value_set_id       := NULL;
266093 l_adr_value_type_code         := NULL;
266094 l_adr_value_combination_id    := NULL;
266095 l_adr_value_segment_code      := NULL;
266096 
266097 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
266098 l_bflow_class_code           := '';    -- 4219869 Business Flow
266099 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
266100 l_budgetary_control_flag     := 'N';
266101 
266102 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
266103 l_bflow_applied_to_amt       := NULL; -- 5132302
266104 l_entered_amt_idx            := NULL;          -- 4262811
266105 l_accted_amt_idx             := NULL;          -- 4262811
266106 l_acc_rev_flag               := NULL;          -- 4262811
266107 l_accrual_line_num           := NULL;          -- 4262811
266108 l_tmp_amt                    := NULL;          -- 4262811
266109 --
266110  
266111 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
266112     l_balance_type_code <> 'B' THEN
266113 IF NVL(p_source_97,9E125) =  6
266114  THEN 
266115 
266116    --
266117    XLA_AE_LINES_PKG.SetNewLine;
266118 
266119    p_balance_type_code          := l_balance_type_code;
266120    -- set the flag so later we will know whether the gain loss line needs to be created
266121    
266122    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
266123      p_actual_flag :='A';
266124    END IF;
266125 
266126    --
266127    -- bulk performance
266128    --
266129    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
266130                                       p_header_num   => 0); -- 4262811
266131    --
266132    -- set accounting line options
266133    --
266134    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
266135            p_natural_side_code          => 'D'
266136          , p_gain_or_loss_flag          => 'N'
266137          , p_gl_transfer_mode_code      => 'S'
266138          , p_acct_entry_type_code       => 'A'
266139          , p_switch_side_flag           => 'Y'
266140          , p_merge_duplicate_code       => 'N'
266141          );
266142    --
266143    l_acc_rev_natural_side_code := 'C';  -- 4262811
266144    -- 
266145    --
266146    -- set accounting line type info
266147    --
266148    xla_ae_lines_pkg.SetAcctLineType
266149       (p_component_type             => l_component_type
266150       ,p_event_type_code            => l_event_type_code
266151       ,p_line_definition_owner_code => l_line_definition_owner_code
266152       ,p_line_definition_code       => l_line_definition_code
266153       ,p_accounting_line_code       => l_component_code
266154       ,p_accounting_line_type_code  => l_component_type_code
266155       ,p_accounting_line_appl_id    => l_component_appl_id
266156       ,p_amb_context_code           => l_amb_context_code
266157       ,p_entity_code                => l_entity_code
266158       ,p_event_class_code           => l_event_class_code);
266159    --
266160    -- set accounting class
266161    --
266162    xla_ae_lines_pkg.SetAcctClass(
266163            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
266164          , p_ae_header_id           => l_ae_header_id
266165          );
266166 
266167    --
266168    -- set rounding class
266169    --
266170    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
266171                       'PURCHASE_PRICE_VARIANCE';
266172 
266173    --
266174    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
266175    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
266176    --
266177    -- bulk performance
266178    --
266179    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
266180 
266181    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
266182       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
266183 
266184    -- 4955764
266185    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
266186       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
266187 
266188    -- 4458381 Public Sector Enh
266189    
266190    --
266191    -- set accounting attributes for the line type
266192    --
266193    l_entered_amt_idx := 17;
266194    l_accted_amt_idx  := 22;
266195    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
266196    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
266197    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
266198    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
266199    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
266200    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
266201    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
266202    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
266203    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
266204    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
266205    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
266206    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
266207    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
266208    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
266209    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
266210    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
266211    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
266212    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
266213    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
266214    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
266215    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
266216    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
266217    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
266218    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
266219    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
266220    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
266221    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
266222    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
266223    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
266224    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
266225    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
266226    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
266227    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
266228    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
266229    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
266230    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
266231    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
266232    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
266233    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
266234    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
266235    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
266236    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
266237    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
266238    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
266239    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
266240    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
266241    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
266242    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
266243    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
266244 
266245    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
266246    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
266247 
266248    ---------------------------------------------------------------------------------------------------------------
266249    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
266250    ---------------------------------------------------------------------------------------------------------------
266251    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
266252 
266253    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
266254    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
266255 
266256    IF xla_accounting_cache_pkg.GetValueChar
266257          (p_source_code         => 'LEDGER_CATEGORY_CODE'
266258          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
266259    AND l_bflow_method_code = 'PRIOR_ENTRY'
266260 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
266261    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
266262          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
266263        )
266264    THEN
266265          xla_ae_lines_pkg.BflowUpgEntry
266266            (p_business_method_code    => l_bflow_method_code
266267            ,p_business_class_code     => l_bflow_class_code
266268            ,p_balance_type            => l_balance_type_code);
266269    ELSE
266270       NULL;
266271 -- No business flow processing for business flow method of NONE.
266272    END IF;
266273 
266274    --
266275    -- call analytical criteria
266276    --
266277    
266278    --
266279    -- call description
266280    --
266281    
266282 xla_ae_lines_pkg.SetLineDescription(
266283    p_ae_header_id => l_ae_header_id
266284   ,p_description  => Description_1 (
266285      p_application_id         => p_application_id
266286    , p_ae_header_id           => l_ae_header_id 
266287 , p_source_1 => p_source_1
266288 , p_source_2 => p_source_2
266289 , p_source_3 => p_source_3
266290 , p_source_4 => p_source_4
266291 , p_source_5 => p_source_5
266292    )
266293 );
266294 
266295 
266296    --
266297    -- call ADRs
266298    -- Bug 4922099
266299    --
266300    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
266301         (NVL(l_actual_upg_option, 'N') = 'O') OR
266302         (NVL(l_enc_upg_option, 'N') = 'O')
266303       )
266304    THEN
266305    NULL;
266306    --
266307    --
266308    
266309   l_ccid := AcctDerRule_6(
266310            p_application_id           => p_application_id
266311          , p_ae_header_id             => l_ae_header_id 
266312 , p_source_11 => p_source_11
266313          , x_transaction_coa_id       => l_adr_transaction_coa_id
266314          , x_accounting_coa_id        => l_adr_accounting_coa_id
266315          , x_value_type_code          => l_adr_value_type_code
266316          , p_side                     => 'NA'
266317    );
266318 
266319    xla_ae_lines_pkg.set_ccid(
266320     p_code_combination_id          => l_ccid
266321   , p_value_type_code              => l_adr_value_type_code
266322   , p_transaction_coa_id           => l_adr_transaction_coa_id
266323   , p_accounting_coa_id            => l_adr_accounting_coa_id
266324   , p_adr_code                     => 'CST_DEFAULT'
266325   , p_adr_type_code                => 'S'
266326   , p_component_type               => l_component_type
266327   , p_component_code               => l_component_code
266328   , p_component_type_code          => l_component_type_code
266329   , p_component_appl_id            => l_component_appl_id
266330   , p_amb_context_code             => l_amb_context_code
266331   , p_side                         => 'NA'
266332   );
266333 
266334 
266335    --
266336    --
266337    END IF;
266338    --
266339    -- Bug 4922099
266340    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
266341           (NVL(l_enc_upg_option, 'N') = 'O')
266342         ) AND
266343         (l_bflow_method_code = 'PRIOR_ENTRY')
266344       )
266345    THEN
266346       IF
266347       --
266348       1 = 2
266349       --
266350       THEN
266351       xla_accounting_err_pkg.build_message
266352                                     (p_appli_s_name            => 'XLA'
266353                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
266354                                     ,p_token_1                 => 'LINE_NUMBER'
266355                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
266356                                     ,p_token_2                 => 'LINE_TYPE_NAME'
266357                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
266358                                                                              l_component_type
266359                                                                             ,l_component_code
266360                                                                             ,l_component_type_code
266361                                                                             ,l_component_appl_id
266362                                                                             ,l_amb_context_code
266363                                                                             ,l_entity_code
266364                                                                             ,l_event_class_code
266365                                                                            )
266366                                     ,p_token_3                 => 'OWNER'
266367                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
266368                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
266369                                                                           ,p_lookup_code    => l_component_type_code
266370                                                                          )
266371                                     ,p_token_4                 => 'PRODUCT_NAME'
266372                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
266373                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
266374                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
266375                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
266376                                     ,p_ae_header_id            =>  NULL
266377                                        );
266378 
266379         IF (C_LEVEL_ERROR>= g_log_level) THEN
266380                  trace
266381                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
266382                       ,p_level    => C_LEVEL_ERROR
266383                       ,p_module   => l_log_module);
266384         END IF;
266385       END IF;
266386    END IF;
266387    --
266388    --
266389    ------------------------------------------------------------------------------------------------
266390    -- 4219869 Business Flow
266391    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
266392    -- Prior Entry.  Currently, the following code is always generated.
266393    ------------------------------------------------------------------------------------------------
266394    XLA_AE_LINES_PKG.ValidateCurrentLine;
266395 
266396    ------------------------------------------------------------------------------------
266397    -- 4219869 Business Flow
266398    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
266399    ------------------------------------------------------------------------------------
266400    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
266401 
266402    ----------------------------------------------------------------------------------
266403    -- 4219869 Business Flow
266404    -- Update journal entry status -- Need to generate this within IF <condition>
266405    ----------------------------------------------------------------------------------
266406    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
266407          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
266408          ,p_balance_type_code => l_balance_type_code
266409          );
266410 
266411    -------------------------------------------------------------------------------------------
266412    -- 4262811 - Generate the Accrual Reversal lines
266413    -------------------------------------------------------------------------------------------
266414    BEGIN
266415       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
266416                               (g_array_event(p_event_id).array_value_num('header_index'));
266417       IF l_acc_rev_flag IS NULL THEN
266418          l_acc_rev_flag := 'N';
266419       END IF;
266420    EXCEPTION
266421       WHEN OTHERS THEN
266422          l_acc_rev_flag := 'N';
266423    END;
266424    --
266425    IF (l_acc_rev_flag = 'Y') THEN
266426 
266427        -- 4645092  ------------------------------------------------------------------------------
266428        -- To allow MPA report to determine if it should generate report process
266429        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
266430        ------------------------------------------------------------------------------------------
266431 
266432        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
266433        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
266434    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
266435    -- call ADRs
266436    -- Bug 4922099
266437    --
266438    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
266439         (NVL(l_actual_upg_option, 'N') = 'O') OR
266440         (NVL(l_enc_upg_option, 'N') = 'O')
266441       )
266442    THEN
266443    NULL;
266444    --
266445    --
266446    
266447   l_ccid := AcctDerRule_6(
266448            p_application_id           => p_application_id
266449          , p_ae_header_id             => l_ae_header_id 
266450 , p_source_11 => p_source_11
266451          , x_transaction_coa_id       => l_adr_transaction_coa_id
266452          , x_accounting_coa_id        => l_adr_accounting_coa_id
266453          , x_value_type_code          => l_adr_value_type_code
266454          , p_side                     => 'NA'
266455    );
266456 
266457    xla_ae_lines_pkg.set_ccid(
266458     p_code_combination_id          => l_ccid
266459   , p_value_type_code              => l_adr_value_type_code
266460   , p_transaction_coa_id           => l_adr_transaction_coa_id
266461   , p_accounting_coa_id            => l_adr_accounting_coa_id
266462   , p_adr_code                     => 'CST_DEFAULT'
266463   , p_adr_type_code                => 'S'
266464   , p_component_type               => l_component_type
266465   , p_component_code               => l_component_code
266466   , p_component_type_code          => l_component_type_code
266467   , p_component_appl_id            => l_component_appl_id
266468   , p_amb_context_code             => l_amb_context_code
266469   , p_side                         => 'NA'
266470   );
266471 
266472 
266473    --
266474    --
266475    END IF;
266476 
266477        --
266478        -- Update the line information that should be overwritten
266479        --
266480        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
266481                                          p_header_num   => 1);
266482        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
266483 
266484        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
266485 
266486        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
266487           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
266488        END IF;
266489 
266490       --
266491       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
266492       --
266493       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
266494           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
266495       ELSE
266496           ---------------------------------------------------------------------------------------------------
266497           -- 4262811a Switch Sign
266498           ---------------------------------------------------------------------------------------------------
266499           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
266500           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
266501                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
266502           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
266503                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
266504           -- 5132302
266505           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
266506                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
266507 
266508       END IF;
266509 
266510       -- 4955764
266511       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
266512       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
266513 
266514 
266515       XLA_AE_LINES_PKG.ValidateCurrentLine;
266516       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
266517 
266518       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
266519                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
266520                ,p_balance_type_code => l_balance_type_code);
266521 
266522    END IF;
266523 
266524    -----------------------------------------------------------------------------------------
266525    -- 4262811 Multiperiod Accounting
266526    -----------------------------------------------------------------------------------------
266527      -- No MPA option is assigned.
266528 
266529 
266530 END IF;
266531 END IF;
266532 --
266533 
266534 --
266535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
266536    trace
266537       (p_msg      => 'END of AcctLineType_477'
266538       ,p_level    => C_LEVEL_PROCEDURE
266539       ,p_module   => l_log_module);
266540 END IF;
266541 --
266542 EXCEPTION
266543   WHEN xla_exceptions_pkg.application_exception THEN
266544       RAISE;
266545   WHEN OTHERS THEN
266546        xla_exceptions_pkg.raise_message
266547            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_477');
266548 END AcctLineType_477;
266549 --
266550 
266551 ---------------------------------------
266552 --
266553 -- PRIVATE FUNCTION
266554 --         AcctLineType_478
266555 --
266556 ---------------------------------------
266557 PROCEDURE AcctLineType_478 (
266558   p_application_id        IN NUMBER
266559  ,p_event_id              IN NUMBER
266560  ,p_calculate_acctd_flag  IN VARCHAR2
266561  ,p_calculate_g_l_flag    IN VARCHAR2
266562  ,p_actual_flag           IN OUT VARCHAR2
266563  ,p_balance_type_code     OUT VARCHAR2
266564  ,p_gain_or_loss_ref      OUT VARCHAR2
266565  
266566 --Cost Management Default Account
266567  , p_source_11            IN NUMBER
266568 --DISTRIBUTION_IDENTIFIER
266569  , p_source_84            IN NUMBER
266570 --Distribution Type
266571  , p_source_85            IN VARCHAR2
266572  , p_source_85_meaning    IN VARCHAR2
266573 --Entered Currency Code
266574  , p_source_88            IN VARCHAR2
266575 --Entered Amount
266576  , p_source_91            IN NUMBER
266577 --Currency Conversion Date
266578  , p_source_92            IN DATE
266579 --Currency Conversion Rate
266580  , p_source_93            IN NUMBER
266581 --Accounted Amount
266582  , p_source_95            IN NUMBER
266583 --Accounting Line Type
266584  , p_source_97            IN NUMBER
266585 )
266586 IS
266587 
266588 l_component_type              VARCHAR2(80);
266589 l_component_code              VARCHAR2(30);
266590 l_component_type_code         VARCHAR2(1);
266591 l_component_appl_id           INTEGER;
266592 l_amb_context_code            VARCHAR2(30);
266593 l_entity_code                 VARCHAR2(30);
266594 l_event_class_code            VARCHAR2(30);
266595 l_ae_header_id                NUMBER;
266596 l_event_type_code             VARCHAR2(30);
266597 l_line_definition_code        VARCHAR2(30);
266598 l_line_definition_owner_code  VARCHAR2(1);
266599 --
266600 -- adr variables
266601 l_segment                     VARCHAR2(30);
266602 l_ccid                        NUMBER;
266603 l_adr_transaction_coa_id      NUMBER;
266604 l_adr_accounting_coa_id       NUMBER;
266605 l_adr_flexfield_segment_code  VARCHAR2(30);
266606 l_adr_flex_value_set_id       NUMBER;
266607 l_adr_value_type_code         VARCHAR2(30);
266608 l_adr_value_combination_id    NUMBER;
266609 l_adr_value_segment_code      VARCHAR2(30);
266610 
266611 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
266612 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
266613 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
266614 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
266615 
266616 -- 4262811 Variables ------------------------------------------------------------------------------------------
266617 l_entered_amt_idx             NUMBER;
266618 l_accted_amt_idx              NUMBER;
266619 l_acc_rev_flag                VARCHAR2(1);
266620 l_accrual_line_num            NUMBER;
266621 l_tmp_amt                     NUMBER;
266622 l_acc_rev_natural_side_code   VARCHAR2(1);
266623 
266624 l_num_entries                 NUMBER;
266625 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
266626 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
266627 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
266628 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
266629 l_recog_line_1                NUMBER;
266630 l_recog_line_2                NUMBER;
266631 
266632 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
266633 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
266634 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
266635 
266636 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
266637 
266638 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
266639 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
266640 
266641 ---------------------------------------------------------------------------------------------------------------
266642 
266643 
266644 --
266645 -- bulk performance
266646 --
266647 l_balance_type_code           VARCHAR2(1);
266648 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
266649 l_log_module                  VARCHAR2(240);
266650 
266651 --
266652 -- Upgrade strategy
266653 --
266654 l_actual_upg_option           VARCHAR2(1);
266655 l_enc_upg_option           VARCHAR2(1);
266656 
266657 --
266658 BEGIN
266659 --
266660 IF g_log_enabled THEN
266661       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_478';
266662 END IF;
266663 --
266664 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
266665 
266666       trace
266667          (p_msg      => 'BEGIN of AcctLineType_478'
266668          ,p_level    => C_LEVEL_PROCEDURE
266669          ,p_module   => l_log_module);
266670 
266671 END IF;
266672 --
266673 l_component_type             := 'AMB_JLT';
266674 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
266675 l_component_type_code        := 'S';
266676 l_component_appl_id          :=  707;
266677 l_amb_context_code           := 'DEFAULT';
266678 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
266679 l_event_class_code           := 'OSP';
266680 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
266681 l_line_definition_owner_code := 'S';
266682 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
266683 --
266684 l_balance_type_code          := 'A';
266685 l_segment                     := NULL;
266686 l_ccid                        := NULL;
266687 l_adr_transaction_coa_id      := NULL;
266688 l_adr_accounting_coa_id       := NULL;
266689 l_adr_flexfield_segment_code  := NULL;
266690 l_adr_flex_value_set_id       := NULL;
266691 l_adr_value_type_code         := NULL;
266692 l_adr_value_combination_id    := NULL;
266693 l_adr_value_segment_code      := NULL;
266694 
266695 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
266696 l_bflow_class_code           := '';    -- 4219869 Business Flow
266697 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
266698 l_budgetary_control_flag     := 'N';
266699 
266700 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
266701 l_bflow_applied_to_amt       := NULL; -- 5132302
266702 l_entered_amt_idx            := NULL;          -- 4262811
266703 l_accted_amt_idx             := NULL;          -- 4262811
266704 l_acc_rev_flag               := NULL;          -- 4262811
266705 l_accrual_line_num           := NULL;          -- 4262811
266706 l_tmp_amt                    := NULL;          -- 4262811
266707 --
266708  
266709 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
266710     l_balance_type_code <> 'B' THEN
266711 IF NVL(p_source_97,9E125) =  6
266712  THEN 
266713 
266714    --
266715    XLA_AE_LINES_PKG.SetNewLine;
266716 
266717    p_balance_type_code          := l_balance_type_code;
266718    -- set the flag so later we will know whether the gain loss line needs to be created
266719    
266720    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
266721      p_actual_flag :='A';
266722    END IF;
266723 
266724    --
266725    -- bulk performance
266726    --
266727    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
266728                                       p_header_num   => 0); -- 4262811
266729    --
266730    -- set accounting line options
266731    --
266732    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
266733            p_natural_side_code          => 'D'
266734          , p_gain_or_loss_flag          => 'N'
266735          , p_gl_transfer_mode_code      => 'S'
266736          , p_acct_entry_type_code       => 'A'
266737          , p_switch_side_flag           => 'Y'
266738          , p_merge_duplicate_code       => 'N'
266739          );
266740    --
266741    l_acc_rev_natural_side_code := 'C';  -- 4262811
266742    -- 
266743    --
266744    -- set accounting line type info
266745    --
266746    xla_ae_lines_pkg.SetAcctLineType
266747       (p_component_type             => l_component_type
266748       ,p_event_type_code            => l_event_type_code
266749       ,p_line_definition_owner_code => l_line_definition_owner_code
266750       ,p_line_definition_code       => l_line_definition_code
266751       ,p_accounting_line_code       => l_component_code
266752       ,p_accounting_line_type_code  => l_component_type_code
266753       ,p_accounting_line_appl_id    => l_component_appl_id
266754       ,p_amb_context_code           => l_amb_context_code
266755       ,p_entity_code                => l_entity_code
266756       ,p_event_class_code           => l_event_class_code);
266757    --
266758    -- set accounting class
266759    --
266760    xla_ae_lines_pkg.SetAcctClass(
266761            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
266762          , p_ae_header_id           => l_ae_header_id
266763          );
266764 
266765    --
266766    -- set rounding class
266767    --
266768    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
266769                       'PURCHASE_PRICE_VARIANCE';
266770 
266771    --
266772    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
266773    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
266774    --
266775    -- bulk performance
266776    --
266777    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
266778 
266779    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
266780       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
266781 
266782    -- 4955764
266783    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
266784       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
266785 
266786    -- 4458381 Public Sector Enh
266787    
266788    --
266789    -- set accounting attributes for the line type
266790    --
266791    l_entered_amt_idx := 3;
266792    l_accted_amt_idx  := 8;
266793    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
266794    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
266795    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
266796    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
266797    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
266798    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
266799    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
266800    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
266801    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
266802    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
266803    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
266804    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
266805    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
266806    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
266807    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
266808    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
266809    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
266810 
266811    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
266812    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
266813 
266814    ---------------------------------------------------------------------------------------------------------------
266815    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
266816    ---------------------------------------------------------------------------------------------------------------
266817    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
266818 
266819    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
266820    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
266821 
266822    IF xla_accounting_cache_pkg.GetValueChar
266823          (p_source_code         => 'LEDGER_CATEGORY_CODE'
266824          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
266825    AND l_bflow_method_code = 'PRIOR_ENTRY'
266826 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
266827    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
266828          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
266829        )
266830    THEN
266831          xla_ae_lines_pkg.BflowUpgEntry
266832            (p_business_method_code    => l_bflow_method_code
266833            ,p_business_class_code     => l_bflow_class_code
266834            ,p_balance_type            => l_balance_type_code);
266835    ELSE
266836       NULL;
266837 -- No business flow processing for business flow method of NONE.
266838    END IF;
266839 
266840    --
266841    -- call analytical criteria
266842    --
266843    
266844    --
266845    -- call description
266846    --
266847    -- No description or it is inherited.
266848    --
266849    -- call ADRs
266850    -- Bug 4922099
266851    --
266852    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
266853         (NVL(l_actual_upg_option, 'N') = 'O') OR
266854         (NVL(l_enc_upg_option, 'N') = 'O')
266855       )
266856    THEN
266857    NULL;
266858    --
266859    --
266860    
266861   l_ccid := AcctDerRule_6(
266862            p_application_id           => p_application_id
266863          , p_ae_header_id             => l_ae_header_id 
266864 , p_source_11 => p_source_11
266865          , x_transaction_coa_id       => l_adr_transaction_coa_id
266866          , x_accounting_coa_id        => l_adr_accounting_coa_id
266867          , x_value_type_code          => l_adr_value_type_code
266868          , p_side                     => 'NA'
266869    );
266870 
266871    xla_ae_lines_pkg.set_ccid(
266872     p_code_combination_id          => l_ccid
266873   , p_value_type_code              => l_adr_value_type_code
266874   , p_transaction_coa_id           => l_adr_transaction_coa_id
266875   , p_accounting_coa_id            => l_adr_accounting_coa_id
266876   , p_adr_code                     => 'CST_DEFAULT'
266877   , p_adr_type_code                => 'S'
266878   , p_component_type               => l_component_type
266879   , p_component_code               => l_component_code
266880   , p_component_type_code          => l_component_type_code
266881   , p_component_appl_id            => l_component_appl_id
266882   , p_amb_context_code             => l_amb_context_code
266883   , p_side                         => 'NA'
266884   );
266885 
266886 
266887    --
266888    --
266889    END IF;
266890    --
266891    -- Bug 4922099
266892    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
266893           (NVL(l_enc_upg_option, 'N') = 'O')
266894         ) AND
266895         (l_bflow_method_code = 'PRIOR_ENTRY')
266896       )
266897    THEN
266898       IF
266899       --
266900       1 = 2
266901       --
266902       THEN
266903       xla_accounting_err_pkg.build_message
266904                                     (p_appli_s_name            => 'XLA'
266905                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
266906                                     ,p_token_1                 => 'LINE_NUMBER'
266907                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
266908                                     ,p_token_2                 => 'LINE_TYPE_NAME'
266909                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
266910                                                                              l_component_type
266911                                                                             ,l_component_code
266912                                                                             ,l_component_type_code
266913                                                                             ,l_component_appl_id
266914                                                                             ,l_amb_context_code
266915                                                                             ,l_entity_code
266916                                                                             ,l_event_class_code
266917                                                                            )
266918                                     ,p_token_3                 => 'OWNER'
266919                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
266920                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
266921                                                                           ,p_lookup_code    => l_component_type_code
266922                                                                          )
266923                                     ,p_token_4                 => 'PRODUCT_NAME'
266924                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
266925                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
266926                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
266927                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
266928                                     ,p_ae_header_id            =>  NULL
266929                                        );
266930 
266931         IF (C_LEVEL_ERROR>= g_log_level) THEN
266932                  trace
266933                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
266934                       ,p_level    => C_LEVEL_ERROR
266935                       ,p_module   => l_log_module);
266936         END IF;
266937       END IF;
266938    END IF;
266939    --
266940    --
266941    ------------------------------------------------------------------------------------------------
266942    -- 4219869 Business Flow
266943    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
266944    -- Prior Entry.  Currently, the following code is always generated.
266945    ------------------------------------------------------------------------------------------------
266946    XLA_AE_LINES_PKG.ValidateCurrentLine;
266947 
266948    ------------------------------------------------------------------------------------
266949    -- 4219869 Business Flow
266950    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
266951    ------------------------------------------------------------------------------------
266952    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
266953 
266954    ----------------------------------------------------------------------------------
266955    -- 4219869 Business Flow
266956    -- Update journal entry status -- Need to generate this within IF <condition>
266957    ----------------------------------------------------------------------------------
266958    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
266959          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
266960          ,p_balance_type_code => l_balance_type_code
266961          );
266962 
266963    -------------------------------------------------------------------------------------------
266964    -- 4262811 - Generate the Accrual Reversal lines
266965    -------------------------------------------------------------------------------------------
266966    BEGIN
266967       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
266968                               (g_array_event(p_event_id).array_value_num('header_index'));
266969       IF l_acc_rev_flag IS NULL THEN
266970          l_acc_rev_flag := 'N';
266971       END IF;
266972    EXCEPTION
266973       WHEN OTHERS THEN
266974          l_acc_rev_flag := 'N';
266975    END;
266976    --
266977    IF (l_acc_rev_flag = 'Y') THEN
266978 
266979        -- 4645092  ------------------------------------------------------------------------------
266980        -- To allow MPA report to determine if it should generate report process
266981        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
266982        ------------------------------------------------------------------------------------------
266983 
266984        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
266985        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
266986    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
266987    -- call ADRs
266988    -- Bug 4922099
266989    --
266990    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
266991         (NVL(l_actual_upg_option, 'N') = 'O') OR
266992         (NVL(l_enc_upg_option, 'N') = 'O')
266993       )
266994    THEN
266995    NULL;
266996    --
266997    --
266998    
266999   l_ccid := AcctDerRule_6(
267000            p_application_id           => p_application_id
267001          , p_ae_header_id             => l_ae_header_id 
267002 , p_source_11 => p_source_11
267003          , x_transaction_coa_id       => l_adr_transaction_coa_id
267004          , x_accounting_coa_id        => l_adr_accounting_coa_id
267005          , x_value_type_code          => l_adr_value_type_code
267006          , p_side                     => 'NA'
267007    );
267008 
267009    xla_ae_lines_pkg.set_ccid(
267010     p_code_combination_id          => l_ccid
267011   , p_value_type_code              => l_adr_value_type_code
267012   , p_transaction_coa_id           => l_adr_transaction_coa_id
267013   , p_accounting_coa_id            => l_adr_accounting_coa_id
267014   , p_adr_code                     => 'CST_DEFAULT'
267015   , p_adr_type_code                => 'S'
267016   , p_component_type               => l_component_type
267017   , p_component_code               => l_component_code
267018   , p_component_type_code          => l_component_type_code
267019   , p_component_appl_id            => l_component_appl_id
267020   , p_amb_context_code             => l_amb_context_code
267021   , p_side                         => 'NA'
267022   );
267023 
267024 
267025    --
267026    --
267027    END IF;
267028 
267029        --
267030        -- Update the line information that should be overwritten
267031        --
267032        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
267033                                          p_header_num   => 1);
267034        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
267035 
267036        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
267037 
267038        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
267039           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
267040        END IF;
267041 
267042       --
267043       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
267044       --
267045       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
267046           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
267047       ELSE
267048           ---------------------------------------------------------------------------------------------------
267049           -- 4262811a Switch Sign
267050           ---------------------------------------------------------------------------------------------------
267051           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
267052           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
267053                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
267054           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
267055                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
267056           -- 5132302
267057           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
267058                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
267059 
267060       END IF;
267061 
267062       -- 4955764
267063       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
267064       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
267065 
267066 
267067       XLA_AE_LINES_PKG.ValidateCurrentLine;
267068       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
267069 
267070       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
267071                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
267072                ,p_balance_type_code => l_balance_type_code);
267073 
267074    END IF;
267075 
267076    -----------------------------------------------------------------------------------------
267077    -- 4262811 Multiperiod Accounting
267078    -----------------------------------------------------------------------------------------
267079      -- No MPA option is assigned.
267080 
267081 
267082 END IF;
267083 END IF;
267084 --
267085 
267086 --
267087 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
267088    trace
267089       (p_msg      => 'END of AcctLineType_478'
267090       ,p_level    => C_LEVEL_PROCEDURE
267091       ,p_module   => l_log_module);
267092 END IF;
267093 --
267094 EXCEPTION
267095   WHEN xla_exceptions_pkg.application_exception THEN
267096       RAISE;
267097   WHEN OTHERS THEN
267098        xla_exceptions_pkg.raise_message
267099            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_478');
267100 END AcctLineType_478;
267101 --
267102 
267103 ---------------------------------------
267104 --
267105 -- PRIVATE FUNCTION
267106 --         AcctLineType_479
267107 --
267108 ---------------------------------------
267109 PROCEDURE AcctLineType_479 (
267110   p_application_id        IN NUMBER
267111  ,p_event_id              IN NUMBER
267112  ,p_calculate_acctd_flag  IN VARCHAR2
267113  ,p_calculate_g_l_flag    IN VARCHAR2
267114  ,p_actual_flag           IN OUT VARCHAR2
267115  ,p_balance_type_code     OUT VARCHAR2
267116  ,p_gain_or_loss_ref      OUT VARCHAR2
267117  
267118 --TRANSACTION_ID
267119  , p_source_1            IN NUMBER
267120 --Item Concatenated Segments
267121  , p_source_2            IN VARCHAR2
267122 --Transaction Quantity
267123  , p_source_3            IN NUMBER
267124 --Transaction Unit of Measure Code
267125  , p_source_4            IN VARCHAR2
267126 --Inventory Transaction Type Description
267127  , p_source_5            IN VARCHAR2
267128 --Interorg Price Variance Account
267129  , p_source_36            IN NUMBER
267130 --DISTRIBUTION_IDENTIFIER
267131  , p_source_84            IN NUMBER
267132 --Distribution Type
267133  , p_source_85            IN VARCHAR2
267134  , p_source_85_meaning    IN VARCHAR2
267135 --Entered Currency Code
267136  , p_source_88            IN VARCHAR2
267137 --Entered Amount
267138  , p_source_91            IN NUMBER
267139 --Currency Conversion Date
267140  , p_source_92            IN DATE
267141 --Currency Conversion Rate
267142  , p_source_93            IN NUMBER
267143 --Currency Conversion Type
267144  , p_source_94            IN VARCHAR2
267145 --Accounted Amount
267146  , p_source_95            IN NUMBER
267147 --Accounting Line Type
267148  , p_source_97            IN NUMBER
267149 )
267150 IS
267151 
267152 l_component_type              VARCHAR2(80);
267153 l_component_code              VARCHAR2(30);
267154 l_component_type_code         VARCHAR2(1);
267155 l_component_appl_id           INTEGER;
267156 l_amb_context_code            VARCHAR2(30);
267157 l_entity_code                 VARCHAR2(30);
267158 l_event_class_code            VARCHAR2(30);
267159 l_ae_header_id                NUMBER;
267160 l_event_type_code             VARCHAR2(30);
267161 l_line_definition_code        VARCHAR2(30);
267162 l_line_definition_owner_code  VARCHAR2(1);
267163 --
267164 -- adr variables
267165 l_segment                     VARCHAR2(30);
267166 l_ccid                        NUMBER;
267167 l_adr_transaction_coa_id      NUMBER;
267168 l_adr_accounting_coa_id       NUMBER;
267169 l_adr_flexfield_segment_code  VARCHAR2(30);
267170 l_adr_flex_value_set_id       NUMBER;
267171 l_adr_value_type_code         VARCHAR2(30);
267172 l_adr_value_combination_id    NUMBER;
267173 l_adr_value_segment_code      VARCHAR2(30);
267174 
267175 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
267176 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
267177 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
267178 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
267179 
267180 -- 4262811 Variables ------------------------------------------------------------------------------------------
267181 l_entered_amt_idx             NUMBER;
267182 l_accted_amt_idx              NUMBER;
267183 l_acc_rev_flag                VARCHAR2(1);
267184 l_accrual_line_num            NUMBER;
267185 l_tmp_amt                     NUMBER;
267186 l_acc_rev_natural_side_code   VARCHAR2(1);
267187 
267188 l_num_entries                 NUMBER;
267189 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
267190 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
267191 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
267192 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
267193 l_recog_line_1                NUMBER;
267194 l_recog_line_2                NUMBER;
267195 
267196 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
267197 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
267198 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
267199 
267200 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
267201 
267202 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
267203 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
267204 
267205 ---------------------------------------------------------------------------------------------------------------
267206 
267207 
267208 --
267209 -- bulk performance
267210 --
267211 l_balance_type_code           VARCHAR2(1);
267212 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
267213 l_log_module                  VARCHAR2(240);
267214 
267215 --
267216 -- Upgrade strategy
267217 --
267218 l_actual_upg_option           VARCHAR2(1);
267219 l_enc_upg_option           VARCHAR2(1);
267220 
267221 --
267222 BEGIN
267223 --
267224 IF g_log_enabled THEN
267225       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_479';
267226 END IF;
267227 --
267228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
267229 
267230       trace
267231          (p_msg      => 'BEGIN of AcctLineType_479'
267232          ,p_level    => C_LEVEL_PROCEDURE
267233          ,p_module   => l_log_module);
267234 
267235 END IF;
267236 --
267237 l_component_type             := 'AMB_JLT';
267238 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
267239 l_component_type_code        := 'S';
267240 l_component_appl_id          :=  707;
267241 l_amb_context_code           := 'DEFAULT';
267242 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
267243 l_event_class_code           := 'USER_DEFINE';
267244 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
267245 l_line_definition_owner_code := 'S';
267246 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
267247 --
267248 l_balance_type_code          := 'A';
267249 l_segment                     := NULL;
267250 l_ccid                        := NULL;
267251 l_adr_transaction_coa_id      := NULL;
267252 l_adr_accounting_coa_id       := NULL;
267253 l_adr_flexfield_segment_code  := NULL;
267254 l_adr_flex_value_set_id       := NULL;
267255 l_adr_value_type_code         := NULL;
267256 l_adr_value_combination_id    := NULL;
267257 l_adr_value_segment_code      := NULL;
267258 
267259 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
267260 l_bflow_class_code           := '';    -- 4219869 Business Flow
267261 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
267262 l_budgetary_control_flag     := 'N';
267263 
267264 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
267265 l_bflow_applied_to_amt       := NULL; -- 5132302
267266 l_entered_amt_idx            := NULL;          -- 4262811
267267 l_accted_amt_idx             := NULL;          -- 4262811
267268 l_acc_rev_flag               := NULL;          -- 4262811
267269 l_accrual_line_num           := NULL;          -- 4262811
267270 l_tmp_amt                    := NULL;          -- 4262811
267271 --
267272  
267273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
267274     l_balance_type_code <> 'B' THEN
267275 IF NVL(p_source_97,9E125) =  6
267276  THEN 
267277 
267278    --
267279    XLA_AE_LINES_PKG.SetNewLine;
267280 
267281    p_balance_type_code          := l_balance_type_code;
267282    -- set the flag so later we will know whether the gain loss line needs to be created
267283    
267284    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
267285      p_actual_flag :='A';
267286    END IF;
267287 
267288    --
267289    -- bulk performance
267290    --
267291    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
267292                                       p_header_num   => 0); -- 4262811
267293    --
267294    -- set accounting line options
267295    --
267296    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
267297            p_natural_side_code          => 'D'
267298          , p_gain_or_loss_flag          => 'N'
267299          , p_gl_transfer_mode_code      => 'S'
267300          , p_acct_entry_type_code       => 'A'
267301          , p_switch_side_flag           => 'Y'
267302          , p_merge_duplicate_code       => 'N'
267303          );
267304    --
267305    l_acc_rev_natural_side_code := 'C';  -- 4262811
267306    -- 
267307    --
267308    -- set accounting line type info
267309    --
267310    xla_ae_lines_pkg.SetAcctLineType
267311       (p_component_type             => l_component_type
267312       ,p_event_type_code            => l_event_type_code
267313       ,p_line_definition_owner_code => l_line_definition_owner_code
267314       ,p_line_definition_code       => l_line_definition_code
267315       ,p_accounting_line_code       => l_component_code
267316       ,p_accounting_line_type_code  => l_component_type_code
267317       ,p_accounting_line_appl_id    => l_component_appl_id
267318       ,p_amb_context_code           => l_amb_context_code
267319       ,p_entity_code                => l_entity_code
267320       ,p_event_class_code           => l_event_class_code);
267321    --
267322    -- set accounting class
267323    --
267324    xla_ae_lines_pkg.SetAcctClass(
267325            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
267326          , p_ae_header_id           => l_ae_header_id
267327          );
267328 
267329    --
267330    -- set rounding class
267331    --
267332    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
267333                       'PURCHASE_PRICE_VARIANCE';
267334 
267335    --
267336    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
267337    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
267338    --
267339    -- bulk performance
267340    --
267341    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
267342 
267343    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
267344       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
267345 
267346    -- 4955764
267347    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
267348       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
267349 
267350    -- 4458381 Public Sector Enh
267351    
267352    --
267353    -- set accounting attributes for the line type
267354    --
267355    l_entered_amt_idx := 3;
267356    l_accted_amt_idx  := 8;
267357    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
267358    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
267359    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
267360    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
267361    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
267362    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
267363    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
267364    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
267365    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
267366    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
267367    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
267368    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
267369    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
267370    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
267371    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
267372    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
267373    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
267374 
267375    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
267376    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
267377 
267378    ---------------------------------------------------------------------------------------------------------------
267379    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
267380    ---------------------------------------------------------------------------------------------------------------
267381    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
267382 
267383    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
267384    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
267385 
267386    IF xla_accounting_cache_pkg.GetValueChar
267387          (p_source_code         => 'LEDGER_CATEGORY_CODE'
267388          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
267389    AND l_bflow_method_code = 'PRIOR_ENTRY'
267390 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
267391    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
267392          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
267393        )
267394    THEN
267395          xla_ae_lines_pkg.BflowUpgEntry
267396            (p_business_method_code    => l_bflow_method_code
267397            ,p_business_class_code     => l_bflow_class_code
267398            ,p_balance_type            => l_balance_type_code);
267399    ELSE
267400       NULL;
267401 -- No business flow processing for business flow method of NONE.
267402    END IF;
267403 
267404    --
267405    -- call analytical criteria
267406    --
267407    
267408    --
267409    -- call description
267410    --
267411    
267412 xla_ae_lines_pkg.SetLineDescription(
267413    p_ae_header_id => l_ae_header_id
267414   ,p_description  => Description_1 (
267415      p_application_id         => p_application_id
267416    , p_ae_header_id           => l_ae_header_id 
267417 , p_source_1 => p_source_1
267418 , p_source_2 => p_source_2
267419 , p_source_3 => p_source_3
267420 , p_source_4 => p_source_4
267421 , p_source_5 => p_source_5
267422    )
267423 );
267424 
267425 
267426    --
267427    -- call ADRs
267428    -- Bug 4922099
267429    --
267430    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
267431         (NVL(l_actual_upg_option, 'N') = 'O') OR
267432         (NVL(l_enc_upg_option, 'N') = 'O')
267433       )
267434    THEN
267435    NULL;
267436    --
267437    --
267438    
267439   l_ccid := AcctDerRule_21(
267440            p_application_id           => p_application_id
267441          , p_ae_header_id             => l_ae_header_id 
267442 , p_source_36 => p_source_36
267443          , x_transaction_coa_id       => l_adr_transaction_coa_id
267444          , x_accounting_coa_id        => l_adr_accounting_coa_id
267445          , x_value_type_code          => l_adr_value_type_code
267446          , p_side                     => 'NA'
267447    );
267448 
267449    xla_ae_lines_pkg.set_ccid(
267450     p_code_combination_id          => l_ccid
267451   , p_value_type_code              => l_adr_value_type_code
267452   , p_transaction_coa_id           => l_adr_transaction_coa_id
267453   , p_accounting_coa_id            => l_adr_accounting_coa_id
267454   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
267455   , p_adr_type_code                => 'S'
267456   , p_component_type               => l_component_type
267457   , p_component_code               => l_component_code
267458   , p_component_type_code          => l_component_type_code
267459   , p_component_appl_id            => l_component_appl_id
267460   , p_amb_context_code             => l_amb_context_code
267461   , p_side                         => 'NA'
267462   );
267463 
267464 
267465    --
267466    --
267467    END IF;
267468    --
267469    -- Bug 4922099
267470    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
267471           (NVL(l_enc_upg_option, 'N') = 'O')
267472         ) AND
267473         (l_bflow_method_code = 'PRIOR_ENTRY')
267474       )
267475    THEN
267476       IF
267477       --
267478       1 = 2
267479       --
267480       THEN
267481       xla_accounting_err_pkg.build_message
267482                                     (p_appli_s_name            => 'XLA'
267483                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
267484                                     ,p_token_1                 => 'LINE_NUMBER'
267485                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
267486                                     ,p_token_2                 => 'LINE_TYPE_NAME'
267487                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
267488                                                                              l_component_type
267489                                                                             ,l_component_code
267490                                                                             ,l_component_type_code
267491                                                                             ,l_component_appl_id
267492                                                                             ,l_amb_context_code
267493                                                                             ,l_entity_code
267494                                                                             ,l_event_class_code
267495                                                                            )
267496                                     ,p_token_3                 => 'OWNER'
267497                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
267498                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
267499                                                                           ,p_lookup_code    => l_component_type_code
267500                                                                          )
267501                                     ,p_token_4                 => 'PRODUCT_NAME'
267502                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
267503                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
267504                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
267505                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
267506                                     ,p_ae_header_id            =>  NULL
267507                                        );
267508 
267509         IF (C_LEVEL_ERROR>= g_log_level) THEN
267510                  trace
267511                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
267512                       ,p_level    => C_LEVEL_ERROR
267513                       ,p_module   => l_log_module);
267514         END IF;
267515       END IF;
267516    END IF;
267517    --
267518    --
267519    ------------------------------------------------------------------------------------------------
267520    -- 4219869 Business Flow
267521    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
267522    -- Prior Entry.  Currently, the following code is always generated.
267523    ------------------------------------------------------------------------------------------------
267524    XLA_AE_LINES_PKG.ValidateCurrentLine;
267525 
267526    ------------------------------------------------------------------------------------
267527    -- 4219869 Business Flow
267528    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
267529    ------------------------------------------------------------------------------------
267530    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
267531 
267532    ----------------------------------------------------------------------------------
267533    -- 4219869 Business Flow
267534    -- Update journal entry status -- Need to generate this within IF <condition>
267535    ----------------------------------------------------------------------------------
267536    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
267537          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
267538          ,p_balance_type_code => l_balance_type_code
267539          );
267540 
267541    -------------------------------------------------------------------------------------------
267542    -- 4262811 - Generate the Accrual Reversal lines
267543    -------------------------------------------------------------------------------------------
267544    BEGIN
267545       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
267546                               (g_array_event(p_event_id).array_value_num('header_index'));
267547       IF l_acc_rev_flag IS NULL THEN
267548          l_acc_rev_flag := 'N';
267549       END IF;
267550    EXCEPTION
267551       WHEN OTHERS THEN
267552          l_acc_rev_flag := 'N';
267553    END;
267554    --
267555    IF (l_acc_rev_flag = 'Y') THEN
267556 
267557        -- 4645092  ------------------------------------------------------------------------------
267558        -- To allow MPA report to determine if it should generate report process
267559        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
267560        ------------------------------------------------------------------------------------------
267561 
267562        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
267563        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
267564    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
267565    -- call ADRs
267566    -- Bug 4922099
267567    --
267568    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
267569         (NVL(l_actual_upg_option, 'N') = 'O') OR
267570         (NVL(l_enc_upg_option, 'N') = 'O')
267571       )
267572    THEN
267573    NULL;
267574    --
267575    --
267576    
267577   l_ccid := AcctDerRule_21(
267578            p_application_id           => p_application_id
267579          , p_ae_header_id             => l_ae_header_id 
267580 , p_source_36 => p_source_36
267581          , x_transaction_coa_id       => l_adr_transaction_coa_id
267582          , x_accounting_coa_id        => l_adr_accounting_coa_id
267583          , x_value_type_code          => l_adr_value_type_code
267584          , p_side                     => 'NA'
267585    );
267586 
267587    xla_ae_lines_pkg.set_ccid(
267588     p_code_combination_id          => l_ccid
267589   , p_value_type_code              => l_adr_value_type_code
267590   , p_transaction_coa_id           => l_adr_transaction_coa_id
267591   , p_accounting_coa_id            => l_adr_accounting_coa_id
267592   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
267593   , p_adr_type_code                => 'S'
267594   , p_component_type               => l_component_type
267595   , p_component_code               => l_component_code
267596   , p_component_type_code          => l_component_type_code
267597   , p_component_appl_id            => l_component_appl_id
267598   , p_amb_context_code             => l_amb_context_code
267599   , p_side                         => 'NA'
267600   );
267601 
267602 
267603    --
267604    --
267605    END IF;
267606 
267607        --
267608        -- Update the line information that should be overwritten
267609        --
267610        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
267611                                          p_header_num   => 1);
267612        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
267613 
267614        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
267615 
267616        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
267617           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
267618        END IF;
267619 
267620       --
267621       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
267622       --
267623       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
267624           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
267625       ELSE
267626           ---------------------------------------------------------------------------------------------------
267627           -- 4262811a Switch Sign
267628           ---------------------------------------------------------------------------------------------------
267629           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
267630           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
267631                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
267632           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
267633                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
267634           -- 5132302
267635           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
267636                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
267637 
267638       END IF;
267639 
267640       -- 4955764
267641       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
267642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
267643 
267644 
267645       XLA_AE_LINES_PKG.ValidateCurrentLine;
267646       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
267647 
267648       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
267649                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
267650                ,p_balance_type_code => l_balance_type_code);
267651 
267652    END IF;
267653 
267654    -----------------------------------------------------------------------------------------
267655    -- 4262811 Multiperiod Accounting
267656    -----------------------------------------------------------------------------------------
267657      -- No MPA option is assigned.
267658 
267659 
267660 END IF;
267661 END IF;
267662 --
267663 
267664 --
267665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
267666    trace
267667       (p_msg      => 'END of AcctLineType_479'
267668       ,p_level    => C_LEVEL_PROCEDURE
267669       ,p_module   => l_log_module);
267670 END IF;
267671 --
267672 EXCEPTION
267673   WHEN xla_exceptions_pkg.application_exception THEN
267674       RAISE;
267675   WHEN OTHERS THEN
267676        xla_exceptions_pkg.raise_message
267677            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_479');
267678 END AcctLineType_479;
267679 --
267680 
267681 ---------------------------------------
267682 --
267683 -- PRIVATE FUNCTION
267684 --         AcctLineType_480
267685 --
267686 ---------------------------------------
267687 PROCEDURE AcctLineType_480 (
267688   p_application_id        IN NUMBER
267689  ,p_event_id              IN NUMBER
267690  ,p_calculate_acctd_flag  IN VARCHAR2
267691  ,p_calculate_g_l_flag    IN VARCHAR2
267692  ,p_actual_flag           IN OUT VARCHAR2
267693  ,p_balance_type_code     OUT VARCHAR2
267694  ,p_gain_or_loss_ref      OUT VARCHAR2
267695  
267696 --TRANSACTION_ID
267697  , p_source_1            IN NUMBER
267698 --Item Concatenated Segments
267699  , p_source_2            IN VARCHAR2
267700 --Transaction Quantity
267701  , p_source_3            IN NUMBER
267702 --Transaction Unit of Measure Code
267703  , p_source_4            IN VARCHAR2
267704 --Inventory Transaction Type Description
267705  , p_source_5            IN VARCHAR2
267706 --Interorg Price Variance Account
267707  , p_source_36            IN NUMBER
267708 --Applied to Application ID
267709  , p_source_79            IN NUMBER
267710 --Applied to Distribution Link Type
267711  , p_source_80            IN VARCHAR2
267712 --Applied to Entity Code
267713  , p_source_81            IN VARCHAR2
267714 --DISTRIBUTION_IDENTIFIER
267715  , p_source_84            IN NUMBER
267716 --Distribution Type
267717  , p_source_85            IN VARCHAR2
267718  , p_source_85_meaning    IN VARCHAR2
267719 --Encumbrance Reversal Amount Entered
267720  , p_source_87            IN NUMBER
267721 --Entered Currency Code
267722  , p_source_88            IN VARCHAR2
267723 --Transaction Encumbrance Reversal Amount
267724  , p_source_89            IN NUMBER
267725 --Entered Amount
267726  , p_source_91            IN NUMBER
267727 --Currency Conversion Date
267728  , p_source_92            IN DATE
267729 --Currency Conversion Rate
267730  , p_source_93            IN NUMBER
267731 --Currency Conversion Type
267732  , p_source_94            IN VARCHAR2
267733 --Accounted Amount
267734  , p_source_95            IN NUMBER
267735 --Accounting Line Type
267736  , p_source_97            IN NUMBER
267737 --Costing Encumbrance Upgrade Option
267738  , p_source_100            IN VARCHAR2
267739 --TXN_PO_DISTRIBUTION_ID
267740  , p_source_101            IN NUMBER
267741 --TXN_PO_HEADER_ID
267742  , p_source_102            IN NUMBER
267743 --Requisition Budget Account
267744  , p_source_103            IN NUMBER
267745 --Requisition Encumbrance Type Identifier
267746  , p_source_104            IN NUMBER
267747 )
267748 IS
267749 
267750 l_component_type              VARCHAR2(80);
267751 l_component_code              VARCHAR2(30);
267752 l_component_type_code         VARCHAR2(1);
267753 l_component_appl_id           INTEGER;
267754 l_amb_context_code            VARCHAR2(30);
267755 l_entity_code                 VARCHAR2(30);
267756 l_event_class_code            VARCHAR2(30);
267757 l_ae_header_id                NUMBER;
267758 l_event_type_code             VARCHAR2(30);
267759 l_line_definition_code        VARCHAR2(30);
267760 l_line_definition_owner_code  VARCHAR2(1);
267761 --
267762 -- adr variables
267763 l_segment                     VARCHAR2(30);
267764 l_ccid                        NUMBER;
267765 l_adr_transaction_coa_id      NUMBER;
267766 l_adr_accounting_coa_id       NUMBER;
267767 l_adr_flexfield_segment_code  VARCHAR2(30);
267768 l_adr_flex_value_set_id       NUMBER;
267769 l_adr_value_type_code         VARCHAR2(30);
267770 l_adr_value_combination_id    NUMBER;
267771 l_adr_value_segment_code      VARCHAR2(30);
267772 
267773 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
267774 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
267775 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
267776 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
267777 
267778 -- 4262811 Variables ------------------------------------------------------------------------------------------
267779 l_entered_amt_idx             NUMBER;
267780 l_accted_amt_idx              NUMBER;
267781 l_acc_rev_flag                VARCHAR2(1);
267782 l_accrual_line_num            NUMBER;
267783 l_tmp_amt                     NUMBER;
267784 l_acc_rev_natural_side_code   VARCHAR2(1);
267785 
267786 l_num_entries                 NUMBER;
267787 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
267788 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
267789 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
267790 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
267791 l_recog_line_1                NUMBER;
267792 l_recog_line_2                NUMBER;
267793 
267794 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
267795 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
267796 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
267797 
267798 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
267799 
267800 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
267801 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
267802 
267803 ---------------------------------------------------------------------------------------------------------------
267804 
267805 
267806 --
267807 -- bulk performance
267808 --
267809 l_balance_type_code           VARCHAR2(1);
267810 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
267811 l_log_module                  VARCHAR2(240);
267812 
267813 --
267814 -- Upgrade strategy
267815 --
267816 l_actual_upg_option           VARCHAR2(1);
267817 l_enc_upg_option           VARCHAR2(1);
267818 
267819 --
267820 BEGIN
267821 --
267822 IF g_log_enabled THEN
267823       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_480';
267824 END IF;
267825 --
267826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
267827 
267828       trace
267829          (p_msg      => 'BEGIN of AcctLineType_480'
267830          ,p_level    => C_LEVEL_PROCEDURE
267831          ,p_module   => l_log_module);
267832 
267833 END IF;
267834 --
267835 l_component_type             := 'AMB_JLT';
267836 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
267837 l_component_type_code        := 'S';
267838 l_component_appl_id          :=  707;
267839 l_amb_context_code           := 'DEFAULT';
267840 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
267841 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
267842 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
267843 l_line_definition_owner_code := 'S';
267844 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_NTP';
267845 --
267846 l_balance_type_code          := 'A';
267847 l_segment                     := NULL;
267848 l_ccid                        := NULL;
267849 l_adr_transaction_coa_id      := NULL;
267850 l_adr_accounting_coa_id       := NULL;
267851 l_adr_flexfield_segment_code  := NULL;
267852 l_adr_flex_value_set_id       := NULL;
267853 l_adr_value_type_code         := NULL;
267854 l_adr_value_combination_id    := NULL;
267855 l_adr_value_segment_code      := NULL;
267856 
267857 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
267858 l_bflow_class_code           := '';    -- 4219869 Business Flow
267859 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
267860 l_budgetary_control_flag     := 'N';
267861 
267862 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
267863 l_bflow_applied_to_amt       := NULL; -- 5132302
267864 l_entered_amt_idx            := NULL;          -- 4262811
267865 l_accted_amt_idx             := NULL;          -- 4262811
267866 l_acc_rev_flag               := NULL;          -- 4262811
267867 l_accrual_line_num           := NULL;          -- 4262811
267868 l_tmp_amt                    := NULL;          -- 4262811
267869 --
267870  
267871 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
267872     l_balance_type_code <> 'B' THEN
267873 IF NVL(p_source_97,9E125) =  6
267874  THEN 
267875 
267876    --
267877    XLA_AE_LINES_PKG.SetNewLine;
267878 
267879    p_balance_type_code          := l_balance_type_code;
267880    -- set the flag so later we will know whether the gain loss line needs to be created
267881    
267882    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
267883      p_actual_flag :='A';
267884    END IF;
267885 
267886    --
267887    -- bulk performance
267888    --
267889    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
267890                                       p_header_num   => 0); -- 4262811
267891    --
267892    -- set accounting line options
267893    --
267894    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
267895            p_natural_side_code          => 'D'
267896          , p_gain_or_loss_flag          => 'N'
267897          , p_gl_transfer_mode_code      => 'S'
267898          , p_acct_entry_type_code       => 'A'
267899          , p_switch_side_flag           => 'Y'
267900          , p_merge_duplicate_code       => 'N'
267901          );
267902    --
267903    l_acc_rev_natural_side_code := 'C';  -- 4262811
267904    -- 
267905    --
267906    -- set accounting line type info
267907    --
267908    xla_ae_lines_pkg.SetAcctLineType
267909       (p_component_type             => l_component_type
267910       ,p_event_type_code            => l_event_type_code
267911       ,p_line_definition_owner_code => l_line_definition_owner_code
267912       ,p_line_definition_code       => l_line_definition_code
267913       ,p_accounting_line_code       => l_component_code
267914       ,p_accounting_line_type_code  => l_component_type_code
267915       ,p_accounting_line_appl_id    => l_component_appl_id
267916       ,p_amb_context_code           => l_amb_context_code
267917       ,p_entity_code                => l_entity_code
267918       ,p_event_class_code           => l_event_class_code);
267919    --
267920    -- set accounting class
267921    --
267922    xla_ae_lines_pkg.SetAcctClass(
267923            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
267924          , p_ae_header_id           => l_ae_header_id
267925          );
267926 
267927    --
267928    -- set rounding class
267929    --
267930    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
267931                       'PURCHASE_PRICE_VARIANCE';
267932 
267933    --
267934    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
267935    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
267936    --
267937    -- bulk performance
267938    --
267939    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
267940 
267941    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
267942       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
267943 
267944    -- 4955764
267945    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
267946       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
267947 
267948    -- 4458381 Public Sector Enh
267949    
267950    --
267951    -- set accounting attributes for the line type
267952    --
267953    l_entered_amt_idx := 17;
267954    l_accted_amt_idx  := 22;
267955    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
267956    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
267957    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
267958    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
267959    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
267960    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
267961    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
267962    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
267963    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
267964    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
267965    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
267966    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
267967    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
267968    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
267969    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
267970    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
267971    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
267972    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
267973    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
267974    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
267975    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
267976    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
267977    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
267978    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
267979    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
267980    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
267981    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
267982    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
267983    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
267984    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
267985    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
267986    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
267987    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
267988    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
267989    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
267990    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
267991    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
267992    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
267993    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
267994    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
267995    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
267996    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
267997    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
267998    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
267999    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
268000    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
268001    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
268002    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
268003    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
268004 
268005    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
268006    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
268007 
268008    ---------------------------------------------------------------------------------------------------------------
268009    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
268010    ---------------------------------------------------------------------------------------------------------------
268011    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
268012 
268013    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
268014    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
268015 
268016    IF xla_accounting_cache_pkg.GetValueChar
268017          (p_source_code         => 'LEDGER_CATEGORY_CODE'
268018          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
268019    AND l_bflow_method_code = 'PRIOR_ENTRY'
268020 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
268021    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
268022          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
268023        )
268024    THEN
268025          xla_ae_lines_pkg.BflowUpgEntry
268026            (p_business_method_code    => l_bflow_method_code
268027            ,p_business_class_code     => l_bflow_class_code
268028            ,p_balance_type            => l_balance_type_code);
268029    ELSE
268030       NULL;
268031 -- No business flow processing for business flow method of NONE.
268032    END IF;
268033 
268034    --
268035    -- call analytical criteria
268036    --
268037    
268038    --
268039    -- call description
268040    --
268041    
268042 xla_ae_lines_pkg.SetLineDescription(
268043    p_ae_header_id => l_ae_header_id
268044   ,p_description  => Description_1 (
268045      p_application_id         => p_application_id
268046    , p_ae_header_id           => l_ae_header_id 
268047 , p_source_1 => p_source_1
268048 , p_source_2 => p_source_2
268049 , p_source_3 => p_source_3
268050 , p_source_4 => p_source_4
268051 , p_source_5 => p_source_5
268052    )
268053 );
268054 
268055 
268056    --
268057    -- call ADRs
268058    -- Bug 4922099
268059    --
268060    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
268061         (NVL(l_actual_upg_option, 'N') = 'O') OR
268062         (NVL(l_enc_upg_option, 'N') = 'O')
268063       )
268064    THEN
268065    NULL;
268066    --
268067    --
268068    
268069   l_ccid := AcctDerRule_21(
268070            p_application_id           => p_application_id
268071          , p_ae_header_id             => l_ae_header_id 
268072 , p_source_36 => p_source_36
268073          , x_transaction_coa_id       => l_adr_transaction_coa_id
268074          , x_accounting_coa_id        => l_adr_accounting_coa_id
268075          , x_value_type_code          => l_adr_value_type_code
268076          , p_side                     => 'NA'
268077    );
268078 
268079    xla_ae_lines_pkg.set_ccid(
268080     p_code_combination_id          => l_ccid
268081   , p_value_type_code              => l_adr_value_type_code
268082   , p_transaction_coa_id           => l_adr_transaction_coa_id
268083   , p_accounting_coa_id            => l_adr_accounting_coa_id
268084   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
268085   , p_adr_type_code                => 'S'
268086   , p_component_type               => l_component_type
268087   , p_component_code               => l_component_code
268088   , p_component_type_code          => l_component_type_code
268089   , p_component_appl_id            => l_component_appl_id
268090   , p_amb_context_code             => l_amb_context_code
268091   , p_side                         => 'NA'
268092   );
268093 
268094 
268095    --
268096    --
268097    END IF;
268098    --
268099    -- Bug 4922099
268100    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
268101           (NVL(l_enc_upg_option, 'N') = 'O')
268102         ) AND
268103         (l_bflow_method_code = 'PRIOR_ENTRY')
268104       )
268105    THEN
268106       IF
268107       --
268108       1 = 2
268109       --
268110       THEN
268111       xla_accounting_err_pkg.build_message
268112                                     (p_appli_s_name            => 'XLA'
268113                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
268114                                     ,p_token_1                 => 'LINE_NUMBER'
268115                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
268116                                     ,p_token_2                 => 'LINE_TYPE_NAME'
268117                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
268118                                                                              l_component_type
268119                                                                             ,l_component_code
268120                                                                             ,l_component_type_code
268121                                                                             ,l_component_appl_id
268122                                                                             ,l_amb_context_code
268123                                                                             ,l_entity_code
268124                                                                             ,l_event_class_code
268125                                                                            )
268126                                     ,p_token_3                 => 'OWNER'
268127                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
268128                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
268129                                                                           ,p_lookup_code    => l_component_type_code
268130                                                                          )
268131                                     ,p_token_4                 => 'PRODUCT_NAME'
268132                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
268133                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
268134                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
268135                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
268136                                     ,p_ae_header_id            =>  NULL
268137                                        );
268138 
268139         IF (C_LEVEL_ERROR>= g_log_level) THEN
268140                  trace
268141                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
268142                       ,p_level    => C_LEVEL_ERROR
268143                       ,p_module   => l_log_module);
268144         END IF;
268145       END IF;
268146    END IF;
268147    --
268148    --
268149    ------------------------------------------------------------------------------------------------
268150    -- 4219869 Business Flow
268151    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
268152    -- Prior Entry.  Currently, the following code is always generated.
268153    ------------------------------------------------------------------------------------------------
268154    XLA_AE_LINES_PKG.ValidateCurrentLine;
268155 
268156    ------------------------------------------------------------------------------------
268157    -- 4219869 Business Flow
268158    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
268159    ------------------------------------------------------------------------------------
268160    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
268161 
268162    ----------------------------------------------------------------------------------
268163    -- 4219869 Business Flow
268164    -- Update journal entry status -- Need to generate this within IF <condition>
268165    ----------------------------------------------------------------------------------
268166    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
268167          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
268168          ,p_balance_type_code => l_balance_type_code
268169          );
268170 
268171    -------------------------------------------------------------------------------------------
268172    -- 4262811 - Generate the Accrual Reversal lines
268173    -------------------------------------------------------------------------------------------
268174    BEGIN
268175       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
268176                               (g_array_event(p_event_id).array_value_num('header_index'));
268177       IF l_acc_rev_flag IS NULL THEN
268178          l_acc_rev_flag := 'N';
268179       END IF;
268180    EXCEPTION
268181       WHEN OTHERS THEN
268182          l_acc_rev_flag := 'N';
268183    END;
268184    --
268185    IF (l_acc_rev_flag = 'Y') THEN
268186 
268187        -- 4645092  ------------------------------------------------------------------------------
268188        -- To allow MPA report to determine if it should generate report process
268189        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
268190        ------------------------------------------------------------------------------------------
268191 
268192        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
268193        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
268194    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
268195    -- call ADRs
268196    -- Bug 4922099
268197    --
268198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
268199         (NVL(l_actual_upg_option, 'N') = 'O') OR
268200         (NVL(l_enc_upg_option, 'N') = 'O')
268201       )
268202    THEN
268203    NULL;
268204    --
268205    --
268206    
268207   l_ccid := AcctDerRule_21(
268208            p_application_id           => p_application_id
268209          , p_ae_header_id             => l_ae_header_id 
268210 , p_source_36 => p_source_36
268211          , x_transaction_coa_id       => l_adr_transaction_coa_id
268212          , x_accounting_coa_id        => l_adr_accounting_coa_id
268213          , x_value_type_code          => l_adr_value_type_code
268214          , p_side                     => 'NA'
268215    );
268216 
268217    xla_ae_lines_pkg.set_ccid(
268218     p_code_combination_id          => l_ccid
268219   , p_value_type_code              => l_adr_value_type_code
268220   , p_transaction_coa_id           => l_adr_transaction_coa_id
268221   , p_accounting_coa_id            => l_adr_accounting_coa_id
268222   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
268223   , p_adr_type_code                => 'S'
268224   , p_component_type               => l_component_type
268225   , p_component_code               => l_component_code
268226   , p_component_type_code          => l_component_type_code
268227   , p_component_appl_id            => l_component_appl_id
268228   , p_amb_context_code             => l_amb_context_code
268229   , p_side                         => 'NA'
268230   );
268231 
268232 
268233    --
268234    --
268235    END IF;
268236 
268237        --
268238        -- Update the line information that should be overwritten
268239        --
268240        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
268241                                          p_header_num   => 1);
268242        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
268243 
268244        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
268245 
268246        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
268247           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
268248        END IF;
268249 
268250       --
268251       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
268252       --
268253       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
268254           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
268255       ELSE
268256           ---------------------------------------------------------------------------------------------------
268257           -- 4262811a Switch Sign
268258           ---------------------------------------------------------------------------------------------------
268259           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
268260           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
268261                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
268262           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
268263                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
268264           -- 5132302
268265           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
268266                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
268267 
268268       END IF;
268269 
268270       -- 4955764
268271       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
268272       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
268273 
268274 
268275       XLA_AE_LINES_PKG.ValidateCurrentLine;
268276       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
268277 
268278       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
268279                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
268280                ,p_balance_type_code => l_balance_type_code);
268281 
268282    END IF;
268283 
268284    -----------------------------------------------------------------------------------------
268285    -- 4262811 Multiperiod Accounting
268286    -----------------------------------------------------------------------------------------
268287      -- No MPA option is assigned.
268288 
268289 
268290 END IF;
268291 END IF;
268292 --
268293 
268294 --
268295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
268296    trace
268297       (p_msg      => 'END of AcctLineType_480'
268298       ,p_level    => C_LEVEL_PROCEDURE
268299       ,p_module   => l_log_module);
268300 END IF;
268301 --
268302 EXCEPTION
268303   WHEN xla_exceptions_pkg.application_exception THEN
268304       RAISE;
268305   WHEN OTHERS THEN
268306        xla_exceptions_pkg.raise_message
268307            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_480');
268308 END AcctLineType_480;
268309 --
268310 
268311 ---------------------------------------
268312 --
268313 -- PRIVATE FUNCTION
268314 --         AcctLineType_481
268315 --
268316 ---------------------------------------
268317 PROCEDURE AcctLineType_481 (
268318   p_application_id        IN NUMBER
268319  ,p_event_id              IN NUMBER
268320  ,p_calculate_acctd_flag  IN VARCHAR2
268321  ,p_calculate_g_l_flag    IN VARCHAR2
268322  ,p_actual_flag           IN OUT VARCHAR2
268323  ,p_balance_type_code     OUT VARCHAR2
268324  ,p_gain_or_loss_ref      OUT VARCHAR2
268325  
268326 --TRANSACTION_ID
268327  , p_source_1            IN NUMBER
268328 --Item Concatenated Segments
268329  , p_source_2            IN VARCHAR2
268330 --Transaction Quantity
268331  , p_source_3            IN NUMBER
268332 --Transaction Unit of Measure Code
268333  , p_source_4            IN VARCHAR2
268334 --Inventory Transaction Type Description
268335  , p_source_5            IN VARCHAR2
268336 --Cost Management Default Account
268337  , p_source_11            IN NUMBER
268338 --DISTRIBUTION_IDENTIFIER
268339  , p_source_84            IN NUMBER
268340 --Distribution Type
268341  , p_source_85            IN VARCHAR2
268342  , p_source_85_meaning    IN VARCHAR2
268343 --Entered Currency Code
268344  , p_source_88            IN VARCHAR2
268345 --Entered Amount
268346  , p_source_91            IN NUMBER
268347 --Currency Conversion Date
268348  , p_source_92            IN DATE
268349 --Currency Conversion Rate
268350  , p_source_93            IN NUMBER
268351 --Currency Conversion Type
268352  , p_source_94            IN VARCHAR2
268353 --Accounted Amount
268354  , p_source_95            IN NUMBER
268355 --Accounting Line Type
268356  , p_source_97            IN NUMBER
268357 )
268358 IS
268359 
268360 l_component_type              VARCHAR2(80);
268361 l_component_code              VARCHAR2(30);
268362 l_component_type_code         VARCHAR2(1);
268363 l_component_appl_id           INTEGER;
268364 l_amb_context_code            VARCHAR2(30);
268365 l_entity_code                 VARCHAR2(30);
268366 l_event_class_code            VARCHAR2(30);
268367 l_ae_header_id                NUMBER;
268368 l_event_type_code             VARCHAR2(30);
268369 l_line_definition_code        VARCHAR2(30);
268370 l_line_definition_owner_code  VARCHAR2(1);
268371 --
268372 -- adr variables
268373 l_segment                     VARCHAR2(30);
268374 l_ccid                        NUMBER;
268375 l_adr_transaction_coa_id      NUMBER;
268376 l_adr_accounting_coa_id       NUMBER;
268377 l_adr_flexfield_segment_code  VARCHAR2(30);
268378 l_adr_flex_value_set_id       NUMBER;
268379 l_adr_value_type_code         VARCHAR2(30);
268380 l_adr_value_combination_id    NUMBER;
268381 l_adr_value_segment_code      VARCHAR2(30);
268382 
268383 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
268384 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
268385 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
268386 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
268387 
268388 -- 4262811 Variables ------------------------------------------------------------------------------------------
268389 l_entered_amt_idx             NUMBER;
268390 l_accted_amt_idx              NUMBER;
268391 l_acc_rev_flag                VARCHAR2(1);
268392 l_accrual_line_num            NUMBER;
268393 l_tmp_amt                     NUMBER;
268394 l_acc_rev_natural_side_code   VARCHAR2(1);
268395 
268396 l_num_entries                 NUMBER;
268397 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
268398 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
268399 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
268400 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
268401 l_recog_line_1                NUMBER;
268402 l_recog_line_2                NUMBER;
268403 
268404 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
268405 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
268406 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
268407 
268408 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
268409 
268410 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
268411 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
268412 
268413 ---------------------------------------------------------------------------------------------------------------
268414 
268415 
268416 --
268417 -- bulk performance
268418 --
268419 l_balance_type_code           VARCHAR2(1);
268420 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
268421 l_log_module                  VARCHAR2(240);
268422 
268423 --
268424 -- Upgrade strategy
268425 --
268426 l_actual_upg_option           VARCHAR2(1);
268427 l_enc_upg_option           VARCHAR2(1);
268428 
268429 --
268430 BEGIN
268431 --
268432 IF g_log_enabled THEN
268433       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_481';
268434 END IF;
268435 --
268436 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
268437 
268438       trace
268439          (p_msg      => 'BEGIN of AcctLineType_481'
268440          ,p_level    => C_LEVEL_PROCEDURE
268441          ,p_module   => l_log_module);
268442 
268443 END IF;
268444 --
268445 l_component_type             := 'AMB_JLT';
268446 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
268447 l_component_type_code        := 'S';
268448 l_component_appl_id          :=  707;
268449 l_amb_context_code           := 'DEFAULT';
268450 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
268451 l_event_class_code           := 'DIR_INTERORG_SHIP';
268452 l_event_type_code            := 'DIR_INTERORG_SHIP_ALL';
268453 l_line_definition_owner_code := 'S';
268454 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
268455 --
268456 l_balance_type_code          := 'A';
268457 l_segment                     := NULL;
268458 l_ccid                        := NULL;
268459 l_adr_transaction_coa_id      := NULL;
268460 l_adr_accounting_coa_id       := NULL;
268461 l_adr_flexfield_segment_code  := NULL;
268462 l_adr_flex_value_set_id       := NULL;
268463 l_adr_value_type_code         := NULL;
268464 l_adr_value_combination_id    := NULL;
268465 l_adr_value_segment_code      := NULL;
268466 
268467 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
268468 l_bflow_class_code           := '';    -- 4219869 Business Flow
268469 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
268470 l_budgetary_control_flag     := 'N';
268471 
268472 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
268473 l_bflow_applied_to_amt       := NULL; -- 5132302
268474 l_entered_amt_idx            := NULL;          -- 4262811
268475 l_accted_amt_idx             := NULL;          -- 4262811
268476 l_acc_rev_flag               := NULL;          -- 4262811
268477 l_accrual_line_num           := NULL;          -- 4262811
268478 l_tmp_amt                    := NULL;          -- 4262811
268479 --
268480  
268481 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
268482     l_balance_type_code <> 'B' THEN
268483 IF NVL(p_source_97,9E125) =  6
268484  THEN 
268485 
268486    --
268487    XLA_AE_LINES_PKG.SetNewLine;
268488 
268489    p_balance_type_code          := l_balance_type_code;
268490    -- set the flag so later we will know whether the gain loss line needs to be created
268491    
268492    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
268493      p_actual_flag :='A';
268494    END IF;
268495 
268496    --
268497    -- bulk performance
268498    --
268499    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
268500                                       p_header_num   => 0); -- 4262811
268501    --
268502    -- set accounting line options
268503    --
268504    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
268505            p_natural_side_code          => 'D'
268506          , p_gain_or_loss_flag          => 'N'
268507          , p_gl_transfer_mode_code      => 'S'
268508          , p_acct_entry_type_code       => 'A'
268509          , p_switch_side_flag           => 'Y'
268510          , p_merge_duplicate_code       => 'N'
268511          );
268512    --
268513    l_acc_rev_natural_side_code := 'C';  -- 4262811
268514    -- 
268515    --
268516    -- set accounting line type info
268517    --
268518    xla_ae_lines_pkg.SetAcctLineType
268519       (p_component_type             => l_component_type
268520       ,p_event_type_code            => l_event_type_code
268521       ,p_line_definition_owner_code => l_line_definition_owner_code
268522       ,p_line_definition_code       => l_line_definition_code
268523       ,p_accounting_line_code       => l_component_code
268524       ,p_accounting_line_type_code  => l_component_type_code
268525       ,p_accounting_line_appl_id    => l_component_appl_id
268526       ,p_amb_context_code           => l_amb_context_code
268527       ,p_entity_code                => l_entity_code
268528       ,p_event_class_code           => l_event_class_code);
268529    --
268530    -- set accounting class
268531    --
268532    xla_ae_lines_pkg.SetAcctClass(
268533            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
268534          , p_ae_header_id           => l_ae_header_id
268535          );
268536 
268537    --
268538    -- set rounding class
268539    --
268540    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
268541                       'PURCHASE_PRICE_VARIANCE';
268542 
268543    --
268544    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
268545    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
268546    --
268547    -- bulk performance
268548    --
268549    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
268550 
268551    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
268552       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
268553 
268554    -- 4955764
268555    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
268556       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
268557 
268558    -- 4458381 Public Sector Enh
268559    
268560    --
268561    -- set accounting attributes for the line type
268562    --
268563    l_entered_amt_idx := 3;
268564    l_accted_amt_idx  := 8;
268565    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
268566    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
268567    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
268568    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
268569    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
268570    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
268571    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
268572    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
268573    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
268574    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
268575    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
268576    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
268577    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
268578    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
268579    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
268580    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
268581    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
268582 
268583    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
268584    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
268585 
268586    ---------------------------------------------------------------------------------------------------------------
268587    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
268588    ---------------------------------------------------------------------------------------------------------------
268589    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
268590 
268591    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
268592    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
268593 
268594    IF xla_accounting_cache_pkg.GetValueChar
268595          (p_source_code         => 'LEDGER_CATEGORY_CODE'
268596          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
268597    AND l_bflow_method_code = 'PRIOR_ENTRY'
268598 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
268599    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
268600          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
268601        )
268602    THEN
268603          xla_ae_lines_pkg.BflowUpgEntry
268604            (p_business_method_code    => l_bflow_method_code
268605            ,p_business_class_code     => l_bflow_class_code
268606            ,p_balance_type            => l_balance_type_code);
268607    ELSE
268608       NULL;
268609 -- No business flow processing for business flow method of NONE.
268610    END IF;
268611 
268612    --
268613    -- call analytical criteria
268614    --
268615    
268616    --
268617    -- call description
268618    --
268619    
268620 xla_ae_lines_pkg.SetLineDescription(
268621    p_ae_header_id => l_ae_header_id
268622   ,p_description  => Description_1 (
268623      p_application_id         => p_application_id
268624    , p_ae_header_id           => l_ae_header_id 
268625 , p_source_1 => p_source_1
268626 , p_source_2 => p_source_2
268627 , p_source_3 => p_source_3
268628 , p_source_4 => p_source_4
268629 , p_source_5 => p_source_5
268630    )
268631 );
268632 
268633 
268634    --
268635    -- call ADRs
268636    -- Bug 4922099
268637    --
268638    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
268639         (NVL(l_actual_upg_option, 'N') = 'O') OR
268640         (NVL(l_enc_upg_option, 'N') = 'O')
268641       )
268642    THEN
268643    NULL;
268644    --
268645    --
268646    
268647   l_ccid := AcctDerRule_6(
268648            p_application_id           => p_application_id
268649          , p_ae_header_id             => l_ae_header_id 
268650 , p_source_11 => p_source_11
268651          , x_transaction_coa_id       => l_adr_transaction_coa_id
268652          , x_accounting_coa_id        => l_adr_accounting_coa_id
268653          , x_value_type_code          => l_adr_value_type_code
268654          , p_side                     => 'NA'
268655    );
268656 
268657    xla_ae_lines_pkg.set_ccid(
268658     p_code_combination_id          => l_ccid
268659   , p_value_type_code              => l_adr_value_type_code
268660   , p_transaction_coa_id           => l_adr_transaction_coa_id
268661   , p_accounting_coa_id            => l_adr_accounting_coa_id
268662   , p_adr_code                     => 'CST_DEFAULT'
268663   , p_adr_type_code                => 'S'
268664   , p_component_type               => l_component_type
268665   , p_component_code               => l_component_code
268666   , p_component_type_code          => l_component_type_code
268667   , p_component_appl_id            => l_component_appl_id
268668   , p_amb_context_code             => l_amb_context_code
268669   , p_side                         => 'NA'
268670   );
268671 
268672 
268673    --
268674    --
268675    END IF;
268676    --
268677    -- Bug 4922099
268678    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
268679           (NVL(l_enc_upg_option, 'N') = 'O')
268680         ) AND
268681         (l_bflow_method_code = 'PRIOR_ENTRY')
268682       )
268683    THEN
268684       IF
268685       --
268686       1 = 2
268687       --
268688       THEN
268689       xla_accounting_err_pkg.build_message
268690                                     (p_appli_s_name            => 'XLA'
268691                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
268692                                     ,p_token_1                 => 'LINE_NUMBER'
268693                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
268694                                     ,p_token_2                 => 'LINE_TYPE_NAME'
268695                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
268696                                                                              l_component_type
268697                                                                             ,l_component_code
268698                                                                             ,l_component_type_code
268699                                                                             ,l_component_appl_id
268700                                                                             ,l_amb_context_code
268701                                                                             ,l_entity_code
268702                                                                             ,l_event_class_code
268703                                                                            )
268704                                     ,p_token_3                 => 'OWNER'
268705                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
268706                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
268707                                                                           ,p_lookup_code    => l_component_type_code
268708                                                                          )
268709                                     ,p_token_4                 => 'PRODUCT_NAME'
268710                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
268711                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
268712                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
268713                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
268714                                     ,p_ae_header_id            =>  NULL
268715                                        );
268716 
268717         IF (C_LEVEL_ERROR>= g_log_level) THEN
268718                  trace
268719                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
268720                       ,p_level    => C_LEVEL_ERROR
268721                       ,p_module   => l_log_module);
268722         END IF;
268723       END IF;
268724    END IF;
268725    --
268726    --
268727    ------------------------------------------------------------------------------------------------
268728    -- 4219869 Business Flow
268729    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
268730    -- Prior Entry.  Currently, the following code is always generated.
268731    ------------------------------------------------------------------------------------------------
268732    XLA_AE_LINES_PKG.ValidateCurrentLine;
268733 
268734    ------------------------------------------------------------------------------------
268735    -- 4219869 Business Flow
268736    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
268737    ------------------------------------------------------------------------------------
268738    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
268739 
268740    ----------------------------------------------------------------------------------
268741    -- 4219869 Business Flow
268742    -- Update journal entry status -- Need to generate this within IF <condition>
268743    ----------------------------------------------------------------------------------
268744    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
268745          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
268746          ,p_balance_type_code => l_balance_type_code
268747          );
268748 
268749    -------------------------------------------------------------------------------------------
268750    -- 4262811 - Generate the Accrual Reversal lines
268751    -------------------------------------------------------------------------------------------
268752    BEGIN
268753       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
268754                               (g_array_event(p_event_id).array_value_num('header_index'));
268755       IF l_acc_rev_flag IS NULL THEN
268756          l_acc_rev_flag := 'N';
268757       END IF;
268758    EXCEPTION
268759       WHEN OTHERS THEN
268760          l_acc_rev_flag := 'N';
268761    END;
268762    --
268763    IF (l_acc_rev_flag = 'Y') THEN
268764 
268765        -- 4645092  ------------------------------------------------------------------------------
268766        -- To allow MPA report to determine if it should generate report process
268767        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
268768        ------------------------------------------------------------------------------------------
268769 
268770        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
268771        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
268772    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
268773    -- call ADRs
268774    -- Bug 4922099
268775    --
268776    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
268777         (NVL(l_actual_upg_option, 'N') = 'O') OR
268778         (NVL(l_enc_upg_option, 'N') = 'O')
268779       )
268780    THEN
268781    NULL;
268782    --
268783    --
268784    
268785   l_ccid := AcctDerRule_6(
268786            p_application_id           => p_application_id
268787          , p_ae_header_id             => l_ae_header_id 
268788 , p_source_11 => p_source_11
268789          , x_transaction_coa_id       => l_adr_transaction_coa_id
268790          , x_accounting_coa_id        => l_adr_accounting_coa_id
268791          , x_value_type_code          => l_adr_value_type_code
268792          , p_side                     => 'NA'
268793    );
268794 
268795    xla_ae_lines_pkg.set_ccid(
268796     p_code_combination_id          => l_ccid
268797   , p_value_type_code              => l_adr_value_type_code
268798   , p_transaction_coa_id           => l_adr_transaction_coa_id
268799   , p_accounting_coa_id            => l_adr_accounting_coa_id
268800   , p_adr_code                     => 'CST_DEFAULT'
268801   , p_adr_type_code                => 'S'
268802   , p_component_type               => l_component_type
268803   , p_component_code               => l_component_code
268804   , p_component_type_code          => l_component_type_code
268805   , p_component_appl_id            => l_component_appl_id
268806   , p_amb_context_code             => l_amb_context_code
268807   , p_side                         => 'NA'
268808   );
268809 
268810 
268811    --
268812    --
268813    END IF;
268814 
268815        --
268816        -- Update the line information that should be overwritten
268817        --
268818        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
268819                                          p_header_num   => 1);
268820        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
268821 
268822        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
268823 
268824        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
268825           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
268826        END IF;
268827 
268828       --
268829       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
268830       --
268831       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
268832           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
268833       ELSE
268834           ---------------------------------------------------------------------------------------------------
268835           -- 4262811a Switch Sign
268836           ---------------------------------------------------------------------------------------------------
268837           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
268838           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
268839                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
268840           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
268841                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
268842           -- 5132302
268843           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
268844                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
268845 
268846       END IF;
268847 
268848       -- 4955764
268849       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
268850       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
268851 
268852 
268853       XLA_AE_LINES_PKG.ValidateCurrentLine;
268854       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
268855 
268856       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
268857                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
268858                ,p_balance_type_code => l_balance_type_code);
268859 
268860    END IF;
268861 
268862    -----------------------------------------------------------------------------------------
268863    -- 4262811 Multiperiod Accounting
268864    -----------------------------------------------------------------------------------------
268865      -- No MPA option is assigned.
268866 
268867 
268868 END IF;
268869 END IF;
268870 --
268871 
268872 --
268873 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
268874    trace
268875       (p_msg      => 'END of AcctLineType_481'
268876       ,p_level    => C_LEVEL_PROCEDURE
268877       ,p_module   => l_log_module);
268878 END IF;
268879 --
268880 EXCEPTION
268881   WHEN xla_exceptions_pkg.application_exception THEN
268882       RAISE;
268883   WHEN OTHERS THEN
268884        xla_exceptions_pkg.raise_message
268885            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_481');
268886 END AcctLineType_481;
268887 --
268888 
268889 ---------------------------------------
268890 --
268891 -- PRIVATE FUNCTION
268892 --         AcctLineType_482
268893 --
268894 ---------------------------------------
268895 PROCEDURE AcctLineType_482 (
268896   p_application_id        IN NUMBER
268897  ,p_event_id              IN NUMBER
268898  ,p_calculate_acctd_flag  IN VARCHAR2
268899  ,p_calculate_g_l_flag    IN VARCHAR2
268900  ,p_actual_flag           IN OUT VARCHAR2
268901  ,p_balance_type_code     OUT VARCHAR2
268902  ,p_gain_or_loss_ref      OUT VARCHAR2
268903  
268904 --TRANSACTION_ID
268905  , p_source_1            IN NUMBER
268906 --Item Concatenated Segments
268907  , p_source_2            IN VARCHAR2
268908 --Transaction Quantity
268909  , p_source_3            IN NUMBER
268910 --Transaction Unit of Measure Code
268911  , p_source_4            IN VARCHAR2
268912 --Inventory Transaction Type Description
268913  , p_source_5            IN VARCHAR2
268914 --Interorg Price Variance Account
268915  , p_source_36            IN NUMBER
268916 --DISTRIBUTION_IDENTIFIER
268917  , p_source_84            IN NUMBER
268918 --Distribution Type
268919  , p_source_85            IN VARCHAR2
268920  , p_source_85_meaning    IN VARCHAR2
268921 --Entered Currency Code
268922  , p_source_88            IN VARCHAR2
268923 --Entered Amount
268924  , p_source_91            IN NUMBER
268925 --Currency Conversion Date
268926  , p_source_92            IN DATE
268927 --Currency Conversion Rate
268928  , p_source_93            IN NUMBER
268929 --Currency Conversion Type
268930  , p_source_94            IN VARCHAR2
268931 --Accounted Amount
268932  , p_source_95            IN NUMBER
268933 --Accounting Line Type
268934  , p_source_97            IN NUMBER
268935 )
268936 IS
268937 
268938 l_component_type              VARCHAR2(80);
268939 l_component_code              VARCHAR2(30);
268940 l_component_type_code         VARCHAR2(1);
268941 l_component_appl_id           INTEGER;
268942 l_amb_context_code            VARCHAR2(30);
268943 l_entity_code                 VARCHAR2(30);
268944 l_event_class_code            VARCHAR2(30);
268945 l_ae_header_id                NUMBER;
268946 l_event_type_code             VARCHAR2(30);
268947 l_line_definition_code        VARCHAR2(30);
268948 l_line_definition_owner_code  VARCHAR2(1);
268949 --
268950 -- adr variables
268951 l_segment                     VARCHAR2(30);
268952 l_ccid                        NUMBER;
268953 l_adr_transaction_coa_id      NUMBER;
268954 l_adr_accounting_coa_id       NUMBER;
268955 l_adr_flexfield_segment_code  VARCHAR2(30);
268956 l_adr_flex_value_set_id       NUMBER;
268957 l_adr_value_type_code         VARCHAR2(30);
268958 l_adr_value_combination_id    NUMBER;
268959 l_adr_value_segment_code      VARCHAR2(30);
268960 
268961 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
268962 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
268963 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
268964 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
268965 
268966 -- 4262811 Variables ------------------------------------------------------------------------------------------
268967 l_entered_amt_idx             NUMBER;
268968 l_accted_amt_idx              NUMBER;
268969 l_acc_rev_flag                VARCHAR2(1);
268970 l_accrual_line_num            NUMBER;
268971 l_tmp_amt                     NUMBER;
268972 l_acc_rev_natural_side_code   VARCHAR2(1);
268973 
268974 l_num_entries                 NUMBER;
268975 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
268976 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
268977 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
268978 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
268979 l_recog_line_1                NUMBER;
268980 l_recog_line_2                NUMBER;
268981 
268982 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
268983 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
268984 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
268985 
268986 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
268987 
268988 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
268989 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
268990 
268991 ---------------------------------------------------------------------------------------------------------------
268992 
268993 
268994 --
268995 -- bulk performance
268996 --
268997 l_balance_type_code           VARCHAR2(1);
268998 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
268999 l_log_module                  VARCHAR2(240);
269000 
269001 --
269002 -- Upgrade strategy
269003 --
269004 l_actual_upg_option           VARCHAR2(1);
269005 l_enc_upg_option           VARCHAR2(1);
269006 
269007 --
269008 BEGIN
269009 --
269010 IF g_log_enabled THEN
269011       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_482';
269012 END IF;
269013 --
269014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
269015 
269016       trace
269017          (p_msg      => 'BEGIN of AcctLineType_482'
269018          ,p_level    => C_LEVEL_PROCEDURE
269019          ,p_module   => l_log_module);
269020 
269021 END IF;
269022 --
269023 l_component_type             := 'AMB_JLT';
269024 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
269025 l_component_type_code        := 'S';
269026 l_component_appl_id          :=  707;
269027 l_amb_context_code           := 'DEFAULT';
269028 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
269029 l_event_class_code           := 'USER_DEFINE';
269030 l_event_type_code            := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
269031 l_line_definition_owner_code := 'S';
269032 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
269033 --
269034 l_balance_type_code          := 'A';
269035 l_segment                     := NULL;
269036 l_ccid                        := NULL;
269037 l_adr_transaction_coa_id      := NULL;
269038 l_adr_accounting_coa_id       := NULL;
269039 l_adr_flexfield_segment_code  := NULL;
269040 l_adr_flex_value_set_id       := NULL;
269041 l_adr_value_type_code         := NULL;
269042 l_adr_value_combination_id    := NULL;
269043 l_adr_value_segment_code      := NULL;
269044 
269045 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
269046 l_bflow_class_code           := '';    -- 4219869 Business Flow
269047 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
269048 l_budgetary_control_flag     := 'N';
269049 
269050 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
269051 l_bflow_applied_to_amt       := NULL; -- 5132302
269052 l_entered_amt_idx            := NULL;          -- 4262811
269053 l_accted_amt_idx             := NULL;          -- 4262811
269054 l_acc_rev_flag               := NULL;          -- 4262811
269055 l_accrual_line_num           := NULL;          -- 4262811
269056 l_tmp_amt                    := NULL;          -- 4262811
269057 --
269058  
269059 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
269060     l_balance_type_code <> 'B' THEN
269061 IF NVL(p_source_97,9E125) =  6
269062  THEN 
269063 
269064    --
269065    XLA_AE_LINES_PKG.SetNewLine;
269066 
269067    p_balance_type_code          := l_balance_type_code;
269068    -- set the flag so later we will know whether the gain loss line needs to be created
269069    
269070    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
269071      p_actual_flag :='A';
269072    END IF;
269073 
269074    --
269075    -- bulk performance
269076    --
269077    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
269078                                       p_header_num   => 0); -- 4262811
269079    --
269080    -- set accounting line options
269081    --
269082    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
269083            p_natural_side_code          => 'D'
269084          , p_gain_or_loss_flag          => 'N'
269085          , p_gl_transfer_mode_code      => 'S'
269086          , p_acct_entry_type_code       => 'A'
269087          , p_switch_side_flag           => 'Y'
269088          , p_merge_duplicate_code       => 'N'
269089          );
269090    --
269091    l_acc_rev_natural_side_code := 'C';  -- 4262811
269092    -- 
269093    --
269094    -- set accounting line type info
269095    --
269096    xla_ae_lines_pkg.SetAcctLineType
269097       (p_component_type             => l_component_type
269098       ,p_event_type_code            => l_event_type_code
269099       ,p_line_definition_owner_code => l_line_definition_owner_code
269100       ,p_line_definition_code       => l_line_definition_code
269101       ,p_accounting_line_code       => l_component_code
269102       ,p_accounting_line_type_code  => l_component_type_code
269103       ,p_accounting_line_appl_id    => l_component_appl_id
269104       ,p_amb_context_code           => l_amb_context_code
269105       ,p_entity_code                => l_entity_code
269106       ,p_event_class_code           => l_event_class_code);
269107    --
269108    -- set accounting class
269109    --
269110    xla_ae_lines_pkg.SetAcctClass(
269111            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
269112          , p_ae_header_id           => l_ae_header_id
269113          );
269114 
269115    --
269116    -- set rounding class
269117    --
269118    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
269119                       'PURCHASE_PRICE_VARIANCE';
269120 
269121    --
269122    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
269123    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
269124    --
269125    -- bulk performance
269126    --
269127    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
269128 
269129    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
269130       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
269131 
269132    -- 4955764
269133    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
269134       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
269135 
269136    -- 4458381 Public Sector Enh
269137    
269138    --
269139    -- set accounting attributes for the line type
269140    --
269141    l_entered_amt_idx := 3;
269142    l_accted_amt_idx  := 8;
269143    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
269144    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
269145    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
269146    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
269147    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
269148    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
269149    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
269150    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
269151    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
269152    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
269153    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
269154    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
269155    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
269156    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
269157    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
269158    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
269159    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
269160 
269161    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
269162    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
269163 
269164    ---------------------------------------------------------------------------------------------------------------
269165    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
269166    ---------------------------------------------------------------------------------------------------------------
269167    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
269168 
269169    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
269170    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
269171 
269172    IF xla_accounting_cache_pkg.GetValueChar
269173          (p_source_code         => 'LEDGER_CATEGORY_CODE'
269174          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
269175    AND l_bflow_method_code = 'PRIOR_ENTRY'
269176 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
269177    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
269178          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
269179        )
269180    THEN
269181          xla_ae_lines_pkg.BflowUpgEntry
269182            (p_business_method_code    => l_bflow_method_code
269183            ,p_business_class_code     => l_bflow_class_code
269184            ,p_balance_type            => l_balance_type_code);
269185    ELSE
269186       NULL;
269187 -- No business flow processing for business flow method of NONE.
269188    END IF;
269189 
269190    --
269191    -- call analytical criteria
269192    --
269193    
269194    --
269195    -- call description
269196    --
269197    
269198 xla_ae_lines_pkg.SetLineDescription(
269199    p_ae_header_id => l_ae_header_id
269200   ,p_description  => Description_1 (
269201      p_application_id         => p_application_id
269202    , p_ae_header_id           => l_ae_header_id 
269203 , p_source_1 => p_source_1
269204 , p_source_2 => p_source_2
269205 , p_source_3 => p_source_3
269206 , p_source_4 => p_source_4
269207 , p_source_5 => p_source_5
269208    )
269209 );
269210 
269211 
269212    --
269213    -- call ADRs
269214    -- Bug 4922099
269215    --
269216    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
269217         (NVL(l_actual_upg_option, 'N') = 'O') OR
269218         (NVL(l_enc_upg_option, 'N') = 'O')
269219       )
269220    THEN
269221    NULL;
269222    --
269223    --
269224    
269225   l_ccid := AcctDerRule_21(
269226            p_application_id           => p_application_id
269227          , p_ae_header_id             => l_ae_header_id 
269228 , p_source_36 => p_source_36
269229          , x_transaction_coa_id       => l_adr_transaction_coa_id
269230          , x_accounting_coa_id        => l_adr_accounting_coa_id
269231          , x_value_type_code          => l_adr_value_type_code
269232          , p_side                     => 'NA'
269233    );
269234 
269235    xla_ae_lines_pkg.set_ccid(
269236     p_code_combination_id          => l_ccid
269237   , p_value_type_code              => l_adr_value_type_code
269238   , p_transaction_coa_id           => l_adr_transaction_coa_id
269239   , p_accounting_coa_id            => l_adr_accounting_coa_id
269240   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
269241   , p_adr_type_code                => 'S'
269242   , p_component_type               => l_component_type
269243   , p_component_code               => l_component_code
269244   , p_component_type_code          => l_component_type_code
269245   , p_component_appl_id            => l_component_appl_id
269246   , p_amb_context_code             => l_amb_context_code
269247   , p_side                         => 'NA'
269248   );
269249 
269250 
269251    --
269252    --
269253    END IF;
269254    --
269255    -- Bug 4922099
269256    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
269257           (NVL(l_enc_upg_option, 'N') = 'O')
269258         ) AND
269259         (l_bflow_method_code = 'PRIOR_ENTRY')
269260       )
269261    THEN
269262       IF
269263       --
269264       1 = 2
269265       --
269266       THEN
269267       xla_accounting_err_pkg.build_message
269268                                     (p_appli_s_name            => 'XLA'
269269                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
269270                                     ,p_token_1                 => 'LINE_NUMBER'
269271                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
269272                                     ,p_token_2                 => 'LINE_TYPE_NAME'
269273                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
269274                                                                              l_component_type
269275                                                                             ,l_component_code
269276                                                                             ,l_component_type_code
269277                                                                             ,l_component_appl_id
269278                                                                             ,l_amb_context_code
269279                                                                             ,l_entity_code
269280                                                                             ,l_event_class_code
269281                                                                            )
269282                                     ,p_token_3                 => 'OWNER'
269283                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
269284                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
269285                                                                           ,p_lookup_code    => l_component_type_code
269286                                                                          )
269287                                     ,p_token_4                 => 'PRODUCT_NAME'
269288                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
269289                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
269290                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
269291                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
269292                                     ,p_ae_header_id            =>  NULL
269293                                        );
269294 
269295         IF (C_LEVEL_ERROR>= g_log_level) THEN
269296                  trace
269297                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
269298                       ,p_level    => C_LEVEL_ERROR
269299                       ,p_module   => l_log_module);
269300         END IF;
269301       END IF;
269302    END IF;
269303    --
269304    --
269305    ------------------------------------------------------------------------------------------------
269306    -- 4219869 Business Flow
269307    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
269308    -- Prior Entry.  Currently, the following code is always generated.
269309    ------------------------------------------------------------------------------------------------
269310    XLA_AE_LINES_PKG.ValidateCurrentLine;
269311 
269312    ------------------------------------------------------------------------------------
269313    -- 4219869 Business Flow
269314    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
269315    ------------------------------------------------------------------------------------
269316    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
269317 
269318    ----------------------------------------------------------------------------------
269319    -- 4219869 Business Flow
269320    -- Update journal entry status -- Need to generate this within IF <condition>
269321    ----------------------------------------------------------------------------------
269322    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
269323          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
269324          ,p_balance_type_code => l_balance_type_code
269325          );
269326 
269327    -------------------------------------------------------------------------------------------
269328    -- 4262811 - Generate the Accrual Reversal lines
269329    -------------------------------------------------------------------------------------------
269330    BEGIN
269331       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
269332                               (g_array_event(p_event_id).array_value_num('header_index'));
269333       IF l_acc_rev_flag IS NULL THEN
269334          l_acc_rev_flag := 'N';
269335       END IF;
269336    EXCEPTION
269337       WHEN OTHERS THEN
269338          l_acc_rev_flag := 'N';
269339    END;
269340    --
269341    IF (l_acc_rev_flag = 'Y') THEN
269342 
269343        -- 4645092  ------------------------------------------------------------------------------
269344        -- To allow MPA report to determine if it should generate report process
269345        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
269346        ------------------------------------------------------------------------------------------
269347 
269348        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
269349        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
269350    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
269351    -- call ADRs
269352    -- Bug 4922099
269353    --
269354    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
269355         (NVL(l_actual_upg_option, 'N') = 'O') OR
269356         (NVL(l_enc_upg_option, 'N') = 'O')
269357       )
269358    THEN
269359    NULL;
269360    --
269361    --
269362    
269363   l_ccid := AcctDerRule_21(
269364            p_application_id           => p_application_id
269365          , p_ae_header_id             => l_ae_header_id 
269366 , p_source_36 => p_source_36
269367          , x_transaction_coa_id       => l_adr_transaction_coa_id
269368          , x_accounting_coa_id        => l_adr_accounting_coa_id
269369          , x_value_type_code          => l_adr_value_type_code
269370          , p_side                     => 'NA'
269371    );
269372 
269373    xla_ae_lines_pkg.set_ccid(
269374     p_code_combination_id          => l_ccid
269375   , p_value_type_code              => l_adr_value_type_code
269376   , p_transaction_coa_id           => l_adr_transaction_coa_id
269377   , p_accounting_coa_id            => l_adr_accounting_coa_id
269378   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
269379   , p_adr_type_code                => 'S'
269380   , p_component_type               => l_component_type
269381   , p_component_code               => l_component_code
269382   , p_component_type_code          => l_component_type_code
269383   , p_component_appl_id            => l_component_appl_id
269384   , p_amb_context_code             => l_amb_context_code
269385   , p_side                         => 'NA'
269386   );
269387 
269388 
269389    --
269390    --
269391    END IF;
269392 
269393        --
269394        -- Update the line information that should be overwritten
269395        --
269396        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
269397                                          p_header_num   => 1);
269398        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
269399 
269400        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
269401 
269402        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
269403           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
269404        END IF;
269405 
269406       --
269407       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
269408       --
269409       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
269410           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
269411       ELSE
269412           ---------------------------------------------------------------------------------------------------
269413           -- 4262811a Switch Sign
269414           ---------------------------------------------------------------------------------------------------
269415           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
269416           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
269417                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
269418           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
269419                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
269420           -- 5132302
269421           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
269422                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
269423 
269424       END IF;
269425 
269426       -- 4955764
269427       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
269428       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
269429 
269430 
269431       XLA_AE_LINES_PKG.ValidateCurrentLine;
269432       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
269433 
269434       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
269435                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
269436                ,p_balance_type_code => l_balance_type_code);
269437 
269438    END IF;
269439 
269440    -----------------------------------------------------------------------------------------
269441    -- 4262811 Multiperiod Accounting
269442    -----------------------------------------------------------------------------------------
269443      -- No MPA option is assigned.
269444 
269445 
269446 END IF;
269447 END IF;
269448 --
269449 
269450 --
269451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
269452    trace
269453       (p_msg      => 'END of AcctLineType_482'
269454       ,p_level    => C_LEVEL_PROCEDURE
269455       ,p_module   => l_log_module);
269456 END IF;
269457 --
269458 EXCEPTION
269459   WHEN xla_exceptions_pkg.application_exception THEN
269460       RAISE;
269461   WHEN OTHERS THEN
269462        xla_exceptions_pkg.raise_message
269463            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_482');
269464 END AcctLineType_482;
269465 --
269466 
269467 ---------------------------------------
269468 --
269469 -- PRIVATE FUNCTION
269470 --         AcctLineType_483
269471 --
269472 ---------------------------------------
269473 PROCEDURE AcctLineType_483 (
269474   p_application_id        IN NUMBER
269475  ,p_event_id              IN NUMBER
269476  ,p_calculate_acctd_flag  IN VARCHAR2
269477  ,p_calculate_g_l_flag    IN VARCHAR2
269478  ,p_actual_flag           IN OUT VARCHAR2
269479  ,p_balance_type_code     OUT VARCHAR2
269480  ,p_gain_or_loss_ref      OUT VARCHAR2
269481  
269482 --TRANSACTION_ID
269483  , p_source_1            IN NUMBER
269484 --Item Concatenated Segments
269485  , p_source_2            IN VARCHAR2
269486 --Transaction Quantity
269487  , p_source_3            IN NUMBER
269488 --Transaction Unit of Measure Code
269489  , p_source_4            IN VARCHAR2
269490 --Inventory Transaction Type Description
269491  , p_source_5            IN VARCHAR2
269492 --Cost Management Default Account
269493  , p_source_11            IN NUMBER
269494 --DISTRIBUTION_IDENTIFIER
269495  , p_source_84            IN NUMBER
269496 --Distribution Type
269497  , p_source_85            IN VARCHAR2
269498  , p_source_85_meaning    IN VARCHAR2
269499 --Entered Currency Code
269500  , p_source_88            IN VARCHAR2
269501 --Entered Amount
269502  , p_source_91            IN NUMBER
269503 --Currency Conversion Date
269504  , p_source_92            IN DATE
269505 --Currency Conversion Rate
269506  , p_source_93            IN NUMBER
269507 --Currency Conversion Type
269508  , p_source_94            IN VARCHAR2
269509 --Accounted Amount
269510  , p_source_95            IN NUMBER
269511 --Accounting Line Type
269512  , p_source_97            IN NUMBER
269513 )
269514 IS
269515 
269516 l_component_type              VARCHAR2(80);
269517 l_component_code              VARCHAR2(30);
269518 l_component_type_code         VARCHAR2(1);
269519 l_component_appl_id           INTEGER;
269520 l_amb_context_code            VARCHAR2(30);
269521 l_entity_code                 VARCHAR2(30);
269522 l_event_class_code            VARCHAR2(30);
269523 l_ae_header_id                NUMBER;
269524 l_event_type_code             VARCHAR2(30);
269525 l_line_definition_code        VARCHAR2(30);
269526 l_line_definition_owner_code  VARCHAR2(1);
269527 --
269528 -- adr variables
269529 l_segment                     VARCHAR2(30);
269530 l_ccid                        NUMBER;
269531 l_adr_transaction_coa_id      NUMBER;
269532 l_adr_accounting_coa_id       NUMBER;
269533 l_adr_flexfield_segment_code  VARCHAR2(30);
269534 l_adr_flex_value_set_id       NUMBER;
269535 l_adr_value_type_code         VARCHAR2(30);
269536 l_adr_value_combination_id    NUMBER;
269537 l_adr_value_segment_code      VARCHAR2(30);
269538 
269539 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
269540 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
269541 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
269542 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
269543 
269544 -- 4262811 Variables ------------------------------------------------------------------------------------------
269545 l_entered_amt_idx             NUMBER;
269546 l_accted_amt_idx              NUMBER;
269547 l_acc_rev_flag                VARCHAR2(1);
269548 l_accrual_line_num            NUMBER;
269549 l_tmp_amt                     NUMBER;
269550 l_acc_rev_natural_side_code   VARCHAR2(1);
269551 
269552 l_num_entries                 NUMBER;
269553 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
269554 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
269555 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
269556 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
269557 l_recog_line_1                NUMBER;
269558 l_recog_line_2                NUMBER;
269559 
269560 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
269561 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
269562 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
269563 
269564 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
269565 
269566 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
269567 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
269568 
269569 ---------------------------------------------------------------------------------------------------------------
269570 
269571 
269572 --
269573 -- bulk performance
269574 --
269575 l_balance_type_code           VARCHAR2(1);
269576 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
269577 l_log_module                  VARCHAR2(240);
269578 
269579 --
269580 -- Upgrade strategy
269581 --
269582 l_actual_upg_option           VARCHAR2(1);
269583 l_enc_upg_option           VARCHAR2(1);
269584 
269585 --
269586 BEGIN
269587 --
269588 IF g_log_enabled THEN
269589       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_483';
269590 END IF;
269591 --
269592 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
269593 
269594       trace
269595          (p_msg      => 'BEGIN of AcctLineType_483'
269596          ,p_level    => C_LEVEL_PROCEDURE
269597          ,p_module   => l_log_module);
269598 
269599 END IF;
269600 --
269601 l_component_type             := 'AMB_JLT';
269602 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
269603 l_component_type_code        := 'S';
269604 l_component_appl_id          :=  707;
269605 l_amb_context_code           := 'DEFAULT';
269606 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
269607 l_event_class_code           := 'USER_DEFINE';
269608 l_event_type_code            := 'UDIR_INTERORG_RCPT_TP';
269609 l_line_definition_owner_code := 'S';
269610 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT_TP';
269611 --
269612 l_balance_type_code          := 'A';
269613 l_segment                     := NULL;
269614 l_ccid                        := NULL;
269615 l_adr_transaction_coa_id      := NULL;
269616 l_adr_accounting_coa_id       := NULL;
269617 l_adr_flexfield_segment_code  := NULL;
269618 l_adr_flex_value_set_id       := NULL;
269619 l_adr_value_type_code         := NULL;
269620 l_adr_value_combination_id    := NULL;
269621 l_adr_value_segment_code      := NULL;
269622 
269623 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
269624 l_bflow_class_code           := '';    -- 4219869 Business Flow
269625 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
269626 l_budgetary_control_flag     := 'N';
269627 
269628 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
269629 l_bflow_applied_to_amt       := NULL; -- 5132302
269630 l_entered_amt_idx            := NULL;          -- 4262811
269631 l_accted_amt_idx             := NULL;          -- 4262811
269632 l_acc_rev_flag               := NULL;          -- 4262811
269633 l_accrual_line_num           := NULL;          -- 4262811
269634 l_tmp_amt                    := NULL;          -- 4262811
269635 --
269636  
269637 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
269638     l_balance_type_code <> 'B' THEN
269639 IF NVL(p_source_97,9E125) =  6
269640  THEN 
269641 
269642    --
269643    XLA_AE_LINES_PKG.SetNewLine;
269644 
269645    p_balance_type_code          := l_balance_type_code;
269646    -- set the flag so later we will know whether the gain loss line needs to be created
269647    
269648    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
269649      p_actual_flag :='A';
269650    END IF;
269651 
269652    --
269653    -- bulk performance
269654    --
269655    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
269656                                       p_header_num   => 0); -- 4262811
269657    --
269658    -- set accounting line options
269659    --
269660    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
269661            p_natural_side_code          => 'D'
269662          , p_gain_or_loss_flag          => 'N'
269663          , p_gl_transfer_mode_code      => 'S'
269664          , p_acct_entry_type_code       => 'A'
269665          , p_switch_side_flag           => 'Y'
269666          , p_merge_duplicate_code       => 'N'
269667          );
269668    --
269669    l_acc_rev_natural_side_code := 'C';  -- 4262811
269670    -- 
269671    --
269672    -- set accounting line type info
269673    --
269674    xla_ae_lines_pkg.SetAcctLineType
269675       (p_component_type             => l_component_type
269676       ,p_event_type_code            => l_event_type_code
269677       ,p_line_definition_owner_code => l_line_definition_owner_code
269678       ,p_line_definition_code       => l_line_definition_code
269679       ,p_accounting_line_code       => l_component_code
269680       ,p_accounting_line_type_code  => l_component_type_code
269681       ,p_accounting_line_appl_id    => l_component_appl_id
269682       ,p_amb_context_code           => l_amb_context_code
269683       ,p_entity_code                => l_entity_code
269684       ,p_event_class_code           => l_event_class_code);
269685    --
269686    -- set accounting class
269687    --
269688    xla_ae_lines_pkg.SetAcctClass(
269689            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
269690          , p_ae_header_id           => l_ae_header_id
269691          );
269692 
269693    --
269694    -- set rounding class
269695    --
269696    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
269697                       'PURCHASE_PRICE_VARIANCE';
269698 
269699    --
269700    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
269701    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
269702    --
269703    -- bulk performance
269704    --
269705    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
269706 
269707    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
269708       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
269709 
269710    -- 4955764
269711    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
269712       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
269713 
269714    -- 4458381 Public Sector Enh
269715    
269716    --
269717    -- set accounting attributes for the line type
269718    --
269719    l_entered_amt_idx := 3;
269720    l_accted_amt_idx  := 8;
269721    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
269722    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
269723    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
269724    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
269725    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
269726    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
269727    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
269728    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
269729    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
269730    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
269731    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
269732    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
269733    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
269734    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
269735    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
269736    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
269737    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
269738 
269739    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
269740    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
269741 
269742    ---------------------------------------------------------------------------------------------------------------
269743    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
269744    ---------------------------------------------------------------------------------------------------------------
269745    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
269746 
269747    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
269748    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
269749 
269750    IF xla_accounting_cache_pkg.GetValueChar
269751          (p_source_code         => 'LEDGER_CATEGORY_CODE'
269752          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
269753    AND l_bflow_method_code = 'PRIOR_ENTRY'
269754 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
269755    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
269756          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
269757        )
269758    THEN
269759          xla_ae_lines_pkg.BflowUpgEntry
269760            (p_business_method_code    => l_bflow_method_code
269761            ,p_business_class_code     => l_bflow_class_code
269762            ,p_balance_type            => l_balance_type_code);
269763    ELSE
269764       NULL;
269765 -- No business flow processing for business flow method of NONE.
269766    END IF;
269767 
269768    --
269769    -- call analytical criteria
269770    --
269771    
269772    --
269773    -- call description
269774    --
269775    
269776 xla_ae_lines_pkg.SetLineDescription(
269777    p_ae_header_id => l_ae_header_id
269778   ,p_description  => Description_1 (
269779      p_application_id         => p_application_id
269780    , p_ae_header_id           => l_ae_header_id 
269781 , p_source_1 => p_source_1
269782 , p_source_2 => p_source_2
269783 , p_source_3 => p_source_3
269784 , p_source_4 => p_source_4
269785 , p_source_5 => p_source_5
269786    )
269787 );
269788 
269789 
269790    --
269791    -- call ADRs
269792    -- Bug 4922099
269793    --
269794    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
269795         (NVL(l_actual_upg_option, 'N') = 'O') OR
269796         (NVL(l_enc_upg_option, 'N') = 'O')
269797       )
269798    THEN
269799    NULL;
269800    --
269801    --
269802    
269803   l_ccid := AcctDerRule_6(
269804            p_application_id           => p_application_id
269805          , p_ae_header_id             => l_ae_header_id 
269806 , p_source_11 => p_source_11
269807          , x_transaction_coa_id       => l_adr_transaction_coa_id
269808          , x_accounting_coa_id        => l_adr_accounting_coa_id
269809          , x_value_type_code          => l_adr_value_type_code
269810          , p_side                     => 'NA'
269811    );
269812 
269813    xla_ae_lines_pkg.set_ccid(
269814     p_code_combination_id          => l_ccid
269815   , p_value_type_code              => l_adr_value_type_code
269816   , p_transaction_coa_id           => l_adr_transaction_coa_id
269817   , p_accounting_coa_id            => l_adr_accounting_coa_id
269818   , p_adr_code                     => 'CST_DEFAULT'
269819   , p_adr_type_code                => 'S'
269820   , p_component_type               => l_component_type
269821   , p_component_code               => l_component_code
269822   , p_component_type_code          => l_component_type_code
269823   , p_component_appl_id            => l_component_appl_id
269824   , p_amb_context_code             => l_amb_context_code
269825   , p_side                         => 'NA'
269826   );
269827 
269828 
269829    --
269830    --
269831    END IF;
269832    --
269833    -- Bug 4922099
269834    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
269835           (NVL(l_enc_upg_option, 'N') = 'O')
269836         ) AND
269837         (l_bflow_method_code = 'PRIOR_ENTRY')
269838       )
269839    THEN
269840       IF
269841       --
269842       1 = 2
269843       --
269844       THEN
269845       xla_accounting_err_pkg.build_message
269846                                     (p_appli_s_name            => 'XLA'
269847                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
269848                                     ,p_token_1                 => 'LINE_NUMBER'
269849                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
269850                                     ,p_token_2                 => 'LINE_TYPE_NAME'
269851                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
269852                                                                              l_component_type
269853                                                                             ,l_component_code
269854                                                                             ,l_component_type_code
269855                                                                             ,l_component_appl_id
269856                                                                             ,l_amb_context_code
269857                                                                             ,l_entity_code
269858                                                                             ,l_event_class_code
269859                                                                            )
269860                                     ,p_token_3                 => 'OWNER'
269861                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
269862                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
269863                                                                           ,p_lookup_code    => l_component_type_code
269864                                                                          )
269865                                     ,p_token_4                 => 'PRODUCT_NAME'
269866                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
269867                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
269868                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
269869                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
269870                                     ,p_ae_header_id            =>  NULL
269871                                        );
269872 
269873         IF (C_LEVEL_ERROR>= g_log_level) THEN
269874                  trace
269875                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
269876                       ,p_level    => C_LEVEL_ERROR
269877                       ,p_module   => l_log_module);
269878         END IF;
269879       END IF;
269880    END IF;
269881    --
269882    --
269883    ------------------------------------------------------------------------------------------------
269884    -- 4219869 Business Flow
269885    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
269886    -- Prior Entry.  Currently, the following code is always generated.
269887    ------------------------------------------------------------------------------------------------
269888    XLA_AE_LINES_PKG.ValidateCurrentLine;
269889 
269890    ------------------------------------------------------------------------------------
269891    -- 4219869 Business Flow
269892    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
269893    ------------------------------------------------------------------------------------
269894    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
269895 
269896    ----------------------------------------------------------------------------------
269897    -- 4219869 Business Flow
269898    -- Update journal entry status -- Need to generate this within IF <condition>
269899    ----------------------------------------------------------------------------------
269900    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
269901          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
269902          ,p_balance_type_code => l_balance_type_code
269903          );
269904 
269905    -------------------------------------------------------------------------------------------
269906    -- 4262811 - Generate the Accrual Reversal lines
269907    -------------------------------------------------------------------------------------------
269908    BEGIN
269909       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
269910                               (g_array_event(p_event_id).array_value_num('header_index'));
269911       IF l_acc_rev_flag IS NULL THEN
269912          l_acc_rev_flag := 'N';
269913       END IF;
269914    EXCEPTION
269915       WHEN OTHERS THEN
269916          l_acc_rev_flag := 'N';
269917    END;
269918    --
269919    IF (l_acc_rev_flag = 'Y') THEN
269920 
269921        -- 4645092  ------------------------------------------------------------------------------
269922        -- To allow MPA report to determine if it should generate report process
269923        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
269924        ------------------------------------------------------------------------------------------
269925 
269926        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
269927        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
269928    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
269929    -- call ADRs
269930    -- Bug 4922099
269931    --
269932    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
269933         (NVL(l_actual_upg_option, 'N') = 'O') OR
269934         (NVL(l_enc_upg_option, 'N') = 'O')
269935       )
269936    THEN
269937    NULL;
269938    --
269939    --
269940    
269941   l_ccid := AcctDerRule_6(
269942            p_application_id           => p_application_id
269943          , p_ae_header_id             => l_ae_header_id 
269944 , p_source_11 => p_source_11
269945          , x_transaction_coa_id       => l_adr_transaction_coa_id
269946          , x_accounting_coa_id        => l_adr_accounting_coa_id
269947          , x_value_type_code          => l_adr_value_type_code
269948          , p_side                     => 'NA'
269949    );
269950 
269951    xla_ae_lines_pkg.set_ccid(
269952     p_code_combination_id          => l_ccid
269953   , p_value_type_code              => l_adr_value_type_code
269954   , p_transaction_coa_id           => l_adr_transaction_coa_id
269955   , p_accounting_coa_id            => l_adr_accounting_coa_id
269956   , p_adr_code                     => 'CST_DEFAULT'
269957   , p_adr_type_code                => 'S'
269958   , p_component_type               => l_component_type
269959   , p_component_code               => l_component_code
269960   , p_component_type_code          => l_component_type_code
269961   , p_component_appl_id            => l_component_appl_id
269962   , p_amb_context_code             => l_amb_context_code
269963   , p_side                         => 'NA'
269964   );
269965 
269966 
269967    --
269968    --
269969    END IF;
269970 
269971        --
269972        -- Update the line information that should be overwritten
269973        --
269974        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
269975                                          p_header_num   => 1);
269976        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
269977 
269978        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
269979 
269980        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
269981           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
269982        END IF;
269983 
269984       --
269985       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
269986       --
269987       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
269988           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
269989       ELSE
269990           ---------------------------------------------------------------------------------------------------
269991           -- 4262811a Switch Sign
269992           ---------------------------------------------------------------------------------------------------
269993           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
269994           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
269995                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
269996           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
269997                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
269998           -- 5132302
269999           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
270000                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
270001 
270002       END IF;
270003 
270004       -- 4955764
270005       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
270006       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
270007 
270008 
270009       XLA_AE_LINES_PKG.ValidateCurrentLine;
270010       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
270011 
270012       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
270013                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
270014                ,p_balance_type_code => l_balance_type_code);
270015 
270016    END IF;
270017 
270018    -----------------------------------------------------------------------------------------
270019    -- 4262811 Multiperiod Accounting
270020    -----------------------------------------------------------------------------------------
270021      -- No MPA option is assigned.
270022 
270023 
270024 END IF;
270025 END IF;
270026 --
270027 
270028 --
270029 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
270030    trace
270031       (p_msg      => 'END of AcctLineType_483'
270032       ,p_level    => C_LEVEL_PROCEDURE
270033       ,p_module   => l_log_module);
270034 END IF;
270035 --
270036 EXCEPTION
270037   WHEN xla_exceptions_pkg.application_exception THEN
270038       RAISE;
270039   WHEN OTHERS THEN
270040        xla_exceptions_pkg.raise_message
270041            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_483');
270042 END AcctLineType_483;
270043 --
270044 
270045 ---------------------------------------
270046 --
270047 -- PRIVATE FUNCTION
270048 --         AcctLineType_484
270049 --
270050 ---------------------------------------
270051 PROCEDURE AcctLineType_484 (
270052   p_application_id        IN NUMBER
270053  ,p_event_id              IN NUMBER
270054  ,p_calculate_acctd_flag  IN VARCHAR2
270055  ,p_calculate_g_l_flag    IN VARCHAR2
270056  ,p_actual_flag           IN OUT VARCHAR2
270057  ,p_balance_type_code     OUT VARCHAR2
270058  ,p_gain_or_loss_ref      OUT VARCHAR2
270059  
270060 --TRANSACTION_ID
270061  , p_source_1            IN NUMBER
270062 --Item Concatenated Segments
270063  , p_source_2            IN VARCHAR2
270064 --Transaction Quantity
270065  , p_source_3            IN NUMBER
270066 --Transaction Unit of Measure Code
270067  , p_source_4            IN VARCHAR2
270068 --Inventory Transaction Type Description
270069  , p_source_5            IN VARCHAR2
270070 --Cost Management Default Account
270071  , p_source_11            IN NUMBER
270072 --DISTRIBUTION_IDENTIFIER
270073  , p_source_84            IN NUMBER
270074 --Distribution Type
270075  , p_source_85            IN VARCHAR2
270076  , p_source_85_meaning    IN VARCHAR2
270077 --Entered Currency Code
270078  , p_source_88            IN VARCHAR2
270079 --Entered Amount
270080  , p_source_91            IN NUMBER
270081 --Currency Conversion Date
270082  , p_source_92            IN DATE
270083 --Currency Conversion Rate
270084  , p_source_93            IN NUMBER
270085 --Currency Conversion Type
270086  , p_source_94            IN VARCHAR2
270087 --Accounted Amount
270088  , p_source_95            IN NUMBER
270089 --Accounting Line Type
270090  , p_source_97            IN NUMBER
270091 )
270092 IS
270093 
270094 l_component_type              VARCHAR2(80);
270095 l_component_code              VARCHAR2(30);
270096 l_component_type_code         VARCHAR2(1);
270097 l_component_appl_id           INTEGER;
270098 l_amb_context_code            VARCHAR2(30);
270099 l_entity_code                 VARCHAR2(30);
270100 l_event_class_code            VARCHAR2(30);
270101 l_ae_header_id                NUMBER;
270102 l_event_type_code             VARCHAR2(30);
270103 l_line_definition_code        VARCHAR2(30);
270104 l_line_definition_owner_code  VARCHAR2(1);
270105 --
270106 -- adr variables
270107 l_segment                     VARCHAR2(30);
270108 l_ccid                        NUMBER;
270109 l_adr_transaction_coa_id      NUMBER;
270110 l_adr_accounting_coa_id       NUMBER;
270111 l_adr_flexfield_segment_code  VARCHAR2(30);
270112 l_adr_flex_value_set_id       NUMBER;
270113 l_adr_value_type_code         VARCHAR2(30);
270114 l_adr_value_combination_id    NUMBER;
270115 l_adr_value_segment_code      VARCHAR2(30);
270116 
270117 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
270118 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
270119 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
270120 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
270121 
270122 -- 4262811 Variables ------------------------------------------------------------------------------------------
270123 l_entered_amt_idx             NUMBER;
270124 l_accted_amt_idx              NUMBER;
270125 l_acc_rev_flag                VARCHAR2(1);
270126 l_accrual_line_num            NUMBER;
270127 l_tmp_amt                     NUMBER;
270128 l_acc_rev_natural_side_code   VARCHAR2(1);
270129 
270130 l_num_entries                 NUMBER;
270131 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
270132 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
270133 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
270134 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
270135 l_recog_line_1                NUMBER;
270136 l_recog_line_2                NUMBER;
270137 
270138 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
270139 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
270140 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
270141 
270142 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
270143 
270144 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
270145 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
270146 
270147 ---------------------------------------------------------------------------------------------------------------
270148 
270149 
270150 --
270151 -- bulk performance
270152 --
270153 l_balance_type_code           VARCHAR2(1);
270154 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
270155 l_log_module                  VARCHAR2(240);
270156 
270157 --
270158 -- Upgrade strategy
270159 --
270160 l_actual_upg_option           VARCHAR2(1);
270161 l_enc_upg_option           VARCHAR2(1);
270162 
270163 --
270164 BEGIN
270165 --
270166 IF g_log_enabled THEN
270167       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_484';
270168 END IF;
270169 --
270170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
270171 
270172       trace
270173          (p_msg      => 'BEGIN of AcctLineType_484'
270174          ,p_level    => C_LEVEL_PROCEDURE
270175          ,p_module   => l_log_module);
270176 
270177 END IF;
270178 --
270179 l_component_type             := 'AMB_JLT';
270180 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
270181 l_component_type_code        := 'S';
270182 l_component_appl_id          :=  707;
270183 l_amb_context_code           := 'DEFAULT';
270184 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
270185 l_event_class_code           := 'USER_DEFINE';
270186 l_event_type_code            := 'UDIR_INTERORG_RCPT';
270187 l_line_definition_owner_code := 'S';
270188 l_line_definition_code       := 'PI_DIR_INTERORG_RCPT';
270189 --
270190 l_balance_type_code          := 'A';
270191 l_segment                     := NULL;
270192 l_ccid                        := NULL;
270193 l_adr_transaction_coa_id      := NULL;
270194 l_adr_accounting_coa_id       := NULL;
270195 l_adr_flexfield_segment_code  := NULL;
270196 l_adr_flex_value_set_id       := NULL;
270197 l_adr_value_type_code         := NULL;
270198 l_adr_value_combination_id    := NULL;
270199 l_adr_value_segment_code      := NULL;
270200 
270201 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
270202 l_bflow_class_code           := '';    -- 4219869 Business Flow
270203 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
270204 l_budgetary_control_flag     := 'N';
270205 
270206 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
270207 l_bflow_applied_to_amt       := NULL; -- 5132302
270208 l_entered_amt_idx            := NULL;          -- 4262811
270209 l_accted_amt_idx             := NULL;          -- 4262811
270210 l_acc_rev_flag               := NULL;          -- 4262811
270211 l_accrual_line_num           := NULL;          -- 4262811
270212 l_tmp_amt                    := NULL;          -- 4262811
270213 --
270214  
270215 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
270216     l_balance_type_code <> 'B' THEN
270217 IF NVL(p_source_97,9E125) =  6
270218  THEN 
270219 
270220    --
270221    XLA_AE_LINES_PKG.SetNewLine;
270222 
270223    p_balance_type_code          := l_balance_type_code;
270224    -- set the flag so later we will know whether the gain loss line needs to be created
270225    
270226    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
270227      p_actual_flag :='A';
270228    END IF;
270229 
270230    --
270231    -- bulk performance
270232    --
270233    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
270234                                       p_header_num   => 0); -- 4262811
270235    --
270236    -- set accounting line options
270237    --
270238    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
270239            p_natural_side_code          => 'D'
270240          , p_gain_or_loss_flag          => 'N'
270241          , p_gl_transfer_mode_code      => 'S'
270242          , p_acct_entry_type_code       => 'A'
270243          , p_switch_side_flag           => 'Y'
270244          , p_merge_duplicate_code       => 'N'
270245          );
270246    --
270247    l_acc_rev_natural_side_code := 'C';  -- 4262811
270248    -- 
270249    --
270250    -- set accounting line type info
270251    --
270252    xla_ae_lines_pkg.SetAcctLineType
270253       (p_component_type             => l_component_type
270254       ,p_event_type_code            => l_event_type_code
270255       ,p_line_definition_owner_code => l_line_definition_owner_code
270256       ,p_line_definition_code       => l_line_definition_code
270257       ,p_accounting_line_code       => l_component_code
270258       ,p_accounting_line_type_code  => l_component_type_code
270259       ,p_accounting_line_appl_id    => l_component_appl_id
270260       ,p_amb_context_code           => l_amb_context_code
270261       ,p_entity_code                => l_entity_code
270262       ,p_event_class_code           => l_event_class_code);
270263    --
270264    -- set accounting class
270265    --
270266    xla_ae_lines_pkg.SetAcctClass(
270267            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
270268          , p_ae_header_id           => l_ae_header_id
270269          );
270270 
270271    --
270272    -- set rounding class
270273    --
270274    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
270275                       'PURCHASE_PRICE_VARIANCE';
270276 
270277    --
270278    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
270279    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
270280    --
270281    -- bulk performance
270282    --
270283    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
270284 
270285    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
270286       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
270287 
270288    -- 4955764
270289    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
270290       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
270291 
270292    -- 4458381 Public Sector Enh
270293    
270294    --
270295    -- set accounting attributes for the line type
270296    --
270297    l_entered_amt_idx := 3;
270298    l_accted_amt_idx  := 8;
270299    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
270300    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
270301    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
270302    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
270303    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
270304    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
270305    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
270306    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
270307    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
270308    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
270309    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
270310    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
270311    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
270312    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
270313    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
270314    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
270315    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
270316 
270317    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
270318    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
270319 
270320    ---------------------------------------------------------------------------------------------------------------
270321    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
270322    ---------------------------------------------------------------------------------------------------------------
270323    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
270324 
270325    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
270326    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
270327 
270328    IF xla_accounting_cache_pkg.GetValueChar
270329          (p_source_code         => 'LEDGER_CATEGORY_CODE'
270330          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
270331    AND l_bflow_method_code = 'PRIOR_ENTRY'
270332 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
270333    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
270334          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
270335        )
270336    THEN
270337          xla_ae_lines_pkg.BflowUpgEntry
270338            (p_business_method_code    => l_bflow_method_code
270339            ,p_business_class_code     => l_bflow_class_code
270340            ,p_balance_type            => l_balance_type_code);
270341    ELSE
270342       NULL;
270343 -- No business flow processing for business flow method of NONE.
270344    END IF;
270345 
270346    --
270347    -- call analytical criteria
270348    --
270349    
270350    --
270351    -- call description
270352    --
270353    
270354 xla_ae_lines_pkg.SetLineDescription(
270355    p_ae_header_id => l_ae_header_id
270356   ,p_description  => Description_1 (
270357      p_application_id         => p_application_id
270358    , p_ae_header_id           => l_ae_header_id 
270359 , p_source_1 => p_source_1
270360 , p_source_2 => p_source_2
270361 , p_source_3 => p_source_3
270362 , p_source_4 => p_source_4
270363 , p_source_5 => p_source_5
270364    )
270365 );
270366 
270367 
270368    --
270369    -- call ADRs
270370    -- Bug 4922099
270371    --
270372    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
270373         (NVL(l_actual_upg_option, 'N') = 'O') OR
270374         (NVL(l_enc_upg_option, 'N') = 'O')
270375       )
270376    THEN
270377    NULL;
270378    --
270379    --
270380    
270381   l_ccid := AcctDerRule_6(
270382            p_application_id           => p_application_id
270383          , p_ae_header_id             => l_ae_header_id 
270384 , p_source_11 => p_source_11
270385          , x_transaction_coa_id       => l_adr_transaction_coa_id
270386          , x_accounting_coa_id        => l_adr_accounting_coa_id
270387          , x_value_type_code          => l_adr_value_type_code
270388          , p_side                     => 'NA'
270389    );
270390 
270391    xla_ae_lines_pkg.set_ccid(
270392     p_code_combination_id          => l_ccid
270393   , p_value_type_code              => l_adr_value_type_code
270394   , p_transaction_coa_id           => l_adr_transaction_coa_id
270395   , p_accounting_coa_id            => l_adr_accounting_coa_id
270396   , p_adr_code                     => 'CST_DEFAULT'
270397   , p_adr_type_code                => 'S'
270398   , p_component_type               => l_component_type
270399   , p_component_code               => l_component_code
270400   , p_component_type_code          => l_component_type_code
270401   , p_component_appl_id            => l_component_appl_id
270402   , p_amb_context_code             => l_amb_context_code
270403   , p_side                         => 'NA'
270404   );
270405 
270406 
270407    --
270408    --
270409    END IF;
270410    --
270411    -- Bug 4922099
270412    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
270413           (NVL(l_enc_upg_option, 'N') = 'O')
270414         ) AND
270415         (l_bflow_method_code = 'PRIOR_ENTRY')
270416       )
270417    THEN
270418       IF
270419       --
270420       1 = 2
270421       --
270422       THEN
270423       xla_accounting_err_pkg.build_message
270424                                     (p_appli_s_name            => 'XLA'
270425                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
270426                                     ,p_token_1                 => 'LINE_NUMBER'
270427                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
270428                                     ,p_token_2                 => 'LINE_TYPE_NAME'
270429                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
270430                                                                              l_component_type
270431                                                                             ,l_component_code
270432                                                                             ,l_component_type_code
270433                                                                             ,l_component_appl_id
270434                                                                             ,l_amb_context_code
270435                                                                             ,l_entity_code
270436                                                                             ,l_event_class_code
270437                                                                            )
270438                                     ,p_token_3                 => 'OWNER'
270439                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
270440                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
270441                                                                           ,p_lookup_code    => l_component_type_code
270442                                                                          )
270443                                     ,p_token_4                 => 'PRODUCT_NAME'
270444                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
270445                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
270446                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
270447                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
270448                                     ,p_ae_header_id            =>  NULL
270449                                        );
270450 
270451         IF (C_LEVEL_ERROR>= g_log_level) THEN
270452                  trace
270453                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
270454                       ,p_level    => C_LEVEL_ERROR
270455                       ,p_module   => l_log_module);
270456         END IF;
270457       END IF;
270458    END IF;
270459    --
270460    --
270461    ------------------------------------------------------------------------------------------------
270462    -- 4219869 Business Flow
270463    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
270464    -- Prior Entry.  Currently, the following code is always generated.
270465    ------------------------------------------------------------------------------------------------
270466    XLA_AE_LINES_PKG.ValidateCurrentLine;
270467 
270468    ------------------------------------------------------------------------------------
270469    -- 4219869 Business Flow
270470    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
270471    ------------------------------------------------------------------------------------
270472    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
270473 
270474    ----------------------------------------------------------------------------------
270475    -- 4219869 Business Flow
270476    -- Update journal entry status -- Need to generate this within IF <condition>
270477    ----------------------------------------------------------------------------------
270478    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
270479          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
270480          ,p_balance_type_code => l_balance_type_code
270481          );
270482 
270483    -------------------------------------------------------------------------------------------
270484    -- 4262811 - Generate the Accrual Reversal lines
270485    -------------------------------------------------------------------------------------------
270486    BEGIN
270487       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
270488                               (g_array_event(p_event_id).array_value_num('header_index'));
270489       IF l_acc_rev_flag IS NULL THEN
270490          l_acc_rev_flag := 'N';
270491       END IF;
270492    EXCEPTION
270493       WHEN OTHERS THEN
270494          l_acc_rev_flag := 'N';
270495    END;
270496    --
270497    IF (l_acc_rev_flag = 'Y') THEN
270498 
270499        -- 4645092  ------------------------------------------------------------------------------
270500        -- To allow MPA report to determine if it should generate report process
270501        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
270502        ------------------------------------------------------------------------------------------
270503 
270504        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
270505        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
270506    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
270507    -- call ADRs
270508    -- Bug 4922099
270509    --
270510    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
270511         (NVL(l_actual_upg_option, 'N') = 'O') OR
270512         (NVL(l_enc_upg_option, 'N') = 'O')
270513       )
270514    THEN
270515    NULL;
270516    --
270517    --
270518    
270519   l_ccid := AcctDerRule_6(
270520            p_application_id           => p_application_id
270521          , p_ae_header_id             => l_ae_header_id 
270522 , p_source_11 => p_source_11
270523          , x_transaction_coa_id       => l_adr_transaction_coa_id
270524          , x_accounting_coa_id        => l_adr_accounting_coa_id
270525          , x_value_type_code          => l_adr_value_type_code
270526          , p_side                     => 'NA'
270527    );
270528 
270529    xla_ae_lines_pkg.set_ccid(
270530     p_code_combination_id          => l_ccid
270531   , p_value_type_code              => l_adr_value_type_code
270532   , p_transaction_coa_id           => l_adr_transaction_coa_id
270533   , p_accounting_coa_id            => l_adr_accounting_coa_id
270534   , p_adr_code                     => 'CST_DEFAULT'
270535   , p_adr_type_code                => 'S'
270536   , p_component_type               => l_component_type
270537   , p_component_code               => l_component_code
270538   , p_component_type_code          => l_component_type_code
270539   , p_component_appl_id            => l_component_appl_id
270540   , p_amb_context_code             => l_amb_context_code
270541   , p_side                         => 'NA'
270542   );
270543 
270544 
270545    --
270546    --
270547    END IF;
270548 
270549        --
270550        -- Update the line information that should be overwritten
270551        --
270552        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
270553                                          p_header_num   => 1);
270554        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
270555 
270556        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
270557 
270558        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
270559           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
270560        END IF;
270561 
270562       --
270563       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
270564       --
270565       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
270566           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
270567       ELSE
270568           ---------------------------------------------------------------------------------------------------
270569           -- 4262811a Switch Sign
270570           ---------------------------------------------------------------------------------------------------
270571           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
270572           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
270573                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
270574           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
270575                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
270576           -- 5132302
270577           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
270578                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
270579 
270580       END IF;
270581 
270582       -- 4955764
270583       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
270584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
270585 
270586 
270587       XLA_AE_LINES_PKG.ValidateCurrentLine;
270588       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
270589 
270590       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
270591                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
270592                ,p_balance_type_code => l_balance_type_code);
270593 
270594    END IF;
270595 
270596    -----------------------------------------------------------------------------------------
270597    -- 4262811 Multiperiod Accounting
270598    -----------------------------------------------------------------------------------------
270599      -- No MPA option is assigned.
270600 
270601 
270602 END IF;
270603 END IF;
270604 --
270605 
270606 --
270607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
270608    trace
270609       (p_msg      => 'END of AcctLineType_484'
270610       ,p_level    => C_LEVEL_PROCEDURE
270611       ,p_module   => l_log_module);
270612 END IF;
270613 --
270614 EXCEPTION
270615   WHEN xla_exceptions_pkg.application_exception THEN
270616       RAISE;
270617   WHEN OTHERS THEN
270618        xla_exceptions_pkg.raise_message
270619            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_484');
270620 END AcctLineType_484;
270621 --
270622 
270623 ---------------------------------------
270624 --
270625 -- PRIVATE FUNCTION
270626 --         AcctLineType_485
270627 --
270628 ---------------------------------------
270629 PROCEDURE AcctLineType_485 (
270630   p_application_id        IN NUMBER
270631  ,p_event_id              IN NUMBER
270632  ,p_calculate_acctd_flag  IN VARCHAR2
270633  ,p_calculate_g_l_flag    IN VARCHAR2
270634  ,p_actual_flag           IN OUT VARCHAR2
270635  ,p_balance_type_code     OUT VARCHAR2
270636  ,p_gain_or_loss_ref      OUT VARCHAR2
270637  
270638 --TRANSACTION_ID
270639  , p_source_1            IN NUMBER
270640 --Item Concatenated Segments
270641  , p_source_2            IN VARCHAR2
270642 --Transaction Quantity
270643  , p_source_3            IN NUMBER
270644 --Transaction Unit of Measure Code
270645  , p_source_4            IN VARCHAR2
270646 --Inventory Transaction Type Description
270647  , p_source_5            IN VARCHAR2
270648 --Inventory Organization Purchase Price Variance Account
270649  , p_source_58            IN NUMBER
270650 --Applied to Application ID
270651  , p_source_79            IN NUMBER
270652 --Applied to Distribution Link Type
270653  , p_source_80            IN VARCHAR2
270654 --Applied to Entity Code
270655  , p_source_81            IN VARCHAR2
270656 --Applied To Purchase Document Identifier
270657  , p_source_83            IN NUMBER
270658 --DISTRIBUTION_IDENTIFIER
270659  , p_source_84            IN NUMBER
270660 --Distribution Type
270661  , p_source_85            IN VARCHAR2
270662  , p_source_85_meaning    IN VARCHAR2
270663 --PO Budget Account
270664  , p_source_86            IN NUMBER
270665 --Encumbrance Reversal Amount Entered
270666  , p_source_87            IN NUMBER
270667 --Entered Currency Code
270668  , p_source_88            IN VARCHAR2
270669 --Transaction Encumbrance Reversal Amount
270670  , p_source_89            IN NUMBER
270671 --Entered Amount
270672  , p_source_91            IN NUMBER
270673 --Currency Conversion Date
270674  , p_source_92            IN DATE
270675 --Currency Conversion Rate
270676  , p_source_93            IN NUMBER
270677 --Currency Conversion Type
270678  , p_source_94            IN VARCHAR2
270679 --Accounted Amount
270680  , p_source_95            IN NUMBER
270681 --Purchasing Encumbrance Type Identifier
270682  , p_source_96            IN NUMBER
270683 --Accounting Line Type
270684  , p_source_97            IN NUMBER
270685 --Costing Encumbrance Upgrade Option
270686  , p_source_100            IN VARCHAR2
270687 --TXN_PO_DISTRIBUTION_ID
270688  , p_source_101            IN NUMBER
270689 )
270690 IS
270691 
270692 l_component_type              VARCHAR2(80);
270693 l_component_code              VARCHAR2(30);
270694 l_component_type_code         VARCHAR2(1);
270695 l_component_appl_id           INTEGER;
270696 l_amb_context_code            VARCHAR2(30);
270697 l_entity_code                 VARCHAR2(30);
270698 l_event_class_code            VARCHAR2(30);
270699 l_ae_header_id                NUMBER;
270700 l_event_type_code             VARCHAR2(30);
270701 l_line_definition_code        VARCHAR2(30);
270702 l_line_definition_owner_code  VARCHAR2(1);
270703 --
270704 -- adr variables
270705 l_segment                     VARCHAR2(30);
270706 l_ccid                        NUMBER;
270707 l_adr_transaction_coa_id      NUMBER;
270708 l_adr_accounting_coa_id       NUMBER;
270709 l_adr_flexfield_segment_code  VARCHAR2(30);
270710 l_adr_flex_value_set_id       NUMBER;
270711 l_adr_value_type_code         VARCHAR2(30);
270712 l_adr_value_combination_id    NUMBER;
270713 l_adr_value_segment_code      VARCHAR2(30);
270714 
270715 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
270716 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
270717 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
270718 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
270719 
270720 -- 4262811 Variables ------------------------------------------------------------------------------------------
270721 l_entered_amt_idx             NUMBER;
270722 l_accted_amt_idx              NUMBER;
270723 l_acc_rev_flag                VARCHAR2(1);
270724 l_accrual_line_num            NUMBER;
270725 l_tmp_amt                     NUMBER;
270726 l_acc_rev_natural_side_code   VARCHAR2(1);
270727 
270728 l_num_entries                 NUMBER;
270729 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
270730 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
270731 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
270732 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
270733 l_recog_line_1                NUMBER;
270734 l_recog_line_2                NUMBER;
270735 
270736 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
270737 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
270738 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
270739 
270740 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
270741 
270742 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
270743 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
270744 
270745 ---------------------------------------------------------------------------------------------------------------
270746 
270747 
270748 --
270749 -- bulk performance
270750 --
270751 l_balance_type_code           VARCHAR2(1);
270752 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
270753 l_log_module                  VARCHAR2(240);
270754 
270755 --
270756 -- Upgrade strategy
270757 --
270758 l_actual_upg_option           VARCHAR2(1);
270759 l_enc_upg_option           VARCHAR2(1);
270760 
270761 --
270762 BEGIN
270763 --
270764 IF g_log_enabled THEN
270765       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_485';
270766 END IF;
270767 --
270768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
270769 
270770       trace
270771          (p_msg      => 'BEGIN of AcctLineType_485'
270772          ,p_level    => C_LEVEL_PROCEDURE
270773          ,p_module   => l_log_module);
270774 
270775 END IF;
270776 --
270777 l_component_type             := 'AMB_JLT';
270778 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
270779 l_component_type_code        := 'S';
270780 l_component_appl_id          :=  707;
270781 l_amb_context_code           := 'DEFAULT';
270782 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
270783 l_event_class_code           := 'PURCHASE_ORDER';
270784 l_event_type_code            := 'RET_RI_INV';
270785 l_line_definition_owner_code := 'S';
270786 l_line_definition_code       := 'PI_RET_RI_INV';
270787 --
270788 l_balance_type_code          := 'A';
270789 l_segment                     := NULL;
270790 l_ccid                        := NULL;
270791 l_adr_transaction_coa_id      := NULL;
270792 l_adr_accounting_coa_id       := NULL;
270793 l_adr_flexfield_segment_code  := NULL;
270794 l_adr_flex_value_set_id       := NULL;
270795 l_adr_value_type_code         := NULL;
270796 l_adr_value_combination_id    := NULL;
270797 l_adr_value_segment_code      := NULL;
270798 
270799 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
270800 l_bflow_class_code           := '';    -- 4219869 Business Flow
270801 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
270802 l_budgetary_control_flag     := 'N';
270803 
270804 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
270805 l_bflow_applied_to_amt       := NULL; -- 5132302
270806 l_entered_amt_idx            := NULL;          -- 4262811
270807 l_accted_amt_idx             := NULL;          -- 4262811
270808 l_acc_rev_flag               := NULL;          -- 4262811
270809 l_accrual_line_num           := NULL;          -- 4262811
270810 l_tmp_amt                    := NULL;          -- 4262811
270811 --
270812  
270813 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
270814     l_balance_type_code <> 'B' THEN
270815 IF NVL(p_source_97,9E125) =  6
270816  THEN 
270817 
270818    --
270819    XLA_AE_LINES_PKG.SetNewLine;
270820 
270821    p_balance_type_code          := l_balance_type_code;
270822    -- set the flag so later we will know whether the gain loss line needs to be created
270823    
270824    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
270825      p_actual_flag :='A';
270826    END IF;
270827 
270828    --
270829    -- bulk performance
270830    --
270831    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
270832                                       p_header_num   => 0); -- 4262811
270833    --
270834    -- set accounting line options
270835    --
270836    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
270837            p_natural_side_code          => 'D'
270838          , p_gain_or_loss_flag          => 'N'
270839          , p_gl_transfer_mode_code      => 'S'
270840          , p_acct_entry_type_code       => 'A'
270841          , p_switch_side_flag           => 'Y'
270842          , p_merge_duplicate_code       => 'N'
270843          );
270844    --
270845    l_acc_rev_natural_side_code := 'C';  -- 4262811
270846    -- 
270847    --
270848    -- set accounting line type info
270849    --
270850    xla_ae_lines_pkg.SetAcctLineType
270851       (p_component_type             => l_component_type
270852       ,p_event_type_code            => l_event_type_code
270853       ,p_line_definition_owner_code => l_line_definition_owner_code
270854       ,p_line_definition_code       => l_line_definition_code
270855       ,p_accounting_line_code       => l_component_code
270856       ,p_accounting_line_type_code  => l_component_type_code
270857       ,p_accounting_line_appl_id    => l_component_appl_id
270858       ,p_amb_context_code           => l_amb_context_code
270859       ,p_entity_code                => l_entity_code
270860       ,p_event_class_code           => l_event_class_code);
270861    --
270862    -- set accounting class
270863    --
270864    xla_ae_lines_pkg.SetAcctClass(
270865            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
270866          , p_ae_header_id           => l_ae_header_id
270867          );
270868 
270869    --
270870    -- set rounding class
270871    --
270872    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
270873                       'PURCHASE_PRICE_VARIANCE';
270874 
270875    --
270876    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
270877    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
270878    --
270879    -- bulk performance
270880    --
270881    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
270882 
270883    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
270884       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
270885 
270886    -- 4955764
270887    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
270888       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
270889 
270890    -- 4458381 Public Sector Enh
270891    
270892    --
270893    -- set accounting attributes for the line type
270894    --
270895    l_entered_amt_idx := 17;
270896    l_accted_amt_idx  := 22;
270897    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
270898    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
270899    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
270900    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
270901    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
270902    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
270903    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
270904    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
270905    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
270906    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
270907    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
270908    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
270909    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
270910    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
270911    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
270912    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
270913    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
270914    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
270915    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
270916    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
270917    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
270918    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
270919    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
270920    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
270921    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
270922    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
270923    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
270924    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
270925    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
270926    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
270927    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
270928    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
270929    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
270930    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
270931    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
270932    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
270933    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
270934    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
270935    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
270936    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
270937    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
270938    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
270939    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
270940    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
270941    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
270942    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
270943    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
270944    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
270945    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
270946 
270947    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
270948    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
270949 
270950    ---------------------------------------------------------------------------------------------------------------
270951    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
270952    ---------------------------------------------------------------------------------------------------------------
270953    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
270954 
270955    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
270956    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
270957 
270958    IF xla_accounting_cache_pkg.GetValueChar
270959          (p_source_code         => 'LEDGER_CATEGORY_CODE'
270960          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
270961    AND l_bflow_method_code = 'PRIOR_ENTRY'
270962 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
270963    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
270964          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
270965        )
270966    THEN
270967          xla_ae_lines_pkg.BflowUpgEntry
270968            (p_business_method_code    => l_bflow_method_code
270969            ,p_business_class_code     => l_bflow_class_code
270970            ,p_balance_type            => l_balance_type_code);
270971    ELSE
270972       NULL;
270973 -- No business flow processing for business flow method of NONE.
270974    END IF;
270975 
270976    --
270977    -- call analytical criteria
270978    --
270979    
270980    --
270981    -- call description
270982    --
270983    
270984 xla_ae_lines_pkg.SetLineDescription(
270985    p_ae_header_id => l_ae_header_id
270986   ,p_description  => Description_1 (
270987      p_application_id         => p_application_id
270988    , p_ae_header_id           => l_ae_header_id 
270989 , p_source_1 => p_source_1
270990 , p_source_2 => p_source_2
270991 , p_source_3 => p_source_3
270992 , p_source_4 => p_source_4
270993 , p_source_5 => p_source_5
270994    )
270995 );
270996 
270997 
270998    --
270999    -- call ADRs
271000    -- Bug 4922099
271001    --
271002    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
271003         (NVL(l_actual_upg_option, 'N') = 'O') OR
271004         (NVL(l_enc_upg_option, 'N') = 'O')
271005       )
271006    THEN
271007    NULL;
271008    --
271009    --
271010    
271011   l_ccid := AcctDerRule_32(
271012            p_application_id           => p_application_id
271013          , p_ae_header_id             => l_ae_header_id 
271014 , p_source_58 => p_source_58
271015          , x_transaction_coa_id       => l_adr_transaction_coa_id
271016          , x_accounting_coa_id        => l_adr_accounting_coa_id
271017          , x_value_type_code          => l_adr_value_type_code
271018          , p_side                     => 'NA'
271019    );
271020 
271021    xla_ae_lines_pkg.set_ccid(
271022     p_code_combination_id          => l_ccid
271023   , p_value_type_code              => l_adr_value_type_code
271024   , p_transaction_coa_id           => l_adr_transaction_coa_id
271025   , p_accounting_coa_id            => l_adr_accounting_coa_id
271026   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
271027   , p_adr_type_code                => 'S'
271028   , p_component_type               => l_component_type
271029   , p_component_code               => l_component_code
271030   , p_component_type_code          => l_component_type_code
271031   , p_component_appl_id            => l_component_appl_id
271032   , p_amb_context_code             => l_amb_context_code
271033   , p_side                         => 'NA'
271034   );
271035 
271036 
271037    --
271038    --
271039    END IF;
271040    --
271041    -- Bug 4922099
271042    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
271043           (NVL(l_enc_upg_option, 'N') = 'O')
271044         ) AND
271045         (l_bflow_method_code = 'PRIOR_ENTRY')
271046       )
271047    THEN
271048       IF
271049       --
271050       1 = 2
271051       --
271052       THEN
271053       xla_accounting_err_pkg.build_message
271054                                     (p_appli_s_name            => 'XLA'
271055                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
271056                                     ,p_token_1                 => 'LINE_NUMBER'
271057                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
271058                                     ,p_token_2                 => 'LINE_TYPE_NAME'
271059                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
271060                                                                              l_component_type
271061                                                                             ,l_component_code
271062                                                                             ,l_component_type_code
271063                                                                             ,l_component_appl_id
271064                                                                             ,l_amb_context_code
271065                                                                             ,l_entity_code
271066                                                                             ,l_event_class_code
271067                                                                            )
271068                                     ,p_token_3                 => 'OWNER'
271069                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
271070                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
271071                                                                           ,p_lookup_code    => l_component_type_code
271072                                                                          )
271073                                     ,p_token_4                 => 'PRODUCT_NAME'
271074                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
271075                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
271076                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
271077                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
271078                                     ,p_ae_header_id            =>  NULL
271079                                        );
271080 
271081         IF (C_LEVEL_ERROR>= g_log_level) THEN
271082                  trace
271083                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
271084                       ,p_level    => C_LEVEL_ERROR
271085                       ,p_module   => l_log_module);
271086         END IF;
271087       END IF;
271088    END IF;
271089    --
271090    --
271091    ------------------------------------------------------------------------------------------------
271092    -- 4219869 Business Flow
271093    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
271094    -- Prior Entry.  Currently, the following code is always generated.
271095    ------------------------------------------------------------------------------------------------
271096    XLA_AE_LINES_PKG.ValidateCurrentLine;
271097 
271098    ------------------------------------------------------------------------------------
271099    -- 4219869 Business Flow
271100    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
271101    ------------------------------------------------------------------------------------
271102    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
271103 
271104    ----------------------------------------------------------------------------------
271105    -- 4219869 Business Flow
271106    -- Update journal entry status -- Need to generate this within IF <condition>
271107    ----------------------------------------------------------------------------------
271108    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
271109          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
271110          ,p_balance_type_code => l_balance_type_code
271111          );
271112 
271113    -------------------------------------------------------------------------------------------
271114    -- 4262811 - Generate the Accrual Reversal lines
271115    -------------------------------------------------------------------------------------------
271116    BEGIN
271117       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
271118                               (g_array_event(p_event_id).array_value_num('header_index'));
271119       IF l_acc_rev_flag IS NULL THEN
271120          l_acc_rev_flag := 'N';
271121       END IF;
271122    EXCEPTION
271123       WHEN OTHERS THEN
271124          l_acc_rev_flag := 'N';
271125    END;
271126    --
271127    IF (l_acc_rev_flag = 'Y') THEN
271128 
271129        -- 4645092  ------------------------------------------------------------------------------
271130        -- To allow MPA report to determine if it should generate report process
271131        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
271132        ------------------------------------------------------------------------------------------
271133 
271134        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
271135        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
271136    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
271137    -- call ADRs
271138    -- Bug 4922099
271139    --
271140    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
271141         (NVL(l_actual_upg_option, 'N') = 'O') OR
271142         (NVL(l_enc_upg_option, 'N') = 'O')
271143       )
271144    THEN
271145    NULL;
271146    --
271147    --
271148    
271149   l_ccid := AcctDerRule_32(
271150            p_application_id           => p_application_id
271151          , p_ae_header_id             => l_ae_header_id 
271152 , p_source_58 => p_source_58
271153          , x_transaction_coa_id       => l_adr_transaction_coa_id
271154          , x_accounting_coa_id        => l_adr_accounting_coa_id
271155          , x_value_type_code          => l_adr_value_type_code
271156          , p_side                     => 'NA'
271157    );
271158 
271159    xla_ae_lines_pkg.set_ccid(
271160     p_code_combination_id          => l_ccid
271161   , p_value_type_code              => l_adr_value_type_code
271162   , p_transaction_coa_id           => l_adr_transaction_coa_id
271163   , p_accounting_coa_id            => l_adr_accounting_coa_id
271164   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
271165   , p_adr_type_code                => 'S'
271166   , p_component_type               => l_component_type
271167   , p_component_code               => l_component_code
271168   , p_component_type_code          => l_component_type_code
271169   , p_component_appl_id            => l_component_appl_id
271170   , p_amb_context_code             => l_amb_context_code
271171   , p_side                         => 'NA'
271172   );
271173 
271174 
271175    --
271176    --
271177    END IF;
271178 
271179        --
271180        -- Update the line information that should be overwritten
271181        --
271182        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
271183                                          p_header_num   => 1);
271184        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
271185 
271186        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
271187 
271188        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
271189           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
271190        END IF;
271191 
271192       --
271193       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
271194       --
271195       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
271196           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
271197       ELSE
271198           ---------------------------------------------------------------------------------------------------
271199           -- 4262811a Switch Sign
271200           ---------------------------------------------------------------------------------------------------
271201           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
271202           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
271203                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
271204           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
271205                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
271206           -- 5132302
271207           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
271208                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
271209 
271210       END IF;
271211 
271212       -- 4955764
271213       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
271214       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
271215 
271216 
271217       XLA_AE_LINES_PKG.ValidateCurrentLine;
271218       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
271219 
271220       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
271221                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
271222                ,p_balance_type_code => l_balance_type_code);
271223 
271224    END IF;
271225 
271226    -----------------------------------------------------------------------------------------
271227    -- 4262811 Multiperiod Accounting
271228    -----------------------------------------------------------------------------------------
271229      -- No MPA option is assigned.
271230 
271231 
271232 END IF;
271233 END IF;
271234 --
271235 
271236 --
271237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
271238    trace
271239       (p_msg      => 'END of AcctLineType_485'
271240       ,p_level    => C_LEVEL_PROCEDURE
271241       ,p_module   => l_log_module);
271242 END IF;
271243 --
271244 EXCEPTION
271245   WHEN xla_exceptions_pkg.application_exception THEN
271246       RAISE;
271247   WHEN OTHERS THEN
271248        xla_exceptions_pkg.raise_message
271249            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_485');
271250 END AcctLineType_485;
271251 --
271252 
271253 ---------------------------------------
271254 --
271255 -- PRIVATE FUNCTION
271256 --         AcctLineType_486
271257 --
271258 ---------------------------------------
271259 PROCEDURE AcctLineType_486 (
271260   p_application_id        IN NUMBER
271261  ,p_event_id              IN NUMBER
271262  ,p_calculate_acctd_flag  IN VARCHAR2
271263  ,p_calculate_g_l_flag    IN VARCHAR2
271264  ,p_actual_flag           IN OUT VARCHAR2
271265  ,p_balance_type_code     OUT VARCHAR2
271266  ,p_gain_or_loss_ref      OUT VARCHAR2
271267  
271268 --TRANSACTION_ID
271269  , p_source_1            IN NUMBER
271270 --Item Concatenated Segments
271271  , p_source_2            IN VARCHAR2
271272 --Transaction Quantity
271273  , p_source_3            IN NUMBER
271274 --Transaction Unit of Measure Code
271275  , p_source_4            IN VARCHAR2
271276 --Inventory Transaction Type Description
271277  , p_source_5            IN VARCHAR2
271278 --Interorg Price Variance Account
271279  , p_source_36            IN NUMBER
271280 --DISTRIBUTION_IDENTIFIER
271281  , p_source_84            IN NUMBER
271282 --Distribution Type
271283  , p_source_85            IN VARCHAR2
271284  , p_source_85_meaning    IN VARCHAR2
271285 --Entered Currency Code
271286  , p_source_88            IN VARCHAR2
271287 --Entered Amount
271288  , p_source_91            IN NUMBER
271289 --Currency Conversion Date
271290  , p_source_92            IN DATE
271291 --Currency Conversion Rate
271292  , p_source_93            IN NUMBER
271293 --Currency Conversion Type
271294  , p_source_94            IN VARCHAR2
271295 --Accounted Amount
271296  , p_source_95            IN NUMBER
271297 --Accounting Line Type
271298  , p_source_97            IN NUMBER
271299 )
271300 IS
271301 
271302 l_component_type              VARCHAR2(80);
271303 l_component_code              VARCHAR2(30);
271304 l_component_type_code         VARCHAR2(1);
271305 l_component_appl_id           INTEGER;
271306 l_amb_context_code            VARCHAR2(30);
271307 l_entity_code                 VARCHAR2(30);
271308 l_event_class_code            VARCHAR2(30);
271309 l_ae_header_id                NUMBER;
271310 l_event_type_code             VARCHAR2(30);
271311 l_line_definition_code        VARCHAR2(30);
271312 l_line_definition_owner_code  VARCHAR2(1);
271313 --
271314 -- adr variables
271315 l_segment                     VARCHAR2(30);
271316 l_ccid                        NUMBER;
271317 l_adr_transaction_coa_id      NUMBER;
271318 l_adr_accounting_coa_id       NUMBER;
271319 l_adr_flexfield_segment_code  VARCHAR2(30);
271320 l_adr_flex_value_set_id       NUMBER;
271321 l_adr_value_type_code         VARCHAR2(30);
271322 l_adr_value_combination_id    NUMBER;
271323 l_adr_value_segment_code      VARCHAR2(30);
271324 
271325 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
271326 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
271327 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
271328 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
271329 
271330 -- 4262811 Variables ------------------------------------------------------------------------------------------
271331 l_entered_amt_idx             NUMBER;
271332 l_accted_amt_idx              NUMBER;
271333 l_acc_rev_flag                VARCHAR2(1);
271334 l_accrual_line_num            NUMBER;
271335 l_tmp_amt                     NUMBER;
271336 l_acc_rev_natural_side_code   VARCHAR2(1);
271337 
271338 l_num_entries                 NUMBER;
271339 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
271340 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
271341 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
271342 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
271343 l_recog_line_1                NUMBER;
271344 l_recog_line_2                NUMBER;
271345 
271346 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
271347 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
271348 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
271349 
271350 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
271351 
271352 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
271353 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
271354 
271355 ---------------------------------------------------------------------------------------------------------------
271356 
271357 
271358 --
271359 -- bulk performance
271360 --
271361 l_balance_type_code           VARCHAR2(1);
271362 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
271363 l_log_module                  VARCHAR2(240);
271364 
271365 --
271366 -- Upgrade strategy
271367 --
271368 l_actual_upg_option           VARCHAR2(1);
271369 l_enc_upg_option           VARCHAR2(1);
271370 
271371 --
271372 BEGIN
271373 --
271374 IF g_log_enabled THEN
271375       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_486';
271376 END IF;
271377 --
271378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
271379 
271380       trace
271381          (p_msg      => 'BEGIN of AcctLineType_486'
271382          ,p_level    => C_LEVEL_PROCEDURE
271383          ,p_module   => l_log_module);
271384 
271385 END IF;
271386 --
271387 l_component_type             := 'AMB_JLT';
271388 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
271389 l_component_type_code        := 'S';
271390 l_component_appl_id          :=  707;
271391 l_amb_context_code           := 'DEFAULT';
271392 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
271393 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
271394 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_TP';
271395 l_line_definition_owner_code := 'S';
271396 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_TP';
271397 --
271398 l_balance_type_code          := 'A';
271399 l_segment                     := NULL;
271400 l_ccid                        := NULL;
271401 l_adr_transaction_coa_id      := NULL;
271402 l_adr_accounting_coa_id       := NULL;
271403 l_adr_flexfield_segment_code  := NULL;
271404 l_adr_flex_value_set_id       := NULL;
271405 l_adr_value_type_code         := NULL;
271406 l_adr_value_combination_id    := NULL;
271407 l_adr_value_segment_code      := NULL;
271408 
271409 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
271410 l_bflow_class_code           := '';    -- 4219869 Business Flow
271411 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
271412 l_budgetary_control_flag     := 'N';
271413 
271414 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
271415 l_bflow_applied_to_amt       := NULL; -- 5132302
271416 l_entered_amt_idx            := NULL;          -- 4262811
271417 l_accted_amt_idx             := NULL;          -- 4262811
271418 l_acc_rev_flag               := NULL;          -- 4262811
271419 l_accrual_line_num           := NULL;          -- 4262811
271420 l_tmp_amt                    := NULL;          -- 4262811
271421 --
271422  
271423 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
271424     l_balance_type_code <> 'B' THEN
271425 IF NVL(p_source_97,9E125) =  6
271426  THEN 
271427 
271428    --
271429    XLA_AE_LINES_PKG.SetNewLine;
271430 
271431    p_balance_type_code          := l_balance_type_code;
271432    -- set the flag so later we will know whether the gain loss line needs to be created
271433    
271434    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
271435      p_actual_flag :='A';
271436    END IF;
271437 
271438    --
271439    -- bulk performance
271440    --
271441    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
271442                                       p_header_num   => 0); -- 4262811
271443    --
271444    -- set accounting line options
271445    --
271446    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
271447            p_natural_side_code          => 'D'
271448          , p_gain_or_loss_flag          => 'N'
271449          , p_gl_transfer_mode_code      => 'S'
271450          , p_acct_entry_type_code       => 'A'
271451          , p_switch_side_flag           => 'Y'
271452          , p_merge_duplicate_code       => 'N'
271453          );
271454    --
271455    l_acc_rev_natural_side_code := 'C';  -- 4262811
271456    -- 
271457    --
271458    -- set accounting line type info
271459    --
271460    xla_ae_lines_pkg.SetAcctLineType
271461       (p_component_type             => l_component_type
271462       ,p_event_type_code            => l_event_type_code
271463       ,p_line_definition_owner_code => l_line_definition_owner_code
271464       ,p_line_definition_code       => l_line_definition_code
271465       ,p_accounting_line_code       => l_component_code
271466       ,p_accounting_line_type_code  => l_component_type_code
271467       ,p_accounting_line_appl_id    => l_component_appl_id
271468       ,p_amb_context_code           => l_amb_context_code
271469       ,p_entity_code                => l_entity_code
271470       ,p_event_class_code           => l_event_class_code);
271471    --
271472    -- set accounting class
271473    --
271474    xla_ae_lines_pkg.SetAcctClass(
271475            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
271476          , p_ae_header_id           => l_ae_header_id
271477          );
271478 
271479    --
271480    -- set rounding class
271481    --
271482    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
271483                       'PURCHASE_PRICE_VARIANCE';
271484 
271485    --
271486    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
271487    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
271488    --
271489    -- bulk performance
271490    --
271491    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
271492 
271493    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
271494       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
271495 
271496    -- 4955764
271497    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
271498       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
271499 
271500    -- 4458381 Public Sector Enh
271501    
271502    --
271503    -- set accounting attributes for the line type
271504    --
271505    l_entered_amt_idx := 3;
271506    l_accted_amt_idx  := 8;
271507    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
271508    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
271509    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
271510    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
271511    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
271512    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
271513    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
271514    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
271515    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
271516    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
271517    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
271518    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
271519    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
271520    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
271521    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
271522    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
271523    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
271524 
271525    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
271526    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
271527 
271528    ---------------------------------------------------------------------------------------------------------------
271529    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
271530    ---------------------------------------------------------------------------------------------------------------
271531    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
271532 
271533    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
271534    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
271535 
271536    IF xla_accounting_cache_pkg.GetValueChar
271537          (p_source_code         => 'LEDGER_CATEGORY_CODE'
271538          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
271539    AND l_bflow_method_code = 'PRIOR_ENTRY'
271540 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
271541    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
271542          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
271543        )
271544    THEN
271545          xla_ae_lines_pkg.BflowUpgEntry
271546            (p_business_method_code    => l_bflow_method_code
271547            ,p_business_class_code     => l_bflow_class_code
271548            ,p_balance_type            => l_balance_type_code);
271549    ELSE
271550       NULL;
271551 -- No business flow processing for business flow method of NONE.
271552    END IF;
271553 
271554    --
271555    -- call analytical criteria
271556    --
271557    
271558    --
271559    -- call description
271560    --
271561    
271562 xla_ae_lines_pkg.SetLineDescription(
271563    p_ae_header_id => l_ae_header_id
271564   ,p_description  => Description_1 (
271565      p_application_id         => p_application_id
271566    , p_ae_header_id           => l_ae_header_id 
271567 , p_source_1 => p_source_1
271568 , p_source_2 => p_source_2
271569 , p_source_3 => p_source_3
271570 , p_source_4 => p_source_4
271571 , p_source_5 => p_source_5
271572    )
271573 );
271574 
271575 
271576    --
271577    -- call ADRs
271578    -- Bug 4922099
271579    --
271580    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
271581         (NVL(l_actual_upg_option, 'N') = 'O') OR
271582         (NVL(l_enc_upg_option, 'N') = 'O')
271583       )
271584    THEN
271585    NULL;
271586    --
271587    --
271588    
271589   l_ccid := AcctDerRule_21(
271590            p_application_id           => p_application_id
271591          , p_ae_header_id             => l_ae_header_id 
271592 , p_source_36 => p_source_36
271593          , x_transaction_coa_id       => l_adr_transaction_coa_id
271594          , x_accounting_coa_id        => l_adr_accounting_coa_id
271595          , x_value_type_code          => l_adr_value_type_code
271596          , p_side                     => 'NA'
271597    );
271598 
271599    xla_ae_lines_pkg.set_ccid(
271600     p_code_combination_id          => l_ccid
271601   , p_value_type_code              => l_adr_value_type_code
271602   , p_transaction_coa_id           => l_adr_transaction_coa_id
271603   , p_accounting_coa_id            => l_adr_accounting_coa_id
271604   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
271605   , p_adr_type_code                => 'S'
271606   , p_component_type               => l_component_type
271607   , p_component_code               => l_component_code
271608   , p_component_type_code          => l_component_type_code
271609   , p_component_appl_id            => l_component_appl_id
271610   , p_amb_context_code             => l_amb_context_code
271611   , p_side                         => 'NA'
271612   );
271613 
271614 
271615    --
271616    --
271617    END IF;
271618    --
271619    -- Bug 4922099
271620    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
271621           (NVL(l_enc_upg_option, 'N') = 'O')
271622         ) AND
271623         (l_bflow_method_code = 'PRIOR_ENTRY')
271624       )
271625    THEN
271626       IF
271627       --
271628       1 = 2
271629       --
271630       THEN
271631       xla_accounting_err_pkg.build_message
271632                                     (p_appli_s_name            => 'XLA'
271633                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
271634                                     ,p_token_1                 => 'LINE_NUMBER'
271635                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
271636                                     ,p_token_2                 => 'LINE_TYPE_NAME'
271637                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
271638                                                                              l_component_type
271639                                                                             ,l_component_code
271640                                                                             ,l_component_type_code
271641                                                                             ,l_component_appl_id
271642                                                                             ,l_amb_context_code
271643                                                                             ,l_entity_code
271644                                                                             ,l_event_class_code
271645                                                                            )
271646                                     ,p_token_3                 => 'OWNER'
271647                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
271648                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
271649                                                                           ,p_lookup_code    => l_component_type_code
271650                                                                          )
271651                                     ,p_token_4                 => 'PRODUCT_NAME'
271652                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
271653                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
271654                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
271655                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
271656                                     ,p_ae_header_id            =>  NULL
271657                                        );
271658 
271659         IF (C_LEVEL_ERROR>= g_log_level) THEN
271660                  trace
271661                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
271662                       ,p_level    => C_LEVEL_ERROR
271663                       ,p_module   => l_log_module);
271664         END IF;
271665       END IF;
271666    END IF;
271667    --
271668    --
271669    ------------------------------------------------------------------------------------------------
271670    -- 4219869 Business Flow
271671    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
271672    -- Prior Entry.  Currently, the following code is always generated.
271673    ------------------------------------------------------------------------------------------------
271674    XLA_AE_LINES_PKG.ValidateCurrentLine;
271675 
271676    ------------------------------------------------------------------------------------
271677    -- 4219869 Business Flow
271678    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
271679    ------------------------------------------------------------------------------------
271680    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
271681 
271682    ----------------------------------------------------------------------------------
271683    -- 4219869 Business Flow
271684    -- Update journal entry status -- Need to generate this within IF <condition>
271685    ----------------------------------------------------------------------------------
271686    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
271687          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
271688          ,p_balance_type_code => l_balance_type_code
271689          );
271690 
271691    -------------------------------------------------------------------------------------------
271692    -- 4262811 - Generate the Accrual Reversal lines
271693    -------------------------------------------------------------------------------------------
271694    BEGIN
271695       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
271696                               (g_array_event(p_event_id).array_value_num('header_index'));
271697       IF l_acc_rev_flag IS NULL THEN
271698          l_acc_rev_flag := 'N';
271699       END IF;
271700    EXCEPTION
271701       WHEN OTHERS THEN
271702          l_acc_rev_flag := 'N';
271703    END;
271704    --
271705    IF (l_acc_rev_flag = 'Y') THEN
271706 
271707        -- 4645092  ------------------------------------------------------------------------------
271708        -- To allow MPA report to determine if it should generate report process
271709        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
271710        ------------------------------------------------------------------------------------------
271711 
271712        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
271713        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
271714    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
271715    -- call ADRs
271716    -- Bug 4922099
271717    --
271718    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
271719         (NVL(l_actual_upg_option, 'N') = 'O') OR
271720         (NVL(l_enc_upg_option, 'N') = 'O')
271721       )
271722    THEN
271723    NULL;
271724    --
271725    --
271726    
271727   l_ccid := AcctDerRule_21(
271728            p_application_id           => p_application_id
271729          , p_ae_header_id             => l_ae_header_id 
271730 , p_source_36 => p_source_36
271731          , x_transaction_coa_id       => l_adr_transaction_coa_id
271732          , x_accounting_coa_id        => l_adr_accounting_coa_id
271733          , x_value_type_code          => l_adr_value_type_code
271734          , p_side                     => 'NA'
271735    );
271736 
271737    xla_ae_lines_pkg.set_ccid(
271738     p_code_combination_id          => l_ccid
271739   , p_value_type_code              => l_adr_value_type_code
271740   , p_transaction_coa_id           => l_adr_transaction_coa_id
271741   , p_accounting_coa_id            => l_adr_accounting_coa_id
271742   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
271743   , p_adr_type_code                => 'S'
271744   , p_component_type               => l_component_type
271745   , p_component_code               => l_component_code
271746   , p_component_type_code          => l_component_type_code
271747   , p_component_appl_id            => l_component_appl_id
271748   , p_amb_context_code             => l_amb_context_code
271749   , p_side                         => 'NA'
271750   );
271751 
271752 
271753    --
271754    --
271755    END IF;
271756 
271757        --
271758        -- Update the line information that should be overwritten
271759        --
271760        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
271761                                          p_header_num   => 1);
271762        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
271763 
271764        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
271765 
271766        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
271767           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
271768        END IF;
271769 
271770       --
271771       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
271772       --
271773       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
271774           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
271775       ELSE
271776           ---------------------------------------------------------------------------------------------------
271777           -- 4262811a Switch Sign
271778           ---------------------------------------------------------------------------------------------------
271779           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
271780           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
271781                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
271782           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
271783                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
271784           -- 5132302
271785           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
271786                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
271787 
271788       END IF;
271789 
271790       -- 4955764
271791       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
271792       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
271793 
271794 
271795       XLA_AE_LINES_PKG.ValidateCurrentLine;
271796       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
271797 
271798       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
271799                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
271800                ,p_balance_type_code => l_balance_type_code);
271801 
271802    END IF;
271803 
271804    -----------------------------------------------------------------------------------------
271805    -- 4262811 Multiperiod Accounting
271806    -----------------------------------------------------------------------------------------
271807      -- No MPA option is assigned.
271808 
271809 
271810 END IF;
271811 END IF;
271812 --
271813 
271814 --
271815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
271816    trace
271817       (p_msg      => 'END of AcctLineType_486'
271818       ,p_level    => C_LEVEL_PROCEDURE
271819       ,p_module   => l_log_module);
271820 END IF;
271821 --
271822 EXCEPTION
271823   WHEN xla_exceptions_pkg.application_exception THEN
271824       RAISE;
271825   WHEN OTHERS THEN
271826        xla_exceptions_pkg.raise_message
271827            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_486');
271828 END AcctLineType_486;
271829 --
271830 
271831 ---------------------------------------
271832 --
271833 -- PRIVATE FUNCTION
271834 --         AcctLineType_487
271835 --
271836 ---------------------------------------
271837 PROCEDURE AcctLineType_487 (
271838   p_application_id        IN NUMBER
271839  ,p_event_id              IN NUMBER
271840  ,p_calculate_acctd_flag  IN VARCHAR2
271841  ,p_calculate_g_l_flag    IN VARCHAR2
271842  ,p_actual_flag           IN OUT VARCHAR2
271843  ,p_balance_type_code     OUT VARCHAR2
271844  ,p_gain_or_loss_ref      OUT VARCHAR2
271845  
271846 --TRANSACTION_ID
271847  , p_source_1            IN NUMBER
271848 --Item Concatenated Segments
271849  , p_source_2            IN VARCHAR2
271850 --Transaction Quantity
271851  , p_source_3            IN NUMBER
271852 --Transaction Unit of Measure Code
271853  , p_source_4            IN VARCHAR2
271854 --Inventory Transaction Type Description
271855  , p_source_5            IN VARCHAR2
271856 --Interorg Price Variance Account
271857  , p_source_36            IN NUMBER
271858 --DISTRIBUTION_IDENTIFIER
271859  , p_source_84            IN NUMBER
271860 --Distribution Type
271861  , p_source_85            IN VARCHAR2
271862  , p_source_85_meaning    IN VARCHAR2
271863 --Entered Currency Code
271864  , p_source_88            IN VARCHAR2
271865 --Entered Amount
271866  , p_source_91            IN NUMBER
271867 --Currency Conversion Date
271868  , p_source_92            IN DATE
271869 --Currency Conversion Rate
271870  , p_source_93            IN NUMBER
271871 --Currency Conversion Type
271872  , p_source_94            IN VARCHAR2
271873 --Accounted Amount
271874  , p_source_95            IN NUMBER
271875 --Accounting Line Type
271876  , p_source_97            IN NUMBER
271877 )
271878 IS
271879 
271880 l_component_type              VARCHAR2(80);
271881 l_component_code              VARCHAR2(30);
271882 l_component_type_code         VARCHAR2(1);
271883 l_component_appl_id           INTEGER;
271884 l_amb_context_code            VARCHAR2(30);
271885 l_entity_code                 VARCHAR2(30);
271886 l_event_class_code            VARCHAR2(30);
271887 l_ae_header_id                NUMBER;
271888 l_event_type_code             VARCHAR2(30);
271889 l_line_definition_code        VARCHAR2(30);
271890 l_line_definition_owner_code  VARCHAR2(1);
271891 --
271892 -- adr variables
271893 l_segment                     VARCHAR2(30);
271894 l_ccid                        NUMBER;
271895 l_adr_transaction_coa_id      NUMBER;
271896 l_adr_accounting_coa_id       NUMBER;
271897 l_adr_flexfield_segment_code  VARCHAR2(30);
271898 l_adr_flex_value_set_id       NUMBER;
271899 l_adr_value_type_code         VARCHAR2(30);
271900 l_adr_value_combination_id    NUMBER;
271901 l_adr_value_segment_code      VARCHAR2(30);
271902 
271903 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
271904 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
271905 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
271906 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
271907 
271908 -- 4262811 Variables ------------------------------------------------------------------------------------------
271909 l_entered_amt_idx             NUMBER;
271910 l_accted_amt_idx              NUMBER;
271911 l_acc_rev_flag                VARCHAR2(1);
271912 l_accrual_line_num            NUMBER;
271913 l_tmp_amt                     NUMBER;
271914 l_acc_rev_natural_side_code   VARCHAR2(1);
271915 
271916 l_num_entries                 NUMBER;
271917 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
271918 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
271919 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
271920 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
271921 l_recog_line_1                NUMBER;
271922 l_recog_line_2                NUMBER;
271923 
271924 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
271925 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
271926 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
271927 
271928 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
271929 
271930 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
271931 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
271932 
271933 ---------------------------------------------------------------------------------------------------------------
271934 
271935 
271936 --
271937 -- bulk performance
271938 --
271939 l_balance_type_code           VARCHAR2(1);
271940 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
271941 l_log_module                  VARCHAR2(240);
271942 
271943 --
271944 -- Upgrade strategy
271945 --
271946 l_actual_upg_option           VARCHAR2(1);
271947 l_enc_upg_option           VARCHAR2(1);
271948 
271949 --
271950 BEGIN
271951 --
271952 IF g_log_enabled THEN
271953       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_487';
271954 END IF;
271955 --
271956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
271957 
271958       trace
271959          (p_msg      => 'BEGIN of AcctLineType_487'
271960          ,p_level    => C_LEVEL_PROCEDURE
271961          ,p_module   => l_log_module);
271962 
271963 END IF;
271964 --
271965 l_component_type             := 'AMB_JLT';
271966 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
271967 l_component_type_code        := 'S';
271968 l_component_appl_id          :=  707;
271969 l_amb_context_code           := 'DEFAULT';
271970 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
271971 l_event_class_code           := 'FOB_SHIP_RECIPIENT_SHIP';
271972 l_event_type_code            := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
271973 l_line_definition_owner_code := 'S';
271974 l_line_definition_code       := 'PI_FOB_SHIP_RECIPIENT_SHIP_NTP';
271975 --
271976 l_balance_type_code          := 'A';
271977 l_segment                     := NULL;
271978 l_ccid                        := NULL;
271979 l_adr_transaction_coa_id      := NULL;
271980 l_adr_accounting_coa_id       := NULL;
271981 l_adr_flexfield_segment_code  := NULL;
271982 l_adr_flex_value_set_id       := NULL;
271983 l_adr_value_type_code         := NULL;
271984 l_adr_value_combination_id    := NULL;
271985 l_adr_value_segment_code      := NULL;
271986 
271987 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
271988 l_bflow_class_code           := '';    -- 4219869 Business Flow
271989 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
271990 l_budgetary_control_flag     := 'N';
271991 
271992 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
271993 l_bflow_applied_to_amt       := NULL; -- 5132302
271994 l_entered_amt_idx            := NULL;          -- 4262811
271995 l_accted_amt_idx             := NULL;          -- 4262811
271996 l_acc_rev_flag               := NULL;          -- 4262811
271997 l_accrual_line_num           := NULL;          -- 4262811
271998 l_tmp_amt                    := NULL;          -- 4262811
271999 --
272000  
272001 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
272002     l_balance_type_code <> 'B' THEN
272003 IF NVL(p_source_97,9E125) =  6
272004  THEN 
272005 
272006    --
272007    XLA_AE_LINES_PKG.SetNewLine;
272008 
272009    p_balance_type_code          := l_balance_type_code;
272010    -- set the flag so later we will know whether the gain loss line needs to be created
272011    
272012    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
272013      p_actual_flag :='A';
272014    END IF;
272015 
272016    --
272017    -- bulk performance
272018    --
272019    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
272020                                       p_header_num   => 0); -- 4262811
272021    --
272022    -- set accounting line options
272023    --
272024    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
272025            p_natural_side_code          => 'D'
272026          , p_gain_or_loss_flag          => 'N'
272027          , p_gl_transfer_mode_code      => 'S'
272028          , p_acct_entry_type_code       => 'A'
272029          , p_switch_side_flag           => 'Y'
272030          , p_merge_duplicate_code       => 'N'
272031          );
272032    --
272033    l_acc_rev_natural_side_code := 'C';  -- 4262811
272034    -- 
272035    --
272036    -- set accounting line type info
272037    --
272038    xla_ae_lines_pkg.SetAcctLineType
272039       (p_component_type             => l_component_type
272040       ,p_event_type_code            => l_event_type_code
272041       ,p_line_definition_owner_code => l_line_definition_owner_code
272042       ,p_line_definition_code       => l_line_definition_code
272043       ,p_accounting_line_code       => l_component_code
272044       ,p_accounting_line_type_code  => l_component_type_code
272045       ,p_accounting_line_appl_id    => l_component_appl_id
272046       ,p_amb_context_code           => l_amb_context_code
272047       ,p_entity_code                => l_entity_code
272048       ,p_event_class_code           => l_event_class_code);
272049    --
272050    -- set accounting class
272051    --
272052    xla_ae_lines_pkg.SetAcctClass(
272053            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
272054          , p_ae_header_id           => l_ae_header_id
272055          );
272056 
272057    --
272058    -- set rounding class
272059    --
272060    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
272061                       'PURCHASE_PRICE_VARIANCE';
272062 
272063    --
272064    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
272065    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
272066    --
272067    -- bulk performance
272068    --
272069    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
272070 
272071    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
272072       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
272073 
272074    -- 4955764
272075    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
272076       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
272077 
272078    -- 4458381 Public Sector Enh
272079    
272080    --
272081    -- set accounting attributes for the line type
272082    --
272083    l_entered_amt_idx := 3;
272084    l_accted_amt_idx  := 8;
272085    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
272086    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
272087    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
272088    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
272089    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
272090    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
272091    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
272092    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
272093    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
272094    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
272095    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
272096    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
272097    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
272098    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
272099    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
272100    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
272101    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
272102 
272103    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
272104    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
272105 
272106    ---------------------------------------------------------------------------------------------------------------
272107    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
272108    ---------------------------------------------------------------------------------------------------------------
272109    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
272110 
272111    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
272112    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
272113 
272114    IF xla_accounting_cache_pkg.GetValueChar
272115          (p_source_code         => 'LEDGER_CATEGORY_CODE'
272116          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
272117    AND l_bflow_method_code = 'PRIOR_ENTRY'
272118 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
272119    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
272120          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
272121        )
272122    THEN
272123          xla_ae_lines_pkg.BflowUpgEntry
272124            (p_business_method_code    => l_bflow_method_code
272125            ,p_business_class_code     => l_bflow_class_code
272126            ,p_balance_type            => l_balance_type_code);
272127    ELSE
272128       NULL;
272129 -- No business flow processing for business flow method of NONE.
272130    END IF;
272131 
272132    --
272133    -- call analytical criteria
272134    --
272135    
272136    --
272137    -- call description
272138    --
272139    
272140 xla_ae_lines_pkg.SetLineDescription(
272141    p_ae_header_id => l_ae_header_id
272142   ,p_description  => Description_1 (
272143      p_application_id         => p_application_id
272144    , p_ae_header_id           => l_ae_header_id 
272145 , p_source_1 => p_source_1
272146 , p_source_2 => p_source_2
272147 , p_source_3 => p_source_3
272148 , p_source_4 => p_source_4
272149 , p_source_5 => p_source_5
272150    )
272151 );
272152 
272153 
272154    --
272155    -- call ADRs
272156    -- Bug 4922099
272157    --
272158    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
272159         (NVL(l_actual_upg_option, 'N') = 'O') OR
272160         (NVL(l_enc_upg_option, 'N') = 'O')
272161       )
272162    THEN
272163    NULL;
272164    --
272165    --
272166    
272167   l_ccid := AcctDerRule_21(
272168            p_application_id           => p_application_id
272169          , p_ae_header_id             => l_ae_header_id 
272170 , p_source_36 => p_source_36
272171          , x_transaction_coa_id       => l_adr_transaction_coa_id
272172          , x_accounting_coa_id        => l_adr_accounting_coa_id
272173          , x_value_type_code          => l_adr_value_type_code
272174          , p_side                     => 'NA'
272175    );
272176 
272177    xla_ae_lines_pkg.set_ccid(
272178     p_code_combination_id          => l_ccid
272179   , p_value_type_code              => l_adr_value_type_code
272180   , p_transaction_coa_id           => l_adr_transaction_coa_id
272181   , p_accounting_coa_id            => l_adr_accounting_coa_id
272182   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
272183   , p_adr_type_code                => 'S'
272184   , p_component_type               => l_component_type
272185   , p_component_code               => l_component_code
272186   , p_component_type_code          => l_component_type_code
272187   , p_component_appl_id            => l_component_appl_id
272188   , p_amb_context_code             => l_amb_context_code
272189   , p_side                         => 'NA'
272190   );
272191 
272192 
272193    --
272194    --
272195    END IF;
272196    --
272197    -- Bug 4922099
272198    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
272199           (NVL(l_enc_upg_option, 'N') = 'O')
272200         ) AND
272201         (l_bflow_method_code = 'PRIOR_ENTRY')
272202       )
272203    THEN
272204       IF
272205       --
272206       1 = 2
272207       --
272208       THEN
272209       xla_accounting_err_pkg.build_message
272210                                     (p_appli_s_name            => 'XLA'
272211                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
272212                                     ,p_token_1                 => 'LINE_NUMBER'
272213                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
272214                                     ,p_token_2                 => 'LINE_TYPE_NAME'
272215                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
272216                                                                              l_component_type
272217                                                                             ,l_component_code
272218                                                                             ,l_component_type_code
272219                                                                             ,l_component_appl_id
272220                                                                             ,l_amb_context_code
272221                                                                             ,l_entity_code
272222                                                                             ,l_event_class_code
272223                                                                            )
272224                                     ,p_token_3                 => 'OWNER'
272225                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
272226                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
272227                                                                           ,p_lookup_code    => l_component_type_code
272228                                                                          )
272229                                     ,p_token_4                 => 'PRODUCT_NAME'
272230                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
272231                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
272232                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
272233                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
272234                                     ,p_ae_header_id            =>  NULL
272235                                        );
272236 
272237         IF (C_LEVEL_ERROR>= g_log_level) THEN
272238                  trace
272239                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
272240                       ,p_level    => C_LEVEL_ERROR
272241                       ,p_module   => l_log_module);
272242         END IF;
272243       END IF;
272244    END IF;
272245    --
272246    --
272247    ------------------------------------------------------------------------------------------------
272248    -- 4219869 Business Flow
272249    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
272250    -- Prior Entry.  Currently, the following code is always generated.
272251    ------------------------------------------------------------------------------------------------
272252    XLA_AE_LINES_PKG.ValidateCurrentLine;
272253 
272254    ------------------------------------------------------------------------------------
272255    -- 4219869 Business Flow
272256    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
272257    ------------------------------------------------------------------------------------
272258    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
272259 
272260    ----------------------------------------------------------------------------------
272261    -- 4219869 Business Flow
272262    -- Update journal entry status -- Need to generate this within IF <condition>
272263    ----------------------------------------------------------------------------------
272264    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
272265          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
272266          ,p_balance_type_code => l_balance_type_code
272267          );
272268 
272269    -------------------------------------------------------------------------------------------
272270    -- 4262811 - Generate the Accrual Reversal lines
272271    -------------------------------------------------------------------------------------------
272272    BEGIN
272273       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
272274                               (g_array_event(p_event_id).array_value_num('header_index'));
272275       IF l_acc_rev_flag IS NULL THEN
272276          l_acc_rev_flag := 'N';
272277       END IF;
272278    EXCEPTION
272279       WHEN OTHERS THEN
272280          l_acc_rev_flag := 'N';
272281    END;
272282    --
272283    IF (l_acc_rev_flag = 'Y') THEN
272284 
272285        -- 4645092  ------------------------------------------------------------------------------
272286        -- To allow MPA report to determine if it should generate report process
272287        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
272288        ------------------------------------------------------------------------------------------
272289 
272290        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
272291        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
272292    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
272293    -- call ADRs
272294    -- Bug 4922099
272295    --
272296    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
272297         (NVL(l_actual_upg_option, 'N') = 'O') OR
272298         (NVL(l_enc_upg_option, 'N') = 'O')
272299       )
272300    THEN
272301    NULL;
272302    --
272303    --
272304    
272305   l_ccid := AcctDerRule_21(
272306            p_application_id           => p_application_id
272307          , p_ae_header_id             => l_ae_header_id 
272308 , p_source_36 => p_source_36
272309          , x_transaction_coa_id       => l_adr_transaction_coa_id
272310          , x_accounting_coa_id        => l_adr_accounting_coa_id
272311          , x_value_type_code          => l_adr_value_type_code
272312          , p_side                     => 'NA'
272313    );
272314 
272315    xla_ae_lines_pkg.set_ccid(
272316     p_code_combination_id          => l_ccid
272317   , p_value_type_code              => l_adr_value_type_code
272318   , p_transaction_coa_id           => l_adr_transaction_coa_id
272319   , p_accounting_coa_id            => l_adr_accounting_coa_id
272320   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
272321   , p_adr_type_code                => 'S'
272322   , p_component_type               => l_component_type
272323   , p_component_code               => l_component_code
272324   , p_component_type_code          => l_component_type_code
272325   , p_component_appl_id            => l_component_appl_id
272326   , p_amb_context_code             => l_amb_context_code
272327   , p_side                         => 'NA'
272328   );
272329 
272330 
272331    --
272332    --
272333    END IF;
272334 
272335        --
272336        -- Update the line information that should be overwritten
272337        --
272338        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
272339                                          p_header_num   => 1);
272340        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
272341 
272342        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
272343 
272344        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
272345           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
272346        END IF;
272347 
272348       --
272349       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
272350       --
272351       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
272352           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
272353       ELSE
272354           ---------------------------------------------------------------------------------------------------
272355           -- 4262811a Switch Sign
272356           ---------------------------------------------------------------------------------------------------
272357           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
272358           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
272359                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
272360           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
272361                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
272362           -- 5132302
272363           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
272364                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
272365 
272366       END IF;
272367 
272368       -- 4955764
272369       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
272370       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
272371 
272372 
272373       XLA_AE_LINES_PKG.ValidateCurrentLine;
272374       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
272375 
272376       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
272377                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
272378                ,p_balance_type_code => l_balance_type_code);
272379 
272380    END IF;
272381 
272382    -----------------------------------------------------------------------------------------
272383    -- 4262811 Multiperiod Accounting
272384    -----------------------------------------------------------------------------------------
272385      -- No MPA option is assigned.
272386 
272387 
272388 END IF;
272389 END IF;
272390 --
272391 
272392 --
272393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
272394    trace
272395       (p_msg      => 'END of AcctLineType_487'
272396       ,p_level    => C_LEVEL_PROCEDURE
272397       ,p_module   => l_log_module);
272398 END IF;
272399 --
272400 EXCEPTION
272401   WHEN xla_exceptions_pkg.application_exception THEN
272402       RAISE;
272403   WHEN OTHERS THEN
272404        xla_exceptions_pkg.raise_message
272405            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_487');
272406 END AcctLineType_487;
272407 --
272408 
272409 ---------------------------------------
272410 --
272411 -- PRIVATE FUNCTION
272412 --         AcctLineType_488
272413 --
272414 ---------------------------------------
272415 PROCEDURE AcctLineType_488 (
272416   p_application_id        IN NUMBER
272417  ,p_event_id              IN NUMBER
272418  ,p_calculate_acctd_flag  IN VARCHAR2
272419  ,p_calculate_g_l_flag    IN VARCHAR2
272420  ,p_actual_flag           IN OUT VARCHAR2
272421  ,p_balance_type_code     OUT VARCHAR2
272422  ,p_gain_or_loss_ref      OUT VARCHAR2
272423  
272424 --Cost Management Default Account
272425  , p_source_11            IN NUMBER
272426 --Receiving Accounting Line Type
272427  , p_source_78            IN VARCHAR2
272428 --DISTRIBUTION_IDENTIFIER
272429  , p_source_84            IN NUMBER
272430 --Distribution Type
272431  , p_source_85            IN VARCHAR2
272432  , p_source_85_meaning    IN VARCHAR2
272433 --Entered Amount
272434  , p_source_91            IN NUMBER
272435 --Accounted Amount
272436  , p_source_95            IN NUMBER
272437 --Entered Currency Code
272438  , p_source_105            IN VARCHAR2
272439 --Currency Conversion Date
272440  , p_source_106            IN DATE
272441 --Currency Conversion Rate
272442  , p_source_107            IN NUMBER
272443 )
272444 IS
272445 
272446 l_component_type              VARCHAR2(80);
272447 l_component_code              VARCHAR2(30);
272448 l_component_type_code         VARCHAR2(1);
272449 l_component_appl_id           INTEGER;
272450 l_amb_context_code            VARCHAR2(30);
272451 l_entity_code                 VARCHAR2(30);
272452 l_event_class_code            VARCHAR2(30);
272453 l_ae_header_id                NUMBER;
272454 l_event_type_code             VARCHAR2(30);
272455 l_line_definition_code        VARCHAR2(30);
272456 l_line_definition_owner_code  VARCHAR2(1);
272457 --
272458 -- adr variables
272459 l_segment                     VARCHAR2(30);
272460 l_ccid                        NUMBER;
272461 l_adr_transaction_coa_id      NUMBER;
272462 l_adr_accounting_coa_id       NUMBER;
272463 l_adr_flexfield_segment_code  VARCHAR2(30);
272464 l_adr_flex_value_set_id       NUMBER;
272465 l_adr_value_type_code         VARCHAR2(30);
272466 l_adr_value_combination_id    NUMBER;
272467 l_adr_value_segment_code      VARCHAR2(30);
272468 
272469 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
272470 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
272471 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
272472 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
272473 
272474 -- 4262811 Variables ------------------------------------------------------------------------------------------
272475 l_entered_amt_idx             NUMBER;
272476 l_accted_amt_idx              NUMBER;
272477 l_acc_rev_flag                VARCHAR2(1);
272478 l_accrual_line_num            NUMBER;
272479 l_tmp_amt                     NUMBER;
272480 l_acc_rev_natural_side_code   VARCHAR2(1);
272481 
272482 l_num_entries                 NUMBER;
272483 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
272484 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
272485 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
272486 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
272487 l_recog_line_1                NUMBER;
272488 l_recog_line_2                NUMBER;
272489 
272490 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
272491 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
272492 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
272493 
272494 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
272495 
272496 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
272497 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
272498 
272499 ---------------------------------------------------------------------------------------------------------------
272500 
272501 
272502 --
272503 -- bulk performance
272504 --
272505 l_balance_type_code           VARCHAR2(1);
272506 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
272507 l_log_module                  VARCHAR2(240);
272508 
272509 --
272510 -- Upgrade strategy
272511 --
272512 l_actual_upg_option           VARCHAR2(1);
272513 l_enc_upg_option           VARCHAR2(1);
272514 
272515 --
272516 BEGIN
272517 --
272518 IF g_log_enabled THEN
272519       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_488';
272520 END IF;
272521 --
272522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
272523 
272524       trace
272525          (p_msg      => 'BEGIN of AcctLineType_488'
272526          ,p_level    => C_LEVEL_PROCEDURE
272527          ,p_module   => l_log_module);
272528 
272529 END IF;
272530 --
272531 l_component_type             := 'AMB_JLT';
272532 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
272533 l_component_type_code        := 'S';
272534 l_component_appl_id          :=  707;
272535 l_amb_context_code           := 'DEFAULT';
272536 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
272537 l_event_class_code           := 'LDD_COST_ADJ_DEL';
272538 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
272539 l_line_definition_owner_code := 'S';
272540 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
272541 --
272542 l_balance_type_code          := 'A';
272543 l_segment                     := NULL;
272544 l_ccid                        := NULL;
272545 l_adr_transaction_coa_id      := NULL;
272546 l_adr_accounting_coa_id       := NULL;
272547 l_adr_flexfield_segment_code  := NULL;
272548 l_adr_flex_value_set_id       := NULL;
272549 l_adr_value_type_code         := NULL;
272550 l_adr_value_combination_id    := NULL;
272551 l_adr_value_segment_code      := NULL;
272552 
272553 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
272554 l_bflow_class_code           := '';    -- 4219869 Business Flow
272555 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
272556 l_budgetary_control_flag     := 'N';
272557 
272558 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
272559 l_bflow_applied_to_amt       := NULL; -- 5132302
272560 l_entered_amt_idx            := NULL;          -- 4262811
272561 l_accted_amt_idx             := NULL;          -- 4262811
272562 l_acc_rev_flag               := NULL;          -- 4262811
272563 l_accrual_line_num           := NULL;          -- 4262811
272564 l_tmp_amt                    := NULL;          -- 4262811
272565 --
272566  
272567 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
272568     l_balance_type_code <> 'B' THEN
272569 IF NVL(p_source_78,'
272570 ') =  'Purchase Price Variance'
272571  THEN 
272572 
272573    --
272574    XLA_AE_LINES_PKG.SetNewLine;
272575 
272576    p_balance_type_code          := l_balance_type_code;
272577    -- set the flag so later we will know whether the gain loss line needs to be created
272578    
272579    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
272580      p_actual_flag :='A';
272581    END IF;
272582 
272583    --
272584    -- bulk performance
272585    --
272586    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
272587                                       p_header_num   => 0); -- 4262811
272588    --
272589    -- set accounting line options
272590    --
272591    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
272592            p_natural_side_code          => 'D'
272593          , p_gain_or_loss_flag          => 'N'
272594          , p_gl_transfer_mode_code      => 'S'
272595          , p_acct_entry_type_code       => 'A'
272596          , p_switch_side_flag           => 'Y'
272597          , p_merge_duplicate_code       => 'N'
272598          );
272599    --
272600    l_acc_rev_natural_side_code := 'C';  -- 4262811
272601    -- 
272602    --
272603    -- set accounting line type info
272604    --
272605    xla_ae_lines_pkg.SetAcctLineType
272606       (p_component_type             => l_component_type
272607       ,p_event_type_code            => l_event_type_code
272608       ,p_line_definition_owner_code => l_line_definition_owner_code
272609       ,p_line_definition_code       => l_line_definition_code
272610       ,p_accounting_line_code       => l_component_code
272611       ,p_accounting_line_type_code  => l_component_type_code
272612       ,p_accounting_line_appl_id    => l_component_appl_id
272613       ,p_amb_context_code           => l_amb_context_code
272614       ,p_entity_code                => l_entity_code
272615       ,p_event_class_code           => l_event_class_code);
272616    --
272617    -- set accounting class
272618    --
272619    xla_ae_lines_pkg.SetAcctClass(
272620            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
272621          , p_ae_header_id           => l_ae_header_id
272622          );
272623 
272624    --
272625    -- set rounding class
272626    --
272627    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
272628                       'PURCHASE_PRICE_VARIANCE';
272629 
272630    --
272631    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
272632    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
272633    --
272634    -- bulk performance
272635    --
272636    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
272637 
272638    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
272639       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
272640 
272641    -- 4955764
272642    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
272643       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
272644 
272645    -- 4458381 Public Sector Enh
272646    
272647    --
272648    -- set accounting attributes for the line type
272649    --
272650    l_entered_amt_idx := 3;
272651    l_accted_amt_idx  := 7;
272652    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
272653    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
272654    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
272655    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
272656    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
272657    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
272658    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
272659    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
272660    l_rec_acct_attrs.array_char_value(4)  := p_source_105;
272661    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
272662    l_rec_acct_attrs.array_date_value(5)  := p_source_106;
272663    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
272664    l_rec_acct_attrs.array_num_value(6)  := p_source_107;
272665    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
272666    l_rec_acct_attrs.array_num_value(7)  := p_source_95;
272667 
272668    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
272669    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
272670 
272671    ---------------------------------------------------------------------------------------------------------------
272672    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
272673    ---------------------------------------------------------------------------------------------------------------
272674    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
272675 
272676    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
272677    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
272678 
272679    IF xla_accounting_cache_pkg.GetValueChar
272680          (p_source_code         => 'LEDGER_CATEGORY_CODE'
272681          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
272682    AND l_bflow_method_code = 'PRIOR_ENTRY'
272683 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
272684    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
272685          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
272686        )
272687    THEN
272688          xla_ae_lines_pkg.BflowUpgEntry
272689            (p_business_method_code    => l_bflow_method_code
272690            ,p_business_class_code     => l_bflow_class_code
272691            ,p_balance_type            => l_balance_type_code);
272692    ELSE
272693       NULL;
272694 -- No business flow processing for business flow method of NONE.
272695    END IF;
272696 
272697    --
272698    -- call analytical criteria
272699    --
272700    
272701    --
272702    -- call description
272703    --
272704    -- No description or it is inherited.
272705    --
272706    -- call ADRs
272707    -- Bug 4922099
272708    --
272709    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
272710         (NVL(l_actual_upg_option, 'N') = 'O') OR
272711         (NVL(l_enc_upg_option, 'N') = 'O')
272712       )
272713    THEN
272714    NULL;
272715    --
272716    --
272717    
272718   l_ccid := AcctDerRule_6(
272719            p_application_id           => p_application_id
272720          , p_ae_header_id             => l_ae_header_id 
272721 , p_source_11 => p_source_11
272722          , x_transaction_coa_id       => l_adr_transaction_coa_id
272723          , x_accounting_coa_id        => l_adr_accounting_coa_id
272724          , x_value_type_code          => l_adr_value_type_code
272725          , p_side                     => 'NA'
272726    );
272727 
272728    xla_ae_lines_pkg.set_ccid(
272729     p_code_combination_id          => l_ccid
272730   , p_value_type_code              => l_adr_value_type_code
272731   , p_transaction_coa_id           => l_adr_transaction_coa_id
272732   , p_accounting_coa_id            => l_adr_accounting_coa_id
272733   , p_adr_code                     => 'CST_DEFAULT'
272734   , p_adr_type_code                => 'S'
272735   , p_component_type               => l_component_type
272736   , p_component_code               => l_component_code
272737   , p_component_type_code          => l_component_type_code
272738   , p_component_appl_id            => l_component_appl_id
272739   , p_amb_context_code             => l_amb_context_code
272740   , p_side                         => 'NA'
272741   );
272742 
272743 
272744    --
272745    --
272746    END IF;
272747    --
272748    -- Bug 4922099
272749    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
272750           (NVL(l_enc_upg_option, 'N') = 'O')
272751         ) AND
272752         (l_bflow_method_code = 'PRIOR_ENTRY')
272753       )
272754    THEN
272755       IF
272756       --
272757       1 = 2
272758       --
272759       THEN
272760       xla_accounting_err_pkg.build_message
272761                                     (p_appli_s_name            => 'XLA'
272762                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
272763                                     ,p_token_1                 => 'LINE_NUMBER'
272764                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
272765                                     ,p_token_2                 => 'LINE_TYPE_NAME'
272766                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
272767                                                                              l_component_type
272768                                                                             ,l_component_code
272769                                                                             ,l_component_type_code
272770                                                                             ,l_component_appl_id
272771                                                                             ,l_amb_context_code
272772                                                                             ,l_entity_code
272773                                                                             ,l_event_class_code
272774                                                                            )
272775                                     ,p_token_3                 => 'OWNER'
272776                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
272777                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
272778                                                                           ,p_lookup_code    => l_component_type_code
272779                                                                          )
272780                                     ,p_token_4                 => 'PRODUCT_NAME'
272781                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
272782                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
272783                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
272784                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
272785                                     ,p_ae_header_id            =>  NULL
272786                                        );
272787 
272788         IF (C_LEVEL_ERROR>= g_log_level) THEN
272789                  trace
272790                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
272791                       ,p_level    => C_LEVEL_ERROR
272792                       ,p_module   => l_log_module);
272793         END IF;
272794       END IF;
272795    END IF;
272796    --
272797    --
272798    ------------------------------------------------------------------------------------------------
272799    -- 4219869 Business Flow
272800    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
272801    -- Prior Entry.  Currently, the following code is always generated.
272802    ------------------------------------------------------------------------------------------------
272803    XLA_AE_LINES_PKG.ValidateCurrentLine;
272804 
272805    ------------------------------------------------------------------------------------
272806    -- 4219869 Business Flow
272807    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
272808    ------------------------------------------------------------------------------------
272809    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
272810 
272811    ----------------------------------------------------------------------------------
272812    -- 4219869 Business Flow
272813    -- Update journal entry status -- Need to generate this within IF <condition>
272814    ----------------------------------------------------------------------------------
272815    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
272816          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
272817          ,p_balance_type_code => l_balance_type_code
272818          );
272819 
272820    -------------------------------------------------------------------------------------------
272821    -- 4262811 - Generate the Accrual Reversal lines
272822    -------------------------------------------------------------------------------------------
272823    BEGIN
272824       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
272825                               (g_array_event(p_event_id).array_value_num('header_index'));
272826       IF l_acc_rev_flag IS NULL THEN
272827          l_acc_rev_flag := 'N';
272828       END IF;
272829    EXCEPTION
272830       WHEN OTHERS THEN
272831          l_acc_rev_flag := 'N';
272832    END;
272833    --
272834    IF (l_acc_rev_flag = 'Y') THEN
272835 
272836        -- 4645092  ------------------------------------------------------------------------------
272837        -- To allow MPA report to determine if it should generate report process
272838        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
272839        ------------------------------------------------------------------------------------------
272840 
272841        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
272842        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
272843    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
272844    -- call ADRs
272845    -- Bug 4922099
272846    --
272847    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
272848         (NVL(l_actual_upg_option, 'N') = 'O') OR
272849         (NVL(l_enc_upg_option, 'N') = 'O')
272850       )
272851    THEN
272852    NULL;
272853    --
272854    --
272855    
272856   l_ccid := AcctDerRule_6(
272857            p_application_id           => p_application_id
272858          , p_ae_header_id             => l_ae_header_id 
272859 , p_source_11 => p_source_11
272860          , x_transaction_coa_id       => l_adr_transaction_coa_id
272861          , x_accounting_coa_id        => l_adr_accounting_coa_id
272862          , x_value_type_code          => l_adr_value_type_code
272863          , p_side                     => 'NA'
272864    );
272865 
272866    xla_ae_lines_pkg.set_ccid(
272867     p_code_combination_id          => l_ccid
272868   , p_value_type_code              => l_adr_value_type_code
272869   , p_transaction_coa_id           => l_adr_transaction_coa_id
272870   , p_accounting_coa_id            => l_adr_accounting_coa_id
272871   , p_adr_code                     => 'CST_DEFAULT'
272872   , p_adr_type_code                => 'S'
272873   , p_component_type               => l_component_type
272874   , p_component_code               => l_component_code
272875   , p_component_type_code          => l_component_type_code
272876   , p_component_appl_id            => l_component_appl_id
272877   , p_amb_context_code             => l_amb_context_code
272878   , p_side                         => 'NA'
272879   );
272880 
272881 
272882    --
272883    --
272884    END IF;
272885 
272886        --
272887        -- Update the line information that should be overwritten
272888        --
272889        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
272890                                          p_header_num   => 1);
272891        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
272892 
272893        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
272894 
272895        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
272896           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
272897        END IF;
272898 
272899       --
272900       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
272901       --
272902       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
272903           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
272904       ELSE
272905           ---------------------------------------------------------------------------------------------------
272906           -- 4262811a Switch Sign
272907           ---------------------------------------------------------------------------------------------------
272908           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
272909           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
272910                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
272911           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
272912                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
272913           -- 5132302
272914           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
272915                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
272916 
272917       END IF;
272918 
272919       -- 4955764
272920       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
272921       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
272922 
272923 
272924       XLA_AE_LINES_PKG.ValidateCurrentLine;
272925       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
272926 
272927       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
272928                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
272929                ,p_balance_type_code => l_balance_type_code);
272930 
272931    END IF;
272932 
272933    -----------------------------------------------------------------------------------------
272934    -- 4262811 Multiperiod Accounting
272935    -----------------------------------------------------------------------------------------
272936      -- No MPA option is assigned.
272937 
272938 
272939 END IF;
272940 END IF;
272941 --
272942 
272943 --
272944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
272945    trace
272946       (p_msg      => 'END of AcctLineType_488'
272947       ,p_level    => C_LEVEL_PROCEDURE
272948       ,p_module   => l_log_module);
272949 END IF;
272950 --
272951 EXCEPTION
272952   WHEN xla_exceptions_pkg.application_exception THEN
272953       RAISE;
272954   WHEN OTHERS THEN
272955        xla_exceptions_pkg.raise_message
272956            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_488');
272957 END AcctLineType_488;
272958 --
272959 
272960 ---------------------------------------
272961 --
272962 -- PRIVATE FUNCTION
272963 --         AcctLineType_489
272964 --
272965 ---------------------------------------
272966 PROCEDURE AcctLineType_489 (
272967   p_application_id        IN NUMBER
272968  ,p_event_id              IN NUMBER
272969  ,p_calculate_acctd_flag  IN VARCHAR2
272970  ,p_calculate_g_l_flag    IN VARCHAR2
272971  ,p_actual_flag           IN OUT VARCHAR2
272972  ,p_balance_type_code     OUT VARCHAR2
272973  ,p_gain_or_loss_ref      OUT VARCHAR2
272974  
272975 --TRANSACTION_ID
272976  , p_source_1            IN NUMBER
272977 --Item Concatenated Segments
272978  , p_source_2            IN VARCHAR2
272979 --Transaction Quantity
272980  , p_source_3            IN NUMBER
272981 --Transaction Unit of Measure Code
272982  , p_source_4            IN VARCHAR2
272983 --Inventory Transaction Type Description
272984  , p_source_5            IN VARCHAR2
272985 --Inventory Organization Purchase Price Variance Account
272986  , p_source_58            IN NUMBER
272987 --DISTRIBUTION_IDENTIFIER
272988  , p_source_84            IN NUMBER
272989 --Distribution Type
272990  , p_source_85            IN VARCHAR2
272991  , p_source_85_meaning    IN VARCHAR2
272992 --Entered Currency Code
272993  , p_source_88            IN VARCHAR2
272994 --Entered Amount
272995  , p_source_91            IN NUMBER
272996 --Currency Conversion Date
272997  , p_source_92            IN DATE
272998 --Currency Conversion Rate
272999  , p_source_93            IN NUMBER
273000 --Currency Conversion Type
273001  , p_source_94            IN VARCHAR2
273002 --Accounted Amount
273003  , p_source_95            IN NUMBER
273004 --Accounting Line Type
273005  , p_source_97            IN NUMBER
273006 )
273007 IS
273008 
273009 l_component_type              VARCHAR2(80);
273010 l_component_code              VARCHAR2(30);
273011 l_component_type_code         VARCHAR2(1);
273012 l_component_appl_id           INTEGER;
273013 l_amb_context_code            VARCHAR2(30);
273014 l_entity_code                 VARCHAR2(30);
273015 l_event_class_code            VARCHAR2(30);
273016 l_ae_header_id                NUMBER;
273017 l_event_type_code             VARCHAR2(30);
273018 l_line_definition_code        VARCHAR2(30);
273019 l_line_definition_owner_code  VARCHAR2(1);
273020 --
273021 -- adr variables
273022 l_segment                     VARCHAR2(30);
273023 l_ccid                        NUMBER;
273024 l_adr_transaction_coa_id      NUMBER;
273025 l_adr_accounting_coa_id       NUMBER;
273026 l_adr_flexfield_segment_code  VARCHAR2(30);
273027 l_adr_flex_value_set_id       NUMBER;
273028 l_adr_value_type_code         VARCHAR2(30);
273029 l_adr_value_combination_id    NUMBER;
273030 l_adr_value_segment_code      VARCHAR2(30);
273031 
273032 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
273033 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
273034 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
273035 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
273036 
273037 -- 4262811 Variables ------------------------------------------------------------------------------------------
273038 l_entered_amt_idx             NUMBER;
273039 l_accted_amt_idx              NUMBER;
273040 l_acc_rev_flag                VARCHAR2(1);
273041 l_accrual_line_num            NUMBER;
273042 l_tmp_amt                     NUMBER;
273043 l_acc_rev_natural_side_code   VARCHAR2(1);
273044 
273045 l_num_entries                 NUMBER;
273046 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
273047 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
273048 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
273049 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
273050 l_recog_line_1                NUMBER;
273051 l_recog_line_2                NUMBER;
273052 
273053 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
273054 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
273055 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
273056 
273057 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
273058 
273059 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
273060 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
273061 
273062 ---------------------------------------------------------------------------------------------------------------
273063 
273064 
273065 --
273066 -- bulk performance
273067 --
273068 l_balance_type_code           VARCHAR2(1);
273069 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
273070 l_log_module                  VARCHAR2(240);
273071 
273072 --
273073 -- Upgrade strategy
273074 --
273075 l_actual_upg_option           VARCHAR2(1);
273076 l_enc_upg_option           VARCHAR2(1);
273077 
273078 --
273079 BEGIN
273080 --
273081 IF g_log_enabled THEN
273082       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_489';
273083 END IF;
273084 --
273085 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
273086 
273087       trace
273088          (p_msg      => 'BEGIN of AcctLineType_489'
273089          ,p_level    => C_LEVEL_PROCEDURE
273090          ,p_module   => l_log_module);
273091 
273092 END IF;
273093 --
273094 l_component_type             := 'AMB_JLT';
273095 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
273096 l_component_type_code        := 'S';
273097 l_component_appl_id          :=  707;
273098 l_amb_context_code           := 'DEFAULT';
273099 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
273100 l_event_class_code           := 'USER_DEFINE';
273101 l_event_type_code            := 'UDIR_INTERORG_SHIP_TP';
273102 l_line_definition_owner_code := 'S';
273103 l_line_definition_code       := 'PI_USER_DIR_INTERORG_SHIP_TP';
273104 --
273105 l_balance_type_code          := 'A';
273106 l_segment                     := NULL;
273107 l_ccid                        := NULL;
273108 l_adr_transaction_coa_id      := NULL;
273109 l_adr_accounting_coa_id       := NULL;
273110 l_adr_flexfield_segment_code  := NULL;
273111 l_adr_flex_value_set_id       := NULL;
273112 l_adr_value_type_code         := NULL;
273113 l_adr_value_combination_id    := NULL;
273114 l_adr_value_segment_code      := NULL;
273115 
273116 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
273117 l_bflow_class_code           := '';    -- 4219869 Business Flow
273118 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
273119 l_budgetary_control_flag     := 'N';
273120 
273121 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
273122 l_bflow_applied_to_amt       := NULL; -- 5132302
273123 l_entered_amt_idx            := NULL;          -- 4262811
273124 l_accted_amt_idx             := NULL;          -- 4262811
273125 l_acc_rev_flag               := NULL;          -- 4262811
273126 l_accrual_line_num           := NULL;          -- 4262811
273127 l_tmp_amt                    := NULL;          -- 4262811
273128 --
273129  
273130 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
273131     l_balance_type_code <> 'B' THEN
273132 IF NVL(p_source_97,9E125) =  6
273133  THEN 
273134 
273135    --
273136    XLA_AE_LINES_PKG.SetNewLine;
273137 
273138    p_balance_type_code          := l_balance_type_code;
273139    -- set the flag so later we will know whether the gain loss line needs to be created
273140    
273141    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
273142      p_actual_flag :='A';
273143    END IF;
273144 
273145    --
273146    -- bulk performance
273147    --
273148    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
273149                                       p_header_num   => 0); -- 4262811
273150    --
273151    -- set accounting line options
273152    --
273153    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
273154            p_natural_side_code          => 'D'
273155          , p_gain_or_loss_flag          => 'N'
273156          , p_gl_transfer_mode_code      => 'S'
273157          , p_acct_entry_type_code       => 'A'
273158          , p_switch_side_flag           => 'Y'
273159          , p_merge_duplicate_code       => 'N'
273160          );
273161    --
273162    l_acc_rev_natural_side_code := 'C';  -- 4262811
273163    -- 
273164    --
273165    -- set accounting line type info
273166    --
273167    xla_ae_lines_pkg.SetAcctLineType
273168       (p_component_type             => l_component_type
273169       ,p_event_type_code            => l_event_type_code
273170       ,p_line_definition_owner_code => l_line_definition_owner_code
273171       ,p_line_definition_code       => l_line_definition_code
273172       ,p_accounting_line_code       => l_component_code
273173       ,p_accounting_line_type_code  => l_component_type_code
273174       ,p_accounting_line_appl_id    => l_component_appl_id
273175       ,p_amb_context_code           => l_amb_context_code
273176       ,p_entity_code                => l_entity_code
273177       ,p_event_class_code           => l_event_class_code);
273178    --
273179    -- set accounting class
273180    --
273181    xla_ae_lines_pkg.SetAcctClass(
273182            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
273183          , p_ae_header_id           => l_ae_header_id
273184          );
273185 
273186    --
273187    -- set rounding class
273188    --
273189    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
273190                       'PURCHASE_PRICE_VARIANCE';
273191 
273192    --
273193    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
273194    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
273195    --
273196    -- bulk performance
273197    --
273198    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
273199 
273200    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
273201       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
273202 
273203    -- 4955764
273204    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
273205       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
273206 
273207    -- 4458381 Public Sector Enh
273208    
273209    --
273210    -- set accounting attributes for the line type
273211    --
273212    l_entered_amt_idx := 3;
273213    l_accted_amt_idx  := 8;
273214    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
273215    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
273216    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
273217    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
273218    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
273219    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
273220    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
273221    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
273222    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
273223    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
273224    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
273225    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
273226    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
273227    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
273228    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
273229    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
273230    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
273231 
273232    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
273233    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
273234 
273235    ---------------------------------------------------------------------------------------------------------------
273236    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
273237    ---------------------------------------------------------------------------------------------------------------
273238    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
273239 
273240    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
273241    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
273242 
273243    IF xla_accounting_cache_pkg.GetValueChar
273244          (p_source_code         => 'LEDGER_CATEGORY_CODE'
273245          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
273246    AND l_bflow_method_code = 'PRIOR_ENTRY'
273247 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
273248    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
273249          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
273250        )
273251    THEN
273252          xla_ae_lines_pkg.BflowUpgEntry
273253            (p_business_method_code    => l_bflow_method_code
273254            ,p_business_class_code     => l_bflow_class_code
273255            ,p_balance_type            => l_balance_type_code);
273256    ELSE
273257       NULL;
273258 -- No business flow processing for business flow method of NONE.
273259    END IF;
273260 
273261    --
273262    -- call analytical criteria
273263    --
273264    
273265    --
273266    -- call description
273267    --
273268    
273269 xla_ae_lines_pkg.SetLineDescription(
273270    p_ae_header_id => l_ae_header_id
273271   ,p_description  => Description_1 (
273272      p_application_id         => p_application_id
273273    , p_ae_header_id           => l_ae_header_id 
273274 , p_source_1 => p_source_1
273275 , p_source_2 => p_source_2
273276 , p_source_3 => p_source_3
273277 , p_source_4 => p_source_4
273278 , p_source_5 => p_source_5
273279    )
273280 );
273281 
273282 
273283    --
273284    -- call ADRs
273285    -- Bug 4922099
273286    --
273287    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
273288         (NVL(l_actual_upg_option, 'N') = 'O') OR
273289         (NVL(l_enc_upg_option, 'N') = 'O')
273290       )
273291    THEN
273292    NULL;
273293    --
273294    --
273295    
273296   l_ccid := AcctDerRule_32(
273297            p_application_id           => p_application_id
273298          , p_ae_header_id             => l_ae_header_id 
273299 , p_source_58 => p_source_58
273300          , x_transaction_coa_id       => l_adr_transaction_coa_id
273301          , x_accounting_coa_id        => l_adr_accounting_coa_id
273302          , x_value_type_code          => l_adr_value_type_code
273303          , p_side                     => 'NA'
273304    );
273305 
273306    xla_ae_lines_pkg.set_ccid(
273307     p_code_combination_id          => l_ccid
273308   , p_value_type_code              => l_adr_value_type_code
273309   , p_transaction_coa_id           => l_adr_transaction_coa_id
273310   , p_accounting_coa_id            => l_adr_accounting_coa_id
273311   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
273312   , p_adr_type_code                => 'S'
273313   , p_component_type               => l_component_type
273314   , p_component_code               => l_component_code
273315   , p_component_type_code          => l_component_type_code
273316   , p_component_appl_id            => l_component_appl_id
273317   , p_amb_context_code             => l_amb_context_code
273318   , p_side                         => 'NA'
273319   );
273320 
273321 
273322    --
273323    --
273324    END IF;
273325    --
273326    -- Bug 4922099
273327    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
273328           (NVL(l_enc_upg_option, 'N') = 'O')
273329         ) AND
273330         (l_bflow_method_code = 'PRIOR_ENTRY')
273331       )
273332    THEN
273333       IF
273334       --
273335       1 = 2
273336       --
273337       THEN
273338       xla_accounting_err_pkg.build_message
273339                                     (p_appli_s_name            => 'XLA'
273340                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
273341                                     ,p_token_1                 => 'LINE_NUMBER'
273342                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
273343                                     ,p_token_2                 => 'LINE_TYPE_NAME'
273344                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
273345                                                                              l_component_type
273346                                                                             ,l_component_code
273347                                                                             ,l_component_type_code
273348                                                                             ,l_component_appl_id
273349                                                                             ,l_amb_context_code
273350                                                                             ,l_entity_code
273351                                                                             ,l_event_class_code
273352                                                                            )
273353                                     ,p_token_3                 => 'OWNER'
273354                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
273355                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
273356                                                                           ,p_lookup_code    => l_component_type_code
273357                                                                          )
273358                                     ,p_token_4                 => 'PRODUCT_NAME'
273359                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
273360                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
273361                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
273362                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
273363                                     ,p_ae_header_id            =>  NULL
273364                                        );
273365 
273366         IF (C_LEVEL_ERROR>= g_log_level) THEN
273367                  trace
273368                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
273369                       ,p_level    => C_LEVEL_ERROR
273370                       ,p_module   => l_log_module);
273371         END IF;
273372       END IF;
273373    END IF;
273374    --
273375    --
273376    ------------------------------------------------------------------------------------------------
273377    -- 4219869 Business Flow
273378    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
273379    -- Prior Entry.  Currently, the following code is always generated.
273380    ------------------------------------------------------------------------------------------------
273381    XLA_AE_LINES_PKG.ValidateCurrentLine;
273382 
273383    ------------------------------------------------------------------------------------
273384    -- 4219869 Business Flow
273385    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
273386    ------------------------------------------------------------------------------------
273387    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
273388 
273389    ----------------------------------------------------------------------------------
273390    -- 4219869 Business Flow
273391    -- Update journal entry status -- Need to generate this within IF <condition>
273392    ----------------------------------------------------------------------------------
273393    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
273394          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
273395          ,p_balance_type_code => l_balance_type_code
273396          );
273397 
273398    -------------------------------------------------------------------------------------------
273399    -- 4262811 - Generate the Accrual Reversal lines
273400    -------------------------------------------------------------------------------------------
273401    BEGIN
273402       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
273403                               (g_array_event(p_event_id).array_value_num('header_index'));
273404       IF l_acc_rev_flag IS NULL THEN
273405          l_acc_rev_flag := 'N';
273406       END IF;
273407    EXCEPTION
273408       WHEN OTHERS THEN
273409          l_acc_rev_flag := 'N';
273410    END;
273411    --
273412    IF (l_acc_rev_flag = 'Y') THEN
273413 
273414        -- 4645092  ------------------------------------------------------------------------------
273415        -- To allow MPA report to determine if it should generate report process
273416        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
273417        ------------------------------------------------------------------------------------------
273418 
273419        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
273420        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
273421    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
273422    -- call ADRs
273423    -- Bug 4922099
273424    --
273425    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
273426         (NVL(l_actual_upg_option, 'N') = 'O') OR
273427         (NVL(l_enc_upg_option, 'N') = 'O')
273428       )
273429    THEN
273430    NULL;
273431    --
273432    --
273433    
273434   l_ccid := AcctDerRule_32(
273435            p_application_id           => p_application_id
273436          , p_ae_header_id             => l_ae_header_id 
273437 , p_source_58 => p_source_58
273438          , x_transaction_coa_id       => l_adr_transaction_coa_id
273439          , x_accounting_coa_id        => l_adr_accounting_coa_id
273440          , x_value_type_code          => l_adr_value_type_code
273441          , p_side                     => 'NA'
273442    );
273443 
273444    xla_ae_lines_pkg.set_ccid(
273445     p_code_combination_id          => l_ccid
273446   , p_value_type_code              => l_adr_value_type_code
273447   , p_transaction_coa_id           => l_adr_transaction_coa_id
273448   , p_accounting_coa_id            => l_adr_accounting_coa_id
273449   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
273450   , p_adr_type_code                => 'S'
273451   , p_component_type               => l_component_type
273452   , p_component_code               => l_component_code
273453   , p_component_type_code          => l_component_type_code
273454   , p_component_appl_id            => l_component_appl_id
273455   , p_amb_context_code             => l_amb_context_code
273456   , p_side                         => 'NA'
273457   );
273458 
273459 
273460    --
273461    --
273462    END IF;
273463 
273464        --
273465        -- Update the line information that should be overwritten
273466        --
273467        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
273468                                          p_header_num   => 1);
273469        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
273470 
273471        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
273472 
273473        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
273474           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
273475        END IF;
273476 
273477       --
273478       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
273479       --
273480       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
273481           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
273482       ELSE
273483           ---------------------------------------------------------------------------------------------------
273484           -- 4262811a Switch Sign
273485           ---------------------------------------------------------------------------------------------------
273486           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
273487           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
273488                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
273489           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
273490                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
273491           -- 5132302
273492           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
273493                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
273494 
273495       END IF;
273496 
273497       -- 4955764
273498       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
273499       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
273500 
273501 
273502       XLA_AE_LINES_PKG.ValidateCurrentLine;
273503       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
273504 
273505       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
273506                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
273507                ,p_balance_type_code => l_balance_type_code);
273508 
273509    END IF;
273510 
273511    -----------------------------------------------------------------------------------------
273512    -- 4262811 Multiperiod Accounting
273513    -----------------------------------------------------------------------------------------
273514      -- No MPA option is assigned.
273515 
273516 
273517 END IF;
273518 END IF;
273519 --
273520 
273521 --
273522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
273523    trace
273524       (p_msg      => 'END of AcctLineType_489'
273525       ,p_level    => C_LEVEL_PROCEDURE
273526       ,p_module   => l_log_module);
273527 END IF;
273528 --
273529 EXCEPTION
273530   WHEN xla_exceptions_pkg.application_exception THEN
273531       RAISE;
273532   WHEN OTHERS THEN
273533        xla_exceptions_pkg.raise_message
273534            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_489');
273535 END AcctLineType_489;
273536 --
273537 
273538 ---------------------------------------
273539 --
273540 -- PRIVATE FUNCTION
273541 --         AcctLineType_490
273542 --
273543 ---------------------------------------
273544 PROCEDURE AcctLineType_490 (
273545   p_application_id        IN NUMBER
273546  ,p_event_id              IN NUMBER
273547  ,p_calculate_acctd_flag  IN VARCHAR2
273548  ,p_calculate_g_l_flag    IN VARCHAR2
273549  ,p_actual_flag           IN OUT VARCHAR2
273550  ,p_balance_type_code     OUT VARCHAR2
273551  ,p_gain_or_loss_ref      OUT VARCHAR2
273552  
273553 --TRANSACTION_ID
273554  , p_source_1            IN NUMBER
273555 --Item Concatenated Segments
273556  , p_source_2            IN VARCHAR2
273557 --Transaction Quantity
273558  , p_source_3            IN NUMBER
273559 --Transaction Unit of Measure Code
273560  , p_source_4            IN VARCHAR2
273561 --Inventory Transaction Type Description
273562  , p_source_5            IN VARCHAR2
273563 --Inventory Organization Purchase Price Variance Account
273564  , p_source_58            IN NUMBER
273565 --Applied to Application ID
273566  , p_source_79            IN NUMBER
273567 --Applied to Distribution Link Type
273568  , p_source_80            IN VARCHAR2
273569 --Applied to Entity Code
273570  , p_source_81            IN VARCHAR2
273571 --Applied To Purchase Document Identifier
273572  , p_source_83            IN NUMBER
273573 --DISTRIBUTION_IDENTIFIER
273574  , p_source_84            IN NUMBER
273575 --Distribution Type
273576  , p_source_85            IN VARCHAR2
273577  , p_source_85_meaning    IN VARCHAR2
273578 --PO Budget Account
273579  , p_source_86            IN NUMBER
273580 --Encumbrance Reversal Amount Entered
273581  , p_source_87            IN NUMBER
273582 --Entered Currency Code
273583  , p_source_88            IN VARCHAR2
273584 --Transaction Encumbrance Reversal Amount
273585  , p_source_89            IN NUMBER
273586 --Entered Amount
273587  , p_source_91            IN NUMBER
273588 --Currency Conversion Date
273589  , p_source_92            IN DATE
273590 --Currency Conversion Rate
273591  , p_source_93            IN NUMBER
273592 --Currency Conversion Type
273593  , p_source_94            IN VARCHAR2
273594 --Accounted Amount
273595  , p_source_95            IN NUMBER
273596 --Purchasing Encumbrance Type Identifier
273597  , p_source_96            IN NUMBER
273598 --Accounting Line Type
273599  , p_source_97            IN NUMBER
273600 --Costing Encumbrance Upgrade Option
273601  , p_source_100            IN VARCHAR2
273602 --TXN_PO_DISTRIBUTION_ID
273603  , p_source_101            IN NUMBER
273604 )
273605 IS
273606 
273607 l_component_type              VARCHAR2(80);
273608 l_component_code              VARCHAR2(30);
273609 l_component_type_code         VARCHAR2(1);
273610 l_component_appl_id           INTEGER;
273611 l_amb_context_code            VARCHAR2(30);
273612 l_entity_code                 VARCHAR2(30);
273613 l_event_class_code            VARCHAR2(30);
273614 l_ae_header_id                NUMBER;
273615 l_event_type_code             VARCHAR2(30);
273616 l_line_definition_code        VARCHAR2(30);
273617 l_line_definition_owner_code  VARCHAR2(1);
273618 --
273619 -- adr variables
273620 l_segment                     VARCHAR2(30);
273621 l_ccid                        NUMBER;
273622 l_adr_transaction_coa_id      NUMBER;
273623 l_adr_accounting_coa_id       NUMBER;
273624 l_adr_flexfield_segment_code  VARCHAR2(30);
273625 l_adr_flex_value_set_id       NUMBER;
273626 l_adr_value_type_code         VARCHAR2(30);
273627 l_adr_value_combination_id    NUMBER;
273628 l_adr_value_segment_code      VARCHAR2(30);
273629 
273630 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
273631 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
273632 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
273633 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
273634 
273635 -- 4262811 Variables ------------------------------------------------------------------------------------------
273636 l_entered_amt_idx             NUMBER;
273637 l_accted_amt_idx              NUMBER;
273638 l_acc_rev_flag                VARCHAR2(1);
273639 l_accrual_line_num            NUMBER;
273640 l_tmp_amt                     NUMBER;
273641 l_acc_rev_natural_side_code   VARCHAR2(1);
273642 
273643 l_num_entries                 NUMBER;
273644 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
273645 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
273646 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
273647 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
273648 l_recog_line_1                NUMBER;
273649 l_recog_line_2                NUMBER;
273650 
273651 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
273652 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
273653 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
273654 
273655 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
273656 
273657 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
273658 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
273659 
273660 ---------------------------------------------------------------------------------------------------------------
273661 
273662 
273663 --
273664 -- bulk performance
273665 --
273666 l_balance_type_code           VARCHAR2(1);
273667 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
273668 l_log_module                  VARCHAR2(240);
273669 
273670 --
273671 -- Upgrade strategy
273672 --
273673 l_actual_upg_option           VARCHAR2(1);
273674 l_enc_upg_option           VARCHAR2(1);
273675 
273676 --
273677 BEGIN
273678 --
273679 IF g_log_enabled THEN
273680       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_490';
273681 END IF;
273682 --
273683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
273684 
273685       trace
273686          (p_msg      => 'BEGIN of AcctLineType_490'
273687          ,p_level    => C_LEVEL_PROCEDURE
273688          ,p_module   => l_log_module);
273689 
273690 END IF;
273691 --
273692 l_component_type             := 'AMB_JLT';
273693 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
273694 l_component_type_code        := 'S';
273695 l_component_appl_id          :=  707;
273696 l_amb_context_code           := 'DEFAULT';
273697 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
273698 l_event_class_code           := 'PURCHASE_ORDER';
273699 l_event_type_code            := 'PO_DEL_ADJ';
273700 l_line_definition_owner_code := 'S';
273701 l_line_definition_code       := 'PI_PO_DEL_ADJ';
273702 --
273703 l_balance_type_code          := 'A';
273704 l_segment                     := NULL;
273705 l_ccid                        := NULL;
273706 l_adr_transaction_coa_id      := NULL;
273707 l_adr_accounting_coa_id       := NULL;
273708 l_adr_flexfield_segment_code  := NULL;
273709 l_adr_flex_value_set_id       := NULL;
273710 l_adr_value_type_code         := NULL;
273711 l_adr_value_combination_id    := NULL;
273712 l_adr_value_segment_code      := NULL;
273713 
273714 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
273715 l_bflow_class_code           := '';    -- 4219869 Business Flow
273716 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
273717 l_budgetary_control_flag     := 'N';
273718 
273719 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
273720 l_bflow_applied_to_amt       := NULL; -- 5132302
273721 l_entered_amt_idx            := NULL;          -- 4262811
273722 l_accted_amt_idx             := NULL;          -- 4262811
273723 l_acc_rev_flag               := NULL;          -- 4262811
273724 l_accrual_line_num           := NULL;          -- 4262811
273725 l_tmp_amt                    := NULL;          -- 4262811
273726 --
273727  
273728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
273729     l_balance_type_code <> 'B' THEN
273730 IF NVL(p_source_97,9E125) =  6
273731  THEN 
273732 
273733    --
273734    XLA_AE_LINES_PKG.SetNewLine;
273735 
273736    p_balance_type_code          := l_balance_type_code;
273737    -- set the flag so later we will know whether the gain loss line needs to be created
273738    
273739    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
273740      p_actual_flag :='A';
273741    END IF;
273742 
273743    --
273744    -- bulk performance
273745    --
273746    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
273747                                       p_header_num   => 0); -- 4262811
273748    --
273749    -- set accounting line options
273750    --
273751    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
273752            p_natural_side_code          => 'D'
273753          , p_gain_or_loss_flag          => 'N'
273754          , p_gl_transfer_mode_code      => 'S'
273755          , p_acct_entry_type_code       => 'A'
273756          , p_switch_side_flag           => 'Y'
273757          , p_merge_duplicate_code       => 'N'
273758          );
273759    --
273760    l_acc_rev_natural_side_code := 'C';  -- 4262811
273761    -- 
273762    --
273763    -- set accounting line type info
273764    --
273765    xla_ae_lines_pkg.SetAcctLineType
273766       (p_component_type             => l_component_type
273767       ,p_event_type_code            => l_event_type_code
273768       ,p_line_definition_owner_code => l_line_definition_owner_code
273769       ,p_line_definition_code       => l_line_definition_code
273770       ,p_accounting_line_code       => l_component_code
273771       ,p_accounting_line_type_code  => l_component_type_code
273772       ,p_accounting_line_appl_id    => l_component_appl_id
273773       ,p_amb_context_code           => l_amb_context_code
273774       ,p_entity_code                => l_entity_code
273775       ,p_event_class_code           => l_event_class_code);
273776    --
273777    -- set accounting class
273778    --
273779    xla_ae_lines_pkg.SetAcctClass(
273780            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
273781          , p_ae_header_id           => l_ae_header_id
273782          );
273783 
273784    --
273785    -- set rounding class
273786    --
273787    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
273788                       'PURCHASE_PRICE_VARIANCE';
273789 
273790    --
273791    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
273792    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
273793    --
273794    -- bulk performance
273795    --
273796    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
273797 
273798    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
273799       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
273800 
273801    -- 4955764
273802    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
273803       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
273804 
273805    -- 4458381 Public Sector Enh
273806    
273807    --
273808    -- set accounting attributes for the line type
273809    --
273810    l_entered_amt_idx := 17;
273811    l_accted_amt_idx  := 22;
273812    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
273813    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
273814    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
273815    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
273816    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
273817    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
273818    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
273819    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
273820    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
273821    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
273822    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
273823    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
273824    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
273825    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
273826    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
273827    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
273828    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
273829    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
273830    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
273831    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
273832    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
273833    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
273834    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
273835    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
273836    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
273837    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
273838    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
273839    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
273840    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
273841    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
273842    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
273843    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
273844    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
273845    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
273846    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
273847    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
273848    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
273849    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
273850    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
273851    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
273852    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
273853    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
273854    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
273855    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
273856    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
273857    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
273858    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
273859    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
273860    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
273861 
273862    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
273863    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
273864 
273865    ---------------------------------------------------------------------------------------------------------------
273866    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
273867    ---------------------------------------------------------------------------------------------------------------
273868    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
273869 
273870    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
273871    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
273872 
273873    IF xla_accounting_cache_pkg.GetValueChar
273874          (p_source_code         => 'LEDGER_CATEGORY_CODE'
273875          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
273876    AND l_bflow_method_code = 'PRIOR_ENTRY'
273877 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
273878    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
273879          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
273880        )
273881    THEN
273882          xla_ae_lines_pkg.BflowUpgEntry
273883            (p_business_method_code    => l_bflow_method_code
273884            ,p_business_class_code     => l_bflow_class_code
273885            ,p_balance_type            => l_balance_type_code);
273886    ELSE
273887       NULL;
273888 -- No business flow processing for business flow method of NONE.
273889    END IF;
273890 
273891    --
273892    -- call analytical criteria
273893    --
273894    
273895    --
273896    -- call description
273897    --
273898    
273899 xla_ae_lines_pkg.SetLineDescription(
273900    p_ae_header_id => l_ae_header_id
273901   ,p_description  => Description_1 (
273902      p_application_id         => p_application_id
273903    , p_ae_header_id           => l_ae_header_id 
273904 , p_source_1 => p_source_1
273905 , p_source_2 => p_source_2
273906 , p_source_3 => p_source_3
273907 , p_source_4 => p_source_4
273908 , p_source_5 => p_source_5
273909    )
273910 );
273911 
273912 
273913    --
273914    -- call ADRs
273915    -- Bug 4922099
273916    --
273917    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
273918         (NVL(l_actual_upg_option, 'N') = 'O') OR
273919         (NVL(l_enc_upg_option, 'N') = 'O')
273920       )
273921    THEN
273922    NULL;
273923    --
273924    --
273925    
273926   l_ccid := AcctDerRule_32(
273927            p_application_id           => p_application_id
273928          , p_ae_header_id             => l_ae_header_id 
273929 , p_source_58 => p_source_58
273930          , x_transaction_coa_id       => l_adr_transaction_coa_id
273931          , x_accounting_coa_id        => l_adr_accounting_coa_id
273932          , x_value_type_code          => l_adr_value_type_code
273933          , p_side                     => 'NA'
273934    );
273935 
273936    xla_ae_lines_pkg.set_ccid(
273937     p_code_combination_id          => l_ccid
273938   , p_value_type_code              => l_adr_value_type_code
273939   , p_transaction_coa_id           => l_adr_transaction_coa_id
273940   , p_accounting_coa_id            => l_adr_accounting_coa_id
273941   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
273942   , p_adr_type_code                => 'S'
273943   , p_component_type               => l_component_type
273944   , p_component_code               => l_component_code
273945   , p_component_type_code          => l_component_type_code
273946   , p_component_appl_id            => l_component_appl_id
273947   , p_amb_context_code             => l_amb_context_code
273948   , p_side                         => 'NA'
273949   );
273950 
273951 
273952    --
273953    --
273954    END IF;
273955    --
273956    -- Bug 4922099
273957    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
273958           (NVL(l_enc_upg_option, 'N') = 'O')
273959         ) AND
273960         (l_bflow_method_code = 'PRIOR_ENTRY')
273961       )
273962    THEN
273963       IF
273964       --
273965       1 = 2
273966       --
273967       THEN
273968       xla_accounting_err_pkg.build_message
273969                                     (p_appli_s_name            => 'XLA'
273970                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
273971                                     ,p_token_1                 => 'LINE_NUMBER'
273972                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
273973                                     ,p_token_2                 => 'LINE_TYPE_NAME'
273974                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
273975                                                                              l_component_type
273976                                                                             ,l_component_code
273977                                                                             ,l_component_type_code
273978                                                                             ,l_component_appl_id
273979                                                                             ,l_amb_context_code
273980                                                                             ,l_entity_code
273981                                                                             ,l_event_class_code
273982                                                                            )
273983                                     ,p_token_3                 => 'OWNER'
273984                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
273985                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
273986                                                                           ,p_lookup_code    => l_component_type_code
273987                                                                          )
273988                                     ,p_token_4                 => 'PRODUCT_NAME'
273989                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
273990                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
273991                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
273992                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
273993                                     ,p_ae_header_id            =>  NULL
273994                                        );
273995 
273996         IF (C_LEVEL_ERROR>= g_log_level) THEN
273997                  trace
273998                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
273999                       ,p_level    => C_LEVEL_ERROR
274000                       ,p_module   => l_log_module);
274001         END IF;
274002       END IF;
274003    END IF;
274004    --
274005    --
274006    ------------------------------------------------------------------------------------------------
274007    -- 4219869 Business Flow
274008    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
274009    -- Prior Entry.  Currently, the following code is always generated.
274010    ------------------------------------------------------------------------------------------------
274011    XLA_AE_LINES_PKG.ValidateCurrentLine;
274012 
274013    ------------------------------------------------------------------------------------
274014    -- 4219869 Business Flow
274015    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
274016    ------------------------------------------------------------------------------------
274017    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
274018 
274019    ----------------------------------------------------------------------------------
274020    -- 4219869 Business Flow
274021    -- Update journal entry status -- Need to generate this within IF <condition>
274022    ----------------------------------------------------------------------------------
274023    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
274024          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
274025          ,p_balance_type_code => l_balance_type_code
274026          );
274027 
274028    -------------------------------------------------------------------------------------------
274029    -- 4262811 - Generate the Accrual Reversal lines
274030    -------------------------------------------------------------------------------------------
274031    BEGIN
274032       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
274033                               (g_array_event(p_event_id).array_value_num('header_index'));
274034       IF l_acc_rev_flag IS NULL THEN
274035          l_acc_rev_flag := 'N';
274036       END IF;
274037    EXCEPTION
274038       WHEN OTHERS THEN
274039          l_acc_rev_flag := 'N';
274040    END;
274041    --
274042    IF (l_acc_rev_flag = 'Y') THEN
274043 
274044        -- 4645092  ------------------------------------------------------------------------------
274045        -- To allow MPA report to determine if it should generate report process
274046        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
274047        ------------------------------------------------------------------------------------------
274048 
274049        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
274050        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
274051    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
274052    -- call ADRs
274053    -- Bug 4922099
274054    --
274055    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
274056         (NVL(l_actual_upg_option, 'N') = 'O') OR
274057         (NVL(l_enc_upg_option, 'N') = 'O')
274058       )
274059    THEN
274060    NULL;
274061    --
274062    --
274063    
274064   l_ccid := AcctDerRule_32(
274065            p_application_id           => p_application_id
274066          , p_ae_header_id             => l_ae_header_id 
274067 , p_source_58 => p_source_58
274068          , x_transaction_coa_id       => l_adr_transaction_coa_id
274069          , x_accounting_coa_id        => l_adr_accounting_coa_id
274070          , x_value_type_code          => l_adr_value_type_code
274071          , p_side                     => 'NA'
274072    );
274073 
274074    xla_ae_lines_pkg.set_ccid(
274075     p_code_combination_id          => l_ccid
274076   , p_value_type_code              => l_adr_value_type_code
274077   , p_transaction_coa_id           => l_adr_transaction_coa_id
274078   , p_accounting_coa_id            => l_adr_accounting_coa_id
274079   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
274080   , p_adr_type_code                => 'S'
274081   , p_component_type               => l_component_type
274082   , p_component_code               => l_component_code
274083   , p_component_type_code          => l_component_type_code
274084   , p_component_appl_id            => l_component_appl_id
274085   , p_amb_context_code             => l_amb_context_code
274086   , p_side                         => 'NA'
274087   );
274088 
274089 
274090    --
274091    --
274092    END IF;
274093 
274094        --
274095        -- Update the line information that should be overwritten
274096        --
274097        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
274098                                          p_header_num   => 1);
274099        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
274100 
274101        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
274102 
274103        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
274104           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
274105        END IF;
274106 
274107       --
274108       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
274109       --
274110       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
274111           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
274112       ELSE
274113           ---------------------------------------------------------------------------------------------------
274114           -- 4262811a Switch Sign
274115           ---------------------------------------------------------------------------------------------------
274116           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
274117           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
274118                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
274119           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
274120                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
274121           -- 5132302
274122           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
274123                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
274124 
274125       END IF;
274126 
274127       -- 4955764
274128       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
274129       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
274130 
274131 
274132       XLA_AE_LINES_PKG.ValidateCurrentLine;
274133       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
274134 
274135       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
274136                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
274137                ,p_balance_type_code => l_balance_type_code);
274138 
274139    END IF;
274140 
274141    -----------------------------------------------------------------------------------------
274142    -- 4262811 Multiperiod Accounting
274143    -----------------------------------------------------------------------------------------
274144      -- No MPA option is assigned.
274145 
274146 
274147 END IF;
274148 END IF;
274149 --
274150 
274151 --
274152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
274153    trace
274154       (p_msg      => 'END of AcctLineType_490'
274155       ,p_level    => C_LEVEL_PROCEDURE
274156       ,p_module   => l_log_module);
274157 END IF;
274158 --
274159 EXCEPTION
274160   WHEN xla_exceptions_pkg.application_exception THEN
274161       RAISE;
274162   WHEN OTHERS THEN
274163        xla_exceptions_pkg.raise_message
274164            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_490');
274165 END AcctLineType_490;
274166 --
274167 
274168 ---------------------------------------
274169 --
274170 -- PRIVATE FUNCTION
274171 --         AcctLineType_491
274172 --
274173 ---------------------------------------
274174 PROCEDURE AcctLineType_491 (
274175   p_application_id        IN NUMBER
274176  ,p_event_id              IN NUMBER
274177  ,p_calculate_acctd_flag  IN VARCHAR2
274178  ,p_calculate_g_l_flag    IN VARCHAR2
274179  ,p_actual_flag           IN OUT VARCHAR2
274180  ,p_balance_type_code     OUT VARCHAR2
274181  ,p_gain_or_loss_ref      OUT VARCHAR2
274182  
274183 --TRANSACTION_ID
274184  , p_source_1            IN NUMBER
274185 --Transaction Unit of Measure Code
274186  , p_source_4            IN VARCHAR2
274187 --Primary Quantity of the Transaction
274188  , p_source_6            IN NUMBER
274189 --WIP Transaction Type
274190  , p_source_7            IN NUMBER
274191  , p_source_7_meaning    IN VARCHAR2
274192 --Cost Management Default Account
274193  , p_source_11            IN NUMBER
274194 --DISTRIBUTION_IDENTIFIER
274195  , p_source_84            IN NUMBER
274196 --Distribution Type
274197  , p_source_85            IN VARCHAR2
274198  , p_source_85_meaning    IN VARCHAR2
274199 --Entered Currency Code
274200  , p_source_88            IN VARCHAR2
274201 --Entered Amount
274202  , p_source_91            IN NUMBER
274203 --Currency Conversion Date
274204  , p_source_92            IN DATE
274205 --Currency Conversion Rate
274206  , p_source_93            IN NUMBER
274207 --Accounted Amount
274208  , p_source_95            IN NUMBER
274209 --Accounting Line Type
274210  , p_source_97            IN NUMBER
274211 )
274212 IS
274213 
274214 l_component_type              VARCHAR2(80);
274215 l_component_code              VARCHAR2(30);
274216 l_component_type_code         VARCHAR2(1);
274217 l_component_appl_id           INTEGER;
274218 l_amb_context_code            VARCHAR2(30);
274219 l_entity_code                 VARCHAR2(30);
274220 l_event_class_code            VARCHAR2(30);
274221 l_ae_header_id                NUMBER;
274222 l_event_type_code             VARCHAR2(30);
274223 l_line_definition_code        VARCHAR2(30);
274224 l_line_definition_owner_code  VARCHAR2(1);
274225 --
274226 -- adr variables
274227 l_segment                     VARCHAR2(30);
274228 l_ccid                        NUMBER;
274229 l_adr_transaction_coa_id      NUMBER;
274230 l_adr_accounting_coa_id       NUMBER;
274231 l_adr_flexfield_segment_code  VARCHAR2(30);
274232 l_adr_flex_value_set_id       NUMBER;
274233 l_adr_value_type_code         VARCHAR2(30);
274234 l_adr_value_combination_id    NUMBER;
274235 l_adr_value_segment_code      VARCHAR2(30);
274236 
274237 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
274238 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
274239 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
274240 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
274241 
274242 -- 4262811 Variables ------------------------------------------------------------------------------------------
274243 l_entered_amt_idx             NUMBER;
274244 l_accted_amt_idx              NUMBER;
274245 l_acc_rev_flag                VARCHAR2(1);
274246 l_accrual_line_num            NUMBER;
274247 l_tmp_amt                     NUMBER;
274248 l_acc_rev_natural_side_code   VARCHAR2(1);
274249 
274250 l_num_entries                 NUMBER;
274251 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
274252 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
274253 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
274254 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
274255 l_recog_line_1                NUMBER;
274256 l_recog_line_2                NUMBER;
274257 
274258 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
274259 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
274260 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
274261 
274262 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
274263 
274264 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
274265 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
274266 
274267 ---------------------------------------------------------------------------------------------------------------
274268 
274269 
274270 --
274271 -- bulk performance
274272 --
274273 l_balance_type_code           VARCHAR2(1);
274274 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
274275 l_log_module                  VARCHAR2(240);
274276 
274277 --
274278 -- Upgrade strategy
274279 --
274280 l_actual_upg_option           VARCHAR2(1);
274281 l_enc_upg_option           VARCHAR2(1);
274282 
274283 --
274284 BEGIN
274285 --
274286 IF g_log_enabled THEN
274287       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_491';
274288 END IF;
274289 --
274290 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
274291 
274292       trace
274293          (p_msg      => 'BEGIN of AcctLineType_491'
274294          ,p_level    => C_LEVEL_PROCEDURE
274295          ,p_module   => l_log_module);
274296 
274297 END IF;
274298 --
274299 l_component_type             := 'AMB_JLT';
274300 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
274301 l_component_type_code        := 'S';
274302 l_component_appl_id          :=  707;
274303 l_amb_context_code           := 'DEFAULT';
274304 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
274305 l_event_class_code           := 'OSP';
274306 l_event_type_code            := 'OSP';
274307 l_line_definition_owner_code := 'S';
274308 l_line_definition_code       := 'PI_OSP';
274309 --
274310 l_balance_type_code          := 'A';
274311 l_segment                     := NULL;
274312 l_ccid                        := NULL;
274313 l_adr_transaction_coa_id      := NULL;
274314 l_adr_accounting_coa_id       := NULL;
274315 l_adr_flexfield_segment_code  := NULL;
274316 l_adr_flex_value_set_id       := NULL;
274317 l_adr_value_type_code         := NULL;
274318 l_adr_value_combination_id    := NULL;
274319 l_adr_value_segment_code      := NULL;
274320 
274321 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
274322 l_bflow_class_code           := '';    -- 4219869 Business Flow
274323 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
274324 l_budgetary_control_flag     := 'N';
274325 
274326 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
274327 l_bflow_applied_to_amt       := NULL; -- 5132302
274328 l_entered_amt_idx            := NULL;          -- 4262811
274329 l_accted_amt_idx             := NULL;          -- 4262811
274330 l_acc_rev_flag               := NULL;          -- 4262811
274331 l_accrual_line_num           := NULL;          -- 4262811
274332 l_tmp_amt                    := NULL;          -- 4262811
274333 --
274334  
274335 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
274336     l_balance_type_code <> 'B' THEN
274337 IF NVL(p_source_97,9E125) =  6
274338  THEN 
274339 
274340    --
274341    XLA_AE_LINES_PKG.SetNewLine;
274342 
274343    p_balance_type_code          := l_balance_type_code;
274344    -- set the flag so later we will know whether the gain loss line needs to be created
274345    
274346    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
274347      p_actual_flag :='A';
274348    END IF;
274349 
274350    --
274351    -- bulk performance
274352    --
274353    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
274354                                       p_header_num   => 0); -- 4262811
274355    --
274356    -- set accounting line options
274357    --
274358    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
274359            p_natural_side_code          => 'D'
274360          , p_gain_or_loss_flag          => 'N'
274361          , p_gl_transfer_mode_code      => 'S'
274362          , p_acct_entry_type_code       => 'A'
274363          , p_switch_side_flag           => 'Y'
274364          , p_merge_duplicate_code       => 'N'
274365          );
274366    --
274367    l_acc_rev_natural_side_code := 'C';  -- 4262811
274368    -- 
274369    --
274370    -- set accounting line type info
274371    --
274372    xla_ae_lines_pkg.SetAcctLineType
274373       (p_component_type             => l_component_type
274374       ,p_event_type_code            => l_event_type_code
274375       ,p_line_definition_owner_code => l_line_definition_owner_code
274376       ,p_line_definition_code       => l_line_definition_code
274377       ,p_accounting_line_code       => l_component_code
274378       ,p_accounting_line_type_code  => l_component_type_code
274379       ,p_accounting_line_appl_id    => l_component_appl_id
274380       ,p_amb_context_code           => l_amb_context_code
274381       ,p_entity_code                => l_entity_code
274382       ,p_event_class_code           => l_event_class_code);
274383    --
274384    -- set accounting class
274385    --
274386    xla_ae_lines_pkg.SetAcctClass(
274387            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
274388          , p_ae_header_id           => l_ae_header_id
274389          );
274390 
274391    --
274392    -- set rounding class
274393    --
274394    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
274395                       'PURCHASE_PRICE_VARIANCE';
274396 
274397    --
274398    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
274399    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
274400    --
274401    -- bulk performance
274402    --
274403    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
274404 
274405    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
274406       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
274407 
274408    -- 4955764
274409    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
274410       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
274411 
274412    -- 4458381 Public Sector Enh
274413    
274414    --
274415    -- set accounting attributes for the line type
274416    --
274417    l_entered_amt_idx := 3;
274418    l_accted_amt_idx  := 8;
274419    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
274420    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
274421    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
274422    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
274423    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
274424    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
274425    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
274426    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
274427    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
274428    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
274429    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
274430    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
274431    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
274432    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
274433    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
274434    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
274435    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
274436 
274437    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
274438    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
274439 
274440    ---------------------------------------------------------------------------------------------------------------
274441    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
274442    ---------------------------------------------------------------------------------------------------------------
274443    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
274444 
274445    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
274446    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
274447 
274448    IF xla_accounting_cache_pkg.GetValueChar
274449          (p_source_code         => 'LEDGER_CATEGORY_CODE'
274450          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
274451    AND l_bflow_method_code = 'PRIOR_ENTRY'
274452 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
274453    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
274454          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
274455        )
274456    THEN
274457          xla_ae_lines_pkg.BflowUpgEntry
274458            (p_business_method_code    => l_bflow_method_code
274459            ,p_business_class_code     => l_bflow_class_code
274460            ,p_balance_type            => l_balance_type_code);
274461    ELSE
274462       NULL;
274463 -- No business flow processing for business flow method of NONE.
274464    END IF;
274465 
274466    --
274467    -- call analytical criteria
274468    --
274469    
274470    --
274471    -- call description
274472    --
274473    
274474 xla_ae_lines_pkg.SetLineDescription(
274475    p_ae_header_id => l_ae_header_id
274476   ,p_description  => Description_2 (
274477      p_application_id         => p_application_id
274478    , p_ae_header_id           => l_ae_header_id 
274479 , p_source_1 => p_source_1
274480 , p_source_4 => p_source_4
274481 , p_source_6 => p_source_6
274482 , p_source_7 => p_source_7
274483 , p_source_7_meaning => p_source_7_meaning
274484    )
274485 );
274486 
274487 
274488    --
274489    -- call ADRs
274490    -- Bug 4922099
274491    --
274492    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
274493         (NVL(l_actual_upg_option, 'N') = 'O') OR
274494         (NVL(l_enc_upg_option, 'N') = 'O')
274495       )
274496    THEN
274497    NULL;
274498    --
274499    --
274500    
274501   l_ccid := AcctDerRule_6(
274502            p_application_id           => p_application_id
274503          , p_ae_header_id             => l_ae_header_id 
274504 , p_source_11 => p_source_11
274505          , x_transaction_coa_id       => l_adr_transaction_coa_id
274506          , x_accounting_coa_id        => l_adr_accounting_coa_id
274507          , x_value_type_code          => l_adr_value_type_code
274508          , p_side                     => 'NA'
274509    );
274510 
274511    xla_ae_lines_pkg.set_ccid(
274512     p_code_combination_id          => l_ccid
274513   , p_value_type_code              => l_adr_value_type_code
274514   , p_transaction_coa_id           => l_adr_transaction_coa_id
274515   , p_accounting_coa_id            => l_adr_accounting_coa_id
274516   , p_adr_code                     => 'CST_DEFAULT'
274517   , p_adr_type_code                => 'S'
274518   , p_component_type               => l_component_type
274519   , p_component_code               => l_component_code
274520   , p_component_type_code          => l_component_type_code
274521   , p_component_appl_id            => l_component_appl_id
274522   , p_amb_context_code             => l_amb_context_code
274523   , p_side                         => 'NA'
274524   );
274525 
274526 
274527    --
274528    --
274529    END IF;
274530    --
274531    -- Bug 4922099
274532    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
274533           (NVL(l_enc_upg_option, 'N') = 'O')
274534         ) AND
274535         (l_bflow_method_code = 'PRIOR_ENTRY')
274536       )
274537    THEN
274538       IF
274539       --
274540       1 = 2
274541       --
274542       THEN
274543       xla_accounting_err_pkg.build_message
274544                                     (p_appli_s_name            => 'XLA'
274545                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
274546                                     ,p_token_1                 => 'LINE_NUMBER'
274547                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
274548                                     ,p_token_2                 => 'LINE_TYPE_NAME'
274549                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
274550                                                                              l_component_type
274551                                                                             ,l_component_code
274552                                                                             ,l_component_type_code
274553                                                                             ,l_component_appl_id
274554                                                                             ,l_amb_context_code
274555                                                                             ,l_entity_code
274556                                                                             ,l_event_class_code
274557                                                                            )
274558                                     ,p_token_3                 => 'OWNER'
274559                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
274560                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
274561                                                                           ,p_lookup_code    => l_component_type_code
274562                                                                          )
274563                                     ,p_token_4                 => 'PRODUCT_NAME'
274564                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
274565                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
274566                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
274567                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
274568                                     ,p_ae_header_id            =>  NULL
274569                                        );
274570 
274571         IF (C_LEVEL_ERROR>= g_log_level) THEN
274572                  trace
274573                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
274574                       ,p_level    => C_LEVEL_ERROR
274575                       ,p_module   => l_log_module);
274576         END IF;
274577       END IF;
274578    END IF;
274579    --
274580    --
274581    ------------------------------------------------------------------------------------------------
274582    -- 4219869 Business Flow
274583    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
274584    -- Prior Entry.  Currently, the following code is always generated.
274585    ------------------------------------------------------------------------------------------------
274586    XLA_AE_LINES_PKG.ValidateCurrentLine;
274587 
274588    ------------------------------------------------------------------------------------
274589    -- 4219869 Business Flow
274590    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
274591    ------------------------------------------------------------------------------------
274592    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
274593 
274594    ----------------------------------------------------------------------------------
274595    -- 4219869 Business Flow
274596    -- Update journal entry status -- Need to generate this within IF <condition>
274597    ----------------------------------------------------------------------------------
274598    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
274599          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
274600          ,p_balance_type_code => l_balance_type_code
274601          );
274602 
274603    -------------------------------------------------------------------------------------------
274604    -- 4262811 - Generate the Accrual Reversal lines
274605    -------------------------------------------------------------------------------------------
274606    BEGIN
274607       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
274608                               (g_array_event(p_event_id).array_value_num('header_index'));
274609       IF l_acc_rev_flag IS NULL THEN
274610          l_acc_rev_flag := 'N';
274611       END IF;
274612    EXCEPTION
274613       WHEN OTHERS THEN
274614          l_acc_rev_flag := 'N';
274615    END;
274616    --
274617    IF (l_acc_rev_flag = 'Y') THEN
274618 
274619        -- 4645092  ------------------------------------------------------------------------------
274620        -- To allow MPA report to determine if it should generate report process
274621        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
274622        ------------------------------------------------------------------------------------------
274623 
274624        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
274625        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
274626    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
274627    -- call ADRs
274628    -- Bug 4922099
274629    --
274630    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
274631         (NVL(l_actual_upg_option, 'N') = 'O') OR
274632         (NVL(l_enc_upg_option, 'N') = 'O')
274633       )
274634    THEN
274635    NULL;
274636    --
274637    --
274638    
274639   l_ccid := AcctDerRule_6(
274640            p_application_id           => p_application_id
274641          , p_ae_header_id             => l_ae_header_id 
274642 , p_source_11 => p_source_11
274643          , x_transaction_coa_id       => l_adr_transaction_coa_id
274644          , x_accounting_coa_id        => l_adr_accounting_coa_id
274645          , x_value_type_code          => l_adr_value_type_code
274646          , p_side                     => 'NA'
274647    );
274648 
274649    xla_ae_lines_pkg.set_ccid(
274650     p_code_combination_id          => l_ccid
274651   , p_value_type_code              => l_adr_value_type_code
274652   , p_transaction_coa_id           => l_adr_transaction_coa_id
274653   , p_accounting_coa_id            => l_adr_accounting_coa_id
274654   , p_adr_code                     => 'CST_DEFAULT'
274655   , p_adr_type_code                => 'S'
274656   , p_component_type               => l_component_type
274657   , p_component_code               => l_component_code
274658   , p_component_type_code          => l_component_type_code
274659   , p_component_appl_id            => l_component_appl_id
274660   , p_amb_context_code             => l_amb_context_code
274661   , p_side                         => 'NA'
274662   );
274663 
274664 
274665    --
274666    --
274667    END IF;
274668 
274669        --
274670        -- Update the line information that should be overwritten
274671        --
274672        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
274673                                          p_header_num   => 1);
274674        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
274675 
274676        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
274677 
274678        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
274679           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
274680        END IF;
274681 
274682       --
274683       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
274684       --
274685       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
274686           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
274687       ELSE
274688           ---------------------------------------------------------------------------------------------------
274689           -- 4262811a Switch Sign
274690           ---------------------------------------------------------------------------------------------------
274691           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
274692           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
274693                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
274694           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
274695                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
274696           -- 5132302
274697           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
274698                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
274699 
274700       END IF;
274701 
274702       -- 4955764
274703       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
274704       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
274705 
274706 
274707       XLA_AE_LINES_PKG.ValidateCurrentLine;
274708       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
274709 
274710       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
274711                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
274712                ,p_balance_type_code => l_balance_type_code);
274713 
274714    END IF;
274715 
274716    -----------------------------------------------------------------------------------------
274717    -- 4262811 Multiperiod Accounting
274718    -----------------------------------------------------------------------------------------
274719      -- No MPA option is assigned.
274720 
274721 
274722 END IF;
274723 END IF;
274724 --
274725 
274726 --
274727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
274728    trace
274729       (p_msg      => 'END of AcctLineType_491'
274730       ,p_level    => C_LEVEL_PROCEDURE
274731       ,p_module   => l_log_module);
274732 END IF;
274733 --
274734 EXCEPTION
274735   WHEN xla_exceptions_pkg.application_exception THEN
274736       RAISE;
274737   WHEN OTHERS THEN
274738        xla_exceptions_pkg.raise_message
274739            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_491');
274740 END AcctLineType_491;
274741 --
274742 
274743 ---------------------------------------
274744 --
274745 -- PRIVATE FUNCTION
274746 --         AcctLineType_492
274747 --
274748 ---------------------------------------
274749 PROCEDURE AcctLineType_492 (
274750   p_application_id        IN NUMBER
274751  ,p_event_id              IN NUMBER
274752  ,p_calculate_acctd_flag  IN VARCHAR2
274753  ,p_calculate_g_l_flag    IN VARCHAR2
274754  ,p_actual_flag           IN OUT VARCHAR2
274755  ,p_balance_type_code     OUT VARCHAR2
274756  ,p_gain_or_loss_ref      OUT VARCHAR2
274757  
274758 --TRANSACTION_ID
274759  , p_source_1            IN NUMBER
274760 --Item Concatenated Segments
274761  , p_source_2            IN VARCHAR2
274762 --Transaction Quantity
274763  , p_source_3            IN NUMBER
274764 --Transaction Unit of Measure Code
274765  , p_source_4            IN VARCHAR2
274766 --Inventory Transaction Type Description
274767  , p_source_5            IN VARCHAR2
274768 --Inventory Organization Purchase Price Variance Account
274769  , p_source_58            IN NUMBER
274770 --DISTRIBUTION_IDENTIFIER
274771  , p_source_84            IN NUMBER
274772 --Distribution Type
274773  , p_source_85            IN VARCHAR2
274774  , p_source_85_meaning    IN VARCHAR2
274775 --Entered Currency Code
274776  , p_source_88            IN VARCHAR2
274777 --Entered Amount
274778  , p_source_91            IN NUMBER
274779 --Currency Conversion Date
274780  , p_source_92            IN DATE
274781 --Currency Conversion Rate
274782  , p_source_93            IN NUMBER
274783 --Currency Conversion Type
274784  , p_source_94            IN VARCHAR2
274785 --Accounted Amount
274786  , p_source_95            IN NUMBER
274787 --Accounting Line Type
274788  , p_source_97            IN NUMBER
274789 )
274790 IS
274791 
274792 l_component_type              VARCHAR2(80);
274793 l_component_code              VARCHAR2(30);
274794 l_component_type_code         VARCHAR2(1);
274795 l_component_appl_id           INTEGER;
274796 l_amb_context_code            VARCHAR2(30);
274797 l_entity_code                 VARCHAR2(30);
274798 l_event_class_code            VARCHAR2(30);
274799 l_ae_header_id                NUMBER;
274800 l_event_type_code             VARCHAR2(30);
274801 l_line_definition_code        VARCHAR2(30);
274802 l_line_definition_owner_code  VARCHAR2(1);
274803 --
274804 -- adr variables
274805 l_segment                     VARCHAR2(30);
274806 l_ccid                        NUMBER;
274807 l_adr_transaction_coa_id      NUMBER;
274808 l_adr_accounting_coa_id       NUMBER;
274809 l_adr_flexfield_segment_code  VARCHAR2(30);
274810 l_adr_flex_value_set_id       NUMBER;
274811 l_adr_value_type_code         VARCHAR2(30);
274812 l_adr_value_combination_id    NUMBER;
274813 l_adr_value_segment_code      VARCHAR2(30);
274814 
274815 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
274816 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
274817 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
274818 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
274819 
274820 -- 4262811 Variables ------------------------------------------------------------------------------------------
274821 l_entered_amt_idx             NUMBER;
274822 l_accted_amt_idx              NUMBER;
274823 l_acc_rev_flag                VARCHAR2(1);
274824 l_accrual_line_num            NUMBER;
274825 l_tmp_amt                     NUMBER;
274826 l_acc_rev_natural_side_code   VARCHAR2(1);
274827 
274828 l_num_entries                 NUMBER;
274829 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
274830 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
274831 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
274832 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
274833 l_recog_line_1                NUMBER;
274834 l_recog_line_2                NUMBER;
274835 
274836 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
274837 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
274838 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
274839 
274840 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
274841 
274842 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
274843 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
274844 
274845 ---------------------------------------------------------------------------------------------------------------
274846 
274847 
274848 --
274849 -- bulk performance
274850 --
274851 l_balance_type_code           VARCHAR2(1);
274852 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
274853 l_log_module                  VARCHAR2(240);
274854 
274855 --
274856 -- Upgrade strategy
274857 --
274858 l_actual_upg_option           VARCHAR2(1);
274859 l_enc_upg_option           VARCHAR2(1);
274860 
274861 --
274862 BEGIN
274863 --
274864 IF g_log_enabled THEN
274865       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_492';
274866 END IF;
274867 --
274868 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
274869 
274870       trace
274871          (p_msg      => 'BEGIN of AcctLineType_492'
274872          ,p_level    => C_LEVEL_PROCEDURE
274873          ,p_module   => l_log_module);
274874 
274875 END IF;
274876 --
274877 l_component_type             := 'AMB_JLT';
274878 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
274879 l_component_type_code        := 'S';
274880 l_component_appl_id          :=  707;
274881 l_amb_context_code           := 'DEFAULT';
274882 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
274883 l_event_class_code           := 'CON_INV_OWNR_TXFR';
274884 l_event_type_code            := 'CON_INV_OWNR_TXFR_ALL';
274885 l_line_definition_owner_code := 'S';
274886 l_line_definition_code       := 'PI_CON_INV_OWNR_TRFR';
274887 --
274888 l_balance_type_code          := 'A';
274889 l_segment                     := NULL;
274890 l_ccid                        := NULL;
274891 l_adr_transaction_coa_id      := NULL;
274892 l_adr_accounting_coa_id       := NULL;
274893 l_adr_flexfield_segment_code  := NULL;
274894 l_adr_flex_value_set_id       := NULL;
274895 l_adr_value_type_code         := NULL;
274896 l_adr_value_combination_id    := NULL;
274897 l_adr_value_segment_code      := NULL;
274898 
274899 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
274900 l_bflow_class_code           := '';    -- 4219869 Business Flow
274901 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
274902 l_budgetary_control_flag     := 'N';
274903 
274904 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
274905 l_bflow_applied_to_amt       := NULL; -- 5132302
274906 l_entered_amt_idx            := NULL;          -- 4262811
274907 l_accted_amt_idx             := NULL;          -- 4262811
274908 l_acc_rev_flag               := NULL;          -- 4262811
274909 l_accrual_line_num           := NULL;          -- 4262811
274910 l_tmp_amt                    := NULL;          -- 4262811
274911 --
274912  
274913 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
274914     l_balance_type_code <> 'B' THEN
274915 IF NVL(p_source_97,9E125) =  6
274916  THEN 
274917 
274918    --
274919    XLA_AE_LINES_PKG.SetNewLine;
274920 
274921    p_balance_type_code          := l_balance_type_code;
274922    -- set the flag so later we will know whether the gain loss line needs to be created
274923    
274924    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
274925      p_actual_flag :='A';
274926    END IF;
274927 
274928    --
274929    -- bulk performance
274930    --
274931    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
274932                                       p_header_num   => 0); -- 4262811
274933    --
274934    -- set accounting line options
274935    --
274936    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
274937            p_natural_side_code          => 'D'
274938          , p_gain_or_loss_flag          => 'N'
274939          , p_gl_transfer_mode_code      => 'S'
274940          , p_acct_entry_type_code       => 'A'
274941          , p_switch_side_flag           => 'Y'
274942          , p_merge_duplicate_code       => 'N'
274943          );
274944    --
274945    l_acc_rev_natural_side_code := 'C';  -- 4262811
274946    -- 
274947    --
274948    -- set accounting line type info
274949    --
274950    xla_ae_lines_pkg.SetAcctLineType
274951       (p_component_type             => l_component_type
274952       ,p_event_type_code            => l_event_type_code
274953       ,p_line_definition_owner_code => l_line_definition_owner_code
274954       ,p_line_definition_code       => l_line_definition_code
274955       ,p_accounting_line_code       => l_component_code
274956       ,p_accounting_line_type_code  => l_component_type_code
274957       ,p_accounting_line_appl_id    => l_component_appl_id
274958       ,p_amb_context_code           => l_amb_context_code
274959       ,p_entity_code                => l_entity_code
274960       ,p_event_class_code           => l_event_class_code);
274961    --
274962    -- set accounting class
274963    --
274964    xla_ae_lines_pkg.SetAcctClass(
274965            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
274966          , p_ae_header_id           => l_ae_header_id
274967          );
274968 
274969    --
274970    -- set rounding class
274971    --
274972    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
274973                       'PURCHASE_PRICE_VARIANCE';
274974 
274975    --
274976    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
274977    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
274978    --
274979    -- bulk performance
274980    --
274981    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
274982 
274983    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
274984       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
274985 
274986    -- 4955764
274987    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
274988       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
274989 
274990    -- 4458381 Public Sector Enh
274991    
274992    --
274993    -- set accounting attributes for the line type
274994    --
274995    l_entered_amt_idx := 3;
274996    l_accted_amt_idx  := 8;
274997    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
274998    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
274999    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
275000    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
275001    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
275002    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
275003    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
275004    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
275005    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
275006    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
275007    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
275008    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
275009    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
275010    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
275011    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
275012    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
275013    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
275014 
275015    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
275016    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
275017 
275018    ---------------------------------------------------------------------------------------------------------------
275019    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
275020    ---------------------------------------------------------------------------------------------------------------
275021    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
275022 
275023    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
275024    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
275025 
275026    IF xla_accounting_cache_pkg.GetValueChar
275027          (p_source_code         => 'LEDGER_CATEGORY_CODE'
275028          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
275029    AND l_bflow_method_code = 'PRIOR_ENTRY'
275030 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
275031    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
275032          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
275033        )
275034    THEN
275035          xla_ae_lines_pkg.BflowUpgEntry
275036            (p_business_method_code    => l_bflow_method_code
275037            ,p_business_class_code     => l_bflow_class_code
275038            ,p_balance_type            => l_balance_type_code);
275039    ELSE
275040       NULL;
275041 -- No business flow processing for business flow method of NONE.
275042    END IF;
275043 
275044    --
275045    -- call analytical criteria
275046    --
275047    
275048    --
275049    -- call description
275050    --
275051    
275052 xla_ae_lines_pkg.SetLineDescription(
275053    p_ae_header_id => l_ae_header_id
275054   ,p_description  => Description_1 (
275055      p_application_id         => p_application_id
275056    , p_ae_header_id           => l_ae_header_id 
275057 , p_source_1 => p_source_1
275058 , p_source_2 => p_source_2
275059 , p_source_3 => p_source_3
275060 , p_source_4 => p_source_4
275061 , p_source_5 => p_source_5
275062    )
275063 );
275064 
275065 
275066    --
275067    -- call ADRs
275068    -- Bug 4922099
275069    --
275070    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
275071         (NVL(l_actual_upg_option, 'N') = 'O') OR
275072         (NVL(l_enc_upg_option, 'N') = 'O')
275073       )
275074    THEN
275075    NULL;
275076    --
275077    --
275078    
275079   l_ccid := AcctDerRule_32(
275080            p_application_id           => p_application_id
275081          , p_ae_header_id             => l_ae_header_id 
275082 , p_source_58 => p_source_58
275083          , x_transaction_coa_id       => l_adr_transaction_coa_id
275084          , x_accounting_coa_id        => l_adr_accounting_coa_id
275085          , x_value_type_code          => l_adr_value_type_code
275086          , p_side                     => 'NA'
275087    );
275088 
275089    xla_ae_lines_pkg.set_ccid(
275090     p_code_combination_id          => l_ccid
275091   , p_value_type_code              => l_adr_value_type_code
275092   , p_transaction_coa_id           => l_adr_transaction_coa_id
275093   , p_accounting_coa_id            => l_adr_accounting_coa_id
275094   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
275095   , p_adr_type_code                => 'S'
275096   , p_component_type               => l_component_type
275097   , p_component_code               => l_component_code
275098   , p_component_type_code          => l_component_type_code
275099   , p_component_appl_id            => l_component_appl_id
275100   , p_amb_context_code             => l_amb_context_code
275101   , p_side                         => 'NA'
275102   );
275103 
275104 
275105    --
275106    --
275107    END IF;
275108    --
275109    -- Bug 4922099
275110    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
275111           (NVL(l_enc_upg_option, 'N') = 'O')
275112         ) AND
275113         (l_bflow_method_code = 'PRIOR_ENTRY')
275114       )
275115    THEN
275116       IF
275117       --
275118       1 = 2
275119       --
275120       THEN
275121       xla_accounting_err_pkg.build_message
275122                                     (p_appli_s_name            => 'XLA'
275123                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
275124                                     ,p_token_1                 => 'LINE_NUMBER'
275125                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
275126                                     ,p_token_2                 => 'LINE_TYPE_NAME'
275127                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
275128                                                                              l_component_type
275129                                                                             ,l_component_code
275130                                                                             ,l_component_type_code
275131                                                                             ,l_component_appl_id
275132                                                                             ,l_amb_context_code
275133                                                                             ,l_entity_code
275134                                                                             ,l_event_class_code
275135                                                                            )
275136                                     ,p_token_3                 => 'OWNER'
275137                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
275138                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
275139                                                                           ,p_lookup_code    => l_component_type_code
275140                                                                          )
275141                                     ,p_token_4                 => 'PRODUCT_NAME'
275142                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
275143                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
275144                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
275145                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
275146                                     ,p_ae_header_id            =>  NULL
275147                                        );
275148 
275149         IF (C_LEVEL_ERROR>= g_log_level) THEN
275150                  trace
275151                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
275152                       ,p_level    => C_LEVEL_ERROR
275153                       ,p_module   => l_log_module);
275154         END IF;
275155       END IF;
275156    END IF;
275157    --
275158    --
275159    ------------------------------------------------------------------------------------------------
275160    -- 4219869 Business Flow
275161    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
275162    -- Prior Entry.  Currently, the following code is always generated.
275163    ------------------------------------------------------------------------------------------------
275164    XLA_AE_LINES_PKG.ValidateCurrentLine;
275165 
275166    ------------------------------------------------------------------------------------
275167    -- 4219869 Business Flow
275168    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
275169    ------------------------------------------------------------------------------------
275170    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
275171 
275172    ----------------------------------------------------------------------------------
275173    -- 4219869 Business Flow
275174    -- Update journal entry status -- Need to generate this within IF <condition>
275175    ----------------------------------------------------------------------------------
275176    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
275177          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
275178          ,p_balance_type_code => l_balance_type_code
275179          );
275180 
275181    -------------------------------------------------------------------------------------------
275182    -- 4262811 - Generate the Accrual Reversal lines
275183    -------------------------------------------------------------------------------------------
275184    BEGIN
275185       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
275186                               (g_array_event(p_event_id).array_value_num('header_index'));
275187       IF l_acc_rev_flag IS NULL THEN
275188          l_acc_rev_flag := 'N';
275189       END IF;
275190    EXCEPTION
275191       WHEN OTHERS THEN
275192          l_acc_rev_flag := 'N';
275193    END;
275194    --
275195    IF (l_acc_rev_flag = 'Y') THEN
275196 
275197        -- 4645092  ------------------------------------------------------------------------------
275198        -- To allow MPA report to determine if it should generate report process
275199        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
275200        ------------------------------------------------------------------------------------------
275201 
275202        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
275203        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
275204    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
275205    -- call ADRs
275206    -- Bug 4922099
275207    --
275208    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
275209         (NVL(l_actual_upg_option, 'N') = 'O') OR
275210         (NVL(l_enc_upg_option, 'N') = 'O')
275211       )
275212    THEN
275213    NULL;
275214    --
275215    --
275216    
275217   l_ccid := AcctDerRule_32(
275218            p_application_id           => p_application_id
275219          , p_ae_header_id             => l_ae_header_id 
275220 , p_source_58 => p_source_58
275221          , x_transaction_coa_id       => l_adr_transaction_coa_id
275222          , x_accounting_coa_id        => l_adr_accounting_coa_id
275223          , x_value_type_code          => l_adr_value_type_code
275224          , p_side                     => 'NA'
275225    );
275226 
275227    xla_ae_lines_pkg.set_ccid(
275228     p_code_combination_id          => l_ccid
275229   , p_value_type_code              => l_adr_value_type_code
275230   , p_transaction_coa_id           => l_adr_transaction_coa_id
275231   , p_accounting_coa_id            => l_adr_accounting_coa_id
275232   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
275233   , p_adr_type_code                => 'S'
275234   , p_component_type               => l_component_type
275235   , p_component_code               => l_component_code
275236   , p_component_type_code          => l_component_type_code
275237   , p_component_appl_id            => l_component_appl_id
275238   , p_amb_context_code             => l_amb_context_code
275239   , p_side                         => 'NA'
275240   );
275241 
275242 
275243    --
275244    --
275245    END IF;
275246 
275247        --
275248        -- Update the line information that should be overwritten
275249        --
275250        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
275251                                          p_header_num   => 1);
275252        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
275253 
275254        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
275255 
275256        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
275257           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
275258        END IF;
275259 
275260       --
275261       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
275262       --
275263       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
275264           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
275265       ELSE
275266           ---------------------------------------------------------------------------------------------------
275267           -- 4262811a Switch Sign
275268           ---------------------------------------------------------------------------------------------------
275269           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
275270           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
275271                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
275272           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
275273                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
275274           -- 5132302
275275           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
275276                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
275277 
275278       END IF;
275279 
275280       -- 4955764
275281       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
275282       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
275283 
275284 
275285       XLA_AE_LINES_PKG.ValidateCurrentLine;
275286       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
275287 
275288       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
275289                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
275290                ,p_balance_type_code => l_balance_type_code);
275291 
275292    END IF;
275293 
275294    -----------------------------------------------------------------------------------------
275295    -- 4262811 Multiperiod Accounting
275296    -----------------------------------------------------------------------------------------
275297      -- No MPA option is assigned.
275298 
275299 
275300 END IF;
275301 END IF;
275302 --
275303 
275304 --
275305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
275306    trace
275307       (p_msg      => 'END of AcctLineType_492'
275308       ,p_level    => C_LEVEL_PROCEDURE
275309       ,p_module   => l_log_module);
275310 END IF;
275311 --
275312 EXCEPTION
275313   WHEN xla_exceptions_pkg.application_exception THEN
275314       RAISE;
275315   WHEN OTHERS THEN
275316        xla_exceptions_pkg.raise_message
275317            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_492');
275318 END AcctLineType_492;
275319 --
275320 
275321 ---------------------------------------
275322 --
275323 -- PRIVATE FUNCTION
275324 --         AcctLineType_493
275325 --
275326 ---------------------------------------
275327 PROCEDURE AcctLineType_493 (
275328   p_application_id        IN NUMBER
275329  ,p_event_id              IN NUMBER
275330  ,p_calculate_acctd_flag  IN VARCHAR2
275331  ,p_calculate_g_l_flag    IN VARCHAR2
275332  ,p_actual_flag           IN OUT VARCHAR2
275333  ,p_balance_type_code     OUT VARCHAR2
275334  ,p_gain_or_loss_ref      OUT VARCHAR2
275335  
275336 --TRANSACTION_ID
275337  , p_source_1            IN NUMBER
275338 --Item Concatenated Segments
275339  , p_source_2            IN VARCHAR2
275340 --Transaction Quantity
275341  , p_source_3            IN NUMBER
275342 --Transaction Unit of Measure Code
275343  , p_source_4            IN VARCHAR2
275344 --Inventory Transaction Type Description
275345  , p_source_5            IN VARCHAR2
275346 --Interorg Price Variance Account
275347  , p_source_36            IN NUMBER
275348 --Applied to Application ID
275349  , p_source_79            IN NUMBER
275350 --Applied to Distribution Link Type
275351  , p_source_80            IN VARCHAR2
275352 --Applied to Entity Code
275353  , p_source_81            IN VARCHAR2
275354 --DISTRIBUTION_IDENTIFIER
275355  , p_source_84            IN NUMBER
275356 --Distribution Type
275357  , p_source_85            IN VARCHAR2
275358  , p_source_85_meaning    IN VARCHAR2
275359 --Encumbrance Reversal Amount Entered
275360  , p_source_87            IN NUMBER
275361 --Entered Currency Code
275362  , p_source_88            IN VARCHAR2
275363 --Transaction Encumbrance Reversal Amount
275364  , p_source_89            IN NUMBER
275365 --Entered Amount
275366  , p_source_91            IN NUMBER
275367 --Currency Conversion Date
275368  , p_source_92            IN DATE
275369 --Currency Conversion Rate
275370  , p_source_93            IN NUMBER
275371 --Currency Conversion Type
275372  , p_source_94            IN VARCHAR2
275373 --Accounted Amount
275374  , p_source_95            IN NUMBER
275375 --Accounting Line Type
275376  , p_source_97            IN NUMBER
275377 --Costing Encumbrance Upgrade Option
275378  , p_source_100            IN VARCHAR2
275379 --TXN_PO_DISTRIBUTION_ID
275380  , p_source_101            IN NUMBER
275381 --TXN_PO_HEADER_ID
275382  , p_source_102            IN NUMBER
275383 --Requisition Budget Account
275384  , p_source_103            IN NUMBER
275385 --Requisition Encumbrance Type Identifier
275386  , p_source_104            IN NUMBER
275387 )
275388 IS
275389 
275390 l_component_type              VARCHAR2(80);
275391 l_component_code              VARCHAR2(30);
275392 l_component_type_code         VARCHAR2(1);
275393 l_component_appl_id           INTEGER;
275394 l_amb_context_code            VARCHAR2(30);
275395 l_entity_code                 VARCHAR2(30);
275396 l_event_class_code            VARCHAR2(30);
275397 l_ae_header_id                NUMBER;
275398 l_event_type_code             VARCHAR2(30);
275399 l_line_definition_code        VARCHAR2(30);
275400 l_line_definition_owner_code  VARCHAR2(1);
275401 --
275402 -- adr variables
275403 l_segment                     VARCHAR2(30);
275404 l_ccid                        NUMBER;
275405 l_adr_transaction_coa_id      NUMBER;
275406 l_adr_accounting_coa_id       NUMBER;
275407 l_adr_flexfield_segment_code  VARCHAR2(30);
275408 l_adr_flex_value_set_id       NUMBER;
275409 l_adr_value_type_code         VARCHAR2(30);
275410 l_adr_value_combination_id    NUMBER;
275411 l_adr_value_segment_code      VARCHAR2(30);
275412 
275413 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
275414 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
275415 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
275416 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
275417 
275418 -- 4262811 Variables ------------------------------------------------------------------------------------------
275419 l_entered_amt_idx             NUMBER;
275420 l_accted_amt_idx              NUMBER;
275421 l_acc_rev_flag                VARCHAR2(1);
275422 l_accrual_line_num            NUMBER;
275423 l_tmp_amt                     NUMBER;
275424 l_acc_rev_natural_side_code   VARCHAR2(1);
275425 
275426 l_num_entries                 NUMBER;
275427 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
275428 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
275429 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
275430 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
275431 l_recog_line_1                NUMBER;
275432 l_recog_line_2                NUMBER;
275433 
275434 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
275435 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
275436 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
275437 
275438 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
275439 
275440 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
275441 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
275442 
275443 ---------------------------------------------------------------------------------------------------------------
275444 
275445 
275446 --
275447 -- bulk performance
275448 --
275449 l_balance_type_code           VARCHAR2(1);
275450 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
275451 l_log_module                  VARCHAR2(240);
275452 
275453 --
275454 -- Upgrade strategy
275455 --
275456 l_actual_upg_option           VARCHAR2(1);
275457 l_enc_upg_option           VARCHAR2(1);
275458 
275459 --
275460 BEGIN
275461 --
275462 IF g_log_enabled THEN
275463       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_493';
275464 END IF;
275465 --
275466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
275467 
275468       trace
275469          (p_msg      => 'BEGIN of AcctLineType_493'
275470          ,p_level    => C_LEVEL_PROCEDURE
275471          ,p_module   => l_log_module);
275472 
275473 END IF;
275474 --
275475 l_component_type             := 'AMB_JLT';
275476 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
275477 l_component_type_code        := 'S';
275478 l_component_appl_id          :=  707;
275479 l_amb_context_code           := 'DEFAULT';
275480 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
275481 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
275482 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
275483 l_line_definition_owner_code := 'S';
275484 l_line_definition_code       := 'PI_FOB_RCPT_RECIPIENT_RCPT_TP';
275485 --
275486 l_balance_type_code          := 'A';
275487 l_segment                     := NULL;
275488 l_ccid                        := NULL;
275489 l_adr_transaction_coa_id      := NULL;
275490 l_adr_accounting_coa_id       := NULL;
275491 l_adr_flexfield_segment_code  := NULL;
275492 l_adr_flex_value_set_id       := NULL;
275493 l_adr_value_type_code         := NULL;
275494 l_adr_value_combination_id    := NULL;
275495 l_adr_value_segment_code      := NULL;
275496 
275497 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
275498 l_bflow_class_code           := '';    -- 4219869 Business Flow
275499 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
275500 l_budgetary_control_flag     := 'N';
275501 
275502 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
275503 l_bflow_applied_to_amt       := NULL; -- 5132302
275504 l_entered_amt_idx            := NULL;          -- 4262811
275505 l_accted_amt_idx             := NULL;          -- 4262811
275506 l_acc_rev_flag               := NULL;          -- 4262811
275507 l_accrual_line_num           := NULL;          -- 4262811
275508 l_tmp_amt                    := NULL;          -- 4262811
275509 --
275510  
275511 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
275512     l_balance_type_code <> 'B' THEN
275513 IF NVL(p_source_97,9E125) =  6
275514  THEN 
275515 
275516    --
275517    XLA_AE_LINES_PKG.SetNewLine;
275518 
275519    p_balance_type_code          := l_balance_type_code;
275520    -- set the flag so later we will know whether the gain loss line needs to be created
275521    
275522    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
275523      p_actual_flag :='A';
275524    END IF;
275525 
275526    --
275527    -- bulk performance
275528    --
275529    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
275530                                       p_header_num   => 0); -- 4262811
275531    --
275532    -- set accounting line options
275533    --
275534    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
275535            p_natural_side_code          => 'D'
275536          , p_gain_or_loss_flag          => 'N'
275537          , p_gl_transfer_mode_code      => 'S'
275538          , p_acct_entry_type_code       => 'A'
275539          , p_switch_side_flag           => 'Y'
275540          , p_merge_duplicate_code       => 'N'
275541          );
275542    --
275543    l_acc_rev_natural_side_code := 'C';  -- 4262811
275544    -- 
275545    --
275546    -- set accounting line type info
275547    --
275548    xla_ae_lines_pkg.SetAcctLineType
275549       (p_component_type             => l_component_type
275550       ,p_event_type_code            => l_event_type_code
275551       ,p_line_definition_owner_code => l_line_definition_owner_code
275552       ,p_line_definition_code       => l_line_definition_code
275553       ,p_accounting_line_code       => l_component_code
275554       ,p_accounting_line_type_code  => l_component_type_code
275555       ,p_accounting_line_appl_id    => l_component_appl_id
275556       ,p_amb_context_code           => l_amb_context_code
275557       ,p_entity_code                => l_entity_code
275558       ,p_event_class_code           => l_event_class_code);
275559    --
275560    -- set accounting class
275561    --
275562    xla_ae_lines_pkg.SetAcctClass(
275563            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
275564          , p_ae_header_id           => l_ae_header_id
275565          );
275566 
275567    --
275568    -- set rounding class
275569    --
275570    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
275571                       'PURCHASE_PRICE_VARIANCE';
275572 
275573    --
275574    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
275575    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
275576    --
275577    -- bulk performance
275578    --
275579    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
275580 
275581    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
275582       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
275583 
275584    -- 4955764
275585    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
275586       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
275587 
275588    -- 4458381 Public Sector Enh
275589    
275590    --
275591    -- set accounting attributes for the line type
275592    --
275593    l_entered_amt_idx := 17;
275594    l_accted_amt_idx  := 22;
275595    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
275596    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
275597    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
275598    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
275599    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
275600    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
275601    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
275602    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
275603    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
275604    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
275605    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_102);
275606    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
275607    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
275608    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
275609    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
275610    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
275611    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_103);
275612    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
275613    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
275614    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
275615    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
275616    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
275617    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
275618    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
275619    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_103);
275620    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
275621    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
275622    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
275623    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
275624    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
275625    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
275626    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
275627    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
275628    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
275629    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
275630    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
275631    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
275632    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
275633    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
275634    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
275635    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
275636    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
275637    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
275638    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
275639    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
275640    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
275641    l_rec_acct_attrs.array_num_value(23)  := p_source_104;
275642    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
275643    l_rec_acct_attrs.array_num_value(24)  := p_source_104;
275644 
275645    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
275646    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
275647 
275648    ---------------------------------------------------------------------------------------------------------------
275649    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
275650    ---------------------------------------------------------------------------------------------------------------
275651    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
275652 
275653    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
275654    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
275655 
275656    IF xla_accounting_cache_pkg.GetValueChar
275657          (p_source_code         => 'LEDGER_CATEGORY_CODE'
275658          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
275659    AND l_bflow_method_code = 'PRIOR_ENTRY'
275660 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
275661    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
275662          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
275663        )
275664    THEN
275665          xla_ae_lines_pkg.BflowUpgEntry
275666            (p_business_method_code    => l_bflow_method_code
275667            ,p_business_class_code     => l_bflow_class_code
275668            ,p_balance_type            => l_balance_type_code);
275669    ELSE
275670       NULL;
275671 -- No business flow processing for business flow method of NONE.
275672    END IF;
275673 
275674    --
275675    -- call analytical criteria
275676    --
275677    
275678    --
275679    -- call description
275680    --
275681    
275682 xla_ae_lines_pkg.SetLineDescription(
275683    p_ae_header_id => l_ae_header_id
275684   ,p_description  => Description_1 (
275685      p_application_id         => p_application_id
275686    , p_ae_header_id           => l_ae_header_id 
275687 , p_source_1 => p_source_1
275688 , p_source_2 => p_source_2
275689 , p_source_3 => p_source_3
275690 , p_source_4 => p_source_4
275691 , p_source_5 => p_source_5
275692    )
275693 );
275694 
275695 
275696    --
275697    -- call ADRs
275698    -- Bug 4922099
275699    --
275700    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
275701         (NVL(l_actual_upg_option, 'N') = 'O') OR
275702         (NVL(l_enc_upg_option, 'N') = 'O')
275703       )
275704    THEN
275705    NULL;
275706    --
275707    --
275708    
275709   l_ccid := AcctDerRule_21(
275710            p_application_id           => p_application_id
275711          , p_ae_header_id             => l_ae_header_id 
275712 , p_source_36 => p_source_36
275713          , x_transaction_coa_id       => l_adr_transaction_coa_id
275714          , x_accounting_coa_id        => l_adr_accounting_coa_id
275715          , x_value_type_code          => l_adr_value_type_code
275716          , p_side                     => 'NA'
275717    );
275718 
275719    xla_ae_lines_pkg.set_ccid(
275720     p_code_combination_id          => l_ccid
275721   , p_value_type_code              => l_adr_value_type_code
275722   , p_transaction_coa_id           => l_adr_transaction_coa_id
275723   , p_accounting_coa_id            => l_adr_accounting_coa_id
275724   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
275725   , p_adr_type_code                => 'S'
275726   , p_component_type               => l_component_type
275727   , p_component_code               => l_component_code
275728   , p_component_type_code          => l_component_type_code
275729   , p_component_appl_id            => l_component_appl_id
275730   , p_amb_context_code             => l_amb_context_code
275731   , p_side                         => 'NA'
275732   );
275733 
275734 
275735    --
275736    --
275737    END IF;
275738    --
275739    -- Bug 4922099
275740    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
275741           (NVL(l_enc_upg_option, 'N') = 'O')
275742         ) AND
275743         (l_bflow_method_code = 'PRIOR_ENTRY')
275744       )
275745    THEN
275746       IF
275747       --
275748       1 = 2
275749       --
275750       THEN
275751       xla_accounting_err_pkg.build_message
275752                                     (p_appli_s_name            => 'XLA'
275753                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
275754                                     ,p_token_1                 => 'LINE_NUMBER'
275755                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
275756                                     ,p_token_2                 => 'LINE_TYPE_NAME'
275757                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
275758                                                                              l_component_type
275759                                                                             ,l_component_code
275760                                                                             ,l_component_type_code
275761                                                                             ,l_component_appl_id
275762                                                                             ,l_amb_context_code
275763                                                                             ,l_entity_code
275764                                                                             ,l_event_class_code
275765                                                                            )
275766                                     ,p_token_3                 => 'OWNER'
275767                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
275768                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
275769                                                                           ,p_lookup_code    => l_component_type_code
275770                                                                          )
275771                                     ,p_token_4                 => 'PRODUCT_NAME'
275772                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
275773                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
275774                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
275775                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
275776                                     ,p_ae_header_id            =>  NULL
275777                                        );
275778 
275779         IF (C_LEVEL_ERROR>= g_log_level) THEN
275780                  trace
275781                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
275782                       ,p_level    => C_LEVEL_ERROR
275783                       ,p_module   => l_log_module);
275784         END IF;
275785       END IF;
275786    END IF;
275787    --
275788    --
275789    ------------------------------------------------------------------------------------------------
275790    -- 4219869 Business Flow
275791    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
275792    -- Prior Entry.  Currently, the following code is always generated.
275793    ------------------------------------------------------------------------------------------------
275794    XLA_AE_LINES_PKG.ValidateCurrentLine;
275795 
275796    ------------------------------------------------------------------------------------
275797    -- 4219869 Business Flow
275798    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
275799    ------------------------------------------------------------------------------------
275800    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
275801 
275802    ----------------------------------------------------------------------------------
275803    -- 4219869 Business Flow
275804    -- Update journal entry status -- Need to generate this within IF <condition>
275805    ----------------------------------------------------------------------------------
275806    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
275807          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
275808          ,p_balance_type_code => l_balance_type_code
275809          );
275810 
275811    -------------------------------------------------------------------------------------------
275812    -- 4262811 - Generate the Accrual Reversal lines
275813    -------------------------------------------------------------------------------------------
275814    BEGIN
275815       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
275816                               (g_array_event(p_event_id).array_value_num('header_index'));
275817       IF l_acc_rev_flag IS NULL THEN
275818          l_acc_rev_flag := 'N';
275819       END IF;
275820    EXCEPTION
275821       WHEN OTHERS THEN
275822          l_acc_rev_flag := 'N';
275823    END;
275824    --
275825    IF (l_acc_rev_flag = 'Y') THEN
275826 
275827        -- 4645092  ------------------------------------------------------------------------------
275828        -- To allow MPA report to determine if it should generate report process
275829        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
275830        ------------------------------------------------------------------------------------------
275831 
275832        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
275833        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
275834    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
275835    -- call ADRs
275836    -- Bug 4922099
275837    --
275838    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
275839         (NVL(l_actual_upg_option, 'N') = 'O') OR
275840         (NVL(l_enc_upg_option, 'N') = 'O')
275841       )
275842    THEN
275843    NULL;
275844    --
275845    --
275846    
275847   l_ccid := AcctDerRule_21(
275848            p_application_id           => p_application_id
275849          , p_ae_header_id             => l_ae_header_id 
275850 , p_source_36 => p_source_36
275851          , x_transaction_coa_id       => l_adr_transaction_coa_id
275852          , x_accounting_coa_id        => l_adr_accounting_coa_id
275853          , x_value_type_code          => l_adr_value_type_code
275854          , p_side                     => 'NA'
275855    );
275856 
275857    xla_ae_lines_pkg.set_ccid(
275858     p_code_combination_id          => l_ccid
275859   , p_value_type_code              => l_adr_value_type_code
275860   , p_transaction_coa_id           => l_adr_transaction_coa_id
275861   , p_accounting_coa_id            => l_adr_accounting_coa_id
275862   , p_adr_code                     => 'PI_INTERORG_PRICE_VARIANCE'
275863   , p_adr_type_code                => 'S'
275864   , p_component_type               => l_component_type
275865   , p_component_code               => l_component_code
275866   , p_component_type_code          => l_component_type_code
275867   , p_component_appl_id            => l_component_appl_id
275868   , p_amb_context_code             => l_amb_context_code
275869   , p_side                         => 'NA'
275870   );
275871 
275872 
275873    --
275874    --
275875    END IF;
275876 
275877        --
275878        -- Update the line information that should be overwritten
275879        --
275880        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
275881                                          p_header_num   => 1);
275882        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
275883 
275884        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
275885 
275886        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
275887           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
275888        END IF;
275889 
275890       --
275891       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
275892       --
275893       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
275894           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
275895       ELSE
275896           ---------------------------------------------------------------------------------------------------
275897           -- 4262811a Switch Sign
275898           ---------------------------------------------------------------------------------------------------
275899           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
275900           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
275901                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
275902           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
275903                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
275904           -- 5132302
275905           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
275906                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
275907 
275908       END IF;
275909 
275910       -- 4955764
275911       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
275912       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
275913 
275914 
275915       XLA_AE_LINES_PKG.ValidateCurrentLine;
275916       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
275917 
275918       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
275919                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
275920                ,p_balance_type_code => l_balance_type_code);
275921 
275922    END IF;
275923 
275924    -----------------------------------------------------------------------------------------
275925    -- 4262811 Multiperiod Accounting
275926    -----------------------------------------------------------------------------------------
275927      -- No MPA option is assigned.
275928 
275929 
275930 END IF;
275931 END IF;
275932 --
275933 
275934 --
275935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
275936    trace
275937       (p_msg      => 'END of AcctLineType_493'
275938       ,p_level    => C_LEVEL_PROCEDURE
275939       ,p_module   => l_log_module);
275940 END IF;
275941 --
275942 EXCEPTION
275943   WHEN xla_exceptions_pkg.application_exception THEN
275944       RAISE;
275945   WHEN OTHERS THEN
275946        xla_exceptions_pkg.raise_message
275947            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_493');
275948 END AcctLineType_493;
275949 --
275950 
275951 ---------------------------------------
275952 --
275953 -- PRIVATE FUNCTION
275954 --         AcctLineType_494
275955 --
275956 ---------------------------------------
275957 PROCEDURE AcctLineType_494 (
275958   p_application_id        IN NUMBER
275959  ,p_event_id              IN NUMBER
275960  ,p_calculate_acctd_flag  IN VARCHAR2
275961  ,p_calculate_g_l_flag    IN VARCHAR2
275962  ,p_actual_flag           IN OUT VARCHAR2
275963  ,p_balance_type_code     OUT VARCHAR2
275964  ,p_gain_or_loss_ref      OUT VARCHAR2
275965  
275966 --TRANSACTION_ID
275967  , p_source_1            IN NUMBER
275968 --Item Concatenated Segments
275969  , p_source_2            IN VARCHAR2
275970 --Transaction Quantity
275971  , p_source_3            IN NUMBER
275972 --Transaction Unit of Measure Code
275973  , p_source_4            IN VARCHAR2
275974 --Inventory Transaction Type Description
275975  , p_source_5            IN VARCHAR2
275976 --Inventory Organization Purchase Price Variance Account
275977  , p_source_58            IN NUMBER
275978 --DISTRIBUTION_IDENTIFIER
275979  , p_source_84            IN NUMBER
275980 --Distribution Type
275981  , p_source_85            IN VARCHAR2
275982  , p_source_85_meaning    IN VARCHAR2
275983 --Entered Currency Code
275984  , p_source_88            IN VARCHAR2
275985 --Entered Amount
275986  , p_source_91            IN NUMBER
275987 --Currency Conversion Date
275988  , p_source_92            IN DATE
275989 --Currency Conversion Rate
275990  , p_source_93            IN NUMBER
275991 --Currency Conversion Type
275992  , p_source_94            IN VARCHAR2
275993 --Accounted Amount
275994  , p_source_95            IN NUMBER
275995 --Accounting Line Type
275996  , p_source_97            IN NUMBER
275997 )
275998 IS
275999 
276000 l_component_type              VARCHAR2(80);
276001 l_component_code              VARCHAR2(30);
276002 l_component_type_code         VARCHAR2(1);
276003 l_component_appl_id           INTEGER;
276004 l_amb_context_code            VARCHAR2(30);
276005 l_entity_code                 VARCHAR2(30);
276006 l_event_class_code            VARCHAR2(30);
276007 l_ae_header_id                NUMBER;
276008 l_event_type_code             VARCHAR2(30);
276009 l_line_definition_code        VARCHAR2(30);
276010 l_line_definition_owner_code  VARCHAR2(1);
276011 --
276012 -- adr variables
276013 l_segment                     VARCHAR2(30);
276014 l_ccid                        NUMBER;
276015 l_adr_transaction_coa_id      NUMBER;
276016 l_adr_accounting_coa_id       NUMBER;
276017 l_adr_flexfield_segment_code  VARCHAR2(30);
276018 l_adr_flex_value_set_id       NUMBER;
276019 l_adr_value_type_code         VARCHAR2(30);
276020 l_adr_value_combination_id    NUMBER;
276021 l_adr_value_segment_code      VARCHAR2(30);
276022 
276023 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
276024 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
276025 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
276026 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
276027 
276028 -- 4262811 Variables ------------------------------------------------------------------------------------------
276029 l_entered_amt_idx             NUMBER;
276030 l_accted_amt_idx              NUMBER;
276031 l_acc_rev_flag                VARCHAR2(1);
276032 l_accrual_line_num            NUMBER;
276033 l_tmp_amt                     NUMBER;
276034 l_acc_rev_natural_side_code   VARCHAR2(1);
276035 
276036 l_num_entries                 NUMBER;
276037 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
276038 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
276039 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
276040 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
276041 l_recog_line_1                NUMBER;
276042 l_recog_line_2                NUMBER;
276043 
276044 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
276045 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
276046 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
276047 
276048 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
276049 
276050 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
276051 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
276052 
276053 ---------------------------------------------------------------------------------------------------------------
276054 
276055 
276056 --
276057 -- bulk performance
276058 --
276059 l_balance_type_code           VARCHAR2(1);
276060 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
276061 l_log_module                  VARCHAR2(240);
276062 
276063 --
276064 -- Upgrade strategy
276065 --
276066 l_actual_upg_option           VARCHAR2(1);
276067 l_enc_upg_option           VARCHAR2(1);
276068 
276069 --
276070 BEGIN
276071 --
276072 IF g_log_enabled THEN
276073       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_494';
276074 END IF;
276075 --
276076 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
276077 
276078       trace
276079          (p_msg      => 'BEGIN of AcctLineType_494'
276080          ,p_level    => C_LEVEL_PROCEDURE
276081          ,p_module   => l_log_module);
276082 
276083 END IF;
276084 --
276085 l_component_type             := 'AMB_JLT';
276086 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
276087 l_component_type_code        := 'S';
276088 l_component_appl_id          :=  707;
276089 l_amb_context_code           := 'DEFAULT';
276090 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
276091 l_event_class_code           := 'USER_DEFINE';
276092 l_event_type_code            := 'UDIR_INTERORG_SHIP';
276093 l_line_definition_owner_code := 'S';
276094 l_line_definition_code       := 'PI_DIR_INTERORG_SHIP';
276095 --
276096 l_balance_type_code          := 'A';
276097 l_segment                     := NULL;
276098 l_ccid                        := NULL;
276099 l_adr_transaction_coa_id      := NULL;
276100 l_adr_accounting_coa_id       := NULL;
276101 l_adr_flexfield_segment_code  := NULL;
276102 l_adr_flex_value_set_id       := NULL;
276103 l_adr_value_type_code         := NULL;
276104 l_adr_value_combination_id    := NULL;
276105 l_adr_value_segment_code      := NULL;
276106 
276107 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
276108 l_bflow_class_code           := '';    -- 4219869 Business Flow
276109 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
276110 l_budgetary_control_flag     := 'N';
276111 
276112 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
276113 l_bflow_applied_to_amt       := NULL; -- 5132302
276114 l_entered_amt_idx            := NULL;          -- 4262811
276115 l_accted_amt_idx             := NULL;          -- 4262811
276116 l_acc_rev_flag               := NULL;          -- 4262811
276117 l_accrual_line_num           := NULL;          -- 4262811
276118 l_tmp_amt                    := NULL;          -- 4262811
276119 --
276120  
276121 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
276122     l_balance_type_code <> 'B' THEN
276123 IF NVL(p_source_97,9E125) =  6
276124  THEN 
276125 
276126    --
276127    XLA_AE_LINES_PKG.SetNewLine;
276128 
276129    p_balance_type_code          := l_balance_type_code;
276130    -- set the flag so later we will know whether the gain loss line needs to be created
276131    
276132    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
276133      p_actual_flag :='A';
276134    END IF;
276135 
276136    --
276137    -- bulk performance
276138    --
276139    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
276140                                       p_header_num   => 0); -- 4262811
276141    --
276142    -- set accounting line options
276143    --
276144    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
276145            p_natural_side_code          => 'D'
276146          , p_gain_or_loss_flag          => 'N'
276147          , p_gl_transfer_mode_code      => 'S'
276148          , p_acct_entry_type_code       => 'A'
276149          , p_switch_side_flag           => 'Y'
276150          , p_merge_duplicate_code       => 'N'
276151          );
276152    --
276153    l_acc_rev_natural_side_code := 'C';  -- 4262811
276154    -- 
276155    --
276156    -- set accounting line type info
276157    --
276158    xla_ae_lines_pkg.SetAcctLineType
276159       (p_component_type             => l_component_type
276160       ,p_event_type_code            => l_event_type_code
276161       ,p_line_definition_owner_code => l_line_definition_owner_code
276162       ,p_line_definition_code       => l_line_definition_code
276163       ,p_accounting_line_code       => l_component_code
276164       ,p_accounting_line_type_code  => l_component_type_code
276165       ,p_accounting_line_appl_id    => l_component_appl_id
276166       ,p_amb_context_code           => l_amb_context_code
276167       ,p_entity_code                => l_entity_code
276168       ,p_event_class_code           => l_event_class_code);
276169    --
276170    -- set accounting class
276171    --
276172    xla_ae_lines_pkg.SetAcctClass(
276173            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
276174          , p_ae_header_id           => l_ae_header_id
276175          );
276176 
276177    --
276178    -- set rounding class
276179    --
276180    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
276181                       'PURCHASE_PRICE_VARIANCE';
276182 
276183    --
276184    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
276185    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
276186    --
276187    -- bulk performance
276188    --
276189    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
276190 
276191    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
276192       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
276193 
276194    -- 4955764
276195    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
276196       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
276197 
276198    -- 4458381 Public Sector Enh
276199    
276200    --
276201    -- set accounting attributes for the line type
276202    --
276203    l_entered_amt_idx := 3;
276204    l_accted_amt_idx  := 8;
276205    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
276206    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
276207    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
276208    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
276209    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
276210    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
276211    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
276212    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
276213    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
276214    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
276215    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
276216    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
276217    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
276218    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
276219    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
276220    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
276221    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
276222 
276223    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
276224    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
276225 
276226    ---------------------------------------------------------------------------------------------------------------
276227    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
276228    ---------------------------------------------------------------------------------------------------------------
276229    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
276230 
276231    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
276232    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
276233 
276234    IF xla_accounting_cache_pkg.GetValueChar
276235          (p_source_code         => 'LEDGER_CATEGORY_CODE'
276236          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
276237    AND l_bflow_method_code = 'PRIOR_ENTRY'
276238 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
276239    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
276240          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
276241        )
276242    THEN
276243          xla_ae_lines_pkg.BflowUpgEntry
276244            (p_business_method_code    => l_bflow_method_code
276245            ,p_business_class_code     => l_bflow_class_code
276246            ,p_balance_type            => l_balance_type_code);
276247    ELSE
276248       NULL;
276249 -- No business flow processing for business flow method of NONE.
276250    END IF;
276251 
276252    --
276253    -- call analytical criteria
276254    --
276255    
276256    --
276257    -- call description
276258    --
276259    
276260 xla_ae_lines_pkg.SetLineDescription(
276261    p_ae_header_id => l_ae_header_id
276262   ,p_description  => Description_1 (
276263      p_application_id         => p_application_id
276264    , p_ae_header_id           => l_ae_header_id 
276265 , p_source_1 => p_source_1
276266 , p_source_2 => p_source_2
276267 , p_source_3 => p_source_3
276268 , p_source_4 => p_source_4
276269 , p_source_5 => p_source_5
276270    )
276271 );
276272 
276273 
276274    --
276275    -- call ADRs
276276    -- Bug 4922099
276277    --
276278    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
276279         (NVL(l_actual_upg_option, 'N') = 'O') OR
276280         (NVL(l_enc_upg_option, 'N') = 'O')
276281       )
276282    THEN
276283    NULL;
276284    --
276285    --
276286    
276287   l_ccid := AcctDerRule_32(
276288            p_application_id           => p_application_id
276289          , p_ae_header_id             => l_ae_header_id 
276290 , p_source_58 => p_source_58
276291          , x_transaction_coa_id       => l_adr_transaction_coa_id
276292          , x_accounting_coa_id        => l_adr_accounting_coa_id
276293          , x_value_type_code          => l_adr_value_type_code
276294          , p_side                     => 'NA'
276295    );
276296 
276297    xla_ae_lines_pkg.set_ccid(
276298     p_code_combination_id          => l_ccid
276299   , p_value_type_code              => l_adr_value_type_code
276300   , p_transaction_coa_id           => l_adr_transaction_coa_id
276301   , p_accounting_coa_id            => l_adr_accounting_coa_id
276302   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
276303   , p_adr_type_code                => 'S'
276304   , p_component_type               => l_component_type
276305   , p_component_code               => l_component_code
276306   , p_component_type_code          => l_component_type_code
276307   , p_component_appl_id            => l_component_appl_id
276308   , p_amb_context_code             => l_amb_context_code
276309   , p_side                         => 'NA'
276310   );
276311 
276312 
276313    --
276314    --
276315    END IF;
276316    --
276317    -- Bug 4922099
276318    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
276319           (NVL(l_enc_upg_option, 'N') = 'O')
276320         ) AND
276321         (l_bflow_method_code = 'PRIOR_ENTRY')
276322       )
276323    THEN
276324       IF
276325       --
276326       1 = 2
276327       --
276328       THEN
276329       xla_accounting_err_pkg.build_message
276330                                     (p_appli_s_name            => 'XLA'
276331                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
276332                                     ,p_token_1                 => 'LINE_NUMBER'
276333                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
276334                                     ,p_token_2                 => 'LINE_TYPE_NAME'
276335                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
276336                                                                              l_component_type
276337                                                                             ,l_component_code
276338                                                                             ,l_component_type_code
276339                                                                             ,l_component_appl_id
276340                                                                             ,l_amb_context_code
276341                                                                             ,l_entity_code
276342                                                                             ,l_event_class_code
276343                                                                            )
276344                                     ,p_token_3                 => 'OWNER'
276345                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
276346                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
276347                                                                           ,p_lookup_code    => l_component_type_code
276348                                                                          )
276349                                     ,p_token_4                 => 'PRODUCT_NAME'
276350                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
276351                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
276352                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
276353                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
276354                                     ,p_ae_header_id            =>  NULL
276355                                        );
276356 
276357         IF (C_LEVEL_ERROR>= g_log_level) THEN
276358                  trace
276359                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
276360                       ,p_level    => C_LEVEL_ERROR
276361                       ,p_module   => l_log_module);
276362         END IF;
276363       END IF;
276364    END IF;
276365    --
276366    --
276367    ------------------------------------------------------------------------------------------------
276368    -- 4219869 Business Flow
276369    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
276370    -- Prior Entry.  Currently, the following code is always generated.
276371    ------------------------------------------------------------------------------------------------
276372    XLA_AE_LINES_PKG.ValidateCurrentLine;
276373 
276374    ------------------------------------------------------------------------------------
276375    -- 4219869 Business Flow
276376    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
276377    ------------------------------------------------------------------------------------
276378    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
276379 
276380    ----------------------------------------------------------------------------------
276381    -- 4219869 Business Flow
276382    -- Update journal entry status -- Need to generate this within IF <condition>
276383    ----------------------------------------------------------------------------------
276384    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
276385          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
276386          ,p_balance_type_code => l_balance_type_code
276387          );
276388 
276389    -------------------------------------------------------------------------------------------
276390    -- 4262811 - Generate the Accrual Reversal lines
276391    -------------------------------------------------------------------------------------------
276392    BEGIN
276393       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
276394                               (g_array_event(p_event_id).array_value_num('header_index'));
276395       IF l_acc_rev_flag IS NULL THEN
276396          l_acc_rev_flag := 'N';
276397       END IF;
276398    EXCEPTION
276399       WHEN OTHERS THEN
276400          l_acc_rev_flag := 'N';
276401    END;
276402    --
276403    IF (l_acc_rev_flag = 'Y') THEN
276404 
276405        -- 4645092  ------------------------------------------------------------------------------
276406        -- To allow MPA report to determine if it should generate report process
276407        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
276408        ------------------------------------------------------------------------------------------
276409 
276410        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
276411        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
276412    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
276413    -- call ADRs
276414    -- Bug 4922099
276415    --
276416    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
276417         (NVL(l_actual_upg_option, 'N') = 'O') OR
276418         (NVL(l_enc_upg_option, 'N') = 'O')
276419       )
276420    THEN
276421    NULL;
276422    --
276423    --
276424    
276425   l_ccid := AcctDerRule_32(
276426            p_application_id           => p_application_id
276427          , p_ae_header_id             => l_ae_header_id 
276428 , p_source_58 => p_source_58
276429          , x_transaction_coa_id       => l_adr_transaction_coa_id
276430          , x_accounting_coa_id        => l_adr_accounting_coa_id
276431          , x_value_type_code          => l_adr_value_type_code
276432          , p_side                     => 'NA'
276433    );
276434 
276435    xla_ae_lines_pkg.set_ccid(
276436     p_code_combination_id          => l_ccid
276437   , p_value_type_code              => l_adr_value_type_code
276438   , p_transaction_coa_id           => l_adr_transaction_coa_id
276439   , p_accounting_coa_id            => l_adr_accounting_coa_id
276440   , p_adr_code                     => 'PI_PURCHASE_PRICE_VAR'
276441   , p_adr_type_code                => 'S'
276442   , p_component_type               => l_component_type
276443   , p_component_code               => l_component_code
276444   , p_component_type_code          => l_component_type_code
276445   , p_component_appl_id            => l_component_appl_id
276446   , p_amb_context_code             => l_amb_context_code
276447   , p_side                         => 'NA'
276448   );
276449 
276450 
276451    --
276452    --
276453    END IF;
276454 
276455        --
276456        -- Update the line information that should be overwritten
276457        --
276458        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
276459                                          p_header_num   => 1);
276460        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
276461 
276462        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
276463 
276464        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
276465           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
276466        END IF;
276467 
276468       --
276469       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
276470       --
276471       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
276472           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
276473       ELSE
276474           ---------------------------------------------------------------------------------------------------
276475           -- 4262811a Switch Sign
276476           ---------------------------------------------------------------------------------------------------
276477           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
276478           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
276479                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
276480           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
276481                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
276482           -- 5132302
276483           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
276484                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
276485 
276486       END IF;
276487 
276488       -- 4955764
276489       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
276490       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
276491 
276492 
276493       XLA_AE_LINES_PKG.ValidateCurrentLine;
276494       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
276495 
276496       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
276497                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
276498                ,p_balance_type_code => l_balance_type_code);
276499 
276500    END IF;
276501 
276502    -----------------------------------------------------------------------------------------
276503    -- 4262811 Multiperiod Accounting
276504    -----------------------------------------------------------------------------------------
276505      -- No MPA option is assigned.
276506 
276507 
276508 END IF;
276509 END IF;
276510 --
276511 
276512 --
276513 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
276514    trace
276515       (p_msg      => 'END of AcctLineType_494'
276516       ,p_level    => C_LEVEL_PROCEDURE
276517       ,p_module   => l_log_module);
276518 END IF;
276519 --
276520 EXCEPTION
276521   WHEN xla_exceptions_pkg.application_exception THEN
276522       RAISE;
276523   WHEN OTHERS THEN
276524        xla_exceptions_pkg.raise_message
276525            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_494');
276526 END AcctLineType_494;
276527 --
276528 
276529 ---------------------------------------
276530 --
276531 -- PRIVATE FUNCTION
276532 --         AcctLineType_495
276533 --
276534 ---------------------------------------
276535 PROCEDURE AcctLineType_495 (
276536   p_application_id        IN NUMBER
276537  ,p_event_id              IN NUMBER
276538  ,p_calculate_acctd_flag  IN VARCHAR2
276539  ,p_calculate_g_l_flag    IN VARCHAR2
276540  ,p_actual_flag           IN OUT VARCHAR2
276541  ,p_balance_type_code     OUT VARCHAR2
276542  ,p_gain_or_loss_ref      OUT VARCHAR2
276543  
276544 --Cost Management Default Account
276545  , p_source_11            IN NUMBER
276546 --DISTRIBUTION_IDENTIFIER
276547  , p_source_84            IN NUMBER
276548 --Distribution Type
276549  , p_source_85            IN VARCHAR2
276550  , p_source_85_meaning    IN VARCHAR2
276551 --Entered Currency Code
276552  , p_source_88            IN VARCHAR2
276553 --Entered Amount
276554  , p_source_91            IN NUMBER
276555 --Currency Conversion Date
276556  , p_source_92            IN DATE
276557 --Currency Conversion Rate
276558  , p_source_93            IN NUMBER
276559 --Accounted Amount
276560  , p_source_95            IN NUMBER
276561 --Accounting Line Type
276562  , p_source_97            IN NUMBER
276563 )
276564 IS
276565 
276566 l_component_type              VARCHAR2(80);
276567 l_component_code              VARCHAR2(30);
276568 l_component_type_code         VARCHAR2(1);
276569 l_component_appl_id           INTEGER;
276570 l_amb_context_code            VARCHAR2(30);
276571 l_entity_code                 VARCHAR2(30);
276572 l_event_class_code            VARCHAR2(30);
276573 l_ae_header_id                NUMBER;
276574 l_event_type_code             VARCHAR2(30);
276575 l_line_definition_code        VARCHAR2(30);
276576 l_line_definition_owner_code  VARCHAR2(1);
276577 --
276578 -- adr variables
276579 l_segment                     VARCHAR2(30);
276580 l_ccid                        NUMBER;
276581 l_adr_transaction_coa_id      NUMBER;
276582 l_adr_accounting_coa_id       NUMBER;
276583 l_adr_flexfield_segment_code  VARCHAR2(30);
276584 l_adr_flex_value_set_id       NUMBER;
276585 l_adr_value_type_code         VARCHAR2(30);
276586 l_adr_value_combination_id    NUMBER;
276587 l_adr_value_segment_code      VARCHAR2(30);
276588 
276589 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
276590 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
276591 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
276592 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
276593 
276594 -- 4262811 Variables ------------------------------------------------------------------------------------------
276595 l_entered_amt_idx             NUMBER;
276596 l_accted_amt_idx              NUMBER;
276597 l_acc_rev_flag                VARCHAR2(1);
276598 l_accrual_line_num            NUMBER;
276599 l_tmp_amt                     NUMBER;
276600 l_acc_rev_natural_side_code   VARCHAR2(1);
276601 
276602 l_num_entries                 NUMBER;
276603 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
276604 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
276605 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
276606 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
276607 l_recog_line_1                NUMBER;
276608 l_recog_line_2                NUMBER;
276609 
276610 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
276611 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
276612 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
276613 
276614 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
276615 
276616 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
276617 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
276618 
276619 ---------------------------------------------------------------------------------------------------------------
276620 
276621 
276622 --
276623 -- bulk performance
276624 --
276625 l_balance_type_code           VARCHAR2(1);
276626 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
276627 l_log_module                  VARCHAR2(240);
276628 
276629 --
276630 -- Upgrade strategy
276631 --
276632 l_actual_upg_option           VARCHAR2(1);
276633 l_enc_upg_option           VARCHAR2(1);
276634 
276635 --
276636 BEGIN
276637 --
276638 IF g_log_enabled THEN
276639       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_495';
276640 END IF;
276641 --
276642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
276643 
276644       trace
276645          (p_msg      => 'BEGIN of AcctLineType_495'
276646          ,p_level    => C_LEVEL_PROCEDURE
276647          ,p_module   => l_log_module);
276648 
276649 END IF;
276650 --
276651 l_component_type             := 'AMB_JLT';
276652 l_component_code             := 'PURCHASE_PRICE_VARIANCE';
276653 l_component_type_code        := 'S';
276654 l_component_appl_id          :=  707;
276655 l_amb_context_code           := 'DEFAULT';
276656 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
276657 l_event_class_code           := 'OSP';
276658 l_event_type_code            := 'IPV_TRANSFER_WO';
276659 l_line_definition_owner_code := 'S';
276660 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
276661 --
276662 l_balance_type_code          := 'A';
276663 l_segment                     := NULL;
276664 l_ccid                        := NULL;
276665 l_adr_transaction_coa_id      := NULL;
276666 l_adr_accounting_coa_id       := NULL;
276667 l_adr_flexfield_segment_code  := NULL;
276668 l_adr_flex_value_set_id       := NULL;
276669 l_adr_value_type_code         := NULL;
276670 l_adr_value_combination_id    := NULL;
276671 l_adr_value_segment_code      := NULL;
276672 
276673 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
276674 l_bflow_class_code           := '';    -- 4219869 Business Flow
276675 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
276676 l_budgetary_control_flag     := 'N';
276677 
276678 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
276679 l_bflow_applied_to_amt       := NULL; -- 5132302
276680 l_entered_amt_idx            := NULL;          -- 4262811
276681 l_accted_amt_idx             := NULL;          -- 4262811
276682 l_acc_rev_flag               := NULL;          -- 4262811
276683 l_accrual_line_num           := NULL;          -- 4262811
276684 l_tmp_amt                    := NULL;          -- 4262811
276685 --
276686  
276687 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
276688     l_balance_type_code <> 'B' THEN
276689 IF NVL(p_source_97,9E125) =  6
276690  THEN 
276691 
276692    --
276693    XLA_AE_LINES_PKG.SetNewLine;
276694 
276695    p_balance_type_code          := l_balance_type_code;
276696    -- set the flag so later we will know whether the gain loss line needs to be created
276697    
276698    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
276699      p_actual_flag :='A';
276700    END IF;
276701 
276702    --
276703    -- bulk performance
276704    --
276705    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
276706                                       p_header_num   => 0); -- 4262811
276707    --
276708    -- set accounting line options
276709    --
276710    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
276711            p_natural_side_code          => 'D'
276712          , p_gain_or_loss_flag          => 'N'
276713          , p_gl_transfer_mode_code      => 'S'
276714          , p_acct_entry_type_code       => 'A'
276715          , p_switch_side_flag           => 'Y'
276716          , p_merge_duplicate_code       => 'N'
276717          );
276718    --
276719    l_acc_rev_natural_side_code := 'C';  -- 4262811
276720    -- 
276721    --
276722    -- set accounting line type info
276723    --
276724    xla_ae_lines_pkg.SetAcctLineType
276725       (p_component_type             => l_component_type
276726       ,p_event_type_code            => l_event_type_code
276727       ,p_line_definition_owner_code => l_line_definition_owner_code
276728       ,p_line_definition_code       => l_line_definition_code
276729       ,p_accounting_line_code       => l_component_code
276730       ,p_accounting_line_type_code  => l_component_type_code
276731       ,p_accounting_line_appl_id    => l_component_appl_id
276732       ,p_amb_context_code           => l_amb_context_code
276733       ,p_entity_code                => l_entity_code
276734       ,p_event_class_code           => l_event_class_code);
276735    --
276736    -- set accounting class
276737    --
276738    xla_ae_lines_pkg.SetAcctClass(
276739            p_accounting_class_code  => 'PURCHASE_PRICE_VARIANCE'
276740          , p_ae_header_id           => l_ae_header_id
276741          );
276742 
276743    --
276744    -- set rounding class
276745    --
276746    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
276747                       'PURCHASE_PRICE_VARIANCE';
276748 
276749    --
276750    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
276751    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
276752    --
276753    -- bulk performance
276754    --
276755    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
276756 
276757    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
276758       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
276759 
276760    -- 4955764
276761    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
276762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
276763 
276764    -- 4458381 Public Sector Enh
276765    
276766    --
276767    -- set accounting attributes for the line type
276768    --
276769    l_entered_amt_idx := 3;
276770    l_accted_amt_idx  := 8;
276771    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
276772    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
276773    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
276774    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
276775    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
276776    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
276777    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
276778    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
276779    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
276780    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
276781    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
276782    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
276783    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
276784    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
276785    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
276786    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
276787    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
276788 
276789    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
276790    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
276791 
276792    ---------------------------------------------------------------------------------------------------------------
276793    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
276794    ---------------------------------------------------------------------------------------------------------------
276795    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
276796 
276797    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
276798    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
276799 
276800    IF xla_accounting_cache_pkg.GetValueChar
276801          (p_source_code         => 'LEDGER_CATEGORY_CODE'
276802          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
276803    AND l_bflow_method_code = 'PRIOR_ENTRY'
276804 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
276805    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
276806          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
276807        )
276808    THEN
276809          xla_ae_lines_pkg.BflowUpgEntry
276810            (p_business_method_code    => l_bflow_method_code
276811            ,p_business_class_code     => l_bflow_class_code
276812            ,p_balance_type            => l_balance_type_code);
276813    ELSE
276814       NULL;
276815 -- No business flow processing for business flow method of NONE.
276816    END IF;
276817 
276818    --
276819    -- call analytical criteria
276820    --
276821    
276822    --
276823    -- call description
276824    --
276825    -- No description or it is inherited.
276826    --
276827    -- call ADRs
276828    -- Bug 4922099
276829    --
276830    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
276831         (NVL(l_actual_upg_option, 'N') = 'O') OR
276832         (NVL(l_enc_upg_option, 'N') = 'O')
276833       )
276834    THEN
276835    NULL;
276836    --
276837    --
276838    
276839   l_ccid := AcctDerRule_6(
276840            p_application_id           => p_application_id
276841          , p_ae_header_id             => l_ae_header_id 
276842 , p_source_11 => p_source_11
276843          , x_transaction_coa_id       => l_adr_transaction_coa_id
276844          , x_accounting_coa_id        => l_adr_accounting_coa_id
276845          , x_value_type_code          => l_adr_value_type_code
276846          , p_side                     => 'NA'
276847    );
276848 
276849    xla_ae_lines_pkg.set_ccid(
276850     p_code_combination_id          => l_ccid
276851   , p_value_type_code              => l_adr_value_type_code
276852   , p_transaction_coa_id           => l_adr_transaction_coa_id
276853   , p_accounting_coa_id            => l_adr_accounting_coa_id
276854   , p_adr_code                     => 'CST_DEFAULT'
276855   , p_adr_type_code                => 'S'
276856   , p_component_type               => l_component_type
276857   , p_component_code               => l_component_code
276858   , p_component_type_code          => l_component_type_code
276859   , p_component_appl_id            => l_component_appl_id
276860   , p_amb_context_code             => l_amb_context_code
276861   , p_side                         => 'NA'
276862   );
276863 
276864 
276865    --
276866    --
276867    END IF;
276868    --
276869    -- Bug 4922099
276870    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
276871           (NVL(l_enc_upg_option, 'N') = 'O')
276872         ) AND
276873         (l_bflow_method_code = 'PRIOR_ENTRY')
276874       )
276875    THEN
276876       IF
276877       --
276878       1 = 2
276879       --
276880       THEN
276881       xla_accounting_err_pkg.build_message
276882                                     (p_appli_s_name            => 'XLA'
276883                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
276884                                     ,p_token_1                 => 'LINE_NUMBER'
276885                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
276886                                     ,p_token_2                 => 'LINE_TYPE_NAME'
276887                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
276888                                                                              l_component_type
276889                                                                             ,l_component_code
276890                                                                             ,l_component_type_code
276891                                                                             ,l_component_appl_id
276892                                                                             ,l_amb_context_code
276893                                                                             ,l_entity_code
276894                                                                             ,l_event_class_code
276895                                                                            )
276896                                     ,p_token_3                 => 'OWNER'
276897                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
276898                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
276899                                                                           ,p_lookup_code    => l_component_type_code
276900                                                                          )
276901                                     ,p_token_4                 => 'PRODUCT_NAME'
276902                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
276903                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
276904                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
276905                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
276906                                     ,p_ae_header_id            =>  NULL
276907                                        );
276908 
276909         IF (C_LEVEL_ERROR>= g_log_level) THEN
276910                  trace
276911                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
276912                       ,p_level    => C_LEVEL_ERROR
276913                       ,p_module   => l_log_module);
276914         END IF;
276915       END IF;
276916    END IF;
276917    --
276918    --
276919    ------------------------------------------------------------------------------------------------
276920    -- 4219869 Business Flow
276921    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
276922    -- Prior Entry.  Currently, the following code is always generated.
276923    ------------------------------------------------------------------------------------------------
276924    XLA_AE_LINES_PKG.ValidateCurrentLine;
276925 
276926    ------------------------------------------------------------------------------------
276927    -- 4219869 Business Flow
276928    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
276929    ------------------------------------------------------------------------------------
276930    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
276931 
276932    ----------------------------------------------------------------------------------
276933    -- 4219869 Business Flow
276934    -- Update journal entry status -- Need to generate this within IF <condition>
276935    ----------------------------------------------------------------------------------
276936    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
276937          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
276938          ,p_balance_type_code => l_balance_type_code
276939          );
276940 
276941    -------------------------------------------------------------------------------------------
276942    -- 4262811 - Generate the Accrual Reversal lines
276943    -------------------------------------------------------------------------------------------
276944    BEGIN
276945       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
276946                               (g_array_event(p_event_id).array_value_num('header_index'));
276947       IF l_acc_rev_flag IS NULL THEN
276948          l_acc_rev_flag := 'N';
276949       END IF;
276950    EXCEPTION
276951       WHEN OTHERS THEN
276952          l_acc_rev_flag := 'N';
276953    END;
276954    --
276955    IF (l_acc_rev_flag = 'Y') THEN
276956 
276957        -- 4645092  ------------------------------------------------------------------------------
276958        -- To allow MPA report to determine if it should generate report process
276959        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
276960        ------------------------------------------------------------------------------------------
276961 
276962        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
276963        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
276964    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
276965    -- call ADRs
276966    -- Bug 4922099
276967    --
276968    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
276969         (NVL(l_actual_upg_option, 'N') = 'O') OR
276970         (NVL(l_enc_upg_option, 'N') = 'O')
276971       )
276972    THEN
276973    NULL;
276974    --
276975    --
276976    
276977   l_ccid := AcctDerRule_6(
276978            p_application_id           => p_application_id
276979          , p_ae_header_id             => l_ae_header_id 
276980 , p_source_11 => p_source_11
276981          , x_transaction_coa_id       => l_adr_transaction_coa_id
276982          , x_accounting_coa_id        => l_adr_accounting_coa_id
276983          , x_value_type_code          => l_adr_value_type_code
276984          , p_side                     => 'NA'
276985    );
276986 
276987    xla_ae_lines_pkg.set_ccid(
276988     p_code_combination_id          => l_ccid
276989   , p_value_type_code              => l_adr_value_type_code
276990   , p_transaction_coa_id           => l_adr_transaction_coa_id
276991   , p_accounting_coa_id            => l_adr_accounting_coa_id
276992   , p_adr_code                     => 'CST_DEFAULT'
276993   , p_adr_type_code                => 'S'
276994   , p_component_type               => l_component_type
276995   , p_component_code               => l_component_code
276996   , p_component_type_code          => l_component_type_code
276997   , p_component_appl_id            => l_component_appl_id
276998   , p_amb_context_code             => l_amb_context_code
276999   , p_side                         => 'NA'
277000   );
277001 
277002 
277003    --
277004    --
277005    END IF;
277006 
277007        --
277008        -- Update the line information that should be overwritten
277009        --
277010        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
277011                                          p_header_num   => 1);
277012        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
277013 
277014        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
277015 
277016        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
277017           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
277018        END IF;
277019 
277020       --
277021       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
277022       --
277023       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
277024           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
277025       ELSE
277026           ---------------------------------------------------------------------------------------------------
277027           -- 4262811a Switch Sign
277028           ---------------------------------------------------------------------------------------------------
277029           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
277030           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
277031                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
277032           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
277033                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
277034           -- 5132302
277035           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
277036                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
277037 
277038       END IF;
277039 
277040       -- 4955764
277041       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
277042       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
277043 
277044 
277045       XLA_AE_LINES_PKG.ValidateCurrentLine;
277046       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
277047 
277048       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
277049                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
277050                ,p_balance_type_code => l_balance_type_code);
277051 
277052    END IF;
277053 
277054    -----------------------------------------------------------------------------------------
277055    -- 4262811 Multiperiod Accounting
277056    -----------------------------------------------------------------------------------------
277057      -- No MPA option is assigned.
277058 
277059 
277060 END IF;
277061 END IF;
277062 --
277063 
277064 --
277065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
277066    trace
277067       (p_msg      => 'END of AcctLineType_495'
277068       ,p_level    => C_LEVEL_PROCEDURE
277069       ,p_module   => l_log_module);
277070 END IF;
277071 --
277072 EXCEPTION
277073   WHEN xla_exceptions_pkg.application_exception THEN
277074       RAISE;
277075   WHEN OTHERS THEN
277076        xla_exceptions_pkg.raise_message
277077            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_495');
277078 END AcctLineType_495;
277079 --
277080 
277081 ---------------------------------------
277082 --
277083 -- PRIVATE FUNCTION
277084 --         AcctLineType_496
277085 --
277086 ---------------------------------------
277087 PROCEDURE AcctLineType_496 (
277088   p_application_id        IN NUMBER
277089  ,p_event_id              IN NUMBER
277090  ,p_calculate_acctd_flag  IN VARCHAR2
277091  ,p_calculate_g_l_flag    IN VARCHAR2
277092  ,p_actual_flag           IN OUT VARCHAR2
277093  ,p_balance_type_code     OUT VARCHAR2
277094  ,p_gain_or_loss_ref      OUT VARCHAR2
277095  
277096 --TRANSACTION_ID
277097  , p_source_1            IN NUMBER
277098 --Item Concatenated Segments
277099  , p_source_2            IN VARCHAR2
277100 --Transaction Quantity
277101  , p_source_3            IN NUMBER
277102 --Transaction Unit of Measure Code
277103  , p_source_4            IN VARCHAR2
277104 --Inventory Transaction Type Description
277105  , p_source_5            IN VARCHAR2
277106 --Cost Management Default Account
277107  , p_source_11            IN NUMBER
277108 --Applied to Application ID
277109  , p_source_79            IN NUMBER
277110 --Applied to Distribution Link Type
277111  , p_source_80            IN VARCHAR2
277112 --Applied to Entity Code
277113  , p_source_81            IN VARCHAR2
277114 --Applied To Purchase Document Identifier
277115  , p_source_83            IN NUMBER
277116 --DISTRIBUTION_IDENTIFIER
277117  , p_source_84            IN NUMBER
277118 --Distribution Type
277119  , p_source_85            IN VARCHAR2
277120  , p_source_85_meaning    IN VARCHAR2
277121 --PO Budget Account
277122  , p_source_86            IN NUMBER
277123 --Encumbrance Reversal Amount Entered
277124  , p_source_87            IN NUMBER
277125 --Entered Currency Code
277126  , p_source_88            IN VARCHAR2
277127 --Transaction Encumbrance Reversal Amount
277128  , p_source_89            IN NUMBER
277129 --Entered Amount
277130  , p_source_91            IN NUMBER
277131 --Currency Conversion Date
277132  , p_source_92            IN DATE
277133 --Currency Conversion Rate
277134  , p_source_93            IN NUMBER
277135 --Currency Conversion Type
277136  , p_source_94            IN VARCHAR2
277137 --Accounted Amount
277138  , p_source_95            IN NUMBER
277139 --Purchasing Encumbrance Type Identifier
277140  , p_source_96            IN NUMBER
277141 --Accounting Line Type
277142  , p_source_97            IN NUMBER
277143 --Costing Encumbrance Upgrade Option
277144  , p_source_100            IN VARCHAR2
277145 --TXN_PO_DISTRIBUTION_ID
277146  , p_source_101            IN NUMBER
277147 )
277148 IS
277149 
277150 l_component_type              VARCHAR2(80);
277151 l_component_code              VARCHAR2(30);
277152 l_component_type_code         VARCHAR2(1);
277153 l_component_appl_id           INTEGER;
277154 l_amb_context_code            VARCHAR2(30);
277155 l_entity_code                 VARCHAR2(30);
277156 l_event_class_code            VARCHAR2(30);
277157 l_ae_header_id                NUMBER;
277158 l_event_type_code             VARCHAR2(30);
277159 l_line_definition_code        VARCHAR2(30);
277160 l_line_definition_owner_code  VARCHAR2(1);
277161 --
277162 -- adr variables
277163 l_segment                     VARCHAR2(30);
277164 l_ccid                        NUMBER;
277165 l_adr_transaction_coa_id      NUMBER;
277166 l_adr_accounting_coa_id       NUMBER;
277167 l_adr_flexfield_segment_code  VARCHAR2(30);
277168 l_adr_flex_value_set_id       NUMBER;
277169 l_adr_value_type_code         VARCHAR2(30);
277170 l_adr_value_combination_id    NUMBER;
277171 l_adr_value_segment_code      VARCHAR2(30);
277172 
277173 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
277174 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
277175 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
277176 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
277177 
277178 -- 4262811 Variables ------------------------------------------------------------------------------------------
277179 l_entered_amt_idx             NUMBER;
277180 l_accted_amt_idx              NUMBER;
277181 l_acc_rev_flag                VARCHAR2(1);
277182 l_accrual_line_num            NUMBER;
277183 l_tmp_amt                     NUMBER;
277184 l_acc_rev_natural_side_code   VARCHAR2(1);
277185 
277186 l_num_entries                 NUMBER;
277187 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
277188 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
277189 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
277190 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
277191 l_recog_line_1                NUMBER;
277192 l_recog_line_2                NUMBER;
277193 
277194 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
277195 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
277196 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
277197 
277198 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
277199 
277200 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
277201 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
277202 
277203 ---------------------------------------------------------------------------------------------------------------
277204 
277205 
277206 --
277207 -- bulk performance
277208 --
277209 l_balance_type_code           VARCHAR2(1);
277210 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
277211 l_log_module                  VARCHAR2(240);
277212 
277213 --
277214 -- Upgrade strategy
277215 --
277216 l_actual_upg_option           VARCHAR2(1);
277217 l_enc_upg_option           VARCHAR2(1);
277218 
277219 --
277220 BEGIN
277221 --
277222 IF g_log_enabled THEN
277223       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_496';
277224 END IF;
277225 --
277226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
277227 
277228       trace
277229          (p_msg      => 'BEGIN of AcctLineType_496'
277230          ,p_level    => C_LEVEL_PROCEDURE
277231          ,p_module   => l_log_module);
277232 
277233 END IF;
277234 --
277235 l_component_type             := 'AMB_JLT';
277236 l_component_code             := 'RECEIVING_INSPECTION';
277237 l_component_type_code        := 'S';
277238 l_component_appl_id          :=  707;
277239 l_amb_context_code           := 'DEFAULT';
277240 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
277241 l_event_class_code           := 'PURCHASE_ORDER';
277242 l_event_type_code            := 'PO_DEL_ADJ';
277243 l_line_definition_owner_code := 'S';
277244 l_line_definition_code       := 'PI_PO_DEL_ADJ';
277245 --
277246 l_balance_type_code          := 'A';
277247 l_segment                     := NULL;
277248 l_ccid                        := NULL;
277249 l_adr_transaction_coa_id      := NULL;
277250 l_adr_accounting_coa_id       := NULL;
277251 l_adr_flexfield_segment_code  := NULL;
277252 l_adr_flex_value_set_id       := NULL;
277253 l_adr_value_type_code         := NULL;
277254 l_adr_value_combination_id    := NULL;
277255 l_adr_value_segment_code      := NULL;
277256 
277257 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
277258 l_bflow_class_code           := '';    -- 4219869 Business Flow
277259 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
277260 l_budgetary_control_flag     := 'N';
277261 
277262 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
277263 l_bflow_applied_to_amt       := NULL; -- 5132302
277264 l_entered_amt_idx            := NULL;          -- 4262811
277265 l_accted_amt_idx             := NULL;          -- 4262811
277266 l_acc_rev_flag               := NULL;          -- 4262811
277267 l_accrual_line_num           := NULL;          -- 4262811
277268 l_tmp_amt                    := NULL;          -- 4262811
277269 --
277270  
277271 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
277272     l_balance_type_code <> 'B' THEN
277273 IF NVL(p_source_97,9E125) =  5
277274  THEN 
277275 
277276    --
277277    XLA_AE_LINES_PKG.SetNewLine;
277278 
277279    p_balance_type_code          := l_balance_type_code;
277280    -- set the flag so later we will know whether the gain loss line needs to be created
277281    
277282    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
277283      p_actual_flag :='A';
277284    END IF;
277285 
277286    --
277287    -- bulk performance
277288    --
277289    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
277290                                       p_header_num   => 0); -- 4262811
277291    --
277292    -- set accounting line options
277293    --
277294    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
277295            p_natural_side_code          => 'D'
277296          , p_gain_or_loss_flag          => 'N'
277297          , p_gl_transfer_mode_code      => 'S'
277298          , p_acct_entry_type_code       => 'A'
277299          , p_switch_side_flag           => 'Y'
277300          , p_merge_duplicate_code       => 'N'
277301          );
277302    --
277303    l_acc_rev_natural_side_code := 'C';  -- 4262811
277304    -- 
277305    --
277306    -- set accounting line type info
277307    --
277308    xla_ae_lines_pkg.SetAcctLineType
277309       (p_component_type             => l_component_type
277310       ,p_event_type_code            => l_event_type_code
277311       ,p_line_definition_owner_code => l_line_definition_owner_code
277312       ,p_line_definition_code       => l_line_definition_code
277313       ,p_accounting_line_code       => l_component_code
277314       ,p_accounting_line_type_code  => l_component_type_code
277315       ,p_accounting_line_appl_id    => l_component_appl_id
277316       ,p_amb_context_code           => l_amb_context_code
277317       ,p_entity_code                => l_entity_code
277318       ,p_event_class_code           => l_event_class_code);
277319    --
277320    -- set accounting class
277321    --
277322    xla_ae_lines_pkg.SetAcctClass(
277323            p_accounting_class_code  => 'RECEIVING_INSPECTION'
277324          , p_ae_header_id           => l_ae_header_id
277325          );
277326 
277327    --
277328    -- set rounding class
277329    --
277330    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
277331                       'RECEIVING_INSPECTION';
277332 
277333    --
277334    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
277335    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
277336    --
277337    -- bulk performance
277338    --
277339    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
277340 
277341    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
277342       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
277343 
277344    -- 4955764
277345    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
277346       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
277347 
277348    -- 4458381 Public Sector Enh
277349    
277350    --
277351    -- set accounting attributes for the line type
277352    --
277353    l_entered_amt_idx := 17;
277354    l_accted_amt_idx  := 22;
277355    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
277356    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
277357    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
277358    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
277359    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
277360    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
277361    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
277362    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
277363    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
277364    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
277365    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
277366    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
277367    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
277368    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
277369    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
277370    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
277371    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
277372    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
277373    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
277374    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
277375    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
277376    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
277377    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
277378    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
277379    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
277380    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
277381    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
277382    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
277383    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
277384    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
277385    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
277386    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
277387    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
277388    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
277389    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
277390    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
277391    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
277392    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
277393    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
277394    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
277395    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
277396    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
277397    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
277398    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
277399    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
277400    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
277401    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
277402    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
277403    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
277404 
277405    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
277406    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
277407 
277408    ---------------------------------------------------------------------------------------------------------------
277409    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
277410    ---------------------------------------------------------------------------------------------------------------
277411    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
277412 
277413    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
277414    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
277415 
277416    IF xla_accounting_cache_pkg.GetValueChar
277417          (p_source_code         => 'LEDGER_CATEGORY_CODE'
277418          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
277419    AND l_bflow_method_code = 'PRIOR_ENTRY'
277420 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
277421    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
277422          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
277423        )
277424    THEN
277425          xla_ae_lines_pkg.BflowUpgEntry
277426            (p_business_method_code    => l_bflow_method_code
277427            ,p_business_class_code     => l_bflow_class_code
277428            ,p_balance_type            => l_balance_type_code);
277429    ELSE
277430       NULL;
277431 -- No business flow processing for business flow method of NONE.
277432    END IF;
277433 
277434    --
277435    -- call analytical criteria
277436    --
277437    
277438    --
277439    -- call description
277440    --
277441    
277442 xla_ae_lines_pkg.SetLineDescription(
277443    p_ae_header_id => l_ae_header_id
277444   ,p_description  => Description_1 (
277445      p_application_id         => p_application_id
277446    , p_ae_header_id           => l_ae_header_id 
277447 , p_source_1 => p_source_1
277448 , p_source_2 => p_source_2
277449 , p_source_3 => p_source_3
277450 , p_source_4 => p_source_4
277451 , p_source_5 => p_source_5
277452    )
277453 );
277454 
277455 
277456    --
277457    -- call ADRs
277458    -- Bug 4922099
277459    --
277460    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
277461         (NVL(l_actual_upg_option, 'N') = 'O') OR
277462         (NVL(l_enc_upg_option, 'N') = 'O')
277463       )
277464    THEN
277465    NULL;
277466    --
277467    --
277468    
277469   l_ccid := AcctDerRule_6(
277470            p_application_id           => p_application_id
277471          , p_ae_header_id             => l_ae_header_id 
277472 , p_source_11 => p_source_11
277473          , x_transaction_coa_id       => l_adr_transaction_coa_id
277474          , x_accounting_coa_id        => l_adr_accounting_coa_id
277475          , x_value_type_code          => l_adr_value_type_code
277476          , p_side                     => 'NA'
277477    );
277478 
277479    xla_ae_lines_pkg.set_ccid(
277480     p_code_combination_id          => l_ccid
277481   , p_value_type_code              => l_adr_value_type_code
277482   , p_transaction_coa_id           => l_adr_transaction_coa_id
277483   , p_accounting_coa_id            => l_adr_accounting_coa_id
277484   , p_adr_code                     => 'CST_DEFAULT'
277485   , p_adr_type_code                => 'S'
277486   , p_component_type               => l_component_type
277487   , p_component_code               => l_component_code
277488   , p_component_type_code          => l_component_type_code
277489   , p_component_appl_id            => l_component_appl_id
277490   , p_amb_context_code             => l_amb_context_code
277491   , p_side                         => 'NA'
277492   );
277493 
277494 
277495    --
277496    --
277497    END IF;
277498    --
277499    -- Bug 4922099
277500    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
277501           (NVL(l_enc_upg_option, 'N') = 'O')
277502         ) AND
277503         (l_bflow_method_code = 'PRIOR_ENTRY')
277504       )
277505    THEN
277506       IF
277507       --
277508       1 = 2
277509       --
277510       THEN
277511       xla_accounting_err_pkg.build_message
277512                                     (p_appli_s_name            => 'XLA'
277513                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
277514                                     ,p_token_1                 => 'LINE_NUMBER'
277515                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
277516                                     ,p_token_2                 => 'LINE_TYPE_NAME'
277517                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
277518                                                                              l_component_type
277519                                                                             ,l_component_code
277520                                                                             ,l_component_type_code
277521                                                                             ,l_component_appl_id
277522                                                                             ,l_amb_context_code
277523                                                                             ,l_entity_code
277524                                                                             ,l_event_class_code
277525                                                                            )
277526                                     ,p_token_3                 => 'OWNER'
277527                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
277528                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
277529                                                                           ,p_lookup_code    => l_component_type_code
277530                                                                          )
277531                                     ,p_token_4                 => 'PRODUCT_NAME'
277532                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
277533                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
277534                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
277535                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
277536                                     ,p_ae_header_id            =>  NULL
277537                                        );
277538 
277539         IF (C_LEVEL_ERROR>= g_log_level) THEN
277540                  trace
277541                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
277542                       ,p_level    => C_LEVEL_ERROR
277543                       ,p_module   => l_log_module);
277544         END IF;
277545       END IF;
277546    END IF;
277547    --
277548    --
277549    ------------------------------------------------------------------------------------------------
277550    -- 4219869 Business Flow
277551    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
277552    -- Prior Entry.  Currently, the following code is always generated.
277553    ------------------------------------------------------------------------------------------------
277554    XLA_AE_LINES_PKG.ValidateCurrentLine;
277555 
277556    ------------------------------------------------------------------------------------
277557    -- 4219869 Business Flow
277558    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
277559    ------------------------------------------------------------------------------------
277560    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
277561 
277562    ----------------------------------------------------------------------------------
277563    -- 4219869 Business Flow
277564    -- Update journal entry status -- Need to generate this within IF <condition>
277565    ----------------------------------------------------------------------------------
277566    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
277567          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
277568          ,p_balance_type_code => l_balance_type_code
277569          );
277570 
277571    -------------------------------------------------------------------------------------------
277572    -- 4262811 - Generate the Accrual Reversal lines
277573    -------------------------------------------------------------------------------------------
277574    BEGIN
277575       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
277576                               (g_array_event(p_event_id).array_value_num('header_index'));
277577       IF l_acc_rev_flag IS NULL THEN
277578          l_acc_rev_flag := 'N';
277579       END IF;
277580    EXCEPTION
277581       WHEN OTHERS THEN
277582          l_acc_rev_flag := 'N';
277583    END;
277584    --
277585    IF (l_acc_rev_flag = 'Y') THEN
277586 
277587        -- 4645092  ------------------------------------------------------------------------------
277588        -- To allow MPA report to determine if it should generate report process
277589        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
277590        ------------------------------------------------------------------------------------------
277591 
277592        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
277593        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
277594    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
277595    -- call ADRs
277596    -- Bug 4922099
277597    --
277598    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
277599         (NVL(l_actual_upg_option, 'N') = 'O') OR
277600         (NVL(l_enc_upg_option, 'N') = 'O')
277601       )
277602    THEN
277603    NULL;
277604    --
277605    --
277606    
277607   l_ccid := AcctDerRule_6(
277608            p_application_id           => p_application_id
277609          , p_ae_header_id             => l_ae_header_id 
277610 , p_source_11 => p_source_11
277611          , x_transaction_coa_id       => l_adr_transaction_coa_id
277612          , x_accounting_coa_id        => l_adr_accounting_coa_id
277613          , x_value_type_code          => l_adr_value_type_code
277614          , p_side                     => 'NA'
277615    );
277616 
277617    xla_ae_lines_pkg.set_ccid(
277618     p_code_combination_id          => l_ccid
277619   , p_value_type_code              => l_adr_value_type_code
277620   , p_transaction_coa_id           => l_adr_transaction_coa_id
277621   , p_accounting_coa_id            => l_adr_accounting_coa_id
277622   , p_adr_code                     => 'CST_DEFAULT'
277623   , p_adr_type_code                => 'S'
277624   , p_component_type               => l_component_type
277625   , p_component_code               => l_component_code
277626   , p_component_type_code          => l_component_type_code
277627   , p_component_appl_id            => l_component_appl_id
277628   , p_amb_context_code             => l_amb_context_code
277629   , p_side                         => 'NA'
277630   );
277631 
277632 
277633    --
277634    --
277635    END IF;
277636 
277637        --
277638        -- Update the line information that should be overwritten
277639        --
277640        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
277641                                          p_header_num   => 1);
277642        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
277643 
277644        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
277645 
277646        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
277647           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
277648        END IF;
277649 
277650       --
277651       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
277652       --
277653       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
277654           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
277655       ELSE
277656           ---------------------------------------------------------------------------------------------------
277657           -- 4262811a Switch Sign
277658           ---------------------------------------------------------------------------------------------------
277659           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
277660           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
277661                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
277662           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
277663                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
277664           -- 5132302
277665           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
277666                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
277667 
277668       END IF;
277669 
277670       -- 4955764
277671       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
277672       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
277673 
277674 
277675       XLA_AE_LINES_PKG.ValidateCurrentLine;
277676       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
277677 
277678       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
277679                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
277680                ,p_balance_type_code => l_balance_type_code);
277681 
277682    END IF;
277683 
277684    -----------------------------------------------------------------------------------------
277685    -- 4262811 Multiperiod Accounting
277686    -----------------------------------------------------------------------------------------
277687      -- No MPA option is assigned.
277688 
277689 
277690 END IF;
277691 END IF;
277692 --
277693 
277694 --
277695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
277696    trace
277697       (p_msg      => 'END of AcctLineType_496'
277698       ,p_level    => C_LEVEL_PROCEDURE
277699       ,p_module   => l_log_module);
277700 END IF;
277701 --
277702 EXCEPTION
277703   WHEN xla_exceptions_pkg.application_exception THEN
277704       RAISE;
277705   WHEN OTHERS THEN
277706        xla_exceptions_pkg.raise_message
277707            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_496');
277708 END AcctLineType_496;
277709 --
277710 
277711 ---------------------------------------
277712 --
277713 -- PRIVATE FUNCTION
277714 --         AcctLineType_497
277715 --
277716 ---------------------------------------
277717 PROCEDURE AcctLineType_497 (
277718   p_application_id        IN NUMBER
277719  ,p_event_id              IN NUMBER
277720  ,p_calculate_acctd_flag  IN VARCHAR2
277721  ,p_calculate_g_l_flag    IN VARCHAR2
277722  ,p_actual_flag           IN OUT VARCHAR2
277723  ,p_balance_type_code     OUT VARCHAR2
277724  ,p_gain_or_loss_ref      OUT VARCHAR2
277725  
277726 --Cost Management Default Account
277727  , p_source_11            IN NUMBER
277728 --Receiving Accounting Line Type
277729  , p_source_78            IN VARCHAR2
277730 --DISTRIBUTION_IDENTIFIER
277731  , p_source_84            IN NUMBER
277732 --Distribution Type
277733  , p_source_85            IN VARCHAR2
277734  , p_source_85_meaning    IN VARCHAR2
277735 --Entered Currency Code
277736  , p_source_88            IN VARCHAR2
277737 --Entered Amount
277738  , p_source_91            IN NUMBER
277739 --Currency Conversion Date
277740  , p_source_92            IN DATE
277741 --Currency Conversion Rate
277742  , p_source_93            IN NUMBER
277743 --Currency Conversion Type
277744  , p_source_94            IN VARCHAR2
277745 --Accounted Amount
277746  , p_source_95            IN NUMBER
277747 )
277748 IS
277749 
277750 l_component_type              VARCHAR2(80);
277751 l_component_code              VARCHAR2(30);
277752 l_component_type_code         VARCHAR2(1);
277753 l_component_appl_id           INTEGER;
277754 l_amb_context_code            VARCHAR2(30);
277755 l_entity_code                 VARCHAR2(30);
277756 l_event_class_code            VARCHAR2(30);
277757 l_ae_header_id                NUMBER;
277758 l_event_type_code             VARCHAR2(30);
277759 l_line_definition_code        VARCHAR2(30);
277760 l_line_definition_owner_code  VARCHAR2(1);
277761 --
277762 -- adr variables
277763 l_segment                     VARCHAR2(30);
277764 l_ccid                        NUMBER;
277765 l_adr_transaction_coa_id      NUMBER;
277766 l_adr_accounting_coa_id       NUMBER;
277767 l_adr_flexfield_segment_code  VARCHAR2(30);
277768 l_adr_flex_value_set_id       NUMBER;
277769 l_adr_value_type_code         VARCHAR2(30);
277770 l_adr_value_combination_id    NUMBER;
277771 l_adr_value_segment_code      VARCHAR2(30);
277772 
277773 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
277774 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
277775 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
277776 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
277777 
277778 -- 4262811 Variables ------------------------------------------------------------------------------------------
277779 l_entered_amt_idx             NUMBER;
277780 l_accted_amt_idx              NUMBER;
277781 l_acc_rev_flag                VARCHAR2(1);
277782 l_accrual_line_num            NUMBER;
277783 l_tmp_amt                     NUMBER;
277784 l_acc_rev_natural_side_code   VARCHAR2(1);
277785 
277786 l_num_entries                 NUMBER;
277787 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
277788 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
277789 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
277790 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
277791 l_recog_line_1                NUMBER;
277792 l_recog_line_2                NUMBER;
277793 
277794 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
277795 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
277796 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
277797 
277798 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
277799 
277800 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
277801 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
277802 
277803 ---------------------------------------------------------------------------------------------------------------
277804 
277805 
277806 --
277807 -- bulk performance
277808 --
277809 l_balance_type_code           VARCHAR2(1);
277810 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
277811 l_log_module                  VARCHAR2(240);
277812 
277813 --
277814 -- Upgrade strategy
277815 --
277816 l_actual_upg_option           VARCHAR2(1);
277817 l_enc_upg_option           VARCHAR2(1);
277818 
277819 --
277820 BEGIN
277821 --
277822 IF g_log_enabled THEN
277823       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_497';
277824 END IF;
277825 --
277826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
277827 
277828       trace
277829          (p_msg      => 'BEGIN of AcctLineType_497'
277830          ,p_level    => C_LEVEL_PROCEDURE
277831          ,p_module   => l_log_module);
277832 
277833 END IF;
277834 --
277835 l_component_type             := 'AMB_JLT';
277836 l_component_code             := 'RECEIVING_INSPECTION';
277837 l_component_type_code        := 'S';
277838 l_component_appl_id          :=  707;
277839 l_amb_context_code           := 'DEFAULT';
277840 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
277841 l_event_class_code           := 'RCPT_REC_INSP';
277842 l_event_type_code            := 'RCPT_REC_INSP_ALL';
277843 l_line_definition_owner_code := 'S';
277844 l_line_definition_code       := 'RCPT_REC_INSP';
277845 --
277846 l_balance_type_code          := 'A';
277847 l_segment                     := NULL;
277848 l_ccid                        := NULL;
277849 l_adr_transaction_coa_id      := NULL;
277850 l_adr_accounting_coa_id       := NULL;
277851 l_adr_flexfield_segment_code  := NULL;
277852 l_adr_flex_value_set_id       := NULL;
277853 l_adr_value_type_code         := NULL;
277854 l_adr_value_combination_id    := NULL;
277855 l_adr_value_segment_code      := NULL;
277856 
277857 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
277858 l_bflow_class_code           := '';    -- 4219869 Business Flow
277859 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
277860 l_budgetary_control_flag     := 'N';
277861 
277862 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
277863 l_bflow_applied_to_amt       := NULL; -- 5132302
277864 l_entered_amt_idx            := NULL;          -- 4262811
277865 l_accted_amt_idx             := NULL;          -- 4262811
277866 l_acc_rev_flag               := NULL;          -- 4262811
277867 l_accrual_line_num           := NULL;          -- 4262811
277868 l_tmp_amt                    := NULL;          -- 4262811
277869 --
277870  
277871 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
277872     l_balance_type_code <> 'B' THEN
277873 IF NVL(p_source_78,'
277874 ') =  'Receiving Inspection'
277875  THEN 
277876 
277877    --
277878    XLA_AE_LINES_PKG.SetNewLine;
277879 
277880    p_balance_type_code          := l_balance_type_code;
277881    -- set the flag so later we will know whether the gain loss line needs to be created
277882    
277883    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
277884      p_actual_flag :='A';
277885    END IF;
277886 
277887    --
277888    -- bulk performance
277889    --
277890    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
277891                                       p_header_num   => 0); -- 4262811
277892    --
277893    -- set accounting line options
277894    --
277895    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
277896            p_natural_side_code          => 'D'
277897          , p_gain_or_loss_flag          => 'N'
277898          , p_gl_transfer_mode_code      => 'S'
277899          , p_acct_entry_type_code       => 'A'
277900          , p_switch_side_flag           => 'Y'
277901          , p_merge_duplicate_code       => 'N'
277902          );
277903    --
277904    l_acc_rev_natural_side_code := 'C';  -- 4262811
277905    -- 
277906    --
277907    -- set accounting line type info
277908    --
277909    xla_ae_lines_pkg.SetAcctLineType
277910       (p_component_type             => l_component_type
277911       ,p_event_type_code            => l_event_type_code
277912       ,p_line_definition_owner_code => l_line_definition_owner_code
277913       ,p_line_definition_code       => l_line_definition_code
277914       ,p_accounting_line_code       => l_component_code
277915       ,p_accounting_line_type_code  => l_component_type_code
277916       ,p_accounting_line_appl_id    => l_component_appl_id
277917       ,p_amb_context_code           => l_amb_context_code
277918       ,p_entity_code                => l_entity_code
277919       ,p_event_class_code           => l_event_class_code);
277920    --
277921    -- set accounting class
277922    --
277923    xla_ae_lines_pkg.SetAcctClass(
277924            p_accounting_class_code  => 'RECEIVING_INSPECTION'
277925          , p_ae_header_id           => l_ae_header_id
277926          );
277927 
277928    --
277929    -- set rounding class
277930    --
277931    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
277932                       'RECEIVING_INSPECTION';
277933 
277934    --
277935    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
277936    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
277937    --
277938    -- bulk performance
277939    --
277940    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
277941 
277942    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
277943       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
277944 
277945    -- 4955764
277946    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
277947       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
277948 
277949    -- 4458381 Public Sector Enh
277950    
277951    --
277952    -- set accounting attributes for the line type
277953    --
277954    l_entered_amt_idx := 3;
277955    l_accted_amt_idx  := 8;
277956    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
277957    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
277958    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
277959    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
277960    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
277961    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
277962    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
277963    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
277964    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
277965    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
277966    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
277967    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
277968    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
277969    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
277970    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
277971    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
277972    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
277973 
277974    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
277975    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
277976 
277977    ---------------------------------------------------------------------------------------------------------------
277978    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
277979    ---------------------------------------------------------------------------------------------------------------
277980    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
277981 
277982    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
277983    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
277984 
277985    IF xla_accounting_cache_pkg.GetValueChar
277986          (p_source_code         => 'LEDGER_CATEGORY_CODE'
277987          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
277988    AND l_bflow_method_code = 'PRIOR_ENTRY'
277989 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
277990    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
277991          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
277992        )
277993    THEN
277994          xla_ae_lines_pkg.BflowUpgEntry
277995            (p_business_method_code    => l_bflow_method_code
277996            ,p_business_class_code     => l_bflow_class_code
277997            ,p_balance_type            => l_balance_type_code);
277998    ELSE
277999       NULL;
278000 -- No business flow processing for business flow method of NONE.
278001    END IF;
278002 
278003    --
278004    -- call analytical criteria
278005    --
278006    
278007    --
278008    -- call description
278009    --
278010    -- No description or it is inherited.
278011    --
278012    -- call ADRs
278013    -- Bug 4922099
278014    --
278015    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
278016         (NVL(l_actual_upg_option, 'N') = 'O') OR
278017         (NVL(l_enc_upg_option, 'N') = 'O')
278018       )
278019    THEN
278020    NULL;
278021    --
278022    --
278023    
278024   l_ccid := AcctDerRule_6(
278025            p_application_id           => p_application_id
278026          , p_ae_header_id             => l_ae_header_id 
278027 , p_source_11 => p_source_11
278028          , x_transaction_coa_id       => l_adr_transaction_coa_id
278029          , x_accounting_coa_id        => l_adr_accounting_coa_id
278030          , x_value_type_code          => l_adr_value_type_code
278031          , p_side                     => 'NA'
278032    );
278033 
278034    xla_ae_lines_pkg.set_ccid(
278035     p_code_combination_id          => l_ccid
278036   , p_value_type_code              => l_adr_value_type_code
278037   , p_transaction_coa_id           => l_adr_transaction_coa_id
278038   , p_accounting_coa_id            => l_adr_accounting_coa_id
278039   , p_adr_code                     => 'CST_DEFAULT'
278040   , p_adr_type_code                => 'S'
278041   , p_component_type               => l_component_type
278042   , p_component_code               => l_component_code
278043   , p_component_type_code          => l_component_type_code
278044   , p_component_appl_id            => l_component_appl_id
278045   , p_amb_context_code             => l_amb_context_code
278046   , p_side                         => 'NA'
278047   );
278048 
278049 
278050    --
278051    --
278052    END IF;
278053    --
278054    -- Bug 4922099
278055    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
278056           (NVL(l_enc_upg_option, 'N') = 'O')
278057         ) AND
278058         (l_bflow_method_code = 'PRIOR_ENTRY')
278059       )
278060    THEN
278061       IF
278062       --
278063       1 = 2
278064       --
278065       THEN
278066       xla_accounting_err_pkg.build_message
278067                                     (p_appli_s_name            => 'XLA'
278068                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
278069                                     ,p_token_1                 => 'LINE_NUMBER'
278070                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
278071                                     ,p_token_2                 => 'LINE_TYPE_NAME'
278072                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
278073                                                                              l_component_type
278074                                                                             ,l_component_code
278075                                                                             ,l_component_type_code
278076                                                                             ,l_component_appl_id
278077                                                                             ,l_amb_context_code
278078                                                                             ,l_entity_code
278079                                                                             ,l_event_class_code
278080                                                                            )
278081                                     ,p_token_3                 => 'OWNER'
278082                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
278083                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
278084                                                                           ,p_lookup_code    => l_component_type_code
278085                                                                          )
278086                                     ,p_token_4                 => 'PRODUCT_NAME'
278087                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
278088                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
278089                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
278090                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
278091                                     ,p_ae_header_id            =>  NULL
278092                                        );
278093 
278094         IF (C_LEVEL_ERROR>= g_log_level) THEN
278095                  trace
278096                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
278097                       ,p_level    => C_LEVEL_ERROR
278098                       ,p_module   => l_log_module);
278099         END IF;
278100       END IF;
278101    END IF;
278102    --
278103    --
278104    ------------------------------------------------------------------------------------------------
278105    -- 4219869 Business Flow
278106    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
278107    -- Prior Entry.  Currently, the following code is always generated.
278108    ------------------------------------------------------------------------------------------------
278109    XLA_AE_LINES_PKG.ValidateCurrentLine;
278110 
278111    ------------------------------------------------------------------------------------
278112    -- 4219869 Business Flow
278113    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
278114    ------------------------------------------------------------------------------------
278115    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
278116 
278117    ----------------------------------------------------------------------------------
278118    -- 4219869 Business Flow
278119    -- Update journal entry status -- Need to generate this within IF <condition>
278120    ----------------------------------------------------------------------------------
278121    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
278122          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
278123          ,p_balance_type_code => l_balance_type_code
278124          );
278125 
278126    -------------------------------------------------------------------------------------------
278127    -- 4262811 - Generate the Accrual Reversal lines
278128    -------------------------------------------------------------------------------------------
278129    BEGIN
278130       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
278131                               (g_array_event(p_event_id).array_value_num('header_index'));
278132       IF l_acc_rev_flag IS NULL THEN
278133          l_acc_rev_flag := 'N';
278134       END IF;
278135    EXCEPTION
278136       WHEN OTHERS THEN
278137          l_acc_rev_flag := 'N';
278138    END;
278139    --
278140    IF (l_acc_rev_flag = 'Y') THEN
278141 
278142        -- 4645092  ------------------------------------------------------------------------------
278143        -- To allow MPA report to determine if it should generate report process
278144        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
278145        ------------------------------------------------------------------------------------------
278146 
278147        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
278148        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
278149    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
278150    -- call ADRs
278151    -- Bug 4922099
278152    --
278153    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
278154         (NVL(l_actual_upg_option, 'N') = 'O') OR
278155         (NVL(l_enc_upg_option, 'N') = 'O')
278156       )
278157    THEN
278158    NULL;
278159    --
278160    --
278161    
278162   l_ccid := AcctDerRule_6(
278163            p_application_id           => p_application_id
278164          , p_ae_header_id             => l_ae_header_id 
278165 , p_source_11 => p_source_11
278166          , x_transaction_coa_id       => l_adr_transaction_coa_id
278167          , x_accounting_coa_id        => l_adr_accounting_coa_id
278168          , x_value_type_code          => l_adr_value_type_code
278169          , p_side                     => 'NA'
278170    );
278171 
278172    xla_ae_lines_pkg.set_ccid(
278173     p_code_combination_id          => l_ccid
278174   , p_value_type_code              => l_adr_value_type_code
278175   , p_transaction_coa_id           => l_adr_transaction_coa_id
278176   , p_accounting_coa_id            => l_adr_accounting_coa_id
278177   , p_adr_code                     => 'CST_DEFAULT'
278178   , p_adr_type_code                => 'S'
278179   , p_component_type               => l_component_type
278180   , p_component_code               => l_component_code
278181   , p_component_type_code          => l_component_type_code
278182   , p_component_appl_id            => l_component_appl_id
278183   , p_amb_context_code             => l_amb_context_code
278184   , p_side                         => 'NA'
278185   );
278186 
278187 
278188    --
278189    --
278190    END IF;
278191 
278192        --
278193        -- Update the line information that should be overwritten
278194        --
278195        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
278196                                          p_header_num   => 1);
278197        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
278198 
278199        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
278200 
278201        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
278202           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
278203        END IF;
278204 
278205       --
278206       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
278207       --
278208       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
278209           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
278210       ELSE
278211           ---------------------------------------------------------------------------------------------------
278212           -- 4262811a Switch Sign
278213           ---------------------------------------------------------------------------------------------------
278214           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
278215           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
278216                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
278217           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
278218                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
278219           -- 5132302
278220           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
278221                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
278222 
278223       END IF;
278224 
278225       -- 4955764
278226       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
278227       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
278228 
278229 
278230       XLA_AE_LINES_PKG.ValidateCurrentLine;
278231       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
278232 
278233       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
278234                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
278235                ,p_balance_type_code => l_balance_type_code);
278236 
278237    END IF;
278238 
278239    -----------------------------------------------------------------------------------------
278240    -- 4262811 Multiperiod Accounting
278241    -----------------------------------------------------------------------------------------
278242      -- No MPA option is assigned.
278243 
278244 
278245 END IF;
278246 END IF;
278247 --
278248 
278249 --
278250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278251    trace
278252       (p_msg      => 'END of AcctLineType_497'
278253       ,p_level    => C_LEVEL_PROCEDURE
278254       ,p_module   => l_log_module);
278255 END IF;
278256 --
278257 EXCEPTION
278258   WHEN xla_exceptions_pkg.application_exception THEN
278259       RAISE;
278260   WHEN OTHERS THEN
278261        xla_exceptions_pkg.raise_message
278262            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_497');
278263 END AcctLineType_497;
278264 --
278265 
278266 ---------------------------------------
278267 --
278268 -- PRIVATE FUNCTION
278269 --         AcctLineType_498
278270 --
278271 ---------------------------------------
278272 PROCEDURE AcctLineType_498 (
278273   p_application_id        IN NUMBER
278274  ,p_event_id              IN NUMBER
278275  ,p_calculate_acctd_flag  IN VARCHAR2
278276  ,p_calculate_g_l_flag    IN VARCHAR2
278277  ,p_actual_flag           IN OUT VARCHAR2
278278  ,p_balance_type_code     OUT VARCHAR2
278279  ,p_gain_or_loss_ref      OUT VARCHAR2
278280  
278281 --TRANSACTION_ID
278282  , p_source_1            IN NUMBER
278283 --Item Concatenated Segments
278284  , p_source_2            IN VARCHAR2
278285 --Transaction Quantity
278286  , p_source_3            IN NUMBER
278287 --Transaction Unit of Measure Code
278288  , p_source_4            IN VARCHAR2
278289 --Inventory Transaction Type Description
278290  , p_source_5            IN VARCHAR2
278291 --Cost Management Default Account
278292  , p_source_11            IN NUMBER
278293 --Applied to Application ID
278294  , p_source_79            IN NUMBER
278295 --Applied to Distribution Link Type
278296  , p_source_80            IN VARCHAR2
278297 --Applied to Entity Code
278298  , p_source_81            IN VARCHAR2
278299 --Applied To Purchase Document Identifier
278300  , p_source_83            IN NUMBER
278301 --DISTRIBUTION_IDENTIFIER
278302  , p_source_84            IN NUMBER
278303 --Distribution Type
278304  , p_source_85            IN VARCHAR2
278305  , p_source_85_meaning    IN VARCHAR2
278306 --PO Budget Account
278307  , p_source_86            IN NUMBER
278308 --Encumbrance Reversal Amount Entered
278309  , p_source_87            IN NUMBER
278310 --Entered Currency Code
278311  , p_source_88            IN VARCHAR2
278312 --Transaction Encumbrance Reversal Amount
278313  , p_source_89            IN NUMBER
278314 --Entered Amount
278315  , p_source_91            IN NUMBER
278316 --Currency Conversion Date
278317  , p_source_92            IN DATE
278318 --Currency Conversion Rate
278319  , p_source_93            IN NUMBER
278320 --Currency Conversion Type
278321  , p_source_94            IN VARCHAR2
278322 --Accounted Amount
278323  , p_source_95            IN NUMBER
278324 --Purchasing Encumbrance Type Identifier
278325  , p_source_96            IN NUMBER
278326 --Accounting Line Type
278327  , p_source_97            IN NUMBER
278328 --Costing Encumbrance Upgrade Option
278329  , p_source_100            IN VARCHAR2
278330 --TXN_PO_DISTRIBUTION_ID
278331  , p_source_101            IN NUMBER
278332 )
278333 IS
278334 
278335 l_component_type              VARCHAR2(80);
278336 l_component_code              VARCHAR2(30);
278337 l_component_type_code         VARCHAR2(1);
278338 l_component_appl_id           INTEGER;
278339 l_amb_context_code            VARCHAR2(30);
278340 l_entity_code                 VARCHAR2(30);
278341 l_event_class_code            VARCHAR2(30);
278342 l_ae_header_id                NUMBER;
278343 l_event_type_code             VARCHAR2(30);
278344 l_line_definition_code        VARCHAR2(30);
278345 l_line_definition_owner_code  VARCHAR2(1);
278346 --
278347 -- adr variables
278348 l_segment                     VARCHAR2(30);
278349 l_ccid                        NUMBER;
278350 l_adr_transaction_coa_id      NUMBER;
278351 l_adr_accounting_coa_id       NUMBER;
278352 l_adr_flexfield_segment_code  VARCHAR2(30);
278353 l_adr_flex_value_set_id       NUMBER;
278354 l_adr_value_type_code         VARCHAR2(30);
278355 l_adr_value_combination_id    NUMBER;
278356 l_adr_value_segment_code      VARCHAR2(30);
278357 
278358 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
278359 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
278360 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
278361 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
278362 
278363 -- 4262811 Variables ------------------------------------------------------------------------------------------
278364 l_entered_amt_idx             NUMBER;
278365 l_accted_amt_idx              NUMBER;
278366 l_acc_rev_flag                VARCHAR2(1);
278367 l_accrual_line_num            NUMBER;
278368 l_tmp_amt                     NUMBER;
278369 l_acc_rev_natural_side_code   VARCHAR2(1);
278370 
278371 l_num_entries                 NUMBER;
278372 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
278373 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
278374 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
278375 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
278376 l_recog_line_1                NUMBER;
278377 l_recog_line_2                NUMBER;
278378 
278379 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
278380 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
278381 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
278382 
278383 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
278384 
278385 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
278386 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
278387 
278388 ---------------------------------------------------------------------------------------------------------------
278389 
278390 
278391 --
278392 -- bulk performance
278393 --
278394 l_balance_type_code           VARCHAR2(1);
278395 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
278396 l_log_module                  VARCHAR2(240);
278397 
278398 --
278399 -- Upgrade strategy
278400 --
278401 l_actual_upg_option           VARCHAR2(1);
278402 l_enc_upg_option           VARCHAR2(1);
278403 
278404 --
278405 BEGIN
278406 --
278407 IF g_log_enabled THEN
278408       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_498';
278409 END IF;
278410 --
278411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278412 
278413       trace
278414          (p_msg      => 'BEGIN of AcctLineType_498'
278415          ,p_level    => C_LEVEL_PROCEDURE
278416          ,p_module   => l_log_module);
278417 
278418 END IF;
278419 --
278420 l_component_type             := 'AMB_JLT';
278421 l_component_code             := 'RECEIVING_INSPECTION';
278422 l_component_type_code        := 'S';
278423 l_component_appl_id          :=  707;
278424 l_amb_context_code           := 'DEFAULT';
278425 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
278426 l_event_class_code           := 'PURCHASE_ORDER';
278427 l_event_type_code            := 'RET_RI_INV';
278428 l_line_definition_owner_code := 'S';
278429 l_line_definition_code       := 'PI_RET_RI_INV';
278430 --
278431 l_balance_type_code          := 'A';
278432 l_segment                     := NULL;
278433 l_ccid                        := NULL;
278434 l_adr_transaction_coa_id      := NULL;
278435 l_adr_accounting_coa_id       := NULL;
278436 l_adr_flexfield_segment_code  := NULL;
278437 l_adr_flex_value_set_id       := NULL;
278438 l_adr_value_type_code         := NULL;
278439 l_adr_value_combination_id    := NULL;
278440 l_adr_value_segment_code      := NULL;
278441 
278442 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
278443 l_bflow_class_code           := '';    -- 4219869 Business Flow
278444 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
278445 l_budgetary_control_flag     := 'N';
278446 
278447 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
278448 l_bflow_applied_to_amt       := NULL; -- 5132302
278449 l_entered_amt_idx            := NULL;          -- 4262811
278450 l_accted_amt_idx             := NULL;          -- 4262811
278451 l_acc_rev_flag               := NULL;          -- 4262811
278452 l_accrual_line_num           := NULL;          -- 4262811
278453 l_tmp_amt                    := NULL;          -- 4262811
278454 --
278455  
278456 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
278457     l_balance_type_code <> 'B' THEN
278458 IF NVL(p_source_97,9E125) =  5
278459  THEN 
278460 
278461    --
278462    XLA_AE_LINES_PKG.SetNewLine;
278463 
278464    p_balance_type_code          := l_balance_type_code;
278465    -- set the flag so later we will know whether the gain loss line needs to be created
278466    
278467    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
278468      p_actual_flag :='A';
278469    END IF;
278470 
278471    --
278472    -- bulk performance
278473    --
278474    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
278475                                       p_header_num   => 0); -- 4262811
278476    --
278477    -- set accounting line options
278478    --
278479    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
278480            p_natural_side_code          => 'D'
278481          , p_gain_or_loss_flag          => 'N'
278482          , p_gl_transfer_mode_code      => 'S'
278483          , p_acct_entry_type_code       => 'A'
278484          , p_switch_side_flag           => 'Y'
278485          , p_merge_duplicate_code       => 'N'
278486          );
278487    --
278488    l_acc_rev_natural_side_code := 'C';  -- 4262811
278489    -- 
278490    --
278491    -- set accounting line type info
278492    --
278493    xla_ae_lines_pkg.SetAcctLineType
278494       (p_component_type             => l_component_type
278495       ,p_event_type_code            => l_event_type_code
278496       ,p_line_definition_owner_code => l_line_definition_owner_code
278497       ,p_line_definition_code       => l_line_definition_code
278498       ,p_accounting_line_code       => l_component_code
278499       ,p_accounting_line_type_code  => l_component_type_code
278500       ,p_accounting_line_appl_id    => l_component_appl_id
278501       ,p_amb_context_code           => l_amb_context_code
278502       ,p_entity_code                => l_entity_code
278503       ,p_event_class_code           => l_event_class_code);
278504    --
278505    -- set accounting class
278506    --
278507    xla_ae_lines_pkg.SetAcctClass(
278508            p_accounting_class_code  => 'RECEIVING_INSPECTION'
278509          , p_ae_header_id           => l_ae_header_id
278510          );
278511 
278512    --
278513    -- set rounding class
278514    --
278515    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
278516                       'RECEIVING_INSPECTION';
278517 
278518    --
278519    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
278520    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
278521    --
278522    -- bulk performance
278523    --
278524    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
278525 
278526    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
278527       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
278528 
278529    -- 4955764
278530    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
278531       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
278532 
278533    -- 4458381 Public Sector Enh
278534    
278535    --
278536    -- set accounting attributes for the line type
278537    --
278538    l_entered_amt_idx := 17;
278539    l_accted_amt_idx  := 22;
278540    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
278541    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
278542    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
278543    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
278544    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
278545    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
278546    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
278547    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
278548    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
278549    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
278550    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
278551    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
278552    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
278553    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
278554    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
278555    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
278556    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
278557    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
278558    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
278559    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
278560    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
278561    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
278562    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
278563    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
278564    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
278565    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
278566    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
278567    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
278568    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
278569    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
278570    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
278571    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
278572    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
278573    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
278574    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
278575    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
278576    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
278577    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
278578    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
278579    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
278580    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
278581    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
278582    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
278583    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
278584    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
278585    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
278586    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
278587    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
278588    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
278589 
278590    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
278591    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
278592 
278593    ---------------------------------------------------------------------------------------------------------------
278594    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
278595    ---------------------------------------------------------------------------------------------------------------
278596    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
278597 
278598    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
278599    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
278600 
278601    IF xla_accounting_cache_pkg.GetValueChar
278602          (p_source_code         => 'LEDGER_CATEGORY_CODE'
278603          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
278604    AND l_bflow_method_code = 'PRIOR_ENTRY'
278605 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
278606    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
278607          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
278608        )
278609    THEN
278610          xla_ae_lines_pkg.BflowUpgEntry
278611            (p_business_method_code    => l_bflow_method_code
278612            ,p_business_class_code     => l_bflow_class_code
278613            ,p_balance_type            => l_balance_type_code);
278614    ELSE
278615       NULL;
278616 -- No business flow processing for business flow method of NONE.
278617    END IF;
278618 
278619    --
278620    -- call analytical criteria
278621    --
278622    
278623    --
278624    -- call description
278625    --
278626    
278627 xla_ae_lines_pkg.SetLineDescription(
278628    p_ae_header_id => l_ae_header_id
278629   ,p_description  => Description_1 (
278630      p_application_id         => p_application_id
278631    , p_ae_header_id           => l_ae_header_id 
278632 , p_source_1 => p_source_1
278633 , p_source_2 => p_source_2
278634 , p_source_3 => p_source_3
278635 , p_source_4 => p_source_4
278636 , p_source_5 => p_source_5
278637    )
278638 );
278639 
278640 
278641    --
278642    -- call ADRs
278643    -- Bug 4922099
278644    --
278645    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
278646         (NVL(l_actual_upg_option, 'N') = 'O') OR
278647         (NVL(l_enc_upg_option, 'N') = 'O')
278648       )
278649    THEN
278650    NULL;
278651    --
278652    --
278653    
278654   l_ccid := AcctDerRule_6(
278655            p_application_id           => p_application_id
278656          , p_ae_header_id             => l_ae_header_id 
278657 , p_source_11 => p_source_11
278658          , x_transaction_coa_id       => l_adr_transaction_coa_id
278659          , x_accounting_coa_id        => l_adr_accounting_coa_id
278660          , x_value_type_code          => l_adr_value_type_code
278661          , p_side                     => 'NA'
278662    );
278663 
278664    xla_ae_lines_pkg.set_ccid(
278665     p_code_combination_id          => l_ccid
278666   , p_value_type_code              => l_adr_value_type_code
278667   , p_transaction_coa_id           => l_adr_transaction_coa_id
278668   , p_accounting_coa_id            => l_adr_accounting_coa_id
278669   , p_adr_code                     => 'CST_DEFAULT'
278670   , p_adr_type_code                => 'S'
278671   , p_component_type               => l_component_type
278672   , p_component_code               => l_component_code
278673   , p_component_type_code          => l_component_type_code
278674   , p_component_appl_id            => l_component_appl_id
278675   , p_amb_context_code             => l_amb_context_code
278676   , p_side                         => 'NA'
278677   );
278678 
278679 
278680    --
278681    --
278682    END IF;
278683    --
278684    -- Bug 4922099
278685    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
278686           (NVL(l_enc_upg_option, 'N') = 'O')
278687         ) AND
278688         (l_bflow_method_code = 'PRIOR_ENTRY')
278689       )
278690    THEN
278691       IF
278692       --
278693       1 = 2
278694       --
278695       THEN
278696       xla_accounting_err_pkg.build_message
278697                                     (p_appli_s_name            => 'XLA'
278698                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
278699                                     ,p_token_1                 => 'LINE_NUMBER'
278700                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
278701                                     ,p_token_2                 => 'LINE_TYPE_NAME'
278702                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
278703                                                                              l_component_type
278704                                                                             ,l_component_code
278705                                                                             ,l_component_type_code
278706                                                                             ,l_component_appl_id
278707                                                                             ,l_amb_context_code
278708                                                                             ,l_entity_code
278709                                                                             ,l_event_class_code
278710                                                                            )
278711                                     ,p_token_3                 => 'OWNER'
278712                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
278713                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
278714                                                                           ,p_lookup_code    => l_component_type_code
278715                                                                          )
278716                                     ,p_token_4                 => 'PRODUCT_NAME'
278717                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
278718                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
278719                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
278720                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
278721                                     ,p_ae_header_id            =>  NULL
278722                                        );
278723 
278724         IF (C_LEVEL_ERROR>= g_log_level) THEN
278725                  trace
278726                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
278727                       ,p_level    => C_LEVEL_ERROR
278728                       ,p_module   => l_log_module);
278729         END IF;
278730       END IF;
278731    END IF;
278732    --
278733    --
278734    ------------------------------------------------------------------------------------------------
278735    -- 4219869 Business Flow
278736    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
278737    -- Prior Entry.  Currently, the following code is always generated.
278738    ------------------------------------------------------------------------------------------------
278739    XLA_AE_LINES_PKG.ValidateCurrentLine;
278740 
278741    ------------------------------------------------------------------------------------
278742    -- 4219869 Business Flow
278743    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
278744    ------------------------------------------------------------------------------------
278745    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
278746 
278747    ----------------------------------------------------------------------------------
278748    -- 4219869 Business Flow
278749    -- Update journal entry status -- Need to generate this within IF <condition>
278750    ----------------------------------------------------------------------------------
278751    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
278752          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
278753          ,p_balance_type_code => l_balance_type_code
278754          );
278755 
278756    -------------------------------------------------------------------------------------------
278757    -- 4262811 - Generate the Accrual Reversal lines
278758    -------------------------------------------------------------------------------------------
278759    BEGIN
278760       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
278761                               (g_array_event(p_event_id).array_value_num('header_index'));
278762       IF l_acc_rev_flag IS NULL THEN
278763          l_acc_rev_flag := 'N';
278764       END IF;
278765    EXCEPTION
278766       WHEN OTHERS THEN
278767          l_acc_rev_flag := 'N';
278768    END;
278769    --
278770    IF (l_acc_rev_flag = 'Y') THEN
278771 
278772        -- 4645092  ------------------------------------------------------------------------------
278773        -- To allow MPA report to determine if it should generate report process
278774        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
278775        ------------------------------------------------------------------------------------------
278776 
278777        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
278778        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
278779    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
278780    -- call ADRs
278781    -- Bug 4922099
278782    --
278783    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
278784         (NVL(l_actual_upg_option, 'N') = 'O') OR
278785         (NVL(l_enc_upg_option, 'N') = 'O')
278786       )
278787    THEN
278788    NULL;
278789    --
278790    --
278791    
278792   l_ccid := AcctDerRule_6(
278793            p_application_id           => p_application_id
278794          , p_ae_header_id             => l_ae_header_id 
278795 , p_source_11 => p_source_11
278796          , x_transaction_coa_id       => l_adr_transaction_coa_id
278797          , x_accounting_coa_id        => l_adr_accounting_coa_id
278798          , x_value_type_code          => l_adr_value_type_code
278799          , p_side                     => 'NA'
278800    );
278801 
278802    xla_ae_lines_pkg.set_ccid(
278803     p_code_combination_id          => l_ccid
278804   , p_value_type_code              => l_adr_value_type_code
278805   , p_transaction_coa_id           => l_adr_transaction_coa_id
278806   , p_accounting_coa_id            => l_adr_accounting_coa_id
278807   , p_adr_code                     => 'CST_DEFAULT'
278808   , p_adr_type_code                => 'S'
278809   , p_component_type               => l_component_type
278810   , p_component_code               => l_component_code
278811   , p_component_type_code          => l_component_type_code
278812   , p_component_appl_id            => l_component_appl_id
278813   , p_amb_context_code             => l_amb_context_code
278814   , p_side                         => 'NA'
278815   );
278816 
278817 
278818    --
278819    --
278820    END IF;
278821 
278822        --
278823        -- Update the line information that should be overwritten
278824        --
278825        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
278826                                          p_header_num   => 1);
278827        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
278828 
278829        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
278830 
278831        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
278832           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
278833        END IF;
278834 
278835       --
278836       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
278837       --
278838       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
278839           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
278840       ELSE
278841           ---------------------------------------------------------------------------------------------------
278842           -- 4262811a Switch Sign
278843           ---------------------------------------------------------------------------------------------------
278844           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
278845           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
278846                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
278847           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
278848                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
278849           -- 5132302
278850           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
278851                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
278852 
278853       END IF;
278854 
278855       -- 4955764
278856       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
278857       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
278858 
278859 
278860       XLA_AE_LINES_PKG.ValidateCurrentLine;
278861       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
278862 
278863       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
278864                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
278865                ,p_balance_type_code => l_balance_type_code);
278866 
278867    END IF;
278868 
278869    -----------------------------------------------------------------------------------------
278870    -- 4262811 Multiperiod Accounting
278871    -----------------------------------------------------------------------------------------
278872      -- No MPA option is assigned.
278873 
278874 
278875 END IF;
278876 END IF;
278877 --
278878 
278879 --
278880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278881    trace
278882       (p_msg      => 'END of AcctLineType_498'
278883       ,p_level    => C_LEVEL_PROCEDURE
278884       ,p_module   => l_log_module);
278885 END IF;
278886 --
278887 EXCEPTION
278888   WHEN xla_exceptions_pkg.application_exception THEN
278889       RAISE;
278890   WHEN OTHERS THEN
278891        xla_exceptions_pkg.raise_message
278892            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_498');
278893 END AcctLineType_498;
278894 --
278895 
278896 ---------------------------------------
278897 --
278898 -- PRIVATE FUNCTION
278899 --         AcctLineType_499
278900 --
278901 ---------------------------------------
278902 PROCEDURE AcctLineType_499 (
278903   p_application_id        IN NUMBER
278904  ,p_event_id              IN NUMBER
278905  ,p_calculate_acctd_flag  IN VARCHAR2
278906  ,p_calculate_g_l_flag    IN VARCHAR2
278907  ,p_actual_flag           IN OUT VARCHAR2
278908  ,p_balance_type_code     OUT VARCHAR2
278909  ,p_gain_or_loss_ref      OUT VARCHAR2
278910  
278911 --Cost Management Default Account
278912  , p_source_11            IN NUMBER
278913 --DISTRIBUTION_IDENTIFIER
278914  , p_source_84            IN NUMBER
278915 --Distribution Type
278916  , p_source_85            IN VARCHAR2
278917  , p_source_85_meaning    IN VARCHAR2
278918 --Entered Currency Code
278919  , p_source_88            IN VARCHAR2
278920 --Entered Amount
278921  , p_source_91            IN NUMBER
278922 --Currency Conversion Date
278923  , p_source_92            IN DATE
278924 --Currency Conversion Rate
278925  , p_source_93            IN NUMBER
278926 --Accounted Amount
278927  , p_source_95            IN NUMBER
278928 --Accounting Line Type
278929  , p_source_97            IN NUMBER
278930 )
278931 IS
278932 
278933 l_component_type              VARCHAR2(80);
278934 l_component_code              VARCHAR2(30);
278935 l_component_type_code         VARCHAR2(1);
278936 l_component_appl_id           INTEGER;
278937 l_amb_context_code            VARCHAR2(30);
278938 l_entity_code                 VARCHAR2(30);
278939 l_event_class_code            VARCHAR2(30);
278940 l_ae_header_id                NUMBER;
278941 l_event_type_code             VARCHAR2(30);
278942 l_line_definition_code        VARCHAR2(30);
278943 l_line_definition_owner_code  VARCHAR2(1);
278944 --
278945 -- adr variables
278946 l_segment                     VARCHAR2(30);
278947 l_ccid                        NUMBER;
278948 l_adr_transaction_coa_id      NUMBER;
278949 l_adr_accounting_coa_id       NUMBER;
278950 l_adr_flexfield_segment_code  VARCHAR2(30);
278951 l_adr_flex_value_set_id       NUMBER;
278952 l_adr_value_type_code         VARCHAR2(30);
278953 l_adr_value_combination_id    NUMBER;
278954 l_adr_value_segment_code      VARCHAR2(30);
278955 
278956 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
278957 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
278958 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
278959 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
278960 
278961 -- 4262811 Variables ------------------------------------------------------------------------------------------
278962 l_entered_amt_idx             NUMBER;
278963 l_accted_amt_idx              NUMBER;
278964 l_acc_rev_flag                VARCHAR2(1);
278965 l_accrual_line_num            NUMBER;
278966 l_tmp_amt                     NUMBER;
278967 l_acc_rev_natural_side_code   VARCHAR2(1);
278968 
278969 l_num_entries                 NUMBER;
278970 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
278971 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
278972 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
278973 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
278974 l_recog_line_1                NUMBER;
278975 l_recog_line_2                NUMBER;
278976 
278977 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
278978 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
278979 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
278980 
278981 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
278982 
278983 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
278984 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
278985 
278986 ---------------------------------------------------------------------------------------------------------------
278987 
278988 
278989 --
278990 -- bulk performance
278991 --
278992 l_balance_type_code           VARCHAR2(1);
278993 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
278994 l_log_module                  VARCHAR2(240);
278995 
278996 --
278997 -- Upgrade strategy
278998 --
278999 l_actual_upg_option           VARCHAR2(1);
279000 l_enc_upg_option           VARCHAR2(1);
279001 
279002 --
279003 BEGIN
279004 --
279005 IF g_log_enabled THEN
279006       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_499';
279007 END IF;
279008 --
279009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
279010 
279011       trace
279012          (p_msg      => 'BEGIN of AcctLineType_499'
279013          ,p_level    => C_LEVEL_PROCEDURE
279014          ,p_module   => l_log_module);
279015 
279016 END IF;
279017 --
279018 l_component_type             := 'AMB_JLT';
279019 l_component_code             := 'RECEIVING_INSPECTION';
279020 l_component_type_code        := 'S';
279021 l_component_appl_id          :=  707;
279022 l_amb_context_code           := 'DEFAULT';
279023 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
279024 l_event_class_code           := 'OSP';
279025 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
279026 l_line_definition_owner_code := 'S';
279027 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
279028 --
279029 l_balance_type_code          := 'A';
279030 l_segment                     := NULL;
279031 l_ccid                        := NULL;
279032 l_adr_transaction_coa_id      := NULL;
279033 l_adr_accounting_coa_id       := NULL;
279034 l_adr_flexfield_segment_code  := NULL;
279035 l_adr_flex_value_set_id       := NULL;
279036 l_adr_value_type_code         := NULL;
279037 l_adr_value_combination_id    := NULL;
279038 l_adr_value_segment_code      := NULL;
279039 
279040 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
279041 l_bflow_class_code           := '';    -- 4219869 Business Flow
279042 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
279043 l_budgetary_control_flag     := 'N';
279044 
279045 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
279046 l_bflow_applied_to_amt       := NULL; -- 5132302
279047 l_entered_amt_idx            := NULL;          -- 4262811
279048 l_accted_amt_idx             := NULL;          -- 4262811
279049 l_acc_rev_flag               := NULL;          -- 4262811
279050 l_accrual_line_num           := NULL;          -- 4262811
279051 l_tmp_amt                    := NULL;          -- 4262811
279052 --
279053  
279054 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
279055     l_balance_type_code <> 'B' THEN
279056 IF NVL(p_source_97,9E125) =  5
279057  THEN 
279058 
279059    --
279060    XLA_AE_LINES_PKG.SetNewLine;
279061 
279062    p_balance_type_code          := l_balance_type_code;
279063    -- set the flag so later we will know whether the gain loss line needs to be created
279064    
279065    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
279066      p_actual_flag :='A';
279067    END IF;
279068 
279069    --
279070    -- bulk performance
279071    --
279072    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
279073                                       p_header_num   => 0); -- 4262811
279074    --
279075    -- set accounting line options
279076    --
279077    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
279078            p_natural_side_code          => 'D'
279079          , p_gain_or_loss_flag          => 'N'
279080          , p_gl_transfer_mode_code      => 'S'
279081          , p_acct_entry_type_code       => 'A'
279082          , p_switch_side_flag           => 'Y'
279083          , p_merge_duplicate_code       => 'N'
279084          );
279085    --
279086    l_acc_rev_natural_side_code := 'C';  -- 4262811
279087    -- 
279088    --
279089    -- set accounting line type info
279090    --
279091    xla_ae_lines_pkg.SetAcctLineType
279092       (p_component_type             => l_component_type
279093       ,p_event_type_code            => l_event_type_code
279094       ,p_line_definition_owner_code => l_line_definition_owner_code
279095       ,p_line_definition_code       => l_line_definition_code
279096       ,p_accounting_line_code       => l_component_code
279097       ,p_accounting_line_type_code  => l_component_type_code
279098       ,p_accounting_line_appl_id    => l_component_appl_id
279099       ,p_amb_context_code           => l_amb_context_code
279100       ,p_entity_code                => l_entity_code
279101       ,p_event_class_code           => l_event_class_code);
279102    --
279103    -- set accounting class
279104    --
279105    xla_ae_lines_pkg.SetAcctClass(
279106            p_accounting_class_code  => 'RECEIVING_INSPECTION'
279107          , p_ae_header_id           => l_ae_header_id
279108          );
279109 
279110    --
279111    -- set rounding class
279112    --
279113    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
279114                       'RECEIVING_INSPECTION';
279115 
279116    --
279117    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
279118    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
279119    --
279120    -- bulk performance
279121    --
279122    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
279123 
279124    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
279125       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
279126 
279127    -- 4955764
279128    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
279129       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
279130 
279131    -- 4458381 Public Sector Enh
279132    
279133    --
279134    -- set accounting attributes for the line type
279135    --
279136    l_entered_amt_idx := 3;
279137    l_accted_amt_idx  := 8;
279138    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
279139    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
279140    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
279141    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
279142    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
279143    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
279144    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
279145    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
279146    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
279147    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
279148    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
279149    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
279150    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
279151    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
279152    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
279153    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
279154    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
279155 
279156    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
279157    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
279158 
279159    ---------------------------------------------------------------------------------------------------------------
279160    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
279161    ---------------------------------------------------------------------------------------------------------------
279162    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
279163 
279164    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
279165    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
279166 
279167    IF xla_accounting_cache_pkg.GetValueChar
279168          (p_source_code         => 'LEDGER_CATEGORY_CODE'
279169          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
279170    AND l_bflow_method_code = 'PRIOR_ENTRY'
279171 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
279172    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
279173          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
279174        )
279175    THEN
279176          xla_ae_lines_pkg.BflowUpgEntry
279177            (p_business_method_code    => l_bflow_method_code
279178            ,p_business_class_code     => l_bflow_class_code
279179            ,p_balance_type            => l_balance_type_code);
279180    ELSE
279181       NULL;
279182 -- No business flow processing for business flow method of NONE.
279183    END IF;
279184 
279185    --
279186    -- call analytical criteria
279187    --
279188    
279189    --
279190    -- call description
279191    --
279192    -- No description or it is inherited.
279193    --
279194    -- call ADRs
279195    -- Bug 4922099
279196    --
279197    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
279198         (NVL(l_actual_upg_option, 'N') = 'O') OR
279199         (NVL(l_enc_upg_option, 'N') = 'O')
279200       )
279201    THEN
279202    NULL;
279203    --
279204    --
279205    
279206   l_ccid := AcctDerRule_6(
279207            p_application_id           => p_application_id
279208          , p_ae_header_id             => l_ae_header_id 
279209 , p_source_11 => p_source_11
279210          , x_transaction_coa_id       => l_adr_transaction_coa_id
279211          , x_accounting_coa_id        => l_adr_accounting_coa_id
279212          , x_value_type_code          => l_adr_value_type_code
279213          , p_side                     => 'NA'
279214    );
279215 
279216    xla_ae_lines_pkg.set_ccid(
279217     p_code_combination_id          => l_ccid
279218   , p_value_type_code              => l_adr_value_type_code
279219   , p_transaction_coa_id           => l_adr_transaction_coa_id
279220   , p_accounting_coa_id            => l_adr_accounting_coa_id
279221   , p_adr_code                     => 'CST_DEFAULT'
279222   , p_adr_type_code                => 'S'
279223   , p_component_type               => l_component_type
279224   , p_component_code               => l_component_code
279225   , p_component_type_code          => l_component_type_code
279226   , p_component_appl_id            => l_component_appl_id
279227   , p_amb_context_code             => l_amb_context_code
279228   , p_side                         => 'NA'
279229   );
279230 
279231 
279232    --
279233    --
279234    END IF;
279235    --
279236    -- Bug 4922099
279237    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
279238           (NVL(l_enc_upg_option, 'N') = 'O')
279239         ) AND
279240         (l_bflow_method_code = 'PRIOR_ENTRY')
279241       )
279242    THEN
279243       IF
279244       --
279245       1 = 2
279246       --
279247       THEN
279248       xla_accounting_err_pkg.build_message
279249                                     (p_appli_s_name            => 'XLA'
279250                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
279251                                     ,p_token_1                 => 'LINE_NUMBER'
279252                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
279253                                     ,p_token_2                 => 'LINE_TYPE_NAME'
279254                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
279255                                                                              l_component_type
279256                                                                             ,l_component_code
279257                                                                             ,l_component_type_code
279258                                                                             ,l_component_appl_id
279259                                                                             ,l_amb_context_code
279260                                                                             ,l_entity_code
279261                                                                             ,l_event_class_code
279262                                                                            )
279263                                     ,p_token_3                 => 'OWNER'
279264                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
279265                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
279266                                                                           ,p_lookup_code    => l_component_type_code
279267                                                                          )
279268                                     ,p_token_4                 => 'PRODUCT_NAME'
279269                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
279270                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
279271                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
279272                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
279273                                     ,p_ae_header_id            =>  NULL
279274                                        );
279275 
279276         IF (C_LEVEL_ERROR>= g_log_level) THEN
279277                  trace
279278                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
279279                       ,p_level    => C_LEVEL_ERROR
279280                       ,p_module   => l_log_module);
279281         END IF;
279282       END IF;
279283    END IF;
279284    --
279285    --
279286    ------------------------------------------------------------------------------------------------
279287    -- 4219869 Business Flow
279288    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
279289    -- Prior Entry.  Currently, the following code is always generated.
279290    ------------------------------------------------------------------------------------------------
279291    XLA_AE_LINES_PKG.ValidateCurrentLine;
279292 
279293    ------------------------------------------------------------------------------------
279294    -- 4219869 Business Flow
279295    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
279296    ------------------------------------------------------------------------------------
279297    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
279298 
279299    ----------------------------------------------------------------------------------
279300    -- 4219869 Business Flow
279301    -- Update journal entry status -- Need to generate this within IF <condition>
279302    ----------------------------------------------------------------------------------
279303    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
279304          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
279305          ,p_balance_type_code => l_balance_type_code
279306          );
279307 
279308    -------------------------------------------------------------------------------------------
279309    -- 4262811 - Generate the Accrual Reversal lines
279310    -------------------------------------------------------------------------------------------
279311    BEGIN
279312       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
279313                               (g_array_event(p_event_id).array_value_num('header_index'));
279314       IF l_acc_rev_flag IS NULL THEN
279315          l_acc_rev_flag := 'N';
279316       END IF;
279317    EXCEPTION
279318       WHEN OTHERS THEN
279319          l_acc_rev_flag := 'N';
279320    END;
279321    --
279322    IF (l_acc_rev_flag = 'Y') THEN
279323 
279324        -- 4645092  ------------------------------------------------------------------------------
279325        -- To allow MPA report to determine if it should generate report process
279326        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
279327        ------------------------------------------------------------------------------------------
279328 
279329        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
279330        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
279331    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
279332    -- call ADRs
279333    -- Bug 4922099
279334    --
279335    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
279336         (NVL(l_actual_upg_option, 'N') = 'O') OR
279337         (NVL(l_enc_upg_option, 'N') = 'O')
279338       )
279339    THEN
279340    NULL;
279341    --
279342    --
279343    
279344   l_ccid := AcctDerRule_6(
279345            p_application_id           => p_application_id
279346          , p_ae_header_id             => l_ae_header_id 
279347 , p_source_11 => p_source_11
279348          , x_transaction_coa_id       => l_adr_transaction_coa_id
279349          , x_accounting_coa_id        => l_adr_accounting_coa_id
279350          , x_value_type_code          => l_adr_value_type_code
279351          , p_side                     => 'NA'
279352    );
279353 
279354    xla_ae_lines_pkg.set_ccid(
279355     p_code_combination_id          => l_ccid
279356   , p_value_type_code              => l_adr_value_type_code
279357   , p_transaction_coa_id           => l_adr_transaction_coa_id
279358   , p_accounting_coa_id            => l_adr_accounting_coa_id
279359   , p_adr_code                     => 'CST_DEFAULT'
279360   , p_adr_type_code                => 'S'
279361   , p_component_type               => l_component_type
279362   , p_component_code               => l_component_code
279363   , p_component_type_code          => l_component_type_code
279364   , p_component_appl_id            => l_component_appl_id
279365   , p_amb_context_code             => l_amb_context_code
279366   , p_side                         => 'NA'
279367   );
279368 
279369 
279370    --
279371    --
279372    END IF;
279373 
279374        --
279375        -- Update the line information that should be overwritten
279376        --
279377        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
279378                                          p_header_num   => 1);
279379        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
279380 
279381        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
279382 
279383        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
279384           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
279385        END IF;
279386 
279387       --
279388       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
279389       --
279390       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
279391           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
279392       ELSE
279393           ---------------------------------------------------------------------------------------------------
279394           -- 4262811a Switch Sign
279395           ---------------------------------------------------------------------------------------------------
279396           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
279397           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
279398                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
279399           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
279400                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
279401           -- 5132302
279402           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
279403                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
279404 
279405       END IF;
279406 
279407       -- 4955764
279408       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
279409       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
279410 
279411 
279412       XLA_AE_LINES_PKG.ValidateCurrentLine;
279413       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
279414 
279415       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
279416                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
279417                ,p_balance_type_code => l_balance_type_code);
279418 
279419    END IF;
279420 
279421    -----------------------------------------------------------------------------------------
279422    -- 4262811 Multiperiod Accounting
279423    -----------------------------------------------------------------------------------------
279424      -- No MPA option is assigned.
279425 
279426 
279427 END IF;
279428 END IF;
279429 --
279430 
279431 --
279432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
279433    trace
279434       (p_msg      => 'END of AcctLineType_499'
279435       ,p_level    => C_LEVEL_PROCEDURE
279436       ,p_module   => l_log_module);
279437 END IF;
279438 --
279439 EXCEPTION
279440   WHEN xla_exceptions_pkg.application_exception THEN
279441       RAISE;
279442   WHEN OTHERS THEN
279443        xla_exceptions_pkg.raise_message
279444            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_499');
279445 END AcctLineType_499;
279446 --
279447 
279448 ---------------------------------------
279449 --
279450 -- PRIVATE FUNCTION
279451 --         AcctLineType_500
279452 --
279453 ---------------------------------------
279454 PROCEDURE AcctLineType_500 (
279455   p_application_id        IN NUMBER
279456  ,p_event_id              IN NUMBER
279457  ,p_calculate_acctd_flag  IN VARCHAR2
279458  ,p_calculate_g_l_flag    IN VARCHAR2
279459  ,p_actual_flag           IN OUT VARCHAR2
279460  ,p_balance_type_code     OUT VARCHAR2
279461  ,p_gain_or_loss_ref      OUT VARCHAR2
279462  
279463 --Cost Management Default Account
279464  , p_source_11            IN NUMBER
279465 --Receiving Accounting Line Type
279466  , p_source_78            IN VARCHAR2
279467 --DISTRIBUTION_IDENTIFIER
279468  , p_source_84            IN NUMBER
279469 --Distribution Type
279470  , p_source_85            IN VARCHAR2
279471  , p_source_85_meaning    IN VARCHAR2
279472 --Entered Amount
279473  , p_source_91            IN NUMBER
279474 --Accounted Amount
279475  , p_source_95            IN NUMBER
279476 --Entered Currency Code
279477  , p_source_105            IN VARCHAR2
279478 --Currency Conversion Date
279479  , p_source_106            IN DATE
279480 --Currency Conversion Rate
279481  , p_source_107            IN NUMBER
279482 )
279483 IS
279484 
279485 l_component_type              VARCHAR2(80);
279486 l_component_code              VARCHAR2(30);
279487 l_component_type_code         VARCHAR2(1);
279488 l_component_appl_id           INTEGER;
279489 l_amb_context_code            VARCHAR2(30);
279490 l_entity_code                 VARCHAR2(30);
279491 l_event_class_code            VARCHAR2(30);
279492 l_ae_header_id                NUMBER;
279493 l_event_type_code             VARCHAR2(30);
279494 l_line_definition_code        VARCHAR2(30);
279495 l_line_definition_owner_code  VARCHAR2(1);
279496 --
279497 -- adr variables
279498 l_segment                     VARCHAR2(30);
279499 l_ccid                        NUMBER;
279500 l_adr_transaction_coa_id      NUMBER;
279501 l_adr_accounting_coa_id       NUMBER;
279502 l_adr_flexfield_segment_code  VARCHAR2(30);
279503 l_adr_flex_value_set_id       NUMBER;
279504 l_adr_value_type_code         VARCHAR2(30);
279505 l_adr_value_combination_id    NUMBER;
279506 l_adr_value_segment_code      VARCHAR2(30);
279507 
279508 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
279509 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
279510 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
279511 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
279512 
279513 -- 4262811 Variables ------------------------------------------------------------------------------------------
279514 l_entered_amt_idx             NUMBER;
279515 l_accted_amt_idx              NUMBER;
279516 l_acc_rev_flag                VARCHAR2(1);
279517 l_accrual_line_num            NUMBER;
279518 l_tmp_amt                     NUMBER;
279519 l_acc_rev_natural_side_code   VARCHAR2(1);
279520 
279521 l_num_entries                 NUMBER;
279522 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
279523 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
279524 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
279525 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
279526 l_recog_line_1                NUMBER;
279527 l_recog_line_2                NUMBER;
279528 
279529 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
279530 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
279531 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
279532 
279533 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
279534 
279535 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
279536 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
279537 
279538 ---------------------------------------------------------------------------------------------------------------
279539 
279540 
279541 --
279542 -- bulk performance
279543 --
279544 l_balance_type_code           VARCHAR2(1);
279545 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
279546 l_log_module                  VARCHAR2(240);
279547 
279548 --
279549 -- Upgrade strategy
279550 --
279551 l_actual_upg_option           VARCHAR2(1);
279552 l_enc_upg_option           VARCHAR2(1);
279553 
279554 --
279555 BEGIN
279556 --
279557 IF g_log_enabled THEN
279558       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_500';
279559 END IF;
279560 --
279561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
279562 
279563       trace
279564          (p_msg      => 'BEGIN of AcctLineType_500'
279565          ,p_level    => C_LEVEL_PROCEDURE
279566          ,p_module   => l_log_module);
279567 
279568 END IF;
279569 --
279570 l_component_type             := 'AMB_JLT';
279571 l_component_code             := 'RECEIVING_INSPECTION';
279572 l_component_type_code        := 'S';
279573 l_component_appl_id          :=  707;
279574 l_amb_context_code           := 'DEFAULT';
279575 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
279576 l_event_class_code           := 'LDD_COST_ADJ_DEL';
279577 l_event_type_code            := 'LDD_COST_ADJ_DEL_ALL';
279578 l_line_definition_owner_code := 'S';
279579 l_line_definition_code       := 'LDD_COST_ADJ_DEL';
279580 --
279581 l_balance_type_code          := 'A';
279582 l_segment                     := NULL;
279583 l_ccid                        := NULL;
279584 l_adr_transaction_coa_id      := NULL;
279585 l_adr_accounting_coa_id       := NULL;
279586 l_adr_flexfield_segment_code  := NULL;
279587 l_adr_flex_value_set_id       := NULL;
279588 l_adr_value_type_code         := NULL;
279589 l_adr_value_combination_id    := NULL;
279590 l_adr_value_segment_code      := NULL;
279591 
279592 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
279593 l_bflow_class_code           := '';    -- 4219869 Business Flow
279594 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
279595 l_budgetary_control_flag     := 'N';
279596 
279597 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
279598 l_bflow_applied_to_amt       := NULL; -- 5132302
279599 l_entered_amt_idx            := NULL;          -- 4262811
279600 l_accted_amt_idx             := NULL;          -- 4262811
279601 l_acc_rev_flag               := NULL;          -- 4262811
279602 l_accrual_line_num           := NULL;          -- 4262811
279603 l_tmp_amt                    := NULL;          -- 4262811
279604 --
279605  
279606 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
279607     l_balance_type_code <> 'B' THEN
279608 IF NVL(p_source_78,'
279609 ') =  'Receiving Inspection'
279610  THEN 
279611 
279612    --
279613    XLA_AE_LINES_PKG.SetNewLine;
279614 
279615    p_balance_type_code          := l_balance_type_code;
279616    -- set the flag so later we will know whether the gain loss line needs to be created
279617    
279618    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
279619      p_actual_flag :='A';
279620    END IF;
279621 
279622    --
279623    -- bulk performance
279624    --
279625    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
279626                                       p_header_num   => 0); -- 4262811
279627    --
279628    -- set accounting line options
279629    --
279630    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
279631            p_natural_side_code          => 'D'
279632          , p_gain_or_loss_flag          => 'N'
279633          , p_gl_transfer_mode_code      => 'S'
279634          , p_acct_entry_type_code       => 'A'
279635          , p_switch_side_flag           => 'Y'
279636          , p_merge_duplicate_code       => 'N'
279637          );
279638    --
279639    l_acc_rev_natural_side_code := 'C';  -- 4262811
279640    -- 
279641    --
279642    -- set accounting line type info
279643    --
279644    xla_ae_lines_pkg.SetAcctLineType
279645       (p_component_type             => l_component_type
279646       ,p_event_type_code            => l_event_type_code
279647       ,p_line_definition_owner_code => l_line_definition_owner_code
279648       ,p_line_definition_code       => l_line_definition_code
279649       ,p_accounting_line_code       => l_component_code
279650       ,p_accounting_line_type_code  => l_component_type_code
279651       ,p_accounting_line_appl_id    => l_component_appl_id
279652       ,p_amb_context_code           => l_amb_context_code
279653       ,p_entity_code                => l_entity_code
279654       ,p_event_class_code           => l_event_class_code);
279655    --
279656    -- set accounting class
279657    --
279658    xla_ae_lines_pkg.SetAcctClass(
279659            p_accounting_class_code  => 'RECEIVING_INSPECTION'
279660          , p_ae_header_id           => l_ae_header_id
279661          );
279662 
279663    --
279664    -- set rounding class
279665    --
279666    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
279667                       'RECEIVING_INSPECTION';
279668 
279669    --
279670    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
279671    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
279672    --
279673    -- bulk performance
279674    --
279675    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
279676 
279677    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
279678       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
279679 
279680    -- 4955764
279681    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
279682       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
279683 
279684    -- 4458381 Public Sector Enh
279685    
279686    --
279687    -- set accounting attributes for the line type
279688    --
279689    l_entered_amt_idx := 3;
279690    l_accted_amt_idx  := 7;
279691    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
279692    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
279693    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
279694    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
279695    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
279696    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
279697    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
279698    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
279699    l_rec_acct_attrs.array_char_value(4)  := p_source_105;
279700    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
279701    l_rec_acct_attrs.array_date_value(5)  := p_source_106;
279702    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
279703    l_rec_acct_attrs.array_num_value(6)  := p_source_107;
279704    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
279705    l_rec_acct_attrs.array_num_value(7)  := p_source_95;
279706 
279707    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
279708    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
279709 
279710    ---------------------------------------------------------------------------------------------------------------
279711    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
279712    ---------------------------------------------------------------------------------------------------------------
279713    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
279714 
279715    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
279716    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
279717 
279718    IF xla_accounting_cache_pkg.GetValueChar
279719          (p_source_code         => 'LEDGER_CATEGORY_CODE'
279720          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
279721    AND l_bflow_method_code = 'PRIOR_ENTRY'
279722 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
279723    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
279724          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
279725        )
279726    THEN
279727          xla_ae_lines_pkg.BflowUpgEntry
279728            (p_business_method_code    => l_bflow_method_code
279729            ,p_business_class_code     => l_bflow_class_code
279730            ,p_balance_type            => l_balance_type_code);
279731    ELSE
279732       NULL;
279733 -- No business flow processing for business flow method of NONE.
279734    END IF;
279735 
279736    --
279737    -- call analytical criteria
279738    --
279739    
279740    --
279741    -- call description
279742    --
279743    -- No description or it is inherited.
279744    --
279745    -- call ADRs
279746    -- Bug 4922099
279747    --
279748    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
279749         (NVL(l_actual_upg_option, 'N') = 'O') OR
279750         (NVL(l_enc_upg_option, 'N') = 'O')
279751       )
279752    THEN
279753    NULL;
279754    --
279755    --
279756    
279757   l_ccid := AcctDerRule_6(
279758            p_application_id           => p_application_id
279759          , p_ae_header_id             => l_ae_header_id 
279760 , p_source_11 => p_source_11
279761          , x_transaction_coa_id       => l_adr_transaction_coa_id
279762          , x_accounting_coa_id        => l_adr_accounting_coa_id
279763          , x_value_type_code          => l_adr_value_type_code
279764          , p_side                     => 'NA'
279765    );
279766 
279767    xla_ae_lines_pkg.set_ccid(
279768     p_code_combination_id          => l_ccid
279769   , p_value_type_code              => l_adr_value_type_code
279770   , p_transaction_coa_id           => l_adr_transaction_coa_id
279771   , p_accounting_coa_id            => l_adr_accounting_coa_id
279772   , p_adr_code                     => 'CST_DEFAULT'
279773   , p_adr_type_code                => 'S'
279774   , p_component_type               => l_component_type
279775   , p_component_code               => l_component_code
279776   , p_component_type_code          => l_component_type_code
279777   , p_component_appl_id            => l_component_appl_id
279778   , p_amb_context_code             => l_amb_context_code
279779   , p_side                         => 'NA'
279780   );
279781 
279782 
279783    --
279784    --
279785    END IF;
279786    --
279787    -- Bug 4922099
279788    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
279789           (NVL(l_enc_upg_option, 'N') = 'O')
279790         ) AND
279791         (l_bflow_method_code = 'PRIOR_ENTRY')
279792       )
279793    THEN
279794       IF
279795       --
279796       1 = 2
279797       --
279798       THEN
279799       xla_accounting_err_pkg.build_message
279800                                     (p_appli_s_name            => 'XLA'
279801                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
279802                                     ,p_token_1                 => 'LINE_NUMBER'
279803                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
279804                                     ,p_token_2                 => 'LINE_TYPE_NAME'
279805                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
279806                                                                              l_component_type
279807                                                                             ,l_component_code
279808                                                                             ,l_component_type_code
279809                                                                             ,l_component_appl_id
279810                                                                             ,l_amb_context_code
279811                                                                             ,l_entity_code
279812                                                                             ,l_event_class_code
279813                                                                            )
279814                                     ,p_token_3                 => 'OWNER'
279815                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
279816                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
279817                                                                           ,p_lookup_code    => l_component_type_code
279818                                                                          )
279819                                     ,p_token_4                 => 'PRODUCT_NAME'
279820                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
279821                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
279822                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
279823                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
279824                                     ,p_ae_header_id            =>  NULL
279825                                        );
279826 
279827         IF (C_LEVEL_ERROR>= g_log_level) THEN
279828                  trace
279829                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
279830                       ,p_level    => C_LEVEL_ERROR
279831                       ,p_module   => l_log_module);
279832         END IF;
279833       END IF;
279834    END IF;
279835    --
279836    --
279837    ------------------------------------------------------------------------------------------------
279838    -- 4219869 Business Flow
279839    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
279840    -- Prior Entry.  Currently, the following code is always generated.
279841    ------------------------------------------------------------------------------------------------
279842    XLA_AE_LINES_PKG.ValidateCurrentLine;
279843 
279844    ------------------------------------------------------------------------------------
279845    -- 4219869 Business Flow
279846    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
279847    ------------------------------------------------------------------------------------
279848    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
279849 
279850    ----------------------------------------------------------------------------------
279851    -- 4219869 Business Flow
279852    -- Update journal entry status -- Need to generate this within IF <condition>
279853    ----------------------------------------------------------------------------------
279854    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
279855          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
279856          ,p_balance_type_code => l_balance_type_code
279857          );
279858 
279859    -------------------------------------------------------------------------------------------
279860    -- 4262811 - Generate the Accrual Reversal lines
279861    -------------------------------------------------------------------------------------------
279862    BEGIN
279863       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
279864                               (g_array_event(p_event_id).array_value_num('header_index'));
279865       IF l_acc_rev_flag IS NULL THEN
279866          l_acc_rev_flag := 'N';
279867       END IF;
279868    EXCEPTION
279869       WHEN OTHERS THEN
279870          l_acc_rev_flag := 'N';
279871    END;
279872    --
279873    IF (l_acc_rev_flag = 'Y') THEN
279874 
279875        -- 4645092  ------------------------------------------------------------------------------
279876        -- To allow MPA report to determine if it should generate report process
279877        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
279878        ------------------------------------------------------------------------------------------
279879 
279880        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
279881        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
279882    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
279883    -- call ADRs
279884    -- Bug 4922099
279885    --
279886    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
279887         (NVL(l_actual_upg_option, 'N') = 'O') OR
279888         (NVL(l_enc_upg_option, 'N') = 'O')
279889       )
279890    THEN
279891    NULL;
279892    --
279893    --
279894    
279895   l_ccid := AcctDerRule_6(
279896            p_application_id           => p_application_id
279897          , p_ae_header_id             => l_ae_header_id 
279898 , p_source_11 => p_source_11
279899          , x_transaction_coa_id       => l_adr_transaction_coa_id
279900          , x_accounting_coa_id        => l_adr_accounting_coa_id
279901          , x_value_type_code          => l_adr_value_type_code
279902          , p_side                     => 'NA'
279903    );
279904 
279905    xla_ae_lines_pkg.set_ccid(
279906     p_code_combination_id          => l_ccid
279907   , p_value_type_code              => l_adr_value_type_code
279908   , p_transaction_coa_id           => l_adr_transaction_coa_id
279909   , p_accounting_coa_id            => l_adr_accounting_coa_id
279910   , p_adr_code                     => 'CST_DEFAULT'
279911   , p_adr_type_code                => 'S'
279912   , p_component_type               => l_component_type
279913   , p_component_code               => l_component_code
279914   , p_component_type_code          => l_component_type_code
279915   , p_component_appl_id            => l_component_appl_id
279916   , p_amb_context_code             => l_amb_context_code
279917   , p_side                         => 'NA'
279918   );
279919 
279920 
279921    --
279922    --
279923    END IF;
279924 
279925        --
279926        -- Update the line information that should be overwritten
279927        --
279928        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
279929                                          p_header_num   => 1);
279930        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
279931 
279932        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
279933 
279934        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
279935           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
279936        END IF;
279937 
279938       --
279939       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
279940       --
279941       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
279942           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
279943       ELSE
279944           ---------------------------------------------------------------------------------------------------
279945           -- 4262811a Switch Sign
279946           ---------------------------------------------------------------------------------------------------
279947           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
279948           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
279949                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
279950           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
279951                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
279952           -- 5132302
279953           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
279954                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
279955 
279956       END IF;
279957 
279958       -- 4955764
279959       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
279960       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
279961 
279962 
279963       XLA_AE_LINES_PKG.ValidateCurrentLine;
279964       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
279965 
279966       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
279967                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
279968                ,p_balance_type_code => l_balance_type_code);
279969 
279970    END IF;
279971 
279972    -----------------------------------------------------------------------------------------
279973    -- 4262811 Multiperiod Accounting
279974    -----------------------------------------------------------------------------------------
279975      -- No MPA option is assigned.
279976 
279977 
279978 END IF;
279979 END IF;
279980 --
279981 
279982 --
279983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
279984    trace
279985       (p_msg      => 'END of AcctLineType_500'
279986       ,p_level    => C_LEVEL_PROCEDURE
279987       ,p_module   => l_log_module);
279988 END IF;
279989 --
279990 EXCEPTION
279991   WHEN xla_exceptions_pkg.application_exception THEN
279992       RAISE;
279993   WHEN OTHERS THEN
279994        xla_exceptions_pkg.raise_message
279995            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_500');
279996 END AcctLineType_500;
279997 --
279998 
279999 ---------------------------------------
280000 --
280001 -- PRIVATE FUNCTION
280002 --         AcctLineType_501
280003 --
280004 ---------------------------------------
280005 PROCEDURE AcctLineType_501 (
280006   p_application_id        IN NUMBER
280007  ,p_event_id              IN NUMBER
280008  ,p_calculate_acctd_flag  IN VARCHAR2
280009  ,p_calculate_g_l_flag    IN VARCHAR2
280010  ,p_actual_flag           IN OUT VARCHAR2
280011  ,p_balance_type_code     OUT VARCHAR2
280012  ,p_gain_or_loss_ref      OUT VARCHAR2
280013  
280014 --TRANSACTION_ID
280015  , p_source_1            IN NUMBER
280016 --Item Concatenated Segments
280017  , p_source_2            IN VARCHAR2
280018 --Transaction Quantity
280019  , p_source_3            IN NUMBER
280020 --Transaction Unit of Measure Code
280021  , p_source_4            IN VARCHAR2
280022 --Inventory Transaction Type Description
280023  , p_source_5            IN VARCHAR2
280024 --Transaction Distribution Account
280025  , p_source_20            IN NUMBER
280026 --Applied to Application ID
280027  , p_source_79            IN NUMBER
280028 --Applied to Distribution Link Type
280029  , p_source_80            IN VARCHAR2
280030 --Applied to Entity Code
280031  , p_source_81            IN VARCHAR2
280032 --Applied To Purchase Document Identifier
280033  , p_source_83            IN NUMBER
280034 --DISTRIBUTION_IDENTIFIER
280035  , p_source_84            IN NUMBER
280036 --Distribution Type
280037  , p_source_85            IN VARCHAR2
280038  , p_source_85_meaning    IN VARCHAR2
280039 --PO Budget Account
280040  , p_source_86            IN NUMBER
280041 --Encumbrance Reversal Amount Entered
280042  , p_source_87            IN NUMBER
280043 --Entered Currency Code
280044  , p_source_88            IN VARCHAR2
280045 --Transaction Encumbrance Reversal Amount
280046  , p_source_89            IN NUMBER
280047 --Entered Amount
280048  , p_source_91            IN NUMBER
280049 --Currency Conversion Date
280050  , p_source_92            IN DATE
280051 --Currency Conversion Rate
280052  , p_source_93            IN NUMBER
280053 --Currency Conversion Type
280054  , p_source_94            IN VARCHAR2
280055 --Accounted Amount
280056  , p_source_95            IN NUMBER
280057 --Purchasing Encumbrance Type Identifier
280058  , p_source_96            IN NUMBER
280059 --Accounting Line Type
280060  , p_source_97            IN NUMBER
280061 --Costing Encumbrance Upgrade Option
280062  , p_source_100            IN VARCHAR2
280063 --TXN_PO_DISTRIBUTION_ID
280064  , p_source_101            IN NUMBER
280065 )
280066 IS
280067 
280068 l_component_type              VARCHAR2(80);
280069 l_component_code              VARCHAR2(30);
280070 l_component_type_code         VARCHAR2(1);
280071 l_component_appl_id           INTEGER;
280072 l_amb_context_code            VARCHAR2(30);
280073 l_entity_code                 VARCHAR2(30);
280074 l_event_class_code            VARCHAR2(30);
280075 l_ae_header_id                NUMBER;
280076 l_event_type_code             VARCHAR2(30);
280077 l_line_definition_code        VARCHAR2(30);
280078 l_line_definition_owner_code  VARCHAR2(1);
280079 --
280080 -- adr variables
280081 l_segment                     VARCHAR2(30);
280082 l_ccid                        NUMBER;
280083 l_adr_transaction_coa_id      NUMBER;
280084 l_adr_accounting_coa_id       NUMBER;
280085 l_adr_flexfield_segment_code  VARCHAR2(30);
280086 l_adr_flex_value_set_id       NUMBER;
280087 l_adr_value_type_code         VARCHAR2(30);
280088 l_adr_value_combination_id    NUMBER;
280089 l_adr_value_segment_code      VARCHAR2(30);
280090 
280091 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
280092 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
280093 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
280094 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
280095 
280096 -- 4262811 Variables ------------------------------------------------------------------------------------------
280097 l_entered_amt_idx             NUMBER;
280098 l_accted_amt_idx              NUMBER;
280099 l_acc_rev_flag                VARCHAR2(1);
280100 l_accrual_line_num            NUMBER;
280101 l_tmp_amt                     NUMBER;
280102 l_acc_rev_natural_side_code   VARCHAR2(1);
280103 
280104 l_num_entries                 NUMBER;
280105 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
280106 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
280107 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
280108 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
280109 l_recog_line_1                NUMBER;
280110 l_recog_line_2                NUMBER;
280111 
280112 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
280113 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
280114 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
280115 
280116 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
280117 
280118 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
280119 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
280120 
280121 ---------------------------------------------------------------------------------------------------------------
280122 
280123 
280124 --
280125 -- bulk performance
280126 --
280127 l_balance_type_code           VARCHAR2(1);
280128 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
280129 l_log_module                  VARCHAR2(240);
280130 
280131 --
280132 -- Upgrade strategy
280133 --
280134 l_actual_upg_option           VARCHAR2(1);
280135 l_enc_upg_option           VARCHAR2(1);
280136 
280137 --
280138 BEGIN
280139 --
280140 IF g_log_enabled THEN
280141       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_501';
280142 END IF;
280143 --
280144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
280145 
280146       trace
280147          (p_msg      => 'BEGIN of AcctLineType_501'
280148          ,p_level    => C_LEVEL_PROCEDURE
280149          ,p_module   => l_log_module);
280150 
280151 END IF;
280152 --
280153 l_component_type             := 'AMB_JLT';
280154 l_component_code             := 'RECEIVING_INSPECTION';
280155 l_component_type_code        := 'S';
280156 l_component_appl_id          :=  707;
280157 l_amb_context_code           := 'DEFAULT';
280158 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
280159 l_event_class_code           := 'PURCHASE_ORDER';
280160 l_event_type_code            := 'PO_DEL_INV';
280161 l_line_definition_owner_code := 'S';
280162 l_line_definition_code       := 'PI_PO_DEL_INV';
280163 --
280164 l_balance_type_code          := 'A';
280165 l_segment                     := NULL;
280166 l_ccid                        := NULL;
280167 l_adr_transaction_coa_id      := NULL;
280168 l_adr_accounting_coa_id       := NULL;
280169 l_adr_flexfield_segment_code  := NULL;
280170 l_adr_flex_value_set_id       := NULL;
280171 l_adr_value_type_code         := NULL;
280172 l_adr_value_combination_id    := NULL;
280173 l_adr_value_segment_code      := NULL;
280174 
280175 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
280176 l_bflow_class_code           := '';    -- 4219869 Business Flow
280177 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
280178 l_budgetary_control_flag     := 'N';
280179 
280180 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
280181 l_bflow_applied_to_amt       := NULL; -- 5132302
280182 l_entered_amt_idx            := NULL;          -- 4262811
280183 l_accted_amt_idx             := NULL;          -- 4262811
280184 l_acc_rev_flag               := NULL;          -- 4262811
280185 l_accrual_line_num           := NULL;          -- 4262811
280186 l_tmp_amt                    := NULL;          -- 4262811
280187 --
280188  
280189 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
280190     l_balance_type_code <> 'B' THEN
280191 IF NVL(p_source_97,9E125) =  5
280192  THEN 
280193 
280194    --
280195    XLA_AE_LINES_PKG.SetNewLine;
280196 
280197    p_balance_type_code          := l_balance_type_code;
280198    -- set the flag so later we will know whether the gain loss line needs to be created
280199    
280200    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
280201      p_actual_flag :='A';
280202    END IF;
280203 
280204    --
280205    -- bulk performance
280206    --
280207    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
280208                                       p_header_num   => 0); -- 4262811
280209    --
280210    -- set accounting line options
280211    --
280212    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
280213            p_natural_side_code          => 'D'
280214          , p_gain_or_loss_flag          => 'N'
280215          , p_gl_transfer_mode_code      => 'S'
280216          , p_acct_entry_type_code       => 'A'
280217          , p_switch_side_flag           => 'Y'
280218          , p_merge_duplicate_code       => 'N'
280219          );
280220    --
280221    l_acc_rev_natural_side_code := 'C';  -- 4262811
280222    -- 
280223    --
280224    -- set accounting line type info
280225    --
280226    xla_ae_lines_pkg.SetAcctLineType
280227       (p_component_type             => l_component_type
280228       ,p_event_type_code            => l_event_type_code
280229       ,p_line_definition_owner_code => l_line_definition_owner_code
280230       ,p_line_definition_code       => l_line_definition_code
280231       ,p_accounting_line_code       => l_component_code
280232       ,p_accounting_line_type_code  => l_component_type_code
280233       ,p_accounting_line_appl_id    => l_component_appl_id
280234       ,p_amb_context_code           => l_amb_context_code
280235       ,p_entity_code                => l_entity_code
280236       ,p_event_class_code           => l_event_class_code);
280237    --
280238    -- set accounting class
280239    --
280240    xla_ae_lines_pkg.SetAcctClass(
280241            p_accounting_class_code  => 'RECEIVING_INSPECTION'
280242          , p_ae_header_id           => l_ae_header_id
280243          );
280244 
280245    --
280246    -- set rounding class
280247    --
280248    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
280249                       'RECEIVING_INSPECTION';
280250 
280251    --
280252    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
280253    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
280254    --
280255    -- bulk performance
280256    --
280257    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
280258 
280259    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
280260       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
280261 
280262    -- 4955764
280263    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
280264       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
280265 
280266    -- 4458381 Public Sector Enh
280267    
280268    --
280269    -- set accounting attributes for the line type
280270    --
280271    l_entered_amt_idx := 17;
280272    l_accted_amt_idx  := 22;
280273    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
280274    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
280275    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
280276    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
280277    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
280278    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
280279    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
280280    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
280281    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
280282    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
280283    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
280284    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
280285    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
280286    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
280287    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
280288    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
280289    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
280290    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
280291    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
280292    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
280293    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
280294    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
280295    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
280296    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
280297    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
280298    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
280299    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
280300    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
280301    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
280302    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
280303    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
280304    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
280305    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
280306    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
280307    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
280308    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
280309    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
280310    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
280311    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
280312    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
280313    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
280314    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
280315    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
280316    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
280317    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
280318    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
280319    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
280320    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
280321    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
280322 
280323    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
280324    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
280325 
280326    ---------------------------------------------------------------------------------------------------------------
280327    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
280328    ---------------------------------------------------------------------------------------------------------------
280329    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
280330 
280331    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
280332    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
280333 
280334    IF xla_accounting_cache_pkg.GetValueChar
280335          (p_source_code         => 'LEDGER_CATEGORY_CODE'
280336          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
280337    AND l_bflow_method_code = 'PRIOR_ENTRY'
280338 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
280339    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
280340          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
280341        )
280342    THEN
280343          xla_ae_lines_pkg.BflowUpgEntry
280344            (p_business_method_code    => l_bflow_method_code
280345            ,p_business_class_code     => l_bflow_class_code
280346            ,p_balance_type            => l_balance_type_code);
280347    ELSE
280348       NULL;
280349 -- No business flow processing for business flow method of NONE.
280350    END IF;
280351 
280352    --
280353    -- call analytical criteria
280354    --
280355    
280356    --
280357    -- call description
280358    --
280359    
280360 xla_ae_lines_pkg.SetLineDescription(
280361    p_ae_header_id => l_ae_header_id
280362   ,p_description  => Description_1 (
280363      p_application_id         => p_application_id
280364    , p_ae_header_id           => l_ae_header_id 
280365 , p_source_1 => p_source_1
280366 , p_source_2 => p_source_2
280367 , p_source_3 => p_source_3
280368 , p_source_4 => p_source_4
280369 , p_source_5 => p_source_5
280370    )
280371 );
280372 
280373 
280374    --
280375    -- call ADRs
280376    -- Bug 4922099
280377    --
280378    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
280379         (NVL(l_actual_upg_option, 'N') = 'O') OR
280380         (NVL(l_enc_upg_option, 'N') = 'O')
280381       )
280382    THEN
280383    NULL;
280384    --
280385    --
280386    
280387   l_ccid := AcctDerRule_16(
280388            p_application_id           => p_application_id
280389          , p_ae_header_id             => l_ae_header_id 
280390 , p_source_20 => p_source_20
280391          , x_transaction_coa_id       => l_adr_transaction_coa_id
280392          , x_accounting_coa_id        => l_adr_accounting_coa_id
280393          , x_value_type_code          => l_adr_value_type_code
280394          , p_side                     => 'NA'
280395    );
280396 
280397    xla_ae_lines_pkg.set_ccid(
280398     p_code_combination_id          => l_ccid
280399   , p_value_type_code              => l_adr_value_type_code
280400   , p_transaction_coa_id           => l_adr_transaction_coa_id
280401   , p_accounting_coa_id            => l_adr_accounting_coa_id
280402   , p_adr_code                     => 'PI_DISTRIBUTION'
280403   , p_adr_type_code                => 'S'
280404   , p_component_type               => l_component_type
280405   , p_component_code               => l_component_code
280406   , p_component_type_code          => l_component_type_code
280407   , p_component_appl_id            => l_component_appl_id
280408   , p_amb_context_code             => l_amb_context_code
280409   , p_side                         => 'NA'
280410   );
280411 
280412 
280413    --
280414    --
280415    END IF;
280416    --
280417    -- Bug 4922099
280418    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
280419           (NVL(l_enc_upg_option, 'N') = 'O')
280420         ) AND
280421         (l_bflow_method_code = 'PRIOR_ENTRY')
280422       )
280423    THEN
280424       IF
280425       --
280426       1 = 2
280427       --
280428       THEN
280429       xla_accounting_err_pkg.build_message
280430                                     (p_appli_s_name            => 'XLA'
280431                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
280432                                     ,p_token_1                 => 'LINE_NUMBER'
280433                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
280434                                     ,p_token_2                 => 'LINE_TYPE_NAME'
280435                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
280436                                                                              l_component_type
280437                                                                             ,l_component_code
280438                                                                             ,l_component_type_code
280439                                                                             ,l_component_appl_id
280440                                                                             ,l_amb_context_code
280441                                                                             ,l_entity_code
280442                                                                             ,l_event_class_code
280443                                                                            )
280444                                     ,p_token_3                 => 'OWNER'
280445                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
280446                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
280447                                                                           ,p_lookup_code    => l_component_type_code
280448                                                                          )
280449                                     ,p_token_4                 => 'PRODUCT_NAME'
280450                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
280451                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
280452                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
280453                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
280454                                     ,p_ae_header_id            =>  NULL
280455                                        );
280456 
280457         IF (C_LEVEL_ERROR>= g_log_level) THEN
280458                  trace
280459                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
280460                       ,p_level    => C_LEVEL_ERROR
280461                       ,p_module   => l_log_module);
280462         END IF;
280463       END IF;
280464    END IF;
280465    --
280466    --
280467    ------------------------------------------------------------------------------------------------
280468    -- 4219869 Business Flow
280469    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
280470    -- Prior Entry.  Currently, the following code is always generated.
280471    ------------------------------------------------------------------------------------------------
280472    XLA_AE_LINES_PKG.ValidateCurrentLine;
280473 
280474    ------------------------------------------------------------------------------------
280475    -- 4219869 Business Flow
280476    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
280477    ------------------------------------------------------------------------------------
280478    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
280479 
280480    ----------------------------------------------------------------------------------
280481    -- 4219869 Business Flow
280482    -- Update journal entry status -- Need to generate this within IF <condition>
280483    ----------------------------------------------------------------------------------
280484    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
280485          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
280486          ,p_balance_type_code => l_balance_type_code
280487          );
280488 
280489    -------------------------------------------------------------------------------------------
280490    -- 4262811 - Generate the Accrual Reversal lines
280491    -------------------------------------------------------------------------------------------
280492    BEGIN
280493       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
280494                               (g_array_event(p_event_id).array_value_num('header_index'));
280495       IF l_acc_rev_flag IS NULL THEN
280496          l_acc_rev_flag := 'N';
280497       END IF;
280498    EXCEPTION
280499       WHEN OTHERS THEN
280500          l_acc_rev_flag := 'N';
280501    END;
280502    --
280503    IF (l_acc_rev_flag = 'Y') THEN
280504 
280505        -- 4645092  ------------------------------------------------------------------------------
280506        -- To allow MPA report to determine if it should generate report process
280507        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
280508        ------------------------------------------------------------------------------------------
280509 
280510        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
280511        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
280512    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
280513    -- call ADRs
280514    -- Bug 4922099
280515    --
280516    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
280517         (NVL(l_actual_upg_option, 'N') = 'O') OR
280518         (NVL(l_enc_upg_option, 'N') = 'O')
280519       )
280520    THEN
280521    NULL;
280522    --
280523    --
280524    
280525   l_ccid := AcctDerRule_16(
280526            p_application_id           => p_application_id
280527          , p_ae_header_id             => l_ae_header_id 
280528 , p_source_20 => p_source_20
280529          , x_transaction_coa_id       => l_adr_transaction_coa_id
280530          , x_accounting_coa_id        => l_adr_accounting_coa_id
280531          , x_value_type_code          => l_adr_value_type_code
280532          , p_side                     => 'NA'
280533    );
280534 
280535    xla_ae_lines_pkg.set_ccid(
280536     p_code_combination_id          => l_ccid
280537   , p_value_type_code              => l_adr_value_type_code
280538   , p_transaction_coa_id           => l_adr_transaction_coa_id
280539   , p_accounting_coa_id            => l_adr_accounting_coa_id
280540   , p_adr_code                     => 'PI_DISTRIBUTION'
280541   , p_adr_type_code                => 'S'
280542   , p_component_type               => l_component_type
280543   , p_component_code               => l_component_code
280544   , p_component_type_code          => l_component_type_code
280545   , p_component_appl_id            => l_component_appl_id
280546   , p_amb_context_code             => l_amb_context_code
280547   , p_side                         => 'NA'
280548   );
280549 
280550 
280551    --
280552    --
280553    END IF;
280554 
280555        --
280556        -- Update the line information that should be overwritten
280557        --
280558        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
280559                                          p_header_num   => 1);
280560        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
280561 
280562        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
280563 
280564        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
280565           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
280566        END IF;
280567 
280568       --
280569       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
280570       --
280571       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
280572           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
280573       ELSE
280574           ---------------------------------------------------------------------------------------------------
280575           -- 4262811a Switch Sign
280576           ---------------------------------------------------------------------------------------------------
280577           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
280578           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
280579                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
280580           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
280581                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
280582           -- 5132302
280583           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
280584                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
280585 
280586       END IF;
280587 
280588       -- 4955764
280589       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
280590       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
280591 
280592 
280593       XLA_AE_LINES_PKG.ValidateCurrentLine;
280594       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
280595 
280596       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
280597                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
280598                ,p_balance_type_code => l_balance_type_code);
280599 
280600    END IF;
280601 
280602    -----------------------------------------------------------------------------------------
280603    -- 4262811 Multiperiod Accounting
280604    -----------------------------------------------------------------------------------------
280605      -- No MPA option is assigned.
280606 
280607 
280608 END IF;
280609 END IF;
280610 --
280611 
280612 --
280613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
280614    trace
280615       (p_msg      => 'END of AcctLineType_501'
280616       ,p_level    => C_LEVEL_PROCEDURE
280617       ,p_module   => l_log_module);
280618 END IF;
280619 --
280620 EXCEPTION
280621   WHEN xla_exceptions_pkg.application_exception THEN
280622       RAISE;
280623   WHEN OTHERS THEN
280624        xla_exceptions_pkg.raise_message
280625            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_501');
280626 END AcctLineType_501;
280627 --
280628 
280629 ---------------------------------------
280630 --
280631 -- PRIVATE FUNCTION
280632 --         AcctLineType_502
280633 --
280634 ---------------------------------------
280635 PROCEDURE AcctLineType_502 (
280636   p_application_id        IN NUMBER
280637  ,p_event_id              IN NUMBER
280638  ,p_calculate_acctd_flag  IN VARCHAR2
280639  ,p_calculate_g_l_flag    IN VARCHAR2
280640  ,p_actual_flag           IN OUT VARCHAR2
280641  ,p_balance_type_code     OUT VARCHAR2
280642  ,p_gain_or_loss_ref      OUT VARCHAR2
280643  
280644 --Cost Management Default Account
280645  , p_source_11            IN NUMBER
280646 --Receiving Accounting Line Type
280647  , p_source_78            IN VARCHAR2
280648 --DISTRIBUTION_IDENTIFIER
280649  , p_source_84            IN NUMBER
280650 --Distribution Type
280651  , p_source_85            IN VARCHAR2
280652  , p_source_85_meaning    IN VARCHAR2
280653 --Entered Amount
280654  , p_source_91            IN NUMBER
280655 --Accounted Amount
280656  , p_source_95            IN NUMBER
280657 --Entered Currency Code
280658  , p_source_105            IN VARCHAR2
280659 --Currency Conversion Date
280660  , p_source_106            IN DATE
280661 --Currency Conversion Rate
280662  , p_source_107            IN NUMBER
280663 --Currency Conversion Type
280664  , p_source_109            IN VARCHAR2
280665 )
280666 IS
280667 
280668 l_component_type              VARCHAR2(80);
280669 l_component_code              VARCHAR2(30);
280670 l_component_type_code         VARCHAR2(1);
280671 l_component_appl_id           INTEGER;
280672 l_amb_context_code            VARCHAR2(30);
280673 l_entity_code                 VARCHAR2(30);
280674 l_event_class_code            VARCHAR2(30);
280675 l_ae_header_id                NUMBER;
280676 l_event_type_code             VARCHAR2(30);
280677 l_line_definition_code        VARCHAR2(30);
280678 l_line_definition_owner_code  VARCHAR2(1);
280679 --
280680 -- adr variables
280681 l_segment                     VARCHAR2(30);
280682 l_ccid                        NUMBER;
280683 l_adr_transaction_coa_id      NUMBER;
280684 l_adr_accounting_coa_id       NUMBER;
280685 l_adr_flexfield_segment_code  VARCHAR2(30);
280686 l_adr_flex_value_set_id       NUMBER;
280687 l_adr_value_type_code         VARCHAR2(30);
280688 l_adr_value_combination_id    NUMBER;
280689 l_adr_value_segment_code      VARCHAR2(30);
280690 
280691 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
280692 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
280693 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
280694 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
280695 
280696 -- 4262811 Variables ------------------------------------------------------------------------------------------
280697 l_entered_amt_idx             NUMBER;
280698 l_accted_amt_idx              NUMBER;
280699 l_acc_rev_flag                VARCHAR2(1);
280700 l_accrual_line_num            NUMBER;
280701 l_tmp_amt                     NUMBER;
280702 l_acc_rev_natural_side_code   VARCHAR2(1);
280703 
280704 l_num_entries                 NUMBER;
280705 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
280706 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
280707 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
280708 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
280709 l_recog_line_1                NUMBER;
280710 l_recog_line_2                NUMBER;
280711 
280712 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
280713 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
280714 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
280715 
280716 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
280717 
280718 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
280719 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
280720 
280721 ---------------------------------------------------------------------------------------------------------------
280722 
280723 
280724 --
280725 -- bulk performance
280726 --
280727 l_balance_type_code           VARCHAR2(1);
280728 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
280729 l_log_module                  VARCHAR2(240);
280730 
280731 --
280732 -- Upgrade strategy
280733 --
280734 l_actual_upg_option           VARCHAR2(1);
280735 l_enc_upg_option           VARCHAR2(1);
280736 
280737 --
280738 BEGIN
280739 --
280740 IF g_log_enabled THEN
280741       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_502';
280742 END IF;
280743 --
280744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
280745 
280746       trace
280747          (p_msg      => 'BEGIN of AcctLineType_502'
280748          ,p_level    => C_LEVEL_PROCEDURE
280749          ,p_module   => l_log_module);
280750 
280751 END IF;
280752 --
280753 l_component_type             := 'AMB_JLT';
280754 l_component_code             := 'RECEIVING_INSPECTION';
280755 l_component_type_code        := 'S';
280756 l_component_appl_id          :=  707;
280757 l_amb_context_code           := 'DEFAULT';
280758 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
280759 l_event_class_code           := 'LDD_COST_ADJ_RCV';
280760 l_event_type_code            := 'LDD_COST_ADJ_RCV_ALL';
280761 l_line_definition_owner_code := 'S';
280762 l_line_definition_code       := 'LDD_COST_ADJ_RCV';
280763 --
280764 l_balance_type_code          := 'A';
280765 l_segment                     := NULL;
280766 l_ccid                        := NULL;
280767 l_adr_transaction_coa_id      := NULL;
280768 l_adr_accounting_coa_id       := NULL;
280769 l_adr_flexfield_segment_code  := NULL;
280770 l_adr_flex_value_set_id       := NULL;
280771 l_adr_value_type_code         := NULL;
280772 l_adr_value_combination_id    := NULL;
280773 l_adr_value_segment_code      := NULL;
280774 
280775 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
280776 l_bflow_class_code           := '';    -- 4219869 Business Flow
280777 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
280778 l_budgetary_control_flag     := 'N';
280779 
280780 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
280781 l_bflow_applied_to_amt       := NULL; -- 5132302
280782 l_entered_amt_idx            := NULL;          -- 4262811
280783 l_accted_amt_idx             := NULL;          -- 4262811
280784 l_acc_rev_flag               := NULL;          -- 4262811
280785 l_accrual_line_num           := NULL;          -- 4262811
280786 l_tmp_amt                    := NULL;          -- 4262811
280787 --
280788  
280789 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
280790     l_balance_type_code <> 'B' THEN
280791 IF NVL(p_source_78,'
280792 ') =  'Receiving Inspection'
280793  THEN 
280794 
280795    --
280796    XLA_AE_LINES_PKG.SetNewLine;
280797 
280798    p_balance_type_code          := l_balance_type_code;
280799    -- set the flag so later we will know whether the gain loss line needs to be created
280800    
280801    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
280802      p_actual_flag :='A';
280803    END IF;
280804 
280805    --
280806    -- bulk performance
280807    --
280808    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
280809                                       p_header_num   => 0); -- 4262811
280810    --
280811    -- set accounting line options
280812    --
280813    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
280814            p_natural_side_code          => 'D'
280815          , p_gain_or_loss_flag          => 'N'
280816          , p_gl_transfer_mode_code      => 'S'
280817          , p_acct_entry_type_code       => 'A'
280818          , p_switch_side_flag           => 'Y'
280819          , p_merge_duplicate_code       => 'N'
280820          );
280821    --
280822    l_acc_rev_natural_side_code := 'C';  -- 4262811
280823    -- 
280824    --
280825    -- set accounting line type info
280826    --
280827    xla_ae_lines_pkg.SetAcctLineType
280828       (p_component_type             => l_component_type
280829       ,p_event_type_code            => l_event_type_code
280830       ,p_line_definition_owner_code => l_line_definition_owner_code
280831       ,p_line_definition_code       => l_line_definition_code
280832       ,p_accounting_line_code       => l_component_code
280833       ,p_accounting_line_type_code  => l_component_type_code
280834       ,p_accounting_line_appl_id    => l_component_appl_id
280835       ,p_amb_context_code           => l_amb_context_code
280836       ,p_entity_code                => l_entity_code
280837       ,p_event_class_code           => l_event_class_code);
280838    --
280839    -- set accounting class
280840    --
280841    xla_ae_lines_pkg.SetAcctClass(
280842            p_accounting_class_code  => 'RECEIVING_INSPECTION'
280843          , p_ae_header_id           => l_ae_header_id
280844          );
280845 
280846    --
280847    -- set rounding class
280848    --
280849    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
280850                       'RECEIVING_INSPECTION';
280851 
280852    --
280853    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
280854    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
280855    --
280856    -- bulk performance
280857    --
280858    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
280859 
280860    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
280861       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
280862 
280863    -- 4955764
280864    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
280865       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
280866 
280867    -- 4458381 Public Sector Enh
280868    
280869    --
280870    -- set accounting attributes for the line type
280871    --
280872    l_entered_amt_idx := 3;
280873    l_accted_amt_idx  := 8;
280874    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
280875    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
280876    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
280877    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
280878    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
280879    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
280880    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
280881    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
280882    l_rec_acct_attrs.array_char_value(4)  := p_source_105;
280883    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
280884    l_rec_acct_attrs.array_date_value(5)  := p_source_106;
280885    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
280886    l_rec_acct_attrs.array_num_value(6)  := p_source_107;
280887    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
280888    l_rec_acct_attrs.array_char_value(7)  := p_source_109;
280889    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
280890    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
280891 
280892    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
280893    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
280894 
280895    ---------------------------------------------------------------------------------------------------------------
280896    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
280897    ---------------------------------------------------------------------------------------------------------------
280898    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
280899 
280900    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
280901    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
280902 
280903    IF xla_accounting_cache_pkg.GetValueChar
280904          (p_source_code         => 'LEDGER_CATEGORY_CODE'
280905          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
280906    AND l_bflow_method_code = 'PRIOR_ENTRY'
280907 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
280908    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
280909          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
280910        )
280911    THEN
280912          xla_ae_lines_pkg.BflowUpgEntry
280913            (p_business_method_code    => l_bflow_method_code
280914            ,p_business_class_code     => l_bflow_class_code
280915            ,p_balance_type            => l_balance_type_code);
280916    ELSE
280917       NULL;
280918 -- No business flow processing for business flow method of NONE.
280919    END IF;
280920 
280921    --
280922    -- call analytical criteria
280923    --
280924    
280925    --
280926    -- call description
280927    --
280928    -- No description or it is inherited.
280929    --
280930    -- call ADRs
280931    -- Bug 4922099
280932    --
280933    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
280934         (NVL(l_actual_upg_option, 'N') = 'O') OR
280935         (NVL(l_enc_upg_option, 'N') = 'O')
280936       )
280937    THEN
280938    NULL;
280939    --
280940    --
280941    
280942   l_ccid := AcctDerRule_6(
280943            p_application_id           => p_application_id
280944          , p_ae_header_id             => l_ae_header_id 
280945 , p_source_11 => p_source_11
280946          , x_transaction_coa_id       => l_adr_transaction_coa_id
280947          , x_accounting_coa_id        => l_adr_accounting_coa_id
280948          , x_value_type_code          => l_adr_value_type_code
280949          , p_side                     => 'NA'
280950    );
280951 
280952    xla_ae_lines_pkg.set_ccid(
280953     p_code_combination_id          => l_ccid
280954   , p_value_type_code              => l_adr_value_type_code
280955   , p_transaction_coa_id           => l_adr_transaction_coa_id
280956   , p_accounting_coa_id            => l_adr_accounting_coa_id
280957   , p_adr_code                     => 'CST_DEFAULT'
280958   , p_adr_type_code                => 'S'
280959   , p_component_type               => l_component_type
280960   , p_component_code               => l_component_code
280961   , p_component_type_code          => l_component_type_code
280962   , p_component_appl_id            => l_component_appl_id
280963   , p_amb_context_code             => l_amb_context_code
280964   , p_side                         => 'NA'
280965   );
280966 
280967 
280968    --
280969    --
280970    END IF;
280971    --
280972    -- Bug 4922099
280973    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
280974           (NVL(l_enc_upg_option, 'N') = 'O')
280975         ) AND
280976         (l_bflow_method_code = 'PRIOR_ENTRY')
280977       )
280978    THEN
280979       IF
280980       --
280981       1 = 2
280982       --
280983       THEN
280984       xla_accounting_err_pkg.build_message
280985                                     (p_appli_s_name            => 'XLA'
280986                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
280987                                     ,p_token_1                 => 'LINE_NUMBER'
280988                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
280989                                     ,p_token_2                 => 'LINE_TYPE_NAME'
280990                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
280991                                                                              l_component_type
280992                                                                             ,l_component_code
280993                                                                             ,l_component_type_code
280994                                                                             ,l_component_appl_id
280995                                                                             ,l_amb_context_code
280996                                                                             ,l_entity_code
280997                                                                             ,l_event_class_code
280998                                                                            )
280999                                     ,p_token_3                 => 'OWNER'
281000                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
281001                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
281002                                                                           ,p_lookup_code    => l_component_type_code
281003                                                                          )
281004                                     ,p_token_4                 => 'PRODUCT_NAME'
281005                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
281006                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
281007                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
281008                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
281009                                     ,p_ae_header_id            =>  NULL
281010                                        );
281011 
281012         IF (C_LEVEL_ERROR>= g_log_level) THEN
281013                  trace
281014                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
281015                       ,p_level    => C_LEVEL_ERROR
281016                       ,p_module   => l_log_module);
281017         END IF;
281018       END IF;
281019    END IF;
281020    --
281021    --
281022    ------------------------------------------------------------------------------------------------
281023    -- 4219869 Business Flow
281024    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
281025    -- Prior Entry.  Currently, the following code is always generated.
281026    ------------------------------------------------------------------------------------------------
281027    XLA_AE_LINES_PKG.ValidateCurrentLine;
281028 
281029    ------------------------------------------------------------------------------------
281030    -- 4219869 Business Flow
281031    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
281032    ------------------------------------------------------------------------------------
281033    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
281034 
281035    ----------------------------------------------------------------------------------
281036    -- 4219869 Business Flow
281037    -- Update journal entry status -- Need to generate this within IF <condition>
281038    ----------------------------------------------------------------------------------
281039    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
281040          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
281041          ,p_balance_type_code => l_balance_type_code
281042          );
281043 
281044    -------------------------------------------------------------------------------------------
281045    -- 4262811 - Generate the Accrual Reversal lines
281046    -------------------------------------------------------------------------------------------
281047    BEGIN
281048       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
281049                               (g_array_event(p_event_id).array_value_num('header_index'));
281050       IF l_acc_rev_flag IS NULL THEN
281051          l_acc_rev_flag := 'N';
281052       END IF;
281053    EXCEPTION
281054       WHEN OTHERS THEN
281055          l_acc_rev_flag := 'N';
281056    END;
281057    --
281058    IF (l_acc_rev_flag = 'Y') THEN
281059 
281060        -- 4645092  ------------------------------------------------------------------------------
281061        -- To allow MPA report to determine if it should generate report process
281062        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
281063        ------------------------------------------------------------------------------------------
281064 
281065        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
281066        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
281067    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
281068    -- call ADRs
281069    -- Bug 4922099
281070    --
281071    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
281072         (NVL(l_actual_upg_option, 'N') = 'O') OR
281073         (NVL(l_enc_upg_option, 'N') = 'O')
281074       )
281075    THEN
281076    NULL;
281077    --
281078    --
281079    
281080   l_ccid := AcctDerRule_6(
281081            p_application_id           => p_application_id
281082          , p_ae_header_id             => l_ae_header_id 
281083 , p_source_11 => p_source_11
281084          , x_transaction_coa_id       => l_adr_transaction_coa_id
281085          , x_accounting_coa_id        => l_adr_accounting_coa_id
281086          , x_value_type_code          => l_adr_value_type_code
281087          , p_side                     => 'NA'
281088    );
281089 
281090    xla_ae_lines_pkg.set_ccid(
281091     p_code_combination_id          => l_ccid
281092   , p_value_type_code              => l_adr_value_type_code
281093   , p_transaction_coa_id           => l_adr_transaction_coa_id
281094   , p_accounting_coa_id            => l_adr_accounting_coa_id
281095   , p_adr_code                     => 'CST_DEFAULT'
281096   , p_adr_type_code                => 'S'
281097   , p_component_type               => l_component_type
281098   , p_component_code               => l_component_code
281099   , p_component_type_code          => l_component_type_code
281100   , p_component_appl_id            => l_component_appl_id
281101   , p_amb_context_code             => l_amb_context_code
281102   , p_side                         => 'NA'
281103   );
281104 
281105 
281106    --
281107    --
281108    END IF;
281109 
281110        --
281111        -- Update the line information that should be overwritten
281112        --
281113        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
281114                                          p_header_num   => 1);
281115        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
281116 
281117        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
281118 
281119        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
281120           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
281121        END IF;
281122 
281123       --
281124       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
281125       --
281126       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
281127           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
281128       ELSE
281129           ---------------------------------------------------------------------------------------------------
281130           -- 4262811a Switch Sign
281131           ---------------------------------------------------------------------------------------------------
281132           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
281133           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
281134                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
281135           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
281136                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
281137           -- 5132302
281138           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
281139                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
281140 
281141       END IF;
281142 
281143       -- 4955764
281144       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
281145       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
281146 
281147 
281148       XLA_AE_LINES_PKG.ValidateCurrentLine;
281149       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
281150 
281151       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
281152                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
281153                ,p_balance_type_code => l_balance_type_code);
281154 
281155    END IF;
281156 
281157    -----------------------------------------------------------------------------------------
281158    -- 4262811 Multiperiod Accounting
281159    -----------------------------------------------------------------------------------------
281160      -- No MPA option is assigned.
281161 
281162 
281163 END IF;
281164 END IF;
281165 --
281166 
281167 --
281168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
281169    trace
281170       (p_msg      => 'END of AcctLineType_502'
281171       ,p_level    => C_LEVEL_PROCEDURE
281172       ,p_module   => l_log_module);
281173 END IF;
281174 --
281175 EXCEPTION
281176   WHEN xla_exceptions_pkg.application_exception THEN
281177       RAISE;
281178   WHEN OTHERS THEN
281179        xla_exceptions_pkg.raise_message
281180            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_502');
281181 END AcctLineType_502;
281182 --
281183 
281184 ---------------------------------------
281185 --
281186 -- PRIVATE FUNCTION
281187 --         AcctLineType_503
281188 --
281189 ---------------------------------------
281190 PROCEDURE AcctLineType_503 (
281191   p_application_id        IN NUMBER
281192  ,p_event_id              IN NUMBER
281193  ,p_calculate_acctd_flag  IN VARCHAR2
281194  ,p_calculate_g_l_flag    IN VARCHAR2
281195  ,p_actual_flag           IN OUT VARCHAR2
281196  ,p_balance_type_code     OUT VARCHAR2
281197  ,p_gain_or_loss_ref      OUT VARCHAR2
281198  
281199 --TRANSACTION_ID
281200  , p_source_1            IN NUMBER
281201 --Item Concatenated Segments
281202  , p_source_2            IN VARCHAR2
281203 --Transaction Quantity
281204  , p_source_3            IN NUMBER
281205 --Transaction Unit of Measure Code
281206  , p_source_4            IN VARCHAR2
281207 --Inventory Transaction Type Description
281208  , p_source_5            IN VARCHAR2
281209 --Cost Management Default Account
281210  , p_source_11            IN NUMBER
281211 --Applied to Application ID
281212  , p_source_79            IN NUMBER
281213 --Applied to Distribution Link Type
281214  , p_source_80            IN VARCHAR2
281215 --Applied to Entity Code
281216  , p_source_81            IN VARCHAR2
281217 --Applied To Purchase Document Identifier
281218  , p_source_83            IN NUMBER
281219 --DISTRIBUTION_IDENTIFIER
281220  , p_source_84            IN NUMBER
281221 --Distribution Type
281222  , p_source_85            IN VARCHAR2
281223  , p_source_85_meaning    IN VARCHAR2
281224 --PO Budget Account
281225  , p_source_86            IN NUMBER
281226 --Encumbrance Reversal Amount Entered
281227  , p_source_87            IN NUMBER
281228 --Entered Currency Code
281229  , p_source_88            IN VARCHAR2
281230 --Transaction Encumbrance Reversal Amount
281231  , p_source_89            IN NUMBER
281232 --Entered Amount
281233  , p_source_91            IN NUMBER
281234 --Currency Conversion Date
281235  , p_source_92            IN DATE
281236 --Currency Conversion Rate
281237  , p_source_93            IN NUMBER
281238 --Currency Conversion Type
281239  , p_source_94            IN VARCHAR2
281240 --Accounted Amount
281241  , p_source_95            IN NUMBER
281242 --Purchasing Encumbrance Type Identifier
281243  , p_source_96            IN NUMBER
281244 --Accounting Line Type
281245  , p_source_97            IN NUMBER
281246 --Costing Encumbrance Upgrade Option
281247  , p_source_100            IN VARCHAR2
281248 --TXN_PO_DISTRIBUTION_ID
281249  , p_source_101            IN NUMBER
281250 )
281251 IS
281252 
281253 l_component_type              VARCHAR2(80);
281254 l_component_code              VARCHAR2(30);
281255 l_component_type_code         VARCHAR2(1);
281256 l_component_appl_id           INTEGER;
281257 l_amb_context_code            VARCHAR2(30);
281258 l_entity_code                 VARCHAR2(30);
281259 l_event_class_code            VARCHAR2(30);
281260 l_ae_header_id                NUMBER;
281261 l_event_type_code             VARCHAR2(30);
281262 l_line_definition_code        VARCHAR2(30);
281263 l_line_definition_owner_code  VARCHAR2(1);
281264 --
281265 -- adr variables
281266 l_segment                     VARCHAR2(30);
281267 l_ccid                        NUMBER;
281268 l_adr_transaction_coa_id      NUMBER;
281269 l_adr_accounting_coa_id       NUMBER;
281270 l_adr_flexfield_segment_code  VARCHAR2(30);
281271 l_adr_flex_value_set_id       NUMBER;
281272 l_adr_value_type_code         VARCHAR2(30);
281273 l_adr_value_combination_id    NUMBER;
281274 l_adr_value_segment_code      VARCHAR2(30);
281275 
281276 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
281277 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
281278 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
281279 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
281280 
281281 -- 4262811 Variables ------------------------------------------------------------------------------------------
281282 l_entered_amt_idx             NUMBER;
281283 l_accted_amt_idx              NUMBER;
281284 l_acc_rev_flag                VARCHAR2(1);
281285 l_accrual_line_num            NUMBER;
281286 l_tmp_amt                     NUMBER;
281287 l_acc_rev_natural_side_code   VARCHAR2(1);
281288 
281289 l_num_entries                 NUMBER;
281290 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
281291 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
281292 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
281293 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
281294 l_recog_line_1                NUMBER;
281295 l_recog_line_2                NUMBER;
281296 
281297 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
281298 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
281299 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
281300 
281301 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
281302 
281303 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
281304 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
281305 
281306 ---------------------------------------------------------------------------------------------------------------
281307 
281308 
281309 --
281310 -- bulk performance
281311 --
281312 l_balance_type_code           VARCHAR2(1);
281313 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
281314 l_log_module                  VARCHAR2(240);
281315 
281316 --
281317 -- Upgrade strategy
281318 --
281319 l_actual_upg_option           VARCHAR2(1);
281320 l_enc_upg_option           VARCHAR2(1);
281321 
281322 --
281323 BEGIN
281324 --
281325 IF g_log_enabled THEN
281326       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_503';
281327 END IF;
281328 --
281329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
281330 
281331       trace
281332          (p_msg      => 'BEGIN of AcctLineType_503'
281333          ,p_level    => C_LEVEL_PROCEDURE
281334          ,p_module   => l_log_module);
281335 
281336 END IF;
281337 --
281338 l_component_type             := 'AMB_JLT';
281339 l_component_code             := 'RECEIVING_INSPECTION';
281340 l_component_type_code        := 'S';
281341 l_component_appl_id          :=  707;
281342 l_amb_context_code           := 'DEFAULT';
281343 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
281344 l_event_class_code           := 'PURCHASE_ORDER';
281345 l_event_type_code            := 'LOG_PO_DEL_ADJ';
281346 l_line_definition_owner_code := 'S';
281347 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
281348 --
281349 l_balance_type_code          := 'A';
281350 l_segment                     := NULL;
281351 l_ccid                        := NULL;
281352 l_adr_transaction_coa_id      := NULL;
281353 l_adr_accounting_coa_id       := NULL;
281354 l_adr_flexfield_segment_code  := NULL;
281355 l_adr_flex_value_set_id       := NULL;
281356 l_adr_value_type_code         := NULL;
281357 l_adr_value_combination_id    := NULL;
281358 l_adr_value_segment_code      := NULL;
281359 
281360 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
281361 l_bflow_class_code           := '';    -- 4219869 Business Flow
281362 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
281363 l_budgetary_control_flag     := 'N';
281364 
281365 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
281366 l_bflow_applied_to_amt       := NULL; -- 5132302
281367 l_entered_amt_idx            := NULL;          -- 4262811
281368 l_accted_amt_idx             := NULL;          -- 4262811
281369 l_acc_rev_flag               := NULL;          -- 4262811
281370 l_accrual_line_num           := NULL;          -- 4262811
281371 l_tmp_amt                    := NULL;          -- 4262811
281372 --
281373  
281374 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
281375     l_balance_type_code <> 'B' THEN
281376 IF NVL(p_source_97,9E125) =  5
281377  THEN 
281378 
281379    --
281380    XLA_AE_LINES_PKG.SetNewLine;
281381 
281382    p_balance_type_code          := l_balance_type_code;
281383    -- set the flag so later we will know whether the gain loss line needs to be created
281384    
281385    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
281386      p_actual_flag :='A';
281387    END IF;
281388 
281389    --
281390    -- bulk performance
281391    --
281392    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
281393                                       p_header_num   => 0); -- 4262811
281394    --
281395    -- set accounting line options
281396    --
281397    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
281398            p_natural_side_code          => 'D'
281399          , p_gain_or_loss_flag          => 'N'
281400          , p_gl_transfer_mode_code      => 'S'
281401          , p_acct_entry_type_code       => 'A'
281402          , p_switch_side_flag           => 'Y'
281403          , p_merge_duplicate_code       => 'N'
281404          );
281405    --
281406    l_acc_rev_natural_side_code := 'C';  -- 4262811
281407    -- 
281408    --
281409    -- set accounting line type info
281410    --
281411    xla_ae_lines_pkg.SetAcctLineType
281412       (p_component_type             => l_component_type
281413       ,p_event_type_code            => l_event_type_code
281414       ,p_line_definition_owner_code => l_line_definition_owner_code
281415       ,p_line_definition_code       => l_line_definition_code
281416       ,p_accounting_line_code       => l_component_code
281417       ,p_accounting_line_type_code  => l_component_type_code
281418       ,p_accounting_line_appl_id    => l_component_appl_id
281419       ,p_amb_context_code           => l_amb_context_code
281420       ,p_entity_code                => l_entity_code
281421       ,p_event_class_code           => l_event_class_code);
281422    --
281423    -- set accounting class
281424    --
281425    xla_ae_lines_pkg.SetAcctClass(
281426            p_accounting_class_code  => 'RECEIVING_INSPECTION'
281427          , p_ae_header_id           => l_ae_header_id
281428          );
281429 
281430    --
281431    -- set rounding class
281432    --
281433    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
281434                       'RECEIVING_INSPECTION';
281435 
281436    --
281437    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
281438    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
281439    --
281440    -- bulk performance
281441    --
281442    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
281443 
281444    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
281445       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
281446 
281447    -- 4955764
281448    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
281449       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
281450 
281451    -- 4458381 Public Sector Enh
281452    
281453    --
281454    -- set accounting attributes for the line type
281455    --
281456    l_entered_amt_idx := 17;
281457    l_accted_amt_idx  := 22;
281458    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
281459    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
281460    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
281461    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
281462    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
281463    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
281464    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
281465    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
281466    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
281467    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
281468    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
281469    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
281470    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
281471    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
281472    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
281473    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
281474    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
281475    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
281476    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
281477    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
281478    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
281479    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
281480    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
281481    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
281482    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
281483    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
281484    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
281485    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
281486    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
281487    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
281488    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
281489    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
281490    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
281491    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
281492    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
281493    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
281494    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
281495    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
281496    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
281497    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
281498    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
281499    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
281500    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
281501    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
281502    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
281503    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
281504    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
281505    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
281506    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
281507 
281508    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
281509    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
281510 
281511    ---------------------------------------------------------------------------------------------------------------
281512    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
281513    ---------------------------------------------------------------------------------------------------------------
281514    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
281515 
281516    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
281517    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
281518 
281519    IF xla_accounting_cache_pkg.GetValueChar
281520          (p_source_code         => 'LEDGER_CATEGORY_CODE'
281521          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
281522    AND l_bflow_method_code = 'PRIOR_ENTRY'
281523 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
281524    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
281525          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
281526        )
281527    THEN
281528          xla_ae_lines_pkg.BflowUpgEntry
281529            (p_business_method_code    => l_bflow_method_code
281530            ,p_business_class_code     => l_bflow_class_code
281531            ,p_balance_type            => l_balance_type_code);
281532    ELSE
281533       NULL;
281534 -- No business flow processing for business flow method of NONE.
281535    END IF;
281536 
281537    --
281538    -- call analytical criteria
281539    --
281540    
281541    --
281542    -- call description
281543    --
281544    
281545 xla_ae_lines_pkg.SetLineDescription(
281546    p_ae_header_id => l_ae_header_id
281547   ,p_description  => Description_1 (
281548      p_application_id         => p_application_id
281549    , p_ae_header_id           => l_ae_header_id 
281550 , p_source_1 => p_source_1
281551 , p_source_2 => p_source_2
281552 , p_source_3 => p_source_3
281553 , p_source_4 => p_source_4
281554 , p_source_5 => p_source_5
281555    )
281556 );
281557 
281558 
281559    --
281560    -- call ADRs
281561    -- Bug 4922099
281562    --
281563    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
281564         (NVL(l_actual_upg_option, 'N') = 'O') OR
281565         (NVL(l_enc_upg_option, 'N') = 'O')
281566       )
281567    THEN
281568    NULL;
281569    --
281570    --
281571    
281572   l_ccid := AcctDerRule_6(
281573            p_application_id           => p_application_id
281574          , p_ae_header_id             => l_ae_header_id 
281575 , p_source_11 => p_source_11
281576          , x_transaction_coa_id       => l_adr_transaction_coa_id
281577          , x_accounting_coa_id        => l_adr_accounting_coa_id
281578          , x_value_type_code          => l_adr_value_type_code
281579          , p_side                     => 'NA'
281580    );
281581 
281582    xla_ae_lines_pkg.set_ccid(
281583     p_code_combination_id          => l_ccid
281584   , p_value_type_code              => l_adr_value_type_code
281585   , p_transaction_coa_id           => l_adr_transaction_coa_id
281586   , p_accounting_coa_id            => l_adr_accounting_coa_id
281587   , p_adr_code                     => 'CST_DEFAULT'
281588   , p_adr_type_code                => 'S'
281589   , p_component_type               => l_component_type
281590   , p_component_code               => l_component_code
281591   , p_component_type_code          => l_component_type_code
281592   , p_component_appl_id            => l_component_appl_id
281593   , p_amb_context_code             => l_amb_context_code
281594   , p_side                         => 'NA'
281595   );
281596 
281597 
281598    --
281599    --
281600    END IF;
281601    --
281602    -- Bug 4922099
281603    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
281604           (NVL(l_enc_upg_option, 'N') = 'O')
281605         ) AND
281606         (l_bflow_method_code = 'PRIOR_ENTRY')
281607       )
281608    THEN
281609       IF
281610       --
281611       1 = 2
281612       --
281613       THEN
281614       xla_accounting_err_pkg.build_message
281615                                     (p_appli_s_name            => 'XLA'
281616                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
281617                                     ,p_token_1                 => 'LINE_NUMBER'
281618                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
281619                                     ,p_token_2                 => 'LINE_TYPE_NAME'
281620                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
281621                                                                              l_component_type
281622                                                                             ,l_component_code
281623                                                                             ,l_component_type_code
281624                                                                             ,l_component_appl_id
281625                                                                             ,l_amb_context_code
281626                                                                             ,l_entity_code
281627                                                                             ,l_event_class_code
281628                                                                            )
281629                                     ,p_token_3                 => 'OWNER'
281630                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
281631                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
281632                                                                           ,p_lookup_code    => l_component_type_code
281633                                                                          )
281634                                     ,p_token_4                 => 'PRODUCT_NAME'
281635                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
281636                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
281637                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
281638                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
281639                                     ,p_ae_header_id            =>  NULL
281640                                        );
281641 
281642         IF (C_LEVEL_ERROR>= g_log_level) THEN
281643                  trace
281644                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
281645                       ,p_level    => C_LEVEL_ERROR
281646                       ,p_module   => l_log_module);
281647         END IF;
281648       END IF;
281649    END IF;
281650    --
281651    --
281652    ------------------------------------------------------------------------------------------------
281653    -- 4219869 Business Flow
281654    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
281655    -- Prior Entry.  Currently, the following code is always generated.
281656    ------------------------------------------------------------------------------------------------
281657    XLA_AE_LINES_PKG.ValidateCurrentLine;
281658 
281659    ------------------------------------------------------------------------------------
281660    -- 4219869 Business Flow
281661    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
281662    ------------------------------------------------------------------------------------
281663    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
281664 
281665    ----------------------------------------------------------------------------------
281666    -- 4219869 Business Flow
281667    -- Update journal entry status -- Need to generate this within IF <condition>
281668    ----------------------------------------------------------------------------------
281669    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
281670          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
281671          ,p_balance_type_code => l_balance_type_code
281672          );
281673 
281674    -------------------------------------------------------------------------------------------
281675    -- 4262811 - Generate the Accrual Reversal lines
281676    -------------------------------------------------------------------------------------------
281677    BEGIN
281678       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
281679                               (g_array_event(p_event_id).array_value_num('header_index'));
281680       IF l_acc_rev_flag IS NULL THEN
281681          l_acc_rev_flag := 'N';
281682       END IF;
281683    EXCEPTION
281684       WHEN OTHERS THEN
281685          l_acc_rev_flag := 'N';
281686    END;
281687    --
281688    IF (l_acc_rev_flag = 'Y') THEN
281689 
281690        -- 4645092  ------------------------------------------------------------------------------
281691        -- To allow MPA report to determine if it should generate report process
281692        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
281693        ------------------------------------------------------------------------------------------
281694 
281695        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
281696        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
281697    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
281698    -- call ADRs
281699    -- Bug 4922099
281700    --
281701    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
281702         (NVL(l_actual_upg_option, 'N') = 'O') OR
281703         (NVL(l_enc_upg_option, 'N') = 'O')
281704       )
281705    THEN
281706    NULL;
281707    --
281708    --
281709    
281710   l_ccid := AcctDerRule_6(
281711            p_application_id           => p_application_id
281712          , p_ae_header_id             => l_ae_header_id 
281713 , p_source_11 => p_source_11
281714          , x_transaction_coa_id       => l_adr_transaction_coa_id
281715          , x_accounting_coa_id        => l_adr_accounting_coa_id
281716          , x_value_type_code          => l_adr_value_type_code
281717          , p_side                     => 'NA'
281718    );
281719 
281720    xla_ae_lines_pkg.set_ccid(
281721     p_code_combination_id          => l_ccid
281722   , p_value_type_code              => l_adr_value_type_code
281723   , p_transaction_coa_id           => l_adr_transaction_coa_id
281724   , p_accounting_coa_id            => l_adr_accounting_coa_id
281725   , p_adr_code                     => 'CST_DEFAULT'
281726   , p_adr_type_code                => 'S'
281727   , p_component_type               => l_component_type
281728   , p_component_code               => l_component_code
281729   , p_component_type_code          => l_component_type_code
281730   , p_component_appl_id            => l_component_appl_id
281731   , p_amb_context_code             => l_amb_context_code
281732   , p_side                         => 'NA'
281733   );
281734 
281735 
281736    --
281737    --
281738    END IF;
281739 
281740        --
281741        -- Update the line information that should be overwritten
281742        --
281743        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
281744                                          p_header_num   => 1);
281745        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
281746 
281747        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
281748 
281749        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
281750           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
281751        END IF;
281752 
281753       --
281754       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
281755       --
281756       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
281757           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
281758       ELSE
281759           ---------------------------------------------------------------------------------------------------
281760           -- 4262811a Switch Sign
281761           ---------------------------------------------------------------------------------------------------
281762           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
281763           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
281764                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
281765           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
281766                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
281767           -- 5132302
281768           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
281769                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
281770 
281771       END IF;
281772 
281773       -- 4955764
281774       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
281775       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
281776 
281777 
281778       XLA_AE_LINES_PKG.ValidateCurrentLine;
281779       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
281780 
281781       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
281782                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
281783                ,p_balance_type_code => l_balance_type_code);
281784 
281785    END IF;
281786 
281787    -----------------------------------------------------------------------------------------
281788    -- 4262811 Multiperiod Accounting
281789    -----------------------------------------------------------------------------------------
281790      -- No MPA option is assigned.
281791 
281792 
281793 END IF;
281794 END IF;
281795 --
281796 
281797 --
281798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
281799    trace
281800       (p_msg      => 'END of AcctLineType_503'
281801       ,p_level    => C_LEVEL_PROCEDURE
281802       ,p_module   => l_log_module);
281803 END IF;
281804 --
281805 EXCEPTION
281806   WHEN xla_exceptions_pkg.application_exception THEN
281807       RAISE;
281808   WHEN OTHERS THEN
281809        xla_exceptions_pkg.raise_message
281810            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_503');
281811 END AcctLineType_503;
281812 --
281813 
281814 ---------------------------------------
281815 --
281816 -- PRIVATE FUNCTION
281817 --         AcctLineType_504
281818 --
281819 ---------------------------------------
281820 PROCEDURE AcctLineType_504 (
281821   p_application_id        IN NUMBER
281822  ,p_event_id              IN NUMBER
281823  ,p_calculate_acctd_flag  IN VARCHAR2
281824  ,p_calculate_g_l_flag    IN VARCHAR2
281825  ,p_actual_flag           IN OUT VARCHAR2
281826  ,p_balance_type_code     OUT VARCHAR2
281827  ,p_gain_or_loss_ref      OUT VARCHAR2
281828  
281829 --TRANSACTION_ID
281830  , p_source_1            IN NUMBER
281831 --Transaction Unit of Measure Code
281832  , p_source_4            IN VARCHAR2
281833 --Primary Quantity of the Transaction
281834  , p_source_6            IN NUMBER
281835 --WIP Transaction Type
281836  , p_source_7            IN NUMBER
281837  , p_source_7_meaning    IN VARCHAR2
281838 --Cost Management Default Account
281839  , p_source_11            IN NUMBER
281840 --DISTRIBUTION_IDENTIFIER
281841  , p_source_84            IN NUMBER
281842 --Distribution Type
281843  , p_source_85            IN VARCHAR2
281844  , p_source_85_meaning    IN VARCHAR2
281845 --Entered Currency Code
281846  , p_source_88            IN VARCHAR2
281847 --Entered Amount
281848  , p_source_91            IN NUMBER
281849 --Currency Conversion Date
281850  , p_source_92            IN DATE
281851 --Currency Conversion Rate
281852  , p_source_93            IN NUMBER
281853 --Accounted Amount
281854  , p_source_95            IN NUMBER
281855 --Accounting Line Type
281856  , p_source_97            IN NUMBER
281857 )
281858 IS
281859 
281860 l_component_type              VARCHAR2(80);
281861 l_component_code              VARCHAR2(30);
281862 l_component_type_code         VARCHAR2(1);
281863 l_component_appl_id           INTEGER;
281864 l_amb_context_code            VARCHAR2(30);
281865 l_entity_code                 VARCHAR2(30);
281866 l_event_class_code            VARCHAR2(30);
281867 l_ae_header_id                NUMBER;
281868 l_event_type_code             VARCHAR2(30);
281869 l_line_definition_code        VARCHAR2(30);
281870 l_line_definition_owner_code  VARCHAR2(1);
281871 --
281872 -- adr variables
281873 l_segment                     VARCHAR2(30);
281874 l_ccid                        NUMBER;
281875 l_adr_transaction_coa_id      NUMBER;
281876 l_adr_accounting_coa_id       NUMBER;
281877 l_adr_flexfield_segment_code  VARCHAR2(30);
281878 l_adr_flex_value_set_id       NUMBER;
281879 l_adr_value_type_code         VARCHAR2(30);
281880 l_adr_value_combination_id    NUMBER;
281881 l_adr_value_segment_code      VARCHAR2(30);
281882 
281883 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
281884 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
281885 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
281886 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
281887 
281888 -- 4262811 Variables ------------------------------------------------------------------------------------------
281889 l_entered_amt_idx             NUMBER;
281890 l_accted_amt_idx              NUMBER;
281891 l_acc_rev_flag                VARCHAR2(1);
281892 l_accrual_line_num            NUMBER;
281893 l_tmp_amt                     NUMBER;
281894 l_acc_rev_natural_side_code   VARCHAR2(1);
281895 
281896 l_num_entries                 NUMBER;
281897 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
281898 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
281899 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
281900 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
281901 l_recog_line_1                NUMBER;
281902 l_recog_line_2                NUMBER;
281903 
281904 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
281905 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
281906 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
281907 
281908 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
281909 
281910 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
281911 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
281912 
281913 ---------------------------------------------------------------------------------------------------------------
281914 
281915 
281916 --
281917 -- bulk performance
281918 --
281919 l_balance_type_code           VARCHAR2(1);
281920 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
281921 l_log_module                  VARCHAR2(240);
281922 
281923 --
281924 -- Upgrade strategy
281925 --
281926 l_actual_upg_option           VARCHAR2(1);
281927 l_enc_upg_option           VARCHAR2(1);
281928 
281929 --
281930 BEGIN
281931 --
281932 IF g_log_enabled THEN
281933       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_504';
281934 END IF;
281935 --
281936 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
281937 
281938       trace
281939          (p_msg      => 'BEGIN of AcctLineType_504'
281940          ,p_level    => C_LEVEL_PROCEDURE
281941          ,p_module   => l_log_module);
281942 
281943 END IF;
281944 --
281945 l_component_type             := 'AMB_JLT';
281946 l_component_code             := 'RECEIVING_INSPECTION';
281947 l_component_type_code        := 'S';
281948 l_component_appl_id          :=  707;
281949 l_amb_context_code           := 'DEFAULT';
281950 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
281951 l_event_class_code           := 'OSP';
281952 l_event_type_code            := 'OSP';
281953 l_line_definition_owner_code := 'S';
281954 l_line_definition_code       := 'PI_OSP';
281955 --
281956 l_balance_type_code          := 'A';
281957 l_segment                     := NULL;
281958 l_ccid                        := NULL;
281959 l_adr_transaction_coa_id      := NULL;
281960 l_adr_accounting_coa_id       := NULL;
281961 l_adr_flexfield_segment_code  := NULL;
281962 l_adr_flex_value_set_id       := NULL;
281963 l_adr_value_type_code         := NULL;
281964 l_adr_value_combination_id    := NULL;
281965 l_adr_value_segment_code      := NULL;
281966 
281967 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
281968 l_bflow_class_code           := '';    -- 4219869 Business Flow
281969 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
281970 l_budgetary_control_flag     := 'N';
281971 
281972 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
281973 l_bflow_applied_to_amt       := NULL; -- 5132302
281974 l_entered_amt_idx            := NULL;          -- 4262811
281975 l_accted_amt_idx             := NULL;          -- 4262811
281976 l_acc_rev_flag               := NULL;          -- 4262811
281977 l_accrual_line_num           := NULL;          -- 4262811
281978 l_tmp_amt                    := NULL;          -- 4262811
281979 --
281980  
281981 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
281982     l_balance_type_code <> 'B' THEN
281983 IF NVL(p_source_97,9E125) =  5
281984  THEN 
281985 
281986    --
281987    XLA_AE_LINES_PKG.SetNewLine;
281988 
281989    p_balance_type_code          := l_balance_type_code;
281990    -- set the flag so later we will know whether the gain loss line needs to be created
281991    
281992    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
281993      p_actual_flag :='A';
281994    END IF;
281995 
281996    --
281997    -- bulk performance
281998    --
281999    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
282000                                       p_header_num   => 0); -- 4262811
282001    --
282002    -- set accounting line options
282003    --
282004    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
282005            p_natural_side_code          => 'D'
282006          , p_gain_or_loss_flag          => 'N'
282007          , p_gl_transfer_mode_code      => 'S'
282008          , p_acct_entry_type_code       => 'A'
282009          , p_switch_side_flag           => 'Y'
282010          , p_merge_duplicate_code       => 'N'
282011          );
282012    --
282013    l_acc_rev_natural_side_code := 'C';  -- 4262811
282014    -- 
282015    --
282016    -- set accounting line type info
282017    --
282018    xla_ae_lines_pkg.SetAcctLineType
282019       (p_component_type             => l_component_type
282020       ,p_event_type_code            => l_event_type_code
282021       ,p_line_definition_owner_code => l_line_definition_owner_code
282022       ,p_line_definition_code       => l_line_definition_code
282023       ,p_accounting_line_code       => l_component_code
282024       ,p_accounting_line_type_code  => l_component_type_code
282025       ,p_accounting_line_appl_id    => l_component_appl_id
282026       ,p_amb_context_code           => l_amb_context_code
282027       ,p_entity_code                => l_entity_code
282028       ,p_event_class_code           => l_event_class_code);
282029    --
282030    -- set accounting class
282031    --
282032    xla_ae_lines_pkg.SetAcctClass(
282033            p_accounting_class_code  => 'RECEIVING_INSPECTION'
282034          , p_ae_header_id           => l_ae_header_id
282035          );
282036 
282037    --
282038    -- set rounding class
282039    --
282040    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
282041                       'RECEIVING_INSPECTION';
282042 
282043    --
282044    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
282045    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
282046    --
282047    -- bulk performance
282048    --
282049    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
282050 
282051    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
282052       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
282053 
282054    -- 4955764
282055    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
282056       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
282057 
282058    -- 4458381 Public Sector Enh
282059    
282060    --
282061    -- set accounting attributes for the line type
282062    --
282063    l_entered_amt_idx := 3;
282064    l_accted_amt_idx  := 8;
282065    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
282066    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
282067    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
282068    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
282069    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
282070    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
282071    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
282072    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
282073    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
282074    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
282075    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
282076    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
282077    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
282078    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
282079    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
282080    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
282081    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
282082 
282083    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
282084    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
282085 
282086    ---------------------------------------------------------------------------------------------------------------
282087    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
282088    ---------------------------------------------------------------------------------------------------------------
282089    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
282090 
282091    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
282092    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
282093 
282094    IF xla_accounting_cache_pkg.GetValueChar
282095          (p_source_code         => 'LEDGER_CATEGORY_CODE'
282096          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
282097    AND l_bflow_method_code = 'PRIOR_ENTRY'
282098 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
282099    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
282100          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
282101        )
282102    THEN
282103          xla_ae_lines_pkg.BflowUpgEntry
282104            (p_business_method_code    => l_bflow_method_code
282105            ,p_business_class_code     => l_bflow_class_code
282106            ,p_balance_type            => l_balance_type_code);
282107    ELSE
282108       NULL;
282109 -- No business flow processing for business flow method of NONE.
282110    END IF;
282111 
282112    --
282113    -- call analytical criteria
282114    --
282115    
282116    --
282117    -- call description
282118    --
282119    
282120 xla_ae_lines_pkg.SetLineDescription(
282121    p_ae_header_id => l_ae_header_id
282122   ,p_description  => Description_2 (
282123      p_application_id         => p_application_id
282124    , p_ae_header_id           => l_ae_header_id 
282125 , p_source_1 => p_source_1
282126 , p_source_4 => p_source_4
282127 , p_source_6 => p_source_6
282128 , p_source_7 => p_source_7
282129 , p_source_7_meaning => p_source_7_meaning
282130    )
282131 );
282132 
282133 
282134    --
282135    -- call ADRs
282136    -- Bug 4922099
282137    --
282138    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
282139         (NVL(l_actual_upg_option, 'N') = 'O') OR
282140         (NVL(l_enc_upg_option, 'N') = 'O')
282141       )
282142    THEN
282143    NULL;
282144    --
282145    --
282146    
282147   l_ccid := AcctDerRule_6(
282148            p_application_id           => p_application_id
282149          , p_ae_header_id             => l_ae_header_id 
282150 , p_source_11 => p_source_11
282151          , x_transaction_coa_id       => l_adr_transaction_coa_id
282152          , x_accounting_coa_id        => l_adr_accounting_coa_id
282153          , x_value_type_code          => l_adr_value_type_code
282154          , p_side                     => 'NA'
282155    );
282156 
282157    xla_ae_lines_pkg.set_ccid(
282158     p_code_combination_id          => l_ccid
282159   , p_value_type_code              => l_adr_value_type_code
282160   , p_transaction_coa_id           => l_adr_transaction_coa_id
282161   , p_accounting_coa_id            => l_adr_accounting_coa_id
282162   , p_adr_code                     => 'CST_DEFAULT'
282163   , p_adr_type_code                => 'S'
282164   , p_component_type               => l_component_type
282165   , p_component_code               => l_component_code
282166   , p_component_type_code          => l_component_type_code
282167   , p_component_appl_id            => l_component_appl_id
282168   , p_amb_context_code             => l_amb_context_code
282169   , p_side                         => 'NA'
282170   );
282171 
282172 
282173    --
282174    --
282175    END IF;
282176    --
282177    -- Bug 4922099
282178    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
282179           (NVL(l_enc_upg_option, 'N') = 'O')
282180         ) AND
282181         (l_bflow_method_code = 'PRIOR_ENTRY')
282182       )
282183    THEN
282184       IF
282185       --
282186       1 = 2
282187       --
282188       THEN
282189       xla_accounting_err_pkg.build_message
282190                                     (p_appli_s_name            => 'XLA'
282191                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
282192                                     ,p_token_1                 => 'LINE_NUMBER'
282193                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
282194                                     ,p_token_2                 => 'LINE_TYPE_NAME'
282195                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
282196                                                                              l_component_type
282197                                                                             ,l_component_code
282198                                                                             ,l_component_type_code
282199                                                                             ,l_component_appl_id
282200                                                                             ,l_amb_context_code
282201                                                                             ,l_entity_code
282202                                                                             ,l_event_class_code
282203                                                                            )
282204                                     ,p_token_3                 => 'OWNER'
282205                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
282206                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
282207                                                                           ,p_lookup_code    => l_component_type_code
282208                                                                          )
282209                                     ,p_token_4                 => 'PRODUCT_NAME'
282210                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
282211                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
282212                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
282213                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
282214                                     ,p_ae_header_id            =>  NULL
282215                                        );
282216 
282217         IF (C_LEVEL_ERROR>= g_log_level) THEN
282218                  trace
282219                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
282220                       ,p_level    => C_LEVEL_ERROR
282221                       ,p_module   => l_log_module);
282222         END IF;
282223       END IF;
282224    END IF;
282225    --
282226    --
282227    ------------------------------------------------------------------------------------------------
282228    -- 4219869 Business Flow
282229    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
282230    -- Prior Entry.  Currently, the following code is always generated.
282231    ------------------------------------------------------------------------------------------------
282232    XLA_AE_LINES_PKG.ValidateCurrentLine;
282233 
282234    ------------------------------------------------------------------------------------
282235    -- 4219869 Business Flow
282236    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
282237    ------------------------------------------------------------------------------------
282238    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
282239 
282240    ----------------------------------------------------------------------------------
282241    -- 4219869 Business Flow
282242    -- Update journal entry status -- Need to generate this within IF <condition>
282243    ----------------------------------------------------------------------------------
282244    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
282245          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
282246          ,p_balance_type_code => l_balance_type_code
282247          );
282248 
282249    -------------------------------------------------------------------------------------------
282250    -- 4262811 - Generate the Accrual Reversal lines
282251    -------------------------------------------------------------------------------------------
282252    BEGIN
282253       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
282254                               (g_array_event(p_event_id).array_value_num('header_index'));
282255       IF l_acc_rev_flag IS NULL THEN
282256          l_acc_rev_flag := 'N';
282257       END IF;
282258    EXCEPTION
282259       WHEN OTHERS THEN
282260          l_acc_rev_flag := 'N';
282261    END;
282262    --
282263    IF (l_acc_rev_flag = 'Y') THEN
282264 
282265        -- 4645092  ------------------------------------------------------------------------------
282266        -- To allow MPA report to determine if it should generate report process
282267        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
282268        ------------------------------------------------------------------------------------------
282269 
282270        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
282271        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
282272    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
282273    -- call ADRs
282274    -- Bug 4922099
282275    --
282276    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
282277         (NVL(l_actual_upg_option, 'N') = 'O') OR
282278         (NVL(l_enc_upg_option, 'N') = 'O')
282279       )
282280    THEN
282281    NULL;
282282    --
282283    --
282284    
282285   l_ccid := AcctDerRule_6(
282286            p_application_id           => p_application_id
282287          , p_ae_header_id             => l_ae_header_id 
282288 , p_source_11 => p_source_11
282289          , x_transaction_coa_id       => l_adr_transaction_coa_id
282290          , x_accounting_coa_id        => l_adr_accounting_coa_id
282291          , x_value_type_code          => l_adr_value_type_code
282292          , p_side                     => 'NA'
282293    );
282294 
282295    xla_ae_lines_pkg.set_ccid(
282296     p_code_combination_id          => l_ccid
282297   , p_value_type_code              => l_adr_value_type_code
282298   , p_transaction_coa_id           => l_adr_transaction_coa_id
282299   , p_accounting_coa_id            => l_adr_accounting_coa_id
282300   , p_adr_code                     => 'CST_DEFAULT'
282301   , p_adr_type_code                => 'S'
282302   , p_component_type               => l_component_type
282303   , p_component_code               => l_component_code
282304   , p_component_type_code          => l_component_type_code
282305   , p_component_appl_id            => l_component_appl_id
282306   , p_amb_context_code             => l_amb_context_code
282307   , p_side                         => 'NA'
282308   );
282309 
282310 
282311    --
282312    --
282313    END IF;
282314 
282315        --
282316        -- Update the line information that should be overwritten
282317        --
282318        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
282319                                          p_header_num   => 1);
282320        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
282321 
282322        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
282323 
282324        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
282325           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
282326        END IF;
282327 
282328       --
282329       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
282330       --
282331       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
282332           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
282333       ELSE
282334           ---------------------------------------------------------------------------------------------------
282335           -- 4262811a Switch Sign
282336           ---------------------------------------------------------------------------------------------------
282337           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
282338           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
282339                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
282340           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
282341                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
282342           -- 5132302
282343           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
282344                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
282345 
282346       END IF;
282347 
282348       -- 4955764
282349       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
282350       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
282351 
282352 
282353       XLA_AE_LINES_PKG.ValidateCurrentLine;
282354       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
282355 
282356       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
282357                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
282358                ,p_balance_type_code => l_balance_type_code);
282359 
282360    END IF;
282361 
282362    -----------------------------------------------------------------------------------------
282363    -- 4262811 Multiperiod Accounting
282364    -----------------------------------------------------------------------------------------
282365      -- No MPA option is assigned.
282366 
282367 
282368 END IF;
282369 END IF;
282370 --
282371 
282372 --
282373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
282374    trace
282375       (p_msg      => 'END of AcctLineType_504'
282376       ,p_level    => C_LEVEL_PROCEDURE
282377       ,p_module   => l_log_module);
282378 END IF;
282379 --
282380 EXCEPTION
282381   WHEN xla_exceptions_pkg.application_exception THEN
282382       RAISE;
282383   WHEN OTHERS THEN
282384        xla_exceptions_pkg.raise_message
282385            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_504');
282386 END AcctLineType_504;
282387 --
282388 
282389 ---------------------------------------
282390 --
282391 -- PRIVATE FUNCTION
282392 --         AcctLineType_505
282393 --
282394 ---------------------------------------
282395 PROCEDURE AcctLineType_505 (
282396   p_application_id        IN NUMBER
282397  ,p_event_id              IN NUMBER
282398  ,p_calculate_acctd_flag  IN VARCHAR2
282399  ,p_calculate_g_l_flag    IN VARCHAR2
282400  ,p_actual_flag           IN OUT VARCHAR2
282401  ,p_balance_type_code     OUT VARCHAR2
282402  ,p_gain_or_loss_ref      OUT VARCHAR2
282403  
282404 --TRANSACTION_ID
282405  , p_source_1            IN NUMBER
282406 --Item Concatenated Segments
282407  , p_source_2            IN VARCHAR2
282408 --Transaction Quantity
282409  , p_source_3            IN NUMBER
282410 --Transaction Unit of Measure Code
282411  , p_source_4            IN VARCHAR2
282412 --Inventory Transaction Type Description
282413  , p_source_5            IN VARCHAR2
282414 --Cost Management Default Account
282415  , p_source_11            IN NUMBER
282416 --Applied to Application ID
282417  , p_source_79            IN NUMBER
282418 --Applied to Distribution Link Type
282419  , p_source_80            IN VARCHAR2
282420 --Applied to Entity Code
282421  , p_source_81            IN VARCHAR2
282422 --Applied To Purchase Document Identifier
282423  , p_source_83            IN NUMBER
282424 --DISTRIBUTION_IDENTIFIER
282425  , p_source_84            IN NUMBER
282426 --Distribution Type
282427  , p_source_85            IN VARCHAR2
282428  , p_source_85_meaning    IN VARCHAR2
282429 --PO Budget Account
282430  , p_source_86            IN NUMBER
282431 --Encumbrance Reversal Amount Entered
282432  , p_source_87            IN NUMBER
282433 --Entered Currency Code
282434  , p_source_88            IN VARCHAR2
282435 --Transaction Encumbrance Reversal Amount
282436  , p_source_89            IN NUMBER
282437 --Entered Amount
282438  , p_source_91            IN NUMBER
282439 --Currency Conversion Date
282440  , p_source_92            IN DATE
282441 --Currency Conversion Rate
282442  , p_source_93            IN NUMBER
282443 --Currency Conversion Type
282444  , p_source_94            IN VARCHAR2
282445 --Accounted Amount
282446  , p_source_95            IN NUMBER
282447 --Purchasing Encumbrance Type Identifier
282448  , p_source_96            IN NUMBER
282449 --Accounting Line Type
282450  , p_source_97            IN NUMBER
282451 --Costing Encumbrance Upgrade Option
282452  , p_source_100            IN VARCHAR2
282453 --TXN_PO_DISTRIBUTION_ID
282454  , p_source_101            IN NUMBER
282455 )
282456 IS
282457 
282458 l_component_type              VARCHAR2(80);
282459 l_component_code              VARCHAR2(30);
282460 l_component_type_code         VARCHAR2(1);
282461 l_component_appl_id           INTEGER;
282462 l_amb_context_code            VARCHAR2(30);
282463 l_entity_code                 VARCHAR2(30);
282464 l_event_class_code            VARCHAR2(30);
282465 l_ae_header_id                NUMBER;
282466 l_event_type_code             VARCHAR2(30);
282467 l_line_definition_code        VARCHAR2(30);
282468 l_line_definition_owner_code  VARCHAR2(1);
282469 --
282470 -- adr variables
282471 l_segment                     VARCHAR2(30);
282472 l_ccid                        NUMBER;
282473 l_adr_transaction_coa_id      NUMBER;
282474 l_adr_accounting_coa_id       NUMBER;
282475 l_adr_flexfield_segment_code  VARCHAR2(30);
282476 l_adr_flex_value_set_id       NUMBER;
282477 l_adr_value_type_code         VARCHAR2(30);
282478 l_adr_value_combination_id    NUMBER;
282479 l_adr_value_segment_code      VARCHAR2(30);
282480 
282481 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
282482 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
282483 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
282484 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
282485 
282486 -- 4262811 Variables ------------------------------------------------------------------------------------------
282487 l_entered_amt_idx             NUMBER;
282488 l_accted_amt_idx              NUMBER;
282489 l_acc_rev_flag                VARCHAR2(1);
282490 l_accrual_line_num            NUMBER;
282491 l_tmp_amt                     NUMBER;
282492 l_acc_rev_natural_side_code   VARCHAR2(1);
282493 
282494 l_num_entries                 NUMBER;
282495 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
282496 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
282497 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
282498 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
282499 l_recog_line_1                NUMBER;
282500 l_recog_line_2                NUMBER;
282501 
282502 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
282503 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
282504 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
282505 
282506 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
282507 
282508 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
282509 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
282510 
282511 ---------------------------------------------------------------------------------------------------------------
282512 
282513 
282514 --
282515 -- bulk performance
282516 --
282517 l_balance_type_code           VARCHAR2(1);
282518 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
282519 l_log_module                  VARCHAR2(240);
282520 
282521 --
282522 -- Upgrade strategy
282523 --
282524 l_actual_upg_option           VARCHAR2(1);
282525 l_enc_upg_option           VARCHAR2(1);
282526 
282527 --
282528 BEGIN
282529 --
282530 IF g_log_enabled THEN
282531       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_505';
282532 END IF;
282533 --
282534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
282535 
282536       trace
282537          (p_msg      => 'BEGIN of AcctLineType_505'
282538          ,p_level    => C_LEVEL_PROCEDURE
282539          ,p_module   => l_log_module);
282540 
282541 END IF;
282542 --
282543 l_component_type             := 'AMB_JLT';
282544 l_component_code             := 'RECEIVING_INSPECTION';
282545 l_component_type_code        := 'S';
282546 l_component_appl_id          :=  707;
282547 l_amb_context_code           := 'DEFAULT';
282548 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
282549 l_event_class_code           := 'PURCHASE_ORDER';
282550 l_event_type_code            := 'LOG_RET_RI_INV';
282551 l_line_definition_owner_code := 'S';
282552 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
282553 --
282554 l_balance_type_code          := 'A';
282555 l_segment                     := NULL;
282556 l_ccid                        := NULL;
282557 l_adr_transaction_coa_id      := NULL;
282558 l_adr_accounting_coa_id       := NULL;
282559 l_adr_flexfield_segment_code  := NULL;
282560 l_adr_flex_value_set_id       := NULL;
282561 l_adr_value_type_code         := NULL;
282562 l_adr_value_combination_id    := NULL;
282563 l_adr_value_segment_code      := NULL;
282564 
282565 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
282566 l_bflow_class_code           := '';    -- 4219869 Business Flow
282567 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
282568 l_budgetary_control_flag     := 'N';
282569 
282570 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
282571 l_bflow_applied_to_amt       := NULL; -- 5132302
282572 l_entered_amt_idx            := NULL;          -- 4262811
282573 l_accted_amt_idx             := NULL;          -- 4262811
282574 l_acc_rev_flag               := NULL;          -- 4262811
282575 l_accrual_line_num           := NULL;          -- 4262811
282576 l_tmp_amt                    := NULL;          -- 4262811
282577 --
282578  
282579 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
282580     l_balance_type_code <> 'B' THEN
282581 IF NVL(p_source_97,9E125) =  5
282582  THEN 
282583 
282584    --
282585    XLA_AE_LINES_PKG.SetNewLine;
282586 
282587    p_balance_type_code          := l_balance_type_code;
282588    -- set the flag so later we will know whether the gain loss line needs to be created
282589    
282590    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
282591      p_actual_flag :='A';
282592    END IF;
282593 
282594    --
282595    -- bulk performance
282596    --
282597    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
282598                                       p_header_num   => 0); -- 4262811
282599    --
282600    -- set accounting line options
282601    --
282602    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
282603            p_natural_side_code          => 'D'
282604          , p_gain_or_loss_flag          => 'N'
282605          , p_gl_transfer_mode_code      => 'S'
282606          , p_acct_entry_type_code       => 'A'
282607          , p_switch_side_flag           => 'Y'
282608          , p_merge_duplicate_code       => 'N'
282609          );
282610    --
282611    l_acc_rev_natural_side_code := 'C';  -- 4262811
282612    -- 
282613    --
282614    -- set accounting line type info
282615    --
282616    xla_ae_lines_pkg.SetAcctLineType
282617       (p_component_type             => l_component_type
282618       ,p_event_type_code            => l_event_type_code
282619       ,p_line_definition_owner_code => l_line_definition_owner_code
282620       ,p_line_definition_code       => l_line_definition_code
282621       ,p_accounting_line_code       => l_component_code
282622       ,p_accounting_line_type_code  => l_component_type_code
282623       ,p_accounting_line_appl_id    => l_component_appl_id
282624       ,p_amb_context_code           => l_amb_context_code
282625       ,p_entity_code                => l_entity_code
282626       ,p_event_class_code           => l_event_class_code);
282627    --
282628    -- set accounting class
282629    --
282630    xla_ae_lines_pkg.SetAcctClass(
282631            p_accounting_class_code  => 'RECEIVING_INSPECTION'
282632          , p_ae_header_id           => l_ae_header_id
282633          );
282634 
282635    --
282636    -- set rounding class
282637    --
282638    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
282639                       'RECEIVING_INSPECTION';
282640 
282641    --
282642    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
282643    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
282644    --
282645    -- bulk performance
282646    --
282647    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
282648 
282649    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
282650       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
282651 
282652    -- 4955764
282653    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
282654       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
282655 
282656    -- 4458381 Public Sector Enh
282657    
282658    --
282659    -- set accounting attributes for the line type
282660    --
282661    l_entered_amt_idx := 17;
282662    l_accted_amt_idx  := 22;
282663    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
282664    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
282665    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
282666    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
282667    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
282668    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
282669    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
282670    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
282671    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
282672    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
282673    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
282674    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
282675    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
282676    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
282677    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
282678    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
282679    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
282680    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
282681    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
282682    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
282683    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
282684    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
282685    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
282686    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
282687    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
282688    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
282689    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
282690    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
282691    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
282692    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
282693    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
282694    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
282695    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
282696    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
282697    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
282698    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
282699    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
282700    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
282701    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
282702    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
282703    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
282704    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
282705    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
282706    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
282707    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
282708    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
282709    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
282710    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
282711    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
282712 
282713    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
282714    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
282715 
282716    ---------------------------------------------------------------------------------------------------------------
282717    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
282718    ---------------------------------------------------------------------------------------------------------------
282719    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
282720 
282721    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
282722    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
282723 
282724    IF xla_accounting_cache_pkg.GetValueChar
282725          (p_source_code         => 'LEDGER_CATEGORY_CODE'
282726          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
282727    AND l_bflow_method_code = 'PRIOR_ENTRY'
282728 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
282729    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
282730          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
282731        )
282732    THEN
282733          xla_ae_lines_pkg.BflowUpgEntry
282734            (p_business_method_code    => l_bflow_method_code
282735            ,p_business_class_code     => l_bflow_class_code
282736            ,p_balance_type            => l_balance_type_code);
282737    ELSE
282738       NULL;
282739 -- No business flow processing for business flow method of NONE.
282740    END IF;
282741 
282742    --
282743    -- call analytical criteria
282744    --
282745    
282746    --
282747    -- call description
282748    --
282749    
282750 xla_ae_lines_pkg.SetLineDescription(
282751    p_ae_header_id => l_ae_header_id
282752   ,p_description  => Description_1 (
282753      p_application_id         => p_application_id
282754    , p_ae_header_id           => l_ae_header_id 
282755 , p_source_1 => p_source_1
282756 , p_source_2 => p_source_2
282757 , p_source_3 => p_source_3
282758 , p_source_4 => p_source_4
282759 , p_source_5 => p_source_5
282760    )
282761 );
282762 
282763 
282764    --
282765    -- call ADRs
282766    -- Bug 4922099
282767    --
282768    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
282769         (NVL(l_actual_upg_option, 'N') = 'O') OR
282770         (NVL(l_enc_upg_option, 'N') = 'O')
282771       )
282772    THEN
282773    NULL;
282774    --
282775    --
282776    
282777   l_ccid := AcctDerRule_6(
282778            p_application_id           => p_application_id
282779          , p_ae_header_id             => l_ae_header_id 
282780 , p_source_11 => p_source_11
282781          , x_transaction_coa_id       => l_adr_transaction_coa_id
282782          , x_accounting_coa_id        => l_adr_accounting_coa_id
282783          , x_value_type_code          => l_adr_value_type_code
282784          , p_side                     => 'NA'
282785    );
282786 
282787    xla_ae_lines_pkg.set_ccid(
282788     p_code_combination_id          => l_ccid
282789   , p_value_type_code              => l_adr_value_type_code
282790   , p_transaction_coa_id           => l_adr_transaction_coa_id
282791   , p_accounting_coa_id            => l_adr_accounting_coa_id
282792   , p_adr_code                     => 'CST_DEFAULT'
282793   , p_adr_type_code                => 'S'
282794   , p_component_type               => l_component_type
282795   , p_component_code               => l_component_code
282796   , p_component_type_code          => l_component_type_code
282797   , p_component_appl_id            => l_component_appl_id
282798   , p_amb_context_code             => l_amb_context_code
282799   , p_side                         => 'NA'
282800   );
282801 
282802 
282803    --
282804    --
282805    END IF;
282806    --
282807    -- Bug 4922099
282808    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
282809           (NVL(l_enc_upg_option, 'N') = 'O')
282810         ) AND
282811         (l_bflow_method_code = 'PRIOR_ENTRY')
282812       )
282813    THEN
282814       IF
282815       --
282816       1 = 2
282817       --
282818       THEN
282819       xla_accounting_err_pkg.build_message
282820                                     (p_appli_s_name            => 'XLA'
282821                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
282822                                     ,p_token_1                 => 'LINE_NUMBER'
282823                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
282824                                     ,p_token_2                 => 'LINE_TYPE_NAME'
282825                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
282826                                                                              l_component_type
282827                                                                             ,l_component_code
282828                                                                             ,l_component_type_code
282829                                                                             ,l_component_appl_id
282830                                                                             ,l_amb_context_code
282831                                                                             ,l_entity_code
282832                                                                             ,l_event_class_code
282833                                                                            )
282834                                     ,p_token_3                 => 'OWNER'
282835                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
282836                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
282837                                                                           ,p_lookup_code    => l_component_type_code
282838                                                                          )
282839                                     ,p_token_4                 => 'PRODUCT_NAME'
282840                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
282841                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
282842                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
282843                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
282844                                     ,p_ae_header_id            =>  NULL
282845                                        );
282846 
282847         IF (C_LEVEL_ERROR>= g_log_level) THEN
282848                  trace
282849                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
282850                       ,p_level    => C_LEVEL_ERROR
282851                       ,p_module   => l_log_module);
282852         END IF;
282853       END IF;
282854    END IF;
282855    --
282856    --
282857    ------------------------------------------------------------------------------------------------
282858    -- 4219869 Business Flow
282859    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
282860    -- Prior Entry.  Currently, the following code is always generated.
282861    ------------------------------------------------------------------------------------------------
282862    XLA_AE_LINES_PKG.ValidateCurrentLine;
282863 
282864    ------------------------------------------------------------------------------------
282865    -- 4219869 Business Flow
282866    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
282867    ------------------------------------------------------------------------------------
282868    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
282869 
282870    ----------------------------------------------------------------------------------
282871    -- 4219869 Business Flow
282872    -- Update journal entry status -- Need to generate this within IF <condition>
282873    ----------------------------------------------------------------------------------
282874    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
282875          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
282876          ,p_balance_type_code => l_balance_type_code
282877          );
282878 
282879    -------------------------------------------------------------------------------------------
282880    -- 4262811 - Generate the Accrual Reversal lines
282881    -------------------------------------------------------------------------------------------
282882    BEGIN
282883       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
282884                               (g_array_event(p_event_id).array_value_num('header_index'));
282885       IF l_acc_rev_flag IS NULL THEN
282886          l_acc_rev_flag := 'N';
282887       END IF;
282888    EXCEPTION
282889       WHEN OTHERS THEN
282890          l_acc_rev_flag := 'N';
282891    END;
282892    --
282893    IF (l_acc_rev_flag = 'Y') THEN
282894 
282895        -- 4645092  ------------------------------------------------------------------------------
282896        -- To allow MPA report to determine if it should generate report process
282897        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
282898        ------------------------------------------------------------------------------------------
282899 
282900        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
282901        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
282902    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
282903    -- call ADRs
282904    -- Bug 4922099
282905    --
282906    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
282907         (NVL(l_actual_upg_option, 'N') = 'O') OR
282908         (NVL(l_enc_upg_option, 'N') = 'O')
282909       )
282910    THEN
282911    NULL;
282912    --
282913    --
282914    
282915   l_ccid := AcctDerRule_6(
282916            p_application_id           => p_application_id
282917          , p_ae_header_id             => l_ae_header_id 
282918 , p_source_11 => p_source_11
282919          , x_transaction_coa_id       => l_adr_transaction_coa_id
282920          , x_accounting_coa_id        => l_adr_accounting_coa_id
282921          , x_value_type_code          => l_adr_value_type_code
282922          , p_side                     => 'NA'
282923    );
282924 
282925    xla_ae_lines_pkg.set_ccid(
282926     p_code_combination_id          => l_ccid
282927   , p_value_type_code              => l_adr_value_type_code
282928   , p_transaction_coa_id           => l_adr_transaction_coa_id
282929   , p_accounting_coa_id            => l_adr_accounting_coa_id
282930   , p_adr_code                     => 'CST_DEFAULT'
282931   , p_adr_type_code                => 'S'
282932   , p_component_type               => l_component_type
282933   , p_component_code               => l_component_code
282934   , p_component_type_code          => l_component_type_code
282935   , p_component_appl_id            => l_component_appl_id
282936   , p_amb_context_code             => l_amb_context_code
282937   , p_side                         => 'NA'
282938   );
282939 
282940 
282941    --
282942    --
282943    END IF;
282944 
282945        --
282946        -- Update the line information that should be overwritten
282947        --
282948        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
282949                                          p_header_num   => 1);
282950        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
282951 
282952        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
282953 
282954        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
282955           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
282956        END IF;
282957 
282958       --
282959       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
282960       --
282961       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
282962           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
282963       ELSE
282964           ---------------------------------------------------------------------------------------------------
282965           -- 4262811a Switch Sign
282966           ---------------------------------------------------------------------------------------------------
282967           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
282968           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
282969                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
282970           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
282971                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
282972           -- 5132302
282973           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
282974                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
282975 
282976       END IF;
282977 
282978       -- 4955764
282979       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
282980       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
282981 
282982 
282983       XLA_AE_LINES_PKG.ValidateCurrentLine;
282984       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
282985 
282986       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
282987                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
282988                ,p_balance_type_code => l_balance_type_code);
282989 
282990    END IF;
282991 
282992    -----------------------------------------------------------------------------------------
282993    -- 4262811 Multiperiod Accounting
282994    -----------------------------------------------------------------------------------------
282995      -- No MPA option is assigned.
282996 
282997 
282998 END IF;
282999 END IF;
283000 --
283001 
283002 --
283003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
283004    trace
283005       (p_msg      => 'END of AcctLineType_505'
283006       ,p_level    => C_LEVEL_PROCEDURE
283007       ,p_module   => l_log_module);
283008 END IF;
283009 --
283010 EXCEPTION
283011   WHEN xla_exceptions_pkg.application_exception THEN
283012       RAISE;
283013   WHEN OTHERS THEN
283014        xla_exceptions_pkg.raise_message
283015            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_505');
283016 END AcctLineType_505;
283017 --
283018 
283019 ---------------------------------------
283020 --
283021 -- PRIVATE FUNCTION
283022 --         AcctLineType_506
283023 --
283024 ---------------------------------------
283025 PROCEDURE AcctLineType_506 (
283026   p_application_id        IN NUMBER
283027  ,p_event_id              IN NUMBER
283028  ,p_calculate_acctd_flag  IN VARCHAR2
283029  ,p_calculate_g_l_flag    IN VARCHAR2
283030  ,p_actual_flag           IN OUT VARCHAR2
283031  ,p_balance_type_code     OUT VARCHAR2
283032  ,p_gain_or_loss_ref      OUT VARCHAR2
283033  
283034 --Cost Management Default Account
283035  , p_source_11            IN NUMBER
283036 --Receiving Accounting Line Type
283037  , p_source_78            IN VARCHAR2
283038 --DISTRIBUTION_IDENTIFIER
283039  , p_source_84            IN NUMBER
283040 --Distribution Type
283041  , p_source_85            IN VARCHAR2
283042  , p_source_85_meaning    IN VARCHAR2
283043 --Entered Currency Code
283044  , p_source_88            IN VARCHAR2
283045 --Entered Amount
283046  , p_source_91            IN NUMBER
283047 --Currency Conversion Date
283048  , p_source_92            IN DATE
283049 --Currency Conversion Rate
283050  , p_source_93            IN NUMBER
283051 --Accounted Amount
283052  , p_source_95            IN NUMBER
283053 )
283054 IS
283055 
283056 l_component_type              VARCHAR2(80);
283057 l_component_code              VARCHAR2(30);
283058 l_component_type_code         VARCHAR2(1);
283059 l_component_appl_id           INTEGER;
283060 l_amb_context_code            VARCHAR2(30);
283061 l_entity_code                 VARCHAR2(30);
283062 l_event_class_code            VARCHAR2(30);
283063 l_ae_header_id                NUMBER;
283064 l_event_type_code             VARCHAR2(30);
283065 l_line_definition_code        VARCHAR2(30);
283066 l_line_definition_owner_code  VARCHAR2(1);
283067 --
283068 -- adr variables
283069 l_segment                     VARCHAR2(30);
283070 l_ccid                        NUMBER;
283071 l_adr_transaction_coa_id      NUMBER;
283072 l_adr_accounting_coa_id       NUMBER;
283073 l_adr_flexfield_segment_code  VARCHAR2(30);
283074 l_adr_flex_value_set_id       NUMBER;
283075 l_adr_value_type_code         VARCHAR2(30);
283076 l_adr_value_combination_id    NUMBER;
283077 l_adr_value_segment_code      VARCHAR2(30);
283078 
283079 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
283080 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
283081 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
283082 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
283083 
283084 -- 4262811 Variables ------------------------------------------------------------------------------------------
283085 l_entered_amt_idx             NUMBER;
283086 l_accted_amt_idx              NUMBER;
283087 l_acc_rev_flag                VARCHAR2(1);
283088 l_accrual_line_num            NUMBER;
283089 l_tmp_amt                     NUMBER;
283090 l_acc_rev_natural_side_code   VARCHAR2(1);
283091 
283092 l_num_entries                 NUMBER;
283093 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
283094 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
283095 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
283096 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
283097 l_recog_line_1                NUMBER;
283098 l_recog_line_2                NUMBER;
283099 
283100 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
283101 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
283102 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
283103 
283104 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
283105 
283106 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
283107 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
283108 
283109 ---------------------------------------------------------------------------------------------------------------
283110 
283111 
283112 --
283113 -- bulk performance
283114 --
283115 l_balance_type_code           VARCHAR2(1);
283116 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
283117 l_log_module                  VARCHAR2(240);
283118 
283119 --
283120 -- Upgrade strategy
283121 --
283122 l_actual_upg_option           VARCHAR2(1);
283123 l_enc_upg_option           VARCHAR2(1);
283124 
283125 --
283126 BEGIN
283127 --
283128 IF g_log_enabled THEN
283129       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_506';
283130 END IF;
283131 --
283132 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
283133 
283134       trace
283135          (p_msg      => 'BEGIN of AcctLineType_506'
283136          ,p_level    => C_LEVEL_PROCEDURE
283137          ,p_module   => l_log_module);
283138 
283139 END IF;
283140 --
283141 l_component_type             := 'AMB_JLT';
283142 l_component_code             := 'RECEIVING_INSPECTION';
283143 l_component_type_code        := 'S';
283144 l_component_appl_id          :=  707;
283145 l_amb_context_code           := 'DEFAULT';
283146 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
283147 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
283148 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
283149 l_line_definition_owner_code := 'S';
283150 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
283151 --
283152 l_balance_type_code          := 'A';
283153 l_segment                     := NULL;
283154 l_ccid                        := NULL;
283155 l_adr_transaction_coa_id      := NULL;
283156 l_adr_accounting_coa_id       := NULL;
283157 l_adr_flexfield_segment_code  := NULL;
283158 l_adr_flex_value_set_id       := NULL;
283159 l_adr_value_type_code         := NULL;
283160 l_adr_value_combination_id    := NULL;
283161 l_adr_value_segment_code      := NULL;
283162 
283163 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
283164 l_bflow_class_code           := '';    -- 4219869 Business Flow
283165 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
283166 l_budgetary_control_flag     := 'N';
283167 
283168 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
283169 l_bflow_applied_to_amt       := NULL; -- 5132302
283170 l_entered_amt_idx            := NULL;          -- 4262811
283171 l_accted_amt_idx             := NULL;          -- 4262811
283172 l_acc_rev_flag               := NULL;          -- 4262811
283173 l_accrual_line_num           := NULL;          -- 4262811
283174 l_tmp_amt                    := NULL;          -- 4262811
283175 --
283176  
283177 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
283178     l_balance_type_code <> 'B' THEN
283179 IF NVL(p_source_78,'
283180 ') =  'Receiving Inspection'
283181  THEN 
283182 
283183    --
283184    XLA_AE_LINES_PKG.SetNewLine;
283185 
283186    p_balance_type_code          := l_balance_type_code;
283187    -- set the flag so later we will know whether the gain loss line needs to be created
283188    
283189    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
283190      p_actual_flag :='A';
283191    END IF;
283192 
283193    --
283194    -- bulk performance
283195    --
283196    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
283197                                       p_header_num   => 0); -- 4262811
283198    --
283199    -- set accounting line options
283200    --
283201    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
283202            p_natural_side_code          => 'D'
283203          , p_gain_or_loss_flag          => 'N'
283204          , p_gl_transfer_mode_code      => 'S'
283205          , p_acct_entry_type_code       => 'A'
283206          , p_switch_side_flag           => 'Y'
283207          , p_merge_duplicate_code       => 'N'
283208          );
283209    --
283210    l_acc_rev_natural_side_code := 'C';  -- 4262811
283211    -- 
283212    --
283213    -- set accounting line type info
283214    --
283215    xla_ae_lines_pkg.SetAcctLineType
283216       (p_component_type             => l_component_type
283217       ,p_event_type_code            => l_event_type_code
283218       ,p_line_definition_owner_code => l_line_definition_owner_code
283219       ,p_line_definition_code       => l_line_definition_code
283220       ,p_accounting_line_code       => l_component_code
283221       ,p_accounting_line_type_code  => l_component_type_code
283222       ,p_accounting_line_appl_id    => l_component_appl_id
283223       ,p_amb_context_code           => l_amb_context_code
283224       ,p_entity_code                => l_entity_code
283225       ,p_event_class_code           => l_event_class_code);
283226    --
283227    -- set accounting class
283228    --
283229    xla_ae_lines_pkg.SetAcctClass(
283230            p_accounting_class_code  => 'RECEIVING_INSPECTION'
283231          , p_ae_header_id           => l_ae_header_id
283232          );
283233 
283234    --
283235    -- set rounding class
283236    --
283237    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
283238                       'RECEIVING_INSPECTION';
283239 
283240    --
283241    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
283242    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
283243    --
283244    -- bulk performance
283245    --
283246    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
283247 
283248    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
283249       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
283250 
283251    -- 4955764
283252    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
283253       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
283254 
283255    -- 4458381 Public Sector Enh
283256    
283257    --
283258    -- set accounting attributes for the line type
283259    --
283260    l_entered_amt_idx := 3;
283261    l_accted_amt_idx  := 8;
283262    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
283263    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
283264    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
283265    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
283266    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
283267    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
283268    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
283269    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
283270    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
283271    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
283272    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
283273    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
283274    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
283275    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
283276    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
283277    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
283278    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
283279 
283280    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
283281    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
283282 
283283    ---------------------------------------------------------------------------------------------------------------
283284    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
283285    ---------------------------------------------------------------------------------------------------------------
283286    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
283287 
283288    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
283289    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
283290 
283291    IF xla_accounting_cache_pkg.GetValueChar
283292          (p_source_code         => 'LEDGER_CATEGORY_CODE'
283293          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
283294    AND l_bflow_method_code = 'PRIOR_ENTRY'
283295 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
283296    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
283297          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
283298        )
283299    THEN
283300          xla_ae_lines_pkg.BflowUpgEntry
283301            (p_business_method_code    => l_bflow_method_code
283302            ,p_business_class_code     => l_bflow_class_code
283303            ,p_balance_type            => l_balance_type_code);
283304    ELSE
283305       NULL;
283306 -- No business flow processing for business flow method of NONE.
283307    END IF;
283308 
283309    --
283310    -- call analytical criteria
283311    --
283312    
283313    --
283314    -- call description
283315    --
283316    -- No description or it is inherited.
283317    --
283318    -- call ADRs
283319    -- Bug 4922099
283320    --
283321    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
283322         (NVL(l_actual_upg_option, 'N') = 'O') OR
283323         (NVL(l_enc_upg_option, 'N') = 'O')
283324       )
283325    THEN
283326    NULL;
283327    --
283328    --
283329    
283330   l_ccid := AcctDerRule_6(
283331            p_application_id           => p_application_id
283332          , p_ae_header_id             => l_ae_header_id 
283333 , p_source_11 => p_source_11
283334          , x_transaction_coa_id       => l_adr_transaction_coa_id
283335          , x_accounting_coa_id        => l_adr_accounting_coa_id
283336          , x_value_type_code          => l_adr_value_type_code
283337          , p_side                     => 'NA'
283338    );
283339 
283340    xla_ae_lines_pkg.set_ccid(
283341     p_code_combination_id          => l_ccid
283342   , p_value_type_code              => l_adr_value_type_code
283343   , p_transaction_coa_id           => l_adr_transaction_coa_id
283344   , p_accounting_coa_id            => l_adr_accounting_coa_id
283345   , p_adr_code                     => 'CST_DEFAULT'
283346   , p_adr_type_code                => 'S'
283347   , p_component_type               => l_component_type
283348   , p_component_code               => l_component_code
283349   , p_component_type_code          => l_component_type_code
283350   , p_component_appl_id            => l_component_appl_id
283351   , p_amb_context_code             => l_amb_context_code
283352   , p_side                         => 'NA'
283353   );
283354 
283355 
283356    --
283357    --
283358    END IF;
283359    --
283360    -- Bug 4922099
283361    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
283362           (NVL(l_enc_upg_option, 'N') = 'O')
283363         ) AND
283364         (l_bflow_method_code = 'PRIOR_ENTRY')
283365       )
283366    THEN
283367       IF
283368       --
283369       1 = 2
283370       --
283371       THEN
283372       xla_accounting_err_pkg.build_message
283373                                     (p_appli_s_name            => 'XLA'
283374                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
283375                                     ,p_token_1                 => 'LINE_NUMBER'
283376                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
283377                                     ,p_token_2                 => 'LINE_TYPE_NAME'
283378                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
283379                                                                              l_component_type
283380                                                                             ,l_component_code
283381                                                                             ,l_component_type_code
283382                                                                             ,l_component_appl_id
283383                                                                             ,l_amb_context_code
283384                                                                             ,l_entity_code
283385                                                                             ,l_event_class_code
283386                                                                            )
283387                                     ,p_token_3                 => 'OWNER'
283388                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
283389                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
283390                                                                           ,p_lookup_code    => l_component_type_code
283391                                                                          )
283392                                     ,p_token_4                 => 'PRODUCT_NAME'
283393                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
283394                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
283395                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
283396                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
283397                                     ,p_ae_header_id            =>  NULL
283398                                        );
283399 
283400         IF (C_LEVEL_ERROR>= g_log_level) THEN
283401                  trace
283402                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
283403                       ,p_level    => C_LEVEL_ERROR
283404                       ,p_module   => l_log_module);
283405         END IF;
283406       END IF;
283407    END IF;
283408    --
283409    --
283410    ------------------------------------------------------------------------------------------------
283411    -- 4219869 Business Flow
283412    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
283413    -- Prior Entry.  Currently, the following code is always generated.
283414    ------------------------------------------------------------------------------------------------
283415    XLA_AE_LINES_PKG.ValidateCurrentLine;
283416 
283417    ------------------------------------------------------------------------------------
283418    -- 4219869 Business Flow
283419    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
283420    ------------------------------------------------------------------------------------
283421    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
283422 
283423    ----------------------------------------------------------------------------------
283424    -- 4219869 Business Flow
283425    -- Update journal entry status -- Need to generate this within IF <condition>
283426    ----------------------------------------------------------------------------------
283427    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
283428          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
283429          ,p_balance_type_code => l_balance_type_code
283430          );
283431 
283432    -------------------------------------------------------------------------------------------
283433    -- 4262811 - Generate the Accrual Reversal lines
283434    -------------------------------------------------------------------------------------------
283435    BEGIN
283436       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
283437                               (g_array_event(p_event_id).array_value_num('header_index'));
283438       IF l_acc_rev_flag IS NULL THEN
283439          l_acc_rev_flag := 'N';
283440       END IF;
283441    EXCEPTION
283442       WHEN OTHERS THEN
283443          l_acc_rev_flag := 'N';
283444    END;
283445    --
283446    IF (l_acc_rev_flag = 'Y') THEN
283447 
283448        -- 4645092  ------------------------------------------------------------------------------
283449        -- To allow MPA report to determine if it should generate report process
283450        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
283451        ------------------------------------------------------------------------------------------
283452 
283453        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
283454        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
283455    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
283456    -- call ADRs
283457    -- Bug 4922099
283458    --
283459    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
283460         (NVL(l_actual_upg_option, 'N') = 'O') OR
283461         (NVL(l_enc_upg_option, 'N') = 'O')
283462       )
283463    THEN
283464    NULL;
283465    --
283466    --
283467    
283468   l_ccid := AcctDerRule_6(
283469            p_application_id           => p_application_id
283470          , p_ae_header_id             => l_ae_header_id 
283471 , p_source_11 => p_source_11
283472          , x_transaction_coa_id       => l_adr_transaction_coa_id
283473          , x_accounting_coa_id        => l_adr_accounting_coa_id
283474          , x_value_type_code          => l_adr_value_type_code
283475          , p_side                     => 'NA'
283476    );
283477 
283478    xla_ae_lines_pkg.set_ccid(
283479     p_code_combination_id          => l_ccid
283480   , p_value_type_code              => l_adr_value_type_code
283481   , p_transaction_coa_id           => l_adr_transaction_coa_id
283482   , p_accounting_coa_id            => l_adr_accounting_coa_id
283483   , p_adr_code                     => 'CST_DEFAULT'
283484   , p_adr_type_code                => 'S'
283485   , p_component_type               => l_component_type
283486   , p_component_code               => l_component_code
283487   , p_component_type_code          => l_component_type_code
283488   , p_component_appl_id            => l_component_appl_id
283489   , p_amb_context_code             => l_amb_context_code
283490   , p_side                         => 'NA'
283491   );
283492 
283493 
283494    --
283495    --
283496    END IF;
283497 
283498        --
283499        -- Update the line information that should be overwritten
283500        --
283501        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
283502                                          p_header_num   => 1);
283503        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
283504 
283505        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
283506 
283507        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
283508           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
283509        END IF;
283510 
283511       --
283512       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
283513       --
283514       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
283515           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
283516       ELSE
283517           ---------------------------------------------------------------------------------------------------
283518           -- 4262811a Switch Sign
283519           ---------------------------------------------------------------------------------------------------
283520           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
283521           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
283522                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
283523           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
283524                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
283525           -- 5132302
283526           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
283527                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
283528 
283529       END IF;
283530 
283531       -- 4955764
283532       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
283533       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
283534 
283535 
283536       XLA_AE_LINES_PKG.ValidateCurrentLine;
283537       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
283538 
283539       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
283540                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
283541                ,p_balance_type_code => l_balance_type_code);
283542 
283543    END IF;
283544 
283545    -----------------------------------------------------------------------------------------
283546    -- 4262811 Multiperiod Accounting
283547    -----------------------------------------------------------------------------------------
283548      -- No MPA option is assigned.
283549 
283550 
283551 END IF;
283552 END IF;
283553 --
283554 
283555 --
283556 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
283557    trace
283558       (p_msg      => 'END of AcctLineType_506'
283559       ,p_level    => C_LEVEL_PROCEDURE
283560       ,p_module   => l_log_module);
283561 END IF;
283562 --
283563 EXCEPTION
283564   WHEN xla_exceptions_pkg.application_exception THEN
283565       RAISE;
283566   WHEN OTHERS THEN
283567        xla_exceptions_pkg.raise_message
283568            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_506');
283569 END AcctLineType_506;
283570 --
283571 
283572 ---------------------------------------
283573 --
283574 -- PRIVATE FUNCTION
283575 --         AcctLineType_507
283576 --
283577 ---------------------------------------
283578 PROCEDURE AcctLineType_507 (
283579   p_application_id        IN NUMBER
283580  ,p_event_id              IN NUMBER
283581  ,p_calculate_acctd_flag  IN VARCHAR2
283582  ,p_calculate_g_l_flag    IN VARCHAR2
283583  ,p_actual_flag           IN OUT VARCHAR2
283584  ,p_balance_type_code     OUT VARCHAR2
283585  ,p_gain_or_loss_ref      OUT VARCHAR2
283586  
283587 --TRANSACTION_ID
283588  , p_source_1            IN NUMBER
283589 --Item Concatenated Segments
283590  , p_source_2            IN VARCHAR2
283591 --Transaction Quantity
283592  , p_source_3            IN NUMBER
283593 --Transaction Unit of Measure Code
283594  , p_source_4            IN VARCHAR2
283595 --Inventory Transaction Type Description
283596  , p_source_5            IN VARCHAR2
283597 --Cost Management Default Account
283598  , p_source_11            IN NUMBER
283599 --Applied to Application ID
283600  , p_source_79            IN NUMBER
283601 --Applied to Distribution Link Type
283602  , p_source_80            IN VARCHAR2
283603 --Applied to Entity Code
283604  , p_source_81            IN VARCHAR2
283605 --Applied To Purchase Document Identifier
283606  , p_source_83            IN NUMBER
283607 --DISTRIBUTION_IDENTIFIER
283608  , p_source_84            IN NUMBER
283609 --Distribution Type
283610  , p_source_85            IN VARCHAR2
283611  , p_source_85_meaning    IN VARCHAR2
283612 --PO Budget Account
283613  , p_source_86            IN NUMBER
283614 --Encumbrance Reversal Amount Entered
283615  , p_source_87            IN NUMBER
283616 --Entered Currency Code
283617  , p_source_88            IN VARCHAR2
283618 --Transaction Encumbrance Reversal Amount
283619  , p_source_89            IN NUMBER
283620 --Entered Amount
283621  , p_source_91            IN NUMBER
283622 --Currency Conversion Date
283623  , p_source_92            IN DATE
283624 --Currency Conversion Rate
283625  , p_source_93            IN NUMBER
283626 --Currency Conversion Type
283627  , p_source_94            IN VARCHAR2
283628 --Accounted Amount
283629  , p_source_95            IN NUMBER
283630 --Purchasing Encumbrance Type Identifier
283631  , p_source_96            IN NUMBER
283632 --Accounting Line Type
283633  , p_source_97            IN NUMBER
283634 --Costing Encumbrance Upgrade Option
283635  , p_source_100            IN VARCHAR2
283636 --TXN_PO_DISTRIBUTION_ID
283637  , p_source_101            IN NUMBER
283638 )
283639 IS
283640 
283641 l_component_type              VARCHAR2(80);
283642 l_component_code              VARCHAR2(30);
283643 l_component_type_code         VARCHAR2(1);
283644 l_component_appl_id           INTEGER;
283645 l_amb_context_code            VARCHAR2(30);
283646 l_entity_code                 VARCHAR2(30);
283647 l_event_class_code            VARCHAR2(30);
283648 l_ae_header_id                NUMBER;
283649 l_event_type_code             VARCHAR2(30);
283650 l_line_definition_code        VARCHAR2(30);
283651 l_line_definition_owner_code  VARCHAR2(1);
283652 --
283653 -- adr variables
283654 l_segment                     VARCHAR2(30);
283655 l_ccid                        NUMBER;
283656 l_adr_transaction_coa_id      NUMBER;
283657 l_adr_accounting_coa_id       NUMBER;
283658 l_adr_flexfield_segment_code  VARCHAR2(30);
283659 l_adr_flex_value_set_id       NUMBER;
283660 l_adr_value_type_code         VARCHAR2(30);
283661 l_adr_value_combination_id    NUMBER;
283662 l_adr_value_segment_code      VARCHAR2(30);
283663 
283664 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
283665 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
283666 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
283667 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
283668 
283669 -- 4262811 Variables ------------------------------------------------------------------------------------------
283670 l_entered_amt_idx             NUMBER;
283671 l_accted_amt_idx              NUMBER;
283672 l_acc_rev_flag                VARCHAR2(1);
283673 l_accrual_line_num            NUMBER;
283674 l_tmp_amt                     NUMBER;
283675 l_acc_rev_natural_side_code   VARCHAR2(1);
283676 
283677 l_num_entries                 NUMBER;
283678 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
283679 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
283680 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
283681 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
283682 l_recog_line_1                NUMBER;
283683 l_recog_line_2                NUMBER;
283684 
283685 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
283686 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
283687 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
283688 
283689 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
283690 
283691 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
283692 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
283693 
283694 ---------------------------------------------------------------------------------------------------------------
283695 
283696 
283697 --
283698 -- bulk performance
283699 --
283700 l_balance_type_code           VARCHAR2(1);
283701 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
283702 l_log_module                  VARCHAR2(240);
283703 
283704 --
283705 -- Upgrade strategy
283706 --
283707 l_actual_upg_option           VARCHAR2(1);
283708 l_enc_upg_option           VARCHAR2(1);
283709 
283710 --
283711 BEGIN
283712 --
283713 IF g_log_enabled THEN
283714       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_507';
283715 END IF;
283716 --
283717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
283718 
283719       trace
283720          (p_msg      => 'BEGIN of AcctLineType_507'
283721          ,p_level    => C_LEVEL_PROCEDURE
283722          ,p_module   => l_log_module);
283723 
283724 END IF;
283725 --
283726 l_component_type             := 'AMB_JLT';
283727 l_component_code             := 'RECEIVING_INSPECTION';
283728 l_component_type_code        := 'S';
283729 l_component_appl_id          :=  707;
283730 l_amb_context_code           := 'DEFAULT';
283731 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
283732 l_event_class_code           := 'PURCHASE_ORDER';
283733 l_event_type_code            := 'LOG_PO_DEL_INV';
283734 l_line_definition_owner_code := 'S';
283735 l_line_definition_code       := 'PI_LOG_DEL_INV';
283736 --
283737 l_balance_type_code          := 'A';
283738 l_segment                     := NULL;
283739 l_ccid                        := NULL;
283740 l_adr_transaction_coa_id      := NULL;
283741 l_adr_accounting_coa_id       := NULL;
283742 l_adr_flexfield_segment_code  := NULL;
283743 l_adr_flex_value_set_id       := NULL;
283744 l_adr_value_type_code         := NULL;
283745 l_adr_value_combination_id    := NULL;
283746 l_adr_value_segment_code      := NULL;
283747 
283748 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
283749 l_bflow_class_code           := '';    -- 4219869 Business Flow
283750 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
283751 l_budgetary_control_flag     := 'N';
283752 
283753 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
283754 l_bflow_applied_to_amt       := NULL; -- 5132302
283755 l_entered_amt_idx            := NULL;          -- 4262811
283756 l_accted_amt_idx             := NULL;          -- 4262811
283757 l_acc_rev_flag               := NULL;          -- 4262811
283758 l_accrual_line_num           := NULL;          -- 4262811
283759 l_tmp_amt                    := NULL;          -- 4262811
283760 --
283761  
283762 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
283763     l_balance_type_code <> 'B' THEN
283764 IF NVL(p_source_97,9E125) =  5
283765  THEN 
283766 
283767    --
283768    XLA_AE_LINES_PKG.SetNewLine;
283769 
283770    p_balance_type_code          := l_balance_type_code;
283771    -- set the flag so later we will know whether the gain loss line needs to be created
283772    
283773    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
283774      p_actual_flag :='A';
283775    END IF;
283776 
283777    --
283778    -- bulk performance
283779    --
283780    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
283781                                       p_header_num   => 0); -- 4262811
283782    --
283783    -- set accounting line options
283784    --
283785    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
283786            p_natural_side_code          => 'D'
283787          , p_gain_or_loss_flag          => 'N'
283788          , p_gl_transfer_mode_code      => 'S'
283789          , p_acct_entry_type_code       => 'A'
283790          , p_switch_side_flag           => 'Y'
283791          , p_merge_duplicate_code       => 'N'
283792          );
283793    --
283794    l_acc_rev_natural_side_code := 'C';  -- 4262811
283795    -- 
283796    --
283797    -- set accounting line type info
283798    --
283799    xla_ae_lines_pkg.SetAcctLineType
283800       (p_component_type             => l_component_type
283801       ,p_event_type_code            => l_event_type_code
283802       ,p_line_definition_owner_code => l_line_definition_owner_code
283803       ,p_line_definition_code       => l_line_definition_code
283804       ,p_accounting_line_code       => l_component_code
283805       ,p_accounting_line_type_code  => l_component_type_code
283806       ,p_accounting_line_appl_id    => l_component_appl_id
283807       ,p_amb_context_code           => l_amb_context_code
283808       ,p_entity_code                => l_entity_code
283809       ,p_event_class_code           => l_event_class_code);
283810    --
283811    -- set accounting class
283812    --
283813    xla_ae_lines_pkg.SetAcctClass(
283814            p_accounting_class_code  => 'RECEIVING_INSPECTION'
283815          , p_ae_header_id           => l_ae_header_id
283816          );
283817 
283818    --
283819    -- set rounding class
283820    --
283821    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
283822                       'RECEIVING_INSPECTION';
283823 
283824    --
283825    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
283826    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
283827    --
283828    -- bulk performance
283829    --
283830    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
283831 
283832    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
283833       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
283834 
283835    -- 4955764
283836    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
283837       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
283838 
283839    -- 4458381 Public Sector Enh
283840    
283841    --
283842    -- set accounting attributes for the line type
283843    --
283844    l_entered_amt_idx := 17;
283845    l_accted_amt_idx  := 22;
283846    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
283847    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
283848    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
283849    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
283850    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
283851    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
283852    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
283853    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
283854    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
283855    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
283856    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
283857    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
283858    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
283859    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
283860    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
283861    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
283862    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
283863    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
283864    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
283865    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
283866    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
283867    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
283868    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
283869    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
283870    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
283871    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
283872    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
283873    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
283874    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
283875    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
283876    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
283877    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
283878    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
283879    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
283880    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
283881    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
283882    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
283883    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
283884    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
283885    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
283886    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
283887    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
283888    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
283889    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
283890    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
283891    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
283892    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
283893    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
283894    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
283895 
283896    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
283897    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
283898 
283899    ---------------------------------------------------------------------------------------------------------------
283900    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
283901    ---------------------------------------------------------------------------------------------------------------
283902    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
283903 
283904    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
283905    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
283906 
283907    IF xla_accounting_cache_pkg.GetValueChar
283908          (p_source_code         => 'LEDGER_CATEGORY_CODE'
283909          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
283910    AND l_bflow_method_code = 'PRIOR_ENTRY'
283911 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
283912    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
283913          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
283914        )
283915    THEN
283916          xla_ae_lines_pkg.BflowUpgEntry
283917            (p_business_method_code    => l_bflow_method_code
283918            ,p_business_class_code     => l_bflow_class_code
283919            ,p_balance_type            => l_balance_type_code);
283920    ELSE
283921       NULL;
283922 -- No business flow processing for business flow method of NONE.
283923    END IF;
283924 
283925    --
283926    -- call analytical criteria
283927    --
283928    
283929    --
283930    -- call description
283931    --
283932    
283933 xla_ae_lines_pkg.SetLineDescription(
283934    p_ae_header_id => l_ae_header_id
283935   ,p_description  => Description_1 (
283936      p_application_id         => p_application_id
283937    , p_ae_header_id           => l_ae_header_id 
283938 , p_source_1 => p_source_1
283939 , p_source_2 => p_source_2
283940 , p_source_3 => p_source_3
283941 , p_source_4 => p_source_4
283942 , p_source_5 => p_source_5
283943    )
283944 );
283945 
283946 
283947    --
283948    -- call ADRs
283949    -- Bug 4922099
283950    --
283951    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
283952         (NVL(l_actual_upg_option, 'N') = 'O') OR
283953         (NVL(l_enc_upg_option, 'N') = 'O')
283954       )
283955    THEN
283956    NULL;
283957    --
283958    --
283959    
283960   l_ccid := AcctDerRule_6(
283961            p_application_id           => p_application_id
283962          , p_ae_header_id             => l_ae_header_id 
283963 , p_source_11 => p_source_11
283964          , x_transaction_coa_id       => l_adr_transaction_coa_id
283965          , x_accounting_coa_id        => l_adr_accounting_coa_id
283966          , x_value_type_code          => l_adr_value_type_code
283967          , p_side                     => 'NA'
283968    );
283969 
283970    xla_ae_lines_pkg.set_ccid(
283971     p_code_combination_id          => l_ccid
283972   , p_value_type_code              => l_adr_value_type_code
283973   , p_transaction_coa_id           => l_adr_transaction_coa_id
283974   , p_accounting_coa_id            => l_adr_accounting_coa_id
283975   , p_adr_code                     => 'CST_DEFAULT'
283976   , p_adr_type_code                => 'S'
283977   , p_component_type               => l_component_type
283978   , p_component_code               => l_component_code
283979   , p_component_type_code          => l_component_type_code
283980   , p_component_appl_id            => l_component_appl_id
283981   , p_amb_context_code             => l_amb_context_code
283982   , p_side                         => 'NA'
283983   );
283984 
283985 
283986    --
283987    --
283988    END IF;
283989    --
283990    -- Bug 4922099
283991    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
283992           (NVL(l_enc_upg_option, 'N') = 'O')
283993         ) AND
283994         (l_bflow_method_code = 'PRIOR_ENTRY')
283995       )
283996    THEN
283997       IF
283998       --
283999       1 = 2
284000       --
284001       THEN
284002       xla_accounting_err_pkg.build_message
284003                                     (p_appli_s_name            => 'XLA'
284004                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
284005                                     ,p_token_1                 => 'LINE_NUMBER'
284006                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
284007                                     ,p_token_2                 => 'LINE_TYPE_NAME'
284008                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
284009                                                                              l_component_type
284010                                                                             ,l_component_code
284011                                                                             ,l_component_type_code
284012                                                                             ,l_component_appl_id
284013                                                                             ,l_amb_context_code
284014                                                                             ,l_entity_code
284015                                                                             ,l_event_class_code
284016                                                                            )
284017                                     ,p_token_3                 => 'OWNER'
284018                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
284019                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
284020                                                                           ,p_lookup_code    => l_component_type_code
284021                                                                          )
284022                                     ,p_token_4                 => 'PRODUCT_NAME'
284023                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
284024                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
284025                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
284026                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
284027                                     ,p_ae_header_id            =>  NULL
284028                                        );
284029 
284030         IF (C_LEVEL_ERROR>= g_log_level) THEN
284031                  trace
284032                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
284033                       ,p_level    => C_LEVEL_ERROR
284034                       ,p_module   => l_log_module);
284035         END IF;
284036       END IF;
284037    END IF;
284038    --
284039    --
284040    ------------------------------------------------------------------------------------------------
284041    -- 4219869 Business Flow
284042    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
284043    -- Prior Entry.  Currently, the following code is always generated.
284044    ------------------------------------------------------------------------------------------------
284045    XLA_AE_LINES_PKG.ValidateCurrentLine;
284046 
284047    ------------------------------------------------------------------------------------
284048    -- 4219869 Business Flow
284049    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
284050    ------------------------------------------------------------------------------------
284051    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
284052 
284053    ----------------------------------------------------------------------------------
284054    -- 4219869 Business Flow
284055    -- Update journal entry status -- Need to generate this within IF <condition>
284056    ----------------------------------------------------------------------------------
284057    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
284058          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
284059          ,p_balance_type_code => l_balance_type_code
284060          );
284061 
284062    -------------------------------------------------------------------------------------------
284063    -- 4262811 - Generate the Accrual Reversal lines
284064    -------------------------------------------------------------------------------------------
284065    BEGIN
284066       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
284067                               (g_array_event(p_event_id).array_value_num('header_index'));
284068       IF l_acc_rev_flag IS NULL THEN
284069          l_acc_rev_flag := 'N';
284070       END IF;
284071    EXCEPTION
284072       WHEN OTHERS THEN
284073          l_acc_rev_flag := 'N';
284074    END;
284075    --
284076    IF (l_acc_rev_flag = 'Y') THEN
284077 
284078        -- 4645092  ------------------------------------------------------------------------------
284079        -- To allow MPA report to determine if it should generate report process
284080        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
284081        ------------------------------------------------------------------------------------------
284082 
284083        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
284084        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
284085    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
284086    -- call ADRs
284087    -- Bug 4922099
284088    --
284089    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
284090         (NVL(l_actual_upg_option, 'N') = 'O') OR
284091         (NVL(l_enc_upg_option, 'N') = 'O')
284092       )
284093    THEN
284094    NULL;
284095    --
284096    --
284097    
284098   l_ccid := AcctDerRule_6(
284099            p_application_id           => p_application_id
284100          , p_ae_header_id             => l_ae_header_id 
284101 , p_source_11 => p_source_11
284102          , x_transaction_coa_id       => l_adr_transaction_coa_id
284103          , x_accounting_coa_id        => l_adr_accounting_coa_id
284104          , x_value_type_code          => l_adr_value_type_code
284105          , p_side                     => 'NA'
284106    );
284107 
284108    xla_ae_lines_pkg.set_ccid(
284109     p_code_combination_id          => l_ccid
284110   , p_value_type_code              => l_adr_value_type_code
284111   , p_transaction_coa_id           => l_adr_transaction_coa_id
284112   , p_accounting_coa_id            => l_adr_accounting_coa_id
284113   , p_adr_code                     => 'CST_DEFAULT'
284114   , p_adr_type_code                => 'S'
284115   , p_component_type               => l_component_type
284116   , p_component_code               => l_component_code
284117   , p_component_type_code          => l_component_type_code
284118   , p_component_appl_id            => l_component_appl_id
284119   , p_amb_context_code             => l_amb_context_code
284120   , p_side                         => 'NA'
284121   );
284122 
284123 
284124    --
284125    --
284126    END IF;
284127 
284128        --
284129        -- Update the line information that should be overwritten
284130        --
284131        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
284132                                          p_header_num   => 1);
284133        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
284134 
284135        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
284136 
284137        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
284138           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
284139        END IF;
284140 
284141       --
284142       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
284143       --
284144       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
284145           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
284146       ELSE
284147           ---------------------------------------------------------------------------------------------------
284148           -- 4262811a Switch Sign
284149           ---------------------------------------------------------------------------------------------------
284150           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
284151           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
284152                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
284153           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
284154                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
284155           -- 5132302
284156           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
284157                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
284158 
284159       END IF;
284160 
284161       -- 4955764
284162       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
284163       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
284164 
284165 
284166       XLA_AE_LINES_PKG.ValidateCurrentLine;
284167       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
284168 
284169       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
284170                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
284171                ,p_balance_type_code => l_balance_type_code);
284172 
284173    END IF;
284174 
284175    -----------------------------------------------------------------------------------------
284176    -- 4262811 Multiperiod Accounting
284177    -----------------------------------------------------------------------------------------
284178      -- No MPA option is assigned.
284179 
284180 
284181 END IF;
284182 END IF;
284183 --
284184 
284185 --
284186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
284187    trace
284188       (p_msg      => 'END of AcctLineType_507'
284189       ,p_level    => C_LEVEL_PROCEDURE
284190       ,p_module   => l_log_module);
284191 END IF;
284192 --
284193 EXCEPTION
284194   WHEN xla_exceptions_pkg.application_exception THEN
284195       RAISE;
284196   WHEN OTHERS THEN
284197        xla_exceptions_pkg.raise_message
284198            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_507');
284199 END AcctLineType_507;
284200 --
284201 
284202 ---------------------------------------
284203 --
284204 -- PRIVATE FUNCTION
284205 --         AcctLineType_508
284206 --
284207 ---------------------------------------
284208 PROCEDURE AcctLineType_508 (
284209   p_application_id        IN NUMBER
284210  ,p_event_id              IN NUMBER
284211  ,p_calculate_acctd_flag  IN VARCHAR2
284212  ,p_calculate_g_l_flag    IN VARCHAR2
284213  ,p_actual_flag           IN OUT VARCHAR2
284214  ,p_balance_type_code     OUT VARCHAR2
284215  ,p_gain_or_loss_ref      OUT VARCHAR2
284216  
284217 --Cost Management Default Account
284218  , p_source_11            IN NUMBER
284219 --Receiving Accounting Line Type
284220  , p_source_78            IN VARCHAR2
284221 --Applied to Application ID
284222  , p_source_79            IN NUMBER
284223 --Applied to Distribution Link Type
284224  , p_source_80            IN VARCHAR2
284225 --Applied to Entity Code
284226  , p_source_81            IN VARCHAR2
284227 --PO_DISTRIBUTION_ID
284228  , p_source_82            IN NUMBER
284229 --Applied To Purchase Document Identifier
284230  , p_source_83            IN NUMBER
284231 --DISTRIBUTION_IDENTIFIER
284232  , p_source_84            IN NUMBER
284233 --Distribution Type
284234  , p_source_85            IN VARCHAR2
284235  , p_source_85_meaning    IN VARCHAR2
284236 --PO Budget Account
284237  , p_source_86            IN NUMBER
284238 --Encumbrance Reversal Amount Entered
284239  , p_source_87            IN NUMBER
284240 --Entered Currency Code
284241  , p_source_88            IN VARCHAR2
284242 --Transaction Encumbrance Reversal Amount
284243  , p_source_89            IN NUMBER
284244 --Entered Amount
284245  , p_source_91            IN NUMBER
284246 --Currency Conversion Date
284247  , p_source_92            IN DATE
284248 --Currency Conversion Rate
284249  , p_source_93            IN NUMBER
284250 --Currency Conversion Type
284251  , p_source_94            IN VARCHAR2
284252 --Accounted Amount
284253  , p_source_95            IN NUMBER
284254 --Purchasing Encumbrance Type Identifier
284255  , p_source_96            IN NUMBER
284256 --Costing Encumbrance Upgrade Option
284257  , p_source_100            IN VARCHAR2
284258 )
284259 IS
284260 
284261 l_component_type              VARCHAR2(80);
284262 l_component_code              VARCHAR2(30);
284263 l_component_type_code         VARCHAR2(1);
284264 l_component_appl_id           INTEGER;
284265 l_amb_context_code            VARCHAR2(30);
284266 l_entity_code                 VARCHAR2(30);
284267 l_event_class_code            VARCHAR2(30);
284268 l_ae_header_id                NUMBER;
284269 l_event_type_code             VARCHAR2(30);
284270 l_line_definition_code        VARCHAR2(30);
284271 l_line_definition_owner_code  VARCHAR2(1);
284272 --
284273 -- adr variables
284274 l_segment                     VARCHAR2(30);
284275 l_ccid                        NUMBER;
284276 l_adr_transaction_coa_id      NUMBER;
284277 l_adr_accounting_coa_id       NUMBER;
284278 l_adr_flexfield_segment_code  VARCHAR2(30);
284279 l_adr_flex_value_set_id       NUMBER;
284280 l_adr_value_type_code         VARCHAR2(30);
284281 l_adr_value_combination_id    NUMBER;
284282 l_adr_value_segment_code      VARCHAR2(30);
284283 
284284 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
284285 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
284286 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
284287 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
284288 
284289 -- 4262811 Variables ------------------------------------------------------------------------------------------
284290 l_entered_amt_idx             NUMBER;
284291 l_accted_amt_idx              NUMBER;
284292 l_acc_rev_flag                VARCHAR2(1);
284293 l_accrual_line_num            NUMBER;
284294 l_tmp_amt                     NUMBER;
284295 l_acc_rev_natural_side_code   VARCHAR2(1);
284296 
284297 l_num_entries                 NUMBER;
284298 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
284299 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
284300 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
284301 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
284302 l_recog_line_1                NUMBER;
284303 l_recog_line_2                NUMBER;
284304 
284305 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
284306 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
284307 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
284308 
284309 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
284310 
284311 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
284312 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
284313 
284314 ---------------------------------------------------------------------------------------------------------------
284315 
284316 
284317 --
284318 -- bulk performance
284319 --
284320 l_balance_type_code           VARCHAR2(1);
284321 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
284322 l_log_module                  VARCHAR2(240);
284323 
284324 --
284325 -- Upgrade strategy
284326 --
284327 l_actual_upg_option           VARCHAR2(1);
284328 l_enc_upg_option           VARCHAR2(1);
284329 
284330 --
284331 BEGIN
284332 --
284333 IF g_log_enabled THEN
284334       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_508';
284335 END IF;
284336 --
284337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
284338 
284339       trace
284340          (p_msg      => 'BEGIN of AcctLineType_508'
284341          ,p_level    => C_LEVEL_PROCEDURE
284342          ,p_module   => l_log_module);
284343 
284344 END IF;
284345 --
284346 l_component_type             := 'AMB_JLT';
284347 l_component_code             := 'RECEIVING_INSPECTION';
284348 l_component_type_code        := 'S';
284349 l_component_appl_id          :=  707;
284350 l_amb_context_code           := 'DEFAULT';
284351 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
284352 l_event_class_code           := 'DELIVER_EXPENSE';
284353 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
284354 l_line_definition_owner_code := 'S';
284355 l_line_definition_code       := 'DELIVER_EXPENSE';
284356 --
284357 l_balance_type_code          := 'A';
284358 l_segment                     := NULL;
284359 l_ccid                        := NULL;
284360 l_adr_transaction_coa_id      := NULL;
284361 l_adr_accounting_coa_id       := NULL;
284362 l_adr_flexfield_segment_code  := NULL;
284363 l_adr_flex_value_set_id       := NULL;
284364 l_adr_value_type_code         := NULL;
284365 l_adr_value_combination_id    := NULL;
284366 l_adr_value_segment_code      := NULL;
284367 
284368 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
284369 l_bflow_class_code           := '';    -- 4219869 Business Flow
284370 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
284371 l_budgetary_control_flag     := 'N';
284372 
284373 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
284374 l_bflow_applied_to_amt       := NULL; -- 5132302
284375 l_entered_amt_idx            := NULL;          -- 4262811
284376 l_accted_amt_idx             := NULL;          -- 4262811
284377 l_acc_rev_flag               := NULL;          -- 4262811
284378 l_accrual_line_num           := NULL;          -- 4262811
284379 l_tmp_amt                    := NULL;          -- 4262811
284380 --
284381  
284382 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
284383     l_balance_type_code <> 'B' THEN
284384 IF NVL(p_source_78,'
284385 ') =  'Receiving Inspection'
284386  THEN 
284387 
284388    --
284389    XLA_AE_LINES_PKG.SetNewLine;
284390 
284391    p_balance_type_code          := l_balance_type_code;
284392    -- set the flag so later we will know whether the gain loss line needs to be created
284393    
284394    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
284395      p_actual_flag :='A';
284396    END IF;
284397 
284398    --
284399    -- bulk performance
284400    --
284401    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
284402                                       p_header_num   => 0); -- 4262811
284403    --
284404    -- set accounting line options
284405    --
284406    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
284407            p_natural_side_code          => 'D'
284408          , p_gain_or_loss_flag          => 'N'
284409          , p_gl_transfer_mode_code      => 'S'
284410          , p_acct_entry_type_code       => 'A'
284411          , p_switch_side_flag           => 'Y'
284412          , p_merge_duplicate_code       => 'N'
284413          );
284414    --
284415    l_acc_rev_natural_side_code := 'C';  -- 4262811
284416    -- 
284417    --
284418    -- set accounting line type info
284419    --
284420    xla_ae_lines_pkg.SetAcctLineType
284421       (p_component_type             => l_component_type
284422       ,p_event_type_code            => l_event_type_code
284423       ,p_line_definition_owner_code => l_line_definition_owner_code
284424       ,p_line_definition_code       => l_line_definition_code
284425       ,p_accounting_line_code       => l_component_code
284426       ,p_accounting_line_type_code  => l_component_type_code
284427       ,p_accounting_line_appl_id    => l_component_appl_id
284428       ,p_amb_context_code           => l_amb_context_code
284429       ,p_entity_code                => l_entity_code
284430       ,p_event_class_code           => l_event_class_code);
284431    --
284432    -- set accounting class
284433    --
284434    xla_ae_lines_pkg.SetAcctClass(
284435            p_accounting_class_code  => 'RECEIVING_INSPECTION'
284436          , p_ae_header_id           => l_ae_header_id
284437          );
284438 
284439    --
284440    -- set rounding class
284441    --
284442    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
284443                       'RECEIVING_INSPECTION';
284444 
284445    --
284446    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
284447    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
284448    --
284449    -- bulk performance
284450    --
284451    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
284452 
284453    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
284454       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
284455 
284456    -- 4955764
284457    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
284458       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
284459 
284460    -- 4458381 Public Sector Enh
284461    
284462    --
284463    -- set accounting attributes for the line type
284464    --
284465    l_entered_amt_idx := 17;
284466    l_accted_amt_idx  := 22;
284467    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
284468    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
284469    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
284470    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
284471    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
284472    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
284473    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
284474    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
284475    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_82);
284476    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
284477    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
284478    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
284479    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
284480    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
284481    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
284482    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
284483    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
284484    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
284485    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
284486    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
284487    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
284488    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
284489    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
284490    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
284491    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
284492    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
284493    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
284494    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
284495    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
284496    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
284497    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
284498    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
284499    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
284500    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
284501    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
284502    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
284503    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
284504    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
284505    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
284506    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
284507    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
284508    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
284509    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
284510    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
284511    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
284512    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
284513    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
284514    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
284515    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
284516 
284517    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
284518    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
284519 
284520    ---------------------------------------------------------------------------------------------------------------
284521    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
284522    ---------------------------------------------------------------------------------------------------------------
284523    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
284524 
284525    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
284526    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
284527 
284528    IF xla_accounting_cache_pkg.GetValueChar
284529          (p_source_code         => 'LEDGER_CATEGORY_CODE'
284530          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
284531    AND l_bflow_method_code = 'PRIOR_ENTRY'
284532 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
284533    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
284534          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
284535        )
284536    THEN
284537          xla_ae_lines_pkg.BflowUpgEntry
284538            (p_business_method_code    => l_bflow_method_code
284539            ,p_business_class_code     => l_bflow_class_code
284540            ,p_balance_type            => l_balance_type_code);
284541    ELSE
284542       NULL;
284543 -- No business flow processing for business flow method of NONE.
284544    END IF;
284545 
284546    --
284547    -- call analytical criteria
284548    --
284549    
284550    --
284551    -- call description
284552    --
284553    -- No description or it is inherited.
284554    --
284555    -- call ADRs
284556    -- Bug 4922099
284557    --
284558    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
284559         (NVL(l_actual_upg_option, 'N') = 'O') OR
284560         (NVL(l_enc_upg_option, 'N') = 'O')
284561       )
284562    THEN
284563    NULL;
284564    --
284565    --
284566    
284567   l_ccid := AcctDerRule_6(
284568            p_application_id           => p_application_id
284569          , p_ae_header_id             => l_ae_header_id 
284570 , p_source_11 => p_source_11
284571          , x_transaction_coa_id       => l_adr_transaction_coa_id
284572          , x_accounting_coa_id        => l_adr_accounting_coa_id
284573          , x_value_type_code          => l_adr_value_type_code
284574          , p_side                     => 'NA'
284575    );
284576 
284577    xla_ae_lines_pkg.set_ccid(
284578     p_code_combination_id          => l_ccid
284579   , p_value_type_code              => l_adr_value_type_code
284580   , p_transaction_coa_id           => l_adr_transaction_coa_id
284581   , p_accounting_coa_id            => l_adr_accounting_coa_id
284582   , p_adr_code                     => 'CST_DEFAULT'
284583   , p_adr_type_code                => 'S'
284584   , p_component_type               => l_component_type
284585   , p_component_code               => l_component_code
284586   , p_component_type_code          => l_component_type_code
284587   , p_component_appl_id            => l_component_appl_id
284588   , p_amb_context_code             => l_amb_context_code
284589   , p_side                         => 'NA'
284590   );
284591 
284592 
284593    --
284594    --
284595    END IF;
284596    --
284597    -- Bug 4922099
284598    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
284599           (NVL(l_enc_upg_option, 'N') = 'O')
284600         ) AND
284601         (l_bflow_method_code = 'PRIOR_ENTRY')
284602       )
284603    THEN
284604       IF
284605       --
284606       1 = 2
284607       --
284608       THEN
284609       xla_accounting_err_pkg.build_message
284610                                     (p_appli_s_name            => 'XLA'
284611                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
284612                                     ,p_token_1                 => 'LINE_NUMBER'
284613                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
284614                                     ,p_token_2                 => 'LINE_TYPE_NAME'
284615                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
284616                                                                              l_component_type
284617                                                                             ,l_component_code
284618                                                                             ,l_component_type_code
284619                                                                             ,l_component_appl_id
284620                                                                             ,l_amb_context_code
284621                                                                             ,l_entity_code
284622                                                                             ,l_event_class_code
284623                                                                            )
284624                                     ,p_token_3                 => 'OWNER'
284625                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
284626                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
284627                                                                           ,p_lookup_code    => l_component_type_code
284628                                                                          )
284629                                     ,p_token_4                 => 'PRODUCT_NAME'
284630                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
284631                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
284632                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
284633                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
284634                                     ,p_ae_header_id            =>  NULL
284635                                        );
284636 
284637         IF (C_LEVEL_ERROR>= g_log_level) THEN
284638                  trace
284639                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
284640                       ,p_level    => C_LEVEL_ERROR
284641                       ,p_module   => l_log_module);
284642         END IF;
284643       END IF;
284644    END IF;
284645    --
284646    --
284647    ------------------------------------------------------------------------------------------------
284648    -- 4219869 Business Flow
284649    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
284650    -- Prior Entry.  Currently, the following code is always generated.
284651    ------------------------------------------------------------------------------------------------
284652    XLA_AE_LINES_PKG.ValidateCurrentLine;
284653 
284654    ------------------------------------------------------------------------------------
284655    -- 4219869 Business Flow
284656    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
284657    ------------------------------------------------------------------------------------
284658    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
284659 
284660    ----------------------------------------------------------------------------------
284661    -- 4219869 Business Flow
284662    -- Update journal entry status -- Need to generate this within IF <condition>
284663    ----------------------------------------------------------------------------------
284664    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
284665          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
284666          ,p_balance_type_code => l_balance_type_code
284667          );
284668 
284669    -------------------------------------------------------------------------------------------
284670    -- 4262811 - Generate the Accrual Reversal lines
284671    -------------------------------------------------------------------------------------------
284672    BEGIN
284673       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
284674                               (g_array_event(p_event_id).array_value_num('header_index'));
284675       IF l_acc_rev_flag IS NULL THEN
284676          l_acc_rev_flag := 'N';
284677       END IF;
284678    EXCEPTION
284679       WHEN OTHERS THEN
284680          l_acc_rev_flag := 'N';
284681    END;
284682    --
284683    IF (l_acc_rev_flag = 'Y') THEN
284684 
284685        -- 4645092  ------------------------------------------------------------------------------
284686        -- To allow MPA report to determine if it should generate report process
284687        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
284688        ------------------------------------------------------------------------------------------
284689 
284690        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
284691        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
284692    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
284693    -- call ADRs
284694    -- Bug 4922099
284695    --
284696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
284697         (NVL(l_actual_upg_option, 'N') = 'O') OR
284698         (NVL(l_enc_upg_option, 'N') = 'O')
284699       )
284700    THEN
284701    NULL;
284702    --
284703    --
284704    
284705   l_ccid := AcctDerRule_6(
284706            p_application_id           => p_application_id
284707          , p_ae_header_id             => l_ae_header_id 
284708 , p_source_11 => p_source_11
284709          , x_transaction_coa_id       => l_adr_transaction_coa_id
284710          , x_accounting_coa_id        => l_adr_accounting_coa_id
284711          , x_value_type_code          => l_adr_value_type_code
284712          , p_side                     => 'NA'
284713    );
284714 
284715    xla_ae_lines_pkg.set_ccid(
284716     p_code_combination_id          => l_ccid
284717   , p_value_type_code              => l_adr_value_type_code
284718   , p_transaction_coa_id           => l_adr_transaction_coa_id
284719   , p_accounting_coa_id            => l_adr_accounting_coa_id
284720   , p_adr_code                     => 'CST_DEFAULT'
284721   , p_adr_type_code                => 'S'
284722   , p_component_type               => l_component_type
284723   , p_component_code               => l_component_code
284724   , p_component_type_code          => l_component_type_code
284725   , p_component_appl_id            => l_component_appl_id
284726   , p_amb_context_code             => l_amb_context_code
284727   , p_side                         => 'NA'
284728   );
284729 
284730 
284731    --
284732    --
284733    END IF;
284734 
284735        --
284736        -- Update the line information that should be overwritten
284737        --
284738        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
284739                                          p_header_num   => 1);
284740        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
284741 
284742        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
284743 
284744        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
284745           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
284746        END IF;
284747 
284748       --
284749       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
284750       --
284751       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
284752           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
284753       ELSE
284754           ---------------------------------------------------------------------------------------------------
284755           -- 4262811a Switch Sign
284756           ---------------------------------------------------------------------------------------------------
284757           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
284758           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
284759                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
284760           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
284761                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
284762           -- 5132302
284763           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
284764                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
284765 
284766       END IF;
284767 
284768       -- 4955764
284769       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
284770       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
284771 
284772 
284773       XLA_AE_LINES_PKG.ValidateCurrentLine;
284774       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
284775 
284776       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
284777                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
284778                ,p_balance_type_code => l_balance_type_code);
284779 
284780    END IF;
284781 
284782    -----------------------------------------------------------------------------------------
284783    -- 4262811 Multiperiod Accounting
284784    -----------------------------------------------------------------------------------------
284785      -- No MPA option is assigned.
284786 
284787 
284788 END IF;
284789 END IF;
284790 --
284791 
284792 --
284793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
284794    trace
284795       (p_msg      => 'END of AcctLineType_508'
284796       ,p_level    => C_LEVEL_PROCEDURE
284797       ,p_module   => l_log_module);
284798 END IF;
284799 --
284800 EXCEPTION
284801   WHEN xla_exceptions_pkg.application_exception THEN
284802       RAISE;
284803   WHEN OTHERS THEN
284804        xla_exceptions_pkg.raise_message
284805            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_508');
284806 END AcctLineType_508;
284807 --
284808 
284809 ---------------------------------------
284810 --
284811 -- PRIVATE FUNCTION
284812 --         AcctLineType_509
284813 --
284814 ---------------------------------------
284815 PROCEDURE AcctLineType_509 (
284816   p_application_id        IN NUMBER
284817  ,p_event_id              IN NUMBER
284818  ,p_calculate_acctd_flag  IN VARCHAR2
284819  ,p_calculate_g_l_flag    IN VARCHAR2
284820  ,p_actual_flag           IN OUT VARCHAR2
284821  ,p_balance_type_code     OUT VARCHAR2
284822  ,p_gain_or_loss_ref      OUT VARCHAR2
284823  
284824 --Cost Management Default Account
284825  , p_source_11            IN NUMBER
284826 --Receiving Accounting Line Type
284827  , p_source_78            IN VARCHAR2
284828 --DISTRIBUTION_IDENTIFIER
284829  , p_source_84            IN NUMBER
284830 --Distribution Type
284831  , p_source_85            IN VARCHAR2
284832  , p_source_85_meaning    IN VARCHAR2
284833 --Entered Currency Code
284834  , p_source_88            IN VARCHAR2
284835 --Entered Amount
284836  , p_source_91            IN NUMBER
284837 --Currency Conversion Date
284838  , p_source_92            IN DATE
284839 --Currency Conversion Rate
284840  , p_source_93            IN NUMBER
284841 --Currency Conversion Type
284842  , p_source_94            IN VARCHAR2
284843 --Accounted Amount
284844  , p_source_95            IN NUMBER
284845 )
284846 IS
284847 
284848 l_component_type              VARCHAR2(80);
284849 l_component_code              VARCHAR2(30);
284850 l_component_type_code         VARCHAR2(1);
284851 l_component_appl_id           INTEGER;
284852 l_amb_context_code            VARCHAR2(30);
284853 l_entity_code                 VARCHAR2(30);
284854 l_event_class_code            VARCHAR2(30);
284855 l_ae_header_id                NUMBER;
284856 l_event_type_code             VARCHAR2(30);
284857 l_line_definition_code        VARCHAR2(30);
284858 l_line_definition_owner_code  VARCHAR2(1);
284859 --
284860 -- adr variables
284861 l_segment                     VARCHAR2(30);
284862 l_ccid                        NUMBER;
284863 l_adr_transaction_coa_id      NUMBER;
284864 l_adr_accounting_coa_id       NUMBER;
284865 l_adr_flexfield_segment_code  VARCHAR2(30);
284866 l_adr_flex_value_set_id       NUMBER;
284867 l_adr_value_type_code         VARCHAR2(30);
284868 l_adr_value_combination_id    NUMBER;
284869 l_adr_value_segment_code      VARCHAR2(30);
284870 
284871 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
284872 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
284873 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
284874 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
284875 
284876 -- 4262811 Variables ------------------------------------------------------------------------------------------
284877 l_entered_amt_idx             NUMBER;
284878 l_accted_amt_idx              NUMBER;
284879 l_acc_rev_flag                VARCHAR2(1);
284880 l_accrual_line_num            NUMBER;
284881 l_tmp_amt                     NUMBER;
284882 l_acc_rev_natural_side_code   VARCHAR2(1);
284883 
284884 l_num_entries                 NUMBER;
284885 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
284886 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
284887 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
284888 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
284889 l_recog_line_1                NUMBER;
284890 l_recog_line_2                NUMBER;
284891 
284892 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
284893 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
284894 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
284895 
284896 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
284897 
284898 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
284899 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
284900 
284901 ---------------------------------------------------------------------------------------------------------------
284902 
284903 
284904 --
284905 -- bulk performance
284906 --
284907 l_balance_type_code           VARCHAR2(1);
284908 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
284909 l_log_module                  VARCHAR2(240);
284910 
284911 --
284912 -- Upgrade strategy
284913 --
284914 l_actual_upg_option           VARCHAR2(1);
284915 l_enc_upg_option           VARCHAR2(1);
284916 
284917 --
284918 BEGIN
284919 --
284920 IF g_log_enabled THEN
284921       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_509';
284922 END IF;
284923 --
284924 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
284925 
284926       trace
284927          (p_msg      => 'BEGIN of AcctLineType_509'
284928          ,p_level    => C_LEVEL_PROCEDURE
284929          ,p_module   => l_log_module);
284930 
284931 END IF;
284932 --
284933 l_component_type             := 'AMB_JLT';
284934 l_component_code             := 'RECEIVING_INSPECTION';
284935 l_component_type_code        := 'S';
284936 l_component_appl_id          :=  707;
284937 l_amb_context_code           := 'DEFAULT';
284938 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
284939 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
284940 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
284941 l_line_definition_owner_code := 'S';
284942 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
284943 --
284944 l_balance_type_code          := 'A';
284945 l_segment                     := NULL;
284946 l_ccid                        := NULL;
284947 l_adr_transaction_coa_id      := NULL;
284948 l_adr_accounting_coa_id       := NULL;
284949 l_adr_flexfield_segment_code  := NULL;
284950 l_adr_flex_value_set_id       := NULL;
284951 l_adr_value_type_code         := NULL;
284952 l_adr_value_combination_id    := NULL;
284953 l_adr_value_segment_code      := NULL;
284954 
284955 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
284956 l_bflow_class_code           := '';    -- 4219869 Business Flow
284957 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
284958 l_budgetary_control_flag     := 'N';
284959 
284960 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
284961 l_bflow_applied_to_amt       := NULL; -- 5132302
284962 l_entered_amt_idx            := NULL;          -- 4262811
284963 l_accted_amt_idx             := NULL;          -- 4262811
284964 l_acc_rev_flag               := NULL;          -- 4262811
284965 l_accrual_line_num           := NULL;          -- 4262811
284966 l_tmp_amt                    := NULL;          -- 4262811
284967 --
284968  
284969 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
284970     l_balance_type_code <> 'B' THEN
284971 IF NVL(p_source_78,'
284972 ') =  'Receiving Inspection'
284973  THEN 
284974 
284975    --
284976    XLA_AE_LINES_PKG.SetNewLine;
284977 
284978    p_balance_type_code          := l_balance_type_code;
284979    -- set the flag so later we will know whether the gain loss line needs to be created
284980    
284981    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
284982      p_actual_flag :='A';
284983    END IF;
284984 
284985    --
284986    -- bulk performance
284987    --
284988    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
284989                                       p_header_num   => 0); -- 4262811
284990    --
284991    -- set accounting line options
284992    --
284993    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
284994            p_natural_side_code          => 'D'
284995          , p_gain_or_loss_flag          => 'N'
284996          , p_gl_transfer_mode_code      => 'S'
284997          , p_acct_entry_type_code       => 'A'
284998          , p_switch_side_flag           => 'Y'
284999          , p_merge_duplicate_code       => 'N'
285000          );
285001    --
285002    l_acc_rev_natural_side_code := 'C';  -- 4262811
285003    -- 
285004    --
285005    -- set accounting line type info
285006    --
285007    xla_ae_lines_pkg.SetAcctLineType
285008       (p_component_type             => l_component_type
285009       ,p_event_type_code            => l_event_type_code
285010       ,p_line_definition_owner_code => l_line_definition_owner_code
285011       ,p_line_definition_code       => l_line_definition_code
285012       ,p_accounting_line_code       => l_component_code
285013       ,p_accounting_line_type_code  => l_component_type_code
285014       ,p_accounting_line_appl_id    => l_component_appl_id
285015       ,p_amb_context_code           => l_amb_context_code
285016       ,p_entity_code                => l_entity_code
285017       ,p_event_class_code           => l_event_class_code);
285018    --
285019    -- set accounting class
285020    --
285021    xla_ae_lines_pkg.SetAcctClass(
285022            p_accounting_class_code  => 'RECEIVING_INSPECTION'
285023          , p_ae_header_id           => l_ae_header_id
285024          );
285025 
285026    --
285027    -- set rounding class
285028    --
285029    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
285030                       'RECEIVING_INSPECTION';
285031 
285032    --
285033    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
285034    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
285035    --
285036    -- bulk performance
285037    --
285038    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
285039 
285040    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
285041       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
285042 
285043    -- 4955764
285044    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
285045       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
285046 
285047    -- 4458381 Public Sector Enh
285048    
285049    --
285050    -- set accounting attributes for the line type
285051    --
285052    l_entered_amt_idx := 3;
285053    l_accted_amt_idx  := 8;
285054    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
285055    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
285056    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
285057    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
285058    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
285059    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
285060    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
285061    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
285062    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
285063    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
285064    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
285065    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
285066    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
285067    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
285068    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
285069    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
285070    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
285071 
285072    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
285073    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
285074 
285075    ---------------------------------------------------------------------------------------------------------------
285076    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
285077    ---------------------------------------------------------------------------------------------------------------
285078    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
285079 
285080    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
285081    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
285082 
285083    IF xla_accounting_cache_pkg.GetValueChar
285084          (p_source_code         => 'LEDGER_CATEGORY_CODE'
285085          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
285086    AND l_bflow_method_code = 'PRIOR_ENTRY'
285087 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
285088    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
285089          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
285090        )
285091    THEN
285092          xla_ae_lines_pkg.BflowUpgEntry
285093            (p_business_method_code    => l_bflow_method_code
285094            ,p_business_class_code     => l_bflow_class_code
285095            ,p_balance_type            => l_balance_type_code);
285096    ELSE
285097       NULL;
285098 -- No business flow processing for business flow method of NONE.
285099    END IF;
285100 
285101    --
285102    -- call analytical criteria
285103    --
285104    
285105    --
285106    -- call description
285107    --
285108    -- No description or it is inherited.
285109    --
285110    -- call ADRs
285111    -- Bug 4922099
285112    --
285113    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
285114         (NVL(l_actual_upg_option, 'N') = 'O') OR
285115         (NVL(l_enc_upg_option, 'N') = 'O')
285116       )
285117    THEN
285118    NULL;
285119    --
285120    --
285121    
285122   l_ccid := AcctDerRule_6(
285123            p_application_id           => p_application_id
285124          , p_ae_header_id             => l_ae_header_id 
285125 , p_source_11 => p_source_11
285126          , x_transaction_coa_id       => l_adr_transaction_coa_id
285127          , x_accounting_coa_id        => l_adr_accounting_coa_id
285128          , x_value_type_code          => l_adr_value_type_code
285129          , p_side                     => 'NA'
285130    );
285131 
285132    xla_ae_lines_pkg.set_ccid(
285133     p_code_combination_id          => l_ccid
285134   , p_value_type_code              => l_adr_value_type_code
285135   , p_transaction_coa_id           => l_adr_transaction_coa_id
285136   , p_accounting_coa_id            => l_adr_accounting_coa_id
285137   , p_adr_code                     => 'CST_DEFAULT'
285138   , p_adr_type_code                => 'S'
285139   , p_component_type               => l_component_type
285140   , p_component_code               => l_component_code
285141   , p_component_type_code          => l_component_type_code
285142   , p_component_appl_id            => l_component_appl_id
285143   , p_amb_context_code             => l_amb_context_code
285144   , p_side                         => 'NA'
285145   );
285146 
285147 
285148    --
285149    --
285150    END IF;
285151    --
285152    -- Bug 4922099
285153    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
285154           (NVL(l_enc_upg_option, 'N') = 'O')
285155         ) AND
285156         (l_bflow_method_code = 'PRIOR_ENTRY')
285157       )
285158    THEN
285159       IF
285160       --
285161       1 = 2
285162       --
285163       THEN
285164       xla_accounting_err_pkg.build_message
285165                                     (p_appli_s_name            => 'XLA'
285166                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
285167                                     ,p_token_1                 => 'LINE_NUMBER'
285168                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
285169                                     ,p_token_2                 => 'LINE_TYPE_NAME'
285170                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
285171                                                                              l_component_type
285172                                                                             ,l_component_code
285173                                                                             ,l_component_type_code
285174                                                                             ,l_component_appl_id
285175                                                                             ,l_amb_context_code
285176                                                                             ,l_entity_code
285177                                                                             ,l_event_class_code
285178                                                                            )
285179                                     ,p_token_3                 => 'OWNER'
285180                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
285181                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
285182                                                                           ,p_lookup_code    => l_component_type_code
285183                                                                          )
285184                                     ,p_token_4                 => 'PRODUCT_NAME'
285185                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
285186                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
285187                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
285188                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
285189                                     ,p_ae_header_id            =>  NULL
285190                                        );
285191 
285192         IF (C_LEVEL_ERROR>= g_log_level) THEN
285193                  trace
285194                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
285195                       ,p_level    => C_LEVEL_ERROR
285196                       ,p_module   => l_log_module);
285197         END IF;
285198       END IF;
285199    END IF;
285200    --
285201    --
285202    ------------------------------------------------------------------------------------------------
285203    -- 4219869 Business Flow
285204    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
285205    -- Prior Entry.  Currently, the following code is always generated.
285206    ------------------------------------------------------------------------------------------------
285207    XLA_AE_LINES_PKG.ValidateCurrentLine;
285208 
285209    ------------------------------------------------------------------------------------
285210    -- 4219869 Business Flow
285211    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
285212    ------------------------------------------------------------------------------------
285213    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
285214 
285215    ----------------------------------------------------------------------------------
285216    -- 4219869 Business Flow
285217    -- Update journal entry status -- Need to generate this within IF <condition>
285218    ----------------------------------------------------------------------------------
285219    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
285220          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
285221          ,p_balance_type_code => l_balance_type_code
285222          );
285223 
285224    -------------------------------------------------------------------------------------------
285225    -- 4262811 - Generate the Accrual Reversal lines
285226    -------------------------------------------------------------------------------------------
285227    BEGIN
285228       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
285229                               (g_array_event(p_event_id).array_value_num('header_index'));
285230       IF l_acc_rev_flag IS NULL THEN
285231          l_acc_rev_flag := 'N';
285232       END IF;
285233    EXCEPTION
285234       WHEN OTHERS THEN
285235          l_acc_rev_flag := 'N';
285236    END;
285237    --
285238    IF (l_acc_rev_flag = 'Y') THEN
285239 
285240        -- 4645092  ------------------------------------------------------------------------------
285241        -- To allow MPA report to determine if it should generate report process
285242        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
285243        ------------------------------------------------------------------------------------------
285244 
285245        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
285246        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
285247    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
285248    -- call ADRs
285249    -- Bug 4922099
285250    --
285251    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
285252         (NVL(l_actual_upg_option, 'N') = 'O') OR
285253         (NVL(l_enc_upg_option, 'N') = 'O')
285254       )
285255    THEN
285256    NULL;
285257    --
285258    --
285259    
285260   l_ccid := AcctDerRule_6(
285261            p_application_id           => p_application_id
285262          , p_ae_header_id             => l_ae_header_id 
285263 , p_source_11 => p_source_11
285264          , x_transaction_coa_id       => l_adr_transaction_coa_id
285265          , x_accounting_coa_id        => l_adr_accounting_coa_id
285266          , x_value_type_code          => l_adr_value_type_code
285267          , p_side                     => 'NA'
285268    );
285269 
285270    xla_ae_lines_pkg.set_ccid(
285271     p_code_combination_id          => l_ccid
285272   , p_value_type_code              => l_adr_value_type_code
285273   , p_transaction_coa_id           => l_adr_transaction_coa_id
285274   , p_accounting_coa_id            => l_adr_accounting_coa_id
285275   , p_adr_code                     => 'CST_DEFAULT'
285276   , p_adr_type_code                => 'S'
285277   , p_component_type               => l_component_type
285278   , p_component_code               => l_component_code
285279   , p_component_type_code          => l_component_type_code
285280   , p_component_appl_id            => l_component_appl_id
285281   , p_amb_context_code             => l_amb_context_code
285282   , p_side                         => 'NA'
285283   );
285284 
285285 
285286    --
285287    --
285288    END IF;
285289 
285290        --
285291        -- Update the line information that should be overwritten
285292        --
285293        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
285294                                          p_header_num   => 1);
285295        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
285296 
285297        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
285298 
285299        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
285300           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
285301        END IF;
285302 
285303       --
285304       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
285305       --
285306       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
285307           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
285308       ELSE
285309           ---------------------------------------------------------------------------------------------------
285310           -- 4262811a Switch Sign
285311           ---------------------------------------------------------------------------------------------------
285312           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
285313           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
285314                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
285315           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
285316                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
285317           -- 5132302
285318           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
285319                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
285320 
285321       END IF;
285322 
285323       -- 4955764
285324       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
285325       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
285326 
285327 
285328       XLA_AE_LINES_PKG.ValidateCurrentLine;
285329       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
285330 
285331       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
285332                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
285333                ,p_balance_type_code => l_balance_type_code);
285334 
285335    END IF;
285336 
285337    -----------------------------------------------------------------------------------------
285338    -- 4262811 Multiperiod Accounting
285339    -----------------------------------------------------------------------------------------
285340      -- No MPA option is assigned.
285341 
285342 
285343 END IF;
285344 END IF;
285345 --
285346 
285347 --
285348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
285349    trace
285350       (p_msg      => 'END of AcctLineType_509'
285351       ,p_level    => C_LEVEL_PROCEDURE
285352       ,p_module   => l_log_module);
285353 END IF;
285354 --
285355 EXCEPTION
285356   WHEN xla_exceptions_pkg.application_exception THEN
285357       RAISE;
285358   WHEN OTHERS THEN
285359        xla_exceptions_pkg.raise_message
285360            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_509');
285361 END AcctLineType_509;
285362 --
285363 
285364 ---------------------------------------
285365 --
285366 -- PRIVATE FUNCTION
285367 --         AcctLineType_510
285368 --
285369 ---------------------------------------
285370 PROCEDURE AcctLineType_510 (
285371   p_application_id        IN NUMBER
285372  ,p_event_id              IN NUMBER
285373  ,p_calculate_acctd_flag  IN VARCHAR2
285374  ,p_calculate_g_l_flag    IN VARCHAR2
285375  ,p_actual_flag           IN OUT VARCHAR2
285376  ,p_balance_type_code     OUT VARCHAR2
285377  ,p_gain_or_loss_ref      OUT VARCHAR2
285378  
285379 --Cost Management Default Account
285380  , p_source_11            IN NUMBER
285381 --DISTRIBUTION_IDENTIFIER
285382  , p_source_84            IN NUMBER
285383 --Distribution Type
285384  , p_source_85            IN VARCHAR2
285385  , p_source_85_meaning    IN VARCHAR2
285386 --Entered Currency Code
285387  , p_source_88            IN VARCHAR2
285388 --Entered Amount
285389  , p_source_91            IN NUMBER
285390 --Currency Conversion Date
285391  , p_source_92            IN DATE
285392 --Currency Conversion Rate
285393  , p_source_93            IN NUMBER
285394 --Accounted Amount
285395  , p_source_95            IN NUMBER
285396 --Accounting Line Type
285397  , p_source_97            IN NUMBER
285398 )
285399 IS
285400 
285401 l_component_type              VARCHAR2(80);
285402 l_component_code              VARCHAR2(30);
285403 l_component_type_code         VARCHAR2(1);
285404 l_component_appl_id           INTEGER;
285405 l_amb_context_code            VARCHAR2(30);
285406 l_entity_code                 VARCHAR2(30);
285407 l_event_class_code            VARCHAR2(30);
285408 l_ae_header_id                NUMBER;
285409 l_event_type_code             VARCHAR2(30);
285410 l_line_definition_code        VARCHAR2(30);
285411 l_line_definition_owner_code  VARCHAR2(1);
285412 --
285413 -- adr variables
285414 l_segment                     VARCHAR2(30);
285415 l_ccid                        NUMBER;
285416 l_adr_transaction_coa_id      NUMBER;
285417 l_adr_accounting_coa_id       NUMBER;
285418 l_adr_flexfield_segment_code  VARCHAR2(30);
285419 l_adr_flex_value_set_id       NUMBER;
285420 l_adr_value_type_code         VARCHAR2(30);
285421 l_adr_value_combination_id    NUMBER;
285422 l_adr_value_segment_code      VARCHAR2(30);
285423 
285424 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
285425 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
285426 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
285427 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
285428 
285429 -- 4262811 Variables ------------------------------------------------------------------------------------------
285430 l_entered_amt_idx             NUMBER;
285431 l_accted_amt_idx              NUMBER;
285432 l_acc_rev_flag                VARCHAR2(1);
285433 l_accrual_line_num            NUMBER;
285434 l_tmp_amt                     NUMBER;
285435 l_acc_rev_natural_side_code   VARCHAR2(1);
285436 
285437 l_num_entries                 NUMBER;
285438 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
285439 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
285440 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
285441 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
285442 l_recog_line_1                NUMBER;
285443 l_recog_line_2                NUMBER;
285444 
285445 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
285446 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
285447 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
285448 
285449 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
285450 
285451 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
285452 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
285453 
285454 ---------------------------------------------------------------------------------------------------------------
285455 
285456 
285457 --
285458 -- bulk performance
285459 --
285460 l_balance_type_code           VARCHAR2(1);
285461 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
285462 l_log_module                  VARCHAR2(240);
285463 
285464 --
285465 -- Upgrade strategy
285466 --
285467 l_actual_upg_option           VARCHAR2(1);
285468 l_enc_upg_option           VARCHAR2(1);
285469 
285470 --
285471 BEGIN
285472 --
285473 IF g_log_enabled THEN
285474       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_510';
285475 END IF;
285476 --
285477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
285478 
285479       trace
285480          (p_msg      => 'BEGIN of AcctLineType_510'
285481          ,p_level    => C_LEVEL_PROCEDURE
285482          ,p_module   => l_log_module);
285483 
285484 END IF;
285485 --
285486 l_component_type             := 'AMB_JLT';
285487 l_component_code             := 'RECEIVING_INSPECTION';
285488 l_component_type_code        := 'S';
285489 l_component_appl_id          :=  707;
285490 l_amb_context_code           := 'DEFAULT';
285491 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
285492 l_event_class_code           := 'OSP';
285493 l_event_type_code            := 'IPV_TRANSFER_WO';
285494 l_line_definition_owner_code := 'S';
285495 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
285496 --
285497 l_balance_type_code          := 'A';
285498 l_segment                     := NULL;
285499 l_ccid                        := NULL;
285500 l_adr_transaction_coa_id      := NULL;
285501 l_adr_accounting_coa_id       := NULL;
285502 l_adr_flexfield_segment_code  := NULL;
285503 l_adr_flex_value_set_id       := NULL;
285504 l_adr_value_type_code         := NULL;
285505 l_adr_value_combination_id    := NULL;
285506 l_adr_value_segment_code      := NULL;
285507 
285508 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
285509 l_bflow_class_code           := '';    -- 4219869 Business Flow
285510 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
285511 l_budgetary_control_flag     := 'N';
285512 
285513 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
285514 l_bflow_applied_to_amt       := NULL; -- 5132302
285515 l_entered_amt_idx            := NULL;          -- 4262811
285516 l_accted_amt_idx             := NULL;          -- 4262811
285517 l_acc_rev_flag               := NULL;          -- 4262811
285518 l_accrual_line_num           := NULL;          -- 4262811
285519 l_tmp_amt                    := NULL;          -- 4262811
285520 --
285521  
285522 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
285523     l_balance_type_code <> 'B' THEN
285524 IF NVL(p_source_97,9E125) =  5
285525  THEN 
285526 
285527    --
285528    XLA_AE_LINES_PKG.SetNewLine;
285529 
285530    p_balance_type_code          := l_balance_type_code;
285531    -- set the flag so later we will know whether the gain loss line needs to be created
285532    
285533    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
285534      p_actual_flag :='A';
285535    END IF;
285536 
285537    --
285538    -- bulk performance
285539    --
285540    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
285541                                       p_header_num   => 0); -- 4262811
285542    --
285543    -- set accounting line options
285544    --
285545    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
285546            p_natural_side_code          => 'D'
285547          , p_gain_or_loss_flag          => 'N'
285548          , p_gl_transfer_mode_code      => 'S'
285549          , p_acct_entry_type_code       => 'A'
285550          , p_switch_side_flag           => 'Y'
285551          , p_merge_duplicate_code       => 'N'
285552          );
285553    --
285554    l_acc_rev_natural_side_code := 'C';  -- 4262811
285555    -- 
285556    --
285557    -- set accounting line type info
285558    --
285559    xla_ae_lines_pkg.SetAcctLineType
285560       (p_component_type             => l_component_type
285561       ,p_event_type_code            => l_event_type_code
285562       ,p_line_definition_owner_code => l_line_definition_owner_code
285563       ,p_line_definition_code       => l_line_definition_code
285564       ,p_accounting_line_code       => l_component_code
285565       ,p_accounting_line_type_code  => l_component_type_code
285566       ,p_accounting_line_appl_id    => l_component_appl_id
285567       ,p_amb_context_code           => l_amb_context_code
285568       ,p_entity_code                => l_entity_code
285569       ,p_event_class_code           => l_event_class_code);
285570    --
285571    -- set accounting class
285572    --
285573    xla_ae_lines_pkg.SetAcctClass(
285574            p_accounting_class_code  => 'RECEIVING_INSPECTION'
285575          , p_ae_header_id           => l_ae_header_id
285576          );
285577 
285578    --
285579    -- set rounding class
285580    --
285581    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
285582                       'RECEIVING_INSPECTION';
285583 
285584    --
285585    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
285586    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
285587    --
285588    -- bulk performance
285589    --
285590    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
285591 
285592    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
285593       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
285594 
285595    -- 4955764
285596    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
285597       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
285598 
285599    -- 4458381 Public Sector Enh
285600    
285601    --
285602    -- set accounting attributes for the line type
285603    --
285604    l_entered_amt_idx := 3;
285605    l_accted_amt_idx  := 8;
285606    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
285607    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
285608    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
285609    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
285610    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
285611    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
285612    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
285613    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
285614    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
285615    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
285616    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
285617    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
285618    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
285619    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
285620    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
285621    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
285622    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
285623 
285624    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
285625    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
285626 
285627    ---------------------------------------------------------------------------------------------------------------
285628    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
285629    ---------------------------------------------------------------------------------------------------------------
285630    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
285631 
285632    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
285633    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
285634 
285635    IF xla_accounting_cache_pkg.GetValueChar
285636          (p_source_code         => 'LEDGER_CATEGORY_CODE'
285637          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
285638    AND l_bflow_method_code = 'PRIOR_ENTRY'
285639 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
285640    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
285641          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
285642        )
285643    THEN
285644          xla_ae_lines_pkg.BflowUpgEntry
285645            (p_business_method_code    => l_bflow_method_code
285646            ,p_business_class_code     => l_bflow_class_code
285647            ,p_balance_type            => l_balance_type_code);
285648    ELSE
285649       NULL;
285650 -- No business flow processing for business flow method of NONE.
285651    END IF;
285652 
285653    --
285654    -- call analytical criteria
285655    --
285656    
285657    --
285658    -- call description
285659    --
285660    -- No description or it is inherited.
285661    --
285662    -- call ADRs
285663    -- Bug 4922099
285664    --
285665    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
285666         (NVL(l_actual_upg_option, 'N') = 'O') OR
285667         (NVL(l_enc_upg_option, 'N') = 'O')
285668       )
285669    THEN
285670    NULL;
285671    --
285672    --
285673    
285674   l_ccid := AcctDerRule_6(
285675            p_application_id           => p_application_id
285676          , p_ae_header_id             => l_ae_header_id 
285677 , p_source_11 => p_source_11
285678          , x_transaction_coa_id       => l_adr_transaction_coa_id
285679          , x_accounting_coa_id        => l_adr_accounting_coa_id
285680          , x_value_type_code          => l_adr_value_type_code
285681          , p_side                     => 'NA'
285682    );
285683 
285684    xla_ae_lines_pkg.set_ccid(
285685     p_code_combination_id          => l_ccid
285686   , p_value_type_code              => l_adr_value_type_code
285687   , p_transaction_coa_id           => l_adr_transaction_coa_id
285688   , p_accounting_coa_id            => l_adr_accounting_coa_id
285689   , p_adr_code                     => 'CST_DEFAULT'
285690   , p_adr_type_code                => 'S'
285691   , p_component_type               => l_component_type
285692   , p_component_code               => l_component_code
285693   , p_component_type_code          => l_component_type_code
285694   , p_component_appl_id            => l_component_appl_id
285695   , p_amb_context_code             => l_amb_context_code
285696   , p_side                         => 'NA'
285697   );
285698 
285699 
285700    --
285701    --
285702    END IF;
285703    --
285704    -- Bug 4922099
285705    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
285706           (NVL(l_enc_upg_option, 'N') = 'O')
285707         ) AND
285708         (l_bflow_method_code = 'PRIOR_ENTRY')
285709       )
285710    THEN
285711       IF
285712       --
285713       1 = 2
285714       --
285715       THEN
285716       xla_accounting_err_pkg.build_message
285717                                     (p_appli_s_name            => 'XLA'
285718                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
285719                                     ,p_token_1                 => 'LINE_NUMBER'
285720                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
285721                                     ,p_token_2                 => 'LINE_TYPE_NAME'
285722                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
285723                                                                              l_component_type
285724                                                                             ,l_component_code
285725                                                                             ,l_component_type_code
285726                                                                             ,l_component_appl_id
285727                                                                             ,l_amb_context_code
285728                                                                             ,l_entity_code
285729                                                                             ,l_event_class_code
285730                                                                            )
285731                                     ,p_token_3                 => 'OWNER'
285732                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
285733                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
285734                                                                           ,p_lookup_code    => l_component_type_code
285735                                                                          )
285736                                     ,p_token_4                 => 'PRODUCT_NAME'
285737                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
285738                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
285739                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
285740                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
285741                                     ,p_ae_header_id            =>  NULL
285742                                        );
285743 
285744         IF (C_LEVEL_ERROR>= g_log_level) THEN
285745                  trace
285746                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
285747                       ,p_level    => C_LEVEL_ERROR
285748                       ,p_module   => l_log_module);
285749         END IF;
285750       END IF;
285751    END IF;
285752    --
285753    --
285754    ------------------------------------------------------------------------------------------------
285755    -- 4219869 Business Flow
285756    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
285757    -- Prior Entry.  Currently, the following code is always generated.
285758    ------------------------------------------------------------------------------------------------
285759    XLA_AE_LINES_PKG.ValidateCurrentLine;
285760 
285761    ------------------------------------------------------------------------------------
285762    -- 4219869 Business Flow
285763    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
285764    ------------------------------------------------------------------------------------
285765    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
285766 
285767    ----------------------------------------------------------------------------------
285768    -- 4219869 Business Flow
285769    -- Update journal entry status -- Need to generate this within IF <condition>
285770    ----------------------------------------------------------------------------------
285771    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
285772          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
285773          ,p_balance_type_code => l_balance_type_code
285774          );
285775 
285776    -------------------------------------------------------------------------------------------
285777    -- 4262811 - Generate the Accrual Reversal lines
285778    -------------------------------------------------------------------------------------------
285779    BEGIN
285780       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
285781                               (g_array_event(p_event_id).array_value_num('header_index'));
285782       IF l_acc_rev_flag IS NULL THEN
285783          l_acc_rev_flag := 'N';
285784       END IF;
285785    EXCEPTION
285786       WHEN OTHERS THEN
285787          l_acc_rev_flag := 'N';
285788    END;
285789    --
285790    IF (l_acc_rev_flag = 'Y') THEN
285791 
285792        -- 4645092  ------------------------------------------------------------------------------
285793        -- To allow MPA report to determine if it should generate report process
285794        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
285795        ------------------------------------------------------------------------------------------
285796 
285797        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
285798        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
285799    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
285800    -- call ADRs
285801    -- Bug 4922099
285802    --
285803    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
285804         (NVL(l_actual_upg_option, 'N') = 'O') OR
285805         (NVL(l_enc_upg_option, 'N') = 'O')
285806       )
285807    THEN
285808    NULL;
285809    --
285810    --
285811    
285812   l_ccid := AcctDerRule_6(
285813            p_application_id           => p_application_id
285814          , p_ae_header_id             => l_ae_header_id 
285815 , p_source_11 => p_source_11
285816          , x_transaction_coa_id       => l_adr_transaction_coa_id
285817          , x_accounting_coa_id        => l_adr_accounting_coa_id
285818          , x_value_type_code          => l_adr_value_type_code
285819          , p_side                     => 'NA'
285820    );
285821 
285822    xla_ae_lines_pkg.set_ccid(
285823     p_code_combination_id          => l_ccid
285824   , p_value_type_code              => l_adr_value_type_code
285825   , p_transaction_coa_id           => l_adr_transaction_coa_id
285826   , p_accounting_coa_id            => l_adr_accounting_coa_id
285827   , p_adr_code                     => 'CST_DEFAULT'
285828   , p_adr_type_code                => 'S'
285829   , p_component_type               => l_component_type
285830   , p_component_code               => l_component_code
285831   , p_component_type_code          => l_component_type_code
285832   , p_component_appl_id            => l_component_appl_id
285833   , p_amb_context_code             => l_amb_context_code
285834   , p_side                         => 'NA'
285835   );
285836 
285837 
285838    --
285839    --
285840    END IF;
285841 
285842        --
285843        -- Update the line information that should be overwritten
285844        --
285845        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
285846                                          p_header_num   => 1);
285847        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
285848 
285849        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
285850 
285851        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
285852           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
285853        END IF;
285854 
285855       --
285856       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
285857       --
285858       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
285859           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
285860       ELSE
285861           ---------------------------------------------------------------------------------------------------
285862           -- 4262811a Switch Sign
285863           ---------------------------------------------------------------------------------------------------
285864           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
285865           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
285866                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
285867           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
285868                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
285869           -- 5132302
285870           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
285871                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
285872 
285873       END IF;
285874 
285875       -- 4955764
285876       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
285877       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
285878 
285879 
285880       XLA_AE_LINES_PKG.ValidateCurrentLine;
285881       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
285882 
285883       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
285884                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
285885                ,p_balance_type_code => l_balance_type_code);
285886 
285887    END IF;
285888 
285889    -----------------------------------------------------------------------------------------
285890    -- 4262811 Multiperiod Accounting
285891    -----------------------------------------------------------------------------------------
285892      -- No MPA option is assigned.
285893 
285894 
285895 END IF;
285896 END IF;
285897 --
285898 
285899 --
285900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
285901    trace
285902       (p_msg      => 'END of AcctLineType_510'
285903       ,p_level    => C_LEVEL_PROCEDURE
285904       ,p_module   => l_log_module);
285905 END IF;
285906 --
285907 EXCEPTION
285908   WHEN xla_exceptions_pkg.application_exception THEN
285909       RAISE;
285910   WHEN OTHERS THEN
285911        xla_exceptions_pkg.raise_message
285912            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_510');
285913 END AcctLineType_510;
285914 --
285915 
285916 ---------------------------------------
285917 --
285918 -- PRIVATE FUNCTION
285919 --         AcctLineType_511
285920 --
285921 ---------------------------------------
285922 PROCEDURE AcctLineType_511 (
285923   p_application_id        IN NUMBER
285924  ,p_event_id              IN NUMBER
285925  ,p_calculate_acctd_flag  IN VARCHAR2
285926  ,p_calculate_g_l_flag    IN VARCHAR2
285927  ,p_actual_flag           IN OUT VARCHAR2
285928  ,p_balance_type_code     OUT VARCHAR2
285929  ,p_gain_or_loss_ref      OUT VARCHAR2
285930  
285931 --Cost Management Default Account
285932  , p_source_11            IN NUMBER
285933 --DISTRIBUTION_IDENTIFIER
285934  , p_source_84            IN NUMBER
285935 --Distribution Type
285936  , p_source_85            IN VARCHAR2
285937  , p_source_85_meaning    IN VARCHAR2
285938 --Entered Currency Code
285939  , p_source_88            IN VARCHAR2
285940 --Entered Amount
285941  , p_source_91            IN NUMBER
285942 --Currency Conversion Date
285943  , p_source_92            IN DATE
285944 --Currency Conversion Rate
285945  , p_source_93            IN NUMBER
285946 --Accounted Amount
285947  , p_source_95            IN NUMBER
285948 --Accounting Line Type
285949  , p_source_97            IN NUMBER
285950 )
285951 IS
285952 
285953 l_component_type              VARCHAR2(80);
285954 l_component_code              VARCHAR2(30);
285955 l_component_type_code         VARCHAR2(1);
285956 l_component_appl_id           INTEGER;
285957 l_amb_context_code            VARCHAR2(30);
285958 l_entity_code                 VARCHAR2(30);
285959 l_event_class_code            VARCHAR2(30);
285960 l_ae_header_id                NUMBER;
285961 l_event_type_code             VARCHAR2(30);
285962 l_line_definition_code        VARCHAR2(30);
285963 l_line_definition_owner_code  VARCHAR2(1);
285964 --
285965 -- adr variables
285966 l_segment                     VARCHAR2(30);
285967 l_ccid                        NUMBER;
285968 l_adr_transaction_coa_id      NUMBER;
285969 l_adr_accounting_coa_id       NUMBER;
285970 l_adr_flexfield_segment_code  VARCHAR2(30);
285971 l_adr_flex_value_set_id       NUMBER;
285972 l_adr_value_type_code         VARCHAR2(30);
285973 l_adr_value_combination_id    NUMBER;
285974 l_adr_value_segment_code      VARCHAR2(30);
285975 
285976 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
285977 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
285978 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
285979 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
285980 
285981 -- 4262811 Variables ------------------------------------------------------------------------------------------
285982 l_entered_amt_idx             NUMBER;
285983 l_accted_amt_idx              NUMBER;
285984 l_acc_rev_flag                VARCHAR2(1);
285985 l_accrual_line_num            NUMBER;
285986 l_tmp_amt                     NUMBER;
285987 l_acc_rev_natural_side_code   VARCHAR2(1);
285988 
285989 l_num_entries                 NUMBER;
285990 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
285991 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
285992 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
285993 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
285994 l_recog_line_1                NUMBER;
285995 l_recog_line_2                NUMBER;
285996 
285997 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
285998 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
285999 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
286000 
286001 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
286002 
286003 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
286004 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
286005 
286006 ---------------------------------------------------------------------------------------------------------------
286007 
286008 
286009 --
286010 -- bulk performance
286011 --
286012 l_balance_type_code           VARCHAR2(1);
286013 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
286014 l_log_module                  VARCHAR2(240);
286015 
286016 --
286017 -- Upgrade strategy
286018 --
286019 l_actual_upg_option           VARCHAR2(1);
286020 l_enc_upg_option           VARCHAR2(1);
286021 
286022 --
286023 BEGIN
286024 --
286025 IF g_log_enabled THEN
286026       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_511';
286027 END IF;
286028 --
286029 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
286030 
286031       trace
286032          (p_msg      => 'BEGIN of AcctLineType_511'
286033          ,p_level    => C_LEVEL_PROCEDURE
286034          ,p_module   => l_log_module);
286035 
286036 END IF;
286037 --
286038 l_component_type             := 'AMB_JLT';
286039 l_component_code             := 'RESOURCE_ABSORPTION';
286040 l_component_type_code        := 'S';
286041 l_component_appl_id          :=  707;
286042 l_amb_context_code           := 'DEFAULT';
286043 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
286044 l_event_class_code           := 'OSP';
286045 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
286046 l_line_definition_owner_code := 'S';
286047 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
286048 --
286049 l_balance_type_code          := 'A';
286050 l_segment                     := NULL;
286051 l_ccid                        := NULL;
286052 l_adr_transaction_coa_id      := NULL;
286053 l_adr_accounting_coa_id       := NULL;
286054 l_adr_flexfield_segment_code  := NULL;
286055 l_adr_flex_value_set_id       := NULL;
286056 l_adr_value_type_code         := NULL;
286057 l_adr_value_combination_id    := NULL;
286058 l_adr_value_segment_code      := NULL;
286059 
286060 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
286061 l_bflow_class_code           := '';    -- 4219869 Business Flow
286062 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
286063 l_budgetary_control_flag     := 'N';
286064 
286065 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
286066 l_bflow_applied_to_amt       := NULL; -- 5132302
286067 l_entered_amt_idx            := NULL;          -- 4262811
286068 l_accted_amt_idx             := NULL;          -- 4262811
286069 l_acc_rev_flag               := NULL;          -- 4262811
286070 l_accrual_line_num           := NULL;          -- 4262811
286071 l_tmp_amt                    := NULL;          -- 4262811
286072 --
286073  
286074 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
286075     l_balance_type_code <> 'B' THEN
286076 IF NVL(p_source_97,9E125) =  4
286077  THEN 
286078 
286079    --
286080    XLA_AE_LINES_PKG.SetNewLine;
286081 
286082    p_balance_type_code          := l_balance_type_code;
286083    -- set the flag so later we will know whether the gain loss line needs to be created
286084    
286085    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
286086      p_actual_flag :='A';
286087    END IF;
286088 
286089    --
286090    -- bulk performance
286091    --
286092    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
286093                                       p_header_num   => 0); -- 4262811
286094    --
286095    -- set accounting line options
286096    --
286097    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
286098            p_natural_side_code          => 'D'
286099          , p_gain_or_loss_flag          => 'N'
286100          , p_gl_transfer_mode_code      => 'S'
286101          , p_acct_entry_type_code       => 'A'
286102          , p_switch_side_flag           => 'Y'
286103          , p_merge_duplicate_code       => 'N'
286104          );
286105    --
286106    l_acc_rev_natural_side_code := 'C';  -- 4262811
286107    -- 
286108    --
286109    -- set accounting line type info
286110    --
286111    xla_ae_lines_pkg.SetAcctLineType
286112       (p_component_type             => l_component_type
286113       ,p_event_type_code            => l_event_type_code
286114       ,p_line_definition_owner_code => l_line_definition_owner_code
286115       ,p_line_definition_code       => l_line_definition_code
286116       ,p_accounting_line_code       => l_component_code
286117       ,p_accounting_line_type_code  => l_component_type_code
286118       ,p_accounting_line_appl_id    => l_component_appl_id
286119       ,p_amb_context_code           => l_amb_context_code
286120       ,p_entity_code                => l_entity_code
286121       ,p_event_class_code           => l_event_class_code);
286122    --
286123    -- set accounting class
286124    --
286125    xla_ae_lines_pkg.SetAcctClass(
286126            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
286127          , p_ae_header_id           => l_ae_header_id
286128          );
286129 
286130    --
286131    -- set rounding class
286132    --
286133    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
286134                       'RESOURCE_ABSORPTION';
286135 
286136    --
286137    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
286138    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
286139    --
286140    -- bulk performance
286141    --
286142    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
286143 
286144    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
286145       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
286146 
286147    -- 4955764
286148    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
286149       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
286150 
286151    -- 4458381 Public Sector Enh
286152    
286153    --
286154    -- set accounting attributes for the line type
286155    --
286156    l_entered_amt_idx := 3;
286157    l_accted_amt_idx  := 8;
286158    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
286159    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
286160    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
286161    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
286162    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
286163    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
286164    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
286165    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
286166    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
286167    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
286168    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
286169    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
286170    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
286171    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
286172    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
286173    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
286174    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
286175 
286176    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
286177    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
286178 
286179    ---------------------------------------------------------------------------------------------------------------
286180    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
286181    ---------------------------------------------------------------------------------------------------------------
286182    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
286183 
286184    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
286185    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
286186 
286187    IF xla_accounting_cache_pkg.GetValueChar
286188          (p_source_code         => 'LEDGER_CATEGORY_CODE'
286189          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
286190    AND l_bflow_method_code = 'PRIOR_ENTRY'
286191 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
286192    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
286193          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
286194        )
286195    THEN
286196          xla_ae_lines_pkg.BflowUpgEntry
286197            (p_business_method_code    => l_bflow_method_code
286198            ,p_business_class_code     => l_bflow_class_code
286199            ,p_balance_type            => l_balance_type_code);
286200    ELSE
286201       NULL;
286202 -- No business flow processing for business flow method of NONE.
286203    END IF;
286204 
286205    --
286206    -- call analytical criteria
286207    --
286208    
286209    --
286210    -- call description
286211    --
286212    -- No description or it is inherited.
286213    --
286214    -- call ADRs
286215    -- Bug 4922099
286216    --
286217    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
286218         (NVL(l_actual_upg_option, 'N') = 'O') OR
286219         (NVL(l_enc_upg_option, 'N') = 'O')
286220       )
286221    THEN
286222    NULL;
286223    --
286224    --
286225    
286226   l_ccid := AcctDerRule_6(
286227            p_application_id           => p_application_id
286228          , p_ae_header_id             => l_ae_header_id 
286229 , p_source_11 => p_source_11
286230          , x_transaction_coa_id       => l_adr_transaction_coa_id
286231          , x_accounting_coa_id        => l_adr_accounting_coa_id
286232          , x_value_type_code          => l_adr_value_type_code
286233          , p_side                     => 'NA'
286234    );
286235 
286236    xla_ae_lines_pkg.set_ccid(
286237     p_code_combination_id          => l_ccid
286238   , p_value_type_code              => l_adr_value_type_code
286239   , p_transaction_coa_id           => l_adr_transaction_coa_id
286240   , p_accounting_coa_id            => l_adr_accounting_coa_id
286241   , p_adr_code                     => 'CST_DEFAULT'
286242   , p_adr_type_code                => 'S'
286243   , p_component_type               => l_component_type
286244   , p_component_code               => l_component_code
286245   , p_component_type_code          => l_component_type_code
286246   , p_component_appl_id            => l_component_appl_id
286247   , p_amb_context_code             => l_amb_context_code
286248   , p_side                         => 'NA'
286249   );
286250 
286251 
286252    --
286253    --
286254    END IF;
286255    --
286256    -- Bug 4922099
286257    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
286258           (NVL(l_enc_upg_option, 'N') = 'O')
286259         ) AND
286260         (l_bflow_method_code = 'PRIOR_ENTRY')
286261       )
286262    THEN
286263       IF
286264       --
286265       1 = 2
286266       --
286267       THEN
286268       xla_accounting_err_pkg.build_message
286269                                     (p_appli_s_name            => 'XLA'
286270                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
286271                                     ,p_token_1                 => 'LINE_NUMBER'
286272                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
286273                                     ,p_token_2                 => 'LINE_TYPE_NAME'
286274                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
286275                                                                              l_component_type
286276                                                                             ,l_component_code
286277                                                                             ,l_component_type_code
286278                                                                             ,l_component_appl_id
286279                                                                             ,l_amb_context_code
286280                                                                             ,l_entity_code
286281                                                                             ,l_event_class_code
286282                                                                            )
286283                                     ,p_token_3                 => 'OWNER'
286284                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
286285                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
286286                                                                           ,p_lookup_code    => l_component_type_code
286287                                                                          )
286288                                     ,p_token_4                 => 'PRODUCT_NAME'
286289                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
286290                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
286291                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
286292                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
286293                                     ,p_ae_header_id            =>  NULL
286294                                        );
286295 
286296         IF (C_LEVEL_ERROR>= g_log_level) THEN
286297                  trace
286298                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
286299                       ,p_level    => C_LEVEL_ERROR
286300                       ,p_module   => l_log_module);
286301         END IF;
286302       END IF;
286303    END IF;
286304    --
286305    --
286306    ------------------------------------------------------------------------------------------------
286307    -- 4219869 Business Flow
286308    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
286309    -- Prior Entry.  Currently, the following code is always generated.
286310    ------------------------------------------------------------------------------------------------
286311    XLA_AE_LINES_PKG.ValidateCurrentLine;
286312 
286313    ------------------------------------------------------------------------------------
286314    -- 4219869 Business Flow
286315    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
286316    ------------------------------------------------------------------------------------
286317    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
286318 
286319    ----------------------------------------------------------------------------------
286320    -- 4219869 Business Flow
286321    -- Update journal entry status -- Need to generate this within IF <condition>
286322    ----------------------------------------------------------------------------------
286323    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
286324          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
286325          ,p_balance_type_code => l_balance_type_code
286326          );
286327 
286328    -------------------------------------------------------------------------------------------
286329    -- 4262811 - Generate the Accrual Reversal lines
286330    -------------------------------------------------------------------------------------------
286331    BEGIN
286332       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
286333                               (g_array_event(p_event_id).array_value_num('header_index'));
286334       IF l_acc_rev_flag IS NULL THEN
286335          l_acc_rev_flag := 'N';
286336       END IF;
286337    EXCEPTION
286338       WHEN OTHERS THEN
286339          l_acc_rev_flag := 'N';
286340    END;
286341    --
286342    IF (l_acc_rev_flag = 'Y') THEN
286343 
286344        -- 4645092  ------------------------------------------------------------------------------
286345        -- To allow MPA report to determine if it should generate report process
286346        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
286347        ------------------------------------------------------------------------------------------
286348 
286349        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
286350        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
286351    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
286352    -- call ADRs
286353    -- Bug 4922099
286354    --
286355    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
286356         (NVL(l_actual_upg_option, 'N') = 'O') OR
286357         (NVL(l_enc_upg_option, 'N') = 'O')
286358       )
286359    THEN
286360    NULL;
286361    --
286362    --
286363    
286364   l_ccid := AcctDerRule_6(
286365            p_application_id           => p_application_id
286366          , p_ae_header_id             => l_ae_header_id 
286367 , p_source_11 => p_source_11
286368          , x_transaction_coa_id       => l_adr_transaction_coa_id
286369          , x_accounting_coa_id        => l_adr_accounting_coa_id
286370          , x_value_type_code          => l_adr_value_type_code
286371          , p_side                     => 'NA'
286372    );
286373 
286374    xla_ae_lines_pkg.set_ccid(
286375     p_code_combination_id          => l_ccid
286376   , p_value_type_code              => l_adr_value_type_code
286377   , p_transaction_coa_id           => l_adr_transaction_coa_id
286378   , p_accounting_coa_id            => l_adr_accounting_coa_id
286379   , p_adr_code                     => 'CST_DEFAULT'
286380   , p_adr_type_code                => 'S'
286381   , p_component_type               => l_component_type
286382   , p_component_code               => l_component_code
286383   , p_component_type_code          => l_component_type_code
286384   , p_component_appl_id            => l_component_appl_id
286385   , p_amb_context_code             => l_amb_context_code
286386   , p_side                         => 'NA'
286387   );
286388 
286389 
286390    --
286391    --
286392    END IF;
286393 
286394        --
286395        -- Update the line information that should be overwritten
286396        --
286397        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
286398                                          p_header_num   => 1);
286399        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
286400 
286401        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
286402 
286403        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
286404           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
286405        END IF;
286406 
286407       --
286408       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
286409       --
286410       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
286411           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
286412       ELSE
286413           ---------------------------------------------------------------------------------------------------
286414           -- 4262811a Switch Sign
286415           ---------------------------------------------------------------------------------------------------
286416           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
286417           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
286418                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
286419           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
286420                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
286421           -- 5132302
286422           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
286423                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
286424 
286425       END IF;
286426 
286427       -- 4955764
286428       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
286429       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
286430 
286431 
286432       XLA_AE_LINES_PKG.ValidateCurrentLine;
286433       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
286434 
286435       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
286436                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
286437                ,p_balance_type_code => l_balance_type_code);
286438 
286439    END IF;
286440 
286441    -----------------------------------------------------------------------------------------
286442    -- 4262811 Multiperiod Accounting
286443    -----------------------------------------------------------------------------------------
286444      -- No MPA option is assigned.
286445 
286446 
286447 END IF;
286448 END IF;
286449 --
286450 
286451 --
286452 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
286453    trace
286454       (p_msg      => 'END of AcctLineType_511'
286455       ,p_level    => C_LEVEL_PROCEDURE
286456       ,p_module   => l_log_module);
286457 END IF;
286458 --
286459 EXCEPTION
286460   WHEN xla_exceptions_pkg.application_exception THEN
286461       RAISE;
286462   WHEN OTHERS THEN
286463        xla_exceptions_pkg.raise_message
286464            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_511');
286465 END AcctLineType_511;
286466 --
286467 
286468 ---------------------------------------
286469 --
286470 -- PRIVATE FUNCTION
286471 --         AcctLineType_512
286472 --
286473 ---------------------------------------
286474 PROCEDURE AcctLineType_512 (
286475   p_application_id        IN NUMBER
286476  ,p_event_id              IN NUMBER
286477  ,p_calculate_acctd_flag  IN VARCHAR2
286478  ,p_calculate_g_l_flag    IN VARCHAR2
286479  ,p_actual_flag           IN OUT VARCHAR2
286480  ,p_balance_type_code     OUT VARCHAR2
286481  ,p_gain_or_loss_ref      OUT VARCHAR2
286482  
286483 --TRANSACTION_ID
286484  , p_source_1            IN NUMBER
286485 --Transaction Unit of Measure Code
286486  , p_source_4            IN VARCHAR2
286487 --Primary Quantity of the Transaction
286488  , p_source_6            IN NUMBER
286489 --WIP Transaction Type
286490  , p_source_7            IN NUMBER
286491  , p_source_7_meaning    IN VARCHAR2
286492 --Cost Management Default Account
286493  , p_source_11            IN NUMBER
286494 --DISTRIBUTION_IDENTIFIER
286495  , p_source_84            IN NUMBER
286496 --Distribution Type
286497  , p_source_85            IN VARCHAR2
286498  , p_source_85_meaning    IN VARCHAR2
286499 --Entered Currency Code
286500  , p_source_88            IN VARCHAR2
286501 --Entered Amount
286502  , p_source_91            IN NUMBER
286503 --Currency Conversion Date
286504  , p_source_92            IN DATE
286505 --Currency Conversion Rate
286506  , p_source_93            IN NUMBER
286507 --Accounted Amount
286508  , p_source_95            IN NUMBER
286509 --Accounting Line Type
286510  , p_source_97            IN NUMBER
286511 )
286512 IS
286513 
286514 l_component_type              VARCHAR2(80);
286515 l_component_code              VARCHAR2(30);
286516 l_component_type_code         VARCHAR2(1);
286517 l_component_appl_id           INTEGER;
286518 l_amb_context_code            VARCHAR2(30);
286519 l_entity_code                 VARCHAR2(30);
286520 l_event_class_code            VARCHAR2(30);
286521 l_ae_header_id                NUMBER;
286522 l_event_type_code             VARCHAR2(30);
286523 l_line_definition_code        VARCHAR2(30);
286524 l_line_definition_owner_code  VARCHAR2(1);
286525 --
286526 -- adr variables
286527 l_segment                     VARCHAR2(30);
286528 l_ccid                        NUMBER;
286529 l_adr_transaction_coa_id      NUMBER;
286530 l_adr_accounting_coa_id       NUMBER;
286531 l_adr_flexfield_segment_code  VARCHAR2(30);
286532 l_adr_flex_value_set_id       NUMBER;
286533 l_adr_value_type_code         VARCHAR2(30);
286534 l_adr_value_combination_id    NUMBER;
286535 l_adr_value_segment_code      VARCHAR2(30);
286536 
286537 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
286538 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
286539 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
286540 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
286541 
286542 -- 4262811 Variables ------------------------------------------------------------------------------------------
286543 l_entered_amt_idx             NUMBER;
286544 l_accted_amt_idx              NUMBER;
286545 l_acc_rev_flag                VARCHAR2(1);
286546 l_accrual_line_num            NUMBER;
286547 l_tmp_amt                     NUMBER;
286548 l_acc_rev_natural_side_code   VARCHAR2(1);
286549 
286550 l_num_entries                 NUMBER;
286551 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
286552 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
286553 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
286554 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
286555 l_recog_line_1                NUMBER;
286556 l_recog_line_2                NUMBER;
286557 
286558 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
286559 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
286560 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
286561 
286562 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
286563 
286564 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
286565 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
286566 
286567 ---------------------------------------------------------------------------------------------------------------
286568 
286569 
286570 --
286571 -- bulk performance
286572 --
286573 l_balance_type_code           VARCHAR2(1);
286574 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
286575 l_log_module                  VARCHAR2(240);
286576 
286577 --
286578 -- Upgrade strategy
286579 --
286580 l_actual_upg_option           VARCHAR2(1);
286581 l_enc_upg_option           VARCHAR2(1);
286582 
286583 --
286584 BEGIN
286585 --
286586 IF g_log_enabled THEN
286587       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_512';
286588 END IF;
286589 --
286590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
286591 
286592       trace
286593          (p_msg      => 'BEGIN of AcctLineType_512'
286594          ,p_level    => C_LEVEL_PROCEDURE
286595          ,p_module   => l_log_module);
286596 
286597 END IF;
286598 --
286599 l_component_type             := 'AMB_JLT';
286600 l_component_code             := 'RESOURCE_ABSORPTION';
286601 l_component_type_code        := 'S';
286602 l_component_appl_id          :=  707;
286603 l_amb_context_code           := 'DEFAULT';
286604 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
286605 l_event_class_code           := 'OSP';
286606 l_event_type_code            := 'OSP';
286607 l_line_definition_owner_code := 'S';
286608 l_line_definition_code       := 'PI_OSP';
286609 --
286610 l_balance_type_code          := 'A';
286611 l_segment                     := NULL;
286612 l_ccid                        := NULL;
286613 l_adr_transaction_coa_id      := NULL;
286614 l_adr_accounting_coa_id       := NULL;
286615 l_adr_flexfield_segment_code  := NULL;
286616 l_adr_flex_value_set_id       := NULL;
286617 l_adr_value_type_code         := NULL;
286618 l_adr_value_combination_id    := NULL;
286619 l_adr_value_segment_code      := NULL;
286620 
286621 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
286622 l_bflow_class_code           := '';    -- 4219869 Business Flow
286623 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
286624 l_budgetary_control_flag     := 'N';
286625 
286626 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
286627 l_bflow_applied_to_amt       := NULL; -- 5132302
286628 l_entered_amt_idx            := NULL;          -- 4262811
286629 l_accted_amt_idx             := NULL;          -- 4262811
286630 l_acc_rev_flag               := NULL;          -- 4262811
286631 l_accrual_line_num           := NULL;          -- 4262811
286632 l_tmp_amt                    := NULL;          -- 4262811
286633 --
286634  
286635 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
286636     l_balance_type_code <> 'B' THEN
286637 IF NVL(p_source_97,9E125) =  4
286638  THEN 
286639 
286640    --
286641    XLA_AE_LINES_PKG.SetNewLine;
286642 
286643    p_balance_type_code          := l_balance_type_code;
286644    -- set the flag so later we will know whether the gain loss line needs to be created
286645    
286646    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
286647      p_actual_flag :='A';
286648    END IF;
286649 
286650    --
286651    -- bulk performance
286652    --
286653    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
286654                                       p_header_num   => 0); -- 4262811
286655    --
286656    -- set accounting line options
286657    --
286658    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
286659            p_natural_side_code          => 'D'
286660          , p_gain_or_loss_flag          => 'N'
286661          , p_gl_transfer_mode_code      => 'S'
286662          , p_acct_entry_type_code       => 'A'
286663          , p_switch_side_flag           => 'Y'
286664          , p_merge_duplicate_code       => 'N'
286665          );
286666    --
286667    l_acc_rev_natural_side_code := 'C';  -- 4262811
286668    -- 
286669    --
286670    -- set accounting line type info
286671    --
286672    xla_ae_lines_pkg.SetAcctLineType
286673       (p_component_type             => l_component_type
286674       ,p_event_type_code            => l_event_type_code
286675       ,p_line_definition_owner_code => l_line_definition_owner_code
286676       ,p_line_definition_code       => l_line_definition_code
286677       ,p_accounting_line_code       => l_component_code
286678       ,p_accounting_line_type_code  => l_component_type_code
286679       ,p_accounting_line_appl_id    => l_component_appl_id
286680       ,p_amb_context_code           => l_amb_context_code
286681       ,p_entity_code                => l_entity_code
286682       ,p_event_class_code           => l_event_class_code);
286683    --
286684    -- set accounting class
286685    --
286686    xla_ae_lines_pkg.SetAcctClass(
286687            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
286688          , p_ae_header_id           => l_ae_header_id
286689          );
286690 
286691    --
286692    -- set rounding class
286693    --
286694    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
286695                       'RESOURCE_ABSORPTION';
286696 
286697    --
286698    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
286699    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
286700    --
286701    -- bulk performance
286702    --
286703    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
286704 
286705    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
286706       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
286707 
286708    -- 4955764
286709    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
286710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
286711 
286712    -- 4458381 Public Sector Enh
286713    
286714    --
286715    -- set accounting attributes for the line type
286716    --
286717    l_entered_amt_idx := 3;
286718    l_accted_amt_idx  := 8;
286719    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
286720    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
286721    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
286722    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
286723    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
286724    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
286725    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
286726    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
286727    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
286728    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
286729    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
286730    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
286731    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
286732    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
286733    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
286734    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
286735    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
286736 
286737    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
286738    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
286739 
286740    ---------------------------------------------------------------------------------------------------------------
286741    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
286742    ---------------------------------------------------------------------------------------------------------------
286743    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
286744 
286745    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
286746    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
286747 
286748    IF xla_accounting_cache_pkg.GetValueChar
286749          (p_source_code         => 'LEDGER_CATEGORY_CODE'
286750          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
286751    AND l_bflow_method_code = 'PRIOR_ENTRY'
286752 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
286753    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
286754          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
286755        )
286756    THEN
286757          xla_ae_lines_pkg.BflowUpgEntry
286758            (p_business_method_code    => l_bflow_method_code
286759            ,p_business_class_code     => l_bflow_class_code
286760            ,p_balance_type            => l_balance_type_code);
286761    ELSE
286762       NULL;
286763 -- No business flow processing for business flow method of NONE.
286764    END IF;
286765 
286766    --
286767    -- call analytical criteria
286768    --
286769    
286770    --
286771    -- call description
286772    --
286773    
286774 xla_ae_lines_pkg.SetLineDescription(
286775    p_ae_header_id => l_ae_header_id
286776   ,p_description  => Description_2 (
286777      p_application_id         => p_application_id
286778    , p_ae_header_id           => l_ae_header_id 
286779 , p_source_1 => p_source_1
286780 , p_source_4 => p_source_4
286781 , p_source_6 => p_source_6
286782 , p_source_7 => p_source_7
286783 , p_source_7_meaning => p_source_7_meaning
286784    )
286785 );
286786 
286787 
286788    --
286789    -- call ADRs
286790    -- Bug 4922099
286791    --
286792    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
286793         (NVL(l_actual_upg_option, 'N') = 'O') OR
286794         (NVL(l_enc_upg_option, 'N') = 'O')
286795       )
286796    THEN
286797    NULL;
286798    --
286799    --
286800    
286801   l_ccid := AcctDerRule_6(
286802            p_application_id           => p_application_id
286803          , p_ae_header_id             => l_ae_header_id 
286804 , p_source_11 => p_source_11
286805          , x_transaction_coa_id       => l_adr_transaction_coa_id
286806          , x_accounting_coa_id        => l_adr_accounting_coa_id
286807          , x_value_type_code          => l_adr_value_type_code
286808          , p_side                     => 'NA'
286809    );
286810 
286811    xla_ae_lines_pkg.set_ccid(
286812     p_code_combination_id          => l_ccid
286813   , p_value_type_code              => l_adr_value_type_code
286814   , p_transaction_coa_id           => l_adr_transaction_coa_id
286815   , p_accounting_coa_id            => l_adr_accounting_coa_id
286816   , p_adr_code                     => 'CST_DEFAULT'
286817   , p_adr_type_code                => 'S'
286818   , p_component_type               => l_component_type
286819   , p_component_code               => l_component_code
286820   , p_component_type_code          => l_component_type_code
286821   , p_component_appl_id            => l_component_appl_id
286822   , p_amb_context_code             => l_amb_context_code
286823   , p_side                         => 'NA'
286824   );
286825 
286826 
286827    --
286828    --
286829    END IF;
286830    --
286831    -- Bug 4922099
286832    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
286833           (NVL(l_enc_upg_option, 'N') = 'O')
286834         ) AND
286835         (l_bflow_method_code = 'PRIOR_ENTRY')
286836       )
286837    THEN
286838       IF
286839       --
286840       1 = 2
286841       --
286842       THEN
286843       xla_accounting_err_pkg.build_message
286844                                     (p_appli_s_name            => 'XLA'
286845                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
286846                                     ,p_token_1                 => 'LINE_NUMBER'
286847                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
286848                                     ,p_token_2                 => 'LINE_TYPE_NAME'
286849                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
286850                                                                              l_component_type
286851                                                                             ,l_component_code
286852                                                                             ,l_component_type_code
286853                                                                             ,l_component_appl_id
286854                                                                             ,l_amb_context_code
286855                                                                             ,l_entity_code
286856                                                                             ,l_event_class_code
286857                                                                            )
286858                                     ,p_token_3                 => 'OWNER'
286859                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
286860                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
286861                                                                           ,p_lookup_code    => l_component_type_code
286862                                                                          )
286863                                     ,p_token_4                 => 'PRODUCT_NAME'
286864                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
286865                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
286866                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
286867                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
286868                                     ,p_ae_header_id            =>  NULL
286869                                        );
286870 
286871         IF (C_LEVEL_ERROR>= g_log_level) THEN
286872                  trace
286873                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
286874                       ,p_level    => C_LEVEL_ERROR
286875                       ,p_module   => l_log_module);
286876         END IF;
286877       END IF;
286878    END IF;
286879    --
286880    --
286881    ------------------------------------------------------------------------------------------------
286882    -- 4219869 Business Flow
286883    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
286884    -- Prior Entry.  Currently, the following code is always generated.
286885    ------------------------------------------------------------------------------------------------
286886    XLA_AE_LINES_PKG.ValidateCurrentLine;
286887 
286888    ------------------------------------------------------------------------------------
286889    -- 4219869 Business Flow
286890    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
286891    ------------------------------------------------------------------------------------
286892    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
286893 
286894    ----------------------------------------------------------------------------------
286895    -- 4219869 Business Flow
286896    -- Update journal entry status -- Need to generate this within IF <condition>
286897    ----------------------------------------------------------------------------------
286898    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
286899          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
286900          ,p_balance_type_code => l_balance_type_code
286901          );
286902 
286903    -------------------------------------------------------------------------------------------
286904    -- 4262811 - Generate the Accrual Reversal lines
286905    -------------------------------------------------------------------------------------------
286906    BEGIN
286907       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
286908                               (g_array_event(p_event_id).array_value_num('header_index'));
286909       IF l_acc_rev_flag IS NULL THEN
286910          l_acc_rev_flag := 'N';
286911       END IF;
286912    EXCEPTION
286913       WHEN OTHERS THEN
286914          l_acc_rev_flag := 'N';
286915    END;
286916    --
286917    IF (l_acc_rev_flag = 'Y') THEN
286918 
286919        -- 4645092  ------------------------------------------------------------------------------
286920        -- To allow MPA report to determine if it should generate report process
286921        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
286922        ------------------------------------------------------------------------------------------
286923 
286924        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
286925        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
286926    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
286927    -- call ADRs
286928    -- Bug 4922099
286929    --
286930    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
286931         (NVL(l_actual_upg_option, 'N') = 'O') OR
286932         (NVL(l_enc_upg_option, 'N') = 'O')
286933       )
286934    THEN
286935    NULL;
286936    --
286937    --
286938    
286939   l_ccid := AcctDerRule_6(
286940            p_application_id           => p_application_id
286941          , p_ae_header_id             => l_ae_header_id 
286942 , p_source_11 => p_source_11
286943          , x_transaction_coa_id       => l_adr_transaction_coa_id
286944          , x_accounting_coa_id        => l_adr_accounting_coa_id
286945          , x_value_type_code          => l_adr_value_type_code
286946          , p_side                     => 'NA'
286947    );
286948 
286949    xla_ae_lines_pkg.set_ccid(
286950     p_code_combination_id          => l_ccid
286951   , p_value_type_code              => l_adr_value_type_code
286952   , p_transaction_coa_id           => l_adr_transaction_coa_id
286953   , p_accounting_coa_id            => l_adr_accounting_coa_id
286954   , p_adr_code                     => 'CST_DEFAULT'
286955   , p_adr_type_code                => 'S'
286956   , p_component_type               => l_component_type
286957   , p_component_code               => l_component_code
286958   , p_component_type_code          => l_component_type_code
286959   , p_component_appl_id            => l_component_appl_id
286960   , p_amb_context_code             => l_amb_context_code
286961   , p_side                         => 'NA'
286962   );
286963 
286964 
286965    --
286966    --
286967    END IF;
286968 
286969        --
286970        -- Update the line information that should be overwritten
286971        --
286972        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
286973                                          p_header_num   => 1);
286974        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
286975 
286976        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
286977 
286978        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
286979           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
286980        END IF;
286981 
286982       --
286983       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
286984       --
286985       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
286986           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
286987       ELSE
286988           ---------------------------------------------------------------------------------------------------
286989           -- 4262811a Switch Sign
286990           ---------------------------------------------------------------------------------------------------
286991           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
286992           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
286993                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
286994           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
286995                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
286996           -- 5132302
286997           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
286998                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
286999 
287000       END IF;
287001 
287002       -- 4955764
287003       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
287004       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
287005 
287006 
287007       XLA_AE_LINES_PKG.ValidateCurrentLine;
287008       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
287009 
287010       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
287011                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
287012                ,p_balance_type_code => l_balance_type_code);
287013 
287014    END IF;
287015 
287016    -----------------------------------------------------------------------------------------
287017    -- 4262811 Multiperiod Accounting
287018    -----------------------------------------------------------------------------------------
287019      -- No MPA option is assigned.
287020 
287021 
287022 END IF;
287023 END IF;
287024 --
287025 
287026 --
287027 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
287028    trace
287029       (p_msg      => 'END of AcctLineType_512'
287030       ,p_level    => C_LEVEL_PROCEDURE
287031       ,p_module   => l_log_module);
287032 END IF;
287033 --
287034 EXCEPTION
287035   WHEN xla_exceptions_pkg.application_exception THEN
287036       RAISE;
287037   WHEN OTHERS THEN
287038        xla_exceptions_pkg.raise_message
287039            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_512');
287040 END AcctLineType_512;
287041 --
287042 
287043 ---------------------------------------
287044 --
287045 -- PRIVATE FUNCTION
287046 --         AcctLineType_513
287047 --
287048 ---------------------------------------
287049 PROCEDURE AcctLineType_513 (
287050   p_application_id        IN NUMBER
287051  ,p_event_id              IN NUMBER
287052  ,p_calculate_acctd_flag  IN VARCHAR2
287053  ,p_calculate_g_l_flag    IN VARCHAR2
287054  ,p_actual_flag           IN OUT VARCHAR2
287055  ,p_balance_type_code     OUT VARCHAR2
287056  ,p_gain_or_loss_ref      OUT VARCHAR2
287057  
287058 --Cost Management Default Account
287059  , p_source_11            IN NUMBER
287060 --DISTRIBUTION_IDENTIFIER
287061  , p_source_84            IN NUMBER
287062 --Distribution Type
287063  , p_source_85            IN VARCHAR2
287064  , p_source_85_meaning    IN VARCHAR2
287065 --Entered Currency Code
287066  , p_source_88            IN VARCHAR2
287067 --Entered Amount
287068  , p_source_91            IN NUMBER
287069 --Currency Conversion Date
287070  , p_source_92            IN DATE
287071 --Currency Conversion Rate
287072  , p_source_93            IN NUMBER
287073 --Accounted Amount
287074  , p_source_95            IN NUMBER
287075 --Accounting Line Type
287076  , p_source_97            IN NUMBER
287077 )
287078 IS
287079 
287080 l_component_type              VARCHAR2(80);
287081 l_component_code              VARCHAR2(30);
287082 l_component_type_code         VARCHAR2(1);
287083 l_component_appl_id           INTEGER;
287084 l_amb_context_code            VARCHAR2(30);
287085 l_entity_code                 VARCHAR2(30);
287086 l_event_class_code            VARCHAR2(30);
287087 l_ae_header_id                NUMBER;
287088 l_event_type_code             VARCHAR2(30);
287089 l_line_definition_code        VARCHAR2(30);
287090 l_line_definition_owner_code  VARCHAR2(1);
287091 --
287092 -- adr variables
287093 l_segment                     VARCHAR2(30);
287094 l_ccid                        NUMBER;
287095 l_adr_transaction_coa_id      NUMBER;
287096 l_adr_accounting_coa_id       NUMBER;
287097 l_adr_flexfield_segment_code  VARCHAR2(30);
287098 l_adr_flex_value_set_id       NUMBER;
287099 l_adr_value_type_code         VARCHAR2(30);
287100 l_adr_value_combination_id    NUMBER;
287101 l_adr_value_segment_code      VARCHAR2(30);
287102 
287103 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
287104 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
287105 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
287106 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
287107 
287108 -- 4262811 Variables ------------------------------------------------------------------------------------------
287109 l_entered_amt_idx             NUMBER;
287110 l_accted_amt_idx              NUMBER;
287111 l_acc_rev_flag                VARCHAR2(1);
287112 l_accrual_line_num            NUMBER;
287113 l_tmp_amt                     NUMBER;
287114 l_acc_rev_natural_side_code   VARCHAR2(1);
287115 
287116 l_num_entries                 NUMBER;
287117 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
287118 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
287119 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
287120 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
287121 l_recog_line_1                NUMBER;
287122 l_recog_line_2                NUMBER;
287123 
287124 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
287125 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
287126 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
287127 
287128 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
287129 
287130 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
287131 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
287132 
287133 ---------------------------------------------------------------------------------------------------------------
287134 
287135 
287136 --
287137 -- bulk performance
287138 --
287139 l_balance_type_code           VARCHAR2(1);
287140 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
287141 l_log_module                  VARCHAR2(240);
287142 
287143 --
287144 -- Upgrade strategy
287145 --
287146 l_actual_upg_option           VARCHAR2(1);
287147 l_enc_upg_option           VARCHAR2(1);
287148 
287149 --
287150 BEGIN
287151 --
287152 IF g_log_enabled THEN
287153       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_513';
287154 END IF;
287155 --
287156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
287157 
287158       trace
287159          (p_msg      => 'BEGIN of AcctLineType_513'
287160          ,p_level    => C_LEVEL_PROCEDURE
287161          ,p_module   => l_log_module);
287162 
287163 END IF;
287164 --
287165 l_component_type             := 'AMB_JLT';
287166 l_component_code             := 'RESOURCE_ABSORPTION';
287167 l_component_type_code        := 'S';
287168 l_component_appl_id          :=  707;
287169 l_amb_context_code           := 'DEFAULT';
287170 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
287171 l_event_class_code           := 'OSP';
287172 l_event_type_code            := 'IPV_TRANSFER_WO';
287173 l_line_definition_owner_code := 'S';
287174 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
287175 --
287176 l_balance_type_code          := 'A';
287177 l_segment                     := NULL;
287178 l_ccid                        := NULL;
287179 l_adr_transaction_coa_id      := NULL;
287180 l_adr_accounting_coa_id       := NULL;
287181 l_adr_flexfield_segment_code  := NULL;
287182 l_adr_flex_value_set_id       := NULL;
287183 l_adr_value_type_code         := NULL;
287184 l_adr_value_combination_id    := NULL;
287185 l_adr_value_segment_code      := NULL;
287186 
287187 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
287188 l_bflow_class_code           := '';    -- 4219869 Business Flow
287189 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
287190 l_budgetary_control_flag     := 'N';
287191 
287192 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
287193 l_bflow_applied_to_amt       := NULL; -- 5132302
287194 l_entered_amt_idx            := NULL;          -- 4262811
287195 l_accted_amt_idx             := NULL;          -- 4262811
287196 l_acc_rev_flag               := NULL;          -- 4262811
287197 l_accrual_line_num           := NULL;          -- 4262811
287198 l_tmp_amt                    := NULL;          -- 4262811
287199 --
287200  
287201 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
287202     l_balance_type_code <> 'B' THEN
287203 IF NVL(p_source_97,9E125) =  4
287204  THEN 
287205 
287206    --
287207    XLA_AE_LINES_PKG.SetNewLine;
287208 
287209    p_balance_type_code          := l_balance_type_code;
287210    -- set the flag so later we will know whether the gain loss line needs to be created
287211    
287212    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
287213      p_actual_flag :='A';
287214    END IF;
287215 
287216    --
287217    -- bulk performance
287218    --
287219    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
287220                                       p_header_num   => 0); -- 4262811
287221    --
287222    -- set accounting line options
287223    --
287224    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
287225            p_natural_side_code          => 'D'
287226          , p_gain_or_loss_flag          => 'N'
287227          , p_gl_transfer_mode_code      => 'S'
287228          , p_acct_entry_type_code       => 'A'
287229          , p_switch_side_flag           => 'Y'
287230          , p_merge_duplicate_code       => 'N'
287231          );
287232    --
287233    l_acc_rev_natural_side_code := 'C';  -- 4262811
287234    -- 
287235    --
287236    -- set accounting line type info
287237    --
287238    xla_ae_lines_pkg.SetAcctLineType
287239       (p_component_type             => l_component_type
287240       ,p_event_type_code            => l_event_type_code
287241       ,p_line_definition_owner_code => l_line_definition_owner_code
287242       ,p_line_definition_code       => l_line_definition_code
287243       ,p_accounting_line_code       => l_component_code
287244       ,p_accounting_line_type_code  => l_component_type_code
287245       ,p_accounting_line_appl_id    => l_component_appl_id
287246       ,p_amb_context_code           => l_amb_context_code
287247       ,p_entity_code                => l_entity_code
287248       ,p_event_class_code           => l_event_class_code);
287249    --
287250    -- set accounting class
287251    --
287252    xla_ae_lines_pkg.SetAcctClass(
287253            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
287254          , p_ae_header_id           => l_ae_header_id
287255          );
287256 
287257    --
287258    -- set rounding class
287259    --
287260    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
287261                       'RESOURCE_ABSORPTION';
287262 
287263    --
287264    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
287265    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
287266    --
287267    -- bulk performance
287268    --
287269    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
287270 
287271    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
287272       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
287273 
287274    -- 4955764
287275    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
287276       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
287277 
287278    -- 4458381 Public Sector Enh
287279    
287280    --
287281    -- set accounting attributes for the line type
287282    --
287283    l_entered_amt_idx := 3;
287284    l_accted_amt_idx  := 8;
287285    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
287286    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
287287    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
287288    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
287289    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
287290    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
287291    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
287292    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
287293    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
287294    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
287295    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
287296    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
287297    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
287298    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
287299    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
287300    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
287301    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
287302 
287303    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
287304    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
287305 
287306    ---------------------------------------------------------------------------------------------------------------
287307    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
287308    ---------------------------------------------------------------------------------------------------------------
287309    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
287310 
287311    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
287312    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
287313 
287314    IF xla_accounting_cache_pkg.GetValueChar
287315          (p_source_code         => 'LEDGER_CATEGORY_CODE'
287316          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
287317    AND l_bflow_method_code = 'PRIOR_ENTRY'
287318 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
287319    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
287320          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
287321        )
287322    THEN
287323          xla_ae_lines_pkg.BflowUpgEntry
287324            (p_business_method_code    => l_bflow_method_code
287325            ,p_business_class_code     => l_bflow_class_code
287326            ,p_balance_type            => l_balance_type_code);
287327    ELSE
287328       NULL;
287329 -- No business flow processing for business flow method of NONE.
287330    END IF;
287331 
287332    --
287333    -- call analytical criteria
287334    --
287335    
287336    --
287337    -- call description
287338    --
287339    -- No description or it is inherited.
287340    --
287341    -- call ADRs
287342    -- Bug 4922099
287343    --
287344    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
287345         (NVL(l_actual_upg_option, 'N') = 'O') OR
287346         (NVL(l_enc_upg_option, 'N') = 'O')
287347       )
287348    THEN
287349    NULL;
287350    --
287351    --
287352    
287353   l_ccid := AcctDerRule_6(
287354            p_application_id           => p_application_id
287355          , p_ae_header_id             => l_ae_header_id 
287356 , p_source_11 => p_source_11
287357          , x_transaction_coa_id       => l_adr_transaction_coa_id
287358          , x_accounting_coa_id        => l_adr_accounting_coa_id
287359          , x_value_type_code          => l_adr_value_type_code
287360          , p_side                     => 'NA'
287361    );
287362 
287363    xla_ae_lines_pkg.set_ccid(
287364     p_code_combination_id          => l_ccid
287365   , p_value_type_code              => l_adr_value_type_code
287366   , p_transaction_coa_id           => l_adr_transaction_coa_id
287367   , p_accounting_coa_id            => l_adr_accounting_coa_id
287368   , p_adr_code                     => 'CST_DEFAULT'
287369   , p_adr_type_code                => 'S'
287370   , p_component_type               => l_component_type
287371   , p_component_code               => l_component_code
287372   , p_component_type_code          => l_component_type_code
287373   , p_component_appl_id            => l_component_appl_id
287374   , p_amb_context_code             => l_amb_context_code
287375   , p_side                         => 'NA'
287376   );
287377 
287378 
287379    --
287380    --
287381    END IF;
287382    --
287383    -- Bug 4922099
287384    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
287385           (NVL(l_enc_upg_option, 'N') = 'O')
287386         ) AND
287387         (l_bflow_method_code = 'PRIOR_ENTRY')
287388       )
287389    THEN
287390       IF
287391       --
287392       1 = 2
287393       --
287394       THEN
287395       xla_accounting_err_pkg.build_message
287396                                     (p_appli_s_name            => 'XLA'
287397                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
287398                                     ,p_token_1                 => 'LINE_NUMBER'
287399                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
287400                                     ,p_token_2                 => 'LINE_TYPE_NAME'
287401                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
287402                                                                              l_component_type
287403                                                                             ,l_component_code
287404                                                                             ,l_component_type_code
287405                                                                             ,l_component_appl_id
287406                                                                             ,l_amb_context_code
287407                                                                             ,l_entity_code
287408                                                                             ,l_event_class_code
287409                                                                            )
287410                                     ,p_token_3                 => 'OWNER'
287411                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
287412                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
287413                                                                           ,p_lookup_code    => l_component_type_code
287414                                                                          )
287415                                     ,p_token_4                 => 'PRODUCT_NAME'
287416                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
287417                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
287418                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
287419                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
287420                                     ,p_ae_header_id            =>  NULL
287421                                        );
287422 
287423         IF (C_LEVEL_ERROR>= g_log_level) THEN
287424                  trace
287425                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
287426                       ,p_level    => C_LEVEL_ERROR
287427                       ,p_module   => l_log_module);
287428         END IF;
287429       END IF;
287430    END IF;
287431    --
287432    --
287433    ------------------------------------------------------------------------------------------------
287434    -- 4219869 Business Flow
287435    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
287436    -- Prior Entry.  Currently, the following code is always generated.
287437    ------------------------------------------------------------------------------------------------
287438    XLA_AE_LINES_PKG.ValidateCurrentLine;
287439 
287440    ------------------------------------------------------------------------------------
287441    -- 4219869 Business Flow
287442    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
287443    ------------------------------------------------------------------------------------
287444    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
287445 
287446    ----------------------------------------------------------------------------------
287447    -- 4219869 Business Flow
287448    -- Update journal entry status -- Need to generate this within IF <condition>
287449    ----------------------------------------------------------------------------------
287450    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
287451          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
287452          ,p_balance_type_code => l_balance_type_code
287453          );
287454 
287455    -------------------------------------------------------------------------------------------
287456    -- 4262811 - Generate the Accrual Reversal lines
287457    -------------------------------------------------------------------------------------------
287458    BEGIN
287459       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
287460                               (g_array_event(p_event_id).array_value_num('header_index'));
287461       IF l_acc_rev_flag IS NULL THEN
287462          l_acc_rev_flag := 'N';
287463       END IF;
287464    EXCEPTION
287465       WHEN OTHERS THEN
287466          l_acc_rev_flag := 'N';
287467    END;
287468    --
287469    IF (l_acc_rev_flag = 'Y') THEN
287470 
287471        -- 4645092  ------------------------------------------------------------------------------
287472        -- To allow MPA report to determine if it should generate report process
287473        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
287474        ------------------------------------------------------------------------------------------
287475 
287476        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
287477        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
287478    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
287479    -- call ADRs
287480    -- Bug 4922099
287481    --
287482    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
287483         (NVL(l_actual_upg_option, 'N') = 'O') OR
287484         (NVL(l_enc_upg_option, 'N') = 'O')
287485       )
287486    THEN
287487    NULL;
287488    --
287489    --
287490    
287491   l_ccid := AcctDerRule_6(
287492            p_application_id           => p_application_id
287493          , p_ae_header_id             => l_ae_header_id 
287494 , p_source_11 => p_source_11
287495          , x_transaction_coa_id       => l_adr_transaction_coa_id
287496          , x_accounting_coa_id        => l_adr_accounting_coa_id
287497          , x_value_type_code          => l_adr_value_type_code
287498          , p_side                     => 'NA'
287499    );
287500 
287501    xla_ae_lines_pkg.set_ccid(
287502     p_code_combination_id          => l_ccid
287503   , p_value_type_code              => l_adr_value_type_code
287504   , p_transaction_coa_id           => l_adr_transaction_coa_id
287505   , p_accounting_coa_id            => l_adr_accounting_coa_id
287506   , p_adr_code                     => 'CST_DEFAULT'
287507   , p_adr_type_code                => 'S'
287508   , p_component_type               => l_component_type
287509   , p_component_code               => l_component_code
287510   , p_component_type_code          => l_component_type_code
287511   , p_component_appl_id            => l_component_appl_id
287512   , p_amb_context_code             => l_amb_context_code
287513   , p_side                         => 'NA'
287514   );
287515 
287516 
287517    --
287518    --
287519    END IF;
287520 
287521        --
287522        -- Update the line information that should be overwritten
287523        --
287524        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
287525                                          p_header_num   => 1);
287526        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
287527 
287528        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
287529 
287530        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
287531           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
287532        END IF;
287533 
287534       --
287535       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
287536       --
287537       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
287538           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
287539       ELSE
287540           ---------------------------------------------------------------------------------------------------
287541           -- 4262811a Switch Sign
287542           ---------------------------------------------------------------------------------------------------
287543           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
287544           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
287545                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
287546           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
287547                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
287548           -- 5132302
287549           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
287550                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
287551 
287552       END IF;
287553 
287554       -- 4955764
287555       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
287556       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
287557 
287558 
287559       XLA_AE_LINES_PKG.ValidateCurrentLine;
287560       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
287561 
287562       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
287563                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
287564                ,p_balance_type_code => l_balance_type_code);
287565 
287566    END IF;
287567 
287568    -----------------------------------------------------------------------------------------
287569    -- 4262811 Multiperiod Accounting
287570    -----------------------------------------------------------------------------------------
287571      -- No MPA option is assigned.
287572 
287573 
287574 END IF;
287575 END IF;
287576 --
287577 
287578 --
287579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
287580    trace
287581       (p_msg      => 'END of AcctLineType_513'
287582       ,p_level    => C_LEVEL_PROCEDURE
287583       ,p_module   => l_log_module);
287584 END IF;
287585 --
287586 EXCEPTION
287587   WHEN xla_exceptions_pkg.application_exception THEN
287588       RAISE;
287589   WHEN OTHERS THEN
287590        xla_exceptions_pkg.raise_message
287591            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_513');
287592 END AcctLineType_513;
287593 --
287594 
287595 ---------------------------------------
287596 --
287597 -- PRIVATE FUNCTION
287598 --         AcctLineType_514
287599 --
287600 ---------------------------------------
287601 PROCEDURE AcctLineType_514 (
287602   p_application_id        IN NUMBER
287603  ,p_event_id              IN NUMBER
287604  ,p_calculate_acctd_flag  IN VARCHAR2
287605  ,p_calculate_g_l_flag    IN VARCHAR2
287606  ,p_actual_flag           IN OUT VARCHAR2
287607  ,p_balance_type_code     OUT VARCHAR2
287608  ,p_gain_or_loss_ref      OUT VARCHAR2
287609  
287610 --Cost Management Default Account
287611  , p_source_11            IN NUMBER
287612 --DISTRIBUTION_IDENTIFIER
287613  , p_source_84            IN NUMBER
287614 --Distribution Type
287615  , p_source_85            IN VARCHAR2
287616  , p_source_85_meaning    IN VARCHAR2
287617 --Entered Currency Code
287618  , p_source_88            IN VARCHAR2
287619 --Entered Amount
287620  , p_source_91            IN NUMBER
287621 --Currency Conversion Date
287622  , p_source_92            IN DATE
287623 --Currency Conversion Rate
287624  , p_source_93            IN NUMBER
287625 --Currency Conversion Type
287626  , p_source_94            IN VARCHAR2
287627 --Accounted Amount
287628  , p_source_95            IN NUMBER
287629 --Accounting Line Type
287630  , p_source_97            IN NUMBER
287631 )
287632 IS
287633 
287634 l_component_type              VARCHAR2(80);
287635 l_component_code              VARCHAR2(30);
287636 l_component_type_code         VARCHAR2(1);
287637 l_component_appl_id           INTEGER;
287638 l_amb_context_code            VARCHAR2(30);
287639 l_entity_code                 VARCHAR2(30);
287640 l_event_class_code            VARCHAR2(30);
287641 l_ae_header_id                NUMBER;
287642 l_event_type_code             VARCHAR2(30);
287643 l_line_definition_code        VARCHAR2(30);
287644 l_line_definition_owner_code  VARCHAR2(1);
287645 --
287646 -- adr variables
287647 l_segment                     VARCHAR2(30);
287648 l_ccid                        NUMBER;
287649 l_adr_transaction_coa_id      NUMBER;
287650 l_adr_accounting_coa_id       NUMBER;
287651 l_adr_flexfield_segment_code  VARCHAR2(30);
287652 l_adr_flex_value_set_id       NUMBER;
287653 l_adr_value_type_code         VARCHAR2(30);
287654 l_adr_value_combination_id    NUMBER;
287655 l_adr_value_segment_code      VARCHAR2(30);
287656 
287657 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
287658 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
287659 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
287660 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
287661 
287662 -- 4262811 Variables ------------------------------------------------------------------------------------------
287663 l_entered_amt_idx             NUMBER;
287664 l_accted_amt_idx              NUMBER;
287665 l_acc_rev_flag                VARCHAR2(1);
287666 l_accrual_line_num            NUMBER;
287667 l_tmp_amt                     NUMBER;
287668 l_acc_rev_natural_side_code   VARCHAR2(1);
287669 
287670 l_num_entries                 NUMBER;
287671 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
287672 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
287673 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
287674 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
287675 l_recog_line_1                NUMBER;
287676 l_recog_line_2                NUMBER;
287677 
287678 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
287679 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
287680 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
287681 
287682 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
287683 
287684 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
287685 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
287686 
287687 ---------------------------------------------------------------------------------------------------------------
287688 
287689 
287690 --
287691 -- bulk performance
287692 --
287693 l_balance_type_code           VARCHAR2(1);
287694 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
287695 l_log_module                  VARCHAR2(240);
287696 
287697 --
287698 -- Upgrade strategy
287699 --
287700 l_actual_upg_option           VARCHAR2(1);
287701 l_enc_upg_option           VARCHAR2(1);
287702 
287703 --
287704 BEGIN
287705 --
287706 IF g_log_enabled THEN
287707       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_514';
287708 END IF;
287709 --
287710 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
287711 
287712       trace
287713          (p_msg      => 'BEGIN of AcctLineType_514'
287714          ,p_level    => C_LEVEL_PROCEDURE
287715          ,p_module   => l_log_module);
287716 
287717 END IF;
287718 --
287719 l_component_type             := 'AMB_JLT';
287720 l_component_code             := 'RESOURCE_ABSORPTION';
287721 l_component_type_code        := 'S';
287722 l_component_appl_id          :=  707;
287723 l_amb_context_code           := 'DEFAULT';
287724 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
287725 l_event_class_code           := 'ABSORPTION';
287726 l_event_type_code            := 'ABSORPTION_ALL';
287727 l_line_definition_owner_code := 'S';
287728 l_line_definition_code       := 'ABSORPTION';
287729 --
287730 l_balance_type_code          := 'A';
287731 l_segment                     := NULL;
287732 l_ccid                        := NULL;
287733 l_adr_transaction_coa_id      := NULL;
287734 l_adr_accounting_coa_id       := NULL;
287735 l_adr_flexfield_segment_code  := NULL;
287736 l_adr_flex_value_set_id       := NULL;
287737 l_adr_value_type_code         := NULL;
287738 l_adr_value_combination_id    := NULL;
287739 l_adr_value_segment_code      := NULL;
287740 
287741 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
287742 l_bflow_class_code           := '';    -- 4219869 Business Flow
287743 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
287744 l_budgetary_control_flag     := 'N';
287745 
287746 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
287747 l_bflow_applied_to_amt       := NULL; -- 5132302
287748 l_entered_amt_idx            := NULL;          -- 4262811
287749 l_accted_amt_idx             := NULL;          -- 4262811
287750 l_acc_rev_flag               := NULL;          -- 4262811
287751 l_accrual_line_num           := NULL;          -- 4262811
287752 l_tmp_amt                    := NULL;          -- 4262811
287753 --
287754  
287755 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
287756     l_balance_type_code <> 'B' THEN
287757 IF NVL(p_source_97,9E125) =  4
287758  THEN 
287759 
287760    --
287761    XLA_AE_LINES_PKG.SetNewLine;
287762 
287763    p_balance_type_code          := l_balance_type_code;
287764    -- set the flag so later we will know whether the gain loss line needs to be created
287765    
287766    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
287767      p_actual_flag :='A';
287768    END IF;
287769 
287770    --
287771    -- bulk performance
287772    --
287773    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
287774                                       p_header_num   => 0); -- 4262811
287775    --
287776    -- set accounting line options
287777    --
287778    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
287779            p_natural_side_code          => 'D'
287780          , p_gain_or_loss_flag          => 'N'
287781          , p_gl_transfer_mode_code      => 'S'
287782          , p_acct_entry_type_code       => 'A'
287783          , p_switch_side_flag           => 'Y'
287784          , p_merge_duplicate_code       => 'N'
287785          );
287786    --
287787    l_acc_rev_natural_side_code := 'C';  -- 4262811
287788    -- 
287789    --
287790    -- set accounting line type info
287791    --
287792    xla_ae_lines_pkg.SetAcctLineType
287793       (p_component_type             => l_component_type
287794       ,p_event_type_code            => l_event_type_code
287795       ,p_line_definition_owner_code => l_line_definition_owner_code
287796       ,p_line_definition_code       => l_line_definition_code
287797       ,p_accounting_line_code       => l_component_code
287798       ,p_accounting_line_type_code  => l_component_type_code
287799       ,p_accounting_line_appl_id    => l_component_appl_id
287800       ,p_amb_context_code           => l_amb_context_code
287801       ,p_entity_code                => l_entity_code
287802       ,p_event_class_code           => l_event_class_code);
287803    --
287804    -- set accounting class
287805    --
287806    xla_ae_lines_pkg.SetAcctClass(
287807            p_accounting_class_code  => 'RESOURCE_ABSORPTION'
287808          , p_ae_header_id           => l_ae_header_id
287809          );
287810 
287811    --
287812    -- set rounding class
287813    --
287814    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
287815                       'RESOURCE_ABSORPTION';
287816 
287817    --
287818    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
287819    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
287820    --
287821    -- bulk performance
287822    --
287823    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
287824 
287825    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
287826       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
287827 
287828    -- 4955764
287829    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
287830       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
287831 
287832    -- 4458381 Public Sector Enh
287833    
287834    --
287835    -- set accounting attributes for the line type
287836    --
287837    l_entered_amt_idx := 3;
287838    l_accted_amt_idx  := 8;
287839    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
287840    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
287841    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
287842    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
287843    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
287844    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
287845    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
287846    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
287847    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
287848    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
287849    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
287850    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
287851    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
287852    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
287853    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
287854    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
287855    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
287856 
287857    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
287858    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
287859 
287860    ---------------------------------------------------------------------------------------------------------------
287861    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
287862    ---------------------------------------------------------------------------------------------------------------
287863    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
287864 
287865    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
287866    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
287867 
287868    IF xla_accounting_cache_pkg.GetValueChar
287869          (p_source_code         => 'LEDGER_CATEGORY_CODE'
287870          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
287871    AND l_bflow_method_code = 'PRIOR_ENTRY'
287872 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
287873    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
287874          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
287875        )
287876    THEN
287877          xla_ae_lines_pkg.BflowUpgEntry
287878            (p_business_method_code    => l_bflow_method_code
287879            ,p_business_class_code     => l_bflow_class_code
287880            ,p_balance_type            => l_balance_type_code);
287881    ELSE
287882       NULL;
287883 -- No business flow processing for business flow method of NONE.
287884    END IF;
287885 
287886    --
287887    -- call analytical criteria
287888    --
287889    
287890    --
287891    -- call description
287892    --
287893    -- No description or it is inherited.
287894    --
287895    -- call ADRs
287896    -- Bug 4922099
287897    --
287898    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
287899         (NVL(l_actual_upg_option, 'N') = 'O') OR
287900         (NVL(l_enc_upg_option, 'N') = 'O')
287901       )
287902    THEN
287903    NULL;
287904    --
287905    --
287906    
287907   l_ccid := AcctDerRule_6(
287908            p_application_id           => p_application_id
287909          , p_ae_header_id             => l_ae_header_id 
287910 , p_source_11 => p_source_11
287911          , x_transaction_coa_id       => l_adr_transaction_coa_id
287912          , x_accounting_coa_id        => l_adr_accounting_coa_id
287913          , x_value_type_code          => l_adr_value_type_code
287914          , p_side                     => 'NA'
287915    );
287916 
287917    xla_ae_lines_pkg.set_ccid(
287918     p_code_combination_id          => l_ccid
287919   , p_value_type_code              => l_adr_value_type_code
287920   , p_transaction_coa_id           => l_adr_transaction_coa_id
287921   , p_accounting_coa_id            => l_adr_accounting_coa_id
287922   , p_adr_code                     => 'CST_DEFAULT'
287923   , p_adr_type_code                => 'S'
287924   , p_component_type               => l_component_type
287925   , p_component_code               => l_component_code
287926   , p_component_type_code          => l_component_type_code
287927   , p_component_appl_id            => l_component_appl_id
287928   , p_amb_context_code             => l_amb_context_code
287929   , p_side                         => 'NA'
287930   );
287931 
287932 
287933    --
287934    --
287935    END IF;
287936    --
287937    -- Bug 4922099
287938    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
287939           (NVL(l_enc_upg_option, 'N') = 'O')
287940         ) AND
287941         (l_bflow_method_code = 'PRIOR_ENTRY')
287942       )
287943    THEN
287944       IF
287945       --
287946       1 = 2
287947       --
287948       THEN
287949       xla_accounting_err_pkg.build_message
287950                                     (p_appli_s_name            => 'XLA'
287951                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
287952                                     ,p_token_1                 => 'LINE_NUMBER'
287953                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
287954                                     ,p_token_2                 => 'LINE_TYPE_NAME'
287955                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
287956                                                                              l_component_type
287957                                                                             ,l_component_code
287958                                                                             ,l_component_type_code
287959                                                                             ,l_component_appl_id
287960                                                                             ,l_amb_context_code
287961                                                                             ,l_entity_code
287962                                                                             ,l_event_class_code
287963                                                                            )
287964                                     ,p_token_3                 => 'OWNER'
287965                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
287966                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
287967                                                                           ,p_lookup_code    => l_component_type_code
287968                                                                          )
287969                                     ,p_token_4                 => 'PRODUCT_NAME'
287970                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
287971                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
287972                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
287973                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
287974                                     ,p_ae_header_id            =>  NULL
287975                                        );
287976 
287977         IF (C_LEVEL_ERROR>= g_log_level) THEN
287978                  trace
287979                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
287980                       ,p_level    => C_LEVEL_ERROR
287981                       ,p_module   => l_log_module);
287982         END IF;
287983       END IF;
287984    END IF;
287985    --
287986    --
287987    ------------------------------------------------------------------------------------------------
287988    -- 4219869 Business Flow
287989    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
287990    -- Prior Entry.  Currently, the following code is always generated.
287991    ------------------------------------------------------------------------------------------------
287992    XLA_AE_LINES_PKG.ValidateCurrentLine;
287993 
287994    ------------------------------------------------------------------------------------
287995    -- 4219869 Business Flow
287996    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
287997    ------------------------------------------------------------------------------------
287998    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
287999 
288000    ----------------------------------------------------------------------------------
288001    -- 4219869 Business Flow
288002    -- Update journal entry status -- Need to generate this within IF <condition>
288003    ----------------------------------------------------------------------------------
288004    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
288005          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
288006          ,p_balance_type_code => l_balance_type_code
288007          );
288008 
288009    -------------------------------------------------------------------------------------------
288010    -- 4262811 - Generate the Accrual Reversal lines
288011    -------------------------------------------------------------------------------------------
288012    BEGIN
288013       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
288014                               (g_array_event(p_event_id).array_value_num('header_index'));
288015       IF l_acc_rev_flag IS NULL THEN
288016          l_acc_rev_flag := 'N';
288017       END IF;
288018    EXCEPTION
288019       WHEN OTHERS THEN
288020          l_acc_rev_flag := 'N';
288021    END;
288022    --
288023    IF (l_acc_rev_flag = 'Y') THEN
288024 
288025        -- 4645092  ------------------------------------------------------------------------------
288026        -- To allow MPA report to determine if it should generate report process
288027        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
288028        ------------------------------------------------------------------------------------------
288029 
288030        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
288031        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
288032    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
288033    -- call ADRs
288034    -- Bug 4922099
288035    --
288036    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
288037         (NVL(l_actual_upg_option, 'N') = 'O') OR
288038         (NVL(l_enc_upg_option, 'N') = 'O')
288039       )
288040    THEN
288041    NULL;
288042    --
288043    --
288044    
288045   l_ccid := AcctDerRule_6(
288046            p_application_id           => p_application_id
288047          , p_ae_header_id             => l_ae_header_id 
288048 , p_source_11 => p_source_11
288049          , x_transaction_coa_id       => l_adr_transaction_coa_id
288050          , x_accounting_coa_id        => l_adr_accounting_coa_id
288051          , x_value_type_code          => l_adr_value_type_code
288052          , p_side                     => 'NA'
288053    );
288054 
288055    xla_ae_lines_pkg.set_ccid(
288056     p_code_combination_id          => l_ccid
288057   , p_value_type_code              => l_adr_value_type_code
288058   , p_transaction_coa_id           => l_adr_transaction_coa_id
288059   , p_accounting_coa_id            => l_adr_accounting_coa_id
288060   , p_adr_code                     => 'CST_DEFAULT'
288061   , p_adr_type_code                => 'S'
288062   , p_component_type               => l_component_type
288063   , p_component_code               => l_component_code
288064   , p_component_type_code          => l_component_type_code
288065   , p_component_appl_id            => l_component_appl_id
288066   , p_amb_context_code             => l_amb_context_code
288067   , p_side                         => 'NA'
288068   );
288069 
288070 
288071    --
288072    --
288073    END IF;
288074 
288075        --
288076        -- Update the line information that should be overwritten
288077        --
288078        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
288079                                          p_header_num   => 1);
288080        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
288081 
288082        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
288083 
288084        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
288085           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
288086        END IF;
288087 
288088       --
288089       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
288090       --
288091       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
288092           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
288093       ELSE
288094           ---------------------------------------------------------------------------------------------------
288095           -- 4262811a Switch Sign
288096           ---------------------------------------------------------------------------------------------------
288097           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
288098           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
288099                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
288100           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
288101                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
288102           -- 5132302
288103           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
288104                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
288105 
288106       END IF;
288107 
288108       -- 4955764
288109       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
288110       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
288111 
288112 
288113       XLA_AE_LINES_PKG.ValidateCurrentLine;
288114       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
288115 
288116       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
288117                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
288118                ,p_balance_type_code => l_balance_type_code);
288119 
288120    END IF;
288121 
288122    -----------------------------------------------------------------------------------------
288123    -- 4262811 Multiperiod Accounting
288124    -----------------------------------------------------------------------------------------
288125      -- No MPA option is assigned.
288126 
288127 
288128 END IF;
288129 END IF;
288130 --
288131 
288132 --
288133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
288134    trace
288135       (p_msg      => 'END of AcctLineType_514'
288136       ,p_level    => C_LEVEL_PROCEDURE
288137       ,p_module   => l_log_module);
288138 END IF;
288139 --
288140 EXCEPTION
288141   WHEN xla_exceptions_pkg.application_exception THEN
288142       RAISE;
288143   WHEN OTHERS THEN
288144        xla_exceptions_pkg.raise_message
288145            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_514');
288146 END AcctLineType_514;
288147 --
288148 
288149 ---------------------------------------
288150 --
288151 -- PRIVATE FUNCTION
288152 --         AcctLineType_515
288153 --
288154 ---------------------------------------
288155 PROCEDURE AcctLineType_515 (
288156   p_application_id        IN NUMBER
288157  ,p_event_id              IN NUMBER
288158  ,p_calculate_acctd_flag  IN VARCHAR2
288159  ,p_calculate_g_l_flag    IN VARCHAR2
288160  ,p_actual_flag           IN OUT VARCHAR2
288161  ,p_balance_type_code     OUT VARCHAR2
288162  ,p_gain_or_loss_ref      OUT VARCHAR2
288163  
288164 --Cost Management Default Account
288165  , p_source_11            IN NUMBER
288166 --DISTRIBUTION_IDENTIFIER
288167  , p_source_84            IN NUMBER
288168 --Distribution Type
288169  , p_source_85            IN VARCHAR2
288170  , p_source_85_meaning    IN VARCHAR2
288171 --Entered Currency Code
288172  , p_source_88            IN VARCHAR2
288173 --Entered Amount
288174  , p_source_91            IN NUMBER
288175 --Currency Conversion Date
288176  , p_source_92            IN DATE
288177 --Currency Conversion Rate
288178  , p_source_93            IN NUMBER
288179 --Currency Conversion Type
288180  , p_source_94            IN VARCHAR2
288181 --Accounted Amount
288182  , p_source_95            IN NUMBER
288183 --Accounting Line Type
288184  , p_source_97            IN NUMBER
288185 )
288186 IS
288187 
288188 l_component_type              VARCHAR2(80);
288189 l_component_code              VARCHAR2(30);
288190 l_component_type_code         VARCHAR2(1);
288191 l_component_appl_id           INTEGER;
288192 l_amb_context_code            VARCHAR2(30);
288193 l_entity_code                 VARCHAR2(30);
288194 l_event_class_code            VARCHAR2(30);
288195 l_ae_header_id                NUMBER;
288196 l_event_type_code             VARCHAR2(30);
288197 l_line_definition_code        VARCHAR2(30);
288198 l_line_definition_owner_code  VARCHAR2(1);
288199 --
288200 -- adr variables
288201 l_segment                     VARCHAR2(30);
288202 l_ccid                        NUMBER;
288203 l_adr_transaction_coa_id      NUMBER;
288204 l_adr_accounting_coa_id       NUMBER;
288205 l_adr_flexfield_segment_code  VARCHAR2(30);
288206 l_adr_flex_value_set_id       NUMBER;
288207 l_adr_value_type_code         VARCHAR2(30);
288208 l_adr_value_combination_id    NUMBER;
288209 l_adr_value_segment_code      VARCHAR2(30);
288210 
288211 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
288212 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
288213 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
288214 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
288215 
288216 -- 4262811 Variables ------------------------------------------------------------------------------------------
288217 l_entered_amt_idx             NUMBER;
288218 l_accted_amt_idx              NUMBER;
288219 l_acc_rev_flag                VARCHAR2(1);
288220 l_accrual_line_num            NUMBER;
288221 l_tmp_amt                     NUMBER;
288222 l_acc_rev_natural_side_code   VARCHAR2(1);
288223 
288224 l_num_entries                 NUMBER;
288225 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
288226 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
288227 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
288228 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
288229 l_recog_line_1                NUMBER;
288230 l_recog_line_2                NUMBER;
288231 
288232 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
288233 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
288234 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
288235 
288236 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
288237 
288238 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
288239 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
288240 
288241 ---------------------------------------------------------------------------------------------------------------
288242 
288243 
288244 --
288245 -- bulk performance
288246 --
288247 l_balance_type_code           VARCHAR2(1);
288248 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
288249 l_log_module                  VARCHAR2(240);
288250 
288251 --
288252 -- Upgrade strategy
288253 --
288254 l_actual_upg_option           VARCHAR2(1);
288255 l_enc_upg_option           VARCHAR2(1);
288256 
288257 --
288258 BEGIN
288259 --
288260 IF g_log_enabled THEN
288261       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_515';
288262 END IF;
288263 --
288264 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
288265 
288266       trace
288267          (p_msg      => 'BEGIN of AcctLineType_515'
288268          ,p_level    => C_LEVEL_PROCEDURE
288269          ,p_module   => l_log_module);
288270 
288271 END IF;
288272 --
288273 l_component_type             := 'AMB_JLT';
288274 l_component_code             := 'RESOURCE_RATE_VARIANCE';
288275 l_component_type_code        := 'S';
288276 l_component_appl_id          :=  707;
288277 l_amb_context_code           := 'DEFAULT';
288278 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
288279 l_event_class_code           := 'ABSORPTION';
288280 l_event_type_code            := 'ABSORPTION_ALL';
288281 l_line_definition_owner_code := 'S';
288282 l_line_definition_code       := 'ABSORPTION';
288283 --
288284 l_balance_type_code          := 'A';
288285 l_segment                     := NULL;
288286 l_ccid                        := NULL;
288287 l_adr_transaction_coa_id      := NULL;
288288 l_adr_accounting_coa_id       := NULL;
288289 l_adr_flexfield_segment_code  := NULL;
288290 l_adr_flex_value_set_id       := NULL;
288291 l_adr_value_type_code         := NULL;
288292 l_adr_value_combination_id    := NULL;
288293 l_adr_value_segment_code      := NULL;
288294 
288295 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
288296 l_bflow_class_code           := '';    -- 4219869 Business Flow
288297 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
288298 l_budgetary_control_flag     := 'N';
288299 
288300 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
288301 l_bflow_applied_to_amt       := NULL; -- 5132302
288302 l_entered_amt_idx            := NULL;          -- 4262811
288303 l_accted_amt_idx             := NULL;          -- 4262811
288304 l_acc_rev_flag               := NULL;          -- 4262811
288305 l_accrual_line_num           := NULL;          -- 4262811
288306 l_tmp_amt                    := NULL;          -- 4262811
288307 --
288308  
288309 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
288310     l_balance_type_code <> 'B' THEN
288311 IF NVL(p_source_97,9E125) =  6
288312  THEN 
288313 
288314    --
288315    XLA_AE_LINES_PKG.SetNewLine;
288316 
288317    p_balance_type_code          := l_balance_type_code;
288318    -- set the flag so later we will know whether the gain loss line needs to be created
288319    
288320    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
288321      p_actual_flag :='A';
288322    END IF;
288323 
288324    --
288325    -- bulk performance
288326    --
288327    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
288328                                       p_header_num   => 0); -- 4262811
288329    --
288330    -- set accounting line options
288331    --
288332    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
288333            p_natural_side_code          => 'D'
288334          , p_gain_or_loss_flag          => 'N'
288335          , p_gl_transfer_mode_code      => 'S'
288336          , p_acct_entry_type_code       => 'A'
288337          , p_switch_side_flag           => 'Y'
288338          , p_merge_duplicate_code       => 'N'
288339          );
288340    --
288341    l_acc_rev_natural_side_code := 'C';  -- 4262811
288342    -- 
288343    --
288344    -- set accounting line type info
288345    --
288346    xla_ae_lines_pkg.SetAcctLineType
288347       (p_component_type             => l_component_type
288348       ,p_event_type_code            => l_event_type_code
288349       ,p_line_definition_owner_code => l_line_definition_owner_code
288350       ,p_line_definition_code       => l_line_definition_code
288351       ,p_accounting_line_code       => l_component_code
288352       ,p_accounting_line_type_code  => l_component_type_code
288353       ,p_accounting_line_appl_id    => l_component_appl_id
288354       ,p_amb_context_code           => l_amb_context_code
288355       ,p_entity_code                => l_entity_code
288356       ,p_event_class_code           => l_event_class_code);
288357    --
288358    -- set accounting class
288359    --
288360    xla_ae_lines_pkg.SetAcctClass(
288361            p_accounting_class_code  => 'RESOURCE_RATE_VARIANCE'
288362          , p_ae_header_id           => l_ae_header_id
288363          );
288364 
288365    --
288366    -- set rounding class
288367    --
288368    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
288369                       'RESOURCE_RATE_VARIANCE';
288370 
288371    --
288372    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
288373    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
288374    --
288375    -- bulk performance
288376    --
288377    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
288378 
288379    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
288380       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
288381 
288382    -- 4955764
288383    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
288384       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
288385 
288386    -- 4458381 Public Sector Enh
288387    
288388    --
288389    -- set accounting attributes for the line type
288390    --
288391    l_entered_amt_idx := 3;
288392    l_accted_amt_idx  := 8;
288393    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
288394    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
288395    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
288396    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
288397    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
288398    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
288399    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
288400    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
288401    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
288402    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
288403    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
288404    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
288405    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
288406    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
288407    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
288408    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
288409    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
288410 
288411    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
288412    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
288413 
288414    ---------------------------------------------------------------------------------------------------------------
288415    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
288416    ---------------------------------------------------------------------------------------------------------------
288417    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
288418 
288419    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
288420    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
288421 
288422    IF xla_accounting_cache_pkg.GetValueChar
288423          (p_source_code         => 'LEDGER_CATEGORY_CODE'
288424          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
288425    AND l_bflow_method_code = 'PRIOR_ENTRY'
288426 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
288427    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
288428          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
288429        )
288430    THEN
288431          xla_ae_lines_pkg.BflowUpgEntry
288432            (p_business_method_code    => l_bflow_method_code
288433            ,p_business_class_code     => l_bflow_class_code
288434            ,p_balance_type            => l_balance_type_code);
288435    ELSE
288436       NULL;
288437 -- No business flow processing for business flow method of NONE.
288438    END IF;
288439 
288440    --
288441    -- call analytical criteria
288442    --
288443    
288444    --
288445    -- call description
288446    --
288447    -- No description or it is inherited.
288448    --
288449    -- call ADRs
288450    -- Bug 4922099
288451    --
288452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
288453         (NVL(l_actual_upg_option, 'N') = 'O') OR
288454         (NVL(l_enc_upg_option, 'N') = 'O')
288455       )
288456    THEN
288457    NULL;
288458    --
288459    --
288460    
288461   l_ccid := AcctDerRule_6(
288462            p_application_id           => p_application_id
288463          , p_ae_header_id             => l_ae_header_id 
288464 , p_source_11 => p_source_11
288465          , x_transaction_coa_id       => l_adr_transaction_coa_id
288466          , x_accounting_coa_id        => l_adr_accounting_coa_id
288467          , x_value_type_code          => l_adr_value_type_code
288468          , p_side                     => 'NA'
288469    );
288470 
288471    xla_ae_lines_pkg.set_ccid(
288472     p_code_combination_id          => l_ccid
288473   , p_value_type_code              => l_adr_value_type_code
288474   , p_transaction_coa_id           => l_adr_transaction_coa_id
288475   , p_accounting_coa_id            => l_adr_accounting_coa_id
288476   , p_adr_code                     => 'CST_DEFAULT'
288477   , p_adr_type_code                => 'S'
288478   , p_component_type               => l_component_type
288479   , p_component_code               => l_component_code
288480   , p_component_type_code          => l_component_type_code
288481   , p_component_appl_id            => l_component_appl_id
288482   , p_amb_context_code             => l_amb_context_code
288483   , p_side                         => 'NA'
288484   );
288485 
288486 
288487    --
288488    --
288489    END IF;
288490    --
288491    -- Bug 4922099
288492    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
288493           (NVL(l_enc_upg_option, 'N') = 'O')
288494         ) AND
288495         (l_bflow_method_code = 'PRIOR_ENTRY')
288496       )
288497    THEN
288498       IF
288499       --
288500       1 = 2
288501       --
288502       THEN
288503       xla_accounting_err_pkg.build_message
288504                                     (p_appli_s_name            => 'XLA'
288505                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
288506                                     ,p_token_1                 => 'LINE_NUMBER'
288507                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
288508                                     ,p_token_2                 => 'LINE_TYPE_NAME'
288509                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
288510                                                                              l_component_type
288511                                                                             ,l_component_code
288512                                                                             ,l_component_type_code
288513                                                                             ,l_component_appl_id
288514                                                                             ,l_amb_context_code
288515                                                                             ,l_entity_code
288516                                                                             ,l_event_class_code
288517                                                                            )
288518                                     ,p_token_3                 => 'OWNER'
288519                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
288520                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
288521                                                                           ,p_lookup_code    => l_component_type_code
288522                                                                          )
288523                                     ,p_token_4                 => 'PRODUCT_NAME'
288524                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
288525                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
288526                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
288527                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
288528                                     ,p_ae_header_id            =>  NULL
288529                                        );
288530 
288531         IF (C_LEVEL_ERROR>= g_log_level) THEN
288532                  trace
288533                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
288534                       ,p_level    => C_LEVEL_ERROR
288535                       ,p_module   => l_log_module);
288536         END IF;
288537       END IF;
288538    END IF;
288539    --
288540    --
288541    ------------------------------------------------------------------------------------------------
288542    -- 4219869 Business Flow
288543    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
288544    -- Prior Entry.  Currently, the following code is always generated.
288545    ------------------------------------------------------------------------------------------------
288546    XLA_AE_LINES_PKG.ValidateCurrentLine;
288547 
288548    ------------------------------------------------------------------------------------
288549    -- 4219869 Business Flow
288550    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
288551    ------------------------------------------------------------------------------------
288552    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
288553 
288554    ----------------------------------------------------------------------------------
288555    -- 4219869 Business Flow
288556    -- Update journal entry status -- Need to generate this within IF <condition>
288557    ----------------------------------------------------------------------------------
288558    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
288559          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
288560          ,p_balance_type_code => l_balance_type_code
288561          );
288562 
288563    -------------------------------------------------------------------------------------------
288564    -- 4262811 - Generate the Accrual Reversal lines
288565    -------------------------------------------------------------------------------------------
288566    BEGIN
288567       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
288568                               (g_array_event(p_event_id).array_value_num('header_index'));
288569       IF l_acc_rev_flag IS NULL THEN
288570          l_acc_rev_flag := 'N';
288571       END IF;
288572    EXCEPTION
288573       WHEN OTHERS THEN
288574          l_acc_rev_flag := 'N';
288575    END;
288576    --
288577    IF (l_acc_rev_flag = 'Y') THEN
288578 
288579        -- 4645092  ------------------------------------------------------------------------------
288580        -- To allow MPA report to determine if it should generate report process
288581        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
288582        ------------------------------------------------------------------------------------------
288583 
288584        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
288585        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
288586    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
288587    -- call ADRs
288588    -- Bug 4922099
288589    --
288590    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
288591         (NVL(l_actual_upg_option, 'N') = 'O') OR
288592         (NVL(l_enc_upg_option, 'N') = 'O')
288593       )
288594    THEN
288595    NULL;
288596    --
288597    --
288598    
288599   l_ccid := AcctDerRule_6(
288600            p_application_id           => p_application_id
288601          , p_ae_header_id             => l_ae_header_id 
288602 , p_source_11 => p_source_11
288603          , x_transaction_coa_id       => l_adr_transaction_coa_id
288604          , x_accounting_coa_id        => l_adr_accounting_coa_id
288605          , x_value_type_code          => l_adr_value_type_code
288606          , p_side                     => 'NA'
288607    );
288608 
288609    xla_ae_lines_pkg.set_ccid(
288610     p_code_combination_id          => l_ccid
288611   , p_value_type_code              => l_adr_value_type_code
288612   , p_transaction_coa_id           => l_adr_transaction_coa_id
288613   , p_accounting_coa_id            => l_adr_accounting_coa_id
288614   , p_adr_code                     => 'CST_DEFAULT'
288615   , p_adr_type_code                => 'S'
288616   , p_component_type               => l_component_type
288617   , p_component_code               => l_component_code
288618   , p_component_type_code          => l_component_type_code
288619   , p_component_appl_id            => l_component_appl_id
288620   , p_amb_context_code             => l_amb_context_code
288621   , p_side                         => 'NA'
288622   );
288623 
288624 
288625    --
288626    --
288627    END IF;
288628 
288629        --
288630        -- Update the line information that should be overwritten
288631        --
288632        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
288633                                          p_header_num   => 1);
288634        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
288635 
288636        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
288637 
288638        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
288639           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
288640        END IF;
288641 
288642       --
288643       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
288644       --
288645       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
288646           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
288647       ELSE
288648           ---------------------------------------------------------------------------------------------------
288649           -- 4262811a Switch Sign
288650           ---------------------------------------------------------------------------------------------------
288651           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
288652           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
288653                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
288654           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
288655                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
288656           -- 5132302
288657           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
288658                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
288659 
288660       END IF;
288661 
288662       -- 4955764
288663       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
288664       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
288665 
288666 
288667       XLA_AE_LINES_PKG.ValidateCurrentLine;
288668       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
288669 
288670       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
288671                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
288672                ,p_balance_type_code => l_balance_type_code);
288673 
288674    END IF;
288675 
288676    -----------------------------------------------------------------------------------------
288677    -- 4262811 Multiperiod Accounting
288678    -----------------------------------------------------------------------------------------
288679      -- No MPA option is assigned.
288680 
288681 
288682 END IF;
288683 END IF;
288684 --
288685 
288686 --
288687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
288688    trace
288689       (p_msg      => 'END of AcctLineType_515'
288690       ,p_level    => C_LEVEL_PROCEDURE
288691       ,p_module   => l_log_module);
288692 END IF;
288693 --
288694 EXCEPTION
288695   WHEN xla_exceptions_pkg.application_exception THEN
288696       RAISE;
288697   WHEN OTHERS THEN
288698        xla_exceptions_pkg.raise_message
288699            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_515');
288700 END AcctLineType_515;
288701 --
288702 
288703 ---------------------------------------
288704 --
288705 -- PRIVATE FUNCTION
288706 --         AcctLineType_516
288707 --
288708 ---------------------------------------
288709 PROCEDURE AcctLineType_516 (
288710   p_application_id        IN NUMBER
288711  ,p_event_id              IN NUMBER
288712  ,p_calculate_acctd_flag  IN VARCHAR2
288713  ,p_calculate_g_l_flag    IN VARCHAR2
288714  ,p_actual_flag           IN OUT VARCHAR2
288715  ,p_balance_type_code     OUT VARCHAR2
288716  ,p_gain_or_loss_ref      OUT VARCHAR2
288717  
288718 --Cost Management Default Account
288719  , p_source_11            IN NUMBER
288720 --Receiving Accounting Line Type
288721  , p_source_78            IN VARCHAR2
288722 --DISTRIBUTION_IDENTIFIER
288723  , p_source_84            IN NUMBER
288724 --Distribution Type
288725  , p_source_85            IN VARCHAR2
288726  , p_source_85_meaning    IN VARCHAR2
288727 --Entered Currency Code
288728  , p_source_88            IN VARCHAR2
288729 --Entered Amount
288730  , p_source_91            IN NUMBER
288731 --Currency Conversion Date
288732  , p_source_92            IN DATE
288733 --Currency Conversion Rate
288734  , p_source_93            IN NUMBER
288735 --Currency Conversion Type
288736  , p_source_94            IN VARCHAR2
288737 --Accounted Amount
288738  , p_source_95            IN NUMBER
288739 )
288740 IS
288741 
288742 l_component_type              VARCHAR2(80);
288743 l_component_code              VARCHAR2(30);
288744 l_component_type_code         VARCHAR2(1);
288745 l_component_appl_id           INTEGER;
288746 l_amb_context_code            VARCHAR2(30);
288747 l_entity_code                 VARCHAR2(30);
288748 l_event_class_code            VARCHAR2(30);
288749 l_ae_header_id                NUMBER;
288750 l_event_type_code             VARCHAR2(30);
288751 l_line_definition_code        VARCHAR2(30);
288752 l_line_definition_owner_code  VARCHAR2(1);
288753 --
288754 -- adr variables
288755 l_segment                     VARCHAR2(30);
288756 l_ccid                        NUMBER;
288757 l_adr_transaction_coa_id      NUMBER;
288758 l_adr_accounting_coa_id       NUMBER;
288759 l_adr_flexfield_segment_code  VARCHAR2(30);
288760 l_adr_flex_value_set_id       NUMBER;
288761 l_adr_value_type_code         VARCHAR2(30);
288762 l_adr_value_combination_id    NUMBER;
288763 l_adr_value_segment_code      VARCHAR2(30);
288764 
288765 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
288766 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
288767 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
288768 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
288769 
288770 -- 4262811 Variables ------------------------------------------------------------------------------------------
288771 l_entered_amt_idx             NUMBER;
288772 l_accted_amt_idx              NUMBER;
288773 l_acc_rev_flag                VARCHAR2(1);
288774 l_accrual_line_num            NUMBER;
288775 l_tmp_amt                     NUMBER;
288776 l_acc_rev_natural_side_code   VARCHAR2(1);
288777 
288778 l_num_entries                 NUMBER;
288779 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
288780 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
288781 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
288782 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
288783 l_recog_line_1                NUMBER;
288784 l_recog_line_2                NUMBER;
288785 
288786 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
288787 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
288788 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
288789 
288790 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
288791 
288792 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
288793 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
288794 
288795 ---------------------------------------------------------------------------------------------------------------
288796 
288797 
288798 --
288799 -- bulk performance
288800 --
288801 l_balance_type_code           VARCHAR2(1);
288802 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
288803 l_log_module                  VARCHAR2(240);
288804 
288805 --
288806 -- Upgrade strategy
288807 --
288808 l_actual_upg_option           VARCHAR2(1);
288809 l_enc_upg_option           VARCHAR2(1);
288810 
288811 --
288812 BEGIN
288813 --
288814 IF g_log_enabled THEN
288815       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_516';
288816 END IF;
288817 --
288818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
288819 
288820       trace
288821          (p_msg      => 'BEGIN of AcctLineType_516'
288822          ,p_level    => C_LEVEL_PROCEDURE
288823          ,p_module   => l_log_module);
288824 
288825 END IF;
288826 --
288827 l_component_type             := 'AMB_JLT';
288828 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
288829 l_component_type_code        := 'S';
288830 l_component_appl_id          :=  707;
288831 l_amb_context_code           := 'DEFAULT';
288832 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
288833 l_event_class_code           := 'RETR_PRICE_ADJ_RCV';
288834 l_event_type_code            := 'RETR_PRICE_ADJ_RCV_ALL';
288835 l_line_definition_owner_code := 'S';
288836 l_line_definition_code       := 'RETR_PRICE_ADJ_RCV';
288837 --
288838 l_balance_type_code          := 'A';
288839 l_segment                     := NULL;
288840 l_ccid                        := NULL;
288841 l_adr_transaction_coa_id      := NULL;
288842 l_adr_accounting_coa_id       := NULL;
288843 l_adr_flexfield_segment_code  := NULL;
288844 l_adr_flex_value_set_id       := NULL;
288845 l_adr_value_type_code         := NULL;
288846 l_adr_value_combination_id    := NULL;
288847 l_adr_value_segment_code      := NULL;
288848 
288849 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
288850 l_bflow_class_code           := '';    -- 4219869 Business Flow
288851 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
288852 l_budgetary_control_flag     := 'N';
288853 
288854 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
288855 l_bflow_applied_to_amt       := NULL; -- 5132302
288856 l_entered_amt_idx            := NULL;          -- 4262811
288857 l_accted_amt_idx             := NULL;          -- 4262811
288858 l_acc_rev_flag               := NULL;          -- 4262811
288859 l_accrual_line_num           := NULL;          -- 4262811
288860 l_tmp_amt                    := NULL;          -- 4262811
288861 --
288862  
288863 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
288864     l_balance_type_code <> 'B' THEN
288865 IF NVL(p_source_78,'
288866 ') =  'Retroprice Adjustment'
288867  THEN 
288868 
288869    --
288870    XLA_AE_LINES_PKG.SetNewLine;
288871 
288872    p_balance_type_code          := l_balance_type_code;
288873    -- set the flag so later we will know whether the gain loss line needs to be created
288874    
288875    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
288876      p_actual_flag :='A';
288877    END IF;
288878 
288879    --
288880    -- bulk performance
288881    --
288882    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
288883                                       p_header_num   => 0); -- 4262811
288884    --
288885    -- set accounting line options
288886    --
288887    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
288888            p_natural_side_code          => 'D'
288889          , p_gain_or_loss_flag          => 'N'
288890          , p_gl_transfer_mode_code      => 'S'
288891          , p_acct_entry_type_code       => 'A'
288892          , p_switch_side_flag           => 'Y'
288893          , p_merge_duplicate_code       => 'N'
288894          );
288895    --
288896    l_acc_rev_natural_side_code := 'C';  -- 4262811
288897    -- 
288898    --
288899    -- set accounting line type info
288900    --
288901    xla_ae_lines_pkg.SetAcctLineType
288902       (p_component_type             => l_component_type
288903       ,p_event_type_code            => l_event_type_code
288904       ,p_line_definition_owner_code => l_line_definition_owner_code
288905       ,p_line_definition_code       => l_line_definition_code
288906       ,p_accounting_line_code       => l_component_code
288907       ,p_accounting_line_type_code  => l_component_type_code
288908       ,p_accounting_line_appl_id    => l_component_appl_id
288909       ,p_amb_context_code           => l_amb_context_code
288910       ,p_entity_code                => l_entity_code
288911       ,p_event_class_code           => l_event_class_code);
288912    --
288913    -- set accounting class
288914    --
288915    xla_ae_lines_pkg.SetAcctClass(
288916            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
288917          , p_ae_header_id           => l_ae_header_id
288918          );
288919 
288920    --
288921    -- set rounding class
288922    --
288923    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
288924                       'RETROACTIVE_PRICE_ADJUSTMENT';
288925 
288926    --
288927    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
288928    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
288929    --
288930    -- bulk performance
288931    --
288932    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
288933 
288934    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
288935       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
288936 
288937    -- 4955764
288938    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
288939       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
288940 
288941    -- 4458381 Public Sector Enh
288942    
288943    --
288944    -- set accounting attributes for the line type
288945    --
288946    l_entered_amt_idx := 3;
288947    l_accted_amt_idx  := 8;
288948    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
288949    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
288950    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
288951    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
288952    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
288953    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
288954    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
288955    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
288956    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
288957    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
288958    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
288959    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
288960    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
288961    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
288962    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
288963    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
288964    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
288965 
288966    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
288967    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
288968 
288969    ---------------------------------------------------------------------------------------------------------------
288970    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
288971    ---------------------------------------------------------------------------------------------------------------
288972    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
288973 
288974    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
288975    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
288976 
288977    IF xla_accounting_cache_pkg.GetValueChar
288978          (p_source_code         => 'LEDGER_CATEGORY_CODE'
288979          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
288980    AND l_bflow_method_code = 'PRIOR_ENTRY'
288981 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
288982    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
288983          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
288984        )
288985    THEN
288986          xla_ae_lines_pkg.BflowUpgEntry
288987            (p_business_method_code    => l_bflow_method_code
288988            ,p_business_class_code     => l_bflow_class_code
288989            ,p_balance_type            => l_balance_type_code);
288990    ELSE
288991       NULL;
288992 -- No business flow processing for business flow method of NONE.
288993    END IF;
288994 
288995    --
288996    -- call analytical criteria
288997    --
288998    
288999    --
289000    -- call description
289001    --
289002    -- No description or it is inherited.
289003    --
289004    -- call ADRs
289005    -- Bug 4922099
289006    --
289007    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
289008         (NVL(l_actual_upg_option, 'N') = 'O') OR
289009         (NVL(l_enc_upg_option, 'N') = 'O')
289010       )
289011    THEN
289012    NULL;
289013    --
289014    --
289015    
289016   l_ccid := AcctDerRule_6(
289017            p_application_id           => p_application_id
289018          , p_ae_header_id             => l_ae_header_id 
289019 , p_source_11 => p_source_11
289020          , x_transaction_coa_id       => l_adr_transaction_coa_id
289021          , x_accounting_coa_id        => l_adr_accounting_coa_id
289022          , x_value_type_code          => l_adr_value_type_code
289023          , p_side                     => 'NA'
289024    );
289025 
289026    xla_ae_lines_pkg.set_ccid(
289027     p_code_combination_id          => l_ccid
289028   , p_value_type_code              => l_adr_value_type_code
289029   , p_transaction_coa_id           => l_adr_transaction_coa_id
289030   , p_accounting_coa_id            => l_adr_accounting_coa_id
289031   , p_adr_code                     => 'CST_DEFAULT'
289032   , p_adr_type_code                => 'S'
289033   , p_component_type               => l_component_type
289034   , p_component_code               => l_component_code
289035   , p_component_type_code          => l_component_type_code
289036   , p_component_appl_id            => l_component_appl_id
289037   , p_amb_context_code             => l_amb_context_code
289038   , p_side                         => 'NA'
289039   );
289040 
289041 
289042    --
289043    --
289044    END IF;
289045    --
289046    -- Bug 4922099
289047    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
289048           (NVL(l_enc_upg_option, 'N') = 'O')
289049         ) AND
289050         (l_bflow_method_code = 'PRIOR_ENTRY')
289051       )
289052    THEN
289053       IF
289054       --
289055       1 = 2
289056       --
289057       THEN
289058       xla_accounting_err_pkg.build_message
289059                                     (p_appli_s_name            => 'XLA'
289060                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
289061                                     ,p_token_1                 => 'LINE_NUMBER'
289062                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
289063                                     ,p_token_2                 => 'LINE_TYPE_NAME'
289064                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
289065                                                                              l_component_type
289066                                                                             ,l_component_code
289067                                                                             ,l_component_type_code
289068                                                                             ,l_component_appl_id
289069                                                                             ,l_amb_context_code
289070                                                                             ,l_entity_code
289071                                                                             ,l_event_class_code
289072                                                                            )
289073                                     ,p_token_3                 => 'OWNER'
289074                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
289075                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
289076                                                                           ,p_lookup_code    => l_component_type_code
289077                                                                          )
289078                                     ,p_token_4                 => 'PRODUCT_NAME'
289079                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
289080                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
289081                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
289082                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
289083                                     ,p_ae_header_id            =>  NULL
289084                                        );
289085 
289086         IF (C_LEVEL_ERROR>= g_log_level) THEN
289087                  trace
289088                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
289089                       ,p_level    => C_LEVEL_ERROR
289090                       ,p_module   => l_log_module);
289091         END IF;
289092       END IF;
289093    END IF;
289094    --
289095    --
289096    ------------------------------------------------------------------------------------------------
289097    -- 4219869 Business Flow
289098    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
289099    -- Prior Entry.  Currently, the following code is always generated.
289100    ------------------------------------------------------------------------------------------------
289101    XLA_AE_LINES_PKG.ValidateCurrentLine;
289102 
289103    ------------------------------------------------------------------------------------
289104    -- 4219869 Business Flow
289105    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
289106    ------------------------------------------------------------------------------------
289107    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
289108 
289109    ----------------------------------------------------------------------------------
289110    -- 4219869 Business Flow
289111    -- Update journal entry status -- Need to generate this within IF <condition>
289112    ----------------------------------------------------------------------------------
289113    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
289114          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
289115          ,p_balance_type_code => l_balance_type_code
289116          );
289117 
289118    -------------------------------------------------------------------------------------------
289119    -- 4262811 - Generate the Accrual Reversal lines
289120    -------------------------------------------------------------------------------------------
289121    BEGIN
289122       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
289123                               (g_array_event(p_event_id).array_value_num('header_index'));
289124       IF l_acc_rev_flag IS NULL THEN
289125          l_acc_rev_flag := 'N';
289126       END IF;
289127    EXCEPTION
289128       WHEN OTHERS THEN
289129          l_acc_rev_flag := 'N';
289130    END;
289131    --
289132    IF (l_acc_rev_flag = 'Y') THEN
289133 
289134        -- 4645092  ------------------------------------------------------------------------------
289135        -- To allow MPA report to determine if it should generate report process
289136        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
289137        ------------------------------------------------------------------------------------------
289138 
289139        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
289140        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
289141    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
289142    -- call ADRs
289143    -- Bug 4922099
289144    --
289145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
289146         (NVL(l_actual_upg_option, 'N') = 'O') OR
289147         (NVL(l_enc_upg_option, 'N') = 'O')
289148       )
289149    THEN
289150    NULL;
289151    --
289152    --
289153    
289154   l_ccid := AcctDerRule_6(
289155            p_application_id           => p_application_id
289156          , p_ae_header_id             => l_ae_header_id 
289157 , p_source_11 => p_source_11
289158          , x_transaction_coa_id       => l_adr_transaction_coa_id
289159          , x_accounting_coa_id        => l_adr_accounting_coa_id
289160          , x_value_type_code          => l_adr_value_type_code
289161          , p_side                     => 'NA'
289162    );
289163 
289164    xla_ae_lines_pkg.set_ccid(
289165     p_code_combination_id          => l_ccid
289166   , p_value_type_code              => l_adr_value_type_code
289167   , p_transaction_coa_id           => l_adr_transaction_coa_id
289168   , p_accounting_coa_id            => l_adr_accounting_coa_id
289169   , p_adr_code                     => 'CST_DEFAULT'
289170   , p_adr_type_code                => 'S'
289171   , p_component_type               => l_component_type
289172   , p_component_code               => l_component_code
289173   , p_component_type_code          => l_component_type_code
289174   , p_component_appl_id            => l_component_appl_id
289175   , p_amb_context_code             => l_amb_context_code
289176   , p_side                         => 'NA'
289177   );
289178 
289179 
289180    --
289181    --
289182    END IF;
289183 
289184        --
289185        -- Update the line information that should be overwritten
289186        --
289187        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
289188                                          p_header_num   => 1);
289189        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
289190 
289191        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
289192 
289193        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
289194           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
289195        END IF;
289196 
289197       --
289198       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
289199       --
289200       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
289201           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
289202       ELSE
289203           ---------------------------------------------------------------------------------------------------
289204           -- 4262811a Switch Sign
289205           ---------------------------------------------------------------------------------------------------
289206           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
289207           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
289208                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
289209           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
289210                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
289211           -- 5132302
289212           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
289213                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
289214 
289215       END IF;
289216 
289217       -- 4955764
289218       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
289219       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
289220 
289221 
289222       XLA_AE_LINES_PKG.ValidateCurrentLine;
289223       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
289224 
289225       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
289226                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
289227                ,p_balance_type_code => l_balance_type_code);
289228 
289229    END IF;
289230 
289231    -----------------------------------------------------------------------------------------
289232    -- 4262811 Multiperiod Accounting
289233    -----------------------------------------------------------------------------------------
289234      -- No MPA option is assigned.
289235 
289236 
289237 END IF;
289238 END IF;
289239 --
289240 
289241 --
289242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289243    trace
289244       (p_msg      => 'END of AcctLineType_516'
289245       ,p_level    => C_LEVEL_PROCEDURE
289246       ,p_module   => l_log_module);
289247 END IF;
289248 --
289249 EXCEPTION
289250   WHEN xla_exceptions_pkg.application_exception THEN
289251       RAISE;
289252   WHEN OTHERS THEN
289253        xla_exceptions_pkg.raise_message
289254            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_516');
289255 END AcctLineType_516;
289256 --
289257 
289258 ---------------------------------------
289259 --
289260 -- PRIVATE FUNCTION
289261 --         AcctLineType_517
289262 --
289263 ---------------------------------------
289264 PROCEDURE AcctLineType_517 (
289265   p_application_id        IN NUMBER
289266  ,p_event_id              IN NUMBER
289267  ,p_calculate_acctd_flag  IN VARCHAR2
289268  ,p_calculate_g_l_flag    IN VARCHAR2
289269  ,p_actual_flag           IN OUT VARCHAR2
289270  ,p_balance_type_code     OUT VARCHAR2
289271  ,p_gain_or_loss_ref      OUT VARCHAR2
289272  
289273 --Cost Management Default Account
289274  , p_source_11            IN NUMBER
289275 --Receiving Accounting Line Type
289276  , p_source_78            IN VARCHAR2
289277 --DISTRIBUTION_IDENTIFIER
289278  , p_source_84            IN NUMBER
289279 --Distribution Type
289280  , p_source_85            IN VARCHAR2
289281  , p_source_85_meaning    IN VARCHAR2
289282 --Entered Currency Code
289283  , p_source_88            IN VARCHAR2
289284 --Entered Amount
289285  , p_source_91            IN NUMBER
289286 --Currency Conversion Date
289287  , p_source_92            IN DATE
289288 --Currency Conversion Rate
289289  , p_source_93            IN NUMBER
289290 --Accounted Amount
289291  , p_source_95            IN NUMBER
289292 )
289293 IS
289294 
289295 l_component_type              VARCHAR2(80);
289296 l_component_code              VARCHAR2(30);
289297 l_component_type_code         VARCHAR2(1);
289298 l_component_appl_id           INTEGER;
289299 l_amb_context_code            VARCHAR2(30);
289300 l_entity_code                 VARCHAR2(30);
289301 l_event_class_code            VARCHAR2(30);
289302 l_ae_header_id                NUMBER;
289303 l_event_type_code             VARCHAR2(30);
289304 l_line_definition_code        VARCHAR2(30);
289305 l_line_definition_owner_code  VARCHAR2(1);
289306 --
289307 -- adr variables
289308 l_segment                     VARCHAR2(30);
289309 l_ccid                        NUMBER;
289310 l_adr_transaction_coa_id      NUMBER;
289311 l_adr_accounting_coa_id       NUMBER;
289312 l_adr_flexfield_segment_code  VARCHAR2(30);
289313 l_adr_flex_value_set_id       NUMBER;
289314 l_adr_value_type_code         VARCHAR2(30);
289315 l_adr_value_combination_id    NUMBER;
289316 l_adr_value_segment_code      VARCHAR2(30);
289317 
289318 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
289319 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
289320 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
289321 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
289322 
289323 -- 4262811 Variables ------------------------------------------------------------------------------------------
289324 l_entered_amt_idx             NUMBER;
289325 l_accted_amt_idx              NUMBER;
289326 l_acc_rev_flag                VARCHAR2(1);
289327 l_accrual_line_num            NUMBER;
289328 l_tmp_amt                     NUMBER;
289329 l_acc_rev_natural_side_code   VARCHAR2(1);
289330 
289331 l_num_entries                 NUMBER;
289332 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
289333 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
289334 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
289335 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
289336 l_recog_line_1                NUMBER;
289337 l_recog_line_2                NUMBER;
289338 
289339 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
289340 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
289341 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
289342 
289343 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
289344 
289345 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
289346 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
289347 
289348 ---------------------------------------------------------------------------------------------------------------
289349 
289350 
289351 --
289352 -- bulk performance
289353 --
289354 l_balance_type_code           VARCHAR2(1);
289355 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
289356 l_log_module                  VARCHAR2(240);
289357 
289358 --
289359 -- Upgrade strategy
289360 --
289361 l_actual_upg_option           VARCHAR2(1);
289362 l_enc_upg_option           VARCHAR2(1);
289363 
289364 --
289365 BEGIN
289366 --
289367 IF g_log_enabled THEN
289368       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_517';
289369 END IF;
289370 --
289371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289372 
289373       trace
289374          (p_msg      => 'BEGIN of AcctLineType_517'
289375          ,p_level    => C_LEVEL_PROCEDURE
289376          ,p_module   => l_log_module);
289377 
289378 END IF;
289379 --
289380 l_component_type             := 'AMB_JLT';
289381 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
289382 l_component_type_code        := 'S';
289383 l_component_appl_id          :=  707;
289384 l_amb_context_code           := 'DEFAULT';
289385 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
289386 l_event_class_code           := 'RETR_PRICE_ADJ_DEL';
289387 l_event_type_code            := 'RETR_PRICE_ADJ_DEL_ALL';
289388 l_line_definition_owner_code := 'S';
289389 l_line_definition_code       := 'RETR_PRICE_ADJ_DEL';
289390 --
289391 l_balance_type_code          := 'A';
289392 l_segment                     := NULL;
289393 l_ccid                        := NULL;
289394 l_adr_transaction_coa_id      := NULL;
289395 l_adr_accounting_coa_id       := NULL;
289396 l_adr_flexfield_segment_code  := NULL;
289397 l_adr_flex_value_set_id       := NULL;
289398 l_adr_value_type_code         := NULL;
289399 l_adr_value_combination_id    := NULL;
289400 l_adr_value_segment_code      := NULL;
289401 
289402 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
289403 l_bflow_class_code           := '';    -- 4219869 Business Flow
289404 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
289405 l_budgetary_control_flag     := 'N';
289406 
289407 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
289408 l_bflow_applied_to_amt       := NULL; -- 5132302
289409 l_entered_amt_idx            := NULL;          -- 4262811
289410 l_accted_amt_idx             := NULL;          -- 4262811
289411 l_acc_rev_flag               := NULL;          -- 4262811
289412 l_accrual_line_num           := NULL;          -- 4262811
289413 l_tmp_amt                    := NULL;          -- 4262811
289414 --
289415  
289416 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
289417     l_balance_type_code <> 'B' THEN
289418 IF NVL(p_source_78,'
289419 ') =  'Retroprice Adjustment'
289420  THEN 
289421 
289422    --
289423    XLA_AE_LINES_PKG.SetNewLine;
289424 
289425    p_balance_type_code          := l_balance_type_code;
289426    -- set the flag so later we will know whether the gain loss line needs to be created
289427    
289428    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
289429      p_actual_flag :='A';
289430    END IF;
289431 
289432    --
289433    -- bulk performance
289434    --
289435    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
289436                                       p_header_num   => 0); -- 4262811
289437    --
289438    -- set accounting line options
289439    --
289440    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
289441            p_natural_side_code          => 'D'
289442          , p_gain_or_loss_flag          => 'N'
289443          , p_gl_transfer_mode_code      => 'S'
289444          , p_acct_entry_type_code       => 'A'
289445          , p_switch_side_flag           => 'Y'
289446          , p_merge_duplicate_code       => 'N'
289447          );
289448    --
289449    l_acc_rev_natural_side_code := 'C';  -- 4262811
289450    -- 
289451    --
289452    -- set accounting line type info
289453    --
289454    xla_ae_lines_pkg.SetAcctLineType
289455       (p_component_type             => l_component_type
289456       ,p_event_type_code            => l_event_type_code
289457       ,p_line_definition_owner_code => l_line_definition_owner_code
289458       ,p_line_definition_code       => l_line_definition_code
289459       ,p_accounting_line_code       => l_component_code
289460       ,p_accounting_line_type_code  => l_component_type_code
289461       ,p_accounting_line_appl_id    => l_component_appl_id
289462       ,p_amb_context_code           => l_amb_context_code
289463       ,p_entity_code                => l_entity_code
289464       ,p_event_class_code           => l_event_class_code);
289465    --
289466    -- set accounting class
289467    --
289468    xla_ae_lines_pkg.SetAcctClass(
289469            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
289470          , p_ae_header_id           => l_ae_header_id
289471          );
289472 
289473    --
289474    -- set rounding class
289475    --
289476    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
289477                       'RETROACTIVE_PRICE_ADJUSTMENT';
289478 
289479    --
289480    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
289481    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
289482    --
289483    -- bulk performance
289484    --
289485    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
289486 
289487    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
289488       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
289489 
289490    -- 4955764
289491    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
289492       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
289493 
289494    -- 4458381 Public Sector Enh
289495    
289496    --
289497    -- set accounting attributes for the line type
289498    --
289499    l_entered_amt_idx := 3;
289500    l_accted_amt_idx  := 8;
289501    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
289502    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
289503    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
289504    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
289505    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
289506    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
289507    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
289508    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
289509    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
289510    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
289511    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
289512    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
289513    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
289514    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
289515    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
289516    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
289517    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
289518 
289519    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
289520    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
289521 
289522    ---------------------------------------------------------------------------------------------------------------
289523    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
289524    ---------------------------------------------------------------------------------------------------------------
289525    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
289526 
289527    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
289528    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
289529 
289530    IF xla_accounting_cache_pkg.GetValueChar
289531          (p_source_code         => 'LEDGER_CATEGORY_CODE'
289532          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
289533    AND l_bflow_method_code = 'PRIOR_ENTRY'
289534 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
289535    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
289536          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
289537        )
289538    THEN
289539          xla_ae_lines_pkg.BflowUpgEntry
289540            (p_business_method_code    => l_bflow_method_code
289541            ,p_business_class_code     => l_bflow_class_code
289542            ,p_balance_type            => l_balance_type_code);
289543    ELSE
289544       NULL;
289545 -- No business flow processing for business flow method of NONE.
289546    END IF;
289547 
289548    --
289549    -- call analytical criteria
289550    --
289551    
289552    --
289553    -- call description
289554    --
289555    -- No description or it is inherited.
289556    --
289557    -- call ADRs
289558    -- Bug 4922099
289559    --
289560    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
289561         (NVL(l_actual_upg_option, 'N') = 'O') OR
289562         (NVL(l_enc_upg_option, 'N') = 'O')
289563       )
289564    THEN
289565    NULL;
289566    --
289567    --
289568    
289569   l_ccid := AcctDerRule_6(
289570            p_application_id           => p_application_id
289571          , p_ae_header_id             => l_ae_header_id 
289572 , p_source_11 => p_source_11
289573          , x_transaction_coa_id       => l_adr_transaction_coa_id
289574          , x_accounting_coa_id        => l_adr_accounting_coa_id
289575          , x_value_type_code          => l_adr_value_type_code
289576          , p_side                     => 'NA'
289577    );
289578 
289579    xla_ae_lines_pkg.set_ccid(
289580     p_code_combination_id          => l_ccid
289581   , p_value_type_code              => l_adr_value_type_code
289582   , p_transaction_coa_id           => l_adr_transaction_coa_id
289583   , p_accounting_coa_id            => l_adr_accounting_coa_id
289584   , p_adr_code                     => 'CST_DEFAULT'
289585   , p_adr_type_code                => 'S'
289586   , p_component_type               => l_component_type
289587   , p_component_code               => l_component_code
289588   , p_component_type_code          => l_component_type_code
289589   , p_component_appl_id            => l_component_appl_id
289590   , p_amb_context_code             => l_amb_context_code
289591   , p_side                         => 'NA'
289592   );
289593 
289594 
289595    --
289596    --
289597    END IF;
289598    --
289599    -- Bug 4922099
289600    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
289601           (NVL(l_enc_upg_option, 'N') = 'O')
289602         ) AND
289603         (l_bflow_method_code = 'PRIOR_ENTRY')
289604       )
289605    THEN
289606       IF
289607       --
289608       1 = 2
289609       --
289610       THEN
289611       xla_accounting_err_pkg.build_message
289612                                     (p_appli_s_name            => 'XLA'
289613                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
289614                                     ,p_token_1                 => 'LINE_NUMBER'
289615                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
289616                                     ,p_token_2                 => 'LINE_TYPE_NAME'
289617                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
289618                                                                              l_component_type
289619                                                                             ,l_component_code
289620                                                                             ,l_component_type_code
289621                                                                             ,l_component_appl_id
289622                                                                             ,l_amb_context_code
289623                                                                             ,l_entity_code
289624                                                                             ,l_event_class_code
289625                                                                            )
289626                                     ,p_token_3                 => 'OWNER'
289627                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
289628                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
289629                                                                           ,p_lookup_code    => l_component_type_code
289630                                                                          )
289631                                     ,p_token_4                 => 'PRODUCT_NAME'
289632                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
289633                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
289634                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
289635                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
289636                                     ,p_ae_header_id            =>  NULL
289637                                        );
289638 
289639         IF (C_LEVEL_ERROR>= g_log_level) THEN
289640                  trace
289641                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
289642                       ,p_level    => C_LEVEL_ERROR
289643                       ,p_module   => l_log_module);
289644         END IF;
289645       END IF;
289646    END IF;
289647    --
289648    --
289649    ------------------------------------------------------------------------------------------------
289650    -- 4219869 Business Flow
289651    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
289652    -- Prior Entry.  Currently, the following code is always generated.
289653    ------------------------------------------------------------------------------------------------
289654    XLA_AE_LINES_PKG.ValidateCurrentLine;
289655 
289656    ------------------------------------------------------------------------------------
289657    -- 4219869 Business Flow
289658    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
289659    ------------------------------------------------------------------------------------
289660    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
289661 
289662    ----------------------------------------------------------------------------------
289663    -- 4219869 Business Flow
289664    -- Update journal entry status -- Need to generate this within IF <condition>
289665    ----------------------------------------------------------------------------------
289666    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
289667          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
289668          ,p_balance_type_code => l_balance_type_code
289669          );
289670 
289671    -------------------------------------------------------------------------------------------
289672    -- 4262811 - Generate the Accrual Reversal lines
289673    -------------------------------------------------------------------------------------------
289674    BEGIN
289675       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
289676                               (g_array_event(p_event_id).array_value_num('header_index'));
289677       IF l_acc_rev_flag IS NULL THEN
289678          l_acc_rev_flag := 'N';
289679       END IF;
289680    EXCEPTION
289681       WHEN OTHERS THEN
289682          l_acc_rev_flag := 'N';
289683    END;
289684    --
289685    IF (l_acc_rev_flag = 'Y') THEN
289686 
289687        -- 4645092  ------------------------------------------------------------------------------
289688        -- To allow MPA report to determine if it should generate report process
289689        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
289690        ------------------------------------------------------------------------------------------
289691 
289692        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
289693        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
289694    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
289695    -- call ADRs
289696    -- Bug 4922099
289697    --
289698    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
289699         (NVL(l_actual_upg_option, 'N') = 'O') OR
289700         (NVL(l_enc_upg_option, 'N') = 'O')
289701       )
289702    THEN
289703    NULL;
289704    --
289705    --
289706    
289707   l_ccid := AcctDerRule_6(
289708            p_application_id           => p_application_id
289709          , p_ae_header_id             => l_ae_header_id 
289710 , p_source_11 => p_source_11
289711          , x_transaction_coa_id       => l_adr_transaction_coa_id
289712          , x_accounting_coa_id        => l_adr_accounting_coa_id
289713          , x_value_type_code          => l_adr_value_type_code
289714          , p_side                     => 'NA'
289715    );
289716 
289717    xla_ae_lines_pkg.set_ccid(
289718     p_code_combination_id          => l_ccid
289719   , p_value_type_code              => l_adr_value_type_code
289720   , p_transaction_coa_id           => l_adr_transaction_coa_id
289721   , p_accounting_coa_id            => l_adr_accounting_coa_id
289722   , p_adr_code                     => 'CST_DEFAULT'
289723   , p_adr_type_code                => 'S'
289724   , p_component_type               => l_component_type
289725   , p_component_code               => l_component_code
289726   , p_component_type_code          => l_component_type_code
289727   , p_component_appl_id            => l_component_appl_id
289728   , p_amb_context_code             => l_amb_context_code
289729   , p_side                         => 'NA'
289730   );
289731 
289732 
289733    --
289734    --
289735    END IF;
289736 
289737        --
289738        -- Update the line information that should be overwritten
289739        --
289740        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
289741                                          p_header_num   => 1);
289742        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
289743 
289744        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
289745 
289746        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
289747           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
289748        END IF;
289749 
289750       --
289751       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
289752       --
289753       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
289754           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
289755       ELSE
289756           ---------------------------------------------------------------------------------------------------
289757           -- 4262811a Switch Sign
289758           ---------------------------------------------------------------------------------------------------
289759           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
289760           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
289761                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
289762           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
289763                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
289764           -- 5132302
289765           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
289766                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
289767 
289768       END IF;
289769 
289770       -- 4955764
289771       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
289772       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
289773 
289774 
289775       XLA_AE_LINES_PKG.ValidateCurrentLine;
289776       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
289777 
289778       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
289779                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
289780                ,p_balance_type_code => l_balance_type_code);
289781 
289782    END IF;
289783 
289784    -----------------------------------------------------------------------------------------
289785    -- 4262811 Multiperiod Accounting
289786    -----------------------------------------------------------------------------------------
289787      -- No MPA option is assigned.
289788 
289789 
289790 END IF;
289791 END IF;
289792 --
289793 
289794 --
289795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289796    trace
289797       (p_msg      => 'END of AcctLineType_517'
289798       ,p_level    => C_LEVEL_PROCEDURE
289799       ,p_module   => l_log_module);
289800 END IF;
289801 --
289802 EXCEPTION
289803   WHEN xla_exceptions_pkg.application_exception THEN
289804       RAISE;
289805   WHEN OTHERS THEN
289806        xla_exceptions_pkg.raise_message
289807            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_517');
289808 END AcctLineType_517;
289809 --
289810 
289811 ---------------------------------------
289812 --
289813 -- PRIVATE FUNCTION
289814 --         AcctLineType_518
289815 --
289816 ---------------------------------------
289817 PROCEDURE AcctLineType_518 (
289818   p_application_id        IN NUMBER
289819  ,p_event_id              IN NUMBER
289820  ,p_calculate_acctd_flag  IN VARCHAR2
289821  ,p_calculate_g_l_flag    IN VARCHAR2
289822  ,p_actual_flag           IN OUT VARCHAR2
289823  ,p_balance_type_code     OUT VARCHAR2
289824  ,p_gain_or_loss_ref      OUT VARCHAR2
289825  
289826 --Cost Management Default Account
289827  , p_source_11            IN NUMBER
289828 --DISTRIBUTION_IDENTIFIER
289829  , p_source_84            IN NUMBER
289830 --Distribution Type
289831  , p_source_85            IN VARCHAR2
289832  , p_source_85_meaning    IN VARCHAR2
289833 --Entered Currency Code
289834  , p_source_88            IN VARCHAR2
289835 --Entered Amount
289836  , p_source_91            IN NUMBER
289837 --Currency Conversion Date
289838  , p_source_92            IN DATE
289839 --Currency Conversion Rate
289840  , p_source_93            IN NUMBER
289841 --Currency Conversion Type
289842  , p_source_94            IN VARCHAR2
289843 --Accounted Amount
289844  , p_source_95            IN NUMBER
289845 --Accounting Line Type
289846  , p_source_97            IN NUMBER
289847 )
289848 IS
289849 
289850 l_component_type              VARCHAR2(80);
289851 l_component_code              VARCHAR2(30);
289852 l_component_type_code         VARCHAR2(1);
289853 l_component_appl_id           INTEGER;
289854 l_amb_context_code            VARCHAR2(30);
289855 l_entity_code                 VARCHAR2(30);
289856 l_event_class_code            VARCHAR2(30);
289857 l_ae_header_id                NUMBER;
289858 l_event_type_code             VARCHAR2(30);
289859 l_line_definition_code        VARCHAR2(30);
289860 l_line_definition_owner_code  VARCHAR2(1);
289861 --
289862 -- adr variables
289863 l_segment                     VARCHAR2(30);
289864 l_ccid                        NUMBER;
289865 l_adr_transaction_coa_id      NUMBER;
289866 l_adr_accounting_coa_id       NUMBER;
289867 l_adr_flexfield_segment_code  VARCHAR2(30);
289868 l_adr_flex_value_set_id       NUMBER;
289869 l_adr_value_type_code         VARCHAR2(30);
289870 l_adr_value_combination_id    NUMBER;
289871 l_adr_value_segment_code      VARCHAR2(30);
289872 
289873 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
289874 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
289875 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
289876 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
289877 
289878 -- 4262811 Variables ------------------------------------------------------------------------------------------
289879 l_entered_amt_idx             NUMBER;
289880 l_accted_amt_idx              NUMBER;
289881 l_acc_rev_flag                VARCHAR2(1);
289882 l_accrual_line_num            NUMBER;
289883 l_tmp_amt                     NUMBER;
289884 l_acc_rev_natural_side_code   VARCHAR2(1);
289885 
289886 l_num_entries                 NUMBER;
289887 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
289888 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
289889 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
289890 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
289891 l_recog_line_1                NUMBER;
289892 l_recog_line_2                NUMBER;
289893 
289894 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
289895 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
289896 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
289897 
289898 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
289899 
289900 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
289901 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
289902 
289903 ---------------------------------------------------------------------------------------------------------------
289904 
289905 
289906 --
289907 -- bulk performance
289908 --
289909 l_balance_type_code           VARCHAR2(1);
289910 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
289911 l_log_module                  VARCHAR2(240);
289912 
289913 --
289914 -- Upgrade strategy
289915 --
289916 l_actual_upg_option           VARCHAR2(1);
289917 l_enc_upg_option           VARCHAR2(1);
289918 
289919 --
289920 BEGIN
289921 --
289922 IF g_log_enabled THEN
289923       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_518';
289924 END IF;
289925 --
289926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289927 
289928       trace
289929          (p_msg      => 'BEGIN of AcctLineType_518'
289930          ,p_level    => C_LEVEL_PROCEDURE
289931          ,p_module   => l_log_module);
289932 
289933 END IF;
289934 --
289935 l_component_type             := 'AMB_JLT';
289936 l_component_code             := 'RETROACTIVE_PRICE_ADJ';
289937 l_component_type_code        := 'S';
289938 l_component_appl_id          :=  707;
289939 l_amb_context_code           := 'DEFAULT';
289940 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
289941 l_event_class_code           := 'RETR_PRICE_ADJ';
289942 l_event_type_code            := 'RETR_PRICE_ADJ_ALL';
289943 l_line_definition_owner_code := 'S';
289944 l_line_definition_code       := 'RETR_PRICE_ADJ';
289945 --
289946 l_balance_type_code          := 'A';
289947 l_segment                     := NULL;
289948 l_ccid                        := NULL;
289949 l_adr_transaction_coa_id      := NULL;
289950 l_adr_accounting_coa_id       := NULL;
289951 l_adr_flexfield_segment_code  := NULL;
289952 l_adr_flex_value_set_id       := NULL;
289953 l_adr_value_type_code         := NULL;
289954 l_adr_value_combination_id    := NULL;
289955 l_adr_value_segment_code      := NULL;
289956 
289957 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
289958 l_bflow_class_code           := '';    -- 4219869 Business Flow
289959 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
289960 l_budgetary_control_flag     := 'N';
289961 
289962 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
289963 l_bflow_applied_to_amt       := NULL; -- 5132302
289964 l_entered_amt_idx            := NULL;          -- 4262811
289965 l_accted_amt_idx             := NULL;          -- 4262811
289966 l_acc_rev_flag               := NULL;          -- 4262811
289967 l_accrual_line_num           := NULL;          -- 4262811
289968 l_tmp_amt                    := NULL;          -- 4262811
289969 --
289970  
289971 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
289972     l_balance_type_code <> 'B' THEN
289973 IF NVL(p_source_97,9E125) =  32
289974  THEN 
289975 
289976    --
289977    XLA_AE_LINES_PKG.SetNewLine;
289978 
289979    p_balance_type_code          := l_balance_type_code;
289980    -- set the flag so later we will know whether the gain loss line needs to be created
289981    
289982    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
289983      p_actual_flag :='A';
289984    END IF;
289985 
289986    --
289987    -- bulk performance
289988    --
289989    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
289990                                       p_header_num   => 0); -- 4262811
289991    --
289992    -- set accounting line options
289993    --
289994    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
289995            p_natural_side_code          => 'D'
289996          , p_gain_or_loss_flag          => 'N'
289997          , p_gl_transfer_mode_code      => 'S'
289998          , p_acct_entry_type_code       => 'A'
289999          , p_switch_side_flag           => 'Y'
290000          , p_merge_duplicate_code       => 'N'
290001          );
290002    --
290003    l_acc_rev_natural_side_code := 'C';  -- 4262811
290004    -- 
290005    --
290006    -- set accounting line type info
290007    --
290008    xla_ae_lines_pkg.SetAcctLineType
290009       (p_component_type             => l_component_type
290010       ,p_event_type_code            => l_event_type_code
290011       ,p_line_definition_owner_code => l_line_definition_owner_code
290012       ,p_line_definition_code       => l_line_definition_code
290013       ,p_accounting_line_code       => l_component_code
290014       ,p_accounting_line_type_code  => l_component_type_code
290015       ,p_accounting_line_appl_id    => l_component_appl_id
290016       ,p_amb_context_code           => l_amb_context_code
290017       ,p_entity_code                => l_entity_code
290018       ,p_event_class_code           => l_event_class_code);
290019    --
290020    -- set accounting class
290021    --
290022    xla_ae_lines_pkg.SetAcctClass(
290023            p_accounting_class_code  => 'RETROACTIVE_PRICE_ADJUSTMENT'
290024          , p_ae_header_id           => l_ae_header_id
290025          );
290026 
290027    --
290028    -- set rounding class
290029    --
290030    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
290031                       'RETROACTIVE_PRICE_ADJUSTMENT';
290032 
290033    --
290034    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
290035    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
290036    --
290037    -- bulk performance
290038    --
290039    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
290040 
290041    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
290042       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
290043 
290044    -- 4955764
290045    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
290046       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
290047 
290048    -- 4458381 Public Sector Enh
290049    
290050    --
290051    -- set accounting attributes for the line type
290052    --
290053    l_entered_amt_idx := 3;
290054    l_accted_amt_idx  := 8;
290055    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
290056    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
290057    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
290058    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
290059    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
290060    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
290061    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
290062    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
290063    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
290064    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
290065    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
290066    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
290067    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
290068    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
290069    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
290070    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
290071    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
290072 
290073    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
290074    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
290075 
290076    ---------------------------------------------------------------------------------------------------------------
290077    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
290078    ---------------------------------------------------------------------------------------------------------------
290079    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
290080 
290081    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
290082    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
290083 
290084    IF xla_accounting_cache_pkg.GetValueChar
290085          (p_source_code         => 'LEDGER_CATEGORY_CODE'
290086          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
290087    AND l_bflow_method_code = 'PRIOR_ENTRY'
290088 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
290089    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
290090          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
290091        )
290092    THEN
290093          xla_ae_lines_pkg.BflowUpgEntry
290094            (p_business_method_code    => l_bflow_method_code
290095            ,p_business_class_code     => l_bflow_class_code
290096            ,p_balance_type            => l_balance_type_code);
290097    ELSE
290098       NULL;
290099 -- No business flow processing for business flow method of NONE.
290100    END IF;
290101 
290102    --
290103    -- call analytical criteria
290104    --
290105    
290106    --
290107    -- call description
290108    --
290109    -- No description or it is inherited.
290110    --
290111    -- call ADRs
290112    -- Bug 4922099
290113    --
290114    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
290115         (NVL(l_actual_upg_option, 'N') = 'O') OR
290116         (NVL(l_enc_upg_option, 'N') = 'O')
290117       )
290118    THEN
290119    NULL;
290120    --
290121    --
290122    
290123   l_ccid := AcctDerRule_6(
290124            p_application_id           => p_application_id
290125          , p_ae_header_id             => l_ae_header_id 
290126 , p_source_11 => p_source_11
290127          , x_transaction_coa_id       => l_adr_transaction_coa_id
290128          , x_accounting_coa_id        => l_adr_accounting_coa_id
290129          , x_value_type_code          => l_adr_value_type_code
290130          , p_side                     => 'NA'
290131    );
290132 
290133    xla_ae_lines_pkg.set_ccid(
290134     p_code_combination_id          => l_ccid
290135   , p_value_type_code              => l_adr_value_type_code
290136   , p_transaction_coa_id           => l_adr_transaction_coa_id
290137   , p_accounting_coa_id            => l_adr_accounting_coa_id
290138   , p_adr_code                     => 'CST_DEFAULT'
290139   , p_adr_type_code                => 'S'
290140   , p_component_type               => l_component_type
290141   , p_component_code               => l_component_code
290142   , p_component_type_code          => l_component_type_code
290143   , p_component_appl_id            => l_component_appl_id
290144   , p_amb_context_code             => l_amb_context_code
290145   , p_side                         => 'NA'
290146   );
290147 
290148 
290149    --
290150    --
290151    END IF;
290152    --
290153    -- Bug 4922099
290154    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
290155           (NVL(l_enc_upg_option, 'N') = 'O')
290156         ) AND
290157         (l_bflow_method_code = 'PRIOR_ENTRY')
290158       )
290159    THEN
290160       IF
290161       --
290162       1 = 2
290163       --
290164       THEN
290165       xla_accounting_err_pkg.build_message
290166                                     (p_appli_s_name            => 'XLA'
290167                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
290168                                     ,p_token_1                 => 'LINE_NUMBER'
290169                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
290170                                     ,p_token_2                 => 'LINE_TYPE_NAME'
290171                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
290172                                                                              l_component_type
290173                                                                             ,l_component_code
290174                                                                             ,l_component_type_code
290175                                                                             ,l_component_appl_id
290176                                                                             ,l_amb_context_code
290177                                                                             ,l_entity_code
290178                                                                             ,l_event_class_code
290179                                                                            )
290180                                     ,p_token_3                 => 'OWNER'
290181                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
290182                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
290183                                                                           ,p_lookup_code    => l_component_type_code
290184                                                                          )
290185                                     ,p_token_4                 => 'PRODUCT_NAME'
290186                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
290187                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
290188                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
290189                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
290190                                     ,p_ae_header_id            =>  NULL
290191                                        );
290192 
290193         IF (C_LEVEL_ERROR>= g_log_level) THEN
290194                  trace
290195                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
290196                       ,p_level    => C_LEVEL_ERROR
290197                       ,p_module   => l_log_module);
290198         END IF;
290199       END IF;
290200    END IF;
290201    --
290202    --
290203    ------------------------------------------------------------------------------------------------
290204    -- 4219869 Business Flow
290205    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
290206    -- Prior Entry.  Currently, the following code is always generated.
290207    ------------------------------------------------------------------------------------------------
290208    XLA_AE_LINES_PKG.ValidateCurrentLine;
290209 
290210    ------------------------------------------------------------------------------------
290211    -- 4219869 Business Flow
290212    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
290213    ------------------------------------------------------------------------------------
290214    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
290215 
290216    ----------------------------------------------------------------------------------
290217    -- 4219869 Business Flow
290218    -- Update journal entry status -- Need to generate this within IF <condition>
290219    ----------------------------------------------------------------------------------
290220    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
290221          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
290222          ,p_balance_type_code => l_balance_type_code
290223          );
290224 
290225    -------------------------------------------------------------------------------------------
290226    -- 4262811 - Generate the Accrual Reversal lines
290227    -------------------------------------------------------------------------------------------
290228    BEGIN
290229       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
290230                               (g_array_event(p_event_id).array_value_num('header_index'));
290231       IF l_acc_rev_flag IS NULL THEN
290232          l_acc_rev_flag := 'N';
290233       END IF;
290234    EXCEPTION
290235       WHEN OTHERS THEN
290236          l_acc_rev_flag := 'N';
290237    END;
290238    --
290239    IF (l_acc_rev_flag = 'Y') THEN
290240 
290241        -- 4645092  ------------------------------------------------------------------------------
290242        -- To allow MPA report to determine if it should generate report process
290243        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
290244        ------------------------------------------------------------------------------------------
290245 
290246        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
290247        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
290248    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
290249    -- call ADRs
290250    -- Bug 4922099
290251    --
290252    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
290253         (NVL(l_actual_upg_option, 'N') = 'O') OR
290254         (NVL(l_enc_upg_option, 'N') = 'O')
290255       )
290256    THEN
290257    NULL;
290258    --
290259    --
290260    
290261   l_ccid := AcctDerRule_6(
290262            p_application_id           => p_application_id
290263          , p_ae_header_id             => l_ae_header_id 
290264 , p_source_11 => p_source_11
290265          , x_transaction_coa_id       => l_adr_transaction_coa_id
290266          , x_accounting_coa_id        => l_adr_accounting_coa_id
290267          , x_value_type_code          => l_adr_value_type_code
290268          , p_side                     => 'NA'
290269    );
290270 
290271    xla_ae_lines_pkg.set_ccid(
290272     p_code_combination_id          => l_ccid
290273   , p_value_type_code              => l_adr_value_type_code
290274   , p_transaction_coa_id           => l_adr_transaction_coa_id
290275   , p_accounting_coa_id            => l_adr_accounting_coa_id
290276   , p_adr_code                     => 'CST_DEFAULT'
290277   , p_adr_type_code                => 'S'
290278   , p_component_type               => l_component_type
290279   , p_component_code               => l_component_code
290280   , p_component_type_code          => l_component_type_code
290281   , p_component_appl_id            => l_component_appl_id
290282   , p_amb_context_code             => l_amb_context_code
290283   , p_side                         => 'NA'
290284   );
290285 
290286 
290287    --
290288    --
290289    END IF;
290290 
290291        --
290292        -- Update the line information that should be overwritten
290293        --
290294        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
290295                                          p_header_num   => 1);
290296        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
290297 
290298        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
290299 
290300        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
290301           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
290302        END IF;
290303 
290304       --
290305       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
290306       --
290307       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
290308           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
290309       ELSE
290310           ---------------------------------------------------------------------------------------------------
290311           -- 4262811a Switch Sign
290312           ---------------------------------------------------------------------------------------------------
290313           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
290314           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
290315                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
290316           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
290317                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
290318           -- 5132302
290319           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
290320                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
290321 
290322       END IF;
290323 
290324       -- 4955764
290325       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
290326       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
290327 
290328 
290329       XLA_AE_LINES_PKG.ValidateCurrentLine;
290330       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
290331 
290332       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
290333                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
290334                ,p_balance_type_code => l_balance_type_code);
290335 
290336    END IF;
290337 
290338    -----------------------------------------------------------------------------------------
290339    -- 4262811 Multiperiod Accounting
290340    -----------------------------------------------------------------------------------------
290341      -- No MPA option is assigned.
290342 
290343 
290344 END IF;
290345 END IF;
290346 --
290347 
290348 --
290349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
290350    trace
290351       (p_msg      => 'END of AcctLineType_518'
290352       ,p_level    => C_LEVEL_PROCEDURE
290353       ,p_module   => l_log_module);
290354 END IF;
290355 --
290356 EXCEPTION
290357   WHEN xla_exceptions_pkg.application_exception THEN
290358       RAISE;
290359   WHEN OTHERS THEN
290360        xla_exceptions_pkg.raise_message
290361            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_518');
290362 END AcctLineType_518;
290363 --
290364 
290365 ---------------------------------------
290366 --
290367 -- PRIVATE FUNCTION
290368 --         AcctLineType_519
290369 --
290370 ---------------------------------------
290371 PROCEDURE AcctLineType_519 (
290372   p_application_id        IN NUMBER
290373  ,p_event_id              IN NUMBER
290374  ,p_calculate_acctd_flag  IN VARCHAR2
290375  ,p_calculate_g_l_flag    IN VARCHAR2
290376  ,p_actual_flag           IN OUT VARCHAR2
290377  ,p_balance_type_code     OUT VARCHAR2
290378  ,p_gain_or_loss_ref      OUT VARCHAR2
290379  
290380 --TRANSACTION_ID
290381  , p_source_1            IN NUMBER
290382 --Item Concatenated Segments
290383  , p_source_2            IN VARCHAR2
290384 --Transaction Quantity
290385  , p_source_3            IN NUMBER
290386 --Transaction Unit of Measure Code
290387  , p_source_4            IN VARCHAR2
290388 --Inventory Transaction Type Description
290389  , p_source_5            IN VARCHAR2
290390 --Cost Management Default Account
290391  , p_source_11            IN NUMBER
290392 --Applied to Application ID
290393  , p_source_79            IN NUMBER
290394 --Applied to Distribution Link Type
290395  , p_source_80            IN VARCHAR2
290396 --Applied to Entity Code
290397  , p_source_81            IN VARCHAR2
290398 --Applied To Purchase Document Identifier
290399  , p_source_83            IN NUMBER
290400 --DISTRIBUTION_IDENTIFIER
290401  , p_source_84            IN NUMBER
290402 --Distribution Type
290403  , p_source_85            IN VARCHAR2
290404  , p_source_85_meaning    IN VARCHAR2
290405 --PO Budget Account
290406  , p_source_86            IN NUMBER
290407 --Encumbrance Reversal Amount Entered
290408  , p_source_87            IN NUMBER
290409 --Entered Currency Code
290410  , p_source_88            IN VARCHAR2
290411 --Transaction Encumbrance Reversal Amount
290412  , p_source_89            IN NUMBER
290413 --Entered Amount
290414  , p_source_91            IN NUMBER
290415 --Currency Conversion Date
290416  , p_source_92            IN DATE
290417 --Currency Conversion Rate
290418  , p_source_93            IN NUMBER
290419 --Currency Conversion Type
290420  , p_source_94            IN VARCHAR2
290421 --Accounted Amount
290422  , p_source_95            IN NUMBER
290423 --Purchasing Encumbrance Type Identifier
290424  , p_source_96            IN NUMBER
290425 --Accounting Line Type
290426  , p_source_97            IN NUMBER
290427 --Costing Encumbrance Upgrade Option
290428  , p_source_100            IN VARCHAR2
290429 --TXN_PO_DISTRIBUTION_ID
290430  , p_source_101            IN NUMBER
290431 )
290432 IS
290433 
290434 l_component_type              VARCHAR2(80);
290435 l_component_code              VARCHAR2(30);
290436 l_component_type_code         VARCHAR2(1);
290437 l_component_appl_id           INTEGER;
290438 l_amb_context_code            VARCHAR2(30);
290439 l_entity_code                 VARCHAR2(30);
290440 l_event_class_code            VARCHAR2(30);
290441 l_ae_header_id                NUMBER;
290442 l_event_type_code             VARCHAR2(30);
290443 l_line_definition_code        VARCHAR2(30);
290444 l_line_definition_owner_code  VARCHAR2(1);
290445 --
290446 -- adr variables
290447 l_segment                     VARCHAR2(30);
290448 l_ccid                        NUMBER;
290449 l_adr_transaction_coa_id      NUMBER;
290450 l_adr_accounting_coa_id       NUMBER;
290451 l_adr_flexfield_segment_code  VARCHAR2(30);
290452 l_adr_flex_value_set_id       NUMBER;
290453 l_adr_value_type_code         VARCHAR2(30);
290454 l_adr_value_combination_id    NUMBER;
290455 l_adr_value_segment_code      VARCHAR2(30);
290456 
290457 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
290458 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
290459 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
290460 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
290461 
290462 -- 4262811 Variables ------------------------------------------------------------------------------------------
290463 l_entered_amt_idx             NUMBER;
290464 l_accted_amt_idx              NUMBER;
290465 l_acc_rev_flag                VARCHAR2(1);
290466 l_accrual_line_num            NUMBER;
290467 l_tmp_amt                     NUMBER;
290468 l_acc_rev_natural_side_code   VARCHAR2(1);
290469 
290470 l_num_entries                 NUMBER;
290471 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
290472 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
290473 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
290474 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
290475 l_recog_line_1                NUMBER;
290476 l_recog_line_2                NUMBER;
290477 
290478 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
290479 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
290480 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
290481 
290482 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
290483 
290484 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
290485 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
290486 
290487 ---------------------------------------------------------------------------------------------------------------
290488 
290489 
290490 --
290491 -- bulk performance
290492 --
290493 l_balance_type_code           VARCHAR2(1);
290494 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
290495 l_log_module                  VARCHAR2(240);
290496 
290497 --
290498 -- Upgrade strategy
290499 --
290500 l_actual_upg_option           VARCHAR2(1);
290501 l_enc_upg_option           VARCHAR2(1);
290502 
290503 --
290504 BEGIN
290505 --
290506 IF g_log_enabled THEN
290507       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_519';
290508 END IF;
290509 --
290510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
290511 
290512       trace
290513          (p_msg      => 'BEGIN of AcctLineType_519'
290514          ,p_level    => C_LEVEL_PROCEDURE
290515          ,p_module   => l_log_module);
290516 
290517 END IF;
290518 --
290519 l_component_type             := 'AMB_JLT';
290520 l_component_code             := 'SHIKYU_VARIANCE';
290521 l_component_type_code        := 'S';
290522 l_component_appl_id          :=  707;
290523 l_amb_context_code           := 'DEFAULT';
290524 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
290525 l_event_class_code           := 'PURCHASE_ORDER';
290526 l_event_type_code            := 'LOG_PO_DEL_INV';
290527 l_line_definition_owner_code := 'S';
290528 l_line_definition_code       := 'PI_LOG_DEL_INV';
290529 --
290530 l_balance_type_code          := 'A';
290531 l_segment                     := NULL;
290532 l_ccid                        := NULL;
290533 l_adr_transaction_coa_id      := NULL;
290534 l_adr_accounting_coa_id       := NULL;
290535 l_adr_flexfield_segment_code  := NULL;
290536 l_adr_flex_value_set_id       := NULL;
290537 l_adr_value_type_code         := NULL;
290538 l_adr_value_combination_id    := NULL;
290539 l_adr_value_segment_code      := NULL;
290540 
290541 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
290542 l_bflow_class_code           := '';    -- 4219869 Business Flow
290543 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
290544 l_budgetary_control_flag     := 'N';
290545 
290546 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
290547 l_bflow_applied_to_amt       := NULL; -- 5132302
290548 l_entered_amt_idx            := NULL;          -- 4262811
290549 l_accted_amt_idx             := NULL;          -- 4262811
290550 l_acc_rev_flag               := NULL;          -- 4262811
290551 l_accrual_line_num           := NULL;          -- 4262811
290552 l_tmp_amt                    := NULL;          -- 4262811
290553 --
290554  
290555 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
290556     l_balance_type_code <> 'B' THEN
290557 IF NVL(p_source_97,9E125) =  33
290558  THEN 
290559 
290560    --
290561    XLA_AE_LINES_PKG.SetNewLine;
290562 
290563    p_balance_type_code          := l_balance_type_code;
290564    -- set the flag so later we will know whether the gain loss line needs to be created
290565    
290566    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
290567      p_actual_flag :='A';
290568    END IF;
290569 
290570    --
290571    -- bulk performance
290572    --
290573    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
290574                                       p_header_num   => 0); -- 4262811
290575    --
290576    -- set accounting line options
290577    --
290578    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
290579            p_natural_side_code          => 'D'
290580          , p_gain_or_loss_flag          => 'N'
290581          , p_gl_transfer_mode_code      => 'S'
290582          , p_acct_entry_type_code       => 'A'
290583          , p_switch_side_flag           => 'Y'
290584          , p_merge_duplicate_code       => 'N'
290585          );
290586    --
290587    l_acc_rev_natural_side_code := 'C';  -- 4262811
290588    -- 
290589    --
290590    -- set accounting line type info
290591    --
290592    xla_ae_lines_pkg.SetAcctLineType
290593       (p_component_type             => l_component_type
290594       ,p_event_type_code            => l_event_type_code
290595       ,p_line_definition_owner_code => l_line_definition_owner_code
290596       ,p_line_definition_code       => l_line_definition_code
290597       ,p_accounting_line_code       => l_component_code
290598       ,p_accounting_line_type_code  => l_component_type_code
290599       ,p_accounting_line_appl_id    => l_component_appl_id
290600       ,p_amb_context_code           => l_amb_context_code
290601       ,p_entity_code                => l_entity_code
290602       ,p_event_class_code           => l_event_class_code);
290603    --
290604    -- set accounting class
290605    --
290606    xla_ae_lines_pkg.SetAcctClass(
290607            p_accounting_class_code  => 'SHIKYU_VARIANCE'
290608          , p_ae_header_id           => l_ae_header_id
290609          );
290610 
290611    --
290612    -- set rounding class
290613    --
290614    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
290615                       'SHIKYU_VARIANCE';
290616 
290617    --
290618    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
290619    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
290620    --
290621    -- bulk performance
290622    --
290623    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
290624 
290625    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
290626       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
290627 
290628    -- 4955764
290629    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
290630       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
290631 
290632    -- 4458381 Public Sector Enh
290633    
290634    --
290635    -- set accounting attributes for the line type
290636    --
290637    l_entered_amt_idx := 17;
290638    l_accted_amt_idx  := 22;
290639    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
290640    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
290641    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
290642    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
290643    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
290644    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
290645    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
290646    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
290647    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
290648    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
290649    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
290650    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
290651    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
290652    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
290653    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
290654    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
290655    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
290656    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
290657    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
290658    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
290659    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
290660    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
290661    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
290662    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
290663    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
290664    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
290665    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
290666    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
290667    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
290668    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
290669    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
290670    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
290671    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
290672    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
290673    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
290674    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
290675    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
290676    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
290677    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
290678    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
290679    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
290680    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
290681    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
290682    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
290683    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
290684    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
290685    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
290686    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
290687    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
290688 
290689    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
290690    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
290691 
290692    ---------------------------------------------------------------------------------------------------------------
290693    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
290694    ---------------------------------------------------------------------------------------------------------------
290695    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
290696 
290697    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
290698    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
290699 
290700    IF xla_accounting_cache_pkg.GetValueChar
290701          (p_source_code         => 'LEDGER_CATEGORY_CODE'
290702          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
290703    AND l_bflow_method_code = 'PRIOR_ENTRY'
290704 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
290705    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
290706          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
290707        )
290708    THEN
290709          xla_ae_lines_pkg.BflowUpgEntry
290710            (p_business_method_code    => l_bflow_method_code
290711            ,p_business_class_code     => l_bflow_class_code
290712            ,p_balance_type            => l_balance_type_code);
290713    ELSE
290714       NULL;
290715 -- No business flow processing for business flow method of NONE.
290716    END IF;
290717 
290718    --
290719    -- call analytical criteria
290720    --
290721    
290722    --
290723    -- call description
290724    --
290725    
290726 xla_ae_lines_pkg.SetLineDescription(
290727    p_ae_header_id => l_ae_header_id
290728   ,p_description  => Description_1 (
290729      p_application_id         => p_application_id
290730    , p_ae_header_id           => l_ae_header_id 
290731 , p_source_1 => p_source_1
290732 , p_source_2 => p_source_2
290733 , p_source_3 => p_source_3
290734 , p_source_4 => p_source_4
290735 , p_source_5 => p_source_5
290736    )
290737 );
290738 
290739 
290740    --
290741    -- call ADRs
290742    -- Bug 4922099
290743    --
290744    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
290745         (NVL(l_actual_upg_option, 'N') = 'O') OR
290746         (NVL(l_enc_upg_option, 'N') = 'O')
290747       )
290748    THEN
290749    NULL;
290750    --
290751    --
290752    
290753   l_ccid := AcctDerRule_6(
290754            p_application_id           => p_application_id
290755          , p_ae_header_id             => l_ae_header_id 
290756 , p_source_11 => p_source_11
290757          , x_transaction_coa_id       => l_adr_transaction_coa_id
290758          , x_accounting_coa_id        => l_adr_accounting_coa_id
290759          , x_value_type_code          => l_adr_value_type_code
290760          , p_side                     => 'NA'
290761    );
290762 
290763    xla_ae_lines_pkg.set_ccid(
290764     p_code_combination_id          => l_ccid
290765   , p_value_type_code              => l_adr_value_type_code
290766   , p_transaction_coa_id           => l_adr_transaction_coa_id
290767   , p_accounting_coa_id            => l_adr_accounting_coa_id
290768   , p_adr_code                     => 'CST_DEFAULT'
290769   , p_adr_type_code                => 'S'
290770   , p_component_type               => l_component_type
290771   , p_component_code               => l_component_code
290772   , p_component_type_code          => l_component_type_code
290773   , p_component_appl_id            => l_component_appl_id
290774   , p_amb_context_code             => l_amb_context_code
290775   , p_side                         => 'NA'
290776   );
290777 
290778 
290779    --
290780    --
290781    END IF;
290782    --
290783    -- Bug 4922099
290784    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
290785           (NVL(l_enc_upg_option, 'N') = 'O')
290786         ) AND
290787         (l_bflow_method_code = 'PRIOR_ENTRY')
290788       )
290789    THEN
290790       IF
290791       --
290792       1 = 2
290793       --
290794       THEN
290795       xla_accounting_err_pkg.build_message
290796                                     (p_appli_s_name            => 'XLA'
290797                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
290798                                     ,p_token_1                 => 'LINE_NUMBER'
290799                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
290800                                     ,p_token_2                 => 'LINE_TYPE_NAME'
290801                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
290802                                                                              l_component_type
290803                                                                             ,l_component_code
290804                                                                             ,l_component_type_code
290805                                                                             ,l_component_appl_id
290806                                                                             ,l_amb_context_code
290807                                                                             ,l_entity_code
290808                                                                             ,l_event_class_code
290809                                                                            )
290810                                     ,p_token_3                 => 'OWNER'
290811                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
290812                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
290813                                                                           ,p_lookup_code    => l_component_type_code
290814                                                                          )
290815                                     ,p_token_4                 => 'PRODUCT_NAME'
290816                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
290817                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
290818                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
290819                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
290820                                     ,p_ae_header_id            =>  NULL
290821                                        );
290822 
290823         IF (C_LEVEL_ERROR>= g_log_level) THEN
290824                  trace
290825                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
290826                       ,p_level    => C_LEVEL_ERROR
290827                       ,p_module   => l_log_module);
290828         END IF;
290829       END IF;
290830    END IF;
290831    --
290832    --
290833    ------------------------------------------------------------------------------------------------
290834    -- 4219869 Business Flow
290835    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
290836    -- Prior Entry.  Currently, the following code is always generated.
290837    ------------------------------------------------------------------------------------------------
290838    XLA_AE_LINES_PKG.ValidateCurrentLine;
290839 
290840    ------------------------------------------------------------------------------------
290841    -- 4219869 Business Flow
290842    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
290843    ------------------------------------------------------------------------------------
290844    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
290845 
290846    ----------------------------------------------------------------------------------
290847    -- 4219869 Business Flow
290848    -- Update journal entry status -- Need to generate this within IF <condition>
290849    ----------------------------------------------------------------------------------
290850    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
290851          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
290852          ,p_balance_type_code => l_balance_type_code
290853          );
290854 
290855    -------------------------------------------------------------------------------------------
290856    -- 4262811 - Generate the Accrual Reversal lines
290857    -------------------------------------------------------------------------------------------
290858    BEGIN
290859       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
290860                               (g_array_event(p_event_id).array_value_num('header_index'));
290861       IF l_acc_rev_flag IS NULL THEN
290862          l_acc_rev_flag := 'N';
290863       END IF;
290864    EXCEPTION
290865       WHEN OTHERS THEN
290866          l_acc_rev_flag := 'N';
290867    END;
290868    --
290869    IF (l_acc_rev_flag = 'Y') THEN
290870 
290871        -- 4645092  ------------------------------------------------------------------------------
290872        -- To allow MPA report to determine if it should generate report process
290873        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
290874        ------------------------------------------------------------------------------------------
290875 
290876        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
290877        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
290878    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
290879    -- call ADRs
290880    -- Bug 4922099
290881    --
290882    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
290883         (NVL(l_actual_upg_option, 'N') = 'O') OR
290884         (NVL(l_enc_upg_option, 'N') = 'O')
290885       )
290886    THEN
290887    NULL;
290888    --
290889    --
290890    
290891   l_ccid := AcctDerRule_6(
290892            p_application_id           => p_application_id
290893          , p_ae_header_id             => l_ae_header_id 
290894 , p_source_11 => p_source_11
290895          , x_transaction_coa_id       => l_adr_transaction_coa_id
290896          , x_accounting_coa_id        => l_adr_accounting_coa_id
290897          , x_value_type_code          => l_adr_value_type_code
290898          , p_side                     => 'NA'
290899    );
290900 
290901    xla_ae_lines_pkg.set_ccid(
290902     p_code_combination_id          => l_ccid
290903   , p_value_type_code              => l_adr_value_type_code
290904   , p_transaction_coa_id           => l_adr_transaction_coa_id
290905   , p_accounting_coa_id            => l_adr_accounting_coa_id
290906   , p_adr_code                     => 'CST_DEFAULT'
290907   , p_adr_type_code                => 'S'
290908   , p_component_type               => l_component_type
290909   , p_component_code               => l_component_code
290910   , p_component_type_code          => l_component_type_code
290911   , p_component_appl_id            => l_component_appl_id
290912   , p_amb_context_code             => l_amb_context_code
290913   , p_side                         => 'NA'
290914   );
290915 
290916 
290917    --
290918    --
290919    END IF;
290920 
290921        --
290922        -- Update the line information that should be overwritten
290923        --
290924        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
290925                                          p_header_num   => 1);
290926        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
290927 
290928        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
290929 
290930        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
290931           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
290932        END IF;
290933 
290934       --
290935       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
290936       --
290937       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
290938           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
290939       ELSE
290940           ---------------------------------------------------------------------------------------------------
290941           -- 4262811a Switch Sign
290942           ---------------------------------------------------------------------------------------------------
290943           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
290944           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
290945                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
290946           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
290947                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
290948           -- 5132302
290949           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
290950                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
290951 
290952       END IF;
290953 
290954       -- 4955764
290955       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
290956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
290957 
290958 
290959       XLA_AE_LINES_PKG.ValidateCurrentLine;
290960       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
290961 
290962       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
290963                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
290964                ,p_balance_type_code => l_balance_type_code);
290965 
290966    END IF;
290967 
290968    -----------------------------------------------------------------------------------------
290969    -- 4262811 Multiperiod Accounting
290970    -----------------------------------------------------------------------------------------
290971      -- No MPA option is assigned.
290972 
290973 
290974 END IF;
290975 END IF;
290976 --
290977 
290978 --
290979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
290980    trace
290981       (p_msg      => 'END of AcctLineType_519'
290982       ,p_level    => C_LEVEL_PROCEDURE
290983       ,p_module   => l_log_module);
290984 END IF;
290985 --
290986 EXCEPTION
290987   WHEN xla_exceptions_pkg.application_exception THEN
290988       RAISE;
290989   WHEN OTHERS THEN
290990        xla_exceptions_pkg.raise_message
290991            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_519');
290992 END AcctLineType_519;
290993 --
290994 
290995 ---------------------------------------
290996 --
290997 -- PRIVATE FUNCTION
290998 --         AcctLineType_520
290999 --
291000 ---------------------------------------
291001 PROCEDURE AcctLineType_520 (
291002   p_application_id        IN NUMBER
291003  ,p_event_id              IN NUMBER
291004  ,p_calculate_acctd_flag  IN VARCHAR2
291005  ,p_calculate_g_l_flag    IN VARCHAR2
291006  ,p_actual_flag           IN OUT VARCHAR2
291007  ,p_balance_type_code     OUT VARCHAR2
291008  ,p_gain_or_loss_ref      OUT VARCHAR2
291009  
291010 --TRANSACTION_ID
291011  , p_source_1            IN NUMBER
291012 --Item Concatenated Segments
291013  , p_source_2            IN VARCHAR2
291014 --Transaction Quantity
291015  , p_source_3            IN NUMBER
291016 --Transaction Unit of Measure Code
291017  , p_source_4            IN VARCHAR2
291018 --Inventory Transaction Type Description
291019  , p_source_5            IN VARCHAR2
291020 --Cost Management Default Account
291021  , p_source_11            IN NUMBER
291022 --Applied to Application ID
291023  , p_source_79            IN NUMBER
291024 --Applied to Distribution Link Type
291025  , p_source_80            IN VARCHAR2
291026 --Applied to Entity Code
291027  , p_source_81            IN VARCHAR2
291028 --Applied To Purchase Document Identifier
291029  , p_source_83            IN NUMBER
291030 --DISTRIBUTION_IDENTIFIER
291031  , p_source_84            IN NUMBER
291032 --Distribution Type
291033  , p_source_85            IN VARCHAR2
291034  , p_source_85_meaning    IN VARCHAR2
291035 --PO Budget Account
291036  , p_source_86            IN NUMBER
291037 --Encumbrance Reversal Amount Entered
291038  , p_source_87            IN NUMBER
291039 --Entered Currency Code
291040  , p_source_88            IN VARCHAR2
291041 --Transaction Encumbrance Reversal Amount
291042  , p_source_89            IN NUMBER
291043 --Entered Amount
291044  , p_source_91            IN NUMBER
291045 --Currency Conversion Date
291046  , p_source_92            IN DATE
291047 --Currency Conversion Rate
291048  , p_source_93            IN NUMBER
291049 --Currency Conversion Type
291050  , p_source_94            IN VARCHAR2
291051 --Accounted Amount
291052  , p_source_95            IN NUMBER
291053 --Purchasing Encumbrance Type Identifier
291054  , p_source_96            IN NUMBER
291055 --Accounting Line Type
291056  , p_source_97            IN NUMBER
291057 --Costing Encumbrance Upgrade Option
291058  , p_source_100            IN VARCHAR2
291059 --TXN_PO_DISTRIBUTION_ID
291060  , p_source_101            IN NUMBER
291061 )
291062 IS
291063 
291064 l_component_type              VARCHAR2(80);
291065 l_component_code              VARCHAR2(30);
291066 l_component_type_code         VARCHAR2(1);
291067 l_component_appl_id           INTEGER;
291068 l_amb_context_code            VARCHAR2(30);
291069 l_entity_code                 VARCHAR2(30);
291070 l_event_class_code            VARCHAR2(30);
291071 l_ae_header_id                NUMBER;
291072 l_event_type_code             VARCHAR2(30);
291073 l_line_definition_code        VARCHAR2(30);
291074 l_line_definition_owner_code  VARCHAR2(1);
291075 --
291076 -- adr variables
291077 l_segment                     VARCHAR2(30);
291078 l_ccid                        NUMBER;
291079 l_adr_transaction_coa_id      NUMBER;
291080 l_adr_accounting_coa_id       NUMBER;
291081 l_adr_flexfield_segment_code  VARCHAR2(30);
291082 l_adr_flex_value_set_id       NUMBER;
291083 l_adr_value_type_code         VARCHAR2(30);
291084 l_adr_value_combination_id    NUMBER;
291085 l_adr_value_segment_code      VARCHAR2(30);
291086 
291087 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
291088 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
291089 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
291090 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
291091 
291092 -- 4262811 Variables ------------------------------------------------------------------------------------------
291093 l_entered_amt_idx             NUMBER;
291094 l_accted_amt_idx              NUMBER;
291095 l_acc_rev_flag                VARCHAR2(1);
291096 l_accrual_line_num            NUMBER;
291097 l_tmp_amt                     NUMBER;
291098 l_acc_rev_natural_side_code   VARCHAR2(1);
291099 
291100 l_num_entries                 NUMBER;
291101 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
291102 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
291103 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
291104 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
291105 l_recog_line_1                NUMBER;
291106 l_recog_line_2                NUMBER;
291107 
291108 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
291109 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
291110 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
291111 
291112 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
291113 
291114 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
291115 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
291116 
291117 ---------------------------------------------------------------------------------------------------------------
291118 
291119 
291120 --
291121 -- bulk performance
291122 --
291123 l_balance_type_code           VARCHAR2(1);
291124 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
291125 l_log_module                  VARCHAR2(240);
291126 
291127 --
291128 -- Upgrade strategy
291129 --
291130 l_actual_upg_option           VARCHAR2(1);
291131 l_enc_upg_option           VARCHAR2(1);
291132 
291133 --
291134 BEGIN
291135 --
291136 IF g_log_enabled THEN
291137       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_520';
291138 END IF;
291139 --
291140 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
291141 
291142       trace
291143          (p_msg      => 'BEGIN of AcctLineType_520'
291144          ,p_level    => C_LEVEL_PROCEDURE
291145          ,p_module   => l_log_module);
291146 
291147 END IF;
291148 --
291149 l_component_type             := 'AMB_JLT';
291150 l_component_code             := 'SHIKYU_VARIANCE';
291151 l_component_type_code        := 'S';
291152 l_component_appl_id          :=  707;
291153 l_amb_context_code           := 'DEFAULT';
291154 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
291155 l_event_class_code           := 'PURCHASE_ORDER';
291156 l_event_type_code            := 'PO_DEL_ADJ';
291157 l_line_definition_owner_code := 'S';
291158 l_line_definition_code       := 'PI_PO_DEL_ADJ';
291159 --
291160 l_balance_type_code          := 'A';
291161 l_segment                     := NULL;
291162 l_ccid                        := NULL;
291163 l_adr_transaction_coa_id      := NULL;
291164 l_adr_accounting_coa_id       := NULL;
291165 l_adr_flexfield_segment_code  := NULL;
291166 l_adr_flex_value_set_id       := NULL;
291167 l_adr_value_type_code         := NULL;
291168 l_adr_value_combination_id    := NULL;
291169 l_adr_value_segment_code      := NULL;
291170 
291171 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
291172 l_bflow_class_code           := '';    -- 4219869 Business Flow
291173 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
291174 l_budgetary_control_flag     := 'N';
291175 
291176 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
291177 l_bflow_applied_to_amt       := NULL; -- 5132302
291178 l_entered_amt_idx            := NULL;          -- 4262811
291179 l_accted_amt_idx             := NULL;          -- 4262811
291180 l_acc_rev_flag               := NULL;          -- 4262811
291181 l_accrual_line_num           := NULL;          -- 4262811
291182 l_tmp_amt                    := NULL;          -- 4262811
291183 --
291184  
291185 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
291186     l_balance_type_code <> 'B' THEN
291187 IF NVL(p_source_97,9E125) =  33
291188  THEN 
291189 
291190    --
291191    XLA_AE_LINES_PKG.SetNewLine;
291192 
291193    p_balance_type_code          := l_balance_type_code;
291194    -- set the flag so later we will know whether the gain loss line needs to be created
291195    
291196    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
291197      p_actual_flag :='A';
291198    END IF;
291199 
291200    --
291201    -- bulk performance
291202    --
291203    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
291204                                       p_header_num   => 0); -- 4262811
291205    --
291206    -- set accounting line options
291207    --
291208    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
291209            p_natural_side_code          => 'D'
291210          , p_gain_or_loss_flag          => 'N'
291211          , p_gl_transfer_mode_code      => 'S'
291212          , p_acct_entry_type_code       => 'A'
291213          , p_switch_side_flag           => 'Y'
291214          , p_merge_duplicate_code       => 'N'
291215          );
291216    --
291217    l_acc_rev_natural_side_code := 'C';  -- 4262811
291218    -- 
291219    --
291220    -- set accounting line type info
291221    --
291222    xla_ae_lines_pkg.SetAcctLineType
291223       (p_component_type             => l_component_type
291224       ,p_event_type_code            => l_event_type_code
291225       ,p_line_definition_owner_code => l_line_definition_owner_code
291226       ,p_line_definition_code       => l_line_definition_code
291227       ,p_accounting_line_code       => l_component_code
291228       ,p_accounting_line_type_code  => l_component_type_code
291229       ,p_accounting_line_appl_id    => l_component_appl_id
291230       ,p_amb_context_code           => l_amb_context_code
291231       ,p_entity_code                => l_entity_code
291232       ,p_event_class_code           => l_event_class_code);
291233    --
291234    -- set accounting class
291235    --
291236    xla_ae_lines_pkg.SetAcctClass(
291237            p_accounting_class_code  => 'SHIKYU_VARIANCE'
291238          , p_ae_header_id           => l_ae_header_id
291239          );
291240 
291241    --
291242    -- set rounding class
291243    --
291244    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
291245                       'SHIKYU_VARIANCE';
291246 
291247    --
291248    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
291249    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
291250    --
291251    -- bulk performance
291252    --
291253    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
291254 
291255    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
291256       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
291257 
291258    -- 4955764
291259    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
291260       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
291261 
291262    -- 4458381 Public Sector Enh
291263    
291264    --
291265    -- set accounting attributes for the line type
291266    --
291267    l_entered_amt_idx := 17;
291268    l_accted_amt_idx  := 22;
291269    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
291270    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
291271    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
291272    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
291273    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
291274    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
291275    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
291276    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
291277    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
291278    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
291279    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
291280    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
291281    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
291282    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
291283    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
291284    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
291285    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
291286    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
291287    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
291288    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
291289    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
291290    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
291291    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
291292    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
291293    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
291294    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
291295    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
291296    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
291297    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
291298    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
291299    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
291300    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
291301    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
291302    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
291303    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
291304    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
291305    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
291306    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
291307    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
291308    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
291309    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
291310    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
291311    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
291312    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
291313    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
291314    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
291315    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
291316    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
291317    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
291318 
291319    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
291320    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
291321 
291322    ---------------------------------------------------------------------------------------------------------------
291323    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
291324    ---------------------------------------------------------------------------------------------------------------
291325    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
291326 
291327    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
291328    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
291329 
291330    IF xla_accounting_cache_pkg.GetValueChar
291331          (p_source_code         => 'LEDGER_CATEGORY_CODE'
291332          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
291333    AND l_bflow_method_code = 'PRIOR_ENTRY'
291334 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
291335    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
291336          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
291337        )
291338    THEN
291339          xla_ae_lines_pkg.BflowUpgEntry
291340            (p_business_method_code    => l_bflow_method_code
291341            ,p_business_class_code     => l_bflow_class_code
291342            ,p_balance_type            => l_balance_type_code);
291343    ELSE
291344       NULL;
291345 -- No business flow processing for business flow method of NONE.
291346    END IF;
291347 
291348    --
291349    -- call analytical criteria
291350    --
291351    
291352    --
291353    -- call description
291354    --
291355    
291356 xla_ae_lines_pkg.SetLineDescription(
291357    p_ae_header_id => l_ae_header_id
291358   ,p_description  => Description_1 (
291359      p_application_id         => p_application_id
291360    , p_ae_header_id           => l_ae_header_id 
291361 , p_source_1 => p_source_1
291362 , p_source_2 => p_source_2
291363 , p_source_3 => p_source_3
291364 , p_source_4 => p_source_4
291365 , p_source_5 => p_source_5
291366    )
291367 );
291368 
291369 
291370    --
291371    -- call ADRs
291372    -- Bug 4922099
291373    --
291374    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
291375         (NVL(l_actual_upg_option, 'N') = 'O') OR
291376         (NVL(l_enc_upg_option, 'N') = 'O')
291377       )
291378    THEN
291379    NULL;
291380    --
291381    --
291382    
291383   l_ccid := AcctDerRule_6(
291384            p_application_id           => p_application_id
291385          , p_ae_header_id             => l_ae_header_id 
291386 , p_source_11 => p_source_11
291387          , x_transaction_coa_id       => l_adr_transaction_coa_id
291388          , x_accounting_coa_id        => l_adr_accounting_coa_id
291389          , x_value_type_code          => l_adr_value_type_code
291390          , p_side                     => 'NA'
291391    );
291392 
291393    xla_ae_lines_pkg.set_ccid(
291394     p_code_combination_id          => l_ccid
291395   , p_value_type_code              => l_adr_value_type_code
291396   , p_transaction_coa_id           => l_adr_transaction_coa_id
291397   , p_accounting_coa_id            => l_adr_accounting_coa_id
291398   , p_adr_code                     => 'CST_DEFAULT'
291399   , p_adr_type_code                => 'S'
291400   , p_component_type               => l_component_type
291401   , p_component_code               => l_component_code
291402   , p_component_type_code          => l_component_type_code
291403   , p_component_appl_id            => l_component_appl_id
291404   , p_amb_context_code             => l_amb_context_code
291405   , p_side                         => 'NA'
291406   );
291407 
291408 
291409    --
291410    --
291411    END IF;
291412    --
291413    -- Bug 4922099
291414    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
291415           (NVL(l_enc_upg_option, 'N') = 'O')
291416         ) AND
291417         (l_bflow_method_code = 'PRIOR_ENTRY')
291418       )
291419    THEN
291420       IF
291421       --
291422       1 = 2
291423       --
291424       THEN
291425       xla_accounting_err_pkg.build_message
291426                                     (p_appli_s_name            => 'XLA'
291427                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
291428                                     ,p_token_1                 => 'LINE_NUMBER'
291429                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
291430                                     ,p_token_2                 => 'LINE_TYPE_NAME'
291431                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
291432                                                                              l_component_type
291433                                                                             ,l_component_code
291434                                                                             ,l_component_type_code
291435                                                                             ,l_component_appl_id
291436                                                                             ,l_amb_context_code
291437                                                                             ,l_entity_code
291438                                                                             ,l_event_class_code
291439                                                                            )
291440                                     ,p_token_3                 => 'OWNER'
291441                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
291442                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
291443                                                                           ,p_lookup_code    => l_component_type_code
291444                                                                          )
291445                                     ,p_token_4                 => 'PRODUCT_NAME'
291446                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
291447                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
291448                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
291449                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
291450                                     ,p_ae_header_id            =>  NULL
291451                                        );
291452 
291453         IF (C_LEVEL_ERROR>= g_log_level) THEN
291454                  trace
291455                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
291456                       ,p_level    => C_LEVEL_ERROR
291457                       ,p_module   => l_log_module);
291458         END IF;
291459       END IF;
291460    END IF;
291461    --
291462    --
291463    ------------------------------------------------------------------------------------------------
291464    -- 4219869 Business Flow
291465    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
291466    -- Prior Entry.  Currently, the following code is always generated.
291467    ------------------------------------------------------------------------------------------------
291468    XLA_AE_LINES_PKG.ValidateCurrentLine;
291469 
291470    ------------------------------------------------------------------------------------
291471    -- 4219869 Business Flow
291472    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
291473    ------------------------------------------------------------------------------------
291474    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
291475 
291476    ----------------------------------------------------------------------------------
291477    -- 4219869 Business Flow
291478    -- Update journal entry status -- Need to generate this within IF <condition>
291479    ----------------------------------------------------------------------------------
291480    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
291481          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
291482          ,p_balance_type_code => l_balance_type_code
291483          );
291484 
291485    -------------------------------------------------------------------------------------------
291486    -- 4262811 - Generate the Accrual Reversal lines
291487    -------------------------------------------------------------------------------------------
291488    BEGIN
291489       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
291490                               (g_array_event(p_event_id).array_value_num('header_index'));
291491       IF l_acc_rev_flag IS NULL THEN
291492          l_acc_rev_flag := 'N';
291493       END IF;
291494    EXCEPTION
291495       WHEN OTHERS THEN
291496          l_acc_rev_flag := 'N';
291497    END;
291498    --
291499    IF (l_acc_rev_flag = 'Y') THEN
291500 
291501        -- 4645092  ------------------------------------------------------------------------------
291502        -- To allow MPA report to determine if it should generate report process
291503        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
291504        ------------------------------------------------------------------------------------------
291505 
291506        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
291507        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
291508    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
291509    -- call ADRs
291510    -- Bug 4922099
291511    --
291512    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
291513         (NVL(l_actual_upg_option, 'N') = 'O') OR
291514         (NVL(l_enc_upg_option, 'N') = 'O')
291515       )
291516    THEN
291517    NULL;
291518    --
291519    --
291520    
291521   l_ccid := AcctDerRule_6(
291522            p_application_id           => p_application_id
291523          , p_ae_header_id             => l_ae_header_id 
291524 , p_source_11 => p_source_11
291525          , x_transaction_coa_id       => l_adr_transaction_coa_id
291526          , x_accounting_coa_id        => l_adr_accounting_coa_id
291527          , x_value_type_code          => l_adr_value_type_code
291528          , p_side                     => 'NA'
291529    );
291530 
291531    xla_ae_lines_pkg.set_ccid(
291532     p_code_combination_id          => l_ccid
291533   , p_value_type_code              => l_adr_value_type_code
291534   , p_transaction_coa_id           => l_adr_transaction_coa_id
291535   , p_accounting_coa_id            => l_adr_accounting_coa_id
291536   , p_adr_code                     => 'CST_DEFAULT'
291537   , p_adr_type_code                => 'S'
291538   , p_component_type               => l_component_type
291539   , p_component_code               => l_component_code
291540   , p_component_type_code          => l_component_type_code
291541   , p_component_appl_id            => l_component_appl_id
291542   , p_amb_context_code             => l_amb_context_code
291543   , p_side                         => 'NA'
291544   );
291545 
291546 
291547    --
291548    --
291549    END IF;
291550 
291551        --
291552        -- Update the line information that should be overwritten
291553        --
291554        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
291555                                          p_header_num   => 1);
291556        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
291557 
291558        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
291559 
291560        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
291561           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
291562        END IF;
291563 
291564       --
291565       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
291566       --
291567       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
291568           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
291569       ELSE
291570           ---------------------------------------------------------------------------------------------------
291571           -- 4262811a Switch Sign
291572           ---------------------------------------------------------------------------------------------------
291573           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
291574           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
291575                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
291576           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
291577                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
291578           -- 5132302
291579           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
291580                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
291581 
291582       END IF;
291583 
291584       -- 4955764
291585       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
291586       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
291587 
291588 
291589       XLA_AE_LINES_PKG.ValidateCurrentLine;
291590       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
291591 
291592       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
291593                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
291594                ,p_balance_type_code => l_balance_type_code);
291595 
291596    END IF;
291597 
291598    -----------------------------------------------------------------------------------------
291599    -- 4262811 Multiperiod Accounting
291600    -----------------------------------------------------------------------------------------
291601      -- No MPA option is assigned.
291602 
291603 
291604 END IF;
291605 END IF;
291606 --
291607 
291608 --
291609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
291610    trace
291611       (p_msg      => 'END of AcctLineType_520'
291612       ,p_level    => C_LEVEL_PROCEDURE
291613       ,p_module   => l_log_module);
291614 END IF;
291615 --
291616 EXCEPTION
291617   WHEN xla_exceptions_pkg.application_exception THEN
291618       RAISE;
291619   WHEN OTHERS THEN
291620        xla_exceptions_pkg.raise_message
291621            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_520');
291622 END AcctLineType_520;
291623 --
291624 
291625 ---------------------------------------
291626 --
291627 -- PRIVATE FUNCTION
291628 --         AcctLineType_521
291629 --
291630 ---------------------------------------
291631 PROCEDURE AcctLineType_521 (
291632   p_application_id        IN NUMBER
291633  ,p_event_id              IN NUMBER
291634  ,p_calculate_acctd_flag  IN VARCHAR2
291635  ,p_calculate_g_l_flag    IN VARCHAR2
291636  ,p_actual_flag           IN OUT VARCHAR2
291637  ,p_balance_type_code     OUT VARCHAR2
291638  ,p_gain_or_loss_ref      OUT VARCHAR2
291639  
291640 --TRANSACTION_ID
291641  , p_source_1            IN NUMBER
291642 --Item Concatenated Segments
291643  , p_source_2            IN VARCHAR2
291644 --Transaction Quantity
291645  , p_source_3            IN NUMBER
291646 --Transaction Unit of Measure Code
291647  , p_source_4            IN VARCHAR2
291648 --Inventory Transaction Type Description
291649  , p_source_5            IN VARCHAR2
291650 --Cost Management Default Account
291651  , p_source_11            IN NUMBER
291652 --Applied to Application ID
291653  , p_source_79            IN NUMBER
291654 --Applied to Distribution Link Type
291655  , p_source_80            IN VARCHAR2
291656 --Applied to Entity Code
291657  , p_source_81            IN VARCHAR2
291658 --Applied To Purchase Document Identifier
291659  , p_source_83            IN NUMBER
291660 --DISTRIBUTION_IDENTIFIER
291661  , p_source_84            IN NUMBER
291662 --Distribution Type
291663  , p_source_85            IN VARCHAR2
291664  , p_source_85_meaning    IN VARCHAR2
291665 --PO Budget Account
291666  , p_source_86            IN NUMBER
291667 --Encumbrance Reversal Amount Entered
291668  , p_source_87            IN NUMBER
291669 --Entered Currency Code
291670  , p_source_88            IN VARCHAR2
291671 --Transaction Encumbrance Reversal Amount
291672  , p_source_89            IN NUMBER
291673 --Entered Amount
291674  , p_source_91            IN NUMBER
291675 --Currency Conversion Date
291676  , p_source_92            IN DATE
291677 --Currency Conversion Rate
291678  , p_source_93            IN NUMBER
291679 --Currency Conversion Type
291680  , p_source_94            IN VARCHAR2
291681 --Accounted Amount
291682  , p_source_95            IN NUMBER
291683 --Purchasing Encumbrance Type Identifier
291684  , p_source_96            IN NUMBER
291685 --Accounting Line Type
291686  , p_source_97            IN NUMBER
291687 --Costing Encumbrance Upgrade Option
291688  , p_source_100            IN VARCHAR2
291689 --TXN_PO_DISTRIBUTION_ID
291690  , p_source_101            IN NUMBER
291691 )
291692 IS
291693 
291694 l_component_type              VARCHAR2(80);
291695 l_component_code              VARCHAR2(30);
291696 l_component_type_code         VARCHAR2(1);
291697 l_component_appl_id           INTEGER;
291698 l_amb_context_code            VARCHAR2(30);
291699 l_entity_code                 VARCHAR2(30);
291700 l_event_class_code            VARCHAR2(30);
291701 l_ae_header_id                NUMBER;
291702 l_event_type_code             VARCHAR2(30);
291703 l_line_definition_code        VARCHAR2(30);
291704 l_line_definition_owner_code  VARCHAR2(1);
291705 --
291706 -- adr variables
291707 l_segment                     VARCHAR2(30);
291708 l_ccid                        NUMBER;
291709 l_adr_transaction_coa_id      NUMBER;
291710 l_adr_accounting_coa_id       NUMBER;
291711 l_adr_flexfield_segment_code  VARCHAR2(30);
291712 l_adr_flex_value_set_id       NUMBER;
291713 l_adr_value_type_code         VARCHAR2(30);
291714 l_adr_value_combination_id    NUMBER;
291715 l_adr_value_segment_code      VARCHAR2(30);
291716 
291717 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
291718 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
291719 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
291720 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
291721 
291722 -- 4262811 Variables ------------------------------------------------------------------------------------------
291723 l_entered_amt_idx             NUMBER;
291724 l_accted_amt_idx              NUMBER;
291725 l_acc_rev_flag                VARCHAR2(1);
291726 l_accrual_line_num            NUMBER;
291727 l_tmp_amt                     NUMBER;
291728 l_acc_rev_natural_side_code   VARCHAR2(1);
291729 
291730 l_num_entries                 NUMBER;
291731 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
291732 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
291733 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
291734 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
291735 l_recog_line_1                NUMBER;
291736 l_recog_line_2                NUMBER;
291737 
291738 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
291739 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
291740 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
291741 
291742 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
291743 
291744 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
291745 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
291746 
291747 ---------------------------------------------------------------------------------------------------------------
291748 
291749 
291750 --
291751 -- bulk performance
291752 --
291753 l_balance_type_code           VARCHAR2(1);
291754 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
291755 l_log_module                  VARCHAR2(240);
291756 
291757 --
291758 -- Upgrade strategy
291759 --
291760 l_actual_upg_option           VARCHAR2(1);
291761 l_enc_upg_option           VARCHAR2(1);
291762 
291763 --
291764 BEGIN
291765 --
291766 IF g_log_enabled THEN
291767       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_521';
291768 END IF;
291769 --
291770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
291771 
291772       trace
291773          (p_msg      => 'BEGIN of AcctLineType_521'
291774          ,p_level    => C_LEVEL_PROCEDURE
291775          ,p_module   => l_log_module);
291776 
291777 END IF;
291778 --
291779 l_component_type             := 'AMB_JLT';
291780 l_component_code             := 'SHIKYU_VARIANCE';
291781 l_component_type_code        := 'S';
291782 l_component_appl_id          :=  707;
291783 l_amb_context_code           := 'DEFAULT';
291784 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
291785 l_event_class_code           := 'PURCHASE_ORDER';
291786 l_event_type_code            := 'LOG_RET_RI_INV';
291787 l_line_definition_owner_code := 'S';
291788 l_line_definition_code       := 'PI_LOG_RET_RI_INV';
291789 --
291790 l_balance_type_code          := 'A';
291791 l_segment                     := NULL;
291792 l_ccid                        := NULL;
291793 l_adr_transaction_coa_id      := NULL;
291794 l_adr_accounting_coa_id       := NULL;
291795 l_adr_flexfield_segment_code  := NULL;
291796 l_adr_flex_value_set_id       := NULL;
291797 l_adr_value_type_code         := NULL;
291798 l_adr_value_combination_id    := NULL;
291799 l_adr_value_segment_code      := NULL;
291800 
291801 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
291802 l_bflow_class_code           := '';    -- 4219869 Business Flow
291803 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
291804 l_budgetary_control_flag     := 'N';
291805 
291806 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
291807 l_bflow_applied_to_amt       := NULL; -- 5132302
291808 l_entered_amt_idx            := NULL;          -- 4262811
291809 l_accted_amt_idx             := NULL;          -- 4262811
291810 l_acc_rev_flag               := NULL;          -- 4262811
291811 l_accrual_line_num           := NULL;          -- 4262811
291812 l_tmp_amt                    := NULL;          -- 4262811
291813 --
291814  
291815 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
291816     l_balance_type_code <> 'B' THEN
291817 IF NVL(p_source_97,9E125) =  33
291818  THEN 
291819 
291820    --
291821    XLA_AE_LINES_PKG.SetNewLine;
291822 
291823    p_balance_type_code          := l_balance_type_code;
291824    -- set the flag so later we will know whether the gain loss line needs to be created
291825    
291826    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
291827      p_actual_flag :='A';
291828    END IF;
291829 
291830    --
291831    -- bulk performance
291832    --
291833    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
291834                                       p_header_num   => 0); -- 4262811
291835    --
291836    -- set accounting line options
291837    --
291838    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
291839            p_natural_side_code          => 'D'
291840          , p_gain_or_loss_flag          => 'N'
291841          , p_gl_transfer_mode_code      => 'S'
291842          , p_acct_entry_type_code       => 'A'
291843          , p_switch_side_flag           => 'Y'
291844          , p_merge_duplicate_code       => 'N'
291845          );
291846    --
291847    l_acc_rev_natural_side_code := 'C';  -- 4262811
291848    -- 
291849    --
291850    -- set accounting line type info
291851    --
291852    xla_ae_lines_pkg.SetAcctLineType
291853       (p_component_type             => l_component_type
291854       ,p_event_type_code            => l_event_type_code
291855       ,p_line_definition_owner_code => l_line_definition_owner_code
291856       ,p_line_definition_code       => l_line_definition_code
291857       ,p_accounting_line_code       => l_component_code
291858       ,p_accounting_line_type_code  => l_component_type_code
291859       ,p_accounting_line_appl_id    => l_component_appl_id
291860       ,p_amb_context_code           => l_amb_context_code
291861       ,p_entity_code                => l_entity_code
291862       ,p_event_class_code           => l_event_class_code);
291863    --
291864    -- set accounting class
291865    --
291866    xla_ae_lines_pkg.SetAcctClass(
291867            p_accounting_class_code  => 'SHIKYU_VARIANCE'
291868          , p_ae_header_id           => l_ae_header_id
291869          );
291870 
291871    --
291872    -- set rounding class
291873    --
291874    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
291875                       'SHIKYU_VARIANCE';
291876 
291877    --
291878    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
291879    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
291880    --
291881    -- bulk performance
291882    --
291883    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
291884 
291885    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
291886       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
291887 
291888    -- 4955764
291889    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
291890       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
291891 
291892    -- 4458381 Public Sector Enh
291893    
291894    --
291895    -- set accounting attributes for the line type
291896    --
291897    l_entered_amt_idx := 17;
291898    l_accted_amt_idx  := 22;
291899    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
291900    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
291901    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
291902    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
291903    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
291904    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
291905    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
291906    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
291907    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
291908    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
291909    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
291910    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
291911    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
291912    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
291913    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
291914    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
291915    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
291916    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
291917    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
291918    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
291919    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
291920    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
291921    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
291922    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
291923    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
291924    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
291925    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
291926    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
291927    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
291928    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
291929    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
291930    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
291931    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
291932    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
291933    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
291934    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
291935    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
291936    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
291937    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
291938    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
291939    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
291940    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
291941    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
291942    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
291943    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
291944    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
291945    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
291946    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
291947    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
291948 
291949    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
291950    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
291951 
291952    ---------------------------------------------------------------------------------------------------------------
291953    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
291954    ---------------------------------------------------------------------------------------------------------------
291955    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
291956 
291957    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
291958    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
291959 
291960    IF xla_accounting_cache_pkg.GetValueChar
291961          (p_source_code         => 'LEDGER_CATEGORY_CODE'
291962          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
291963    AND l_bflow_method_code = 'PRIOR_ENTRY'
291964 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
291965    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
291966          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
291967        )
291968    THEN
291969          xla_ae_lines_pkg.BflowUpgEntry
291970            (p_business_method_code    => l_bflow_method_code
291971            ,p_business_class_code     => l_bflow_class_code
291972            ,p_balance_type            => l_balance_type_code);
291973    ELSE
291974       NULL;
291975 -- No business flow processing for business flow method of NONE.
291976    END IF;
291977 
291978    --
291979    -- call analytical criteria
291980    --
291981    
291982    --
291983    -- call description
291984    --
291985    
291986 xla_ae_lines_pkg.SetLineDescription(
291987    p_ae_header_id => l_ae_header_id
291988   ,p_description  => Description_1 (
291989      p_application_id         => p_application_id
291990    , p_ae_header_id           => l_ae_header_id 
291991 , p_source_1 => p_source_1
291992 , p_source_2 => p_source_2
291993 , p_source_3 => p_source_3
291994 , p_source_4 => p_source_4
291995 , p_source_5 => p_source_5
291996    )
291997 );
291998 
291999 
292000    --
292001    -- call ADRs
292002    -- Bug 4922099
292003    --
292004    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
292005         (NVL(l_actual_upg_option, 'N') = 'O') OR
292006         (NVL(l_enc_upg_option, 'N') = 'O')
292007       )
292008    THEN
292009    NULL;
292010    --
292011    --
292012    
292013   l_ccid := AcctDerRule_6(
292014            p_application_id           => p_application_id
292015          , p_ae_header_id             => l_ae_header_id 
292016 , p_source_11 => p_source_11
292017          , x_transaction_coa_id       => l_adr_transaction_coa_id
292018          , x_accounting_coa_id        => l_adr_accounting_coa_id
292019          , x_value_type_code          => l_adr_value_type_code
292020          , p_side                     => 'NA'
292021    );
292022 
292023    xla_ae_lines_pkg.set_ccid(
292024     p_code_combination_id          => l_ccid
292025   , p_value_type_code              => l_adr_value_type_code
292026   , p_transaction_coa_id           => l_adr_transaction_coa_id
292027   , p_accounting_coa_id            => l_adr_accounting_coa_id
292028   , p_adr_code                     => 'CST_DEFAULT'
292029   , p_adr_type_code                => 'S'
292030   , p_component_type               => l_component_type
292031   , p_component_code               => l_component_code
292032   , p_component_type_code          => l_component_type_code
292033   , p_component_appl_id            => l_component_appl_id
292034   , p_amb_context_code             => l_amb_context_code
292035   , p_side                         => 'NA'
292036   );
292037 
292038 
292039    --
292040    --
292041    END IF;
292042    --
292043    -- Bug 4922099
292044    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
292045           (NVL(l_enc_upg_option, 'N') = 'O')
292046         ) AND
292047         (l_bflow_method_code = 'PRIOR_ENTRY')
292048       )
292049    THEN
292050       IF
292051       --
292052       1 = 2
292053       --
292054       THEN
292055       xla_accounting_err_pkg.build_message
292056                                     (p_appli_s_name            => 'XLA'
292057                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
292058                                     ,p_token_1                 => 'LINE_NUMBER'
292059                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
292060                                     ,p_token_2                 => 'LINE_TYPE_NAME'
292061                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
292062                                                                              l_component_type
292063                                                                             ,l_component_code
292064                                                                             ,l_component_type_code
292065                                                                             ,l_component_appl_id
292066                                                                             ,l_amb_context_code
292067                                                                             ,l_entity_code
292068                                                                             ,l_event_class_code
292069                                                                            )
292070                                     ,p_token_3                 => 'OWNER'
292071                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
292072                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
292073                                                                           ,p_lookup_code    => l_component_type_code
292074                                                                          )
292075                                     ,p_token_4                 => 'PRODUCT_NAME'
292076                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
292077                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
292078                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
292079                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
292080                                     ,p_ae_header_id            =>  NULL
292081                                        );
292082 
292083         IF (C_LEVEL_ERROR>= g_log_level) THEN
292084                  trace
292085                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
292086                       ,p_level    => C_LEVEL_ERROR
292087                       ,p_module   => l_log_module);
292088         END IF;
292089       END IF;
292090    END IF;
292091    --
292092    --
292093    ------------------------------------------------------------------------------------------------
292094    -- 4219869 Business Flow
292095    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
292096    -- Prior Entry.  Currently, the following code is always generated.
292097    ------------------------------------------------------------------------------------------------
292098    XLA_AE_LINES_PKG.ValidateCurrentLine;
292099 
292100    ------------------------------------------------------------------------------------
292101    -- 4219869 Business Flow
292102    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
292103    ------------------------------------------------------------------------------------
292104    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
292105 
292106    ----------------------------------------------------------------------------------
292107    -- 4219869 Business Flow
292108    -- Update journal entry status -- Need to generate this within IF <condition>
292109    ----------------------------------------------------------------------------------
292110    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
292111          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
292112          ,p_balance_type_code => l_balance_type_code
292113          );
292114 
292115    -------------------------------------------------------------------------------------------
292116    -- 4262811 - Generate the Accrual Reversal lines
292117    -------------------------------------------------------------------------------------------
292118    BEGIN
292119       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
292120                               (g_array_event(p_event_id).array_value_num('header_index'));
292121       IF l_acc_rev_flag IS NULL THEN
292122          l_acc_rev_flag := 'N';
292123       END IF;
292124    EXCEPTION
292125       WHEN OTHERS THEN
292126          l_acc_rev_flag := 'N';
292127    END;
292128    --
292129    IF (l_acc_rev_flag = 'Y') THEN
292130 
292131        -- 4645092  ------------------------------------------------------------------------------
292132        -- To allow MPA report to determine if it should generate report process
292133        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
292134        ------------------------------------------------------------------------------------------
292135 
292136        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
292137        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
292138    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
292139    -- call ADRs
292140    -- Bug 4922099
292141    --
292142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
292143         (NVL(l_actual_upg_option, 'N') = 'O') OR
292144         (NVL(l_enc_upg_option, 'N') = 'O')
292145       )
292146    THEN
292147    NULL;
292148    --
292149    --
292150    
292151   l_ccid := AcctDerRule_6(
292152            p_application_id           => p_application_id
292153          , p_ae_header_id             => l_ae_header_id 
292154 , p_source_11 => p_source_11
292155          , x_transaction_coa_id       => l_adr_transaction_coa_id
292156          , x_accounting_coa_id        => l_adr_accounting_coa_id
292157          , x_value_type_code          => l_adr_value_type_code
292158          , p_side                     => 'NA'
292159    );
292160 
292161    xla_ae_lines_pkg.set_ccid(
292162     p_code_combination_id          => l_ccid
292163   , p_value_type_code              => l_adr_value_type_code
292164   , p_transaction_coa_id           => l_adr_transaction_coa_id
292165   , p_accounting_coa_id            => l_adr_accounting_coa_id
292166   , p_adr_code                     => 'CST_DEFAULT'
292167   , p_adr_type_code                => 'S'
292168   , p_component_type               => l_component_type
292169   , p_component_code               => l_component_code
292170   , p_component_type_code          => l_component_type_code
292171   , p_component_appl_id            => l_component_appl_id
292172   , p_amb_context_code             => l_amb_context_code
292173   , p_side                         => 'NA'
292174   );
292175 
292176 
292177    --
292178    --
292179    END IF;
292180 
292181        --
292182        -- Update the line information that should be overwritten
292183        --
292184        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
292185                                          p_header_num   => 1);
292186        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
292187 
292188        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
292189 
292190        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
292191           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
292192        END IF;
292193 
292194       --
292195       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
292196       --
292197       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
292198           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
292199       ELSE
292200           ---------------------------------------------------------------------------------------------------
292201           -- 4262811a Switch Sign
292202           ---------------------------------------------------------------------------------------------------
292203           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
292204           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
292205                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
292206           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
292207                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
292208           -- 5132302
292209           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
292210                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
292211 
292212       END IF;
292213 
292214       -- 4955764
292215       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
292216       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
292217 
292218 
292219       XLA_AE_LINES_PKG.ValidateCurrentLine;
292220       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
292221 
292222       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
292223                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
292224                ,p_balance_type_code => l_balance_type_code);
292225 
292226    END IF;
292227 
292228    -----------------------------------------------------------------------------------------
292229    -- 4262811 Multiperiod Accounting
292230    -----------------------------------------------------------------------------------------
292231      -- No MPA option is assigned.
292232 
292233 
292234 END IF;
292235 END IF;
292236 --
292237 
292238 --
292239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
292240    trace
292241       (p_msg      => 'END of AcctLineType_521'
292242       ,p_level    => C_LEVEL_PROCEDURE
292243       ,p_module   => l_log_module);
292244 END IF;
292245 --
292246 EXCEPTION
292247   WHEN xla_exceptions_pkg.application_exception THEN
292248       RAISE;
292249   WHEN OTHERS THEN
292250        xla_exceptions_pkg.raise_message
292251            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_521');
292252 END AcctLineType_521;
292253 --
292254 
292255 ---------------------------------------
292256 --
292257 -- PRIVATE FUNCTION
292258 --         AcctLineType_522
292259 --
292260 ---------------------------------------
292261 PROCEDURE AcctLineType_522 (
292262   p_application_id        IN NUMBER
292263  ,p_event_id              IN NUMBER
292264  ,p_calculate_acctd_flag  IN VARCHAR2
292265  ,p_calculate_g_l_flag    IN VARCHAR2
292266  ,p_actual_flag           IN OUT VARCHAR2
292267  ,p_balance_type_code     OUT VARCHAR2
292268  ,p_gain_or_loss_ref      OUT VARCHAR2
292269  
292270 --TRANSACTION_ID
292271  , p_source_1            IN NUMBER
292272 --Item Concatenated Segments
292273  , p_source_2            IN VARCHAR2
292274 --Transaction Quantity
292275  , p_source_3            IN NUMBER
292276 --Transaction Unit of Measure Code
292277  , p_source_4            IN VARCHAR2
292278 --Inventory Transaction Type Description
292279  , p_source_5            IN VARCHAR2
292280 --Cost Management Default Account
292281  , p_source_11            IN NUMBER
292282 --Applied to Application ID
292283  , p_source_79            IN NUMBER
292284 --Applied to Distribution Link Type
292285  , p_source_80            IN VARCHAR2
292286 --Applied to Entity Code
292287  , p_source_81            IN VARCHAR2
292288 --Applied To Purchase Document Identifier
292289  , p_source_83            IN NUMBER
292290 --DISTRIBUTION_IDENTIFIER
292291  , p_source_84            IN NUMBER
292292 --Distribution Type
292293  , p_source_85            IN VARCHAR2
292294  , p_source_85_meaning    IN VARCHAR2
292295 --PO Budget Account
292296  , p_source_86            IN NUMBER
292297 --Encumbrance Reversal Amount Entered
292298  , p_source_87            IN NUMBER
292299 --Entered Currency Code
292300  , p_source_88            IN VARCHAR2
292301 --Transaction Encumbrance Reversal Amount
292302  , p_source_89            IN NUMBER
292303 --Entered Amount
292304  , p_source_91            IN NUMBER
292305 --Currency Conversion Date
292306  , p_source_92            IN DATE
292307 --Currency Conversion Rate
292308  , p_source_93            IN NUMBER
292309 --Currency Conversion Type
292310  , p_source_94            IN VARCHAR2
292311 --Accounted Amount
292312  , p_source_95            IN NUMBER
292313 --Purchasing Encumbrance Type Identifier
292314  , p_source_96            IN NUMBER
292315 --Accounting Line Type
292316  , p_source_97            IN NUMBER
292317 --Costing Encumbrance Upgrade Option
292318  , p_source_100            IN VARCHAR2
292319 --TXN_PO_DISTRIBUTION_ID
292320  , p_source_101            IN NUMBER
292321 )
292322 IS
292323 
292324 l_component_type              VARCHAR2(80);
292325 l_component_code              VARCHAR2(30);
292326 l_component_type_code         VARCHAR2(1);
292327 l_component_appl_id           INTEGER;
292328 l_amb_context_code            VARCHAR2(30);
292329 l_entity_code                 VARCHAR2(30);
292330 l_event_class_code            VARCHAR2(30);
292331 l_ae_header_id                NUMBER;
292332 l_event_type_code             VARCHAR2(30);
292333 l_line_definition_code        VARCHAR2(30);
292334 l_line_definition_owner_code  VARCHAR2(1);
292335 --
292336 -- adr variables
292337 l_segment                     VARCHAR2(30);
292338 l_ccid                        NUMBER;
292339 l_adr_transaction_coa_id      NUMBER;
292340 l_adr_accounting_coa_id       NUMBER;
292341 l_adr_flexfield_segment_code  VARCHAR2(30);
292342 l_adr_flex_value_set_id       NUMBER;
292343 l_adr_value_type_code         VARCHAR2(30);
292344 l_adr_value_combination_id    NUMBER;
292345 l_adr_value_segment_code      VARCHAR2(30);
292346 
292347 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
292348 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
292349 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
292350 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
292351 
292352 -- 4262811 Variables ------------------------------------------------------------------------------------------
292353 l_entered_amt_idx             NUMBER;
292354 l_accted_amt_idx              NUMBER;
292355 l_acc_rev_flag                VARCHAR2(1);
292356 l_accrual_line_num            NUMBER;
292357 l_tmp_amt                     NUMBER;
292358 l_acc_rev_natural_side_code   VARCHAR2(1);
292359 
292360 l_num_entries                 NUMBER;
292361 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
292362 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
292363 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
292364 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
292365 l_recog_line_1                NUMBER;
292366 l_recog_line_2                NUMBER;
292367 
292368 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
292369 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
292370 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
292371 
292372 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
292373 
292374 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
292375 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
292376 
292377 ---------------------------------------------------------------------------------------------------------------
292378 
292379 
292380 --
292381 -- bulk performance
292382 --
292383 l_balance_type_code           VARCHAR2(1);
292384 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
292385 l_log_module                  VARCHAR2(240);
292386 
292387 --
292388 -- Upgrade strategy
292389 --
292390 l_actual_upg_option           VARCHAR2(1);
292391 l_enc_upg_option           VARCHAR2(1);
292392 
292393 --
292394 BEGIN
292395 --
292396 IF g_log_enabled THEN
292397       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_522';
292398 END IF;
292399 --
292400 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
292401 
292402       trace
292403          (p_msg      => 'BEGIN of AcctLineType_522'
292404          ,p_level    => C_LEVEL_PROCEDURE
292405          ,p_module   => l_log_module);
292406 
292407 END IF;
292408 --
292409 l_component_type             := 'AMB_JLT';
292410 l_component_code             := 'SHIKYU_VARIANCE';
292411 l_component_type_code        := 'S';
292412 l_component_appl_id          :=  707;
292413 l_amb_context_code           := 'DEFAULT';
292414 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
292415 l_event_class_code           := 'PURCHASE_ORDER';
292416 l_event_type_code            := 'PO_DEL_INV';
292417 l_line_definition_owner_code := 'S';
292418 l_line_definition_code       := 'PI_PO_DEL_INV';
292419 --
292420 l_balance_type_code          := 'A';
292421 l_segment                     := NULL;
292422 l_ccid                        := NULL;
292423 l_adr_transaction_coa_id      := NULL;
292424 l_adr_accounting_coa_id       := NULL;
292425 l_adr_flexfield_segment_code  := NULL;
292426 l_adr_flex_value_set_id       := NULL;
292427 l_adr_value_type_code         := NULL;
292428 l_adr_value_combination_id    := NULL;
292429 l_adr_value_segment_code      := NULL;
292430 
292431 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
292432 l_bflow_class_code           := '';    -- 4219869 Business Flow
292433 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
292434 l_budgetary_control_flag     := 'N';
292435 
292436 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
292437 l_bflow_applied_to_amt       := NULL; -- 5132302
292438 l_entered_amt_idx            := NULL;          -- 4262811
292439 l_accted_amt_idx             := NULL;          -- 4262811
292440 l_acc_rev_flag               := NULL;          -- 4262811
292441 l_accrual_line_num           := NULL;          -- 4262811
292442 l_tmp_amt                    := NULL;          -- 4262811
292443 --
292444  
292445 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
292446     l_balance_type_code <> 'B' THEN
292447 IF NVL(p_source_97,9E125) =  33
292448  THEN 
292449 
292450    --
292451    XLA_AE_LINES_PKG.SetNewLine;
292452 
292453    p_balance_type_code          := l_balance_type_code;
292454    -- set the flag so later we will know whether the gain loss line needs to be created
292455    
292456    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
292457      p_actual_flag :='A';
292458    END IF;
292459 
292460    --
292461    -- bulk performance
292462    --
292463    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
292464                                       p_header_num   => 0); -- 4262811
292465    --
292466    -- set accounting line options
292467    --
292468    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
292469            p_natural_side_code          => 'D'
292470          , p_gain_or_loss_flag          => 'N'
292471          , p_gl_transfer_mode_code      => 'S'
292472          , p_acct_entry_type_code       => 'A'
292473          , p_switch_side_flag           => 'Y'
292474          , p_merge_duplicate_code       => 'N'
292475          );
292476    --
292477    l_acc_rev_natural_side_code := 'C';  -- 4262811
292478    -- 
292479    --
292480    -- set accounting line type info
292481    --
292482    xla_ae_lines_pkg.SetAcctLineType
292483       (p_component_type             => l_component_type
292484       ,p_event_type_code            => l_event_type_code
292485       ,p_line_definition_owner_code => l_line_definition_owner_code
292486       ,p_line_definition_code       => l_line_definition_code
292487       ,p_accounting_line_code       => l_component_code
292488       ,p_accounting_line_type_code  => l_component_type_code
292489       ,p_accounting_line_appl_id    => l_component_appl_id
292490       ,p_amb_context_code           => l_amb_context_code
292491       ,p_entity_code                => l_entity_code
292492       ,p_event_class_code           => l_event_class_code);
292493    --
292494    -- set accounting class
292495    --
292496    xla_ae_lines_pkg.SetAcctClass(
292497            p_accounting_class_code  => 'SHIKYU_VARIANCE'
292498          , p_ae_header_id           => l_ae_header_id
292499          );
292500 
292501    --
292502    -- set rounding class
292503    --
292504    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
292505                       'SHIKYU_VARIANCE';
292506 
292507    --
292508    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
292509    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
292510    --
292511    -- bulk performance
292512    --
292513    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
292514 
292515    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
292516       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
292517 
292518    -- 4955764
292519    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
292520       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
292521 
292522    -- 4458381 Public Sector Enh
292523    
292524    --
292525    -- set accounting attributes for the line type
292526    --
292527    l_entered_amt_idx := 17;
292528    l_accted_amt_idx  := 22;
292529    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
292530    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
292531    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
292532    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
292533    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
292534    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
292535    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
292536    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
292537    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
292538    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
292539    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
292540    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
292541    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
292542    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
292543    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
292544    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
292545    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
292546    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
292547    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
292548    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
292549    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
292550    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
292551    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
292552    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
292553    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
292554    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
292555    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
292556    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
292557    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
292558    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
292559    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
292560    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
292561    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
292562    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
292563    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
292564    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
292565    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
292566    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
292567    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
292568    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
292569    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
292570    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
292571    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
292572    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
292573    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
292574    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
292575    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
292576    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
292577    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
292578 
292579    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
292580    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
292581 
292582    ---------------------------------------------------------------------------------------------------------------
292583    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
292584    ---------------------------------------------------------------------------------------------------------------
292585    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
292586 
292587    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
292588    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
292589 
292590    IF xla_accounting_cache_pkg.GetValueChar
292591          (p_source_code         => 'LEDGER_CATEGORY_CODE'
292592          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
292593    AND l_bflow_method_code = 'PRIOR_ENTRY'
292594 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
292595    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
292596          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
292597        )
292598    THEN
292599          xla_ae_lines_pkg.BflowUpgEntry
292600            (p_business_method_code    => l_bflow_method_code
292601            ,p_business_class_code     => l_bflow_class_code
292602            ,p_balance_type            => l_balance_type_code);
292603    ELSE
292604       NULL;
292605 -- No business flow processing for business flow method of NONE.
292606    END IF;
292607 
292608    --
292609    -- call analytical criteria
292610    --
292611    
292612    --
292613    -- call description
292614    --
292615    
292616 xla_ae_lines_pkg.SetLineDescription(
292617    p_ae_header_id => l_ae_header_id
292618   ,p_description  => Description_1 (
292619      p_application_id         => p_application_id
292620    , p_ae_header_id           => l_ae_header_id 
292621 , p_source_1 => p_source_1
292622 , p_source_2 => p_source_2
292623 , p_source_3 => p_source_3
292624 , p_source_4 => p_source_4
292625 , p_source_5 => p_source_5
292626    )
292627 );
292628 
292629 
292630    --
292631    -- call ADRs
292632    -- Bug 4922099
292633    --
292634    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
292635         (NVL(l_actual_upg_option, 'N') = 'O') OR
292636         (NVL(l_enc_upg_option, 'N') = 'O')
292637       )
292638    THEN
292639    NULL;
292640    --
292641    --
292642    
292643   l_ccid := AcctDerRule_6(
292644            p_application_id           => p_application_id
292645          , p_ae_header_id             => l_ae_header_id 
292646 , p_source_11 => p_source_11
292647          , x_transaction_coa_id       => l_adr_transaction_coa_id
292648          , x_accounting_coa_id        => l_adr_accounting_coa_id
292649          , x_value_type_code          => l_adr_value_type_code
292650          , p_side                     => 'NA'
292651    );
292652 
292653    xla_ae_lines_pkg.set_ccid(
292654     p_code_combination_id          => l_ccid
292655   , p_value_type_code              => l_adr_value_type_code
292656   , p_transaction_coa_id           => l_adr_transaction_coa_id
292657   , p_accounting_coa_id            => l_adr_accounting_coa_id
292658   , p_adr_code                     => 'CST_DEFAULT'
292659   , p_adr_type_code                => 'S'
292660   , p_component_type               => l_component_type
292661   , p_component_code               => l_component_code
292662   , p_component_type_code          => l_component_type_code
292663   , p_component_appl_id            => l_component_appl_id
292664   , p_amb_context_code             => l_amb_context_code
292665   , p_side                         => 'NA'
292666   );
292667 
292668 
292669    --
292670    --
292671    END IF;
292672    --
292673    -- Bug 4922099
292674    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
292675           (NVL(l_enc_upg_option, 'N') = 'O')
292676         ) AND
292677         (l_bflow_method_code = 'PRIOR_ENTRY')
292678       )
292679    THEN
292680       IF
292681       --
292682       1 = 2
292683       --
292684       THEN
292685       xla_accounting_err_pkg.build_message
292686                                     (p_appli_s_name            => 'XLA'
292687                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
292688                                     ,p_token_1                 => 'LINE_NUMBER'
292689                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
292690                                     ,p_token_2                 => 'LINE_TYPE_NAME'
292691                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
292692                                                                              l_component_type
292693                                                                             ,l_component_code
292694                                                                             ,l_component_type_code
292695                                                                             ,l_component_appl_id
292696                                                                             ,l_amb_context_code
292697                                                                             ,l_entity_code
292698                                                                             ,l_event_class_code
292699                                                                            )
292700                                     ,p_token_3                 => 'OWNER'
292701                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
292702                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
292703                                                                           ,p_lookup_code    => l_component_type_code
292704                                                                          )
292705                                     ,p_token_4                 => 'PRODUCT_NAME'
292706                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
292707                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
292708                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
292709                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
292710                                     ,p_ae_header_id            =>  NULL
292711                                        );
292712 
292713         IF (C_LEVEL_ERROR>= g_log_level) THEN
292714                  trace
292715                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
292716                       ,p_level    => C_LEVEL_ERROR
292717                       ,p_module   => l_log_module);
292718         END IF;
292719       END IF;
292720    END IF;
292721    --
292722    --
292723    ------------------------------------------------------------------------------------------------
292724    -- 4219869 Business Flow
292725    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
292726    -- Prior Entry.  Currently, the following code is always generated.
292727    ------------------------------------------------------------------------------------------------
292728    XLA_AE_LINES_PKG.ValidateCurrentLine;
292729 
292730    ------------------------------------------------------------------------------------
292731    -- 4219869 Business Flow
292732    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
292733    ------------------------------------------------------------------------------------
292734    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
292735 
292736    ----------------------------------------------------------------------------------
292737    -- 4219869 Business Flow
292738    -- Update journal entry status -- Need to generate this within IF <condition>
292739    ----------------------------------------------------------------------------------
292740    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
292741          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
292742          ,p_balance_type_code => l_balance_type_code
292743          );
292744 
292745    -------------------------------------------------------------------------------------------
292746    -- 4262811 - Generate the Accrual Reversal lines
292747    -------------------------------------------------------------------------------------------
292748    BEGIN
292749       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
292750                               (g_array_event(p_event_id).array_value_num('header_index'));
292751       IF l_acc_rev_flag IS NULL THEN
292752          l_acc_rev_flag := 'N';
292753       END IF;
292754    EXCEPTION
292755       WHEN OTHERS THEN
292756          l_acc_rev_flag := 'N';
292757    END;
292758    --
292759    IF (l_acc_rev_flag = 'Y') THEN
292760 
292761        -- 4645092  ------------------------------------------------------------------------------
292762        -- To allow MPA report to determine if it should generate report process
292763        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
292764        ------------------------------------------------------------------------------------------
292765 
292766        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
292767        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
292768    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
292769    -- call ADRs
292770    -- Bug 4922099
292771    --
292772    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
292773         (NVL(l_actual_upg_option, 'N') = 'O') OR
292774         (NVL(l_enc_upg_option, 'N') = 'O')
292775       )
292776    THEN
292777    NULL;
292778    --
292779    --
292780    
292781   l_ccid := AcctDerRule_6(
292782            p_application_id           => p_application_id
292783          , p_ae_header_id             => l_ae_header_id 
292784 , p_source_11 => p_source_11
292785          , x_transaction_coa_id       => l_adr_transaction_coa_id
292786          , x_accounting_coa_id        => l_adr_accounting_coa_id
292787          , x_value_type_code          => l_adr_value_type_code
292788          , p_side                     => 'NA'
292789    );
292790 
292791    xla_ae_lines_pkg.set_ccid(
292792     p_code_combination_id          => l_ccid
292793   , p_value_type_code              => l_adr_value_type_code
292794   , p_transaction_coa_id           => l_adr_transaction_coa_id
292795   , p_accounting_coa_id            => l_adr_accounting_coa_id
292796   , p_adr_code                     => 'CST_DEFAULT'
292797   , p_adr_type_code                => 'S'
292798   , p_component_type               => l_component_type
292799   , p_component_code               => l_component_code
292800   , p_component_type_code          => l_component_type_code
292801   , p_component_appl_id            => l_component_appl_id
292802   , p_amb_context_code             => l_amb_context_code
292803   , p_side                         => 'NA'
292804   );
292805 
292806 
292807    --
292808    --
292809    END IF;
292810 
292811        --
292812        -- Update the line information that should be overwritten
292813        --
292814        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
292815                                          p_header_num   => 1);
292816        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
292817 
292818        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
292819 
292820        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
292821           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
292822        END IF;
292823 
292824       --
292825       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
292826       --
292827       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
292828           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
292829       ELSE
292830           ---------------------------------------------------------------------------------------------------
292831           -- 4262811a Switch Sign
292832           ---------------------------------------------------------------------------------------------------
292833           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
292834           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
292835                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
292836           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
292837                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
292838           -- 5132302
292839           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
292840                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
292841 
292842       END IF;
292843 
292844       -- 4955764
292845       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
292846       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
292847 
292848 
292849       XLA_AE_LINES_PKG.ValidateCurrentLine;
292850       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
292851 
292852       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
292853                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
292854                ,p_balance_type_code => l_balance_type_code);
292855 
292856    END IF;
292857 
292858    -----------------------------------------------------------------------------------------
292859    -- 4262811 Multiperiod Accounting
292860    -----------------------------------------------------------------------------------------
292861      -- No MPA option is assigned.
292862 
292863 
292864 END IF;
292865 END IF;
292866 --
292867 
292868 --
292869 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
292870    trace
292871       (p_msg      => 'END of AcctLineType_522'
292872       ,p_level    => C_LEVEL_PROCEDURE
292873       ,p_module   => l_log_module);
292874 END IF;
292875 --
292876 EXCEPTION
292877   WHEN xla_exceptions_pkg.application_exception THEN
292878       RAISE;
292879   WHEN OTHERS THEN
292880        xla_exceptions_pkg.raise_message
292881            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_522');
292882 END AcctLineType_522;
292883 --
292884 
292885 ---------------------------------------
292886 --
292887 -- PRIVATE FUNCTION
292888 --         AcctLineType_523
292889 --
292890 ---------------------------------------
292891 PROCEDURE AcctLineType_523 (
292892   p_application_id        IN NUMBER
292893  ,p_event_id              IN NUMBER
292894  ,p_calculate_acctd_flag  IN VARCHAR2
292895  ,p_calculate_g_l_flag    IN VARCHAR2
292896  ,p_actual_flag           IN OUT VARCHAR2
292897  ,p_balance_type_code     OUT VARCHAR2
292898  ,p_gain_or_loss_ref      OUT VARCHAR2
292899  
292900 --TRANSACTION_ID
292901  , p_source_1            IN NUMBER
292902 --Item Concatenated Segments
292903  , p_source_2            IN VARCHAR2
292904 --Transaction Quantity
292905  , p_source_3            IN NUMBER
292906 --Transaction Unit of Measure Code
292907  , p_source_4            IN VARCHAR2
292908 --Inventory Transaction Type Description
292909  , p_source_5            IN VARCHAR2
292910 --Cost Management Default Account
292911  , p_source_11            IN NUMBER
292912 --Applied to Application ID
292913  , p_source_79            IN NUMBER
292914 --Applied to Distribution Link Type
292915  , p_source_80            IN VARCHAR2
292916 --Applied to Entity Code
292917  , p_source_81            IN VARCHAR2
292918 --Applied To Purchase Document Identifier
292919  , p_source_83            IN NUMBER
292920 --DISTRIBUTION_IDENTIFIER
292921  , p_source_84            IN NUMBER
292922 --Distribution Type
292923  , p_source_85            IN VARCHAR2
292924  , p_source_85_meaning    IN VARCHAR2
292925 --PO Budget Account
292926  , p_source_86            IN NUMBER
292927 --Encumbrance Reversal Amount Entered
292928  , p_source_87            IN NUMBER
292929 --Entered Currency Code
292930  , p_source_88            IN VARCHAR2
292931 --Transaction Encumbrance Reversal Amount
292932  , p_source_89            IN NUMBER
292933 --Entered Amount
292934  , p_source_91            IN NUMBER
292935 --Currency Conversion Date
292936  , p_source_92            IN DATE
292937 --Currency Conversion Rate
292938  , p_source_93            IN NUMBER
292939 --Currency Conversion Type
292940  , p_source_94            IN VARCHAR2
292941 --Accounted Amount
292942  , p_source_95            IN NUMBER
292943 --Purchasing Encumbrance Type Identifier
292944  , p_source_96            IN NUMBER
292945 --Accounting Line Type
292946  , p_source_97            IN NUMBER
292947 --Costing Encumbrance Upgrade Option
292948  , p_source_100            IN VARCHAR2
292949 --TXN_PO_DISTRIBUTION_ID
292950  , p_source_101            IN NUMBER
292951 )
292952 IS
292953 
292954 l_component_type              VARCHAR2(80);
292955 l_component_code              VARCHAR2(30);
292956 l_component_type_code         VARCHAR2(1);
292957 l_component_appl_id           INTEGER;
292958 l_amb_context_code            VARCHAR2(30);
292959 l_entity_code                 VARCHAR2(30);
292960 l_event_class_code            VARCHAR2(30);
292961 l_ae_header_id                NUMBER;
292962 l_event_type_code             VARCHAR2(30);
292963 l_line_definition_code        VARCHAR2(30);
292964 l_line_definition_owner_code  VARCHAR2(1);
292965 --
292966 -- adr variables
292967 l_segment                     VARCHAR2(30);
292968 l_ccid                        NUMBER;
292969 l_adr_transaction_coa_id      NUMBER;
292970 l_adr_accounting_coa_id       NUMBER;
292971 l_adr_flexfield_segment_code  VARCHAR2(30);
292972 l_adr_flex_value_set_id       NUMBER;
292973 l_adr_value_type_code         VARCHAR2(30);
292974 l_adr_value_combination_id    NUMBER;
292975 l_adr_value_segment_code      VARCHAR2(30);
292976 
292977 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
292978 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
292979 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
292980 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
292981 
292982 -- 4262811 Variables ------------------------------------------------------------------------------------------
292983 l_entered_amt_idx             NUMBER;
292984 l_accted_amt_idx              NUMBER;
292985 l_acc_rev_flag                VARCHAR2(1);
292986 l_accrual_line_num            NUMBER;
292987 l_tmp_amt                     NUMBER;
292988 l_acc_rev_natural_side_code   VARCHAR2(1);
292989 
292990 l_num_entries                 NUMBER;
292991 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
292992 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
292993 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
292994 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
292995 l_recog_line_1                NUMBER;
292996 l_recog_line_2                NUMBER;
292997 
292998 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
292999 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
293000 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
293001 
293002 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
293003 
293004 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
293005 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
293006 
293007 ---------------------------------------------------------------------------------------------------------------
293008 
293009 
293010 --
293011 -- bulk performance
293012 --
293013 l_balance_type_code           VARCHAR2(1);
293014 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
293015 l_log_module                  VARCHAR2(240);
293016 
293017 --
293018 -- Upgrade strategy
293019 --
293020 l_actual_upg_option           VARCHAR2(1);
293021 l_enc_upg_option           VARCHAR2(1);
293022 
293023 --
293024 BEGIN
293025 --
293026 IF g_log_enabled THEN
293027       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_523';
293028 END IF;
293029 --
293030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
293031 
293032       trace
293033          (p_msg      => 'BEGIN of AcctLineType_523'
293034          ,p_level    => C_LEVEL_PROCEDURE
293035          ,p_module   => l_log_module);
293036 
293037 END IF;
293038 --
293039 l_component_type             := 'AMB_JLT';
293040 l_component_code             := 'SHIKYU_VARIANCE';
293041 l_component_type_code        := 'S';
293042 l_component_appl_id          :=  707;
293043 l_amb_context_code           := 'DEFAULT';
293044 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
293045 l_event_class_code           := 'PURCHASE_ORDER';
293046 l_event_type_code            := 'RET_RI_INV';
293047 l_line_definition_owner_code := 'S';
293048 l_line_definition_code       := 'PI_RET_RI_INV';
293049 --
293050 l_balance_type_code          := 'A';
293051 l_segment                     := NULL;
293052 l_ccid                        := NULL;
293053 l_adr_transaction_coa_id      := NULL;
293054 l_adr_accounting_coa_id       := NULL;
293055 l_adr_flexfield_segment_code  := NULL;
293056 l_adr_flex_value_set_id       := NULL;
293057 l_adr_value_type_code         := NULL;
293058 l_adr_value_combination_id    := NULL;
293059 l_adr_value_segment_code      := NULL;
293060 
293061 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
293062 l_bflow_class_code           := '';    -- 4219869 Business Flow
293063 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
293064 l_budgetary_control_flag     := 'N';
293065 
293066 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
293067 l_bflow_applied_to_amt       := NULL; -- 5132302
293068 l_entered_amt_idx            := NULL;          -- 4262811
293069 l_accted_amt_idx             := NULL;          -- 4262811
293070 l_acc_rev_flag               := NULL;          -- 4262811
293071 l_accrual_line_num           := NULL;          -- 4262811
293072 l_tmp_amt                    := NULL;          -- 4262811
293073 --
293074  
293075 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
293076     l_balance_type_code <> 'B' THEN
293077 IF NVL(p_source_97,9E125) =  33
293078  THEN 
293079 
293080    --
293081    XLA_AE_LINES_PKG.SetNewLine;
293082 
293083    p_balance_type_code          := l_balance_type_code;
293084    -- set the flag so later we will know whether the gain loss line needs to be created
293085    
293086    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
293087      p_actual_flag :='A';
293088    END IF;
293089 
293090    --
293091    -- bulk performance
293092    --
293093    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
293094                                       p_header_num   => 0); -- 4262811
293095    --
293096    -- set accounting line options
293097    --
293098    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
293099            p_natural_side_code          => 'D'
293100          , p_gain_or_loss_flag          => 'N'
293101          , p_gl_transfer_mode_code      => 'S'
293102          , p_acct_entry_type_code       => 'A'
293103          , p_switch_side_flag           => 'Y'
293104          , p_merge_duplicate_code       => 'N'
293105          );
293106    --
293107    l_acc_rev_natural_side_code := 'C';  -- 4262811
293108    -- 
293109    --
293110    -- set accounting line type info
293111    --
293112    xla_ae_lines_pkg.SetAcctLineType
293113       (p_component_type             => l_component_type
293114       ,p_event_type_code            => l_event_type_code
293115       ,p_line_definition_owner_code => l_line_definition_owner_code
293116       ,p_line_definition_code       => l_line_definition_code
293117       ,p_accounting_line_code       => l_component_code
293118       ,p_accounting_line_type_code  => l_component_type_code
293119       ,p_accounting_line_appl_id    => l_component_appl_id
293120       ,p_amb_context_code           => l_amb_context_code
293121       ,p_entity_code                => l_entity_code
293122       ,p_event_class_code           => l_event_class_code);
293123    --
293124    -- set accounting class
293125    --
293126    xla_ae_lines_pkg.SetAcctClass(
293127            p_accounting_class_code  => 'SHIKYU_VARIANCE'
293128          , p_ae_header_id           => l_ae_header_id
293129          );
293130 
293131    --
293132    -- set rounding class
293133    --
293134    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
293135                       'SHIKYU_VARIANCE';
293136 
293137    --
293138    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
293139    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
293140    --
293141    -- bulk performance
293142    --
293143    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
293144 
293145    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
293146       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
293147 
293148    -- 4955764
293149    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
293150       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
293151 
293152    -- 4458381 Public Sector Enh
293153    
293154    --
293155    -- set accounting attributes for the line type
293156    --
293157    l_entered_amt_idx := 17;
293158    l_accted_amt_idx  := 22;
293159    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
293160    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
293161    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
293162    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
293163    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
293164    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
293165    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
293166    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
293167    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
293168    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
293169    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
293170    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
293171    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
293172    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
293173    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
293174    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
293175    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
293176    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
293177    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
293178    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
293179    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
293180    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
293181    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
293182    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
293183    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
293184    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
293185    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
293186    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
293187    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
293188    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
293189    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
293190    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
293191    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
293192    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
293193    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
293194    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
293195    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
293196    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
293197    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
293198    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
293199    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
293200    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
293201    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
293202    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
293203    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
293204    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
293205    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
293206    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
293207    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
293208 
293209    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
293210    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
293211 
293212    ---------------------------------------------------------------------------------------------------------------
293213    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
293214    ---------------------------------------------------------------------------------------------------------------
293215    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
293216 
293217    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
293218    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
293219 
293220    IF xla_accounting_cache_pkg.GetValueChar
293221          (p_source_code         => 'LEDGER_CATEGORY_CODE'
293222          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
293223    AND l_bflow_method_code = 'PRIOR_ENTRY'
293224 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
293225    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
293226          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
293227        )
293228    THEN
293229          xla_ae_lines_pkg.BflowUpgEntry
293230            (p_business_method_code    => l_bflow_method_code
293231            ,p_business_class_code     => l_bflow_class_code
293232            ,p_balance_type            => l_balance_type_code);
293233    ELSE
293234       NULL;
293235 -- No business flow processing for business flow method of NONE.
293236    END IF;
293237 
293238    --
293239    -- call analytical criteria
293240    --
293241    
293242    --
293243    -- call description
293244    --
293245    
293246 xla_ae_lines_pkg.SetLineDescription(
293247    p_ae_header_id => l_ae_header_id
293248   ,p_description  => Description_1 (
293249      p_application_id         => p_application_id
293250    , p_ae_header_id           => l_ae_header_id 
293251 , p_source_1 => p_source_1
293252 , p_source_2 => p_source_2
293253 , p_source_3 => p_source_3
293254 , p_source_4 => p_source_4
293255 , p_source_5 => p_source_5
293256    )
293257 );
293258 
293259 
293260    --
293261    -- call ADRs
293262    -- Bug 4922099
293263    --
293264    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
293265         (NVL(l_actual_upg_option, 'N') = 'O') OR
293266         (NVL(l_enc_upg_option, 'N') = 'O')
293267       )
293268    THEN
293269    NULL;
293270    --
293271    --
293272    
293273   l_ccid := AcctDerRule_6(
293274            p_application_id           => p_application_id
293275          , p_ae_header_id             => l_ae_header_id 
293276 , p_source_11 => p_source_11
293277          , x_transaction_coa_id       => l_adr_transaction_coa_id
293278          , x_accounting_coa_id        => l_adr_accounting_coa_id
293279          , x_value_type_code          => l_adr_value_type_code
293280          , p_side                     => 'NA'
293281    );
293282 
293283    xla_ae_lines_pkg.set_ccid(
293284     p_code_combination_id          => l_ccid
293285   , p_value_type_code              => l_adr_value_type_code
293286   , p_transaction_coa_id           => l_adr_transaction_coa_id
293287   , p_accounting_coa_id            => l_adr_accounting_coa_id
293288   , p_adr_code                     => 'CST_DEFAULT'
293289   , p_adr_type_code                => 'S'
293290   , p_component_type               => l_component_type
293291   , p_component_code               => l_component_code
293292   , p_component_type_code          => l_component_type_code
293293   , p_component_appl_id            => l_component_appl_id
293294   , p_amb_context_code             => l_amb_context_code
293295   , p_side                         => 'NA'
293296   );
293297 
293298 
293299    --
293300    --
293301    END IF;
293302    --
293303    -- Bug 4922099
293304    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
293305           (NVL(l_enc_upg_option, 'N') = 'O')
293306         ) AND
293307         (l_bflow_method_code = 'PRIOR_ENTRY')
293308       )
293309    THEN
293310       IF
293311       --
293312       1 = 2
293313       --
293314       THEN
293315       xla_accounting_err_pkg.build_message
293316                                     (p_appli_s_name            => 'XLA'
293317                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
293318                                     ,p_token_1                 => 'LINE_NUMBER'
293319                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
293320                                     ,p_token_2                 => 'LINE_TYPE_NAME'
293321                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
293322                                                                              l_component_type
293323                                                                             ,l_component_code
293324                                                                             ,l_component_type_code
293325                                                                             ,l_component_appl_id
293326                                                                             ,l_amb_context_code
293327                                                                             ,l_entity_code
293328                                                                             ,l_event_class_code
293329                                                                            )
293330                                     ,p_token_3                 => 'OWNER'
293331                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
293332                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
293333                                                                           ,p_lookup_code    => l_component_type_code
293334                                                                          )
293335                                     ,p_token_4                 => 'PRODUCT_NAME'
293336                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
293337                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
293338                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
293339                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
293340                                     ,p_ae_header_id            =>  NULL
293341                                        );
293342 
293343         IF (C_LEVEL_ERROR>= g_log_level) THEN
293344                  trace
293345                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
293346                       ,p_level    => C_LEVEL_ERROR
293347                       ,p_module   => l_log_module);
293348         END IF;
293349       END IF;
293350    END IF;
293351    --
293352    --
293353    ------------------------------------------------------------------------------------------------
293354    -- 4219869 Business Flow
293355    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
293356    -- Prior Entry.  Currently, the following code is always generated.
293357    ------------------------------------------------------------------------------------------------
293358    XLA_AE_LINES_PKG.ValidateCurrentLine;
293359 
293360    ------------------------------------------------------------------------------------
293361    -- 4219869 Business Flow
293362    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
293363    ------------------------------------------------------------------------------------
293364    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
293365 
293366    ----------------------------------------------------------------------------------
293367    -- 4219869 Business Flow
293368    -- Update journal entry status -- Need to generate this within IF <condition>
293369    ----------------------------------------------------------------------------------
293370    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
293371          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
293372          ,p_balance_type_code => l_balance_type_code
293373          );
293374 
293375    -------------------------------------------------------------------------------------------
293376    -- 4262811 - Generate the Accrual Reversal lines
293377    -------------------------------------------------------------------------------------------
293378    BEGIN
293379       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
293380                               (g_array_event(p_event_id).array_value_num('header_index'));
293381       IF l_acc_rev_flag IS NULL THEN
293382          l_acc_rev_flag := 'N';
293383       END IF;
293384    EXCEPTION
293385       WHEN OTHERS THEN
293386          l_acc_rev_flag := 'N';
293387    END;
293388    --
293389    IF (l_acc_rev_flag = 'Y') THEN
293390 
293391        -- 4645092  ------------------------------------------------------------------------------
293392        -- To allow MPA report to determine if it should generate report process
293393        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
293394        ------------------------------------------------------------------------------------------
293395 
293396        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
293397        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
293398    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
293399    -- call ADRs
293400    -- Bug 4922099
293401    --
293402    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
293403         (NVL(l_actual_upg_option, 'N') = 'O') OR
293404         (NVL(l_enc_upg_option, 'N') = 'O')
293405       )
293406    THEN
293407    NULL;
293408    --
293409    --
293410    
293411   l_ccid := AcctDerRule_6(
293412            p_application_id           => p_application_id
293413          , p_ae_header_id             => l_ae_header_id 
293414 , p_source_11 => p_source_11
293415          , x_transaction_coa_id       => l_adr_transaction_coa_id
293416          , x_accounting_coa_id        => l_adr_accounting_coa_id
293417          , x_value_type_code          => l_adr_value_type_code
293418          , p_side                     => 'NA'
293419    );
293420 
293421    xla_ae_lines_pkg.set_ccid(
293422     p_code_combination_id          => l_ccid
293423   , p_value_type_code              => l_adr_value_type_code
293424   , p_transaction_coa_id           => l_adr_transaction_coa_id
293425   , p_accounting_coa_id            => l_adr_accounting_coa_id
293426   , p_adr_code                     => 'CST_DEFAULT'
293427   , p_adr_type_code                => 'S'
293428   , p_component_type               => l_component_type
293429   , p_component_code               => l_component_code
293430   , p_component_type_code          => l_component_type_code
293431   , p_component_appl_id            => l_component_appl_id
293432   , p_amb_context_code             => l_amb_context_code
293433   , p_side                         => 'NA'
293434   );
293435 
293436 
293437    --
293438    --
293439    END IF;
293440 
293441        --
293442        -- Update the line information that should be overwritten
293443        --
293444        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
293445                                          p_header_num   => 1);
293446        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
293447 
293448        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
293449 
293450        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
293451           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
293452        END IF;
293453 
293454       --
293455       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
293456       --
293457       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
293458           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
293459       ELSE
293460           ---------------------------------------------------------------------------------------------------
293461           -- 4262811a Switch Sign
293462           ---------------------------------------------------------------------------------------------------
293463           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
293464           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
293465                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
293466           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
293467                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
293468           -- 5132302
293469           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
293470                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
293471 
293472       END IF;
293473 
293474       -- 4955764
293475       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
293476       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
293477 
293478 
293479       XLA_AE_LINES_PKG.ValidateCurrentLine;
293480       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
293481 
293482       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
293483                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
293484                ,p_balance_type_code => l_balance_type_code);
293485 
293486    END IF;
293487 
293488    -----------------------------------------------------------------------------------------
293489    -- 4262811 Multiperiod Accounting
293490    -----------------------------------------------------------------------------------------
293491      -- No MPA option is assigned.
293492 
293493 
293494 END IF;
293495 END IF;
293496 --
293497 
293498 --
293499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
293500    trace
293501       (p_msg      => 'END of AcctLineType_523'
293502       ,p_level    => C_LEVEL_PROCEDURE
293503       ,p_module   => l_log_module);
293504 END IF;
293505 --
293506 EXCEPTION
293507   WHEN xla_exceptions_pkg.application_exception THEN
293508       RAISE;
293509   WHEN OTHERS THEN
293510        xla_exceptions_pkg.raise_message
293511            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_523');
293512 END AcctLineType_523;
293513 --
293514 
293515 ---------------------------------------
293516 --
293517 -- PRIVATE FUNCTION
293518 --         AcctLineType_524
293519 --
293520 ---------------------------------------
293521 PROCEDURE AcctLineType_524 (
293522   p_application_id        IN NUMBER
293523  ,p_event_id              IN NUMBER
293524  ,p_calculate_acctd_flag  IN VARCHAR2
293525  ,p_calculate_g_l_flag    IN VARCHAR2
293526  ,p_actual_flag           IN OUT VARCHAR2
293527  ,p_balance_type_code     OUT VARCHAR2
293528  ,p_gain_or_loss_ref      OUT VARCHAR2
293529  
293530 --TRANSACTION_ID
293531  , p_source_1            IN NUMBER
293532 --Item Concatenated Segments
293533  , p_source_2            IN VARCHAR2
293534 --Transaction Quantity
293535  , p_source_3            IN NUMBER
293536 --Transaction Unit of Measure Code
293537  , p_source_4            IN VARCHAR2
293538 --Inventory Transaction Type Description
293539  , p_source_5            IN VARCHAR2
293540 --Cost Management Default Account
293541  , p_source_11            IN NUMBER
293542 --Applied to Application ID
293543  , p_source_79            IN NUMBER
293544 --Applied to Distribution Link Type
293545  , p_source_80            IN VARCHAR2
293546 --Applied to Entity Code
293547  , p_source_81            IN VARCHAR2
293548 --Applied To Purchase Document Identifier
293549  , p_source_83            IN NUMBER
293550 --DISTRIBUTION_IDENTIFIER
293551  , p_source_84            IN NUMBER
293552 --Distribution Type
293553  , p_source_85            IN VARCHAR2
293554  , p_source_85_meaning    IN VARCHAR2
293555 --PO Budget Account
293556  , p_source_86            IN NUMBER
293557 --Encumbrance Reversal Amount Entered
293558  , p_source_87            IN NUMBER
293559 --Entered Currency Code
293560  , p_source_88            IN VARCHAR2
293561 --Transaction Encumbrance Reversal Amount
293562  , p_source_89            IN NUMBER
293563 --Entered Amount
293564  , p_source_91            IN NUMBER
293565 --Currency Conversion Date
293566  , p_source_92            IN DATE
293567 --Currency Conversion Rate
293568  , p_source_93            IN NUMBER
293569 --Currency Conversion Type
293570  , p_source_94            IN VARCHAR2
293571 --Accounted Amount
293572  , p_source_95            IN NUMBER
293573 --Purchasing Encumbrance Type Identifier
293574  , p_source_96            IN NUMBER
293575 --Accounting Line Type
293576  , p_source_97            IN NUMBER
293577 --Costing Encumbrance Upgrade Option
293578  , p_source_100            IN VARCHAR2
293579 --TXN_PO_DISTRIBUTION_ID
293580  , p_source_101            IN NUMBER
293581 )
293582 IS
293583 
293584 l_component_type              VARCHAR2(80);
293585 l_component_code              VARCHAR2(30);
293586 l_component_type_code         VARCHAR2(1);
293587 l_component_appl_id           INTEGER;
293588 l_amb_context_code            VARCHAR2(30);
293589 l_entity_code                 VARCHAR2(30);
293590 l_event_class_code            VARCHAR2(30);
293591 l_ae_header_id                NUMBER;
293592 l_event_type_code             VARCHAR2(30);
293593 l_line_definition_code        VARCHAR2(30);
293594 l_line_definition_owner_code  VARCHAR2(1);
293595 --
293596 -- adr variables
293597 l_segment                     VARCHAR2(30);
293598 l_ccid                        NUMBER;
293599 l_adr_transaction_coa_id      NUMBER;
293600 l_adr_accounting_coa_id       NUMBER;
293601 l_adr_flexfield_segment_code  VARCHAR2(30);
293602 l_adr_flex_value_set_id       NUMBER;
293603 l_adr_value_type_code         VARCHAR2(30);
293604 l_adr_value_combination_id    NUMBER;
293605 l_adr_value_segment_code      VARCHAR2(30);
293606 
293607 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
293608 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
293609 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
293610 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
293611 
293612 -- 4262811 Variables ------------------------------------------------------------------------------------------
293613 l_entered_amt_idx             NUMBER;
293614 l_accted_amt_idx              NUMBER;
293615 l_acc_rev_flag                VARCHAR2(1);
293616 l_accrual_line_num            NUMBER;
293617 l_tmp_amt                     NUMBER;
293618 l_acc_rev_natural_side_code   VARCHAR2(1);
293619 
293620 l_num_entries                 NUMBER;
293621 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
293622 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
293623 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
293624 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
293625 l_recog_line_1                NUMBER;
293626 l_recog_line_2                NUMBER;
293627 
293628 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
293629 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
293630 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
293631 
293632 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
293633 
293634 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
293635 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
293636 
293637 ---------------------------------------------------------------------------------------------------------------
293638 
293639 
293640 --
293641 -- bulk performance
293642 --
293643 l_balance_type_code           VARCHAR2(1);
293644 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
293645 l_log_module                  VARCHAR2(240);
293646 
293647 --
293648 -- Upgrade strategy
293649 --
293650 l_actual_upg_option           VARCHAR2(1);
293651 l_enc_upg_option           VARCHAR2(1);
293652 
293653 --
293654 BEGIN
293655 --
293656 IF g_log_enabled THEN
293657       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_524';
293658 END IF;
293659 --
293660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
293661 
293662       trace
293663          (p_msg      => 'BEGIN of AcctLineType_524'
293664          ,p_level    => C_LEVEL_PROCEDURE
293665          ,p_module   => l_log_module);
293666 
293667 END IF;
293668 --
293669 l_component_type             := 'AMB_JLT';
293670 l_component_code             := 'SHIKYU_VARIANCE';
293671 l_component_type_code        := 'S';
293672 l_component_appl_id          :=  707;
293673 l_amb_context_code           := 'DEFAULT';
293674 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
293675 l_event_class_code           := 'PURCHASE_ORDER';
293676 l_event_type_code            := 'LOG_PO_DEL_ADJ';
293677 l_line_definition_owner_code := 'S';
293678 l_line_definition_code       := 'PI_LOG_PO_DEL_ADJ';
293679 --
293680 l_balance_type_code          := 'A';
293681 l_segment                     := NULL;
293682 l_ccid                        := NULL;
293683 l_adr_transaction_coa_id      := NULL;
293684 l_adr_accounting_coa_id       := NULL;
293685 l_adr_flexfield_segment_code  := NULL;
293686 l_adr_flex_value_set_id       := NULL;
293687 l_adr_value_type_code         := NULL;
293688 l_adr_value_combination_id    := NULL;
293689 l_adr_value_segment_code      := NULL;
293690 
293691 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
293692 l_bflow_class_code           := '';    -- 4219869 Business Flow
293693 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
293694 l_budgetary_control_flag     := 'N';
293695 
293696 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
293697 l_bflow_applied_to_amt       := NULL; -- 5132302
293698 l_entered_amt_idx            := NULL;          -- 4262811
293699 l_accted_amt_idx             := NULL;          -- 4262811
293700 l_acc_rev_flag               := NULL;          -- 4262811
293701 l_accrual_line_num           := NULL;          -- 4262811
293702 l_tmp_amt                    := NULL;          -- 4262811
293703 --
293704  
293705 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
293706     l_balance_type_code <> 'B' THEN
293707 IF NVL(p_source_97,9E125) =  33
293708  THEN 
293709 
293710    --
293711    XLA_AE_LINES_PKG.SetNewLine;
293712 
293713    p_balance_type_code          := l_balance_type_code;
293714    -- set the flag so later we will know whether the gain loss line needs to be created
293715    
293716    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
293717      p_actual_flag :='A';
293718    END IF;
293719 
293720    --
293721    -- bulk performance
293722    --
293723    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
293724                                       p_header_num   => 0); -- 4262811
293725    --
293726    -- set accounting line options
293727    --
293728    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
293729            p_natural_side_code          => 'D'
293730          , p_gain_or_loss_flag          => 'N'
293731          , p_gl_transfer_mode_code      => 'S'
293732          , p_acct_entry_type_code       => 'A'
293733          , p_switch_side_flag           => 'Y'
293734          , p_merge_duplicate_code       => 'N'
293735          );
293736    --
293737    l_acc_rev_natural_side_code := 'C';  -- 4262811
293738    -- 
293739    --
293740    -- set accounting line type info
293741    --
293742    xla_ae_lines_pkg.SetAcctLineType
293743       (p_component_type             => l_component_type
293744       ,p_event_type_code            => l_event_type_code
293745       ,p_line_definition_owner_code => l_line_definition_owner_code
293746       ,p_line_definition_code       => l_line_definition_code
293747       ,p_accounting_line_code       => l_component_code
293748       ,p_accounting_line_type_code  => l_component_type_code
293749       ,p_accounting_line_appl_id    => l_component_appl_id
293750       ,p_amb_context_code           => l_amb_context_code
293751       ,p_entity_code                => l_entity_code
293752       ,p_event_class_code           => l_event_class_code);
293753    --
293754    -- set accounting class
293755    --
293756    xla_ae_lines_pkg.SetAcctClass(
293757            p_accounting_class_code  => 'SHIKYU_VARIANCE'
293758          , p_ae_header_id           => l_ae_header_id
293759          );
293760 
293761    --
293762    -- set rounding class
293763    --
293764    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
293765                       'SHIKYU_VARIANCE';
293766 
293767    --
293768    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
293769    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
293770    --
293771    -- bulk performance
293772    --
293773    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
293774 
293775    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
293776       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
293777 
293778    -- 4955764
293779    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
293780       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
293781 
293782    -- 4458381 Public Sector Enh
293783    
293784    --
293785    -- set accounting attributes for the line type
293786    --
293787    l_entered_amt_idx := 17;
293788    l_accted_amt_idx  := 22;
293789    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
293790    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
293791    l_rec_acct_attrs.array_num_value(1)  := p_source_79;
293792    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
293793    l_rec_acct_attrs.array_char_value(2)  := p_source_80;
293794    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
293795    l_rec_acct_attrs.array_char_value(3)  := p_source_81;
293796    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
293797    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_101);
293798    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
293799    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_83);
293800    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
293801    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_84);
293802    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
293803    l_rec_acct_attrs.array_char_value(7)  := p_source_85;
293804    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
293805    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_86);
293806    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
293807    l_rec_acct_attrs.array_num_value(9)  := p_source_87;
293808    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
293809    l_rec_acct_attrs.array_char_value(10)  := p_source_88;
293810    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
293811    l_rec_acct_attrs.array_num_value(11)  := p_source_89;
293812    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
293813    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_86);
293814    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
293815    l_rec_acct_attrs.array_num_value(13)  := p_source_87;
293816    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
293817    l_rec_acct_attrs.array_char_value(14)  := p_source_88;
293818    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
293819    l_rec_acct_attrs.array_num_value(15)  := p_source_89;
293820    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
293821    l_rec_acct_attrs.array_char_value(16)  := p_source_100;
293822    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
293823    l_rec_acct_attrs.array_num_value(17)  := p_source_91;
293824    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
293825    l_rec_acct_attrs.array_char_value(18)  := p_source_88;
293826    l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
293827    l_rec_acct_attrs.array_date_value(19)  := p_source_92;
293828    l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
293829    l_rec_acct_attrs.array_num_value(20)  := p_source_93;
293830    l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
293831    l_rec_acct_attrs.array_char_value(21)  := p_source_94;
293832    l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
293833    l_rec_acct_attrs.array_num_value(22)  := p_source_95;
293834    l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
293835    l_rec_acct_attrs.array_num_value(23)  := p_source_96;
293836    l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
293837    l_rec_acct_attrs.array_num_value(24)  := p_source_96;
293838 
293839    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
293840    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
293841 
293842    ---------------------------------------------------------------------------------------------------------------
293843    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
293844    ---------------------------------------------------------------------------------------------------------------
293845    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
293846 
293847    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
293848    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
293849 
293850    IF xla_accounting_cache_pkg.GetValueChar
293851          (p_source_code         => 'LEDGER_CATEGORY_CODE'
293852          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
293853    AND l_bflow_method_code = 'PRIOR_ENTRY'
293854 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
293855    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
293856          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
293857        )
293858    THEN
293859          xla_ae_lines_pkg.BflowUpgEntry
293860            (p_business_method_code    => l_bflow_method_code
293861            ,p_business_class_code     => l_bflow_class_code
293862            ,p_balance_type            => l_balance_type_code);
293863    ELSE
293864       NULL;
293865 -- No business flow processing for business flow method of NONE.
293866    END IF;
293867 
293868    --
293869    -- call analytical criteria
293870    --
293871    
293872    --
293873    -- call description
293874    --
293875    
293876 xla_ae_lines_pkg.SetLineDescription(
293877    p_ae_header_id => l_ae_header_id
293878   ,p_description  => Description_1 (
293879      p_application_id         => p_application_id
293880    , p_ae_header_id           => l_ae_header_id 
293881 , p_source_1 => p_source_1
293882 , p_source_2 => p_source_2
293883 , p_source_3 => p_source_3
293884 , p_source_4 => p_source_4
293885 , p_source_5 => p_source_5
293886    )
293887 );
293888 
293889 
293890    --
293891    -- call ADRs
293892    -- Bug 4922099
293893    --
293894    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
293895         (NVL(l_actual_upg_option, 'N') = 'O') OR
293896         (NVL(l_enc_upg_option, 'N') = 'O')
293897       )
293898    THEN
293899    NULL;
293900    --
293901    --
293902    
293903   l_ccid := AcctDerRule_6(
293904            p_application_id           => p_application_id
293905          , p_ae_header_id             => l_ae_header_id 
293906 , p_source_11 => p_source_11
293907          , x_transaction_coa_id       => l_adr_transaction_coa_id
293908          , x_accounting_coa_id        => l_adr_accounting_coa_id
293909          , x_value_type_code          => l_adr_value_type_code
293910          , p_side                     => 'NA'
293911    );
293912 
293913    xla_ae_lines_pkg.set_ccid(
293914     p_code_combination_id          => l_ccid
293915   , p_value_type_code              => l_adr_value_type_code
293916   , p_transaction_coa_id           => l_adr_transaction_coa_id
293917   , p_accounting_coa_id            => l_adr_accounting_coa_id
293918   , p_adr_code                     => 'CST_DEFAULT'
293919   , p_adr_type_code                => 'S'
293920   , p_component_type               => l_component_type
293921   , p_component_code               => l_component_code
293922   , p_component_type_code          => l_component_type_code
293923   , p_component_appl_id            => l_component_appl_id
293924   , p_amb_context_code             => l_amb_context_code
293925   , p_side                         => 'NA'
293926   );
293927 
293928 
293929    --
293930    --
293931    END IF;
293932    --
293933    -- Bug 4922099
293934    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
293935           (NVL(l_enc_upg_option, 'N') = 'O')
293936         ) AND
293937         (l_bflow_method_code = 'PRIOR_ENTRY')
293938       )
293939    THEN
293940       IF
293941       --
293942       1 = 2
293943       --
293944       THEN
293945       xla_accounting_err_pkg.build_message
293946                                     (p_appli_s_name            => 'XLA'
293947                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
293948                                     ,p_token_1                 => 'LINE_NUMBER'
293949                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
293950                                     ,p_token_2                 => 'LINE_TYPE_NAME'
293951                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
293952                                                                              l_component_type
293953                                                                             ,l_component_code
293954                                                                             ,l_component_type_code
293955                                                                             ,l_component_appl_id
293956                                                                             ,l_amb_context_code
293957                                                                             ,l_entity_code
293958                                                                             ,l_event_class_code
293959                                                                            )
293960                                     ,p_token_3                 => 'OWNER'
293961                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
293962                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
293963                                                                           ,p_lookup_code    => l_component_type_code
293964                                                                          )
293965                                     ,p_token_4                 => 'PRODUCT_NAME'
293966                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
293967                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
293968                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
293969                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
293970                                     ,p_ae_header_id            =>  NULL
293971                                        );
293972 
293973         IF (C_LEVEL_ERROR>= g_log_level) THEN
293974                  trace
293975                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
293976                       ,p_level    => C_LEVEL_ERROR
293977                       ,p_module   => l_log_module);
293978         END IF;
293979       END IF;
293980    END IF;
293981    --
293982    --
293983    ------------------------------------------------------------------------------------------------
293984    -- 4219869 Business Flow
293985    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
293986    -- Prior Entry.  Currently, the following code is always generated.
293987    ------------------------------------------------------------------------------------------------
293988    XLA_AE_LINES_PKG.ValidateCurrentLine;
293989 
293990    ------------------------------------------------------------------------------------
293991    -- 4219869 Business Flow
293992    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
293993    ------------------------------------------------------------------------------------
293994    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
293995 
293996    ----------------------------------------------------------------------------------
293997    -- 4219869 Business Flow
293998    -- Update journal entry status -- Need to generate this within IF <condition>
293999    ----------------------------------------------------------------------------------
294000    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
294001          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
294002          ,p_balance_type_code => l_balance_type_code
294003          );
294004 
294005    -------------------------------------------------------------------------------------------
294006    -- 4262811 - Generate the Accrual Reversal lines
294007    -------------------------------------------------------------------------------------------
294008    BEGIN
294009       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
294010                               (g_array_event(p_event_id).array_value_num('header_index'));
294011       IF l_acc_rev_flag IS NULL THEN
294012          l_acc_rev_flag := 'N';
294013       END IF;
294014    EXCEPTION
294015       WHEN OTHERS THEN
294016          l_acc_rev_flag := 'N';
294017    END;
294018    --
294019    IF (l_acc_rev_flag = 'Y') THEN
294020 
294021        -- 4645092  ------------------------------------------------------------------------------
294022        -- To allow MPA report to determine if it should generate report process
294023        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
294024        ------------------------------------------------------------------------------------------
294025 
294026        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
294027        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
294028    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
294029    -- call ADRs
294030    -- Bug 4922099
294031    --
294032    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
294033         (NVL(l_actual_upg_option, 'N') = 'O') OR
294034         (NVL(l_enc_upg_option, 'N') = 'O')
294035       )
294036    THEN
294037    NULL;
294038    --
294039    --
294040    
294041   l_ccid := AcctDerRule_6(
294042            p_application_id           => p_application_id
294043          , p_ae_header_id             => l_ae_header_id 
294044 , p_source_11 => p_source_11
294045          , x_transaction_coa_id       => l_adr_transaction_coa_id
294046          , x_accounting_coa_id        => l_adr_accounting_coa_id
294047          , x_value_type_code          => l_adr_value_type_code
294048          , p_side                     => 'NA'
294049    );
294050 
294051    xla_ae_lines_pkg.set_ccid(
294052     p_code_combination_id          => l_ccid
294053   , p_value_type_code              => l_adr_value_type_code
294054   , p_transaction_coa_id           => l_adr_transaction_coa_id
294055   , p_accounting_coa_id            => l_adr_accounting_coa_id
294056   , p_adr_code                     => 'CST_DEFAULT'
294057   , p_adr_type_code                => 'S'
294058   , p_component_type               => l_component_type
294059   , p_component_code               => l_component_code
294060   , p_component_type_code          => l_component_type_code
294061   , p_component_appl_id            => l_component_appl_id
294062   , p_amb_context_code             => l_amb_context_code
294063   , p_side                         => 'NA'
294064   );
294065 
294066 
294067    --
294068    --
294069    END IF;
294070 
294071        --
294072        -- Update the line information that should be overwritten
294073        --
294074        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
294075                                          p_header_num   => 1);
294076        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
294077 
294078        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
294079 
294080        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
294081           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
294082        END IF;
294083 
294084       --
294085       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
294086       --
294087       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
294088           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
294089       ELSE
294090           ---------------------------------------------------------------------------------------------------
294091           -- 4262811a Switch Sign
294092           ---------------------------------------------------------------------------------------------------
294093           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
294094           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
294095                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
294096           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
294097                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
294098           -- 5132302
294099           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
294100                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
294101 
294102       END IF;
294103 
294104       -- 4955764
294105       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
294106       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
294107 
294108 
294109       XLA_AE_LINES_PKG.ValidateCurrentLine;
294110       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
294111 
294112       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
294113                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
294114                ,p_balance_type_code => l_balance_type_code);
294115 
294116    END IF;
294117 
294118    -----------------------------------------------------------------------------------------
294119    -- 4262811 Multiperiod Accounting
294120    -----------------------------------------------------------------------------------------
294121      -- No MPA option is assigned.
294122 
294123 
294124 END IF;
294125 END IF;
294126 --
294127 
294128 --
294129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
294130    trace
294131       (p_msg      => 'END of AcctLineType_524'
294132       ,p_level    => C_LEVEL_PROCEDURE
294133       ,p_module   => l_log_module);
294134 END IF;
294135 --
294136 EXCEPTION
294137   WHEN xla_exceptions_pkg.application_exception THEN
294138       RAISE;
294139   WHEN OTHERS THEN
294140        xla_exceptions_pkg.raise_message
294141            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_524');
294142 END AcctLineType_524;
294143 --
294144 
294145 ---------------------------------------
294146 --
294147 -- PRIVATE FUNCTION
294148 --         AcctLineType_525
294149 --
294150 ---------------------------------------
294151 PROCEDURE AcctLineType_525 (
294152   p_application_id        IN NUMBER
294153  ,p_event_id              IN NUMBER
294154  ,p_calculate_acctd_flag  IN VARCHAR2
294155  ,p_calculate_g_l_flag    IN VARCHAR2
294156  ,p_actual_flag           IN OUT VARCHAR2
294157  ,p_balance_type_code     OUT VARCHAR2
294158  ,p_gain_or_loss_ref      OUT VARCHAR2
294159  
294160 --TRANSACTION_ID
294161  , p_source_1            IN NUMBER
294162 --Item Concatenated Segments
294163  , p_source_2            IN VARCHAR2
294164 --Transaction Quantity
294165  , p_source_3            IN NUMBER
294166 --Transaction Unit of Measure Code
294167  , p_source_4            IN VARCHAR2
294168 --Inventory Transaction Type Description
294169  , p_source_5            IN VARCHAR2
294170 --Cost Management Default Account
294171  , p_source_11            IN NUMBER
294172 --DISTRIBUTION_IDENTIFIER
294173  , p_source_84            IN NUMBER
294174 --Distribution Type
294175  , p_source_85            IN VARCHAR2
294176  , p_source_85_meaning    IN VARCHAR2
294177 --Entered Currency Code
294178  , p_source_88            IN VARCHAR2
294179 --Entered Amount
294180  , p_source_91            IN NUMBER
294181 --Currency Conversion Date
294182  , p_source_92            IN DATE
294183 --Currency Conversion Rate
294184  , p_source_93            IN NUMBER
294185 --Currency Conversion Type
294186  , p_source_94            IN VARCHAR2
294187 --Accounted Amount
294188  , p_source_95            IN NUMBER
294189 --Accounting Line Type
294190  , p_source_97            IN NUMBER
294191 )
294192 IS
294193 
294194 l_component_type              VARCHAR2(80);
294195 l_component_code              VARCHAR2(30);
294196 l_component_type_code         VARCHAR2(1);
294197 l_component_appl_id           INTEGER;
294198 l_amb_context_code            VARCHAR2(30);
294199 l_entity_code                 VARCHAR2(30);
294200 l_event_class_code            VARCHAR2(30);
294201 l_ae_header_id                NUMBER;
294202 l_event_type_code             VARCHAR2(30);
294203 l_line_definition_code        VARCHAR2(30);
294204 l_line_definition_owner_code  VARCHAR2(1);
294205 --
294206 -- adr variables
294207 l_segment                     VARCHAR2(30);
294208 l_ccid                        NUMBER;
294209 l_adr_transaction_coa_id      NUMBER;
294210 l_adr_accounting_coa_id       NUMBER;
294211 l_adr_flexfield_segment_code  VARCHAR2(30);
294212 l_adr_flex_value_set_id       NUMBER;
294213 l_adr_value_type_code         VARCHAR2(30);
294214 l_adr_value_combination_id    NUMBER;
294215 l_adr_value_segment_code      VARCHAR2(30);
294216 
294217 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
294218 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
294219 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
294220 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
294221 
294222 -- 4262811 Variables ------------------------------------------------------------------------------------------
294223 l_entered_amt_idx             NUMBER;
294224 l_accted_amt_idx              NUMBER;
294225 l_acc_rev_flag                VARCHAR2(1);
294226 l_accrual_line_num            NUMBER;
294227 l_tmp_amt                     NUMBER;
294228 l_acc_rev_natural_side_code   VARCHAR2(1);
294229 
294230 l_num_entries                 NUMBER;
294231 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
294232 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
294233 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
294234 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
294235 l_recog_line_1                NUMBER;
294236 l_recog_line_2                NUMBER;
294237 
294238 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
294239 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
294240 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
294241 
294242 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
294243 
294244 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
294245 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
294246 
294247 ---------------------------------------------------------------------------------------------------------------
294248 
294249 
294250 --
294251 -- bulk performance
294252 --
294253 l_balance_type_code           VARCHAR2(1);
294254 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
294255 l_log_module                  VARCHAR2(240);
294256 
294257 --
294258 -- Upgrade strategy
294259 --
294260 l_actual_upg_option           VARCHAR2(1);
294261 l_enc_upg_option           VARCHAR2(1);
294262 
294263 --
294264 BEGIN
294265 --
294266 IF g_log_enabled THEN
294267       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_525';
294268 END IF;
294269 --
294270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
294271 
294272       trace
294273          (p_msg      => 'BEGIN of AcctLineType_525'
294274          ,p_level    => C_LEVEL_PROCEDURE
294275          ,p_module   => l_log_module);
294276 
294277 END IF;
294278 --
294279 l_component_type             := 'AMB_JLT';
294280 l_component_code             := 'WIP_VALUATION';
294281 l_component_type_code        := 'S';
294282 l_component_appl_id          :=  707;
294283 l_amb_context_code           := 'DEFAULT';
294284 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
294285 l_event_class_code           := 'WIP_MTL';
294286 l_event_type_code            := 'WIP_COMP_RETURN';
294287 l_line_definition_owner_code := 'S';
294288 l_line_definition_code       := 'PI_WIP_COMP_RETURN';
294289 --
294290 l_balance_type_code          := 'A';
294291 l_segment                     := NULL;
294292 l_ccid                        := NULL;
294293 l_adr_transaction_coa_id      := NULL;
294294 l_adr_accounting_coa_id       := NULL;
294295 l_adr_flexfield_segment_code  := NULL;
294296 l_adr_flex_value_set_id       := NULL;
294297 l_adr_value_type_code         := NULL;
294298 l_adr_value_combination_id    := NULL;
294299 l_adr_value_segment_code      := NULL;
294300 
294301 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
294302 l_bflow_class_code           := '';    -- 4219869 Business Flow
294303 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
294304 l_budgetary_control_flag     := 'N';
294305 
294306 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
294307 l_bflow_applied_to_amt       := NULL; -- 5132302
294308 l_entered_amt_idx            := NULL;          -- 4262811
294309 l_accted_amt_idx             := NULL;          -- 4262811
294310 l_acc_rev_flag               := NULL;          -- 4262811
294311 l_accrual_line_num           := NULL;          -- 4262811
294312 l_tmp_amt                    := NULL;          -- 4262811
294313 --
294314  
294315 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
294316     l_balance_type_code <> 'B' THEN
294317 IF NVL(p_source_97,9E125) =  7
294318  THEN 
294319 
294320    --
294321    XLA_AE_LINES_PKG.SetNewLine;
294322 
294323    p_balance_type_code          := l_balance_type_code;
294324    -- set the flag so later we will know whether the gain loss line needs to be created
294325    
294326    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
294327      p_actual_flag :='A';
294328    END IF;
294329 
294330    --
294331    -- bulk performance
294332    --
294333    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
294334                                       p_header_num   => 0); -- 4262811
294335    --
294336    -- set accounting line options
294337    --
294338    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
294339            p_natural_side_code          => 'D'
294340          , p_gain_or_loss_flag          => 'N'
294341          , p_gl_transfer_mode_code      => 'S'
294342          , p_acct_entry_type_code       => 'A'
294343          , p_switch_side_flag           => 'Y'
294344          , p_merge_duplicate_code       => 'N'
294345          );
294346    --
294347    l_acc_rev_natural_side_code := 'C';  -- 4262811
294348    -- 
294349    --
294350    -- set accounting line type info
294351    --
294352    xla_ae_lines_pkg.SetAcctLineType
294353       (p_component_type             => l_component_type
294354       ,p_event_type_code            => l_event_type_code
294355       ,p_line_definition_owner_code => l_line_definition_owner_code
294356       ,p_line_definition_code       => l_line_definition_code
294357       ,p_accounting_line_code       => l_component_code
294358       ,p_accounting_line_type_code  => l_component_type_code
294359       ,p_accounting_line_appl_id    => l_component_appl_id
294360       ,p_amb_context_code           => l_amb_context_code
294361       ,p_entity_code                => l_entity_code
294362       ,p_event_class_code           => l_event_class_code);
294363    --
294364    -- set accounting class
294365    --
294366    xla_ae_lines_pkg.SetAcctClass(
294367            p_accounting_class_code  => 'WIP_VALUATION'
294368          , p_ae_header_id           => l_ae_header_id
294369          );
294370 
294371    --
294372    -- set rounding class
294373    --
294374    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
294375                       'WIP_VALUATION';
294376 
294377    --
294378    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
294379    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
294380    --
294381    -- bulk performance
294382    --
294383    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
294384 
294385    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
294386       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
294387 
294388    -- 4955764
294389    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
294390       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
294391 
294392    -- 4458381 Public Sector Enh
294393    
294394    --
294395    -- set accounting attributes for the line type
294396    --
294397    l_entered_amt_idx := 3;
294398    l_accted_amt_idx  := 8;
294399    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
294400    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
294401    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
294402    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
294403    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
294404    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
294405    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
294406    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
294407    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
294408    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
294409    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
294410    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
294411    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
294412    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
294413    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
294414    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
294415    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
294416 
294417    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
294418    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
294419 
294420    ---------------------------------------------------------------------------------------------------------------
294421    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
294422    ---------------------------------------------------------------------------------------------------------------
294423    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
294424 
294425    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
294426    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
294427 
294428    IF xla_accounting_cache_pkg.GetValueChar
294429          (p_source_code         => 'LEDGER_CATEGORY_CODE'
294430          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
294431    AND l_bflow_method_code = 'PRIOR_ENTRY'
294432 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
294433    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
294434          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
294435        )
294436    THEN
294437          xla_ae_lines_pkg.BflowUpgEntry
294438            (p_business_method_code    => l_bflow_method_code
294439            ,p_business_class_code     => l_bflow_class_code
294440            ,p_balance_type            => l_balance_type_code);
294441    ELSE
294442       NULL;
294443 -- No business flow processing for business flow method of NONE.
294444    END IF;
294445 
294446    --
294447    -- call analytical criteria
294448    --
294449    
294450    --
294451    -- call description
294452    --
294453    
294454 xla_ae_lines_pkg.SetLineDescription(
294455    p_ae_header_id => l_ae_header_id
294456   ,p_description  => Description_1 (
294457      p_application_id         => p_application_id
294458    , p_ae_header_id           => l_ae_header_id 
294459 , p_source_1 => p_source_1
294460 , p_source_2 => p_source_2
294461 , p_source_3 => p_source_3
294462 , p_source_4 => p_source_4
294463 , p_source_5 => p_source_5
294464    )
294465 );
294466 
294467 
294468    --
294469    -- call ADRs
294470    -- Bug 4922099
294471    --
294472    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
294473         (NVL(l_actual_upg_option, 'N') = 'O') OR
294474         (NVL(l_enc_upg_option, 'N') = 'O')
294475       )
294476    THEN
294477    NULL;
294478    --
294479    --
294480    
294481   l_ccid := AcctDerRule_6(
294482            p_application_id           => p_application_id
294483          , p_ae_header_id             => l_ae_header_id 
294484 , p_source_11 => p_source_11
294485          , x_transaction_coa_id       => l_adr_transaction_coa_id
294486          , x_accounting_coa_id        => l_adr_accounting_coa_id
294487          , x_value_type_code          => l_adr_value_type_code
294488          , p_side                     => 'NA'
294489    );
294490 
294491    xla_ae_lines_pkg.set_ccid(
294492     p_code_combination_id          => l_ccid
294493   , p_value_type_code              => l_adr_value_type_code
294494   , p_transaction_coa_id           => l_adr_transaction_coa_id
294495   , p_accounting_coa_id            => l_adr_accounting_coa_id
294496   , p_adr_code                     => 'CST_DEFAULT'
294497   , p_adr_type_code                => 'S'
294498   , p_component_type               => l_component_type
294499   , p_component_code               => l_component_code
294500   , p_component_type_code          => l_component_type_code
294501   , p_component_appl_id            => l_component_appl_id
294502   , p_amb_context_code             => l_amb_context_code
294503   , p_side                         => 'NA'
294504   );
294505 
294506 
294507    --
294508    --
294509    END IF;
294510    --
294511    -- Bug 4922099
294512    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
294513           (NVL(l_enc_upg_option, 'N') = 'O')
294514         ) AND
294515         (l_bflow_method_code = 'PRIOR_ENTRY')
294516       )
294517    THEN
294518       IF
294519       --
294520       1 = 2
294521       --
294522       THEN
294523       xla_accounting_err_pkg.build_message
294524                                     (p_appli_s_name            => 'XLA'
294525                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
294526                                     ,p_token_1                 => 'LINE_NUMBER'
294527                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
294528                                     ,p_token_2                 => 'LINE_TYPE_NAME'
294529                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
294530                                                                              l_component_type
294531                                                                             ,l_component_code
294532                                                                             ,l_component_type_code
294533                                                                             ,l_component_appl_id
294534                                                                             ,l_amb_context_code
294535                                                                             ,l_entity_code
294536                                                                             ,l_event_class_code
294537                                                                            )
294538                                     ,p_token_3                 => 'OWNER'
294539                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
294540                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
294541                                                                           ,p_lookup_code    => l_component_type_code
294542                                                                          )
294543                                     ,p_token_4                 => 'PRODUCT_NAME'
294544                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
294545                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
294546                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
294547                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
294548                                     ,p_ae_header_id            =>  NULL
294549                                        );
294550 
294551         IF (C_LEVEL_ERROR>= g_log_level) THEN
294552                  trace
294553                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
294554                       ,p_level    => C_LEVEL_ERROR
294555                       ,p_module   => l_log_module);
294556         END IF;
294557       END IF;
294558    END IF;
294559    --
294560    --
294561    ------------------------------------------------------------------------------------------------
294562    -- 4219869 Business Flow
294563    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
294564    -- Prior Entry.  Currently, the following code is always generated.
294565    ------------------------------------------------------------------------------------------------
294566    XLA_AE_LINES_PKG.ValidateCurrentLine;
294567 
294568    ------------------------------------------------------------------------------------
294569    -- 4219869 Business Flow
294570    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
294571    ------------------------------------------------------------------------------------
294572    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
294573 
294574    ----------------------------------------------------------------------------------
294575    -- 4219869 Business Flow
294576    -- Update journal entry status -- Need to generate this within IF <condition>
294577    ----------------------------------------------------------------------------------
294578    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
294579          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
294580          ,p_balance_type_code => l_balance_type_code
294581          );
294582 
294583    -------------------------------------------------------------------------------------------
294584    -- 4262811 - Generate the Accrual Reversal lines
294585    -------------------------------------------------------------------------------------------
294586    BEGIN
294587       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
294588                               (g_array_event(p_event_id).array_value_num('header_index'));
294589       IF l_acc_rev_flag IS NULL THEN
294590          l_acc_rev_flag := 'N';
294591       END IF;
294592    EXCEPTION
294593       WHEN OTHERS THEN
294594          l_acc_rev_flag := 'N';
294595    END;
294596    --
294597    IF (l_acc_rev_flag = 'Y') THEN
294598 
294599        -- 4645092  ------------------------------------------------------------------------------
294600        -- To allow MPA report to determine if it should generate report process
294601        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
294602        ------------------------------------------------------------------------------------------
294603 
294604        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
294605        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
294606    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
294607    -- call ADRs
294608    -- Bug 4922099
294609    --
294610    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
294611         (NVL(l_actual_upg_option, 'N') = 'O') OR
294612         (NVL(l_enc_upg_option, 'N') = 'O')
294613       )
294614    THEN
294615    NULL;
294616    --
294617    --
294618    
294619   l_ccid := AcctDerRule_6(
294620            p_application_id           => p_application_id
294621          , p_ae_header_id             => l_ae_header_id 
294622 , p_source_11 => p_source_11
294623          , x_transaction_coa_id       => l_adr_transaction_coa_id
294624          , x_accounting_coa_id        => l_adr_accounting_coa_id
294625          , x_value_type_code          => l_adr_value_type_code
294626          , p_side                     => 'NA'
294627    );
294628 
294629    xla_ae_lines_pkg.set_ccid(
294630     p_code_combination_id          => l_ccid
294631   , p_value_type_code              => l_adr_value_type_code
294632   , p_transaction_coa_id           => l_adr_transaction_coa_id
294633   , p_accounting_coa_id            => l_adr_accounting_coa_id
294634   , p_adr_code                     => 'CST_DEFAULT'
294635   , p_adr_type_code                => 'S'
294636   , p_component_type               => l_component_type
294637   , p_component_code               => l_component_code
294638   , p_component_type_code          => l_component_type_code
294639   , p_component_appl_id            => l_component_appl_id
294640   , p_amb_context_code             => l_amb_context_code
294641   , p_side                         => 'NA'
294642   );
294643 
294644 
294645    --
294646    --
294647    END IF;
294648 
294649        --
294650        -- Update the line information that should be overwritten
294651        --
294652        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
294653                                          p_header_num   => 1);
294654        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
294655 
294656        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
294657 
294658        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
294659           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
294660        END IF;
294661 
294662       --
294663       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
294664       --
294665       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
294666           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
294667       ELSE
294668           ---------------------------------------------------------------------------------------------------
294669           -- 4262811a Switch Sign
294670           ---------------------------------------------------------------------------------------------------
294671           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
294672           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
294673                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
294674           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
294675                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
294676           -- 5132302
294677           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
294678                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
294679 
294680       END IF;
294681 
294682       -- 4955764
294683       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
294684       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
294685 
294686 
294687       XLA_AE_LINES_PKG.ValidateCurrentLine;
294688       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
294689 
294690       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
294691                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
294692                ,p_balance_type_code => l_balance_type_code);
294693 
294694    END IF;
294695 
294696    -----------------------------------------------------------------------------------------
294697    -- 4262811 Multiperiod Accounting
294698    -----------------------------------------------------------------------------------------
294699      -- No MPA option is assigned.
294700 
294701 
294702 END IF;
294703 END IF;
294704 --
294705 
294706 --
294707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
294708    trace
294709       (p_msg      => 'END of AcctLineType_525'
294710       ,p_level    => C_LEVEL_PROCEDURE
294711       ,p_module   => l_log_module);
294712 END IF;
294713 --
294714 EXCEPTION
294715   WHEN xla_exceptions_pkg.application_exception THEN
294716       RAISE;
294717   WHEN OTHERS THEN
294718        xla_exceptions_pkg.raise_message
294719            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_525');
294720 END AcctLineType_525;
294721 --
294722 
294723 ---------------------------------------
294724 --
294725 -- PRIVATE FUNCTION
294726 --         AcctLineType_526
294727 --
294728 ---------------------------------------
294729 PROCEDURE AcctLineType_526 (
294730   p_application_id        IN NUMBER
294731  ,p_event_id              IN NUMBER
294732  ,p_calculate_acctd_flag  IN VARCHAR2
294733  ,p_calculate_g_l_flag    IN VARCHAR2
294734  ,p_actual_flag           IN OUT VARCHAR2
294735  ,p_balance_type_code     OUT VARCHAR2
294736  ,p_gain_or_loss_ref      OUT VARCHAR2
294737  
294738 --Cost Management Default Account
294739  , p_source_11            IN NUMBER
294740 --DISTRIBUTION_IDENTIFIER
294741  , p_source_84            IN NUMBER
294742 --Distribution Type
294743  , p_source_85            IN VARCHAR2
294744  , p_source_85_meaning    IN VARCHAR2
294745 --Entered Currency Code
294746  , p_source_88            IN VARCHAR2
294747 --Entered Amount
294748  , p_source_91            IN NUMBER
294749 --Currency Conversion Date
294750  , p_source_92            IN DATE
294751 --Currency Conversion Rate
294752  , p_source_93            IN NUMBER
294753 --Accounted Amount
294754  , p_source_95            IN NUMBER
294755 --Accounting Line Type
294756  , p_source_97            IN NUMBER
294757 )
294758 IS
294759 
294760 l_component_type              VARCHAR2(80);
294761 l_component_code              VARCHAR2(30);
294762 l_component_type_code         VARCHAR2(1);
294763 l_component_appl_id           INTEGER;
294764 l_amb_context_code            VARCHAR2(30);
294765 l_entity_code                 VARCHAR2(30);
294766 l_event_class_code            VARCHAR2(30);
294767 l_ae_header_id                NUMBER;
294768 l_event_type_code             VARCHAR2(30);
294769 l_line_definition_code        VARCHAR2(30);
294770 l_line_definition_owner_code  VARCHAR2(1);
294771 --
294772 -- adr variables
294773 l_segment                     VARCHAR2(30);
294774 l_ccid                        NUMBER;
294775 l_adr_transaction_coa_id      NUMBER;
294776 l_adr_accounting_coa_id       NUMBER;
294777 l_adr_flexfield_segment_code  VARCHAR2(30);
294778 l_adr_flex_value_set_id       NUMBER;
294779 l_adr_value_type_code         VARCHAR2(30);
294780 l_adr_value_combination_id    NUMBER;
294781 l_adr_value_segment_code      VARCHAR2(30);
294782 
294783 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
294784 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
294785 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
294786 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
294787 
294788 -- 4262811 Variables ------------------------------------------------------------------------------------------
294789 l_entered_amt_idx             NUMBER;
294790 l_accted_amt_idx              NUMBER;
294791 l_acc_rev_flag                VARCHAR2(1);
294792 l_accrual_line_num            NUMBER;
294793 l_tmp_amt                     NUMBER;
294794 l_acc_rev_natural_side_code   VARCHAR2(1);
294795 
294796 l_num_entries                 NUMBER;
294797 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
294798 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
294799 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
294800 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
294801 l_recog_line_1                NUMBER;
294802 l_recog_line_2                NUMBER;
294803 
294804 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
294805 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
294806 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
294807 
294808 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
294809 
294810 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
294811 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
294812 
294813 ---------------------------------------------------------------------------------------------------------------
294814 
294815 
294816 --
294817 -- bulk performance
294818 --
294819 l_balance_type_code           VARCHAR2(1);
294820 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
294821 l_log_module                  VARCHAR2(240);
294822 
294823 --
294824 -- Upgrade strategy
294825 --
294826 l_actual_upg_option           VARCHAR2(1);
294827 l_enc_upg_option           VARCHAR2(1);
294828 
294829 --
294830 BEGIN
294831 --
294832 IF g_log_enabled THEN
294833       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_526';
294834 END IF;
294835 --
294836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
294837 
294838       trace
294839          (p_msg      => 'BEGIN of AcctLineType_526'
294840          ,p_level    => C_LEVEL_PROCEDURE
294841          ,p_module   => l_log_module);
294842 
294843 END IF;
294844 --
294845 l_component_type             := 'AMB_JLT';
294846 l_component_code             := 'WIP_VALUATION';
294847 l_component_type_code        := 'S';
294848 l_component_appl_id          :=  707;
294849 l_amb_context_code           := 'DEFAULT';
294850 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
294851 l_event_class_code           := 'OSP';
294852 l_event_type_code            := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
294853 l_line_definition_owner_code := 'S';
294854 l_line_definition_code       := 'PI_EAM_DIRECT_DELIVERY';
294855 --
294856 l_balance_type_code          := 'A';
294857 l_segment                     := NULL;
294858 l_ccid                        := NULL;
294859 l_adr_transaction_coa_id      := NULL;
294860 l_adr_accounting_coa_id       := NULL;
294861 l_adr_flexfield_segment_code  := NULL;
294862 l_adr_flex_value_set_id       := NULL;
294863 l_adr_value_type_code         := NULL;
294864 l_adr_value_combination_id    := NULL;
294865 l_adr_value_segment_code      := NULL;
294866 
294867 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
294868 l_bflow_class_code           := '';    -- 4219869 Business Flow
294869 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
294870 l_budgetary_control_flag     := 'N';
294871 
294872 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
294873 l_bflow_applied_to_amt       := NULL; -- 5132302
294874 l_entered_amt_idx            := NULL;          -- 4262811
294875 l_accted_amt_idx             := NULL;          -- 4262811
294876 l_acc_rev_flag               := NULL;          -- 4262811
294877 l_accrual_line_num           := NULL;          -- 4262811
294878 l_tmp_amt                    := NULL;          -- 4262811
294879 --
294880  
294881 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
294882     l_balance_type_code <> 'B' THEN
294883 IF NVL(p_source_97,9E125) =  7
294884  THEN 
294885 
294886    --
294887    XLA_AE_LINES_PKG.SetNewLine;
294888 
294889    p_balance_type_code          := l_balance_type_code;
294890    -- set the flag so later we will know whether the gain loss line needs to be created
294891    
294892    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
294893      p_actual_flag :='A';
294894    END IF;
294895 
294896    --
294897    -- bulk performance
294898    --
294899    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
294900                                       p_header_num   => 0); -- 4262811
294901    --
294902    -- set accounting line options
294903    --
294904    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
294905            p_natural_side_code          => 'D'
294906          , p_gain_or_loss_flag          => 'N'
294907          , p_gl_transfer_mode_code      => 'S'
294908          , p_acct_entry_type_code       => 'A'
294909          , p_switch_side_flag           => 'Y'
294910          , p_merge_duplicate_code       => 'N'
294911          );
294912    --
294913    l_acc_rev_natural_side_code := 'C';  -- 4262811
294914    -- 
294915    --
294916    -- set accounting line type info
294917    --
294918    xla_ae_lines_pkg.SetAcctLineType
294919       (p_component_type             => l_component_type
294920       ,p_event_type_code            => l_event_type_code
294921       ,p_line_definition_owner_code => l_line_definition_owner_code
294922       ,p_line_definition_code       => l_line_definition_code
294923       ,p_accounting_line_code       => l_component_code
294924       ,p_accounting_line_type_code  => l_component_type_code
294925       ,p_accounting_line_appl_id    => l_component_appl_id
294926       ,p_amb_context_code           => l_amb_context_code
294927       ,p_entity_code                => l_entity_code
294928       ,p_event_class_code           => l_event_class_code);
294929    --
294930    -- set accounting class
294931    --
294932    xla_ae_lines_pkg.SetAcctClass(
294933            p_accounting_class_code  => 'WIP_VALUATION'
294934          , p_ae_header_id           => l_ae_header_id
294935          );
294936 
294937    --
294938    -- set rounding class
294939    --
294940    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
294941                       'WIP_VALUATION';
294942 
294943    --
294944    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
294945    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
294946    --
294947    -- bulk performance
294948    --
294949    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
294950 
294951    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
294952       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
294953 
294954    -- 4955764
294955    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
294956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
294957 
294958    -- 4458381 Public Sector Enh
294959    
294960    --
294961    -- set accounting attributes for the line type
294962    --
294963    l_entered_amt_idx := 3;
294964    l_accted_amt_idx  := 8;
294965    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
294966    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
294967    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
294968    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
294969    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
294970    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
294971    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
294972    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
294973    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
294974    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
294975    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
294976    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
294977    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
294978    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
294979    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
294980    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
294981    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
294982 
294983    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
294984    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
294985 
294986    ---------------------------------------------------------------------------------------------------------------
294987    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
294988    ---------------------------------------------------------------------------------------------------------------
294989    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
294990 
294991    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
294992    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
294993 
294994    IF xla_accounting_cache_pkg.GetValueChar
294995          (p_source_code         => 'LEDGER_CATEGORY_CODE'
294996          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
294997    AND l_bflow_method_code = 'PRIOR_ENTRY'
294998 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
294999    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
295000          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
295001        )
295002    THEN
295003          xla_ae_lines_pkg.BflowUpgEntry
295004            (p_business_method_code    => l_bflow_method_code
295005            ,p_business_class_code     => l_bflow_class_code
295006            ,p_balance_type            => l_balance_type_code);
295007    ELSE
295008       NULL;
295009 -- No business flow processing for business flow method of NONE.
295010    END IF;
295011 
295012    --
295013    -- call analytical criteria
295014    --
295015    
295016    --
295017    -- call description
295018    --
295019    -- No description or it is inherited.
295020    --
295021    -- call ADRs
295022    -- Bug 4922099
295023    --
295024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
295025         (NVL(l_actual_upg_option, 'N') = 'O') OR
295026         (NVL(l_enc_upg_option, 'N') = 'O')
295027       )
295028    THEN
295029    NULL;
295030    --
295031    --
295032    
295033   l_ccid := AcctDerRule_6(
295034            p_application_id           => p_application_id
295035          , p_ae_header_id             => l_ae_header_id 
295036 , p_source_11 => p_source_11
295037          , x_transaction_coa_id       => l_adr_transaction_coa_id
295038          , x_accounting_coa_id        => l_adr_accounting_coa_id
295039          , x_value_type_code          => l_adr_value_type_code
295040          , p_side                     => 'NA'
295041    );
295042 
295043    xla_ae_lines_pkg.set_ccid(
295044     p_code_combination_id          => l_ccid
295045   , p_value_type_code              => l_adr_value_type_code
295046   , p_transaction_coa_id           => l_adr_transaction_coa_id
295047   , p_accounting_coa_id            => l_adr_accounting_coa_id
295048   , p_adr_code                     => 'CST_DEFAULT'
295049   , p_adr_type_code                => 'S'
295050   , p_component_type               => l_component_type
295051   , p_component_code               => l_component_code
295052   , p_component_type_code          => l_component_type_code
295053   , p_component_appl_id            => l_component_appl_id
295054   , p_amb_context_code             => l_amb_context_code
295055   , p_side                         => 'NA'
295056   );
295057 
295058 
295059    --
295060    --
295061    END IF;
295062    --
295063    -- Bug 4922099
295064    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
295065           (NVL(l_enc_upg_option, 'N') = 'O')
295066         ) AND
295067         (l_bflow_method_code = 'PRIOR_ENTRY')
295068       )
295069    THEN
295070       IF
295071       --
295072       1 = 2
295073       --
295074       THEN
295075       xla_accounting_err_pkg.build_message
295076                                     (p_appli_s_name            => 'XLA'
295077                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
295078                                     ,p_token_1                 => 'LINE_NUMBER'
295079                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
295080                                     ,p_token_2                 => 'LINE_TYPE_NAME'
295081                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
295082                                                                              l_component_type
295083                                                                             ,l_component_code
295084                                                                             ,l_component_type_code
295085                                                                             ,l_component_appl_id
295086                                                                             ,l_amb_context_code
295087                                                                             ,l_entity_code
295088                                                                             ,l_event_class_code
295089                                                                            )
295090                                     ,p_token_3                 => 'OWNER'
295091                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
295092                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
295093                                                                           ,p_lookup_code    => l_component_type_code
295094                                                                          )
295095                                     ,p_token_4                 => 'PRODUCT_NAME'
295096                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
295097                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
295098                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
295099                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
295100                                     ,p_ae_header_id            =>  NULL
295101                                        );
295102 
295103         IF (C_LEVEL_ERROR>= g_log_level) THEN
295104                  trace
295105                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
295106                       ,p_level    => C_LEVEL_ERROR
295107                       ,p_module   => l_log_module);
295108         END IF;
295109       END IF;
295110    END IF;
295111    --
295112    --
295113    ------------------------------------------------------------------------------------------------
295114    -- 4219869 Business Flow
295115    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
295116    -- Prior Entry.  Currently, the following code is always generated.
295117    ------------------------------------------------------------------------------------------------
295118    XLA_AE_LINES_PKG.ValidateCurrentLine;
295119 
295120    ------------------------------------------------------------------------------------
295121    -- 4219869 Business Flow
295122    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
295123    ------------------------------------------------------------------------------------
295124    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
295125 
295126    ----------------------------------------------------------------------------------
295127    -- 4219869 Business Flow
295128    -- Update journal entry status -- Need to generate this within IF <condition>
295129    ----------------------------------------------------------------------------------
295130    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
295131          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
295132          ,p_balance_type_code => l_balance_type_code
295133          );
295134 
295135    -------------------------------------------------------------------------------------------
295136    -- 4262811 - Generate the Accrual Reversal lines
295137    -------------------------------------------------------------------------------------------
295138    BEGIN
295139       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
295140                               (g_array_event(p_event_id).array_value_num('header_index'));
295141       IF l_acc_rev_flag IS NULL THEN
295142          l_acc_rev_flag := 'N';
295143       END IF;
295144    EXCEPTION
295145       WHEN OTHERS THEN
295146          l_acc_rev_flag := 'N';
295147    END;
295148    --
295149    IF (l_acc_rev_flag = 'Y') THEN
295150 
295151        -- 4645092  ------------------------------------------------------------------------------
295152        -- To allow MPA report to determine if it should generate report process
295153        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
295154        ------------------------------------------------------------------------------------------
295155 
295156        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
295157        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
295158    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
295159    -- call ADRs
295160    -- Bug 4922099
295161    --
295162    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
295163         (NVL(l_actual_upg_option, 'N') = 'O') OR
295164         (NVL(l_enc_upg_option, 'N') = 'O')
295165       )
295166    THEN
295167    NULL;
295168    --
295169    --
295170    
295171   l_ccid := AcctDerRule_6(
295172            p_application_id           => p_application_id
295173          , p_ae_header_id             => l_ae_header_id 
295174 , p_source_11 => p_source_11
295175          , x_transaction_coa_id       => l_adr_transaction_coa_id
295176          , x_accounting_coa_id        => l_adr_accounting_coa_id
295177          , x_value_type_code          => l_adr_value_type_code
295178          , p_side                     => 'NA'
295179    );
295180 
295181    xla_ae_lines_pkg.set_ccid(
295182     p_code_combination_id          => l_ccid
295183   , p_value_type_code              => l_adr_value_type_code
295184   , p_transaction_coa_id           => l_adr_transaction_coa_id
295185   , p_accounting_coa_id            => l_adr_accounting_coa_id
295186   , p_adr_code                     => 'CST_DEFAULT'
295187   , p_adr_type_code                => 'S'
295188   , p_component_type               => l_component_type
295189   , p_component_code               => l_component_code
295190   , p_component_type_code          => l_component_type_code
295191   , p_component_appl_id            => l_component_appl_id
295192   , p_amb_context_code             => l_amb_context_code
295193   , p_side                         => 'NA'
295194   );
295195 
295196 
295197    --
295198    --
295199    END IF;
295200 
295201        --
295202        -- Update the line information that should be overwritten
295203        --
295204        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
295205                                          p_header_num   => 1);
295206        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
295207 
295208        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
295209 
295210        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
295211           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
295212        END IF;
295213 
295214       --
295215       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
295216       --
295217       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
295218           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
295219       ELSE
295220           ---------------------------------------------------------------------------------------------------
295221           -- 4262811a Switch Sign
295222           ---------------------------------------------------------------------------------------------------
295223           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
295224           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
295225                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
295226           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
295227                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
295228           -- 5132302
295229           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
295230                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
295231 
295232       END IF;
295233 
295234       -- 4955764
295235       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
295236       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
295237 
295238 
295239       XLA_AE_LINES_PKG.ValidateCurrentLine;
295240       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
295241 
295242       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
295243                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
295244                ,p_balance_type_code => l_balance_type_code);
295245 
295246    END IF;
295247 
295248    -----------------------------------------------------------------------------------------
295249    -- 4262811 Multiperiod Accounting
295250    -----------------------------------------------------------------------------------------
295251      -- No MPA option is assigned.
295252 
295253 
295254 END IF;
295255 END IF;
295256 --
295257 
295258 --
295259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
295260    trace
295261       (p_msg      => 'END of AcctLineType_526'
295262       ,p_level    => C_LEVEL_PROCEDURE
295263       ,p_module   => l_log_module);
295264 END IF;
295265 --
295266 EXCEPTION
295267   WHEN xla_exceptions_pkg.application_exception THEN
295268       RAISE;
295269   WHEN OTHERS THEN
295270        xla_exceptions_pkg.raise_message
295271            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_526');
295272 END AcctLineType_526;
295273 --
295274 
295275 ---------------------------------------
295276 --
295277 -- PRIVATE FUNCTION
295278 --         AcctLineType_527
295279 --
295280 ---------------------------------------
295281 PROCEDURE AcctLineType_527 (
295282   p_application_id        IN NUMBER
295283  ,p_event_id              IN NUMBER
295284  ,p_calculate_acctd_flag  IN VARCHAR2
295285  ,p_calculate_g_l_flag    IN VARCHAR2
295286  ,p_actual_flag           IN OUT VARCHAR2
295287  ,p_balance_type_code     OUT VARCHAR2
295288  ,p_gain_or_loss_ref      OUT VARCHAR2
295289  
295290 --Cost Management Default Account
295291  , p_source_11            IN NUMBER
295292 --DISTRIBUTION_IDENTIFIER
295293  , p_source_84            IN NUMBER
295294 --Distribution Type
295295  , p_source_85            IN VARCHAR2
295296  , p_source_85_meaning    IN VARCHAR2
295297 --Entered Currency Code
295298  , p_source_88            IN VARCHAR2
295299 --Entered Amount
295300  , p_source_91            IN NUMBER
295301 --Currency Conversion Date
295302  , p_source_92            IN DATE
295303 --Currency Conversion Rate
295304  , p_source_93            IN NUMBER
295305 --Currency Conversion Type
295306  , p_source_94            IN VARCHAR2
295307 --Accounted Amount
295308  , p_source_95            IN NUMBER
295309 --Accounting Line Type
295310  , p_source_97            IN NUMBER
295311 )
295312 IS
295313 
295314 l_component_type              VARCHAR2(80);
295315 l_component_code              VARCHAR2(30);
295316 l_component_type_code         VARCHAR2(1);
295317 l_component_appl_id           INTEGER;
295318 l_amb_context_code            VARCHAR2(30);
295319 l_entity_code                 VARCHAR2(30);
295320 l_event_class_code            VARCHAR2(30);
295321 l_ae_header_id                NUMBER;
295322 l_event_type_code             VARCHAR2(30);
295323 l_line_definition_code        VARCHAR2(30);
295324 l_line_definition_owner_code  VARCHAR2(1);
295325 --
295326 -- adr variables
295327 l_segment                     VARCHAR2(30);
295328 l_ccid                        NUMBER;
295329 l_adr_transaction_coa_id      NUMBER;
295330 l_adr_accounting_coa_id       NUMBER;
295331 l_adr_flexfield_segment_code  VARCHAR2(30);
295332 l_adr_flex_value_set_id       NUMBER;
295333 l_adr_value_type_code         VARCHAR2(30);
295334 l_adr_value_combination_id    NUMBER;
295335 l_adr_value_segment_code      VARCHAR2(30);
295336 
295337 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
295338 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
295339 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
295340 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
295341 
295342 -- 4262811 Variables ------------------------------------------------------------------------------------------
295343 l_entered_amt_idx             NUMBER;
295344 l_accted_amt_idx              NUMBER;
295345 l_acc_rev_flag                VARCHAR2(1);
295346 l_accrual_line_num            NUMBER;
295347 l_tmp_amt                     NUMBER;
295348 l_acc_rev_natural_side_code   VARCHAR2(1);
295349 
295350 l_num_entries                 NUMBER;
295351 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
295352 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
295353 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
295354 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
295355 l_recog_line_1                NUMBER;
295356 l_recog_line_2                NUMBER;
295357 
295358 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
295359 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
295360 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
295361 
295362 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
295363 
295364 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
295365 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
295366 
295367 ---------------------------------------------------------------------------------------------------------------
295368 
295369 
295370 --
295371 -- bulk performance
295372 --
295373 l_balance_type_code           VARCHAR2(1);
295374 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
295375 l_log_module                  VARCHAR2(240);
295376 
295377 --
295378 -- Upgrade strategy
295379 --
295380 l_actual_upg_option           VARCHAR2(1);
295381 l_enc_upg_option           VARCHAR2(1);
295382 
295383 --
295384 BEGIN
295385 --
295386 IF g_log_enabled THEN
295387       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_527';
295388 END IF;
295389 --
295390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
295391 
295392       trace
295393          (p_msg      => 'BEGIN of AcctLineType_527'
295394          ,p_level    => C_LEVEL_PROCEDURE
295395          ,p_module   => l_log_module);
295396 
295397 END IF;
295398 --
295399 l_component_type             := 'AMB_JLT';
295400 l_component_code             := 'WIP_VALUATION';
295401 l_component_type_code        := 'S';
295402 l_component_appl_id          :=  707;
295403 l_amb_context_code           := 'DEFAULT';
295404 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
295405 l_event_class_code           := 'ABSORPTION';
295406 l_event_type_code            := 'ABSORPTION_ALL';
295407 l_line_definition_owner_code := 'S';
295408 l_line_definition_code       := 'ABSORPTION';
295409 --
295410 l_balance_type_code          := 'A';
295411 l_segment                     := NULL;
295412 l_ccid                        := NULL;
295413 l_adr_transaction_coa_id      := NULL;
295414 l_adr_accounting_coa_id       := NULL;
295415 l_adr_flexfield_segment_code  := NULL;
295416 l_adr_flex_value_set_id       := NULL;
295417 l_adr_value_type_code         := NULL;
295418 l_adr_value_combination_id    := NULL;
295419 l_adr_value_segment_code      := NULL;
295420 
295421 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
295422 l_bflow_class_code           := '';    -- 4219869 Business Flow
295423 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
295424 l_budgetary_control_flag     := 'N';
295425 
295426 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
295427 l_bflow_applied_to_amt       := NULL; -- 5132302
295428 l_entered_amt_idx            := NULL;          -- 4262811
295429 l_accted_amt_idx             := NULL;          -- 4262811
295430 l_acc_rev_flag               := NULL;          -- 4262811
295431 l_accrual_line_num           := NULL;          -- 4262811
295432 l_tmp_amt                    := NULL;          -- 4262811
295433 --
295434  
295435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
295436     l_balance_type_code <> 'B' THEN
295437 IF NVL(p_source_97,9E125) =  7
295438  THEN 
295439 
295440    --
295441    XLA_AE_LINES_PKG.SetNewLine;
295442 
295443    p_balance_type_code          := l_balance_type_code;
295444    -- set the flag so later we will know whether the gain loss line needs to be created
295445    
295446    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
295447      p_actual_flag :='A';
295448    END IF;
295449 
295450    --
295451    -- bulk performance
295452    --
295453    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
295454                                       p_header_num   => 0); -- 4262811
295455    --
295456    -- set accounting line options
295457    --
295458    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
295459            p_natural_side_code          => 'D'
295460          , p_gain_or_loss_flag          => 'N'
295461          , p_gl_transfer_mode_code      => 'S'
295462          , p_acct_entry_type_code       => 'A'
295463          , p_switch_side_flag           => 'Y'
295464          , p_merge_duplicate_code       => 'N'
295465          );
295466    --
295467    l_acc_rev_natural_side_code := 'C';  -- 4262811
295468    -- 
295469    --
295470    -- set accounting line type info
295471    --
295472    xla_ae_lines_pkg.SetAcctLineType
295473       (p_component_type             => l_component_type
295474       ,p_event_type_code            => l_event_type_code
295475       ,p_line_definition_owner_code => l_line_definition_owner_code
295476       ,p_line_definition_code       => l_line_definition_code
295477       ,p_accounting_line_code       => l_component_code
295478       ,p_accounting_line_type_code  => l_component_type_code
295479       ,p_accounting_line_appl_id    => l_component_appl_id
295480       ,p_amb_context_code           => l_amb_context_code
295481       ,p_entity_code                => l_entity_code
295482       ,p_event_class_code           => l_event_class_code);
295483    --
295484    -- set accounting class
295485    --
295486    xla_ae_lines_pkg.SetAcctClass(
295487            p_accounting_class_code  => 'WIP_VALUATION'
295488          , p_ae_header_id           => l_ae_header_id
295489          );
295490 
295491    --
295492    -- set rounding class
295493    --
295494    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
295495                       'WIP_VALUATION';
295496 
295497    --
295498    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
295499    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
295500    --
295501    -- bulk performance
295502    --
295503    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
295504 
295505    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
295506       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
295507 
295508    -- 4955764
295509    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
295510       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
295511 
295512    -- 4458381 Public Sector Enh
295513    
295514    --
295515    -- set accounting attributes for the line type
295516    --
295517    l_entered_amt_idx := 3;
295518    l_accted_amt_idx  := 8;
295519    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
295520    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
295521    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
295522    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
295523    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
295524    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
295525    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
295526    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
295527    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
295528    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
295529    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
295530    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
295531    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
295532    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
295533    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
295534    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
295535    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
295536 
295537    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
295538    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
295539 
295540    ---------------------------------------------------------------------------------------------------------------
295541    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
295542    ---------------------------------------------------------------------------------------------------------------
295543    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
295544 
295545    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
295546    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
295547 
295548    IF xla_accounting_cache_pkg.GetValueChar
295549          (p_source_code         => 'LEDGER_CATEGORY_CODE'
295550          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
295551    AND l_bflow_method_code = 'PRIOR_ENTRY'
295552 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
295553    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
295554          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
295555        )
295556    THEN
295557          xla_ae_lines_pkg.BflowUpgEntry
295558            (p_business_method_code    => l_bflow_method_code
295559            ,p_business_class_code     => l_bflow_class_code
295560            ,p_balance_type            => l_balance_type_code);
295561    ELSE
295562       NULL;
295563 -- No business flow processing for business flow method of NONE.
295564    END IF;
295565 
295566    --
295567    -- call analytical criteria
295568    --
295569    
295570    --
295571    -- call description
295572    --
295573    -- No description or it is inherited.
295574    --
295575    -- call ADRs
295576    -- Bug 4922099
295577    --
295578    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
295579         (NVL(l_actual_upg_option, 'N') = 'O') OR
295580         (NVL(l_enc_upg_option, 'N') = 'O')
295581       )
295582    THEN
295583    NULL;
295584    --
295585    --
295586    
295587   l_ccid := AcctDerRule_6(
295588            p_application_id           => p_application_id
295589          , p_ae_header_id             => l_ae_header_id 
295590 , p_source_11 => p_source_11
295591          , x_transaction_coa_id       => l_adr_transaction_coa_id
295592          , x_accounting_coa_id        => l_adr_accounting_coa_id
295593          , x_value_type_code          => l_adr_value_type_code
295594          , p_side                     => 'NA'
295595    );
295596 
295597    xla_ae_lines_pkg.set_ccid(
295598     p_code_combination_id          => l_ccid
295599   , p_value_type_code              => l_adr_value_type_code
295600   , p_transaction_coa_id           => l_adr_transaction_coa_id
295601   , p_accounting_coa_id            => l_adr_accounting_coa_id
295602   , p_adr_code                     => 'CST_DEFAULT'
295603   , p_adr_type_code                => 'S'
295604   , p_component_type               => l_component_type
295605   , p_component_code               => l_component_code
295606   , p_component_type_code          => l_component_type_code
295607   , p_component_appl_id            => l_component_appl_id
295608   , p_amb_context_code             => l_amb_context_code
295609   , p_side                         => 'NA'
295610   );
295611 
295612 
295613    --
295614    --
295615    END IF;
295616    --
295617    -- Bug 4922099
295618    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
295619           (NVL(l_enc_upg_option, 'N') = 'O')
295620         ) AND
295621         (l_bflow_method_code = 'PRIOR_ENTRY')
295622       )
295623    THEN
295624       IF
295625       --
295626       1 = 2
295627       --
295628       THEN
295629       xla_accounting_err_pkg.build_message
295630                                     (p_appli_s_name            => 'XLA'
295631                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
295632                                     ,p_token_1                 => 'LINE_NUMBER'
295633                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
295634                                     ,p_token_2                 => 'LINE_TYPE_NAME'
295635                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
295636                                                                              l_component_type
295637                                                                             ,l_component_code
295638                                                                             ,l_component_type_code
295639                                                                             ,l_component_appl_id
295640                                                                             ,l_amb_context_code
295641                                                                             ,l_entity_code
295642                                                                             ,l_event_class_code
295643                                                                            )
295644                                     ,p_token_3                 => 'OWNER'
295645                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
295646                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
295647                                                                           ,p_lookup_code    => l_component_type_code
295648                                                                          )
295649                                     ,p_token_4                 => 'PRODUCT_NAME'
295650                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
295651                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
295652                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
295653                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
295654                                     ,p_ae_header_id            =>  NULL
295655                                        );
295656 
295657         IF (C_LEVEL_ERROR>= g_log_level) THEN
295658                  trace
295659                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
295660                       ,p_level    => C_LEVEL_ERROR
295661                       ,p_module   => l_log_module);
295662         END IF;
295663       END IF;
295664    END IF;
295665    --
295666    --
295667    ------------------------------------------------------------------------------------------------
295668    -- 4219869 Business Flow
295669    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
295670    -- Prior Entry.  Currently, the following code is always generated.
295671    ------------------------------------------------------------------------------------------------
295672    XLA_AE_LINES_PKG.ValidateCurrentLine;
295673 
295674    ------------------------------------------------------------------------------------
295675    -- 4219869 Business Flow
295676    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
295677    ------------------------------------------------------------------------------------
295678    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
295679 
295680    ----------------------------------------------------------------------------------
295681    -- 4219869 Business Flow
295682    -- Update journal entry status -- Need to generate this within IF <condition>
295683    ----------------------------------------------------------------------------------
295684    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
295685          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
295686          ,p_balance_type_code => l_balance_type_code
295687          );
295688 
295689    -------------------------------------------------------------------------------------------
295690    -- 4262811 - Generate the Accrual Reversal lines
295691    -------------------------------------------------------------------------------------------
295692    BEGIN
295693       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
295694                               (g_array_event(p_event_id).array_value_num('header_index'));
295695       IF l_acc_rev_flag IS NULL THEN
295696          l_acc_rev_flag := 'N';
295697       END IF;
295698    EXCEPTION
295699       WHEN OTHERS THEN
295700          l_acc_rev_flag := 'N';
295701    END;
295702    --
295703    IF (l_acc_rev_flag = 'Y') THEN
295704 
295705        -- 4645092  ------------------------------------------------------------------------------
295706        -- To allow MPA report to determine if it should generate report process
295707        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
295708        ------------------------------------------------------------------------------------------
295709 
295710        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
295711        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
295712    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
295713    -- call ADRs
295714    -- Bug 4922099
295715    --
295716    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
295717         (NVL(l_actual_upg_option, 'N') = 'O') OR
295718         (NVL(l_enc_upg_option, 'N') = 'O')
295719       )
295720    THEN
295721    NULL;
295722    --
295723    --
295724    
295725   l_ccid := AcctDerRule_6(
295726            p_application_id           => p_application_id
295727          , p_ae_header_id             => l_ae_header_id 
295728 , p_source_11 => p_source_11
295729          , x_transaction_coa_id       => l_adr_transaction_coa_id
295730          , x_accounting_coa_id        => l_adr_accounting_coa_id
295731          , x_value_type_code          => l_adr_value_type_code
295732          , p_side                     => 'NA'
295733    );
295734 
295735    xla_ae_lines_pkg.set_ccid(
295736     p_code_combination_id          => l_ccid
295737   , p_value_type_code              => l_adr_value_type_code
295738   , p_transaction_coa_id           => l_adr_transaction_coa_id
295739   , p_accounting_coa_id            => l_adr_accounting_coa_id
295740   , p_adr_code                     => 'CST_DEFAULT'
295741   , p_adr_type_code                => 'S'
295742   , p_component_type               => l_component_type
295743   , p_component_code               => l_component_code
295744   , p_component_type_code          => l_component_type_code
295745   , p_component_appl_id            => l_component_appl_id
295746   , p_amb_context_code             => l_amb_context_code
295747   , p_side                         => 'NA'
295748   );
295749 
295750 
295751    --
295752    --
295753    END IF;
295754 
295755        --
295756        -- Update the line information that should be overwritten
295757        --
295758        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
295759                                          p_header_num   => 1);
295760        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
295761 
295762        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
295763 
295764        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
295765           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
295766        END IF;
295767 
295768       --
295769       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
295770       --
295771       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
295772           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
295773       ELSE
295774           ---------------------------------------------------------------------------------------------------
295775           -- 4262811a Switch Sign
295776           ---------------------------------------------------------------------------------------------------
295777           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
295778           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
295779                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
295780           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
295781                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
295782           -- 5132302
295783           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
295784                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
295785 
295786       END IF;
295787 
295788       -- 4955764
295789       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
295790       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
295791 
295792 
295793       XLA_AE_LINES_PKG.ValidateCurrentLine;
295794       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
295795 
295796       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
295797                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
295798                ,p_balance_type_code => l_balance_type_code);
295799 
295800    END IF;
295801 
295802    -----------------------------------------------------------------------------------------
295803    -- 4262811 Multiperiod Accounting
295804    -----------------------------------------------------------------------------------------
295805      -- No MPA option is assigned.
295806 
295807 
295808 END IF;
295809 END IF;
295810 --
295811 
295812 --
295813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
295814    trace
295815       (p_msg      => 'END of AcctLineType_527'
295816       ,p_level    => C_LEVEL_PROCEDURE
295817       ,p_module   => l_log_module);
295818 END IF;
295819 --
295820 EXCEPTION
295821   WHEN xla_exceptions_pkg.application_exception THEN
295822       RAISE;
295823   WHEN OTHERS THEN
295824        xla_exceptions_pkg.raise_message
295825            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_527');
295826 END AcctLineType_527;
295827 --
295828 
295829 ---------------------------------------
295830 --
295831 -- PRIVATE FUNCTION
295832 --         AcctLineType_528
295833 --
295834 ---------------------------------------
295835 PROCEDURE AcctLineType_528 (
295836   p_application_id        IN NUMBER
295837  ,p_event_id              IN NUMBER
295838  ,p_calculate_acctd_flag  IN VARCHAR2
295839  ,p_calculate_g_l_flag    IN VARCHAR2
295840  ,p_actual_flag           IN OUT VARCHAR2
295841  ,p_balance_type_code     OUT VARCHAR2
295842  ,p_gain_or_loss_ref      OUT VARCHAR2
295843  
295844 --TRANSACTION_ID
295845  , p_source_1            IN NUMBER
295846 --Item Concatenated Segments
295847  , p_source_2            IN VARCHAR2
295848 --Transaction Quantity
295849  , p_source_3            IN NUMBER
295850 --Transaction Unit of Measure Code
295851  , p_source_4            IN VARCHAR2
295852 --Inventory Transaction Type Description
295853  , p_source_5            IN VARCHAR2
295854 --Cost Management Default Account
295855  , p_source_11            IN NUMBER
295856 --DISTRIBUTION_IDENTIFIER
295857  , p_source_84            IN NUMBER
295858 --Distribution Type
295859  , p_source_85            IN VARCHAR2
295860  , p_source_85_meaning    IN VARCHAR2
295861 --Entered Currency Code
295862  , p_source_88            IN VARCHAR2
295863 --Entered Amount
295864  , p_source_91            IN NUMBER
295865 --Currency Conversion Date
295866  , p_source_92            IN DATE
295867 --Currency Conversion Rate
295868  , p_source_93            IN NUMBER
295869 --Currency Conversion Type
295870  , p_source_94            IN VARCHAR2
295871 --Accounted Amount
295872  , p_source_95            IN NUMBER
295873 --Accounting Line Type
295874  , p_source_97            IN NUMBER
295875 )
295876 IS
295877 
295878 l_component_type              VARCHAR2(80);
295879 l_component_code              VARCHAR2(30);
295880 l_component_type_code         VARCHAR2(1);
295881 l_component_appl_id           INTEGER;
295882 l_amb_context_code            VARCHAR2(30);
295883 l_entity_code                 VARCHAR2(30);
295884 l_event_class_code            VARCHAR2(30);
295885 l_ae_header_id                NUMBER;
295886 l_event_type_code             VARCHAR2(30);
295887 l_line_definition_code        VARCHAR2(30);
295888 l_line_definition_owner_code  VARCHAR2(1);
295889 --
295890 -- adr variables
295891 l_segment                     VARCHAR2(30);
295892 l_ccid                        NUMBER;
295893 l_adr_transaction_coa_id      NUMBER;
295894 l_adr_accounting_coa_id       NUMBER;
295895 l_adr_flexfield_segment_code  VARCHAR2(30);
295896 l_adr_flex_value_set_id       NUMBER;
295897 l_adr_value_type_code         VARCHAR2(30);
295898 l_adr_value_combination_id    NUMBER;
295899 l_adr_value_segment_code      VARCHAR2(30);
295900 
295901 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
295902 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
295903 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
295904 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
295905 
295906 -- 4262811 Variables ------------------------------------------------------------------------------------------
295907 l_entered_amt_idx             NUMBER;
295908 l_accted_amt_idx              NUMBER;
295909 l_acc_rev_flag                VARCHAR2(1);
295910 l_accrual_line_num            NUMBER;
295911 l_tmp_amt                     NUMBER;
295912 l_acc_rev_natural_side_code   VARCHAR2(1);
295913 
295914 l_num_entries                 NUMBER;
295915 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
295916 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
295917 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
295918 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
295919 l_recog_line_1                NUMBER;
295920 l_recog_line_2                NUMBER;
295921 
295922 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
295923 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
295924 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
295925 
295926 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
295927 
295928 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
295929 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
295930 
295931 ---------------------------------------------------------------------------------------------------------------
295932 
295933 
295934 --
295935 -- bulk performance
295936 --
295937 l_balance_type_code           VARCHAR2(1);
295938 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
295939 l_log_module                  VARCHAR2(240);
295940 
295941 --
295942 -- Upgrade strategy
295943 --
295944 l_actual_upg_option           VARCHAR2(1);
295945 l_enc_upg_option           VARCHAR2(1);
295946 
295947 --
295948 BEGIN
295949 --
295950 IF g_log_enabled THEN
295951       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_528';
295952 END IF;
295953 --
295954 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
295955 
295956       trace
295957          (p_msg      => 'BEGIN of AcctLineType_528'
295958          ,p_level    => C_LEVEL_PROCEDURE
295959          ,p_module   => l_log_module);
295960 
295961 END IF;
295962 --
295963 l_component_type             := 'AMB_JLT';
295964 l_component_code             := 'WIP_VALUATION';
295965 l_component_type_code        := 'S';
295966 l_component_appl_id          :=  707;
295967 l_amb_context_code           := 'DEFAULT';
295968 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
295969 l_event_class_code           := 'WIP_MTL';
295970 l_event_type_code            := 'WIP_ASSEMBLY_COMPLETION';
295971 l_line_definition_owner_code := 'S';
295972 l_line_definition_code       := 'PI_WIP_ASSEMBLY_COMPLETION';
295973 --
295974 l_balance_type_code          := 'A';
295975 l_segment                     := NULL;
295976 l_ccid                        := NULL;
295977 l_adr_transaction_coa_id      := NULL;
295978 l_adr_accounting_coa_id       := NULL;
295979 l_adr_flexfield_segment_code  := NULL;
295980 l_adr_flex_value_set_id       := NULL;
295981 l_adr_value_type_code         := NULL;
295982 l_adr_value_combination_id    := NULL;
295983 l_adr_value_segment_code      := NULL;
295984 
295985 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
295986 l_bflow_class_code           := '';    -- 4219869 Business Flow
295987 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
295988 l_budgetary_control_flag     := 'N';
295989 
295990 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
295991 l_bflow_applied_to_amt       := NULL; -- 5132302
295992 l_entered_amt_idx            := NULL;          -- 4262811
295993 l_accted_amt_idx             := NULL;          -- 4262811
295994 l_acc_rev_flag               := NULL;          -- 4262811
295995 l_accrual_line_num           := NULL;          -- 4262811
295996 l_tmp_amt                    := NULL;          -- 4262811
295997 --
295998  
295999 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
296000     l_balance_type_code <> 'B' THEN
296001 IF NVL(p_source_97,9E125) =  7
296002  THEN 
296003 
296004    --
296005    XLA_AE_LINES_PKG.SetNewLine;
296006 
296007    p_balance_type_code          := l_balance_type_code;
296008    -- set the flag so later we will know whether the gain loss line needs to be created
296009    
296010    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
296011      p_actual_flag :='A';
296012    END IF;
296013 
296014    --
296015    -- bulk performance
296016    --
296017    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
296018                                       p_header_num   => 0); -- 4262811
296019    --
296020    -- set accounting line options
296021    --
296022    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
296023            p_natural_side_code          => 'D'
296024          , p_gain_or_loss_flag          => 'N'
296025          , p_gl_transfer_mode_code      => 'S'
296026          , p_acct_entry_type_code       => 'A'
296027          , p_switch_side_flag           => 'Y'
296028          , p_merge_duplicate_code       => 'N'
296029          );
296030    --
296031    l_acc_rev_natural_side_code := 'C';  -- 4262811
296032    -- 
296033    --
296034    -- set accounting line type info
296035    --
296036    xla_ae_lines_pkg.SetAcctLineType
296037       (p_component_type             => l_component_type
296038       ,p_event_type_code            => l_event_type_code
296039       ,p_line_definition_owner_code => l_line_definition_owner_code
296040       ,p_line_definition_code       => l_line_definition_code
296041       ,p_accounting_line_code       => l_component_code
296042       ,p_accounting_line_type_code  => l_component_type_code
296043       ,p_accounting_line_appl_id    => l_component_appl_id
296044       ,p_amb_context_code           => l_amb_context_code
296045       ,p_entity_code                => l_entity_code
296046       ,p_event_class_code           => l_event_class_code);
296047    --
296048    -- set accounting class
296049    --
296050    xla_ae_lines_pkg.SetAcctClass(
296051            p_accounting_class_code  => 'WIP_VALUATION'
296052          , p_ae_header_id           => l_ae_header_id
296053          );
296054 
296055    --
296056    -- set rounding class
296057    --
296058    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
296059                       'WIP_VALUATION';
296060 
296061    --
296062    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
296063    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
296064    --
296065    -- bulk performance
296066    --
296067    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
296068 
296069    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
296070       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
296071 
296072    -- 4955764
296073    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
296074       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
296075 
296076    -- 4458381 Public Sector Enh
296077    
296078    --
296079    -- set accounting attributes for the line type
296080    --
296081    l_entered_amt_idx := 3;
296082    l_accted_amt_idx  := 8;
296083    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
296084    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
296085    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
296086    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
296087    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
296088    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
296089    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
296090    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
296091    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
296092    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
296093    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
296094    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
296095    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
296096    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
296097    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
296098    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
296099    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
296100 
296101    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
296102    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
296103 
296104    ---------------------------------------------------------------------------------------------------------------
296105    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
296106    ---------------------------------------------------------------------------------------------------------------
296107    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
296108 
296109    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
296110    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
296111 
296112    IF xla_accounting_cache_pkg.GetValueChar
296113          (p_source_code         => 'LEDGER_CATEGORY_CODE'
296114          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
296115    AND l_bflow_method_code = 'PRIOR_ENTRY'
296116 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
296117    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
296118          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
296119        )
296120    THEN
296121          xla_ae_lines_pkg.BflowUpgEntry
296122            (p_business_method_code    => l_bflow_method_code
296123            ,p_business_class_code     => l_bflow_class_code
296124            ,p_balance_type            => l_balance_type_code);
296125    ELSE
296126       NULL;
296127 -- No business flow processing for business flow method of NONE.
296128    END IF;
296129 
296130    --
296131    -- call analytical criteria
296132    --
296133    
296134    --
296135    -- call description
296136    --
296137    
296138 xla_ae_lines_pkg.SetLineDescription(
296139    p_ae_header_id => l_ae_header_id
296140   ,p_description  => Description_1 (
296141      p_application_id         => p_application_id
296142    , p_ae_header_id           => l_ae_header_id 
296143 , p_source_1 => p_source_1
296144 , p_source_2 => p_source_2
296145 , p_source_3 => p_source_3
296146 , p_source_4 => p_source_4
296147 , p_source_5 => p_source_5
296148    )
296149 );
296150 
296151 
296152    --
296153    -- call ADRs
296154    -- Bug 4922099
296155    --
296156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
296157         (NVL(l_actual_upg_option, 'N') = 'O') OR
296158         (NVL(l_enc_upg_option, 'N') = 'O')
296159       )
296160    THEN
296161    NULL;
296162    --
296163    --
296164    
296165   l_ccid := AcctDerRule_6(
296166            p_application_id           => p_application_id
296167          , p_ae_header_id             => l_ae_header_id 
296168 , p_source_11 => p_source_11
296169          , x_transaction_coa_id       => l_adr_transaction_coa_id
296170          , x_accounting_coa_id        => l_adr_accounting_coa_id
296171          , x_value_type_code          => l_adr_value_type_code
296172          , p_side                     => 'NA'
296173    );
296174 
296175    xla_ae_lines_pkg.set_ccid(
296176     p_code_combination_id          => l_ccid
296177   , p_value_type_code              => l_adr_value_type_code
296178   , p_transaction_coa_id           => l_adr_transaction_coa_id
296179   , p_accounting_coa_id            => l_adr_accounting_coa_id
296180   , p_adr_code                     => 'CST_DEFAULT'
296181   , p_adr_type_code                => 'S'
296182   , p_component_type               => l_component_type
296183   , p_component_code               => l_component_code
296184   , p_component_type_code          => l_component_type_code
296185   , p_component_appl_id            => l_component_appl_id
296186   , p_amb_context_code             => l_amb_context_code
296187   , p_side                         => 'NA'
296188   );
296189 
296190 
296191    --
296192    --
296193    END IF;
296194    --
296195    -- Bug 4922099
296196    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
296197           (NVL(l_enc_upg_option, 'N') = 'O')
296198         ) AND
296199         (l_bflow_method_code = 'PRIOR_ENTRY')
296200       )
296201    THEN
296202       IF
296203       --
296204       1 = 2
296205       --
296206       THEN
296207       xla_accounting_err_pkg.build_message
296208                                     (p_appli_s_name            => 'XLA'
296209                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
296210                                     ,p_token_1                 => 'LINE_NUMBER'
296211                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
296212                                     ,p_token_2                 => 'LINE_TYPE_NAME'
296213                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
296214                                                                              l_component_type
296215                                                                             ,l_component_code
296216                                                                             ,l_component_type_code
296217                                                                             ,l_component_appl_id
296218                                                                             ,l_amb_context_code
296219                                                                             ,l_entity_code
296220                                                                             ,l_event_class_code
296221                                                                            )
296222                                     ,p_token_3                 => 'OWNER'
296223                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
296224                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
296225                                                                           ,p_lookup_code    => l_component_type_code
296226                                                                          )
296227                                     ,p_token_4                 => 'PRODUCT_NAME'
296228                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
296229                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
296230                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
296231                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
296232                                     ,p_ae_header_id            =>  NULL
296233                                        );
296234 
296235         IF (C_LEVEL_ERROR>= g_log_level) THEN
296236                  trace
296237                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
296238                       ,p_level    => C_LEVEL_ERROR
296239                       ,p_module   => l_log_module);
296240         END IF;
296241       END IF;
296242    END IF;
296243    --
296244    --
296245    ------------------------------------------------------------------------------------------------
296246    -- 4219869 Business Flow
296247    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
296248    -- Prior Entry.  Currently, the following code is always generated.
296249    ------------------------------------------------------------------------------------------------
296250    XLA_AE_LINES_PKG.ValidateCurrentLine;
296251 
296252    ------------------------------------------------------------------------------------
296253    -- 4219869 Business Flow
296254    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
296255    ------------------------------------------------------------------------------------
296256    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
296257 
296258    ----------------------------------------------------------------------------------
296259    -- 4219869 Business Flow
296260    -- Update journal entry status -- Need to generate this within IF <condition>
296261    ----------------------------------------------------------------------------------
296262    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
296263          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
296264          ,p_balance_type_code => l_balance_type_code
296265          );
296266 
296267    -------------------------------------------------------------------------------------------
296268    -- 4262811 - Generate the Accrual Reversal lines
296269    -------------------------------------------------------------------------------------------
296270    BEGIN
296271       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
296272                               (g_array_event(p_event_id).array_value_num('header_index'));
296273       IF l_acc_rev_flag IS NULL THEN
296274          l_acc_rev_flag := 'N';
296275       END IF;
296276    EXCEPTION
296277       WHEN OTHERS THEN
296278          l_acc_rev_flag := 'N';
296279    END;
296280    --
296281    IF (l_acc_rev_flag = 'Y') THEN
296282 
296283        -- 4645092  ------------------------------------------------------------------------------
296284        -- To allow MPA report to determine if it should generate report process
296285        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
296286        ------------------------------------------------------------------------------------------
296287 
296288        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
296289        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
296290    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
296291    -- call ADRs
296292    -- Bug 4922099
296293    --
296294    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
296295         (NVL(l_actual_upg_option, 'N') = 'O') OR
296296         (NVL(l_enc_upg_option, 'N') = 'O')
296297       )
296298    THEN
296299    NULL;
296300    --
296301    --
296302    
296303   l_ccid := AcctDerRule_6(
296304            p_application_id           => p_application_id
296305          , p_ae_header_id             => l_ae_header_id 
296306 , p_source_11 => p_source_11
296307          , x_transaction_coa_id       => l_adr_transaction_coa_id
296308          , x_accounting_coa_id        => l_adr_accounting_coa_id
296309          , x_value_type_code          => l_adr_value_type_code
296310          , p_side                     => 'NA'
296311    );
296312 
296313    xla_ae_lines_pkg.set_ccid(
296314     p_code_combination_id          => l_ccid
296315   , p_value_type_code              => l_adr_value_type_code
296316   , p_transaction_coa_id           => l_adr_transaction_coa_id
296317   , p_accounting_coa_id            => l_adr_accounting_coa_id
296318   , p_adr_code                     => 'CST_DEFAULT'
296319   , p_adr_type_code                => 'S'
296320   , p_component_type               => l_component_type
296321   , p_component_code               => l_component_code
296322   , p_component_type_code          => l_component_type_code
296323   , p_component_appl_id            => l_component_appl_id
296324   , p_amb_context_code             => l_amb_context_code
296325   , p_side                         => 'NA'
296326   );
296327 
296328 
296329    --
296330    --
296331    END IF;
296332 
296333        --
296334        -- Update the line information that should be overwritten
296335        --
296336        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
296337                                          p_header_num   => 1);
296338        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
296339 
296340        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
296341 
296342        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
296343           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
296344        END IF;
296345 
296346       --
296347       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
296348       --
296349       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
296350           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
296351       ELSE
296352           ---------------------------------------------------------------------------------------------------
296353           -- 4262811a Switch Sign
296354           ---------------------------------------------------------------------------------------------------
296355           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
296356           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
296357                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
296358           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
296359                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
296360           -- 5132302
296361           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
296362                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
296363 
296364       END IF;
296365 
296366       -- 4955764
296367       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
296368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
296369 
296370 
296371       XLA_AE_LINES_PKG.ValidateCurrentLine;
296372       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
296373 
296374       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
296375                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
296376                ,p_balance_type_code => l_balance_type_code);
296377 
296378    END IF;
296379 
296380    -----------------------------------------------------------------------------------------
296381    -- 4262811 Multiperiod Accounting
296382    -----------------------------------------------------------------------------------------
296383      -- No MPA option is assigned.
296384 
296385 
296386 END IF;
296387 END IF;
296388 --
296389 
296390 --
296391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
296392    trace
296393       (p_msg      => 'END of AcctLineType_528'
296394       ,p_level    => C_LEVEL_PROCEDURE
296395       ,p_module   => l_log_module);
296396 END IF;
296397 --
296398 EXCEPTION
296399   WHEN xla_exceptions_pkg.application_exception THEN
296400       RAISE;
296401   WHEN OTHERS THEN
296402        xla_exceptions_pkg.raise_message
296403            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_528');
296404 END AcctLineType_528;
296405 --
296406 
296407 ---------------------------------------
296408 --
296409 -- PRIVATE FUNCTION
296410 --         AcctLineType_529
296411 --
296412 ---------------------------------------
296413 PROCEDURE AcctLineType_529 (
296414   p_application_id        IN NUMBER
296415  ,p_event_id              IN NUMBER
296416  ,p_calculate_acctd_flag  IN VARCHAR2
296417  ,p_calculate_g_l_flag    IN VARCHAR2
296418  ,p_actual_flag           IN OUT VARCHAR2
296419  ,p_balance_type_code     OUT VARCHAR2
296420  ,p_gain_or_loss_ref      OUT VARCHAR2
296421  
296422 --Cost Management Default Account
296423  , p_source_11            IN NUMBER
296424 --DISTRIBUTION_IDENTIFIER
296425  , p_source_84            IN NUMBER
296426 --Distribution Type
296427  , p_source_85            IN VARCHAR2
296428  , p_source_85_meaning    IN VARCHAR2
296429 --Entered Currency Code
296430  , p_source_88            IN VARCHAR2
296431 --Entered Amount
296432  , p_source_91            IN NUMBER
296433 --Currency Conversion Date
296434  , p_source_92            IN DATE
296435 --Currency Conversion Rate
296436  , p_source_93            IN NUMBER
296437 --Currency Conversion Type
296438  , p_source_94            IN VARCHAR2
296439 --Accounted Amount
296440  , p_source_95            IN NUMBER
296441 --Accounting Line Type
296442  , p_source_97            IN NUMBER
296443 )
296444 IS
296445 
296446 l_component_type              VARCHAR2(80);
296447 l_component_code              VARCHAR2(30);
296448 l_component_type_code         VARCHAR2(1);
296449 l_component_appl_id           INTEGER;
296450 l_amb_context_code            VARCHAR2(30);
296451 l_entity_code                 VARCHAR2(30);
296452 l_event_class_code            VARCHAR2(30);
296453 l_ae_header_id                NUMBER;
296454 l_event_type_code             VARCHAR2(30);
296455 l_line_definition_code        VARCHAR2(30);
296456 l_line_definition_owner_code  VARCHAR2(1);
296457 --
296458 -- adr variables
296459 l_segment                     VARCHAR2(30);
296460 l_ccid                        NUMBER;
296461 l_adr_transaction_coa_id      NUMBER;
296462 l_adr_accounting_coa_id       NUMBER;
296463 l_adr_flexfield_segment_code  VARCHAR2(30);
296464 l_adr_flex_value_set_id       NUMBER;
296465 l_adr_value_type_code         VARCHAR2(30);
296466 l_adr_value_combination_id    NUMBER;
296467 l_adr_value_segment_code      VARCHAR2(30);
296468 
296469 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
296470 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
296471 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
296472 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
296473 
296474 -- 4262811 Variables ------------------------------------------------------------------------------------------
296475 l_entered_amt_idx             NUMBER;
296476 l_accted_amt_idx              NUMBER;
296477 l_acc_rev_flag                VARCHAR2(1);
296478 l_accrual_line_num            NUMBER;
296479 l_tmp_amt                     NUMBER;
296480 l_acc_rev_natural_side_code   VARCHAR2(1);
296481 
296482 l_num_entries                 NUMBER;
296483 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
296484 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
296485 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
296486 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
296487 l_recog_line_1                NUMBER;
296488 l_recog_line_2                NUMBER;
296489 
296490 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
296491 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
296492 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
296493 
296494 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
296495 
296496 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
296497 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
296498 
296499 ---------------------------------------------------------------------------------------------------------------
296500 
296501 
296502 --
296503 -- bulk performance
296504 --
296505 l_balance_type_code           VARCHAR2(1);
296506 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
296507 l_log_module                  VARCHAR2(240);
296508 
296509 --
296510 -- Upgrade strategy
296511 --
296512 l_actual_upg_option           VARCHAR2(1);
296513 l_enc_upg_option           VARCHAR2(1);
296514 
296515 --
296516 BEGIN
296517 --
296518 IF g_log_enabled THEN
296519       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_529';
296520 END IF;
296521 --
296522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
296523 
296524       trace
296525          (p_msg      => 'BEGIN of AcctLineType_529'
296526          ,p_level    => C_LEVEL_PROCEDURE
296527          ,p_module   => l_log_module);
296528 
296529 END IF;
296530 --
296531 l_component_type             := 'AMB_JLT';
296532 l_component_code             := 'WIP_VALUATION';
296533 l_component_type_code        := 'S';
296534 l_component_appl_id          :=  707;
296535 l_amb_context_code           := 'DEFAULT';
296536 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
296537 l_event_class_code           := 'WIP_COST_UPD';
296538 l_event_type_code            := 'WIP_COST_UPD_ALL';
296539 l_line_definition_owner_code := 'S';
296540 l_line_definition_code       := 'COST_UPDATE';
296541 --
296542 l_balance_type_code          := 'A';
296543 l_segment                     := NULL;
296544 l_ccid                        := NULL;
296545 l_adr_transaction_coa_id      := NULL;
296546 l_adr_accounting_coa_id       := NULL;
296547 l_adr_flexfield_segment_code  := NULL;
296548 l_adr_flex_value_set_id       := NULL;
296549 l_adr_value_type_code         := NULL;
296550 l_adr_value_combination_id    := NULL;
296551 l_adr_value_segment_code      := NULL;
296552 
296553 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
296554 l_bflow_class_code           := '';    -- 4219869 Business Flow
296555 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
296556 l_budgetary_control_flag     := 'N';
296557 
296558 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
296559 l_bflow_applied_to_amt       := NULL; -- 5132302
296560 l_entered_amt_idx            := NULL;          -- 4262811
296561 l_accted_amt_idx             := NULL;          -- 4262811
296562 l_acc_rev_flag               := NULL;          -- 4262811
296563 l_accrual_line_num           := NULL;          -- 4262811
296564 l_tmp_amt                    := NULL;          -- 4262811
296565 --
296566  
296567 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
296568     l_balance_type_code <> 'B' THEN
296569 IF NVL(p_source_97,9E125) =  7
296570  THEN 
296571 
296572    --
296573    XLA_AE_LINES_PKG.SetNewLine;
296574 
296575    p_balance_type_code          := l_balance_type_code;
296576    -- set the flag so later we will know whether the gain loss line needs to be created
296577    
296578    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
296579      p_actual_flag :='A';
296580    END IF;
296581 
296582    --
296583    -- bulk performance
296584    --
296585    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
296586                                       p_header_num   => 0); -- 4262811
296587    --
296588    -- set accounting line options
296589    --
296590    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
296591            p_natural_side_code          => 'D'
296592          , p_gain_or_loss_flag          => 'N'
296593          , p_gl_transfer_mode_code      => 'S'
296594          , p_acct_entry_type_code       => 'A'
296595          , p_switch_side_flag           => 'Y'
296596          , p_merge_duplicate_code       => 'N'
296597          );
296598    --
296599    l_acc_rev_natural_side_code := 'C';  -- 4262811
296600    -- 
296601    --
296602    -- set accounting line type info
296603    --
296604    xla_ae_lines_pkg.SetAcctLineType
296605       (p_component_type             => l_component_type
296606       ,p_event_type_code            => l_event_type_code
296607       ,p_line_definition_owner_code => l_line_definition_owner_code
296608       ,p_line_definition_code       => l_line_definition_code
296609       ,p_accounting_line_code       => l_component_code
296610       ,p_accounting_line_type_code  => l_component_type_code
296611       ,p_accounting_line_appl_id    => l_component_appl_id
296612       ,p_amb_context_code           => l_amb_context_code
296613       ,p_entity_code                => l_entity_code
296614       ,p_event_class_code           => l_event_class_code);
296615    --
296616    -- set accounting class
296617    --
296618    xla_ae_lines_pkg.SetAcctClass(
296619            p_accounting_class_code  => 'WIP_VALUATION'
296620          , p_ae_header_id           => l_ae_header_id
296621          );
296622 
296623    --
296624    -- set rounding class
296625    --
296626    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
296627                       'WIP_VALUATION';
296628 
296629    --
296630    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
296631    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
296632    --
296633    -- bulk performance
296634    --
296635    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
296636 
296637    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
296638       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
296639 
296640    -- 4955764
296641    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
296642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
296643 
296644    -- 4458381 Public Sector Enh
296645    
296646    --
296647    -- set accounting attributes for the line type
296648    --
296649    l_entered_amt_idx := 3;
296650    l_accted_amt_idx  := 8;
296651    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
296652    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
296653    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
296654    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
296655    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
296656    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
296657    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
296658    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
296659    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
296660    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
296661    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
296662    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
296663    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
296664    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
296665    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
296666    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
296667    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
296668 
296669    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
296670    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
296671 
296672    ---------------------------------------------------------------------------------------------------------------
296673    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
296674    ---------------------------------------------------------------------------------------------------------------
296675    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
296676 
296677    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
296678    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
296679 
296680    IF xla_accounting_cache_pkg.GetValueChar
296681          (p_source_code         => 'LEDGER_CATEGORY_CODE'
296682          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
296683    AND l_bflow_method_code = 'PRIOR_ENTRY'
296684 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
296685    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
296686          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
296687        )
296688    THEN
296689          xla_ae_lines_pkg.BflowUpgEntry
296690            (p_business_method_code    => l_bflow_method_code
296691            ,p_business_class_code     => l_bflow_class_code
296692            ,p_balance_type            => l_balance_type_code);
296693    ELSE
296694       NULL;
296695 -- No business flow processing for business flow method of NONE.
296696    END IF;
296697 
296698    --
296699    -- call analytical criteria
296700    --
296701    
296702    --
296703    -- call description
296704    --
296705    -- No description or it is inherited.
296706    --
296707    -- call ADRs
296708    -- Bug 4922099
296709    --
296710    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
296711         (NVL(l_actual_upg_option, 'N') = 'O') OR
296712         (NVL(l_enc_upg_option, 'N') = 'O')
296713       )
296714    THEN
296715    NULL;
296716    --
296717    --
296718    
296719   l_ccid := AcctDerRule_6(
296720            p_application_id           => p_application_id
296721          , p_ae_header_id             => l_ae_header_id 
296722 , p_source_11 => p_source_11
296723          , x_transaction_coa_id       => l_adr_transaction_coa_id
296724          , x_accounting_coa_id        => l_adr_accounting_coa_id
296725          , x_value_type_code          => l_adr_value_type_code
296726          , p_side                     => 'NA'
296727    );
296728 
296729    xla_ae_lines_pkg.set_ccid(
296730     p_code_combination_id          => l_ccid
296731   , p_value_type_code              => l_adr_value_type_code
296732   , p_transaction_coa_id           => l_adr_transaction_coa_id
296733   , p_accounting_coa_id            => l_adr_accounting_coa_id
296734   , p_adr_code                     => 'CST_DEFAULT'
296735   , p_adr_type_code                => 'S'
296736   , p_component_type               => l_component_type
296737   , p_component_code               => l_component_code
296738   , p_component_type_code          => l_component_type_code
296739   , p_component_appl_id            => l_component_appl_id
296740   , p_amb_context_code             => l_amb_context_code
296741   , p_side                         => 'NA'
296742   );
296743 
296744 
296745    --
296746    --
296747    END IF;
296748    --
296749    -- Bug 4922099
296750    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
296751           (NVL(l_enc_upg_option, 'N') = 'O')
296752         ) AND
296753         (l_bflow_method_code = 'PRIOR_ENTRY')
296754       )
296755    THEN
296756       IF
296757       --
296758       1 = 2
296759       --
296760       THEN
296761       xla_accounting_err_pkg.build_message
296762                                     (p_appli_s_name            => 'XLA'
296763                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
296764                                     ,p_token_1                 => 'LINE_NUMBER'
296765                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
296766                                     ,p_token_2                 => 'LINE_TYPE_NAME'
296767                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
296768                                                                              l_component_type
296769                                                                             ,l_component_code
296770                                                                             ,l_component_type_code
296771                                                                             ,l_component_appl_id
296772                                                                             ,l_amb_context_code
296773                                                                             ,l_entity_code
296774                                                                             ,l_event_class_code
296775                                                                            )
296776                                     ,p_token_3                 => 'OWNER'
296777                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
296778                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
296779                                                                           ,p_lookup_code    => l_component_type_code
296780                                                                          )
296781                                     ,p_token_4                 => 'PRODUCT_NAME'
296782                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
296783                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
296784                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
296785                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
296786                                     ,p_ae_header_id            =>  NULL
296787                                        );
296788 
296789         IF (C_LEVEL_ERROR>= g_log_level) THEN
296790                  trace
296791                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
296792                       ,p_level    => C_LEVEL_ERROR
296793                       ,p_module   => l_log_module);
296794         END IF;
296795       END IF;
296796    END IF;
296797    --
296798    --
296799    ------------------------------------------------------------------------------------------------
296800    -- 4219869 Business Flow
296801    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
296802    -- Prior Entry.  Currently, the following code is always generated.
296803    ------------------------------------------------------------------------------------------------
296804    XLA_AE_LINES_PKG.ValidateCurrentLine;
296805 
296806    ------------------------------------------------------------------------------------
296807    -- 4219869 Business Flow
296808    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
296809    ------------------------------------------------------------------------------------
296810    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
296811 
296812    ----------------------------------------------------------------------------------
296813    -- 4219869 Business Flow
296814    -- Update journal entry status -- Need to generate this within IF <condition>
296815    ----------------------------------------------------------------------------------
296816    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
296817          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
296818          ,p_balance_type_code => l_balance_type_code
296819          );
296820 
296821    -------------------------------------------------------------------------------------------
296822    -- 4262811 - Generate the Accrual Reversal lines
296823    -------------------------------------------------------------------------------------------
296824    BEGIN
296825       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
296826                               (g_array_event(p_event_id).array_value_num('header_index'));
296827       IF l_acc_rev_flag IS NULL THEN
296828          l_acc_rev_flag := 'N';
296829       END IF;
296830    EXCEPTION
296831       WHEN OTHERS THEN
296832          l_acc_rev_flag := 'N';
296833    END;
296834    --
296835    IF (l_acc_rev_flag = 'Y') THEN
296836 
296837        -- 4645092  ------------------------------------------------------------------------------
296838        -- To allow MPA report to determine if it should generate report process
296839        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
296840        ------------------------------------------------------------------------------------------
296841 
296842        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
296843        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
296844    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
296845    -- call ADRs
296846    -- Bug 4922099
296847    --
296848    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
296849         (NVL(l_actual_upg_option, 'N') = 'O') OR
296850         (NVL(l_enc_upg_option, 'N') = 'O')
296851       )
296852    THEN
296853    NULL;
296854    --
296855    --
296856    
296857   l_ccid := AcctDerRule_6(
296858            p_application_id           => p_application_id
296859          , p_ae_header_id             => l_ae_header_id 
296860 , p_source_11 => p_source_11
296861          , x_transaction_coa_id       => l_adr_transaction_coa_id
296862          , x_accounting_coa_id        => l_adr_accounting_coa_id
296863          , x_value_type_code          => l_adr_value_type_code
296864          , p_side                     => 'NA'
296865    );
296866 
296867    xla_ae_lines_pkg.set_ccid(
296868     p_code_combination_id          => l_ccid
296869   , p_value_type_code              => l_adr_value_type_code
296870   , p_transaction_coa_id           => l_adr_transaction_coa_id
296871   , p_accounting_coa_id            => l_adr_accounting_coa_id
296872   , p_adr_code                     => 'CST_DEFAULT'
296873   , p_adr_type_code                => 'S'
296874   , p_component_type               => l_component_type
296875   , p_component_code               => l_component_code
296876   , p_component_type_code          => l_component_type_code
296877   , p_component_appl_id            => l_component_appl_id
296878   , p_amb_context_code             => l_amb_context_code
296879   , p_side                         => 'NA'
296880   );
296881 
296882 
296883    --
296884    --
296885    END IF;
296886 
296887        --
296888        -- Update the line information that should be overwritten
296889        --
296890        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
296891                                          p_header_num   => 1);
296892        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
296893 
296894        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
296895 
296896        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
296897           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
296898        END IF;
296899 
296900       --
296901       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
296902       --
296903       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
296904           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
296905       ELSE
296906           ---------------------------------------------------------------------------------------------------
296907           -- 4262811a Switch Sign
296908           ---------------------------------------------------------------------------------------------------
296909           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
296910           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
296911                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
296912           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
296913                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
296914           -- 5132302
296915           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
296916                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
296917 
296918       END IF;
296919 
296920       -- 4955764
296921       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
296922       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
296923 
296924 
296925       XLA_AE_LINES_PKG.ValidateCurrentLine;
296926       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
296927 
296928       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
296929                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
296930                ,p_balance_type_code => l_balance_type_code);
296931 
296932    END IF;
296933 
296934    -----------------------------------------------------------------------------------------
296935    -- 4262811 Multiperiod Accounting
296936    -----------------------------------------------------------------------------------------
296937      -- No MPA option is assigned.
296938 
296939 
296940 END IF;
296941 END IF;
296942 --
296943 
296944 --
296945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
296946    trace
296947       (p_msg      => 'END of AcctLineType_529'
296948       ,p_level    => C_LEVEL_PROCEDURE
296949       ,p_module   => l_log_module);
296950 END IF;
296951 --
296952 EXCEPTION
296953   WHEN xla_exceptions_pkg.application_exception THEN
296954       RAISE;
296955   WHEN OTHERS THEN
296956        xla_exceptions_pkg.raise_message
296957            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_529');
296958 END AcctLineType_529;
296959 --
296960 
296961 ---------------------------------------
296962 --
296963 -- PRIVATE FUNCTION
296964 --         AcctLineType_530
296965 --
296966 ---------------------------------------
296967 PROCEDURE AcctLineType_530 (
296968   p_application_id        IN NUMBER
296969  ,p_event_id              IN NUMBER
296970  ,p_calculate_acctd_flag  IN VARCHAR2
296971  ,p_calculate_g_l_flag    IN VARCHAR2
296972  ,p_actual_flag           IN OUT VARCHAR2
296973  ,p_balance_type_code     OUT VARCHAR2
296974  ,p_gain_or_loss_ref      OUT VARCHAR2
296975  
296976 --TRANSACTION_ID
296977  , p_source_1            IN NUMBER
296978 --Item Concatenated Segments
296979  , p_source_2            IN VARCHAR2
296980 --Transaction Quantity
296981  , p_source_3            IN NUMBER
296982 --Transaction Unit of Measure Code
296983  , p_source_4            IN VARCHAR2
296984 --Inventory Transaction Type Description
296985  , p_source_5            IN VARCHAR2
296986 --Cost Element Name
296987  , p_source_15            IN NUMBER
296988 --WIP Entity Type
296989  , p_source_55            IN NUMBER
296990  , p_source_55_meaning    IN VARCHAR2
296991 --Discrete Job Material Account
296992  , p_source_63            IN NUMBER
296993 --Discrete Job Material Overhead Account
296994  , p_source_64            IN NUMBER
296995 --Discrete Job Resource Account
296996  , p_source_65            IN NUMBER
296997 --Discrete Job Outside Processing Account
296998  , p_source_66            IN NUMBER
296999 --Discrete Job Overhead Account
297000  , p_source_67            IN NUMBER
297001 --Repetitive Schedule Material Account
297002  , p_source_68            IN NUMBER
297003 --Repetitive Schedule Material Overhead Account
297004  , p_source_69            IN NUMBER
297005 --Repetitive Schedule Resource Account
297006  , p_source_70            IN NUMBER
297007 --Repetitive Schedule Outside Processing Account
297008  , p_source_71            IN NUMBER
297009 --Repetitive Schedule Overhead Account
297010  , p_source_72            IN NUMBER
297011 --Flow Schedule Material Account
297012  , p_source_73            IN NUMBER
297013 --Flow Schedule Material Overhead Account
297014  , p_source_74            IN NUMBER
297015 --Flow Schedule Resource Account
297016  , p_source_75            IN NUMBER
297017 --Flow Schedule Outside Processing Account
297018  , p_source_76            IN NUMBER
297019 --Flow Schedule Overhead Account
297020  , p_source_77            IN NUMBER
297021 --DISTRIBUTION_IDENTIFIER
297022  , p_source_84            IN NUMBER
297023 --Distribution Type
297024  , p_source_85            IN VARCHAR2
297025  , p_source_85_meaning    IN VARCHAR2
297026 --Entered Currency Code
297027  , p_source_88            IN VARCHAR2
297028 --Entered Amount
297029  , p_source_91            IN NUMBER
297030 --Currency Conversion Date
297031  , p_source_92            IN DATE
297032 --Currency Conversion Rate
297033  , p_source_93            IN NUMBER
297034 --Currency Conversion Type
297035  , p_source_94            IN VARCHAR2
297036 --Accounted Amount
297037  , p_source_95            IN NUMBER
297038 --Accounting Line Type
297039  , p_source_97            IN NUMBER
297040 )
297041 IS
297042 
297043 l_component_type              VARCHAR2(80);
297044 l_component_code              VARCHAR2(30);
297045 l_component_type_code         VARCHAR2(1);
297046 l_component_appl_id           INTEGER;
297047 l_amb_context_code            VARCHAR2(30);
297048 l_entity_code                 VARCHAR2(30);
297049 l_event_class_code            VARCHAR2(30);
297050 l_ae_header_id                NUMBER;
297051 l_event_type_code             VARCHAR2(30);
297052 l_line_definition_code        VARCHAR2(30);
297053 l_line_definition_owner_code  VARCHAR2(1);
297054 --
297055 -- adr variables
297056 l_segment                     VARCHAR2(30);
297057 l_ccid                        NUMBER;
297058 l_adr_transaction_coa_id      NUMBER;
297059 l_adr_accounting_coa_id       NUMBER;
297060 l_adr_flexfield_segment_code  VARCHAR2(30);
297061 l_adr_flex_value_set_id       NUMBER;
297062 l_adr_value_type_code         VARCHAR2(30);
297063 l_adr_value_combination_id    NUMBER;
297064 l_adr_value_segment_code      VARCHAR2(30);
297065 
297066 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
297067 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
297068 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
297069 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
297070 
297071 -- 4262811 Variables ------------------------------------------------------------------------------------------
297072 l_entered_amt_idx             NUMBER;
297073 l_accted_amt_idx              NUMBER;
297074 l_acc_rev_flag                VARCHAR2(1);
297075 l_accrual_line_num            NUMBER;
297076 l_tmp_amt                     NUMBER;
297077 l_acc_rev_natural_side_code   VARCHAR2(1);
297078 
297079 l_num_entries                 NUMBER;
297080 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
297081 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
297082 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
297083 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
297084 l_recog_line_1                NUMBER;
297085 l_recog_line_2                NUMBER;
297086 
297087 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
297088 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
297089 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
297090 
297091 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
297092 
297093 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
297094 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
297095 
297096 ---------------------------------------------------------------------------------------------------------------
297097 
297098 
297099 --
297100 -- bulk performance
297101 --
297102 l_balance_type_code           VARCHAR2(1);
297103 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
297104 l_log_module                  VARCHAR2(240);
297105 
297106 --
297107 -- Upgrade strategy
297108 --
297109 l_actual_upg_option           VARCHAR2(1);
297110 l_enc_upg_option           VARCHAR2(1);
297111 
297112 --
297113 BEGIN
297114 --
297115 IF g_log_enabled THEN
297116       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_530';
297117 END IF;
297118 --
297119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
297120 
297121       trace
297122          (p_msg      => 'BEGIN of AcctLineType_530'
297123          ,p_level    => C_LEVEL_PROCEDURE
297124          ,p_module   => l_log_module);
297125 
297126 END IF;
297127 --
297128 l_component_type             := 'AMB_JLT';
297129 l_component_code             := 'WIP_VALUATION';
297130 l_component_type_code        := 'S';
297131 l_component_appl_id          :=  707;
297132 l_amb_context_code           := 'DEFAULT';
297133 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
297134 l_event_class_code           := 'WIP_MTL';
297135 l_event_type_code            := 'WIP_NEG_COMP_RETURN';
297136 l_line_definition_owner_code := 'S';
297137 l_line_definition_code       := 'PI_WIP_NEG_COMP_RETURN';
297138 --
297139 l_balance_type_code          := 'A';
297140 l_segment                     := NULL;
297141 l_ccid                        := NULL;
297142 l_adr_transaction_coa_id      := NULL;
297143 l_adr_accounting_coa_id       := NULL;
297144 l_adr_flexfield_segment_code  := NULL;
297145 l_adr_flex_value_set_id       := NULL;
297146 l_adr_value_type_code         := NULL;
297147 l_adr_value_combination_id    := NULL;
297148 l_adr_value_segment_code      := NULL;
297149 
297150 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
297151 l_bflow_class_code           := '';    -- 4219869 Business Flow
297152 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
297153 l_budgetary_control_flag     := 'N';
297154 
297155 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
297156 l_bflow_applied_to_amt       := NULL; -- 5132302
297157 l_entered_amt_idx            := NULL;          -- 4262811
297158 l_accted_amt_idx             := NULL;          -- 4262811
297159 l_acc_rev_flag               := NULL;          -- 4262811
297160 l_accrual_line_num           := NULL;          -- 4262811
297161 l_tmp_amt                    := NULL;          -- 4262811
297162 --
297163  
297164 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
297165     l_balance_type_code <> 'B' THEN
297166 IF NVL(p_source_97,9E125) =  7
297167  THEN 
297168 
297169    --
297170    XLA_AE_LINES_PKG.SetNewLine;
297171 
297172    p_balance_type_code          := l_balance_type_code;
297173    -- set the flag so later we will know whether the gain loss line needs to be created
297174    
297175    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
297176      p_actual_flag :='A';
297177    END IF;
297178 
297179    --
297180    -- bulk performance
297181    --
297182    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
297183                                       p_header_num   => 0); -- 4262811
297184    --
297185    -- set accounting line options
297186    --
297187    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
297188            p_natural_side_code          => 'D'
297189          , p_gain_or_loss_flag          => 'N'
297190          , p_gl_transfer_mode_code      => 'S'
297191          , p_acct_entry_type_code       => 'A'
297192          , p_switch_side_flag           => 'Y'
297193          , p_merge_duplicate_code       => 'N'
297194          );
297195    --
297196    l_acc_rev_natural_side_code := 'C';  -- 4262811
297197    -- 
297198    --
297199    -- set accounting line type info
297200    --
297201    xla_ae_lines_pkg.SetAcctLineType
297202       (p_component_type             => l_component_type
297203       ,p_event_type_code            => l_event_type_code
297204       ,p_line_definition_owner_code => l_line_definition_owner_code
297205       ,p_line_definition_code       => l_line_definition_code
297206       ,p_accounting_line_code       => l_component_code
297207       ,p_accounting_line_type_code  => l_component_type_code
297208       ,p_accounting_line_appl_id    => l_component_appl_id
297209       ,p_amb_context_code           => l_amb_context_code
297210       ,p_entity_code                => l_entity_code
297211       ,p_event_class_code           => l_event_class_code);
297212    --
297213    -- set accounting class
297214    --
297215    xla_ae_lines_pkg.SetAcctClass(
297216            p_accounting_class_code  => 'WIP_VALUATION'
297217          , p_ae_header_id           => l_ae_header_id
297218          );
297219 
297220    --
297221    -- set rounding class
297222    --
297223    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
297224                       'WIP_VALUATION';
297225 
297226    --
297227    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
297228    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
297229    --
297230    -- bulk performance
297231    --
297232    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
297233 
297234    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
297235       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
297236 
297237    -- 4955764
297238    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
297239       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
297240 
297241    -- 4458381 Public Sector Enh
297242    
297243    --
297244    -- set accounting attributes for the line type
297245    --
297246    l_entered_amt_idx := 3;
297247    l_accted_amt_idx  := 8;
297248    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
297249    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
297250    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
297251    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
297252    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
297253    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
297254    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
297255    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
297256    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
297257    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
297258    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
297259    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
297260    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
297261    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
297262    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
297263    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
297264    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
297265 
297266    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
297267    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
297268 
297269    ---------------------------------------------------------------------------------------------------------------
297270    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
297271    ---------------------------------------------------------------------------------------------------------------
297272    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
297273 
297274    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
297275    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
297276 
297277    IF xla_accounting_cache_pkg.GetValueChar
297278          (p_source_code         => 'LEDGER_CATEGORY_CODE'
297279          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
297280    AND l_bflow_method_code = 'PRIOR_ENTRY'
297281 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
297282    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
297283          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
297284        )
297285    THEN
297286          xla_ae_lines_pkg.BflowUpgEntry
297287            (p_business_method_code    => l_bflow_method_code
297288            ,p_business_class_code     => l_bflow_class_code
297289            ,p_balance_type            => l_balance_type_code);
297290    ELSE
297291       NULL;
297292 -- No business flow processing for business flow method of NONE.
297293    END IF;
297294 
297295    --
297296    -- call analytical criteria
297297    --
297298    
297299    --
297300    -- call description
297301    --
297302    
297303 xla_ae_lines_pkg.SetLineDescription(
297304    p_ae_header_id => l_ae_header_id
297305   ,p_description  => Description_1 (
297306      p_application_id         => p_application_id
297307    , p_ae_header_id           => l_ae_header_id 
297308 , p_source_1 => p_source_1
297309 , p_source_2 => p_source_2
297310 , p_source_3 => p_source_3
297311 , p_source_4 => p_source_4
297312 , p_source_5 => p_source_5
297313    )
297314 );
297315 
297316 
297317    --
297318    -- call ADRs
297319    -- Bug 4922099
297320    --
297321    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
297322         (NVL(l_actual_upg_option, 'N') = 'O') OR
297323         (NVL(l_enc_upg_option, 'N') = 'O')
297324       )
297325    THEN
297326    NULL;
297327    --
297328    --
297329    
297330   l_ccid := AcctDerRule_36(
297331            p_application_id           => p_application_id
297332          , p_ae_header_id             => l_ae_header_id 
297333 , p_source_15 => p_source_15
297334 , p_source_55 => p_source_55
297335 , p_source_55_meaning => p_source_55_meaning
297336 , p_source_63 => p_source_63
297337 , p_source_64 => p_source_64
297338 , p_source_65 => p_source_65
297339 , p_source_66 => p_source_66
297340 , p_source_67 => p_source_67
297341 , p_source_68 => p_source_68
297342 , p_source_69 => p_source_69
297343 , p_source_70 => p_source_70
297344 , p_source_71 => p_source_71
297345 , p_source_72 => p_source_72
297346 , p_source_73 => p_source_73
297347 , p_source_74 => p_source_74
297348 , p_source_75 => p_source_75
297349 , p_source_76 => p_source_76
297350 , p_source_77 => p_source_77
297351          , x_transaction_coa_id       => l_adr_transaction_coa_id
297352          , x_accounting_coa_id        => l_adr_accounting_coa_id
297353          , x_value_type_code          => l_adr_value_type_code
297354          , p_side                     => 'NA'
297355    );
297356 
297357    xla_ae_lines_pkg.set_ccid(
297358     p_code_combination_id          => l_ccid
297359   , p_value_type_code              => l_adr_value_type_code
297360   , p_transaction_coa_id           => l_adr_transaction_coa_id
297361   , p_accounting_coa_id            => l_adr_accounting_coa_id
297362   , p_adr_code                     => 'PI_WIP_VALUATION'
297363   , p_adr_type_code                => 'S'
297364   , p_component_type               => l_component_type
297365   , p_component_code               => l_component_code
297366   , p_component_type_code          => l_component_type_code
297367   , p_component_appl_id            => l_component_appl_id
297368   , p_amb_context_code             => l_amb_context_code
297369   , p_side                         => 'NA'
297370   );
297371 
297372 
297373    --
297374    --
297375    END IF;
297376    --
297377    -- Bug 4922099
297378    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
297379           (NVL(l_enc_upg_option, 'N') = 'O')
297380         ) AND
297381         (l_bflow_method_code = 'PRIOR_ENTRY')
297382       )
297383    THEN
297384       IF
297385       --
297386       1 = 2
297387       --
297388       THEN
297389       xla_accounting_err_pkg.build_message
297390                                     (p_appli_s_name            => 'XLA'
297391                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
297392                                     ,p_token_1                 => 'LINE_NUMBER'
297393                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
297394                                     ,p_token_2                 => 'LINE_TYPE_NAME'
297395                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
297396                                                                              l_component_type
297397                                                                             ,l_component_code
297398                                                                             ,l_component_type_code
297399                                                                             ,l_component_appl_id
297400                                                                             ,l_amb_context_code
297401                                                                             ,l_entity_code
297402                                                                             ,l_event_class_code
297403                                                                            )
297404                                     ,p_token_3                 => 'OWNER'
297405                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
297406                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
297407                                                                           ,p_lookup_code    => l_component_type_code
297408                                                                          )
297409                                     ,p_token_4                 => 'PRODUCT_NAME'
297410                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
297411                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
297412                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
297413                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
297414                                     ,p_ae_header_id            =>  NULL
297415                                        );
297416 
297417         IF (C_LEVEL_ERROR>= g_log_level) THEN
297418                  trace
297419                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
297420                       ,p_level    => C_LEVEL_ERROR
297421                       ,p_module   => l_log_module);
297422         END IF;
297423       END IF;
297424    END IF;
297425    --
297426    --
297427    ------------------------------------------------------------------------------------------------
297428    -- 4219869 Business Flow
297429    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
297430    -- Prior Entry.  Currently, the following code is always generated.
297431    ------------------------------------------------------------------------------------------------
297432    XLA_AE_LINES_PKG.ValidateCurrentLine;
297433 
297434    ------------------------------------------------------------------------------------
297435    -- 4219869 Business Flow
297436    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
297437    ------------------------------------------------------------------------------------
297438    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
297439 
297440    ----------------------------------------------------------------------------------
297441    -- 4219869 Business Flow
297442    -- Update journal entry status -- Need to generate this within IF <condition>
297443    ----------------------------------------------------------------------------------
297444    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
297445          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
297446          ,p_balance_type_code => l_balance_type_code
297447          );
297448 
297449    -------------------------------------------------------------------------------------------
297450    -- 4262811 - Generate the Accrual Reversal lines
297451    -------------------------------------------------------------------------------------------
297452    BEGIN
297453       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
297454                               (g_array_event(p_event_id).array_value_num('header_index'));
297455       IF l_acc_rev_flag IS NULL THEN
297456          l_acc_rev_flag := 'N';
297457       END IF;
297458    EXCEPTION
297459       WHEN OTHERS THEN
297460          l_acc_rev_flag := 'N';
297461    END;
297462    --
297463    IF (l_acc_rev_flag = 'Y') THEN
297464 
297465        -- 4645092  ------------------------------------------------------------------------------
297466        -- To allow MPA report to determine if it should generate report process
297467        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
297468        ------------------------------------------------------------------------------------------
297469 
297470        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
297471        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
297472    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
297473    -- call ADRs
297474    -- Bug 4922099
297475    --
297476    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
297477         (NVL(l_actual_upg_option, 'N') = 'O') OR
297478         (NVL(l_enc_upg_option, 'N') = 'O')
297479       )
297480    THEN
297481    NULL;
297482    --
297483    --
297484    
297485   l_ccid := AcctDerRule_36(
297486            p_application_id           => p_application_id
297487          , p_ae_header_id             => l_ae_header_id 
297488 , p_source_15 => p_source_15
297489 , p_source_55 => p_source_55
297490 , p_source_55_meaning => p_source_55_meaning
297491 , p_source_63 => p_source_63
297492 , p_source_64 => p_source_64
297493 , p_source_65 => p_source_65
297494 , p_source_66 => p_source_66
297495 , p_source_67 => p_source_67
297496 , p_source_68 => p_source_68
297497 , p_source_69 => p_source_69
297498 , p_source_70 => p_source_70
297499 , p_source_71 => p_source_71
297500 , p_source_72 => p_source_72
297501 , p_source_73 => p_source_73
297502 , p_source_74 => p_source_74
297503 , p_source_75 => p_source_75
297504 , p_source_76 => p_source_76
297505 , p_source_77 => p_source_77
297506          , x_transaction_coa_id       => l_adr_transaction_coa_id
297507          , x_accounting_coa_id        => l_adr_accounting_coa_id
297508          , x_value_type_code          => l_adr_value_type_code
297509          , p_side                     => 'NA'
297510    );
297511 
297512    xla_ae_lines_pkg.set_ccid(
297513     p_code_combination_id          => l_ccid
297514   , p_value_type_code              => l_adr_value_type_code
297515   , p_transaction_coa_id           => l_adr_transaction_coa_id
297516   , p_accounting_coa_id            => l_adr_accounting_coa_id
297517   , p_adr_code                     => 'PI_WIP_VALUATION'
297518   , p_adr_type_code                => 'S'
297519   , p_component_type               => l_component_type
297520   , p_component_code               => l_component_code
297521   , p_component_type_code          => l_component_type_code
297522   , p_component_appl_id            => l_component_appl_id
297523   , p_amb_context_code             => l_amb_context_code
297524   , p_side                         => 'NA'
297525   );
297526 
297527 
297528    --
297529    --
297530    END IF;
297531 
297532        --
297533        -- Update the line information that should be overwritten
297534        --
297535        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
297536                                          p_header_num   => 1);
297537        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
297538 
297539        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
297540 
297541        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
297542           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
297543        END IF;
297544 
297545       --
297546       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
297547       --
297548       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
297549           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
297550       ELSE
297551           ---------------------------------------------------------------------------------------------------
297552           -- 4262811a Switch Sign
297553           ---------------------------------------------------------------------------------------------------
297554           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
297555           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
297556                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
297557           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
297558                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
297559           -- 5132302
297560           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
297561                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
297562 
297563       END IF;
297564 
297565       -- 4955764
297566       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
297567       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
297568 
297569 
297570       XLA_AE_LINES_PKG.ValidateCurrentLine;
297571       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
297572 
297573       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
297574                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
297575                ,p_balance_type_code => l_balance_type_code);
297576 
297577    END IF;
297578 
297579    -----------------------------------------------------------------------------------------
297580    -- 4262811 Multiperiod Accounting
297581    -----------------------------------------------------------------------------------------
297582      -- No MPA option is assigned.
297583 
297584 
297585 END IF;
297586 END IF;
297587 --
297588 
297589 --
297590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
297591    trace
297592       (p_msg      => 'END of AcctLineType_530'
297593       ,p_level    => C_LEVEL_PROCEDURE
297594       ,p_module   => l_log_module);
297595 END IF;
297596 --
297597 EXCEPTION
297598   WHEN xla_exceptions_pkg.application_exception THEN
297599       RAISE;
297600   WHEN OTHERS THEN
297601        xla_exceptions_pkg.raise_message
297602            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_530');
297603 END AcctLineType_530;
297604 --
297605 
297606 ---------------------------------------
297607 --
297608 -- PRIVATE FUNCTION
297609 --         AcctLineType_531
297610 --
297611 ---------------------------------------
297612 PROCEDURE AcctLineType_531 (
297613   p_application_id        IN NUMBER
297614  ,p_event_id              IN NUMBER
297615  ,p_calculate_acctd_flag  IN VARCHAR2
297616  ,p_calculate_g_l_flag    IN VARCHAR2
297617  ,p_actual_flag           IN OUT VARCHAR2
297618  ,p_balance_type_code     OUT VARCHAR2
297619  ,p_gain_or_loss_ref      OUT VARCHAR2
297620  
297621 --Cost Management Default Account
297622  , p_source_11            IN NUMBER
297623 --DISTRIBUTION_IDENTIFIER
297624  , p_source_84            IN NUMBER
297625 --Distribution Type
297626  , p_source_85            IN VARCHAR2
297627  , p_source_85_meaning    IN VARCHAR2
297628 --Entered Currency Code
297629  , p_source_88            IN VARCHAR2
297630 --Entered Amount
297631  , p_source_91            IN NUMBER
297632 --Currency Conversion Date
297633  , p_source_92            IN DATE
297634 --Currency Conversion Rate
297635  , p_source_93            IN NUMBER
297636 --Accounted Amount
297637  , p_source_95            IN NUMBER
297638 --Accounting Line Type
297639  , p_source_97            IN NUMBER
297640 )
297641 IS
297642 
297643 l_component_type              VARCHAR2(80);
297644 l_component_code              VARCHAR2(30);
297645 l_component_type_code         VARCHAR2(1);
297646 l_component_appl_id           INTEGER;
297647 l_amb_context_code            VARCHAR2(30);
297648 l_entity_code                 VARCHAR2(30);
297649 l_event_class_code            VARCHAR2(30);
297650 l_ae_header_id                NUMBER;
297651 l_event_type_code             VARCHAR2(30);
297652 l_line_definition_code        VARCHAR2(30);
297653 l_line_definition_owner_code  VARCHAR2(1);
297654 --
297655 -- adr variables
297656 l_segment                     VARCHAR2(30);
297657 l_ccid                        NUMBER;
297658 l_adr_transaction_coa_id      NUMBER;
297659 l_adr_accounting_coa_id       NUMBER;
297660 l_adr_flexfield_segment_code  VARCHAR2(30);
297661 l_adr_flex_value_set_id       NUMBER;
297662 l_adr_value_type_code         VARCHAR2(30);
297663 l_adr_value_combination_id    NUMBER;
297664 l_adr_value_segment_code      VARCHAR2(30);
297665 
297666 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
297667 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
297668 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
297669 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
297670 
297671 -- 4262811 Variables ------------------------------------------------------------------------------------------
297672 l_entered_amt_idx             NUMBER;
297673 l_accted_amt_idx              NUMBER;
297674 l_acc_rev_flag                VARCHAR2(1);
297675 l_accrual_line_num            NUMBER;
297676 l_tmp_amt                     NUMBER;
297677 l_acc_rev_natural_side_code   VARCHAR2(1);
297678 
297679 l_num_entries                 NUMBER;
297680 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
297681 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
297682 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
297683 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
297684 l_recog_line_1                NUMBER;
297685 l_recog_line_2                NUMBER;
297686 
297687 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
297688 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
297689 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
297690 
297691 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
297692 
297693 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
297694 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
297695 
297696 ---------------------------------------------------------------------------------------------------------------
297697 
297698 
297699 --
297700 -- bulk performance
297701 --
297702 l_balance_type_code           VARCHAR2(1);
297703 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
297704 l_log_module                  VARCHAR2(240);
297705 
297706 --
297707 -- Upgrade strategy
297708 --
297709 l_actual_upg_option           VARCHAR2(1);
297710 l_enc_upg_option           VARCHAR2(1);
297711 
297712 --
297713 BEGIN
297714 --
297715 IF g_log_enabled THEN
297716       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_531';
297717 END IF;
297718 --
297719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
297720 
297721       trace
297722          (p_msg      => 'BEGIN of AcctLineType_531'
297723          ,p_level    => C_LEVEL_PROCEDURE
297724          ,p_module   => l_log_module);
297725 
297726 END IF;
297727 --
297728 l_component_type             := 'AMB_JLT';
297729 l_component_code             := 'WIP_VALUATION';
297730 l_component_type_code        := 'S';
297731 l_component_appl_id          :=  707;
297732 l_amb_context_code           := 'DEFAULT';
297733 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
297734 l_event_class_code           := 'OSP';
297735 l_event_type_code            := 'IPV_TRANSFER_WO';
297736 l_line_definition_owner_code := 'S';
297737 l_line_definition_code       := 'PI_IPV_TRANSFER_WO';
297738 --
297739 l_balance_type_code          := 'A';
297740 l_segment                     := NULL;
297741 l_ccid                        := NULL;
297742 l_adr_transaction_coa_id      := NULL;
297743 l_adr_accounting_coa_id       := NULL;
297744 l_adr_flexfield_segment_code  := NULL;
297745 l_adr_flex_value_set_id       := NULL;
297746 l_adr_value_type_code         := NULL;
297747 l_adr_value_combination_id    := NULL;
297748 l_adr_value_segment_code      := NULL;
297749 
297750 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
297751 l_bflow_class_code           := '';    -- 4219869 Business Flow
297752 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
297753 l_budgetary_control_flag     := 'N';
297754 
297755 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
297756 l_bflow_applied_to_amt       := NULL; -- 5132302
297757 l_entered_amt_idx            := NULL;          -- 4262811
297758 l_accted_amt_idx             := NULL;          -- 4262811
297759 l_acc_rev_flag               := NULL;          -- 4262811
297760 l_accrual_line_num           := NULL;          -- 4262811
297761 l_tmp_amt                    := NULL;          -- 4262811
297762 --
297763  
297764 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
297765     l_balance_type_code <> 'B' THEN
297766 IF NVL(p_source_97,9E125) =  7
297767  THEN 
297768 
297769    --
297770    XLA_AE_LINES_PKG.SetNewLine;
297771 
297772    p_balance_type_code          := l_balance_type_code;
297773    -- set the flag so later we will know whether the gain loss line needs to be created
297774    
297775    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
297776      p_actual_flag :='A';
297777    END IF;
297778 
297779    --
297780    -- bulk performance
297781    --
297782    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
297783                                       p_header_num   => 0); -- 4262811
297784    --
297785    -- set accounting line options
297786    --
297787    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
297788            p_natural_side_code          => 'D'
297789          , p_gain_or_loss_flag          => 'N'
297790          , p_gl_transfer_mode_code      => 'S'
297791          , p_acct_entry_type_code       => 'A'
297792          , p_switch_side_flag           => 'Y'
297793          , p_merge_duplicate_code       => 'N'
297794          );
297795    --
297796    l_acc_rev_natural_side_code := 'C';  -- 4262811
297797    -- 
297798    --
297799    -- set accounting line type info
297800    --
297801    xla_ae_lines_pkg.SetAcctLineType
297802       (p_component_type             => l_component_type
297803       ,p_event_type_code            => l_event_type_code
297804       ,p_line_definition_owner_code => l_line_definition_owner_code
297805       ,p_line_definition_code       => l_line_definition_code
297806       ,p_accounting_line_code       => l_component_code
297807       ,p_accounting_line_type_code  => l_component_type_code
297808       ,p_accounting_line_appl_id    => l_component_appl_id
297809       ,p_amb_context_code           => l_amb_context_code
297810       ,p_entity_code                => l_entity_code
297811       ,p_event_class_code           => l_event_class_code);
297812    --
297813    -- set accounting class
297814    --
297815    xla_ae_lines_pkg.SetAcctClass(
297816            p_accounting_class_code  => 'WIP_VALUATION'
297817          , p_ae_header_id           => l_ae_header_id
297818          );
297819 
297820    --
297821    -- set rounding class
297822    --
297823    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
297824                       'WIP_VALUATION';
297825 
297826    --
297827    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
297828    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
297829    --
297830    -- bulk performance
297831    --
297832    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
297833 
297834    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
297835       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
297836 
297837    -- 4955764
297838    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
297839       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
297840 
297841    -- 4458381 Public Sector Enh
297842    
297843    --
297844    -- set accounting attributes for the line type
297845    --
297846    l_entered_amt_idx := 3;
297847    l_accted_amt_idx  := 8;
297848    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
297849    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
297850    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
297851    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
297852    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
297853    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
297854    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
297855    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
297856    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
297857    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
297858    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
297859    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
297860    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
297861    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
297862    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
297863    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
297864    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
297865 
297866    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
297867    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
297868 
297869    ---------------------------------------------------------------------------------------------------------------
297870    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
297871    ---------------------------------------------------------------------------------------------------------------
297872    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
297873 
297874    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
297875    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
297876 
297877    IF xla_accounting_cache_pkg.GetValueChar
297878          (p_source_code         => 'LEDGER_CATEGORY_CODE'
297879          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
297880    AND l_bflow_method_code = 'PRIOR_ENTRY'
297881 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
297882    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
297883          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
297884        )
297885    THEN
297886          xla_ae_lines_pkg.BflowUpgEntry
297887            (p_business_method_code    => l_bflow_method_code
297888            ,p_business_class_code     => l_bflow_class_code
297889            ,p_balance_type            => l_balance_type_code);
297890    ELSE
297891       NULL;
297892 -- No business flow processing for business flow method of NONE.
297893    END IF;
297894 
297895    --
297896    -- call analytical criteria
297897    --
297898    
297899    --
297900    -- call description
297901    --
297902    -- No description or it is inherited.
297903    --
297904    -- call ADRs
297905    -- Bug 4922099
297906    --
297907    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
297908         (NVL(l_actual_upg_option, 'N') = 'O') OR
297909         (NVL(l_enc_upg_option, 'N') = 'O')
297910       )
297911    THEN
297912    NULL;
297913    --
297914    --
297915    
297916   l_ccid := AcctDerRule_6(
297917            p_application_id           => p_application_id
297918          , p_ae_header_id             => l_ae_header_id 
297919 , p_source_11 => p_source_11
297920          , x_transaction_coa_id       => l_adr_transaction_coa_id
297921          , x_accounting_coa_id        => l_adr_accounting_coa_id
297922          , x_value_type_code          => l_adr_value_type_code
297923          , p_side                     => 'NA'
297924    );
297925 
297926    xla_ae_lines_pkg.set_ccid(
297927     p_code_combination_id          => l_ccid
297928   , p_value_type_code              => l_adr_value_type_code
297929   , p_transaction_coa_id           => l_adr_transaction_coa_id
297930   , p_accounting_coa_id            => l_adr_accounting_coa_id
297931   , p_adr_code                     => 'CST_DEFAULT'
297932   , p_adr_type_code                => 'S'
297933   , p_component_type               => l_component_type
297934   , p_component_code               => l_component_code
297935   , p_component_type_code          => l_component_type_code
297936   , p_component_appl_id            => l_component_appl_id
297937   , p_amb_context_code             => l_amb_context_code
297938   , p_side                         => 'NA'
297939   );
297940 
297941 
297942    --
297943    --
297944    END IF;
297945    --
297946    -- Bug 4922099
297947    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
297948           (NVL(l_enc_upg_option, 'N') = 'O')
297949         ) AND
297950         (l_bflow_method_code = 'PRIOR_ENTRY')
297951       )
297952    THEN
297953       IF
297954       --
297955       1 = 2
297956       --
297957       THEN
297958       xla_accounting_err_pkg.build_message
297959                                     (p_appli_s_name            => 'XLA'
297960                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
297961                                     ,p_token_1                 => 'LINE_NUMBER'
297962                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
297963                                     ,p_token_2                 => 'LINE_TYPE_NAME'
297964                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
297965                                                                              l_component_type
297966                                                                             ,l_component_code
297967                                                                             ,l_component_type_code
297968                                                                             ,l_component_appl_id
297969                                                                             ,l_amb_context_code
297970                                                                             ,l_entity_code
297971                                                                             ,l_event_class_code
297972                                                                            )
297973                                     ,p_token_3                 => 'OWNER'
297974                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
297975                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
297976                                                                           ,p_lookup_code    => l_component_type_code
297977                                                                          )
297978                                     ,p_token_4                 => 'PRODUCT_NAME'
297979                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
297980                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
297981                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
297982                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
297983                                     ,p_ae_header_id            =>  NULL
297984                                        );
297985 
297986         IF (C_LEVEL_ERROR>= g_log_level) THEN
297987                  trace
297988                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
297989                       ,p_level    => C_LEVEL_ERROR
297990                       ,p_module   => l_log_module);
297991         END IF;
297992       END IF;
297993    END IF;
297994    --
297995    --
297996    ------------------------------------------------------------------------------------------------
297997    -- 4219869 Business Flow
297998    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
297999    -- Prior Entry.  Currently, the following code is always generated.
298000    ------------------------------------------------------------------------------------------------
298001    XLA_AE_LINES_PKG.ValidateCurrentLine;
298002 
298003    ------------------------------------------------------------------------------------
298004    -- 4219869 Business Flow
298005    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
298006    ------------------------------------------------------------------------------------
298007    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
298008 
298009    ----------------------------------------------------------------------------------
298010    -- 4219869 Business Flow
298011    -- Update journal entry status -- Need to generate this within IF <condition>
298012    ----------------------------------------------------------------------------------
298013    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
298014          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
298015          ,p_balance_type_code => l_balance_type_code
298016          );
298017 
298018    -------------------------------------------------------------------------------------------
298019    -- 4262811 - Generate the Accrual Reversal lines
298020    -------------------------------------------------------------------------------------------
298021    BEGIN
298022       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
298023                               (g_array_event(p_event_id).array_value_num('header_index'));
298024       IF l_acc_rev_flag IS NULL THEN
298025          l_acc_rev_flag := 'N';
298026       END IF;
298027    EXCEPTION
298028       WHEN OTHERS THEN
298029          l_acc_rev_flag := 'N';
298030    END;
298031    --
298032    IF (l_acc_rev_flag = 'Y') THEN
298033 
298034        -- 4645092  ------------------------------------------------------------------------------
298035        -- To allow MPA report to determine if it should generate report process
298036        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
298037        ------------------------------------------------------------------------------------------
298038 
298039        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
298040        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
298041    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
298042    -- call ADRs
298043    -- Bug 4922099
298044    --
298045    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
298046         (NVL(l_actual_upg_option, 'N') = 'O') OR
298047         (NVL(l_enc_upg_option, 'N') = 'O')
298048       )
298049    THEN
298050    NULL;
298051    --
298052    --
298053    
298054   l_ccid := AcctDerRule_6(
298055            p_application_id           => p_application_id
298056          , p_ae_header_id             => l_ae_header_id 
298057 , p_source_11 => p_source_11
298058          , x_transaction_coa_id       => l_adr_transaction_coa_id
298059          , x_accounting_coa_id        => l_adr_accounting_coa_id
298060          , x_value_type_code          => l_adr_value_type_code
298061          , p_side                     => 'NA'
298062    );
298063 
298064    xla_ae_lines_pkg.set_ccid(
298065     p_code_combination_id          => l_ccid
298066   , p_value_type_code              => l_adr_value_type_code
298067   , p_transaction_coa_id           => l_adr_transaction_coa_id
298068   , p_accounting_coa_id            => l_adr_accounting_coa_id
298069   , p_adr_code                     => 'CST_DEFAULT'
298070   , p_adr_type_code                => 'S'
298071   , p_component_type               => l_component_type
298072   , p_component_code               => l_component_code
298073   , p_component_type_code          => l_component_type_code
298074   , p_component_appl_id            => l_component_appl_id
298075   , p_amb_context_code             => l_amb_context_code
298076   , p_side                         => 'NA'
298077   );
298078 
298079 
298080    --
298081    --
298082    END IF;
298083 
298084        --
298085        -- Update the line information that should be overwritten
298086        --
298087        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
298088                                          p_header_num   => 1);
298089        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
298090 
298091        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
298092 
298093        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
298094           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
298095        END IF;
298096 
298097       --
298098       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
298099       --
298100       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
298101           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
298102       ELSE
298103           ---------------------------------------------------------------------------------------------------
298104           -- 4262811a Switch Sign
298105           ---------------------------------------------------------------------------------------------------
298106           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
298107           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
298108                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
298109           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
298110                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
298111           -- 5132302
298112           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
298113                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
298114 
298115       END IF;
298116 
298117       -- 4955764
298118       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
298119       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
298120 
298121 
298122       XLA_AE_LINES_PKG.ValidateCurrentLine;
298123       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
298124 
298125       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
298126                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
298127                ,p_balance_type_code => l_balance_type_code);
298128 
298129    END IF;
298130 
298131    -----------------------------------------------------------------------------------------
298132    -- 4262811 Multiperiod Accounting
298133    -----------------------------------------------------------------------------------------
298134      -- No MPA option is assigned.
298135 
298136 
298137 END IF;
298138 END IF;
298139 --
298140 
298141 --
298142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
298143    trace
298144       (p_msg      => 'END of AcctLineType_531'
298145       ,p_level    => C_LEVEL_PROCEDURE
298146       ,p_module   => l_log_module);
298147 END IF;
298148 --
298149 EXCEPTION
298150   WHEN xla_exceptions_pkg.application_exception THEN
298151       RAISE;
298152   WHEN OTHERS THEN
298153        xla_exceptions_pkg.raise_message
298154            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_531');
298155 END AcctLineType_531;
298156 --
298157 
298158 ---------------------------------------
298159 --
298160 -- PRIVATE FUNCTION
298161 --         AcctLineType_532
298162 --
298163 ---------------------------------------
298164 PROCEDURE AcctLineType_532 (
298165   p_application_id        IN NUMBER
298166  ,p_event_id              IN NUMBER
298167  ,p_calculate_acctd_flag  IN VARCHAR2
298168  ,p_calculate_g_l_flag    IN VARCHAR2
298169  ,p_actual_flag           IN OUT VARCHAR2
298170  ,p_balance_type_code     OUT VARCHAR2
298171  ,p_gain_or_loss_ref      OUT VARCHAR2
298172  
298173 --TRANSACTION_ID
298174  , p_source_1            IN NUMBER
298175 --Item Concatenated Segments
298176  , p_source_2            IN VARCHAR2
298177 --Transaction Quantity
298178  , p_source_3            IN NUMBER
298179 --Transaction Unit of Measure Code
298180  , p_source_4            IN VARCHAR2
298181 --Inventory Transaction Type Description
298182  , p_source_5            IN VARCHAR2
298183 --Cost Management Default Account
298184  , p_source_11            IN NUMBER
298185 --DISTRIBUTION_IDENTIFIER
298186  , p_source_84            IN NUMBER
298187 --Distribution Type
298188  , p_source_85            IN VARCHAR2
298189  , p_source_85_meaning    IN VARCHAR2
298190 --Entered Currency Code
298191  , p_source_88            IN VARCHAR2
298192 --Entered Amount
298193  , p_source_91            IN NUMBER
298194 --Currency Conversion Date
298195  , p_source_92            IN DATE
298196 --Currency Conversion Rate
298197  , p_source_93            IN NUMBER
298198 --Currency Conversion Type
298199  , p_source_94            IN VARCHAR2
298200 --Accounted Amount
298201  , p_source_95            IN NUMBER
298202 --Accounting Line Type
298203  , p_source_97            IN NUMBER
298204 )
298205 IS
298206 
298207 l_component_type              VARCHAR2(80);
298208 l_component_code              VARCHAR2(30);
298209 l_component_type_code         VARCHAR2(1);
298210 l_component_appl_id           INTEGER;
298211 l_amb_context_code            VARCHAR2(30);
298212 l_entity_code                 VARCHAR2(30);
298213 l_event_class_code            VARCHAR2(30);
298214 l_ae_header_id                NUMBER;
298215 l_event_type_code             VARCHAR2(30);
298216 l_line_definition_code        VARCHAR2(30);
298217 l_line_definition_owner_code  VARCHAR2(1);
298218 --
298219 -- adr variables
298220 l_segment                     VARCHAR2(30);
298221 l_ccid                        NUMBER;
298222 l_adr_transaction_coa_id      NUMBER;
298223 l_adr_accounting_coa_id       NUMBER;
298224 l_adr_flexfield_segment_code  VARCHAR2(30);
298225 l_adr_flex_value_set_id       NUMBER;
298226 l_adr_value_type_code         VARCHAR2(30);
298227 l_adr_value_combination_id    NUMBER;
298228 l_adr_value_segment_code      VARCHAR2(30);
298229 
298230 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
298231 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
298232 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
298233 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
298234 
298235 -- 4262811 Variables ------------------------------------------------------------------------------------------
298236 l_entered_amt_idx             NUMBER;
298237 l_accted_amt_idx              NUMBER;
298238 l_acc_rev_flag                VARCHAR2(1);
298239 l_accrual_line_num            NUMBER;
298240 l_tmp_amt                     NUMBER;
298241 l_acc_rev_natural_side_code   VARCHAR2(1);
298242 
298243 l_num_entries                 NUMBER;
298244 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
298245 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
298246 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
298247 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
298248 l_recog_line_1                NUMBER;
298249 l_recog_line_2                NUMBER;
298250 
298251 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
298252 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
298253 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
298254 
298255 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
298256 
298257 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
298258 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
298259 
298260 ---------------------------------------------------------------------------------------------------------------
298261 
298262 
298263 --
298264 -- bulk performance
298265 --
298266 l_balance_type_code           VARCHAR2(1);
298267 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
298268 l_log_module                  VARCHAR2(240);
298269 
298270 --
298271 -- Upgrade strategy
298272 --
298273 l_actual_upg_option           VARCHAR2(1);
298274 l_enc_upg_option           VARCHAR2(1);
298275 
298276 --
298277 BEGIN
298278 --
298279 IF g_log_enabled THEN
298280       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_532';
298281 END IF;
298282 --
298283 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
298284 
298285       trace
298286          (p_msg      => 'BEGIN of AcctLineType_532'
298287          ,p_level    => C_LEVEL_PROCEDURE
298288          ,p_module   => l_log_module);
298289 
298290 END IF;
298291 --
298292 l_component_type             := 'AMB_JLT';
298293 l_component_code             := 'WIP_VALUATION';
298294 l_component_type_code        := 'S';
298295 l_component_appl_id          :=  707;
298296 l_amb_context_code           := 'DEFAULT';
298297 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
298298 l_event_class_code           := 'WIP_MTL';
298299 l_event_type_code            := 'WIP_COMP_ISSUE';
298300 l_line_definition_owner_code := 'S';
298301 l_line_definition_code       := 'PI_WIP_COMP_ISSUE';
298302 --
298303 l_balance_type_code          := 'A';
298304 l_segment                     := NULL;
298305 l_ccid                        := NULL;
298306 l_adr_transaction_coa_id      := NULL;
298307 l_adr_accounting_coa_id       := NULL;
298308 l_adr_flexfield_segment_code  := NULL;
298309 l_adr_flex_value_set_id       := NULL;
298310 l_adr_value_type_code         := NULL;
298311 l_adr_value_combination_id    := NULL;
298312 l_adr_value_segment_code      := NULL;
298313 
298314 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
298315 l_bflow_class_code           := '';    -- 4219869 Business Flow
298316 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
298317 l_budgetary_control_flag     := 'N';
298318 
298319 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
298320 l_bflow_applied_to_amt       := NULL; -- 5132302
298321 l_entered_amt_idx            := NULL;          -- 4262811
298322 l_accted_amt_idx             := NULL;          -- 4262811
298323 l_acc_rev_flag               := NULL;          -- 4262811
298324 l_accrual_line_num           := NULL;          -- 4262811
298325 l_tmp_amt                    := NULL;          -- 4262811
298326 --
298327  
298328 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
298329     l_balance_type_code <> 'B' THEN
298330 IF NVL(p_source_97,9E125) =  7
298331  THEN 
298332 
298333    --
298334    XLA_AE_LINES_PKG.SetNewLine;
298335 
298336    p_balance_type_code          := l_balance_type_code;
298337    -- set the flag so later we will know whether the gain loss line needs to be created
298338    
298339    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
298340      p_actual_flag :='A';
298341    END IF;
298342 
298343    --
298344    -- bulk performance
298345    --
298346    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
298347                                       p_header_num   => 0); -- 4262811
298348    --
298349    -- set accounting line options
298350    --
298351    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
298352            p_natural_side_code          => 'D'
298353          , p_gain_or_loss_flag          => 'N'
298354          , p_gl_transfer_mode_code      => 'S'
298355          , p_acct_entry_type_code       => 'A'
298356          , p_switch_side_flag           => 'Y'
298357          , p_merge_duplicate_code       => 'N'
298358          );
298359    --
298360    l_acc_rev_natural_side_code := 'C';  -- 4262811
298361    -- 
298362    --
298363    -- set accounting line type info
298364    --
298365    xla_ae_lines_pkg.SetAcctLineType
298366       (p_component_type             => l_component_type
298367       ,p_event_type_code            => l_event_type_code
298368       ,p_line_definition_owner_code => l_line_definition_owner_code
298369       ,p_line_definition_code       => l_line_definition_code
298370       ,p_accounting_line_code       => l_component_code
298371       ,p_accounting_line_type_code  => l_component_type_code
298372       ,p_accounting_line_appl_id    => l_component_appl_id
298373       ,p_amb_context_code           => l_amb_context_code
298374       ,p_entity_code                => l_entity_code
298375       ,p_event_class_code           => l_event_class_code);
298376    --
298377    -- set accounting class
298378    --
298379    xla_ae_lines_pkg.SetAcctClass(
298380            p_accounting_class_code  => 'WIP_VALUATION'
298381          , p_ae_header_id           => l_ae_header_id
298382          );
298383 
298384    --
298385    -- set rounding class
298386    --
298387    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
298388                       'WIP_VALUATION';
298389 
298390    --
298391    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
298392    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
298393    --
298394    -- bulk performance
298395    --
298396    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
298397 
298398    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
298399       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
298400 
298401    -- 4955764
298402    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
298403       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
298404 
298405    -- 4458381 Public Sector Enh
298406    
298407    --
298408    -- set accounting attributes for the line type
298409    --
298410    l_entered_amt_idx := 3;
298411    l_accted_amt_idx  := 8;
298412    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
298413    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
298414    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
298415    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
298416    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
298417    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
298418    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
298419    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
298420    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
298421    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
298422    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
298423    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
298424    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
298425    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
298426    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
298427    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
298428    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
298429 
298430    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
298431    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
298432 
298433    ---------------------------------------------------------------------------------------------------------------
298434    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
298435    ---------------------------------------------------------------------------------------------------------------
298436    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
298437 
298438    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
298439    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
298440 
298441    IF xla_accounting_cache_pkg.GetValueChar
298442          (p_source_code         => 'LEDGER_CATEGORY_CODE'
298443          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
298444    AND l_bflow_method_code = 'PRIOR_ENTRY'
298445 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
298446    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
298447          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
298448        )
298449    THEN
298450          xla_ae_lines_pkg.BflowUpgEntry
298451            (p_business_method_code    => l_bflow_method_code
298452            ,p_business_class_code     => l_bflow_class_code
298453            ,p_balance_type            => l_balance_type_code);
298454    ELSE
298455       NULL;
298456 -- No business flow processing for business flow method of NONE.
298457    END IF;
298458 
298459    --
298460    -- call analytical criteria
298461    --
298462    
298463    --
298464    -- call description
298465    --
298466    
298467 xla_ae_lines_pkg.SetLineDescription(
298468    p_ae_header_id => l_ae_header_id
298469   ,p_description  => Description_1 (
298470      p_application_id         => p_application_id
298471    , p_ae_header_id           => l_ae_header_id 
298472 , p_source_1 => p_source_1
298473 , p_source_2 => p_source_2
298474 , p_source_3 => p_source_3
298475 , p_source_4 => p_source_4
298476 , p_source_5 => p_source_5
298477    )
298478 );
298479 
298480 
298481    --
298482    -- call ADRs
298483    -- Bug 4922099
298484    --
298485    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
298486         (NVL(l_actual_upg_option, 'N') = 'O') OR
298487         (NVL(l_enc_upg_option, 'N') = 'O')
298488       )
298489    THEN
298490    NULL;
298491    --
298492    --
298493    
298494   l_ccid := AcctDerRule_6(
298495            p_application_id           => p_application_id
298496          , p_ae_header_id             => l_ae_header_id 
298497 , p_source_11 => p_source_11
298498          , x_transaction_coa_id       => l_adr_transaction_coa_id
298499          , x_accounting_coa_id        => l_adr_accounting_coa_id
298500          , x_value_type_code          => l_adr_value_type_code
298501          , p_side                     => 'NA'
298502    );
298503 
298504    xla_ae_lines_pkg.set_ccid(
298505     p_code_combination_id          => l_ccid
298506   , p_value_type_code              => l_adr_value_type_code
298507   , p_transaction_coa_id           => l_adr_transaction_coa_id
298508   , p_accounting_coa_id            => l_adr_accounting_coa_id
298509   , p_adr_code                     => 'CST_DEFAULT'
298510   , p_adr_type_code                => 'S'
298511   , p_component_type               => l_component_type
298512   , p_component_code               => l_component_code
298513   , p_component_type_code          => l_component_type_code
298514   , p_component_appl_id            => l_component_appl_id
298515   , p_amb_context_code             => l_amb_context_code
298516   , p_side                         => 'NA'
298517   );
298518 
298519 
298520    --
298521    --
298522    END IF;
298523    --
298524    -- Bug 4922099
298525    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
298526           (NVL(l_enc_upg_option, 'N') = 'O')
298527         ) AND
298528         (l_bflow_method_code = 'PRIOR_ENTRY')
298529       )
298530    THEN
298531       IF
298532       --
298533       1 = 2
298534       --
298535       THEN
298536       xla_accounting_err_pkg.build_message
298537                                     (p_appli_s_name            => 'XLA'
298538                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
298539                                     ,p_token_1                 => 'LINE_NUMBER'
298540                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
298541                                     ,p_token_2                 => 'LINE_TYPE_NAME'
298542                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
298543                                                                              l_component_type
298544                                                                             ,l_component_code
298545                                                                             ,l_component_type_code
298546                                                                             ,l_component_appl_id
298547                                                                             ,l_amb_context_code
298548                                                                             ,l_entity_code
298549                                                                             ,l_event_class_code
298550                                                                            )
298551                                     ,p_token_3                 => 'OWNER'
298552                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
298553                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
298554                                                                           ,p_lookup_code    => l_component_type_code
298555                                                                          )
298556                                     ,p_token_4                 => 'PRODUCT_NAME'
298557                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
298558                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
298559                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
298560                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
298561                                     ,p_ae_header_id            =>  NULL
298562                                        );
298563 
298564         IF (C_LEVEL_ERROR>= g_log_level) THEN
298565                  trace
298566                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
298567                       ,p_level    => C_LEVEL_ERROR
298568                       ,p_module   => l_log_module);
298569         END IF;
298570       END IF;
298571    END IF;
298572    --
298573    --
298574    ------------------------------------------------------------------------------------------------
298575    -- 4219869 Business Flow
298576    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
298577    -- Prior Entry.  Currently, the following code is always generated.
298578    ------------------------------------------------------------------------------------------------
298579    XLA_AE_LINES_PKG.ValidateCurrentLine;
298580 
298581    ------------------------------------------------------------------------------------
298582    -- 4219869 Business Flow
298583    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
298584    ------------------------------------------------------------------------------------
298585    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
298586 
298587    ----------------------------------------------------------------------------------
298588    -- 4219869 Business Flow
298589    -- Update journal entry status -- Need to generate this within IF <condition>
298590    ----------------------------------------------------------------------------------
298591    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
298592          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
298593          ,p_balance_type_code => l_balance_type_code
298594          );
298595 
298596    -------------------------------------------------------------------------------------------
298597    -- 4262811 - Generate the Accrual Reversal lines
298598    -------------------------------------------------------------------------------------------
298599    BEGIN
298600       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
298601                               (g_array_event(p_event_id).array_value_num('header_index'));
298602       IF l_acc_rev_flag IS NULL THEN
298603          l_acc_rev_flag := 'N';
298604       END IF;
298605    EXCEPTION
298606       WHEN OTHERS THEN
298607          l_acc_rev_flag := 'N';
298608    END;
298609    --
298610    IF (l_acc_rev_flag = 'Y') THEN
298611 
298612        -- 4645092  ------------------------------------------------------------------------------
298613        -- To allow MPA report to determine if it should generate report process
298614        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
298615        ------------------------------------------------------------------------------------------
298616 
298617        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
298618        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
298619    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
298620    -- call ADRs
298621    -- Bug 4922099
298622    --
298623    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
298624         (NVL(l_actual_upg_option, 'N') = 'O') OR
298625         (NVL(l_enc_upg_option, 'N') = 'O')
298626       )
298627    THEN
298628    NULL;
298629    --
298630    --
298631    
298632   l_ccid := AcctDerRule_6(
298633            p_application_id           => p_application_id
298634          , p_ae_header_id             => l_ae_header_id 
298635 , p_source_11 => p_source_11
298636          , x_transaction_coa_id       => l_adr_transaction_coa_id
298637          , x_accounting_coa_id        => l_adr_accounting_coa_id
298638          , x_value_type_code          => l_adr_value_type_code
298639          , p_side                     => 'NA'
298640    );
298641 
298642    xla_ae_lines_pkg.set_ccid(
298643     p_code_combination_id          => l_ccid
298644   , p_value_type_code              => l_adr_value_type_code
298645   , p_transaction_coa_id           => l_adr_transaction_coa_id
298646   , p_accounting_coa_id            => l_adr_accounting_coa_id
298647   , p_adr_code                     => 'CST_DEFAULT'
298648   , p_adr_type_code                => 'S'
298649   , p_component_type               => l_component_type
298650   , p_component_code               => l_component_code
298651   , p_component_type_code          => l_component_type_code
298652   , p_component_appl_id            => l_component_appl_id
298653   , p_amb_context_code             => l_amb_context_code
298654   , p_side                         => 'NA'
298655   );
298656 
298657 
298658    --
298659    --
298660    END IF;
298661 
298662        --
298663        -- Update the line information that should be overwritten
298664        --
298665        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
298666                                          p_header_num   => 1);
298667        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
298668 
298669        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
298670 
298671        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
298672           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
298673        END IF;
298674 
298675       --
298676       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
298677       --
298678       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
298679           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
298680       ELSE
298681           ---------------------------------------------------------------------------------------------------
298682           -- 4262811a Switch Sign
298683           ---------------------------------------------------------------------------------------------------
298684           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
298685           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
298686                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
298687           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
298688                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
298689           -- 5132302
298690           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
298691                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
298692 
298693       END IF;
298694 
298695       -- 4955764
298696       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
298697       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
298698 
298699 
298700       XLA_AE_LINES_PKG.ValidateCurrentLine;
298701       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
298702 
298703       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
298704                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
298705                ,p_balance_type_code => l_balance_type_code);
298706 
298707    END IF;
298708 
298709    -----------------------------------------------------------------------------------------
298710    -- 4262811 Multiperiod Accounting
298711    -----------------------------------------------------------------------------------------
298712      -- No MPA option is assigned.
298713 
298714 
298715 END IF;
298716 END IF;
298717 --
298718 
298719 --
298720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
298721    trace
298722       (p_msg      => 'END of AcctLineType_532'
298723       ,p_level    => C_LEVEL_PROCEDURE
298724       ,p_module   => l_log_module);
298725 END IF;
298726 --
298727 EXCEPTION
298728   WHEN xla_exceptions_pkg.application_exception THEN
298729       RAISE;
298730   WHEN OTHERS THEN
298731        xla_exceptions_pkg.raise_message
298732            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_532');
298733 END AcctLineType_532;
298734 --
298735 
298736 ---------------------------------------
298737 --
298738 -- PRIVATE FUNCTION
298739 --         AcctLineType_533
298740 --
298741 ---------------------------------------
298742 PROCEDURE AcctLineType_533 (
298743   p_application_id        IN NUMBER
298744  ,p_event_id              IN NUMBER
298745  ,p_calculate_acctd_flag  IN VARCHAR2
298746  ,p_calculate_g_l_flag    IN VARCHAR2
298747  ,p_actual_flag           IN OUT VARCHAR2
298748  ,p_balance_type_code     OUT VARCHAR2
298749  ,p_gain_or_loss_ref      OUT VARCHAR2
298750  
298751 --TRANSACTION_ID
298752  , p_source_1            IN NUMBER
298753 --Transaction Unit of Measure Code
298754  , p_source_4            IN VARCHAR2
298755 --Primary Quantity of the Transaction
298756  , p_source_6            IN NUMBER
298757 --WIP Transaction Type
298758  , p_source_7            IN NUMBER
298759  , p_source_7_meaning    IN VARCHAR2
298760 --Cost Management Default Account
298761  , p_source_11            IN NUMBER
298762 --DISTRIBUTION_IDENTIFIER
298763  , p_source_84            IN NUMBER
298764 --Distribution Type
298765  , p_source_85            IN VARCHAR2
298766  , p_source_85_meaning    IN VARCHAR2
298767 --Entered Currency Code
298768  , p_source_88            IN VARCHAR2
298769 --Entered Amount
298770  , p_source_91            IN NUMBER
298771 --Currency Conversion Date
298772  , p_source_92            IN DATE
298773 --Currency Conversion Rate
298774  , p_source_93            IN NUMBER
298775 --Accounted Amount
298776  , p_source_95            IN NUMBER
298777 --Accounting Line Type
298778  , p_source_97            IN NUMBER
298779 )
298780 IS
298781 
298782 l_component_type              VARCHAR2(80);
298783 l_component_code              VARCHAR2(30);
298784 l_component_type_code         VARCHAR2(1);
298785 l_component_appl_id           INTEGER;
298786 l_amb_context_code            VARCHAR2(30);
298787 l_entity_code                 VARCHAR2(30);
298788 l_event_class_code            VARCHAR2(30);
298789 l_ae_header_id                NUMBER;
298790 l_event_type_code             VARCHAR2(30);
298791 l_line_definition_code        VARCHAR2(30);
298792 l_line_definition_owner_code  VARCHAR2(1);
298793 --
298794 -- adr variables
298795 l_segment                     VARCHAR2(30);
298796 l_ccid                        NUMBER;
298797 l_adr_transaction_coa_id      NUMBER;
298798 l_adr_accounting_coa_id       NUMBER;
298799 l_adr_flexfield_segment_code  VARCHAR2(30);
298800 l_adr_flex_value_set_id       NUMBER;
298801 l_adr_value_type_code         VARCHAR2(30);
298802 l_adr_value_combination_id    NUMBER;
298803 l_adr_value_segment_code      VARCHAR2(30);
298804 
298805 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
298806 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
298807 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
298808 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
298809 
298810 -- 4262811 Variables ------------------------------------------------------------------------------------------
298811 l_entered_amt_idx             NUMBER;
298812 l_accted_amt_idx              NUMBER;
298813 l_acc_rev_flag                VARCHAR2(1);
298814 l_accrual_line_num            NUMBER;
298815 l_tmp_amt                     NUMBER;
298816 l_acc_rev_natural_side_code   VARCHAR2(1);
298817 
298818 l_num_entries                 NUMBER;
298819 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
298820 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
298821 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
298822 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
298823 l_recog_line_1                NUMBER;
298824 l_recog_line_2                NUMBER;
298825 
298826 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
298827 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
298828 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
298829 
298830 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
298831 
298832 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
298833 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
298834 
298835 ---------------------------------------------------------------------------------------------------------------
298836 
298837 
298838 --
298839 -- bulk performance
298840 --
298841 l_balance_type_code           VARCHAR2(1);
298842 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
298843 l_log_module                  VARCHAR2(240);
298844 
298845 --
298846 -- Upgrade strategy
298847 --
298848 l_actual_upg_option           VARCHAR2(1);
298849 l_enc_upg_option           VARCHAR2(1);
298850 
298851 --
298852 BEGIN
298853 --
298854 IF g_log_enabled THEN
298855       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_533';
298856 END IF;
298857 --
298858 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
298859 
298860       trace
298861          (p_msg      => 'BEGIN of AcctLineType_533'
298862          ,p_level    => C_LEVEL_PROCEDURE
298863          ,p_module   => l_log_module);
298864 
298865 END IF;
298866 --
298867 l_component_type             := 'AMB_JLT';
298868 l_component_code             := 'WIP_VALUATION';
298869 l_component_type_code        := 'S';
298870 l_component_appl_id          :=  707;
298871 l_amb_context_code           := 'DEFAULT';
298872 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
298873 l_event_class_code           := 'OSP';
298874 l_event_type_code            := 'OSP';
298875 l_line_definition_owner_code := 'S';
298876 l_line_definition_code       := 'PI_OSP';
298877 --
298878 l_balance_type_code          := 'A';
298879 l_segment                     := NULL;
298880 l_ccid                        := NULL;
298881 l_adr_transaction_coa_id      := NULL;
298882 l_adr_accounting_coa_id       := NULL;
298883 l_adr_flexfield_segment_code  := NULL;
298884 l_adr_flex_value_set_id       := NULL;
298885 l_adr_value_type_code         := NULL;
298886 l_adr_value_combination_id    := NULL;
298887 l_adr_value_segment_code      := NULL;
298888 
298889 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
298890 l_bflow_class_code           := '';    -- 4219869 Business Flow
298891 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
298892 l_budgetary_control_flag     := 'N';
298893 
298894 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
298895 l_bflow_applied_to_amt       := NULL; -- 5132302
298896 l_entered_amt_idx            := NULL;          -- 4262811
298897 l_accted_amt_idx             := NULL;          -- 4262811
298898 l_acc_rev_flag               := NULL;          -- 4262811
298899 l_accrual_line_num           := NULL;          -- 4262811
298900 l_tmp_amt                    := NULL;          -- 4262811
298901 --
298902  
298903 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
298904     l_balance_type_code <> 'B' THEN
298905 IF NVL(p_source_97,9E125) =  7
298906  THEN 
298907 
298908    --
298909    XLA_AE_LINES_PKG.SetNewLine;
298910 
298911    p_balance_type_code          := l_balance_type_code;
298912    -- set the flag so later we will know whether the gain loss line needs to be created
298913    
298914    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
298915      p_actual_flag :='A';
298916    END IF;
298917 
298918    --
298919    -- bulk performance
298920    --
298921    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
298922                                       p_header_num   => 0); -- 4262811
298923    --
298924    -- set accounting line options
298925    --
298926    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
298927            p_natural_side_code          => 'D'
298928          , p_gain_or_loss_flag          => 'N'
298929          , p_gl_transfer_mode_code      => 'S'
298930          , p_acct_entry_type_code       => 'A'
298931          , p_switch_side_flag           => 'Y'
298932          , p_merge_duplicate_code       => 'N'
298933          );
298934    --
298935    l_acc_rev_natural_side_code := 'C';  -- 4262811
298936    -- 
298937    --
298938    -- set accounting line type info
298939    --
298940    xla_ae_lines_pkg.SetAcctLineType
298941       (p_component_type             => l_component_type
298942       ,p_event_type_code            => l_event_type_code
298943       ,p_line_definition_owner_code => l_line_definition_owner_code
298944       ,p_line_definition_code       => l_line_definition_code
298945       ,p_accounting_line_code       => l_component_code
298946       ,p_accounting_line_type_code  => l_component_type_code
298947       ,p_accounting_line_appl_id    => l_component_appl_id
298948       ,p_amb_context_code           => l_amb_context_code
298949       ,p_entity_code                => l_entity_code
298950       ,p_event_class_code           => l_event_class_code);
298951    --
298952    -- set accounting class
298953    --
298954    xla_ae_lines_pkg.SetAcctClass(
298955            p_accounting_class_code  => 'WIP_VALUATION'
298956          , p_ae_header_id           => l_ae_header_id
298957          );
298958 
298959    --
298960    -- set rounding class
298961    --
298962    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
298963                       'WIP_VALUATION';
298964 
298965    --
298966    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
298967    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
298968    --
298969    -- bulk performance
298970    --
298971    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
298972 
298973    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
298974       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
298975 
298976    -- 4955764
298977    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
298978       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
298979 
298980    -- 4458381 Public Sector Enh
298981    
298982    --
298983    -- set accounting attributes for the line type
298984    --
298985    l_entered_amt_idx := 3;
298986    l_accted_amt_idx  := 8;
298987    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
298988    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
298989    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
298990    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
298991    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
298992    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
298993    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
298994    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
298995    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
298996    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
298997    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
298998    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
298999    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
299000    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
299001    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_93);
299002    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
299003    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
299004 
299005    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
299006    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
299007 
299008    ---------------------------------------------------------------------------------------------------------------
299009    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
299010    ---------------------------------------------------------------------------------------------------------------
299011    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
299012 
299013    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
299014    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
299015 
299016    IF xla_accounting_cache_pkg.GetValueChar
299017          (p_source_code         => 'LEDGER_CATEGORY_CODE'
299018          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
299019    AND l_bflow_method_code = 'PRIOR_ENTRY'
299020 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
299021    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
299022          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
299023        )
299024    THEN
299025          xla_ae_lines_pkg.BflowUpgEntry
299026            (p_business_method_code    => l_bflow_method_code
299027            ,p_business_class_code     => l_bflow_class_code
299028            ,p_balance_type            => l_balance_type_code);
299029    ELSE
299030       NULL;
299031 -- No business flow processing for business flow method of NONE.
299032    END IF;
299033 
299034    --
299035    -- call analytical criteria
299036    --
299037    
299038    --
299039    -- call description
299040    --
299041    
299042 xla_ae_lines_pkg.SetLineDescription(
299043    p_ae_header_id => l_ae_header_id
299044   ,p_description  => Description_2 (
299045      p_application_id         => p_application_id
299046    , p_ae_header_id           => l_ae_header_id 
299047 , p_source_1 => p_source_1
299048 , p_source_4 => p_source_4
299049 , p_source_6 => p_source_6
299050 , p_source_7 => p_source_7
299051 , p_source_7_meaning => p_source_7_meaning
299052    )
299053 );
299054 
299055 
299056    --
299057    -- call ADRs
299058    -- Bug 4922099
299059    --
299060    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
299061         (NVL(l_actual_upg_option, 'N') = 'O') OR
299062         (NVL(l_enc_upg_option, 'N') = 'O')
299063       )
299064    THEN
299065    NULL;
299066    --
299067    --
299068    
299069   l_ccid := AcctDerRule_6(
299070            p_application_id           => p_application_id
299071          , p_ae_header_id             => l_ae_header_id 
299072 , p_source_11 => p_source_11
299073          , x_transaction_coa_id       => l_adr_transaction_coa_id
299074          , x_accounting_coa_id        => l_adr_accounting_coa_id
299075          , x_value_type_code          => l_adr_value_type_code
299076          , p_side                     => 'NA'
299077    );
299078 
299079    xla_ae_lines_pkg.set_ccid(
299080     p_code_combination_id          => l_ccid
299081   , p_value_type_code              => l_adr_value_type_code
299082   , p_transaction_coa_id           => l_adr_transaction_coa_id
299083   , p_accounting_coa_id            => l_adr_accounting_coa_id
299084   , p_adr_code                     => 'CST_DEFAULT'
299085   , p_adr_type_code                => 'S'
299086   , p_component_type               => l_component_type
299087   , p_component_code               => l_component_code
299088   , p_component_type_code          => l_component_type_code
299089   , p_component_appl_id            => l_component_appl_id
299090   , p_amb_context_code             => l_amb_context_code
299091   , p_side                         => 'NA'
299092   );
299093 
299094 
299095    --
299096    --
299097    END IF;
299098    --
299099    -- Bug 4922099
299100    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
299101           (NVL(l_enc_upg_option, 'N') = 'O')
299102         ) AND
299103         (l_bflow_method_code = 'PRIOR_ENTRY')
299104       )
299105    THEN
299106       IF
299107       --
299108       1 = 2
299109       --
299110       THEN
299111       xla_accounting_err_pkg.build_message
299112                                     (p_appli_s_name            => 'XLA'
299113                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
299114                                     ,p_token_1                 => 'LINE_NUMBER'
299115                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
299116                                     ,p_token_2                 => 'LINE_TYPE_NAME'
299117                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
299118                                                                              l_component_type
299119                                                                             ,l_component_code
299120                                                                             ,l_component_type_code
299121                                                                             ,l_component_appl_id
299122                                                                             ,l_amb_context_code
299123                                                                             ,l_entity_code
299124                                                                             ,l_event_class_code
299125                                                                            )
299126                                     ,p_token_3                 => 'OWNER'
299127                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
299128                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
299129                                                                           ,p_lookup_code    => l_component_type_code
299130                                                                          )
299131                                     ,p_token_4                 => 'PRODUCT_NAME'
299132                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
299133                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
299134                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
299135                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
299136                                     ,p_ae_header_id            =>  NULL
299137                                        );
299138 
299139         IF (C_LEVEL_ERROR>= g_log_level) THEN
299140                  trace
299141                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
299142                       ,p_level    => C_LEVEL_ERROR
299143                       ,p_module   => l_log_module);
299144         END IF;
299145       END IF;
299146    END IF;
299147    --
299148    --
299149    ------------------------------------------------------------------------------------------------
299150    -- 4219869 Business Flow
299151    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
299152    -- Prior Entry.  Currently, the following code is always generated.
299153    ------------------------------------------------------------------------------------------------
299154    XLA_AE_LINES_PKG.ValidateCurrentLine;
299155 
299156    ------------------------------------------------------------------------------------
299157    -- 4219869 Business Flow
299158    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
299159    ------------------------------------------------------------------------------------
299160    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
299161 
299162    ----------------------------------------------------------------------------------
299163    -- 4219869 Business Flow
299164    -- Update journal entry status -- Need to generate this within IF <condition>
299165    ----------------------------------------------------------------------------------
299166    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
299167          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
299168          ,p_balance_type_code => l_balance_type_code
299169          );
299170 
299171    -------------------------------------------------------------------------------------------
299172    -- 4262811 - Generate the Accrual Reversal lines
299173    -------------------------------------------------------------------------------------------
299174    BEGIN
299175       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
299176                               (g_array_event(p_event_id).array_value_num('header_index'));
299177       IF l_acc_rev_flag IS NULL THEN
299178          l_acc_rev_flag := 'N';
299179       END IF;
299180    EXCEPTION
299181       WHEN OTHERS THEN
299182          l_acc_rev_flag := 'N';
299183    END;
299184    --
299185    IF (l_acc_rev_flag = 'Y') THEN
299186 
299187        -- 4645092  ------------------------------------------------------------------------------
299188        -- To allow MPA report to determine if it should generate report process
299189        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
299190        ------------------------------------------------------------------------------------------
299191 
299192        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
299193        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
299194    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
299195    -- call ADRs
299196    -- Bug 4922099
299197    --
299198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
299199         (NVL(l_actual_upg_option, 'N') = 'O') OR
299200         (NVL(l_enc_upg_option, 'N') = 'O')
299201       )
299202    THEN
299203    NULL;
299204    --
299205    --
299206    
299207   l_ccid := AcctDerRule_6(
299208            p_application_id           => p_application_id
299209          , p_ae_header_id             => l_ae_header_id 
299210 , p_source_11 => p_source_11
299211          , x_transaction_coa_id       => l_adr_transaction_coa_id
299212          , x_accounting_coa_id        => l_adr_accounting_coa_id
299213          , x_value_type_code          => l_adr_value_type_code
299214          , p_side                     => 'NA'
299215    );
299216 
299217    xla_ae_lines_pkg.set_ccid(
299218     p_code_combination_id          => l_ccid
299219   , p_value_type_code              => l_adr_value_type_code
299220   , p_transaction_coa_id           => l_adr_transaction_coa_id
299221   , p_accounting_coa_id            => l_adr_accounting_coa_id
299222   , p_adr_code                     => 'CST_DEFAULT'
299223   , p_adr_type_code                => 'S'
299224   , p_component_type               => l_component_type
299225   , p_component_code               => l_component_code
299226   , p_component_type_code          => l_component_type_code
299227   , p_component_appl_id            => l_component_appl_id
299228   , p_amb_context_code             => l_amb_context_code
299229   , p_side                         => 'NA'
299230   );
299231 
299232 
299233    --
299234    --
299235    END IF;
299236 
299237        --
299238        -- Update the line information that should be overwritten
299239        --
299240        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
299241                                          p_header_num   => 1);
299242        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
299243 
299244        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
299245 
299246        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
299247           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
299248        END IF;
299249 
299250       --
299251       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
299252       --
299253       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
299254           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
299255       ELSE
299256           ---------------------------------------------------------------------------------------------------
299257           -- 4262811a Switch Sign
299258           ---------------------------------------------------------------------------------------------------
299259           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
299260           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
299261                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
299262           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
299263                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
299264           -- 5132302
299265           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
299266                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
299267 
299268       END IF;
299269 
299270       -- 4955764
299271       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
299272       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
299273 
299274 
299275       XLA_AE_LINES_PKG.ValidateCurrentLine;
299276       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
299277 
299278       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
299279                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
299280                ,p_balance_type_code => l_balance_type_code);
299281 
299282    END IF;
299283 
299284    -----------------------------------------------------------------------------------------
299285    -- 4262811 Multiperiod Accounting
299286    -----------------------------------------------------------------------------------------
299287      -- No MPA option is assigned.
299288 
299289 
299290 END IF;
299291 END IF;
299292 --
299293 
299294 --
299295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
299296    trace
299297       (p_msg      => 'END of AcctLineType_533'
299298       ,p_level    => C_LEVEL_PROCEDURE
299299       ,p_module   => l_log_module);
299300 END IF;
299301 --
299302 EXCEPTION
299303   WHEN xla_exceptions_pkg.application_exception THEN
299304       RAISE;
299305   WHEN OTHERS THEN
299306        xla_exceptions_pkg.raise_message
299307            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_533');
299308 END AcctLineType_533;
299309 --
299310 
299311 ---------------------------------------
299312 --
299313 -- PRIVATE FUNCTION
299314 --         AcctLineType_534
299315 --
299316 ---------------------------------------
299317 PROCEDURE AcctLineType_534 (
299318   p_application_id        IN NUMBER
299319  ,p_event_id              IN NUMBER
299320  ,p_calculate_acctd_flag  IN VARCHAR2
299321  ,p_calculate_g_l_flag    IN VARCHAR2
299322  ,p_actual_flag           IN OUT VARCHAR2
299323  ,p_balance_type_code     OUT VARCHAR2
299324  ,p_gain_or_loss_ref      OUT VARCHAR2
299325  
299326 --Cost Management Default Account
299327  , p_source_11            IN NUMBER
299328 --DISTRIBUTION_IDENTIFIER
299329  , p_source_84            IN NUMBER
299330 --Distribution Type
299331  , p_source_85            IN VARCHAR2
299332  , p_source_85_meaning    IN VARCHAR2
299333 --Entered Currency Code
299334  , p_source_88            IN VARCHAR2
299335 --Entered Amount
299336  , p_source_91            IN NUMBER
299337 --Currency Conversion Date
299338  , p_source_92            IN DATE
299339 --Currency Conversion Rate
299340  , p_source_93            IN NUMBER
299341 --Currency Conversion Type
299342  , p_source_94            IN VARCHAR2
299343 --Accounted Amount
299344  , p_source_95            IN NUMBER
299345 --Accounting Line Type
299346  , p_source_97            IN NUMBER
299347 )
299348 IS
299349 
299350 l_component_type              VARCHAR2(80);
299351 l_component_code              VARCHAR2(30);
299352 l_component_type_code         VARCHAR2(1);
299353 l_component_appl_id           INTEGER;
299354 l_amb_context_code            VARCHAR2(30);
299355 l_entity_code                 VARCHAR2(30);
299356 l_event_class_code            VARCHAR2(30);
299357 l_ae_header_id                NUMBER;
299358 l_event_type_code             VARCHAR2(30);
299359 l_line_definition_code        VARCHAR2(30);
299360 l_line_definition_owner_code  VARCHAR2(1);
299361 --
299362 -- adr variables
299363 l_segment                     VARCHAR2(30);
299364 l_ccid                        NUMBER;
299365 l_adr_transaction_coa_id      NUMBER;
299366 l_adr_accounting_coa_id       NUMBER;
299367 l_adr_flexfield_segment_code  VARCHAR2(30);
299368 l_adr_flex_value_set_id       NUMBER;
299369 l_adr_value_type_code         VARCHAR2(30);
299370 l_adr_value_combination_id    NUMBER;
299371 l_adr_value_segment_code      VARCHAR2(30);
299372 
299373 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
299374 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
299375 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
299376 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
299377 
299378 -- 4262811 Variables ------------------------------------------------------------------------------------------
299379 l_entered_amt_idx             NUMBER;
299380 l_accted_amt_idx              NUMBER;
299381 l_acc_rev_flag                VARCHAR2(1);
299382 l_accrual_line_num            NUMBER;
299383 l_tmp_amt                     NUMBER;
299384 l_acc_rev_natural_side_code   VARCHAR2(1);
299385 
299386 l_num_entries                 NUMBER;
299387 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
299388 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
299389 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
299390 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
299391 l_recog_line_1                NUMBER;
299392 l_recog_line_2                NUMBER;
299393 
299394 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
299395 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
299396 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
299397 
299398 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
299399 
299400 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
299401 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
299402 
299403 ---------------------------------------------------------------------------------------------------------------
299404 
299405 
299406 --
299407 -- bulk performance
299408 --
299409 l_balance_type_code           VARCHAR2(1);
299410 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
299411 l_log_module                  VARCHAR2(240);
299412 
299413 --
299414 -- Upgrade strategy
299415 --
299416 l_actual_upg_option           VARCHAR2(1);
299417 l_enc_upg_option           VARCHAR2(1);
299418 
299419 --
299420 BEGIN
299421 --
299422 IF g_log_enabled THEN
299423       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_534';
299424 END IF;
299425 --
299426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
299427 
299428       trace
299429          (p_msg      => 'BEGIN of AcctLineType_534'
299430          ,p_level    => C_LEVEL_PROCEDURE
299431          ,p_module   => l_log_module);
299432 
299433 END IF;
299434 --
299435 l_component_type             := 'AMB_JLT';
299436 l_component_code             := 'WIP_VALUATION';
299437 l_component_type_code        := 'S';
299438 l_component_appl_id          :=  707;
299439 l_amb_context_code           := 'DEFAULT';
299440 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
299441 l_event_class_code           := 'VARIANCE';
299442 l_event_type_code            := 'VARIANCE_ALL';
299443 l_line_definition_owner_code := 'S';
299444 l_line_definition_code       := 'VARIANCE';
299445 --
299446 l_balance_type_code          := 'A';
299447 l_segment                     := NULL;
299448 l_ccid                        := NULL;
299449 l_adr_transaction_coa_id      := NULL;
299450 l_adr_accounting_coa_id       := NULL;
299451 l_adr_flexfield_segment_code  := NULL;
299452 l_adr_flex_value_set_id       := NULL;
299453 l_adr_value_type_code         := NULL;
299454 l_adr_value_combination_id    := NULL;
299455 l_adr_value_segment_code      := NULL;
299456 
299457 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
299458 l_bflow_class_code           := '';    -- 4219869 Business Flow
299459 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
299460 l_budgetary_control_flag     := 'N';
299461 
299462 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
299463 l_bflow_applied_to_amt       := NULL; -- 5132302
299464 l_entered_amt_idx            := NULL;          -- 4262811
299465 l_accted_amt_idx             := NULL;          -- 4262811
299466 l_acc_rev_flag               := NULL;          -- 4262811
299467 l_accrual_line_num           := NULL;          -- 4262811
299468 l_tmp_amt                    := NULL;          -- 4262811
299469 --
299470  
299471 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
299472     l_balance_type_code <> 'B' THEN
299473 IF NVL(p_source_97,9E125) =  7
299474  THEN 
299475 
299476    --
299477    XLA_AE_LINES_PKG.SetNewLine;
299478 
299479    p_balance_type_code          := l_balance_type_code;
299480    -- set the flag so later we will know whether the gain loss line needs to be created
299481    
299482    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
299483      p_actual_flag :='A';
299484    END IF;
299485 
299486    --
299487    -- bulk performance
299488    --
299489    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
299490                                       p_header_num   => 0); -- 4262811
299491    --
299492    -- set accounting line options
299493    --
299494    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
299495            p_natural_side_code          => 'D'
299496          , p_gain_or_loss_flag          => 'N'
299497          , p_gl_transfer_mode_code      => 'S'
299498          , p_acct_entry_type_code       => 'A'
299499          , p_switch_side_flag           => 'Y'
299500          , p_merge_duplicate_code       => 'N'
299501          );
299502    --
299503    l_acc_rev_natural_side_code := 'C';  -- 4262811
299504    -- 
299505    --
299506    -- set accounting line type info
299507    --
299508    xla_ae_lines_pkg.SetAcctLineType
299509       (p_component_type             => l_component_type
299510       ,p_event_type_code            => l_event_type_code
299511       ,p_line_definition_owner_code => l_line_definition_owner_code
299512       ,p_line_definition_code       => l_line_definition_code
299513       ,p_accounting_line_code       => l_component_code
299514       ,p_accounting_line_type_code  => l_component_type_code
299515       ,p_accounting_line_appl_id    => l_component_appl_id
299516       ,p_amb_context_code           => l_amb_context_code
299517       ,p_entity_code                => l_entity_code
299518       ,p_event_class_code           => l_event_class_code);
299519    --
299520    -- set accounting class
299521    --
299522    xla_ae_lines_pkg.SetAcctClass(
299523            p_accounting_class_code  => 'WIP_VALUATION'
299524          , p_ae_header_id           => l_ae_header_id
299525          );
299526 
299527    --
299528    -- set rounding class
299529    --
299530    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
299531                       'WIP_VALUATION';
299532 
299533    --
299534    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
299535    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
299536    --
299537    -- bulk performance
299538    --
299539    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
299540 
299541    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
299542       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
299543 
299544    -- 4955764
299545    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
299546       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
299547 
299548    -- 4458381 Public Sector Enh
299549    
299550    --
299551    -- set accounting attributes for the line type
299552    --
299553    l_entered_amt_idx := 3;
299554    l_accted_amt_idx  := 8;
299555    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
299556    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
299557    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
299558    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
299559    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
299560    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
299561    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
299562    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
299563    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
299564    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
299565    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
299566    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
299567    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
299568    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
299569    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
299570    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
299571    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
299572 
299573    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
299574    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
299575 
299576    ---------------------------------------------------------------------------------------------------------------
299577    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
299578    ---------------------------------------------------------------------------------------------------------------
299579    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
299580 
299581    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
299582    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
299583 
299584    IF xla_accounting_cache_pkg.GetValueChar
299585          (p_source_code         => 'LEDGER_CATEGORY_CODE'
299586          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
299587    AND l_bflow_method_code = 'PRIOR_ENTRY'
299588 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
299589    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
299590          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
299591        )
299592    THEN
299593          xla_ae_lines_pkg.BflowUpgEntry
299594            (p_business_method_code    => l_bflow_method_code
299595            ,p_business_class_code     => l_bflow_class_code
299596            ,p_balance_type            => l_balance_type_code);
299597    ELSE
299598       NULL;
299599 -- No business flow processing for business flow method of NONE.
299600    END IF;
299601 
299602    --
299603    -- call analytical criteria
299604    --
299605    
299606    --
299607    -- call description
299608    --
299609    -- No description or it is inherited.
299610    --
299611    -- call ADRs
299612    -- Bug 4922099
299613    --
299614    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
299615         (NVL(l_actual_upg_option, 'N') = 'O') OR
299616         (NVL(l_enc_upg_option, 'N') = 'O')
299617       )
299618    THEN
299619    NULL;
299620    --
299621    --
299622    
299623   l_ccid := AcctDerRule_6(
299624            p_application_id           => p_application_id
299625          , p_ae_header_id             => l_ae_header_id 
299626 , p_source_11 => p_source_11
299627          , x_transaction_coa_id       => l_adr_transaction_coa_id
299628          , x_accounting_coa_id        => l_adr_accounting_coa_id
299629          , x_value_type_code          => l_adr_value_type_code
299630          , p_side                     => 'NA'
299631    );
299632 
299633    xla_ae_lines_pkg.set_ccid(
299634     p_code_combination_id          => l_ccid
299635   , p_value_type_code              => l_adr_value_type_code
299636   , p_transaction_coa_id           => l_adr_transaction_coa_id
299637   , p_accounting_coa_id            => l_adr_accounting_coa_id
299638   , p_adr_code                     => 'CST_DEFAULT'
299639   , p_adr_type_code                => 'S'
299640   , p_component_type               => l_component_type
299641   , p_component_code               => l_component_code
299642   , p_component_type_code          => l_component_type_code
299643   , p_component_appl_id            => l_component_appl_id
299644   , p_amb_context_code             => l_amb_context_code
299645   , p_side                         => 'NA'
299646   );
299647 
299648 
299649    --
299650    --
299651    END IF;
299652    --
299653    -- Bug 4922099
299654    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
299655           (NVL(l_enc_upg_option, 'N') = 'O')
299656         ) AND
299657         (l_bflow_method_code = 'PRIOR_ENTRY')
299658       )
299659    THEN
299660       IF
299661       --
299662       1 = 2
299663       --
299664       THEN
299665       xla_accounting_err_pkg.build_message
299666                                     (p_appli_s_name            => 'XLA'
299667                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
299668                                     ,p_token_1                 => 'LINE_NUMBER'
299669                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
299670                                     ,p_token_2                 => 'LINE_TYPE_NAME'
299671                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
299672                                                                              l_component_type
299673                                                                             ,l_component_code
299674                                                                             ,l_component_type_code
299675                                                                             ,l_component_appl_id
299676                                                                             ,l_amb_context_code
299677                                                                             ,l_entity_code
299678                                                                             ,l_event_class_code
299679                                                                            )
299680                                     ,p_token_3                 => 'OWNER'
299681                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
299682                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
299683                                                                           ,p_lookup_code    => l_component_type_code
299684                                                                          )
299685                                     ,p_token_4                 => 'PRODUCT_NAME'
299686                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
299687                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
299688                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
299689                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
299690                                     ,p_ae_header_id            =>  NULL
299691                                        );
299692 
299693         IF (C_LEVEL_ERROR>= g_log_level) THEN
299694                  trace
299695                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
299696                       ,p_level    => C_LEVEL_ERROR
299697                       ,p_module   => l_log_module);
299698         END IF;
299699       END IF;
299700    END IF;
299701    --
299702    --
299703    ------------------------------------------------------------------------------------------------
299704    -- 4219869 Business Flow
299705    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
299706    -- Prior Entry.  Currently, the following code is always generated.
299707    ------------------------------------------------------------------------------------------------
299708    XLA_AE_LINES_PKG.ValidateCurrentLine;
299709 
299710    ------------------------------------------------------------------------------------
299711    -- 4219869 Business Flow
299712    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
299713    ------------------------------------------------------------------------------------
299714    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
299715 
299716    ----------------------------------------------------------------------------------
299717    -- 4219869 Business Flow
299718    -- Update journal entry status -- Need to generate this within IF <condition>
299719    ----------------------------------------------------------------------------------
299720    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
299721          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
299722          ,p_balance_type_code => l_balance_type_code
299723          );
299724 
299725    -------------------------------------------------------------------------------------------
299726    -- 4262811 - Generate the Accrual Reversal lines
299727    -------------------------------------------------------------------------------------------
299728    BEGIN
299729       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
299730                               (g_array_event(p_event_id).array_value_num('header_index'));
299731       IF l_acc_rev_flag IS NULL THEN
299732          l_acc_rev_flag := 'N';
299733       END IF;
299734    EXCEPTION
299735       WHEN OTHERS THEN
299736          l_acc_rev_flag := 'N';
299737    END;
299738    --
299739    IF (l_acc_rev_flag = 'Y') THEN
299740 
299741        -- 4645092  ------------------------------------------------------------------------------
299742        -- To allow MPA report to determine if it should generate report process
299743        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
299744        ------------------------------------------------------------------------------------------
299745 
299746        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
299747        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
299748    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
299749    -- call ADRs
299750    -- Bug 4922099
299751    --
299752    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
299753         (NVL(l_actual_upg_option, 'N') = 'O') OR
299754         (NVL(l_enc_upg_option, 'N') = 'O')
299755       )
299756    THEN
299757    NULL;
299758    --
299759    --
299760    
299761   l_ccid := AcctDerRule_6(
299762            p_application_id           => p_application_id
299763          , p_ae_header_id             => l_ae_header_id 
299764 , p_source_11 => p_source_11
299765          , x_transaction_coa_id       => l_adr_transaction_coa_id
299766          , x_accounting_coa_id        => l_adr_accounting_coa_id
299767          , x_value_type_code          => l_adr_value_type_code
299768          , p_side                     => 'NA'
299769    );
299770 
299771    xla_ae_lines_pkg.set_ccid(
299772     p_code_combination_id          => l_ccid
299773   , p_value_type_code              => l_adr_value_type_code
299774   , p_transaction_coa_id           => l_adr_transaction_coa_id
299775   , p_accounting_coa_id            => l_adr_accounting_coa_id
299776   , p_adr_code                     => 'CST_DEFAULT'
299777   , p_adr_type_code                => 'S'
299778   , p_component_type               => l_component_type
299779   , p_component_code               => l_component_code
299780   , p_component_type_code          => l_component_type_code
299781   , p_component_appl_id            => l_component_appl_id
299782   , p_amb_context_code             => l_amb_context_code
299783   , p_side                         => 'NA'
299784   );
299785 
299786 
299787    --
299788    --
299789    END IF;
299790 
299791        --
299792        -- Update the line information that should be overwritten
299793        --
299794        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
299795                                          p_header_num   => 1);
299796        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
299797 
299798        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
299799 
299800        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
299801           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
299802        END IF;
299803 
299804       --
299805       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
299806       --
299807       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
299808           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
299809       ELSE
299810           ---------------------------------------------------------------------------------------------------
299811           -- 4262811a Switch Sign
299812           ---------------------------------------------------------------------------------------------------
299813           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
299814           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
299815                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
299816           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
299817                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
299818           -- 5132302
299819           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
299820                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
299821 
299822       END IF;
299823 
299824       -- 4955764
299825       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
299826       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
299827 
299828 
299829       XLA_AE_LINES_PKG.ValidateCurrentLine;
299830       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
299831 
299832       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
299833                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
299834                ,p_balance_type_code => l_balance_type_code);
299835 
299836    END IF;
299837 
299838    -----------------------------------------------------------------------------------------
299839    -- 4262811 Multiperiod Accounting
299840    -----------------------------------------------------------------------------------------
299841      -- No MPA option is assigned.
299842 
299843 
299844 END IF;
299845 END IF;
299846 --
299847 
299848 --
299849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
299850    trace
299851       (p_msg      => 'END of AcctLineType_534'
299852       ,p_level    => C_LEVEL_PROCEDURE
299853       ,p_module   => l_log_module);
299854 END IF;
299855 --
299856 EXCEPTION
299857   WHEN xla_exceptions_pkg.application_exception THEN
299858       RAISE;
299859   WHEN OTHERS THEN
299860        xla_exceptions_pkg.raise_message
299861            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_534');
299862 END AcctLineType_534;
299863 --
299864 
299865 ---------------------------------------
299866 --
299867 -- PRIVATE FUNCTION
299868 --         AcctLineType_535
299869 --
299870 ---------------------------------------
299871 PROCEDURE AcctLineType_535 (
299872   p_application_id        IN NUMBER
299873  ,p_event_id              IN NUMBER
299874  ,p_calculate_acctd_flag  IN VARCHAR2
299875  ,p_calculate_g_l_flag    IN VARCHAR2
299876  ,p_actual_flag           IN OUT VARCHAR2
299877  ,p_balance_type_code     OUT VARCHAR2
299878  ,p_gain_or_loss_ref      OUT VARCHAR2
299879  
299880 --TRANSACTION_ID
299881  , p_source_1            IN NUMBER
299882 --Item Concatenated Segments
299883  , p_source_2            IN VARCHAR2
299884 --Transaction Quantity
299885  , p_source_3            IN NUMBER
299886 --Transaction Unit of Measure Code
299887  , p_source_4            IN VARCHAR2
299888 --Inventory Transaction Type Description
299889  , p_source_5            IN VARCHAR2
299890 --Cost Element Name
299891  , p_source_15            IN NUMBER
299892 --WIP Entity Type
299893  , p_source_55            IN NUMBER
299894  , p_source_55_meaning    IN VARCHAR2
299895 --Discrete Job Material Account
299896  , p_source_63            IN NUMBER
299897 --Discrete Job Material Overhead Account
299898  , p_source_64            IN NUMBER
299899 --Discrete Job Resource Account
299900  , p_source_65            IN NUMBER
299901 --Discrete Job Outside Processing Account
299902  , p_source_66            IN NUMBER
299903 --Discrete Job Overhead Account
299904  , p_source_67            IN NUMBER
299905 --Repetitive Schedule Material Account
299906  , p_source_68            IN NUMBER
299907 --Repetitive Schedule Material Overhead Account
299908  , p_source_69            IN NUMBER
299909 --Repetitive Schedule Resource Account
299910  , p_source_70            IN NUMBER
299911 --Repetitive Schedule Outside Processing Account
299912  , p_source_71            IN NUMBER
299913 --Repetitive Schedule Overhead Account
299914  , p_source_72            IN NUMBER
299915 --Flow Schedule Material Account
299916  , p_source_73            IN NUMBER
299917 --Flow Schedule Material Overhead Account
299918  , p_source_74            IN NUMBER
299919 --Flow Schedule Resource Account
299920  , p_source_75            IN NUMBER
299921 --Flow Schedule Outside Processing Account
299922  , p_source_76            IN NUMBER
299923 --Flow Schedule Overhead Account
299924  , p_source_77            IN NUMBER
299925 --DISTRIBUTION_IDENTIFIER
299926  , p_source_84            IN NUMBER
299927 --Distribution Type
299928  , p_source_85            IN VARCHAR2
299929  , p_source_85_meaning    IN VARCHAR2
299930 --Entered Currency Code
299931  , p_source_88            IN VARCHAR2
299932 --Entered Amount
299933  , p_source_91            IN NUMBER
299934 --Currency Conversion Date
299935  , p_source_92            IN DATE
299936 --Currency Conversion Rate
299937  , p_source_93            IN NUMBER
299938 --Currency Conversion Type
299939  , p_source_94            IN VARCHAR2
299940 --Accounted Amount
299941  , p_source_95            IN NUMBER
299942 --Accounting Line Type
299943  , p_source_97            IN NUMBER
299944 )
299945 IS
299946 
299947 l_component_type              VARCHAR2(80);
299948 l_component_code              VARCHAR2(30);
299949 l_component_type_code         VARCHAR2(1);
299950 l_component_appl_id           INTEGER;
299951 l_amb_context_code            VARCHAR2(30);
299952 l_entity_code                 VARCHAR2(30);
299953 l_event_class_code            VARCHAR2(30);
299954 l_ae_header_id                NUMBER;
299955 l_event_type_code             VARCHAR2(30);
299956 l_line_definition_code        VARCHAR2(30);
299957 l_line_definition_owner_code  VARCHAR2(1);
299958 --
299959 -- adr variables
299960 l_segment                     VARCHAR2(30);
299961 l_ccid                        NUMBER;
299962 l_adr_transaction_coa_id      NUMBER;
299963 l_adr_accounting_coa_id       NUMBER;
299964 l_adr_flexfield_segment_code  VARCHAR2(30);
299965 l_adr_flex_value_set_id       NUMBER;
299966 l_adr_value_type_code         VARCHAR2(30);
299967 l_adr_value_combination_id    NUMBER;
299968 l_adr_value_segment_code      VARCHAR2(30);
299969 
299970 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
299971 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
299972 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
299973 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
299974 
299975 -- 4262811 Variables ------------------------------------------------------------------------------------------
299976 l_entered_amt_idx             NUMBER;
299977 l_accted_amt_idx              NUMBER;
299978 l_acc_rev_flag                VARCHAR2(1);
299979 l_accrual_line_num            NUMBER;
299980 l_tmp_amt                     NUMBER;
299981 l_acc_rev_natural_side_code   VARCHAR2(1);
299982 
299983 l_num_entries                 NUMBER;
299984 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
299985 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
299986 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
299987 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
299988 l_recog_line_1                NUMBER;
299989 l_recog_line_2                NUMBER;
299990 
299991 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
299992 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
299993 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
299994 
299995 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
299996 
299997 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
299998 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
299999 
300000 ---------------------------------------------------------------------------------------------------------------
300001 
300002 
300003 --
300004 -- bulk performance
300005 --
300006 l_balance_type_code           VARCHAR2(1);
300007 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
300008 l_log_module                  VARCHAR2(240);
300009 
300010 --
300011 -- Upgrade strategy
300012 --
300013 l_actual_upg_option           VARCHAR2(1);
300014 l_enc_upg_option           VARCHAR2(1);
300015 
300016 --
300017 BEGIN
300018 --
300019 IF g_log_enabled THEN
300020       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_535';
300021 END IF;
300022 --
300023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
300024 
300025       trace
300026          (p_msg      => 'BEGIN of AcctLineType_535'
300027          ,p_level    => C_LEVEL_PROCEDURE
300028          ,p_module   => l_log_module);
300029 
300030 END IF;
300031 --
300032 l_component_type             := 'AMB_JLT';
300033 l_component_code             := 'WIP_VALUATION';
300034 l_component_type_code        := 'S';
300035 l_component_appl_id          :=  707;
300036 l_amb_context_code           := 'DEFAULT';
300037 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
300038 l_event_class_code           := 'WIP_MTL';
300039 l_event_type_code            := 'WIP_NEG_COMP_ISSUE';
300040 l_line_definition_owner_code := 'S';
300041 l_line_definition_code       := 'PI_WIP_NEG_COMP_ISSUE';
300042 --
300043 l_balance_type_code          := 'A';
300044 l_segment                     := NULL;
300045 l_ccid                        := NULL;
300046 l_adr_transaction_coa_id      := NULL;
300047 l_adr_accounting_coa_id       := NULL;
300048 l_adr_flexfield_segment_code  := NULL;
300049 l_adr_flex_value_set_id       := NULL;
300050 l_adr_value_type_code         := NULL;
300051 l_adr_value_combination_id    := NULL;
300052 l_adr_value_segment_code      := NULL;
300053 
300054 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
300055 l_bflow_class_code           := '';    -- 4219869 Business Flow
300056 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
300057 l_budgetary_control_flag     := 'N';
300058 
300059 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
300060 l_bflow_applied_to_amt       := NULL; -- 5132302
300061 l_entered_amt_idx            := NULL;          -- 4262811
300062 l_accted_amt_idx             := NULL;          -- 4262811
300063 l_acc_rev_flag               := NULL;          -- 4262811
300064 l_accrual_line_num           := NULL;          -- 4262811
300065 l_tmp_amt                    := NULL;          -- 4262811
300066 --
300067  
300068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
300069     l_balance_type_code <> 'B' THEN
300070 IF NVL(p_source_97,9E125) =  7
300071  THEN 
300072 
300073    --
300074    XLA_AE_LINES_PKG.SetNewLine;
300075 
300076    p_balance_type_code          := l_balance_type_code;
300077    -- set the flag so later we will know whether the gain loss line needs to be created
300078    
300079    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
300080      p_actual_flag :='A';
300081    END IF;
300082 
300083    --
300084    -- bulk performance
300085    --
300086    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
300087                                       p_header_num   => 0); -- 4262811
300088    --
300089    -- set accounting line options
300090    --
300091    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
300092            p_natural_side_code          => 'D'
300093          , p_gain_or_loss_flag          => 'N'
300094          , p_gl_transfer_mode_code      => 'S'
300095          , p_acct_entry_type_code       => 'A'
300096          , p_switch_side_flag           => 'Y'
300097          , p_merge_duplicate_code       => 'N'
300098          );
300099    --
300100    l_acc_rev_natural_side_code := 'C';  -- 4262811
300101    -- 
300102    --
300103    -- set accounting line type info
300104    --
300105    xla_ae_lines_pkg.SetAcctLineType
300106       (p_component_type             => l_component_type
300107       ,p_event_type_code            => l_event_type_code
300108       ,p_line_definition_owner_code => l_line_definition_owner_code
300109       ,p_line_definition_code       => l_line_definition_code
300110       ,p_accounting_line_code       => l_component_code
300111       ,p_accounting_line_type_code  => l_component_type_code
300112       ,p_accounting_line_appl_id    => l_component_appl_id
300113       ,p_amb_context_code           => l_amb_context_code
300114       ,p_entity_code                => l_entity_code
300115       ,p_event_class_code           => l_event_class_code);
300116    --
300117    -- set accounting class
300118    --
300119    xla_ae_lines_pkg.SetAcctClass(
300120            p_accounting_class_code  => 'WIP_VALUATION'
300121          , p_ae_header_id           => l_ae_header_id
300122          );
300123 
300124    --
300125    -- set rounding class
300126    --
300127    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
300128                       'WIP_VALUATION';
300129 
300130    --
300131    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
300132    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
300133    --
300134    -- bulk performance
300135    --
300136    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
300137 
300138    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
300139       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
300140 
300141    -- 4955764
300142    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
300143       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
300144 
300145    -- 4458381 Public Sector Enh
300146    
300147    --
300148    -- set accounting attributes for the line type
300149    --
300150    l_entered_amt_idx := 3;
300151    l_accted_amt_idx  := 8;
300152    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
300153    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
300154    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
300155    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
300156    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
300157    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
300158    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
300159    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
300160    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
300161    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
300162    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
300163    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
300164    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
300165    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
300166    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
300167    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
300168    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
300169 
300170    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
300171    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
300172 
300173    ---------------------------------------------------------------------------------------------------------------
300174    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
300175    ---------------------------------------------------------------------------------------------------------------
300176    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
300177 
300178    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
300179    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
300180 
300181    IF xla_accounting_cache_pkg.GetValueChar
300182          (p_source_code         => 'LEDGER_CATEGORY_CODE'
300183          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
300184    AND l_bflow_method_code = 'PRIOR_ENTRY'
300185 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
300186    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
300187          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
300188        )
300189    THEN
300190          xla_ae_lines_pkg.BflowUpgEntry
300191            (p_business_method_code    => l_bflow_method_code
300192            ,p_business_class_code     => l_bflow_class_code
300193            ,p_balance_type            => l_balance_type_code);
300194    ELSE
300195       NULL;
300196 -- No business flow processing for business flow method of NONE.
300197    END IF;
300198 
300199    --
300200    -- call analytical criteria
300201    --
300202    
300203    --
300204    -- call description
300205    --
300206    
300207 xla_ae_lines_pkg.SetLineDescription(
300208    p_ae_header_id => l_ae_header_id
300209   ,p_description  => Description_1 (
300210      p_application_id         => p_application_id
300211    , p_ae_header_id           => l_ae_header_id 
300212 , p_source_1 => p_source_1
300213 , p_source_2 => p_source_2
300214 , p_source_3 => p_source_3
300215 , p_source_4 => p_source_4
300216 , p_source_5 => p_source_5
300217    )
300218 );
300219 
300220 
300221    --
300222    -- call ADRs
300223    -- Bug 4922099
300224    --
300225    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
300226         (NVL(l_actual_upg_option, 'N') = 'O') OR
300227         (NVL(l_enc_upg_option, 'N') = 'O')
300228       )
300229    THEN
300230    NULL;
300231    --
300232    --
300233    
300234   l_ccid := AcctDerRule_36(
300235            p_application_id           => p_application_id
300236          , p_ae_header_id             => l_ae_header_id 
300237 , p_source_15 => p_source_15
300238 , p_source_55 => p_source_55
300239 , p_source_55_meaning => p_source_55_meaning
300240 , p_source_63 => p_source_63
300241 , p_source_64 => p_source_64
300242 , p_source_65 => p_source_65
300243 , p_source_66 => p_source_66
300244 , p_source_67 => p_source_67
300245 , p_source_68 => p_source_68
300246 , p_source_69 => p_source_69
300247 , p_source_70 => p_source_70
300248 , p_source_71 => p_source_71
300249 , p_source_72 => p_source_72
300250 , p_source_73 => p_source_73
300251 , p_source_74 => p_source_74
300252 , p_source_75 => p_source_75
300253 , p_source_76 => p_source_76
300254 , p_source_77 => p_source_77
300255          , x_transaction_coa_id       => l_adr_transaction_coa_id
300256          , x_accounting_coa_id        => l_adr_accounting_coa_id
300257          , x_value_type_code          => l_adr_value_type_code
300258          , p_side                     => 'NA'
300259    );
300260 
300261    xla_ae_lines_pkg.set_ccid(
300262     p_code_combination_id          => l_ccid
300263   , p_value_type_code              => l_adr_value_type_code
300264   , p_transaction_coa_id           => l_adr_transaction_coa_id
300265   , p_accounting_coa_id            => l_adr_accounting_coa_id
300266   , p_adr_code                     => 'PI_WIP_VALUATION'
300267   , p_adr_type_code                => 'S'
300268   , p_component_type               => l_component_type
300269   , p_component_code               => l_component_code
300270   , p_component_type_code          => l_component_type_code
300271   , p_component_appl_id            => l_component_appl_id
300272   , p_amb_context_code             => l_amb_context_code
300273   , p_side                         => 'NA'
300274   );
300275 
300276 
300277    --
300278    --
300279    END IF;
300280    --
300281    -- Bug 4922099
300282    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
300283           (NVL(l_enc_upg_option, 'N') = 'O')
300284         ) AND
300285         (l_bflow_method_code = 'PRIOR_ENTRY')
300286       )
300287    THEN
300288       IF
300289       --
300290       1 = 2
300291       --
300292       THEN
300293       xla_accounting_err_pkg.build_message
300294                                     (p_appli_s_name            => 'XLA'
300295                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
300296                                     ,p_token_1                 => 'LINE_NUMBER'
300297                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
300298                                     ,p_token_2                 => 'LINE_TYPE_NAME'
300299                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
300300                                                                              l_component_type
300301                                                                             ,l_component_code
300302                                                                             ,l_component_type_code
300303                                                                             ,l_component_appl_id
300304                                                                             ,l_amb_context_code
300305                                                                             ,l_entity_code
300306                                                                             ,l_event_class_code
300307                                                                            )
300308                                     ,p_token_3                 => 'OWNER'
300309                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
300310                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
300311                                                                           ,p_lookup_code    => l_component_type_code
300312                                                                          )
300313                                     ,p_token_4                 => 'PRODUCT_NAME'
300314                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
300315                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
300316                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
300317                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
300318                                     ,p_ae_header_id            =>  NULL
300319                                        );
300320 
300321         IF (C_LEVEL_ERROR>= g_log_level) THEN
300322                  trace
300323                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
300324                       ,p_level    => C_LEVEL_ERROR
300325                       ,p_module   => l_log_module);
300326         END IF;
300327       END IF;
300328    END IF;
300329    --
300330    --
300331    ------------------------------------------------------------------------------------------------
300332    -- 4219869 Business Flow
300333    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
300334    -- Prior Entry.  Currently, the following code is always generated.
300335    ------------------------------------------------------------------------------------------------
300336    XLA_AE_LINES_PKG.ValidateCurrentLine;
300337 
300338    ------------------------------------------------------------------------------------
300339    -- 4219869 Business Flow
300340    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
300341    ------------------------------------------------------------------------------------
300342    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
300343 
300344    ----------------------------------------------------------------------------------
300345    -- 4219869 Business Flow
300346    -- Update journal entry status -- Need to generate this within IF <condition>
300347    ----------------------------------------------------------------------------------
300348    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
300349          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
300350          ,p_balance_type_code => l_balance_type_code
300351          );
300352 
300353    -------------------------------------------------------------------------------------------
300354    -- 4262811 - Generate the Accrual Reversal lines
300355    -------------------------------------------------------------------------------------------
300356    BEGIN
300357       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
300358                               (g_array_event(p_event_id).array_value_num('header_index'));
300359       IF l_acc_rev_flag IS NULL THEN
300360          l_acc_rev_flag := 'N';
300361       END IF;
300362    EXCEPTION
300363       WHEN OTHERS THEN
300364          l_acc_rev_flag := 'N';
300365    END;
300366    --
300367    IF (l_acc_rev_flag = 'Y') THEN
300368 
300369        -- 4645092  ------------------------------------------------------------------------------
300370        -- To allow MPA report to determine if it should generate report process
300371        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
300372        ------------------------------------------------------------------------------------------
300373 
300374        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
300375        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
300376    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
300377    -- call ADRs
300378    -- Bug 4922099
300379    --
300380    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
300381         (NVL(l_actual_upg_option, 'N') = 'O') OR
300382         (NVL(l_enc_upg_option, 'N') = 'O')
300383       )
300384    THEN
300385    NULL;
300386    --
300387    --
300388    
300389   l_ccid := AcctDerRule_36(
300390            p_application_id           => p_application_id
300391          , p_ae_header_id             => l_ae_header_id 
300392 , p_source_15 => p_source_15
300393 , p_source_55 => p_source_55
300394 , p_source_55_meaning => p_source_55_meaning
300395 , p_source_63 => p_source_63
300396 , p_source_64 => p_source_64
300397 , p_source_65 => p_source_65
300398 , p_source_66 => p_source_66
300399 , p_source_67 => p_source_67
300400 , p_source_68 => p_source_68
300401 , p_source_69 => p_source_69
300402 , p_source_70 => p_source_70
300403 , p_source_71 => p_source_71
300404 , p_source_72 => p_source_72
300405 , p_source_73 => p_source_73
300406 , p_source_74 => p_source_74
300407 , p_source_75 => p_source_75
300408 , p_source_76 => p_source_76
300409 , p_source_77 => p_source_77
300410          , x_transaction_coa_id       => l_adr_transaction_coa_id
300411          , x_accounting_coa_id        => l_adr_accounting_coa_id
300412          , x_value_type_code          => l_adr_value_type_code
300413          , p_side                     => 'NA'
300414    );
300415 
300416    xla_ae_lines_pkg.set_ccid(
300417     p_code_combination_id          => l_ccid
300418   , p_value_type_code              => l_adr_value_type_code
300419   , p_transaction_coa_id           => l_adr_transaction_coa_id
300420   , p_accounting_coa_id            => l_adr_accounting_coa_id
300421   , p_adr_code                     => 'PI_WIP_VALUATION'
300422   , p_adr_type_code                => 'S'
300423   , p_component_type               => l_component_type
300424   , p_component_code               => l_component_code
300425   , p_component_type_code          => l_component_type_code
300426   , p_component_appl_id            => l_component_appl_id
300427   , p_amb_context_code             => l_amb_context_code
300428   , p_side                         => 'NA'
300429   );
300430 
300431 
300432    --
300433    --
300434    END IF;
300435 
300436        --
300437        -- Update the line information that should be overwritten
300438        --
300439        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
300440                                          p_header_num   => 1);
300441        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
300442 
300443        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
300444 
300445        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
300446           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
300447        END IF;
300448 
300449       --
300450       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
300451       --
300452       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
300453           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
300454       ELSE
300455           ---------------------------------------------------------------------------------------------------
300456           -- 4262811a Switch Sign
300457           ---------------------------------------------------------------------------------------------------
300458           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
300459           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
300460                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
300461           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
300462                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
300463           -- 5132302
300464           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
300465                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
300466 
300467       END IF;
300468 
300469       -- 4955764
300470       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
300471       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
300472 
300473 
300474       XLA_AE_LINES_PKG.ValidateCurrentLine;
300475       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
300476 
300477       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
300478                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
300479                ,p_balance_type_code => l_balance_type_code);
300480 
300481    END IF;
300482 
300483    -----------------------------------------------------------------------------------------
300484    -- 4262811 Multiperiod Accounting
300485    -----------------------------------------------------------------------------------------
300486      -- No MPA option is assigned.
300487 
300488 
300489 END IF;
300490 END IF;
300491 --
300492 
300493 --
300494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
300495    trace
300496       (p_msg      => 'END of AcctLineType_535'
300497       ,p_level    => C_LEVEL_PROCEDURE
300498       ,p_module   => l_log_module);
300499 END IF;
300500 --
300501 EXCEPTION
300502   WHEN xla_exceptions_pkg.application_exception THEN
300503       RAISE;
300504   WHEN OTHERS THEN
300505        xla_exceptions_pkg.raise_message
300506            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_535');
300507 END AcctLineType_535;
300508 --
300509 
300510 ---------------------------------------
300511 --
300512 -- PRIVATE FUNCTION
300513 --         AcctLineType_536
300514 --
300515 ---------------------------------------
300516 PROCEDURE AcctLineType_536 (
300517   p_application_id        IN NUMBER
300518  ,p_event_id              IN NUMBER
300519  ,p_calculate_acctd_flag  IN VARCHAR2
300520  ,p_calculate_g_l_flag    IN VARCHAR2
300521  ,p_actual_flag           IN OUT VARCHAR2
300522  ,p_balance_type_code     OUT VARCHAR2
300523  ,p_gain_or_loss_ref      OUT VARCHAR2
300524  
300525 --Cost Management Default Account
300526  , p_source_11            IN NUMBER
300527 --DISTRIBUTION_IDENTIFIER
300528  , p_source_84            IN NUMBER
300529 --Distribution Type
300530  , p_source_85            IN VARCHAR2
300531  , p_source_85_meaning    IN VARCHAR2
300532 --Entered Currency Code
300533  , p_source_88            IN VARCHAR2
300534 --Entered Amount
300535  , p_source_91            IN NUMBER
300536 --Currency Conversion Date
300537  , p_source_92            IN DATE
300538 --Currency Conversion Rate
300539  , p_source_93            IN NUMBER
300540 --Currency Conversion Type
300541  , p_source_94            IN VARCHAR2
300542 --Accounted Amount
300543  , p_source_95            IN NUMBER
300544 --Accounting Line Type
300545  , p_source_97            IN NUMBER
300546 )
300547 IS
300548 
300549 l_component_type              VARCHAR2(80);
300550 l_component_code              VARCHAR2(30);
300551 l_component_type_code         VARCHAR2(1);
300552 l_component_appl_id           INTEGER;
300553 l_amb_context_code            VARCHAR2(30);
300554 l_entity_code                 VARCHAR2(30);
300555 l_event_class_code            VARCHAR2(30);
300556 l_ae_header_id                NUMBER;
300557 l_event_type_code             VARCHAR2(30);
300558 l_line_definition_code        VARCHAR2(30);
300559 l_line_definition_owner_code  VARCHAR2(1);
300560 --
300561 -- adr variables
300562 l_segment                     VARCHAR2(30);
300563 l_ccid                        NUMBER;
300564 l_adr_transaction_coa_id      NUMBER;
300565 l_adr_accounting_coa_id       NUMBER;
300566 l_adr_flexfield_segment_code  VARCHAR2(30);
300567 l_adr_flex_value_set_id       NUMBER;
300568 l_adr_value_type_code         VARCHAR2(30);
300569 l_adr_value_combination_id    NUMBER;
300570 l_adr_value_segment_code      VARCHAR2(30);
300571 
300572 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
300573 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
300574 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
300575 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
300576 
300577 -- 4262811 Variables ------------------------------------------------------------------------------------------
300578 l_entered_amt_idx             NUMBER;
300579 l_accted_amt_idx              NUMBER;
300580 l_acc_rev_flag                VARCHAR2(1);
300581 l_accrual_line_num            NUMBER;
300582 l_tmp_amt                     NUMBER;
300583 l_acc_rev_natural_side_code   VARCHAR2(1);
300584 
300585 l_num_entries                 NUMBER;
300586 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
300587 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
300588 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
300589 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
300590 l_recog_line_1                NUMBER;
300591 l_recog_line_2                NUMBER;
300592 
300593 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
300594 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
300595 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
300596 
300597 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
300598 
300599 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
300600 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
300601 
300602 ---------------------------------------------------------------------------------------------------------------
300603 
300604 
300605 --
300606 -- bulk performance
300607 --
300608 l_balance_type_code           VARCHAR2(1);
300609 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
300610 l_log_module                  VARCHAR2(240);
300611 
300612 --
300613 -- Upgrade strategy
300614 --
300615 l_actual_upg_option           VARCHAR2(1);
300616 l_enc_upg_option           VARCHAR2(1);
300617 
300618 --
300619 BEGIN
300620 --
300621 IF g_log_enabled THEN
300622       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_536';
300623 END IF;
300624 --
300625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
300626 
300627       trace
300628          (p_msg      => 'BEGIN of AcctLineType_536'
300629          ,p_level    => C_LEVEL_PROCEDURE
300630          ,p_module   => l_log_module);
300631 
300632 END IF;
300633 --
300634 l_component_type             := 'AMB_JLT';
300635 l_component_code             := 'WIP_VALUATION';
300636 l_component_type_code        := 'S';
300637 l_component_appl_id          :=  707;
300638 l_amb_context_code           := 'DEFAULT';
300639 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
300640 l_event_class_code           := 'WIP_LOT';
300641 l_event_type_code            := 'WIP_LOT_ALL';
300642 l_line_definition_owner_code := 'S';
300643 l_line_definition_code       := 'WIP_LOT';
300644 --
300645 l_balance_type_code          := 'A';
300646 l_segment                     := NULL;
300647 l_ccid                        := NULL;
300648 l_adr_transaction_coa_id      := NULL;
300649 l_adr_accounting_coa_id       := NULL;
300650 l_adr_flexfield_segment_code  := NULL;
300651 l_adr_flex_value_set_id       := NULL;
300652 l_adr_value_type_code         := NULL;
300653 l_adr_value_combination_id    := NULL;
300654 l_adr_value_segment_code      := NULL;
300655 
300656 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
300657 l_bflow_class_code           := '';    -- 4219869 Business Flow
300658 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
300659 l_budgetary_control_flag     := 'N';
300660 
300661 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
300662 l_bflow_applied_to_amt       := NULL; -- 5132302
300663 l_entered_amt_idx            := NULL;          -- 4262811
300664 l_accted_amt_idx             := NULL;          -- 4262811
300665 l_acc_rev_flag               := NULL;          -- 4262811
300666 l_accrual_line_num           := NULL;          -- 4262811
300667 l_tmp_amt                    := NULL;          -- 4262811
300668 --
300669  
300670 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
300671     l_balance_type_code <> 'B' THEN
300672 IF NVL(p_source_97,9E125) =  21 OR 
300673 NVL(p_source_97,9E125) =  22 OR 
300674 NVL(p_source_97,9E125) =  23 OR 
300675 NVL(p_source_97,9E125) =  24 OR 
300676 NVL(p_source_97,9E125) =  26 OR 
300677 NVL(p_source_97,9E125) =  28
300678  THEN 
300679 
300680    --
300681    XLA_AE_LINES_PKG.SetNewLine;
300682 
300683    p_balance_type_code          := l_balance_type_code;
300684    -- set the flag so later we will know whether the gain loss line needs to be created
300685    
300686    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
300687      p_actual_flag :='A';
300688    END IF;
300689 
300690    --
300691    -- bulk performance
300692    --
300693    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
300694                                       p_header_num   => 0); -- 4262811
300695    --
300696    -- set accounting line options
300697    --
300698    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
300699            p_natural_side_code          => 'D'
300700          , p_gain_or_loss_flag          => 'N'
300701          , p_gl_transfer_mode_code      => 'S'
300702          , p_acct_entry_type_code       => 'A'
300703          , p_switch_side_flag           => 'Y'
300704          , p_merge_duplicate_code       => 'N'
300705          );
300706    --
300707    l_acc_rev_natural_side_code := 'C';  -- 4262811
300708    -- 
300709    --
300710    -- set accounting line type info
300711    --
300712    xla_ae_lines_pkg.SetAcctLineType
300713       (p_component_type             => l_component_type
300714       ,p_event_type_code            => l_event_type_code
300715       ,p_line_definition_owner_code => l_line_definition_owner_code
300716       ,p_line_definition_code       => l_line_definition_code
300717       ,p_accounting_line_code       => l_component_code
300718       ,p_accounting_line_type_code  => l_component_type_code
300719       ,p_accounting_line_appl_id    => l_component_appl_id
300720       ,p_amb_context_code           => l_amb_context_code
300721       ,p_entity_code                => l_entity_code
300722       ,p_event_class_code           => l_event_class_code);
300723    --
300724    -- set accounting class
300725    --
300726    xla_ae_lines_pkg.SetAcctClass(
300727            p_accounting_class_code  => 'WIP_VALUATION'
300728          , p_ae_header_id           => l_ae_header_id
300729          );
300730 
300731    --
300732    -- set rounding class
300733    --
300734    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
300735                       'WIP_VALUATION';
300736 
300737    --
300738    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
300739    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
300740    --
300741    -- bulk performance
300742    --
300743    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
300744 
300745    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
300746       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
300747 
300748    -- 4955764
300749    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
300750       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
300751 
300752    -- 4458381 Public Sector Enh
300753    
300754    --
300755    -- set accounting attributes for the line type
300756    --
300757    l_entered_amt_idx := 3;
300758    l_accted_amt_idx  := 8;
300759    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
300760    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
300761    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
300762    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
300763    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
300764    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
300765    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
300766    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
300767    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
300768    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
300769    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
300770    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
300771    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
300772    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
300773    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
300774    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
300775    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
300776 
300777    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
300778    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
300779 
300780    ---------------------------------------------------------------------------------------------------------------
300781    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
300782    ---------------------------------------------------------------------------------------------------------------
300783    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
300784 
300785    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
300786    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
300787 
300788    IF xla_accounting_cache_pkg.GetValueChar
300789          (p_source_code         => 'LEDGER_CATEGORY_CODE'
300790          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
300791    AND l_bflow_method_code = 'PRIOR_ENTRY'
300792 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
300793    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
300794          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
300795        )
300796    THEN
300797          xla_ae_lines_pkg.BflowUpgEntry
300798            (p_business_method_code    => l_bflow_method_code
300799            ,p_business_class_code     => l_bflow_class_code
300800            ,p_balance_type            => l_balance_type_code);
300801    ELSE
300802       NULL;
300803 -- No business flow processing for business flow method of NONE.
300804    END IF;
300805 
300806    --
300807    -- call analytical criteria
300808    --
300809    
300810    --
300811    -- call description
300812    --
300813    -- No description or it is inherited.
300814    --
300815    -- call ADRs
300816    -- Bug 4922099
300817    --
300818    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
300819         (NVL(l_actual_upg_option, 'N') = 'O') OR
300820         (NVL(l_enc_upg_option, 'N') = 'O')
300821       )
300822    THEN
300823    NULL;
300824    --
300825    --
300826    
300827   l_ccid := AcctDerRule_6(
300828            p_application_id           => p_application_id
300829          , p_ae_header_id             => l_ae_header_id 
300830 , p_source_11 => p_source_11
300831          , x_transaction_coa_id       => l_adr_transaction_coa_id
300832          , x_accounting_coa_id        => l_adr_accounting_coa_id
300833          , x_value_type_code          => l_adr_value_type_code
300834          , p_side                     => 'NA'
300835    );
300836 
300837    xla_ae_lines_pkg.set_ccid(
300838     p_code_combination_id          => l_ccid
300839   , p_value_type_code              => l_adr_value_type_code
300840   , p_transaction_coa_id           => l_adr_transaction_coa_id
300841   , p_accounting_coa_id            => l_adr_accounting_coa_id
300842   , p_adr_code                     => 'CST_DEFAULT'
300843   , p_adr_type_code                => 'S'
300844   , p_component_type               => l_component_type
300845   , p_component_code               => l_component_code
300846   , p_component_type_code          => l_component_type_code
300847   , p_component_appl_id            => l_component_appl_id
300848   , p_amb_context_code             => l_amb_context_code
300849   , p_side                         => 'NA'
300850   );
300851 
300852 
300853    --
300854    --
300855    END IF;
300856    --
300857    -- Bug 4922099
300858    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
300859           (NVL(l_enc_upg_option, 'N') = 'O')
300860         ) AND
300861         (l_bflow_method_code = 'PRIOR_ENTRY')
300862       )
300863    THEN
300864       IF
300865       --
300866       1 = 2
300867       --
300868       THEN
300869       xla_accounting_err_pkg.build_message
300870                                     (p_appli_s_name            => 'XLA'
300871                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
300872                                     ,p_token_1                 => 'LINE_NUMBER'
300873                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
300874                                     ,p_token_2                 => 'LINE_TYPE_NAME'
300875                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
300876                                                                              l_component_type
300877                                                                             ,l_component_code
300878                                                                             ,l_component_type_code
300879                                                                             ,l_component_appl_id
300880                                                                             ,l_amb_context_code
300881                                                                             ,l_entity_code
300882                                                                             ,l_event_class_code
300883                                                                            )
300884                                     ,p_token_3                 => 'OWNER'
300885                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
300886                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
300887                                                                           ,p_lookup_code    => l_component_type_code
300888                                                                          )
300889                                     ,p_token_4                 => 'PRODUCT_NAME'
300890                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
300891                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
300892                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
300893                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
300894                                     ,p_ae_header_id            =>  NULL
300895                                        );
300896 
300897         IF (C_LEVEL_ERROR>= g_log_level) THEN
300898                  trace
300899                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
300900                       ,p_level    => C_LEVEL_ERROR
300901                       ,p_module   => l_log_module);
300902         END IF;
300903       END IF;
300904    END IF;
300905    --
300906    --
300907    ------------------------------------------------------------------------------------------------
300908    -- 4219869 Business Flow
300909    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
300910    -- Prior Entry.  Currently, the following code is always generated.
300911    ------------------------------------------------------------------------------------------------
300912    XLA_AE_LINES_PKG.ValidateCurrentLine;
300913 
300914    ------------------------------------------------------------------------------------
300915    -- 4219869 Business Flow
300916    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
300917    ------------------------------------------------------------------------------------
300918    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
300919 
300920    ----------------------------------------------------------------------------------
300921    -- 4219869 Business Flow
300922    -- Update journal entry status -- Need to generate this within IF <condition>
300923    ----------------------------------------------------------------------------------
300924    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
300925          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
300926          ,p_balance_type_code => l_balance_type_code
300927          );
300928 
300929    -------------------------------------------------------------------------------------------
300930    -- 4262811 - Generate the Accrual Reversal lines
300931    -------------------------------------------------------------------------------------------
300932    BEGIN
300933       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
300934                               (g_array_event(p_event_id).array_value_num('header_index'));
300935       IF l_acc_rev_flag IS NULL THEN
300936          l_acc_rev_flag := 'N';
300937       END IF;
300938    EXCEPTION
300939       WHEN OTHERS THEN
300940          l_acc_rev_flag := 'N';
300941    END;
300942    --
300943    IF (l_acc_rev_flag = 'Y') THEN
300944 
300945        -- 4645092  ------------------------------------------------------------------------------
300946        -- To allow MPA report to determine if it should generate report process
300947        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
300948        ------------------------------------------------------------------------------------------
300949 
300950        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
300951        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
300952    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
300953    -- call ADRs
300954    -- Bug 4922099
300955    --
300956    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
300957         (NVL(l_actual_upg_option, 'N') = 'O') OR
300958         (NVL(l_enc_upg_option, 'N') = 'O')
300959       )
300960    THEN
300961    NULL;
300962    --
300963    --
300964    
300965   l_ccid := AcctDerRule_6(
300966            p_application_id           => p_application_id
300967          , p_ae_header_id             => l_ae_header_id 
300968 , p_source_11 => p_source_11
300969          , x_transaction_coa_id       => l_adr_transaction_coa_id
300970          , x_accounting_coa_id        => l_adr_accounting_coa_id
300971          , x_value_type_code          => l_adr_value_type_code
300972          , p_side                     => 'NA'
300973    );
300974 
300975    xla_ae_lines_pkg.set_ccid(
300976     p_code_combination_id          => l_ccid
300977   , p_value_type_code              => l_adr_value_type_code
300978   , p_transaction_coa_id           => l_adr_transaction_coa_id
300979   , p_accounting_coa_id            => l_adr_accounting_coa_id
300980   , p_adr_code                     => 'CST_DEFAULT'
300981   , p_adr_type_code                => 'S'
300982   , p_component_type               => l_component_type
300983   , p_component_code               => l_component_code
300984   , p_component_type_code          => l_component_type_code
300985   , p_component_appl_id            => l_component_appl_id
300986   , p_amb_context_code             => l_amb_context_code
300987   , p_side                         => 'NA'
300988   );
300989 
300990 
300991    --
300992    --
300993    END IF;
300994 
300995        --
300996        -- Update the line information that should be overwritten
300997        --
300998        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
300999                                          p_header_num   => 1);
301000        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
301001 
301002        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
301003 
301004        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
301005           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
301006        END IF;
301007 
301008       --
301009       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
301010       --
301011       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
301012           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
301013       ELSE
301014           ---------------------------------------------------------------------------------------------------
301015           -- 4262811a Switch Sign
301016           ---------------------------------------------------------------------------------------------------
301017           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
301018           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
301019                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
301020           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
301021                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
301022           -- 5132302
301023           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
301024                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
301025 
301026       END IF;
301027 
301028       -- 4955764
301029       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
301030       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
301031 
301032 
301033       XLA_AE_LINES_PKG.ValidateCurrentLine;
301034       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
301035 
301036       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
301037                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
301038                ,p_balance_type_code => l_balance_type_code);
301039 
301040    END IF;
301041 
301042    -----------------------------------------------------------------------------------------
301043    -- 4262811 Multiperiod Accounting
301044    -----------------------------------------------------------------------------------------
301045      -- No MPA option is assigned.
301046 
301047 
301048 END IF;
301049 END IF;
301050 --
301051 
301052 --
301053 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
301054    trace
301055       (p_msg      => 'END of AcctLineType_536'
301056       ,p_level    => C_LEVEL_PROCEDURE
301057       ,p_module   => l_log_module);
301058 END IF;
301059 --
301060 EXCEPTION
301061   WHEN xla_exceptions_pkg.application_exception THEN
301062       RAISE;
301063   WHEN OTHERS THEN
301064        xla_exceptions_pkg.raise_message
301065            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_536');
301066 END AcctLineType_536;
301067 --
301068 
301069 ---------------------------------------
301070 --
301071 -- PRIVATE FUNCTION
301072 --         AcctLineType_537
301073 --
301074 ---------------------------------------
301075 PROCEDURE AcctLineType_537 (
301076   p_application_id        IN NUMBER
301077  ,p_event_id              IN NUMBER
301078  ,p_calculate_acctd_flag  IN VARCHAR2
301079  ,p_calculate_g_l_flag    IN VARCHAR2
301080  ,p_actual_flag           IN OUT VARCHAR2
301081  ,p_balance_type_code     OUT VARCHAR2
301082  ,p_gain_or_loss_ref      OUT VARCHAR2
301083  
301084 --Cost Management Default Account
301085  , p_source_11            IN NUMBER
301086 --DISTRIBUTION_IDENTIFIER
301087  , p_source_84            IN NUMBER
301088 --Distribution Type
301089  , p_source_85            IN VARCHAR2
301090  , p_source_85_meaning    IN VARCHAR2
301091 --Entered Currency Code
301092  , p_source_88            IN VARCHAR2
301093 --Entered Amount
301094  , p_source_91            IN NUMBER
301095 --Currency Conversion Date
301096  , p_source_92            IN DATE
301097 --Currency Conversion Rate
301098  , p_source_93            IN NUMBER
301099 --Currency Conversion Type
301100  , p_source_94            IN VARCHAR2
301101 --Accounted Amount
301102  , p_source_95            IN NUMBER
301103 --Accounting Line Type
301104  , p_source_97            IN NUMBER
301105 )
301106 IS
301107 
301108 l_component_type              VARCHAR2(80);
301109 l_component_code              VARCHAR2(30);
301110 l_component_type_code         VARCHAR2(1);
301111 l_component_appl_id           INTEGER;
301112 l_amb_context_code            VARCHAR2(30);
301113 l_entity_code                 VARCHAR2(30);
301114 l_event_class_code            VARCHAR2(30);
301115 l_ae_header_id                NUMBER;
301116 l_event_type_code             VARCHAR2(30);
301117 l_line_definition_code        VARCHAR2(30);
301118 l_line_definition_owner_code  VARCHAR2(1);
301119 --
301120 -- adr variables
301121 l_segment                     VARCHAR2(30);
301122 l_ccid                        NUMBER;
301123 l_adr_transaction_coa_id      NUMBER;
301124 l_adr_accounting_coa_id       NUMBER;
301125 l_adr_flexfield_segment_code  VARCHAR2(30);
301126 l_adr_flex_value_set_id       NUMBER;
301127 l_adr_value_type_code         VARCHAR2(30);
301128 l_adr_value_combination_id    NUMBER;
301129 l_adr_value_segment_code      VARCHAR2(30);
301130 
301131 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
301132 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
301133 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
301134 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
301135 
301136 -- 4262811 Variables ------------------------------------------------------------------------------------------
301137 l_entered_amt_idx             NUMBER;
301138 l_accted_amt_idx              NUMBER;
301139 l_acc_rev_flag                VARCHAR2(1);
301140 l_accrual_line_num            NUMBER;
301141 l_tmp_amt                     NUMBER;
301142 l_acc_rev_natural_side_code   VARCHAR2(1);
301143 
301144 l_num_entries                 NUMBER;
301145 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
301146 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
301147 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
301148 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
301149 l_recog_line_1                NUMBER;
301150 l_recog_line_2                NUMBER;
301151 
301152 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
301153 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
301154 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
301155 
301156 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
301157 
301158 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
301159 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
301160 
301161 ---------------------------------------------------------------------------------------------------------------
301162 
301163 
301164 --
301165 -- bulk performance
301166 --
301167 l_balance_type_code           VARCHAR2(1);
301168 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
301169 l_log_module                  VARCHAR2(240);
301170 
301171 --
301172 -- Upgrade strategy
301173 --
301174 l_actual_upg_option           VARCHAR2(1);
301175 l_enc_upg_option           VARCHAR2(1);
301176 
301177 --
301178 BEGIN
301179 --
301180 IF g_log_enabled THEN
301181       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_537';
301182 END IF;
301183 --
301184 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
301185 
301186       trace
301187          (p_msg      => 'BEGIN of AcctLineType_537'
301188          ,p_level    => C_LEVEL_PROCEDURE
301189          ,p_module   => l_log_module);
301190 
301191 END IF;
301192 --
301193 l_component_type             := 'AMB_JLT';
301194 l_component_code             := 'WIP_VALUATION';
301195 l_component_type_code        := 'S';
301196 l_component_appl_id          :=  707;
301197 l_amb_context_code           := 'DEFAULT';
301198 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
301199 l_event_class_code           := 'LOT';
301200 l_event_type_code            := 'LOT_ALL';
301201 l_line_definition_owner_code := 'S';
301202 l_line_definition_code       := 'WIP_MATERIAL_LOT';
301203 --
301204 l_balance_type_code          := 'A';
301205 l_segment                     := NULL;
301206 l_ccid                        := NULL;
301207 l_adr_transaction_coa_id      := NULL;
301208 l_adr_accounting_coa_id       := NULL;
301209 l_adr_flexfield_segment_code  := NULL;
301210 l_adr_flex_value_set_id       := NULL;
301211 l_adr_value_type_code         := NULL;
301212 l_adr_value_combination_id    := NULL;
301213 l_adr_value_segment_code      := NULL;
301214 
301215 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
301216 l_bflow_class_code           := '';    -- 4219869 Business Flow
301217 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
301218 l_budgetary_control_flag     := 'N';
301219 
301220 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
301221 l_bflow_applied_to_amt       := NULL; -- 5132302
301222 l_entered_amt_idx            := NULL;          -- 4262811
301223 l_accted_amt_idx             := NULL;          -- 4262811
301224 l_acc_rev_flag               := NULL;          -- 4262811
301225 l_accrual_line_num           := NULL;          -- 4262811
301226 l_tmp_amt                    := NULL;          -- 4262811
301227 --
301228  
301229 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
301230     l_balance_type_code <> 'B' THEN
301231 IF NVL(p_source_97,9E125) =  21 OR 
301232 NVL(p_source_97,9E125) =  22 OR 
301233 NVL(p_source_97,9E125) =  23 OR 
301234 NVL(p_source_97,9E125) =  24 OR 
301235 NVL(p_source_97,9E125) =  26 OR 
301236 NVL(p_source_97,9E125) =  28
301237  THEN 
301238 
301239    --
301240    XLA_AE_LINES_PKG.SetNewLine;
301241 
301242    p_balance_type_code          := l_balance_type_code;
301243    -- set the flag so later we will know whether the gain loss line needs to be created
301244    
301245    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
301246      p_actual_flag :='A';
301247    END IF;
301248 
301249    --
301250    -- bulk performance
301251    --
301252    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
301253                                       p_header_num   => 0); -- 4262811
301254    --
301255    -- set accounting line options
301256    --
301257    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
301258            p_natural_side_code          => 'D'
301259          , p_gain_or_loss_flag          => 'N'
301260          , p_gl_transfer_mode_code      => 'S'
301261          , p_acct_entry_type_code       => 'A'
301262          , p_switch_side_flag           => 'Y'
301263          , p_merge_duplicate_code       => 'N'
301264          );
301265    --
301266    l_acc_rev_natural_side_code := 'C';  -- 4262811
301267    -- 
301268    --
301269    -- set accounting line type info
301270    --
301271    xla_ae_lines_pkg.SetAcctLineType
301272       (p_component_type             => l_component_type
301273       ,p_event_type_code            => l_event_type_code
301274       ,p_line_definition_owner_code => l_line_definition_owner_code
301275       ,p_line_definition_code       => l_line_definition_code
301276       ,p_accounting_line_code       => l_component_code
301277       ,p_accounting_line_type_code  => l_component_type_code
301278       ,p_accounting_line_appl_id    => l_component_appl_id
301279       ,p_amb_context_code           => l_amb_context_code
301280       ,p_entity_code                => l_entity_code
301281       ,p_event_class_code           => l_event_class_code);
301282    --
301283    -- set accounting class
301284    --
301285    xla_ae_lines_pkg.SetAcctClass(
301286            p_accounting_class_code  => 'WIP_VALUATION'
301287          , p_ae_header_id           => l_ae_header_id
301288          );
301289 
301290    --
301291    -- set rounding class
301292    --
301293    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
301294                       'WIP_VALUATION';
301295 
301296    --
301297    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
301298    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
301299    --
301300    -- bulk performance
301301    --
301302    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
301303 
301304    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
301305       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
301306 
301307    -- 4955764
301308    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
301309       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
301310 
301311    -- 4458381 Public Sector Enh
301312    
301313    --
301314    -- set accounting attributes for the line type
301315    --
301316    l_entered_amt_idx := 3;
301317    l_accted_amt_idx  := 8;
301318    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
301319    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
301320    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
301321    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
301322    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
301323    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
301324    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
301325    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
301326    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
301327    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
301328    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
301329    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
301330    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
301331    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
301332    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
301333    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
301334    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
301335 
301336    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
301337    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
301338 
301339    ---------------------------------------------------------------------------------------------------------------
301340    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
301341    ---------------------------------------------------------------------------------------------------------------
301342    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
301343 
301344    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
301345    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
301346 
301347    IF xla_accounting_cache_pkg.GetValueChar
301348          (p_source_code         => 'LEDGER_CATEGORY_CODE'
301349          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
301350    AND l_bflow_method_code = 'PRIOR_ENTRY'
301351 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
301352    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
301353          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
301354        )
301355    THEN
301356          xla_ae_lines_pkg.BflowUpgEntry
301357            (p_business_method_code    => l_bflow_method_code
301358            ,p_business_class_code     => l_bflow_class_code
301359            ,p_balance_type            => l_balance_type_code);
301360    ELSE
301361       NULL;
301362 -- No business flow processing for business flow method of NONE.
301363    END IF;
301364 
301365    --
301366    -- call analytical criteria
301367    --
301368    
301369    --
301370    -- call description
301371    --
301372    -- No description or it is inherited.
301373    --
301374    -- call ADRs
301375    -- Bug 4922099
301376    --
301377    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
301378         (NVL(l_actual_upg_option, 'N') = 'O') OR
301379         (NVL(l_enc_upg_option, 'N') = 'O')
301380       )
301381    THEN
301382    NULL;
301383    --
301384    --
301385    
301386   l_ccid := AcctDerRule_6(
301387            p_application_id           => p_application_id
301388          , p_ae_header_id             => l_ae_header_id 
301389 , p_source_11 => p_source_11
301390          , x_transaction_coa_id       => l_adr_transaction_coa_id
301391          , x_accounting_coa_id        => l_adr_accounting_coa_id
301392          , x_value_type_code          => l_adr_value_type_code
301393          , p_side                     => 'NA'
301394    );
301395 
301396    xla_ae_lines_pkg.set_ccid(
301397     p_code_combination_id          => l_ccid
301398   , p_value_type_code              => l_adr_value_type_code
301399   , p_transaction_coa_id           => l_adr_transaction_coa_id
301400   , p_accounting_coa_id            => l_adr_accounting_coa_id
301401   , p_adr_code                     => 'CST_DEFAULT'
301402   , p_adr_type_code                => 'S'
301403   , p_component_type               => l_component_type
301404   , p_component_code               => l_component_code
301405   , p_component_type_code          => l_component_type_code
301406   , p_component_appl_id            => l_component_appl_id
301407   , p_amb_context_code             => l_amb_context_code
301408   , p_side                         => 'NA'
301409   );
301410 
301411 
301412    --
301413    --
301414    END IF;
301415    --
301416    -- Bug 4922099
301417    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
301418           (NVL(l_enc_upg_option, 'N') = 'O')
301419         ) AND
301420         (l_bflow_method_code = 'PRIOR_ENTRY')
301421       )
301422    THEN
301423       IF
301424       --
301425       1 = 2
301426       --
301427       THEN
301428       xla_accounting_err_pkg.build_message
301429                                     (p_appli_s_name            => 'XLA'
301430                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
301431                                     ,p_token_1                 => 'LINE_NUMBER'
301432                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
301433                                     ,p_token_2                 => 'LINE_TYPE_NAME'
301434                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
301435                                                                              l_component_type
301436                                                                             ,l_component_code
301437                                                                             ,l_component_type_code
301438                                                                             ,l_component_appl_id
301439                                                                             ,l_amb_context_code
301440                                                                             ,l_entity_code
301441                                                                             ,l_event_class_code
301442                                                                            )
301443                                     ,p_token_3                 => 'OWNER'
301444                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
301445                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
301446                                                                           ,p_lookup_code    => l_component_type_code
301447                                                                          )
301448                                     ,p_token_4                 => 'PRODUCT_NAME'
301449                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
301450                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
301451                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
301452                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
301453                                     ,p_ae_header_id            =>  NULL
301454                                        );
301455 
301456         IF (C_LEVEL_ERROR>= g_log_level) THEN
301457                  trace
301458                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
301459                       ,p_level    => C_LEVEL_ERROR
301460                       ,p_module   => l_log_module);
301461         END IF;
301462       END IF;
301463    END IF;
301464    --
301465    --
301466    ------------------------------------------------------------------------------------------------
301467    -- 4219869 Business Flow
301468    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
301469    -- Prior Entry.  Currently, the following code is always generated.
301470    ------------------------------------------------------------------------------------------------
301471    XLA_AE_LINES_PKG.ValidateCurrentLine;
301472 
301473    ------------------------------------------------------------------------------------
301474    -- 4219869 Business Flow
301475    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
301476    ------------------------------------------------------------------------------------
301477    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
301478 
301479    ----------------------------------------------------------------------------------
301480    -- 4219869 Business Flow
301481    -- Update journal entry status -- Need to generate this within IF <condition>
301482    ----------------------------------------------------------------------------------
301483    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
301484          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
301485          ,p_balance_type_code => l_balance_type_code
301486          );
301487 
301488    -------------------------------------------------------------------------------------------
301489    -- 4262811 - Generate the Accrual Reversal lines
301490    -------------------------------------------------------------------------------------------
301491    BEGIN
301492       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
301493                               (g_array_event(p_event_id).array_value_num('header_index'));
301494       IF l_acc_rev_flag IS NULL THEN
301495          l_acc_rev_flag := 'N';
301496       END IF;
301497    EXCEPTION
301498       WHEN OTHERS THEN
301499          l_acc_rev_flag := 'N';
301500    END;
301501    --
301502    IF (l_acc_rev_flag = 'Y') THEN
301503 
301504        -- 4645092  ------------------------------------------------------------------------------
301505        -- To allow MPA report to determine if it should generate report process
301506        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
301507        ------------------------------------------------------------------------------------------
301508 
301509        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
301510        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
301511    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
301512    -- call ADRs
301513    -- Bug 4922099
301514    --
301515    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
301516         (NVL(l_actual_upg_option, 'N') = 'O') OR
301517         (NVL(l_enc_upg_option, 'N') = 'O')
301518       )
301519    THEN
301520    NULL;
301521    --
301522    --
301523    
301524   l_ccid := AcctDerRule_6(
301525            p_application_id           => p_application_id
301526          , p_ae_header_id             => l_ae_header_id 
301527 , p_source_11 => p_source_11
301528          , x_transaction_coa_id       => l_adr_transaction_coa_id
301529          , x_accounting_coa_id        => l_adr_accounting_coa_id
301530          , x_value_type_code          => l_adr_value_type_code
301531          , p_side                     => 'NA'
301532    );
301533 
301534    xla_ae_lines_pkg.set_ccid(
301535     p_code_combination_id          => l_ccid
301536   , p_value_type_code              => l_adr_value_type_code
301537   , p_transaction_coa_id           => l_adr_transaction_coa_id
301538   , p_accounting_coa_id            => l_adr_accounting_coa_id
301539   , p_adr_code                     => 'CST_DEFAULT'
301540   , p_adr_type_code                => 'S'
301541   , p_component_type               => l_component_type
301542   , p_component_code               => l_component_code
301543   , p_component_type_code          => l_component_type_code
301544   , p_component_appl_id            => l_component_appl_id
301545   , p_amb_context_code             => l_amb_context_code
301546   , p_side                         => 'NA'
301547   );
301548 
301549 
301550    --
301551    --
301552    END IF;
301553 
301554        --
301555        -- Update the line information that should be overwritten
301556        --
301557        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
301558                                          p_header_num   => 1);
301559        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
301560 
301561        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
301562 
301563        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
301564           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
301565        END IF;
301566 
301567       --
301568       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
301569       --
301570       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
301571           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
301572       ELSE
301573           ---------------------------------------------------------------------------------------------------
301574           -- 4262811a Switch Sign
301575           ---------------------------------------------------------------------------------------------------
301576           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
301577           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
301578                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
301579           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
301580                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
301581           -- 5132302
301582           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
301583                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
301584 
301585       END IF;
301586 
301587       -- 4955764
301588       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
301589       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
301590 
301591 
301592       XLA_AE_LINES_PKG.ValidateCurrentLine;
301593       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
301594 
301595       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
301596                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
301597                ,p_balance_type_code => l_balance_type_code);
301598 
301599    END IF;
301600 
301601    -----------------------------------------------------------------------------------------
301602    -- 4262811 Multiperiod Accounting
301603    -----------------------------------------------------------------------------------------
301604      -- No MPA option is assigned.
301605 
301606 
301607 END IF;
301608 END IF;
301609 --
301610 
301611 --
301612 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
301613    trace
301614       (p_msg      => 'END of AcctLineType_537'
301615       ,p_level    => C_LEVEL_PROCEDURE
301616       ,p_module   => l_log_module);
301617 END IF;
301618 --
301619 EXCEPTION
301620   WHEN xla_exceptions_pkg.application_exception THEN
301621       RAISE;
301622   WHEN OTHERS THEN
301623        xla_exceptions_pkg.raise_message
301624            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_537');
301625 END AcctLineType_537;
301626 --
301627 
301628 ---------------------------------------
301629 --
301630 -- PRIVATE FUNCTION
301631 --         AcctLineType_538
301632 --
301633 ---------------------------------------
301634 PROCEDURE AcctLineType_538 (
301635   p_application_id        IN NUMBER
301636  ,p_event_id              IN NUMBER
301637  ,p_calculate_acctd_flag  IN VARCHAR2
301638  ,p_calculate_g_l_flag    IN VARCHAR2
301639  ,p_actual_flag           IN OUT VARCHAR2
301640  ,p_balance_type_code     OUT VARCHAR2
301641  ,p_gain_or_loss_ref      OUT VARCHAR2
301642  
301643 --TRANSACTION_ID
301644  , p_source_1            IN NUMBER
301645 --Item Concatenated Segments
301646  , p_source_2            IN VARCHAR2
301647 --Transaction Quantity
301648  , p_source_3            IN NUMBER
301649 --Transaction Unit of Measure Code
301650  , p_source_4            IN VARCHAR2
301651 --Inventory Transaction Type Description
301652  , p_source_5            IN VARCHAR2
301653 --Cost Management Default Account
301654  , p_source_11            IN NUMBER
301655 --DISTRIBUTION_IDENTIFIER
301656  , p_source_84            IN NUMBER
301657 --Distribution Type
301658  , p_source_85            IN VARCHAR2
301659  , p_source_85_meaning    IN VARCHAR2
301660 --Entered Currency Code
301661  , p_source_88            IN VARCHAR2
301662 --Entered Amount
301663  , p_source_91            IN NUMBER
301664 --Currency Conversion Date
301665  , p_source_92            IN DATE
301666 --Currency Conversion Rate
301667  , p_source_93            IN NUMBER
301668 --Currency Conversion Type
301669  , p_source_94            IN VARCHAR2
301670 --Accounted Amount
301671  , p_source_95            IN NUMBER
301672 --Accounting Line Type
301673  , p_source_97            IN NUMBER
301674 )
301675 IS
301676 
301677 l_component_type              VARCHAR2(80);
301678 l_component_code              VARCHAR2(30);
301679 l_component_type_code         VARCHAR2(1);
301680 l_component_appl_id           INTEGER;
301681 l_amb_context_code            VARCHAR2(30);
301682 l_entity_code                 VARCHAR2(30);
301683 l_event_class_code            VARCHAR2(30);
301684 l_ae_header_id                NUMBER;
301685 l_event_type_code             VARCHAR2(30);
301686 l_line_definition_code        VARCHAR2(30);
301687 l_line_definition_owner_code  VARCHAR2(1);
301688 --
301689 -- adr variables
301690 l_segment                     VARCHAR2(30);
301691 l_ccid                        NUMBER;
301692 l_adr_transaction_coa_id      NUMBER;
301693 l_adr_accounting_coa_id       NUMBER;
301694 l_adr_flexfield_segment_code  VARCHAR2(30);
301695 l_adr_flex_value_set_id       NUMBER;
301696 l_adr_value_type_code         VARCHAR2(30);
301697 l_adr_value_combination_id    NUMBER;
301698 l_adr_value_segment_code      VARCHAR2(30);
301699 
301700 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
301701 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
301702 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
301703 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
301704 
301705 -- 4262811 Variables ------------------------------------------------------------------------------------------
301706 l_entered_amt_idx             NUMBER;
301707 l_accted_amt_idx              NUMBER;
301708 l_acc_rev_flag                VARCHAR2(1);
301709 l_accrual_line_num            NUMBER;
301710 l_tmp_amt                     NUMBER;
301711 l_acc_rev_natural_side_code   VARCHAR2(1);
301712 
301713 l_num_entries                 NUMBER;
301714 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
301715 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
301716 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
301717 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
301718 l_recog_line_1                NUMBER;
301719 l_recog_line_2                NUMBER;
301720 
301721 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
301722 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
301723 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
301724 
301725 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
301726 
301727 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
301728 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
301729 
301730 ---------------------------------------------------------------------------------------------------------------
301731 
301732 
301733 --
301734 -- bulk performance
301735 --
301736 l_balance_type_code           VARCHAR2(1);
301737 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
301738 l_log_module                  VARCHAR2(240);
301739 
301740 --
301741 -- Upgrade strategy
301742 --
301743 l_actual_upg_option           VARCHAR2(1);
301744 l_enc_upg_option           VARCHAR2(1);
301745 
301746 --
301747 BEGIN
301748 --
301749 IF g_log_enabled THEN
301750       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_538';
301751 END IF;
301752 --
301753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
301754 
301755       trace
301756          (p_msg      => 'BEGIN of AcctLineType_538'
301757          ,p_level    => C_LEVEL_PROCEDURE
301758          ,p_module   => l_log_module);
301759 
301760 END IF;
301761 --
301762 l_component_type             := 'AMB_JLT';
301763 l_component_code             := 'WIP_VALUATION';
301764 l_component_type_code        := 'S';
301765 l_component_appl_id          :=  707;
301766 l_amb_context_code           := 'DEFAULT';
301767 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
301768 l_event_class_code           := 'WIP_MTL';
301769 l_event_type_code            := 'WIP_ASSEMBLY_RETURN';
301770 l_line_definition_owner_code := 'S';
301771 l_line_definition_code       := 'PI_WIP_ASSEMBLY_RETURN';
301772 --
301773 l_balance_type_code          := 'A';
301774 l_segment                     := NULL;
301775 l_ccid                        := NULL;
301776 l_adr_transaction_coa_id      := NULL;
301777 l_adr_accounting_coa_id       := NULL;
301778 l_adr_flexfield_segment_code  := NULL;
301779 l_adr_flex_value_set_id       := NULL;
301780 l_adr_value_type_code         := NULL;
301781 l_adr_value_combination_id    := NULL;
301782 l_adr_value_segment_code      := NULL;
301783 
301784 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
301785 l_bflow_class_code           := '';    -- 4219869 Business Flow
301786 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
301787 l_budgetary_control_flag     := 'N';
301788 
301789 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
301790 l_bflow_applied_to_amt       := NULL; -- 5132302
301791 l_entered_amt_idx            := NULL;          -- 4262811
301792 l_accted_amt_idx             := NULL;          -- 4262811
301793 l_acc_rev_flag               := NULL;          -- 4262811
301794 l_accrual_line_num           := NULL;          -- 4262811
301795 l_tmp_amt                    := NULL;          -- 4262811
301796 --
301797  
301798 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
301799     l_balance_type_code <> 'B' THEN
301800 IF NVL(p_source_97,9E125) =  7
301801  THEN 
301802 
301803    --
301804    XLA_AE_LINES_PKG.SetNewLine;
301805 
301806    p_balance_type_code          := l_balance_type_code;
301807    -- set the flag so later we will know whether the gain loss line needs to be created
301808    
301809    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
301810      p_actual_flag :='A';
301811    END IF;
301812 
301813    --
301814    -- bulk performance
301815    --
301816    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
301817                                       p_header_num   => 0); -- 4262811
301818    --
301819    -- set accounting line options
301820    --
301821    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
301822            p_natural_side_code          => 'D'
301823          , p_gain_or_loss_flag          => 'N'
301824          , p_gl_transfer_mode_code      => 'S'
301825          , p_acct_entry_type_code       => 'A'
301826          , p_switch_side_flag           => 'Y'
301827          , p_merge_duplicate_code       => 'N'
301828          );
301829    --
301830    l_acc_rev_natural_side_code := 'C';  -- 4262811
301831    -- 
301832    --
301833    -- set accounting line type info
301834    --
301835    xla_ae_lines_pkg.SetAcctLineType
301836       (p_component_type             => l_component_type
301837       ,p_event_type_code            => l_event_type_code
301838       ,p_line_definition_owner_code => l_line_definition_owner_code
301839       ,p_line_definition_code       => l_line_definition_code
301840       ,p_accounting_line_code       => l_component_code
301841       ,p_accounting_line_type_code  => l_component_type_code
301842       ,p_accounting_line_appl_id    => l_component_appl_id
301843       ,p_amb_context_code           => l_amb_context_code
301844       ,p_entity_code                => l_entity_code
301845       ,p_event_class_code           => l_event_class_code);
301846    --
301847    -- set accounting class
301848    --
301849    xla_ae_lines_pkg.SetAcctClass(
301850            p_accounting_class_code  => 'WIP_VALUATION'
301851          , p_ae_header_id           => l_ae_header_id
301852          );
301853 
301854    --
301855    -- set rounding class
301856    --
301857    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
301858                       'WIP_VALUATION';
301859 
301860    --
301861    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
301862    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
301863    --
301864    -- bulk performance
301865    --
301866    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
301867 
301868    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
301869       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
301870 
301871    -- 4955764
301872    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
301873       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
301874 
301875    -- 4458381 Public Sector Enh
301876    
301877    --
301878    -- set accounting attributes for the line type
301879    --
301880    l_entered_amt_idx := 3;
301881    l_accted_amt_idx  := 8;
301882    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
301883    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
301884    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
301885    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
301886    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
301887    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
301888    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
301889    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
301890    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
301891    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
301892    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
301893    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
301894    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
301895    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
301896    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
301897    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
301898    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
301899 
301900    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
301901    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
301902 
301903    ---------------------------------------------------------------------------------------------------------------
301904    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
301905    ---------------------------------------------------------------------------------------------------------------
301906    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
301907 
301908    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
301909    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
301910 
301911    IF xla_accounting_cache_pkg.GetValueChar
301912          (p_source_code         => 'LEDGER_CATEGORY_CODE'
301913          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
301914    AND l_bflow_method_code = 'PRIOR_ENTRY'
301915 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
301916    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
301917          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
301918        )
301919    THEN
301920          xla_ae_lines_pkg.BflowUpgEntry
301921            (p_business_method_code    => l_bflow_method_code
301922            ,p_business_class_code     => l_bflow_class_code
301923            ,p_balance_type            => l_balance_type_code);
301924    ELSE
301925       NULL;
301926 -- No business flow processing for business flow method of NONE.
301927    END IF;
301928 
301929    --
301930    -- call analytical criteria
301931    --
301932    
301933    --
301934    -- call description
301935    --
301936    
301937 xla_ae_lines_pkg.SetLineDescription(
301938    p_ae_header_id => l_ae_header_id
301939   ,p_description  => Description_1 (
301940      p_application_id         => p_application_id
301941    , p_ae_header_id           => l_ae_header_id 
301942 , p_source_1 => p_source_1
301943 , p_source_2 => p_source_2
301944 , p_source_3 => p_source_3
301945 , p_source_4 => p_source_4
301946 , p_source_5 => p_source_5
301947    )
301948 );
301949 
301950 
301951    --
301952    -- call ADRs
301953    -- Bug 4922099
301954    --
301955    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
301956         (NVL(l_actual_upg_option, 'N') = 'O') OR
301957         (NVL(l_enc_upg_option, 'N') = 'O')
301958       )
301959    THEN
301960    NULL;
301961    --
301962    --
301963    
301964   l_ccid := AcctDerRule_6(
301965            p_application_id           => p_application_id
301966          , p_ae_header_id             => l_ae_header_id 
301967 , p_source_11 => p_source_11
301968          , x_transaction_coa_id       => l_adr_transaction_coa_id
301969          , x_accounting_coa_id        => l_adr_accounting_coa_id
301970          , x_value_type_code          => l_adr_value_type_code
301971          , p_side                     => 'NA'
301972    );
301973 
301974    xla_ae_lines_pkg.set_ccid(
301975     p_code_combination_id          => l_ccid
301976   , p_value_type_code              => l_adr_value_type_code
301977   , p_transaction_coa_id           => l_adr_transaction_coa_id
301978   , p_accounting_coa_id            => l_adr_accounting_coa_id
301979   , p_adr_code                     => 'CST_DEFAULT'
301980   , p_adr_type_code                => 'S'
301981   , p_component_type               => l_component_type
301982   , p_component_code               => l_component_code
301983   , p_component_type_code          => l_component_type_code
301984   , p_component_appl_id            => l_component_appl_id
301985   , p_amb_context_code             => l_amb_context_code
301986   , p_side                         => 'NA'
301987   );
301988 
301989 
301990    --
301991    --
301992    END IF;
301993    --
301994    -- Bug 4922099
301995    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
301996           (NVL(l_enc_upg_option, 'N') = 'O')
301997         ) AND
301998         (l_bflow_method_code = 'PRIOR_ENTRY')
301999       )
302000    THEN
302001       IF
302002       --
302003       1 = 2
302004       --
302005       THEN
302006       xla_accounting_err_pkg.build_message
302007                                     (p_appli_s_name            => 'XLA'
302008                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
302009                                     ,p_token_1                 => 'LINE_NUMBER'
302010                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
302011                                     ,p_token_2                 => 'LINE_TYPE_NAME'
302012                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
302013                                                                              l_component_type
302014                                                                             ,l_component_code
302015                                                                             ,l_component_type_code
302016                                                                             ,l_component_appl_id
302017                                                                             ,l_amb_context_code
302018                                                                             ,l_entity_code
302019                                                                             ,l_event_class_code
302020                                                                            )
302021                                     ,p_token_3                 => 'OWNER'
302022                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
302023                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
302024                                                                           ,p_lookup_code    => l_component_type_code
302025                                                                          )
302026                                     ,p_token_4                 => 'PRODUCT_NAME'
302027                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
302028                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
302029                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
302030                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
302031                                     ,p_ae_header_id            =>  NULL
302032                                        );
302033 
302034         IF (C_LEVEL_ERROR>= g_log_level) THEN
302035                  trace
302036                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
302037                       ,p_level    => C_LEVEL_ERROR
302038                       ,p_module   => l_log_module);
302039         END IF;
302040       END IF;
302041    END IF;
302042    --
302043    --
302044    ------------------------------------------------------------------------------------------------
302045    -- 4219869 Business Flow
302046    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
302047    -- Prior Entry.  Currently, the following code is always generated.
302048    ------------------------------------------------------------------------------------------------
302049    XLA_AE_LINES_PKG.ValidateCurrentLine;
302050 
302051    ------------------------------------------------------------------------------------
302052    -- 4219869 Business Flow
302053    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
302054    ------------------------------------------------------------------------------------
302055    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
302056 
302057    ----------------------------------------------------------------------------------
302058    -- 4219869 Business Flow
302059    -- Update journal entry status -- Need to generate this within IF <condition>
302060    ----------------------------------------------------------------------------------
302061    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
302062          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
302063          ,p_balance_type_code => l_balance_type_code
302064          );
302065 
302066    -------------------------------------------------------------------------------------------
302067    -- 4262811 - Generate the Accrual Reversal lines
302068    -------------------------------------------------------------------------------------------
302069    BEGIN
302070       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
302071                               (g_array_event(p_event_id).array_value_num('header_index'));
302072       IF l_acc_rev_flag IS NULL THEN
302073          l_acc_rev_flag := 'N';
302074       END IF;
302075    EXCEPTION
302076       WHEN OTHERS THEN
302077          l_acc_rev_flag := 'N';
302078    END;
302079    --
302080    IF (l_acc_rev_flag = 'Y') THEN
302081 
302082        -- 4645092  ------------------------------------------------------------------------------
302083        -- To allow MPA report to determine if it should generate report process
302084        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
302085        ------------------------------------------------------------------------------------------
302086 
302087        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
302088        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
302089    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
302090    -- call ADRs
302091    -- Bug 4922099
302092    --
302093    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
302094         (NVL(l_actual_upg_option, 'N') = 'O') OR
302095         (NVL(l_enc_upg_option, 'N') = 'O')
302096       )
302097    THEN
302098    NULL;
302099    --
302100    --
302101    
302102   l_ccid := AcctDerRule_6(
302103            p_application_id           => p_application_id
302104          , p_ae_header_id             => l_ae_header_id 
302105 , p_source_11 => p_source_11
302106          , x_transaction_coa_id       => l_adr_transaction_coa_id
302107          , x_accounting_coa_id        => l_adr_accounting_coa_id
302108          , x_value_type_code          => l_adr_value_type_code
302109          , p_side                     => 'NA'
302110    );
302111 
302112    xla_ae_lines_pkg.set_ccid(
302113     p_code_combination_id          => l_ccid
302114   , p_value_type_code              => l_adr_value_type_code
302115   , p_transaction_coa_id           => l_adr_transaction_coa_id
302116   , p_accounting_coa_id            => l_adr_accounting_coa_id
302117   , p_adr_code                     => 'CST_DEFAULT'
302118   , p_adr_type_code                => 'S'
302119   , p_component_type               => l_component_type
302120   , p_component_code               => l_component_code
302121   , p_component_type_code          => l_component_type_code
302122   , p_component_appl_id            => l_component_appl_id
302123   , p_amb_context_code             => l_amb_context_code
302124   , p_side                         => 'NA'
302125   );
302126 
302127 
302128    --
302129    --
302130    END IF;
302131 
302132        --
302133        -- Update the line information that should be overwritten
302134        --
302135        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
302136                                          p_header_num   => 1);
302137        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
302138 
302139        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
302140 
302141        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
302142           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
302143        END IF;
302144 
302145       --
302146       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
302147       --
302148       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
302149           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
302150       ELSE
302151           ---------------------------------------------------------------------------------------------------
302152           -- 4262811a Switch Sign
302153           ---------------------------------------------------------------------------------------------------
302154           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
302155           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
302156                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
302157           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
302158                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
302159           -- 5132302
302160           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
302161                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
302162 
302163       END IF;
302164 
302165       -- 4955764
302166       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
302167       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
302168 
302169 
302170       XLA_AE_LINES_PKG.ValidateCurrentLine;
302171       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
302172 
302173       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
302174                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
302175                ,p_balance_type_code => l_balance_type_code);
302176 
302177    END IF;
302178 
302179    -----------------------------------------------------------------------------------------
302180    -- 4262811 Multiperiod Accounting
302181    -----------------------------------------------------------------------------------------
302182      -- No MPA option is assigned.
302183 
302184 
302185 END IF;
302186 END IF;
302187 --
302188 
302189 --
302190 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
302191    trace
302192       (p_msg      => 'END of AcctLineType_538'
302193       ,p_level    => C_LEVEL_PROCEDURE
302194       ,p_module   => l_log_module);
302195 END IF;
302196 --
302197 EXCEPTION
302198   WHEN xla_exceptions_pkg.application_exception THEN
302199       RAISE;
302200   WHEN OTHERS THEN
302201        xla_exceptions_pkg.raise_message
302202            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_538');
302203 END AcctLineType_538;
302204 --
302205 
302206 ---------------------------------------
302207 --
302208 -- PRIVATE FUNCTION
302209 --         AcctLineType_539
302210 --
302211 ---------------------------------------
302212 PROCEDURE AcctLineType_539 (
302213   p_application_id        IN NUMBER
302214  ,p_event_id              IN NUMBER
302215  ,p_calculate_acctd_flag  IN VARCHAR2
302216  ,p_calculate_g_l_flag    IN VARCHAR2
302217  ,p_actual_flag           IN OUT VARCHAR2
302218  ,p_balance_type_code     OUT VARCHAR2
302219  ,p_gain_or_loss_ref      OUT VARCHAR2
302220  
302221 --TRANSACTION_ID
302222  , p_source_1            IN NUMBER
302223 --Item Concatenated Segments
302224  , p_source_2            IN VARCHAR2
302225 --Transaction Quantity
302226  , p_source_3            IN NUMBER
302227 --Transaction Unit of Measure Code
302228  , p_source_4            IN VARCHAR2
302229 --Inventory Transaction Type Description
302230  , p_source_5            IN VARCHAR2
302231 --Cost Management Default Account
302232  , p_source_11            IN NUMBER
302233 --DISTRIBUTION_IDENTIFIER
302234  , p_source_84            IN NUMBER
302235 --Distribution Type
302236  , p_source_85            IN VARCHAR2
302237  , p_source_85_meaning    IN VARCHAR2
302238 --Entered Currency Code
302239  , p_source_88            IN VARCHAR2
302240 --Entered Amount
302241  , p_source_91            IN NUMBER
302242 --Currency Conversion Date
302243  , p_source_92            IN DATE
302244 --Currency Conversion Rate
302245  , p_source_93            IN NUMBER
302246 --Currency Conversion Type
302247  , p_source_94            IN VARCHAR2
302248 --Accounted Amount
302249  , p_source_95            IN NUMBER
302250 --Accounting Line Type
302251  , p_source_97            IN NUMBER
302252 )
302253 IS
302254 
302255 l_component_type              VARCHAR2(80);
302256 l_component_code              VARCHAR2(30);
302257 l_component_type_code         VARCHAR2(1);
302258 l_component_appl_id           INTEGER;
302259 l_amb_context_code            VARCHAR2(30);
302260 l_entity_code                 VARCHAR2(30);
302261 l_event_class_code            VARCHAR2(30);
302262 l_ae_header_id                NUMBER;
302263 l_event_type_code             VARCHAR2(30);
302264 l_line_definition_code        VARCHAR2(30);
302265 l_line_definition_owner_code  VARCHAR2(1);
302266 --
302267 -- adr variables
302268 l_segment                     VARCHAR2(30);
302269 l_ccid                        NUMBER;
302270 l_adr_transaction_coa_id      NUMBER;
302271 l_adr_accounting_coa_id       NUMBER;
302272 l_adr_flexfield_segment_code  VARCHAR2(30);
302273 l_adr_flex_value_set_id       NUMBER;
302274 l_adr_value_type_code         VARCHAR2(30);
302275 l_adr_value_combination_id    NUMBER;
302276 l_adr_value_segment_code      VARCHAR2(30);
302277 
302278 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
302279 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
302280 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
302281 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
302282 
302283 -- 4262811 Variables ------------------------------------------------------------------------------------------
302284 l_entered_amt_idx             NUMBER;
302285 l_accted_amt_idx              NUMBER;
302286 l_acc_rev_flag                VARCHAR2(1);
302287 l_accrual_line_num            NUMBER;
302288 l_tmp_amt                     NUMBER;
302289 l_acc_rev_natural_side_code   VARCHAR2(1);
302290 
302291 l_num_entries                 NUMBER;
302292 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
302293 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
302294 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
302295 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
302296 l_recog_line_1                NUMBER;
302297 l_recog_line_2                NUMBER;
302298 
302299 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
302300 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
302301 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
302302 
302303 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
302304 
302305 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
302306 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
302307 
302308 ---------------------------------------------------------------------------------------------------------------
302309 
302310 
302311 --
302312 -- bulk performance
302313 --
302314 l_balance_type_code           VARCHAR2(1);
302315 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
302316 l_log_module                  VARCHAR2(240);
302317 
302318 --
302319 -- Upgrade strategy
302320 --
302321 l_actual_upg_option           VARCHAR2(1);
302322 l_enc_upg_option           VARCHAR2(1);
302323 
302324 --
302325 BEGIN
302326 --
302327 IF g_log_enabled THEN
302328       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_539';
302329 END IF;
302330 --
302331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
302332 
302333       trace
302334          (p_msg      => 'BEGIN of AcctLineType_539'
302335          ,p_level    => C_LEVEL_PROCEDURE
302336          ,p_module   => l_log_module);
302337 
302338 END IF;
302339 --
302340 l_component_type             := 'AMB_JLT';
302341 l_component_code             := 'WIP_VALUATION';
302342 l_component_type_code        := 'S';
302343 l_component_appl_id          :=  707;
302344 l_amb_context_code           := 'DEFAULT';
302345 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
302346 l_event_class_code           := 'WIP_MTL';
302347 l_event_type_code            := 'WIP_EST_SCRAP_REVERSAL';
302348 l_line_definition_owner_code := 'S';
302349 l_line_definition_code       := 'PI_WIP_EST_SCRAP_REVERSAL';
302350 --
302351 l_balance_type_code          := 'A';
302352 l_segment                     := NULL;
302353 l_ccid                        := NULL;
302354 l_adr_transaction_coa_id      := NULL;
302355 l_adr_accounting_coa_id       := NULL;
302356 l_adr_flexfield_segment_code  := NULL;
302357 l_adr_flex_value_set_id       := NULL;
302358 l_adr_value_type_code         := NULL;
302359 l_adr_value_combination_id    := NULL;
302360 l_adr_value_segment_code      := NULL;
302361 
302362 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
302363 l_bflow_class_code           := '';    -- 4219869 Business Flow
302364 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
302365 l_budgetary_control_flag     := 'N';
302366 
302367 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
302368 l_bflow_applied_to_amt       := NULL; -- 5132302
302369 l_entered_amt_idx            := NULL;          -- 4262811
302370 l_accted_amt_idx             := NULL;          -- 4262811
302371 l_acc_rev_flag               := NULL;          -- 4262811
302372 l_accrual_line_num           := NULL;          -- 4262811
302373 l_tmp_amt                    := NULL;          -- 4262811
302374 --
302375  
302376 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
302377     l_balance_type_code <> 'B' THEN
302378 IF NVL(p_source_97,9E125) =  7
302379  THEN 
302380 
302381    --
302382    XLA_AE_LINES_PKG.SetNewLine;
302383 
302384    p_balance_type_code          := l_balance_type_code;
302385    -- set the flag so later we will know whether the gain loss line needs to be created
302386    
302387    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
302388      p_actual_flag :='A';
302389    END IF;
302390 
302391    --
302392    -- bulk performance
302393    --
302394    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
302395                                       p_header_num   => 0); -- 4262811
302396    --
302397    -- set accounting line options
302398    --
302399    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
302400            p_natural_side_code          => 'D'
302401          , p_gain_or_loss_flag          => 'N'
302402          , p_gl_transfer_mode_code      => 'S'
302403          , p_acct_entry_type_code       => 'A'
302404          , p_switch_side_flag           => 'Y'
302405          , p_merge_duplicate_code       => 'N'
302406          );
302407    --
302408    l_acc_rev_natural_side_code := 'C';  -- 4262811
302409    -- 
302410    --
302411    -- set accounting line type info
302412    --
302413    xla_ae_lines_pkg.SetAcctLineType
302414       (p_component_type             => l_component_type
302415       ,p_event_type_code            => l_event_type_code
302416       ,p_line_definition_owner_code => l_line_definition_owner_code
302417       ,p_line_definition_code       => l_line_definition_code
302418       ,p_accounting_line_code       => l_component_code
302419       ,p_accounting_line_type_code  => l_component_type_code
302420       ,p_accounting_line_appl_id    => l_component_appl_id
302421       ,p_amb_context_code           => l_amb_context_code
302422       ,p_entity_code                => l_entity_code
302423       ,p_event_class_code           => l_event_class_code);
302424    --
302425    -- set accounting class
302426    --
302427    xla_ae_lines_pkg.SetAcctClass(
302428            p_accounting_class_code  => 'WIP_VALUATION'
302429          , p_ae_header_id           => l_ae_header_id
302430          );
302431 
302432    --
302433    -- set rounding class
302434    --
302435    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
302436                       'WIP_VALUATION';
302437 
302438    --
302439    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
302440    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
302441    --
302442    -- bulk performance
302443    --
302444    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
302445 
302446    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
302447       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
302448 
302449    -- 4955764
302450    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
302451       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
302452 
302453    -- 4458381 Public Sector Enh
302454    
302455    --
302456    -- set accounting attributes for the line type
302457    --
302458    l_entered_amt_idx := 3;
302459    l_accted_amt_idx  := 8;
302460    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
302461    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
302462    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
302463    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
302464    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
302465    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
302466    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
302467    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
302468    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
302469    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
302470    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
302471    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
302472    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
302473    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
302474    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
302475    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
302476    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
302477 
302478    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
302479    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
302480 
302481    ---------------------------------------------------------------------------------------------------------------
302482    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
302483    ---------------------------------------------------------------------------------------------------------------
302484    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
302485 
302486    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
302487    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
302488 
302489    IF xla_accounting_cache_pkg.GetValueChar
302490          (p_source_code         => 'LEDGER_CATEGORY_CODE'
302491          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
302492    AND l_bflow_method_code = 'PRIOR_ENTRY'
302493 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
302494    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
302495          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
302496        )
302497    THEN
302498          xla_ae_lines_pkg.BflowUpgEntry
302499            (p_business_method_code    => l_bflow_method_code
302500            ,p_business_class_code     => l_bflow_class_code
302501            ,p_balance_type            => l_balance_type_code);
302502    ELSE
302503       NULL;
302504 -- No business flow processing for business flow method of NONE.
302505    END IF;
302506 
302507    --
302508    -- call analytical criteria
302509    --
302510    
302511    --
302512    -- call description
302513    --
302514    
302515 xla_ae_lines_pkg.SetLineDescription(
302516    p_ae_header_id => l_ae_header_id
302517   ,p_description  => Description_1 (
302518      p_application_id         => p_application_id
302519    , p_ae_header_id           => l_ae_header_id 
302520 , p_source_1 => p_source_1
302521 , p_source_2 => p_source_2
302522 , p_source_3 => p_source_3
302523 , p_source_4 => p_source_4
302524 , p_source_5 => p_source_5
302525    )
302526 );
302527 
302528 
302529    --
302530    -- call ADRs
302531    -- Bug 4922099
302532    --
302533    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
302534         (NVL(l_actual_upg_option, 'N') = 'O') OR
302535         (NVL(l_enc_upg_option, 'N') = 'O')
302536       )
302537    THEN
302538    NULL;
302539    --
302540    --
302541    
302542   l_ccid := AcctDerRule_6(
302543            p_application_id           => p_application_id
302544          , p_ae_header_id             => l_ae_header_id 
302545 , p_source_11 => p_source_11
302546          , x_transaction_coa_id       => l_adr_transaction_coa_id
302547          , x_accounting_coa_id        => l_adr_accounting_coa_id
302548          , x_value_type_code          => l_adr_value_type_code
302549          , p_side                     => 'NA'
302550    );
302551 
302552    xla_ae_lines_pkg.set_ccid(
302553     p_code_combination_id          => l_ccid
302554   , p_value_type_code              => l_adr_value_type_code
302555   , p_transaction_coa_id           => l_adr_transaction_coa_id
302556   , p_accounting_coa_id            => l_adr_accounting_coa_id
302557   , p_adr_code                     => 'CST_DEFAULT'
302558   , p_adr_type_code                => 'S'
302559   , p_component_type               => l_component_type
302560   , p_component_code               => l_component_code
302561   , p_component_type_code          => l_component_type_code
302562   , p_component_appl_id            => l_component_appl_id
302563   , p_amb_context_code             => l_amb_context_code
302564   , p_side                         => 'NA'
302565   );
302566 
302567 
302568    --
302569    --
302570    END IF;
302571    --
302572    -- Bug 4922099
302573    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
302574           (NVL(l_enc_upg_option, 'N') = 'O')
302575         ) AND
302576         (l_bflow_method_code = 'PRIOR_ENTRY')
302577       )
302578    THEN
302579       IF
302580       --
302581       1 = 2
302582       --
302583       THEN
302584       xla_accounting_err_pkg.build_message
302585                                     (p_appli_s_name            => 'XLA'
302586                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
302587                                     ,p_token_1                 => 'LINE_NUMBER'
302588                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
302589                                     ,p_token_2                 => 'LINE_TYPE_NAME'
302590                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
302591                                                                              l_component_type
302592                                                                             ,l_component_code
302593                                                                             ,l_component_type_code
302594                                                                             ,l_component_appl_id
302595                                                                             ,l_amb_context_code
302596                                                                             ,l_entity_code
302597                                                                             ,l_event_class_code
302598                                                                            )
302599                                     ,p_token_3                 => 'OWNER'
302600                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
302601                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
302602                                                                           ,p_lookup_code    => l_component_type_code
302603                                                                          )
302604                                     ,p_token_4                 => 'PRODUCT_NAME'
302605                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
302606                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
302607                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
302608                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
302609                                     ,p_ae_header_id            =>  NULL
302610                                        );
302611 
302612         IF (C_LEVEL_ERROR>= g_log_level) THEN
302613                  trace
302614                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
302615                       ,p_level    => C_LEVEL_ERROR
302616                       ,p_module   => l_log_module);
302617         END IF;
302618       END IF;
302619    END IF;
302620    --
302621    --
302622    ------------------------------------------------------------------------------------------------
302623    -- 4219869 Business Flow
302624    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
302625    -- Prior Entry.  Currently, the following code is always generated.
302626    ------------------------------------------------------------------------------------------------
302627    XLA_AE_LINES_PKG.ValidateCurrentLine;
302628 
302629    ------------------------------------------------------------------------------------
302630    -- 4219869 Business Flow
302631    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
302632    ------------------------------------------------------------------------------------
302633    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
302634 
302635    ----------------------------------------------------------------------------------
302636    -- 4219869 Business Flow
302637    -- Update journal entry status -- Need to generate this within IF <condition>
302638    ----------------------------------------------------------------------------------
302639    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
302640          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
302641          ,p_balance_type_code => l_balance_type_code
302642          );
302643 
302644    -------------------------------------------------------------------------------------------
302645    -- 4262811 - Generate the Accrual Reversal lines
302646    -------------------------------------------------------------------------------------------
302647    BEGIN
302648       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
302649                               (g_array_event(p_event_id).array_value_num('header_index'));
302650       IF l_acc_rev_flag IS NULL THEN
302651          l_acc_rev_flag := 'N';
302652       END IF;
302653    EXCEPTION
302654       WHEN OTHERS THEN
302655          l_acc_rev_flag := 'N';
302656    END;
302657    --
302658    IF (l_acc_rev_flag = 'Y') THEN
302659 
302660        -- 4645092  ------------------------------------------------------------------------------
302661        -- To allow MPA report to determine if it should generate report process
302662        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
302663        ------------------------------------------------------------------------------------------
302664 
302665        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
302666        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
302667    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
302668    -- call ADRs
302669    -- Bug 4922099
302670    --
302671    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
302672         (NVL(l_actual_upg_option, 'N') = 'O') OR
302673         (NVL(l_enc_upg_option, 'N') = 'O')
302674       )
302675    THEN
302676    NULL;
302677    --
302678    --
302679    
302680   l_ccid := AcctDerRule_6(
302681            p_application_id           => p_application_id
302682          , p_ae_header_id             => l_ae_header_id 
302683 , p_source_11 => p_source_11
302684          , x_transaction_coa_id       => l_adr_transaction_coa_id
302685          , x_accounting_coa_id        => l_adr_accounting_coa_id
302686          , x_value_type_code          => l_adr_value_type_code
302687          , p_side                     => 'NA'
302688    );
302689 
302690    xla_ae_lines_pkg.set_ccid(
302691     p_code_combination_id          => l_ccid
302692   , p_value_type_code              => l_adr_value_type_code
302693   , p_transaction_coa_id           => l_adr_transaction_coa_id
302694   , p_accounting_coa_id            => l_adr_accounting_coa_id
302695   , p_adr_code                     => 'CST_DEFAULT'
302696   , p_adr_type_code                => 'S'
302697   , p_component_type               => l_component_type
302698   , p_component_code               => l_component_code
302699   , p_component_type_code          => l_component_type_code
302700   , p_component_appl_id            => l_component_appl_id
302701   , p_amb_context_code             => l_amb_context_code
302702   , p_side                         => 'NA'
302703   );
302704 
302705 
302706    --
302707    --
302708    END IF;
302709 
302710        --
302711        -- Update the line information that should be overwritten
302712        --
302713        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
302714                                          p_header_num   => 1);
302715        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
302716 
302717        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
302718 
302719        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
302720           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
302721        END IF;
302722 
302723       --
302724       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
302725       --
302726       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
302727           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
302728       ELSE
302729           ---------------------------------------------------------------------------------------------------
302730           -- 4262811a Switch Sign
302731           ---------------------------------------------------------------------------------------------------
302732           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
302733           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
302734                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
302735           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
302736                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
302737           -- 5132302
302738           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
302739                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
302740 
302741       END IF;
302742 
302743       -- 4955764
302744       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
302745       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
302746 
302747 
302748       XLA_AE_LINES_PKG.ValidateCurrentLine;
302749       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
302750 
302751       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
302752                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
302753                ,p_balance_type_code => l_balance_type_code);
302754 
302755    END IF;
302756 
302757    -----------------------------------------------------------------------------------------
302758    -- 4262811 Multiperiod Accounting
302759    -----------------------------------------------------------------------------------------
302760      -- No MPA option is assigned.
302761 
302762 
302763 END IF;
302764 END IF;
302765 --
302766 
302767 --
302768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
302769    trace
302770       (p_msg      => 'END of AcctLineType_539'
302771       ,p_level    => C_LEVEL_PROCEDURE
302772       ,p_module   => l_log_module);
302773 END IF;
302774 --
302775 EXCEPTION
302776   WHEN xla_exceptions_pkg.application_exception THEN
302777       RAISE;
302778   WHEN OTHERS THEN
302779        xla_exceptions_pkg.raise_message
302780            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_539');
302781 END AcctLineType_539;
302782 --
302783 
302784 ---------------------------------------
302785 --
302786 -- PRIVATE FUNCTION
302787 --         AcctLineType_540
302788 --
302789 ---------------------------------------
302790 PROCEDURE AcctLineType_540 (
302791   p_application_id        IN NUMBER
302792  ,p_event_id              IN NUMBER
302793  ,p_calculate_acctd_flag  IN VARCHAR2
302794  ,p_calculate_g_l_flag    IN VARCHAR2
302795  ,p_actual_flag           IN OUT VARCHAR2
302796  ,p_balance_type_code     OUT VARCHAR2
302797  ,p_gain_or_loss_ref      OUT VARCHAR2
302798  
302799 --TRANSACTION_ID
302800  , p_source_1            IN NUMBER
302801 --Item Concatenated Segments
302802  , p_source_2            IN VARCHAR2
302803 --Transaction Quantity
302804  , p_source_3            IN NUMBER
302805 --Transaction Unit of Measure Code
302806  , p_source_4            IN VARCHAR2
302807 --Inventory Transaction Type Description
302808  , p_source_5            IN VARCHAR2
302809 --Cost Management Default Account
302810  , p_source_11            IN NUMBER
302811 --DISTRIBUTION_IDENTIFIER
302812  , p_source_84            IN NUMBER
302813 --Distribution Type
302814  , p_source_85            IN VARCHAR2
302815  , p_source_85_meaning    IN VARCHAR2
302816 --Entered Currency Code
302817  , p_source_88            IN VARCHAR2
302818 --Entered Amount
302819  , p_source_91            IN NUMBER
302820 --Currency Conversion Date
302821  , p_source_92            IN DATE
302822 --Currency Conversion Rate
302823  , p_source_93            IN NUMBER
302824 --Currency Conversion Type
302825  , p_source_94            IN VARCHAR2
302826 --Accounted Amount
302827  , p_source_95            IN NUMBER
302828 --Accounting Line Type
302829  , p_source_97            IN NUMBER
302830 )
302831 IS
302832 
302833 l_component_type              VARCHAR2(80);
302834 l_component_code              VARCHAR2(30);
302835 l_component_type_code         VARCHAR2(1);
302836 l_component_appl_id           INTEGER;
302837 l_amb_context_code            VARCHAR2(30);
302838 l_entity_code                 VARCHAR2(30);
302839 l_event_class_code            VARCHAR2(30);
302840 l_ae_header_id                NUMBER;
302841 l_event_type_code             VARCHAR2(30);
302842 l_line_definition_code        VARCHAR2(30);
302843 l_line_definition_owner_code  VARCHAR2(1);
302844 --
302845 -- adr variables
302846 l_segment                     VARCHAR2(30);
302847 l_ccid                        NUMBER;
302848 l_adr_transaction_coa_id      NUMBER;
302849 l_adr_accounting_coa_id       NUMBER;
302850 l_adr_flexfield_segment_code  VARCHAR2(30);
302851 l_adr_flex_value_set_id       NUMBER;
302852 l_adr_value_type_code         VARCHAR2(30);
302853 l_adr_value_combination_id    NUMBER;
302854 l_adr_value_segment_code      VARCHAR2(30);
302855 
302856 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
302857 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
302858 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
302859 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
302860 
302861 -- 4262811 Variables ------------------------------------------------------------------------------------------
302862 l_entered_amt_idx             NUMBER;
302863 l_accted_amt_idx              NUMBER;
302864 l_acc_rev_flag                VARCHAR2(1);
302865 l_accrual_line_num            NUMBER;
302866 l_tmp_amt                     NUMBER;
302867 l_acc_rev_natural_side_code   VARCHAR2(1);
302868 
302869 l_num_entries                 NUMBER;
302870 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
302871 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
302872 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
302873 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
302874 l_recog_line_1                NUMBER;
302875 l_recog_line_2                NUMBER;
302876 
302877 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
302878 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
302879 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
302880 
302881 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
302882 
302883 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
302884 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
302885 
302886 ---------------------------------------------------------------------------------------------------------------
302887 
302888 
302889 --
302890 -- bulk performance
302891 --
302892 l_balance_type_code           VARCHAR2(1);
302893 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
302894 l_log_module                  VARCHAR2(240);
302895 
302896 --
302897 -- Upgrade strategy
302898 --
302899 l_actual_upg_option           VARCHAR2(1);
302900 l_enc_upg_option           VARCHAR2(1);
302901 
302902 --
302903 BEGIN
302904 --
302905 IF g_log_enabled THEN
302906       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_540';
302907 END IF;
302908 --
302909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
302910 
302911       trace
302912          (p_msg      => 'BEGIN of AcctLineType_540'
302913          ,p_level    => C_LEVEL_PROCEDURE
302914          ,p_module   => l_log_module);
302915 
302916 END IF;
302917 --
302918 l_component_type             := 'AMB_JLT';
302919 l_component_code             := 'WIP_VALUATION';
302920 l_component_type_code        := 'S';
302921 l_component_appl_id          :=  707;
302922 l_amb_context_code           := 'DEFAULT';
302923 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
302924 l_event_class_code           := 'WIP_MTL';
302925 l_event_type_code            := 'WIP_SCRAP';
302926 l_line_definition_owner_code := 'S';
302927 l_line_definition_code       := 'PI_WIP_SCRAP';
302928 --
302929 l_balance_type_code          := 'A';
302930 l_segment                     := NULL;
302931 l_ccid                        := NULL;
302932 l_adr_transaction_coa_id      := NULL;
302933 l_adr_accounting_coa_id       := NULL;
302934 l_adr_flexfield_segment_code  := NULL;
302935 l_adr_flex_value_set_id       := NULL;
302936 l_adr_value_type_code         := NULL;
302937 l_adr_value_combination_id    := NULL;
302938 l_adr_value_segment_code      := NULL;
302939 
302940 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
302941 l_bflow_class_code           := '';    -- 4219869 Business Flow
302942 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
302943 l_budgetary_control_flag     := 'N';
302944 
302945 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
302946 l_bflow_applied_to_amt       := NULL; -- 5132302
302947 l_entered_amt_idx            := NULL;          -- 4262811
302948 l_accted_amt_idx             := NULL;          -- 4262811
302949 l_acc_rev_flag               := NULL;          -- 4262811
302950 l_accrual_line_num           := NULL;          -- 4262811
302951 l_tmp_amt                    := NULL;          -- 4262811
302952 --
302953  
302954 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
302955     l_balance_type_code <> 'B' THEN
302956 IF NVL(p_source_97,9E125) =  7
302957  THEN 
302958 
302959    --
302960    XLA_AE_LINES_PKG.SetNewLine;
302961 
302962    p_balance_type_code          := l_balance_type_code;
302963    -- set the flag so later we will know whether the gain loss line needs to be created
302964    
302965    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
302966      p_actual_flag :='A';
302967    END IF;
302968 
302969    --
302970    -- bulk performance
302971    --
302972    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
302973                                       p_header_num   => 0); -- 4262811
302974    --
302975    -- set accounting line options
302976    --
302977    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
302978            p_natural_side_code          => 'D'
302979          , p_gain_or_loss_flag          => 'N'
302980          , p_gl_transfer_mode_code      => 'S'
302981          , p_acct_entry_type_code       => 'A'
302982          , p_switch_side_flag           => 'Y'
302983          , p_merge_duplicate_code       => 'N'
302984          );
302985    --
302986    l_acc_rev_natural_side_code := 'C';  -- 4262811
302987    -- 
302988    --
302989    -- set accounting line type info
302990    --
302991    xla_ae_lines_pkg.SetAcctLineType
302992       (p_component_type             => l_component_type
302993       ,p_event_type_code            => l_event_type_code
302994       ,p_line_definition_owner_code => l_line_definition_owner_code
302995       ,p_line_definition_code       => l_line_definition_code
302996       ,p_accounting_line_code       => l_component_code
302997       ,p_accounting_line_type_code  => l_component_type_code
302998       ,p_accounting_line_appl_id    => l_component_appl_id
302999       ,p_amb_context_code           => l_amb_context_code
303000       ,p_entity_code                => l_entity_code
303001       ,p_event_class_code           => l_event_class_code);
303002    --
303003    -- set accounting class
303004    --
303005    xla_ae_lines_pkg.SetAcctClass(
303006            p_accounting_class_code  => 'WIP_VALUATION'
303007          , p_ae_header_id           => l_ae_header_id
303008          );
303009 
303010    --
303011    -- set rounding class
303012    --
303013    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
303014                       'WIP_VALUATION';
303015 
303016    --
303017    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
303018    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
303019    --
303020    -- bulk performance
303021    --
303022    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
303023 
303024    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
303025       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
303026 
303027    -- 4955764
303028    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
303029       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
303030 
303031    -- 4458381 Public Sector Enh
303032    
303033    --
303034    -- set accounting attributes for the line type
303035    --
303036    l_entered_amt_idx := 3;
303037    l_accted_amt_idx  := 8;
303038    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
303039    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
303040    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
303041    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
303042    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
303043    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
303044    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
303045    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
303046    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
303047    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
303048    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
303049    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
303050    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
303051    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
303052    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
303053    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
303054    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
303055 
303056    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
303057    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
303058 
303059    ---------------------------------------------------------------------------------------------------------------
303060    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
303061    ---------------------------------------------------------------------------------------------------------------
303062    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
303063 
303064    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
303065    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
303066 
303067    IF xla_accounting_cache_pkg.GetValueChar
303068          (p_source_code         => 'LEDGER_CATEGORY_CODE'
303069          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
303070    AND l_bflow_method_code = 'PRIOR_ENTRY'
303071 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
303072    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
303073          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
303074        )
303075    THEN
303076          xla_ae_lines_pkg.BflowUpgEntry
303077            (p_business_method_code    => l_bflow_method_code
303078            ,p_business_class_code     => l_bflow_class_code
303079            ,p_balance_type            => l_balance_type_code);
303080    ELSE
303081       NULL;
303082 -- No business flow processing for business flow method of NONE.
303083    END IF;
303084 
303085    --
303086    -- call analytical criteria
303087    --
303088    
303089    --
303090    -- call description
303091    --
303092    
303093 xla_ae_lines_pkg.SetLineDescription(
303094    p_ae_header_id => l_ae_header_id
303095   ,p_description  => Description_1 (
303096      p_application_id         => p_application_id
303097    , p_ae_header_id           => l_ae_header_id 
303098 , p_source_1 => p_source_1
303099 , p_source_2 => p_source_2
303100 , p_source_3 => p_source_3
303101 , p_source_4 => p_source_4
303102 , p_source_5 => p_source_5
303103    )
303104 );
303105 
303106 
303107    --
303108    -- call ADRs
303109    -- Bug 4922099
303110    --
303111    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
303112         (NVL(l_actual_upg_option, 'N') = 'O') OR
303113         (NVL(l_enc_upg_option, 'N') = 'O')
303114       )
303115    THEN
303116    NULL;
303117    --
303118    --
303119    
303120   l_ccid := AcctDerRule_6(
303121            p_application_id           => p_application_id
303122          , p_ae_header_id             => l_ae_header_id 
303123 , p_source_11 => p_source_11
303124          , x_transaction_coa_id       => l_adr_transaction_coa_id
303125          , x_accounting_coa_id        => l_adr_accounting_coa_id
303126          , x_value_type_code          => l_adr_value_type_code
303127          , p_side                     => 'NA'
303128    );
303129 
303130    xla_ae_lines_pkg.set_ccid(
303131     p_code_combination_id          => l_ccid
303132   , p_value_type_code              => l_adr_value_type_code
303133   , p_transaction_coa_id           => l_adr_transaction_coa_id
303134   , p_accounting_coa_id            => l_adr_accounting_coa_id
303135   , p_adr_code                     => 'CST_DEFAULT'
303136   , p_adr_type_code                => 'S'
303137   , p_component_type               => l_component_type
303138   , p_component_code               => l_component_code
303139   , p_component_type_code          => l_component_type_code
303140   , p_component_appl_id            => l_component_appl_id
303141   , p_amb_context_code             => l_amb_context_code
303142   , p_side                         => 'NA'
303143   );
303144 
303145 
303146    --
303147    --
303148    END IF;
303149    --
303150    -- Bug 4922099
303151    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
303152           (NVL(l_enc_upg_option, 'N') = 'O')
303153         ) AND
303154         (l_bflow_method_code = 'PRIOR_ENTRY')
303155       )
303156    THEN
303157       IF
303158       --
303159       1 = 2
303160       --
303161       THEN
303162       xla_accounting_err_pkg.build_message
303163                                     (p_appli_s_name            => 'XLA'
303164                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
303165                                     ,p_token_1                 => 'LINE_NUMBER'
303166                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
303167                                     ,p_token_2                 => 'LINE_TYPE_NAME'
303168                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
303169                                                                              l_component_type
303170                                                                             ,l_component_code
303171                                                                             ,l_component_type_code
303172                                                                             ,l_component_appl_id
303173                                                                             ,l_amb_context_code
303174                                                                             ,l_entity_code
303175                                                                             ,l_event_class_code
303176                                                                            )
303177                                     ,p_token_3                 => 'OWNER'
303178                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
303179                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
303180                                                                           ,p_lookup_code    => l_component_type_code
303181                                                                          )
303182                                     ,p_token_4                 => 'PRODUCT_NAME'
303183                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
303184                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
303185                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
303186                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
303187                                     ,p_ae_header_id            =>  NULL
303188                                        );
303189 
303190         IF (C_LEVEL_ERROR>= g_log_level) THEN
303191                  trace
303192                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
303193                       ,p_level    => C_LEVEL_ERROR
303194                       ,p_module   => l_log_module);
303195         END IF;
303196       END IF;
303197    END IF;
303198    --
303199    --
303200    ------------------------------------------------------------------------------------------------
303201    -- 4219869 Business Flow
303202    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
303203    -- Prior Entry.  Currently, the following code is always generated.
303204    ------------------------------------------------------------------------------------------------
303205    XLA_AE_LINES_PKG.ValidateCurrentLine;
303206 
303207    ------------------------------------------------------------------------------------
303208    -- 4219869 Business Flow
303209    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
303210    ------------------------------------------------------------------------------------
303211    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
303212 
303213    ----------------------------------------------------------------------------------
303214    -- 4219869 Business Flow
303215    -- Update journal entry status -- Need to generate this within IF <condition>
303216    ----------------------------------------------------------------------------------
303217    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
303218          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
303219          ,p_balance_type_code => l_balance_type_code
303220          );
303221 
303222    -------------------------------------------------------------------------------------------
303223    -- 4262811 - Generate the Accrual Reversal lines
303224    -------------------------------------------------------------------------------------------
303225    BEGIN
303226       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
303227                               (g_array_event(p_event_id).array_value_num('header_index'));
303228       IF l_acc_rev_flag IS NULL THEN
303229          l_acc_rev_flag := 'N';
303230       END IF;
303231    EXCEPTION
303232       WHEN OTHERS THEN
303233          l_acc_rev_flag := 'N';
303234    END;
303235    --
303236    IF (l_acc_rev_flag = 'Y') THEN
303237 
303238        -- 4645092  ------------------------------------------------------------------------------
303239        -- To allow MPA report to determine if it should generate report process
303240        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
303241        ------------------------------------------------------------------------------------------
303242 
303243        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
303244        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
303245    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
303246    -- call ADRs
303247    -- Bug 4922099
303248    --
303249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
303250         (NVL(l_actual_upg_option, 'N') = 'O') OR
303251         (NVL(l_enc_upg_option, 'N') = 'O')
303252       )
303253    THEN
303254    NULL;
303255    --
303256    --
303257    
303258   l_ccid := AcctDerRule_6(
303259            p_application_id           => p_application_id
303260          , p_ae_header_id             => l_ae_header_id 
303261 , p_source_11 => p_source_11
303262          , x_transaction_coa_id       => l_adr_transaction_coa_id
303263          , x_accounting_coa_id        => l_adr_accounting_coa_id
303264          , x_value_type_code          => l_adr_value_type_code
303265          , p_side                     => 'NA'
303266    );
303267 
303268    xla_ae_lines_pkg.set_ccid(
303269     p_code_combination_id          => l_ccid
303270   , p_value_type_code              => l_adr_value_type_code
303271   , p_transaction_coa_id           => l_adr_transaction_coa_id
303272   , p_accounting_coa_id            => l_adr_accounting_coa_id
303273   , p_adr_code                     => 'CST_DEFAULT'
303274   , p_adr_type_code                => 'S'
303275   , p_component_type               => l_component_type
303276   , p_component_code               => l_component_code
303277   , p_component_type_code          => l_component_type_code
303278   , p_component_appl_id            => l_component_appl_id
303279   , p_amb_context_code             => l_amb_context_code
303280   , p_side                         => 'NA'
303281   );
303282 
303283 
303284    --
303285    --
303286    END IF;
303287 
303288        --
303289        -- Update the line information that should be overwritten
303290        --
303291        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
303292                                          p_header_num   => 1);
303293        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
303294 
303295        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
303296 
303297        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
303298           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
303299        END IF;
303300 
303301       --
303302       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
303303       --
303304       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
303305           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
303306       ELSE
303307           ---------------------------------------------------------------------------------------------------
303308           -- 4262811a Switch Sign
303309           ---------------------------------------------------------------------------------------------------
303310           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
303311           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
303312                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
303313           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
303314                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
303315           -- 5132302
303316           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
303317                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
303318 
303319       END IF;
303320 
303321       -- 4955764
303322       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
303323       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
303324 
303325 
303326       XLA_AE_LINES_PKG.ValidateCurrentLine;
303327       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
303328 
303329       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
303330                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
303331                ,p_balance_type_code => l_balance_type_code);
303332 
303333    END IF;
303334 
303335    -----------------------------------------------------------------------------------------
303336    -- 4262811 Multiperiod Accounting
303337    -----------------------------------------------------------------------------------------
303338      -- No MPA option is assigned.
303339 
303340 
303341 END IF;
303342 END IF;
303343 --
303344 
303345 --
303346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
303347    trace
303348       (p_msg      => 'END of AcctLineType_540'
303349       ,p_level    => C_LEVEL_PROCEDURE
303350       ,p_module   => l_log_module);
303351 END IF;
303352 --
303353 EXCEPTION
303354   WHEN xla_exceptions_pkg.application_exception THEN
303355       RAISE;
303356   WHEN OTHERS THEN
303357        xla_exceptions_pkg.raise_message
303358            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_540');
303359 END AcctLineType_540;
303360 --
303361 
303362 ---------------------------------------
303363 --
303364 -- PRIVATE FUNCTION
303365 --         AcctLineType_541
303366 --
303367 ---------------------------------------
303368 PROCEDURE AcctLineType_541 (
303369   p_application_id        IN NUMBER
303370  ,p_event_id              IN NUMBER
303371  ,p_calculate_acctd_flag  IN VARCHAR2
303372  ,p_calculate_g_l_flag    IN VARCHAR2
303373  ,p_actual_flag           IN OUT VARCHAR2
303374  ,p_balance_type_code     OUT VARCHAR2
303375  ,p_gain_or_loss_ref      OUT VARCHAR2
303376  
303377 --Cost Management Default Account
303378  , p_source_11            IN NUMBER
303379 --DISTRIBUTION_IDENTIFIER
303380  , p_source_84            IN NUMBER
303381 --Distribution Type
303382  , p_source_85            IN VARCHAR2
303383  , p_source_85_meaning    IN VARCHAR2
303384 --Entered Currency Code
303385  , p_source_88            IN VARCHAR2
303386 --Entered Amount
303387  , p_source_91            IN NUMBER
303388 --Currency Conversion Date
303389  , p_source_92            IN DATE
303390 --Currency Conversion Rate
303391  , p_source_93            IN NUMBER
303392 --Currency Conversion Type
303393  , p_source_94            IN VARCHAR2
303394 --Accounted Amount
303395  , p_source_95            IN NUMBER
303396 --Accounting Line Type
303397  , p_source_97            IN NUMBER
303398 )
303399 IS
303400 
303401 l_component_type              VARCHAR2(80);
303402 l_component_code              VARCHAR2(30);
303403 l_component_type_code         VARCHAR2(1);
303404 l_component_appl_id           INTEGER;
303405 l_amb_context_code            VARCHAR2(30);
303406 l_entity_code                 VARCHAR2(30);
303407 l_event_class_code            VARCHAR2(30);
303408 l_ae_header_id                NUMBER;
303409 l_event_type_code             VARCHAR2(30);
303410 l_line_definition_code        VARCHAR2(30);
303411 l_line_definition_owner_code  VARCHAR2(1);
303412 --
303413 -- adr variables
303414 l_segment                     VARCHAR2(30);
303415 l_ccid                        NUMBER;
303416 l_adr_transaction_coa_id      NUMBER;
303417 l_adr_accounting_coa_id       NUMBER;
303418 l_adr_flexfield_segment_code  VARCHAR2(30);
303419 l_adr_flex_value_set_id       NUMBER;
303420 l_adr_value_type_code         VARCHAR2(30);
303421 l_adr_value_combination_id    NUMBER;
303422 l_adr_value_segment_code      VARCHAR2(30);
303423 
303424 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
303425 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
303426 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
303427 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
303428 
303429 -- 4262811 Variables ------------------------------------------------------------------------------------------
303430 l_entered_amt_idx             NUMBER;
303431 l_accted_amt_idx              NUMBER;
303432 l_acc_rev_flag                VARCHAR2(1);
303433 l_accrual_line_num            NUMBER;
303434 l_tmp_amt                     NUMBER;
303435 l_acc_rev_natural_side_code   VARCHAR2(1);
303436 
303437 l_num_entries                 NUMBER;
303438 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
303439 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
303440 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
303441 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
303442 l_recog_line_1                NUMBER;
303443 l_recog_line_2                NUMBER;
303444 
303445 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
303446 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
303447 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
303448 
303449 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
303450 
303451 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
303452 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
303453 
303454 ---------------------------------------------------------------------------------------------------------------
303455 
303456 
303457 --
303458 -- bulk performance
303459 --
303460 l_balance_type_code           VARCHAR2(1);
303461 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
303462 l_log_module                  VARCHAR2(240);
303463 
303464 --
303465 -- Upgrade strategy
303466 --
303467 l_actual_upg_option           VARCHAR2(1);
303468 l_enc_upg_option           VARCHAR2(1);
303469 
303470 --
303471 BEGIN
303472 --
303473 IF g_log_enabled THEN
303474       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_541';
303475 END IF;
303476 --
303477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
303478 
303479       trace
303480          (p_msg      => 'BEGIN of AcctLineType_541'
303481          ,p_level    => C_LEVEL_PROCEDURE
303482          ,p_module   => l_log_module);
303483 
303484 END IF;
303485 --
303486 l_component_type             := 'AMB_JLT';
303487 l_component_code             := 'WIP_VARIANCE';
303488 l_component_type_code        := 'S';
303489 l_component_appl_id          :=  707;
303490 l_amb_context_code           := 'DEFAULT';
303491 l_entity_code                := 'WIP_ACCOUNTING_EVENTS';
303492 l_event_class_code           := 'VARIANCE';
303493 l_event_type_code            := 'VARIANCE_ALL';
303494 l_line_definition_owner_code := 'S';
303495 l_line_definition_code       := 'VARIANCE';
303496 --
303497 l_balance_type_code          := 'A';
303498 l_segment                     := NULL;
303499 l_ccid                        := NULL;
303500 l_adr_transaction_coa_id      := NULL;
303501 l_adr_accounting_coa_id       := NULL;
303502 l_adr_flexfield_segment_code  := NULL;
303503 l_adr_flex_value_set_id       := NULL;
303504 l_adr_value_type_code         := NULL;
303505 l_adr_value_combination_id    := NULL;
303506 l_adr_value_segment_code      := NULL;
303507 
303508 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
303509 l_bflow_class_code           := '';    -- 4219869 Business Flow
303510 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
303511 l_budgetary_control_flag     := 'N';
303512 
303513 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
303514 l_bflow_applied_to_amt       := NULL; -- 5132302
303515 l_entered_amt_idx            := NULL;          -- 4262811
303516 l_accted_amt_idx             := NULL;          -- 4262811
303517 l_acc_rev_flag               := NULL;          -- 4262811
303518 l_accrual_line_num           := NULL;          -- 4262811
303519 l_tmp_amt                    := NULL;          -- 4262811
303520 --
303521  
303522 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
303523     l_balance_type_code <> 'B' THEN
303524 IF NVL(p_source_97,9E125) =  8
303525  THEN 
303526 
303527    --
303528    XLA_AE_LINES_PKG.SetNewLine;
303529 
303530    p_balance_type_code          := l_balance_type_code;
303531    -- set the flag so later we will know whether the gain loss line needs to be created
303532    
303533    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
303534      p_actual_flag :='A';
303535    END IF;
303536 
303537    --
303538    -- bulk performance
303539    --
303540    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
303541                                       p_header_num   => 0); -- 4262811
303542    --
303543    -- set accounting line options
303544    --
303545    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
303546            p_natural_side_code          => 'D'
303547          , p_gain_or_loss_flag          => 'N'
303548          , p_gl_transfer_mode_code      => 'S'
303549          , p_acct_entry_type_code       => 'A'
303550          , p_switch_side_flag           => 'Y'
303551          , p_merge_duplicate_code       => 'N'
303552          );
303553    --
303554    l_acc_rev_natural_side_code := 'C';  -- 4262811
303555    -- 
303556    --
303557    -- set accounting line type info
303558    --
303559    xla_ae_lines_pkg.SetAcctLineType
303560       (p_component_type             => l_component_type
303561       ,p_event_type_code            => l_event_type_code
303562       ,p_line_definition_owner_code => l_line_definition_owner_code
303563       ,p_line_definition_code       => l_line_definition_code
303564       ,p_accounting_line_code       => l_component_code
303565       ,p_accounting_line_type_code  => l_component_type_code
303566       ,p_accounting_line_appl_id    => l_component_appl_id
303567       ,p_amb_context_code           => l_amb_context_code
303568       ,p_entity_code                => l_entity_code
303569       ,p_event_class_code           => l_event_class_code);
303570    --
303571    -- set accounting class
303572    --
303573    xla_ae_lines_pkg.SetAcctClass(
303574            p_accounting_class_code  => 'WIP_VARIANCE'
303575          , p_ae_header_id           => l_ae_header_id
303576          );
303577 
303578    --
303579    -- set rounding class
303580    --
303581    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
303582                       'WIP_VARIANCE';
303583 
303584    --
303585    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
303586    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
303587    --
303588    -- bulk performance
303589    --
303590    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
303591 
303592    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
303593       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
303594 
303595    -- 4955764
303596    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
303597       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
303598 
303599    -- 4458381 Public Sector Enh
303600    
303601    --
303602    -- set accounting attributes for the line type
303603    --
303604    l_entered_amt_idx := 3;
303605    l_accted_amt_idx  := 8;
303606    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
303607    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
303608    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_84);
303609    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
303610    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
303611    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
303612    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
303613    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
303614    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
303615    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
303616    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
303617    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
303618    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
303619    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
303620    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
303621    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
303622    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
303623 
303624    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
303625    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
303626 
303627    ---------------------------------------------------------------------------------------------------------------
303628    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
303629    ---------------------------------------------------------------------------------------------------------------
303630    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
303631 
303632    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
303633    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
303634 
303635    IF xla_accounting_cache_pkg.GetValueChar
303636          (p_source_code         => 'LEDGER_CATEGORY_CODE'
303637          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
303638    AND l_bflow_method_code = 'PRIOR_ENTRY'
303639 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
303640    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
303641          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
303642        )
303643    THEN
303644          xla_ae_lines_pkg.BflowUpgEntry
303645            (p_business_method_code    => l_bflow_method_code
303646            ,p_business_class_code     => l_bflow_class_code
303647            ,p_balance_type            => l_balance_type_code);
303648    ELSE
303649       NULL;
303650 -- No business flow processing for business flow method of NONE.
303651    END IF;
303652 
303653    --
303654    -- call analytical criteria
303655    --
303656    
303657    --
303658    -- call description
303659    --
303660    -- No description or it is inherited.
303661    --
303662    -- call ADRs
303663    -- Bug 4922099
303664    --
303665    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
303666         (NVL(l_actual_upg_option, 'N') = 'O') OR
303667         (NVL(l_enc_upg_option, 'N') = 'O')
303668       )
303669    THEN
303670    NULL;
303671    --
303672    --
303673    
303674   l_ccid := AcctDerRule_6(
303675            p_application_id           => p_application_id
303676          , p_ae_header_id             => l_ae_header_id 
303677 , p_source_11 => p_source_11
303678          , x_transaction_coa_id       => l_adr_transaction_coa_id
303679          , x_accounting_coa_id        => l_adr_accounting_coa_id
303680          , x_value_type_code          => l_adr_value_type_code
303681          , p_side                     => 'NA'
303682    );
303683 
303684    xla_ae_lines_pkg.set_ccid(
303685     p_code_combination_id          => l_ccid
303686   , p_value_type_code              => l_adr_value_type_code
303687   , p_transaction_coa_id           => l_adr_transaction_coa_id
303688   , p_accounting_coa_id            => l_adr_accounting_coa_id
303689   , p_adr_code                     => 'CST_DEFAULT'
303690   , p_adr_type_code                => 'S'
303691   , p_component_type               => l_component_type
303692   , p_component_code               => l_component_code
303693   , p_component_type_code          => l_component_type_code
303694   , p_component_appl_id            => l_component_appl_id
303695   , p_amb_context_code             => l_amb_context_code
303696   , p_side                         => 'NA'
303697   );
303698 
303699 
303700    --
303701    --
303702    END IF;
303703    --
303704    -- Bug 4922099
303705    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
303706           (NVL(l_enc_upg_option, 'N') = 'O')
303707         ) AND
303708         (l_bflow_method_code = 'PRIOR_ENTRY')
303709       )
303710    THEN
303711       IF
303712       --
303713       1 = 2
303714       --
303715       THEN
303716       xla_accounting_err_pkg.build_message
303717                                     (p_appli_s_name            => 'XLA'
303718                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
303719                                     ,p_token_1                 => 'LINE_NUMBER'
303720                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
303721                                     ,p_token_2                 => 'LINE_TYPE_NAME'
303722                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
303723                                                                              l_component_type
303724                                                                             ,l_component_code
303725                                                                             ,l_component_type_code
303726                                                                             ,l_component_appl_id
303727                                                                             ,l_amb_context_code
303728                                                                             ,l_entity_code
303729                                                                             ,l_event_class_code
303730                                                                            )
303731                                     ,p_token_3                 => 'OWNER'
303732                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
303733                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
303734                                                                           ,p_lookup_code    => l_component_type_code
303735                                                                          )
303736                                     ,p_token_4                 => 'PRODUCT_NAME'
303737                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
303738                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
303739                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
303740                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
303741                                     ,p_ae_header_id            =>  NULL
303742                                        );
303743 
303744         IF (C_LEVEL_ERROR>= g_log_level) THEN
303745                  trace
303746                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
303747                       ,p_level    => C_LEVEL_ERROR
303748                       ,p_module   => l_log_module);
303749         END IF;
303750       END IF;
303751    END IF;
303752    --
303753    --
303754    ------------------------------------------------------------------------------------------------
303755    -- 4219869 Business Flow
303756    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
303757    -- Prior Entry.  Currently, the following code is always generated.
303758    ------------------------------------------------------------------------------------------------
303759    XLA_AE_LINES_PKG.ValidateCurrentLine;
303760 
303761    ------------------------------------------------------------------------------------
303762    -- 4219869 Business Flow
303763    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
303764    ------------------------------------------------------------------------------------
303765    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
303766 
303767    ----------------------------------------------------------------------------------
303768    -- 4219869 Business Flow
303769    -- Update journal entry status -- Need to generate this within IF <condition>
303770    ----------------------------------------------------------------------------------
303771    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
303772          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
303773          ,p_balance_type_code => l_balance_type_code
303774          );
303775 
303776    -------------------------------------------------------------------------------------------
303777    -- 4262811 - Generate the Accrual Reversal lines
303778    -------------------------------------------------------------------------------------------
303779    BEGIN
303780       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
303781                               (g_array_event(p_event_id).array_value_num('header_index'));
303782       IF l_acc_rev_flag IS NULL THEN
303783          l_acc_rev_flag := 'N';
303784       END IF;
303785    EXCEPTION
303786       WHEN OTHERS THEN
303787          l_acc_rev_flag := 'N';
303788    END;
303789    --
303790    IF (l_acc_rev_flag = 'Y') THEN
303791 
303792        -- 4645092  ------------------------------------------------------------------------------
303793        -- To allow MPA report to determine if it should generate report process
303794        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
303795        ------------------------------------------------------------------------------------------
303796 
303797        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
303798        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
303799    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
303800    -- call ADRs
303801    -- Bug 4922099
303802    --
303803    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
303804         (NVL(l_actual_upg_option, 'N') = 'O') OR
303805         (NVL(l_enc_upg_option, 'N') = 'O')
303806       )
303807    THEN
303808    NULL;
303809    --
303810    --
303811    
303812   l_ccid := AcctDerRule_6(
303813            p_application_id           => p_application_id
303814          , p_ae_header_id             => l_ae_header_id 
303815 , p_source_11 => p_source_11
303816          , x_transaction_coa_id       => l_adr_transaction_coa_id
303817          , x_accounting_coa_id        => l_adr_accounting_coa_id
303818          , x_value_type_code          => l_adr_value_type_code
303819          , p_side                     => 'NA'
303820    );
303821 
303822    xla_ae_lines_pkg.set_ccid(
303823     p_code_combination_id          => l_ccid
303824   , p_value_type_code              => l_adr_value_type_code
303825   , p_transaction_coa_id           => l_adr_transaction_coa_id
303826   , p_accounting_coa_id            => l_adr_accounting_coa_id
303827   , p_adr_code                     => 'CST_DEFAULT'
303828   , p_adr_type_code                => 'S'
303829   , p_component_type               => l_component_type
303830   , p_component_code               => l_component_code
303831   , p_component_type_code          => l_component_type_code
303832   , p_component_appl_id            => l_component_appl_id
303833   , p_amb_context_code             => l_amb_context_code
303834   , p_side                         => 'NA'
303835   );
303836 
303837 
303838    --
303839    --
303840    END IF;
303841 
303842        --
303843        -- Update the line information that should be overwritten
303844        --
303845        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
303846                                          p_header_num   => 1);
303847        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
303848 
303849        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
303850 
303851        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
303852           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
303853        END IF;
303854 
303855       --
303856       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
303857       --
303858       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
303859           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
303860       ELSE
303861           ---------------------------------------------------------------------------------------------------
303862           -- 4262811a Switch Sign
303863           ---------------------------------------------------------------------------------------------------
303864           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
303865           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
303866                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
303867           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
303868                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
303869           -- 5132302
303870           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
303871                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
303872 
303873       END IF;
303874 
303875       -- 4955764
303876       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
303877       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
303878 
303879 
303880       XLA_AE_LINES_PKG.ValidateCurrentLine;
303881       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
303882 
303883       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
303884                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
303885                ,p_balance_type_code => l_balance_type_code);
303886 
303887    END IF;
303888 
303889    -----------------------------------------------------------------------------------------
303890    -- 4262811 Multiperiod Accounting
303891    -----------------------------------------------------------------------------------------
303892      -- No MPA option is assigned.
303893 
303894 
303895 END IF;
303896 END IF;
303897 --
303898 
303899 --
303900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
303901    trace
303902       (p_msg      => 'END of AcctLineType_541'
303903       ,p_level    => C_LEVEL_PROCEDURE
303904       ,p_module   => l_log_module);
303905 END IF;
303906 --
303907 EXCEPTION
303908   WHEN xla_exceptions_pkg.application_exception THEN
303909       RAISE;
303910   WHEN OTHERS THEN
303911        xla_exceptions_pkg.raise_message
303912            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_541');
303913 END AcctLineType_541;
303914 --
303915 
303916 ---------------------------------------
303917 --
303918 -- PRIVATE FUNCTION
303919 --         AcctLineType_542
303920 --
303921 ---------------------------------------
303922 PROCEDURE AcctLineType_542 (
303923   p_application_id        IN NUMBER
303924  ,p_event_id              IN NUMBER
303925  ,p_calculate_acctd_flag  IN VARCHAR2
303926  ,p_calculate_g_l_flag    IN VARCHAR2
303927  ,p_actual_flag           IN OUT VARCHAR2
303928  ,p_balance_type_code     OUT VARCHAR2
303929  ,p_gain_or_loss_ref      OUT VARCHAR2
303930  
303931 --Write-Off Variance Account
303932  , p_source_9            IN NUMBER
303933 --Distribution Type
303934  , p_source_85            IN VARCHAR2
303935  , p_source_85_meaning    IN VARCHAR2
303936 --Entered Currency Code
303937  , p_source_88            IN VARCHAR2
303938 --Entered Amount
303939  , p_source_91            IN NUMBER
303940 --Currency Conversion Date
303941  , p_source_92            IN DATE
303942 --Currency Conversion Rate
303943  , p_source_93            IN NUMBER
303944 --Currency Conversion Type
303945  , p_source_94            IN VARCHAR2
303946 --Accounted Amount
303947  , p_source_95            IN NUMBER
303948 --Line Number
303949  , p_source_98            IN NUMBER
303950 --WRITE_OFF_ID
303951  , p_source_99            IN NUMBER
303952 )
303953 IS
303954 
303955 l_component_type              VARCHAR2(80);
303956 l_component_code              VARCHAR2(30);
303957 l_component_type_code         VARCHAR2(1);
303958 l_component_appl_id           INTEGER;
303959 l_amb_context_code            VARCHAR2(30);
303960 l_entity_code                 VARCHAR2(30);
303961 l_event_class_code            VARCHAR2(30);
303962 l_ae_header_id                NUMBER;
303963 l_event_type_code             VARCHAR2(30);
303964 l_line_definition_code        VARCHAR2(30);
303965 l_line_definition_owner_code  VARCHAR2(1);
303966 --
303967 -- adr variables
303968 l_segment                     VARCHAR2(30);
303969 l_ccid                        NUMBER;
303970 l_adr_transaction_coa_id      NUMBER;
303971 l_adr_accounting_coa_id       NUMBER;
303972 l_adr_flexfield_segment_code  VARCHAR2(30);
303973 l_adr_flex_value_set_id       NUMBER;
303974 l_adr_value_type_code         VARCHAR2(30);
303975 l_adr_value_combination_id    NUMBER;
303976 l_adr_value_segment_code      VARCHAR2(30);
303977 
303978 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
303979 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
303980 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
303981 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
303982 
303983 -- 4262811 Variables ------------------------------------------------------------------------------------------
303984 l_entered_amt_idx             NUMBER;
303985 l_accted_amt_idx              NUMBER;
303986 l_acc_rev_flag                VARCHAR2(1);
303987 l_accrual_line_num            NUMBER;
303988 l_tmp_amt                     NUMBER;
303989 l_acc_rev_natural_side_code   VARCHAR2(1);
303990 
303991 l_num_entries                 NUMBER;
303992 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
303993 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
303994 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
303995 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
303996 l_recog_line_1                NUMBER;
303997 l_recog_line_2                NUMBER;
303998 
303999 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
304000 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
304001 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
304002 
304003 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
304004 
304005 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
304006 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
304007 
304008 ---------------------------------------------------------------------------------------------------------------
304009 
304010 
304011 --
304012 -- bulk performance
304013 --
304014 l_balance_type_code           VARCHAR2(1);
304015 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
304016 l_log_module                  VARCHAR2(240);
304017 
304018 --
304019 -- Upgrade strategy
304020 --
304021 l_actual_upg_option           VARCHAR2(1);
304022 l_enc_upg_option           VARCHAR2(1);
304023 
304024 --
304025 BEGIN
304026 --
304027 IF g_log_enabled THEN
304028       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_542';
304029 END IF;
304030 --
304031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
304032 
304033       trace
304034          (p_msg      => 'BEGIN of AcctLineType_542'
304035          ,p_level    => C_LEVEL_PROCEDURE
304036          ,p_module   => l_log_module);
304037 
304038 END IF;
304039 --
304040 l_component_type             := 'AMB_JLT';
304041 l_component_code             := 'WO_VARIANCE';
304042 l_component_type_code        := 'S';
304043 l_component_appl_id          :=  707;
304044 l_amb_context_code           := 'DEFAULT';
304045 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
304046 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
304047 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
304048 l_line_definition_owner_code := 'S';
304049 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
304050 --
304051 l_balance_type_code          := 'A';
304052 l_segment                     := NULL;
304053 l_ccid                        := NULL;
304054 l_adr_transaction_coa_id      := NULL;
304055 l_adr_accounting_coa_id       := NULL;
304056 l_adr_flexfield_segment_code  := NULL;
304057 l_adr_flex_value_set_id       := NULL;
304058 l_adr_value_type_code         := NULL;
304059 l_adr_value_combination_id    := NULL;
304060 l_adr_value_segment_code      := NULL;
304061 
304062 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
304063 l_bflow_class_code           := '';    -- 4219869 Business Flow
304064 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
304065 l_budgetary_control_flag     := 'N';
304066 
304067 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
304068 l_bflow_applied_to_amt       := NULL; -- 5132302
304069 l_entered_amt_idx            := NULL;          -- 4262811
304070 l_accted_amt_idx             := NULL;          -- 4262811
304071 l_acc_rev_flag               := NULL;          -- 4262811
304072 l_accrual_line_num           := NULL;          -- 4262811
304073 l_tmp_amt                    := NULL;          -- 4262811
304074 --
304075  
304076 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
304077     l_balance_type_code <> 'B' THEN
304078 IF NVL(p_source_98,9E125) =  2
304079  THEN 
304080 
304081    --
304082    XLA_AE_LINES_PKG.SetNewLine;
304083 
304084    p_balance_type_code          := l_balance_type_code;
304085    -- set the flag so later we will know whether the gain loss line needs to be created
304086    
304087    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
304088      p_actual_flag :='A';
304089    END IF;
304090 
304091    --
304092    -- bulk performance
304093    --
304094    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
304095                                       p_header_num   => 0); -- 4262811
304096    --
304097    -- set accounting line options
304098    --
304099    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
304100            p_natural_side_code          => 'D'
304101          , p_gain_or_loss_flag          => 'N'
304102          , p_gl_transfer_mode_code      => 'S'
304103          , p_acct_entry_type_code       => 'A'
304104          , p_switch_side_flag           => 'Y'
304105          , p_merge_duplicate_code       => 'N'
304106          );
304107    --
304108    l_acc_rev_natural_side_code := 'C';  -- 4262811
304109    -- 
304110    --
304111    -- set accounting line type info
304112    --
304113    xla_ae_lines_pkg.SetAcctLineType
304114       (p_component_type             => l_component_type
304115       ,p_event_type_code            => l_event_type_code
304116       ,p_line_definition_owner_code => l_line_definition_owner_code
304117       ,p_line_definition_code       => l_line_definition_code
304118       ,p_accounting_line_code       => l_component_code
304119       ,p_accounting_line_type_code  => l_component_type_code
304120       ,p_accounting_line_appl_id    => l_component_appl_id
304121       ,p_amb_context_code           => l_amb_context_code
304122       ,p_entity_code                => l_entity_code
304123       ,p_event_class_code           => l_event_class_code);
304124    --
304125    -- set accounting class
304126    --
304127    xla_ae_lines_pkg.SetAcctClass(
304128            p_accounting_class_code  => 'WRITE_OFF_VARIANCE'
304129          , p_ae_header_id           => l_ae_header_id
304130          );
304131 
304132    --
304133    -- set rounding class
304134    --
304135    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
304136                       'WRITE_OFF_VARIANCE';
304137 
304138    --
304139    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
304140    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
304141    --
304142    -- bulk performance
304143    --
304144    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
304145 
304146    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
304147       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
304148 
304149    -- 4955764
304150    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
304151       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
304152 
304153    -- 4458381 Public Sector Enh
304154    
304155    --
304156    -- set accounting attributes for the line type
304157    --
304158    l_entered_amt_idx := 3;
304159    l_accted_amt_idx  := 8;
304160    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
304161    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
304162    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_99);
304163    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
304164    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
304165    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
304166    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
304167    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
304168    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
304169    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
304170    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
304171    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
304172    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
304173    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
304174    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
304175    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
304176    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
304177 
304178    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
304179    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
304180 
304181    ---------------------------------------------------------------------------------------------------------------
304182    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
304183    ---------------------------------------------------------------------------------------------------------------
304184    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
304185 
304186    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
304187    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
304188 
304189    IF xla_accounting_cache_pkg.GetValueChar
304190          (p_source_code         => 'LEDGER_CATEGORY_CODE'
304191          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
304192    AND l_bflow_method_code = 'PRIOR_ENTRY'
304193 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
304194    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
304195          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
304196        )
304197    THEN
304198          xla_ae_lines_pkg.BflowUpgEntry
304199            (p_business_method_code    => l_bflow_method_code
304200            ,p_business_class_code     => l_bflow_class_code
304201            ,p_balance_type            => l_balance_type_code);
304202    ELSE
304203       NULL;
304204 -- No business flow processing for business flow method of NONE.
304205    END IF;
304206 
304207    --
304208    -- call analytical criteria
304209    --
304210    
304211    --
304212    -- call description
304213    --
304214    -- No description or it is inherited.
304215    --
304216    -- call ADRs
304217    -- Bug 4922099
304218    --
304219    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
304220         (NVL(l_actual_upg_option, 'N') = 'O') OR
304221         (NVL(l_enc_upg_option, 'N') = 'O')
304222       )
304223    THEN
304224    NULL;
304225    --
304226    --
304227    
304228   l_ccid := AcctDerRule_4(
304229            p_application_id           => p_application_id
304230          , p_ae_header_id             => l_ae_header_id 
304231 , p_source_9 => p_source_9
304232          , x_transaction_coa_id       => l_adr_transaction_coa_id
304233          , x_accounting_coa_id        => l_adr_accounting_coa_id
304234          , x_value_type_code          => l_adr_value_type_code
304235          , p_side                     => 'NA'
304236    );
304237 
304238    xla_ae_lines_pkg.set_ccid(
304239     p_code_combination_id          => l_ccid
304240   , p_value_type_code              => l_adr_value_type_code
304241   , p_transaction_coa_id           => l_adr_transaction_coa_id
304242   , p_accounting_coa_id            => l_adr_accounting_coa_id
304243   , p_adr_code                     => 'CST_AWO_ERV'
304244   , p_adr_type_code                => 'S'
304245   , p_component_type               => l_component_type
304246   , p_component_code               => l_component_code
304247   , p_component_type_code          => l_component_type_code
304248   , p_component_appl_id            => l_component_appl_id
304249   , p_amb_context_code             => l_amb_context_code
304250   , p_side                         => 'NA'
304251   );
304252 
304253 
304254    --
304255    --
304256    END IF;
304257    --
304258    -- Bug 4922099
304259    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
304260           (NVL(l_enc_upg_option, 'N') = 'O')
304261         ) AND
304262         (l_bflow_method_code = 'PRIOR_ENTRY')
304263       )
304264    THEN
304265       IF
304266       --
304267       1 = 2
304268       --
304269       THEN
304270       xla_accounting_err_pkg.build_message
304271                                     (p_appli_s_name            => 'XLA'
304272                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
304273                                     ,p_token_1                 => 'LINE_NUMBER'
304274                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
304275                                     ,p_token_2                 => 'LINE_TYPE_NAME'
304276                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
304277                                                                              l_component_type
304278                                                                             ,l_component_code
304279                                                                             ,l_component_type_code
304280                                                                             ,l_component_appl_id
304281                                                                             ,l_amb_context_code
304282                                                                             ,l_entity_code
304283                                                                             ,l_event_class_code
304284                                                                            )
304285                                     ,p_token_3                 => 'OWNER'
304286                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
304287                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
304288                                                                           ,p_lookup_code    => l_component_type_code
304289                                                                          )
304290                                     ,p_token_4                 => 'PRODUCT_NAME'
304291                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
304292                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
304293                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
304294                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
304295                                     ,p_ae_header_id            =>  NULL
304296                                        );
304297 
304298         IF (C_LEVEL_ERROR>= g_log_level) THEN
304299                  trace
304300                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
304301                       ,p_level    => C_LEVEL_ERROR
304302                       ,p_module   => l_log_module);
304303         END IF;
304304       END IF;
304305    END IF;
304306    --
304307    --
304308    ------------------------------------------------------------------------------------------------
304309    -- 4219869 Business Flow
304310    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
304311    -- Prior Entry.  Currently, the following code is always generated.
304312    ------------------------------------------------------------------------------------------------
304313    XLA_AE_LINES_PKG.ValidateCurrentLine;
304314 
304315    ------------------------------------------------------------------------------------
304316    -- 4219869 Business Flow
304317    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
304318    ------------------------------------------------------------------------------------
304319    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
304320 
304321    ----------------------------------------------------------------------------------
304322    -- 4219869 Business Flow
304323    -- Update journal entry status -- Need to generate this within IF <condition>
304324    ----------------------------------------------------------------------------------
304325    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
304326          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
304327          ,p_balance_type_code => l_balance_type_code
304328          );
304329 
304330    -------------------------------------------------------------------------------------------
304331    -- 4262811 - Generate the Accrual Reversal lines
304332    -------------------------------------------------------------------------------------------
304333    BEGIN
304334       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
304335                               (g_array_event(p_event_id).array_value_num('header_index'));
304336       IF l_acc_rev_flag IS NULL THEN
304337          l_acc_rev_flag := 'N';
304338       END IF;
304339    EXCEPTION
304340       WHEN OTHERS THEN
304341          l_acc_rev_flag := 'N';
304342    END;
304343    --
304344    IF (l_acc_rev_flag = 'Y') THEN
304345 
304346        -- 4645092  ------------------------------------------------------------------------------
304347        -- To allow MPA report to determine if it should generate report process
304348        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
304349        ------------------------------------------------------------------------------------------
304350 
304351        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
304352        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
304353    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
304354    -- call ADRs
304355    -- Bug 4922099
304356    --
304357    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
304358         (NVL(l_actual_upg_option, 'N') = 'O') OR
304359         (NVL(l_enc_upg_option, 'N') = 'O')
304360       )
304361    THEN
304362    NULL;
304363    --
304364    --
304365    
304366   l_ccid := AcctDerRule_4(
304367            p_application_id           => p_application_id
304368          , p_ae_header_id             => l_ae_header_id 
304369 , p_source_9 => p_source_9
304370          , x_transaction_coa_id       => l_adr_transaction_coa_id
304371          , x_accounting_coa_id        => l_adr_accounting_coa_id
304372          , x_value_type_code          => l_adr_value_type_code
304373          , p_side                     => 'NA'
304374    );
304375 
304376    xla_ae_lines_pkg.set_ccid(
304377     p_code_combination_id          => l_ccid
304378   , p_value_type_code              => l_adr_value_type_code
304379   , p_transaction_coa_id           => l_adr_transaction_coa_id
304380   , p_accounting_coa_id            => l_adr_accounting_coa_id
304381   , p_adr_code                     => 'CST_AWO_ERV'
304382   , p_adr_type_code                => 'S'
304383   , p_component_type               => l_component_type
304384   , p_component_code               => l_component_code
304385   , p_component_type_code          => l_component_type_code
304386   , p_component_appl_id            => l_component_appl_id
304387   , p_amb_context_code             => l_amb_context_code
304388   , p_side                         => 'NA'
304389   );
304390 
304391 
304392    --
304393    --
304394    END IF;
304395 
304396        --
304397        -- Update the line information that should be overwritten
304398        --
304399        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
304400                                          p_header_num   => 1);
304401        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
304402 
304403        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
304404 
304405        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
304406           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
304407        END IF;
304408 
304409       --
304410       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
304411       --
304412       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
304413           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
304414       ELSE
304415           ---------------------------------------------------------------------------------------------------
304416           -- 4262811a Switch Sign
304417           ---------------------------------------------------------------------------------------------------
304418           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
304419           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
304420                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
304421           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
304422                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
304423           -- 5132302
304424           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
304425                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
304426 
304427       END IF;
304428 
304429       -- 4955764
304430       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
304431       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
304432 
304433 
304434       XLA_AE_LINES_PKG.ValidateCurrentLine;
304435       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
304436 
304437       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
304438                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
304439                ,p_balance_type_code => l_balance_type_code);
304440 
304441    END IF;
304442 
304443    -----------------------------------------------------------------------------------------
304444    -- 4262811 Multiperiod Accounting
304445    -----------------------------------------------------------------------------------------
304446      -- No MPA option is assigned.
304447 
304448 
304449 END IF;
304450 END IF;
304451 --
304452 
304453 --
304454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
304455    trace
304456       (p_msg      => 'END of AcctLineType_542'
304457       ,p_level    => C_LEVEL_PROCEDURE
304458       ,p_module   => l_log_module);
304459 END IF;
304460 --
304461 EXCEPTION
304462   WHEN xla_exceptions_pkg.application_exception THEN
304463       RAISE;
304464   WHEN OTHERS THEN
304465        xla_exceptions_pkg.raise_message
304466            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_542');
304467 END AcctLineType_542;
304468 --
304469 
304470 ---------------------------------------
304471 --
304472 -- PRIVATE FUNCTION
304473 --         AcctLineType_543
304474 --
304475 ---------------------------------------
304476 PROCEDURE AcctLineType_543 (
304477   p_application_id        IN NUMBER
304478  ,p_event_id              IN NUMBER
304479  ,p_calculate_acctd_flag  IN VARCHAR2
304480  ,p_calculate_g_l_flag    IN VARCHAR2
304481  ,p_actual_flag           IN OUT VARCHAR2
304482  ,p_balance_type_code     OUT VARCHAR2
304483  ,p_gain_or_loss_ref      OUT VARCHAR2
304484  
304485 --Accrual Account for the Write Off
304486  , p_source_8            IN NUMBER
304487 --Distribution Type
304488  , p_source_85            IN VARCHAR2
304489  , p_source_85_meaning    IN VARCHAR2
304490 --Entered Currency Code
304491  , p_source_88            IN VARCHAR2
304492 --Entered Amount
304493  , p_source_91            IN NUMBER
304494 --Currency Conversion Date
304495  , p_source_92            IN DATE
304496 --Currency Conversion Rate
304497  , p_source_93            IN NUMBER
304498 --Currency Conversion Type
304499  , p_source_94            IN VARCHAR2
304500 --Accounted Amount
304501  , p_source_95            IN NUMBER
304502 --Line Number
304503  , p_source_98            IN NUMBER
304504 --WRITE_OFF_ID
304505  , p_source_99            IN NUMBER
304506 )
304507 IS
304508 
304509 l_component_type              VARCHAR2(80);
304510 l_component_code              VARCHAR2(30);
304511 l_component_type_code         VARCHAR2(1);
304512 l_component_appl_id           INTEGER;
304513 l_amb_context_code            VARCHAR2(30);
304514 l_entity_code                 VARCHAR2(30);
304515 l_event_class_code            VARCHAR2(30);
304516 l_ae_header_id                NUMBER;
304517 l_event_type_code             VARCHAR2(30);
304518 l_line_definition_code        VARCHAR2(30);
304519 l_line_definition_owner_code  VARCHAR2(1);
304520 --
304521 -- adr variables
304522 l_segment                     VARCHAR2(30);
304523 l_ccid                        NUMBER;
304524 l_adr_transaction_coa_id      NUMBER;
304525 l_adr_accounting_coa_id       NUMBER;
304526 l_adr_flexfield_segment_code  VARCHAR2(30);
304527 l_adr_flex_value_set_id       NUMBER;
304528 l_adr_value_type_code         VARCHAR2(30);
304529 l_adr_value_combination_id    NUMBER;
304530 l_adr_value_segment_code      VARCHAR2(30);
304531 
304532 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
304533 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
304534 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
304535 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
304536 
304537 -- 4262811 Variables ------------------------------------------------------------------------------------------
304538 l_entered_amt_idx             NUMBER;
304539 l_accted_amt_idx              NUMBER;
304540 l_acc_rev_flag                VARCHAR2(1);
304541 l_accrual_line_num            NUMBER;
304542 l_tmp_amt                     NUMBER;
304543 l_acc_rev_natural_side_code   VARCHAR2(1);
304544 
304545 l_num_entries                 NUMBER;
304546 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
304547 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
304548 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
304549 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
304550 l_recog_line_1                NUMBER;
304551 l_recog_line_2                NUMBER;
304552 
304553 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
304554 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
304555 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
304556 
304557 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
304558 
304559 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
304560 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
304561 
304562 ---------------------------------------------------------------------------------------------------------------
304563 
304564 
304565 --
304566 -- bulk performance
304567 --
304568 l_balance_type_code           VARCHAR2(1);
304569 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
304570 l_log_module                  VARCHAR2(240);
304571 
304572 --
304573 -- Upgrade strategy
304574 --
304575 l_actual_upg_option           VARCHAR2(1);
304576 l_enc_upg_option           VARCHAR2(1);
304577 
304578 --
304579 BEGIN
304580 --
304581 IF g_log_enabled THEN
304582       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_543';
304583 END IF;
304584 --
304585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
304586 
304587       trace
304588          (p_msg      => 'BEGIN of AcctLineType_543'
304589          ,p_level    => C_LEVEL_PROCEDURE
304590          ,p_module   => l_log_module);
304591 
304592 END IF;
304593 --
304594 l_component_type             := 'AMB_JLT';
304595 l_component_code             := 'WO_VAR_OFFSET_ACCRUAL';
304596 l_component_type_code        := 'S';
304597 l_component_appl_id          :=  707;
304598 l_amb_context_code           := 'DEFAULT';
304599 l_entity_code                := 'WO_ACCOUNTING_EVENTS';
304600 l_event_class_code           := 'ACCRUAL_WRITE_OFF';
304601 l_event_type_code            := 'ACCRUAL_WRITE_OFF_ALL';
304602 l_line_definition_owner_code := 'S';
304603 l_line_definition_code       := 'ACCRUAL_WRITE_OFF';
304604 --
304605 l_balance_type_code          := 'A';
304606 l_segment                     := NULL;
304607 l_ccid                        := NULL;
304608 l_adr_transaction_coa_id      := NULL;
304609 l_adr_accounting_coa_id       := NULL;
304610 l_adr_flexfield_segment_code  := NULL;
304611 l_adr_flex_value_set_id       := NULL;
304612 l_adr_value_type_code         := NULL;
304613 l_adr_value_combination_id    := NULL;
304614 l_adr_value_segment_code      := NULL;
304615 
304616 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
304617 l_bflow_class_code           := '';    -- 4219869 Business Flow
304618 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
304619 l_budgetary_control_flag     := 'N';
304620 
304621 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
304622 l_bflow_applied_to_amt       := NULL; -- 5132302
304623 l_entered_amt_idx            := NULL;          -- 4262811
304624 l_accted_amt_idx             := NULL;          -- 4262811
304625 l_acc_rev_flag               := NULL;          -- 4262811
304626 l_accrual_line_num           := NULL;          -- 4262811
304627 l_tmp_amt                    := NULL;          -- 4262811
304628 --
304629  
304630 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
304631     l_balance_type_code <> 'B' THEN
304632 IF NVL(p_source_98,9E125) =  2
304633  THEN 
304634 
304635    --
304636    XLA_AE_LINES_PKG.SetNewLine;
304637 
304638    p_balance_type_code          := l_balance_type_code;
304639    -- set the flag so later we will know whether the gain loss line needs to be created
304640    
304641    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
304642      p_actual_flag :='A';
304643    END IF;
304644 
304645    --
304646    -- bulk performance
304647    --
304648    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
304649                                       p_header_num   => 0); -- 4262811
304650    --
304651    -- set accounting line options
304652    --
304653    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
304654            p_natural_side_code          => 'C'
304655          , p_gain_or_loss_flag          => 'N'
304656          , p_gl_transfer_mode_code      => 'S'
304657          , p_acct_entry_type_code       => 'A'
304658          , p_switch_side_flag           => 'Y'
304659          , p_merge_duplicate_code       => 'N'
304660          );
304661    --
304662    l_acc_rev_natural_side_code := 'D';  -- 4262811
304663    -- 
304664    --
304665    -- set accounting line type info
304666    --
304667    xla_ae_lines_pkg.SetAcctLineType
304668       (p_component_type             => l_component_type
304669       ,p_event_type_code            => l_event_type_code
304670       ,p_line_definition_owner_code => l_line_definition_owner_code
304671       ,p_line_definition_code       => l_line_definition_code
304672       ,p_accounting_line_code       => l_component_code
304673       ,p_accounting_line_type_code  => l_component_type_code
304674       ,p_accounting_line_appl_id    => l_component_appl_id
304675       ,p_amb_context_code           => l_amb_context_code
304676       ,p_entity_code                => l_entity_code
304677       ,p_event_class_code           => l_event_class_code);
304678    --
304679    -- set accounting class
304680    --
304681    xla_ae_lines_pkg.SetAcctClass(
304682            p_accounting_class_code  => 'ACCRUAL'
304683          , p_ae_header_id           => l_ae_header_id
304684          );
304685 
304686    --
304687    -- set rounding class
304688    --
304689    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
304690                       'ACCRUAL';
304691 
304692    --
304693    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
304694    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
304695    --
304696    -- bulk performance
304697    --
304698    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
304699 
304700    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
304701       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
304702 
304703    -- 4955764
304704    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
304705       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
304706 
304707    -- 4458381 Public Sector Enh
304708    
304709    --
304710    -- set accounting attributes for the line type
304711    --
304712    l_entered_amt_idx := 3;
304713    l_accted_amt_idx  := 8;
304714    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
304715    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
304716    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_99);
304717    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
304718    l_rec_acct_attrs.array_char_value(2)  := p_source_85;
304719    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
304720    l_rec_acct_attrs.array_num_value(3)  := p_source_91;
304721    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
304722    l_rec_acct_attrs.array_char_value(4)  := p_source_88;
304723    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
304724    l_rec_acct_attrs.array_date_value(5)  := p_source_92;
304725    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
304726    l_rec_acct_attrs.array_num_value(6)  := p_source_93;
304727    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
304728    l_rec_acct_attrs.array_char_value(7)  := p_source_94;
304729    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
304730    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
304731 
304732    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
304733    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
304734 
304735    ---------------------------------------------------------------------------------------------------------------
304736    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
304737    ---------------------------------------------------------------------------------------------------------------
304738    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
304739 
304740    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
304741    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
304742 
304743    IF xla_accounting_cache_pkg.GetValueChar
304744          (p_source_code         => 'LEDGER_CATEGORY_CODE'
304745          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
304746    AND l_bflow_method_code = 'PRIOR_ENTRY'
304747 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
304748    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
304749          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
304750        )
304751    THEN
304752          xla_ae_lines_pkg.BflowUpgEntry
304753            (p_business_method_code    => l_bflow_method_code
304754            ,p_business_class_code     => l_bflow_class_code
304755            ,p_balance_type            => l_balance_type_code);
304756    ELSE
304757       NULL;
304758 -- No business flow processing for business flow method of NONE.
304759    END IF;
304760 
304761    --
304762    -- call analytical criteria
304763    --
304764    
304765    --
304766    -- call description
304767    --
304768    -- No description or it is inherited.
304769    --
304770    -- call ADRs
304771    -- Bug 4922099
304772    --
304773    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
304774         (NVL(l_actual_upg_option, 'N') = 'O') OR
304775         (NVL(l_enc_upg_option, 'N') = 'O')
304776       )
304777    THEN
304778    NULL;
304779    --
304780    --
304781    
304782   l_ccid := AcctDerRule_3(
304783            p_application_id           => p_application_id
304784          , p_ae_header_id             => l_ae_header_id 
304785 , p_source_8 => p_source_8
304786          , x_transaction_coa_id       => l_adr_transaction_coa_id
304787          , x_accounting_coa_id        => l_adr_accounting_coa_id
304788          , x_value_type_code          => l_adr_value_type_code
304789          , p_side                     => 'NA'
304790    );
304791 
304792    xla_ae_lines_pkg.set_ccid(
304793     p_code_combination_id          => l_ccid
304794   , p_value_type_code              => l_adr_value_type_code
304795   , p_transaction_coa_id           => l_adr_transaction_coa_id
304796   , p_accounting_coa_id            => l_adr_accounting_coa_id
304797   , p_adr_code                     => 'CST_AWO_ACCRUAL'
304798   , p_adr_type_code                => 'S'
304799   , p_component_type               => l_component_type
304800   , p_component_code               => l_component_code
304801   , p_component_type_code          => l_component_type_code
304802   , p_component_appl_id            => l_component_appl_id
304803   , p_amb_context_code             => l_amb_context_code
304804   , p_side                         => 'NA'
304805   );
304806 
304807 
304808    --
304809    --
304810    END IF;
304811    --
304812    -- Bug 4922099
304813    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
304814           (NVL(l_enc_upg_option, 'N') = 'O')
304815         ) AND
304816         (l_bflow_method_code = 'PRIOR_ENTRY')
304817       )
304818    THEN
304819       IF
304820       --
304821       1 = 2
304822       --
304823       THEN
304824       xla_accounting_err_pkg.build_message
304825                                     (p_appli_s_name            => 'XLA'
304826                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
304827                                     ,p_token_1                 => 'LINE_NUMBER'
304828                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
304829                                     ,p_token_2                 => 'LINE_TYPE_NAME'
304830                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
304831                                                                              l_component_type
304832                                                                             ,l_component_code
304833                                                                             ,l_component_type_code
304834                                                                             ,l_component_appl_id
304835                                                                             ,l_amb_context_code
304836                                                                             ,l_entity_code
304837                                                                             ,l_event_class_code
304838                                                                            )
304839                                     ,p_token_3                 => 'OWNER'
304840                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
304841                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
304842                                                                           ,p_lookup_code    => l_component_type_code
304843                                                                          )
304844                                     ,p_token_4                 => 'PRODUCT_NAME'
304845                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
304846                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
304847                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
304848                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
304849                                     ,p_ae_header_id            =>  NULL
304850                                        );
304851 
304852         IF (C_LEVEL_ERROR>= g_log_level) THEN
304853                  trace
304854                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
304855                       ,p_level    => C_LEVEL_ERROR
304856                       ,p_module   => l_log_module);
304857         END IF;
304858       END IF;
304859    END IF;
304860    --
304861    --
304862    ------------------------------------------------------------------------------------------------
304863    -- 4219869 Business Flow
304864    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
304865    -- Prior Entry.  Currently, the following code is always generated.
304866    ------------------------------------------------------------------------------------------------
304867    XLA_AE_LINES_PKG.ValidateCurrentLine;
304868 
304869    ------------------------------------------------------------------------------------
304870    -- 4219869 Business Flow
304871    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
304872    ------------------------------------------------------------------------------------
304873    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
304874 
304875    ----------------------------------------------------------------------------------
304876    -- 4219869 Business Flow
304877    -- Update journal entry status -- Need to generate this within IF <condition>
304878    ----------------------------------------------------------------------------------
304879    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
304880          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
304881          ,p_balance_type_code => l_balance_type_code
304882          );
304883 
304884    -------------------------------------------------------------------------------------------
304885    -- 4262811 - Generate the Accrual Reversal lines
304886    -------------------------------------------------------------------------------------------
304887    BEGIN
304888       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
304889                               (g_array_event(p_event_id).array_value_num('header_index'));
304890       IF l_acc_rev_flag IS NULL THEN
304891          l_acc_rev_flag := 'N';
304892       END IF;
304893    EXCEPTION
304894       WHEN OTHERS THEN
304895          l_acc_rev_flag := 'N';
304896    END;
304897    --
304898    IF (l_acc_rev_flag = 'Y') THEN
304899 
304900        -- 4645092  ------------------------------------------------------------------------------
304901        -- To allow MPA report to determine if it should generate report process
304902        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
304903        ------------------------------------------------------------------------------------------
304904 
304905        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
304906        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
304907    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
304908    -- call ADRs
304909    -- Bug 4922099
304910    --
304911    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
304912         (NVL(l_actual_upg_option, 'N') = 'O') OR
304913         (NVL(l_enc_upg_option, 'N') = 'O')
304914       )
304915    THEN
304916    NULL;
304917    --
304918    --
304919    
304920   l_ccid := AcctDerRule_3(
304921            p_application_id           => p_application_id
304922          , p_ae_header_id             => l_ae_header_id 
304923 , p_source_8 => p_source_8
304924          , x_transaction_coa_id       => l_adr_transaction_coa_id
304925          , x_accounting_coa_id        => l_adr_accounting_coa_id
304926          , x_value_type_code          => l_adr_value_type_code
304927          , p_side                     => 'NA'
304928    );
304929 
304930    xla_ae_lines_pkg.set_ccid(
304931     p_code_combination_id          => l_ccid
304932   , p_value_type_code              => l_adr_value_type_code
304933   , p_transaction_coa_id           => l_adr_transaction_coa_id
304934   , p_accounting_coa_id            => l_adr_accounting_coa_id
304935   , p_adr_code                     => 'CST_AWO_ACCRUAL'
304936   , p_adr_type_code                => 'S'
304937   , p_component_type               => l_component_type
304938   , p_component_code               => l_component_code
304939   , p_component_type_code          => l_component_type_code
304940   , p_component_appl_id            => l_component_appl_id
304941   , p_amb_context_code             => l_amb_context_code
304942   , p_side                         => 'NA'
304943   );
304944 
304945 
304946    --
304947    --
304948    END IF;
304949 
304950        --
304951        -- Update the line information that should be overwritten
304952        --
304953        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
304954                                          p_header_num   => 1);
304955        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
304956 
304957        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
304958 
304959        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
304960           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
304961        END IF;
304962 
304963       --
304964       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
304965       --
304966       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
304967           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
304968       ELSE
304969           ---------------------------------------------------------------------------------------------------
304970           -- 4262811a Switch Sign
304971           ---------------------------------------------------------------------------------------------------
304972           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
304973           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
304974                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
304975           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
304976                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
304977           -- 5132302
304978           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
304979                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
304980 
304981       END IF;
304982 
304983       -- 4955764
304984       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
304985       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
304986 
304987 
304988       XLA_AE_LINES_PKG.ValidateCurrentLine;
304989       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
304990 
304991       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
304992                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
304993                ,p_balance_type_code => l_balance_type_code);
304994 
304995    END IF;
304996 
304997    -----------------------------------------------------------------------------------------
304998    -- 4262811 Multiperiod Accounting
304999    -----------------------------------------------------------------------------------------
305000      -- No MPA option is assigned.
305001 
305002 
305003 END IF;
305004 END IF;
305005 --
305006 
305007 --
305008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
305009    trace
305010       (p_msg      => 'END of AcctLineType_543'
305011       ,p_level    => C_LEVEL_PROCEDURE
305012       ,p_module   => l_log_module);
305013 END IF;
305014 --
305015 EXCEPTION
305016   WHEN xla_exceptions_pkg.application_exception THEN
305017       RAISE;
305018   WHEN OTHERS THEN
305019        xla_exceptions_pkg.raise_message
305020            (p_location => 'XLA_00707_AAD_S_000020_PKG.AcctLineType_543');
305021 END AcctLineType_543;
305022 --
305023 
305024 ---------------------------------------
305025 --
305026 -- PRIVATE PROCEDURE
305027 --         insert_sources_544
305028 --
305029 ----------------------------------------
305030 --
305031 PROCEDURE insert_sources_544(
305032                                 p_target_ledger_id       IN NUMBER
305033                               , p_language               IN VARCHAR2
305034                               , p_sla_ledger_id          IN NUMBER
305035                               , p_pad_start_date         IN DATE
305036                               , p_pad_end_date           IN DATE
305037                          )
305038 IS
305039 
305040 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ABSORPTION_ALL';
305041 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ABSORPTION';
305042 p_apps_owner                   VARCHAR2(30);
305043 l_log_module                   VARCHAR2(240);
305044 BEGIN
305045 IF g_log_enabled THEN
305046       l_log_module := C_DEFAULT_MODULE||'.insert_sources_544';
305047 END IF;
305048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
305049 
305050       trace
305051          (p_msg      => 'BEGIN of insert_sources_544'
305052          ,p_level    => C_LEVEL_PROCEDURE
305053          ,p_module   => l_log_module);
305054 
305055 END IF;
305056 
305057 -- select APPS owner
305058 SELECT oracle_username
305059   INTO p_apps_owner
305060   FROM fnd_oracle_userid
305061  WHERE read_only_flag = 'U'
305062 ;
305063 
305064 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
305065       trace
305066          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
305067                         ' - p_language = '||p_language||
305068                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
305069                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
305070                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
305071                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
305072          ,p_level    => C_LEVEL_STATEMENT
305073          ,p_module   => l_log_module);
305074 END IF;
305075 
305076 
305077 --
305078 INSERT INTO xla_diag_sources --hdr2
305079 (
305080         event_id
305081       , ledger_id
305082       , sla_ledger_id
305083       , description_language
305084       , object_name
305085       , object_type_code
305086       , line_number
305087       , source_application_id
305088       , source_type_code
305089       , source_code
305090       , source_value
305091       , source_meaning
305092       , created_by
305093       , creation_date
305094       , last_update_date
305095       , last_updated_by
305096       , last_update_login
305097       , program_update_date
305098       , program_application_id
305099       , program_id
305100       , request_id
305101 )
305102 SELECT
305103         event_id
305104       , p_target_ledger_id
305105       , p_sla_ledger_id
305106       , p_language
305107       , object_name
305108       , object_type_code
305109       , line_number
305110       , source_application_id
305111       , source_type_code
305112       , source_code
305113       , SUBSTR(source_value ,1,1996)
305114       , SUBSTR(source_meaning ,1,200)
305115       , xla_environment_pkg.g_Usr_Id
305116       , TRUNC(SYSDATE)
305117       , TRUNC(SYSDATE)
305118       , xla_environment_pkg.g_Usr_Id
305119       , xla_environment_pkg.g_Login_Id
305120       , TRUNC(SYSDATE)
305121       , xla_environment_pkg.g_Prog_Appl_Id
305122       , xla_environment_pkg.g_Prog_Id
305123       , xla_environment_pkg.g_Req_Id
305124   FROM (
305125        SELECT xet.event_id                  event_id
305126             , 0                          line_number
305127             , CASE r
305128                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
305129                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
305130                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
305131                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
305132                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
305133                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
305134                 WHEN 7 THEN 'CST_XLA_WIP_HEADERS_V' 
305135                 WHEN 8 THEN 'CST_XLA_WIP_HEADERS_V' 
305136                 WHEN 9 THEN 'CST_XLA_WIP_HEADERS_V' 
305137                 WHEN 10 THEN 'CST_XLA_WIP_HEADERS_V' 
305138                 
305139                ELSE null
305140               END                           object_name
305141             , CASE r
305142                 WHEN 1 THEN 'HEADER' 
305143                 WHEN 2 THEN 'HEADER' 
305144                 WHEN 3 THEN 'HEADER' 
305145                 WHEN 4 THEN 'HEADER' 
305146                 WHEN 5 THEN 'HEADER' 
305147                 WHEN 6 THEN 'HEADER' 
305148                 WHEN 7 THEN 'HEADER' 
305149                 WHEN 8 THEN 'HEADER' 
305150                 WHEN 9 THEN 'HEADER' 
305151                 WHEN 10 THEN 'HEADER' 
305152                 
305153                 ELSE null
305154               END                           object_type_code
305155             , CASE r
305156                 WHEN 1 THEN '707' 
305157                 WHEN 2 THEN '707' 
305158                 WHEN 3 THEN '707' 
305159                 WHEN 4 THEN '707' 
305160                 WHEN 5 THEN '707' 
305161                 WHEN 6 THEN '707' 
305162                 WHEN 7 THEN '707' 
305163                 WHEN 8 THEN '707' 
305164                 WHEN 9 THEN '707' 
305165                 WHEN 10 THEN '707' 
305166                 
305167                 ELSE null
305168               END                           source_application_id
305169             , 'S'             source_type_code
305170             , CASE r
305171                 WHEN 1 THEN 'TRANSACTION_ID' 
305172                 WHEN 2 THEN 'TRANSACTION_UOM' 
305173                 WHEN 3 THEN 'PRIMARY_QUANTITY' 
305174                 WHEN 4 THEN 'WIP_TRANSACTION_TYPE_ID' 
305175                 WHEN 5 THEN 'DISTRIBUTION_TYPE' 
305176                 WHEN 6 THEN 'CURRENCY_CODE' 
305177                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
305178                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
305179                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
305180                 WHEN 10 THEN 'TRANSFER_TO_GL_INDICATOR' 
305181                 
305182                 ELSE null
305183               END                           source_code
305184             , CASE r
305185                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
305186                 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_UOM)
305187                 WHEN 3 THEN TO_CHAR(h1.PRIMARY_QUANTITY)
305188                 WHEN 4 THEN TO_CHAR(h1.WIP_TRANSACTION_TYPE_ID)
305189                 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
305190                 WHEN 6 THEN TO_CHAR(h1.CURRENCY_CODE)
305191                 WHEN 7 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
305192                 WHEN 8 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
305193                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
305194                 WHEN 10 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
305195                 
305196                 ELSE null
305197               END                           source_value
305198             , CASE r
305199                 WHEN 4 THEN fvl7.meaning
305200                 WHEN 5 THEN fvl85.meaning
305201                 WHEN 10 THEN fvl114.meaning
305202                 
305203                 ELSE null
305204               END               source_meaning
305205          FROM xla_events_gt     xet  
305206       , CST_XLA_WIP_HEADERS_V  h1
305207   , fnd_lookup_values    fvl7
305208   , fnd_lookup_values    fvl85
305209   , fnd_lookup_values    fvl114
305210              ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
305211          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
305212            AND xet.event_class_code = C_EVENT_CLASS_CODE
305213               AND h1.event_id = xet.event_id
305214    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
305215   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
305216   AND fvl7.view_application_id(+) = 700
305217   AND fvl7.language(+)            = USERENV('LANG')
305218      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
305219   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
305220   AND fvl85.view_application_id(+) = 700
305221   AND fvl85.language(+)            = USERENV('LANG')
305222      AND fvl114.lookup_type(+)         = 'YES_NO'
305223   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
305224   AND fvl114.view_application_id(+) = 0
305225   AND fvl114.language(+)            = USERENV('LANG')
305226   
305227 )
305228 ;
305229 --
305230 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
305231 
305232       trace
305233          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
305234          ,p_level    => C_LEVEL_STATEMENT
305235          ,p_module   => l_log_module);
305236 
305237 END IF;
305238 --
305239 
305240 
305241 
305242 --
305243 INSERT INTO xla_diag_sources  --line2
305244 (
305245         event_id
305246       , ledger_id
305247       , sla_ledger_id
305248       , description_language
305249       , object_name
305250       , object_type_code
305251       , line_number
305252       , source_application_id
305253       , source_type_code
305254       , source_code
305255       , source_value
305256       , source_meaning
305257       , created_by
305258       , creation_date
305259       , last_update_date
305260       , last_updated_by
305261       , last_update_login
305262       , program_update_date
305263       , program_application_id
305264       , program_id
305265       , request_id
305266 )
305267 SELECT  event_id
305268       , p_target_ledger_id
305269       , p_sla_ledger_id
305270       , p_language
305271       , object_name
305272       , object_type_code
305273       , line_number
305274       , source_application_id
305275       , source_type_code
305276       , source_code
305277       , SUBSTR(source_value,1,1996)
305278       , SUBSTR(source_meaning ,1,200)
305279       , xla_environment_pkg.g_Usr_Id
305280       , TRUNC(SYSDATE)
305281       , TRUNC(SYSDATE)
305282       , xla_environment_pkg.g_Usr_Id
305283       , xla_environment_pkg.g_Login_Id
305284       , TRUNC(SYSDATE)
305285       , xla_environment_pkg.g_Prog_Appl_Id
305286       , xla_environment_pkg.g_Prog_Id
305287       , xla_environment_pkg.g_Req_Id
305288   FROM (
305289        SELECT xet.event_id                  event_id
305290             , l2.line_number                 line_number
305291             , CASE r
305292                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
305293                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
305294                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
305295                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
305296                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
305297                 
305298                ELSE null
305299               END                           object_name
305300             , CASE r
305301                 WHEN 1 THEN 'LINE' 
305302                 WHEN 2 THEN 'LINE' 
305303                 WHEN 3 THEN 'LINE' 
305304                 WHEN 4 THEN 'LINE' 
305305                 WHEN 5 THEN 'LINE' 
305306                 
305307                 ELSE null
305308               END                           object_type_code
305309             , CASE r
305310                 WHEN 1 THEN '707' 
305311                 WHEN 2 THEN '707' 
305312                 WHEN 3 THEN '707' 
305313                 WHEN 4 THEN '707' 
305314                 WHEN 5 THEN '707' 
305315                 
305316                 ELSE null
305317               END                           source_application_id
305318             , 'S'             source_type_code
305319             , CASE r
305320                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
305321                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
305322                 WHEN 3 THEN 'ENTERED_AMOUNT' 
305323                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
305324                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
305325                 
305326                 ELSE null
305327               END                           source_code
305328             , CASE r
305329                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
305330                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
305331                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
305332                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
305333                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
305334                 
305335                 ELSE null
305336               END                           source_value
305337             , null              source_meaning
305338          FROM  xla_events_gt     xet  
305339         , CST_XLA_WIP_LINES_V  l2
305340             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
305341         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
305342           AND xet.event_class_code = C_EVENT_CLASS_CODE
305343             AND l2.event_id          = xet.event_id
305344 
305345 )
305346 ;
305347 --
305348 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
305349 
305350       trace
305351          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
305352          ,p_level    => C_LEVEL_STATEMENT
305353          ,p_module   => l_log_module);
305354 
305355 END IF;
305356 
305357 
305358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
305359       trace
305360          (p_msg      => 'END of insert_sources_544'
305361          ,p_level    => C_LEVEL_PROCEDURE
305362          ,p_module   => l_log_module);
305363 END IF;
305364 EXCEPTION
305365   WHEN xla_exceptions_pkg.application_exception THEN
305366       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
305367             trace
305368                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
305369                ,p_level    => C_LEVEL_EXCEPTION
305370                ,p_module   => l_log_module);
305371       END IF;
305372       RAISE;
305373   WHEN OTHERS THEN
305374       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
305375             trace
305376                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
305377                ,p_level    => C_LEVEL_EXCEPTION
305378                ,p_module   => l_log_module);
305379        END IF;
305380        xla_exceptions_pkg.raise_message
305381            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_544');
305382 END insert_sources_544;
305383 --
305384 
305385 ---------------------------------------
305386 --
305387 -- PRIVATE FUNCTION
305388 --         EventClass_544
305389 --
305390 ----------------------------------------
305391 --
305392 FUNCTION EventClass_544
305393        (p_application_id         IN NUMBER
305394        ,p_base_ledger_id         IN NUMBER
305395        ,p_target_ledger_id       IN NUMBER
305396        ,p_language               IN VARCHAR2
305397        ,p_currency_code          IN VARCHAR2
305398        ,p_sla_ledger_id          IN NUMBER
305399        ,p_pad_start_date         IN DATE
305400        ,p_pad_end_date           IN DATE
305401        ,p_primary_ledger_id      IN NUMBER)
305402 RETURN BOOLEAN IS
305403 --
305404 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ABSORPTION_ALL';
305405 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ABSORPTION';
305406 
305407 l_calculate_acctd_flag   VARCHAR2(1) :='N';
305408 l_calculate_g_l_flag     VARCHAR2(1) :='N';
305409 --
305410 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305411 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305412 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
305413 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
305414 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305415 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
305416 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
305417 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305418 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
305419 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
305420 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305421 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305422 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305423 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
305424 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
305425 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
305426 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
305427 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
305428 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
305429 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
305430 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
305431 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
305432 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
305433 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
305434 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
305435 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
305436 
305437 l_event_id                             NUMBER;
305438 l_previous_event_id                    NUMBER;
305439 l_first_event_id                       NUMBER;
305440 l_last_event_id                        NUMBER;
305441 
305442 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
305443 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
305444 --
305445 --
305446 l_result                    BOOLEAN := TRUE;
305447 l_rows                      NUMBER  := 1000;
305448 l_event_type_name           VARCHAR2(80) := 'All';
305449 l_event_class_name          VARCHAR2(80) := 'WIP Absorption';
305450 l_description               VARCHAR2(4000);
305451 l_transaction_reversal      NUMBER;
305452 l_ae_header_id              NUMBER;
305453 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
305454 l_log_module                VARCHAR2(240);
305455 --
305456 l_acct_reversal_source      VARCHAR2(30);
305457 l_trx_reversal_source       VARCHAR2(30);
305458 
305459 l_continue_with_lines       BOOLEAN := TRUE;
305460 --
305461 l_acc_rev_gl_date_source    DATE;                      -- 4262811
305462 --
305463 type t_array_event_id is table of number index by binary_integer;
305464 
305465 l_rec_array_event                    t_rec_array_event;
305466 l_null_rec_array_event               t_rec_array_event;
305467 l_array_ae_header_id                 xla_number_array_type;
305468 l_actual_flag                        VARCHAR2(1) := NULL;
305469 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
305470 l_balance_type_code                  VARCHAR2(1) :=NULL;
305471 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
305472 
305473 --
305474 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
305475 --
305476 
305477 TYPE t_array_source_1 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
305478 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
305479 TYPE t_array_source_6 IS TABLE OF CST_XLA_WIP_HEADERS_V.PRIMARY_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
305480 TYPE t_array_source_7 IS TABLE OF CST_XLA_WIP_HEADERS_V.WIP_TRANSACTION_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
305481 TYPE t_array_source_85 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
305482 TYPE t_array_source_88 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
305483 TYPE t_array_source_92 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
305484 TYPE t_array_source_93 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
305485 TYPE t_array_source_94 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
305486 TYPE t_array_source_114 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
305487 
305488 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
305489 TYPE t_array_source_84 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
305490 TYPE t_array_source_91 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
305491 TYPE t_array_source_95 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
305492 TYPE t_array_source_97 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
305493 
305494 l_array_source_1              t_array_source_1;
305495 l_array_source_4              t_array_source_4;
305496 l_array_source_6              t_array_source_6;
305497 l_array_source_7              t_array_source_7;
305498 l_array_source_7_meaning      t_array_lookup_meaning;
305499 l_array_source_85              t_array_source_85;
305500 l_array_source_85_meaning      t_array_lookup_meaning;
305501 l_array_source_88              t_array_source_88;
305502 l_array_source_92              t_array_source_92;
305503 l_array_source_93              t_array_source_93;
305504 l_array_source_94              t_array_source_94;
305505 l_array_source_114              t_array_source_114;
305506 l_array_source_114_meaning      t_array_lookup_meaning;
305507 
305508 l_array_source_11      t_array_source_11;
305509 l_array_source_84      t_array_source_84;
305510 l_array_source_91      t_array_source_91;
305511 l_array_source_95      t_array_source_95;
305512 l_array_source_97      t_array_source_97;
305513 
305514 --
305515 CURSOR header_cur
305516 IS
305517 SELECT /*+ leading(xet) cardinality(xet,1) */
305518 -- Event Class Code: ABSORPTION
305519     xet.entity_id
305520    ,xet.legal_entity_id
305521    ,xet.entity_code
305522    ,xet.transaction_number
305523    ,xet.event_id
305524    ,xet.event_class_code
305525    ,xet.event_type_code
305526    ,xet.event_number
305527    ,xet.event_date
305528    ,xet.transaction_date
305529    ,xet.reference_num_1
305530    ,xet.reference_num_2
305531    ,xet.reference_num_3
305532    ,xet.reference_num_4
305533    ,xet.reference_char_1
305534    ,xet.reference_char_2
305535    ,xet.reference_char_3
305536    ,xet.reference_char_4
305537    ,xet.reference_date_1
305538    ,xet.reference_date_2
305539    ,xet.reference_date_3
305540    ,xet.reference_date_4
305541    ,xet.event_created_by
305542    ,xet.budgetary_control_flag 
305543   , h1.TRANSACTION_ID    source_1
305544   , h1.TRANSACTION_UOM    source_4
305545   , h1.PRIMARY_QUANTITY    source_6
305546   , h1.WIP_TRANSACTION_TYPE_ID    source_7
305547   , fvl7.meaning   source_7_meaning
305548   , h1.DISTRIBUTION_TYPE    source_85
305549   , fvl85.meaning   source_85_meaning
305550   , h1.CURRENCY_CODE    source_88
305551   , h1.CURRENCY_CONVERSION_DATE    source_92
305552   , h1.CURRENCY_CONVERSION_RATE    source_93
305553   , h1.CURRENCY_CONVERSION_TYPE    source_94
305554   , h1.TRANSFER_TO_GL_INDICATOR    source_114
305555   , fvl114.meaning   source_114_meaning
305556   FROM xla_events_gt     xet 
305557   , CST_XLA_WIP_HEADERS_V  h1
305558   , fnd_lookup_values    fvl7
305559   , fnd_lookup_values    fvl85
305560   , fnd_lookup_values    fvl114
305561  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
305562    and xet.event_class_code = C_EVENT_CLASS_CODE
305563    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
305564    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
305565   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
305566   AND fvl7.view_application_id(+) = 700
305567   AND fvl7.language(+)            = USERENV('LANG')
305568      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
305569   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
305570   AND fvl85.view_application_id(+) = 700
305571   AND fvl85.language(+)            = USERENV('LANG')
305572      AND fvl114.lookup_type(+)         = 'YES_NO'
305573   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
305574   AND fvl114.view_application_id(+) = 0
305575   AND fvl114.language(+)            = USERENV('LANG')
305576   
305577  ORDER BY event_id
305578 ;
305579 
305580 
305581 --
305582 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
305583 IS
305584 SELECT  /*+ leading(xet) cardinality(xet,1) */
305585 -- Event Class Code: ABSORPTION
305586     xet.entity_id
305587    ,xet.legal_entity_id
305588    ,xet.entity_code
305589    ,xet.transaction_number
305590    ,xet.event_id
305591    ,xet.event_class_code
305592    ,xet.event_type_code
305593    ,xet.event_number
305594    ,xet.event_date
305595    ,xet.transaction_date
305596    ,xet.reference_num_1
305597    ,xet.reference_num_2
305598    ,xet.reference_num_3
305599    ,xet.reference_num_4
305600    ,xet.reference_char_1
305601    ,xet.reference_char_2
305602    ,xet.reference_char_3
305603    ,xet.reference_char_4
305604    ,xet.reference_date_1
305605    ,xet.reference_date_2
305606    ,xet.reference_date_3
305607    ,xet.reference_date_4
305608    ,xet.event_created_by
305609    ,xet.budgetary_control_flag
305610  , l2.LINE_NUMBER  
305611   , l2.CODE_COMBINATION_ID    source_11
305612   , l2.DISTRIBUTION_IDENTIFIER    source_84
305613   , l2.ENTERED_AMOUNT    source_91
305614   , l2.ACCOUNTED_AMOUNT    source_95
305615   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
305616   FROM xla_events_gt     xet 
305617   , CST_XLA_WIP_LINES_V  l2
305618  WHERE xet.event_id between x_first_event_id and x_last_event_id
305619    and xet.event_date between p_pad_start_date and p_pad_end_date
305620    and xet.event_class_code = C_EVENT_CLASS_CODE
305621    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
305622 ;
305623 
305624 --
305625 BEGIN
305626 IF g_log_enabled THEN
305627    l_log_module := C_DEFAULT_MODULE||'.EventClass_544';
305628 END IF;
305629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
305630    trace
305631       (p_msg      => 'BEGIN of EventClass_544'
305632       ,p_level    => C_LEVEL_PROCEDURE
305633       ,p_module   => l_log_module);
305634 END IF;
305635 
305636 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
305637    trace
305638       (p_msg      => 'p_application_id = '||p_application_id||
305639                      ' - p_base_ledger_id = '||p_base_ledger_id||
305640                      ' - p_target_ledger_id  = '||p_target_ledger_id||
305641                      ' - p_language = '||p_language||
305642                      ' - p_currency_code = '||p_currency_code||
305643                      ' - p_sla_ledger_id = '||p_sla_ledger_id
305644       ,p_level    => C_LEVEL_STATEMENT
305645       ,p_module   => l_log_module);
305646 END IF;
305647 --
305648 -- initialze arrays
305649 --
305650 g_array_event.DELETE;
305651 l_rec_array_event := l_null_rec_array_event;
305652 --
305653 --------------------------------------
305654 -- 4262811 Initialze MPA Line Number
305655 --------------------------------------
305656 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
305657 
305658 --
305659 
305660 --
305661 OPEN header_cur;
305662 --
305663 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
305664    trace
305665    (p_msg      => 'SQL - FETCH header_cur'
305666    ,p_level    => C_LEVEL_STATEMENT
305667    ,p_module   => l_log_module);
305668 END IF;
305669 --
305670 LOOP
305671 FETCH header_cur BULK COLLECT INTO
305672         l_array_entity_id
305673       , l_array_legal_entity_id
305674       , l_array_entity_code
305675       , l_array_transaction_num
305676       , l_array_event_id
305677       , l_array_class_code
305678       , l_array_event_type
305679       , l_array_event_number
305680       , l_array_event_date
305681       , l_array_transaction_date
305682       , l_array_reference_num_1
305683       , l_array_reference_num_2
305684       , l_array_reference_num_3
305685       , l_array_reference_num_4
305686       , l_array_reference_char_1
305687       , l_array_reference_char_2
305688       , l_array_reference_char_3
305689       , l_array_reference_char_4
305690       , l_array_reference_date_1
305691       , l_array_reference_date_2
305692       , l_array_reference_date_3
305693       , l_array_reference_date_4
305694       , l_array_event_created_by
305695       , l_array_budgetary_control_flag 
305696       , l_array_source_1
305697       , l_array_source_4
305698       , l_array_source_6
305699       , l_array_source_7
305700       , l_array_source_7_meaning
305701       , l_array_source_85
305702       , l_array_source_85_meaning
305703       , l_array_source_88
305704       , l_array_source_92
305705       , l_array_source_93
305706       , l_array_source_94
305707       , l_array_source_114
305708       , l_array_source_114_meaning
305709       LIMIT l_rows;
305710 --
305711 IF (C_LEVEL_EVENT >= g_log_level) THEN
305712    trace
305713    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
305714    ,p_level    => C_LEVEL_EVENT
305715    ,p_module   => l_log_module);
305716 END IF;
305717 --
305718 EXIT WHEN l_array_entity_id.COUNT = 0;
305719 
305720 -- initialize arrays
305721 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
305722 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
305723 
305724 --
305725 -- Bug 4458708
305726 --
305727 XLA_AE_LINES_PKG.g_LineNumber := 0;
305728 
305729 
305730 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
305731 g_last_hdr_idx := l_array_event_id.LAST;
305732 --
305733 -- loop for the headers. Each iteration is for each header extract row
305734 -- fetched in header cursor
305735 --
305736 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
305737 
305738 --
305739 -- set event info as cache for other routines to refer event attributes
305740 --
305741 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
305742    (p_application_id           => p_application_id
305743    ,p_primary_ledger_id        => p_primary_ledger_id
305744    ,p_base_ledger_id           => p_base_ledger_id
305745    ,p_target_ledger_id         => p_target_ledger_id
305746    ,p_entity_id                => l_array_entity_id(hdr_idx)
305747    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
305748    ,p_entity_code              => l_array_entity_code(hdr_idx)
305749    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
305750    ,p_event_id                 => l_array_event_id(hdr_idx)
305751    ,p_event_class_code         => l_array_class_code(hdr_idx)
305752    ,p_event_type_code          => l_array_event_type(hdr_idx)
305753    ,p_event_number             => l_array_event_number(hdr_idx)
305754    ,p_event_date               => l_array_event_date(hdr_idx)
305755    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
305756    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
305757    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
305758    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
305759    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
305760    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
305761    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
305762    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
305763    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
305764    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
305765    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
305766    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
305767    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
305768    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
305769    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
305770 
305771 --
305772 -- set the status of entry to C_VALID (0)
305773 --
305774 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
305775 
305776 --
305777 -- initialize a row for ae header
305778 --
305779 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
305780 
305781 l_event_id := l_array_event_id(hdr_idx);
305782 
305783 --
305784 -- storing the hdr_idx for event. May be used by line cursor.
305785 --
305786 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
305787 
305788 --
305789 -- store sources from header extract. This can be improved to
305790 -- store only those sources from header extract that may be used in lines
305791 --
305792 
305793 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
305794 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
305795 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
305796 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
305797 g_array_event(l_event_id).array_value_char('source_7_meaning') := l_array_source_7_meaning(hdr_idx);
305798 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
305799 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
305800 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
305801 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
305802 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
305803 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
305804 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
305805 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
305806 
305807 --
305808 -- initilaize the status of ae headers for diffrent balance types
305809 -- the status is initialised to C_NOT_CREATED (2)
305810 --
305811 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
305812 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
305813 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
305814 
305815 --
305816 -- call api to validate and store accounting attributes for header
305817 --
305818 
305819 ------------------------------------------------------------
305820 -- Accrual Reversal : to get date for Standard Source (NONE)
305821 ------------------------------------------------------------
305822 l_acc_rev_gl_date_source := NULL;
305823 
305824      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
305825       l_rec_acct_attrs.array_date_value(1) := 
305826 xla_ae_sources_pkg.GetSystemSourceDate(
305827    p_source_code           => 'XLA_REFERENCE_DATE_1'
305828  , p_source_type_code      => 'Y'
305829  , p_source_application_id =>  602
305830 );
305831      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
305832       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
305833 
305834 
305835 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
305836 
305837 XLA_AE_HEADER_PKG.SetJeCategoryName;
305838 
305839 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
305840 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
305841 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
305842 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
305843 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
305844 
305845 
305846 --
305847 xla_ae_header_pkg.SetHdrDescription(
305848    p_description => Description_2 (
305849    p_application_id => p_application_id 
305850  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
305851  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
305852  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
305853  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
305854  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
305855    )
305856 );
305857 --
305858 
305859 -- No header level analytical criteria
305860 
305861 --
305862 --accounting attribute enhancement, bug 3612931
305863 --
305864 l_trx_reversal_source := SUBSTR(NULL, 1,30);
305865 
305866 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
305867    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
305868 
305869    xla_accounting_err_pkg.build_message
305870       (p_appli_s_name            => 'XLA'
305871       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
305872       ,p_token_1                 => 'ACCT_ATTR_NAME'
305873       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
305874       ,p_token_2                 => 'PRODUCT_NAME'
305875       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
305876       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
305877       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
305878       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
305879 
305880 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
305881    --
305882    -- following sets the accounting attributes needed to reverse
305883    -- accounting for a distributeion
305884    --
305885    xla_ae_lines_pkg.SetTrxReversalAttrs
305886       (p_event_id              => l_event_id
305887       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
305888       ,p_trx_reversal_source   => l_trx_reversal_source);
305889 
305890 END IF;
305891 
305892 
305893 ----------------------------------------------------------------
305894 -- 4262811 -  update the header statuses to invalid in need be
305895 ----------------------------------------------------------------
305896 --
305897 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
305898 
305899 
305900   -----------------------------------------------
305901   -- No accrual reversal for the event class/type
305902   -----------------------------------------------
305903 ----------------------------------------------------------------
305904 
305905 --
305906 -- this ends the header loop iteration for one bulk fetch
305907 --
305908 END LOOP;
305909 
305910 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
305911 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
305912 
305913 --
305914 -- insert dummy rows into lines gt table that were created due to
305915 -- transaction reversals
305916 --
305917 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
305918    l_result := XLA_AE_LINES_PKG.InsertLines;
305919 END IF;
305920 
305921 --
305922 -- reset the temp_line_num for each set of events fetched from header
305923 -- cursor rather than doing it for each new event in line cursor
305924 -- Bug 3939231
305925 --
305926 xla_ae_lines_pkg.g_temp_line_num := 0;
305927 
305928 
305929 
305930 --
305931 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
305932 --
305933 --
305934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
305935 
305936       trace
305937          (p_msg      => 'SQL - FETCH line_cur'
305938          ,p_level    => C_LEVEL_STATEMENT
305939          ,p_module   => l_log_module);
305940 
305941 END IF;
305942 --
305943 --
305944 LOOP
305945   --
305946   FETCH line_cur BULK COLLECT INTO
305947         l_array_entity_id
305948       , l_array_legal_entity_id
305949       , l_array_entity_code
305950       , l_array_transaction_num
305951       , l_array_event_id
305952       , l_array_class_code
305953       , l_array_event_type
305954       , l_array_event_number
305955       , l_array_event_date
305956       , l_array_transaction_date
305957       , l_array_reference_num_1
305958       , l_array_reference_num_2
305959       , l_array_reference_num_3
305960       , l_array_reference_num_4
305961       , l_array_reference_char_1
305962       , l_array_reference_char_2
305963       , l_array_reference_char_3
305964       , l_array_reference_char_4
305965       , l_array_reference_date_1
305966       , l_array_reference_date_2
305967       , l_array_reference_date_3
305968       , l_array_reference_date_4
305969       , l_array_event_created_by
305970       , l_array_budgetary_control_flag
305971       , l_array_extract_line_num 
305972       , l_array_source_11
305973       , l_array_source_84
305974       , l_array_source_91
305975       , l_array_source_95
305976       , l_array_source_97
305977       LIMIT l_rows;
305978 
305979   --
305980   IF (C_LEVEL_EVENT >= g_log_level) THEN
305981             trace
305982                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
305983                ,p_level    => C_LEVEL_EVENT
305984                ,p_module   => l_log_module);
305985   END IF;
305986   --
305987   EXIT WHEN l_array_entity_id.count = 0;
305988 
305989   XLA_AE_LINES_PKG.g_rec_lines := null;
305990 
305991 --
305992 -- Bug 4458708
305993 --
305994 XLA_AE_LINES_PKG.g_LineNumber := 0;
305995 --
305996 --
305997 
305998 FOR Idx IN 1..l_array_event_id.count LOOP
305999    --
306000    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
306001    --
306002    l_event_id := l_array_event_id(idx);  -- 5648433
306003 
306004    --
306005    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
306006    --
306007 
306008    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
306009              (g_array_event(l_event_id).array_value_num('header_index'))
306010          ,'N'
306011          ) <> 'Y'
306012    THEN
306013       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
306014          trace
306015             (p_msg      => 'Trancaction revesal option is not Y '
306016             ,p_level    => C_LEVEL_STATEMENT
306017             ,p_module   => l_log_module);
306018       END IF;
306019 
306020 --
306021 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
306022 --
306023 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
306024 --
306025 -- set event info as cache for other routines to refer event attributes
306026 --
306027 
306028 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
306029    l_previous_event_id := l_event_id;
306030 
306031    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
306032       (p_application_id           => p_application_id
306033       ,p_primary_ledger_id        => p_primary_ledger_id
306034       ,p_base_ledger_id           => p_base_ledger_id
306035       ,p_target_ledger_id         => p_target_ledger_id
306036       ,p_entity_id                => l_array_entity_id(Idx)
306037       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
306038       ,p_entity_code              => l_array_entity_code(Idx)
306039       ,p_transaction_num          => l_array_transaction_num(Idx)
306040       ,p_event_id                 => l_array_event_id(Idx)
306041       ,p_event_class_code         => l_array_class_code(Idx)
306042       ,p_event_type_code          => l_array_event_type(Idx)
306043       ,p_event_number             => l_array_event_number(Idx)
306044       ,p_event_date               => l_array_event_date(Idx)
306045       ,p_transaction_date         => l_array_transaction_date(Idx)
306046       ,p_reference_num_1          => l_array_reference_num_1(Idx)
306047       ,p_reference_num_2          => l_array_reference_num_2(Idx)
306048       ,p_reference_num_3          => l_array_reference_num_3(Idx)
306049       ,p_reference_num_4          => l_array_reference_num_4(Idx)
306050       ,p_reference_char_1         => l_array_reference_char_1(Idx)
306051       ,p_reference_char_2         => l_array_reference_char_2(Idx)
306052       ,p_reference_char_3         => l_array_reference_char_3(Idx)
306053       ,p_reference_char_4         => l_array_reference_char_4(Idx)
306054       ,p_reference_date_1         => l_array_reference_date_1(Idx)
306055       ,p_reference_date_2         => l_array_reference_date_2(Idx)
306056       ,p_reference_date_3         => l_array_reference_date_3(Idx)
306057       ,p_reference_date_4         => l_array_reference_date_4(Idx)
306058       ,p_event_created_by         => l_array_event_created_by(Idx)
306059       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
306060        --
306061 END IF;
306062 
306063 
306064 
306065 --
306066 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
306067 
306068 l_acct_reversal_source := SUBSTR(NULL, 1,30);
306069 
306070 IF l_continue_with_lines THEN
306071    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
306072       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
306073 
306074       xla_accounting_err_pkg.build_message
306075          (p_appli_s_name            => 'XLA'
306076          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
306077          ,p_token_1                 => 'LINE_NUMBER'
306078          ,p_value_1                 => l_array_extract_line_num(Idx)
306079          ,p_token_2                 => 'PRODUCT_NAME'
306080          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
306081          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
306082          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
306083          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
306084 
306085    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
306086       --
306087       -- following sets the accounting attributes needed to reverse
306088       -- accounting for a distributeion
306089       --
306090 
306091       --
306092       -- 5217187
306093       --
306094       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
306095       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
306096                                        g_array_event(l_event_id).array_value_num('header_index'));
306097       --
306098       --
306099 
306100       -- No reversal code generated
306101 
306102       xla_ae_lines_pkg.SetAcctReversalAttrs
306103          (p_event_id             => l_event_id
306104          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
306105          ,p_calculate_acctd_flag => l_calculate_acctd_flag
306106          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
306107    END IF;
306108 
306109    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
306110        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
306111 
306112 --
306113 AcctLineType_123 (
306114  p_application_id  => p_application_id
306115  ,p_event_id     => l_event_id
306116  ,p_calculate_acctd_flag => l_calculate_acctd_flag
306117  ,p_calculate_g_l_flag => l_calculate_g_l_flag
306118  ,p_actual_flag => l_actual_flag
306119  ,p_balance_type_code => l_balance_type_code
306120  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
306121  
306122  , p_source_11 => l_array_source_11(Idx)
306123  , p_source_84 => l_array_source_84(Idx)
306124  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
306125  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
306126  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
306127  , p_source_91 => l_array_source_91(Idx)
306128  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
306129  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
306130  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
306131  , p_source_95 => l_array_source_95(Idx)
306132  , p_source_97 => l_array_source_97(Idx)
306133  );
306134 If(l_balance_type_code = 'A') THEN
306135   l_actual_gain_loss_ref := l_gain_or_loss_ref;
306136 END IF;
306137 
306138 --
306139 
306140 
306141 --
306142 AcctLineType_372 (
306143  p_application_id  => p_application_id
306144  ,p_event_id     => l_event_id
306145  ,p_calculate_acctd_flag => l_calculate_acctd_flag
306146  ,p_calculate_g_l_flag => l_calculate_g_l_flag
306147  ,p_actual_flag => l_actual_flag
306148  ,p_balance_type_code => l_balance_type_code
306149  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
306150  
306151  , p_source_11 => l_array_source_11(Idx)
306152  , p_source_84 => l_array_source_84(Idx)
306153  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
306154  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
306155  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
306156  , p_source_91 => l_array_source_91(Idx)
306157  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
306158  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
306159  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
306160  , p_source_95 => l_array_source_95(Idx)
306161  , p_source_97 => l_array_source_97(Idx)
306162  );
306163 If(l_balance_type_code = 'A') THEN
306164   l_actual_gain_loss_ref := l_gain_or_loss_ref;
306165 END IF;
306166 
306167 --
306168 
306169 
306170 --
306171 AcctLineType_514 (
306172  p_application_id  => p_application_id
306173  ,p_event_id     => l_event_id
306174  ,p_calculate_acctd_flag => l_calculate_acctd_flag
306175  ,p_calculate_g_l_flag => l_calculate_g_l_flag
306176  ,p_actual_flag => l_actual_flag
306177  ,p_balance_type_code => l_balance_type_code
306178  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
306179  
306180  , p_source_11 => l_array_source_11(Idx)
306181  , p_source_84 => l_array_source_84(Idx)
306182  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
306183  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
306184  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
306185  , p_source_91 => l_array_source_91(Idx)
306186  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
306187  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
306188  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
306189  , p_source_95 => l_array_source_95(Idx)
306190  , p_source_97 => l_array_source_97(Idx)
306191  );
306192 If(l_balance_type_code = 'A') THEN
306193   l_actual_gain_loss_ref := l_gain_or_loss_ref;
306194 END IF;
306195 
306196 --
306197 
306198 
306199 --
306200 AcctLineType_515 (
306201  p_application_id  => p_application_id
306202  ,p_event_id     => l_event_id
306203  ,p_calculate_acctd_flag => l_calculate_acctd_flag
306204  ,p_calculate_g_l_flag => l_calculate_g_l_flag
306205  ,p_actual_flag => l_actual_flag
306206  ,p_balance_type_code => l_balance_type_code
306207  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
306208  
306209  , p_source_11 => l_array_source_11(Idx)
306210  , p_source_84 => l_array_source_84(Idx)
306211  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
306212  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
306213  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
306214  , p_source_91 => l_array_source_91(Idx)
306215  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
306216  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
306217  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
306218  , p_source_95 => l_array_source_95(Idx)
306219  , p_source_97 => l_array_source_97(Idx)
306220  );
306221 If(l_balance_type_code = 'A') THEN
306222   l_actual_gain_loss_ref := l_gain_or_loss_ref;
306223 END IF;
306224 
306225 --
306226 
306227 
306228 --
306229 AcctLineType_527 (
306230  p_application_id  => p_application_id
306231  ,p_event_id     => l_event_id
306232  ,p_calculate_acctd_flag => l_calculate_acctd_flag
306233  ,p_calculate_g_l_flag => l_calculate_g_l_flag
306234  ,p_actual_flag => l_actual_flag
306235  ,p_balance_type_code => l_balance_type_code
306236  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
306237  
306238  , p_source_11 => l_array_source_11(Idx)
306239  , p_source_84 => l_array_source_84(Idx)
306240  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
306241  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
306242  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
306243  , p_source_91 => l_array_source_91(Idx)
306244  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
306245  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
306246  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
306247  , p_source_95 => l_array_source_95(Idx)
306248  , p_source_97 => l_array_source_97(Idx)
306249  );
306250 If(l_balance_type_code = 'A') THEN
306251   l_actual_gain_loss_ref := l_gain_or_loss_ref;
306252 END IF;
306253 
306254 --
306255 
306256       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
306257       -- or secondary ledger that has different currency with primary
306258       -- or alc that is calculated by sla
306259       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
306260             (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'))
306261 
306262 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
306263 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
306264           AND (l_actual_flag = 'A')) THEN
306265         XLA_AE_LINES_PKG.CreateGainOrLossLines(
306266           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
306267          ,p_application_id   => p_application_id
306268          ,p_amb_context_code => 'DEFAULT'
306269          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
306270          ,p_event_class_code => C_EVENT_CLASS_CODE
306271          ,p_event_type_code  => C_EVENT_TYPE_CODE
306272          
306273          ,p_gain_ccid        => -1
306274          ,p_loss_ccid        => -1
306275 
306276          ,p_actual_flag      => l_actual_flag
306277          ,p_enc_flag         => null
306278          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
306279          ,p_enc_g_l_ref      => null
306280          );
306281       END IF;
306282    END IF;
306283 END IF;
306284 
306285    ELSE
306286       --
306287       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
306288       --
306289       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
306290          trace
306291             (p_msg      => 'Trancaction revesal option is Y'
306292             ,p_level    => C_LEVEL_STATEMENT
306293             ,p_module   => l_log_module);
306294       END IF;
306295    END IF;
306296 
306297 END LOOP;
306298 l_result := XLA_AE_LINES_PKG.InsertLines ;
306299 end loop;
306300 close line_cur;
306301 
306302 
306303 --
306304 -- insert headers into xla_ae_headers_gt table
306305 --
306306 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
306307 
306308 -- insert into errors table here.
306309 
306310 END LOOP;
306311 
306312 --
306313 -- 4865292
306314 --
306315 -- Compare g_hdr_extract_count with event count in
306316 -- CreateHeadersAndLines.
306317 --
306318 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
306319 
306320 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
306321    trace (p_msg     => '# rows extracted from header extract objects '
306322                     || ' (running total): '
306323                     || g_hdr_extract_count
306324          ,p_level   => C_LEVEL_STATEMENT
306325          ,p_module  => l_log_module);
306326 END IF;
306327 
306328 CLOSE header_cur;
306329 --
306330 
306331 --
306332 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
306333    trace
306334       (p_msg      => 'END of EventClass_544'
306335       ,p_level    => C_LEVEL_PROCEDURE
306336       ,p_module   => l_log_module);
306337 END IF;
306338 --
306339 RETURN l_result;
306340 EXCEPTION
306341 WHEN xla_exceptions_pkg.application_exception THEN
306342    
306343 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
306344 
306345    
306346 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
306347 
306348    RAISE;
306349 
306350 WHEN NO_DATA_FOUND THEN
306351 
306352 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
306353 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
306354 
306355 FOR header_record IN header_cur
306356 LOOP
306357     l_array_header_events(header_record.event_id) := header_record.event_id;
306358 END LOOP;
306359 
306360 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
306361 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
306362 
306363 fnd_file.put_line(fnd_file.LOG, '                    ');
306364 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
306365 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
306366 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
306367 
306368 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
306369 LOOP
306370 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
306371 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
306372         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
306373 	END IF;
306374 END LOOP;
306375 
306376 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
306377 fnd_file.put_line(fnd_file.LOG, '                    ');
306378 
306379 
306380 xla_exceptions_pkg.raise_message
306381       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_544');
306382 
306383 
306384 WHEN OTHERS THEN
306385    xla_exceptions_pkg.raise_message
306386       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_544');
306387 END EventClass_544;
306388 --
306389 
306390 ---------------------------------------
306391 --
306392 -- PRIVATE PROCEDURE
306393 --         insert_sources_545
306394 --
306395 ----------------------------------------
306396 --
306397 PROCEDURE insert_sources_545(
306398                                 p_target_ledger_id       IN NUMBER
306399                               , p_language               IN VARCHAR2
306400                               , p_sla_ledger_id          IN NUMBER
306401                               , p_pad_start_date         IN DATE
306402                               , p_pad_end_date           IN DATE
306403                          )
306404 IS
306405 
306406 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_WRITE_OFF_ALL';
306407 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
306408 p_apps_owner                   VARCHAR2(30);
306409 l_log_module                   VARCHAR2(240);
306410 BEGIN
306411 IF g_log_enabled THEN
306412       l_log_module := C_DEFAULT_MODULE||'.insert_sources_545';
306413 END IF;
306414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
306415 
306416       trace
306417          (p_msg      => 'BEGIN of insert_sources_545'
306418          ,p_level    => C_LEVEL_PROCEDURE
306419          ,p_module   => l_log_module);
306420 
306421 END IF;
306422 
306423 -- select APPS owner
306424 SELECT oracle_username
306425   INTO p_apps_owner
306426   FROM fnd_oracle_userid
306427  WHERE read_only_flag = 'U'
306428 ;
306429 
306430 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
306431       trace
306432          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
306433                         ' - p_language = '||p_language||
306434                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
306435                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
306436                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
306437                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
306438          ,p_level    => C_LEVEL_STATEMENT
306439          ,p_module   => l_log_module);
306440 END IF;
306441 
306442 
306443 --
306444 INSERT INTO xla_diag_sources --hdr2
306445 (
306446         event_id
306447       , ledger_id
306448       , sla_ledger_id
306449       , description_language
306450       , object_name
306451       , object_type_code
306452       , line_number
306453       , source_application_id
306454       , source_type_code
306455       , source_code
306456       , source_value
306457       , source_meaning
306458       , created_by
306459       , creation_date
306460       , last_update_date
306461       , last_updated_by
306462       , last_update_login
306463       , program_update_date
306464       , program_application_id
306465       , program_id
306466       , request_id
306467 )
306468 SELECT
306469         event_id
306470       , p_target_ledger_id
306471       , p_sla_ledger_id
306472       , p_language
306473       , object_name
306474       , object_type_code
306475       , line_number
306476       , source_application_id
306477       , source_type_code
306478       , source_code
306479       , SUBSTR(source_value ,1,1996)
306480       , SUBSTR(source_meaning ,1,200)
306481       , xla_environment_pkg.g_Usr_Id
306482       , TRUNC(SYSDATE)
306483       , TRUNC(SYSDATE)
306484       , xla_environment_pkg.g_Usr_Id
306485       , xla_environment_pkg.g_Login_Id
306486       , TRUNC(SYSDATE)
306487       , xla_environment_pkg.g_Prog_Appl_Id
306488       , xla_environment_pkg.g_Prog_Id
306489       , xla_environment_pkg.g_Req_Id
306490   FROM (
306491        SELECT xet.event_id                  event_id
306492             , 0                          line_number
306493             , CASE r
306494                WHEN 1 THEN 'CST_XLA_AWO_HEADERS_V' 
306495                 WHEN 2 THEN 'CST_XLA_AWO_HEADERS_V' 
306496                 WHEN 3 THEN 'CST_XLA_AWO_HEADERS_V' 
306497                 WHEN 4 THEN 'CST_XLA_AWO_HEADERS_V' 
306498                 WHEN 5 THEN 'CST_XLA_AWO_HEADERS_V' 
306499                 WHEN 6 THEN 'CST_XLA_AWO_HEADERS_V' 
306500                 
306501                ELSE null
306502               END                           object_name
306503             , CASE r
306504                 WHEN 1 THEN 'HEADER' 
306505                 WHEN 2 THEN 'HEADER' 
306506                 WHEN 3 THEN 'HEADER' 
306507                 WHEN 4 THEN 'HEADER' 
306508                 WHEN 5 THEN 'HEADER' 
306509                 WHEN 6 THEN 'HEADER' 
306510                 
306511                 ELSE null
306512               END                           object_type_code
306513             , CASE r
306514                 WHEN 1 THEN '707' 
306515                 WHEN 2 THEN '707' 
306516                 WHEN 3 THEN '707' 
306517                 WHEN 4 THEN '707' 
306518                 WHEN 5 THEN '707' 
306519                 WHEN 6 THEN '707' 
306520                 
306521                 ELSE null
306522               END                           source_application_id
306523             , 'S'             source_type_code
306524             , CASE r
306525                 WHEN 1 THEN 'WO_ACCRUAL_ACCOUNT_ID' 
306526                 WHEN 2 THEN 'WO_ERV_ACCOUNT_ID' 
306527                 WHEN 3 THEN 'WO_OFFSET_ACCOUNT_ID' 
306528                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
306529                 WHEN 5 THEN 'WRITE_OFF_ID' 
306530                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
306531                 
306532                 ELSE null
306533               END                           source_code
306534             , CASE r
306535                 WHEN 1 THEN TO_CHAR(h1.WO_ACCRUAL_ACCOUNT_ID)
306536                 WHEN 2 THEN TO_CHAR(h1.WO_ERV_ACCOUNT_ID)
306537                 WHEN 3 THEN TO_CHAR(h1.WO_OFFSET_ACCOUNT_ID)
306538                 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
306539                 WHEN 5 THEN TO_CHAR(h1.WRITE_OFF_ID)
306540                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
306541                 
306542                 ELSE null
306543               END                           source_value
306544             , CASE r
306545                 WHEN 4 THEN fvl85.meaning
306546                 WHEN 6 THEN fvl114.meaning
306547                 
306548                 ELSE null
306549               END               source_meaning
306550          FROM xla_events_gt     xet  
306551       , CST_XLA_AWO_HEADERS_V  h1
306552   , fnd_lookup_values    fvl85
306553   , fnd_lookup_values    fvl114
306554              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
306555          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
306556            AND xet.event_class_code = C_EVENT_CLASS_CODE
306557               AND h1.event_id = xet.event_id
306558    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
306559   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
306560   AND fvl85.view_application_id(+) = 700
306561   AND fvl85.language(+)            = USERENV('LANG')
306562      AND fvl114.lookup_type(+)         = 'YES_NO'
306563   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
306564   AND fvl114.view_application_id(+) = 0
306565   AND fvl114.language(+)            = USERENV('LANG')
306566   
306567 )
306568 ;
306569 --
306570 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
306571 
306572       trace
306573          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
306574          ,p_level    => C_LEVEL_STATEMENT
306575          ,p_module   => l_log_module);
306576 
306577 END IF;
306578 --
306579 
306580 
306581 
306582 --
306583 INSERT INTO xla_diag_sources  --line2
306584 (
306585         event_id
306586       , ledger_id
306587       , sla_ledger_id
306588       , description_language
306589       , object_name
306590       , object_type_code
306591       , line_number
306592       , source_application_id
306593       , source_type_code
306594       , source_code
306595       , source_value
306596       , source_meaning
306597       , created_by
306598       , creation_date
306599       , last_update_date
306600       , last_updated_by
306601       , last_update_login
306602       , program_update_date
306603       , program_application_id
306604       , program_id
306605       , request_id
306606 )
306607 SELECT  event_id
306608       , p_target_ledger_id
306609       , p_sla_ledger_id
306610       , p_language
306611       , object_name
306612       , object_type_code
306613       , line_number
306614       , source_application_id
306615       , source_type_code
306616       , source_code
306617       , SUBSTR(source_value,1,1996)
306618       , SUBSTR(source_meaning ,1,200)
306619       , xla_environment_pkg.g_Usr_Id
306620       , TRUNC(SYSDATE)
306621       , TRUNC(SYSDATE)
306622       , xla_environment_pkg.g_Usr_Id
306623       , xla_environment_pkg.g_Login_Id
306624       , TRUNC(SYSDATE)
306625       , xla_environment_pkg.g_Prog_Appl_Id
306626       , xla_environment_pkg.g_Prog_Id
306627       , xla_environment_pkg.g_Req_Id
306628   FROM (
306629        SELECT xet.event_id                  event_id
306630             , l2.line_number                 line_number
306631             , CASE r
306632                WHEN 1 THEN 'CST_XLA_AWO_LINES_V' 
306633                 WHEN 2 THEN 'CST_XLA_AWO_LINES_V' 
306634                 WHEN 3 THEN 'CST_XLA_AWO_LINES_V' 
306635                 WHEN 4 THEN 'CST_XLA_AWO_LINES_V' 
306636                 WHEN 5 THEN 'CST_XLA_AWO_LINES_V' 
306637                 WHEN 6 THEN 'CST_XLA_AWO_LINES_V' 
306638                 WHEN 7 THEN 'CST_XLA_AWO_LINES_V' 
306639                 
306640                ELSE null
306641               END                           object_name
306642             , CASE r
306643                 WHEN 1 THEN 'LINE' 
306644                 WHEN 2 THEN 'LINE' 
306645                 WHEN 3 THEN 'LINE' 
306646                 WHEN 4 THEN 'LINE' 
306647                 WHEN 5 THEN 'LINE' 
306648                 WHEN 6 THEN 'LINE' 
306649                 WHEN 7 THEN 'LINE' 
306650                 
306651                 ELSE null
306652               END                           object_type_code
306653             , CASE r
306654                 WHEN 1 THEN '707' 
306655                 WHEN 2 THEN '707' 
306656                 WHEN 3 THEN '707' 
306657                 WHEN 4 THEN '707' 
306658                 WHEN 5 THEN '707' 
306659                 WHEN 6 THEN '707' 
306660                 WHEN 7 THEN '707' 
306661                 
306662                 ELSE null
306663               END                           source_application_id
306664             , 'S'             source_type_code
306665             , CASE r
306666                 WHEN 1 THEN 'CURRENCY_CODE' 
306667                 WHEN 2 THEN 'ENTERED_AMOUNT' 
306668                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
306669                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
306670                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
306671                 WHEN 6 THEN 'ACCOUNTED_AMOUNT' 
306672                 WHEN 7 THEN 'LINE_NUMBER' 
306673                 
306674                 ELSE null
306675               END                           source_code
306676             , CASE r
306677                 WHEN 1 THEN TO_CHAR(l2.CURRENCY_CODE)
306678                 WHEN 2 THEN TO_CHAR(l2.ENTERED_AMOUNT)
306679                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
306680                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
306681                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
306682                 WHEN 6 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
306683                 WHEN 7 THEN TO_CHAR(l2.LINE_NUMBER)
306684                 
306685                 ELSE null
306686               END                           source_value
306687             , null              source_meaning
306688          FROM  xla_events_gt     xet  
306689         , CST_XLA_AWO_LINES_V  l2
306690             , (select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
306691         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
306692           AND xet.event_class_code = C_EVENT_CLASS_CODE
306693             AND l2.event_id          = xet.event_id
306694 
306695 )
306696 ;
306697 --
306698 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
306699 
306700       trace
306701          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
306702          ,p_level    => C_LEVEL_STATEMENT
306703          ,p_module   => l_log_module);
306704 
306705 END IF;
306706 
306707 
306708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
306709       trace
306710          (p_msg      => 'END of insert_sources_545'
306711          ,p_level    => C_LEVEL_PROCEDURE
306712          ,p_module   => l_log_module);
306713 END IF;
306714 EXCEPTION
306715   WHEN xla_exceptions_pkg.application_exception THEN
306716       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
306717             trace
306718                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
306719                ,p_level    => C_LEVEL_EXCEPTION
306720                ,p_module   => l_log_module);
306721       END IF;
306722       RAISE;
306723   WHEN OTHERS THEN
306724       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
306725             trace
306726                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
306727                ,p_level    => C_LEVEL_EXCEPTION
306728                ,p_module   => l_log_module);
306729        END IF;
306730        xla_exceptions_pkg.raise_message
306731            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_545');
306732 END insert_sources_545;
306733 --
306734 
306735 ---------------------------------------
306736 --
306737 -- PRIVATE FUNCTION
306738 --         EventClass_545
306739 --
306740 ----------------------------------------
306741 --
306742 FUNCTION EventClass_545
306743        (p_application_id         IN NUMBER
306744        ,p_base_ledger_id         IN NUMBER
306745        ,p_target_ledger_id       IN NUMBER
306746        ,p_language               IN VARCHAR2
306747        ,p_currency_code          IN VARCHAR2
306748        ,p_sla_ledger_id          IN NUMBER
306749        ,p_pad_start_date         IN DATE
306750        ,p_pad_end_date           IN DATE
306751        ,p_primary_ledger_id      IN NUMBER)
306752 RETURN BOOLEAN IS
306753 --
306754 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ACCRUAL_WRITE_OFF_ALL';
306755 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
306756 
306757 l_calculate_acctd_flag   VARCHAR2(1) :='N';
306758 l_calculate_g_l_flag     VARCHAR2(1) :='N';
306759 --
306760 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306761 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306762 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
306763 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
306764 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306765 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
306766 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
306767 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306768 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
306769 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
306770 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306771 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306772 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306773 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
306774 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
306775 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
306776 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
306777 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
306778 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
306779 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
306780 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
306781 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
306782 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
306783 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
306784 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
306785 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
306786 
306787 l_event_id                             NUMBER;
306788 l_previous_event_id                    NUMBER;
306789 l_first_event_id                       NUMBER;
306790 l_last_event_id                        NUMBER;
306791 
306792 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
306793 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
306794 --
306795 --
306796 l_result                    BOOLEAN := TRUE;
306797 l_rows                      NUMBER  := 1000;
306798 l_event_type_name           VARCHAR2(80) := 'All';
306799 l_event_class_name          VARCHAR2(80) := 'Accrual Write Off';
306800 l_description               VARCHAR2(4000);
306801 l_transaction_reversal      NUMBER;
306802 l_ae_header_id              NUMBER;
306803 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
306804 l_log_module                VARCHAR2(240);
306805 --
306806 l_acct_reversal_source      VARCHAR2(30);
306807 l_trx_reversal_source       VARCHAR2(30);
306808 
306809 l_continue_with_lines       BOOLEAN := TRUE;
306810 --
306811 l_acc_rev_gl_date_source    DATE;                      -- 4262811
306812 --
306813 type t_array_event_id is table of number index by binary_integer;
306814 
306815 l_rec_array_event                    t_rec_array_event;
306816 l_null_rec_array_event               t_rec_array_event;
306817 l_array_ae_header_id                 xla_number_array_type;
306818 l_actual_flag                        VARCHAR2(1) := NULL;
306819 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
306820 l_balance_type_code                  VARCHAR2(1) :=NULL;
306821 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
306822 
306823 --
306824 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
306825 --
306826 
306827 TYPE t_array_source_8 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ACCRUAL_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
306828 TYPE t_array_source_9 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ERV_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
306829 TYPE t_array_source_10 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_OFFSET_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
306830 TYPE t_array_source_85 IS TABLE OF CST_XLA_AWO_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
306831 TYPE t_array_source_99 IS TABLE OF CST_XLA_AWO_HEADERS_V.WRITE_OFF_ID%TYPE INDEX BY BINARY_INTEGER;
306832 TYPE t_array_source_114 IS TABLE OF CST_XLA_AWO_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
306833 
306834 TYPE t_array_source_88 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
306835 TYPE t_array_source_91 IS TABLE OF CST_XLA_AWO_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
306836 TYPE t_array_source_92 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
306837 TYPE t_array_source_93 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
306838 TYPE t_array_source_94 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
306839 TYPE t_array_source_95 IS TABLE OF CST_XLA_AWO_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
306840 TYPE t_array_source_98 IS TABLE OF CST_XLA_AWO_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
306841 
306842 l_array_source_8              t_array_source_8;
306843 l_array_source_9              t_array_source_9;
306844 l_array_source_10              t_array_source_10;
306845 l_array_source_85              t_array_source_85;
306846 l_array_source_85_meaning      t_array_lookup_meaning;
306847 l_array_source_99              t_array_source_99;
306848 l_array_source_114              t_array_source_114;
306849 l_array_source_114_meaning      t_array_lookup_meaning;
306850 
306851 l_array_source_88      t_array_source_88;
306852 l_array_source_91      t_array_source_91;
306853 l_array_source_92      t_array_source_92;
306854 l_array_source_93      t_array_source_93;
306855 l_array_source_94      t_array_source_94;
306856 l_array_source_95      t_array_source_95;
306857 l_array_source_98      t_array_source_98;
306858 
306859 --
306860 CURSOR header_cur
306861 IS
306862 SELECT /*+ leading(xet) cardinality(xet,1) */
306863 -- Event Class Code: ACCRUAL_WRITE_OFF
306864     xet.entity_id
306865    ,xet.legal_entity_id
306866    ,xet.entity_code
306867    ,xet.transaction_number
306868    ,xet.event_id
306869    ,xet.event_class_code
306870    ,xet.event_type_code
306871    ,xet.event_number
306872    ,xet.event_date
306873    ,xet.transaction_date
306874    ,xet.reference_num_1
306875    ,xet.reference_num_2
306876    ,xet.reference_num_3
306877    ,xet.reference_num_4
306878    ,xet.reference_char_1
306879    ,xet.reference_char_2
306880    ,xet.reference_char_3
306881    ,xet.reference_char_4
306882    ,xet.reference_date_1
306883    ,xet.reference_date_2
306884    ,xet.reference_date_3
306885    ,xet.reference_date_4
306886    ,xet.event_created_by
306887    ,xet.budgetary_control_flag 
306888   , h1.WO_ACCRUAL_ACCOUNT_ID    source_8
306889   , h1.WO_ERV_ACCOUNT_ID    source_9
306890   , h1.WO_OFFSET_ACCOUNT_ID    source_10
306891   , h1.DISTRIBUTION_TYPE    source_85
306892   , fvl85.meaning   source_85_meaning
306893   , h1.WRITE_OFF_ID    source_99
306894   , h1.TRANSFER_TO_GL_INDICATOR    source_114
306895   , fvl114.meaning   source_114_meaning
306896   FROM xla_events_gt     xet 
306897   , CST_XLA_AWO_HEADERS_V  h1
306898   , fnd_lookup_values    fvl85
306899   , fnd_lookup_values    fvl114
306900  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
306901    and xet.event_class_code = C_EVENT_CLASS_CODE
306902    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
306903    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
306904   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
306905   AND fvl85.view_application_id(+) = 700
306906   AND fvl85.language(+)            = USERENV('LANG')
306907      AND fvl114.lookup_type(+)         = 'YES_NO'
306908   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
306909   AND fvl114.view_application_id(+) = 0
306910   AND fvl114.language(+)            = USERENV('LANG')
306911   
306912  ORDER BY event_id
306913 ;
306914 
306915 
306916 --
306917 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
306918 IS
306919 SELECT  /*+ leading(xet) cardinality(xet,1) */
306920 -- Event Class Code: ACCRUAL_WRITE_OFF
306921     xet.entity_id
306922    ,xet.legal_entity_id
306923    ,xet.entity_code
306924    ,xet.transaction_number
306925    ,xet.event_id
306926    ,xet.event_class_code
306927    ,xet.event_type_code
306928    ,xet.event_number
306929    ,xet.event_date
306930    ,xet.transaction_date
306931    ,xet.reference_num_1
306932    ,xet.reference_num_2
306933    ,xet.reference_num_3
306934    ,xet.reference_num_4
306935    ,xet.reference_char_1
306936    ,xet.reference_char_2
306937    ,xet.reference_char_3
306938    ,xet.reference_char_4
306939    ,xet.reference_date_1
306940    ,xet.reference_date_2
306941    ,xet.reference_date_3
306942    ,xet.reference_date_4
306943    ,xet.event_created_by
306944    ,xet.budgetary_control_flag
306945  , l2.LINE_NUMBER  
306946   , l2.CURRENCY_CODE    source_88
306947   , l2.ENTERED_AMOUNT    source_91
306948   , l2.CURRENCY_CONVERSION_DATE    source_92
306949   , l2.CURRENCY_CONVERSION_RATE    source_93
306950   , l2.CURRENCY_CONVERSION_TYPE    source_94
306951   , l2.ACCOUNTED_AMOUNT    source_95
306952   , l2.LINE_NUMBER    source_98
306953   FROM xla_events_gt     xet 
306954   , CST_XLA_AWO_LINES_V  l2
306955  WHERE xet.event_id between x_first_event_id and x_last_event_id
306956    and xet.event_date between p_pad_start_date and p_pad_end_date
306957    and xet.event_class_code = C_EVENT_CLASS_CODE
306958    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
306959 ;
306960 
306961 --
306962 BEGIN
306963 IF g_log_enabled THEN
306964    l_log_module := C_DEFAULT_MODULE||'.EventClass_545';
306965 END IF;
306966 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
306967    trace
306968       (p_msg      => 'BEGIN of EventClass_545'
306969       ,p_level    => C_LEVEL_PROCEDURE
306970       ,p_module   => l_log_module);
306971 END IF;
306972 
306973 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
306974    trace
306975       (p_msg      => 'p_application_id = '||p_application_id||
306976                      ' - p_base_ledger_id = '||p_base_ledger_id||
306977                      ' - p_target_ledger_id  = '||p_target_ledger_id||
306978                      ' - p_language = '||p_language||
306979                      ' - p_currency_code = '||p_currency_code||
306980                      ' - p_sla_ledger_id = '||p_sla_ledger_id
306981       ,p_level    => C_LEVEL_STATEMENT
306982       ,p_module   => l_log_module);
306983 END IF;
306984 --
306985 -- initialze arrays
306986 --
306987 g_array_event.DELETE;
306988 l_rec_array_event := l_null_rec_array_event;
306989 --
306990 --------------------------------------
306991 -- 4262811 Initialze MPA Line Number
306992 --------------------------------------
306993 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
306994 
306995 --
306996 
306997 --
306998 OPEN header_cur;
306999 --
307000 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
307001    trace
307002    (p_msg      => 'SQL - FETCH header_cur'
307003    ,p_level    => C_LEVEL_STATEMENT
307004    ,p_module   => l_log_module);
307005 END IF;
307006 --
307007 LOOP
307008 FETCH header_cur BULK COLLECT INTO
307009         l_array_entity_id
307010       , l_array_legal_entity_id
307011       , l_array_entity_code
307012       , l_array_transaction_num
307013       , l_array_event_id
307014       , l_array_class_code
307015       , l_array_event_type
307016       , l_array_event_number
307017       , l_array_event_date
307018       , l_array_transaction_date
307019       , l_array_reference_num_1
307020       , l_array_reference_num_2
307021       , l_array_reference_num_3
307022       , l_array_reference_num_4
307023       , l_array_reference_char_1
307024       , l_array_reference_char_2
307025       , l_array_reference_char_3
307026       , l_array_reference_char_4
307027       , l_array_reference_date_1
307028       , l_array_reference_date_2
307029       , l_array_reference_date_3
307030       , l_array_reference_date_4
307031       , l_array_event_created_by
307032       , l_array_budgetary_control_flag 
307033       , l_array_source_8
307034       , l_array_source_9
307035       , l_array_source_10
307036       , l_array_source_85
307037       , l_array_source_85_meaning
307038       , l_array_source_99
307039       , l_array_source_114
307040       , l_array_source_114_meaning
307041       LIMIT l_rows;
307042 --
307043 IF (C_LEVEL_EVENT >= g_log_level) THEN
307044    trace
307045    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
307046    ,p_level    => C_LEVEL_EVENT
307047    ,p_module   => l_log_module);
307048 END IF;
307049 --
307050 EXIT WHEN l_array_entity_id.COUNT = 0;
307051 
307052 -- initialize arrays
307053 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
307054 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
307055 
307056 --
307057 -- Bug 4458708
307058 --
307059 XLA_AE_LINES_PKG.g_LineNumber := 0;
307060 
307061 
307062 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
307063 g_last_hdr_idx := l_array_event_id.LAST;
307064 --
307065 -- loop for the headers. Each iteration is for each header extract row
307066 -- fetched in header cursor
307067 --
307068 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
307069 
307070 --
307071 -- set event info as cache for other routines to refer event attributes
307072 --
307073 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
307074    (p_application_id           => p_application_id
307075    ,p_primary_ledger_id        => p_primary_ledger_id
307076    ,p_base_ledger_id           => p_base_ledger_id
307077    ,p_target_ledger_id         => p_target_ledger_id
307078    ,p_entity_id                => l_array_entity_id(hdr_idx)
307079    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
307080    ,p_entity_code              => l_array_entity_code(hdr_idx)
307081    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
307082    ,p_event_id                 => l_array_event_id(hdr_idx)
307083    ,p_event_class_code         => l_array_class_code(hdr_idx)
307084    ,p_event_type_code          => l_array_event_type(hdr_idx)
307085    ,p_event_number             => l_array_event_number(hdr_idx)
307086    ,p_event_date               => l_array_event_date(hdr_idx)
307087    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
307088    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
307089    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
307090    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
307091    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
307092    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
307093    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
307094    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
307095    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
307096    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
307097    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
307098    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
307099    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
307100    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
307101    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
307102 
307103 --
307104 -- set the status of entry to C_VALID (0)
307105 --
307106 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
307107 
307108 --
307109 -- initialize a row for ae header
307110 --
307111 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
307112 
307113 l_event_id := l_array_event_id(hdr_idx);
307114 
307115 --
307116 -- storing the hdr_idx for event. May be used by line cursor.
307117 --
307118 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
307119 
307120 --
307121 -- store sources from header extract. This can be improved to
307122 -- store only those sources from header extract that may be used in lines
307123 --
307124 
307125 g_array_event(l_event_id).array_value_num('source_8') := l_array_source_8(hdr_idx);
307126 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
307127 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
307128 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
307129 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
307130 g_array_event(l_event_id).array_value_num('source_99') := l_array_source_99(hdr_idx);
307131 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
307132 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
307133 
307134 --
307135 -- initilaize the status of ae headers for diffrent balance types
307136 -- the status is initialised to C_NOT_CREATED (2)
307137 --
307138 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
307139 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
307140 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
307141 
307142 --
307143 -- call api to validate and store accounting attributes for header
307144 --
307145 
307146 ------------------------------------------------------------
307147 -- Accrual Reversal : to get date for Standard Source (NONE)
307148 ------------------------------------------------------------
307149 l_acc_rev_gl_date_source := NULL;
307150 
307151      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
307152       l_rec_acct_attrs.array_date_value(1) := 
307153 xla_ae_sources_pkg.GetSystemSourceDate(
307154    p_source_code           => 'XLA_REFERENCE_DATE_1'
307155  , p_source_type_code      => 'Y'
307156  , p_source_application_id =>  602
307157 );
307158      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
307159       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
307160 
307161 
307162 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
307163 
307164 XLA_AE_HEADER_PKG.SetJeCategoryName;
307165 
307166 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
307167 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
307168 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
307169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
307170 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
307171 
307172 
307173 -- No header level analytical criteria
307174 
307175 --
307176 --accounting attribute enhancement, bug 3612931
307177 --
307178 l_trx_reversal_source := SUBSTR(NULL, 1,30);
307179 
307180 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
307181    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
307182 
307183    xla_accounting_err_pkg.build_message
307184       (p_appli_s_name            => 'XLA'
307185       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
307186       ,p_token_1                 => 'ACCT_ATTR_NAME'
307187       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
307188       ,p_token_2                 => 'PRODUCT_NAME'
307189       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
307190       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
307191       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
307192       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
307193 
307194 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
307195    --
307196    -- following sets the accounting attributes needed to reverse
307197    -- accounting for a distributeion
307198    --
307199    xla_ae_lines_pkg.SetTrxReversalAttrs
307200       (p_event_id              => l_event_id
307201       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
307202       ,p_trx_reversal_source   => l_trx_reversal_source);
307203 
307204 END IF;
307205 
307206 
307207 ----------------------------------------------------------------
307208 -- 4262811 -  update the header statuses to invalid in need be
307209 ----------------------------------------------------------------
307210 --
307211 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
307212 
307213 
307214   -----------------------------------------------
307215   -- No accrual reversal for the event class/type
307216   -----------------------------------------------
307217 ----------------------------------------------------------------
307218 
307219 --
307220 -- this ends the header loop iteration for one bulk fetch
307221 --
307222 END LOOP;
307223 
307224 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
307225 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
307226 
307227 --
307228 -- insert dummy rows into lines gt table that were created due to
307229 -- transaction reversals
307230 --
307231 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
307232    l_result := XLA_AE_LINES_PKG.InsertLines;
307233 END IF;
307234 
307235 --
307236 -- reset the temp_line_num for each set of events fetched from header
307237 -- cursor rather than doing it for each new event in line cursor
307238 -- Bug 3939231
307239 --
307240 xla_ae_lines_pkg.g_temp_line_num := 0;
307241 
307242 
307243 
307244 --
307245 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
307246 --
307247 --
307248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
307249 
307250       trace
307251          (p_msg      => 'SQL - FETCH line_cur'
307252          ,p_level    => C_LEVEL_STATEMENT
307253          ,p_module   => l_log_module);
307254 
307255 END IF;
307256 --
307257 --
307258 LOOP
307259   --
307260   FETCH line_cur BULK COLLECT INTO
307261         l_array_entity_id
307262       , l_array_legal_entity_id
307263       , l_array_entity_code
307264       , l_array_transaction_num
307265       , l_array_event_id
307266       , l_array_class_code
307267       , l_array_event_type
307268       , l_array_event_number
307269       , l_array_event_date
307270       , l_array_transaction_date
307271       , l_array_reference_num_1
307272       , l_array_reference_num_2
307273       , l_array_reference_num_3
307274       , l_array_reference_num_4
307275       , l_array_reference_char_1
307276       , l_array_reference_char_2
307277       , l_array_reference_char_3
307278       , l_array_reference_char_4
307279       , l_array_reference_date_1
307280       , l_array_reference_date_2
307281       , l_array_reference_date_3
307282       , l_array_reference_date_4
307283       , l_array_event_created_by
307284       , l_array_budgetary_control_flag
307285       , l_array_extract_line_num 
307286       , l_array_source_88
307287       , l_array_source_91
307288       , l_array_source_92
307289       , l_array_source_93
307290       , l_array_source_94
307291       , l_array_source_95
307292       , l_array_source_98
307293       LIMIT l_rows;
307294 
307295   --
307296   IF (C_LEVEL_EVENT >= g_log_level) THEN
307297             trace
307298                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
307299                ,p_level    => C_LEVEL_EVENT
307300                ,p_module   => l_log_module);
307301   END IF;
307302   --
307303   EXIT WHEN l_array_entity_id.count = 0;
307304 
307305   XLA_AE_LINES_PKG.g_rec_lines := null;
307306 
307307 --
307308 -- Bug 4458708
307309 --
307310 XLA_AE_LINES_PKG.g_LineNumber := 0;
307311 --
307312 --
307313 
307314 FOR Idx IN 1..l_array_event_id.count LOOP
307315    --
307316    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
307317    --
307318    l_event_id := l_array_event_id(idx);  -- 5648433
307319 
307320    --
307321    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
307322    --
307323 
307324    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
307325              (g_array_event(l_event_id).array_value_num('header_index'))
307326          ,'N'
307327          ) <> 'Y'
307328    THEN
307329       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
307330          trace
307331             (p_msg      => 'Trancaction revesal option is not Y '
307332             ,p_level    => C_LEVEL_STATEMENT
307333             ,p_module   => l_log_module);
307334       END IF;
307335 
307336 --
307337 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
307338 --
307339 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
307340 --
307341 -- set event info as cache for other routines to refer event attributes
307342 --
307343 
307344 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
307345    l_previous_event_id := l_event_id;
307346 
307347    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
307348       (p_application_id           => p_application_id
307349       ,p_primary_ledger_id        => p_primary_ledger_id
307350       ,p_base_ledger_id           => p_base_ledger_id
307351       ,p_target_ledger_id         => p_target_ledger_id
307352       ,p_entity_id                => l_array_entity_id(Idx)
307353       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
307354       ,p_entity_code              => l_array_entity_code(Idx)
307355       ,p_transaction_num          => l_array_transaction_num(Idx)
307356       ,p_event_id                 => l_array_event_id(Idx)
307357       ,p_event_class_code         => l_array_class_code(Idx)
307358       ,p_event_type_code          => l_array_event_type(Idx)
307359       ,p_event_number             => l_array_event_number(Idx)
307360       ,p_event_date               => l_array_event_date(Idx)
307361       ,p_transaction_date         => l_array_transaction_date(Idx)
307362       ,p_reference_num_1          => l_array_reference_num_1(Idx)
307363       ,p_reference_num_2          => l_array_reference_num_2(Idx)
307364       ,p_reference_num_3          => l_array_reference_num_3(Idx)
307365       ,p_reference_num_4          => l_array_reference_num_4(Idx)
307366       ,p_reference_char_1         => l_array_reference_char_1(Idx)
307367       ,p_reference_char_2         => l_array_reference_char_2(Idx)
307368       ,p_reference_char_3         => l_array_reference_char_3(Idx)
307369       ,p_reference_char_4         => l_array_reference_char_4(Idx)
307370       ,p_reference_date_1         => l_array_reference_date_1(Idx)
307371       ,p_reference_date_2         => l_array_reference_date_2(Idx)
307372       ,p_reference_date_3         => l_array_reference_date_3(Idx)
307373       ,p_reference_date_4         => l_array_reference_date_4(Idx)
307374       ,p_event_created_by         => l_array_event_created_by(Idx)
307375       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
307376        --
307377 END IF;
307378 
307379 
307380 
307381 --
307382 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
307383 
307384 l_acct_reversal_source := SUBSTR(NULL, 1,30);
307385 
307386 IF l_continue_with_lines THEN
307387    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
307388       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
307389 
307390       xla_accounting_err_pkg.build_message
307391          (p_appli_s_name            => 'XLA'
307392          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
307393          ,p_token_1                 => 'LINE_NUMBER'
307394          ,p_value_1                 => l_array_extract_line_num(Idx)
307395          ,p_token_2                 => 'PRODUCT_NAME'
307396          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
307397          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
307398          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
307399          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
307400 
307401    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
307402       --
307403       -- following sets the accounting attributes needed to reverse
307404       -- accounting for a distributeion
307405       --
307406 
307407       --
307408       -- 5217187
307409       --
307410       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
307411       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
307412                                        g_array_event(l_event_id).array_value_num('header_index'));
307413       --
307414       --
307415 
307416       -- No reversal code generated
307417 
307418       xla_ae_lines_pkg.SetAcctReversalAttrs
307419          (p_event_id             => l_event_id
307420          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
307421          ,p_calculate_acctd_flag => l_calculate_acctd_flag
307422          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
307423    END IF;
307424 
307425    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
307426        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
307427 
307428 --
307429 AcctLineType_39 (
307430  p_application_id  => p_application_id
307431  ,p_event_id     => l_event_id
307432  ,p_calculate_acctd_flag => l_calculate_acctd_flag
307433  ,p_calculate_g_l_flag => l_calculate_g_l_flag
307434  ,p_actual_flag => l_actual_flag
307435  ,p_balance_type_code => l_balance_type_code
307436  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
307437  
307438  , p_source_8 => g_array_event(l_event_id).array_value_num('source_8')
307439  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
307440  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
307441  , p_source_88 => l_array_source_88(Idx)
307442  , p_source_91 => l_array_source_91(Idx)
307443  , p_source_92 => l_array_source_92(Idx)
307444  , p_source_93 => l_array_source_93(Idx)
307445  , p_source_94 => l_array_source_94(Idx)
307446  , p_source_95 => l_array_source_95(Idx)
307447  , p_source_98 => l_array_source_98(Idx)
307448  , p_source_99 => g_array_event(l_event_id).array_value_num('source_99')
307449  );
307450 If(l_balance_type_code = 'A') THEN
307451   l_actual_gain_loss_ref := l_gain_or_loss_ref;
307452 END IF;
307453 
307454 --
307455 
307456 
307457 --
307458 AcctLineType_358 (
307459  p_application_id  => p_application_id
307460  ,p_event_id     => l_event_id
307461  ,p_calculate_acctd_flag => l_calculate_acctd_flag
307462  ,p_calculate_g_l_flag => l_calculate_g_l_flag
307463  ,p_actual_flag => l_actual_flag
307464  ,p_balance_type_code => l_balance_type_code
307465  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
307466  
307467  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
307468  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
307469  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
307470  , p_source_88 => l_array_source_88(Idx)
307471  , p_source_91 => l_array_source_91(Idx)
307472  , p_source_92 => l_array_source_92(Idx)
307473  , p_source_93 => l_array_source_93(Idx)
307474  , p_source_94 => l_array_source_94(Idx)
307475  , p_source_95 => l_array_source_95(Idx)
307476  , p_source_98 => l_array_source_98(Idx)
307477  , p_source_99 => g_array_event(l_event_id).array_value_num('source_99')
307478  );
307479 If(l_balance_type_code = 'A') THEN
307480   l_actual_gain_loss_ref := l_gain_or_loss_ref;
307481 END IF;
307482 
307483 --
307484 
307485 
307486 --
307487 AcctLineType_542 (
307488  p_application_id  => p_application_id
307489  ,p_event_id     => l_event_id
307490  ,p_calculate_acctd_flag => l_calculate_acctd_flag
307491  ,p_calculate_g_l_flag => l_calculate_g_l_flag
307492  ,p_actual_flag => l_actual_flag
307493  ,p_balance_type_code => l_balance_type_code
307494  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
307495  
307496  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
307497  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
307498  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
307499  , p_source_88 => l_array_source_88(Idx)
307500  , p_source_91 => l_array_source_91(Idx)
307501  , p_source_92 => l_array_source_92(Idx)
307502  , p_source_93 => l_array_source_93(Idx)
307503  , p_source_94 => l_array_source_94(Idx)
307504  , p_source_95 => l_array_source_95(Idx)
307505  , p_source_98 => l_array_source_98(Idx)
307506  , p_source_99 => g_array_event(l_event_id).array_value_num('source_99')
307507  );
307508 If(l_balance_type_code = 'A') THEN
307509   l_actual_gain_loss_ref := l_gain_or_loss_ref;
307510 END IF;
307511 
307512 --
307513 
307514 
307515 --
307516 AcctLineType_543 (
307517  p_application_id  => p_application_id
307518  ,p_event_id     => l_event_id
307519  ,p_calculate_acctd_flag => l_calculate_acctd_flag
307520  ,p_calculate_g_l_flag => l_calculate_g_l_flag
307521  ,p_actual_flag => l_actual_flag
307522  ,p_balance_type_code => l_balance_type_code
307523  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
307524  
307525  , p_source_8 => g_array_event(l_event_id).array_value_num('source_8')
307526  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
307527  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
307528  , p_source_88 => l_array_source_88(Idx)
307529  , p_source_91 => l_array_source_91(Idx)
307530  , p_source_92 => l_array_source_92(Idx)
307531  , p_source_93 => l_array_source_93(Idx)
307532  , p_source_94 => l_array_source_94(Idx)
307533  , p_source_95 => l_array_source_95(Idx)
307534  , p_source_98 => l_array_source_98(Idx)
307535  , p_source_99 => g_array_event(l_event_id).array_value_num('source_99')
307536  );
307537 If(l_balance_type_code = 'A') THEN
307538   l_actual_gain_loss_ref := l_gain_or_loss_ref;
307539 END IF;
307540 
307541 --
307542 
307543       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
307544       -- or secondary ledger that has different currency with primary
307545       -- or alc that is calculated by sla
307546       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
307547             (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'))
307548 
307549 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
307550 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
307551           AND (l_actual_flag = 'A')) THEN
307552         XLA_AE_LINES_PKG.CreateGainOrLossLines(
307553           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
307554          ,p_application_id   => p_application_id
307555          ,p_amb_context_code => 'DEFAULT'
307556          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
307557          ,p_event_class_code => C_EVENT_CLASS_CODE
307558          ,p_event_type_code  => C_EVENT_TYPE_CODE
307559          
307560          ,p_gain_ccid        => -1
307561          ,p_loss_ccid        => -1
307562 
307563          ,p_actual_flag      => l_actual_flag
307564          ,p_enc_flag         => null
307565          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
307566          ,p_enc_g_l_ref      => null
307567          );
307568       END IF;
307569    END IF;
307570 END IF;
307571 
307572    ELSE
307573       --
307574       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
307575       --
307576       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
307577          trace
307578             (p_msg      => 'Trancaction revesal option is Y'
307579             ,p_level    => C_LEVEL_STATEMENT
307580             ,p_module   => l_log_module);
307581       END IF;
307582    END IF;
307583 
307584 END LOOP;
307585 l_result := XLA_AE_LINES_PKG.InsertLines ;
307586 end loop;
307587 close line_cur;
307588 
307589 
307590 --
307591 -- insert headers into xla_ae_headers_gt table
307592 --
307593 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
307594 
307595 -- insert into errors table here.
307596 
307597 END LOOP;
307598 
307599 --
307600 -- 4865292
307601 --
307602 -- Compare g_hdr_extract_count with event count in
307603 -- CreateHeadersAndLines.
307604 --
307605 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
307606 
307607 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
307608    trace (p_msg     => '# rows extracted from header extract objects '
307609                     || ' (running total): '
307610                     || g_hdr_extract_count
307611          ,p_level   => C_LEVEL_STATEMENT
307612          ,p_module  => l_log_module);
307613 END IF;
307614 
307615 CLOSE header_cur;
307616 --
307617 
307618 --
307619 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
307620    trace
307621       (p_msg      => 'END of EventClass_545'
307622       ,p_level    => C_LEVEL_PROCEDURE
307623       ,p_module   => l_log_module);
307624 END IF;
307625 --
307626 RETURN l_result;
307627 EXCEPTION
307628 WHEN xla_exceptions_pkg.application_exception THEN
307629    
307630 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
307631 
307632    
307633 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
307634 
307635    RAISE;
307636 
307637 WHEN NO_DATA_FOUND THEN
307638 
307639 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
307640 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
307641 
307642 FOR header_record IN header_cur
307643 LOOP
307644     l_array_header_events(header_record.event_id) := header_record.event_id;
307645 END LOOP;
307646 
307647 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
307648 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
307649 
307650 fnd_file.put_line(fnd_file.LOG, '                    ');
307651 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
307652 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
307653 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
307654 
307655 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
307656 LOOP
307657 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
307658 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
307659         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
307660 	END IF;
307661 END LOOP;
307662 
307663 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
307664 fnd_file.put_line(fnd_file.LOG, '                    ');
307665 
307666 
307667 xla_exceptions_pkg.raise_message
307668       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_545');
307669 
307670 
307671 WHEN OTHERS THEN
307672    xla_exceptions_pkg.raise_message
307673       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_545');
307674 END EventClass_545;
307675 --
307676 
307677 ---------------------------------------
307678 --
307679 -- PRIVATE PROCEDURE
307680 --         insert_sources_546
307681 --
307682 ----------------------------------------
307683 --
307684 PROCEDURE insert_sources_546(
307685                                 p_target_ledger_id       IN NUMBER
307686                               , p_language               IN VARCHAR2
307687                               , p_sla_ledger_id          IN NUMBER
307688                               , p_pad_start_date         IN DATE
307689                               , p_pad_end_date           IN DATE
307690                          )
307691 IS
307692 
307693 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'AVG_COST_UPD';
307694 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
307695 p_apps_owner                   VARCHAR2(30);
307696 l_log_module                   VARCHAR2(240);
307697 BEGIN
307698 IF g_log_enabled THEN
307699       l_log_module := C_DEFAULT_MODULE||'.insert_sources_546';
307700 END IF;
307701 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
307702 
307703       trace
307704          (p_msg      => 'BEGIN of insert_sources_546'
307705          ,p_level    => C_LEVEL_PROCEDURE
307706          ,p_module   => l_log_module);
307707 
307708 END IF;
307709 
307710 -- select APPS owner
307711 SELECT oracle_username
307712   INTO p_apps_owner
307713   FROM fnd_oracle_userid
307714  WHERE read_only_flag = 'U'
307715 ;
307716 
307717 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
307718       trace
307719          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
307720                         ' - p_language = '||p_language||
307721                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
307722                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
307723                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
307724                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
307725          ,p_level    => C_LEVEL_STATEMENT
307726          ,p_module   => l_log_module);
307727 END IF;
307728 
307729 
307730 --
307731 INSERT INTO xla_diag_sources --hdr1
307732 (
307733         event_id
307734       , ledger_id
307735       , sla_ledger_id
307736       , description_language
307737       , object_name
307738       , object_type_code
307739       , line_number
307740       , source_application_id
307741       , source_type_code
307742       , source_code
307743       , source_value
307744       , source_meaning
307745       , created_by
307746       , creation_date
307747       , last_update_date
307748       , last_updated_by
307749       , last_update_login
307750       , program_update_date
307751       , program_application_id
307752       , program_id
307753       , request_id
307754 )
307755 SELECT
307756         event_id
307757       , p_target_ledger_id
307758       , p_sla_ledger_id
307759       , p_language
307760       , object_name
307761       , object_type_code
307762       , line_number
307763       , source_application_id
307764       , source_type_code
307765       , source_code
307766       , SUBSTR(source_value ,1,1996)
307767       , SUBSTR(source_meaning,1,200)
307768       , xla_environment_pkg.g_Usr_Id
307769       , TRUNC(SYSDATE)
307770       , TRUNC(SYSDATE)
307771       , xla_environment_pkg.g_Usr_Id
307772       , xla_environment_pkg.g_Login_Id
307773       , TRUNC(SYSDATE)
307774       , xla_environment_pkg.g_Prog_Appl_Id
307775       , xla_environment_pkg.g_Prog_Id
307776       , xla_environment_pkg.g_Req_Id
307777   FROM (
307778        SELECT xet.event_id                  event_id
307779             , 0                             line_number
307780             , CASE r
307781                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
307782                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
307783                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
307784                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
307785                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
307786                 WHEN 6 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
307787                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
307788                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
307789                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
307790                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
307791                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
307792                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
307793                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
307794                 
307795                ELSE null
307796               END                           object_name
307797             , CASE r
307798                 WHEN 1 THEN 'HEADER' 
307799                 WHEN 2 THEN 'HEADER' 
307800                 WHEN 3 THEN 'HEADER' 
307801                 WHEN 4 THEN 'HEADER' 
307802                 WHEN 5 THEN 'HEADER' 
307803                 WHEN 6 THEN 'HEADER' 
307804                 WHEN 7 THEN 'HEADER' 
307805                 WHEN 8 THEN 'HEADER' 
307806                 WHEN 9 THEN 'HEADER' 
307807                 WHEN 10 THEN 'HEADER' 
307808                 WHEN 11 THEN 'HEADER' 
307809                 WHEN 12 THEN 'HEADER' 
307810                 WHEN 13 THEN 'HEADER' 
307811                 
307812                 ELSE null
307813               END                           object_type_code
307814             , CASE r
307815                 WHEN 1 THEN '707' 
307816                 WHEN 2 THEN '707' 
307817                 WHEN 3 THEN '707' 
307818                 WHEN 4 THEN '707' 
307819                 WHEN 5 THEN '707' 
307820                 WHEN 6 THEN '707' 
307821                 WHEN 7 THEN '707' 
307822                 WHEN 8 THEN '707' 
307823                 WHEN 9 THEN '707' 
307824                 WHEN 10 THEN '707' 
307825                 WHEN 11 THEN '707' 
307826                 WHEN 12 THEN '707' 
307827                 WHEN 13 THEN '707' 
307828                 
307829                 ELSE null
307830               END                           source_application_id
307831             , 'S'             source_type_code
307832             , CASE r
307833                 WHEN 1 THEN 'TRANSACTION_ID' 
307834                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
307835                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
307836                 WHEN 4 THEN 'TRANSACTION_UOM' 
307837                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
307838                 WHEN 6 THEN 'PRIMARY_COST_METHOD' 
307839                 WHEN 7 THEN 'PLA_MATERIAL_ACCOUNT' 
307840                 WHEN 8 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
307841                 WHEN 9 THEN 'PLA_RESOURCE_ACCOUNT' 
307842                 WHEN 10 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
307843                 WHEN 11 THEN 'PLA_OVERHEAD_ACCOUNT' 
307844                 WHEN 12 THEN 'DISTRIBUTION_TYPE' 
307845                 WHEN 13 THEN 'TRANSFER_TO_GL_INDICATOR' 
307846                 
307847                 ELSE null
307848               END                           source_code
307849             , CASE r
307850                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
307851                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
307852                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
307853                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
307854                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
307855                 WHEN 6 THEN TO_CHAR(h3.PRIMARY_COST_METHOD)
307856                 WHEN 7 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
307857                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
307858                 WHEN 9 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
307859                 WHEN 10 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
307860                 WHEN 11 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
307861                 WHEN 12 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
307862                 WHEN 13 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
307863                 
307864                 ELSE null
307865               END                           source_value
307866             , CASE r
307867                 WHEN 6 THEN fvl39.meaning
307868                 WHEN 12 THEN fvl85.meaning
307869                 WHEN 13 THEN fvl114.meaning
307870                 
307871                 ELSE null
307872               END               source_meaning
307873         FROM xla_events_gt     xet  
307874       , CST_XLA_INV_HEADERS_V  h1
307875       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
307876       , CST_XLA_INV_REF_V  h4
307877       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
307878       , CST_XLA_INV_TXN_TYPES_REF_V  h6
307879       , CST_XLA_PLA_CATEGORY_REF_V  h7
307880   , fnd_lookup_values    fvl39
307881   , fnd_lookup_values    fvl85
307882   , fnd_lookup_values    fvl114
307883             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
307884        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
307885          AND xet.event_type_code = C_EVENT_TYPE_CODE
307886             AND h1.event_id = xet.event_id
307887  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h7.pla_cat_organization_id  (+) = h1.organization_id 
307888 and h7.pla_cat_item_id          (+) = h1.inventory_item_id 
307889 and h7.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
307890   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
307891   AND fvl39.view_application_id(+) = 700
307892   AND fvl39.language(+)            = USERENV('LANG')
307893      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
307894   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
307895   AND fvl85.view_application_id(+) = 700
307896   AND fvl85.language(+)            = USERENV('LANG')
307897      AND fvl114.lookup_type(+)         = 'YES_NO'
307898   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
307899   AND fvl114.view_application_id(+) = 0
307900   AND fvl114.language(+)            = USERENV('LANG')
307901   
307902 )
307903 ;
307904 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
307905 
307906       trace
307907          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
307908          ,p_level    => C_LEVEL_STATEMENT
307909          ,p_module   => l_log_module);
307910 
307911 END IF;
307912 --
307913 
307914 
307915 
307916 --
307917 INSERT INTO xla_diag_sources --line1
307918 (
307919         event_id
307920       , ledger_id
307921       , sla_ledger_id
307922       , description_language
307923       , object_name
307924       , object_type_code
307925       , line_number
307926       , source_application_id
307927       , source_type_code
307928       , source_code
307929       , source_value
307930       , source_meaning
307931       , created_by
307932       , creation_date
307933       , last_update_date
307934       , last_updated_by
307935       , last_update_login
307936       , program_update_date
307937       , program_application_id
307938       , program_id
307939       , request_id
307940 )
307941 SELECT  event_id
307942       , p_target_ledger_id
307943       , p_sla_ledger_id
307944       , p_language
307945       , object_name
307946       , object_type_code
307947       , line_number
307948       , source_application_id
307949       , source_type_code
307950       , source_code
307951       , SUBSTR(source_value,1,1996)
307952       , SUBSTR(source_meaning,1,200)
307953       , xla_environment_pkg.g_Usr_Id
307954       , TRUNC(SYSDATE)
307955       , TRUNC(SYSDATE)
307956       , xla_environment_pkg.g_Usr_Id
307957       , xla_environment_pkg.g_Login_Id
307958       , TRUNC(SYSDATE)
307959       , xla_environment_pkg.g_Prog_Appl_Id
307960       , xla_environment_pkg.g_Prog_Id
307961       , xla_environment_pkg.g_Req_Id
307962   FROM (
307963        SELECT xet.event_id                  event_id
307964             , l2.line_number                 line_number
307965             , CASE r
307966                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
307967                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
307968                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
307969                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
307970                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
307971                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
307972                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
307973                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
307974                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
307975                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
307976                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
307977                 
307978                ELSE null
307979               END                           object_name
307980             , CASE r
307981                 WHEN 1 THEN 'LINE' 
307982                 WHEN 2 THEN 'LINE' 
307983                 WHEN 3 THEN 'LINE' 
307984                 WHEN 4 THEN 'LINE' 
307985                 WHEN 5 THEN 'LINE' 
307986                 WHEN 6 THEN 'LINE' 
307987                 WHEN 7 THEN 'LINE' 
307988                 WHEN 8 THEN 'LINE' 
307989                 WHEN 9 THEN 'LINE' 
307990                 WHEN 10 THEN 'LINE' 
307991                 WHEN 11 THEN 'LINE' 
307992                 
307993                 ELSE null
307994               END                           object_type_code
307995             , CASE r
307996                 WHEN 1 THEN '707' 
307997                 WHEN 2 THEN '707' 
307998                 WHEN 3 THEN '707' 
307999                 WHEN 4 THEN '707' 
308000                 WHEN 5 THEN '707' 
308001                 WHEN 6 THEN '707' 
308002                 WHEN 7 THEN '707' 
308003                 WHEN 8 THEN '707' 
308004                 WHEN 9 THEN '707' 
308005                 WHEN 10 THEN '707' 
308006                 WHEN 11 THEN '707' 
308007                 
308008                 ELSE null
308009               END                           source_application_id
308010             , 'S'             source_type_code
308011             , CASE r
308012                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
308013                 WHEN 2 THEN 'COST_ELEMENT_ID' 
308014                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
308015                 WHEN 4 THEN 'CURRENCY_CODE' 
308016                 WHEN 5 THEN 'ENTERED_AMOUNT' 
308017                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
308018                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
308019                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
308020                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
308021                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
308022                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
308023                 
308024                 ELSE null
308025               END                           source_code
308026             , CASE r
308027                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
308028                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
308029                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
308030                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
308031                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
308032                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
308033                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
308034                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
308035                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
308036                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
308037                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
308038                 
308039                 ELSE null
308040               END                           source_value
308041             , CASE r
308042                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
308043                           1009615
308044                          ,TO_CHAR(l2.COST_ELEMENT_ID)
308045                          ,'COST_ELEMENT_ID'
308046                          ,'S'
308047                          ,707)
308048                 
308049                 ELSE null
308050               END               source_meaning
308051          FROM  xla_events_gt     xet  
308052         , CST_XLA_INV_LINES_V  l2
308053             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
308054         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
308055           AND xet.event_type_code = C_EVENT_TYPE_CODE
308056             AND l2.event_id          = xet.event_id
308057 
308058 )
308059 ;
308060 --
308061 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
308062 
308063       trace
308064          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
308065          ,p_level    => C_LEVEL_STATEMENT
308066          ,p_module   => l_log_module);
308067 
308068 END IF;
308069 
308070 
308071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
308072       trace
308073          (p_msg      => 'END of insert_sources_546'
308074          ,p_level    => C_LEVEL_PROCEDURE
308075          ,p_module   => l_log_module);
308076 END IF;
308077 EXCEPTION
308078   WHEN xla_exceptions_pkg.application_exception THEN
308079       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
308080             trace
308081                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
308082                ,p_level    => C_LEVEL_EXCEPTION
308083                ,p_module   => l_log_module);
308084       END IF;
308085       RAISE;
308086   WHEN OTHERS THEN
308087       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
308088             trace
308089                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
308090                ,p_level    => C_LEVEL_EXCEPTION
308091                ,p_module   => l_log_module);
308092        END IF;
308093        xla_exceptions_pkg.raise_message
308094            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_546');
308095 END insert_sources_546;
308096 --
308097 
308098 ---------------------------------------
308099 --
308100 -- PRIVATE FUNCTION
308101 --         EventType_546
308102 --
308103 ----------------------------------------
308104 --
308105 FUNCTION EventType_546
308106        (p_application_id         IN NUMBER
308107        ,p_base_ledger_id         IN NUMBER
308108        ,p_target_ledger_id       IN NUMBER
308109        ,p_language               IN VARCHAR2
308110        ,p_currency_code          IN VARCHAR2
308111        ,p_sla_ledger_id          IN NUMBER
308112        ,p_pad_start_date         IN DATE
308113        ,p_pad_end_date           IN DATE
308114        ,p_primary_ledger_id      IN NUMBER)
308115 RETURN BOOLEAN IS
308116 --
308117 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'AVG_COST_UPD';
308118 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
308119 
308120 l_calculate_acctd_flag   VARCHAR2(1) :='N';
308121 l_calculate_g_l_flag     VARCHAR2(1) :='N';
308122 --
308123 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308124 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308125 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
308126 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
308127 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308128 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
308129 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
308130 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308131 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
308132 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
308133 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308134 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308135 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308136 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
308137 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
308138 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
308139 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
308140 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
308141 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
308142 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
308143 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
308144 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
308145 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
308146 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
308147 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
308148 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
308149 
308150 l_event_id                             NUMBER;
308151 l_previous_event_id                    NUMBER;
308152 l_first_event_id                       NUMBER;
308153 l_last_event_id                        NUMBER;
308154 
308155 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
308156 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
308157 --
308158 --
308159 l_result                    BOOLEAN := TRUE;
308160 l_rows                      NUMBER  := 1000;
308161 l_event_type_name           VARCHAR2(80) := 'Average Cost Update';
308162 l_event_class_name          VARCHAR2(80) := 'Material Cost Update';
308163 l_description               VARCHAR2(4000);
308164 l_transaction_reversal      NUMBER;
308165 l_ae_header_id              NUMBER;
308166 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
308167 l_log_module                VARCHAR2(240);
308168 --
308169 l_acct_reversal_source      VARCHAR2(30);
308170 l_trx_reversal_source       VARCHAR2(30);
308171 
308172 l_continue_with_lines       BOOLEAN := TRUE;
308173 --
308174 l_acc_rev_gl_date_source    DATE;                      -- 4262811
308175 --
308176 type t_array_event_id is table of number index by binary_integer;
308177 
308178 l_rec_array_event                    t_rec_array_event;
308179 l_null_rec_array_event               t_rec_array_event;
308180 l_array_ae_header_id                 xla_number_array_type;
308181 l_actual_flag                        VARCHAR2(1) := NULL;
308182 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
308183 l_balance_type_code                  VARCHAR2(1) :=NULL;
308184 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
308185 
308186 --
308187 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
308188 --
308189 
308190 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
308191 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
308192 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
308193 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
308194 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
308195 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
308196 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
308197 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
308198 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
308199 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
308200 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
308201 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
308202 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
308203 
308204 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
308205 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
308206 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
308207 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
308208 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
308209 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
308210 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
308211 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
308212 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
308213 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
308214 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
308215 
308216 l_array_source_1              t_array_source_1;
308217 l_array_source_2              t_array_source_2;
308218 l_array_source_3              t_array_source_3;
308219 l_array_source_4              t_array_source_4;
308220 l_array_source_5              t_array_source_5;
308221 l_array_source_39              t_array_source_39;
308222 l_array_source_39_meaning      t_array_lookup_meaning;
308223 l_array_source_41              t_array_source_41;
308224 l_array_source_42              t_array_source_42;
308225 l_array_source_43              t_array_source_43;
308226 l_array_source_44              t_array_source_44;
308227 l_array_source_45              t_array_source_45;
308228 l_array_source_85              t_array_source_85;
308229 l_array_source_85_meaning      t_array_lookup_meaning;
308230 l_array_source_114              t_array_source_114;
308231 l_array_source_114_meaning      t_array_lookup_meaning;
308232 
308233 l_array_source_11      t_array_source_11;
308234 l_array_source_15      t_array_source_15;
308235 l_array_source_84      t_array_source_84;
308236 l_array_source_88      t_array_source_88;
308237 l_array_source_91      t_array_source_91;
308238 l_array_source_92      t_array_source_92;
308239 l_array_source_93      t_array_source_93;
308240 l_array_source_94      t_array_source_94;
308241 l_array_source_95      t_array_source_95;
308242 l_array_source_97      t_array_source_97;
308243 l_array_source_108      t_array_source_108;
308244 
308245 --
308246 CURSOR header_cur
308247 IS
308248 SELECT /*+ leading(xet) cardinality(xet,1) */
308249 -- Event Type Code: AVG_COST_UPD
308250 -- Event Class Code: MTL_COST_UPD
308251     xet.entity_id
308252   , xet.legal_entity_id
308253   , xet.entity_code
308254   , xet.transaction_number
308255   , xet.event_id
308256   , xet.event_class_code
308257   , xet.event_type_code
308258   , xet.event_number
308259   , xet.event_date
308260   , xet.transaction_date
308261   , xet.reference_num_1
308262   , xet.reference_num_2
308263   , xet.reference_num_3
308264   , xet.reference_num_4
308265   , xet.reference_char_1
308266   , xet.reference_char_2
308267   , xet.reference_char_3
308268   , xet.reference_char_4
308269   , xet.reference_date_1
308270   , xet.reference_date_2
308271   , xet.reference_date_3
308272   , xet.reference_date_4
308273   , xet.event_created_by
308274   , xet.budgetary_control_flag 
308275   , h1.TRANSACTION_ID    source_1
308276   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
308277   , h4.TRANSACTION_QUANTITY    source_3
308278   , h4.TRANSACTION_UOM    source_4
308279   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
308280   , h3.PRIMARY_COST_METHOD    source_39
308281   , fvl39.meaning   source_39_meaning
308282   , h7.PLA_MATERIAL_ACCOUNT    source_41
308283   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
308284   , h7.PLA_RESOURCE_ACCOUNT    source_43
308285   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
308286   , h7.PLA_OVERHEAD_ACCOUNT    source_45
308287   , h1.DISTRIBUTION_TYPE    source_85
308288   , fvl85.meaning   source_85_meaning
308289   , h1.TRANSFER_TO_GL_INDICATOR    source_114
308290   , fvl114.meaning   source_114_meaning
308291   FROM xla_events_gt     xet 
308292   , CST_XLA_INV_HEADERS_V  h1
308293   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
308294   , CST_XLA_INV_REF_V  h4
308295   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
308296   , CST_XLA_INV_TXN_TYPES_REF_V  h6
308297   , CST_XLA_PLA_CATEGORY_REF_V  h7
308298   , fnd_lookup_values    fvl39
308299   , fnd_lookup_values    fvl85
308300   , fnd_lookup_values    fvl114
308301  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
308302    and xet.event_type_code = C_EVENT_TYPE_CODE
308303    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
308304  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
308305 AND h7.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
308306 AND h7.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
308307   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
308308   AND fvl39.view_application_id(+) = 700
308309   AND fvl39.language(+)            = USERENV('LANG')
308310      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
308311   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
308312   AND fvl85.view_application_id(+) = 700
308313   AND fvl85.language(+)            = USERENV('LANG')
308314      AND fvl114.lookup_type(+)         = 'YES_NO'
308315   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
308316   AND fvl114.view_application_id(+) = 0
308317   AND fvl114.language(+)            = USERENV('LANG')
308318   
308319  ORDER BY event_id
308320 ;
308321 
308322 
308323 --
308324 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
308325 IS
308326 SELECT /*+ leading(xet) cardinality(xet,1) */
308327 -- Event Type Code: AVG_COST_UPD
308328 -- Event Class Code: MTL_COST_UPD
308329     xet.entity_id
308330    ,xet.legal_entity_id
308331    ,xet.entity_code
308332    ,xet.transaction_number
308333    ,xet.event_id
308334    ,xet.event_class_code
308335    ,xet.event_type_code
308336    ,xet.event_number
308337    ,xet.event_date
308338    ,xet.transaction_date
308339    ,xet.reference_num_1
308340    ,xet.reference_num_2
308341    ,xet.reference_num_3
308342    ,xet.reference_num_4
308343    ,xet.reference_char_1
308344    ,xet.reference_char_2
308345    ,xet.reference_char_3
308346    ,xet.reference_char_4
308347    ,xet.reference_date_1
308348    ,xet.reference_date_2
308349    ,xet.reference_date_3
308350    ,xet.reference_date_4
308351    ,xet.event_created_by
308352    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
308353   , l2.CODE_COMBINATION_ID    source_11
308354   , l2.COST_ELEMENT_ID    source_15
308355   , l2.DISTRIBUTION_IDENTIFIER    source_84
308356   , l2.CURRENCY_CODE    source_88
308357   , l2.ENTERED_AMOUNT    source_91
308358   , l2.CURRENCY_CONVERSION_DATE    source_92
308359   , l2.CURRENCY_CONVERSION_RATE    source_93
308360   , l2.CURRENCY_CONVERSION_TYPE    source_94
308361   , l2.ACCOUNTED_AMOUNT    source_95
308362   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
308363   , l2.L_ORGANIZATION_CODE    source_108
308364   FROM xla_events_gt     xet 
308365   , CST_XLA_INV_LINES_V  l2
308366  WHERE xet.event_id between x_first_event_id and x_last_event_id
308367    and xet.event_date between p_pad_start_date and p_pad_end_date
308368    and xet.event_type_code = C_EVENT_TYPE_CODE
308369    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
308370 ;
308371 
308372 --
308373 BEGIN
308374 IF g_log_enabled THEN
308375    l_log_module := C_DEFAULT_MODULE||'.EventType_546';
308376 END IF;
308377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
308378    trace
308379       (p_msg      => 'BEGIN of EventType_546'
308380       ,p_level    => C_LEVEL_PROCEDURE
308381       ,p_module   => l_log_module);
308382 END IF;
308383 
308384 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
308385    trace
308386       (p_msg      => 'p_application_id = '||p_application_id||
308387                      ' - p_base_ledger_id = '||p_base_ledger_id||
308388                      ' - p_target_ledger_id  = '||p_target_ledger_id||
308389                      ' - p_language = '||p_language||
308390                      ' - p_currency_code = '||p_currency_code||
308391                      ' - p_sla_ledger_id = '||p_sla_ledger_id
308392       ,p_level    => C_LEVEL_STATEMENT
308393       ,p_module   => l_log_module);
308394 END IF;
308395 --
308396 -- initialze arrays
308397 --
308398 g_array_event.DELETE;
308399 l_rec_array_event := l_null_rec_array_event;
308400 --
308401 --------------------------------------
308402 -- 4262811 Initialze MPA Line Number
308403 --------------------------------------
308404 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
308405 
308406 --
308407 
308408 --
308409 OPEN header_cur;
308410 --
308411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
308412    trace
308413    (p_msg      => 'SQL - FETCH header_cur'
308414    ,p_level    => C_LEVEL_STATEMENT
308415    ,p_module   => l_log_module);
308416 END IF;
308417 --
308418 LOOP
308419 FETCH header_cur BULK COLLECT INTO
308420         l_array_entity_id
308421       , l_array_legal_entity_id
308422       , l_array_entity_code
308423       , l_array_transaction_num
308424       , l_array_event_id
308425       , l_array_class_code
308426       , l_array_event_type
308427       , l_array_event_number
308428       , l_array_event_date
308429       , l_array_transaction_date
308430       , l_array_reference_num_1
308431       , l_array_reference_num_2
308432       , l_array_reference_num_3
308433       , l_array_reference_num_4
308434       , l_array_reference_char_1
308435       , l_array_reference_char_2
308436       , l_array_reference_char_3
308437       , l_array_reference_char_4
308438       , l_array_reference_date_1
308439       , l_array_reference_date_2
308440       , l_array_reference_date_3
308441       , l_array_reference_date_4
308442       , l_array_event_created_by
308443       , l_array_budgetary_control_flag 
308444       , l_array_source_1
308445       , l_array_source_2
308446       , l_array_source_3
308447       , l_array_source_4
308448       , l_array_source_5
308449       , l_array_source_39
308450       , l_array_source_39_meaning
308451       , l_array_source_41
308452       , l_array_source_42
308453       , l_array_source_43
308454       , l_array_source_44
308455       , l_array_source_45
308456       , l_array_source_85
308457       , l_array_source_85_meaning
308458       , l_array_source_114
308459       , l_array_source_114_meaning
308460       LIMIT l_rows;
308461 --
308462 IF (C_LEVEL_EVENT >= g_log_level) THEN
308463    trace
308464    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
308465    ,p_level    => C_LEVEL_EVENT
308466    ,p_module   => l_log_module);
308467 END IF;
308468 --
308469 EXIT WHEN l_array_entity_id.COUNT = 0;
308470 
308471 -- initialize arrays
308472 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
308473 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
308474 
308475 --
308476 -- Bug 4458708
308477 --
308478 XLA_AE_LINES_PKG.g_LineNumber := 0;
308479 
308480 
308481 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
308482 g_last_hdr_idx := l_array_event_id.LAST;
308483 --
308484 -- loop for the headers. Each iteration is for each header extract row
308485 -- fetched in header cursor
308486 --
308487 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
308488 
308489 --
308490 -- set event info as cache for other routines to refer event attributes
308491 --
308492 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
308493    (p_application_id           => p_application_id
308494    ,p_primary_ledger_id        => p_primary_ledger_id
308495    ,p_base_ledger_id           => p_base_ledger_id
308496    ,p_target_ledger_id         => p_target_ledger_id
308497    ,p_entity_id                => l_array_entity_id(hdr_idx)
308498    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
308499    ,p_entity_code              => l_array_entity_code(hdr_idx)
308500    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
308501    ,p_event_id                 => l_array_event_id(hdr_idx)
308502    ,p_event_class_code         => l_array_class_code(hdr_idx)
308503    ,p_event_type_code          => l_array_event_type(hdr_idx)
308504    ,p_event_number             => l_array_event_number(hdr_idx)
308505    ,p_event_date               => l_array_event_date(hdr_idx)
308506    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
308507    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
308508    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
308509    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
308510    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
308511    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
308512    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
308513    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
308514    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
308515    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
308516    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
308517    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
308518    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
308519    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
308520    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
308521 
308522 --
308523 -- set the status of entry to C_VALID (0)
308524 --
308525 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
308526 
308527 --
308528 -- initialize a row for ae header
308529 --
308530 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
308531 
308532 l_event_id := l_array_event_id(hdr_idx);
308533 
308534 --
308535 -- storing the hdr_idx for event. May be used by line cursor.
308536 --
308537 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
308538 
308539 --
308540 -- store sources from header extract. This can be improved to
308541 -- store only those sources from header extract that may be used in lines
308542 --
308543 
308544 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
308545 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
308546 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
308547 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
308548 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
308549 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
308550 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
308551 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
308552 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
308553 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
308554 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
308555 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
308556 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
308557 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
308558 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
308559 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
308560 
308561 --
308562 -- initilaize the status of ae headers for diffrent balance types
308563 -- the status is initialised to C_NOT_CREATED (2)
308564 --
308565 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
308566 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
308567 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
308568 
308569 --
308570 -- call api to validate and store accounting attributes for header
308571 --
308572 
308573 ------------------------------------------------------------
308574 -- Accrual Reversal : to get date for Standard Source (NONE)
308575 ------------------------------------------------------------
308576 l_acc_rev_gl_date_source := NULL;
308577 
308578      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
308579       l_rec_acct_attrs.array_date_value(1) := 
308580 xla_ae_sources_pkg.GetSystemSourceDate(
308581    p_source_code           => 'XLA_REFERENCE_DATE_1'
308582  , p_source_type_code      => 'Y'
308583  , p_source_application_id =>  602
308584 );
308585      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
308586       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
308587 
308588 
308589 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
308590 
308591 XLA_AE_HEADER_PKG.SetJeCategoryName;
308592 
308593 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
308594 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
308595 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
308596 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
308597 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
308598 
308599 
308600 --
308601 xla_ae_header_pkg.SetHdrDescription(
308602    p_description => Description_1 (
308603    p_application_id => p_application_id 
308604  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
308605  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
308606  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
308607  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
308608  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
308609    )
308610 );
308611 --
308612 
308613 -- No header level analytical criteria
308614 
308615 --
308616 --accounting attribute enhancement, bug 3612931
308617 --
308618 l_trx_reversal_source := SUBSTR(NULL, 1,30);
308619 
308620 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
308621    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
308622 
308623    xla_accounting_err_pkg.build_message
308624       (p_appli_s_name            => 'XLA'
308625       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
308626       ,p_token_1                 => 'ACCT_ATTR_NAME'
308627       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
308628       ,p_token_2                 => 'PRODUCT_NAME'
308629       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
308630       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
308631       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
308632       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
308633 
308634 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
308635    --
308636    -- following sets the accounting attributes needed to reverse
308637    -- accounting for a distributeion
308638    --
308639    xla_ae_lines_pkg.SetTrxReversalAttrs
308640       (p_event_id              => l_event_id
308641       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
308642       ,p_trx_reversal_source   => l_trx_reversal_source);
308643 
308644 END IF;
308645 
308646 
308647 ----------------------------------------------------------------
308648 -- 4262811 -  update the header statuses to invalid in need be
308649 ----------------------------------------------------------------
308650 --
308651 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
308652 
308653 
308654   -----------------------------------------------
308655   -- No accrual reversal for the event class/type
308656   -----------------------------------------------
308657 ----------------------------------------------------------------
308658 
308659 --
308660 -- this ends the header loop iteration for one bulk fetch
308661 --
308662 END LOOP;
308663 
308664 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
308665 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
308666 
308667 --
308668 -- insert dummy rows into lines gt table that were created due to
308669 -- transaction reversals
308670 --
308671 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
308672    l_result := XLA_AE_LINES_PKG.InsertLines;
308673 END IF;
308674 
308675 --
308676 -- reset the temp_line_num for each set of events fetched from header
308677 -- cursor rather than doing it for each new event in line cursor
308678 -- Bug 3939231
308679 --
308680 xla_ae_lines_pkg.g_temp_line_num := 0;
308681 
308682 
308683 
308684 --
308685 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
308686 --
308687 --
308688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
308689 
308690       trace
308691          (p_msg      => 'SQL - FETCH line_cur'
308692          ,p_level    => C_LEVEL_STATEMENT
308693          ,p_module   => l_log_module);
308694 
308695 END IF;
308696 --
308697 --
308698 LOOP
308699   --
308700   FETCH line_cur BULK COLLECT INTO
308701         l_array_entity_id
308702       , l_array_legal_entity_id
308703       , l_array_entity_code
308704       , l_array_transaction_num
308705       , l_array_event_id
308706       , l_array_class_code
308707       , l_array_event_type
308708       , l_array_event_number
308709       , l_array_event_date
308710       , l_array_transaction_date
308711       , l_array_reference_num_1
308712       , l_array_reference_num_2
308713       , l_array_reference_num_3
308714       , l_array_reference_num_4
308715       , l_array_reference_char_1
308716       , l_array_reference_char_2
308717       , l_array_reference_char_3
308718       , l_array_reference_char_4
308719       , l_array_reference_date_1
308720       , l_array_reference_date_2
308721       , l_array_reference_date_3
308722       , l_array_reference_date_4
308723       , l_array_event_created_by
308724       , l_array_budgetary_control_flag
308725       , l_array_extract_line_num 
308726       , l_array_source_11
308727       , l_array_source_15
308728       , l_array_source_84
308729       , l_array_source_88
308730       , l_array_source_91
308731       , l_array_source_92
308732       , l_array_source_93
308733       , l_array_source_94
308734       , l_array_source_95
308735       , l_array_source_97
308736       , l_array_source_108
308737       LIMIT l_rows;
308738 
308739   --
308740   IF (C_LEVEL_EVENT >= g_log_level) THEN
308741             trace
308742                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
308743                ,p_level    => C_LEVEL_EVENT
308744                ,p_module   => l_log_module);
308745   END IF;
308746   --
308747   EXIT WHEN l_array_entity_id.count = 0;
308748 
308749   XLA_AE_LINES_PKG.g_rec_lines := null;
308750 
308751 --
308752 -- Bug 4458708
308753 --
308754 XLA_AE_LINES_PKG.g_LineNumber := 0;
308755 --
308756 --
308757 
308758 FOR Idx IN 1..l_array_event_id.count LOOP
308759    --
308760    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
308761    --
308762    l_event_id := l_array_event_id(idx);  -- 5648433
308763 
308764    --
308765    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
308766    --
308767 
308768    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
308769              (g_array_event(l_event_id).array_value_num('header_index'))
308770          ,'N'
308771          ) <> 'Y'
308772    THEN
308773       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
308774          trace
308775             (p_msg      => 'Trancaction revesal option is not Y '
308776             ,p_level    => C_LEVEL_STATEMENT
308777             ,p_module   => l_log_module);
308778       END IF;
308779 
308780 --
308781 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
308782 --
308783 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
308784 --
308785 -- set event info as cache for other routines to refer event attributes
308786 --
308787 
308788 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
308789    l_previous_event_id := l_event_id;
308790 
308791    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
308792       (p_application_id           => p_application_id
308793       ,p_primary_ledger_id        => p_primary_ledger_id
308794       ,p_base_ledger_id           => p_base_ledger_id
308795       ,p_target_ledger_id         => p_target_ledger_id
308796       ,p_entity_id                => l_array_entity_id(Idx)
308797       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
308798       ,p_entity_code              => l_array_entity_code(Idx)
308799       ,p_transaction_num          => l_array_transaction_num(Idx)
308800       ,p_event_id                 => l_array_event_id(Idx)
308801       ,p_event_class_code         => l_array_class_code(Idx)
308802       ,p_event_type_code          => l_array_event_type(Idx)
308803       ,p_event_number             => l_array_event_number(Idx)
308804       ,p_event_date               => l_array_event_date(Idx)
308805       ,p_transaction_date         => l_array_transaction_date(Idx)
308806       ,p_reference_num_1          => l_array_reference_num_1(Idx)
308807       ,p_reference_num_2          => l_array_reference_num_2(Idx)
308808       ,p_reference_num_3          => l_array_reference_num_3(Idx)
308809       ,p_reference_num_4          => l_array_reference_num_4(Idx)
308810       ,p_reference_char_1         => l_array_reference_char_1(Idx)
308811       ,p_reference_char_2         => l_array_reference_char_2(Idx)
308812       ,p_reference_char_3         => l_array_reference_char_3(Idx)
308813       ,p_reference_char_4         => l_array_reference_char_4(Idx)
308814       ,p_reference_date_1         => l_array_reference_date_1(Idx)
308815       ,p_reference_date_2         => l_array_reference_date_2(Idx)
308816       ,p_reference_date_3         => l_array_reference_date_3(Idx)
308817       ,p_reference_date_4         => l_array_reference_date_4(Idx)
308818       ,p_event_created_by         => l_array_event_created_by(Idx)
308819       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
308820        --
308821 END IF;
308822 
308823 
308824 
308825 --
308826 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
308827 
308828 l_acct_reversal_source := SUBSTR(NULL, 1,30);
308829 
308830 IF l_continue_with_lines THEN
308831    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
308832       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
308833 
308834       xla_accounting_err_pkg.build_message
308835          (p_appli_s_name            => 'XLA'
308836          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
308837          ,p_token_1                 => 'LINE_NUMBER'
308838          ,p_value_1                 => l_array_extract_line_num(Idx)
308839          ,p_token_2                 => 'PRODUCT_NAME'
308840          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
308841          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
308842          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
308843          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
308844 
308845    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
308846       --
308847       -- following sets the accounting attributes needed to reverse
308848       -- accounting for a distributeion
308849       --
308850 
308851       --
308852       -- 5217187
308853       --
308854       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
308855       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
308856                                        g_array_event(l_event_id).array_value_num('header_index'));
308857       --
308858       --
308859 
308860       -- No reversal code generated
308861 
308862       xla_ae_lines_pkg.SetAcctReversalAttrs
308863          (p_event_id             => l_event_id
308864          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
308865          ,p_calculate_acctd_flag => l_calculate_acctd_flag
308866          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
308867    END IF;
308868 
308869    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
308870        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
308871 
308872 --
308873 AcctLineType_70 (
308874  p_application_id  => p_application_id
308875  ,p_event_id     => l_event_id
308876  ,p_calculate_acctd_flag => l_calculate_acctd_flag
308877  ,p_calculate_g_l_flag => l_calculate_g_l_flag
308878  ,p_actual_flag => l_actual_flag
308879  ,p_balance_type_code => l_balance_type_code
308880  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
308881  
308882  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
308883  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
308884  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
308885  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
308886  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
308887  , p_source_11 => l_array_source_11(Idx)
308888  , p_source_84 => l_array_source_84(Idx)
308889  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
308890  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
308891  , p_source_88 => l_array_source_88(Idx)
308892  , p_source_91 => l_array_source_91(Idx)
308893  , p_source_92 => l_array_source_92(Idx)
308894  , p_source_93 => l_array_source_93(Idx)
308895  , p_source_94 => l_array_source_94(Idx)
308896  , p_source_95 => l_array_source_95(Idx)
308897  , p_source_97 => l_array_source_97(Idx)
308898  );
308899 If(l_balance_type_code = 'A') THEN
308900   l_actual_gain_loss_ref := l_gain_or_loss_ref;
308901 END IF;
308902 
308903 --
308904 
308905 
308906 --
308907 AcctLineType_91 (
308908  p_application_id  => p_application_id
308909  ,p_event_id     => l_event_id
308910  ,p_calculate_acctd_flag => l_calculate_acctd_flag
308911  ,p_calculate_g_l_flag => l_calculate_g_l_flag
308912  ,p_actual_flag => l_actual_flag
308913  ,p_balance_type_code => l_balance_type_code
308914  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
308915  
308916  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
308917  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
308918  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
308919  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
308920  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
308921  , p_source_11 => l_array_source_11(Idx)
308922  , p_source_84 => l_array_source_84(Idx)
308923  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
308924  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
308925  , p_source_88 => l_array_source_88(Idx)
308926  , p_source_91 => l_array_source_91(Idx)
308927  , p_source_92 => l_array_source_92(Idx)
308928  , p_source_93 => l_array_source_93(Idx)
308929  , p_source_94 => l_array_source_94(Idx)
308930  , p_source_95 => l_array_source_95(Idx)
308931  , p_source_97 => l_array_source_97(Idx)
308932  );
308933 If(l_balance_type_code = 'A') THEN
308934   l_actual_gain_loss_ref := l_gain_or_loss_ref;
308935 END IF;
308936 
308937 --
308938 
308939 
308940 --
308941 AcctLineType_126 (
308942  p_application_id  => p_application_id
308943  ,p_event_id     => l_event_id
308944  ,p_calculate_acctd_flag => l_calculate_acctd_flag
308945  ,p_calculate_g_l_flag => l_calculate_g_l_flag
308946  ,p_actual_flag => l_actual_flag
308947  ,p_balance_type_code => l_balance_type_code
308948  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
308949  
308950  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
308951  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
308952  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
308953  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
308954  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
308955  , p_source_11 => l_array_source_11(Idx)
308956  , p_source_84 => l_array_source_84(Idx)
308957  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
308958  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
308959  , p_source_88 => l_array_source_88(Idx)
308960  , p_source_91 => l_array_source_91(Idx)
308961  , p_source_92 => l_array_source_92(Idx)
308962  , p_source_93 => l_array_source_93(Idx)
308963  , p_source_94 => l_array_source_94(Idx)
308964  , p_source_95 => l_array_source_95(Idx)
308965  , p_source_97 => l_array_source_97(Idx)
308966  );
308967 If(l_balance_type_code = 'A') THEN
308968   l_actual_gain_loss_ref := l_gain_or_loss_ref;
308969 END IF;
308970 
308971 --
308972 
308973 
308974 --
308975 AcctLineType_229 (
308976  p_application_id  => p_application_id
308977  ,p_event_id     => l_event_id
308978  ,p_calculate_acctd_flag => l_calculate_acctd_flag
308979  ,p_calculate_g_l_flag => l_calculate_g_l_flag
308980  ,p_actual_flag => l_actual_flag
308981  ,p_balance_type_code => l_balance_type_code
308982  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
308983  
308984  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
308985  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
308986  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
308987  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
308988  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
308989  , p_source_11 => l_array_source_11(Idx)
308990  , p_source_15 => l_array_source_15(Idx)
308991  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
308992  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
308993  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
308994  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
308995  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
308996  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
308997  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
308998  , p_source_84 => l_array_source_84(Idx)
308999  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
309000  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
309001  , p_source_88 => l_array_source_88(Idx)
309002  , p_source_91 => l_array_source_91(Idx)
309003  , p_source_92 => l_array_source_92(Idx)
309004  , p_source_93 => l_array_source_93(Idx)
309005  , p_source_94 => l_array_source_94(Idx)
309006  , p_source_95 => l_array_source_95(Idx)
309007  , p_source_97 => l_array_source_97(Idx)
309008  );
309009 If(l_balance_type_code = 'A') THEN
309010   l_actual_gain_loss_ref := l_gain_or_loss_ref;
309011 END IF;
309012 
309013 --
309014 
309015 
309016 --
309017 AcctLineType_279 (
309018  p_application_id  => p_application_id
309019  ,p_event_id     => l_event_id
309020  ,p_calculate_acctd_flag => l_calculate_acctd_flag
309021  ,p_calculate_g_l_flag => l_calculate_g_l_flag
309022  ,p_actual_flag => l_actual_flag
309023  ,p_balance_type_code => l_balance_type_code
309024  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
309025  
309026  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
309027  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
309028  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
309029  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
309030  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
309031  , p_source_15 => l_array_source_15(Idx)
309032  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
309033  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
309034  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
309035  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
309036  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
309037  , p_source_84 => l_array_source_84(Idx)
309038  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
309039  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
309040  , p_source_88 => l_array_source_88(Idx)
309041  , p_source_91 => l_array_source_91(Idx)
309042  , p_source_92 => l_array_source_92(Idx)
309043  , p_source_93 => l_array_source_93(Idx)
309044  , p_source_94 => l_array_source_94(Idx)
309045  , p_source_95 => l_array_source_95(Idx)
309046  , p_source_97 => l_array_source_97(Idx)
309047  , p_source_108 => l_array_source_108(Idx)
309048  );
309049 If(l_balance_type_code = 'A') THEN
309050   l_actual_gain_loss_ref := l_gain_or_loss_ref;
309051 END IF;
309052 
309053 --
309054 
309055       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
309056       -- or secondary ledger that has different currency with primary
309057       -- or alc that is calculated by sla
309058       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
309059             (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'))
309060 
309061 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
309062 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
309063           AND (l_actual_flag = 'A')) THEN
309064         XLA_AE_LINES_PKG.CreateGainOrLossLines(
309065           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
309066          ,p_application_id   => p_application_id
309067          ,p_amb_context_code => 'DEFAULT'
309068          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
309069          ,p_event_class_code => C_EVENT_CLASS_CODE
309070          ,p_event_type_code  => C_EVENT_TYPE_CODE
309071          
309072          ,p_gain_ccid        => -1
309073          ,p_loss_ccid        => -1
309074 
309075          ,p_actual_flag      => l_actual_flag
309076          ,p_enc_flag         => null
309077          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
309078          ,p_enc_g_l_ref      => null
309079          );
309080       END IF;
309081    END IF;
309082 END IF;
309083 
309084    ELSE
309085       --
309086       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
309087       --
309088       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
309089          trace
309090             (p_msg      => 'Trancaction revesal option is Y'
309091             ,p_level    => C_LEVEL_STATEMENT
309092             ,p_module   => l_log_module);
309093       END IF;
309094    END IF;
309095 
309096 END LOOP;
309097 l_result := XLA_AE_LINES_PKG.InsertLines ;
309098 end loop;
309099 close line_cur;
309100 
309101 
309102 --
309103 -- insert headers into xla_ae_headers_gt table
309104 --
309105 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
309106 
309107 -- insert into errors table here.
309108 
309109 END LOOP;
309110 
309111 --
309112 -- 4865292
309113 --
309114 -- Compare g_hdr_extract_count with event count in
309115 -- CreateHeadersAndLines.
309116 --
309117 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
309118 
309119 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
309120    trace (p_msg     => '# rows extracted from header extract objects '
309121                     || ' (running total): '
309122                     || g_hdr_extract_count
309123          ,p_level   => C_LEVEL_STATEMENT
309124          ,p_module  => l_log_module);
309125 END IF;
309126 
309127 CLOSE header_cur;
309128 --
309129 
309130 --
309131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
309132    trace
309133       (p_msg      => 'END of EventType_546'
309134       ,p_level    => C_LEVEL_PROCEDURE
309135       ,p_module   => l_log_module);
309136 END IF;
309137 --
309138 RETURN l_result;
309139 EXCEPTION
309140 WHEN xla_exceptions_pkg.application_exception THEN
309141    
309142 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
309143 
309144    
309145 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
309146 
309147    RAISE;
309148 
309149 WHEN NO_DATA_FOUND THEN
309150 
309151 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
309152 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
309153 
309154 FOR header_record IN header_cur
309155 LOOP
309156     l_array_header_events(header_record.event_id) := header_record.event_id;
309157 END LOOP;
309158 
309159 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
309160 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
309161 
309162 fnd_file.put_line(fnd_file.LOG, '                    ');
309163 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
309164 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
309165 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
309166 
309167 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
309168 LOOP
309169 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
309170 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
309171         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
309172 	END IF;
309173 END LOOP;
309174 
309175 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
309176 fnd_file.put_line(fnd_file.LOG, '                    ');
309177 
309178 
309179 xla_exceptions_pkg.raise_message
309180       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_546');
309181 
309182 
309183 WHEN OTHERS THEN
309184    xla_exceptions_pkg.raise_message
309185       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_546');
309186 END EventType_546;
309187 --
309188 
309189 ---------------------------------------
309190 --
309191 -- PRIVATE PROCEDURE
309192 --         insert_sources_547
309193 --
309194 ----------------------------------------
309195 --
309196 PROCEDURE insert_sources_547(
309197                                 p_target_ledger_id       IN NUMBER
309198                               , p_language               IN VARCHAR2
309199                               , p_sla_ledger_id          IN NUMBER
309200                               , p_pad_start_date         IN DATE
309201                               , p_pad_end_date           IN DATE
309202                          )
309203 IS
309204 
309205 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION';
309206 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
309207 p_apps_owner                   VARCHAR2(30);
309208 l_log_module                   VARCHAR2(240);
309209 BEGIN
309210 IF g_log_enabled THEN
309211       l_log_module := C_DEFAULT_MODULE||'.insert_sources_547';
309212 END IF;
309213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
309214 
309215       trace
309216          (p_msg      => 'BEGIN of insert_sources_547'
309217          ,p_level    => C_LEVEL_PROCEDURE
309218          ,p_module   => l_log_module);
309219 
309220 END IF;
309221 
309222 -- select APPS owner
309223 SELECT oracle_username
309224   INTO p_apps_owner
309225   FROM fnd_oracle_userid
309226  WHERE read_only_flag = 'U'
309227 ;
309228 
309229 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
309230       trace
309231          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
309232                         ' - p_language = '||p_language||
309233                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
309234                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
309235                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
309236                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
309237          ,p_level    => C_LEVEL_STATEMENT
309238          ,p_module   => l_log_module);
309239 END IF;
309240 
309241 
309242 --
309243 INSERT INTO xla_diag_sources --hdr1
309244 (
309245         event_id
309246       , ledger_id
309247       , sla_ledger_id
309248       , description_language
309249       , object_name
309250       , object_type_code
309251       , line_number
309252       , source_application_id
309253       , source_type_code
309254       , source_code
309255       , source_value
309256       , source_meaning
309257       , created_by
309258       , creation_date
309259       , last_update_date
309260       , last_updated_by
309261       , last_update_login
309262       , program_update_date
309263       , program_application_id
309264       , program_id
309265       , request_id
309266 )
309267 SELECT
309268         event_id
309269       , p_target_ledger_id
309270       , p_sla_ledger_id
309271       , p_language
309272       , object_name
309273       , object_type_code
309274       , line_number
309275       , source_application_id
309276       , source_type_code
309277       , source_code
309278       , SUBSTR(source_value ,1,1996)
309279       , SUBSTR(source_meaning,1,200)
309280       , xla_environment_pkg.g_Usr_Id
309281       , TRUNC(SYSDATE)
309282       , TRUNC(SYSDATE)
309283       , xla_environment_pkg.g_Usr_Id
309284       , xla_environment_pkg.g_Login_Id
309285       , TRUNC(SYSDATE)
309286       , xla_environment_pkg.g_Prog_Appl_Id
309287       , xla_environment_pkg.g_Prog_Id
309288       , xla_environment_pkg.g_Req_Id
309289   FROM (
309290        SELECT xet.event_id                  event_id
309291             , 0                             line_number
309292             , CASE r
309293                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
309294                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
309295                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
309296                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
309297                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
309298                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
309299                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
309300                 
309301                ELSE null
309302               END                           object_name
309303             , CASE r
309304                 WHEN 1 THEN 'HEADER' 
309305                 WHEN 2 THEN 'HEADER' 
309306                 WHEN 3 THEN 'HEADER' 
309307                 WHEN 4 THEN 'HEADER' 
309308                 WHEN 5 THEN 'HEADER' 
309309                 WHEN 6 THEN 'HEADER' 
309310                 WHEN 7 THEN 'HEADER' 
309311                 
309312                 ELSE null
309313               END                           object_type_code
309314             , CASE r
309315                 WHEN 1 THEN '707' 
309316                 WHEN 2 THEN '707' 
309317                 WHEN 3 THEN '707' 
309318                 WHEN 4 THEN '707' 
309319                 WHEN 5 THEN '707' 
309320                 WHEN 6 THEN '707' 
309321                 WHEN 7 THEN '707' 
309322                 
309323                 ELSE null
309324               END                           source_application_id
309325             , 'S'             source_type_code
309326             , CASE r
309327                 WHEN 1 THEN 'TRANSACTION_ID' 
309328                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
309329                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
309330                 WHEN 4 THEN 'TRANSACTION_UOM' 
309331                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
309332                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
309333                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
309334                 
309335                 ELSE null
309336               END                           source_code
309337             , CASE r
309338                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
309339                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
309340                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
309341                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
309342                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
309343                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
309344                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
309345                 
309346                 ELSE null
309347               END                           source_value
309348             , CASE r
309349                 WHEN 6 THEN fvl85.meaning
309350                 WHEN 7 THEN fvl114.meaning
309351                 
309352                 ELSE null
309353               END               source_meaning
309354         FROM xla_events_gt     xet  
309355       , CST_XLA_INV_HEADERS_V  h1
309356       , CST_XLA_INV_REF_V  h3
309357       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
309358       , CST_XLA_INV_TXN_TYPES_REF_V  h5
309359   , fnd_lookup_values    fvl85
309360   , fnd_lookup_values    fvl114
309361             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
309362        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
309363          AND xet.event_type_code = C_EVENT_TYPE_CODE
309364             AND h1.event_id = xet.event_id
309365  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl85.lookup_type(+)         = 
309366 'CST_DISTRIBUTION_TYPE'
309367   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
309368   AND fvl85.view_application_id(+) = 700
309369   AND fvl85.language(+)            = USERENV('LANG')
309370      AND fvl114.lookup_type(+)         = 'YES_NO'
309371   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
309372   AND fvl114.view_application_id(+) = 0
309373   AND fvl114.language(+)            = USERENV('LANG')
309374   
309375 )
309376 ;
309377 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
309378 
309379       trace
309380          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
309381          ,p_level    => C_LEVEL_STATEMENT
309382          ,p_module   => l_log_module);
309383 
309384 END IF;
309385 --
309386 
309387 
309388 
309389 --
309390 INSERT INTO xla_diag_sources --line1
309391 (
309392         event_id
309393       , ledger_id
309394       , sla_ledger_id
309395       , description_language
309396       , object_name
309397       , object_type_code
309398       , line_number
309399       , source_application_id
309400       , source_type_code
309401       , source_code
309402       , source_value
309403       , source_meaning
309404       , created_by
309405       , creation_date
309406       , last_update_date
309407       , last_updated_by
309408       , last_update_login
309409       , program_update_date
309410       , program_application_id
309411       , program_id
309412       , request_id
309413 )
309414 SELECT  event_id
309415       , p_target_ledger_id
309416       , p_sla_ledger_id
309417       , p_language
309418       , object_name
309419       , object_type_code
309420       , line_number
309421       , source_application_id
309422       , source_type_code
309423       , source_code
309424       , SUBSTR(source_value,1,1996)
309425       , SUBSTR(source_meaning,1,200)
309426       , xla_environment_pkg.g_Usr_Id
309427       , TRUNC(SYSDATE)
309428       , TRUNC(SYSDATE)
309429       , xla_environment_pkg.g_Usr_Id
309430       , xla_environment_pkg.g_Login_Id
309431       , TRUNC(SYSDATE)
309432       , xla_environment_pkg.g_Prog_Appl_Id
309433       , xla_environment_pkg.g_Prog_Id
309434       , xla_environment_pkg.g_Req_Id
309435   FROM (
309436        SELECT xet.event_id                  event_id
309437             , l2.line_number                 line_number
309438             , CASE r
309439                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
309440                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
309441                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
309442                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
309443                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
309444                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
309445                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
309446                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
309447                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
309448                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
309449                 
309450                ELSE null
309451               END                           object_name
309452             , CASE r
309453                 WHEN 1 THEN 'LINE' 
309454                 WHEN 2 THEN 'LINE' 
309455                 WHEN 3 THEN 'LINE' 
309456                 WHEN 4 THEN 'LINE' 
309457                 WHEN 5 THEN 'LINE' 
309458                 WHEN 6 THEN 'LINE' 
309459                 WHEN 7 THEN 'LINE' 
309460                 WHEN 8 THEN 'LINE' 
309461                 WHEN 9 THEN 'LINE' 
309462                 WHEN 10 THEN 'LINE' 
309463                 
309464                 ELSE null
309465               END                           object_type_code
309466             , CASE r
309467                 WHEN 1 THEN '707' 
309468                 WHEN 2 THEN '707' 
309469                 WHEN 3 THEN '707' 
309470                 WHEN 4 THEN '707' 
309471                 WHEN 5 THEN '707' 
309472                 WHEN 6 THEN '707' 
309473                 WHEN 7 THEN '707' 
309474                 WHEN 8 THEN '707' 
309475                 WHEN 9 THEN '707' 
309476                 WHEN 10 THEN '707' 
309477                 
309478                 ELSE null
309479               END                           source_application_id
309480             , 'S'             source_type_code
309481             , CASE r
309482                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
309483                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
309484                 WHEN 3 THEN 'CURRENCY_CODE' 
309485                 WHEN 4 THEN 'ENTERED_AMOUNT' 
309486                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
309487                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
309488                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
309489                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
309490                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
309491                 WHEN 10 THEN 'L_ORGANIZATION_CODE' 
309492                 
309493                 ELSE null
309494               END                           source_code
309495             , CASE r
309496                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
309497                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
309498                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
309499                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
309500                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
309501                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
309502                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
309503                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
309504                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
309505                 WHEN 10 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
309506                 
309507                 ELSE null
309508               END                           source_value
309509             , null              source_meaning
309510          FROM  xla_events_gt     xet  
309511         , CST_XLA_INV_LINES_V  l2
309512             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
309513         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
309514           AND xet.event_type_code = C_EVENT_TYPE_CODE
309515             AND l2.event_id          = xet.event_id
309516 
309517 )
309518 ;
309519 --
309520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
309521 
309522       trace
309523          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
309524          ,p_level    => C_LEVEL_STATEMENT
309525          ,p_module   => l_log_module);
309526 
309527 END IF;
309528 
309529 
309530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
309531       trace
309532          (p_msg      => 'END of insert_sources_547'
309533          ,p_level    => C_LEVEL_PROCEDURE
309534          ,p_module   => l_log_module);
309535 END IF;
309536 EXCEPTION
309537   WHEN xla_exceptions_pkg.application_exception THEN
309538       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
309539             trace
309540                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
309541                ,p_level    => C_LEVEL_EXCEPTION
309542                ,p_module   => l_log_module);
309543       END IF;
309544       RAISE;
309545   WHEN OTHERS THEN
309546       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
309547             trace
309548                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
309549                ,p_level    => C_LEVEL_EXCEPTION
309550                ,p_module   => l_log_module);
309551        END IF;
309552        xla_exceptions_pkg.raise_message
309553            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_547');
309554 END insert_sources_547;
309555 --
309556 
309557 ---------------------------------------
309558 --
309559 -- PRIVATE FUNCTION
309560 --         EventType_547
309561 --
309562 ----------------------------------------
309563 --
309564 FUNCTION EventType_547
309565        (p_application_id         IN NUMBER
309566        ,p_base_ledger_id         IN NUMBER
309567        ,p_target_ledger_id       IN NUMBER
309568        ,p_language               IN VARCHAR2
309569        ,p_currency_code          IN VARCHAR2
309570        ,p_sla_ledger_id          IN NUMBER
309571        ,p_pad_start_date         IN DATE
309572        ,p_pad_end_date           IN DATE
309573        ,p_primary_ledger_id      IN NUMBER)
309574 RETURN BOOLEAN IS
309575 --
309576 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION';
309577 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
309578 
309579 l_calculate_acctd_flag   VARCHAR2(1) :='N';
309580 l_calculate_g_l_flag     VARCHAR2(1) :='N';
309581 --
309582 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309583 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309584 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
309585 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
309586 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309587 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
309588 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
309589 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309590 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
309591 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
309592 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309593 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309594 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309595 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
309596 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
309597 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
309598 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
309599 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
309600 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
309601 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
309602 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
309603 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
309604 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
309605 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
309606 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
309607 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
309608 
309609 l_event_id                             NUMBER;
309610 l_previous_event_id                    NUMBER;
309611 l_first_event_id                       NUMBER;
309612 l_last_event_id                        NUMBER;
309613 
309614 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
309615 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
309616 --
309617 --
309618 l_result                    BOOLEAN := TRUE;
309619 l_rows                      NUMBER  := 1000;
309620 l_event_type_name           VARCHAR2(80) := 'COGS Recognition';
309621 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
309622 l_description               VARCHAR2(4000);
309623 l_transaction_reversal      NUMBER;
309624 l_ae_header_id              NUMBER;
309625 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
309626 l_log_module                VARCHAR2(240);
309627 --
309628 l_acct_reversal_source      VARCHAR2(30);
309629 l_trx_reversal_source       VARCHAR2(30);
309630 
309631 l_continue_with_lines       BOOLEAN := TRUE;
309632 --
309633 l_acc_rev_gl_date_source    DATE;                      -- 4262811
309634 --
309635 type t_array_event_id is table of number index by binary_integer;
309636 
309637 l_rec_array_event                    t_rec_array_event;
309638 l_null_rec_array_event               t_rec_array_event;
309639 l_array_ae_header_id                 xla_number_array_type;
309640 l_actual_flag                        VARCHAR2(1) := NULL;
309641 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
309642 l_balance_type_code                  VARCHAR2(1) :=NULL;
309643 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
309644 
309645 --
309646 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
309647 --
309648 
309649 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
309650 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
309651 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
309652 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
309653 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
309654 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
309655 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
309656 
309657 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
309658 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
309659 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
309660 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
309661 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
309662 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
309663 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
309664 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
309665 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
309666 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
309667 
309668 l_array_source_1              t_array_source_1;
309669 l_array_source_2              t_array_source_2;
309670 l_array_source_3              t_array_source_3;
309671 l_array_source_4              t_array_source_4;
309672 l_array_source_5              t_array_source_5;
309673 l_array_source_85              t_array_source_85;
309674 l_array_source_85_meaning      t_array_lookup_meaning;
309675 l_array_source_114              t_array_source_114;
309676 l_array_source_114_meaning      t_array_lookup_meaning;
309677 
309678 l_array_source_11      t_array_source_11;
309679 l_array_source_84      t_array_source_84;
309680 l_array_source_88      t_array_source_88;
309681 l_array_source_91      t_array_source_91;
309682 l_array_source_92      t_array_source_92;
309683 l_array_source_93      t_array_source_93;
309684 l_array_source_94      t_array_source_94;
309685 l_array_source_95      t_array_source_95;
309686 l_array_source_97      t_array_source_97;
309687 l_array_source_108      t_array_source_108;
309688 
309689 --
309690 CURSOR header_cur
309691 IS
309692 SELECT /*+ leading(xet) cardinality(xet,1) */
309693 -- Event Type Code: COGS_RECOGNITION
309694 -- Event Class Code: SALES_ORDER
309695     xet.entity_id
309696   , xet.legal_entity_id
309697   , xet.entity_code
309698   , xet.transaction_number
309699   , xet.event_id
309700   , xet.event_class_code
309701   , xet.event_type_code
309702   , xet.event_number
309703   , xet.event_date
309704   , xet.transaction_date
309705   , xet.reference_num_1
309706   , xet.reference_num_2
309707   , xet.reference_num_3
309708   , xet.reference_num_4
309709   , xet.reference_char_1
309710   , xet.reference_char_2
309711   , xet.reference_char_3
309712   , xet.reference_char_4
309713   , xet.reference_date_1
309714   , xet.reference_date_2
309715   , xet.reference_date_3
309716   , xet.reference_date_4
309717   , xet.event_created_by
309718   , xet.budgetary_control_flag 
309719   , h1.TRANSACTION_ID    source_1
309720   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
309721   , h3.TRANSACTION_QUANTITY    source_3
309722   , h3.TRANSACTION_UOM    source_4
309723   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
309724   , h1.DISTRIBUTION_TYPE    source_85
309725   , fvl85.meaning   source_85_meaning
309726   , h1.TRANSFER_TO_GL_INDICATOR    source_114
309727   , fvl114.meaning   source_114_meaning
309728   FROM xla_events_gt     xet 
309729   , CST_XLA_INV_HEADERS_V  h1
309730   , CST_XLA_INV_REF_V  h3
309731   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
309732   , CST_XLA_INV_TXN_TYPES_REF_V  h5
309733   , fnd_lookup_values    fvl85
309734   , fnd_lookup_values    fvl114
309735  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
309736    and xet.event_type_code = C_EVENT_TYPE_CODE
309737    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
309738  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl85.lookup_type(+)         = 
309739 'CST_DISTRIBUTION_TYPE'
309740   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
309741   AND fvl85.view_application_id(+) = 700
309742   AND fvl85.language(+)            = USERENV('LANG')
309743      AND fvl114.lookup_type(+)         = 'YES_NO'
309744   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
309745   AND fvl114.view_application_id(+) = 0
309746   AND fvl114.language(+)            = USERENV('LANG')
309747   
309748  ORDER BY event_id
309749 ;
309750 
309751 
309752 --
309753 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
309754 IS
309755 SELECT /*+ leading(xet) cardinality(xet,1) */
309756 -- Event Type Code: COGS_RECOGNITION
309757 -- Event Class Code: SALES_ORDER
309758     xet.entity_id
309759    ,xet.legal_entity_id
309760    ,xet.entity_code
309761    ,xet.transaction_number
309762    ,xet.event_id
309763    ,xet.event_class_code
309764    ,xet.event_type_code
309765    ,xet.event_number
309766    ,xet.event_date
309767    ,xet.transaction_date
309768    ,xet.reference_num_1
309769    ,xet.reference_num_2
309770    ,xet.reference_num_3
309771    ,xet.reference_num_4
309772    ,xet.reference_char_1
309773    ,xet.reference_char_2
309774    ,xet.reference_char_3
309775    ,xet.reference_char_4
309776    ,xet.reference_date_1
309777    ,xet.reference_date_2
309778    ,xet.reference_date_3
309779    ,xet.reference_date_4
309780    ,xet.event_created_by
309781    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
309782   , l2.CODE_COMBINATION_ID    source_11
309783   , l2.DISTRIBUTION_IDENTIFIER    source_84
309784   , l2.CURRENCY_CODE    source_88
309785   , l2.ENTERED_AMOUNT    source_91
309786   , l2.CURRENCY_CONVERSION_DATE    source_92
309787   , l2.CURRENCY_CONVERSION_RATE    source_93
309788   , l2.CURRENCY_CONVERSION_TYPE    source_94
309789   , l2.ACCOUNTED_AMOUNT    source_95
309790   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
309791   , l2.L_ORGANIZATION_CODE    source_108
309792   FROM xla_events_gt     xet 
309793   , CST_XLA_INV_LINES_V  l2
309794  WHERE xet.event_id between x_first_event_id and x_last_event_id
309795    and xet.event_date between p_pad_start_date and p_pad_end_date
309796    and xet.event_type_code = C_EVENT_TYPE_CODE
309797    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
309798 ;
309799 
309800 --
309801 BEGIN
309802 IF g_log_enabled THEN
309803    l_log_module := C_DEFAULT_MODULE||'.EventType_547';
309804 END IF;
309805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
309806    trace
309807       (p_msg      => 'BEGIN of EventType_547'
309808       ,p_level    => C_LEVEL_PROCEDURE
309809       ,p_module   => l_log_module);
309810 END IF;
309811 
309812 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
309813    trace
309814       (p_msg      => 'p_application_id = '||p_application_id||
309815                      ' - p_base_ledger_id = '||p_base_ledger_id||
309816                      ' - p_target_ledger_id  = '||p_target_ledger_id||
309817                      ' - p_language = '||p_language||
309818                      ' - p_currency_code = '||p_currency_code||
309819                      ' - p_sla_ledger_id = '||p_sla_ledger_id
309820       ,p_level    => C_LEVEL_STATEMENT
309821       ,p_module   => l_log_module);
309822 END IF;
309823 --
309824 -- initialze arrays
309825 --
309826 g_array_event.DELETE;
309827 l_rec_array_event := l_null_rec_array_event;
309828 --
309829 --------------------------------------
309830 -- 4262811 Initialze MPA Line Number
309831 --------------------------------------
309832 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
309833 
309834 --
309835 
309836 --
309837 OPEN header_cur;
309838 --
309839 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
309840    trace
309841    (p_msg      => 'SQL - FETCH header_cur'
309842    ,p_level    => C_LEVEL_STATEMENT
309843    ,p_module   => l_log_module);
309844 END IF;
309845 --
309846 LOOP
309847 FETCH header_cur BULK COLLECT INTO
309848         l_array_entity_id
309849       , l_array_legal_entity_id
309850       , l_array_entity_code
309851       , l_array_transaction_num
309852       , l_array_event_id
309853       , l_array_class_code
309854       , l_array_event_type
309855       , l_array_event_number
309856       , l_array_event_date
309857       , l_array_transaction_date
309858       , l_array_reference_num_1
309859       , l_array_reference_num_2
309860       , l_array_reference_num_3
309861       , l_array_reference_num_4
309862       , l_array_reference_char_1
309863       , l_array_reference_char_2
309864       , l_array_reference_char_3
309865       , l_array_reference_char_4
309866       , l_array_reference_date_1
309867       , l_array_reference_date_2
309868       , l_array_reference_date_3
309869       , l_array_reference_date_4
309870       , l_array_event_created_by
309871       , l_array_budgetary_control_flag 
309872       , l_array_source_1
309873       , l_array_source_2
309874       , l_array_source_3
309875       , l_array_source_4
309876       , l_array_source_5
309877       , l_array_source_85
309878       , l_array_source_85_meaning
309879       , l_array_source_114
309880       , l_array_source_114_meaning
309881       LIMIT l_rows;
309882 --
309883 IF (C_LEVEL_EVENT >= g_log_level) THEN
309884    trace
309885    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
309886    ,p_level    => C_LEVEL_EVENT
309887    ,p_module   => l_log_module);
309888 END IF;
309889 --
309890 EXIT WHEN l_array_entity_id.COUNT = 0;
309891 
309892 -- initialize arrays
309893 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
309894 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
309895 
309896 --
309897 -- Bug 4458708
309898 --
309899 XLA_AE_LINES_PKG.g_LineNumber := 0;
309900 
309901 
309902 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
309903 g_last_hdr_idx := l_array_event_id.LAST;
309904 --
309905 -- loop for the headers. Each iteration is for each header extract row
309906 -- fetched in header cursor
309907 --
309908 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
309909 
309910 --
309911 -- set event info as cache for other routines to refer event attributes
309912 --
309913 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
309914    (p_application_id           => p_application_id
309915    ,p_primary_ledger_id        => p_primary_ledger_id
309916    ,p_base_ledger_id           => p_base_ledger_id
309917    ,p_target_ledger_id         => p_target_ledger_id
309918    ,p_entity_id                => l_array_entity_id(hdr_idx)
309919    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
309920    ,p_entity_code              => l_array_entity_code(hdr_idx)
309921    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
309922    ,p_event_id                 => l_array_event_id(hdr_idx)
309923    ,p_event_class_code         => l_array_class_code(hdr_idx)
309924    ,p_event_type_code          => l_array_event_type(hdr_idx)
309925    ,p_event_number             => l_array_event_number(hdr_idx)
309926    ,p_event_date               => l_array_event_date(hdr_idx)
309927    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
309928    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
309929    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
309930    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
309931    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
309932    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
309933    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
309934    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
309935    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
309936    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
309937    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
309938    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
309939    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
309940    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
309941    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
309942 
309943 --
309944 -- set the status of entry to C_VALID (0)
309945 --
309946 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
309947 
309948 --
309949 -- initialize a row for ae header
309950 --
309951 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
309952 
309953 l_event_id := l_array_event_id(hdr_idx);
309954 
309955 --
309956 -- storing the hdr_idx for event. May be used by line cursor.
309957 --
309958 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
309959 
309960 --
309961 -- store sources from header extract. This can be improved to
309962 -- store only those sources from header extract that may be used in lines
309963 --
309964 
309965 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
309966 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
309967 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
309968 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
309969 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
309970 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
309971 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
309972 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
309973 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
309974 
309975 --
309976 -- initilaize the status of ae headers for diffrent balance types
309977 -- the status is initialised to C_NOT_CREATED (2)
309978 --
309979 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
309980 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
309981 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
309982 
309983 --
309984 -- call api to validate and store accounting attributes for header
309985 --
309986 
309987 ------------------------------------------------------------
309988 -- Accrual Reversal : to get date for Standard Source (NONE)
309989 ------------------------------------------------------------
309990 l_acc_rev_gl_date_source := NULL;
309991 
309992      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
309993       l_rec_acct_attrs.array_date_value(1) := 
309994 xla_ae_sources_pkg.GetSystemSourceDate(
309995    p_source_code           => 'XLA_REFERENCE_DATE_1'
309996  , p_source_type_code      => 'Y'
309997  , p_source_application_id =>  602
309998 );
309999      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
310000       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
310001 
310002 
310003 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
310004 
310005 XLA_AE_HEADER_PKG.SetJeCategoryName;
310006 
310007 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
310008 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
310009 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
310010 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
310011 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
310012 
310013 
310014 --
310015 xla_ae_header_pkg.SetHdrDescription(
310016    p_description => Description_1 (
310017    p_application_id => p_application_id 
310018  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
310019  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
310020  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
310021  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
310022  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
310023    )
310024 );
310025 --
310026 
310027 -- No header level analytical criteria
310028 
310029 --
310030 --accounting attribute enhancement, bug 3612931
310031 --
310032 l_trx_reversal_source := SUBSTR(NULL, 1,30);
310033 
310034 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
310035    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
310036 
310037    xla_accounting_err_pkg.build_message
310038       (p_appli_s_name            => 'XLA'
310039       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
310040       ,p_token_1                 => 'ACCT_ATTR_NAME'
310041       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
310042       ,p_token_2                 => 'PRODUCT_NAME'
310043       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
310044       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
310045       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
310046       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
310047 
310048 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
310049    --
310050    -- following sets the accounting attributes needed to reverse
310051    -- accounting for a distributeion
310052    --
310053    xla_ae_lines_pkg.SetTrxReversalAttrs
310054       (p_event_id              => l_event_id
310055       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
310056       ,p_trx_reversal_source   => l_trx_reversal_source);
310057 
310058 END IF;
310059 
310060 
310061 ----------------------------------------------------------------
310062 -- 4262811 -  update the header statuses to invalid in need be
310063 ----------------------------------------------------------------
310064 --
310065 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
310066 
310067 
310068   -----------------------------------------------
310069   -- No accrual reversal for the event class/type
310070   -----------------------------------------------
310071 ----------------------------------------------------------------
310072 
310073 --
310074 -- this ends the header loop iteration for one bulk fetch
310075 --
310076 END LOOP;
310077 
310078 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
310079 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
310080 
310081 --
310082 -- insert dummy rows into lines gt table that were created due to
310083 -- transaction reversals
310084 --
310085 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
310086    l_result := XLA_AE_LINES_PKG.InsertLines;
310087 END IF;
310088 
310089 --
310090 -- reset the temp_line_num for each set of events fetched from header
310091 -- cursor rather than doing it for each new event in line cursor
310092 -- Bug 3939231
310093 --
310094 xla_ae_lines_pkg.g_temp_line_num := 0;
310095 
310096 
310097 
310098 --
310099 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
310100 --
310101 --
310102 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
310103 
310104       trace
310105          (p_msg      => 'SQL - FETCH line_cur'
310106          ,p_level    => C_LEVEL_STATEMENT
310107          ,p_module   => l_log_module);
310108 
310109 END IF;
310110 --
310111 --
310112 LOOP
310113   --
310114   FETCH line_cur BULK COLLECT INTO
310115         l_array_entity_id
310116       , l_array_legal_entity_id
310117       , l_array_entity_code
310118       , l_array_transaction_num
310119       , l_array_event_id
310120       , l_array_class_code
310121       , l_array_event_type
310122       , l_array_event_number
310123       , l_array_event_date
310124       , l_array_transaction_date
310125       , l_array_reference_num_1
310126       , l_array_reference_num_2
310127       , l_array_reference_num_3
310128       , l_array_reference_num_4
310129       , l_array_reference_char_1
310130       , l_array_reference_char_2
310131       , l_array_reference_char_3
310132       , l_array_reference_char_4
310133       , l_array_reference_date_1
310134       , l_array_reference_date_2
310135       , l_array_reference_date_3
310136       , l_array_reference_date_4
310137       , l_array_event_created_by
310138       , l_array_budgetary_control_flag
310139       , l_array_extract_line_num 
310140       , l_array_source_11
310141       , l_array_source_84
310142       , l_array_source_88
310143       , l_array_source_91
310144       , l_array_source_92
310145       , l_array_source_93
310146       , l_array_source_94
310147       , l_array_source_95
310148       , l_array_source_97
310149       , l_array_source_108
310150       LIMIT l_rows;
310151 
310152   --
310153   IF (C_LEVEL_EVENT >= g_log_level) THEN
310154             trace
310155                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
310156                ,p_level    => C_LEVEL_EVENT
310157                ,p_module   => l_log_module);
310158   END IF;
310159   --
310160   EXIT WHEN l_array_entity_id.count = 0;
310161 
310162   XLA_AE_LINES_PKG.g_rec_lines := null;
310163 
310164 --
310165 -- Bug 4458708
310166 --
310167 XLA_AE_LINES_PKG.g_LineNumber := 0;
310168 --
310169 --
310170 
310171 FOR Idx IN 1..l_array_event_id.count LOOP
310172    --
310173    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
310174    --
310175    l_event_id := l_array_event_id(idx);  -- 5648433
310176 
310177    --
310178    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
310179    --
310180 
310181    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
310182              (g_array_event(l_event_id).array_value_num('header_index'))
310183          ,'N'
310184          ) <> 'Y'
310185    THEN
310186       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
310187          trace
310188             (p_msg      => 'Trancaction revesal option is not Y '
310189             ,p_level    => C_LEVEL_STATEMENT
310190             ,p_module   => l_log_module);
310191       END IF;
310192 
310193 --
310194 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
310195 --
310196 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
310197 --
310198 -- set event info as cache for other routines to refer event attributes
310199 --
310200 
310201 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
310202    l_previous_event_id := l_event_id;
310203 
310204    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
310205       (p_application_id           => p_application_id
310206       ,p_primary_ledger_id        => p_primary_ledger_id
310207       ,p_base_ledger_id           => p_base_ledger_id
310208       ,p_target_ledger_id         => p_target_ledger_id
310209       ,p_entity_id                => l_array_entity_id(Idx)
310210       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
310211       ,p_entity_code              => l_array_entity_code(Idx)
310212       ,p_transaction_num          => l_array_transaction_num(Idx)
310213       ,p_event_id                 => l_array_event_id(Idx)
310214       ,p_event_class_code         => l_array_class_code(Idx)
310215       ,p_event_type_code          => l_array_event_type(Idx)
310216       ,p_event_number             => l_array_event_number(Idx)
310217       ,p_event_date               => l_array_event_date(Idx)
310218       ,p_transaction_date         => l_array_transaction_date(Idx)
310219       ,p_reference_num_1          => l_array_reference_num_1(Idx)
310220       ,p_reference_num_2          => l_array_reference_num_2(Idx)
310221       ,p_reference_num_3          => l_array_reference_num_3(Idx)
310222       ,p_reference_num_4          => l_array_reference_num_4(Idx)
310223       ,p_reference_char_1         => l_array_reference_char_1(Idx)
310224       ,p_reference_char_2         => l_array_reference_char_2(Idx)
310225       ,p_reference_char_3         => l_array_reference_char_3(Idx)
310226       ,p_reference_char_4         => l_array_reference_char_4(Idx)
310227       ,p_reference_date_1         => l_array_reference_date_1(Idx)
310228       ,p_reference_date_2         => l_array_reference_date_2(Idx)
310229       ,p_reference_date_3         => l_array_reference_date_3(Idx)
310230       ,p_reference_date_4         => l_array_reference_date_4(Idx)
310231       ,p_event_created_by         => l_array_event_created_by(Idx)
310232       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
310233        --
310234 END IF;
310235 
310236 
310237 
310238 --
310239 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
310240 
310241 l_acct_reversal_source := SUBSTR(NULL, 1,30);
310242 
310243 IF l_continue_with_lines THEN
310244    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
310245       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
310246 
310247       xla_accounting_err_pkg.build_message
310248          (p_appli_s_name            => 'XLA'
310249          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
310250          ,p_token_1                 => 'LINE_NUMBER'
310251          ,p_value_1                 => l_array_extract_line_num(Idx)
310252          ,p_token_2                 => 'PRODUCT_NAME'
310253          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
310254          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
310255          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
310256          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
310257 
310258    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
310259       --
310260       -- following sets the accounting attributes needed to reverse
310261       -- accounting for a distributeion
310262       --
310263 
310264       --
310265       -- 5217187
310266       --
310267       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
310268       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
310269                                        g_array_event(l_event_id).array_value_num('header_index'));
310270       --
310271       --
310272 
310273       -- No reversal code generated
310274 
310275       xla_ae_lines_pkg.SetAcctReversalAttrs
310276          (p_event_id             => l_event_id
310277          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
310278          ,p_calculate_acctd_flag => l_calculate_acctd_flag
310279          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
310280    END IF;
310281 
310282    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
310283        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
310284 
310285 --
310286 AcctLineType_63 (
310287  p_application_id  => p_application_id
310288  ,p_event_id     => l_event_id
310289  ,p_calculate_acctd_flag => l_calculate_acctd_flag
310290  ,p_calculate_g_l_flag => l_calculate_g_l_flag
310291  ,p_actual_flag => l_actual_flag
310292  ,p_balance_type_code => l_balance_type_code
310293  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
310294  
310295  , p_source_11 => l_array_source_11(Idx)
310296  , p_source_84 => l_array_source_84(Idx)
310297  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
310298  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
310299  , p_source_88 => l_array_source_88(Idx)
310300  , p_source_91 => l_array_source_91(Idx)
310301  , p_source_92 => l_array_source_92(Idx)
310302  , p_source_93 => l_array_source_93(Idx)
310303  , p_source_94 => l_array_source_94(Idx)
310304  , p_source_95 => l_array_source_95(Idx)
310305  , p_source_97 => l_array_source_97(Idx)
310306  );
310307 If(l_balance_type_code = 'A') THEN
310308   l_actual_gain_loss_ref := l_gain_or_loss_ref;
310309 END IF;
310310 
310311 --
310312 
310313 
310314 --
310315 AcctLineType_67 (
310316  p_application_id  => p_application_id
310317  ,p_event_id     => l_event_id
310318  ,p_calculate_acctd_flag => l_calculate_acctd_flag
310319  ,p_calculate_g_l_flag => l_calculate_g_l_flag
310320  ,p_actual_flag => l_actual_flag
310321  ,p_balance_type_code => l_balance_type_code
310322  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
310323  
310324  , p_source_11 => l_array_source_11(Idx)
310325  , p_source_84 => l_array_source_84(Idx)
310326  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
310327  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
310328  , p_source_88 => l_array_source_88(Idx)
310329  , p_source_91 => l_array_source_91(Idx)
310330  , p_source_92 => l_array_source_92(Idx)
310331  , p_source_93 => l_array_source_93(Idx)
310332  , p_source_94 => l_array_source_94(Idx)
310333  , p_source_95 => l_array_source_95(Idx)
310334  , p_source_97 => l_array_source_97(Idx)
310335  );
310336 If(l_balance_type_code = 'A') THEN
310337   l_actual_gain_loss_ref := l_gain_or_loss_ref;
310338 END IF;
310339 
310340 --
310341 
310342 
310343 --
310344 AcctLineType_93 (
310345  p_application_id  => p_application_id
310346  ,p_event_id     => l_event_id
310347  ,p_calculate_acctd_flag => l_calculate_acctd_flag
310348  ,p_calculate_g_l_flag => l_calculate_g_l_flag
310349  ,p_actual_flag => l_actual_flag
310350  ,p_balance_type_code => l_balance_type_code
310351  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
310352  
310353  , p_source_11 => l_array_source_11(Idx)
310354  , p_source_84 => l_array_source_84(Idx)
310355  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
310356  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
310357  , p_source_88 => l_array_source_88(Idx)
310358  , p_source_91 => l_array_source_91(Idx)
310359  , p_source_92 => l_array_source_92(Idx)
310360  , p_source_93 => l_array_source_93(Idx)
310361  , p_source_94 => l_array_source_94(Idx)
310362  , p_source_95 => l_array_source_95(Idx)
310363  , p_source_97 => l_array_source_97(Idx)
310364  );
310365 If(l_balance_type_code = 'A') THEN
310366   l_actual_gain_loss_ref := l_gain_or_loss_ref;
310367 END IF;
310368 
310369 --
310370 
310371 
310372 --
310373 AcctLineType_116 (
310374  p_application_id  => p_application_id
310375  ,p_event_id     => l_event_id
310376  ,p_calculate_acctd_flag => l_calculate_acctd_flag
310377  ,p_calculate_g_l_flag => l_calculate_g_l_flag
310378  ,p_actual_flag => l_actual_flag
310379  ,p_balance_type_code => l_balance_type_code
310380  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
310381  
310382  , p_source_11 => l_array_source_11(Idx)
310383  , p_source_84 => l_array_source_84(Idx)
310384  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
310385  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
310386  , p_source_88 => l_array_source_88(Idx)
310387  , p_source_91 => l_array_source_91(Idx)
310388  , p_source_92 => l_array_source_92(Idx)
310389  , p_source_93 => l_array_source_93(Idx)
310390  , p_source_94 => l_array_source_94(Idx)
310391  , p_source_95 => l_array_source_95(Idx)
310392  , p_source_97 => l_array_source_97(Idx)
310393  );
310394 If(l_balance_type_code = 'A') THEN
310395   l_actual_gain_loss_ref := l_gain_or_loss_ref;
310396 END IF;
310397 
310398 --
310399 
310400 
310401 --
310402 AcctLineType_250 (
310403  p_application_id  => p_application_id
310404  ,p_event_id     => l_event_id
310405  ,p_calculate_acctd_flag => l_calculate_acctd_flag
310406  ,p_calculate_g_l_flag => l_calculate_g_l_flag
310407  ,p_actual_flag => l_actual_flag
310408  ,p_balance_type_code => l_balance_type_code
310409  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
310410  
310411  , p_source_11 => l_array_source_11(Idx)
310412  , p_source_84 => l_array_source_84(Idx)
310413  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
310414  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
310415  , p_source_88 => l_array_source_88(Idx)
310416  , p_source_91 => l_array_source_91(Idx)
310417  , p_source_92 => l_array_source_92(Idx)
310418  , p_source_93 => l_array_source_93(Idx)
310419  , p_source_94 => l_array_source_94(Idx)
310420  , p_source_95 => l_array_source_95(Idx)
310421  , p_source_97 => l_array_source_97(Idx)
310422  , p_source_108 => l_array_source_108(Idx)
310423  );
310424 If(l_balance_type_code = 'A') THEN
310425   l_actual_gain_loss_ref := l_gain_or_loss_ref;
310426 END IF;
310427 
310428 --
310429 
310430       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
310431       -- or secondary ledger that has different currency with primary
310432       -- or alc that is calculated by sla
310433       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
310434             (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'))
310435 
310436 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
310437 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
310438           AND (l_actual_flag = 'A')) THEN
310439         XLA_AE_LINES_PKG.CreateGainOrLossLines(
310440           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
310441          ,p_application_id   => p_application_id
310442          ,p_amb_context_code => 'DEFAULT'
310443          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
310444          ,p_event_class_code => C_EVENT_CLASS_CODE
310445          ,p_event_type_code  => C_EVENT_TYPE_CODE
310446          
310447          ,p_gain_ccid        => -1
310448          ,p_loss_ccid        => -1
310449 
310450          ,p_actual_flag      => l_actual_flag
310451          ,p_enc_flag         => null
310452          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
310453          ,p_enc_g_l_ref      => null
310454          );
310455       END IF;
310456    END IF;
310457 END IF;
310458 
310459    ELSE
310460       --
310461       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
310462       --
310463       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
310464          trace
310465             (p_msg      => 'Trancaction revesal option is Y'
310466             ,p_level    => C_LEVEL_STATEMENT
310467             ,p_module   => l_log_module);
310468       END IF;
310469    END IF;
310470 
310471 END LOOP;
310472 l_result := XLA_AE_LINES_PKG.InsertLines ;
310473 end loop;
310474 close line_cur;
310475 
310476 
310477 --
310478 -- insert headers into xla_ae_headers_gt table
310479 --
310480 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
310481 
310482 -- insert into errors table here.
310483 
310484 END LOOP;
310485 
310486 --
310487 -- 4865292
310488 --
310489 -- Compare g_hdr_extract_count with event count in
310490 -- CreateHeadersAndLines.
310491 --
310492 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
310493 
310494 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
310495    trace (p_msg     => '# rows extracted from header extract objects '
310496                     || ' (running total): '
310497                     || g_hdr_extract_count
310498          ,p_level   => C_LEVEL_STATEMENT
310499          ,p_module  => l_log_module);
310500 END IF;
310501 
310502 CLOSE header_cur;
310503 --
310504 
310505 --
310506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
310507    trace
310508       (p_msg      => 'END of EventType_547'
310509       ,p_level    => C_LEVEL_PROCEDURE
310510       ,p_module   => l_log_module);
310511 END IF;
310512 --
310513 RETURN l_result;
310514 EXCEPTION
310515 WHEN xla_exceptions_pkg.application_exception THEN
310516    
310517 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
310518 
310519    
310520 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
310521 
310522    RAISE;
310523 
310524 WHEN NO_DATA_FOUND THEN
310525 
310526 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
310527 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
310528 
310529 FOR header_record IN header_cur
310530 LOOP
310531     l_array_header_events(header_record.event_id) := header_record.event_id;
310532 END LOOP;
310533 
310534 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
310535 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
310536 
310537 fnd_file.put_line(fnd_file.LOG, '                    ');
310538 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
310539 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
310540 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
310541 
310542 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
310543 LOOP
310544 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
310545 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
310546         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
310547 	END IF;
310548 END LOOP;
310549 
310550 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
310551 fnd_file.put_line(fnd_file.LOG, '                    ');
310552 
310553 
310554 xla_exceptions_pkg.raise_message
310555       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_547');
310556 
310557 
310558 WHEN OTHERS THEN
310559    xla_exceptions_pkg.raise_message
310560       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_547');
310561 END EventType_547;
310562 --
310563 
310564 ---------------------------------------
310565 --
310566 -- PRIVATE PROCEDURE
310567 --         insert_sources_548
310568 --
310569 ----------------------------------------
310570 --
310571 PROCEDURE insert_sources_548(
310572                                 p_target_ledger_id       IN NUMBER
310573                               , p_language               IN VARCHAR2
310574                               , p_sla_ledger_id          IN NUMBER
310575                               , p_pad_start_date         IN DATE
310576                               , p_pad_end_date           IN DATE
310577                          )
310578 IS
310579 
310580 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION_ADJ';
310581 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
310582 p_apps_owner                   VARCHAR2(30);
310583 l_log_module                   VARCHAR2(240);
310584 BEGIN
310585 IF g_log_enabled THEN
310586       l_log_module := C_DEFAULT_MODULE||'.insert_sources_548';
310587 END IF;
310588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
310589 
310590       trace
310591          (p_msg      => 'BEGIN of insert_sources_548'
310592          ,p_level    => C_LEVEL_PROCEDURE
310593          ,p_module   => l_log_module);
310594 
310595 END IF;
310596 
310597 -- select APPS owner
310598 SELECT oracle_username
310599   INTO p_apps_owner
310600   FROM fnd_oracle_userid
310601  WHERE read_only_flag = 'U'
310602 ;
310603 
310604 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
310605       trace
310606          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
310607                         ' - p_language = '||p_language||
310608                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
310609                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
310610                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
310611                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
310612          ,p_level    => C_LEVEL_STATEMENT
310613          ,p_module   => l_log_module);
310614 END IF;
310615 
310616 
310617 --
310618 INSERT INTO xla_diag_sources --hdr1
310619 (
310620         event_id
310621       , ledger_id
310622       , sla_ledger_id
310623       , description_language
310624       , object_name
310625       , object_type_code
310626       , line_number
310627       , source_application_id
310628       , source_type_code
310629       , source_code
310630       , source_value
310631       , source_meaning
310632       , created_by
310633       , creation_date
310634       , last_update_date
310635       , last_updated_by
310636       , last_update_login
310637       , program_update_date
310638       , program_application_id
310639       , program_id
310640       , request_id
310641 )
310642 SELECT
310643         event_id
310644       , p_target_ledger_id
310645       , p_sla_ledger_id
310646       , p_language
310647       , object_name
310648       , object_type_code
310649       , line_number
310650       , source_application_id
310651       , source_type_code
310652       , source_code
310653       , SUBSTR(source_value ,1,1996)
310654       , SUBSTR(source_meaning,1,200)
310655       , xla_environment_pkg.g_Usr_Id
310656       , TRUNC(SYSDATE)
310657       , TRUNC(SYSDATE)
310658       , xla_environment_pkg.g_Usr_Id
310659       , xla_environment_pkg.g_Login_Id
310660       , TRUNC(SYSDATE)
310661       , xla_environment_pkg.g_Prog_Appl_Id
310662       , xla_environment_pkg.g_Prog_Id
310663       , xla_environment_pkg.g_Req_Id
310664   FROM (
310665        SELECT xet.event_id                  event_id
310666             , 0                             line_number
310667             , CASE r
310668                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
310669                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
310670                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
310671                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
310672                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
310673                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
310674                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
310675                 
310676                ELSE null
310677               END                           object_name
310678             , CASE r
310679                 WHEN 1 THEN 'HEADER' 
310680                 WHEN 2 THEN 'HEADER' 
310681                 WHEN 3 THEN 'HEADER' 
310682                 WHEN 4 THEN 'HEADER' 
310683                 WHEN 5 THEN 'HEADER' 
310684                 WHEN 6 THEN 'HEADER' 
310685                 WHEN 7 THEN 'HEADER' 
310686                 
310687                 ELSE null
310688               END                           object_type_code
310689             , CASE r
310690                 WHEN 1 THEN '707' 
310691                 WHEN 2 THEN '707' 
310692                 WHEN 3 THEN '707' 
310693                 WHEN 4 THEN '707' 
310694                 WHEN 5 THEN '707' 
310695                 WHEN 6 THEN '707' 
310696                 WHEN 7 THEN '707' 
310697                 
310698                 ELSE null
310699               END                           source_application_id
310700             , 'S'             source_type_code
310701             , CASE r
310702                 WHEN 1 THEN 'TRANSACTION_ID' 
310703                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
310704                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
310705                 WHEN 4 THEN 'TRANSACTION_UOM' 
310706                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
310707                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
310708                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
310709                 
310710                 ELSE null
310711               END                           source_code
310712             , CASE r
310713                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
310714                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
310715                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
310716                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
310717                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
310718                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
310719                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
310720                 
310721                 ELSE null
310722               END                           source_value
310723             , CASE r
310724                 WHEN 6 THEN fvl85.meaning
310725                 WHEN 7 THEN fvl114.meaning
310726                 
310727                 ELSE null
310728               END               source_meaning
310729         FROM xla_events_gt     xet  
310730       , CST_XLA_INV_HEADERS_V  h1
310731       , CST_XLA_INV_REF_V  h3
310732       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
310733       , CST_XLA_INV_TXN_TYPES_REF_V  h5
310734   , fnd_lookup_values    fvl85
310735   , fnd_lookup_values    fvl114
310736             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
310737        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
310738          AND xet.event_type_code = C_EVENT_TYPE_CODE
310739             AND h1.event_id = xet.event_id
310740  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl85.lookup_type(+)         = 
310741 'CST_DISTRIBUTION_TYPE'
310742   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
310743   AND fvl85.view_application_id(+) = 700
310744   AND fvl85.language(+)            = USERENV('LANG')
310745      AND fvl114.lookup_type(+)         = 'YES_NO'
310746   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
310747   AND fvl114.view_application_id(+) = 0
310748   AND fvl114.language(+)            = USERENV('LANG')
310749   
310750 )
310751 ;
310752 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
310753 
310754       trace
310755          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
310756          ,p_level    => C_LEVEL_STATEMENT
310757          ,p_module   => l_log_module);
310758 
310759 END IF;
310760 --
310761 
310762 
310763 
310764 --
310765 INSERT INTO xla_diag_sources --line1
310766 (
310767         event_id
310768       , ledger_id
310769       , sla_ledger_id
310770       , description_language
310771       , object_name
310772       , object_type_code
310773       , line_number
310774       , source_application_id
310775       , source_type_code
310776       , source_code
310777       , source_value
310778       , source_meaning
310779       , created_by
310780       , creation_date
310781       , last_update_date
310782       , last_updated_by
310783       , last_update_login
310784       , program_update_date
310785       , program_application_id
310786       , program_id
310787       , request_id
310788 )
310789 SELECT  event_id
310790       , p_target_ledger_id
310791       , p_sla_ledger_id
310792       , p_language
310793       , object_name
310794       , object_type_code
310795       , line_number
310796       , source_application_id
310797       , source_type_code
310798       , source_code
310799       , SUBSTR(source_value,1,1996)
310800       , SUBSTR(source_meaning,1,200)
310801       , xla_environment_pkg.g_Usr_Id
310802       , TRUNC(SYSDATE)
310803       , TRUNC(SYSDATE)
310804       , xla_environment_pkg.g_Usr_Id
310805       , xla_environment_pkg.g_Login_Id
310806       , TRUNC(SYSDATE)
310807       , xla_environment_pkg.g_Prog_Appl_Id
310808       , xla_environment_pkg.g_Prog_Id
310809       , xla_environment_pkg.g_Req_Id
310810   FROM (
310811        SELECT xet.event_id                  event_id
310812             , l2.line_number                 line_number
310813             , CASE r
310814                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
310815                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
310816                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
310817                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
310818                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
310819                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
310820                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
310821                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
310822                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
310823                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
310824                 
310825                ELSE null
310826               END                           object_name
310827             , CASE r
310828                 WHEN 1 THEN 'LINE' 
310829                 WHEN 2 THEN 'LINE' 
310830                 WHEN 3 THEN 'LINE' 
310831                 WHEN 4 THEN 'LINE' 
310832                 WHEN 5 THEN 'LINE' 
310833                 WHEN 6 THEN 'LINE' 
310834                 WHEN 7 THEN 'LINE' 
310835                 WHEN 8 THEN 'LINE' 
310836                 WHEN 9 THEN 'LINE' 
310837                 WHEN 10 THEN 'LINE' 
310838                 
310839                 ELSE null
310840               END                           object_type_code
310841             , CASE r
310842                 WHEN 1 THEN '707' 
310843                 WHEN 2 THEN '707' 
310844                 WHEN 3 THEN '707' 
310845                 WHEN 4 THEN '707' 
310846                 WHEN 5 THEN '707' 
310847                 WHEN 6 THEN '707' 
310848                 WHEN 7 THEN '707' 
310849                 WHEN 8 THEN '707' 
310850                 WHEN 9 THEN '707' 
310851                 WHEN 10 THEN '707' 
310852                 
310853                 ELSE null
310854               END                           source_application_id
310855             , 'S'             source_type_code
310856             , CASE r
310857                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
310858                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
310859                 WHEN 3 THEN 'CURRENCY_CODE' 
310860                 WHEN 4 THEN 'ENTERED_AMOUNT' 
310861                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
310862                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
310863                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
310864                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
310865                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
310866                 WHEN 10 THEN 'L_ORGANIZATION_CODE' 
310867                 
310868                 ELSE null
310869               END                           source_code
310870             , CASE r
310871                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
310872                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
310873                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
310874                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
310875                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
310876                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
310877                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
310878                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
310879                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
310880                 WHEN 10 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
310881                 
310882                 ELSE null
310883               END                           source_value
310884             , null              source_meaning
310885          FROM  xla_events_gt     xet  
310886         , CST_XLA_INV_LINES_V  l2
310887             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
310888         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
310889           AND xet.event_type_code = C_EVENT_TYPE_CODE
310890             AND l2.event_id          = xet.event_id
310891 
310892 )
310893 ;
310894 --
310895 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
310896 
310897       trace
310898          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
310899          ,p_level    => C_LEVEL_STATEMENT
310900          ,p_module   => l_log_module);
310901 
310902 END IF;
310903 
310904 
310905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
310906       trace
310907          (p_msg      => 'END of insert_sources_548'
310908          ,p_level    => C_LEVEL_PROCEDURE
310909          ,p_module   => l_log_module);
310910 END IF;
310911 EXCEPTION
310912   WHEN xla_exceptions_pkg.application_exception THEN
310913       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
310914             trace
310915                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
310916                ,p_level    => C_LEVEL_EXCEPTION
310917                ,p_module   => l_log_module);
310918       END IF;
310919       RAISE;
310920   WHEN OTHERS THEN
310921       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
310922             trace
310923                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
310924                ,p_level    => C_LEVEL_EXCEPTION
310925                ,p_module   => l_log_module);
310926        END IF;
310927        xla_exceptions_pkg.raise_message
310928            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_548');
310929 END insert_sources_548;
310930 --
310931 
310932 ---------------------------------------
310933 --
310934 -- PRIVATE FUNCTION
310935 --         EventType_548
310936 --
310937 ----------------------------------------
310938 --
310939 FUNCTION EventType_548
310940        (p_application_id         IN NUMBER
310941        ,p_base_ledger_id         IN NUMBER
310942        ,p_target_ledger_id       IN NUMBER
310943        ,p_language               IN VARCHAR2
310944        ,p_currency_code          IN VARCHAR2
310945        ,p_sla_ledger_id          IN NUMBER
310946        ,p_pad_start_date         IN DATE
310947        ,p_pad_end_date           IN DATE
310948        ,p_primary_ledger_id      IN NUMBER)
310949 RETURN BOOLEAN IS
310950 --
310951 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COGS_RECOGNITION_ADJ';
310952 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
310953 
310954 l_calculate_acctd_flag   VARCHAR2(1) :='N';
310955 l_calculate_g_l_flag     VARCHAR2(1) :='N';
310956 --
310957 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310958 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310959 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
310960 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
310961 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310962 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
310963 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
310964 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310965 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
310966 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
310967 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310968 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310969 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310970 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
310971 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
310972 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
310973 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
310974 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
310975 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
310976 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
310977 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
310978 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
310979 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
310980 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
310981 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
310982 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
310983 
310984 l_event_id                             NUMBER;
310985 l_previous_event_id                    NUMBER;
310986 l_first_event_id                       NUMBER;
310987 l_last_event_id                        NUMBER;
310988 
310989 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
310990 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
310991 --
310992 --
310993 l_result                    BOOLEAN := TRUE;
310994 l_rows                      NUMBER  := 1000;
310995 l_event_type_name           VARCHAR2(80) := 'COGS Recognition Adjustment';
310996 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
310997 l_description               VARCHAR2(4000);
310998 l_transaction_reversal      NUMBER;
310999 l_ae_header_id              NUMBER;
311000 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
311001 l_log_module                VARCHAR2(240);
311002 --
311003 l_acct_reversal_source      VARCHAR2(30);
311004 l_trx_reversal_source       VARCHAR2(30);
311005 
311006 l_continue_with_lines       BOOLEAN := TRUE;
311007 --
311008 l_acc_rev_gl_date_source    DATE;                      -- 4262811
311009 --
311010 type t_array_event_id is table of number index by binary_integer;
311011 
311012 l_rec_array_event                    t_rec_array_event;
311013 l_null_rec_array_event               t_rec_array_event;
311014 l_array_ae_header_id                 xla_number_array_type;
311015 l_actual_flag                        VARCHAR2(1) := NULL;
311016 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
311017 l_balance_type_code                  VARCHAR2(1) :=NULL;
311018 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
311019 
311020 --
311021 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
311022 --
311023 
311024 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
311025 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
311026 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
311027 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
311028 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
311029 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
311030 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
311031 
311032 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
311033 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
311034 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
311035 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
311036 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
311037 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
311038 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
311039 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
311040 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
311041 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
311042 
311043 l_array_source_1              t_array_source_1;
311044 l_array_source_2              t_array_source_2;
311045 l_array_source_3              t_array_source_3;
311046 l_array_source_4              t_array_source_4;
311047 l_array_source_5              t_array_source_5;
311048 l_array_source_85              t_array_source_85;
311049 l_array_source_85_meaning      t_array_lookup_meaning;
311050 l_array_source_114              t_array_source_114;
311051 l_array_source_114_meaning      t_array_lookup_meaning;
311052 
311053 l_array_source_11      t_array_source_11;
311054 l_array_source_84      t_array_source_84;
311055 l_array_source_88      t_array_source_88;
311056 l_array_source_91      t_array_source_91;
311057 l_array_source_92      t_array_source_92;
311058 l_array_source_93      t_array_source_93;
311059 l_array_source_94      t_array_source_94;
311060 l_array_source_95      t_array_source_95;
311061 l_array_source_97      t_array_source_97;
311062 l_array_source_108      t_array_source_108;
311063 
311064 --
311065 CURSOR header_cur
311066 IS
311067 SELECT /*+ leading(xet) cardinality(xet,1) */
311068 -- Event Type Code: COGS_RECOGNITION_ADJ
311069 -- Event Class Code: SALES_ORDER
311070     xet.entity_id
311071   , xet.legal_entity_id
311072   , xet.entity_code
311073   , xet.transaction_number
311074   , xet.event_id
311075   , xet.event_class_code
311076   , xet.event_type_code
311077   , xet.event_number
311078   , xet.event_date
311079   , xet.transaction_date
311080   , xet.reference_num_1
311081   , xet.reference_num_2
311082   , xet.reference_num_3
311083   , xet.reference_num_4
311084   , xet.reference_char_1
311085   , xet.reference_char_2
311086   , xet.reference_char_3
311087   , xet.reference_char_4
311088   , xet.reference_date_1
311089   , xet.reference_date_2
311090   , xet.reference_date_3
311091   , xet.reference_date_4
311092   , xet.event_created_by
311093   , xet.budgetary_control_flag 
311094   , h1.TRANSACTION_ID    source_1
311095   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
311096   , h3.TRANSACTION_QUANTITY    source_3
311097   , h3.TRANSACTION_UOM    source_4
311098   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
311099   , h1.DISTRIBUTION_TYPE    source_85
311100   , fvl85.meaning   source_85_meaning
311101   , h1.TRANSFER_TO_GL_INDICATOR    source_114
311102   , fvl114.meaning   source_114_meaning
311103   FROM xla_events_gt     xet 
311104   , CST_XLA_INV_HEADERS_V  h1
311105   , CST_XLA_INV_REF_V  h3
311106   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
311107   , CST_XLA_INV_TXN_TYPES_REF_V  h5
311108   , fnd_lookup_values    fvl85
311109   , fnd_lookup_values    fvl114
311110  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
311111    and xet.event_type_code = C_EVENT_TYPE_CODE
311112    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
311113  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl85.lookup_type(+)         = 
311114 'CST_DISTRIBUTION_TYPE'
311115   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
311116   AND fvl85.view_application_id(+) = 700
311117   AND fvl85.language(+)            = USERENV('LANG')
311118      AND fvl114.lookup_type(+)         = 'YES_NO'
311119   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
311120   AND fvl114.view_application_id(+) = 0
311121   AND fvl114.language(+)            = USERENV('LANG')
311122   
311123  ORDER BY event_id
311124 ;
311125 
311126 
311127 --
311128 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
311129 IS
311130 SELECT /*+ leading(xet) cardinality(xet,1) */
311131 -- Event Type Code: COGS_RECOGNITION_ADJ
311132 -- Event Class Code: SALES_ORDER
311133     xet.entity_id
311134    ,xet.legal_entity_id
311135    ,xet.entity_code
311136    ,xet.transaction_number
311137    ,xet.event_id
311138    ,xet.event_class_code
311139    ,xet.event_type_code
311140    ,xet.event_number
311141    ,xet.event_date
311142    ,xet.transaction_date
311143    ,xet.reference_num_1
311144    ,xet.reference_num_2
311145    ,xet.reference_num_3
311146    ,xet.reference_num_4
311147    ,xet.reference_char_1
311148    ,xet.reference_char_2
311149    ,xet.reference_char_3
311150    ,xet.reference_char_4
311151    ,xet.reference_date_1
311152    ,xet.reference_date_2
311153    ,xet.reference_date_3
311154    ,xet.reference_date_4
311155    ,xet.event_created_by
311156    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
311157   , l2.CODE_COMBINATION_ID    source_11
311158   , l2.DISTRIBUTION_IDENTIFIER    source_84
311159   , l2.CURRENCY_CODE    source_88
311160   , l2.ENTERED_AMOUNT    source_91
311161   , l2.CURRENCY_CONVERSION_DATE    source_92
311162   , l2.CURRENCY_CONVERSION_RATE    source_93
311163   , l2.CURRENCY_CONVERSION_TYPE    source_94
311164   , l2.ACCOUNTED_AMOUNT    source_95
311165   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
311166   , l2.L_ORGANIZATION_CODE    source_108
311167   FROM xla_events_gt     xet 
311168   , CST_XLA_INV_LINES_V  l2
311169  WHERE xet.event_id between x_first_event_id and x_last_event_id
311170    and xet.event_date between p_pad_start_date and p_pad_end_date
311171    and xet.event_type_code = C_EVENT_TYPE_CODE
311172    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
311173 ;
311174 
311175 --
311176 BEGIN
311177 IF g_log_enabled THEN
311178    l_log_module := C_DEFAULT_MODULE||'.EventType_548';
311179 END IF;
311180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
311181    trace
311182       (p_msg      => 'BEGIN of EventType_548'
311183       ,p_level    => C_LEVEL_PROCEDURE
311184       ,p_module   => l_log_module);
311185 END IF;
311186 
311187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
311188    trace
311189       (p_msg      => 'p_application_id = '||p_application_id||
311190                      ' - p_base_ledger_id = '||p_base_ledger_id||
311191                      ' - p_target_ledger_id  = '||p_target_ledger_id||
311192                      ' - p_language = '||p_language||
311193                      ' - p_currency_code = '||p_currency_code||
311194                      ' - p_sla_ledger_id = '||p_sla_ledger_id
311195       ,p_level    => C_LEVEL_STATEMENT
311196       ,p_module   => l_log_module);
311197 END IF;
311198 --
311199 -- initialze arrays
311200 --
311201 g_array_event.DELETE;
311202 l_rec_array_event := l_null_rec_array_event;
311203 --
311204 --------------------------------------
311205 -- 4262811 Initialze MPA Line Number
311206 --------------------------------------
311207 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
311208 
311209 --
311210 
311211 --
311212 OPEN header_cur;
311213 --
311214 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
311215    trace
311216    (p_msg      => 'SQL - FETCH header_cur'
311217    ,p_level    => C_LEVEL_STATEMENT
311218    ,p_module   => l_log_module);
311219 END IF;
311220 --
311221 LOOP
311222 FETCH header_cur BULK COLLECT INTO
311223         l_array_entity_id
311224       , l_array_legal_entity_id
311225       , l_array_entity_code
311226       , l_array_transaction_num
311227       , l_array_event_id
311228       , l_array_class_code
311229       , l_array_event_type
311230       , l_array_event_number
311231       , l_array_event_date
311232       , l_array_transaction_date
311233       , l_array_reference_num_1
311234       , l_array_reference_num_2
311235       , l_array_reference_num_3
311236       , l_array_reference_num_4
311237       , l_array_reference_char_1
311238       , l_array_reference_char_2
311239       , l_array_reference_char_3
311240       , l_array_reference_char_4
311241       , l_array_reference_date_1
311242       , l_array_reference_date_2
311243       , l_array_reference_date_3
311244       , l_array_reference_date_4
311245       , l_array_event_created_by
311246       , l_array_budgetary_control_flag 
311247       , l_array_source_1
311248       , l_array_source_2
311249       , l_array_source_3
311250       , l_array_source_4
311251       , l_array_source_5
311252       , l_array_source_85
311253       , l_array_source_85_meaning
311254       , l_array_source_114
311255       , l_array_source_114_meaning
311256       LIMIT l_rows;
311257 --
311258 IF (C_LEVEL_EVENT >= g_log_level) THEN
311259    trace
311260    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
311261    ,p_level    => C_LEVEL_EVENT
311262    ,p_module   => l_log_module);
311263 END IF;
311264 --
311265 EXIT WHEN l_array_entity_id.COUNT = 0;
311266 
311267 -- initialize arrays
311268 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
311269 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
311270 
311271 --
311272 -- Bug 4458708
311273 --
311274 XLA_AE_LINES_PKG.g_LineNumber := 0;
311275 
311276 
311277 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
311278 g_last_hdr_idx := l_array_event_id.LAST;
311279 --
311280 -- loop for the headers. Each iteration is for each header extract row
311281 -- fetched in header cursor
311282 --
311283 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
311284 
311285 --
311286 -- set event info as cache for other routines to refer event attributes
311287 --
311288 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
311289    (p_application_id           => p_application_id
311290    ,p_primary_ledger_id        => p_primary_ledger_id
311291    ,p_base_ledger_id           => p_base_ledger_id
311292    ,p_target_ledger_id         => p_target_ledger_id
311293    ,p_entity_id                => l_array_entity_id(hdr_idx)
311294    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
311295    ,p_entity_code              => l_array_entity_code(hdr_idx)
311296    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
311297    ,p_event_id                 => l_array_event_id(hdr_idx)
311298    ,p_event_class_code         => l_array_class_code(hdr_idx)
311299    ,p_event_type_code          => l_array_event_type(hdr_idx)
311300    ,p_event_number             => l_array_event_number(hdr_idx)
311301    ,p_event_date               => l_array_event_date(hdr_idx)
311302    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
311303    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
311304    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
311305    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
311306    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
311307    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
311308    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
311309    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
311310    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
311311    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
311312    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
311313    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
311314    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
311315    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
311316    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
311317 
311318 --
311319 -- set the status of entry to C_VALID (0)
311320 --
311321 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
311322 
311323 --
311324 -- initialize a row for ae header
311325 --
311326 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
311327 
311328 l_event_id := l_array_event_id(hdr_idx);
311329 
311330 --
311331 -- storing the hdr_idx for event. May be used by line cursor.
311332 --
311333 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
311334 
311335 --
311336 -- store sources from header extract. This can be improved to
311337 -- store only those sources from header extract that may be used in lines
311338 --
311339 
311340 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
311341 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
311342 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
311343 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
311344 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
311345 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
311346 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
311347 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
311348 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
311349 
311350 --
311351 -- initilaize the status of ae headers for diffrent balance types
311352 -- the status is initialised to C_NOT_CREATED (2)
311353 --
311354 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
311355 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
311356 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
311357 
311358 --
311359 -- call api to validate and store accounting attributes for header
311360 --
311361 
311362 ------------------------------------------------------------
311363 -- Accrual Reversal : to get date for Standard Source (NONE)
311364 ------------------------------------------------------------
311365 l_acc_rev_gl_date_source := NULL;
311366 
311367      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
311368       l_rec_acct_attrs.array_date_value(1) := 
311369 xla_ae_sources_pkg.GetSystemSourceDate(
311370    p_source_code           => 'XLA_REFERENCE_DATE_1'
311371  , p_source_type_code      => 'Y'
311372  , p_source_application_id =>  602
311373 );
311374      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
311375       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
311376 
311377 
311378 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
311379 
311380 XLA_AE_HEADER_PKG.SetJeCategoryName;
311381 
311382 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
311383 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
311384 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
311385 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
311386 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
311387 
311388 
311389 --
311390 xla_ae_header_pkg.SetHdrDescription(
311391    p_description => Description_1 (
311392    p_application_id => p_application_id 
311393  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
311394  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
311395  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
311396  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
311397  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
311398    )
311399 );
311400 --
311401 
311402 -- No header level analytical criteria
311403 
311404 --
311405 --accounting attribute enhancement, bug 3612931
311406 --
311407 l_trx_reversal_source := SUBSTR(NULL, 1,30);
311408 
311409 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
311410    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
311411 
311412    xla_accounting_err_pkg.build_message
311413       (p_appli_s_name            => 'XLA'
311414       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
311415       ,p_token_1                 => 'ACCT_ATTR_NAME'
311416       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
311417       ,p_token_2                 => 'PRODUCT_NAME'
311418       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
311419       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
311420       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
311421       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
311422 
311423 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
311424    --
311425    -- following sets the accounting attributes needed to reverse
311426    -- accounting for a distributeion
311427    --
311428    xla_ae_lines_pkg.SetTrxReversalAttrs
311429       (p_event_id              => l_event_id
311430       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
311431       ,p_trx_reversal_source   => l_trx_reversal_source);
311432 
311433 END IF;
311434 
311435 
311436 ----------------------------------------------------------------
311437 -- 4262811 -  update the header statuses to invalid in need be
311438 ----------------------------------------------------------------
311439 --
311440 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
311441 
311442 
311443   -----------------------------------------------
311444   -- No accrual reversal for the event class/type
311445   -----------------------------------------------
311446 ----------------------------------------------------------------
311447 
311448 --
311449 -- this ends the header loop iteration for one bulk fetch
311450 --
311451 END LOOP;
311452 
311453 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
311454 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
311455 
311456 --
311457 -- insert dummy rows into lines gt table that were created due to
311458 -- transaction reversals
311459 --
311460 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
311461    l_result := XLA_AE_LINES_PKG.InsertLines;
311462 END IF;
311463 
311464 --
311465 -- reset the temp_line_num for each set of events fetched from header
311466 -- cursor rather than doing it for each new event in line cursor
311467 -- Bug 3939231
311468 --
311469 xla_ae_lines_pkg.g_temp_line_num := 0;
311470 
311471 
311472 
311473 --
311474 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
311475 --
311476 --
311477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
311478 
311479       trace
311480          (p_msg      => 'SQL - FETCH line_cur'
311481          ,p_level    => C_LEVEL_STATEMENT
311482          ,p_module   => l_log_module);
311483 
311484 END IF;
311485 --
311486 --
311487 LOOP
311488   --
311489   FETCH line_cur BULK COLLECT INTO
311490         l_array_entity_id
311491       , l_array_legal_entity_id
311492       , l_array_entity_code
311493       , l_array_transaction_num
311494       , l_array_event_id
311495       , l_array_class_code
311496       , l_array_event_type
311497       , l_array_event_number
311498       , l_array_event_date
311499       , l_array_transaction_date
311500       , l_array_reference_num_1
311501       , l_array_reference_num_2
311502       , l_array_reference_num_3
311503       , l_array_reference_num_4
311504       , l_array_reference_char_1
311505       , l_array_reference_char_2
311506       , l_array_reference_char_3
311507       , l_array_reference_char_4
311508       , l_array_reference_date_1
311509       , l_array_reference_date_2
311510       , l_array_reference_date_3
311511       , l_array_reference_date_4
311512       , l_array_event_created_by
311513       , l_array_budgetary_control_flag
311514       , l_array_extract_line_num 
311515       , l_array_source_11
311516       , l_array_source_84
311517       , l_array_source_88
311518       , l_array_source_91
311519       , l_array_source_92
311520       , l_array_source_93
311521       , l_array_source_94
311522       , l_array_source_95
311523       , l_array_source_97
311524       , l_array_source_108
311525       LIMIT l_rows;
311526 
311527   --
311528   IF (C_LEVEL_EVENT >= g_log_level) THEN
311529             trace
311530                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
311531                ,p_level    => C_LEVEL_EVENT
311532                ,p_module   => l_log_module);
311533   END IF;
311534   --
311535   EXIT WHEN l_array_entity_id.count = 0;
311536 
311537   XLA_AE_LINES_PKG.g_rec_lines := null;
311538 
311539 --
311540 -- Bug 4458708
311541 --
311542 XLA_AE_LINES_PKG.g_LineNumber := 0;
311543 --
311544 --
311545 
311546 FOR Idx IN 1..l_array_event_id.count LOOP
311547    --
311548    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
311549    --
311550    l_event_id := l_array_event_id(idx);  -- 5648433
311551 
311552    --
311553    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
311554    --
311555 
311556    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
311557              (g_array_event(l_event_id).array_value_num('header_index'))
311558          ,'N'
311559          ) <> 'Y'
311560    THEN
311561       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
311562          trace
311563             (p_msg      => 'Trancaction revesal option is not Y '
311564             ,p_level    => C_LEVEL_STATEMENT
311565             ,p_module   => l_log_module);
311566       END IF;
311567 
311568 --
311569 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
311570 --
311571 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
311572 --
311573 -- set event info as cache for other routines to refer event attributes
311574 --
311575 
311576 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
311577    l_previous_event_id := l_event_id;
311578 
311579    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
311580       (p_application_id           => p_application_id
311581       ,p_primary_ledger_id        => p_primary_ledger_id
311582       ,p_base_ledger_id           => p_base_ledger_id
311583       ,p_target_ledger_id         => p_target_ledger_id
311584       ,p_entity_id                => l_array_entity_id(Idx)
311585       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
311586       ,p_entity_code              => l_array_entity_code(Idx)
311587       ,p_transaction_num          => l_array_transaction_num(Idx)
311588       ,p_event_id                 => l_array_event_id(Idx)
311589       ,p_event_class_code         => l_array_class_code(Idx)
311590       ,p_event_type_code          => l_array_event_type(Idx)
311591       ,p_event_number             => l_array_event_number(Idx)
311592       ,p_event_date               => l_array_event_date(Idx)
311593       ,p_transaction_date         => l_array_transaction_date(Idx)
311594       ,p_reference_num_1          => l_array_reference_num_1(Idx)
311595       ,p_reference_num_2          => l_array_reference_num_2(Idx)
311596       ,p_reference_num_3          => l_array_reference_num_3(Idx)
311597       ,p_reference_num_4          => l_array_reference_num_4(Idx)
311598       ,p_reference_char_1         => l_array_reference_char_1(Idx)
311599       ,p_reference_char_2         => l_array_reference_char_2(Idx)
311600       ,p_reference_char_3         => l_array_reference_char_3(Idx)
311601       ,p_reference_char_4         => l_array_reference_char_4(Idx)
311602       ,p_reference_date_1         => l_array_reference_date_1(Idx)
311603       ,p_reference_date_2         => l_array_reference_date_2(Idx)
311604       ,p_reference_date_3         => l_array_reference_date_3(Idx)
311605       ,p_reference_date_4         => l_array_reference_date_4(Idx)
311606       ,p_event_created_by         => l_array_event_created_by(Idx)
311607       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
311608        --
311609 END IF;
311610 
311611 
311612 
311613 --
311614 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
311615 
311616 l_acct_reversal_source := SUBSTR(NULL, 1,30);
311617 
311618 IF l_continue_with_lines THEN
311619    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
311620       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
311621 
311622       xla_accounting_err_pkg.build_message
311623          (p_appli_s_name            => 'XLA'
311624          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
311625          ,p_token_1                 => 'LINE_NUMBER'
311626          ,p_value_1                 => l_array_extract_line_num(Idx)
311627          ,p_token_2                 => 'PRODUCT_NAME'
311628          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
311629          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
311630          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
311631          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
311632 
311633    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
311634       --
311635       -- following sets the accounting attributes needed to reverse
311636       -- accounting for a distributeion
311637       --
311638 
311639       --
311640       -- 5217187
311641       --
311642       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
311643       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
311644                                        g_array_event(l_event_id).array_value_num('header_index'));
311645       --
311646       --
311647 
311648       -- No reversal code generated
311649 
311650       xla_ae_lines_pkg.SetAcctReversalAttrs
311651          (p_event_id             => l_event_id
311652          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
311653          ,p_calculate_acctd_flag => l_calculate_acctd_flag
311654          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
311655    END IF;
311656 
311657    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
311658        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
311659 
311660 --
311661 AcctLineType_57 (
311662  p_application_id  => p_application_id
311663  ,p_event_id     => l_event_id
311664  ,p_calculate_acctd_flag => l_calculate_acctd_flag
311665  ,p_calculate_g_l_flag => l_calculate_g_l_flag
311666  ,p_actual_flag => l_actual_flag
311667  ,p_balance_type_code => l_balance_type_code
311668  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
311669  
311670  , p_source_11 => l_array_source_11(Idx)
311671  , p_source_84 => l_array_source_84(Idx)
311672  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
311673  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
311674  , p_source_88 => l_array_source_88(Idx)
311675  , p_source_91 => l_array_source_91(Idx)
311676  , p_source_92 => l_array_source_92(Idx)
311677  , p_source_93 => l_array_source_93(Idx)
311678  , p_source_94 => l_array_source_94(Idx)
311679  , p_source_95 => l_array_source_95(Idx)
311680  , p_source_97 => l_array_source_97(Idx)
311681  );
311682 If(l_balance_type_code = 'A') THEN
311683   l_actual_gain_loss_ref := l_gain_or_loss_ref;
311684 END IF;
311685 
311686 --
311687 
311688 
311689 --
311690 AcctLineType_68 (
311691  p_application_id  => p_application_id
311692  ,p_event_id     => l_event_id
311693  ,p_calculate_acctd_flag => l_calculate_acctd_flag
311694  ,p_calculate_g_l_flag => l_calculate_g_l_flag
311695  ,p_actual_flag => l_actual_flag
311696  ,p_balance_type_code => l_balance_type_code
311697  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
311698  
311699  , p_source_11 => l_array_source_11(Idx)
311700  , p_source_84 => l_array_source_84(Idx)
311701  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
311702  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
311703  , p_source_88 => l_array_source_88(Idx)
311704  , p_source_91 => l_array_source_91(Idx)
311705  , p_source_92 => l_array_source_92(Idx)
311706  , p_source_93 => l_array_source_93(Idx)
311707  , p_source_94 => l_array_source_94(Idx)
311708  , p_source_95 => l_array_source_95(Idx)
311709  , p_source_97 => l_array_source_97(Idx)
311710  );
311711 If(l_balance_type_code = 'A') THEN
311712   l_actual_gain_loss_ref := l_gain_or_loss_ref;
311713 END IF;
311714 
311715 --
311716 
311717 
311718 --
311719 AcctLineType_79 (
311720  p_application_id  => p_application_id
311721  ,p_event_id     => l_event_id
311722  ,p_calculate_acctd_flag => l_calculate_acctd_flag
311723  ,p_calculate_g_l_flag => l_calculate_g_l_flag
311724  ,p_actual_flag => l_actual_flag
311725  ,p_balance_type_code => l_balance_type_code
311726  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
311727  
311728  , p_source_11 => l_array_source_11(Idx)
311729  , p_source_84 => l_array_source_84(Idx)
311730  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
311731  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
311732  , p_source_88 => l_array_source_88(Idx)
311733  , p_source_91 => l_array_source_91(Idx)
311734  , p_source_92 => l_array_source_92(Idx)
311735  , p_source_93 => l_array_source_93(Idx)
311736  , p_source_94 => l_array_source_94(Idx)
311737  , p_source_95 => l_array_source_95(Idx)
311738  , p_source_97 => l_array_source_97(Idx)
311739  );
311740 If(l_balance_type_code = 'A') THEN
311741   l_actual_gain_loss_ref := l_gain_or_loss_ref;
311742 END IF;
311743 
311744 --
311745 
311746 
311747 --
311748 AcctLineType_117 (
311749  p_application_id  => p_application_id
311750  ,p_event_id     => l_event_id
311751  ,p_calculate_acctd_flag => l_calculate_acctd_flag
311752  ,p_calculate_g_l_flag => l_calculate_g_l_flag
311753  ,p_actual_flag => l_actual_flag
311754  ,p_balance_type_code => l_balance_type_code
311755  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
311756  
311757  , p_source_11 => l_array_source_11(Idx)
311758  , p_source_84 => l_array_source_84(Idx)
311759  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
311760  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
311761  , p_source_88 => l_array_source_88(Idx)
311762  , p_source_91 => l_array_source_91(Idx)
311763  , p_source_92 => l_array_source_92(Idx)
311764  , p_source_93 => l_array_source_93(Idx)
311765  , p_source_94 => l_array_source_94(Idx)
311766  , p_source_95 => l_array_source_95(Idx)
311767  , p_source_97 => l_array_source_97(Idx)
311768  );
311769 If(l_balance_type_code = 'A') THEN
311770   l_actual_gain_loss_ref := l_gain_or_loss_ref;
311771 END IF;
311772 
311773 --
311774 
311775 
311776 --
311777 AcctLineType_234 (
311778  p_application_id  => p_application_id
311779  ,p_event_id     => l_event_id
311780  ,p_calculate_acctd_flag => l_calculate_acctd_flag
311781  ,p_calculate_g_l_flag => l_calculate_g_l_flag
311782  ,p_actual_flag => l_actual_flag
311783  ,p_balance_type_code => l_balance_type_code
311784  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
311785  
311786  , p_source_11 => l_array_source_11(Idx)
311787  , p_source_84 => l_array_source_84(Idx)
311788  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
311789  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
311790  , p_source_88 => l_array_source_88(Idx)
311791  , p_source_91 => l_array_source_91(Idx)
311792  , p_source_92 => l_array_source_92(Idx)
311793  , p_source_93 => l_array_source_93(Idx)
311794  , p_source_94 => l_array_source_94(Idx)
311795  , p_source_95 => l_array_source_95(Idx)
311796  , p_source_97 => l_array_source_97(Idx)
311797  , p_source_108 => l_array_source_108(Idx)
311798  );
311799 If(l_balance_type_code = 'A') THEN
311800   l_actual_gain_loss_ref := l_gain_or_loss_ref;
311801 END IF;
311802 
311803 --
311804 
311805       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
311806       -- or secondary ledger that has different currency with primary
311807       -- or alc that is calculated by sla
311808       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
311809             (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'))
311810 
311811 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
311812 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
311813           AND (l_actual_flag = 'A')) THEN
311814         XLA_AE_LINES_PKG.CreateGainOrLossLines(
311815           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
311816          ,p_application_id   => p_application_id
311817          ,p_amb_context_code => 'DEFAULT'
311818          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
311819          ,p_event_class_code => C_EVENT_CLASS_CODE
311820          ,p_event_type_code  => C_EVENT_TYPE_CODE
311821          
311822          ,p_gain_ccid        => -1
311823          ,p_loss_ccid        => -1
311824 
311825          ,p_actual_flag      => l_actual_flag
311826          ,p_enc_flag         => null
311827          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
311828          ,p_enc_g_l_ref      => null
311829          );
311830       END IF;
311831    END IF;
311832 END IF;
311833 
311834    ELSE
311835       --
311836       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
311837       --
311838       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
311839          trace
311840             (p_msg      => 'Trancaction revesal option is Y'
311841             ,p_level    => C_LEVEL_STATEMENT
311842             ,p_module   => l_log_module);
311843       END IF;
311844    END IF;
311845 
311846 END LOOP;
311847 l_result := XLA_AE_LINES_PKG.InsertLines ;
311848 end loop;
311849 close line_cur;
311850 
311851 
311852 --
311853 -- insert headers into xla_ae_headers_gt table
311854 --
311855 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
311856 
311857 -- insert into errors table here.
311858 
311859 END LOOP;
311860 
311861 --
311862 -- 4865292
311863 --
311864 -- Compare g_hdr_extract_count with event count in
311865 -- CreateHeadersAndLines.
311866 --
311867 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
311868 
311869 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
311870    trace (p_msg     => '# rows extracted from header extract objects '
311871                     || ' (running total): '
311872                     || g_hdr_extract_count
311873          ,p_level   => C_LEVEL_STATEMENT
311874          ,p_module  => l_log_module);
311875 END IF;
311876 
311877 CLOSE header_cur;
311878 --
311879 
311880 --
311881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
311882    trace
311883       (p_msg      => 'END of EventType_548'
311884       ,p_level    => C_LEVEL_PROCEDURE
311885       ,p_module   => l_log_module);
311886 END IF;
311887 --
311888 RETURN l_result;
311889 EXCEPTION
311890 WHEN xla_exceptions_pkg.application_exception THEN
311891    
311892 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
311893 
311894    
311895 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
311896 
311897    RAISE;
311898 
311899 WHEN NO_DATA_FOUND THEN
311900 
311901 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
311902 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
311903 
311904 FOR header_record IN header_cur
311905 LOOP
311906     l_array_header_events(header_record.event_id) := header_record.event_id;
311907 END LOOP;
311908 
311909 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
311910 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
311911 
311912 fnd_file.put_line(fnd_file.LOG, '                    ');
311913 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
311914 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
311915 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
311916 
311917 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
311918 LOOP
311919 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
311920 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
311921         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
311922 	END IF;
311923 END LOOP;
311924 
311925 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
311926 fnd_file.put_line(fnd_file.LOG, '                    ');
311927 
311928 
311929 xla_exceptions_pkg.raise_message
311930       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_548');
311931 
311932 
311933 WHEN OTHERS THEN
311934    xla_exceptions_pkg.raise_message
311935       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_548');
311936 END EventType_548;
311937 --
311938 
311939 ---------------------------------------
311940 --
311941 -- PRIVATE PROCEDURE
311942 --         insert_sources_549
311943 --
311944 ----------------------------------------
311945 --
311946 PROCEDURE insert_sources_549(
311947                                 p_target_ledger_id       IN NUMBER
311948                               , p_language               IN VARCHAR2
311949                               , p_sla_ledger_id          IN NUMBER
311950                               , p_pad_start_date         IN DATE
311951                               , p_pad_end_date           IN DATE
311952                          )
311953 IS
311954 
311955 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CON_INV_OWNR_TXFR_ALL';
311956 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
311957 p_apps_owner                   VARCHAR2(30);
311958 l_log_module                   VARCHAR2(240);
311959 BEGIN
311960 IF g_log_enabled THEN
311961       l_log_module := C_DEFAULT_MODULE||'.insert_sources_549';
311962 END IF;
311963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
311964 
311965       trace
311966          (p_msg      => 'BEGIN of insert_sources_549'
311967          ,p_level    => C_LEVEL_PROCEDURE
311968          ,p_module   => l_log_module);
311969 
311970 END IF;
311971 
311972 -- select APPS owner
311973 SELECT oracle_username
311974   INTO p_apps_owner
311975   FROM fnd_oracle_userid
311976  WHERE read_only_flag = 'U'
311977 ;
311978 
311979 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
311980       trace
311981          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
311982                         ' - p_language = '||p_language||
311983                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
311984                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
311985                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
311986                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
311987          ,p_level    => C_LEVEL_STATEMENT
311988          ,p_module   => l_log_module);
311989 END IF;
311990 
311991 
311992 --
311993 INSERT INTO xla_diag_sources --hdr2
311994 (
311995         event_id
311996       , ledger_id
311997       , sla_ledger_id
311998       , description_language
311999       , object_name
312000       , object_type_code
312001       , line_number
312002       , source_application_id
312003       , source_type_code
312004       , source_code
312005       , source_value
312006       , source_meaning
312007       , created_by
312008       , creation_date
312009       , last_update_date
312010       , last_updated_by
312011       , last_update_login
312012       , program_update_date
312013       , program_application_id
312014       , program_id
312015       , request_id
312016 )
312017 SELECT
312018         event_id
312019       , p_target_ledger_id
312020       , p_sla_ledger_id
312021       , p_language
312022       , object_name
312023       , object_type_code
312024       , line_number
312025       , source_application_id
312026       , source_type_code
312027       , source_code
312028       , SUBSTR(source_value ,1,1996)
312029       , SUBSTR(source_meaning ,1,200)
312030       , xla_environment_pkg.g_Usr_Id
312031       , TRUNC(SYSDATE)
312032       , TRUNC(SYSDATE)
312033       , xla_environment_pkg.g_Usr_Id
312034       , xla_environment_pkg.g_Login_Id
312035       , TRUNC(SYSDATE)
312036       , xla_environment_pkg.g_Prog_Appl_Id
312037       , xla_environment_pkg.g_Prog_Id
312038       , xla_environment_pkg.g_Req_Id
312039   FROM (
312040        SELECT xet.event_id                  event_id
312041             , 0                          line_number
312042             , CASE r
312043                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
312044                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
312045                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
312046                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
312047                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
312048                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
312049                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
312050                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
312051                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
312052                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
312053                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
312054                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
312055                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
312056                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
312057                 WHEN 15 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
312058                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
312059                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
312060                 
312061                ELSE null
312062               END                           object_name
312063             , CASE r
312064                 WHEN 1 THEN 'HEADER' 
312065                 WHEN 2 THEN 'HEADER' 
312066                 WHEN 3 THEN 'HEADER' 
312067                 WHEN 4 THEN 'HEADER' 
312068                 WHEN 5 THEN 'HEADER' 
312069                 WHEN 6 THEN 'HEADER' 
312070                 WHEN 7 THEN 'HEADER' 
312071                 WHEN 8 THEN 'HEADER' 
312072                 WHEN 9 THEN 'HEADER' 
312073                 WHEN 10 THEN 'HEADER' 
312074                 WHEN 11 THEN 'HEADER' 
312075                 WHEN 12 THEN 'HEADER' 
312076                 WHEN 13 THEN 'HEADER' 
312077                 WHEN 14 THEN 'HEADER' 
312078                 WHEN 15 THEN 'HEADER' 
312079                 WHEN 16 THEN 'HEADER' 
312080                 WHEN 17 THEN 'HEADER' 
312081                 
312082                 ELSE null
312083               END                           object_type_code
312084             , CASE r
312085                 WHEN 1 THEN '707' 
312086                 WHEN 2 THEN '707' 
312087                 WHEN 3 THEN '707' 
312088                 WHEN 4 THEN '707' 
312089                 WHEN 5 THEN '707' 
312090                 WHEN 6 THEN '707' 
312091                 WHEN 7 THEN '707' 
312092                 WHEN 8 THEN '707' 
312093                 WHEN 9 THEN '707' 
312094                 WHEN 10 THEN '707' 
312095                 WHEN 11 THEN '707' 
312096                 WHEN 12 THEN '707' 
312097                 WHEN 13 THEN '707' 
312098                 WHEN 14 THEN '707' 
312099                 WHEN 15 THEN '707' 
312100                 WHEN 16 THEN '707' 
312101                 WHEN 17 THEN '707' 
312102                 
312103                 ELSE null
312104               END                           source_application_id
312105             , 'S'             source_type_code
312106             , CASE r
312107                 WHEN 1 THEN 'TRANSACTION_ID' 
312108                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
312109                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
312110                 WHEN 4 THEN 'TRANSACTION_UOM' 
312111                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
312112                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
312113                 WHEN 7 THEN 'INV_ORG_AVG_COST_VAR_ACCT' 
312114                 WHEN 8 THEN 'PLA_BRIDGING_ACCOUNT' 
312115                 WHEN 9 THEN 'PLA_EXPENSE_ACCOUNT' 
312116                 WHEN 10 THEN 'PLA_MATERIAL_ACCOUNT' 
312117                 WHEN 11 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
312118                 WHEN 12 THEN 'PLA_RESOURCE_ACCOUNT' 
312119                 WHEN 13 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
312120                 WHEN 14 THEN 'PLA_OVERHEAD_ACCOUNT' 
312121                 WHEN 15 THEN 'INV_ORG_PUR_PRICE_VAR_ACCT' 
312122                 WHEN 16 THEN 'DISTRIBUTION_TYPE' 
312123                 WHEN 17 THEN 'TRANSFER_TO_GL_INDICATOR' 
312124                 
312125                 ELSE null
312126               END                           source_code
312127             , CASE r
312128                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
312129                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
312130                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
312131                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
312132                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
312133                 WHEN 6 THEN TO_CHAR(h4.INV_TXN_DISTRIBUTION_ACCT)
312134                 WHEN 7 THEN TO_CHAR(h3.INV_ORG_AVG_COST_VAR_ACCT)
312135                 WHEN 8 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
312136                 WHEN 9 THEN TO_CHAR(h7.PLA_EXPENSE_ACCOUNT)
312137                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
312138                 WHEN 11 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
312139                 WHEN 12 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
312140                 WHEN 13 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
312141                 WHEN 14 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
312142                 WHEN 15 THEN TO_CHAR(h3.INV_ORG_PUR_PRICE_VAR_ACCT)
312143                 WHEN 16 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
312144                 WHEN 17 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
312145                 
312146                 ELSE null
312147               END                           source_value
312148             , CASE r
312149                 WHEN 16 THEN fvl85.meaning
312150                 WHEN 17 THEN fvl114.meaning
312151                 
312152                 ELSE null
312153               END               source_meaning
312154          FROM xla_events_gt     xet  
312155       , CST_XLA_INV_HEADERS_V  h1
312156       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
312157       , CST_XLA_INV_REF_V  h4
312158       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
312159       , CST_XLA_INV_TXN_TYPES_REF_V  h6
312160       , CST_XLA_PLA_CATEGORY_REF_V  h7
312161   , fnd_lookup_values    fvl85
312162   , fnd_lookup_values    fvl114
312163              ,(select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
312164          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
312165            AND xet.event_class_code = C_EVENT_CLASS_CODE
312166               AND h1.event_id = xet.event_id
312167  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h7.pla_cat_organization_id  (+) = h1.organization_id 
312168 and h7.pla_cat_item_id          (+) = h1.inventory_item_id 
312169 and h7.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
312170   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
312171   AND fvl85.view_application_id(+) = 700
312172   AND fvl85.language(+)            = USERENV('LANG')
312173      AND fvl114.lookup_type(+)         = 'YES_NO'
312174   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
312175   AND fvl114.view_application_id(+) = 0
312176   AND fvl114.language(+)            = USERENV('LANG')
312177   
312178 )
312179 ;
312180 --
312181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
312182 
312183       trace
312184          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
312185          ,p_level    => C_LEVEL_STATEMENT
312186          ,p_module   => l_log_module);
312187 
312188 END IF;
312189 --
312190 
312191 
312192 
312193 --
312194 INSERT INTO xla_diag_sources  --line2
312195 (
312196         event_id
312197       , ledger_id
312198       , sla_ledger_id
312199       , description_language
312200       , object_name
312201       , object_type_code
312202       , line_number
312203       , source_application_id
312204       , source_type_code
312205       , source_code
312206       , source_value
312207       , source_meaning
312208       , created_by
312209       , creation_date
312210       , last_update_date
312211       , last_updated_by
312212       , last_update_login
312213       , program_update_date
312214       , program_application_id
312215       , program_id
312216       , request_id
312217 )
312218 SELECT  event_id
312219       , p_target_ledger_id
312220       , p_sla_ledger_id
312221       , p_language
312222       , object_name
312223       , object_type_code
312224       , line_number
312225       , source_application_id
312226       , source_type_code
312227       , source_code
312228       , SUBSTR(source_value,1,1996)
312229       , SUBSTR(source_meaning ,1,200)
312230       , xla_environment_pkg.g_Usr_Id
312231       , TRUNC(SYSDATE)
312232       , TRUNC(SYSDATE)
312233       , xla_environment_pkg.g_Usr_Id
312234       , xla_environment_pkg.g_Login_Id
312235       , TRUNC(SYSDATE)
312236       , xla_environment_pkg.g_Prog_Appl_Id
312237       , xla_environment_pkg.g_Prog_Id
312238       , xla_environment_pkg.g_Req_Id
312239   FROM (
312240        SELECT xet.event_id                  event_id
312241             , l2.line_number                 line_number
312242             , CASE r
312243                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
312244                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
312245                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
312246                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
312247                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
312248                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
312249                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
312250                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
312251                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
312252                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
312253                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
312254                 
312255                ELSE null
312256               END                           object_name
312257             , CASE r
312258                 WHEN 1 THEN 'LINE' 
312259                 WHEN 2 THEN 'LINE' 
312260                 WHEN 3 THEN 'LINE' 
312261                 WHEN 4 THEN 'LINE' 
312262                 WHEN 5 THEN 'LINE' 
312263                 WHEN 6 THEN 'LINE' 
312264                 WHEN 7 THEN 'LINE' 
312265                 WHEN 8 THEN 'LINE' 
312266                 WHEN 9 THEN 'LINE' 
312267                 WHEN 10 THEN 'LINE' 
312268                 WHEN 11 THEN 'LINE' 
312269                 
312270                 ELSE null
312271               END                           object_type_code
312272             , CASE r
312273                 WHEN 1 THEN '707' 
312274                 WHEN 2 THEN '707' 
312275                 WHEN 3 THEN '707' 
312276                 WHEN 4 THEN '707' 
312277                 WHEN 5 THEN '707' 
312278                 WHEN 6 THEN '707' 
312279                 WHEN 7 THEN '707' 
312280                 WHEN 8 THEN '707' 
312281                 WHEN 9 THEN '707' 
312282                 WHEN 10 THEN '707' 
312283                 WHEN 11 THEN '707' 
312284                 
312285                 ELSE null
312286               END                           source_application_id
312287             , 'S'             source_type_code
312288             , CASE r
312289                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
312290                 WHEN 2 THEN 'COST_ELEMENT_ID' 
312291                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
312292                 WHEN 4 THEN 'CURRENCY_CODE' 
312293                 WHEN 5 THEN 'ENTERED_AMOUNT' 
312294                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
312295                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
312296                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
312297                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
312298                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
312299                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
312300                 
312301                 ELSE null
312302               END                           source_code
312303             , CASE r
312304                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
312305                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
312306                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
312307                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
312308                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
312309                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
312310                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
312311                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
312312                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
312313                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
312314                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
312315                 
312316                 ELSE null
312317               END                           source_value
312318             , CASE r
312319                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
312320                           1009615
312321                          ,TO_CHAR(l2.COST_ELEMENT_ID)
312322                          ,'COST_ELEMENT_ID'
312323                          ,'S'
312324                          ,707)
312325                 
312326                 ELSE null
312327               END               source_meaning
312328          FROM  xla_events_gt     xet  
312329         , CST_XLA_INV_LINES_V  l2
312330             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
312331         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
312332           AND xet.event_class_code = C_EVENT_CLASS_CODE
312333             AND l2.event_id          = xet.event_id
312334 
312335 )
312336 ;
312337 --
312338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
312339 
312340       trace
312341          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
312342          ,p_level    => C_LEVEL_STATEMENT
312343          ,p_module   => l_log_module);
312344 
312345 END IF;
312346 
312347 
312348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
312349       trace
312350          (p_msg      => 'END of insert_sources_549'
312351          ,p_level    => C_LEVEL_PROCEDURE
312352          ,p_module   => l_log_module);
312353 END IF;
312354 EXCEPTION
312355   WHEN xla_exceptions_pkg.application_exception THEN
312356       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
312357             trace
312358                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
312359                ,p_level    => C_LEVEL_EXCEPTION
312360                ,p_module   => l_log_module);
312361       END IF;
312362       RAISE;
312363   WHEN OTHERS THEN
312364       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
312365             trace
312366                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
312367                ,p_level    => C_LEVEL_EXCEPTION
312368                ,p_module   => l_log_module);
312369        END IF;
312370        xla_exceptions_pkg.raise_message
312371            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_549');
312372 END insert_sources_549;
312373 --
312374 
312375 ---------------------------------------
312376 --
312377 -- PRIVATE FUNCTION
312378 --         EventClass_549
312379 --
312380 ----------------------------------------
312381 --
312382 FUNCTION EventClass_549
312383        (p_application_id         IN NUMBER
312384        ,p_base_ledger_id         IN NUMBER
312385        ,p_target_ledger_id       IN NUMBER
312386        ,p_language               IN VARCHAR2
312387        ,p_currency_code          IN VARCHAR2
312388        ,p_sla_ledger_id          IN NUMBER
312389        ,p_pad_start_date         IN DATE
312390        ,p_pad_end_date           IN DATE
312391        ,p_primary_ledger_id      IN NUMBER)
312392 RETURN BOOLEAN IS
312393 --
312394 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CON_INV_OWNR_TXFR_ALL';
312395 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
312396 
312397 l_calculate_acctd_flag   VARCHAR2(1) :='N';
312398 l_calculate_g_l_flag     VARCHAR2(1) :='N';
312399 --
312400 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312401 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312402 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
312403 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
312404 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312405 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
312406 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
312407 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312408 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
312409 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
312410 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312411 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312412 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312413 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
312414 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
312415 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
312416 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
312417 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
312418 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
312419 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
312420 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
312421 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
312422 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
312423 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
312424 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
312425 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
312426 
312427 l_event_id                             NUMBER;
312428 l_previous_event_id                    NUMBER;
312429 l_first_event_id                       NUMBER;
312430 l_last_event_id                        NUMBER;
312431 
312432 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
312433 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
312434 --
312435 --
312436 l_result                    BOOLEAN := TRUE;
312437 l_rows                      NUMBER  := 1000;
312438 l_event_type_name           VARCHAR2(80) := 'All';
312439 l_event_class_name          VARCHAR2(80) := 'Consigned Inventory Ownership Transfer';
312440 l_description               VARCHAR2(4000);
312441 l_transaction_reversal      NUMBER;
312442 l_ae_header_id              NUMBER;
312443 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
312444 l_log_module                VARCHAR2(240);
312445 --
312446 l_acct_reversal_source      VARCHAR2(30);
312447 l_trx_reversal_source       VARCHAR2(30);
312448 
312449 l_continue_with_lines       BOOLEAN := TRUE;
312450 --
312451 l_acc_rev_gl_date_source    DATE;                      -- 4262811
312452 --
312453 type t_array_event_id is table of number index by binary_integer;
312454 
312455 l_rec_array_event                    t_rec_array_event;
312456 l_null_rec_array_event               t_rec_array_event;
312457 l_array_ae_header_id                 xla_number_array_type;
312458 l_actual_flag                        VARCHAR2(1) := NULL;
312459 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
312460 l_balance_type_code                  VARCHAR2(1) :=NULL;
312461 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
312462 
312463 --
312464 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
312465 --
312466 
312467 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
312468 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
312469 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
312470 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
312471 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
312472 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
312473 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_AVG_COST_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
312474 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
312475 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
312476 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
312477 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
312478 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
312479 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
312480 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
312481 TYPE t_array_source_58 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_PUR_PRICE_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
312482 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
312483 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
312484 
312485 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
312486 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
312487 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
312488 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
312489 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
312490 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
312491 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
312492 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
312493 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
312494 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
312495 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
312496 
312497 l_array_source_1              t_array_source_1;
312498 l_array_source_2              t_array_source_2;
312499 l_array_source_3              t_array_source_3;
312500 l_array_source_4              t_array_source_4;
312501 l_array_source_5              t_array_source_5;
312502 l_array_source_20              t_array_source_20;
312503 l_array_source_21              t_array_source_21;
312504 l_array_source_22              t_array_source_22;
312505 l_array_source_24              t_array_source_24;
312506 l_array_source_41              t_array_source_41;
312507 l_array_source_42              t_array_source_42;
312508 l_array_source_43              t_array_source_43;
312509 l_array_source_44              t_array_source_44;
312510 l_array_source_45              t_array_source_45;
312511 l_array_source_58              t_array_source_58;
312512 l_array_source_85              t_array_source_85;
312513 l_array_source_85_meaning      t_array_lookup_meaning;
312514 l_array_source_114              t_array_source_114;
312515 l_array_source_114_meaning      t_array_lookup_meaning;
312516 
312517 l_array_source_11      t_array_source_11;
312518 l_array_source_15      t_array_source_15;
312519 l_array_source_84      t_array_source_84;
312520 l_array_source_88      t_array_source_88;
312521 l_array_source_91      t_array_source_91;
312522 l_array_source_92      t_array_source_92;
312523 l_array_source_93      t_array_source_93;
312524 l_array_source_94      t_array_source_94;
312525 l_array_source_95      t_array_source_95;
312526 l_array_source_97      t_array_source_97;
312527 l_array_source_108      t_array_source_108;
312528 
312529 --
312530 CURSOR header_cur
312531 IS
312532 SELECT /*+ leading(xet) cardinality(xet,1) */
312533 -- Event Class Code: CON_INV_OWNR_TXFR
312534     xet.entity_id
312535    ,xet.legal_entity_id
312536    ,xet.entity_code
312537    ,xet.transaction_number
312538    ,xet.event_id
312539    ,xet.event_class_code
312540    ,xet.event_type_code
312541    ,xet.event_number
312542    ,xet.event_date
312543    ,xet.transaction_date
312544    ,xet.reference_num_1
312545    ,xet.reference_num_2
312546    ,xet.reference_num_3
312547    ,xet.reference_num_4
312548    ,xet.reference_char_1
312549    ,xet.reference_char_2
312550    ,xet.reference_char_3
312551    ,xet.reference_char_4
312552    ,xet.reference_date_1
312553    ,xet.reference_date_2
312554    ,xet.reference_date_3
312555    ,xet.reference_date_4
312556    ,xet.event_created_by
312557    ,xet.budgetary_control_flag 
312558   , h1.TRANSACTION_ID    source_1
312559   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
312560   , h4.TRANSACTION_QUANTITY    source_3
312561   , h4.TRANSACTION_UOM    source_4
312562   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
312563   , h4.INV_TXN_DISTRIBUTION_ACCT    source_20
312564   , h3.INV_ORG_AVG_COST_VAR_ACCT    source_21
312565   , h7.PLA_BRIDGING_ACCOUNT    source_22
312566   , h7.PLA_EXPENSE_ACCOUNT    source_24
312567   , h7.PLA_MATERIAL_ACCOUNT    source_41
312568   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
312569   , h7.PLA_RESOURCE_ACCOUNT    source_43
312570   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
312571   , h7.PLA_OVERHEAD_ACCOUNT    source_45
312572   , h3.INV_ORG_PUR_PRICE_VAR_ACCT    source_58
312573   , h1.DISTRIBUTION_TYPE    source_85
312574   , fvl85.meaning   source_85_meaning
312575   , h1.TRANSFER_TO_GL_INDICATOR    source_114
312576   , fvl114.meaning   source_114_meaning
312577   FROM xla_events_gt     xet 
312578   , CST_XLA_INV_HEADERS_V  h1
312579   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
312580   , CST_XLA_INV_REF_V  h4
312581   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
312582   , CST_XLA_INV_TXN_TYPES_REF_V  h6
312583   , CST_XLA_PLA_CATEGORY_REF_V  h7
312584   , fnd_lookup_values    fvl85
312585   , fnd_lookup_values    fvl114
312586  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
312587    and xet.event_class_code = C_EVENT_CLASS_CODE
312588    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
312589  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
312590 AND h7.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
312591 AND h7.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
312592   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
312593   AND fvl85.view_application_id(+) = 700
312594   AND fvl85.language(+)            = USERENV('LANG')
312595      AND fvl114.lookup_type(+)         = 'YES_NO'
312596   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
312597   AND fvl114.view_application_id(+) = 0
312598   AND fvl114.language(+)            = USERENV('LANG')
312599   
312600  ORDER BY event_id
312601 ;
312602 
312603 
312604 --
312605 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
312606 IS
312607 SELECT  /*+ leading(xet) cardinality(xet,1) */
312608 -- Event Class Code: CON_INV_OWNR_TXFR
312609     xet.entity_id
312610    ,xet.legal_entity_id
312611    ,xet.entity_code
312612    ,xet.transaction_number
312613    ,xet.event_id
312614    ,xet.event_class_code
312615    ,xet.event_type_code
312616    ,xet.event_number
312617    ,xet.event_date
312618    ,xet.transaction_date
312619    ,xet.reference_num_1
312620    ,xet.reference_num_2
312621    ,xet.reference_num_3
312622    ,xet.reference_num_4
312623    ,xet.reference_char_1
312624    ,xet.reference_char_2
312625    ,xet.reference_char_3
312626    ,xet.reference_char_4
312627    ,xet.reference_date_1
312628    ,xet.reference_date_2
312629    ,xet.reference_date_3
312630    ,xet.reference_date_4
312631    ,xet.event_created_by
312632    ,xet.budgetary_control_flag
312633  , l2.LINE_NUMBER  
312634   , l2.CODE_COMBINATION_ID    source_11
312635   , l2.COST_ELEMENT_ID    source_15
312636   , l2.DISTRIBUTION_IDENTIFIER    source_84
312637   , l2.CURRENCY_CODE    source_88
312638   , l2.ENTERED_AMOUNT    source_91
312639   , l2.CURRENCY_CONVERSION_DATE    source_92
312640   , l2.CURRENCY_CONVERSION_RATE    source_93
312641   , l2.CURRENCY_CONVERSION_TYPE    source_94
312642   , l2.ACCOUNTED_AMOUNT    source_95
312643   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
312644   , l2.L_ORGANIZATION_CODE    source_108
312645   FROM xla_events_gt     xet 
312646   , CST_XLA_INV_LINES_V  l2
312647  WHERE xet.event_id between x_first_event_id and x_last_event_id
312648    and xet.event_date between p_pad_start_date and p_pad_end_date
312649    and xet.event_class_code = C_EVENT_CLASS_CODE
312650    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
312651 ;
312652 
312653 --
312654 BEGIN
312655 IF g_log_enabled THEN
312656    l_log_module := C_DEFAULT_MODULE||'.EventClass_549';
312657 END IF;
312658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
312659    trace
312660       (p_msg      => 'BEGIN of EventClass_549'
312661       ,p_level    => C_LEVEL_PROCEDURE
312662       ,p_module   => l_log_module);
312663 END IF;
312664 
312665 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
312666    trace
312667       (p_msg      => 'p_application_id = '||p_application_id||
312668                      ' - p_base_ledger_id = '||p_base_ledger_id||
312669                      ' - p_target_ledger_id  = '||p_target_ledger_id||
312670                      ' - p_language = '||p_language||
312671                      ' - p_currency_code = '||p_currency_code||
312672                      ' - p_sla_ledger_id = '||p_sla_ledger_id
312673       ,p_level    => C_LEVEL_STATEMENT
312674       ,p_module   => l_log_module);
312675 END IF;
312676 --
312677 -- initialze arrays
312678 --
312679 g_array_event.DELETE;
312680 l_rec_array_event := l_null_rec_array_event;
312681 --
312682 --------------------------------------
312683 -- 4262811 Initialze MPA Line Number
312684 --------------------------------------
312685 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
312686 
312687 --
312688 
312689 --
312690 OPEN header_cur;
312691 --
312692 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
312693    trace
312694    (p_msg      => 'SQL - FETCH header_cur'
312695    ,p_level    => C_LEVEL_STATEMENT
312696    ,p_module   => l_log_module);
312697 END IF;
312698 --
312699 LOOP
312700 FETCH header_cur BULK COLLECT INTO
312701         l_array_entity_id
312702       , l_array_legal_entity_id
312703       , l_array_entity_code
312704       , l_array_transaction_num
312705       , l_array_event_id
312706       , l_array_class_code
312707       , l_array_event_type
312708       , l_array_event_number
312709       , l_array_event_date
312710       , l_array_transaction_date
312711       , l_array_reference_num_1
312712       , l_array_reference_num_2
312713       , l_array_reference_num_3
312714       , l_array_reference_num_4
312715       , l_array_reference_char_1
312716       , l_array_reference_char_2
312717       , l_array_reference_char_3
312718       , l_array_reference_char_4
312719       , l_array_reference_date_1
312720       , l_array_reference_date_2
312721       , l_array_reference_date_3
312722       , l_array_reference_date_4
312723       , l_array_event_created_by
312724       , l_array_budgetary_control_flag 
312725       , l_array_source_1
312726       , l_array_source_2
312727       , l_array_source_3
312728       , l_array_source_4
312729       , l_array_source_5
312730       , l_array_source_20
312731       , l_array_source_21
312732       , l_array_source_22
312733       , l_array_source_24
312734       , l_array_source_41
312735       , l_array_source_42
312736       , l_array_source_43
312737       , l_array_source_44
312738       , l_array_source_45
312739       , l_array_source_58
312740       , l_array_source_85
312741       , l_array_source_85_meaning
312742       , l_array_source_114
312743       , l_array_source_114_meaning
312744       LIMIT l_rows;
312745 --
312746 IF (C_LEVEL_EVENT >= g_log_level) THEN
312747    trace
312748    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
312749    ,p_level    => C_LEVEL_EVENT
312750    ,p_module   => l_log_module);
312751 END IF;
312752 --
312753 EXIT WHEN l_array_entity_id.COUNT = 0;
312754 
312755 -- initialize arrays
312756 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
312757 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
312758 
312759 --
312760 -- Bug 4458708
312761 --
312762 XLA_AE_LINES_PKG.g_LineNumber := 0;
312763 
312764 
312765 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
312766 g_last_hdr_idx := l_array_event_id.LAST;
312767 --
312768 -- loop for the headers. Each iteration is for each header extract row
312769 -- fetched in header cursor
312770 --
312771 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
312772 
312773 --
312774 -- set event info as cache for other routines to refer event attributes
312775 --
312776 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
312777    (p_application_id           => p_application_id
312778    ,p_primary_ledger_id        => p_primary_ledger_id
312779    ,p_base_ledger_id           => p_base_ledger_id
312780    ,p_target_ledger_id         => p_target_ledger_id
312781    ,p_entity_id                => l_array_entity_id(hdr_idx)
312782    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
312783    ,p_entity_code              => l_array_entity_code(hdr_idx)
312784    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
312785    ,p_event_id                 => l_array_event_id(hdr_idx)
312786    ,p_event_class_code         => l_array_class_code(hdr_idx)
312787    ,p_event_type_code          => l_array_event_type(hdr_idx)
312788    ,p_event_number             => l_array_event_number(hdr_idx)
312789    ,p_event_date               => l_array_event_date(hdr_idx)
312790    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
312791    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
312792    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
312793    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
312794    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
312795    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
312796    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
312797    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
312798    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
312799    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
312800    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
312801    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
312802    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
312803    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
312804    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
312805 
312806 --
312807 -- set the status of entry to C_VALID (0)
312808 --
312809 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
312810 
312811 --
312812 -- initialize a row for ae header
312813 --
312814 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
312815 
312816 l_event_id := l_array_event_id(hdr_idx);
312817 
312818 --
312819 -- storing the hdr_idx for event. May be used by line cursor.
312820 --
312821 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
312822 
312823 --
312824 -- store sources from header extract. This can be improved to
312825 -- store only those sources from header extract that may be used in lines
312826 --
312827 
312828 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
312829 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
312830 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
312831 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
312832 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
312833 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
312834 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
312835 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
312836 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
312837 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
312838 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
312839 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
312840 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
312841 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
312842 g_array_event(l_event_id).array_value_num('source_58') := l_array_source_58(hdr_idx);
312843 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
312844 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
312845 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
312846 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
312847 
312848 --
312849 -- initilaize the status of ae headers for diffrent balance types
312850 -- the status is initialised to C_NOT_CREATED (2)
312851 --
312852 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
312853 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
312854 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
312855 
312856 --
312857 -- call api to validate and store accounting attributes for header
312858 --
312859 
312860 ------------------------------------------------------------
312861 -- Accrual Reversal : to get date for Standard Source (NONE)
312862 ------------------------------------------------------------
312863 l_acc_rev_gl_date_source := NULL;
312864 
312865      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
312866       l_rec_acct_attrs.array_date_value(1) := 
312867 xla_ae_sources_pkg.GetSystemSourceDate(
312868    p_source_code           => 'XLA_REFERENCE_DATE_1'
312869  , p_source_type_code      => 'Y'
312870  , p_source_application_id =>  602
312871 );
312872      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
312873       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
312874 
312875 
312876 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
312877 
312878 XLA_AE_HEADER_PKG.SetJeCategoryName;
312879 
312880 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
312881 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
312882 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
312883 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
312884 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
312885 
312886 
312887 --
312888 xla_ae_header_pkg.SetHdrDescription(
312889    p_description => Description_1 (
312890    p_application_id => p_application_id 
312891  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
312892  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
312893  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
312894  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
312895  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
312896    )
312897 );
312898 --
312899 
312900 -- No header level analytical criteria
312901 
312902 --
312903 --accounting attribute enhancement, bug 3612931
312904 --
312905 l_trx_reversal_source := SUBSTR(NULL, 1,30);
312906 
312907 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
312908    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
312909 
312910    xla_accounting_err_pkg.build_message
312911       (p_appli_s_name            => 'XLA'
312912       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
312913       ,p_token_1                 => 'ACCT_ATTR_NAME'
312914       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
312915       ,p_token_2                 => 'PRODUCT_NAME'
312916       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
312917       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
312918       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
312919       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
312920 
312921 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
312922    --
312923    -- following sets the accounting attributes needed to reverse
312924    -- accounting for a distributeion
312925    --
312926    xla_ae_lines_pkg.SetTrxReversalAttrs
312927       (p_event_id              => l_event_id
312928       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
312929       ,p_trx_reversal_source   => l_trx_reversal_source);
312930 
312931 END IF;
312932 
312933 
312934 ----------------------------------------------------------------
312935 -- 4262811 -  update the header statuses to invalid in need be
312936 ----------------------------------------------------------------
312937 --
312938 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
312939 
312940 
312941   -----------------------------------------------
312942   -- No accrual reversal for the event class/type
312943   -----------------------------------------------
312944 ----------------------------------------------------------------
312945 
312946 --
312947 -- this ends the header loop iteration for one bulk fetch
312948 --
312949 END LOOP;
312950 
312951 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
312952 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
312953 
312954 --
312955 -- insert dummy rows into lines gt table that were created due to
312956 -- transaction reversals
312957 --
312958 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
312959    l_result := XLA_AE_LINES_PKG.InsertLines;
312960 END IF;
312961 
312962 --
312963 -- reset the temp_line_num for each set of events fetched from header
312964 -- cursor rather than doing it for each new event in line cursor
312965 -- Bug 3939231
312966 --
312967 xla_ae_lines_pkg.g_temp_line_num := 0;
312968 
312969 
312970 
312971 --
312972 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
312973 --
312974 --
312975 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
312976 
312977       trace
312978          (p_msg      => 'SQL - FETCH line_cur'
312979          ,p_level    => C_LEVEL_STATEMENT
312980          ,p_module   => l_log_module);
312981 
312982 END IF;
312983 --
312984 --
312985 LOOP
312986   --
312987   FETCH line_cur BULK COLLECT INTO
312988         l_array_entity_id
312989       , l_array_legal_entity_id
312990       , l_array_entity_code
312991       , l_array_transaction_num
312992       , l_array_event_id
312993       , l_array_class_code
312994       , l_array_event_type
312995       , l_array_event_number
312996       , l_array_event_date
312997       , l_array_transaction_date
312998       , l_array_reference_num_1
312999       , l_array_reference_num_2
313000       , l_array_reference_num_3
313001       , l_array_reference_num_4
313002       , l_array_reference_char_1
313003       , l_array_reference_char_2
313004       , l_array_reference_char_3
313005       , l_array_reference_char_4
313006       , l_array_reference_date_1
313007       , l_array_reference_date_2
313008       , l_array_reference_date_3
313009       , l_array_reference_date_4
313010       , l_array_event_created_by
313011       , l_array_budgetary_control_flag
313012       , l_array_extract_line_num 
313013       , l_array_source_11
313014       , l_array_source_15
313015       , l_array_source_84
313016       , l_array_source_88
313017       , l_array_source_91
313018       , l_array_source_92
313019       , l_array_source_93
313020       , l_array_source_94
313021       , l_array_source_95
313022       , l_array_source_97
313023       , l_array_source_108
313024       LIMIT l_rows;
313025 
313026   --
313027   IF (C_LEVEL_EVENT >= g_log_level) THEN
313028             trace
313029                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
313030                ,p_level    => C_LEVEL_EVENT
313031                ,p_module   => l_log_module);
313032   END IF;
313033   --
313034   EXIT WHEN l_array_entity_id.count = 0;
313035 
313036   XLA_AE_LINES_PKG.g_rec_lines := null;
313037 
313038 --
313039 -- Bug 4458708
313040 --
313041 XLA_AE_LINES_PKG.g_LineNumber := 0;
313042 --
313043 --
313044 
313045 FOR Idx IN 1..l_array_event_id.count LOOP
313046    --
313047    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
313048    --
313049    l_event_id := l_array_event_id(idx);  -- 5648433
313050 
313051    --
313052    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
313053    --
313054 
313055    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
313056              (g_array_event(l_event_id).array_value_num('header_index'))
313057          ,'N'
313058          ) <> 'Y'
313059    THEN
313060       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
313061          trace
313062             (p_msg      => 'Trancaction revesal option is not Y '
313063             ,p_level    => C_LEVEL_STATEMENT
313064             ,p_module   => l_log_module);
313065       END IF;
313066 
313067 --
313068 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
313069 --
313070 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
313071 --
313072 -- set event info as cache for other routines to refer event attributes
313073 --
313074 
313075 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
313076    l_previous_event_id := l_event_id;
313077 
313078    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
313079       (p_application_id           => p_application_id
313080       ,p_primary_ledger_id        => p_primary_ledger_id
313081       ,p_base_ledger_id           => p_base_ledger_id
313082       ,p_target_ledger_id         => p_target_ledger_id
313083       ,p_entity_id                => l_array_entity_id(Idx)
313084       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
313085       ,p_entity_code              => l_array_entity_code(Idx)
313086       ,p_transaction_num          => l_array_transaction_num(Idx)
313087       ,p_event_id                 => l_array_event_id(Idx)
313088       ,p_event_class_code         => l_array_class_code(Idx)
313089       ,p_event_type_code          => l_array_event_type(Idx)
313090       ,p_event_number             => l_array_event_number(Idx)
313091       ,p_event_date               => l_array_event_date(Idx)
313092       ,p_transaction_date         => l_array_transaction_date(Idx)
313093       ,p_reference_num_1          => l_array_reference_num_1(Idx)
313094       ,p_reference_num_2          => l_array_reference_num_2(Idx)
313095       ,p_reference_num_3          => l_array_reference_num_3(Idx)
313096       ,p_reference_num_4          => l_array_reference_num_4(Idx)
313097       ,p_reference_char_1         => l_array_reference_char_1(Idx)
313098       ,p_reference_char_2         => l_array_reference_char_2(Idx)
313099       ,p_reference_char_3         => l_array_reference_char_3(Idx)
313100       ,p_reference_char_4         => l_array_reference_char_4(Idx)
313101       ,p_reference_date_1         => l_array_reference_date_1(Idx)
313102       ,p_reference_date_2         => l_array_reference_date_2(Idx)
313103       ,p_reference_date_3         => l_array_reference_date_3(Idx)
313104       ,p_reference_date_4         => l_array_reference_date_4(Idx)
313105       ,p_event_created_by         => l_array_event_created_by(Idx)
313106       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
313107        --
313108 END IF;
313109 
313110 
313111 
313112 --
313113 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
313114 
313115 l_acct_reversal_source := SUBSTR(NULL, 1,30);
313116 
313117 IF l_continue_with_lines THEN
313118    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
313119       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
313120 
313121       xla_accounting_err_pkg.build_message
313122          (p_appli_s_name            => 'XLA'
313123          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
313124          ,p_token_1                 => 'LINE_NUMBER'
313125          ,p_value_1                 => l_array_extract_line_num(Idx)
313126          ,p_token_2                 => 'PRODUCT_NAME'
313127          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
313128          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
313129          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
313130          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
313131 
313132    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
313133       --
313134       -- following sets the accounting attributes needed to reverse
313135       -- accounting for a distributeion
313136       --
313137 
313138       --
313139       -- 5217187
313140       --
313141       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
313142       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
313143                                        g_array_event(l_event_id).array_value_num('header_index'));
313144       --
313145       --
313146 
313147       -- No reversal code generated
313148 
313149       xla_ae_lines_pkg.SetAcctReversalAttrs
313150          (p_event_id             => l_event_id
313151          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
313152          ,p_calculate_acctd_flag => l_calculate_acctd_flag
313153          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
313154    END IF;
313155 
313156    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
313157        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
313158 
313159 --
313160 AcctLineType_38 (
313161  p_application_id  => p_application_id
313162  ,p_event_id     => l_event_id
313163  ,p_calculate_acctd_flag => l_calculate_acctd_flag
313164  ,p_calculate_g_l_flag => l_calculate_g_l_flag
313165  ,p_actual_flag => l_actual_flag
313166  ,p_balance_type_code => l_balance_type_code
313167  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
313168  
313169  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
313170  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
313171  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
313172  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
313173  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
313174  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
313175  , p_source_84 => l_array_source_84(Idx)
313176  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
313177  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
313178  , p_source_88 => l_array_source_88(Idx)
313179  , p_source_91 => l_array_source_91(Idx)
313180  , p_source_92 => l_array_source_92(Idx)
313181  , p_source_93 => l_array_source_93(Idx)
313182  , p_source_94 => l_array_source_94(Idx)
313183  , p_source_95 => l_array_source_95(Idx)
313184  , p_source_97 => l_array_source_97(Idx)
313185  );
313186 If(l_balance_type_code = 'A') THEN
313187   l_actual_gain_loss_ref := l_gain_or_loss_ref;
313188 END IF;
313189 
313190 --
313191 
313192 
313193 --
313194 AcctLineType_115 (
313195  p_application_id  => p_application_id
313196  ,p_event_id     => l_event_id
313197  ,p_calculate_acctd_flag => l_calculate_acctd_flag
313198  ,p_calculate_g_l_flag => l_calculate_g_l_flag
313199  ,p_actual_flag => l_actual_flag
313200  ,p_balance_type_code => l_balance_type_code
313201  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
313202  
313203  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
313204  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
313205  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
313206  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
313207  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
313208  , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
313209  , p_source_84 => l_array_source_84(Idx)
313210  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
313211  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
313212  , p_source_88 => l_array_source_88(Idx)
313213  , p_source_91 => l_array_source_91(Idx)
313214  , p_source_92 => l_array_source_92(Idx)
313215  , p_source_93 => l_array_source_93(Idx)
313216  , p_source_94 => l_array_source_94(Idx)
313217  , p_source_95 => l_array_source_95(Idx)
313218  , p_source_97 => l_array_source_97(Idx)
313219  );
313220 If(l_balance_type_code = 'A') THEN
313221   l_actual_gain_loss_ref := l_gain_or_loss_ref;
313222 END IF;
313223 
313224 --
313225 
313226 
313227 --
313228 AcctLineType_231 (
313229  p_application_id  => p_application_id
313230  ,p_event_id     => l_event_id
313231  ,p_calculate_acctd_flag => l_calculate_acctd_flag
313232  ,p_calculate_g_l_flag => l_calculate_g_l_flag
313233  ,p_actual_flag => l_actual_flag
313234  ,p_balance_type_code => l_balance_type_code
313235  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
313236  
313237  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
313238  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
313239  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
313240  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
313241  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
313242  , p_source_15 => l_array_source_15(Idx)
313243  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
313244  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
313245  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
313246  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
313247  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
313248  , p_source_84 => l_array_source_84(Idx)
313249  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
313250  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
313251  , p_source_88 => l_array_source_88(Idx)
313252  , p_source_91 => l_array_source_91(Idx)
313253  , p_source_92 => l_array_source_92(Idx)
313254  , p_source_93 => l_array_source_93(Idx)
313255  , p_source_94 => l_array_source_94(Idx)
313256  , p_source_95 => l_array_source_95(Idx)
313257  , p_source_97 => l_array_source_97(Idx)
313258  , p_source_108 => l_array_source_108(Idx)
313259  );
313260 If(l_balance_type_code = 'A') THEN
313261   l_actual_gain_loss_ref := l_gain_or_loss_ref;
313262 END IF;
313263 
313264 --
313265 
313266 
313267 --
313268 AcctLineType_295 (
313269  p_application_id  => p_application_id
313270  ,p_event_id     => l_event_id
313271  ,p_calculate_acctd_flag => l_calculate_acctd_flag
313272  ,p_calculate_g_l_flag => l_calculate_g_l_flag
313273  ,p_actual_flag => l_actual_flag
313274  ,p_balance_type_code => l_balance_type_code
313275  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
313276  
313277  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
313278  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
313279  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
313280  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
313281  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
313282  , p_source_11 => l_array_source_11(Idx)
313283  , p_source_84 => l_array_source_84(Idx)
313284  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
313285  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
313286  , p_source_88 => l_array_source_88(Idx)
313287  , p_source_91 => l_array_source_91(Idx)
313288  , p_source_92 => l_array_source_92(Idx)
313289  , p_source_93 => l_array_source_93(Idx)
313290  , p_source_94 => l_array_source_94(Idx)
313291  , p_source_95 => l_array_source_95(Idx)
313292  , p_source_97 => l_array_source_97(Idx)
313293  );
313294 If(l_balance_type_code = 'A') THEN
313295   l_actual_gain_loss_ref := l_gain_or_loss_ref;
313296 END IF;
313297 
313298 --
313299 
313300 
313301 --
313302 AcctLineType_383 (
313303  p_application_id  => p_application_id
313304  ,p_event_id     => l_event_id
313305  ,p_calculate_acctd_flag => l_calculate_acctd_flag
313306  ,p_calculate_g_l_flag => l_calculate_g_l_flag
313307  ,p_actual_flag => l_actual_flag
313308  ,p_balance_type_code => l_balance_type_code
313309  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
313310  
313311  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
313312  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
313313  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
313314  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
313315  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
313316  , p_source_15 => l_array_source_15(Idx)
313317  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
313318  , p_source_84 => l_array_source_84(Idx)
313319  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
313320  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
313321  , p_source_88 => l_array_source_88(Idx)
313322  , p_source_91 => l_array_source_91(Idx)
313323  , p_source_92 => l_array_source_92(Idx)
313324  , p_source_93 => l_array_source_93(Idx)
313325  , p_source_94 => l_array_source_94(Idx)
313326  , p_source_95 => l_array_source_95(Idx)
313327  , p_source_97 => l_array_source_97(Idx)
313328  );
313329 If(l_balance_type_code = 'A') THEN
313330   l_actual_gain_loss_ref := l_gain_or_loss_ref;
313331 END IF;
313332 
313333 --
313334 
313335 
313336 --
313337 AcctLineType_415 (
313338  p_application_id  => p_application_id
313339  ,p_event_id     => l_event_id
313340  ,p_calculate_acctd_flag => l_calculate_acctd_flag
313341  ,p_calculate_g_l_flag => l_calculate_g_l_flag
313342  ,p_actual_flag => l_actual_flag
313343  ,p_balance_type_code => l_balance_type_code
313344  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
313345  
313346  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
313347  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
313348  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
313349  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
313350  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
313351  , p_source_15 => l_array_source_15(Idx)
313352  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
313353  , p_source_84 => l_array_source_84(Idx)
313354  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
313355  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
313356  , p_source_88 => l_array_source_88(Idx)
313357  , p_source_91 => l_array_source_91(Idx)
313358  , p_source_92 => l_array_source_92(Idx)
313359  , p_source_93 => l_array_source_93(Idx)
313360  , p_source_94 => l_array_source_94(Idx)
313361  , p_source_95 => l_array_source_95(Idx)
313362  , p_source_97 => l_array_source_97(Idx)
313363  );
313364 If(l_balance_type_code = 'A') THEN
313365   l_actual_gain_loss_ref := l_gain_or_loss_ref;
313366 END IF;
313367 
313368 --
313369 
313370 
313371 --
313372 AcctLineType_492 (
313373  p_application_id  => p_application_id
313374  ,p_event_id     => l_event_id
313375  ,p_calculate_acctd_flag => l_calculate_acctd_flag
313376  ,p_calculate_g_l_flag => l_calculate_g_l_flag
313377  ,p_actual_flag => l_actual_flag
313378  ,p_balance_type_code => l_balance_type_code
313379  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
313380  
313381  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
313382  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
313383  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
313384  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
313385  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
313386  , p_source_58 => g_array_event(l_event_id).array_value_num('source_58')
313387  , p_source_84 => l_array_source_84(Idx)
313388  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
313389  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
313390  , p_source_88 => l_array_source_88(Idx)
313391  , p_source_91 => l_array_source_91(Idx)
313392  , p_source_92 => l_array_source_92(Idx)
313393  , p_source_93 => l_array_source_93(Idx)
313394  , p_source_94 => l_array_source_94(Idx)
313395  , p_source_95 => l_array_source_95(Idx)
313396  , p_source_97 => l_array_source_97(Idx)
313397  );
313398 If(l_balance_type_code = 'A') THEN
313399   l_actual_gain_loss_ref := l_gain_or_loss_ref;
313400 END IF;
313401 
313402 --
313403 
313404       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
313405       -- or secondary ledger that has different currency with primary
313406       -- or alc that is calculated by sla
313407       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
313408             (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'))
313409 
313410 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
313411 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
313412           AND (l_actual_flag = 'A')) THEN
313413         XLA_AE_LINES_PKG.CreateGainOrLossLines(
313414           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
313415          ,p_application_id   => p_application_id
313416          ,p_amb_context_code => 'DEFAULT'
313417          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
313418          ,p_event_class_code => C_EVENT_CLASS_CODE
313419          ,p_event_type_code  => C_EVENT_TYPE_CODE
313420          
313421          ,p_gain_ccid        => -1
313422          ,p_loss_ccid        => -1
313423 
313424          ,p_actual_flag      => l_actual_flag
313425          ,p_enc_flag         => null
313426          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
313427          ,p_enc_g_l_ref      => null
313428          );
313429       END IF;
313430    END IF;
313431 END IF;
313432 
313433    ELSE
313434       --
313435       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
313436       --
313437       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
313438          trace
313439             (p_msg      => 'Trancaction revesal option is Y'
313440             ,p_level    => C_LEVEL_STATEMENT
313441             ,p_module   => l_log_module);
313442       END IF;
313443    END IF;
313444 
313445 END LOOP;
313446 l_result := XLA_AE_LINES_PKG.InsertLines ;
313447 end loop;
313448 close line_cur;
313449 
313450 
313451 --
313452 -- insert headers into xla_ae_headers_gt table
313453 --
313454 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
313455 
313456 -- insert into errors table here.
313457 
313458 END LOOP;
313459 
313460 --
313461 -- 4865292
313462 --
313463 -- Compare g_hdr_extract_count with event count in
313464 -- CreateHeadersAndLines.
313465 --
313466 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
313467 
313468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
313469    trace (p_msg     => '# rows extracted from header extract objects '
313470                     || ' (running total): '
313471                     || g_hdr_extract_count
313472          ,p_level   => C_LEVEL_STATEMENT
313473          ,p_module  => l_log_module);
313474 END IF;
313475 
313476 CLOSE header_cur;
313477 --
313478 
313479 --
313480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
313481    trace
313482       (p_msg      => 'END of EventClass_549'
313483       ,p_level    => C_LEVEL_PROCEDURE
313484       ,p_module   => l_log_module);
313485 END IF;
313486 --
313487 RETURN l_result;
313488 EXCEPTION
313489 WHEN xla_exceptions_pkg.application_exception THEN
313490    
313491 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
313492 
313493    
313494 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
313495 
313496    RAISE;
313497 
313498 WHEN NO_DATA_FOUND THEN
313499 
313500 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
313501 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
313502 
313503 FOR header_record IN header_cur
313504 LOOP
313505     l_array_header_events(header_record.event_id) := header_record.event_id;
313506 END LOOP;
313507 
313508 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
313509 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
313510 
313511 fnd_file.put_line(fnd_file.LOG, '                    ');
313512 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
313513 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
313514 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
313515 
313516 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
313517 LOOP
313518 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
313519 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
313520         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
313521 	END IF;
313522 END LOOP;
313523 
313524 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
313525 fnd_file.put_line(fnd_file.LOG, '                    ');
313526 
313527 
313528 xla_exceptions_pkg.raise_message
313529       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_549');
313530 
313531 
313532 WHEN OTHERS THEN
313533    xla_exceptions_pkg.raise_message
313534       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_549');
313535 END EventClass_549;
313536 --
313537 
313538 ---------------------------------------
313539 --
313540 -- PRIVATE PROCEDURE
313541 --         insert_sources_550
313542 --
313543 ----------------------------------------
313544 --
313545 PROCEDURE insert_sources_550(
313546                                 p_target_ledger_id       IN NUMBER
313547                               , p_language               IN VARCHAR2
313548                               , p_sla_ledger_id          IN NUMBER
313549                               , p_pad_start_date         IN DATE
313550                               , p_pad_end_date           IN DATE
313551                          )
313552 IS
313553 
313554 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
313555 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
313556 p_apps_owner                   VARCHAR2(30);
313557 l_log_module                   VARCHAR2(240);
313558 BEGIN
313559 IF g_log_enabled THEN
313560       l_log_module := C_DEFAULT_MODULE||'.insert_sources_550';
313561 END IF;
313562 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
313563 
313564       trace
313565          (p_msg      => 'BEGIN of insert_sources_550'
313566          ,p_level    => C_LEVEL_PROCEDURE
313567          ,p_module   => l_log_module);
313568 
313569 END IF;
313570 
313571 -- select APPS owner
313572 SELECT oracle_username
313573   INTO p_apps_owner
313574   FROM fnd_oracle_userid
313575  WHERE read_only_flag = 'U'
313576 ;
313577 
313578 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
313579       trace
313580          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
313581                         ' - p_language = '||p_language||
313582                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
313583                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
313584                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
313585                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
313586          ,p_level    => C_LEVEL_STATEMENT
313587          ,p_module   => l_log_module);
313588 END IF;
313589 
313590 
313591 --
313592 INSERT INTO xla_diag_sources --hdr2
313593 (
313594         event_id
313595       , ledger_id
313596       , sla_ledger_id
313597       , description_language
313598       , object_name
313599       , object_type_code
313600       , line_number
313601       , source_application_id
313602       , source_type_code
313603       , source_code
313604       , source_value
313605       , source_meaning
313606       , created_by
313607       , creation_date
313608       , last_update_date
313609       , last_updated_by
313610       , last_update_login
313611       , program_update_date
313612       , program_application_id
313613       , program_id
313614       , request_id
313615 )
313616 SELECT
313617         event_id
313618       , p_target_ledger_id
313619       , p_sla_ledger_id
313620       , p_language
313621       , object_name
313622       , object_type_code
313623       , line_number
313624       , source_application_id
313625       , source_type_code
313626       , source_code
313627       , SUBSTR(source_value ,1,1996)
313628       , SUBSTR(source_meaning ,1,200)
313629       , xla_environment_pkg.g_Usr_Id
313630       , TRUNC(SYSDATE)
313631       , TRUNC(SYSDATE)
313632       , xla_environment_pkg.g_Usr_Id
313633       , xla_environment_pkg.g_Login_Id
313634       , TRUNC(SYSDATE)
313635       , xla_environment_pkg.g_Prog_Appl_Id
313636       , xla_environment_pkg.g_Prog_Id
313637       , xla_environment_pkg.g_Req_Id
313638   FROM (
313639        SELECT xet.event_id                  event_id
313640             , 0                          line_number
313641             , CASE r
313642                WHEN 1 THEN 'CST_XLA_RCV_REF_V' 
313643                 WHEN 2 THEN 'CST_XLA_RCV_REF_V' 
313644                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
313645                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
313646                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
313647                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
313648                 WHEN 7 THEN 'PO_DISTS_REF_V' 
313649                 WHEN 8 THEN 'CST_XLA_RCV_REF_V' 
313650                 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V' 
313651                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
313652                 WHEN 11 THEN 'CST_XLA_RCV_HEADERS_V' 
313653                 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V' 
313654                 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V' 
313655                 WHEN 14 THEN 'PO_HEADERS_REF_V' 
313656                 WHEN 15 THEN 'PSA_CST_XLA_UPG_V' 
313657                 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V' 
313658                 
313659                ELSE null
313660               END                           object_name
313661             , CASE r
313662                 WHEN 1 THEN 'HEADER' 
313663                 WHEN 2 THEN 'HEADER' 
313664                 WHEN 3 THEN 'HEADER' 
313665                 WHEN 4 THEN 'HEADER' 
313666                 WHEN 5 THEN 'HEADER' 
313667                 WHEN 6 THEN 'HEADER' 
313668                 WHEN 7 THEN 'HEADER' 
313669                 WHEN 8 THEN 'HEADER' 
313670                 WHEN 9 THEN 'HEADER' 
313671                 WHEN 10 THEN 'HEADER' 
313672                 WHEN 11 THEN 'HEADER' 
313673                 WHEN 12 THEN 'HEADER' 
313674                 WHEN 13 THEN 'HEADER' 
313675                 WHEN 14 THEN 'HEADER' 
313676                 WHEN 15 THEN 'HEADER' 
313677                 WHEN 16 THEN 'HEADER' 
313678                 
313679                 ELSE null
313680               END                           object_type_code
313681             , CASE r
313682                 WHEN 1 THEN '707' 
313683                 WHEN 2 THEN '707' 
313684                 WHEN 3 THEN '707' 
313685                 WHEN 4 THEN '707' 
313686                 WHEN 5 THEN '707' 
313687                 WHEN 6 THEN '707' 
313688                 WHEN 7 THEN '201' 
313689                 WHEN 8 THEN '707' 
313690                 WHEN 9 THEN '707' 
313691                 WHEN 10 THEN '707' 
313692                 WHEN 11 THEN '707' 
313693                 WHEN 12 THEN '707' 
313694                 WHEN 13 THEN '707' 
313695                 WHEN 14 THEN '201' 
313696                 WHEN 15 THEN '707' 
313697                 WHEN 16 THEN '707' 
313698                 
313699                 ELSE null
313700               END                           source_application_id
313701             , 'S'             source_type_code
313702             , CASE r
313703                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
313704                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
313705                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
313706                 WHEN 4 THEN 'PO_DISTRIBUTION_ID' 
313707                 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID' 
313708                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
313709                 WHEN 7 THEN 'PO_BUDGET_ACCOUNT' 
313710                 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
313711                 WHEN 9 THEN 'CURRENCY_CODE' 
313712                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
313713                 WHEN 11 THEN 'CURRENCY_CONVERSION_DATE' 
313714                 WHEN 12 THEN 'CURRENCY_CONVERSION_RATE' 
313715                 WHEN 13 THEN 'CURRENCY_CONVERSION_TYPE' 
313716                 WHEN 14 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
313717                 WHEN 15 THEN 'CST_ENCUM_UPG_OPTION' 
313718                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
313719                 
313720                 ELSE null
313721               END                           source_code
313722             , CASE r
313723                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
313724                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
313725                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
313726                 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
313727                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
313728                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
313729                 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
313730                 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
313731                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
313732                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
313733                 WHEN 11 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
313734                 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
313735                 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
313736                 WHEN 14 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
313737                 WHEN 15 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
313738                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
313739                 
313740                 ELSE null
313741               END                           source_value
313742             , CASE r
313743                 WHEN 6 THEN fvl85.meaning
313744                 WHEN 16 THEN fvl114.meaning
313745                 
313746                 ELSE null
313747               END               source_meaning
313748          FROM xla_events_gt     xet  
313749       , CST_XLA_RCV_HEADERS_V  h1
313750       , CST_XLA_RCV_REF_V  h3
313751       , PO_DISTS_REF_V  h4
313752       , PO_HEADERS_REF_V  h5
313753       , PSA_CST_XLA_UPG_V  h6
313754   , fnd_lookup_values    fvl85
313755   , fnd_lookup_values    fvl114
313756              ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
313757          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
313758            AND xet.event_class_code = C_EVENT_CLASS_CODE
313759               AND h1.event_id = xet.event_id
313760  AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id  (+)  and h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
313761   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
313762   AND fvl85.view_application_id(+) = 700
313763   AND fvl85.language(+)            = USERENV('LANG')
313764      AND fvl114.lookup_type(+)         = 'YES_NO'
313765   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
313766   AND fvl114.view_application_id(+) = 0
313767   AND fvl114.language(+)            = USERENV('LANG')
313768   
313769 )
313770 ;
313771 --
313772 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
313773 
313774       trace
313775          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
313776          ,p_level    => C_LEVEL_STATEMENT
313777          ,p_module   => l_log_module);
313778 
313779 END IF;
313780 --
313781 
313782 
313783 
313784 --
313785 INSERT INTO xla_diag_sources  --line2
313786 (
313787         event_id
313788       , ledger_id
313789       , sla_ledger_id
313790       , description_language
313791       , object_name
313792       , object_type_code
313793       , line_number
313794       , source_application_id
313795       , source_type_code
313796       , source_code
313797       , source_value
313798       , source_meaning
313799       , created_by
313800       , creation_date
313801       , last_update_date
313802       , last_updated_by
313803       , last_update_login
313804       , program_update_date
313805       , program_application_id
313806       , program_id
313807       , request_id
313808 )
313809 SELECT  event_id
313810       , p_target_ledger_id
313811       , p_sla_ledger_id
313812       , p_language
313813       , object_name
313814       , object_type_code
313815       , line_number
313816       , source_application_id
313817       , source_type_code
313818       , source_code
313819       , SUBSTR(source_value,1,1996)
313820       , SUBSTR(source_meaning ,1,200)
313821       , xla_environment_pkg.g_Usr_Id
313822       , TRUNC(SYSDATE)
313823       , TRUNC(SYSDATE)
313824       , xla_environment_pkg.g_Usr_Id
313825       , xla_environment_pkg.g_Login_Id
313826       , TRUNC(SYSDATE)
313827       , xla_environment_pkg.g_Prog_Appl_Id
313828       , xla_environment_pkg.g_Prog_Id
313829       , xla_environment_pkg.g_Req_Id
313830   FROM (
313831        SELECT xet.event_id                  event_id
313832             , l2.line_number                 line_number
313833             , CASE r
313834                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
313835                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
313836                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
313837                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
313838                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
313839                 
313840                ELSE null
313841               END                           object_name
313842             , CASE r
313843                 WHEN 1 THEN 'LINE' 
313844                 WHEN 2 THEN 'LINE' 
313845                 WHEN 3 THEN 'LINE' 
313846                 WHEN 4 THEN 'LINE' 
313847                 WHEN 5 THEN 'LINE' 
313848                 
313849                 ELSE null
313850               END                           object_type_code
313851             , CASE r
313852                 WHEN 1 THEN '707' 
313853                 WHEN 2 THEN '707' 
313854                 WHEN 3 THEN '707' 
313855                 WHEN 4 THEN '707' 
313856                 WHEN 5 THEN '707' 
313857                 
313858                 ELSE null
313859               END                           source_application_id
313860             , 'S'             source_type_code
313861             , CASE r
313862                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
313863                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
313864                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
313865                 WHEN 4 THEN 'ENTERED_AMOUNT' 
313866                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
313867                 
313868                 ELSE null
313869               END                           source_code
313870             , CASE r
313871                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
313872                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
313873                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
313874                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
313875                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
313876                 
313877                 ELSE null
313878               END                           source_value
313879             , null              source_meaning
313880          FROM  xla_events_gt     xet  
313881         , CST_XLA_RCV_LINES_V  l2
313882             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
313883         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
313884           AND xet.event_class_code = C_EVENT_CLASS_CODE
313885             AND l2.event_id          = xet.event_id
313886 
313887 )
313888 ;
313889 --
313890 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
313891 
313892       trace
313893          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
313894          ,p_level    => C_LEVEL_STATEMENT
313895          ,p_module   => l_log_module);
313896 
313897 END IF;
313898 
313899 
313900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
313901       trace
313902          (p_msg      => 'END of insert_sources_550'
313903          ,p_level    => C_LEVEL_PROCEDURE
313904          ,p_module   => l_log_module);
313905 END IF;
313906 EXCEPTION
313907   WHEN xla_exceptions_pkg.application_exception THEN
313908       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
313909             trace
313910                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
313911                ,p_level    => C_LEVEL_EXCEPTION
313912                ,p_module   => l_log_module);
313913       END IF;
313914       RAISE;
313915   WHEN OTHERS THEN
313916       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
313917             trace
313918                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
313919                ,p_level    => C_LEVEL_EXCEPTION
313920                ,p_module   => l_log_module);
313921        END IF;
313922        xla_exceptions_pkg.raise_message
313923            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_550');
313924 END insert_sources_550;
313925 --
313926 
313927 ---------------------------------------
313928 --
313929 -- PRIVATE FUNCTION
313930 --         EventClass_550
313931 --
313932 ----------------------------------------
313933 --
313934 FUNCTION EventClass_550
313935        (p_application_id         IN NUMBER
313936        ,p_base_ledger_id         IN NUMBER
313937        ,p_target_ledger_id       IN NUMBER
313938        ,p_language               IN VARCHAR2
313939        ,p_currency_code          IN VARCHAR2
313940        ,p_sla_ledger_id          IN NUMBER
313941        ,p_pad_start_date         IN DATE
313942        ,p_pad_end_date           IN DATE
313943        ,p_primary_ledger_id      IN NUMBER)
313944 RETURN BOOLEAN IS
313945 --
313946 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
313947 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
313948 
313949 l_calculate_acctd_flag   VARCHAR2(1) :='N';
313950 l_calculate_g_l_flag     VARCHAR2(1) :='N';
313951 --
313952 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313953 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313954 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
313955 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
313956 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313957 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
313958 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
313959 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313960 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
313961 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
313962 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313963 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313964 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313965 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
313966 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
313967 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
313968 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
313969 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
313970 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
313971 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
313972 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
313973 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
313974 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
313975 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
313976 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
313977 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
313978 
313979 l_event_id                             NUMBER;
313980 l_previous_event_id                    NUMBER;
313981 l_first_event_id                       NUMBER;
313982 l_last_event_id                        NUMBER;
313983 
313984 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
313985 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
313986 --
313987 --
313988 l_result                    BOOLEAN := TRUE;
313989 l_rows                      NUMBER  := 1000;
313990 l_event_type_name           VARCHAR2(80) := 'All';
313991 l_event_class_name          VARCHAR2(80) := 'Delivery to Expense Destination';
313992 l_description               VARCHAR2(4000);
313993 l_transaction_reversal      NUMBER;
313994 l_ae_header_id              NUMBER;
313995 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
313996 l_log_module                VARCHAR2(240);
313997 --
313998 l_acct_reversal_source      VARCHAR2(30);
313999 l_trx_reversal_source       VARCHAR2(30);
314000 
314001 l_continue_with_lines       BOOLEAN := TRUE;
314002 --
314003 l_acc_rev_gl_date_source    DATE;                      -- 4262811
314004 --
314005 type t_array_event_id is table of number index by binary_integer;
314006 
314007 l_rec_array_event                    t_rec_array_event;
314008 l_null_rec_array_event               t_rec_array_event;
314009 l_array_ae_header_id                 xla_number_array_type;
314010 l_actual_flag                        VARCHAR2(1) := NULL;
314011 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
314012 l_balance_type_code                  VARCHAR2(1) :=NULL;
314013 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
314014 
314015 --
314016 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
314017 --
314018 
314019 TYPE t_array_source_79 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
314020 TYPE t_array_source_80 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
314021 TYPE t_array_source_81 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
314022 TYPE t_array_source_82 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
314023 TYPE t_array_source_83 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
314024 TYPE t_array_source_85 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
314025 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
314026 TYPE t_array_source_87 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
314027 TYPE t_array_source_88 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
314028 TYPE t_array_source_89 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
314029 TYPE t_array_source_92 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
314030 TYPE t_array_source_93 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
314031 TYPE t_array_source_94 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
314032 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
314033 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
314034 TYPE t_array_source_114 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
314035 
314036 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
314037 TYPE t_array_source_78 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
314038 TYPE t_array_source_84 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
314039 TYPE t_array_source_91 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
314040 TYPE t_array_source_95 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
314041 
314042 l_array_source_79              t_array_source_79;
314043 l_array_source_80              t_array_source_80;
314044 l_array_source_81              t_array_source_81;
314045 l_array_source_82              t_array_source_82;
314046 l_array_source_83              t_array_source_83;
314047 l_array_source_85              t_array_source_85;
314048 l_array_source_85_meaning      t_array_lookup_meaning;
314049 l_array_source_86              t_array_source_86;
314050 l_array_source_87              t_array_source_87;
314051 l_array_source_88              t_array_source_88;
314052 l_array_source_89              t_array_source_89;
314053 l_array_source_92              t_array_source_92;
314054 l_array_source_93              t_array_source_93;
314055 l_array_source_94              t_array_source_94;
314056 l_array_source_96              t_array_source_96;
314057 l_array_source_100              t_array_source_100;
314058 l_array_source_114              t_array_source_114;
314059 l_array_source_114_meaning      t_array_lookup_meaning;
314060 
314061 l_array_source_11      t_array_source_11;
314062 l_array_source_78      t_array_source_78;
314063 l_array_source_84      t_array_source_84;
314064 l_array_source_91      t_array_source_91;
314065 l_array_source_95      t_array_source_95;
314066 
314067 --
314068 CURSOR header_cur
314069 IS
314070 SELECT /*+ leading(xet) cardinality(xet,1) */
314071 -- Event Class Code: DELIVER_EXPENSE
314072     xet.entity_id
314073    ,xet.legal_entity_id
314074    ,xet.entity_code
314075    ,xet.transaction_number
314076    ,xet.event_id
314077    ,xet.event_class_code
314078    ,xet.event_type_code
314079    ,xet.event_number
314080    ,xet.event_date
314081    ,xet.transaction_date
314082    ,xet.reference_num_1
314083    ,xet.reference_num_2
314084    ,xet.reference_num_3
314085    ,xet.reference_num_4
314086    ,xet.reference_char_1
314087    ,xet.reference_char_2
314088    ,xet.reference_char_3
314089    ,xet.reference_char_4
314090    ,xet.reference_date_1
314091    ,xet.reference_date_2
314092    ,xet.reference_date_3
314093    ,xet.reference_date_4
314094    ,xet.event_created_by
314095    ,xet.budgetary_control_flag 
314096   , h3.APPLIED_TO_APPL_ID    source_79
314097   , h3.APPLIED_TO_DIST_LINK_TYPE    source_80
314098   , h3.APPLIED_TO_ENTITY_CODE    source_81
314099   , h3.PO_DISTRIBUTION_ID    source_82
314100   , h3.APPLIED_TO_PO_DOC_ID    source_83
314101   , h1.DISTRIBUTION_TYPE    source_85
314102   , fvl85.meaning   source_85_meaning
314103   , h4.PO_BUDGET_ACCOUNT    source_86
314104   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
314105   , h1.CURRENCY_CODE    source_88
314106   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
314107   , h1.CURRENCY_CONVERSION_DATE    source_92
314108   , h1.CURRENCY_CONVERSION_RATE    source_93
314109   , h1.CURRENCY_CONVERSION_TYPE    source_94
314110   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_96
314111   , h6.CST_ENCUM_UPG_OPTION    source_100
314112   , h1.TRANSFER_TO_GL_INDICATOR    source_114
314113   , fvl114.meaning   source_114_meaning
314114   FROM xla_events_gt     xet 
314115   , CST_XLA_RCV_HEADERS_V  h1
314116   , CST_XLA_RCV_REF_V  h3
314117   , PO_DISTS_REF_V  h4
314118   , PO_HEADERS_REF_V  h5
314119   , PSA_CST_XLA_UPG_V  h6
314120   , fnd_lookup_values    fvl85
314121   , fnd_lookup_values    fvl114
314122  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
314123    and xet.event_class_code = C_EVENT_CLASS_CODE
314124    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
314125  AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id  (+)  AND h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
314126   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
314127   AND fvl85.view_application_id(+) = 700
314128   AND fvl85.language(+)            = USERENV('LANG')
314129      AND fvl114.lookup_type(+)         = 'YES_NO'
314130   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
314131   AND fvl114.view_application_id(+) = 0
314132   AND fvl114.language(+)            = USERENV('LANG')
314133   
314134  ORDER BY event_id
314135 ;
314136 
314137 
314138 --
314139 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
314140 IS
314141 SELECT  /*+ leading(xet) cardinality(xet,1) */
314142 -- Event Class Code: DELIVER_EXPENSE
314143     xet.entity_id
314144    ,xet.legal_entity_id
314145    ,xet.entity_code
314146    ,xet.transaction_number
314147    ,xet.event_id
314148    ,xet.event_class_code
314149    ,xet.event_type_code
314150    ,xet.event_number
314151    ,xet.event_date
314152    ,xet.transaction_date
314153    ,xet.reference_num_1
314154    ,xet.reference_num_2
314155    ,xet.reference_num_3
314156    ,xet.reference_num_4
314157    ,xet.reference_char_1
314158    ,xet.reference_char_2
314159    ,xet.reference_char_3
314160    ,xet.reference_char_4
314161    ,xet.reference_date_1
314162    ,xet.reference_date_2
314163    ,xet.reference_date_3
314164    ,xet.reference_date_4
314165    ,xet.event_created_by
314166    ,xet.budgetary_control_flag
314167  , l2.LINE_NUMBER  
314168   , l2.CODE_COMBINATION_ID    source_11
314169   , l2.RCV_ACCOUNTING_LINE_TYPE    source_78
314170   , l2.DISTRIBUTION_IDENTIFIER    source_84
314171   , l2.ENTERED_AMOUNT    source_91
314172   , l2.ACCOUNTED_AMOUNT    source_95
314173   FROM xla_events_gt     xet 
314174   , CST_XLA_RCV_LINES_V  l2
314175  WHERE xet.event_id between x_first_event_id and x_last_event_id
314176    and xet.event_date between p_pad_start_date and p_pad_end_date
314177    and xet.event_class_code = C_EVENT_CLASS_CODE
314178    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
314179 ;
314180 
314181 --
314182 BEGIN
314183 IF g_log_enabled THEN
314184    l_log_module := C_DEFAULT_MODULE||'.EventClass_550';
314185 END IF;
314186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
314187    trace
314188       (p_msg      => 'BEGIN of EventClass_550'
314189       ,p_level    => C_LEVEL_PROCEDURE
314190       ,p_module   => l_log_module);
314191 END IF;
314192 
314193 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
314194    trace
314195       (p_msg      => 'p_application_id = '||p_application_id||
314196                      ' - p_base_ledger_id = '||p_base_ledger_id||
314197                      ' - p_target_ledger_id  = '||p_target_ledger_id||
314198                      ' - p_language = '||p_language||
314199                      ' - p_currency_code = '||p_currency_code||
314200                      ' - p_sla_ledger_id = '||p_sla_ledger_id
314201       ,p_level    => C_LEVEL_STATEMENT
314202       ,p_module   => l_log_module);
314203 END IF;
314204 --
314205 -- initialze arrays
314206 --
314207 g_array_event.DELETE;
314208 l_rec_array_event := l_null_rec_array_event;
314209 --
314210 --------------------------------------
314211 -- 4262811 Initialze MPA Line Number
314212 --------------------------------------
314213 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
314214 
314215 --
314216 
314217 --
314218 OPEN header_cur;
314219 --
314220 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
314221    trace
314222    (p_msg      => 'SQL - FETCH header_cur'
314223    ,p_level    => C_LEVEL_STATEMENT
314224    ,p_module   => l_log_module);
314225 END IF;
314226 --
314227 LOOP
314228 FETCH header_cur BULK COLLECT INTO
314229         l_array_entity_id
314230       , l_array_legal_entity_id
314231       , l_array_entity_code
314232       , l_array_transaction_num
314233       , l_array_event_id
314234       , l_array_class_code
314235       , l_array_event_type
314236       , l_array_event_number
314237       , l_array_event_date
314238       , l_array_transaction_date
314239       , l_array_reference_num_1
314240       , l_array_reference_num_2
314241       , l_array_reference_num_3
314242       , l_array_reference_num_4
314243       , l_array_reference_char_1
314244       , l_array_reference_char_2
314245       , l_array_reference_char_3
314246       , l_array_reference_char_4
314247       , l_array_reference_date_1
314248       , l_array_reference_date_2
314249       , l_array_reference_date_3
314250       , l_array_reference_date_4
314251       , l_array_event_created_by
314252       , l_array_budgetary_control_flag 
314253       , l_array_source_79
314254       , l_array_source_80
314255       , l_array_source_81
314256       , l_array_source_82
314257       , l_array_source_83
314258       , l_array_source_85
314259       , l_array_source_85_meaning
314260       , l_array_source_86
314261       , l_array_source_87
314262       , l_array_source_88
314263       , l_array_source_89
314264       , l_array_source_92
314265       , l_array_source_93
314266       , l_array_source_94
314267       , l_array_source_96
314268       , l_array_source_100
314269       , l_array_source_114
314270       , l_array_source_114_meaning
314271       LIMIT l_rows;
314272 --
314273 IF (C_LEVEL_EVENT >= g_log_level) THEN
314274    trace
314275    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
314276    ,p_level    => C_LEVEL_EVENT
314277    ,p_module   => l_log_module);
314278 END IF;
314279 --
314280 EXIT WHEN l_array_entity_id.COUNT = 0;
314281 
314282 -- initialize arrays
314283 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
314284 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
314285 
314286 --
314287 -- Bug 4458708
314288 --
314289 XLA_AE_LINES_PKG.g_LineNumber := 0;
314290 
314291 
314292 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
314293 g_last_hdr_idx := l_array_event_id.LAST;
314294 --
314295 -- loop for the headers. Each iteration is for each header extract row
314296 -- fetched in header cursor
314297 --
314298 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
314299 
314300 --
314301 -- set event info as cache for other routines to refer event attributes
314302 --
314303 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
314304    (p_application_id           => p_application_id
314305    ,p_primary_ledger_id        => p_primary_ledger_id
314306    ,p_base_ledger_id           => p_base_ledger_id
314307    ,p_target_ledger_id         => p_target_ledger_id
314308    ,p_entity_id                => l_array_entity_id(hdr_idx)
314309    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
314310    ,p_entity_code              => l_array_entity_code(hdr_idx)
314311    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
314312    ,p_event_id                 => l_array_event_id(hdr_idx)
314313    ,p_event_class_code         => l_array_class_code(hdr_idx)
314314    ,p_event_type_code          => l_array_event_type(hdr_idx)
314315    ,p_event_number             => l_array_event_number(hdr_idx)
314316    ,p_event_date               => l_array_event_date(hdr_idx)
314317    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
314318    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
314319    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
314320    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
314321    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
314322    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
314323    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
314324    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
314325    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
314326    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
314327    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
314328    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
314329    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
314330    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
314331    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
314332 
314333 --
314334 -- set the status of entry to C_VALID (0)
314335 --
314336 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
314337 
314338 --
314339 -- initialize a row for ae header
314340 --
314341 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
314342 
314343 l_event_id := l_array_event_id(hdr_idx);
314344 
314345 --
314346 -- storing the hdr_idx for event. May be used by line cursor.
314347 --
314348 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
314349 
314350 --
314351 -- store sources from header extract. This can be improved to
314352 -- store only those sources from header extract that may be used in lines
314353 --
314354 
314355 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
314356 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
314357 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
314358 g_array_event(l_event_id).array_value_num('source_82') := l_array_source_82(hdr_idx);
314359 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
314360 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
314361 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
314362 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
314363 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
314364 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
314365 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
314366 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
314367 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
314368 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
314369 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
314370 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
314371 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
314372 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
314373 
314374 --
314375 -- initilaize the status of ae headers for diffrent balance types
314376 -- the status is initialised to C_NOT_CREATED (2)
314377 --
314378 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
314379 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
314380 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
314381 
314382 --
314383 -- call api to validate and store accounting attributes for header
314384 --
314385 
314386 ------------------------------------------------------------
314387 -- Accrual Reversal : to get date for Standard Source (NONE)
314388 ------------------------------------------------------------
314389 l_acc_rev_gl_date_source := NULL;
314390 
314391      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
314392       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
314393      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
314394       l_rec_acct_attrs.array_date_value(2) := 
314395 xla_ae_sources_pkg.GetSystemSourceDate(
314396    p_source_code           => 'XLA_REFERENCE_DATE_1'
314397  , p_source_type_code      => 'Y'
314398  , p_source_application_id =>  602
314399 );
314400      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
314401       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
314402 
314403 
314404 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
314405 
314406 XLA_AE_HEADER_PKG.SetJeCategoryName;
314407 
314408 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
314409 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
314410 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
314411 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
314412 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
314413 
314414 
314415 -- No header level analytical criteria
314416 
314417 --
314418 --accounting attribute enhancement, bug 3612931
314419 --
314420 l_trx_reversal_source := SUBSTR(NULL, 1,30);
314421 
314422 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
314423    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
314424 
314425    xla_accounting_err_pkg.build_message
314426       (p_appli_s_name            => 'XLA'
314427       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
314428       ,p_token_1                 => 'ACCT_ATTR_NAME'
314429       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
314430       ,p_token_2                 => 'PRODUCT_NAME'
314431       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
314432       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
314433       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
314434       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
314435 
314436 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
314437    --
314438    -- following sets the accounting attributes needed to reverse
314439    -- accounting for a distributeion
314440    --
314441    xla_ae_lines_pkg.SetTrxReversalAttrs
314442       (p_event_id              => l_event_id
314443       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
314444       ,p_trx_reversal_source   => l_trx_reversal_source);
314445 
314446 END IF;
314447 
314448 
314449 ----------------------------------------------------------------
314450 -- 4262811 -  update the header statuses to invalid in need be
314451 ----------------------------------------------------------------
314452 --
314453 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
314454 
314455 
314456   -----------------------------------------------
314457   -- No accrual reversal for the event class/type
314458   -----------------------------------------------
314459 ----------------------------------------------------------------
314460 
314461 --
314462 -- this ends the header loop iteration for one bulk fetch
314463 --
314464 END LOOP;
314465 
314466 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
314467 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
314468 
314469 --
314470 -- insert dummy rows into lines gt table that were created due to
314471 -- transaction reversals
314472 --
314473 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
314474    l_result := XLA_AE_LINES_PKG.InsertLines;
314475 END IF;
314476 
314477 --
314478 -- reset the temp_line_num for each set of events fetched from header
314479 -- cursor rather than doing it for each new event in line cursor
314480 -- Bug 3939231
314481 --
314482 xla_ae_lines_pkg.g_temp_line_num := 0;
314483 
314484 
314485 
314486 --
314487 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
314488 --
314489 --
314490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
314491 
314492       trace
314493          (p_msg      => 'SQL - FETCH line_cur'
314494          ,p_level    => C_LEVEL_STATEMENT
314495          ,p_module   => l_log_module);
314496 
314497 END IF;
314498 --
314499 --
314500 LOOP
314501   --
314502   FETCH line_cur BULK COLLECT INTO
314503         l_array_entity_id
314504       , l_array_legal_entity_id
314505       , l_array_entity_code
314506       , l_array_transaction_num
314507       , l_array_event_id
314508       , l_array_class_code
314509       , l_array_event_type
314510       , l_array_event_number
314511       , l_array_event_date
314512       , l_array_transaction_date
314513       , l_array_reference_num_1
314514       , l_array_reference_num_2
314515       , l_array_reference_num_3
314516       , l_array_reference_num_4
314517       , l_array_reference_char_1
314518       , l_array_reference_char_2
314519       , l_array_reference_char_3
314520       , l_array_reference_char_4
314521       , l_array_reference_date_1
314522       , l_array_reference_date_2
314523       , l_array_reference_date_3
314524       , l_array_reference_date_4
314525       , l_array_event_created_by
314526       , l_array_budgetary_control_flag
314527       , l_array_extract_line_num 
314528       , l_array_source_11
314529       , l_array_source_78
314530       , l_array_source_84
314531       , l_array_source_91
314532       , l_array_source_95
314533       LIMIT l_rows;
314534 
314535   --
314536   IF (C_LEVEL_EVENT >= g_log_level) THEN
314537             trace
314538                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
314539                ,p_level    => C_LEVEL_EVENT
314540                ,p_module   => l_log_module);
314541   END IF;
314542   --
314543   EXIT WHEN l_array_entity_id.count = 0;
314544 
314545   XLA_AE_LINES_PKG.g_rec_lines := null;
314546 
314547 --
314548 -- Bug 4458708
314549 --
314550 XLA_AE_LINES_PKG.g_LineNumber := 0;
314551 --
314552 --
314553 
314554 FOR Idx IN 1..l_array_event_id.count LOOP
314555    --
314556    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
314557    --
314558    l_event_id := l_array_event_id(idx);  -- 5648433
314559 
314560    --
314561    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
314562    --
314563 
314564    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
314565              (g_array_event(l_event_id).array_value_num('header_index'))
314566          ,'N'
314567          ) <> 'Y'
314568    THEN
314569       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
314570          trace
314571             (p_msg      => 'Trancaction revesal option is not Y '
314572             ,p_level    => C_LEVEL_STATEMENT
314573             ,p_module   => l_log_module);
314574       END IF;
314575 
314576 --
314577 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
314578 --
314579 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
314580 --
314581 -- set event info as cache for other routines to refer event attributes
314582 --
314583 
314584 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
314585    l_previous_event_id := l_event_id;
314586 
314587    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
314588       (p_application_id           => p_application_id
314589       ,p_primary_ledger_id        => p_primary_ledger_id
314590       ,p_base_ledger_id           => p_base_ledger_id
314591       ,p_target_ledger_id         => p_target_ledger_id
314592       ,p_entity_id                => l_array_entity_id(Idx)
314593       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
314594       ,p_entity_code              => l_array_entity_code(Idx)
314595       ,p_transaction_num          => l_array_transaction_num(Idx)
314596       ,p_event_id                 => l_array_event_id(Idx)
314597       ,p_event_class_code         => l_array_class_code(Idx)
314598       ,p_event_type_code          => l_array_event_type(Idx)
314599       ,p_event_number             => l_array_event_number(Idx)
314600       ,p_event_date               => l_array_event_date(Idx)
314601       ,p_transaction_date         => l_array_transaction_date(Idx)
314602       ,p_reference_num_1          => l_array_reference_num_1(Idx)
314603       ,p_reference_num_2          => l_array_reference_num_2(Idx)
314604       ,p_reference_num_3          => l_array_reference_num_3(Idx)
314605       ,p_reference_num_4          => l_array_reference_num_4(Idx)
314606       ,p_reference_char_1         => l_array_reference_char_1(Idx)
314607       ,p_reference_char_2         => l_array_reference_char_2(Idx)
314608       ,p_reference_char_3         => l_array_reference_char_3(Idx)
314609       ,p_reference_char_4         => l_array_reference_char_4(Idx)
314610       ,p_reference_date_1         => l_array_reference_date_1(Idx)
314611       ,p_reference_date_2         => l_array_reference_date_2(Idx)
314612       ,p_reference_date_3         => l_array_reference_date_3(Idx)
314613       ,p_reference_date_4         => l_array_reference_date_4(Idx)
314614       ,p_event_created_by         => l_array_event_created_by(Idx)
314615       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
314616        --
314617 END IF;
314618 
314619 
314620 
314621 --
314622 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
314623 
314624 l_acct_reversal_source := SUBSTR(NULL, 1,30);
314625 
314626 IF l_continue_with_lines THEN
314627    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
314628       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
314629 
314630       xla_accounting_err_pkg.build_message
314631          (p_appli_s_name            => 'XLA'
314632          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
314633          ,p_token_1                 => 'LINE_NUMBER'
314634          ,p_value_1                 => l_array_extract_line_num(Idx)
314635          ,p_token_2                 => 'PRODUCT_NAME'
314636          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
314637          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
314638          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
314639          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
314640 
314641    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
314642       --
314643       -- following sets the accounting attributes needed to reverse
314644       -- accounting for a distributeion
314645       --
314646 
314647       --
314648       -- 5217187
314649       --
314650       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
314651       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
314652                                        g_array_event(l_event_id).array_value_num('header_index'));
314653       --
314654       --
314655 
314656       -- No reversal code generated
314657 
314658       xla_ae_lines_pkg.SetAcctReversalAttrs
314659          (p_event_id             => l_event_id
314660          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
314661          ,p_calculate_acctd_flag => l_calculate_acctd_flag
314662          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
314663    END IF;
314664 
314665    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
314666        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
314667 
314668 --
314669 AcctLineType_44 (
314670  p_application_id  => p_application_id
314671  ,p_event_id     => l_event_id
314672  ,p_calculate_acctd_flag => l_calculate_acctd_flag
314673  ,p_calculate_g_l_flag => l_calculate_g_l_flag
314674  ,p_actual_flag => l_actual_flag
314675  ,p_balance_type_code => l_balance_type_code
314676  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
314677  
314678  , p_source_11 => l_array_source_11(Idx)
314679  , p_source_78 => l_array_source_78(Idx)
314680  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
314681  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
314682  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
314683  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
314684  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
314685  , p_source_84 => l_array_source_84(Idx)
314686  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
314687  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
314688  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
314689  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
314690  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
314691  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
314692  , p_source_91 => l_array_source_91(Idx)
314693  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
314694  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
314695  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
314696  , p_source_95 => l_array_source_95(Idx)
314697  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
314698  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
314699  );
314700 If(l_balance_type_code = 'A') THEN
314701   l_actual_gain_loss_ref := l_gain_or_loss_ref;
314702 END IF;
314703 
314704 --
314705 
314706 
314707 --
314708 AcctLineType_508 (
314709  p_application_id  => p_application_id
314710  ,p_event_id     => l_event_id
314711  ,p_calculate_acctd_flag => l_calculate_acctd_flag
314712  ,p_calculate_g_l_flag => l_calculate_g_l_flag
314713  ,p_actual_flag => l_actual_flag
314714  ,p_balance_type_code => l_balance_type_code
314715  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
314716  
314717  , p_source_11 => l_array_source_11(Idx)
314718  , p_source_78 => l_array_source_78(Idx)
314719  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
314720  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
314721  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
314722  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
314723  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
314724  , p_source_84 => l_array_source_84(Idx)
314725  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
314726  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
314727  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
314728  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
314729  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
314730  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
314731  , p_source_91 => l_array_source_91(Idx)
314732  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
314733  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
314734  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
314735  , p_source_95 => l_array_source_95(Idx)
314736  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
314737  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
314738  );
314739 If(l_balance_type_code = 'A') THEN
314740   l_actual_gain_loss_ref := l_gain_or_loss_ref;
314741 END IF;
314742 
314743 --
314744 
314745       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
314746       -- or secondary ledger that has different currency with primary
314747       -- or alc that is calculated by sla
314748       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
314749             (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'))
314750 
314751 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
314752 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
314753           AND (l_actual_flag = 'A')) THEN
314754         XLA_AE_LINES_PKG.CreateGainOrLossLines(
314755           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
314756          ,p_application_id   => p_application_id
314757          ,p_amb_context_code => 'DEFAULT'
314758          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
314759          ,p_event_class_code => C_EVENT_CLASS_CODE
314760          ,p_event_type_code  => C_EVENT_TYPE_CODE
314761          
314762          ,p_gain_ccid        => -1
314763          ,p_loss_ccid        => -1
314764 
314765          ,p_actual_flag      => l_actual_flag
314766          ,p_enc_flag         => null
314767          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
314768          ,p_enc_g_l_ref      => null
314769          );
314770       END IF;
314771    END IF;
314772 END IF;
314773 
314774    ELSE
314775       --
314776       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
314777       --
314778       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
314779          trace
314780             (p_msg      => 'Trancaction revesal option is Y'
314781             ,p_level    => C_LEVEL_STATEMENT
314782             ,p_module   => l_log_module);
314783       END IF;
314784    END IF;
314785 
314786 END LOOP;
314787 l_result := XLA_AE_LINES_PKG.InsertLines ;
314788 end loop;
314789 close line_cur;
314790 
314791 
314792 --
314793 -- insert headers into xla_ae_headers_gt table
314794 --
314795 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
314796 
314797 -- insert into errors table here.
314798 
314799 END LOOP;
314800 
314801 --
314802 -- 4865292
314803 --
314804 -- Compare g_hdr_extract_count with event count in
314805 -- CreateHeadersAndLines.
314806 --
314807 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
314808 
314809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
314810    trace (p_msg     => '# rows extracted from header extract objects '
314811                     || ' (running total): '
314812                     || g_hdr_extract_count
314813          ,p_level   => C_LEVEL_STATEMENT
314814          ,p_module  => l_log_module);
314815 END IF;
314816 
314817 CLOSE header_cur;
314818 --
314819 
314820 --
314821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
314822    trace
314823       (p_msg      => 'END of EventClass_550'
314824       ,p_level    => C_LEVEL_PROCEDURE
314825       ,p_module   => l_log_module);
314826 END IF;
314827 --
314828 RETURN l_result;
314829 EXCEPTION
314830 WHEN xla_exceptions_pkg.application_exception THEN
314831    
314832 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
314833 
314834    
314835 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
314836 
314837    RAISE;
314838 
314839 WHEN NO_DATA_FOUND THEN
314840 
314841 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
314842 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
314843 
314844 FOR header_record IN header_cur
314845 LOOP
314846     l_array_header_events(header_record.event_id) := header_record.event_id;
314847 END LOOP;
314848 
314849 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
314850 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
314851 
314852 fnd_file.put_line(fnd_file.LOG, '                    ');
314853 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
314854 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
314855 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
314856 
314857 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
314858 LOOP
314859 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
314860 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
314861         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
314862 	END IF;
314863 END LOOP;
314864 
314865 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
314866 fnd_file.put_line(fnd_file.LOG, '                    ');
314867 
314868 
314869 xla_exceptions_pkg.raise_message
314870       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_550');
314871 
314872 
314873 WHEN OTHERS THEN
314874    xla_exceptions_pkg.raise_message
314875       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_550');
314876 END EventClass_550;
314877 --
314878 
314879 ---------------------------------------
314880 --
314881 -- PRIVATE PROCEDURE
314882 --         insert_sources_551
314883 --
314884 ----------------------------------------
314885 --
314886 PROCEDURE insert_sources_551(
314887                                 p_target_ledger_id       IN NUMBER
314888                               , p_language               IN VARCHAR2
314889                               , p_sla_ledger_id          IN NUMBER
314890                               , p_pad_start_date         IN DATE
314891                               , p_pad_end_date           IN DATE
314892                          )
314893 IS
314894 
314895 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
314896 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
314897 p_apps_owner                   VARCHAR2(30);
314898 l_log_module                   VARCHAR2(240);
314899 BEGIN
314900 IF g_log_enabled THEN
314901       l_log_module := C_DEFAULT_MODULE||'.insert_sources_551';
314902 END IF;
314903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
314904 
314905       trace
314906          (p_msg      => 'BEGIN of insert_sources_551'
314907          ,p_level    => C_LEVEL_PROCEDURE
314908          ,p_module   => l_log_module);
314909 
314910 END IF;
314911 
314912 -- select APPS owner
314913 SELECT oracle_username
314914   INTO p_apps_owner
314915   FROM fnd_oracle_userid
314916  WHERE read_only_flag = 'U'
314917 ;
314918 
314919 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
314920       trace
314921          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
314922                         ' - p_language = '||p_language||
314923                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
314924                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
314925                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
314926                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
314927          ,p_level    => C_LEVEL_STATEMENT
314928          ,p_module   => l_log_module);
314929 END IF;
314930 
314931 
314932 --
314933 INSERT INTO xla_diag_sources --hdr2
314934 (
314935         event_id
314936       , ledger_id
314937       , sla_ledger_id
314938       , description_language
314939       , object_name
314940       , object_type_code
314941       , line_number
314942       , source_application_id
314943       , source_type_code
314944       , source_code
314945       , source_value
314946       , source_meaning
314947       , created_by
314948       , creation_date
314949       , last_update_date
314950       , last_updated_by
314951       , last_update_login
314952       , program_update_date
314953       , program_application_id
314954       , program_id
314955       , request_id
314956 )
314957 SELECT
314958         event_id
314959       , p_target_ledger_id
314960       , p_sla_ledger_id
314961       , p_language
314962       , object_name
314963       , object_type_code
314964       , line_number
314965       , source_application_id
314966       , source_type_code
314967       , source_code
314968       , SUBSTR(source_value ,1,1996)
314969       , SUBSTR(source_meaning ,1,200)
314970       , xla_environment_pkg.g_Usr_Id
314971       , TRUNC(SYSDATE)
314972       , TRUNC(SYSDATE)
314973       , xla_environment_pkg.g_Usr_Id
314974       , xla_environment_pkg.g_Login_Id
314975       , TRUNC(SYSDATE)
314976       , xla_environment_pkg.g_Prog_Appl_Id
314977       , xla_environment_pkg.g_Prog_Id
314978       , xla_environment_pkg.g_Req_Id
314979   FROM (
314980        SELECT xet.event_id                  event_id
314981             , 0                          line_number
314982             , CASE r
314983                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
314984                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
314985                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
314986                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
314987                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
314988                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
314989                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
314990                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
314991                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
314992                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
314993                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
314994                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
314995                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
314996                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
314997                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
314998                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
314999                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
315000                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
315001                 WHEN 19 THEN 'CST_XLA_INV_REF_V' 
315002                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
315003                 WHEN 21 THEN 'PSA_CST_XLA_UPG_V' 
315004                 WHEN 22 THEN 'CST_XLA_INV_REF_V' 
315005                 WHEN 23 THEN 'CST_XLA_INV_REF_V' 
315006                 WHEN 24 THEN 'PO_REQ_DISTS_REF_V' 
315007                 WHEN 25 THEN 'PO_REQ_HEADERS_REF_V' 
315008                 WHEN 26 THEN 'CST_XLA_INV_HEADERS_V' 
315009                 
315010                ELSE null
315011               END                           object_name
315012             , CASE r
315013                 WHEN 1 THEN 'HEADER' 
315014                 WHEN 2 THEN 'HEADER' 
315015                 WHEN 3 THEN 'HEADER' 
315016                 WHEN 4 THEN 'HEADER' 
315017                 WHEN 5 THEN 'HEADER' 
315018                 WHEN 6 THEN 'HEADER' 
315019                 WHEN 7 THEN 'HEADER' 
315020                 WHEN 8 THEN 'HEADER' 
315021                 WHEN 9 THEN 'HEADER' 
315022                 WHEN 10 THEN 'HEADER' 
315023                 WHEN 11 THEN 'HEADER' 
315024                 WHEN 12 THEN 'HEADER' 
315025                 WHEN 13 THEN 'HEADER' 
315026                 WHEN 14 THEN 'HEADER' 
315027                 WHEN 15 THEN 'HEADER' 
315028                 WHEN 16 THEN 'HEADER' 
315029                 WHEN 17 THEN 'HEADER' 
315030                 WHEN 18 THEN 'HEADER' 
315031                 WHEN 19 THEN 'HEADER' 
315032                 WHEN 20 THEN 'HEADER' 
315033                 WHEN 21 THEN 'HEADER' 
315034                 WHEN 22 THEN 'HEADER' 
315035                 WHEN 23 THEN 'HEADER' 
315036                 WHEN 24 THEN 'HEADER' 
315037                 WHEN 25 THEN 'HEADER' 
315038                 WHEN 26 THEN 'HEADER' 
315039                 
315040                 ELSE null
315041               END                           object_type_code
315042             , CASE r
315043                 WHEN 1 THEN '707' 
315044                 WHEN 2 THEN '707' 
315045                 WHEN 3 THEN '707' 
315046                 WHEN 4 THEN '707' 
315047                 WHEN 5 THEN '707' 
315048                 WHEN 6 THEN '707' 
315049                 WHEN 7 THEN '707' 
315050                 WHEN 8 THEN '707' 
315051                 WHEN 9 THEN '707' 
315052                 WHEN 10 THEN '707' 
315053                 WHEN 11 THEN '707' 
315054                 WHEN 12 THEN '707' 
315055                 WHEN 13 THEN '707' 
315056                 WHEN 14 THEN '707' 
315057                 WHEN 15 THEN '707' 
315058                 WHEN 16 THEN '707' 
315059                 WHEN 17 THEN '707' 
315060                 WHEN 18 THEN '707' 
315061                 WHEN 19 THEN '707' 
315062                 WHEN 20 THEN '707' 
315063                 WHEN 21 THEN '707' 
315064                 WHEN 22 THEN '707' 
315065                 WHEN 23 THEN '707' 
315066                 WHEN 24 THEN '201' 
315067                 WHEN 25 THEN '201' 
315068                 WHEN 26 THEN '707' 
315069                 
315070                 ELSE null
315071               END                           source_application_id
315072             , 'S'             source_type_code
315073             , CASE r
315074                 WHEN 1 THEN 'TRANSACTION_ID' 
315075                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
315076                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
315077                 WHEN 4 THEN 'TRANSACTION_UOM' 
315078                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
315079                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
315080                 WHEN 7 THEN 'PLA_EXPENSE_ACCOUNT' 
315081                 WHEN 8 THEN 'INTERORG_EXPENSE_ACCOUNT' 
315082                 WHEN 9 THEN 'INTERORG_PAYABLES_ACCOUNT' 
315083                 WHEN 10 THEN 'PLA_MATERIAL_ACCOUNT' 
315084                 WHEN 11 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
315085                 WHEN 12 THEN 'PLA_RESOURCE_ACCOUNT' 
315086                 WHEN 13 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
315087                 WHEN 14 THEN 'PLA_OVERHEAD_ACCOUNT' 
315088                 WHEN 15 THEN 'APPLIED_TO_APPL_ID' 
315089                 WHEN 16 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
315090                 WHEN 17 THEN 'APPLIED_TO_ENTITY_CODE' 
315091                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
315092                 WHEN 19 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
315093                 WHEN 20 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
315094                 WHEN 21 THEN 'CST_ENCUM_UPG_OPTION' 
315095                 WHEN 22 THEN 'TXN_PO_DISTRIBUTION_ID' 
315096                 WHEN 23 THEN 'TXN_PO_HEADER_ID' 
315097                 WHEN 24 THEN 'REQ_BUDGET_ACCOUNT' 
315098                 WHEN 25 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
315099                 WHEN 26 THEN 'TRANSFER_TO_GL_INDICATOR' 
315100                 
315101                 ELSE null
315102               END                           source_code
315103             , CASE r
315104                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
315105                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
315106                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
315107                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
315108                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
315109                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
315110                 WHEN 7 THEN TO_CHAR(h7.PLA_EXPENSE_ACCOUNT)
315111                 WHEN 8 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
315112                 WHEN 9 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
315113                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
315114                 WHEN 11 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
315115                 WHEN 12 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
315116                 WHEN 13 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
315117                 WHEN 14 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
315118                 WHEN 15 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
315119                 WHEN 16 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
315120                 WHEN 17 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
315121                 WHEN 18 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
315122                 WHEN 19 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
315123                 WHEN 20 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
315124                 WHEN 21 THEN TO_CHAR(h10.CST_ENCUM_UPG_OPTION)
315125                 WHEN 22 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
315126                 WHEN 23 THEN TO_CHAR(h4.TXN_PO_HEADER_ID)
315127                 WHEN 24 THEN TO_CHAR(h8.REQ_BUDGET_ACCOUNT)
315128                 WHEN 25 THEN TO_CHAR(h9.REQ_ENCUMBRANCE_TYPE_ID)
315129                 WHEN 26 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
315130                 
315131                 ELSE null
315132               END                           source_value
315133             , CASE r
315134                 WHEN 18 THEN fvl85.meaning
315135                 WHEN 26 THEN fvl114.meaning
315136                 
315137                 ELSE null
315138               END               source_meaning
315139          FROM xla_events_gt     xet  
315140       , CST_XLA_INTERORG_PARAMS_REF_V  h1
315141       , CST_XLA_INV_HEADERS_V  h2
315142       , CST_XLA_INV_REF_V  h4
315143       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
315144       , CST_XLA_INV_TXN_TYPES_REF_V  h6
315145       , CST_XLA_PLA_CATEGORY_REF_V  h7
315146       , PO_REQ_DISTS_REF_V  h8
315147       , PO_REQ_HEADERS_REF_V  h9
315148       , PSA_CST_XLA_UPG_V  h10
315149   , fnd_lookup_values    fvl85
315150   , fnd_lookup_values    fvl114
315151              ,(select rownum r from all_objects where rownum <= 26 and owner = p_apps_owner)
315152          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
315153            AND xet.event_class_code = C_EVENT_CLASS_CODE
315154               AND h2.event_id = xet.event_id
315155   AND h1.event_id (+) = h2.event_id
315156  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
315157 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
315158 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg AND h4.bus_flow_req_dist_id=h8.req_distribution_id (+)  AND h4.bus_flow_req_id = h9.req_id (+)  AND h4.rcv_transaction_id = h10.transaction_id (+)    AND fvl85.lookup_type(+)         = 
315159 'CST_DISTRIBUTION_TYPE'
315160   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
315161   AND fvl85.view_application_id(+) = 700
315162   AND fvl85.language(+)            = USERENV('LANG')
315163      AND fvl114.lookup_type(+)         = 'YES_NO'
315164   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
315165   AND fvl114.view_application_id(+) = 0
315166   AND fvl114.language(+)            = USERENV('LANG')
315167   
315168 )
315169 ;
315170 --
315171 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
315172 
315173       trace
315174          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
315175          ,p_level    => C_LEVEL_STATEMENT
315176          ,p_module   => l_log_module);
315177 
315178 END IF;
315179 --
315180 
315181 
315182 
315183 --
315184 INSERT INTO xla_diag_sources  --line2
315185 (
315186         event_id
315187       , ledger_id
315188       , sla_ledger_id
315189       , description_language
315190       , object_name
315191       , object_type_code
315192       , line_number
315193       , source_application_id
315194       , source_type_code
315195       , source_code
315196       , source_value
315197       , source_meaning
315198       , created_by
315199       , creation_date
315200       , last_update_date
315201       , last_updated_by
315202       , last_update_login
315203       , program_update_date
315204       , program_application_id
315205       , program_id
315206       , request_id
315207 )
315208 SELECT  event_id
315209       , p_target_ledger_id
315210       , p_sla_ledger_id
315211       , p_language
315212       , object_name
315213       , object_type_code
315214       , line_number
315215       , source_application_id
315216       , source_type_code
315217       , source_code
315218       , SUBSTR(source_value,1,1996)
315219       , SUBSTR(source_meaning ,1,200)
315220       , xla_environment_pkg.g_Usr_Id
315221       , TRUNC(SYSDATE)
315222       , TRUNC(SYSDATE)
315223       , xla_environment_pkg.g_Usr_Id
315224       , xla_environment_pkg.g_Login_Id
315225       , TRUNC(SYSDATE)
315226       , xla_environment_pkg.g_Prog_Appl_Id
315227       , xla_environment_pkg.g_Prog_Id
315228       , xla_environment_pkg.g_Req_Id
315229   FROM (
315230        SELECT xet.event_id                  event_id
315231             , l3.line_number                 line_number
315232             , CASE r
315233                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
315234                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
315235                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
315236                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
315237                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
315238                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
315239                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
315240                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
315241                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
315242                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
315243                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
315244                 
315245                ELSE null
315246               END                           object_name
315247             , CASE r
315248                 WHEN 1 THEN 'LINE' 
315249                 WHEN 2 THEN 'LINE' 
315250                 WHEN 3 THEN 'LINE' 
315251                 WHEN 4 THEN 'LINE' 
315252                 WHEN 5 THEN 'LINE' 
315253                 WHEN 6 THEN 'LINE' 
315254                 WHEN 7 THEN 'LINE' 
315255                 WHEN 8 THEN 'LINE' 
315256                 WHEN 9 THEN 'LINE' 
315257                 WHEN 10 THEN 'LINE' 
315258                 WHEN 11 THEN 'LINE' 
315259                 
315260                 ELSE null
315261               END                           object_type_code
315262             , CASE r
315263                 WHEN 1 THEN '707' 
315264                 WHEN 2 THEN '707' 
315265                 WHEN 3 THEN '707' 
315266                 WHEN 4 THEN '707' 
315267                 WHEN 5 THEN '707' 
315268                 WHEN 6 THEN '707' 
315269                 WHEN 7 THEN '707' 
315270                 WHEN 8 THEN '707' 
315271                 WHEN 9 THEN '707' 
315272                 WHEN 10 THEN '707' 
315273                 WHEN 11 THEN '707' 
315274                 
315275                 ELSE null
315276               END                           source_application_id
315277             , 'S'             source_type_code
315278             , CASE r
315279                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
315280                 WHEN 2 THEN 'COST_ELEMENT_ID' 
315281                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
315282                 WHEN 4 THEN 'CURRENCY_CODE' 
315283                 WHEN 5 THEN 'ENTERED_AMOUNT' 
315284                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
315285                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
315286                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
315287                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
315288                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
315289                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
315290                 
315291                 ELSE null
315292               END                           source_code
315293             , CASE r
315294                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
315295                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
315296                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
315297                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
315298                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
315299                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
315300                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
315301                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
315302                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
315303                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
315304                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
315305                 
315306                 ELSE null
315307               END                           source_value
315308             , CASE r
315309                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
315310                           1009615
315311                          ,TO_CHAR(l3.COST_ELEMENT_ID)
315312                          ,'COST_ELEMENT_ID'
315313                          ,'S'
315314                          ,707)
315315                 
315316                 ELSE null
315317               END               source_meaning
315318          FROM  xla_events_gt     xet  
315319         , CST_XLA_INV_LINES_V  l3
315320             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
315321         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
315322           AND xet.event_class_code = C_EVENT_CLASS_CODE
315323             AND l3.event_id          = xet.event_id
315324 
315325 )
315326 ;
315327 --
315328 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
315329 
315330       trace
315331          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
315332          ,p_level    => C_LEVEL_STATEMENT
315333          ,p_module   => l_log_module);
315334 
315335 END IF;
315336 
315337 
315338 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
315339       trace
315340          (p_msg      => 'END of insert_sources_551'
315341          ,p_level    => C_LEVEL_PROCEDURE
315342          ,p_module   => l_log_module);
315343 END IF;
315344 EXCEPTION
315345   WHEN xla_exceptions_pkg.application_exception THEN
315346       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
315347             trace
315348                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
315349                ,p_level    => C_LEVEL_EXCEPTION
315350                ,p_module   => l_log_module);
315351       END IF;
315352       RAISE;
315353   WHEN OTHERS THEN
315354       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
315355             trace
315356                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
315357                ,p_level    => C_LEVEL_EXCEPTION
315358                ,p_module   => l_log_module);
315359        END IF;
315360        xla_exceptions_pkg.raise_message
315361            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_551');
315362 END insert_sources_551;
315363 --
315364 
315365 ---------------------------------------
315366 --
315367 -- PRIVATE FUNCTION
315368 --         EventClass_551
315369 --
315370 ----------------------------------------
315371 --
315372 FUNCTION EventClass_551
315373        (p_application_id         IN NUMBER
315374        ,p_base_ledger_id         IN NUMBER
315375        ,p_target_ledger_id       IN NUMBER
315376        ,p_language               IN VARCHAR2
315377        ,p_currency_code          IN VARCHAR2
315378        ,p_sla_ledger_id          IN NUMBER
315379        ,p_pad_start_date         IN DATE
315380        ,p_pad_end_date           IN DATE
315381        ,p_primary_ledger_id      IN NUMBER)
315382 RETURN BOOLEAN IS
315383 --
315384 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
315385 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
315386 
315387 l_calculate_acctd_flag   VARCHAR2(1) :='N';
315388 l_calculate_g_l_flag     VARCHAR2(1) :='N';
315389 --
315390 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315391 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315392 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
315393 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
315394 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315395 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
315396 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
315397 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315398 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
315399 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
315400 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315401 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315402 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315403 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
315404 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
315405 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
315406 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
315407 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
315408 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
315409 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
315410 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
315411 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
315412 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
315413 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
315414 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
315415 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
315416 
315417 l_event_id                             NUMBER;
315418 l_previous_event_id                    NUMBER;
315419 l_first_event_id                       NUMBER;
315420 l_last_event_id                        NUMBER;
315421 
315422 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
315423 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
315424 --
315425 --
315426 l_result                    BOOLEAN := TRUE;
315427 l_rows                      NUMBER  := 1000;
315428 l_event_type_name           VARCHAR2(80) := 'All';
315429 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Receipt';
315430 l_description               VARCHAR2(4000);
315431 l_transaction_reversal      NUMBER;
315432 l_ae_header_id              NUMBER;
315433 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
315434 l_log_module                VARCHAR2(240);
315435 --
315436 l_acct_reversal_source      VARCHAR2(30);
315437 l_trx_reversal_source       VARCHAR2(30);
315438 
315439 l_continue_with_lines       BOOLEAN := TRUE;
315440 --
315441 l_acc_rev_gl_date_source    DATE;                      -- 4262811
315442 --
315443 type t_array_event_id is table of number index by binary_integer;
315444 
315445 l_rec_array_event                    t_rec_array_event;
315446 l_null_rec_array_event               t_rec_array_event;
315447 l_array_ae_header_id                 xla_number_array_type;
315448 l_actual_flag                        VARCHAR2(1) := NULL;
315449 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
315450 l_balance_type_code                  VARCHAR2(1) :=NULL;
315451 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
315452 
315453 --
315454 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
315455 --
315456 
315457 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
315458 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
315459 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
315460 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
315461 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
315462 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315463 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315464 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315465 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315466 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315467 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315468 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315469 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315470 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315471 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
315472 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
315473 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
315474 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
315475 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
315476 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
315477 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
315478 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
315479 TYPE t_array_source_102 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
315480 TYPE t_array_source_103 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
315481 TYPE t_array_source_104 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
315482 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
315483 
315484 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
315485 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
315486 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
315487 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
315488 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
315489 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
315490 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
315491 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
315492 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
315493 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
315494 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
315495 
315496 l_array_source_1              t_array_source_1;
315497 l_array_source_2              t_array_source_2;
315498 l_array_source_3              t_array_source_3;
315499 l_array_source_4              t_array_source_4;
315500 l_array_source_5              t_array_source_5;
315501 l_array_source_22              t_array_source_22;
315502 l_array_source_24              t_array_source_24;
315503 l_array_source_34              t_array_source_34;
315504 l_array_source_35              t_array_source_35;
315505 l_array_source_41              t_array_source_41;
315506 l_array_source_42              t_array_source_42;
315507 l_array_source_43              t_array_source_43;
315508 l_array_source_44              t_array_source_44;
315509 l_array_source_45              t_array_source_45;
315510 l_array_source_79              t_array_source_79;
315511 l_array_source_80              t_array_source_80;
315512 l_array_source_81              t_array_source_81;
315513 l_array_source_85              t_array_source_85;
315514 l_array_source_85_meaning      t_array_lookup_meaning;
315515 l_array_source_87              t_array_source_87;
315516 l_array_source_89              t_array_source_89;
315517 l_array_source_100              t_array_source_100;
315518 l_array_source_101              t_array_source_101;
315519 l_array_source_102              t_array_source_102;
315520 l_array_source_103              t_array_source_103;
315521 l_array_source_104              t_array_source_104;
315522 l_array_source_114              t_array_source_114;
315523 l_array_source_114_meaning      t_array_lookup_meaning;
315524 
315525 l_array_source_11      t_array_source_11;
315526 l_array_source_15      t_array_source_15;
315527 l_array_source_84      t_array_source_84;
315528 l_array_source_88      t_array_source_88;
315529 l_array_source_91      t_array_source_91;
315530 l_array_source_92      t_array_source_92;
315531 l_array_source_93      t_array_source_93;
315532 l_array_source_94      t_array_source_94;
315533 l_array_source_95      t_array_source_95;
315534 l_array_source_97      t_array_source_97;
315535 l_array_source_108      t_array_source_108;
315536 
315537 --
315538 CURSOR header_cur
315539 IS
315540 SELECT /*+ leading(xet) cardinality(xet,1) */
315541 -- Event Class Code: DIR_INTERORG_RCPT
315542     xet.entity_id
315543    ,xet.legal_entity_id
315544    ,xet.entity_code
315545    ,xet.transaction_number
315546    ,xet.event_id
315547    ,xet.event_class_code
315548    ,xet.event_type_code
315549    ,xet.event_number
315550    ,xet.event_date
315551    ,xet.transaction_date
315552    ,xet.reference_num_1
315553    ,xet.reference_num_2
315554    ,xet.reference_num_3
315555    ,xet.reference_num_4
315556    ,xet.reference_char_1
315557    ,xet.reference_char_2
315558    ,xet.reference_char_3
315559    ,xet.reference_char_4
315560    ,xet.reference_date_1
315561    ,xet.reference_date_2
315562    ,xet.reference_date_3
315563    ,xet.reference_date_4
315564    ,xet.event_created_by
315565    ,xet.budgetary_control_flag 
315566   , h2.TRANSACTION_ID    source_1
315567   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
315568   , h4.TRANSACTION_QUANTITY    source_3
315569   , h4.TRANSACTION_UOM    source_4
315570   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
315571   , h7.PLA_BRIDGING_ACCOUNT    source_22
315572   , h7.PLA_EXPENSE_ACCOUNT    source_24
315573   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
315574   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
315575   , h7.PLA_MATERIAL_ACCOUNT    source_41
315576   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
315577   , h7.PLA_RESOURCE_ACCOUNT    source_43
315578   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
315579   , h7.PLA_OVERHEAD_ACCOUNT    source_45
315580   , h4.APPLIED_TO_APPL_ID    source_79
315581   , h4.APPLIED_TO_DIST_LINK_TYPE    source_80
315582   , h4.APPLIED_TO_ENTITY_CODE    source_81
315583   , h2.DISTRIBUTION_TYPE    source_85
315584   , fvl85.meaning   source_85_meaning
315585   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
315586   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
315587   , h10.CST_ENCUM_UPG_OPTION    source_100
315588   , h4.TXN_PO_DISTRIBUTION_ID    source_101
315589   , h4.TXN_PO_HEADER_ID    source_102
315590   , h8.REQ_BUDGET_ACCOUNT    source_103
315591   , h9.REQ_ENCUMBRANCE_TYPE_ID    source_104
315592   , h2.TRANSFER_TO_GL_INDICATOR    source_114
315593   , fvl114.meaning   source_114_meaning
315594   FROM xla_events_gt     xet 
315595   , CST_XLA_INTERORG_PARAMS_REF_V  h1
315596   , CST_XLA_INV_HEADERS_V  h2
315597   , CST_XLA_INV_REF_V  h4
315598   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
315599   , CST_XLA_INV_TXN_TYPES_REF_V  h6
315600   , CST_XLA_PLA_CATEGORY_REF_V  h7
315601   , PO_REQ_DISTS_REF_V  h8
315602   , PO_REQ_HEADERS_REF_V  h9
315603   , PSA_CST_XLA_UPG_V  h10
315604   , fnd_lookup_values    fvl85
315605   , fnd_lookup_values    fvl114
315606  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
315607    and xet.event_class_code = C_EVENT_CLASS_CODE
315608    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
315609   AND h1.event_id (+) = h2.event_id
315610  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
315611 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
315612 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG AND h4.BUS_FLOW_REQ_DIST_ID=h8.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h9.REQ_ID (+)  AND h4.rcv_transaction_id = h10.transaction_id (+)    AND fvl85.lookup_type(+)         = 
315613 'CST_DISTRIBUTION_TYPE'
315614   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
315615   AND fvl85.view_application_id(+) = 700
315616   AND fvl85.language(+)            = USERENV('LANG')
315617      AND fvl114.lookup_type(+)         = 'YES_NO'
315618   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
315619   AND fvl114.view_application_id(+) = 0
315620   AND fvl114.language(+)            = USERENV('LANG')
315621   
315622  ORDER BY event_id
315623 ;
315624 
315625 
315626 --
315627 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
315628 IS
315629 SELECT  /*+ leading(xet) cardinality(xet,1) */
315630 -- Event Class Code: DIR_INTERORG_RCPT
315631     xet.entity_id
315632    ,xet.legal_entity_id
315633    ,xet.entity_code
315634    ,xet.transaction_number
315635    ,xet.event_id
315636    ,xet.event_class_code
315637    ,xet.event_type_code
315638    ,xet.event_number
315639    ,xet.event_date
315640    ,xet.transaction_date
315641    ,xet.reference_num_1
315642    ,xet.reference_num_2
315643    ,xet.reference_num_3
315644    ,xet.reference_num_4
315645    ,xet.reference_char_1
315646    ,xet.reference_char_2
315647    ,xet.reference_char_3
315648    ,xet.reference_char_4
315649    ,xet.reference_date_1
315650    ,xet.reference_date_2
315651    ,xet.reference_date_3
315652    ,xet.reference_date_4
315653    ,xet.event_created_by
315654    ,xet.budgetary_control_flag
315655  , l3.LINE_NUMBER  
315656   , l3.CODE_COMBINATION_ID    source_11
315657   , l3.COST_ELEMENT_ID    source_15
315658   , l3.DISTRIBUTION_IDENTIFIER    source_84
315659   , l3.CURRENCY_CODE    source_88
315660   , l3.ENTERED_AMOUNT    source_91
315661   , l3.CURRENCY_CONVERSION_DATE    source_92
315662   , l3.CURRENCY_CONVERSION_RATE    source_93
315663   , l3.CURRENCY_CONVERSION_TYPE    source_94
315664   , l3.ACCOUNTED_AMOUNT    source_95
315665   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
315666   , l3.L_ORGANIZATION_CODE    source_108
315667   FROM xla_events_gt     xet 
315668   , CST_XLA_INV_LINES_V  l3
315669  WHERE xet.event_id between x_first_event_id and x_last_event_id
315670    and xet.event_date between p_pad_start_date and p_pad_end_date
315671    and xet.event_class_code = C_EVENT_CLASS_CODE
315672    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
315673 ;
315674 
315675 --
315676 BEGIN
315677 IF g_log_enabled THEN
315678    l_log_module := C_DEFAULT_MODULE||'.EventClass_551';
315679 END IF;
315680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
315681    trace
315682       (p_msg      => 'BEGIN of EventClass_551'
315683       ,p_level    => C_LEVEL_PROCEDURE
315684       ,p_module   => l_log_module);
315685 END IF;
315686 
315687 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
315688    trace
315689       (p_msg      => 'p_application_id = '||p_application_id||
315690                      ' - p_base_ledger_id = '||p_base_ledger_id||
315691                      ' - p_target_ledger_id  = '||p_target_ledger_id||
315692                      ' - p_language = '||p_language||
315693                      ' - p_currency_code = '||p_currency_code||
315694                      ' - p_sla_ledger_id = '||p_sla_ledger_id
315695       ,p_level    => C_LEVEL_STATEMENT
315696       ,p_module   => l_log_module);
315697 END IF;
315698 --
315699 -- initialze arrays
315700 --
315701 g_array_event.DELETE;
315702 l_rec_array_event := l_null_rec_array_event;
315703 --
315704 --------------------------------------
315705 -- 4262811 Initialze MPA Line Number
315706 --------------------------------------
315707 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
315708 
315709 --
315710 
315711 --
315712 OPEN header_cur;
315713 --
315714 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
315715    trace
315716    (p_msg      => 'SQL - FETCH header_cur'
315717    ,p_level    => C_LEVEL_STATEMENT
315718    ,p_module   => l_log_module);
315719 END IF;
315720 --
315721 LOOP
315722 FETCH header_cur BULK COLLECT INTO
315723         l_array_entity_id
315724       , l_array_legal_entity_id
315725       , l_array_entity_code
315726       , l_array_transaction_num
315727       , l_array_event_id
315728       , l_array_class_code
315729       , l_array_event_type
315730       , l_array_event_number
315731       , l_array_event_date
315732       , l_array_transaction_date
315733       , l_array_reference_num_1
315734       , l_array_reference_num_2
315735       , l_array_reference_num_3
315736       , l_array_reference_num_4
315737       , l_array_reference_char_1
315738       , l_array_reference_char_2
315739       , l_array_reference_char_3
315740       , l_array_reference_char_4
315741       , l_array_reference_date_1
315742       , l_array_reference_date_2
315743       , l_array_reference_date_3
315744       , l_array_reference_date_4
315745       , l_array_event_created_by
315746       , l_array_budgetary_control_flag 
315747       , l_array_source_1
315748       , l_array_source_2
315749       , l_array_source_3
315750       , l_array_source_4
315751       , l_array_source_5
315752       , l_array_source_22
315753       , l_array_source_24
315754       , l_array_source_34
315755       , l_array_source_35
315756       , l_array_source_41
315757       , l_array_source_42
315758       , l_array_source_43
315759       , l_array_source_44
315760       , l_array_source_45
315761       , l_array_source_79
315762       , l_array_source_80
315763       , l_array_source_81
315764       , l_array_source_85
315765       , l_array_source_85_meaning
315766       , l_array_source_87
315767       , l_array_source_89
315768       , l_array_source_100
315769       , l_array_source_101
315770       , l_array_source_102
315771       , l_array_source_103
315772       , l_array_source_104
315773       , l_array_source_114
315774       , l_array_source_114_meaning
315775       LIMIT l_rows;
315776 --
315777 IF (C_LEVEL_EVENT >= g_log_level) THEN
315778    trace
315779    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
315780    ,p_level    => C_LEVEL_EVENT
315781    ,p_module   => l_log_module);
315782 END IF;
315783 --
315784 EXIT WHEN l_array_entity_id.COUNT = 0;
315785 
315786 -- initialize arrays
315787 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
315788 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
315789 
315790 --
315791 -- Bug 4458708
315792 --
315793 XLA_AE_LINES_PKG.g_LineNumber := 0;
315794 
315795 
315796 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
315797 g_last_hdr_idx := l_array_event_id.LAST;
315798 --
315799 -- loop for the headers. Each iteration is for each header extract row
315800 -- fetched in header cursor
315801 --
315802 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
315803 
315804 --
315805 -- set event info as cache for other routines to refer event attributes
315806 --
315807 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
315808    (p_application_id           => p_application_id
315809    ,p_primary_ledger_id        => p_primary_ledger_id
315810    ,p_base_ledger_id           => p_base_ledger_id
315811    ,p_target_ledger_id         => p_target_ledger_id
315812    ,p_entity_id                => l_array_entity_id(hdr_idx)
315813    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
315814    ,p_entity_code              => l_array_entity_code(hdr_idx)
315815    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
315816    ,p_event_id                 => l_array_event_id(hdr_idx)
315817    ,p_event_class_code         => l_array_class_code(hdr_idx)
315818    ,p_event_type_code          => l_array_event_type(hdr_idx)
315819    ,p_event_number             => l_array_event_number(hdr_idx)
315820    ,p_event_date               => l_array_event_date(hdr_idx)
315821    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
315822    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
315823    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
315824    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
315825    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
315826    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
315827    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
315828    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
315829    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
315830    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
315831    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
315832    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
315833    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
315834    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
315835    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
315836 
315837 --
315838 -- set the status of entry to C_VALID (0)
315839 --
315840 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
315841 
315842 --
315843 -- initialize a row for ae header
315844 --
315845 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
315846 
315847 l_event_id := l_array_event_id(hdr_idx);
315848 
315849 --
315850 -- storing the hdr_idx for event. May be used by line cursor.
315851 --
315852 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
315853 
315854 --
315855 -- store sources from header extract. This can be improved to
315856 -- store only those sources from header extract that may be used in lines
315857 --
315858 
315859 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
315860 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
315861 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
315862 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
315863 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
315864 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
315865 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
315866 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
315867 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
315868 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
315869 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
315870 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
315871 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
315872 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
315873 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
315874 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
315875 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
315876 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
315877 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
315878 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
315879 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
315880 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
315881 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
315882 g_array_event(l_event_id).array_value_num('source_102') := l_array_source_102(hdr_idx);
315883 g_array_event(l_event_id).array_value_num('source_103') := l_array_source_103(hdr_idx);
315884 g_array_event(l_event_id).array_value_num('source_104') := l_array_source_104(hdr_idx);
315885 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
315886 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
315887 
315888 --
315889 -- initilaize the status of ae headers for diffrent balance types
315890 -- the status is initialised to C_NOT_CREATED (2)
315891 --
315892 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
315893 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
315894 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
315895 
315896 --
315897 -- call api to validate and store accounting attributes for header
315898 --
315899 
315900 ------------------------------------------------------------
315901 -- Accrual Reversal : to get date for Standard Source (NONE)
315902 ------------------------------------------------------------
315903 l_acc_rev_gl_date_source := NULL;
315904 
315905      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
315906       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_104');
315907      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
315908       l_rec_acct_attrs.array_date_value(2) := 
315909 xla_ae_sources_pkg.GetSystemSourceDate(
315910    p_source_code           => 'XLA_REFERENCE_DATE_1'
315911  , p_source_type_code      => 'Y'
315912  , p_source_application_id =>  602
315913 );
315914      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
315915       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
315916 
315917 
315918 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
315919 
315920 XLA_AE_HEADER_PKG.SetJeCategoryName;
315921 
315922 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
315923 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
315924 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
315925 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
315926 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
315927 
315928 
315929 --
315930 xla_ae_header_pkg.SetHdrDescription(
315931    p_description => Description_1 (
315932    p_application_id => p_application_id 
315933  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
315934  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
315935  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
315936  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
315937  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
315938    )
315939 );
315940 --
315941 
315942 -- No header level analytical criteria
315943 
315944 --
315945 --accounting attribute enhancement, bug 3612931
315946 --
315947 l_trx_reversal_source := SUBSTR(NULL, 1,30);
315948 
315949 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
315950    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
315951 
315952    xla_accounting_err_pkg.build_message
315953       (p_appli_s_name            => 'XLA'
315954       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
315955       ,p_token_1                 => 'ACCT_ATTR_NAME'
315956       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
315957       ,p_token_2                 => 'PRODUCT_NAME'
315958       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
315959       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
315960       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
315961       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
315962 
315963 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
315964    --
315965    -- following sets the accounting attributes needed to reverse
315966    -- accounting for a distributeion
315967    --
315968    xla_ae_lines_pkg.SetTrxReversalAttrs
315969       (p_event_id              => l_event_id
315970       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
315971       ,p_trx_reversal_source   => l_trx_reversal_source);
315972 
315973 END IF;
315974 
315975 
315976 ----------------------------------------------------------------
315977 -- 4262811 -  update the header statuses to invalid in need be
315978 ----------------------------------------------------------------
315979 --
315980 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
315981 
315982 
315983   -----------------------------------------------
315984   -- No accrual reversal for the event class/type
315985   -----------------------------------------------
315986 ----------------------------------------------------------------
315987 
315988 --
315989 -- this ends the header loop iteration for one bulk fetch
315990 --
315991 END LOOP;
315992 
315993 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
315994 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
315995 
315996 --
315997 -- insert dummy rows into lines gt table that were created due to
315998 -- transaction reversals
315999 --
316000 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
316001    l_result := XLA_AE_LINES_PKG.InsertLines;
316002 END IF;
316003 
316004 --
316005 -- reset the temp_line_num for each set of events fetched from header
316006 -- cursor rather than doing it for each new event in line cursor
316007 -- Bug 3939231
316008 --
316009 xla_ae_lines_pkg.g_temp_line_num := 0;
316010 
316011 
316012 
316013 --
316014 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
316015 --
316016 --
316017 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
316018 
316019       trace
316020          (p_msg      => 'SQL - FETCH line_cur'
316021          ,p_level    => C_LEVEL_STATEMENT
316022          ,p_module   => l_log_module);
316023 
316024 END IF;
316025 --
316026 --
316027 LOOP
316028   --
316029   FETCH line_cur BULK COLLECT INTO
316030         l_array_entity_id
316031       , l_array_legal_entity_id
316032       , l_array_entity_code
316033       , l_array_transaction_num
316034       , l_array_event_id
316035       , l_array_class_code
316036       , l_array_event_type
316037       , l_array_event_number
316038       , l_array_event_date
316039       , l_array_transaction_date
316040       , l_array_reference_num_1
316041       , l_array_reference_num_2
316042       , l_array_reference_num_3
316043       , l_array_reference_num_4
316044       , l_array_reference_char_1
316045       , l_array_reference_char_2
316046       , l_array_reference_char_3
316047       , l_array_reference_char_4
316048       , l_array_reference_date_1
316049       , l_array_reference_date_2
316050       , l_array_reference_date_3
316051       , l_array_reference_date_4
316052       , l_array_event_created_by
316053       , l_array_budgetary_control_flag
316054       , l_array_extract_line_num 
316055       , l_array_source_11
316056       , l_array_source_15
316057       , l_array_source_84
316058       , l_array_source_88
316059       , l_array_source_91
316060       , l_array_source_92
316061       , l_array_source_93
316062       , l_array_source_94
316063       , l_array_source_95
316064       , l_array_source_97
316065       , l_array_source_108
316066       LIMIT l_rows;
316067 
316068   --
316069   IF (C_LEVEL_EVENT >= g_log_level) THEN
316070             trace
316071                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
316072                ,p_level    => C_LEVEL_EVENT
316073                ,p_module   => l_log_module);
316074   END IF;
316075   --
316076   EXIT WHEN l_array_entity_id.count = 0;
316077 
316078   XLA_AE_LINES_PKG.g_rec_lines := null;
316079 
316080 --
316081 -- Bug 4458708
316082 --
316083 XLA_AE_LINES_PKG.g_LineNumber := 0;
316084 --
316085 --
316086 
316087 FOR Idx IN 1..l_array_event_id.count LOOP
316088    --
316089    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
316090    --
316091    l_event_id := l_array_event_id(idx);  -- 5648433
316092 
316093    --
316094    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
316095    --
316096 
316097    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
316098              (g_array_event(l_event_id).array_value_num('header_index'))
316099          ,'N'
316100          ) <> 'Y'
316101    THEN
316102       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
316103          trace
316104             (p_msg      => 'Trancaction revesal option is not Y '
316105             ,p_level    => C_LEVEL_STATEMENT
316106             ,p_module   => l_log_module);
316107       END IF;
316108 
316109 --
316110 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
316111 --
316112 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
316113 --
316114 -- set event info as cache for other routines to refer event attributes
316115 --
316116 
316117 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
316118    l_previous_event_id := l_event_id;
316119 
316120    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
316121       (p_application_id           => p_application_id
316122       ,p_primary_ledger_id        => p_primary_ledger_id
316123       ,p_base_ledger_id           => p_base_ledger_id
316124       ,p_target_ledger_id         => p_target_ledger_id
316125       ,p_entity_id                => l_array_entity_id(Idx)
316126       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
316127       ,p_entity_code              => l_array_entity_code(Idx)
316128       ,p_transaction_num          => l_array_transaction_num(Idx)
316129       ,p_event_id                 => l_array_event_id(Idx)
316130       ,p_event_class_code         => l_array_class_code(Idx)
316131       ,p_event_type_code          => l_array_event_type(Idx)
316132       ,p_event_number             => l_array_event_number(Idx)
316133       ,p_event_date               => l_array_event_date(Idx)
316134       ,p_transaction_date         => l_array_transaction_date(Idx)
316135       ,p_reference_num_1          => l_array_reference_num_1(Idx)
316136       ,p_reference_num_2          => l_array_reference_num_2(Idx)
316137       ,p_reference_num_3          => l_array_reference_num_3(Idx)
316138       ,p_reference_num_4          => l_array_reference_num_4(Idx)
316139       ,p_reference_char_1         => l_array_reference_char_1(Idx)
316140       ,p_reference_char_2         => l_array_reference_char_2(Idx)
316141       ,p_reference_char_3         => l_array_reference_char_3(Idx)
316142       ,p_reference_char_4         => l_array_reference_char_4(Idx)
316143       ,p_reference_date_1         => l_array_reference_date_1(Idx)
316144       ,p_reference_date_2         => l_array_reference_date_2(Idx)
316145       ,p_reference_date_3         => l_array_reference_date_3(Idx)
316146       ,p_reference_date_4         => l_array_reference_date_4(Idx)
316147       ,p_event_created_by         => l_array_event_created_by(Idx)
316148       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
316149        --
316150 END IF;
316151 
316152 
316153 
316154 --
316155 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
316156 
316157 l_acct_reversal_source := SUBSTR(NULL, 1,30);
316158 
316159 IF l_continue_with_lines THEN
316160    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
316161       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
316162 
316163       xla_accounting_err_pkg.build_message
316164          (p_appli_s_name            => 'XLA'
316165          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
316166          ,p_token_1                 => 'LINE_NUMBER'
316167          ,p_value_1                 => l_array_extract_line_num(Idx)
316168          ,p_token_2                 => 'PRODUCT_NAME'
316169          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
316170          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
316171          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
316172          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
316173 
316174    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
316175       --
316176       -- following sets the accounting attributes needed to reverse
316177       -- accounting for a distributeion
316178       --
316179 
316180       --
316181       -- 5217187
316182       --
316183       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
316184       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
316185                                        g_array_event(l_event_id).array_value_num('header_index'));
316186       --
316187       --
316188 
316189       -- No reversal code generated
316190 
316191       xla_ae_lines_pkg.SetAcctReversalAttrs
316192          (p_event_id             => l_event_id
316193          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
316194          ,p_calculate_acctd_flag => l_calculate_acctd_flag
316195          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
316196    END IF;
316197 
316198    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
316199        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
316200 
316201 --
316202 AcctLineType_77 (
316203  p_application_id  => p_application_id
316204  ,p_event_id     => l_event_id
316205  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316206  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316207  ,p_actual_flag => l_actual_flag
316208  ,p_balance_type_code => l_balance_type_code
316209  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316210  
316211  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316212  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316213  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316214  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316215  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316216  , p_source_11 => l_array_source_11(Idx)
316217  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316218  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316219  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316220  , p_source_84 => l_array_source_84(Idx)
316221  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316222  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316223  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316224  , p_source_88 => l_array_source_88(Idx)
316225  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316226  , p_source_91 => l_array_source_91(Idx)
316227  , p_source_92 => l_array_source_92(Idx)
316228  , p_source_93 => l_array_source_93(Idx)
316229  , p_source_94 => l_array_source_94(Idx)
316230  , p_source_95 => l_array_source_95(Idx)
316231  , p_source_97 => l_array_source_97(Idx)
316232  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316233  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316234  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316235  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316236  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316237  );
316238 If(l_balance_type_code = 'A') THEN
316239   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316240 END IF;
316241 
316242 --
316243 
316244 
316245 --
316246 AcctLineType_156 (
316247  p_application_id  => p_application_id
316248  ,p_event_id     => l_event_id
316249  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316250  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316251  ,p_actual_flag => l_actual_flag
316252  ,p_balance_type_code => l_balance_type_code
316253  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316254  
316255  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316256  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316257  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316258  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316259  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316260  , p_source_11 => l_array_source_11(Idx)
316261  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316262  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316263  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316264  , p_source_84 => l_array_source_84(Idx)
316265  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316266  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316267  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316268  , p_source_88 => l_array_source_88(Idx)
316269  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316270  , p_source_91 => l_array_source_91(Idx)
316271  , p_source_92 => l_array_source_92(Idx)
316272  , p_source_93 => l_array_source_93(Idx)
316273  , p_source_94 => l_array_source_94(Idx)
316274  , p_source_95 => l_array_source_95(Idx)
316275  , p_source_97 => l_array_source_97(Idx)
316276  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316277  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316278  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316279  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316280  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316281  );
316282 If(l_balance_type_code = 'A') THEN
316283   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316284 END IF;
316285 
316286 --
316287 
316288 
316289 --
316290 AcctLineType_158 (
316291  p_application_id  => p_application_id
316292  ,p_event_id     => l_event_id
316293  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316294  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316295  ,p_actual_flag => l_actual_flag
316296  ,p_balance_type_code => l_balance_type_code
316297  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316298  
316299  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316300  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316301  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316302  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316303  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316304  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
316305  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316306  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316307  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316308  , p_source_84 => l_array_source_84(Idx)
316309  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316310  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316311  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316312  , p_source_88 => l_array_source_88(Idx)
316313  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316314  , p_source_91 => l_array_source_91(Idx)
316315  , p_source_92 => l_array_source_92(Idx)
316316  , p_source_93 => l_array_source_93(Idx)
316317  , p_source_94 => l_array_source_94(Idx)
316318  , p_source_95 => l_array_source_95(Idx)
316319  , p_source_97 => l_array_source_97(Idx)
316320  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316321  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316322  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316323  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316324  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316325  );
316326 If(l_balance_type_code = 'A') THEN
316327   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316328 END IF;
316329 
316330 --
316331 
316332 
316333 --
316334 AcctLineType_199 (
316335  p_application_id  => p_application_id
316336  ,p_event_id     => l_event_id
316337  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316338  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316339  ,p_actual_flag => l_actual_flag
316340  ,p_balance_type_code => l_balance_type_code
316341  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316342  
316343  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316344  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316345  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316346  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316347  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316348  , p_source_11 => l_array_source_11(Idx)
316349  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316350  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316351  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316352  , p_source_84 => l_array_source_84(Idx)
316353  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316354  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316355  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316356  , p_source_88 => l_array_source_88(Idx)
316357  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316358  , p_source_91 => l_array_source_91(Idx)
316359  , p_source_92 => l_array_source_92(Idx)
316360  , p_source_93 => l_array_source_93(Idx)
316361  , p_source_94 => l_array_source_94(Idx)
316362  , p_source_95 => l_array_source_95(Idx)
316363  , p_source_97 => l_array_source_97(Idx)
316364  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316365  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316366  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316367  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316368  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316369  );
316370 If(l_balance_type_code = 'A') THEN
316371   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316372 END IF;
316373 
316374 --
316375 
316376 
316377 --
316378 AcctLineType_205 (
316379  p_application_id  => p_application_id
316380  ,p_event_id     => l_event_id
316381  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316382  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316383  ,p_actual_flag => l_actual_flag
316384  ,p_balance_type_code => l_balance_type_code
316385  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316386  
316387  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316388  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316389  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316390  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316391  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316392  , p_source_11 => l_array_source_11(Idx)
316393  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316394  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316395  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316396  , p_source_84 => l_array_source_84(Idx)
316397  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316398  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316399  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316400  , p_source_88 => l_array_source_88(Idx)
316401  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316402  , p_source_91 => l_array_source_91(Idx)
316403  , p_source_92 => l_array_source_92(Idx)
316404  , p_source_93 => l_array_source_93(Idx)
316405  , p_source_94 => l_array_source_94(Idx)
316406  , p_source_95 => l_array_source_95(Idx)
316407  , p_source_97 => l_array_source_97(Idx)
316408  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316409  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316410  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316411  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316412  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316413  );
316414 If(l_balance_type_code = 'A') THEN
316415   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316416 END IF;
316417 
316418 --
316419 
316420 
316421 --
316422 AcctLineType_265 (
316423  p_application_id  => p_application_id
316424  ,p_event_id     => l_event_id
316425  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316426  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316427  ,p_actual_flag => l_actual_flag
316428  ,p_balance_type_code => l_balance_type_code
316429  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316430  
316431  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316432  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316433  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316434  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316435  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316436  , p_source_15 => l_array_source_15(Idx)
316437  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
316438  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
316439  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
316440  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
316441  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
316442  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316443  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316444  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316445  , p_source_84 => l_array_source_84(Idx)
316446  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316447  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316448  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316449  , p_source_88 => l_array_source_88(Idx)
316450  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316451  , p_source_91 => l_array_source_91(Idx)
316452  , p_source_92 => l_array_source_92(Idx)
316453  , p_source_93 => l_array_source_93(Idx)
316454  , p_source_94 => l_array_source_94(Idx)
316455  , p_source_95 => l_array_source_95(Idx)
316456  , p_source_97 => l_array_source_97(Idx)
316457  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316458  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316459  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316460  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316461  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316462  , p_source_108 => l_array_source_108(Idx)
316463  );
316464 If(l_balance_type_code = 'A') THEN
316465   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316466 END IF;
316467 
316468 --
316469 
316470 
316471 --
316472 AcctLineType_296 (
316473  p_application_id  => p_application_id
316474  ,p_event_id     => l_event_id
316475  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316476  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316477  ,p_actual_flag => l_actual_flag
316478  ,p_balance_type_code => l_balance_type_code
316479  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316480  
316481  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316482  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316483  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316484  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316485  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316486  , p_source_11 => l_array_source_11(Idx)
316487  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316488  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316489  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316490  , p_source_84 => l_array_source_84(Idx)
316491  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316492  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316493  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316494  , p_source_88 => l_array_source_88(Idx)
316495  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316496  , p_source_91 => l_array_source_91(Idx)
316497  , p_source_92 => l_array_source_92(Idx)
316498  , p_source_93 => l_array_source_93(Idx)
316499  , p_source_94 => l_array_source_94(Idx)
316500  , p_source_95 => l_array_source_95(Idx)
316501  , p_source_97 => l_array_source_97(Idx)
316502  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316503  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316504  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316505  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316506  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316507  );
316508 If(l_balance_type_code = 'A') THEN
316509   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316510 END IF;
316511 
316512 --
316513 
316514 
316515 --
316516 AcctLineType_340 (
316517  p_application_id  => p_application_id
316518  ,p_event_id     => l_event_id
316519  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316520  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316521  ,p_actual_flag => l_actual_flag
316522  ,p_balance_type_code => l_balance_type_code
316523  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316524  
316525  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316526  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316527  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316528  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316529  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316530  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
316531  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316532  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316533  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316534  , p_source_84 => l_array_source_84(Idx)
316535  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316536  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316537  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316538  , p_source_88 => l_array_source_88(Idx)
316539  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316540  , p_source_91 => l_array_source_91(Idx)
316541  , p_source_92 => l_array_source_92(Idx)
316542  , p_source_93 => l_array_source_93(Idx)
316543  , p_source_94 => l_array_source_94(Idx)
316544  , p_source_95 => l_array_source_95(Idx)
316545  , p_source_97 => l_array_source_97(Idx)
316546  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316547  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316548  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316549  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316550  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316551  );
316552 If(l_balance_type_code = 'A') THEN
316553   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316554 END IF;
316555 
316556 --
316557 
316558 
316559 --
316560 AcctLineType_376 (
316561  p_application_id  => p_application_id
316562  ,p_event_id     => l_event_id
316563  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316564  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316565  ,p_actual_flag => l_actual_flag
316566  ,p_balance_type_code => l_balance_type_code
316567  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316568  
316569  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316570  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316571  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316572  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316573  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316574  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
316575  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316576  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316577  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316578  , p_source_84 => l_array_source_84(Idx)
316579  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316580  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316581  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316582  , p_source_88 => l_array_source_88(Idx)
316583  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316584  , p_source_91 => l_array_source_91(Idx)
316585  , p_source_92 => l_array_source_92(Idx)
316586  , p_source_93 => l_array_source_93(Idx)
316587  , p_source_94 => l_array_source_94(Idx)
316588  , p_source_95 => l_array_source_95(Idx)
316589  , p_source_97 => l_array_source_97(Idx)
316590  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316591  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316592  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316593  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316594  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316595  );
316596 If(l_balance_type_code = 'A') THEN
316597   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316598 END IF;
316599 
316600 --
316601 
316602 
316603 --
316604 AcctLineType_409 (
316605  p_application_id  => p_application_id
316606  ,p_event_id     => l_event_id
316607  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316608  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316609  ,p_actual_flag => l_actual_flag
316610  ,p_balance_type_code => l_balance_type_code
316611  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316612  
316613  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316614  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316615  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316616  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316617  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316618  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
316619  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316620  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316621  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316622  , p_source_84 => l_array_source_84(Idx)
316623  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316624  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316625  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316626  , p_source_88 => l_array_source_88(Idx)
316627  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316628  , p_source_91 => l_array_source_91(Idx)
316629  , p_source_92 => l_array_source_92(Idx)
316630  , p_source_93 => l_array_source_93(Idx)
316631  , p_source_94 => l_array_source_94(Idx)
316632  , p_source_95 => l_array_source_95(Idx)
316633  , p_source_97 => l_array_source_97(Idx)
316634  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316635  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316636  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316637  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316638  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316639  );
316640 If(l_balance_type_code = 'A') THEN
316641   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316642 END IF;
316643 
316644 --
316645 
316646 
316647 --
316648 AcctLineType_473 (
316649  p_application_id  => p_application_id
316650  ,p_event_id     => l_event_id
316651  ,p_calculate_acctd_flag => l_calculate_acctd_flag
316652  ,p_calculate_g_l_flag => l_calculate_g_l_flag
316653  ,p_actual_flag => l_actual_flag
316654  ,p_balance_type_code => l_balance_type_code
316655  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
316656  
316657  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
316658  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
316659  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
316660  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
316661  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
316662  , p_source_11 => l_array_source_11(Idx)
316663  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
316664  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
316665  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
316666  , p_source_84 => l_array_source_84(Idx)
316667  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
316668  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
316669  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
316670  , p_source_88 => l_array_source_88(Idx)
316671  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
316672  , p_source_91 => l_array_source_91(Idx)
316673  , p_source_92 => l_array_source_92(Idx)
316674  , p_source_93 => l_array_source_93(Idx)
316675  , p_source_94 => l_array_source_94(Idx)
316676  , p_source_95 => l_array_source_95(Idx)
316677  , p_source_97 => l_array_source_97(Idx)
316678  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
316679  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
316680  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
316681  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
316682  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
316683  );
316684 If(l_balance_type_code = 'A') THEN
316685   l_actual_gain_loss_ref := l_gain_or_loss_ref;
316686 END IF;
316687 
316688 --
316689 
316690       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
316691       -- or secondary ledger that has different currency with primary
316692       -- or alc that is calculated by sla
316693       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
316694             (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'))
316695 
316696 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
316697 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
316698           AND (l_actual_flag = 'A')) THEN
316699         XLA_AE_LINES_PKG.CreateGainOrLossLines(
316700           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
316701          ,p_application_id   => p_application_id
316702          ,p_amb_context_code => 'DEFAULT'
316703          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
316704          ,p_event_class_code => C_EVENT_CLASS_CODE
316705          ,p_event_type_code  => C_EVENT_TYPE_CODE
316706          
316707          ,p_gain_ccid        => -1
316708          ,p_loss_ccid        => -1
316709 
316710          ,p_actual_flag      => l_actual_flag
316711          ,p_enc_flag         => null
316712          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
316713          ,p_enc_g_l_ref      => null
316714          );
316715       END IF;
316716    END IF;
316717 END IF;
316718 
316719    ELSE
316720       --
316721       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
316722       --
316723       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
316724          trace
316725             (p_msg      => 'Trancaction revesal option is Y'
316726             ,p_level    => C_LEVEL_STATEMENT
316727             ,p_module   => l_log_module);
316728       END IF;
316729    END IF;
316730 
316731 END LOOP;
316732 l_result := XLA_AE_LINES_PKG.InsertLines ;
316733 end loop;
316734 close line_cur;
316735 
316736 
316737 --
316738 -- insert headers into xla_ae_headers_gt table
316739 --
316740 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
316741 
316742 -- insert into errors table here.
316743 
316744 END LOOP;
316745 
316746 --
316747 -- 4865292
316748 --
316749 -- Compare g_hdr_extract_count with event count in
316750 -- CreateHeadersAndLines.
316751 --
316752 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
316753 
316754 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
316755    trace (p_msg     => '# rows extracted from header extract objects '
316756                     || ' (running total): '
316757                     || g_hdr_extract_count
316758          ,p_level   => C_LEVEL_STATEMENT
316759          ,p_module  => l_log_module);
316760 END IF;
316761 
316762 CLOSE header_cur;
316763 --
316764 
316765 --
316766 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
316767    trace
316768       (p_msg      => 'END of EventClass_551'
316769       ,p_level    => C_LEVEL_PROCEDURE
316770       ,p_module   => l_log_module);
316771 END IF;
316772 --
316773 RETURN l_result;
316774 EXCEPTION
316775 WHEN xla_exceptions_pkg.application_exception THEN
316776    
316777 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
316778 
316779    
316780 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
316781 
316782    RAISE;
316783 
316784 WHEN NO_DATA_FOUND THEN
316785 
316786 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
316787 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
316788 
316789 FOR header_record IN header_cur
316790 LOOP
316791     l_array_header_events(header_record.event_id) := header_record.event_id;
316792 END LOOP;
316793 
316794 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
316795 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
316796 
316797 fnd_file.put_line(fnd_file.LOG, '                    ');
316798 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
316799 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
316800 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
316801 
316802 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
316803 LOOP
316804 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
316805 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
316806         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
316807 	END IF;
316808 END LOOP;
316809 
316810 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
316811 fnd_file.put_line(fnd_file.LOG, '                    ');
316812 
316813 
316814 xla_exceptions_pkg.raise_message
316815       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_551');
316816 
316817 
316818 WHEN OTHERS THEN
316819    xla_exceptions_pkg.raise_message
316820       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_551');
316821 END EventClass_551;
316822 --
316823 
316824 ---------------------------------------
316825 --
316826 -- PRIVATE PROCEDURE
316827 --         insert_sources_552
316828 --
316829 ----------------------------------------
316830 --
316831 PROCEDURE insert_sources_552(
316832                                 p_target_ledger_id       IN NUMBER
316833                               , p_language               IN VARCHAR2
316834                               , p_sla_ledger_id          IN NUMBER
316835                               , p_pad_start_date         IN DATE
316836                               , p_pad_end_date           IN DATE
316837                          )
316838 IS
316839 
316840 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_ALL';
316841 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
316842 p_apps_owner                   VARCHAR2(30);
316843 l_log_module                   VARCHAR2(240);
316844 BEGIN
316845 IF g_log_enabled THEN
316846       l_log_module := C_DEFAULT_MODULE||'.insert_sources_552';
316847 END IF;
316848 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
316849 
316850       trace
316851          (p_msg      => 'BEGIN of insert_sources_552'
316852          ,p_level    => C_LEVEL_PROCEDURE
316853          ,p_module   => l_log_module);
316854 
316855 END IF;
316856 
316857 -- select APPS owner
316858 SELECT oracle_username
316859   INTO p_apps_owner
316860   FROM fnd_oracle_userid
316861  WHERE read_only_flag = 'U'
316862 ;
316863 
316864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
316865       trace
316866          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
316867                         ' - p_language = '||p_language||
316868                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
316869                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
316870                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
316871                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
316872          ,p_level    => C_LEVEL_STATEMENT
316873          ,p_module   => l_log_module);
316874 END IF;
316875 
316876 
316877 --
316878 INSERT INTO xla_diag_sources --hdr2
316879 (
316880         event_id
316881       , ledger_id
316882       , sla_ledger_id
316883       , description_language
316884       , object_name
316885       , object_type_code
316886       , line_number
316887       , source_application_id
316888       , source_type_code
316889       , source_code
316890       , source_value
316891       , source_meaning
316892       , created_by
316893       , creation_date
316894       , last_update_date
316895       , last_updated_by
316896       , last_update_login
316897       , program_update_date
316898       , program_application_id
316899       , program_id
316900       , request_id
316901 )
316902 SELECT
316903         event_id
316904       , p_target_ledger_id
316905       , p_sla_ledger_id
316906       , p_language
316907       , object_name
316908       , object_type_code
316909       , line_number
316910       , source_application_id
316911       , source_type_code
316912       , source_code
316913       , SUBSTR(source_value ,1,1996)
316914       , SUBSTR(source_meaning ,1,200)
316915       , xla_environment_pkg.g_Usr_Id
316916       , TRUNC(SYSDATE)
316917       , TRUNC(SYSDATE)
316918       , xla_environment_pkg.g_Usr_Id
316919       , xla_environment_pkg.g_Login_Id
316920       , TRUNC(SYSDATE)
316921       , xla_environment_pkg.g_Prog_Appl_Id
316922       , xla_environment_pkg.g_Prog_Id
316923       , xla_environment_pkg.g_Req_Id
316924   FROM (
316925        SELECT xet.event_id                  event_id
316926             , 0                          line_number
316927             , CASE r
316928                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
316929                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
316930                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
316931                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
316932                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
316933                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
316934                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
316935                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
316936                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
316937                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
316938                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
316939                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
316940                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
316941                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
316942                 WHEN 15 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
316943                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
316944                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
316945                 
316946                ELSE null
316947               END                           object_name
316948             , CASE r
316949                 WHEN 1 THEN 'HEADER' 
316950                 WHEN 2 THEN 'HEADER' 
316951                 WHEN 3 THEN 'HEADER' 
316952                 WHEN 4 THEN 'HEADER' 
316953                 WHEN 5 THEN 'HEADER' 
316954                 WHEN 6 THEN 'HEADER' 
316955                 WHEN 7 THEN 'HEADER' 
316956                 WHEN 8 THEN 'HEADER' 
316957                 WHEN 9 THEN 'HEADER' 
316958                 WHEN 10 THEN 'HEADER' 
316959                 WHEN 11 THEN 'HEADER' 
316960                 WHEN 12 THEN 'HEADER' 
316961                 WHEN 13 THEN 'HEADER' 
316962                 WHEN 14 THEN 'HEADER' 
316963                 WHEN 15 THEN 'HEADER' 
316964                 WHEN 16 THEN 'HEADER' 
316965                 WHEN 17 THEN 'HEADER' 
316966                 
316967                 ELSE null
316968               END                           object_type_code
316969             , CASE r
316970                 WHEN 1 THEN '707' 
316971                 WHEN 2 THEN '707' 
316972                 WHEN 3 THEN '707' 
316973                 WHEN 4 THEN '707' 
316974                 WHEN 5 THEN '707' 
316975                 WHEN 6 THEN '707' 
316976                 WHEN 7 THEN '707' 
316977                 WHEN 8 THEN '707' 
316978                 WHEN 9 THEN '707' 
316979                 WHEN 10 THEN '707' 
316980                 WHEN 11 THEN '707' 
316981                 WHEN 12 THEN '707' 
316982                 WHEN 13 THEN '707' 
316983                 WHEN 14 THEN '707' 
316984                 WHEN 15 THEN '707' 
316985                 WHEN 16 THEN '707' 
316986                 WHEN 17 THEN '707' 
316987                 
316988                 ELSE null
316989               END                           source_application_id
316990             , 'S'             source_type_code
316991             , CASE r
316992                 WHEN 1 THEN 'TRANSACTION_ID' 
316993                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
316994                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
316995                 WHEN 4 THEN 'TRANSACTION_UOM' 
316996                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
316997                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
316998                 WHEN 7 THEN 'INV_TXN_TRANSPO_DIST_ACCT' 
316999                 WHEN 8 THEN 'INTERORG_REVENUE_ACCOUNT' 
317000                 WHEN 9 THEN 'INTERORG_TXFR_CREDIT_ACCOUNT' 
317001                 WHEN 10 THEN 'PLA_MATERIAL_ACCOUNT' 
317002                 WHEN 11 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
317003                 WHEN 12 THEN 'PLA_RESOURCE_ACCOUNT' 
317004                 WHEN 13 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
317005                 WHEN 14 THEN 'PLA_OVERHEAD_ACCOUNT' 
317006                 WHEN 15 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
317007                 WHEN 16 THEN 'DISTRIBUTION_TYPE' 
317008                 WHEN 17 THEN 'TRANSFER_TO_GL_INDICATOR' 
317009                 
317010                 ELSE null
317011               END                           source_code
317012             , CASE r
317013                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
317014                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
317015                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
317016                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
317017                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
317018                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
317019                 WHEN 7 THEN TO_CHAR(h4.INV_TXN_TRANSPO_DIST_ACCT)
317020                 WHEN 8 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
317021                 WHEN 9 THEN TO_CHAR(h1.INTERORG_TXFR_CREDIT_ACCOUNT)
317022                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
317023                 WHEN 11 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
317024                 WHEN 12 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
317025                 WHEN 13 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
317026                 WHEN 14 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
317027                 WHEN 15 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
317028                 WHEN 16 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
317029                 WHEN 17 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
317030                 
317031                 ELSE null
317032               END                           source_value
317033             , CASE r
317034                 WHEN 16 THEN fvl85.meaning
317035                 WHEN 17 THEN fvl114.meaning
317036                 
317037                 ELSE null
317038               END               source_meaning
317039          FROM xla_events_gt     xet  
317040       , CST_XLA_INTERORG_PARAMS_REF_V  h1
317041       , CST_XLA_INV_HEADERS_V  h2
317042       , CST_XLA_INV_REF_V  h4
317043       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
317044       , CST_XLA_INV_TXN_TYPES_REF_V  h6
317045       , CST_XLA_PLA_CATEGORY_REF_V  h7
317046   , fnd_lookup_values    fvl85
317047   , fnd_lookup_values    fvl114
317048              ,(select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
317049          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
317050            AND xet.event_class_code = C_EVENT_CLASS_CODE
317051               AND h2.event_id = xet.event_id
317052   AND h1.event_id (+) = h2.event_id
317053  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
317054 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
317055 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
317056   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
317057   AND fvl85.view_application_id(+) = 700
317058   AND fvl85.language(+)            = USERENV('LANG')
317059      AND fvl114.lookup_type(+)         = 'YES_NO'
317060   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
317061   AND fvl114.view_application_id(+) = 0
317062   AND fvl114.language(+)            = USERENV('LANG')
317063   
317064 )
317065 ;
317066 --
317067 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
317068 
317069       trace
317070          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
317071          ,p_level    => C_LEVEL_STATEMENT
317072          ,p_module   => l_log_module);
317073 
317074 END IF;
317075 --
317076 
317077 
317078 
317079 --
317080 INSERT INTO xla_diag_sources  --line2
317081 (
317082         event_id
317083       , ledger_id
317084       , sla_ledger_id
317085       , description_language
317086       , object_name
317087       , object_type_code
317088       , line_number
317089       , source_application_id
317090       , source_type_code
317091       , source_code
317092       , source_value
317093       , source_meaning
317094       , created_by
317095       , creation_date
317096       , last_update_date
317097       , last_updated_by
317098       , last_update_login
317099       , program_update_date
317100       , program_application_id
317101       , program_id
317102       , request_id
317103 )
317104 SELECT  event_id
317105       , p_target_ledger_id
317106       , p_sla_ledger_id
317107       , p_language
317108       , object_name
317109       , object_type_code
317110       , line_number
317111       , source_application_id
317112       , source_type_code
317113       , source_code
317114       , SUBSTR(source_value,1,1996)
317115       , SUBSTR(source_meaning ,1,200)
317116       , xla_environment_pkg.g_Usr_Id
317117       , TRUNC(SYSDATE)
317118       , TRUNC(SYSDATE)
317119       , xla_environment_pkg.g_Usr_Id
317120       , xla_environment_pkg.g_Login_Id
317121       , TRUNC(SYSDATE)
317122       , xla_environment_pkg.g_Prog_Appl_Id
317123       , xla_environment_pkg.g_Prog_Id
317124       , xla_environment_pkg.g_Req_Id
317125   FROM (
317126        SELECT xet.event_id                  event_id
317127             , l3.line_number                 line_number
317128             , CASE r
317129                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
317130                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
317131                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
317132                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
317133                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
317134                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
317135                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
317136                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
317137                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
317138                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
317139                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
317140                 
317141                ELSE null
317142               END                           object_name
317143             , CASE r
317144                 WHEN 1 THEN 'LINE' 
317145                 WHEN 2 THEN 'LINE' 
317146                 WHEN 3 THEN 'LINE' 
317147                 WHEN 4 THEN 'LINE' 
317148                 WHEN 5 THEN 'LINE' 
317149                 WHEN 6 THEN 'LINE' 
317150                 WHEN 7 THEN 'LINE' 
317151                 WHEN 8 THEN 'LINE' 
317152                 WHEN 9 THEN 'LINE' 
317153                 WHEN 10 THEN 'LINE' 
317154                 WHEN 11 THEN 'LINE' 
317155                 
317156                 ELSE null
317157               END                           object_type_code
317158             , CASE r
317159                 WHEN 1 THEN '707' 
317160                 WHEN 2 THEN '707' 
317161                 WHEN 3 THEN '707' 
317162                 WHEN 4 THEN '707' 
317163                 WHEN 5 THEN '707' 
317164                 WHEN 6 THEN '707' 
317165                 WHEN 7 THEN '707' 
317166                 WHEN 8 THEN '707' 
317167                 WHEN 9 THEN '707' 
317168                 WHEN 10 THEN '707' 
317169                 WHEN 11 THEN '707' 
317170                 
317171                 ELSE null
317172               END                           source_application_id
317173             , 'S'             source_type_code
317174             , CASE r
317175                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
317176                 WHEN 2 THEN 'COST_ELEMENT_ID' 
317177                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
317178                 WHEN 4 THEN 'CURRENCY_CODE' 
317179                 WHEN 5 THEN 'ENTERED_AMOUNT' 
317180                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
317181                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
317182                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
317183                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
317184                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
317185                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
317186                 
317187                 ELSE null
317188               END                           source_code
317189             , CASE r
317190                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
317191                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
317192                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
317193                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
317194                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
317195                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
317196                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
317197                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
317198                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
317199                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
317200                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
317201                 
317202                 ELSE null
317203               END                           source_value
317204             , CASE r
317205                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
317206                           1009615
317207                          ,TO_CHAR(l3.COST_ELEMENT_ID)
317208                          ,'COST_ELEMENT_ID'
317209                          ,'S'
317210                          ,707)
317211                 
317212                 ELSE null
317213               END               source_meaning
317214          FROM  xla_events_gt     xet  
317215         , CST_XLA_INV_LINES_V  l3
317216             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
317217         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
317218           AND xet.event_class_code = C_EVENT_CLASS_CODE
317219             AND l3.event_id          = xet.event_id
317220 
317221 )
317222 ;
317223 --
317224 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
317225 
317226       trace
317227          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
317228          ,p_level    => C_LEVEL_STATEMENT
317229          ,p_module   => l_log_module);
317230 
317231 END IF;
317232 
317233 
317234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
317235       trace
317236          (p_msg      => 'END of insert_sources_552'
317237          ,p_level    => C_LEVEL_PROCEDURE
317238          ,p_module   => l_log_module);
317239 END IF;
317240 EXCEPTION
317241   WHEN xla_exceptions_pkg.application_exception THEN
317242       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
317243             trace
317244                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
317245                ,p_level    => C_LEVEL_EXCEPTION
317246                ,p_module   => l_log_module);
317247       END IF;
317248       RAISE;
317249   WHEN OTHERS THEN
317250       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
317251             trace
317252                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
317253                ,p_level    => C_LEVEL_EXCEPTION
317254                ,p_module   => l_log_module);
317255        END IF;
317256        xla_exceptions_pkg.raise_message
317257            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_552');
317258 END insert_sources_552;
317259 --
317260 
317261 ---------------------------------------
317262 --
317263 -- PRIVATE FUNCTION
317264 --         EventClass_552
317265 --
317266 ----------------------------------------
317267 --
317268 FUNCTION EventClass_552
317269        (p_application_id         IN NUMBER
317270        ,p_base_ledger_id         IN NUMBER
317271        ,p_target_ledger_id       IN NUMBER
317272        ,p_language               IN VARCHAR2
317273        ,p_currency_code          IN VARCHAR2
317274        ,p_sla_ledger_id          IN NUMBER
317275        ,p_pad_start_date         IN DATE
317276        ,p_pad_end_date           IN DATE
317277        ,p_primary_ledger_id      IN NUMBER)
317278 RETURN BOOLEAN IS
317279 --
317280 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_SHIP_ALL';
317281 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_SHIP';
317282 
317283 l_calculate_acctd_flag   VARCHAR2(1) :='N';
317284 l_calculate_g_l_flag     VARCHAR2(1) :='N';
317285 --
317286 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317287 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317288 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
317289 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
317290 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317291 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
317292 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
317293 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317294 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
317295 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
317296 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317297 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317298 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317299 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
317300 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
317301 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
317302 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
317303 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
317304 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
317305 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
317306 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
317307 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
317308 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
317309 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
317310 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
317311 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
317312 
317313 l_event_id                             NUMBER;
317314 l_previous_event_id                    NUMBER;
317315 l_first_event_id                       NUMBER;
317316 l_last_event_id                        NUMBER;
317317 
317318 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
317319 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
317320 --
317321 --
317322 l_result                    BOOLEAN := TRUE;
317323 l_rows                      NUMBER  := 1000;
317324 l_event_type_name           VARCHAR2(80) := 'All';
317325 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Shipment';
317326 l_description               VARCHAR2(4000);
317327 l_transaction_reversal      NUMBER;
317328 l_ae_header_id              NUMBER;
317329 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
317330 l_log_module                VARCHAR2(240);
317331 --
317332 l_acct_reversal_source      VARCHAR2(30);
317333 l_trx_reversal_source       VARCHAR2(30);
317334 
317335 l_continue_with_lines       BOOLEAN := TRUE;
317336 --
317337 l_acc_rev_gl_date_source    DATE;                      -- 4262811
317338 --
317339 type t_array_event_id is table of number index by binary_integer;
317340 
317341 l_rec_array_event                    t_rec_array_event;
317342 l_null_rec_array_event               t_rec_array_event;
317343 l_array_ae_header_id                 xla_number_array_type;
317344 l_actual_flag                        VARCHAR2(1) := NULL;
317345 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
317346 l_balance_type_code                  VARCHAR2(1) :=NULL;
317347 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
317348 
317349 --
317350 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
317351 --
317352 
317353 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
317354 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
317355 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
317356 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
317357 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
317358 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317359 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_TRANSPO_DIST_ACCT%TYPE INDEX BY BINARY_INTEGER;
317360 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317361 TYPE t_array_source_40 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_TXFR_CREDIT_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317362 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317363 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317364 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317365 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317366 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317367 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
317368 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
317369 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
317370 
317371 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
317372 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
317373 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
317374 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
317375 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
317376 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
317377 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
317378 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
317379 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
317380 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
317381 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
317382 
317383 l_array_source_1              t_array_source_1;
317384 l_array_source_2              t_array_source_2;
317385 l_array_source_3              t_array_source_3;
317386 l_array_source_4              t_array_source_4;
317387 l_array_source_5              t_array_source_5;
317388 l_array_source_22              t_array_source_22;
317389 l_array_source_32              t_array_source_32;
317390 l_array_source_33              t_array_source_33;
317391 l_array_source_40              t_array_source_40;
317392 l_array_source_41              t_array_source_41;
317393 l_array_source_42              t_array_source_42;
317394 l_array_source_43              t_array_source_43;
317395 l_array_source_44              t_array_source_44;
317396 l_array_source_45              t_array_source_45;
317397 l_array_source_59              t_array_source_59;
317398 l_array_source_85              t_array_source_85;
317399 l_array_source_85_meaning      t_array_lookup_meaning;
317400 l_array_source_114              t_array_source_114;
317401 l_array_source_114_meaning      t_array_lookup_meaning;
317402 
317403 l_array_source_11      t_array_source_11;
317404 l_array_source_15      t_array_source_15;
317405 l_array_source_84      t_array_source_84;
317406 l_array_source_88      t_array_source_88;
317407 l_array_source_91      t_array_source_91;
317408 l_array_source_92      t_array_source_92;
317409 l_array_source_93      t_array_source_93;
317410 l_array_source_94      t_array_source_94;
317411 l_array_source_95      t_array_source_95;
317412 l_array_source_97      t_array_source_97;
317413 l_array_source_108      t_array_source_108;
317414 
317415 --
317416 CURSOR header_cur
317417 IS
317418 SELECT /*+ leading(xet) cardinality(xet,1) */
317419 -- Event Class Code: DIR_INTERORG_SHIP
317420     xet.entity_id
317421    ,xet.legal_entity_id
317422    ,xet.entity_code
317423    ,xet.transaction_number
317424    ,xet.event_id
317425    ,xet.event_class_code
317426    ,xet.event_type_code
317427    ,xet.event_number
317428    ,xet.event_date
317429    ,xet.transaction_date
317430    ,xet.reference_num_1
317431    ,xet.reference_num_2
317432    ,xet.reference_num_3
317433    ,xet.reference_num_4
317434    ,xet.reference_char_1
317435    ,xet.reference_char_2
317436    ,xet.reference_char_3
317437    ,xet.reference_char_4
317438    ,xet.reference_date_1
317439    ,xet.reference_date_2
317440    ,xet.reference_date_3
317441    ,xet.reference_date_4
317442    ,xet.event_created_by
317443    ,xet.budgetary_control_flag 
317444   , h2.TRANSACTION_ID    source_1
317445   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
317446   , h4.TRANSACTION_QUANTITY    source_3
317447   , h4.TRANSACTION_UOM    source_4
317448   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
317449   , h7.PLA_BRIDGING_ACCOUNT    source_22
317450   , h4.INV_TXN_TRANSPO_DIST_ACCT    source_32
317451   , h1.INTERORG_REVENUE_ACCOUNT    source_33
317452   , h1.INTERORG_TXFR_CREDIT_ACCOUNT    source_40
317453   , h7.PLA_MATERIAL_ACCOUNT    source_41
317454   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
317455   , h7.PLA_RESOURCE_ACCOUNT    source_43
317456   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
317457   , h7.PLA_OVERHEAD_ACCOUNT    source_45
317458   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
317459   , h2.DISTRIBUTION_TYPE    source_85
317460   , fvl85.meaning   source_85_meaning
317461   , h2.TRANSFER_TO_GL_INDICATOR    source_114
317462   , fvl114.meaning   source_114_meaning
317463   FROM xla_events_gt     xet 
317464   , CST_XLA_INTERORG_PARAMS_REF_V  h1
317465   , CST_XLA_INV_HEADERS_V  h2
317466   , CST_XLA_INV_REF_V  h4
317467   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
317468   , CST_XLA_INV_TXN_TYPES_REF_V  h6
317469   , CST_XLA_PLA_CATEGORY_REF_V  h7
317470   , fnd_lookup_values    fvl85
317471   , fnd_lookup_values    fvl114
317472  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
317473    and xet.event_class_code = C_EVENT_CLASS_CODE
317474    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
317475   AND h1.event_id (+) = h2.event_id
317476  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
317477 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
317478 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
317479   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
317480   AND fvl85.view_application_id(+) = 700
317481   AND fvl85.language(+)            = USERENV('LANG')
317482      AND fvl114.lookup_type(+)         = 'YES_NO'
317483   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
317484   AND fvl114.view_application_id(+) = 0
317485   AND fvl114.language(+)            = USERENV('LANG')
317486   
317487  ORDER BY event_id
317488 ;
317489 
317490 
317491 --
317492 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
317493 IS
317494 SELECT  /*+ leading(xet) cardinality(xet,1) */
317495 -- Event Class Code: DIR_INTERORG_SHIP
317496     xet.entity_id
317497    ,xet.legal_entity_id
317498    ,xet.entity_code
317499    ,xet.transaction_number
317500    ,xet.event_id
317501    ,xet.event_class_code
317502    ,xet.event_type_code
317503    ,xet.event_number
317504    ,xet.event_date
317505    ,xet.transaction_date
317506    ,xet.reference_num_1
317507    ,xet.reference_num_2
317508    ,xet.reference_num_3
317509    ,xet.reference_num_4
317510    ,xet.reference_char_1
317511    ,xet.reference_char_2
317512    ,xet.reference_char_3
317513    ,xet.reference_char_4
317514    ,xet.reference_date_1
317515    ,xet.reference_date_2
317516    ,xet.reference_date_3
317517    ,xet.reference_date_4
317518    ,xet.event_created_by
317519    ,xet.budgetary_control_flag
317520  , l3.LINE_NUMBER  
317521   , l3.CODE_COMBINATION_ID    source_11
317522   , l3.COST_ELEMENT_ID    source_15
317523   , l3.DISTRIBUTION_IDENTIFIER    source_84
317524   , l3.CURRENCY_CODE    source_88
317525   , l3.ENTERED_AMOUNT    source_91
317526   , l3.CURRENCY_CONVERSION_DATE    source_92
317527   , l3.CURRENCY_CONVERSION_RATE    source_93
317528   , l3.CURRENCY_CONVERSION_TYPE    source_94
317529   , l3.ACCOUNTED_AMOUNT    source_95
317530   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
317531   , l3.L_ORGANIZATION_CODE    source_108
317532   FROM xla_events_gt     xet 
317533   , CST_XLA_INV_LINES_V  l3
317534  WHERE xet.event_id between x_first_event_id and x_last_event_id
317535    and xet.event_date between p_pad_start_date and p_pad_end_date
317536    and xet.event_class_code = C_EVENT_CLASS_CODE
317537    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
317538 ;
317539 
317540 --
317541 BEGIN
317542 IF g_log_enabled THEN
317543    l_log_module := C_DEFAULT_MODULE||'.EventClass_552';
317544 END IF;
317545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
317546    trace
317547       (p_msg      => 'BEGIN of EventClass_552'
317548       ,p_level    => C_LEVEL_PROCEDURE
317549       ,p_module   => l_log_module);
317550 END IF;
317551 
317552 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
317553    trace
317554       (p_msg      => 'p_application_id = '||p_application_id||
317555                      ' - p_base_ledger_id = '||p_base_ledger_id||
317556                      ' - p_target_ledger_id  = '||p_target_ledger_id||
317557                      ' - p_language = '||p_language||
317558                      ' - p_currency_code = '||p_currency_code||
317559                      ' - p_sla_ledger_id = '||p_sla_ledger_id
317560       ,p_level    => C_LEVEL_STATEMENT
317561       ,p_module   => l_log_module);
317562 END IF;
317563 --
317564 -- initialze arrays
317565 --
317566 g_array_event.DELETE;
317567 l_rec_array_event := l_null_rec_array_event;
317568 --
317569 --------------------------------------
317570 -- 4262811 Initialze MPA Line Number
317571 --------------------------------------
317572 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
317573 
317574 --
317575 
317576 --
317577 OPEN header_cur;
317578 --
317579 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
317580    trace
317581    (p_msg      => 'SQL - FETCH header_cur'
317582    ,p_level    => C_LEVEL_STATEMENT
317583    ,p_module   => l_log_module);
317584 END IF;
317585 --
317586 LOOP
317587 FETCH header_cur BULK COLLECT INTO
317588         l_array_entity_id
317589       , l_array_legal_entity_id
317590       , l_array_entity_code
317591       , l_array_transaction_num
317592       , l_array_event_id
317593       , l_array_class_code
317594       , l_array_event_type
317595       , l_array_event_number
317596       , l_array_event_date
317597       , l_array_transaction_date
317598       , l_array_reference_num_1
317599       , l_array_reference_num_2
317600       , l_array_reference_num_3
317601       , l_array_reference_num_4
317602       , l_array_reference_char_1
317603       , l_array_reference_char_2
317604       , l_array_reference_char_3
317605       , l_array_reference_char_4
317606       , l_array_reference_date_1
317607       , l_array_reference_date_2
317608       , l_array_reference_date_3
317609       , l_array_reference_date_4
317610       , l_array_event_created_by
317611       , l_array_budgetary_control_flag 
317612       , l_array_source_1
317613       , l_array_source_2
317614       , l_array_source_3
317615       , l_array_source_4
317616       , l_array_source_5
317617       , l_array_source_22
317618       , l_array_source_32
317619       , l_array_source_33
317620       , l_array_source_40
317621       , l_array_source_41
317622       , l_array_source_42
317623       , l_array_source_43
317624       , l_array_source_44
317625       , l_array_source_45
317626       , l_array_source_59
317627       , l_array_source_85
317628       , l_array_source_85_meaning
317629       , l_array_source_114
317630       , l_array_source_114_meaning
317631       LIMIT l_rows;
317632 --
317633 IF (C_LEVEL_EVENT >= g_log_level) THEN
317634    trace
317635    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
317636    ,p_level    => C_LEVEL_EVENT
317637    ,p_module   => l_log_module);
317638 END IF;
317639 --
317640 EXIT WHEN l_array_entity_id.COUNT = 0;
317641 
317642 -- initialize arrays
317643 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
317644 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
317645 
317646 --
317647 -- Bug 4458708
317648 --
317649 XLA_AE_LINES_PKG.g_LineNumber := 0;
317650 
317651 
317652 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
317653 g_last_hdr_idx := l_array_event_id.LAST;
317654 --
317655 -- loop for the headers. Each iteration is for each header extract row
317656 -- fetched in header cursor
317657 --
317658 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
317659 
317660 --
317661 -- set event info as cache for other routines to refer event attributes
317662 --
317663 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
317664    (p_application_id           => p_application_id
317665    ,p_primary_ledger_id        => p_primary_ledger_id
317666    ,p_base_ledger_id           => p_base_ledger_id
317667    ,p_target_ledger_id         => p_target_ledger_id
317668    ,p_entity_id                => l_array_entity_id(hdr_idx)
317669    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
317670    ,p_entity_code              => l_array_entity_code(hdr_idx)
317671    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
317672    ,p_event_id                 => l_array_event_id(hdr_idx)
317673    ,p_event_class_code         => l_array_class_code(hdr_idx)
317674    ,p_event_type_code          => l_array_event_type(hdr_idx)
317675    ,p_event_number             => l_array_event_number(hdr_idx)
317676    ,p_event_date               => l_array_event_date(hdr_idx)
317677    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
317678    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
317679    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
317680    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
317681    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
317682    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
317683    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
317684    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
317685    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
317686    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
317687    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
317688    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
317689    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
317690    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
317691    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
317692 
317693 --
317694 -- set the status of entry to C_VALID (0)
317695 --
317696 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
317697 
317698 --
317699 -- initialize a row for ae header
317700 --
317701 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
317702 
317703 l_event_id := l_array_event_id(hdr_idx);
317704 
317705 --
317706 -- storing the hdr_idx for event. May be used by line cursor.
317707 --
317708 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
317709 
317710 --
317711 -- store sources from header extract. This can be improved to
317712 -- store only those sources from header extract that may be used in lines
317713 --
317714 
317715 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
317716 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
317717 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
317718 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
317719 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
317720 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
317721 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
317722 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
317723 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
317724 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
317725 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
317726 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
317727 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
317728 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
317729 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
317730 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
317731 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
317732 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
317733 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
317734 
317735 --
317736 -- initilaize the status of ae headers for diffrent balance types
317737 -- the status is initialised to C_NOT_CREATED (2)
317738 --
317739 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
317740 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
317741 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
317742 
317743 --
317744 -- call api to validate and store accounting attributes for header
317745 --
317746 
317747 ------------------------------------------------------------
317748 -- Accrual Reversal : to get date for Standard Source (NONE)
317749 ------------------------------------------------------------
317750 l_acc_rev_gl_date_source := NULL;
317751 
317752      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
317753       l_rec_acct_attrs.array_date_value(1) := 
317754 xla_ae_sources_pkg.GetSystemSourceDate(
317755    p_source_code           => 'XLA_REFERENCE_DATE_1'
317756  , p_source_type_code      => 'Y'
317757  , p_source_application_id =>  602
317758 );
317759      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
317760       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
317761 
317762 
317763 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
317764 
317765 XLA_AE_HEADER_PKG.SetJeCategoryName;
317766 
317767 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
317768 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
317769 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
317770 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
317771 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
317772 
317773 
317774 --
317775 xla_ae_header_pkg.SetHdrDescription(
317776    p_description => Description_1 (
317777    p_application_id => p_application_id 
317778  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
317779  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
317780  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
317781  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
317782  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
317783    )
317784 );
317785 --
317786 
317787 -- No header level analytical criteria
317788 
317789 --
317790 --accounting attribute enhancement, bug 3612931
317791 --
317792 l_trx_reversal_source := SUBSTR(NULL, 1,30);
317793 
317794 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
317795    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
317796 
317797    xla_accounting_err_pkg.build_message
317798       (p_appli_s_name            => 'XLA'
317799       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
317800       ,p_token_1                 => 'ACCT_ATTR_NAME'
317801       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
317802       ,p_token_2                 => 'PRODUCT_NAME'
317803       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
317804       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
317805       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
317806       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
317807 
317808 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
317809    --
317810    -- following sets the accounting attributes needed to reverse
317811    -- accounting for a distributeion
317812    --
317813    xla_ae_lines_pkg.SetTrxReversalAttrs
317814       (p_event_id              => l_event_id
317815       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
317816       ,p_trx_reversal_source   => l_trx_reversal_source);
317817 
317818 END IF;
317819 
317820 
317821 ----------------------------------------------------------------
317822 -- 4262811 -  update the header statuses to invalid in need be
317823 ----------------------------------------------------------------
317824 --
317825 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
317826 
317827 
317828   -----------------------------------------------
317829   -- No accrual reversal for the event class/type
317830   -----------------------------------------------
317831 ----------------------------------------------------------------
317832 
317833 --
317834 -- this ends the header loop iteration for one bulk fetch
317835 --
317836 END LOOP;
317837 
317838 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
317839 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
317840 
317841 --
317842 -- insert dummy rows into lines gt table that were created due to
317843 -- transaction reversals
317844 --
317845 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
317846    l_result := XLA_AE_LINES_PKG.InsertLines;
317847 END IF;
317848 
317849 --
317850 -- reset the temp_line_num for each set of events fetched from header
317851 -- cursor rather than doing it for each new event in line cursor
317852 -- Bug 3939231
317853 --
317854 xla_ae_lines_pkg.g_temp_line_num := 0;
317855 
317856 
317857 
317858 --
317859 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
317860 --
317861 --
317862 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
317863 
317864       trace
317865          (p_msg      => 'SQL - FETCH line_cur'
317866          ,p_level    => C_LEVEL_STATEMENT
317867          ,p_module   => l_log_module);
317868 
317869 END IF;
317870 --
317871 --
317872 LOOP
317873   --
317874   FETCH line_cur BULK COLLECT INTO
317875         l_array_entity_id
317876       , l_array_legal_entity_id
317877       , l_array_entity_code
317878       , l_array_transaction_num
317879       , l_array_event_id
317880       , l_array_class_code
317881       , l_array_event_type
317882       , l_array_event_number
317883       , l_array_event_date
317884       , l_array_transaction_date
317885       , l_array_reference_num_1
317886       , l_array_reference_num_2
317887       , l_array_reference_num_3
317888       , l_array_reference_num_4
317889       , l_array_reference_char_1
317890       , l_array_reference_char_2
317891       , l_array_reference_char_3
317892       , l_array_reference_char_4
317893       , l_array_reference_date_1
317894       , l_array_reference_date_2
317895       , l_array_reference_date_3
317896       , l_array_reference_date_4
317897       , l_array_event_created_by
317898       , l_array_budgetary_control_flag
317899       , l_array_extract_line_num 
317900       , l_array_source_11
317901       , l_array_source_15
317902       , l_array_source_84
317903       , l_array_source_88
317904       , l_array_source_91
317905       , l_array_source_92
317906       , l_array_source_93
317907       , l_array_source_94
317908       , l_array_source_95
317909       , l_array_source_97
317910       , l_array_source_108
317911       LIMIT l_rows;
317912 
317913   --
317914   IF (C_LEVEL_EVENT >= g_log_level) THEN
317915             trace
317916                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
317917                ,p_level    => C_LEVEL_EVENT
317918                ,p_module   => l_log_module);
317919   END IF;
317920   --
317921   EXIT WHEN l_array_entity_id.count = 0;
317922 
317923   XLA_AE_LINES_PKG.g_rec_lines := null;
317924 
317925 --
317926 -- Bug 4458708
317927 --
317928 XLA_AE_LINES_PKG.g_LineNumber := 0;
317929 --
317930 --
317931 
317932 FOR Idx IN 1..l_array_event_id.count LOOP
317933    --
317934    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
317935    --
317936    l_event_id := l_array_event_id(idx);  -- 5648433
317937 
317938    --
317939    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
317940    --
317941 
317942    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
317943              (g_array_event(l_event_id).array_value_num('header_index'))
317944          ,'N'
317945          ) <> 'Y'
317946    THEN
317947       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
317948          trace
317949             (p_msg      => 'Trancaction revesal option is not Y '
317950             ,p_level    => C_LEVEL_STATEMENT
317951             ,p_module   => l_log_module);
317952       END IF;
317953 
317954 --
317955 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
317956 --
317957 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
317958 --
317959 -- set event info as cache for other routines to refer event attributes
317960 --
317961 
317962 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
317963    l_previous_event_id := l_event_id;
317964 
317965    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
317966       (p_application_id           => p_application_id
317967       ,p_primary_ledger_id        => p_primary_ledger_id
317968       ,p_base_ledger_id           => p_base_ledger_id
317969       ,p_target_ledger_id         => p_target_ledger_id
317970       ,p_entity_id                => l_array_entity_id(Idx)
317971       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
317972       ,p_entity_code              => l_array_entity_code(Idx)
317973       ,p_transaction_num          => l_array_transaction_num(Idx)
317974       ,p_event_id                 => l_array_event_id(Idx)
317975       ,p_event_class_code         => l_array_class_code(Idx)
317976       ,p_event_type_code          => l_array_event_type(Idx)
317977       ,p_event_number             => l_array_event_number(Idx)
317978       ,p_event_date               => l_array_event_date(Idx)
317979       ,p_transaction_date         => l_array_transaction_date(Idx)
317980       ,p_reference_num_1          => l_array_reference_num_1(Idx)
317981       ,p_reference_num_2          => l_array_reference_num_2(Idx)
317982       ,p_reference_num_3          => l_array_reference_num_3(Idx)
317983       ,p_reference_num_4          => l_array_reference_num_4(Idx)
317984       ,p_reference_char_1         => l_array_reference_char_1(Idx)
317985       ,p_reference_char_2         => l_array_reference_char_2(Idx)
317986       ,p_reference_char_3         => l_array_reference_char_3(Idx)
317987       ,p_reference_char_4         => l_array_reference_char_4(Idx)
317988       ,p_reference_date_1         => l_array_reference_date_1(Idx)
317989       ,p_reference_date_2         => l_array_reference_date_2(Idx)
317990       ,p_reference_date_3         => l_array_reference_date_3(Idx)
317991       ,p_reference_date_4         => l_array_reference_date_4(Idx)
317992       ,p_event_created_by         => l_array_event_created_by(Idx)
317993       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
317994        --
317995 END IF;
317996 
317997 
317998 
317999 --
318000 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
318001 
318002 l_acct_reversal_source := SUBSTR(NULL, 1,30);
318003 
318004 IF l_continue_with_lines THEN
318005    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
318006       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
318007 
318008       xla_accounting_err_pkg.build_message
318009          (p_appli_s_name            => 'XLA'
318010          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
318011          ,p_token_1                 => 'LINE_NUMBER'
318012          ,p_value_1                 => l_array_extract_line_num(Idx)
318013          ,p_token_2                 => 'PRODUCT_NAME'
318014          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
318015          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
318016          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
318017          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
318018 
318019    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
318020       --
318021       -- following sets the accounting attributes needed to reverse
318022       -- accounting for a distributeion
318023       --
318024 
318025       --
318026       -- 5217187
318027       --
318028       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
318029       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
318030                                        g_array_event(l_event_id).array_value_num('header_index'));
318031       --
318032       --
318033 
318034       -- No reversal code generated
318035 
318036       xla_ae_lines_pkg.SetAcctReversalAttrs
318037          (p_event_id             => l_event_id
318038          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
318039          ,p_calculate_acctd_flag => l_calculate_acctd_flag
318040          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
318041    END IF;
318042 
318043    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
318044        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
318045 
318046 --
318047 AcctLineType_143 (
318048  p_application_id  => p_application_id
318049  ,p_event_id     => l_event_id
318050  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318051  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318052  ,p_actual_flag => l_actual_flag
318053  ,p_balance_type_code => l_balance_type_code
318054  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318055  
318056  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318057  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318058  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318059  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318060  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318061  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
318062  , p_source_84 => l_array_source_84(Idx)
318063  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318064  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318065  , p_source_88 => l_array_source_88(Idx)
318066  , p_source_91 => l_array_source_91(Idx)
318067  , p_source_92 => l_array_source_92(Idx)
318068  , p_source_93 => l_array_source_93(Idx)
318069  , p_source_94 => l_array_source_94(Idx)
318070  , p_source_95 => l_array_source_95(Idx)
318071  , p_source_97 => l_array_source_97(Idx)
318072  );
318073 If(l_balance_type_code = 'A') THEN
318074   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318075 END IF;
318076 
318077 --
318078 
318079 
318080 --
318081 AcctLineType_159 (
318082  p_application_id  => p_application_id
318083  ,p_event_id     => l_event_id
318084  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318085  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318086  ,p_actual_flag => l_actual_flag
318087  ,p_balance_type_code => l_balance_type_code
318088  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318089  
318090  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318091  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318092  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318093  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318094  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318095  , p_source_11 => l_array_source_11(Idx)
318096  , p_source_84 => l_array_source_84(Idx)
318097  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318098  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318099  , p_source_88 => l_array_source_88(Idx)
318100  , p_source_91 => l_array_source_91(Idx)
318101  , p_source_92 => l_array_source_92(Idx)
318102  , p_source_93 => l_array_source_93(Idx)
318103  , p_source_94 => l_array_source_94(Idx)
318104  , p_source_95 => l_array_source_95(Idx)
318105  , p_source_97 => l_array_source_97(Idx)
318106  );
318107 If(l_balance_type_code = 'A') THEN
318108   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318109 END IF;
318110 
318111 --
318112 
318113 
318114 --
318115 AcctLineType_183 (
318116  p_application_id  => p_application_id
318117  ,p_event_id     => l_event_id
318118  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318119  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318120  ,p_actual_flag => l_actual_flag
318121  ,p_balance_type_code => l_balance_type_code
318122  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318123  
318124  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318125  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318126  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318127  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318128  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318129  , p_source_11 => l_array_source_11(Idx)
318130  , p_source_84 => l_array_source_84(Idx)
318131  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318132  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318133  , p_source_88 => l_array_source_88(Idx)
318134  , p_source_91 => l_array_source_91(Idx)
318135  , p_source_92 => l_array_source_92(Idx)
318136  , p_source_93 => l_array_source_93(Idx)
318137  , p_source_94 => l_array_source_94(Idx)
318138  , p_source_95 => l_array_source_95(Idx)
318139  , p_source_97 => l_array_source_97(Idx)
318140  );
318141 If(l_balance_type_code = 'A') THEN
318142   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318143 END IF;
318144 
318145 --
318146 
318147 
318148 --
318149 AcctLineType_196 (
318150  p_application_id  => p_application_id
318151  ,p_event_id     => l_event_id
318152  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318153  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318154  ,p_actual_flag => l_actual_flag
318155  ,p_balance_type_code => l_balance_type_code
318156  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318157  
318158  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318159  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318160  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318161  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318162  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318163  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
318164  , p_source_84 => l_array_source_84(Idx)
318165  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318166  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318167  , p_source_88 => l_array_source_88(Idx)
318168  , p_source_91 => l_array_source_91(Idx)
318169  , p_source_92 => l_array_source_92(Idx)
318170  , p_source_93 => l_array_source_93(Idx)
318171  , p_source_94 => l_array_source_94(Idx)
318172  , p_source_95 => l_array_source_95(Idx)
318173  , p_source_97 => l_array_source_97(Idx)
318174  );
318175 If(l_balance_type_code = 'A') THEN
318176   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318177 END IF;
318178 
318179 --
318180 
318181 
318182 --
318183 AcctLineType_210 (
318184  p_application_id  => p_application_id
318185  ,p_event_id     => l_event_id
318186  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318187  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318188  ,p_actual_flag => l_actual_flag
318189  ,p_balance_type_code => l_balance_type_code
318190  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318191  
318192  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318193  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318194  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318195  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318196  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318197  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
318198  , p_source_84 => l_array_source_84(Idx)
318199  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318200  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318201  , p_source_88 => l_array_source_88(Idx)
318202  , p_source_91 => l_array_source_91(Idx)
318203  , p_source_92 => l_array_source_92(Idx)
318204  , p_source_93 => l_array_source_93(Idx)
318205  , p_source_94 => l_array_source_94(Idx)
318206  , p_source_95 => l_array_source_95(Idx)
318207  , p_source_97 => l_array_source_97(Idx)
318208  );
318209 If(l_balance_type_code = 'A') THEN
318210   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318211 END IF;
318212 
318213 --
318214 
318215 
318216 --
318217 AcctLineType_248 (
318218  p_application_id  => p_application_id
318219  ,p_event_id     => l_event_id
318220  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318221  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318222  ,p_actual_flag => l_actual_flag
318223  ,p_balance_type_code => l_balance_type_code
318224  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318225  
318226  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318227  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318228  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318229  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318230  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318231  , p_source_15 => l_array_source_15(Idx)
318232  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
318233  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
318234  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
318235  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
318236  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
318237  , p_source_84 => l_array_source_84(Idx)
318238  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318239  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318240  , p_source_88 => l_array_source_88(Idx)
318241  , p_source_91 => l_array_source_91(Idx)
318242  , p_source_92 => l_array_source_92(Idx)
318243  , p_source_93 => l_array_source_93(Idx)
318244  , p_source_94 => l_array_source_94(Idx)
318245  , p_source_95 => l_array_source_95(Idx)
318246  , p_source_97 => l_array_source_97(Idx)
318247  , p_source_108 => l_array_source_108(Idx)
318248  );
318249 If(l_balance_type_code = 'A') THEN
318250   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318251 END IF;
318252 
318253 --
318254 
318255 
318256 --
318257 AcctLineType_302 (
318258  p_application_id  => p_application_id
318259  ,p_event_id     => l_event_id
318260  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318261  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318262  ,p_actual_flag => l_actual_flag
318263  ,p_balance_type_code => l_balance_type_code
318264  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318265  
318266  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318267  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318268  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318269  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318270  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318271  , p_source_11 => l_array_source_11(Idx)
318272  , p_source_84 => l_array_source_84(Idx)
318273  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318274  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318275  , p_source_88 => l_array_source_88(Idx)
318276  , p_source_91 => l_array_source_91(Idx)
318277  , p_source_92 => l_array_source_92(Idx)
318278  , p_source_93 => l_array_source_93(Idx)
318279  , p_source_94 => l_array_source_94(Idx)
318280  , p_source_95 => l_array_source_95(Idx)
318281  , p_source_97 => l_array_source_97(Idx)
318282  );
318283 If(l_balance_type_code = 'A') THEN
318284   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318285 END IF;
318286 
318287 --
318288 
318289 
318290 --
318291 AcctLineType_359 (
318292  p_application_id  => p_application_id
318293  ,p_event_id     => l_event_id
318294  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318295  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318296  ,p_actual_flag => l_actual_flag
318297  ,p_balance_type_code => l_balance_type_code
318298  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318299  
318300  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318301  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318302  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318303  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318304  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318305  , p_source_11 => l_array_source_11(Idx)
318306  , p_source_84 => l_array_source_84(Idx)
318307  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318308  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318309  , p_source_88 => l_array_source_88(Idx)
318310  , p_source_91 => l_array_source_91(Idx)
318311  , p_source_92 => l_array_source_92(Idx)
318312  , p_source_93 => l_array_source_93(Idx)
318313  , p_source_94 => l_array_source_94(Idx)
318314  , p_source_95 => l_array_source_95(Idx)
318315  , p_source_97 => l_array_source_97(Idx)
318316  );
318317 If(l_balance_type_code = 'A') THEN
318318   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318319 END IF;
318320 
318321 --
318322 
318323 
318324 --
318325 AcctLineType_382 (
318326  p_application_id  => p_application_id
318327  ,p_event_id     => l_event_id
318328  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318329  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318330  ,p_actual_flag => l_actual_flag
318331  ,p_balance_type_code => l_balance_type_code
318332  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318333  
318334  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318335  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318336  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318337  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318338  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318339  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
318340  , p_source_84 => l_array_source_84(Idx)
318341  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318342  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318343  , p_source_88 => l_array_source_88(Idx)
318344  , p_source_91 => l_array_source_91(Idx)
318345  , p_source_92 => l_array_source_92(Idx)
318346  , p_source_93 => l_array_source_93(Idx)
318347  , p_source_94 => l_array_source_94(Idx)
318348  , p_source_95 => l_array_source_95(Idx)
318349  , p_source_97 => l_array_source_97(Idx)
318350  );
318351 If(l_balance_type_code = 'A') THEN
318352   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318353 END IF;
318354 
318355 --
318356 
318357 
318358 --
318359 AcctLineType_445 (
318360  p_application_id  => p_application_id
318361  ,p_event_id     => l_event_id
318362  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318363  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318364  ,p_actual_flag => l_actual_flag
318365  ,p_balance_type_code => l_balance_type_code
318366  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318367  
318368  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318369  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318370  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318371  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318372  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318373  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
318374  , p_source_84 => l_array_source_84(Idx)
318375  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318376  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318377  , p_source_88 => l_array_source_88(Idx)
318378  , p_source_91 => l_array_source_91(Idx)
318379  , p_source_92 => l_array_source_92(Idx)
318380  , p_source_93 => l_array_source_93(Idx)
318381  , p_source_94 => l_array_source_94(Idx)
318382  , p_source_95 => l_array_source_95(Idx)
318383  , p_source_97 => l_array_source_97(Idx)
318384  );
318385 If(l_balance_type_code = 'A') THEN
318386   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318387 END IF;
318388 
318389 --
318390 
318391 
318392 --
318393 AcctLineType_481 (
318394  p_application_id  => p_application_id
318395  ,p_event_id     => l_event_id
318396  ,p_calculate_acctd_flag => l_calculate_acctd_flag
318397  ,p_calculate_g_l_flag => l_calculate_g_l_flag
318398  ,p_actual_flag => l_actual_flag
318399  ,p_balance_type_code => l_balance_type_code
318400  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
318401  
318402  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
318403  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
318404  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
318405  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
318406  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
318407  , p_source_11 => l_array_source_11(Idx)
318408  , p_source_84 => l_array_source_84(Idx)
318409  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
318410  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
318411  , p_source_88 => l_array_source_88(Idx)
318412  , p_source_91 => l_array_source_91(Idx)
318413  , p_source_92 => l_array_source_92(Idx)
318414  , p_source_93 => l_array_source_93(Idx)
318415  , p_source_94 => l_array_source_94(Idx)
318416  , p_source_95 => l_array_source_95(Idx)
318417  , p_source_97 => l_array_source_97(Idx)
318418  );
318419 If(l_balance_type_code = 'A') THEN
318420   l_actual_gain_loss_ref := l_gain_or_loss_ref;
318421 END IF;
318422 
318423 --
318424 
318425       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
318426       -- or secondary ledger that has different currency with primary
318427       -- or alc that is calculated by sla
318428       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
318429             (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'))
318430 
318431 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
318432 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
318433           AND (l_actual_flag = 'A')) THEN
318434         XLA_AE_LINES_PKG.CreateGainOrLossLines(
318435           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
318436          ,p_application_id   => p_application_id
318437          ,p_amb_context_code => 'DEFAULT'
318438          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
318439          ,p_event_class_code => C_EVENT_CLASS_CODE
318440          ,p_event_type_code  => C_EVENT_TYPE_CODE
318441          
318442          ,p_gain_ccid        => -1
318443          ,p_loss_ccid        => -1
318444 
318445          ,p_actual_flag      => l_actual_flag
318446          ,p_enc_flag         => null
318447          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
318448          ,p_enc_g_l_ref      => null
318449          );
318450       END IF;
318451    END IF;
318452 END IF;
318453 
318454    ELSE
318455       --
318456       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
318457       --
318458       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
318459          trace
318460             (p_msg      => 'Trancaction revesal option is Y'
318461             ,p_level    => C_LEVEL_STATEMENT
318462             ,p_module   => l_log_module);
318463       END IF;
318464    END IF;
318465 
318466 END LOOP;
318467 l_result := XLA_AE_LINES_PKG.InsertLines ;
318468 end loop;
318469 close line_cur;
318470 
318471 
318472 --
318473 -- insert headers into xla_ae_headers_gt table
318474 --
318475 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
318476 
318477 -- insert into errors table here.
318478 
318479 END LOOP;
318480 
318481 --
318482 -- 4865292
318483 --
318484 -- Compare g_hdr_extract_count with event count in
318485 -- CreateHeadersAndLines.
318486 --
318487 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
318488 
318489 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
318490    trace (p_msg     => '# rows extracted from header extract objects '
318491                     || ' (running total): '
318492                     || g_hdr_extract_count
318493          ,p_level   => C_LEVEL_STATEMENT
318494          ,p_module  => l_log_module);
318495 END IF;
318496 
318497 CLOSE header_cur;
318498 --
318499 
318500 --
318501 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
318502    trace
318503       (p_msg      => 'END of EventClass_552'
318504       ,p_level    => C_LEVEL_PROCEDURE
318505       ,p_module   => l_log_module);
318506 END IF;
318507 --
318508 RETURN l_result;
318509 EXCEPTION
318510 WHEN xla_exceptions_pkg.application_exception THEN
318511    
318512 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
318513 
318514    
318515 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
318516 
318517    RAISE;
318518 
318519 WHEN NO_DATA_FOUND THEN
318520 
318521 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
318522 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
318523 
318524 FOR header_record IN header_cur
318525 LOOP
318526     l_array_header_events(header_record.event_id) := header_record.event_id;
318527 END LOOP;
318528 
318529 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
318530 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
318531 
318532 fnd_file.put_line(fnd_file.LOG, '                    ');
318533 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
318534 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
318535 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
318536 
318537 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
318538 LOOP
318539 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
318540 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
318541         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
318542 	END IF;
318543 END LOOP;
318544 
318545 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
318546 fnd_file.put_line(fnd_file.LOG, '                    ');
318547 
318548 
318549 xla_exceptions_pkg.raise_message
318550       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_552');
318551 
318552 
318553 WHEN OTHERS THEN
318554    xla_exceptions_pkg.raise_message
318555       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_552');
318556 END EventClass_552;
318557 --
318558 
318559 ---------------------------------------
318560 --
318561 -- PRIVATE PROCEDURE
318562 --         insert_sources_553
318563 --
318564 ----------------------------------------
318565 --
318566 PROCEDURE insert_sources_553(
318567                                 p_target_ledger_id       IN NUMBER
318568                               , p_language               IN VARCHAR2
318569                               , p_sla_ledger_id          IN NUMBER
318570                               , p_pad_start_date         IN DATE
318571                               , p_pad_end_date           IN DATE
318572                          )
318573 IS
318574 
318575 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
318576 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'OSP';
318577 p_apps_owner                   VARCHAR2(30);
318578 l_log_module                   VARCHAR2(240);
318579 BEGIN
318580 IF g_log_enabled THEN
318581       l_log_module := C_DEFAULT_MODULE||'.insert_sources_553';
318582 END IF;
318583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
318584 
318585       trace
318586          (p_msg      => 'BEGIN of insert_sources_553'
318587          ,p_level    => C_LEVEL_PROCEDURE
318588          ,p_module   => l_log_module);
318589 
318590 END IF;
318591 
318592 -- select APPS owner
318593 SELECT oracle_username
318594   INTO p_apps_owner
318595   FROM fnd_oracle_userid
318596  WHERE read_only_flag = 'U'
318597 ;
318598 
318599 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
318600       trace
318601          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
318602                         ' - p_language = '||p_language||
318603                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
318604                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
318605                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
318606                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
318607          ,p_level    => C_LEVEL_STATEMENT
318608          ,p_module   => l_log_module);
318609 END IF;
318610 
318611 
318612 --
318613 INSERT INTO xla_diag_sources --hdr1
318614 (
318615         event_id
318616       , ledger_id
318617       , sla_ledger_id
318618       , description_language
318619       , object_name
318620       , object_type_code
318621       , line_number
318622       , source_application_id
318623       , source_type_code
318624       , source_code
318625       , source_value
318626       , source_meaning
318627       , created_by
318628       , creation_date
318629       , last_update_date
318630       , last_updated_by
318631       , last_update_login
318632       , program_update_date
318633       , program_application_id
318634       , program_id
318635       , request_id
318636 )
318637 SELECT
318638         event_id
318639       , p_target_ledger_id
318640       , p_sla_ledger_id
318641       , p_language
318642       , object_name
318643       , object_type_code
318644       , line_number
318645       , source_application_id
318646       , source_type_code
318647       , source_code
318648       , SUBSTR(source_value ,1,1996)
318649       , SUBSTR(source_meaning,1,200)
318650       , xla_environment_pkg.g_Usr_Id
318651       , TRUNC(SYSDATE)
318652       , TRUNC(SYSDATE)
318653       , xla_environment_pkg.g_Usr_Id
318654       , xla_environment_pkg.g_Login_Id
318655       , TRUNC(SYSDATE)
318656       , xla_environment_pkg.g_Prog_Appl_Id
318657       , xla_environment_pkg.g_Prog_Id
318658       , xla_environment_pkg.g_Req_Id
318659   FROM (
318660        SELECT xet.event_id                  event_id
318661             , 0                             line_number
318662             , CASE r
318663                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
318664                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
318665                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
318666                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
318667                 WHEN 5 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
318668                 WHEN 6 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
318669                 WHEN 7 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
318670                 WHEN 8 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
318671                 WHEN 9 THEN 'CST_XLA_REP_ITEM_REF_V' 
318672                 WHEN 10 THEN 'CST_XLA_WIP_HEADERS_V' 
318673                 WHEN 11 THEN 'CST_XLA_WIP_HEADERS_V' 
318674                 WHEN 12 THEN 'CST_XLA_WIP_HEADERS_V' 
318675                 WHEN 13 THEN 'CST_XLA_WIP_HEADERS_V' 
318676                 WHEN 14 THEN 'CST_XLA_WIP_HEADERS_V' 
318677                 
318678                ELSE null
318679               END                           object_name
318680             , CASE r
318681                 WHEN 1 THEN 'HEADER' 
318682                 WHEN 2 THEN 'HEADER' 
318683                 WHEN 3 THEN 'HEADER' 
318684                 WHEN 4 THEN 'HEADER' 
318685                 WHEN 5 THEN 'HEADER' 
318686                 WHEN 6 THEN 'HEADER' 
318687                 WHEN 7 THEN 'HEADER' 
318688                 WHEN 8 THEN 'HEADER' 
318689                 WHEN 9 THEN 'HEADER' 
318690                 WHEN 10 THEN 'HEADER' 
318691                 WHEN 11 THEN 'HEADER' 
318692                 WHEN 12 THEN 'HEADER' 
318693                 WHEN 13 THEN 'HEADER' 
318694                 WHEN 14 THEN 'HEADER' 
318695                 
318696                 ELSE null
318697               END                           object_type_code
318698             , CASE r
318699                 WHEN 1 THEN '707' 
318700                 WHEN 2 THEN '707' 
318701                 WHEN 3 THEN '707' 
318702                 WHEN 4 THEN '707' 
318703                 WHEN 5 THEN '707' 
318704                 WHEN 6 THEN '707' 
318705                 WHEN 7 THEN '707' 
318706                 WHEN 8 THEN '707' 
318707                 WHEN 9 THEN '707' 
318708                 WHEN 10 THEN '707' 
318709                 WHEN 11 THEN '707' 
318710                 WHEN 12 THEN '707' 
318711                 WHEN 13 THEN '707' 
318712                 WHEN 14 THEN '707' 
318713                 
318714                 ELSE null
318715               END                           source_application_id
318716             , 'S'             source_type_code
318717             , CASE r
318718                 WHEN 1 THEN 'TRANSACTION_ID' 
318719                 WHEN 2 THEN 'TRANSACTION_UOM' 
318720                 WHEN 3 THEN 'PRIMARY_QUANTITY' 
318721                 WHEN 4 THEN 'WIP_TRANSACTION_TYPE_ID' 
318722                 WHEN 5 THEN 'INV_ITEM_EXPENSE_ACCT' 
318723                 WHEN 6 THEN 'DIS_JOB_BRIDGING_ACCT' 
318724                 WHEN 7 THEN 'WIP_ENTITY_TYPE' 
318725                 WHEN 8 THEN 'FLO_SCH_BRIDGING_ACCT' 
318726                 WHEN 9 THEN 'REP_ITM_BRIDGING_ACCT' 
318727                 WHEN 10 THEN 'DISTRIBUTION_TYPE' 
318728                 WHEN 11 THEN 'CURRENCY_CODE' 
318729                 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE' 
318730                 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE' 
318731                 WHEN 14 THEN 'TRANSFER_TO_GL_INDICATOR' 
318732                 
318733                 ELSE null
318734               END                           source_code
318735             , CASE r
318736                 WHEN 1 THEN TO_CHAR(h6.TRANSACTION_ID)
318737                 WHEN 2 THEN TO_CHAR(h6.TRANSACTION_UOM)
318738                 WHEN 3 THEN TO_CHAR(h6.PRIMARY_QUANTITY)
318739                 WHEN 4 THEN TO_CHAR(h6.WIP_TRANSACTION_TYPE_ID)
318740                 WHEN 5 THEN TO_CHAR(h3.INV_ITEM_EXPENSE_ACCT)
318741                 WHEN 6 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
318742                 WHEN 7 THEN TO_CHAR(h5.WIP_ENTITY_TYPE)
318743                 WHEN 8 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
318744                 WHEN 9 THEN TO_CHAR(h4.REP_ITM_BRIDGING_ACCT)
318745                 WHEN 10 THEN TO_CHAR(h6.DISTRIBUTION_TYPE)
318746                 WHEN 11 THEN TO_CHAR(h6.CURRENCY_CODE)
318747                 WHEN 12 THEN TO_CHAR(h6.CURRENCY_CONVERSION_DATE)
318748                 WHEN 13 THEN TO_CHAR(h6.CURRENCY_CONVERSION_RATE)
318749                 WHEN 14 THEN TO_CHAR(h6.TRANSFER_TO_GL_INDICATOR)
318750                 
318751                 ELSE null
318752               END                           source_value
318753             , CASE r
318754                 WHEN 4 THEN fvl7.meaning
318755                 WHEN 7 THEN fvl55.meaning
318756                 WHEN 10 THEN fvl85.meaning
318757                 WHEN 14 THEN fvl114.meaning
318758                 
318759                 ELSE null
318760               END               source_meaning
318761         FROM xla_events_gt     xet  
318762       , CST_XLA_DISCRETE_JOB_REF_V  h1
318763       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
318764       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h3
318765       , CST_XLA_REP_ITEM_REF_V  h4
318766       , CST_XLA_WIP_ENTITY_REF_V  h5
318767       , CST_XLA_WIP_HEADERS_V  h6
318768   , fnd_lookup_values    fvl7
318769   , fnd_lookup_values    fvl55
318770   , fnd_lookup_values    fvl85
318771   , fnd_lookup_values    fvl114
318772             ,(select rownum r from all_objects where rownum <= 14 and owner = p_apps_owner)
318773        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
318774          AND xet.event_type_code = C_EVENT_TYPE_CODE
318775             AND h6.event_id = xet.event_id
318776  AND h1.dis_job_wip_entity_id  (+) = h6.wip_entity_id AND h2.flo_sch_wip_entity_id  (+) = h6.wip_entity_id AND h3.inventory_item_id  (+) = h6.inventory_item_id  and h3.organization_id  (+) = h6.organization_id AND h4.rep_itm_wip_entity_id  (+) = h6.wip_entity_id  and h4.rep_itm_line_id  (+) = h6.line_id AND h5.wip_entity_id = h6.wip_entity_id   AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
318777   AND fvl7.lookup_code(+)         = h6.WIP_TRANSACTION_TYPE_ID
318778   AND fvl7.view_application_id(+) = 700
318779   AND fvl7.language(+)            = USERENV('LANG')
318780      AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
318781   AND fvl55.lookup_code(+)         = h5.WIP_ENTITY_TYPE
318782   AND fvl55.view_application_id(+) = 700
318783   AND fvl55.language(+)            = USERENV('LANG')
318784      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
318785   AND fvl85.lookup_code(+)         = h6.DISTRIBUTION_TYPE
318786   AND fvl85.view_application_id(+) = 700
318787   AND fvl85.language(+)            = USERENV('LANG')
318788      AND fvl114.lookup_type(+)         = 'YES_NO'
318789   AND fvl114.lookup_code(+)         = h6.TRANSFER_TO_GL_INDICATOR
318790   AND fvl114.view_application_id(+) = 0
318791   AND fvl114.language(+)            = USERENV('LANG')
318792   
318793 )
318794 ;
318795 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
318796 
318797       trace
318798          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
318799          ,p_level    => C_LEVEL_STATEMENT
318800          ,p_module   => l_log_module);
318801 
318802 END IF;
318803 --
318804 
318805 
318806 
318807 --
318808 INSERT INTO xla_diag_sources --line1
318809 (
318810         event_id
318811       , ledger_id
318812       , sla_ledger_id
318813       , description_language
318814       , object_name
318815       , object_type_code
318816       , line_number
318817       , source_application_id
318818       , source_type_code
318819       , source_code
318820       , source_value
318821       , source_meaning
318822       , created_by
318823       , creation_date
318824       , last_update_date
318825       , last_updated_by
318826       , last_update_login
318827       , program_update_date
318828       , program_application_id
318829       , program_id
318830       , request_id
318831 )
318832 SELECT  event_id
318833       , p_target_ledger_id
318834       , p_sla_ledger_id
318835       , p_language
318836       , object_name
318837       , object_type_code
318838       , line_number
318839       , source_application_id
318840       , source_type_code
318841       , source_code
318842       , SUBSTR(source_value,1,1996)
318843       , SUBSTR(source_meaning,1,200)
318844       , xla_environment_pkg.g_Usr_Id
318845       , TRUNC(SYSDATE)
318846       , TRUNC(SYSDATE)
318847       , xla_environment_pkg.g_Usr_Id
318848       , xla_environment_pkg.g_Login_Id
318849       , TRUNC(SYSDATE)
318850       , xla_environment_pkg.g_Prog_Appl_Id
318851       , xla_environment_pkg.g_Prog_Id
318852       , xla_environment_pkg.g_Req_Id
318853   FROM (
318854        SELECT xet.event_id                  event_id
318855             , l7.line_number                 line_number
318856             , CASE r
318857                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
318858                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
318859                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
318860                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
318861                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
318862                 
318863                ELSE null
318864               END                           object_name
318865             , CASE r
318866                 WHEN 1 THEN 'LINE' 
318867                 WHEN 2 THEN 'LINE' 
318868                 WHEN 3 THEN 'LINE' 
318869                 WHEN 4 THEN 'LINE' 
318870                 WHEN 5 THEN 'LINE' 
318871                 
318872                 ELSE null
318873               END                           object_type_code
318874             , CASE r
318875                 WHEN 1 THEN '707' 
318876                 WHEN 2 THEN '707' 
318877                 WHEN 3 THEN '707' 
318878                 WHEN 4 THEN '707' 
318879                 WHEN 5 THEN '707' 
318880                 
318881                 ELSE null
318882               END                           source_application_id
318883             , 'S'             source_type_code
318884             , CASE r
318885                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
318886                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
318887                 WHEN 3 THEN 'ENTERED_AMOUNT' 
318888                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
318889                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
318890                 
318891                 ELSE null
318892               END                           source_code
318893             , CASE r
318894                 WHEN 1 THEN TO_CHAR(l7.CODE_COMBINATION_ID)
318895                 WHEN 2 THEN TO_CHAR(l7.DISTRIBUTION_IDENTIFIER)
318896                 WHEN 3 THEN TO_CHAR(l7.ENTERED_AMOUNT)
318897                 WHEN 4 THEN TO_CHAR(l7.ACCOUNTED_AMOUNT)
318898                 WHEN 5 THEN TO_CHAR(l7.ACCOUNTING_LINE_TYPE_CODE)
318899                 
318900                 ELSE null
318901               END                           source_value
318902             , null              source_meaning
318903          FROM  xla_events_gt     xet  
318904         , CST_XLA_WIP_LINES_V  l7
318905             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
318906         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
318907           AND xet.event_type_code = C_EVENT_TYPE_CODE
318908             AND l7.event_id          = xet.event_id
318909 
318910 )
318911 ;
318912 --
318913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
318914 
318915       trace
318916          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
318917          ,p_level    => C_LEVEL_STATEMENT
318918          ,p_module   => l_log_module);
318919 
318920 END IF;
318921 
318922 
318923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
318924       trace
318925          (p_msg      => 'END of insert_sources_553'
318926          ,p_level    => C_LEVEL_PROCEDURE
318927          ,p_module   => l_log_module);
318928 END IF;
318929 EXCEPTION
318930   WHEN xla_exceptions_pkg.application_exception THEN
318931       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
318932             trace
318933                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
318934                ,p_level    => C_LEVEL_EXCEPTION
318935                ,p_module   => l_log_module);
318936       END IF;
318937       RAISE;
318938   WHEN OTHERS THEN
318939       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
318940             trace
318941                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
318942                ,p_level    => C_LEVEL_EXCEPTION
318943                ,p_module   => l_log_module);
318944        END IF;
318945        xla_exceptions_pkg.raise_message
318946            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_553');
318947 END insert_sources_553;
318948 --
318949 
318950 ---------------------------------------
318951 --
318952 -- PRIVATE FUNCTION
318953 --         EventType_553
318954 --
318955 ----------------------------------------
318956 --
318957 FUNCTION EventType_553
318958        (p_application_id         IN NUMBER
318959        ,p_base_ledger_id         IN NUMBER
318960        ,p_target_ledger_id       IN NUMBER
318961        ,p_language               IN VARCHAR2
318962        ,p_currency_code          IN VARCHAR2
318963        ,p_sla_ledger_id          IN NUMBER
318964        ,p_pad_start_date         IN DATE
318965        ,p_pad_end_date           IN DATE
318966        ,p_primary_ledger_id      IN NUMBER)
318967 RETURN BOOLEAN IS
318968 --
318969 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EAM_DIRECT_SHOP_FLOOR_DELIVER';
318970 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'OSP';
318971 
318972 l_calculate_acctd_flag   VARCHAR2(1) :='N';
318973 l_calculate_g_l_flag     VARCHAR2(1) :='N';
318974 --
318975 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318976 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318977 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
318978 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
318979 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318980 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
318981 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
318982 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318983 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
318984 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
318985 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318986 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318987 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318988 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
318989 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
318990 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
318991 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
318992 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
318993 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
318994 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
318995 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
318996 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
318997 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
318998 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
318999 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
319000 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
319001 
319002 l_event_id                             NUMBER;
319003 l_previous_event_id                    NUMBER;
319004 l_first_event_id                       NUMBER;
319005 l_last_event_id                        NUMBER;
319006 
319007 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
319008 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
319009 --
319010 --
319011 l_result                    BOOLEAN := TRUE;
319012 l_rows                      NUMBER  := 1000;
319013 l_event_type_name           VARCHAR2(80) := 'Shop Floor Delivery for Direct Items';
319014 l_event_class_name          VARCHAR2(80) := 'Outside Processing';
319015 l_description               VARCHAR2(4000);
319016 l_transaction_reversal      NUMBER;
319017 l_ae_header_id              NUMBER;
319018 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
319019 l_log_module                VARCHAR2(240);
319020 --
319021 l_acct_reversal_source      VARCHAR2(30);
319022 l_trx_reversal_source       VARCHAR2(30);
319023 
319024 l_continue_with_lines       BOOLEAN := TRUE;
319025 --
319026 l_acc_rev_gl_date_source    DATE;                      -- 4262811
319027 --
319028 type t_array_event_id is table of number index by binary_integer;
319029 
319030 l_rec_array_event                    t_rec_array_event;
319031 l_null_rec_array_event               t_rec_array_event;
319032 l_array_ae_header_id                 xla_number_array_type;
319033 l_actual_flag                        VARCHAR2(1) := NULL;
319034 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
319035 l_balance_type_code                  VARCHAR2(1) :=NULL;
319036 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
319037 
319038 --
319039 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
319040 --
319041 
319042 TYPE t_array_source_1 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
319043 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
319044 TYPE t_array_source_6 IS TABLE OF CST_XLA_WIP_HEADERS_V.PRIMARY_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
319045 TYPE t_array_source_7 IS TABLE OF CST_XLA_WIP_HEADERS_V.WIP_TRANSACTION_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
319046 TYPE t_array_source_53 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.INV_ITEM_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
319047 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
319048 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
319049 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
319050 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
319051 TYPE t_array_source_85 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
319052 TYPE t_array_source_88 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
319053 TYPE t_array_source_92 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
319054 TYPE t_array_source_93 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
319055 TYPE t_array_source_114 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
319056 
319057 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
319058 TYPE t_array_source_84 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
319059 TYPE t_array_source_91 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
319060 TYPE t_array_source_95 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
319061 TYPE t_array_source_97 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
319062 
319063 l_array_source_1              t_array_source_1;
319064 l_array_source_4              t_array_source_4;
319065 l_array_source_6              t_array_source_6;
319066 l_array_source_7              t_array_source_7;
319067 l_array_source_7_meaning      t_array_lookup_meaning;
319068 l_array_source_53              t_array_source_53;
319069 l_array_source_54              t_array_source_54;
319070 l_array_source_55              t_array_source_55;
319071 l_array_source_55_meaning      t_array_lookup_meaning;
319072 l_array_source_56              t_array_source_56;
319073 l_array_source_57              t_array_source_57;
319074 l_array_source_85              t_array_source_85;
319075 l_array_source_85_meaning      t_array_lookup_meaning;
319076 l_array_source_88              t_array_source_88;
319077 l_array_source_92              t_array_source_92;
319078 l_array_source_93              t_array_source_93;
319079 l_array_source_114              t_array_source_114;
319080 l_array_source_114_meaning      t_array_lookup_meaning;
319081 
319082 l_array_source_11      t_array_source_11;
319083 l_array_source_84      t_array_source_84;
319084 l_array_source_91      t_array_source_91;
319085 l_array_source_95      t_array_source_95;
319086 l_array_source_97      t_array_source_97;
319087 
319088 --
319089 CURSOR header_cur
319090 IS
319091 SELECT /*+ leading(xet) cardinality(xet,1) */
319092 -- Event Type Code: EAM_DIRECT_SHOP_FLOOR_DELIVER
319093 -- Event Class Code: OSP
319094     xet.entity_id
319095   , xet.legal_entity_id
319096   , xet.entity_code
319097   , xet.transaction_number
319098   , xet.event_id
319099   , xet.event_class_code
319100   , xet.event_type_code
319101   , xet.event_number
319102   , xet.event_date
319103   , xet.transaction_date
319104   , xet.reference_num_1
319105   , xet.reference_num_2
319106   , xet.reference_num_3
319107   , xet.reference_num_4
319108   , xet.reference_char_1
319109   , xet.reference_char_2
319110   , xet.reference_char_3
319111   , xet.reference_char_4
319112   , xet.reference_date_1
319113   , xet.reference_date_2
319114   , xet.reference_date_3
319115   , xet.reference_date_4
319116   , xet.event_created_by
319117   , xet.budgetary_control_flag 
319118   , h6.TRANSACTION_ID    source_1
319119   , h6.TRANSACTION_UOM    source_4
319120   , h6.PRIMARY_QUANTITY    source_6
319121   , h6.WIP_TRANSACTION_TYPE_ID    source_7
319122   , fvl7.meaning   source_7_meaning
319123   , h3.INV_ITEM_EXPENSE_ACCT    source_53
319124   , h1.DIS_JOB_BRIDGING_ACCT    source_54
319125   , h5.WIP_ENTITY_TYPE    source_55
319126   , fvl55.meaning   source_55_meaning
319127   , h2.FLO_SCH_BRIDGING_ACCT    source_56
319128   , h4.REP_ITM_BRIDGING_ACCT    source_57
319129   , h6.DISTRIBUTION_TYPE    source_85
319130   , fvl85.meaning   source_85_meaning
319131   , h6.CURRENCY_CODE    source_88
319132   , h6.CURRENCY_CONVERSION_DATE    source_92
319133   , h6.CURRENCY_CONVERSION_RATE    source_93
319134   , h6.TRANSFER_TO_GL_INDICATOR    source_114
319135   , fvl114.meaning   source_114_meaning
319136   FROM xla_events_gt     xet 
319137   , CST_XLA_DISCRETE_JOB_REF_V  h1
319138   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
319139   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h3
319140   , CST_XLA_REP_ITEM_REF_V  h4
319141   , CST_XLA_WIP_ENTITY_REF_V  h5
319142   , CST_XLA_WIP_HEADERS_V  h6
319143   , fnd_lookup_values    fvl7
319144   , fnd_lookup_values    fvl55
319145   , fnd_lookup_values    fvl85
319146   , fnd_lookup_values    fvl114
319147  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
319148    and xet.event_type_code = C_EVENT_TYPE_CODE
319149    and xet.event_status_code <> 'N'  AND h6.event_id = xet.event_id
319150  AND h1.dis_job_wip_entity_id  (+) = h6.wip_entity_id AND h2.flo_sch_wip_entity_id  (+) = h6.wip_entity_id AND h3.INVENTORY_ITEM_ID  (+) = h6.INVENTORY_ITEM_ID  AND h3.ORGANIZATION_ID  (+) = h6.ORGANIZATION_ID AND h4.rep_itm_wip_entity_id  (+) = h6.wip_entity_id  AND h4.rep_itm_line_id  (+) = h6.line_id AND h5.wip_entity_id = h6.wip_entity_id   AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
319151   AND fvl7.lookup_code(+)         = h6.WIP_TRANSACTION_TYPE_ID
319152   AND fvl7.view_application_id(+) = 700
319153   AND fvl7.language(+)            = USERENV('LANG')
319154      AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
319155   AND fvl55.lookup_code(+)         = h5.WIP_ENTITY_TYPE
319156   AND fvl55.view_application_id(+) = 700
319157   AND fvl55.language(+)            = USERENV('LANG')
319158      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
319159   AND fvl85.lookup_code(+)         = h6.DISTRIBUTION_TYPE
319160   AND fvl85.view_application_id(+) = 700
319161   AND fvl85.language(+)            = USERENV('LANG')
319162      AND fvl114.lookup_type(+)         = 'YES_NO'
319163   AND fvl114.lookup_code(+)         = h6.TRANSFER_TO_GL_INDICATOR
319164   AND fvl114.view_application_id(+) = 0
319165   AND fvl114.language(+)            = USERENV('LANG')
319166   
319167  ORDER BY event_id
319168 ;
319169 
319170 
319171 --
319172 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
319173 IS
319174 SELECT /*+ leading(xet) cardinality(xet,1) */
319175 -- Event Type Code: EAM_DIRECT_SHOP_FLOOR_DELIVER
319176 -- Event Class Code: OSP
319177     xet.entity_id
319178    ,xet.legal_entity_id
319179    ,xet.entity_code
319180    ,xet.transaction_number
319181    ,xet.event_id
319182    ,xet.event_class_code
319183    ,xet.event_type_code
319184    ,xet.event_number
319185    ,xet.event_date
319186    ,xet.transaction_date
319187    ,xet.reference_num_1
319188    ,xet.reference_num_2
319189    ,xet.reference_num_3
319190    ,xet.reference_num_4
319191    ,xet.reference_char_1
319192    ,xet.reference_char_2
319193    ,xet.reference_char_3
319194    ,xet.reference_char_4
319195    ,xet.reference_date_1
319196    ,xet.reference_date_2
319197    ,xet.reference_date_3
319198    ,xet.reference_date_4
319199    ,xet.event_created_by
319200    ,xet.budgetary_control_flag  , l7.LINE_NUMBER  
319201   , l7.CODE_COMBINATION_ID    source_11
319202   , l7.DISTRIBUTION_IDENTIFIER    source_84
319203   , l7.ENTERED_AMOUNT    source_91
319204   , l7.ACCOUNTED_AMOUNT    source_95
319205   , l7.ACCOUNTING_LINE_TYPE_CODE    source_97
319206   FROM xla_events_gt     xet 
319207   , CST_XLA_WIP_LINES_V  l7
319208  WHERE xet.event_id between x_first_event_id and x_last_event_id
319209    and xet.event_date between p_pad_start_date and p_pad_end_date
319210    and xet.event_type_code = C_EVENT_TYPE_CODE
319211    and xet.event_status_code <> 'N'   AND l7.event_id      = xet.event_id
319212 ;
319213 
319214 --
319215 BEGIN
319216 IF g_log_enabled THEN
319217    l_log_module := C_DEFAULT_MODULE||'.EventType_553';
319218 END IF;
319219 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
319220    trace
319221       (p_msg      => 'BEGIN of EventType_553'
319222       ,p_level    => C_LEVEL_PROCEDURE
319223       ,p_module   => l_log_module);
319224 END IF;
319225 
319226 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
319227    trace
319228       (p_msg      => 'p_application_id = '||p_application_id||
319229                      ' - p_base_ledger_id = '||p_base_ledger_id||
319230                      ' - p_target_ledger_id  = '||p_target_ledger_id||
319231                      ' - p_language = '||p_language||
319232                      ' - p_currency_code = '||p_currency_code||
319233                      ' - p_sla_ledger_id = '||p_sla_ledger_id
319234       ,p_level    => C_LEVEL_STATEMENT
319235       ,p_module   => l_log_module);
319236 END IF;
319237 --
319238 -- initialze arrays
319239 --
319240 g_array_event.DELETE;
319241 l_rec_array_event := l_null_rec_array_event;
319242 --
319243 --------------------------------------
319244 -- 4262811 Initialze MPA Line Number
319245 --------------------------------------
319246 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
319247 
319248 --
319249 
319250 --
319251 OPEN header_cur;
319252 --
319253 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
319254    trace
319255    (p_msg      => 'SQL - FETCH header_cur'
319256    ,p_level    => C_LEVEL_STATEMENT
319257    ,p_module   => l_log_module);
319258 END IF;
319259 --
319260 LOOP
319261 FETCH header_cur BULK COLLECT INTO
319262         l_array_entity_id
319263       , l_array_legal_entity_id
319264       , l_array_entity_code
319265       , l_array_transaction_num
319266       , l_array_event_id
319267       , l_array_class_code
319268       , l_array_event_type
319269       , l_array_event_number
319270       , l_array_event_date
319271       , l_array_transaction_date
319272       , l_array_reference_num_1
319273       , l_array_reference_num_2
319274       , l_array_reference_num_3
319275       , l_array_reference_num_4
319276       , l_array_reference_char_1
319277       , l_array_reference_char_2
319278       , l_array_reference_char_3
319279       , l_array_reference_char_4
319280       , l_array_reference_date_1
319281       , l_array_reference_date_2
319282       , l_array_reference_date_3
319283       , l_array_reference_date_4
319284       , l_array_event_created_by
319285       , l_array_budgetary_control_flag 
319286       , l_array_source_1
319287       , l_array_source_4
319288       , l_array_source_6
319289       , l_array_source_7
319290       , l_array_source_7_meaning
319291       , l_array_source_53
319292       , l_array_source_54
319293       , l_array_source_55
319294       , l_array_source_55_meaning
319295       , l_array_source_56
319296       , l_array_source_57
319297       , l_array_source_85
319298       , l_array_source_85_meaning
319299       , l_array_source_88
319300       , l_array_source_92
319301       , l_array_source_93
319302       , l_array_source_114
319303       , l_array_source_114_meaning
319304       LIMIT l_rows;
319305 --
319306 IF (C_LEVEL_EVENT >= g_log_level) THEN
319307    trace
319308    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
319309    ,p_level    => C_LEVEL_EVENT
319310    ,p_module   => l_log_module);
319311 END IF;
319312 --
319313 EXIT WHEN l_array_entity_id.COUNT = 0;
319314 
319315 -- initialize arrays
319316 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
319317 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
319318 
319319 --
319320 -- Bug 4458708
319321 --
319322 XLA_AE_LINES_PKG.g_LineNumber := 0;
319323 
319324 
319325 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
319326 g_last_hdr_idx := l_array_event_id.LAST;
319327 --
319328 -- loop for the headers. Each iteration is for each header extract row
319329 -- fetched in header cursor
319330 --
319331 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
319332 
319333 --
319334 -- set event info as cache for other routines to refer event attributes
319335 --
319336 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
319337    (p_application_id           => p_application_id
319338    ,p_primary_ledger_id        => p_primary_ledger_id
319339    ,p_base_ledger_id           => p_base_ledger_id
319340    ,p_target_ledger_id         => p_target_ledger_id
319341    ,p_entity_id                => l_array_entity_id(hdr_idx)
319342    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
319343    ,p_entity_code              => l_array_entity_code(hdr_idx)
319344    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
319345    ,p_event_id                 => l_array_event_id(hdr_idx)
319346    ,p_event_class_code         => l_array_class_code(hdr_idx)
319347    ,p_event_type_code          => l_array_event_type(hdr_idx)
319348    ,p_event_number             => l_array_event_number(hdr_idx)
319349    ,p_event_date               => l_array_event_date(hdr_idx)
319350    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
319351    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
319352    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
319353    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
319354    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
319355    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
319356    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
319357    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
319358    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
319359    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
319360    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
319361    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
319362    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
319363    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
319364    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
319365 
319366 --
319367 -- set the status of entry to C_VALID (0)
319368 --
319369 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
319370 
319371 --
319372 -- initialize a row for ae header
319373 --
319374 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
319375 
319376 l_event_id := l_array_event_id(hdr_idx);
319377 
319378 --
319379 -- storing the hdr_idx for event. May be used by line cursor.
319380 --
319381 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
319382 
319383 --
319384 -- store sources from header extract. This can be improved to
319385 -- store only those sources from header extract that may be used in lines
319386 --
319387 
319388 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
319389 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
319390 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
319391 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
319392 g_array_event(l_event_id).array_value_char('source_7_meaning') := l_array_source_7_meaning(hdr_idx);
319393 g_array_event(l_event_id).array_value_num('source_53') := l_array_source_53(hdr_idx);
319394 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
319395 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
319396 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
319397 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
319398 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
319399 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
319400 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
319401 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
319402 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
319403 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
319404 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
319405 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
319406 
319407 --
319408 -- initilaize the status of ae headers for diffrent balance types
319409 -- the status is initialised to C_NOT_CREATED (2)
319410 --
319411 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
319412 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
319413 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
319414 
319415 --
319416 -- call api to validate and store accounting attributes for header
319417 --
319418 
319419 ------------------------------------------------------------
319420 -- Accrual Reversal : to get date for Standard Source (NONE)
319421 ------------------------------------------------------------
319422 l_acc_rev_gl_date_source := NULL;
319423 
319424      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
319425       l_rec_acct_attrs.array_date_value(1) := 
319426 xla_ae_sources_pkg.GetSystemSourceDate(
319427    p_source_code           => 'XLA_REFERENCE_DATE_1'
319428  , p_source_type_code      => 'Y'
319429  , p_source_application_id =>  602
319430 );
319431      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
319432       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
319433 
319434 
319435 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
319436 
319437 XLA_AE_HEADER_PKG.SetJeCategoryName;
319438 
319439 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
319440 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
319441 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
319442 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
319443 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
319444 
319445 
319446 --
319447 xla_ae_header_pkg.SetHdrDescription(
319448    p_description => Description_2 (
319449    p_application_id => p_application_id 
319450  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
319451  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
319452  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
319453  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
319454  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
319455    )
319456 );
319457 --
319458 
319459 -- No header level analytical criteria
319460 
319461 --
319462 --accounting attribute enhancement, bug 3612931
319463 --
319464 l_trx_reversal_source := SUBSTR(NULL, 1,30);
319465 
319466 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
319467    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
319468 
319469    xla_accounting_err_pkg.build_message
319470       (p_appli_s_name            => 'XLA'
319471       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
319472       ,p_token_1                 => 'ACCT_ATTR_NAME'
319473       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
319474       ,p_token_2                 => 'PRODUCT_NAME'
319475       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
319476       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
319477       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
319478       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
319479 
319480 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
319481    --
319482    -- following sets the accounting attributes needed to reverse
319483    -- accounting for a distributeion
319484    --
319485    xla_ae_lines_pkg.SetTrxReversalAttrs
319486       (p_event_id              => l_event_id
319487       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
319488       ,p_trx_reversal_source   => l_trx_reversal_source);
319489 
319490 END IF;
319491 
319492 
319493 ----------------------------------------------------------------
319494 -- 4262811 -  update the header statuses to invalid in need be
319495 ----------------------------------------------------------------
319496 --
319497 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
319498 
319499 
319500   -----------------------------------------------
319501   -- No accrual reversal for the event class/type
319502   -----------------------------------------------
319503 ----------------------------------------------------------------
319504 
319505 --
319506 -- this ends the header loop iteration for one bulk fetch
319507 --
319508 END LOOP;
319509 
319510 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
319511 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
319512 
319513 --
319514 -- insert dummy rows into lines gt table that were created due to
319515 -- transaction reversals
319516 --
319517 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
319518    l_result := XLA_AE_LINES_PKG.InsertLines;
319519 END IF;
319520 
319521 --
319522 -- reset the temp_line_num for each set of events fetched from header
319523 -- cursor rather than doing it for each new event in line cursor
319524 -- Bug 3939231
319525 --
319526 xla_ae_lines_pkg.g_temp_line_num := 0;
319527 
319528 
319529 
319530 --
319531 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
319532 --
319533 --
319534 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
319535 
319536       trace
319537          (p_msg      => 'SQL - FETCH line_cur'
319538          ,p_level    => C_LEVEL_STATEMENT
319539          ,p_module   => l_log_module);
319540 
319541 END IF;
319542 --
319543 --
319544 LOOP
319545   --
319546   FETCH line_cur BULK COLLECT INTO
319547         l_array_entity_id
319548       , l_array_legal_entity_id
319549       , l_array_entity_code
319550       , l_array_transaction_num
319551       , l_array_event_id
319552       , l_array_class_code
319553       , l_array_event_type
319554       , l_array_event_number
319555       , l_array_event_date
319556       , l_array_transaction_date
319557       , l_array_reference_num_1
319558       , l_array_reference_num_2
319559       , l_array_reference_num_3
319560       , l_array_reference_num_4
319561       , l_array_reference_char_1
319562       , l_array_reference_char_2
319563       , l_array_reference_char_3
319564       , l_array_reference_char_4
319565       , l_array_reference_date_1
319566       , l_array_reference_date_2
319567       , l_array_reference_date_3
319568       , l_array_reference_date_4
319569       , l_array_event_created_by
319570       , l_array_budgetary_control_flag
319571       , l_array_extract_line_num 
319572       , l_array_source_11
319573       , l_array_source_84
319574       , l_array_source_91
319575       , l_array_source_95
319576       , l_array_source_97
319577       LIMIT l_rows;
319578 
319579   --
319580   IF (C_LEVEL_EVENT >= g_log_level) THEN
319581             trace
319582                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
319583                ,p_level    => C_LEVEL_EVENT
319584                ,p_module   => l_log_module);
319585   END IF;
319586   --
319587   EXIT WHEN l_array_entity_id.count = 0;
319588 
319589   XLA_AE_LINES_PKG.g_rec_lines := null;
319590 
319591 --
319592 -- Bug 4458708
319593 --
319594 XLA_AE_LINES_PKG.g_LineNumber := 0;
319595 --
319596 --
319597 
319598 FOR Idx IN 1..l_array_event_id.count LOOP
319599    --
319600    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
319601    --
319602    l_event_id := l_array_event_id(idx);  -- 5648433
319603 
319604    --
319605    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
319606    --
319607 
319608    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
319609              (g_array_event(l_event_id).array_value_num('header_index'))
319610          ,'N'
319611          ) <> 'Y'
319612    THEN
319613       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
319614          trace
319615             (p_msg      => 'Trancaction revesal option is not Y '
319616             ,p_level    => C_LEVEL_STATEMENT
319617             ,p_module   => l_log_module);
319618       END IF;
319619 
319620 --
319621 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
319622 --
319623 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
319624 --
319625 -- set event info as cache for other routines to refer event attributes
319626 --
319627 
319628 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
319629    l_previous_event_id := l_event_id;
319630 
319631    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
319632       (p_application_id           => p_application_id
319633       ,p_primary_ledger_id        => p_primary_ledger_id
319634       ,p_base_ledger_id           => p_base_ledger_id
319635       ,p_target_ledger_id         => p_target_ledger_id
319636       ,p_entity_id                => l_array_entity_id(Idx)
319637       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
319638       ,p_entity_code              => l_array_entity_code(Idx)
319639       ,p_transaction_num          => l_array_transaction_num(Idx)
319640       ,p_event_id                 => l_array_event_id(Idx)
319641       ,p_event_class_code         => l_array_class_code(Idx)
319642       ,p_event_type_code          => l_array_event_type(Idx)
319643       ,p_event_number             => l_array_event_number(Idx)
319644       ,p_event_date               => l_array_event_date(Idx)
319645       ,p_transaction_date         => l_array_transaction_date(Idx)
319646       ,p_reference_num_1          => l_array_reference_num_1(Idx)
319647       ,p_reference_num_2          => l_array_reference_num_2(Idx)
319648       ,p_reference_num_3          => l_array_reference_num_3(Idx)
319649       ,p_reference_num_4          => l_array_reference_num_4(Idx)
319650       ,p_reference_char_1         => l_array_reference_char_1(Idx)
319651       ,p_reference_char_2         => l_array_reference_char_2(Idx)
319652       ,p_reference_char_3         => l_array_reference_char_3(Idx)
319653       ,p_reference_char_4         => l_array_reference_char_4(Idx)
319654       ,p_reference_date_1         => l_array_reference_date_1(Idx)
319655       ,p_reference_date_2         => l_array_reference_date_2(Idx)
319656       ,p_reference_date_3         => l_array_reference_date_3(Idx)
319657       ,p_reference_date_4         => l_array_reference_date_4(Idx)
319658       ,p_event_created_by         => l_array_event_created_by(Idx)
319659       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
319660        --
319661 END IF;
319662 
319663 
319664 
319665 --
319666 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
319667 
319668 l_acct_reversal_source := SUBSTR(NULL, 1,30);
319669 
319670 IF l_continue_with_lines THEN
319671    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
319672       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
319673 
319674       xla_accounting_err_pkg.build_message
319675          (p_appli_s_name            => 'XLA'
319676          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
319677          ,p_token_1                 => 'LINE_NUMBER'
319678          ,p_value_1                 => l_array_extract_line_num(Idx)
319679          ,p_token_2                 => 'PRODUCT_NAME'
319680          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
319681          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
319682          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
319683          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
319684 
319685    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
319686       --
319687       -- following sets the accounting attributes needed to reverse
319688       -- accounting for a distributeion
319689       --
319690 
319691       --
319692       -- 5217187
319693       --
319694       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
319695       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
319696                                        g_array_event(l_event_id).array_value_num('header_index'));
319697       --
319698       --
319699 
319700       -- No reversal code generated
319701 
319702       xla_ae_lines_pkg.SetAcctReversalAttrs
319703          (p_event_id             => l_event_id
319704          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
319705          ,p_calculate_acctd_flag => l_calculate_acctd_flag
319706          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
319707    END IF;
319708 
319709    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
319710        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
319711 
319712 --
319713 AcctLineType_328 (
319714  p_application_id  => p_application_id
319715  ,p_event_id     => l_event_id
319716  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319717  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319718  ,p_actual_flag => l_actual_flag
319719  ,p_balance_type_code => l_balance_type_code
319720  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319721  
319722  , p_source_11 => l_array_source_11(Idx)
319723  , p_source_84 => l_array_source_84(Idx)
319724  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319725  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319726  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319727  , p_source_91 => l_array_source_91(Idx)
319728  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319729  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319730  , p_source_95 => l_array_source_95(Idx)
319731  , p_source_97 => l_array_source_97(Idx)
319732  );
319733 If(l_balance_type_code = 'A') THEN
319734   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319735 END IF;
319736 
319737 --
319738 
319739 
319740 --
319741 AcctLineType_373 (
319742  p_application_id  => p_application_id
319743  ,p_event_id     => l_event_id
319744  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319745  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319746  ,p_actual_flag => l_actual_flag
319747  ,p_balance_type_code => l_balance_type_code
319748  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319749  
319750  , p_source_11 => l_array_source_11(Idx)
319751  , p_source_84 => l_array_source_84(Idx)
319752  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319753  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319754  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319755  , p_source_91 => l_array_source_91(Idx)
319756  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319757  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319758  , p_source_95 => l_array_source_95(Idx)
319759  , p_source_97 => l_array_source_97(Idx)
319760  );
319761 If(l_balance_type_code = 'A') THEN
319762   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319763 END IF;
319764 
319765 --
319766 
319767 
319768 --
319769 AcctLineType_414 (
319770  p_application_id  => p_application_id
319771  ,p_event_id     => l_event_id
319772  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319773  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319774  ,p_actual_flag => l_actual_flag
319775  ,p_balance_type_code => l_balance_type_code
319776  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319777  
319778  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
319779  , p_source_84 => l_array_source_84(Idx)
319780  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319781  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319782  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319783  , p_source_91 => l_array_source_91(Idx)
319784  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319785  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319786  , p_source_95 => l_array_source_95(Idx)
319787  , p_source_97 => l_array_source_97(Idx)
319788  );
319789 If(l_balance_type_code = 'A') THEN
319790   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319791 END IF;
319792 
319793 --
319794 
319795 
319796 --
319797 AcctLineType_459 (
319798  p_application_id  => p_application_id
319799  ,p_event_id     => l_event_id
319800  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319801  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319802  ,p_actual_flag => l_actual_flag
319803  ,p_balance_type_code => l_balance_type_code
319804  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319805  
319806  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
319807  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
319808  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
319809  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
319810  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
319811  , p_source_84 => l_array_source_84(Idx)
319812  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319813  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319814  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319815  , p_source_91 => l_array_source_91(Idx)
319816  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319817  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319818  , p_source_95 => l_array_source_95(Idx)
319819  , p_source_97 => l_array_source_97(Idx)
319820  );
319821 If(l_balance_type_code = 'A') THEN
319822   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319823 END IF;
319824 
319825 --
319826 
319827 
319828 --
319829 AcctLineType_478 (
319830  p_application_id  => p_application_id
319831  ,p_event_id     => l_event_id
319832  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319833  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319834  ,p_actual_flag => l_actual_flag
319835  ,p_balance_type_code => l_balance_type_code
319836  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319837  
319838  , p_source_11 => l_array_source_11(Idx)
319839  , p_source_84 => l_array_source_84(Idx)
319840  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319841  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319842  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319843  , p_source_91 => l_array_source_91(Idx)
319844  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319845  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319846  , p_source_95 => l_array_source_95(Idx)
319847  , p_source_97 => l_array_source_97(Idx)
319848  );
319849 If(l_balance_type_code = 'A') THEN
319850   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319851 END IF;
319852 
319853 --
319854 
319855 
319856 --
319857 AcctLineType_499 (
319858  p_application_id  => p_application_id
319859  ,p_event_id     => l_event_id
319860  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319861  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319862  ,p_actual_flag => l_actual_flag
319863  ,p_balance_type_code => l_balance_type_code
319864  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319865  
319866  , p_source_11 => l_array_source_11(Idx)
319867  , p_source_84 => l_array_source_84(Idx)
319868  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319869  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319870  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319871  , p_source_91 => l_array_source_91(Idx)
319872  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319873  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319874  , p_source_95 => l_array_source_95(Idx)
319875  , p_source_97 => l_array_source_97(Idx)
319876  );
319877 If(l_balance_type_code = 'A') THEN
319878   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319879 END IF;
319880 
319881 --
319882 
319883 
319884 --
319885 AcctLineType_511 (
319886  p_application_id  => p_application_id
319887  ,p_event_id     => l_event_id
319888  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319889  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319890  ,p_actual_flag => l_actual_flag
319891  ,p_balance_type_code => l_balance_type_code
319892  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319893  
319894  , p_source_11 => l_array_source_11(Idx)
319895  , p_source_84 => l_array_source_84(Idx)
319896  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319897  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319898  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319899  , p_source_91 => l_array_source_91(Idx)
319900  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319901  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319902  , p_source_95 => l_array_source_95(Idx)
319903  , p_source_97 => l_array_source_97(Idx)
319904  );
319905 If(l_balance_type_code = 'A') THEN
319906   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319907 END IF;
319908 
319909 --
319910 
319911 
319912 --
319913 AcctLineType_526 (
319914  p_application_id  => p_application_id
319915  ,p_event_id     => l_event_id
319916  ,p_calculate_acctd_flag => l_calculate_acctd_flag
319917  ,p_calculate_g_l_flag => l_calculate_g_l_flag
319918  ,p_actual_flag => l_actual_flag
319919  ,p_balance_type_code => l_balance_type_code
319920  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
319921  
319922  , p_source_11 => l_array_source_11(Idx)
319923  , p_source_84 => l_array_source_84(Idx)
319924  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
319925  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
319926  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
319927  , p_source_91 => l_array_source_91(Idx)
319928  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
319929  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
319930  , p_source_95 => l_array_source_95(Idx)
319931  , p_source_97 => l_array_source_97(Idx)
319932  );
319933 If(l_balance_type_code = 'A') THEN
319934   l_actual_gain_loss_ref := l_gain_or_loss_ref;
319935 END IF;
319936 
319937 --
319938 
319939       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
319940       -- or secondary ledger that has different currency with primary
319941       -- or alc that is calculated by sla
319942       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
319943             (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'))
319944 
319945 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
319946 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
319947           AND (l_actual_flag = 'A')) THEN
319948         XLA_AE_LINES_PKG.CreateGainOrLossLines(
319949           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
319950          ,p_application_id   => p_application_id
319951          ,p_amb_context_code => 'DEFAULT'
319952          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
319953          ,p_event_class_code => C_EVENT_CLASS_CODE
319954          ,p_event_type_code  => C_EVENT_TYPE_CODE
319955          
319956          ,p_gain_ccid        => -1
319957          ,p_loss_ccid        => -1
319958 
319959          ,p_actual_flag      => l_actual_flag
319960          ,p_enc_flag         => null
319961          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
319962          ,p_enc_g_l_ref      => null
319963          );
319964       END IF;
319965    END IF;
319966 END IF;
319967 
319968    ELSE
319969       --
319970       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
319971       --
319972       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
319973          trace
319974             (p_msg      => 'Trancaction revesal option is Y'
319975             ,p_level    => C_LEVEL_STATEMENT
319976             ,p_module   => l_log_module);
319977       END IF;
319978    END IF;
319979 
319980 END LOOP;
319981 l_result := XLA_AE_LINES_PKG.InsertLines ;
319982 end loop;
319983 close line_cur;
319984 
319985 
319986 --
319987 -- insert headers into xla_ae_headers_gt table
319988 --
319989 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
319990 
319991 -- insert into errors table here.
319992 
319993 END LOOP;
319994 
319995 --
319996 -- 4865292
319997 --
319998 -- Compare g_hdr_extract_count with event count in
319999 -- CreateHeadersAndLines.
320000 --
320001 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
320002 
320003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
320004    trace (p_msg     => '# rows extracted from header extract objects '
320005                     || ' (running total): '
320006                     || g_hdr_extract_count
320007          ,p_level   => C_LEVEL_STATEMENT
320008          ,p_module  => l_log_module);
320009 END IF;
320010 
320011 CLOSE header_cur;
320012 --
320013 
320014 --
320015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
320016    trace
320017       (p_msg      => 'END of EventType_553'
320018       ,p_level    => C_LEVEL_PROCEDURE
320019       ,p_module   => l_log_module);
320020 END IF;
320021 --
320022 RETURN l_result;
320023 EXCEPTION
320024 WHEN xla_exceptions_pkg.application_exception THEN
320025    
320026 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
320027 
320028    
320029 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
320030 
320031    RAISE;
320032 
320033 WHEN NO_DATA_FOUND THEN
320034 
320035 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
320036 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
320037 
320038 FOR header_record IN header_cur
320039 LOOP
320040     l_array_header_events(header_record.event_id) := header_record.event_id;
320041 END LOOP;
320042 
320043 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
320044 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
320045 
320046 fnd_file.put_line(fnd_file.LOG, '                    ');
320047 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
320048 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
320049 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
320050 
320051 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
320052 LOOP
320053 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
320054 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
320055         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
320056 	END IF;
320057 END LOOP;
320058 
320059 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
320060 fnd_file.put_line(fnd_file.LOG, '                    ');
320061 
320062 
320063 xla_exceptions_pkg.raise_message
320064       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_553');
320065 
320066 
320067 WHEN OTHERS THEN
320068    xla_exceptions_pkg.raise_message
320069       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_553');
320070 END EventType_553;
320071 --
320072 
320073 ---------------------------------------
320074 --
320075 -- PRIVATE PROCEDURE
320076 --         insert_sources_554
320077 --
320078 ----------------------------------------
320079 --
320080 PROCEDURE insert_sources_554(
320081                                 p_target_ledger_id       IN NUMBER
320082                               , p_language               IN VARCHAR2
320083                               , p_sla_ledger_id          IN NUMBER
320084                               , p_pad_start_date         IN DATE
320085                               , p_pad_end_date           IN DATE
320086                          )
320087 IS
320088 
320089 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_NO_TP';
320090 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
320091 p_apps_owner                   VARCHAR2(30);
320092 l_log_module                   VARCHAR2(240);
320093 BEGIN
320094 IF g_log_enabled THEN
320095       l_log_module := C_DEFAULT_MODULE||'.insert_sources_554';
320096 END IF;
320097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
320098 
320099       trace
320100          (p_msg      => 'BEGIN of insert_sources_554'
320101          ,p_level    => C_LEVEL_PROCEDURE
320102          ,p_module   => l_log_module);
320103 
320104 END IF;
320105 
320106 -- select APPS owner
320107 SELECT oracle_username
320108   INTO p_apps_owner
320109   FROM fnd_oracle_userid
320110  WHERE read_only_flag = 'U'
320111 ;
320112 
320113 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
320114       trace
320115          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
320116                         ' - p_language = '||p_language||
320117                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
320118                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
320119                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
320120                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
320121          ,p_level    => C_LEVEL_STATEMENT
320122          ,p_module   => l_log_module);
320123 END IF;
320124 
320125 
320126 --
320127 INSERT INTO xla_diag_sources --hdr1
320128 (
320129         event_id
320130       , ledger_id
320131       , sla_ledger_id
320132       , description_language
320133       , object_name
320134       , object_type_code
320135       , line_number
320136       , source_application_id
320137       , source_type_code
320138       , source_code
320139       , source_value
320140       , source_meaning
320141       , created_by
320142       , creation_date
320143       , last_update_date
320144       , last_updated_by
320145       , last_update_login
320146       , program_update_date
320147       , program_application_id
320148       , program_id
320149       , request_id
320150 )
320151 SELECT
320152         event_id
320153       , p_target_ledger_id
320154       , p_sla_ledger_id
320155       , p_language
320156       , object_name
320157       , object_type_code
320158       , line_number
320159       , source_application_id
320160       , source_type_code
320161       , source_code
320162       , SUBSTR(source_value ,1,1996)
320163       , SUBSTR(source_meaning,1,200)
320164       , xla_environment_pkg.g_Usr_Id
320165       , TRUNC(SYSDATE)
320166       , TRUNC(SYSDATE)
320167       , xla_environment_pkg.g_Usr_Id
320168       , xla_environment_pkg.g_Login_Id
320169       , TRUNC(SYSDATE)
320170       , xla_environment_pkg.g_Prog_Appl_Id
320171       , xla_environment_pkg.g_Prog_Id
320172       , xla_environment_pkg.g_Req_Id
320173   FROM (
320174        SELECT xet.event_id                  event_id
320175             , 0                             line_number
320176             , CASE r
320177                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
320178                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
320179                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
320180                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
320181                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
320182                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
320183                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
320184                 WHEN 8 THEN 'CST_XLA_INV_HEADERS_V' 
320185                 WHEN 9 THEN 'CST_XLA_INV_HEADERS_V' 
320186                 
320187                ELSE null
320188               END                           object_name
320189             , CASE r
320190                 WHEN 1 THEN 'HEADER' 
320191                 WHEN 2 THEN 'HEADER' 
320192                 WHEN 3 THEN 'HEADER' 
320193                 WHEN 4 THEN 'HEADER' 
320194                 WHEN 5 THEN 'HEADER' 
320195                 WHEN 6 THEN 'HEADER' 
320196                 WHEN 7 THEN 'HEADER' 
320197                 WHEN 8 THEN 'HEADER' 
320198                 WHEN 9 THEN 'HEADER' 
320199                 
320200                 ELSE null
320201               END                           object_type_code
320202             , CASE r
320203                 WHEN 1 THEN '707' 
320204                 WHEN 2 THEN '707' 
320205                 WHEN 3 THEN '707' 
320206                 WHEN 4 THEN '707' 
320207                 WHEN 5 THEN '707' 
320208                 WHEN 6 THEN '707' 
320209                 WHEN 7 THEN '707' 
320210                 WHEN 8 THEN '707' 
320211                 WHEN 9 THEN '707' 
320212                 
320213                 ELSE null
320214               END                           source_application_id
320215             , 'S'             source_type_code
320216             , CASE r
320217                 WHEN 1 THEN 'TRANSACTION_ID' 
320218                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
320219                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
320220                 WHEN 4 THEN 'TRANSACTION_UOM' 
320221                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
320222                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
320223                 WHEN 7 THEN 'INTERORG_PAYABLES_ACCOUNT' 
320224                 WHEN 8 THEN 'DISTRIBUTION_TYPE' 
320225                 WHEN 9 THEN 'TRANSFER_TO_GL_INDICATOR' 
320226                 
320227                 ELSE null
320228               END                           source_code
320229             , CASE r
320230                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
320231                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
320232                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
320233                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
320234                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
320235                 WHEN 6 THEN TO_CHAR(h4.INV_TXN_DISTRIBUTION_ACCT)
320236                 WHEN 7 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
320237                 WHEN 8 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
320238                 WHEN 9 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
320239                 
320240                 ELSE null
320241               END                           source_value
320242             , CASE r
320243                 WHEN 8 THEN fvl85.meaning
320244                 WHEN 9 THEN fvl114.meaning
320245                 
320246                 ELSE null
320247               END               source_meaning
320248         FROM xla_events_gt     xet  
320249       , CST_XLA_INTERORG_PARAMS_REF_V  h1
320250       , CST_XLA_INV_HEADERS_V  h2
320251       , CST_XLA_INV_REF_V  h4
320252       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
320253       , CST_XLA_INV_TXN_TYPES_REF_V  h6
320254   , fnd_lookup_values    fvl85
320255   , fnd_lookup_values    fvl114
320256             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
320257        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
320258          AND xet.event_type_code = C_EVENT_TYPE_CODE
320259             AND h2.event_id = xet.event_id
320260   AND h1.event_id (+) = h2.event_id
320261  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id   AND fvl85.lookup_type(+)         = 
320262 'CST_DISTRIBUTION_TYPE'
320263   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
320264   AND fvl85.view_application_id(+) = 700
320265   AND fvl85.language(+)            = USERENV('LANG')
320266      AND fvl114.lookup_type(+)         = 'YES_NO'
320267   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
320268   AND fvl114.view_application_id(+) = 0
320269   AND fvl114.language(+)            = USERENV('LANG')
320270   
320271 )
320272 ;
320273 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
320274 
320275       trace
320276          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
320277          ,p_level    => C_LEVEL_STATEMENT
320278          ,p_module   => l_log_module);
320279 
320280 END IF;
320281 --
320282 
320283 
320284 
320285 --
320286 INSERT INTO xla_diag_sources --line1
320287 (
320288         event_id
320289       , ledger_id
320290       , sla_ledger_id
320291       , description_language
320292       , object_name
320293       , object_type_code
320294       , line_number
320295       , source_application_id
320296       , source_type_code
320297       , source_code
320298       , source_value
320299       , source_meaning
320300       , created_by
320301       , creation_date
320302       , last_update_date
320303       , last_updated_by
320304       , last_update_login
320305       , program_update_date
320306       , program_application_id
320307       , program_id
320308       , request_id
320309 )
320310 SELECT  event_id
320311       , p_target_ledger_id
320312       , p_sla_ledger_id
320313       , p_language
320314       , object_name
320315       , object_type_code
320316       , line_number
320317       , source_application_id
320318       , source_type_code
320319       , source_code
320320       , SUBSTR(source_value,1,1996)
320321       , SUBSTR(source_meaning,1,200)
320322       , xla_environment_pkg.g_Usr_Id
320323       , TRUNC(SYSDATE)
320324       , TRUNC(SYSDATE)
320325       , xla_environment_pkg.g_Usr_Id
320326       , xla_environment_pkg.g_Login_Id
320327       , TRUNC(SYSDATE)
320328       , xla_environment_pkg.g_Prog_Appl_Id
320329       , xla_environment_pkg.g_Prog_Id
320330       , xla_environment_pkg.g_Req_Id
320331   FROM (
320332        SELECT xet.event_id                  event_id
320333             , l3.line_number                 line_number
320334             , CASE r
320335                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
320336                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
320337                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
320338                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
320339                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
320340                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
320341                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
320342                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
320343                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
320344                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
320345                 
320346                ELSE null
320347               END                           object_name
320348             , CASE r
320349                 WHEN 1 THEN 'LINE' 
320350                 WHEN 2 THEN 'LINE' 
320351                 WHEN 3 THEN 'LINE' 
320352                 WHEN 4 THEN 'LINE' 
320353                 WHEN 5 THEN 'LINE' 
320354                 WHEN 6 THEN 'LINE' 
320355                 WHEN 7 THEN 'LINE' 
320356                 WHEN 8 THEN 'LINE' 
320357                 WHEN 9 THEN 'LINE' 
320358                 WHEN 10 THEN 'LINE' 
320359                 
320360                 ELSE null
320361               END                           object_type_code
320362             , CASE r
320363                 WHEN 1 THEN '707' 
320364                 WHEN 2 THEN '707' 
320365                 WHEN 3 THEN '707' 
320366                 WHEN 4 THEN '707' 
320367                 WHEN 5 THEN '707' 
320368                 WHEN 6 THEN '707' 
320369                 WHEN 7 THEN '707' 
320370                 WHEN 8 THEN '707' 
320371                 WHEN 9 THEN '707' 
320372                 WHEN 10 THEN '707' 
320373                 
320374                 ELSE null
320375               END                           source_application_id
320376             , 'S'             source_type_code
320377             , CASE r
320378                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
320379                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
320380                 WHEN 3 THEN 'CURRENCY_CODE' 
320381                 WHEN 4 THEN 'ENTERED_AMOUNT' 
320382                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
320383                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
320384                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
320385                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
320386                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
320387                 WHEN 10 THEN 'L_ORGANIZATION_CODE' 
320388                 
320389                 ELSE null
320390               END                           source_code
320391             , CASE r
320392                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
320393                 WHEN 2 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
320394                 WHEN 3 THEN TO_CHAR(l3.CURRENCY_CODE)
320395                 WHEN 4 THEN TO_CHAR(l3.ENTERED_AMOUNT)
320396                 WHEN 5 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
320397                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
320398                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
320399                 WHEN 8 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
320400                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
320401                 WHEN 10 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
320402                 
320403                 ELSE null
320404               END                           source_value
320405             , null              source_meaning
320406          FROM  xla_events_gt     xet  
320407         , CST_XLA_INV_LINES_V  l3
320408             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
320409         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
320410           AND xet.event_type_code = C_EVENT_TYPE_CODE
320411             AND l3.event_id          = xet.event_id
320412 
320413 )
320414 ;
320415 --
320416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
320417 
320418       trace
320419          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
320420          ,p_level    => C_LEVEL_STATEMENT
320421          ,p_module   => l_log_module);
320422 
320423 END IF;
320424 
320425 
320426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
320427       trace
320428          (p_msg      => 'END of insert_sources_554'
320429          ,p_level    => C_LEVEL_PROCEDURE
320430          ,p_module   => l_log_module);
320431 END IF;
320432 EXCEPTION
320433   WHEN xla_exceptions_pkg.application_exception THEN
320434       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
320435             trace
320436                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
320437                ,p_level    => C_LEVEL_EXCEPTION
320438                ,p_module   => l_log_module);
320439       END IF;
320440       RAISE;
320441   WHEN OTHERS THEN
320442       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
320443             trace
320444                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
320445                ,p_level    => C_LEVEL_EXCEPTION
320446                ,p_module   => l_log_module);
320447        END IF;
320448        xla_exceptions_pkg.raise_message
320449            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_554');
320450 END insert_sources_554;
320451 --
320452 
320453 ---------------------------------------
320454 --
320455 -- PRIVATE FUNCTION
320456 --         EventType_554
320457 --
320458 ----------------------------------------
320459 --
320460 FUNCTION EventType_554
320461        (p_application_id         IN NUMBER
320462        ,p_base_ledger_id         IN NUMBER
320463        ,p_target_ledger_id       IN NUMBER
320464        ,p_language               IN VARCHAR2
320465        ,p_currency_code          IN VARCHAR2
320466        ,p_sla_ledger_id          IN NUMBER
320467        ,p_pad_start_date         IN DATE
320468        ,p_pad_end_date           IN DATE
320469        ,p_primary_ledger_id      IN NUMBER)
320470 RETURN BOOLEAN IS
320471 --
320472 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_NO_TP';
320473 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
320474 
320475 l_calculate_acctd_flag   VARCHAR2(1) :='N';
320476 l_calculate_g_l_flag     VARCHAR2(1) :='N';
320477 --
320478 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320479 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320480 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
320481 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
320482 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320483 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
320484 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
320485 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320486 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
320487 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
320488 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320489 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320490 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320491 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
320492 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
320493 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
320494 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
320495 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
320496 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
320497 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
320498 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
320499 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
320500 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
320501 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
320502 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
320503 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
320504 
320505 l_event_id                             NUMBER;
320506 l_previous_event_id                    NUMBER;
320507 l_first_event_id                       NUMBER;
320508 l_last_event_id                        NUMBER;
320509 
320510 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
320511 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
320512 --
320513 --
320514 l_result                    BOOLEAN := TRUE;
320515 l_rows                      NUMBER  := 1000;
320516 l_event_type_name           VARCHAR2(80) := 'Internal Order Receipt into Expense, no Transfer Pricing';
320517 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
320518 l_description               VARCHAR2(4000);
320519 l_transaction_reversal      NUMBER;
320520 l_ae_header_id              NUMBER;
320521 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
320522 l_log_module                VARCHAR2(240);
320523 --
320524 l_acct_reversal_source      VARCHAR2(30);
320525 l_trx_reversal_source       VARCHAR2(30);
320526 
320527 l_continue_with_lines       BOOLEAN := TRUE;
320528 --
320529 l_acc_rev_gl_date_source    DATE;                      -- 4262811
320530 --
320531 type t_array_event_id is table of number index by binary_integer;
320532 
320533 l_rec_array_event                    t_rec_array_event;
320534 l_null_rec_array_event               t_rec_array_event;
320535 l_array_ae_header_id                 xla_number_array_type;
320536 l_actual_flag                        VARCHAR2(1) := NULL;
320537 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
320538 l_balance_type_code                  VARCHAR2(1) :=NULL;
320539 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
320540 
320541 --
320542 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
320543 --
320544 
320545 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
320546 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
320547 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
320548 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
320549 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
320550 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
320551 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
320552 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
320553 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
320554 
320555 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
320556 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
320557 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
320558 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
320559 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
320560 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
320561 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
320562 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
320563 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
320564 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
320565 
320566 l_array_source_1              t_array_source_1;
320567 l_array_source_2              t_array_source_2;
320568 l_array_source_3              t_array_source_3;
320569 l_array_source_4              t_array_source_4;
320570 l_array_source_5              t_array_source_5;
320571 l_array_source_20              t_array_source_20;
320572 l_array_source_35              t_array_source_35;
320573 l_array_source_85              t_array_source_85;
320574 l_array_source_85_meaning      t_array_lookup_meaning;
320575 l_array_source_114              t_array_source_114;
320576 l_array_source_114_meaning      t_array_lookup_meaning;
320577 
320578 l_array_source_11      t_array_source_11;
320579 l_array_source_84      t_array_source_84;
320580 l_array_source_88      t_array_source_88;
320581 l_array_source_91      t_array_source_91;
320582 l_array_source_92      t_array_source_92;
320583 l_array_source_93      t_array_source_93;
320584 l_array_source_94      t_array_source_94;
320585 l_array_source_95      t_array_source_95;
320586 l_array_source_97      t_array_source_97;
320587 l_array_source_108      t_array_source_108;
320588 
320589 --
320590 CURSOR header_cur
320591 IS
320592 SELECT /*+ leading(xet) cardinality(xet,1) */
320593 -- Event Type Code: EXP_REQ_RCPT_NO_TP
320594 -- Event Class Code: INT_ORDER_TO_EXP
320595     xet.entity_id
320596   , xet.legal_entity_id
320597   , xet.entity_code
320598   , xet.transaction_number
320599   , xet.event_id
320600   , xet.event_class_code
320601   , xet.event_type_code
320602   , xet.event_number
320603   , xet.event_date
320604   , xet.transaction_date
320605   , xet.reference_num_1
320606   , xet.reference_num_2
320607   , xet.reference_num_3
320608   , xet.reference_num_4
320609   , xet.reference_char_1
320610   , xet.reference_char_2
320611   , xet.reference_char_3
320612   , xet.reference_char_4
320613   , xet.reference_date_1
320614   , xet.reference_date_2
320615   , xet.reference_date_3
320616   , xet.reference_date_4
320617   , xet.event_created_by
320618   , xet.budgetary_control_flag 
320619   , h2.TRANSACTION_ID    source_1
320620   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
320621   , h4.TRANSACTION_QUANTITY    source_3
320622   , h4.TRANSACTION_UOM    source_4
320623   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
320624   , h4.INV_TXN_DISTRIBUTION_ACCT    source_20
320625   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
320626   , h2.DISTRIBUTION_TYPE    source_85
320627   , fvl85.meaning   source_85_meaning
320628   , h2.TRANSFER_TO_GL_INDICATOR    source_114
320629   , fvl114.meaning   source_114_meaning
320630   FROM xla_events_gt     xet 
320631   , CST_XLA_INTERORG_PARAMS_REF_V  h1
320632   , CST_XLA_INV_HEADERS_V  h2
320633   , CST_XLA_INV_REF_V  h4
320634   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
320635   , CST_XLA_INV_TXN_TYPES_REF_V  h6
320636   , fnd_lookup_values    fvl85
320637   , fnd_lookup_values    fvl114
320638  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
320639    and xet.event_type_code = C_EVENT_TYPE_CODE
320640    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
320641   AND h1.event_id (+) = h2.event_id
320642  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID   AND fvl85.lookup_type(+)         = 
320643 'CST_DISTRIBUTION_TYPE'
320644   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
320645   AND fvl85.view_application_id(+) = 700
320646   AND fvl85.language(+)            = USERENV('LANG')
320647      AND fvl114.lookup_type(+)         = 'YES_NO'
320648   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
320649   AND fvl114.view_application_id(+) = 0
320650   AND fvl114.language(+)            = USERENV('LANG')
320651   
320652  ORDER BY event_id
320653 ;
320654 
320655 
320656 --
320657 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
320658 IS
320659 SELECT /*+ leading(xet) cardinality(xet,1) */
320660 -- Event Type Code: EXP_REQ_RCPT_NO_TP
320661 -- Event Class Code: INT_ORDER_TO_EXP
320662     xet.entity_id
320663    ,xet.legal_entity_id
320664    ,xet.entity_code
320665    ,xet.transaction_number
320666    ,xet.event_id
320667    ,xet.event_class_code
320668    ,xet.event_type_code
320669    ,xet.event_number
320670    ,xet.event_date
320671    ,xet.transaction_date
320672    ,xet.reference_num_1
320673    ,xet.reference_num_2
320674    ,xet.reference_num_3
320675    ,xet.reference_num_4
320676    ,xet.reference_char_1
320677    ,xet.reference_char_2
320678    ,xet.reference_char_3
320679    ,xet.reference_char_4
320680    ,xet.reference_date_1
320681    ,xet.reference_date_2
320682    ,xet.reference_date_3
320683    ,xet.reference_date_4
320684    ,xet.event_created_by
320685    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
320686   , l3.CODE_COMBINATION_ID    source_11
320687   , l3.DISTRIBUTION_IDENTIFIER    source_84
320688   , l3.CURRENCY_CODE    source_88
320689   , l3.ENTERED_AMOUNT    source_91
320690   , l3.CURRENCY_CONVERSION_DATE    source_92
320691   , l3.CURRENCY_CONVERSION_RATE    source_93
320692   , l3.CURRENCY_CONVERSION_TYPE    source_94
320693   , l3.ACCOUNTED_AMOUNT    source_95
320694   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
320695   , l3.L_ORGANIZATION_CODE    source_108
320696   FROM xla_events_gt     xet 
320697   , CST_XLA_INV_LINES_V  l3
320698  WHERE xet.event_id between x_first_event_id and x_last_event_id
320699    and xet.event_date between p_pad_start_date and p_pad_end_date
320700    and xet.event_type_code = C_EVENT_TYPE_CODE
320701    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
320702 ;
320703 
320704 --
320705 BEGIN
320706 IF g_log_enabled THEN
320707    l_log_module := C_DEFAULT_MODULE||'.EventType_554';
320708 END IF;
320709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
320710    trace
320711       (p_msg      => 'BEGIN of EventType_554'
320712       ,p_level    => C_LEVEL_PROCEDURE
320713       ,p_module   => l_log_module);
320714 END IF;
320715 
320716 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
320717    trace
320718       (p_msg      => 'p_application_id = '||p_application_id||
320719                      ' - p_base_ledger_id = '||p_base_ledger_id||
320720                      ' - p_target_ledger_id  = '||p_target_ledger_id||
320721                      ' - p_language = '||p_language||
320722                      ' - p_currency_code = '||p_currency_code||
320723                      ' - p_sla_ledger_id = '||p_sla_ledger_id
320724       ,p_level    => C_LEVEL_STATEMENT
320725       ,p_module   => l_log_module);
320726 END IF;
320727 --
320728 -- initialze arrays
320729 --
320730 g_array_event.DELETE;
320731 l_rec_array_event := l_null_rec_array_event;
320732 --
320733 --------------------------------------
320734 -- 4262811 Initialze MPA Line Number
320735 --------------------------------------
320736 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
320737 
320738 --
320739 
320740 --
320741 OPEN header_cur;
320742 --
320743 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
320744    trace
320745    (p_msg      => 'SQL - FETCH header_cur'
320746    ,p_level    => C_LEVEL_STATEMENT
320747    ,p_module   => l_log_module);
320748 END IF;
320749 --
320750 LOOP
320751 FETCH header_cur BULK COLLECT INTO
320752         l_array_entity_id
320753       , l_array_legal_entity_id
320754       , l_array_entity_code
320755       , l_array_transaction_num
320756       , l_array_event_id
320757       , l_array_class_code
320758       , l_array_event_type
320759       , l_array_event_number
320760       , l_array_event_date
320761       , l_array_transaction_date
320762       , l_array_reference_num_1
320763       , l_array_reference_num_2
320764       , l_array_reference_num_3
320765       , l_array_reference_num_4
320766       , l_array_reference_char_1
320767       , l_array_reference_char_2
320768       , l_array_reference_char_3
320769       , l_array_reference_char_4
320770       , l_array_reference_date_1
320771       , l_array_reference_date_2
320772       , l_array_reference_date_3
320773       , l_array_reference_date_4
320774       , l_array_event_created_by
320775       , l_array_budgetary_control_flag 
320776       , l_array_source_1
320777       , l_array_source_2
320778       , l_array_source_3
320779       , l_array_source_4
320780       , l_array_source_5
320781       , l_array_source_20
320782       , l_array_source_35
320783       , l_array_source_85
320784       , l_array_source_85_meaning
320785       , l_array_source_114
320786       , l_array_source_114_meaning
320787       LIMIT l_rows;
320788 --
320789 IF (C_LEVEL_EVENT >= g_log_level) THEN
320790    trace
320791    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
320792    ,p_level    => C_LEVEL_EVENT
320793    ,p_module   => l_log_module);
320794 END IF;
320795 --
320796 EXIT WHEN l_array_entity_id.COUNT = 0;
320797 
320798 -- initialize arrays
320799 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
320800 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
320801 
320802 --
320803 -- Bug 4458708
320804 --
320805 XLA_AE_LINES_PKG.g_LineNumber := 0;
320806 
320807 
320808 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
320809 g_last_hdr_idx := l_array_event_id.LAST;
320810 --
320811 -- loop for the headers. Each iteration is for each header extract row
320812 -- fetched in header cursor
320813 --
320814 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
320815 
320816 --
320817 -- set event info as cache for other routines to refer event attributes
320818 --
320819 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
320820    (p_application_id           => p_application_id
320821    ,p_primary_ledger_id        => p_primary_ledger_id
320822    ,p_base_ledger_id           => p_base_ledger_id
320823    ,p_target_ledger_id         => p_target_ledger_id
320824    ,p_entity_id                => l_array_entity_id(hdr_idx)
320825    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
320826    ,p_entity_code              => l_array_entity_code(hdr_idx)
320827    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
320828    ,p_event_id                 => l_array_event_id(hdr_idx)
320829    ,p_event_class_code         => l_array_class_code(hdr_idx)
320830    ,p_event_type_code          => l_array_event_type(hdr_idx)
320831    ,p_event_number             => l_array_event_number(hdr_idx)
320832    ,p_event_date               => l_array_event_date(hdr_idx)
320833    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
320834    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
320835    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
320836    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
320837    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
320838    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
320839    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
320840    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
320841    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
320842    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
320843    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
320844    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
320845    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
320846    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
320847    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
320848 
320849 --
320850 -- set the status of entry to C_VALID (0)
320851 --
320852 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
320853 
320854 --
320855 -- initialize a row for ae header
320856 --
320857 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
320858 
320859 l_event_id := l_array_event_id(hdr_idx);
320860 
320861 --
320862 -- storing the hdr_idx for event. May be used by line cursor.
320863 --
320864 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
320865 
320866 --
320867 -- store sources from header extract. This can be improved to
320868 -- store only those sources from header extract that may be used in lines
320869 --
320870 
320871 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
320872 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
320873 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
320874 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
320875 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
320876 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
320877 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
320878 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
320879 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
320880 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
320881 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
320882 
320883 --
320884 -- initilaize the status of ae headers for diffrent balance types
320885 -- the status is initialised to C_NOT_CREATED (2)
320886 --
320887 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
320888 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
320889 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
320890 
320891 --
320892 -- call api to validate and store accounting attributes for header
320893 --
320894 
320895 ------------------------------------------------------------
320896 -- Accrual Reversal : to get date for Standard Source (NONE)
320897 ------------------------------------------------------------
320898 l_acc_rev_gl_date_source := NULL;
320899 
320900      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
320901       l_rec_acct_attrs.array_date_value(1) := 
320902 xla_ae_sources_pkg.GetSystemSourceDate(
320903    p_source_code           => 'XLA_REFERENCE_DATE_1'
320904  , p_source_type_code      => 'Y'
320905  , p_source_application_id =>  602
320906 );
320907      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
320908       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
320909 
320910 
320911 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
320912 
320913 XLA_AE_HEADER_PKG.SetJeCategoryName;
320914 
320915 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
320916 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
320917 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
320918 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
320919 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
320920 
320921 
320922 --
320923 xla_ae_header_pkg.SetHdrDescription(
320924    p_description => Description_1 (
320925    p_application_id => p_application_id 
320926  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
320927  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
320928  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
320929  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
320930  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
320931    )
320932 );
320933 --
320934 
320935 -- No header level analytical criteria
320936 
320937 --
320938 --accounting attribute enhancement, bug 3612931
320939 --
320940 l_trx_reversal_source := SUBSTR(NULL, 1,30);
320941 
320942 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
320943    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
320944 
320945    xla_accounting_err_pkg.build_message
320946       (p_appli_s_name            => 'XLA'
320947       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
320948       ,p_token_1                 => 'ACCT_ATTR_NAME'
320949       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
320950       ,p_token_2                 => 'PRODUCT_NAME'
320951       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
320952       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
320953       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
320954       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
320955 
320956 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
320957    --
320958    -- following sets the accounting attributes needed to reverse
320959    -- accounting for a distributeion
320960    --
320961    xla_ae_lines_pkg.SetTrxReversalAttrs
320962       (p_event_id              => l_event_id
320963       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
320964       ,p_trx_reversal_source   => l_trx_reversal_source);
320965 
320966 END IF;
320967 
320968 
320969 ----------------------------------------------------------------
320970 -- 4262811 -  update the header statuses to invalid in need be
320971 ----------------------------------------------------------------
320972 --
320973 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
320974 
320975 
320976   -----------------------------------------------
320977   -- No accrual reversal for the event class/type
320978   -----------------------------------------------
320979 ----------------------------------------------------------------
320980 
320981 --
320982 -- this ends the header loop iteration for one bulk fetch
320983 --
320984 END LOOP;
320985 
320986 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
320987 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
320988 
320989 --
320990 -- insert dummy rows into lines gt table that were created due to
320991 -- transaction reversals
320992 --
320993 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
320994    l_result := XLA_AE_LINES_PKG.InsertLines;
320995 END IF;
320996 
320997 --
320998 -- reset the temp_line_num for each set of events fetched from header
320999 -- cursor rather than doing it for each new event in line cursor
321000 -- Bug 3939231
321001 --
321002 xla_ae_lines_pkg.g_temp_line_num := 0;
321003 
321004 
321005 
321006 --
321007 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
321008 --
321009 --
321010 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
321011 
321012       trace
321013          (p_msg      => 'SQL - FETCH line_cur'
321014          ,p_level    => C_LEVEL_STATEMENT
321015          ,p_module   => l_log_module);
321016 
321017 END IF;
321018 --
321019 --
321020 LOOP
321021   --
321022   FETCH line_cur BULK COLLECT INTO
321023         l_array_entity_id
321024       , l_array_legal_entity_id
321025       , l_array_entity_code
321026       , l_array_transaction_num
321027       , l_array_event_id
321028       , l_array_class_code
321029       , l_array_event_type
321030       , l_array_event_number
321031       , l_array_event_date
321032       , l_array_transaction_date
321033       , l_array_reference_num_1
321034       , l_array_reference_num_2
321035       , l_array_reference_num_3
321036       , l_array_reference_num_4
321037       , l_array_reference_char_1
321038       , l_array_reference_char_2
321039       , l_array_reference_char_3
321040       , l_array_reference_char_4
321041       , l_array_reference_date_1
321042       , l_array_reference_date_2
321043       , l_array_reference_date_3
321044       , l_array_reference_date_4
321045       , l_array_event_created_by
321046       , l_array_budgetary_control_flag
321047       , l_array_extract_line_num 
321048       , l_array_source_11
321049       , l_array_source_84
321050       , l_array_source_88
321051       , l_array_source_91
321052       , l_array_source_92
321053       , l_array_source_93
321054       , l_array_source_94
321055       , l_array_source_95
321056       , l_array_source_97
321057       , l_array_source_108
321058       LIMIT l_rows;
321059 
321060   --
321061   IF (C_LEVEL_EVENT >= g_log_level) THEN
321062             trace
321063                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
321064                ,p_level    => C_LEVEL_EVENT
321065                ,p_module   => l_log_module);
321066   END IF;
321067   --
321068   EXIT WHEN l_array_entity_id.count = 0;
321069 
321070   XLA_AE_LINES_PKG.g_rec_lines := null;
321071 
321072 --
321073 -- Bug 4458708
321074 --
321075 XLA_AE_LINES_PKG.g_LineNumber := 0;
321076 --
321077 --
321078 
321079 FOR Idx IN 1..l_array_event_id.count LOOP
321080    --
321081    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
321082    --
321083    l_event_id := l_array_event_id(idx);  -- 5648433
321084 
321085    --
321086    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
321087    --
321088 
321089    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
321090              (g_array_event(l_event_id).array_value_num('header_index'))
321091          ,'N'
321092          ) <> 'Y'
321093    THEN
321094       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
321095          trace
321096             (p_msg      => 'Trancaction revesal option is not Y '
321097             ,p_level    => C_LEVEL_STATEMENT
321098             ,p_module   => l_log_module);
321099       END IF;
321100 
321101 --
321102 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
321103 --
321104 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
321105 --
321106 -- set event info as cache for other routines to refer event attributes
321107 --
321108 
321109 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
321110    l_previous_event_id := l_event_id;
321111 
321112    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
321113       (p_application_id           => p_application_id
321114       ,p_primary_ledger_id        => p_primary_ledger_id
321115       ,p_base_ledger_id           => p_base_ledger_id
321116       ,p_target_ledger_id         => p_target_ledger_id
321117       ,p_entity_id                => l_array_entity_id(Idx)
321118       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
321119       ,p_entity_code              => l_array_entity_code(Idx)
321120       ,p_transaction_num          => l_array_transaction_num(Idx)
321121       ,p_event_id                 => l_array_event_id(Idx)
321122       ,p_event_class_code         => l_array_class_code(Idx)
321123       ,p_event_type_code          => l_array_event_type(Idx)
321124       ,p_event_number             => l_array_event_number(Idx)
321125       ,p_event_date               => l_array_event_date(Idx)
321126       ,p_transaction_date         => l_array_transaction_date(Idx)
321127       ,p_reference_num_1          => l_array_reference_num_1(Idx)
321128       ,p_reference_num_2          => l_array_reference_num_2(Idx)
321129       ,p_reference_num_3          => l_array_reference_num_3(Idx)
321130       ,p_reference_num_4          => l_array_reference_num_4(Idx)
321131       ,p_reference_char_1         => l_array_reference_char_1(Idx)
321132       ,p_reference_char_2         => l_array_reference_char_2(Idx)
321133       ,p_reference_char_3         => l_array_reference_char_3(Idx)
321134       ,p_reference_char_4         => l_array_reference_char_4(Idx)
321135       ,p_reference_date_1         => l_array_reference_date_1(Idx)
321136       ,p_reference_date_2         => l_array_reference_date_2(Idx)
321137       ,p_reference_date_3         => l_array_reference_date_3(Idx)
321138       ,p_reference_date_4         => l_array_reference_date_4(Idx)
321139       ,p_event_created_by         => l_array_event_created_by(Idx)
321140       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
321141        --
321142 END IF;
321143 
321144 
321145 
321146 --
321147 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
321148 
321149 l_acct_reversal_source := SUBSTR(NULL, 1,30);
321150 
321151 IF l_continue_with_lines THEN
321152    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
321153       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
321154 
321155       xla_accounting_err_pkg.build_message
321156          (p_appli_s_name            => 'XLA'
321157          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
321158          ,p_token_1                 => 'LINE_NUMBER'
321159          ,p_value_1                 => l_array_extract_line_num(Idx)
321160          ,p_token_2                 => 'PRODUCT_NAME'
321161          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
321162          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
321163          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
321164          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
321165 
321166    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
321167       --
321168       -- following sets the accounting attributes needed to reverse
321169       -- accounting for a distributeion
321170       --
321171 
321172       --
321173       -- 5217187
321174       --
321175       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
321176       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
321177                                        g_array_event(l_event_id).array_value_num('header_index'));
321178       --
321179       --
321180 
321181       -- No reversal code generated
321182 
321183       xla_ae_lines_pkg.SetAcctReversalAttrs
321184          (p_event_id             => l_event_id
321185          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
321186          ,p_calculate_acctd_flag => l_calculate_acctd_flag
321187          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
321188    END IF;
321189 
321190    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
321191        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
321192 
321193 --
321194 AcctLineType_168 (
321195  p_application_id  => p_application_id
321196  ,p_event_id     => l_event_id
321197  ,p_calculate_acctd_flag => l_calculate_acctd_flag
321198  ,p_calculate_g_l_flag => l_calculate_g_l_flag
321199  ,p_actual_flag => l_actual_flag
321200  ,p_balance_type_code => l_balance_type_code
321201  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
321202  
321203  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
321204  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
321205  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
321206  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
321207  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
321208  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
321209  , p_source_84 => l_array_source_84(Idx)
321210  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
321211  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
321212  , p_source_88 => l_array_source_88(Idx)
321213  , p_source_91 => l_array_source_91(Idx)
321214  , p_source_92 => l_array_source_92(Idx)
321215  , p_source_93 => l_array_source_93(Idx)
321216  , p_source_94 => l_array_source_94(Idx)
321217  , p_source_95 => l_array_source_95(Idx)
321218  , p_source_97 => l_array_source_97(Idx)
321219  );
321220 If(l_balance_type_code = 'A') THEN
321221   l_actual_gain_loss_ref := l_gain_or_loss_ref;
321222 END IF;
321223 
321224 --
321225 
321226 
321227 --
321228 AcctLineType_184 (
321229  p_application_id  => p_application_id
321230  ,p_event_id     => l_event_id
321231  ,p_calculate_acctd_flag => l_calculate_acctd_flag
321232  ,p_calculate_g_l_flag => l_calculate_g_l_flag
321233  ,p_actual_flag => l_actual_flag
321234  ,p_balance_type_code => l_balance_type_code
321235  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
321236  
321237  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
321238  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
321239  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
321240  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
321241  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
321242  , p_source_11 => l_array_source_11(Idx)
321243  , p_source_84 => l_array_source_84(Idx)
321244  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
321245  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
321246  , p_source_88 => l_array_source_88(Idx)
321247  , p_source_91 => l_array_source_91(Idx)
321248  , p_source_92 => l_array_source_92(Idx)
321249  , p_source_93 => l_array_source_93(Idx)
321250  , p_source_94 => l_array_source_94(Idx)
321251  , p_source_95 => l_array_source_95(Idx)
321252  , p_source_97 => l_array_source_97(Idx)
321253  );
321254 If(l_balance_type_code = 'A') THEN
321255   l_actual_gain_loss_ref := l_gain_or_loss_ref;
321256 END IF;
321257 
321258 --
321259 
321260 
321261 --
321262 AcctLineType_201 (
321263  p_application_id  => p_application_id
321264  ,p_event_id     => l_event_id
321265  ,p_calculate_acctd_flag => l_calculate_acctd_flag
321266  ,p_calculate_g_l_flag => l_calculate_g_l_flag
321267  ,p_actual_flag => l_actual_flag
321268  ,p_balance_type_code => l_balance_type_code
321269  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
321270  
321271  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
321272  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
321273  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
321274  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
321275  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
321276  , p_source_11 => l_array_source_11(Idx)
321277  , p_source_84 => l_array_source_84(Idx)
321278  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
321279  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
321280  , p_source_88 => l_array_source_88(Idx)
321281  , p_source_91 => l_array_source_91(Idx)
321282  , p_source_92 => l_array_source_92(Idx)
321283  , p_source_93 => l_array_source_93(Idx)
321284  , p_source_94 => l_array_source_94(Idx)
321285  , p_source_95 => l_array_source_95(Idx)
321286  , p_source_97 => l_array_source_97(Idx)
321287  );
321288 If(l_balance_type_code = 'A') THEN
321289   l_actual_gain_loss_ref := l_gain_or_loss_ref;
321290 END IF;
321291 
321292 --
321293 
321294 
321295 --
321296 AcctLineType_244 (
321297  p_application_id  => p_application_id
321298  ,p_event_id     => l_event_id
321299  ,p_calculate_acctd_flag => l_calculate_acctd_flag
321300  ,p_calculate_g_l_flag => l_calculate_g_l_flag
321301  ,p_actual_flag => l_actual_flag
321302  ,p_balance_type_code => l_balance_type_code
321303  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
321304  
321305  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
321306  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
321307  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
321308  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
321309  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
321310  , p_source_11 => l_array_source_11(Idx)
321311  , p_source_84 => l_array_source_84(Idx)
321312  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
321313  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
321314  , p_source_88 => l_array_source_88(Idx)
321315  , p_source_91 => l_array_source_91(Idx)
321316  , p_source_92 => l_array_source_92(Idx)
321317  , p_source_93 => l_array_source_93(Idx)
321318  , p_source_94 => l_array_source_94(Idx)
321319  , p_source_95 => l_array_source_95(Idx)
321320  , p_source_97 => l_array_source_97(Idx)
321321  , p_source_108 => l_array_source_108(Idx)
321322  );
321323 If(l_balance_type_code = 'A') THEN
321324   l_actual_gain_loss_ref := l_gain_or_loss_ref;
321325 END IF;
321326 
321327 --
321328 
321329 
321330 --
321331 AcctLineType_320 (
321332  p_application_id  => p_application_id
321333  ,p_event_id     => l_event_id
321334  ,p_calculate_acctd_flag => l_calculate_acctd_flag
321335  ,p_calculate_g_l_flag => l_calculate_g_l_flag
321336  ,p_actual_flag => l_actual_flag
321337  ,p_balance_type_code => l_balance_type_code
321338  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
321339  
321340  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
321341  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
321342  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
321343  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
321344  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
321345  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
321346  , p_source_84 => l_array_source_84(Idx)
321347  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
321348  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
321349  , p_source_88 => l_array_source_88(Idx)
321350  , p_source_91 => l_array_source_91(Idx)
321351  , p_source_92 => l_array_source_92(Idx)
321352  , p_source_93 => l_array_source_93(Idx)
321353  , p_source_94 => l_array_source_94(Idx)
321354  , p_source_95 => l_array_source_95(Idx)
321355  , p_source_97 => l_array_source_97(Idx)
321356  );
321357 If(l_balance_type_code = 'A') THEN
321358   l_actual_gain_loss_ref := l_gain_or_loss_ref;
321359 END IF;
321360 
321361 --
321362 
321363       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
321364       -- or secondary ledger that has different currency with primary
321365       -- or alc that is calculated by sla
321366       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
321367             (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'))
321368 
321369 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
321370 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
321371           AND (l_actual_flag = 'A')) THEN
321372         XLA_AE_LINES_PKG.CreateGainOrLossLines(
321373           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
321374          ,p_application_id   => p_application_id
321375          ,p_amb_context_code => 'DEFAULT'
321376          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
321377          ,p_event_class_code => C_EVENT_CLASS_CODE
321378          ,p_event_type_code  => C_EVENT_TYPE_CODE
321379          
321380          ,p_gain_ccid        => -1
321381          ,p_loss_ccid        => -1
321382 
321383          ,p_actual_flag      => l_actual_flag
321384          ,p_enc_flag         => null
321385          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
321386          ,p_enc_g_l_ref      => null
321387          );
321388       END IF;
321389    END IF;
321390 END IF;
321391 
321392    ELSE
321393       --
321394       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
321395       --
321396       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
321397          trace
321398             (p_msg      => 'Trancaction revesal option is Y'
321399             ,p_level    => C_LEVEL_STATEMENT
321400             ,p_module   => l_log_module);
321401       END IF;
321402    END IF;
321403 
321404 END LOOP;
321405 l_result := XLA_AE_LINES_PKG.InsertLines ;
321406 end loop;
321407 close line_cur;
321408 
321409 
321410 --
321411 -- insert headers into xla_ae_headers_gt table
321412 --
321413 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
321414 
321415 -- insert into errors table here.
321416 
321417 END LOOP;
321418 
321419 --
321420 -- 4865292
321421 --
321422 -- Compare g_hdr_extract_count with event count in
321423 -- CreateHeadersAndLines.
321424 --
321425 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
321426 
321427 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
321428    trace (p_msg     => '# rows extracted from header extract objects '
321429                     || ' (running total): '
321430                     || g_hdr_extract_count
321431          ,p_level   => C_LEVEL_STATEMENT
321432          ,p_module  => l_log_module);
321433 END IF;
321434 
321435 CLOSE header_cur;
321436 --
321437 
321438 --
321439 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
321440    trace
321441       (p_msg      => 'END of EventType_554'
321442       ,p_level    => C_LEVEL_PROCEDURE
321443       ,p_module   => l_log_module);
321444 END IF;
321445 --
321446 RETURN l_result;
321447 EXCEPTION
321448 WHEN xla_exceptions_pkg.application_exception THEN
321449    
321450 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
321451 
321452    
321453 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
321454 
321455    RAISE;
321456 
321457 WHEN NO_DATA_FOUND THEN
321458 
321459 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
321460 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
321461 
321462 FOR header_record IN header_cur
321463 LOOP
321464     l_array_header_events(header_record.event_id) := header_record.event_id;
321465 END LOOP;
321466 
321467 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
321468 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
321469 
321470 fnd_file.put_line(fnd_file.LOG, '                    ');
321471 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
321472 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
321473 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
321474 
321475 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
321476 LOOP
321477 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
321478 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
321479         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
321480 	END IF;
321481 END LOOP;
321482 
321483 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
321484 fnd_file.put_line(fnd_file.LOG, '                    ');
321485 
321486 
321487 xla_exceptions_pkg.raise_message
321488       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_554');
321489 
321490 
321491 WHEN OTHERS THEN
321492    xla_exceptions_pkg.raise_message
321493       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_554');
321494 END EventType_554;
321495 --
321496 
321497 ---------------------------------------
321498 --
321499 -- PRIVATE PROCEDURE
321500 --         insert_sources_555
321501 --
321502 ----------------------------------------
321503 --
321504 PROCEDURE insert_sources_555(
321505                                 p_target_ledger_id       IN NUMBER
321506                               , p_language               IN VARCHAR2
321507                               , p_sla_ledger_id          IN NUMBER
321508                               , p_pad_start_date         IN DATE
321509                               , p_pad_end_date           IN DATE
321510                          )
321511 IS
321512 
321513 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_TP';
321514 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
321515 p_apps_owner                   VARCHAR2(30);
321516 l_log_module                   VARCHAR2(240);
321517 BEGIN
321518 IF g_log_enabled THEN
321519       l_log_module := C_DEFAULT_MODULE||'.insert_sources_555';
321520 END IF;
321521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
321522 
321523       trace
321524          (p_msg      => 'BEGIN of insert_sources_555'
321525          ,p_level    => C_LEVEL_PROCEDURE
321526          ,p_module   => l_log_module);
321527 
321528 END IF;
321529 
321530 -- select APPS owner
321531 SELECT oracle_username
321532   INTO p_apps_owner
321533   FROM fnd_oracle_userid
321534  WHERE read_only_flag = 'U'
321535 ;
321536 
321537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
321538       trace
321539          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
321540                         ' - p_language = '||p_language||
321541                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
321542                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
321543                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
321544                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
321545          ,p_level    => C_LEVEL_STATEMENT
321546          ,p_module   => l_log_module);
321547 END IF;
321548 
321549 
321550 --
321551 INSERT INTO xla_diag_sources --hdr1
321552 (
321553         event_id
321554       , ledger_id
321555       , sla_ledger_id
321556       , description_language
321557       , object_name
321558       , object_type_code
321559       , line_number
321560       , source_application_id
321561       , source_type_code
321562       , source_code
321563       , source_value
321564       , source_meaning
321565       , created_by
321566       , creation_date
321567       , last_update_date
321568       , last_updated_by
321569       , last_update_login
321570       , program_update_date
321571       , program_application_id
321572       , program_id
321573       , request_id
321574 )
321575 SELECT
321576         event_id
321577       , p_target_ledger_id
321578       , p_sla_ledger_id
321579       , p_language
321580       , object_name
321581       , object_type_code
321582       , line_number
321583       , source_application_id
321584       , source_type_code
321585       , source_code
321586       , SUBSTR(source_value ,1,1996)
321587       , SUBSTR(source_meaning,1,200)
321588       , xla_environment_pkg.g_Usr_Id
321589       , TRUNC(SYSDATE)
321590       , TRUNC(SYSDATE)
321591       , xla_environment_pkg.g_Usr_Id
321592       , xla_environment_pkg.g_Login_Id
321593       , TRUNC(SYSDATE)
321594       , xla_environment_pkg.g_Prog_Appl_Id
321595       , xla_environment_pkg.g_Prog_Id
321596       , xla_environment_pkg.g_Req_Id
321597   FROM (
321598        SELECT xet.event_id                  event_id
321599             , 0                             line_number
321600             , CASE r
321601                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
321602                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
321603                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
321604                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
321605                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
321606                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
321607                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
321608                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
321609                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
321610                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
321611                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
321612                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
321613                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
321614                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
321615                 
321616                ELSE null
321617               END                           object_name
321618             , CASE r
321619                 WHEN 1 THEN 'HEADER' 
321620                 WHEN 2 THEN 'HEADER' 
321621                 WHEN 3 THEN 'HEADER' 
321622                 WHEN 4 THEN 'HEADER' 
321623                 WHEN 5 THEN 'HEADER' 
321624                 WHEN 6 THEN 'HEADER' 
321625                 WHEN 7 THEN 'HEADER' 
321626                 WHEN 8 THEN 'HEADER' 
321627                 WHEN 9 THEN 'HEADER' 
321628                 WHEN 10 THEN 'HEADER' 
321629                 WHEN 11 THEN 'HEADER' 
321630                 WHEN 12 THEN 'HEADER' 
321631                 WHEN 13 THEN 'HEADER' 
321632                 WHEN 14 THEN 'HEADER' 
321633                 
321634                 ELSE null
321635               END                           object_type_code
321636             , CASE r
321637                 WHEN 1 THEN '707' 
321638                 WHEN 2 THEN '707' 
321639                 WHEN 3 THEN '707' 
321640                 WHEN 4 THEN '707' 
321641                 WHEN 5 THEN '707' 
321642                 WHEN 6 THEN '707' 
321643                 WHEN 7 THEN '707' 
321644                 WHEN 8 THEN '707' 
321645                 WHEN 9 THEN '707' 
321646                 WHEN 10 THEN '707' 
321647                 WHEN 11 THEN '707' 
321648                 WHEN 12 THEN '707' 
321649                 WHEN 13 THEN '707' 
321650                 WHEN 14 THEN '707' 
321651                 
321652                 ELSE null
321653               END                           source_application_id
321654             , 'S'             source_type_code
321655             , CASE r
321656                 WHEN 1 THEN 'TRANSACTION_ID' 
321657                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
321658                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
321659                 WHEN 4 THEN 'TRANSACTION_UOM' 
321660                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
321661                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
321662                 WHEN 7 THEN 'INTERORG_PAYABLES_ACCOUNT' 
321663                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
321664                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
321665                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
321666                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
321667                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
321668                 WHEN 13 THEN 'DISTRIBUTION_TYPE' 
321669                 WHEN 14 THEN 'TRANSFER_TO_GL_INDICATOR' 
321670                 
321671                 ELSE null
321672               END                           source_code
321673             , CASE r
321674                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
321675                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
321676                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
321677                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
321678                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
321679                 WHEN 6 THEN TO_CHAR(h4.INV_TXN_DISTRIBUTION_ACCT)
321680                 WHEN 7 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
321681                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
321682                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
321683                 WHEN 10 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
321684                 WHEN 11 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
321685                 WHEN 12 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
321686                 WHEN 13 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
321687                 WHEN 14 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
321688                 
321689                 ELSE null
321690               END                           source_value
321691             , CASE r
321692                 WHEN 13 THEN fvl85.meaning
321693                 WHEN 14 THEN fvl114.meaning
321694                 
321695                 ELSE null
321696               END               source_meaning
321697         FROM xla_events_gt     xet  
321698       , CST_XLA_INTERORG_PARAMS_REF_V  h1
321699       , CST_XLA_INV_HEADERS_V  h2
321700       , CST_XLA_INV_REF_V  h4
321701       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
321702       , CST_XLA_INV_TXN_TYPES_REF_V  h6
321703       , CST_XLA_PLA_CATEGORY_REF_V  h7
321704   , fnd_lookup_values    fvl85
321705   , fnd_lookup_values    fvl114
321706             ,(select rownum r from all_objects where rownum <= 14 and owner = p_apps_owner)
321707        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
321708          AND xet.event_type_code = C_EVENT_TYPE_CODE
321709             AND h2.event_id = xet.event_id
321710   AND h1.event_id (+) = h2.event_id
321711  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
321712 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
321713 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
321714   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
321715   AND fvl85.view_application_id(+) = 700
321716   AND fvl85.language(+)            = USERENV('LANG')
321717      AND fvl114.lookup_type(+)         = 'YES_NO'
321718   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
321719   AND fvl114.view_application_id(+) = 0
321720   AND fvl114.language(+)            = USERENV('LANG')
321721   
321722 )
321723 ;
321724 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
321725 
321726       trace
321727          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
321728          ,p_level    => C_LEVEL_STATEMENT
321729          ,p_module   => l_log_module);
321730 
321731 END IF;
321732 --
321733 
321734 
321735 
321736 --
321737 INSERT INTO xla_diag_sources --line1
321738 (
321739         event_id
321740       , ledger_id
321741       , sla_ledger_id
321742       , description_language
321743       , object_name
321744       , object_type_code
321745       , line_number
321746       , source_application_id
321747       , source_type_code
321748       , source_code
321749       , source_value
321750       , source_meaning
321751       , created_by
321752       , creation_date
321753       , last_update_date
321754       , last_updated_by
321755       , last_update_login
321756       , program_update_date
321757       , program_application_id
321758       , program_id
321759       , request_id
321760 )
321761 SELECT  event_id
321762       , p_target_ledger_id
321763       , p_sla_ledger_id
321764       , p_language
321765       , object_name
321766       , object_type_code
321767       , line_number
321768       , source_application_id
321769       , source_type_code
321770       , source_code
321771       , SUBSTR(source_value,1,1996)
321772       , SUBSTR(source_meaning,1,200)
321773       , xla_environment_pkg.g_Usr_Id
321774       , TRUNC(SYSDATE)
321775       , TRUNC(SYSDATE)
321776       , xla_environment_pkg.g_Usr_Id
321777       , xla_environment_pkg.g_Login_Id
321778       , TRUNC(SYSDATE)
321779       , xla_environment_pkg.g_Prog_Appl_Id
321780       , xla_environment_pkg.g_Prog_Id
321781       , xla_environment_pkg.g_Req_Id
321782   FROM (
321783        SELECT xet.event_id                  event_id
321784             , l3.line_number                 line_number
321785             , CASE r
321786                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
321787                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
321788                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
321789                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
321790                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
321791                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
321792                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
321793                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
321794                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
321795                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
321796                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
321797                 
321798                ELSE null
321799               END                           object_name
321800             , CASE r
321801                 WHEN 1 THEN 'LINE' 
321802                 WHEN 2 THEN 'LINE' 
321803                 WHEN 3 THEN 'LINE' 
321804                 WHEN 4 THEN 'LINE' 
321805                 WHEN 5 THEN 'LINE' 
321806                 WHEN 6 THEN 'LINE' 
321807                 WHEN 7 THEN 'LINE' 
321808                 WHEN 8 THEN 'LINE' 
321809                 WHEN 9 THEN 'LINE' 
321810                 WHEN 10 THEN 'LINE' 
321811                 WHEN 11 THEN 'LINE' 
321812                 
321813                 ELSE null
321814               END                           object_type_code
321815             , CASE r
321816                 WHEN 1 THEN '707' 
321817                 WHEN 2 THEN '707' 
321818                 WHEN 3 THEN '707' 
321819                 WHEN 4 THEN '707' 
321820                 WHEN 5 THEN '707' 
321821                 WHEN 6 THEN '707' 
321822                 WHEN 7 THEN '707' 
321823                 WHEN 8 THEN '707' 
321824                 WHEN 9 THEN '707' 
321825                 WHEN 10 THEN '707' 
321826                 WHEN 11 THEN '707' 
321827                 
321828                 ELSE null
321829               END                           source_application_id
321830             , 'S'             source_type_code
321831             , CASE r
321832                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
321833                 WHEN 2 THEN 'COST_ELEMENT_ID' 
321834                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
321835                 WHEN 4 THEN 'CURRENCY_CODE' 
321836                 WHEN 5 THEN 'ENTERED_AMOUNT' 
321837                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
321838                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
321839                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
321840                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
321841                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
321842                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
321843                 
321844                 ELSE null
321845               END                           source_code
321846             , CASE r
321847                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
321848                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
321849                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
321850                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
321851                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
321852                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
321853                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
321854                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
321855                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
321856                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
321857                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
321858                 
321859                 ELSE null
321860               END                           source_value
321861             , CASE r
321862                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
321863                           1009615
321864                          ,TO_CHAR(l3.COST_ELEMENT_ID)
321865                          ,'COST_ELEMENT_ID'
321866                          ,'S'
321867                          ,707)
321868                 
321869                 ELSE null
321870               END               source_meaning
321871          FROM  xla_events_gt     xet  
321872         , CST_XLA_INV_LINES_V  l3
321873             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
321874         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
321875           AND xet.event_type_code = C_EVENT_TYPE_CODE
321876             AND l3.event_id          = xet.event_id
321877 
321878 )
321879 ;
321880 --
321881 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
321882 
321883       trace
321884          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
321885          ,p_level    => C_LEVEL_STATEMENT
321886          ,p_module   => l_log_module);
321887 
321888 END IF;
321889 
321890 
321891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
321892       trace
321893          (p_msg      => 'END of insert_sources_555'
321894          ,p_level    => C_LEVEL_PROCEDURE
321895          ,p_module   => l_log_module);
321896 END IF;
321897 EXCEPTION
321898   WHEN xla_exceptions_pkg.application_exception THEN
321899       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
321900             trace
321901                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
321902                ,p_level    => C_LEVEL_EXCEPTION
321903                ,p_module   => l_log_module);
321904       END IF;
321905       RAISE;
321906   WHEN OTHERS THEN
321907       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
321908             trace
321909                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
321910                ,p_level    => C_LEVEL_EXCEPTION
321911                ,p_module   => l_log_module);
321912        END IF;
321913        xla_exceptions_pkg.raise_message
321914            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_555');
321915 END insert_sources_555;
321916 --
321917 
321918 ---------------------------------------
321919 --
321920 -- PRIVATE FUNCTION
321921 --         EventType_555
321922 --
321923 ----------------------------------------
321924 --
321925 FUNCTION EventType_555
321926        (p_application_id         IN NUMBER
321927        ,p_base_ledger_id         IN NUMBER
321928        ,p_target_ledger_id       IN NUMBER
321929        ,p_language               IN VARCHAR2
321930        ,p_currency_code          IN VARCHAR2
321931        ,p_sla_ledger_id          IN NUMBER
321932        ,p_pad_start_date         IN DATE
321933        ,p_pad_end_date           IN DATE
321934        ,p_primary_ledger_id      IN NUMBER)
321935 RETURN BOOLEAN IS
321936 --
321937 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_TP';
321938 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
321939 
321940 l_calculate_acctd_flag   VARCHAR2(1) :='N';
321941 l_calculate_g_l_flag     VARCHAR2(1) :='N';
321942 --
321943 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321944 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321945 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
321946 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
321947 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321948 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
321949 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
321950 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321951 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
321952 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
321953 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321954 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321955 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321956 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
321957 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
321958 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
321959 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
321960 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
321961 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
321962 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
321963 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
321964 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
321965 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
321966 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
321967 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
321968 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
321969 
321970 l_event_id                             NUMBER;
321971 l_previous_event_id                    NUMBER;
321972 l_first_event_id                       NUMBER;
321973 l_last_event_id                        NUMBER;
321974 
321975 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
321976 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
321977 --
321978 --
321979 l_result                    BOOLEAN := TRUE;
321980 l_rows                      NUMBER  := 1000;
321981 l_event_type_name           VARCHAR2(80) := 'Internal Order Receipt into Expense, Transfer Pricing';
321982 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
321983 l_description               VARCHAR2(4000);
321984 l_transaction_reversal      NUMBER;
321985 l_ae_header_id              NUMBER;
321986 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
321987 l_log_module                VARCHAR2(240);
321988 --
321989 l_acct_reversal_source      VARCHAR2(30);
321990 l_trx_reversal_source       VARCHAR2(30);
321991 
321992 l_continue_with_lines       BOOLEAN := TRUE;
321993 --
321994 l_acc_rev_gl_date_source    DATE;                      -- 4262811
321995 --
321996 type t_array_event_id is table of number index by binary_integer;
321997 
321998 l_rec_array_event                    t_rec_array_event;
321999 l_null_rec_array_event               t_rec_array_event;
322000 l_array_ae_header_id                 xla_number_array_type;
322001 l_actual_flag                        VARCHAR2(1) := NULL;
322002 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
322003 l_balance_type_code                  VARCHAR2(1) :=NULL;
322004 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
322005 
322006 --
322007 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
322008 --
322009 
322010 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
322011 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
322012 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
322013 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
322014 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
322015 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
322016 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
322017 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
322018 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
322019 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
322020 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
322021 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
322022 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
322023 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
322024 
322025 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
322026 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
322027 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
322028 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
322029 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
322030 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
322031 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
322032 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
322033 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
322034 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
322035 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
322036 
322037 l_array_source_1              t_array_source_1;
322038 l_array_source_2              t_array_source_2;
322039 l_array_source_3              t_array_source_3;
322040 l_array_source_4              t_array_source_4;
322041 l_array_source_5              t_array_source_5;
322042 l_array_source_20              t_array_source_20;
322043 l_array_source_35              t_array_source_35;
322044 l_array_source_41              t_array_source_41;
322045 l_array_source_42              t_array_source_42;
322046 l_array_source_43              t_array_source_43;
322047 l_array_source_44              t_array_source_44;
322048 l_array_source_45              t_array_source_45;
322049 l_array_source_85              t_array_source_85;
322050 l_array_source_85_meaning      t_array_lookup_meaning;
322051 l_array_source_114              t_array_source_114;
322052 l_array_source_114_meaning      t_array_lookup_meaning;
322053 
322054 l_array_source_11      t_array_source_11;
322055 l_array_source_15      t_array_source_15;
322056 l_array_source_84      t_array_source_84;
322057 l_array_source_88      t_array_source_88;
322058 l_array_source_91      t_array_source_91;
322059 l_array_source_92      t_array_source_92;
322060 l_array_source_93      t_array_source_93;
322061 l_array_source_94      t_array_source_94;
322062 l_array_source_95      t_array_source_95;
322063 l_array_source_97      t_array_source_97;
322064 l_array_source_108      t_array_source_108;
322065 
322066 --
322067 CURSOR header_cur
322068 IS
322069 SELECT /*+ leading(xet) cardinality(xet,1) */
322070 -- Event Type Code: EXP_REQ_RCPT_TP
322071 -- Event Class Code: INT_ORDER_TO_EXP
322072     xet.entity_id
322073   , xet.legal_entity_id
322074   , xet.entity_code
322075   , xet.transaction_number
322076   , xet.event_id
322077   , xet.event_class_code
322078   , xet.event_type_code
322079   , xet.event_number
322080   , xet.event_date
322081   , xet.transaction_date
322082   , xet.reference_num_1
322083   , xet.reference_num_2
322084   , xet.reference_num_3
322085   , xet.reference_num_4
322086   , xet.reference_char_1
322087   , xet.reference_char_2
322088   , xet.reference_char_3
322089   , xet.reference_char_4
322090   , xet.reference_date_1
322091   , xet.reference_date_2
322092   , xet.reference_date_3
322093   , xet.reference_date_4
322094   , xet.event_created_by
322095   , xet.budgetary_control_flag 
322096   , h2.TRANSACTION_ID    source_1
322097   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
322098   , h4.TRANSACTION_QUANTITY    source_3
322099   , h4.TRANSACTION_UOM    source_4
322100   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
322101   , h4.INV_TXN_DISTRIBUTION_ACCT    source_20
322102   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
322103   , h7.PLA_MATERIAL_ACCOUNT    source_41
322104   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
322105   , h7.PLA_RESOURCE_ACCOUNT    source_43
322106   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
322107   , h7.PLA_OVERHEAD_ACCOUNT    source_45
322108   , h2.DISTRIBUTION_TYPE    source_85
322109   , fvl85.meaning   source_85_meaning
322110   , h2.TRANSFER_TO_GL_INDICATOR    source_114
322111   , fvl114.meaning   source_114_meaning
322112   FROM xla_events_gt     xet 
322113   , CST_XLA_INTERORG_PARAMS_REF_V  h1
322114   , CST_XLA_INV_HEADERS_V  h2
322115   , CST_XLA_INV_REF_V  h4
322116   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
322117   , CST_XLA_INV_TXN_TYPES_REF_V  h6
322118   , CST_XLA_PLA_CATEGORY_REF_V  h7
322119   , fnd_lookup_values    fvl85
322120   , fnd_lookup_values    fvl114
322121  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
322122    and xet.event_type_code = C_EVENT_TYPE_CODE
322123    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
322124   AND h1.event_id (+) = h2.event_id
322125  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
322126 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
322127 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
322128   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
322129   AND fvl85.view_application_id(+) = 700
322130   AND fvl85.language(+)            = USERENV('LANG')
322131      AND fvl114.lookup_type(+)         = 'YES_NO'
322132   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
322133   AND fvl114.view_application_id(+) = 0
322134   AND fvl114.language(+)            = USERENV('LANG')
322135   
322136  ORDER BY event_id
322137 ;
322138 
322139 
322140 --
322141 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
322142 IS
322143 SELECT /*+ leading(xet) cardinality(xet,1) */
322144 -- Event Type Code: EXP_REQ_RCPT_TP
322145 -- Event Class Code: INT_ORDER_TO_EXP
322146     xet.entity_id
322147    ,xet.legal_entity_id
322148    ,xet.entity_code
322149    ,xet.transaction_number
322150    ,xet.event_id
322151    ,xet.event_class_code
322152    ,xet.event_type_code
322153    ,xet.event_number
322154    ,xet.event_date
322155    ,xet.transaction_date
322156    ,xet.reference_num_1
322157    ,xet.reference_num_2
322158    ,xet.reference_num_3
322159    ,xet.reference_num_4
322160    ,xet.reference_char_1
322161    ,xet.reference_char_2
322162    ,xet.reference_char_3
322163    ,xet.reference_char_4
322164    ,xet.reference_date_1
322165    ,xet.reference_date_2
322166    ,xet.reference_date_3
322167    ,xet.reference_date_4
322168    ,xet.event_created_by
322169    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
322170   , l3.CODE_COMBINATION_ID    source_11
322171   , l3.COST_ELEMENT_ID    source_15
322172   , l3.DISTRIBUTION_IDENTIFIER    source_84
322173   , l3.CURRENCY_CODE    source_88
322174   , l3.ENTERED_AMOUNT    source_91
322175   , l3.CURRENCY_CONVERSION_DATE    source_92
322176   , l3.CURRENCY_CONVERSION_RATE    source_93
322177   , l3.CURRENCY_CONVERSION_TYPE    source_94
322178   , l3.ACCOUNTED_AMOUNT    source_95
322179   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
322180   , l3.L_ORGANIZATION_CODE    source_108
322181   FROM xla_events_gt     xet 
322182   , CST_XLA_INV_LINES_V  l3
322183  WHERE xet.event_id between x_first_event_id and x_last_event_id
322184    and xet.event_date between p_pad_start_date and p_pad_end_date
322185    and xet.event_type_code = C_EVENT_TYPE_CODE
322186    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
322187 ;
322188 
322189 --
322190 BEGIN
322191 IF g_log_enabled THEN
322192    l_log_module := C_DEFAULT_MODULE||'.EventType_555';
322193 END IF;
322194 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
322195    trace
322196       (p_msg      => 'BEGIN of EventType_555'
322197       ,p_level    => C_LEVEL_PROCEDURE
322198       ,p_module   => l_log_module);
322199 END IF;
322200 
322201 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
322202    trace
322203       (p_msg      => 'p_application_id = '||p_application_id||
322204                      ' - p_base_ledger_id = '||p_base_ledger_id||
322205                      ' - p_target_ledger_id  = '||p_target_ledger_id||
322206                      ' - p_language = '||p_language||
322207                      ' - p_currency_code = '||p_currency_code||
322208                      ' - p_sla_ledger_id = '||p_sla_ledger_id
322209       ,p_level    => C_LEVEL_STATEMENT
322210       ,p_module   => l_log_module);
322211 END IF;
322212 --
322213 -- initialze arrays
322214 --
322215 g_array_event.DELETE;
322216 l_rec_array_event := l_null_rec_array_event;
322217 --
322218 --------------------------------------
322219 -- 4262811 Initialze MPA Line Number
322220 --------------------------------------
322221 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
322222 
322223 --
322224 
322225 --
322226 OPEN header_cur;
322227 --
322228 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
322229    trace
322230    (p_msg      => 'SQL - FETCH header_cur'
322231    ,p_level    => C_LEVEL_STATEMENT
322232    ,p_module   => l_log_module);
322233 END IF;
322234 --
322235 LOOP
322236 FETCH header_cur BULK COLLECT INTO
322237         l_array_entity_id
322238       , l_array_legal_entity_id
322239       , l_array_entity_code
322240       , l_array_transaction_num
322241       , l_array_event_id
322242       , l_array_class_code
322243       , l_array_event_type
322244       , l_array_event_number
322245       , l_array_event_date
322246       , l_array_transaction_date
322247       , l_array_reference_num_1
322248       , l_array_reference_num_2
322249       , l_array_reference_num_3
322250       , l_array_reference_num_4
322251       , l_array_reference_char_1
322252       , l_array_reference_char_2
322253       , l_array_reference_char_3
322254       , l_array_reference_char_4
322255       , l_array_reference_date_1
322256       , l_array_reference_date_2
322257       , l_array_reference_date_3
322258       , l_array_reference_date_4
322259       , l_array_event_created_by
322260       , l_array_budgetary_control_flag 
322261       , l_array_source_1
322262       , l_array_source_2
322263       , l_array_source_3
322264       , l_array_source_4
322265       , l_array_source_5
322266       , l_array_source_20
322267       , l_array_source_35
322268       , l_array_source_41
322269       , l_array_source_42
322270       , l_array_source_43
322271       , l_array_source_44
322272       , l_array_source_45
322273       , l_array_source_85
322274       , l_array_source_85_meaning
322275       , l_array_source_114
322276       , l_array_source_114_meaning
322277       LIMIT l_rows;
322278 --
322279 IF (C_LEVEL_EVENT >= g_log_level) THEN
322280    trace
322281    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
322282    ,p_level    => C_LEVEL_EVENT
322283    ,p_module   => l_log_module);
322284 END IF;
322285 --
322286 EXIT WHEN l_array_entity_id.COUNT = 0;
322287 
322288 -- initialize arrays
322289 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
322290 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
322291 
322292 --
322293 -- Bug 4458708
322294 --
322295 XLA_AE_LINES_PKG.g_LineNumber := 0;
322296 
322297 
322298 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
322299 g_last_hdr_idx := l_array_event_id.LAST;
322300 --
322301 -- loop for the headers. Each iteration is for each header extract row
322302 -- fetched in header cursor
322303 --
322304 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
322305 
322306 --
322307 -- set event info as cache for other routines to refer event attributes
322308 --
322309 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
322310    (p_application_id           => p_application_id
322311    ,p_primary_ledger_id        => p_primary_ledger_id
322312    ,p_base_ledger_id           => p_base_ledger_id
322313    ,p_target_ledger_id         => p_target_ledger_id
322314    ,p_entity_id                => l_array_entity_id(hdr_idx)
322315    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
322316    ,p_entity_code              => l_array_entity_code(hdr_idx)
322317    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
322318    ,p_event_id                 => l_array_event_id(hdr_idx)
322319    ,p_event_class_code         => l_array_class_code(hdr_idx)
322320    ,p_event_type_code          => l_array_event_type(hdr_idx)
322321    ,p_event_number             => l_array_event_number(hdr_idx)
322322    ,p_event_date               => l_array_event_date(hdr_idx)
322323    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
322324    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
322325    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
322326    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
322327    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
322328    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
322329    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
322330    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
322331    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
322332    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
322333    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
322334    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
322335    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
322336    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
322337    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
322338 
322339 --
322340 -- set the status of entry to C_VALID (0)
322341 --
322342 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
322343 
322344 --
322345 -- initialize a row for ae header
322346 --
322347 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
322348 
322349 l_event_id := l_array_event_id(hdr_idx);
322350 
322351 --
322352 -- storing the hdr_idx for event. May be used by line cursor.
322353 --
322354 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
322355 
322356 --
322357 -- store sources from header extract. This can be improved to
322358 -- store only those sources from header extract that may be used in lines
322359 --
322360 
322361 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
322362 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
322363 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
322364 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
322365 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
322366 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
322367 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
322368 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
322369 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
322370 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
322371 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
322372 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
322373 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
322374 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
322375 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
322376 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
322377 
322378 --
322379 -- initilaize the status of ae headers for diffrent balance types
322380 -- the status is initialised to C_NOT_CREATED (2)
322381 --
322382 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
322383 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
322384 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
322385 
322386 --
322387 -- call api to validate and store accounting attributes for header
322388 --
322389 
322390 ------------------------------------------------------------
322391 -- Accrual Reversal : to get date for Standard Source (NONE)
322392 ------------------------------------------------------------
322393 l_acc_rev_gl_date_source := NULL;
322394 
322395      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
322396       l_rec_acct_attrs.array_date_value(1) := 
322397 xla_ae_sources_pkg.GetSystemSourceDate(
322398    p_source_code           => 'XLA_REFERENCE_DATE_1'
322399  , p_source_type_code      => 'Y'
322400  , p_source_application_id =>  602
322401 );
322402      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
322403       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
322404 
322405 
322406 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
322407 
322408 XLA_AE_HEADER_PKG.SetJeCategoryName;
322409 
322410 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
322411 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
322412 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
322413 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
322414 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
322415 
322416 
322417 --
322418 xla_ae_header_pkg.SetHdrDescription(
322419    p_description => Description_1 (
322420    p_application_id => p_application_id 
322421  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
322422  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
322423  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
322424  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
322425  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
322426    )
322427 );
322428 --
322429 
322430 -- No header level analytical criteria
322431 
322432 --
322433 --accounting attribute enhancement, bug 3612931
322434 --
322435 l_trx_reversal_source := SUBSTR(NULL, 1,30);
322436 
322437 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
322438    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
322439 
322440    xla_accounting_err_pkg.build_message
322441       (p_appli_s_name            => 'XLA'
322442       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
322443       ,p_token_1                 => 'ACCT_ATTR_NAME'
322444       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
322445       ,p_token_2                 => 'PRODUCT_NAME'
322446       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
322447       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
322448       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
322449       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
322450 
322451 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
322452    --
322453    -- following sets the accounting attributes needed to reverse
322454    -- accounting for a distributeion
322455    --
322456    xla_ae_lines_pkg.SetTrxReversalAttrs
322457       (p_event_id              => l_event_id
322458       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
322459       ,p_trx_reversal_source   => l_trx_reversal_source);
322460 
322461 END IF;
322462 
322463 
322464 ----------------------------------------------------------------
322465 -- 4262811 -  update the header statuses to invalid in need be
322466 ----------------------------------------------------------------
322467 --
322468 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
322469 
322470 
322471   -----------------------------------------------
322472   -- No accrual reversal for the event class/type
322473   -----------------------------------------------
322474 ----------------------------------------------------------------
322475 
322476 --
322477 -- this ends the header loop iteration for one bulk fetch
322478 --
322479 END LOOP;
322480 
322481 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
322482 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
322483 
322484 --
322485 -- insert dummy rows into lines gt table that were created due to
322486 -- transaction reversals
322487 --
322488 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
322489    l_result := XLA_AE_LINES_PKG.InsertLines;
322490 END IF;
322491 
322492 --
322493 -- reset the temp_line_num for each set of events fetched from header
322494 -- cursor rather than doing it for each new event in line cursor
322495 -- Bug 3939231
322496 --
322497 xla_ae_lines_pkg.g_temp_line_num := 0;
322498 
322499 
322500 
322501 --
322502 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
322503 --
322504 --
322505 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
322506 
322507       trace
322508          (p_msg      => 'SQL - FETCH line_cur'
322509          ,p_level    => C_LEVEL_STATEMENT
322510          ,p_module   => l_log_module);
322511 
322512 END IF;
322513 --
322514 --
322515 LOOP
322516   --
322517   FETCH line_cur BULK COLLECT INTO
322518         l_array_entity_id
322519       , l_array_legal_entity_id
322520       , l_array_entity_code
322521       , l_array_transaction_num
322522       , l_array_event_id
322523       , l_array_class_code
322524       , l_array_event_type
322525       , l_array_event_number
322526       , l_array_event_date
322527       , l_array_transaction_date
322528       , l_array_reference_num_1
322529       , l_array_reference_num_2
322530       , l_array_reference_num_3
322531       , l_array_reference_num_4
322532       , l_array_reference_char_1
322533       , l_array_reference_char_2
322534       , l_array_reference_char_3
322535       , l_array_reference_char_4
322536       , l_array_reference_date_1
322537       , l_array_reference_date_2
322538       , l_array_reference_date_3
322539       , l_array_reference_date_4
322540       , l_array_event_created_by
322541       , l_array_budgetary_control_flag
322542       , l_array_extract_line_num 
322543       , l_array_source_11
322544       , l_array_source_15
322545       , l_array_source_84
322546       , l_array_source_88
322547       , l_array_source_91
322548       , l_array_source_92
322549       , l_array_source_93
322550       , l_array_source_94
322551       , l_array_source_95
322552       , l_array_source_97
322553       , l_array_source_108
322554       LIMIT l_rows;
322555 
322556   --
322557   IF (C_LEVEL_EVENT >= g_log_level) THEN
322558             trace
322559                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
322560                ,p_level    => C_LEVEL_EVENT
322561                ,p_module   => l_log_module);
322562   END IF;
322563   --
322564   EXIT WHEN l_array_entity_id.count = 0;
322565 
322566   XLA_AE_LINES_PKG.g_rec_lines := null;
322567 
322568 --
322569 -- Bug 4458708
322570 --
322571 XLA_AE_LINES_PKG.g_LineNumber := 0;
322572 --
322573 --
322574 
322575 FOR Idx IN 1..l_array_event_id.count LOOP
322576    --
322577    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
322578    --
322579    l_event_id := l_array_event_id(idx);  -- 5648433
322580 
322581    --
322582    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
322583    --
322584 
322585    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
322586              (g_array_event(l_event_id).array_value_num('header_index'))
322587          ,'N'
322588          ) <> 'Y'
322589    THEN
322590       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
322591          trace
322592             (p_msg      => 'Trancaction revesal option is not Y '
322593             ,p_level    => C_LEVEL_STATEMENT
322594             ,p_module   => l_log_module);
322595       END IF;
322596 
322597 --
322598 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
322599 --
322600 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
322601 --
322602 -- set event info as cache for other routines to refer event attributes
322603 --
322604 
322605 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
322606    l_previous_event_id := l_event_id;
322607 
322608    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
322609       (p_application_id           => p_application_id
322610       ,p_primary_ledger_id        => p_primary_ledger_id
322611       ,p_base_ledger_id           => p_base_ledger_id
322612       ,p_target_ledger_id         => p_target_ledger_id
322613       ,p_entity_id                => l_array_entity_id(Idx)
322614       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
322615       ,p_entity_code              => l_array_entity_code(Idx)
322616       ,p_transaction_num          => l_array_transaction_num(Idx)
322617       ,p_event_id                 => l_array_event_id(Idx)
322618       ,p_event_class_code         => l_array_class_code(Idx)
322619       ,p_event_type_code          => l_array_event_type(Idx)
322620       ,p_event_number             => l_array_event_number(Idx)
322621       ,p_event_date               => l_array_event_date(Idx)
322622       ,p_transaction_date         => l_array_transaction_date(Idx)
322623       ,p_reference_num_1          => l_array_reference_num_1(Idx)
322624       ,p_reference_num_2          => l_array_reference_num_2(Idx)
322625       ,p_reference_num_3          => l_array_reference_num_3(Idx)
322626       ,p_reference_num_4          => l_array_reference_num_4(Idx)
322627       ,p_reference_char_1         => l_array_reference_char_1(Idx)
322628       ,p_reference_char_2         => l_array_reference_char_2(Idx)
322629       ,p_reference_char_3         => l_array_reference_char_3(Idx)
322630       ,p_reference_char_4         => l_array_reference_char_4(Idx)
322631       ,p_reference_date_1         => l_array_reference_date_1(Idx)
322632       ,p_reference_date_2         => l_array_reference_date_2(Idx)
322633       ,p_reference_date_3         => l_array_reference_date_3(Idx)
322634       ,p_reference_date_4         => l_array_reference_date_4(Idx)
322635       ,p_event_created_by         => l_array_event_created_by(Idx)
322636       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
322637        --
322638 END IF;
322639 
322640 
322641 
322642 --
322643 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
322644 
322645 l_acct_reversal_source := SUBSTR(NULL, 1,30);
322646 
322647 IF l_continue_with_lines THEN
322648    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
322649       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
322650 
322651       xla_accounting_err_pkg.build_message
322652          (p_appli_s_name            => 'XLA'
322653          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
322654          ,p_token_1                 => 'LINE_NUMBER'
322655          ,p_value_1                 => l_array_extract_line_num(Idx)
322656          ,p_token_2                 => 'PRODUCT_NAME'
322657          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
322658          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
322659          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
322660          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
322661 
322662    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
322663       --
322664       -- following sets the accounting attributes needed to reverse
322665       -- accounting for a distributeion
322666       --
322667 
322668       --
322669       -- 5217187
322670       --
322671       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
322672       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
322673                                        g_array_event(l_event_id).array_value_num('header_index'));
322674       --
322675       --
322676 
322677       -- No reversal code generated
322678 
322679       xla_ae_lines_pkg.SetAcctReversalAttrs
322680          (p_event_id             => l_event_id
322681          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
322682          ,p_calculate_acctd_flag => l_calculate_acctd_flag
322683          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
322684    END IF;
322685 
322686    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
322687        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
322688 
322689 --
322690 AcctLineType_169 (
322691  p_application_id  => p_application_id
322692  ,p_event_id     => l_event_id
322693  ,p_calculate_acctd_flag => l_calculate_acctd_flag
322694  ,p_calculate_g_l_flag => l_calculate_g_l_flag
322695  ,p_actual_flag => l_actual_flag
322696  ,p_balance_type_code => l_balance_type_code
322697  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
322698  
322699  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
322700  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
322701  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
322702  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
322703  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
322704  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
322705  , p_source_84 => l_array_source_84(Idx)
322706  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
322707  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
322708  , p_source_88 => l_array_source_88(Idx)
322709  , p_source_91 => l_array_source_91(Idx)
322710  , p_source_92 => l_array_source_92(Idx)
322711  , p_source_93 => l_array_source_93(Idx)
322712  , p_source_94 => l_array_source_94(Idx)
322713  , p_source_95 => l_array_source_95(Idx)
322714  , p_source_97 => l_array_source_97(Idx)
322715  );
322716 If(l_balance_type_code = 'A') THEN
322717   l_actual_gain_loss_ref := l_gain_or_loss_ref;
322718 END IF;
322719 
322720 --
322721 
322722 
322723 --
322724 AcctLineType_180 (
322725  p_application_id  => p_application_id
322726  ,p_event_id     => l_event_id
322727  ,p_calculate_acctd_flag => l_calculate_acctd_flag
322728  ,p_calculate_g_l_flag => l_calculate_g_l_flag
322729  ,p_actual_flag => l_actual_flag
322730  ,p_balance_type_code => l_balance_type_code
322731  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
322732  
322733  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
322734  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
322735  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
322736  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
322737  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
322738  , p_source_11 => l_array_source_11(Idx)
322739  , p_source_84 => l_array_source_84(Idx)
322740  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
322741  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
322742  , p_source_88 => l_array_source_88(Idx)
322743  , p_source_91 => l_array_source_91(Idx)
322744  , p_source_92 => l_array_source_92(Idx)
322745  , p_source_93 => l_array_source_93(Idx)
322746  , p_source_94 => l_array_source_94(Idx)
322747  , p_source_95 => l_array_source_95(Idx)
322748  , p_source_97 => l_array_source_97(Idx)
322749  );
322750 If(l_balance_type_code = 'A') THEN
322751   l_actual_gain_loss_ref := l_gain_or_loss_ref;
322752 END IF;
322753 
322754 --
322755 
322756 
322757 --
322758 AcctLineType_197 (
322759  p_application_id  => p_application_id
322760  ,p_event_id     => l_event_id
322761  ,p_calculate_acctd_flag => l_calculate_acctd_flag
322762  ,p_calculate_g_l_flag => l_calculate_g_l_flag
322763  ,p_actual_flag => l_actual_flag
322764  ,p_balance_type_code => l_balance_type_code
322765  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
322766  
322767  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
322768  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
322769  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
322770  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
322771  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
322772  , p_source_11 => l_array_source_11(Idx)
322773  , p_source_84 => l_array_source_84(Idx)
322774  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
322775  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
322776  , p_source_88 => l_array_source_88(Idx)
322777  , p_source_91 => l_array_source_91(Idx)
322778  , p_source_92 => l_array_source_92(Idx)
322779  , p_source_93 => l_array_source_93(Idx)
322780  , p_source_94 => l_array_source_94(Idx)
322781  , p_source_95 => l_array_source_95(Idx)
322782  , p_source_97 => l_array_source_97(Idx)
322783  );
322784 If(l_balance_type_code = 'A') THEN
322785   l_actual_gain_loss_ref := l_gain_or_loss_ref;
322786 END IF;
322787 
322788 --
322789 
322790 
322791 --
322792 AcctLineType_255 (
322793  p_application_id  => p_application_id
322794  ,p_event_id     => l_event_id
322795  ,p_calculate_acctd_flag => l_calculate_acctd_flag
322796  ,p_calculate_g_l_flag => l_calculate_g_l_flag
322797  ,p_actual_flag => l_actual_flag
322798  ,p_balance_type_code => l_balance_type_code
322799  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
322800  
322801  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
322802  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
322803  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
322804  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
322805  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
322806  , p_source_15 => l_array_source_15(Idx)
322807  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
322808  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
322809  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
322810  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
322811  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
322812  , p_source_84 => l_array_source_84(Idx)
322813  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
322814  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
322815  , p_source_88 => l_array_source_88(Idx)
322816  , p_source_91 => l_array_source_91(Idx)
322817  , p_source_92 => l_array_source_92(Idx)
322818  , p_source_93 => l_array_source_93(Idx)
322819  , p_source_94 => l_array_source_94(Idx)
322820  , p_source_95 => l_array_source_95(Idx)
322821  , p_source_97 => l_array_source_97(Idx)
322822  , p_source_108 => l_array_source_108(Idx)
322823  );
322824 If(l_balance_type_code = 'A') THEN
322825   l_actual_gain_loss_ref := l_gain_or_loss_ref;
322826 END IF;
322827 
322828 --
322829 
322830 
322831 --
322832 AcctLineType_361 (
322833  p_application_id  => p_application_id
322834  ,p_event_id     => l_event_id
322835  ,p_calculate_acctd_flag => l_calculate_acctd_flag
322836  ,p_calculate_g_l_flag => l_calculate_g_l_flag
322837  ,p_actual_flag => l_actual_flag
322838  ,p_balance_type_code => l_balance_type_code
322839  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
322840  
322841  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
322842  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
322843  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
322844  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
322845  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
322846  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
322847  , p_source_84 => l_array_source_84(Idx)
322848  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
322849  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
322850  , p_source_88 => l_array_source_88(Idx)
322851  , p_source_91 => l_array_source_91(Idx)
322852  , p_source_92 => l_array_source_92(Idx)
322853  , p_source_93 => l_array_source_93(Idx)
322854  , p_source_94 => l_array_source_94(Idx)
322855  , p_source_95 => l_array_source_95(Idx)
322856  , p_source_97 => l_array_source_97(Idx)
322857  );
322858 If(l_balance_type_code = 'A') THEN
322859   l_actual_gain_loss_ref := l_gain_or_loss_ref;
322860 END IF;
322861 
322862 --
322863 
322864       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
322865       -- or secondary ledger that has different currency with primary
322866       -- or alc that is calculated by sla
322867       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
322868             (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'))
322869 
322870 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
322871 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
322872           AND (l_actual_flag = 'A')) THEN
322873         XLA_AE_LINES_PKG.CreateGainOrLossLines(
322874           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
322875          ,p_application_id   => p_application_id
322876          ,p_amb_context_code => 'DEFAULT'
322877          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
322878          ,p_event_class_code => C_EVENT_CLASS_CODE
322879          ,p_event_type_code  => C_EVENT_TYPE_CODE
322880          
322881          ,p_gain_ccid        => -1
322882          ,p_loss_ccid        => -1
322883 
322884          ,p_actual_flag      => l_actual_flag
322885          ,p_enc_flag         => null
322886          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
322887          ,p_enc_g_l_ref      => null
322888          );
322889       END IF;
322890    END IF;
322891 END IF;
322892 
322893    ELSE
322894       --
322895       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
322896       --
322897       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
322898          trace
322899             (p_msg      => 'Trancaction revesal option is Y'
322900             ,p_level    => C_LEVEL_STATEMENT
322901             ,p_module   => l_log_module);
322902       END IF;
322903    END IF;
322904 
322905 END LOOP;
322906 l_result := XLA_AE_LINES_PKG.InsertLines ;
322907 end loop;
322908 close line_cur;
322909 
322910 
322911 --
322912 -- insert headers into xla_ae_headers_gt table
322913 --
322914 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
322915 
322916 -- insert into errors table here.
322917 
322918 END LOOP;
322919 
322920 --
322921 -- 4865292
322922 --
322923 -- Compare g_hdr_extract_count with event count in
322924 -- CreateHeadersAndLines.
322925 --
322926 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
322927 
322928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
322929    trace (p_msg     => '# rows extracted from header extract objects '
322930                     || ' (running total): '
322931                     || g_hdr_extract_count
322932          ,p_level   => C_LEVEL_STATEMENT
322933          ,p_module  => l_log_module);
322934 END IF;
322935 
322936 CLOSE header_cur;
322937 --
322938 
322939 --
322940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
322941    trace
322942       (p_msg      => 'END of EventType_555'
322943       ,p_level    => C_LEVEL_PROCEDURE
322944       ,p_module   => l_log_module);
322945 END IF;
322946 --
322947 RETURN l_result;
322948 EXCEPTION
322949 WHEN xla_exceptions_pkg.application_exception THEN
322950    
322951 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
322952 
322953    
322954 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
322955 
322956    RAISE;
322957 
322958 WHEN NO_DATA_FOUND THEN
322959 
322960 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
322961 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
322962 
322963 FOR header_record IN header_cur
322964 LOOP
322965     l_array_header_events(header_record.event_id) := header_record.event_id;
322966 END LOOP;
322967 
322968 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
322969 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
322970 
322971 fnd_file.put_line(fnd_file.LOG, '                    ');
322972 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
322973 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
322974 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
322975 
322976 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
322977 LOOP
322978 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
322979 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
322980         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
322981 	END IF;
322982 END LOOP;
322983 
322984 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
322985 fnd_file.put_line(fnd_file.LOG, '                    ');
322986 
322987 
322988 xla_exceptions_pkg.raise_message
322989       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_555');
322990 
322991 
322992 WHEN OTHERS THEN
322993    xla_exceptions_pkg.raise_message
322994       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_555');
322995 END EventType_555;
322996 --
322997 
322998 ---------------------------------------
322999 --
323000 -- PRIVATE PROCEDURE
323001 --         insert_sources_556
323002 --
323003 ----------------------------------------
323004 --
323005 PROCEDURE insert_sources_556(
323006                                 p_target_ledger_id       IN NUMBER
323007                               , p_language               IN VARCHAR2
323008                               , p_sla_ledger_id          IN NUMBER
323009                               , p_pad_start_date         IN DATE
323010                               , p_pad_end_date           IN DATE
323011                          )
323012 IS
323013 
323014 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
323015 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
323016 p_apps_owner                   VARCHAR2(30);
323017 l_log_module                   VARCHAR2(240);
323018 BEGIN
323019 IF g_log_enabled THEN
323020       l_log_module := C_DEFAULT_MODULE||'.insert_sources_556';
323021 END IF;
323022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
323023 
323024       trace
323025          (p_msg      => 'BEGIN of insert_sources_556'
323026          ,p_level    => C_LEVEL_PROCEDURE
323027          ,p_module   => l_log_module);
323028 
323029 END IF;
323030 
323031 -- select APPS owner
323032 SELECT oracle_username
323033   INTO p_apps_owner
323034   FROM fnd_oracle_userid
323035  WHERE read_only_flag = 'U'
323036 ;
323037 
323038 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
323039       trace
323040          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
323041                         ' - p_language = '||p_language||
323042                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
323043                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
323044                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
323045                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
323046          ,p_level    => C_LEVEL_STATEMENT
323047          ,p_module   => l_log_module);
323048 END IF;
323049 
323050 
323051 --
323052 INSERT INTO xla_diag_sources --hdr1
323053 (
323054         event_id
323055       , ledger_id
323056       , sla_ledger_id
323057       , description_language
323058       , object_name
323059       , object_type_code
323060       , line_number
323061       , source_application_id
323062       , source_type_code
323063       , source_code
323064       , source_value
323065       , source_meaning
323066       , created_by
323067       , creation_date
323068       , last_update_date
323069       , last_updated_by
323070       , last_update_login
323071       , program_update_date
323072       , program_application_id
323073       , program_id
323074       , request_id
323075 )
323076 SELECT
323077         event_id
323078       , p_target_ledger_id
323079       , p_sla_ledger_id
323080       , p_language
323081       , object_name
323082       , object_type_code
323083       , line_number
323084       , source_application_id
323085       , source_type_code
323086       , source_code
323087       , SUBSTR(source_value ,1,1996)
323088       , SUBSTR(source_meaning,1,200)
323089       , xla_environment_pkg.g_Usr_Id
323090       , TRUNC(SYSDATE)
323091       , TRUNC(SYSDATE)
323092       , xla_environment_pkg.g_Usr_Id
323093       , xla_environment_pkg.g_Login_Id
323094       , TRUNC(SYSDATE)
323095       , xla_environment_pkg.g_Prog_Appl_Id
323096       , xla_environment_pkg.g_Prog_Id
323097       , xla_environment_pkg.g_Req_Id
323098   FROM (
323099        SELECT xet.event_id                  event_id
323100             , 0                             line_number
323101             , CASE r
323102                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
323103                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
323104                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
323105                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
323106                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
323107                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
323108                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
323109                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
323110                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
323111                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
323112                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
323113                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
323114                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
323115                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
323116                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
323117                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
323118                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
323119                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
323120                 WHEN 19 THEN 'CST_XLA_INV_REF_V' 
323121                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
323122                 WHEN 21 THEN 'PSA_CST_XLA_UPG_V' 
323123                 WHEN 22 THEN 'CST_XLA_INV_REF_V' 
323124                 WHEN 23 THEN 'CST_XLA_INV_REF_V' 
323125                 WHEN 24 THEN 'PO_REQ_DISTS_REF_V' 
323126                 WHEN 25 THEN 'PO_REQ_HEADERS_REF_V' 
323127                 WHEN 26 THEN 'CST_XLA_INV_HEADERS_V' 
323128                 
323129                ELSE null
323130               END                           object_name
323131             , CASE r
323132                 WHEN 1 THEN 'HEADER' 
323133                 WHEN 2 THEN 'HEADER' 
323134                 WHEN 3 THEN 'HEADER' 
323135                 WHEN 4 THEN 'HEADER' 
323136                 WHEN 5 THEN 'HEADER' 
323137                 WHEN 6 THEN 'HEADER' 
323138                 WHEN 7 THEN 'HEADER' 
323139                 WHEN 8 THEN 'HEADER' 
323140                 WHEN 9 THEN 'HEADER' 
323141                 WHEN 10 THEN 'HEADER' 
323142                 WHEN 11 THEN 'HEADER' 
323143                 WHEN 12 THEN 'HEADER' 
323144                 WHEN 13 THEN 'HEADER' 
323145                 WHEN 14 THEN 'HEADER' 
323146                 WHEN 15 THEN 'HEADER' 
323147                 WHEN 16 THEN 'HEADER' 
323148                 WHEN 17 THEN 'HEADER' 
323149                 WHEN 18 THEN 'HEADER' 
323150                 WHEN 19 THEN 'HEADER' 
323151                 WHEN 20 THEN 'HEADER' 
323152                 WHEN 21 THEN 'HEADER' 
323153                 WHEN 22 THEN 'HEADER' 
323154                 WHEN 23 THEN 'HEADER' 
323155                 WHEN 24 THEN 'HEADER' 
323156                 WHEN 25 THEN 'HEADER' 
323157                 WHEN 26 THEN 'HEADER' 
323158                 
323159                 ELSE null
323160               END                           object_type_code
323161             , CASE r
323162                 WHEN 1 THEN '707' 
323163                 WHEN 2 THEN '707' 
323164                 WHEN 3 THEN '707' 
323165                 WHEN 4 THEN '707' 
323166                 WHEN 5 THEN '707' 
323167                 WHEN 6 THEN '707' 
323168                 WHEN 7 THEN '707' 
323169                 WHEN 8 THEN '707' 
323170                 WHEN 9 THEN '707' 
323171                 WHEN 10 THEN '707' 
323172                 WHEN 11 THEN '707' 
323173                 WHEN 12 THEN '707' 
323174                 WHEN 13 THEN '707' 
323175                 WHEN 14 THEN '707' 
323176                 WHEN 15 THEN '707' 
323177                 WHEN 16 THEN '707' 
323178                 WHEN 17 THEN '707' 
323179                 WHEN 18 THEN '707' 
323180                 WHEN 19 THEN '707' 
323181                 WHEN 20 THEN '707' 
323182                 WHEN 21 THEN '707' 
323183                 WHEN 22 THEN '707' 
323184                 WHEN 23 THEN '707' 
323185                 WHEN 24 THEN '201' 
323186                 WHEN 25 THEN '201' 
323187                 WHEN 26 THEN '707' 
323188                 
323189                 ELSE null
323190               END                           source_application_id
323191             , 'S'             source_type_code
323192             , CASE r
323193                 WHEN 1 THEN 'TRANSACTION_ID' 
323194                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
323195                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
323196                 WHEN 4 THEN 'TRANSACTION_UOM' 
323197                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
323198                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
323199                 WHEN 7 THEN 'INTERORG_EXPENSE_ACCOUNT' 
323200                 WHEN 8 THEN 'INTERORG_PAYABLES_ACCOUNT' 
323201                 WHEN 9 THEN 'INTERORG_PRICE_VAR_ACCOUNT' 
323202                 WHEN 10 THEN 'PLA_MATERIAL_ACCOUNT' 
323203                 WHEN 11 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
323204                 WHEN 12 THEN 'PLA_RESOURCE_ACCOUNT' 
323205                 WHEN 13 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
323206                 WHEN 14 THEN 'PLA_OVERHEAD_ACCOUNT' 
323207                 WHEN 15 THEN 'APPLIED_TO_APPL_ID' 
323208                 WHEN 16 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
323209                 WHEN 17 THEN 'APPLIED_TO_ENTITY_CODE' 
323210                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
323211                 WHEN 19 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
323212                 WHEN 20 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
323213                 WHEN 21 THEN 'CST_ENCUM_UPG_OPTION' 
323214                 WHEN 22 THEN 'TXN_PO_DISTRIBUTION_ID' 
323215                 WHEN 23 THEN 'TXN_PO_HEADER_ID' 
323216                 WHEN 24 THEN 'REQ_BUDGET_ACCOUNT' 
323217                 WHEN 25 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
323218                 WHEN 26 THEN 'TRANSFER_TO_GL_INDICATOR' 
323219                 
323220                 ELSE null
323221               END                           source_code
323222             , CASE r
323223                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
323224                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
323225                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
323226                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
323227                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
323228                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
323229                 WHEN 7 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
323230                 WHEN 8 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
323231                 WHEN 9 THEN TO_CHAR(h1.INTERORG_PRICE_VAR_ACCOUNT)
323232                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
323233                 WHEN 11 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
323234                 WHEN 12 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
323235                 WHEN 13 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
323236                 WHEN 14 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
323237                 WHEN 15 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
323238                 WHEN 16 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
323239                 WHEN 17 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
323240                 WHEN 18 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
323241                 WHEN 19 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
323242                 WHEN 20 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
323243                 WHEN 21 THEN TO_CHAR(h10.CST_ENCUM_UPG_OPTION)
323244                 WHEN 22 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
323245                 WHEN 23 THEN TO_CHAR(h4.TXN_PO_HEADER_ID)
323246                 WHEN 24 THEN TO_CHAR(h8.REQ_BUDGET_ACCOUNT)
323247                 WHEN 25 THEN TO_CHAR(h9.REQ_ENCUMBRANCE_TYPE_ID)
323248                 WHEN 26 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
323249                 
323250                 ELSE null
323251               END                           source_value
323252             , CASE r
323253                 WHEN 18 THEN fvl85.meaning
323254                 WHEN 26 THEN fvl114.meaning
323255                 
323256                 ELSE null
323257               END               source_meaning
323258         FROM xla_events_gt     xet  
323259       , CST_XLA_INTERORG_PARAMS_REF_V  h1
323260       , CST_XLA_INV_HEADERS_V  h2
323261       , CST_XLA_INV_REF_V  h4
323262       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
323263       , CST_XLA_INV_TXN_TYPES_REF_V  h6
323264       , CST_XLA_PLA_CATEGORY_REF_V  h7
323265       , PO_REQ_DISTS_REF_V  h8
323266       , PO_REQ_HEADERS_REF_V  h9
323267       , PSA_CST_XLA_UPG_V  h10
323268   , fnd_lookup_values    fvl85
323269   , fnd_lookup_values    fvl114
323270             ,(select rownum r from all_objects where rownum <= 26 and owner = p_apps_owner)
323271        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
323272          AND xet.event_type_code = C_EVENT_TYPE_CODE
323273             AND h2.event_id = xet.event_id
323274   AND h1.event_id (+) = h2.event_id
323275  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
323276 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
323277 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg AND h4.bus_flow_req_dist_id=h8.req_distribution_id (+)  AND h4.bus_flow_req_id = h9.req_id (+)  AND h4.rcv_transaction_id = h10.transaction_id (+)    AND fvl85.lookup_type(+)         = 
323278 'CST_DISTRIBUTION_TYPE'
323279   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
323280   AND fvl85.view_application_id(+) = 700
323281   AND fvl85.language(+)            = USERENV('LANG')
323282      AND fvl114.lookup_type(+)         = 'YES_NO'
323283   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
323284   AND fvl114.view_application_id(+) = 0
323285   AND fvl114.language(+)            = USERENV('LANG')
323286   
323287 )
323288 ;
323289 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
323290 
323291       trace
323292          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
323293          ,p_level    => C_LEVEL_STATEMENT
323294          ,p_module   => l_log_module);
323295 
323296 END IF;
323297 --
323298 
323299 
323300 
323301 --
323302 INSERT INTO xla_diag_sources --line1
323303 (
323304         event_id
323305       , ledger_id
323306       , sla_ledger_id
323307       , description_language
323308       , object_name
323309       , object_type_code
323310       , line_number
323311       , source_application_id
323312       , source_type_code
323313       , source_code
323314       , source_value
323315       , source_meaning
323316       , created_by
323317       , creation_date
323318       , last_update_date
323319       , last_updated_by
323320       , last_update_login
323321       , program_update_date
323322       , program_application_id
323323       , program_id
323324       , request_id
323325 )
323326 SELECT  event_id
323327       , p_target_ledger_id
323328       , p_sla_ledger_id
323329       , p_language
323330       , object_name
323331       , object_type_code
323332       , line_number
323333       , source_application_id
323334       , source_type_code
323335       , source_code
323336       , SUBSTR(source_value,1,1996)
323337       , SUBSTR(source_meaning,1,200)
323338       , xla_environment_pkg.g_Usr_Id
323339       , TRUNC(SYSDATE)
323340       , TRUNC(SYSDATE)
323341       , xla_environment_pkg.g_Usr_Id
323342       , xla_environment_pkg.g_Login_Id
323343       , TRUNC(SYSDATE)
323344       , xla_environment_pkg.g_Prog_Appl_Id
323345       , xla_environment_pkg.g_Prog_Id
323346       , xla_environment_pkg.g_Req_Id
323347   FROM (
323348        SELECT xet.event_id                  event_id
323349             , l3.line_number                 line_number
323350             , CASE r
323351                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
323352                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
323353                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
323354                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
323355                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
323356                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
323357                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
323358                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
323359                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
323360                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
323361                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
323362                 
323363                ELSE null
323364               END                           object_name
323365             , CASE r
323366                 WHEN 1 THEN 'LINE' 
323367                 WHEN 2 THEN 'LINE' 
323368                 WHEN 3 THEN 'LINE' 
323369                 WHEN 4 THEN 'LINE' 
323370                 WHEN 5 THEN 'LINE' 
323371                 WHEN 6 THEN 'LINE' 
323372                 WHEN 7 THEN 'LINE' 
323373                 WHEN 8 THEN 'LINE' 
323374                 WHEN 9 THEN 'LINE' 
323375                 WHEN 10 THEN 'LINE' 
323376                 WHEN 11 THEN 'LINE' 
323377                 
323378                 ELSE null
323379               END                           object_type_code
323380             , CASE r
323381                 WHEN 1 THEN '707' 
323382                 WHEN 2 THEN '707' 
323383                 WHEN 3 THEN '707' 
323384                 WHEN 4 THEN '707' 
323385                 WHEN 5 THEN '707' 
323386                 WHEN 6 THEN '707' 
323387                 WHEN 7 THEN '707' 
323388                 WHEN 8 THEN '707' 
323389                 WHEN 9 THEN '707' 
323390                 WHEN 10 THEN '707' 
323391                 WHEN 11 THEN '707' 
323392                 
323393                 ELSE null
323394               END                           source_application_id
323395             , 'S'             source_type_code
323396             , CASE r
323397                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
323398                 WHEN 2 THEN 'COST_ELEMENT_ID' 
323399                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
323400                 WHEN 4 THEN 'CURRENCY_CODE' 
323401                 WHEN 5 THEN 'ENTERED_AMOUNT' 
323402                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
323403                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
323404                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
323405                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
323406                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
323407                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
323408                 
323409                 ELSE null
323410               END                           source_code
323411             , CASE r
323412                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
323413                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
323414                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
323415                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
323416                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
323417                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
323418                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
323419                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
323420                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
323421                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
323422                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
323423                 
323424                 ELSE null
323425               END                           source_value
323426             , CASE r
323427                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
323428                           1009615
323429                          ,TO_CHAR(l3.COST_ELEMENT_ID)
323430                          ,'COST_ELEMENT_ID'
323431                          ,'S'
323432                          ,707)
323433                 
323434                 ELSE null
323435               END               source_meaning
323436          FROM  xla_events_gt     xet  
323437         , CST_XLA_INV_LINES_V  l3
323438             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
323439         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
323440           AND xet.event_type_code = C_EVENT_TYPE_CODE
323441             AND l3.event_id          = xet.event_id
323442 
323443 )
323444 ;
323445 --
323446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
323447 
323448       trace
323449          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
323450          ,p_level    => C_LEVEL_STATEMENT
323451          ,p_module   => l_log_module);
323452 
323453 END IF;
323454 
323455 
323456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
323457       trace
323458          (p_msg      => 'END of insert_sources_556'
323459          ,p_level    => C_LEVEL_PROCEDURE
323460          ,p_module   => l_log_module);
323461 END IF;
323462 EXCEPTION
323463   WHEN xla_exceptions_pkg.application_exception THEN
323464       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
323465             trace
323466                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
323467                ,p_level    => C_LEVEL_EXCEPTION
323468                ,p_module   => l_log_module);
323469       END IF;
323470       RAISE;
323471   WHEN OTHERS THEN
323472       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
323473             trace
323474                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
323475                ,p_level    => C_LEVEL_EXCEPTION
323476                ,p_module   => l_log_module);
323477        END IF;
323478        xla_exceptions_pkg.raise_message
323479            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_556');
323480 END insert_sources_556;
323481 --
323482 
323483 ---------------------------------------
323484 --
323485 -- PRIVATE FUNCTION
323486 --         EventType_556
323487 --
323488 ----------------------------------------
323489 --
323490 FUNCTION EventType_556
323491        (p_application_id         IN NUMBER
323492        ,p_base_ledger_id         IN NUMBER
323493        ,p_target_ledger_id       IN NUMBER
323494        ,p_language               IN VARCHAR2
323495        ,p_currency_code          IN VARCHAR2
323496        ,p_sla_ledger_id          IN NUMBER
323497        ,p_pad_start_date         IN DATE
323498        ,p_pad_end_date           IN DATE
323499        ,p_primary_ledger_id      IN NUMBER)
323500 RETURN BOOLEAN IS
323501 --
323502 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
323503 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
323504 
323505 l_calculate_acctd_flag   VARCHAR2(1) :='N';
323506 l_calculate_g_l_flag     VARCHAR2(1) :='N';
323507 --
323508 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323509 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323510 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
323511 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
323512 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323513 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
323514 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
323515 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323516 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
323517 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
323518 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323519 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323520 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323521 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
323522 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
323523 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
323524 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
323525 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
323526 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
323527 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
323528 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
323529 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
323530 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
323531 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
323532 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
323533 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
323534 
323535 l_event_id                             NUMBER;
323536 l_previous_event_id                    NUMBER;
323537 l_first_event_id                       NUMBER;
323538 l_last_event_id                        NUMBER;
323539 
323540 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
323541 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
323542 --
323543 --
323544 l_result                    BOOLEAN := TRUE;
323545 l_rows                      NUMBER  := 1000;
323546 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, no Transfer Pricing';
323547 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
323548 l_description               VARCHAR2(4000);
323549 l_transaction_reversal      NUMBER;
323550 l_ae_header_id              NUMBER;
323551 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
323552 l_log_module                VARCHAR2(240);
323553 --
323554 l_acct_reversal_source      VARCHAR2(30);
323555 l_trx_reversal_source       VARCHAR2(30);
323556 
323557 l_continue_with_lines       BOOLEAN := TRUE;
323558 --
323559 l_acc_rev_gl_date_source    DATE;                      -- 4262811
323560 --
323561 type t_array_event_id is table of number index by binary_integer;
323562 
323563 l_rec_array_event                    t_rec_array_event;
323564 l_null_rec_array_event               t_rec_array_event;
323565 l_array_ae_header_id                 xla_number_array_type;
323566 l_actual_flag                        VARCHAR2(1) := NULL;
323567 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
323568 l_balance_type_code                  VARCHAR2(1) :=NULL;
323569 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
323570 
323571 --
323572 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
323573 --
323574 
323575 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
323576 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
323577 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
323578 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
323579 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
323580 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323581 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323582 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323583 TYPE t_array_source_36 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PRICE_VAR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323584 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323585 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323586 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323587 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323588 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323589 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
323590 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
323591 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
323592 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
323593 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
323594 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
323595 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
323596 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
323597 TYPE t_array_source_102 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
323598 TYPE t_array_source_103 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
323599 TYPE t_array_source_104 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
323600 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
323601 
323602 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
323603 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
323604 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
323605 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
323606 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
323607 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
323608 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
323609 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
323610 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
323611 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
323612 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
323613 
323614 l_array_source_1              t_array_source_1;
323615 l_array_source_2              t_array_source_2;
323616 l_array_source_3              t_array_source_3;
323617 l_array_source_4              t_array_source_4;
323618 l_array_source_5              t_array_source_5;
323619 l_array_source_22              t_array_source_22;
323620 l_array_source_34              t_array_source_34;
323621 l_array_source_35              t_array_source_35;
323622 l_array_source_36              t_array_source_36;
323623 l_array_source_41              t_array_source_41;
323624 l_array_source_42              t_array_source_42;
323625 l_array_source_43              t_array_source_43;
323626 l_array_source_44              t_array_source_44;
323627 l_array_source_45              t_array_source_45;
323628 l_array_source_79              t_array_source_79;
323629 l_array_source_80              t_array_source_80;
323630 l_array_source_81              t_array_source_81;
323631 l_array_source_85              t_array_source_85;
323632 l_array_source_85_meaning      t_array_lookup_meaning;
323633 l_array_source_87              t_array_source_87;
323634 l_array_source_89              t_array_source_89;
323635 l_array_source_100              t_array_source_100;
323636 l_array_source_101              t_array_source_101;
323637 l_array_source_102              t_array_source_102;
323638 l_array_source_103              t_array_source_103;
323639 l_array_source_104              t_array_source_104;
323640 l_array_source_114              t_array_source_114;
323641 l_array_source_114_meaning      t_array_lookup_meaning;
323642 
323643 l_array_source_11      t_array_source_11;
323644 l_array_source_15      t_array_source_15;
323645 l_array_source_84      t_array_source_84;
323646 l_array_source_88      t_array_source_88;
323647 l_array_source_91      t_array_source_91;
323648 l_array_source_92      t_array_source_92;
323649 l_array_source_93      t_array_source_93;
323650 l_array_source_94      t_array_source_94;
323651 l_array_source_95      t_array_source_95;
323652 l_array_source_97      t_array_source_97;
323653 l_array_source_108      t_array_source_108;
323654 
323655 --
323656 CURSOR header_cur
323657 IS
323658 SELECT /*+ leading(xet) cardinality(xet,1) */
323659 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
323660 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
323661     xet.entity_id
323662   , xet.legal_entity_id
323663   , xet.entity_code
323664   , xet.transaction_number
323665   , xet.event_id
323666   , xet.event_class_code
323667   , xet.event_type_code
323668   , xet.event_number
323669   , xet.event_date
323670   , xet.transaction_date
323671   , xet.reference_num_1
323672   , xet.reference_num_2
323673   , xet.reference_num_3
323674   , xet.reference_num_4
323675   , xet.reference_char_1
323676   , xet.reference_char_2
323677   , xet.reference_char_3
323678   , xet.reference_char_4
323679   , xet.reference_date_1
323680   , xet.reference_date_2
323681   , xet.reference_date_3
323682   , xet.reference_date_4
323683   , xet.event_created_by
323684   , xet.budgetary_control_flag 
323685   , h2.TRANSACTION_ID    source_1
323686   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
323687   , h4.TRANSACTION_QUANTITY    source_3
323688   , h4.TRANSACTION_UOM    source_4
323689   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
323690   , h7.PLA_BRIDGING_ACCOUNT    source_22
323691   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
323692   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
323693   , h1.INTERORG_PRICE_VAR_ACCOUNT    source_36
323694   , h7.PLA_MATERIAL_ACCOUNT    source_41
323695   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
323696   , h7.PLA_RESOURCE_ACCOUNT    source_43
323697   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
323698   , h7.PLA_OVERHEAD_ACCOUNT    source_45
323699   , h4.APPLIED_TO_APPL_ID    source_79
323700   , h4.APPLIED_TO_DIST_LINK_TYPE    source_80
323701   , h4.APPLIED_TO_ENTITY_CODE    source_81
323702   , h2.DISTRIBUTION_TYPE    source_85
323703   , fvl85.meaning   source_85_meaning
323704   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
323705   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
323706   , h10.CST_ENCUM_UPG_OPTION    source_100
323707   , h4.TXN_PO_DISTRIBUTION_ID    source_101
323708   , h4.TXN_PO_HEADER_ID    source_102
323709   , h8.REQ_BUDGET_ACCOUNT    source_103
323710   , h9.REQ_ENCUMBRANCE_TYPE_ID    source_104
323711   , h2.TRANSFER_TO_GL_INDICATOR    source_114
323712   , fvl114.meaning   source_114_meaning
323713   FROM xla_events_gt     xet 
323714   , CST_XLA_INTERORG_PARAMS_REF_V  h1
323715   , CST_XLA_INV_HEADERS_V  h2
323716   , CST_XLA_INV_REF_V  h4
323717   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
323718   , CST_XLA_INV_TXN_TYPES_REF_V  h6
323719   , CST_XLA_PLA_CATEGORY_REF_V  h7
323720   , PO_REQ_DISTS_REF_V  h8
323721   , PO_REQ_HEADERS_REF_V  h9
323722   , PSA_CST_XLA_UPG_V  h10
323723   , fnd_lookup_values    fvl85
323724   , fnd_lookup_values    fvl114
323725  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
323726    and xet.event_type_code = C_EVENT_TYPE_CODE
323727    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
323728   AND h1.event_id (+) = h2.event_id
323729  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
323730 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
323731 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG AND h4.BUS_FLOW_REQ_DIST_ID=h8.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h9.REQ_ID (+)  AND h4.rcv_transaction_id = h10.transaction_id (+)    AND fvl85.lookup_type(+)         = 
323732 'CST_DISTRIBUTION_TYPE'
323733   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
323734   AND fvl85.view_application_id(+) = 700
323735   AND fvl85.language(+)            = USERENV('LANG')
323736      AND fvl114.lookup_type(+)         = 'YES_NO'
323737   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
323738   AND fvl114.view_application_id(+) = 0
323739   AND fvl114.language(+)            = USERENV('LANG')
323740   
323741  ORDER BY event_id
323742 ;
323743 
323744 
323745 --
323746 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
323747 IS
323748 SELECT /*+ leading(xet) cardinality(xet,1) */
323749 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
323750 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
323751     xet.entity_id
323752    ,xet.legal_entity_id
323753    ,xet.entity_code
323754    ,xet.transaction_number
323755    ,xet.event_id
323756    ,xet.event_class_code
323757    ,xet.event_type_code
323758    ,xet.event_number
323759    ,xet.event_date
323760    ,xet.transaction_date
323761    ,xet.reference_num_1
323762    ,xet.reference_num_2
323763    ,xet.reference_num_3
323764    ,xet.reference_num_4
323765    ,xet.reference_char_1
323766    ,xet.reference_char_2
323767    ,xet.reference_char_3
323768    ,xet.reference_char_4
323769    ,xet.reference_date_1
323770    ,xet.reference_date_2
323771    ,xet.reference_date_3
323772    ,xet.reference_date_4
323773    ,xet.event_created_by
323774    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
323775   , l3.CODE_COMBINATION_ID    source_11
323776   , l3.COST_ELEMENT_ID    source_15
323777   , l3.DISTRIBUTION_IDENTIFIER    source_84
323778   , l3.CURRENCY_CODE    source_88
323779   , l3.ENTERED_AMOUNT    source_91
323780   , l3.CURRENCY_CONVERSION_DATE    source_92
323781   , l3.CURRENCY_CONVERSION_RATE    source_93
323782   , l3.CURRENCY_CONVERSION_TYPE    source_94
323783   , l3.ACCOUNTED_AMOUNT    source_95
323784   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
323785   , l3.L_ORGANIZATION_CODE    source_108
323786   FROM xla_events_gt     xet 
323787   , CST_XLA_INV_LINES_V  l3
323788  WHERE xet.event_id between x_first_event_id and x_last_event_id
323789    and xet.event_date between p_pad_start_date and p_pad_end_date
323790    and xet.event_type_code = C_EVENT_TYPE_CODE
323791    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
323792 ;
323793 
323794 --
323795 BEGIN
323796 IF g_log_enabled THEN
323797    l_log_module := C_DEFAULT_MODULE||'.EventType_556';
323798 END IF;
323799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
323800    trace
323801       (p_msg      => 'BEGIN of EventType_556'
323802       ,p_level    => C_LEVEL_PROCEDURE
323803       ,p_module   => l_log_module);
323804 END IF;
323805 
323806 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
323807    trace
323808       (p_msg      => 'p_application_id = '||p_application_id||
323809                      ' - p_base_ledger_id = '||p_base_ledger_id||
323810                      ' - p_target_ledger_id  = '||p_target_ledger_id||
323811                      ' - p_language = '||p_language||
323812                      ' - p_currency_code = '||p_currency_code||
323813                      ' - p_sla_ledger_id = '||p_sla_ledger_id
323814       ,p_level    => C_LEVEL_STATEMENT
323815       ,p_module   => l_log_module);
323816 END IF;
323817 --
323818 -- initialze arrays
323819 --
323820 g_array_event.DELETE;
323821 l_rec_array_event := l_null_rec_array_event;
323822 --
323823 --------------------------------------
323824 -- 4262811 Initialze MPA Line Number
323825 --------------------------------------
323826 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
323827 
323828 --
323829 
323830 --
323831 OPEN header_cur;
323832 --
323833 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
323834    trace
323835    (p_msg      => 'SQL - FETCH header_cur'
323836    ,p_level    => C_LEVEL_STATEMENT
323837    ,p_module   => l_log_module);
323838 END IF;
323839 --
323840 LOOP
323841 FETCH header_cur BULK COLLECT INTO
323842         l_array_entity_id
323843       , l_array_legal_entity_id
323844       , l_array_entity_code
323845       , l_array_transaction_num
323846       , l_array_event_id
323847       , l_array_class_code
323848       , l_array_event_type
323849       , l_array_event_number
323850       , l_array_event_date
323851       , l_array_transaction_date
323852       , l_array_reference_num_1
323853       , l_array_reference_num_2
323854       , l_array_reference_num_3
323855       , l_array_reference_num_4
323856       , l_array_reference_char_1
323857       , l_array_reference_char_2
323858       , l_array_reference_char_3
323859       , l_array_reference_char_4
323860       , l_array_reference_date_1
323861       , l_array_reference_date_2
323862       , l_array_reference_date_3
323863       , l_array_reference_date_4
323864       , l_array_event_created_by
323865       , l_array_budgetary_control_flag 
323866       , l_array_source_1
323867       , l_array_source_2
323868       , l_array_source_3
323869       , l_array_source_4
323870       , l_array_source_5
323871       , l_array_source_22
323872       , l_array_source_34
323873       , l_array_source_35
323874       , l_array_source_36
323875       , l_array_source_41
323876       , l_array_source_42
323877       , l_array_source_43
323878       , l_array_source_44
323879       , l_array_source_45
323880       , l_array_source_79
323881       , l_array_source_80
323882       , l_array_source_81
323883       , l_array_source_85
323884       , l_array_source_85_meaning
323885       , l_array_source_87
323886       , l_array_source_89
323887       , l_array_source_100
323888       , l_array_source_101
323889       , l_array_source_102
323890       , l_array_source_103
323891       , l_array_source_104
323892       , l_array_source_114
323893       , l_array_source_114_meaning
323894       LIMIT l_rows;
323895 --
323896 IF (C_LEVEL_EVENT >= g_log_level) THEN
323897    trace
323898    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
323899    ,p_level    => C_LEVEL_EVENT
323900    ,p_module   => l_log_module);
323901 END IF;
323902 --
323903 EXIT WHEN l_array_entity_id.COUNT = 0;
323904 
323905 -- initialize arrays
323906 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
323907 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
323908 
323909 --
323910 -- Bug 4458708
323911 --
323912 XLA_AE_LINES_PKG.g_LineNumber := 0;
323913 
323914 
323915 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
323916 g_last_hdr_idx := l_array_event_id.LAST;
323917 --
323918 -- loop for the headers. Each iteration is for each header extract row
323919 -- fetched in header cursor
323920 --
323921 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
323922 
323923 --
323924 -- set event info as cache for other routines to refer event attributes
323925 --
323926 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
323927    (p_application_id           => p_application_id
323928    ,p_primary_ledger_id        => p_primary_ledger_id
323929    ,p_base_ledger_id           => p_base_ledger_id
323930    ,p_target_ledger_id         => p_target_ledger_id
323931    ,p_entity_id                => l_array_entity_id(hdr_idx)
323932    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
323933    ,p_entity_code              => l_array_entity_code(hdr_idx)
323934    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
323935    ,p_event_id                 => l_array_event_id(hdr_idx)
323936    ,p_event_class_code         => l_array_class_code(hdr_idx)
323937    ,p_event_type_code          => l_array_event_type(hdr_idx)
323938    ,p_event_number             => l_array_event_number(hdr_idx)
323939    ,p_event_date               => l_array_event_date(hdr_idx)
323940    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
323941    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
323942    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
323943    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
323944    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
323945    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
323946    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
323947    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
323948    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
323949    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
323950    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
323951    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
323952    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
323953    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
323954    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
323955 
323956 --
323957 -- set the status of entry to C_VALID (0)
323958 --
323959 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
323960 
323961 --
323962 -- initialize a row for ae header
323963 --
323964 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
323965 
323966 l_event_id := l_array_event_id(hdr_idx);
323967 
323968 --
323969 -- storing the hdr_idx for event. May be used by line cursor.
323970 --
323971 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
323972 
323973 --
323974 -- store sources from header extract. This can be improved to
323975 -- store only those sources from header extract that may be used in lines
323976 --
323977 
323978 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
323979 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
323980 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
323981 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
323982 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
323983 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
323984 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
323985 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
323986 g_array_event(l_event_id).array_value_num('source_36') := l_array_source_36(hdr_idx);
323987 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
323988 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
323989 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
323990 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
323991 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
323992 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
323993 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
323994 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
323995 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
323996 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
323997 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
323998 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
323999 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
324000 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
324001 g_array_event(l_event_id).array_value_num('source_102') := l_array_source_102(hdr_idx);
324002 g_array_event(l_event_id).array_value_num('source_103') := l_array_source_103(hdr_idx);
324003 g_array_event(l_event_id).array_value_num('source_104') := l_array_source_104(hdr_idx);
324004 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
324005 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
324006 
324007 --
324008 -- initilaize the status of ae headers for diffrent balance types
324009 -- the status is initialised to C_NOT_CREATED (2)
324010 --
324011 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
324012 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
324013 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
324014 
324015 --
324016 -- call api to validate and store accounting attributes for header
324017 --
324018 
324019 ------------------------------------------------------------
324020 -- Accrual Reversal : to get date for Standard Source (NONE)
324021 ------------------------------------------------------------
324022 l_acc_rev_gl_date_source := NULL;
324023 
324024      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
324025       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_104');
324026      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
324027       l_rec_acct_attrs.array_date_value(2) := 
324028 xla_ae_sources_pkg.GetSystemSourceDate(
324029    p_source_code           => 'XLA_REFERENCE_DATE_1'
324030  , p_source_type_code      => 'Y'
324031  , p_source_application_id =>  602
324032 );
324033      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
324034       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
324035 
324036 
324037 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
324038 
324039 XLA_AE_HEADER_PKG.SetJeCategoryName;
324040 
324041 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
324042 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
324043 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
324044 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
324045 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
324046 
324047 
324048 --
324049 xla_ae_header_pkg.SetHdrDescription(
324050    p_description => Description_1 (
324051    p_application_id => p_application_id 
324052  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324053  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324054  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324055  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324056  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324057    )
324058 );
324059 --
324060 
324061 -- No header level analytical criteria
324062 
324063 --
324064 --accounting attribute enhancement, bug 3612931
324065 --
324066 l_trx_reversal_source := SUBSTR(NULL, 1,30);
324067 
324068 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
324069    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
324070 
324071    xla_accounting_err_pkg.build_message
324072       (p_appli_s_name            => 'XLA'
324073       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
324074       ,p_token_1                 => 'ACCT_ATTR_NAME'
324075       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
324076       ,p_token_2                 => 'PRODUCT_NAME'
324077       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
324078       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
324079       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
324080       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
324081 
324082 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
324083    --
324084    -- following sets the accounting attributes needed to reverse
324085    -- accounting for a distributeion
324086    --
324087    xla_ae_lines_pkg.SetTrxReversalAttrs
324088       (p_event_id              => l_event_id
324089       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
324090       ,p_trx_reversal_source   => l_trx_reversal_source);
324091 
324092 END IF;
324093 
324094 
324095 ----------------------------------------------------------------
324096 -- 4262811 -  update the header statuses to invalid in need be
324097 ----------------------------------------------------------------
324098 --
324099 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
324100 
324101 
324102   -----------------------------------------------
324103   -- No accrual reversal for the event class/type
324104   -----------------------------------------------
324105 ----------------------------------------------------------------
324106 
324107 --
324108 -- this ends the header loop iteration for one bulk fetch
324109 --
324110 END LOOP;
324111 
324112 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
324113 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
324114 
324115 --
324116 -- insert dummy rows into lines gt table that were created due to
324117 -- transaction reversals
324118 --
324119 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
324120    l_result := XLA_AE_LINES_PKG.InsertLines;
324121 END IF;
324122 
324123 --
324124 -- reset the temp_line_num for each set of events fetched from header
324125 -- cursor rather than doing it for each new event in line cursor
324126 -- Bug 3939231
324127 --
324128 xla_ae_lines_pkg.g_temp_line_num := 0;
324129 
324130 
324131 
324132 --
324133 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
324134 --
324135 --
324136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
324137 
324138       trace
324139          (p_msg      => 'SQL - FETCH line_cur'
324140          ,p_level    => C_LEVEL_STATEMENT
324141          ,p_module   => l_log_module);
324142 
324143 END IF;
324144 --
324145 --
324146 LOOP
324147   --
324148   FETCH line_cur BULK COLLECT INTO
324149         l_array_entity_id
324150       , l_array_legal_entity_id
324151       , l_array_entity_code
324152       , l_array_transaction_num
324153       , l_array_event_id
324154       , l_array_class_code
324155       , l_array_event_type
324156       , l_array_event_number
324157       , l_array_event_date
324158       , l_array_transaction_date
324159       , l_array_reference_num_1
324160       , l_array_reference_num_2
324161       , l_array_reference_num_3
324162       , l_array_reference_num_4
324163       , l_array_reference_char_1
324164       , l_array_reference_char_2
324165       , l_array_reference_char_3
324166       , l_array_reference_char_4
324167       , l_array_reference_date_1
324168       , l_array_reference_date_2
324169       , l_array_reference_date_3
324170       , l_array_reference_date_4
324171       , l_array_event_created_by
324172       , l_array_budgetary_control_flag
324173       , l_array_extract_line_num 
324174       , l_array_source_11
324175       , l_array_source_15
324176       , l_array_source_84
324177       , l_array_source_88
324178       , l_array_source_91
324179       , l_array_source_92
324180       , l_array_source_93
324181       , l_array_source_94
324182       , l_array_source_95
324183       , l_array_source_97
324184       , l_array_source_108
324185       LIMIT l_rows;
324186 
324187   --
324188   IF (C_LEVEL_EVENT >= g_log_level) THEN
324189             trace
324190                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
324191                ,p_level    => C_LEVEL_EVENT
324192                ,p_module   => l_log_module);
324193   END IF;
324194   --
324195   EXIT WHEN l_array_entity_id.count = 0;
324196 
324197   XLA_AE_LINES_PKG.g_rec_lines := null;
324198 
324199 --
324200 -- Bug 4458708
324201 --
324202 XLA_AE_LINES_PKG.g_LineNumber := 0;
324203 --
324204 --
324205 
324206 FOR Idx IN 1..l_array_event_id.count LOOP
324207    --
324208    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
324209    --
324210    l_event_id := l_array_event_id(idx);  -- 5648433
324211 
324212    --
324213    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
324214    --
324215 
324216    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
324217              (g_array_event(l_event_id).array_value_num('header_index'))
324218          ,'N'
324219          ) <> 'Y'
324220    THEN
324221       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
324222          trace
324223             (p_msg      => 'Trancaction revesal option is not Y '
324224             ,p_level    => C_LEVEL_STATEMENT
324225             ,p_module   => l_log_module);
324226       END IF;
324227 
324228 --
324229 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
324230 --
324231 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
324232 --
324233 -- set event info as cache for other routines to refer event attributes
324234 --
324235 
324236 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
324237    l_previous_event_id := l_event_id;
324238 
324239    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
324240       (p_application_id           => p_application_id
324241       ,p_primary_ledger_id        => p_primary_ledger_id
324242       ,p_base_ledger_id           => p_base_ledger_id
324243       ,p_target_ledger_id         => p_target_ledger_id
324244       ,p_entity_id                => l_array_entity_id(Idx)
324245       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
324246       ,p_entity_code              => l_array_entity_code(Idx)
324247       ,p_transaction_num          => l_array_transaction_num(Idx)
324248       ,p_event_id                 => l_array_event_id(Idx)
324249       ,p_event_class_code         => l_array_class_code(Idx)
324250       ,p_event_type_code          => l_array_event_type(Idx)
324251       ,p_event_number             => l_array_event_number(Idx)
324252       ,p_event_date               => l_array_event_date(Idx)
324253       ,p_transaction_date         => l_array_transaction_date(Idx)
324254       ,p_reference_num_1          => l_array_reference_num_1(Idx)
324255       ,p_reference_num_2          => l_array_reference_num_2(Idx)
324256       ,p_reference_num_3          => l_array_reference_num_3(Idx)
324257       ,p_reference_num_4          => l_array_reference_num_4(Idx)
324258       ,p_reference_char_1         => l_array_reference_char_1(Idx)
324259       ,p_reference_char_2         => l_array_reference_char_2(Idx)
324260       ,p_reference_char_3         => l_array_reference_char_3(Idx)
324261       ,p_reference_char_4         => l_array_reference_char_4(Idx)
324262       ,p_reference_date_1         => l_array_reference_date_1(Idx)
324263       ,p_reference_date_2         => l_array_reference_date_2(Idx)
324264       ,p_reference_date_3         => l_array_reference_date_3(Idx)
324265       ,p_reference_date_4         => l_array_reference_date_4(Idx)
324266       ,p_event_created_by         => l_array_event_created_by(Idx)
324267       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
324268        --
324269 END IF;
324270 
324271 
324272 
324273 --
324274 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
324275 
324276 l_acct_reversal_source := SUBSTR(NULL, 1,30);
324277 
324278 IF l_continue_with_lines THEN
324279    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
324280       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
324281 
324282       xla_accounting_err_pkg.build_message
324283          (p_appli_s_name            => 'XLA'
324284          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
324285          ,p_token_1                 => 'LINE_NUMBER'
324286          ,p_value_1                 => l_array_extract_line_num(Idx)
324287          ,p_token_2                 => 'PRODUCT_NAME'
324288          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
324289          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
324290          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
324291          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
324292 
324293    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
324294       --
324295       -- following sets the accounting attributes needed to reverse
324296       -- accounting for a distributeion
324297       --
324298 
324299       --
324300       -- 5217187
324301       --
324302       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
324303       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
324304                                        g_array_event(l_event_id).array_value_num('header_index'));
324305       --
324306       --
324307 
324308       -- No reversal code generated
324309 
324310       xla_ae_lines_pkg.SetAcctReversalAttrs
324311          (p_event_id             => l_event_id
324312          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
324313          ,p_calculate_acctd_flag => l_calculate_acctd_flag
324314          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
324315    END IF;
324316 
324317    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
324318        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
324319 
324320 --
324321 AcctLineType_78 (
324322  p_application_id  => p_application_id
324323  ,p_event_id     => l_event_id
324324  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324325  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324326  ,p_actual_flag => l_actual_flag
324327  ,p_balance_type_code => l_balance_type_code
324328  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324329  
324330  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324331  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324332  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324333  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324334  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324335  , p_source_11 => l_array_source_11(Idx)
324336  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324337  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324338  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324339  , p_source_84 => l_array_source_84(Idx)
324340  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324341  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324342  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324343  , p_source_88 => l_array_source_88(Idx)
324344  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324345  , p_source_91 => l_array_source_91(Idx)
324346  , p_source_92 => l_array_source_92(Idx)
324347  , p_source_93 => l_array_source_93(Idx)
324348  , p_source_94 => l_array_source_94(Idx)
324349  , p_source_95 => l_array_source_95(Idx)
324350  , p_source_97 => l_array_source_97(Idx)
324351  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324352  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324353  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324354  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324355  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324356  );
324357 If(l_balance_type_code = 'A') THEN
324358   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324359 END IF;
324360 
324361 --
324362 
324363 
324364 --
324365 AcctLineType_134 (
324366  p_application_id  => p_application_id
324367  ,p_event_id     => l_event_id
324368  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324369  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324370  ,p_actual_flag => l_actual_flag
324371  ,p_balance_type_code => l_balance_type_code
324372  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324373  
324374  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324375  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324376  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324377  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324378  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324379  , p_source_11 => l_array_source_11(Idx)
324380  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324381  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324382  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324383  , p_source_84 => l_array_source_84(Idx)
324384  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324385  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324386  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324387  , p_source_88 => l_array_source_88(Idx)
324388  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324389  , p_source_91 => l_array_source_91(Idx)
324390  , p_source_92 => l_array_source_92(Idx)
324391  , p_source_93 => l_array_source_93(Idx)
324392  , p_source_94 => l_array_source_94(Idx)
324393  , p_source_95 => l_array_source_95(Idx)
324394  , p_source_97 => l_array_source_97(Idx)
324395  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324396  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324397  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324398  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324399  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324400  );
324401 If(l_balance_type_code = 'A') THEN
324402   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324403 END IF;
324404 
324405 --
324406 
324407 
324408 --
324409 AcctLineType_160 (
324410  p_application_id  => p_application_id
324411  ,p_event_id     => l_event_id
324412  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324413  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324414  ,p_actual_flag => l_actual_flag
324415  ,p_balance_type_code => l_balance_type_code
324416  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324417  
324418  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324419  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324420  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324421  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324422  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324423  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
324424  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324425  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324426  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324427  , p_source_84 => l_array_source_84(Idx)
324428  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324429  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324430  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324431  , p_source_88 => l_array_source_88(Idx)
324432  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324433  , p_source_91 => l_array_source_91(Idx)
324434  , p_source_92 => l_array_source_92(Idx)
324435  , p_source_93 => l_array_source_93(Idx)
324436  , p_source_94 => l_array_source_94(Idx)
324437  , p_source_95 => l_array_source_95(Idx)
324438  , p_source_97 => l_array_source_97(Idx)
324439  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324440  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324441  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324442  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324443  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324444  );
324445 If(l_balance_type_code = 'A') THEN
324446   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324447 END IF;
324448 
324449 --
324450 
324451 
324452 --
324453 AcctLineType_275 (
324454  p_application_id  => p_application_id
324455  ,p_event_id     => l_event_id
324456  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324457  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324458  ,p_actual_flag => l_actual_flag
324459  ,p_balance_type_code => l_balance_type_code
324460  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324461  
324462  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324463  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324464  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324465  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324466  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324467  , p_source_15 => l_array_source_15(Idx)
324468  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
324469  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
324470  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
324471  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
324472  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
324473  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324474  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324475  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324476  , p_source_84 => l_array_source_84(Idx)
324477  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324478  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324479  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324480  , p_source_88 => l_array_source_88(Idx)
324481  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324482  , p_source_91 => l_array_source_91(Idx)
324483  , p_source_92 => l_array_source_92(Idx)
324484  , p_source_93 => l_array_source_93(Idx)
324485  , p_source_94 => l_array_source_94(Idx)
324486  , p_source_95 => l_array_source_95(Idx)
324487  , p_source_97 => l_array_source_97(Idx)
324488  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324489  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324490  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324491  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324492  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324493  , p_source_108 => l_array_source_108(Idx)
324494  );
324495 If(l_balance_type_code = 'A') THEN
324496   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324497 END IF;
324498 
324499 --
324500 
324501 
324502 --
324503 AcctLineType_303 (
324504  p_application_id  => p_application_id
324505  ,p_event_id     => l_event_id
324506  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324507  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324508  ,p_actual_flag => l_actual_flag
324509  ,p_balance_type_code => l_balance_type_code
324510  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324511  
324512  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324513  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324514  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324515  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324516  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324517  , p_source_11 => l_array_source_11(Idx)
324518  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324519  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324520  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324521  , p_source_84 => l_array_source_84(Idx)
324522  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324523  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324524  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324525  , p_source_88 => l_array_source_88(Idx)
324526  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324527  , p_source_91 => l_array_source_91(Idx)
324528  , p_source_92 => l_array_source_92(Idx)
324529  , p_source_93 => l_array_source_93(Idx)
324530  , p_source_94 => l_array_source_94(Idx)
324531  , p_source_95 => l_array_source_95(Idx)
324532  , p_source_97 => l_array_source_97(Idx)
324533  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324534  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324535  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324536  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324537  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324538  );
324539 If(l_balance_type_code = 'A') THEN
324540   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324541 END IF;
324542 
324543 --
324544 
324545 
324546 --
324547 AcctLineType_329 (
324548  p_application_id  => p_application_id
324549  ,p_event_id     => l_event_id
324550  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324551  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324552  ,p_actual_flag => l_actual_flag
324553  ,p_balance_type_code => l_balance_type_code
324554  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324555  
324556  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324557  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324558  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324559  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324560  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324561  , p_source_11 => l_array_source_11(Idx)
324562  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324563  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324564  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324565  , p_source_84 => l_array_source_84(Idx)
324566  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324567  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324568  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324569  , p_source_88 => l_array_source_88(Idx)
324570  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324571  , p_source_91 => l_array_source_91(Idx)
324572  , p_source_92 => l_array_source_92(Idx)
324573  , p_source_93 => l_array_source_93(Idx)
324574  , p_source_94 => l_array_source_94(Idx)
324575  , p_source_95 => l_array_source_95(Idx)
324576  , p_source_97 => l_array_source_97(Idx)
324577  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324578  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324579  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324580  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324581  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324582  );
324583 If(l_balance_type_code = 'A') THEN
324584   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324585 END IF;
324586 
324587 --
324588 
324589 
324590 --
324591 AcctLineType_400 (
324592  p_application_id  => p_application_id
324593  ,p_event_id     => l_event_id
324594  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324595  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324596  ,p_actual_flag => l_actual_flag
324597  ,p_balance_type_code => l_balance_type_code
324598  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324599  
324600  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324601  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324602  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324603  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324604  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324605  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
324606  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324607  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324608  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324609  , p_source_84 => l_array_source_84(Idx)
324610  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324611  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324612  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324613  , p_source_88 => l_array_source_88(Idx)
324614  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324615  , p_source_91 => l_array_source_91(Idx)
324616  , p_source_92 => l_array_source_92(Idx)
324617  , p_source_93 => l_array_source_93(Idx)
324618  , p_source_94 => l_array_source_94(Idx)
324619  , p_source_95 => l_array_source_95(Idx)
324620  , p_source_97 => l_array_source_97(Idx)
324621  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324622  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324623  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324624  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324625  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324626  );
324627 If(l_balance_type_code = 'A') THEN
324628   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324629 END IF;
324630 
324631 --
324632 
324633 
324634 --
324635 AcctLineType_416 (
324636  p_application_id  => p_application_id
324637  ,p_event_id     => l_event_id
324638  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324639  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324640  ,p_actual_flag => l_actual_flag
324641  ,p_balance_type_code => l_balance_type_code
324642  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324643  
324644  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324645  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324646  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324647  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324648  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324649  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
324650  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324651  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324652  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324653  , p_source_84 => l_array_source_84(Idx)
324654  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324655  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324656  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324657  , p_source_88 => l_array_source_88(Idx)
324658  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324659  , p_source_91 => l_array_source_91(Idx)
324660  , p_source_92 => l_array_source_92(Idx)
324661  , p_source_93 => l_array_source_93(Idx)
324662  , p_source_94 => l_array_source_94(Idx)
324663  , p_source_95 => l_array_source_95(Idx)
324664  , p_source_97 => l_array_source_97(Idx)
324665  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324666  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324667  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324668  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324669  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324670  );
324671 If(l_balance_type_code = 'A') THEN
324672   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324673 END IF;
324674 
324675 --
324676 
324677 
324678 --
324679 AcctLineType_470 (
324680  p_application_id  => p_application_id
324681  ,p_event_id     => l_event_id
324682  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324683  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324684  ,p_actual_flag => l_actual_flag
324685  ,p_balance_type_code => l_balance_type_code
324686  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324687  
324688  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324689  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324690  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324691  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324692  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324693  , p_source_11 => l_array_source_11(Idx)
324694  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324695  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324696  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324697  , p_source_84 => l_array_source_84(Idx)
324698  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324699  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324700  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324701  , p_source_88 => l_array_source_88(Idx)
324702  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324703  , p_source_91 => l_array_source_91(Idx)
324704  , p_source_92 => l_array_source_92(Idx)
324705  , p_source_93 => l_array_source_93(Idx)
324706  , p_source_94 => l_array_source_94(Idx)
324707  , p_source_95 => l_array_source_95(Idx)
324708  , p_source_97 => l_array_source_97(Idx)
324709  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324710  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324711  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324712  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324713  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324714  );
324715 If(l_balance_type_code = 'A') THEN
324716   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324717 END IF;
324718 
324719 --
324720 
324721 
324722 --
324723 AcctLineType_480 (
324724  p_application_id  => p_application_id
324725  ,p_event_id     => l_event_id
324726  ,p_calculate_acctd_flag => l_calculate_acctd_flag
324727  ,p_calculate_g_l_flag => l_calculate_g_l_flag
324728  ,p_actual_flag => l_actual_flag
324729  ,p_balance_type_code => l_balance_type_code
324730  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
324731  
324732  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
324733  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
324734  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
324735  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
324736  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
324737  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
324738  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
324739  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
324740  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
324741  , p_source_84 => l_array_source_84(Idx)
324742  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
324743  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
324744  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
324745  , p_source_88 => l_array_source_88(Idx)
324746  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
324747  , p_source_91 => l_array_source_91(Idx)
324748  , p_source_92 => l_array_source_92(Idx)
324749  , p_source_93 => l_array_source_93(Idx)
324750  , p_source_94 => l_array_source_94(Idx)
324751  , p_source_95 => l_array_source_95(Idx)
324752  , p_source_97 => l_array_source_97(Idx)
324753  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
324754  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
324755  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
324756  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
324757  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
324758  );
324759 If(l_balance_type_code = 'A') THEN
324760   l_actual_gain_loss_ref := l_gain_or_loss_ref;
324761 END IF;
324762 
324763 --
324764 
324765       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
324766       -- or secondary ledger that has different currency with primary
324767       -- or alc that is calculated by sla
324768       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
324769             (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'))
324770 
324771 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
324772 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
324773           AND (l_actual_flag = 'A')) THEN
324774         XLA_AE_LINES_PKG.CreateGainOrLossLines(
324775           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
324776          ,p_application_id   => p_application_id
324777          ,p_amb_context_code => 'DEFAULT'
324778          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
324779          ,p_event_class_code => C_EVENT_CLASS_CODE
324780          ,p_event_type_code  => C_EVENT_TYPE_CODE
324781          
324782          ,p_gain_ccid        => -1
324783          ,p_loss_ccid        => -1
324784 
324785          ,p_actual_flag      => l_actual_flag
324786          ,p_enc_flag         => null
324787          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
324788          ,p_enc_g_l_ref      => null
324789          );
324790       END IF;
324791    END IF;
324792 END IF;
324793 
324794    ELSE
324795       --
324796       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
324797       --
324798       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
324799          trace
324800             (p_msg      => 'Trancaction revesal option is Y'
324801             ,p_level    => C_LEVEL_STATEMENT
324802             ,p_module   => l_log_module);
324803       END IF;
324804    END IF;
324805 
324806 END LOOP;
324807 l_result := XLA_AE_LINES_PKG.InsertLines ;
324808 end loop;
324809 close line_cur;
324810 
324811 
324812 --
324813 -- insert headers into xla_ae_headers_gt table
324814 --
324815 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
324816 
324817 -- insert into errors table here.
324818 
324819 END LOOP;
324820 
324821 --
324822 -- 4865292
324823 --
324824 -- Compare g_hdr_extract_count with event count in
324825 -- CreateHeadersAndLines.
324826 --
324827 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
324828 
324829 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
324830    trace (p_msg     => '# rows extracted from header extract objects '
324831                     || ' (running total): '
324832                     || g_hdr_extract_count
324833          ,p_level   => C_LEVEL_STATEMENT
324834          ,p_module  => l_log_module);
324835 END IF;
324836 
324837 CLOSE header_cur;
324838 --
324839 
324840 --
324841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
324842    trace
324843       (p_msg      => 'END of EventType_556'
324844       ,p_level    => C_LEVEL_PROCEDURE
324845       ,p_module   => l_log_module);
324846 END IF;
324847 --
324848 RETURN l_result;
324849 EXCEPTION
324850 WHEN xla_exceptions_pkg.application_exception THEN
324851    
324852 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
324853 
324854    
324855 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
324856 
324857    RAISE;
324858 
324859 WHEN NO_DATA_FOUND THEN
324860 
324861 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
324862 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
324863 
324864 FOR header_record IN header_cur
324865 LOOP
324866     l_array_header_events(header_record.event_id) := header_record.event_id;
324867 END LOOP;
324868 
324869 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
324870 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
324871 
324872 fnd_file.put_line(fnd_file.LOG, '                    ');
324873 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
324874 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
324875 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
324876 
324877 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
324878 LOOP
324879 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
324880 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
324881         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
324882 	END IF;
324883 END LOOP;
324884 
324885 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
324886 fnd_file.put_line(fnd_file.LOG, '                    ');
324887 
324888 
324889 xla_exceptions_pkg.raise_message
324890       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_556');
324891 
324892 
324893 WHEN OTHERS THEN
324894    xla_exceptions_pkg.raise_message
324895       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_556');
324896 END EventType_556;
324897 --
324898 
324899 ---------------------------------------
324900 --
324901 -- PRIVATE PROCEDURE
324902 --         insert_sources_557
324903 --
324904 ----------------------------------------
324905 --
324906 PROCEDURE insert_sources_557(
324907                                 p_target_ledger_id       IN NUMBER
324908                               , p_language               IN VARCHAR2
324909                               , p_sla_ledger_id          IN NUMBER
324910                               , p_pad_start_date         IN DATE
324911                               , p_pad_end_date           IN DATE
324912                          )
324913 IS
324914 
324915 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_TP';
324916 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
324917 p_apps_owner                   VARCHAR2(30);
324918 l_log_module                   VARCHAR2(240);
324919 BEGIN
324920 IF g_log_enabled THEN
324921       l_log_module := C_DEFAULT_MODULE||'.insert_sources_557';
324922 END IF;
324923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
324924 
324925       trace
324926          (p_msg      => 'BEGIN of insert_sources_557'
324927          ,p_level    => C_LEVEL_PROCEDURE
324928          ,p_module   => l_log_module);
324929 
324930 END IF;
324931 
324932 -- select APPS owner
324933 SELECT oracle_username
324934   INTO p_apps_owner
324935   FROM fnd_oracle_userid
324936  WHERE read_only_flag = 'U'
324937 ;
324938 
324939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
324940       trace
324941          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
324942                         ' - p_language = '||p_language||
324943                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
324944                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
324945                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
324946                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
324947          ,p_level    => C_LEVEL_STATEMENT
324948          ,p_module   => l_log_module);
324949 END IF;
324950 
324951 
324952 --
324953 INSERT INTO xla_diag_sources --hdr1
324954 (
324955         event_id
324956       , ledger_id
324957       , sla_ledger_id
324958       , description_language
324959       , object_name
324960       , object_type_code
324961       , line_number
324962       , source_application_id
324963       , source_type_code
324964       , source_code
324965       , source_value
324966       , source_meaning
324967       , created_by
324968       , creation_date
324969       , last_update_date
324970       , last_updated_by
324971       , last_update_login
324972       , program_update_date
324973       , program_application_id
324974       , program_id
324975       , request_id
324976 )
324977 SELECT
324978         event_id
324979       , p_target_ledger_id
324980       , p_sla_ledger_id
324981       , p_language
324982       , object_name
324983       , object_type_code
324984       , line_number
324985       , source_application_id
324986       , source_type_code
324987       , source_code
324988       , SUBSTR(source_value ,1,1996)
324989       , SUBSTR(source_meaning,1,200)
324990       , xla_environment_pkg.g_Usr_Id
324991       , TRUNC(SYSDATE)
324992       , TRUNC(SYSDATE)
324993       , xla_environment_pkg.g_Usr_Id
324994       , xla_environment_pkg.g_Login_Id
324995       , TRUNC(SYSDATE)
324996       , xla_environment_pkg.g_Prog_Appl_Id
324997       , xla_environment_pkg.g_Prog_Id
324998       , xla_environment_pkg.g_Req_Id
324999   FROM (
325000        SELECT xet.event_id                  event_id
325001             , 0                             line_number
325002             , CASE r
325003                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
325004                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
325005                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
325006                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
325007                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
325008                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
325009                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
325010                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
325011                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
325012                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
325013                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
325014                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
325015                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
325016                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
325017                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
325018                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
325019                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
325020                 WHEN 18 THEN 'CST_XLA_INV_REF_V' 
325021                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
325022                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
325023                 WHEN 21 THEN 'CST_XLA_INV_REF_V' 
325024                 WHEN 22 THEN 'PSA_CST_XLA_UPG_V' 
325025                 WHEN 23 THEN 'CST_XLA_INV_REF_V' 
325026                 WHEN 24 THEN 'CST_XLA_INV_REF_V' 
325027                 WHEN 25 THEN 'PO_REQ_DISTS_REF_V' 
325028                 WHEN 26 THEN 'PO_REQ_HEADERS_REF_V' 
325029                 WHEN 27 THEN 'CST_XLA_INV_HEADERS_V' 
325030                 
325031                ELSE null
325032               END                           object_name
325033             , CASE r
325034                 WHEN 1 THEN 'HEADER' 
325035                 WHEN 2 THEN 'HEADER' 
325036                 WHEN 3 THEN 'HEADER' 
325037                 WHEN 4 THEN 'HEADER' 
325038                 WHEN 5 THEN 'HEADER' 
325039                 WHEN 6 THEN 'HEADER' 
325040                 WHEN 7 THEN 'HEADER' 
325041                 WHEN 8 THEN 'HEADER' 
325042                 WHEN 9 THEN 'HEADER' 
325043                 WHEN 10 THEN 'HEADER' 
325044                 WHEN 11 THEN 'HEADER' 
325045                 WHEN 12 THEN 'HEADER' 
325046                 WHEN 13 THEN 'HEADER' 
325047                 WHEN 14 THEN 'HEADER' 
325048                 WHEN 15 THEN 'HEADER' 
325049                 WHEN 16 THEN 'HEADER' 
325050                 WHEN 17 THEN 'HEADER' 
325051                 WHEN 18 THEN 'HEADER' 
325052                 WHEN 19 THEN 'HEADER' 
325053                 WHEN 20 THEN 'HEADER' 
325054                 WHEN 21 THEN 'HEADER' 
325055                 WHEN 22 THEN 'HEADER' 
325056                 WHEN 23 THEN 'HEADER' 
325057                 WHEN 24 THEN 'HEADER' 
325058                 WHEN 25 THEN 'HEADER' 
325059                 WHEN 26 THEN 'HEADER' 
325060                 WHEN 27 THEN 'HEADER' 
325061                 
325062                 ELSE null
325063               END                           object_type_code
325064             , CASE r
325065                 WHEN 1 THEN '707' 
325066                 WHEN 2 THEN '707' 
325067                 WHEN 3 THEN '707' 
325068                 WHEN 4 THEN '707' 
325069                 WHEN 5 THEN '707' 
325070                 WHEN 6 THEN '707' 
325071                 WHEN 7 THEN '707' 
325072                 WHEN 8 THEN '707' 
325073                 WHEN 9 THEN '707' 
325074                 WHEN 10 THEN '707' 
325075                 WHEN 11 THEN '707' 
325076                 WHEN 12 THEN '707' 
325077                 WHEN 13 THEN '707' 
325078                 WHEN 14 THEN '707' 
325079                 WHEN 15 THEN '707' 
325080                 WHEN 16 THEN '707' 
325081                 WHEN 17 THEN '707' 
325082                 WHEN 18 THEN '707' 
325083                 WHEN 19 THEN '707' 
325084                 WHEN 20 THEN '707' 
325085                 WHEN 21 THEN '707' 
325086                 WHEN 22 THEN '707' 
325087                 WHEN 23 THEN '707' 
325088                 WHEN 24 THEN '707' 
325089                 WHEN 25 THEN '201' 
325090                 WHEN 26 THEN '201' 
325091                 WHEN 27 THEN '707' 
325092                 
325093                 ELSE null
325094               END                           source_application_id
325095             , 'S'             source_type_code
325096             , CASE r
325097                 WHEN 1 THEN 'TRANSACTION_ID' 
325098                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
325099                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
325100                 WHEN 4 THEN 'TRANSACTION_UOM' 
325101                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
325102                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
325103                 WHEN 7 THEN 'PLA_EXPENSE_ACCOUNT' 
325104                 WHEN 8 THEN 'INTERORG_PRICE_VAR_ACCOUNT' 
325105                 WHEN 9 THEN 'PROFIT_IN_INV_ACCOUNT' 
325106                 WHEN 10 THEN 'PLA_MATERIAL_ACCOUNT' 
325107                 WHEN 11 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
325108                 WHEN 12 THEN 'PLA_RESOURCE_ACCOUNT' 
325109                 WHEN 13 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
325110                 WHEN 14 THEN 'PLA_OVERHEAD_ACCOUNT' 
325111                 WHEN 15 THEN 'INV_TXN_EXPENSE_ACCT' 
325112                 WHEN 16 THEN 'APPLIED_TO_APPL_ID' 
325113                 WHEN 17 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
325114                 WHEN 18 THEN 'APPLIED_TO_ENTITY_CODE' 
325115                 WHEN 19 THEN 'DISTRIBUTION_TYPE' 
325116                 WHEN 20 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
325117                 WHEN 21 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
325118                 WHEN 22 THEN 'CST_ENCUM_UPG_OPTION' 
325119                 WHEN 23 THEN 'TXN_PO_DISTRIBUTION_ID' 
325120                 WHEN 24 THEN 'TXN_PO_HEADER_ID' 
325121                 WHEN 25 THEN 'REQ_BUDGET_ACCOUNT' 
325122                 WHEN 26 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
325123                 WHEN 27 THEN 'TRANSFER_TO_GL_INDICATOR' 
325124                 
325125                 ELSE null
325126               END                           source_code
325127             , CASE r
325128                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
325129                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
325130                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
325131                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
325132                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
325133                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
325134                 WHEN 7 THEN TO_CHAR(h7.PLA_EXPENSE_ACCOUNT)
325135                 WHEN 8 THEN TO_CHAR(h1.INTERORG_PRICE_VAR_ACCOUNT)
325136                 WHEN 9 THEN TO_CHAR(h1.PROFIT_IN_INV_ACCOUNT)
325137                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
325138                 WHEN 11 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
325139                 WHEN 12 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
325140                 WHEN 13 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
325141                 WHEN 14 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
325142                 WHEN 15 THEN TO_CHAR(h4.INV_TXN_EXPENSE_ACCT)
325143                 WHEN 16 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
325144                 WHEN 17 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
325145                 WHEN 18 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
325146                 WHEN 19 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
325147                 WHEN 20 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
325148                 WHEN 21 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
325149                 WHEN 22 THEN TO_CHAR(h10.CST_ENCUM_UPG_OPTION)
325150                 WHEN 23 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
325151                 WHEN 24 THEN TO_CHAR(h4.TXN_PO_HEADER_ID)
325152                 WHEN 25 THEN TO_CHAR(h8.REQ_BUDGET_ACCOUNT)
325153                 WHEN 26 THEN TO_CHAR(h9.REQ_ENCUMBRANCE_TYPE_ID)
325154                 WHEN 27 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
325155                 
325156                 ELSE null
325157               END                           source_value
325158             , CASE r
325159                 WHEN 19 THEN fvl85.meaning
325160                 WHEN 27 THEN fvl114.meaning
325161                 
325162                 ELSE null
325163               END               source_meaning
325164         FROM xla_events_gt     xet  
325165       , CST_XLA_INTERORG_PARAMS_REF_V  h1
325166       , CST_XLA_INV_HEADERS_V  h2
325167       , CST_XLA_INV_REF_V  h4
325168       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
325169       , CST_XLA_INV_TXN_TYPES_REF_V  h6
325170       , CST_XLA_PLA_CATEGORY_REF_V  h7
325171       , PO_REQ_DISTS_REF_V  h8
325172       , PO_REQ_HEADERS_REF_V  h9
325173       , PSA_CST_XLA_UPG_V  h10
325174   , fnd_lookup_values    fvl85
325175   , fnd_lookup_values    fvl114
325176             ,(select rownum r from all_objects where rownum <= 27 and owner = p_apps_owner)
325177        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
325178          AND xet.event_type_code = C_EVENT_TYPE_CODE
325179             AND h2.event_id = xet.event_id
325180   AND h1.event_id (+) = h2.event_id
325181  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
325182 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
325183 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg AND h4.bus_flow_req_dist_id=h8.req_distribution_id (+)  AND h4.bus_flow_req_id = h9.req_id (+)  AND h4.rcv_transaction_id = h10.transaction_id (+)    AND fvl85.lookup_type(+)         = 
325184 'CST_DISTRIBUTION_TYPE'
325185   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
325186   AND fvl85.view_application_id(+) = 700
325187   AND fvl85.language(+)            = USERENV('LANG')
325188      AND fvl114.lookup_type(+)         = 'YES_NO'
325189   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
325190   AND fvl114.view_application_id(+) = 0
325191   AND fvl114.language(+)            = USERENV('LANG')
325192   
325193 )
325194 ;
325195 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
325196 
325197       trace
325198          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
325199          ,p_level    => C_LEVEL_STATEMENT
325200          ,p_module   => l_log_module);
325201 
325202 END IF;
325203 --
325204 
325205 
325206 
325207 --
325208 INSERT INTO xla_diag_sources --line1
325209 (
325210         event_id
325211       , ledger_id
325212       , sla_ledger_id
325213       , description_language
325214       , object_name
325215       , object_type_code
325216       , line_number
325217       , source_application_id
325218       , source_type_code
325219       , source_code
325220       , source_value
325221       , source_meaning
325222       , created_by
325223       , creation_date
325224       , last_update_date
325225       , last_updated_by
325226       , last_update_login
325227       , program_update_date
325228       , program_application_id
325229       , program_id
325230       , request_id
325231 )
325232 SELECT  event_id
325233       , p_target_ledger_id
325234       , p_sla_ledger_id
325235       , p_language
325236       , object_name
325237       , object_type_code
325238       , line_number
325239       , source_application_id
325240       , source_type_code
325241       , source_code
325242       , SUBSTR(source_value,1,1996)
325243       , SUBSTR(source_meaning,1,200)
325244       , xla_environment_pkg.g_Usr_Id
325245       , TRUNC(SYSDATE)
325246       , TRUNC(SYSDATE)
325247       , xla_environment_pkg.g_Usr_Id
325248       , xla_environment_pkg.g_Login_Id
325249       , TRUNC(SYSDATE)
325250       , xla_environment_pkg.g_Prog_Appl_Id
325251       , xla_environment_pkg.g_Prog_Id
325252       , xla_environment_pkg.g_Req_Id
325253   FROM (
325254        SELECT xet.event_id                  event_id
325255             , l3.line_number                 line_number
325256             , CASE r
325257                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
325258                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
325259                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
325260                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
325261                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
325262                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
325263                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
325264                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
325265                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
325266                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
325267                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
325268                 
325269                ELSE null
325270               END                           object_name
325271             , CASE r
325272                 WHEN 1 THEN 'LINE' 
325273                 WHEN 2 THEN 'LINE' 
325274                 WHEN 3 THEN 'LINE' 
325275                 WHEN 4 THEN 'LINE' 
325276                 WHEN 5 THEN 'LINE' 
325277                 WHEN 6 THEN 'LINE' 
325278                 WHEN 7 THEN 'LINE' 
325279                 WHEN 8 THEN 'LINE' 
325280                 WHEN 9 THEN 'LINE' 
325281                 WHEN 10 THEN 'LINE' 
325282                 WHEN 11 THEN 'LINE' 
325283                 
325284                 ELSE null
325285               END                           object_type_code
325286             , CASE r
325287                 WHEN 1 THEN '707' 
325288                 WHEN 2 THEN '707' 
325289                 WHEN 3 THEN '707' 
325290                 WHEN 4 THEN '707' 
325291                 WHEN 5 THEN '707' 
325292                 WHEN 6 THEN '707' 
325293                 WHEN 7 THEN '707' 
325294                 WHEN 8 THEN '707' 
325295                 WHEN 9 THEN '707' 
325296                 WHEN 10 THEN '707' 
325297                 WHEN 11 THEN '707' 
325298                 
325299                 ELSE null
325300               END                           source_application_id
325301             , 'S'             source_type_code
325302             , CASE r
325303                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
325304                 WHEN 2 THEN 'COST_ELEMENT_ID' 
325305                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
325306                 WHEN 4 THEN 'CURRENCY_CODE' 
325307                 WHEN 5 THEN 'ENTERED_AMOUNT' 
325308                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
325309                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
325310                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
325311                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
325312                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
325313                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
325314                 
325315                 ELSE null
325316               END                           source_code
325317             , CASE r
325318                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
325319                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
325320                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
325321                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
325322                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
325323                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
325324                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
325325                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
325326                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
325327                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
325328                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
325329                 
325330                 ELSE null
325331               END                           source_value
325332             , CASE r
325333                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
325334                           1009615
325335                          ,TO_CHAR(l3.COST_ELEMENT_ID)
325336                          ,'COST_ELEMENT_ID'
325337                          ,'S'
325338                          ,707)
325339                 
325340                 ELSE null
325341               END               source_meaning
325342          FROM  xla_events_gt     xet  
325343         , CST_XLA_INV_LINES_V  l3
325344             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
325345         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
325346           AND xet.event_type_code = C_EVENT_TYPE_CODE
325347             AND l3.event_id          = xet.event_id
325348 
325349 )
325350 ;
325351 --
325352 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
325353 
325354       trace
325355          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
325356          ,p_level    => C_LEVEL_STATEMENT
325357          ,p_module   => l_log_module);
325358 
325359 END IF;
325360 
325361 
325362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
325363       trace
325364          (p_msg      => 'END of insert_sources_557'
325365          ,p_level    => C_LEVEL_PROCEDURE
325366          ,p_module   => l_log_module);
325367 END IF;
325368 EXCEPTION
325369   WHEN xla_exceptions_pkg.application_exception THEN
325370       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
325371             trace
325372                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
325373                ,p_level    => C_LEVEL_EXCEPTION
325374                ,p_module   => l_log_module);
325375       END IF;
325376       RAISE;
325377   WHEN OTHERS THEN
325378       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
325379             trace
325380                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
325381                ,p_level    => C_LEVEL_EXCEPTION
325382                ,p_module   => l_log_module);
325383        END IF;
325384        xla_exceptions_pkg.raise_message
325385            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_557');
325386 END insert_sources_557;
325387 --
325388 
325389 ---------------------------------------
325390 --
325391 -- PRIVATE FUNCTION
325392 --         EventType_557
325393 --
325394 ----------------------------------------
325395 --
325396 FUNCTION EventType_557
325397        (p_application_id         IN NUMBER
325398        ,p_base_ledger_id         IN NUMBER
325399        ,p_target_ledger_id       IN NUMBER
325400        ,p_language               IN VARCHAR2
325401        ,p_currency_code          IN VARCHAR2
325402        ,p_sla_ledger_id          IN NUMBER
325403        ,p_pad_start_date         IN DATE
325404        ,p_pad_end_date           IN DATE
325405        ,p_primary_ledger_id      IN NUMBER)
325406 RETURN BOOLEAN IS
325407 --
325408 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_TP';
325409 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
325410 
325411 l_calculate_acctd_flag   VARCHAR2(1) :='N';
325412 l_calculate_g_l_flag     VARCHAR2(1) :='N';
325413 --
325414 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325415 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325416 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
325417 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
325418 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325419 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
325420 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
325421 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325422 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
325423 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
325424 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325425 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325426 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325427 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
325428 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
325429 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
325430 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
325431 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
325432 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
325433 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
325434 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
325435 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
325436 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
325437 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
325438 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
325439 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
325440 
325441 l_event_id                             NUMBER;
325442 l_previous_event_id                    NUMBER;
325443 l_first_event_id                       NUMBER;
325444 l_last_event_id                        NUMBER;
325445 
325446 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
325447 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
325448 --
325449 --
325450 l_result                    BOOLEAN := TRUE;
325451 l_rows                      NUMBER  := 1000;
325452 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, Transfer Pricing';
325453 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
325454 l_description               VARCHAR2(4000);
325455 l_transaction_reversal      NUMBER;
325456 l_ae_header_id              NUMBER;
325457 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
325458 l_log_module                VARCHAR2(240);
325459 --
325460 l_acct_reversal_source      VARCHAR2(30);
325461 l_trx_reversal_source       VARCHAR2(30);
325462 
325463 l_continue_with_lines       BOOLEAN := TRUE;
325464 --
325465 l_acc_rev_gl_date_source    DATE;                      -- 4262811
325466 --
325467 type t_array_event_id is table of number index by binary_integer;
325468 
325469 l_rec_array_event                    t_rec_array_event;
325470 l_null_rec_array_event               t_rec_array_event;
325471 l_array_ae_header_id                 xla_number_array_type;
325472 l_actual_flag                        VARCHAR2(1) := NULL;
325473 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
325474 l_balance_type_code                  VARCHAR2(1) :=NULL;
325475 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
325476 
325477 --
325478 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
325479 --
325480 
325481 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
325482 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
325483 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
325484 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
325485 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
325486 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325487 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325488 TYPE t_array_source_36 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PRICE_VAR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325489 TYPE t_array_source_37 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.PROFIT_IN_INV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325490 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325491 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325492 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325493 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325494 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325495 TYPE t_array_source_60 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
325496 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
325497 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
325498 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
325499 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
325500 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
325501 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
325502 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
325503 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
325504 TYPE t_array_source_102 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
325505 TYPE t_array_source_103 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
325506 TYPE t_array_source_104 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
325507 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
325508 
325509 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
325510 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
325511 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
325512 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
325513 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
325514 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
325515 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
325516 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
325517 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
325518 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
325519 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
325520 
325521 l_array_source_1              t_array_source_1;
325522 l_array_source_2              t_array_source_2;
325523 l_array_source_3              t_array_source_3;
325524 l_array_source_4              t_array_source_4;
325525 l_array_source_5              t_array_source_5;
325526 l_array_source_22              t_array_source_22;
325527 l_array_source_24              t_array_source_24;
325528 l_array_source_36              t_array_source_36;
325529 l_array_source_37              t_array_source_37;
325530 l_array_source_41              t_array_source_41;
325531 l_array_source_42              t_array_source_42;
325532 l_array_source_43              t_array_source_43;
325533 l_array_source_44              t_array_source_44;
325534 l_array_source_45              t_array_source_45;
325535 l_array_source_60              t_array_source_60;
325536 l_array_source_79              t_array_source_79;
325537 l_array_source_80              t_array_source_80;
325538 l_array_source_81              t_array_source_81;
325539 l_array_source_85              t_array_source_85;
325540 l_array_source_85_meaning      t_array_lookup_meaning;
325541 l_array_source_87              t_array_source_87;
325542 l_array_source_89              t_array_source_89;
325543 l_array_source_100              t_array_source_100;
325544 l_array_source_101              t_array_source_101;
325545 l_array_source_102              t_array_source_102;
325546 l_array_source_103              t_array_source_103;
325547 l_array_source_104              t_array_source_104;
325548 l_array_source_114              t_array_source_114;
325549 l_array_source_114_meaning      t_array_lookup_meaning;
325550 
325551 l_array_source_11      t_array_source_11;
325552 l_array_source_15      t_array_source_15;
325553 l_array_source_84      t_array_source_84;
325554 l_array_source_88      t_array_source_88;
325555 l_array_source_91      t_array_source_91;
325556 l_array_source_92      t_array_source_92;
325557 l_array_source_93      t_array_source_93;
325558 l_array_source_94      t_array_source_94;
325559 l_array_source_95      t_array_source_95;
325560 l_array_source_97      t_array_source_97;
325561 l_array_source_108      t_array_source_108;
325562 
325563 --
325564 CURSOR header_cur
325565 IS
325566 SELECT /*+ leading(xet) cardinality(xet,1) */
325567 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
325568 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
325569     xet.entity_id
325570   , xet.legal_entity_id
325571   , xet.entity_code
325572   , xet.transaction_number
325573   , xet.event_id
325574   , xet.event_class_code
325575   , xet.event_type_code
325576   , xet.event_number
325577   , xet.event_date
325578   , xet.transaction_date
325579   , xet.reference_num_1
325580   , xet.reference_num_2
325581   , xet.reference_num_3
325582   , xet.reference_num_4
325583   , xet.reference_char_1
325584   , xet.reference_char_2
325585   , xet.reference_char_3
325586   , xet.reference_char_4
325587   , xet.reference_date_1
325588   , xet.reference_date_2
325589   , xet.reference_date_3
325590   , xet.reference_date_4
325591   , xet.event_created_by
325592   , xet.budgetary_control_flag 
325593   , h2.TRANSACTION_ID    source_1
325594   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
325595   , h4.TRANSACTION_QUANTITY    source_3
325596   , h4.TRANSACTION_UOM    source_4
325597   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
325598   , h7.PLA_BRIDGING_ACCOUNT    source_22
325599   , h7.PLA_EXPENSE_ACCOUNT    source_24
325600   , h1.INTERORG_PRICE_VAR_ACCOUNT    source_36
325601   , h1.PROFIT_IN_INV_ACCOUNT    source_37
325602   , h7.PLA_MATERIAL_ACCOUNT    source_41
325603   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
325604   , h7.PLA_RESOURCE_ACCOUNT    source_43
325605   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
325606   , h7.PLA_OVERHEAD_ACCOUNT    source_45
325607   , h4.INV_TXN_EXPENSE_ACCT    source_60
325608   , h4.APPLIED_TO_APPL_ID    source_79
325609   , h4.APPLIED_TO_DIST_LINK_TYPE    source_80
325610   , h4.APPLIED_TO_ENTITY_CODE    source_81
325611   , h2.DISTRIBUTION_TYPE    source_85
325612   , fvl85.meaning   source_85_meaning
325613   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
325614   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
325615   , h10.CST_ENCUM_UPG_OPTION    source_100
325616   , h4.TXN_PO_DISTRIBUTION_ID    source_101
325617   , h4.TXN_PO_HEADER_ID    source_102
325618   , h8.REQ_BUDGET_ACCOUNT    source_103
325619   , h9.REQ_ENCUMBRANCE_TYPE_ID    source_104
325620   , h2.TRANSFER_TO_GL_INDICATOR    source_114
325621   , fvl114.meaning   source_114_meaning
325622   FROM xla_events_gt     xet 
325623   , CST_XLA_INTERORG_PARAMS_REF_V  h1
325624   , CST_XLA_INV_HEADERS_V  h2
325625   , CST_XLA_INV_REF_V  h4
325626   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
325627   , CST_XLA_INV_TXN_TYPES_REF_V  h6
325628   , CST_XLA_PLA_CATEGORY_REF_V  h7
325629   , PO_REQ_DISTS_REF_V  h8
325630   , PO_REQ_HEADERS_REF_V  h9
325631   , PSA_CST_XLA_UPG_V  h10
325632   , fnd_lookup_values    fvl85
325633   , fnd_lookup_values    fvl114
325634  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
325635    and xet.event_type_code = C_EVENT_TYPE_CODE
325636    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
325637   AND h1.event_id (+) = h2.event_id
325638  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
325639 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
325640 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG AND h4.BUS_FLOW_REQ_DIST_ID=h8.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h9.REQ_ID (+)  AND h4.rcv_transaction_id = h10.transaction_id (+)    AND fvl85.lookup_type(+)         = 
325641 'CST_DISTRIBUTION_TYPE'
325642   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
325643   AND fvl85.view_application_id(+) = 700
325644   AND fvl85.language(+)            = USERENV('LANG')
325645      AND fvl114.lookup_type(+)         = 'YES_NO'
325646   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
325647   AND fvl114.view_application_id(+) = 0
325648   AND fvl114.language(+)            = USERENV('LANG')
325649   
325650  ORDER BY event_id
325651 ;
325652 
325653 
325654 --
325655 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
325656 IS
325657 SELECT /*+ leading(xet) cardinality(xet,1) */
325658 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
325659 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
325660     xet.entity_id
325661    ,xet.legal_entity_id
325662    ,xet.entity_code
325663    ,xet.transaction_number
325664    ,xet.event_id
325665    ,xet.event_class_code
325666    ,xet.event_type_code
325667    ,xet.event_number
325668    ,xet.event_date
325669    ,xet.transaction_date
325670    ,xet.reference_num_1
325671    ,xet.reference_num_2
325672    ,xet.reference_num_3
325673    ,xet.reference_num_4
325674    ,xet.reference_char_1
325675    ,xet.reference_char_2
325676    ,xet.reference_char_3
325677    ,xet.reference_char_4
325678    ,xet.reference_date_1
325679    ,xet.reference_date_2
325680    ,xet.reference_date_3
325681    ,xet.reference_date_4
325682    ,xet.event_created_by
325683    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
325684   , l3.CODE_COMBINATION_ID    source_11
325685   , l3.COST_ELEMENT_ID    source_15
325686   , l3.DISTRIBUTION_IDENTIFIER    source_84
325687   , l3.CURRENCY_CODE    source_88
325688   , l3.ENTERED_AMOUNT    source_91
325689   , l3.CURRENCY_CONVERSION_DATE    source_92
325690   , l3.CURRENCY_CONVERSION_RATE    source_93
325691   , l3.CURRENCY_CONVERSION_TYPE    source_94
325692   , l3.ACCOUNTED_AMOUNT    source_95
325693   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
325694   , l3.L_ORGANIZATION_CODE    source_108
325695   FROM xla_events_gt     xet 
325696   , CST_XLA_INV_LINES_V  l3
325697  WHERE xet.event_id between x_first_event_id and x_last_event_id
325698    and xet.event_date between p_pad_start_date and p_pad_end_date
325699    and xet.event_type_code = C_EVENT_TYPE_CODE
325700    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
325701 ;
325702 
325703 --
325704 BEGIN
325705 IF g_log_enabled THEN
325706    l_log_module := C_DEFAULT_MODULE||'.EventType_557';
325707 END IF;
325708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
325709    trace
325710       (p_msg      => 'BEGIN of EventType_557'
325711       ,p_level    => C_LEVEL_PROCEDURE
325712       ,p_module   => l_log_module);
325713 END IF;
325714 
325715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
325716    trace
325717       (p_msg      => 'p_application_id = '||p_application_id||
325718                      ' - p_base_ledger_id = '||p_base_ledger_id||
325719                      ' - p_target_ledger_id  = '||p_target_ledger_id||
325720                      ' - p_language = '||p_language||
325721                      ' - p_currency_code = '||p_currency_code||
325722                      ' - p_sla_ledger_id = '||p_sla_ledger_id
325723       ,p_level    => C_LEVEL_STATEMENT
325724       ,p_module   => l_log_module);
325725 END IF;
325726 --
325727 -- initialze arrays
325728 --
325729 g_array_event.DELETE;
325730 l_rec_array_event := l_null_rec_array_event;
325731 --
325732 --------------------------------------
325733 -- 4262811 Initialze MPA Line Number
325734 --------------------------------------
325735 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
325736 
325737 --
325738 
325739 --
325740 OPEN header_cur;
325741 --
325742 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
325743    trace
325744    (p_msg      => 'SQL - FETCH header_cur'
325745    ,p_level    => C_LEVEL_STATEMENT
325746    ,p_module   => l_log_module);
325747 END IF;
325748 --
325749 LOOP
325750 FETCH header_cur BULK COLLECT INTO
325751         l_array_entity_id
325752       , l_array_legal_entity_id
325753       , l_array_entity_code
325754       , l_array_transaction_num
325755       , l_array_event_id
325756       , l_array_class_code
325757       , l_array_event_type
325758       , l_array_event_number
325759       , l_array_event_date
325760       , l_array_transaction_date
325761       , l_array_reference_num_1
325762       , l_array_reference_num_2
325763       , l_array_reference_num_3
325764       , l_array_reference_num_4
325765       , l_array_reference_char_1
325766       , l_array_reference_char_2
325767       , l_array_reference_char_3
325768       , l_array_reference_char_4
325769       , l_array_reference_date_1
325770       , l_array_reference_date_2
325771       , l_array_reference_date_3
325772       , l_array_reference_date_4
325773       , l_array_event_created_by
325774       , l_array_budgetary_control_flag 
325775       , l_array_source_1
325776       , l_array_source_2
325777       , l_array_source_3
325778       , l_array_source_4
325779       , l_array_source_5
325780       , l_array_source_22
325781       , l_array_source_24
325782       , l_array_source_36
325783       , l_array_source_37
325784       , l_array_source_41
325785       , l_array_source_42
325786       , l_array_source_43
325787       , l_array_source_44
325788       , l_array_source_45
325789       , l_array_source_60
325790       , l_array_source_79
325791       , l_array_source_80
325792       , l_array_source_81
325793       , l_array_source_85
325794       , l_array_source_85_meaning
325795       , l_array_source_87
325796       , l_array_source_89
325797       , l_array_source_100
325798       , l_array_source_101
325799       , l_array_source_102
325800       , l_array_source_103
325801       , l_array_source_104
325802       , l_array_source_114
325803       , l_array_source_114_meaning
325804       LIMIT l_rows;
325805 --
325806 IF (C_LEVEL_EVENT >= g_log_level) THEN
325807    trace
325808    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
325809    ,p_level    => C_LEVEL_EVENT
325810    ,p_module   => l_log_module);
325811 END IF;
325812 --
325813 EXIT WHEN l_array_entity_id.COUNT = 0;
325814 
325815 -- initialize arrays
325816 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
325817 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
325818 
325819 --
325820 -- Bug 4458708
325821 --
325822 XLA_AE_LINES_PKG.g_LineNumber := 0;
325823 
325824 
325825 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
325826 g_last_hdr_idx := l_array_event_id.LAST;
325827 --
325828 -- loop for the headers. Each iteration is for each header extract row
325829 -- fetched in header cursor
325830 --
325831 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
325832 
325833 --
325834 -- set event info as cache for other routines to refer event attributes
325835 --
325836 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
325837    (p_application_id           => p_application_id
325838    ,p_primary_ledger_id        => p_primary_ledger_id
325839    ,p_base_ledger_id           => p_base_ledger_id
325840    ,p_target_ledger_id         => p_target_ledger_id
325841    ,p_entity_id                => l_array_entity_id(hdr_idx)
325842    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
325843    ,p_entity_code              => l_array_entity_code(hdr_idx)
325844    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
325845    ,p_event_id                 => l_array_event_id(hdr_idx)
325846    ,p_event_class_code         => l_array_class_code(hdr_idx)
325847    ,p_event_type_code          => l_array_event_type(hdr_idx)
325848    ,p_event_number             => l_array_event_number(hdr_idx)
325849    ,p_event_date               => l_array_event_date(hdr_idx)
325850    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
325851    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
325852    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
325853    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
325854    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
325855    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
325856    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
325857    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
325858    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
325859    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
325860    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
325861    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
325862    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
325863    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
325864    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
325865 
325866 --
325867 -- set the status of entry to C_VALID (0)
325868 --
325869 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
325870 
325871 --
325872 -- initialize a row for ae header
325873 --
325874 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
325875 
325876 l_event_id := l_array_event_id(hdr_idx);
325877 
325878 --
325879 -- storing the hdr_idx for event. May be used by line cursor.
325880 --
325881 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
325882 
325883 --
325884 -- store sources from header extract. This can be improved to
325885 -- store only those sources from header extract that may be used in lines
325886 --
325887 
325888 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
325889 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
325890 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
325891 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
325892 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
325893 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
325894 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
325895 g_array_event(l_event_id).array_value_num('source_36') := l_array_source_36(hdr_idx);
325896 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
325897 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
325898 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
325899 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
325900 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
325901 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
325902 g_array_event(l_event_id).array_value_num('source_60') := l_array_source_60(hdr_idx);
325903 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
325904 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
325905 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
325906 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
325907 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
325908 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
325909 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
325910 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
325911 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
325912 g_array_event(l_event_id).array_value_num('source_102') := l_array_source_102(hdr_idx);
325913 g_array_event(l_event_id).array_value_num('source_103') := l_array_source_103(hdr_idx);
325914 g_array_event(l_event_id).array_value_num('source_104') := l_array_source_104(hdr_idx);
325915 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
325916 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
325917 
325918 --
325919 -- initilaize the status of ae headers for diffrent balance types
325920 -- the status is initialised to C_NOT_CREATED (2)
325921 --
325922 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
325923 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
325924 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
325925 
325926 --
325927 -- call api to validate and store accounting attributes for header
325928 --
325929 
325930 ------------------------------------------------------------
325931 -- Accrual Reversal : to get date for Standard Source (NONE)
325932 ------------------------------------------------------------
325933 l_acc_rev_gl_date_source := NULL;
325934 
325935      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
325936       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_104');
325937      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
325938       l_rec_acct_attrs.array_date_value(2) := 
325939 xla_ae_sources_pkg.GetSystemSourceDate(
325940    p_source_code           => 'XLA_REFERENCE_DATE_1'
325941  , p_source_type_code      => 'Y'
325942  , p_source_application_id =>  602
325943 );
325944      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
325945       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
325946 
325947 
325948 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
325949 
325950 XLA_AE_HEADER_PKG.SetJeCategoryName;
325951 
325952 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
325953 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
325954 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
325955 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
325956 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
325957 
325958 
325959 --
325960 xla_ae_header_pkg.SetHdrDescription(
325961    p_description => Description_1 (
325962    p_application_id => p_application_id 
325963  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
325964  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
325965  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
325966  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
325967  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
325968    )
325969 );
325970 --
325971 
325972 -- No header level analytical criteria
325973 
325974 --
325975 --accounting attribute enhancement, bug 3612931
325976 --
325977 l_trx_reversal_source := SUBSTR(NULL, 1,30);
325978 
325979 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
325980    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
325981 
325982    xla_accounting_err_pkg.build_message
325983       (p_appli_s_name            => 'XLA'
325984       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
325985       ,p_token_1                 => 'ACCT_ATTR_NAME'
325986       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
325987       ,p_token_2                 => 'PRODUCT_NAME'
325988       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
325989       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
325990       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
325991       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
325992 
325993 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
325994    --
325995    -- following sets the accounting attributes needed to reverse
325996    -- accounting for a distributeion
325997    --
325998    xla_ae_lines_pkg.SetTrxReversalAttrs
325999       (p_event_id              => l_event_id
326000       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
326001       ,p_trx_reversal_source   => l_trx_reversal_source);
326002 
326003 END IF;
326004 
326005 
326006 ----------------------------------------------------------------
326007 -- 4262811 -  update the header statuses to invalid in need be
326008 ----------------------------------------------------------------
326009 --
326010 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
326011 
326012 
326013   -----------------------------------------------
326014   -- No accrual reversal for the event class/type
326015   -----------------------------------------------
326016 ----------------------------------------------------------------
326017 
326018 --
326019 -- this ends the header loop iteration for one bulk fetch
326020 --
326021 END LOOP;
326022 
326023 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
326024 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
326025 
326026 --
326027 -- insert dummy rows into lines gt table that were created due to
326028 -- transaction reversals
326029 --
326030 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
326031    l_result := XLA_AE_LINES_PKG.InsertLines;
326032 END IF;
326033 
326034 --
326035 -- reset the temp_line_num for each set of events fetched from header
326036 -- cursor rather than doing it for each new event in line cursor
326037 -- Bug 3939231
326038 --
326039 xla_ae_lines_pkg.g_temp_line_num := 0;
326040 
326041 
326042 
326043 --
326044 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
326045 --
326046 --
326047 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
326048 
326049       trace
326050          (p_msg      => 'SQL - FETCH line_cur'
326051          ,p_level    => C_LEVEL_STATEMENT
326052          ,p_module   => l_log_module);
326053 
326054 END IF;
326055 --
326056 --
326057 LOOP
326058   --
326059   FETCH line_cur BULK COLLECT INTO
326060         l_array_entity_id
326061       , l_array_legal_entity_id
326062       , l_array_entity_code
326063       , l_array_transaction_num
326064       , l_array_event_id
326065       , l_array_class_code
326066       , l_array_event_type
326067       , l_array_event_number
326068       , l_array_event_date
326069       , l_array_transaction_date
326070       , l_array_reference_num_1
326071       , l_array_reference_num_2
326072       , l_array_reference_num_3
326073       , l_array_reference_num_4
326074       , l_array_reference_char_1
326075       , l_array_reference_char_2
326076       , l_array_reference_char_3
326077       , l_array_reference_char_4
326078       , l_array_reference_date_1
326079       , l_array_reference_date_2
326080       , l_array_reference_date_3
326081       , l_array_reference_date_4
326082       , l_array_event_created_by
326083       , l_array_budgetary_control_flag
326084       , l_array_extract_line_num 
326085       , l_array_source_11
326086       , l_array_source_15
326087       , l_array_source_84
326088       , l_array_source_88
326089       , l_array_source_91
326090       , l_array_source_92
326091       , l_array_source_93
326092       , l_array_source_94
326093       , l_array_source_95
326094       , l_array_source_97
326095       , l_array_source_108
326096       LIMIT l_rows;
326097 
326098   --
326099   IF (C_LEVEL_EVENT >= g_log_level) THEN
326100             trace
326101                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
326102                ,p_level    => C_LEVEL_EVENT
326103                ,p_module   => l_log_module);
326104   END IF;
326105   --
326106   EXIT WHEN l_array_entity_id.count = 0;
326107 
326108   XLA_AE_LINES_PKG.g_rec_lines := null;
326109 
326110 --
326111 -- Bug 4458708
326112 --
326113 XLA_AE_LINES_PKG.g_LineNumber := 0;
326114 --
326115 --
326116 
326117 FOR Idx IN 1..l_array_event_id.count LOOP
326118    --
326119    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
326120    --
326121    l_event_id := l_array_event_id(idx);  -- 5648433
326122 
326123    --
326124    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
326125    --
326126 
326127    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
326128              (g_array_event(l_event_id).array_value_num('header_index'))
326129          ,'N'
326130          ) <> 'Y'
326131    THEN
326132       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
326133          trace
326134             (p_msg      => 'Trancaction revesal option is not Y '
326135             ,p_level    => C_LEVEL_STATEMENT
326136             ,p_module   => l_log_module);
326137       END IF;
326138 
326139 --
326140 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
326141 --
326142 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
326143 --
326144 -- set event info as cache for other routines to refer event attributes
326145 --
326146 
326147 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
326148    l_previous_event_id := l_event_id;
326149 
326150    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
326151       (p_application_id           => p_application_id
326152       ,p_primary_ledger_id        => p_primary_ledger_id
326153       ,p_base_ledger_id           => p_base_ledger_id
326154       ,p_target_ledger_id         => p_target_ledger_id
326155       ,p_entity_id                => l_array_entity_id(Idx)
326156       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
326157       ,p_entity_code              => l_array_entity_code(Idx)
326158       ,p_transaction_num          => l_array_transaction_num(Idx)
326159       ,p_event_id                 => l_array_event_id(Idx)
326160       ,p_event_class_code         => l_array_class_code(Idx)
326161       ,p_event_type_code          => l_array_event_type(Idx)
326162       ,p_event_number             => l_array_event_number(Idx)
326163       ,p_event_date               => l_array_event_date(Idx)
326164       ,p_transaction_date         => l_array_transaction_date(Idx)
326165       ,p_reference_num_1          => l_array_reference_num_1(Idx)
326166       ,p_reference_num_2          => l_array_reference_num_2(Idx)
326167       ,p_reference_num_3          => l_array_reference_num_3(Idx)
326168       ,p_reference_num_4          => l_array_reference_num_4(Idx)
326169       ,p_reference_char_1         => l_array_reference_char_1(Idx)
326170       ,p_reference_char_2         => l_array_reference_char_2(Idx)
326171       ,p_reference_char_3         => l_array_reference_char_3(Idx)
326172       ,p_reference_char_4         => l_array_reference_char_4(Idx)
326173       ,p_reference_date_1         => l_array_reference_date_1(Idx)
326174       ,p_reference_date_2         => l_array_reference_date_2(Idx)
326175       ,p_reference_date_3         => l_array_reference_date_3(Idx)
326176       ,p_reference_date_4         => l_array_reference_date_4(Idx)
326177       ,p_event_created_by         => l_array_event_created_by(Idx)
326178       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
326179        --
326180 END IF;
326181 
326182 
326183 
326184 --
326185 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
326186 
326187 l_acct_reversal_source := SUBSTR(NULL, 1,30);
326188 
326189 IF l_continue_with_lines THEN
326190    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
326191       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
326192 
326193       xla_accounting_err_pkg.build_message
326194          (p_appli_s_name            => 'XLA'
326195          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
326196          ,p_token_1                 => 'LINE_NUMBER'
326197          ,p_value_1                 => l_array_extract_line_num(Idx)
326198          ,p_token_2                 => 'PRODUCT_NAME'
326199          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
326200          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
326201          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
326202          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
326203 
326204    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
326205       --
326206       -- following sets the accounting attributes needed to reverse
326207       -- accounting for a distributeion
326208       --
326209 
326210       --
326211       -- 5217187
326212       --
326213       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
326214       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
326215                                        g_array_event(l_event_id).array_value_num('header_index'));
326216       --
326217       --
326218 
326219       -- No reversal code generated
326220 
326221       xla_ae_lines_pkg.SetAcctReversalAttrs
326222          (p_event_id             => l_event_id
326223          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
326224          ,p_calculate_acctd_flag => l_calculate_acctd_flag
326225          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
326226    END IF;
326227 
326228    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
326229        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
326230 
326231 --
326232 AcctLineType_99 (
326233  p_application_id  => p_application_id
326234  ,p_event_id     => l_event_id
326235  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326236  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326237  ,p_actual_flag => l_actual_flag
326238  ,p_balance_type_code => l_balance_type_code
326239  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326240  
326241  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326242  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326243  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326244  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326245  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326246  , p_source_11 => l_array_source_11(Idx)
326247  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326248  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326249  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326250  , p_source_84 => l_array_source_84(Idx)
326251  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326252  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326253  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326254  , p_source_88 => l_array_source_88(Idx)
326255  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326256  , p_source_91 => l_array_source_91(Idx)
326257  , p_source_92 => l_array_source_92(Idx)
326258  , p_source_93 => l_array_source_93(Idx)
326259  , p_source_94 => l_array_source_94(Idx)
326260  , p_source_95 => l_array_source_95(Idx)
326261  , p_source_97 => l_array_source_97(Idx)
326262  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326263  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326264  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326265  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326266  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326267  );
326268 If(l_balance_type_code = 'A') THEN
326269   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326270 END IF;
326271 
326272 --
326273 
326274 
326275 --
326276 AcctLineType_129 (
326277  p_application_id  => p_application_id
326278  ,p_event_id     => l_event_id
326279  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326280  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326281  ,p_actual_flag => l_actual_flag
326282  ,p_balance_type_code => l_balance_type_code
326283  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326284  
326285  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326286  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326287  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326288  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326289  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326290  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
326291  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326292  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326293  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326294  , p_source_84 => l_array_source_84(Idx)
326295  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326296  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326297  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326298  , p_source_88 => l_array_source_88(Idx)
326299  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326300  , p_source_91 => l_array_source_91(Idx)
326301  , p_source_92 => l_array_source_92(Idx)
326302  , p_source_93 => l_array_source_93(Idx)
326303  , p_source_94 => l_array_source_94(Idx)
326304  , p_source_95 => l_array_source_95(Idx)
326305  , p_source_97 => l_array_source_97(Idx)
326306  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326307  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326308  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326309  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326310  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326311  );
326312 If(l_balance_type_code = 'A') THEN
326313   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326314 END IF;
326315 
326316 --
326317 
326318 
326319 --
326320 AcctLineType_173 (
326321  p_application_id  => p_application_id
326322  ,p_event_id     => l_event_id
326323  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326324  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326325  ,p_actual_flag => l_actual_flag
326326  ,p_balance_type_code => l_balance_type_code
326327  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326328  
326329  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326330  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326331  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326332  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326333  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326334  , p_source_11 => l_array_source_11(Idx)
326335  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326336  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326337  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326338  , p_source_84 => l_array_source_84(Idx)
326339  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326340  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326341  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326342  , p_source_88 => l_array_source_88(Idx)
326343  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326344  , p_source_91 => l_array_source_91(Idx)
326345  , p_source_92 => l_array_source_92(Idx)
326346  , p_source_93 => l_array_source_93(Idx)
326347  , p_source_94 => l_array_source_94(Idx)
326348  , p_source_95 => l_array_source_95(Idx)
326349  , p_source_97 => l_array_source_97(Idx)
326350  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326351  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326352  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326353  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326354  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326355  );
326356 If(l_balance_type_code = 'A') THEN
326357   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326358 END IF;
326359 
326360 --
326361 
326362 
326363 --
326364 AcctLineType_266 (
326365  p_application_id  => p_application_id
326366  ,p_event_id     => l_event_id
326367  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326368  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326369  ,p_actual_flag => l_actual_flag
326370  ,p_balance_type_code => l_balance_type_code
326371  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326372  
326373  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326374  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326375  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326376  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326377  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326378  , p_source_15 => l_array_source_15(Idx)
326379  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
326380  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
326381  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
326382  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
326383  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
326384  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326385  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326386  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326387  , p_source_84 => l_array_source_84(Idx)
326388  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326389  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326390  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326391  , p_source_88 => l_array_source_88(Idx)
326392  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326393  , p_source_91 => l_array_source_91(Idx)
326394  , p_source_92 => l_array_source_92(Idx)
326395  , p_source_93 => l_array_source_93(Idx)
326396  , p_source_94 => l_array_source_94(Idx)
326397  , p_source_95 => l_array_source_95(Idx)
326398  , p_source_97 => l_array_source_97(Idx)
326399  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326400  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326401  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326402  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326403  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326404  , p_source_108 => l_array_source_108(Idx)
326405  );
326406 If(l_balance_type_code = 'A') THEN
326407   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326408 END IF;
326409 
326410 --
326411 
326412 
326413 --
326414 AcctLineType_299 (
326415  p_application_id  => p_application_id
326416  ,p_event_id     => l_event_id
326417  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326418  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326419  ,p_actual_flag => l_actual_flag
326420  ,p_balance_type_code => l_balance_type_code
326421  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326422  
326423  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326424  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326425  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326426  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326427  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326428  , p_source_11 => l_array_source_11(Idx)
326429  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326430  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326431  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326432  , p_source_84 => l_array_source_84(Idx)
326433  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326434  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326435  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326436  , p_source_88 => l_array_source_88(Idx)
326437  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326438  , p_source_91 => l_array_source_91(Idx)
326439  , p_source_92 => l_array_source_92(Idx)
326440  , p_source_93 => l_array_source_93(Idx)
326441  , p_source_94 => l_array_source_94(Idx)
326442  , p_source_95 => l_array_source_95(Idx)
326443  , p_source_97 => l_array_source_97(Idx)
326444  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326445  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326446  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326447  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326448  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326449  );
326450 If(l_balance_type_code = 'A') THEN
326451   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326452 END IF;
326453 
326454 --
326455 
326456 
326457 --
326458 AcctLineType_360 (
326459  p_application_id  => p_application_id
326460  ,p_event_id     => l_event_id
326461  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326462  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326463  ,p_actual_flag => l_actual_flag
326464  ,p_balance_type_code => l_balance_type_code
326465  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326466  
326467  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326468  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326469  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326470  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326471  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326472  , p_source_11 => l_array_source_11(Idx)
326473  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326474  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326475  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326476  , p_source_84 => l_array_source_84(Idx)
326477  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326478  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326479  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326480  , p_source_88 => l_array_source_88(Idx)
326481  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326482  , p_source_91 => l_array_source_91(Idx)
326483  , p_source_92 => l_array_source_92(Idx)
326484  , p_source_93 => l_array_source_93(Idx)
326485  , p_source_94 => l_array_source_94(Idx)
326486  , p_source_95 => l_array_source_95(Idx)
326487  , p_source_97 => l_array_source_97(Idx)
326488  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326489  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326490  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326491  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326492  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326493  );
326494 If(l_balance_type_code = 'A') THEN
326495   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326496 END IF;
326497 
326498 --
326499 
326500 
326501 --
326502 AcctLineType_399 (
326503  p_application_id  => p_application_id
326504  ,p_event_id     => l_event_id
326505  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326506  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326507  ,p_actual_flag => l_actual_flag
326508  ,p_balance_type_code => l_balance_type_code
326509  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326510  
326511  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326512  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326513  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326514  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326515  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326516  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
326517  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326518  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326519  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326520  , p_source_84 => l_array_source_84(Idx)
326521  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326522  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326523  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326524  , p_source_88 => l_array_source_88(Idx)
326525  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326526  , p_source_91 => l_array_source_91(Idx)
326527  , p_source_92 => l_array_source_92(Idx)
326528  , p_source_93 => l_array_source_93(Idx)
326529  , p_source_94 => l_array_source_94(Idx)
326530  , p_source_95 => l_array_source_95(Idx)
326531  , p_source_97 => l_array_source_97(Idx)
326532  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326533  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326534  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326535  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326536  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326537  );
326538 If(l_balance_type_code = 'A') THEN
326539   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326540 END IF;
326541 
326542 --
326543 
326544 
326545 --
326546 AcctLineType_417 (
326547  p_application_id  => p_application_id
326548  ,p_event_id     => l_event_id
326549  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326550  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326551  ,p_actual_flag => l_actual_flag
326552  ,p_balance_type_code => l_balance_type_code
326553  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326554  
326555  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326556  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326557  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326558  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326559  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326560  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
326561  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326562  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326563  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326564  , p_source_84 => l_array_source_84(Idx)
326565  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326566  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326567  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326568  , p_source_88 => l_array_source_88(Idx)
326569  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326570  , p_source_91 => l_array_source_91(Idx)
326571  , p_source_92 => l_array_source_92(Idx)
326572  , p_source_93 => l_array_source_93(Idx)
326573  , p_source_94 => l_array_source_94(Idx)
326574  , p_source_95 => l_array_source_95(Idx)
326575  , p_source_97 => l_array_source_97(Idx)
326576  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326577  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326578  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326579  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326580  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326581  );
326582 If(l_balance_type_code = 'A') THEN
326583   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326584 END IF;
326585 
326586 --
326587 
326588 
326589 --
326590 AcctLineType_469 (
326591  p_application_id  => p_application_id
326592  ,p_event_id     => l_event_id
326593  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326594  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326595  ,p_actual_flag => l_actual_flag
326596  ,p_balance_type_code => l_balance_type_code
326597  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326598  
326599  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326600  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326601  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326602  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326603  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326604  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
326605  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326606  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326607  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326608  , p_source_84 => l_array_source_84(Idx)
326609  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326610  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326611  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326612  , p_source_88 => l_array_source_88(Idx)
326613  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326614  , p_source_91 => l_array_source_91(Idx)
326615  , p_source_92 => l_array_source_92(Idx)
326616  , p_source_93 => l_array_source_93(Idx)
326617  , p_source_94 => l_array_source_94(Idx)
326618  , p_source_95 => l_array_source_95(Idx)
326619  , p_source_97 => l_array_source_97(Idx)
326620  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326621  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326622  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326623  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326624  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326625  );
326626 If(l_balance_type_code = 'A') THEN
326627   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326628 END IF;
326629 
326630 --
326631 
326632 
326633 --
326634 AcctLineType_493 (
326635  p_application_id  => p_application_id
326636  ,p_event_id     => l_event_id
326637  ,p_calculate_acctd_flag => l_calculate_acctd_flag
326638  ,p_calculate_g_l_flag => l_calculate_g_l_flag
326639  ,p_actual_flag => l_actual_flag
326640  ,p_balance_type_code => l_balance_type_code
326641  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
326642  
326643  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
326644  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
326645  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
326646  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
326647  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
326648  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
326649  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
326650  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
326651  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
326652  , p_source_84 => l_array_source_84(Idx)
326653  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
326654  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
326655  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
326656  , p_source_88 => l_array_source_88(Idx)
326657  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
326658  , p_source_91 => l_array_source_91(Idx)
326659  , p_source_92 => l_array_source_92(Idx)
326660  , p_source_93 => l_array_source_93(Idx)
326661  , p_source_94 => l_array_source_94(Idx)
326662  , p_source_95 => l_array_source_95(Idx)
326663  , p_source_97 => l_array_source_97(Idx)
326664  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
326665  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
326666  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
326667  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
326668  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
326669  );
326670 If(l_balance_type_code = 'A') THEN
326671   l_actual_gain_loss_ref := l_gain_or_loss_ref;
326672 END IF;
326673 
326674 --
326675 
326676       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
326677       -- or secondary ledger that has different currency with primary
326678       -- or alc that is calculated by sla
326679       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
326680             (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'))
326681 
326682 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
326683 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
326684           AND (l_actual_flag = 'A')) THEN
326685         XLA_AE_LINES_PKG.CreateGainOrLossLines(
326686           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
326687          ,p_application_id   => p_application_id
326688          ,p_amb_context_code => 'DEFAULT'
326689          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
326690          ,p_event_class_code => C_EVENT_CLASS_CODE
326691          ,p_event_type_code  => C_EVENT_TYPE_CODE
326692          
326693          ,p_gain_ccid        => -1
326694          ,p_loss_ccid        => -1
326695 
326696          ,p_actual_flag      => l_actual_flag
326697          ,p_enc_flag         => null
326698          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
326699          ,p_enc_g_l_ref      => null
326700          );
326701       END IF;
326702    END IF;
326703 END IF;
326704 
326705    ELSE
326706       --
326707       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
326708       --
326709       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
326710          trace
326711             (p_msg      => 'Trancaction revesal option is Y'
326712             ,p_level    => C_LEVEL_STATEMENT
326713             ,p_module   => l_log_module);
326714       END IF;
326715    END IF;
326716 
326717 END LOOP;
326718 l_result := XLA_AE_LINES_PKG.InsertLines ;
326719 end loop;
326720 close line_cur;
326721 
326722 
326723 --
326724 -- insert headers into xla_ae_headers_gt table
326725 --
326726 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
326727 
326728 -- insert into errors table here.
326729 
326730 END LOOP;
326731 
326732 --
326733 -- 4865292
326734 --
326735 -- Compare g_hdr_extract_count with event count in
326736 -- CreateHeadersAndLines.
326737 --
326738 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
326739 
326740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
326741    trace (p_msg     => '# rows extracted from header extract objects '
326742                     || ' (running total): '
326743                     || g_hdr_extract_count
326744          ,p_level   => C_LEVEL_STATEMENT
326745          ,p_module  => l_log_module);
326746 END IF;
326747 
326748 CLOSE header_cur;
326749 --
326750 
326751 --
326752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
326753    trace
326754       (p_msg      => 'END of EventType_557'
326755       ,p_level    => C_LEVEL_PROCEDURE
326756       ,p_module   => l_log_module);
326757 END IF;
326758 --
326759 RETURN l_result;
326760 EXCEPTION
326761 WHEN xla_exceptions_pkg.application_exception THEN
326762    
326763 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
326764 
326765    
326766 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
326767 
326768    RAISE;
326769 
326770 WHEN NO_DATA_FOUND THEN
326771 
326772 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
326773 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
326774 
326775 FOR header_record IN header_cur
326776 LOOP
326777     l_array_header_events(header_record.event_id) := header_record.event_id;
326778 END LOOP;
326779 
326780 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
326781 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
326782 
326783 fnd_file.put_line(fnd_file.LOG, '                    ');
326784 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
326785 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
326786 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
326787 
326788 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
326789 LOOP
326790 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
326791 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
326792         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
326793 	END IF;
326794 END LOOP;
326795 
326796 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
326797 fnd_file.put_line(fnd_file.LOG, '                    ');
326798 
326799 
326800 xla_exceptions_pkg.raise_message
326801       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_557');
326802 
326803 
326804 WHEN OTHERS THEN
326805    xla_exceptions_pkg.raise_message
326806       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_557');
326807 END EventType_557;
326808 --
326809 
326810 ---------------------------------------
326811 --
326812 -- PRIVATE PROCEDURE
326813 --         insert_sources_558
326814 --
326815 ----------------------------------------
326816 --
326817 PROCEDURE insert_sources_558(
326818                                 p_target_ledger_id       IN NUMBER
326819                               , p_language               IN VARCHAR2
326820                               , p_sla_ledger_id          IN NUMBER
326821                               , p_pad_start_date         IN DATE
326822                               , p_pad_end_date           IN DATE
326823                          )
326824 IS
326825 
326826 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_NO_TP';
326827 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
326828 p_apps_owner                   VARCHAR2(30);
326829 l_log_module                   VARCHAR2(240);
326830 BEGIN
326831 IF g_log_enabled THEN
326832       l_log_module := C_DEFAULT_MODULE||'.insert_sources_558';
326833 END IF;
326834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
326835 
326836       trace
326837          (p_msg      => 'BEGIN of insert_sources_558'
326838          ,p_level    => C_LEVEL_PROCEDURE
326839          ,p_module   => l_log_module);
326840 
326841 END IF;
326842 
326843 -- select APPS owner
326844 SELECT oracle_username
326845   INTO p_apps_owner
326846   FROM fnd_oracle_userid
326847  WHERE read_only_flag = 'U'
326848 ;
326849 
326850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
326851       trace
326852          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
326853                         ' - p_language = '||p_language||
326854                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
326855                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
326856                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
326857                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
326858          ,p_level    => C_LEVEL_STATEMENT
326859          ,p_module   => l_log_module);
326860 END IF;
326861 
326862 
326863 --
326864 INSERT INTO xla_diag_sources --hdr1
326865 (
326866         event_id
326867       , ledger_id
326868       , sla_ledger_id
326869       , description_language
326870       , object_name
326871       , object_type_code
326872       , line_number
326873       , source_application_id
326874       , source_type_code
326875       , source_code
326876       , source_value
326877       , source_meaning
326878       , created_by
326879       , creation_date
326880       , last_update_date
326881       , last_updated_by
326882       , last_update_login
326883       , program_update_date
326884       , program_application_id
326885       , program_id
326886       , request_id
326887 )
326888 SELECT
326889         event_id
326890       , p_target_ledger_id
326891       , p_sla_ledger_id
326892       , p_language
326893       , object_name
326894       , object_type_code
326895       , line_number
326896       , source_application_id
326897       , source_type_code
326898       , source_code
326899       , SUBSTR(source_value ,1,1996)
326900       , SUBSTR(source_meaning,1,200)
326901       , xla_environment_pkg.g_Usr_Id
326902       , TRUNC(SYSDATE)
326903       , TRUNC(SYSDATE)
326904       , xla_environment_pkg.g_Usr_Id
326905       , xla_environment_pkg.g_Login_Id
326906       , TRUNC(SYSDATE)
326907       , xla_environment_pkg.g_Prog_Appl_Id
326908       , xla_environment_pkg.g_Prog_Id
326909       , xla_environment_pkg.g_Req_Id
326910   FROM (
326911        SELECT xet.event_id                  event_id
326912             , 0                             line_number
326913             , CASE r
326914                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
326915                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
326916                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
326917                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
326918                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
326919                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
326920                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
326921                 WHEN 8 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
326922                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
326923                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
326924                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
326925                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
326926                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
326927                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
326928                 WHEN 15 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
326929                 WHEN 16 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
326930                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
326931                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
326932                 
326933                ELSE null
326934               END                           object_name
326935             , CASE r
326936                 WHEN 1 THEN 'HEADER' 
326937                 WHEN 2 THEN 'HEADER' 
326938                 WHEN 3 THEN 'HEADER' 
326939                 WHEN 4 THEN 'HEADER' 
326940                 WHEN 5 THEN 'HEADER' 
326941                 WHEN 6 THEN 'HEADER' 
326942                 WHEN 7 THEN 'HEADER' 
326943                 WHEN 8 THEN 'HEADER' 
326944                 WHEN 9 THEN 'HEADER' 
326945                 WHEN 10 THEN 'HEADER' 
326946                 WHEN 11 THEN 'HEADER' 
326947                 WHEN 12 THEN 'HEADER' 
326948                 WHEN 13 THEN 'HEADER' 
326949                 WHEN 14 THEN 'HEADER' 
326950                 WHEN 15 THEN 'HEADER' 
326951                 WHEN 16 THEN 'HEADER' 
326952                 WHEN 17 THEN 'HEADER' 
326953                 WHEN 18 THEN 'HEADER' 
326954                 
326955                 ELSE null
326956               END                           object_type_code
326957             , CASE r
326958                 WHEN 1 THEN '707' 
326959                 WHEN 2 THEN '707' 
326960                 WHEN 3 THEN '707' 
326961                 WHEN 4 THEN '707' 
326962                 WHEN 5 THEN '707' 
326963                 WHEN 6 THEN '707' 
326964                 WHEN 7 THEN '707' 
326965                 WHEN 8 THEN '707' 
326966                 WHEN 9 THEN '707' 
326967                 WHEN 10 THEN '707' 
326968                 WHEN 11 THEN '707' 
326969                 WHEN 12 THEN '707' 
326970                 WHEN 13 THEN '707' 
326971                 WHEN 14 THEN '707' 
326972                 WHEN 15 THEN '707' 
326973                 WHEN 16 THEN '707' 
326974                 WHEN 17 THEN '707' 
326975                 WHEN 18 THEN '707' 
326976                 
326977                 ELSE null
326978               END                           source_application_id
326979             , 'S'             source_type_code
326980             , CASE r
326981                 WHEN 1 THEN 'TRANSACTION_ID' 
326982                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
326983                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
326984                 WHEN 4 THEN 'TRANSACTION_UOM' 
326985                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
326986                 WHEN 6 THEN 'INV_TXN_TRANSPO_DIST_ACCT' 
326987                 WHEN 7 THEN 'INTERORG_REVENUE_ACCOUNT' 
326988                 WHEN 8 THEN 'PRIMARY_COST_METHOD' 
326989                 WHEN 9 THEN 'INTERORG_TXFR_CREDIT_ACCOUNT' 
326990                 WHEN 10 THEN 'PLA_MATERIAL_ACCOUNT' 
326991                 WHEN 11 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
326992                 WHEN 12 THEN 'PLA_RESOURCE_ACCOUNT' 
326993                 WHEN 13 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
326994                 WHEN 14 THEN 'PLA_OVERHEAD_ACCOUNT' 
326995                 WHEN 15 THEN 'INTERORG_BRIDGING_ACCOUNT' 
326996                 WHEN 16 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
326997                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
326998                 WHEN 18 THEN 'TRANSFER_TO_GL_INDICATOR' 
326999                 
327000                 ELSE null
327001               END                           source_code
327002             , CASE r
327003                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
327004                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
327005                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
327006                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
327007                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
327008                 WHEN 6 THEN TO_CHAR(h5.INV_TXN_TRANSPO_DIST_ACCT)
327009                 WHEN 7 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
327010                 WHEN 8 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
327011                 WHEN 9 THEN TO_CHAR(h1.INTERORG_TXFR_CREDIT_ACCOUNT)
327012                 WHEN 10 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
327013                 WHEN 11 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
327014                 WHEN 12 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
327015                 WHEN 13 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
327016                 WHEN 14 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
327017                 WHEN 15 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
327018                 WHEN 16 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
327019                 WHEN 17 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
327020                 WHEN 18 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
327021                 
327022                 ELSE null
327023               END                           source_value
327024             , CASE r
327025                 WHEN 8 THEN fvl39.meaning
327026                 WHEN 17 THEN fvl85.meaning
327027                 WHEN 18 THEN fvl114.meaning
327028                 
327029                 ELSE null
327030               END               source_meaning
327031         FROM xla_events_gt     xet  
327032       , CST_XLA_INTERORG_PARAMS_REF_V  h1
327033       , CST_XLA_INV_HEADERS_V  h2
327034       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
327035       , CST_XLA_INV_REF_V  h5
327036       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
327037       , CST_XLA_INV_TXN_TYPES_REF_V  h7
327038       , CST_XLA_PLA_CATEGORY_REF_V  h8
327039   , fnd_lookup_values    fvl39
327040   , fnd_lookup_values    fvl85
327041   , fnd_lookup_values    fvl114
327042             ,(select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
327043        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
327044          AND xet.event_type_code = C_EVENT_TYPE_CODE
327045             AND h2.event_id = xet.event_id
327046   AND h1.event_id (+) = h2.event_id
327047  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id = h2.inventory_item_id and h6.organization_id = h2.organization_id AND h7.inv_transaction_type_id = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id 
327048 and h8.pla_cat_item_id          (+) = h2.inventory_item_id 
327049 and h8.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
327050   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
327051   AND fvl39.view_application_id(+) = 700
327052   AND fvl39.language(+)            = USERENV('LANG')
327053      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
327054   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
327055   AND fvl85.view_application_id(+) = 700
327056   AND fvl85.language(+)            = USERENV('LANG')
327057      AND fvl114.lookup_type(+)         = 'YES_NO'
327058   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
327059   AND fvl114.view_application_id(+) = 0
327060   AND fvl114.language(+)            = USERENV('LANG')
327061   
327062 )
327063 ;
327064 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
327065 
327066       trace
327067          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
327068          ,p_level    => C_LEVEL_STATEMENT
327069          ,p_module   => l_log_module);
327070 
327071 END IF;
327072 --
327073 
327074 
327075 
327076 --
327077 INSERT INTO xla_diag_sources --line1
327078 (
327079         event_id
327080       , ledger_id
327081       , sla_ledger_id
327082       , description_language
327083       , object_name
327084       , object_type_code
327085       , line_number
327086       , source_application_id
327087       , source_type_code
327088       , source_code
327089       , source_value
327090       , source_meaning
327091       , created_by
327092       , creation_date
327093       , last_update_date
327094       , last_updated_by
327095       , last_update_login
327096       , program_update_date
327097       , program_application_id
327098       , program_id
327099       , request_id
327100 )
327101 SELECT  event_id
327102       , p_target_ledger_id
327103       , p_sla_ledger_id
327104       , p_language
327105       , object_name
327106       , object_type_code
327107       , line_number
327108       , source_application_id
327109       , source_type_code
327110       , source_code
327111       , SUBSTR(source_value,1,1996)
327112       , SUBSTR(source_meaning,1,200)
327113       , xla_environment_pkg.g_Usr_Id
327114       , TRUNC(SYSDATE)
327115       , TRUNC(SYSDATE)
327116       , xla_environment_pkg.g_Usr_Id
327117       , xla_environment_pkg.g_Login_Id
327118       , TRUNC(SYSDATE)
327119       , xla_environment_pkg.g_Prog_Appl_Id
327120       , xla_environment_pkg.g_Prog_Id
327121       , xla_environment_pkg.g_Req_Id
327122   FROM (
327123        SELECT xet.event_id                  event_id
327124             , l3.line_number                 line_number
327125             , CASE r
327126                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
327127                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
327128                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
327129                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
327130                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
327131                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
327132                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
327133                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
327134                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
327135                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
327136                 
327137                ELSE null
327138               END                           object_name
327139             , CASE r
327140                 WHEN 1 THEN 'LINE' 
327141                 WHEN 2 THEN 'LINE' 
327142                 WHEN 3 THEN 'LINE' 
327143                 WHEN 4 THEN 'LINE' 
327144                 WHEN 5 THEN 'LINE' 
327145                 WHEN 6 THEN 'LINE' 
327146                 WHEN 7 THEN 'LINE' 
327147                 WHEN 8 THEN 'LINE' 
327148                 WHEN 9 THEN 'LINE' 
327149                 WHEN 10 THEN 'LINE' 
327150                 
327151                 ELSE null
327152               END                           object_type_code
327153             , CASE r
327154                 WHEN 1 THEN '707' 
327155                 WHEN 2 THEN '707' 
327156                 WHEN 3 THEN '707' 
327157                 WHEN 4 THEN '707' 
327158                 WHEN 5 THEN '707' 
327159                 WHEN 6 THEN '707' 
327160                 WHEN 7 THEN '707' 
327161                 WHEN 8 THEN '707' 
327162                 WHEN 9 THEN '707' 
327163                 WHEN 10 THEN '707' 
327164                 
327165                 ELSE null
327166               END                           source_application_id
327167             , 'S'             source_type_code
327168             , CASE r
327169                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
327170                 WHEN 2 THEN 'COST_ELEMENT_ID' 
327171                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
327172                 WHEN 4 THEN 'CURRENCY_CODE' 
327173                 WHEN 5 THEN 'ENTERED_AMOUNT' 
327174                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
327175                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
327176                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
327177                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
327178                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
327179                 
327180                 ELSE null
327181               END                           source_code
327182             , CASE r
327183                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
327184                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
327185                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
327186                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
327187                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
327188                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
327189                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
327190                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
327191                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
327192                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
327193                 
327194                 ELSE null
327195               END                           source_value
327196             , CASE r
327197                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
327198                           1009615
327199                          ,TO_CHAR(l3.COST_ELEMENT_ID)
327200                          ,'COST_ELEMENT_ID'
327201                          ,'S'
327202                          ,707)
327203                 
327204                 ELSE null
327205               END               source_meaning
327206          FROM  xla_events_gt     xet  
327207         , CST_XLA_INV_LINES_V  l3
327208             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
327209         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
327210           AND xet.event_type_code = C_EVENT_TYPE_CODE
327211             AND l3.event_id          = xet.event_id
327212 
327213 )
327214 ;
327215 --
327216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
327217 
327218       trace
327219          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
327220          ,p_level    => C_LEVEL_STATEMENT
327221          ,p_module   => l_log_module);
327222 
327223 END IF;
327224 
327225 
327226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
327227       trace
327228          (p_msg      => 'END of insert_sources_558'
327229          ,p_level    => C_LEVEL_PROCEDURE
327230          ,p_module   => l_log_module);
327231 END IF;
327232 EXCEPTION
327233   WHEN xla_exceptions_pkg.application_exception THEN
327234       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
327235             trace
327236                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
327237                ,p_level    => C_LEVEL_EXCEPTION
327238                ,p_module   => l_log_module);
327239       END IF;
327240       RAISE;
327241   WHEN OTHERS THEN
327242       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
327243             trace
327244                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
327245                ,p_level    => C_LEVEL_EXCEPTION
327246                ,p_module   => l_log_module);
327247        END IF;
327248        xla_exceptions_pkg.raise_message
327249            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_558');
327250 END insert_sources_558;
327251 --
327252 
327253 ---------------------------------------
327254 --
327255 -- PRIVATE FUNCTION
327256 --         EventType_558
327257 --
327258 ----------------------------------------
327259 --
327260 FUNCTION EventType_558
327261        (p_application_id         IN NUMBER
327262        ,p_base_ledger_id         IN NUMBER
327263        ,p_target_ledger_id       IN NUMBER
327264        ,p_language               IN VARCHAR2
327265        ,p_currency_code          IN VARCHAR2
327266        ,p_sla_ledger_id          IN NUMBER
327267        ,p_pad_start_date         IN DATE
327268        ,p_pad_end_date           IN DATE
327269        ,p_primary_ledger_id      IN NUMBER)
327270 RETURN BOOLEAN IS
327271 --
327272 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_NO_TP';
327273 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
327274 
327275 l_calculate_acctd_flag   VARCHAR2(1) :='N';
327276 l_calculate_g_l_flag     VARCHAR2(1) :='N';
327277 --
327278 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327279 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327280 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
327281 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
327282 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327283 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
327284 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
327285 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327286 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
327287 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
327288 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327289 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327290 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327291 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
327292 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
327293 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
327294 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
327295 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
327296 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
327297 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
327298 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
327299 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
327300 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
327301 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
327302 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
327303 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
327304 
327305 l_event_id                             NUMBER;
327306 l_previous_event_id                    NUMBER;
327307 l_first_event_id                       NUMBER;
327308 l_last_event_id                        NUMBER;
327309 
327310 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
327311 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
327312 --
327313 --
327314 l_result                    BOOLEAN := TRUE;
327315 l_rows                      NUMBER  := 1000;
327316 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt, no Transfer Pricing';
327317 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
327318 l_description               VARCHAR2(4000);
327319 l_transaction_reversal      NUMBER;
327320 l_ae_header_id              NUMBER;
327321 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
327322 l_log_module                VARCHAR2(240);
327323 --
327324 l_acct_reversal_source      VARCHAR2(30);
327325 l_trx_reversal_source       VARCHAR2(30);
327326 
327327 l_continue_with_lines       BOOLEAN := TRUE;
327328 --
327329 l_acc_rev_gl_date_source    DATE;                      -- 4262811
327330 --
327331 type t_array_event_id is table of number index by binary_integer;
327332 
327333 l_rec_array_event                    t_rec_array_event;
327334 l_null_rec_array_event               t_rec_array_event;
327335 l_array_ae_header_id                 xla_number_array_type;
327336 l_actual_flag                        VARCHAR2(1) := NULL;
327337 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
327338 l_balance_type_code                  VARCHAR2(1) :=NULL;
327339 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
327340 
327341 --
327342 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
327343 --
327344 
327345 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
327346 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
327347 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
327348 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
327349 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
327350 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_TRANSPO_DIST_ACCT%TYPE INDEX BY BINARY_INTEGER;
327351 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327352 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
327353 TYPE t_array_source_40 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_TXFR_CREDIT_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327354 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327355 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327356 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327357 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327358 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327359 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327360 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
327361 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
327362 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
327363 
327364 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
327365 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
327366 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
327367 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
327368 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
327369 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
327370 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
327371 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
327372 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
327373 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
327374 
327375 l_array_source_1              t_array_source_1;
327376 l_array_source_2              t_array_source_2;
327377 l_array_source_3              t_array_source_3;
327378 l_array_source_4              t_array_source_4;
327379 l_array_source_5              t_array_source_5;
327380 l_array_source_32              t_array_source_32;
327381 l_array_source_33              t_array_source_33;
327382 l_array_source_39              t_array_source_39;
327383 l_array_source_39_meaning      t_array_lookup_meaning;
327384 l_array_source_40              t_array_source_40;
327385 l_array_source_41              t_array_source_41;
327386 l_array_source_42              t_array_source_42;
327387 l_array_source_43              t_array_source_43;
327388 l_array_source_44              t_array_source_44;
327389 l_array_source_45              t_array_source_45;
327390 l_array_source_46              t_array_source_46;
327391 l_array_source_59              t_array_source_59;
327392 l_array_source_85              t_array_source_85;
327393 l_array_source_85_meaning      t_array_lookup_meaning;
327394 l_array_source_114              t_array_source_114;
327395 l_array_source_114_meaning      t_array_lookup_meaning;
327396 
327397 l_array_source_11      t_array_source_11;
327398 l_array_source_15      t_array_source_15;
327399 l_array_source_84      t_array_source_84;
327400 l_array_source_88      t_array_source_88;
327401 l_array_source_91      t_array_source_91;
327402 l_array_source_92      t_array_source_92;
327403 l_array_source_93      t_array_source_93;
327404 l_array_source_94      t_array_source_94;
327405 l_array_source_95      t_array_source_95;
327406 l_array_source_97      t_array_source_97;
327407 
327408 --
327409 CURSOR header_cur
327410 IS
327411 SELECT /*+ leading(xet) cardinality(xet,1) */
327412 -- Event Type Code: FOB_RCPT_SENDER_RCPT_NO_TP
327413 -- Event Class Code: FOB_RCPT_SENDER_RCPT
327414     xet.entity_id
327415   , xet.legal_entity_id
327416   , xet.entity_code
327417   , xet.transaction_number
327418   , xet.event_id
327419   , xet.event_class_code
327420   , xet.event_type_code
327421   , xet.event_number
327422   , xet.event_date
327423   , xet.transaction_date
327424   , xet.reference_num_1
327425   , xet.reference_num_2
327426   , xet.reference_num_3
327427   , xet.reference_num_4
327428   , xet.reference_char_1
327429   , xet.reference_char_2
327430   , xet.reference_char_3
327431   , xet.reference_char_4
327432   , xet.reference_date_1
327433   , xet.reference_date_2
327434   , xet.reference_date_3
327435   , xet.reference_date_4
327436   , xet.event_created_by
327437   , xet.budgetary_control_flag 
327438   , h2.TRANSACTION_ID    source_1
327439   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
327440   , h5.TRANSACTION_QUANTITY    source_3
327441   , h5.TRANSACTION_UOM    source_4
327442   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
327443   , h5.INV_TXN_TRANSPO_DIST_ACCT    source_32
327444   , h1.INTERORG_REVENUE_ACCOUNT    source_33
327445   , h4.PRIMARY_COST_METHOD    source_39
327446   , fvl39.meaning   source_39_meaning
327447   , h1.INTERORG_TXFR_CREDIT_ACCOUNT    source_40
327448   , h8.PLA_MATERIAL_ACCOUNT    source_41
327449   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
327450   , h8.PLA_RESOURCE_ACCOUNT    source_43
327451   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
327452   , h8.PLA_OVERHEAD_ACCOUNT    source_45
327453   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
327454   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
327455   , h2.DISTRIBUTION_TYPE    source_85
327456   , fvl85.meaning   source_85_meaning
327457   , h2.TRANSFER_TO_GL_INDICATOR    source_114
327458   , fvl114.meaning   source_114_meaning
327459   FROM xla_events_gt     xet 
327460   , CST_XLA_INTERORG_PARAMS_REF_V  h1
327461   , CST_XLA_INV_HEADERS_V  h2
327462   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
327463   , CST_XLA_INV_REF_V  h5
327464   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
327465   , CST_XLA_INV_TXN_TYPES_REF_V  h7
327466   , CST_XLA_PLA_CATEGORY_REF_V  h8
327467   , fnd_lookup_values    fvl39
327468   , fnd_lookup_values    fvl85
327469   , fnd_lookup_values    fvl114
327470  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
327471    and xet.event_type_code = C_EVENT_TYPE_CODE
327472    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
327473   AND h1.event_id (+) = h2.event_id
327474  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h6.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
327475 AND h8.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
327476 AND h8.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
327477   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
327478   AND fvl39.view_application_id(+) = 700
327479   AND fvl39.language(+)            = USERENV('LANG')
327480      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
327481   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
327482   AND fvl85.view_application_id(+) = 700
327483   AND fvl85.language(+)            = USERENV('LANG')
327484      AND fvl114.lookup_type(+)         = 'YES_NO'
327485   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
327486   AND fvl114.view_application_id(+) = 0
327487   AND fvl114.language(+)            = USERENV('LANG')
327488   
327489  ORDER BY event_id
327490 ;
327491 
327492 
327493 --
327494 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
327495 IS
327496 SELECT /*+ leading(xet) cardinality(xet,1) */
327497 -- Event Type Code: FOB_RCPT_SENDER_RCPT_NO_TP
327498 -- Event Class Code: FOB_RCPT_SENDER_RCPT
327499     xet.entity_id
327500    ,xet.legal_entity_id
327501    ,xet.entity_code
327502    ,xet.transaction_number
327503    ,xet.event_id
327504    ,xet.event_class_code
327505    ,xet.event_type_code
327506    ,xet.event_number
327507    ,xet.event_date
327508    ,xet.transaction_date
327509    ,xet.reference_num_1
327510    ,xet.reference_num_2
327511    ,xet.reference_num_3
327512    ,xet.reference_num_4
327513    ,xet.reference_char_1
327514    ,xet.reference_char_2
327515    ,xet.reference_char_3
327516    ,xet.reference_char_4
327517    ,xet.reference_date_1
327518    ,xet.reference_date_2
327519    ,xet.reference_date_3
327520    ,xet.reference_date_4
327521    ,xet.event_created_by
327522    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
327523   , l3.CODE_COMBINATION_ID    source_11
327524   , l3.COST_ELEMENT_ID    source_15
327525   , l3.DISTRIBUTION_IDENTIFIER    source_84
327526   , l3.CURRENCY_CODE    source_88
327527   , l3.ENTERED_AMOUNT    source_91
327528   , l3.CURRENCY_CONVERSION_DATE    source_92
327529   , l3.CURRENCY_CONVERSION_RATE    source_93
327530   , l3.CURRENCY_CONVERSION_TYPE    source_94
327531   , l3.ACCOUNTED_AMOUNT    source_95
327532   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
327533   FROM xla_events_gt     xet 
327534   , CST_XLA_INV_LINES_V  l3
327535  WHERE xet.event_id between x_first_event_id and x_last_event_id
327536    and xet.event_date between p_pad_start_date and p_pad_end_date
327537    and xet.event_type_code = C_EVENT_TYPE_CODE
327538    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
327539 ;
327540 
327541 --
327542 BEGIN
327543 IF g_log_enabled THEN
327544    l_log_module := C_DEFAULT_MODULE||'.EventType_558';
327545 END IF;
327546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
327547    trace
327548       (p_msg      => 'BEGIN of EventType_558'
327549       ,p_level    => C_LEVEL_PROCEDURE
327550       ,p_module   => l_log_module);
327551 END IF;
327552 
327553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
327554    trace
327555       (p_msg      => 'p_application_id = '||p_application_id||
327556                      ' - p_base_ledger_id = '||p_base_ledger_id||
327557                      ' - p_target_ledger_id  = '||p_target_ledger_id||
327558                      ' - p_language = '||p_language||
327559                      ' - p_currency_code = '||p_currency_code||
327560                      ' - p_sla_ledger_id = '||p_sla_ledger_id
327561       ,p_level    => C_LEVEL_STATEMENT
327562       ,p_module   => l_log_module);
327563 END IF;
327564 --
327565 -- initialze arrays
327566 --
327567 g_array_event.DELETE;
327568 l_rec_array_event := l_null_rec_array_event;
327569 --
327570 --------------------------------------
327571 -- 4262811 Initialze MPA Line Number
327572 --------------------------------------
327573 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
327574 
327575 --
327576 
327577 --
327578 OPEN header_cur;
327579 --
327580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
327581    trace
327582    (p_msg      => 'SQL - FETCH header_cur'
327583    ,p_level    => C_LEVEL_STATEMENT
327584    ,p_module   => l_log_module);
327585 END IF;
327586 --
327587 LOOP
327588 FETCH header_cur BULK COLLECT INTO
327589         l_array_entity_id
327590       , l_array_legal_entity_id
327591       , l_array_entity_code
327592       , l_array_transaction_num
327593       , l_array_event_id
327594       , l_array_class_code
327595       , l_array_event_type
327596       , l_array_event_number
327597       , l_array_event_date
327598       , l_array_transaction_date
327599       , l_array_reference_num_1
327600       , l_array_reference_num_2
327601       , l_array_reference_num_3
327602       , l_array_reference_num_4
327603       , l_array_reference_char_1
327604       , l_array_reference_char_2
327605       , l_array_reference_char_3
327606       , l_array_reference_char_4
327607       , l_array_reference_date_1
327608       , l_array_reference_date_2
327609       , l_array_reference_date_3
327610       , l_array_reference_date_4
327611       , l_array_event_created_by
327612       , l_array_budgetary_control_flag 
327613       , l_array_source_1
327614       , l_array_source_2
327615       , l_array_source_3
327616       , l_array_source_4
327617       , l_array_source_5
327618       , l_array_source_32
327619       , l_array_source_33
327620       , l_array_source_39
327621       , l_array_source_39_meaning
327622       , l_array_source_40
327623       , l_array_source_41
327624       , l_array_source_42
327625       , l_array_source_43
327626       , l_array_source_44
327627       , l_array_source_45
327628       , l_array_source_46
327629       , l_array_source_59
327630       , l_array_source_85
327631       , l_array_source_85_meaning
327632       , l_array_source_114
327633       , l_array_source_114_meaning
327634       LIMIT l_rows;
327635 --
327636 IF (C_LEVEL_EVENT >= g_log_level) THEN
327637    trace
327638    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
327639    ,p_level    => C_LEVEL_EVENT
327640    ,p_module   => l_log_module);
327641 END IF;
327642 --
327643 EXIT WHEN l_array_entity_id.COUNT = 0;
327644 
327645 -- initialize arrays
327646 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
327647 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
327648 
327649 --
327650 -- Bug 4458708
327651 --
327652 XLA_AE_LINES_PKG.g_LineNumber := 0;
327653 
327654 
327655 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
327656 g_last_hdr_idx := l_array_event_id.LAST;
327657 --
327658 -- loop for the headers. Each iteration is for each header extract row
327659 -- fetched in header cursor
327660 --
327661 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
327662 
327663 --
327664 -- set event info as cache for other routines to refer event attributes
327665 --
327666 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
327667    (p_application_id           => p_application_id
327668    ,p_primary_ledger_id        => p_primary_ledger_id
327669    ,p_base_ledger_id           => p_base_ledger_id
327670    ,p_target_ledger_id         => p_target_ledger_id
327671    ,p_entity_id                => l_array_entity_id(hdr_idx)
327672    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
327673    ,p_entity_code              => l_array_entity_code(hdr_idx)
327674    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
327675    ,p_event_id                 => l_array_event_id(hdr_idx)
327676    ,p_event_class_code         => l_array_class_code(hdr_idx)
327677    ,p_event_type_code          => l_array_event_type(hdr_idx)
327678    ,p_event_number             => l_array_event_number(hdr_idx)
327679    ,p_event_date               => l_array_event_date(hdr_idx)
327680    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
327681    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
327682    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
327683    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
327684    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
327685    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
327686    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
327687    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
327688    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
327689    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
327690    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
327691    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
327692    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
327693    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
327694    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
327695 
327696 --
327697 -- set the status of entry to C_VALID (0)
327698 --
327699 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
327700 
327701 --
327702 -- initialize a row for ae header
327703 --
327704 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
327705 
327706 l_event_id := l_array_event_id(hdr_idx);
327707 
327708 --
327709 -- storing the hdr_idx for event. May be used by line cursor.
327710 --
327711 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
327712 
327713 --
327714 -- store sources from header extract. This can be improved to
327715 -- store only those sources from header extract that may be used in lines
327716 --
327717 
327718 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
327719 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
327720 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
327721 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
327722 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
327723 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
327724 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
327725 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
327726 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
327727 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
327728 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
327729 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
327730 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
327731 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
327732 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
327733 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
327734 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
327735 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
327736 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
327737 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
327738 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
327739 
327740 --
327741 -- initilaize the status of ae headers for diffrent balance types
327742 -- the status is initialised to C_NOT_CREATED (2)
327743 --
327744 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
327745 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
327746 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
327747 
327748 --
327749 -- call api to validate and store accounting attributes for header
327750 --
327751 
327752 ------------------------------------------------------------
327753 -- Accrual Reversal : to get date for Standard Source (NONE)
327754 ------------------------------------------------------------
327755 l_acc_rev_gl_date_source := NULL;
327756 
327757      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
327758       l_rec_acct_attrs.array_date_value(1) := 
327759 xla_ae_sources_pkg.GetSystemSourceDate(
327760    p_source_code           => 'XLA_REFERENCE_DATE_1'
327761  , p_source_type_code      => 'Y'
327762  , p_source_application_id =>  602
327763 );
327764      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
327765       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
327766 
327767 
327768 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
327769 
327770 XLA_AE_HEADER_PKG.SetJeCategoryName;
327771 
327772 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
327773 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
327774 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
327775 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
327776 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
327777 
327778 
327779 --
327780 xla_ae_header_pkg.SetHdrDescription(
327781    p_description => Description_1 (
327782    p_application_id => p_application_id 
327783  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
327784  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
327785  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
327786  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
327787  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
327788    )
327789 );
327790 --
327791 
327792 -- No header level analytical criteria
327793 
327794 --
327795 --accounting attribute enhancement, bug 3612931
327796 --
327797 l_trx_reversal_source := SUBSTR(NULL, 1,30);
327798 
327799 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
327800    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
327801 
327802    xla_accounting_err_pkg.build_message
327803       (p_appli_s_name            => 'XLA'
327804       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
327805       ,p_token_1                 => 'ACCT_ATTR_NAME'
327806       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
327807       ,p_token_2                 => 'PRODUCT_NAME'
327808       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
327809       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
327810       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
327811       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
327812 
327813 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
327814    --
327815    -- following sets the accounting attributes needed to reverse
327816    -- accounting for a distributeion
327817    --
327818    xla_ae_lines_pkg.SetTrxReversalAttrs
327819       (p_event_id              => l_event_id
327820       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
327821       ,p_trx_reversal_source   => l_trx_reversal_source);
327822 
327823 END IF;
327824 
327825 
327826 ----------------------------------------------------------------
327827 -- 4262811 -  update the header statuses to invalid in need be
327828 ----------------------------------------------------------------
327829 --
327830 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
327831 
327832 
327833   -----------------------------------------------
327834   -- No accrual reversal for the event class/type
327835   -----------------------------------------------
327836 ----------------------------------------------------------------
327837 
327838 --
327839 -- this ends the header loop iteration for one bulk fetch
327840 --
327841 END LOOP;
327842 
327843 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
327844 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
327845 
327846 --
327847 -- insert dummy rows into lines gt table that were created due to
327848 -- transaction reversals
327849 --
327850 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
327851    l_result := XLA_AE_LINES_PKG.InsertLines;
327852 END IF;
327853 
327854 --
327855 -- reset the temp_line_num for each set of events fetched from header
327856 -- cursor rather than doing it for each new event in line cursor
327857 -- Bug 3939231
327858 --
327859 xla_ae_lines_pkg.g_temp_line_num := 0;
327860 
327861 
327862 
327863 --
327864 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
327865 --
327866 --
327867 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
327868 
327869       trace
327870          (p_msg      => 'SQL - FETCH line_cur'
327871          ,p_level    => C_LEVEL_STATEMENT
327872          ,p_module   => l_log_module);
327873 
327874 END IF;
327875 --
327876 --
327877 LOOP
327878   --
327879   FETCH line_cur BULK COLLECT INTO
327880         l_array_entity_id
327881       , l_array_legal_entity_id
327882       , l_array_entity_code
327883       , l_array_transaction_num
327884       , l_array_event_id
327885       , l_array_class_code
327886       , l_array_event_type
327887       , l_array_event_number
327888       , l_array_event_date
327889       , l_array_transaction_date
327890       , l_array_reference_num_1
327891       , l_array_reference_num_2
327892       , l_array_reference_num_3
327893       , l_array_reference_num_4
327894       , l_array_reference_char_1
327895       , l_array_reference_char_2
327896       , l_array_reference_char_3
327897       , l_array_reference_char_4
327898       , l_array_reference_date_1
327899       , l_array_reference_date_2
327900       , l_array_reference_date_3
327901       , l_array_reference_date_4
327902       , l_array_event_created_by
327903       , l_array_budgetary_control_flag
327904       , l_array_extract_line_num 
327905       , l_array_source_11
327906       , l_array_source_15
327907       , l_array_source_84
327908       , l_array_source_88
327909       , l_array_source_91
327910       , l_array_source_92
327911       , l_array_source_93
327912       , l_array_source_94
327913       , l_array_source_95
327914       , l_array_source_97
327915       LIMIT l_rows;
327916 
327917   --
327918   IF (C_LEVEL_EVENT >= g_log_level) THEN
327919             trace
327920                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
327921                ,p_level    => C_LEVEL_EVENT
327922                ,p_module   => l_log_module);
327923   END IF;
327924   --
327925   EXIT WHEN l_array_entity_id.count = 0;
327926 
327927   XLA_AE_LINES_PKG.g_rec_lines := null;
327928 
327929 --
327930 -- Bug 4458708
327931 --
327932 XLA_AE_LINES_PKG.g_LineNumber := 0;
327933 --
327934 --
327935 
327936 FOR Idx IN 1..l_array_event_id.count LOOP
327937    --
327938    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
327939    --
327940    l_event_id := l_array_event_id(idx);  -- 5648433
327941 
327942    --
327943    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
327944    --
327945 
327946    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
327947              (g_array_event(l_event_id).array_value_num('header_index'))
327948          ,'N'
327949          ) <> 'Y'
327950    THEN
327951       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
327952          trace
327953             (p_msg      => 'Trancaction revesal option is not Y '
327954             ,p_level    => C_LEVEL_STATEMENT
327955             ,p_module   => l_log_module);
327956       END IF;
327957 
327958 --
327959 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
327960 --
327961 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
327962 --
327963 -- set event info as cache for other routines to refer event attributes
327964 --
327965 
327966 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
327967    l_previous_event_id := l_event_id;
327968 
327969    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
327970       (p_application_id           => p_application_id
327971       ,p_primary_ledger_id        => p_primary_ledger_id
327972       ,p_base_ledger_id           => p_base_ledger_id
327973       ,p_target_ledger_id         => p_target_ledger_id
327974       ,p_entity_id                => l_array_entity_id(Idx)
327975       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
327976       ,p_entity_code              => l_array_entity_code(Idx)
327977       ,p_transaction_num          => l_array_transaction_num(Idx)
327978       ,p_event_id                 => l_array_event_id(Idx)
327979       ,p_event_class_code         => l_array_class_code(Idx)
327980       ,p_event_type_code          => l_array_event_type(Idx)
327981       ,p_event_number             => l_array_event_number(Idx)
327982       ,p_event_date               => l_array_event_date(Idx)
327983       ,p_transaction_date         => l_array_transaction_date(Idx)
327984       ,p_reference_num_1          => l_array_reference_num_1(Idx)
327985       ,p_reference_num_2          => l_array_reference_num_2(Idx)
327986       ,p_reference_num_3          => l_array_reference_num_3(Idx)
327987       ,p_reference_num_4          => l_array_reference_num_4(Idx)
327988       ,p_reference_char_1         => l_array_reference_char_1(Idx)
327989       ,p_reference_char_2         => l_array_reference_char_2(Idx)
327990       ,p_reference_char_3         => l_array_reference_char_3(Idx)
327991       ,p_reference_char_4         => l_array_reference_char_4(Idx)
327992       ,p_reference_date_1         => l_array_reference_date_1(Idx)
327993       ,p_reference_date_2         => l_array_reference_date_2(Idx)
327994       ,p_reference_date_3         => l_array_reference_date_3(Idx)
327995       ,p_reference_date_4         => l_array_reference_date_4(Idx)
327996       ,p_event_created_by         => l_array_event_created_by(Idx)
327997       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
327998        --
327999 END IF;
328000 
328001 
328002 
328003 --
328004 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
328005 
328006 l_acct_reversal_source := SUBSTR(NULL, 1,30);
328007 
328008 IF l_continue_with_lines THEN
328009    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
328010       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
328011 
328012       xla_accounting_err_pkg.build_message
328013          (p_appli_s_name            => 'XLA'
328014          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
328015          ,p_token_1                 => 'LINE_NUMBER'
328016          ,p_value_1                 => l_array_extract_line_num(Idx)
328017          ,p_token_2                 => 'PRODUCT_NAME'
328018          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
328019          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
328020          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
328021          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
328022 
328023    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
328024       --
328025       -- following sets the accounting attributes needed to reverse
328026       -- accounting for a distributeion
328027       --
328028 
328029       --
328030       -- 5217187
328031       --
328032       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
328033       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
328034                                        g_array_event(l_event_id).array_value_num('header_index'));
328035       --
328036       --
328037 
328038       -- No reversal code generated
328039 
328040       xla_ae_lines_pkg.SetAcctReversalAttrs
328041          (p_event_id             => l_event_id
328042          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
328043          ,p_calculate_acctd_flag => l_calculate_acctd_flag
328044          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
328045    END IF;
328046 
328047    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
328048        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
328049 
328050 --
328051 AcctLineType_56 (
328052  p_application_id  => p_application_id
328053  ,p_event_id     => l_event_id
328054  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328055  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328056  ,p_actual_flag => l_actual_flag
328057  ,p_balance_type_code => l_balance_type_code
328058  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328059  
328060  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328061  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328062  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328063  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328064  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328065  , p_source_11 => l_array_source_11(Idx)
328066  , p_source_84 => l_array_source_84(Idx)
328067  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328068  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328069  , p_source_88 => l_array_source_88(Idx)
328070  , p_source_91 => l_array_source_91(Idx)
328071  , p_source_92 => l_array_source_92(Idx)
328072  , p_source_93 => l_array_source_93(Idx)
328073  , p_source_94 => l_array_source_94(Idx)
328074  , p_source_95 => l_array_source_95(Idx)
328075  , p_source_97 => l_array_source_97(Idx)
328076  );
328077 If(l_balance_type_code = 'A') THEN
328078   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328079 END IF;
328080 
328081 --
328082 
328083 
328084 --
328085 AcctLineType_155 (
328086  p_application_id  => p_application_id
328087  ,p_event_id     => l_event_id
328088  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328089  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328090  ,p_actual_flag => l_actual_flag
328091  ,p_balance_type_code => l_balance_type_code
328092  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328093  
328094  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328095  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328096  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328097  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328098  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328099  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
328100  , p_source_84 => l_array_source_84(Idx)
328101  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328102  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328103  , p_source_88 => l_array_source_88(Idx)
328104  , p_source_91 => l_array_source_91(Idx)
328105  , p_source_92 => l_array_source_92(Idx)
328106  , p_source_93 => l_array_source_93(Idx)
328107  , p_source_94 => l_array_source_94(Idx)
328108  , p_source_95 => l_array_source_95(Idx)
328109  , p_source_97 => l_array_source_97(Idx)
328110  );
328111 If(l_balance_type_code = 'A') THEN
328112   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328113 END IF;
328114 
328115 --
328116 
328117 
328118 --
328119 AcctLineType_181 (
328120  p_application_id  => p_application_id
328121  ,p_event_id     => l_event_id
328122  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328123  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328124  ,p_actual_flag => l_actual_flag
328125  ,p_balance_type_code => l_balance_type_code
328126  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328127  
328128  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328129  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328130  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328131  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328132  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328133  , p_source_11 => l_array_source_11(Idx)
328134  , p_source_84 => l_array_source_84(Idx)
328135  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328136  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328137  , p_source_88 => l_array_source_88(Idx)
328138  , p_source_91 => l_array_source_91(Idx)
328139  , p_source_92 => l_array_source_92(Idx)
328140  , p_source_93 => l_array_source_93(Idx)
328141  , p_source_94 => l_array_source_94(Idx)
328142  , p_source_95 => l_array_source_95(Idx)
328143  , p_source_97 => l_array_source_97(Idx)
328144  );
328145 If(l_balance_type_code = 'A') THEN
328146   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328147 END IF;
328148 
328149 --
328150 
328151 
328152 --
328153 AcctLineType_189 (
328154  p_application_id  => p_application_id
328155  ,p_event_id     => l_event_id
328156  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328157  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328158  ,p_actual_flag => l_actual_flag
328159  ,p_balance_type_code => l_balance_type_code
328160  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328161  
328162  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328163  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328164  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328165  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328166  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328167  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
328168  , p_source_84 => l_array_source_84(Idx)
328169  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328170  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328171  , p_source_88 => l_array_source_88(Idx)
328172  , p_source_91 => l_array_source_91(Idx)
328173  , p_source_92 => l_array_source_92(Idx)
328174  , p_source_93 => l_array_source_93(Idx)
328175  , p_source_94 => l_array_source_94(Idx)
328176  , p_source_95 => l_array_source_95(Idx)
328177  , p_source_97 => l_array_source_97(Idx)
328178  );
328179 If(l_balance_type_code = 'A') THEN
328180   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328181 END IF;
328182 
328183 --
328184 
328185 
328186 --
328187 AcctLineType_214 (
328188  p_application_id  => p_application_id
328189  ,p_event_id     => l_event_id
328190  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328191  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328192  ,p_actual_flag => l_actual_flag
328193  ,p_balance_type_code => l_balance_type_code
328194  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328195  
328196  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328197  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328198  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328199  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328200  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328201  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
328202  , p_source_84 => l_array_source_84(Idx)
328203  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328204  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328205  , p_source_88 => l_array_source_88(Idx)
328206  , p_source_91 => l_array_source_91(Idx)
328207  , p_source_92 => l_array_source_92(Idx)
328208  , p_source_93 => l_array_source_93(Idx)
328209  , p_source_94 => l_array_source_94(Idx)
328210  , p_source_95 => l_array_source_95(Idx)
328211  , p_source_97 => l_array_source_97(Idx)
328212  );
328213 If(l_balance_type_code = 'A') THEN
328214   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328215 END IF;
328216 
328217 --
328218 
328219 
328220 --
328221 AcctLineType_219 (
328222  p_application_id  => p_application_id
328223  ,p_event_id     => l_event_id
328224  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328225  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328226  ,p_actual_flag => l_actual_flag
328227  ,p_balance_type_code => l_balance_type_code
328228  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328229  
328230  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328231  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328232  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328233  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328234  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328235  , p_source_11 => l_array_source_11(Idx)
328236  , p_source_15 => l_array_source_15(Idx)
328237  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
328238  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
328239  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
328240  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
328241  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
328242  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
328243  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
328244  , p_source_84 => l_array_source_84(Idx)
328245  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328246  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328247  , p_source_88 => l_array_source_88(Idx)
328248  , p_source_91 => l_array_source_91(Idx)
328249  , p_source_92 => l_array_source_92(Idx)
328250  , p_source_93 => l_array_source_93(Idx)
328251  , p_source_94 => l_array_source_94(Idx)
328252  , p_source_95 => l_array_source_95(Idx)
328253  , p_source_97 => l_array_source_97(Idx)
328254  );
328255 If(l_balance_type_code = 'A') THEN
328256   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328257 END IF;
328258 
328259 --
328260 
328261 
328262 --
328263 AcctLineType_347 (
328264  p_application_id  => p_application_id
328265  ,p_event_id     => l_event_id
328266  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328267  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328268  ,p_actual_flag => l_actual_flag
328269  ,p_balance_type_code => l_balance_type_code
328270  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328271  
328272  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328273  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328274  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328275  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328276  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328277  , p_source_11 => l_array_source_11(Idx)
328278  , p_source_84 => l_array_source_84(Idx)
328279  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328280  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328281  , p_source_88 => l_array_source_88(Idx)
328282  , p_source_91 => l_array_source_91(Idx)
328283  , p_source_92 => l_array_source_92(Idx)
328284  , p_source_93 => l_array_source_93(Idx)
328285  , p_source_94 => l_array_source_94(Idx)
328286  , p_source_95 => l_array_source_95(Idx)
328287  , p_source_97 => l_array_source_97(Idx)
328288  );
328289 If(l_balance_type_code = 'A') THEN
328290   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328291 END IF;
328292 
328293 --
328294 
328295 
328296 --
328297 AcctLineType_426 (
328298  p_application_id  => p_application_id
328299  ,p_event_id     => l_event_id
328300  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328301  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328302  ,p_actual_flag => l_actual_flag
328303  ,p_balance_type_code => l_balance_type_code
328304  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328305  
328306  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328307  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328308  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328309  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328310  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328311  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
328312  , p_source_84 => l_array_source_84(Idx)
328313  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328314  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328315  , p_source_88 => l_array_source_88(Idx)
328316  , p_source_91 => l_array_source_91(Idx)
328317  , p_source_92 => l_array_source_92(Idx)
328318  , p_source_93 => l_array_source_93(Idx)
328319  , p_source_94 => l_array_source_94(Idx)
328320  , p_source_95 => l_array_source_95(Idx)
328321  , p_source_97 => l_array_source_97(Idx)
328322  );
328323 If(l_balance_type_code = 'A') THEN
328324   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328325 END IF;
328326 
328327 --
328328 
328329 
328330 --
328331 AcctLineType_452 (
328332  p_application_id  => p_application_id
328333  ,p_event_id     => l_event_id
328334  ,p_calculate_acctd_flag => l_calculate_acctd_flag
328335  ,p_calculate_g_l_flag => l_calculate_g_l_flag
328336  ,p_actual_flag => l_actual_flag
328337  ,p_balance_type_code => l_balance_type_code
328338  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
328339  
328340  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
328341  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
328342  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
328343  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
328344  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
328345  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
328346  , p_source_84 => l_array_source_84(Idx)
328347  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
328348  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
328349  , p_source_88 => l_array_source_88(Idx)
328350  , p_source_91 => l_array_source_91(Idx)
328351  , p_source_92 => l_array_source_92(Idx)
328352  , p_source_93 => l_array_source_93(Idx)
328353  , p_source_94 => l_array_source_94(Idx)
328354  , p_source_95 => l_array_source_95(Idx)
328355  , p_source_97 => l_array_source_97(Idx)
328356  );
328357 If(l_balance_type_code = 'A') THEN
328358   l_actual_gain_loss_ref := l_gain_or_loss_ref;
328359 END IF;
328360 
328361 --
328362 
328363       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
328364       -- or secondary ledger that has different currency with primary
328365       -- or alc that is calculated by sla
328366       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
328367             (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'))
328368 
328369 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
328370 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
328371           AND (l_actual_flag = 'A')) THEN
328372         XLA_AE_LINES_PKG.CreateGainOrLossLines(
328373           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
328374          ,p_application_id   => p_application_id
328375          ,p_amb_context_code => 'DEFAULT'
328376          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
328377          ,p_event_class_code => C_EVENT_CLASS_CODE
328378          ,p_event_type_code  => C_EVENT_TYPE_CODE
328379          
328380          ,p_gain_ccid        => -1
328381          ,p_loss_ccid        => -1
328382 
328383          ,p_actual_flag      => l_actual_flag
328384          ,p_enc_flag         => null
328385          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
328386          ,p_enc_g_l_ref      => null
328387          );
328388       END IF;
328389    END IF;
328390 END IF;
328391 
328392    ELSE
328393       --
328394       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
328395       --
328396       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
328397          trace
328398             (p_msg      => 'Trancaction revesal option is Y'
328399             ,p_level    => C_LEVEL_STATEMENT
328400             ,p_module   => l_log_module);
328401       END IF;
328402    END IF;
328403 
328404 END LOOP;
328405 l_result := XLA_AE_LINES_PKG.InsertLines ;
328406 end loop;
328407 close line_cur;
328408 
328409 
328410 --
328411 -- insert headers into xla_ae_headers_gt table
328412 --
328413 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
328414 
328415 -- insert into errors table here.
328416 
328417 END LOOP;
328418 
328419 --
328420 -- 4865292
328421 --
328422 -- Compare g_hdr_extract_count with event count in
328423 -- CreateHeadersAndLines.
328424 --
328425 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
328426 
328427 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
328428    trace (p_msg     => '# rows extracted from header extract objects '
328429                     || ' (running total): '
328430                     || g_hdr_extract_count
328431          ,p_level   => C_LEVEL_STATEMENT
328432          ,p_module  => l_log_module);
328433 END IF;
328434 
328435 CLOSE header_cur;
328436 --
328437 
328438 --
328439 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
328440    trace
328441       (p_msg      => 'END of EventType_558'
328442       ,p_level    => C_LEVEL_PROCEDURE
328443       ,p_module   => l_log_module);
328444 END IF;
328445 --
328446 RETURN l_result;
328447 EXCEPTION
328448 WHEN xla_exceptions_pkg.application_exception THEN
328449    
328450 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
328451 
328452    
328453 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
328454 
328455    RAISE;
328456 
328457 WHEN NO_DATA_FOUND THEN
328458 
328459 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
328460 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
328461 
328462 FOR header_record IN header_cur
328463 LOOP
328464     l_array_header_events(header_record.event_id) := header_record.event_id;
328465 END LOOP;
328466 
328467 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
328468 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
328469 
328470 fnd_file.put_line(fnd_file.LOG, '                    ');
328471 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
328472 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
328473 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
328474 
328475 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
328476 LOOP
328477 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
328478 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
328479         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
328480 	END IF;
328481 END LOOP;
328482 
328483 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
328484 fnd_file.put_line(fnd_file.LOG, '                    ');
328485 
328486 
328487 xla_exceptions_pkg.raise_message
328488       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_558');
328489 
328490 
328491 WHEN OTHERS THEN
328492    xla_exceptions_pkg.raise_message
328493       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_558');
328494 END EventType_558;
328495 --
328496 
328497 ---------------------------------------
328498 --
328499 -- PRIVATE PROCEDURE
328500 --         insert_sources_559
328501 --
328502 ----------------------------------------
328503 --
328504 PROCEDURE insert_sources_559(
328505                                 p_target_ledger_id       IN NUMBER
328506                               , p_language               IN VARCHAR2
328507                               , p_sla_ledger_id          IN NUMBER
328508                               , p_pad_start_date         IN DATE
328509                               , p_pad_end_date           IN DATE
328510                          )
328511 IS
328512 
328513 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_TP';
328514 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
328515 p_apps_owner                   VARCHAR2(30);
328516 l_log_module                   VARCHAR2(240);
328517 BEGIN
328518 IF g_log_enabled THEN
328519       l_log_module := C_DEFAULT_MODULE||'.insert_sources_559';
328520 END IF;
328521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
328522 
328523       trace
328524          (p_msg      => 'BEGIN of insert_sources_559'
328525          ,p_level    => C_LEVEL_PROCEDURE
328526          ,p_module   => l_log_module);
328527 
328528 END IF;
328529 
328530 -- select APPS owner
328531 SELECT oracle_username
328532   INTO p_apps_owner
328533   FROM fnd_oracle_userid
328534  WHERE read_only_flag = 'U'
328535 ;
328536 
328537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
328538       trace
328539          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
328540                         ' - p_language = '||p_language||
328541                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
328542                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
328543                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
328544                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
328545          ,p_level    => C_LEVEL_STATEMENT
328546          ,p_module   => l_log_module);
328547 END IF;
328548 
328549 
328550 --
328551 INSERT INTO xla_diag_sources --hdr1
328552 (
328553         event_id
328554       , ledger_id
328555       , sla_ledger_id
328556       , description_language
328557       , object_name
328558       , object_type_code
328559       , line_number
328560       , source_application_id
328561       , source_type_code
328562       , source_code
328563       , source_value
328564       , source_meaning
328565       , created_by
328566       , creation_date
328567       , last_update_date
328568       , last_updated_by
328569       , last_update_login
328570       , program_update_date
328571       , program_application_id
328572       , program_id
328573       , request_id
328574 )
328575 SELECT
328576         event_id
328577       , p_target_ledger_id
328578       , p_sla_ledger_id
328579       , p_language
328580       , object_name
328581       , object_type_code
328582       , line_number
328583       , source_application_id
328584       , source_type_code
328585       , source_code
328586       , SUBSTR(source_value ,1,1996)
328587       , SUBSTR(source_meaning,1,200)
328588       , xla_environment_pkg.g_Usr_Id
328589       , TRUNC(SYSDATE)
328590       , TRUNC(SYSDATE)
328591       , xla_environment_pkg.g_Usr_Id
328592       , xla_environment_pkg.g_Login_Id
328593       , TRUNC(SYSDATE)
328594       , xla_environment_pkg.g_Prog_Appl_Id
328595       , xla_environment_pkg.g_Prog_Id
328596       , xla_environment_pkg.g_Req_Id
328597   FROM (
328598        SELECT xet.event_id                  event_id
328599             , 0                             line_number
328600             , CASE r
328601                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
328602                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
328603                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
328604                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
328605                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
328606                 WHEN 6 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
328607                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
328608                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
328609                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
328610                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
328611                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
328612                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
328613                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
328614                 WHEN 14 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
328615                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
328616                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
328617                 
328618                ELSE null
328619               END                           object_name
328620             , CASE r
328621                 WHEN 1 THEN 'HEADER' 
328622                 WHEN 2 THEN 'HEADER' 
328623                 WHEN 3 THEN 'HEADER' 
328624                 WHEN 4 THEN 'HEADER' 
328625                 WHEN 5 THEN 'HEADER' 
328626                 WHEN 6 THEN 'HEADER' 
328627                 WHEN 7 THEN 'HEADER' 
328628                 WHEN 8 THEN 'HEADER' 
328629                 WHEN 9 THEN 'HEADER' 
328630                 WHEN 10 THEN 'HEADER' 
328631                 WHEN 11 THEN 'HEADER' 
328632                 WHEN 12 THEN 'HEADER' 
328633                 WHEN 13 THEN 'HEADER' 
328634                 WHEN 14 THEN 'HEADER' 
328635                 WHEN 15 THEN 'HEADER' 
328636                 WHEN 16 THEN 'HEADER' 
328637                 
328638                 ELSE null
328639               END                           object_type_code
328640             , CASE r
328641                 WHEN 1 THEN '707' 
328642                 WHEN 2 THEN '707' 
328643                 WHEN 3 THEN '707' 
328644                 WHEN 4 THEN '707' 
328645                 WHEN 5 THEN '707' 
328646                 WHEN 6 THEN '707' 
328647                 WHEN 7 THEN '707' 
328648                 WHEN 8 THEN '707' 
328649                 WHEN 9 THEN '707' 
328650                 WHEN 10 THEN '707' 
328651                 WHEN 11 THEN '707' 
328652                 WHEN 12 THEN '707' 
328653                 WHEN 13 THEN '707' 
328654                 WHEN 14 THEN '707' 
328655                 WHEN 15 THEN '707' 
328656                 WHEN 16 THEN '707' 
328657                 
328658                 ELSE null
328659               END                           source_application_id
328660             , 'S'             source_type_code
328661             , CASE r
328662                 WHEN 1 THEN 'TRANSACTION_ID' 
328663                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
328664                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
328665                 WHEN 4 THEN 'TRANSACTION_UOM' 
328666                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
328667                 WHEN 6 THEN 'INTERORG_REVENUE_ACCOUNT' 
328668                 WHEN 7 THEN 'PRIMARY_COST_METHOD' 
328669                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
328670                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
328671                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
328672                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
328673                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
328674                 WHEN 13 THEN 'INTERORG_BRIDGING_ACCOUNT' 
328675                 WHEN 14 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
328676                 WHEN 15 THEN 'DISTRIBUTION_TYPE' 
328677                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
328678                 
328679                 ELSE null
328680               END                           source_code
328681             , CASE r
328682                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
328683                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
328684                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
328685                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
328686                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
328687                 WHEN 6 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
328688                 WHEN 7 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
328689                 WHEN 8 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
328690                 WHEN 9 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
328691                 WHEN 10 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
328692                 WHEN 11 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
328693                 WHEN 12 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
328694                 WHEN 13 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
328695                 WHEN 14 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
328696                 WHEN 15 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
328697                 WHEN 16 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
328698                 
328699                 ELSE null
328700               END                           source_value
328701             , CASE r
328702                 WHEN 7 THEN fvl39.meaning
328703                 WHEN 15 THEN fvl85.meaning
328704                 WHEN 16 THEN fvl114.meaning
328705                 
328706                 ELSE null
328707               END               source_meaning
328708         FROM xla_events_gt     xet  
328709       , CST_XLA_INTERORG_PARAMS_REF_V  h1
328710       , CST_XLA_INV_HEADERS_V  h2
328711       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
328712       , CST_XLA_INV_REF_V  h5
328713       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
328714       , CST_XLA_INV_TXN_TYPES_REF_V  h7
328715       , CST_XLA_PLA_CATEGORY_REF_V  h8
328716   , fnd_lookup_values    fvl39
328717   , fnd_lookup_values    fvl85
328718   , fnd_lookup_values    fvl114
328719             ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
328720        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
328721          AND xet.event_type_code = C_EVENT_TYPE_CODE
328722             AND h2.event_id = xet.event_id
328723   AND h1.event_id (+) = h2.event_id
328724  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id = h2.inventory_item_id and h6.organization_id = h2.organization_id AND h7.inv_transaction_type_id = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id 
328725 and h8.pla_cat_item_id          (+) = h2.inventory_item_id 
328726 and h8.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
328727   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
328728   AND fvl39.view_application_id(+) = 700
328729   AND fvl39.language(+)            = USERENV('LANG')
328730      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
328731   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
328732   AND fvl85.view_application_id(+) = 700
328733   AND fvl85.language(+)            = USERENV('LANG')
328734      AND fvl114.lookup_type(+)         = 'YES_NO'
328735   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
328736   AND fvl114.view_application_id(+) = 0
328737   AND fvl114.language(+)            = USERENV('LANG')
328738   
328739 )
328740 ;
328741 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
328742 
328743       trace
328744          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
328745          ,p_level    => C_LEVEL_STATEMENT
328746          ,p_module   => l_log_module);
328747 
328748 END IF;
328749 --
328750 
328751 
328752 
328753 --
328754 INSERT INTO xla_diag_sources --line1
328755 (
328756         event_id
328757       , ledger_id
328758       , sla_ledger_id
328759       , description_language
328760       , object_name
328761       , object_type_code
328762       , line_number
328763       , source_application_id
328764       , source_type_code
328765       , source_code
328766       , source_value
328767       , source_meaning
328768       , created_by
328769       , creation_date
328770       , last_update_date
328771       , last_updated_by
328772       , last_update_login
328773       , program_update_date
328774       , program_application_id
328775       , program_id
328776       , request_id
328777 )
328778 SELECT  event_id
328779       , p_target_ledger_id
328780       , p_sla_ledger_id
328781       , p_language
328782       , object_name
328783       , object_type_code
328784       , line_number
328785       , source_application_id
328786       , source_type_code
328787       , source_code
328788       , SUBSTR(source_value,1,1996)
328789       , SUBSTR(source_meaning,1,200)
328790       , xla_environment_pkg.g_Usr_Id
328791       , TRUNC(SYSDATE)
328792       , TRUNC(SYSDATE)
328793       , xla_environment_pkg.g_Usr_Id
328794       , xla_environment_pkg.g_Login_Id
328795       , TRUNC(SYSDATE)
328796       , xla_environment_pkg.g_Prog_Appl_Id
328797       , xla_environment_pkg.g_Prog_Id
328798       , xla_environment_pkg.g_Req_Id
328799   FROM (
328800        SELECT xet.event_id                  event_id
328801             , l3.line_number                 line_number
328802             , CASE r
328803                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
328804                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
328805                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
328806                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
328807                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
328808                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
328809                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
328810                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
328811                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
328812                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
328813                 
328814                ELSE null
328815               END                           object_name
328816             , CASE r
328817                 WHEN 1 THEN 'LINE' 
328818                 WHEN 2 THEN 'LINE' 
328819                 WHEN 3 THEN 'LINE' 
328820                 WHEN 4 THEN 'LINE' 
328821                 WHEN 5 THEN 'LINE' 
328822                 WHEN 6 THEN 'LINE' 
328823                 WHEN 7 THEN 'LINE' 
328824                 WHEN 8 THEN 'LINE' 
328825                 WHEN 9 THEN 'LINE' 
328826                 WHEN 10 THEN 'LINE' 
328827                 
328828                 ELSE null
328829               END                           object_type_code
328830             , CASE r
328831                 WHEN 1 THEN '707' 
328832                 WHEN 2 THEN '707' 
328833                 WHEN 3 THEN '707' 
328834                 WHEN 4 THEN '707' 
328835                 WHEN 5 THEN '707' 
328836                 WHEN 6 THEN '707' 
328837                 WHEN 7 THEN '707' 
328838                 WHEN 8 THEN '707' 
328839                 WHEN 9 THEN '707' 
328840                 WHEN 10 THEN '707' 
328841                 
328842                 ELSE null
328843               END                           source_application_id
328844             , 'S'             source_type_code
328845             , CASE r
328846                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
328847                 WHEN 2 THEN 'COST_ELEMENT_ID' 
328848                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
328849                 WHEN 4 THEN 'CURRENCY_CODE' 
328850                 WHEN 5 THEN 'ENTERED_AMOUNT' 
328851                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
328852                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
328853                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
328854                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
328855                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
328856                 
328857                 ELSE null
328858               END                           source_code
328859             , CASE r
328860                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
328861                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
328862                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
328863                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
328864                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
328865                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
328866                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
328867                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
328868                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
328869                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
328870                 
328871                 ELSE null
328872               END                           source_value
328873             , CASE r
328874                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
328875                           1009615
328876                          ,TO_CHAR(l3.COST_ELEMENT_ID)
328877                          ,'COST_ELEMENT_ID'
328878                          ,'S'
328879                          ,707)
328880                 
328881                 ELSE null
328882               END               source_meaning
328883          FROM  xla_events_gt     xet  
328884         , CST_XLA_INV_LINES_V  l3
328885             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
328886         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
328887           AND xet.event_type_code = C_EVENT_TYPE_CODE
328888             AND l3.event_id          = xet.event_id
328889 
328890 )
328891 ;
328892 --
328893 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
328894 
328895       trace
328896          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
328897          ,p_level    => C_LEVEL_STATEMENT
328898          ,p_module   => l_log_module);
328899 
328900 END IF;
328901 
328902 
328903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
328904       trace
328905          (p_msg      => 'END of insert_sources_559'
328906          ,p_level    => C_LEVEL_PROCEDURE
328907          ,p_module   => l_log_module);
328908 END IF;
328909 EXCEPTION
328910   WHEN xla_exceptions_pkg.application_exception THEN
328911       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
328912             trace
328913                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
328914                ,p_level    => C_LEVEL_EXCEPTION
328915                ,p_module   => l_log_module);
328916       END IF;
328917       RAISE;
328918   WHEN OTHERS THEN
328919       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
328920             trace
328921                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
328922                ,p_level    => C_LEVEL_EXCEPTION
328923                ,p_module   => l_log_module);
328924        END IF;
328925        xla_exceptions_pkg.raise_message
328926            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_559');
328927 END insert_sources_559;
328928 --
328929 
328930 ---------------------------------------
328931 --
328932 -- PRIVATE FUNCTION
328933 --         EventType_559
328934 --
328935 ----------------------------------------
328936 --
328937 FUNCTION EventType_559
328938        (p_application_id         IN NUMBER
328939        ,p_base_ledger_id         IN NUMBER
328940        ,p_target_ledger_id       IN NUMBER
328941        ,p_language               IN VARCHAR2
328942        ,p_currency_code          IN VARCHAR2
328943        ,p_sla_ledger_id          IN NUMBER
328944        ,p_pad_start_date         IN DATE
328945        ,p_pad_end_date           IN DATE
328946        ,p_primary_ledger_id      IN NUMBER)
328947 RETURN BOOLEAN IS
328948 --
328949 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_RCPT_TP';
328950 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
328951 
328952 l_calculate_acctd_flag   VARCHAR2(1) :='N';
328953 l_calculate_g_l_flag     VARCHAR2(1) :='N';
328954 --
328955 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328956 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328957 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
328958 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
328959 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328960 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
328961 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
328962 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328963 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
328964 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
328965 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328966 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328967 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328968 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
328969 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
328970 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
328971 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
328972 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
328973 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
328974 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
328975 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
328976 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
328977 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
328978 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
328979 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
328980 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
328981 
328982 l_event_id                             NUMBER;
328983 l_previous_event_id                    NUMBER;
328984 l_first_event_id                       NUMBER;
328985 l_last_event_id                        NUMBER;
328986 
328987 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
328988 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
328989 --
328990 --
328991 l_result                    BOOLEAN := TRUE;
328992 l_rows                      NUMBER  := 1000;
328993 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt, Transfer Pricing';
328994 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
328995 l_description               VARCHAR2(4000);
328996 l_transaction_reversal      NUMBER;
328997 l_ae_header_id              NUMBER;
328998 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
328999 l_log_module                VARCHAR2(240);
329000 --
329001 l_acct_reversal_source      VARCHAR2(30);
329002 l_trx_reversal_source       VARCHAR2(30);
329003 
329004 l_continue_with_lines       BOOLEAN := TRUE;
329005 --
329006 l_acc_rev_gl_date_source    DATE;                      -- 4262811
329007 --
329008 type t_array_event_id is table of number index by binary_integer;
329009 
329010 l_rec_array_event                    t_rec_array_event;
329011 l_null_rec_array_event               t_rec_array_event;
329012 l_array_ae_header_id                 xla_number_array_type;
329013 l_actual_flag                        VARCHAR2(1) := NULL;
329014 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
329015 l_balance_type_code                  VARCHAR2(1) :=NULL;
329016 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
329017 
329018 --
329019 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
329020 --
329021 
329022 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
329023 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
329024 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
329025 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
329026 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
329027 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329028 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
329029 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329030 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329031 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329032 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329033 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329034 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329035 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
329036 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
329037 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
329038 
329039 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
329040 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
329041 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
329042 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
329043 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
329044 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
329045 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
329046 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
329047 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
329048 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
329049 
329050 l_array_source_1              t_array_source_1;
329051 l_array_source_2              t_array_source_2;
329052 l_array_source_3              t_array_source_3;
329053 l_array_source_4              t_array_source_4;
329054 l_array_source_5              t_array_source_5;
329055 l_array_source_33              t_array_source_33;
329056 l_array_source_39              t_array_source_39;
329057 l_array_source_39_meaning      t_array_lookup_meaning;
329058 l_array_source_41              t_array_source_41;
329059 l_array_source_42              t_array_source_42;
329060 l_array_source_43              t_array_source_43;
329061 l_array_source_44              t_array_source_44;
329062 l_array_source_45              t_array_source_45;
329063 l_array_source_46              t_array_source_46;
329064 l_array_source_59              t_array_source_59;
329065 l_array_source_85              t_array_source_85;
329066 l_array_source_85_meaning      t_array_lookup_meaning;
329067 l_array_source_114              t_array_source_114;
329068 l_array_source_114_meaning      t_array_lookup_meaning;
329069 
329070 l_array_source_11      t_array_source_11;
329071 l_array_source_15      t_array_source_15;
329072 l_array_source_84      t_array_source_84;
329073 l_array_source_88      t_array_source_88;
329074 l_array_source_91      t_array_source_91;
329075 l_array_source_92      t_array_source_92;
329076 l_array_source_93      t_array_source_93;
329077 l_array_source_94      t_array_source_94;
329078 l_array_source_95      t_array_source_95;
329079 l_array_source_97      t_array_source_97;
329080 
329081 --
329082 CURSOR header_cur
329083 IS
329084 SELECT /*+ leading(xet) cardinality(xet,1) */
329085 -- Event Type Code: FOB_RCPT_SENDER_RCPT_TP
329086 -- Event Class Code: FOB_RCPT_SENDER_RCPT
329087     xet.entity_id
329088   , xet.legal_entity_id
329089   , xet.entity_code
329090   , xet.transaction_number
329091   , xet.event_id
329092   , xet.event_class_code
329093   , xet.event_type_code
329094   , xet.event_number
329095   , xet.event_date
329096   , xet.transaction_date
329097   , xet.reference_num_1
329098   , xet.reference_num_2
329099   , xet.reference_num_3
329100   , xet.reference_num_4
329101   , xet.reference_char_1
329102   , xet.reference_char_2
329103   , xet.reference_char_3
329104   , xet.reference_char_4
329105   , xet.reference_date_1
329106   , xet.reference_date_2
329107   , xet.reference_date_3
329108   , xet.reference_date_4
329109   , xet.event_created_by
329110   , xet.budgetary_control_flag 
329111   , h2.TRANSACTION_ID    source_1
329112   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
329113   , h5.TRANSACTION_QUANTITY    source_3
329114   , h5.TRANSACTION_UOM    source_4
329115   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
329116   , h1.INTERORG_REVENUE_ACCOUNT    source_33
329117   , h4.PRIMARY_COST_METHOD    source_39
329118   , fvl39.meaning   source_39_meaning
329119   , h8.PLA_MATERIAL_ACCOUNT    source_41
329120   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
329121   , h8.PLA_RESOURCE_ACCOUNT    source_43
329122   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
329123   , h8.PLA_OVERHEAD_ACCOUNT    source_45
329124   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
329125   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
329126   , h2.DISTRIBUTION_TYPE    source_85
329127   , fvl85.meaning   source_85_meaning
329128   , h2.TRANSFER_TO_GL_INDICATOR    source_114
329129   , fvl114.meaning   source_114_meaning
329130   FROM xla_events_gt     xet 
329131   , CST_XLA_INTERORG_PARAMS_REF_V  h1
329132   , CST_XLA_INV_HEADERS_V  h2
329133   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
329134   , CST_XLA_INV_REF_V  h5
329135   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
329136   , CST_XLA_INV_TXN_TYPES_REF_V  h7
329137   , CST_XLA_PLA_CATEGORY_REF_V  h8
329138   , fnd_lookup_values    fvl39
329139   , fnd_lookup_values    fvl85
329140   , fnd_lookup_values    fvl114
329141  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
329142    and xet.event_type_code = C_EVENT_TYPE_CODE
329143    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
329144   AND h1.event_id (+) = h2.event_id
329145  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h6.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
329146 AND h8.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
329147 AND h8.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
329148   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
329149   AND fvl39.view_application_id(+) = 700
329150   AND fvl39.language(+)            = USERENV('LANG')
329151      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
329152   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
329153   AND fvl85.view_application_id(+) = 700
329154   AND fvl85.language(+)            = USERENV('LANG')
329155      AND fvl114.lookup_type(+)         = 'YES_NO'
329156   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
329157   AND fvl114.view_application_id(+) = 0
329158   AND fvl114.language(+)            = USERENV('LANG')
329159   
329160  ORDER BY event_id
329161 ;
329162 
329163 
329164 --
329165 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
329166 IS
329167 SELECT /*+ leading(xet) cardinality(xet,1) */
329168 -- Event Type Code: FOB_RCPT_SENDER_RCPT_TP
329169 -- Event Class Code: FOB_RCPT_SENDER_RCPT
329170     xet.entity_id
329171    ,xet.legal_entity_id
329172    ,xet.entity_code
329173    ,xet.transaction_number
329174    ,xet.event_id
329175    ,xet.event_class_code
329176    ,xet.event_type_code
329177    ,xet.event_number
329178    ,xet.event_date
329179    ,xet.transaction_date
329180    ,xet.reference_num_1
329181    ,xet.reference_num_2
329182    ,xet.reference_num_3
329183    ,xet.reference_num_4
329184    ,xet.reference_char_1
329185    ,xet.reference_char_2
329186    ,xet.reference_char_3
329187    ,xet.reference_char_4
329188    ,xet.reference_date_1
329189    ,xet.reference_date_2
329190    ,xet.reference_date_3
329191    ,xet.reference_date_4
329192    ,xet.event_created_by
329193    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
329194   , l3.CODE_COMBINATION_ID    source_11
329195   , l3.COST_ELEMENT_ID    source_15
329196   , l3.DISTRIBUTION_IDENTIFIER    source_84
329197   , l3.CURRENCY_CODE    source_88
329198   , l3.ENTERED_AMOUNT    source_91
329199   , l3.CURRENCY_CONVERSION_DATE    source_92
329200   , l3.CURRENCY_CONVERSION_RATE    source_93
329201   , l3.CURRENCY_CONVERSION_TYPE    source_94
329202   , l3.ACCOUNTED_AMOUNT    source_95
329203   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
329204   FROM xla_events_gt     xet 
329205   , CST_XLA_INV_LINES_V  l3
329206  WHERE xet.event_id between x_first_event_id and x_last_event_id
329207    and xet.event_date between p_pad_start_date and p_pad_end_date
329208    and xet.event_type_code = C_EVENT_TYPE_CODE
329209    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
329210 ;
329211 
329212 --
329213 BEGIN
329214 IF g_log_enabled THEN
329215    l_log_module := C_DEFAULT_MODULE||'.EventType_559';
329216 END IF;
329217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
329218    trace
329219       (p_msg      => 'BEGIN of EventType_559'
329220       ,p_level    => C_LEVEL_PROCEDURE
329221       ,p_module   => l_log_module);
329222 END IF;
329223 
329224 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
329225    trace
329226       (p_msg      => 'p_application_id = '||p_application_id||
329227                      ' - p_base_ledger_id = '||p_base_ledger_id||
329228                      ' - p_target_ledger_id  = '||p_target_ledger_id||
329229                      ' - p_language = '||p_language||
329230                      ' - p_currency_code = '||p_currency_code||
329231                      ' - p_sla_ledger_id = '||p_sla_ledger_id
329232       ,p_level    => C_LEVEL_STATEMENT
329233       ,p_module   => l_log_module);
329234 END IF;
329235 --
329236 -- initialze arrays
329237 --
329238 g_array_event.DELETE;
329239 l_rec_array_event := l_null_rec_array_event;
329240 --
329241 --------------------------------------
329242 -- 4262811 Initialze MPA Line Number
329243 --------------------------------------
329244 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
329245 
329246 --
329247 
329248 --
329249 OPEN header_cur;
329250 --
329251 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
329252    trace
329253    (p_msg      => 'SQL - FETCH header_cur'
329254    ,p_level    => C_LEVEL_STATEMENT
329255    ,p_module   => l_log_module);
329256 END IF;
329257 --
329258 LOOP
329259 FETCH header_cur BULK COLLECT INTO
329260         l_array_entity_id
329261       , l_array_legal_entity_id
329262       , l_array_entity_code
329263       , l_array_transaction_num
329264       , l_array_event_id
329265       , l_array_class_code
329266       , l_array_event_type
329267       , l_array_event_number
329268       , l_array_event_date
329269       , l_array_transaction_date
329270       , l_array_reference_num_1
329271       , l_array_reference_num_2
329272       , l_array_reference_num_3
329273       , l_array_reference_num_4
329274       , l_array_reference_char_1
329275       , l_array_reference_char_2
329276       , l_array_reference_char_3
329277       , l_array_reference_char_4
329278       , l_array_reference_date_1
329279       , l_array_reference_date_2
329280       , l_array_reference_date_3
329281       , l_array_reference_date_4
329282       , l_array_event_created_by
329283       , l_array_budgetary_control_flag 
329284       , l_array_source_1
329285       , l_array_source_2
329286       , l_array_source_3
329287       , l_array_source_4
329288       , l_array_source_5
329289       , l_array_source_33
329290       , l_array_source_39
329291       , l_array_source_39_meaning
329292       , l_array_source_41
329293       , l_array_source_42
329294       , l_array_source_43
329295       , l_array_source_44
329296       , l_array_source_45
329297       , l_array_source_46
329298       , l_array_source_59
329299       , l_array_source_85
329300       , l_array_source_85_meaning
329301       , l_array_source_114
329302       , l_array_source_114_meaning
329303       LIMIT l_rows;
329304 --
329305 IF (C_LEVEL_EVENT >= g_log_level) THEN
329306    trace
329307    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
329308    ,p_level    => C_LEVEL_EVENT
329309    ,p_module   => l_log_module);
329310 END IF;
329311 --
329312 EXIT WHEN l_array_entity_id.COUNT = 0;
329313 
329314 -- initialize arrays
329315 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
329316 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
329317 
329318 --
329319 -- Bug 4458708
329320 --
329321 XLA_AE_LINES_PKG.g_LineNumber := 0;
329322 
329323 
329324 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
329325 g_last_hdr_idx := l_array_event_id.LAST;
329326 --
329327 -- loop for the headers. Each iteration is for each header extract row
329328 -- fetched in header cursor
329329 --
329330 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
329331 
329332 --
329333 -- set event info as cache for other routines to refer event attributes
329334 --
329335 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
329336    (p_application_id           => p_application_id
329337    ,p_primary_ledger_id        => p_primary_ledger_id
329338    ,p_base_ledger_id           => p_base_ledger_id
329339    ,p_target_ledger_id         => p_target_ledger_id
329340    ,p_entity_id                => l_array_entity_id(hdr_idx)
329341    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
329342    ,p_entity_code              => l_array_entity_code(hdr_idx)
329343    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
329344    ,p_event_id                 => l_array_event_id(hdr_idx)
329345    ,p_event_class_code         => l_array_class_code(hdr_idx)
329346    ,p_event_type_code          => l_array_event_type(hdr_idx)
329347    ,p_event_number             => l_array_event_number(hdr_idx)
329348    ,p_event_date               => l_array_event_date(hdr_idx)
329349    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
329350    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
329351    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
329352    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
329353    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
329354    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
329355    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
329356    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
329357    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
329358    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
329359    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
329360    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
329361    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
329362    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
329363    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
329364 
329365 --
329366 -- set the status of entry to C_VALID (0)
329367 --
329368 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
329369 
329370 --
329371 -- initialize a row for ae header
329372 --
329373 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
329374 
329375 l_event_id := l_array_event_id(hdr_idx);
329376 
329377 --
329378 -- storing the hdr_idx for event. May be used by line cursor.
329379 --
329380 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
329381 
329382 --
329383 -- store sources from header extract. This can be improved to
329384 -- store only those sources from header extract that may be used in lines
329385 --
329386 
329387 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
329388 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
329389 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
329390 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
329391 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
329392 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
329393 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
329394 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
329395 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
329396 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
329397 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
329398 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
329399 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
329400 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
329401 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
329402 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
329403 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
329404 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
329405 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
329406 
329407 --
329408 -- initilaize the status of ae headers for diffrent balance types
329409 -- the status is initialised to C_NOT_CREATED (2)
329410 --
329411 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
329412 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
329413 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
329414 
329415 --
329416 -- call api to validate and store accounting attributes for header
329417 --
329418 
329419 ------------------------------------------------------------
329420 -- Accrual Reversal : to get date for Standard Source (NONE)
329421 ------------------------------------------------------------
329422 l_acc_rev_gl_date_source := NULL;
329423 
329424      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
329425       l_rec_acct_attrs.array_date_value(1) := 
329426 xla_ae_sources_pkg.GetSystemSourceDate(
329427    p_source_code           => 'XLA_REFERENCE_DATE_1'
329428  , p_source_type_code      => 'Y'
329429  , p_source_application_id =>  602
329430 );
329431      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
329432       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
329433 
329434 
329435 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
329436 
329437 XLA_AE_HEADER_PKG.SetJeCategoryName;
329438 
329439 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
329440 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
329441 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
329442 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
329443 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
329444 
329445 
329446 --
329447 xla_ae_header_pkg.SetHdrDescription(
329448    p_description => Description_1 (
329449    p_application_id => p_application_id 
329450  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
329451  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
329452  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
329453  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
329454  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
329455    )
329456 );
329457 --
329458 
329459 -- No header level analytical criteria
329460 
329461 --
329462 --accounting attribute enhancement, bug 3612931
329463 --
329464 l_trx_reversal_source := SUBSTR(NULL, 1,30);
329465 
329466 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
329467    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
329468 
329469    xla_accounting_err_pkg.build_message
329470       (p_appli_s_name            => 'XLA'
329471       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
329472       ,p_token_1                 => 'ACCT_ATTR_NAME'
329473       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
329474       ,p_token_2                 => 'PRODUCT_NAME'
329475       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
329476       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
329477       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
329478       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
329479 
329480 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
329481    --
329482    -- following sets the accounting attributes needed to reverse
329483    -- accounting for a distributeion
329484    --
329485    xla_ae_lines_pkg.SetTrxReversalAttrs
329486       (p_event_id              => l_event_id
329487       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
329488       ,p_trx_reversal_source   => l_trx_reversal_source);
329489 
329490 END IF;
329491 
329492 
329493 ----------------------------------------------------------------
329494 -- 4262811 -  update the header statuses to invalid in need be
329495 ----------------------------------------------------------------
329496 --
329497 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
329498 
329499 
329500   -----------------------------------------------
329501   -- No accrual reversal for the event class/type
329502   -----------------------------------------------
329503 ----------------------------------------------------------------
329504 
329505 --
329506 -- this ends the header loop iteration for one bulk fetch
329507 --
329508 END LOOP;
329509 
329510 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
329511 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
329512 
329513 --
329514 -- insert dummy rows into lines gt table that were created due to
329515 -- transaction reversals
329516 --
329517 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
329518    l_result := XLA_AE_LINES_PKG.InsertLines;
329519 END IF;
329520 
329521 --
329522 -- reset the temp_line_num for each set of events fetched from header
329523 -- cursor rather than doing it for each new event in line cursor
329524 -- Bug 3939231
329525 --
329526 xla_ae_lines_pkg.g_temp_line_num := 0;
329527 
329528 
329529 
329530 --
329531 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
329532 --
329533 --
329534 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
329535 
329536       trace
329537          (p_msg      => 'SQL - FETCH line_cur'
329538          ,p_level    => C_LEVEL_STATEMENT
329539          ,p_module   => l_log_module);
329540 
329541 END IF;
329542 --
329543 --
329544 LOOP
329545   --
329546   FETCH line_cur BULK COLLECT INTO
329547         l_array_entity_id
329548       , l_array_legal_entity_id
329549       , l_array_entity_code
329550       , l_array_transaction_num
329551       , l_array_event_id
329552       , l_array_class_code
329553       , l_array_event_type
329554       , l_array_event_number
329555       , l_array_event_date
329556       , l_array_transaction_date
329557       , l_array_reference_num_1
329558       , l_array_reference_num_2
329559       , l_array_reference_num_3
329560       , l_array_reference_num_4
329561       , l_array_reference_char_1
329562       , l_array_reference_char_2
329563       , l_array_reference_char_3
329564       , l_array_reference_char_4
329565       , l_array_reference_date_1
329566       , l_array_reference_date_2
329567       , l_array_reference_date_3
329568       , l_array_reference_date_4
329569       , l_array_event_created_by
329570       , l_array_budgetary_control_flag
329571       , l_array_extract_line_num 
329572       , l_array_source_11
329573       , l_array_source_15
329574       , l_array_source_84
329575       , l_array_source_88
329576       , l_array_source_91
329577       , l_array_source_92
329578       , l_array_source_93
329579       , l_array_source_94
329580       , l_array_source_95
329581       , l_array_source_97
329582       LIMIT l_rows;
329583 
329584   --
329585   IF (C_LEVEL_EVENT >= g_log_level) THEN
329586             trace
329587                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
329588                ,p_level    => C_LEVEL_EVENT
329589                ,p_module   => l_log_module);
329590   END IF;
329591   --
329592   EXIT WHEN l_array_entity_id.count = 0;
329593 
329594   XLA_AE_LINES_PKG.g_rec_lines := null;
329595 
329596 --
329597 -- Bug 4458708
329598 --
329599 XLA_AE_LINES_PKG.g_LineNumber := 0;
329600 --
329601 --
329602 
329603 FOR Idx IN 1..l_array_event_id.count LOOP
329604    --
329605    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
329606    --
329607    l_event_id := l_array_event_id(idx);  -- 5648433
329608 
329609    --
329610    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
329611    --
329612 
329613    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
329614              (g_array_event(l_event_id).array_value_num('header_index'))
329615          ,'N'
329616          ) <> 'Y'
329617    THEN
329618       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
329619          trace
329620             (p_msg      => 'Trancaction revesal option is not Y '
329621             ,p_level    => C_LEVEL_STATEMENT
329622             ,p_module   => l_log_module);
329623       END IF;
329624 
329625 --
329626 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
329627 --
329628 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
329629 --
329630 -- set event info as cache for other routines to refer event attributes
329631 --
329632 
329633 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
329634    l_previous_event_id := l_event_id;
329635 
329636    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
329637       (p_application_id           => p_application_id
329638       ,p_primary_ledger_id        => p_primary_ledger_id
329639       ,p_base_ledger_id           => p_base_ledger_id
329640       ,p_target_ledger_id         => p_target_ledger_id
329641       ,p_entity_id                => l_array_entity_id(Idx)
329642       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
329643       ,p_entity_code              => l_array_entity_code(Idx)
329644       ,p_transaction_num          => l_array_transaction_num(Idx)
329645       ,p_event_id                 => l_array_event_id(Idx)
329646       ,p_event_class_code         => l_array_class_code(Idx)
329647       ,p_event_type_code          => l_array_event_type(Idx)
329648       ,p_event_number             => l_array_event_number(Idx)
329649       ,p_event_date               => l_array_event_date(Idx)
329650       ,p_transaction_date         => l_array_transaction_date(Idx)
329651       ,p_reference_num_1          => l_array_reference_num_1(Idx)
329652       ,p_reference_num_2          => l_array_reference_num_2(Idx)
329653       ,p_reference_num_3          => l_array_reference_num_3(Idx)
329654       ,p_reference_num_4          => l_array_reference_num_4(Idx)
329655       ,p_reference_char_1         => l_array_reference_char_1(Idx)
329656       ,p_reference_char_2         => l_array_reference_char_2(Idx)
329657       ,p_reference_char_3         => l_array_reference_char_3(Idx)
329658       ,p_reference_char_4         => l_array_reference_char_4(Idx)
329659       ,p_reference_date_1         => l_array_reference_date_1(Idx)
329660       ,p_reference_date_2         => l_array_reference_date_2(Idx)
329661       ,p_reference_date_3         => l_array_reference_date_3(Idx)
329662       ,p_reference_date_4         => l_array_reference_date_4(Idx)
329663       ,p_event_created_by         => l_array_event_created_by(Idx)
329664       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
329665        --
329666 END IF;
329667 
329668 
329669 
329670 --
329671 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
329672 
329673 l_acct_reversal_source := SUBSTR(NULL, 1,30);
329674 
329675 IF l_continue_with_lines THEN
329676    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
329677       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
329678 
329679       xla_accounting_err_pkg.build_message
329680          (p_appli_s_name            => 'XLA'
329681          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
329682          ,p_token_1                 => 'LINE_NUMBER'
329683          ,p_value_1                 => l_array_extract_line_num(Idx)
329684          ,p_token_2                 => 'PRODUCT_NAME'
329685          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
329686          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
329687          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
329688          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
329689 
329690    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
329691       --
329692       -- following sets the accounting attributes needed to reverse
329693       -- accounting for a distributeion
329694       --
329695 
329696       --
329697       -- 5217187
329698       --
329699       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
329700       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
329701                                        g_array_event(l_event_id).array_value_num('header_index'));
329702       --
329703       --
329704 
329705       -- No reversal code generated
329706 
329707       xla_ae_lines_pkg.SetAcctReversalAttrs
329708          (p_event_id             => l_event_id
329709          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
329710          ,p_calculate_acctd_flag => l_calculate_acctd_flag
329711          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
329712    END IF;
329713 
329714    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
329715        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
329716 
329717 --
329718 AcctLineType_154 (
329719  p_application_id  => p_application_id
329720  ,p_event_id     => l_event_id
329721  ,p_calculate_acctd_flag => l_calculate_acctd_flag
329722  ,p_calculate_g_l_flag => l_calculate_g_l_flag
329723  ,p_actual_flag => l_actual_flag
329724  ,p_balance_type_code => l_balance_type_code
329725  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
329726  
329727  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
329728  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
329729  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
329730  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
329731  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
329732  , p_source_11 => l_array_source_11(Idx)
329733  , p_source_84 => l_array_source_84(Idx)
329734  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
329735  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
329736  , p_source_88 => l_array_source_88(Idx)
329737  , p_source_91 => l_array_source_91(Idx)
329738  , p_source_92 => l_array_source_92(Idx)
329739  , p_source_93 => l_array_source_93(Idx)
329740  , p_source_94 => l_array_source_94(Idx)
329741  , p_source_95 => l_array_source_95(Idx)
329742  , p_source_97 => l_array_source_97(Idx)
329743  );
329744 If(l_balance_type_code = 'A') THEN
329745   l_actual_gain_loss_ref := l_gain_or_loss_ref;
329746 END IF;
329747 
329748 --
329749 
329750 
329751 --
329752 AcctLineType_193 (
329753  p_application_id  => p_application_id
329754  ,p_event_id     => l_event_id
329755  ,p_calculate_acctd_flag => l_calculate_acctd_flag
329756  ,p_calculate_g_l_flag => l_calculate_g_l_flag
329757  ,p_actual_flag => l_actual_flag
329758  ,p_balance_type_code => l_balance_type_code
329759  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
329760  
329761  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
329762  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
329763  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
329764  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
329765  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
329766  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
329767  , p_source_84 => l_array_source_84(Idx)
329768  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
329769  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
329770  , p_source_88 => l_array_source_88(Idx)
329771  , p_source_91 => l_array_source_91(Idx)
329772  , p_source_92 => l_array_source_92(Idx)
329773  , p_source_93 => l_array_source_93(Idx)
329774  , p_source_94 => l_array_source_94(Idx)
329775  , p_source_95 => l_array_source_95(Idx)
329776  , p_source_97 => l_array_source_97(Idx)
329777  );
329778 If(l_balance_type_code = 'A') THEN
329779   l_actual_gain_loss_ref := l_gain_or_loss_ref;
329780 END IF;
329781 
329782 --
329783 
329784 
329785 --
329786 AcctLineType_212 (
329787  p_application_id  => p_application_id
329788  ,p_event_id     => l_event_id
329789  ,p_calculate_acctd_flag => l_calculate_acctd_flag
329790  ,p_calculate_g_l_flag => l_calculate_g_l_flag
329791  ,p_actual_flag => l_actual_flag
329792  ,p_balance_type_code => l_balance_type_code
329793  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
329794  
329795  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
329796  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
329797  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
329798  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
329799  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
329800  , p_source_11 => l_array_source_11(Idx)
329801  , p_source_84 => l_array_source_84(Idx)
329802  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
329803  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
329804  , p_source_88 => l_array_source_88(Idx)
329805  , p_source_91 => l_array_source_91(Idx)
329806  , p_source_92 => l_array_source_92(Idx)
329807  , p_source_93 => l_array_source_93(Idx)
329808  , p_source_94 => l_array_source_94(Idx)
329809  , p_source_95 => l_array_source_95(Idx)
329810  , p_source_97 => l_array_source_97(Idx)
329811  );
329812 If(l_balance_type_code = 'A') THEN
329813   l_actual_gain_loss_ref := l_gain_or_loss_ref;
329814 END IF;
329815 
329816 --
329817 
329818 
329819 --
329820 AcctLineType_218 (
329821  p_application_id  => p_application_id
329822  ,p_event_id     => l_event_id
329823  ,p_calculate_acctd_flag => l_calculate_acctd_flag
329824  ,p_calculate_g_l_flag => l_calculate_g_l_flag
329825  ,p_actual_flag => l_actual_flag
329826  ,p_balance_type_code => l_balance_type_code
329827  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
329828  
329829  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
329830  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
329831  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
329832  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
329833  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
329834  , p_source_11 => l_array_source_11(Idx)
329835  , p_source_15 => l_array_source_15(Idx)
329836  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
329837  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
329838  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
329839  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
329840  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
329841  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
329842  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
329843  , p_source_84 => l_array_source_84(Idx)
329844  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
329845  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
329846  , p_source_88 => l_array_source_88(Idx)
329847  , p_source_91 => l_array_source_91(Idx)
329848  , p_source_92 => l_array_source_92(Idx)
329849  , p_source_93 => l_array_source_93(Idx)
329850  , p_source_94 => l_array_source_94(Idx)
329851  , p_source_95 => l_array_source_95(Idx)
329852  , p_source_97 => l_array_source_97(Idx)
329853  );
329854 If(l_balance_type_code = 'A') THEN
329855   l_actual_gain_loss_ref := l_gain_or_loss_ref;
329856 END IF;
329857 
329858 --
329859 
329860 
329861 --
329862 AcctLineType_425 (
329863  p_application_id  => p_application_id
329864  ,p_event_id     => l_event_id
329865  ,p_calculate_acctd_flag => l_calculate_acctd_flag
329866  ,p_calculate_g_l_flag => l_calculate_g_l_flag
329867  ,p_actual_flag => l_actual_flag
329868  ,p_balance_type_code => l_balance_type_code
329869  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
329870  
329871  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
329872  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
329873  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
329874  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
329875  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
329876  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
329877  , p_source_84 => l_array_source_84(Idx)
329878  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
329879  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
329880  , p_source_88 => l_array_source_88(Idx)
329881  , p_source_91 => l_array_source_91(Idx)
329882  , p_source_92 => l_array_source_92(Idx)
329883  , p_source_93 => l_array_source_93(Idx)
329884  , p_source_94 => l_array_source_94(Idx)
329885  , p_source_95 => l_array_source_95(Idx)
329886  , p_source_97 => l_array_source_97(Idx)
329887  );
329888 If(l_balance_type_code = 'A') THEN
329889   l_actual_gain_loss_ref := l_gain_or_loss_ref;
329890 END IF;
329891 
329892 --
329893 
329894 
329895 --
329896 AcctLineType_451 (
329897  p_application_id  => p_application_id
329898  ,p_event_id     => l_event_id
329899  ,p_calculate_acctd_flag => l_calculate_acctd_flag
329900  ,p_calculate_g_l_flag => l_calculate_g_l_flag
329901  ,p_actual_flag => l_actual_flag
329902  ,p_balance_type_code => l_balance_type_code
329903  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
329904  
329905  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
329906  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
329907  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
329908  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
329909  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
329910  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
329911  , p_source_84 => l_array_source_84(Idx)
329912  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
329913  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
329914  , p_source_88 => l_array_source_88(Idx)
329915  , p_source_91 => l_array_source_91(Idx)
329916  , p_source_92 => l_array_source_92(Idx)
329917  , p_source_93 => l_array_source_93(Idx)
329918  , p_source_94 => l_array_source_94(Idx)
329919  , p_source_95 => l_array_source_95(Idx)
329920  , p_source_97 => l_array_source_97(Idx)
329921  );
329922 If(l_balance_type_code = 'A') THEN
329923   l_actual_gain_loss_ref := l_gain_or_loss_ref;
329924 END IF;
329925 
329926 --
329927 
329928       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
329929       -- or secondary ledger that has different currency with primary
329930       -- or alc that is calculated by sla
329931       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
329932             (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'))
329933 
329934 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
329935 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
329936           AND (l_actual_flag = 'A')) THEN
329937         XLA_AE_LINES_PKG.CreateGainOrLossLines(
329938           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
329939          ,p_application_id   => p_application_id
329940          ,p_amb_context_code => 'DEFAULT'
329941          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
329942          ,p_event_class_code => C_EVENT_CLASS_CODE
329943          ,p_event_type_code  => C_EVENT_TYPE_CODE
329944          
329945          ,p_gain_ccid        => -1
329946          ,p_loss_ccid        => -1
329947 
329948          ,p_actual_flag      => l_actual_flag
329949          ,p_enc_flag         => null
329950          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
329951          ,p_enc_g_l_ref      => null
329952          );
329953       END IF;
329954    END IF;
329955 END IF;
329956 
329957    ELSE
329958       --
329959       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
329960       --
329961       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
329962          trace
329963             (p_msg      => 'Trancaction revesal option is Y'
329964             ,p_level    => C_LEVEL_STATEMENT
329965             ,p_module   => l_log_module);
329966       END IF;
329967    END IF;
329968 
329969 END LOOP;
329970 l_result := XLA_AE_LINES_PKG.InsertLines ;
329971 end loop;
329972 close line_cur;
329973 
329974 
329975 --
329976 -- insert headers into xla_ae_headers_gt table
329977 --
329978 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
329979 
329980 -- insert into errors table here.
329981 
329982 END LOOP;
329983 
329984 --
329985 -- 4865292
329986 --
329987 -- Compare g_hdr_extract_count with event count in
329988 -- CreateHeadersAndLines.
329989 --
329990 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
329991 
329992 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
329993    trace (p_msg     => '# rows extracted from header extract objects '
329994                     || ' (running total): '
329995                     || g_hdr_extract_count
329996          ,p_level   => C_LEVEL_STATEMENT
329997          ,p_module  => l_log_module);
329998 END IF;
329999 
330000 CLOSE header_cur;
330001 --
330002 
330003 --
330004 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
330005    trace
330006       (p_msg      => 'END of EventType_559'
330007       ,p_level    => C_LEVEL_PROCEDURE
330008       ,p_module   => l_log_module);
330009 END IF;
330010 --
330011 RETURN l_result;
330012 EXCEPTION
330013 WHEN xla_exceptions_pkg.application_exception THEN
330014    
330015 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
330016 
330017    
330018 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
330019 
330020    RAISE;
330021 
330022 WHEN NO_DATA_FOUND THEN
330023 
330024 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
330025 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
330026 
330027 FOR header_record IN header_cur
330028 LOOP
330029     l_array_header_events(header_record.event_id) := header_record.event_id;
330030 END LOOP;
330031 
330032 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
330033 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
330034 
330035 fnd_file.put_line(fnd_file.LOG, '                    ');
330036 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
330037 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
330038 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
330039 
330040 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
330041 LOOP
330042 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
330043 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
330044         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
330045 	END IF;
330046 END LOOP;
330047 
330048 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
330049 fnd_file.put_line(fnd_file.LOG, '                    ');
330050 
330051 
330052 xla_exceptions_pkg.raise_message
330053       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_559');
330054 
330055 
330056 WHEN OTHERS THEN
330057    xla_exceptions_pkg.raise_message
330058       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_559');
330059 END EventType_559;
330060 --
330061 
330062 ---------------------------------------
330063 --
330064 -- PRIVATE PROCEDURE
330065 --         insert_sources_560
330066 --
330067 ----------------------------------------
330068 --
330069 PROCEDURE insert_sources_560(
330070                                 p_target_ledger_id       IN NUMBER
330071                               , p_language               IN VARCHAR2
330072                               , p_sla_ledger_id          IN NUMBER
330073                               , p_pad_start_date         IN DATE
330074                               , p_pad_end_date           IN DATE
330075                          )
330076 IS
330077 
330078 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP';
330079 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
330080 p_apps_owner                   VARCHAR2(30);
330081 l_log_module                   VARCHAR2(240);
330082 BEGIN
330083 IF g_log_enabled THEN
330084       l_log_module := C_DEFAULT_MODULE||'.insert_sources_560';
330085 END IF;
330086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
330087 
330088       trace
330089          (p_msg      => 'BEGIN of insert_sources_560'
330090          ,p_level    => C_LEVEL_PROCEDURE
330091          ,p_module   => l_log_module);
330092 
330093 END IF;
330094 
330095 -- select APPS owner
330096 SELECT oracle_username
330097   INTO p_apps_owner
330098   FROM fnd_oracle_userid
330099  WHERE read_only_flag = 'U'
330100 ;
330101 
330102 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
330103       trace
330104          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
330105                         ' - p_language = '||p_language||
330106                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
330107                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
330108                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
330109                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
330110          ,p_level    => C_LEVEL_STATEMENT
330111          ,p_module   => l_log_module);
330112 END IF;
330113 
330114 
330115 --
330116 INSERT INTO xla_diag_sources --hdr1
330117 (
330118         event_id
330119       , ledger_id
330120       , sla_ledger_id
330121       , description_language
330122       , object_name
330123       , object_type_code
330124       , line_number
330125       , source_application_id
330126       , source_type_code
330127       , source_code
330128       , source_value
330129       , source_meaning
330130       , created_by
330131       , creation_date
330132       , last_update_date
330133       , last_updated_by
330134       , last_update_login
330135       , program_update_date
330136       , program_application_id
330137       , program_id
330138       , request_id
330139 )
330140 SELECT
330141         event_id
330142       , p_target_ledger_id
330143       , p_sla_ledger_id
330144       , p_language
330145       , object_name
330146       , object_type_code
330147       , line_number
330148       , source_application_id
330149       , source_type_code
330150       , source_code
330151       , SUBSTR(source_value ,1,1996)
330152       , SUBSTR(source_meaning,1,200)
330153       , xla_environment_pkg.g_Usr_Id
330154       , TRUNC(SYSDATE)
330155       , TRUNC(SYSDATE)
330156       , xla_environment_pkg.g_Usr_Id
330157       , xla_environment_pkg.g_Login_Id
330158       , TRUNC(SYSDATE)
330159       , xla_environment_pkg.g_Prog_Appl_Id
330160       , xla_environment_pkg.g_Prog_Id
330161       , xla_environment_pkg.g_Req_Id
330162   FROM (
330163        SELECT xet.event_id                  event_id
330164             , 0                             line_number
330165             , CASE r
330166                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
330167                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
330168                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
330169                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
330170                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
330171                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
330172                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
330173                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
330174                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
330175                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
330176                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
330177                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
330178                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
330179                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
330180                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
330181                 
330182                ELSE null
330183               END                           object_name
330184             , CASE r
330185                 WHEN 1 THEN 'HEADER' 
330186                 WHEN 2 THEN 'HEADER' 
330187                 WHEN 3 THEN 'HEADER' 
330188                 WHEN 4 THEN 'HEADER' 
330189                 WHEN 5 THEN 'HEADER' 
330190                 WHEN 6 THEN 'HEADER' 
330191                 WHEN 7 THEN 'HEADER' 
330192                 WHEN 8 THEN 'HEADER' 
330193                 WHEN 9 THEN 'HEADER' 
330194                 WHEN 10 THEN 'HEADER' 
330195                 WHEN 11 THEN 'HEADER' 
330196                 WHEN 12 THEN 'HEADER' 
330197                 WHEN 13 THEN 'HEADER' 
330198                 WHEN 14 THEN 'HEADER' 
330199                 WHEN 15 THEN 'HEADER' 
330200                 
330201                 ELSE null
330202               END                           object_type_code
330203             , CASE r
330204                 WHEN 1 THEN '707' 
330205                 WHEN 2 THEN '707' 
330206                 WHEN 3 THEN '707' 
330207                 WHEN 4 THEN '707' 
330208                 WHEN 5 THEN '707' 
330209                 WHEN 6 THEN '707' 
330210                 WHEN 7 THEN '707' 
330211                 WHEN 8 THEN '707' 
330212                 WHEN 9 THEN '707' 
330213                 WHEN 10 THEN '707' 
330214                 WHEN 11 THEN '707' 
330215                 WHEN 12 THEN '707' 
330216                 WHEN 13 THEN '707' 
330217                 WHEN 14 THEN '707' 
330218                 WHEN 15 THEN '707' 
330219                 
330220                 ELSE null
330221               END                           source_application_id
330222             , 'S'             source_type_code
330223             , CASE r
330224                 WHEN 1 THEN 'TRANSACTION_ID' 
330225                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
330226                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
330227                 WHEN 4 THEN 'TRANSACTION_UOM' 
330228                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
330229                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
330230                 WHEN 7 THEN 'PRIMARY_COST_METHOD' 
330231                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
330232                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
330233                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
330234                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
330235                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
330236                 WHEN 13 THEN 'INTERORG_BRIDGING_ACCOUNT' 
330237                 WHEN 14 THEN 'DISTRIBUTION_TYPE' 
330238                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
330239                 
330240                 ELSE null
330241               END                           source_code
330242             , CASE r
330243                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
330244                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
330245                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
330246                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
330247                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
330248                 WHEN 6 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
330249                 WHEN 7 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
330250                 WHEN 8 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
330251                 WHEN 9 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
330252                 WHEN 10 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
330253                 WHEN 11 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
330254                 WHEN 12 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
330255                 WHEN 13 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
330256                 WHEN 14 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
330257                 WHEN 15 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
330258                 
330259                 ELSE null
330260               END                           source_value
330261             , CASE r
330262                 WHEN 7 THEN fvl39.meaning
330263                 WHEN 14 THEN fvl85.meaning
330264                 WHEN 15 THEN fvl114.meaning
330265                 
330266                 ELSE null
330267               END               source_meaning
330268         FROM xla_events_gt     xet  
330269       , CST_XLA_INTERORG_PARAMS_REF_V  h1
330270       , CST_XLA_INV_HEADERS_V  h2
330271       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
330272       , CST_XLA_INV_REF_V  h5
330273       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
330274       , CST_XLA_INV_TXN_TYPES_REF_V  h7
330275       , CST_XLA_PLA_CATEGORY_REF_V  h8
330276   , fnd_lookup_values    fvl39
330277   , fnd_lookup_values    fvl85
330278   , fnd_lookup_values    fvl114
330279             ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
330280        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
330281          AND xet.event_type_code = C_EVENT_TYPE_CODE
330282             AND h2.event_id = xet.event_id
330283   AND h1.event_id (+) = h2.event_id
330284  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id = h2.inventory_item_id and h6.organization_id = h2.organization_id AND h7.inv_transaction_type_id = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id 
330285 and h8.pla_cat_item_id          (+) = h2.inventory_item_id 
330286 and h8.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
330287   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
330288   AND fvl39.view_application_id(+) = 700
330289   AND fvl39.language(+)            = USERENV('LANG')
330290      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
330291   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
330292   AND fvl85.view_application_id(+) = 700
330293   AND fvl85.language(+)            = USERENV('LANG')
330294      AND fvl114.lookup_type(+)         = 'YES_NO'
330295   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
330296   AND fvl114.view_application_id(+) = 0
330297   AND fvl114.language(+)            = USERENV('LANG')
330298   
330299 )
330300 ;
330301 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
330302 
330303       trace
330304          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
330305          ,p_level    => C_LEVEL_STATEMENT
330306          ,p_module   => l_log_module);
330307 
330308 END IF;
330309 --
330310 
330311 
330312 
330313 --
330314 INSERT INTO xla_diag_sources --line1
330315 (
330316         event_id
330317       , ledger_id
330318       , sla_ledger_id
330319       , description_language
330320       , object_name
330321       , object_type_code
330322       , line_number
330323       , source_application_id
330324       , source_type_code
330325       , source_code
330326       , source_value
330327       , source_meaning
330328       , created_by
330329       , creation_date
330330       , last_update_date
330331       , last_updated_by
330332       , last_update_login
330333       , program_update_date
330334       , program_application_id
330335       , program_id
330336       , request_id
330337 )
330338 SELECT  event_id
330339       , p_target_ledger_id
330340       , p_sla_ledger_id
330341       , p_language
330342       , object_name
330343       , object_type_code
330344       , line_number
330345       , source_application_id
330346       , source_type_code
330347       , source_code
330348       , SUBSTR(source_value,1,1996)
330349       , SUBSTR(source_meaning,1,200)
330350       , xla_environment_pkg.g_Usr_Id
330351       , TRUNC(SYSDATE)
330352       , TRUNC(SYSDATE)
330353       , xla_environment_pkg.g_Usr_Id
330354       , xla_environment_pkg.g_Login_Id
330355       , TRUNC(SYSDATE)
330356       , xla_environment_pkg.g_Prog_Appl_Id
330357       , xla_environment_pkg.g_Prog_Id
330358       , xla_environment_pkg.g_Req_Id
330359   FROM (
330360        SELECT xet.event_id                  event_id
330361             , l3.line_number                 line_number
330362             , CASE r
330363                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
330364                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
330365                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
330366                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
330367                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
330368                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
330369                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
330370                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
330371                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
330372                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
330373                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
330374                 
330375                ELSE null
330376               END                           object_name
330377             , CASE r
330378                 WHEN 1 THEN 'LINE' 
330379                 WHEN 2 THEN 'LINE' 
330380                 WHEN 3 THEN 'LINE' 
330381                 WHEN 4 THEN 'LINE' 
330382                 WHEN 5 THEN 'LINE' 
330383                 WHEN 6 THEN 'LINE' 
330384                 WHEN 7 THEN 'LINE' 
330385                 WHEN 8 THEN 'LINE' 
330386                 WHEN 9 THEN 'LINE' 
330387                 WHEN 10 THEN 'LINE' 
330388                 WHEN 11 THEN 'LINE' 
330389                 
330390                 ELSE null
330391               END                           object_type_code
330392             , CASE r
330393                 WHEN 1 THEN '707' 
330394                 WHEN 2 THEN '707' 
330395                 WHEN 3 THEN '707' 
330396                 WHEN 4 THEN '707' 
330397                 WHEN 5 THEN '707' 
330398                 WHEN 6 THEN '707' 
330399                 WHEN 7 THEN '707' 
330400                 WHEN 8 THEN '707' 
330401                 WHEN 9 THEN '707' 
330402                 WHEN 10 THEN '707' 
330403                 WHEN 11 THEN '707' 
330404                 
330405                 ELSE null
330406               END                           source_application_id
330407             , 'S'             source_type_code
330408             , CASE r
330409                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
330410                 WHEN 2 THEN 'COST_ELEMENT_ID' 
330411                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
330412                 WHEN 4 THEN 'CURRENCY_CODE' 
330413                 WHEN 5 THEN 'ENTERED_AMOUNT' 
330414                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
330415                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
330416                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
330417                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
330418                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
330419                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
330420                 
330421                 ELSE null
330422               END                           source_code
330423             , CASE r
330424                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
330425                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
330426                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
330427                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
330428                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
330429                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
330430                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
330431                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
330432                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
330433                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
330434                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
330435                 
330436                 ELSE null
330437               END                           source_value
330438             , CASE r
330439                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
330440                           1009615
330441                          ,TO_CHAR(l3.COST_ELEMENT_ID)
330442                          ,'COST_ELEMENT_ID'
330443                          ,'S'
330444                          ,707)
330445                 
330446                 ELSE null
330447               END               source_meaning
330448          FROM  xla_events_gt     xet  
330449         , CST_XLA_INV_LINES_V  l3
330450             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
330451         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
330452           AND xet.event_type_code = C_EVENT_TYPE_CODE
330453             AND l3.event_id          = xet.event_id
330454 
330455 )
330456 ;
330457 --
330458 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
330459 
330460       trace
330461          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
330462          ,p_level    => C_LEVEL_STATEMENT
330463          ,p_module   => l_log_module);
330464 
330465 END IF;
330466 
330467 
330468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
330469       trace
330470          (p_msg      => 'END of insert_sources_560'
330471          ,p_level    => C_LEVEL_PROCEDURE
330472          ,p_module   => l_log_module);
330473 END IF;
330474 EXCEPTION
330475   WHEN xla_exceptions_pkg.application_exception THEN
330476       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
330477             trace
330478                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
330479                ,p_level    => C_LEVEL_EXCEPTION
330480                ,p_module   => l_log_module);
330481       END IF;
330482       RAISE;
330483   WHEN OTHERS THEN
330484       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
330485             trace
330486                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
330487                ,p_level    => C_LEVEL_EXCEPTION
330488                ,p_module   => l_log_module);
330489        END IF;
330490        xla_exceptions_pkg.raise_message
330491            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_560');
330492 END insert_sources_560;
330493 --
330494 
330495 ---------------------------------------
330496 --
330497 -- PRIVATE FUNCTION
330498 --         EventType_560
330499 --
330500 ----------------------------------------
330501 --
330502 FUNCTION EventType_560
330503        (p_application_id         IN NUMBER
330504        ,p_base_ledger_id         IN NUMBER
330505        ,p_target_ledger_id       IN NUMBER
330506        ,p_language               IN VARCHAR2
330507        ,p_currency_code          IN VARCHAR2
330508        ,p_sla_ledger_id          IN NUMBER
330509        ,p_pad_start_date         IN DATE
330510        ,p_pad_end_date           IN DATE
330511        ,p_primary_ledger_id      IN NUMBER)
330512 RETURN BOOLEAN IS
330513 --
330514 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_SENDER_SHIP';
330515 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
330516 
330517 l_calculate_acctd_flag   VARCHAR2(1) :='N';
330518 l_calculate_g_l_flag     VARCHAR2(1) :='N';
330519 --
330520 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330521 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330522 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
330523 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
330524 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330525 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
330526 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
330527 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330528 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
330529 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
330530 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330531 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330532 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330533 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
330534 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
330535 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
330536 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
330537 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
330538 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
330539 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
330540 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
330541 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
330542 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
330543 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
330544 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
330545 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
330546 
330547 l_event_id                             NUMBER;
330548 l_previous_event_id                    NUMBER;
330549 l_first_event_id                       NUMBER;
330550 l_last_event_id                        NUMBER;
330551 
330552 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
330553 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
330554 --
330555 --
330556 l_result                    BOOLEAN := TRUE;
330557 l_rows                      NUMBER  := 1000;
330558 l_event_type_name           VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
330559 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
330560 l_description               VARCHAR2(4000);
330561 l_transaction_reversal      NUMBER;
330562 l_ae_header_id              NUMBER;
330563 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
330564 l_log_module                VARCHAR2(240);
330565 --
330566 l_acct_reversal_source      VARCHAR2(30);
330567 l_trx_reversal_source       VARCHAR2(30);
330568 
330569 l_continue_with_lines       BOOLEAN := TRUE;
330570 --
330571 l_acc_rev_gl_date_source    DATE;                      -- 4262811
330572 --
330573 type t_array_event_id is table of number index by binary_integer;
330574 
330575 l_rec_array_event                    t_rec_array_event;
330576 l_null_rec_array_event               t_rec_array_event;
330577 l_array_ae_header_id                 xla_number_array_type;
330578 l_actual_flag                        VARCHAR2(1) := NULL;
330579 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
330580 l_balance_type_code                  VARCHAR2(1) :=NULL;
330581 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
330582 
330583 --
330584 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
330585 --
330586 
330587 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
330588 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
330589 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
330590 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
330591 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
330592 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
330593 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
330594 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
330595 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
330596 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
330597 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
330598 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
330599 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
330600 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
330601 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
330602 
330603 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
330604 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
330605 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
330606 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
330607 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
330608 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
330609 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
330610 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
330611 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
330612 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
330613 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
330614 
330615 l_array_source_1              t_array_source_1;
330616 l_array_source_2              t_array_source_2;
330617 l_array_source_3              t_array_source_3;
330618 l_array_source_4              t_array_source_4;
330619 l_array_source_5              t_array_source_5;
330620 l_array_source_22              t_array_source_22;
330621 l_array_source_39              t_array_source_39;
330622 l_array_source_39_meaning      t_array_lookup_meaning;
330623 l_array_source_41              t_array_source_41;
330624 l_array_source_42              t_array_source_42;
330625 l_array_source_43              t_array_source_43;
330626 l_array_source_44              t_array_source_44;
330627 l_array_source_45              t_array_source_45;
330628 l_array_source_46              t_array_source_46;
330629 l_array_source_85              t_array_source_85;
330630 l_array_source_85_meaning      t_array_lookup_meaning;
330631 l_array_source_114              t_array_source_114;
330632 l_array_source_114_meaning      t_array_lookup_meaning;
330633 
330634 l_array_source_11      t_array_source_11;
330635 l_array_source_15      t_array_source_15;
330636 l_array_source_84      t_array_source_84;
330637 l_array_source_88      t_array_source_88;
330638 l_array_source_91      t_array_source_91;
330639 l_array_source_92      t_array_source_92;
330640 l_array_source_93      t_array_source_93;
330641 l_array_source_94      t_array_source_94;
330642 l_array_source_95      t_array_source_95;
330643 l_array_source_97      t_array_source_97;
330644 l_array_source_108      t_array_source_108;
330645 
330646 --
330647 CURSOR header_cur
330648 IS
330649 SELECT /*+ leading(xet) cardinality(xet,1) */
330650 -- Event Type Code: FOB_RCPT_SENDER_SHIP
330651 -- Event Class Code: FOB_RCPT_SENDER_SHIP
330652     xet.entity_id
330653   , xet.legal_entity_id
330654   , xet.entity_code
330655   , xet.transaction_number
330656   , xet.event_id
330657   , xet.event_class_code
330658   , xet.event_type_code
330659   , xet.event_number
330660   , xet.event_date
330661   , xet.transaction_date
330662   , xet.reference_num_1
330663   , xet.reference_num_2
330664   , xet.reference_num_3
330665   , xet.reference_num_4
330666   , xet.reference_char_1
330667   , xet.reference_char_2
330668   , xet.reference_char_3
330669   , xet.reference_char_4
330670   , xet.reference_date_1
330671   , xet.reference_date_2
330672   , xet.reference_date_3
330673   , xet.reference_date_4
330674   , xet.event_created_by
330675   , xet.budgetary_control_flag 
330676   , h2.TRANSACTION_ID    source_1
330677   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
330678   , h5.TRANSACTION_QUANTITY    source_3
330679   , h5.TRANSACTION_UOM    source_4
330680   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
330681   , h8.PLA_BRIDGING_ACCOUNT    source_22
330682   , h4.PRIMARY_COST_METHOD    source_39
330683   , fvl39.meaning   source_39_meaning
330684   , h8.PLA_MATERIAL_ACCOUNT    source_41
330685   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
330686   , h8.PLA_RESOURCE_ACCOUNT    source_43
330687   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
330688   , h8.PLA_OVERHEAD_ACCOUNT    source_45
330689   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
330690   , h2.DISTRIBUTION_TYPE    source_85
330691   , fvl85.meaning   source_85_meaning
330692   , h2.TRANSFER_TO_GL_INDICATOR    source_114
330693   , fvl114.meaning   source_114_meaning
330694   FROM xla_events_gt     xet 
330695   , CST_XLA_INTERORG_PARAMS_REF_V  h1
330696   , CST_XLA_INV_HEADERS_V  h2
330697   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
330698   , CST_XLA_INV_REF_V  h5
330699   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
330700   , CST_XLA_INV_TXN_TYPES_REF_V  h7
330701   , CST_XLA_PLA_CATEGORY_REF_V  h8
330702   , fnd_lookup_values    fvl39
330703   , fnd_lookup_values    fvl85
330704   , fnd_lookup_values    fvl114
330705  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
330706    and xet.event_type_code = C_EVENT_TYPE_CODE
330707    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
330708   AND h1.event_id (+) = h2.event_id
330709  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h6.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
330710 AND h8.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
330711 AND h8.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
330712   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
330713   AND fvl39.view_application_id(+) = 700
330714   AND fvl39.language(+)            = USERENV('LANG')
330715      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
330716   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
330717   AND fvl85.view_application_id(+) = 700
330718   AND fvl85.language(+)            = USERENV('LANG')
330719      AND fvl114.lookup_type(+)         = 'YES_NO'
330720   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
330721   AND fvl114.view_application_id(+) = 0
330722   AND fvl114.language(+)            = USERENV('LANG')
330723   
330724  ORDER BY event_id
330725 ;
330726 
330727 
330728 --
330729 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
330730 IS
330731 SELECT /*+ leading(xet) cardinality(xet,1) */
330732 -- Event Type Code: FOB_RCPT_SENDER_SHIP
330733 -- Event Class Code: FOB_RCPT_SENDER_SHIP
330734     xet.entity_id
330735    ,xet.legal_entity_id
330736    ,xet.entity_code
330737    ,xet.transaction_number
330738    ,xet.event_id
330739    ,xet.event_class_code
330740    ,xet.event_type_code
330741    ,xet.event_number
330742    ,xet.event_date
330743    ,xet.transaction_date
330744    ,xet.reference_num_1
330745    ,xet.reference_num_2
330746    ,xet.reference_num_3
330747    ,xet.reference_num_4
330748    ,xet.reference_char_1
330749    ,xet.reference_char_2
330750    ,xet.reference_char_3
330751    ,xet.reference_char_4
330752    ,xet.reference_date_1
330753    ,xet.reference_date_2
330754    ,xet.reference_date_3
330755    ,xet.reference_date_4
330756    ,xet.event_created_by
330757    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
330758   , l3.CODE_COMBINATION_ID    source_11
330759   , l3.COST_ELEMENT_ID    source_15
330760   , l3.DISTRIBUTION_IDENTIFIER    source_84
330761   , l3.CURRENCY_CODE    source_88
330762   , l3.ENTERED_AMOUNT    source_91
330763   , l3.CURRENCY_CONVERSION_DATE    source_92
330764   , l3.CURRENCY_CONVERSION_RATE    source_93
330765   , l3.CURRENCY_CONVERSION_TYPE    source_94
330766   , l3.ACCOUNTED_AMOUNT    source_95
330767   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
330768   , l3.L_ORGANIZATION_CODE    source_108
330769   FROM xla_events_gt     xet 
330770   , CST_XLA_INV_LINES_V  l3
330771  WHERE xet.event_id between x_first_event_id and x_last_event_id
330772    and xet.event_date between p_pad_start_date and p_pad_end_date
330773    and xet.event_type_code = C_EVENT_TYPE_CODE
330774    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
330775 ;
330776 
330777 --
330778 BEGIN
330779 IF g_log_enabled THEN
330780    l_log_module := C_DEFAULT_MODULE||'.EventType_560';
330781 END IF;
330782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
330783    trace
330784       (p_msg      => 'BEGIN of EventType_560'
330785       ,p_level    => C_LEVEL_PROCEDURE
330786       ,p_module   => l_log_module);
330787 END IF;
330788 
330789 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
330790    trace
330791       (p_msg      => 'p_application_id = '||p_application_id||
330792                      ' - p_base_ledger_id = '||p_base_ledger_id||
330793                      ' - p_target_ledger_id  = '||p_target_ledger_id||
330794                      ' - p_language = '||p_language||
330795                      ' - p_currency_code = '||p_currency_code||
330796                      ' - p_sla_ledger_id = '||p_sla_ledger_id
330797       ,p_level    => C_LEVEL_STATEMENT
330798       ,p_module   => l_log_module);
330799 END IF;
330800 --
330801 -- initialze arrays
330802 --
330803 g_array_event.DELETE;
330804 l_rec_array_event := l_null_rec_array_event;
330805 --
330806 --------------------------------------
330807 -- 4262811 Initialze MPA Line Number
330808 --------------------------------------
330809 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
330810 
330811 --
330812 
330813 --
330814 OPEN header_cur;
330815 --
330816 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
330817    trace
330818    (p_msg      => 'SQL - FETCH header_cur'
330819    ,p_level    => C_LEVEL_STATEMENT
330820    ,p_module   => l_log_module);
330821 END IF;
330822 --
330823 LOOP
330824 FETCH header_cur BULK COLLECT INTO
330825         l_array_entity_id
330826       , l_array_legal_entity_id
330827       , l_array_entity_code
330828       , l_array_transaction_num
330829       , l_array_event_id
330830       , l_array_class_code
330831       , l_array_event_type
330832       , l_array_event_number
330833       , l_array_event_date
330834       , l_array_transaction_date
330835       , l_array_reference_num_1
330836       , l_array_reference_num_2
330837       , l_array_reference_num_3
330838       , l_array_reference_num_4
330839       , l_array_reference_char_1
330840       , l_array_reference_char_2
330841       , l_array_reference_char_3
330842       , l_array_reference_char_4
330843       , l_array_reference_date_1
330844       , l_array_reference_date_2
330845       , l_array_reference_date_3
330846       , l_array_reference_date_4
330847       , l_array_event_created_by
330848       , l_array_budgetary_control_flag 
330849       , l_array_source_1
330850       , l_array_source_2
330851       , l_array_source_3
330852       , l_array_source_4
330853       , l_array_source_5
330854       , l_array_source_22
330855       , l_array_source_39
330856       , l_array_source_39_meaning
330857       , l_array_source_41
330858       , l_array_source_42
330859       , l_array_source_43
330860       , l_array_source_44
330861       , l_array_source_45
330862       , l_array_source_46
330863       , l_array_source_85
330864       , l_array_source_85_meaning
330865       , l_array_source_114
330866       , l_array_source_114_meaning
330867       LIMIT l_rows;
330868 --
330869 IF (C_LEVEL_EVENT >= g_log_level) THEN
330870    trace
330871    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
330872    ,p_level    => C_LEVEL_EVENT
330873    ,p_module   => l_log_module);
330874 END IF;
330875 --
330876 EXIT WHEN l_array_entity_id.COUNT = 0;
330877 
330878 -- initialize arrays
330879 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
330880 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
330881 
330882 --
330883 -- Bug 4458708
330884 --
330885 XLA_AE_LINES_PKG.g_LineNumber := 0;
330886 
330887 
330888 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
330889 g_last_hdr_idx := l_array_event_id.LAST;
330890 --
330891 -- loop for the headers. Each iteration is for each header extract row
330892 -- fetched in header cursor
330893 --
330894 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
330895 
330896 --
330897 -- set event info as cache for other routines to refer event attributes
330898 --
330899 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
330900    (p_application_id           => p_application_id
330901    ,p_primary_ledger_id        => p_primary_ledger_id
330902    ,p_base_ledger_id           => p_base_ledger_id
330903    ,p_target_ledger_id         => p_target_ledger_id
330904    ,p_entity_id                => l_array_entity_id(hdr_idx)
330905    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
330906    ,p_entity_code              => l_array_entity_code(hdr_idx)
330907    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
330908    ,p_event_id                 => l_array_event_id(hdr_idx)
330909    ,p_event_class_code         => l_array_class_code(hdr_idx)
330910    ,p_event_type_code          => l_array_event_type(hdr_idx)
330911    ,p_event_number             => l_array_event_number(hdr_idx)
330912    ,p_event_date               => l_array_event_date(hdr_idx)
330913    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
330914    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
330915    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
330916    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
330917    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
330918    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
330919    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
330920    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
330921    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
330922    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
330923    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
330924    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
330925    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
330926    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
330927    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
330928 
330929 --
330930 -- set the status of entry to C_VALID (0)
330931 --
330932 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
330933 
330934 --
330935 -- initialize a row for ae header
330936 --
330937 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
330938 
330939 l_event_id := l_array_event_id(hdr_idx);
330940 
330941 --
330942 -- storing the hdr_idx for event. May be used by line cursor.
330943 --
330944 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
330945 
330946 --
330947 -- store sources from header extract. This can be improved to
330948 -- store only those sources from header extract that may be used in lines
330949 --
330950 
330951 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
330952 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
330953 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
330954 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
330955 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
330956 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
330957 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
330958 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
330959 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
330960 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
330961 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
330962 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
330963 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
330964 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
330965 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
330966 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
330967 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
330968 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
330969 
330970 --
330971 -- initilaize the status of ae headers for diffrent balance types
330972 -- the status is initialised to C_NOT_CREATED (2)
330973 --
330974 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
330975 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
330976 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
330977 
330978 --
330979 -- call api to validate and store accounting attributes for header
330980 --
330981 
330982 ------------------------------------------------------------
330983 -- Accrual Reversal : to get date for Standard Source (NONE)
330984 ------------------------------------------------------------
330985 l_acc_rev_gl_date_source := NULL;
330986 
330987      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
330988       l_rec_acct_attrs.array_date_value(1) := 
330989 xla_ae_sources_pkg.GetSystemSourceDate(
330990    p_source_code           => 'XLA_REFERENCE_DATE_1'
330991  , p_source_type_code      => 'Y'
330992  , p_source_application_id =>  602
330993 );
330994      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
330995       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
330996 
330997 
330998 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
330999 
331000 XLA_AE_HEADER_PKG.SetJeCategoryName;
331001 
331002 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
331003 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
331004 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
331005 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
331006 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
331007 
331008 
331009 --
331010 xla_ae_header_pkg.SetHdrDescription(
331011    p_description => Description_1 (
331012    p_application_id => p_application_id 
331013  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
331014  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
331015  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
331016  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
331017  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
331018    )
331019 );
331020 --
331021 
331022 -- No header level analytical criteria
331023 
331024 --
331025 --accounting attribute enhancement, bug 3612931
331026 --
331027 l_trx_reversal_source := SUBSTR(NULL, 1,30);
331028 
331029 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
331030    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
331031 
331032    xla_accounting_err_pkg.build_message
331033       (p_appli_s_name            => 'XLA'
331034       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
331035       ,p_token_1                 => 'ACCT_ATTR_NAME'
331036       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
331037       ,p_token_2                 => 'PRODUCT_NAME'
331038       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
331039       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
331040       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
331041       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
331042 
331043 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
331044    --
331045    -- following sets the accounting attributes needed to reverse
331046    -- accounting for a distributeion
331047    --
331048    xla_ae_lines_pkg.SetTrxReversalAttrs
331049       (p_event_id              => l_event_id
331050       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
331051       ,p_trx_reversal_source   => l_trx_reversal_source);
331052 
331053 END IF;
331054 
331055 
331056 ----------------------------------------------------------------
331057 -- 4262811 -  update the header statuses to invalid in need be
331058 ----------------------------------------------------------------
331059 --
331060 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
331061 
331062 
331063   -----------------------------------------------
331064   -- No accrual reversal for the event class/type
331065   -----------------------------------------------
331066 ----------------------------------------------------------------
331067 
331068 --
331069 -- this ends the header loop iteration for one bulk fetch
331070 --
331071 END LOOP;
331072 
331073 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
331074 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
331075 
331076 --
331077 -- insert dummy rows into lines gt table that were created due to
331078 -- transaction reversals
331079 --
331080 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
331081    l_result := XLA_AE_LINES_PKG.InsertLines;
331082 END IF;
331083 
331084 --
331085 -- reset the temp_line_num for each set of events fetched from header
331086 -- cursor rather than doing it for each new event in line cursor
331087 -- Bug 3939231
331088 --
331089 xla_ae_lines_pkg.g_temp_line_num := 0;
331090 
331091 
331092 
331093 --
331094 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
331095 --
331096 --
331097 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
331098 
331099       trace
331100          (p_msg      => 'SQL - FETCH line_cur'
331101          ,p_level    => C_LEVEL_STATEMENT
331102          ,p_module   => l_log_module);
331103 
331104 END IF;
331105 --
331106 --
331107 LOOP
331108   --
331109   FETCH line_cur BULK COLLECT INTO
331110         l_array_entity_id
331111       , l_array_legal_entity_id
331112       , l_array_entity_code
331113       , l_array_transaction_num
331114       , l_array_event_id
331115       , l_array_class_code
331116       , l_array_event_type
331117       , l_array_event_number
331118       , l_array_event_date
331119       , l_array_transaction_date
331120       , l_array_reference_num_1
331121       , l_array_reference_num_2
331122       , l_array_reference_num_3
331123       , l_array_reference_num_4
331124       , l_array_reference_char_1
331125       , l_array_reference_char_2
331126       , l_array_reference_char_3
331127       , l_array_reference_char_4
331128       , l_array_reference_date_1
331129       , l_array_reference_date_2
331130       , l_array_reference_date_3
331131       , l_array_reference_date_4
331132       , l_array_event_created_by
331133       , l_array_budgetary_control_flag
331134       , l_array_extract_line_num 
331135       , l_array_source_11
331136       , l_array_source_15
331137       , l_array_source_84
331138       , l_array_source_88
331139       , l_array_source_91
331140       , l_array_source_92
331141       , l_array_source_93
331142       , l_array_source_94
331143       , l_array_source_95
331144       , l_array_source_97
331145       , l_array_source_108
331146       LIMIT l_rows;
331147 
331148   --
331149   IF (C_LEVEL_EVENT >= g_log_level) THEN
331150             trace
331151                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
331152                ,p_level    => C_LEVEL_EVENT
331153                ,p_module   => l_log_module);
331154   END IF;
331155   --
331156   EXIT WHEN l_array_entity_id.count = 0;
331157 
331158   XLA_AE_LINES_PKG.g_rec_lines := null;
331159 
331160 --
331161 -- Bug 4458708
331162 --
331163 XLA_AE_LINES_PKG.g_LineNumber := 0;
331164 --
331165 --
331166 
331167 FOR Idx IN 1..l_array_event_id.count LOOP
331168    --
331169    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
331170    --
331171    l_event_id := l_array_event_id(idx);  -- 5648433
331172 
331173    --
331174    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
331175    --
331176 
331177    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
331178              (g_array_event(l_event_id).array_value_num('header_index'))
331179          ,'N'
331180          ) <> 'Y'
331181    THEN
331182       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
331183          trace
331184             (p_msg      => 'Trancaction revesal option is not Y '
331185             ,p_level    => C_LEVEL_STATEMENT
331186             ,p_module   => l_log_module);
331187       END IF;
331188 
331189 --
331190 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
331191 --
331192 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
331193 --
331194 -- set event info as cache for other routines to refer event attributes
331195 --
331196 
331197 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
331198    l_previous_event_id := l_event_id;
331199 
331200    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
331201       (p_application_id           => p_application_id
331202       ,p_primary_ledger_id        => p_primary_ledger_id
331203       ,p_base_ledger_id           => p_base_ledger_id
331204       ,p_target_ledger_id         => p_target_ledger_id
331205       ,p_entity_id                => l_array_entity_id(Idx)
331206       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
331207       ,p_entity_code              => l_array_entity_code(Idx)
331208       ,p_transaction_num          => l_array_transaction_num(Idx)
331209       ,p_event_id                 => l_array_event_id(Idx)
331210       ,p_event_class_code         => l_array_class_code(Idx)
331211       ,p_event_type_code          => l_array_event_type(Idx)
331212       ,p_event_number             => l_array_event_number(Idx)
331213       ,p_event_date               => l_array_event_date(Idx)
331214       ,p_transaction_date         => l_array_transaction_date(Idx)
331215       ,p_reference_num_1          => l_array_reference_num_1(Idx)
331216       ,p_reference_num_2          => l_array_reference_num_2(Idx)
331217       ,p_reference_num_3          => l_array_reference_num_3(Idx)
331218       ,p_reference_num_4          => l_array_reference_num_4(Idx)
331219       ,p_reference_char_1         => l_array_reference_char_1(Idx)
331220       ,p_reference_char_2         => l_array_reference_char_2(Idx)
331221       ,p_reference_char_3         => l_array_reference_char_3(Idx)
331222       ,p_reference_char_4         => l_array_reference_char_4(Idx)
331223       ,p_reference_date_1         => l_array_reference_date_1(Idx)
331224       ,p_reference_date_2         => l_array_reference_date_2(Idx)
331225       ,p_reference_date_3         => l_array_reference_date_3(Idx)
331226       ,p_reference_date_4         => l_array_reference_date_4(Idx)
331227       ,p_event_created_by         => l_array_event_created_by(Idx)
331228       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
331229        --
331230 END IF;
331231 
331232 
331233 
331234 --
331235 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
331236 
331237 l_acct_reversal_source := SUBSTR(NULL, 1,30);
331238 
331239 IF l_continue_with_lines THEN
331240    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
331241       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
331242 
331243       xla_accounting_err_pkg.build_message
331244          (p_appli_s_name            => 'XLA'
331245          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
331246          ,p_token_1                 => 'LINE_NUMBER'
331247          ,p_value_1                 => l_array_extract_line_num(Idx)
331248          ,p_token_2                 => 'PRODUCT_NAME'
331249          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
331250          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
331251          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
331252          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
331253 
331254    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
331255       --
331256       -- following sets the accounting attributes needed to reverse
331257       -- accounting for a distributeion
331258       --
331259 
331260       --
331261       -- 5217187
331262       --
331263       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
331264       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
331265                                        g_array_event(l_event_id).array_value_num('header_index'));
331266       --
331267       --
331268 
331269       -- No reversal code generated
331270 
331271       xla_ae_lines_pkg.SetAcctReversalAttrs
331272          (p_event_id             => l_event_id
331273          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
331274          ,p_calculate_acctd_flag => l_calculate_acctd_flag
331275          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
331276    END IF;
331277 
331278    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
331279        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
331280 
331281 --
331282 AcctLineType_222 (
331283  p_application_id  => p_application_id
331284  ,p_event_id     => l_event_id
331285  ,p_calculate_acctd_flag => l_calculate_acctd_flag
331286  ,p_calculate_g_l_flag => l_calculate_g_l_flag
331287  ,p_actual_flag => l_actual_flag
331288  ,p_balance_type_code => l_balance_type_code
331289  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
331290  
331291  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
331292  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
331293  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
331294  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
331295  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
331296  , p_source_11 => l_array_source_11(Idx)
331297  , p_source_15 => l_array_source_15(Idx)
331298  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
331299  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
331300  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
331301  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
331302  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
331303  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
331304  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
331305  , p_source_84 => l_array_source_84(Idx)
331306  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
331307  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
331308  , p_source_88 => l_array_source_88(Idx)
331309  , p_source_91 => l_array_source_91(Idx)
331310  , p_source_92 => l_array_source_92(Idx)
331311  , p_source_93 => l_array_source_93(Idx)
331312  , p_source_94 => l_array_source_94(Idx)
331313  , p_source_95 => l_array_source_95(Idx)
331314  , p_source_97 => l_array_source_97(Idx)
331315  );
331316 If(l_balance_type_code = 'A') THEN
331317   l_actual_gain_loss_ref := l_gain_or_loss_ref;
331318 END IF;
331319 
331320 --
331321 
331322 
331323 --
331324 AcctLineType_232 (
331325  p_application_id  => p_application_id
331326  ,p_event_id     => l_event_id
331327  ,p_calculate_acctd_flag => l_calculate_acctd_flag
331328  ,p_calculate_g_l_flag => l_calculate_g_l_flag
331329  ,p_actual_flag => l_actual_flag
331330  ,p_balance_type_code => l_balance_type_code
331331  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
331332  
331333  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
331334  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
331335  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
331336  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
331337  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
331338  , p_source_15 => l_array_source_15(Idx)
331339  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
331340  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
331341  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
331342  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
331343  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
331344  , p_source_84 => l_array_source_84(Idx)
331345  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
331346  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
331347  , p_source_88 => l_array_source_88(Idx)
331348  , p_source_91 => l_array_source_91(Idx)
331349  , p_source_92 => l_array_source_92(Idx)
331350  , p_source_93 => l_array_source_93(Idx)
331351  , p_source_94 => l_array_source_94(Idx)
331352  , p_source_95 => l_array_source_95(Idx)
331353  , p_source_97 => l_array_source_97(Idx)
331354  , p_source_108 => l_array_source_108(Idx)
331355  );
331356 If(l_balance_type_code = 'A') THEN
331357   l_actual_gain_loss_ref := l_gain_or_loss_ref;
331358 END IF;
331359 
331360 --
331361 
331362 
331363 --
331364 AcctLineType_348 (
331365  p_application_id  => p_application_id
331366  ,p_event_id     => l_event_id
331367  ,p_calculate_acctd_flag => l_calculate_acctd_flag
331368  ,p_calculate_g_l_flag => l_calculate_g_l_flag
331369  ,p_actual_flag => l_actual_flag
331370  ,p_balance_type_code => l_balance_type_code
331371  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
331372  
331373  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
331374  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
331375  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
331376  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
331377  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
331378  , p_source_11 => l_array_source_11(Idx)
331379  , p_source_84 => l_array_source_84(Idx)
331380  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
331381  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
331382  , p_source_88 => l_array_source_88(Idx)
331383  , p_source_91 => l_array_source_91(Idx)
331384  , p_source_92 => l_array_source_92(Idx)
331385  , p_source_93 => l_array_source_93(Idx)
331386  , p_source_94 => l_array_source_94(Idx)
331387  , p_source_95 => l_array_source_95(Idx)
331388  , p_source_97 => l_array_source_97(Idx)
331389  );
331390 If(l_balance_type_code = 'A') THEN
331391   l_actual_gain_loss_ref := l_gain_or_loss_ref;
331392 END IF;
331393 
331394 --
331395 
331396 
331397 --
331398 AcctLineType_403 (
331399  p_application_id  => p_application_id
331400  ,p_event_id     => l_event_id
331401  ,p_calculate_acctd_flag => l_calculate_acctd_flag
331402  ,p_calculate_g_l_flag => l_calculate_g_l_flag
331403  ,p_actual_flag => l_actual_flag
331404  ,p_balance_type_code => l_balance_type_code
331405  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
331406  
331407  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
331408  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
331409  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
331410  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
331411  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
331412  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
331413  , p_source_84 => l_array_source_84(Idx)
331414  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
331415  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
331416  , p_source_88 => l_array_source_88(Idx)
331417  , p_source_91 => l_array_source_91(Idx)
331418  , p_source_92 => l_array_source_92(Idx)
331419  , p_source_93 => l_array_source_93(Idx)
331420  , p_source_94 => l_array_source_94(Idx)
331421  , p_source_95 => l_array_source_95(Idx)
331422  , p_source_97 => l_array_source_97(Idx)
331423  );
331424 If(l_balance_type_code = 'A') THEN
331425   l_actual_gain_loss_ref := l_gain_or_loss_ref;
331426 END IF;
331427 
331428 --
331429 
331430 
331431 --
331432 AcctLineType_432 (
331433  p_application_id  => p_application_id
331434  ,p_event_id     => l_event_id
331435  ,p_calculate_acctd_flag => l_calculate_acctd_flag
331436  ,p_calculate_g_l_flag => l_calculate_g_l_flag
331437  ,p_actual_flag => l_actual_flag
331438  ,p_balance_type_code => l_balance_type_code
331439  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
331440  
331441  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
331442  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
331443  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
331444  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
331445  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
331446  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
331447  , p_source_84 => l_array_source_84(Idx)
331448  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
331449  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
331450  , p_source_88 => l_array_source_88(Idx)
331451  , p_source_91 => l_array_source_91(Idx)
331452  , p_source_92 => l_array_source_92(Idx)
331453  , p_source_93 => l_array_source_93(Idx)
331454  , p_source_94 => l_array_source_94(Idx)
331455  , p_source_95 => l_array_source_95(Idx)
331456  , p_source_97 => l_array_source_97(Idx)
331457  );
331458 If(l_balance_type_code = 'A') THEN
331459   l_actual_gain_loss_ref := l_gain_or_loss_ref;
331460 END IF;
331461 
331462 --
331463 
331464       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
331465       -- or secondary ledger that has different currency with primary
331466       -- or alc that is calculated by sla
331467       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
331468             (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'))
331469 
331470 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
331471 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
331472           AND (l_actual_flag = 'A')) THEN
331473         XLA_AE_LINES_PKG.CreateGainOrLossLines(
331474           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
331475          ,p_application_id   => p_application_id
331476          ,p_amb_context_code => 'DEFAULT'
331477          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
331478          ,p_event_class_code => C_EVENT_CLASS_CODE
331479          ,p_event_type_code  => C_EVENT_TYPE_CODE
331480          
331481          ,p_gain_ccid        => -1
331482          ,p_loss_ccid        => -1
331483 
331484          ,p_actual_flag      => l_actual_flag
331485          ,p_enc_flag         => null
331486          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
331487          ,p_enc_g_l_ref      => null
331488          );
331489       END IF;
331490    END IF;
331491 END IF;
331492 
331493    ELSE
331494       --
331495       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
331496       --
331497       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
331498          trace
331499             (p_msg      => 'Trancaction revesal option is Y'
331500             ,p_level    => C_LEVEL_STATEMENT
331501             ,p_module   => l_log_module);
331502       END IF;
331503    END IF;
331504 
331505 END LOOP;
331506 l_result := XLA_AE_LINES_PKG.InsertLines ;
331507 end loop;
331508 close line_cur;
331509 
331510 
331511 --
331512 -- insert headers into xla_ae_headers_gt table
331513 --
331514 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
331515 
331516 -- insert into errors table here.
331517 
331518 END LOOP;
331519 
331520 --
331521 -- 4865292
331522 --
331523 -- Compare g_hdr_extract_count with event count in
331524 -- CreateHeadersAndLines.
331525 --
331526 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
331527 
331528 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
331529    trace (p_msg     => '# rows extracted from header extract objects '
331530                     || ' (running total): '
331531                     || g_hdr_extract_count
331532          ,p_level   => C_LEVEL_STATEMENT
331533          ,p_module  => l_log_module);
331534 END IF;
331535 
331536 CLOSE header_cur;
331537 --
331538 
331539 --
331540 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
331541    trace
331542       (p_msg      => 'END of EventType_560'
331543       ,p_level    => C_LEVEL_PROCEDURE
331544       ,p_module   => l_log_module);
331545 END IF;
331546 --
331547 RETURN l_result;
331548 EXCEPTION
331549 WHEN xla_exceptions_pkg.application_exception THEN
331550    
331551 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
331552 
331553    
331554 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
331555 
331556    RAISE;
331557 
331558 WHEN NO_DATA_FOUND THEN
331559 
331560 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
331561 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
331562 
331563 FOR header_record IN header_cur
331564 LOOP
331565     l_array_header_events(header_record.event_id) := header_record.event_id;
331566 END LOOP;
331567 
331568 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
331569 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
331570 
331571 fnd_file.put_line(fnd_file.LOG, '                    ');
331572 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
331573 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
331574 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
331575 
331576 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
331577 LOOP
331578 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
331579 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
331580         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
331581 	END IF;
331582 END LOOP;
331583 
331584 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
331585 fnd_file.put_line(fnd_file.LOG, '                    ');
331586 
331587 
331588 xla_exceptions_pkg.raise_message
331589       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_560');
331590 
331591 
331592 WHEN OTHERS THEN
331593    xla_exceptions_pkg.raise_message
331594       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_560');
331595 END EventType_560;
331596 --
331597 
331598 ---------------------------------------
331599 --
331600 -- PRIVATE PROCEDURE
331601 --         insert_sources_561
331602 --
331603 ----------------------------------------
331604 --
331605 PROCEDURE insert_sources_561(
331606                                 p_target_ledger_id       IN NUMBER
331607                               , p_language               IN VARCHAR2
331608                               , p_sla_ledger_id          IN NUMBER
331609                               , p_pad_start_date         IN DATE
331610                               , p_pad_end_date           IN DATE
331611                          )
331612 IS
331613 
331614 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT';
331615 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
331616 p_apps_owner                   VARCHAR2(30);
331617 l_log_module                   VARCHAR2(240);
331618 BEGIN
331619 IF g_log_enabled THEN
331620       l_log_module := C_DEFAULT_MODULE||'.insert_sources_561';
331621 END IF;
331622 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
331623 
331624       trace
331625          (p_msg      => 'BEGIN of insert_sources_561'
331626          ,p_level    => C_LEVEL_PROCEDURE
331627          ,p_module   => l_log_module);
331628 
331629 END IF;
331630 
331631 -- select APPS owner
331632 SELECT oracle_username
331633   INTO p_apps_owner
331634   FROM fnd_oracle_userid
331635  WHERE read_only_flag = 'U'
331636 ;
331637 
331638 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
331639       trace
331640          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
331641                         ' - p_language = '||p_language||
331642                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
331643                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
331644                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
331645                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
331646          ,p_level    => C_LEVEL_STATEMENT
331647          ,p_module   => l_log_module);
331648 END IF;
331649 
331650 
331651 --
331652 INSERT INTO xla_diag_sources --hdr1
331653 (
331654         event_id
331655       , ledger_id
331656       , sla_ledger_id
331657       , description_language
331658       , object_name
331659       , object_type_code
331660       , line_number
331661       , source_application_id
331662       , source_type_code
331663       , source_code
331664       , source_value
331665       , source_meaning
331666       , created_by
331667       , creation_date
331668       , last_update_date
331669       , last_updated_by
331670       , last_update_login
331671       , program_update_date
331672       , program_application_id
331673       , program_id
331674       , request_id
331675 )
331676 SELECT
331677         event_id
331678       , p_target_ledger_id
331679       , p_sla_ledger_id
331680       , p_language
331681       , object_name
331682       , object_type_code
331683       , line_number
331684       , source_application_id
331685       , source_type_code
331686       , source_code
331687       , SUBSTR(source_value ,1,1996)
331688       , SUBSTR(source_meaning,1,200)
331689       , xla_environment_pkg.g_Usr_Id
331690       , TRUNC(SYSDATE)
331691       , TRUNC(SYSDATE)
331692       , xla_environment_pkg.g_Usr_Id
331693       , xla_environment_pkg.g_Login_Id
331694       , TRUNC(SYSDATE)
331695       , xla_environment_pkg.g_Prog_Appl_Id
331696       , xla_environment_pkg.g_Prog_Id
331697       , xla_environment_pkg.g_Req_Id
331698   FROM (
331699        SELECT xet.event_id                  event_id
331700             , 0                             line_number
331701             , CASE r
331702                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
331703                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
331704                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
331705                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
331706                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
331707                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
331708                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
331709                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
331710                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
331711                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
331712                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
331713                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
331714                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
331715                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
331716                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
331717                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
331718                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
331719                 WHEN 18 THEN 'CST_XLA_INV_REF_V' 
331720                 WHEN 19 THEN 'CST_XLA_INV_REF_V' 
331721                 WHEN 20 THEN 'PSA_CST_XLA_UPG_V' 
331722                 WHEN 21 THEN 'CST_XLA_INV_REF_V' 
331723                 WHEN 22 THEN 'CST_XLA_INV_REF_V' 
331724                 WHEN 23 THEN 'PO_REQ_DISTS_REF_V' 
331725                 WHEN 24 THEN 'PO_REQ_HEADERS_REF_V' 
331726                 WHEN 25 THEN 'CST_XLA_INV_HEADERS_V' 
331727                 
331728                ELSE null
331729               END                           object_name
331730             , CASE r
331731                 WHEN 1 THEN 'HEADER' 
331732                 WHEN 2 THEN 'HEADER' 
331733                 WHEN 3 THEN 'HEADER' 
331734                 WHEN 4 THEN 'HEADER' 
331735                 WHEN 5 THEN 'HEADER' 
331736                 WHEN 6 THEN 'HEADER' 
331737                 WHEN 7 THEN 'HEADER' 
331738                 WHEN 8 THEN 'HEADER' 
331739                 WHEN 9 THEN 'HEADER' 
331740                 WHEN 10 THEN 'HEADER' 
331741                 WHEN 11 THEN 'HEADER' 
331742                 WHEN 12 THEN 'HEADER' 
331743                 WHEN 13 THEN 'HEADER' 
331744                 WHEN 14 THEN 'HEADER' 
331745                 WHEN 15 THEN 'HEADER' 
331746                 WHEN 16 THEN 'HEADER' 
331747                 WHEN 17 THEN 'HEADER' 
331748                 WHEN 18 THEN 'HEADER' 
331749                 WHEN 19 THEN 'HEADER' 
331750                 WHEN 20 THEN 'HEADER' 
331751                 WHEN 21 THEN 'HEADER' 
331752                 WHEN 22 THEN 'HEADER' 
331753                 WHEN 23 THEN 'HEADER' 
331754                 WHEN 24 THEN 'HEADER' 
331755                 WHEN 25 THEN 'HEADER' 
331756                 
331757                 ELSE null
331758               END                           object_type_code
331759             , CASE r
331760                 WHEN 1 THEN '707' 
331761                 WHEN 2 THEN '707' 
331762                 WHEN 3 THEN '707' 
331763                 WHEN 4 THEN '707' 
331764                 WHEN 5 THEN '707' 
331765                 WHEN 6 THEN '707' 
331766                 WHEN 7 THEN '707' 
331767                 WHEN 8 THEN '707' 
331768                 WHEN 9 THEN '707' 
331769                 WHEN 10 THEN '707' 
331770                 WHEN 11 THEN '707' 
331771                 WHEN 12 THEN '707' 
331772                 WHEN 13 THEN '707' 
331773                 WHEN 14 THEN '707' 
331774                 WHEN 15 THEN '707' 
331775                 WHEN 16 THEN '707' 
331776                 WHEN 17 THEN '707' 
331777                 WHEN 18 THEN '707' 
331778                 WHEN 19 THEN '707' 
331779                 WHEN 20 THEN '707' 
331780                 WHEN 21 THEN '707' 
331781                 WHEN 22 THEN '707' 
331782                 WHEN 23 THEN '201' 
331783                 WHEN 24 THEN '201' 
331784                 WHEN 25 THEN '707' 
331785                 
331786                 ELSE null
331787               END                           source_application_id
331788             , 'S'             source_type_code
331789             , CASE r
331790                 WHEN 1 THEN 'TRANSACTION_ID' 
331791                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
331792                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
331793                 WHEN 4 THEN 'TRANSACTION_UOM' 
331794                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
331795                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
331796                 WHEN 7 THEN 'PRIMARY_COST_METHOD' 
331797                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
331798                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
331799                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
331800                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
331801                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
331802                 WHEN 13 THEN 'INTERORG_BRIDGING_ACCOUNT' 
331803                 WHEN 14 THEN 'APPLIED_TO_APPL_ID' 
331804                 WHEN 15 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
331805                 WHEN 16 THEN 'APPLIED_TO_ENTITY_CODE' 
331806                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
331807                 WHEN 18 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
331808                 WHEN 19 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
331809                 WHEN 20 THEN 'CST_ENCUM_UPG_OPTION' 
331810                 WHEN 21 THEN 'TXN_PO_DISTRIBUTION_ID' 
331811                 WHEN 22 THEN 'TXN_PO_HEADER_ID' 
331812                 WHEN 23 THEN 'REQ_BUDGET_ACCOUNT' 
331813                 WHEN 24 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
331814                 WHEN 25 THEN 'TRANSFER_TO_GL_INDICATOR' 
331815                 
331816                 ELSE null
331817               END                           source_code
331818             , CASE r
331819                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
331820                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
331821                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
331822                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
331823                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
331824                 WHEN 6 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
331825                 WHEN 7 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
331826                 WHEN 8 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
331827                 WHEN 9 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
331828                 WHEN 10 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
331829                 WHEN 11 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
331830                 WHEN 12 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
331831                 WHEN 13 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
331832                 WHEN 14 THEN TO_CHAR(h5.APPLIED_TO_APPL_ID)
331833                 WHEN 15 THEN TO_CHAR(h5.APPLIED_TO_DIST_LINK_TYPE)
331834                 WHEN 16 THEN TO_CHAR(h5.APPLIED_TO_ENTITY_CODE)
331835                 WHEN 17 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
331836                 WHEN 18 THEN TO_CHAR(h5.ENCUM_REVERSAL_AMOUNT_ENTERED)
331837                 WHEN 19 THEN TO_CHAR(h5.ENCUMBRANCE_REVERSAL_AMOUNT)
331838                 WHEN 20 THEN TO_CHAR(h11.CST_ENCUM_UPG_OPTION)
331839                 WHEN 21 THEN TO_CHAR(h5.TXN_PO_DISTRIBUTION_ID)
331840                 WHEN 22 THEN TO_CHAR(h5.TXN_PO_HEADER_ID)
331841                 WHEN 23 THEN TO_CHAR(h9.REQ_BUDGET_ACCOUNT)
331842                 WHEN 24 THEN TO_CHAR(h10.REQ_ENCUMBRANCE_TYPE_ID)
331843                 WHEN 25 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
331844                 
331845                 ELSE null
331846               END                           source_value
331847             , CASE r
331848                 WHEN 7 THEN fvl39.meaning
331849                 WHEN 17 THEN fvl85.meaning
331850                 WHEN 25 THEN fvl114.meaning
331851                 
331852                 ELSE null
331853               END               source_meaning
331854         FROM xla_events_gt     xet  
331855       , CST_XLA_INTERORG_PARAMS_REF_V  h1
331856       , CST_XLA_INV_HEADERS_V  h2
331857       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
331858       , CST_XLA_INV_REF_V  h5
331859       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
331860       , CST_XLA_INV_TXN_TYPES_REF_V  h7
331861       , CST_XLA_PLA_CATEGORY_REF_V  h8
331862       , PO_REQ_DISTS_REF_V  h9
331863       , PO_REQ_HEADERS_REF_V  h10
331864       , PSA_CST_XLA_UPG_V  h11
331865   , fnd_lookup_values    fvl39
331866   , fnd_lookup_values    fvl85
331867   , fnd_lookup_values    fvl114
331868             ,(select rownum r from all_objects where rownum <= 25 and owner = p_apps_owner)
331869        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
331870          AND xet.event_type_code = C_EVENT_TYPE_CODE
331871             AND h2.event_id = xet.event_id
331872   AND h1.event_id (+) = h2.event_id
331873  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id = h2.inventory_item_id and h6.organization_id = h2.organization_id AND h7.inv_transaction_type_id = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id 
331874 and h8.pla_cat_item_id          (+) = h2.inventory_item_id 
331875 and h8.pla_subinv_cg            (+) = h2.h_subinv_cg AND h5.bus_flow_req_dist_id=h9.req_distribution_id (+)  AND h5.bus_flow_req_id = h10.req_id (+)  AND h5.rcv_transaction_id = h11.transaction_id (+)    AND fvl39.lookup_type(+)         = 
331876 'MTL_PRIMARY_COST'
331877   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
331878   AND fvl39.view_application_id(+) = 700
331879   AND fvl39.language(+)            = USERENV('LANG')
331880      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
331881   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
331882   AND fvl85.view_application_id(+) = 700
331883   AND fvl85.language(+)            = USERENV('LANG')
331884      AND fvl114.lookup_type(+)         = 'YES_NO'
331885   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
331886   AND fvl114.view_application_id(+) = 0
331887   AND fvl114.language(+)            = USERENV('LANG')
331888   
331889 )
331890 ;
331891 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
331892 
331893       trace
331894          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
331895          ,p_level    => C_LEVEL_STATEMENT
331896          ,p_module   => l_log_module);
331897 
331898 END IF;
331899 --
331900 
331901 
331902 
331903 --
331904 INSERT INTO xla_diag_sources --line1
331905 (
331906         event_id
331907       , ledger_id
331908       , sla_ledger_id
331909       , description_language
331910       , object_name
331911       , object_type_code
331912       , line_number
331913       , source_application_id
331914       , source_type_code
331915       , source_code
331916       , source_value
331917       , source_meaning
331918       , created_by
331919       , creation_date
331920       , last_update_date
331921       , last_updated_by
331922       , last_update_login
331923       , program_update_date
331924       , program_application_id
331925       , program_id
331926       , request_id
331927 )
331928 SELECT  event_id
331929       , p_target_ledger_id
331930       , p_sla_ledger_id
331931       , p_language
331932       , object_name
331933       , object_type_code
331934       , line_number
331935       , source_application_id
331936       , source_type_code
331937       , source_code
331938       , SUBSTR(source_value,1,1996)
331939       , SUBSTR(source_meaning,1,200)
331940       , xla_environment_pkg.g_Usr_Id
331941       , TRUNC(SYSDATE)
331942       , TRUNC(SYSDATE)
331943       , xla_environment_pkg.g_Usr_Id
331944       , xla_environment_pkg.g_Login_Id
331945       , TRUNC(SYSDATE)
331946       , xla_environment_pkg.g_Prog_Appl_Id
331947       , xla_environment_pkg.g_Prog_Id
331948       , xla_environment_pkg.g_Req_Id
331949   FROM (
331950        SELECT xet.event_id                  event_id
331951             , l3.line_number                 line_number
331952             , CASE r
331953                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
331954                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
331955                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
331956                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
331957                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
331958                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
331959                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
331960                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
331961                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
331962                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
331963                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
331964                 
331965                ELSE null
331966               END                           object_name
331967             , CASE r
331968                 WHEN 1 THEN 'LINE' 
331969                 WHEN 2 THEN 'LINE' 
331970                 WHEN 3 THEN 'LINE' 
331971                 WHEN 4 THEN 'LINE' 
331972                 WHEN 5 THEN 'LINE' 
331973                 WHEN 6 THEN 'LINE' 
331974                 WHEN 7 THEN 'LINE' 
331975                 WHEN 8 THEN 'LINE' 
331976                 WHEN 9 THEN 'LINE' 
331977                 WHEN 10 THEN 'LINE' 
331978                 WHEN 11 THEN 'LINE' 
331979                 
331980                 ELSE null
331981               END                           object_type_code
331982             , CASE r
331983                 WHEN 1 THEN '707' 
331984                 WHEN 2 THEN '707' 
331985                 WHEN 3 THEN '707' 
331986                 WHEN 4 THEN '707' 
331987                 WHEN 5 THEN '707' 
331988                 WHEN 6 THEN '707' 
331989                 WHEN 7 THEN '707' 
331990                 WHEN 8 THEN '707' 
331991                 WHEN 9 THEN '707' 
331992                 WHEN 10 THEN '707' 
331993                 WHEN 11 THEN '707' 
331994                 
331995                 ELSE null
331996               END                           source_application_id
331997             , 'S'             source_type_code
331998             , CASE r
331999                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
332000                 WHEN 2 THEN 'COST_ELEMENT_ID' 
332001                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
332002                 WHEN 4 THEN 'CURRENCY_CODE' 
332003                 WHEN 5 THEN 'ENTERED_AMOUNT' 
332004                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
332005                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
332006                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
332007                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
332008                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
332009                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
332010                 
332011                 ELSE null
332012               END                           source_code
332013             , CASE r
332014                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
332015                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
332016                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
332017                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
332018                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
332019                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
332020                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
332021                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
332022                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
332023                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
332024                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
332025                 
332026                 ELSE null
332027               END                           source_value
332028             , CASE r
332029                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
332030                           1009615
332031                          ,TO_CHAR(l3.COST_ELEMENT_ID)
332032                          ,'COST_ELEMENT_ID'
332033                          ,'S'
332034                          ,707)
332035                 
332036                 ELSE null
332037               END               source_meaning
332038          FROM  xla_events_gt     xet  
332039         , CST_XLA_INV_LINES_V  l3
332040             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
332041         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
332042           AND xet.event_type_code = C_EVENT_TYPE_CODE
332043             AND l3.event_id          = xet.event_id
332044 
332045 )
332046 ;
332047 --
332048 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
332049 
332050       trace
332051          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
332052          ,p_level    => C_LEVEL_STATEMENT
332053          ,p_module   => l_log_module);
332054 
332055 END IF;
332056 
332057 
332058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
332059       trace
332060          (p_msg      => 'END of insert_sources_561'
332061          ,p_level    => C_LEVEL_PROCEDURE
332062          ,p_module   => l_log_module);
332063 END IF;
332064 EXCEPTION
332065   WHEN xla_exceptions_pkg.application_exception THEN
332066       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
332067             trace
332068                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
332069                ,p_level    => C_LEVEL_EXCEPTION
332070                ,p_module   => l_log_module);
332071       END IF;
332072       RAISE;
332073   WHEN OTHERS THEN
332074       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
332075             trace
332076                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
332077                ,p_level    => C_LEVEL_EXCEPTION
332078                ,p_module   => l_log_module);
332079        END IF;
332080        xla_exceptions_pkg.raise_message
332081            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_561');
332082 END insert_sources_561;
332083 --
332084 
332085 ---------------------------------------
332086 --
332087 -- PRIVATE FUNCTION
332088 --         EventType_561
332089 --
332090 ----------------------------------------
332091 --
332092 FUNCTION EventType_561
332093        (p_application_id         IN NUMBER
332094        ,p_base_ledger_id         IN NUMBER
332095        ,p_target_ledger_id       IN NUMBER
332096        ,p_language               IN VARCHAR2
332097        ,p_currency_code          IN VARCHAR2
332098        ,p_sla_ledger_id          IN NUMBER
332099        ,p_pad_start_date         IN DATE
332100        ,p_pad_end_date           IN DATE
332101        ,p_primary_ledger_id      IN NUMBER)
332102 RETURN BOOLEAN IS
332103 --
332104 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_RCPT';
332105 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
332106 
332107 l_calculate_acctd_flag   VARCHAR2(1) :='N';
332108 l_calculate_g_l_flag     VARCHAR2(1) :='N';
332109 --
332110 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332111 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332112 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
332113 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
332114 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332115 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
332116 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
332117 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332118 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
332119 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
332120 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332121 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332122 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332123 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
332124 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
332125 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
332126 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
332127 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
332128 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
332129 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
332130 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
332131 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
332132 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
332133 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
332134 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
332135 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
332136 
332137 l_event_id                             NUMBER;
332138 l_previous_event_id                    NUMBER;
332139 l_first_event_id                       NUMBER;
332140 l_last_event_id                        NUMBER;
332141 
332142 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
332143 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
332144 --
332145 --
332146 l_result                    BOOLEAN := TRUE;
332147 l_rows                      NUMBER  := 1000;
332148 l_event_type_name           VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
332149 l_event_class_name          VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
332150 l_description               VARCHAR2(4000);
332151 l_transaction_reversal      NUMBER;
332152 l_ae_header_id              NUMBER;
332153 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
332154 l_log_module                VARCHAR2(240);
332155 --
332156 l_acct_reversal_source      VARCHAR2(30);
332157 l_trx_reversal_source       VARCHAR2(30);
332158 
332159 l_continue_with_lines       BOOLEAN := TRUE;
332160 --
332161 l_acc_rev_gl_date_source    DATE;                      -- 4262811
332162 --
332163 type t_array_event_id is table of number index by binary_integer;
332164 
332165 l_rec_array_event                    t_rec_array_event;
332166 l_null_rec_array_event               t_rec_array_event;
332167 l_array_ae_header_id                 xla_number_array_type;
332168 l_actual_flag                        VARCHAR2(1) := NULL;
332169 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
332170 l_balance_type_code                  VARCHAR2(1) :=NULL;
332171 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
332172 
332173 --
332174 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
332175 --
332176 
332177 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
332178 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
332179 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
332180 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
332181 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
332182 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332183 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
332184 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332185 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332186 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332187 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332188 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332189 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332190 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
332191 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
332192 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
332193 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
332194 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
332195 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
332196 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
332197 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
332198 TYPE t_array_source_102 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
332199 TYPE t_array_source_103 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
332200 TYPE t_array_source_104 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
332201 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
332202 
332203 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
332204 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
332205 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
332206 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
332207 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
332208 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
332209 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
332210 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
332211 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
332212 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
332213 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
332214 
332215 l_array_source_1              t_array_source_1;
332216 l_array_source_2              t_array_source_2;
332217 l_array_source_3              t_array_source_3;
332218 l_array_source_4              t_array_source_4;
332219 l_array_source_5              t_array_source_5;
332220 l_array_source_22              t_array_source_22;
332221 l_array_source_39              t_array_source_39;
332222 l_array_source_39_meaning      t_array_lookup_meaning;
332223 l_array_source_41              t_array_source_41;
332224 l_array_source_42              t_array_source_42;
332225 l_array_source_43              t_array_source_43;
332226 l_array_source_44              t_array_source_44;
332227 l_array_source_45              t_array_source_45;
332228 l_array_source_46              t_array_source_46;
332229 l_array_source_79              t_array_source_79;
332230 l_array_source_80              t_array_source_80;
332231 l_array_source_81              t_array_source_81;
332232 l_array_source_85              t_array_source_85;
332233 l_array_source_85_meaning      t_array_lookup_meaning;
332234 l_array_source_87              t_array_source_87;
332235 l_array_source_89              t_array_source_89;
332236 l_array_source_100              t_array_source_100;
332237 l_array_source_101              t_array_source_101;
332238 l_array_source_102              t_array_source_102;
332239 l_array_source_103              t_array_source_103;
332240 l_array_source_104              t_array_source_104;
332241 l_array_source_114              t_array_source_114;
332242 l_array_source_114_meaning      t_array_lookup_meaning;
332243 
332244 l_array_source_11      t_array_source_11;
332245 l_array_source_15      t_array_source_15;
332246 l_array_source_84      t_array_source_84;
332247 l_array_source_88      t_array_source_88;
332248 l_array_source_91      t_array_source_91;
332249 l_array_source_92      t_array_source_92;
332250 l_array_source_93      t_array_source_93;
332251 l_array_source_94      t_array_source_94;
332252 l_array_source_95      t_array_source_95;
332253 l_array_source_97      t_array_source_97;
332254 l_array_source_108      t_array_source_108;
332255 
332256 --
332257 CURSOR header_cur
332258 IS
332259 SELECT /*+ leading(xet) cardinality(xet,1) */
332260 -- Event Type Code: FOB_SHIP_RECIPIENT_RCPT
332261 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
332262     xet.entity_id
332263   , xet.legal_entity_id
332264   , xet.entity_code
332265   , xet.transaction_number
332266   , xet.event_id
332267   , xet.event_class_code
332268   , xet.event_type_code
332269   , xet.event_number
332270   , xet.event_date
332271   , xet.transaction_date
332272   , xet.reference_num_1
332273   , xet.reference_num_2
332274   , xet.reference_num_3
332275   , xet.reference_num_4
332276   , xet.reference_char_1
332277   , xet.reference_char_2
332278   , xet.reference_char_3
332279   , xet.reference_char_4
332280   , xet.reference_date_1
332281   , xet.reference_date_2
332282   , xet.reference_date_3
332283   , xet.reference_date_4
332284   , xet.event_created_by
332285   , xet.budgetary_control_flag 
332286   , h2.TRANSACTION_ID    source_1
332287   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
332288   , h5.TRANSACTION_QUANTITY    source_3
332289   , h5.TRANSACTION_UOM    source_4
332290   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
332291   , h8.PLA_BRIDGING_ACCOUNT    source_22
332292   , h4.PRIMARY_COST_METHOD    source_39
332293   , fvl39.meaning   source_39_meaning
332294   , h8.PLA_MATERIAL_ACCOUNT    source_41
332295   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
332296   , h8.PLA_RESOURCE_ACCOUNT    source_43
332297   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
332298   , h8.PLA_OVERHEAD_ACCOUNT    source_45
332299   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
332300   , h5.APPLIED_TO_APPL_ID    source_79
332301   , h5.APPLIED_TO_DIST_LINK_TYPE    source_80
332302   , h5.APPLIED_TO_ENTITY_CODE    source_81
332303   , h2.DISTRIBUTION_TYPE    source_85
332304   , fvl85.meaning   source_85_meaning
332305   , h5.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
332306   , h5.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
332307   , h11.CST_ENCUM_UPG_OPTION    source_100
332308   , h5.TXN_PO_DISTRIBUTION_ID    source_101
332309   , h5.TXN_PO_HEADER_ID    source_102
332310   , h9.REQ_BUDGET_ACCOUNT    source_103
332311   , h10.REQ_ENCUMBRANCE_TYPE_ID    source_104
332312   , h2.TRANSFER_TO_GL_INDICATOR    source_114
332313   , fvl114.meaning   source_114_meaning
332314   FROM xla_events_gt     xet 
332315   , CST_XLA_INTERORG_PARAMS_REF_V  h1
332316   , CST_XLA_INV_HEADERS_V  h2
332317   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
332318   , CST_XLA_INV_REF_V  h5
332319   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
332320   , CST_XLA_INV_TXN_TYPES_REF_V  h7
332321   , CST_XLA_PLA_CATEGORY_REF_V  h8
332322   , PO_REQ_DISTS_REF_V  h9
332323   , PO_REQ_HEADERS_REF_V  h10
332324   , PSA_CST_XLA_UPG_V  h11
332325   , fnd_lookup_values    fvl39
332326   , fnd_lookup_values    fvl85
332327   , fnd_lookup_values    fvl114
332328  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
332329    and xet.event_type_code = C_EVENT_TYPE_CODE
332330    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
332331   AND h1.event_id (+) = h2.event_id
332332  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h6.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
332333 AND h8.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
332334 AND h8.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG AND h5.BUS_FLOW_REQ_DIST_ID=h9.REQ_DISTRIBUTION_ID (+)  AND h5.BUS_FLOW_REQ_ID = h10.REQ_ID (+)  AND h5.rcv_transaction_id = h11.transaction_id (+)    AND fvl39.lookup_type(+)         = 
332335 'MTL_PRIMARY_COST'
332336   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
332337   AND fvl39.view_application_id(+) = 700
332338   AND fvl39.language(+)            = USERENV('LANG')
332339      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
332340   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
332341   AND fvl85.view_application_id(+) = 700
332342   AND fvl85.language(+)            = USERENV('LANG')
332343      AND fvl114.lookup_type(+)         = 'YES_NO'
332344   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
332345   AND fvl114.view_application_id(+) = 0
332346   AND fvl114.language(+)            = USERENV('LANG')
332347   
332348  ORDER BY event_id
332349 ;
332350 
332351 
332352 --
332353 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
332354 IS
332355 SELECT /*+ leading(xet) cardinality(xet,1) */
332356 -- Event Type Code: FOB_SHIP_RECIPIENT_RCPT
332357 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
332358     xet.entity_id
332359    ,xet.legal_entity_id
332360    ,xet.entity_code
332361    ,xet.transaction_number
332362    ,xet.event_id
332363    ,xet.event_class_code
332364    ,xet.event_type_code
332365    ,xet.event_number
332366    ,xet.event_date
332367    ,xet.transaction_date
332368    ,xet.reference_num_1
332369    ,xet.reference_num_2
332370    ,xet.reference_num_3
332371    ,xet.reference_num_4
332372    ,xet.reference_char_1
332373    ,xet.reference_char_2
332374    ,xet.reference_char_3
332375    ,xet.reference_char_4
332376    ,xet.reference_date_1
332377    ,xet.reference_date_2
332378    ,xet.reference_date_3
332379    ,xet.reference_date_4
332380    ,xet.event_created_by
332381    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
332382   , l3.CODE_COMBINATION_ID    source_11
332383   , l3.COST_ELEMENT_ID    source_15
332384   , l3.DISTRIBUTION_IDENTIFIER    source_84
332385   , l3.CURRENCY_CODE    source_88
332386   , l3.ENTERED_AMOUNT    source_91
332387   , l3.CURRENCY_CONVERSION_DATE    source_92
332388   , l3.CURRENCY_CONVERSION_RATE    source_93
332389   , l3.CURRENCY_CONVERSION_TYPE    source_94
332390   , l3.ACCOUNTED_AMOUNT    source_95
332391   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
332392   , l3.L_ORGANIZATION_CODE    source_108
332393   FROM xla_events_gt     xet 
332394   , CST_XLA_INV_LINES_V  l3
332395  WHERE xet.event_id between x_first_event_id and x_last_event_id
332396    and xet.event_date between p_pad_start_date and p_pad_end_date
332397    and xet.event_type_code = C_EVENT_TYPE_CODE
332398    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
332399 ;
332400 
332401 --
332402 BEGIN
332403 IF g_log_enabled THEN
332404    l_log_module := C_DEFAULT_MODULE||'.EventType_561';
332405 END IF;
332406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
332407    trace
332408       (p_msg      => 'BEGIN of EventType_561'
332409       ,p_level    => C_LEVEL_PROCEDURE
332410       ,p_module   => l_log_module);
332411 END IF;
332412 
332413 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
332414    trace
332415       (p_msg      => 'p_application_id = '||p_application_id||
332416                      ' - p_base_ledger_id = '||p_base_ledger_id||
332417                      ' - p_target_ledger_id  = '||p_target_ledger_id||
332418                      ' - p_language = '||p_language||
332419                      ' - p_currency_code = '||p_currency_code||
332420                      ' - p_sla_ledger_id = '||p_sla_ledger_id
332421       ,p_level    => C_LEVEL_STATEMENT
332422       ,p_module   => l_log_module);
332423 END IF;
332424 --
332425 -- initialze arrays
332426 --
332427 g_array_event.DELETE;
332428 l_rec_array_event := l_null_rec_array_event;
332429 --
332430 --------------------------------------
332431 -- 4262811 Initialze MPA Line Number
332432 --------------------------------------
332433 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
332434 
332435 --
332436 
332437 --
332438 OPEN header_cur;
332439 --
332440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
332441    trace
332442    (p_msg      => 'SQL - FETCH header_cur'
332443    ,p_level    => C_LEVEL_STATEMENT
332444    ,p_module   => l_log_module);
332445 END IF;
332446 --
332447 LOOP
332448 FETCH header_cur BULK COLLECT INTO
332449         l_array_entity_id
332450       , l_array_legal_entity_id
332451       , l_array_entity_code
332452       , l_array_transaction_num
332453       , l_array_event_id
332454       , l_array_class_code
332455       , l_array_event_type
332456       , l_array_event_number
332457       , l_array_event_date
332458       , l_array_transaction_date
332459       , l_array_reference_num_1
332460       , l_array_reference_num_2
332461       , l_array_reference_num_3
332462       , l_array_reference_num_4
332463       , l_array_reference_char_1
332464       , l_array_reference_char_2
332465       , l_array_reference_char_3
332466       , l_array_reference_char_4
332467       , l_array_reference_date_1
332468       , l_array_reference_date_2
332469       , l_array_reference_date_3
332470       , l_array_reference_date_4
332471       , l_array_event_created_by
332472       , l_array_budgetary_control_flag 
332473       , l_array_source_1
332474       , l_array_source_2
332475       , l_array_source_3
332476       , l_array_source_4
332477       , l_array_source_5
332478       , l_array_source_22
332479       , l_array_source_39
332480       , l_array_source_39_meaning
332481       , l_array_source_41
332482       , l_array_source_42
332483       , l_array_source_43
332484       , l_array_source_44
332485       , l_array_source_45
332486       , l_array_source_46
332487       , l_array_source_79
332488       , l_array_source_80
332489       , l_array_source_81
332490       , l_array_source_85
332491       , l_array_source_85_meaning
332492       , l_array_source_87
332493       , l_array_source_89
332494       , l_array_source_100
332495       , l_array_source_101
332496       , l_array_source_102
332497       , l_array_source_103
332498       , l_array_source_104
332499       , l_array_source_114
332500       , l_array_source_114_meaning
332501       LIMIT l_rows;
332502 --
332503 IF (C_LEVEL_EVENT >= g_log_level) THEN
332504    trace
332505    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
332506    ,p_level    => C_LEVEL_EVENT
332507    ,p_module   => l_log_module);
332508 END IF;
332509 --
332510 EXIT WHEN l_array_entity_id.COUNT = 0;
332511 
332512 -- initialize arrays
332513 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
332514 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
332515 
332516 --
332517 -- Bug 4458708
332518 --
332519 XLA_AE_LINES_PKG.g_LineNumber := 0;
332520 
332521 
332522 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
332523 g_last_hdr_idx := l_array_event_id.LAST;
332524 --
332525 -- loop for the headers. Each iteration is for each header extract row
332526 -- fetched in header cursor
332527 --
332528 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
332529 
332530 --
332531 -- set event info as cache for other routines to refer event attributes
332532 --
332533 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
332534    (p_application_id           => p_application_id
332535    ,p_primary_ledger_id        => p_primary_ledger_id
332536    ,p_base_ledger_id           => p_base_ledger_id
332537    ,p_target_ledger_id         => p_target_ledger_id
332538    ,p_entity_id                => l_array_entity_id(hdr_idx)
332539    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
332540    ,p_entity_code              => l_array_entity_code(hdr_idx)
332541    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
332542    ,p_event_id                 => l_array_event_id(hdr_idx)
332543    ,p_event_class_code         => l_array_class_code(hdr_idx)
332544    ,p_event_type_code          => l_array_event_type(hdr_idx)
332545    ,p_event_number             => l_array_event_number(hdr_idx)
332546    ,p_event_date               => l_array_event_date(hdr_idx)
332547    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
332548    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
332549    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
332550    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
332551    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
332552    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
332553    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
332554    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
332555    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
332556    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
332557    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
332558    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
332559    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
332560    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
332561    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
332562 
332563 --
332564 -- set the status of entry to C_VALID (0)
332565 --
332566 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
332567 
332568 --
332569 -- initialize a row for ae header
332570 --
332571 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
332572 
332573 l_event_id := l_array_event_id(hdr_idx);
332574 
332575 --
332576 -- storing the hdr_idx for event. May be used by line cursor.
332577 --
332578 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
332579 
332580 --
332581 -- store sources from header extract. This can be improved to
332582 -- store only those sources from header extract that may be used in lines
332583 --
332584 
332585 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
332586 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
332587 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
332588 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
332589 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
332590 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
332591 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
332592 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
332593 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
332594 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
332595 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
332596 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
332597 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
332598 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
332599 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
332600 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
332601 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
332602 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
332603 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
332604 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
332605 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
332606 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
332607 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
332608 g_array_event(l_event_id).array_value_num('source_102') := l_array_source_102(hdr_idx);
332609 g_array_event(l_event_id).array_value_num('source_103') := l_array_source_103(hdr_idx);
332610 g_array_event(l_event_id).array_value_num('source_104') := l_array_source_104(hdr_idx);
332611 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
332612 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
332613 
332614 --
332615 -- initilaize the status of ae headers for diffrent balance types
332616 -- the status is initialised to C_NOT_CREATED (2)
332617 --
332618 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
332619 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
332620 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
332621 
332622 --
332623 -- call api to validate and store accounting attributes for header
332624 --
332625 
332626 ------------------------------------------------------------
332627 -- Accrual Reversal : to get date for Standard Source (NONE)
332628 ------------------------------------------------------------
332629 l_acc_rev_gl_date_source := NULL;
332630 
332631      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
332632       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_104');
332633      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
332634       l_rec_acct_attrs.array_date_value(2) := 
332635 xla_ae_sources_pkg.GetSystemSourceDate(
332636    p_source_code           => 'XLA_REFERENCE_DATE_1'
332637  , p_source_type_code      => 'Y'
332638  , p_source_application_id =>  602
332639 );
332640      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
332641       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
332642 
332643 
332644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
332645 
332646 XLA_AE_HEADER_PKG.SetJeCategoryName;
332647 
332648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
332649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
332650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
332651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
332652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
332653 
332654 
332655 --
332656 xla_ae_header_pkg.SetHdrDescription(
332657    p_description => Description_1 (
332658    p_application_id => p_application_id 
332659  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
332660  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
332661  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
332662  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
332663  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
332664    )
332665 );
332666 --
332667 
332668 -- No header level analytical criteria
332669 
332670 --
332671 --accounting attribute enhancement, bug 3612931
332672 --
332673 l_trx_reversal_source := SUBSTR(NULL, 1,30);
332674 
332675 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
332676    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
332677 
332678    xla_accounting_err_pkg.build_message
332679       (p_appli_s_name            => 'XLA'
332680       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
332681       ,p_token_1                 => 'ACCT_ATTR_NAME'
332682       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
332683       ,p_token_2                 => 'PRODUCT_NAME'
332684       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
332685       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
332686       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
332687       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
332688 
332689 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
332690    --
332691    -- following sets the accounting attributes needed to reverse
332692    -- accounting for a distributeion
332693    --
332694    xla_ae_lines_pkg.SetTrxReversalAttrs
332695       (p_event_id              => l_event_id
332696       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
332697       ,p_trx_reversal_source   => l_trx_reversal_source);
332698 
332699 END IF;
332700 
332701 
332702 ----------------------------------------------------------------
332703 -- 4262811 -  update the header statuses to invalid in need be
332704 ----------------------------------------------------------------
332705 --
332706 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
332707 
332708 
332709   -----------------------------------------------
332710   -- No accrual reversal for the event class/type
332711   -----------------------------------------------
332712 ----------------------------------------------------------------
332713 
332714 --
332715 -- this ends the header loop iteration for one bulk fetch
332716 --
332717 END LOOP;
332718 
332719 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
332720 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
332721 
332722 --
332723 -- insert dummy rows into lines gt table that were created due to
332724 -- transaction reversals
332725 --
332726 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
332727    l_result := XLA_AE_LINES_PKG.InsertLines;
332728 END IF;
332729 
332730 --
332731 -- reset the temp_line_num for each set of events fetched from header
332732 -- cursor rather than doing it for each new event in line cursor
332733 -- Bug 3939231
332734 --
332735 xla_ae_lines_pkg.g_temp_line_num := 0;
332736 
332737 
332738 
332739 --
332740 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
332741 --
332742 --
332743 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
332744 
332745       trace
332746          (p_msg      => 'SQL - FETCH line_cur'
332747          ,p_level    => C_LEVEL_STATEMENT
332748          ,p_module   => l_log_module);
332749 
332750 END IF;
332751 --
332752 --
332753 LOOP
332754   --
332755   FETCH line_cur BULK COLLECT INTO
332756         l_array_entity_id
332757       , l_array_legal_entity_id
332758       , l_array_entity_code
332759       , l_array_transaction_num
332760       , l_array_event_id
332761       , l_array_class_code
332762       , l_array_event_type
332763       , l_array_event_number
332764       , l_array_event_date
332765       , l_array_transaction_date
332766       , l_array_reference_num_1
332767       , l_array_reference_num_2
332768       , l_array_reference_num_3
332769       , l_array_reference_num_4
332770       , l_array_reference_char_1
332771       , l_array_reference_char_2
332772       , l_array_reference_char_3
332773       , l_array_reference_char_4
332774       , l_array_reference_date_1
332775       , l_array_reference_date_2
332776       , l_array_reference_date_3
332777       , l_array_reference_date_4
332778       , l_array_event_created_by
332779       , l_array_budgetary_control_flag
332780       , l_array_extract_line_num 
332781       , l_array_source_11
332782       , l_array_source_15
332783       , l_array_source_84
332784       , l_array_source_88
332785       , l_array_source_91
332786       , l_array_source_92
332787       , l_array_source_93
332788       , l_array_source_94
332789       , l_array_source_95
332790       , l_array_source_97
332791       , l_array_source_108
332792       LIMIT l_rows;
332793 
332794   --
332795   IF (C_LEVEL_EVENT >= g_log_level) THEN
332796             trace
332797                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
332798                ,p_level    => C_LEVEL_EVENT
332799                ,p_module   => l_log_module);
332800   END IF;
332801   --
332802   EXIT WHEN l_array_entity_id.count = 0;
332803 
332804   XLA_AE_LINES_PKG.g_rec_lines := null;
332805 
332806 --
332807 -- Bug 4458708
332808 --
332809 XLA_AE_LINES_PKG.g_LineNumber := 0;
332810 --
332811 --
332812 
332813 FOR Idx IN 1..l_array_event_id.count LOOP
332814    --
332815    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
332816    --
332817    l_event_id := l_array_event_id(idx);  -- 5648433
332818 
332819    --
332820    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
332821    --
332822 
332823    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
332824              (g_array_event(l_event_id).array_value_num('header_index'))
332825          ,'N'
332826          ) <> 'Y'
332827    THEN
332828       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
332829          trace
332830             (p_msg      => 'Trancaction revesal option is not Y '
332831             ,p_level    => C_LEVEL_STATEMENT
332832             ,p_module   => l_log_module);
332833       END IF;
332834 
332835 --
332836 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
332837 --
332838 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
332839 --
332840 -- set event info as cache for other routines to refer event attributes
332841 --
332842 
332843 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
332844    l_previous_event_id := l_event_id;
332845 
332846    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
332847       (p_application_id           => p_application_id
332848       ,p_primary_ledger_id        => p_primary_ledger_id
332849       ,p_base_ledger_id           => p_base_ledger_id
332850       ,p_target_ledger_id         => p_target_ledger_id
332851       ,p_entity_id                => l_array_entity_id(Idx)
332852       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
332853       ,p_entity_code              => l_array_entity_code(Idx)
332854       ,p_transaction_num          => l_array_transaction_num(Idx)
332855       ,p_event_id                 => l_array_event_id(Idx)
332856       ,p_event_class_code         => l_array_class_code(Idx)
332857       ,p_event_type_code          => l_array_event_type(Idx)
332858       ,p_event_number             => l_array_event_number(Idx)
332859       ,p_event_date               => l_array_event_date(Idx)
332860       ,p_transaction_date         => l_array_transaction_date(Idx)
332861       ,p_reference_num_1          => l_array_reference_num_1(Idx)
332862       ,p_reference_num_2          => l_array_reference_num_2(Idx)
332863       ,p_reference_num_3          => l_array_reference_num_3(Idx)
332864       ,p_reference_num_4          => l_array_reference_num_4(Idx)
332865       ,p_reference_char_1         => l_array_reference_char_1(Idx)
332866       ,p_reference_char_2         => l_array_reference_char_2(Idx)
332867       ,p_reference_char_3         => l_array_reference_char_3(Idx)
332868       ,p_reference_char_4         => l_array_reference_char_4(Idx)
332869       ,p_reference_date_1         => l_array_reference_date_1(Idx)
332870       ,p_reference_date_2         => l_array_reference_date_2(Idx)
332871       ,p_reference_date_3         => l_array_reference_date_3(Idx)
332872       ,p_reference_date_4         => l_array_reference_date_4(Idx)
332873       ,p_event_created_by         => l_array_event_created_by(Idx)
332874       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
332875        --
332876 END IF;
332877 
332878 
332879 
332880 --
332881 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
332882 
332883 l_acct_reversal_source := SUBSTR(NULL, 1,30);
332884 
332885 IF l_continue_with_lines THEN
332886    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
332887       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
332888 
332889       xla_accounting_err_pkg.build_message
332890          (p_appli_s_name            => 'XLA'
332891          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
332892          ,p_token_1                 => 'LINE_NUMBER'
332893          ,p_value_1                 => l_array_extract_line_num(Idx)
332894          ,p_token_2                 => 'PRODUCT_NAME'
332895          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
332896          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
332897          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
332898          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
332899 
332900    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
332901       --
332902       -- following sets the accounting attributes needed to reverse
332903       -- accounting for a distributeion
332904       --
332905 
332906       --
332907       -- 5217187
332908       --
332909       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
332910       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
332911                                        g_array_event(l_event_id).array_value_num('header_index'));
332912       --
332913       --
332914 
332915       -- No reversal code generated
332916 
332917       xla_ae_lines_pkg.SetAcctReversalAttrs
332918          (p_event_id             => l_event_id
332919          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
332920          ,p_calculate_acctd_flag => l_calculate_acctd_flag
332921          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
332922    END IF;
332923 
332924    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
332925        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
332926 
332927 --
332928 AcctLineType_217 (
332929  p_application_id  => p_application_id
332930  ,p_event_id     => l_event_id
332931  ,p_calculate_acctd_flag => l_calculate_acctd_flag
332932  ,p_calculate_g_l_flag => l_calculate_g_l_flag
332933  ,p_actual_flag => l_actual_flag
332934  ,p_balance_type_code => l_balance_type_code
332935  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
332936  
332937  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
332938  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
332939  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
332940  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
332941  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
332942  , p_source_11 => l_array_source_11(Idx)
332943  , p_source_15 => l_array_source_15(Idx)
332944  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
332945  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
332946  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
332947  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
332948  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
332949  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
332950  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
332951  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
332952  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
332953  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
332954  , p_source_84 => l_array_source_84(Idx)
332955  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
332956  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
332957  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
332958  , p_source_88 => l_array_source_88(Idx)
332959  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
332960  , p_source_91 => l_array_source_91(Idx)
332961  , p_source_92 => l_array_source_92(Idx)
332962  , p_source_93 => l_array_source_93(Idx)
332963  , p_source_94 => l_array_source_94(Idx)
332964  , p_source_95 => l_array_source_95(Idx)
332965  , p_source_97 => l_array_source_97(Idx)
332966  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
332967  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
332968  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
332969  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
332970  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
332971  );
332972 If(l_balance_type_code = 'A') THEN
332973   l_actual_gain_loss_ref := l_gain_or_loss_ref;
332974 END IF;
332975 
332976 --
332977 
332978 
332979 --
332980 AcctLineType_283 (
332981  p_application_id  => p_application_id
332982  ,p_event_id     => l_event_id
332983  ,p_calculate_acctd_flag => l_calculate_acctd_flag
332984  ,p_calculate_g_l_flag => l_calculate_g_l_flag
332985  ,p_actual_flag => l_actual_flag
332986  ,p_balance_type_code => l_balance_type_code
332987  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
332988  
332989  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
332990  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
332991  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
332992  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
332993  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
332994  , p_source_15 => l_array_source_15(Idx)
332995  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
332996  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
332997  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
332998  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
332999  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
333000  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
333001  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
333002  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
333003  , p_source_84 => l_array_source_84(Idx)
333004  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
333005  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
333006  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
333007  , p_source_88 => l_array_source_88(Idx)
333008  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
333009  , p_source_91 => l_array_source_91(Idx)
333010  , p_source_92 => l_array_source_92(Idx)
333011  , p_source_93 => l_array_source_93(Idx)
333012  , p_source_94 => l_array_source_94(Idx)
333013  , p_source_95 => l_array_source_95(Idx)
333014  , p_source_97 => l_array_source_97(Idx)
333015  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
333016  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
333017  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
333018  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
333019  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
333020  , p_source_108 => l_array_source_108(Idx)
333021  );
333022 If(l_balance_type_code = 'A') THEN
333023   l_actual_gain_loss_ref := l_gain_or_loss_ref;
333024 END IF;
333025 
333026 --
333027 
333028 
333029 --
333030 AcctLineType_341 (
333031  p_application_id  => p_application_id
333032  ,p_event_id     => l_event_id
333033  ,p_calculate_acctd_flag => l_calculate_acctd_flag
333034  ,p_calculate_g_l_flag => l_calculate_g_l_flag
333035  ,p_actual_flag => l_actual_flag
333036  ,p_balance_type_code => l_balance_type_code
333037  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
333038  
333039  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
333040  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
333041  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
333042  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
333043  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
333044  , p_source_11 => l_array_source_11(Idx)
333045  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
333046  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
333047  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
333048  , p_source_84 => l_array_source_84(Idx)
333049  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
333050  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
333051  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
333052  , p_source_88 => l_array_source_88(Idx)
333053  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
333054  , p_source_91 => l_array_source_91(Idx)
333055  , p_source_92 => l_array_source_92(Idx)
333056  , p_source_93 => l_array_source_93(Idx)
333057  , p_source_94 => l_array_source_94(Idx)
333058  , p_source_95 => l_array_source_95(Idx)
333059  , p_source_97 => l_array_source_97(Idx)
333060  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
333061  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
333062  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
333063  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
333064  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
333065  );
333066 If(l_balance_type_code = 'A') THEN
333067   l_actual_gain_loss_ref := l_gain_or_loss_ref;
333068 END IF;
333069 
333070 --
333071 
333072 
333073 --
333074 AcctLineType_398 (
333075  p_application_id  => p_application_id
333076  ,p_event_id     => l_event_id
333077  ,p_calculate_acctd_flag => l_calculate_acctd_flag
333078  ,p_calculate_g_l_flag => l_calculate_g_l_flag
333079  ,p_actual_flag => l_actual_flag
333080  ,p_balance_type_code => l_balance_type_code
333081  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
333082  
333083  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
333084  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
333085  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
333086  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
333087  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
333088  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
333089  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
333090  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
333091  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
333092  , p_source_84 => l_array_source_84(Idx)
333093  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
333094  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
333095  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
333096  , p_source_88 => l_array_source_88(Idx)
333097  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
333098  , p_source_91 => l_array_source_91(Idx)
333099  , p_source_92 => l_array_source_92(Idx)
333100  , p_source_93 => l_array_source_93(Idx)
333101  , p_source_94 => l_array_source_94(Idx)
333102  , p_source_95 => l_array_source_95(Idx)
333103  , p_source_97 => l_array_source_97(Idx)
333104  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
333105  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
333106  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
333107  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
333108  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
333109  );
333110 If(l_balance_type_code = 'A') THEN
333111   l_actual_gain_loss_ref := l_gain_or_loss_ref;
333112 END IF;
333113 
333114 --
333115 
333116 
333117 --
333118 AcctLineType_424 (
333119  p_application_id  => p_application_id
333120  ,p_event_id     => l_event_id
333121  ,p_calculate_acctd_flag => l_calculate_acctd_flag
333122  ,p_calculate_g_l_flag => l_calculate_g_l_flag
333123  ,p_actual_flag => l_actual_flag
333124  ,p_balance_type_code => l_balance_type_code
333125  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
333126  
333127  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
333128  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
333129  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
333130  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
333131  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
333132  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
333133  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
333134  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
333135  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
333136  , p_source_84 => l_array_source_84(Idx)
333137  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
333138  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
333139  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
333140  , p_source_88 => l_array_source_88(Idx)
333141  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
333142  , p_source_91 => l_array_source_91(Idx)
333143  , p_source_92 => l_array_source_92(Idx)
333144  , p_source_93 => l_array_source_93(Idx)
333145  , p_source_94 => l_array_source_94(Idx)
333146  , p_source_95 => l_array_source_95(Idx)
333147  , p_source_97 => l_array_source_97(Idx)
333148  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
333149  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
333150  , p_source_102 => g_array_event(l_event_id).array_value_num('source_102')
333151  , p_source_103 => g_array_event(l_event_id).array_value_num('source_103')
333152  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
333153  );
333154 If(l_balance_type_code = 'A') THEN
333155   l_actual_gain_loss_ref := l_gain_or_loss_ref;
333156 END IF;
333157 
333158 --
333159 
333160       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
333161       -- or secondary ledger that has different currency with primary
333162       -- or alc that is calculated by sla
333163       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
333164             (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'))
333165 
333166 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
333167 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
333168           AND (l_actual_flag = 'A')) THEN
333169         XLA_AE_LINES_PKG.CreateGainOrLossLines(
333170           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
333171          ,p_application_id   => p_application_id
333172          ,p_amb_context_code => 'DEFAULT'
333173          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
333174          ,p_event_class_code => C_EVENT_CLASS_CODE
333175          ,p_event_type_code  => C_EVENT_TYPE_CODE
333176          
333177          ,p_gain_ccid        => -1
333178          ,p_loss_ccid        => -1
333179 
333180          ,p_actual_flag      => l_actual_flag
333181          ,p_enc_flag         => null
333182          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
333183          ,p_enc_g_l_ref      => null
333184          );
333185       END IF;
333186    END IF;
333187 END IF;
333188 
333189    ELSE
333190       --
333191       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
333192       --
333193       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
333194          trace
333195             (p_msg      => 'Trancaction revesal option is Y'
333196             ,p_level    => C_LEVEL_STATEMENT
333197             ,p_module   => l_log_module);
333198       END IF;
333199    END IF;
333200 
333201 END LOOP;
333202 l_result := XLA_AE_LINES_PKG.InsertLines ;
333203 end loop;
333204 close line_cur;
333205 
333206 
333207 --
333208 -- insert headers into xla_ae_headers_gt table
333209 --
333210 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
333211 
333212 -- insert into errors table here.
333213 
333214 END LOOP;
333215 
333216 --
333217 -- 4865292
333218 --
333219 -- Compare g_hdr_extract_count with event count in
333220 -- CreateHeadersAndLines.
333221 --
333222 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
333223 
333224 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
333225    trace (p_msg     => '# rows extracted from header extract objects '
333226                     || ' (running total): '
333227                     || g_hdr_extract_count
333228          ,p_level   => C_LEVEL_STATEMENT
333229          ,p_module  => l_log_module);
333230 END IF;
333231 
333232 CLOSE header_cur;
333233 --
333234 
333235 --
333236 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
333237    trace
333238       (p_msg      => 'END of EventType_561'
333239       ,p_level    => C_LEVEL_PROCEDURE
333240       ,p_module   => l_log_module);
333241 END IF;
333242 --
333243 RETURN l_result;
333244 EXCEPTION
333245 WHEN xla_exceptions_pkg.application_exception THEN
333246    
333247 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
333248 
333249    
333250 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
333251 
333252    RAISE;
333253 
333254 WHEN NO_DATA_FOUND THEN
333255 
333256 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
333257 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
333258 
333259 FOR header_record IN header_cur
333260 LOOP
333261     l_array_header_events(header_record.event_id) := header_record.event_id;
333262 END LOOP;
333263 
333264 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
333265 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
333266 
333267 fnd_file.put_line(fnd_file.LOG, '                    ');
333268 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
333269 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
333270 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
333271 
333272 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
333273 LOOP
333274 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
333275 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
333276         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
333277 	END IF;
333278 END LOOP;
333279 
333280 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
333281 fnd_file.put_line(fnd_file.LOG, '                    ');
333282 
333283 
333284 xla_exceptions_pkg.raise_message
333285       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_561');
333286 
333287 
333288 WHEN OTHERS THEN
333289    xla_exceptions_pkg.raise_message
333290       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_561');
333291 END EventType_561;
333292 --
333293 
333294 ---------------------------------------
333295 --
333296 -- PRIVATE PROCEDURE
333297 --         insert_sources_562
333298 --
333299 ----------------------------------------
333300 --
333301 PROCEDURE insert_sources_562(
333302                                 p_target_ledger_id       IN NUMBER
333303                               , p_language               IN VARCHAR2
333304                               , p_sla_ledger_id          IN NUMBER
333305                               , p_pad_start_date         IN DATE
333306                               , p_pad_end_date           IN DATE
333307                          )
333308 IS
333309 
333310 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
333311 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
333312 p_apps_owner                   VARCHAR2(30);
333313 l_log_module                   VARCHAR2(240);
333314 BEGIN
333315 IF g_log_enabled THEN
333316       l_log_module := C_DEFAULT_MODULE||'.insert_sources_562';
333317 END IF;
333318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
333319 
333320       trace
333321          (p_msg      => 'BEGIN of insert_sources_562'
333322          ,p_level    => C_LEVEL_PROCEDURE
333323          ,p_module   => l_log_module);
333324 
333325 END IF;
333326 
333327 -- select APPS owner
333328 SELECT oracle_username
333329   INTO p_apps_owner
333330   FROM fnd_oracle_userid
333331  WHERE read_only_flag = 'U'
333332 ;
333333 
333334 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
333335       trace
333336          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
333337                         ' - p_language = '||p_language||
333338                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
333339                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
333340                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
333341                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
333342          ,p_level    => C_LEVEL_STATEMENT
333343          ,p_module   => l_log_module);
333344 END IF;
333345 
333346 
333347 --
333348 INSERT INTO xla_diag_sources --hdr1
333349 (
333350         event_id
333351       , ledger_id
333352       , sla_ledger_id
333353       , description_language
333354       , object_name
333355       , object_type_code
333356       , line_number
333357       , source_application_id
333358       , source_type_code
333359       , source_code
333360       , source_value
333361       , source_meaning
333362       , created_by
333363       , creation_date
333364       , last_update_date
333365       , last_updated_by
333366       , last_update_login
333367       , program_update_date
333368       , program_application_id
333369       , program_id
333370       , request_id
333371 )
333372 SELECT
333373         event_id
333374       , p_target_ledger_id
333375       , p_sla_ledger_id
333376       , p_language
333377       , object_name
333378       , object_type_code
333379       , line_number
333380       , source_application_id
333381       , source_type_code
333382       , source_code
333383       , SUBSTR(source_value ,1,1996)
333384       , SUBSTR(source_meaning,1,200)
333385       , xla_environment_pkg.g_Usr_Id
333386       , TRUNC(SYSDATE)
333387       , TRUNC(SYSDATE)
333388       , xla_environment_pkg.g_Usr_Id
333389       , xla_environment_pkg.g_Login_Id
333390       , TRUNC(SYSDATE)
333391       , xla_environment_pkg.g_Prog_Appl_Id
333392       , xla_environment_pkg.g_Prog_Id
333393       , xla_environment_pkg.g_Req_Id
333394   FROM (
333395        SELECT xet.event_id                  event_id
333396             , 0                             line_number
333397             , CASE r
333398                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
333399                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
333400                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
333401                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
333402                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
333403                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
333404                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
333405                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
333406                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
333407                 WHEN 10 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
333408                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
333409                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
333410                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
333411                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
333412                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
333413                 WHEN 16 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
333414                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
333415                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
333416                 
333417                ELSE null
333418               END                           object_name
333419             , CASE r
333420                 WHEN 1 THEN 'HEADER' 
333421                 WHEN 2 THEN 'HEADER' 
333422                 WHEN 3 THEN 'HEADER' 
333423                 WHEN 4 THEN 'HEADER' 
333424                 WHEN 5 THEN 'HEADER' 
333425                 WHEN 6 THEN 'HEADER' 
333426                 WHEN 7 THEN 'HEADER' 
333427                 WHEN 8 THEN 'HEADER' 
333428                 WHEN 9 THEN 'HEADER' 
333429                 WHEN 10 THEN 'HEADER' 
333430                 WHEN 11 THEN 'HEADER' 
333431                 WHEN 12 THEN 'HEADER' 
333432                 WHEN 13 THEN 'HEADER' 
333433                 WHEN 14 THEN 'HEADER' 
333434                 WHEN 15 THEN 'HEADER' 
333435                 WHEN 16 THEN 'HEADER' 
333436                 WHEN 17 THEN 'HEADER' 
333437                 WHEN 18 THEN 'HEADER' 
333438                 
333439                 ELSE null
333440               END                           object_type_code
333441             , CASE r
333442                 WHEN 1 THEN '707' 
333443                 WHEN 2 THEN '707' 
333444                 WHEN 3 THEN '707' 
333445                 WHEN 4 THEN '707' 
333446                 WHEN 5 THEN '707' 
333447                 WHEN 6 THEN '707' 
333448                 WHEN 7 THEN '707' 
333449                 WHEN 8 THEN '707' 
333450                 WHEN 9 THEN '707' 
333451                 WHEN 10 THEN '707' 
333452                 WHEN 11 THEN '707' 
333453                 WHEN 12 THEN '707' 
333454                 WHEN 13 THEN '707' 
333455                 WHEN 14 THEN '707' 
333456                 WHEN 15 THEN '707' 
333457                 WHEN 16 THEN '707' 
333458                 WHEN 17 THEN '707' 
333459                 WHEN 18 THEN '707' 
333460                 
333461                 ELSE null
333462               END                           source_application_id
333463             , 'S'             source_type_code
333464             , CASE r
333465                 WHEN 1 THEN 'TRANSACTION_ID' 
333466                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
333467                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
333468                 WHEN 4 THEN 'TRANSACTION_UOM' 
333469                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
333470                 WHEN 6 THEN 'INV_TXN_TRANSPO_DIST_ACCT' 
333471                 WHEN 7 THEN 'INTERORG_EXPENSE_ACCOUNT' 
333472                 WHEN 8 THEN 'INTERORG_PAYABLES_ACCOUNT' 
333473                 WHEN 9 THEN 'INTERORG_PRICE_VAR_ACCOUNT' 
333474                 WHEN 10 THEN 'PRIMARY_COST_METHOD' 
333475                 WHEN 11 THEN 'PLA_MATERIAL_ACCOUNT' 
333476                 WHEN 12 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
333477                 WHEN 13 THEN 'PLA_RESOURCE_ACCOUNT' 
333478                 WHEN 14 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
333479                 WHEN 15 THEN 'PLA_OVERHEAD_ACCOUNT' 
333480                 WHEN 16 THEN 'INTERORG_BRIDGING_ACCOUNT' 
333481                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
333482                 WHEN 18 THEN 'TRANSFER_TO_GL_INDICATOR' 
333483                 
333484                 ELSE null
333485               END                           source_code
333486             , CASE r
333487                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
333488                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
333489                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
333490                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
333491                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
333492                 WHEN 6 THEN TO_CHAR(h5.INV_TXN_TRANSPO_DIST_ACCT)
333493                 WHEN 7 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
333494                 WHEN 8 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
333495                 WHEN 9 THEN TO_CHAR(h1.INTERORG_PRICE_VAR_ACCOUNT)
333496                 WHEN 10 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
333497                 WHEN 11 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
333498                 WHEN 12 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
333499                 WHEN 13 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
333500                 WHEN 14 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
333501                 WHEN 15 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
333502                 WHEN 16 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
333503                 WHEN 17 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
333504                 WHEN 18 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
333505                 
333506                 ELSE null
333507               END                           source_value
333508             , CASE r
333509                 WHEN 10 THEN fvl39.meaning
333510                 WHEN 17 THEN fvl85.meaning
333511                 WHEN 18 THEN fvl114.meaning
333512                 
333513                 ELSE null
333514               END               source_meaning
333515         FROM xla_events_gt     xet  
333516       , CST_XLA_INTERORG_PARAMS_REF_V  h1
333517       , CST_XLA_INV_HEADERS_V  h2
333518       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
333519       , CST_XLA_INV_REF_V  h5
333520       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
333521       , CST_XLA_INV_TXN_TYPES_REF_V  h7
333522       , CST_XLA_PLA_CATEGORY_REF_V  h8
333523   , fnd_lookup_values    fvl39
333524   , fnd_lookup_values    fvl85
333525   , fnd_lookup_values    fvl114
333526             ,(select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
333527        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
333528          AND xet.event_type_code = C_EVENT_TYPE_CODE
333529             AND h2.event_id = xet.event_id
333530   AND h1.event_id (+) = h2.event_id
333531  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id = h2.inventory_item_id and h6.organization_id = h2.organization_id AND h7.inv_transaction_type_id = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id 
333532 and h8.pla_cat_item_id          (+) = h2.inventory_item_id 
333533 and h8.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
333534   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
333535   AND fvl39.view_application_id(+) = 700
333536   AND fvl39.language(+)            = USERENV('LANG')
333537      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
333538   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
333539   AND fvl85.view_application_id(+) = 700
333540   AND fvl85.language(+)            = USERENV('LANG')
333541      AND fvl114.lookup_type(+)         = 'YES_NO'
333542   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
333543   AND fvl114.view_application_id(+) = 0
333544   AND fvl114.language(+)            = USERENV('LANG')
333545   
333546 )
333547 ;
333548 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
333549 
333550       trace
333551          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
333552          ,p_level    => C_LEVEL_STATEMENT
333553          ,p_module   => l_log_module);
333554 
333555 END IF;
333556 --
333557 
333558 
333559 
333560 --
333561 INSERT INTO xla_diag_sources --line1
333562 (
333563         event_id
333564       , ledger_id
333565       , sla_ledger_id
333566       , description_language
333567       , object_name
333568       , object_type_code
333569       , line_number
333570       , source_application_id
333571       , source_type_code
333572       , source_code
333573       , source_value
333574       , source_meaning
333575       , created_by
333576       , creation_date
333577       , last_update_date
333578       , last_updated_by
333579       , last_update_login
333580       , program_update_date
333581       , program_application_id
333582       , program_id
333583       , request_id
333584 )
333585 SELECT  event_id
333586       , p_target_ledger_id
333587       , p_sla_ledger_id
333588       , p_language
333589       , object_name
333590       , object_type_code
333591       , line_number
333592       , source_application_id
333593       , source_type_code
333594       , source_code
333595       , SUBSTR(source_value,1,1996)
333596       , SUBSTR(source_meaning,1,200)
333597       , xla_environment_pkg.g_Usr_Id
333598       , TRUNC(SYSDATE)
333599       , TRUNC(SYSDATE)
333600       , xla_environment_pkg.g_Usr_Id
333601       , xla_environment_pkg.g_Login_Id
333602       , TRUNC(SYSDATE)
333603       , xla_environment_pkg.g_Prog_Appl_Id
333604       , xla_environment_pkg.g_Prog_Id
333605       , xla_environment_pkg.g_Req_Id
333606   FROM (
333607        SELECT xet.event_id                  event_id
333608             , l3.line_number                 line_number
333609             , CASE r
333610                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
333611                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
333612                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
333613                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
333614                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
333615                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
333616                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
333617                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
333618                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
333619                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
333620                 
333621                ELSE null
333622               END                           object_name
333623             , CASE r
333624                 WHEN 1 THEN 'LINE' 
333625                 WHEN 2 THEN 'LINE' 
333626                 WHEN 3 THEN 'LINE' 
333627                 WHEN 4 THEN 'LINE' 
333628                 WHEN 5 THEN 'LINE' 
333629                 WHEN 6 THEN 'LINE' 
333630                 WHEN 7 THEN 'LINE' 
333631                 WHEN 8 THEN 'LINE' 
333632                 WHEN 9 THEN 'LINE' 
333633                 WHEN 10 THEN 'LINE' 
333634                 
333635                 ELSE null
333636               END                           object_type_code
333637             , CASE r
333638                 WHEN 1 THEN '707' 
333639                 WHEN 2 THEN '707' 
333640                 WHEN 3 THEN '707' 
333641                 WHEN 4 THEN '707' 
333642                 WHEN 5 THEN '707' 
333643                 WHEN 6 THEN '707' 
333644                 WHEN 7 THEN '707' 
333645                 WHEN 8 THEN '707' 
333646                 WHEN 9 THEN '707' 
333647                 WHEN 10 THEN '707' 
333648                 
333649                 ELSE null
333650               END                           source_application_id
333651             , 'S'             source_type_code
333652             , CASE r
333653                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
333654                 WHEN 2 THEN 'COST_ELEMENT_ID' 
333655                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
333656                 WHEN 4 THEN 'CURRENCY_CODE' 
333657                 WHEN 5 THEN 'ENTERED_AMOUNT' 
333658                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
333659                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
333660                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
333661                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
333662                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
333663                 
333664                 ELSE null
333665               END                           source_code
333666             , CASE r
333667                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
333668                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
333669                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
333670                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
333671                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
333672                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
333673                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
333674                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
333675                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
333676                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
333677                 
333678                 ELSE null
333679               END                           source_value
333680             , CASE r
333681                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
333682                           1009615
333683                          ,TO_CHAR(l3.COST_ELEMENT_ID)
333684                          ,'COST_ELEMENT_ID'
333685                          ,'S'
333686                          ,707)
333687                 
333688                 ELSE null
333689               END               source_meaning
333690          FROM  xla_events_gt     xet  
333691         , CST_XLA_INV_LINES_V  l3
333692             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
333693         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
333694           AND xet.event_type_code = C_EVENT_TYPE_CODE
333695             AND l3.event_id          = xet.event_id
333696 
333697 )
333698 ;
333699 --
333700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
333701 
333702       trace
333703          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
333704          ,p_level    => C_LEVEL_STATEMENT
333705          ,p_module   => l_log_module);
333706 
333707 END IF;
333708 
333709 
333710 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
333711       trace
333712          (p_msg      => 'END of insert_sources_562'
333713          ,p_level    => C_LEVEL_PROCEDURE
333714          ,p_module   => l_log_module);
333715 END IF;
333716 EXCEPTION
333717   WHEN xla_exceptions_pkg.application_exception THEN
333718       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
333719             trace
333720                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
333721                ,p_level    => C_LEVEL_EXCEPTION
333722                ,p_module   => l_log_module);
333723       END IF;
333724       RAISE;
333725   WHEN OTHERS THEN
333726       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
333727             trace
333728                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
333729                ,p_level    => C_LEVEL_EXCEPTION
333730                ,p_module   => l_log_module);
333731        END IF;
333732        xla_exceptions_pkg.raise_message
333733            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_562');
333734 END insert_sources_562;
333735 --
333736 
333737 ---------------------------------------
333738 --
333739 -- PRIVATE FUNCTION
333740 --         EventType_562
333741 --
333742 ----------------------------------------
333743 --
333744 FUNCTION EventType_562
333745        (p_application_id         IN NUMBER
333746        ,p_base_ledger_id         IN NUMBER
333747        ,p_target_ledger_id       IN NUMBER
333748        ,p_language               IN VARCHAR2
333749        ,p_currency_code          IN VARCHAR2
333750        ,p_sla_ledger_id          IN NUMBER
333751        ,p_pad_start_date         IN DATE
333752        ,p_pad_end_date           IN DATE
333753        ,p_primary_ledger_id      IN NUMBER)
333754 RETURN BOOLEAN IS
333755 --
333756 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
333757 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
333758 
333759 l_calculate_acctd_flag   VARCHAR2(1) :='N';
333760 l_calculate_g_l_flag     VARCHAR2(1) :='N';
333761 --
333762 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333763 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333764 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
333765 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
333766 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333767 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
333768 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
333769 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333770 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
333771 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
333772 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333773 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333774 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333775 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
333776 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
333777 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
333778 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
333779 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
333780 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
333781 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
333782 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
333783 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
333784 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
333785 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
333786 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
333787 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
333788 
333789 l_event_id                             NUMBER;
333790 l_previous_event_id                    NUMBER;
333791 l_first_event_id                       NUMBER;
333792 l_last_event_id                        NUMBER;
333793 
333794 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
333795 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
333796 --
333797 --
333798 l_result                    BOOLEAN := TRUE;
333799 l_rows                      NUMBER  := 1000;
333800 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment, no Transfer Pricing';
333801 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
333802 l_description               VARCHAR2(4000);
333803 l_transaction_reversal      NUMBER;
333804 l_ae_header_id              NUMBER;
333805 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
333806 l_log_module                VARCHAR2(240);
333807 --
333808 l_acct_reversal_source      VARCHAR2(30);
333809 l_trx_reversal_source       VARCHAR2(30);
333810 
333811 l_continue_with_lines       BOOLEAN := TRUE;
333812 --
333813 l_acc_rev_gl_date_source    DATE;                      -- 4262811
333814 --
333815 type t_array_event_id is table of number index by binary_integer;
333816 
333817 l_rec_array_event                    t_rec_array_event;
333818 l_null_rec_array_event               t_rec_array_event;
333819 l_array_ae_header_id                 xla_number_array_type;
333820 l_actual_flag                        VARCHAR2(1) := NULL;
333821 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
333822 l_balance_type_code                  VARCHAR2(1) :=NULL;
333823 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
333824 
333825 --
333826 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
333827 --
333828 
333829 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
333830 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
333831 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
333832 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
333833 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
333834 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_TRANSPO_DIST_ACCT%TYPE INDEX BY BINARY_INTEGER;
333835 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333836 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333837 TYPE t_array_source_36 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PRICE_VAR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333838 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
333839 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333840 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333841 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333842 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333843 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333844 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
333845 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
333846 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
333847 
333848 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
333849 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
333850 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
333851 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
333852 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
333853 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
333854 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
333855 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
333856 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
333857 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
333858 
333859 l_array_source_1              t_array_source_1;
333860 l_array_source_2              t_array_source_2;
333861 l_array_source_3              t_array_source_3;
333862 l_array_source_4              t_array_source_4;
333863 l_array_source_5              t_array_source_5;
333864 l_array_source_32              t_array_source_32;
333865 l_array_source_34              t_array_source_34;
333866 l_array_source_35              t_array_source_35;
333867 l_array_source_36              t_array_source_36;
333868 l_array_source_39              t_array_source_39;
333869 l_array_source_39_meaning      t_array_lookup_meaning;
333870 l_array_source_41              t_array_source_41;
333871 l_array_source_42              t_array_source_42;
333872 l_array_source_43              t_array_source_43;
333873 l_array_source_44              t_array_source_44;
333874 l_array_source_45              t_array_source_45;
333875 l_array_source_46              t_array_source_46;
333876 l_array_source_85              t_array_source_85;
333877 l_array_source_85_meaning      t_array_lookup_meaning;
333878 l_array_source_114              t_array_source_114;
333879 l_array_source_114_meaning      t_array_lookup_meaning;
333880 
333881 l_array_source_11      t_array_source_11;
333882 l_array_source_15      t_array_source_15;
333883 l_array_source_84      t_array_source_84;
333884 l_array_source_88      t_array_source_88;
333885 l_array_source_91      t_array_source_91;
333886 l_array_source_92      t_array_source_92;
333887 l_array_source_93      t_array_source_93;
333888 l_array_source_94      t_array_source_94;
333889 l_array_source_95      t_array_source_95;
333890 l_array_source_97      t_array_source_97;
333891 
333892 --
333893 CURSOR header_cur
333894 IS
333895 SELECT /*+ leading(xet) cardinality(xet,1) */
333896 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_NO_TP
333897 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
333898     xet.entity_id
333899   , xet.legal_entity_id
333900   , xet.entity_code
333901   , xet.transaction_number
333902   , xet.event_id
333903   , xet.event_class_code
333904   , xet.event_type_code
333905   , xet.event_number
333906   , xet.event_date
333907   , xet.transaction_date
333908   , xet.reference_num_1
333909   , xet.reference_num_2
333910   , xet.reference_num_3
333911   , xet.reference_num_4
333912   , xet.reference_char_1
333913   , xet.reference_char_2
333914   , xet.reference_char_3
333915   , xet.reference_char_4
333916   , xet.reference_date_1
333917   , xet.reference_date_2
333918   , xet.reference_date_3
333919   , xet.reference_date_4
333920   , xet.event_created_by
333921   , xet.budgetary_control_flag 
333922   , h2.TRANSACTION_ID    source_1
333923   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
333924   , h5.TRANSACTION_QUANTITY    source_3
333925   , h5.TRANSACTION_UOM    source_4
333926   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
333927   , h5.INV_TXN_TRANSPO_DIST_ACCT    source_32
333928   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
333929   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
333930   , h1.INTERORG_PRICE_VAR_ACCOUNT    source_36
333931   , h4.PRIMARY_COST_METHOD    source_39
333932   , fvl39.meaning   source_39_meaning
333933   , h8.PLA_MATERIAL_ACCOUNT    source_41
333934   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
333935   , h8.PLA_RESOURCE_ACCOUNT    source_43
333936   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
333937   , h8.PLA_OVERHEAD_ACCOUNT    source_45
333938   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
333939   , h2.DISTRIBUTION_TYPE    source_85
333940   , fvl85.meaning   source_85_meaning
333941   , h2.TRANSFER_TO_GL_INDICATOR    source_114
333942   , fvl114.meaning   source_114_meaning
333943   FROM xla_events_gt     xet 
333944   , CST_XLA_INTERORG_PARAMS_REF_V  h1
333945   , CST_XLA_INV_HEADERS_V  h2
333946   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
333947   , CST_XLA_INV_REF_V  h5
333948   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
333949   , CST_XLA_INV_TXN_TYPES_REF_V  h7
333950   , CST_XLA_PLA_CATEGORY_REF_V  h8
333951   , fnd_lookup_values    fvl39
333952   , fnd_lookup_values    fvl85
333953   , fnd_lookup_values    fvl114
333954  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
333955    and xet.event_type_code = C_EVENT_TYPE_CODE
333956    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
333957   AND h1.event_id (+) = h2.event_id
333958  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h6.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
333959 AND h8.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
333960 AND h8.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
333961   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
333962   AND fvl39.view_application_id(+) = 700
333963   AND fvl39.language(+)            = USERENV('LANG')
333964      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
333965   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
333966   AND fvl85.view_application_id(+) = 700
333967   AND fvl85.language(+)            = USERENV('LANG')
333968      AND fvl114.lookup_type(+)         = 'YES_NO'
333969   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
333970   AND fvl114.view_application_id(+) = 0
333971   AND fvl114.language(+)            = USERENV('LANG')
333972   
333973  ORDER BY event_id
333974 ;
333975 
333976 
333977 --
333978 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
333979 IS
333980 SELECT /*+ leading(xet) cardinality(xet,1) */
333981 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_NO_TP
333982 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
333983     xet.entity_id
333984    ,xet.legal_entity_id
333985    ,xet.entity_code
333986    ,xet.transaction_number
333987    ,xet.event_id
333988    ,xet.event_class_code
333989    ,xet.event_type_code
333990    ,xet.event_number
333991    ,xet.event_date
333992    ,xet.transaction_date
333993    ,xet.reference_num_1
333994    ,xet.reference_num_2
333995    ,xet.reference_num_3
333996    ,xet.reference_num_4
333997    ,xet.reference_char_1
333998    ,xet.reference_char_2
333999    ,xet.reference_char_3
334000    ,xet.reference_char_4
334001    ,xet.reference_date_1
334002    ,xet.reference_date_2
334003    ,xet.reference_date_3
334004    ,xet.reference_date_4
334005    ,xet.event_created_by
334006    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
334007   , l3.CODE_COMBINATION_ID    source_11
334008   , l3.COST_ELEMENT_ID    source_15
334009   , l3.DISTRIBUTION_IDENTIFIER    source_84
334010   , l3.CURRENCY_CODE    source_88
334011   , l3.ENTERED_AMOUNT    source_91
334012   , l3.CURRENCY_CONVERSION_DATE    source_92
334013   , l3.CURRENCY_CONVERSION_RATE    source_93
334014   , l3.CURRENCY_CONVERSION_TYPE    source_94
334015   , l3.ACCOUNTED_AMOUNT    source_95
334016   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
334017   FROM xla_events_gt     xet 
334018   , CST_XLA_INV_LINES_V  l3
334019  WHERE xet.event_id between x_first_event_id and x_last_event_id
334020    and xet.event_date between p_pad_start_date and p_pad_end_date
334021    and xet.event_type_code = C_EVENT_TYPE_CODE
334022    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
334023 ;
334024 
334025 --
334026 BEGIN
334027 IF g_log_enabled THEN
334028    l_log_module := C_DEFAULT_MODULE||'.EventType_562';
334029 END IF;
334030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
334031    trace
334032       (p_msg      => 'BEGIN of EventType_562'
334033       ,p_level    => C_LEVEL_PROCEDURE
334034       ,p_module   => l_log_module);
334035 END IF;
334036 
334037 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
334038    trace
334039       (p_msg      => 'p_application_id = '||p_application_id||
334040                      ' - p_base_ledger_id = '||p_base_ledger_id||
334041                      ' - p_target_ledger_id  = '||p_target_ledger_id||
334042                      ' - p_language = '||p_language||
334043                      ' - p_currency_code = '||p_currency_code||
334044                      ' - p_sla_ledger_id = '||p_sla_ledger_id
334045       ,p_level    => C_LEVEL_STATEMENT
334046       ,p_module   => l_log_module);
334047 END IF;
334048 --
334049 -- initialze arrays
334050 --
334051 g_array_event.DELETE;
334052 l_rec_array_event := l_null_rec_array_event;
334053 --
334054 --------------------------------------
334055 -- 4262811 Initialze MPA Line Number
334056 --------------------------------------
334057 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
334058 
334059 --
334060 
334061 --
334062 OPEN header_cur;
334063 --
334064 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
334065    trace
334066    (p_msg      => 'SQL - FETCH header_cur'
334067    ,p_level    => C_LEVEL_STATEMENT
334068    ,p_module   => l_log_module);
334069 END IF;
334070 --
334071 LOOP
334072 FETCH header_cur BULK COLLECT INTO
334073         l_array_entity_id
334074       , l_array_legal_entity_id
334075       , l_array_entity_code
334076       , l_array_transaction_num
334077       , l_array_event_id
334078       , l_array_class_code
334079       , l_array_event_type
334080       , l_array_event_number
334081       , l_array_event_date
334082       , l_array_transaction_date
334083       , l_array_reference_num_1
334084       , l_array_reference_num_2
334085       , l_array_reference_num_3
334086       , l_array_reference_num_4
334087       , l_array_reference_char_1
334088       , l_array_reference_char_2
334089       , l_array_reference_char_3
334090       , l_array_reference_char_4
334091       , l_array_reference_date_1
334092       , l_array_reference_date_2
334093       , l_array_reference_date_3
334094       , l_array_reference_date_4
334095       , l_array_event_created_by
334096       , l_array_budgetary_control_flag 
334097       , l_array_source_1
334098       , l_array_source_2
334099       , l_array_source_3
334100       , l_array_source_4
334101       , l_array_source_5
334102       , l_array_source_32
334103       , l_array_source_34
334104       , l_array_source_35
334105       , l_array_source_36
334106       , l_array_source_39
334107       , l_array_source_39_meaning
334108       , l_array_source_41
334109       , l_array_source_42
334110       , l_array_source_43
334111       , l_array_source_44
334112       , l_array_source_45
334113       , l_array_source_46
334114       , l_array_source_85
334115       , l_array_source_85_meaning
334116       , l_array_source_114
334117       , l_array_source_114_meaning
334118       LIMIT l_rows;
334119 --
334120 IF (C_LEVEL_EVENT >= g_log_level) THEN
334121    trace
334122    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
334123    ,p_level    => C_LEVEL_EVENT
334124    ,p_module   => l_log_module);
334125 END IF;
334126 --
334127 EXIT WHEN l_array_entity_id.COUNT = 0;
334128 
334129 -- initialize arrays
334130 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
334131 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
334132 
334133 --
334134 -- Bug 4458708
334135 --
334136 XLA_AE_LINES_PKG.g_LineNumber := 0;
334137 
334138 
334139 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
334140 g_last_hdr_idx := l_array_event_id.LAST;
334141 --
334142 -- loop for the headers. Each iteration is for each header extract row
334143 -- fetched in header cursor
334144 --
334145 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
334146 
334147 --
334148 -- set event info as cache for other routines to refer event attributes
334149 --
334150 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
334151    (p_application_id           => p_application_id
334152    ,p_primary_ledger_id        => p_primary_ledger_id
334153    ,p_base_ledger_id           => p_base_ledger_id
334154    ,p_target_ledger_id         => p_target_ledger_id
334155    ,p_entity_id                => l_array_entity_id(hdr_idx)
334156    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
334157    ,p_entity_code              => l_array_entity_code(hdr_idx)
334158    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
334159    ,p_event_id                 => l_array_event_id(hdr_idx)
334160    ,p_event_class_code         => l_array_class_code(hdr_idx)
334161    ,p_event_type_code          => l_array_event_type(hdr_idx)
334162    ,p_event_number             => l_array_event_number(hdr_idx)
334163    ,p_event_date               => l_array_event_date(hdr_idx)
334164    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
334165    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
334166    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
334167    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
334168    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
334169    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
334170    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
334171    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
334172    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
334173    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
334174    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
334175    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
334176    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
334177    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
334178    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
334179 
334180 --
334181 -- set the status of entry to C_VALID (0)
334182 --
334183 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
334184 
334185 --
334186 -- initialize a row for ae header
334187 --
334188 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
334189 
334190 l_event_id := l_array_event_id(hdr_idx);
334191 
334192 --
334193 -- storing the hdr_idx for event. May be used by line cursor.
334194 --
334195 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
334196 
334197 --
334198 -- store sources from header extract. This can be improved to
334199 -- store only those sources from header extract that may be used in lines
334200 --
334201 
334202 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
334203 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
334204 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
334205 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
334206 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
334207 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
334208 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
334209 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
334210 g_array_event(l_event_id).array_value_num('source_36') := l_array_source_36(hdr_idx);
334211 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
334212 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
334213 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
334214 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
334215 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
334216 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
334217 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
334218 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
334219 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
334220 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
334221 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
334222 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
334223 
334224 --
334225 -- initilaize the status of ae headers for diffrent balance types
334226 -- the status is initialised to C_NOT_CREATED (2)
334227 --
334228 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
334229 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
334230 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
334231 
334232 --
334233 -- call api to validate and store accounting attributes for header
334234 --
334235 
334236 ------------------------------------------------------------
334237 -- Accrual Reversal : to get date for Standard Source (NONE)
334238 ------------------------------------------------------------
334239 l_acc_rev_gl_date_source := NULL;
334240 
334241      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
334242       l_rec_acct_attrs.array_date_value(1) := 
334243 xla_ae_sources_pkg.GetSystemSourceDate(
334244    p_source_code           => 'XLA_REFERENCE_DATE_1'
334245  , p_source_type_code      => 'Y'
334246  , p_source_application_id =>  602
334247 );
334248      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
334249       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
334250 
334251 
334252 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
334253 
334254 XLA_AE_HEADER_PKG.SetJeCategoryName;
334255 
334256 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
334257 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
334258 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
334259 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
334260 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
334261 
334262 
334263 --
334264 xla_ae_header_pkg.SetHdrDescription(
334265    p_description => Description_1 (
334266    p_application_id => p_application_id 
334267  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334268  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334269  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334270  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334271  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334272    )
334273 );
334274 --
334275 
334276 -- No header level analytical criteria
334277 
334278 --
334279 --accounting attribute enhancement, bug 3612931
334280 --
334281 l_trx_reversal_source := SUBSTR(NULL, 1,30);
334282 
334283 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
334284    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
334285 
334286    xla_accounting_err_pkg.build_message
334287       (p_appli_s_name            => 'XLA'
334288       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
334289       ,p_token_1                 => 'ACCT_ATTR_NAME'
334290       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
334291       ,p_token_2                 => 'PRODUCT_NAME'
334292       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
334293       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
334294       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
334295       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
334296 
334297 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
334298    --
334299    -- following sets the accounting attributes needed to reverse
334300    -- accounting for a distributeion
334301    --
334302    xla_ae_lines_pkg.SetTrxReversalAttrs
334303       (p_event_id              => l_event_id
334304       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
334305       ,p_trx_reversal_source   => l_trx_reversal_source);
334306 
334307 END IF;
334308 
334309 
334310 ----------------------------------------------------------------
334311 -- 4262811 -  update the header statuses to invalid in need be
334312 ----------------------------------------------------------------
334313 --
334314 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
334315 
334316 
334317   -----------------------------------------------
334318   -- No accrual reversal for the event class/type
334319   -----------------------------------------------
334320 ----------------------------------------------------------------
334321 
334322 --
334323 -- this ends the header loop iteration for one bulk fetch
334324 --
334325 END LOOP;
334326 
334327 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
334328 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
334329 
334330 --
334331 -- insert dummy rows into lines gt table that were created due to
334332 -- transaction reversals
334333 --
334334 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
334335    l_result := XLA_AE_LINES_PKG.InsertLines;
334336 END IF;
334337 
334338 --
334339 -- reset the temp_line_num for each set of events fetched from header
334340 -- cursor rather than doing it for each new event in line cursor
334341 -- Bug 3939231
334342 --
334343 xla_ae_lines_pkg.g_temp_line_num := 0;
334344 
334345 
334346 
334347 --
334348 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
334349 --
334350 --
334351 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
334352 
334353       trace
334354          (p_msg      => 'SQL - FETCH line_cur'
334355          ,p_level    => C_LEVEL_STATEMENT
334356          ,p_module   => l_log_module);
334357 
334358 END IF;
334359 --
334360 --
334361 LOOP
334362   --
334363   FETCH line_cur BULK COLLECT INTO
334364         l_array_entity_id
334365       , l_array_legal_entity_id
334366       , l_array_entity_code
334367       , l_array_transaction_num
334368       , l_array_event_id
334369       , l_array_class_code
334370       , l_array_event_type
334371       , l_array_event_number
334372       , l_array_event_date
334373       , l_array_transaction_date
334374       , l_array_reference_num_1
334375       , l_array_reference_num_2
334376       , l_array_reference_num_3
334377       , l_array_reference_num_4
334378       , l_array_reference_char_1
334379       , l_array_reference_char_2
334380       , l_array_reference_char_3
334381       , l_array_reference_char_4
334382       , l_array_reference_date_1
334383       , l_array_reference_date_2
334384       , l_array_reference_date_3
334385       , l_array_reference_date_4
334386       , l_array_event_created_by
334387       , l_array_budgetary_control_flag
334388       , l_array_extract_line_num 
334389       , l_array_source_11
334390       , l_array_source_15
334391       , l_array_source_84
334392       , l_array_source_88
334393       , l_array_source_91
334394       , l_array_source_92
334395       , l_array_source_93
334396       , l_array_source_94
334397       , l_array_source_95
334398       , l_array_source_97
334399       LIMIT l_rows;
334400 
334401   --
334402   IF (C_LEVEL_EVENT >= g_log_level) THEN
334403             trace
334404                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
334405                ,p_level    => C_LEVEL_EVENT
334406                ,p_module   => l_log_module);
334407   END IF;
334408   --
334409   EXIT WHEN l_array_entity_id.count = 0;
334410 
334411   XLA_AE_LINES_PKG.g_rec_lines := null;
334412 
334413 --
334414 -- Bug 4458708
334415 --
334416 XLA_AE_LINES_PKG.g_LineNumber := 0;
334417 --
334418 --
334419 
334420 FOR Idx IN 1..l_array_event_id.count LOOP
334421    --
334422    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
334423    --
334424    l_event_id := l_array_event_id(idx);  -- 5648433
334425 
334426    --
334427    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
334428    --
334429 
334430    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
334431              (g_array_event(l_event_id).array_value_num('header_index'))
334432          ,'N'
334433          ) <> 'Y'
334434    THEN
334435       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
334436          trace
334437             (p_msg      => 'Trancaction revesal option is not Y '
334438             ,p_level    => C_LEVEL_STATEMENT
334439             ,p_module   => l_log_module);
334440       END IF;
334441 
334442 --
334443 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
334444 --
334445 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
334446 --
334447 -- set event info as cache for other routines to refer event attributes
334448 --
334449 
334450 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
334451    l_previous_event_id := l_event_id;
334452 
334453    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
334454       (p_application_id           => p_application_id
334455       ,p_primary_ledger_id        => p_primary_ledger_id
334456       ,p_base_ledger_id           => p_base_ledger_id
334457       ,p_target_ledger_id         => p_target_ledger_id
334458       ,p_entity_id                => l_array_entity_id(Idx)
334459       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
334460       ,p_entity_code              => l_array_entity_code(Idx)
334461       ,p_transaction_num          => l_array_transaction_num(Idx)
334462       ,p_event_id                 => l_array_event_id(Idx)
334463       ,p_event_class_code         => l_array_class_code(Idx)
334464       ,p_event_type_code          => l_array_event_type(Idx)
334465       ,p_event_number             => l_array_event_number(Idx)
334466       ,p_event_date               => l_array_event_date(Idx)
334467       ,p_transaction_date         => l_array_transaction_date(Idx)
334468       ,p_reference_num_1          => l_array_reference_num_1(Idx)
334469       ,p_reference_num_2          => l_array_reference_num_2(Idx)
334470       ,p_reference_num_3          => l_array_reference_num_3(Idx)
334471       ,p_reference_num_4          => l_array_reference_num_4(Idx)
334472       ,p_reference_char_1         => l_array_reference_char_1(Idx)
334473       ,p_reference_char_2         => l_array_reference_char_2(Idx)
334474       ,p_reference_char_3         => l_array_reference_char_3(Idx)
334475       ,p_reference_char_4         => l_array_reference_char_4(Idx)
334476       ,p_reference_date_1         => l_array_reference_date_1(Idx)
334477       ,p_reference_date_2         => l_array_reference_date_2(Idx)
334478       ,p_reference_date_3         => l_array_reference_date_3(Idx)
334479       ,p_reference_date_4         => l_array_reference_date_4(Idx)
334480       ,p_event_created_by         => l_array_event_created_by(Idx)
334481       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
334482        --
334483 END IF;
334484 
334485 
334486 
334487 --
334488 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
334489 
334490 l_acct_reversal_source := SUBSTR(NULL, 1,30);
334491 
334492 IF l_continue_with_lines THEN
334493    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
334494       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
334495 
334496       xla_accounting_err_pkg.build_message
334497          (p_appli_s_name            => 'XLA'
334498          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
334499          ,p_token_1                 => 'LINE_NUMBER'
334500          ,p_value_1                 => l_array_extract_line_num(Idx)
334501          ,p_token_2                 => 'PRODUCT_NAME'
334502          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
334503          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
334504          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
334505          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
334506 
334507    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
334508       --
334509       -- following sets the accounting attributes needed to reverse
334510       -- accounting for a distributeion
334511       --
334512 
334513       --
334514       -- 5217187
334515       --
334516       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
334517       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
334518                                        g_array_event(l_event_id).array_value_num('header_index'));
334519       --
334520       --
334521 
334522       -- No reversal code generated
334523 
334524       xla_ae_lines_pkg.SetAcctReversalAttrs
334525          (p_event_id             => l_event_id
334526          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
334527          ,p_calculate_acctd_flag => l_calculate_acctd_flag
334528          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
334529    END IF;
334530 
334531    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
334532        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
334533 
334534 --
334535 AcctLineType_106 (
334536  p_application_id  => p_application_id
334537  ,p_event_id     => l_event_id
334538  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334539  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334540  ,p_actual_flag => l_actual_flag
334541  ,p_balance_type_code => l_balance_type_code
334542  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334543  
334544  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334545  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334546  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334547  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334548  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334549  , p_source_11 => l_array_source_11(Idx)
334550  , p_source_84 => l_array_source_84(Idx)
334551  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334552  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334553  , p_source_88 => l_array_source_88(Idx)
334554  , p_source_91 => l_array_source_91(Idx)
334555  , p_source_92 => l_array_source_92(Idx)
334556  , p_source_93 => l_array_source_93(Idx)
334557  , p_source_94 => l_array_source_94(Idx)
334558  , p_source_95 => l_array_source_95(Idx)
334559  , p_source_97 => l_array_source_97(Idx)
334560  );
334561 If(l_balance_type_code = 'A') THEN
334562   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334563 END IF;
334564 
334565 --
334566 
334567 
334568 --
334569 AcctLineType_130 (
334570  p_application_id  => p_application_id
334571  ,p_event_id     => l_event_id
334572  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334573  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334574  ,p_actual_flag => l_actual_flag
334575  ,p_balance_type_code => l_balance_type_code
334576  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334577  
334578  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334579  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334580  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334581  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334582  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334583  , p_source_11 => l_array_source_11(Idx)
334584  , p_source_84 => l_array_source_84(Idx)
334585  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334586  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334587  , p_source_88 => l_array_source_88(Idx)
334588  , p_source_91 => l_array_source_91(Idx)
334589  , p_source_92 => l_array_source_92(Idx)
334590  , p_source_93 => l_array_source_93(Idx)
334591  , p_source_94 => l_array_source_94(Idx)
334592  , p_source_95 => l_array_source_95(Idx)
334593  , p_source_97 => l_array_source_97(Idx)
334594  );
334595 If(l_balance_type_code = 'A') THEN
334596   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334597 END IF;
334598 
334599 --
334600 
334601 
334602 --
334603 AcctLineType_144 (
334604  p_application_id  => p_application_id
334605  ,p_event_id     => l_event_id
334606  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334607  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334608  ,p_actual_flag => l_actual_flag
334609  ,p_balance_type_code => l_balance_type_code
334610  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334611  
334612  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334613  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334614  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334615  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334616  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334617  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
334618  , p_source_84 => l_array_source_84(Idx)
334619  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334620  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334621  , p_source_88 => l_array_source_88(Idx)
334622  , p_source_91 => l_array_source_91(Idx)
334623  , p_source_92 => l_array_source_92(Idx)
334624  , p_source_93 => l_array_source_93(Idx)
334625  , p_source_94 => l_array_source_94(Idx)
334626  , p_source_95 => l_array_source_95(Idx)
334627  , p_source_97 => l_array_source_97(Idx)
334628  );
334629 If(l_balance_type_code = 'A') THEN
334630   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334631 END IF;
334632 
334633 --
334634 
334635 
334636 --
334637 AcctLineType_164 (
334638  p_application_id  => p_application_id
334639  ,p_event_id     => l_event_id
334640  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334641  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334642  ,p_actual_flag => l_actual_flag
334643  ,p_balance_type_code => l_balance_type_code
334644  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334645  
334646  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334647  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334648  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334649  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334650  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334651  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
334652  , p_source_84 => l_array_source_84(Idx)
334653  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334654  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334655  , p_source_88 => l_array_source_88(Idx)
334656  , p_source_91 => l_array_source_91(Idx)
334657  , p_source_92 => l_array_source_92(Idx)
334658  , p_source_93 => l_array_source_93(Idx)
334659  , p_source_94 => l_array_source_94(Idx)
334660  , p_source_95 => l_array_source_95(Idx)
334661  , p_source_97 => l_array_source_97(Idx)
334662  );
334663 If(l_balance_type_code = 'A') THEN
334664   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334665 END IF;
334666 
334667 --
334668 
334669 
334670 --
334671 AcctLineType_220 (
334672  p_application_id  => p_application_id
334673  ,p_event_id     => l_event_id
334674  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334675  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334676  ,p_actual_flag => l_actual_flag
334677  ,p_balance_type_code => l_balance_type_code
334678  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334679  
334680  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334681  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334682  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334683  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334684  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334685  , p_source_11 => l_array_source_11(Idx)
334686  , p_source_15 => l_array_source_15(Idx)
334687  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
334688  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
334689  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
334690  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
334691  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
334692  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
334693  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
334694  , p_source_84 => l_array_source_84(Idx)
334695  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334696  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334697  , p_source_88 => l_array_source_88(Idx)
334698  , p_source_91 => l_array_source_91(Idx)
334699  , p_source_92 => l_array_source_92(Idx)
334700  , p_source_93 => l_array_source_93(Idx)
334701  , p_source_94 => l_array_source_94(Idx)
334702  , p_source_95 => l_array_source_95(Idx)
334703  , p_source_97 => l_array_source_97(Idx)
334704  );
334705 If(l_balance_type_code = 'A') THEN
334706   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334707 END IF;
334708 
334709 --
334710 
334711 
334712 --
334713 AcctLineType_301 (
334714  p_application_id  => p_application_id
334715  ,p_event_id     => l_event_id
334716  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334717  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334718  ,p_actual_flag => l_actual_flag
334719  ,p_balance_type_code => l_balance_type_code
334720  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334721  
334722  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334723  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334724  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334725  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334726  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334727  , p_source_11 => l_array_source_11(Idx)
334728  , p_source_84 => l_array_source_84(Idx)
334729  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334730  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334731  , p_source_88 => l_array_source_88(Idx)
334732  , p_source_91 => l_array_source_91(Idx)
334733  , p_source_92 => l_array_source_92(Idx)
334734  , p_source_93 => l_array_source_93(Idx)
334735  , p_source_94 => l_array_source_94(Idx)
334736  , p_source_95 => l_array_source_95(Idx)
334737  , p_source_97 => l_array_source_97(Idx)
334738  );
334739 If(l_balance_type_code = 'A') THEN
334740   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334741 END IF;
334742 
334743 --
334744 
334745 
334746 --
334747 AcctLineType_342 (
334748  p_application_id  => p_application_id
334749  ,p_event_id     => l_event_id
334750  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334751  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334752  ,p_actual_flag => l_actual_flag
334753  ,p_balance_type_code => l_balance_type_code
334754  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334755  
334756  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334757  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334758  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334759  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334760  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334761  , p_source_11 => l_array_source_11(Idx)
334762  , p_source_84 => l_array_source_84(Idx)
334763  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334764  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334765  , p_source_88 => l_array_source_88(Idx)
334766  , p_source_91 => l_array_source_91(Idx)
334767  , p_source_92 => l_array_source_92(Idx)
334768  , p_source_93 => l_array_source_93(Idx)
334769  , p_source_94 => l_array_source_94(Idx)
334770  , p_source_95 => l_array_source_95(Idx)
334771  , p_source_97 => l_array_source_97(Idx)
334772  );
334773 If(l_balance_type_code = 'A') THEN
334774   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334775 END IF;
334776 
334777 --
334778 
334779 
334780 --
334781 AcctLineType_418 (
334782  p_application_id  => p_application_id
334783  ,p_event_id     => l_event_id
334784  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334785  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334786  ,p_actual_flag => l_actual_flag
334787  ,p_balance_type_code => l_balance_type_code
334788  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334789  
334790  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334791  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334792  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334793  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334794  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334795  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
334796  , p_source_84 => l_array_source_84(Idx)
334797  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334798  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334799  , p_source_88 => l_array_source_88(Idx)
334800  , p_source_91 => l_array_source_91(Idx)
334801  , p_source_92 => l_array_source_92(Idx)
334802  , p_source_93 => l_array_source_93(Idx)
334803  , p_source_94 => l_array_source_94(Idx)
334804  , p_source_95 => l_array_source_95(Idx)
334805  , p_source_97 => l_array_source_97(Idx)
334806  );
334807 If(l_balance_type_code = 'A') THEN
334808   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334809 END IF;
334810 
334811 --
334812 
334813 
334814 --
334815 AcctLineType_428 (
334816  p_application_id  => p_application_id
334817  ,p_event_id     => l_event_id
334818  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334819  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334820  ,p_actual_flag => l_actual_flag
334821  ,p_balance_type_code => l_balance_type_code
334822  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334823  
334824  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334825  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334826  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334827  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334828  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334829  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
334830  , p_source_84 => l_array_source_84(Idx)
334831  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334832  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334833  , p_source_88 => l_array_source_88(Idx)
334834  , p_source_91 => l_array_source_91(Idx)
334835  , p_source_92 => l_array_source_92(Idx)
334836  , p_source_93 => l_array_source_93(Idx)
334837  , p_source_94 => l_array_source_94(Idx)
334838  , p_source_95 => l_array_source_95(Idx)
334839  , p_source_97 => l_array_source_97(Idx)
334840  );
334841 If(l_balance_type_code = 'A') THEN
334842   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334843 END IF;
334844 
334845 --
334846 
334847 
334848 --
334849 AcctLineType_466 (
334850  p_application_id  => p_application_id
334851  ,p_event_id     => l_event_id
334852  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334853  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334854  ,p_actual_flag => l_actual_flag
334855  ,p_balance_type_code => l_balance_type_code
334856  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334857  
334858  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334859  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334860  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334861  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334862  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334863  , p_source_11 => l_array_source_11(Idx)
334864  , p_source_84 => l_array_source_84(Idx)
334865  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334866  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334867  , p_source_88 => l_array_source_88(Idx)
334868  , p_source_91 => l_array_source_91(Idx)
334869  , p_source_92 => l_array_source_92(Idx)
334870  , p_source_93 => l_array_source_93(Idx)
334871  , p_source_94 => l_array_source_94(Idx)
334872  , p_source_95 => l_array_source_95(Idx)
334873  , p_source_97 => l_array_source_97(Idx)
334874  );
334875 If(l_balance_type_code = 'A') THEN
334876   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334877 END IF;
334878 
334879 --
334880 
334881 
334882 --
334883 AcctLineType_487 (
334884  p_application_id  => p_application_id
334885  ,p_event_id     => l_event_id
334886  ,p_calculate_acctd_flag => l_calculate_acctd_flag
334887  ,p_calculate_g_l_flag => l_calculate_g_l_flag
334888  ,p_actual_flag => l_actual_flag
334889  ,p_balance_type_code => l_balance_type_code
334890  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
334891  
334892  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
334893  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
334894  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
334895  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
334896  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
334897  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
334898  , p_source_84 => l_array_source_84(Idx)
334899  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
334900  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
334901  , p_source_88 => l_array_source_88(Idx)
334902  , p_source_91 => l_array_source_91(Idx)
334903  , p_source_92 => l_array_source_92(Idx)
334904  , p_source_93 => l_array_source_93(Idx)
334905  , p_source_94 => l_array_source_94(Idx)
334906  , p_source_95 => l_array_source_95(Idx)
334907  , p_source_97 => l_array_source_97(Idx)
334908  );
334909 If(l_balance_type_code = 'A') THEN
334910   l_actual_gain_loss_ref := l_gain_or_loss_ref;
334911 END IF;
334912 
334913 --
334914 
334915       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
334916       -- or secondary ledger that has different currency with primary
334917       -- or alc that is calculated by sla
334918       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
334919             (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'))
334920 
334921 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
334922 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
334923           AND (l_actual_flag = 'A')) THEN
334924         XLA_AE_LINES_PKG.CreateGainOrLossLines(
334925           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
334926          ,p_application_id   => p_application_id
334927          ,p_amb_context_code => 'DEFAULT'
334928          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
334929          ,p_event_class_code => C_EVENT_CLASS_CODE
334930          ,p_event_type_code  => C_EVENT_TYPE_CODE
334931          
334932          ,p_gain_ccid        => -1
334933          ,p_loss_ccid        => -1
334934 
334935          ,p_actual_flag      => l_actual_flag
334936          ,p_enc_flag         => null
334937          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
334938          ,p_enc_g_l_ref      => null
334939          );
334940       END IF;
334941    END IF;
334942 END IF;
334943 
334944    ELSE
334945       --
334946       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
334947       --
334948       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
334949          trace
334950             (p_msg      => 'Trancaction revesal option is Y'
334951             ,p_level    => C_LEVEL_STATEMENT
334952             ,p_module   => l_log_module);
334953       END IF;
334954    END IF;
334955 
334956 END LOOP;
334957 l_result := XLA_AE_LINES_PKG.InsertLines ;
334958 end loop;
334959 close line_cur;
334960 
334961 
334962 --
334963 -- insert headers into xla_ae_headers_gt table
334964 --
334965 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
334966 
334967 -- insert into errors table here.
334968 
334969 END LOOP;
334970 
334971 --
334972 -- 4865292
334973 --
334974 -- Compare g_hdr_extract_count with event count in
334975 -- CreateHeadersAndLines.
334976 --
334977 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
334978 
334979 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
334980    trace (p_msg     => '# rows extracted from header extract objects '
334981                     || ' (running total): '
334982                     || g_hdr_extract_count
334983          ,p_level   => C_LEVEL_STATEMENT
334984          ,p_module  => l_log_module);
334985 END IF;
334986 
334987 CLOSE header_cur;
334988 --
334989 
334990 --
334991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
334992    trace
334993       (p_msg      => 'END of EventType_562'
334994       ,p_level    => C_LEVEL_PROCEDURE
334995       ,p_module   => l_log_module);
334996 END IF;
334997 --
334998 RETURN l_result;
334999 EXCEPTION
335000 WHEN xla_exceptions_pkg.application_exception THEN
335001    
335002 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
335003 
335004    
335005 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
335006 
335007    RAISE;
335008 
335009 WHEN NO_DATA_FOUND THEN
335010 
335011 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
335012 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
335013 
335014 FOR header_record IN header_cur
335015 LOOP
335016     l_array_header_events(header_record.event_id) := header_record.event_id;
335017 END LOOP;
335018 
335019 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
335020 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
335021 
335022 fnd_file.put_line(fnd_file.LOG, '                    ');
335023 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
335024 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
335025 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
335026 
335027 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
335028 LOOP
335029 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
335030 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
335031         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
335032 	END IF;
335033 END LOOP;
335034 
335035 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
335036 fnd_file.put_line(fnd_file.LOG, '                    ');
335037 
335038 
335039 xla_exceptions_pkg.raise_message
335040       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_562');
335041 
335042 
335043 WHEN OTHERS THEN
335044    xla_exceptions_pkg.raise_message
335045       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_562');
335046 END EventType_562;
335047 --
335048 
335049 ---------------------------------------
335050 --
335051 -- PRIVATE PROCEDURE
335052 --         insert_sources_563
335053 --
335054 ----------------------------------------
335055 --
335056 PROCEDURE insert_sources_563(
335057                                 p_target_ledger_id       IN NUMBER
335058                               , p_language               IN VARCHAR2
335059                               , p_sla_ledger_id          IN NUMBER
335060                               , p_pad_start_date         IN DATE
335061                               , p_pad_end_date           IN DATE
335062                          )
335063 IS
335064 
335065 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_TP';
335066 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
335067 p_apps_owner                   VARCHAR2(30);
335068 l_log_module                   VARCHAR2(240);
335069 BEGIN
335070 IF g_log_enabled THEN
335071       l_log_module := C_DEFAULT_MODULE||'.insert_sources_563';
335072 END IF;
335073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
335074 
335075       trace
335076          (p_msg      => 'BEGIN of insert_sources_563'
335077          ,p_level    => C_LEVEL_PROCEDURE
335078          ,p_module   => l_log_module);
335079 
335080 END IF;
335081 
335082 -- select APPS owner
335083 SELECT oracle_username
335084   INTO p_apps_owner
335085   FROM fnd_oracle_userid
335086  WHERE read_only_flag = 'U'
335087 ;
335088 
335089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
335090       trace
335091          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
335092                         ' - p_language = '||p_language||
335093                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
335094                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
335095                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
335096                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
335097          ,p_level    => C_LEVEL_STATEMENT
335098          ,p_module   => l_log_module);
335099 END IF;
335100 
335101 
335102 --
335103 INSERT INTO xla_diag_sources --hdr1
335104 (
335105         event_id
335106       , ledger_id
335107       , sla_ledger_id
335108       , description_language
335109       , object_name
335110       , object_type_code
335111       , line_number
335112       , source_application_id
335113       , source_type_code
335114       , source_code
335115       , source_value
335116       , source_meaning
335117       , created_by
335118       , creation_date
335119       , last_update_date
335120       , last_updated_by
335121       , last_update_login
335122       , program_update_date
335123       , program_application_id
335124       , program_id
335125       , request_id
335126 )
335127 SELECT
335128         event_id
335129       , p_target_ledger_id
335130       , p_sla_ledger_id
335131       , p_language
335132       , object_name
335133       , object_type_code
335134       , line_number
335135       , source_application_id
335136       , source_type_code
335137       , source_code
335138       , SUBSTR(source_value ,1,1996)
335139       , SUBSTR(source_meaning,1,200)
335140       , xla_environment_pkg.g_Usr_Id
335141       , TRUNC(SYSDATE)
335142       , TRUNC(SYSDATE)
335143       , xla_environment_pkg.g_Usr_Id
335144       , xla_environment_pkg.g_Login_Id
335145       , TRUNC(SYSDATE)
335146       , xla_environment_pkg.g_Prog_Appl_Id
335147       , xla_environment_pkg.g_Prog_Id
335148       , xla_environment_pkg.g_Req_Id
335149   FROM (
335150        SELECT xet.event_id                  event_id
335151             , 0                             line_number
335152             , CASE r
335153                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
335154                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
335155                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
335156                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
335157                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
335158                 WHEN 6 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
335159                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
335160                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
335161                 WHEN 9 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
335162                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
335163                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
335164                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
335165                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
335166                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
335167                 WHEN 15 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
335168                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
335169                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
335170                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
335171                 
335172                ELSE null
335173               END                           object_name
335174             , CASE r
335175                 WHEN 1 THEN 'HEADER' 
335176                 WHEN 2 THEN 'HEADER' 
335177                 WHEN 3 THEN 'HEADER' 
335178                 WHEN 4 THEN 'HEADER' 
335179                 WHEN 5 THEN 'HEADER' 
335180                 WHEN 6 THEN 'HEADER' 
335181                 WHEN 7 THEN 'HEADER' 
335182                 WHEN 8 THEN 'HEADER' 
335183                 WHEN 9 THEN 'HEADER' 
335184                 WHEN 10 THEN 'HEADER' 
335185                 WHEN 11 THEN 'HEADER' 
335186                 WHEN 12 THEN 'HEADER' 
335187                 WHEN 13 THEN 'HEADER' 
335188                 WHEN 14 THEN 'HEADER' 
335189                 WHEN 15 THEN 'HEADER' 
335190                 WHEN 16 THEN 'HEADER' 
335191                 WHEN 17 THEN 'HEADER' 
335192                 WHEN 18 THEN 'HEADER' 
335193                 
335194                 ELSE null
335195               END                           object_type_code
335196             , CASE r
335197                 WHEN 1 THEN '707' 
335198                 WHEN 2 THEN '707' 
335199                 WHEN 3 THEN '707' 
335200                 WHEN 4 THEN '707' 
335201                 WHEN 5 THEN '707' 
335202                 WHEN 6 THEN '707' 
335203                 WHEN 7 THEN '707' 
335204                 WHEN 8 THEN '707' 
335205                 WHEN 9 THEN '707' 
335206                 WHEN 10 THEN '707' 
335207                 WHEN 11 THEN '707' 
335208                 WHEN 12 THEN '707' 
335209                 WHEN 13 THEN '707' 
335210                 WHEN 14 THEN '707' 
335211                 WHEN 15 THEN '707' 
335212                 WHEN 16 THEN '707' 
335213                 WHEN 17 THEN '707' 
335214                 WHEN 18 THEN '707' 
335215                 
335216                 ELSE null
335217               END                           source_application_id
335218             , 'S'             source_type_code
335219             , CASE r
335220                 WHEN 1 THEN 'TRANSACTION_ID' 
335221                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
335222                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
335223                 WHEN 4 THEN 'TRANSACTION_UOM' 
335224                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
335225                 WHEN 6 THEN 'INTERORG_EXPENSE_ACCOUNT' 
335226                 WHEN 7 THEN 'INTERORG_PRICE_VAR_ACCOUNT' 
335227                 WHEN 8 THEN 'PROFIT_IN_INV_ACCOUNT' 
335228                 WHEN 9 THEN 'PRIMARY_COST_METHOD' 
335229                 WHEN 10 THEN 'PLA_MATERIAL_ACCOUNT' 
335230                 WHEN 11 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
335231                 WHEN 12 THEN 'PLA_RESOURCE_ACCOUNT' 
335232                 WHEN 13 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
335233                 WHEN 14 THEN 'PLA_OVERHEAD_ACCOUNT' 
335234                 WHEN 15 THEN 'INTERORG_BRIDGING_ACCOUNT' 
335235                 WHEN 16 THEN 'INV_TXN_EXPENSE_ACCT' 
335236                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
335237                 WHEN 18 THEN 'TRANSFER_TO_GL_INDICATOR' 
335238                 
335239                 ELSE null
335240               END                           source_code
335241             , CASE r
335242                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
335243                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
335244                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
335245                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
335246                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
335247                 WHEN 6 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
335248                 WHEN 7 THEN TO_CHAR(h1.INTERORG_PRICE_VAR_ACCOUNT)
335249                 WHEN 8 THEN TO_CHAR(h1.PROFIT_IN_INV_ACCOUNT)
335250                 WHEN 9 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
335251                 WHEN 10 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
335252                 WHEN 11 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
335253                 WHEN 12 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
335254                 WHEN 13 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
335255                 WHEN 14 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
335256                 WHEN 15 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
335257                 WHEN 16 THEN TO_CHAR(h5.INV_TXN_EXPENSE_ACCT)
335258                 WHEN 17 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
335259                 WHEN 18 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
335260                 
335261                 ELSE null
335262               END                           source_value
335263             , CASE r
335264                 WHEN 9 THEN fvl39.meaning
335265                 WHEN 17 THEN fvl85.meaning
335266                 WHEN 18 THEN fvl114.meaning
335267                 
335268                 ELSE null
335269               END               source_meaning
335270         FROM xla_events_gt     xet  
335271       , CST_XLA_INTERORG_PARAMS_REF_V  h1
335272       , CST_XLA_INV_HEADERS_V  h2
335273       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
335274       , CST_XLA_INV_REF_V  h5
335275       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
335276       , CST_XLA_INV_TXN_TYPES_REF_V  h7
335277       , CST_XLA_PLA_CATEGORY_REF_V  h8
335278   , fnd_lookup_values    fvl39
335279   , fnd_lookup_values    fvl85
335280   , fnd_lookup_values    fvl114
335281             ,(select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
335282        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
335283          AND xet.event_type_code = C_EVENT_TYPE_CODE
335284             AND h2.event_id = xet.event_id
335285   AND h1.event_id (+) = h2.event_id
335286  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id = h2.inventory_item_id and h6.organization_id = h2.organization_id AND h7.inv_transaction_type_id = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id 
335287 and h8.pla_cat_item_id          (+) = h2.inventory_item_id 
335288 and h8.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
335289   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
335290   AND fvl39.view_application_id(+) = 700
335291   AND fvl39.language(+)            = USERENV('LANG')
335292      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
335293   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
335294   AND fvl85.view_application_id(+) = 700
335295   AND fvl85.language(+)            = USERENV('LANG')
335296      AND fvl114.lookup_type(+)         = 'YES_NO'
335297   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
335298   AND fvl114.view_application_id(+) = 0
335299   AND fvl114.language(+)            = USERENV('LANG')
335300   
335301 )
335302 ;
335303 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
335304 
335305       trace
335306          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
335307          ,p_level    => C_LEVEL_STATEMENT
335308          ,p_module   => l_log_module);
335309 
335310 END IF;
335311 --
335312 
335313 
335314 
335315 --
335316 INSERT INTO xla_diag_sources --line1
335317 (
335318         event_id
335319       , ledger_id
335320       , sla_ledger_id
335321       , description_language
335322       , object_name
335323       , object_type_code
335324       , line_number
335325       , source_application_id
335326       , source_type_code
335327       , source_code
335328       , source_value
335329       , source_meaning
335330       , created_by
335331       , creation_date
335332       , last_update_date
335333       , last_updated_by
335334       , last_update_login
335335       , program_update_date
335336       , program_application_id
335337       , program_id
335338       , request_id
335339 )
335340 SELECT  event_id
335341       , p_target_ledger_id
335342       , p_sla_ledger_id
335343       , p_language
335344       , object_name
335345       , object_type_code
335346       , line_number
335347       , source_application_id
335348       , source_type_code
335349       , source_code
335350       , SUBSTR(source_value,1,1996)
335351       , SUBSTR(source_meaning,1,200)
335352       , xla_environment_pkg.g_Usr_Id
335353       , TRUNC(SYSDATE)
335354       , TRUNC(SYSDATE)
335355       , xla_environment_pkg.g_Usr_Id
335356       , xla_environment_pkg.g_Login_Id
335357       , TRUNC(SYSDATE)
335358       , xla_environment_pkg.g_Prog_Appl_Id
335359       , xla_environment_pkg.g_Prog_Id
335360       , xla_environment_pkg.g_Req_Id
335361   FROM (
335362        SELECT xet.event_id                  event_id
335363             , l3.line_number                 line_number
335364             , CASE r
335365                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
335366                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
335367                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
335368                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
335369                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
335370                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
335371                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
335372                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
335373                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
335374                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
335375                 
335376                ELSE null
335377               END                           object_name
335378             , CASE r
335379                 WHEN 1 THEN 'LINE' 
335380                 WHEN 2 THEN 'LINE' 
335381                 WHEN 3 THEN 'LINE' 
335382                 WHEN 4 THEN 'LINE' 
335383                 WHEN 5 THEN 'LINE' 
335384                 WHEN 6 THEN 'LINE' 
335385                 WHEN 7 THEN 'LINE' 
335386                 WHEN 8 THEN 'LINE' 
335387                 WHEN 9 THEN 'LINE' 
335388                 WHEN 10 THEN 'LINE' 
335389                 
335390                 ELSE null
335391               END                           object_type_code
335392             , CASE r
335393                 WHEN 1 THEN '707' 
335394                 WHEN 2 THEN '707' 
335395                 WHEN 3 THEN '707' 
335396                 WHEN 4 THEN '707' 
335397                 WHEN 5 THEN '707' 
335398                 WHEN 6 THEN '707' 
335399                 WHEN 7 THEN '707' 
335400                 WHEN 8 THEN '707' 
335401                 WHEN 9 THEN '707' 
335402                 WHEN 10 THEN '707' 
335403                 
335404                 ELSE null
335405               END                           source_application_id
335406             , 'S'             source_type_code
335407             , CASE r
335408                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
335409                 WHEN 2 THEN 'COST_ELEMENT_ID' 
335410                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
335411                 WHEN 4 THEN 'CURRENCY_CODE' 
335412                 WHEN 5 THEN 'ENTERED_AMOUNT' 
335413                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
335414                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
335415                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
335416                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
335417                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
335418                 
335419                 ELSE null
335420               END                           source_code
335421             , CASE r
335422                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
335423                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
335424                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
335425                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
335426                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
335427                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
335428                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
335429                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
335430                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
335431                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
335432                 
335433                 ELSE null
335434               END                           source_value
335435             , CASE r
335436                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
335437                           1009615
335438                          ,TO_CHAR(l3.COST_ELEMENT_ID)
335439                          ,'COST_ELEMENT_ID'
335440                          ,'S'
335441                          ,707)
335442                 
335443                 ELSE null
335444               END               source_meaning
335445          FROM  xla_events_gt     xet  
335446         , CST_XLA_INV_LINES_V  l3
335447             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
335448         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
335449           AND xet.event_type_code = C_EVENT_TYPE_CODE
335450             AND l3.event_id          = xet.event_id
335451 
335452 )
335453 ;
335454 --
335455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
335456 
335457       trace
335458          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
335459          ,p_level    => C_LEVEL_STATEMENT
335460          ,p_module   => l_log_module);
335461 
335462 END IF;
335463 
335464 
335465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
335466       trace
335467          (p_msg      => 'END of insert_sources_563'
335468          ,p_level    => C_LEVEL_PROCEDURE
335469          ,p_module   => l_log_module);
335470 END IF;
335471 EXCEPTION
335472   WHEN xla_exceptions_pkg.application_exception THEN
335473       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
335474             trace
335475                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
335476                ,p_level    => C_LEVEL_EXCEPTION
335477                ,p_module   => l_log_module);
335478       END IF;
335479       RAISE;
335480   WHEN OTHERS THEN
335481       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
335482             trace
335483                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
335484                ,p_level    => C_LEVEL_EXCEPTION
335485                ,p_module   => l_log_module);
335486        END IF;
335487        xla_exceptions_pkg.raise_message
335488            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_563');
335489 END insert_sources_563;
335490 --
335491 
335492 ---------------------------------------
335493 --
335494 -- PRIVATE FUNCTION
335495 --         EventType_563
335496 --
335497 ----------------------------------------
335498 --
335499 FUNCTION EventType_563
335500        (p_application_id         IN NUMBER
335501        ,p_base_ledger_id         IN NUMBER
335502        ,p_target_ledger_id       IN NUMBER
335503        ,p_language               IN VARCHAR2
335504        ,p_currency_code          IN VARCHAR2
335505        ,p_sla_ledger_id          IN NUMBER
335506        ,p_pad_start_date         IN DATE
335507        ,p_pad_end_date           IN DATE
335508        ,p_primary_ledger_id      IN NUMBER)
335509 RETURN BOOLEAN IS
335510 --
335511 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_RECIPIENT_SHIP_TP';
335512 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
335513 
335514 l_calculate_acctd_flag   VARCHAR2(1) :='N';
335515 l_calculate_g_l_flag     VARCHAR2(1) :='N';
335516 --
335517 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335518 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335519 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
335520 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
335521 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335522 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
335523 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
335524 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335525 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
335526 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
335527 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335528 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335529 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335530 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
335531 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
335532 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
335533 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
335534 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
335535 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
335536 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
335537 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
335538 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
335539 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
335540 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
335541 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
335542 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
335543 
335544 l_event_id                             NUMBER;
335545 l_previous_event_id                    NUMBER;
335546 l_first_event_id                       NUMBER;
335547 l_last_event_id                        NUMBER;
335548 
335549 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
335550 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
335551 --
335552 --
335553 l_result                    BOOLEAN := TRUE;
335554 l_rows                      NUMBER  := 1000;
335555 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment, Transfer Pricing';
335556 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
335557 l_description               VARCHAR2(4000);
335558 l_transaction_reversal      NUMBER;
335559 l_ae_header_id              NUMBER;
335560 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
335561 l_log_module                VARCHAR2(240);
335562 --
335563 l_acct_reversal_source      VARCHAR2(30);
335564 l_trx_reversal_source       VARCHAR2(30);
335565 
335566 l_continue_with_lines       BOOLEAN := TRUE;
335567 --
335568 l_acc_rev_gl_date_source    DATE;                      -- 4262811
335569 --
335570 type t_array_event_id is table of number index by binary_integer;
335571 
335572 l_rec_array_event                    t_rec_array_event;
335573 l_null_rec_array_event               t_rec_array_event;
335574 l_array_ae_header_id                 xla_number_array_type;
335575 l_actual_flag                        VARCHAR2(1) := NULL;
335576 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
335577 l_balance_type_code                  VARCHAR2(1) :=NULL;
335578 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
335579 
335580 --
335581 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
335582 --
335583 
335584 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
335585 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
335586 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
335587 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
335588 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
335589 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335590 TYPE t_array_source_36 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PRICE_VAR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335591 TYPE t_array_source_37 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.PROFIT_IN_INV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335592 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
335593 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335594 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335595 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335596 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335597 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335598 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
335599 TYPE t_array_source_60 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
335600 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
335601 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
335602 
335603 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
335604 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
335605 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
335606 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
335607 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
335608 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
335609 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
335610 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
335611 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
335612 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
335613 
335614 l_array_source_1              t_array_source_1;
335615 l_array_source_2              t_array_source_2;
335616 l_array_source_3              t_array_source_3;
335617 l_array_source_4              t_array_source_4;
335618 l_array_source_5              t_array_source_5;
335619 l_array_source_34              t_array_source_34;
335620 l_array_source_36              t_array_source_36;
335621 l_array_source_37              t_array_source_37;
335622 l_array_source_39              t_array_source_39;
335623 l_array_source_39_meaning      t_array_lookup_meaning;
335624 l_array_source_41              t_array_source_41;
335625 l_array_source_42              t_array_source_42;
335626 l_array_source_43              t_array_source_43;
335627 l_array_source_44              t_array_source_44;
335628 l_array_source_45              t_array_source_45;
335629 l_array_source_46              t_array_source_46;
335630 l_array_source_60              t_array_source_60;
335631 l_array_source_85              t_array_source_85;
335632 l_array_source_85_meaning      t_array_lookup_meaning;
335633 l_array_source_114              t_array_source_114;
335634 l_array_source_114_meaning      t_array_lookup_meaning;
335635 
335636 l_array_source_11      t_array_source_11;
335637 l_array_source_15      t_array_source_15;
335638 l_array_source_84      t_array_source_84;
335639 l_array_source_88      t_array_source_88;
335640 l_array_source_91      t_array_source_91;
335641 l_array_source_92      t_array_source_92;
335642 l_array_source_93      t_array_source_93;
335643 l_array_source_94      t_array_source_94;
335644 l_array_source_95      t_array_source_95;
335645 l_array_source_97      t_array_source_97;
335646 
335647 --
335648 CURSOR header_cur
335649 IS
335650 SELECT /*+ leading(xet) cardinality(xet,1) */
335651 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_TP
335652 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
335653     xet.entity_id
335654   , xet.legal_entity_id
335655   , xet.entity_code
335656   , xet.transaction_number
335657   , xet.event_id
335658   , xet.event_class_code
335659   , xet.event_type_code
335660   , xet.event_number
335661   , xet.event_date
335662   , xet.transaction_date
335663   , xet.reference_num_1
335664   , xet.reference_num_2
335665   , xet.reference_num_3
335666   , xet.reference_num_4
335667   , xet.reference_char_1
335668   , xet.reference_char_2
335669   , xet.reference_char_3
335670   , xet.reference_char_4
335671   , xet.reference_date_1
335672   , xet.reference_date_2
335673   , xet.reference_date_3
335674   , xet.reference_date_4
335675   , xet.event_created_by
335676   , xet.budgetary_control_flag 
335677   , h2.TRANSACTION_ID    source_1
335678   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
335679   , h5.TRANSACTION_QUANTITY    source_3
335680   , h5.TRANSACTION_UOM    source_4
335681   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
335682   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
335683   , h1.INTERORG_PRICE_VAR_ACCOUNT    source_36
335684   , h1.PROFIT_IN_INV_ACCOUNT    source_37
335685   , h4.PRIMARY_COST_METHOD    source_39
335686   , fvl39.meaning   source_39_meaning
335687   , h8.PLA_MATERIAL_ACCOUNT    source_41
335688   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
335689   , h8.PLA_RESOURCE_ACCOUNT    source_43
335690   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
335691   , h8.PLA_OVERHEAD_ACCOUNT    source_45
335692   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
335693   , h5.INV_TXN_EXPENSE_ACCT    source_60
335694   , h2.DISTRIBUTION_TYPE    source_85
335695   , fvl85.meaning   source_85_meaning
335696   , h2.TRANSFER_TO_GL_INDICATOR    source_114
335697   , fvl114.meaning   source_114_meaning
335698   FROM xla_events_gt     xet 
335699   , CST_XLA_INTERORG_PARAMS_REF_V  h1
335700   , CST_XLA_INV_HEADERS_V  h2
335701   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
335702   , CST_XLA_INV_REF_V  h5
335703   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
335704   , CST_XLA_INV_TXN_TYPES_REF_V  h7
335705   , CST_XLA_PLA_CATEGORY_REF_V  h8
335706   , fnd_lookup_values    fvl39
335707   , fnd_lookup_values    fvl85
335708   , fnd_lookup_values    fvl114
335709  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
335710    and xet.event_type_code = C_EVENT_TYPE_CODE
335711    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
335712   AND h1.event_id (+) = h2.event_id
335713  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h6.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
335714 AND h8.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
335715 AND h8.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
335716   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
335717   AND fvl39.view_application_id(+) = 700
335718   AND fvl39.language(+)            = USERENV('LANG')
335719      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
335720   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
335721   AND fvl85.view_application_id(+) = 700
335722   AND fvl85.language(+)            = USERENV('LANG')
335723      AND fvl114.lookup_type(+)         = 'YES_NO'
335724   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
335725   AND fvl114.view_application_id(+) = 0
335726   AND fvl114.language(+)            = USERENV('LANG')
335727   
335728  ORDER BY event_id
335729 ;
335730 
335731 
335732 --
335733 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
335734 IS
335735 SELECT /*+ leading(xet) cardinality(xet,1) */
335736 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_TP
335737 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
335738     xet.entity_id
335739    ,xet.legal_entity_id
335740    ,xet.entity_code
335741    ,xet.transaction_number
335742    ,xet.event_id
335743    ,xet.event_class_code
335744    ,xet.event_type_code
335745    ,xet.event_number
335746    ,xet.event_date
335747    ,xet.transaction_date
335748    ,xet.reference_num_1
335749    ,xet.reference_num_2
335750    ,xet.reference_num_3
335751    ,xet.reference_num_4
335752    ,xet.reference_char_1
335753    ,xet.reference_char_2
335754    ,xet.reference_char_3
335755    ,xet.reference_char_4
335756    ,xet.reference_date_1
335757    ,xet.reference_date_2
335758    ,xet.reference_date_3
335759    ,xet.reference_date_4
335760    ,xet.event_created_by
335761    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
335762   , l3.CODE_COMBINATION_ID    source_11
335763   , l3.COST_ELEMENT_ID    source_15
335764   , l3.DISTRIBUTION_IDENTIFIER    source_84
335765   , l3.CURRENCY_CODE    source_88
335766   , l3.ENTERED_AMOUNT    source_91
335767   , l3.CURRENCY_CONVERSION_DATE    source_92
335768   , l3.CURRENCY_CONVERSION_RATE    source_93
335769   , l3.CURRENCY_CONVERSION_TYPE    source_94
335770   , l3.ACCOUNTED_AMOUNT    source_95
335771   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
335772   FROM xla_events_gt     xet 
335773   , CST_XLA_INV_LINES_V  l3
335774  WHERE xet.event_id between x_first_event_id and x_last_event_id
335775    and xet.event_date between p_pad_start_date and p_pad_end_date
335776    and xet.event_type_code = C_EVENT_TYPE_CODE
335777    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
335778 ;
335779 
335780 --
335781 BEGIN
335782 IF g_log_enabled THEN
335783    l_log_module := C_DEFAULT_MODULE||'.EventType_563';
335784 END IF;
335785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
335786    trace
335787       (p_msg      => 'BEGIN of EventType_563'
335788       ,p_level    => C_LEVEL_PROCEDURE
335789       ,p_module   => l_log_module);
335790 END IF;
335791 
335792 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
335793    trace
335794       (p_msg      => 'p_application_id = '||p_application_id||
335795                      ' - p_base_ledger_id = '||p_base_ledger_id||
335796                      ' - p_target_ledger_id  = '||p_target_ledger_id||
335797                      ' - p_language = '||p_language||
335798                      ' - p_currency_code = '||p_currency_code||
335799                      ' - p_sla_ledger_id = '||p_sla_ledger_id
335800       ,p_level    => C_LEVEL_STATEMENT
335801       ,p_module   => l_log_module);
335802 END IF;
335803 --
335804 -- initialze arrays
335805 --
335806 g_array_event.DELETE;
335807 l_rec_array_event := l_null_rec_array_event;
335808 --
335809 --------------------------------------
335810 -- 4262811 Initialze MPA Line Number
335811 --------------------------------------
335812 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
335813 
335814 --
335815 
335816 --
335817 OPEN header_cur;
335818 --
335819 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
335820    trace
335821    (p_msg      => 'SQL - FETCH header_cur'
335822    ,p_level    => C_LEVEL_STATEMENT
335823    ,p_module   => l_log_module);
335824 END IF;
335825 --
335826 LOOP
335827 FETCH header_cur BULK COLLECT INTO
335828         l_array_entity_id
335829       , l_array_legal_entity_id
335830       , l_array_entity_code
335831       , l_array_transaction_num
335832       , l_array_event_id
335833       , l_array_class_code
335834       , l_array_event_type
335835       , l_array_event_number
335836       , l_array_event_date
335837       , l_array_transaction_date
335838       , l_array_reference_num_1
335839       , l_array_reference_num_2
335840       , l_array_reference_num_3
335841       , l_array_reference_num_4
335842       , l_array_reference_char_1
335843       , l_array_reference_char_2
335844       , l_array_reference_char_3
335845       , l_array_reference_char_4
335846       , l_array_reference_date_1
335847       , l_array_reference_date_2
335848       , l_array_reference_date_3
335849       , l_array_reference_date_4
335850       , l_array_event_created_by
335851       , l_array_budgetary_control_flag 
335852       , l_array_source_1
335853       , l_array_source_2
335854       , l_array_source_3
335855       , l_array_source_4
335856       , l_array_source_5
335857       , l_array_source_34
335858       , l_array_source_36
335859       , l_array_source_37
335860       , l_array_source_39
335861       , l_array_source_39_meaning
335862       , l_array_source_41
335863       , l_array_source_42
335864       , l_array_source_43
335865       , l_array_source_44
335866       , l_array_source_45
335867       , l_array_source_46
335868       , l_array_source_60
335869       , l_array_source_85
335870       , l_array_source_85_meaning
335871       , l_array_source_114
335872       , l_array_source_114_meaning
335873       LIMIT l_rows;
335874 --
335875 IF (C_LEVEL_EVENT >= g_log_level) THEN
335876    trace
335877    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
335878    ,p_level    => C_LEVEL_EVENT
335879    ,p_module   => l_log_module);
335880 END IF;
335881 --
335882 EXIT WHEN l_array_entity_id.COUNT = 0;
335883 
335884 -- initialize arrays
335885 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
335886 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
335887 
335888 --
335889 -- Bug 4458708
335890 --
335891 XLA_AE_LINES_PKG.g_LineNumber := 0;
335892 
335893 
335894 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
335895 g_last_hdr_idx := l_array_event_id.LAST;
335896 --
335897 -- loop for the headers. Each iteration is for each header extract row
335898 -- fetched in header cursor
335899 --
335900 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
335901 
335902 --
335903 -- set event info as cache for other routines to refer event attributes
335904 --
335905 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
335906    (p_application_id           => p_application_id
335907    ,p_primary_ledger_id        => p_primary_ledger_id
335908    ,p_base_ledger_id           => p_base_ledger_id
335909    ,p_target_ledger_id         => p_target_ledger_id
335910    ,p_entity_id                => l_array_entity_id(hdr_idx)
335911    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
335912    ,p_entity_code              => l_array_entity_code(hdr_idx)
335913    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
335914    ,p_event_id                 => l_array_event_id(hdr_idx)
335915    ,p_event_class_code         => l_array_class_code(hdr_idx)
335916    ,p_event_type_code          => l_array_event_type(hdr_idx)
335917    ,p_event_number             => l_array_event_number(hdr_idx)
335918    ,p_event_date               => l_array_event_date(hdr_idx)
335919    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
335920    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
335921    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
335922    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
335923    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
335924    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
335925    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
335926    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
335927    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
335928    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
335929    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
335930    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
335931    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
335932    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
335933    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
335934 
335935 --
335936 -- set the status of entry to C_VALID (0)
335937 --
335938 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
335939 
335940 --
335941 -- initialize a row for ae header
335942 --
335943 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
335944 
335945 l_event_id := l_array_event_id(hdr_idx);
335946 
335947 --
335948 -- storing the hdr_idx for event. May be used by line cursor.
335949 --
335950 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
335951 
335952 --
335953 -- store sources from header extract. This can be improved to
335954 -- store only those sources from header extract that may be used in lines
335955 --
335956 
335957 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
335958 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
335959 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
335960 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
335961 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
335962 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
335963 g_array_event(l_event_id).array_value_num('source_36') := l_array_source_36(hdr_idx);
335964 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
335965 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
335966 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
335967 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
335968 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
335969 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
335970 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
335971 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
335972 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
335973 g_array_event(l_event_id).array_value_num('source_60') := l_array_source_60(hdr_idx);
335974 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
335975 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
335976 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
335977 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
335978 
335979 --
335980 -- initilaize the status of ae headers for diffrent balance types
335981 -- the status is initialised to C_NOT_CREATED (2)
335982 --
335983 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
335984 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
335985 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
335986 
335987 --
335988 -- call api to validate and store accounting attributes for header
335989 --
335990 
335991 ------------------------------------------------------------
335992 -- Accrual Reversal : to get date for Standard Source (NONE)
335993 ------------------------------------------------------------
335994 l_acc_rev_gl_date_source := NULL;
335995 
335996      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
335997       l_rec_acct_attrs.array_date_value(1) := 
335998 xla_ae_sources_pkg.GetSystemSourceDate(
335999    p_source_code           => 'XLA_REFERENCE_DATE_1'
336000  , p_source_type_code      => 'Y'
336001  , p_source_application_id =>  602
336002 );
336003      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
336004       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
336005 
336006 
336007 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
336008 
336009 XLA_AE_HEADER_PKG.SetJeCategoryName;
336010 
336011 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
336012 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
336013 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
336014 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
336015 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
336016 
336017 
336018 --
336019 xla_ae_header_pkg.SetHdrDescription(
336020    p_description => Description_1 (
336021    p_application_id => p_application_id 
336022  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336023  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336024  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336025  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336026  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336027    )
336028 );
336029 --
336030 
336031 -- No header level analytical criteria
336032 
336033 --
336034 --accounting attribute enhancement, bug 3612931
336035 --
336036 l_trx_reversal_source := SUBSTR(NULL, 1,30);
336037 
336038 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
336039    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
336040 
336041    xla_accounting_err_pkg.build_message
336042       (p_appli_s_name            => 'XLA'
336043       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
336044       ,p_token_1                 => 'ACCT_ATTR_NAME'
336045       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
336046       ,p_token_2                 => 'PRODUCT_NAME'
336047       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
336048       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
336049       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
336050       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
336051 
336052 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
336053    --
336054    -- following sets the accounting attributes needed to reverse
336055    -- accounting for a distributeion
336056    --
336057    xla_ae_lines_pkg.SetTrxReversalAttrs
336058       (p_event_id              => l_event_id
336059       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
336060       ,p_trx_reversal_source   => l_trx_reversal_source);
336061 
336062 END IF;
336063 
336064 
336065 ----------------------------------------------------------------
336066 -- 4262811 -  update the header statuses to invalid in need be
336067 ----------------------------------------------------------------
336068 --
336069 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
336070 
336071 
336072   -----------------------------------------------
336073   -- No accrual reversal for the event class/type
336074   -----------------------------------------------
336075 ----------------------------------------------------------------
336076 
336077 --
336078 -- this ends the header loop iteration for one bulk fetch
336079 --
336080 END LOOP;
336081 
336082 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
336083 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
336084 
336085 --
336086 -- insert dummy rows into lines gt table that were created due to
336087 -- transaction reversals
336088 --
336089 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
336090    l_result := XLA_AE_LINES_PKG.InsertLines;
336091 END IF;
336092 
336093 --
336094 -- reset the temp_line_num for each set of events fetched from header
336095 -- cursor rather than doing it for each new event in line cursor
336096 -- Bug 3939231
336097 --
336098 xla_ae_lines_pkg.g_temp_line_num := 0;
336099 
336100 
336101 
336102 --
336103 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
336104 --
336105 --
336106 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
336107 
336108       trace
336109          (p_msg      => 'SQL - FETCH line_cur'
336110          ,p_level    => C_LEVEL_STATEMENT
336111          ,p_module   => l_log_module);
336112 
336113 END IF;
336114 --
336115 --
336116 LOOP
336117   --
336118   FETCH line_cur BULK COLLECT INTO
336119         l_array_entity_id
336120       , l_array_legal_entity_id
336121       , l_array_entity_code
336122       , l_array_transaction_num
336123       , l_array_event_id
336124       , l_array_class_code
336125       , l_array_event_type
336126       , l_array_event_number
336127       , l_array_event_date
336128       , l_array_transaction_date
336129       , l_array_reference_num_1
336130       , l_array_reference_num_2
336131       , l_array_reference_num_3
336132       , l_array_reference_num_4
336133       , l_array_reference_char_1
336134       , l_array_reference_char_2
336135       , l_array_reference_char_3
336136       , l_array_reference_char_4
336137       , l_array_reference_date_1
336138       , l_array_reference_date_2
336139       , l_array_reference_date_3
336140       , l_array_reference_date_4
336141       , l_array_event_created_by
336142       , l_array_budgetary_control_flag
336143       , l_array_extract_line_num 
336144       , l_array_source_11
336145       , l_array_source_15
336146       , l_array_source_84
336147       , l_array_source_88
336148       , l_array_source_91
336149       , l_array_source_92
336150       , l_array_source_93
336151       , l_array_source_94
336152       , l_array_source_95
336153       , l_array_source_97
336154       LIMIT l_rows;
336155 
336156   --
336157   IF (C_LEVEL_EVENT >= g_log_level) THEN
336158             trace
336159                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
336160                ,p_level    => C_LEVEL_EVENT
336161                ,p_module   => l_log_module);
336162   END IF;
336163   --
336164   EXIT WHEN l_array_entity_id.count = 0;
336165 
336166   XLA_AE_LINES_PKG.g_rec_lines := null;
336167 
336168 --
336169 -- Bug 4458708
336170 --
336171 XLA_AE_LINES_PKG.g_LineNumber := 0;
336172 --
336173 --
336174 
336175 FOR Idx IN 1..l_array_event_id.count LOOP
336176    --
336177    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
336178    --
336179    l_event_id := l_array_event_id(idx);  -- 5648433
336180 
336181    --
336182    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
336183    --
336184 
336185    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
336186              (g_array_event(l_event_id).array_value_num('header_index'))
336187          ,'N'
336188          ) <> 'Y'
336189    THEN
336190       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
336191          trace
336192             (p_msg      => 'Trancaction revesal option is not Y '
336193             ,p_level    => C_LEVEL_STATEMENT
336194             ,p_module   => l_log_module);
336195       END IF;
336196 
336197 --
336198 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
336199 --
336200 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
336201 --
336202 -- set event info as cache for other routines to refer event attributes
336203 --
336204 
336205 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
336206    l_previous_event_id := l_event_id;
336207 
336208    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
336209       (p_application_id           => p_application_id
336210       ,p_primary_ledger_id        => p_primary_ledger_id
336211       ,p_base_ledger_id           => p_base_ledger_id
336212       ,p_target_ledger_id         => p_target_ledger_id
336213       ,p_entity_id                => l_array_entity_id(Idx)
336214       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
336215       ,p_entity_code              => l_array_entity_code(Idx)
336216       ,p_transaction_num          => l_array_transaction_num(Idx)
336217       ,p_event_id                 => l_array_event_id(Idx)
336218       ,p_event_class_code         => l_array_class_code(Idx)
336219       ,p_event_type_code          => l_array_event_type(Idx)
336220       ,p_event_number             => l_array_event_number(Idx)
336221       ,p_event_date               => l_array_event_date(Idx)
336222       ,p_transaction_date         => l_array_transaction_date(Idx)
336223       ,p_reference_num_1          => l_array_reference_num_1(Idx)
336224       ,p_reference_num_2          => l_array_reference_num_2(Idx)
336225       ,p_reference_num_3          => l_array_reference_num_3(Idx)
336226       ,p_reference_num_4          => l_array_reference_num_4(Idx)
336227       ,p_reference_char_1         => l_array_reference_char_1(Idx)
336228       ,p_reference_char_2         => l_array_reference_char_2(Idx)
336229       ,p_reference_char_3         => l_array_reference_char_3(Idx)
336230       ,p_reference_char_4         => l_array_reference_char_4(Idx)
336231       ,p_reference_date_1         => l_array_reference_date_1(Idx)
336232       ,p_reference_date_2         => l_array_reference_date_2(Idx)
336233       ,p_reference_date_3         => l_array_reference_date_3(Idx)
336234       ,p_reference_date_4         => l_array_reference_date_4(Idx)
336235       ,p_event_created_by         => l_array_event_created_by(Idx)
336236       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
336237        --
336238 END IF;
336239 
336240 
336241 
336242 --
336243 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
336244 
336245 l_acct_reversal_source := SUBSTR(NULL, 1,30);
336246 
336247 IF l_continue_with_lines THEN
336248    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
336249       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
336250 
336251       xla_accounting_err_pkg.build_message
336252          (p_appli_s_name            => 'XLA'
336253          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
336254          ,p_token_1                 => 'LINE_NUMBER'
336255          ,p_value_1                 => l_array_extract_line_num(Idx)
336256          ,p_token_2                 => 'PRODUCT_NAME'
336257          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
336258          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
336259          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
336260          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
336261 
336262    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
336263       --
336264       -- following sets the accounting attributes needed to reverse
336265       -- accounting for a distributeion
336266       --
336267 
336268       --
336269       -- 5217187
336270       --
336271       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
336272       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
336273                                        g_array_event(l_event_id).array_value_num('header_index'));
336274       --
336275       --
336276 
336277       -- No reversal code generated
336278 
336279       xla_ae_lines_pkg.SetAcctReversalAttrs
336280          (p_event_id             => l_event_id
336281          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
336282          ,p_calculate_acctd_flag => l_calculate_acctd_flag
336283          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
336284    END IF;
336285 
336286    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
336287        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
336288 
336289 --
336290 AcctLineType_87 (
336291  p_application_id  => p_application_id
336292  ,p_event_id     => l_event_id
336293  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336294  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336295  ,p_actual_flag => l_actual_flag
336296  ,p_balance_type_code => l_balance_type_code
336297  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336298  
336299  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336300  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336301  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336302  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336303  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336304  , p_source_11 => l_array_source_11(Idx)
336305  , p_source_84 => l_array_source_84(Idx)
336306  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336307  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336308  , p_source_88 => l_array_source_88(Idx)
336309  , p_source_91 => l_array_source_91(Idx)
336310  , p_source_92 => l_array_source_92(Idx)
336311  , p_source_93 => l_array_source_93(Idx)
336312  , p_source_94 => l_array_source_94(Idx)
336313  , p_source_95 => l_array_source_95(Idx)
336314  , p_source_97 => l_array_source_97(Idx)
336315  );
336316 If(l_balance_type_code = 'A') THEN
336317   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336318 END IF;
336319 
336320 --
336321 
336322 
336323 --
336324 AcctLineType_131 (
336325  p_application_id  => p_application_id
336326  ,p_event_id     => l_event_id
336327  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336328  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336329  ,p_actual_flag => l_actual_flag
336330  ,p_balance_type_code => l_balance_type_code
336331  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336332  
336333  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336334  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336335  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336336  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336337  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336338  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
336339  , p_source_84 => l_array_source_84(Idx)
336340  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336341  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336342  , p_source_88 => l_array_source_88(Idx)
336343  , p_source_91 => l_array_source_91(Idx)
336344  , p_source_92 => l_array_source_92(Idx)
336345  , p_source_93 => l_array_source_93(Idx)
336346  , p_source_94 => l_array_source_94(Idx)
336347  , p_source_95 => l_array_source_95(Idx)
336348  , p_source_97 => l_array_source_97(Idx)
336349  );
336350 If(l_balance_type_code = 'A') THEN
336351   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336352 END IF;
336353 
336354 --
336355 
336356 
336357 --
336358 AcctLineType_152 (
336359  p_application_id  => p_application_id
336360  ,p_event_id     => l_event_id
336361  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336362  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336363  ,p_actual_flag => l_actual_flag
336364  ,p_balance_type_code => l_balance_type_code
336365  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336366  
336367  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336368  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336369  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336370  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336371  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336372  , p_source_11 => l_array_source_11(Idx)
336373  , p_source_84 => l_array_source_84(Idx)
336374  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336375  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336376  , p_source_88 => l_array_source_88(Idx)
336377  , p_source_91 => l_array_source_91(Idx)
336378  , p_source_92 => l_array_source_92(Idx)
336379  , p_source_93 => l_array_source_93(Idx)
336380  , p_source_94 => l_array_source_94(Idx)
336381  , p_source_95 => l_array_source_95(Idx)
336382  , p_source_97 => l_array_source_97(Idx)
336383  );
336384 If(l_balance_type_code = 'A') THEN
336385   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336386 END IF;
336387 
336388 --
336389 
336390 
336391 --
336392 AcctLineType_166 (
336393  p_application_id  => p_application_id
336394  ,p_event_id     => l_event_id
336395  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336396  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336397  ,p_actual_flag => l_actual_flag
336398  ,p_balance_type_code => l_balance_type_code
336399  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336400  
336401  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336402  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336403  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336404  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336405  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336406  , p_source_11 => l_array_source_11(Idx)
336407  , p_source_84 => l_array_source_84(Idx)
336408  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336409  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336410  , p_source_88 => l_array_source_88(Idx)
336411  , p_source_91 => l_array_source_91(Idx)
336412  , p_source_92 => l_array_source_92(Idx)
336413  , p_source_93 => l_array_source_93(Idx)
336414  , p_source_94 => l_array_source_94(Idx)
336415  , p_source_95 => l_array_source_95(Idx)
336416  , p_source_97 => l_array_source_97(Idx)
336417  );
336418 If(l_balance_type_code = 'A') THEN
336419   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336420 END IF;
336421 
336422 --
336423 
336424 
336425 --
336426 AcctLineType_216 (
336427  p_application_id  => p_application_id
336428  ,p_event_id     => l_event_id
336429  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336430  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336431  ,p_actual_flag => l_actual_flag
336432  ,p_balance_type_code => l_balance_type_code
336433  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336434  
336435  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336436  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336437  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336438  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336439  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336440  , p_source_11 => l_array_source_11(Idx)
336441  , p_source_15 => l_array_source_15(Idx)
336442  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
336443  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
336444  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
336445  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
336446  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
336447  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
336448  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
336449  , p_source_84 => l_array_source_84(Idx)
336450  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336451  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336452  , p_source_88 => l_array_source_88(Idx)
336453  , p_source_91 => l_array_source_91(Idx)
336454  , p_source_92 => l_array_source_92(Idx)
336455  , p_source_93 => l_array_source_93(Idx)
336456  , p_source_94 => l_array_source_94(Idx)
336457  , p_source_95 => l_array_source_95(Idx)
336458  , p_source_97 => l_array_source_97(Idx)
336459  );
336460 If(l_balance_type_code = 'A') THEN
336461   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336462 END IF;
336463 
336464 --
336465 
336466 
336467 --
336468 AcctLineType_310 (
336469  p_application_id  => p_application_id
336470  ,p_event_id     => l_event_id
336471  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336472  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336473  ,p_actual_flag => l_actual_flag
336474  ,p_balance_type_code => l_balance_type_code
336475  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336476  
336477  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336478  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336479  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336480  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336481  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336482  , p_source_11 => l_array_source_11(Idx)
336483  , p_source_84 => l_array_source_84(Idx)
336484  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336485  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336486  , p_source_88 => l_array_source_88(Idx)
336487  , p_source_91 => l_array_source_91(Idx)
336488  , p_source_92 => l_array_source_92(Idx)
336489  , p_source_93 => l_array_source_93(Idx)
336490  , p_source_94 => l_array_source_94(Idx)
336491  , p_source_95 => l_array_source_95(Idx)
336492  , p_source_97 => l_array_source_97(Idx)
336493  );
336494 If(l_balance_type_code = 'A') THEN
336495   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336496 END IF;
336497 
336498 --
336499 
336500 
336501 --
336502 AcctLineType_343 (
336503  p_application_id  => p_application_id
336504  ,p_event_id     => l_event_id
336505  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336506  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336507  ,p_actual_flag => l_actual_flag
336508  ,p_balance_type_code => l_balance_type_code
336509  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336510  
336511  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336512  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336513  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336514  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336515  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336516  , p_source_11 => l_array_source_11(Idx)
336517  , p_source_84 => l_array_source_84(Idx)
336518  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336519  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336520  , p_source_88 => l_array_source_88(Idx)
336521  , p_source_91 => l_array_source_91(Idx)
336522  , p_source_92 => l_array_source_92(Idx)
336523  , p_source_93 => l_array_source_93(Idx)
336524  , p_source_94 => l_array_source_94(Idx)
336525  , p_source_95 => l_array_source_95(Idx)
336526  , p_source_97 => l_array_source_97(Idx)
336527  );
336528 If(l_balance_type_code = 'A') THEN
336529   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336530 END IF;
336531 
336532 --
336533 
336534 
336535 --
336536 AcctLineType_419 (
336537  p_application_id  => p_application_id
336538  ,p_event_id     => l_event_id
336539  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336540  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336541  ,p_actual_flag => l_actual_flag
336542  ,p_balance_type_code => l_balance_type_code
336543  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336544  
336545  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336546  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336547  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336548  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336549  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336550  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
336551  , p_source_84 => l_array_source_84(Idx)
336552  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336553  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336554  , p_source_88 => l_array_source_88(Idx)
336555  , p_source_91 => l_array_source_91(Idx)
336556  , p_source_92 => l_array_source_92(Idx)
336557  , p_source_93 => l_array_source_93(Idx)
336558  , p_source_94 => l_array_source_94(Idx)
336559  , p_source_95 => l_array_source_95(Idx)
336560  , p_source_97 => l_array_source_97(Idx)
336561  );
336562 If(l_balance_type_code = 'A') THEN
336563   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336564 END IF;
336565 
336566 --
336567 
336568 
336569 --
336570 AcctLineType_429 (
336571  p_application_id  => p_application_id
336572  ,p_event_id     => l_event_id
336573  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336574  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336575  ,p_actual_flag => l_actual_flag
336576  ,p_balance_type_code => l_balance_type_code
336577  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336578  
336579  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336580  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336581  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336582  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336583  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336584  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
336585  , p_source_84 => l_array_source_84(Idx)
336586  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336587  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336588  , p_source_88 => l_array_source_88(Idx)
336589  , p_source_91 => l_array_source_91(Idx)
336590  , p_source_92 => l_array_source_92(Idx)
336591  , p_source_93 => l_array_source_93(Idx)
336592  , p_source_94 => l_array_source_94(Idx)
336593  , p_source_95 => l_array_source_95(Idx)
336594  , p_source_97 => l_array_source_97(Idx)
336595  );
336596 If(l_balance_type_code = 'A') THEN
336597   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336598 END IF;
336599 
336600 --
336601 
336602 
336603 --
336604 AcctLineType_471 (
336605  p_application_id  => p_application_id
336606  ,p_event_id     => l_event_id
336607  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336608  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336609  ,p_actual_flag => l_actual_flag
336610  ,p_balance_type_code => l_balance_type_code
336611  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336612  
336613  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336614  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336615  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336616  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336617  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336618  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
336619  , p_source_84 => l_array_source_84(Idx)
336620  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336621  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336622  , p_source_88 => l_array_source_88(Idx)
336623  , p_source_91 => l_array_source_91(Idx)
336624  , p_source_92 => l_array_source_92(Idx)
336625  , p_source_93 => l_array_source_93(Idx)
336626  , p_source_94 => l_array_source_94(Idx)
336627  , p_source_95 => l_array_source_95(Idx)
336628  , p_source_97 => l_array_source_97(Idx)
336629  );
336630 If(l_balance_type_code = 'A') THEN
336631   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336632 END IF;
336633 
336634 --
336635 
336636 
336637 --
336638 AcctLineType_486 (
336639  p_application_id  => p_application_id
336640  ,p_event_id     => l_event_id
336641  ,p_calculate_acctd_flag => l_calculate_acctd_flag
336642  ,p_calculate_g_l_flag => l_calculate_g_l_flag
336643  ,p_actual_flag => l_actual_flag
336644  ,p_balance_type_code => l_balance_type_code
336645  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
336646  
336647  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
336648  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
336649  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
336650  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
336651  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
336652  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
336653  , p_source_84 => l_array_source_84(Idx)
336654  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
336655  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
336656  , p_source_88 => l_array_source_88(Idx)
336657  , p_source_91 => l_array_source_91(Idx)
336658  , p_source_92 => l_array_source_92(Idx)
336659  , p_source_93 => l_array_source_93(Idx)
336660  , p_source_94 => l_array_source_94(Idx)
336661  , p_source_95 => l_array_source_95(Idx)
336662  , p_source_97 => l_array_source_97(Idx)
336663  );
336664 If(l_balance_type_code = 'A') THEN
336665   l_actual_gain_loss_ref := l_gain_or_loss_ref;
336666 END IF;
336667 
336668 --
336669 
336670       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
336671       -- or secondary ledger that has different currency with primary
336672       -- or alc that is calculated by sla
336673       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
336674             (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'))
336675 
336676 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
336677 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
336678           AND (l_actual_flag = 'A')) THEN
336679         XLA_AE_LINES_PKG.CreateGainOrLossLines(
336680           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
336681          ,p_application_id   => p_application_id
336682          ,p_amb_context_code => 'DEFAULT'
336683          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
336684          ,p_event_class_code => C_EVENT_CLASS_CODE
336685          ,p_event_type_code  => C_EVENT_TYPE_CODE
336686          
336687          ,p_gain_ccid        => -1
336688          ,p_loss_ccid        => -1
336689 
336690          ,p_actual_flag      => l_actual_flag
336691          ,p_enc_flag         => null
336692          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
336693          ,p_enc_g_l_ref      => null
336694          );
336695       END IF;
336696    END IF;
336697 END IF;
336698 
336699    ELSE
336700       --
336701       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
336702       --
336703       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
336704          trace
336705             (p_msg      => 'Trancaction revesal option is Y'
336706             ,p_level    => C_LEVEL_STATEMENT
336707             ,p_module   => l_log_module);
336708       END IF;
336709    END IF;
336710 
336711 END LOOP;
336712 l_result := XLA_AE_LINES_PKG.InsertLines ;
336713 end loop;
336714 close line_cur;
336715 
336716 
336717 --
336718 -- insert headers into xla_ae_headers_gt table
336719 --
336720 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
336721 
336722 -- insert into errors table here.
336723 
336724 END LOOP;
336725 
336726 --
336727 -- 4865292
336728 --
336729 -- Compare g_hdr_extract_count with event count in
336730 -- CreateHeadersAndLines.
336731 --
336732 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
336733 
336734 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
336735    trace (p_msg     => '# rows extracted from header extract objects '
336736                     || ' (running total): '
336737                     || g_hdr_extract_count
336738          ,p_level   => C_LEVEL_STATEMENT
336739          ,p_module  => l_log_module);
336740 END IF;
336741 
336742 CLOSE header_cur;
336743 --
336744 
336745 --
336746 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
336747    trace
336748       (p_msg      => 'END of EventType_563'
336749       ,p_level    => C_LEVEL_PROCEDURE
336750       ,p_module   => l_log_module);
336751 END IF;
336752 --
336753 RETURN l_result;
336754 EXCEPTION
336755 WHEN xla_exceptions_pkg.application_exception THEN
336756    
336757 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
336758 
336759    
336760 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
336761 
336762    RAISE;
336763 
336764 WHEN NO_DATA_FOUND THEN
336765 
336766 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
336767 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
336768 
336769 FOR header_record IN header_cur
336770 LOOP
336771     l_array_header_events(header_record.event_id) := header_record.event_id;
336772 END LOOP;
336773 
336774 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
336775 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
336776 
336777 fnd_file.put_line(fnd_file.LOG, '                    ');
336778 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
336779 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
336780 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
336781 
336782 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
336783 LOOP
336784 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
336785 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
336786         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
336787 	END IF;
336788 END LOOP;
336789 
336790 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
336791 fnd_file.put_line(fnd_file.LOG, '                    ');
336792 
336793 
336794 xla_exceptions_pkg.raise_message
336795       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_563');
336796 
336797 
336798 WHEN OTHERS THEN
336799    xla_exceptions_pkg.raise_message
336800       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_563');
336801 END EventType_563;
336802 --
336803 
336804 ---------------------------------------
336805 --
336806 -- PRIVATE PROCEDURE
336807 --         insert_sources_564
336808 --
336809 ----------------------------------------
336810 --
336811 PROCEDURE insert_sources_564(
336812                                 p_target_ledger_id       IN NUMBER
336813                               , p_language               IN VARCHAR2
336814                               , p_sla_ledger_id          IN NUMBER
336815                               , p_pad_start_date         IN DATE
336816                               , p_pad_end_date           IN DATE
336817                          )
336818 IS
336819 
336820 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_NO_TP';
336821 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
336822 p_apps_owner                   VARCHAR2(30);
336823 l_log_module                   VARCHAR2(240);
336824 BEGIN
336825 IF g_log_enabled THEN
336826       l_log_module := C_DEFAULT_MODULE||'.insert_sources_564';
336827 END IF;
336828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
336829 
336830       trace
336831          (p_msg      => 'BEGIN of insert_sources_564'
336832          ,p_level    => C_LEVEL_PROCEDURE
336833          ,p_module   => l_log_module);
336834 
336835 END IF;
336836 
336837 -- select APPS owner
336838 SELECT oracle_username
336839   INTO p_apps_owner
336840   FROM fnd_oracle_userid
336841  WHERE read_only_flag = 'U'
336842 ;
336843 
336844 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
336845       trace
336846          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
336847                         ' - p_language = '||p_language||
336848                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
336849                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
336850                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
336851                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
336852          ,p_level    => C_LEVEL_STATEMENT
336853          ,p_module   => l_log_module);
336854 END IF;
336855 
336856 
336857 --
336858 INSERT INTO xla_diag_sources --hdr1
336859 (
336860         event_id
336861       , ledger_id
336862       , sla_ledger_id
336863       , description_language
336864       , object_name
336865       , object_type_code
336866       , line_number
336867       , source_application_id
336868       , source_type_code
336869       , source_code
336870       , source_value
336871       , source_meaning
336872       , created_by
336873       , creation_date
336874       , last_update_date
336875       , last_updated_by
336876       , last_update_login
336877       , program_update_date
336878       , program_application_id
336879       , program_id
336880       , request_id
336881 )
336882 SELECT
336883         event_id
336884       , p_target_ledger_id
336885       , p_sla_ledger_id
336886       , p_language
336887       , object_name
336888       , object_type_code
336889       , line_number
336890       , source_application_id
336891       , source_type_code
336892       , source_code
336893       , SUBSTR(source_value ,1,1996)
336894       , SUBSTR(source_meaning,1,200)
336895       , xla_environment_pkg.g_Usr_Id
336896       , TRUNC(SYSDATE)
336897       , TRUNC(SYSDATE)
336898       , xla_environment_pkg.g_Usr_Id
336899       , xla_environment_pkg.g_Login_Id
336900       , TRUNC(SYSDATE)
336901       , xla_environment_pkg.g_Prog_Appl_Id
336902       , xla_environment_pkg.g_Prog_Id
336903       , xla_environment_pkg.g_Req_Id
336904   FROM (
336905        SELECT xet.event_id                  event_id
336906             , 0                             line_number
336907             , CASE r
336908                WHEN 1 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
336909                 WHEN 2 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
336910                 WHEN 3 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
336911                 WHEN 4 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
336912                 WHEN 5 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
336913                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
336914                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
336915                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
336916                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
336917                 WHEN 10 THEN 'CST_XLA_INV_HEADERS_V' 
336918                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
336919                 
336920                ELSE null
336921               END                           object_name
336922             , CASE r
336923                 WHEN 1 THEN 'HEADER' 
336924                 WHEN 2 THEN 'HEADER' 
336925                 WHEN 3 THEN 'HEADER' 
336926                 WHEN 4 THEN 'HEADER' 
336927                 WHEN 5 THEN 'HEADER' 
336928                 WHEN 6 THEN 'HEADER' 
336929                 WHEN 7 THEN 'HEADER' 
336930                 WHEN 8 THEN 'HEADER' 
336931                 WHEN 9 THEN 'HEADER' 
336932                 WHEN 10 THEN 'HEADER' 
336933                 WHEN 11 THEN 'HEADER' 
336934                 
336935                 ELSE null
336936               END                           object_type_code
336937             , CASE r
336938                 WHEN 1 THEN '707' 
336939                 WHEN 2 THEN '707' 
336940                 WHEN 3 THEN '707' 
336941                 WHEN 4 THEN '707' 
336942                 WHEN 5 THEN '707' 
336943                 WHEN 6 THEN '707' 
336944                 WHEN 7 THEN '707' 
336945                 WHEN 8 THEN '707' 
336946                 WHEN 9 THEN '707' 
336947                 WHEN 10 THEN '707' 
336948                 WHEN 11 THEN '707' 
336949                 
336950                 ELSE null
336951               END                           source_application_id
336952             , 'S'             source_type_code
336953             , CASE r
336954                 WHEN 1 THEN 'PLA_BRIDGING_ACCOUNT' 
336955                 WHEN 2 THEN 'INTERORG_REVENUE_ACCOUNT' 
336956                 WHEN 3 THEN 'INTERORG_TXFR_CREDIT_ACCOUNT' 
336957                 WHEN 4 THEN 'PLA_MATERIAL_ACCOUNT' 
336958                 WHEN 5 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
336959                 WHEN 6 THEN 'PLA_RESOURCE_ACCOUNT' 
336960                 WHEN 7 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
336961                 WHEN 8 THEN 'PLA_OVERHEAD_ACCOUNT' 
336962                 WHEN 9 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
336963                 WHEN 10 THEN 'DISTRIBUTION_TYPE' 
336964                 WHEN 11 THEN 'TRANSFER_TO_GL_INDICATOR' 
336965                 
336966                 ELSE null
336967               END                           source_code
336968             , CASE r
336969                 WHEN 1 THEN TO_CHAR(h4.PLA_BRIDGING_ACCOUNT)
336970                 WHEN 2 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
336971                 WHEN 3 THEN TO_CHAR(h1.INTERORG_TXFR_CREDIT_ACCOUNT)
336972                 WHEN 4 THEN TO_CHAR(h4.PLA_MATERIAL_ACCOUNT)
336973                 WHEN 5 THEN TO_CHAR(h4.PLA_MATERIAL_OVERHEAD_ACCOUNT)
336974                 WHEN 6 THEN TO_CHAR(h4.PLA_RESOURCE_ACCOUNT)
336975                 WHEN 7 THEN TO_CHAR(h4.PLA_OUTSIDE_PROCESSING_ACCOUNT)
336976                 WHEN 8 THEN TO_CHAR(h4.PLA_OVERHEAD_ACCOUNT)
336977                 WHEN 9 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
336978                 WHEN 10 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
336979                 WHEN 11 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
336980                 
336981                 ELSE null
336982               END                           source_value
336983             , CASE r
336984                 WHEN 10 THEN fvl85.meaning
336985                 WHEN 11 THEN fvl114.meaning
336986                 
336987                 ELSE null
336988               END               source_meaning
336989         FROM xla_events_gt     xet  
336990       , CST_XLA_INTERORG_PARAMS_REF_V  h1
336991       , CST_XLA_INV_HEADERS_V  h2
336992       , CST_XLA_PLA_CATEGORY_REF_V  h4
336993   , fnd_lookup_values    fvl85
336994   , fnd_lookup_values    fvl114
336995             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
336996        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
336997          AND xet.event_type_code = C_EVENT_TYPE_CODE
336998             AND h2.event_id = xet.event_id
336999   AND h1.event_id (+) = h2.event_id
337000  AND h4.pla_cat_organization_id  (+) = h2.organization_id 
337001 and h4.pla_cat_item_id          (+) = h2.inventory_item_id 
337002 and h4.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
337003   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
337004   AND fvl85.view_application_id(+) = 700
337005   AND fvl85.language(+)            = USERENV('LANG')
337006      AND fvl114.lookup_type(+)         = 'YES_NO'
337007   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
337008   AND fvl114.view_application_id(+) = 0
337009   AND fvl114.language(+)            = USERENV('LANG')
337010   
337011 )
337012 ;
337013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
337014 
337015       trace
337016          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
337017          ,p_level    => C_LEVEL_STATEMENT
337018          ,p_module   => l_log_module);
337019 
337020 END IF;
337021 --
337022 
337023 
337024 
337025 --
337026 INSERT INTO xla_diag_sources --line1
337027 (
337028         event_id
337029       , ledger_id
337030       , sla_ledger_id
337031       , description_language
337032       , object_name
337033       , object_type_code
337034       , line_number
337035       , source_application_id
337036       , source_type_code
337037       , source_code
337038       , source_value
337039       , source_meaning
337040       , created_by
337041       , creation_date
337042       , last_update_date
337043       , last_updated_by
337044       , last_update_login
337045       , program_update_date
337046       , program_application_id
337047       , program_id
337048       , request_id
337049 )
337050 SELECT  event_id
337051       , p_target_ledger_id
337052       , p_sla_ledger_id
337053       , p_language
337054       , object_name
337055       , object_type_code
337056       , line_number
337057       , source_application_id
337058       , source_type_code
337059       , source_code
337060       , SUBSTR(source_value,1,1996)
337061       , SUBSTR(source_meaning,1,200)
337062       , xla_environment_pkg.g_Usr_Id
337063       , TRUNC(SYSDATE)
337064       , TRUNC(SYSDATE)
337065       , xla_environment_pkg.g_Usr_Id
337066       , xla_environment_pkg.g_Login_Id
337067       , TRUNC(SYSDATE)
337068       , xla_environment_pkg.g_Prog_Appl_Id
337069       , xla_environment_pkg.g_Prog_Id
337070       , xla_environment_pkg.g_Req_Id
337071   FROM (
337072        SELECT xet.event_id                  event_id
337073             , l3.line_number                 line_number
337074             , CASE r
337075                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
337076                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
337077                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
337078                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
337079                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
337080                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
337081                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
337082                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
337083                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
337084                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
337085                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
337086                 
337087                ELSE null
337088               END                           object_name
337089             , CASE r
337090                 WHEN 1 THEN 'LINE' 
337091                 WHEN 2 THEN 'LINE' 
337092                 WHEN 3 THEN 'LINE' 
337093                 WHEN 4 THEN 'LINE' 
337094                 WHEN 5 THEN 'LINE' 
337095                 WHEN 6 THEN 'LINE' 
337096                 WHEN 7 THEN 'LINE' 
337097                 WHEN 8 THEN 'LINE' 
337098                 WHEN 9 THEN 'LINE' 
337099                 WHEN 10 THEN 'LINE' 
337100                 WHEN 11 THEN 'LINE' 
337101                 
337102                 ELSE null
337103               END                           object_type_code
337104             , CASE r
337105                 WHEN 1 THEN '707' 
337106                 WHEN 2 THEN '707' 
337107                 WHEN 3 THEN '707' 
337108                 WHEN 4 THEN '707' 
337109                 WHEN 5 THEN '707' 
337110                 WHEN 6 THEN '707' 
337111                 WHEN 7 THEN '707' 
337112                 WHEN 8 THEN '707' 
337113                 WHEN 9 THEN '707' 
337114                 WHEN 10 THEN '707' 
337115                 WHEN 11 THEN '707' 
337116                 
337117                 ELSE null
337118               END                           source_application_id
337119             , 'S'             source_type_code
337120             , CASE r
337121                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
337122                 WHEN 2 THEN 'COST_ELEMENT_ID' 
337123                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
337124                 WHEN 4 THEN 'CURRENCY_CODE' 
337125                 WHEN 5 THEN 'ENTERED_AMOUNT' 
337126                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
337127                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
337128                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
337129                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
337130                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
337131                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
337132                 
337133                 ELSE null
337134               END                           source_code
337135             , CASE r
337136                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
337137                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
337138                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
337139                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
337140                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
337141                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
337142                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
337143                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
337144                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
337145                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
337146                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
337147                 
337148                 ELSE null
337149               END                           source_value
337150             , CASE r
337151                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
337152                           1009615
337153                          ,TO_CHAR(l3.COST_ELEMENT_ID)
337154                          ,'COST_ELEMENT_ID'
337155                          ,'S'
337156                          ,707)
337157                 
337158                 ELSE null
337159               END               source_meaning
337160          FROM  xla_events_gt     xet  
337161         , CST_XLA_INV_LINES_V  l3
337162             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
337163         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
337164           AND xet.event_type_code = C_EVENT_TYPE_CODE
337165             AND l3.event_id          = xet.event_id
337166 
337167 )
337168 ;
337169 --
337170 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
337171 
337172       trace
337173          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
337174          ,p_level    => C_LEVEL_STATEMENT
337175          ,p_module   => l_log_module);
337176 
337177 END IF;
337178 
337179 
337180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
337181       trace
337182          (p_msg      => 'END of insert_sources_564'
337183          ,p_level    => C_LEVEL_PROCEDURE
337184          ,p_module   => l_log_module);
337185 END IF;
337186 EXCEPTION
337187   WHEN xla_exceptions_pkg.application_exception THEN
337188       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
337189             trace
337190                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
337191                ,p_level    => C_LEVEL_EXCEPTION
337192                ,p_module   => l_log_module);
337193       END IF;
337194       RAISE;
337195   WHEN OTHERS THEN
337196       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
337197             trace
337198                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
337199                ,p_level    => C_LEVEL_EXCEPTION
337200                ,p_module   => l_log_module);
337201        END IF;
337202        xla_exceptions_pkg.raise_message
337203            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_564');
337204 END insert_sources_564;
337205 --
337206 
337207 ---------------------------------------
337208 --
337209 -- PRIVATE FUNCTION
337210 --         EventType_564
337211 --
337212 ----------------------------------------
337213 --
337214 FUNCTION EventType_564
337215        (p_application_id         IN NUMBER
337216        ,p_base_ledger_id         IN NUMBER
337217        ,p_target_ledger_id       IN NUMBER
337218        ,p_language               IN VARCHAR2
337219        ,p_currency_code          IN VARCHAR2
337220        ,p_sla_ledger_id          IN NUMBER
337221        ,p_pad_start_date         IN DATE
337222        ,p_pad_end_date           IN DATE
337223        ,p_primary_ledger_id      IN NUMBER)
337224 RETURN BOOLEAN IS
337225 --
337226 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_NO_TP';
337227 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
337228 
337229 l_calculate_acctd_flag   VARCHAR2(1) :='N';
337230 l_calculate_g_l_flag     VARCHAR2(1) :='N';
337231 --
337232 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337233 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337234 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
337235 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
337236 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337237 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
337238 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
337239 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337240 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
337241 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
337242 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337243 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337244 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337245 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
337246 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
337247 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
337248 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
337249 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
337250 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
337251 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
337252 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
337253 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
337254 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
337255 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
337256 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
337257 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
337258 
337259 l_event_id                             NUMBER;
337260 l_previous_event_id                    NUMBER;
337261 l_first_event_id                       NUMBER;
337262 l_last_event_id                        NUMBER;
337263 
337264 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
337265 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
337266 --
337267 --
337268 l_result                    BOOLEAN := TRUE;
337269 l_rows                      NUMBER  := 1000;
337270 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, no Transfer Pricing';
337271 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
337272 l_description               VARCHAR2(4000);
337273 l_transaction_reversal      NUMBER;
337274 l_ae_header_id              NUMBER;
337275 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
337276 l_log_module                VARCHAR2(240);
337277 --
337278 l_acct_reversal_source      VARCHAR2(30);
337279 l_trx_reversal_source       VARCHAR2(30);
337280 
337281 l_continue_with_lines       BOOLEAN := TRUE;
337282 --
337283 l_acc_rev_gl_date_source    DATE;                      -- 4262811
337284 --
337285 type t_array_event_id is table of number index by binary_integer;
337286 
337287 l_rec_array_event                    t_rec_array_event;
337288 l_null_rec_array_event               t_rec_array_event;
337289 l_array_ae_header_id                 xla_number_array_type;
337290 l_actual_flag                        VARCHAR2(1) := NULL;
337291 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
337292 l_balance_type_code                  VARCHAR2(1) :=NULL;
337293 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
337294 
337295 --
337296 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
337297 --
337298 
337299 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337300 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337301 TYPE t_array_source_40 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_TXFR_CREDIT_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337302 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337303 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337304 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337305 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337306 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337307 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
337308 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
337309 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
337310 
337311 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
337312 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
337313 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
337314 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
337315 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
337316 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
337317 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
337318 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
337319 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
337320 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
337321 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
337322 
337323 l_array_source_22              t_array_source_22;
337324 l_array_source_33              t_array_source_33;
337325 l_array_source_40              t_array_source_40;
337326 l_array_source_41              t_array_source_41;
337327 l_array_source_42              t_array_source_42;
337328 l_array_source_43              t_array_source_43;
337329 l_array_source_44              t_array_source_44;
337330 l_array_source_45              t_array_source_45;
337331 l_array_source_59              t_array_source_59;
337332 l_array_source_85              t_array_source_85;
337333 l_array_source_85_meaning      t_array_lookup_meaning;
337334 l_array_source_114              t_array_source_114;
337335 l_array_source_114_meaning      t_array_lookup_meaning;
337336 
337337 l_array_source_11      t_array_source_11;
337338 l_array_source_15      t_array_source_15;
337339 l_array_source_84      t_array_source_84;
337340 l_array_source_88      t_array_source_88;
337341 l_array_source_91      t_array_source_91;
337342 l_array_source_92      t_array_source_92;
337343 l_array_source_93      t_array_source_93;
337344 l_array_source_94      t_array_source_94;
337345 l_array_source_95      t_array_source_95;
337346 l_array_source_97      t_array_source_97;
337347 l_array_source_108      t_array_source_108;
337348 
337349 --
337350 CURSOR header_cur
337351 IS
337352 SELECT /*+ leading(xet) cardinality(xet,1) */
337353 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
337354 -- Event Class Code: FOB_SHIP_SENDER_SHIP
337355     xet.entity_id
337356   , xet.legal_entity_id
337357   , xet.entity_code
337358   , xet.transaction_number
337359   , xet.event_id
337360   , xet.event_class_code
337361   , xet.event_type_code
337362   , xet.event_number
337363   , xet.event_date
337364   , xet.transaction_date
337365   , xet.reference_num_1
337366   , xet.reference_num_2
337367   , xet.reference_num_3
337368   , xet.reference_num_4
337369   , xet.reference_char_1
337370   , xet.reference_char_2
337371   , xet.reference_char_3
337372   , xet.reference_char_4
337373   , xet.reference_date_1
337374   , xet.reference_date_2
337375   , xet.reference_date_3
337376   , xet.reference_date_4
337377   , xet.event_created_by
337378   , xet.budgetary_control_flag 
337379   , h4.PLA_BRIDGING_ACCOUNT    source_22
337380   , h1.INTERORG_REVENUE_ACCOUNT    source_33
337381   , h1.INTERORG_TXFR_CREDIT_ACCOUNT    source_40
337382   , h4.PLA_MATERIAL_ACCOUNT    source_41
337383   , h4.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
337384   , h4.PLA_RESOURCE_ACCOUNT    source_43
337385   , h4.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
337386   , h4.PLA_OVERHEAD_ACCOUNT    source_45
337387   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
337388   , h2.DISTRIBUTION_TYPE    source_85
337389   , fvl85.meaning   source_85_meaning
337390   , h2.TRANSFER_TO_GL_INDICATOR    source_114
337391   , fvl114.meaning   source_114_meaning
337392   FROM xla_events_gt     xet 
337393   , CST_XLA_INTERORG_PARAMS_REF_V  h1
337394   , CST_XLA_INV_HEADERS_V  h2
337395   , CST_XLA_PLA_CATEGORY_REF_V  h4
337396   , fnd_lookup_values    fvl85
337397   , fnd_lookup_values    fvl114
337398  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
337399    and xet.event_type_code = C_EVENT_TYPE_CODE
337400    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
337401   AND h1.event_id (+) = h2.event_id
337402  AND h4.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
337403 AND h4.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
337404 AND h4.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
337405   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
337406   AND fvl85.view_application_id(+) = 700
337407   AND fvl85.language(+)            = USERENV('LANG')
337408      AND fvl114.lookup_type(+)         = 'YES_NO'
337409   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
337410   AND fvl114.view_application_id(+) = 0
337411   AND fvl114.language(+)            = USERENV('LANG')
337412   
337413  ORDER BY event_id
337414 ;
337415 
337416 
337417 --
337418 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
337419 IS
337420 SELECT /*+ leading(xet) cardinality(xet,1) */
337421 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
337422 -- Event Class Code: FOB_SHIP_SENDER_SHIP
337423     xet.entity_id
337424    ,xet.legal_entity_id
337425    ,xet.entity_code
337426    ,xet.transaction_number
337427    ,xet.event_id
337428    ,xet.event_class_code
337429    ,xet.event_type_code
337430    ,xet.event_number
337431    ,xet.event_date
337432    ,xet.transaction_date
337433    ,xet.reference_num_1
337434    ,xet.reference_num_2
337435    ,xet.reference_num_3
337436    ,xet.reference_num_4
337437    ,xet.reference_char_1
337438    ,xet.reference_char_2
337439    ,xet.reference_char_3
337440    ,xet.reference_char_4
337441    ,xet.reference_date_1
337442    ,xet.reference_date_2
337443    ,xet.reference_date_3
337444    ,xet.reference_date_4
337445    ,xet.event_created_by
337446    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
337447   , l3.CODE_COMBINATION_ID    source_11
337448   , l3.COST_ELEMENT_ID    source_15
337449   , l3.DISTRIBUTION_IDENTIFIER    source_84
337450   , l3.CURRENCY_CODE    source_88
337451   , l3.ENTERED_AMOUNT    source_91
337452   , l3.CURRENCY_CONVERSION_DATE    source_92
337453   , l3.CURRENCY_CONVERSION_RATE    source_93
337454   , l3.CURRENCY_CONVERSION_TYPE    source_94
337455   , l3.ACCOUNTED_AMOUNT    source_95
337456   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
337457   , l3.L_ORGANIZATION_CODE    source_108
337458   FROM xla_events_gt     xet 
337459   , CST_XLA_INV_LINES_V  l3
337460  WHERE xet.event_id between x_first_event_id and x_last_event_id
337461    and xet.event_date between p_pad_start_date and p_pad_end_date
337462    and xet.event_type_code = C_EVENT_TYPE_CODE
337463    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
337464 ;
337465 
337466 --
337467 BEGIN
337468 IF g_log_enabled THEN
337469    l_log_module := C_DEFAULT_MODULE||'.EventType_564';
337470 END IF;
337471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
337472    trace
337473       (p_msg      => 'BEGIN of EventType_564'
337474       ,p_level    => C_LEVEL_PROCEDURE
337475       ,p_module   => l_log_module);
337476 END IF;
337477 
337478 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
337479    trace
337480       (p_msg      => 'p_application_id = '||p_application_id||
337481                      ' - p_base_ledger_id = '||p_base_ledger_id||
337482                      ' - p_target_ledger_id  = '||p_target_ledger_id||
337483                      ' - p_language = '||p_language||
337484                      ' - p_currency_code = '||p_currency_code||
337485                      ' - p_sla_ledger_id = '||p_sla_ledger_id
337486       ,p_level    => C_LEVEL_STATEMENT
337487       ,p_module   => l_log_module);
337488 END IF;
337489 --
337490 -- initialze arrays
337491 --
337492 g_array_event.DELETE;
337493 l_rec_array_event := l_null_rec_array_event;
337494 --
337495 --------------------------------------
337496 -- 4262811 Initialze MPA Line Number
337497 --------------------------------------
337498 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
337499 
337500 --
337501 
337502 --
337503 OPEN header_cur;
337504 --
337505 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
337506    trace
337507    (p_msg      => 'SQL - FETCH header_cur'
337508    ,p_level    => C_LEVEL_STATEMENT
337509    ,p_module   => l_log_module);
337510 END IF;
337511 --
337512 LOOP
337513 FETCH header_cur BULK COLLECT INTO
337514         l_array_entity_id
337515       , l_array_legal_entity_id
337516       , l_array_entity_code
337517       , l_array_transaction_num
337518       , l_array_event_id
337519       , l_array_class_code
337520       , l_array_event_type
337521       , l_array_event_number
337522       , l_array_event_date
337523       , l_array_transaction_date
337524       , l_array_reference_num_1
337525       , l_array_reference_num_2
337526       , l_array_reference_num_3
337527       , l_array_reference_num_4
337528       , l_array_reference_char_1
337529       , l_array_reference_char_2
337530       , l_array_reference_char_3
337531       , l_array_reference_char_4
337532       , l_array_reference_date_1
337533       , l_array_reference_date_2
337534       , l_array_reference_date_3
337535       , l_array_reference_date_4
337536       , l_array_event_created_by
337537       , l_array_budgetary_control_flag 
337538       , l_array_source_22
337539       , l_array_source_33
337540       , l_array_source_40
337541       , l_array_source_41
337542       , l_array_source_42
337543       , l_array_source_43
337544       , l_array_source_44
337545       , l_array_source_45
337546       , l_array_source_59
337547       , l_array_source_85
337548       , l_array_source_85_meaning
337549       , l_array_source_114
337550       , l_array_source_114_meaning
337551       LIMIT l_rows;
337552 --
337553 IF (C_LEVEL_EVENT >= g_log_level) THEN
337554    trace
337555    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
337556    ,p_level    => C_LEVEL_EVENT
337557    ,p_module   => l_log_module);
337558 END IF;
337559 --
337560 EXIT WHEN l_array_entity_id.COUNT = 0;
337561 
337562 -- initialize arrays
337563 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
337564 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
337565 
337566 --
337567 -- Bug 4458708
337568 --
337569 XLA_AE_LINES_PKG.g_LineNumber := 0;
337570 
337571 
337572 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
337573 g_last_hdr_idx := l_array_event_id.LAST;
337574 --
337575 -- loop for the headers. Each iteration is for each header extract row
337576 -- fetched in header cursor
337577 --
337578 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
337579 
337580 --
337581 -- set event info as cache for other routines to refer event attributes
337582 --
337583 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
337584    (p_application_id           => p_application_id
337585    ,p_primary_ledger_id        => p_primary_ledger_id
337586    ,p_base_ledger_id           => p_base_ledger_id
337587    ,p_target_ledger_id         => p_target_ledger_id
337588    ,p_entity_id                => l_array_entity_id(hdr_idx)
337589    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
337590    ,p_entity_code              => l_array_entity_code(hdr_idx)
337591    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
337592    ,p_event_id                 => l_array_event_id(hdr_idx)
337593    ,p_event_class_code         => l_array_class_code(hdr_idx)
337594    ,p_event_type_code          => l_array_event_type(hdr_idx)
337595    ,p_event_number             => l_array_event_number(hdr_idx)
337596    ,p_event_date               => l_array_event_date(hdr_idx)
337597    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
337598    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
337599    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
337600    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
337601    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
337602    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
337603    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
337604    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
337605    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
337606    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
337607    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
337608    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
337609    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
337610    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
337611    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
337612 
337613 --
337614 -- set the status of entry to C_VALID (0)
337615 --
337616 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
337617 
337618 --
337619 -- initialize a row for ae header
337620 --
337621 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
337622 
337623 l_event_id := l_array_event_id(hdr_idx);
337624 
337625 --
337626 -- storing the hdr_idx for event. May be used by line cursor.
337627 --
337628 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
337629 
337630 --
337631 -- store sources from header extract. This can be improved to
337632 -- store only those sources from header extract that may be used in lines
337633 --
337634 
337635 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
337636 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
337637 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
337638 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
337639 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
337640 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
337641 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
337642 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
337643 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
337644 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
337645 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
337646 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
337647 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
337648 
337649 --
337650 -- initilaize the status of ae headers for diffrent balance types
337651 -- the status is initialised to C_NOT_CREATED (2)
337652 --
337653 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
337654 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
337655 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
337656 
337657 --
337658 -- call api to validate and store accounting attributes for header
337659 --
337660 
337661 ------------------------------------------------------------
337662 -- Accrual Reversal : to get date for Standard Source (NONE)
337663 ------------------------------------------------------------
337664 l_acc_rev_gl_date_source := NULL;
337665 
337666      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
337667       l_rec_acct_attrs.array_date_value(1) := 
337668 xla_ae_sources_pkg.GetSystemSourceDate(
337669    p_source_code           => 'XLA_REFERENCE_DATE_1'
337670  , p_source_type_code      => 'Y'
337671  , p_source_application_id =>  602
337672 );
337673      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
337674       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
337675 
337676 
337677 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
337678 
337679 XLA_AE_HEADER_PKG.SetJeCategoryName;
337680 
337681 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
337682 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
337683 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
337684 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
337685 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
337686 
337687 
337688 -- No header level analytical criteria
337689 
337690 --
337691 --accounting attribute enhancement, bug 3612931
337692 --
337693 l_trx_reversal_source := SUBSTR(NULL, 1,30);
337694 
337695 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
337696    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
337697 
337698    xla_accounting_err_pkg.build_message
337699       (p_appli_s_name            => 'XLA'
337700       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
337701       ,p_token_1                 => 'ACCT_ATTR_NAME'
337702       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
337703       ,p_token_2                 => 'PRODUCT_NAME'
337704       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
337705       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
337706       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
337707       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
337708 
337709 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
337710    --
337711    -- following sets the accounting attributes needed to reverse
337712    -- accounting for a distributeion
337713    --
337714    xla_ae_lines_pkg.SetTrxReversalAttrs
337715       (p_event_id              => l_event_id
337716       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
337717       ,p_trx_reversal_source   => l_trx_reversal_source);
337718 
337719 END IF;
337720 
337721 
337722 ----------------------------------------------------------------
337723 -- 4262811 -  update the header statuses to invalid in need be
337724 ----------------------------------------------------------------
337725 --
337726 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
337727 
337728 
337729   -----------------------------------------------
337730   -- No accrual reversal for the event class/type
337731   -----------------------------------------------
337732 ----------------------------------------------------------------
337733 
337734 --
337735 -- this ends the header loop iteration for one bulk fetch
337736 --
337737 END LOOP;
337738 
337739 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
337740 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
337741 
337742 --
337743 -- insert dummy rows into lines gt table that were created due to
337744 -- transaction reversals
337745 --
337746 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
337747    l_result := XLA_AE_LINES_PKG.InsertLines;
337748 END IF;
337749 
337750 --
337751 -- reset the temp_line_num for each set of events fetched from header
337752 -- cursor rather than doing it for each new event in line cursor
337753 -- Bug 3939231
337754 --
337755 xla_ae_lines_pkg.g_temp_line_num := 0;
337756 
337757 
337758 
337759 --
337760 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
337761 --
337762 --
337763 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
337764 
337765       trace
337766          (p_msg      => 'SQL - FETCH line_cur'
337767          ,p_level    => C_LEVEL_STATEMENT
337768          ,p_module   => l_log_module);
337769 
337770 END IF;
337771 --
337772 --
337773 LOOP
337774   --
337775   FETCH line_cur BULK COLLECT INTO
337776         l_array_entity_id
337777       , l_array_legal_entity_id
337778       , l_array_entity_code
337779       , l_array_transaction_num
337780       , l_array_event_id
337781       , l_array_class_code
337782       , l_array_event_type
337783       , l_array_event_number
337784       , l_array_event_date
337785       , l_array_transaction_date
337786       , l_array_reference_num_1
337787       , l_array_reference_num_2
337788       , l_array_reference_num_3
337789       , l_array_reference_num_4
337790       , l_array_reference_char_1
337791       , l_array_reference_char_2
337792       , l_array_reference_char_3
337793       , l_array_reference_char_4
337794       , l_array_reference_date_1
337795       , l_array_reference_date_2
337796       , l_array_reference_date_3
337797       , l_array_reference_date_4
337798       , l_array_event_created_by
337799       , l_array_budgetary_control_flag
337800       , l_array_extract_line_num 
337801       , l_array_source_11
337802       , l_array_source_15
337803       , l_array_source_84
337804       , l_array_source_88
337805       , l_array_source_91
337806       , l_array_source_92
337807       , l_array_source_93
337808       , l_array_source_94
337809       , l_array_source_95
337810       , l_array_source_97
337811       , l_array_source_108
337812       LIMIT l_rows;
337813 
337814   --
337815   IF (C_LEVEL_EVENT >= g_log_level) THEN
337816             trace
337817                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
337818                ,p_level    => C_LEVEL_EVENT
337819                ,p_module   => l_log_module);
337820   END IF;
337821   --
337822   EXIT WHEN l_array_entity_id.count = 0;
337823 
337824   XLA_AE_LINES_PKG.g_rec_lines := null;
337825 
337826 --
337827 -- Bug 4458708
337828 --
337829 XLA_AE_LINES_PKG.g_LineNumber := 0;
337830 --
337831 --
337832 
337833 FOR Idx IN 1..l_array_event_id.count LOOP
337834    --
337835    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
337836    --
337837    l_event_id := l_array_event_id(idx);  -- 5648433
337838 
337839    --
337840    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
337841    --
337842 
337843    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
337844              (g_array_event(l_event_id).array_value_num('header_index'))
337845          ,'N'
337846          ) <> 'Y'
337847    THEN
337848       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
337849          trace
337850             (p_msg      => 'Trancaction revesal option is not Y '
337851             ,p_level    => C_LEVEL_STATEMENT
337852             ,p_module   => l_log_module);
337853       END IF;
337854 
337855 --
337856 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
337857 --
337858 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
337859 --
337860 -- set event info as cache for other routines to refer event attributes
337861 --
337862 
337863 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
337864    l_previous_event_id := l_event_id;
337865 
337866    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
337867       (p_application_id           => p_application_id
337868       ,p_primary_ledger_id        => p_primary_ledger_id
337869       ,p_base_ledger_id           => p_base_ledger_id
337870       ,p_target_ledger_id         => p_target_ledger_id
337871       ,p_entity_id                => l_array_entity_id(Idx)
337872       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
337873       ,p_entity_code              => l_array_entity_code(Idx)
337874       ,p_transaction_num          => l_array_transaction_num(Idx)
337875       ,p_event_id                 => l_array_event_id(Idx)
337876       ,p_event_class_code         => l_array_class_code(Idx)
337877       ,p_event_type_code          => l_array_event_type(Idx)
337878       ,p_event_number             => l_array_event_number(Idx)
337879       ,p_event_date               => l_array_event_date(Idx)
337880       ,p_transaction_date         => l_array_transaction_date(Idx)
337881       ,p_reference_num_1          => l_array_reference_num_1(Idx)
337882       ,p_reference_num_2          => l_array_reference_num_2(Idx)
337883       ,p_reference_num_3          => l_array_reference_num_3(Idx)
337884       ,p_reference_num_4          => l_array_reference_num_4(Idx)
337885       ,p_reference_char_1         => l_array_reference_char_1(Idx)
337886       ,p_reference_char_2         => l_array_reference_char_2(Idx)
337887       ,p_reference_char_3         => l_array_reference_char_3(Idx)
337888       ,p_reference_char_4         => l_array_reference_char_4(Idx)
337889       ,p_reference_date_1         => l_array_reference_date_1(Idx)
337890       ,p_reference_date_2         => l_array_reference_date_2(Idx)
337891       ,p_reference_date_3         => l_array_reference_date_3(Idx)
337892       ,p_reference_date_4         => l_array_reference_date_4(Idx)
337893       ,p_event_created_by         => l_array_event_created_by(Idx)
337894       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
337895        --
337896 END IF;
337897 
337898 
337899 
337900 --
337901 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
337902 
337903 l_acct_reversal_source := SUBSTR(NULL, 1,30);
337904 
337905 IF l_continue_with_lines THEN
337906    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
337907       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
337908 
337909       xla_accounting_err_pkg.build_message
337910          (p_appli_s_name            => 'XLA'
337911          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
337912          ,p_token_1                 => 'LINE_NUMBER'
337913          ,p_value_1                 => l_array_extract_line_num(Idx)
337914          ,p_token_2                 => 'PRODUCT_NAME'
337915          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
337916          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
337917          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
337918          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
337919 
337920    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
337921       --
337922       -- following sets the accounting attributes needed to reverse
337923       -- accounting for a distributeion
337924       --
337925 
337926       --
337927       -- 5217187
337928       --
337929       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
337930       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
337931                                        g_array_event(l_event_id).array_value_num('header_index'));
337932       --
337933       --
337934 
337935       -- No reversal code generated
337936 
337937       xla_ae_lines_pkg.SetAcctReversalAttrs
337938          (p_event_id             => l_event_id
337939          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
337940          ,p_calculate_acctd_flag => l_calculate_acctd_flag
337941          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
337942    END IF;
337943 
337944    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
337945        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
337946 
337947 --
337948 AcctLineType_55 (
337949  p_application_id  => p_application_id
337950  ,p_event_id     => l_event_id
337951  ,p_calculate_acctd_flag => l_calculate_acctd_flag
337952  ,p_calculate_g_l_flag => l_calculate_g_l_flag
337953  ,p_actual_flag => l_actual_flag
337954  ,p_balance_type_code => l_balance_type_code
337955  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
337956  
337957  , p_source_11 => l_array_source_11(Idx)
337958  , p_source_84 => l_array_source_84(Idx)
337959  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
337960  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
337961  , p_source_88 => l_array_source_88(Idx)
337962  , p_source_91 => l_array_source_91(Idx)
337963  , p_source_92 => l_array_source_92(Idx)
337964  , p_source_93 => l_array_source_93(Idx)
337965  , p_source_94 => l_array_source_94(Idx)
337966  , p_source_95 => l_array_source_95(Idx)
337967  , p_source_97 => l_array_source_97(Idx)
337968  );
337969 If(l_balance_type_code = 'A') THEN
337970   l_actual_gain_loss_ref := l_gain_or_loss_ref;
337971 END IF;
337972 
337973 --
337974 
337975 
337976 --
337977 AcctLineType_178 (
337978  p_application_id  => p_application_id
337979  ,p_event_id     => l_event_id
337980  ,p_calculate_acctd_flag => l_calculate_acctd_flag
337981  ,p_calculate_g_l_flag => l_calculate_g_l_flag
337982  ,p_actual_flag => l_actual_flag
337983  ,p_balance_type_code => l_balance_type_code
337984  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
337985  
337986  , p_source_11 => l_array_source_11(Idx)
337987  , p_source_84 => l_array_source_84(Idx)
337988  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
337989  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
337990  , p_source_88 => l_array_source_88(Idx)
337991  , p_source_91 => l_array_source_91(Idx)
337992  , p_source_92 => l_array_source_92(Idx)
337993  , p_source_93 => l_array_source_93(Idx)
337994  , p_source_94 => l_array_source_94(Idx)
337995  , p_source_95 => l_array_source_95(Idx)
337996  , p_source_97 => l_array_source_97(Idx)
337997  );
337998 If(l_balance_type_code = 'A') THEN
337999   l_actual_gain_loss_ref := l_gain_or_loss_ref;
338000 END IF;
338001 
338002 --
338003 
338004 
338005 --
338006 AcctLineType_192 (
338007  p_application_id  => p_application_id
338008  ,p_event_id     => l_event_id
338009  ,p_calculate_acctd_flag => l_calculate_acctd_flag
338010  ,p_calculate_g_l_flag => l_calculate_g_l_flag
338011  ,p_actual_flag => l_actual_flag
338012  ,p_balance_type_code => l_balance_type_code
338013  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
338014  
338015  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
338016  , p_source_84 => l_array_source_84(Idx)
338017  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
338018  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
338019  , p_source_88 => l_array_source_88(Idx)
338020  , p_source_91 => l_array_source_91(Idx)
338021  , p_source_92 => l_array_source_92(Idx)
338022  , p_source_93 => l_array_source_93(Idx)
338023  , p_source_94 => l_array_source_94(Idx)
338024  , p_source_95 => l_array_source_95(Idx)
338025  , p_source_97 => l_array_source_97(Idx)
338026  );
338027 If(l_balance_type_code = 'A') THEN
338028   l_actual_gain_loss_ref := l_gain_or_loss_ref;
338029 END IF;
338030 
338031 --
338032 
338033 
338034 --
338035 AcctLineType_207 (
338036  p_application_id  => p_application_id
338037  ,p_event_id     => l_event_id
338038  ,p_calculate_acctd_flag => l_calculate_acctd_flag
338039  ,p_calculate_g_l_flag => l_calculate_g_l_flag
338040  ,p_actual_flag => l_actual_flag
338041  ,p_balance_type_code => l_balance_type_code
338042  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
338043  
338044  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
338045  , p_source_84 => l_array_source_84(Idx)
338046  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
338047  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
338048  , p_source_88 => l_array_source_88(Idx)
338049  , p_source_91 => l_array_source_91(Idx)
338050  , p_source_92 => l_array_source_92(Idx)
338051  , p_source_93 => l_array_source_93(Idx)
338052  , p_source_94 => l_array_source_94(Idx)
338053  , p_source_95 => l_array_source_95(Idx)
338054  , p_source_97 => l_array_source_97(Idx)
338055  );
338056 If(l_balance_type_code = 'A') THEN
338057   l_actual_gain_loss_ref := l_gain_or_loss_ref;
338058 END IF;
338059 
338060 --
338061 
338062 
338063 --
338064 AcctLineType_236 (
338065  p_application_id  => p_application_id
338066  ,p_event_id     => l_event_id
338067  ,p_calculate_acctd_flag => l_calculate_acctd_flag
338068  ,p_calculate_g_l_flag => l_calculate_g_l_flag
338069  ,p_actual_flag => l_actual_flag
338070  ,p_balance_type_code => l_balance_type_code
338071  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
338072  
338073  , p_source_15 => l_array_source_15(Idx)
338074  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
338075  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
338076  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
338077  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
338078  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
338079  , p_source_84 => l_array_source_84(Idx)
338080  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
338081  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
338082  , p_source_88 => l_array_source_88(Idx)
338083  , p_source_91 => l_array_source_91(Idx)
338084  , p_source_92 => l_array_source_92(Idx)
338085  , p_source_93 => l_array_source_93(Idx)
338086  , p_source_94 => l_array_source_94(Idx)
338087  , p_source_95 => l_array_source_95(Idx)
338088  , p_source_97 => l_array_source_97(Idx)
338089  , p_source_108 => l_array_source_108(Idx)
338090  );
338091 If(l_balance_type_code = 'A') THEN
338092   l_actual_gain_loss_ref := l_gain_or_loss_ref;
338093 END IF;
338094 
338095 --
338096 
338097 
338098 --
338099 AcctLineType_330 (
338100  p_application_id  => p_application_id
338101  ,p_event_id     => l_event_id
338102  ,p_calculate_acctd_flag => l_calculate_acctd_flag
338103  ,p_calculate_g_l_flag => l_calculate_g_l_flag
338104  ,p_actual_flag => l_actual_flag
338105  ,p_balance_type_code => l_balance_type_code
338106  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
338107  
338108  , p_source_11 => l_array_source_11(Idx)
338109  , p_source_84 => l_array_source_84(Idx)
338110  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
338111  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
338112  , p_source_88 => l_array_source_88(Idx)
338113  , p_source_91 => l_array_source_91(Idx)
338114  , p_source_92 => l_array_source_92(Idx)
338115  , p_source_93 => l_array_source_93(Idx)
338116  , p_source_94 => l_array_source_94(Idx)
338117  , p_source_95 => l_array_source_95(Idx)
338118  , p_source_97 => l_array_source_97(Idx)
338119  );
338120 If(l_balance_type_code = 'A') THEN
338121   l_actual_gain_loss_ref := l_gain_or_loss_ref;
338122 END IF;
338123 
338124 --
338125 
338126 
338127 --
338128 AcctLineType_395 (
338129  p_application_id  => p_application_id
338130  ,p_event_id     => l_event_id
338131  ,p_calculate_acctd_flag => l_calculate_acctd_flag
338132  ,p_calculate_g_l_flag => l_calculate_g_l_flag
338133  ,p_actual_flag => l_actual_flag
338134  ,p_balance_type_code => l_balance_type_code
338135  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
338136  
338137  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
338138  , p_source_84 => l_array_source_84(Idx)
338139  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
338140  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
338141  , p_source_88 => l_array_source_88(Idx)
338142  , p_source_91 => l_array_source_91(Idx)
338143  , p_source_92 => l_array_source_92(Idx)
338144  , p_source_93 => l_array_source_93(Idx)
338145  , p_source_94 => l_array_source_94(Idx)
338146  , p_source_95 => l_array_source_95(Idx)
338147  , p_source_97 => l_array_source_97(Idx)
338148  );
338149 If(l_balance_type_code = 'A') THEN
338150   l_actual_gain_loss_ref := l_gain_or_loss_ref;
338151 END IF;
338152 
338153 --
338154 
338155 
338156 --
338157 AcctLineType_455 (
338158  p_application_id  => p_application_id
338159  ,p_event_id     => l_event_id
338160  ,p_calculate_acctd_flag => l_calculate_acctd_flag
338161  ,p_calculate_g_l_flag => l_calculate_g_l_flag
338162  ,p_actual_flag => l_actual_flag
338163  ,p_balance_type_code => l_balance_type_code
338164  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
338165  
338166  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
338167  , p_source_84 => l_array_source_84(Idx)
338168  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
338169  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
338170  , p_source_88 => l_array_source_88(Idx)
338171  , p_source_91 => l_array_source_91(Idx)
338172  , p_source_92 => l_array_source_92(Idx)
338173  , p_source_93 => l_array_source_93(Idx)
338174  , p_source_94 => l_array_source_94(Idx)
338175  , p_source_95 => l_array_source_95(Idx)
338176  , p_source_97 => l_array_source_97(Idx)
338177  );
338178 If(l_balance_type_code = 'A') THEN
338179   l_actual_gain_loss_ref := l_gain_or_loss_ref;
338180 END IF;
338181 
338182 --
338183 
338184       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
338185       -- or secondary ledger that has different currency with primary
338186       -- or alc that is calculated by sla
338187       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
338188             (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'))
338189 
338190 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
338191 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
338192           AND (l_actual_flag = 'A')) THEN
338193         XLA_AE_LINES_PKG.CreateGainOrLossLines(
338194           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
338195          ,p_application_id   => p_application_id
338196          ,p_amb_context_code => 'DEFAULT'
338197          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
338198          ,p_event_class_code => C_EVENT_CLASS_CODE
338199          ,p_event_type_code  => C_EVENT_TYPE_CODE
338200          
338201          ,p_gain_ccid        => -1
338202          ,p_loss_ccid        => -1
338203 
338204          ,p_actual_flag      => l_actual_flag
338205          ,p_enc_flag         => null
338206          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
338207          ,p_enc_g_l_ref      => null
338208          );
338209       END IF;
338210    END IF;
338211 END IF;
338212 
338213    ELSE
338214       --
338215       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
338216       --
338217       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
338218          trace
338219             (p_msg      => 'Trancaction revesal option is Y'
338220             ,p_level    => C_LEVEL_STATEMENT
338221             ,p_module   => l_log_module);
338222       END IF;
338223    END IF;
338224 
338225 END LOOP;
338226 l_result := XLA_AE_LINES_PKG.InsertLines ;
338227 end loop;
338228 close line_cur;
338229 
338230 
338231 --
338232 -- insert headers into xla_ae_headers_gt table
338233 --
338234 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
338235 
338236 -- insert into errors table here.
338237 
338238 END LOOP;
338239 
338240 --
338241 -- 4865292
338242 --
338243 -- Compare g_hdr_extract_count with event count in
338244 -- CreateHeadersAndLines.
338245 --
338246 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
338247 
338248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
338249    trace (p_msg     => '# rows extracted from header extract objects '
338250                     || ' (running total): '
338251                     || g_hdr_extract_count
338252          ,p_level   => C_LEVEL_STATEMENT
338253          ,p_module  => l_log_module);
338254 END IF;
338255 
338256 CLOSE header_cur;
338257 --
338258 
338259 --
338260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
338261    trace
338262       (p_msg      => 'END of EventType_564'
338263       ,p_level    => C_LEVEL_PROCEDURE
338264       ,p_module   => l_log_module);
338265 END IF;
338266 --
338267 RETURN l_result;
338268 EXCEPTION
338269 WHEN xla_exceptions_pkg.application_exception THEN
338270    
338271 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
338272 
338273    
338274 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
338275 
338276    RAISE;
338277 
338278 WHEN NO_DATA_FOUND THEN
338279 
338280 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
338281 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
338282 
338283 FOR header_record IN header_cur
338284 LOOP
338285     l_array_header_events(header_record.event_id) := header_record.event_id;
338286 END LOOP;
338287 
338288 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
338289 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
338290 
338291 fnd_file.put_line(fnd_file.LOG, '                    ');
338292 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
338293 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
338294 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
338295 
338296 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
338297 LOOP
338298 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
338299 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
338300         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
338301 	END IF;
338302 END LOOP;
338303 
338304 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
338305 fnd_file.put_line(fnd_file.LOG, '                    ');
338306 
338307 
338308 xla_exceptions_pkg.raise_message
338309       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_564');
338310 
338311 
338312 WHEN OTHERS THEN
338313    xla_exceptions_pkg.raise_message
338314       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_564');
338315 END EventType_564;
338316 --
338317 
338318 ---------------------------------------
338319 --
338320 -- PRIVATE PROCEDURE
338321 --         insert_sources_565
338322 --
338323 ----------------------------------------
338324 --
338325 PROCEDURE insert_sources_565(
338326                                 p_target_ledger_id       IN NUMBER
338327                               , p_language               IN VARCHAR2
338328                               , p_sla_ledger_id          IN NUMBER
338329                               , p_pad_start_date         IN DATE
338330                               , p_pad_end_date           IN DATE
338331                          )
338332 IS
338333 
338334 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_TP';
338335 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
338336 p_apps_owner                   VARCHAR2(30);
338337 l_log_module                   VARCHAR2(240);
338338 BEGIN
338339 IF g_log_enabled THEN
338340       l_log_module := C_DEFAULT_MODULE||'.insert_sources_565';
338341 END IF;
338342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
338343 
338344       trace
338345          (p_msg      => 'BEGIN of insert_sources_565'
338346          ,p_level    => C_LEVEL_PROCEDURE
338347          ,p_module   => l_log_module);
338348 
338349 END IF;
338350 
338351 -- select APPS owner
338352 SELECT oracle_username
338353   INTO p_apps_owner
338354   FROM fnd_oracle_userid
338355  WHERE read_only_flag = 'U'
338356 ;
338357 
338358 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
338359       trace
338360          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
338361                         ' - p_language = '||p_language||
338362                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
338363                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
338364                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
338365                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
338366          ,p_level    => C_LEVEL_STATEMENT
338367          ,p_module   => l_log_module);
338368 END IF;
338369 
338370 
338371 --
338372 INSERT INTO xla_diag_sources --hdr1
338373 (
338374         event_id
338375       , ledger_id
338376       , sla_ledger_id
338377       , description_language
338378       , object_name
338379       , object_type_code
338380       , line_number
338381       , source_application_id
338382       , source_type_code
338383       , source_code
338384       , source_value
338385       , source_meaning
338386       , created_by
338387       , creation_date
338388       , last_update_date
338389       , last_updated_by
338390       , last_update_login
338391       , program_update_date
338392       , program_application_id
338393       , program_id
338394       , request_id
338395 )
338396 SELECT
338397         event_id
338398       , p_target_ledger_id
338399       , p_sla_ledger_id
338400       , p_language
338401       , object_name
338402       , object_type_code
338403       , line_number
338404       , source_application_id
338405       , source_type_code
338406       , source_code
338407       , SUBSTR(source_value ,1,1996)
338408       , SUBSTR(source_meaning,1,200)
338409       , xla_environment_pkg.g_Usr_Id
338410       , TRUNC(SYSDATE)
338411       , TRUNC(SYSDATE)
338412       , xla_environment_pkg.g_Usr_Id
338413       , xla_environment_pkg.g_Login_Id
338414       , TRUNC(SYSDATE)
338415       , xla_environment_pkg.g_Prog_Appl_Id
338416       , xla_environment_pkg.g_Prog_Id
338417       , xla_environment_pkg.g_Req_Id
338418   FROM (
338419        SELECT xet.event_id                  event_id
338420             , 0                             line_number
338421             , CASE r
338422                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
338423                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
338424                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
338425                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
338426                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
338427                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
338428                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
338429                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
338430                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
338431                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
338432                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
338433                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
338434                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
338435                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
338436                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
338437                 
338438                ELSE null
338439               END                           object_name
338440             , CASE r
338441                 WHEN 1 THEN 'HEADER' 
338442                 WHEN 2 THEN 'HEADER' 
338443                 WHEN 3 THEN 'HEADER' 
338444                 WHEN 4 THEN 'HEADER' 
338445                 WHEN 5 THEN 'HEADER' 
338446                 WHEN 6 THEN 'HEADER' 
338447                 WHEN 7 THEN 'HEADER' 
338448                 WHEN 8 THEN 'HEADER' 
338449                 WHEN 9 THEN 'HEADER' 
338450                 WHEN 10 THEN 'HEADER' 
338451                 WHEN 11 THEN 'HEADER' 
338452                 WHEN 12 THEN 'HEADER' 
338453                 WHEN 13 THEN 'HEADER' 
338454                 WHEN 14 THEN 'HEADER' 
338455                 WHEN 15 THEN 'HEADER' 
338456                 
338457                 ELSE null
338458               END                           object_type_code
338459             , CASE r
338460                 WHEN 1 THEN '707' 
338461                 WHEN 2 THEN '707' 
338462                 WHEN 3 THEN '707' 
338463                 WHEN 4 THEN '707' 
338464                 WHEN 5 THEN '707' 
338465                 WHEN 6 THEN '707' 
338466                 WHEN 7 THEN '707' 
338467                 WHEN 8 THEN '707' 
338468                 WHEN 9 THEN '707' 
338469                 WHEN 10 THEN '707' 
338470                 WHEN 11 THEN '707' 
338471                 WHEN 12 THEN '707' 
338472                 WHEN 13 THEN '707' 
338473                 WHEN 14 THEN '707' 
338474                 WHEN 15 THEN '707' 
338475                 
338476                 ELSE null
338477               END                           source_application_id
338478             , 'S'             source_type_code
338479             , CASE r
338480                 WHEN 1 THEN 'TRANSACTION_ID' 
338481                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
338482                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
338483                 WHEN 4 THEN 'TRANSACTION_UOM' 
338484                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
338485                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
338486                 WHEN 7 THEN 'INTERORG_REVENUE_ACCOUNT' 
338487                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
338488                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
338489                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
338490                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
338491                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
338492                 WHEN 13 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
338493                 WHEN 14 THEN 'DISTRIBUTION_TYPE' 
338494                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
338495                 
338496                 ELSE null
338497               END                           source_code
338498             , CASE r
338499                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
338500                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
338501                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
338502                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
338503                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
338504                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
338505                 WHEN 7 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
338506                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
338507                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
338508                 WHEN 10 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
338509                 WHEN 11 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
338510                 WHEN 12 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
338511                 WHEN 13 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
338512                 WHEN 14 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
338513                 WHEN 15 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
338514                 
338515                 ELSE null
338516               END                           source_value
338517             , CASE r
338518                 WHEN 14 THEN fvl85.meaning
338519                 WHEN 15 THEN fvl114.meaning
338520                 
338521                 ELSE null
338522               END               source_meaning
338523         FROM xla_events_gt     xet  
338524       , CST_XLA_INTERORG_PARAMS_REF_V  h1
338525       , CST_XLA_INV_HEADERS_V  h2
338526       , CST_XLA_INV_REF_V  h4
338527       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
338528       , CST_XLA_INV_TXN_TYPES_REF_V  h6
338529       , CST_XLA_PLA_CATEGORY_REF_V  h7
338530   , fnd_lookup_values    fvl85
338531   , fnd_lookup_values    fvl114
338532             ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
338533        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
338534          AND xet.event_type_code = C_EVENT_TYPE_CODE
338535             AND h2.event_id = xet.event_id
338536   AND h1.event_id (+) = h2.event_id
338537  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
338538 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
338539 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
338540   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
338541   AND fvl85.view_application_id(+) = 700
338542   AND fvl85.language(+)            = USERENV('LANG')
338543      AND fvl114.lookup_type(+)         = 'YES_NO'
338544   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
338545   AND fvl114.view_application_id(+) = 0
338546   AND fvl114.language(+)            = USERENV('LANG')
338547   
338548 )
338549 ;
338550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
338551 
338552       trace
338553          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
338554          ,p_level    => C_LEVEL_STATEMENT
338555          ,p_module   => l_log_module);
338556 
338557 END IF;
338558 --
338559 
338560 
338561 
338562 --
338563 INSERT INTO xla_diag_sources --line1
338564 (
338565         event_id
338566       , ledger_id
338567       , sla_ledger_id
338568       , description_language
338569       , object_name
338570       , object_type_code
338571       , line_number
338572       , source_application_id
338573       , source_type_code
338574       , source_code
338575       , source_value
338576       , source_meaning
338577       , created_by
338578       , creation_date
338579       , last_update_date
338580       , last_updated_by
338581       , last_update_login
338582       , program_update_date
338583       , program_application_id
338584       , program_id
338585       , request_id
338586 )
338587 SELECT  event_id
338588       , p_target_ledger_id
338589       , p_sla_ledger_id
338590       , p_language
338591       , object_name
338592       , object_type_code
338593       , line_number
338594       , source_application_id
338595       , source_type_code
338596       , source_code
338597       , SUBSTR(source_value,1,1996)
338598       , SUBSTR(source_meaning,1,200)
338599       , xla_environment_pkg.g_Usr_Id
338600       , TRUNC(SYSDATE)
338601       , TRUNC(SYSDATE)
338602       , xla_environment_pkg.g_Usr_Id
338603       , xla_environment_pkg.g_Login_Id
338604       , TRUNC(SYSDATE)
338605       , xla_environment_pkg.g_Prog_Appl_Id
338606       , xla_environment_pkg.g_Prog_Id
338607       , xla_environment_pkg.g_Req_Id
338608   FROM (
338609        SELECT xet.event_id                  event_id
338610             , l3.line_number                 line_number
338611             , CASE r
338612                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
338613                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
338614                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
338615                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
338616                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
338617                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
338618                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
338619                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
338620                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
338621                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
338622                 
338623                ELSE null
338624               END                           object_name
338625             , CASE r
338626                 WHEN 1 THEN 'LINE' 
338627                 WHEN 2 THEN 'LINE' 
338628                 WHEN 3 THEN 'LINE' 
338629                 WHEN 4 THEN 'LINE' 
338630                 WHEN 5 THEN 'LINE' 
338631                 WHEN 6 THEN 'LINE' 
338632                 WHEN 7 THEN 'LINE' 
338633                 WHEN 8 THEN 'LINE' 
338634                 WHEN 9 THEN 'LINE' 
338635                 WHEN 10 THEN 'LINE' 
338636                 
338637                 ELSE null
338638               END                           object_type_code
338639             , CASE r
338640                 WHEN 1 THEN '707' 
338641                 WHEN 2 THEN '707' 
338642                 WHEN 3 THEN '707' 
338643                 WHEN 4 THEN '707' 
338644                 WHEN 5 THEN '707' 
338645                 WHEN 6 THEN '707' 
338646                 WHEN 7 THEN '707' 
338647                 WHEN 8 THEN '707' 
338648                 WHEN 9 THEN '707' 
338649                 WHEN 10 THEN '707' 
338650                 
338651                 ELSE null
338652               END                           source_application_id
338653             , 'S'             source_type_code
338654             , CASE r
338655                 WHEN 1 THEN 'COST_ELEMENT_ID' 
338656                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
338657                 WHEN 3 THEN 'CURRENCY_CODE' 
338658                 WHEN 4 THEN 'ENTERED_AMOUNT' 
338659                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
338660                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
338661                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
338662                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
338663                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
338664                 WHEN 10 THEN 'L_ORGANIZATION_CODE' 
338665                 
338666                 ELSE null
338667               END                           source_code
338668             , CASE r
338669                 WHEN 1 THEN TO_CHAR(l3.COST_ELEMENT_ID)
338670                 WHEN 2 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
338671                 WHEN 3 THEN TO_CHAR(l3.CURRENCY_CODE)
338672                 WHEN 4 THEN TO_CHAR(l3.ENTERED_AMOUNT)
338673                 WHEN 5 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
338674                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
338675                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
338676                 WHEN 8 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
338677                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
338678                 WHEN 10 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
338679                 
338680                 ELSE null
338681               END                           source_value
338682             , CASE r
338683                 WHEN 1 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
338684                           1009615
338685                          ,TO_CHAR(l3.COST_ELEMENT_ID)
338686                          ,'COST_ELEMENT_ID'
338687                          ,'S'
338688                          ,707)
338689                 
338690                 ELSE null
338691               END               source_meaning
338692          FROM  xla_events_gt     xet  
338693         , CST_XLA_INV_LINES_V  l3
338694             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
338695         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
338696           AND xet.event_type_code = C_EVENT_TYPE_CODE
338697             AND l3.event_id          = xet.event_id
338698 
338699 )
338700 ;
338701 --
338702 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
338703 
338704       trace
338705          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
338706          ,p_level    => C_LEVEL_STATEMENT
338707          ,p_module   => l_log_module);
338708 
338709 END IF;
338710 
338711 
338712 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
338713       trace
338714          (p_msg      => 'END of insert_sources_565'
338715          ,p_level    => C_LEVEL_PROCEDURE
338716          ,p_module   => l_log_module);
338717 END IF;
338718 EXCEPTION
338719   WHEN xla_exceptions_pkg.application_exception THEN
338720       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
338721             trace
338722                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
338723                ,p_level    => C_LEVEL_EXCEPTION
338724                ,p_module   => l_log_module);
338725       END IF;
338726       RAISE;
338727   WHEN OTHERS THEN
338728       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
338729             trace
338730                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
338731                ,p_level    => C_LEVEL_EXCEPTION
338732                ,p_module   => l_log_module);
338733        END IF;
338734        xla_exceptions_pkg.raise_message
338735            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_565');
338736 END insert_sources_565;
338737 --
338738 
338739 ---------------------------------------
338740 --
338741 -- PRIVATE FUNCTION
338742 --         EventType_565
338743 --
338744 ----------------------------------------
338745 --
338746 FUNCTION EventType_565
338747        (p_application_id         IN NUMBER
338748        ,p_base_ledger_id         IN NUMBER
338749        ,p_target_ledger_id       IN NUMBER
338750        ,p_language               IN VARCHAR2
338751        ,p_currency_code          IN VARCHAR2
338752        ,p_sla_ledger_id          IN NUMBER
338753        ,p_pad_start_date         IN DATE
338754        ,p_pad_end_date           IN DATE
338755        ,p_primary_ledger_id      IN NUMBER)
338756 RETURN BOOLEAN IS
338757 --
338758 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_TP';
338759 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
338760 
338761 l_calculate_acctd_flag   VARCHAR2(1) :='N';
338762 l_calculate_g_l_flag     VARCHAR2(1) :='N';
338763 --
338764 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338765 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338766 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
338767 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
338768 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338769 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
338770 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
338771 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338772 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
338773 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
338774 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338775 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338776 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338777 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
338778 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
338779 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
338780 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
338781 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
338782 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
338783 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
338784 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
338785 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
338786 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
338787 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
338788 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
338789 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
338790 
338791 l_event_id                             NUMBER;
338792 l_previous_event_id                    NUMBER;
338793 l_first_event_id                       NUMBER;
338794 l_last_event_id                        NUMBER;
338795 
338796 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
338797 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
338798 --
338799 --
338800 l_result                    BOOLEAN := TRUE;
338801 l_rows                      NUMBER  := 1000;
338802 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, Transfer Pricing';
338803 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
338804 l_description               VARCHAR2(4000);
338805 l_transaction_reversal      NUMBER;
338806 l_ae_header_id              NUMBER;
338807 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
338808 l_log_module                VARCHAR2(240);
338809 --
338810 l_acct_reversal_source      VARCHAR2(30);
338811 l_trx_reversal_source       VARCHAR2(30);
338812 
338813 l_continue_with_lines       BOOLEAN := TRUE;
338814 --
338815 l_acc_rev_gl_date_source    DATE;                      -- 4262811
338816 --
338817 type t_array_event_id is table of number index by binary_integer;
338818 
338819 l_rec_array_event                    t_rec_array_event;
338820 l_null_rec_array_event               t_rec_array_event;
338821 l_array_ae_header_id                 xla_number_array_type;
338822 l_actual_flag                        VARCHAR2(1) := NULL;
338823 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
338824 l_balance_type_code                  VARCHAR2(1) :=NULL;
338825 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
338826 
338827 --
338828 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
338829 --
338830 
338831 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
338832 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
338833 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
338834 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
338835 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
338836 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338837 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338838 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338839 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338840 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338841 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338842 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338843 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
338844 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
338845 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
338846 
338847 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
338848 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
338849 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
338850 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
338851 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
338852 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
338853 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
338854 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
338855 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
338856 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
338857 
338858 l_array_source_1              t_array_source_1;
338859 l_array_source_2              t_array_source_2;
338860 l_array_source_3              t_array_source_3;
338861 l_array_source_4              t_array_source_4;
338862 l_array_source_5              t_array_source_5;
338863 l_array_source_22              t_array_source_22;
338864 l_array_source_33              t_array_source_33;
338865 l_array_source_41              t_array_source_41;
338866 l_array_source_42              t_array_source_42;
338867 l_array_source_43              t_array_source_43;
338868 l_array_source_44              t_array_source_44;
338869 l_array_source_45              t_array_source_45;
338870 l_array_source_59              t_array_source_59;
338871 l_array_source_85              t_array_source_85;
338872 l_array_source_85_meaning      t_array_lookup_meaning;
338873 l_array_source_114              t_array_source_114;
338874 l_array_source_114_meaning      t_array_lookup_meaning;
338875 
338876 l_array_source_15      t_array_source_15;
338877 l_array_source_84      t_array_source_84;
338878 l_array_source_88      t_array_source_88;
338879 l_array_source_91      t_array_source_91;
338880 l_array_source_92      t_array_source_92;
338881 l_array_source_93      t_array_source_93;
338882 l_array_source_94      t_array_source_94;
338883 l_array_source_95      t_array_source_95;
338884 l_array_source_97      t_array_source_97;
338885 l_array_source_108      t_array_source_108;
338886 
338887 --
338888 CURSOR header_cur
338889 IS
338890 SELECT /*+ leading(xet) cardinality(xet,1) */
338891 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
338892 -- Event Class Code: FOB_SHIP_SENDER_SHIP
338893     xet.entity_id
338894   , xet.legal_entity_id
338895   , xet.entity_code
338896   , xet.transaction_number
338897   , xet.event_id
338898   , xet.event_class_code
338899   , xet.event_type_code
338900   , xet.event_number
338901   , xet.event_date
338902   , xet.transaction_date
338903   , xet.reference_num_1
338904   , xet.reference_num_2
338905   , xet.reference_num_3
338906   , xet.reference_num_4
338907   , xet.reference_char_1
338908   , xet.reference_char_2
338909   , xet.reference_char_3
338910   , xet.reference_char_4
338911   , xet.reference_date_1
338912   , xet.reference_date_2
338913   , xet.reference_date_3
338914   , xet.reference_date_4
338915   , xet.event_created_by
338916   , xet.budgetary_control_flag 
338917   , h2.TRANSACTION_ID    source_1
338918   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
338919   , h4.TRANSACTION_QUANTITY    source_3
338920   , h4.TRANSACTION_UOM    source_4
338921   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
338922   , h7.PLA_BRIDGING_ACCOUNT    source_22
338923   , h1.INTERORG_REVENUE_ACCOUNT    source_33
338924   , h7.PLA_MATERIAL_ACCOUNT    source_41
338925   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
338926   , h7.PLA_RESOURCE_ACCOUNT    source_43
338927   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
338928   , h7.PLA_OVERHEAD_ACCOUNT    source_45
338929   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
338930   , h2.DISTRIBUTION_TYPE    source_85
338931   , fvl85.meaning   source_85_meaning
338932   , h2.TRANSFER_TO_GL_INDICATOR    source_114
338933   , fvl114.meaning   source_114_meaning
338934   FROM xla_events_gt     xet 
338935   , CST_XLA_INTERORG_PARAMS_REF_V  h1
338936   , CST_XLA_INV_HEADERS_V  h2
338937   , CST_XLA_INV_REF_V  h4
338938   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
338939   , CST_XLA_INV_TXN_TYPES_REF_V  h6
338940   , CST_XLA_PLA_CATEGORY_REF_V  h7
338941   , fnd_lookup_values    fvl85
338942   , fnd_lookup_values    fvl114
338943  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
338944    and xet.event_type_code = C_EVENT_TYPE_CODE
338945    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
338946   AND h1.event_id (+) = h2.event_id
338947  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
338948 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
338949 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
338950   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
338951   AND fvl85.view_application_id(+) = 700
338952   AND fvl85.language(+)            = USERENV('LANG')
338953      AND fvl114.lookup_type(+)         = 'YES_NO'
338954   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
338955   AND fvl114.view_application_id(+) = 0
338956   AND fvl114.language(+)            = USERENV('LANG')
338957   
338958  ORDER BY event_id
338959 ;
338960 
338961 
338962 --
338963 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
338964 IS
338965 SELECT /*+ leading(xet) cardinality(xet,1) */
338966 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
338967 -- Event Class Code: FOB_SHIP_SENDER_SHIP
338968     xet.entity_id
338969    ,xet.legal_entity_id
338970    ,xet.entity_code
338971    ,xet.transaction_number
338972    ,xet.event_id
338973    ,xet.event_class_code
338974    ,xet.event_type_code
338975    ,xet.event_number
338976    ,xet.event_date
338977    ,xet.transaction_date
338978    ,xet.reference_num_1
338979    ,xet.reference_num_2
338980    ,xet.reference_num_3
338981    ,xet.reference_num_4
338982    ,xet.reference_char_1
338983    ,xet.reference_char_2
338984    ,xet.reference_char_3
338985    ,xet.reference_char_4
338986    ,xet.reference_date_1
338987    ,xet.reference_date_2
338988    ,xet.reference_date_3
338989    ,xet.reference_date_4
338990    ,xet.event_created_by
338991    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
338992   , l3.COST_ELEMENT_ID    source_15
338993   , l3.DISTRIBUTION_IDENTIFIER    source_84
338994   , l3.CURRENCY_CODE    source_88
338995   , l3.ENTERED_AMOUNT    source_91
338996   , l3.CURRENCY_CONVERSION_DATE    source_92
338997   , l3.CURRENCY_CONVERSION_RATE    source_93
338998   , l3.CURRENCY_CONVERSION_TYPE    source_94
338999   , l3.ACCOUNTED_AMOUNT    source_95
339000   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
339001   , l3.L_ORGANIZATION_CODE    source_108
339002   FROM xla_events_gt     xet 
339003   , CST_XLA_INV_LINES_V  l3
339004  WHERE xet.event_id between x_first_event_id and x_last_event_id
339005    and xet.event_date between p_pad_start_date and p_pad_end_date
339006    and xet.event_type_code = C_EVENT_TYPE_CODE
339007    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
339008 ;
339009 
339010 --
339011 BEGIN
339012 IF g_log_enabled THEN
339013    l_log_module := C_DEFAULT_MODULE||'.EventType_565';
339014 END IF;
339015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
339016    trace
339017       (p_msg      => 'BEGIN of EventType_565'
339018       ,p_level    => C_LEVEL_PROCEDURE
339019       ,p_module   => l_log_module);
339020 END IF;
339021 
339022 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
339023    trace
339024       (p_msg      => 'p_application_id = '||p_application_id||
339025                      ' - p_base_ledger_id = '||p_base_ledger_id||
339026                      ' - p_target_ledger_id  = '||p_target_ledger_id||
339027                      ' - p_language = '||p_language||
339028                      ' - p_currency_code = '||p_currency_code||
339029                      ' - p_sla_ledger_id = '||p_sla_ledger_id
339030       ,p_level    => C_LEVEL_STATEMENT
339031       ,p_module   => l_log_module);
339032 END IF;
339033 --
339034 -- initialze arrays
339035 --
339036 g_array_event.DELETE;
339037 l_rec_array_event := l_null_rec_array_event;
339038 --
339039 --------------------------------------
339040 -- 4262811 Initialze MPA Line Number
339041 --------------------------------------
339042 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
339043 
339044 --
339045 
339046 --
339047 OPEN header_cur;
339048 --
339049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
339050    trace
339051    (p_msg      => 'SQL - FETCH header_cur'
339052    ,p_level    => C_LEVEL_STATEMENT
339053    ,p_module   => l_log_module);
339054 END IF;
339055 --
339056 LOOP
339057 FETCH header_cur BULK COLLECT INTO
339058         l_array_entity_id
339059       , l_array_legal_entity_id
339060       , l_array_entity_code
339061       , l_array_transaction_num
339062       , l_array_event_id
339063       , l_array_class_code
339064       , l_array_event_type
339065       , l_array_event_number
339066       , l_array_event_date
339067       , l_array_transaction_date
339068       , l_array_reference_num_1
339069       , l_array_reference_num_2
339070       , l_array_reference_num_3
339071       , l_array_reference_num_4
339072       , l_array_reference_char_1
339073       , l_array_reference_char_2
339074       , l_array_reference_char_3
339075       , l_array_reference_char_4
339076       , l_array_reference_date_1
339077       , l_array_reference_date_2
339078       , l_array_reference_date_3
339079       , l_array_reference_date_4
339080       , l_array_event_created_by
339081       , l_array_budgetary_control_flag 
339082       , l_array_source_1
339083       , l_array_source_2
339084       , l_array_source_3
339085       , l_array_source_4
339086       , l_array_source_5
339087       , l_array_source_22
339088       , l_array_source_33
339089       , l_array_source_41
339090       , l_array_source_42
339091       , l_array_source_43
339092       , l_array_source_44
339093       , l_array_source_45
339094       , l_array_source_59
339095       , l_array_source_85
339096       , l_array_source_85_meaning
339097       , l_array_source_114
339098       , l_array_source_114_meaning
339099       LIMIT l_rows;
339100 --
339101 IF (C_LEVEL_EVENT >= g_log_level) THEN
339102    trace
339103    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
339104    ,p_level    => C_LEVEL_EVENT
339105    ,p_module   => l_log_module);
339106 END IF;
339107 --
339108 EXIT WHEN l_array_entity_id.COUNT = 0;
339109 
339110 -- initialize arrays
339111 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
339112 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
339113 
339114 --
339115 -- Bug 4458708
339116 --
339117 XLA_AE_LINES_PKG.g_LineNumber := 0;
339118 
339119 
339120 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
339121 g_last_hdr_idx := l_array_event_id.LAST;
339122 --
339123 -- loop for the headers. Each iteration is for each header extract row
339124 -- fetched in header cursor
339125 --
339126 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
339127 
339128 --
339129 -- set event info as cache for other routines to refer event attributes
339130 --
339131 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
339132    (p_application_id           => p_application_id
339133    ,p_primary_ledger_id        => p_primary_ledger_id
339134    ,p_base_ledger_id           => p_base_ledger_id
339135    ,p_target_ledger_id         => p_target_ledger_id
339136    ,p_entity_id                => l_array_entity_id(hdr_idx)
339137    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
339138    ,p_entity_code              => l_array_entity_code(hdr_idx)
339139    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
339140    ,p_event_id                 => l_array_event_id(hdr_idx)
339141    ,p_event_class_code         => l_array_class_code(hdr_idx)
339142    ,p_event_type_code          => l_array_event_type(hdr_idx)
339143    ,p_event_number             => l_array_event_number(hdr_idx)
339144    ,p_event_date               => l_array_event_date(hdr_idx)
339145    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
339146    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
339147    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
339148    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
339149    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
339150    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
339151    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
339152    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
339153    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
339154    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
339155    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
339156    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
339157    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
339158    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
339159    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
339160 
339161 --
339162 -- set the status of entry to C_VALID (0)
339163 --
339164 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
339165 
339166 --
339167 -- initialize a row for ae header
339168 --
339169 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
339170 
339171 l_event_id := l_array_event_id(hdr_idx);
339172 
339173 --
339174 -- storing the hdr_idx for event. May be used by line cursor.
339175 --
339176 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
339177 
339178 --
339179 -- store sources from header extract. This can be improved to
339180 -- store only those sources from header extract that may be used in lines
339181 --
339182 
339183 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
339184 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
339185 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
339186 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
339187 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
339188 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
339189 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
339190 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
339191 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
339192 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
339193 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
339194 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
339195 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
339196 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
339197 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
339198 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
339199 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
339200 
339201 --
339202 -- initilaize the status of ae headers for diffrent balance types
339203 -- the status is initialised to C_NOT_CREATED (2)
339204 --
339205 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
339206 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
339207 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
339208 
339209 --
339210 -- call api to validate and store accounting attributes for header
339211 --
339212 
339213 ------------------------------------------------------------
339214 -- Accrual Reversal : to get date for Standard Source (NONE)
339215 ------------------------------------------------------------
339216 l_acc_rev_gl_date_source := NULL;
339217 
339218      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
339219       l_rec_acct_attrs.array_date_value(1) := 
339220 xla_ae_sources_pkg.GetSystemSourceDate(
339221    p_source_code           => 'XLA_REFERENCE_DATE_1'
339222  , p_source_type_code      => 'Y'
339223  , p_source_application_id =>  602
339224 );
339225      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
339226       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
339227 
339228 
339229 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
339230 
339231 XLA_AE_HEADER_PKG.SetJeCategoryName;
339232 
339233 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
339234 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
339235 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
339236 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
339237 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
339238 
339239 
339240 -- No header level analytical criteria
339241 
339242 --
339243 --accounting attribute enhancement, bug 3612931
339244 --
339245 l_trx_reversal_source := SUBSTR(NULL, 1,30);
339246 
339247 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
339248    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
339249 
339250    xla_accounting_err_pkg.build_message
339251       (p_appli_s_name            => 'XLA'
339252       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
339253       ,p_token_1                 => 'ACCT_ATTR_NAME'
339254       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
339255       ,p_token_2                 => 'PRODUCT_NAME'
339256       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
339257       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
339258       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
339259       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
339260 
339261 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
339262    --
339263    -- following sets the accounting attributes needed to reverse
339264    -- accounting for a distributeion
339265    --
339266    xla_ae_lines_pkg.SetTrxReversalAttrs
339267       (p_event_id              => l_event_id
339268       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
339269       ,p_trx_reversal_source   => l_trx_reversal_source);
339270 
339271 END IF;
339272 
339273 
339274 ----------------------------------------------------------------
339275 -- 4262811 -  update the header statuses to invalid in need be
339276 ----------------------------------------------------------------
339277 --
339278 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
339279 
339280 
339281   -----------------------------------------------
339282   -- No accrual reversal for the event class/type
339283   -----------------------------------------------
339284 ----------------------------------------------------------------
339285 
339286 --
339287 -- this ends the header loop iteration for one bulk fetch
339288 --
339289 END LOOP;
339290 
339291 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
339292 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
339293 
339294 --
339295 -- insert dummy rows into lines gt table that were created due to
339296 -- transaction reversals
339297 --
339298 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
339299    l_result := XLA_AE_LINES_PKG.InsertLines;
339300 END IF;
339301 
339302 --
339303 -- reset the temp_line_num for each set of events fetched from header
339304 -- cursor rather than doing it for each new event in line cursor
339305 -- Bug 3939231
339306 --
339307 xla_ae_lines_pkg.g_temp_line_num := 0;
339308 
339309 
339310 
339311 --
339312 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
339313 --
339314 --
339315 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
339316 
339317       trace
339318          (p_msg      => 'SQL - FETCH line_cur'
339319          ,p_level    => C_LEVEL_STATEMENT
339320          ,p_module   => l_log_module);
339321 
339322 END IF;
339323 --
339324 --
339325 LOOP
339326   --
339327   FETCH line_cur BULK COLLECT INTO
339328         l_array_entity_id
339329       , l_array_legal_entity_id
339330       , l_array_entity_code
339331       , l_array_transaction_num
339332       , l_array_event_id
339333       , l_array_class_code
339334       , l_array_event_type
339335       , l_array_event_number
339336       , l_array_event_date
339337       , l_array_transaction_date
339338       , l_array_reference_num_1
339339       , l_array_reference_num_2
339340       , l_array_reference_num_3
339341       , l_array_reference_num_4
339342       , l_array_reference_char_1
339343       , l_array_reference_char_2
339344       , l_array_reference_char_3
339345       , l_array_reference_char_4
339346       , l_array_reference_date_1
339347       , l_array_reference_date_2
339348       , l_array_reference_date_3
339349       , l_array_reference_date_4
339350       , l_array_event_created_by
339351       , l_array_budgetary_control_flag
339352       , l_array_extract_line_num 
339353       , l_array_source_15
339354       , l_array_source_84
339355       , l_array_source_88
339356       , l_array_source_91
339357       , l_array_source_92
339358       , l_array_source_93
339359       , l_array_source_94
339360       , l_array_source_95
339361       , l_array_source_97
339362       , l_array_source_108
339363       LIMIT l_rows;
339364 
339365   --
339366   IF (C_LEVEL_EVENT >= g_log_level) THEN
339367             trace
339368                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
339369                ,p_level    => C_LEVEL_EVENT
339370                ,p_module   => l_log_module);
339371   END IF;
339372   --
339373   EXIT WHEN l_array_entity_id.count = 0;
339374 
339375   XLA_AE_LINES_PKG.g_rec_lines := null;
339376 
339377 --
339378 -- Bug 4458708
339379 --
339380 XLA_AE_LINES_PKG.g_LineNumber := 0;
339381 --
339382 --
339383 
339384 FOR Idx IN 1..l_array_event_id.count LOOP
339385    --
339386    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
339387    --
339388    l_event_id := l_array_event_id(idx);  -- 5648433
339389 
339390    --
339391    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
339392    --
339393 
339394    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
339395              (g_array_event(l_event_id).array_value_num('header_index'))
339396          ,'N'
339397          ) <> 'Y'
339398    THEN
339399       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
339400          trace
339401             (p_msg      => 'Trancaction revesal option is not Y '
339402             ,p_level    => C_LEVEL_STATEMENT
339403             ,p_module   => l_log_module);
339404       END IF;
339405 
339406 --
339407 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
339408 --
339409 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
339410 --
339411 -- set event info as cache for other routines to refer event attributes
339412 --
339413 
339414 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
339415    l_previous_event_id := l_event_id;
339416 
339417    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
339418       (p_application_id           => p_application_id
339419       ,p_primary_ledger_id        => p_primary_ledger_id
339420       ,p_base_ledger_id           => p_base_ledger_id
339421       ,p_target_ledger_id         => p_target_ledger_id
339422       ,p_entity_id                => l_array_entity_id(Idx)
339423       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
339424       ,p_entity_code              => l_array_entity_code(Idx)
339425       ,p_transaction_num          => l_array_transaction_num(Idx)
339426       ,p_event_id                 => l_array_event_id(Idx)
339427       ,p_event_class_code         => l_array_class_code(Idx)
339428       ,p_event_type_code          => l_array_event_type(Idx)
339429       ,p_event_number             => l_array_event_number(Idx)
339430       ,p_event_date               => l_array_event_date(Idx)
339431       ,p_transaction_date         => l_array_transaction_date(Idx)
339432       ,p_reference_num_1          => l_array_reference_num_1(Idx)
339433       ,p_reference_num_2          => l_array_reference_num_2(Idx)
339434       ,p_reference_num_3          => l_array_reference_num_3(Idx)
339435       ,p_reference_num_4          => l_array_reference_num_4(Idx)
339436       ,p_reference_char_1         => l_array_reference_char_1(Idx)
339437       ,p_reference_char_2         => l_array_reference_char_2(Idx)
339438       ,p_reference_char_3         => l_array_reference_char_3(Idx)
339439       ,p_reference_char_4         => l_array_reference_char_4(Idx)
339440       ,p_reference_date_1         => l_array_reference_date_1(Idx)
339441       ,p_reference_date_2         => l_array_reference_date_2(Idx)
339442       ,p_reference_date_3         => l_array_reference_date_3(Idx)
339443       ,p_reference_date_4         => l_array_reference_date_4(Idx)
339444       ,p_event_created_by         => l_array_event_created_by(Idx)
339445       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
339446        --
339447 END IF;
339448 
339449 
339450 
339451 --
339452 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
339453 
339454 l_acct_reversal_source := SUBSTR(NULL, 1,30);
339455 
339456 IF l_continue_with_lines THEN
339457    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
339458       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
339459 
339460       xla_accounting_err_pkg.build_message
339461          (p_appli_s_name            => 'XLA'
339462          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
339463          ,p_token_1                 => 'LINE_NUMBER'
339464          ,p_value_1                 => l_array_extract_line_num(Idx)
339465          ,p_token_2                 => 'PRODUCT_NAME'
339466          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
339467          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
339468          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
339469          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
339470 
339471    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
339472       --
339473       -- following sets the accounting attributes needed to reverse
339474       -- accounting for a distributeion
339475       --
339476 
339477       --
339478       -- 5217187
339479       --
339480       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
339481       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
339482                                        g_array_event(l_event_id).array_value_num('header_index'));
339483       --
339484       --
339485 
339486       -- No reversal code generated
339487 
339488       xla_ae_lines_pkg.SetAcctReversalAttrs
339489          (p_event_id             => l_event_id
339490          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
339491          ,p_calculate_acctd_flag => l_calculate_acctd_flag
339492          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
339493    END IF;
339494 
339495    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
339496        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
339497 
339498 --
339499 AcctLineType_191 (
339500  p_application_id  => p_application_id
339501  ,p_event_id     => l_event_id
339502  ,p_calculate_acctd_flag => l_calculate_acctd_flag
339503  ,p_calculate_g_l_flag => l_calculate_g_l_flag
339504  ,p_actual_flag => l_actual_flag
339505  ,p_balance_type_code => l_balance_type_code
339506  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
339507  
339508  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
339509  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
339510  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
339511  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
339512  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
339513  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
339514  , p_source_84 => l_array_source_84(Idx)
339515  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
339516  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
339517  , p_source_88 => l_array_source_88(Idx)
339518  , p_source_91 => l_array_source_91(Idx)
339519  , p_source_92 => l_array_source_92(Idx)
339520  , p_source_93 => l_array_source_93(Idx)
339521  , p_source_94 => l_array_source_94(Idx)
339522  , p_source_95 => l_array_source_95(Idx)
339523  , p_source_97 => l_array_source_97(Idx)
339524  );
339525 If(l_balance_type_code = 'A') THEN
339526   l_actual_gain_loss_ref := l_gain_or_loss_ref;
339527 END IF;
339528 
339529 --
339530 
339531 
339532 --
339533 AcctLineType_276 (
339534  p_application_id  => p_application_id
339535  ,p_event_id     => l_event_id
339536  ,p_calculate_acctd_flag => l_calculate_acctd_flag
339537  ,p_calculate_g_l_flag => l_calculate_g_l_flag
339538  ,p_actual_flag => l_actual_flag
339539  ,p_balance_type_code => l_balance_type_code
339540  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
339541  
339542  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
339543  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
339544  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
339545  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
339546  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
339547  , p_source_15 => l_array_source_15(Idx)
339548  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
339549  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
339550  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
339551  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
339552  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
339553  , p_source_84 => l_array_source_84(Idx)
339554  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
339555  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
339556  , p_source_88 => l_array_source_88(Idx)
339557  , p_source_91 => l_array_source_91(Idx)
339558  , p_source_92 => l_array_source_92(Idx)
339559  , p_source_93 => l_array_source_93(Idx)
339560  , p_source_94 => l_array_source_94(Idx)
339561  , p_source_95 => l_array_source_95(Idx)
339562  , p_source_97 => l_array_source_97(Idx)
339563  , p_source_108 => l_array_source_108(Idx)
339564  );
339565 If(l_balance_type_code = 'A') THEN
339566   l_actual_gain_loss_ref := l_gain_or_loss_ref;
339567 END IF;
339568 
339569 --
339570 
339571 
339572 --
339573 AcctLineType_396 (
339574  p_application_id  => p_application_id
339575  ,p_event_id     => l_event_id
339576  ,p_calculate_acctd_flag => l_calculate_acctd_flag
339577  ,p_calculate_g_l_flag => l_calculate_g_l_flag
339578  ,p_actual_flag => l_actual_flag
339579  ,p_balance_type_code => l_balance_type_code
339580  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
339581  
339582  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
339583  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
339584  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
339585  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
339586  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
339587  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
339588  , p_source_84 => l_array_source_84(Idx)
339589  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
339590  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
339591  , p_source_88 => l_array_source_88(Idx)
339592  , p_source_91 => l_array_source_91(Idx)
339593  , p_source_92 => l_array_source_92(Idx)
339594  , p_source_93 => l_array_source_93(Idx)
339595  , p_source_94 => l_array_source_94(Idx)
339596  , p_source_95 => l_array_source_95(Idx)
339597  , p_source_97 => l_array_source_97(Idx)
339598  );
339599 If(l_balance_type_code = 'A') THEN
339600   l_actual_gain_loss_ref := l_gain_or_loss_ref;
339601 END IF;
339602 
339603 --
339604 
339605 
339606 --
339607 AcctLineType_456 (
339608  p_application_id  => p_application_id
339609  ,p_event_id     => l_event_id
339610  ,p_calculate_acctd_flag => l_calculate_acctd_flag
339611  ,p_calculate_g_l_flag => l_calculate_g_l_flag
339612  ,p_actual_flag => l_actual_flag
339613  ,p_balance_type_code => l_balance_type_code
339614  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
339615  
339616  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
339617  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
339618  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
339619  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
339620  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
339621  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
339622  , p_source_84 => l_array_source_84(Idx)
339623  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
339624  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
339625  , p_source_88 => l_array_source_88(Idx)
339626  , p_source_91 => l_array_source_91(Idx)
339627  , p_source_92 => l_array_source_92(Idx)
339628  , p_source_93 => l_array_source_93(Idx)
339629  , p_source_94 => l_array_source_94(Idx)
339630  , p_source_95 => l_array_source_95(Idx)
339631  , p_source_97 => l_array_source_97(Idx)
339632  );
339633 If(l_balance_type_code = 'A') THEN
339634   l_actual_gain_loss_ref := l_gain_or_loss_ref;
339635 END IF;
339636 
339637 --
339638 
339639       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
339640       -- or secondary ledger that has different currency with primary
339641       -- or alc that is calculated by sla
339642       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
339643             (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'))
339644 
339645 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
339646 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
339647           AND (l_actual_flag = 'A')) THEN
339648         XLA_AE_LINES_PKG.CreateGainOrLossLines(
339649           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
339650          ,p_application_id   => p_application_id
339651          ,p_amb_context_code => 'DEFAULT'
339652          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
339653          ,p_event_class_code => C_EVENT_CLASS_CODE
339654          ,p_event_type_code  => C_EVENT_TYPE_CODE
339655          
339656          ,p_gain_ccid        => -1
339657          ,p_loss_ccid        => -1
339658 
339659          ,p_actual_flag      => l_actual_flag
339660          ,p_enc_flag         => null
339661          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
339662          ,p_enc_g_l_ref      => null
339663          );
339664       END IF;
339665    END IF;
339666 END IF;
339667 
339668    ELSE
339669       --
339670       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
339671       --
339672       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
339673          trace
339674             (p_msg      => 'Trancaction revesal option is Y'
339675             ,p_level    => C_LEVEL_STATEMENT
339676             ,p_module   => l_log_module);
339677       END IF;
339678    END IF;
339679 
339680 END LOOP;
339681 l_result := XLA_AE_LINES_PKG.InsertLines ;
339682 end loop;
339683 close line_cur;
339684 
339685 
339686 --
339687 -- insert headers into xla_ae_headers_gt table
339688 --
339689 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
339690 
339691 -- insert into errors table here.
339692 
339693 END LOOP;
339694 
339695 --
339696 -- 4865292
339697 --
339698 -- Compare g_hdr_extract_count with event count in
339699 -- CreateHeadersAndLines.
339700 --
339701 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
339702 
339703 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
339704    trace (p_msg     => '# rows extracted from header extract objects '
339705                     || ' (running total): '
339706                     || g_hdr_extract_count
339707          ,p_level   => C_LEVEL_STATEMENT
339708          ,p_module  => l_log_module);
339709 END IF;
339710 
339711 CLOSE header_cur;
339712 --
339713 
339714 --
339715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
339716    trace
339717       (p_msg      => 'END of EventType_565'
339718       ,p_level    => C_LEVEL_PROCEDURE
339719       ,p_module   => l_log_module);
339720 END IF;
339721 --
339722 RETURN l_result;
339723 EXCEPTION
339724 WHEN xla_exceptions_pkg.application_exception THEN
339725    
339726 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
339727 
339728    
339729 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
339730 
339731    RAISE;
339732 
339733 WHEN NO_DATA_FOUND THEN
339734 
339735 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
339736 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
339737 
339738 FOR header_record IN header_cur
339739 LOOP
339740     l_array_header_events(header_record.event_id) := header_record.event_id;
339741 END LOOP;
339742 
339743 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
339744 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
339745 
339746 fnd_file.put_line(fnd_file.LOG, '                    ');
339747 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
339748 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
339749 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
339750 
339751 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
339752 LOOP
339753 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
339754 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
339755         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
339756 	END IF;
339757 END LOOP;
339758 
339759 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
339760 fnd_file.put_line(fnd_file.LOG, '                    ');
339761 
339762 
339763 xla_exceptions_pkg.raise_message
339764       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_565');
339765 
339766 
339767 WHEN OTHERS THEN
339768    xla_exceptions_pkg.raise_message
339769       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_565');
339770 END EventType_565;
339771 --
339772 
339773 ---------------------------------------
339774 --
339775 -- PRIVATE PROCEDURE
339776 --         insert_sources_566
339777 --
339778 ----------------------------------------
339779 --
339780 PROCEDURE insert_sources_566(
339781                                 p_target_ledger_id       IN NUMBER
339782                               , p_language               IN VARCHAR2
339783                               , p_sla_ledger_id          IN NUMBER
339784                               , p_pad_start_date         IN DATE
339785                               , p_pad_end_date           IN DATE
339786                          )
339787 IS
339788 
339789 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INTRAORG_TXFR_ALL';
339790 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INTRAORG_TXFR';
339791 p_apps_owner                   VARCHAR2(30);
339792 l_log_module                   VARCHAR2(240);
339793 BEGIN
339794 IF g_log_enabled THEN
339795       l_log_module := C_DEFAULT_MODULE||'.insert_sources_566';
339796 END IF;
339797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
339798 
339799       trace
339800          (p_msg      => 'BEGIN of insert_sources_566'
339801          ,p_level    => C_LEVEL_PROCEDURE
339802          ,p_module   => l_log_module);
339803 
339804 END IF;
339805 
339806 -- select APPS owner
339807 SELECT oracle_username
339808   INTO p_apps_owner
339809   FROM fnd_oracle_userid
339810  WHERE read_only_flag = 'U'
339811 ;
339812 
339813 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
339814       trace
339815          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
339816                         ' - p_language = '||p_language||
339817                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
339818                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
339819                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
339820                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
339821          ,p_level    => C_LEVEL_STATEMENT
339822          ,p_module   => l_log_module);
339823 END IF;
339824 
339825 
339826 --
339827 INSERT INTO xla_diag_sources --hdr2
339828 (
339829         event_id
339830       , ledger_id
339831       , sla_ledger_id
339832       , description_language
339833       , object_name
339834       , object_type_code
339835       , line_number
339836       , source_application_id
339837       , source_type_code
339838       , source_code
339839       , source_value
339840       , source_meaning
339841       , created_by
339842       , creation_date
339843       , last_update_date
339844       , last_updated_by
339845       , last_update_login
339846       , program_update_date
339847       , program_application_id
339848       , program_id
339849       , request_id
339850 )
339851 SELECT
339852         event_id
339853       , p_target_ledger_id
339854       , p_sla_ledger_id
339855       , p_language
339856       , object_name
339857       , object_type_code
339858       , line_number
339859       , source_application_id
339860       , source_type_code
339861       , source_code
339862       , SUBSTR(source_value ,1,1996)
339863       , SUBSTR(source_meaning ,1,200)
339864       , xla_environment_pkg.g_Usr_Id
339865       , TRUNC(SYSDATE)
339866       , TRUNC(SYSDATE)
339867       , xla_environment_pkg.g_Usr_Id
339868       , xla_environment_pkg.g_Login_Id
339869       , TRUNC(SYSDATE)
339870       , xla_environment_pkg.g_Prog_Appl_Id
339871       , xla_environment_pkg.g_Prog_Id
339872       , xla_environment_pkg.g_Req_Id
339873   FROM (
339874        SELECT xet.event_id                  event_id
339875             , 0                          line_number
339876             , CASE r
339877                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
339878                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
339879                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
339880                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
339881                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
339882                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
339883                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
339884                 WHEN 8 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
339885                 WHEN 9 THEN 'CST_XLA_INV_HEADERS_V' 
339886                 WHEN 10 THEN 'CST_XLA_INV_HEADERS_V' 
339887                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
339888                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
339889                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
339890                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
339891                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
339892                 WHEN 16 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
339893                 WHEN 17 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
339894                 WHEN 18 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
339895                 WHEN 19 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
339896                 WHEN 20 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
339897                 WHEN 21 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
339898                 WHEN 22 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
339899                 WHEN 23 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
339900                 WHEN 24 THEN 'CST_XLA_INV_HEADERS_V' 
339901                 WHEN 25 THEN 'CST_XLA_INV_HEADERS_V' 
339902                 
339903                ELSE null
339904               END                           object_name
339905             , CASE r
339906                 WHEN 1 THEN 'HEADER' 
339907                 WHEN 2 THEN 'HEADER' 
339908                 WHEN 3 THEN 'HEADER' 
339909                 WHEN 4 THEN 'HEADER' 
339910                 WHEN 5 THEN 'HEADER' 
339911                 WHEN 6 THEN 'HEADER' 
339912                 WHEN 7 THEN 'HEADER' 
339913                 WHEN 8 THEN 'HEADER' 
339914                 WHEN 9 THEN 'HEADER' 
339915                 WHEN 10 THEN 'HEADER' 
339916                 WHEN 11 THEN 'HEADER' 
339917                 WHEN 12 THEN 'HEADER' 
339918                 WHEN 13 THEN 'HEADER' 
339919                 WHEN 14 THEN 'HEADER' 
339920                 WHEN 15 THEN 'HEADER' 
339921                 WHEN 16 THEN 'HEADER' 
339922                 WHEN 17 THEN 'HEADER' 
339923                 WHEN 18 THEN 'HEADER' 
339924                 WHEN 19 THEN 'HEADER' 
339925                 WHEN 20 THEN 'HEADER' 
339926                 WHEN 21 THEN 'HEADER' 
339927                 WHEN 22 THEN 'HEADER' 
339928                 WHEN 23 THEN 'HEADER' 
339929                 WHEN 24 THEN 'HEADER' 
339930                 WHEN 25 THEN 'HEADER' 
339931                 
339932                 ELSE null
339933               END                           object_type_code
339934             , CASE r
339935                 WHEN 1 THEN '707' 
339936                 WHEN 2 THEN '707' 
339937                 WHEN 3 THEN '707' 
339938                 WHEN 4 THEN '707' 
339939                 WHEN 5 THEN '707' 
339940                 WHEN 6 THEN '707' 
339941                 WHEN 7 THEN '707' 
339942                 WHEN 8 THEN '707' 
339943                 WHEN 9 THEN '707' 
339944                 WHEN 10 THEN '707' 
339945                 WHEN 11 THEN '707' 
339946                 WHEN 12 THEN '707' 
339947                 WHEN 13 THEN '707' 
339948                 WHEN 14 THEN '707' 
339949                 WHEN 15 THEN '707' 
339950                 WHEN 16 THEN '707' 
339951                 WHEN 17 THEN '707' 
339952                 WHEN 18 THEN '707' 
339953                 WHEN 19 THEN '707' 
339954                 WHEN 20 THEN '707' 
339955                 WHEN 21 THEN '707' 
339956                 WHEN 22 THEN '707' 
339957                 WHEN 23 THEN '707' 
339958                 WHEN 24 THEN '707' 
339959                 WHEN 25 THEN '707' 
339960                 
339961                 ELSE null
339962               END                           source_application_id
339963             , 'S'             source_type_code
339964             , CASE r
339965                 WHEN 1 THEN 'TRANSACTION_ID' 
339966                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
339967                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
339968                 WHEN 4 THEN 'TRANSACTION_UOM' 
339969                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
339970                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
339971                 WHEN 7 THEN 'PLA_EXPENSE_ACCOUNT' 
339972                 WHEN 8 THEN 'TRF_PLA_EXPENSE_ACCT' 
339973                 WHEN 9 THEN 'H_TRANSFER_COST_GROUP_ID' 
339974                 WHEN 10 THEN 'H_COST_GROUP_ID' 
339975                 WHEN 11 THEN 'H_SUBINVENTORY_CODE' 
339976                 WHEN 12 THEN 'H_TRANSFER_SUBINVENTORY' 
339977                 WHEN 13 THEN 'PLA_MATERIAL_ACCOUNT' 
339978                 WHEN 14 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
339979                 WHEN 15 THEN 'PLA_RESOURCE_ACCOUNT' 
339980                 WHEN 16 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
339981                 WHEN 17 THEN 'PLA_OVERHEAD_ACCOUNT' 
339982                 WHEN 18 THEN 'TRF_PLA_BRIDGING_ACCT' 
339983                 WHEN 19 THEN 'TRF_PLA_MATERIAL_ACCT' 
339984                 WHEN 20 THEN 'TRF_PLA_MATERIAL_OVERHEAD_ACCT' 
339985                 WHEN 21 THEN 'TRF_PLA_RESOURCE_ACCT' 
339986                 WHEN 22 THEN 'TRF_PLA_OUTSIDE_PROCESS_ACCT' 
339987                 WHEN 23 THEN 'TRF_PLA_OVERHEAD_ACCT' 
339988                 WHEN 24 THEN 'DISTRIBUTION_TYPE' 
339989                 WHEN 25 THEN 'TRANSFER_TO_GL_INDICATOR' 
339990                 
339991                 ELSE null
339992               END                           source_code
339993             , CASE r
339994                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
339995                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
339996                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
339997                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
339998                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
339999                 WHEN 6 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
340000                 WHEN 7 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
340001                 WHEN 8 THEN TO_CHAR(h7.TRF_PLA_EXPENSE_ACCT)
340002                 WHEN 9 THEN TO_CHAR(h1.H_TRANSFER_COST_GROUP_ID)
340003                 WHEN 10 THEN TO_CHAR(h1.H_COST_GROUP_ID)
340004                 WHEN 11 THEN TO_CHAR(h1.H_SUBINVENTORY_CODE)
340005                 WHEN 12 THEN TO_CHAR(h1.H_TRANSFER_SUBINVENTORY)
340006                 WHEN 13 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
340007                 WHEN 14 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
340008                 WHEN 15 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
340009                 WHEN 16 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
340010                 WHEN 17 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
340011                 WHEN 18 THEN TO_CHAR(h7.TRF_PLA_BRIDGING_ACCT)
340012                 WHEN 19 THEN TO_CHAR(h7.TRF_PLA_MATERIAL_ACCT)
340013                 WHEN 20 THEN TO_CHAR(h7.TRF_PLA_MATERIAL_OVERHEAD_ACCT)
340014                 WHEN 21 THEN TO_CHAR(h7.TRF_PLA_RESOURCE_ACCT)
340015                 WHEN 22 THEN TO_CHAR(h7.TRF_PLA_OUTSIDE_PROCESS_ACCT)
340016                 WHEN 23 THEN TO_CHAR(h7.TRF_PLA_OVERHEAD_ACCT)
340017                 WHEN 24 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
340018                 WHEN 25 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
340019                 
340020                 ELSE null
340021               END                           source_value
340022             , CASE r
340023                 WHEN 24 THEN fvl85.meaning
340024                 WHEN 25 THEN fvl114.meaning
340025                 
340026                 ELSE null
340027               END               source_meaning
340028          FROM xla_events_gt     xet  
340029       , CST_XLA_INV_HEADERS_V  h1
340030       , CST_XLA_INV_REF_V  h3
340031       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
340032       , CST_XLA_INV_TXN_TYPES_REF_V  h5
340033       , CST_XLA_PLA_CATEGORY_REF_V  h6
340034       , CST_XLA_TRF_PLA_CAT_REF_V  h7
340035   , fnd_lookup_values    fvl85
340036   , fnd_lookup_values    fvl114
340037              ,(select rownum r from all_objects where rownum <= 25 and owner = p_apps_owner)
340038          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
340039            AND xet.event_class_code = C_EVENT_CLASS_CODE
340040               AND h1.event_id = xet.event_id
340041  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
340042 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
340043 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg AND h7.trf_pla_cat_organization_id  (+) = h1.transfer_organization_id 
340044 and h7.trf_pla_cat_item_id          (+) = h1.inventory_item_id 
340045 and h7.trf_pla_subinv_cg            (+) = h1.h_trf_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
340046   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
340047   AND fvl85.view_application_id(+) = 700
340048   AND fvl85.language(+)            = USERENV('LANG')
340049      AND fvl114.lookup_type(+)         = 'YES_NO'
340050   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
340051   AND fvl114.view_application_id(+) = 0
340052   AND fvl114.language(+)            = USERENV('LANG')
340053   
340054 )
340055 ;
340056 --
340057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
340058 
340059       trace
340060          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
340061          ,p_level    => C_LEVEL_STATEMENT
340062          ,p_module   => l_log_module);
340063 
340064 END IF;
340065 --
340066 
340067 
340068 
340069 --
340070 INSERT INTO xla_diag_sources  --line2
340071 (
340072         event_id
340073       , ledger_id
340074       , sla_ledger_id
340075       , description_language
340076       , object_name
340077       , object_type_code
340078       , line_number
340079       , source_application_id
340080       , source_type_code
340081       , source_code
340082       , source_value
340083       , source_meaning
340084       , created_by
340085       , creation_date
340086       , last_update_date
340087       , last_updated_by
340088       , last_update_login
340089       , program_update_date
340090       , program_application_id
340091       , program_id
340092       , request_id
340093 )
340094 SELECT  event_id
340095       , p_target_ledger_id
340096       , p_sla_ledger_id
340097       , p_language
340098       , object_name
340099       , object_type_code
340100       , line_number
340101       , source_application_id
340102       , source_type_code
340103       , source_code
340104       , SUBSTR(source_value,1,1996)
340105       , SUBSTR(source_meaning ,1,200)
340106       , xla_environment_pkg.g_Usr_Id
340107       , TRUNC(SYSDATE)
340108       , TRUNC(SYSDATE)
340109       , xla_environment_pkg.g_Usr_Id
340110       , xla_environment_pkg.g_Login_Id
340111       , TRUNC(SYSDATE)
340112       , xla_environment_pkg.g_Prog_Appl_Id
340113       , xla_environment_pkg.g_Prog_Id
340114       , xla_environment_pkg.g_Req_Id
340115   FROM (
340116        SELECT xet.event_id                  event_id
340117             , l2.line_number                 line_number
340118             , CASE r
340119                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
340120                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
340121                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
340122                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
340123                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
340124                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
340125                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
340126                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
340127                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
340128                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
340129                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
340130                 WHEN 12 THEN 'CST_XLA_INV_LINES_V' 
340131                 
340132                ELSE null
340133               END                           object_name
340134             , CASE r
340135                 WHEN 1 THEN 'LINE' 
340136                 WHEN 2 THEN 'LINE' 
340137                 WHEN 3 THEN 'LINE' 
340138                 WHEN 4 THEN 'LINE' 
340139                 WHEN 5 THEN 'LINE' 
340140                 WHEN 6 THEN 'LINE' 
340141                 WHEN 7 THEN 'LINE' 
340142                 WHEN 8 THEN 'LINE' 
340143                 WHEN 9 THEN 'LINE' 
340144                 WHEN 10 THEN 'LINE' 
340145                 WHEN 11 THEN 'LINE' 
340146                 WHEN 12 THEN 'LINE' 
340147                 
340148                 ELSE null
340149               END                           object_type_code
340150             , CASE r
340151                 WHEN 1 THEN '707' 
340152                 WHEN 2 THEN '707' 
340153                 WHEN 3 THEN '707' 
340154                 WHEN 4 THEN '707' 
340155                 WHEN 5 THEN '707' 
340156                 WHEN 6 THEN '707' 
340157                 WHEN 7 THEN '707' 
340158                 WHEN 8 THEN '707' 
340159                 WHEN 9 THEN '707' 
340160                 WHEN 10 THEN '707' 
340161                 WHEN 11 THEN '707' 
340162                 WHEN 12 THEN '707' 
340163                 
340164                 ELSE null
340165               END                           source_application_id
340166             , 'S'             source_type_code
340167             , CASE r
340168                 WHEN 1 THEN 'COST_ELEMENT_ID' 
340169                 WHEN 2 THEN 'COST_GROUP_ID' 
340170                 WHEN 3 THEN 'SUBINVENTORY_CODE' 
340171                 WHEN 4 THEN 'DISTRIBUTION_IDENTIFIER' 
340172                 WHEN 5 THEN 'CURRENCY_CODE' 
340173                 WHEN 6 THEN 'ENTERED_AMOUNT' 
340174                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
340175                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
340176                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
340177                 WHEN 10 THEN 'ACCOUNTED_AMOUNT' 
340178                 WHEN 11 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
340179                 WHEN 12 THEN 'L_ORGANIZATION_CODE' 
340180                 
340181                 ELSE null
340182               END                           source_code
340183             , CASE r
340184                 WHEN 1 THEN TO_CHAR(l2.COST_ELEMENT_ID)
340185                 WHEN 2 THEN TO_CHAR(l2.COST_GROUP_ID)
340186                 WHEN 3 THEN TO_CHAR(l2.SUBINVENTORY_CODE)
340187                 WHEN 4 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
340188                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
340189                 WHEN 6 THEN TO_CHAR(l2.ENTERED_AMOUNT)
340190                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
340191                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
340192                 WHEN 9 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
340193                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
340194                 WHEN 11 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
340195                 WHEN 12 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
340196                 
340197                 ELSE null
340198               END                           source_value
340199             , CASE r
340200                 WHEN 1 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
340201                           1009615
340202                          ,TO_CHAR(l2.COST_ELEMENT_ID)
340203                          ,'COST_ELEMENT_ID'
340204                          ,'S'
340205                          ,707)
340206                 WHEN 3 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
340207                           1009622
340208                          ,TO_CHAR(l2.SUBINVENTORY_CODE)
340209                          ,'SUBINVENTORY_CODE'
340210                          ,'S'
340211                          ,707)
340212                 
340213                 ELSE null
340214               END               source_meaning
340215          FROM  xla_events_gt     xet  
340216         , CST_XLA_INV_LINES_V  l2
340217             , (select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
340218         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
340219           AND xet.event_class_code = C_EVENT_CLASS_CODE
340220             AND l2.event_id          = xet.event_id
340221 
340222 )
340223 ;
340224 --
340225 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
340226 
340227       trace
340228          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
340229          ,p_level    => C_LEVEL_STATEMENT
340230          ,p_module   => l_log_module);
340231 
340232 END IF;
340233 
340234 
340235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
340236       trace
340237          (p_msg      => 'END of insert_sources_566'
340238          ,p_level    => C_LEVEL_PROCEDURE
340239          ,p_module   => l_log_module);
340240 END IF;
340241 EXCEPTION
340242   WHEN xla_exceptions_pkg.application_exception THEN
340243       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
340244             trace
340245                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
340246                ,p_level    => C_LEVEL_EXCEPTION
340247                ,p_module   => l_log_module);
340248       END IF;
340249       RAISE;
340250   WHEN OTHERS THEN
340251       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
340252             trace
340253                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
340254                ,p_level    => C_LEVEL_EXCEPTION
340255                ,p_module   => l_log_module);
340256        END IF;
340257        xla_exceptions_pkg.raise_message
340258            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_566');
340259 END insert_sources_566;
340260 --
340261 
340262 ---------------------------------------
340263 --
340264 -- PRIVATE FUNCTION
340265 --         EventClass_566
340266 --
340267 ----------------------------------------
340268 --
340269 FUNCTION EventClass_566
340270        (p_application_id         IN NUMBER
340271        ,p_base_ledger_id         IN NUMBER
340272        ,p_target_ledger_id       IN NUMBER
340273        ,p_language               IN VARCHAR2
340274        ,p_currency_code          IN VARCHAR2
340275        ,p_sla_ledger_id          IN NUMBER
340276        ,p_pad_start_date         IN DATE
340277        ,p_pad_end_date           IN DATE
340278        ,p_primary_ledger_id      IN NUMBER)
340279 RETURN BOOLEAN IS
340280 --
340281 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INTRAORG_TXFR_ALL';
340282 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INTRAORG_TXFR';
340283 
340284 l_calculate_acctd_flag   VARCHAR2(1) :='N';
340285 l_calculate_g_l_flag     VARCHAR2(1) :='N';
340286 --
340287 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340288 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340289 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
340290 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
340291 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340292 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
340293 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
340294 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340295 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
340296 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
340297 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340298 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340299 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340300 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
340301 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
340302 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
340303 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
340304 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
340305 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
340306 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
340307 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
340308 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
340309 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
340310 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
340311 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
340312 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
340313 
340314 l_event_id                             NUMBER;
340315 l_previous_event_id                    NUMBER;
340316 l_first_event_id                       NUMBER;
340317 l_last_event_id                        NUMBER;
340318 
340319 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
340320 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
340321 --
340322 --
340323 l_result                    BOOLEAN := TRUE;
340324 l_rows                      NUMBER  := 1000;
340325 l_event_type_name           VARCHAR2(80) := 'All';
340326 l_event_class_name          VARCHAR2(80) := 'Intraorg Transfer';
340327 l_description               VARCHAR2(4000);
340328 l_transaction_reversal      NUMBER;
340329 l_ae_header_id              NUMBER;
340330 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
340331 l_log_module                VARCHAR2(240);
340332 --
340333 l_acct_reversal_source      VARCHAR2(30);
340334 l_trx_reversal_source       VARCHAR2(30);
340335 
340336 l_continue_with_lines       BOOLEAN := TRUE;
340337 --
340338 l_acc_rev_gl_date_source    DATE;                      -- 4262811
340339 --
340340 type t_array_event_id is table of number index by binary_integer;
340341 
340342 l_rec_array_event                    t_rec_array_event;
340343 l_null_rec_array_event               t_rec_array_event;
340344 l_array_ae_header_id                 xla_number_array_type;
340345 l_actual_flag                        VARCHAR2(1) := NULL;
340346 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
340347 l_balance_type_code                  VARCHAR2(1) :=NULL;
340348 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
340349 
340350 --
340351 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
340352 --
340353 
340354 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
340355 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
340356 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
340357 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
340358 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
340359 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
340360 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
340361 TYPE t_array_source_25 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
340362 TYPE t_array_source_27 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
340363 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_HEADERS_V.H_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
340364 TYPE t_array_source_30 IS TABLE OF CST_XLA_INV_HEADERS_V.H_SUBINVENTORY_CODE%TYPE INDEX BY BINARY_INTEGER;
340365 TYPE t_array_source_31 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_SUBINVENTORY%TYPE INDEX BY BINARY_INTEGER;
340366 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
340367 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
340368 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
340369 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
340370 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
340371 TYPE t_array_source_47 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
340372 TYPE t_array_source_48 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
340373 TYPE t_array_source_49 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_MATERIAL_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
340374 TYPE t_array_source_50 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
340375 TYPE t_array_source_51 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_OUTSIDE_PROCESS_ACCT%TYPE INDEX BY BINARY_INTEGER;
340376 TYPE t_array_source_52 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
340377 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
340378 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
340379 
340380 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
340381 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_LINES_V.COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
340382 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_LINES_V.SUBINVENTORY_CODE%TYPE INDEX BY BINARY_INTEGER;
340383 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
340384 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
340385 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
340386 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
340387 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
340388 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
340389 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
340390 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
340391 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
340392 
340393 l_array_source_1              t_array_source_1;
340394 l_array_source_2              t_array_source_2;
340395 l_array_source_3              t_array_source_3;
340396 l_array_source_4              t_array_source_4;
340397 l_array_source_5              t_array_source_5;
340398 l_array_source_22              t_array_source_22;
340399 l_array_source_24              t_array_source_24;
340400 l_array_source_25              t_array_source_25;
340401 l_array_source_27              t_array_source_27;
340402 l_array_source_28              t_array_source_28;
340403 l_array_source_30              t_array_source_30;
340404 l_array_source_31              t_array_source_31;
340405 l_array_source_41              t_array_source_41;
340406 l_array_source_42              t_array_source_42;
340407 l_array_source_43              t_array_source_43;
340408 l_array_source_44              t_array_source_44;
340409 l_array_source_45              t_array_source_45;
340410 l_array_source_47              t_array_source_47;
340411 l_array_source_48              t_array_source_48;
340412 l_array_source_49              t_array_source_49;
340413 l_array_source_50              t_array_source_50;
340414 l_array_source_51              t_array_source_51;
340415 l_array_source_52              t_array_source_52;
340416 l_array_source_85              t_array_source_85;
340417 l_array_source_85_meaning      t_array_lookup_meaning;
340418 l_array_source_114              t_array_source_114;
340419 l_array_source_114_meaning      t_array_lookup_meaning;
340420 
340421 l_array_source_15      t_array_source_15;
340422 l_array_source_26      t_array_source_26;
340423 l_array_source_29      t_array_source_29;
340424 l_array_source_84      t_array_source_84;
340425 l_array_source_88      t_array_source_88;
340426 l_array_source_91      t_array_source_91;
340427 l_array_source_92      t_array_source_92;
340428 l_array_source_93      t_array_source_93;
340429 l_array_source_94      t_array_source_94;
340430 l_array_source_95      t_array_source_95;
340431 l_array_source_97      t_array_source_97;
340432 l_array_source_108      t_array_source_108;
340433 
340434 --
340435 CURSOR header_cur
340436 IS
340437 SELECT /*+ leading(xet) cardinality(xet,1) */
340438 -- Event Class Code: INTRAORG_TXFR
340439     xet.entity_id
340440    ,xet.legal_entity_id
340441    ,xet.entity_code
340442    ,xet.transaction_number
340443    ,xet.event_id
340444    ,xet.event_class_code
340445    ,xet.event_type_code
340446    ,xet.event_number
340447    ,xet.event_date
340448    ,xet.transaction_date
340449    ,xet.reference_num_1
340450    ,xet.reference_num_2
340451    ,xet.reference_num_3
340452    ,xet.reference_num_4
340453    ,xet.reference_char_1
340454    ,xet.reference_char_2
340455    ,xet.reference_char_3
340456    ,xet.reference_char_4
340457    ,xet.reference_date_1
340458    ,xet.reference_date_2
340459    ,xet.reference_date_3
340460    ,xet.reference_date_4
340461    ,xet.event_created_by
340462    ,xet.budgetary_control_flag 
340463   , h1.TRANSACTION_ID    source_1
340464   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
340465   , h3.TRANSACTION_QUANTITY    source_3
340466   , h3.TRANSACTION_UOM    source_4
340467   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
340468   , h6.PLA_BRIDGING_ACCOUNT    source_22
340469   , h6.PLA_EXPENSE_ACCOUNT    source_24
340470   , h7.TRF_PLA_EXPENSE_ACCT    source_25
340471   , h1.H_TRANSFER_COST_GROUP_ID    source_27
340472   , h1.H_COST_GROUP_ID    source_28
340473   , h1.H_SUBINVENTORY_CODE    source_30
340474   , h1.H_TRANSFER_SUBINVENTORY    source_31
340475   , h6.PLA_MATERIAL_ACCOUNT    source_41
340476   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
340477   , h6.PLA_RESOURCE_ACCOUNT    source_43
340478   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
340479   , h6.PLA_OVERHEAD_ACCOUNT    source_45
340480   , h7.TRF_PLA_BRIDGING_ACCT    source_47
340481   , h7.TRF_PLA_MATERIAL_ACCT    source_48
340482   , h7.TRF_PLA_MATERIAL_OVERHEAD_ACCT    source_49
340483   , h7.TRF_PLA_RESOURCE_ACCT    source_50
340484   , h7.TRF_PLA_OUTSIDE_PROCESS_ACCT    source_51
340485   , h7.TRF_PLA_OVERHEAD_ACCT    source_52
340486   , h1.DISTRIBUTION_TYPE    source_85
340487   , fvl85.meaning   source_85_meaning
340488   , h1.TRANSFER_TO_GL_INDICATOR    source_114
340489   , fvl114.meaning   source_114_meaning
340490   FROM xla_events_gt     xet 
340491   , CST_XLA_INV_HEADERS_V  h1
340492   , CST_XLA_INV_REF_V  h3
340493   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
340494   , CST_XLA_INV_TXN_TYPES_REF_V  h5
340495   , CST_XLA_PLA_CATEGORY_REF_V  h6
340496   , CST_XLA_TRF_PLA_CAT_REF_V  h7
340497   , fnd_lookup_values    fvl85
340498   , fnd_lookup_values    fvl114
340499  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
340500    and xet.event_class_code = C_EVENT_CLASS_CODE
340501    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
340502  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
340503 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
340504 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG AND h7.TRF_PLA_CAT_ORGANIZATION_ID  (+) = h1.TRANSFER_ORGANIZATION_ID 
340505 AND h7.TRF_PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
340506 AND h7.TRF_PLA_SUBINV_CG            (+) = h1.H_TRF_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
340507   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
340508   AND fvl85.view_application_id(+) = 700
340509   AND fvl85.language(+)            = USERENV('LANG')
340510      AND fvl114.lookup_type(+)         = 'YES_NO'
340511   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
340512   AND fvl114.view_application_id(+) = 0
340513   AND fvl114.language(+)            = USERENV('LANG')
340514   
340515  ORDER BY event_id
340516 ;
340517 
340518 
340519 --
340520 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
340521 IS
340522 SELECT  /*+ leading(xet) cardinality(xet,1) */
340523 -- Event Class Code: INTRAORG_TXFR
340524     xet.entity_id
340525    ,xet.legal_entity_id
340526    ,xet.entity_code
340527    ,xet.transaction_number
340528    ,xet.event_id
340529    ,xet.event_class_code
340530    ,xet.event_type_code
340531    ,xet.event_number
340532    ,xet.event_date
340533    ,xet.transaction_date
340534    ,xet.reference_num_1
340535    ,xet.reference_num_2
340536    ,xet.reference_num_3
340537    ,xet.reference_num_4
340538    ,xet.reference_char_1
340539    ,xet.reference_char_2
340540    ,xet.reference_char_3
340541    ,xet.reference_char_4
340542    ,xet.reference_date_1
340543    ,xet.reference_date_2
340544    ,xet.reference_date_3
340545    ,xet.reference_date_4
340546    ,xet.event_created_by
340547    ,xet.budgetary_control_flag
340548  , l2.LINE_NUMBER  
340549   , l2.COST_ELEMENT_ID    source_15
340550   , l2.COST_GROUP_ID    source_26
340551   , l2.SUBINVENTORY_CODE    source_29
340552   , l2.DISTRIBUTION_IDENTIFIER    source_84
340553   , l2.CURRENCY_CODE    source_88
340554   , l2.ENTERED_AMOUNT    source_91
340555   , l2.CURRENCY_CONVERSION_DATE    source_92
340556   , l2.CURRENCY_CONVERSION_RATE    source_93
340557   , l2.CURRENCY_CONVERSION_TYPE    source_94
340558   , l2.ACCOUNTED_AMOUNT    source_95
340559   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
340560   , l2.L_ORGANIZATION_CODE    source_108
340561   FROM xla_events_gt     xet 
340562   , CST_XLA_INV_LINES_V  l2
340563  WHERE xet.event_id between x_first_event_id and x_last_event_id
340564    and xet.event_date between p_pad_start_date and p_pad_end_date
340565    and xet.event_class_code = C_EVENT_CLASS_CODE
340566    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
340567 ;
340568 
340569 --
340570 BEGIN
340571 IF g_log_enabled THEN
340572    l_log_module := C_DEFAULT_MODULE||'.EventClass_566';
340573 END IF;
340574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
340575    trace
340576       (p_msg      => 'BEGIN of EventClass_566'
340577       ,p_level    => C_LEVEL_PROCEDURE
340578       ,p_module   => l_log_module);
340579 END IF;
340580 
340581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
340582    trace
340583       (p_msg      => 'p_application_id = '||p_application_id||
340584                      ' - p_base_ledger_id = '||p_base_ledger_id||
340585                      ' - p_target_ledger_id  = '||p_target_ledger_id||
340586                      ' - p_language = '||p_language||
340587                      ' - p_currency_code = '||p_currency_code||
340588                      ' - p_sla_ledger_id = '||p_sla_ledger_id
340589       ,p_level    => C_LEVEL_STATEMENT
340590       ,p_module   => l_log_module);
340591 END IF;
340592 --
340593 -- initialze arrays
340594 --
340595 g_array_event.DELETE;
340596 l_rec_array_event := l_null_rec_array_event;
340597 --
340598 --------------------------------------
340599 -- 4262811 Initialze MPA Line Number
340600 --------------------------------------
340601 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
340602 
340603 --
340604 
340605 --
340606 OPEN header_cur;
340607 --
340608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
340609    trace
340610    (p_msg      => 'SQL - FETCH header_cur'
340611    ,p_level    => C_LEVEL_STATEMENT
340612    ,p_module   => l_log_module);
340613 END IF;
340614 --
340615 LOOP
340616 FETCH header_cur BULK COLLECT INTO
340617         l_array_entity_id
340618       , l_array_legal_entity_id
340619       , l_array_entity_code
340620       , l_array_transaction_num
340621       , l_array_event_id
340622       , l_array_class_code
340623       , l_array_event_type
340624       , l_array_event_number
340625       , l_array_event_date
340626       , l_array_transaction_date
340627       , l_array_reference_num_1
340628       , l_array_reference_num_2
340629       , l_array_reference_num_3
340630       , l_array_reference_num_4
340631       , l_array_reference_char_1
340632       , l_array_reference_char_2
340633       , l_array_reference_char_3
340634       , l_array_reference_char_4
340635       , l_array_reference_date_1
340636       , l_array_reference_date_2
340637       , l_array_reference_date_3
340638       , l_array_reference_date_4
340639       , l_array_event_created_by
340640       , l_array_budgetary_control_flag 
340641       , l_array_source_1
340642       , l_array_source_2
340643       , l_array_source_3
340644       , l_array_source_4
340645       , l_array_source_5
340646       , l_array_source_22
340647       , l_array_source_24
340648       , l_array_source_25
340649       , l_array_source_27
340650       , l_array_source_28
340651       , l_array_source_30
340652       , l_array_source_31
340653       , l_array_source_41
340654       , l_array_source_42
340655       , l_array_source_43
340656       , l_array_source_44
340657       , l_array_source_45
340658       , l_array_source_47
340659       , l_array_source_48
340660       , l_array_source_49
340661       , l_array_source_50
340662       , l_array_source_51
340663       , l_array_source_52
340664       , l_array_source_85
340665       , l_array_source_85_meaning
340666       , l_array_source_114
340667       , l_array_source_114_meaning
340668       LIMIT l_rows;
340669 --
340670 IF (C_LEVEL_EVENT >= g_log_level) THEN
340671    trace
340672    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
340673    ,p_level    => C_LEVEL_EVENT
340674    ,p_module   => l_log_module);
340675 END IF;
340676 --
340677 EXIT WHEN l_array_entity_id.COUNT = 0;
340678 
340679 -- initialize arrays
340680 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
340681 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
340682 
340683 --
340684 -- Bug 4458708
340685 --
340686 XLA_AE_LINES_PKG.g_LineNumber := 0;
340687 
340688 
340689 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
340690 g_last_hdr_idx := l_array_event_id.LAST;
340691 --
340692 -- loop for the headers. Each iteration is for each header extract row
340693 -- fetched in header cursor
340694 --
340695 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
340696 
340697 --
340698 -- set event info as cache for other routines to refer event attributes
340699 --
340700 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
340701    (p_application_id           => p_application_id
340702    ,p_primary_ledger_id        => p_primary_ledger_id
340703    ,p_base_ledger_id           => p_base_ledger_id
340704    ,p_target_ledger_id         => p_target_ledger_id
340705    ,p_entity_id                => l_array_entity_id(hdr_idx)
340706    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
340707    ,p_entity_code              => l_array_entity_code(hdr_idx)
340708    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
340709    ,p_event_id                 => l_array_event_id(hdr_idx)
340710    ,p_event_class_code         => l_array_class_code(hdr_idx)
340711    ,p_event_type_code          => l_array_event_type(hdr_idx)
340712    ,p_event_number             => l_array_event_number(hdr_idx)
340713    ,p_event_date               => l_array_event_date(hdr_idx)
340714    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
340715    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
340716    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
340717    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
340718    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
340719    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
340720    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
340721    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
340722    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
340723    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
340724    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
340725    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
340726    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
340727    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
340728    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
340729 
340730 --
340731 -- set the status of entry to C_VALID (0)
340732 --
340733 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
340734 
340735 --
340736 -- initialize a row for ae header
340737 --
340738 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
340739 
340740 l_event_id := l_array_event_id(hdr_idx);
340741 
340742 --
340743 -- storing the hdr_idx for event. May be used by line cursor.
340744 --
340745 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
340746 
340747 --
340748 -- store sources from header extract. This can be improved to
340749 -- store only those sources from header extract that may be used in lines
340750 --
340751 
340752 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
340753 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
340754 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
340755 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
340756 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
340757 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
340758 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
340759 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
340760 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
340761 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
340762 g_array_event(l_event_id).array_value_char('source_30') := l_array_source_30(hdr_idx);
340763 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
340764 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
340765 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
340766 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
340767 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
340768 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
340769 g_array_event(l_event_id).array_value_num('source_47') := l_array_source_47(hdr_idx);
340770 g_array_event(l_event_id).array_value_num('source_48') := l_array_source_48(hdr_idx);
340771 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
340772 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
340773 g_array_event(l_event_id).array_value_num('source_51') := l_array_source_51(hdr_idx);
340774 g_array_event(l_event_id).array_value_num('source_52') := l_array_source_52(hdr_idx);
340775 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
340776 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
340777 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
340778 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
340779 
340780 --
340781 -- initilaize the status of ae headers for diffrent balance types
340782 -- the status is initialised to C_NOT_CREATED (2)
340783 --
340784 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
340785 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
340786 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
340787 
340788 --
340789 -- call api to validate and store accounting attributes for header
340790 --
340791 
340792 ------------------------------------------------------------
340793 -- Accrual Reversal : to get date for Standard Source (NONE)
340794 ------------------------------------------------------------
340795 l_acc_rev_gl_date_source := NULL;
340796 
340797      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
340798       l_rec_acct_attrs.array_date_value(1) := 
340799 xla_ae_sources_pkg.GetSystemSourceDate(
340800    p_source_code           => 'XLA_REFERENCE_DATE_1'
340801  , p_source_type_code      => 'Y'
340802  , p_source_application_id =>  602
340803 );
340804      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
340805       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
340806 
340807 
340808 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
340809 
340810 XLA_AE_HEADER_PKG.SetJeCategoryName;
340811 
340812 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
340813 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
340814 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
340815 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
340816 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
340817 
340818 
340819 --
340820 xla_ae_header_pkg.SetHdrDescription(
340821    p_description => Description_1 (
340822    p_application_id => p_application_id 
340823  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
340824  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
340825  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
340826  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
340827  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
340828    )
340829 );
340830 --
340831 
340832 -- No header level analytical criteria
340833 
340834 --
340835 --accounting attribute enhancement, bug 3612931
340836 --
340837 l_trx_reversal_source := SUBSTR(NULL, 1,30);
340838 
340839 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
340840    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
340841 
340842    xla_accounting_err_pkg.build_message
340843       (p_appli_s_name            => 'XLA'
340844       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
340845       ,p_token_1                 => 'ACCT_ATTR_NAME'
340846       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
340847       ,p_token_2                 => 'PRODUCT_NAME'
340848       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
340849       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
340850       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
340851       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
340852 
340853 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
340854    --
340855    -- following sets the accounting attributes needed to reverse
340856    -- accounting for a distributeion
340857    --
340858    xla_ae_lines_pkg.SetTrxReversalAttrs
340859       (p_event_id              => l_event_id
340860       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
340861       ,p_trx_reversal_source   => l_trx_reversal_source);
340862 
340863 END IF;
340864 
340865 
340866 ----------------------------------------------------------------
340867 -- 4262811 -  update the header statuses to invalid in need be
340868 ----------------------------------------------------------------
340869 --
340870 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
340871 
340872 
340873   -----------------------------------------------
340874   -- No accrual reversal for the event class/type
340875   -----------------------------------------------
340876 ----------------------------------------------------------------
340877 
340878 --
340879 -- this ends the header loop iteration for one bulk fetch
340880 --
340881 END LOOP;
340882 
340883 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
340884 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
340885 
340886 --
340887 -- insert dummy rows into lines gt table that were created due to
340888 -- transaction reversals
340889 --
340890 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
340891    l_result := XLA_AE_LINES_PKG.InsertLines;
340892 END IF;
340893 
340894 --
340895 -- reset the temp_line_num for each set of events fetched from header
340896 -- cursor rather than doing it for each new event in line cursor
340897 -- Bug 3939231
340898 --
340899 xla_ae_lines_pkg.g_temp_line_num := 0;
340900 
340901 
340902 
340903 --
340904 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
340905 --
340906 --
340907 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
340908 
340909       trace
340910          (p_msg      => 'SQL - FETCH line_cur'
340911          ,p_level    => C_LEVEL_STATEMENT
340912          ,p_module   => l_log_module);
340913 
340914 END IF;
340915 --
340916 --
340917 LOOP
340918   --
340919   FETCH line_cur BULK COLLECT INTO
340920         l_array_entity_id
340921       , l_array_legal_entity_id
340922       , l_array_entity_code
340923       , l_array_transaction_num
340924       , l_array_event_id
340925       , l_array_class_code
340926       , l_array_event_type
340927       , l_array_event_number
340928       , l_array_event_date
340929       , l_array_transaction_date
340930       , l_array_reference_num_1
340931       , l_array_reference_num_2
340932       , l_array_reference_num_3
340933       , l_array_reference_num_4
340934       , l_array_reference_char_1
340935       , l_array_reference_char_2
340936       , l_array_reference_char_3
340937       , l_array_reference_char_4
340938       , l_array_reference_date_1
340939       , l_array_reference_date_2
340940       , l_array_reference_date_3
340941       , l_array_reference_date_4
340942       , l_array_event_created_by
340943       , l_array_budgetary_control_flag
340944       , l_array_extract_line_num 
340945       , l_array_source_15
340946       , l_array_source_26
340947       , l_array_source_29
340948       , l_array_source_84
340949       , l_array_source_88
340950       , l_array_source_91
340951       , l_array_source_92
340952       , l_array_source_93
340953       , l_array_source_94
340954       , l_array_source_95
340955       , l_array_source_97
340956       , l_array_source_108
340957       LIMIT l_rows;
340958 
340959   --
340960   IF (C_LEVEL_EVENT >= g_log_level) THEN
340961             trace
340962                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
340963                ,p_level    => C_LEVEL_EVENT
340964                ,p_module   => l_log_module);
340965   END IF;
340966   --
340967   EXIT WHEN l_array_entity_id.count = 0;
340968 
340969   XLA_AE_LINES_PKG.g_rec_lines := null;
340970 
340971 --
340972 -- Bug 4458708
340973 --
340974 XLA_AE_LINES_PKG.g_LineNumber := 0;
340975 --
340976 --
340977 
340978 FOR Idx IN 1..l_array_event_id.count LOOP
340979    --
340980    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
340981    --
340982    l_event_id := l_array_event_id(idx);  -- 5648433
340983 
340984    --
340985    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
340986    --
340987 
340988    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
340989              (g_array_event(l_event_id).array_value_num('header_index'))
340990          ,'N'
340991          ) <> 'Y'
340992    THEN
340993       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
340994          trace
340995             (p_msg      => 'Trancaction revesal option is not Y '
340996             ,p_level    => C_LEVEL_STATEMENT
340997             ,p_module   => l_log_module);
340998       END IF;
340999 
341000 --
341001 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
341002 --
341003 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
341004 --
341005 -- set event info as cache for other routines to refer event attributes
341006 --
341007 
341008 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
341009    l_previous_event_id := l_event_id;
341010 
341011    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
341012       (p_application_id           => p_application_id
341013       ,p_primary_ledger_id        => p_primary_ledger_id
341014       ,p_base_ledger_id           => p_base_ledger_id
341015       ,p_target_ledger_id         => p_target_ledger_id
341016       ,p_entity_id                => l_array_entity_id(Idx)
341017       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
341018       ,p_entity_code              => l_array_entity_code(Idx)
341019       ,p_transaction_num          => l_array_transaction_num(Idx)
341020       ,p_event_id                 => l_array_event_id(Idx)
341021       ,p_event_class_code         => l_array_class_code(Idx)
341022       ,p_event_type_code          => l_array_event_type(Idx)
341023       ,p_event_number             => l_array_event_number(Idx)
341024       ,p_event_date               => l_array_event_date(Idx)
341025       ,p_transaction_date         => l_array_transaction_date(Idx)
341026       ,p_reference_num_1          => l_array_reference_num_1(Idx)
341027       ,p_reference_num_2          => l_array_reference_num_2(Idx)
341028       ,p_reference_num_3          => l_array_reference_num_3(Idx)
341029       ,p_reference_num_4          => l_array_reference_num_4(Idx)
341030       ,p_reference_char_1         => l_array_reference_char_1(Idx)
341031       ,p_reference_char_2         => l_array_reference_char_2(Idx)
341032       ,p_reference_char_3         => l_array_reference_char_3(Idx)
341033       ,p_reference_char_4         => l_array_reference_char_4(Idx)
341034       ,p_reference_date_1         => l_array_reference_date_1(Idx)
341035       ,p_reference_date_2         => l_array_reference_date_2(Idx)
341036       ,p_reference_date_3         => l_array_reference_date_3(Idx)
341037       ,p_reference_date_4         => l_array_reference_date_4(Idx)
341038       ,p_event_created_by         => l_array_event_created_by(Idx)
341039       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
341040        --
341041 END IF;
341042 
341043 
341044 
341045 --
341046 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
341047 
341048 l_acct_reversal_source := SUBSTR(NULL, 1,30);
341049 
341050 IF l_continue_with_lines THEN
341051    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
341052       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
341053 
341054       xla_accounting_err_pkg.build_message
341055          (p_appli_s_name            => 'XLA'
341056          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
341057          ,p_token_1                 => 'LINE_NUMBER'
341058          ,p_value_1                 => l_array_extract_line_num(Idx)
341059          ,p_token_2                 => 'PRODUCT_NAME'
341060          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
341061          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
341062          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
341063          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
341064 
341065    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
341066       --
341067       -- following sets the accounting attributes needed to reverse
341068       -- accounting for a distributeion
341069       --
341070 
341071       --
341072       -- 5217187
341073       --
341074       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
341075       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
341076                                        g_array_event(l_event_id).array_value_num('header_index'));
341077       --
341078       --
341079 
341080       -- No reversal code generated
341081 
341082       xla_ae_lines_pkg.SetAcctReversalAttrs
341083          (p_event_id             => l_event_id
341084          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
341085          ,p_calculate_acctd_flag => l_calculate_acctd_flag
341086          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
341087    END IF;
341088 
341089    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
341090        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
341091 
341092 --
341093 AcctLineType_277 (
341094  p_application_id  => p_application_id
341095  ,p_event_id     => l_event_id
341096  ,p_calculate_acctd_flag => l_calculate_acctd_flag
341097  ,p_calculate_g_l_flag => l_calculate_g_l_flag
341098  ,p_actual_flag => l_actual_flag
341099  ,p_balance_type_code => l_balance_type_code
341100  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
341101  
341102  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
341103  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
341104  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
341105  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
341106  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
341107  , p_source_15 => l_array_source_15(Idx)
341108  , p_source_26 => l_array_source_26(Idx)
341109  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
341110  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
341111  , p_source_29 => l_array_source_29(Idx)
341112  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
341113  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
341114  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
341115  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
341116  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
341117  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
341118  , p_source_48 => g_array_event(l_event_id).array_value_num('source_48')
341119  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
341120  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
341121  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
341122  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
341123  , p_source_84 => l_array_source_84(Idx)
341124  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
341125  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
341126  , p_source_88 => l_array_source_88(Idx)
341127  , p_source_91 => l_array_source_91(Idx)
341128  , p_source_92 => l_array_source_92(Idx)
341129  , p_source_93 => l_array_source_93(Idx)
341130  , p_source_94 => l_array_source_94(Idx)
341131  , p_source_95 => l_array_source_95(Idx)
341132  , p_source_97 => l_array_source_97(Idx)
341133  , p_source_108 => l_array_source_108(Idx)
341134  );
341135 If(l_balance_type_code = 'A') THEN
341136   l_actual_gain_loss_ref := l_gain_or_loss_ref;
341137 END IF;
341138 
341139 --
341140 
341141 
341142 --
341143 AcctLineType_318 (
341144  p_application_id  => p_application_id
341145  ,p_event_id     => l_event_id
341146  ,p_calculate_acctd_flag => l_calculate_acctd_flag
341147  ,p_calculate_g_l_flag => l_calculate_g_l_flag
341148  ,p_actual_flag => l_actual_flag
341149  ,p_balance_type_code => l_balance_type_code
341150  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
341151  
341152  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
341153  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
341154  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
341155  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
341156  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
341157  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
341158  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
341159  , p_source_26 => l_array_source_26(Idx)
341160  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
341161  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
341162  , p_source_29 => l_array_source_29(Idx)
341163  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
341164  , p_source_84 => l_array_source_84(Idx)
341165  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
341166  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
341167  , p_source_88 => l_array_source_88(Idx)
341168  , p_source_91 => l_array_source_91(Idx)
341169  , p_source_92 => l_array_source_92(Idx)
341170  , p_source_93 => l_array_source_93(Idx)
341171  , p_source_94 => l_array_source_94(Idx)
341172  , p_source_95 => l_array_source_95(Idx)
341173  , p_source_97 => l_array_source_97(Idx)
341174  );
341175 If(l_balance_type_code = 'A') THEN
341176   l_actual_gain_loss_ref := l_gain_or_loss_ref;
341177 END IF;
341178 
341179 --
341180 
341181 
341182 --
341183 AcctLineType_435 (
341184  p_application_id  => p_application_id
341185  ,p_event_id     => l_event_id
341186  ,p_calculate_acctd_flag => l_calculate_acctd_flag
341187  ,p_calculate_g_l_flag => l_calculate_g_l_flag
341188  ,p_actual_flag => l_actual_flag
341189  ,p_balance_type_code => l_balance_type_code
341190  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
341191  
341192  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
341193  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
341194  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
341195  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
341196  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
341197  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
341198  , p_source_26 => l_array_source_26(Idx)
341199  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
341200  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
341201  , p_source_29 => l_array_source_29(Idx)
341202  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
341203  , p_source_47 => g_array_event(l_event_id).array_value_num('source_47')
341204  , p_source_84 => l_array_source_84(Idx)
341205  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
341206  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
341207  , p_source_88 => l_array_source_88(Idx)
341208  , p_source_91 => l_array_source_91(Idx)
341209  , p_source_92 => l_array_source_92(Idx)
341210  , p_source_93 => l_array_source_93(Idx)
341211  , p_source_94 => l_array_source_94(Idx)
341212  , p_source_95 => l_array_source_95(Idx)
341213  , p_source_97 => l_array_source_97(Idx)
341214  );
341215 If(l_balance_type_code = 'A') THEN
341216   l_actual_gain_loss_ref := l_gain_or_loss_ref;
341217 END IF;
341218 
341219 --
341220 
341221 
341222 --
341223 AcctLineType_437 (
341224  p_application_id  => p_application_id
341225  ,p_event_id     => l_event_id
341226  ,p_calculate_acctd_flag => l_calculate_acctd_flag
341227  ,p_calculate_g_l_flag => l_calculate_g_l_flag
341228  ,p_actual_flag => l_actual_flag
341229  ,p_balance_type_code => l_balance_type_code
341230  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
341231  
341232  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
341233  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
341234  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
341235  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
341236  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
341237  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
341238  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
341239  , p_source_26 => l_array_source_26(Idx)
341240  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
341241  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
341242  , p_source_29 => l_array_source_29(Idx)
341243  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
341244  , p_source_84 => l_array_source_84(Idx)
341245  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
341246  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
341247  , p_source_88 => l_array_source_88(Idx)
341248  , p_source_91 => l_array_source_91(Idx)
341249  , p_source_92 => l_array_source_92(Idx)
341250  , p_source_93 => l_array_source_93(Idx)
341251  , p_source_94 => l_array_source_94(Idx)
341252  , p_source_95 => l_array_source_95(Idx)
341253  , p_source_97 => l_array_source_97(Idx)
341254  );
341255 If(l_balance_type_code = 'A') THEN
341256   l_actual_gain_loss_ref := l_gain_or_loss_ref;
341257 END IF;
341258 
341259 --
341260 
341261       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
341262       -- or secondary ledger that has different currency with primary
341263       -- or alc that is calculated by sla
341264       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
341265             (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'))
341266 
341267 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
341268 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
341269           AND (l_actual_flag = 'A')) THEN
341270         XLA_AE_LINES_PKG.CreateGainOrLossLines(
341271           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
341272          ,p_application_id   => p_application_id
341273          ,p_amb_context_code => 'DEFAULT'
341274          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
341275          ,p_event_class_code => C_EVENT_CLASS_CODE
341276          ,p_event_type_code  => C_EVENT_TYPE_CODE
341277          
341278          ,p_gain_ccid        => -1
341279          ,p_loss_ccid        => -1
341280 
341281          ,p_actual_flag      => l_actual_flag
341282          ,p_enc_flag         => null
341283          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
341284          ,p_enc_g_l_ref      => null
341285          );
341286       END IF;
341287    END IF;
341288 END IF;
341289 
341290    ELSE
341291       --
341292       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
341293       --
341294       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
341295          trace
341296             (p_msg      => 'Trancaction revesal option is Y'
341297             ,p_level    => C_LEVEL_STATEMENT
341298             ,p_module   => l_log_module);
341299       END IF;
341300    END IF;
341301 
341302 END LOOP;
341303 l_result := XLA_AE_LINES_PKG.InsertLines ;
341304 end loop;
341305 close line_cur;
341306 
341307 
341308 --
341309 -- insert headers into xla_ae_headers_gt table
341310 --
341311 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
341312 
341313 -- insert into errors table here.
341314 
341315 END LOOP;
341316 
341317 --
341318 -- 4865292
341319 --
341320 -- Compare g_hdr_extract_count with event count in
341321 -- CreateHeadersAndLines.
341322 --
341323 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
341324 
341325 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
341326    trace (p_msg     => '# rows extracted from header extract objects '
341327                     || ' (running total): '
341328                     || g_hdr_extract_count
341329          ,p_level   => C_LEVEL_STATEMENT
341330          ,p_module  => l_log_module);
341331 END IF;
341332 
341333 CLOSE header_cur;
341334 --
341335 
341336 --
341337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
341338    trace
341339       (p_msg      => 'END of EventClass_566'
341340       ,p_level    => C_LEVEL_PROCEDURE
341341       ,p_module   => l_log_module);
341342 END IF;
341343 --
341344 RETURN l_result;
341345 EXCEPTION
341346 WHEN xla_exceptions_pkg.application_exception THEN
341347    
341348 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
341349 
341350    
341351 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
341352 
341353    RAISE;
341354 
341355 WHEN NO_DATA_FOUND THEN
341356 
341357 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
341358 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
341359 
341360 FOR header_record IN header_cur
341361 LOOP
341362     l_array_header_events(header_record.event_id) := header_record.event_id;
341363 END LOOP;
341364 
341365 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
341366 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
341367 
341368 fnd_file.put_line(fnd_file.LOG, '                    ');
341369 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
341370 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
341371 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
341372 
341373 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
341374 LOOP
341375 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
341376 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
341377         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
341378 	END IF;
341379 END LOOP;
341380 
341381 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
341382 fnd_file.put_line(fnd_file.LOG, '                    ');
341383 
341384 
341385 xla_exceptions_pkg.raise_message
341386       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_566');
341387 
341388 
341389 WHEN OTHERS THEN
341390    xla_exceptions_pkg.raise_message
341391       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_566');
341392 END EventClass_566;
341393 --
341394 
341395 ---------------------------------------
341396 --
341397 -- PRIVATE PROCEDURE
341398 --         insert_sources_567
341399 --
341400 ----------------------------------------
341401 --
341402 PROCEDURE insert_sources_567(
341403                                 p_target_ledger_id       IN NUMBER
341404                               , p_language               IN VARCHAR2
341405                               , p_sla_ledger_id          IN NUMBER
341406                               , p_pad_start_date         IN DATE
341407                               , p_pad_end_date           IN DATE
341408                          )
341409 IS
341410 
341411 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_NO_TP';
341412 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
341413 p_apps_owner                   VARCHAR2(30);
341414 l_log_module                   VARCHAR2(240);
341415 BEGIN
341416 IF g_log_enabled THEN
341417       l_log_module := C_DEFAULT_MODULE||'.insert_sources_567';
341418 END IF;
341419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
341420 
341421       trace
341422          (p_msg      => 'BEGIN of insert_sources_567'
341423          ,p_level    => C_LEVEL_PROCEDURE
341424          ,p_module   => l_log_module);
341425 
341426 END IF;
341427 
341428 -- select APPS owner
341429 SELECT oracle_username
341430   INTO p_apps_owner
341431   FROM fnd_oracle_userid
341432  WHERE read_only_flag = 'U'
341433 ;
341434 
341435 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
341436       trace
341437          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
341438                         ' - p_language = '||p_language||
341439                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
341440                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
341441                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
341442                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
341443          ,p_level    => C_LEVEL_STATEMENT
341444          ,p_module   => l_log_module);
341445 END IF;
341446 
341447 
341448 --
341449 INSERT INTO xla_diag_sources --hdr1
341450 (
341451         event_id
341452       , ledger_id
341453       , sla_ledger_id
341454       , description_language
341455       , object_name
341456       , object_type_code
341457       , line_number
341458       , source_application_id
341459       , source_type_code
341460       , source_code
341461       , source_value
341462       , source_meaning
341463       , created_by
341464       , creation_date
341465       , last_update_date
341466       , last_updated_by
341467       , last_update_login
341468       , program_update_date
341469       , program_application_id
341470       , program_id
341471       , request_id
341472 )
341473 SELECT
341474         event_id
341475       , p_target_ledger_id
341476       , p_sla_ledger_id
341477       , p_language
341478       , object_name
341479       , object_type_code
341480       , line_number
341481       , source_application_id
341482       , source_type_code
341483       , source_code
341484       , SUBSTR(source_value ,1,1996)
341485       , SUBSTR(source_meaning,1,200)
341486       , xla_environment_pkg.g_Usr_Id
341487       , TRUNC(SYSDATE)
341488       , TRUNC(SYSDATE)
341489       , xla_environment_pkg.g_Usr_Id
341490       , xla_environment_pkg.g_Login_Id
341491       , TRUNC(SYSDATE)
341492       , xla_environment_pkg.g_Prog_Appl_Id
341493       , xla_environment_pkg.g_Prog_Id
341494       , xla_environment_pkg.g_Req_Id
341495   FROM (
341496        SELECT xet.event_id                  event_id
341497             , 0                             line_number
341498             , CASE r
341499                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
341500                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
341501                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
341502                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
341503                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
341504                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
341505                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
341506                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
341507                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
341508                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
341509                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
341510                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
341511                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
341512                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
341513                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
341514                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
341515                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
341516                 
341517                ELSE null
341518               END                           object_name
341519             , CASE r
341520                 WHEN 1 THEN 'HEADER' 
341521                 WHEN 2 THEN 'HEADER' 
341522                 WHEN 3 THEN 'HEADER' 
341523                 WHEN 4 THEN 'HEADER' 
341524                 WHEN 5 THEN 'HEADER' 
341525                 WHEN 6 THEN 'HEADER' 
341526                 WHEN 7 THEN 'HEADER' 
341527                 WHEN 8 THEN 'HEADER' 
341528                 WHEN 9 THEN 'HEADER' 
341529                 WHEN 10 THEN 'HEADER' 
341530                 WHEN 11 THEN 'HEADER' 
341531                 WHEN 12 THEN 'HEADER' 
341532                 WHEN 13 THEN 'HEADER' 
341533                 WHEN 14 THEN 'HEADER' 
341534                 WHEN 15 THEN 'HEADER' 
341535                 WHEN 16 THEN 'HEADER' 
341536                 WHEN 17 THEN 'HEADER' 
341537                 
341538                 ELSE null
341539               END                           object_type_code
341540             , CASE r
341541                 WHEN 1 THEN '707' 
341542                 WHEN 2 THEN '707' 
341543                 WHEN 3 THEN '707' 
341544                 WHEN 4 THEN '707' 
341545                 WHEN 5 THEN '707' 
341546                 WHEN 6 THEN '707' 
341547                 WHEN 7 THEN '707' 
341548                 WHEN 8 THEN '707' 
341549                 WHEN 9 THEN '707' 
341550                 WHEN 10 THEN '707' 
341551                 WHEN 11 THEN '707' 
341552                 WHEN 12 THEN '707' 
341553                 WHEN 13 THEN '707' 
341554                 WHEN 14 THEN '707' 
341555                 WHEN 15 THEN '707' 
341556                 WHEN 16 THEN '707' 
341557                 WHEN 17 THEN '707' 
341558                 
341559                 ELSE null
341560               END                           source_application_id
341561             , 'S'             source_type_code
341562             , CASE r
341563                 WHEN 1 THEN 'TRANSACTION_ID' 
341564                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
341565                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
341566                 WHEN 4 THEN 'TRANSACTION_UOM' 
341567                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
341568                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
341569                 WHEN 7 THEN 'INTERORG_REVENUE_ACCOUNT' 
341570                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
341571                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
341572                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
341573                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
341574                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
341575                 WHEN 13 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
341576                 WHEN 14 THEN 'DISTRIBUTION_TYPE' 
341577                 WHEN 15 THEN 'ORGANIZATION_ID' 
341578                 WHEN 16 THEN 'TRANSFER_ORGANIZATION_ID' 
341579                 WHEN 17 THEN 'TRANSFER_TO_GL_INDICATOR' 
341580                 
341581                 ELSE null
341582               END                           source_code
341583             , CASE r
341584                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
341585                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
341586                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
341587                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
341588                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
341589                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
341590                 WHEN 7 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
341591                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
341592                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
341593                 WHEN 10 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
341594                 WHEN 11 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
341595                 WHEN 12 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
341596                 WHEN 13 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
341597                 WHEN 14 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
341598                 WHEN 15 THEN TO_CHAR(h2.ORGANIZATION_ID)
341599                 WHEN 16 THEN TO_CHAR(h2.TRANSFER_ORGANIZATION_ID)
341600                 WHEN 17 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
341601                 
341602                 ELSE null
341603               END                           source_value
341604             , CASE r
341605                 WHEN 14 THEN fvl85.meaning
341606                 WHEN 15 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
341607                           1010619
341608                          ,TO_CHAR(h2.ORGANIZATION_ID)
341609                          ,'ORGANIZATION_ID'
341610                          ,'S'
341611                          ,707)
341612                 WHEN 16 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
341613                           1010619
341614                          ,TO_CHAR(h2.TRANSFER_ORGANIZATION_ID)
341615                          ,'TRANSFER_ORGANIZATION_ID'
341616                          ,'S'
341617                          ,707)
341618                 WHEN 17 THEN fvl114.meaning
341619                 
341620                 ELSE null
341621               END               source_meaning
341622         FROM xla_events_gt     xet  
341623       , CST_XLA_INTERORG_PARAMS_REF_V  h1
341624       , CST_XLA_INV_HEADERS_V  h2
341625       , CST_XLA_INV_REF_V  h4
341626       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
341627       , CST_XLA_INV_TXN_TYPES_REF_V  h6
341628       , CST_XLA_PLA_CATEGORY_REF_V  h7
341629   , fnd_lookup_values    fvl85
341630   , fnd_lookup_values    fvl114
341631             ,(select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
341632        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
341633          AND xet.event_type_code = C_EVENT_TYPE_CODE
341634             AND h2.event_id = xet.event_id
341635   AND h1.event_id (+) = h2.event_id
341636  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
341637 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
341638 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
341639   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
341640   AND fvl85.view_application_id(+) = 700
341641   AND fvl85.language(+)            = USERENV('LANG')
341642      AND fvl114.lookup_type(+)         = 'YES_NO'
341643   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
341644   AND fvl114.view_application_id(+) = 0
341645   AND fvl114.language(+)            = USERENV('LANG')
341646   
341647 )
341648 ;
341649 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
341650 
341651       trace
341652          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
341653          ,p_level    => C_LEVEL_STATEMENT
341654          ,p_module   => l_log_module);
341655 
341656 END IF;
341657 --
341658 
341659 
341660 
341661 --
341662 INSERT INTO xla_diag_sources --line1
341663 (
341664         event_id
341665       , ledger_id
341666       , sla_ledger_id
341667       , description_language
341668       , object_name
341669       , object_type_code
341670       , line_number
341671       , source_application_id
341672       , source_type_code
341673       , source_code
341674       , source_value
341675       , source_meaning
341676       , created_by
341677       , creation_date
341678       , last_update_date
341679       , last_updated_by
341680       , last_update_login
341681       , program_update_date
341682       , program_application_id
341683       , program_id
341684       , request_id
341685 )
341686 SELECT  event_id
341687       , p_target_ledger_id
341688       , p_sla_ledger_id
341689       , p_language
341690       , object_name
341691       , object_type_code
341692       , line_number
341693       , source_application_id
341694       , source_type_code
341695       , source_code
341696       , SUBSTR(source_value,1,1996)
341697       , SUBSTR(source_meaning,1,200)
341698       , xla_environment_pkg.g_Usr_Id
341699       , TRUNC(SYSDATE)
341700       , TRUNC(SYSDATE)
341701       , xla_environment_pkg.g_Usr_Id
341702       , xla_environment_pkg.g_Login_Id
341703       , TRUNC(SYSDATE)
341704       , xla_environment_pkg.g_Prog_Appl_Id
341705       , xla_environment_pkg.g_Prog_Id
341706       , xla_environment_pkg.g_Req_Id
341707   FROM (
341708        SELECT xet.event_id                  event_id
341709             , l3.line_number                 line_number
341710             , CASE r
341711                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
341712                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
341713                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
341714                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
341715                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
341716                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
341717                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
341718                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
341719                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
341720                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
341721                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
341722                 
341723                ELSE null
341724               END                           object_name
341725             , CASE r
341726                 WHEN 1 THEN 'LINE' 
341727                 WHEN 2 THEN 'LINE' 
341728                 WHEN 3 THEN 'LINE' 
341729                 WHEN 4 THEN 'LINE' 
341730                 WHEN 5 THEN 'LINE' 
341731                 WHEN 6 THEN 'LINE' 
341732                 WHEN 7 THEN 'LINE' 
341733                 WHEN 8 THEN 'LINE' 
341734                 WHEN 9 THEN 'LINE' 
341735                 WHEN 10 THEN 'LINE' 
341736                 WHEN 11 THEN 'LINE' 
341737                 
341738                 ELSE null
341739               END                           object_type_code
341740             , CASE r
341741                 WHEN 1 THEN '707' 
341742                 WHEN 2 THEN '707' 
341743                 WHEN 3 THEN '707' 
341744                 WHEN 4 THEN '707' 
341745                 WHEN 5 THEN '707' 
341746                 WHEN 6 THEN '707' 
341747                 WHEN 7 THEN '707' 
341748                 WHEN 8 THEN '707' 
341749                 WHEN 9 THEN '707' 
341750                 WHEN 10 THEN '707' 
341751                 WHEN 11 THEN '707' 
341752                 
341753                 ELSE null
341754               END                           source_application_id
341755             , 'S'             source_type_code
341756             , CASE r
341757                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
341758                 WHEN 2 THEN 'COST_ELEMENT_ID' 
341759                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
341760                 WHEN 4 THEN 'CURRENCY_CODE' 
341761                 WHEN 5 THEN 'ENTERED_AMOUNT' 
341762                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
341763                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
341764                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
341765                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
341766                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
341767                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
341768                 
341769                 ELSE null
341770               END                           source_code
341771             , CASE r
341772                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
341773                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
341774                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
341775                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
341776                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
341777                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
341778                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
341779                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
341780                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
341781                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
341782                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
341783                 
341784                 ELSE null
341785               END                           source_value
341786             , CASE r
341787                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
341788                           1009615
341789                          ,TO_CHAR(l3.COST_ELEMENT_ID)
341790                          ,'COST_ELEMENT_ID'
341791                          ,'S'
341792                          ,707)
341793                 
341794                 ELSE null
341795               END               source_meaning
341796          FROM  xla_events_gt     xet  
341797         , CST_XLA_INV_LINES_V  l3
341798             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
341799         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
341800           AND xet.event_type_code = C_EVENT_TYPE_CODE
341801             AND l3.event_id          = xet.event_id
341802 
341803 )
341804 ;
341805 --
341806 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
341807 
341808       trace
341809          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
341810          ,p_level    => C_LEVEL_STATEMENT
341811          ,p_module   => l_log_module);
341812 
341813 END IF;
341814 
341815 
341816 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
341817       trace
341818          (p_msg      => 'END of insert_sources_567'
341819          ,p_level    => C_LEVEL_PROCEDURE
341820          ,p_module   => l_log_module);
341821 END IF;
341822 EXCEPTION
341823   WHEN xla_exceptions_pkg.application_exception THEN
341824       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
341825             trace
341826                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
341827                ,p_level    => C_LEVEL_EXCEPTION
341828                ,p_module   => l_log_module);
341829       END IF;
341830       RAISE;
341831   WHEN OTHERS THEN
341832       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
341833             trace
341834                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
341835                ,p_level    => C_LEVEL_EXCEPTION
341836                ,p_module   => l_log_module);
341837        END IF;
341838        xla_exceptions_pkg.raise_message
341839            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_567');
341840 END insert_sources_567;
341841 --
341842 
341843 ---------------------------------------
341844 --
341845 -- PRIVATE FUNCTION
341846 --         EventType_567
341847 --
341848 ----------------------------------------
341849 --
341850 FUNCTION EventType_567
341851        (p_application_id         IN NUMBER
341852        ,p_base_ledger_id         IN NUMBER
341853        ,p_target_ledger_id       IN NUMBER
341854        ,p_language               IN VARCHAR2
341855        ,p_currency_code          IN VARCHAR2
341856        ,p_sla_ledger_id          IN NUMBER
341857        ,p_pad_start_date         IN DATE
341858        ,p_pad_end_date           IN DATE
341859        ,p_primary_ledger_id      IN NUMBER)
341860 RETURN BOOLEAN IS
341861 --
341862 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_NO_TP';
341863 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
341864 
341865 l_calculate_acctd_flag   VARCHAR2(1) :='N';
341866 l_calculate_g_l_flag     VARCHAR2(1) :='N';
341867 --
341868 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341869 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341870 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
341871 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
341872 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341873 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
341874 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
341875 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341876 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
341877 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
341878 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341879 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341880 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341881 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
341882 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
341883 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
341884 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
341885 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
341886 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
341887 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
341888 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
341889 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
341890 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
341891 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
341892 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
341893 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
341894 
341895 l_event_id                             NUMBER;
341896 l_previous_event_id                    NUMBER;
341897 l_first_event_id                       NUMBER;
341898 l_last_event_id                        NUMBER;
341899 
341900 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
341901 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
341902 --
341903 --
341904 l_result                    BOOLEAN := TRUE;
341905 l_rows                      NUMBER  := 1000;
341906 l_event_type_name           VARCHAR2(80) := 'Internal Order Issue to Expense, no Transfer Pricing';
341907 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
341908 l_description               VARCHAR2(4000);
341909 l_transaction_reversal      NUMBER;
341910 l_ae_header_id              NUMBER;
341911 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
341912 l_log_module                VARCHAR2(240);
341913 --
341914 l_acct_reversal_source      VARCHAR2(30);
341915 l_trx_reversal_source       VARCHAR2(30);
341916 
341917 l_continue_with_lines       BOOLEAN := TRUE;
341918 --
341919 l_acc_rev_gl_date_source    DATE;                      -- 4262811
341920 --
341921 type t_array_event_id is table of number index by binary_integer;
341922 
341923 l_rec_array_event                    t_rec_array_event;
341924 l_null_rec_array_event               t_rec_array_event;
341925 l_array_ae_header_id                 xla_number_array_type;
341926 l_actual_flag                        VARCHAR2(1) := NULL;
341927 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
341928 l_balance_type_code                  VARCHAR2(1) :=NULL;
341929 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
341930 
341931 --
341932 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
341933 --
341934 
341935 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
341936 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
341937 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
341938 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
341939 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
341940 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341941 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341942 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341943 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341944 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341945 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341946 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341947 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
341948 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
341949 TYPE t_array_source_111 IS TABLE OF CST_XLA_INV_HEADERS_V.ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
341950 TYPE t_array_source_112 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
341951 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
341952 
341953 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
341954 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
341955 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
341956 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
341957 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
341958 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
341959 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
341960 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
341961 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
341962 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
341963 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
341964 
341965 l_array_source_1              t_array_source_1;
341966 l_array_source_2              t_array_source_2;
341967 l_array_source_3              t_array_source_3;
341968 l_array_source_4              t_array_source_4;
341969 l_array_source_5              t_array_source_5;
341970 l_array_source_22              t_array_source_22;
341971 l_array_source_33              t_array_source_33;
341972 l_array_source_41              t_array_source_41;
341973 l_array_source_42              t_array_source_42;
341974 l_array_source_43              t_array_source_43;
341975 l_array_source_44              t_array_source_44;
341976 l_array_source_45              t_array_source_45;
341977 l_array_source_59              t_array_source_59;
341978 l_array_source_85              t_array_source_85;
341979 l_array_source_85_meaning      t_array_lookup_meaning;
341980 l_array_source_111              t_array_source_111;
341981 l_array_source_112              t_array_source_112;
341982 l_array_source_114              t_array_source_114;
341983 l_array_source_114_meaning      t_array_lookup_meaning;
341984 
341985 l_array_source_11      t_array_source_11;
341986 l_array_source_15      t_array_source_15;
341987 l_array_source_84      t_array_source_84;
341988 l_array_source_88      t_array_source_88;
341989 l_array_source_91      t_array_source_91;
341990 l_array_source_92      t_array_source_92;
341991 l_array_source_93      t_array_source_93;
341992 l_array_source_94      t_array_source_94;
341993 l_array_source_95      t_array_source_95;
341994 l_array_source_97      t_array_source_97;
341995 l_array_source_108      t_array_source_108;
341996 
341997 --
341998 CURSOR header_cur
341999 IS
342000 SELECT /*+ leading(xet) cardinality(xet,1) */
342001 -- Event Type Code: INT_ORDER_ISSUE_NO_TP
342002 -- Event Class Code: INT_ORDER_TO_EXP
342003     xet.entity_id
342004   , xet.legal_entity_id
342005   , xet.entity_code
342006   , xet.transaction_number
342007   , xet.event_id
342008   , xet.event_class_code
342009   , xet.event_type_code
342010   , xet.event_number
342011   , xet.event_date
342012   , xet.transaction_date
342013   , xet.reference_num_1
342014   , xet.reference_num_2
342015   , xet.reference_num_3
342016   , xet.reference_num_4
342017   , xet.reference_char_1
342018   , xet.reference_char_2
342019   , xet.reference_char_3
342020   , xet.reference_char_4
342021   , xet.reference_date_1
342022   , xet.reference_date_2
342023   , xet.reference_date_3
342024   , xet.reference_date_4
342025   , xet.event_created_by
342026   , xet.budgetary_control_flag 
342027   , h2.TRANSACTION_ID    source_1
342028   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
342029   , h4.TRANSACTION_QUANTITY    source_3
342030   , h4.TRANSACTION_UOM    source_4
342031   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
342032   , h7.PLA_BRIDGING_ACCOUNT    source_22
342033   , h1.INTERORG_REVENUE_ACCOUNT    source_33
342034   , h7.PLA_MATERIAL_ACCOUNT    source_41
342035   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
342036   , h7.PLA_RESOURCE_ACCOUNT    source_43
342037   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
342038   , h7.PLA_OVERHEAD_ACCOUNT    source_45
342039   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
342040   , h2.DISTRIBUTION_TYPE    source_85
342041   , fvl85.meaning   source_85_meaning
342042   , h2.ORGANIZATION_ID    source_111
342043   , h2.TRANSFER_ORGANIZATION_ID    source_112
342044   , h2.TRANSFER_TO_GL_INDICATOR    source_114
342045   , fvl114.meaning   source_114_meaning
342046   FROM xla_events_gt     xet 
342047   , CST_XLA_INTERORG_PARAMS_REF_V  h1
342048   , CST_XLA_INV_HEADERS_V  h2
342049   , CST_XLA_INV_REF_V  h4
342050   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
342051   , CST_XLA_INV_TXN_TYPES_REF_V  h6
342052   , CST_XLA_PLA_CATEGORY_REF_V  h7
342053   , fnd_lookup_values    fvl85
342054   , fnd_lookup_values    fvl114
342055  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
342056    and xet.event_type_code = C_EVENT_TYPE_CODE
342057    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
342058   AND h1.event_id (+) = h2.event_id
342059  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
342060 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
342061 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
342062   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
342063   AND fvl85.view_application_id(+) = 700
342064   AND fvl85.language(+)            = USERENV('LANG')
342065      AND fvl114.lookup_type(+)         = 'YES_NO'
342066   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
342067   AND fvl114.view_application_id(+) = 0
342068   AND fvl114.language(+)            = USERENV('LANG')
342069   
342070  ORDER BY event_id
342071 ;
342072 
342073 
342074 --
342075 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
342076 IS
342077 SELECT /*+ leading(xet) cardinality(xet,1) */
342078 -- Event Type Code: INT_ORDER_ISSUE_NO_TP
342079 -- Event Class Code: INT_ORDER_TO_EXP
342080     xet.entity_id
342081    ,xet.legal_entity_id
342082    ,xet.entity_code
342083    ,xet.transaction_number
342084    ,xet.event_id
342085    ,xet.event_class_code
342086    ,xet.event_type_code
342087    ,xet.event_number
342088    ,xet.event_date
342089    ,xet.transaction_date
342090    ,xet.reference_num_1
342091    ,xet.reference_num_2
342092    ,xet.reference_num_3
342093    ,xet.reference_num_4
342094    ,xet.reference_char_1
342095    ,xet.reference_char_2
342096    ,xet.reference_char_3
342097    ,xet.reference_char_4
342098    ,xet.reference_date_1
342099    ,xet.reference_date_2
342100    ,xet.reference_date_3
342101    ,xet.reference_date_4
342102    ,xet.event_created_by
342103    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
342104   , l3.CODE_COMBINATION_ID    source_11
342105   , l3.COST_ELEMENT_ID    source_15
342106   , l3.DISTRIBUTION_IDENTIFIER    source_84
342107   , l3.CURRENCY_CODE    source_88
342108   , l3.ENTERED_AMOUNT    source_91
342109   , l3.CURRENCY_CONVERSION_DATE    source_92
342110   , l3.CURRENCY_CONVERSION_RATE    source_93
342111   , l3.CURRENCY_CONVERSION_TYPE    source_94
342112   , l3.ACCOUNTED_AMOUNT    source_95
342113   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
342114   , l3.L_ORGANIZATION_CODE    source_108
342115   FROM xla_events_gt     xet 
342116   , CST_XLA_INV_LINES_V  l3
342117  WHERE xet.event_id between x_first_event_id and x_last_event_id
342118    and xet.event_date between p_pad_start_date and p_pad_end_date
342119    and xet.event_type_code = C_EVENT_TYPE_CODE
342120    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
342121 ;
342122 
342123 --
342124 BEGIN
342125 IF g_log_enabled THEN
342126    l_log_module := C_DEFAULT_MODULE||'.EventType_567';
342127 END IF;
342128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
342129    trace
342130       (p_msg      => 'BEGIN of EventType_567'
342131       ,p_level    => C_LEVEL_PROCEDURE
342132       ,p_module   => l_log_module);
342133 END IF;
342134 
342135 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
342136    trace
342137       (p_msg      => 'p_application_id = '||p_application_id||
342138                      ' - p_base_ledger_id = '||p_base_ledger_id||
342139                      ' - p_target_ledger_id  = '||p_target_ledger_id||
342140                      ' - p_language = '||p_language||
342141                      ' - p_currency_code = '||p_currency_code||
342142                      ' - p_sla_ledger_id = '||p_sla_ledger_id
342143       ,p_level    => C_LEVEL_STATEMENT
342144       ,p_module   => l_log_module);
342145 END IF;
342146 --
342147 -- initialze arrays
342148 --
342149 g_array_event.DELETE;
342150 l_rec_array_event := l_null_rec_array_event;
342151 --
342152 --------------------------------------
342153 -- 4262811 Initialze MPA Line Number
342154 --------------------------------------
342155 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
342156 
342157 --
342158 
342159 --
342160 OPEN header_cur;
342161 --
342162 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
342163    trace
342164    (p_msg      => 'SQL - FETCH header_cur'
342165    ,p_level    => C_LEVEL_STATEMENT
342166    ,p_module   => l_log_module);
342167 END IF;
342168 --
342169 LOOP
342170 FETCH header_cur BULK COLLECT INTO
342171         l_array_entity_id
342172       , l_array_legal_entity_id
342173       , l_array_entity_code
342174       , l_array_transaction_num
342175       , l_array_event_id
342176       , l_array_class_code
342177       , l_array_event_type
342178       , l_array_event_number
342179       , l_array_event_date
342180       , l_array_transaction_date
342181       , l_array_reference_num_1
342182       , l_array_reference_num_2
342183       , l_array_reference_num_3
342184       , l_array_reference_num_4
342185       , l_array_reference_char_1
342186       , l_array_reference_char_2
342187       , l_array_reference_char_3
342188       , l_array_reference_char_4
342189       , l_array_reference_date_1
342190       , l_array_reference_date_2
342191       , l_array_reference_date_3
342192       , l_array_reference_date_4
342193       , l_array_event_created_by
342194       , l_array_budgetary_control_flag 
342195       , l_array_source_1
342196       , l_array_source_2
342197       , l_array_source_3
342198       , l_array_source_4
342199       , l_array_source_5
342200       , l_array_source_22
342201       , l_array_source_33
342202       , l_array_source_41
342203       , l_array_source_42
342204       , l_array_source_43
342205       , l_array_source_44
342206       , l_array_source_45
342207       , l_array_source_59
342208       , l_array_source_85
342209       , l_array_source_85_meaning
342210       , l_array_source_111
342211       , l_array_source_112
342212       , l_array_source_114
342213       , l_array_source_114_meaning
342214       LIMIT l_rows;
342215 --
342216 IF (C_LEVEL_EVENT >= g_log_level) THEN
342217    trace
342218    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
342219    ,p_level    => C_LEVEL_EVENT
342220    ,p_module   => l_log_module);
342221 END IF;
342222 --
342223 EXIT WHEN l_array_entity_id.COUNT = 0;
342224 
342225 -- initialize arrays
342226 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
342227 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
342228 
342229 --
342230 -- Bug 4458708
342231 --
342232 XLA_AE_LINES_PKG.g_LineNumber := 0;
342233 
342234 
342235 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
342236 g_last_hdr_idx := l_array_event_id.LAST;
342237 --
342238 -- loop for the headers. Each iteration is for each header extract row
342239 -- fetched in header cursor
342240 --
342241 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
342242 
342243 --
342244 -- set event info as cache for other routines to refer event attributes
342245 --
342246 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
342247    (p_application_id           => p_application_id
342248    ,p_primary_ledger_id        => p_primary_ledger_id
342249    ,p_base_ledger_id           => p_base_ledger_id
342250    ,p_target_ledger_id         => p_target_ledger_id
342251    ,p_entity_id                => l_array_entity_id(hdr_idx)
342252    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
342253    ,p_entity_code              => l_array_entity_code(hdr_idx)
342254    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
342255    ,p_event_id                 => l_array_event_id(hdr_idx)
342256    ,p_event_class_code         => l_array_class_code(hdr_idx)
342257    ,p_event_type_code          => l_array_event_type(hdr_idx)
342258    ,p_event_number             => l_array_event_number(hdr_idx)
342259    ,p_event_date               => l_array_event_date(hdr_idx)
342260    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
342261    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
342262    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
342263    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
342264    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
342265    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
342266    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
342267    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
342268    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
342269    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
342270    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
342271    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
342272    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
342273    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
342274    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
342275 
342276 --
342277 -- set the status of entry to C_VALID (0)
342278 --
342279 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
342280 
342281 --
342282 -- initialize a row for ae header
342283 --
342284 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
342285 
342286 l_event_id := l_array_event_id(hdr_idx);
342287 
342288 --
342289 -- storing the hdr_idx for event. May be used by line cursor.
342290 --
342291 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
342292 
342293 --
342294 -- store sources from header extract. This can be improved to
342295 -- store only those sources from header extract that may be used in lines
342296 --
342297 
342298 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
342299 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
342300 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
342301 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
342302 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
342303 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
342304 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
342305 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
342306 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
342307 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
342308 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
342309 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
342310 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
342311 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
342312 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
342313 g_array_event(l_event_id).array_value_num('source_111') := l_array_source_111(hdr_idx);
342314 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
342315 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
342316 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
342317 
342318 --
342319 -- initilaize the status of ae headers for diffrent balance types
342320 -- the status is initialised to C_NOT_CREATED (2)
342321 --
342322 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
342323 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
342324 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
342325 
342326 --
342327 -- call api to validate and store accounting attributes for header
342328 --
342329 
342330 ------------------------------------------------------------
342331 -- Accrual Reversal : to get date for Standard Source (NONE)
342332 ------------------------------------------------------------
342333 l_acc_rev_gl_date_source := NULL;
342334 
342335      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
342336       l_rec_acct_attrs.array_date_value(1) := 
342337 xla_ae_sources_pkg.GetSystemSourceDate(
342338    p_source_code           => 'XLA_REFERENCE_DATE_1'
342339  , p_source_type_code      => 'Y'
342340  , p_source_application_id =>  602
342341 );
342342      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
342343       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
342344 
342345 
342346 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
342347 
342348 XLA_AE_HEADER_PKG.SetJeCategoryName;
342349 
342350 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
342351 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
342352 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
342353 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
342354 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
342355 
342356 
342357 --
342358 xla_ae_header_pkg.SetHdrDescription(
342359    p_description => Description_1 (
342360    p_application_id => p_application_id 
342361  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342362  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342363  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342364  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342365  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342366    )
342367 );
342368 --
342369 
342370 -- No header level analytical criteria
342371 
342372 --
342373 --accounting attribute enhancement, bug 3612931
342374 --
342375 l_trx_reversal_source := SUBSTR(NULL, 1,30);
342376 
342377 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
342378    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
342379 
342380    xla_accounting_err_pkg.build_message
342381       (p_appli_s_name            => 'XLA'
342382       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
342383       ,p_token_1                 => 'ACCT_ATTR_NAME'
342384       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
342385       ,p_token_2                 => 'PRODUCT_NAME'
342386       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
342387       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
342388       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
342389       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
342390 
342391 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
342392    --
342393    -- following sets the accounting attributes needed to reverse
342394    -- accounting for a distributeion
342395    --
342396    xla_ae_lines_pkg.SetTrxReversalAttrs
342397       (p_event_id              => l_event_id
342398       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
342399       ,p_trx_reversal_source   => l_trx_reversal_source);
342400 
342401 END IF;
342402 
342403 
342404 ----------------------------------------------------------------
342405 -- 4262811 -  update the header statuses to invalid in need be
342406 ----------------------------------------------------------------
342407 --
342408 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
342409 
342410 
342411   -----------------------------------------------
342412   -- No accrual reversal for the event class/type
342413   -----------------------------------------------
342414 ----------------------------------------------------------------
342415 
342416 --
342417 -- this ends the header loop iteration for one bulk fetch
342418 --
342419 END LOOP;
342420 
342421 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
342422 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
342423 
342424 --
342425 -- insert dummy rows into lines gt table that were created due to
342426 -- transaction reversals
342427 --
342428 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
342429    l_result := XLA_AE_LINES_PKG.InsertLines;
342430 END IF;
342431 
342432 --
342433 -- reset the temp_line_num for each set of events fetched from header
342434 -- cursor rather than doing it for each new event in line cursor
342435 -- Bug 3939231
342436 --
342437 xla_ae_lines_pkg.g_temp_line_num := 0;
342438 
342439 
342440 
342441 --
342442 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
342443 --
342444 --
342445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
342446 
342447       trace
342448          (p_msg      => 'SQL - FETCH line_cur'
342449          ,p_level    => C_LEVEL_STATEMENT
342450          ,p_module   => l_log_module);
342451 
342452 END IF;
342453 --
342454 --
342455 LOOP
342456   --
342457   FETCH line_cur BULK COLLECT INTO
342458         l_array_entity_id
342459       , l_array_legal_entity_id
342460       , l_array_entity_code
342461       , l_array_transaction_num
342462       , l_array_event_id
342463       , l_array_class_code
342464       , l_array_event_type
342465       , l_array_event_number
342466       , l_array_event_date
342467       , l_array_transaction_date
342468       , l_array_reference_num_1
342469       , l_array_reference_num_2
342470       , l_array_reference_num_3
342471       , l_array_reference_num_4
342472       , l_array_reference_char_1
342473       , l_array_reference_char_2
342474       , l_array_reference_char_3
342475       , l_array_reference_char_4
342476       , l_array_reference_date_1
342477       , l_array_reference_date_2
342478       , l_array_reference_date_3
342479       , l_array_reference_date_4
342480       , l_array_event_created_by
342481       , l_array_budgetary_control_flag
342482       , l_array_extract_line_num 
342483       , l_array_source_11
342484       , l_array_source_15
342485       , l_array_source_84
342486       , l_array_source_88
342487       , l_array_source_91
342488       , l_array_source_92
342489       , l_array_source_93
342490       , l_array_source_94
342491       , l_array_source_95
342492       , l_array_source_97
342493       , l_array_source_108
342494       LIMIT l_rows;
342495 
342496   --
342497   IF (C_LEVEL_EVENT >= g_log_level) THEN
342498             trace
342499                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
342500                ,p_level    => C_LEVEL_EVENT
342501                ,p_module   => l_log_module);
342502   END IF;
342503   --
342504   EXIT WHEN l_array_entity_id.count = 0;
342505 
342506   XLA_AE_LINES_PKG.g_rec_lines := null;
342507 
342508 --
342509 -- Bug 4458708
342510 --
342511 XLA_AE_LINES_PKG.g_LineNumber := 0;
342512 --
342513 --
342514 
342515 FOR Idx IN 1..l_array_event_id.count LOOP
342516    --
342517    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
342518    --
342519    l_event_id := l_array_event_id(idx);  -- 5648433
342520 
342521    --
342522    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
342523    --
342524 
342525    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
342526              (g_array_event(l_event_id).array_value_num('header_index'))
342527          ,'N'
342528          ) <> 'Y'
342529    THEN
342530       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
342531          trace
342532             (p_msg      => 'Trancaction revesal option is not Y '
342533             ,p_level    => C_LEVEL_STATEMENT
342534             ,p_module   => l_log_module);
342535       END IF;
342536 
342537 --
342538 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
342539 --
342540 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
342541 --
342542 -- set event info as cache for other routines to refer event attributes
342543 --
342544 
342545 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
342546    l_previous_event_id := l_event_id;
342547 
342548    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
342549       (p_application_id           => p_application_id
342550       ,p_primary_ledger_id        => p_primary_ledger_id
342551       ,p_base_ledger_id           => p_base_ledger_id
342552       ,p_target_ledger_id         => p_target_ledger_id
342553       ,p_entity_id                => l_array_entity_id(Idx)
342554       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
342555       ,p_entity_code              => l_array_entity_code(Idx)
342556       ,p_transaction_num          => l_array_transaction_num(Idx)
342557       ,p_event_id                 => l_array_event_id(Idx)
342558       ,p_event_class_code         => l_array_class_code(Idx)
342559       ,p_event_type_code          => l_array_event_type(Idx)
342560       ,p_event_number             => l_array_event_number(Idx)
342561       ,p_event_date               => l_array_event_date(Idx)
342562       ,p_transaction_date         => l_array_transaction_date(Idx)
342563       ,p_reference_num_1          => l_array_reference_num_1(Idx)
342564       ,p_reference_num_2          => l_array_reference_num_2(Idx)
342565       ,p_reference_num_3          => l_array_reference_num_3(Idx)
342566       ,p_reference_num_4          => l_array_reference_num_4(Idx)
342567       ,p_reference_char_1         => l_array_reference_char_1(Idx)
342568       ,p_reference_char_2         => l_array_reference_char_2(Idx)
342569       ,p_reference_char_3         => l_array_reference_char_3(Idx)
342570       ,p_reference_char_4         => l_array_reference_char_4(Idx)
342571       ,p_reference_date_1         => l_array_reference_date_1(Idx)
342572       ,p_reference_date_2         => l_array_reference_date_2(Idx)
342573       ,p_reference_date_3         => l_array_reference_date_3(Idx)
342574       ,p_reference_date_4         => l_array_reference_date_4(Idx)
342575       ,p_event_created_by         => l_array_event_created_by(Idx)
342576       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
342577        --
342578 END IF;
342579 
342580 
342581 
342582 --
342583 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
342584 
342585 l_acct_reversal_source := SUBSTR(NULL, 1,30);
342586 
342587 IF l_continue_with_lines THEN
342588    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
342589       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
342590 
342591       xla_accounting_err_pkg.build_message
342592          (p_appli_s_name            => 'XLA'
342593          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
342594          ,p_token_1                 => 'LINE_NUMBER'
342595          ,p_value_1                 => l_array_extract_line_num(Idx)
342596          ,p_token_2                 => 'PRODUCT_NAME'
342597          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
342598          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
342599          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
342600          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
342601 
342602    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
342603       --
342604       -- following sets the accounting attributes needed to reverse
342605       -- accounting for a distributeion
342606       --
342607 
342608       --
342609       -- 5217187
342610       --
342611       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
342612       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
342613                                        g_array_event(l_event_id).array_value_num('header_index'));
342614       --
342615       --
342616 
342617       -- No reversal code generated
342618 
342619       xla_ae_lines_pkg.SetAcctReversalAttrs
342620          (p_event_id             => l_event_id
342621          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
342622          ,p_calculate_acctd_flag => l_calculate_acctd_flag
342623          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
342624    END IF;
342625 
342626    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
342627        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
342628 
342629 --
342630 AcctLineType_165 (
342631  p_application_id  => p_application_id
342632  ,p_event_id     => l_event_id
342633  ,p_calculate_acctd_flag => l_calculate_acctd_flag
342634  ,p_calculate_g_l_flag => l_calculate_g_l_flag
342635  ,p_actual_flag => l_actual_flag
342636  ,p_balance_type_code => l_balance_type_code
342637  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
342638  
342639  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342640  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342641  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342642  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342643  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342644  , p_source_11 => l_array_source_11(Idx)
342645  , p_source_84 => l_array_source_84(Idx)
342646  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
342647  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
342648  , p_source_88 => l_array_source_88(Idx)
342649  , p_source_91 => l_array_source_91(Idx)
342650  , p_source_92 => l_array_source_92(Idx)
342651  , p_source_93 => l_array_source_93(Idx)
342652  , p_source_94 => l_array_source_94(Idx)
342653  , p_source_95 => l_array_source_95(Idx)
342654  , p_source_97 => l_array_source_97(Idx)
342655  );
342656 If(l_balance_type_code = 'A') THEN
342657   l_actual_gain_loss_ref := l_gain_or_loss_ref;
342658 END IF;
342659 
342660 --
342661 
342662 
342663 --
342664 AcctLineType_177 (
342665  p_application_id  => p_application_id
342666  ,p_event_id     => l_event_id
342667  ,p_calculate_acctd_flag => l_calculate_acctd_flag
342668  ,p_calculate_g_l_flag => l_calculate_g_l_flag
342669  ,p_actual_flag => l_actual_flag
342670  ,p_balance_type_code => l_balance_type_code
342671  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
342672  
342673  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342674  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342675  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342676  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342677  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342678  , p_source_11 => l_array_source_11(Idx)
342679  , p_source_84 => l_array_source_84(Idx)
342680  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
342681  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
342682  , p_source_88 => l_array_source_88(Idx)
342683  , p_source_91 => l_array_source_91(Idx)
342684  , p_source_92 => l_array_source_92(Idx)
342685  , p_source_93 => l_array_source_93(Idx)
342686  , p_source_94 => l_array_source_94(Idx)
342687  , p_source_95 => l_array_source_95(Idx)
342688  , p_source_97 => l_array_source_97(Idx)
342689  );
342690 If(l_balance_type_code = 'A') THEN
342691   l_actual_gain_loss_ref := l_gain_or_loss_ref;
342692 END IF;
342693 
342694 --
342695 
342696 
342697 --
342698 AcctLineType_190 (
342699  p_application_id  => p_application_id
342700  ,p_event_id     => l_event_id
342701  ,p_calculate_acctd_flag => l_calculate_acctd_flag
342702  ,p_calculate_g_l_flag => l_calculate_g_l_flag
342703  ,p_actual_flag => l_actual_flag
342704  ,p_balance_type_code => l_balance_type_code
342705  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
342706  
342707  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342708  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342709  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342710  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342711  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342712  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
342713  , p_source_84 => l_array_source_84(Idx)
342714  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
342715  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
342716  , p_source_88 => l_array_source_88(Idx)
342717  , p_source_91 => l_array_source_91(Idx)
342718  , p_source_92 => l_array_source_92(Idx)
342719  , p_source_93 => l_array_source_93(Idx)
342720  , p_source_94 => l_array_source_94(Idx)
342721  , p_source_95 => l_array_source_95(Idx)
342722  , p_source_97 => l_array_source_97(Idx)
342723  );
342724 If(l_balance_type_code = 'A') THEN
342725   l_actual_gain_loss_ref := l_gain_or_loss_ref;
342726 END IF;
342727 
342728 --
342729 
342730 
342731 --
342732 AcctLineType_237 (
342733  p_application_id  => p_application_id
342734  ,p_event_id     => l_event_id
342735  ,p_calculate_acctd_flag => l_calculate_acctd_flag
342736  ,p_calculate_g_l_flag => l_calculate_g_l_flag
342737  ,p_actual_flag => l_actual_flag
342738  ,p_balance_type_code => l_balance_type_code
342739  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
342740  
342741  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342742  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342743  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342744  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342745  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342746  , p_source_15 => l_array_source_15(Idx)
342747  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
342748  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
342749  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
342750  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
342751  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
342752  , p_source_84 => l_array_source_84(Idx)
342753  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
342754  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
342755  , p_source_88 => l_array_source_88(Idx)
342756  , p_source_91 => l_array_source_91(Idx)
342757  , p_source_92 => l_array_source_92(Idx)
342758  , p_source_93 => l_array_source_93(Idx)
342759  , p_source_94 => l_array_source_94(Idx)
342760  , p_source_95 => l_array_source_95(Idx)
342761  , p_source_97 => l_array_source_97(Idx)
342762  , p_source_108 => l_array_source_108(Idx)
342763  );
342764 If(l_balance_type_code = 'A') THEN
342765   l_actual_gain_loss_ref := l_gain_or_loss_ref;
342766 END IF;
342767 
342768 --
342769 
342770 
342771 --
342772 AcctLineType_362 (
342773  p_application_id  => p_application_id
342774  ,p_event_id     => l_event_id
342775  ,p_calculate_acctd_flag => l_calculate_acctd_flag
342776  ,p_calculate_g_l_flag => l_calculate_g_l_flag
342777  ,p_actual_flag => l_actual_flag
342778  ,p_balance_type_code => l_balance_type_code
342779  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
342780  
342781  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342782  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342783  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342784  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342785  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342786  , p_source_11 => l_array_source_11(Idx)
342787  , p_source_84 => l_array_source_84(Idx)
342788  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
342789  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
342790  , p_source_88 => l_array_source_88(Idx)
342791  , p_source_91 => l_array_source_91(Idx)
342792  , p_source_92 => l_array_source_92(Idx)
342793  , p_source_93 => l_array_source_93(Idx)
342794  , p_source_94 => l_array_source_94(Idx)
342795  , p_source_95 => l_array_source_95(Idx)
342796  , p_source_97 => l_array_source_97(Idx)
342797  );
342798 If(l_balance_type_code = 'A') THEN
342799   l_actual_gain_loss_ref := l_gain_or_loss_ref;
342800 END IF;
342801 
342802 --
342803 
342804 
342805 --
342806 AcctLineType_385 (
342807  p_application_id  => p_application_id
342808  ,p_event_id     => l_event_id
342809  ,p_calculate_acctd_flag => l_calculate_acctd_flag
342810  ,p_calculate_g_l_flag => l_calculate_g_l_flag
342811  ,p_actual_flag => l_actual_flag
342812  ,p_balance_type_code => l_balance_type_code
342813  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
342814  
342815  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342816  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342817  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342818  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342819  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342820  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
342821  , p_source_84 => l_array_source_84(Idx)
342822  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
342823  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
342824  , p_source_88 => l_array_source_88(Idx)
342825  , p_source_91 => l_array_source_91(Idx)
342826  , p_source_92 => l_array_source_92(Idx)
342827  , p_source_93 => l_array_source_93(Idx)
342828  , p_source_94 => l_array_source_94(Idx)
342829  , p_source_95 => l_array_source_95(Idx)
342830  , p_source_97 => l_array_source_97(Idx)
342831  , p_source_111 => g_array_event(l_event_id).array_value_num('source_111')
342832  , p_source_112 => g_array_event(l_event_id).array_value_num('source_112')
342833  );
342834 If(l_balance_type_code = 'A') THEN
342835   l_actual_gain_loss_ref := l_gain_or_loss_ref;
342836 END IF;
342837 
342838 --
342839 
342840 
342841 --
342842 AcctLineType_447 (
342843  p_application_id  => p_application_id
342844  ,p_event_id     => l_event_id
342845  ,p_calculate_acctd_flag => l_calculate_acctd_flag
342846  ,p_calculate_g_l_flag => l_calculate_g_l_flag
342847  ,p_actual_flag => l_actual_flag
342848  ,p_balance_type_code => l_balance_type_code
342849  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
342850  
342851  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
342852  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
342853  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
342854  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
342855  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
342856  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
342857  , p_source_84 => l_array_source_84(Idx)
342858  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
342859  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
342860  , p_source_88 => l_array_source_88(Idx)
342861  , p_source_91 => l_array_source_91(Idx)
342862  , p_source_92 => l_array_source_92(Idx)
342863  , p_source_93 => l_array_source_93(Idx)
342864  , p_source_94 => l_array_source_94(Idx)
342865  , p_source_95 => l_array_source_95(Idx)
342866  , p_source_97 => l_array_source_97(Idx)
342867  , p_source_111 => g_array_event(l_event_id).array_value_num('source_111')
342868  , p_source_112 => g_array_event(l_event_id).array_value_num('source_112')
342869  );
342870 If(l_balance_type_code = 'A') THEN
342871   l_actual_gain_loss_ref := l_gain_or_loss_ref;
342872 END IF;
342873 
342874 --
342875 
342876       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
342877       -- or secondary ledger that has different currency with primary
342878       -- or alc that is calculated by sla
342879       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
342880             (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'))
342881 
342882 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
342883 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
342884           AND (l_actual_flag = 'A')) THEN
342885         XLA_AE_LINES_PKG.CreateGainOrLossLines(
342886           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
342887          ,p_application_id   => p_application_id
342888          ,p_amb_context_code => 'DEFAULT'
342889          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
342890          ,p_event_class_code => C_EVENT_CLASS_CODE
342891          ,p_event_type_code  => C_EVENT_TYPE_CODE
342892          
342893          ,p_gain_ccid        => -1
342894          ,p_loss_ccid        => -1
342895 
342896          ,p_actual_flag      => l_actual_flag
342897          ,p_enc_flag         => null
342898          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
342899          ,p_enc_g_l_ref      => null
342900          );
342901       END IF;
342902    END IF;
342903 END IF;
342904 
342905    ELSE
342906       --
342907       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
342908       --
342909       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
342910          trace
342911             (p_msg      => 'Trancaction revesal option is Y'
342912             ,p_level    => C_LEVEL_STATEMENT
342913             ,p_module   => l_log_module);
342914       END IF;
342915    END IF;
342916 
342917 END LOOP;
342918 l_result := XLA_AE_LINES_PKG.InsertLines ;
342919 end loop;
342920 close line_cur;
342921 
342922 
342923 --
342924 -- insert headers into xla_ae_headers_gt table
342925 --
342926 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
342927 
342928 -- insert into errors table here.
342929 
342930 END LOOP;
342931 
342932 --
342933 -- 4865292
342934 --
342935 -- Compare g_hdr_extract_count with event count in
342936 -- CreateHeadersAndLines.
342937 --
342938 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
342939 
342940 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
342941    trace (p_msg     => '# rows extracted from header extract objects '
342942                     || ' (running total): '
342943                     || g_hdr_extract_count
342944          ,p_level   => C_LEVEL_STATEMENT
342945          ,p_module  => l_log_module);
342946 END IF;
342947 
342948 CLOSE header_cur;
342949 --
342950 
342951 --
342952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
342953    trace
342954       (p_msg      => 'END of EventType_567'
342955       ,p_level    => C_LEVEL_PROCEDURE
342956       ,p_module   => l_log_module);
342957 END IF;
342958 --
342959 RETURN l_result;
342960 EXCEPTION
342961 WHEN xla_exceptions_pkg.application_exception THEN
342962    
342963 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
342964 
342965    
342966 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
342967 
342968    RAISE;
342969 
342970 WHEN NO_DATA_FOUND THEN
342971 
342972 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
342973 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
342974 
342975 FOR header_record IN header_cur
342976 LOOP
342977     l_array_header_events(header_record.event_id) := header_record.event_id;
342978 END LOOP;
342979 
342980 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
342981 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
342982 
342983 fnd_file.put_line(fnd_file.LOG, '                    ');
342984 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
342985 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
342986 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
342987 
342988 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
342989 LOOP
342990 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
342991 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
342992         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
342993 	END IF;
342994 END LOOP;
342995 
342996 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
342997 fnd_file.put_line(fnd_file.LOG, '                    ');
342998 
342999 
343000 xla_exceptions_pkg.raise_message
343001       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_567');
343002 
343003 
343004 WHEN OTHERS THEN
343005    xla_exceptions_pkg.raise_message
343006       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_567');
343007 END EventType_567;
343008 --
343009 
343010 ---------------------------------------
343011 --
343012 -- PRIVATE PROCEDURE
343013 --         insert_sources_568
343014 --
343015 ----------------------------------------
343016 --
343017 PROCEDURE insert_sources_568(
343018                                 p_target_ledger_id       IN NUMBER
343019                               , p_language               IN VARCHAR2
343020                               , p_sla_ledger_id          IN NUMBER
343021                               , p_pad_start_date         IN DATE
343022                               , p_pad_end_date           IN DATE
343023                          )
343024 IS
343025 
343026 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_TP';
343027 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
343028 p_apps_owner                   VARCHAR2(30);
343029 l_log_module                   VARCHAR2(240);
343030 BEGIN
343031 IF g_log_enabled THEN
343032       l_log_module := C_DEFAULT_MODULE||'.insert_sources_568';
343033 END IF;
343034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
343035 
343036       trace
343037          (p_msg      => 'BEGIN of insert_sources_568'
343038          ,p_level    => C_LEVEL_PROCEDURE
343039          ,p_module   => l_log_module);
343040 
343041 END IF;
343042 
343043 -- select APPS owner
343044 SELECT oracle_username
343045   INTO p_apps_owner
343046   FROM fnd_oracle_userid
343047  WHERE read_only_flag = 'U'
343048 ;
343049 
343050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
343051       trace
343052          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
343053                         ' - p_language = '||p_language||
343054                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
343055                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
343056                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
343057                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
343058          ,p_level    => C_LEVEL_STATEMENT
343059          ,p_module   => l_log_module);
343060 END IF;
343061 
343062 
343063 --
343064 INSERT INTO xla_diag_sources --hdr1
343065 (
343066         event_id
343067       , ledger_id
343068       , sla_ledger_id
343069       , description_language
343070       , object_name
343071       , object_type_code
343072       , line_number
343073       , source_application_id
343074       , source_type_code
343075       , source_code
343076       , source_value
343077       , source_meaning
343078       , created_by
343079       , creation_date
343080       , last_update_date
343081       , last_updated_by
343082       , last_update_login
343083       , program_update_date
343084       , program_application_id
343085       , program_id
343086       , request_id
343087 )
343088 SELECT
343089         event_id
343090       , p_target_ledger_id
343091       , p_sla_ledger_id
343092       , p_language
343093       , object_name
343094       , object_type_code
343095       , line_number
343096       , source_application_id
343097       , source_type_code
343098       , source_code
343099       , SUBSTR(source_value ,1,1996)
343100       , SUBSTR(source_meaning,1,200)
343101       , xla_environment_pkg.g_Usr_Id
343102       , TRUNC(SYSDATE)
343103       , TRUNC(SYSDATE)
343104       , xla_environment_pkg.g_Usr_Id
343105       , xla_environment_pkg.g_Login_Id
343106       , TRUNC(SYSDATE)
343107       , xla_environment_pkg.g_Prog_Appl_Id
343108       , xla_environment_pkg.g_Prog_Id
343109       , xla_environment_pkg.g_Req_Id
343110   FROM (
343111        SELECT xet.event_id                  event_id
343112             , 0                             line_number
343113             , CASE r
343114                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
343115                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
343116                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
343117                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
343118                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
343119                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
343120                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
343121                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
343122                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
343123                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
343124                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
343125                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
343126                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
343127                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
343128                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
343129                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
343130                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
343131                 
343132                ELSE null
343133               END                           object_name
343134             , CASE r
343135                 WHEN 1 THEN 'HEADER' 
343136                 WHEN 2 THEN 'HEADER' 
343137                 WHEN 3 THEN 'HEADER' 
343138                 WHEN 4 THEN 'HEADER' 
343139                 WHEN 5 THEN 'HEADER' 
343140                 WHEN 6 THEN 'HEADER' 
343141                 WHEN 7 THEN 'HEADER' 
343142                 WHEN 8 THEN 'HEADER' 
343143                 WHEN 9 THEN 'HEADER' 
343144                 WHEN 10 THEN 'HEADER' 
343145                 WHEN 11 THEN 'HEADER' 
343146                 WHEN 12 THEN 'HEADER' 
343147                 WHEN 13 THEN 'HEADER' 
343148                 WHEN 14 THEN 'HEADER' 
343149                 WHEN 15 THEN 'HEADER' 
343150                 WHEN 16 THEN 'HEADER' 
343151                 WHEN 17 THEN 'HEADER' 
343152                 
343153                 ELSE null
343154               END                           object_type_code
343155             , CASE r
343156                 WHEN 1 THEN '707' 
343157                 WHEN 2 THEN '707' 
343158                 WHEN 3 THEN '707' 
343159                 WHEN 4 THEN '707' 
343160                 WHEN 5 THEN '707' 
343161                 WHEN 6 THEN '707' 
343162                 WHEN 7 THEN '707' 
343163                 WHEN 8 THEN '707' 
343164                 WHEN 9 THEN '707' 
343165                 WHEN 10 THEN '707' 
343166                 WHEN 11 THEN '707' 
343167                 WHEN 12 THEN '707' 
343168                 WHEN 13 THEN '707' 
343169                 WHEN 14 THEN '707' 
343170                 WHEN 15 THEN '707' 
343171                 WHEN 16 THEN '707' 
343172                 WHEN 17 THEN '707' 
343173                 
343174                 ELSE null
343175               END                           source_application_id
343176             , 'S'             source_type_code
343177             , CASE r
343178                 WHEN 1 THEN 'TRANSACTION_ID' 
343179                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
343180                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
343181                 WHEN 4 THEN 'TRANSACTION_UOM' 
343182                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
343183                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
343184                 WHEN 7 THEN 'INTERORG_REVENUE_ACCOUNT' 
343185                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
343186                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
343187                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
343188                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
343189                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
343190                 WHEN 13 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
343191                 WHEN 14 THEN 'DISTRIBUTION_TYPE' 
343192                 WHEN 15 THEN 'ORGANIZATION_ID' 
343193                 WHEN 16 THEN 'TRANSFER_ORGANIZATION_ID' 
343194                 WHEN 17 THEN 'TRANSFER_TO_GL_INDICATOR' 
343195                 
343196                 ELSE null
343197               END                           source_code
343198             , CASE r
343199                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
343200                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
343201                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
343202                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
343203                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
343204                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
343205                 WHEN 7 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
343206                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
343207                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
343208                 WHEN 10 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
343209                 WHEN 11 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
343210                 WHEN 12 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
343211                 WHEN 13 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
343212                 WHEN 14 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
343213                 WHEN 15 THEN TO_CHAR(h2.ORGANIZATION_ID)
343214                 WHEN 16 THEN TO_CHAR(h2.TRANSFER_ORGANIZATION_ID)
343215                 WHEN 17 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
343216                 
343217                 ELSE null
343218               END                           source_value
343219             , CASE r
343220                 WHEN 14 THEN fvl85.meaning
343221                 WHEN 15 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
343222                           1010619
343223                          ,TO_CHAR(h2.ORGANIZATION_ID)
343224                          ,'ORGANIZATION_ID'
343225                          ,'S'
343226                          ,707)
343227                 WHEN 16 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
343228                           1010619
343229                          ,TO_CHAR(h2.TRANSFER_ORGANIZATION_ID)
343230                          ,'TRANSFER_ORGANIZATION_ID'
343231                          ,'S'
343232                          ,707)
343233                 WHEN 17 THEN fvl114.meaning
343234                 
343235                 ELSE null
343236               END               source_meaning
343237         FROM xla_events_gt     xet  
343238       , CST_XLA_INTERORG_PARAMS_REF_V  h1
343239       , CST_XLA_INV_HEADERS_V  h2
343240       , CST_XLA_INV_REF_V  h4
343241       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
343242       , CST_XLA_INV_TXN_TYPES_REF_V  h6
343243       , CST_XLA_PLA_CATEGORY_REF_V  h7
343244   , fnd_lookup_values    fvl85
343245   , fnd_lookup_values    fvl114
343246             ,(select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
343247        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
343248          AND xet.event_type_code = C_EVENT_TYPE_CODE
343249             AND h2.event_id = xet.event_id
343250   AND h1.event_id (+) = h2.event_id
343251  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id = h2.inventory_item_id and h5.organization_id = h2.organization_id AND h6.inv_transaction_type_id = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id 
343252 and h7.pla_cat_item_id          (+) = h2.inventory_item_id 
343253 and h7.pla_subinv_cg            (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
343254   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
343255   AND fvl85.view_application_id(+) = 700
343256   AND fvl85.language(+)            = USERENV('LANG')
343257      AND fvl114.lookup_type(+)         = 'YES_NO'
343258   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
343259   AND fvl114.view_application_id(+) = 0
343260   AND fvl114.language(+)            = USERENV('LANG')
343261   
343262 )
343263 ;
343264 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
343265 
343266       trace
343267          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
343268          ,p_level    => C_LEVEL_STATEMENT
343269          ,p_module   => l_log_module);
343270 
343271 END IF;
343272 --
343273 
343274 
343275 
343276 --
343277 INSERT INTO xla_diag_sources --line1
343278 (
343279         event_id
343280       , ledger_id
343281       , sla_ledger_id
343282       , description_language
343283       , object_name
343284       , object_type_code
343285       , line_number
343286       , source_application_id
343287       , source_type_code
343288       , source_code
343289       , source_value
343290       , source_meaning
343291       , created_by
343292       , creation_date
343293       , last_update_date
343294       , last_updated_by
343295       , last_update_login
343296       , program_update_date
343297       , program_application_id
343298       , program_id
343299       , request_id
343300 )
343301 SELECT  event_id
343302       , p_target_ledger_id
343303       , p_sla_ledger_id
343304       , p_language
343305       , object_name
343306       , object_type_code
343307       , line_number
343308       , source_application_id
343309       , source_type_code
343310       , source_code
343311       , SUBSTR(source_value,1,1996)
343312       , SUBSTR(source_meaning,1,200)
343313       , xla_environment_pkg.g_Usr_Id
343314       , TRUNC(SYSDATE)
343315       , TRUNC(SYSDATE)
343316       , xla_environment_pkg.g_Usr_Id
343317       , xla_environment_pkg.g_Login_Id
343318       , TRUNC(SYSDATE)
343319       , xla_environment_pkg.g_Prog_Appl_Id
343320       , xla_environment_pkg.g_Prog_Id
343321       , xla_environment_pkg.g_Req_Id
343322   FROM (
343323        SELECT xet.event_id                  event_id
343324             , l3.line_number                 line_number
343325             , CASE r
343326                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
343327                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
343328                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
343329                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
343330                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
343331                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
343332                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
343333                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
343334                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
343335                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
343336                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
343337                 
343338                ELSE null
343339               END                           object_name
343340             , CASE r
343341                 WHEN 1 THEN 'LINE' 
343342                 WHEN 2 THEN 'LINE' 
343343                 WHEN 3 THEN 'LINE' 
343344                 WHEN 4 THEN 'LINE' 
343345                 WHEN 5 THEN 'LINE' 
343346                 WHEN 6 THEN 'LINE' 
343347                 WHEN 7 THEN 'LINE' 
343348                 WHEN 8 THEN 'LINE' 
343349                 WHEN 9 THEN 'LINE' 
343350                 WHEN 10 THEN 'LINE' 
343351                 WHEN 11 THEN 'LINE' 
343352                 
343353                 ELSE null
343354               END                           object_type_code
343355             , CASE r
343356                 WHEN 1 THEN '707' 
343357                 WHEN 2 THEN '707' 
343358                 WHEN 3 THEN '707' 
343359                 WHEN 4 THEN '707' 
343360                 WHEN 5 THEN '707' 
343361                 WHEN 6 THEN '707' 
343362                 WHEN 7 THEN '707' 
343363                 WHEN 8 THEN '707' 
343364                 WHEN 9 THEN '707' 
343365                 WHEN 10 THEN '707' 
343366                 WHEN 11 THEN '707' 
343367                 
343368                 ELSE null
343369               END                           source_application_id
343370             , 'S'             source_type_code
343371             , CASE r
343372                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
343373                 WHEN 2 THEN 'COST_ELEMENT_ID' 
343374                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
343375                 WHEN 4 THEN 'CURRENCY_CODE' 
343376                 WHEN 5 THEN 'ENTERED_AMOUNT' 
343377                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
343378                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
343379                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
343380                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
343381                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
343382                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
343383                 
343384                 ELSE null
343385               END                           source_code
343386             , CASE r
343387                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
343388                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
343389                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
343390                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
343391                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
343392                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
343393                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
343394                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
343395                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
343396                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
343397                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
343398                 
343399                 ELSE null
343400               END                           source_value
343401             , CASE r
343402                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
343403                           1009615
343404                          ,TO_CHAR(l3.COST_ELEMENT_ID)
343405                          ,'COST_ELEMENT_ID'
343406                          ,'S'
343407                          ,707)
343408                 
343409                 ELSE null
343410               END               source_meaning
343411          FROM  xla_events_gt     xet  
343412         , CST_XLA_INV_LINES_V  l3
343413             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
343414         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
343415           AND xet.event_type_code = C_EVENT_TYPE_CODE
343416             AND l3.event_id          = xet.event_id
343417 
343418 )
343419 ;
343420 --
343421 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
343422 
343423       trace
343424          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
343425          ,p_level    => C_LEVEL_STATEMENT
343426          ,p_module   => l_log_module);
343427 
343428 END IF;
343429 
343430 
343431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
343432       trace
343433          (p_msg      => 'END of insert_sources_568'
343434          ,p_level    => C_LEVEL_PROCEDURE
343435          ,p_module   => l_log_module);
343436 END IF;
343437 EXCEPTION
343438   WHEN xla_exceptions_pkg.application_exception THEN
343439       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
343440             trace
343441                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
343442                ,p_level    => C_LEVEL_EXCEPTION
343443                ,p_module   => l_log_module);
343444       END IF;
343445       RAISE;
343446   WHEN OTHERS THEN
343447       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
343448             trace
343449                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
343450                ,p_level    => C_LEVEL_EXCEPTION
343451                ,p_module   => l_log_module);
343452        END IF;
343453        xla_exceptions_pkg.raise_message
343454            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_568');
343455 END insert_sources_568;
343456 --
343457 
343458 ---------------------------------------
343459 --
343460 -- PRIVATE FUNCTION
343461 --         EventType_568
343462 --
343463 ----------------------------------------
343464 --
343465 FUNCTION EventType_568
343466        (p_application_id         IN NUMBER
343467        ,p_base_ledger_id         IN NUMBER
343468        ,p_target_ledger_id       IN NUMBER
343469        ,p_language               IN VARCHAR2
343470        ,p_currency_code          IN VARCHAR2
343471        ,p_sla_ledger_id          IN NUMBER
343472        ,p_pad_start_date         IN DATE
343473        ,p_pad_end_date           IN DATE
343474        ,p_primary_ledger_id      IN NUMBER)
343475 RETURN BOOLEAN IS
343476 --
343477 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_TP';
343478 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
343479 
343480 l_calculate_acctd_flag   VARCHAR2(1) :='N';
343481 l_calculate_g_l_flag     VARCHAR2(1) :='N';
343482 --
343483 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343484 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343485 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
343486 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
343487 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343488 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
343489 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
343490 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343491 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
343492 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
343493 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343494 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343495 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343496 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
343497 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
343498 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
343499 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
343500 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
343501 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
343502 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
343503 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
343504 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
343505 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
343506 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
343507 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
343508 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
343509 
343510 l_event_id                             NUMBER;
343511 l_previous_event_id                    NUMBER;
343512 l_first_event_id                       NUMBER;
343513 l_last_event_id                        NUMBER;
343514 
343515 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
343516 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
343517 --
343518 --
343519 l_result                    BOOLEAN := TRUE;
343520 l_rows                      NUMBER  := 1000;
343521 l_event_type_name           VARCHAR2(80) := 'Internal Order Issue to Expense, Transfer Pricing';
343522 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
343523 l_description               VARCHAR2(4000);
343524 l_transaction_reversal      NUMBER;
343525 l_ae_header_id              NUMBER;
343526 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
343527 l_log_module                VARCHAR2(240);
343528 --
343529 l_acct_reversal_source      VARCHAR2(30);
343530 l_trx_reversal_source       VARCHAR2(30);
343531 
343532 l_continue_with_lines       BOOLEAN := TRUE;
343533 --
343534 l_acc_rev_gl_date_source    DATE;                      -- 4262811
343535 --
343536 type t_array_event_id is table of number index by binary_integer;
343537 
343538 l_rec_array_event                    t_rec_array_event;
343539 l_null_rec_array_event               t_rec_array_event;
343540 l_array_ae_header_id                 xla_number_array_type;
343541 l_actual_flag                        VARCHAR2(1) := NULL;
343542 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
343543 l_balance_type_code                  VARCHAR2(1) :=NULL;
343544 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
343545 
343546 --
343547 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
343548 --
343549 
343550 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
343551 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
343552 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
343553 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
343554 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
343555 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343556 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343557 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343558 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343559 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343560 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343561 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343562 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
343563 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
343564 TYPE t_array_source_111 IS TABLE OF CST_XLA_INV_HEADERS_V.ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
343565 TYPE t_array_source_112 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
343566 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
343567 
343568 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
343569 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
343570 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
343571 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
343572 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
343573 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
343574 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
343575 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
343576 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
343577 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
343578 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
343579 
343580 l_array_source_1              t_array_source_1;
343581 l_array_source_2              t_array_source_2;
343582 l_array_source_3              t_array_source_3;
343583 l_array_source_4              t_array_source_4;
343584 l_array_source_5              t_array_source_5;
343585 l_array_source_22              t_array_source_22;
343586 l_array_source_33              t_array_source_33;
343587 l_array_source_41              t_array_source_41;
343588 l_array_source_42              t_array_source_42;
343589 l_array_source_43              t_array_source_43;
343590 l_array_source_44              t_array_source_44;
343591 l_array_source_45              t_array_source_45;
343592 l_array_source_59              t_array_source_59;
343593 l_array_source_85              t_array_source_85;
343594 l_array_source_85_meaning      t_array_lookup_meaning;
343595 l_array_source_111              t_array_source_111;
343596 l_array_source_112              t_array_source_112;
343597 l_array_source_114              t_array_source_114;
343598 l_array_source_114_meaning      t_array_lookup_meaning;
343599 
343600 l_array_source_11      t_array_source_11;
343601 l_array_source_15      t_array_source_15;
343602 l_array_source_84      t_array_source_84;
343603 l_array_source_88      t_array_source_88;
343604 l_array_source_91      t_array_source_91;
343605 l_array_source_92      t_array_source_92;
343606 l_array_source_93      t_array_source_93;
343607 l_array_source_94      t_array_source_94;
343608 l_array_source_95      t_array_source_95;
343609 l_array_source_97      t_array_source_97;
343610 l_array_source_108      t_array_source_108;
343611 
343612 --
343613 CURSOR header_cur
343614 IS
343615 SELECT /*+ leading(xet) cardinality(xet,1) */
343616 -- Event Type Code: INT_ORDER_ISSUE_TP
343617 -- Event Class Code: INT_ORDER_TO_EXP
343618     xet.entity_id
343619   , xet.legal_entity_id
343620   , xet.entity_code
343621   , xet.transaction_number
343622   , xet.event_id
343623   , xet.event_class_code
343624   , xet.event_type_code
343625   , xet.event_number
343626   , xet.event_date
343627   , xet.transaction_date
343628   , xet.reference_num_1
343629   , xet.reference_num_2
343630   , xet.reference_num_3
343631   , xet.reference_num_4
343632   , xet.reference_char_1
343633   , xet.reference_char_2
343634   , xet.reference_char_3
343635   , xet.reference_char_4
343636   , xet.reference_date_1
343637   , xet.reference_date_2
343638   , xet.reference_date_3
343639   , xet.reference_date_4
343640   , xet.event_created_by
343641   , xet.budgetary_control_flag 
343642   , h2.TRANSACTION_ID    source_1
343643   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
343644   , h4.TRANSACTION_QUANTITY    source_3
343645   , h4.TRANSACTION_UOM    source_4
343646   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
343647   , h7.PLA_BRIDGING_ACCOUNT    source_22
343648   , h1.INTERORG_REVENUE_ACCOUNT    source_33
343649   , h7.PLA_MATERIAL_ACCOUNT    source_41
343650   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
343651   , h7.PLA_RESOURCE_ACCOUNT    source_43
343652   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
343653   , h7.PLA_OVERHEAD_ACCOUNT    source_45
343654   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
343655   , h2.DISTRIBUTION_TYPE    source_85
343656   , fvl85.meaning   source_85_meaning
343657   , h2.ORGANIZATION_ID    source_111
343658   , h2.TRANSFER_ORGANIZATION_ID    source_112
343659   , h2.TRANSFER_TO_GL_INDICATOR    source_114
343660   , fvl114.meaning   source_114_meaning
343661   FROM xla_events_gt     xet 
343662   , CST_XLA_INTERORG_PARAMS_REF_V  h1
343663   , CST_XLA_INV_HEADERS_V  h2
343664   , CST_XLA_INV_REF_V  h4
343665   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
343666   , CST_XLA_INV_TXN_TYPES_REF_V  h6
343667   , CST_XLA_PLA_CATEGORY_REF_V  h7
343668   , fnd_lookup_values    fvl85
343669   , fnd_lookup_values    fvl114
343670  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
343671    and xet.event_type_code = C_EVENT_TYPE_CODE
343672    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
343673   AND h1.event_id (+) = h2.event_id
343674  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID = h2.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID 
343675 AND h7.PLA_CAT_ITEM_ID          (+) = h2.INVENTORY_ITEM_ID 
343676 AND h7.PLA_SUBINV_CG            (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
343677   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
343678   AND fvl85.view_application_id(+) = 700
343679   AND fvl85.language(+)            = USERENV('LANG')
343680      AND fvl114.lookup_type(+)         = 'YES_NO'
343681   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
343682   AND fvl114.view_application_id(+) = 0
343683   AND fvl114.language(+)            = USERENV('LANG')
343684   
343685  ORDER BY event_id
343686 ;
343687 
343688 
343689 --
343690 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
343691 IS
343692 SELECT /*+ leading(xet) cardinality(xet,1) */
343693 -- Event Type Code: INT_ORDER_ISSUE_TP
343694 -- Event Class Code: INT_ORDER_TO_EXP
343695     xet.entity_id
343696    ,xet.legal_entity_id
343697    ,xet.entity_code
343698    ,xet.transaction_number
343699    ,xet.event_id
343700    ,xet.event_class_code
343701    ,xet.event_type_code
343702    ,xet.event_number
343703    ,xet.event_date
343704    ,xet.transaction_date
343705    ,xet.reference_num_1
343706    ,xet.reference_num_2
343707    ,xet.reference_num_3
343708    ,xet.reference_num_4
343709    ,xet.reference_char_1
343710    ,xet.reference_char_2
343711    ,xet.reference_char_3
343712    ,xet.reference_char_4
343713    ,xet.reference_date_1
343714    ,xet.reference_date_2
343715    ,xet.reference_date_3
343716    ,xet.reference_date_4
343717    ,xet.event_created_by
343718    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
343719   , l3.CODE_COMBINATION_ID    source_11
343720   , l3.COST_ELEMENT_ID    source_15
343721   , l3.DISTRIBUTION_IDENTIFIER    source_84
343722   , l3.CURRENCY_CODE    source_88
343723   , l3.ENTERED_AMOUNT    source_91
343724   , l3.CURRENCY_CONVERSION_DATE    source_92
343725   , l3.CURRENCY_CONVERSION_RATE    source_93
343726   , l3.CURRENCY_CONVERSION_TYPE    source_94
343727   , l3.ACCOUNTED_AMOUNT    source_95
343728   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
343729   , l3.L_ORGANIZATION_CODE    source_108
343730   FROM xla_events_gt     xet 
343731   , CST_XLA_INV_LINES_V  l3
343732  WHERE xet.event_id between x_first_event_id and x_last_event_id
343733    and xet.event_date between p_pad_start_date and p_pad_end_date
343734    and xet.event_type_code = C_EVENT_TYPE_CODE
343735    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
343736 ;
343737 
343738 --
343739 BEGIN
343740 IF g_log_enabled THEN
343741    l_log_module := C_DEFAULT_MODULE||'.EventType_568';
343742 END IF;
343743 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
343744    trace
343745       (p_msg      => 'BEGIN of EventType_568'
343746       ,p_level    => C_LEVEL_PROCEDURE
343747       ,p_module   => l_log_module);
343748 END IF;
343749 
343750 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
343751    trace
343752       (p_msg      => 'p_application_id = '||p_application_id||
343753                      ' - p_base_ledger_id = '||p_base_ledger_id||
343754                      ' - p_target_ledger_id  = '||p_target_ledger_id||
343755                      ' - p_language = '||p_language||
343756                      ' - p_currency_code = '||p_currency_code||
343757                      ' - p_sla_ledger_id = '||p_sla_ledger_id
343758       ,p_level    => C_LEVEL_STATEMENT
343759       ,p_module   => l_log_module);
343760 END IF;
343761 --
343762 -- initialze arrays
343763 --
343764 g_array_event.DELETE;
343765 l_rec_array_event := l_null_rec_array_event;
343766 --
343767 --------------------------------------
343768 -- 4262811 Initialze MPA Line Number
343769 --------------------------------------
343770 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
343771 
343772 --
343773 
343774 --
343775 OPEN header_cur;
343776 --
343777 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
343778    trace
343779    (p_msg      => 'SQL - FETCH header_cur'
343780    ,p_level    => C_LEVEL_STATEMENT
343781    ,p_module   => l_log_module);
343782 END IF;
343783 --
343784 LOOP
343785 FETCH header_cur BULK COLLECT INTO
343786         l_array_entity_id
343787       , l_array_legal_entity_id
343788       , l_array_entity_code
343789       , l_array_transaction_num
343790       , l_array_event_id
343791       , l_array_class_code
343792       , l_array_event_type
343793       , l_array_event_number
343794       , l_array_event_date
343795       , l_array_transaction_date
343796       , l_array_reference_num_1
343797       , l_array_reference_num_2
343798       , l_array_reference_num_3
343799       , l_array_reference_num_4
343800       , l_array_reference_char_1
343801       , l_array_reference_char_2
343802       , l_array_reference_char_3
343803       , l_array_reference_char_4
343804       , l_array_reference_date_1
343805       , l_array_reference_date_2
343806       , l_array_reference_date_3
343807       , l_array_reference_date_4
343808       , l_array_event_created_by
343809       , l_array_budgetary_control_flag 
343810       , l_array_source_1
343811       , l_array_source_2
343812       , l_array_source_3
343813       , l_array_source_4
343814       , l_array_source_5
343815       , l_array_source_22
343816       , l_array_source_33
343817       , l_array_source_41
343818       , l_array_source_42
343819       , l_array_source_43
343820       , l_array_source_44
343821       , l_array_source_45
343822       , l_array_source_59
343823       , l_array_source_85
343824       , l_array_source_85_meaning
343825       , l_array_source_111
343826       , l_array_source_112
343827       , l_array_source_114
343828       , l_array_source_114_meaning
343829       LIMIT l_rows;
343830 --
343831 IF (C_LEVEL_EVENT >= g_log_level) THEN
343832    trace
343833    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
343834    ,p_level    => C_LEVEL_EVENT
343835    ,p_module   => l_log_module);
343836 END IF;
343837 --
343838 EXIT WHEN l_array_entity_id.COUNT = 0;
343839 
343840 -- initialize arrays
343841 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
343842 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
343843 
343844 --
343845 -- Bug 4458708
343846 --
343847 XLA_AE_LINES_PKG.g_LineNumber := 0;
343848 
343849 
343850 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
343851 g_last_hdr_idx := l_array_event_id.LAST;
343852 --
343853 -- loop for the headers. Each iteration is for each header extract row
343854 -- fetched in header cursor
343855 --
343856 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
343857 
343858 --
343859 -- set event info as cache for other routines to refer event attributes
343860 --
343861 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
343862    (p_application_id           => p_application_id
343863    ,p_primary_ledger_id        => p_primary_ledger_id
343864    ,p_base_ledger_id           => p_base_ledger_id
343865    ,p_target_ledger_id         => p_target_ledger_id
343866    ,p_entity_id                => l_array_entity_id(hdr_idx)
343867    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
343868    ,p_entity_code              => l_array_entity_code(hdr_idx)
343869    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
343870    ,p_event_id                 => l_array_event_id(hdr_idx)
343871    ,p_event_class_code         => l_array_class_code(hdr_idx)
343872    ,p_event_type_code          => l_array_event_type(hdr_idx)
343873    ,p_event_number             => l_array_event_number(hdr_idx)
343874    ,p_event_date               => l_array_event_date(hdr_idx)
343875    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
343876    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
343877    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
343878    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
343879    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
343880    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
343881    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
343882    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
343883    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
343884    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
343885    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
343886    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
343887    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
343888    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
343889    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
343890 
343891 --
343892 -- set the status of entry to C_VALID (0)
343893 --
343894 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
343895 
343896 --
343897 -- initialize a row for ae header
343898 --
343899 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
343900 
343901 l_event_id := l_array_event_id(hdr_idx);
343902 
343903 --
343904 -- storing the hdr_idx for event. May be used by line cursor.
343905 --
343906 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
343907 
343908 --
343909 -- store sources from header extract. This can be improved to
343910 -- store only those sources from header extract that may be used in lines
343911 --
343912 
343913 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
343914 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
343915 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
343916 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
343917 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
343918 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
343919 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
343920 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
343921 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
343922 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
343923 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
343924 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
343925 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
343926 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
343927 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
343928 g_array_event(l_event_id).array_value_num('source_111') := l_array_source_111(hdr_idx);
343929 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
343930 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
343931 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
343932 
343933 --
343934 -- initilaize the status of ae headers for diffrent balance types
343935 -- the status is initialised to C_NOT_CREATED (2)
343936 --
343937 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
343938 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
343939 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
343940 
343941 --
343942 -- call api to validate and store accounting attributes for header
343943 --
343944 
343945 ------------------------------------------------------------
343946 -- Accrual Reversal : to get date for Standard Source (NONE)
343947 ------------------------------------------------------------
343948 l_acc_rev_gl_date_source := NULL;
343949 
343950      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
343951       l_rec_acct_attrs.array_date_value(1) := 
343952 xla_ae_sources_pkg.GetSystemSourceDate(
343953    p_source_code           => 'XLA_REFERENCE_DATE_1'
343954  , p_source_type_code      => 'Y'
343955  , p_source_application_id =>  602
343956 );
343957      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
343958       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
343959 
343960 
343961 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
343962 
343963 XLA_AE_HEADER_PKG.SetJeCategoryName;
343964 
343965 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
343966 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
343967 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
343968 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
343969 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
343970 
343971 
343972 --
343973 xla_ae_header_pkg.SetHdrDescription(
343974    p_description => Description_1 (
343975    p_application_id => p_application_id 
343976  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
343977  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
343978  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
343979  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
343980  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
343981    )
343982 );
343983 --
343984 
343985 -- No header level analytical criteria
343986 
343987 --
343988 --accounting attribute enhancement, bug 3612931
343989 --
343990 l_trx_reversal_source := SUBSTR(NULL, 1,30);
343991 
343992 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
343993    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
343994 
343995    xla_accounting_err_pkg.build_message
343996       (p_appli_s_name            => 'XLA'
343997       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
343998       ,p_token_1                 => 'ACCT_ATTR_NAME'
343999       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
344000       ,p_token_2                 => 'PRODUCT_NAME'
344001       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
344002       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
344003       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
344004       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
344005 
344006 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
344007    --
344008    -- following sets the accounting attributes needed to reverse
344009    -- accounting for a distributeion
344010    --
344011    xla_ae_lines_pkg.SetTrxReversalAttrs
344012       (p_event_id              => l_event_id
344013       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
344014       ,p_trx_reversal_source   => l_trx_reversal_source);
344015 
344016 END IF;
344017 
344018 
344019 ----------------------------------------------------------------
344020 -- 4262811 -  update the header statuses to invalid in need be
344021 ----------------------------------------------------------------
344022 --
344023 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
344024 
344025 
344026   -----------------------------------------------
344027   -- No accrual reversal for the event class/type
344028   -----------------------------------------------
344029 ----------------------------------------------------------------
344030 
344031 --
344032 -- this ends the header loop iteration for one bulk fetch
344033 --
344034 END LOOP;
344035 
344036 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
344037 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
344038 
344039 --
344040 -- insert dummy rows into lines gt table that were created due to
344041 -- transaction reversals
344042 --
344043 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
344044    l_result := XLA_AE_LINES_PKG.InsertLines;
344045 END IF;
344046 
344047 --
344048 -- reset the temp_line_num for each set of events fetched from header
344049 -- cursor rather than doing it for each new event in line cursor
344050 -- Bug 3939231
344051 --
344052 xla_ae_lines_pkg.g_temp_line_num := 0;
344053 
344054 
344055 
344056 --
344057 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
344058 --
344059 --
344060 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344061 
344062       trace
344063          (p_msg      => 'SQL - FETCH line_cur'
344064          ,p_level    => C_LEVEL_STATEMENT
344065          ,p_module   => l_log_module);
344066 
344067 END IF;
344068 --
344069 --
344070 LOOP
344071   --
344072   FETCH line_cur BULK COLLECT INTO
344073         l_array_entity_id
344074       , l_array_legal_entity_id
344075       , l_array_entity_code
344076       , l_array_transaction_num
344077       , l_array_event_id
344078       , l_array_class_code
344079       , l_array_event_type
344080       , l_array_event_number
344081       , l_array_event_date
344082       , l_array_transaction_date
344083       , l_array_reference_num_1
344084       , l_array_reference_num_2
344085       , l_array_reference_num_3
344086       , l_array_reference_num_4
344087       , l_array_reference_char_1
344088       , l_array_reference_char_2
344089       , l_array_reference_char_3
344090       , l_array_reference_char_4
344091       , l_array_reference_date_1
344092       , l_array_reference_date_2
344093       , l_array_reference_date_3
344094       , l_array_reference_date_4
344095       , l_array_event_created_by
344096       , l_array_budgetary_control_flag
344097       , l_array_extract_line_num 
344098       , l_array_source_11
344099       , l_array_source_15
344100       , l_array_source_84
344101       , l_array_source_88
344102       , l_array_source_91
344103       , l_array_source_92
344104       , l_array_source_93
344105       , l_array_source_94
344106       , l_array_source_95
344107       , l_array_source_97
344108       , l_array_source_108
344109       LIMIT l_rows;
344110 
344111   --
344112   IF (C_LEVEL_EVENT >= g_log_level) THEN
344113             trace
344114                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
344115                ,p_level    => C_LEVEL_EVENT
344116                ,p_module   => l_log_module);
344117   END IF;
344118   --
344119   EXIT WHEN l_array_entity_id.count = 0;
344120 
344121   XLA_AE_LINES_PKG.g_rec_lines := null;
344122 
344123 --
344124 -- Bug 4458708
344125 --
344126 XLA_AE_LINES_PKG.g_LineNumber := 0;
344127 --
344128 --
344129 
344130 FOR Idx IN 1..l_array_event_id.count LOOP
344131    --
344132    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
344133    --
344134    l_event_id := l_array_event_id(idx);  -- 5648433
344135 
344136    --
344137    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
344138    --
344139 
344140    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
344141              (g_array_event(l_event_id).array_value_num('header_index'))
344142          ,'N'
344143          ) <> 'Y'
344144    THEN
344145       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344146          trace
344147             (p_msg      => 'Trancaction revesal option is not Y '
344148             ,p_level    => C_LEVEL_STATEMENT
344149             ,p_module   => l_log_module);
344150       END IF;
344151 
344152 --
344153 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
344154 --
344155 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
344156 --
344157 -- set event info as cache for other routines to refer event attributes
344158 --
344159 
344160 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
344161    l_previous_event_id := l_event_id;
344162 
344163    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
344164       (p_application_id           => p_application_id
344165       ,p_primary_ledger_id        => p_primary_ledger_id
344166       ,p_base_ledger_id           => p_base_ledger_id
344167       ,p_target_ledger_id         => p_target_ledger_id
344168       ,p_entity_id                => l_array_entity_id(Idx)
344169       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
344170       ,p_entity_code              => l_array_entity_code(Idx)
344171       ,p_transaction_num          => l_array_transaction_num(Idx)
344172       ,p_event_id                 => l_array_event_id(Idx)
344173       ,p_event_class_code         => l_array_class_code(Idx)
344174       ,p_event_type_code          => l_array_event_type(Idx)
344175       ,p_event_number             => l_array_event_number(Idx)
344176       ,p_event_date               => l_array_event_date(Idx)
344177       ,p_transaction_date         => l_array_transaction_date(Idx)
344178       ,p_reference_num_1          => l_array_reference_num_1(Idx)
344179       ,p_reference_num_2          => l_array_reference_num_2(Idx)
344180       ,p_reference_num_3          => l_array_reference_num_3(Idx)
344181       ,p_reference_num_4          => l_array_reference_num_4(Idx)
344182       ,p_reference_char_1         => l_array_reference_char_1(Idx)
344183       ,p_reference_char_2         => l_array_reference_char_2(Idx)
344184       ,p_reference_char_3         => l_array_reference_char_3(Idx)
344185       ,p_reference_char_4         => l_array_reference_char_4(Idx)
344186       ,p_reference_date_1         => l_array_reference_date_1(Idx)
344187       ,p_reference_date_2         => l_array_reference_date_2(Idx)
344188       ,p_reference_date_3         => l_array_reference_date_3(Idx)
344189       ,p_reference_date_4         => l_array_reference_date_4(Idx)
344190       ,p_event_created_by         => l_array_event_created_by(Idx)
344191       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
344192        --
344193 END IF;
344194 
344195 
344196 
344197 --
344198 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
344199 
344200 l_acct_reversal_source := SUBSTR(NULL, 1,30);
344201 
344202 IF l_continue_with_lines THEN
344203    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
344204       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
344205 
344206       xla_accounting_err_pkg.build_message
344207          (p_appli_s_name            => 'XLA'
344208          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
344209          ,p_token_1                 => 'LINE_NUMBER'
344210          ,p_value_1                 => l_array_extract_line_num(Idx)
344211          ,p_token_2                 => 'PRODUCT_NAME'
344212          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
344213          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
344214          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
344215          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
344216 
344217    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
344218       --
344219       -- following sets the accounting attributes needed to reverse
344220       -- accounting for a distributeion
344221       --
344222 
344223       --
344224       -- 5217187
344225       --
344226       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
344227       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
344228                                        g_array_event(l_event_id).array_value_num('header_index'));
344229       --
344230       --
344231 
344232       -- No reversal code generated
344233 
344234       xla_ae_lines_pkg.SetAcctReversalAttrs
344235          (p_event_id             => l_event_id
344236          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
344237          ,p_calculate_acctd_flag => l_calculate_acctd_flag
344238          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
344239    END IF;
344240 
344241    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
344242        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
344243 
344244 --
344245 AcctLineType_157 (
344246  p_application_id  => p_application_id
344247  ,p_event_id     => l_event_id
344248  ,p_calculate_acctd_flag => l_calculate_acctd_flag
344249  ,p_calculate_g_l_flag => l_calculate_g_l_flag
344250  ,p_actual_flag => l_actual_flag
344251  ,p_balance_type_code => l_balance_type_code
344252  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
344253  
344254  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
344255  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
344256  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
344257  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
344258  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
344259  , p_source_11 => l_array_source_11(Idx)
344260  , p_source_84 => l_array_source_84(Idx)
344261  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
344262  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
344263  , p_source_88 => l_array_source_88(Idx)
344264  , p_source_91 => l_array_source_91(Idx)
344265  , p_source_92 => l_array_source_92(Idx)
344266  , p_source_93 => l_array_source_93(Idx)
344267  , p_source_94 => l_array_source_94(Idx)
344268  , p_source_95 => l_array_source_95(Idx)
344269  , p_source_97 => l_array_source_97(Idx)
344270  );
344271 If(l_balance_type_code = 'A') THEN
344272   l_actual_gain_loss_ref := l_gain_or_loss_ref;
344273 END IF;
344274 
344275 --
344276 
344277 
344278 --
344279 AcctLineType_185 (
344280  p_application_id  => p_application_id
344281  ,p_event_id     => l_event_id
344282  ,p_calculate_acctd_flag => l_calculate_acctd_flag
344283  ,p_calculate_g_l_flag => l_calculate_g_l_flag
344284  ,p_actual_flag => l_actual_flag
344285  ,p_balance_type_code => l_balance_type_code
344286  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
344287  
344288  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
344289  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
344290  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
344291  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
344292  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
344293  , p_source_11 => l_array_source_11(Idx)
344294  , p_source_84 => l_array_source_84(Idx)
344295  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
344296  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
344297  , p_source_88 => l_array_source_88(Idx)
344298  , p_source_91 => l_array_source_91(Idx)
344299  , p_source_92 => l_array_source_92(Idx)
344300  , p_source_93 => l_array_source_93(Idx)
344301  , p_source_94 => l_array_source_94(Idx)
344302  , p_source_95 => l_array_source_95(Idx)
344303  , p_source_97 => l_array_source_97(Idx)
344304  );
344305 If(l_balance_type_code = 'A') THEN
344306   l_actual_gain_loss_ref := l_gain_or_loss_ref;
344307 END IF;
344308 
344309 --
344310 
344311 
344312 --
344313 AcctLineType_187 (
344314  p_application_id  => p_application_id
344315  ,p_event_id     => l_event_id
344316  ,p_calculate_acctd_flag => l_calculate_acctd_flag
344317  ,p_calculate_g_l_flag => l_calculate_g_l_flag
344318  ,p_actual_flag => l_actual_flag
344319  ,p_balance_type_code => l_balance_type_code
344320  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
344321  
344322  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
344323  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
344324  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
344325  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
344326  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
344327  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
344328  , p_source_84 => l_array_source_84(Idx)
344329  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
344330  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
344331  , p_source_88 => l_array_source_88(Idx)
344332  , p_source_91 => l_array_source_91(Idx)
344333  , p_source_92 => l_array_source_92(Idx)
344334  , p_source_93 => l_array_source_93(Idx)
344335  , p_source_94 => l_array_source_94(Idx)
344336  , p_source_95 => l_array_source_95(Idx)
344337  , p_source_97 => l_array_source_97(Idx)
344338  );
344339 If(l_balance_type_code = 'A') THEN
344340   l_actual_gain_loss_ref := l_gain_or_loss_ref;
344341 END IF;
344342 
344343 --
344344 
344345 
344346 --
344347 AcctLineType_284 (
344348  p_application_id  => p_application_id
344349  ,p_event_id     => l_event_id
344350  ,p_calculate_acctd_flag => l_calculate_acctd_flag
344351  ,p_calculate_g_l_flag => l_calculate_g_l_flag
344352  ,p_actual_flag => l_actual_flag
344353  ,p_balance_type_code => l_balance_type_code
344354  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
344355  
344356  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
344357  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
344358  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
344359  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
344360  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
344361  , p_source_15 => l_array_source_15(Idx)
344362  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
344363  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
344364  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
344365  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
344366  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
344367  , p_source_84 => l_array_source_84(Idx)
344368  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
344369  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
344370  , p_source_88 => l_array_source_88(Idx)
344371  , p_source_91 => l_array_source_91(Idx)
344372  , p_source_92 => l_array_source_92(Idx)
344373  , p_source_93 => l_array_source_93(Idx)
344374  , p_source_94 => l_array_source_94(Idx)
344375  , p_source_95 => l_array_source_95(Idx)
344376  , p_source_97 => l_array_source_97(Idx)
344377  , p_source_108 => l_array_source_108(Idx)
344378  );
344379 If(l_balance_type_code = 'A') THEN
344380   l_actual_gain_loss_ref := l_gain_or_loss_ref;
344381 END IF;
344382 
344383 --
344384 
344385 
344386 --
344387 AcctLineType_363 (
344388  p_application_id  => p_application_id
344389  ,p_event_id     => l_event_id
344390  ,p_calculate_acctd_flag => l_calculate_acctd_flag
344391  ,p_calculate_g_l_flag => l_calculate_g_l_flag
344392  ,p_actual_flag => l_actual_flag
344393  ,p_balance_type_code => l_balance_type_code
344394  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
344395  
344396  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
344397  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
344398  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
344399  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
344400  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
344401  , p_source_11 => l_array_source_11(Idx)
344402  , p_source_84 => l_array_source_84(Idx)
344403  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
344404  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
344405  , p_source_88 => l_array_source_88(Idx)
344406  , p_source_91 => l_array_source_91(Idx)
344407  , p_source_92 => l_array_source_92(Idx)
344408  , p_source_93 => l_array_source_93(Idx)
344409  , p_source_94 => l_array_source_94(Idx)
344410  , p_source_95 => l_array_source_95(Idx)
344411  , p_source_97 => l_array_source_97(Idx)
344412  );
344413 If(l_balance_type_code = 'A') THEN
344414   l_actual_gain_loss_ref := l_gain_or_loss_ref;
344415 END IF;
344416 
344417 --
344418 
344419 
344420 --
344421 AcctLineType_389 (
344422  p_application_id  => p_application_id
344423  ,p_event_id     => l_event_id
344424  ,p_calculate_acctd_flag => l_calculate_acctd_flag
344425  ,p_calculate_g_l_flag => l_calculate_g_l_flag
344426  ,p_actual_flag => l_actual_flag
344427  ,p_balance_type_code => l_balance_type_code
344428  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
344429  
344430  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
344431  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
344432  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
344433  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
344434  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
344435  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
344436  , p_source_84 => l_array_source_84(Idx)
344437  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
344438  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
344439  , p_source_88 => l_array_source_88(Idx)
344440  , p_source_91 => l_array_source_91(Idx)
344441  , p_source_92 => l_array_source_92(Idx)
344442  , p_source_93 => l_array_source_93(Idx)
344443  , p_source_94 => l_array_source_94(Idx)
344444  , p_source_95 => l_array_source_95(Idx)
344445  , p_source_97 => l_array_source_97(Idx)
344446  , p_source_111 => g_array_event(l_event_id).array_value_num('source_111')
344447  , p_source_112 => g_array_event(l_event_id).array_value_num('source_112')
344448  );
344449 If(l_balance_type_code = 'A') THEN
344450   l_actual_gain_loss_ref := l_gain_or_loss_ref;
344451 END IF;
344452 
344453 --
344454 
344455 
344456 --
344457 AcctLineType_448 (
344458  p_application_id  => p_application_id
344459  ,p_event_id     => l_event_id
344460  ,p_calculate_acctd_flag => l_calculate_acctd_flag
344461  ,p_calculate_g_l_flag => l_calculate_g_l_flag
344462  ,p_actual_flag => l_actual_flag
344463  ,p_balance_type_code => l_balance_type_code
344464  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
344465  
344466  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
344467  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
344468  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
344469  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
344470  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
344471  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
344472  , p_source_84 => l_array_source_84(Idx)
344473  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
344474  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
344475  , p_source_88 => l_array_source_88(Idx)
344476  , p_source_91 => l_array_source_91(Idx)
344477  , p_source_92 => l_array_source_92(Idx)
344478  , p_source_93 => l_array_source_93(Idx)
344479  , p_source_94 => l_array_source_94(Idx)
344480  , p_source_95 => l_array_source_95(Idx)
344481  , p_source_97 => l_array_source_97(Idx)
344482  , p_source_111 => g_array_event(l_event_id).array_value_num('source_111')
344483  , p_source_112 => g_array_event(l_event_id).array_value_num('source_112')
344484  );
344485 If(l_balance_type_code = 'A') THEN
344486   l_actual_gain_loss_ref := l_gain_or_loss_ref;
344487 END IF;
344488 
344489 --
344490 
344491       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
344492       -- or secondary ledger that has different currency with primary
344493       -- or alc that is calculated by sla
344494       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
344495             (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'))
344496 
344497 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
344498 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
344499           AND (l_actual_flag = 'A')) THEN
344500         XLA_AE_LINES_PKG.CreateGainOrLossLines(
344501           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
344502          ,p_application_id   => p_application_id
344503          ,p_amb_context_code => 'DEFAULT'
344504          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
344505          ,p_event_class_code => C_EVENT_CLASS_CODE
344506          ,p_event_type_code  => C_EVENT_TYPE_CODE
344507          
344508          ,p_gain_ccid        => -1
344509          ,p_loss_ccid        => -1
344510 
344511          ,p_actual_flag      => l_actual_flag
344512          ,p_enc_flag         => null
344513          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
344514          ,p_enc_g_l_ref      => null
344515          );
344516       END IF;
344517    END IF;
344518 END IF;
344519 
344520    ELSE
344521       --
344522       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
344523       --
344524       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344525          trace
344526             (p_msg      => 'Trancaction revesal option is Y'
344527             ,p_level    => C_LEVEL_STATEMENT
344528             ,p_module   => l_log_module);
344529       END IF;
344530    END IF;
344531 
344532 END LOOP;
344533 l_result := XLA_AE_LINES_PKG.InsertLines ;
344534 end loop;
344535 close line_cur;
344536 
344537 
344538 --
344539 -- insert headers into xla_ae_headers_gt table
344540 --
344541 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
344542 
344543 -- insert into errors table here.
344544 
344545 END LOOP;
344546 
344547 --
344548 -- 4865292
344549 --
344550 -- Compare g_hdr_extract_count with event count in
344551 -- CreateHeadersAndLines.
344552 --
344553 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
344554 
344555 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344556    trace (p_msg     => '# rows extracted from header extract objects '
344557                     || ' (running total): '
344558                     || g_hdr_extract_count
344559          ,p_level   => C_LEVEL_STATEMENT
344560          ,p_module  => l_log_module);
344561 END IF;
344562 
344563 CLOSE header_cur;
344564 --
344565 
344566 --
344567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
344568    trace
344569       (p_msg      => 'END of EventType_568'
344570       ,p_level    => C_LEVEL_PROCEDURE
344571       ,p_module   => l_log_module);
344572 END IF;
344573 --
344574 RETURN l_result;
344575 EXCEPTION
344576 WHEN xla_exceptions_pkg.application_exception THEN
344577    
344578 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
344579 
344580    
344581 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
344582 
344583    RAISE;
344584 
344585 WHEN NO_DATA_FOUND THEN
344586 
344587 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
344588 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
344589 
344590 FOR header_record IN header_cur
344591 LOOP
344592     l_array_header_events(header_record.event_id) := header_record.event_id;
344593 END LOOP;
344594 
344595 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
344596 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
344597 
344598 fnd_file.put_line(fnd_file.LOG, '                    ');
344599 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
344600 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
344601 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
344602 
344603 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
344604 LOOP
344605 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
344606 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
344607         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
344608 	END IF;
344609 END LOOP;
344610 
344611 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
344612 fnd_file.put_line(fnd_file.LOG, '                    ');
344613 
344614 
344615 xla_exceptions_pkg.raise_message
344616       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_568');
344617 
344618 
344619 WHEN OTHERS THEN
344620    xla_exceptions_pkg.raise_message
344621       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_568');
344622 END EventType_568;
344623 --
344624 
344625 ---------------------------------------
344626 --
344627 -- PRIVATE PROCEDURE
344628 --         insert_sources_569
344629 --
344630 ----------------------------------------
344631 --
344632 PROCEDURE insert_sources_569(
344633                                 p_target_ledger_id       IN NUMBER
344634                               , p_language               IN VARCHAR2
344635                               , p_sla_ledger_id          IN NUMBER
344636                               , p_pad_start_date         IN DATE
344637                               , p_pad_end_date           IN DATE
344638                          )
344639 IS
344640 
344641 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'IPV_TRANSFER_WO';
344642 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'OSP';
344643 p_apps_owner                   VARCHAR2(30);
344644 l_log_module                   VARCHAR2(240);
344645 BEGIN
344646 IF g_log_enabled THEN
344647       l_log_module := C_DEFAULT_MODULE||'.insert_sources_569';
344648 END IF;
344649 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
344650 
344651       trace
344652          (p_msg      => 'BEGIN of insert_sources_569'
344653          ,p_level    => C_LEVEL_PROCEDURE
344654          ,p_module   => l_log_module);
344655 
344656 END IF;
344657 
344658 -- select APPS owner
344659 SELECT oracle_username
344660   INTO p_apps_owner
344661   FROM fnd_oracle_userid
344662  WHERE read_only_flag = 'U'
344663 ;
344664 
344665 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344666       trace
344667          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
344668                         ' - p_language = '||p_language||
344669                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
344670                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
344671                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
344672                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
344673          ,p_level    => C_LEVEL_STATEMENT
344674          ,p_module   => l_log_module);
344675 END IF;
344676 
344677 
344678 --
344679 INSERT INTO xla_diag_sources --hdr1
344680 (
344681         event_id
344682       , ledger_id
344683       , sla_ledger_id
344684       , description_language
344685       , object_name
344686       , object_type_code
344687       , line_number
344688       , source_application_id
344689       , source_type_code
344690       , source_code
344691       , source_value
344692       , source_meaning
344693       , created_by
344694       , creation_date
344695       , last_update_date
344696       , last_updated_by
344697       , last_update_login
344698       , program_update_date
344699       , program_application_id
344700       , program_id
344701       , request_id
344702 )
344703 SELECT
344704         event_id
344705       , p_target_ledger_id
344706       , p_sla_ledger_id
344707       , p_language
344708       , object_name
344709       , object_type_code
344710       , line_number
344711       , source_application_id
344712       , source_type_code
344713       , source_code
344714       , SUBSTR(source_value ,1,1996)
344715       , SUBSTR(source_meaning,1,200)
344716       , xla_environment_pkg.g_Usr_Id
344717       , TRUNC(SYSDATE)
344718       , TRUNC(SYSDATE)
344719       , xla_environment_pkg.g_Usr_Id
344720       , xla_environment_pkg.g_Login_Id
344721       , TRUNC(SYSDATE)
344722       , xla_environment_pkg.g_Prog_Appl_Id
344723       , xla_environment_pkg.g_Prog_Id
344724       , xla_environment_pkg.g_Req_Id
344725   FROM (
344726        SELECT xet.event_id                  event_id
344727             , 0                             line_number
344728             , CASE r
344729                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
344730                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
344731                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
344732                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
344733                 WHEN 5 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
344734                 WHEN 6 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
344735                 WHEN 7 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
344736                 WHEN 8 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
344737                 WHEN 9 THEN 'CST_XLA_REP_ITEM_REF_V' 
344738                 WHEN 10 THEN 'CST_XLA_WIP_HEADERS_V' 
344739                 WHEN 11 THEN 'CST_XLA_WIP_HEADERS_V' 
344740                 WHEN 12 THEN 'CST_XLA_WIP_HEADERS_V' 
344741                 WHEN 13 THEN 'CST_XLA_WIP_HEADERS_V' 
344742                 WHEN 14 THEN 'CST_XLA_WIP_HEADERS_V' 
344743                 
344744                ELSE null
344745               END                           object_name
344746             , CASE r
344747                 WHEN 1 THEN 'HEADER' 
344748                 WHEN 2 THEN 'HEADER' 
344749                 WHEN 3 THEN 'HEADER' 
344750                 WHEN 4 THEN 'HEADER' 
344751                 WHEN 5 THEN 'HEADER' 
344752                 WHEN 6 THEN 'HEADER' 
344753                 WHEN 7 THEN 'HEADER' 
344754                 WHEN 8 THEN 'HEADER' 
344755                 WHEN 9 THEN 'HEADER' 
344756                 WHEN 10 THEN 'HEADER' 
344757                 WHEN 11 THEN 'HEADER' 
344758                 WHEN 12 THEN 'HEADER' 
344759                 WHEN 13 THEN 'HEADER' 
344760                 WHEN 14 THEN 'HEADER' 
344761                 
344762                 ELSE null
344763               END                           object_type_code
344764             , CASE r
344765                 WHEN 1 THEN '707' 
344766                 WHEN 2 THEN '707' 
344767                 WHEN 3 THEN '707' 
344768                 WHEN 4 THEN '707' 
344769                 WHEN 5 THEN '707' 
344770                 WHEN 6 THEN '707' 
344771                 WHEN 7 THEN '707' 
344772                 WHEN 8 THEN '707' 
344773                 WHEN 9 THEN '707' 
344774                 WHEN 10 THEN '707' 
344775                 WHEN 11 THEN '707' 
344776                 WHEN 12 THEN '707' 
344777                 WHEN 13 THEN '707' 
344778                 WHEN 14 THEN '707' 
344779                 
344780                 ELSE null
344781               END                           source_application_id
344782             , 'S'             source_type_code
344783             , CASE r
344784                 WHEN 1 THEN 'TRANSACTION_ID' 
344785                 WHEN 2 THEN 'TRANSACTION_UOM' 
344786                 WHEN 3 THEN 'PRIMARY_QUANTITY' 
344787                 WHEN 4 THEN 'WIP_TRANSACTION_TYPE_ID' 
344788                 WHEN 5 THEN 'INV_ITEM_EXPENSE_ACCT' 
344789                 WHEN 6 THEN 'DIS_JOB_BRIDGING_ACCT' 
344790                 WHEN 7 THEN 'WIP_ENTITY_TYPE' 
344791                 WHEN 8 THEN 'FLO_SCH_BRIDGING_ACCT' 
344792                 WHEN 9 THEN 'REP_ITM_BRIDGING_ACCT' 
344793                 WHEN 10 THEN 'DISTRIBUTION_TYPE' 
344794                 WHEN 11 THEN 'CURRENCY_CODE' 
344795                 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE' 
344796                 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE' 
344797                 WHEN 14 THEN 'TRANSFER_TO_GL_INDICATOR' 
344798                 
344799                 ELSE null
344800               END                           source_code
344801             , CASE r
344802                 WHEN 1 THEN TO_CHAR(h6.TRANSACTION_ID)
344803                 WHEN 2 THEN TO_CHAR(h6.TRANSACTION_UOM)
344804                 WHEN 3 THEN TO_CHAR(h6.PRIMARY_QUANTITY)
344805                 WHEN 4 THEN TO_CHAR(h6.WIP_TRANSACTION_TYPE_ID)
344806                 WHEN 5 THEN TO_CHAR(h3.INV_ITEM_EXPENSE_ACCT)
344807                 WHEN 6 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
344808                 WHEN 7 THEN TO_CHAR(h5.WIP_ENTITY_TYPE)
344809                 WHEN 8 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
344810                 WHEN 9 THEN TO_CHAR(h4.REP_ITM_BRIDGING_ACCT)
344811                 WHEN 10 THEN TO_CHAR(h6.DISTRIBUTION_TYPE)
344812                 WHEN 11 THEN TO_CHAR(h6.CURRENCY_CODE)
344813                 WHEN 12 THEN TO_CHAR(h6.CURRENCY_CONVERSION_DATE)
344814                 WHEN 13 THEN TO_CHAR(h6.CURRENCY_CONVERSION_RATE)
344815                 WHEN 14 THEN TO_CHAR(h6.TRANSFER_TO_GL_INDICATOR)
344816                 
344817                 ELSE null
344818               END                           source_value
344819             , CASE r
344820                 WHEN 4 THEN fvl7.meaning
344821                 WHEN 7 THEN fvl55.meaning
344822                 WHEN 10 THEN fvl85.meaning
344823                 WHEN 14 THEN fvl114.meaning
344824                 
344825                 ELSE null
344826               END               source_meaning
344827         FROM xla_events_gt     xet  
344828       , CST_XLA_DISCRETE_JOB_REF_V  h1
344829       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
344830       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h3
344831       , CST_XLA_REP_ITEM_REF_V  h4
344832       , CST_XLA_WIP_ENTITY_REF_V  h5
344833       , CST_XLA_WIP_HEADERS_V  h6
344834   , fnd_lookup_values    fvl7
344835   , fnd_lookup_values    fvl55
344836   , fnd_lookup_values    fvl85
344837   , fnd_lookup_values    fvl114
344838             ,(select rownum r from all_objects where rownum <= 14 and owner = p_apps_owner)
344839        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
344840          AND xet.event_type_code = C_EVENT_TYPE_CODE
344841             AND h6.event_id = xet.event_id
344842  AND h1.dis_job_wip_entity_id  (+) = h6.wip_entity_id AND h2.flo_sch_wip_entity_id  (+) = h6.wip_entity_id AND h3.inventory_item_id  (+) = h6.inventory_item_id  and h3.organization_id  (+) = h6.organization_id AND h4.rep_itm_wip_entity_id  (+) = h6.wip_entity_id  and h4.rep_itm_line_id  (+) = h6.line_id AND h5.wip_entity_id = h6.wip_entity_id   AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
344843   AND fvl7.lookup_code(+)         = h6.WIP_TRANSACTION_TYPE_ID
344844   AND fvl7.view_application_id(+) = 700
344845   AND fvl7.language(+)            = USERENV('LANG')
344846      AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
344847   AND fvl55.lookup_code(+)         = h5.WIP_ENTITY_TYPE
344848   AND fvl55.view_application_id(+) = 700
344849   AND fvl55.language(+)            = USERENV('LANG')
344850      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
344851   AND fvl85.lookup_code(+)         = h6.DISTRIBUTION_TYPE
344852   AND fvl85.view_application_id(+) = 700
344853   AND fvl85.language(+)            = USERENV('LANG')
344854      AND fvl114.lookup_type(+)         = 'YES_NO'
344855   AND fvl114.lookup_code(+)         = h6.TRANSFER_TO_GL_INDICATOR
344856   AND fvl114.view_application_id(+) = 0
344857   AND fvl114.language(+)            = USERENV('LANG')
344858   
344859 )
344860 ;
344861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344862 
344863       trace
344864          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
344865          ,p_level    => C_LEVEL_STATEMENT
344866          ,p_module   => l_log_module);
344867 
344868 END IF;
344869 --
344870 
344871 
344872 
344873 --
344874 INSERT INTO xla_diag_sources --line1
344875 (
344876         event_id
344877       , ledger_id
344878       , sla_ledger_id
344879       , description_language
344880       , object_name
344881       , object_type_code
344882       , line_number
344883       , source_application_id
344884       , source_type_code
344885       , source_code
344886       , source_value
344887       , source_meaning
344888       , created_by
344889       , creation_date
344890       , last_update_date
344891       , last_updated_by
344892       , last_update_login
344893       , program_update_date
344894       , program_application_id
344895       , program_id
344896       , request_id
344897 )
344898 SELECT  event_id
344899       , p_target_ledger_id
344900       , p_sla_ledger_id
344901       , p_language
344902       , object_name
344903       , object_type_code
344904       , line_number
344905       , source_application_id
344906       , source_type_code
344907       , source_code
344908       , SUBSTR(source_value,1,1996)
344909       , SUBSTR(source_meaning,1,200)
344910       , xla_environment_pkg.g_Usr_Id
344911       , TRUNC(SYSDATE)
344912       , TRUNC(SYSDATE)
344913       , xla_environment_pkg.g_Usr_Id
344914       , xla_environment_pkg.g_Login_Id
344915       , TRUNC(SYSDATE)
344916       , xla_environment_pkg.g_Prog_Appl_Id
344917       , xla_environment_pkg.g_Prog_Id
344918       , xla_environment_pkg.g_Req_Id
344919   FROM (
344920        SELECT xet.event_id                  event_id
344921             , l7.line_number                 line_number
344922             , CASE r
344923                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
344924                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
344925                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
344926                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
344927                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
344928                 
344929                ELSE null
344930               END                           object_name
344931             , CASE r
344932                 WHEN 1 THEN 'LINE' 
344933                 WHEN 2 THEN 'LINE' 
344934                 WHEN 3 THEN 'LINE' 
344935                 WHEN 4 THEN 'LINE' 
344936                 WHEN 5 THEN 'LINE' 
344937                 
344938                 ELSE null
344939               END                           object_type_code
344940             , CASE r
344941                 WHEN 1 THEN '707' 
344942                 WHEN 2 THEN '707' 
344943                 WHEN 3 THEN '707' 
344944                 WHEN 4 THEN '707' 
344945                 WHEN 5 THEN '707' 
344946                 
344947                 ELSE null
344948               END                           source_application_id
344949             , 'S'             source_type_code
344950             , CASE r
344951                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
344952                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
344953                 WHEN 3 THEN 'ENTERED_AMOUNT' 
344954                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
344955                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
344956                 
344957                 ELSE null
344958               END                           source_code
344959             , CASE r
344960                 WHEN 1 THEN TO_CHAR(l7.CODE_COMBINATION_ID)
344961                 WHEN 2 THEN TO_CHAR(l7.DISTRIBUTION_IDENTIFIER)
344962                 WHEN 3 THEN TO_CHAR(l7.ENTERED_AMOUNT)
344963                 WHEN 4 THEN TO_CHAR(l7.ACCOUNTED_AMOUNT)
344964                 WHEN 5 THEN TO_CHAR(l7.ACCOUNTING_LINE_TYPE_CODE)
344965                 
344966                 ELSE null
344967               END                           source_value
344968             , null              source_meaning
344969          FROM  xla_events_gt     xet  
344970         , CST_XLA_WIP_LINES_V  l7
344971             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
344972         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
344973           AND xet.event_type_code = C_EVENT_TYPE_CODE
344974             AND l7.event_id          = xet.event_id
344975 
344976 )
344977 ;
344978 --
344979 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
344980 
344981       trace
344982          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
344983          ,p_level    => C_LEVEL_STATEMENT
344984          ,p_module   => l_log_module);
344985 
344986 END IF;
344987 
344988 
344989 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
344990       trace
344991          (p_msg      => 'END of insert_sources_569'
344992          ,p_level    => C_LEVEL_PROCEDURE
344993          ,p_module   => l_log_module);
344994 END IF;
344995 EXCEPTION
344996   WHEN xla_exceptions_pkg.application_exception THEN
344997       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
344998             trace
344999                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
345000                ,p_level    => C_LEVEL_EXCEPTION
345001                ,p_module   => l_log_module);
345002       END IF;
345003       RAISE;
345004   WHEN OTHERS THEN
345005       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
345006             trace
345007                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
345008                ,p_level    => C_LEVEL_EXCEPTION
345009                ,p_module   => l_log_module);
345010        END IF;
345011        xla_exceptions_pkg.raise_message
345012            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_569');
345013 END insert_sources_569;
345014 --
345015 
345016 ---------------------------------------
345017 --
345018 -- PRIVATE FUNCTION
345019 --         EventType_569
345020 --
345021 ----------------------------------------
345022 --
345023 FUNCTION EventType_569
345024        (p_application_id         IN NUMBER
345025        ,p_base_ledger_id         IN NUMBER
345026        ,p_target_ledger_id       IN NUMBER
345027        ,p_language               IN VARCHAR2
345028        ,p_currency_code          IN VARCHAR2
345029        ,p_sla_ledger_id          IN NUMBER
345030        ,p_pad_start_date         IN DATE
345031        ,p_pad_end_date           IN DATE
345032        ,p_primary_ledger_id      IN NUMBER)
345033 RETURN BOOLEAN IS
345034 --
345035 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'IPV_TRANSFER_WO';
345036 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'OSP';
345037 
345038 l_calculate_acctd_flag   VARCHAR2(1) :='N';
345039 l_calculate_g_l_flag     VARCHAR2(1) :='N';
345040 --
345041 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345042 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345043 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
345044 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
345045 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345046 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
345047 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
345048 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345049 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
345050 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
345051 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345052 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345053 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345054 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
345055 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
345056 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
345057 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
345058 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
345059 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
345060 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
345061 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
345062 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
345063 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
345064 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
345065 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
345066 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
345067 
345068 l_event_id                             NUMBER;
345069 l_previous_event_id                    NUMBER;
345070 l_first_event_id                       NUMBER;
345071 l_last_event_id                        NUMBER;
345072 
345073 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
345074 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
345075 --
345076 --
345077 l_result                    BOOLEAN := TRUE;
345078 l_rows                      NUMBER  := 1000;
345079 l_event_type_name           VARCHAR2(80) := 'IPV Transfer to Work Order';
345080 l_event_class_name          VARCHAR2(80) := 'Outside Processing';
345081 l_description               VARCHAR2(4000);
345082 l_transaction_reversal      NUMBER;
345083 l_ae_header_id              NUMBER;
345084 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
345085 l_log_module                VARCHAR2(240);
345086 --
345087 l_acct_reversal_source      VARCHAR2(30);
345088 l_trx_reversal_source       VARCHAR2(30);
345089 
345090 l_continue_with_lines       BOOLEAN := TRUE;
345091 --
345092 l_acc_rev_gl_date_source    DATE;                      -- 4262811
345093 --
345094 type t_array_event_id is table of number index by binary_integer;
345095 
345096 l_rec_array_event                    t_rec_array_event;
345097 l_null_rec_array_event               t_rec_array_event;
345098 l_array_ae_header_id                 xla_number_array_type;
345099 l_actual_flag                        VARCHAR2(1) := NULL;
345100 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
345101 l_balance_type_code                  VARCHAR2(1) :=NULL;
345102 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
345103 
345104 --
345105 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
345106 --
345107 
345108 TYPE t_array_source_1 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
345109 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
345110 TYPE t_array_source_6 IS TABLE OF CST_XLA_WIP_HEADERS_V.PRIMARY_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
345111 TYPE t_array_source_7 IS TABLE OF CST_XLA_WIP_HEADERS_V.WIP_TRANSACTION_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
345112 TYPE t_array_source_53 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.INV_ITEM_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
345113 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
345114 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
345115 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
345116 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
345117 TYPE t_array_source_85 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
345118 TYPE t_array_source_88 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
345119 TYPE t_array_source_92 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
345120 TYPE t_array_source_93 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
345121 TYPE t_array_source_114 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
345122 
345123 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
345124 TYPE t_array_source_84 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
345125 TYPE t_array_source_91 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
345126 TYPE t_array_source_95 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
345127 TYPE t_array_source_97 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
345128 
345129 l_array_source_1              t_array_source_1;
345130 l_array_source_4              t_array_source_4;
345131 l_array_source_6              t_array_source_6;
345132 l_array_source_7              t_array_source_7;
345133 l_array_source_7_meaning      t_array_lookup_meaning;
345134 l_array_source_53              t_array_source_53;
345135 l_array_source_54              t_array_source_54;
345136 l_array_source_55              t_array_source_55;
345137 l_array_source_55_meaning      t_array_lookup_meaning;
345138 l_array_source_56              t_array_source_56;
345139 l_array_source_57              t_array_source_57;
345140 l_array_source_85              t_array_source_85;
345141 l_array_source_85_meaning      t_array_lookup_meaning;
345142 l_array_source_88              t_array_source_88;
345143 l_array_source_92              t_array_source_92;
345144 l_array_source_93              t_array_source_93;
345145 l_array_source_114              t_array_source_114;
345146 l_array_source_114_meaning      t_array_lookup_meaning;
345147 
345148 l_array_source_11      t_array_source_11;
345149 l_array_source_84      t_array_source_84;
345150 l_array_source_91      t_array_source_91;
345151 l_array_source_95      t_array_source_95;
345152 l_array_source_97      t_array_source_97;
345153 
345154 --
345155 CURSOR header_cur
345156 IS
345157 SELECT /*+ leading(xet) cardinality(xet,1) */
345158 -- Event Type Code: IPV_TRANSFER_WO
345159 -- Event Class Code: OSP
345160     xet.entity_id
345161   , xet.legal_entity_id
345162   , xet.entity_code
345163   , xet.transaction_number
345164   , xet.event_id
345165   , xet.event_class_code
345166   , xet.event_type_code
345167   , xet.event_number
345168   , xet.event_date
345169   , xet.transaction_date
345170   , xet.reference_num_1
345171   , xet.reference_num_2
345172   , xet.reference_num_3
345173   , xet.reference_num_4
345174   , xet.reference_char_1
345175   , xet.reference_char_2
345176   , xet.reference_char_3
345177   , xet.reference_char_4
345178   , xet.reference_date_1
345179   , xet.reference_date_2
345180   , xet.reference_date_3
345181   , xet.reference_date_4
345182   , xet.event_created_by
345183   , xet.budgetary_control_flag 
345184   , h6.TRANSACTION_ID    source_1
345185   , h6.TRANSACTION_UOM    source_4
345186   , h6.PRIMARY_QUANTITY    source_6
345187   , h6.WIP_TRANSACTION_TYPE_ID    source_7
345188   , fvl7.meaning   source_7_meaning
345189   , h3.INV_ITEM_EXPENSE_ACCT    source_53
345190   , h1.DIS_JOB_BRIDGING_ACCT    source_54
345191   , h5.WIP_ENTITY_TYPE    source_55
345192   , fvl55.meaning   source_55_meaning
345193   , h2.FLO_SCH_BRIDGING_ACCT    source_56
345194   , h4.REP_ITM_BRIDGING_ACCT    source_57
345195   , h6.DISTRIBUTION_TYPE    source_85
345196   , fvl85.meaning   source_85_meaning
345197   , h6.CURRENCY_CODE    source_88
345198   , h6.CURRENCY_CONVERSION_DATE    source_92
345199   , h6.CURRENCY_CONVERSION_RATE    source_93
345200   , h6.TRANSFER_TO_GL_INDICATOR    source_114
345201   , fvl114.meaning   source_114_meaning
345202   FROM xla_events_gt     xet 
345203   , CST_XLA_DISCRETE_JOB_REF_V  h1
345204   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
345205   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h3
345206   , CST_XLA_REP_ITEM_REF_V  h4
345207   , CST_XLA_WIP_ENTITY_REF_V  h5
345208   , CST_XLA_WIP_HEADERS_V  h6
345209   , fnd_lookup_values    fvl7
345210   , fnd_lookup_values    fvl55
345211   , fnd_lookup_values    fvl85
345212   , fnd_lookup_values    fvl114
345213  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
345214    and xet.event_type_code = C_EVENT_TYPE_CODE
345215    and xet.event_status_code <> 'N'  AND h6.event_id = xet.event_id
345216  AND h1.dis_job_wip_entity_id  (+) = h6.wip_entity_id AND h2.flo_sch_wip_entity_id  (+) = h6.wip_entity_id AND h3.INVENTORY_ITEM_ID  (+) = h6.INVENTORY_ITEM_ID  AND h3.ORGANIZATION_ID  (+) = h6.ORGANIZATION_ID AND h4.rep_itm_wip_entity_id  (+) = h6.wip_entity_id  AND h4.rep_itm_line_id  (+) = h6.line_id AND h5.wip_entity_id = h6.wip_entity_id   AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
345217   AND fvl7.lookup_code(+)         = h6.WIP_TRANSACTION_TYPE_ID
345218   AND fvl7.view_application_id(+) = 700
345219   AND fvl7.language(+)            = USERENV('LANG')
345220      AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
345221   AND fvl55.lookup_code(+)         = h5.WIP_ENTITY_TYPE
345222   AND fvl55.view_application_id(+) = 700
345223   AND fvl55.language(+)            = USERENV('LANG')
345224      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
345225   AND fvl85.lookup_code(+)         = h6.DISTRIBUTION_TYPE
345226   AND fvl85.view_application_id(+) = 700
345227   AND fvl85.language(+)            = USERENV('LANG')
345228      AND fvl114.lookup_type(+)         = 'YES_NO'
345229   AND fvl114.lookup_code(+)         = h6.TRANSFER_TO_GL_INDICATOR
345230   AND fvl114.view_application_id(+) = 0
345231   AND fvl114.language(+)            = USERENV('LANG')
345232   
345233  ORDER BY event_id
345234 ;
345235 
345236 
345237 --
345238 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
345239 IS
345240 SELECT /*+ leading(xet) cardinality(xet,1) */
345241 -- Event Type Code: IPV_TRANSFER_WO
345242 -- Event Class Code: OSP
345243     xet.entity_id
345244    ,xet.legal_entity_id
345245    ,xet.entity_code
345246    ,xet.transaction_number
345247    ,xet.event_id
345248    ,xet.event_class_code
345249    ,xet.event_type_code
345250    ,xet.event_number
345251    ,xet.event_date
345252    ,xet.transaction_date
345253    ,xet.reference_num_1
345254    ,xet.reference_num_2
345255    ,xet.reference_num_3
345256    ,xet.reference_num_4
345257    ,xet.reference_char_1
345258    ,xet.reference_char_2
345259    ,xet.reference_char_3
345260    ,xet.reference_char_4
345261    ,xet.reference_date_1
345262    ,xet.reference_date_2
345263    ,xet.reference_date_3
345264    ,xet.reference_date_4
345265    ,xet.event_created_by
345266    ,xet.budgetary_control_flag  , l7.LINE_NUMBER  
345267   , l7.CODE_COMBINATION_ID    source_11
345268   , l7.DISTRIBUTION_IDENTIFIER    source_84
345269   , l7.ENTERED_AMOUNT    source_91
345270   , l7.ACCOUNTED_AMOUNT    source_95
345271   , l7.ACCOUNTING_LINE_TYPE_CODE    source_97
345272   FROM xla_events_gt     xet 
345273   , CST_XLA_WIP_LINES_V  l7
345274  WHERE xet.event_id between x_first_event_id and x_last_event_id
345275    and xet.event_date between p_pad_start_date and p_pad_end_date
345276    and xet.event_type_code = C_EVENT_TYPE_CODE
345277    and xet.event_status_code <> 'N'   AND l7.event_id      = xet.event_id
345278 ;
345279 
345280 --
345281 BEGIN
345282 IF g_log_enabled THEN
345283    l_log_module := C_DEFAULT_MODULE||'.EventType_569';
345284 END IF;
345285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
345286    trace
345287       (p_msg      => 'BEGIN of EventType_569'
345288       ,p_level    => C_LEVEL_PROCEDURE
345289       ,p_module   => l_log_module);
345290 END IF;
345291 
345292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
345293    trace
345294       (p_msg      => 'p_application_id = '||p_application_id||
345295                      ' - p_base_ledger_id = '||p_base_ledger_id||
345296                      ' - p_target_ledger_id  = '||p_target_ledger_id||
345297                      ' - p_language = '||p_language||
345298                      ' - p_currency_code = '||p_currency_code||
345299                      ' - p_sla_ledger_id = '||p_sla_ledger_id
345300       ,p_level    => C_LEVEL_STATEMENT
345301       ,p_module   => l_log_module);
345302 END IF;
345303 --
345304 -- initialze arrays
345305 --
345306 g_array_event.DELETE;
345307 l_rec_array_event := l_null_rec_array_event;
345308 --
345309 --------------------------------------
345310 -- 4262811 Initialze MPA Line Number
345311 --------------------------------------
345312 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
345313 
345314 --
345315 
345316 --
345317 OPEN header_cur;
345318 --
345319 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
345320    trace
345321    (p_msg      => 'SQL - FETCH header_cur'
345322    ,p_level    => C_LEVEL_STATEMENT
345323    ,p_module   => l_log_module);
345324 END IF;
345325 --
345326 LOOP
345327 FETCH header_cur BULK COLLECT INTO
345328         l_array_entity_id
345329       , l_array_legal_entity_id
345330       , l_array_entity_code
345331       , l_array_transaction_num
345332       , l_array_event_id
345333       , l_array_class_code
345334       , l_array_event_type
345335       , l_array_event_number
345336       , l_array_event_date
345337       , l_array_transaction_date
345338       , l_array_reference_num_1
345339       , l_array_reference_num_2
345340       , l_array_reference_num_3
345341       , l_array_reference_num_4
345342       , l_array_reference_char_1
345343       , l_array_reference_char_2
345344       , l_array_reference_char_3
345345       , l_array_reference_char_4
345346       , l_array_reference_date_1
345347       , l_array_reference_date_2
345348       , l_array_reference_date_3
345349       , l_array_reference_date_4
345350       , l_array_event_created_by
345351       , l_array_budgetary_control_flag 
345352       , l_array_source_1
345353       , l_array_source_4
345354       , l_array_source_6
345355       , l_array_source_7
345356       , l_array_source_7_meaning
345357       , l_array_source_53
345358       , l_array_source_54
345359       , l_array_source_55
345360       , l_array_source_55_meaning
345361       , l_array_source_56
345362       , l_array_source_57
345363       , l_array_source_85
345364       , l_array_source_85_meaning
345365       , l_array_source_88
345366       , l_array_source_92
345367       , l_array_source_93
345368       , l_array_source_114
345369       , l_array_source_114_meaning
345370       LIMIT l_rows;
345371 --
345372 IF (C_LEVEL_EVENT >= g_log_level) THEN
345373    trace
345374    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
345375    ,p_level    => C_LEVEL_EVENT
345376    ,p_module   => l_log_module);
345377 END IF;
345378 --
345379 EXIT WHEN l_array_entity_id.COUNT = 0;
345380 
345381 -- initialize arrays
345382 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
345383 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
345384 
345385 --
345386 -- Bug 4458708
345387 --
345388 XLA_AE_LINES_PKG.g_LineNumber := 0;
345389 
345390 
345391 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
345392 g_last_hdr_idx := l_array_event_id.LAST;
345393 --
345394 -- loop for the headers. Each iteration is for each header extract row
345395 -- fetched in header cursor
345396 --
345397 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
345398 
345399 --
345400 -- set event info as cache for other routines to refer event attributes
345401 --
345402 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
345403    (p_application_id           => p_application_id
345404    ,p_primary_ledger_id        => p_primary_ledger_id
345405    ,p_base_ledger_id           => p_base_ledger_id
345406    ,p_target_ledger_id         => p_target_ledger_id
345407    ,p_entity_id                => l_array_entity_id(hdr_idx)
345408    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
345409    ,p_entity_code              => l_array_entity_code(hdr_idx)
345410    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
345411    ,p_event_id                 => l_array_event_id(hdr_idx)
345412    ,p_event_class_code         => l_array_class_code(hdr_idx)
345413    ,p_event_type_code          => l_array_event_type(hdr_idx)
345414    ,p_event_number             => l_array_event_number(hdr_idx)
345415    ,p_event_date               => l_array_event_date(hdr_idx)
345416    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
345417    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
345418    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
345419    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
345420    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
345421    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
345422    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
345423    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
345424    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
345425    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
345426    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
345427    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
345428    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
345429    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
345430    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
345431 
345432 --
345433 -- set the status of entry to C_VALID (0)
345434 --
345435 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
345436 
345437 --
345438 -- initialize a row for ae header
345439 --
345440 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
345441 
345442 l_event_id := l_array_event_id(hdr_idx);
345443 
345444 --
345445 -- storing the hdr_idx for event. May be used by line cursor.
345446 --
345447 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
345448 
345449 --
345450 -- store sources from header extract. This can be improved to
345451 -- store only those sources from header extract that may be used in lines
345452 --
345453 
345454 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
345455 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
345456 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
345457 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
345458 g_array_event(l_event_id).array_value_char('source_7_meaning') := l_array_source_7_meaning(hdr_idx);
345459 g_array_event(l_event_id).array_value_num('source_53') := l_array_source_53(hdr_idx);
345460 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
345461 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
345462 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
345463 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
345464 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
345465 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
345466 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
345467 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
345468 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
345469 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
345470 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
345471 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
345472 
345473 --
345474 -- initilaize the status of ae headers for diffrent balance types
345475 -- the status is initialised to C_NOT_CREATED (2)
345476 --
345477 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
345478 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
345479 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
345480 
345481 --
345482 -- call api to validate and store accounting attributes for header
345483 --
345484 
345485 ------------------------------------------------------------
345486 -- Accrual Reversal : to get date for Standard Source (NONE)
345487 ------------------------------------------------------------
345488 l_acc_rev_gl_date_source := NULL;
345489 
345490      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
345491       l_rec_acct_attrs.array_date_value(1) := 
345492 xla_ae_sources_pkg.GetSystemSourceDate(
345493    p_source_code           => 'XLA_REFERENCE_DATE_1'
345494  , p_source_type_code      => 'Y'
345495  , p_source_application_id =>  602
345496 );
345497      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
345498       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
345499 
345500 
345501 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
345502 
345503 XLA_AE_HEADER_PKG.SetJeCategoryName;
345504 
345505 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
345506 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
345507 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
345508 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
345509 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
345510 
345511 
345512 --
345513 xla_ae_header_pkg.SetHdrDescription(
345514    p_description => Description_2 (
345515    p_application_id => p_application_id 
345516  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
345517  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
345518  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
345519  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
345520  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
345521    )
345522 );
345523 --
345524 
345525 -- No header level analytical criteria
345526 
345527 --
345528 --accounting attribute enhancement, bug 3612931
345529 --
345530 l_trx_reversal_source := SUBSTR(NULL, 1,30);
345531 
345532 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
345533    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
345534 
345535    xla_accounting_err_pkg.build_message
345536       (p_appli_s_name            => 'XLA'
345537       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
345538       ,p_token_1                 => 'ACCT_ATTR_NAME'
345539       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
345540       ,p_token_2                 => 'PRODUCT_NAME'
345541       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
345542       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
345543       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
345544       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
345545 
345546 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
345547    --
345548    -- following sets the accounting attributes needed to reverse
345549    -- accounting for a distributeion
345550    --
345551    xla_ae_lines_pkg.SetTrxReversalAttrs
345552       (p_event_id              => l_event_id
345553       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
345554       ,p_trx_reversal_source   => l_trx_reversal_source);
345555 
345556 END IF;
345557 
345558 
345559 ----------------------------------------------------------------
345560 -- 4262811 -  update the header statuses to invalid in need be
345561 ----------------------------------------------------------------
345562 --
345563 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
345564 
345565 
345566   -----------------------------------------------
345567   -- No accrual reversal for the event class/type
345568   -----------------------------------------------
345569 ----------------------------------------------------------------
345570 
345571 --
345572 -- this ends the header loop iteration for one bulk fetch
345573 --
345574 END LOOP;
345575 
345576 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
345577 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
345578 
345579 --
345580 -- insert dummy rows into lines gt table that were created due to
345581 -- transaction reversals
345582 --
345583 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
345584    l_result := XLA_AE_LINES_PKG.InsertLines;
345585 END IF;
345586 
345587 --
345588 -- reset the temp_line_num for each set of events fetched from header
345589 -- cursor rather than doing it for each new event in line cursor
345590 -- Bug 3939231
345591 --
345592 xla_ae_lines_pkg.g_temp_line_num := 0;
345593 
345594 
345595 
345596 --
345597 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
345598 --
345599 --
345600 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
345601 
345602       trace
345603          (p_msg      => 'SQL - FETCH line_cur'
345604          ,p_level    => C_LEVEL_STATEMENT
345605          ,p_module   => l_log_module);
345606 
345607 END IF;
345608 --
345609 --
345610 LOOP
345611   --
345612   FETCH line_cur BULK COLLECT INTO
345613         l_array_entity_id
345614       , l_array_legal_entity_id
345615       , l_array_entity_code
345616       , l_array_transaction_num
345617       , l_array_event_id
345618       , l_array_class_code
345619       , l_array_event_type
345620       , l_array_event_number
345621       , l_array_event_date
345622       , l_array_transaction_date
345623       , l_array_reference_num_1
345624       , l_array_reference_num_2
345625       , l_array_reference_num_3
345626       , l_array_reference_num_4
345627       , l_array_reference_char_1
345628       , l_array_reference_char_2
345629       , l_array_reference_char_3
345630       , l_array_reference_char_4
345631       , l_array_reference_date_1
345632       , l_array_reference_date_2
345633       , l_array_reference_date_3
345634       , l_array_reference_date_4
345635       , l_array_event_created_by
345636       , l_array_budgetary_control_flag
345637       , l_array_extract_line_num 
345638       , l_array_source_11
345639       , l_array_source_84
345640       , l_array_source_91
345641       , l_array_source_95
345642       , l_array_source_97
345643       LIMIT l_rows;
345644 
345645   --
345646   IF (C_LEVEL_EVENT >= g_log_level) THEN
345647             trace
345648                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
345649                ,p_level    => C_LEVEL_EVENT
345650                ,p_module   => l_log_module);
345651   END IF;
345652   --
345653   EXIT WHEN l_array_entity_id.count = 0;
345654 
345655   XLA_AE_LINES_PKG.g_rec_lines := null;
345656 
345657 --
345658 -- Bug 4458708
345659 --
345660 XLA_AE_LINES_PKG.g_LineNumber := 0;
345661 --
345662 --
345663 
345664 FOR Idx IN 1..l_array_event_id.count LOOP
345665    --
345666    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
345667    --
345668    l_event_id := l_array_event_id(idx);  -- 5648433
345669 
345670    --
345671    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
345672    --
345673 
345674    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
345675              (g_array_event(l_event_id).array_value_num('header_index'))
345676          ,'N'
345677          ) <> 'Y'
345678    THEN
345679       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
345680          trace
345681             (p_msg      => 'Trancaction revesal option is not Y '
345682             ,p_level    => C_LEVEL_STATEMENT
345683             ,p_module   => l_log_module);
345684       END IF;
345685 
345686 --
345687 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
345688 --
345689 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
345690 --
345691 -- set event info as cache for other routines to refer event attributes
345692 --
345693 
345694 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
345695    l_previous_event_id := l_event_id;
345696 
345697    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
345698       (p_application_id           => p_application_id
345699       ,p_primary_ledger_id        => p_primary_ledger_id
345700       ,p_base_ledger_id           => p_base_ledger_id
345701       ,p_target_ledger_id         => p_target_ledger_id
345702       ,p_entity_id                => l_array_entity_id(Idx)
345703       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
345704       ,p_entity_code              => l_array_entity_code(Idx)
345705       ,p_transaction_num          => l_array_transaction_num(Idx)
345706       ,p_event_id                 => l_array_event_id(Idx)
345707       ,p_event_class_code         => l_array_class_code(Idx)
345708       ,p_event_type_code          => l_array_event_type(Idx)
345709       ,p_event_number             => l_array_event_number(Idx)
345710       ,p_event_date               => l_array_event_date(Idx)
345711       ,p_transaction_date         => l_array_transaction_date(Idx)
345712       ,p_reference_num_1          => l_array_reference_num_1(Idx)
345713       ,p_reference_num_2          => l_array_reference_num_2(Idx)
345714       ,p_reference_num_3          => l_array_reference_num_3(Idx)
345715       ,p_reference_num_4          => l_array_reference_num_4(Idx)
345716       ,p_reference_char_1         => l_array_reference_char_1(Idx)
345717       ,p_reference_char_2         => l_array_reference_char_2(Idx)
345718       ,p_reference_char_3         => l_array_reference_char_3(Idx)
345719       ,p_reference_char_4         => l_array_reference_char_4(Idx)
345720       ,p_reference_date_1         => l_array_reference_date_1(Idx)
345721       ,p_reference_date_2         => l_array_reference_date_2(Idx)
345722       ,p_reference_date_3         => l_array_reference_date_3(Idx)
345723       ,p_reference_date_4         => l_array_reference_date_4(Idx)
345724       ,p_event_created_by         => l_array_event_created_by(Idx)
345725       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
345726        --
345727 END IF;
345728 
345729 
345730 
345731 --
345732 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
345733 
345734 l_acct_reversal_source := SUBSTR(NULL, 1,30);
345735 
345736 IF l_continue_with_lines THEN
345737    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
345738       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
345739 
345740       xla_accounting_err_pkg.build_message
345741          (p_appli_s_name            => 'XLA'
345742          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
345743          ,p_token_1                 => 'LINE_NUMBER'
345744          ,p_value_1                 => l_array_extract_line_num(Idx)
345745          ,p_token_2                 => 'PRODUCT_NAME'
345746          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
345747          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
345748          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
345749          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
345750 
345751    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
345752       --
345753       -- following sets the accounting attributes needed to reverse
345754       -- accounting for a distributeion
345755       --
345756 
345757       --
345758       -- 5217187
345759       --
345760       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
345761       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
345762                                        g_array_event(l_event_id).array_value_num('header_index'));
345763       --
345764       --
345765 
345766       -- No reversal code generated
345767 
345768       xla_ae_lines_pkg.SetAcctReversalAttrs
345769          (p_event_id             => l_event_id
345770          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
345771          ,p_calculate_acctd_flag => l_calculate_acctd_flag
345772          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
345773    END IF;
345774 
345775    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
345776        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
345777 
345778 --
345779 AcctLineType_339 (
345780  p_application_id  => p_application_id
345781  ,p_event_id     => l_event_id
345782  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345783  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345784  ,p_actual_flag => l_actual_flag
345785  ,p_balance_type_code => l_balance_type_code
345786  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345787  
345788  , p_source_11 => l_array_source_11(Idx)
345789  , p_source_84 => l_array_source_84(Idx)
345790  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345791  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345792  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345793  , p_source_91 => l_array_source_91(Idx)
345794  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345795  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345796  , p_source_95 => l_array_source_95(Idx)
345797  , p_source_97 => l_array_source_97(Idx)
345798  );
345799 If(l_balance_type_code = 'A') THEN
345800   l_actual_gain_loss_ref := l_gain_or_loss_ref;
345801 END IF;
345802 
345803 --
345804 
345805 
345806 --
345807 AcctLineType_370 (
345808  p_application_id  => p_application_id
345809  ,p_event_id     => l_event_id
345810  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345811  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345812  ,p_actual_flag => l_actual_flag
345813  ,p_balance_type_code => l_balance_type_code
345814  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345815  
345816  , p_source_11 => l_array_source_11(Idx)
345817  , p_source_84 => l_array_source_84(Idx)
345818  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345819  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345820  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345821  , p_source_91 => l_array_source_91(Idx)
345822  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345823  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345824  , p_source_95 => l_array_source_95(Idx)
345825  , p_source_97 => l_array_source_97(Idx)
345826  );
345827 If(l_balance_type_code = 'A') THEN
345828   l_actual_gain_loss_ref := l_gain_or_loss_ref;
345829 END IF;
345830 
345831 --
345832 
345833 
345834 --
345835 AcctLineType_410 (
345836  p_application_id  => p_application_id
345837  ,p_event_id     => l_event_id
345838  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345839  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345840  ,p_actual_flag => l_actual_flag
345841  ,p_balance_type_code => l_balance_type_code
345842  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345843  
345844  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
345845  , p_source_84 => l_array_source_84(Idx)
345846  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345847  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345848  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345849  , p_source_91 => l_array_source_91(Idx)
345850  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345851  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345852  , p_source_95 => l_array_source_95(Idx)
345853  , p_source_97 => l_array_source_97(Idx)
345854  );
345855 If(l_balance_type_code = 'A') THEN
345856   l_actual_gain_loss_ref := l_gain_or_loss_ref;
345857 END IF;
345858 
345859 --
345860 
345861 
345862 --
345863 AcctLineType_457 (
345864  p_application_id  => p_application_id
345865  ,p_event_id     => l_event_id
345866  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345867  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345868  ,p_actual_flag => l_actual_flag
345869  ,p_balance_type_code => l_balance_type_code
345870  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345871  
345872  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
345873  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
345874  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
345875  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
345876  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
345877  , p_source_84 => l_array_source_84(Idx)
345878  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345879  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345880  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345881  , p_source_91 => l_array_source_91(Idx)
345882  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345883  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345884  , p_source_95 => l_array_source_95(Idx)
345885  , p_source_97 => l_array_source_97(Idx)
345886  );
345887 If(l_balance_type_code = 'A') THEN
345888   l_actual_gain_loss_ref := l_gain_or_loss_ref;
345889 END IF;
345890 
345891 --
345892 
345893 
345894 --
345895 AcctLineType_495 (
345896  p_application_id  => p_application_id
345897  ,p_event_id     => l_event_id
345898  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345899  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345900  ,p_actual_flag => l_actual_flag
345901  ,p_balance_type_code => l_balance_type_code
345902  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345903  
345904  , p_source_11 => l_array_source_11(Idx)
345905  , p_source_84 => l_array_source_84(Idx)
345906  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345907  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345908  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345909  , p_source_91 => l_array_source_91(Idx)
345910  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345911  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345912  , p_source_95 => l_array_source_95(Idx)
345913  , p_source_97 => l_array_source_97(Idx)
345914  );
345915 If(l_balance_type_code = 'A') THEN
345916   l_actual_gain_loss_ref := l_gain_or_loss_ref;
345917 END IF;
345918 
345919 --
345920 
345921 
345922 --
345923 AcctLineType_510 (
345924  p_application_id  => p_application_id
345925  ,p_event_id     => l_event_id
345926  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345927  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345928  ,p_actual_flag => l_actual_flag
345929  ,p_balance_type_code => l_balance_type_code
345930  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345931  
345932  , p_source_11 => l_array_source_11(Idx)
345933  , p_source_84 => l_array_source_84(Idx)
345934  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345935  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345936  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345937  , p_source_91 => l_array_source_91(Idx)
345938  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345939  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345940  , p_source_95 => l_array_source_95(Idx)
345941  , p_source_97 => l_array_source_97(Idx)
345942  );
345943 If(l_balance_type_code = 'A') THEN
345944   l_actual_gain_loss_ref := l_gain_or_loss_ref;
345945 END IF;
345946 
345947 --
345948 
345949 
345950 --
345951 AcctLineType_513 (
345952  p_application_id  => p_application_id
345953  ,p_event_id     => l_event_id
345954  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345955  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345956  ,p_actual_flag => l_actual_flag
345957  ,p_balance_type_code => l_balance_type_code
345958  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345959  
345960  , p_source_11 => l_array_source_11(Idx)
345961  , p_source_84 => l_array_source_84(Idx)
345962  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345963  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345964  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345965  , p_source_91 => l_array_source_91(Idx)
345966  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345967  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345968  , p_source_95 => l_array_source_95(Idx)
345969  , p_source_97 => l_array_source_97(Idx)
345970  );
345971 If(l_balance_type_code = 'A') THEN
345972   l_actual_gain_loss_ref := l_gain_or_loss_ref;
345973 END IF;
345974 
345975 --
345976 
345977 
345978 --
345979 AcctLineType_531 (
345980  p_application_id  => p_application_id
345981  ,p_event_id     => l_event_id
345982  ,p_calculate_acctd_flag => l_calculate_acctd_flag
345983  ,p_calculate_g_l_flag => l_calculate_g_l_flag
345984  ,p_actual_flag => l_actual_flag
345985  ,p_balance_type_code => l_balance_type_code
345986  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
345987  
345988  , p_source_11 => l_array_source_11(Idx)
345989  , p_source_84 => l_array_source_84(Idx)
345990  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
345991  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
345992  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
345993  , p_source_91 => l_array_source_91(Idx)
345994  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
345995  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
345996  , p_source_95 => l_array_source_95(Idx)
345997  , p_source_97 => l_array_source_97(Idx)
345998  );
345999 If(l_balance_type_code = 'A') THEN
346000   l_actual_gain_loss_ref := l_gain_or_loss_ref;
346001 END IF;
346002 
346003 --
346004 
346005       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
346006       -- or secondary ledger that has different currency with primary
346007       -- or alc that is calculated by sla
346008       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
346009             (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'))
346010 
346011 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
346012 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
346013           AND (l_actual_flag = 'A')) THEN
346014         XLA_AE_LINES_PKG.CreateGainOrLossLines(
346015           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
346016          ,p_application_id   => p_application_id
346017          ,p_amb_context_code => 'DEFAULT'
346018          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
346019          ,p_event_class_code => C_EVENT_CLASS_CODE
346020          ,p_event_type_code  => C_EVENT_TYPE_CODE
346021          
346022          ,p_gain_ccid        => -1
346023          ,p_loss_ccid        => -1
346024 
346025          ,p_actual_flag      => l_actual_flag
346026          ,p_enc_flag         => null
346027          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
346028          ,p_enc_g_l_ref      => null
346029          );
346030       END IF;
346031    END IF;
346032 END IF;
346033 
346034    ELSE
346035       --
346036       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
346037       --
346038       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
346039          trace
346040             (p_msg      => 'Trancaction revesal option is Y'
346041             ,p_level    => C_LEVEL_STATEMENT
346042             ,p_module   => l_log_module);
346043       END IF;
346044    END IF;
346045 
346046 END LOOP;
346047 l_result := XLA_AE_LINES_PKG.InsertLines ;
346048 end loop;
346049 close line_cur;
346050 
346051 
346052 --
346053 -- insert headers into xla_ae_headers_gt table
346054 --
346055 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
346056 
346057 -- insert into errors table here.
346058 
346059 END LOOP;
346060 
346061 --
346062 -- 4865292
346063 --
346064 -- Compare g_hdr_extract_count with event count in
346065 -- CreateHeadersAndLines.
346066 --
346067 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
346068 
346069 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
346070    trace (p_msg     => '# rows extracted from header extract objects '
346071                     || ' (running total): '
346072                     || g_hdr_extract_count
346073          ,p_level   => C_LEVEL_STATEMENT
346074          ,p_module  => l_log_module);
346075 END IF;
346076 
346077 CLOSE header_cur;
346078 --
346079 
346080 --
346081 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
346082    trace
346083       (p_msg      => 'END of EventType_569'
346084       ,p_level    => C_LEVEL_PROCEDURE
346085       ,p_module   => l_log_module);
346086 END IF;
346087 --
346088 RETURN l_result;
346089 EXCEPTION
346090 WHEN xla_exceptions_pkg.application_exception THEN
346091    
346092 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
346093 
346094    
346095 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
346096 
346097    RAISE;
346098 
346099 WHEN NO_DATA_FOUND THEN
346100 
346101 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
346102 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
346103 
346104 FOR header_record IN header_cur
346105 LOOP
346106     l_array_header_events(header_record.event_id) := header_record.event_id;
346107 END LOOP;
346108 
346109 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
346110 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
346111 
346112 fnd_file.put_line(fnd_file.LOG, '                    ');
346113 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
346114 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
346115 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
346116 
346117 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
346118 LOOP
346119 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
346120 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
346121         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
346122 	END IF;
346123 END LOOP;
346124 
346125 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
346126 fnd_file.put_line(fnd_file.LOG, '                    ');
346127 
346128 
346129 xla_exceptions_pkg.raise_message
346130       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_569');
346131 
346132 
346133 WHEN OTHERS THEN
346134    xla_exceptions_pkg.raise_message
346135       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_569');
346136 END EventType_569;
346137 --
346138 
346139 ---------------------------------------
346140 --
346141 -- PRIVATE PROCEDURE
346142 --         insert_sources_570
346143 --
346144 ----------------------------------------
346145 --
346146 PROCEDURE insert_sources_570(
346147                                 p_target_ledger_id       IN NUMBER
346148                               , p_language               IN VARCHAR2
346149                               , p_sla_ledger_id          IN NUMBER
346150                               , p_pad_start_date         IN DATE
346151                               , p_pad_end_date           IN DATE
346152                          )
346153 IS
346154 
346155 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'IPV_TXFR';
346156 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
346157 p_apps_owner                   VARCHAR2(30);
346158 l_log_module                   VARCHAR2(240);
346159 BEGIN
346160 IF g_log_enabled THEN
346161       l_log_module := C_DEFAULT_MODULE||'.insert_sources_570';
346162 END IF;
346163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
346164 
346165       trace
346166          (p_msg      => 'BEGIN of insert_sources_570'
346167          ,p_level    => C_LEVEL_PROCEDURE
346168          ,p_module   => l_log_module);
346169 
346170 END IF;
346171 
346172 -- select APPS owner
346173 SELECT oracle_username
346174   INTO p_apps_owner
346175   FROM fnd_oracle_userid
346176  WHERE read_only_flag = 'U'
346177 ;
346178 
346179 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
346180       trace
346181          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
346182                         ' - p_language = '||p_language||
346183                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
346184                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
346185                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
346186                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
346187          ,p_level    => C_LEVEL_STATEMENT
346188          ,p_module   => l_log_module);
346189 END IF;
346190 
346191 
346192 --
346193 INSERT INTO xla_diag_sources --hdr1
346194 (
346195         event_id
346196       , ledger_id
346197       , sla_ledger_id
346198       , description_language
346199       , object_name
346200       , object_type_code
346201       , line_number
346202       , source_application_id
346203       , source_type_code
346204       , source_code
346205       , source_value
346206       , source_meaning
346207       , created_by
346208       , creation_date
346209       , last_update_date
346210       , last_updated_by
346211       , last_update_login
346212       , program_update_date
346213       , program_application_id
346214       , program_id
346215       , request_id
346216 )
346217 SELECT
346218         event_id
346219       , p_target_ledger_id
346220       , p_sla_ledger_id
346221       , p_language
346222       , object_name
346223       , object_type_code
346224       , line_number
346225       , source_application_id
346226       , source_type_code
346227       , source_code
346228       , SUBSTR(source_value ,1,1996)
346229       , SUBSTR(source_meaning,1,200)
346230       , xla_environment_pkg.g_Usr_Id
346231       , TRUNC(SYSDATE)
346232       , TRUNC(SYSDATE)
346233       , xla_environment_pkg.g_Usr_Id
346234       , xla_environment_pkg.g_Login_Id
346235       , TRUNC(SYSDATE)
346236       , xla_environment_pkg.g_Prog_Appl_Id
346237       , xla_environment_pkg.g_Prog_Id
346238       , xla_environment_pkg.g_Req_Id
346239   FROM (
346240        SELECT xet.event_id                  event_id
346241             , 0                             line_number
346242             , CASE r
346243                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
346244                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
346245                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
346246                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
346247                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
346248                 WHEN 6 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
346249                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
346250                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
346251                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
346252                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
346253                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
346254                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
346255                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
346256                 
346257                ELSE null
346258               END                           object_name
346259             , CASE r
346260                 WHEN 1 THEN 'HEADER' 
346261                 WHEN 2 THEN 'HEADER' 
346262                 WHEN 3 THEN 'HEADER' 
346263                 WHEN 4 THEN 'HEADER' 
346264                 WHEN 5 THEN 'HEADER' 
346265                 WHEN 6 THEN 'HEADER' 
346266                 WHEN 7 THEN 'HEADER' 
346267                 WHEN 8 THEN 'HEADER' 
346268                 WHEN 9 THEN 'HEADER' 
346269                 WHEN 10 THEN 'HEADER' 
346270                 WHEN 11 THEN 'HEADER' 
346271                 WHEN 12 THEN 'HEADER' 
346272                 WHEN 13 THEN 'HEADER' 
346273                 
346274                 ELSE null
346275               END                           object_type_code
346276             , CASE r
346277                 WHEN 1 THEN '707' 
346278                 WHEN 2 THEN '707' 
346279                 WHEN 3 THEN '707' 
346280                 WHEN 4 THEN '707' 
346281                 WHEN 5 THEN '707' 
346282                 WHEN 6 THEN '707' 
346283                 WHEN 7 THEN '707' 
346284                 WHEN 8 THEN '707' 
346285                 WHEN 9 THEN '707' 
346286                 WHEN 10 THEN '707' 
346287                 WHEN 11 THEN '707' 
346288                 WHEN 12 THEN '707' 
346289                 WHEN 13 THEN '707' 
346290                 
346291                 ELSE null
346292               END                           source_application_id
346293             , 'S'             source_type_code
346294             , CASE r
346295                 WHEN 1 THEN 'TRANSACTION_ID' 
346296                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
346297                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
346298                 WHEN 4 THEN 'TRANSACTION_UOM' 
346299                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
346300                 WHEN 6 THEN 'PRIMARY_COST_METHOD' 
346301                 WHEN 7 THEN 'PLA_MATERIAL_ACCOUNT' 
346302                 WHEN 8 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
346303                 WHEN 9 THEN 'PLA_RESOURCE_ACCOUNT' 
346304                 WHEN 10 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
346305                 WHEN 11 THEN 'PLA_OVERHEAD_ACCOUNT' 
346306                 WHEN 12 THEN 'DISTRIBUTION_TYPE' 
346307                 WHEN 13 THEN 'TRANSFER_TO_GL_INDICATOR' 
346308                 
346309                 ELSE null
346310               END                           source_code
346311             , CASE r
346312                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
346313                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
346314                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
346315                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
346316                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
346317                 WHEN 6 THEN TO_CHAR(h3.PRIMARY_COST_METHOD)
346318                 WHEN 7 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
346319                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
346320                 WHEN 9 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
346321                 WHEN 10 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
346322                 WHEN 11 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
346323                 WHEN 12 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
346324                 WHEN 13 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
346325                 
346326                 ELSE null
346327               END                           source_value
346328             , CASE r
346329                 WHEN 6 THEN fvl39.meaning
346330                 WHEN 12 THEN fvl85.meaning
346331                 WHEN 13 THEN fvl114.meaning
346332                 
346333                 ELSE null
346334               END               source_meaning
346335         FROM xla_events_gt     xet  
346336       , CST_XLA_INV_HEADERS_V  h1
346337       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
346338       , CST_XLA_INV_REF_V  h4
346339       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
346340       , CST_XLA_INV_TXN_TYPES_REF_V  h6
346341       , CST_XLA_PLA_CATEGORY_REF_V  h7
346342   , fnd_lookup_values    fvl39
346343   , fnd_lookup_values    fvl85
346344   , fnd_lookup_values    fvl114
346345             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
346346        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
346347          AND xet.event_type_code = C_EVENT_TYPE_CODE
346348             AND h1.event_id = xet.event_id
346349  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h7.pla_cat_organization_id  (+) = h1.organization_id 
346350 and h7.pla_cat_item_id          (+) = h1.inventory_item_id 
346351 and h7.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
346352   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
346353   AND fvl39.view_application_id(+) = 700
346354   AND fvl39.language(+)            = USERENV('LANG')
346355      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
346356   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
346357   AND fvl85.view_application_id(+) = 700
346358   AND fvl85.language(+)            = USERENV('LANG')
346359      AND fvl114.lookup_type(+)         = 'YES_NO'
346360   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
346361   AND fvl114.view_application_id(+) = 0
346362   AND fvl114.language(+)            = USERENV('LANG')
346363   
346364 )
346365 ;
346366 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
346367 
346368       trace
346369          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
346370          ,p_level    => C_LEVEL_STATEMENT
346371          ,p_module   => l_log_module);
346372 
346373 END IF;
346374 --
346375 
346376 
346377 
346378 --
346379 INSERT INTO xla_diag_sources --line1
346380 (
346381         event_id
346382       , ledger_id
346383       , sla_ledger_id
346384       , description_language
346385       , object_name
346386       , object_type_code
346387       , line_number
346388       , source_application_id
346389       , source_type_code
346390       , source_code
346391       , source_value
346392       , source_meaning
346393       , created_by
346394       , creation_date
346395       , last_update_date
346396       , last_updated_by
346397       , last_update_login
346398       , program_update_date
346399       , program_application_id
346400       , program_id
346401       , request_id
346402 )
346403 SELECT  event_id
346404       , p_target_ledger_id
346405       , p_sla_ledger_id
346406       , p_language
346407       , object_name
346408       , object_type_code
346409       , line_number
346410       , source_application_id
346411       , source_type_code
346412       , source_code
346413       , SUBSTR(source_value,1,1996)
346414       , SUBSTR(source_meaning,1,200)
346415       , xla_environment_pkg.g_Usr_Id
346416       , TRUNC(SYSDATE)
346417       , TRUNC(SYSDATE)
346418       , xla_environment_pkg.g_Usr_Id
346419       , xla_environment_pkg.g_Login_Id
346420       , TRUNC(SYSDATE)
346421       , xla_environment_pkg.g_Prog_Appl_Id
346422       , xla_environment_pkg.g_Prog_Id
346423       , xla_environment_pkg.g_Req_Id
346424   FROM (
346425        SELECT xet.event_id                  event_id
346426             , l2.line_number                 line_number
346427             , CASE r
346428                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
346429                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
346430                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
346431                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
346432                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
346433                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
346434                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
346435                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
346436                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
346437                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
346438                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
346439                 
346440                ELSE null
346441               END                           object_name
346442             , CASE r
346443                 WHEN 1 THEN 'LINE' 
346444                 WHEN 2 THEN 'LINE' 
346445                 WHEN 3 THEN 'LINE' 
346446                 WHEN 4 THEN 'LINE' 
346447                 WHEN 5 THEN 'LINE' 
346448                 WHEN 6 THEN 'LINE' 
346449                 WHEN 7 THEN 'LINE' 
346450                 WHEN 8 THEN 'LINE' 
346451                 WHEN 9 THEN 'LINE' 
346452                 WHEN 10 THEN 'LINE' 
346453                 WHEN 11 THEN 'LINE' 
346454                 
346455                 ELSE null
346456               END                           object_type_code
346457             , CASE r
346458                 WHEN 1 THEN '707' 
346459                 WHEN 2 THEN '707' 
346460                 WHEN 3 THEN '707' 
346461                 WHEN 4 THEN '707' 
346462                 WHEN 5 THEN '707' 
346463                 WHEN 6 THEN '707' 
346464                 WHEN 7 THEN '707' 
346465                 WHEN 8 THEN '707' 
346466                 WHEN 9 THEN '707' 
346467                 WHEN 10 THEN '707' 
346468                 WHEN 11 THEN '707' 
346469                 
346470                 ELSE null
346471               END                           source_application_id
346472             , 'S'             source_type_code
346473             , CASE r
346474                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
346475                 WHEN 2 THEN 'COST_ELEMENT_ID' 
346476                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
346477                 WHEN 4 THEN 'CURRENCY_CODE' 
346478                 WHEN 5 THEN 'ENTERED_AMOUNT' 
346479                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
346480                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
346481                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
346482                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
346483                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
346484                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
346485                 
346486                 ELSE null
346487               END                           source_code
346488             , CASE r
346489                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
346490                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
346491                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
346492                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
346493                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
346494                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
346495                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
346496                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
346497                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
346498                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
346499                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
346500                 
346501                 ELSE null
346502               END                           source_value
346503             , CASE r
346504                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
346505                           1009615
346506                          ,TO_CHAR(l2.COST_ELEMENT_ID)
346507                          ,'COST_ELEMENT_ID'
346508                          ,'S'
346509                          ,707)
346510                 
346511                 ELSE null
346512               END               source_meaning
346513          FROM  xla_events_gt     xet  
346514         , CST_XLA_INV_LINES_V  l2
346515             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
346516         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
346517           AND xet.event_type_code = C_EVENT_TYPE_CODE
346518             AND l2.event_id          = xet.event_id
346519 
346520 )
346521 ;
346522 --
346523 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
346524 
346525       trace
346526          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
346527          ,p_level    => C_LEVEL_STATEMENT
346528          ,p_module   => l_log_module);
346529 
346530 END IF;
346531 
346532 
346533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
346534       trace
346535          (p_msg      => 'END of insert_sources_570'
346536          ,p_level    => C_LEVEL_PROCEDURE
346537          ,p_module   => l_log_module);
346538 END IF;
346539 EXCEPTION
346540   WHEN xla_exceptions_pkg.application_exception THEN
346541       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
346542             trace
346543                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
346544                ,p_level    => C_LEVEL_EXCEPTION
346545                ,p_module   => l_log_module);
346546       END IF;
346547       RAISE;
346548   WHEN OTHERS THEN
346549       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
346550             trace
346551                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
346552                ,p_level    => C_LEVEL_EXCEPTION
346553                ,p_module   => l_log_module);
346554        END IF;
346555        xla_exceptions_pkg.raise_message
346556            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_570');
346557 END insert_sources_570;
346558 --
346559 
346560 ---------------------------------------
346561 --
346562 -- PRIVATE FUNCTION
346563 --         EventType_570
346564 --
346565 ----------------------------------------
346566 --
346567 FUNCTION EventType_570
346568        (p_application_id         IN NUMBER
346569        ,p_base_ledger_id         IN NUMBER
346570        ,p_target_ledger_id       IN NUMBER
346571        ,p_language               IN VARCHAR2
346572        ,p_currency_code          IN VARCHAR2
346573        ,p_sla_ledger_id          IN NUMBER
346574        ,p_pad_start_date         IN DATE
346575        ,p_pad_end_date           IN DATE
346576        ,p_primary_ledger_id      IN NUMBER)
346577 RETURN BOOLEAN IS
346578 --
346579 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'IPV_TXFR';
346580 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
346581 
346582 l_calculate_acctd_flag   VARCHAR2(1) :='N';
346583 l_calculate_g_l_flag     VARCHAR2(1) :='N';
346584 --
346585 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346586 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346587 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
346588 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
346589 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346590 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
346591 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
346592 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346593 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
346594 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
346595 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346596 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346597 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346598 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
346599 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
346600 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
346601 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
346602 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
346603 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
346604 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
346605 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
346606 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
346607 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
346608 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
346609 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
346610 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
346611 
346612 l_event_id                             NUMBER;
346613 l_previous_event_id                    NUMBER;
346614 l_first_event_id                       NUMBER;
346615 l_last_event_id                        NUMBER;
346616 
346617 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
346618 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
346619 --
346620 --
346621 l_result                    BOOLEAN := TRUE;
346622 l_rows                      NUMBER  := 1000;
346623 l_event_type_name           VARCHAR2(80) := 'IPV Transfer to Inventory';
346624 l_event_class_name          VARCHAR2(80) := 'Material Cost Update';
346625 l_description               VARCHAR2(4000);
346626 l_transaction_reversal      NUMBER;
346627 l_ae_header_id              NUMBER;
346628 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
346629 l_log_module                VARCHAR2(240);
346630 --
346631 l_acct_reversal_source      VARCHAR2(30);
346632 l_trx_reversal_source       VARCHAR2(30);
346633 
346634 l_continue_with_lines       BOOLEAN := TRUE;
346635 --
346636 l_acc_rev_gl_date_source    DATE;                      -- 4262811
346637 --
346638 type t_array_event_id is table of number index by binary_integer;
346639 
346640 l_rec_array_event                    t_rec_array_event;
346641 l_null_rec_array_event               t_rec_array_event;
346642 l_array_ae_header_id                 xla_number_array_type;
346643 l_actual_flag                        VARCHAR2(1) := NULL;
346644 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
346645 l_balance_type_code                  VARCHAR2(1) :=NULL;
346646 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
346647 
346648 --
346649 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
346650 --
346651 
346652 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
346653 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
346654 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
346655 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
346656 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
346657 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
346658 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
346659 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
346660 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
346661 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
346662 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
346663 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
346664 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
346665 
346666 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
346667 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
346668 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
346669 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
346670 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
346671 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
346672 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
346673 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
346674 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
346675 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
346676 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
346677 
346678 l_array_source_1              t_array_source_1;
346679 l_array_source_2              t_array_source_2;
346680 l_array_source_3              t_array_source_3;
346681 l_array_source_4              t_array_source_4;
346682 l_array_source_5              t_array_source_5;
346683 l_array_source_39              t_array_source_39;
346684 l_array_source_39_meaning      t_array_lookup_meaning;
346685 l_array_source_41              t_array_source_41;
346686 l_array_source_42              t_array_source_42;
346687 l_array_source_43              t_array_source_43;
346688 l_array_source_44              t_array_source_44;
346689 l_array_source_45              t_array_source_45;
346690 l_array_source_85              t_array_source_85;
346691 l_array_source_85_meaning      t_array_lookup_meaning;
346692 l_array_source_114              t_array_source_114;
346693 l_array_source_114_meaning      t_array_lookup_meaning;
346694 
346695 l_array_source_11      t_array_source_11;
346696 l_array_source_15      t_array_source_15;
346697 l_array_source_84      t_array_source_84;
346698 l_array_source_88      t_array_source_88;
346699 l_array_source_91      t_array_source_91;
346700 l_array_source_92      t_array_source_92;
346701 l_array_source_93      t_array_source_93;
346702 l_array_source_94      t_array_source_94;
346703 l_array_source_95      t_array_source_95;
346704 l_array_source_97      t_array_source_97;
346705 l_array_source_108      t_array_source_108;
346706 
346707 --
346708 CURSOR header_cur
346709 IS
346710 SELECT /*+ leading(xet) cardinality(xet,1) */
346711 -- Event Type Code: IPV_TXFR
346712 -- Event Class Code: MTL_COST_UPD
346713     xet.entity_id
346714   , xet.legal_entity_id
346715   , xet.entity_code
346716   , xet.transaction_number
346717   , xet.event_id
346718   , xet.event_class_code
346719   , xet.event_type_code
346720   , xet.event_number
346721   , xet.event_date
346722   , xet.transaction_date
346723   , xet.reference_num_1
346724   , xet.reference_num_2
346725   , xet.reference_num_3
346726   , xet.reference_num_4
346727   , xet.reference_char_1
346728   , xet.reference_char_2
346729   , xet.reference_char_3
346730   , xet.reference_char_4
346731   , xet.reference_date_1
346732   , xet.reference_date_2
346733   , xet.reference_date_3
346734   , xet.reference_date_4
346735   , xet.event_created_by
346736   , xet.budgetary_control_flag 
346737   , h1.TRANSACTION_ID    source_1
346738   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
346739   , h4.TRANSACTION_QUANTITY    source_3
346740   , h4.TRANSACTION_UOM    source_4
346741   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
346742   , h3.PRIMARY_COST_METHOD    source_39
346743   , fvl39.meaning   source_39_meaning
346744   , h7.PLA_MATERIAL_ACCOUNT    source_41
346745   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
346746   , h7.PLA_RESOURCE_ACCOUNT    source_43
346747   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
346748   , h7.PLA_OVERHEAD_ACCOUNT    source_45
346749   , h1.DISTRIBUTION_TYPE    source_85
346750   , fvl85.meaning   source_85_meaning
346751   , h1.TRANSFER_TO_GL_INDICATOR    source_114
346752   , fvl114.meaning   source_114_meaning
346753   FROM xla_events_gt     xet 
346754   , CST_XLA_INV_HEADERS_V  h1
346755   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
346756   , CST_XLA_INV_REF_V  h4
346757   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
346758   , CST_XLA_INV_TXN_TYPES_REF_V  h6
346759   , CST_XLA_PLA_CATEGORY_REF_V  h7
346760   , fnd_lookup_values    fvl39
346761   , fnd_lookup_values    fvl85
346762   , fnd_lookup_values    fvl114
346763  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
346764    and xet.event_type_code = C_EVENT_TYPE_CODE
346765    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
346766  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
346767 AND h7.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
346768 AND h7.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
346769   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
346770   AND fvl39.view_application_id(+) = 700
346771   AND fvl39.language(+)            = USERENV('LANG')
346772      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
346773   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
346774   AND fvl85.view_application_id(+) = 700
346775   AND fvl85.language(+)            = USERENV('LANG')
346776      AND fvl114.lookup_type(+)         = 'YES_NO'
346777   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
346778   AND fvl114.view_application_id(+) = 0
346779   AND fvl114.language(+)            = USERENV('LANG')
346780   
346781  ORDER BY event_id
346782 ;
346783 
346784 
346785 --
346786 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
346787 IS
346788 SELECT /*+ leading(xet) cardinality(xet,1) */
346789 -- Event Type Code: IPV_TXFR
346790 -- Event Class Code: MTL_COST_UPD
346791     xet.entity_id
346792    ,xet.legal_entity_id
346793    ,xet.entity_code
346794    ,xet.transaction_number
346795    ,xet.event_id
346796    ,xet.event_class_code
346797    ,xet.event_type_code
346798    ,xet.event_number
346799    ,xet.event_date
346800    ,xet.transaction_date
346801    ,xet.reference_num_1
346802    ,xet.reference_num_2
346803    ,xet.reference_num_3
346804    ,xet.reference_num_4
346805    ,xet.reference_char_1
346806    ,xet.reference_char_2
346807    ,xet.reference_char_3
346808    ,xet.reference_char_4
346809    ,xet.reference_date_1
346810    ,xet.reference_date_2
346811    ,xet.reference_date_3
346812    ,xet.reference_date_4
346813    ,xet.event_created_by
346814    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
346815   , l2.CODE_COMBINATION_ID    source_11
346816   , l2.COST_ELEMENT_ID    source_15
346817   , l2.DISTRIBUTION_IDENTIFIER    source_84
346818   , l2.CURRENCY_CODE    source_88
346819   , l2.ENTERED_AMOUNT    source_91
346820   , l2.CURRENCY_CONVERSION_DATE    source_92
346821   , l2.CURRENCY_CONVERSION_RATE    source_93
346822   , l2.CURRENCY_CONVERSION_TYPE    source_94
346823   , l2.ACCOUNTED_AMOUNT    source_95
346824   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
346825   , l2.L_ORGANIZATION_CODE    source_108
346826   FROM xla_events_gt     xet 
346827   , CST_XLA_INV_LINES_V  l2
346828  WHERE xet.event_id between x_first_event_id and x_last_event_id
346829    and xet.event_date between p_pad_start_date and p_pad_end_date
346830    and xet.event_type_code = C_EVENT_TYPE_CODE
346831    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
346832 ;
346833 
346834 --
346835 BEGIN
346836 IF g_log_enabled THEN
346837    l_log_module := C_DEFAULT_MODULE||'.EventType_570';
346838 END IF;
346839 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
346840    trace
346841       (p_msg      => 'BEGIN of EventType_570'
346842       ,p_level    => C_LEVEL_PROCEDURE
346843       ,p_module   => l_log_module);
346844 END IF;
346845 
346846 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
346847    trace
346848       (p_msg      => 'p_application_id = '||p_application_id||
346849                      ' - p_base_ledger_id = '||p_base_ledger_id||
346850                      ' - p_target_ledger_id  = '||p_target_ledger_id||
346851                      ' - p_language = '||p_language||
346852                      ' - p_currency_code = '||p_currency_code||
346853                      ' - p_sla_ledger_id = '||p_sla_ledger_id
346854       ,p_level    => C_LEVEL_STATEMENT
346855       ,p_module   => l_log_module);
346856 END IF;
346857 --
346858 -- initialze arrays
346859 --
346860 g_array_event.DELETE;
346861 l_rec_array_event := l_null_rec_array_event;
346862 --
346863 --------------------------------------
346864 -- 4262811 Initialze MPA Line Number
346865 --------------------------------------
346866 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
346867 
346868 --
346869 
346870 --
346871 OPEN header_cur;
346872 --
346873 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
346874    trace
346875    (p_msg      => 'SQL - FETCH header_cur'
346876    ,p_level    => C_LEVEL_STATEMENT
346877    ,p_module   => l_log_module);
346878 END IF;
346879 --
346880 LOOP
346881 FETCH header_cur BULK COLLECT INTO
346882         l_array_entity_id
346883       , l_array_legal_entity_id
346884       , l_array_entity_code
346885       , l_array_transaction_num
346886       , l_array_event_id
346887       , l_array_class_code
346888       , l_array_event_type
346889       , l_array_event_number
346890       , l_array_event_date
346891       , l_array_transaction_date
346892       , l_array_reference_num_1
346893       , l_array_reference_num_2
346894       , l_array_reference_num_3
346895       , l_array_reference_num_4
346896       , l_array_reference_char_1
346897       , l_array_reference_char_2
346898       , l_array_reference_char_3
346899       , l_array_reference_char_4
346900       , l_array_reference_date_1
346901       , l_array_reference_date_2
346902       , l_array_reference_date_3
346903       , l_array_reference_date_4
346904       , l_array_event_created_by
346905       , l_array_budgetary_control_flag 
346906       , l_array_source_1
346907       , l_array_source_2
346908       , l_array_source_3
346909       , l_array_source_4
346910       , l_array_source_5
346911       , l_array_source_39
346912       , l_array_source_39_meaning
346913       , l_array_source_41
346914       , l_array_source_42
346915       , l_array_source_43
346916       , l_array_source_44
346917       , l_array_source_45
346918       , l_array_source_85
346919       , l_array_source_85_meaning
346920       , l_array_source_114
346921       , l_array_source_114_meaning
346922       LIMIT l_rows;
346923 --
346924 IF (C_LEVEL_EVENT >= g_log_level) THEN
346925    trace
346926    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
346927    ,p_level    => C_LEVEL_EVENT
346928    ,p_module   => l_log_module);
346929 END IF;
346930 --
346931 EXIT WHEN l_array_entity_id.COUNT = 0;
346932 
346933 -- initialize arrays
346934 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
346935 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
346936 
346937 --
346938 -- Bug 4458708
346939 --
346940 XLA_AE_LINES_PKG.g_LineNumber := 0;
346941 
346942 
346943 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
346944 g_last_hdr_idx := l_array_event_id.LAST;
346945 --
346946 -- loop for the headers. Each iteration is for each header extract row
346947 -- fetched in header cursor
346948 --
346949 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
346950 
346951 --
346952 -- set event info as cache for other routines to refer event attributes
346953 --
346954 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
346955    (p_application_id           => p_application_id
346956    ,p_primary_ledger_id        => p_primary_ledger_id
346957    ,p_base_ledger_id           => p_base_ledger_id
346958    ,p_target_ledger_id         => p_target_ledger_id
346959    ,p_entity_id                => l_array_entity_id(hdr_idx)
346960    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
346961    ,p_entity_code              => l_array_entity_code(hdr_idx)
346962    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
346963    ,p_event_id                 => l_array_event_id(hdr_idx)
346964    ,p_event_class_code         => l_array_class_code(hdr_idx)
346965    ,p_event_type_code          => l_array_event_type(hdr_idx)
346966    ,p_event_number             => l_array_event_number(hdr_idx)
346967    ,p_event_date               => l_array_event_date(hdr_idx)
346968    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
346969    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
346970    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
346971    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
346972    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
346973    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
346974    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
346975    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
346976    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
346977    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
346978    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
346979    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
346980    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
346981    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
346982    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
346983 
346984 --
346985 -- set the status of entry to C_VALID (0)
346986 --
346987 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
346988 
346989 --
346990 -- initialize a row for ae header
346991 --
346992 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
346993 
346994 l_event_id := l_array_event_id(hdr_idx);
346995 
346996 --
346997 -- storing the hdr_idx for event. May be used by line cursor.
346998 --
346999 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
347000 
347001 --
347002 -- store sources from header extract. This can be improved to
347003 -- store only those sources from header extract that may be used in lines
347004 --
347005 
347006 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
347007 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
347008 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
347009 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
347010 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
347011 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
347012 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
347013 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
347014 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
347015 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
347016 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
347017 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
347018 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
347019 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
347020 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
347021 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
347022 
347023 --
347024 -- initilaize the status of ae headers for diffrent balance types
347025 -- the status is initialised to C_NOT_CREATED (2)
347026 --
347027 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
347028 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
347029 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
347030 
347031 --
347032 -- call api to validate and store accounting attributes for header
347033 --
347034 
347035 ------------------------------------------------------------
347036 -- Accrual Reversal : to get date for Standard Source (NONE)
347037 ------------------------------------------------------------
347038 l_acc_rev_gl_date_source := NULL;
347039 
347040      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
347041       l_rec_acct_attrs.array_date_value(1) := 
347042 xla_ae_sources_pkg.GetSystemSourceDate(
347043    p_source_code           => 'XLA_REFERENCE_DATE_1'
347044  , p_source_type_code      => 'Y'
347045  , p_source_application_id =>  602
347046 );
347047      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
347048       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
347049 
347050 
347051 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
347052 
347053 XLA_AE_HEADER_PKG.SetJeCategoryName;
347054 
347055 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
347056 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
347057 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
347058 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
347059 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
347060 
347061 
347062 --
347063 xla_ae_header_pkg.SetHdrDescription(
347064    p_description => Description_1 (
347065    p_application_id => p_application_id 
347066  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
347067  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
347068  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
347069  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
347070  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
347071    )
347072 );
347073 --
347074 
347075 -- No header level analytical criteria
347076 
347077 --
347078 --accounting attribute enhancement, bug 3612931
347079 --
347080 l_trx_reversal_source := SUBSTR(NULL, 1,30);
347081 
347082 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
347083    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
347084 
347085    xla_accounting_err_pkg.build_message
347086       (p_appli_s_name            => 'XLA'
347087       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
347088       ,p_token_1                 => 'ACCT_ATTR_NAME'
347089       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
347090       ,p_token_2                 => 'PRODUCT_NAME'
347091       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
347092       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
347093       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
347094       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
347095 
347096 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
347097    --
347098    -- following sets the accounting attributes needed to reverse
347099    -- accounting for a distributeion
347100    --
347101    xla_ae_lines_pkg.SetTrxReversalAttrs
347102       (p_event_id              => l_event_id
347103       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
347104       ,p_trx_reversal_source   => l_trx_reversal_source);
347105 
347106 END IF;
347107 
347108 
347109 ----------------------------------------------------------------
347110 -- 4262811 -  update the header statuses to invalid in need be
347111 ----------------------------------------------------------------
347112 --
347113 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
347114 
347115 
347116   -----------------------------------------------
347117   -- No accrual reversal for the event class/type
347118   -----------------------------------------------
347119 ----------------------------------------------------------------
347120 
347121 --
347122 -- this ends the header loop iteration for one bulk fetch
347123 --
347124 END LOOP;
347125 
347126 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
347127 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
347128 
347129 --
347130 -- insert dummy rows into lines gt table that were created due to
347131 -- transaction reversals
347132 --
347133 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
347134    l_result := XLA_AE_LINES_PKG.InsertLines;
347135 END IF;
347136 
347137 --
347138 -- reset the temp_line_num for each set of events fetched from header
347139 -- cursor rather than doing it for each new event in line cursor
347140 -- Bug 3939231
347141 --
347142 xla_ae_lines_pkg.g_temp_line_num := 0;
347143 
347144 
347145 
347146 --
347147 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
347148 --
347149 --
347150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
347151 
347152       trace
347153          (p_msg      => 'SQL - FETCH line_cur'
347154          ,p_level    => C_LEVEL_STATEMENT
347155          ,p_module   => l_log_module);
347156 
347157 END IF;
347158 --
347159 --
347160 LOOP
347161   --
347162   FETCH line_cur BULK COLLECT INTO
347163         l_array_entity_id
347164       , l_array_legal_entity_id
347165       , l_array_entity_code
347166       , l_array_transaction_num
347167       , l_array_event_id
347168       , l_array_class_code
347169       , l_array_event_type
347170       , l_array_event_number
347171       , l_array_event_date
347172       , l_array_transaction_date
347173       , l_array_reference_num_1
347174       , l_array_reference_num_2
347175       , l_array_reference_num_3
347176       , l_array_reference_num_4
347177       , l_array_reference_char_1
347178       , l_array_reference_char_2
347179       , l_array_reference_char_3
347180       , l_array_reference_char_4
347181       , l_array_reference_date_1
347182       , l_array_reference_date_2
347183       , l_array_reference_date_3
347184       , l_array_reference_date_4
347185       , l_array_event_created_by
347186       , l_array_budgetary_control_flag
347187       , l_array_extract_line_num 
347188       , l_array_source_11
347189       , l_array_source_15
347190       , l_array_source_84
347191       , l_array_source_88
347192       , l_array_source_91
347193       , l_array_source_92
347194       , l_array_source_93
347195       , l_array_source_94
347196       , l_array_source_95
347197       , l_array_source_97
347198       , l_array_source_108
347199       LIMIT l_rows;
347200 
347201   --
347202   IF (C_LEVEL_EVENT >= g_log_level) THEN
347203             trace
347204                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
347205                ,p_level    => C_LEVEL_EVENT
347206                ,p_module   => l_log_module);
347207   END IF;
347208   --
347209   EXIT WHEN l_array_entity_id.count = 0;
347210 
347211   XLA_AE_LINES_PKG.g_rec_lines := null;
347212 
347213 --
347214 -- Bug 4458708
347215 --
347216 XLA_AE_LINES_PKG.g_LineNumber := 0;
347217 --
347218 --
347219 
347220 FOR Idx IN 1..l_array_event_id.count LOOP
347221    --
347222    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
347223    --
347224    l_event_id := l_array_event_id(idx);  -- 5648433
347225 
347226    --
347227    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
347228    --
347229 
347230    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
347231              (g_array_event(l_event_id).array_value_num('header_index'))
347232          ,'N'
347233          ) <> 'Y'
347234    THEN
347235       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
347236          trace
347237             (p_msg      => 'Trancaction revesal option is not Y '
347238             ,p_level    => C_LEVEL_STATEMENT
347239             ,p_module   => l_log_module);
347240       END IF;
347241 
347242 --
347243 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
347244 --
347245 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
347246 --
347247 -- set event info as cache for other routines to refer event attributes
347248 --
347249 
347250 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
347251    l_previous_event_id := l_event_id;
347252 
347253    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
347254       (p_application_id           => p_application_id
347255       ,p_primary_ledger_id        => p_primary_ledger_id
347256       ,p_base_ledger_id           => p_base_ledger_id
347257       ,p_target_ledger_id         => p_target_ledger_id
347258       ,p_entity_id                => l_array_entity_id(Idx)
347259       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
347260       ,p_entity_code              => l_array_entity_code(Idx)
347261       ,p_transaction_num          => l_array_transaction_num(Idx)
347262       ,p_event_id                 => l_array_event_id(Idx)
347263       ,p_event_class_code         => l_array_class_code(Idx)
347264       ,p_event_type_code          => l_array_event_type(Idx)
347265       ,p_event_number             => l_array_event_number(Idx)
347266       ,p_event_date               => l_array_event_date(Idx)
347267       ,p_transaction_date         => l_array_transaction_date(Idx)
347268       ,p_reference_num_1          => l_array_reference_num_1(Idx)
347269       ,p_reference_num_2          => l_array_reference_num_2(Idx)
347270       ,p_reference_num_3          => l_array_reference_num_3(Idx)
347271       ,p_reference_num_4          => l_array_reference_num_4(Idx)
347272       ,p_reference_char_1         => l_array_reference_char_1(Idx)
347273       ,p_reference_char_2         => l_array_reference_char_2(Idx)
347274       ,p_reference_char_3         => l_array_reference_char_3(Idx)
347275       ,p_reference_char_4         => l_array_reference_char_4(Idx)
347276       ,p_reference_date_1         => l_array_reference_date_1(Idx)
347277       ,p_reference_date_2         => l_array_reference_date_2(Idx)
347278       ,p_reference_date_3         => l_array_reference_date_3(Idx)
347279       ,p_reference_date_4         => l_array_reference_date_4(Idx)
347280       ,p_event_created_by         => l_array_event_created_by(Idx)
347281       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
347282        --
347283 END IF;
347284 
347285 
347286 
347287 --
347288 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
347289 
347290 l_acct_reversal_source := SUBSTR(NULL, 1,30);
347291 
347292 IF l_continue_with_lines THEN
347293    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
347294       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
347295 
347296       xla_accounting_err_pkg.build_message
347297          (p_appli_s_name            => 'XLA'
347298          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
347299          ,p_token_1                 => 'LINE_NUMBER'
347300          ,p_value_1                 => l_array_extract_line_num(Idx)
347301          ,p_token_2                 => 'PRODUCT_NAME'
347302          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
347303          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
347304          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
347305          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
347306 
347307    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
347308       --
347309       -- following sets the accounting attributes needed to reverse
347310       -- accounting for a distributeion
347311       --
347312 
347313       --
347314       -- 5217187
347315       --
347316       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
347317       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
347318                                        g_array_event(l_event_id).array_value_num('header_index'));
347319       --
347320       --
347321 
347322       -- No reversal code generated
347323 
347324       xla_ae_lines_pkg.SetAcctReversalAttrs
347325          (p_event_id             => l_event_id
347326          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
347327          ,p_calculate_acctd_flag => l_calculate_acctd_flag
347328          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
347329    END IF;
347330 
347331    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
347332        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
347333 
347334 --
347335 AcctLineType_75 (
347336  p_application_id  => p_application_id
347337  ,p_event_id     => l_event_id
347338  ,p_calculate_acctd_flag => l_calculate_acctd_flag
347339  ,p_calculate_g_l_flag => l_calculate_g_l_flag
347340  ,p_actual_flag => l_actual_flag
347341  ,p_balance_type_code => l_balance_type_code
347342  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
347343  
347344  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
347345  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
347346  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
347347  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
347348  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
347349  , p_source_11 => l_array_source_11(Idx)
347350  , p_source_84 => l_array_source_84(Idx)
347351  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
347352  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
347353  , p_source_88 => l_array_source_88(Idx)
347354  , p_source_91 => l_array_source_91(Idx)
347355  , p_source_92 => l_array_source_92(Idx)
347356  , p_source_93 => l_array_source_93(Idx)
347357  , p_source_94 => l_array_source_94(Idx)
347358  , p_source_95 => l_array_source_95(Idx)
347359  , p_source_97 => l_array_source_97(Idx)
347360  );
347361 If(l_balance_type_code = 'A') THEN
347362   l_actual_gain_loss_ref := l_gain_or_loss_ref;
347363 END IF;
347364 
347365 --
347366 
347367 
347368 --
347369 AcctLineType_82 (
347370  p_application_id  => p_application_id
347371  ,p_event_id     => l_event_id
347372  ,p_calculate_acctd_flag => l_calculate_acctd_flag
347373  ,p_calculate_g_l_flag => l_calculate_g_l_flag
347374  ,p_actual_flag => l_actual_flag
347375  ,p_balance_type_code => l_balance_type_code
347376  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
347377  
347378  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
347379  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
347380  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
347381  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
347382  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
347383  , p_source_11 => l_array_source_11(Idx)
347384  , p_source_84 => l_array_source_84(Idx)
347385  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
347386  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
347387  , p_source_88 => l_array_source_88(Idx)
347388  , p_source_91 => l_array_source_91(Idx)
347389  , p_source_92 => l_array_source_92(Idx)
347390  , p_source_93 => l_array_source_93(Idx)
347391  , p_source_94 => l_array_source_94(Idx)
347392  , p_source_95 => l_array_source_95(Idx)
347393  , p_source_97 => l_array_source_97(Idx)
347394  );
347395 If(l_balance_type_code = 'A') THEN
347396   l_actual_gain_loss_ref := l_gain_or_loss_ref;
347397 END IF;
347398 
347399 --
347400 
347401 
347402 --
347403 AcctLineType_230 (
347404  p_application_id  => p_application_id
347405  ,p_event_id     => l_event_id
347406  ,p_calculate_acctd_flag => l_calculate_acctd_flag
347407  ,p_calculate_g_l_flag => l_calculate_g_l_flag
347408  ,p_actual_flag => l_actual_flag
347409  ,p_balance_type_code => l_balance_type_code
347410  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
347411  
347412  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
347413  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
347414  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
347415  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
347416  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
347417  , p_source_11 => l_array_source_11(Idx)
347418  , p_source_15 => l_array_source_15(Idx)
347419  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
347420  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
347421  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
347422  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
347423  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
347424  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
347425  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
347426  , p_source_84 => l_array_source_84(Idx)
347427  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
347428  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
347429  , p_source_88 => l_array_source_88(Idx)
347430  , p_source_91 => l_array_source_91(Idx)
347431  , p_source_92 => l_array_source_92(Idx)
347432  , p_source_93 => l_array_source_93(Idx)
347433  , p_source_94 => l_array_source_94(Idx)
347434  , p_source_95 => l_array_source_95(Idx)
347435  , p_source_97 => l_array_source_97(Idx)
347436  );
347437 If(l_balance_type_code = 'A') THEN
347438   l_actual_gain_loss_ref := l_gain_or_loss_ref;
347439 END IF;
347440 
347441 --
347442 
347443 
347444 --
347445 AcctLineType_245 (
347446  p_application_id  => p_application_id
347447  ,p_event_id     => l_event_id
347448  ,p_calculate_acctd_flag => l_calculate_acctd_flag
347449  ,p_calculate_g_l_flag => l_calculate_g_l_flag
347450  ,p_actual_flag => l_actual_flag
347451  ,p_balance_type_code => l_balance_type_code
347452  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
347453  
347454  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
347455  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
347456  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
347457  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
347458  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
347459  , p_source_15 => l_array_source_15(Idx)
347460  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
347461  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
347462  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
347463  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
347464  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
347465  , p_source_84 => l_array_source_84(Idx)
347466  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
347467  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
347468  , p_source_88 => l_array_source_88(Idx)
347469  , p_source_91 => l_array_source_91(Idx)
347470  , p_source_92 => l_array_source_92(Idx)
347471  , p_source_93 => l_array_source_93(Idx)
347472  , p_source_94 => l_array_source_94(Idx)
347473  , p_source_95 => l_array_source_95(Idx)
347474  , p_source_97 => l_array_source_97(Idx)
347475  , p_source_108 => l_array_source_108(Idx)
347476  );
347477 If(l_balance_type_code = 'A') THEN
347478   l_actual_gain_loss_ref := l_gain_or_loss_ref;
347479 END IF;
347480 
347481 --
347482 
347483       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
347484       -- or secondary ledger that has different currency with primary
347485       -- or alc that is calculated by sla
347486       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
347487             (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'))
347488 
347489 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
347490 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
347491           AND (l_actual_flag = 'A')) THEN
347492         XLA_AE_LINES_PKG.CreateGainOrLossLines(
347493           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
347494          ,p_application_id   => p_application_id
347495          ,p_amb_context_code => 'DEFAULT'
347496          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
347497          ,p_event_class_code => C_EVENT_CLASS_CODE
347498          ,p_event_type_code  => C_EVENT_TYPE_CODE
347499          
347500          ,p_gain_ccid        => -1
347501          ,p_loss_ccid        => -1
347502 
347503          ,p_actual_flag      => l_actual_flag
347504          ,p_enc_flag         => null
347505          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
347506          ,p_enc_g_l_ref      => null
347507          );
347508       END IF;
347509    END IF;
347510 END IF;
347511 
347512    ELSE
347513       --
347514       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
347515       --
347516       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
347517          trace
347518             (p_msg      => 'Trancaction revesal option is Y'
347519             ,p_level    => C_LEVEL_STATEMENT
347520             ,p_module   => l_log_module);
347521       END IF;
347522    END IF;
347523 
347524 END LOOP;
347525 l_result := XLA_AE_LINES_PKG.InsertLines ;
347526 end loop;
347527 close line_cur;
347528 
347529 
347530 --
347531 -- insert headers into xla_ae_headers_gt table
347532 --
347533 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
347534 
347535 -- insert into errors table here.
347536 
347537 END LOOP;
347538 
347539 --
347540 -- 4865292
347541 --
347542 -- Compare g_hdr_extract_count with event count in
347543 -- CreateHeadersAndLines.
347544 --
347545 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
347546 
347547 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
347548    trace (p_msg     => '# rows extracted from header extract objects '
347549                     || ' (running total): '
347550                     || g_hdr_extract_count
347551          ,p_level   => C_LEVEL_STATEMENT
347552          ,p_module  => l_log_module);
347553 END IF;
347554 
347555 CLOSE header_cur;
347556 --
347557 
347558 --
347559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
347560    trace
347561       (p_msg      => 'END of EventType_570'
347562       ,p_level    => C_LEVEL_PROCEDURE
347563       ,p_module   => l_log_module);
347564 END IF;
347565 --
347566 RETURN l_result;
347567 EXCEPTION
347568 WHEN xla_exceptions_pkg.application_exception THEN
347569    
347570 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
347571 
347572    
347573 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
347574 
347575    RAISE;
347576 
347577 WHEN NO_DATA_FOUND THEN
347578 
347579 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
347580 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
347581 
347582 FOR header_record IN header_cur
347583 LOOP
347584     l_array_header_events(header_record.event_id) := header_record.event_id;
347585 END LOOP;
347586 
347587 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
347588 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
347589 
347590 fnd_file.put_line(fnd_file.LOG, '                    ');
347591 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
347592 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
347593 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
347594 
347595 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
347596 LOOP
347597 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
347598 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
347599         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
347600 	END IF;
347601 END LOOP;
347602 
347603 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
347604 fnd_file.put_line(fnd_file.LOG, '                    ');
347605 
347606 
347607 xla_exceptions_pkg.raise_message
347608       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_570');
347609 
347610 
347611 WHEN OTHERS THEN
347612    xla_exceptions_pkg.raise_message
347613       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_570');
347614 END EventType_570;
347615 --
347616 
347617 ---------------------------------------
347618 --
347619 -- PRIVATE PROCEDURE
347620 --         insert_sources_571
347621 --
347622 ----------------------------------------
347623 --
347624 PROCEDURE insert_sources_571(
347625                                 p_target_ledger_id       IN NUMBER
347626                               , p_language               IN VARCHAR2
347627                               , p_sla_ledger_id          IN NUMBER
347628                               , p_pad_start_date         IN DATE
347629                               , p_pad_end_date           IN DATE
347630                          )
347631 IS
347632 
347633 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LAYER_COST_UPD';
347634 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
347635 p_apps_owner                   VARCHAR2(30);
347636 l_log_module                   VARCHAR2(240);
347637 BEGIN
347638 IF g_log_enabled THEN
347639       l_log_module := C_DEFAULT_MODULE||'.insert_sources_571';
347640 END IF;
347641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
347642 
347643       trace
347644          (p_msg      => 'BEGIN of insert_sources_571'
347645          ,p_level    => C_LEVEL_PROCEDURE
347646          ,p_module   => l_log_module);
347647 
347648 END IF;
347649 
347650 -- select APPS owner
347651 SELECT oracle_username
347652   INTO p_apps_owner
347653   FROM fnd_oracle_userid
347654  WHERE read_only_flag = 'U'
347655 ;
347656 
347657 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
347658       trace
347659          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
347660                         ' - p_language = '||p_language||
347661                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
347662                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
347663                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
347664                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
347665          ,p_level    => C_LEVEL_STATEMENT
347666          ,p_module   => l_log_module);
347667 END IF;
347668 
347669 
347670 --
347671 INSERT INTO xla_diag_sources --hdr1
347672 (
347673         event_id
347674       , ledger_id
347675       , sla_ledger_id
347676       , description_language
347677       , object_name
347678       , object_type_code
347679       , line_number
347680       , source_application_id
347681       , source_type_code
347682       , source_code
347683       , source_value
347684       , source_meaning
347685       , created_by
347686       , creation_date
347687       , last_update_date
347688       , last_updated_by
347689       , last_update_login
347690       , program_update_date
347691       , program_application_id
347692       , program_id
347693       , request_id
347694 )
347695 SELECT
347696         event_id
347697       , p_target_ledger_id
347698       , p_sla_ledger_id
347699       , p_language
347700       , object_name
347701       , object_type_code
347702       , line_number
347703       , source_application_id
347704       , source_type_code
347705       , source_code
347706       , SUBSTR(source_value ,1,1996)
347707       , SUBSTR(source_meaning,1,200)
347708       , xla_environment_pkg.g_Usr_Id
347709       , TRUNC(SYSDATE)
347710       , TRUNC(SYSDATE)
347711       , xla_environment_pkg.g_Usr_Id
347712       , xla_environment_pkg.g_Login_Id
347713       , TRUNC(SYSDATE)
347714       , xla_environment_pkg.g_Prog_Appl_Id
347715       , xla_environment_pkg.g_Prog_Id
347716       , xla_environment_pkg.g_Req_Id
347717   FROM (
347718        SELECT xet.event_id                  event_id
347719             , 0                             line_number
347720             , CASE r
347721                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
347722                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
347723                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
347724                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
347725                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
347726                 WHEN 6 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
347727                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
347728                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
347729                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
347730                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
347731                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
347732                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
347733                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
347734                 
347735                ELSE null
347736               END                           object_name
347737             , CASE r
347738                 WHEN 1 THEN 'HEADER' 
347739                 WHEN 2 THEN 'HEADER' 
347740                 WHEN 3 THEN 'HEADER' 
347741                 WHEN 4 THEN 'HEADER' 
347742                 WHEN 5 THEN 'HEADER' 
347743                 WHEN 6 THEN 'HEADER' 
347744                 WHEN 7 THEN 'HEADER' 
347745                 WHEN 8 THEN 'HEADER' 
347746                 WHEN 9 THEN 'HEADER' 
347747                 WHEN 10 THEN 'HEADER' 
347748                 WHEN 11 THEN 'HEADER' 
347749                 WHEN 12 THEN 'HEADER' 
347750                 WHEN 13 THEN 'HEADER' 
347751                 
347752                 ELSE null
347753               END                           object_type_code
347754             , CASE r
347755                 WHEN 1 THEN '707' 
347756                 WHEN 2 THEN '707' 
347757                 WHEN 3 THEN '707' 
347758                 WHEN 4 THEN '707' 
347759                 WHEN 5 THEN '707' 
347760                 WHEN 6 THEN '707' 
347761                 WHEN 7 THEN '707' 
347762                 WHEN 8 THEN '707' 
347763                 WHEN 9 THEN '707' 
347764                 WHEN 10 THEN '707' 
347765                 WHEN 11 THEN '707' 
347766                 WHEN 12 THEN '707' 
347767                 WHEN 13 THEN '707' 
347768                 
347769                 ELSE null
347770               END                           source_application_id
347771             , 'S'             source_type_code
347772             , CASE r
347773                 WHEN 1 THEN 'TRANSACTION_ID' 
347774                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
347775                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
347776                 WHEN 4 THEN 'TRANSACTION_UOM' 
347777                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
347778                 WHEN 6 THEN 'PRIMARY_COST_METHOD' 
347779                 WHEN 7 THEN 'PLA_MATERIAL_ACCOUNT' 
347780                 WHEN 8 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
347781                 WHEN 9 THEN 'PLA_RESOURCE_ACCOUNT' 
347782                 WHEN 10 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
347783                 WHEN 11 THEN 'PLA_OVERHEAD_ACCOUNT' 
347784                 WHEN 12 THEN 'DISTRIBUTION_TYPE' 
347785                 WHEN 13 THEN 'TRANSFER_TO_GL_INDICATOR' 
347786                 
347787                 ELSE null
347788               END                           source_code
347789             , CASE r
347790                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
347791                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
347792                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
347793                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
347794                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
347795                 WHEN 6 THEN TO_CHAR(h3.PRIMARY_COST_METHOD)
347796                 WHEN 7 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
347797                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
347798                 WHEN 9 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
347799                 WHEN 10 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
347800                 WHEN 11 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
347801                 WHEN 12 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
347802                 WHEN 13 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
347803                 
347804                 ELSE null
347805               END                           source_value
347806             , CASE r
347807                 WHEN 6 THEN fvl39.meaning
347808                 WHEN 12 THEN fvl85.meaning
347809                 WHEN 13 THEN fvl114.meaning
347810                 
347811                 ELSE null
347812               END               source_meaning
347813         FROM xla_events_gt     xet  
347814       , CST_XLA_INV_HEADERS_V  h1
347815       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
347816       , CST_XLA_INV_REF_V  h4
347817       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
347818       , CST_XLA_INV_TXN_TYPES_REF_V  h6
347819       , CST_XLA_PLA_CATEGORY_REF_V  h7
347820   , fnd_lookup_values    fvl39
347821   , fnd_lookup_values    fvl85
347822   , fnd_lookup_values    fvl114
347823             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
347824        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
347825          AND xet.event_type_code = C_EVENT_TYPE_CODE
347826             AND h1.event_id = xet.event_id
347827  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h7.pla_cat_organization_id  (+) = h1.organization_id 
347828 and h7.pla_cat_item_id          (+) = h1.inventory_item_id 
347829 and h7.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
347830   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
347831   AND fvl39.view_application_id(+) = 700
347832   AND fvl39.language(+)            = USERENV('LANG')
347833      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
347834   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
347835   AND fvl85.view_application_id(+) = 700
347836   AND fvl85.language(+)            = USERENV('LANG')
347837      AND fvl114.lookup_type(+)         = 'YES_NO'
347838   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
347839   AND fvl114.view_application_id(+) = 0
347840   AND fvl114.language(+)            = USERENV('LANG')
347841   
347842 )
347843 ;
347844 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
347845 
347846       trace
347847          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
347848          ,p_level    => C_LEVEL_STATEMENT
347849          ,p_module   => l_log_module);
347850 
347851 END IF;
347852 --
347853 
347854 
347855 
347856 --
347857 INSERT INTO xla_diag_sources --line1
347858 (
347859         event_id
347860       , ledger_id
347861       , sla_ledger_id
347862       , description_language
347863       , object_name
347864       , object_type_code
347865       , line_number
347866       , source_application_id
347867       , source_type_code
347868       , source_code
347869       , source_value
347870       , source_meaning
347871       , created_by
347872       , creation_date
347873       , last_update_date
347874       , last_updated_by
347875       , last_update_login
347876       , program_update_date
347877       , program_application_id
347878       , program_id
347879       , request_id
347880 )
347881 SELECT  event_id
347882       , p_target_ledger_id
347883       , p_sla_ledger_id
347884       , p_language
347885       , object_name
347886       , object_type_code
347887       , line_number
347888       , source_application_id
347889       , source_type_code
347890       , source_code
347891       , SUBSTR(source_value,1,1996)
347892       , SUBSTR(source_meaning,1,200)
347893       , xla_environment_pkg.g_Usr_Id
347894       , TRUNC(SYSDATE)
347895       , TRUNC(SYSDATE)
347896       , xla_environment_pkg.g_Usr_Id
347897       , xla_environment_pkg.g_Login_Id
347898       , TRUNC(SYSDATE)
347899       , xla_environment_pkg.g_Prog_Appl_Id
347900       , xla_environment_pkg.g_Prog_Id
347901       , xla_environment_pkg.g_Req_Id
347902   FROM (
347903        SELECT xet.event_id                  event_id
347904             , l2.line_number                 line_number
347905             , CASE r
347906                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
347907                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
347908                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
347909                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
347910                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
347911                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
347912                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
347913                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
347914                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
347915                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
347916                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
347917                 
347918                ELSE null
347919               END                           object_name
347920             , CASE r
347921                 WHEN 1 THEN 'LINE' 
347922                 WHEN 2 THEN 'LINE' 
347923                 WHEN 3 THEN 'LINE' 
347924                 WHEN 4 THEN 'LINE' 
347925                 WHEN 5 THEN 'LINE' 
347926                 WHEN 6 THEN 'LINE' 
347927                 WHEN 7 THEN 'LINE' 
347928                 WHEN 8 THEN 'LINE' 
347929                 WHEN 9 THEN 'LINE' 
347930                 WHEN 10 THEN 'LINE' 
347931                 WHEN 11 THEN 'LINE' 
347932                 
347933                 ELSE null
347934               END                           object_type_code
347935             , CASE r
347936                 WHEN 1 THEN '707' 
347937                 WHEN 2 THEN '707' 
347938                 WHEN 3 THEN '707' 
347939                 WHEN 4 THEN '707' 
347940                 WHEN 5 THEN '707' 
347941                 WHEN 6 THEN '707' 
347942                 WHEN 7 THEN '707' 
347943                 WHEN 8 THEN '707' 
347944                 WHEN 9 THEN '707' 
347945                 WHEN 10 THEN '707' 
347946                 WHEN 11 THEN '707' 
347947                 
347948                 ELSE null
347949               END                           source_application_id
347950             , 'S'             source_type_code
347951             , CASE r
347952                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
347953                 WHEN 2 THEN 'COST_ELEMENT_ID' 
347954                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
347955                 WHEN 4 THEN 'CURRENCY_CODE' 
347956                 WHEN 5 THEN 'ENTERED_AMOUNT' 
347957                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
347958                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
347959                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
347960                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
347961                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
347962                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
347963                 
347964                 ELSE null
347965               END                           source_code
347966             , CASE r
347967                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
347968                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
347969                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
347970                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
347971                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
347972                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
347973                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
347974                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
347975                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
347976                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
347977                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
347978                 
347979                 ELSE null
347980               END                           source_value
347981             , CASE r
347982                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
347983                           1009615
347984                          ,TO_CHAR(l2.COST_ELEMENT_ID)
347985                          ,'COST_ELEMENT_ID'
347986                          ,'S'
347987                          ,707)
347988                 
347989                 ELSE null
347990               END               source_meaning
347991          FROM  xla_events_gt     xet  
347992         , CST_XLA_INV_LINES_V  l2
347993             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
347994         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
347995           AND xet.event_type_code = C_EVENT_TYPE_CODE
347996             AND l2.event_id          = xet.event_id
347997 
347998 )
347999 ;
348000 --
348001 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
348002 
348003       trace
348004          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
348005          ,p_level    => C_LEVEL_STATEMENT
348006          ,p_module   => l_log_module);
348007 
348008 END IF;
348009 
348010 
348011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
348012       trace
348013          (p_msg      => 'END of insert_sources_571'
348014          ,p_level    => C_LEVEL_PROCEDURE
348015          ,p_module   => l_log_module);
348016 END IF;
348017 EXCEPTION
348018   WHEN xla_exceptions_pkg.application_exception THEN
348019       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
348020             trace
348021                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
348022                ,p_level    => C_LEVEL_EXCEPTION
348023                ,p_module   => l_log_module);
348024       END IF;
348025       RAISE;
348026   WHEN OTHERS THEN
348027       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
348028             trace
348029                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
348030                ,p_level    => C_LEVEL_EXCEPTION
348031                ,p_module   => l_log_module);
348032        END IF;
348033        xla_exceptions_pkg.raise_message
348034            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_571');
348035 END insert_sources_571;
348036 --
348037 
348038 ---------------------------------------
348039 --
348040 -- PRIVATE FUNCTION
348041 --         EventType_571
348042 --
348043 ----------------------------------------
348044 --
348045 FUNCTION EventType_571
348046        (p_application_id         IN NUMBER
348047        ,p_base_ledger_id         IN NUMBER
348048        ,p_target_ledger_id       IN NUMBER
348049        ,p_language               IN VARCHAR2
348050        ,p_currency_code          IN VARCHAR2
348051        ,p_sla_ledger_id          IN NUMBER
348052        ,p_pad_start_date         IN DATE
348053        ,p_pad_end_date           IN DATE
348054        ,p_primary_ledger_id      IN NUMBER)
348055 RETURN BOOLEAN IS
348056 --
348057 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LAYER_COST_UPD';
348058 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
348059 
348060 l_calculate_acctd_flag   VARCHAR2(1) :='N';
348061 l_calculate_g_l_flag     VARCHAR2(1) :='N';
348062 --
348063 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348064 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348065 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
348066 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
348067 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348068 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
348069 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
348070 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348071 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
348072 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
348073 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348074 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348075 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348076 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
348077 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
348078 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
348079 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
348080 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
348081 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
348082 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
348083 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
348084 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
348085 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
348086 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
348087 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
348088 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
348089 
348090 l_event_id                             NUMBER;
348091 l_previous_event_id                    NUMBER;
348092 l_first_event_id                       NUMBER;
348093 l_last_event_id                        NUMBER;
348094 
348095 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
348096 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
348097 --
348098 --
348099 l_result                    BOOLEAN := TRUE;
348100 l_rows                      NUMBER  := 1000;
348101 l_event_type_name           VARCHAR2(80) := 'Layer Cost Update';
348102 l_event_class_name          VARCHAR2(80) := 'Material Cost Update';
348103 l_description               VARCHAR2(4000);
348104 l_transaction_reversal      NUMBER;
348105 l_ae_header_id              NUMBER;
348106 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
348107 l_log_module                VARCHAR2(240);
348108 --
348109 l_acct_reversal_source      VARCHAR2(30);
348110 l_trx_reversal_source       VARCHAR2(30);
348111 
348112 l_continue_with_lines       BOOLEAN := TRUE;
348113 --
348114 l_acc_rev_gl_date_source    DATE;                      -- 4262811
348115 --
348116 type t_array_event_id is table of number index by binary_integer;
348117 
348118 l_rec_array_event                    t_rec_array_event;
348119 l_null_rec_array_event               t_rec_array_event;
348120 l_array_ae_header_id                 xla_number_array_type;
348121 l_actual_flag                        VARCHAR2(1) := NULL;
348122 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
348123 l_balance_type_code                  VARCHAR2(1) :=NULL;
348124 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
348125 
348126 --
348127 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
348128 --
348129 
348130 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
348131 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
348132 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
348133 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
348134 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
348135 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
348136 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
348137 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
348138 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
348139 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
348140 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
348141 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
348142 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
348143 
348144 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
348145 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
348146 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
348147 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
348148 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
348149 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
348150 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
348151 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
348152 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
348153 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
348154 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
348155 
348156 l_array_source_1              t_array_source_1;
348157 l_array_source_2              t_array_source_2;
348158 l_array_source_3              t_array_source_3;
348159 l_array_source_4              t_array_source_4;
348160 l_array_source_5              t_array_source_5;
348161 l_array_source_39              t_array_source_39;
348162 l_array_source_39_meaning      t_array_lookup_meaning;
348163 l_array_source_41              t_array_source_41;
348164 l_array_source_42              t_array_source_42;
348165 l_array_source_43              t_array_source_43;
348166 l_array_source_44              t_array_source_44;
348167 l_array_source_45              t_array_source_45;
348168 l_array_source_85              t_array_source_85;
348169 l_array_source_85_meaning      t_array_lookup_meaning;
348170 l_array_source_114              t_array_source_114;
348171 l_array_source_114_meaning      t_array_lookup_meaning;
348172 
348173 l_array_source_11      t_array_source_11;
348174 l_array_source_15      t_array_source_15;
348175 l_array_source_84      t_array_source_84;
348176 l_array_source_88      t_array_source_88;
348177 l_array_source_91      t_array_source_91;
348178 l_array_source_92      t_array_source_92;
348179 l_array_source_93      t_array_source_93;
348180 l_array_source_94      t_array_source_94;
348181 l_array_source_95      t_array_source_95;
348182 l_array_source_97      t_array_source_97;
348183 l_array_source_108      t_array_source_108;
348184 
348185 --
348186 CURSOR header_cur
348187 IS
348188 SELECT /*+ leading(xet) cardinality(xet,1) */
348189 -- Event Type Code: LAYER_COST_UPD
348190 -- Event Class Code: MTL_COST_UPD
348191     xet.entity_id
348192   , xet.legal_entity_id
348193   , xet.entity_code
348194   , xet.transaction_number
348195   , xet.event_id
348196   , xet.event_class_code
348197   , xet.event_type_code
348198   , xet.event_number
348199   , xet.event_date
348200   , xet.transaction_date
348201   , xet.reference_num_1
348202   , xet.reference_num_2
348203   , xet.reference_num_3
348204   , xet.reference_num_4
348205   , xet.reference_char_1
348206   , xet.reference_char_2
348207   , xet.reference_char_3
348208   , xet.reference_char_4
348209   , xet.reference_date_1
348210   , xet.reference_date_2
348211   , xet.reference_date_3
348212   , xet.reference_date_4
348213   , xet.event_created_by
348214   , xet.budgetary_control_flag 
348215   , h1.TRANSACTION_ID    source_1
348216   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
348217   , h4.TRANSACTION_QUANTITY    source_3
348218   , h4.TRANSACTION_UOM    source_4
348219   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
348220   , h3.PRIMARY_COST_METHOD    source_39
348221   , fvl39.meaning   source_39_meaning
348222   , h7.PLA_MATERIAL_ACCOUNT    source_41
348223   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
348224   , h7.PLA_RESOURCE_ACCOUNT    source_43
348225   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
348226   , h7.PLA_OVERHEAD_ACCOUNT    source_45
348227   , h1.DISTRIBUTION_TYPE    source_85
348228   , fvl85.meaning   source_85_meaning
348229   , h1.TRANSFER_TO_GL_INDICATOR    source_114
348230   , fvl114.meaning   source_114_meaning
348231   FROM xla_events_gt     xet 
348232   , CST_XLA_INV_HEADERS_V  h1
348233   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
348234   , CST_XLA_INV_REF_V  h4
348235   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
348236   , CST_XLA_INV_TXN_TYPES_REF_V  h6
348237   , CST_XLA_PLA_CATEGORY_REF_V  h7
348238   , fnd_lookup_values    fvl39
348239   , fnd_lookup_values    fvl85
348240   , fnd_lookup_values    fvl114
348241  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
348242    and xet.event_type_code = C_EVENT_TYPE_CODE
348243    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
348244  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
348245 AND h7.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
348246 AND h7.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
348247   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
348248   AND fvl39.view_application_id(+) = 700
348249   AND fvl39.language(+)            = USERENV('LANG')
348250      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
348251   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
348252   AND fvl85.view_application_id(+) = 700
348253   AND fvl85.language(+)            = USERENV('LANG')
348254      AND fvl114.lookup_type(+)         = 'YES_NO'
348255   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
348256   AND fvl114.view_application_id(+) = 0
348257   AND fvl114.language(+)            = USERENV('LANG')
348258   
348259  ORDER BY event_id
348260 ;
348261 
348262 
348263 --
348264 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
348265 IS
348266 SELECT /*+ leading(xet) cardinality(xet,1) */
348267 -- Event Type Code: LAYER_COST_UPD
348268 -- Event Class Code: MTL_COST_UPD
348269     xet.entity_id
348270    ,xet.legal_entity_id
348271    ,xet.entity_code
348272    ,xet.transaction_number
348273    ,xet.event_id
348274    ,xet.event_class_code
348275    ,xet.event_type_code
348276    ,xet.event_number
348277    ,xet.event_date
348278    ,xet.transaction_date
348279    ,xet.reference_num_1
348280    ,xet.reference_num_2
348281    ,xet.reference_num_3
348282    ,xet.reference_num_4
348283    ,xet.reference_char_1
348284    ,xet.reference_char_2
348285    ,xet.reference_char_3
348286    ,xet.reference_char_4
348287    ,xet.reference_date_1
348288    ,xet.reference_date_2
348289    ,xet.reference_date_3
348290    ,xet.reference_date_4
348291    ,xet.event_created_by
348292    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
348293   , l2.CODE_COMBINATION_ID    source_11
348294   , l2.COST_ELEMENT_ID    source_15
348295   , l2.DISTRIBUTION_IDENTIFIER    source_84
348296   , l2.CURRENCY_CODE    source_88
348297   , l2.ENTERED_AMOUNT    source_91
348298   , l2.CURRENCY_CONVERSION_DATE    source_92
348299   , l2.CURRENCY_CONVERSION_RATE    source_93
348300   , l2.CURRENCY_CONVERSION_TYPE    source_94
348301   , l2.ACCOUNTED_AMOUNT    source_95
348302   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
348303   , l2.L_ORGANIZATION_CODE    source_108
348304   FROM xla_events_gt     xet 
348305   , CST_XLA_INV_LINES_V  l2
348306  WHERE xet.event_id between x_first_event_id and x_last_event_id
348307    and xet.event_date between p_pad_start_date and p_pad_end_date
348308    and xet.event_type_code = C_EVENT_TYPE_CODE
348309    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
348310 ;
348311 
348312 --
348313 BEGIN
348314 IF g_log_enabled THEN
348315    l_log_module := C_DEFAULT_MODULE||'.EventType_571';
348316 END IF;
348317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
348318    trace
348319       (p_msg      => 'BEGIN of EventType_571'
348320       ,p_level    => C_LEVEL_PROCEDURE
348321       ,p_module   => l_log_module);
348322 END IF;
348323 
348324 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
348325    trace
348326       (p_msg      => 'p_application_id = '||p_application_id||
348327                      ' - p_base_ledger_id = '||p_base_ledger_id||
348328                      ' - p_target_ledger_id  = '||p_target_ledger_id||
348329                      ' - p_language = '||p_language||
348330                      ' - p_currency_code = '||p_currency_code||
348331                      ' - p_sla_ledger_id = '||p_sla_ledger_id
348332       ,p_level    => C_LEVEL_STATEMENT
348333       ,p_module   => l_log_module);
348334 END IF;
348335 --
348336 -- initialze arrays
348337 --
348338 g_array_event.DELETE;
348339 l_rec_array_event := l_null_rec_array_event;
348340 --
348341 --------------------------------------
348342 -- 4262811 Initialze MPA Line Number
348343 --------------------------------------
348344 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
348345 
348346 --
348347 
348348 --
348349 OPEN header_cur;
348350 --
348351 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
348352    trace
348353    (p_msg      => 'SQL - FETCH header_cur'
348354    ,p_level    => C_LEVEL_STATEMENT
348355    ,p_module   => l_log_module);
348356 END IF;
348357 --
348358 LOOP
348359 FETCH header_cur BULK COLLECT INTO
348360         l_array_entity_id
348361       , l_array_legal_entity_id
348362       , l_array_entity_code
348363       , l_array_transaction_num
348364       , l_array_event_id
348365       , l_array_class_code
348366       , l_array_event_type
348367       , l_array_event_number
348368       , l_array_event_date
348369       , l_array_transaction_date
348370       , l_array_reference_num_1
348371       , l_array_reference_num_2
348372       , l_array_reference_num_3
348373       , l_array_reference_num_4
348374       , l_array_reference_char_1
348375       , l_array_reference_char_2
348376       , l_array_reference_char_3
348377       , l_array_reference_char_4
348378       , l_array_reference_date_1
348379       , l_array_reference_date_2
348380       , l_array_reference_date_3
348381       , l_array_reference_date_4
348382       , l_array_event_created_by
348383       , l_array_budgetary_control_flag 
348384       , l_array_source_1
348385       , l_array_source_2
348386       , l_array_source_3
348387       , l_array_source_4
348388       , l_array_source_5
348389       , l_array_source_39
348390       , l_array_source_39_meaning
348391       , l_array_source_41
348392       , l_array_source_42
348393       , l_array_source_43
348394       , l_array_source_44
348395       , l_array_source_45
348396       , l_array_source_85
348397       , l_array_source_85_meaning
348398       , l_array_source_114
348399       , l_array_source_114_meaning
348400       LIMIT l_rows;
348401 --
348402 IF (C_LEVEL_EVENT >= g_log_level) THEN
348403    trace
348404    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
348405    ,p_level    => C_LEVEL_EVENT
348406    ,p_module   => l_log_module);
348407 END IF;
348408 --
348409 EXIT WHEN l_array_entity_id.COUNT = 0;
348410 
348411 -- initialize arrays
348412 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
348413 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
348414 
348415 --
348416 -- Bug 4458708
348417 --
348418 XLA_AE_LINES_PKG.g_LineNumber := 0;
348419 
348420 
348421 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
348422 g_last_hdr_idx := l_array_event_id.LAST;
348423 --
348424 -- loop for the headers. Each iteration is for each header extract row
348425 -- fetched in header cursor
348426 --
348427 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
348428 
348429 --
348430 -- set event info as cache for other routines to refer event attributes
348431 --
348432 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
348433    (p_application_id           => p_application_id
348434    ,p_primary_ledger_id        => p_primary_ledger_id
348435    ,p_base_ledger_id           => p_base_ledger_id
348436    ,p_target_ledger_id         => p_target_ledger_id
348437    ,p_entity_id                => l_array_entity_id(hdr_idx)
348438    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
348439    ,p_entity_code              => l_array_entity_code(hdr_idx)
348440    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
348441    ,p_event_id                 => l_array_event_id(hdr_idx)
348442    ,p_event_class_code         => l_array_class_code(hdr_idx)
348443    ,p_event_type_code          => l_array_event_type(hdr_idx)
348444    ,p_event_number             => l_array_event_number(hdr_idx)
348445    ,p_event_date               => l_array_event_date(hdr_idx)
348446    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
348447    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
348448    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
348449    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
348450    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
348451    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
348452    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
348453    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
348454    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
348455    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
348456    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
348457    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
348458    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
348459    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
348460    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
348461 
348462 --
348463 -- set the status of entry to C_VALID (0)
348464 --
348465 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
348466 
348467 --
348468 -- initialize a row for ae header
348469 --
348470 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
348471 
348472 l_event_id := l_array_event_id(hdr_idx);
348473 
348474 --
348475 -- storing the hdr_idx for event. May be used by line cursor.
348476 --
348477 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
348478 
348479 --
348480 -- store sources from header extract. This can be improved to
348481 -- store only those sources from header extract that may be used in lines
348482 --
348483 
348484 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
348485 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
348486 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
348487 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
348488 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
348489 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
348490 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
348491 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
348492 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
348493 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
348494 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
348495 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
348496 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
348497 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
348498 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
348499 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
348500 
348501 --
348502 -- initilaize the status of ae headers for diffrent balance types
348503 -- the status is initialised to C_NOT_CREATED (2)
348504 --
348505 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
348506 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
348507 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
348508 
348509 --
348510 -- call api to validate and store accounting attributes for header
348511 --
348512 
348513 ------------------------------------------------------------
348514 -- Accrual Reversal : to get date for Standard Source (NONE)
348515 ------------------------------------------------------------
348516 l_acc_rev_gl_date_source := NULL;
348517 
348518      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
348519       l_rec_acct_attrs.array_date_value(1) := 
348520 xla_ae_sources_pkg.GetSystemSourceDate(
348521    p_source_code           => 'XLA_REFERENCE_DATE_1'
348522  , p_source_type_code      => 'Y'
348523  , p_source_application_id =>  602
348524 );
348525      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
348526       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
348527 
348528 
348529 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
348530 
348531 XLA_AE_HEADER_PKG.SetJeCategoryName;
348532 
348533 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
348534 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
348535 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
348536 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
348537 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
348538 
348539 
348540 --
348541 xla_ae_header_pkg.SetHdrDescription(
348542    p_description => Description_1 (
348543    p_application_id => p_application_id 
348544  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
348545  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
348546  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
348547  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
348548  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
348549    )
348550 );
348551 --
348552 
348553 -- No header level analytical criteria
348554 
348555 --
348556 --accounting attribute enhancement, bug 3612931
348557 --
348558 l_trx_reversal_source := SUBSTR(NULL, 1,30);
348559 
348560 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
348561    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
348562 
348563    xla_accounting_err_pkg.build_message
348564       (p_appli_s_name            => 'XLA'
348565       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
348566       ,p_token_1                 => 'ACCT_ATTR_NAME'
348567       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
348568       ,p_token_2                 => 'PRODUCT_NAME'
348569       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
348570       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
348571       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
348572       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
348573 
348574 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
348575    --
348576    -- following sets the accounting attributes needed to reverse
348577    -- accounting for a distributeion
348578    --
348579    xla_ae_lines_pkg.SetTrxReversalAttrs
348580       (p_event_id              => l_event_id
348581       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
348582       ,p_trx_reversal_source   => l_trx_reversal_source);
348583 
348584 END IF;
348585 
348586 
348587 ----------------------------------------------------------------
348588 -- 4262811 -  update the header statuses to invalid in need be
348589 ----------------------------------------------------------------
348590 --
348591 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
348592 
348593 
348594   -----------------------------------------------
348595   -- No accrual reversal for the event class/type
348596   -----------------------------------------------
348597 ----------------------------------------------------------------
348598 
348599 --
348600 -- this ends the header loop iteration for one bulk fetch
348601 --
348602 END LOOP;
348603 
348604 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
348605 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
348606 
348607 --
348608 -- insert dummy rows into lines gt table that were created due to
348609 -- transaction reversals
348610 --
348611 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
348612    l_result := XLA_AE_LINES_PKG.InsertLines;
348613 END IF;
348614 
348615 --
348616 -- reset the temp_line_num for each set of events fetched from header
348617 -- cursor rather than doing it for each new event in line cursor
348618 -- Bug 3939231
348619 --
348620 xla_ae_lines_pkg.g_temp_line_num := 0;
348621 
348622 
348623 
348624 --
348625 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
348626 --
348627 --
348628 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
348629 
348630       trace
348631          (p_msg      => 'SQL - FETCH line_cur'
348632          ,p_level    => C_LEVEL_STATEMENT
348633          ,p_module   => l_log_module);
348634 
348635 END IF;
348636 --
348637 --
348638 LOOP
348639   --
348640   FETCH line_cur BULK COLLECT INTO
348641         l_array_entity_id
348642       , l_array_legal_entity_id
348643       , l_array_entity_code
348644       , l_array_transaction_num
348645       , l_array_event_id
348646       , l_array_class_code
348647       , l_array_event_type
348648       , l_array_event_number
348649       , l_array_event_date
348650       , l_array_transaction_date
348651       , l_array_reference_num_1
348652       , l_array_reference_num_2
348653       , l_array_reference_num_3
348654       , l_array_reference_num_4
348655       , l_array_reference_char_1
348656       , l_array_reference_char_2
348657       , l_array_reference_char_3
348658       , l_array_reference_char_4
348659       , l_array_reference_date_1
348660       , l_array_reference_date_2
348661       , l_array_reference_date_3
348662       , l_array_reference_date_4
348663       , l_array_event_created_by
348664       , l_array_budgetary_control_flag
348665       , l_array_extract_line_num 
348666       , l_array_source_11
348667       , l_array_source_15
348668       , l_array_source_84
348669       , l_array_source_88
348670       , l_array_source_91
348671       , l_array_source_92
348672       , l_array_source_93
348673       , l_array_source_94
348674       , l_array_source_95
348675       , l_array_source_97
348676       , l_array_source_108
348677       LIMIT l_rows;
348678 
348679   --
348680   IF (C_LEVEL_EVENT >= g_log_level) THEN
348681             trace
348682                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
348683                ,p_level    => C_LEVEL_EVENT
348684                ,p_module   => l_log_module);
348685   END IF;
348686   --
348687   EXIT WHEN l_array_entity_id.count = 0;
348688 
348689   XLA_AE_LINES_PKG.g_rec_lines := null;
348690 
348691 --
348692 -- Bug 4458708
348693 --
348694 XLA_AE_LINES_PKG.g_LineNumber := 0;
348695 --
348696 --
348697 
348698 FOR Idx IN 1..l_array_event_id.count LOOP
348699    --
348700    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
348701    --
348702    l_event_id := l_array_event_id(idx);  -- 5648433
348703 
348704    --
348705    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
348706    --
348707 
348708    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
348709              (g_array_event(l_event_id).array_value_num('header_index'))
348710          ,'N'
348711          ) <> 'Y'
348712    THEN
348713       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
348714          trace
348715             (p_msg      => 'Trancaction revesal option is not Y '
348716             ,p_level    => C_LEVEL_STATEMENT
348717             ,p_module   => l_log_module);
348718       END IF;
348719 
348720 --
348721 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
348722 --
348723 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
348724 --
348725 -- set event info as cache for other routines to refer event attributes
348726 --
348727 
348728 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
348729    l_previous_event_id := l_event_id;
348730 
348731    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
348732       (p_application_id           => p_application_id
348733       ,p_primary_ledger_id        => p_primary_ledger_id
348734       ,p_base_ledger_id           => p_base_ledger_id
348735       ,p_target_ledger_id         => p_target_ledger_id
348736       ,p_entity_id                => l_array_entity_id(Idx)
348737       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
348738       ,p_entity_code              => l_array_entity_code(Idx)
348739       ,p_transaction_num          => l_array_transaction_num(Idx)
348740       ,p_event_id                 => l_array_event_id(Idx)
348741       ,p_event_class_code         => l_array_class_code(Idx)
348742       ,p_event_type_code          => l_array_event_type(Idx)
348743       ,p_event_number             => l_array_event_number(Idx)
348744       ,p_event_date               => l_array_event_date(Idx)
348745       ,p_transaction_date         => l_array_transaction_date(Idx)
348746       ,p_reference_num_1          => l_array_reference_num_1(Idx)
348747       ,p_reference_num_2          => l_array_reference_num_2(Idx)
348748       ,p_reference_num_3          => l_array_reference_num_3(Idx)
348749       ,p_reference_num_4          => l_array_reference_num_4(Idx)
348750       ,p_reference_char_1         => l_array_reference_char_1(Idx)
348751       ,p_reference_char_2         => l_array_reference_char_2(Idx)
348752       ,p_reference_char_3         => l_array_reference_char_3(Idx)
348753       ,p_reference_char_4         => l_array_reference_char_4(Idx)
348754       ,p_reference_date_1         => l_array_reference_date_1(Idx)
348755       ,p_reference_date_2         => l_array_reference_date_2(Idx)
348756       ,p_reference_date_3         => l_array_reference_date_3(Idx)
348757       ,p_reference_date_4         => l_array_reference_date_4(Idx)
348758       ,p_event_created_by         => l_array_event_created_by(Idx)
348759       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
348760        --
348761 END IF;
348762 
348763 
348764 
348765 --
348766 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
348767 
348768 l_acct_reversal_source := SUBSTR(NULL, 1,30);
348769 
348770 IF l_continue_with_lines THEN
348771    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
348772       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
348773 
348774       xla_accounting_err_pkg.build_message
348775          (p_appli_s_name            => 'XLA'
348776          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
348777          ,p_token_1                 => 'LINE_NUMBER'
348778          ,p_value_1                 => l_array_extract_line_num(Idx)
348779          ,p_token_2                 => 'PRODUCT_NAME'
348780          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
348781          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
348782          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
348783          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
348784 
348785    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
348786       --
348787       -- following sets the accounting attributes needed to reverse
348788       -- accounting for a distributeion
348789       --
348790 
348791       --
348792       -- 5217187
348793       --
348794       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
348795       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
348796                                        g_array_event(l_event_id).array_value_num('header_index'));
348797       --
348798       --
348799 
348800       -- No reversal code generated
348801 
348802       xla_ae_lines_pkg.SetAcctReversalAttrs
348803          (p_event_id             => l_event_id
348804          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
348805          ,p_calculate_acctd_flag => l_calculate_acctd_flag
348806          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
348807    END IF;
348808 
348809    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
348810        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
348811 
348812 --
348813 AcctLineType_64 (
348814  p_application_id  => p_application_id
348815  ,p_event_id     => l_event_id
348816  ,p_calculate_acctd_flag => l_calculate_acctd_flag
348817  ,p_calculate_g_l_flag => l_calculate_g_l_flag
348818  ,p_actual_flag => l_actual_flag
348819  ,p_balance_type_code => l_balance_type_code
348820  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
348821  
348822  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
348823  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
348824  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
348825  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
348826  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
348827  , p_source_11 => l_array_source_11(Idx)
348828  , p_source_84 => l_array_source_84(Idx)
348829  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
348830  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
348831  , p_source_88 => l_array_source_88(Idx)
348832  , p_source_91 => l_array_source_91(Idx)
348833  , p_source_92 => l_array_source_92(Idx)
348834  , p_source_93 => l_array_source_93(Idx)
348835  , p_source_94 => l_array_source_94(Idx)
348836  , p_source_95 => l_array_source_95(Idx)
348837  , p_source_97 => l_array_source_97(Idx)
348838  );
348839 If(l_balance_type_code = 'A') THEN
348840   l_actual_gain_loss_ref := l_gain_or_loss_ref;
348841 END IF;
348842 
348843 --
348844 
348845 
348846 --
348847 AcctLineType_95 (
348848  p_application_id  => p_application_id
348849  ,p_event_id     => l_event_id
348850  ,p_calculate_acctd_flag => l_calculate_acctd_flag
348851  ,p_calculate_g_l_flag => l_calculate_g_l_flag
348852  ,p_actual_flag => l_actual_flag
348853  ,p_balance_type_code => l_balance_type_code
348854  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
348855  
348856  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
348857  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
348858  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
348859  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
348860  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
348861  , p_source_11 => l_array_source_11(Idx)
348862  , p_source_84 => l_array_source_84(Idx)
348863  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
348864  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
348865  , p_source_88 => l_array_source_88(Idx)
348866  , p_source_91 => l_array_source_91(Idx)
348867  , p_source_92 => l_array_source_92(Idx)
348868  , p_source_93 => l_array_source_93(Idx)
348869  , p_source_94 => l_array_source_94(Idx)
348870  , p_source_95 => l_array_source_95(Idx)
348871  , p_source_97 => l_array_source_97(Idx)
348872  );
348873 If(l_balance_type_code = 'A') THEN
348874   l_actual_gain_loss_ref := l_gain_or_loss_ref;
348875 END IF;
348876 
348877 --
348878 
348879 
348880 --
348881 AcctLineType_127 (
348882  p_application_id  => p_application_id
348883  ,p_event_id     => l_event_id
348884  ,p_calculate_acctd_flag => l_calculate_acctd_flag
348885  ,p_calculate_g_l_flag => l_calculate_g_l_flag
348886  ,p_actual_flag => l_actual_flag
348887  ,p_balance_type_code => l_balance_type_code
348888  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
348889  
348890  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
348891  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
348892  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
348893  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
348894  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
348895  , p_source_11 => l_array_source_11(Idx)
348896  , p_source_84 => l_array_source_84(Idx)
348897  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
348898  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
348899  , p_source_88 => l_array_source_88(Idx)
348900  , p_source_91 => l_array_source_91(Idx)
348901  , p_source_92 => l_array_source_92(Idx)
348902  , p_source_93 => l_array_source_93(Idx)
348903  , p_source_94 => l_array_source_94(Idx)
348904  , p_source_95 => l_array_source_95(Idx)
348905  , p_source_97 => l_array_source_97(Idx)
348906  );
348907 If(l_balance_type_code = 'A') THEN
348908   l_actual_gain_loss_ref := l_gain_or_loss_ref;
348909 END IF;
348910 
348911 --
348912 
348913 
348914 --
348915 AcctLineType_224 (
348916  p_application_id  => p_application_id
348917  ,p_event_id     => l_event_id
348918  ,p_calculate_acctd_flag => l_calculate_acctd_flag
348919  ,p_calculate_g_l_flag => l_calculate_g_l_flag
348920  ,p_actual_flag => l_actual_flag
348921  ,p_balance_type_code => l_balance_type_code
348922  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
348923  
348924  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
348925  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
348926  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
348927  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
348928  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
348929  , p_source_11 => l_array_source_11(Idx)
348930  , p_source_15 => l_array_source_15(Idx)
348931  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
348932  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
348933  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
348934  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
348935  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
348936  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
348937  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
348938  , p_source_84 => l_array_source_84(Idx)
348939  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
348940  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
348941  , p_source_88 => l_array_source_88(Idx)
348942  , p_source_91 => l_array_source_91(Idx)
348943  , p_source_92 => l_array_source_92(Idx)
348944  , p_source_93 => l_array_source_93(Idx)
348945  , p_source_94 => l_array_source_94(Idx)
348946  , p_source_95 => l_array_source_95(Idx)
348947  , p_source_97 => l_array_source_97(Idx)
348948  );
348949 If(l_balance_type_code = 'A') THEN
348950   l_actual_gain_loss_ref := l_gain_or_loss_ref;
348951 END IF;
348952 
348953 --
348954 
348955 
348956 --
348957 AcctLineType_238 (
348958  p_application_id  => p_application_id
348959  ,p_event_id     => l_event_id
348960  ,p_calculate_acctd_flag => l_calculate_acctd_flag
348961  ,p_calculate_g_l_flag => l_calculate_g_l_flag
348962  ,p_actual_flag => l_actual_flag
348963  ,p_balance_type_code => l_balance_type_code
348964  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
348965  
348966  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
348967  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
348968  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
348969  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
348970  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
348971  , p_source_15 => l_array_source_15(Idx)
348972  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
348973  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
348974  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
348975  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
348976  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
348977  , p_source_84 => l_array_source_84(Idx)
348978  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
348979  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
348980  , p_source_88 => l_array_source_88(Idx)
348981  , p_source_91 => l_array_source_91(Idx)
348982  , p_source_92 => l_array_source_92(Idx)
348983  , p_source_93 => l_array_source_93(Idx)
348984  , p_source_94 => l_array_source_94(Idx)
348985  , p_source_95 => l_array_source_95(Idx)
348986  , p_source_97 => l_array_source_97(Idx)
348987  , p_source_108 => l_array_source_108(Idx)
348988  );
348989 If(l_balance_type_code = 'A') THEN
348990   l_actual_gain_loss_ref := l_gain_or_loss_ref;
348991 END IF;
348992 
348993 --
348994 
348995       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
348996       -- or secondary ledger that has different currency with primary
348997       -- or alc that is calculated by sla
348998       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
348999             (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'))
349000 
349001 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
349002 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
349003           AND (l_actual_flag = 'A')) THEN
349004         XLA_AE_LINES_PKG.CreateGainOrLossLines(
349005           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
349006          ,p_application_id   => p_application_id
349007          ,p_amb_context_code => 'DEFAULT'
349008          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
349009          ,p_event_class_code => C_EVENT_CLASS_CODE
349010          ,p_event_type_code  => C_EVENT_TYPE_CODE
349011          
349012          ,p_gain_ccid        => -1
349013          ,p_loss_ccid        => -1
349014 
349015          ,p_actual_flag      => l_actual_flag
349016          ,p_enc_flag         => null
349017          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
349018          ,p_enc_g_l_ref      => null
349019          );
349020       END IF;
349021    END IF;
349022 END IF;
349023 
349024    ELSE
349025       --
349026       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
349027       --
349028       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349029          trace
349030             (p_msg      => 'Trancaction revesal option is Y'
349031             ,p_level    => C_LEVEL_STATEMENT
349032             ,p_module   => l_log_module);
349033       END IF;
349034    END IF;
349035 
349036 END LOOP;
349037 l_result := XLA_AE_LINES_PKG.InsertLines ;
349038 end loop;
349039 close line_cur;
349040 
349041 
349042 --
349043 -- insert headers into xla_ae_headers_gt table
349044 --
349045 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
349046 
349047 -- insert into errors table here.
349048 
349049 END LOOP;
349050 
349051 --
349052 -- 4865292
349053 --
349054 -- Compare g_hdr_extract_count with event count in
349055 -- CreateHeadersAndLines.
349056 --
349057 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
349058 
349059 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349060    trace (p_msg     => '# rows extracted from header extract objects '
349061                     || ' (running total): '
349062                     || g_hdr_extract_count
349063          ,p_level   => C_LEVEL_STATEMENT
349064          ,p_module  => l_log_module);
349065 END IF;
349066 
349067 CLOSE header_cur;
349068 --
349069 
349070 --
349071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
349072    trace
349073       (p_msg      => 'END of EventType_571'
349074       ,p_level    => C_LEVEL_PROCEDURE
349075       ,p_module   => l_log_module);
349076 END IF;
349077 --
349078 RETURN l_result;
349079 EXCEPTION
349080 WHEN xla_exceptions_pkg.application_exception THEN
349081    
349082 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
349083 
349084    
349085 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
349086 
349087    RAISE;
349088 
349089 WHEN NO_DATA_FOUND THEN
349090 
349091 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
349092 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
349093 
349094 FOR header_record IN header_cur
349095 LOOP
349096     l_array_header_events(header_record.event_id) := header_record.event_id;
349097 END LOOP;
349098 
349099 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
349100 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
349101 
349102 fnd_file.put_line(fnd_file.LOG, '                    ');
349103 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
349104 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
349105 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
349106 
349107 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
349108 LOOP
349109 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
349110 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
349111         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
349112 	END IF;
349113 END LOOP;
349114 
349115 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
349116 fnd_file.put_line(fnd_file.LOG, '                    ');
349117 
349118 
349119 xla_exceptions_pkg.raise_message
349120       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_571');
349121 
349122 
349123 WHEN OTHERS THEN
349124    xla_exceptions_pkg.raise_message
349125       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_571');
349126 END EventType_571;
349127 --
349128 
349129 ---------------------------------------
349130 --
349131 -- PRIVATE PROCEDURE
349132 --         insert_sources_572
349133 --
349134 ----------------------------------------
349135 --
349136 PROCEDURE insert_sources_572(
349137                                 p_target_ledger_id       IN NUMBER
349138                               , p_language               IN VARCHAR2
349139                               , p_sla_ledger_id          IN NUMBER
349140                               , p_pad_start_date         IN DATE
349141                               , p_pad_end_date           IN DATE
349142                          )
349143 IS
349144 
349145 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_DEL_ALL';
349146 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
349147 p_apps_owner                   VARCHAR2(30);
349148 l_log_module                   VARCHAR2(240);
349149 BEGIN
349150 IF g_log_enabled THEN
349151       l_log_module := C_DEFAULT_MODULE||'.insert_sources_572';
349152 END IF;
349153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
349154 
349155       trace
349156          (p_msg      => 'BEGIN of insert_sources_572'
349157          ,p_level    => C_LEVEL_PROCEDURE
349158          ,p_module   => l_log_module);
349159 
349160 END IF;
349161 
349162 -- select APPS owner
349163 SELECT oracle_username
349164   INTO p_apps_owner
349165   FROM fnd_oracle_userid
349166  WHERE read_only_flag = 'U'
349167 ;
349168 
349169 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349170       trace
349171          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
349172                         ' - p_language = '||p_language||
349173                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
349174                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
349175                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
349176                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
349177          ,p_level    => C_LEVEL_STATEMENT
349178          ,p_module   => l_log_module);
349179 END IF;
349180 
349181 
349182 --
349183 INSERT INTO xla_diag_sources --hdr2
349184 (
349185         event_id
349186       , ledger_id
349187       , sla_ledger_id
349188       , description_language
349189       , object_name
349190       , object_type_code
349191       , line_number
349192       , source_application_id
349193       , source_type_code
349194       , source_code
349195       , source_value
349196       , source_meaning
349197       , created_by
349198       , creation_date
349199       , last_update_date
349200       , last_updated_by
349201       , last_update_login
349202       , program_update_date
349203       , program_application_id
349204       , program_id
349205       , request_id
349206 )
349207 SELECT
349208         event_id
349209       , p_target_ledger_id
349210       , p_sla_ledger_id
349211       , p_language
349212       , object_name
349213       , object_type_code
349214       , line_number
349215       , source_application_id
349216       , source_type_code
349217       , source_code
349218       , SUBSTR(source_value ,1,1996)
349219       , SUBSTR(source_meaning ,1,200)
349220       , xla_environment_pkg.g_Usr_Id
349221       , TRUNC(SYSDATE)
349222       , TRUNC(SYSDATE)
349223       , xla_environment_pkg.g_Usr_Id
349224       , xla_environment_pkg.g_Login_Id
349225       , TRUNC(SYSDATE)
349226       , xla_environment_pkg.g_Prog_Appl_Id
349227       , xla_environment_pkg.g_Prog_Id
349228       , xla_environment_pkg.g_Req_Id
349229   FROM (
349230        SELECT xet.event_id                  event_id
349231             , 0                          line_number
349232             , CASE r
349233                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
349234                 WHEN 2 THEN 'PO_DISTS_REF_V' 
349235                 WHEN 3 THEN 'PO_DISTS_REF_V' 
349236                 WHEN 4 THEN 'PO_DISTS_REF_V' 
349237                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
349238                 
349239                ELSE null
349240               END                           object_name
349241             , CASE r
349242                 WHEN 1 THEN 'HEADER' 
349243                 WHEN 2 THEN 'HEADER' 
349244                 WHEN 3 THEN 'HEADER' 
349245                 WHEN 4 THEN 'HEADER' 
349246                 WHEN 5 THEN 'HEADER' 
349247                 
349248                 ELSE null
349249               END                           object_type_code
349250             , CASE r
349251                 WHEN 1 THEN '707' 
349252                 WHEN 2 THEN '201' 
349253                 WHEN 3 THEN '201' 
349254                 WHEN 4 THEN '201' 
349255                 WHEN 5 THEN '707' 
349256                 
349257                 ELSE null
349258               END                           source_application_id
349259             , 'S'             source_type_code
349260             , CASE r
349261                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
349262                 WHEN 2 THEN 'ENTERED_CURRENCY_CODE' 
349263                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
349264                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
349265                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
349266                 
349267                 ELSE null
349268               END                           source_code
349269             , CASE r
349270                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
349271                 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
349272                 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
349273                 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
349274                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
349275                 
349276                 ELSE null
349277               END                           source_value
349278             , CASE r
349279                 WHEN 1 THEN fvl85.meaning
349280                 WHEN 5 THEN fvl114.meaning
349281                 
349282                 ELSE null
349283               END               source_meaning
349284          FROM xla_events_gt     xet  
349285       , CST_XLA_RCV_HEADERS_V  h1
349286       , CST_XLA_RCV_REF_V  h3
349287       , PO_DISTS_REF_V  h4
349288   , fnd_lookup_values    fvl85
349289   , fnd_lookup_values    fvl114
349290              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
349291          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
349292            AND xet.event_class_code = C_EVENT_CLASS_CODE
349293               AND h1.event_id = xet.event_id
349294  AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id and h3.po_distribution_id = h4.po_distribution_id   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
349295   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
349296   AND fvl85.view_application_id(+) = 700
349297   AND fvl85.language(+)            = USERENV('LANG')
349298      AND fvl114.lookup_type(+)         = 'YES_NO'
349299   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
349300   AND fvl114.view_application_id(+) = 0
349301   AND fvl114.language(+)            = USERENV('LANG')
349302   
349303 )
349304 ;
349305 --
349306 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349307 
349308       trace
349309          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
349310          ,p_level    => C_LEVEL_STATEMENT
349311          ,p_module   => l_log_module);
349312 
349313 END IF;
349314 --
349315 
349316 
349317 
349318 --
349319 INSERT INTO xla_diag_sources  --line2
349320 (
349321         event_id
349322       , ledger_id
349323       , sla_ledger_id
349324       , description_language
349325       , object_name
349326       , object_type_code
349327       , line_number
349328       , source_application_id
349329       , source_type_code
349330       , source_code
349331       , source_value
349332       , source_meaning
349333       , created_by
349334       , creation_date
349335       , last_update_date
349336       , last_updated_by
349337       , last_update_login
349338       , program_update_date
349339       , program_application_id
349340       , program_id
349341       , request_id
349342 )
349343 SELECT  event_id
349344       , p_target_ledger_id
349345       , p_sla_ledger_id
349346       , p_language
349347       , object_name
349348       , object_type_code
349349       , line_number
349350       , source_application_id
349351       , source_type_code
349352       , source_code
349353       , SUBSTR(source_value,1,1996)
349354       , SUBSTR(source_meaning ,1,200)
349355       , xla_environment_pkg.g_Usr_Id
349356       , TRUNC(SYSDATE)
349357       , TRUNC(SYSDATE)
349358       , xla_environment_pkg.g_Usr_Id
349359       , xla_environment_pkg.g_Login_Id
349360       , TRUNC(SYSDATE)
349361       , xla_environment_pkg.g_Prog_Appl_Id
349362       , xla_environment_pkg.g_Prog_Id
349363       , xla_environment_pkg.g_Req_Id
349364   FROM (
349365        SELECT xet.event_id                  event_id
349366             , l2.line_number                 line_number
349367             , CASE r
349368                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
349369                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
349370                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
349371                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
349372                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
349373                 
349374                ELSE null
349375               END                           object_name
349376             , CASE r
349377                 WHEN 1 THEN 'LINE' 
349378                 WHEN 2 THEN 'LINE' 
349379                 WHEN 3 THEN 'LINE' 
349380                 WHEN 4 THEN 'LINE' 
349381                 WHEN 5 THEN 'LINE' 
349382                 
349383                 ELSE null
349384               END                           object_type_code
349385             , CASE r
349386                 WHEN 1 THEN '707' 
349387                 WHEN 2 THEN '707' 
349388                 WHEN 3 THEN '707' 
349389                 WHEN 4 THEN '707' 
349390                 WHEN 5 THEN '707' 
349391                 
349392                 ELSE null
349393               END                           source_application_id
349394             , 'S'             source_type_code
349395             , CASE r
349396                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
349397                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
349398                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
349399                 WHEN 4 THEN 'ENTERED_AMOUNT' 
349400                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
349401                 
349402                 ELSE null
349403               END                           source_code
349404             , CASE r
349405                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
349406                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
349407                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
349408                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
349409                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
349410                 
349411                 ELSE null
349412               END                           source_value
349413             , null              source_meaning
349414          FROM  xla_events_gt     xet  
349415         , CST_XLA_RCV_LINES_V  l2
349416             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
349417         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
349418           AND xet.event_class_code = C_EVENT_CLASS_CODE
349419             AND l2.event_id          = xet.event_id
349420 
349421 )
349422 ;
349423 --
349424 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349425 
349426       trace
349427          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
349428          ,p_level    => C_LEVEL_STATEMENT
349429          ,p_module   => l_log_module);
349430 
349431 END IF;
349432 
349433 
349434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
349435       trace
349436          (p_msg      => 'END of insert_sources_572'
349437          ,p_level    => C_LEVEL_PROCEDURE
349438          ,p_module   => l_log_module);
349439 END IF;
349440 EXCEPTION
349441   WHEN xla_exceptions_pkg.application_exception THEN
349442       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
349443             trace
349444                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
349445                ,p_level    => C_LEVEL_EXCEPTION
349446                ,p_module   => l_log_module);
349447       END IF;
349448       RAISE;
349449   WHEN OTHERS THEN
349450       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
349451             trace
349452                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
349453                ,p_level    => C_LEVEL_EXCEPTION
349454                ,p_module   => l_log_module);
349455        END IF;
349456        xla_exceptions_pkg.raise_message
349457            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_572');
349458 END insert_sources_572;
349459 --
349460 
349461 ---------------------------------------
349462 --
349463 -- PRIVATE FUNCTION
349464 --         EventClass_572
349465 --
349466 ----------------------------------------
349467 --
349468 FUNCTION EventClass_572
349469        (p_application_id         IN NUMBER
349470        ,p_base_ledger_id         IN NUMBER
349471        ,p_target_ledger_id       IN NUMBER
349472        ,p_language               IN VARCHAR2
349473        ,p_currency_code          IN VARCHAR2
349474        ,p_sla_ledger_id          IN NUMBER
349475        ,p_pad_start_date         IN DATE
349476        ,p_pad_end_date           IN DATE
349477        ,p_primary_ledger_id      IN NUMBER)
349478 RETURN BOOLEAN IS
349479 --
349480 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_DEL_ALL';
349481 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
349482 
349483 l_calculate_acctd_flag   VARCHAR2(1) :='N';
349484 l_calculate_g_l_flag     VARCHAR2(1) :='N';
349485 --
349486 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349487 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349488 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
349489 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
349490 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349491 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
349492 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
349493 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349494 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
349495 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
349496 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349497 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349498 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349499 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
349500 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
349501 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
349502 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
349503 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
349504 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
349505 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
349506 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
349507 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
349508 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
349509 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
349510 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
349511 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
349512 
349513 l_event_id                             NUMBER;
349514 l_previous_event_id                    NUMBER;
349515 l_first_event_id                       NUMBER;
349516 l_last_event_id                        NUMBER;
349517 
349518 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
349519 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
349520 --
349521 --
349522 l_result                    BOOLEAN := TRUE;
349523 l_rows                      NUMBER  := 1000;
349524 l_event_type_name           VARCHAR2(80) := 'All';
349525 l_event_class_name          VARCHAR2(80) := 'Landed Cost Adjustment to Delivery';
349526 l_description               VARCHAR2(4000);
349527 l_transaction_reversal      NUMBER;
349528 l_ae_header_id              NUMBER;
349529 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
349530 l_log_module                VARCHAR2(240);
349531 --
349532 l_acct_reversal_source      VARCHAR2(30);
349533 l_trx_reversal_source       VARCHAR2(30);
349534 
349535 l_continue_with_lines       BOOLEAN := TRUE;
349536 --
349537 l_acc_rev_gl_date_source    DATE;                      -- 4262811
349538 --
349539 type t_array_event_id is table of number index by binary_integer;
349540 
349541 l_rec_array_event                    t_rec_array_event;
349542 l_null_rec_array_event               t_rec_array_event;
349543 l_array_ae_header_id                 xla_number_array_type;
349544 l_actual_flag                        VARCHAR2(1) := NULL;
349545 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
349546 l_balance_type_code                  VARCHAR2(1) :=NULL;
349547 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
349548 
349549 --
349550 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
349551 --
349552 
349553 TYPE t_array_source_85 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
349554 TYPE t_array_source_105 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
349555 TYPE t_array_source_106 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
349556 TYPE t_array_source_107 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
349557 TYPE t_array_source_114 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
349558 
349559 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
349560 TYPE t_array_source_78 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
349561 TYPE t_array_source_84 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
349562 TYPE t_array_source_91 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
349563 TYPE t_array_source_95 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
349564 
349565 l_array_source_85              t_array_source_85;
349566 l_array_source_85_meaning      t_array_lookup_meaning;
349567 l_array_source_105              t_array_source_105;
349568 l_array_source_106              t_array_source_106;
349569 l_array_source_107              t_array_source_107;
349570 l_array_source_114              t_array_source_114;
349571 l_array_source_114_meaning      t_array_lookup_meaning;
349572 
349573 l_array_source_11      t_array_source_11;
349574 l_array_source_78      t_array_source_78;
349575 l_array_source_84      t_array_source_84;
349576 l_array_source_91      t_array_source_91;
349577 l_array_source_95      t_array_source_95;
349578 
349579 --
349580 CURSOR header_cur
349581 IS
349582 SELECT /*+ leading(xet) cardinality(xet,1) */
349583 -- Event Class Code: LDD_COST_ADJ_DEL
349584     xet.entity_id
349585    ,xet.legal_entity_id
349586    ,xet.entity_code
349587    ,xet.transaction_number
349588    ,xet.event_id
349589    ,xet.event_class_code
349590    ,xet.event_type_code
349591    ,xet.event_number
349592    ,xet.event_date
349593    ,xet.transaction_date
349594    ,xet.reference_num_1
349595    ,xet.reference_num_2
349596    ,xet.reference_num_3
349597    ,xet.reference_num_4
349598    ,xet.reference_char_1
349599    ,xet.reference_char_2
349600    ,xet.reference_char_3
349601    ,xet.reference_char_4
349602    ,xet.reference_date_1
349603    ,xet.reference_date_2
349604    ,xet.reference_date_3
349605    ,xet.reference_date_4
349606    ,xet.event_created_by
349607    ,xet.budgetary_control_flag 
349608   , h1.DISTRIBUTION_TYPE    source_85
349609   , fvl85.meaning   source_85_meaning
349610   , h4.ENTERED_CURRENCY_CODE    source_105
349611   , h4.CURRENCY_CONVERSION_DATE    source_106
349612   , h4.CURRENCY_CONVERSION_RATE    source_107
349613   , h1.TRANSFER_TO_GL_INDICATOR    source_114
349614   , fvl114.meaning   source_114_meaning
349615   FROM xla_events_gt     xet 
349616   , CST_XLA_RCV_HEADERS_V  h1
349617   , CST_XLA_RCV_REF_V  h3
349618   , PO_DISTS_REF_V  h4
349619   , fnd_lookup_values    fvl85
349620   , fnd_lookup_values    fvl114
349621  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
349622    and xet.event_class_code = C_EVENT_CLASS_CODE
349623    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
349624  AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id AND h3.po_distribution_id = h4.po_distribution_id   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
349625   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
349626   AND fvl85.view_application_id(+) = 700
349627   AND fvl85.language(+)            = USERENV('LANG')
349628      AND fvl114.lookup_type(+)         = 'YES_NO'
349629   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
349630   AND fvl114.view_application_id(+) = 0
349631   AND fvl114.language(+)            = USERENV('LANG')
349632   
349633  ORDER BY event_id
349634 ;
349635 
349636 
349637 --
349638 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
349639 IS
349640 SELECT  /*+ leading(xet) cardinality(xet,1) */
349641 -- Event Class Code: LDD_COST_ADJ_DEL
349642     xet.entity_id
349643    ,xet.legal_entity_id
349644    ,xet.entity_code
349645    ,xet.transaction_number
349646    ,xet.event_id
349647    ,xet.event_class_code
349648    ,xet.event_type_code
349649    ,xet.event_number
349650    ,xet.event_date
349651    ,xet.transaction_date
349652    ,xet.reference_num_1
349653    ,xet.reference_num_2
349654    ,xet.reference_num_3
349655    ,xet.reference_num_4
349656    ,xet.reference_char_1
349657    ,xet.reference_char_2
349658    ,xet.reference_char_3
349659    ,xet.reference_char_4
349660    ,xet.reference_date_1
349661    ,xet.reference_date_2
349662    ,xet.reference_date_3
349663    ,xet.reference_date_4
349664    ,xet.event_created_by
349665    ,xet.budgetary_control_flag
349666  , l2.LINE_NUMBER  
349667   , l2.CODE_COMBINATION_ID    source_11
349668   , l2.RCV_ACCOUNTING_LINE_TYPE    source_78
349669   , l2.DISTRIBUTION_IDENTIFIER    source_84
349670   , l2.ENTERED_AMOUNT    source_91
349671   , l2.ACCOUNTED_AMOUNT    source_95
349672   FROM xla_events_gt     xet 
349673   , CST_XLA_RCV_LINES_V  l2
349674  WHERE xet.event_id between x_first_event_id and x_last_event_id
349675    and xet.event_date between p_pad_start_date and p_pad_end_date
349676    and xet.event_class_code = C_EVENT_CLASS_CODE
349677    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
349678 ;
349679 
349680 --
349681 BEGIN
349682 IF g_log_enabled THEN
349683    l_log_module := C_DEFAULT_MODULE||'.EventClass_572';
349684 END IF;
349685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
349686    trace
349687       (p_msg      => 'BEGIN of EventClass_572'
349688       ,p_level    => C_LEVEL_PROCEDURE
349689       ,p_module   => l_log_module);
349690 END IF;
349691 
349692 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349693    trace
349694       (p_msg      => 'p_application_id = '||p_application_id||
349695                      ' - p_base_ledger_id = '||p_base_ledger_id||
349696                      ' - p_target_ledger_id  = '||p_target_ledger_id||
349697                      ' - p_language = '||p_language||
349698                      ' - p_currency_code = '||p_currency_code||
349699                      ' - p_sla_ledger_id = '||p_sla_ledger_id
349700       ,p_level    => C_LEVEL_STATEMENT
349701       ,p_module   => l_log_module);
349702 END IF;
349703 --
349704 -- initialze arrays
349705 --
349706 g_array_event.DELETE;
349707 l_rec_array_event := l_null_rec_array_event;
349708 --
349709 --------------------------------------
349710 -- 4262811 Initialze MPA Line Number
349711 --------------------------------------
349712 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
349713 
349714 --
349715 
349716 --
349717 OPEN header_cur;
349718 --
349719 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349720    trace
349721    (p_msg      => 'SQL - FETCH header_cur'
349722    ,p_level    => C_LEVEL_STATEMENT
349723    ,p_module   => l_log_module);
349724 END IF;
349725 --
349726 LOOP
349727 FETCH header_cur BULK COLLECT INTO
349728         l_array_entity_id
349729       , l_array_legal_entity_id
349730       , l_array_entity_code
349731       , l_array_transaction_num
349732       , l_array_event_id
349733       , l_array_class_code
349734       , l_array_event_type
349735       , l_array_event_number
349736       , l_array_event_date
349737       , l_array_transaction_date
349738       , l_array_reference_num_1
349739       , l_array_reference_num_2
349740       , l_array_reference_num_3
349741       , l_array_reference_num_4
349742       , l_array_reference_char_1
349743       , l_array_reference_char_2
349744       , l_array_reference_char_3
349745       , l_array_reference_char_4
349746       , l_array_reference_date_1
349747       , l_array_reference_date_2
349748       , l_array_reference_date_3
349749       , l_array_reference_date_4
349750       , l_array_event_created_by
349751       , l_array_budgetary_control_flag 
349752       , l_array_source_85
349753       , l_array_source_85_meaning
349754       , l_array_source_105
349755       , l_array_source_106
349756       , l_array_source_107
349757       , l_array_source_114
349758       , l_array_source_114_meaning
349759       LIMIT l_rows;
349760 --
349761 IF (C_LEVEL_EVENT >= g_log_level) THEN
349762    trace
349763    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
349764    ,p_level    => C_LEVEL_EVENT
349765    ,p_module   => l_log_module);
349766 END IF;
349767 --
349768 EXIT WHEN l_array_entity_id.COUNT = 0;
349769 
349770 -- initialize arrays
349771 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
349772 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
349773 
349774 --
349775 -- Bug 4458708
349776 --
349777 XLA_AE_LINES_PKG.g_LineNumber := 0;
349778 
349779 
349780 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
349781 g_last_hdr_idx := l_array_event_id.LAST;
349782 --
349783 -- loop for the headers. Each iteration is for each header extract row
349784 -- fetched in header cursor
349785 --
349786 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
349787 
349788 --
349789 -- set event info as cache for other routines to refer event attributes
349790 --
349791 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
349792    (p_application_id           => p_application_id
349793    ,p_primary_ledger_id        => p_primary_ledger_id
349794    ,p_base_ledger_id           => p_base_ledger_id
349795    ,p_target_ledger_id         => p_target_ledger_id
349796    ,p_entity_id                => l_array_entity_id(hdr_idx)
349797    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
349798    ,p_entity_code              => l_array_entity_code(hdr_idx)
349799    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
349800    ,p_event_id                 => l_array_event_id(hdr_idx)
349801    ,p_event_class_code         => l_array_class_code(hdr_idx)
349802    ,p_event_type_code          => l_array_event_type(hdr_idx)
349803    ,p_event_number             => l_array_event_number(hdr_idx)
349804    ,p_event_date               => l_array_event_date(hdr_idx)
349805    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
349806    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
349807    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
349808    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
349809    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
349810    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
349811    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
349812    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
349813    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
349814    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
349815    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
349816    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
349817    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
349818    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
349819    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
349820 
349821 --
349822 -- set the status of entry to C_VALID (0)
349823 --
349824 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
349825 
349826 --
349827 -- initialize a row for ae header
349828 --
349829 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
349830 
349831 l_event_id := l_array_event_id(hdr_idx);
349832 
349833 --
349834 -- storing the hdr_idx for event. May be used by line cursor.
349835 --
349836 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
349837 
349838 --
349839 -- store sources from header extract. This can be improved to
349840 -- store only those sources from header extract that may be used in lines
349841 --
349842 
349843 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
349844 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
349845 g_array_event(l_event_id).array_value_char('source_105') := l_array_source_105(hdr_idx);
349846 g_array_event(l_event_id).array_value_date('source_106') := l_array_source_106(hdr_idx);
349847 g_array_event(l_event_id).array_value_num('source_107') := l_array_source_107(hdr_idx);
349848 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
349849 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
349850 
349851 --
349852 -- initilaize the status of ae headers for diffrent balance types
349853 -- the status is initialised to C_NOT_CREATED (2)
349854 --
349855 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
349856 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
349857 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
349858 
349859 --
349860 -- call api to validate and store accounting attributes for header
349861 --
349862 
349863 ------------------------------------------------------------
349864 -- Accrual Reversal : to get date for Standard Source (NONE)
349865 ------------------------------------------------------------
349866 l_acc_rev_gl_date_source := NULL;
349867 
349868      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
349869       l_rec_acct_attrs.array_date_value(1) := 
349870 xla_ae_sources_pkg.GetSystemSourceDate(
349871    p_source_code           => 'XLA_REFERENCE_DATE_1'
349872  , p_source_type_code      => 'Y'
349873  , p_source_application_id =>  602
349874 );
349875      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
349876       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
349877 
349878 
349879 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
349880 
349881 XLA_AE_HEADER_PKG.SetJeCategoryName;
349882 
349883 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
349884 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
349885 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
349886 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
349887 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
349888 
349889 
349890 -- No header level analytical criteria
349891 
349892 --
349893 --accounting attribute enhancement, bug 3612931
349894 --
349895 l_trx_reversal_source := SUBSTR(NULL, 1,30);
349896 
349897 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
349898    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
349899 
349900    xla_accounting_err_pkg.build_message
349901       (p_appli_s_name            => 'XLA'
349902       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
349903       ,p_token_1                 => 'ACCT_ATTR_NAME'
349904       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
349905       ,p_token_2                 => 'PRODUCT_NAME'
349906       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
349907       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
349908       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
349909       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
349910 
349911 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
349912    --
349913    -- following sets the accounting attributes needed to reverse
349914    -- accounting for a distributeion
349915    --
349916    xla_ae_lines_pkg.SetTrxReversalAttrs
349917       (p_event_id              => l_event_id
349918       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
349919       ,p_trx_reversal_source   => l_trx_reversal_source);
349920 
349921 END IF;
349922 
349923 
349924 ----------------------------------------------------------------
349925 -- 4262811 -  update the header statuses to invalid in need be
349926 ----------------------------------------------------------------
349927 --
349928 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
349929 
349930 
349931   -----------------------------------------------
349932   -- No accrual reversal for the event class/type
349933   -----------------------------------------------
349934 ----------------------------------------------------------------
349935 
349936 --
349937 -- this ends the header loop iteration for one bulk fetch
349938 --
349939 END LOOP;
349940 
349941 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
349942 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
349943 
349944 --
349945 -- insert dummy rows into lines gt table that were created due to
349946 -- transaction reversals
349947 --
349948 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
349949    l_result := XLA_AE_LINES_PKG.InsertLines;
349950 END IF;
349951 
349952 --
349953 -- reset the temp_line_num for each set of events fetched from header
349954 -- cursor rather than doing it for each new event in line cursor
349955 -- Bug 3939231
349956 --
349957 xla_ae_lines_pkg.g_temp_line_num := 0;
349958 
349959 
349960 
349961 --
349962 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
349963 --
349964 --
349965 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
349966 
349967       trace
349968          (p_msg      => 'SQL - FETCH line_cur'
349969          ,p_level    => C_LEVEL_STATEMENT
349970          ,p_module   => l_log_module);
349971 
349972 END IF;
349973 --
349974 --
349975 LOOP
349976   --
349977   FETCH line_cur BULK COLLECT INTO
349978         l_array_entity_id
349979       , l_array_legal_entity_id
349980       , l_array_entity_code
349981       , l_array_transaction_num
349982       , l_array_event_id
349983       , l_array_class_code
349984       , l_array_event_type
349985       , l_array_event_number
349986       , l_array_event_date
349987       , l_array_transaction_date
349988       , l_array_reference_num_1
349989       , l_array_reference_num_2
349990       , l_array_reference_num_3
349991       , l_array_reference_num_4
349992       , l_array_reference_char_1
349993       , l_array_reference_char_2
349994       , l_array_reference_char_3
349995       , l_array_reference_char_4
349996       , l_array_reference_date_1
349997       , l_array_reference_date_2
349998       , l_array_reference_date_3
349999       , l_array_reference_date_4
350000       , l_array_event_created_by
350001       , l_array_budgetary_control_flag
350002       , l_array_extract_line_num 
350003       , l_array_source_11
350004       , l_array_source_78
350005       , l_array_source_84
350006       , l_array_source_91
350007       , l_array_source_95
350008       LIMIT l_rows;
350009 
350010   --
350011   IF (C_LEVEL_EVENT >= g_log_level) THEN
350012             trace
350013                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
350014                ,p_level    => C_LEVEL_EVENT
350015                ,p_module   => l_log_module);
350016   END IF;
350017   --
350018   EXIT WHEN l_array_entity_id.count = 0;
350019 
350020   XLA_AE_LINES_PKG.g_rec_lines := null;
350021 
350022 --
350023 -- Bug 4458708
350024 --
350025 XLA_AE_LINES_PKG.g_LineNumber := 0;
350026 --
350027 --
350028 
350029 FOR Idx IN 1..l_array_event_id.count LOOP
350030    --
350031    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
350032    --
350033    l_event_id := l_array_event_id(idx);  -- 5648433
350034 
350035    --
350036    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
350037    --
350038 
350039    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
350040              (g_array_event(l_event_id).array_value_num('header_index'))
350041          ,'N'
350042          ) <> 'Y'
350043    THEN
350044       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350045          trace
350046             (p_msg      => 'Trancaction revesal option is not Y '
350047             ,p_level    => C_LEVEL_STATEMENT
350048             ,p_module   => l_log_module);
350049       END IF;
350050 
350051 --
350052 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
350053 --
350054 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
350055 --
350056 -- set event info as cache for other routines to refer event attributes
350057 --
350058 
350059 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
350060    l_previous_event_id := l_event_id;
350061 
350062    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
350063       (p_application_id           => p_application_id
350064       ,p_primary_ledger_id        => p_primary_ledger_id
350065       ,p_base_ledger_id           => p_base_ledger_id
350066       ,p_target_ledger_id         => p_target_ledger_id
350067       ,p_entity_id                => l_array_entity_id(Idx)
350068       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
350069       ,p_entity_code              => l_array_entity_code(Idx)
350070       ,p_transaction_num          => l_array_transaction_num(Idx)
350071       ,p_event_id                 => l_array_event_id(Idx)
350072       ,p_event_class_code         => l_array_class_code(Idx)
350073       ,p_event_type_code          => l_array_event_type(Idx)
350074       ,p_event_number             => l_array_event_number(Idx)
350075       ,p_event_date               => l_array_event_date(Idx)
350076       ,p_transaction_date         => l_array_transaction_date(Idx)
350077       ,p_reference_num_1          => l_array_reference_num_1(Idx)
350078       ,p_reference_num_2          => l_array_reference_num_2(Idx)
350079       ,p_reference_num_3          => l_array_reference_num_3(Idx)
350080       ,p_reference_num_4          => l_array_reference_num_4(Idx)
350081       ,p_reference_char_1         => l_array_reference_char_1(Idx)
350082       ,p_reference_char_2         => l_array_reference_char_2(Idx)
350083       ,p_reference_char_3         => l_array_reference_char_3(Idx)
350084       ,p_reference_char_4         => l_array_reference_char_4(Idx)
350085       ,p_reference_date_1         => l_array_reference_date_1(Idx)
350086       ,p_reference_date_2         => l_array_reference_date_2(Idx)
350087       ,p_reference_date_3         => l_array_reference_date_3(Idx)
350088       ,p_reference_date_4         => l_array_reference_date_4(Idx)
350089       ,p_event_created_by         => l_array_event_created_by(Idx)
350090       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
350091        --
350092 END IF;
350093 
350094 
350095 
350096 --
350097 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
350098 
350099 l_acct_reversal_source := SUBSTR(NULL, 1,30);
350100 
350101 IF l_continue_with_lines THEN
350102    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
350103       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
350104 
350105       xla_accounting_err_pkg.build_message
350106          (p_appli_s_name            => 'XLA'
350107          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
350108          ,p_token_1                 => 'LINE_NUMBER'
350109          ,p_value_1                 => l_array_extract_line_num(Idx)
350110          ,p_token_2                 => 'PRODUCT_NAME'
350111          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
350112          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
350113          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
350114          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
350115 
350116    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
350117       --
350118       -- following sets the accounting attributes needed to reverse
350119       -- accounting for a distributeion
350120       --
350121 
350122       --
350123       -- 5217187
350124       --
350125       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
350126       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
350127                                        g_array_event(l_event_id).array_value_num('header_index'));
350128       --
350129       --
350130 
350131       -- No reversal code generated
350132 
350133       xla_ae_lines_pkg.SetAcctReversalAttrs
350134          (p_event_id             => l_event_id
350135          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
350136          ,p_calculate_acctd_flag => l_calculate_acctd_flag
350137          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
350138    END IF;
350139 
350140    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
350141        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
350142 
350143 --
350144 AcctLineType_125 (
350145  p_application_id  => p_application_id
350146  ,p_event_id     => l_event_id
350147  ,p_calculate_acctd_flag => l_calculate_acctd_flag
350148  ,p_calculate_g_l_flag => l_calculate_g_l_flag
350149  ,p_actual_flag => l_actual_flag
350150  ,p_balance_type_code => l_balance_type_code
350151  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
350152  
350153  , p_source_11 => l_array_source_11(Idx)
350154  , p_source_78 => l_array_source_78(Idx)
350155  , p_source_84 => l_array_source_84(Idx)
350156  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
350157  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
350158  , p_source_91 => l_array_source_91(Idx)
350159  , p_source_95 => l_array_source_95(Idx)
350160  , p_source_105 => g_array_event(l_event_id).array_value_char('source_105')
350161  , p_source_106 => g_array_event(l_event_id).array_value_date('source_106')
350162  , p_source_107 => g_array_event(l_event_id).array_value_num('source_107')
350163  );
350164 If(l_balance_type_code = 'A') THEN
350165   l_actual_gain_loss_ref := l_gain_or_loss_ref;
350166 END IF;
350167 
350168 --
350169 
350170 
350171 --
350172 AcctLineType_290 (
350173  p_application_id  => p_application_id
350174  ,p_event_id     => l_event_id
350175  ,p_calculate_acctd_flag => l_calculate_acctd_flag
350176  ,p_calculate_g_l_flag => l_calculate_g_l_flag
350177  ,p_actual_flag => l_actual_flag
350178  ,p_balance_type_code => l_balance_type_code
350179  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
350180  
350181  , p_source_11 => l_array_source_11(Idx)
350182  , p_source_78 => l_array_source_78(Idx)
350183  , p_source_84 => l_array_source_84(Idx)
350184  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
350185  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
350186  , p_source_91 => l_array_source_91(Idx)
350187  , p_source_95 => l_array_source_95(Idx)
350188  , p_source_105 => g_array_event(l_event_id).array_value_char('source_105')
350189  , p_source_106 => g_array_event(l_event_id).array_value_date('source_106')
350190  , p_source_107 => g_array_event(l_event_id).array_value_num('source_107')
350191  );
350192 If(l_balance_type_code = 'A') THEN
350193   l_actual_gain_loss_ref := l_gain_or_loss_ref;
350194 END IF;
350195 
350196 --
350197 
350198 
350199 --
350200 AcctLineType_488 (
350201  p_application_id  => p_application_id
350202  ,p_event_id     => l_event_id
350203  ,p_calculate_acctd_flag => l_calculate_acctd_flag
350204  ,p_calculate_g_l_flag => l_calculate_g_l_flag
350205  ,p_actual_flag => l_actual_flag
350206  ,p_balance_type_code => l_balance_type_code
350207  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
350208  
350209  , p_source_11 => l_array_source_11(Idx)
350210  , p_source_78 => l_array_source_78(Idx)
350211  , p_source_84 => l_array_source_84(Idx)
350212  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
350213  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
350214  , p_source_91 => l_array_source_91(Idx)
350215  , p_source_95 => l_array_source_95(Idx)
350216  , p_source_105 => g_array_event(l_event_id).array_value_char('source_105')
350217  , p_source_106 => g_array_event(l_event_id).array_value_date('source_106')
350218  , p_source_107 => g_array_event(l_event_id).array_value_num('source_107')
350219  );
350220 If(l_balance_type_code = 'A') THEN
350221   l_actual_gain_loss_ref := l_gain_or_loss_ref;
350222 END IF;
350223 
350224 --
350225 
350226 
350227 --
350228 AcctLineType_500 (
350229  p_application_id  => p_application_id
350230  ,p_event_id     => l_event_id
350231  ,p_calculate_acctd_flag => l_calculate_acctd_flag
350232  ,p_calculate_g_l_flag => l_calculate_g_l_flag
350233  ,p_actual_flag => l_actual_flag
350234  ,p_balance_type_code => l_balance_type_code
350235  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
350236  
350237  , p_source_11 => l_array_source_11(Idx)
350238  , p_source_78 => l_array_source_78(Idx)
350239  , p_source_84 => l_array_source_84(Idx)
350240  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
350241  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
350242  , p_source_91 => l_array_source_91(Idx)
350243  , p_source_95 => l_array_source_95(Idx)
350244  , p_source_105 => g_array_event(l_event_id).array_value_char('source_105')
350245  , p_source_106 => g_array_event(l_event_id).array_value_date('source_106')
350246  , p_source_107 => g_array_event(l_event_id).array_value_num('source_107')
350247  );
350248 If(l_balance_type_code = 'A') THEN
350249   l_actual_gain_loss_ref := l_gain_or_loss_ref;
350250 END IF;
350251 
350252 --
350253 
350254       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
350255       -- or secondary ledger that has different currency with primary
350256       -- or alc that is calculated by sla
350257       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
350258             (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'))
350259 
350260 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
350261 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
350262           AND (l_actual_flag = 'A')) THEN
350263         XLA_AE_LINES_PKG.CreateGainOrLossLines(
350264           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
350265          ,p_application_id   => p_application_id
350266          ,p_amb_context_code => 'DEFAULT'
350267          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
350268          ,p_event_class_code => C_EVENT_CLASS_CODE
350269          ,p_event_type_code  => C_EVENT_TYPE_CODE
350270          
350271          ,p_gain_ccid        => -1
350272          ,p_loss_ccid        => -1
350273 
350274          ,p_actual_flag      => l_actual_flag
350275          ,p_enc_flag         => null
350276          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
350277          ,p_enc_g_l_ref      => null
350278          );
350279       END IF;
350280    END IF;
350281 END IF;
350282 
350283    ELSE
350284       --
350285       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
350286       --
350287       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350288          trace
350289             (p_msg      => 'Trancaction revesal option is Y'
350290             ,p_level    => C_LEVEL_STATEMENT
350291             ,p_module   => l_log_module);
350292       END IF;
350293    END IF;
350294 
350295 END LOOP;
350296 l_result := XLA_AE_LINES_PKG.InsertLines ;
350297 end loop;
350298 close line_cur;
350299 
350300 
350301 --
350302 -- insert headers into xla_ae_headers_gt table
350303 --
350304 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
350305 
350306 -- insert into errors table here.
350307 
350308 END LOOP;
350309 
350310 --
350311 -- 4865292
350312 --
350313 -- Compare g_hdr_extract_count with event count in
350314 -- CreateHeadersAndLines.
350315 --
350316 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
350317 
350318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350319    trace (p_msg     => '# rows extracted from header extract objects '
350320                     || ' (running total): '
350321                     || g_hdr_extract_count
350322          ,p_level   => C_LEVEL_STATEMENT
350323          ,p_module  => l_log_module);
350324 END IF;
350325 
350326 CLOSE header_cur;
350327 --
350328 
350329 --
350330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
350331    trace
350332       (p_msg      => 'END of EventClass_572'
350333       ,p_level    => C_LEVEL_PROCEDURE
350334       ,p_module   => l_log_module);
350335 END IF;
350336 --
350337 RETURN l_result;
350338 EXCEPTION
350339 WHEN xla_exceptions_pkg.application_exception THEN
350340    
350341 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
350342 
350343    
350344 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
350345 
350346    RAISE;
350347 
350348 WHEN NO_DATA_FOUND THEN
350349 
350350 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
350351 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
350352 
350353 FOR header_record IN header_cur
350354 LOOP
350355     l_array_header_events(header_record.event_id) := header_record.event_id;
350356 END LOOP;
350357 
350358 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
350359 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
350360 
350361 fnd_file.put_line(fnd_file.LOG, '                    ');
350362 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
350363 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
350364 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
350365 
350366 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
350367 LOOP
350368 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
350369 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
350370         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
350371 	END IF;
350372 END LOOP;
350373 
350374 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
350375 fnd_file.put_line(fnd_file.LOG, '                    ');
350376 
350377 
350378 xla_exceptions_pkg.raise_message
350379       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_572');
350380 
350381 
350382 WHEN OTHERS THEN
350383    xla_exceptions_pkg.raise_message
350384       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_572');
350385 END EventClass_572;
350386 --
350387 
350388 ---------------------------------------
350389 --
350390 -- PRIVATE PROCEDURE
350391 --         insert_sources_573
350392 --
350393 ----------------------------------------
350394 --
350395 PROCEDURE insert_sources_573(
350396                                 p_target_ledger_id       IN NUMBER
350397                               , p_language               IN VARCHAR2
350398                               , p_sla_ledger_id          IN NUMBER
350399                               , p_pad_start_date         IN DATE
350400                               , p_pad_end_date           IN DATE
350401                          )
350402 IS
350403 
350404 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_RCV_ALL';
350405 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
350406 p_apps_owner                   VARCHAR2(30);
350407 l_log_module                   VARCHAR2(240);
350408 BEGIN
350409 IF g_log_enabled THEN
350410       l_log_module := C_DEFAULT_MODULE||'.insert_sources_573';
350411 END IF;
350412 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
350413 
350414       trace
350415          (p_msg      => 'BEGIN of insert_sources_573'
350416          ,p_level    => C_LEVEL_PROCEDURE
350417          ,p_module   => l_log_module);
350418 
350419 END IF;
350420 
350421 -- select APPS owner
350422 SELECT oracle_username
350423   INTO p_apps_owner
350424   FROM fnd_oracle_userid
350425  WHERE read_only_flag = 'U'
350426 ;
350427 
350428 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350429       trace
350430          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
350431                         ' - p_language = '||p_language||
350432                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
350433                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
350434                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
350435                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
350436          ,p_level    => C_LEVEL_STATEMENT
350437          ,p_module   => l_log_module);
350438 END IF;
350439 
350440 
350441 --
350442 INSERT INTO xla_diag_sources --hdr2
350443 (
350444         event_id
350445       , ledger_id
350446       , sla_ledger_id
350447       , description_language
350448       , object_name
350449       , object_type_code
350450       , line_number
350451       , source_application_id
350452       , source_type_code
350453       , source_code
350454       , source_value
350455       , source_meaning
350456       , created_by
350457       , creation_date
350458       , last_update_date
350459       , last_updated_by
350460       , last_update_login
350461       , program_update_date
350462       , program_application_id
350463       , program_id
350464       , request_id
350465 )
350466 SELECT
350467         event_id
350468       , p_target_ledger_id
350469       , p_sla_ledger_id
350470       , p_language
350471       , object_name
350472       , object_type_code
350473       , line_number
350474       , source_application_id
350475       , source_type_code
350476       , source_code
350477       , SUBSTR(source_value ,1,1996)
350478       , SUBSTR(source_meaning ,1,200)
350479       , xla_environment_pkg.g_Usr_Id
350480       , TRUNC(SYSDATE)
350481       , TRUNC(SYSDATE)
350482       , xla_environment_pkg.g_Usr_Id
350483       , xla_environment_pkg.g_Login_Id
350484       , TRUNC(SYSDATE)
350485       , xla_environment_pkg.g_Prog_Appl_Id
350486       , xla_environment_pkg.g_Prog_Id
350487       , xla_environment_pkg.g_Req_Id
350488   FROM (
350489        SELECT xet.event_id                  event_id
350490             , 0                          line_number
350491             , CASE r
350492                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
350493                 WHEN 2 THEN 'PO_DISTS_REF_V' 
350494                 WHEN 3 THEN 'PO_DISTS_REF_V' 
350495                 WHEN 4 THEN 'PO_DISTS_REF_V' 
350496                 WHEN 5 THEN 'PO_DISTS_REF_V' 
350497                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
350498                 
350499                ELSE null
350500               END                           object_name
350501             , CASE r
350502                 WHEN 1 THEN 'HEADER' 
350503                 WHEN 2 THEN 'HEADER' 
350504                 WHEN 3 THEN 'HEADER' 
350505                 WHEN 4 THEN 'HEADER' 
350506                 WHEN 5 THEN 'HEADER' 
350507                 WHEN 6 THEN 'HEADER' 
350508                 
350509                 ELSE null
350510               END                           object_type_code
350511             , CASE r
350512                 WHEN 1 THEN '707' 
350513                 WHEN 2 THEN '201' 
350514                 WHEN 3 THEN '201' 
350515                 WHEN 4 THEN '201' 
350516                 WHEN 5 THEN '201' 
350517                 WHEN 6 THEN '707' 
350518                 
350519                 ELSE null
350520               END                           source_application_id
350521             , 'S'             source_type_code
350522             , CASE r
350523                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
350524                 WHEN 2 THEN 'ENTERED_CURRENCY_CODE' 
350525                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
350526                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
350527                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
350528                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
350529                 
350530                 ELSE null
350531               END                           source_code
350532             , CASE r
350533                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
350534                 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
350535                 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
350536                 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
350537                 WHEN 5 THEN TO_CHAR(h4.CURRENCY_CONVERSION_TYPE)
350538                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
350539                 
350540                 ELSE null
350541               END                           source_value
350542             , CASE r
350543                 WHEN 1 THEN fvl85.meaning
350544                 WHEN 6 THEN fvl114.meaning
350545                 
350546                 ELSE null
350547               END               source_meaning
350548          FROM xla_events_gt     xet  
350549       , CST_XLA_RCV_HEADERS_V  h1
350550       , CST_XLA_RCV_REF_V  h3
350551       , PO_DISTS_REF_V  h4
350552   , fnd_lookup_values    fvl85
350553   , fnd_lookup_values    fvl114
350554              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
350555          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
350556            AND xet.event_class_code = C_EVENT_CLASS_CODE
350557               AND h1.event_id = xet.event_id
350558  AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id and h3.po_distribution_id = h4.po_distribution_id   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
350559   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
350560   AND fvl85.view_application_id(+) = 700
350561   AND fvl85.language(+)            = USERENV('LANG')
350562      AND fvl114.lookup_type(+)         = 'YES_NO'
350563   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
350564   AND fvl114.view_application_id(+) = 0
350565   AND fvl114.language(+)            = USERENV('LANG')
350566   
350567 )
350568 ;
350569 --
350570 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350571 
350572       trace
350573          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
350574          ,p_level    => C_LEVEL_STATEMENT
350575          ,p_module   => l_log_module);
350576 
350577 END IF;
350578 --
350579 
350580 
350581 
350582 --
350583 INSERT INTO xla_diag_sources  --line2
350584 (
350585         event_id
350586       , ledger_id
350587       , sla_ledger_id
350588       , description_language
350589       , object_name
350590       , object_type_code
350591       , line_number
350592       , source_application_id
350593       , source_type_code
350594       , source_code
350595       , source_value
350596       , source_meaning
350597       , created_by
350598       , creation_date
350599       , last_update_date
350600       , last_updated_by
350601       , last_update_login
350602       , program_update_date
350603       , program_application_id
350604       , program_id
350605       , request_id
350606 )
350607 SELECT  event_id
350608       , p_target_ledger_id
350609       , p_sla_ledger_id
350610       , p_language
350611       , object_name
350612       , object_type_code
350613       , line_number
350614       , source_application_id
350615       , source_type_code
350616       , source_code
350617       , SUBSTR(source_value,1,1996)
350618       , SUBSTR(source_meaning ,1,200)
350619       , xla_environment_pkg.g_Usr_Id
350620       , TRUNC(SYSDATE)
350621       , TRUNC(SYSDATE)
350622       , xla_environment_pkg.g_Usr_Id
350623       , xla_environment_pkg.g_Login_Id
350624       , TRUNC(SYSDATE)
350625       , xla_environment_pkg.g_Prog_Appl_Id
350626       , xla_environment_pkg.g_Prog_Id
350627       , xla_environment_pkg.g_Req_Id
350628   FROM (
350629        SELECT xet.event_id                  event_id
350630             , l2.line_number                 line_number
350631             , CASE r
350632                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
350633                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
350634                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
350635                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
350636                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
350637                 
350638                ELSE null
350639               END                           object_name
350640             , CASE r
350641                 WHEN 1 THEN 'LINE' 
350642                 WHEN 2 THEN 'LINE' 
350643                 WHEN 3 THEN 'LINE' 
350644                 WHEN 4 THEN 'LINE' 
350645                 WHEN 5 THEN 'LINE' 
350646                 
350647                 ELSE null
350648               END                           object_type_code
350649             , CASE r
350650                 WHEN 1 THEN '707' 
350651                 WHEN 2 THEN '707' 
350652                 WHEN 3 THEN '707' 
350653                 WHEN 4 THEN '707' 
350654                 WHEN 5 THEN '707' 
350655                 
350656                 ELSE null
350657               END                           source_application_id
350658             , 'S'             source_type_code
350659             , CASE r
350660                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
350661                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
350662                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
350663                 WHEN 4 THEN 'ENTERED_AMOUNT' 
350664                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
350665                 
350666                 ELSE null
350667               END                           source_code
350668             , CASE r
350669                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
350670                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
350671                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
350672                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
350673                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
350674                 
350675                 ELSE null
350676               END                           source_value
350677             , null              source_meaning
350678          FROM  xla_events_gt     xet  
350679         , CST_XLA_RCV_LINES_V  l2
350680             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
350681         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
350682           AND xet.event_class_code = C_EVENT_CLASS_CODE
350683             AND l2.event_id          = xet.event_id
350684 
350685 )
350686 ;
350687 --
350688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350689 
350690       trace
350691          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
350692          ,p_level    => C_LEVEL_STATEMENT
350693          ,p_module   => l_log_module);
350694 
350695 END IF;
350696 
350697 
350698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
350699       trace
350700          (p_msg      => 'END of insert_sources_573'
350701          ,p_level    => C_LEVEL_PROCEDURE
350702          ,p_module   => l_log_module);
350703 END IF;
350704 EXCEPTION
350705   WHEN xla_exceptions_pkg.application_exception THEN
350706       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
350707             trace
350708                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
350709                ,p_level    => C_LEVEL_EXCEPTION
350710                ,p_module   => l_log_module);
350711       END IF;
350712       RAISE;
350713   WHEN OTHERS THEN
350714       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
350715             trace
350716                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
350717                ,p_level    => C_LEVEL_EXCEPTION
350718                ,p_module   => l_log_module);
350719        END IF;
350720        xla_exceptions_pkg.raise_message
350721            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_573');
350722 END insert_sources_573;
350723 --
350724 
350725 ---------------------------------------
350726 --
350727 -- PRIVATE FUNCTION
350728 --         EventClass_573
350729 --
350730 ----------------------------------------
350731 --
350732 FUNCTION EventClass_573
350733        (p_application_id         IN NUMBER
350734        ,p_base_ledger_id         IN NUMBER
350735        ,p_target_ledger_id       IN NUMBER
350736        ,p_language               IN VARCHAR2
350737        ,p_currency_code          IN VARCHAR2
350738        ,p_sla_ledger_id          IN NUMBER
350739        ,p_pad_start_date         IN DATE
350740        ,p_pad_end_date           IN DATE
350741        ,p_primary_ledger_id      IN NUMBER)
350742 RETURN BOOLEAN IS
350743 --
350744 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LDD_COST_ADJ_RCV_ALL';
350745 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
350746 
350747 l_calculate_acctd_flag   VARCHAR2(1) :='N';
350748 l_calculate_g_l_flag     VARCHAR2(1) :='N';
350749 --
350750 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350751 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350752 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
350753 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
350754 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350755 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
350756 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
350757 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350758 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
350759 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
350760 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350761 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350762 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350763 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
350764 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
350765 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
350766 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
350767 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
350768 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
350769 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
350770 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
350771 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
350772 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
350773 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
350774 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
350775 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
350776 
350777 l_event_id                             NUMBER;
350778 l_previous_event_id                    NUMBER;
350779 l_first_event_id                       NUMBER;
350780 l_last_event_id                        NUMBER;
350781 
350782 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
350783 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
350784 --
350785 --
350786 l_result                    BOOLEAN := TRUE;
350787 l_rows                      NUMBER  := 1000;
350788 l_event_type_name           VARCHAR2(80) := 'All';
350789 l_event_class_name          VARCHAR2(80) := 'Landed Cost Adjustment to Receipt';
350790 l_description               VARCHAR2(4000);
350791 l_transaction_reversal      NUMBER;
350792 l_ae_header_id              NUMBER;
350793 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
350794 l_log_module                VARCHAR2(240);
350795 --
350796 l_acct_reversal_source      VARCHAR2(30);
350797 l_trx_reversal_source       VARCHAR2(30);
350798 
350799 l_continue_with_lines       BOOLEAN := TRUE;
350800 --
350801 l_acc_rev_gl_date_source    DATE;                      -- 4262811
350802 --
350803 type t_array_event_id is table of number index by binary_integer;
350804 
350805 l_rec_array_event                    t_rec_array_event;
350806 l_null_rec_array_event               t_rec_array_event;
350807 l_array_ae_header_id                 xla_number_array_type;
350808 l_actual_flag                        VARCHAR2(1) := NULL;
350809 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
350810 l_balance_type_code                  VARCHAR2(1) :=NULL;
350811 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
350812 
350813 --
350814 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
350815 --
350816 
350817 TYPE t_array_source_85 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
350818 TYPE t_array_source_105 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
350819 TYPE t_array_source_106 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
350820 TYPE t_array_source_107 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
350821 TYPE t_array_source_109 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
350822 TYPE t_array_source_114 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
350823 
350824 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
350825 TYPE t_array_source_78 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
350826 TYPE t_array_source_84 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
350827 TYPE t_array_source_91 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
350828 TYPE t_array_source_95 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
350829 
350830 l_array_source_85              t_array_source_85;
350831 l_array_source_85_meaning      t_array_lookup_meaning;
350832 l_array_source_105              t_array_source_105;
350833 l_array_source_106              t_array_source_106;
350834 l_array_source_107              t_array_source_107;
350835 l_array_source_109              t_array_source_109;
350836 l_array_source_114              t_array_source_114;
350837 l_array_source_114_meaning      t_array_lookup_meaning;
350838 
350839 l_array_source_11      t_array_source_11;
350840 l_array_source_78      t_array_source_78;
350841 l_array_source_84      t_array_source_84;
350842 l_array_source_91      t_array_source_91;
350843 l_array_source_95      t_array_source_95;
350844 
350845 --
350846 CURSOR header_cur
350847 IS
350848 SELECT /*+ leading(xet) cardinality(xet,1) */
350849 -- Event Class Code: LDD_COST_ADJ_RCV
350850     xet.entity_id
350851    ,xet.legal_entity_id
350852    ,xet.entity_code
350853    ,xet.transaction_number
350854    ,xet.event_id
350855    ,xet.event_class_code
350856    ,xet.event_type_code
350857    ,xet.event_number
350858    ,xet.event_date
350859    ,xet.transaction_date
350860    ,xet.reference_num_1
350861    ,xet.reference_num_2
350862    ,xet.reference_num_3
350863    ,xet.reference_num_4
350864    ,xet.reference_char_1
350865    ,xet.reference_char_2
350866    ,xet.reference_char_3
350867    ,xet.reference_char_4
350868    ,xet.reference_date_1
350869    ,xet.reference_date_2
350870    ,xet.reference_date_3
350871    ,xet.reference_date_4
350872    ,xet.event_created_by
350873    ,xet.budgetary_control_flag 
350874   , h1.DISTRIBUTION_TYPE    source_85
350875   , fvl85.meaning   source_85_meaning
350876   , h4.ENTERED_CURRENCY_CODE    source_105
350877   , h4.CURRENCY_CONVERSION_DATE    source_106
350878   , h4.CURRENCY_CONVERSION_RATE    source_107
350879   , h4.CURRENCY_CONVERSION_TYPE    source_109
350880   , h1.TRANSFER_TO_GL_INDICATOR    source_114
350881   , fvl114.meaning   source_114_meaning
350882   FROM xla_events_gt     xet 
350883   , CST_XLA_RCV_HEADERS_V  h1
350884   , CST_XLA_RCV_REF_V  h3
350885   , PO_DISTS_REF_V  h4
350886   , fnd_lookup_values    fvl85
350887   , fnd_lookup_values    fvl114
350888  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
350889    and xet.event_class_code = C_EVENT_CLASS_CODE
350890    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
350891  AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id AND h3.po_distribution_id = h4.po_distribution_id   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
350892   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
350893   AND fvl85.view_application_id(+) = 700
350894   AND fvl85.language(+)            = USERENV('LANG')
350895      AND fvl114.lookup_type(+)         = 'YES_NO'
350896   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
350897   AND fvl114.view_application_id(+) = 0
350898   AND fvl114.language(+)            = USERENV('LANG')
350899   
350900  ORDER BY event_id
350901 ;
350902 
350903 
350904 --
350905 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
350906 IS
350907 SELECT  /*+ leading(xet) cardinality(xet,1) */
350908 -- Event Class Code: LDD_COST_ADJ_RCV
350909     xet.entity_id
350910    ,xet.legal_entity_id
350911    ,xet.entity_code
350912    ,xet.transaction_number
350913    ,xet.event_id
350914    ,xet.event_class_code
350915    ,xet.event_type_code
350916    ,xet.event_number
350917    ,xet.event_date
350918    ,xet.transaction_date
350919    ,xet.reference_num_1
350920    ,xet.reference_num_2
350921    ,xet.reference_num_3
350922    ,xet.reference_num_4
350923    ,xet.reference_char_1
350924    ,xet.reference_char_2
350925    ,xet.reference_char_3
350926    ,xet.reference_char_4
350927    ,xet.reference_date_1
350928    ,xet.reference_date_2
350929    ,xet.reference_date_3
350930    ,xet.reference_date_4
350931    ,xet.event_created_by
350932    ,xet.budgetary_control_flag
350933  , l2.LINE_NUMBER  
350934   , l2.CODE_COMBINATION_ID    source_11
350935   , l2.RCV_ACCOUNTING_LINE_TYPE    source_78
350936   , l2.DISTRIBUTION_IDENTIFIER    source_84
350937   , l2.ENTERED_AMOUNT    source_91
350938   , l2.ACCOUNTED_AMOUNT    source_95
350939   FROM xla_events_gt     xet 
350940   , CST_XLA_RCV_LINES_V  l2
350941  WHERE xet.event_id between x_first_event_id and x_last_event_id
350942    and xet.event_date between p_pad_start_date and p_pad_end_date
350943    and xet.event_class_code = C_EVENT_CLASS_CODE
350944    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
350945 ;
350946 
350947 --
350948 BEGIN
350949 IF g_log_enabled THEN
350950    l_log_module := C_DEFAULT_MODULE||'.EventClass_573';
350951 END IF;
350952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
350953    trace
350954       (p_msg      => 'BEGIN of EventClass_573'
350955       ,p_level    => C_LEVEL_PROCEDURE
350956       ,p_module   => l_log_module);
350957 END IF;
350958 
350959 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350960    trace
350961       (p_msg      => 'p_application_id = '||p_application_id||
350962                      ' - p_base_ledger_id = '||p_base_ledger_id||
350963                      ' - p_target_ledger_id  = '||p_target_ledger_id||
350964                      ' - p_language = '||p_language||
350965                      ' - p_currency_code = '||p_currency_code||
350966                      ' - p_sla_ledger_id = '||p_sla_ledger_id
350967       ,p_level    => C_LEVEL_STATEMENT
350968       ,p_module   => l_log_module);
350969 END IF;
350970 --
350971 -- initialze arrays
350972 --
350973 g_array_event.DELETE;
350974 l_rec_array_event := l_null_rec_array_event;
350975 --
350976 --------------------------------------
350977 -- 4262811 Initialze MPA Line Number
350978 --------------------------------------
350979 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
350980 
350981 --
350982 
350983 --
350984 OPEN header_cur;
350985 --
350986 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
350987    trace
350988    (p_msg      => 'SQL - FETCH header_cur'
350989    ,p_level    => C_LEVEL_STATEMENT
350990    ,p_module   => l_log_module);
350991 END IF;
350992 --
350993 LOOP
350994 FETCH header_cur BULK COLLECT INTO
350995         l_array_entity_id
350996       , l_array_legal_entity_id
350997       , l_array_entity_code
350998       , l_array_transaction_num
350999       , l_array_event_id
351000       , l_array_class_code
351001       , l_array_event_type
351002       , l_array_event_number
351003       , l_array_event_date
351004       , l_array_transaction_date
351005       , l_array_reference_num_1
351006       , l_array_reference_num_2
351007       , l_array_reference_num_3
351008       , l_array_reference_num_4
351009       , l_array_reference_char_1
351010       , l_array_reference_char_2
351011       , l_array_reference_char_3
351012       , l_array_reference_char_4
351013       , l_array_reference_date_1
351014       , l_array_reference_date_2
351015       , l_array_reference_date_3
351016       , l_array_reference_date_4
351017       , l_array_event_created_by
351018       , l_array_budgetary_control_flag 
351019       , l_array_source_85
351020       , l_array_source_85_meaning
351021       , l_array_source_105
351022       , l_array_source_106
351023       , l_array_source_107
351024       , l_array_source_109
351025       , l_array_source_114
351026       , l_array_source_114_meaning
351027       LIMIT l_rows;
351028 --
351029 IF (C_LEVEL_EVENT >= g_log_level) THEN
351030    trace
351031    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
351032    ,p_level    => C_LEVEL_EVENT
351033    ,p_module   => l_log_module);
351034 END IF;
351035 --
351036 EXIT WHEN l_array_entity_id.COUNT = 0;
351037 
351038 -- initialize arrays
351039 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
351040 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
351041 
351042 --
351043 -- Bug 4458708
351044 --
351045 XLA_AE_LINES_PKG.g_LineNumber := 0;
351046 
351047 
351048 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
351049 g_last_hdr_idx := l_array_event_id.LAST;
351050 --
351051 -- loop for the headers. Each iteration is for each header extract row
351052 -- fetched in header cursor
351053 --
351054 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
351055 
351056 --
351057 -- set event info as cache for other routines to refer event attributes
351058 --
351059 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
351060    (p_application_id           => p_application_id
351061    ,p_primary_ledger_id        => p_primary_ledger_id
351062    ,p_base_ledger_id           => p_base_ledger_id
351063    ,p_target_ledger_id         => p_target_ledger_id
351064    ,p_entity_id                => l_array_entity_id(hdr_idx)
351065    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
351066    ,p_entity_code              => l_array_entity_code(hdr_idx)
351067    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
351068    ,p_event_id                 => l_array_event_id(hdr_idx)
351069    ,p_event_class_code         => l_array_class_code(hdr_idx)
351070    ,p_event_type_code          => l_array_event_type(hdr_idx)
351071    ,p_event_number             => l_array_event_number(hdr_idx)
351072    ,p_event_date               => l_array_event_date(hdr_idx)
351073    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
351074    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
351075    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
351076    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
351077    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
351078    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
351079    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
351080    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
351081    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
351082    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
351083    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
351084    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
351085    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
351086    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
351087    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
351088 
351089 --
351090 -- set the status of entry to C_VALID (0)
351091 --
351092 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
351093 
351094 --
351095 -- initialize a row for ae header
351096 --
351097 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
351098 
351099 l_event_id := l_array_event_id(hdr_idx);
351100 
351101 --
351102 -- storing the hdr_idx for event. May be used by line cursor.
351103 --
351104 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
351105 
351106 --
351107 -- store sources from header extract. This can be improved to
351108 -- store only those sources from header extract that may be used in lines
351109 --
351110 
351111 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
351112 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
351113 g_array_event(l_event_id).array_value_char('source_105') := l_array_source_105(hdr_idx);
351114 g_array_event(l_event_id).array_value_date('source_106') := l_array_source_106(hdr_idx);
351115 g_array_event(l_event_id).array_value_num('source_107') := l_array_source_107(hdr_idx);
351116 g_array_event(l_event_id).array_value_char('source_109') := l_array_source_109(hdr_idx);
351117 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
351118 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
351119 
351120 --
351121 -- initilaize the status of ae headers for diffrent balance types
351122 -- the status is initialised to C_NOT_CREATED (2)
351123 --
351124 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
351125 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
351126 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
351127 
351128 --
351129 -- call api to validate and store accounting attributes for header
351130 --
351131 
351132 ------------------------------------------------------------
351133 -- Accrual Reversal : to get date for Standard Source (NONE)
351134 ------------------------------------------------------------
351135 l_acc_rev_gl_date_source := NULL;
351136 
351137      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
351138       l_rec_acct_attrs.array_date_value(1) := 
351139 xla_ae_sources_pkg.GetSystemSourceDate(
351140    p_source_code           => 'XLA_REFERENCE_DATE_1'
351141  , p_source_type_code      => 'Y'
351142  , p_source_application_id =>  602
351143 );
351144      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
351145       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
351146 
351147 
351148 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
351149 
351150 XLA_AE_HEADER_PKG.SetJeCategoryName;
351151 
351152 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
351153 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
351154 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
351155 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
351156 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
351157 
351158 
351159 -- No header level analytical criteria
351160 
351161 --
351162 --accounting attribute enhancement, bug 3612931
351163 --
351164 l_trx_reversal_source := SUBSTR(NULL, 1,30);
351165 
351166 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
351167    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
351168 
351169    xla_accounting_err_pkg.build_message
351170       (p_appli_s_name            => 'XLA'
351171       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
351172       ,p_token_1                 => 'ACCT_ATTR_NAME'
351173       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
351174       ,p_token_2                 => 'PRODUCT_NAME'
351175       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
351176       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
351177       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
351178       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
351179 
351180 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
351181    --
351182    -- following sets the accounting attributes needed to reverse
351183    -- accounting for a distributeion
351184    --
351185    xla_ae_lines_pkg.SetTrxReversalAttrs
351186       (p_event_id              => l_event_id
351187       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
351188       ,p_trx_reversal_source   => l_trx_reversal_source);
351189 
351190 END IF;
351191 
351192 
351193 ----------------------------------------------------------------
351194 -- 4262811 -  update the header statuses to invalid in need be
351195 ----------------------------------------------------------------
351196 --
351197 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
351198 
351199 
351200   -----------------------------------------------
351201   -- No accrual reversal for the event class/type
351202   -----------------------------------------------
351203 ----------------------------------------------------------------
351204 
351205 --
351206 -- this ends the header loop iteration for one bulk fetch
351207 --
351208 END LOOP;
351209 
351210 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
351211 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
351212 
351213 --
351214 -- insert dummy rows into lines gt table that were created due to
351215 -- transaction reversals
351216 --
351217 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
351218    l_result := XLA_AE_LINES_PKG.InsertLines;
351219 END IF;
351220 
351221 --
351222 -- reset the temp_line_num for each set of events fetched from header
351223 -- cursor rather than doing it for each new event in line cursor
351224 -- Bug 3939231
351225 --
351226 xla_ae_lines_pkg.g_temp_line_num := 0;
351227 
351228 
351229 
351230 --
351231 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
351232 --
351233 --
351234 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
351235 
351236       trace
351237          (p_msg      => 'SQL - FETCH line_cur'
351238          ,p_level    => C_LEVEL_STATEMENT
351239          ,p_module   => l_log_module);
351240 
351241 END IF;
351242 --
351243 --
351244 LOOP
351245   --
351246   FETCH line_cur BULK COLLECT INTO
351247         l_array_entity_id
351248       , l_array_legal_entity_id
351249       , l_array_entity_code
351250       , l_array_transaction_num
351251       , l_array_event_id
351252       , l_array_class_code
351253       , l_array_event_type
351254       , l_array_event_number
351255       , l_array_event_date
351256       , l_array_transaction_date
351257       , l_array_reference_num_1
351258       , l_array_reference_num_2
351259       , l_array_reference_num_3
351260       , l_array_reference_num_4
351261       , l_array_reference_char_1
351262       , l_array_reference_char_2
351263       , l_array_reference_char_3
351264       , l_array_reference_char_4
351265       , l_array_reference_date_1
351266       , l_array_reference_date_2
351267       , l_array_reference_date_3
351268       , l_array_reference_date_4
351269       , l_array_event_created_by
351270       , l_array_budgetary_control_flag
351271       , l_array_extract_line_num 
351272       , l_array_source_11
351273       , l_array_source_78
351274       , l_array_source_84
351275       , l_array_source_91
351276       , l_array_source_95
351277       LIMIT l_rows;
351278 
351279   --
351280   IF (C_LEVEL_EVENT >= g_log_level) THEN
351281             trace
351282                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
351283                ,p_level    => C_LEVEL_EVENT
351284                ,p_module   => l_log_module);
351285   END IF;
351286   --
351287   EXIT WHEN l_array_entity_id.count = 0;
351288 
351289   XLA_AE_LINES_PKG.g_rec_lines := null;
351290 
351291 --
351292 -- Bug 4458708
351293 --
351294 XLA_AE_LINES_PKG.g_LineNumber := 0;
351295 --
351296 --
351297 
351298 FOR Idx IN 1..l_array_event_id.count LOOP
351299    --
351300    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
351301    --
351302    l_event_id := l_array_event_id(idx);  -- 5648433
351303 
351304    --
351305    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
351306    --
351307 
351308    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
351309              (g_array_event(l_event_id).array_value_num('header_index'))
351310          ,'N'
351311          ) <> 'Y'
351312    THEN
351313       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
351314          trace
351315             (p_msg      => 'Trancaction revesal option is not Y '
351316             ,p_level    => C_LEVEL_STATEMENT
351317             ,p_module   => l_log_module);
351318       END IF;
351319 
351320 --
351321 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
351322 --
351323 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
351324 --
351325 -- set event info as cache for other routines to refer event attributes
351326 --
351327 
351328 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
351329    l_previous_event_id := l_event_id;
351330 
351331    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
351332       (p_application_id           => p_application_id
351333       ,p_primary_ledger_id        => p_primary_ledger_id
351334       ,p_base_ledger_id           => p_base_ledger_id
351335       ,p_target_ledger_id         => p_target_ledger_id
351336       ,p_entity_id                => l_array_entity_id(Idx)
351337       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
351338       ,p_entity_code              => l_array_entity_code(Idx)
351339       ,p_transaction_num          => l_array_transaction_num(Idx)
351340       ,p_event_id                 => l_array_event_id(Idx)
351341       ,p_event_class_code         => l_array_class_code(Idx)
351342       ,p_event_type_code          => l_array_event_type(Idx)
351343       ,p_event_number             => l_array_event_number(Idx)
351344       ,p_event_date               => l_array_event_date(Idx)
351345       ,p_transaction_date         => l_array_transaction_date(Idx)
351346       ,p_reference_num_1          => l_array_reference_num_1(Idx)
351347       ,p_reference_num_2          => l_array_reference_num_2(Idx)
351348       ,p_reference_num_3          => l_array_reference_num_3(Idx)
351349       ,p_reference_num_4          => l_array_reference_num_4(Idx)
351350       ,p_reference_char_1         => l_array_reference_char_1(Idx)
351351       ,p_reference_char_2         => l_array_reference_char_2(Idx)
351352       ,p_reference_char_3         => l_array_reference_char_3(Idx)
351353       ,p_reference_char_4         => l_array_reference_char_4(Idx)
351354       ,p_reference_date_1         => l_array_reference_date_1(Idx)
351355       ,p_reference_date_2         => l_array_reference_date_2(Idx)
351356       ,p_reference_date_3         => l_array_reference_date_3(Idx)
351357       ,p_reference_date_4         => l_array_reference_date_4(Idx)
351358       ,p_event_created_by         => l_array_event_created_by(Idx)
351359       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
351360        --
351361 END IF;
351362 
351363 
351364 
351365 --
351366 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
351367 
351368 l_acct_reversal_source := SUBSTR(NULL, 1,30);
351369 
351370 IF l_continue_with_lines THEN
351371    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
351372       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
351373 
351374       xla_accounting_err_pkg.build_message
351375          (p_appli_s_name            => 'XLA'
351376          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
351377          ,p_token_1                 => 'LINE_NUMBER'
351378          ,p_value_1                 => l_array_extract_line_num(Idx)
351379          ,p_token_2                 => 'PRODUCT_NAME'
351380          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
351381          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
351382          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
351383          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
351384 
351385    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
351386       --
351387       -- following sets the accounting attributes needed to reverse
351388       -- accounting for a distributeion
351389       --
351390 
351391       --
351392       -- 5217187
351393       --
351394       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
351395       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
351396                                        g_array_event(l_event_id).array_value_num('header_index'));
351397       --
351398       --
351399 
351400       -- No reversal code generated
351401 
351402       xla_ae_lines_pkg.SetAcctReversalAttrs
351403          (p_event_id             => l_event_id
351404          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
351405          ,p_calculate_acctd_flag => l_calculate_acctd_flag
351406          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
351407    END IF;
351408 
351409    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
351410        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
351411 
351412 --
351413 AcctLineType_288 (
351414  p_application_id  => p_application_id
351415  ,p_event_id     => l_event_id
351416  ,p_calculate_acctd_flag => l_calculate_acctd_flag
351417  ,p_calculate_g_l_flag => l_calculate_g_l_flag
351418  ,p_actual_flag => l_actual_flag
351419  ,p_balance_type_code => l_balance_type_code
351420  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
351421  
351422  , p_source_11 => l_array_source_11(Idx)
351423  , p_source_78 => l_array_source_78(Idx)
351424  , p_source_84 => l_array_source_84(Idx)
351425  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
351426  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
351427  , p_source_91 => l_array_source_91(Idx)
351428  , p_source_95 => l_array_source_95(Idx)
351429  , p_source_105 => g_array_event(l_event_id).array_value_char('source_105')
351430  , p_source_106 => g_array_event(l_event_id).array_value_date('source_106')
351431  , p_source_107 => g_array_event(l_event_id).array_value_num('source_107')
351432  , p_source_109 => g_array_event(l_event_id).array_value_char('source_109')
351433  );
351434 If(l_balance_type_code = 'A') THEN
351435   l_actual_gain_loss_ref := l_gain_or_loss_ref;
351436 END IF;
351437 
351438 --
351439 
351440 
351441 --
351442 AcctLineType_502 (
351443  p_application_id  => p_application_id
351444  ,p_event_id     => l_event_id
351445  ,p_calculate_acctd_flag => l_calculate_acctd_flag
351446  ,p_calculate_g_l_flag => l_calculate_g_l_flag
351447  ,p_actual_flag => l_actual_flag
351448  ,p_balance_type_code => l_balance_type_code
351449  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
351450  
351451  , p_source_11 => l_array_source_11(Idx)
351452  , p_source_78 => l_array_source_78(Idx)
351453  , p_source_84 => l_array_source_84(Idx)
351454  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
351455  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
351456  , p_source_91 => l_array_source_91(Idx)
351457  , p_source_95 => l_array_source_95(Idx)
351458  , p_source_105 => g_array_event(l_event_id).array_value_char('source_105')
351459  , p_source_106 => g_array_event(l_event_id).array_value_date('source_106')
351460  , p_source_107 => g_array_event(l_event_id).array_value_num('source_107')
351461  , p_source_109 => g_array_event(l_event_id).array_value_char('source_109')
351462  );
351463 If(l_balance_type_code = 'A') THEN
351464   l_actual_gain_loss_ref := l_gain_or_loss_ref;
351465 END IF;
351466 
351467 --
351468 
351469       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
351470       -- or secondary ledger that has different currency with primary
351471       -- or alc that is calculated by sla
351472       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
351473             (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'))
351474 
351475 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
351476 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
351477           AND (l_actual_flag = 'A')) THEN
351478         XLA_AE_LINES_PKG.CreateGainOrLossLines(
351479           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
351480          ,p_application_id   => p_application_id
351481          ,p_amb_context_code => 'DEFAULT'
351482          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
351483          ,p_event_class_code => C_EVENT_CLASS_CODE
351484          ,p_event_type_code  => C_EVENT_TYPE_CODE
351485          
351486          ,p_gain_ccid        => -1
351487          ,p_loss_ccid        => -1
351488 
351489          ,p_actual_flag      => l_actual_flag
351490          ,p_enc_flag         => null
351491          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
351492          ,p_enc_g_l_ref      => null
351493          );
351494       END IF;
351495    END IF;
351496 END IF;
351497 
351498    ELSE
351499       --
351500       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
351501       --
351502       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
351503          trace
351504             (p_msg      => 'Trancaction revesal option is Y'
351505             ,p_level    => C_LEVEL_STATEMENT
351506             ,p_module   => l_log_module);
351507       END IF;
351508    END IF;
351509 
351510 END LOOP;
351511 l_result := XLA_AE_LINES_PKG.InsertLines ;
351512 end loop;
351513 close line_cur;
351514 
351515 
351516 --
351517 -- insert headers into xla_ae_headers_gt table
351518 --
351519 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
351520 
351521 -- insert into errors table here.
351522 
351523 END LOOP;
351524 
351525 --
351526 -- 4865292
351527 --
351528 -- Compare g_hdr_extract_count with event count in
351529 -- CreateHeadersAndLines.
351530 --
351531 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
351532 
351533 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
351534    trace (p_msg     => '# rows extracted from header extract objects '
351535                     || ' (running total): '
351536                     || g_hdr_extract_count
351537          ,p_level   => C_LEVEL_STATEMENT
351538          ,p_module  => l_log_module);
351539 END IF;
351540 
351541 CLOSE header_cur;
351542 --
351543 
351544 --
351545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
351546    trace
351547       (p_msg      => 'END of EventClass_573'
351548       ,p_level    => C_LEVEL_PROCEDURE
351549       ,p_module   => l_log_module);
351550 END IF;
351551 --
351552 RETURN l_result;
351553 EXCEPTION
351554 WHEN xla_exceptions_pkg.application_exception THEN
351555    
351556 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
351557 
351558    
351559 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
351560 
351561    RAISE;
351562 
351563 WHEN NO_DATA_FOUND THEN
351564 
351565 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
351566 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
351567 
351568 FOR header_record IN header_cur
351569 LOOP
351570     l_array_header_events(header_record.event_id) := header_record.event_id;
351571 END LOOP;
351572 
351573 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
351574 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
351575 
351576 fnd_file.put_line(fnd_file.LOG, '                    ');
351577 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
351578 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
351579 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
351580 
351581 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
351582 LOOP
351583 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
351584 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
351585         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
351586 	END IF;
351587 END LOOP;
351588 
351589 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
351590 fnd_file.put_line(fnd_file.LOG, '                    ');
351591 
351592 
351593 xla_exceptions_pkg.raise_message
351594       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_573');
351595 
351596 
351597 WHEN OTHERS THEN
351598    xla_exceptions_pkg.raise_message
351599       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_573');
351600 END EventClass_573;
351601 --
351602 
351603 ---------------------------------------
351604 --
351605 -- PRIVATE PROCEDURE
351606 --         insert_sources_574
351607 --
351608 ----------------------------------------
351609 --
351610 PROCEDURE insert_sources_574(
351611                                 p_target_ledger_id       IN NUMBER
351612                               , p_language               IN VARCHAR2
351613                               , p_sla_ledger_id          IN NUMBER
351614                               , p_pad_start_date         IN DATE
351615                               , p_pad_end_date           IN DATE
351616                          )
351617 IS
351618 
351619 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_RCPT_RETURN';
351620 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
351621 p_apps_owner                   VARCHAR2(30);
351622 l_log_module                   VARCHAR2(240);
351623 BEGIN
351624 IF g_log_enabled THEN
351625       l_log_module := C_DEFAULT_MODULE||'.insert_sources_574';
351626 END IF;
351627 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
351628 
351629       trace
351630          (p_msg      => 'BEGIN of insert_sources_574'
351631          ,p_level    => C_LEVEL_PROCEDURE
351632          ,p_module   => l_log_module);
351633 
351634 END IF;
351635 
351636 -- select APPS owner
351637 SELECT oracle_username
351638   INTO p_apps_owner
351639   FROM fnd_oracle_userid
351640  WHERE read_only_flag = 'U'
351641 ;
351642 
351643 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
351644       trace
351645          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
351646                         ' - p_language = '||p_language||
351647                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
351648                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
351649                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
351650                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
351651          ,p_level    => C_LEVEL_STATEMENT
351652          ,p_module   => l_log_module);
351653 END IF;
351654 
351655 
351656 --
351657 INSERT INTO xla_diag_sources --hdr1
351658 (
351659         event_id
351660       , ledger_id
351661       , sla_ledger_id
351662       , description_language
351663       , object_name
351664       , object_type_code
351665       , line_number
351666       , source_application_id
351667       , source_type_code
351668       , source_code
351669       , source_value
351670       , source_meaning
351671       , created_by
351672       , creation_date
351673       , last_update_date
351674       , last_updated_by
351675       , last_update_login
351676       , program_update_date
351677       , program_application_id
351678       , program_id
351679       , request_id
351680 )
351681 SELECT
351682         event_id
351683       , p_target_ledger_id
351684       , p_sla_ledger_id
351685       , p_language
351686       , object_name
351687       , object_type_code
351688       , line_number
351689       , source_application_id
351690       , source_type_code
351691       , source_code
351692       , SUBSTR(source_value ,1,1996)
351693       , SUBSTR(source_meaning,1,200)
351694       , xla_environment_pkg.g_Usr_Id
351695       , TRUNC(SYSDATE)
351696       , TRUNC(SYSDATE)
351697       , xla_environment_pkg.g_Usr_Id
351698       , xla_environment_pkg.g_Login_Id
351699       , TRUNC(SYSDATE)
351700       , xla_environment_pkg.g_Prog_Appl_Id
351701       , xla_environment_pkg.g_Prog_Id
351702       , xla_environment_pkg.g_Req_Id
351703   FROM (
351704        SELECT xet.event_id                  event_id
351705             , 0                             line_number
351706             , CASE r
351707                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
351708                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
351709                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
351710                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
351711                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
351712                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
351713                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
351714                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
351715                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
351716                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
351717                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
351718                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
351719                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
351720                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
351721                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
351722                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
351723                 
351724                ELSE null
351725               END                           object_name
351726             , CASE r
351727                 WHEN 1 THEN 'HEADER' 
351728                 WHEN 2 THEN 'HEADER' 
351729                 WHEN 3 THEN 'HEADER' 
351730                 WHEN 4 THEN 'HEADER' 
351731                 WHEN 5 THEN 'HEADER' 
351732                 WHEN 6 THEN 'HEADER' 
351733                 WHEN 7 THEN 'HEADER' 
351734                 WHEN 8 THEN 'HEADER' 
351735                 WHEN 9 THEN 'HEADER' 
351736                 WHEN 10 THEN 'HEADER' 
351737                 WHEN 11 THEN 'HEADER' 
351738                 WHEN 12 THEN 'HEADER' 
351739                 WHEN 13 THEN 'HEADER' 
351740                 WHEN 14 THEN 'HEADER' 
351741                 WHEN 15 THEN 'HEADER' 
351742                 WHEN 16 THEN 'HEADER' 
351743                 
351744                 ELSE null
351745               END                           object_type_code
351746             , CASE r
351747                 WHEN 1 THEN '707' 
351748                 WHEN 2 THEN '707' 
351749                 WHEN 3 THEN '707' 
351750                 WHEN 4 THEN '707' 
351751                 WHEN 5 THEN '707' 
351752                 WHEN 6 THEN '707' 
351753                 WHEN 7 THEN '707' 
351754                 WHEN 8 THEN '707' 
351755                 WHEN 9 THEN '707' 
351756                 WHEN 10 THEN '707' 
351757                 WHEN 11 THEN '707' 
351758                 WHEN 12 THEN '707' 
351759                 WHEN 13 THEN '707' 
351760                 WHEN 14 THEN '707' 
351761                 WHEN 15 THEN '707' 
351762                 WHEN 16 THEN '707' 
351763                 
351764                 ELSE null
351765               END                           source_application_id
351766             , 'S'             source_type_code
351767             , CASE r
351768                 WHEN 1 THEN 'TRANSACTION_ID' 
351769                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
351770                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
351771                 WHEN 4 THEN 'TRANSACTION_UOM' 
351772                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
351773                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
351774                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
351775                 WHEN 8 THEN 'PLA_EXPENSE_ACCOUNT' 
351776                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
351777                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
351778                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
351779                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
351780                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
351781                 WHEN 14 THEN 'TRANSACTION_ACTION_ID' 
351782                 WHEN 15 THEN 'DISTRIBUTION_TYPE' 
351783                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
351784                 
351785                 ELSE null
351786               END                           source_code
351787             , CASE r
351788                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
351789                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
351790                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
351791                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
351792                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
351793                 WHEN 6 THEN TO_CHAR(h3.INV_TXN_DISTRIBUTION_ACCT)
351794                 WHEN 7 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
351795                 WHEN 8 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
351796                 WHEN 9 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
351797                 WHEN 10 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
351798                 WHEN 11 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
351799                 WHEN 12 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
351800                 WHEN 13 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
351801                 WHEN 14 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
351802                 WHEN 15 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
351803                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
351804                 
351805                 ELSE null
351806               END                           source_value
351807             , CASE r
351808                 WHEN 14 THEN fvl62.meaning
351809                 WHEN 15 THEN fvl85.meaning
351810                 WHEN 16 THEN fvl114.meaning
351811                 
351812                 ELSE null
351813               END               source_meaning
351814         FROM xla_events_gt     xet  
351815       , CST_XLA_INV_HEADERS_V  h1
351816       , CST_XLA_INV_REF_V  h3
351817       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
351818       , CST_XLA_INV_TXN_TYPES_REF_V  h5
351819       , CST_XLA_PLA_CATEGORY_REF_V  h6
351820   , fnd_lookup_values    fvl62
351821   , fnd_lookup_values    fvl85
351822   , fnd_lookup_values    fvl114
351823             ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
351824        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
351825          AND xet.event_type_code = C_EVENT_TYPE_CODE
351826             AND h1.event_id = xet.event_id
351827  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
351828 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
351829 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
351830   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
351831   AND fvl62.view_application_id(+) = 700
351832   AND fvl62.language(+)            = USERENV('LANG')
351833      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
351834   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
351835   AND fvl85.view_application_id(+) = 700
351836   AND fvl85.language(+)            = USERENV('LANG')
351837      AND fvl114.lookup_type(+)         = 'YES_NO'
351838   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
351839   AND fvl114.view_application_id(+) = 0
351840   AND fvl114.language(+)            = USERENV('LANG')
351841   
351842 )
351843 ;
351844 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
351845 
351846       trace
351847          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
351848          ,p_level    => C_LEVEL_STATEMENT
351849          ,p_module   => l_log_module);
351850 
351851 END IF;
351852 --
351853 
351854 
351855 
351856 --
351857 INSERT INTO xla_diag_sources --line1
351858 (
351859         event_id
351860       , ledger_id
351861       , sla_ledger_id
351862       , description_language
351863       , object_name
351864       , object_type_code
351865       , line_number
351866       , source_application_id
351867       , source_type_code
351868       , source_code
351869       , source_value
351870       , source_meaning
351871       , created_by
351872       , creation_date
351873       , last_update_date
351874       , last_updated_by
351875       , last_update_login
351876       , program_update_date
351877       , program_application_id
351878       , program_id
351879       , request_id
351880 )
351881 SELECT  event_id
351882       , p_target_ledger_id
351883       , p_sla_ledger_id
351884       , p_language
351885       , object_name
351886       , object_type_code
351887       , line_number
351888       , source_application_id
351889       , source_type_code
351890       , source_code
351891       , SUBSTR(source_value,1,1996)
351892       , SUBSTR(source_meaning,1,200)
351893       , xla_environment_pkg.g_Usr_Id
351894       , TRUNC(SYSDATE)
351895       , TRUNC(SYSDATE)
351896       , xla_environment_pkg.g_Usr_Id
351897       , xla_environment_pkg.g_Login_Id
351898       , TRUNC(SYSDATE)
351899       , xla_environment_pkg.g_Prog_Appl_Id
351900       , xla_environment_pkg.g_Prog_Id
351901       , xla_environment_pkg.g_Req_Id
351902   FROM (
351903        SELECT xet.event_id                  event_id
351904             , l2.line_number                 line_number
351905             , CASE r
351906                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
351907                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
351908                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
351909                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
351910                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
351911                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
351912                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
351913                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
351914                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
351915                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
351916                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
351917                 
351918                ELSE null
351919               END                           object_name
351920             , CASE r
351921                 WHEN 1 THEN 'LINE' 
351922                 WHEN 2 THEN 'LINE' 
351923                 WHEN 3 THEN 'LINE' 
351924                 WHEN 4 THEN 'LINE' 
351925                 WHEN 5 THEN 'LINE' 
351926                 WHEN 6 THEN 'LINE' 
351927                 WHEN 7 THEN 'LINE' 
351928                 WHEN 8 THEN 'LINE' 
351929                 WHEN 9 THEN 'LINE' 
351930                 WHEN 10 THEN 'LINE' 
351931                 WHEN 11 THEN 'LINE' 
351932                 
351933                 ELSE null
351934               END                           object_type_code
351935             , CASE r
351936                 WHEN 1 THEN '707' 
351937                 WHEN 2 THEN '707' 
351938                 WHEN 3 THEN '707' 
351939                 WHEN 4 THEN '707' 
351940                 WHEN 5 THEN '707' 
351941                 WHEN 6 THEN '707' 
351942                 WHEN 7 THEN '707' 
351943                 WHEN 8 THEN '707' 
351944                 WHEN 9 THEN '707' 
351945                 WHEN 10 THEN '707' 
351946                 WHEN 11 THEN '707' 
351947                 
351948                 ELSE null
351949               END                           source_application_id
351950             , 'S'             source_type_code
351951             , CASE r
351952                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
351953                 WHEN 2 THEN 'COST_ELEMENT_ID' 
351954                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
351955                 WHEN 4 THEN 'CURRENCY_CODE' 
351956                 WHEN 5 THEN 'ENTERED_AMOUNT' 
351957                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
351958                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
351959                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
351960                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
351961                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
351962                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
351963                 
351964                 ELSE null
351965               END                           source_code
351966             , CASE r
351967                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
351968                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
351969                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
351970                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
351971                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
351972                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
351973                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
351974                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
351975                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
351976                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
351977                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
351978                 
351979                 ELSE null
351980               END                           source_value
351981             , CASE r
351982                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
351983                           1009615
351984                          ,TO_CHAR(l2.COST_ELEMENT_ID)
351985                          ,'COST_ELEMENT_ID'
351986                          ,'S'
351987                          ,707)
351988                 
351989                 ELSE null
351990               END               source_meaning
351991          FROM  xla_events_gt     xet  
351992         , CST_XLA_INV_LINES_V  l2
351993             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
351994         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
351995           AND xet.event_type_code = C_EVENT_TYPE_CODE
351996             AND l2.event_id          = xet.event_id
351997 
351998 )
351999 ;
352000 --
352001 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
352002 
352003       trace
352004          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
352005          ,p_level    => C_LEVEL_STATEMENT
352006          ,p_module   => l_log_module);
352007 
352008 END IF;
352009 
352010 
352011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
352012       trace
352013          (p_msg      => 'END of insert_sources_574'
352014          ,p_level    => C_LEVEL_PROCEDURE
352015          ,p_module   => l_log_module);
352016 END IF;
352017 EXCEPTION
352018   WHEN xla_exceptions_pkg.application_exception THEN
352019       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
352020             trace
352021                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
352022                ,p_level    => C_LEVEL_EXCEPTION
352023                ,p_module   => l_log_module);
352024       END IF;
352025       RAISE;
352026   WHEN OTHERS THEN
352027       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
352028             trace
352029                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
352030                ,p_level    => C_LEVEL_EXCEPTION
352031                ,p_module   => l_log_module);
352032        END IF;
352033        xla_exceptions_pkg.raise_message
352034            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_574');
352035 END insert_sources_574;
352036 --
352037 
352038 ---------------------------------------
352039 --
352040 -- PRIVATE FUNCTION
352041 --         EventType_574
352042 --
352043 ----------------------------------------
352044 --
352045 FUNCTION EventType_574
352046        (p_application_id         IN NUMBER
352047        ,p_base_ledger_id         IN NUMBER
352048        ,p_target_ledger_id       IN NUMBER
352049        ,p_language               IN VARCHAR2
352050        ,p_currency_code          IN VARCHAR2
352051        ,p_sla_ledger_id          IN NUMBER
352052        ,p_pad_start_date         IN DATE
352053        ,p_pad_end_date           IN DATE
352054        ,p_primary_ledger_id      IN NUMBER)
352055 RETURN BOOLEAN IS
352056 --
352057 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_RCPT_RETURN';
352058 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
352059 
352060 l_calculate_acctd_flag   VARCHAR2(1) :='N';
352061 l_calculate_g_l_flag     VARCHAR2(1) :='N';
352062 --
352063 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352064 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352065 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
352066 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
352067 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352068 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
352069 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
352070 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352071 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
352072 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
352073 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352074 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352075 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352076 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
352077 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
352078 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
352079 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
352080 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
352081 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
352082 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
352083 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
352084 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
352085 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
352086 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
352087 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
352088 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
352089 
352090 l_event_id                             NUMBER;
352091 l_previous_event_id                    NUMBER;
352092 l_first_event_id                       NUMBER;
352093 l_last_event_id                        NUMBER;
352094 
352095 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
352096 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
352097 --
352098 --
352099 l_result                    BOOLEAN := TRUE;
352100 l_rows                      NUMBER  := 1000;
352101 l_event_type_name           VARCHAR2(80) := 'Logical Intercompany Receipt Return';
352102 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
352103 l_description               VARCHAR2(4000);
352104 l_transaction_reversal      NUMBER;
352105 l_ae_header_id              NUMBER;
352106 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
352107 l_log_module                VARCHAR2(240);
352108 --
352109 l_acct_reversal_source      VARCHAR2(30);
352110 l_trx_reversal_source       VARCHAR2(30);
352111 
352112 l_continue_with_lines       BOOLEAN := TRUE;
352113 --
352114 l_acc_rev_gl_date_source    DATE;                      -- 4262811
352115 --
352116 type t_array_event_id is table of number index by binary_integer;
352117 
352118 l_rec_array_event                    t_rec_array_event;
352119 l_null_rec_array_event               t_rec_array_event;
352120 l_array_ae_header_id                 xla_number_array_type;
352121 l_actual_flag                        VARCHAR2(1) := NULL;
352122 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
352123 l_balance_type_code                  VARCHAR2(1) :=NULL;
352124 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
352125 
352126 --
352127 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
352128 --
352129 
352130 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
352131 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
352132 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
352133 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
352134 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
352135 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
352136 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
352137 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
352138 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
352139 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
352140 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
352141 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
352142 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
352143 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
352144 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
352145 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
352146 
352147 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
352148 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
352149 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
352150 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
352151 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
352152 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
352153 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
352154 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
352155 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
352156 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
352157 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
352158 
352159 l_array_source_1              t_array_source_1;
352160 l_array_source_2              t_array_source_2;
352161 l_array_source_3              t_array_source_3;
352162 l_array_source_4              t_array_source_4;
352163 l_array_source_5              t_array_source_5;
352164 l_array_source_20              t_array_source_20;
352165 l_array_source_22              t_array_source_22;
352166 l_array_source_24              t_array_source_24;
352167 l_array_source_41              t_array_source_41;
352168 l_array_source_42              t_array_source_42;
352169 l_array_source_43              t_array_source_43;
352170 l_array_source_44              t_array_source_44;
352171 l_array_source_45              t_array_source_45;
352172 l_array_source_62              t_array_source_62;
352173 l_array_source_62_meaning      t_array_lookup_meaning;
352174 l_array_source_85              t_array_source_85;
352175 l_array_source_85_meaning      t_array_lookup_meaning;
352176 l_array_source_114              t_array_source_114;
352177 l_array_source_114_meaning      t_array_lookup_meaning;
352178 
352179 l_array_source_11      t_array_source_11;
352180 l_array_source_15      t_array_source_15;
352181 l_array_source_84      t_array_source_84;
352182 l_array_source_88      t_array_source_88;
352183 l_array_source_91      t_array_source_91;
352184 l_array_source_92      t_array_source_92;
352185 l_array_source_93      t_array_source_93;
352186 l_array_source_94      t_array_source_94;
352187 l_array_source_95      t_array_source_95;
352188 l_array_source_97      t_array_source_97;
352189 l_array_source_108      t_array_source_108;
352190 
352191 --
352192 CURSOR header_cur
352193 IS
352194 SELECT /*+ leading(xet) cardinality(xet,1) */
352195 -- Event Type Code: LOG_IC_RCPT_RETURN
352196 -- Event Class Code: LOG_INTERCOMPANY
352197     xet.entity_id
352198   , xet.legal_entity_id
352199   , xet.entity_code
352200   , xet.transaction_number
352201   , xet.event_id
352202   , xet.event_class_code
352203   , xet.event_type_code
352204   , xet.event_number
352205   , xet.event_date
352206   , xet.transaction_date
352207   , xet.reference_num_1
352208   , xet.reference_num_2
352209   , xet.reference_num_3
352210   , xet.reference_num_4
352211   , xet.reference_char_1
352212   , xet.reference_char_2
352213   , xet.reference_char_3
352214   , xet.reference_char_4
352215   , xet.reference_date_1
352216   , xet.reference_date_2
352217   , xet.reference_date_3
352218   , xet.reference_date_4
352219   , xet.event_created_by
352220   , xet.budgetary_control_flag 
352221   , h1.TRANSACTION_ID    source_1
352222   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
352223   , h3.TRANSACTION_QUANTITY    source_3
352224   , h3.TRANSACTION_UOM    source_4
352225   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
352226   , h3.INV_TXN_DISTRIBUTION_ACCT    source_20
352227   , h6.PLA_BRIDGING_ACCOUNT    source_22
352228   , h6.PLA_EXPENSE_ACCOUNT    source_24
352229   , h6.PLA_MATERIAL_ACCOUNT    source_41
352230   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
352231   , h6.PLA_RESOURCE_ACCOUNT    source_43
352232   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
352233   , h6.PLA_OVERHEAD_ACCOUNT    source_45
352234   , h1.TRANSACTION_ACTION_ID    source_62
352235   , fvl62.meaning   source_62_meaning
352236   , h1.DISTRIBUTION_TYPE    source_85
352237   , fvl85.meaning   source_85_meaning
352238   , h1.TRANSFER_TO_GL_INDICATOR    source_114
352239   , fvl114.meaning   source_114_meaning
352240   FROM xla_events_gt     xet 
352241   , CST_XLA_INV_HEADERS_V  h1
352242   , CST_XLA_INV_REF_V  h3
352243   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
352244   , CST_XLA_INV_TXN_TYPES_REF_V  h5
352245   , CST_XLA_PLA_CATEGORY_REF_V  h6
352246   , fnd_lookup_values    fvl62
352247   , fnd_lookup_values    fvl85
352248   , fnd_lookup_values    fvl114
352249  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
352250    and xet.event_type_code = C_EVENT_TYPE_CODE
352251    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
352252  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
352253 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
352254 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
352255   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
352256   AND fvl62.view_application_id(+) = 700
352257   AND fvl62.language(+)            = USERENV('LANG')
352258      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
352259   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
352260   AND fvl85.view_application_id(+) = 700
352261   AND fvl85.language(+)            = USERENV('LANG')
352262      AND fvl114.lookup_type(+)         = 'YES_NO'
352263   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
352264   AND fvl114.view_application_id(+) = 0
352265   AND fvl114.language(+)            = USERENV('LANG')
352266   
352267  ORDER BY event_id
352268 ;
352269 
352270 
352271 --
352272 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
352273 IS
352274 SELECT /*+ leading(xet) cardinality(xet,1) */
352275 -- Event Type Code: LOG_IC_RCPT_RETURN
352276 -- Event Class Code: LOG_INTERCOMPANY
352277     xet.entity_id
352278    ,xet.legal_entity_id
352279    ,xet.entity_code
352280    ,xet.transaction_number
352281    ,xet.event_id
352282    ,xet.event_class_code
352283    ,xet.event_type_code
352284    ,xet.event_number
352285    ,xet.event_date
352286    ,xet.transaction_date
352287    ,xet.reference_num_1
352288    ,xet.reference_num_2
352289    ,xet.reference_num_3
352290    ,xet.reference_num_4
352291    ,xet.reference_char_1
352292    ,xet.reference_char_2
352293    ,xet.reference_char_3
352294    ,xet.reference_char_4
352295    ,xet.reference_date_1
352296    ,xet.reference_date_2
352297    ,xet.reference_date_3
352298    ,xet.reference_date_4
352299    ,xet.event_created_by
352300    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
352301   , l2.CODE_COMBINATION_ID    source_11
352302   , l2.COST_ELEMENT_ID    source_15
352303   , l2.DISTRIBUTION_IDENTIFIER    source_84
352304   , l2.CURRENCY_CODE    source_88
352305   , l2.ENTERED_AMOUNT    source_91
352306   , l2.CURRENCY_CONVERSION_DATE    source_92
352307   , l2.CURRENCY_CONVERSION_RATE    source_93
352308   , l2.CURRENCY_CONVERSION_TYPE    source_94
352309   , l2.ACCOUNTED_AMOUNT    source_95
352310   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
352311   , l2.L_ORGANIZATION_CODE    source_108
352312   FROM xla_events_gt     xet 
352313   , CST_XLA_INV_LINES_V  l2
352314  WHERE xet.event_id between x_first_event_id and x_last_event_id
352315    and xet.event_date between p_pad_start_date and p_pad_end_date
352316    and xet.event_type_code = C_EVENT_TYPE_CODE
352317    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
352318 ;
352319 
352320 --
352321 BEGIN
352322 IF g_log_enabled THEN
352323    l_log_module := C_DEFAULT_MODULE||'.EventType_574';
352324 END IF;
352325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
352326    trace
352327       (p_msg      => 'BEGIN of EventType_574'
352328       ,p_level    => C_LEVEL_PROCEDURE
352329       ,p_module   => l_log_module);
352330 END IF;
352331 
352332 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
352333    trace
352334       (p_msg      => 'p_application_id = '||p_application_id||
352335                      ' - p_base_ledger_id = '||p_base_ledger_id||
352336                      ' - p_target_ledger_id  = '||p_target_ledger_id||
352337                      ' - p_language = '||p_language||
352338                      ' - p_currency_code = '||p_currency_code||
352339                      ' - p_sla_ledger_id = '||p_sla_ledger_id
352340       ,p_level    => C_LEVEL_STATEMENT
352341       ,p_module   => l_log_module);
352342 END IF;
352343 --
352344 -- initialze arrays
352345 --
352346 g_array_event.DELETE;
352347 l_rec_array_event := l_null_rec_array_event;
352348 --
352349 --------------------------------------
352350 -- 4262811 Initialze MPA Line Number
352351 --------------------------------------
352352 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
352353 
352354 --
352355 
352356 --
352357 OPEN header_cur;
352358 --
352359 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
352360    trace
352361    (p_msg      => 'SQL - FETCH header_cur'
352362    ,p_level    => C_LEVEL_STATEMENT
352363    ,p_module   => l_log_module);
352364 END IF;
352365 --
352366 LOOP
352367 FETCH header_cur BULK COLLECT INTO
352368         l_array_entity_id
352369       , l_array_legal_entity_id
352370       , l_array_entity_code
352371       , l_array_transaction_num
352372       , l_array_event_id
352373       , l_array_class_code
352374       , l_array_event_type
352375       , l_array_event_number
352376       , l_array_event_date
352377       , l_array_transaction_date
352378       , l_array_reference_num_1
352379       , l_array_reference_num_2
352380       , l_array_reference_num_3
352381       , l_array_reference_num_4
352382       , l_array_reference_char_1
352383       , l_array_reference_char_2
352384       , l_array_reference_char_3
352385       , l_array_reference_char_4
352386       , l_array_reference_date_1
352387       , l_array_reference_date_2
352388       , l_array_reference_date_3
352389       , l_array_reference_date_4
352390       , l_array_event_created_by
352391       , l_array_budgetary_control_flag 
352392       , l_array_source_1
352393       , l_array_source_2
352394       , l_array_source_3
352395       , l_array_source_4
352396       , l_array_source_5
352397       , l_array_source_20
352398       , l_array_source_22
352399       , l_array_source_24
352400       , l_array_source_41
352401       , l_array_source_42
352402       , l_array_source_43
352403       , l_array_source_44
352404       , l_array_source_45
352405       , l_array_source_62
352406       , l_array_source_62_meaning
352407       , l_array_source_85
352408       , l_array_source_85_meaning
352409       , l_array_source_114
352410       , l_array_source_114_meaning
352411       LIMIT l_rows;
352412 --
352413 IF (C_LEVEL_EVENT >= g_log_level) THEN
352414    trace
352415    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
352416    ,p_level    => C_LEVEL_EVENT
352417    ,p_module   => l_log_module);
352418 END IF;
352419 --
352420 EXIT WHEN l_array_entity_id.COUNT = 0;
352421 
352422 -- initialize arrays
352423 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
352424 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
352425 
352426 --
352427 -- Bug 4458708
352428 --
352429 XLA_AE_LINES_PKG.g_LineNumber := 0;
352430 
352431 
352432 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
352433 g_last_hdr_idx := l_array_event_id.LAST;
352434 --
352435 -- loop for the headers. Each iteration is for each header extract row
352436 -- fetched in header cursor
352437 --
352438 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
352439 
352440 --
352441 -- set event info as cache for other routines to refer event attributes
352442 --
352443 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
352444    (p_application_id           => p_application_id
352445    ,p_primary_ledger_id        => p_primary_ledger_id
352446    ,p_base_ledger_id           => p_base_ledger_id
352447    ,p_target_ledger_id         => p_target_ledger_id
352448    ,p_entity_id                => l_array_entity_id(hdr_idx)
352449    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
352450    ,p_entity_code              => l_array_entity_code(hdr_idx)
352451    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
352452    ,p_event_id                 => l_array_event_id(hdr_idx)
352453    ,p_event_class_code         => l_array_class_code(hdr_idx)
352454    ,p_event_type_code          => l_array_event_type(hdr_idx)
352455    ,p_event_number             => l_array_event_number(hdr_idx)
352456    ,p_event_date               => l_array_event_date(hdr_idx)
352457    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
352458    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
352459    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
352460    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
352461    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
352462    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
352463    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
352464    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
352465    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
352466    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
352467    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
352468    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
352469    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
352470    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
352471    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
352472 
352473 --
352474 -- set the status of entry to C_VALID (0)
352475 --
352476 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
352477 
352478 --
352479 -- initialize a row for ae header
352480 --
352481 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
352482 
352483 l_event_id := l_array_event_id(hdr_idx);
352484 
352485 --
352486 -- storing the hdr_idx for event. May be used by line cursor.
352487 --
352488 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
352489 
352490 --
352491 -- store sources from header extract. This can be improved to
352492 -- store only those sources from header extract that may be used in lines
352493 --
352494 
352495 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
352496 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
352497 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
352498 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
352499 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
352500 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
352501 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
352502 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
352503 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
352504 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
352505 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
352506 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
352507 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
352508 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
352509 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
352510 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
352511 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
352512 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
352513 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
352514 
352515 --
352516 -- initilaize the status of ae headers for diffrent balance types
352517 -- the status is initialised to C_NOT_CREATED (2)
352518 --
352519 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
352520 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
352521 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
352522 
352523 --
352524 -- call api to validate and store accounting attributes for header
352525 --
352526 
352527 ------------------------------------------------------------
352528 -- Accrual Reversal : to get date for Standard Source (NONE)
352529 ------------------------------------------------------------
352530 l_acc_rev_gl_date_source := NULL;
352531 
352532      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
352533       l_rec_acct_attrs.array_date_value(1) := 
352534 xla_ae_sources_pkg.GetSystemSourceDate(
352535    p_source_code           => 'XLA_REFERENCE_DATE_1'
352536  , p_source_type_code      => 'Y'
352537  , p_source_application_id =>  602
352538 );
352539      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
352540       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
352541 
352542 
352543 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
352544 
352545 XLA_AE_HEADER_PKG.SetJeCategoryName;
352546 
352547 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
352548 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
352549 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
352550 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
352551 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
352552 
352553 
352554 --
352555 xla_ae_header_pkg.SetHdrDescription(
352556    p_description => Description_1 (
352557    p_application_id => p_application_id 
352558  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
352559  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
352560  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
352561  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
352562  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
352563    )
352564 );
352565 --
352566 
352567 -- No header level analytical criteria
352568 
352569 --
352570 --accounting attribute enhancement, bug 3612931
352571 --
352572 l_trx_reversal_source := SUBSTR(NULL, 1,30);
352573 
352574 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
352575    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
352576 
352577    xla_accounting_err_pkg.build_message
352578       (p_appli_s_name            => 'XLA'
352579       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
352580       ,p_token_1                 => 'ACCT_ATTR_NAME'
352581       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
352582       ,p_token_2                 => 'PRODUCT_NAME'
352583       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
352584       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
352585       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
352586       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
352587 
352588 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
352589    --
352590    -- following sets the accounting attributes needed to reverse
352591    -- accounting for a distributeion
352592    --
352593    xla_ae_lines_pkg.SetTrxReversalAttrs
352594       (p_event_id              => l_event_id
352595       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
352596       ,p_trx_reversal_source   => l_trx_reversal_source);
352597 
352598 END IF;
352599 
352600 
352601 ----------------------------------------------------------------
352602 -- 4262811 -  update the header statuses to invalid in need be
352603 ----------------------------------------------------------------
352604 --
352605 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
352606 
352607 
352608   -----------------------------------------------
352609   -- No accrual reversal for the event class/type
352610   -----------------------------------------------
352611 ----------------------------------------------------------------
352612 
352613 --
352614 -- this ends the header loop iteration for one bulk fetch
352615 --
352616 END LOOP;
352617 
352618 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
352619 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
352620 
352621 --
352622 -- insert dummy rows into lines gt table that were created due to
352623 -- transaction reversals
352624 --
352625 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
352626    l_result := XLA_AE_LINES_PKG.InsertLines;
352627 END IF;
352628 
352629 --
352630 -- reset the temp_line_num for each set of events fetched from header
352631 -- cursor rather than doing it for each new event in line cursor
352632 -- Bug 3939231
352633 --
352634 xla_ae_lines_pkg.g_temp_line_num := 0;
352635 
352636 
352637 
352638 --
352639 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
352640 --
352641 --
352642 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
352643 
352644       trace
352645          (p_msg      => 'SQL - FETCH line_cur'
352646          ,p_level    => C_LEVEL_STATEMENT
352647          ,p_module   => l_log_module);
352648 
352649 END IF;
352650 --
352651 --
352652 LOOP
352653   --
352654   FETCH line_cur BULK COLLECT INTO
352655         l_array_entity_id
352656       , l_array_legal_entity_id
352657       , l_array_entity_code
352658       , l_array_transaction_num
352659       , l_array_event_id
352660       , l_array_class_code
352661       , l_array_event_type
352662       , l_array_event_number
352663       , l_array_event_date
352664       , l_array_transaction_date
352665       , l_array_reference_num_1
352666       , l_array_reference_num_2
352667       , l_array_reference_num_3
352668       , l_array_reference_num_4
352669       , l_array_reference_char_1
352670       , l_array_reference_char_2
352671       , l_array_reference_char_3
352672       , l_array_reference_char_4
352673       , l_array_reference_date_1
352674       , l_array_reference_date_2
352675       , l_array_reference_date_3
352676       , l_array_reference_date_4
352677       , l_array_event_created_by
352678       , l_array_budgetary_control_flag
352679       , l_array_extract_line_num 
352680       , l_array_source_11
352681       , l_array_source_15
352682       , l_array_source_84
352683       , l_array_source_88
352684       , l_array_source_91
352685       , l_array_source_92
352686       , l_array_source_93
352687       , l_array_source_94
352688       , l_array_source_95
352689       , l_array_source_97
352690       , l_array_source_108
352691       LIMIT l_rows;
352692 
352693   --
352694   IF (C_LEVEL_EVENT >= g_log_level) THEN
352695             trace
352696                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
352697                ,p_level    => C_LEVEL_EVENT
352698                ,p_module   => l_log_module);
352699   END IF;
352700   --
352701   EXIT WHEN l_array_entity_id.count = 0;
352702 
352703   XLA_AE_LINES_PKG.g_rec_lines := null;
352704 
352705 --
352706 -- Bug 4458708
352707 --
352708 XLA_AE_LINES_PKG.g_LineNumber := 0;
352709 --
352710 --
352711 
352712 FOR Idx IN 1..l_array_event_id.count LOOP
352713    --
352714    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
352715    --
352716    l_event_id := l_array_event_id(idx);  -- 5648433
352717 
352718    --
352719    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
352720    --
352721 
352722    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
352723              (g_array_event(l_event_id).array_value_num('header_index'))
352724          ,'N'
352725          ) <> 'Y'
352726    THEN
352727       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
352728          trace
352729             (p_msg      => 'Trancaction revesal option is not Y '
352730             ,p_level    => C_LEVEL_STATEMENT
352731             ,p_module   => l_log_module);
352732       END IF;
352733 
352734 --
352735 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
352736 --
352737 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
352738 --
352739 -- set event info as cache for other routines to refer event attributes
352740 --
352741 
352742 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
352743    l_previous_event_id := l_event_id;
352744 
352745    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
352746       (p_application_id           => p_application_id
352747       ,p_primary_ledger_id        => p_primary_ledger_id
352748       ,p_base_ledger_id           => p_base_ledger_id
352749       ,p_target_ledger_id         => p_target_ledger_id
352750       ,p_entity_id                => l_array_entity_id(Idx)
352751       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
352752       ,p_entity_code              => l_array_entity_code(Idx)
352753       ,p_transaction_num          => l_array_transaction_num(Idx)
352754       ,p_event_id                 => l_array_event_id(Idx)
352755       ,p_event_class_code         => l_array_class_code(Idx)
352756       ,p_event_type_code          => l_array_event_type(Idx)
352757       ,p_event_number             => l_array_event_number(Idx)
352758       ,p_event_date               => l_array_event_date(Idx)
352759       ,p_transaction_date         => l_array_transaction_date(Idx)
352760       ,p_reference_num_1          => l_array_reference_num_1(Idx)
352761       ,p_reference_num_2          => l_array_reference_num_2(Idx)
352762       ,p_reference_num_3          => l_array_reference_num_3(Idx)
352763       ,p_reference_num_4          => l_array_reference_num_4(Idx)
352764       ,p_reference_char_1         => l_array_reference_char_1(Idx)
352765       ,p_reference_char_2         => l_array_reference_char_2(Idx)
352766       ,p_reference_char_3         => l_array_reference_char_3(Idx)
352767       ,p_reference_char_4         => l_array_reference_char_4(Idx)
352768       ,p_reference_date_1         => l_array_reference_date_1(Idx)
352769       ,p_reference_date_2         => l_array_reference_date_2(Idx)
352770       ,p_reference_date_3         => l_array_reference_date_3(Idx)
352771       ,p_reference_date_4         => l_array_reference_date_4(Idx)
352772       ,p_event_created_by         => l_array_event_created_by(Idx)
352773       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
352774        --
352775 END IF;
352776 
352777 
352778 
352779 --
352780 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
352781 
352782 l_acct_reversal_source := SUBSTR(NULL, 1,30);
352783 
352784 IF l_continue_with_lines THEN
352785    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
352786       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
352787 
352788       xla_accounting_err_pkg.build_message
352789          (p_appli_s_name            => 'XLA'
352790          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
352791          ,p_token_1                 => 'LINE_NUMBER'
352792          ,p_value_1                 => l_array_extract_line_num(Idx)
352793          ,p_token_2                 => 'PRODUCT_NAME'
352794          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
352795          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
352796          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
352797          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
352798 
352799    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
352800       --
352801       -- following sets the accounting attributes needed to reverse
352802       -- accounting for a distributeion
352803       --
352804 
352805       --
352806       -- 5217187
352807       --
352808       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
352809       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
352810                                        g_array_event(l_event_id).array_value_num('header_index'));
352811       --
352812       --
352813 
352814       -- No reversal code generated
352815 
352816       xla_ae_lines_pkg.SetAcctReversalAttrs
352817          (p_event_id             => l_event_id
352818          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
352819          ,p_calculate_acctd_flag => l_calculate_acctd_flag
352820          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
352821    END IF;
352822 
352823    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
352824        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
352825 
352826 --
352827 AcctLineType_51 (
352828  p_application_id  => p_application_id
352829  ,p_event_id     => l_event_id
352830  ,p_calculate_acctd_flag => l_calculate_acctd_flag
352831  ,p_calculate_g_l_flag => l_calculate_g_l_flag
352832  ,p_actual_flag => l_actual_flag
352833  ,p_balance_type_code => l_balance_type_code
352834  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
352835  
352836  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
352837  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
352838  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
352839  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
352840  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
352841  , p_source_11 => l_array_source_11(Idx)
352842  , p_source_84 => l_array_source_84(Idx)
352843  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
352844  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
352845  , p_source_88 => l_array_source_88(Idx)
352846  , p_source_91 => l_array_source_91(Idx)
352847  , p_source_92 => l_array_source_92(Idx)
352848  , p_source_93 => l_array_source_93(Idx)
352849  , p_source_94 => l_array_source_94(Idx)
352850  , p_source_95 => l_array_source_95(Idx)
352851  , p_source_97 => l_array_source_97(Idx)
352852  );
352853 If(l_balance_type_code = 'A') THEN
352854   l_actual_gain_loss_ref := l_gain_or_loss_ref;
352855 END IF;
352856 
352857 --
352858 
352859 
352860 --
352861 AcctLineType_128 (
352862  p_application_id  => p_application_id
352863  ,p_event_id     => l_event_id
352864  ,p_calculate_acctd_flag => l_calculate_acctd_flag
352865  ,p_calculate_g_l_flag => l_calculate_g_l_flag
352866  ,p_actual_flag => l_actual_flag
352867  ,p_balance_type_code => l_balance_type_code
352868  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
352869  
352870  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
352871  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
352872  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
352873  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
352874  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
352875  , p_source_11 => l_array_source_11(Idx)
352876  , p_source_84 => l_array_source_84(Idx)
352877  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
352878  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
352879  , p_source_88 => l_array_source_88(Idx)
352880  , p_source_91 => l_array_source_91(Idx)
352881  , p_source_92 => l_array_source_92(Idx)
352882  , p_source_93 => l_array_source_93(Idx)
352883  , p_source_94 => l_array_source_94(Idx)
352884  , p_source_95 => l_array_source_95(Idx)
352885  , p_source_97 => l_array_source_97(Idx)
352886  );
352887 If(l_balance_type_code = 'A') THEN
352888   l_actual_gain_loss_ref := l_gain_or_loss_ref;
352889 END IF;
352890 
352891 --
352892 
352893 
352894 --
352895 AcctLineType_138 (
352896  p_application_id  => p_application_id
352897  ,p_event_id     => l_event_id
352898  ,p_calculate_acctd_flag => l_calculate_acctd_flag
352899  ,p_calculate_g_l_flag => l_calculate_g_l_flag
352900  ,p_actual_flag => l_actual_flag
352901  ,p_balance_type_code => l_balance_type_code
352902  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
352903  
352904  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
352905  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
352906  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
352907  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
352908  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
352909  , p_source_11 => l_array_source_11(Idx)
352910  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
352911  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
352912  , p_source_84 => l_array_source_84(Idx)
352913  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
352914  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
352915  , p_source_88 => l_array_source_88(Idx)
352916  , p_source_91 => l_array_source_91(Idx)
352917  , p_source_92 => l_array_source_92(Idx)
352918  , p_source_93 => l_array_source_93(Idx)
352919  , p_source_94 => l_array_source_94(Idx)
352920  , p_source_95 => l_array_source_95(Idx)
352921  , p_source_97 => l_array_source_97(Idx)
352922  );
352923 If(l_balance_type_code = 'A') THEN
352924   l_actual_gain_loss_ref := l_gain_or_loss_ref;
352925 END IF;
352926 
352927 --
352928 
352929 
352930 --
352931 AcctLineType_278 (
352932  p_application_id  => p_application_id
352933  ,p_event_id     => l_event_id
352934  ,p_calculate_acctd_flag => l_calculate_acctd_flag
352935  ,p_calculate_g_l_flag => l_calculate_g_l_flag
352936  ,p_actual_flag => l_actual_flag
352937  ,p_balance_type_code => l_balance_type_code
352938  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
352939  
352940  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
352941  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
352942  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
352943  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
352944  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
352945  , p_source_15 => l_array_source_15(Idx)
352946  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
352947  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
352948  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
352949  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
352950  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
352951  , p_source_84 => l_array_source_84(Idx)
352952  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
352953  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
352954  , p_source_88 => l_array_source_88(Idx)
352955  , p_source_91 => l_array_source_91(Idx)
352956  , p_source_92 => l_array_source_92(Idx)
352957  , p_source_93 => l_array_source_93(Idx)
352958  , p_source_94 => l_array_source_94(Idx)
352959  , p_source_95 => l_array_source_95(Idx)
352960  , p_source_97 => l_array_source_97(Idx)
352961  , p_source_108 => l_array_source_108(Idx)
352962  );
352963 If(l_balance_type_code = 'A') THEN
352964   l_actual_gain_loss_ref := l_gain_or_loss_ref;
352965 END IF;
352966 
352967 --
352968 
352969 
352970 --
352971 AcctLineType_349 (
352972  p_application_id  => p_application_id
352973  ,p_event_id     => l_event_id
352974  ,p_calculate_acctd_flag => l_calculate_acctd_flag
352975  ,p_calculate_g_l_flag => l_calculate_g_l_flag
352976  ,p_actual_flag => l_actual_flag
352977  ,p_balance_type_code => l_balance_type_code
352978  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
352979  
352980  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
352981  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
352982  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
352983  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
352984  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
352985  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
352986  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
352987  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
352988  , p_source_84 => l_array_source_84(Idx)
352989  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
352990  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
352991  , p_source_88 => l_array_source_88(Idx)
352992  , p_source_91 => l_array_source_91(Idx)
352993  , p_source_92 => l_array_source_92(Idx)
352994  , p_source_93 => l_array_source_93(Idx)
352995  , p_source_94 => l_array_source_94(Idx)
352996  , p_source_95 => l_array_source_95(Idx)
352997  , p_source_97 => l_array_source_97(Idx)
352998  );
352999 If(l_balance_type_code = 'A') THEN
353000   l_actual_gain_loss_ref := l_gain_or_loss_ref;
353001 END IF;
353002 
353003 --
353004 
353005 
353006 --
353007 AcctLineType_401 (
353008  p_application_id  => p_application_id
353009  ,p_event_id     => l_event_id
353010  ,p_calculate_acctd_flag => l_calculate_acctd_flag
353011  ,p_calculate_g_l_flag => l_calculate_g_l_flag
353012  ,p_actual_flag => l_actual_flag
353013  ,p_balance_type_code => l_balance_type_code
353014  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
353015  
353016  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
353017  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
353018  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
353019  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
353020  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
353021  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
353022  , p_source_84 => l_array_source_84(Idx)
353023  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
353024  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
353025  , p_source_88 => l_array_source_88(Idx)
353026  , p_source_91 => l_array_source_91(Idx)
353027  , p_source_92 => l_array_source_92(Idx)
353028  , p_source_93 => l_array_source_93(Idx)
353029  , p_source_94 => l_array_source_94(Idx)
353030  , p_source_95 => l_array_source_95(Idx)
353031  , p_source_97 => l_array_source_97(Idx)
353032  );
353033 If(l_balance_type_code = 'A') THEN
353034   l_actual_gain_loss_ref := l_gain_or_loss_ref;
353035 END IF;
353036 
353037 --
353038 
353039 
353040 --
353041 AcctLineType_443 (
353042  p_application_id  => p_application_id
353043  ,p_event_id     => l_event_id
353044  ,p_calculate_acctd_flag => l_calculate_acctd_flag
353045  ,p_calculate_g_l_flag => l_calculate_g_l_flag
353046  ,p_actual_flag => l_actual_flag
353047  ,p_balance_type_code => l_balance_type_code
353048  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
353049  
353050  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
353051  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
353052  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
353053  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
353054  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
353055  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
353056  , p_source_84 => l_array_source_84(Idx)
353057  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
353058  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
353059  , p_source_88 => l_array_source_88(Idx)
353060  , p_source_91 => l_array_source_91(Idx)
353061  , p_source_92 => l_array_source_92(Idx)
353062  , p_source_93 => l_array_source_93(Idx)
353063  , p_source_94 => l_array_source_94(Idx)
353064  , p_source_95 => l_array_source_95(Idx)
353065  , p_source_97 => l_array_source_97(Idx)
353066  );
353067 If(l_balance_type_code = 'A') THEN
353068   l_actual_gain_loss_ref := l_gain_or_loss_ref;
353069 END IF;
353070 
353071 --
353072 
353073       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
353074       -- or secondary ledger that has different currency with primary
353075       -- or alc that is calculated by sla
353076       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
353077             (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'))
353078 
353079 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
353080 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
353081           AND (l_actual_flag = 'A')) THEN
353082         XLA_AE_LINES_PKG.CreateGainOrLossLines(
353083           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
353084          ,p_application_id   => p_application_id
353085          ,p_amb_context_code => 'DEFAULT'
353086          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
353087          ,p_event_class_code => C_EVENT_CLASS_CODE
353088          ,p_event_type_code  => C_EVENT_TYPE_CODE
353089          
353090          ,p_gain_ccid        => -1
353091          ,p_loss_ccid        => -1
353092 
353093          ,p_actual_flag      => l_actual_flag
353094          ,p_enc_flag         => null
353095          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
353096          ,p_enc_g_l_ref      => null
353097          );
353098       END IF;
353099    END IF;
353100 END IF;
353101 
353102    ELSE
353103       --
353104       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
353105       --
353106       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
353107          trace
353108             (p_msg      => 'Trancaction revesal option is Y'
353109             ,p_level    => C_LEVEL_STATEMENT
353110             ,p_module   => l_log_module);
353111       END IF;
353112    END IF;
353113 
353114 END LOOP;
353115 l_result := XLA_AE_LINES_PKG.InsertLines ;
353116 end loop;
353117 close line_cur;
353118 
353119 
353120 --
353121 -- insert headers into xla_ae_headers_gt table
353122 --
353123 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
353124 
353125 -- insert into errors table here.
353126 
353127 END LOOP;
353128 
353129 --
353130 -- 4865292
353131 --
353132 -- Compare g_hdr_extract_count with event count in
353133 -- CreateHeadersAndLines.
353134 --
353135 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
353136 
353137 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
353138    trace (p_msg     => '# rows extracted from header extract objects '
353139                     || ' (running total): '
353140                     || g_hdr_extract_count
353141          ,p_level   => C_LEVEL_STATEMENT
353142          ,p_module  => l_log_module);
353143 END IF;
353144 
353145 CLOSE header_cur;
353146 --
353147 
353148 --
353149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
353150    trace
353151       (p_msg      => 'END of EventType_574'
353152       ,p_level    => C_LEVEL_PROCEDURE
353153       ,p_module   => l_log_module);
353154 END IF;
353155 --
353156 RETURN l_result;
353157 EXCEPTION
353158 WHEN xla_exceptions_pkg.application_exception THEN
353159    
353160 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
353161 
353162    
353163 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
353164 
353165    RAISE;
353166 
353167 WHEN NO_DATA_FOUND THEN
353168 
353169 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
353170 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
353171 
353172 FOR header_record IN header_cur
353173 LOOP
353174     l_array_header_events(header_record.event_id) := header_record.event_id;
353175 END LOOP;
353176 
353177 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
353178 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
353179 
353180 fnd_file.put_line(fnd_file.LOG, '                    ');
353181 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
353182 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
353183 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
353184 
353185 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
353186 LOOP
353187 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
353188 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
353189         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
353190 	END IF;
353191 END LOOP;
353192 
353193 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
353194 fnd_file.put_line(fnd_file.LOG, '                    ');
353195 
353196 
353197 xla_exceptions_pkg.raise_message
353198       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_574');
353199 
353200 
353201 WHEN OTHERS THEN
353202    xla_exceptions_pkg.raise_message
353203       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_574');
353204 END EventType_574;
353205 --
353206 
353207 ---------------------------------------
353208 --
353209 -- PRIVATE PROCEDURE
353210 --         insert_sources_575
353211 --
353212 ----------------------------------------
353213 --
353214 PROCEDURE insert_sources_575(
353215                                 p_target_ledger_id       IN NUMBER
353216                               , p_language               IN VARCHAR2
353217                               , p_sla_ledger_id          IN NUMBER
353218                               , p_pad_start_date         IN DATE
353219                               , p_pad_end_date           IN DATE
353220                          )
353221 IS
353222 
353223 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_ISSUE';
353224 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
353225 p_apps_owner                   VARCHAR2(30);
353226 l_log_module                   VARCHAR2(240);
353227 BEGIN
353228 IF g_log_enabled THEN
353229       l_log_module := C_DEFAULT_MODULE||'.insert_sources_575';
353230 END IF;
353231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
353232 
353233       trace
353234          (p_msg      => 'BEGIN of insert_sources_575'
353235          ,p_level    => C_LEVEL_PROCEDURE
353236          ,p_module   => l_log_module);
353237 
353238 END IF;
353239 
353240 -- select APPS owner
353241 SELECT oracle_username
353242   INTO p_apps_owner
353243   FROM fnd_oracle_userid
353244  WHERE read_only_flag = 'U'
353245 ;
353246 
353247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
353248       trace
353249          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
353250                         ' - p_language = '||p_language||
353251                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
353252                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
353253                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
353254                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
353255          ,p_level    => C_LEVEL_STATEMENT
353256          ,p_module   => l_log_module);
353257 END IF;
353258 
353259 
353260 --
353261 INSERT INTO xla_diag_sources --hdr1
353262 (
353263         event_id
353264       , ledger_id
353265       , sla_ledger_id
353266       , description_language
353267       , object_name
353268       , object_type_code
353269       , line_number
353270       , source_application_id
353271       , source_type_code
353272       , source_code
353273       , source_value
353274       , source_meaning
353275       , created_by
353276       , creation_date
353277       , last_update_date
353278       , last_updated_by
353279       , last_update_login
353280       , program_update_date
353281       , program_application_id
353282       , program_id
353283       , request_id
353284 )
353285 SELECT
353286         event_id
353287       , p_target_ledger_id
353288       , p_sla_ledger_id
353289       , p_language
353290       , object_name
353291       , object_type_code
353292       , line_number
353293       , source_application_id
353294       , source_type_code
353295       , source_code
353296       , SUBSTR(source_value ,1,1996)
353297       , SUBSTR(source_meaning,1,200)
353298       , xla_environment_pkg.g_Usr_Id
353299       , TRUNC(SYSDATE)
353300       , TRUNC(SYSDATE)
353301       , xla_environment_pkg.g_Usr_Id
353302       , xla_environment_pkg.g_Login_Id
353303       , TRUNC(SYSDATE)
353304       , xla_environment_pkg.g_Prog_Appl_Id
353305       , xla_environment_pkg.g_Prog_Id
353306       , xla_environment_pkg.g_Req_Id
353307   FROM (
353308        SELECT xet.event_id                  event_id
353309             , 0                             line_number
353310             , CASE r
353311                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
353312                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
353313                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
353314                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
353315                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
353316                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
353317                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
353318                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
353319                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
353320                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
353321                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
353322                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
353323                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
353324                 
353325                ELSE null
353326               END                           object_name
353327             , CASE r
353328                 WHEN 1 THEN 'HEADER' 
353329                 WHEN 2 THEN 'HEADER' 
353330                 WHEN 3 THEN 'HEADER' 
353331                 WHEN 4 THEN 'HEADER' 
353332                 WHEN 5 THEN 'HEADER' 
353333                 WHEN 6 THEN 'HEADER' 
353334                 WHEN 7 THEN 'HEADER' 
353335                 WHEN 8 THEN 'HEADER' 
353336                 WHEN 9 THEN 'HEADER' 
353337                 WHEN 10 THEN 'HEADER' 
353338                 WHEN 11 THEN 'HEADER' 
353339                 WHEN 12 THEN 'HEADER' 
353340                 WHEN 13 THEN 'HEADER' 
353341                 
353342                 ELSE null
353343               END                           object_type_code
353344             , CASE r
353345                 WHEN 1 THEN '707' 
353346                 WHEN 2 THEN '707' 
353347                 WHEN 3 THEN '707' 
353348                 WHEN 4 THEN '707' 
353349                 WHEN 5 THEN '707' 
353350                 WHEN 6 THEN '707' 
353351                 WHEN 7 THEN '707' 
353352                 WHEN 8 THEN '707' 
353353                 WHEN 9 THEN '707' 
353354                 WHEN 10 THEN '707' 
353355                 WHEN 11 THEN '707' 
353356                 WHEN 12 THEN '707' 
353357                 WHEN 13 THEN '707' 
353358                 
353359                 ELSE null
353360               END                           source_application_id
353361             , 'S'             source_type_code
353362             , CASE r
353363                 WHEN 1 THEN 'TRANSACTION_ID' 
353364                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
353365                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
353366                 WHEN 4 THEN 'TRANSACTION_UOM' 
353367                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
353368                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
353369                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
353370                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
353371                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
353372                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
353373                 WHEN 11 THEN 'TRANSACTION_ACTION_ID' 
353374                 WHEN 12 THEN 'DISTRIBUTION_TYPE' 
353375                 WHEN 13 THEN 'TRANSFER_TO_GL_INDICATOR' 
353376                 
353377                 ELSE null
353378               END                           source_code
353379             , CASE r
353380                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
353381                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
353382                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
353383                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
353384                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
353385                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
353386                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
353387                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
353388                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
353389                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
353390                 WHEN 11 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
353391                 WHEN 12 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
353392                 WHEN 13 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
353393                 
353394                 ELSE null
353395               END                           source_value
353396             , CASE r
353397                 WHEN 11 THEN fvl62.meaning
353398                 WHEN 12 THEN fvl85.meaning
353399                 WHEN 13 THEN fvl114.meaning
353400                 
353401                 ELSE null
353402               END               source_meaning
353403         FROM xla_events_gt     xet  
353404       , CST_XLA_INV_HEADERS_V  h1
353405       , CST_XLA_INV_REF_V  h3
353406       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
353407       , CST_XLA_INV_TXN_TYPES_REF_V  h5
353408       , CST_XLA_PLA_CATEGORY_REF_V  h6
353409   , fnd_lookup_values    fvl62
353410   , fnd_lookup_values    fvl85
353411   , fnd_lookup_values    fvl114
353412             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
353413        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
353414          AND xet.event_type_code = C_EVENT_TYPE_CODE
353415             AND h1.event_id = xet.event_id
353416  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
353417 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
353418 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
353419   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
353420   AND fvl62.view_application_id(+) = 700
353421   AND fvl62.language(+)            = USERENV('LANG')
353422      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
353423   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
353424   AND fvl85.view_application_id(+) = 700
353425   AND fvl85.language(+)            = USERENV('LANG')
353426      AND fvl114.lookup_type(+)         = 'YES_NO'
353427   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
353428   AND fvl114.view_application_id(+) = 0
353429   AND fvl114.language(+)            = USERENV('LANG')
353430   
353431 )
353432 ;
353433 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
353434 
353435       trace
353436          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
353437          ,p_level    => C_LEVEL_STATEMENT
353438          ,p_module   => l_log_module);
353439 
353440 END IF;
353441 --
353442 
353443 
353444 
353445 --
353446 INSERT INTO xla_diag_sources --line1
353447 (
353448         event_id
353449       , ledger_id
353450       , sla_ledger_id
353451       , description_language
353452       , object_name
353453       , object_type_code
353454       , line_number
353455       , source_application_id
353456       , source_type_code
353457       , source_code
353458       , source_value
353459       , source_meaning
353460       , created_by
353461       , creation_date
353462       , last_update_date
353463       , last_updated_by
353464       , last_update_login
353465       , program_update_date
353466       , program_application_id
353467       , program_id
353468       , request_id
353469 )
353470 SELECT  event_id
353471       , p_target_ledger_id
353472       , p_sla_ledger_id
353473       , p_language
353474       , object_name
353475       , object_type_code
353476       , line_number
353477       , source_application_id
353478       , source_type_code
353479       , source_code
353480       , SUBSTR(source_value,1,1996)
353481       , SUBSTR(source_meaning,1,200)
353482       , xla_environment_pkg.g_Usr_Id
353483       , TRUNC(SYSDATE)
353484       , TRUNC(SYSDATE)
353485       , xla_environment_pkg.g_Usr_Id
353486       , xla_environment_pkg.g_Login_Id
353487       , TRUNC(SYSDATE)
353488       , xla_environment_pkg.g_Prog_Appl_Id
353489       , xla_environment_pkg.g_Prog_Id
353490       , xla_environment_pkg.g_Req_Id
353491   FROM (
353492        SELECT xet.event_id                  event_id
353493             , l2.line_number                 line_number
353494             , CASE r
353495                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
353496                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
353497                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
353498                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
353499                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
353500                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
353501                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
353502                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
353503                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
353504                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
353505                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
353506                 
353507                ELSE null
353508               END                           object_name
353509             , CASE r
353510                 WHEN 1 THEN 'LINE' 
353511                 WHEN 2 THEN 'LINE' 
353512                 WHEN 3 THEN 'LINE' 
353513                 WHEN 4 THEN 'LINE' 
353514                 WHEN 5 THEN 'LINE' 
353515                 WHEN 6 THEN 'LINE' 
353516                 WHEN 7 THEN 'LINE' 
353517                 WHEN 8 THEN 'LINE' 
353518                 WHEN 9 THEN 'LINE' 
353519                 WHEN 10 THEN 'LINE' 
353520                 WHEN 11 THEN 'LINE' 
353521                 
353522                 ELSE null
353523               END                           object_type_code
353524             , CASE r
353525                 WHEN 1 THEN '707' 
353526                 WHEN 2 THEN '707' 
353527                 WHEN 3 THEN '707' 
353528                 WHEN 4 THEN '707' 
353529                 WHEN 5 THEN '707' 
353530                 WHEN 6 THEN '707' 
353531                 WHEN 7 THEN '707' 
353532                 WHEN 8 THEN '707' 
353533                 WHEN 9 THEN '707' 
353534                 WHEN 10 THEN '707' 
353535                 WHEN 11 THEN '707' 
353536                 
353537                 ELSE null
353538               END                           source_application_id
353539             , 'S'             source_type_code
353540             , CASE r
353541                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
353542                 WHEN 2 THEN 'COST_ELEMENT_ID' 
353543                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
353544                 WHEN 4 THEN 'CURRENCY_CODE' 
353545                 WHEN 5 THEN 'ENTERED_AMOUNT' 
353546                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
353547                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
353548                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
353549                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
353550                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
353551                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
353552                 
353553                 ELSE null
353554               END                           source_code
353555             , CASE r
353556                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
353557                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
353558                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
353559                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
353560                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
353561                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
353562                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
353563                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
353564                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
353565                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
353566                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
353567                 
353568                 ELSE null
353569               END                           source_value
353570             , CASE r
353571                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
353572                           1009615
353573                          ,TO_CHAR(l2.COST_ELEMENT_ID)
353574                          ,'COST_ELEMENT_ID'
353575                          ,'S'
353576                          ,707)
353577                 
353578                 ELSE null
353579               END               source_meaning
353580          FROM  xla_events_gt     xet  
353581         , CST_XLA_INV_LINES_V  l2
353582             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
353583         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
353584           AND xet.event_type_code = C_EVENT_TYPE_CODE
353585             AND l2.event_id          = xet.event_id
353586 
353587 )
353588 ;
353589 --
353590 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
353591 
353592       trace
353593          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
353594          ,p_level    => C_LEVEL_STATEMENT
353595          ,p_module   => l_log_module);
353596 
353597 END IF;
353598 
353599 
353600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
353601       trace
353602          (p_msg      => 'END of insert_sources_575'
353603          ,p_level    => C_LEVEL_PROCEDURE
353604          ,p_module   => l_log_module);
353605 END IF;
353606 EXCEPTION
353607   WHEN xla_exceptions_pkg.application_exception THEN
353608       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
353609             trace
353610                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
353611                ,p_level    => C_LEVEL_EXCEPTION
353612                ,p_module   => l_log_module);
353613       END IF;
353614       RAISE;
353615   WHEN OTHERS THEN
353616       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
353617             trace
353618                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
353619                ,p_level    => C_LEVEL_EXCEPTION
353620                ,p_module   => l_log_module);
353621        END IF;
353622        xla_exceptions_pkg.raise_message
353623            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_575');
353624 END insert_sources_575;
353625 --
353626 
353627 ---------------------------------------
353628 --
353629 -- PRIVATE FUNCTION
353630 --         EventType_575
353631 --
353632 ----------------------------------------
353633 --
353634 FUNCTION EventType_575
353635        (p_application_id         IN NUMBER
353636        ,p_base_ledger_id         IN NUMBER
353637        ,p_target_ledger_id       IN NUMBER
353638        ,p_language               IN VARCHAR2
353639        ,p_currency_code          IN VARCHAR2
353640        ,p_sla_ledger_id          IN NUMBER
353641        ,p_pad_start_date         IN DATE
353642        ,p_pad_end_date           IN DATE
353643        ,p_primary_ledger_id      IN NUMBER)
353644 RETURN BOOLEAN IS
353645 --
353646 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_ISSUE';
353647 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
353648 
353649 l_calculate_acctd_flag   VARCHAR2(1) :='N';
353650 l_calculate_g_l_flag     VARCHAR2(1) :='N';
353651 --
353652 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353653 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353654 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
353655 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
353656 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353657 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
353658 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
353659 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353660 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
353661 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
353662 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353663 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353664 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353665 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
353666 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
353667 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
353668 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
353669 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
353670 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
353671 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
353672 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
353673 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
353674 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
353675 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
353676 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
353677 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
353678 
353679 l_event_id                             NUMBER;
353680 l_previous_event_id                    NUMBER;
353681 l_first_event_id                       NUMBER;
353682 l_last_event_id                        NUMBER;
353683 
353684 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
353685 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
353686 --
353687 --
353688 l_result                    BOOLEAN := TRUE;
353689 l_rows                      NUMBER  := 1000;
353690 l_event_type_name           VARCHAR2(80) := 'Logical Intercompany Sales Issue';
353691 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
353692 l_description               VARCHAR2(4000);
353693 l_transaction_reversal      NUMBER;
353694 l_ae_header_id              NUMBER;
353695 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
353696 l_log_module                VARCHAR2(240);
353697 --
353698 l_acct_reversal_source      VARCHAR2(30);
353699 l_trx_reversal_source       VARCHAR2(30);
353700 
353701 l_continue_with_lines       BOOLEAN := TRUE;
353702 --
353703 l_acc_rev_gl_date_source    DATE;                      -- 4262811
353704 --
353705 type t_array_event_id is table of number index by binary_integer;
353706 
353707 l_rec_array_event                    t_rec_array_event;
353708 l_null_rec_array_event               t_rec_array_event;
353709 l_array_ae_header_id                 xla_number_array_type;
353710 l_actual_flag                        VARCHAR2(1) := NULL;
353711 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
353712 l_balance_type_code                  VARCHAR2(1) :=NULL;
353713 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
353714 
353715 --
353716 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
353717 --
353718 
353719 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
353720 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
353721 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
353722 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
353723 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
353724 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
353725 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
353726 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
353727 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
353728 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
353729 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
353730 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
353731 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
353732 
353733 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
353734 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
353735 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
353736 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
353737 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
353738 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
353739 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
353740 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
353741 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
353742 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
353743 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
353744 
353745 l_array_source_1              t_array_source_1;
353746 l_array_source_2              t_array_source_2;
353747 l_array_source_3              t_array_source_3;
353748 l_array_source_4              t_array_source_4;
353749 l_array_source_5              t_array_source_5;
353750 l_array_source_41              t_array_source_41;
353751 l_array_source_42              t_array_source_42;
353752 l_array_source_43              t_array_source_43;
353753 l_array_source_44              t_array_source_44;
353754 l_array_source_45              t_array_source_45;
353755 l_array_source_62              t_array_source_62;
353756 l_array_source_62_meaning      t_array_lookup_meaning;
353757 l_array_source_85              t_array_source_85;
353758 l_array_source_85_meaning      t_array_lookup_meaning;
353759 l_array_source_114              t_array_source_114;
353760 l_array_source_114_meaning      t_array_lookup_meaning;
353761 
353762 l_array_source_11      t_array_source_11;
353763 l_array_source_15      t_array_source_15;
353764 l_array_source_84      t_array_source_84;
353765 l_array_source_88      t_array_source_88;
353766 l_array_source_91      t_array_source_91;
353767 l_array_source_92      t_array_source_92;
353768 l_array_source_93      t_array_source_93;
353769 l_array_source_94      t_array_source_94;
353770 l_array_source_95      t_array_source_95;
353771 l_array_source_97      t_array_source_97;
353772 l_array_source_108      t_array_source_108;
353773 
353774 --
353775 CURSOR header_cur
353776 IS
353777 SELECT /*+ leading(xet) cardinality(xet,1) */
353778 -- Event Type Code: LOG_IC_SALES_ISSUE
353779 -- Event Class Code: LOG_INTERCOMPANY
353780     xet.entity_id
353781   , xet.legal_entity_id
353782   , xet.entity_code
353783   , xet.transaction_number
353784   , xet.event_id
353785   , xet.event_class_code
353786   , xet.event_type_code
353787   , xet.event_number
353788   , xet.event_date
353789   , xet.transaction_date
353790   , xet.reference_num_1
353791   , xet.reference_num_2
353792   , xet.reference_num_3
353793   , xet.reference_num_4
353794   , xet.reference_char_1
353795   , xet.reference_char_2
353796   , xet.reference_char_3
353797   , xet.reference_char_4
353798   , xet.reference_date_1
353799   , xet.reference_date_2
353800   , xet.reference_date_3
353801   , xet.reference_date_4
353802   , xet.event_created_by
353803   , xet.budgetary_control_flag 
353804   , h1.TRANSACTION_ID    source_1
353805   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
353806   , h3.TRANSACTION_QUANTITY    source_3
353807   , h3.TRANSACTION_UOM    source_4
353808   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
353809   , h6.PLA_MATERIAL_ACCOUNT    source_41
353810   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
353811   , h6.PLA_RESOURCE_ACCOUNT    source_43
353812   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
353813   , h6.PLA_OVERHEAD_ACCOUNT    source_45
353814   , h1.TRANSACTION_ACTION_ID    source_62
353815   , fvl62.meaning   source_62_meaning
353816   , h1.DISTRIBUTION_TYPE    source_85
353817   , fvl85.meaning   source_85_meaning
353818   , h1.TRANSFER_TO_GL_INDICATOR    source_114
353819   , fvl114.meaning   source_114_meaning
353820   FROM xla_events_gt     xet 
353821   , CST_XLA_INV_HEADERS_V  h1
353822   , CST_XLA_INV_REF_V  h3
353823   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
353824   , CST_XLA_INV_TXN_TYPES_REF_V  h5
353825   , CST_XLA_PLA_CATEGORY_REF_V  h6
353826   , fnd_lookup_values    fvl62
353827   , fnd_lookup_values    fvl85
353828   , fnd_lookup_values    fvl114
353829  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
353830    and xet.event_type_code = C_EVENT_TYPE_CODE
353831    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
353832  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
353833 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
353834 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
353835   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
353836   AND fvl62.view_application_id(+) = 700
353837   AND fvl62.language(+)            = USERENV('LANG')
353838      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
353839   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
353840   AND fvl85.view_application_id(+) = 700
353841   AND fvl85.language(+)            = USERENV('LANG')
353842      AND fvl114.lookup_type(+)         = 'YES_NO'
353843   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
353844   AND fvl114.view_application_id(+) = 0
353845   AND fvl114.language(+)            = USERENV('LANG')
353846   
353847  ORDER BY event_id
353848 ;
353849 
353850 
353851 --
353852 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
353853 IS
353854 SELECT /*+ leading(xet) cardinality(xet,1) */
353855 -- Event Type Code: LOG_IC_SALES_ISSUE
353856 -- Event Class Code: LOG_INTERCOMPANY
353857     xet.entity_id
353858    ,xet.legal_entity_id
353859    ,xet.entity_code
353860    ,xet.transaction_number
353861    ,xet.event_id
353862    ,xet.event_class_code
353863    ,xet.event_type_code
353864    ,xet.event_number
353865    ,xet.event_date
353866    ,xet.transaction_date
353867    ,xet.reference_num_1
353868    ,xet.reference_num_2
353869    ,xet.reference_num_3
353870    ,xet.reference_num_4
353871    ,xet.reference_char_1
353872    ,xet.reference_char_2
353873    ,xet.reference_char_3
353874    ,xet.reference_char_4
353875    ,xet.reference_date_1
353876    ,xet.reference_date_2
353877    ,xet.reference_date_3
353878    ,xet.reference_date_4
353879    ,xet.event_created_by
353880    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
353881   , l2.CODE_COMBINATION_ID    source_11
353882   , l2.COST_ELEMENT_ID    source_15
353883   , l2.DISTRIBUTION_IDENTIFIER    source_84
353884   , l2.CURRENCY_CODE    source_88
353885   , l2.ENTERED_AMOUNT    source_91
353886   , l2.CURRENCY_CONVERSION_DATE    source_92
353887   , l2.CURRENCY_CONVERSION_RATE    source_93
353888   , l2.CURRENCY_CONVERSION_TYPE    source_94
353889   , l2.ACCOUNTED_AMOUNT    source_95
353890   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
353891   , l2.L_ORGANIZATION_CODE    source_108
353892   FROM xla_events_gt     xet 
353893   , CST_XLA_INV_LINES_V  l2
353894  WHERE xet.event_id between x_first_event_id and x_last_event_id
353895    and xet.event_date between p_pad_start_date and p_pad_end_date
353896    and xet.event_type_code = C_EVENT_TYPE_CODE
353897    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
353898 ;
353899 
353900 --
353901 BEGIN
353902 IF g_log_enabled THEN
353903    l_log_module := C_DEFAULT_MODULE||'.EventType_575';
353904 END IF;
353905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
353906    trace
353907       (p_msg      => 'BEGIN of EventType_575'
353908       ,p_level    => C_LEVEL_PROCEDURE
353909       ,p_module   => l_log_module);
353910 END IF;
353911 
353912 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
353913    trace
353914       (p_msg      => 'p_application_id = '||p_application_id||
353915                      ' - p_base_ledger_id = '||p_base_ledger_id||
353916                      ' - p_target_ledger_id  = '||p_target_ledger_id||
353917                      ' - p_language = '||p_language||
353918                      ' - p_currency_code = '||p_currency_code||
353919                      ' - p_sla_ledger_id = '||p_sla_ledger_id
353920       ,p_level    => C_LEVEL_STATEMENT
353921       ,p_module   => l_log_module);
353922 END IF;
353923 --
353924 -- initialze arrays
353925 --
353926 g_array_event.DELETE;
353927 l_rec_array_event := l_null_rec_array_event;
353928 --
353929 --------------------------------------
353930 -- 4262811 Initialze MPA Line Number
353931 --------------------------------------
353932 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
353933 
353934 --
353935 
353936 --
353937 OPEN header_cur;
353938 --
353939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
353940    trace
353941    (p_msg      => 'SQL - FETCH header_cur'
353942    ,p_level    => C_LEVEL_STATEMENT
353943    ,p_module   => l_log_module);
353944 END IF;
353945 --
353946 LOOP
353947 FETCH header_cur BULK COLLECT INTO
353948         l_array_entity_id
353949       , l_array_legal_entity_id
353950       , l_array_entity_code
353951       , l_array_transaction_num
353952       , l_array_event_id
353953       , l_array_class_code
353954       , l_array_event_type
353955       , l_array_event_number
353956       , l_array_event_date
353957       , l_array_transaction_date
353958       , l_array_reference_num_1
353959       , l_array_reference_num_2
353960       , l_array_reference_num_3
353961       , l_array_reference_num_4
353962       , l_array_reference_char_1
353963       , l_array_reference_char_2
353964       , l_array_reference_char_3
353965       , l_array_reference_char_4
353966       , l_array_reference_date_1
353967       , l_array_reference_date_2
353968       , l_array_reference_date_3
353969       , l_array_reference_date_4
353970       , l_array_event_created_by
353971       , l_array_budgetary_control_flag 
353972       , l_array_source_1
353973       , l_array_source_2
353974       , l_array_source_3
353975       , l_array_source_4
353976       , l_array_source_5
353977       , l_array_source_41
353978       , l_array_source_42
353979       , l_array_source_43
353980       , l_array_source_44
353981       , l_array_source_45
353982       , l_array_source_62
353983       , l_array_source_62_meaning
353984       , l_array_source_85
353985       , l_array_source_85_meaning
353986       , l_array_source_114
353987       , l_array_source_114_meaning
353988       LIMIT l_rows;
353989 --
353990 IF (C_LEVEL_EVENT >= g_log_level) THEN
353991    trace
353992    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
353993    ,p_level    => C_LEVEL_EVENT
353994    ,p_module   => l_log_module);
353995 END IF;
353996 --
353997 EXIT WHEN l_array_entity_id.COUNT = 0;
353998 
353999 -- initialize arrays
354000 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
354001 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
354002 
354003 --
354004 -- Bug 4458708
354005 --
354006 XLA_AE_LINES_PKG.g_LineNumber := 0;
354007 
354008 
354009 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
354010 g_last_hdr_idx := l_array_event_id.LAST;
354011 --
354012 -- loop for the headers. Each iteration is for each header extract row
354013 -- fetched in header cursor
354014 --
354015 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
354016 
354017 --
354018 -- set event info as cache for other routines to refer event attributes
354019 --
354020 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
354021    (p_application_id           => p_application_id
354022    ,p_primary_ledger_id        => p_primary_ledger_id
354023    ,p_base_ledger_id           => p_base_ledger_id
354024    ,p_target_ledger_id         => p_target_ledger_id
354025    ,p_entity_id                => l_array_entity_id(hdr_idx)
354026    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
354027    ,p_entity_code              => l_array_entity_code(hdr_idx)
354028    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
354029    ,p_event_id                 => l_array_event_id(hdr_idx)
354030    ,p_event_class_code         => l_array_class_code(hdr_idx)
354031    ,p_event_type_code          => l_array_event_type(hdr_idx)
354032    ,p_event_number             => l_array_event_number(hdr_idx)
354033    ,p_event_date               => l_array_event_date(hdr_idx)
354034    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
354035    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
354036    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
354037    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
354038    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
354039    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
354040    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
354041    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
354042    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
354043    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
354044    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
354045    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
354046    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
354047    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
354048    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
354049 
354050 --
354051 -- set the status of entry to C_VALID (0)
354052 --
354053 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
354054 
354055 --
354056 -- initialize a row for ae header
354057 --
354058 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
354059 
354060 l_event_id := l_array_event_id(hdr_idx);
354061 
354062 --
354063 -- storing the hdr_idx for event. May be used by line cursor.
354064 --
354065 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
354066 
354067 --
354068 -- store sources from header extract. This can be improved to
354069 -- store only those sources from header extract that may be used in lines
354070 --
354071 
354072 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
354073 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
354074 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
354075 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
354076 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
354077 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
354078 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
354079 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
354080 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
354081 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
354082 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
354083 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
354084 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
354085 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
354086 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
354087 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
354088 
354089 --
354090 -- initilaize the status of ae headers for diffrent balance types
354091 -- the status is initialised to C_NOT_CREATED (2)
354092 --
354093 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
354094 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
354095 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
354096 
354097 --
354098 -- call api to validate and store accounting attributes for header
354099 --
354100 
354101 ------------------------------------------------------------
354102 -- Accrual Reversal : to get date for Standard Source (NONE)
354103 ------------------------------------------------------------
354104 l_acc_rev_gl_date_source := NULL;
354105 
354106      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
354107       l_rec_acct_attrs.array_date_value(1) := 
354108 xla_ae_sources_pkg.GetSystemSourceDate(
354109    p_source_code           => 'XLA_REFERENCE_DATE_1'
354110  , p_source_type_code      => 'Y'
354111  , p_source_application_id =>  602
354112 );
354113      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
354114       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
354115 
354116 
354117 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
354118 
354119 XLA_AE_HEADER_PKG.SetJeCategoryName;
354120 
354121 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
354122 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
354123 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
354124 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
354125 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
354126 
354127 
354128 --
354129 xla_ae_header_pkg.SetHdrDescription(
354130    p_description => Description_1 (
354131    p_application_id => p_application_id 
354132  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
354133  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
354134  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
354135  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
354136  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
354137    )
354138 );
354139 --
354140 
354141 -- No header level analytical criteria
354142 
354143 --
354144 --accounting attribute enhancement, bug 3612931
354145 --
354146 l_trx_reversal_source := SUBSTR(NULL, 1,30);
354147 
354148 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
354149    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
354150 
354151    xla_accounting_err_pkg.build_message
354152       (p_appli_s_name            => 'XLA'
354153       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
354154       ,p_token_1                 => 'ACCT_ATTR_NAME'
354155       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
354156       ,p_token_2                 => 'PRODUCT_NAME'
354157       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
354158       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
354159       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
354160       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
354161 
354162 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
354163    --
354164    -- following sets the accounting attributes needed to reverse
354165    -- accounting for a distributeion
354166    --
354167    xla_ae_lines_pkg.SetTrxReversalAttrs
354168       (p_event_id              => l_event_id
354169       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
354170       ,p_trx_reversal_source   => l_trx_reversal_source);
354171 
354172 END IF;
354173 
354174 
354175 ----------------------------------------------------------------
354176 -- 4262811 -  update the header statuses to invalid in need be
354177 ----------------------------------------------------------------
354178 --
354179 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
354180 
354181 
354182   -----------------------------------------------
354183   -- No accrual reversal for the event class/type
354184   -----------------------------------------------
354185 ----------------------------------------------------------------
354186 
354187 --
354188 -- this ends the header loop iteration for one bulk fetch
354189 --
354190 END LOOP;
354191 
354192 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
354193 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
354194 
354195 --
354196 -- insert dummy rows into lines gt table that were created due to
354197 -- transaction reversals
354198 --
354199 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
354200    l_result := XLA_AE_LINES_PKG.InsertLines;
354201 END IF;
354202 
354203 --
354204 -- reset the temp_line_num for each set of events fetched from header
354205 -- cursor rather than doing it for each new event in line cursor
354206 -- Bug 3939231
354207 --
354208 xla_ae_lines_pkg.g_temp_line_num := 0;
354209 
354210 
354211 
354212 --
354213 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
354214 --
354215 --
354216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
354217 
354218       trace
354219          (p_msg      => 'SQL - FETCH line_cur'
354220          ,p_level    => C_LEVEL_STATEMENT
354221          ,p_module   => l_log_module);
354222 
354223 END IF;
354224 --
354225 --
354226 LOOP
354227   --
354228   FETCH line_cur BULK COLLECT INTO
354229         l_array_entity_id
354230       , l_array_legal_entity_id
354231       , l_array_entity_code
354232       , l_array_transaction_num
354233       , l_array_event_id
354234       , l_array_class_code
354235       , l_array_event_type
354236       , l_array_event_number
354237       , l_array_event_date
354238       , l_array_transaction_date
354239       , l_array_reference_num_1
354240       , l_array_reference_num_2
354241       , l_array_reference_num_3
354242       , l_array_reference_num_4
354243       , l_array_reference_char_1
354244       , l_array_reference_char_2
354245       , l_array_reference_char_3
354246       , l_array_reference_char_4
354247       , l_array_reference_date_1
354248       , l_array_reference_date_2
354249       , l_array_reference_date_3
354250       , l_array_reference_date_4
354251       , l_array_event_created_by
354252       , l_array_budgetary_control_flag
354253       , l_array_extract_line_num 
354254       , l_array_source_11
354255       , l_array_source_15
354256       , l_array_source_84
354257       , l_array_source_88
354258       , l_array_source_91
354259       , l_array_source_92
354260       , l_array_source_93
354261       , l_array_source_94
354262       , l_array_source_95
354263       , l_array_source_97
354264       , l_array_source_108
354265       LIMIT l_rows;
354266 
354267   --
354268   IF (C_LEVEL_EVENT >= g_log_level) THEN
354269             trace
354270                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
354271                ,p_level    => C_LEVEL_EVENT
354272                ,p_module   => l_log_module);
354273   END IF;
354274   --
354275   EXIT WHEN l_array_entity_id.count = 0;
354276 
354277   XLA_AE_LINES_PKG.g_rec_lines := null;
354278 
354279 --
354280 -- Bug 4458708
354281 --
354282 XLA_AE_LINES_PKG.g_LineNumber := 0;
354283 --
354284 --
354285 
354286 FOR Idx IN 1..l_array_event_id.count LOOP
354287    --
354288    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
354289    --
354290    l_event_id := l_array_event_id(idx);  -- 5648433
354291 
354292    --
354293    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
354294    --
354295 
354296    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
354297              (g_array_event(l_event_id).array_value_num('header_index'))
354298          ,'N'
354299          ) <> 'Y'
354300    THEN
354301       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
354302          trace
354303             (p_msg      => 'Trancaction revesal option is not Y '
354304             ,p_level    => C_LEVEL_STATEMENT
354305             ,p_module   => l_log_module);
354306       END IF;
354307 
354308 --
354309 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
354310 --
354311 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
354312 --
354313 -- set event info as cache for other routines to refer event attributes
354314 --
354315 
354316 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
354317    l_previous_event_id := l_event_id;
354318 
354319    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
354320       (p_application_id           => p_application_id
354321       ,p_primary_ledger_id        => p_primary_ledger_id
354322       ,p_base_ledger_id           => p_base_ledger_id
354323       ,p_target_ledger_id         => p_target_ledger_id
354324       ,p_entity_id                => l_array_entity_id(Idx)
354325       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
354326       ,p_entity_code              => l_array_entity_code(Idx)
354327       ,p_transaction_num          => l_array_transaction_num(Idx)
354328       ,p_event_id                 => l_array_event_id(Idx)
354329       ,p_event_class_code         => l_array_class_code(Idx)
354330       ,p_event_type_code          => l_array_event_type(Idx)
354331       ,p_event_number             => l_array_event_number(Idx)
354332       ,p_event_date               => l_array_event_date(Idx)
354333       ,p_transaction_date         => l_array_transaction_date(Idx)
354334       ,p_reference_num_1          => l_array_reference_num_1(Idx)
354335       ,p_reference_num_2          => l_array_reference_num_2(Idx)
354336       ,p_reference_num_3          => l_array_reference_num_3(Idx)
354337       ,p_reference_num_4          => l_array_reference_num_4(Idx)
354338       ,p_reference_char_1         => l_array_reference_char_1(Idx)
354339       ,p_reference_char_2         => l_array_reference_char_2(Idx)
354340       ,p_reference_char_3         => l_array_reference_char_3(Idx)
354341       ,p_reference_char_4         => l_array_reference_char_4(Idx)
354342       ,p_reference_date_1         => l_array_reference_date_1(Idx)
354343       ,p_reference_date_2         => l_array_reference_date_2(Idx)
354344       ,p_reference_date_3         => l_array_reference_date_3(Idx)
354345       ,p_reference_date_4         => l_array_reference_date_4(Idx)
354346       ,p_event_created_by         => l_array_event_created_by(Idx)
354347       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
354348        --
354349 END IF;
354350 
354351 
354352 
354353 --
354354 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
354355 
354356 l_acct_reversal_source := SUBSTR(NULL, 1,30);
354357 
354358 IF l_continue_with_lines THEN
354359    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
354360       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
354361 
354362       xla_accounting_err_pkg.build_message
354363          (p_appli_s_name            => 'XLA'
354364          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
354365          ,p_token_1                 => 'LINE_NUMBER'
354366          ,p_value_1                 => l_array_extract_line_num(Idx)
354367          ,p_token_2                 => 'PRODUCT_NAME'
354368          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
354369          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
354370          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
354371          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
354372 
354373    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
354374       --
354375       -- following sets the accounting attributes needed to reverse
354376       -- accounting for a distributeion
354377       --
354378 
354379       --
354380       -- 5217187
354381       --
354382       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
354383       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
354384                                        g_array_event(l_event_id).array_value_num('header_index'));
354385       --
354386       --
354387 
354388       -- No reversal code generated
354389 
354390       xla_ae_lines_pkg.SetAcctReversalAttrs
354391          (p_event_id             => l_event_id
354392          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
354393          ,p_calculate_acctd_flag => l_calculate_acctd_flag
354394          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
354395    END IF;
354396 
354397    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
354398        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
354399 
354400 --
354401 AcctLineType_141 (
354402  p_application_id  => p_application_id
354403  ,p_event_id     => l_event_id
354404  ,p_calculate_acctd_flag => l_calculate_acctd_flag
354405  ,p_calculate_g_l_flag => l_calculate_g_l_flag
354406  ,p_actual_flag => l_actual_flag
354407  ,p_balance_type_code => l_balance_type_code
354408  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
354409  
354410  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
354411  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
354412  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
354413  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
354414  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
354415  , p_source_11 => l_array_source_11(Idx)
354416  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
354417  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
354418  , p_source_84 => l_array_source_84(Idx)
354419  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
354420  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
354421  , p_source_88 => l_array_source_88(Idx)
354422  , p_source_91 => l_array_source_91(Idx)
354423  , p_source_92 => l_array_source_92(Idx)
354424  , p_source_93 => l_array_source_93(Idx)
354425  , p_source_94 => l_array_source_94(Idx)
354426  , p_source_95 => l_array_source_95(Idx)
354427  , p_source_97 => l_array_source_97(Idx)
354428  );
354429 If(l_balance_type_code = 'A') THEN
354430   l_actual_gain_loss_ref := l_gain_or_loss_ref;
354431 END IF;
354432 
354433 --
354434 
354435 
354436 --
354437 AcctLineType_267 (
354438  p_application_id  => p_application_id
354439  ,p_event_id     => l_event_id
354440  ,p_calculate_acctd_flag => l_calculate_acctd_flag
354441  ,p_calculate_g_l_flag => l_calculate_g_l_flag
354442  ,p_actual_flag => l_actual_flag
354443  ,p_balance_type_code => l_balance_type_code
354444  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
354445  
354446  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
354447  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
354448  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
354449  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
354450  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
354451  , p_source_15 => l_array_source_15(Idx)
354452  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
354453  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
354454  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
354455  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
354456  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
354457  , p_source_84 => l_array_source_84(Idx)
354458  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
354459  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
354460  , p_source_88 => l_array_source_88(Idx)
354461  , p_source_91 => l_array_source_91(Idx)
354462  , p_source_92 => l_array_source_92(Idx)
354463  , p_source_93 => l_array_source_93(Idx)
354464  , p_source_94 => l_array_source_94(Idx)
354465  , p_source_95 => l_array_source_95(Idx)
354466  , p_source_97 => l_array_source_97(Idx)
354467  , p_source_108 => l_array_source_108(Idx)
354468  );
354469 If(l_balance_type_code = 'A') THEN
354470   l_actual_gain_loss_ref := l_gain_or_loss_ref;
354471 END IF;
354472 
354473 --
354474 
354475       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
354476       -- or secondary ledger that has different currency with primary
354477       -- or alc that is calculated by sla
354478       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
354479             (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'))
354480 
354481 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
354482 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
354483           AND (l_actual_flag = 'A')) THEN
354484         XLA_AE_LINES_PKG.CreateGainOrLossLines(
354485           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
354486          ,p_application_id   => p_application_id
354487          ,p_amb_context_code => 'DEFAULT'
354488          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
354489          ,p_event_class_code => C_EVENT_CLASS_CODE
354490          ,p_event_type_code  => C_EVENT_TYPE_CODE
354491          
354492          ,p_gain_ccid        => -1
354493          ,p_loss_ccid        => -1
354494 
354495          ,p_actual_flag      => l_actual_flag
354496          ,p_enc_flag         => null
354497          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
354498          ,p_enc_g_l_ref      => null
354499          );
354500       END IF;
354501    END IF;
354502 END IF;
354503 
354504    ELSE
354505       --
354506       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
354507       --
354508       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
354509          trace
354510             (p_msg      => 'Trancaction revesal option is Y'
354511             ,p_level    => C_LEVEL_STATEMENT
354512             ,p_module   => l_log_module);
354513       END IF;
354514    END IF;
354515 
354516 END LOOP;
354517 l_result := XLA_AE_LINES_PKG.InsertLines ;
354518 end loop;
354519 close line_cur;
354520 
354521 
354522 --
354523 -- insert headers into xla_ae_headers_gt table
354524 --
354525 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
354526 
354527 -- insert into errors table here.
354528 
354529 END LOOP;
354530 
354531 --
354532 -- 4865292
354533 --
354534 -- Compare g_hdr_extract_count with event count in
354535 -- CreateHeadersAndLines.
354536 --
354537 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
354538 
354539 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
354540    trace (p_msg     => '# rows extracted from header extract objects '
354541                     || ' (running total): '
354542                     || g_hdr_extract_count
354543          ,p_level   => C_LEVEL_STATEMENT
354544          ,p_module  => l_log_module);
354545 END IF;
354546 
354547 CLOSE header_cur;
354548 --
354549 
354550 --
354551 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
354552    trace
354553       (p_msg      => 'END of EventType_575'
354554       ,p_level    => C_LEVEL_PROCEDURE
354555       ,p_module   => l_log_module);
354556 END IF;
354557 --
354558 RETURN l_result;
354559 EXCEPTION
354560 WHEN xla_exceptions_pkg.application_exception THEN
354561    
354562 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
354563 
354564    
354565 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
354566 
354567    RAISE;
354568 
354569 WHEN NO_DATA_FOUND THEN
354570 
354571 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
354572 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
354573 
354574 FOR header_record IN header_cur
354575 LOOP
354576     l_array_header_events(header_record.event_id) := header_record.event_id;
354577 END LOOP;
354578 
354579 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
354580 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
354581 
354582 fnd_file.put_line(fnd_file.LOG, '                    ');
354583 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
354584 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
354585 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
354586 
354587 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
354588 LOOP
354589 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
354590 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
354591         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
354592 	END IF;
354593 END LOOP;
354594 
354595 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
354596 fnd_file.put_line(fnd_file.LOG, '                    ');
354597 
354598 
354599 xla_exceptions_pkg.raise_message
354600       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_575');
354601 
354602 
354603 WHEN OTHERS THEN
354604    xla_exceptions_pkg.raise_message
354605       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_575');
354606 END EventType_575;
354607 --
354608 
354609 ---------------------------------------
354610 --
354611 -- PRIVATE PROCEDURE
354612 --         insert_sources_576
354613 --
354614 ----------------------------------------
354615 --
354616 PROCEDURE insert_sources_576(
354617                                 p_target_ledger_id       IN NUMBER
354618                               , p_language               IN VARCHAR2
354619                               , p_sla_ledger_id          IN NUMBER
354620                               , p_pad_start_date         IN DATE
354621                               , p_pad_end_date           IN DATE
354622                          )
354623 IS
354624 
354625 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_RETURN';
354626 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
354627 p_apps_owner                   VARCHAR2(30);
354628 l_log_module                   VARCHAR2(240);
354629 BEGIN
354630 IF g_log_enabled THEN
354631       l_log_module := C_DEFAULT_MODULE||'.insert_sources_576';
354632 END IF;
354633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
354634 
354635       trace
354636          (p_msg      => 'BEGIN of insert_sources_576'
354637          ,p_level    => C_LEVEL_PROCEDURE
354638          ,p_module   => l_log_module);
354639 
354640 END IF;
354641 
354642 -- select APPS owner
354643 SELECT oracle_username
354644   INTO p_apps_owner
354645   FROM fnd_oracle_userid
354646  WHERE read_only_flag = 'U'
354647 ;
354648 
354649 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
354650       trace
354651          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
354652                         ' - p_language = '||p_language||
354653                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
354654                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
354655                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
354656                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
354657          ,p_level    => C_LEVEL_STATEMENT
354658          ,p_module   => l_log_module);
354659 END IF;
354660 
354661 
354662 --
354663 INSERT INTO xla_diag_sources --hdr1
354664 (
354665         event_id
354666       , ledger_id
354667       , sla_ledger_id
354668       , description_language
354669       , object_name
354670       , object_type_code
354671       , line_number
354672       , source_application_id
354673       , source_type_code
354674       , source_code
354675       , source_value
354676       , source_meaning
354677       , created_by
354678       , creation_date
354679       , last_update_date
354680       , last_updated_by
354681       , last_update_login
354682       , program_update_date
354683       , program_application_id
354684       , program_id
354685       , request_id
354686 )
354687 SELECT
354688         event_id
354689       , p_target_ledger_id
354690       , p_sla_ledger_id
354691       , p_language
354692       , object_name
354693       , object_type_code
354694       , line_number
354695       , source_application_id
354696       , source_type_code
354697       , source_code
354698       , SUBSTR(source_value ,1,1996)
354699       , SUBSTR(source_meaning,1,200)
354700       , xla_environment_pkg.g_Usr_Id
354701       , TRUNC(SYSDATE)
354702       , TRUNC(SYSDATE)
354703       , xla_environment_pkg.g_Usr_Id
354704       , xla_environment_pkg.g_Login_Id
354705       , TRUNC(SYSDATE)
354706       , xla_environment_pkg.g_Prog_Appl_Id
354707       , xla_environment_pkg.g_Prog_Id
354708       , xla_environment_pkg.g_Req_Id
354709   FROM (
354710        SELECT xet.event_id                  event_id
354711             , 0                             line_number
354712             , CASE r
354713                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
354714                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
354715                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
354716                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
354717                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
354718                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
354719                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
354720                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
354721                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
354722                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
354723                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
354724                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
354725                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
354726                 
354727                ELSE null
354728               END                           object_name
354729             , CASE r
354730                 WHEN 1 THEN 'HEADER' 
354731                 WHEN 2 THEN 'HEADER' 
354732                 WHEN 3 THEN 'HEADER' 
354733                 WHEN 4 THEN 'HEADER' 
354734                 WHEN 5 THEN 'HEADER' 
354735                 WHEN 6 THEN 'HEADER' 
354736                 WHEN 7 THEN 'HEADER' 
354737                 WHEN 8 THEN 'HEADER' 
354738                 WHEN 9 THEN 'HEADER' 
354739                 WHEN 10 THEN 'HEADER' 
354740                 WHEN 11 THEN 'HEADER' 
354741                 WHEN 12 THEN 'HEADER' 
354742                 WHEN 13 THEN 'HEADER' 
354743                 
354744                 ELSE null
354745               END                           object_type_code
354746             , CASE r
354747                 WHEN 1 THEN '707' 
354748                 WHEN 2 THEN '707' 
354749                 WHEN 3 THEN '707' 
354750                 WHEN 4 THEN '707' 
354751                 WHEN 5 THEN '707' 
354752                 WHEN 6 THEN '707' 
354753                 WHEN 7 THEN '707' 
354754                 WHEN 8 THEN '707' 
354755                 WHEN 9 THEN '707' 
354756                 WHEN 10 THEN '707' 
354757                 WHEN 11 THEN '707' 
354758                 WHEN 12 THEN '707' 
354759                 WHEN 13 THEN '707' 
354760                 
354761                 ELSE null
354762               END                           source_application_id
354763             , 'S'             source_type_code
354764             , CASE r
354765                 WHEN 1 THEN 'TRANSACTION_ID' 
354766                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
354767                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
354768                 WHEN 4 THEN 'TRANSACTION_UOM' 
354769                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
354770                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
354771                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
354772                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
354773                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
354774                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
354775                 WHEN 11 THEN 'TRANSACTION_ACTION_ID' 
354776                 WHEN 12 THEN 'DISTRIBUTION_TYPE' 
354777                 WHEN 13 THEN 'TRANSFER_TO_GL_INDICATOR' 
354778                 
354779                 ELSE null
354780               END                           source_code
354781             , CASE r
354782                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
354783                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
354784                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
354785                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
354786                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
354787                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
354788                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
354789                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
354790                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
354791                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
354792                 WHEN 11 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
354793                 WHEN 12 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
354794                 WHEN 13 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
354795                 
354796                 ELSE null
354797               END                           source_value
354798             , CASE r
354799                 WHEN 11 THEN fvl62.meaning
354800                 WHEN 12 THEN fvl85.meaning
354801                 WHEN 13 THEN fvl114.meaning
354802                 
354803                 ELSE null
354804               END               source_meaning
354805         FROM xla_events_gt     xet  
354806       , CST_XLA_INV_HEADERS_V  h1
354807       , CST_XLA_INV_REF_V  h3
354808       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
354809       , CST_XLA_INV_TXN_TYPES_REF_V  h5
354810       , CST_XLA_PLA_CATEGORY_REF_V  h6
354811   , fnd_lookup_values    fvl62
354812   , fnd_lookup_values    fvl85
354813   , fnd_lookup_values    fvl114
354814             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
354815        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
354816          AND xet.event_type_code = C_EVENT_TYPE_CODE
354817             AND h1.event_id = xet.event_id
354818  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
354819 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
354820 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
354821   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
354822   AND fvl62.view_application_id(+) = 700
354823   AND fvl62.language(+)            = USERENV('LANG')
354824      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
354825   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
354826   AND fvl85.view_application_id(+) = 700
354827   AND fvl85.language(+)            = USERENV('LANG')
354828      AND fvl114.lookup_type(+)         = 'YES_NO'
354829   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
354830   AND fvl114.view_application_id(+) = 0
354831   AND fvl114.language(+)            = USERENV('LANG')
354832   
354833 )
354834 ;
354835 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
354836 
354837       trace
354838          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
354839          ,p_level    => C_LEVEL_STATEMENT
354840          ,p_module   => l_log_module);
354841 
354842 END IF;
354843 --
354844 
354845 
354846 
354847 --
354848 INSERT INTO xla_diag_sources --line1
354849 (
354850         event_id
354851       , ledger_id
354852       , sla_ledger_id
354853       , description_language
354854       , object_name
354855       , object_type_code
354856       , line_number
354857       , source_application_id
354858       , source_type_code
354859       , source_code
354860       , source_value
354861       , source_meaning
354862       , created_by
354863       , creation_date
354864       , last_update_date
354865       , last_updated_by
354866       , last_update_login
354867       , program_update_date
354868       , program_application_id
354869       , program_id
354870       , request_id
354871 )
354872 SELECT  event_id
354873       , p_target_ledger_id
354874       , p_sla_ledger_id
354875       , p_language
354876       , object_name
354877       , object_type_code
354878       , line_number
354879       , source_application_id
354880       , source_type_code
354881       , source_code
354882       , SUBSTR(source_value,1,1996)
354883       , SUBSTR(source_meaning,1,200)
354884       , xla_environment_pkg.g_Usr_Id
354885       , TRUNC(SYSDATE)
354886       , TRUNC(SYSDATE)
354887       , xla_environment_pkg.g_Usr_Id
354888       , xla_environment_pkg.g_Login_Id
354889       , TRUNC(SYSDATE)
354890       , xla_environment_pkg.g_Prog_Appl_Id
354891       , xla_environment_pkg.g_Prog_Id
354892       , xla_environment_pkg.g_Req_Id
354893   FROM (
354894        SELECT xet.event_id                  event_id
354895             , l2.line_number                 line_number
354896             , CASE r
354897                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
354898                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
354899                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
354900                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
354901                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
354902                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
354903                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
354904                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
354905                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
354906                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
354907                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
354908                 
354909                ELSE null
354910               END                           object_name
354911             , CASE r
354912                 WHEN 1 THEN 'LINE' 
354913                 WHEN 2 THEN 'LINE' 
354914                 WHEN 3 THEN 'LINE' 
354915                 WHEN 4 THEN 'LINE' 
354916                 WHEN 5 THEN 'LINE' 
354917                 WHEN 6 THEN 'LINE' 
354918                 WHEN 7 THEN 'LINE' 
354919                 WHEN 8 THEN 'LINE' 
354920                 WHEN 9 THEN 'LINE' 
354921                 WHEN 10 THEN 'LINE' 
354922                 WHEN 11 THEN 'LINE' 
354923                 
354924                 ELSE null
354925               END                           object_type_code
354926             , CASE r
354927                 WHEN 1 THEN '707' 
354928                 WHEN 2 THEN '707' 
354929                 WHEN 3 THEN '707' 
354930                 WHEN 4 THEN '707' 
354931                 WHEN 5 THEN '707' 
354932                 WHEN 6 THEN '707' 
354933                 WHEN 7 THEN '707' 
354934                 WHEN 8 THEN '707' 
354935                 WHEN 9 THEN '707' 
354936                 WHEN 10 THEN '707' 
354937                 WHEN 11 THEN '707' 
354938                 
354939                 ELSE null
354940               END                           source_application_id
354941             , 'S'             source_type_code
354942             , CASE r
354943                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
354944                 WHEN 2 THEN 'COST_ELEMENT_ID' 
354945                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
354946                 WHEN 4 THEN 'CURRENCY_CODE' 
354947                 WHEN 5 THEN 'ENTERED_AMOUNT' 
354948                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
354949                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
354950                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
354951                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
354952                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
354953                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
354954                 
354955                 ELSE null
354956               END                           source_code
354957             , CASE r
354958                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
354959                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
354960                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
354961                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
354962                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
354963                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
354964                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
354965                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
354966                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
354967                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
354968                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
354969                 
354970                 ELSE null
354971               END                           source_value
354972             , CASE r
354973                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
354974                           1009615
354975                          ,TO_CHAR(l2.COST_ELEMENT_ID)
354976                          ,'COST_ELEMENT_ID'
354977                          ,'S'
354978                          ,707)
354979                 
354980                 ELSE null
354981               END               source_meaning
354982          FROM  xla_events_gt     xet  
354983         , CST_XLA_INV_LINES_V  l2
354984             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
354985         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
354986           AND xet.event_type_code = C_EVENT_TYPE_CODE
354987             AND l2.event_id          = xet.event_id
354988 
354989 )
354990 ;
354991 --
354992 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
354993 
354994       trace
354995          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
354996          ,p_level    => C_LEVEL_STATEMENT
354997          ,p_module   => l_log_module);
354998 
354999 END IF;
355000 
355001 
355002 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
355003       trace
355004          (p_msg      => 'END of insert_sources_576'
355005          ,p_level    => C_LEVEL_PROCEDURE
355006          ,p_module   => l_log_module);
355007 END IF;
355008 EXCEPTION
355009   WHEN xla_exceptions_pkg.application_exception THEN
355010       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
355011             trace
355012                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
355013                ,p_level    => C_LEVEL_EXCEPTION
355014                ,p_module   => l_log_module);
355015       END IF;
355016       RAISE;
355017   WHEN OTHERS THEN
355018       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
355019             trace
355020                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
355021                ,p_level    => C_LEVEL_EXCEPTION
355022                ,p_module   => l_log_module);
355023        END IF;
355024        xla_exceptions_pkg.raise_message
355025            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_576');
355026 END insert_sources_576;
355027 --
355028 
355029 ---------------------------------------
355030 --
355031 -- PRIVATE FUNCTION
355032 --         EventType_576
355033 --
355034 ----------------------------------------
355035 --
355036 FUNCTION EventType_576
355037        (p_application_id         IN NUMBER
355038        ,p_base_ledger_id         IN NUMBER
355039        ,p_target_ledger_id       IN NUMBER
355040        ,p_language               IN VARCHAR2
355041        ,p_currency_code          IN VARCHAR2
355042        ,p_sla_ledger_id          IN NUMBER
355043        ,p_pad_start_date         IN DATE
355044        ,p_pad_end_date           IN DATE
355045        ,p_primary_ledger_id      IN NUMBER)
355046 RETURN BOOLEAN IS
355047 --
355048 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SALES_RETURN';
355049 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
355050 
355051 l_calculate_acctd_flag   VARCHAR2(1) :='N';
355052 l_calculate_g_l_flag     VARCHAR2(1) :='N';
355053 --
355054 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355055 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355056 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
355057 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
355058 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355059 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
355060 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
355061 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355062 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
355063 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
355064 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355065 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355066 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355067 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
355068 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
355069 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
355070 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
355071 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
355072 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
355073 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
355074 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
355075 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
355076 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
355077 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
355078 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
355079 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
355080 
355081 l_event_id                             NUMBER;
355082 l_previous_event_id                    NUMBER;
355083 l_first_event_id                       NUMBER;
355084 l_last_event_id                        NUMBER;
355085 
355086 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
355087 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
355088 --
355089 --
355090 l_result                    BOOLEAN := TRUE;
355091 l_rows                      NUMBER  := 1000;
355092 l_event_type_name           VARCHAR2(80) := 'Logical Intercompany Sales Return';
355093 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
355094 l_description               VARCHAR2(4000);
355095 l_transaction_reversal      NUMBER;
355096 l_ae_header_id              NUMBER;
355097 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
355098 l_log_module                VARCHAR2(240);
355099 --
355100 l_acct_reversal_source      VARCHAR2(30);
355101 l_trx_reversal_source       VARCHAR2(30);
355102 
355103 l_continue_with_lines       BOOLEAN := TRUE;
355104 --
355105 l_acc_rev_gl_date_source    DATE;                      -- 4262811
355106 --
355107 type t_array_event_id is table of number index by binary_integer;
355108 
355109 l_rec_array_event                    t_rec_array_event;
355110 l_null_rec_array_event               t_rec_array_event;
355111 l_array_ae_header_id                 xla_number_array_type;
355112 l_actual_flag                        VARCHAR2(1) := NULL;
355113 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
355114 l_balance_type_code                  VARCHAR2(1) :=NULL;
355115 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
355116 
355117 --
355118 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
355119 --
355120 
355121 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
355122 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
355123 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
355124 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
355125 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
355126 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
355127 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
355128 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
355129 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
355130 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
355131 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
355132 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
355133 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
355134 
355135 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
355136 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
355137 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
355138 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
355139 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
355140 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
355141 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
355142 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
355143 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
355144 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
355145 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
355146 
355147 l_array_source_1              t_array_source_1;
355148 l_array_source_2              t_array_source_2;
355149 l_array_source_3              t_array_source_3;
355150 l_array_source_4              t_array_source_4;
355151 l_array_source_5              t_array_source_5;
355152 l_array_source_41              t_array_source_41;
355153 l_array_source_42              t_array_source_42;
355154 l_array_source_43              t_array_source_43;
355155 l_array_source_44              t_array_source_44;
355156 l_array_source_45              t_array_source_45;
355157 l_array_source_62              t_array_source_62;
355158 l_array_source_62_meaning      t_array_lookup_meaning;
355159 l_array_source_85              t_array_source_85;
355160 l_array_source_85_meaning      t_array_lookup_meaning;
355161 l_array_source_114              t_array_source_114;
355162 l_array_source_114_meaning      t_array_lookup_meaning;
355163 
355164 l_array_source_11      t_array_source_11;
355165 l_array_source_15      t_array_source_15;
355166 l_array_source_84      t_array_source_84;
355167 l_array_source_88      t_array_source_88;
355168 l_array_source_91      t_array_source_91;
355169 l_array_source_92      t_array_source_92;
355170 l_array_source_93      t_array_source_93;
355171 l_array_source_94      t_array_source_94;
355172 l_array_source_95      t_array_source_95;
355173 l_array_source_97      t_array_source_97;
355174 l_array_source_108      t_array_source_108;
355175 
355176 --
355177 CURSOR header_cur
355178 IS
355179 SELECT /*+ leading(xet) cardinality(xet,1) */
355180 -- Event Type Code: LOG_IC_SALES_RETURN
355181 -- Event Class Code: LOG_INTERCOMPANY
355182     xet.entity_id
355183   , xet.legal_entity_id
355184   , xet.entity_code
355185   , xet.transaction_number
355186   , xet.event_id
355187   , xet.event_class_code
355188   , xet.event_type_code
355189   , xet.event_number
355190   , xet.event_date
355191   , xet.transaction_date
355192   , xet.reference_num_1
355193   , xet.reference_num_2
355194   , xet.reference_num_3
355195   , xet.reference_num_4
355196   , xet.reference_char_1
355197   , xet.reference_char_2
355198   , xet.reference_char_3
355199   , xet.reference_char_4
355200   , xet.reference_date_1
355201   , xet.reference_date_2
355202   , xet.reference_date_3
355203   , xet.reference_date_4
355204   , xet.event_created_by
355205   , xet.budgetary_control_flag 
355206   , h1.TRANSACTION_ID    source_1
355207   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
355208   , h3.TRANSACTION_QUANTITY    source_3
355209   , h3.TRANSACTION_UOM    source_4
355210   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
355211   , h6.PLA_MATERIAL_ACCOUNT    source_41
355212   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
355213   , h6.PLA_RESOURCE_ACCOUNT    source_43
355214   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
355215   , h6.PLA_OVERHEAD_ACCOUNT    source_45
355216   , h1.TRANSACTION_ACTION_ID    source_62
355217   , fvl62.meaning   source_62_meaning
355218   , h1.DISTRIBUTION_TYPE    source_85
355219   , fvl85.meaning   source_85_meaning
355220   , h1.TRANSFER_TO_GL_INDICATOR    source_114
355221   , fvl114.meaning   source_114_meaning
355222   FROM xla_events_gt     xet 
355223   , CST_XLA_INV_HEADERS_V  h1
355224   , CST_XLA_INV_REF_V  h3
355225   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
355226   , CST_XLA_INV_TXN_TYPES_REF_V  h5
355227   , CST_XLA_PLA_CATEGORY_REF_V  h6
355228   , fnd_lookup_values    fvl62
355229   , fnd_lookup_values    fvl85
355230   , fnd_lookup_values    fvl114
355231  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
355232    and xet.event_type_code = C_EVENT_TYPE_CODE
355233    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
355234  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
355235 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
355236 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
355237   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
355238   AND fvl62.view_application_id(+) = 700
355239   AND fvl62.language(+)            = USERENV('LANG')
355240      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
355241   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
355242   AND fvl85.view_application_id(+) = 700
355243   AND fvl85.language(+)            = USERENV('LANG')
355244      AND fvl114.lookup_type(+)         = 'YES_NO'
355245   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
355246   AND fvl114.view_application_id(+) = 0
355247   AND fvl114.language(+)            = USERENV('LANG')
355248   
355249  ORDER BY event_id
355250 ;
355251 
355252 
355253 --
355254 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
355255 IS
355256 SELECT /*+ leading(xet) cardinality(xet,1) */
355257 -- Event Type Code: LOG_IC_SALES_RETURN
355258 -- Event Class Code: LOG_INTERCOMPANY
355259     xet.entity_id
355260    ,xet.legal_entity_id
355261    ,xet.entity_code
355262    ,xet.transaction_number
355263    ,xet.event_id
355264    ,xet.event_class_code
355265    ,xet.event_type_code
355266    ,xet.event_number
355267    ,xet.event_date
355268    ,xet.transaction_date
355269    ,xet.reference_num_1
355270    ,xet.reference_num_2
355271    ,xet.reference_num_3
355272    ,xet.reference_num_4
355273    ,xet.reference_char_1
355274    ,xet.reference_char_2
355275    ,xet.reference_char_3
355276    ,xet.reference_char_4
355277    ,xet.reference_date_1
355278    ,xet.reference_date_2
355279    ,xet.reference_date_3
355280    ,xet.reference_date_4
355281    ,xet.event_created_by
355282    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
355283   , l2.CODE_COMBINATION_ID    source_11
355284   , l2.COST_ELEMENT_ID    source_15
355285   , l2.DISTRIBUTION_IDENTIFIER    source_84
355286   , l2.CURRENCY_CODE    source_88
355287   , l2.ENTERED_AMOUNT    source_91
355288   , l2.CURRENCY_CONVERSION_DATE    source_92
355289   , l2.CURRENCY_CONVERSION_RATE    source_93
355290   , l2.CURRENCY_CONVERSION_TYPE    source_94
355291   , l2.ACCOUNTED_AMOUNT    source_95
355292   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
355293   , l2.L_ORGANIZATION_CODE    source_108
355294   FROM xla_events_gt     xet 
355295   , CST_XLA_INV_LINES_V  l2
355296  WHERE xet.event_id between x_first_event_id and x_last_event_id
355297    and xet.event_date between p_pad_start_date and p_pad_end_date
355298    and xet.event_type_code = C_EVENT_TYPE_CODE
355299    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
355300 ;
355301 
355302 --
355303 BEGIN
355304 IF g_log_enabled THEN
355305    l_log_module := C_DEFAULT_MODULE||'.EventType_576';
355306 END IF;
355307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
355308    trace
355309       (p_msg      => 'BEGIN of EventType_576'
355310       ,p_level    => C_LEVEL_PROCEDURE
355311       ,p_module   => l_log_module);
355312 END IF;
355313 
355314 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
355315    trace
355316       (p_msg      => 'p_application_id = '||p_application_id||
355317                      ' - p_base_ledger_id = '||p_base_ledger_id||
355318                      ' - p_target_ledger_id  = '||p_target_ledger_id||
355319                      ' - p_language = '||p_language||
355320                      ' - p_currency_code = '||p_currency_code||
355321                      ' - p_sla_ledger_id = '||p_sla_ledger_id
355322       ,p_level    => C_LEVEL_STATEMENT
355323       ,p_module   => l_log_module);
355324 END IF;
355325 --
355326 -- initialze arrays
355327 --
355328 g_array_event.DELETE;
355329 l_rec_array_event := l_null_rec_array_event;
355330 --
355331 --------------------------------------
355332 -- 4262811 Initialze MPA Line Number
355333 --------------------------------------
355334 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
355335 
355336 --
355337 
355338 --
355339 OPEN header_cur;
355340 --
355341 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
355342    trace
355343    (p_msg      => 'SQL - FETCH header_cur'
355344    ,p_level    => C_LEVEL_STATEMENT
355345    ,p_module   => l_log_module);
355346 END IF;
355347 --
355348 LOOP
355349 FETCH header_cur BULK COLLECT INTO
355350         l_array_entity_id
355351       , l_array_legal_entity_id
355352       , l_array_entity_code
355353       , l_array_transaction_num
355354       , l_array_event_id
355355       , l_array_class_code
355356       , l_array_event_type
355357       , l_array_event_number
355358       , l_array_event_date
355359       , l_array_transaction_date
355360       , l_array_reference_num_1
355361       , l_array_reference_num_2
355362       , l_array_reference_num_3
355363       , l_array_reference_num_4
355364       , l_array_reference_char_1
355365       , l_array_reference_char_2
355366       , l_array_reference_char_3
355367       , l_array_reference_char_4
355368       , l_array_reference_date_1
355369       , l_array_reference_date_2
355370       , l_array_reference_date_3
355371       , l_array_reference_date_4
355372       , l_array_event_created_by
355373       , l_array_budgetary_control_flag 
355374       , l_array_source_1
355375       , l_array_source_2
355376       , l_array_source_3
355377       , l_array_source_4
355378       , l_array_source_5
355379       , l_array_source_41
355380       , l_array_source_42
355381       , l_array_source_43
355382       , l_array_source_44
355383       , l_array_source_45
355384       , l_array_source_62
355385       , l_array_source_62_meaning
355386       , l_array_source_85
355387       , l_array_source_85_meaning
355388       , l_array_source_114
355389       , l_array_source_114_meaning
355390       LIMIT l_rows;
355391 --
355392 IF (C_LEVEL_EVENT >= g_log_level) THEN
355393    trace
355394    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
355395    ,p_level    => C_LEVEL_EVENT
355396    ,p_module   => l_log_module);
355397 END IF;
355398 --
355399 EXIT WHEN l_array_entity_id.COUNT = 0;
355400 
355401 -- initialize arrays
355402 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
355403 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
355404 
355405 --
355406 -- Bug 4458708
355407 --
355408 XLA_AE_LINES_PKG.g_LineNumber := 0;
355409 
355410 
355411 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
355412 g_last_hdr_idx := l_array_event_id.LAST;
355413 --
355414 -- loop for the headers. Each iteration is for each header extract row
355415 -- fetched in header cursor
355416 --
355417 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
355418 
355419 --
355420 -- set event info as cache for other routines to refer event attributes
355421 --
355422 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
355423    (p_application_id           => p_application_id
355424    ,p_primary_ledger_id        => p_primary_ledger_id
355425    ,p_base_ledger_id           => p_base_ledger_id
355426    ,p_target_ledger_id         => p_target_ledger_id
355427    ,p_entity_id                => l_array_entity_id(hdr_idx)
355428    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
355429    ,p_entity_code              => l_array_entity_code(hdr_idx)
355430    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
355431    ,p_event_id                 => l_array_event_id(hdr_idx)
355432    ,p_event_class_code         => l_array_class_code(hdr_idx)
355433    ,p_event_type_code          => l_array_event_type(hdr_idx)
355434    ,p_event_number             => l_array_event_number(hdr_idx)
355435    ,p_event_date               => l_array_event_date(hdr_idx)
355436    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
355437    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
355438    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
355439    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
355440    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
355441    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
355442    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
355443    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
355444    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
355445    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
355446    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
355447    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
355448    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
355449    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
355450    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
355451 
355452 --
355453 -- set the status of entry to C_VALID (0)
355454 --
355455 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
355456 
355457 --
355458 -- initialize a row for ae header
355459 --
355460 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
355461 
355462 l_event_id := l_array_event_id(hdr_idx);
355463 
355464 --
355465 -- storing the hdr_idx for event. May be used by line cursor.
355466 --
355467 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
355468 
355469 --
355470 -- store sources from header extract. This can be improved to
355471 -- store only those sources from header extract that may be used in lines
355472 --
355473 
355474 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
355475 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
355476 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
355477 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
355478 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
355479 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
355480 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
355481 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
355482 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
355483 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
355484 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
355485 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
355486 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
355487 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
355488 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
355489 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
355490 
355491 --
355492 -- initilaize the status of ae headers for diffrent balance types
355493 -- the status is initialised to C_NOT_CREATED (2)
355494 --
355495 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
355496 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
355497 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
355498 
355499 --
355500 -- call api to validate and store accounting attributes for header
355501 --
355502 
355503 ------------------------------------------------------------
355504 -- Accrual Reversal : to get date for Standard Source (NONE)
355505 ------------------------------------------------------------
355506 l_acc_rev_gl_date_source := NULL;
355507 
355508      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
355509       l_rec_acct_attrs.array_date_value(1) := 
355510 xla_ae_sources_pkg.GetSystemSourceDate(
355511    p_source_code           => 'XLA_REFERENCE_DATE_1'
355512  , p_source_type_code      => 'Y'
355513  , p_source_application_id =>  602
355514 );
355515      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
355516       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
355517 
355518 
355519 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
355520 
355521 XLA_AE_HEADER_PKG.SetJeCategoryName;
355522 
355523 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
355524 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
355525 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
355526 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
355527 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
355528 
355529 
355530 --
355531 xla_ae_header_pkg.SetHdrDescription(
355532    p_description => Description_1 (
355533    p_application_id => p_application_id 
355534  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
355535  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
355536  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
355537  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
355538  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
355539    )
355540 );
355541 --
355542 
355543 -- No header level analytical criteria
355544 
355545 --
355546 --accounting attribute enhancement, bug 3612931
355547 --
355548 l_trx_reversal_source := SUBSTR(NULL, 1,30);
355549 
355550 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
355551    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
355552 
355553    xla_accounting_err_pkg.build_message
355554       (p_appli_s_name            => 'XLA'
355555       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
355556       ,p_token_1                 => 'ACCT_ATTR_NAME'
355557       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
355558       ,p_token_2                 => 'PRODUCT_NAME'
355559       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
355560       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
355561       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
355562       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
355563 
355564 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
355565    --
355566    -- following sets the accounting attributes needed to reverse
355567    -- accounting for a distributeion
355568    --
355569    xla_ae_lines_pkg.SetTrxReversalAttrs
355570       (p_event_id              => l_event_id
355571       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
355572       ,p_trx_reversal_source   => l_trx_reversal_source);
355573 
355574 END IF;
355575 
355576 
355577 ----------------------------------------------------------------
355578 -- 4262811 -  update the header statuses to invalid in need be
355579 ----------------------------------------------------------------
355580 --
355581 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
355582 
355583 
355584   -----------------------------------------------
355585   -- No accrual reversal for the event class/type
355586   -----------------------------------------------
355587 ----------------------------------------------------------------
355588 
355589 --
355590 -- this ends the header loop iteration for one bulk fetch
355591 --
355592 END LOOP;
355593 
355594 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
355595 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
355596 
355597 --
355598 -- insert dummy rows into lines gt table that were created due to
355599 -- transaction reversals
355600 --
355601 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
355602    l_result := XLA_AE_LINES_PKG.InsertLines;
355603 END IF;
355604 
355605 --
355606 -- reset the temp_line_num for each set of events fetched from header
355607 -- cursor rather than doing it for each new event in line cursor
355608 -- Bug 3939231
355609 --
355610 xla_ae_lines_pkg.g_temp_line_num := 0;
355611 
355612 
355613 
355614 --
355615 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
355616 --
355617 --
355618 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
355619 
355620       trace
355621          (p_msg      => 'SQL - FETCH line_cur'
355622          ,p_level    => C_LEVEL_STATEMENT
355623          ,p_module   => l_log_module);
355624 
355625 END IF;
355626 --
355627 --
355628 LOOP
355629   --
355630   FETCH line_cur BULK COLLECT INTO
355631         l_array_entity_id
355632       , l_array_legal_entity_id
355633       , l_array_entity_code
355634       , l_array_transaction_num
355635       , l_array_event_id
355636       , l_array_class_code
355637       , l_array_event_type
355638       , l_array_event_number
355639       , l_array_event_date
355640       , l_array_transaction_date
355641       , l_array_reference_num_1
355642       , l_array_reference_num_2
355643       , l_array_reference_num_3
355644       , l_array_reference_num_4
355645       , l_array_reference_char_1
355646       , l_array_reference_char_2
355647       , l_array_reference_char_3
355648       , l_array_reference_char_4
355649       , l_array_reference_date_1
355650       , l_array_reference_date_2
355651       , l_array_reference_date_3
355652       , l_array_reference_date_4
355653       , l_array_event_created_by
355654       , l_array_budgetary_control_flag
355655       , l_array_extract_line_num 
355656       , l_array_source_11
355657       , l_array_source_15
355658       , l_array_source_84
355659       , l_array_source_88
355660       , l_array_source_91
355661       , l_array_source_92
355662       , l_array_source_93
355663       , l_array_source_94
355664       , l_array_source_95
355665       , l_array_source_97
355666       , l_array_source_108
355667       LIMIT l_rows;
355668 
355669   --
355670   IF (C_LEVEL_EVENT >= g_log_level) THEN
355671             trace
355672                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
355673                ,p_level    => C_LEVEL_EVENT
355674                ,p_module   => l_log_module);
355675   END IF;
355676   --
355677   EXIT WHEN l_array_entity_id.count = 0;
355678 
355679   XLA_AE_LINES_PKG.g_rec_lines := null;
355680 
355681 --
355682 -- Bug 4458708
355683 --
355684 XLA_AE_LINES_PKG.g_LineNumber := 0;
355685 --
355686 --
355687 
355688 FOR Idx IN 1..l_array_event_id.count LOOP
355689    --
355690    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
355691    --
355692    l_event_id := l_array_event_id(idx);  -- 5648433
355693 
355694    --
355695    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
355696    --
355697 
355698    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
355699              (g_array_event(l_event_id).array_value_num('header_index'))
355700          ,'N'
355701          ) <> 'Y'
355702    THEN
355703       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
355704          trace
355705             (p_msg      => 'Trancaction revesal option is not Y '
355706             ,p_level    => C_LEVEL_STATEMENT
355707             ,p_module   => l_log_module);
355708       END IF;
355709 
355710 --
355711 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
355712 --
355713 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
355714 --
355715 -- set event info as cache for other routines to refer event attributes
355716 --
355717 
355718 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
355719    l_previous_event_id := l_event_id;
355720 
355721    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
355722       (p_application_id           => p_application_id
355723       ,p_primary_ledger_id        => p_primary_ledger_id
355724       ,p_base_ledger_id           => p_base_ledger_id
355725       ,p_target_ledger_id         => p_target_ledger_id
355726       ,p_entity_id                => l_array_entity_id(Idx)
355727       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
355728       ,p_entity_code              => l_array_entity_code(Idx)
355729       ,p_transaction_num          => l_array_transaction_num(Idx)
355730       ,p_event_id                 => l_array_event_id(Idx)
355731       ,p_event_class_code         => l_array_class_code(Idx)
355732       ,p_event_type_code          => l_array_event_type(Idx)
355733       ,p_event_number             => l_array_event_number(Idx)
355734       ,p_event_date               => l_array_event_date(Idx)
355735       ,p_transaction_date         => l_array_transaction_date(Idx)
355736       ,p_reference_num_1          => l_array_reference_num_1(Idx)
355737       ,p_reference_num_2          => l_array_reference_num_2(Idx)
355738       ,p_reference_num_3          => l_array_reference_num_3(Idx)
355739       ,p_reference_num_4          => l_array_reference_num_4(Idx)
355740       ,p_reference_char_1         => l_array_reference_char_1(Idx)
355741       ,p_reference_char_2         => l_array_reference_char_2(Idx)
355742       ,p_reference_char_3         => l_array_reference_char_3(Idx)
355743       ,p_reference_char_4         => l_array_reference_char_4(Idx)
355744       ,p_reference_date_1         => l_array_reference_date_1(Idx)
355745       ,p_reference_date_2         => l_array_reference_date_2(Idx)
355746       ,p_reference_date_3         => l_array_reference_date_3(Idx)
355747       ,p_reference_date_4         => l_array_reference_date_4(Idx)
355748       ,p_event_created_by         => l_array_event_created_by(Idx)
355749       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
355750        --
355751 END IF;
355752 
355753 
355754 
355755 --
355756 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
355757 
355758 l_acct_reversal_source := SUBSTR(NULL, 1,30);
355759 
355760 IF l_continue_with_lines THEN
355761    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
355762       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
355763 
355764       xla_accounting_err_pkg.build_message
355765          (p_appli_s_name            => 'XLA'
355766          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
355767          ,p_token_1                 => 'LINE_NUMBER'
355768          ,p_value_1                 => l_array_extract_line_num(Idx)
355769          ,p_token_2                 => 'PRODUCT_NAME'
355770          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
355771          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
355772          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
355773          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
355774 
355775    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
355776       --
355777       -- following sets the accounting attributes needed to reverse
355778       -- accounting for a distributeion
355779       --
355780 
355781       --
355782       -- 5217187
355783       --
355784       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
355785       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
355786                                        g_array_event(l_event_id).array_value_num('header_index'));
355787       --
355788       --
355789 
355790       -- No reversal code generated
355791 
355792       xla_ae_lines_pkg.SetAcctReversalAttrs
355793          (p_event_id             => l_event_id
355794          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
355795          ,p_calculate_acctd_flag => l_calculate_acctd_flag
355796          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
355797    END IF;
355798 
355799    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
355800        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
355801 
355802 --
355803 AcctLineType_142 (
355804  p_application_id  => p_application_id
355805  ,p_event_id     => l_event_id
355806  ,p_calculate_acctd_flag => l_calculate_acctd_flag
355807  ,p_calculate_g_l_flag => l_calculate_g_l_flag
355808  ,p_actual_flag => l_actual_flag
355809  ,p_balance_type_code => l_balance_type_code
355810  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
355811  
355812  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
355813  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
355814  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
355815  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
355816  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
355817  , p_source_11 => l_array_source_11(Idx)
355818  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
355819  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
355820  , p_source_84 => l_array_source_84(Idx)
355821  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
355822  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
355823  , p_source_88 => l_array_source_88(Idx)
355824  , p_source_91 => l_array_source_91(Idx)
355825  , p_source_92 => l_array_source_92(Idx)
355826  , p_source_93 => l_array_source_93(Idx)
355827  , p_source_94 => l_array_source_94(Idx)
355828  , p_source_95 => l_array_source_95(Idx)
355829  , p_source_97 => l_array_source_97(Idx)
355830  );
355831 If(l_balance_type_code = 'A') THEN
355832   l_actual_gain_loss_ref := l_gain_or_loss_ref;
355833 END IF;
355834 
355835 --
355836 
355837 
355838 --
355839 AcctLineType_268 (
355840  p_application_id  => p_application_id
355841  ,p_event_id     => l_event_id
355842  ,p_calculate_acctd_flag => l_calculate_acctd_flag
355843  ,p_calculate_g_l_flag => l_calculate_g_l_flag
355844  ,p_actual_flag => l_actual_flag
355845  ,p_balance_type_code => l_balance_type_code
355846  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
355847  
355848  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
355849  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
355850  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
355851  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
355852  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
355853  , p_source_15 => l_array_source_15(Idx)
355854  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
355855  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
355856  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
355857  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
355858  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
355859  , p_source_84 => l_array_source_84(Idx)
355860  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
355861  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
355862  , p_source_88 => l_array_source_88(Idx)
355863  , p_source_91 => l_array_source_91(Idx)
355864  , p_source_92 => l_array_source_92(Idx)
355865  , p_source_93 => l_array_source_93(Idx)
355866  , p_source_94 => l_array_source_94(Idx)
355867  , p_source_95 => l_array_source_95(Idx)
355868  , p_source_97 => l_array_source_97(Idx)
355869  , p_source_108 => l_array_source_108(Idx)
355870  );
355871 If(l_balance_type_code = 'A') THEN
355872   l_actual_gain_loss_ref := l_gain_or_loss_ref;
355873 END IF;
355874 
355875 --
355876 
355877       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
355878       -- or secondary ledger that has different currency with primary
355879       -- or alc that is calculated by sla
355880       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
355881             (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'))
355882 
355883 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
355884 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
355885           AND (l_actual_flag = 'A')) THEN
355886         XLA_AE_LINES_PKG.CreateGainOrLossLines(
355887           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
355888          ,p_application_id   => p_application_id
355889          ,p_amb_context_code => 'DEFAULT'
355890          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
355891          ,p_event_class_code => C_EVENT_CLASS_CODE
355892          ,p_event_type_code  => C_EVENT_TYPE_CODE
355893          
355894          ,p_gain_ccid        => -1
355895          ,p_loss_ccid        => -1
355896 
355897          ,p_actual_flag      => l_actual_flag
355898          ,p_enc_flag         => null
355899          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
355900          ,p_enc_g_l_ref      => null
355901          );
355902       END IF;
355903    END IF;
355904 END IF;
355905 
355906    ELSE
355907       --
355908       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
355909       --
355910       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
355911          trace
355912             (p_msg      => 'Trancaction revesal option is Y'
355913             ,p_level    => C_LEVEL_STATEMENT
355914             ,p_module   => l_log_module);
355915       END IF;
355916    END IF;
355917 
355918 END LOOP;
355919 l_result := XLA_AE_LINES_PKG.InsertLines ;
355920 end loop;
355921 close line_cur;
355922 
355923 
355924 --
355925 -- insert headers into xla_ae_headers_gt table
355926 --
355927 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
355928 
355929 -- insert into errors table here.
355930 
355931 END LOOP;
355932 
355933 --
355934 -- 4865292
355935 --
355936 -- Compare g_hdr_extract_count with event count in
355937 -- CreateHeadersAndLines.
355938 --
355939 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
355940 
355941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
355942    trace (p_msg     => '# rows extracted from header extract objects '
355943                     || ' (running total): '
355944                     || g_hdr_extract_count
355945          ,p_level   => C_LEVEL_STATEMENT
355946          ,p_module  => l_log_module);
355947 END IF;
355948 
355949 CLOSE header_cur;
355950 --
355951 
355952 --
355953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
355954    trace
355955       (p_msg      => 'END of EventType_576'
355956       ,p_level    => C_LEVEL_PROCEDURE
355957       ,p_module   => l_log_module);
355958 END IF;
355959 --
355960 RETURN l_result;
355961 EXCEPTION
355962 WHEN xla_exceptions_pkg.application_exception THEN
355963    
355964 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
355965 
355966    
355967 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
355968 
355969    RAISE;
355970 
355971 WHEN NO_DATA_FOUND THEN
355972 
355973 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
355974 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
355975 
355976 FOR header_record IN header_cur
355977 LOOP
355978     l_array_header_events(header_record.event_id) := header_record.event_id;
355979 END LOOP;
355980 
355981 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
355982 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
355983 
355984 fnd_file.put_line(fnd_file.LOG, '                    ');
355985 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
355986 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
355987 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
355988 
355989 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
355990 LOOP
355991 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
355992 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
355993         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
355994 	END IF;
355995 END LOOP;
355996 
355997 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
355998 fnd_file.put_line(fnd_file.LOG, '                    ');
355999 
356000 
356001 xla_exceptions_pkg.raise_message
356002       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_576');
356003 
356004 
356005 WHEN OTHERS THEN
356006    xla_exceptions_pkg.raise_message
356007       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_576');
356008 END EventType_576;
356009 --
356010 
356011 ---------------------------------------
356012 --
356013 -- PRIVATE PROCEDURE
356014 --         insert_sources_577
356015 --
356016 ----------------------------------------
356017 --
356018 PROCEDURE insert_sources_577(
356019                                 p_target_ledger_id       IN NUMBER
356020                               , p_language               IN VARCHAR2
356021                               , p_sla_ledger_id          IN NUMBER
356022                               , p_pad_start_date         IN DATE
356023                               , p_pad_end_date           IN DATE
356024                          )
356025 IS
356026 
356027 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SHIPMENT_RCPT';
356028 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
356029 p_apps_owner                   VARCHAR2(30);
356030 l_log_module                   VARCHAR2(240);
356031 BEGIN
356032 IF g_log_enabled THEN
356033       l_log_module := C_DEFAULT_MODULE||'.insert_sources_577';
356034 END IF;
356035 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
356036 
356037       trace
356038          (p_msg      => 'BEGIN of insert_sources_577'
356039          ,p_level    => C_LEVEL_PROCEDURE
356040          ,p_module   => l_log_module);
356041 
356042 END IF;
356043 
356044 -- select APPS owner
356045 SELECT oracle_username
356046   INTO p_apps_owner
356047   FROM fnd_oracle_userid
356048  WHERE read_only_flag = 'U'
356049 ;
356050 
356051 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
356052       trace
356053          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
356054                         ' - p_language = '||p_language||
356055                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
356056                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
356057                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
356058                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
356059          ,p_level    => C_LEVEL_STATEMENT
356060          ,p_module   => l_log_module);
356061 END IF;
356062 
356063 
356064 --
356065 INSERT INTO xla_diag_sources --hdr1
356066 (
356067         event_id
356068       , ledger_id
356069       , sla_ledger_id
356070       , description_language
356071       , object_name
356072       , object_type_code
356073       , line_number
356074       , source_application_id
356075       , source_type_code
356076       , source_code
356077       , source_value
356078       , source_meaning
356079       , created_by
356080       , creation_date
356081       , last_update_date
356082       , last_updated_by
356083       , last_update_login
356084       , program_update_date
356085       , program_application_id
356086       , program_id
356087       , request_id
356088 )
356089 SELECT
356090         event_id
356091       , p_target_ledger_id
356092       , p_sla_ledger_id
356093       , p_language
356094       , object_name
356095       , object_type_code
356096       , line_number
356097       , source_application_id
356098       , source_type_code
356099       , source_code
356100       , SUBSTR(source_value ,1,1996)
356101       , SUBSTR(source_meaning,1,200)
356102       , xla_environment_pkg.g_Usr_Id
356103       , TRUNC(SYSDATE)
356104       , TRUNC(SYSDATE)
356105       , xla_environment_pkg.g_Usr_Id
356106       , xla_environment_pkg.g_Login_Id
356107       , TRUNC(SYSDATE)
356108       , xla_environment_pkg.g_Prog_Appl_Id
356109       , xla_environment_pkg.g_Prog_Id
356110       , xla_environment_pkg.g_Req_Id
356111   FROM (
356112        SELECT xet.event_id                  event_id
356113             , 0                             line_number
356114             , CASE r
356115                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
356116                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
356117                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
356118                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
356119                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
356120                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
356121                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
356122                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
356123                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
356124                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
356125                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
356126                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
356127                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
356128                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
356129                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
356130                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
356131                 
356132                ELSE null
356133               END                           object_name
356134             , CASE r
356135                 WHEN 1 THEN 'HEADER' 
356136                 WHEN 2 THEN 'HEADER' 
356137                 WHEN 3 THEN 'HEADER' 
356138                 WHEN 4 THEN 'HEADER' 
356139                 WHEN 5 THEN 'HEADER' 
356140                 WHEN 6 THEN 'HEADER' 
356141                 WHEN 7 THEN 'HEADER' 
356142                 WHEN 8 THEN 'HEADER' 
356143                 WHEN 9 THEN 'HEADER' 
356144                 WHEN 10 THEN 'HEADER' 
356145                 WHEN 11 THEN 'HEADER' 
356146                 WHEN 12 THEN 'HEADER' 
356147                 WHEN 13 THEN 'HEADER' 
356148                 WHEN 14 THEN 'HEADER' 
356149                 WHEN 15 THEN 'HEADER' 
356150                 WHEN 16 THEN 'HEADER' 
356151                 
356152                 ELSE null
356153               END                           object_type_code
356154             , CASE r
356155                 WHEN 1 THEN '707' 
356156                 WHEN 2 THEN '707' 
356157                 WHEN 3 THEN '707' 
356158                 WHEN 4 THEN '707' 
356159                 WHEN 5 THEN '707' 
356160                 WHEN 6 THEN '707' 
356161                 WHEN 7 THEN '707' 
356162                 WHEN 8 THEN '707' 
356163                 WHEN 9 THEN '707' 
356164                 WHEN 10 THEN '707' 
356165                 WHEN 11 THEN '707' 
356166                 WHEN 12 THEN '707' 
356167                 WHEN 13 THEN '707' 
356168                 WHEN 14 THEN '707' 
356169                 WHEN 15 THEN '707' 
356170                 WHEN 16 THEN '707' 
356171                 
356172                 ELSE null
356173               END                           source_application_id
356174             , 'S'             source_type_code
356175             , CASE r
356176                 WHEN 1 THEN 'TRANSACTION_ID' 
356177                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
356178                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
356179                 WHEN 4 THEN 'TRANSACTION_UOM' 
356180                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
356181                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
356182                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
356183                 WHEN 8 THEN 'PLA_EXPENSE_ACCOUNT' 
356184                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
356185                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
356186                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
356187                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
356188                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
356189                 WHEN 14 THEN 'TRANSACTION_ACTION_ID' 
356190                 WHEN 15 THEN 'DISTRIBUTION_TYPE' 
356191                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
356192                 
356193                 ELSE null
356194               END                           source_code
356195             , CASE r
356196                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
356197                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
356198                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
356199                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
356200                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
356201                 WHEN 6 THEN TO_CHAR(h3.INV_TXN_DISTRIBUTION_ACCT)
356202                 WHEN 7 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
356203                 WHEN 8 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
356204                 WHEN 9 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
356205                 WHEN 10 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
356206                 WHEN 11 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
356207                 WHEN 12 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
356208                 WHEN 13 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
356209                 WHEN 14 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
356210                 WHEN 15 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
356211                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
356212                 
356213                 ELSE null
356214               END                           source_value
356215             , CASE r
356216                 WHEN 14 THEN fvl62.meaning
356217                 WHEN 15 THEN fvl85.meaning
356218                 WHEN 16 THEN fvl114.meaning
356219                 
356220                 ELSE null
356221               END               source_meaning
356222         FROM xla_events_gt     xet  
356223       , CST_XLA_INV_HEADERS_V  h1
356224       , CST_XLA_INV_REF_V  h3
356225       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
356226       , CST_XLA_INV_TXN_TYPES_REF_V  h5
356227       , CST_XLA_PLA_CATEGORY_REF_V  h6
356228   , fnd_lookup_values    fvl62
356229   , fnd_lookup_values    fvl85
356230   , fnd_lookup_values    fvl114
356231             ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
356232        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
356233          AND xet.event_type_code = C_EVENT_TYPE_CODE
356234             AND h1.event_id = xet.event_id
356235  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
356236 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
356237 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
356238   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
356239   AND fvl62.view_application_id(+) = 700
356240   AND fvl62.language(+)            = USERENV('LANG')
356241      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
356242   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
356243   AND fvl85.view_application_id(+) = 700
356244   AND fvl85.language(+)            = USERENV('LANG')
356245      AND fvl114.lookup_type(+)         = 'YES_NO'
356246   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
356247   AND fvl114.view_application_id(+) = 0
356248   AND fvl114.language(+)            = USERENV('LANG')
356249   
356250 )
356251 ;
356252 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
356253 
356254       trace
356255          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
356256          ,p_level    => C_LEVEL_STATEMENT
356257          ,p_module   => l_log_module);
356258 
356259 END IF;
356260 --
356261 
356262 
356263 
356264 --
356265 INSERT INTO xla_diag_sources --line1
356266 (
356267         event_id
356268       , ledger_id
356269       , sla_ledger_id
356270       , description_language
356271       , object_name
356272       , object_type_code
356273       , line_number
356274       , source_application_id
356275       , source_type_code
356276       , source_code
356277       , source_value
356278       , source_meaning
356279       , created_by
356280       , creation_date
356281       , last_update_date
356282       , last_updated_by
356283       , last_update_login
356284       , program_update_date
356285       , program_application_id
356286       , program_id
356287       , request_id
356288 )
356289 SELECT  event_id
356290       , p_target_ledger_id
356291       , p_sla_ledger_id
356292       , p_language
356293       , object_name
356294       , object_type_code
356295       , line_number
356296       , source_application_id
356297       , source_type_code
356298       , source_code
356299       , SUBSTR(source_value,1,1996)
356300       , SUBSTR(source_meaning,1,200)
356301       , xla_environment_pkg.g_Usr_Id
356302       , TRUNC(SYSDATE)
356303       , TRUNC(SYSDATE)
356304       , xla_environment_pkg.g_Usr_Id
356305       , xla_environment_pkg.g_Login_Id
356306       , TRUNC(SYSDATE)
356307       , xla_environment_pkg.g_Prog_Appl_Id
356308       , xla_environment_pkg.g_Prog_Id
356309       , xla_environment_pkg.g_Req_Id
356310   FROM (
356311        SELECT xet.event_id                  event_id
356312             , l2.line_number                 line_number
356313             , CASE r
356314                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
356315                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
356316                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
356317                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
356318                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
356319                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
356320                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
356321                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
356322                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
356323                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
356324                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
356325                 
356326                ELSE null
356327               END                           object_name
356328             , CASE r
356329                 WHEN 1 THEN 'LINE' 
356330                 WHEN 2 THEN 'LINE' 
356331                 WHEN 3 THEN 'LINE' 
356332                 WHEN 4 THEN 'LINE' 
356333                 WHEN 5 THEN 'LINE' 
356334                 WHEN 6 THEN 'LINE' 
356335                 WHEN 7 THEN 'LINE' 
356336                 WHEN 8 THEN 'LINE' 
356337                 WHEN 9 THEN 'LINE' 
356338                 WHEN 10 THEN 'LINE' 
356339                 WHEN 11 THEN 'LINE' 
356340                 
356341                 ELSE null
356342               END                           object_type_code
356343             , CASE r
356344                 WHEN 1 THEN '707' 
356345                 WHEN 2 THEN '707' 
356346                 WHEN 3 THEN '707' 
356347                 WHEN 4 THEN '707' 
356348                 WHEN 5 THEN '707' 
356349                 WHEN 6 THEN '707' 
356350                 WHEN 7 THEN '707' 
356351                 WHEN 8 THEN '707' 
356352                 WHEN 9 THEN '707' 
356353                 WHEN 10 THEN '707' 
356354                 WHEN 11 THEN '707' 
356355                 
356356                 ELSE null
356357               END                           source_application_id
356358             , 'S'             source_type_code
356359             , CASE r
356360                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
356361                 WHEN 2 THEN 'COST_ELEMENT_ID' 
356362                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
356363                 WHEN 4 THEN 'CURRENCY_CODE' 
356364                 WHEN 5 THEN 'ENTERED_AMOUNT' 
356365                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
356366                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
356367                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
356368                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
356369                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
356370                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
356371                 
356372                 ELSE null
356373               END                           source_code
356374             , CASE r
356375                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
356376                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
356377                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
356378                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
356379                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
356380                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
356381                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
356382                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
356383                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
356384                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
356385                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
356386                 
356387                 ELSE null
356388               END                           source_value
356389             , CASE r
356390                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
356391                           1009615
356392                          ,TO_CHAR(l2.COST_ELEMENT_ID)
356393                          ,'COST_ELEMENT_ID'
356394                          ,'S'
356395                          ,707)
356396                 
356397                 ELSE null
356398               END               source_meaning
356399          FROM  xla_events_gt     xet  
356400         , CST_XLA_INV_LINES_V  l2
356401             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
356402         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
356403           AND xet.event_type_code = C_EVENT_TYPE_CODE
356404             AND l2.event_id          = xet.event_id
356405 
356406 )
356407 ;
356408 --
356409 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
356410 
356411       trace
356412          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
356413          ,p_level    => C_LEVEL_STATEMENT
356414          ,p_module   => l_log_module);
356415 
356416 END IF;
356417 
356418 
356419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
356420       trace
356421          (p_msg      => 'END of insert_sources_577'
356422          ,p_level    => C_LEVEL_PROCEDURE
356423          ,p_module   => l_log_module);
356424 END IF;
356425 EXCEPTION
356426   WHEN xla_exceptions_pkg.application_exception THEN
356427       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
356428             trace
356429                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
356430                ,p_level    => C_LEVEL_EXCEPTION
356431                ,p_module   => l_log_module);
356432       END IF;
356433       RAISE;
356434   WHEN OTHERS THEN
356435       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
356436             trace
356437                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
356438                ,p_level    => C_LEVEL_EXCEPTION
356439                ,p_module   => l_log_module);
356440        END IF;
356441        xla_exceptions_pkg.raise_message
356442            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_577');
356443 END insert_sources_577;
356444 --
356445 
356446 ---------------------------------------
356447 --
356448 -- PRIVATE FUNCTION
356449 --         EventType_577
356450 --
356451 ----------------------------------------
356452 --
356453 FUNCTION EventType_577
356454        (p_application_id         IN NUMBER
356455        ,p_base_ledger_id         IN NUMBER
356456        ,p_target_ledger_id       IN NUMBER
356457        ,p_language               IN VARCHAR2
356458        ,p_currency_code          IN VARCHAR2
356459        ,p_sla_ledger_id          IN NUMBER
356460        ,p_pad_start_date         IN DATE
356461        ,p_pad_end_date           IN DATE
356462        ,p_primary_ledger_id      IN NUMBER)
356463 RETURN BOOLEAN IS
356464 --
356465 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_IC_SHIPMENT_RCPT';
356466 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOG_INTERCOMPANY';
356467 
356468 l_calculate_acctd_flag   VARCHAR2(1) :='N';
356469 l_calculate_g_l_flag     VARCHAR2(1) :='N';
356470 --
356471 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356472 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356473 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
356474 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
356475 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356476 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
356477 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
356478 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356479 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
356480 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
356481 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356482 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356483 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356484 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
356485 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
356486 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
356487 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
356488 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
356489 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
356490 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
356491 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
356492 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
356493 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
356494 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
356495 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
356496 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
356497 
356498 l_event_id                             NUMBER;
356499 l_previous_event_id                    NUMBER;
356500 l_first_event_id                       NUMBER;
356501 l_last_event_id                        NUMBER;
356502 
356503 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
356504 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
356505 --
356506 --
356507 l_result                    BOOLEAN := TRUE;
356508 l_rows                      NUMBER  := 1000;
356509 l_event_type_name           VARCHAR2(80) := 'Logical Intercompany Shipment Receipt';
356510 l_event_class_name          VARCHAR2(80) := 'Logical Intercompany';
356511 l_description               VARCHAR2(4000);
356512 l_transaction_reversal      NUMBER;
356513 l_ae_header_id              NUMBER;
356514 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
356515 l_log_module                VARCHAR2(240);
356516 --
356517 l_acct_reversal_source      VARCHAR2(30);
356518 l_trx_reversal_source       VARCHAR2(30);
356519 
356520 l_continue_with_lines       BOOLEAN := TRUE;
356521 --
356522 l_acc_rev_gl_date_source    DATE;                      -- 4262811
356523 --
356524 type t_array_event_id is table of number index by binary_integer;
356525 
356526 l_rec_array_event                    t_rec_array_event;
356527 l_null_rec_array_event               t_rec_array_event;
356528 l_array_ae_header_id                 xla_number_array_type;
356529 l_actual_flag                        VARCHAR2(1) := NULL;
356530 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
356531 l_balance_type_code                  VARCHAR2(1) :=NULL;
356532 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
356533 
356534 --
356535 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
356536 --
356537 
356538 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
356539 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
356540 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
356541 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
356542 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
356543 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
356544 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
356545 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
356546 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
356547 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
356548 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
356549 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
356550 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
356551 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
356552 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
356553 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
356554 
356555 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
356556 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
356557 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
356558 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
356559 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
356560 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
356561 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
356562 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
356563 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
356564 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
356565 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
356566 
356567 l_array_source_1              t_array_source_1;
356568 l_array_source_2              t_array_source_2;
356569 l_array_source_3              t_array_source_3;
356570 l_array_source_4              t_array_source_4;
356571 l_array_source_5              t_array_source_5;
356572 l_array_source_20              t_array_source_20;
356573 l_array_source_22              t_array_source_22;
356574 l_array_source_24              t_array_source_24;
356575 l_array_source_41              t_array_source_41;
356576 l_array_source_42              t_array_source_42;
356577 l_array_source_43              t_array_source_43;
356578 l_array_source_44              t_array_source_44;
356579 l_array_source_45              t_array_source_45;
356580 l_array_source_62              t_array_source_62;
356581 l_array_source_62_meaning      t_array_lookup_meaning;
356582 l_array_source_85              t_array_source_85;
356583 l_array_source_85_meaning      t_array_lookup_meaning;
356584 l_array_source_114              t_array_source_114;
356585 l_array_source_114_meaning      t_array_lookup_meaning;
356586 
356587 l_array_source_11      t_array_source_11;
356588 l_array_source_15      t_array_source_15;
356589 l_array_source_84      t_array_source_84;
356590 l_array_source_88      t_array_source_88;
356591 l_array_source_91      t_array_source_91;
356592 l_array_source_92      t_array_source_92;
356593 l_array_source_93      t_array_source_93;
356594 l_array_source_94      t_array_source_94;
356595 l_array_source_95      t_array_source_95;
356596 l_array_source_97      t_array_source_97;
356597 l_array_source_108      t_array_source_108;
356598 
356599 --
356600 CURSOR header_cur
356601 IS
356602 SELECT /*+ leading(xet) cardinality(xet,1) */
356603 -- Event Type Code: LOG_IC_SHIPMENT_RCPT
356604 -- Event Class Code: LOG_INTERCOMPANY
356605     xet.entity_id
356606   , xet.legal_entity_id
356607   , xet.entity_code
356608   , xet.transaction_number
356609   , xet.event_id
356610   , xet.event_class_code
356611   , xet.event_type_code
356612   , xet.event_number
356613   , xet.event_date
356614   , xet.transaction_date
356615   , xet.reference_num_1
356616   , xet.reference_num_2
356617   , xet.reference_num_3
356618   , xet.reference_num_4
356619   , xet.reference_char_1
356620   , xet.reference_char_2
356621   , xet.reference_char_3
356622   , xet.reference_char_4
356623   , xet.reference_date_1
356624   , xet.reference_date_2
356625   , xet.reference_date_3
356626   , xet.reference_date_4
356627   , xet.event_created_by
356628   , xet.budgetary_control_flag 
356629   , h1.TRANSACTION_ID    source_1
356630   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
356631   , h3.TRANSACTION_QUANTITY    source_3
356632   , h3.TRANSACTION_UOM    source_4
356633   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
356634   , h3.INV_TXN_DISTRIBUTION_ACCT    source_20
356635   , h6.PLA_BRIDGING_ACCOUNT    source_22
356636   , h6.PLA_EXPENSE_ACCOUNT    source_24
356637   , h6.PLA_MATERIAL_ACCOUNT    source_41
356638   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
356639   , h6.PLA_RESOURCE_ACCOUNT    source_43
356640   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
356641   , h6.PLA_OVERHEAD_ACCOUNT    source_45
356642   , h1.TRANSACTION_ACTION_ID    source_62
356643   , fvl62.meaning   source_62_meaning
356644   , h1.DISTRIBUTION_TYPE    source_85
356645   , fvl85.meaning   source_85_meaning
356646   , h1.TRANSFER_TO_GL_INDICATOR    source_114
356647   , fvl114.meaning   source_114_meaning
356648   FROM xla_events_gt     xet 
356649   , CST_XLA_INV_HEADERS_V  h1
356650   , CST_XLA_INV_REF_V  h3
356651   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
356652   , CST_XLA_INV_TXN_TYPES_REF_V  h5
356653   , CST_XLA_PLA_CATEGORY_REF_V  h6
356654   , fnd_lookup_values    fvl62
356655   , fnd_lookup_values    fvl85
356656   , fnd_lookup_values    fvl114
356657  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
356658    and xet.event_type_code = C_EVENT_TYPE_CODE
356659    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
356660  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
356661 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
356662 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
356663   AND fvl62.lookup_code(+)         = h1.TRANSACTION_ACTION_ID
356664   AND fvl62.view_application_id(+) = 700
356665   AND fvl62.language(+)            = USERENV('LANG')
356666      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
356667   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
356668   AND fvl85.view_application_id(+) = 700
356669   AND fvl85.language(+)            = USERENV('LANG')
356670      AND fvl114.lookup_type(+)         = 'YES_NO'
356671   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
356672   AND fvl114.view_application_id(+) = 0
356673   AND fvl114.language(+)            = USERENV('LANG')
356674   
356675  ORDER BY event_id
356676 ;
356677 
356678 
356679 --
356680 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
356681 IS
356682 SELECT /*+ leading(xet) cardinality(xet,1) */
356683 -- Event Type Code: LOG_IC_SHIPMENT_RCPT
356684 -- Event Class Code: LOG_INTERCOMPANY
356685     xet.entity_id
356686    ,xet.legal_entity_id
356687    ,xet.entity_code
356688    ,xet.transaction_number
356689    ,xet.event_id
356690    ,xet.event_class_code
356691    ,xet.event_type_code
356692    ,xet.event_number
356693    ,xet.event_date
356694    ,xet.transaction_date
356695    ,xet.reference_num_1
356696    ,xet.reference_num_2
356697    ,xet.reference_num_3
356698    ,xet.reference_num_4
356699    ,xet.reference_char_1
356700    ,xet.reference_char_2
356701    ,xet.reference_char_3
356702    ,xet.reference_char_4
356703    ,xet.reference_date_1
356704    ,xet.reference_date_2
356705    ,xet.reference_date_3
356706    ,xet.reference_date_4
356707    ,xet.event_created_by
356708    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
356709   , l2.CODE_COMBINATION_ID    source_11
356710   , l2.COST_ELEMENT_ID    source_15
356711   , l2.DISTRIBUTION_IDENTIFIER    source_84
356712   , l2.CURRENCY_CODE    source_88
356713   , l2.ENTERED_AMOUNT    source_91
356714   , l2.CURRENCY_CONVERSION_DATE    source_92
356715   , l2.CURRENCY_CONVERSION_RATE    source_93
356716   , l2.CURRENCY_CONVERSION_TYPE    source_94
356717   , l2.ACCOUNTED_AMOUNT    source_95
356718   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
356719   , l2.L_ORGANIZATION_CODE    source_108
356720   FROM xla_events_gt     xet 
356721   , CST_XLA_INV_LINES_V  l2
356722  WHERE xet.event_id between x_first_event_id and x_last_event_id
356723    and xet.event_date between p_pad_start_date and p_pad_end_date
356724    and xet.event_type_code = C_EVENT_TYPE_CODE
356725    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
356726 ;
356727 
356728 --
356729 BEGIN
356730 IF g_log_enabled THEN
356731    l_log_module := C_DEFAULT_MODULE||'.EventType_577';
356732 END IF;
356733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
356734    trace
356735       (p_msg      => 'BEGIN of EventType_577'
356736       ,p_level    => C_LEVEL_PROCEDURE
356737       ,p_module   => l_log_module);
356738 END IF;
356739 
356740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
356741    trace
356742       (p_msg      => 'p_application_id = '||p_application_id||
356743                      ' - p_base_ledger_id = '||p_base_ledger_id||
356744                      ' - p_target_ledger_id  = '||p_target_ledger_id||
356745                      ' - p_language = '||p_language||
356746                      ' - p_currency_code = '||p_currency_code||
356747                      ' - p_sla_ledger_id = '||p_sla_ledger_id
356748       ,p_level    => C_LEVEL_STATEMENT
356749       ,p_module   => l_log_module);
356750 END IF;
356751 --
356752 -- initialze arrays
356753 --
356754 g_array_event.DELETE;
356755 l_rec_array_event := l_null_rec_array_event;
356756 --
356757 --------------------------------------
356758 -- 4262811 Initialze MPA Line Number
356759 --------------------------------------
356760 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
356761 
356762 --
356763 
356764 --
356765 OPEN header_cur;
356766 --
356767 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
356768    trace
356769    (p_msg      => 'SQL - FETCH header_cur'
356770    ,p_level    => C_LEVEL_STATEMENT
356771    ,p_module   => l_log_module);
356772 END IF;
356773 --
356774 LOOP
356775 FETCH header_cur BULK COLLECT INTO
356776         l_array_entity_id
356777       , l_array_legal_entity_id
356778       , l_array_entity_code
356779       , l_array_transaction_num
356780       , l_array_event_id
356781       , l_array_class_code
356782       , l_array_event_type
356783       , l_array_event_number
356784       , l_array_event_date
356785       , l_array_transaction_date
356786       , l_array_reference_num_1
356787       , l_array_reference_num_2
356788       , l_array_reference_num_3
356789       , l_array_reference_num_4
356790       , l_array_reference_char_1
356791       , l_array_reference_char_2
356792       , l_array_reference_char_3
356793       , l_array_reference_char_4
356794       , l_array_reference_date_1
356795       , l_array_reference_date_2
356796       , l_array_reference_date_3
356797       , l_array_reference_date_4
356798       , l_array_event_created_by
356799       , l_array_budgetary_control_flag 
356800       , l_array_source_1
356801       , l_array_source_2
356802       , l_array_source_3
356803       , l_array_source_4
356804       , l_array_source_5
356805       , l_array_source_20
356806       , l_array_source_22
356807       , l_array_source_24
356808       , l_array_source_41
356809       , l_array_source_42
356810       , l_array_source_43
356811       , l_array_source_44
356812       , l_array_source_45
356813       , l_array_source_62
356814       , l_array_source_62_meaning
356815       , l_array_source_85
356816       , l_array_source_85_meaning
356817       , l_array_source_114
356818       , l_array_source_114_meaning
356819       LIMIT l_rows;
356820 --
356821 IF (C_LEVEL_EVENT >= g_log_level) THEN
356822    trace
356823    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
356824    ,p_level    => C_LEVEL_EVENT
356825    ,p_module   => l_log_module);
356826 END IF;
356827 --
356828 EXIT WHEN l_array_entity_id.COUNT = 0;
356829 
356830 -- initialize arrays
356831 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
356832 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
356833 
356834 --
356835 -- Bug 4458708
356836 --
356837 XLA_AE_LINES_PKG.g_LineNumber := 0;
356838 
356839 
356840 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
356841 g_last_hdr_idx := l_array_event_id.LAST;
356842 --
356843 -- loop for the headers. Each iteration is for each header extract row
356844 -- fetched in header cursor
356845 --
356846 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
356847 
356848 --
356849 -- set event info as cache for other routines to refer event attributes
356850 --
356851 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
356852    (p_application_id           => p_application_id
356853    ,p_primary_ledger_id        => p_primary_ledger_id
356854    ,p_base_ledger_id           => p_base_ledger_id
356855    ,p_target_ledger_id         => p_target_ledger_id
356856    ,p_entity_id                => l_array_entity_id(hdr_idx)
356857    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
356858    ,p_entity_code              => l_array_entity_code(hdr_idx)
356859    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
356860    ,p_event_id                 => l_array_event_id(hdr_idx)
356861    ,p_event_class_code         => l_array_class_code(hdr_idx)
356862    ,p_event_type_code          => l_array_event_type(hdr_idx)
356863    ,p_event_number             => l_array_event_number(hdr_idx)
356864    ,p_event_date               => l_array_event_date(hdr_idx)
356865    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
356866    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
356867    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
356868    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
356869    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
356870    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
356871    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
356872    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
356873    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
356874    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
356875    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
356876    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
356877    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
356878    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
356879    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
356880 
356881 --
356882 -- set the status of entry to C_VALID (0)
356883 --
356884 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
356885 
356886 --
356887 -- initialize a row for ae header
356888 --
356889 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
356890 
356891 l_event_id := l_array_event_id(hdr_idx);
356892 
356893 --
356894 -- storing the hdr_idx for event. May be used by line cursor.
356895 --
356896 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
356897 
356898 --
356899 -- store sources from header extract. This can be improved to
356900 -- store only those sources from header extract that may be used in lines
356901 --
356902 
356903 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
356904 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
356905 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
356906 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
356907 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
356908 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
356909 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
356910 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
356911 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
356912 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
356913 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
356914 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
356915 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
356916 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
356917 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
356918 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
356919 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
356920 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
356921 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
356922 
356923 --
356924 -- initilaize the status of ae headers for diffrent balance types
356925 -- the status is initialised to C_NOT_CREATED (2)
356926 --
356927 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
356928 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
356929 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
356930 
356931 --
356932 -- call api to validate and store accounting attributes for header
356933 --
356934 
356935 ------------------------------------------------------------
356936 -- Accrual Reversal : to get date for Standard Source (NONE)
356937 ------------------------------------------------------------
356938 l_acc_rev_gl_date_source := NULL;
356939 
356940      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
356941       l_rec_acct_attrs.array_date_value(1) := 
356942 xla_ae_sources_pkg.GetSystemSourceDate(
356943    p_source_code           => 'XLA_REFERENCE_DATE_1'
356944  , p_source_type_code      => 'Y'
356945  , p_source_application_id =>  602
356946 );
356947      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
356948       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
356949 
356950 
356951 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
356952 
356953 XLA_AE_HEADER_PKG.SetJeCategoryName;
356954 
356955 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
356956 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
356957 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
356958 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
356959 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
356960 
356961 
356962 --
356963 xla_ae_header_pkg.SetHdrDescription(
356964    p_description => Description_1 (
356965    p_application_id => p_application_id 
356966  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
356967  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
356968  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
356969  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
356970  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
356971    )
356972 );
356973 --
356974 
356975 -- No header level analytical criteria
356976 
356977 --
356978 --accounting attribute enhancement, bug 3612931
356979 --
356980 l_trx_reversal_source := SUBSTR(NULL, 1,30);
356981 
356982 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
356983    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
356984 
356985    xla_accounting_err_pkg.build_message
356986       (p_appli_s_name            => 'XLA'
356987       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
356988       ,p_token_1                 => 'ACCT_ATTR_NAME'
356989       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
356990       ,p_token_2                 => 'PRODUCT_NAME'
356991       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
356992       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
356993       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
356994       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
356995 
356996 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
356997    --
356998    -- following sets the accounting attributes needed to reverse
356999    -- accounting for a distributeion
357000    --
357001    xla_ae_lines_pkg.SetTrxReversalAttrs
357002       (p_event_id              => l_event_id
357003       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
357004       ,p_trx_reversal_source   => l_trx_reversal_source);
357005 
357006 END IF;
357007 
357008 
357009 ----------------------------------------------------------------
357010 -- 4262811 -  update the header statuses to invalid in need be
357011 ----------------------------------------------------------------
357012 --
357013 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
357014 
357015 
357016   -----------------------------------------------
357017   -- No accrual reversal for the event class/type
357018   -----------------------------------------------
357019 ----------------------------------------------------------------
357020 
357021 --
357022 -- this ends the header loop iteration for one bulk fetch
357023 --
357024 END LOOP;
357025 
357026 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
357027 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
357028 
357029 --
357030 -- insert dummy rows into lines gt table that were created due to
357031 -- transaction reversals
357032 --
357033 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
357034    l_result := XLA_AE_LINES_PKG.InsertLines;
357035 END IF;
357036 
357037 --
357038 -- reset the temp_line_num for each set of events fetched from header
357039 -- cursor rather than doing it for each new event in line cursor
357040 -- Bug 3939231
357041 --
357042 xla_ae_lines_pkg.g_temp_line_num := 0;
357043 
357044 
357045 
357046 --
357047 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
357048 --
357049 --
357050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357051 
357052       trace
357053          (p_msg      => 'SQL - FETCH line_cur'
357054          ,p_level    => C_LEVEL_STATEMENT
357055          ,p_module   => l_log_module);
357056 
357057 END IF;
357058 --
357059 --
357060 LOOP
357061   --
357062   FETCH line_cur BULK COLLECT INTO
357063         l_array_entity_id
357064       , l_array_legal_entity_id
357065       , l_array_entity_code
357066       , l_array_transaction_num
357067       , l_array_event_id
357068       , l_array_class_code
357069       , l_array_event_type
357070       , l_array_event_number
357071       , l_array_event_date
357072       , l_array_transaction_date
357073       , l_array_reference_num_1
357074       , l_array_reference_num_2
357075       , l_array_reference_num_3
357076       , l_array_reference_num_4
357077       , l_array_reference_char_1
357078       , l_array_reference_char_2
357079       , l_array_reference_char_3
357080       , l_array_reference_char_4
357081       , l_array_reference_date_1
357082       , l_array_reference_date_2
357083       , l_array_reference_date_3
357084       , l_array_reference_date_4
357085       , l_array_event_created_by
357086       , l_array_budgetary_control_flag
357087       , l_array_extract_line_num 
357088       , l_array_source_11
357089       , l_array_source_15
357090       , l_array_source_84
357091       , l_array_source_88
357092       , l_array_source_91
357093       , l_array_source_92
357094       , l_array_source_93
357095       , l_array_source_94
357096       , l_array_source_95
357097       , l_array_source_97
357098       , l_array_source_108
357099       LIMIT l_rows;
357100 
357101   --
357102   IF (C_LEVEL_EVENT >= g_log_level) THEN
357103             trace
357104                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
357105                ,p_level    => C_LEVEL_EVENT
357106                ,p_module   => l_log_module);
357107   END IF;
357108   --
357109   EXIT WHEN l_array_entity_id.count = 0;
357110 
357111   XLA_AE_LINES_PKG.g_rec_lines := null;
357112 
357113 --
357114 -- Bug 4458708
357115 --
357116 XLA_AE_LINES_PKG.g_LineNumber := 0;
357117 --
357118 --
357119 
357120 FOR Idx IN 1..l_array_event_id.count LOOP
357121    --
357122    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
357123    --
357124    l_event_id := l_array_event_id(idx);  -- 5648433
357125 
357126    --
357127    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
357128    --
357129 
357130    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
357131              (g_array_event(l_event_id).array_value_num('header_index'))
357132          ,'N'
357133          ) <> 'Y'
357134    THEN
357135       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357136          trace
357137             (p_msg      => 'Trancaction revesal option is not Y '
357138             ,p_level    => C_LEVEL_STATEMENT
357139             ,p_module   => l_log_module);
357140       END IF;
357141 
357142 --
357143 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
357144 --
357145 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
357146 --
357147 -- set event info as cache for other routines to refer event attributes
357148 --
357149 
357150 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
357151    l_previous_event_id := l_event_id;
357152 
357153    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
357154       (p_application_id           => p_application_id
357155       ,p_primary_ledger_id        => p_primary_ledger_id
357156       ,p_base_ledger_id           => p_base_ledger_id
357157       ,p_target_ledger_id         => p_target_ledger_id
357158       ,p_entity_id                => l_array_entity_id(Idx)
357159       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
357160       ,p_entity_code              => l_array_entity_code(Idx)
357161       ,p_transaction_num          => l_array_transaction_num(Idx)
357162       ,p_event_id                 => l_array_event_id(Idx)
357163       ,p_event_class_code         => l_array_class_code(Idx)
357164       ,p_event_type_code          => l_array_event_type(Idx)
357165       ,p_event_number             => l_array_event_number(Idx)
357166       ,p_event_date               => l_array_event_date(Idx)
357167       ,p_transaction_date         => l_array_transaction_date(Idx)
357168       ,p_reference_num_1          => l_array_reference_num_1(Idx)
357169       ,p_reference_num_2          => l_array_reference_num_2(Idx)
357170       ,p_reference_num_3          => l_array_reference_num_3(Idx)
357171       ,p_reference_num_4          => l_array_reference_num_4(Idx)
357172       ,p_reference_char_1         => l_array_reference_char_1(Idx)
357173       ,p_reference_char_2         => l_array_reference_char_2(Idx)
357174       ,p_reference_char_3         => l_array_reference_char_3(Idx)
357175       ,p_reference_char_4         => l_array_reference_char_4(Idx)
357176       ,p_reference_date_1         => l_array_reference_date_1(Idx)
357177       ,p_reference_date_2         => l_array_reference_date_2(Idx)
357178       ,p_reference_date_3         => l_array_reference_date_3(Idx)
357179       ,p_reference_date_4         => l_array_reference_date_4(Idx)
357180       ,p_event_created_by         => l_array_event_created_by(Idx)
357181       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
357182        --
357183 END IF;
357184 
357185 
357186 
357187 --
357188 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
357189 
357190 l_acct_reversal_source := SUBSTR(NULL, 1,30);
357191 
357192 IF l_continue_with_lines THEN
357193    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
357194       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
357195 
357196       xla_accounting_err_pkg.build_message
357197          (p_appli_s_name            => 'XLA'
357198          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
357199          ,p_token_1                 => 'LINE_NUMBER'
357200          ,p_value_1                 => l_array_extract_line_num(Idx)
357201          ,p_token_2                 => 'PRODUCT_NAME'
357202          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
357203          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
357204          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
357205          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
357206 
357207    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
357208       --
357209       -- following sets the accounting attributes needed to reverse
357210       -- accounting for a distributeion
357211       --
357212 
357213       --
357214       -- 5217187
357215       --
357216       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
357217       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
357218                                        g_array_event(l_event_id).array_value_num('header_index'));
357219       --
357220       --
357221 
357222       -- No reversal code generated
357223 
357224       xla_ae_lines_pkg.SetAcctReversalAttrs
357225          (p_event_id             => l_event_id
357226          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
357227          ,p_calculate_acctd_flag => l_calculate_acctd_flag
357228          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
357229    END IF;
357230 
357231    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
357232        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
357233 
357234 --
357235 AcctLineType_46 (
357236  p_application_id  => p_application_id
357237  ,p_event_id     => l_event_id
357238  ,p_calculate_acctd_flag => l_calculate_acctd_flag
357239  ,p_calculate_g_l_flag => l_calculate_g_l_flag
357240  ,p_actual_flag => l_actual_flag
357241  ,p_balance_type_code => l_balance_type_code
357242  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
357243  
357244  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
357245  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
357246  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
357247  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
357248  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
357249  , p_source_11 => l_array_source_11(Idx)
357250  , p_source_84 => l_array_source_84(Idx)
357251  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
357252  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
357253  , p_source_88 => l_array_source_88(Idx)
357254  , p_source_91 => l_array_source_91(Idx)
357255  , p_source_92 => l_array_source_92(Idx)
357256  , p_source_93 => l_array_source_93(Idx)
357257  , p_source_94 => l_array_source_94(Idx)
357258  , p_source_95 => l_array_source_95(Idx)
357259  , p_source_97 => l_array_source_97(Idx)
357260  );
357261 If(l_balance_type_code = 'A') THEN
357262   l_actual_gain_loss_ref := l_gain_or_loss_ref;
357263 END IF;
357264 
357265 --
357266 
357267 
357268 --
357269 AcctLineType_133 (
357270  p_application_id  => p_application_id
357271  ,p_event_id     => l_event_id
357272  ,p_calculate_acctd_flag => l_calculate_acctd_flag
357273  ,p_calculate_g_l_flag => l_calculate_g_l_flag
357274  ,p_actual_flag => l_actual_flag
357275  ,p_balance_type_code => l_balance_type_code
357276  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
357277  
357278  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
357279  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
357280  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
357281  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
357282  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
357283  , p_source_11 => l_array_source_11(Idx)
357284  , p_source_84 => l_array_source_84(Idx)
357285  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
357286  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
357287  , p_source_88 => l_array_source_88(Idx)
357288  , p_source_91 => l_array_source_91(Idx)
357289  , p_source_92 => l_array_source_92(Idx)
357290  , p_source_93 => l_array_source_93(Idx)
357291  , p_source_94 => l_array_source_94(Idx)
357292  , p_source_95 => l_array_source_95(Idx)
357293  , p_source_97 => l_array_source_97(Idx)
357294  );
357295 If(l_balance_type_code = 'A') THEN
357296   l_actual_gain_loss_ref := l_gain_or_loss_ref;
357297 END IF;
357298 
357299 --
357300 
357301 
357302 --
357303 AcctLineType_137 (
357304  p_application_id  => p_application_id
357305  ,p_event_id     => l_event_id
357306  ,p_calculate_acctd_flag => l_calculate_acctd_flag
357307  ,p_calculate_g_l_flag => l_calculate_g_l_flag
357308  ,p_actual_flag => l_actual_flag
357309  ,p_balance_type_code => l_balance_type_code
357310  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
357311  
357312  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
357313  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
357314  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
357315  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
357316  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
357317  , p_source_11 => l_array_source_11(Idx)
357318  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
357319  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
357320  , p_source_84 => l_array_source_84(Idx)
357321  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
357322  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
357323  , p_source_88 => l_array_source_88(Idx)
357324  , p_source_91 => l_array_source_91(Idx)
357325  , p_source_92 => l_array_source_92(Idx)
357326  , p_source_93 => l_array_source_93(Idx)
357327  , p_source_94 => l_array_source_94(Idx)
357328  , p_source_95 => l_array_source_95(Idx)
357329  , p_source_97 => l_array_source_97(Idx)
357330  );
357331 If(l_balance_type_code = 'A') THEN
357332   l_actual_gain_loss_ref := l_gain_or_loss_ref;
357333 END IF;
357334 
357335 --
357336 
357337 
357338 --
357339 AcctLineType_233 (
357340  p_application_id  => p_application_id
357341  ,p_event_id     => l_event_id
357342  ,p_calculate_acctd_flag => l_calculate_acctd_flag
357343  ,p_calculate_g_l_flag => l_calculate_g_l_flag
357344  ,p_actual_flag => l_actual_flag
357345  ,p_balance_type_code => l_balance_type_code
357346  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
357347  
357348  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
357349  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
357350  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
357351  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
357352  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
357353  , p_source_15 => l_array_source_15(Idx)
357354  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
357355  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
357356  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
357357  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
357358  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
357359  , p_source_84 => l_array_source_84(Idx)
357360  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
357361  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
357362  , p_source_88 => l_array_source_88(Idx)
357363  , p_source_91 => l_array_source_91(Idx)
357364  , p_source_92 => l_array_source_92(Idx)
357365  , p_source_93 => l_array_source_93(Idx)
357366  , p_source_94 => l_array_source_94(Idx)
357367  , p_source_95 => l_array_source_95(Idx)
357368  , p_source_97 => l_array_source_97(Idx)
357369  , p_source_108 => l_array_source_108(Idx)
357370  );
357371 If(l_balance_type_code = 'A') THEN
357372   l_actual_gain_loss_ref := l_gain_or_loss_ref;
357373 END IF;
357374 
357375 --
357376 
357377 
357378 --
357379 AcctLineType_364 (
357380  p_application_id  => p_application_id
357381  ,p_event_id     => l_event_id
357382  ,p_calculate_acctd_flag => l_calculate_acctd_flag
357383  ,p_calculate_g_l_flag => l_calculate_g_l_flag
357384  ,p_actual_flag => l_actual_flag
357385  ,p_balance_type_code => l_balance_type_code
357386  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
357387  
357388  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
357389  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
357390  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
357391  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
357392  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
357393  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
357394  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
357395  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
357396  , p_source_84 => l_array_source_84(Idx)
357397  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
357398  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
357399  , p_source_88 => l_array_source_88(Idx)
357400  , p_source_91 => l_array_source_91(Idx)
357401  , p_source_92 => l_array_source_92(Idx)
357402  , p_source_93 => l_array_source_93(Idx)
357403  , p_source_94 => l_array_source_94(Idx)
357404  , p_source_95 => l_array_source_95(Idx)
357405  , p_source_97 => l_array_source_97(Idx)
357406  );
357407 If(l_balance_type_code = 'A') THEN
357408   l_actual_gain_loss_ref := l_gain_or_loss_ref;
357409 END IF;
357410 
357411 --
357412 
357413 
357414 --
357415 AcctLineType_402 (
357416  p_application_id  => p_application_id
357417  ,p_event_id     => l_event_id
357418  ,p_calculate_acctd_flag => l_calculate_acctd_flag
357419  ,p_calculate_g_l_flag => l_calculate_g_l_flag
357420  ,p_actual_flag => l_actual_flag
357421  ,p_balance_type_code => l_balance_type_code
357422  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
357423  
357424  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
357425  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
357426  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
357427  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
357428  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
357429  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
357430  , p_source_84 => l_array_source_84(Idx)
357431  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
357432  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
357433  , p_source_88 => l_array_source_88(Idx)
357434  , p_source_91 => l_array_source_91(Idx)
357435  , p_source_92 => l_array_source_92(Idx)
357436  , p_source_93 => l_array_source_93(Idx)
357437  , p_source_94 => l_array_source_94(Idx)
357438  , p_source_95 => l_array_source_95(Idx)
357439  , p_source_97 => l_array_source_97(Idx)
357440  );
357441 If(l_balance_type_code = 'A') THEN
357442   l_actual_gain_loss_ref := l_gain_or_loss_ref;
357443 END IF;
357444 
357445 --
357446 
357447 
357448 --
357449 AcctLineType_444 (
357450  p_application_id  => p_application_id
357451  ,p_event_id     => l_event_id
357452  ,p_calculate_acctd_flag => l_calculate_acctd_flag
357453  ,p_calculate_g_l_flag => l_calculate_g_l_flag
357454  ,p_actual_flag => l_actual_flag
357455  ,p_balance_type_code => l_balance_type_code
357456  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
357457  
357458  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
357459  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
357460  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
357461  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
357462  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
357463  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
357464  , p_source_84 => l_array_source_84(Idx)
357465  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
357466  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
357467  , p_source_88 => l_array_source_88(Idx)
357468  , p_source_91 => l_array_source_91(Idx)
357469  , p_source_92 => l_array_source_92(Idx)
357470  , p_source_93 => l_array_source_93(Idx)
357471  , p_source_94 => l_array_source_94(Idx)
357472  , p_source_95 => l_array_source_95(Idx)
357473  , p_source_97 => l_array_source_97(Idx)
357474  );
357475 If(l_balance_type_code = 'A') THEN
357476   l_actual_gain_loss_ref := l_gain_or_loss_ref;
357477 END IF;
357478 
357479 --
357480 
357481       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
357482       -- or secondary ledger that has different currency with primary
357483       -- or alc that is calculated by sla
357484       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
357485             (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'))
357486 
357487 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
357488 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
357489           AND (l_actual_flag = 'A')) THEN
357490         XLA_AE_LINES_PKG.CreateGainOrLossLines(
357491           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
357492          ,p_application_id   => p_application_id
357493          ,p_amb_context_code => 'DEFAULT'
357494          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
357495          ,p_event_class_code => C_EVENT_CLASS_CODE
357496          ,p_event_type_code  => C_EVENT_TYPE_CODE
357497          
357498          ,p_gain_ccid        => -1
357499          ,p_loss_ccid        => -1
357500 
357501          ,p_actual_flag      => l_actual_flag
357502          ,p_enc_flag         => null
357503          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
357504          ,p_enc_g_l_ref      => null
357505          );
357506       END IF;
357507    END IF;
357508 END IF;
357509 
357510    ELSE
357511       --
357512       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
357513       --
357514       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357515          trace
357516             (p_msg      => 'Trancaction revesal option is Y'
357517             ,p_level    => C_LEVEL_STATEMENT
357518             ,p_module   => l_log_module);
357519       END IF;
357520    END IF;
357521 
357522 END LOOP;
357523 l_result := XLA_AE_LINES_PKG.InsertLines ;
357524 end loop;
357525 close line_cur;
357526 
357527 
357528 --
357529 -- insert headers into xla_ae_headers_gt table
357530 --
357531 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
357532 
357533 -- insert into errors table here.
357534 
357535 END LOOP;
357536 
357537 --
357538 -- 4865292
357539 --
357540 -- Compare g_hdr_extract_count with event count in
357541 -- CreateHeadersAndLines.
357542 --
357543 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
357544 
357545 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357546    trace (p_msg     => '# rows extracted from header extract objects '
357547                     || ' (running total): '
357548                     || g_hdr_extract_count
357549          ,p_level   => C_LEVEL_STATEMENT
357550          ,p_module  => l_log_module);
357551 END IF;
357552 
357553 CLOSE header_cur;
357554 --
357555 
357556 --
357557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
357558    trace
357559       (p_msg      => 'END of EventType_577'
357560       ,p_level    => C_LEVEL_PROCEDURE
357561       ,p_module   => l_log_module);
357562 END IF;
357563 --
357564 RETURN l_result;
357565 EXCEPTION
357566 WHEN xla_exceptions_pkg.application_exception THEN
357567    
357568 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
357569 
357570    
357571 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
357572 
357573    RAISE;
357574 
357575 WHEN NO_DATA_FOUND THEN
357576 
357577 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
357578 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
357579 
357580 FOR header_record IN header_cur
357581 LOOP
357582     l_array_header_events(header_record.event_id) := header_record.event_id;
357583 END LOOP;
357584 
357585 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
357586 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
357587 
357588 fnd_file.put_line(fnd_file.LOG, '                    ');
357589 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
357590 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
357591 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
357592 
357593 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
357594 LOOP
357595 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
357596 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
357597         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
357598 	END IF;
357599 END LOOP;
357600 
357601 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
357602 fnd_file.put_line(fnd_file.LOG, '                    ');
357603 
357604 
357605 xla_exceptions_pkg.raise_message
357606       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_577');
357607 
357608 
357609 WHEN OTHERS THEN
357610    xla_exceptions_pkg.raise_message
357611       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_577');
357612 END EventType_577;
357613 --
357614 
357615 ---------------------------------------
357616 --
357617 -- PRIVATE PROCEDURE
357618 --         insert_sources_578
357619 --
357620 ----------------------------------------
357621 --
357622 PROCEDURE insert_sources_578(
357623                                 p_target_ledger_id       IN NUMBER
357624                               , p_language               IN VARCHAR2
357625                               , p_sla_ledger_id          IN NUMBER
357626                               , p_pad_start_date         IN DATE
357627                               , p_pad_end_date           IN DATE
357628                          )
357629 IS
357630 
357631 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_ADJ';
357632 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
357633 p_apps_owner                   VARCHAR2(30);
357634 l_log_module                   VARCHAR2(240);
357635 BEGIN
357636 IF g_log_enabled THEN
357637       l_log_module := C_DEFAULT_MODULE||'.insert_sources_578';
357638 END IF;
357639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
357640 
357641       trace
357642          (p_msg      => 'BEGIN of insert_sources_578'
357643          ,p_level    => C_LEVEL_PROCEDURE
357644          ,p_module   => l_log_module);
357645 
357646 END IF;
357647 
357648 -- select APPS owner
357649 SELECT oracle_username
357650   INTO p_apps_owner
357651   FROM fnd_oracle_userid
357652  WHERE read_only_flag = 'U'
357653 ;
357654 
357655 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357656       trace
357657          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
357658                         ' - p_language = '||p_language||
357659                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
357660                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
357661                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
357662                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
357663          ,p_level    => C_LEVEL_STATEMENT
357664          ,p_module   => l_log_module);
357665 END IF;
357666 
357667 
357668 --
357669 INSERT INTO xla_diag_sources --hdr1
357670 (
357671         event_id
357672       , ledger_id
357673       , sla_ledger_id
357674       , description_language
357675       , object_name
357676       , object_type_code
357677       , line_number
357678       , source_application_id
357679       , source_type_code
357680       , source_code
357681       , source_value
357682       , source_meaning
357683       , created_by
357684       , creation_date
357685       , last_update_date
357686       , last_updated_by
357687       , last_update_login
357688       , program_update_date
357689       , program_application_id
357690       , program_id
357691       , request_id
357692 )
357693 SELECT
357694         event_id
357695       , p_target_ledger_id
357696       , p_sla_ledger_id
357697       , p_language
357698       , object_name
357699       , object_type_code
357700       , line_number
357701       , source_application_id
357702       , source_type_code
357703       , source_code
357704       , SUBSTR(source_value ,1,1996)
357705       , SUBSTR(source_meaning,1,200)
357706       , xla_environment_pkg.g_Usr_Id
357707       , TRUNC(SYSDATE)
357708       , TRUNC(SYSDATE)
357709       , xla_environment_pkg.g_Usr_Id
357710       , xla_environment_pkg.g_Login_Id
357711       , TRUNC(SYSDATE)
357712       , xla_environment_pkg.g_Prog_Appl_Id
357713       , xla_environment_pkg.g_Prog_Id
357714       , xla_environment_pkg.g_Req_Id
357715   FROM (
357716        SELECT xet.event_id                  event_id
357717             , 0                             line_number
357718             , CASE r
357719                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
357720                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
357721                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
357722                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
357723                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
357724                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
357725                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
357726                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
357727                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
357728                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
357729                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
357730                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
357731                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
357732                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
357733                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
357734                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
357735                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
357736                 WHEN 18 THEN 'PO_DISTS_REF_V' 
357737                 WHEN 19 THEN 'CST_XLA_INV_REF_V' 
357738                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
357739                 WHEN 21 THEN 'PO_HEADERS_REF_V' 
357740                 WHEN 22 THEN 'PSA_CST_XLA_UPG_V' 
357741                 WHEN 23 THEN 'CST_XLA_INV_REF_V' 
357742                 WHEN 24 THEN 'CST_XLA_INV_HEADERS_V' 
357743                 
357744                ELSE null
357745               END                           object_name
357746             , CASE r
357747                 WHEN 1 THEN 'HEADER' 
357748                 WHEN 2 THEN 'HEADER' 
357749                 WHEN 3 THEN 'HEADER' 
357750                 WHEN 4 THEN 'HEADER' 
357751                 WHEN 5 THEN 'HEADER' 
357752                 WHEN 6 THEN 'HEADER' 
357753                 WHEN 7 THEN 'HEADER' 
357754                 WHEN 8 THEN 'HEADER' 
357755                 WHEN 9 THEN 'HEADER' 
357756                 WHEN 10 THEN 'HEADER' 
357757                 WHEN 11 THEN 'HEADER' 
357758                 WHEN 12 THEN 'HEADER' 
357759                 WHEN 13 THEN 'HEADER' 
357760                 WHEN 14 THEN 'HEADER' 
357761                 WHEN 15 THEN 'HEADER' 
357762                 WHEN 16 THEN 'HEADER' 
357763                 WHEN 17 THEN 'HEADER' 
357764                 WHEN 18 THEN 'HEADER' 
357765                 WHEN 19 THEN 'HEADER' 
357766                 WHEN 20 THEN 'HEADER' 
357767                 WHEN 21 THEN 'HEADER' 
357768                 WHEN 22 THEN 'HEADER' 
357769                 WHEN 23 THEN 'HEADER' 
357770                 WHEN 24 THEN 'HEADER' 
357771                 
357772                 ELSE null
357773               END                           object_type_code
357774             , CASE r
357775                 WHEN 1 THEN '707' 
357776                 WHEN 2 THEN '707' 
357777                 WHEN 3 THEN '707' 
357778                 WHEN 4 THEN '707' 
357779                 WHEN 5 THEN '707' 
357780                 WHEN 6 THEN '707' 
357781                 WHEN 7 THEN '707' 
357782                 WHEN 8 THEN '707' 
357783                 WHEN 9 THEN '707' 
357784                 WHEN 10 THEN '707' 
357785                 WHEN 11 THEN '707' 
357786                 WHEN 12 THEN '707' 
357787                 WHEN 13 THEN '707' 
357788                 WHEN 14 THEN '707' 
357789                 WHEN 15 THEN '707' 
357790                 WHEN 16 THEN '707' 
357791                 WHEN 17 THEN '707' 
357792                 WHEN 18 THEN '201' 
357793                 WHEN 19 THEN '707' 
357794                 WHEN 20 THEN '707' 
357795                 WHEN 21 THEN '201' 
357796                 WHEN 22 THEN '707' 
357797                 WHEN 23 THEN '707' 
357798                 WHEN 24 THEN '707' 
357799                 
357800                 ELSE null
357801               END                           source_application_id
357802             , 'S'             source_type_code
357803             , CASE r
357804                 WHEN 1 THEN 'TRANSACTION_ID' 
357805                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
357806                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
357807                 WHEN 4 THEN 'TRANSACTION_UOM' 
357808                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
357809                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
357810                 WHEN 7 THEN 'PLA_EXPENSE_ACCOUNT' 
357811                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
357812                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
357813                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
357814                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
357815                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
357816                 WHEN 13 THEN 'APPLIED_TO_APPL_ID' 
357817                 WHEN 14 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
357818                 WHEN 15 THEN 'APPLIED_TO_ENTITY_CODE' 
357819                 WHEN 16 THEN 'APPLIED_TO_PO_DOC_ID' 
357820                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
357821                 WHEN 18 THEN 'PO_BUDGET_ACCOUNT' 
357822                 WHEN 19 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
357823                 WHEN 20 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
357824                 WHEN 21 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
357825                 WHEN 22 THEN 'CST_ENCUM_UPG_OPTION' 
357826                 WHEN 23 THEN 'TXN_PO_DISTRIBUTION_ID' 
357827                 WHEN 24 THEN 'TRANSFER_TO_GL_INDICATOR' 
357828                 
357829                 ELSE null
357830               END                           source_code
357831             , CASE r
357832                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
357833                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
357834                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
357835                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
357836                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
357837                 WHEN 6 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
357838                 WHEN 7 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
357839                 WHEN 8 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
357840                 WHEN 9 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
357841                 WHEN 10 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
357842                 WHEN 11 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
357843                 WHEN 12 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
357844                 WHEN 13 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
357845                 WHEN 14 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
357846                 WHEN 15 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
357847                 WHEN 16 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
357848                 WHEN 17 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
357849                 WHEN 18 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
357850                 WHEN 19 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
357851                 WHEN 20 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
357852                 WHEN 21 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
357853                 WHEN 22 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
357854                 WHEN 23 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
357855                 WHEN 24 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
357856                 
357857                 ELSE null
357858               END                           source_value
357859             , CASE r
357860                 WHEN 17 THEN fvl85.meaning
357861                 WHEN 24 THEN fvl114.meaning
357862                 
357863                 ELSE null
357864               END               source_meaning
357865         FROM xla_events_gt     xet  
357866       , CST_XLA_INV_HEADERS_V  h1
357867       , CST_XLA_INV_REF_V  h3
357868       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
357869       , CST_XLA_INV_TXN_TYPES_REF_V  h5
357870       , CST_XLA_PLA_CATEGORY_REF_V  h6
357871       , PO_DISTS_REF_V  h7
357872       , PO_HEADERS_REF_V  h8
357873       , PSA_CST_XLA_UPG_V  h9
357874   , fnd_lookup_values    fvl85
357875   , fnd_lookup_values    fvl114
357876             ,(select rownum r from all_objects where rownum <= 24 and owner = p_apps_owner)
357877        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
357878          AND xet.event_type_code = C_EVENT_TYPE_CODE
357879             AND h1.event_id = xet.event_id
357880  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
357881 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
357882 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg AND h3.txn_po_header_id = h7.po_header_id  (+)  and h3.txn_po_distribution_id = h7.po_distribution_id (+)  AND h3.txn_po_header_id = h8.po_header_id (+)  AND h3.rcv_transaction_id = h9.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
357883   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
357884   AND fvl85.view_application_id(+) = 700
357885   AND fvl85.language(+)            = USERENV('LANG')
357886      AND fvl114.lookup_type(+)         = 'YES_NO'
357887   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
357888   AND fvl114.view_application_id(+) = 0
357889   AND fvl114.language(+)            = USERENV('LANG')
357890   
357891 )
357892 ;
357893 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
357894 
357895       trace
357896          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
357897          ,p_level    => C_LEVEL_STATEMENT
357898          ,p_module   => l_log_module);
357899 
357900 END IF;
357901 --
357902 
357903 
357904 
357905 --
357906 INSERT INTO xla_diag_sources --line1
357907 (
357908         event_id
357909       , ledger_id
357910       , sla_ledger_id
357911       , description_language
357912       , object_name
357913       , object_type_code
357914       , line_number
357915       , source_application_id
357916       , source_type_code
357917       , source_code
357918       , source_value
357919       , source_meaning
357920       , created_by
357921       , creation_date
357922       , last_update_date
357923       , last_updated_by
357924       , last_update_login
357925       , program_update_date
357926       , program_application_id
357927       , program_id
357928       , request_id
357929 )
357930 SELECT  event_id
357931       , p_target_ledger_id
357932       , p_sla_ledger_id
357933       , p_language
357934       , object_name
357935       , object_type_code
357936       , line_number
357937       , source_application_id
357938       , source_type_code
357939       , source_code
357940       , SUBSTR(source_value,1,1996)
357941       , SUBSTR(source_meaning,1,200)
357942       , xla_environment_pkg.g_Usr_Id
357943       , TRUNC(SYSDATE)
357944       , TRUNC(SYSDATE)
357945       , xla_environment_pkg.g_Usr_Id
357946       , xla_environment_pkg.g_Login_Id
357947       , TRUNC(SYSDATE)
357948       , xla_environment_pkg.g_Prog_Appl_Id
357949       , xla_environment_pkg.g_Prog_Id
357950       , xla_environment_pkg.g_Req_Id
357951   FROM (
357952        SELECT xet.event_id                  event_id
357953             , l2.line_number                 line_number
357954             , CASE r
357955                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
357956                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
357957                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
357958                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
357959                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
357960                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
357961                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
357962                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
357963                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
357964                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
357965                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
357966                 
357967                ELSE null
357968               END                           object_name
357969             , CASE r
357970                 WHEN 1 THEN 'LINE' 
357971                 WHEN 2 THEN 'LINE' 
357972                 WHEN 3 THEN 'LINE' 
357973                 WHEN 4 THEN 'LINE' 
357974                 WHEN 5 THEN 'LINE' 
357975                 WHEN 6 THEN 'LINE' 
357976                 WHEN 7 THEN 'LINE' 
357977                 WHEN 8 THEN 'LINE' 
357978                 WHEN 9 THEN 'LINE' 
357979                 WHEN 10 THEN 'LINE' 
357980                 WHEN 11 THEN 'LINE' 
357981                 
357982                 ELSE null
357983               END                           object_type_code
357984             , CASE r
357985                 WHEN 1 THEN '707' 
357986                 WHEN 2 THEN '707' 
357987                 WHEN 3 THEN '707' 
357988                 WHEN 4 THEN '707' 
357989                 WHEN 5 THEN '707' 
357990                 WHEN 6 THEN '707' 
357991                 WHEN 7 THEN '707' 
357992                 WHEN 8 THEN '707' 
357993                 WHEN 9 THEN '707' 
357994                 WHEN 10 THEN '707' 
357995                 WHEN 11 THEN '707' 
357996                 
357997                 ELSE null
357998               END                           source_application_id
357999             , 'S'             source_type_code
358000             , CASE r
358001                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
358002                 WHEN 2 THEN 'COST_ELEMENT_ID' 
358003                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
358004                 WHEN 4 THEN 'CURRENCY_CODE' 
358005                 WHEN 5 THEN 'ENTERED_AMOUNT' 
358006                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
358007                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
358008                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
358009                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
358010                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
358011                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
358012                 
358013                 ELSE null
358014               END                           source_code
358015             , CASE r
358016                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
358017                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
358018                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
358019                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
358020                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
358021                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
358022                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
358023                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
358024                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
358025                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
358026                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
358027                 
358028                 ELSE null
358029               END                           source_value
358030             , CASE r
358031                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
358032                           1009615
358033                          ,TO_CHAR(l2.COST_ELEMENT_ID)
358034                          ,'COST_ELEMENT_ID'
358035                          ,'S'
358036                          ,707)
358037                 
358038                 ELSE null
358039               END               source_meaning
358040          FROM  xla_events_gt     xet  
358041         , CST_XLA_INV_LINES_V  l2
358042             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
358043         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
358044           AND xet.event_type_code = C_EVENT_TYPE_CODE
358045             AND l2.event_id          = xet.event_id
358046 
358047 )
358048 ;
358049 --
358050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
358051 
358052       trace
358053          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
358054          ,p_level    => C_LEVEL_STATEMENT
358055          ,p_module   => l_log_module);
358056 
358057 END IF;
358058 
358059 
358060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
358061       trace
358062          (p_msg      => 'END of insert_sources_578'
358063          ,p_level    => C_LEVEL_PROCEDURE
358064          ,p_module   => l_log_module);
358065 END IF;
358066 EXCEPTION
358067   WHEN xla_exceptions_pkg.application_exception THEN
358068       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
358069             trace
358070                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
358071                ,p_level    => C_LEVEL_EXCEPTION
358072                ,p_module   => l_log_module);
358073       END IF;
358074       RAISE;
358075   WHEN OTHERS THEN
358076       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
358077             trace
358078                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
358079                ,p_level    => C_LEVEL_EXCEPTION
358080                ,p_module   => l_log_module);
358081        END IF;
358082        xla_exceptions_pkg.raise_message
358083            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_578');
358084 END insert_sources_578;
358085 --
358086 
358087 ---------------------------------------
358088 --
358089 -- PRIVATE FUNCTION
358090 --         EventType_578
358091 --
358092 ----------------------------------------
358093 --
358094 FUNCTION EventType_578
358095        (p_application_id         IN NUMBER
358096        ,p_base_ledger_id         IN NUMBER
358097        ,p_target_ledger_id       IN NUMBER
358098        ,p_language               IN VARCHAR2
358099        ,p_currency_code          IN VARCHAR2
358100        ,p_sla_ledger_id          IN NUMBER
358101        ,p_pad_start_date         IN DATE
358102        ,p_pad_end_date           IN DATE
358103        ,p_primary_ledger_id      IN NUMBER)
358104 RETURN BOOLEAN IS
358105 --
358106 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_ADJ';
358107 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
358108 
358109 l_calculate_acctd_flag   VARCHAR2(1) :='N';
358110 l_calculate_g_l_flag     VARCHAR2(1) :='N';
358111 --
358112 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358113 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358114 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
358115 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
358116 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358117 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
358118 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
358119 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358120 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
358121 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
358122 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358123 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358124 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358125 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
358126 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
358127 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
358128 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
358129 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
358130 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
358131 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
358132 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
358133 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
358134 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
358135 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
358136 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
358137 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
358138 
358139 l_event_id                             NUMBER;
358140 l_previous_event_id                    NUMBER;
358141 l_first_event_id                       NUMBER;
358142 l_last_event_id                        NUMBER;
358143 
358144 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
358145 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
358146 --
358147 --
358148 l_result                    BOOLEAN := TRUE;
358149 l_rows                      NUMBER  := 1000;
358150 l_event_type_name           VARCHAR2(80) := 'Logical PO Delivery Adjustment';
358151 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
358152 l_description               VARCHAR2(4000);
358153 l_transaction_reversal      NUMBER;
358154 l_ae_header_id              NUMBER;
358155 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
358156 l_log_module                VARCHAR2(240);
358157 --
358158 l_acct_reversal_source      VARCHAR2(30);
358159 l_trx_reversal_source       VARCHAR2(30);
358160 
358161 l_continue_with_lines       BOOLEAN := TRUE;
358162 --
358163 l_acc_rev_gl_date_source    DATE;                      -- 4262811
358164 --
358165 type t_array_event_id is table of number index by binary_integer;
358166 
358167 l_rec_array_event                    t_rec_array_event;
358168 l_null_rec_array_event               t_rec_array_event;
358169 l_array_ae_header_id                 xla_number_array_type;
358170 l_actual_flag                        VARCHAR2(1) := NULL;
358171 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
358172 l_balance_type_code                  VARCHAR2(1) :=NULL;
358173 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
358174 
358175 --
358176 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
358177 --
358178 
358179 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
358180 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
358181 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
358182 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
358183 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
358184 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358185 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358186 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358187 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358188 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358189 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358190 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358191 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
358192 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
358193 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
358194 TYPE t_array_source_83 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
358195 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
358196 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
358197 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
358198 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
358199 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
358200 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
358201 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
358202 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
358203 
358204 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
358205 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
358206 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
358207 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
358208 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
358209 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
358210 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
358211 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
358212 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
358213 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
358214 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
358215 
358216 l_array_source_1              t_array_source_1;
358217 l_array_source_2              t_array_source_2;
358218 l_array_source_3              t_array_source_3;
358219 l_array_source_4              t_array_source_4;
358220 l_array_source_5              t_array_source_5;
358221 l_array_source_22              t_array_source_22;
358222 l_array_source_24              t_array_source_24;
358223 l_array_source_41              t_array_source_41;
358224 l_array_source_42              t_array_source_42;
358225 l_array_source_43              t_array_source_43;
358226 l_array_source_44              t_array_source_44;
358227 l_array_source_45              t_array_source_45;
358228 l_array_source_79              t_array_source_79;
358229 l_array_source_80              t_array_source_80;
358230 l_array_source_81              t_array_source_81;
358231 l_array_source_83              t_array_source_83;
358232 l_array_source_85              t_array_source_85;
358233 l_array_source_85_meaning      t_array_lookup_meaning;
358234 l_array_source_86              t_array_source_86;
358235 l_array_source_87              t_array_source_87;
358236 l_array_source_89              t_array_source_89;
358237 l_array_source_96              t_array_source_96;
358238 l_array_source_100              t_array_source_100;
358239 l_array_source_101              t_array_source_101;
358240 l_array_source_114              t_array_source_114;
358241 l_array_source_114_meaning      t_array_lookup_meaning;
358242 
358243 l_array_source_11      t_array_source_11;
358244 l_array_source_15      t_array_source_15;
358245 l_array_source_84      t_array_source_84;
358246 l_array_source_88      t_array_source_88;
358247 l_array_source_91      t_array_source_91;
358248 l_array_source_92      t_array_source_92;
358249 l_array_source_93      t_array_source_93;
358250 l_array_source_94      t_array_source_94;
358251 l_array_source_95      t_array_source_95;
358252 l_array_source_97      t_array_source_97;
358253 l_array_source_108      t_array_source_108;
358254 
358255 --
358256 CURSOR header_cur
358257 IS
358258 SELECT /*+ leading(xet) cardinality(xet,1) */
358259 -- Event Type Code: LOG_PO_DEL_ADJ
358260 -- Event Class Code: PURCHASE_ORDER
358261     xet.entity_id
358262   , xet.legal_entity_id
358263   , xet.entity_code
358264   , xet.transaction_number
358265   , xet.event_id
358266   , xet.event_class_code
358267   , xet.event_type_code
358268   , xet.event_number
358269   , xet.event_date
358270   , xet.transaction_date
358271   , xet.reference_num_1
358272   , xet.reference_num_2
358273   , xet.reference_num_3
358274   , xet.reference_num_4
358275   , xet.reference_char_1
358276   , xet.reference_char_2
358277   , xet.reference_char_3
358278   , xet.reference_char_4
358279   , xet.reference_date_1
358280   , xet.reference_date_2
358281   , xet.reference_date_3
358282   , xet.reference_date_4
358283   , xet.event_created_by
358284   , xet.budgetary_control_flag 
358285   , h1.TRANSACTION_ID    source_1
358286   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
358287   , h3.TRANSACTION_QUANTITY    source_3
358288   , h3.TRANSACTION_UOM    source_4
358289   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
358290   , h6.PLA_BRIDGING_ACCOUNT    source_22
358291   , h6.PLA_EXPENSE_ACCOUNT    source_24
358292   , h6.PLA_MATERIAL_ACCOUNT    source_41
358293   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
358294   , h6.PLA_RESOURCE_ACCOUNT    source_43
358295   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
358296   , h6.PLA_OVERHEAD_ACCOUNT    source_45
358297   , h3.APPLIED_TO_APPL_ID    source_79
358298   , h3.APPLIED_TO_DIST_LINK_TYPE    source_80
358299   , h3.APPLIED_TO_ENTITY_CODE    source_81
358300   , h3.APPLIED_TO_PO_DOC_ID    source_83
358301   , h1.DISTRIBUTION_TYPE    source_85
358302   , fvl85.meaning   source_85_meaning
358303   , h7.PO_BUDGET_ACCOUNT    source_86
358304   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
358305   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
358306   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_96
358307   , h9.CST_ENCUM_UPG_OPTION    source_100
358308   , h3.TXN_PO_DISTRIBUTION_ID    source_101
358309   , h1.TRANSFER_TO_GL_INDICATOR    source_114
358310   , fvl114.meaning   source_114_meaning
358311   FROM xla_events_gt     xet 
358312   , CST_XLA_INV_HEADERS_V  h1
358313   , CST_XLA_INV_REF_V  h3
358314   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
358315   , CST_XLA_INV_TXN_TYPES_REF_V  h5
358316   , CST_XLA_PLA_CATEGORY_REF_V  h6
358317   , PO_DISTS_REF_V  h7
358318   , PO_HEADERS_REF_V  h8
358319   , PSA_CST_XLA_UPG_V  h9
358320   , fnd_lookup_values    fvl85
358321   , fnd_lookup_values    fvl114
358322  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
358323    and xet.event_type_code = C_EVENT_TYPE_CODE
358324    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
358325  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
358326 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
358327 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG AND h3.txn_po_header_id = h7.po_header_id  (+)  AND h3.txn_po_distribution_id = h7.po_distribution_id (+)  AND h3.txn_po_header_id = h8.po_header_id (+)  AND h3.rcv_transaction_id = h9.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
358328   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
358329   AND fvl85.view_application_id(+) = 700
358330   AND fvl85.language(+)            = USERENV('LANG')
358331      AND fvl114.lookup_type(+)         = 'YES_NO'
358332   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
358333   AND fvl114.view_application_id(+) = 0
358334   AND fvl114.language(+)            = USERENV('LANG')
358335   
358336  ORDER BY event_id
358337 ;
358338 
358339 
358340 --
358341 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
358342 IS
358343 SELECT /*+ leading(xet) cardinality(xet,1) */
358344 -- Event Type Code: LOG_PO_DEL_ADJ
358345 -- Event Class Code: PURCHASE_ORDER
358346     xet.entity_id
358347    ,xet.legal_entity_id
358348    ,xet.entity_code
358349    ,xet.transaction_number
358350    ,xet.event_id
358351    ,xet.event_class_code
358352    ,xet.event_type_code
358353    ,xet.event_number
358354    ,xet.event_date
358355    ,xet.transaction_date
358356    ,xet.reference_num_1
358357    ,xet.reference_num_2
358358    ,xet.reference_num_3
358359    ,xet.reference_num_4
358360    ,xet.reference_char_1
358361    ,xet.reference_char_2
358362    ,xet.reference_char_3
358363    ,xet.reference_char_4
358364    ,xet.reference_date_1
358365    ,xet.reference_date_2
358366    ,xet.reference_date_3
358367    ,xet.reference_date_4
358368    ,xet.event_created_by
358369    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
358370   , l2.CODE_COMBINATION_ID    source_11
358371   , l2.COST_ELEMENT_ID    source_15
358372   , l2.DISTRIBUTION_IDENTIFIER    source_84
358373   , l2.CURRENCY_CODE    source_88
358374   , l2.ENTERED_AMOUNT    source_91
358375   , l2.CURRENCY_CONVERSION_DATE    source_92
358376   , l2.CURRENCY_CONVERSION_RATE    source_93
358377   , l2.CURRENCY_CONVERSION_TYPE    source_94
358378   , l2.ACCOUNTED_AMOUNT    source_95
358379   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
358380   , l2.L_ORGANIZATION_CODE    source_108
358381   FROM xla_events_gt     xet 
358382   , CST_XLA_INV_LINES_V  l2
358383  WHERE xet.event_id between x_first_event_id and x_last_event_id
358384    and xet.event_date between p_pad_start_date and p_pad_end_date
358385    and xet.event_type_code = C_EVENT_TYPE_CODE
358386    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
358387 ;
358388 
358389 --
358390 BEGIN
358391 IF g_log_enabled THEN
358392    l_log_module := C_DEFAULT_MODULE||'.EventType_578';
358393 END IF;
358394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
358395    trace
358396       (p_msg      => 'BEGIN of EventType_578'
358397       ,p_level    => C_LEVEL_PROCEDURE
358398       ,p_module   => l_log_module);
358399 END IF;
358400 
358401 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
358402    trace
358403       (p_msg      => 'p_application_id = '||p_application_id||
358404                      ' - p_base_ledger_id = '||p_base_ledger_id||
358405                      ' - p_target_ledger_id  = '||p_target_ledger_id||
358406                      ' - p_language = '||p_language||
358407                      ' - p_currency_code = '||p_currency_code||
358408                      ' - p_sla_ledger_id = '||p_sla_ledger_id
358409       ,p_level    => C_LEVEL_STATEMENT
358410       ,p_module   => l_log_module);
358411 END IF;
358412 --
358413 -- initialze arrays
358414 --
358415 g_array_event.DELETE;
358416 l_rec_array_event := l_null_rec_array_event;
358417 --
358418 --------------------------------------
358419 -- 4262811 Initialze MPA Line Number
358420 --------------------------------------
358421 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
358422 
358423 --
358424 
358425 --
358426 OPEN header_cur;
358427 --
358428 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
358429    trace
358430    (p_msg      => 'SQL - FETCH header_cur'
358431    ,p_level    => C_LEVEL_STATEMENT
358432    ,p_module   => l_log_module);
358433 END IF;
358434 --
358435 LOOP
358436 FETCH header_cur BULK COLLECT INTO
358437         l_array_entity_id
358438       , l_array_legal_entity_id
358439       , l_array_entity_code
358440       , l_array_transaction_num
358441       , l_array_event_id
358442       , l_array_class_code
358443       , l_array_event_type
358444       , l_array_event_number
358445       , l_array_event_date
358446       , l_array_transaction_date
358447       , l_array_reference_num_1
358448       , l_array_reference_num_2
358449       , l_array_reference_num_3
358450       , l_array_reference_num_4
358451       , l_array_reference_char_1
358452       , l_array_reference_char_2
358453       , l_array_reference_char_3
358454       , l_array_reference_char_4
358455       , l_array_reference_date_1
358456       , l_array_reference_date_2
358457       , l_array_reference_date_3
358458       , l_array_reference_date_4
358459       , l_array_event_created_by
358460       , l_array_budgetary_control_flag 
358461       , l_array_source_1
358462       , l_array_source_2
358463       , l_array_source_3
358464       , l_array_source_4
358465       , l_array_source_5
358466       , l_array_source_22
358467       , l_array_source_24
358468       , l_array_source_41
358469       , l_array_source_42
358470       , l_array_source_43
358471       , l_array_source_44
358472       , l_array_source_45
358473       , l_array_source_79
358474       , l_array_source_80
358475       , l_array_source_81
358476       , l_array_source_83
358477       , l_array_source_85
358478       , l_array_source_85_meaning
358479       , l_array_source_86
358480       , l_array_source_87
358481       , l_array_source_89
358482       , l_array_source_96
358483       , l_array_source_100
358484       , l_array_source_101
358485       , l_array_source_114
358486       , l_array_source_114_meaning
358487       LIMIT l_rows;
358488 --
358489 IF (C_LEVEL_EVENT >= g_log_level) THEN
358490    trace
358491    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
358492    ,p_level    => C_LEVEL_EVENT
358493    ,p_module   => l_log_module);
358494 END IF;
358495 --
358496 EXIT WHEN l_array_entity_id.COUNT = 0;
358497 
358498 -- initialize arrays
358499 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
358500 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
358501 
358502 --
358503 -- Bug 4458708
358504 --
358505 XLA_AE_LINES_PKG.g_LineNumber := 0;
358506 
358507 
358508 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
358509 g_last_hdr_idx := l_array_event_id.LAST;
358510 --
358511 -- loop for the headers. Each iteration is for each header extract row
358512 -- fetched in header cursor
358513 --
358514 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
358515 
358516 --
358517 -- set event info as cache for other routines to refer event attributes
358518 --
358519 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
358520    (p_application_id           => p_application_id
358521    ,p_primary_ledger_id        => p_primary_ledger_id
358522    ,p_base_ledger_id           => p_base_ledger_id
358523    ,p_target_ledger_id         => p_target_ledger_id
358524    ,p_entity_id                => l_array_entity_id(hdr_idx)
358525    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
358526    ,p_entity_code              => l_array_entity_code(hdr_idx)
358527    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
358528    ,p_event_id                 => l_array_event_id(hdr_idx)
358529    ,p_event_class_code         => l_array_class_code(hdr_idx)
358530    ,p_event_type_code          => l_array_event_type(hdr_idx)
358531    ,p_event_number             => l_array_event_number(hdr_idx)
358532    ,p_event_date               => l_array_event_date(hdr_idx)
358533    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
358534    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
358535    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
358536    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
358537    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
358538    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
358539    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
358540    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
358541    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
358542    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
358543    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
358544    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
358545    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
358546    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
358547    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
358548 
358549 --
358550 -- set the status of entry to C_VALID (0)
358551 --
358552 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
358553 
358554 --
358555 -- initialize a row for ae header
358556 --
358557 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
358558 
358559 l_event_id := l_array_event_id(hdr_idx);
358560 
358561 --
358562 -- storing the hdr_idx for event. May be used by line cursor.
358563 --
358564 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
358565 
358566 --
358567 -- store sources from header extract. This can be improved to
358568 -- store only those sources from header extract that may be used in lines
358569 --
358570 
358571 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
358572 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
358573 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
358574 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
358575 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
358576 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
358577 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
358578 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
358579 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
358580 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
358581 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
358582 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
358583 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
358584 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
358585 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
358586 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
358587 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
358588 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
358589 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
358590 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
358591 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
358592 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
358593 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
358594 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
358595 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
358596 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
358597 
358598 --
358599 -- initilaize the status of ae headers for diffrent balance types
358600 -- the status is initialised to C_NOT_CREATED (2)
358601 --
358602 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
358603 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
358604 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
358605 
358606 --
358607 -- call api to validate and store accounting attributes for header
358608 --
358609 
358610 ------------------------------------------------------------
358611 -- Accrual Reversal : to get date for Standard Source (NONE)
358612 ------------------------------------------------------------
358613 l_acc_rev_gl_date_source := NULL;
358614 
358615      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
358616       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
358617      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
358618       l_rec_acct_attrs.array_date_value(2) := 
358619 xla_ae_sources_pkg.GetSystemSourceDate(
358620    p_source_code           => 'XLA_REFERENCE_DATE_1'
358621  , p_source_type_code      => 'Y'
358622  , p_source_application_id =>  602
358623 );
358624      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
358625       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
358626 
358627 
358628 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
358629 
358630 XLA_AE_HEADER_PKG.SetJeCategoryName;
358631 
358632 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
358633 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
358634 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
358635 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
358636 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
358637 
358638 
358639 --
358640 xla_ae_header_pkg.SetHdrDescription(
358641    p_description => Description_1 (
358642    p_application_id => p_application_id 
358643  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
358644  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
358645  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
358646  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
358647  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
358648    )
358649 );
358650 --
358651 
358652 -- No header level analytical criteria
358653 
358654 --
358655 --accounting attribute enhancement, bug 3612931
358656 --
358657 l_trx_reversal_source := SUBSTR(NULL, 1,30);
358658 
358659 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
358660    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
358661 
358662    xla_accounting_err_pkg.build_message
358663       (p_appli_s_name            => 'XLA'
358664       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
358665       ,p_token_1                 => 'ACCT_ATTR_NAME'
358666       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
358667       ,p_token_2                 => 'PRODUCT_NAME'
358668       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
358669       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
358670       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
358671       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
358672 
358673 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
358674    --
358675    -- following sets the accounting attributes needed to reverse
358676    -- accounting for a distributeion
358677    --
358678    xla_ae_lines_pkg.SetTrxReversalAttrs
358679       (p_event_id              => l_event_id
358680       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
358681       ,p_trx_reversal_source   => l_trx_reversal_source);
358682 
358683 END IF;
358684 
358685 
358686 ----------------------------------------------------------------
358687 -- 4262811 -  update the header statuses to invalid in need be
358688 ----------------------------------------------------------------
358689 --
358690 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
358691 
358692 
358693   -----------------------------------------------
358694   -- No accrual reversal for the event class/type
358695   -----------------------------------------------
358696 ----------------------------------------------------------------
358697 
358698 --
358699 -- this ends the header loop iteration for one bulk fetch
358700 --
358701 END LOOP;
358702 
358703 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
358704 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
358705 
358706 --
358707 -- insert dummy rows into lines gt table that were created due to
358708 -- transaction reversals
358709 --
358710 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
358711    l_result := XLA_AE_LINES_PKG.InsertLines;
358712 END IF;
358713 
358714 --
358715 -- reset the temp_line_num for each set of events fetched from header
358716 -- cursor rather than doing it for each new event in line cursor
358717 -- Bug 3939231
358718 --
358719 xla_ae_lines_pkg.g_temp_line_num := 0;
358720 
358721 
358722 
358723 --
358724 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
358725 --
358726 --
358727 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
358728 
358729       trace
358730          (p_msg      => 'SQL - FETCH line_cur'
358731          ,p_level    => C_LEVEL_STATEMENT
358732          ,p_module   => l_log_module);
358733 
358734 END IF;
358735 --
358736 --
358737 LOOP
358738   --
358739   FETCH line_cur BULK COLLECT INTO
358740         l_array_entity_id
358741       , l_array_legal_entity_id
358742       , l_array_entity_code
358743       , l_array_transaction_num
358744       , l_array_event_id
358745       , l_array_class_code
358746       , l_array_event_type
358747       , l_array_event_number
358748       , l_array_event_date
358749       , l_array_transaction_date
358750       , l_array_reference_num_1
358751       , l_array_reference_num_2
358752       , l_array_reference_num_3
358753       , l_array_reference_num_4
358754       , l_array_reference_char_1
358755       , l_array_reference_char_2
358756       , l_array_reference_char_3
358757       , l_array_reference_char_4
358758       , l_array_reference_date_1
358759       , l_array_reference_date_2
358760       , l_array_reference_date_3
358761       , l_array_reference_date_4
358762       , l_array_event_created_by
358763       , l_array_budgetary_control_flag
358764       , l_array_extract_line_num 
358765       , l_array_source_11
358766       , l_array_source_15
358767       , l_array_source_84
358768       , l_array_source_88
358769       , l_array_source_91
358770       , l_array_source_92
358771       , l_array_source_93
358772       , l_array_source_94
358773       , l_array_source_95
358774       , l_array_source_97
358775       , l_array_source_108
358776       LIMIT l_rows;
358777 
358778   --
358779   IF (C_LEVEL_EVENT >= g_log_level) THEN
358780             trace
358781                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
358782                ,p_level    => C_LEVEL_EVENT
358783                ,p_module   => l_log_module);
358784   END IF;
358785   --
358786   EXIT WHEN l_array_entity_id.count = 0;
358787 
358788   XLA_AE_LINES_PKG.g_rec_lines := null;
358789 
358790 --
358791 -- Bug 4458708
358792 --
358793 XLA_AE_LINES_PKG.g_LineNumber := 0;
358794 --
358795 --
358796 
358797 FOR Idx IN 1..l_array_event_id.count LOOP
358798    --
358799    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
358800    --
358801    l_event_id := l_array_event_id(idx);  -- 5648433
358802 
358803    --
358804    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
358805    --
358806 
358807    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
358808              (g_array_event(l_event_id).array_value_num('header_index'))
358809          ,'N'
358810          ) <> 'Y'
358811    THEN
358812       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
358813          trace
358814             (p_msg      => 'Trancaction revesal option is not Y '
358815             ,p_level    => C_LEVEL_STATEMENT
358816             ,p_module   => l_log_module);
358817       END IF;
358818 
358819 --
358820 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
358821 --
358822 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
358823 --
358824 -- set event info as cache for other routines to refer event attributes
358825 --
358826 
358827 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
358828    l_previous_event_id := l_event_id;
358829 
358830    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
358831       (p_application_id           => p_application_id
358832       ,p_primary_ledger_id        => p_primary_ledger_id
358833       ,p_base_ledger_id           => p_base_ledger_id
358834       ,p_target_ledger_id         => p_target_ledger_id
358835       ,p_entity_id                => l_array_entity_id(Idx)
358836       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
358837       ,p_entity_code              => l_array_entity_code(Idx)
358838       ,p_transaction_num          => l_array_transaction_num(Idx)
358839       ,p_event_id                 => l_array_event_id(Idx)
358840       ,p_event_class_code         => l_array_class_code(Idx)
358841       ,p_event_type_code          => l_array_event_type(Idx)
358842       ,p_event_number             => l_array_event_number(Idx)
358843       ,p_event_date               => l_array_event_date(Idx)
358844       ,p_transaction_date         => l_array_transaction_date(Idx)
358845       ,p_reference_num_1          => l_array_reference_num_1(Idx)
358846       ,p_reference_num_2          => l_array_reference_num_2(Idx)
358847       ,p_reference_num_3          => l_array_reference_num_3(Idx)
358848       ,p_reference_num_4          => l_array_reference_num_4(Idx)
358849       ,p_reference_char_1         => l_array_reference_char_1(Idx)
358850       ,p_reference_char_2         => l_array_reference_char_2(Idx)
358851       ,p_reference_char_3         => l_array_reference_char_3(Idx)
358852       ,p_reference_char_4         => l_array_reference_char_4(Idx)
358853       ,p_reference_date_1         => l_array_reference_date_1(Idx)
358854       ,p_reference_date_2         => l_array_reference_date_2(Idx)
358855       ,p_reference_date_3         => l_array_reference_date_3(Idx)
358856       ,p_reference_date_4         => l_array_reference_date_4(Idx)
358857       ,p_event_created_by         => l_array_event_created_by(Idx)
358858       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
358859        --
358860 END IF;
358861 
358862 
358863 
358864 --
358865 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
358866 
358867 l_acct_reversal_source := SUBSTR(NULL, 1,30);
358868 
358869 IF l_continue_with_lines THEN
358870    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
358871       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
358872 
358873       xla_accounting_err_pkg.build_message
358874          (p_appli_s_name            => 'XLA'
358875          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
358876          ,p_token_1                 => 'LINE_NUMBER'
358877          ,p_value_1                 => l_array_extract_line_num(Idx)
358878          ,p_token_2                 => 'PRODUCT_NAME'
358879          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
358880          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
358881          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
358882          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
358883 
358884    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
358885       --
358886       -- following sets the accounting attributes needed to reverse
358887       -- accounting for a distributeion
358888       --
358889 
358890       --
358891       -- 5217187
358892       --
358893       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
358894       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
358895                                        g_array_event(l_event_id).array_value_num('header_index'));
358896       --
358897       --
358898 
358899       -- No reversal code generated
358900 
358901       xla_ae_lines_pkg.SetAcctReversalAttrs
358902          (p_event_id             => l_event_id
358903          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
358904          ,p_calculate_acctd_flag => l_calculate_acctd_flag
358905          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
358906    END IF;
358907 
358908    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
358909        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
358910 
358911 --
358912 AcctLineType_52 (
358913  p_application_id  => p_application_id
358914  ,p_event_id     => l_event_id
358915  ,p_calculate_acctd_flag => l_calculate_acctd_flag
358916  ,p_calculate_g_l_flag => l_calculate_g_l_flag
358917  ,p_actual_flag => l_actual_flag
358918  ,p_balance_type_code => l_balance_type_code
358919  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
358920  
358921  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
358922  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
358923  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
358924  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
358925  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
358926  , p_source_11 => l_array_source_11(Idx)
358927  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
358928  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
358929  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
358930  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
358931  , p_source_84 => l_array_source_84(Idx)
358932  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
358933  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
358934  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
358935  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
358936  , p_source_88 => l_array_source_88(Idx)
358937  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
358938  , p_source_91 => l_array_source_91(Idx)
358939  , p_source_92 => l_array_source_92(Idx)
358940  , p_source_93 => l_array_source_93(Idx)
358941  , p_source_94 => l_array_source_94(Idx)
358942  , p_source_95 => l_array_source_95(Idx)
358943  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
358944  , p_source_97 => l_array_source_97(Idx)
358945  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
358946  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
358947  );
358948 If(l_balance_type_code = 'A') THEN
358949   l_actual_gain_loss_ref := l_gain_or_loss_ref;
358950 END IF;
358951 
358952 --
358953 
358954 
358955 --
358956 AcctLineType_83 (
358957  p_application_id  => p_application_id
358958  ,p_event_id     => l_event_id
358959  ,p_calculate_acctd_flag => l_calculate_acctd_flag
358960  ,p_calculate_g_l_flag => l_calculate_g_l_flag
358961  ,p_actual_flag => l_actual_flag
358962  ,p_balance_type_code => l_balance_type_code
358963  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
358964  
358965  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
358966  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
358967  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
358968  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
358969  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
358970  , p_source_11 => l_array_source_11(Idx)
358971  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
358972  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
358973  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
358974  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
358975  , p_source_84 => l_array_source_84(Idx)
358976  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
358977  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
358978  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
358979  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
358980  , p_source_88 => l_array_source_88(Idx)
358981  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
358982  , p_source_91 => l_array_source_91(Idx)
358983  , p_source_92 => l_array_source_92(Idx)
358984  , p_source_93 => l_array_source_93(Idx)
358985  , p_source_94 => l_array_source_94(Idx)
358986  , p_source_95 => l_array_source_95(Idx)
358987  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
358988  , p_source_97 => l_array_source_97(Idx)
358989  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
358990  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
358991  );
358992 If(l_balance_type_code = 'A') THEN
358993   l_actual_gain_loss_ref := l_gain_or_loss_ref;
358994 END IF;
358995 
358996 --
358997 
358998 
358999 --
359000 AcctLineType_285 (
359001  p_application_id  => p_application_id
359002  ,p_event_id     => l_event_id
359003  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359004  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359005  ,p_actual_flag => l_actual_flag
359006  ,p_balance_type_code => l_balance_type_code
359007  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359008  
359009  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359010  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359011  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359012  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359013  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359014  , p_source_15 => l_array_source_15(Idx)
359015  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
359016  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
359017  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
359018  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
359019  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
359020  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359021  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359022  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359023  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359024  , p_source_84 => l_array_source_84(Idx)
359025  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359026  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359027  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359028  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359029  , p_source_88 => l_array_source_88(Idx)
359030  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359031  , p_source_91 => l_array_source_91(Idx)
359032  , p_source_92 => l_array_source_92(Idx)
359033  , p_source_93 => l_array_source_93(Idx)
359034  , p_source_94 => l_array_source_94(Idx)
359035  , p_source_95 => l_array_source_95(Idx)
359036  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359037  , p_source_97 => l_array_source_97(Idx)
359038  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359039  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359040  , p_source_108 => l_array_source_108(Idx)
359041  );
359042 If(l_balance_type_code = 'A') THEN
359043   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359044 END IF;
359045 
359046 --
359047 
359048 
359049 --
359050 AcctLineType_313 (
359051  p_application_id  => p_application_id
359052  ,p_event_id     => l_event_id
359053  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359054  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359055  ,p_actual_flag => l_actual_flag
359056  ,p_balance_type_code => l_balance_type_code
359057  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359058  
359059  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359060  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359061  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359062  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359063  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359064  , p_source_11 => l_array_source_11(Idx)
359065  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359066  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359067  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359068  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359069  , p_source_84 => l_array_source_84(Idx)
359070  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359071  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359072  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359073  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359074  , p_source_88 => l_array_source_88(Idx)
359075  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359076  , p_source_91 => l_array_source_91(Idx)
359077  , p_source_92 => l_array_source_92(Idx)
359078  , p_source_93 => l_array_source_93(Idx)
359079  , p_source_94 => l_array_source_94(Idx)
359080  , p_source_95 => l_array_source_95(Idx)
359081  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359082  , p_source_97 => l_array_source_97(Idx)
359083  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359084  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359085  );
359086 If(l_balance_type_code = 'A') THEN
359087   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359088 END IF;
359089 
359090 --
359091 
359092 
359093 --
359094 AcctLineType_336 (
359095  p_application_id  => p_application_id
359096  ,p_event_id     => l_event_id
359097  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359098  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359099  ,p_actual_flag => l_actual_flag
359100  ,p_balance_type_code => l_balance_type_code
359101  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359102  
359103  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359104  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359105  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359106  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359107  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359108  , p_source_11 => l_array_source_11(Idx)
359109  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359110  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359111  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359112  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359113  , p_source_84 => l_array_source_84(Idx)
359114  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359115  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359116  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359117  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359118  , p_source_88 => l_array_source_88(Idx)
359119  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359120  , p_source_91 => l_array_source_91(Idx)
359121  , p_source_92 => l_array_source_92(Idx)
359122  , p_source_93 => l_array_source_93(Idx)
359123  , p_source_94 => l_array_source_94(Idx)
359124  , p_source_95 => l_array_source_95(Idx)
359125  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359126  , p_source_97 => l_array_source_97(Idx)
359127  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359128  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359129  );
359130 If(l_balance_type_code = 'A') THEN
359131   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359132 END IF;
359133 
359134 --
359135 
359136 
359137 --
359138 AcctLineType_422 (
359139  p_application_id  => p_application_id
359140  ,p_event_id     => l_event_id
359141  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359142  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359143  ,p_actual_flag => l_actual_flag
359144  ,p_balance_type_code => l_balance_type_code
359145  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359146  
359147  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359148  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359149  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359150  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359151  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359152  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
359153  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359154  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359155  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359156  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359157  , p_source_84 => l_array_source_84(Idx)
359158  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359159  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359160  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359161  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359162  , p_source_88 => l_array_source_88(Idx)
359163  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359164  , p_source_91 => l_array_source_91(Idx)
359165  , p_source_92 => l_array_source_92(Idx)
359166  , p_source_93 => l_array_source_93(Idx)
359167  , p_source_94 => l_array_source_94(Idx)
359168  , p_source_95 => l_array_source_95(Idx)
359169  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359170  , p_source_97 => l_array_source_97(Idx)
359171  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359172  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359173  );
359174 If(l_balance_type_code = 'A') THEN
359175   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359176 END IF;
359177 
359178 --
359179 
359180 
359181 --
359182 AcctLineType_440 (
359183  p_application_id  => p_application_id
359184  ,p_event_id     => l_event_id
359185  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359186  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359187  ,p_actual_flag => l_actual_flag
359188  ,p_balance_type_code => l_balance_type_code
359189  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359190  
359191  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359192  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359193  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359194  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359195  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359196  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
359197  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359198  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359199  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359200  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359201  , p_source_84 => l_array_source_84(Idx)
359202  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359203  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359204  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359205  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359206  , p_source_88 => l_array_source_88(Idx)
359207  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359208  , p_source_91 => l_array_source_91(Idx)
359209  , p_source_92 => l_array_source_92(Idx)
359210  , p_source_93 => l_array_source_93(Idx)
359211  , p_source_94 => l_array_source_94(Idx)
359212  , p_source_95 => l_array_source_95(Idx)
359213  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359214  , p_source_97 => l_array_source_97(Idx)
359215  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359216  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359217  );
359218 If(l_balance_type_code = 'A') THEN
359219   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359220 END IF;
359221 
359222 --
359223 
359224 
359225 --
359226 AcctLineType_477 (
359227  p_application_id  => p_application_id
359228  ,p_event_id     => l_event_id
359229  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359230  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359231  ,p_actual_flag => l_actual_flag
359232  ,p_balance_type_code => l_balance_type_code
359233  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359234  
359235  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359236  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359237  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359238  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359239  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359240  , p_source_11 => l_array_source_11(Idx)
359241  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359242  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359243  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359244  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359245  , p_source_84 => l_array_source_84(Idx)
359246  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359247  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359248  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359249  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359250  , p_source_88 => l_array_source_88(Idx)
359251  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359252  , p_source_91 => l_array_source_91(Idx)
359253  , p_source_92 => l_array_source_92(Idx)
359254  , p_source_93 => l_array_source_93(Idx)
359255  , p_source_94 => l_array_source_94(Idx)
359256  , p_source_95 => l_array_source_95(Idx)
359257  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359258  , p_source_97 => l_array_source_97(Idx)
359259  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359260  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359261  );
359262 If(l_balance_type_code = 'A') THEN
359263   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359264 END IF;
359265 
359266 --
359267 
359268 
359269 --
359270 AcctLineType_503 (
359271  p_application_id  => p_application_id
359272  ,p_event_id     => l_event_id
359273  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359274  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359275  ,p_actual_flag => l_actual_flag
359276  ,p_balance_type_code => l_balance_type_code
359277  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359278  
359279  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359280  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359281  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359282  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359283  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359284  , p_source_11 => l_array_source_11(Idx)
359285  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359286  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359287  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359288  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359289  , p_source_84 => l_array_source_84(Idx)
359290  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359291  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359292  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359293  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359294  , p_source_88 => l_array_source_88(Idx)
359295  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359296  , p_source_91 => l_array_source_91(Idx)
359297  , p_source_92 => l_array_source_92(Idx)
359298  , p_source_93 => l_array_source_93(Idx)
359299  , p_source_94 => l_array_source_94(Idx)
359300  , p_source_95 => l_array_source_95(Idx)
359301  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359302  , p_source_97 => l_array_source_97(Idx)
359303  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359304  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359305  );
359306 If(l_balance_type_code = 'A') THEN
359307   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359308 END IF;
359309 
359310 --
359311 
359312 
359313 --
359314 AcctLineType_524 (
359315  p_application_id  => p_application_id
359316  ,p_event_id     => l_event_id
359317  ,p_calculate_acctd_flag => l_calculate_acctd_flag
359318  ,p_calculate_g_l_flag => l_calculate_g_l_flag
359319  ,p_actual_flag => l_actual_flag
359320  ,p_balance_type_code => l_balance_type_code
359321  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
359322  
359323  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
359324  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
359325  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
359326  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
359327  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
359328  , p_source_11 => l_array_source_11(Idx)
359329  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
359330  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
359331  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
359332  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
359333  , p_source_84 => l_array_source_84(Idx)
359334  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
359335  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
359336  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
359337  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
359338  , p_source_88 => l_array_source_88(Idx)
359339  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
359340  , p_source_91 => l_array_source_91(Idx)
359341  , p_source_92 => l_array_source_92(Idx)
359342  , p_source_93 => l_array_source_93(Idx)
359343  , p_source_94 => l_array_source_94(Idx)
359344  , p_source_95 => l_array_source_95(Idx)
359345  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
359346  , p_source_97 => l_array_source_97(Idx)
359347  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
359348  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
359349  );
359350 If(l_balance_type_code = 'A') THEN
359351   l_actual_gain_loss_ref := l_gain_or_loss_ref;
359352 END IF;
359353 
359354 --
359355 
359356       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
359357       -- or secondary ledger that has different currency with primary
359358       -- or alc that is calculated by sla
359359       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
359360             (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'))
359361 
359362 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
359363 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
359364           AND (l_actual_flag = 'A')) THEN
359365         XLA_AE_LINES_PKG.CreateGainOrLossLines(
359366           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
359367          ,p_application_id   => p_application_id
359368          ,p_amb_context_code => 'DEFAULT'
359369          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
359370          ,p_event_class_code => C_EVENT_CLASS_CODE
359371          ,p_event_type_code  => C_EVENT_TYPE_CODE
359372          
359373          ,p_gain_ccid        => -1
359374          ,p_loss_ccid        => -1
359375 
359376          ,p_actual_flag      => l_actual_flag
359377          ,p_enc_flag         => null
359378          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
359379          ,p_enc_g_l_ref      => null
359380          );
359381       END IF;
359382    END IF;
359383 END IF;
359384 
359385    ELSE
359386       --
359387       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
359388       --
359389       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
359390          trace
359391             (p_msg      => 'Trancaction revesal option is Y'
359392             ,p_level    => C_LEVEL_STATEMENT
359393             ,p_module   => l_log_module);
359394       END IF;
359395    END IF;
359396 
359397 END LOOP;
359398 l_result := XLA_AE_LINES_PKG.InsertLines ;
359399 end loop;
359400 close line_cur;
359401 
359402 
359403 --
359404 -- insert headers into xla_ae_headers_gt table
359405 --
359406 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
359407 
359408 -- insert into errors table here.
359409 
359410 END LOOP;
359411 
359412 --
359413 -- 4865292
359414 --
359415 -- Compare g_hdr_extract_count with event count in
359416 -- CreateHeadersAndLines.
359417 --
359418 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
359419 
359420 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
359421    trace (p_msg     => '# rows extracted from header extract objects '
359422                     || ' (running total): '
359423                     || g_hdr_extract_count
359424          ,p_level   => C_LEVEL_STATEMENT
359425          ,p_module  => l_log_module);
359426 END IF;
359427 
359428 CLOSE header_cur;
359429 --
359430 
359431 --
359432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
359433    trace
359434       (p_msg      => 'END of EventType_578'
359435       ,p_level    => C_LEVEL_PROCEDURE
359436       ,p_module   => l_log_module);
359437 END IF;
359438 --
359439 RETURN l_result;
359440 EXCEPTION
359441 WHEN xla_exceptions_pkg.application_exception THEN
359442    
359443 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
359444 
359445    
359446 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
359447 
359448    RAISE;
359449 
359450 WHEN NO_DATA_FOUND THEN
359451 
359452 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
359453 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
359454 
359455 FOR header_record IN header_cur
359456 LOOP
359457     l_array_header_events(header_record.event_id) := header_record.event_id;
359458 END LOOP;
359459 
359460 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
359461 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
359462 
359463 fnd_file.put_line(fnd_file.LOG, '                    ');
359464 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
359465 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
359466 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
359467 
359468 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
359469 LOOP
359470 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
359471 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
359472         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
359473 	END IF;
359474 END LOOP;
359475 
359476 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
359477 fnd_file.put_line(fnd_file.LOG, '                    ');
359478 
359479 
359480 xla_exceptions_pkg.raise_message
359481       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_578');
359482 
359483 
359484 WHEN OTHERS THEN
359485    xla_exceptions_pkg.raise_message
359486       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_578');
359487 END EventType_578;
359488 --
359489 
359490 ---------------------------------------
359491 --
359492 -- PRIVATE PROCEDURE
359493 --         insert_sources_579
359494 --
359495 ----------------------------------------
359496 --
359497 PROCEDURE insert_sources_579(
359498                                 p_target_ledger_id       IN NUMBER
359499                               , p_language               IN VARCHAR2
359500                               , p_sla_ledger_id          IN NUMBER
359501                               , p_pad_start_date         IN DATE
359502                               , p_pad_end_date           IN DATE
359503                          )
359504 IS
359505 
359506 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_INV';
359507 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
359508 p_apps_owner                   VARCHAR2(30);
359509 l_log_module                   VARCHAR2(240);
359510 BEGIN
359511 IF g_log_enabled THEN
359512       l_log_module := C_DEFAULT_MODULE||'.insert_sources_579';
359513 END IF;
359514 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
359515 
359516       trace
359517          (p_msg      => 'BEGIN of insert_sources_579'
359518          ,p_level    => C_LEVEL_PROCEDURE
359519          ,p_module   => l_log_module);
359520 
359521 END IF;
359522 
359523 -- select APPS owner
359524 SELECT oracle_username
359525   INTO p_apps_owner
359526   FROM fnd_oracle_userid
359527  WHERE read_only_flag = 'U'
359528 ;
359529 
359530 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
359531       trace
359532          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
359533                         ' - p_language = '||p_language||
359534                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
359535                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
359536                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
359537                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
359538          ,p_level    => C_LEVEL_STATEMENT
359539          ,p_module   => l_log_module);
359540 END IF;
359541 
359542 
359543 --
359544 INSERT INTO xla_diag_sources --hdr1
359545 (
359546         event_id
359547       , ledger_id
359548       , sla_ledger_id
359549       , description_language
359550       , object_name
359551       , object_type_code
359552       , line_number
359553       , source_application_id
359554       , source_type_code
359555       , source_code
359556       , source_value
359557       , source_meaning
359558       , created_by
359559       , creation_date
359560       , last_update_date
359561       , last_updated_by
359562       , last_update_login
359563       , program_update_date
359564       , program_application_id
359565       , program_id
359566       , request_id
359567 )
359568 SELECT
359569         event_id
359570       , p_target_ledger_id
359571       , p_sla_ledger_id
359572       , p_language
359573       , object_name
359574       , object_type_code
359575       , line_number
359576       , source_application_id
359577       , source_type_code
359578       , source_code
359579       , SUBSTR(source_value ,1,1996)
359580       , SUBSTR(source_meaning,1,200)
359581       , xla_environment_pkg.g_Usr_Id
359582       , TRUNC(SYSDATE)
359583       , TRUNC(SYSDATE)
359584       , xla_environment_pkg.g_Usr_Id
359585       , xla_environment_pkg.g_Login_Id
359586       , TRUNC(SYSDATE)
359587       , xla_environment_pkg.g_Prog_Appl_Id
359588       , xla_environment_pkg.g_Prog_Id
359589       , xla_environment_pkg.g_Req_Id
359590   FROM (
359591        SELECT xet.event_id                  event_id
359592             , 0                             line_number
359593             , CASE r
359594                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
359595                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
359596                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
359597                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
359598                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
359599                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
359600                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
359601                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
359602                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
359603                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
359604                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
359605                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
359606                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
359607                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
359608                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
359609                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
359610                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
359611                 WHEN 18 THEN 'PO_DISTS_REF_V' 
359612                 WHEN 19 THEN 'CST_XLA_INV_REF_V' 
359613                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
359614                 WHEN 21 THEN 'PO_HEADERS_REF_V' 
359615                 WHEN 22 THEN 'PSA_CST_XLA_UPG_V' 
359616                 WHEN 23 THEN 'CST_XLA_INV_REF_V' 
359617                 WHEN 24 THEN 'CST_XLA_INV_HEADERS_V' 
359618                 
359619                ELSE null
359620               END                           object_name
359621             , CASE r
359622                 WHEN 1 THEN 'HEADER' 
359623                 WHEN 2 THEN 'HEADER' 
359624                 WHEN 3 THEN 'HEADER' 
359625                 WHEN 4 THEN 'HEADER' 
359626                 WHEN 5 THEN 'HEADER' 
359627                 WHEN 6 THEN 'HEADER' 
359628                 WHEN 7 THEN 'HEADER' 
359629                 WHEN 8 THEN 'HEADER' 
359630                 WHEN 9 THEN 'HEADER' 
359631                 WHEN 10 THEN 'HEADER' 
359632                 WHEN 11 THEN 'HEADER' 
359633                 WHEN 12 THEN 'HEADER' 
359634                 WHEN 13 THEN 'HEADER' 
359635                 WHEN 14 THEN 'HEADER' 
359636                 WHEN 15 THEN 'HEADER' 
359637                 WHEN 16 THEN 'HEADER' 
359638                 WHEN 17 THEN 'HEADER' 
359639                 WHEN 18 THEN 'HEADER' 
359640                 WHEN 19 THEN 'HEADER' 
359641                 WHEN 20 THEN 'HEADER' 
359642                 WHEN 21 THEN 'HEADER' 
359643                 WHEN 22 THEN 'HEADER' 
359644                 WHEN 23 THEN 'HEADER' 
359645                 WHEN 24 THEN 'HEADER' 
359646                 
359647                 ELSE null
359648               END                           object_type_code
359649             , CASE r
359650                 WHEN 1 THEN '707' 
359651                 WHEN 2 THEN '707' 
359652                 WHEN 3 THEN '707' 
359653                 WHEN 4 THEN '707' 
359654                 WHEN 5 THEN '707' 
359655                 WHEN 6 THEN '707' 
359656                 WHEN 7 THEN '707' 
359657                 WHEN 8 THEN '707' 
359658                 WHEN 9 THEN '707' 
359659                 WHEN 10 THEN '707' 
359660                 WHEN 11 THEN '707' 
359661                 WHEN 12 THEN '707' 
359662                 WHEN 13 THEN '707' 
359663                 WHEN 14 THEN '707' 
359664                 WHEN 15 THEN '707' 
359665                 WHEN 16 THEN '707' 
359666                 WHEN 17 THEN '707' 
359667                 WHEN 18 THEN '201' 
359668                 WHEN 19 THEN '707' 
359669                 WHEN 20 THEN '707' 
359670                 WHEN 21 THEN '201' 
359671                 WHEN 22 THEN '707' 
359672                 WHEN 23 THEN '707' 
359673                 WHEN 24 THEN '707' 
359674                 
359675                 ELSE null
359676               END                           source_application_id
359677             , 'S'             source_type_code
359678             , CASE r
359679                 WHEN 1 THEN 'TRANSACTION_ID' 
359680                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
359681                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
359682                 WHEN 4 THEN 'TRANSACTION_UOM' 
359683                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
359684                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
359685                 WHEN 7 THEN 'PLA_EXPENSE_ACCOUNT' 
359686                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
359687                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
359688                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
359689                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
359690                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
359691                 WHEN 13 THEN 'APPLIED_TO_APPL_ID' 
359692                 WHEN 14 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
359693                 WHEN 15 THEN 'APPLIED_TO_ENTITY_CODE' 
359694                 WHEN 16 THEN 'APPLIED_TO_PO_DOC_ID' 
359695                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
359696                 WHEN 18 THEN 'PO_BUDGET_ACCOUNT' 
359697                 WHEN 19 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
359698                 WHEN 20 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
359699                 WHEN 21 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
359700                 WHEN 22 THEN 'CST_ENCUM_UPG_OPTION' 
359701                 WHEN 23 THEN 'TXN_PO_DISTRIBUTION_ID' 
359702                 WHEN 24 THEN 'TRANSFER_TO_GL_INDICATOR' 
359703                 
359704                 ELSE null
359705               END                           source_code
359706             , CASE r
359707                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
359708                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
359709                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
359710                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
359711                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
359712                 WHEN 6 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
359713                 WHEN 7 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
359714                 WHEN 8 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
359715                 WHEN 9 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
359716                 WHEN 10 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
359717                 WHEN 11 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
359718                 WHEN 12 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
359719                 WHEN 13 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
359720                 WHEN 14 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
359721                 WHEN 15 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
359722                 WHEN 16 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
359723                 WHEN 17 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
359724                 WHEN 18 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
359725                 WHEN 19 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
359726                 WHEN 20 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
359727                 WHEN 21 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
359728                 WHEN 22 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
359729                 WHEN 23 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
359730                 WHEN 24 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
359731                 
359732                 ELSE null
359733               END                           source_value
359734             , CASE r
359735                 WHEN 17 THEN fvl85.meaning
359736                 WHEN 24 THEN fvl114.meaning
359737                 
359738                 ELSE null
359739               END               source_meaning
359740         FROM xla_events_gt     xet  
359741       , CST_XLA_INV_HEADERS_V  h1
359742       , CST_XLA_INV_REF_V  h3
359743       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
359744       , CST_XLA_INV_TXN_TYPES_REF_V  h5
359745       , CST_XLA_PLA_CATEGORY_REF_V  h6
359746       , PO_DISTS_REF_V  h7
359747       , PO_HEADERS_REF_V  h8
359748       , PSA_CST_XLA_UPG_V  h9
359749   , fnd_lookup_values    fvl85
359750   , fnd_lookup_values    fvl114
359751             ,(select rownum r from all_objects where rownum <= 24 and owner = p_apps_owner)
359752        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
359753          AND xet.event_type_code = C_EVENT_TYPE_CODE
359754             AND h1.event_id = xet.event_id
359755  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
359756 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
359757 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg AND h3.txn_po_header_id = h7.po_header_id  (+)  and h3.txn_po_distribution_id = h7.po_distribution_id (+)  AND h3.txn_po_header_id = h8.po_header_id (+)  AND h3.rcv_transaction_id = h9.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
359758   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
359759   AND fvl85.view_application_id(+) = 700
359760   AND fvl85.language(+)            = USERENV('LANG')
359761      AND fvl114.lookup_type(+)         = 'YES_NO'
359762   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
359763   AND fvl114.view_application_id(+) = 0
359764   AND fvl114.language(+)            = USERENV('LANG')
359765   
359766 )
359767 ;
359768 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
359769 
359770       trace
359771          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
359772          ,p_level    => C_LEVEL_STATEMENT
359773          ,p_module   => l_log_module);
359774 
359775 END IF;
359776 --
359777 
359778 
359779 
359780 --
359781 INSERT INTO xla_diag_sources --line1
359782 (
359783         event_id
359784       , ledger_id
359785       , sla_ledger_id
359786       , description_language
359787       , object_name
359788       , object_type_code
359789       , line_number
359790       , source_application_id
359791       , source_type_code
359792       , source_code
359793       , source_value
359794       , source_meaning
359795       , created_by
359796       , creation_date
359797       , last_update_date
359798       , last_updated_by
359799       , last_update_login
359800       , program_update_date
359801       , program_application_id
359802       , program_id
359803       , request_id
359804 )
359805 SELECT  event_id
359806       , p_target_ledger_id
359807       , p_sla_ledger_id
359808       , p_language
359809       , object_name
359810       , object_type_code
359811       , line_number
359812       , source_application_id
359813       , source_type_code
359814       , source_code
359815       , SUBSTR(source_value,1,1996)
359816       , SUBSTR(source_meaning,1,200)
359817       , xla_environment_pkg.g_Usr_Id
359818       , TRUNC(SYSDATE)
359819       , TRUNC(SYSDATE)
359820       , xla_environment_pkg.g_Usr_Id
359821       , xla_environment_pkg.g_Login_Id
359822       , TRUNC(SYSDATE)
359823       , xla_environment_pkg.g_Prog_Appl_Id
359824       , xla_environment_pkg.g_Prog_Id
359825       , xla_environment_pkg.g_Req_Id
359826   FROM (
359827        SELECT xet.event_id                  event_id
359828             , l2.line_number                 line_number
359829             , CASE r
359830                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
359831                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
359832                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
359833                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
359834                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
359835                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
359836                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
359837                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
359838                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
359839                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
359840                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
359841                 
359842                ELSE null
359843               END                           object_name
359844             , CASE r
359845                 WHEN 1 THEN 'LINE' 
359846                 WHEN 2 THEN 'LINE' 
359847                 WHEN 3 THEN 'LINE' 
359848                 WHEN 4 THEN 'LINE' 
359849                 WHEN 5 THEN 'LINE' 
359850                 WHEN 6 THEN 'LINE' 
359851                 WHEN 7 THEN 'LINE' 
359852                 WHEN 8 THEN 'LINE' 
359853                 WHEN 9 THEN 'LINE' 
359854                 WHEN 10 THEN 'LINE' 
359855                 WHEN 11 THEN 'LINE' 
359856                 
359857                 ELSE null
359858               END                           object_type_code
359859             , CASE r
359860                 WHEN 1 THEN '707' 
359861                 WHEN 2 THEN '707' 
359862                 WHEN 3 THEN '707' 
359863                 WHEN 4 THEN '707' 
359864                 WHEN 5 THEN '707' 
359865                 WHEN 6 THEN '707' 
359866                 WHEN 7 THEN '707' 
359867                 WHEN 8 THEN '707' 
359868                 WHEN 9 THEN '707' 
359869                 WHEN 10 THEN '707' 
359870                 WHEN 11 THEN '707' 
359871                 
359872                 ELSE null
359873               END                           source_application_id
359874             , 'S'             source_type_code
359875             , CASE r
359876                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
359877                 WHEN 2 THEN 'COST_ELEMENT_ID' 
359878                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
359879                 WHEN 4 THEN 'CURRENCY_CODE' 
359880                 WHEN 5 THEN 'ENTERED_AMOUNT' 
359881                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
359882                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
359883                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
359884                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
359885                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
359886                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
359887                 
359888                 ELSE null
359889               END                           source_code
359890             , CASE r
359891                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
359892                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
359893                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
359894                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
359895                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
359896                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
359897                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
359898                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
359899                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
359900                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
359901                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
359902                 
359903                 ELSE null
359904               END                           source_value
359905             , CASE r
359906                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
359907                           1009615
359908                          ,TO_CHAR(l2.COST_ELEMENT_ID)
359909                          ,'COST_ELEMENT_ID'
359910                          ,'S'
359911                          ,707)
359912                 
359913                 ELSE null
359914               END               source_meaning
359915          FROM  xla_events_gt     xet  
359916         , CST_XLA_INV_LINES_V  l2
359917             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
359918         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
359919           AND xet.event_type_code = C_EVENT_TYPE_CODE
359920             AND l2.event_id          = xet.event_id
359921 
359922 )
359923 ;
359924 --
359925 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
359926 
359927       trace
359928          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
359929          ,p_level    => C_LEVEL_STATEMENT
359930          ,p_module   => l_log_module);
359931 
359932 END IF;
359933 
359934 
359935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
359936       trace
359937          (p_msg      => 'END of insert_sources_579'
359938          ,p_level    => C_LEVEL_PROCEDURE
359939          ,p_module   => l_log_module);
359940 END IF;
359941 EXCEPTION
359942   WHEN xla_exceptions_pkg.application_exception THEN
359943       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
359944             trace
359945                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
359946                ,p_level    => C_LEVEL_EXCEPTION
359947                ,p_module   => l_log_module);
359948       END IF;
359949       RAISE;
359950   WHEN OTHERS THEN
359951       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
359952             trace
359953                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
359954                ,p_level    => C_LEVEL_EXCEPTION
359955                ,p_module   => l_log_module);
359956        END IF;
359957        xla_exceptions_pkg.raise_message
359958            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_579');
359959 END insert_sources_579;
359960 --
359961 
359962 ---------------------------------------
359963 --
359964 -- PRIVATE FUNCTION
359965 --         EventType_579
359966 --
359967 ----------------------------------------
359968 --
359969 FUNCTION EventType_579
359970        (p_application_id         IN NUMBER
359971        ,p_base_ledger_id         IN NUMBER
359972        ,p_target_ledger_id       IN NUMBER
359973        ,p_language               IN VARCHAR2
359974        ,p_currency_code          IN VARCHAR2
359975        ,p_sla_ledger_id          IN NUMBER
359976        ,p_pad_start_date         IN DATE
359977        ,p_pad_end_date           IN DATE
359978        ,p_primary_ledger_id      IN NUMBER)
359979 RETURN BOOLEAN IS
359980 --
359981 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_INV';
359982 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
359983 
359984 l_calculate_acctd_flag   VARCHAR2(1) :='N';
359985 l_calculate_g_l_flag     VARCHAR2(1) :='N';
359986 --
359987 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
359988 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
359989 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
359990 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
359991 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
359992 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
359993 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
359994 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
359995 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
359996 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
359997 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
359998 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
359999 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
360000 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
360001 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
360002 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
360003 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
360004 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
360005 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
360006 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
360007 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
360008 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
360009 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
360010 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
360011 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
360012 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
360013 
360014 l_event_id                             NUMBER;
360015 l_previous_event_id                    NUMBER;
360016 l_first_event_id                       NUMBER;
360017 l_last_event_id                        NUMBER;
360018 
360019 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
360020 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
360021 --
360022 --
360023 l_result                    BOOLEAN := TRUE;
360024 l_rows                      NUMBER  := 1000;
360025 l_event_type_name           VARCHAR2(80) := 'Logical PO Delivery into Inventory';
360026 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
360027 l_description               VARCHAR2(4000);
360028 l_transaction_reversal      NUMBER;
360029 l_ae_header_id              NUMBER;
360030 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
360031 l_log_module                VARCHAR2(240);
360032 --
360033 l_acct_reversal_source      VARCHAR2(30);
360034 l_trx_reversal_source       VARCHAR2(30);
360035 
360036 l_continue_with_lines       BOOLEAN := TRUE;
360037 --
360038 l_acc_rev_gl_date_source    DATE;                      -- 4262811
360039 --
360040 type t_array_event_id is table of number index by binary_integer;
360041 
360042 l_rec_array_event                    t_rec_array_event;
360043 l_null_rec_array_event               t_rec_array_event;
360044 l_array_ae_header_id                 xla_number_array_type;
360045 l_actual_flag                        VARCHAR2(1) := NULL;
360046 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
360047 l_balance_type_code                  VARCHAR2(1) :=NULL;
360048 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
360049 
360050 --
360051 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
360052 --
360053 
360054 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
360055 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
360056 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
360057 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
360058 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
360059 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360060 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360061 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360062 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360063 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360064 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360065 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360066 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
360067 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
360068 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
360069 TYPE t_array_source_83 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
360070 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
360071 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
360072 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
360073 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
360074 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
360075 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
360076 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
360077 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
360078 
360079 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
360080 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
360081 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
360082 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
360083 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
360084 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
360085 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
360086 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
360087 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
360088 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
360089 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
360090 
360091 l_array_source_1              t_array_source_1;
360092 l_array_source_2              t_array_source_2;
360093 l_array_source_3              t_array_source_3;
360094 l_array_source_4              t_array_source_4;
360095 l_array_source_5              t_array_source_5;
360096 l_array_source_22              t_array_source_22;
360097 l_array_source_24              t_array_source_24;
360098 l_array_source_41              t_array_source_41;
360099 l_array_source_42              t_array_source_42;
360100 l_array_source_43              t_array_source_43;
360101 l_array_source_44              t_array_source_44;
360102 l_array_source_45              t_array_source_45;
360103 l_array_source_79              t_array_source_79;
360104 l_array_source_80              t_array_source_80;
360105 l_array_source_81              t_array_source_81;
360106 l_array_source_83              t_array_source_83;
360107 l_array_source_85              t_array_source_85;
360108 l_array_source_85_meaning      t_array_lookup_meaning;
360109 l_array_source_86              t_array_source_86;
360110 l_array_source_87              t_array_source_87;
360111 l_array_source_89              t_array_source_89;
360112 l_array_source_96              t_array_source_96;
360113 l_array_source_100              t_array_source_100;
360114 l_array_source_101              t_array_source_101;
360115 l_array_source_114              t_array_source_114;
360116 l_array_source_114_meaning      t_array_lookup_meaning;
360117 
360118 l_array_source_11      t_array_source_11;
360119 l_array_source_15      t_array_source_15;
360120 l_array_source_84      t_array_source_84;
360121 l_array_source_88      t_array_source_88;
360122 l_array_source_91      t_array_source_91;
360123 l_array_source_92      t_array_source_92;
360124 l_array_source_93      t_array_source_93;
360125 l_array_source_94      t_array_source_94;
360126 l_array_source_95      t_array_source_95;
360127 l_array_source_97      t_array_source_97;
360128 l_array_source_108      t_array_source_108;
360129 
360130 --
360131 CURSOR header_cur
360132 IS
360133 SELECT /*+ leading(xet) cardinality(xet,1) */
360134 -- Event Type Code: LOG_PO_DEL_INV
360135 -- Event Class Code: PURCHASE_ORDER
360136     xet.entity_id
360137   , xet.legal_entity_id
360138   , xet.entity_code
360139   , xet.transaction_number
360140   , xet.event_id
360141   , xet.event_class_code
360142   , xet.event_type_code
360143   , xet.event_number
360144   , xet.event_date
360145   , xet.transaction_date
360146   , xet.reference_num_1
360147   , xet.reference_num_2
360148   , xet.reference_num_3
360149   , xet.reference_num_4
360150   , xet.reference_char_1
360151   , xet.reference_char_2
360152   , xet.reference_char_3
360153   , xet.reference_char_4
360154   , xet.reference_date_1
360155   , xet.reference_date_2
360156   , xet.reference_date_3
360157   , xet.reference_date_4
360158   , xet.event_created_by
360159   , xet.budgetary_control_flag 
360160   , h1.TRANSACTION_ID    source_1
360161   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
360162   , h3.TRANSACTION_QUANTITY    source_3
360163   , h3.TRANSACTION_UOM    source_4
360164   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
360165   , h6.PLA_BRIDGING_ACCOUNT    source_22
360166   , h6.PLA_EXPENSE_ACCOUNT    source_24
360167   , h6.PLA_MATERIAL_ACCOUNT    source_41
360168   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
360169   , h6.PLA_RESOURCE_ACCOUNT    source_43
360170   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
360171   , h6.PLA_OVERHEAD_ACCOUNT    source_45
360172   , h3.APPLIED_TO_APPL_ID    source_79
360173   , h3.APPLIED_TO_DIST_LINK_TYPE    source_80
360174   , h3.APPLIED_TO_ENTITY_CODE    source_81
360175   , h3.APPLIED_TO_PO_DOC_ID    source_83
360176   , h1.DISTRIBUTION_TYPE    source_85
360177   , fvl85.meaning   source_85_meaning
360178   , h7.PO_BUDGET_ACCOUNT    source_86
360179   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
360180   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
360181   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_96
360182   , h9.CST_ENCUM_UPG_OPTION    source_100
360183   , h3.TXN_PO_DISTRIBUTION_ID    source_101
360184   , h1.TRANSFER_TO_GL_INDICATOR    source_114
360185   , fvl114.meaning   source_114_meaning
360186   FROM xla_events_gt     xet 
360187   , CST_XLA_INV_HEADERS_V  h1
360188   , CST_XLA_INV_REF_V  h3
360189   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
360190   , CST_XLA_INV_TXN_TYPES_REF_V  h5
360191   , CST_XLA_PLA_CATEGORY_REF_V  h6
360192   , PO_DISTS_REF_V  h7
360193   , PO_HEADERS_REF_V  h8
360194   , PSA_CST_XLA_UPG_V  h9
360195   , fnd_lookup_values    fvl85
360196   , fnd_lookup_values    fvl114
360197  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
360198    and xet.event_type_code = C_EVENT_TYPE_CODE
360199    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
360200  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
360201 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
360202 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG AND h3.txn_po_header_id = h7.po_header_id  (+)  AND h3.txn_po_distribution_id = h7.po_distribution_id (+)  AND h3.txn_po_header_id = h8.po_header_id (+)  AND h3.rcv_transaction_id = h9.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
360203   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
360204   AND fvl85.view_application_id(+) = 700
360205   AND fvl85.language(+)            = USERENV('LANG')
360206      AND fvl114.lookup_type(+)         = 'YES_NO'
360207   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
360208   AND fvl114.view_application_id(+) = 0
360209   AND fvl114.language(+)            = USERENV('LANG')
360210   
360211  ORDER BY event_id
360212 ;
360213 
360214 
360215 --
360216 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
360217 IS
360218 SELECT /*+ leading(xet) cardinality(xet,1) */
360219 -- Event Type Code: LOG_PO_DEL_INV
360220 -- Event Class Code: PURCHASE_ORDER
360221     xet.entity_id
360222    ,xet.legal_entity_id
360223    ,xet.entity_code
360224    ,xet.transaction_number
360225    ,xet.event_id
360226    ,xet.event_class_code
360227    ,xet.event_type_code
360228    ,xet.event_number
360229    ,xet.event_date
360230    ,xet.transaction_date
360231    ,xet.reference_num_1
360232    ,xet.reference_num_2
360233    ,xet.reference_num_3
360234    ,xet.reference_num_4
360235    ,xet.reference_char_1
360236    ,xet.reference_char_2
360237    ,xet.reference_char_3
360238    ,xet.reference_char_4
360239    ,xet.reference_date_1
360240    ,xet.reference_date_2
360241    ,xet.reference_date_3
360242    ,xet.reference_date_4
360243    ,xet.event_created_by
360244    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
360245   , l2.CODE_COMBINATION_ID    source_11
360246   , l2.COST_ELEMENT_ID    source_15
360247   , l2.DISTRIBUTION_IDENTIFIER    source_84
360248   , l2.CURRENCY_CODE    source_88
360249   , l2.ENTERED_AMOUNT    source_91
360250   , l2.CURRENCY_CONVERSION_DATE    source_92
360251   , l2.CURRENCY_CONVERSION_RATE    source_93
360252   , l2.CURRENCY_CONVERSION_TYPE    source_94
360253   , l2.ACCOUNTED_AMOUNT    source_95
360254   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
360255   , l2.L_ORGANIZATION_CODE    source_108
360256   FROM xla_events_gt     xet 
360257   , CST_XLA_INV_LINES_V  l2
360258  WHERE xet.event_id between x_first_event_id and x_last_event_id
360259    and xet.event_date between p_pad_start_date and p_pad_end_date
360260    and xet.event_type_code = C_EVENT_TYPE_CODE
360261    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
360262 ;
360263 
360264 --
360265 BEGIN
360266 IF g_log_enabled THEN
360267    l_log_module := C_DEFAULT_MODULE||'.EventType_579';
360268 END IF;
360269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
360270    trace
360271       (p_msg      => 'BEGIN of EventType_579'
360272       ,p_level    => C_LEVEL_PROCEDURE
360273       ,p_module   => l_log_module);
360274 END IF;
360275 
360276 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
360277    trace
360278       (p_msg      => 'p_application_id = '||p_application_id||
360279                      ' - p_base_ledger_id = '||p_base_ledger_id||
360280                      ' - p_target_ledger_id  = '||p_target_ledger_id||
360281                      ' - p_language = '||p_language||
360282                      ' - p_currency_code = '||p_currency_code||
360283                      ' - p_sla_ledger_id = '||p_sla_ledger_id
360284       ,p_level    => C_LEVEL_STATEMENT
360285       ,p_module   => l_log_module);
360286 END IF;
360287 --
360288 -- initialze arrays
360289 --
360290 g_array_event.DELETE;
360291 l_rec_array_event := l_null_rec_array_event;
360292 --
360293 --------------------------------------
360294 -- 4262811 Initialze MPA Line Number
360295 --------------------------------------
360296 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
360297 
360298 --
360299 
360300 --
360301 OPEN header_cur;
360302 --
360303 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
360304    trace
360305    (p_msg      => 'SQL - FETCH header_cur'
360306    ,p_level    => C_LEVEL_STATEMENT
360307    ,p_module   => l_log_module);
360308 END IF;
360309 --
360310 LOOP
360311 FETCH header_cur BULK COLLECT INTO
360312         l_array_entity_id
360313       , l_array_legal_entity_id
360314       , l_array_entity_code
360315       , l_array_transaction_num
360316       , l_array_event_id
360317       , l_array_class_code
360318       , l_array_event_type
360319       , l_array_event_number
360320       , l_array_event_date
360321       , l_array_transaction_date
360322       , l_array_reference_num_1
360323       , l_array_reference_num_2
360324       , l_array_reference_num_3
360325       , l_array_reference_num_4
360326       , l_array_reference_char_1
360327       , l_array_reference_char_2
360328       , l_array_reference_char_3
360329       , l_array_reference_char_4
360330       , l_array_reference_date_1
360331       , l_array_reference_date_2
360332       , l_array_reference_date_3
360333       , l_array_reference_date_4
360334       , l_array_event_created_by
360335       , l_array_budgetary_control_flag 
360336       , l_array_source_1
360337       , l_array_source_2
360338       , l_array_source_3
360339       , l_array_source_4
360340       , l_array_source_5
360341       , l_array_source_22
360342       , l_array_source_24
360343       , l_array_source_41
360344       , l_array_source_42
360345       , l_array_source_43
360346       , l_array_source_44
360347       , l_array_source_45
360348       , l_array_source_79
360349       , l_array_source_80
360350       , l_array_source_81
360351       , l_array_source_83
360352       , l_array_source_85
360353       , l_array_source_85_meaning
360354       , l_array_source_86
360355       , l_array_source_87
360356       , l_array_source_89
360357       , l_array_source_96
360358       , l_array_source_100
360359       , l_array_source_101
360360       , l_array_source_114
360361       , l_array_source_114_meaning
360362       LIMIT l_rows;
360363 --
360364 IF (C_LEVEL_EVENT >= g_log_level) THEN
360365    trace
360366    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
360367    ,p_level    => C_LEVEL_EVENT
360368    ,p_module   => l_log_module);
360369 END IF;
360370 --
360371 EXIT WHEN l_array_entity_id.COUNT = 0;
360372 
360373 -- initialize arrays
360374 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
360375 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
360376 
360377 --
360378 -- Bug 4458708
360379 --
360380 XLA_AE_LINES_PKG.g_LineNumber := 0;
360381 
360382 
360383 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
360384 g_last_hdr_idx := l_array_event_id.LAST;
360385 --
360386 -- loop for the headers. Each iteration is for each header extract row
360387 -- fetched in header cursor
360388 --
360389 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
360390 
360391 --
360392 -- set event info as cache for other routines to refer event attributes
360393 --
360394 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
360395    (p_application_id           => p_application_id
360396    ,p_primary_ledger_id        => p_primary_ledger_id
360397    ,p_base_ledger_id           => p_base_ledger_id
360398    ,p_target_ledger_id         => p_target_ledger_id
360399    ,p_entity_id                => l_array_entity_id(hdr_idx)
360400    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
360401    ,p_entity_code              => l_array_entity_code(hdr_idx)
360402    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
360403    ,p_event_id                 => l_array_event_id(hdr_idx)
360404    ,p_event_class_code         => l_array_class_code(hdr_idx)
360405    ,p_event_type_code          => l_array_event_type(hdr_idx)
360406    ,p_event_number             => l_array_event_number(hdr_idx)
360407    ,p_event_date               => l_array_event_date(hdr_idx)
360408    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
360409    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
360410    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
360411    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
360412    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
360413    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
360414    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
360415    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
360416    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
360417    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
360418    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
360419    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
360420    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
360421    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
360422    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
360423 
360424 --
360425 -- set the status of entry to C_VALID (0)
360426 --
360427 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
360428 
360429 --
360430 -- initialize a row for ae header
360431 --
360432 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
360433 
360434 l_event_id := l_array_event_id(hdr_idx);
360435 
360436 --
360437 -- storing the hdr_idx for event. May be used by line cursor.
360438 --
360439 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
360440 
360441 --
360442 -- store sources from header extract. This can be improved to
360443 -- store only those sources from header extract that may be used in lines
360444 --
360445 
360446 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
360447 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
360448 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
360449 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
360450 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
360451 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
360452 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
360453 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
360454 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
360455 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
360456 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
360457 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
360458 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
360459 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
360460 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
360461 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
360462 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
360463 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
360464 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
360465 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
360466 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
360467 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
360468 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
360469 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
360470 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
360471 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
360472 
360473 --
360474 -- initilaize the status of ae headers for diffrent balance types
360475 -- the status is initialised to C_NOT_CREATED (2)
360476 --
360477 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
360478 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
360479 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
360480 
360481 --
360482 -- call api to validate and store accounting attributes for header
360483 --
360484 
360485 ------------------------------------------------------------
360486 -- Accrual Reversal : to get date for Standard Source (NONE)
360487 ------------------------------------------------------------
360488 l_acc_rev_gl_date_source := NULL;
360489 
360490      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
360491       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
360492      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
360493       l_rec_acct_attrs.array_date_value(2) := 
360494 xla_ae_sources_pkg.GetSystemSourceDate(
360495    p_source_code           => 'XLA_REFERENCE_DATE_1'
360496  , p_source_type_code      => 'Y'
360497  , p_source_application_id =>  602
360498 );
360499      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
360500       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
360501 
360502 
360503 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
360504 
360505 XLA_AE_HEADER_PKG.SetJeCategoryName;
360506 
360507 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
360508 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
360509 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
360510 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
360511 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
360512 
360513 
360514 --
360515 xla_ae_header_pkg.SetHdrDescription(
360516    p_description => Description_1 (
360517    p_application_id => p_application_id 
360518  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
360519  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
360520  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
360521  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
360522  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
360523    )
360524 );
360525 --
360526 
360527 -- No header level analytical criteria
360528 
360529 --
360530 --accounting attribute enhancement, bug 3612931
360531 --
360532 l_trx_reversal_source := SUBSTR(NULL, 1,30);
360533 
360534 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
360535    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
360536 
360537    xla_accounting_err_pkg.build_message
360538       (p_appli_s_name            => 'XLA'
360539       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
360540       ,p_token_1                 => 'ACCT_ATTR_NAME'
360541       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
360542       ,p_token_2                 => 'PRODUCT_NAME'
360543       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
360544       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
360545       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
360546       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
360547 
360548 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
360549    --
360550    -- following sets the accounting attributes needed to reverse
360551    -- accounting for a distributeion
360552    --
360553    xla_ae_lines_pkg.SetTrxReversalAttrs
360554       (p_event_id              => l_event_id
360555       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
360556       ,p_trx_reversal_source   => l_trx_reversal_source);
360557 
360558 END IF;
360559 
360560 
360561 ----------------------------------------------------------------
360562 -- 4262811 -  update the header statuses to invalid in need be
360563 ----------------------------------------------------------------
360564 --
360565 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
360566 
360567 
360568   -----------------------------------------------
360569   -- No accrual reversal for the event class/type
360570   -----------------------------------------------
360571 ----------------------------------------------------------------
360572 
360573 --
360574 -- this ends the header loop iteration for one bulk fetch
360575 --
360576 END LOOP;
360577 
360578 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
360579 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
360580 
360581 --
360582 -- insert dummy rows into lines gt table that were created due to
360583 -- transaction reversals
360584 --
360585 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
360586    l_result := XLA_AE_LINES_PKG.InsertLines;
360587 END IF;
360588 
360589 --
360590 -- reset the temp_line_num for each set of events fetched from header
360591 -- cursor rather than doing it for each new event in line cursor
360592 -- Bug 3939231
360593 --
360594 xla_ae_lines_pkg.g_temp_line_num := 0;
360595 
360596 
360597 
360598 --
360599 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
360600 --
360601 --
360602 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
360603 
360604       trace
360605          (p_msg      => 'SQL - FETCH line_cur'
360606          ,p_level    => C_LEVEL_STATEMENT
360607          ,p_module   => l_log_module);
360608 
360609 END IF;
360610 --
360611 --
360612 LOOP
360613   --
360614   FETCH line_cur BULK COLLECT INTO
360615         l_array_entity_id
360616       , l_array_legal_entity_id
360617       , l_array_entity_code
360618       , l_array_transaction_num
360619       , l_array_event_id
360620       , l_array_class_code
360621       , l_array_event_type
360622       , l_array_event_number
360623       , l_array_event_date
360624       , l_array_transaction_date
360625       , l_array_reference_num_1
360626       , l_array_reference_num_2
360627       , l_array_reference_num_3
360628       , l_array_reference_num_4
360629       , l_array_reference_char_1
360630       , l_array_reference_char_2
360631       , l_array_reference_char_3
360632       , l_array_reference_char_4
360633       , l_array_reference_date_1
360634       , l_array_reference_date_2
360635       , l_array_reference_date_3
360636       , l_array_reference_date_4
360637       , l_array_event_created_by
360638       , l_array_budgetary_control_flag
360639       , l_array_extract_line_num 
360640       , l_array_source_11
360641       , l_array_source_15
360642       , l_array_source_84
360643       , l_array_source_88
360644       , l_array_source_91
360645       , l_array_source_92
360646       , l_array_source_93
360647       , l_array_source_94
360648       , l_array_source_95
360649       , l_array_source_97
360650       , l_array_source_108
360651       LIMIT l_rows;
360652 
360653   --
360654   IF (C_LEVEL_EVENT >= g_log_level) THEN
360655             trace
360656                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
360657                ,p_level    => C_LEVEL_EVENT
360658                ,p_module   => l_log_module);
360659   END IF;
360660   --
360661   EXIT WHEN l_array_entity_id.count = 0;
360662 
360663   XLA_AE_LINES_PKG.g_rec_lines := null;
360664 
360665 --
360666 -- Bug 4458708
360667 --
360668 XLA_AE_LINES_PKG.g_LineNumber := 0;
360669 --
360670 --
360671 
360672 FOR Idx IN 1..l_array_event_id.count LOOP
360673    --
360674    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
360675    --
360676    l_event_id := l_array_event_id(idx);  -- 5648433
360677 
360678    --
360679    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
360680    --
360681 
360682    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
360683              (g_array_event(l_event_id).array_value_num('header_index'))
360684          ,'N'
360685          ) <> 'Y'
360686    THEN
360687       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
360688          trace
360689             (p_msg      => 'Trancaction revesal option is not Y '
360690             ,p_level    => C_LEVEL_STATEMENT
360691             ,p_module   => l_log_module);
360692       END IF;
360693 
360694 --
360695 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
360696 --
360697 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
360698 --
360699 -- set event info as cache for other routines to refer event attributes
360700 --
360701 
360702 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
360703    l_previous_event_id := l_event_id;
360704 
360705    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
360706       (p_application_id           => p_application_id
360707       ,p_primary_ledger_id        => p_primary_ledger_id
360708       ,p_base_ledger_id           => p_base_ledger_id
360709       ,p_target_ledger_id         => p_target_ledger_id
360710       ,p_entity_id                => l_array_entity_id(Idx)
360711       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
360712       ,p_entity_code              => l_array_entity_code(Idx)
360713       ,p_transaction_num          => l_array_transaction_num(Idx)
360714       ,p_event_id                 => l_array_event_id(Idx)
360715       ,p_event_class_code         => l_array_class_code(Idx)
360716       ,p_event_type_code          => l_array_event_type(Idx)
360717       ,p_event_number             => l_array_event_number(Idx)
360718       ,p_event_date               => l_array_event_date(Idx)
360719       ,p_transaction_date         => l_array_transaction_date(Idx)
360720       ,p_reference_num_1          => l_array_reference_num_1(Idx)
360721       ,p_reference_num_2          => l_array_reference_num_2(Idx)
360722       ,p_reference_num_3          => l_array_reference_num_3(Idx)
360723       ,p_reference_num_4          => l_array_reference_num_4(Idx)
360724       ,p_reference_char_1         => l_array_reference_char_1(Idx)
360725       ,p_reference_char_2         => l_array_reference_char_2(Idx)
360726       ,p_reference_char_3         => l_array_reference_char_3(Idx)
360727       ,p_reference_char_4         => l_array_reference_char_4(Idx)
360728       ,p_reference_date_1         => l_array_reference_date_1(Idx)
360729       ,p_reference_date_2         => l_array_reference_date_2(Idx)
360730       ,p_reference_date_3         => l_array_reference_date_3(Idx)
360731       ,p_reference_date_4         => l_array_reference_date_4(Idx)
360732       ,p_event_created_by         => l_array_event_created_by(Idx)
360733       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
360734        --
360735 END IF;
360736 
360737 
360738 
360739 --
360740 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
360741 
360742 l_acct_reversal_source := SUBSTR(NULL, 1,30);
360743 
360744 IF l_continue_with_lines THEN
360745    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
360746       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
360747 
360748       xla_accounting_err_pkg.build_message
360749          (p_appli_s_name            => 'XLA'
360750          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
360751          ,p_token_1                 => 'LINE_NUMBER'
360752          ,p_value_1                 => l_array_extract_line_num(Idx)
360753          ,p_token_2                 => 'PRODUCT_NAME'
360754          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
360755          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
360756          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
360757          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
360758 
360759    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
360760       --
360761       -- following sets the accounting attributes needed to reverse
360762       -- accounting for a distributeion
360763       --
360764 
360765       --
360766       -- 5217187
360767       --
360768       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
360769       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
360770                                        g_array_event(l_event_id).array_value_num('header_index'));
360771       --
360772       --
360773 
360774       -- No reversal code generated
360775 
360776       xla_ae_lines_pkg.SetAcctReversalAttrs
360777          (p_event_id             => l_event_id
360778          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
360779          ,p_calculate_acctd_flag => l_calculate_acctd_flag
360780          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
360781    END IF;
360782 
360783    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
360784        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
360785 
360786 --
360787 AcctLineType_48 (
360788  p_application_id  => p_application_id
360789  ,p_event_id     => l_event_id
360790  ,p_calculate_acctd_flag => l_calculate_acctd_flag
360791  ,p_calculate_g_l_flag => l_calculate_g_l_flag
360792  ,p_actual_flag => l_actual_flag
360793  ,p_balance_type_code => l_balance_type_code
360794  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
360795  
360796  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
360797  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
360798  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
360799  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
360800  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
360801  , p_source_11 => l_array_source_11(Idx)
360802  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
360803  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
360804  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
360805  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
360806  , p_source_84 => l_array_source_84(Idx)
360807  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
360808  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
360809  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
360810  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
360811  , p_source_88 => l_array_source_88(Idx)
360812  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
360813  , p_source_91 => l_array_source_91(Idx)
360814  , p_source_92 => l_array_source_92(Idx)
360815  , p_source_93 => l_array_source_93(Idx)
360816  , p_source_94 => l_array_source_94(Idx)
360817  , p_source_95 => l_array_source_95(Idx)
360818  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
360819  , p_source_97 => l_array_source_97(Idx)
360820  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
360821  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
360822  );
360823 If(l_balance_type_code = 'A') THEN
360824   l_actual_gain_loss_ref := l_gain_or_loss_ref;
360825 END IF;
360826 
360827 --
360828 
360829 
360830 --
360831 AcctLineType_107 (
360832  p_application_id  => p_application_id
360833  ,p_event_id     => l_event_id
360834  ,p_calculate_acctd_flag => l_calculate_acctd_flag
360835  ,p_calculate_g_l_flag => l_calculate_g_l_flag
360836  ,p_actual_flag => l_actual_flag
360837  ,p_balance_type_code => l_balance_type_code
360838  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
360839  
360840  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
360841  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
360842  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
360843  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
360844  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
360845  , p_source_11 => l_array_source_11(Idx)
360846  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
360847  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
360848  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
360849  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
360850  , p_source_84 => l_array_source_84(Idx)
360851  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
360852  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
360853  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
360854  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
360855  , p_source_88 => l_array_source_88(Idx)
360856  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
360857  , p_source_91 => l_array_source_91(Idx)
360858  , p_source_92 => l_array_source_92(Idx)
360859  , p_source_93 => l_array_source_93(Idx)
360860  , p_source_94 => l_array_source_94(Idx)
360861  , p_source_95 => l_array_source_95(Idx)
360862  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
360863  , p_source_97 => l_array_source_97(Idx)
360864  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
360865  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
360866  );
360867 If(l_balance_type_code = 'A') THEN
360868   l_actual_gain_loss_ref := l_gain_or_loss_ref;
360869 END IF;
360870 
360871 --
360872 
360873 
360874 --
360875 AcctLineType_256 (
360876  p_application_id  => p_application_id
360877  ,p_event_id     => l_event_id
360878  ,p_calculate_acctd_flag => l_calculate_acctd_flag
360879  ,p_calculate_g_l_flag => l_calculate_g_l_flag
360880  ,p_actual_flag => l_actual_flag
360881  ,p_balance_type_code => l_balance_type_code
360882  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
360883  
360884  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
360885  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
360886  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
360887  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
360888  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
360889  , p_source_15 => l_array_source_15(Idx)
360890  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
360891  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
360892  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
360893  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
360894  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
360895  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
360896  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
360897  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
360898  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
360899  , p_source_84 => l_array_source_84(Idx)
360900  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
360901  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
360902  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
360903  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
360904  , p_source_88 => l_array_source_88(Idx)
360905  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
360906  , p_source_91 => l_array_source_91(Idx)
360907  , p_source_92 => l_array_source_92(Idx)
360908  , p_source_93 => l_array_source_93(Idx)
360909  , p_source_94 => l_array_source_94(Idx)
360910  , p_source_95 => l_array_source_95(Idx)
360911  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
360912  , p_source_97 => l_array_source_97(Idx)
360913  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
360914  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
360915  , p_source_108 => l_array_source_108(Idx)
360916  );
360917 If(l_balance_type_code = 'A') THEN
360918   l_actual_gain_loss_ref := l_gain_or_loss_ref;
360919 END IF;
360920 
360921 --
360922 
360923 
360924 --
360925 AcctLineType_300 (
360926  p_application_id  => p_application_id
360927  ,p_event_id     => l_event_id
360928  ,p_calculate_acctd_flag => l_calculate_acctd_flag
360929  ,p_calculate_g_l_flag => l_calculate_g_l_flag
360930  ,p_actual_flag => l_actual_flag
360931  ,p_balance_type_code => l_balance_type_code
360932  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
360933  
360934  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
360935  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
360936  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
360937  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
360938  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
360939  , p_source_11 => l_array_source_11(Idx)
360940  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
360941  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
360942  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
360943  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
360944  , p_source_84 => l_array_source_84(Idx)
360945  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
360946  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
360947  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
360948  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
360949  , p_source_88 => l_array_source_88(Idx)
360950  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
360951  , p_source_91 => l_array_source_91(Idx)
360952  , p_source_92 => l_array_source_92(Idx)
360953  , p_source_93 => l_array_source_93(Idx)
360954  , p_source_94 => l_array_source_94(Idx)
360955  , p_source_95 => l_array_source_95(Idx)
360956  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
360957  , p_source_97 => l_array_source_97(Idx)
360958  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
360959  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
360960  );
360961 If(l_balance_type_code = 'A') THEN
360962   l_actual_gain_loss_ref := l_gain_or_loss_ref;
360963 END IF;
360964 
360965 --
360966 
360967 
360968 --
360969 AcctLineType_350 (
360970  p_application_id  => p_application_id
360971  ,p_event_id     => l_event_id
360972  ,p_calculate_acctd_flag => l_calculate_acctd_flag
360973  ,p_calculate_g_l_flag => l_calculate_g_l_flag
360974  ,p_actual_flag => l_actual_flag
360975  ,p_balance_type_code => l_balance_type_code
360976  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
360977  
360978  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
360979  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
360980  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
360981  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
360982  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
360983  , p_source_11 => l_array_source_11(Idx)
360984  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
360985  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
360986  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
360987  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
360988  , p_source_84 => l_array_source_84(Idx)
360989  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
360990  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
360991  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
360992  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
360993  , p_source_88 => l_array_source_88(Idx)
360994  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
360995  , p_source_91 => l_array_source_91(Idx)
360996  , p_source_92 => l_array_source_92(Idx)
360997  , p_source_93 => l_array_source_93(Idx)
360998  , p_source_94 => l_array_source_94(Idx)
360999  , p_source_95 => l_array_source_95(Idx)
361000  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
361001  , p_source_97 => l_array_source_97(Idx)
361002  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
361003  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
361004  );
361005 If(l_balance_type_code = 'A') THEN
361006   l_actual_gain_loss_ref := l_gain_or_loss_ref;
361007 END IF;
361008 
361009 --
361010 
361011 
361012 --
361013 AcctLineType_421 (
361014  p_application_id  => p_application_id
361015  ,p_event_id     => l_event_id
361016  ,p_calculate_acctd_flag => l_calculate_acctd_flag
361017  ,p_calculate_g_l_flag => l_calculate_g_l_flag
361018  ,p_actual_flag => l_actual_flag
361019  ,p_balance_type_code => l_balance_type_code
361020  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
361021  
361022  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
361023  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
361024  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
361025  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
361026  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
361027  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
361028  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
361029  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
361030  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
361031  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
361032  , p_source_84 => l_array_source_84(Idx)
361033  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
361034  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
361035  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
361036  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
361037  , p_source_88 => l_array_source_88(Idx)
361038  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
361039  , p_source_91 => l_array_source_91(Idx)
361040  , p_source_92 => l_array_source_92(Idx)
361041  , p_source_93 => l_array_source_93(Idx)
361042  , p_source_94 => l_array_source_94(Idx)
361043  , p_source_95 => l_array_source_95(Idx)
361044  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
361045  , p_source_97 => l_array_source_97(Idx)
361046  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
361047  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
361048  );
361049 If(l_balance_type_code = 'A') THEN
361050   l_actual_gain_loss_ref := l_gain_or_loss_ref;
361051 END IF;
361052 
361053 --
361054 
361055 
361056 --
361057 AcctLineType_442 (
361058  p_application_id  => p_application_id
361059  ,p_event_id     => l_event_id
361060  ,p_calculate_acctd_flag => l_calculate_acctd_flag
361061  ,p_calculate_g_l_flag => l_calculate_g_l_flag
361062  ,p_actual_flag => l_actual_flag
361063  ,p_balance_type_code => l_balance_type_code
361064  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
361065  
361066  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
361067  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
361068  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
361069  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
361070  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
361071  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
361072  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
361073  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
361074  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
361075  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
361076  , p_source_84 => l_array_source_84(Idx)
361077  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
361078  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
361079  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
361080  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
361081  , p_source_88 => l_array_source_88(Idx)
361082  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
361083  , p_source_91 => l_array_source_91(Idx)
361084  , p_source_92 => l_array_source_92(Idx)
361085  , p_source_93 => l_array_source_93(Idx)
361086  , p_source_94 => l_array_source_94(Idx)
361087  , p_source_95 => l_array_source_95(Idx)
361088  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
361089  , p_source_97 => l_array_source_97(Idx)
361090  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
361091  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
361092  );
361093 If(l_balance_type_code = 'A') THEN
361094   l_actual_gain_loss_ref := l_gain_or_loss_ref;
361095 END IF;
361096 
361097 --
361098 
361099 
361100 --
361101 AcctLineType_476 (
361102  p_application_id  => p_application_id
361103  ,p_event_id     => l_event_id
361104  ,p_calculate_acctd_flag => l_calculate_acctd_flag
361105  ,p_calculate_g_l_flag => l_calculate_g_l_flag
361106  ,p_actual_flag => l_actual_flag
361107  ,p_balance_type_code => l_balance_type_code
361108  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
361109  
361110  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
361111  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
361112  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
361113  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
361114  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
361115  , p_source_11 => l_array_source_11(Idx)
361116  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
361117  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
361118  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
361119  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
361120  , p_source_84 => l_array_source_84(Idx)
361121  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
361122  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
361123  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
361124  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
361125  , p_source_88 => l_array_source_88(Idx)
361126  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
361127  , p_source_91 => l_array_source_91(Idx)
361128  , p_source_92 => l_array_source_92(Idx)
361129  , p_source_93 => l_array_source_93(Idx)
361130  , p_source_94 => l_array_source_94(Idx)
361131  , p_source_95 => l_array_source_95(Idx)
361132  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
361133  , p_source_97 => l_array_source_97(Idx)
361134  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
361135  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
361136  );
361137 If(l_balance_type_code = 'A') THEN
361138   l_actual_gain_loss_ref := l_gain_or_loss_ref;
361139 END IF;
361140 
361141 --
361142 
361143 
361144 --
361145 AcctLineType_507 (
361146  p_application_id  => p_application_id
361147  ,p_event_id     => l_event_id
361148  ,p_calculate_acctd_flag => l_calculate_acctd_flag
361149  ,p_calculate_g_l_flag => l_calculate_g_l_flag
361150  ,p_actual_flag => l_actual_flag
361151  ,p_balance_type_code => l_balance_type_code
361152  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
361153  
361154  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
361155  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
361156  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
361157  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
361158  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
361159  , p_source_11 => l_array_source_11(Idx)
361160  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
361161  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
361162  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
361163  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
361164  , p_source_84 => l_array_source_84(Idx)
361165  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
361166  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
361167  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
361168  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
361169  , p_source_88 => l_array_source_88(Idx)
361170  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
361171  , p_source_91 => l_array_source_91(Idx)
361172  , p_source_92 => l_array_source_92(Idx)
361173  , p_source_93 => l_array_source_93(Idx)
361174  , p_source_94 => l_array_source_94(Idx)
361175  , p_source_95 => l_array_source_95(Idx)
361176  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
361177  , p_source_97 => l_array_source_97(Idx)
361178  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
361179  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
361180  );
361181 If(l_balance_type_code = 'A') THEN
361182   l_actual_gain_loss_ref := l_gain_or_loss_ref;
361183 END IF;
361184 
361185 --
361186 
361187 
361188 --
361189 AcctLineType_519 (
361190  p_application_id  => p_application_id
361191  ,p_event_id     => l_event_id
361192  ,p_calculate_acctd_flag => l_calculate_acctd_flag
361193  ,p_calculate_g_l_flag => l_calculate_g_l_flag
361194  ,p_actual_flag => l_actual_flag
361195  ,p_balance_type_code => l_balance_type_code
361196  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
361197  
361198  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
361199  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
361200  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
361201  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
361202  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
361203  , p_source_11 => l_array_source_11(Idx)
361204  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
361205  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
361206  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
361207  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
361208  , p_source_84 => l_array_source_84(Idx)
361209  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
361210  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
361211  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
361212  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
361213  , p_source_88 => l_array_source_88(Idx)
361214  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
361215  , p_source_91 => l_array_source_91(Idx)
361216  , p_source_92 => l_array_source_92(Idx)
361217  , p_source_93 => l_array_source_93(Idx)
361218  , p_source_94 => l_array_source_94(Idx)
361219  , p_source_95 => l_array_source_95(Idx)
361220  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
361221  , p_source_97 => l_array_source_97(Idx)
361222  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
361223  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
361224  );
361225 If(l_balance_type_code = 'A') THEN
361226   l_actual_gain_loss_ref := l_gain_or_loss_ref;
361227 END IF;
361228 
361229 --
361230 
361231       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
361232       -- or secondary ledger that has different currency with primary
361233       -- or alc that is calculated by sla
361234       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
361235             (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'))
361236 
361237 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
361238 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
361239           AND (l_actual_flag = 'A')) THEN
361240         XLA_AE_LINES_PKG.CreateGainOrLossLines(
361241           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
361242          ,p_application_id   => p_application_id
361243          ,p_amb_context_code => 'DEFAULT'
361244          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
361245          ,p_event_class_code => C_EVENT_CLASS_CODE
361246          ,p_event_type_code  => C_EVENT_TYPE_CODE
361247          
361248          ,p_gain_ccid        => -1
361249          ,p_loss_ccid        => -1
361250 
361251          ,p_actual_flag      => l_actual_flag
361252          ,p_enc_flag         => null
361253          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
361254          ,p_enc_g_l_ref      => null
361255          );
361256       END IF;
361257    END IF;
361258 END IF;
361259 
361260    ELSE
361261       --
361262       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
361263       --
361264       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
361265          trace
361266             (p_msg      => 'Trancaction revesal option is Y'
361267             ,p_level    => C_LEVEL_STATEMENT
361268             ,p_module   => l_log_module);
361269       END IF;
361270    END IF;
361271 
361272 END LOOP;
361273 l_result := XLA_AE_LINES_PKG.InsertLines ;
361274 end loop;
361275 close line_cur;
361276 
361277 
361278 --
361279 -- insert headers into xla_ae_headers_gt table
361280 --
361281 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
361282 
361283 -- insert into errors table here.
361284 
361285 END LOOP;
361286 
361287 --
361288 -- 4865292
361289 --
361290 -- Compare g_hdr_extract_count with event count in
361291 -- CreateHeadersAndLines.
361292 --
361293 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
361294 
361295 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
361296    trace (p_msg     => '# rows extracted from header extract objects '
361297                     || ' (running total): '
361298                     || g_hdr_extract_count
361299          ,p_level   => C_LEVEL_STATEMENT
361300          ,p_module  => l_log_module);
361301 END IF;
361302 
361303 CLOSE header_cur;
361304 --
361305 
361306 --
361307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
361308    trace
361309       (p_msg      => 'END of EventType_579'
361310       ,p_level    => C_LEVEL_PROCEDURE
361311       ,p_module   => l_log_module);
361312 END IF;
361313 --
361314 RETURN l_result;
361315 EXCEPTION
361316 WHEN xla_exceptions_pkg.application_exception THEN
361317    
361318 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
361319 
361320    
361321 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
361322 
361323    RAISE;
361324 
361325 WHEN NO_DATA_FOUND THEN
361326 
361327 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
361328 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
361329 
361330 FOR header_record IN header_cur
361331 LOOP
361332     l_array_header_events(header_record.event_id) := header_record.event_id;
361333 END LOOP;
361334 
361335 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
361336 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
361337 
361338 fnd_file.put_line(fnd_file.LOG, '                    ');
361339 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
361340 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
361341 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
361342 
361343 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
361344 LOOP
361345 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
361346 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
361347         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
361348 	END IF;
361349 END LOOP;
361350 
361351 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
361352 fnd_file.put_line(fnd_file.LOG, '                    ');
361353 
361354 
361355 xla_exceptions_pkg.raise_message
361356       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_579');
361357 
361358 
361359 WHEN OTHERS THEN
361360    xla_exceptions_pkg.raise_message
361361       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_579');
361362 END EventType_579;
361363 --
361364 
361365 ---------------------------------------
361366 --
361367 -- PRIVATE PROCEDURE
361368 --         insert_sources_580
361369 --
361370 ----------------------------------------
361371 --
361372 PROCEDURE insert_sources_580(
361373                                 p_target_ledger_id       IN NUMBER
361374                               , p_language               IN VARCHAR2
361375                               , p_sla_ledger_id          IN NUMBER
361376                               , p_pad_start_date         IN DATE
361377                               , p_pad_end_date           IN DATE
361378                          )
361379 IS
361380 
361381 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_RI_INV';
361382 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
361383 p_apps_owner                   VARCHAR2(30);
361384 l_log_module                   VARCHAR2(240);
361385 BEGIN
361386 IF g_log_enabled THEN
361387       l_log_module := C_DEFAULT_MODULE||'.insert_sources_580';
361388 END IF;
361389 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
361390 
361391       trace
361392          (p_msg      => 'BEGIN of insert_sources_580'
361393          ,p_level    => C_LEVEL_PROCEDURE
361394          ,p_module   => l_log_module);
361395 
361396 END IF;
361397 
361398 -- select APPS owner
361399 SELECT oracle_username
361400   INTO p_apps_owner
361401   FROM fnd_oracle_userid
361402  WHERE read_only_flag = 'U'
361403 ;
361404 
361405 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
361406       trace
361407          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
361408                         ' - p_language = '||p_language||
361409                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
361410                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
361411                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
361412                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
361413          ,p_level    => C_LEVEL_STATEMENT
361414          ,p_module   => l_log_module);
361415 END IF;
361416 
361417 
361418 --
361419 INSERT INTO xla_diag_sources --hdr1
361420 (
361421         event_id
361422       , ledger_id
361423       , sla_ledger_id
361424       , description_language
361425       , object_name
361426       , object_type_code
361427       , line_number
361428       , source_application_id
361429       , source_type_code
361430       , source_code
361431       , source_value
361432       , source_meaning
361433       , created_by
361434       , creation_date
361435       , last_update_date
361436       , last_updated_by
361437       , last_update_login
361438       , program_update_date
361439       , program_application_id
361440       , program_id
361441       , request_id
361442 )
361443 SELECT
361444         event_id
361445       , p_target_ledger_id
361446       , p_sla_ledger_id
361447       , p_language
361448       , object_name
361449       , object_type_code
361450       , line_number
361451       , source_application_id
361452       , source_type_code
361453       , source_code
361454       , SUBSTR(source_value ,1,1996)
361455       , SUBSTR(source_meaning,1,200)
361456       , xla_environment_pkg.g_Usr_Id
361457       , TRUNC(SYSDATE)
361458       , TRUNC(SYSDATE)
361459       , xla_environment_pkg.g_Usr_Id
361460       , xla_environment_pkg.g_Login_Id
361461       , TRUNC(SYSDATE)
361462       , xla_environment_pkg.g_Prog_Appl_Id
361463       , xla_environment_pkg.g_Prog_Id
361464       , xla_environment_pkg.g_Req_Id
361465   FROM (
361466        SELECT xet.event_id                  event_id
361467             , 0                             line_number
361468             , CASE r
361469                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
361470                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
361471                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
361472                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
361473                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
361474                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
361475                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
361476                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
361477                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
361478                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
361479                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
361480                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
361481                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
361482                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
361483                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
361484                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
361485                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
361486                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
361487                 WHEN 19 THEN 'PO_DISTS_REF_V' 
361488                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
361489                 WHEN 21 THEN 'CST_XLA_INV_REF_V' 
361490                 WHEN 22 THEN 'PO_HEADERS_REF_V' 
361491                 WHEN 23 THEN 'PSA_CST_XLA_UPG_V' 
361492                 WHEN 24 THEN 'CST_XLA_INV_REF_V' 
361493                 WHEN 25 THEN 'CST_XLA_INV_HEADERS_V' 
361494                 
361495                ELSE null
361496               END                           object_name
361497             , CASE r
361498                 WHEN 1 THEN 'HEADER' 
361499                 WHEN 2 THEN 'HEADER' 
361500                 WHEN 3 THEN 'HEADER' 
361501                 WHEN 4 THEN 'HEADER' 
361502                 WHEN 5 THEN 'HEADER' 
361503                 WHEN 6 THEN 'HEADER' 
361504                 WHEN 7 THEN 'HEADER' 
361505                 WHEN 8 THEN 'HEADER' 
361506                 WHEN 9 THEN 'HEADER' 
361507                 WHEN 10 THEN 'HEADER' 
361508                 WHEN 11 THEN 'HEADER' 
361509                 WHEN 12 THEN 'HEADER' 
361510                 WHEN 13 THEN 'HEADER' 
361511                 WHEN 14 THEN 'HEADER' 
361512                 WHEN 15 THEN 'HEADER' 
361513                 WHEN 16 THEN 'HEADER' 
361514                 WHEN 17 THEN 'HEADER' 
361515                 WHEN 18 THEN 'HEADER' 
361516                 WHEN 19 THEN 'HEADER' 
361517                 WHEN 20 THEN 'HEADER' 
361518                 WHEN 21 THEN 'HEADER' 
361519                 WHEN 22 THEN 'HEADER' 
361520                 WHEN 23 THEN 'HEADER' 
361521                 WHEN 24 THEN 'HEADER' 
361522                 WHEN 25 THEN 'HEADER' 
361523                 
361524                 ELSE null
361525               END                           object_type_code
361526             , CASE r
361527                 WHEN 1 THEN '707' 
361528                 WHEN 2 THEN '707' 
361529                 WHEN 3 THEN '707' 
361530                 WHEN 4 THEN '707' 
361531                 WHEN 5 THEN '707' 
361532                 WHEN 6 THEN '707' 
361533                 WHEN 7 THEN '707' 
361534                 WHEN 8 THEN '707' 
361535                 WHEN 9 THEN '707' 
361536                 WHEN 10 THEN '707' 
361537                 WHEN 11 THEN '707' 
361538                 WHEN 12 THEN '707' 
361539                 WHEN 13 THEN '707' 
361540                 WHEN 14 THEN '707' 
361541                 WHEN 15 THEN '707' 
361542                 WHEN 16 THEN '707' 
361543                 WHEN 17 THEN '707' 
361544                 WHEN 18 THEN '707' 
361545                 WHEN 19 THEN '201' 
361546                 WHEN 20 THEN '707' 
361547                 WHEN 21 THEN '707' 
361548                 WHEN 22 THEN '201' 
361549                 WHEN 23 THEN '707' 
361550                 WHEN 24 THEN '707' 
361551                 WHEN 25 THEN '707' 
361552                 
361553                 ELSE null
361554               END                           source_application_id
361555             , 'S'             source_type_code
361556             , CASE r
361557                 WHEN 1 THEN 'TRANSACTION_ID' 
361558                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
361559                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
361560                 WHEN 4 THEN 'TRANSACTION_UOM' 
361561                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
361562                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
361563                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
361564                 WHEN 8 THEN 'PLA_EXPENSE_ACCOUNT' 
361565                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
361566                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
361567                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
361568                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
361569                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
361570                 WHEN 14 THEN 'APPLIED_TO_APPL_ID' 
361571                 WHEN 15 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
361572                 WHEN 16 THEN 'APPLIED_TO_ENTITY_CODE' 
361573                 WHEN 17 THEN 'APPLIED_TO_PO_DOC_ID' 
361574                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
361575                 WHEN 19 THEN 'PO_BUDGET_ACCOUNT' 
361576                 WHEN 20 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
361577                 WHEN 21 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
361578                 WHEN 22 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
361579                 WHEN 23 THEN 'CST_ENCUM_UPG_OPTION' 
361580                 WHEN 24 THEN 'TXN_PO_DISTRIBUTION_ID' 
361581                 WHEN 25 THEN 'TRANSFER_TO_GL_INDICATOR' 
361582                 
361583                 ELSE null
361584               END                           source_code
361585             , CASE r
361586                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
361587                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
361588                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
361589                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
361590                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
361591                 WHEN 6 THEN TO_CHAR(h3.INV_TXN_DISTRIBUTION_ACCT)
361592                 WHEN 7 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
361593                 WHEN 8 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
361594                 WHEN 9 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
361595                 WHEN 10 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
361596                 WHEN 11 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
361597                 WHEN 12 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
361598                 WHEN 13 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
361599                 WHEN 14 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
361600                 WHEN 15 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
361601                 WHEN 16 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
361602                 WHEN 17 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
361603                 WHEN 18 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
361604                 WHEN 19 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
361605                 WHEN 20 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
361606                 WHEN 21 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
361607                 WHEN 22 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
361608                 WHEN 23 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
361609                 WHEN 24 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
361610                 WHEN 25 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
361611                 
361612                 ELSE null
361613               END                           source_value
361614             , CASE r
361615                 WHEN 18 THEN fvl85.meaning
361616                 WHEN 25 THEN fvl114.meaning
361617                 
361618                 ELSE null
361619               END               source_meaning
361620         FROM xla_events_gt     xet  
361621       , CST_XLA_INV_HEADERS_V  h1
361622       , CST_XLA_INV_REF_V  h3
361623       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
361624       , CST_XLA_INV_TXN_TYPES_REF_V  h5
361625       , CST_XLA_PLA_CATEGORY_REF_V  h6
361626       , PO_DISTS_REF_V  h7
361627       , PO_HEADERS_REF_V  h8
361628       , PSA_CST_XLA_UPG_V  h9
361629   , fnd_lookup_values    fvl85
361630   , fnd_lookup_values    fvl114
361631             ,(select rownum r from all_objects where rownum <= 25 and owner = p_apps_owner)
361632        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
361633          AND xet.event_type_code = C_EVENT_TYPE_CODE
361634             AND h1.event_id = xet.event_id
361635  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
361636 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
361637 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg AND h3.txn_po_header_id = h7.po_header_id  (+)  and h3.txn_po_distribution_id = h7.po_distribution_id (+)  AND h3.txn_po_header_id = h8.po_header_id (+)  AND h3.rcv_transaction_id = h9.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
361638   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
361639   AND fvl85.view_application_id(+) = 700
361640   AND fvl85.language(+)            = USERENV('LANG')
361641      AND fvl114.lookup_type(+)         = 'YES_NO'
361642   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
361643   AND fvl114.view_application_id(+) = 0
361644   AND fvl114.language(+)            = USERENV('LANG')
361645   
361646 )
361647 ;
361648 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
361649 
361650       trace
361651          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
361652          ,p_level    => C_LEVEL_STATEMENT
361653          ,p_module   => l_log_module);
361654 
361655 END IF;
361656 --
361657 
361658 
361659 
361660 --
361661 INSERT INTO xla_diag_sources --line1
361662 (
361663         event_id
361664       , ledger_id
361665       , sla_ledger_id
361666       , description_language
361667       , object_name
361668       , object_type_code
361669       , line_number
361670       , source_application_id
361671       , source_type_code
361672       , source_code
361673       , source_value
361674       , source_meaning
361675       , created_by
361676       , creation_date
361677       , last_update_date
361678       , last_updated_by
361679       , last_update_login
361680       , program_update_date
361681       , program_application_id
361682       , program_id
361683       , request_id
361684 )
361685 SELECT  event_id
361686       , p_target_ledger_id
361687       , p_sla_ledger_id
361688       , p_language
361689       , object_name
361690       , object_type_code
361691       , line_number
361692       , source_application_id
361693       , source_type_code
361694       , source_code
361695       , SUBSTR(source_value,1,1996)
361696       , SUBSTR(source_meaning,1,200)
361697       , xla_environment_pkg.g_Usr_Id
361698       , TRUNC(SYSDATE)
361699       , TRUNC(SYSDATE)
361700       , xla_environment_pkg.g_Usr_Id
361701       , xla_environment_pkg.g_Login_Id
361702       , TRUNC(SYSDATE)
361703       , xla_environment_pkg.g_Prog_Appl_Id
361704       , xla_environment_pkg.g_Prog_Id
361705       , xla_environment_pkg.g_Req_Id
361706   FROM (
361707        SELECT xet.event_id                  event_id
361708             , l2.line_number                 line_number
361709             , CASE r
361710                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
361711                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
361712                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
361713                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
361714                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
361715                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
361716                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
361717                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
361718                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
361719                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
361720                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
361721                 
361722                ELSE null
361723               END                           object_name
361724             , CASE r
361725                 WHEN 1 THEN 'LINE' 
361726                 WHEN 2 THEN 'LINE' 
361727                 WHEN 3 THEN 'LINE' 
361728                 WHEN 4 THEN 'LINE' 
361729                 WHEN 5 THEN 'LINE' 
361730                 WHEN 6 THEN 'LINE' 
361731                 WHEN 7 THEN 'LINE' 
361732                 WHEN 8 THEN 'LINE' 
361733                 WHEN 9 THEN 'LINE' 
361734                 WHEN 10 THEN 'LINE' 
361735                 WHEN 11 THEN 'LINE' 
361736                 
361737                 ELSE null
361738               END                           object_type_code
361739             , CASE r
361740                 WHEN 1 THEN '707' 
361741                 WHEN 2 THEN '707' 
361742                 WHEN 3 THEN '707' 
361743                 WHEN 4 THEN '707' 
361744                 WHEN 5 THEN '707' 
361745                 WHEN 6 THEN '707' 
361746                 WHEN 7 THEN '707' 
361747                 WHEN 8 THEN '707' 
361748                 WHEN 9 THEN '707' 
361749                 WHEN 10 THEN '707' 
361750                 WHEN 11 THEN '707' 
361751                 
361752                 ELSE null
361753               END                           source_application_id
361754             , 'S'             source_type_code
361755             , CASE r
361756                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
361757                 WHEN 2 THEN 'COST_ELEMENT_ID' 
361758                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
361759                 WHEN 4 THEN 'CURRENCY_CODE' 
361760                 WHEN 5 THEN 'ENTERED_AMOUNT' 
361761                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
361762                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
361763                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
361764                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
361765                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
361766                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
361767                 
361768                 ELSE null
361769               END                           source_code
361770             , CASE r
361771                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
361772                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
361773                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
361774                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
361775                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
361776                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
361777                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
361778                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
361779                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
361780                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
361781                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
361782                 
361783                 ELSE null
361784               END                           source_value
361785             , CASE r
361786                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
361787                           1009615
361788                          ,TO_CHAR(l2.COST_ELEMENT_ID)
361789                          ,'COST_ELEMENT_ID'
361790                          ,'S'
361791                          ,707)
361792                 
361793                 ELSE null
361794               END               source_meaning
361795          FROM  xla_events_gt     xet  
361796         , CST_XLA_INV_LINES_V  l2
361797             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
361798         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
361799           AND xet.event_type_code = C_EVENT_TYPE_CODE
361800             AND l2.event_id          = xet.event_id
361801 
361802 )
361803 ;
361804 --
361805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
361806 
361807       trace
361808          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
361809          ,p_level    => C_LEVEL_STATEMENT
361810          ,p_module   => l_log_module);
361811 
361812 END IF;
361813 
361814 
361815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
361816       trace
361817          (p_msg      => 'END of insert_sources_580'
361818          ,p_level    => C_LEVEL_PROCEDURE
361819          ,p_module   => l_log_module);
361820 END IF;
361821 EXCEPTION
361822   WHEN xla_exceptions_pkg.application_exception THEN
361823       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
361824             trace
361825                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
361826                ,p_level    => C_LEVEL_EXCEPTION
361827                ,p_module   => l_log_module);
361828       END IF;
361829       RAISE;
361830   WHEN OTHERS THEN
361831       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
361832             trace
361833                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
361834                ,p_level    => C_LEVEL_EXCEPTION
361835                ,p_module   => l_log_module);
361836        END IF;
361837        xla_exceptions_pkg.raise_message
361838            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_580');
361839 END insert_sources_580;
361840 --
361841 
361842 ---------------------------------------
361843 --
361844 -- PRIVATE FUNCTION
361845 --         EventType_580
361846 --
361847 ----------------------------------------
361848 --
361849 FUNCTION EventType_580
361850        (p_application_id         IN NUMBER
361851        ,p_base_ledger_id         IN NUMBER
361852        ,p_target_ledger_id       IN NUMBER
361853        ,p_language               IN VARCHAR2
361854        ,p_currency_code          IN VARCHAR2
361855        ,p_sla_ledger_id          IN NUMBER
361856        ,p_pad_start_date         IN DATE
361857        ,p_pad_end_date           IN DATE
361858        ,p_primary_ledger_id      IN NUMBER)
361859 RETURN BOOLEAN IS
361860 --
361861 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_RI_INV';
361862 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
361863 
361864 l_calculate_acctd_flag   VARCHAR2(1) :='N';
361865 l_calculate_g_l_flag     VARCHAR2(1) :='N';
361866 --
361867 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361868 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361869 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
361870 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
361871 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361872 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
361873 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
361874 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361875 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
361876 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
361877 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361878 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361879 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361880 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
361881 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
361882 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
361883 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
361884 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
361885 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
361886 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
361887 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
361888 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
361889 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
361890 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
361891 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
361892 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
361893 
361894 l_event_id                             NUMBER;
361895 l_previous_event_id                    NUMBER;
361896 l_first_event_id                       NUMBER;
361897 l_last_event_id                        NUMBER;
361898 
361899 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
361900 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
361901 --
361902 --
361903 l_result                    BOOLEAN := TRUE;
361904 l_rows                      NUMBER  := 1000;
361905 l_event_type_name           VARCHAR2(80) := 'Logical Return to Receiving Inspection from Inventory';
361906 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
361907 l_description               VARCHAR2(4000);
361908 l_transaction_reversal      NUMBER;
361909 l_ae_header_id              NUMBER;
361910 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
361911 l_log_module                VARCHAR2(240);
361912 --
361913 l_acct_reversal_source      VARCHAR2(30);
361914 l_trx_reversal_source       VARCHAR2(30);
361915 
361916 l_continue_with_lines       BOOLEAN := TRUE;
361917 --
361918 l_acc_rev_gl_date_source    DATE;                      -- 4262811
361919 --
361920 type t_array_event_id is table of number index by binary_integer;
361921 
361922 l_rec_array_event                    t_rec_array_event;
361923 l_null_rec_array_event               t_rec_array_event;
361924 l_array_ae_header_id                 xla_number_array_type;
361925 l_actual_flag                        VARCHAR2(1) := NULL;
361926 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
361927 l_balance_type_code                  VARCHAR2(1) :=NULL;
361928 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
361929 
361930 --
361931 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
361932 --
361933 
361934 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
361935 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
361936 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
361937 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
361938 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
361939 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
361940 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361941 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361942 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361943 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361944 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361945 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361946 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361947 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
361948 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
361949 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
361950 TYPE t_array_source_83 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
361951 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
361952 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
361953 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
361954 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
361955 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
361956 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
361957 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
361958 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
361959 
361960 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
361961 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
361962 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
361963 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
361964 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
361965 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
361966 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
361967 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
361968 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
361969 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
361970 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
361971 
361972 l_array_source_1              t_array_source_1;
361973 l_array_source_2              t_array_source_2;
361974 l_array_source_3              t_array_source_3;
361975 l_array_source_4              t_array_source_4;
361976 l_array_source_5              t_array_source_5;
361977 l_array_source_20              t_array_source_20;
361978 l_array_source_22              t_array_source_22;
361979 l_array_source_24              t_array_source_24;
361980 l_array_source_41              t_array_source_41;
361981 l_array_source_42              t_array_source_42;
361982 l_array_source_43              t_array_source_43;
361983 l_array_source_44              t_array_source_44;
361984 l_array_source_45              t_array_source_45;
361985 l_array_source_79              t_array_source_79;
361986 l_array_source_80              t_array_source_80;
361987 l_array_source_81              t_array_source_81;
361988 l_array_source_83              t_array_source_83;
361989 l_array_source_85              t_array_source_85;
361990 l_array_source_85_meaning      t_array_lookup_meaning;
361991 l_array_source_86              t_array_source_86;
361992 l_array_source_87              t_array_source_87;
361993 l_array_source_89              t_array_source_89;
361994 l_array_source_96              t_array_source_96;
361995 l_array_source_100              t_array_source_100;
361996 l_array_source_101              t_array_source_101;
361997 l_array_source_114              t_array_source_114;
361998 l_array_source_114_meaning      t_array_lookup_meaning;
361999 
362000 l_array_source_11      t_array_source_11;
362001 l_array_source_15      t_array_source_15;
362002 l_array_source_84      t_array_source_84;
362003 l_array_source_88      t_array_source_88;
362004 l_array_source_91      t_array_source_91;
362005 l_array_source_92      t_array_source_92;
362006 l_array_source_93      t_array_source_93;
362007 l_array_source_94      t_array_source_94;
362008 l_array_source_95      t_array_source_95;
362009 l_array_source_97      t_array_source_97;
362010 l_array_source_108      t_array_source_108;
362011 
362012 --
362013 CURSOR header_cur
362014 IS
362015 SELECT /*+ leading(xet) cardinality(xet,1) */
362016 -- Event Type Code: LOG_RET_RI_INV
362017 -- Event Class Code: PURCHASE_ORDER
362018     xet.entity_id
362019   , xet.legal_entity_id
362020   , xet.entity_code
362021   , xet.transaction_number
362022   , xet.event_id
362023   , xet.event_class_code
362024   , xet.event_type_code
362025   , xet.event_number
362026   , xet.event_date
362027   , xet.transaction_date
362028   , xet.reference_num_1
362029   , xet.reference_num_2
362030   , xet.reference_num_3
362031   , xet.reference_num_4
362032   , xet.reference_char_1
362033   , xet.reference_char_2
362034   , xet.reference_char_3
362035   , xet.reference_char_4
362036   , xet.reference_date_1
362037   , xet.reference_date_2
362038   , xet.reference_date_3
362039   , xet.reference_date_4
362040   , xet.event_created_by
362041   , xet.budgetary_control_flag 
362042   , h1.TRANSACTION_ID    source_1
362043   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
362044   , h3.TRANSACTION_QUANTITY    source_3
362045   , h3.TRANSACTION_UOM    source_4
362046   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
362047   , h3.INV_TXN_DISTRIBUTION_ACCT    source_20
362048   , h6.PLA_BRIDGING_ACCOUNT    source_22
362049   , h6.PLA_EXPENSE_ACCOUNT    source_24
362050   , h6.PLA_MATERIAL_ACCOUNT    source_41
362051   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
362052   , h6.PLA_RESOURCE_ACCOUNT    source_43
362053   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
362054   , h6.PLA_OVERHEAD_ACCOUNT    source_45
362055   , h3.APPLIED_TO_APPL_ID    source_79
362056   , h3.APPLIED_TO_DIST_LINK_TYPE    source_80
362057   , h3.APPLIED_TO_ENTITY_CODE    source_81
362058   , h3.APPLIED_TO_PO_DOC_ID    source_83
362059   , h1.DISTRIBUTION_TYPE    source_85
362060   , fvl85.meaning   source_85_meaning
362061   , h7.PO_BUDGET_ACCOUNT    source_86
362062   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
362063   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
362064   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_96
362065   , h9.CST_ENCUM_UPG_OPTION    source_100
362066   , h3.TXN_PO_DISTRIBUTION_ID    source_101
362067   , h1.TRANSFER_TO_GL_INDICATOR    source_114
362068   , fvl114.meaning   source_114_meaning
362069   FROM xla_events_gt     xet 
362070   , CST_XLA_INV_HEADERS_V  h1
362071   , CST_XLA_INV_REF_V  h3
362072   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
362073   , CST_XLA_INV_TXN_TYPES_REF_V  h5
362074   , CST_XLA_PLA_CATEGORY_REF_V  h6
362075   , PO_DISTS_REF_V  h7
362076   , PO_HEADERS_REF_V  h8
362077   , PSA_CST_XLA_UPG_V  h9
362078   , fnd_lookup_values    fvl85
362079   , fnd_lookup_values    fvl114
362080  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
362081    and xet.event_type_code = C_EVENT_TYPE_CODE
362082    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
362083  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
362084 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
362085 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG AND h3.txn_po_header_id = h7.po_header_id  (+)  AND h3.txn_po_distribution_id = h7.po_distribution_id (+)  AND h3.txn_po_header_id = h8.po_header_id (+)  AND h3.rcv_transaction_id = h9.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
362086   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
362087   AND fvl85.view_application_id(+) = 700
362088   AND fvl85.language(+)            = USERENV('LANG')
362089      AND fvl114.lookup_type(+)         = 'YES_NO'
362090   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
362091   AND fvl114.view_application_id(+) = 0
362092   AND fvl114.language(+)            = USERENV('LANG')
362093   
362094  ORDER BY event_id
362095 ;
362096 
362097 
362098 --
362099 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
362100 IS
362101 SELECT /*+ leading(xet) cardinality(xet,1) */
362102 -- Event Type Code: LOG_RET_RI_INV
362103 -- Event Class Code: PURCHASE_ORDER
362104     xet.entity_id
362105    ,xet.legal_entity_id
362106    ,xet.entity_code
362107    ,xet.transaction_number
362108    ,xet.event_id
362109    ,xet.event_class_code
362110    ,xet.event_type_code
362111    ,xet.event_number
362112    ,xet.event_date
362113    ,xet.transaction_date
362114    ,xet.reference_num_1
362115    ,xet.reference_num_2
362116    ,xet.reference_num_3
362117    ,xet.reference_num_4
362118    ,xet.reference_char_1
362119    ,xet.reference_char_2
362120    ,xet.reference_char_3
362121    ,xet.reference_char_4
362122    ,xet.reference_date_1
362123    ,xet.reference_date_2
362124    ,xet.reference_date_3
362125    ,xet.reference_date_4
362126    ,xet.event_created_by
362127    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
362128   , l2.CODE_COMBINATION_ID    source_11
362129   , l2.COST_ELEMENT_ID    source_15
362130   , l2.DISTRIBUTION_IDENTIFIER    source_84
362131   , l2.CURRENCY_CODE    source_88
362132   , l2.ENTERED_AMOUNT    source_91
362133   , l2.CURRENCY_CONVERSION_DATE    source_92
362134   , l2.CURRENCY_CONVERSION_RATE    source_93
362135   , l2.CURRENCY_CONVERSION_TYPE    source_94
362136   , l2.ACCOUNTED_AMOUNT    source_95
362137   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
362138   , l2.L_ORGANIZATION_CODE    source_108
362139   FROM xla_events_gt     xet 
362140   , CST_XLA_INV_LINES_V  l2
362141  WHERE xet.event_id between x_first_event_id and x_last_event_id
362142    and xet.event_date between p_pad_start_date and p_pad_end_date
362143    and xet.event_type_code = C_EVENT_TYPE_CODE
362144    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
362145 ;
362146 
362147 --
362148 BEGIN
362149 IF g_log_enabled THEN
362150    l_log_module := C_DEFAULT_MODULE||'.EventType_580';
362151 END IF;
362152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
362153    trace
362154       (p_msg      => 'BEGIN of EventType_580'
362155       ,p_level    => C_LEVEL_PROCEDURE
362156       ,p_module   => l_log_module);
362157 END IF;
362158 
362159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
362160    trace
362161       (p_msg      => 'p_application_id = '||p_application_id||
362162                      ' - p_base_ledger_id = '||p_base_ledger_id||
362163                      ' - p_target_ledger_id  = '||p_target_ledger_id||
362164                      ' - p_language = '||p_language||
362165                      ' - p_currency_code = '||p_currency_code||
362166                      ' - p_sla_ledger_id = '||p_sla_ledger_id
362167       ,p_level    => C_LEVEL_STATEMENT
362168       ,p_module   => l_log_module);
362169 END IF;
362170 --
362171 -- initialze arrays
362172 --
362173 g_array_event.DELETE;
362174 l_rec_array_event := l_null_rec_array_event;
362175 --
362176 --------------------------------------
362177 -- 4262811 Initialze MPA Line Number
362178 --------------------------------------
362179 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
362180 
362181 --
362182 
362183 --
362184 OPEN header_cur;
362185 --
362186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
362187    trace
362188    (p_msg      => 'SQL - FETCH header_cur'
362189    ,p_level    => C_LEVEL_STATEMENT
362190    ,p_module   => l_log_module);
362191 END IF;
362192 --
362193 LOOP
362194 FETCH header_cur BULK COLLECT INTO
362195         l_array_entity_id
362196       , l_array_legal_entity_id
362197       , l_array_entity_code
362198       , l_array_transaction_num
362199       , l_array_event_id
362200       , l_array_class_code
362201       , l_array_event_type
362202       , l_array_event_number
362203       , l_array_event_date
362204       , l_array_transaction_date
362205       , l_array_reference_num_1
362206       , l_array_reference_num_2
362207       , l_array_reference_num_3
362208       , l_array_reference_num_4
362209       , l_array_reference_char_1
362210       , l_array_reference_char_2
362211       , l_array_reference_char_3
362212       , l_array_reference_char_4
362213       , l_array_reference_date_1
362214       , l_array_reference_date_2
362215       , l_array_reference_date_3
362216       , l_array_reference_date_4
362217       , l_array_event_created_by
362218       , l_array_budgetary_control_flag 
362219       , l_array_source_1
362220       , l_array_source_2
362221       , l_array_source_3
362222       , l_array_source_4
362223       , l_array_source_5
362224       , l_array_source_20
362225       , l_array_source_22
362226       , l_array_source_24
362227       , l_array_source_41
362228       , l_array_source_42
362229       , l_array_source_43
362230       , l_array_source_44
362231       , l_array_source_45
362232       , l_array_source_79
362233       , l_array_source_80
362234       , l_array_source_81
362235       , l_array_source_83
362236       , l_array_source_85
362237       , l_array_source_85_meaning
362238       , l_array_source_86
362239       , l_array_source_87
362240       , l_array_source_89
362241       , l_array_source_96
362242       , l_array_source_100
362243       , l_array_source_101
362244       , l_array_source_114
362245       , l_array_source_114_meaning
362246       LIMIT l_rows;
362247 --
362248 IF (C_LEVEL_EVENT >= g_log_level) THEN
362249    trace
362250    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
362251    ,p_level    => C_LEVEL_EVENT
362252    ,p_module   => l_log_module);
362253 END IF;
362254 --
362255 EXIT WHEN l_array_entity_id.COUNT = 0;
362256 
362257 -- initialize arrays
362258 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
362259 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
362260 
362261 --
362262 -- Bug 4458708
362263 --
362264 XLA_AE_LINES_PKG.g_LineNumber := 0;
362265 
362266 
362267 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
362268 g_last_hdr_idx := l_array_event_id.LAST;
362269 --
362270 -- loop for the headers. Each iteration is for each header extract row
362271 -- fetched in header cursor
362272 --
362273 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
362274 
362275 --
362276 -- set event info as cache for other routines to refer event attributes
362277 --
362278 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
362279    (p_application_id           => p_application_id
362280    ,p_primary_ledger_id        => p_primary_ledger_id
362281    ,p_base_ledger_id           => p_base_ledger_id
362282    ,p_target_ledger_id         => p_target_ledger_id
362283    ,p_entity_id                => l_array_entity_id(hdr_idx)
362284    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
362285    ,p_entity_code              => l_array_entity_code(hdr_idx)
362286    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
362287    ,p_event_id                 => l_array_event_id(hdr_idx)
362288    ,p_event_class_code         => l_array_class_code(hdr_idx)
362289    ,p_event_type_code          => l_array_event_type(hdr_idx)
362290    ,p_event_number             => l_array_event_number(hdr_idx)
362291    ,p_event_date               => l_array_event_date(hdr_idx)
362292    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
362293    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
362294    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
362295    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
362296    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
362297    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
362298    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
362299    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
362300    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
362301    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
362302    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
362303    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
362304    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
362305    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
362306    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
362307 
362308 --
362309 -- set the status of entry to C_VALID (0)
362310 --
362311 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
362312 
362313 --
362314 -- initialize a row for ae header
362315 --
362316 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
362317 
362318 l_event_id := l_array_event_id(hdr_idx);
362319 
362320 --
362321 -- storing the hdr_idx for event. May be used by line cursor.
362322 --
362323 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
362324 
362325 --
362326 -- store sources from header extract. This can be improved to
362327 -- store only those sources from header extract that may be used in lines
362328 --
362329 
362330 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
362331 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
362332 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
362333 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
362334 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
362335 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
362336 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
362337 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
362338 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
362339 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
362340 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
362341 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
362342 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
362343 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
362344 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
362345 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
362346 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
362347 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
362348 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
362349 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
362350 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
362351 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
362352 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
362353 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
362354 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
362355 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
362356 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
362357 
362358 --
362359 -- initilaize the status of ae headers for diffrent balance types
362360 -- the status is initialised to C_NOT_CREATED (2)
362361 --
362362 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
362363 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
362364 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
362365 
362366 --
362367 -- call api to validate and store accounting attributes for header
362368 --
362369 
362370 ------------------------------------------------------------
362371 -- Accrual Reversal : to get date for Standard Source (NONE)
362372 ------------------------------------------------------------
362373 l_acc_rev_gl_date_source := NULL;
362374 
362375      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
362376       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
362377      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
362378       l_rec_acct_attrs.array_date_value(2) := 
362379 xla_ae_sources_pkg.GetSystemSourceDate(
362380    p_source_code           => 'XLA_REFERENCE_DATE_1'
362381  , p_source_type_code      => 'Y'
362382  , p_source_application_id =>  602
362383 );
362384      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
362385       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
362386 
362387 
362388 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
362389 
362390 XLA_AE_HEADER_PKG.SetJeCategoryName;
362391 
362392 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
362393 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
362394 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
362395 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
362396 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
362397 
362398 
362399 --
362400 xla_ae_header_pkg.SetHdrDescription(
362401    p_description => Description_1 (
362402    p_application_id => p_application_id 
362403  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362404  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362405  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362406  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362407  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362408    )
362409 );
362410 --
362411 
362412 -- No header level analytical criteria
362413 
362414 --
362415 --accounting attribute enhancement, bug 3612931
362416 --
362417 l_trx_reversal_source := SUBSTR(NULL, 1,30);
362418 
362419 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
362420    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
362421 
362422    xla_accounting_err_pkg.build_message
362423       (p_appli_s_name            => 'XLA'
362424       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
362425       ,p_token_1                 => 'ACCT_ATTR_NAME'
362426       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
362427       ,p_token_2                 => 'PRODUCT_NAME'
362428       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
362429       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
362430       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
362431       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
362432 
362433 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
362434    --
362435    -- following sets the accounting attributes needed to reverse
362436    -- accounting for a distributeion
362437    --
362438    xla_ae_lines_pkg.SetTrxReversalAttrs
362439       (p_event_id              => l_event_id
362440       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
362441       ,p_trx_reversal_source   => l_trx_reversal_source);
362442 
362443 END IF;
362444 
362445 
362446 ----------------------------------------------------------------
362447 -- 4262811 -  update the header statuses to invalid in need be
362448 ----------------------------------------------------------------
362449 --
362450 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
362451 
362452 
362453   -----------------------------------------------
362454   -- No accrual reversal for the event class/type
362455   -----------------------------------------------
362456 ----------------------------------------------------------------
362457 
362458 --
362459 -- this ends the header loop iteration for one bulk fetch
362460 --
362461 END LOOP;
362462 
362463 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
362464 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
362465 
362466 --
362467 -- insert dummy rows into lines gt table that were created due to
362468 -- transaction reversals
362469 --
362470 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
362471    l_result := XLA_AE_LINES_PKG.InsertLines;
362472 END IF;
362473 
362474 --
362475 -- reset the temp_line_num for each set of events fetched from header
362476 -- cursor rather than doing it for each new event in line cursor
362477 -- Bug 3939231
362478 --
362479 xla_ae_lines_pkg.g_temp_line_num := 0;
362480 
362481 
362482 
362483 --
362484 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
362485 --
362486 --
362487 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
362488 
362489       trace
362490          (p_msg      => 'SQL - FETCH line_cur'
362491          ,p_level    => C_LEVEL_STATEMENT
362492          ,p_module   => l_log_module);
362493 
362494 END IF;
362495 --
362496 --
362497 LOOP
362498   --
362499   FETCH line_cur BULK COLLECT INTO
362500         l_array_entity_id
362501       , l_array_legal_entity_id
362502       , l_array_entity_code
362503       , l_array_transaction_num
362504       , l_array_event_id
362505       , l_array_class_code
362506       , l_array_event_type
362507       , l_array_event_number
362508       , l_array_event_date
362509       , l_array_transaction_date
362510       , l_array_reference_num_1
362511       , l_array_reference_num_2
362512       , l_array_reference_num_3
362513       , l_array_reference_num_4
362514       , l_array_reference_char_1
362515       , l_array_reference_char_2
362516       , l_array_reference_char_3
362517       , l_array_reference_char_4
362518       , l_array_reference_date_1
362519       , l_array_reference_date_2
362520       , l_array_reference_date_3
362521       , l_array_reference_date_4
362522       , l_array_event_created_by
362523       , l_array_budgetary_control_flag
362524       , l_array_extract_line_num 
362525       , l_array_source_11
362526       , l_array_source_15
362527       , l_array_source_84
362528       , l_array_source_88
362529       , l_array_source_91
362530       , l_array_source_92
362531       , l_array_source_93
362532       , l_array_source_94
362533       , l_array_source_95
362534       , l_array_source_97
362535       , l_array_source_108
362536       LIMIT l_rows;
362537 
362538   --
362539   IF (C_LEVEL_EVENT >= g_log_level) THEN
362540             trace
362541                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
362542                ,p_level    => C_LEVEL_EVENT
362543                ,p_module   => l_log_module);
362544   END IF;
362545   --
362546   EXIT WHEN l_array_entity_id.count = 0;
362547 
362548   XLA_AE_LINES_PKG.g_rec_lines := null;
362549 
362550 --
362551 -- Bug 4458708
362552 --
362553 XLA_AE_LINES_PKG.g_LineNumber := 0;
362554 --
362555 --
362556 
362557 FOR Idx IN 1..l_array_event_id.count LOOP
362558    --
362559    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
362560    --
362561    l_event_id := l_array_event_id(idx);  -- 5648433
362562 
362563    --
362564    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
362565    --
362566 
362567    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
362568              (g_array_event(l_event_id).array_value_num('header_index'))
362569          ,'N'
362570          ) <> 'Y'
362571    THEN
362572       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
362573          trace
362574             (p_msg      => 'Trancaction revesal option is not Y '
362575             ,p_level    => C_LEVEL_STATEMENT
362576             ,p_module   => l_log_module);
362577       END IF;
362578 
362579 --
362580 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
362581 --
362582 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
362583 --
362584 -- set event info as cache for other routines to refer event attributes
362585 --
362586 
362587 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
362588    l_previous_event_id := l_event_id;
362589 
362590    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
362591       (p_application_id           => p_application_id
362592       ,p_primary_ledger_id        => p_primary_ledger_id
362593       ,p_base_ledger_id           => p_base_ledger_id
362594       ,p_target_ledger_id         => p_target_ledger_id
362595       ,p_entity_id                => l_array_entity_id(Idx)
362596       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
362597       ,p_entity_code              => l_array_entity_code(Idx)
362598       ,p_transaction_num          => l_array_transaction_num(Idx)
362599       ,p_event_id                 => l_array_event_id(Idx)
362600       ,p_event_class_code         => l_array_class_code(Idx)
362601       ,p_event_type_code          => l_array_event_type(Idx)
362602       ,p_event_number             => l_array_event_number(Idx)
362603       ,p_event_date               => l_array_event_date(Idx)
362604       ,p_transaction_date         => l_array_transaction_date(Idx)
362605       ,p_reference_num_1          => l_array_reference_num_1(Idx)
362606       ,p_reference_num_2          => l_array_reference_num_2(Idx)
362607       ,p_reference_num_3          => l_array_reference_num_3(Idx)
362608       ,p_reference_num_4          => l_array_reference_num_4(Idx)
362609       ,p_reference_char_1         => l_array_reference_char_1(Idx)
362610       ,p_reference_char_2         => l_array_reference_char_2(Idx)
362611       ,p_reference_char_3         => l_array_reference_char_3(Idx)
362612       ,p_reference_char_4         => l_array_reference_char_4(Idx)
362613       ,p_reference_date_1         => l_array_reference_date_1(Idx)
362614       ,p_reference_date_2         => l_array_reference_date_2(Idx)
362615       ,p_reference_date_3         => l_array_reference_date_3(Idx)
362616       ,p_reference_date_4         => l_array_reference_date_4(Idx)
362617       ,p_event_created_by         => l_array_event_created_by(Idx)
362618       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
362619        --
362620 END IF;
362621 
362622 
362623 
362624 --
362625 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
362626 
362627 l_acct_reversal_source := SUBSTR(NULL, 1,30);
362628 
362629 IF l_continue_with_lines THEN
362630    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
362631       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
362632 
362633       xla_accounting_err_pkg.build_message
362634          (p_appli_s_name            => 'XLA'
362635          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
362636          ,p_token_1                 => 'LINE_NUMBER'
362637          ,p_value_1                 => l_array_extract_line_num(Idx)
362638          ,p_token_2                 => 'PRODUCT_NAME'
362639          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
362640          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
362641          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
362642          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
362643 
362644    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
362645       --
362646       -- following sets the accounting attributes needed to reverse
362647       -- accounting for a distributeion
362648       --
362649 
362650       --
362651       -- 5217187
362652       --
362653       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
362654       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
362655                                        g_array_event(l_event_id).array_value_num('header_index'));
362656       --
362657       --
362658 
362659       -- No reversal code generated
362660 
362661       xla_ae_lines_pkg.SetAcctReversalAttrs
362662          (p_event_id             => l_event_id
362663          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
362664          ,p_calculate_acctd_flag => l_calculate_acctd_flag
362665          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
362666    END IF;
362667 
362668    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
362669        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
362670 
362671 --
362672 AcctLineType_47 (
362673  p_application_id  => p_application_id
362674  ,p_event_id     => l_event_id
362675  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362676  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362677  ,p_actual_flag => l_actual_flag
362678  ,p_balance_type_code => l_balance_type_code
362679  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362680  
362681  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362682  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362683  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362684  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362685  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362686  , p_source_11 => l_array_source_11(Idx)
362687  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
362688  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
362689  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
362690  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
362691  , p_source_84 => l_array_source_84(Idx)
362692  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
362693  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
362694  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
362695  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
362696  , p_source_88 => l_array_source_88(Idx)
362697  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
362698  , p_source_91 => l_array_source_91(Idx)
362699  , p_source_92 => l_array_source_92(Idx)
362700  , p_source_93 => l_array_source_93(Idx)
362701  , p_source_94 => l_array_source_94(Idx)
362702  , p_source_95 => l_array_source_95(Idx)
362703  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
362704  , p_source_97 => l_array_source_97(Idx)
362705  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
362706  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
362707  );
362708 If(l_balance_type_code = 'A') THEN
362709   l_actual_gain_loss_ref := l_gain_or_loss_ref;
362710 END IF;
362711 
362712 --
362713 
362714 
362715 --
362716 AcctLineType_84 (
362717  p_application_id  => p_application_id
362718  ,p_event_id     => l_event_id
362719  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362720  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362721  ,p_actual_flag => l_actual_flag
362722  ,p_balance_type_code => l_balance_type_code
362723  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362724  
362725  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362726  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362727  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362728  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362729  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362730  , p_source_11 => l_array_source_11(Idx)
362731  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
362732  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
362733  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
362734  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
362735  , p_source_84 => l_array_source_84(Idx)
362736  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
362737  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
362738  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
362739  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
362740  , p_source_88 => l_array_source_88(Idx)
362741  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
362742  , p_source_91 => l_array_source_91(Idx)
362743  , p_source_92 => l_array_source_92(Idx)
362744  , p_source_93 => l_array_source_93(Idx)
362745  , p_source_94 => l_array_source_94(Idx)
362746  , p_source_95 => l_array_source_95(Idx)
362747  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
362748  , p_source_97 => l_array_source_97(Idx)
362749  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
362750  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
362751  );
362752 If(l_balance_type_code = 'A') THEN
362753   l_actual_gain_loss_ref := l_gain_or_loss_ref;
362754 END IF;
362755 
362756 --
362757 
362758 
362759 --
362760 AcctLineType_270 (
362761  p_application_id  => p_application_id
362762  ,p_event_id     => l_event_id
362763  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362764  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362765  ,p_actual_flag => l_actual_flag
362766  ,p_balance_type_code => l_balance_type_code
362767  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362768  
362769  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362770  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362771  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362772  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362773  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362774  , p_source_15 => l_array_source_15(Idx)
362775  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
362776  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
362777  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
362778  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
362779  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
362780  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
362781  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
362782  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
362783  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
362784  , p_source_84 => l_array_source_84(Idx)
362785  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
362786  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
362787  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
362788  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
362789  , p_source_88 => l_array_source_88(Idx)
362790  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
362791  , p_source_91 => l_array_source_91(Idx)
362792  , p_source_92 => l_array_source_92(Idx)
362793  , p_source_93 => l_array_source_93(Idx)
362794  , p_source_94 => l_array_source_94(Idx)
362795  , p_source_95 => l_array_source_95(Idx)
362796  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
362797  , p_source_97 => l_array_source_97(Idx)
362798  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
362799  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
362800  , p_source_108 => l_array_source_108(Idx)
362801  );
362802 If(l_balance_type_code = 'A') THEN
362803   l_actual_gain_loss_ref := l_gain_or_loss_ref;
362804 END IF;
362805 
362806 --
362807 
362808 
362809 --
362810 AcctLineType_291 (
362811  p_application_id  => p_application_id
362812  ,p_event_id     => l_event_id
362813  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362814  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362815  ,p_actual_flag => l_actual_flag
362816  ,p_balance_type_code => l_balance_type_code
362817  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362818  
362819  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362820  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362821  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362822  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362823  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362824  , p_source_11 => l_array_source_11(Idx)
362825  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
362826  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
362827  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
362828  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
362829  , p_source_84 => l_array_source_84(Idx)
362830  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
362831  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
362832  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
362833  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
362834  , p_source_88 => l_array_source_88(Idx)
362835  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
362836  , p_source_91 => l_array_source_91(Idx)
362837  , p_source_92 => l_array_source_92(Idx)
362838  , p_source_93 => l_array_source_93(Idx)
362839  , p_source_94 => l_array_source_94(Idx)
362840  , p_source_95 => l_array_source_95(Idx)
362841  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
362842  , p_source_97 => l_array_source_97(Idx)
362843  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
362844  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
362845  );
362846 If(l_balance_type_code = 'A') THEN
362847   l_actual_gain_loss_ref := l_gain_or_loss_ref;
362848 END IF;
362849 
362850 --
362851 
362852 
362853 --
362854 AcctLineType_351 (
362855  p_application_id  => p_application_id
362856  ,p_event_id     => l_event_id
362857  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362858  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362859  ,p_actual_flag => l_actual_flag
362860  ,p_balance_type_code => l_balance_type_code
362861  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362862  
362863  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362864  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362865  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362866  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362867  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362868  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
362869  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
362870  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
362871  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
362872  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
362873  , p_source_84 => l_array_source_84(Idx)
362874  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
362875  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
362876  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
362877  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
362878  , p_source_88 => l_array_source_88(Idx)
362879  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
362880  , p_source_91 => l_array_source_91(Idx)
362881  , p_source_92 => l_array_source_92(Idx)
362882  , p_source_93 => l_array_source_93(Idx)
362883  , p_source_94 => l_array_source_94(Idx)
362884  , p_source_95 => l_array_source_95(Idx)
362885  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
362886  , p_source_97 => l_array_source_97(Idx)
362887  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
362888  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
362889  );
362890 If(l_balance_type_code = 'A') THEN
362891   l_actual_gain_loss_ref := l_gain_or_loss_ref;
362892 END IF;
362893 
362894 --
362895 
362896 
362897 --
362898 AcctLineType_423 (
362899  p_application_id  => p_application_id
362900  ,p_event_id     => l_event_id
362901  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362902  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362903  ,p_actual_flag => l_actual_flag
362904  ,p_balance_type_code => l_balance_type_code
362905  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362906  
362907  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362908  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362909  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362910  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362911  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362912  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
362913  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
362914  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
362915  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
362916  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
362917  , p_source_84 => l_array_source_84(Idx)
362918  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
362919  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
362920  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
362921  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
362922  , p_source_88 => l_array_source_88(Idx)
362923  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
362924  , p_source_91 => l_array_source_91(Idx)
362925  , p_source_92 => l_array_source_92(Idx)
362926  , p_source_93 => l_array_source_93(Idx)
362927  , p_source_94 => l_array_source_94(Idx)
362928  , p_source_95 => l_array_source_95(Idx)
362929  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
362930  , p_source_97 => l_array_source_97(Idx)
362931  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
362932  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
362933  );
362934 If(l_balance_type_code = 'A') THEN
362935   l_actual_gain_loss_ref := l_gain_or_loss_ref;
362936 END IF;
362937 
362938 --
362939 
362940 
362941 --
362942 AcctLineType_441 (
362943  p_application_id  => p_application_id
362944  ,p_event_id     => l_event_id
362945  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362946  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362947  ,p_actual_flag => l_actual_flag
362948  ,p_balance_type_code => l_balance_type_code
362949  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362950  
362951  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362952  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362953  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362954  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362955  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
362956  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
362957  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
362958  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
362959  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
362960  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
362961  , p_source_84 => l_array_source_84(Idx)
362962  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
362963  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
362964  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
362965  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
362966  , p_source_88 => l_array_source_88(Idx)
362967  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
362968  , p_source_91 => l_array_source_91(Idx)
362969  , p_source_92 => l_array_source_92(Idx)
362970  , p_source_93 => l_array_source_93(Idx)
362971  , p_source_94 => l_array_source_94(Idx)
362972  , p_source_95 => l_array_source_95(Idx)
362973  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
362974  , p_source_97 => l_array_source_97(Idx)
362975  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
362976  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
362977  );
362978 If(l_balance_type_code = 'A') THEN
362979   l_actual_gain_loss_ref := l_gain_or_loss_ref;
362980 END IF;
362981 
362982 --
362983 
362984 
362985 --
362986 AcctLineType_475 (
362987  p_application_id  => p_application_id
362988  ,p_event_id     => l_event_id
362989  ,p_calculate_acctd_flag => l_calculate_acctd_flag
362990  ,p_calculate_g_l_flag => l_calculate_g_l_flag
362991  ,p_actual_flag => l_actual_flag
362992  ,p_balance_type_code => l_balance_type_code
362993  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
362994  
362995  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
362996  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
362997  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
362998  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
362999  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
363000  , p_source_11 => l_array_source_11(Idx)
363001  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
363002  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
363003  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
363004  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
363005  , p_source_84 => l_array_source_84(Idx)
363006  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
363007  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
363008  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
363009  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
363010  , p_source_88 => l_array_source_88(Idx)
363011  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
363012  , p_source_91 => l_array_source_91(Idx)
363013  , p_source_92 => l_array_source_92(Idx)
363014  , p_source_93 => l_array_source_93(Idx)
363015  , p_source_94 => l_array_source_94(Idx)
363016  , p_source_95 => l_array_source_95(Idx)
363017  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
363018  , p_source_97 => l_array_source_97(Idx)
363019  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
363020  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
363021  );
363022 If(l_balance_type_code = 'A') THEN
363023   l_actual_gain_loss_ref := l_gain_or_loss_ref;
363024 END IF;
363025 
363026 --
363027 
363028 
363029 --
363030 AcctLineType_505 (
363031  p_application_id  => p_application_id
363032  ,p_event_id     => l_event_id
363033  ,p_calculate_acctd_flag => l_calculate_acctd_flag
363034  ,p_calculate_g_l_flag => l_calculate_g_l_flag
363035  ,p_actual_flag => l_actual_flag
363036  ,p_balance_type_code => l_balance_type_code
363037  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
363038  
363039  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
363040  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
363041  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
363042  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
363043  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
363044  , p_source_11 => l_array_source_11(Idx)
363045  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
363046  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
363047  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
363048  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
363049  , p_source_84 => l_array_source_84(Idx)
363050  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
363051  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
363052  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
363053  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
363054  , p_source_88 => l_array_source_88(Idx)
363055  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
363056  , p_source_91 => l_array_source_91(Idx)
363057  , p_source_92 => l_array_source_92(Idx)
363058  , p_source_93 => l_array_source_93(Idx)
363059  , p_source_94 => l_array_source_94(Idx)
363060  , p_source_95 => l_array_source_95(Idx)
363061  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
363062  , p_source_97 => l_array_source_97(Idx)
363063  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
363064  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
363065  );
363066 If(l_balance_type_code = 'A') THEN
363067   l_actual_gain_loss_ref := l_gain_or_loss_ref;
363068 END IF;
363069 
363070 --
363071 
363072 
363073 --
363074 AcctLineType_521 (
363075  p_application_id  => p_application_id
363076  ,p_event_id     => l_event_id
363077  ,p_calculate_acctd_flag => l_calculate_acctd_flag
363078  ,p_calculate_g_l_flag => l_calculate_g_l_flag
363079  ,p_actual_flag => l_actual_flag
363080  ,p_balance_type_code => l_balance_type_code
363081  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
363082  
363083  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
363084  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
363085  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
363086  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
363087  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
363088  , p_source_11 => l_array_source_11(Idx)
363089  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
363090  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
363091  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
363092  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
363093  , p_source_84 => l_array_source_84(Idx)
363094  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
363095  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
363096  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
363097  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
363098  , p_source_88 => l_array_source_88(Idx)
363099  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
363100  , p_source_91 => l_array_source_91(Idx)
363101  , p_source_92 => l_array_source_92(Idx)
363102  , p_source_93 => l_array_source_93(Idx)
363103  , p_source_94 => l_array_source_94(Idx)
363104  , p_source_95 => l_array_source_95(Idx)
363105  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
363106  , p_source_97 => l_array_source_97(Idx)
363107  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
363108  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
363109  );
363110 If(l_balance_type_code = 'A') THEN
363111   l_actual_gain_loss_ref := l_gain_or_loss_ref;
363112 END IF;
363113 
363114 --
363115 
363116       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
363117       -- or secondary ledger that has different currency with primary
363118       -- or alc that is calculated by sla
363119       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
363120             (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'))
363121 
363122 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
363123 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
363124           AND (l_actual_flag = 'A')) THEN
363125         XLA_AE_LINES_PKG.CreateGainOrLossLines(
363126           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
363127          ,p_application_id   => p_application_id
363128          ,p_amb_context_code => 'DEFAULT'
363129          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
363130          ,p_event_class_code => C_EVENT_CLASS_CODE
363131          ,p_event_type_code  => C_EVENT_TYPE_CODE
363132          
363133          ,p_gain_ccid        => -1
363134          ,p_loss_ccid        => -1
363135 
363136          ,p_actual_flag      => l_actual_flag
363137          ,p_enc_flag         => null
363138          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
363139          ,p_enc_g_l_ref      => null
363140          );
363141       END IF;
363142    END IF;
363143 END IF;
363144 
363145    ELSE
363146       --
363147       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
363148       --
363149       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
363150          trace
363151             (p_msg      => 'Trancaction revesal option is Y'
363152             ,p_level    => C_LEVEL_STATEMENT
363153             ,p_module   => l_log_module);
363154       END IF;
363155    END IF;
363156 
363157 END LOOP;
363158 l_result := XLA_AE_LINES_PKG.InsertLines ;
363159 end loop;
363160 close line_cur;
363161 
363162 
363163 --
363164 -- insert headers into xla_ae_headers_gt table
363165 --
363166 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
363167 
363168 -- insert into errors table here.
363169 
363170 END LOOP;
363171 
363172 --
363173 -- 4865292
363174 --
363175 -- Compare g_hdr_extract_count with event count in
363176 -- CreateHeadersAndLines.
363177 --
363178 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
363179 
363180 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
363181    trace (p_msg     => '# rows extracted from header extract objects '
363182                     || ' (running total): '
363183                     || g_hdr_extract_count
363184          ,p_level   => C_LEVEL_STATEMENT
363185          ,p_module  => l_log_module);
363186 END IF;
363187 
363188 CLOSE header_cur;
363189 --
363190 
363191 --
363192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
363193    trace
363194       (p_msg      => 'END of EventType_580'
363195       ,p_level    => C_LEVEL_PROCEDURE
363196       ,p_module   => l_log_module);
363197 END IF;
363198 --
363199 RETURN l_result;
363200 EXCEPTION
363201 WHEN xla_exceptions_pkg.application_exception THEN
363202    
363203 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
363204 
363205    
363206 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
363207 
363208    RAISE;
363209 
363210 WHEN NO_DATA_FOUND THEN
363211 
363212 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
363213 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
363214 
363215 FOR header_record IN header_cur
363216 LOOP
363217     l_array_header_events(header_record.event_id) := header_record.event_id;
363218 END LOOP;
363219 
363220 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
363221 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
363222 
363223 fnd_file.put_line(fnd_file.LOG, '                    ');
363224 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
363225 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
363226 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
363227 
363228 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
363229 LOOP
363230 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
363231 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
363232         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
363233 	END IF;
363234 END LOOP;
363235 
363236 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
363237 fnd_file.put_line(fnd_file.LOG, '                    ');
363238 
363239 
363240 xla_exceptions_pkg.raise_message
363241       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_580');
363242 
363243 
363244 WHEN OTHERS THEN
363245    xla_exceptions_pkg.raise_message
363246       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_580');
363247 END EventType_580;
363248 --
363249 
363250 ---------------------------------------
363251 --
363252 -- PRIVATE PROCEDURE
363253 --         insert_sources_581
363254 --
363255 ----------------------------------------
363256 --
363257 PROCEDURE insert_sources_581(
363258                                 p_target_ledger_id       IN NUMBER
363259                               , p_language               IN VARCHAR2
363260                               , p_sla_ledger_id          IN NUMBER
363261                               , p_pad_start_date         IN DATE
363262                               , p_pad_end_date           IN DATE
363263                          )
363264 IS
363265 
363266 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RMA_RCPT';
363267 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
363268 p_apps_owner                   VARCHAR2(30);
363269 l_log_module                   VARCHAR2(240);
363270 BEGIN
363271 IF g_log_enabled THEN
363272       l_log_module := C_DEFAULT_MODULE||'.insert_sources_581';
363273 END IF;
363274 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
363275 
363276       trace
363277          (p_msg      => 'BEGIN of insert_sources_581'
363278          ,p_level    => C_LEVEL_PROCEDURE
363279          ,p_module   => l_log_module);
363280 
363281 END IF;
363282 
363283 -- select APPS owner
363284 SELECT oracle_username
363285   INTO p_apps_owner
363286   FROM fnd_oracle_userid
363287  WHERE read_only_flag = 'U'
363288 ;
363289 
363290 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
363291       trace
363292          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
363293                         ' - p_language = '||p_language||
363294                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
363295                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
363296                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
363297                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
363298          ,p_level    => C_LEVEL_STATEMENT
363299          ,p_module   => l_log_module);
363300 END IF;
363301 
363302 
363303 --
363304 INSERT INTO xla_diag_sources --hdr1
363305 (
363306         event_id
363307       , ledger_id
363308       , sla_ledger_id
363309       , description_language
363310       , object_name
363311       , object_type_code
363312       , line_number
363313       , source_application_id
363314       , source_type_code
363315       , source_code
363316       , source_value
363317       , source_meaning
363318       , created_by
363319       , creation_date
363320       , last_update_date
363321       , last_updated_by
363322       , last_update_login
363323       , program_update_date
363324       , program_application_id
363325       , program_id
363326       , request_id
363327 )
363328 SELECT
363329         event_id
363330       , p_target_ledger_id
363331       , p_sla_ledger_id
363332       , p_language
363333       , object_name
363334       , object_type_code
363335       , line_number
363336       , source_application_id
363337       , source_type_code
363338       , source_code
363339       , SUBSTR(source_value ,1,1996)
363340       , SUBSTR(source_meaning,1,200)
363341       , xla_environment_pkg.g_Usr_Id
363342       , TRUNC(SYSDATE)
363343       , TRUNC(SYSDATE)
363344       , xla_environment_pkg.g_Usr_Id
363345       , xla_environment_pkg.g_Login_Id
363346       , TRUNC(SYSDATE)
363347       , xla_environment_pkg.g_Prog_Appl_Id
363348       , xla_environment_pkg.g_Prog_Id
363349       , xla_environment_pkg.g_Req_Id
363350   FROM (
363351        SELECT xet.event_id                  event_id
363352             , 0                             line_number
363353             , CASE r
363354                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
363355                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
363356                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
363357                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
363358                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
363359                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
363360                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
363361                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
363362                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
363363                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
363364                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
363365                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
363366                 
363367                ELSE null
363368               END                           object_name
363369             , CASE r
363370                 WHEN 1 THEN 'HEADER' 
363371                 WHEN 2 THEN 'HEADER' 
363372                 WHEN 3 THEN 'HEADER' 
363373                 WHEN 4 THEN 'HEADER' 
363374                 WHEN 5 THEN 'HEADER' 
363375                 WHEN 6 THEN 'HEADER' 
363376                 WHEN 7 THEN 'HEADER' 
363377                 WHEN 8 THEN 'HEADER' 
363378                 WHEN 9 THEN 'HEADER' 
363379                 WHEN 10 THEN 'HEADER' 
363380                 WHEN 11 THEN 'HEADER' 
363381                 WHEN 12 THEN 'HEADER' 
363382                 
363383                 ELSE null
363384               END                           object_type_code
363385             , CASE r
363386                 WHEN 1 THEN '707' 
363387                 WHEN 2 THEN '707' 
363388                 WHEN 3 THEN '707' 
363389                 WHEN 4 THEN '707' 
363390                 WHEN 5 THEN '707' 
363391                 WHEN 6 THEN '707' 
363392                 WHEN 7 THEN '707' 
363393                 WHEN 8 THEN '707' 
363394                 WHEN 9 THEN '707' 
363395                 WHEN 10 THEN '707' 
363396                 WHEN 11 THEN '707' 
363397                 WHEN 12 THEN '707' 
363398                 
363399                 ELSE null
363400               END                           source_application_id
363401             , 'S'             source_type_code
363402             , CASE r
363403                 WHEN 1 THEN 'TRANSACTION_ID' 
363404                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
363405                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
363406                 WHEN 4 THEN 'TRANSACTION_UOM' 
363407                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
363408                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
363409                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
363410                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
363411                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
363412                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
363413                 WHEN 11 THEN 'DISTRIBUTION_TYPE' 
363414                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
363415                 
363416                 ELSE null
363417               END                           source_code
363418             , CASE r
363419                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
363420                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
363421                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
363422                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
363423                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
363424                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
363425                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
363426                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
363427                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
363428                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
363429                 WHEN 11 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
363430                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
363431                 
363432                 ELSE null
363433               END                           source_value
363434             , CASE r
363435                 WHEN 11 THEN fvl85.meaning
363436                 WHEN 12 THEN fvl114.meaning
363437                 
363438                 ELSE null
363439               END               source_meaning
363440         FROM xla_events_gt     xet  
363441       , CST_XLA_INV_HEADERS_V  h1
363442       , CST_XLA_INV_REF_V  h3
363443       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
363444       , CST_XLA_INV_TXN_TYPES_REF_V  h5
363445       , CST_XLA_PLA_CATEGORY_REF_V  h6
363446   , fnd_lookup_values    fvl85
363447   , fnd_lookup_values    fvl114
363448             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
363449        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
363450          AND xet.event_type_code = C_EVENT_TYPE_CODE
363451             AND h1.event_id = xet.event_id
363452  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
363453 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
363454 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
363455   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
363456   AND fvl85.view_application_id(+) = 700
363457   AND fvl85.language(+)            = USERENV('LANG')
363458      AND fvl114.lookup_type(+)         = 'YES_NO'
363459   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
363460   AND fvl114.view_application_id(+) = 0
363461   AND fvl114.language(+)            = USERENV('LANG')
363462   
363463 )
363464 ;
363465 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
363466 
363467       trace
363468          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
363469          ,p_level    => C_LEVEL_STATEMENT
363470          ,p_module   => l_log_module);
363471 
363472 END IF;
363473 --
363474 
363475 
363476 
363477 --
363478 INSERT INTO xla_diag_sources --line1
363479 (
363480         event_id
363481       , ledger_id
363482       , sla_ledger_id
363483       , description_language
363484       , object_name
363485       , object_type_code
363486       , line_number
363487       , source_application_id
363488       , source_type_code
363489       , source_code
363490       , source_value
363491       , source_meaning
363492       , created_by
363493       , creation_date
363494       , last_update_date
363495       , last_updated_by
363496       , last_update_login
363497       , program_update_date
363498       , program_application_id
363499       , program_id
363500       , request_id
363501 )
363502 SELECT  event_id
363503       , p_target_ledger_id
363504       , p_sla_ledger_id
363505       , p_language
363506       , object_name
363507       , object_type_code
363508       , line_number
363509       , source_application_id
363510       , source_type_code
363511       , source_code
363512       , SUBSTR(source_value,1,1996)
363513       , SUBSTR(source_meaning,1,200)
363514       , xla_environment_pkg.g_Usr_Id
363515       , TRUNC(SYSDATE)
363516       , TRUNC(SYSDATE)
363517       , xla_environment_pkg.g_Usr_Id
363518       , xla_environment_pkg.g_Login_Id
363519       , TRUNC(SYSDATE)
363520       , xla_environment_pkg.g_Prog_Appl_Id
363521       , xla_environment_pkg.g_Prog_Id
363522       , xla_environment_pkg.g_Req_Id
363523   FROM (
363524        SELECT xet.event_id                  event_id
363525             , l2.line_number                 line_number
363526             , CASE r
363527                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
363528                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
363529                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
363530                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
363531                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
363532                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
363533                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
363534                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
363535                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
363536                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
363537                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
363538                 
363539                ELSE null
363540               END                           object_name
363541             , CASE r
363542                 WHEN 1 THEN 'LINE' 
363543                 WHEN 2 THEN 'LINE' 
363544                 WHEN 3 THEN 'LINE' 
363545                 WHEN 4 THEN 'LINE' 
363546                 WHEN 5 THEN 'LINE' 
363547                 WHEN 6 THEN 'LINE' 
363548                 WHEN 7 THEN 'LINE' 
363549                 WHEN 8 THEN 'LINE' 
363550                 WHEN 9 THEN 'LINE' 
363551                 WHEN 10 THEN 'LINE' 
363552                 WHEN 11 THEN 'LINE' 
363553                 
363554                 ELSE null
363555               END                           object_type_code
363556             , CASE r
363557                 WHEN 1 THEN '707' 
363558                 WHEN 2 THEN '707' 
363559                 WHEN 3 THEN '707' 
363560                 WHEN 4 THEN '707' 
363561                 WHEN 5 THEN '707' 
363562                 WHEN 6 THEN '707' 
363563                 WHEN 7 THEN '707' 
363564                 WHEN 8 THEN '707' 
363565                 WHEN 9 THEN '707' 
363566                 WHEN 10 THEN '707' 
363567                 WHEN 11 THEN '707' 
363568                 
363569                 ELSE null
363570               END                           source_application_id
363571             , 'S'             source_type_code
363572             , CASE r
363573                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
363574                 WHEN 2 THEN 'COST_ELEMENT_ID' 
363575                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
363576                 WHEN 4 THEN 'CURRENCY_CODE' 
363577                 WHEN 5 THEN 'ENTERED_AMOUNT' 
363578                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
363579                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
363580                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
363581                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
363582                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
363583                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
363584                 
363585                 ELSE null
363586               END                           source_code
363587             , CASE r
363588                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
363589                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
363590                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
363591                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
363592                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
363593                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
363594                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
363595                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
363596                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
363597                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
363598                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
363599                 
363600                 ELSE null
363601               END                           source_value
363602             , CASE r
363603                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
363604                           1009615
363605                          ,TO_CHAR(l2.COST_ELEMENT_ID)
363606                          ,'COST_ELEMENT_ID'
363607                          ,'S'
363608                          ,707)
363609                 
363610                 ELSE null
363611               END               source_meaning
363612          FROM  xla_events_gt     xet  
363613         , CST_XLA_INV_LINES_V  l2
363614             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
363615         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
363616           AND xet.event_type_code = C_EVENT_TYPE_CODE
363617             AND l2.event_id          = xet.event_id
363618 
363619 )
363620 ;
363621 --
363622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
363623 
363624       trace
363625          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
363626          ,p_level    => C_LEVEL_STATEMENT
363627          ,p_module   => l_log_module);
363628 
363629 END IF;
363630 
363631 
363632 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
363633       trace
363634          (p_msg      => 'END of insert_sources_581'
363635          ,p_level    => C_LEVEL_PROCEDURE
363636          ,p_module   => l_log_module);
363637 END IF;
363638 EXCEPTION
363639   WHEN xla_exceptions_pkg.application_exception THEN
363640       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
363641             trace
363642                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
363643                ,p_level    => C_LEVEL_EXCEPTION
363644                ,p_module   => l_log_module);
363645       END IF;
363646       RAISE;
363647   WHEN OTHERS THEN
363648       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
363649             trace
363650                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
363651                ,p_level    => C_LEVEL_EXCEPTION
363652                ,p_module   => l_log_module);
363653        END IF;
363654        xla_exceptions_pkg.raise_message
363655            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_581');
363656 END insert_sources_581;
363657 --
363658 
363659 ---------------------------------------
363660 --
363661 -- PRIVATE FUNCTION
363662 --         EventType_581
363663 --
363664 ----------------------------------------
363665 --
363666 FUNCTION EventType_581
363667        (p_application_id         IN NUMBER
363668        ,p_base_ledger_id         IN NUMBER
363669        ,p_target_ledger_id       IN NUMBER
363670        ,p_language               IN VARCHAR2
363671        ,p_currency_code          IN VARCHAR2
363672        ,p_sla_ledger_id          IN NUMBER
363673        ,p_pad_start_date         IN DATE
363674        ,p_pad_end_date           IN DATE
363675        ,p_primary_ledger_id      IN NUMBER)
363676 RETURN BOOLEAN IS
363677 --
363678 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RMA_RCPT';
363679 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
363680 
363681 l_calculate_acctd_flag   VARCHAR2(1) :='N';
363682 l_calculate_g_l_flag     VARCHAR2(1) :='N';
363683 --
363684 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363685 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363686 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
363687 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
363688 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363689 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
363690 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
363691 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363692 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
363693 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
363694 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363695 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363696 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363697 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
363698 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
363699 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
363700 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
363701 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
363702 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
363703 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
363704 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
363705 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
363706 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
363707 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
363708 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
363709 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
363710 
363711 l_event_id                             NUMBER;
363712 l_previous_event_id                    NUMBER;
363713 l_first_event_id                       NUMBER;
363714 l_last_event_id                        NUMBER;
363715 
363716 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
363717 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
363718 --
363719 --
363720 l_result                    BOOLEAN := TRUE;
363721 l_rows                      NUMBER  := 1000;
363722 l_event_type_name           VARCHAR2(80) := 'Logical RMA Receipt';
363723 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
363724 l_description               VARCHAR2(4000);
363725 l_transaction_reversal      NUMBER;
363726 l_ae_header_id              NUMBER;
363727 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
363728 l_log_module                VARCHAR2(240);
363729 --
363730 l_acct_reversal_source      VARCHAR2(30);
363731 l_trx_reversal_source       VARCHAR2(30);
363732 
363733 l_continue_with_lines       BOOLEAN := TRUE;
363734 --
363735 l_acc_rev_gl_date_source    DATE;                      -- 4262811
363736 --
363737 type t_array_event_id is table of number index by binary_integer;
363738 
363739 l_rec_array_event                    t_rec_array_event;
363740 l_null_rec_array_event               t_rec_array_event;
363741 l_array_ae_header_id                 xla_number_array_type;
363742 l_actual_flag                        VARCHAR2(1) := NULL;
363743 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
363744 l_balance_type_code                  VARCHAR2(1) :=NULL;
363745 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
363746 
363747 --
363748 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
363749 --
363750 
363751 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
363752 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
363753 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
363754 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
363755 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
363756 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
363757 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
363758 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
363759 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
363760 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
363761 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
363762 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
363763 
363764 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
363765 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
363766 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
363767 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
363768 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
363769 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
363770 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
363771 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
363772 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
363773 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
363774 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
363775 
363776 l_array_source_1              t_array_source_1;
363777 l_array_source_2              t_array_source_2;
363778 l_array_source_3              t_array_source_3;
363779 l_array_source_4              t_array_source_4;
363780 l_array_source_5              t_array_source_5;
363781 l_array_source_41              t_array_source_41;
363782 l_array_source_42              t_array_source_42;
363783 l_array_source_43              t_array_source_43;
363784 l_array_source_44              t_array_source_44;
363785 l_array_source_45              t_array_source_45;
363786 l_array_source_85              t_array_source_85;
363787 l_array_source_85_meaning      t_array_lookup_meaning;
363788 l_array_source_114              t_array_source_114;
363789 l_array_source_114_meaning      t_array_lookup_meaning;
363790 
363791 l_array_source_11      t_array_source_11;
363792 l_array_source_15      t_array_source_15;
363793 l_array_source_84      t_array_source_84;
363794 l_array_source_88      t_array_source_88;
363795 l_array_source_91      t_array_source_91;
363796 l_array_source_92      t_array_source_92;
363797 l_array_source_93      t_array_source_93;
363798 l_array_source_94      t_array_source_94;
363799 l_array_source_95      t_array_source_95;
363800 l_array_source_97      t_array_source_97;
363801 l_array_source_108      t_array_source_108;
363802 
363803 --
363804 CURSOR header_cur
363805 IS
363806 SELECT /*+ leading(xet) cardinality(xet,1) */
363807 -- Event Type Code: LOG_RMA_RCPT
363808 -- Event Class Code: SALES_ORDER
363809     xet.entity_id
363810   , xet.legal_entity_id
363811   , xet.entity_code
363812   , xet.transaction_number
363813   , xet.event_id
363814   , xet.event_class_code
363815   , xet.event_type_code
363816   , xet.event_number
363817   , xet.event_date
363818   , xet.transaction_date
363819   , xet.reference_num_1
363820   , xet.reference_num_2
363821   , xet.reference_num_3
363822   , xet.reference_num_4
363823   , xet.reference_char_1
363824   , xet.reference_char_2
363825   , xet.reference_char_3
363826   , xet.reference_char_4
363827   , xet.reference_date_1
363828   , xet.reference_date_2
363829   , xet.reference_date_3
363830   , xet.reference_date_4
363831   , xet.event_created_by
363832   , xet.budgetary_control_flag 
363833   , h1.TRANSACTION_ID    source_1
363834   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
363835   , h3.TRANSACTION_QUANTITY    source_3
363836   , h3.TRANSACTION_UOM    source_4
363837   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
363838   , h6.PLA_MATERIAL_ACCOUNT    source_41
363839   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
363840   , h6.PLA_RESOURCE_ACCOUNT    source_43
363841   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
363842   , h6.PLA_OVERHEAD_ACCOUNT    source_45
363843   , h1.DISTRIBUTION_TYPE    source_85
363844   , fvl85.meaning   source_85_meaning
363845   , h1.TRANSFER_TO_GL_INDICATOR    source_114
363846   , fvl114.meaning   source_114_meaning
363847   FROM xla_events_gt     xet 
363848   , CST_XLA_INV_HEADERS_V  h1
363849   , CST_XLA_INV_REF_V  h3
363850   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
363851   , CST_XLA_INV_TXN_TYPES_REF_V  h5
363852   , CST_XLA_PLA_CATEGORY_REF_V  h6
363853   , fnd_lookup_values    fvl85
363854   , fnd_lookup_values    fvl114
363855  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
363856    and xet.event_type_code = C_EVENT_TYPE_CODE
363857    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
363858  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
363859 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
363860 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
363861   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
363862   AND fvl85.view_application_id(+) = 700
363863   AND fvl85.language(+)            = USERENV('LANG')
363864      AND fvl114.lookup_type(+)         = 'YES_NO'
363865   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
363866   AND fvl114.view_application_id(+) = 0
363867   AND fvl114.language(+)            = USERENV('LANG')
363868   
363869  ORDER BY event_id
363870 ;
363871 
363872 
363873 --
363874 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
363875 IS
363876 SELECT /*+ leading(xet) cardinality(xet,1) */
363877 -- Event Type Code: LOG_RMA_RCPT
363878 -- Event Class Code: SALES_ORDER
363879     xet.entity_id
363880    ,xet.legal_entity_id
363881    ,xet.entity_code
363882    ,xet.transaction_number
363883    ,xet.event_id
363884    ,xet.event_class_code
363885    ,xet.event_type_code
363886    ,xet.event_number
363887    ,xet.event_date
363888    ,xet.transaction_date
363889    ,xet.reference_num_1
363890    ,xet.reference_num_2
363891    ,xet.reference_num_3
363892    ,xet.reference_num_4
363893    ,xet.reference_char_1
363894    ,xet.reference_char_2
363895    ,xet.reference_char_3
363896    ,xet.reference_char_4
363897    ,xet.reference_date_1
363898    ,xet.reference_date_2
363899    ,xet.reference_date_3
363900    ,xet.reference_date_4
363901    ,xet.event_created_by
363902    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
363903   , l2.CODE_COMBINATION_ID    source_11
363904   , l2.COST_ELEMENT_ID    source_15
363905   , l2.DISTRIBUTION_IDENTIFIER    source_84
363906   , l2.CURRENCY_CODE    source_88
363907   , l2.ENTERED_AMOUNT    source_91
363908   , l2.CURRENCY_CONVERSION_DATE    source_92
363909   , l2.CURRENCY_CONVERSION_RATE    source_93
363910   , l2.CURRENCY_CONVERSION_TYPE    source_94
363911   , l2.ACCOUNTED_AMOUNT    source_95
363912   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
363913   , l2.L_ORGANIZATION_CODE    source_108
363914   FROM xla_events_gt     xet 
363915   , CST_XLA_INV_LINES_V  l2
363916  WHERE xet.event_id between x_first_event_id and x_last_event_id
363917    and xet.event_date between p_pad_start_date and p_pad_end_date
363918    and xet.event_type_code = C_EVENT_TYPE_CODE
363919    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
363920 ;
363921 
363922 --
363923 BEGIN
363924 IF g_log_enabled THEN
363925    l_log_module := C_DEFAULT_MODULE||'.EventType_581';
363926 END IF;
363927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
363928    trace
363929       (p_msg      => 'BEGIN of EventType_581'
363930       ,p_level    => C_LEVEL_PROCEDURE
363931       ,p_module   => l_log_module);
363932 END IF;
363933 
363934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
363935    trace
363936       (p_msg      => 'p_application_id = '||p_application_id||
363937                      ' - p_base_ledger_id = '||p_base_ledger_id||
363938                      ' - p_target_ledger_id  = '||p_target_ledger_id||
363939                      ' - p_language = '||p_language||
363940                      ' - p_currency_code = '||p_currency_code||
363941                      ' - p_sla_ledger_id = '||p_sla_ledger_id
363942       ,p_level    => C_LEVEL_STATEMENT
363943       ,p_module   => l_log_module);
363944 END IF;
363945 --
363946 -- initialze arrays
363947 --
363948 g_array_event.DELETE;
363949 l_rec_array_event := l_null_rec_array_event;
363950 --
363951 --------------------------------------
363952 -- 4262811 Initialze MPA Line Number
363953 --------------------------------------
363954 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
363955 
363956 --
363957 
363958 --
363959 OPEN header_cur;
363960 --
363961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
363962    trace
363963    (p_msg      => 'SQL - FETCH header_cur'
363964    ,p_level    => C_LEVEL_STATEMENT
363965    ,p_module   => l_log_module);
363966 END IF;
363967 --
363968 LOOP
363969 FETCH header_cur BULK COLLECT INTO
363970         l_array_entity_id
363971       , l_array_legal_entity_id
363972       , l_array_entity_code
363973       , l_array_transaction_num
363974       , l_array_event_id
363975       , l_array_class_code
363976       , l_array_event_type
363977       , l_array_event_number
363978       , l_array_event_date
363979       , l_array_transaction_date
363980       , l_array_reference_num_1
363981       , l_array_reference_num_2
363982       , l_array_reference_num_3
363983       , l_array_reference_num_4
363984       , l_array_reference_char_1
363985       , l_array_reference_char_2
363986       , l_array_reference_char_3
363987       , l_array_reference_char_4
363988       , l_array_reference_date_1
363989       , l_array_reference_date_2
363990       , l_array_reference_date_3
363991       , l_array_reference_date_4
363992       , l_array_event_created_by
363993       , l_array_budgetary_control_flag 
363994       , l_array_source_1
363995       , l_array_source_2
363996       , l_array_source_3
363997       , l_array_source_4
363998       , l_array_source_5
363999       , l_array_source_41
364000       , l_array_source_42
364001       , l_array_source_43
364002       , l_array_source_44
364003       , l_array_source_45
364004       , l_array_source_85
364005       , l_array_source_85_meaning
364006       , l_array_source_114
364007       , l_array_source_114_meaning
364008       LIMIT l_rows;
364009 --
364010 IF (C_LEVEL_EVENT >= g_log_level) THEN
364011    trace
364012    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
364013    ,p_level    => C_LEVEL_EVENT
364014    ,p_module   => l_log_module);
364015 END IF;
364016 --
364017 EXIT WHEN l_array_entity_id.COUNT = 0;
364018 
364019 -- initialize arrays
364020 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
364021 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
364022 
364023 --
364024 -- Bug 4458708
364025 --
364026 XLA_AE_LINES_PKG.g_LineNumber := 0;
364027 
364028 
364029 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
364030 g_last_hdr_idx := l_array_event_id.LAST;
364031 --
364032 -- loop for the headers. Each iteration is for each header extract row
364033 -- fetched in header cursor
364034 --
364035 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
364036 
364037 --
364038 -- set event info as cache for other routines to refer event attributes
364039 --
364040 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
364041    (p_application_id           => p_application_id
364042    ,p_primary_ledger_id        => p_primary_ledger_id
364043    ,p_base_ledger_id           => p_base_ledger_id
364044    ,p_target_ledger_id         => p_target_ledger_id
364045    ,p_entity_id                => l_array_entity_id(hdr_idx)
364046    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
364047    ,p_entity_code              => l_array_entity_code(hdr_idx)
364048    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
364049    ,p_event_id                 => l_array_event_id(hdr_idx)
364050    ,p_event_class_code         => l_array_class_code(hdr_idx)
364051    ,p_event_type_code          => l_array_event_type(hdr_idx)
364052    ,p_event_number             => l_array_event_number(hdr_idx)
364053    ,p_event_date               => l_array_event_date(hdr_idx)
364054    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
364055    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
364056    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
364057    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
364058    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
364059    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
364060    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
364061    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
364062    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
364063    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
364064    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
364065    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
364066    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
364067    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
364068    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
364069 
364070 --
364071 -- set the status of entry to C_VALID (0)
364072 --
364073 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
364074 
364075 --
364076 -- initialize a row for ae header
364077 --
364078 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
364079 
364080 l_event_id := l_array_event_id(hdr_idx);
364081 
364082 --
364083 -- storing the hdr_idx for event. May be used by line cursor.
364084 --
364085 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
364086 
364087 --
364088 -- store sources from header extract. This can be improved to
364089 -- store only those sources from header extract that may be used in lines
364090 --
364091 
364092 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
364093 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
364094 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
364095 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
364096 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
364097 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
364098 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
364099 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
364100 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
364101 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
364102 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
364103 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
364104 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
364105 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
364106 
364107 --
364108 -- initilaize the status of ae headers for diffrent balance types
364109 -- the status is initialised to C_NOT_CREATED (2)
364110 --
364111 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
364112 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
364113 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
364114 
364115 --
364116 -- call api to validate and store accounting attributes for header
364117 --
364118 
364119 ------------------------------------------------------------
364120 -- Accrual Reversal : to get date for Standard Source (NONE)
364121 ------------------------------------------------------------
364122 l_acc_rev_gl_date_source := NULL;
364123 
364124      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
364125       l_rec_acct_attrs.array_date_value(1) := 
364126 xla_ae_sources_pkg.GetSystemSourceDate(
364127    p_source_code           => 'XLA_REFERENCE_DATE_1'
364128  , p_source_type_code      => 'Y'
364129  , p_source_application_id =>  602
364130 );
364131      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
364132       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
364133 
364134 
364135 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
364136 
364137 XLA_AE_HEADER_PKG.SetJeCategoryName;
364138 
364139 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
364140 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
364141 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
364142 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
364143 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
364144 
364145 
364146 --
364147 xla_ae_header_pkg.SetHdrDescription(
364148    p_description => Description_1 (
364149    p_application_id => p_application_id 
364150  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
364151  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
364152  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
364153  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
364154  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
364155    )
364156 );
364157 --
364158 
364159 -- No header level analytical criteria
364160 
364161 --
364162 --accounting attribute enhancement, bug 3612931
364163 --
364164 l_trx_reversal_source := SUBSTR(NULL, 1,30);
364165 
364166 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
364167    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
364168 
364169    xla_accounting_err_pkg.build_message
364170       (p_appli_s_name            => 'XLA'
364171       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
364172       ,p_token_1                 => 'ACCT_ATTR_NAME'
364173       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
364174       ,p_token_2                 => 'PRODUCT_NAME'
364175       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
364176       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
364177       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
364178       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
364179 
364180 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
364181    --
364182    -- following sets the accounting attributes needed to reverse
364183    -- accounting for a distributeion
364184    --
364185    xla_ae_lines_pkg.SetTrxReversalAttrs
364186       (p_event_id              => l_event_id
364187       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
364188       ,p_trx_reversal_source   => l_trx_reversal_source);
364189 
364190 END IF;
364191 
364192 
364193 ----------------------------------------------------------------
364194 -- 4262811 -  update the header statuses to invalid in need be
364195 ----------------------------------------------------------------
364196 --
364197 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
364198 
364199 
364200   -----------------------------------------------
364201   -- No accrual reversal for the event class/type
364202   -----------------------------------------------
364203 ----------------------------------------------------------------
364204 
364205 --
364206 -- this ends the header loop iteration for one bulk fetch
364207 --
364208 END LOOP;
364209 
364210 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
364211 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
364212 
364213 --
364214 -- insert dummy rows into lines gt table that were created due to
364215 -- transaction reversals
364216 --
364217 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
364218    l_result := XLA_AE_LINES_PKG.InsertLines;
364219 END IF;
364220 
364221 --
364222 -- reset the temp_line_num for each set of events fetched from header
364223 -- cursor rather than doing it for each new event in line cursor
364224 -- Bug 3939231
364225 --
364226 xla_ae_lines_pkg.g_temp_line_num := 0;
364227 
364228 
364229 
364230 --
364231 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
364232 --
364233 --
364234 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
364235 
364236       trace
364237          (p_msg      => 'SQL - FETCH line_cur'
364238          ,p_level    => C_LEVEL_STATEMENT
364239          ,p_module   => l_log_module);
364240 
364241 END IF;
364242 --
364243 --
364244 LOOP
364245   --
364246   FETCH line_cur BULK COLLECT INTO
364247         l_array_entity_id
364248       , l_array_legal_entity_id
364249       , l_array_entity_code
364250       , l_array_transaction_num
364251       , l_array_event_id
364252       , l_array_class_code
364253       , l_array_event_type
364254       , l_array_event_number
364255       , l_array_event_date
364256       , l_array_transaction_date
364257       , l_array_reference_num_1
364258       , l_array_reference_num_2
364259       , l_array_reference_num_3
364260       , l_array_reference_num_4
364261       , l_array_reference_char_1
364262       , l_array_reference_char_2
364263       , l_array_reference_char_3
364264       , l_array_reference_char_4
364265       , l_array_reference_date_1
364266       , l_array_reference_date_2
364267       , l_array_reference_date_3
364268       , l_array_reference_date_4
364269       , l_array_event_created_by
364270       , l_array_budgetary_control_flag
364271       , l_array_extract_line_num 
364272       , l_array_source_11
364273       , l_array_source_15
364274       , l_array_source_84
364275       , l_array_source_88
364276       , l_array_source_91
364277       , l_array_source_92
364278       , l_array_source_93
364279       , l_array_source_94
364280       , l_array_source_95
364281       , l_array_source_97
364282       , l_array_source_108
364283       LIMIT l_rows;
364284 
364285   --
364286   IF (C_LEVEL_EVENT >= g_log_level) THEN
364287             trace
364288                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
364289                ,p_level    => C_LEVEL_EVENT
364290                ,p_module   => l_log_module);
364291   END IF;
364292   --
364293   EXIT WHEN l_array_entity_id.count = 0;
364294 
364295   XLA_AE_LINES_PKG.g_rec_lines := null;
364296 
364297 --
364298 -- Bug 4458708
364299 --
364300 XLA_AE_LINES_PKG.g_LineNumber := 0;
364301 --
364302 --
364303 
364304 FOR Idx IN 1..l_array_event_id.count LOOP
364305    --
364306    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
364307    --
364308    l_event_id := l_array_event_id(idx);  -- 5648433
364309 
364310    --
364311    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
364312    --
364313 
364314    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
364315              (g_array_event(l_event_id).array_value_num('header_index'))
364316          ,'N'
364317          ) <> 'Y'
364318    THEN
364319       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
364320          trace
364321             (p_msg      => 'Trancaction revesal option is not Y '
364322             ,p_level    => C_LEVEL_STATEMENT
364323             ,p_module   => l_log_module);
364324       END IF;
364325 
364326 --
364327 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
364328 --
364329 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
364330 --
364331 -- set event info as cache for other routines to refer event attributes
364332 --
364333 
364334 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
364335    l_previous_event_id := l_event_id;
364336 
364337    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
364338       (p_application_id           => p_application_id
364339       ,p_primary_ledger_id        => p_primary_ledger_id
364340       ,p_base_ledger_id           => p_base_ledger_id
364341       ,p_target_ledger_id         => p_target_ledger_id
364342       ,p_entity_id                => l_array_entity_id(Idx)
364343       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
364344       ,p_entity_code              => l_array_entity_code(Idx)
364345       ,p_transaction_num          => l_array_transaction_num(Idx)
364346       ,p_event_id                 => l_array_event_id(Idx)
364347       ,p_event_class_code         => l_array_class_code(Idx)
364348       ,p_event_type_code          => l_array_event_type(Idx)
364349       ,p_event_number             => l_array_event_number(Idx)
364350       ,p_event_date               => l_array_event_date(Idx)
364351       ,p_transaction_date         => l_array_transaction_date(Idx)
364352       ,p_reference_num_1          => l_array_reference_num_1(Idx)
364353       ,p_reference_num_2          => l_array_reference_num_2(Idx)
364354       ,p_reference_num_3          => l_array_reference_num_3(Idx)
364355       ,p_reference_num_4          => l_array_reference_num_4(Idx)
364356       ,p_reference_char_1         => l_array_reference_char_1(Idx)
364357       ,p_reference_char_2         => l_array_reference_char_2(Idx)
364358       ,p_reference_char_3         => l_array_reference_char_3(Idx)
364359       ,p_reference_char_4         => l_array_reference_char_4(Idx)
364360       ,p_reference_date_1         => l_array_reference_date_1(Idx)
364361       ,p_reference_date_2         => l_array_reference_date_2(Idx)
364362       ,p_reference_date_3         => l_array_reference_date_3(Idx)
364363       ,p_reference_date_4         => l_array_reference_date_4(Idx)
364364       ,p_event_created_by         => l_array_event_created_by(Idx)
364365       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
364366        --
364367 END IF;
364368 
364369 
364370 
364371 --
364372 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
364373 
364374 l_acct_reversal_source := SUBSTR(NULL, 1,30);
364375 
364376 IF l_continue_with_lines THEN
364377    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
364378       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
364379 
364380       xla_accounting_err_pkg.build_message
364381          (p_appli_s_name            => 'XLA'
364382          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
364383          ,p_token_1                 => 'LINE_NUMBER'
364384          ,p_value_1                 => l_array_extract_line_num(Idx)
364385          ,p_token_2                 => 'PRODUCT_NAME'
364386          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
364387          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
364388          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
364389          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
364390 
364391    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
364392       --
364393       -- following sets the accounting attributes needed to reverse
364394       -- accounting for a distributeion
364395       --
364396 
364397       --
364398       -- 5217187
364399       --
364400       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
364401       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
364402                                        g_array_event(l_event_id).array_value_num('header_index'));
364403       --
364404       --
364405 
364406       -- No reversal code generated
364407 
364408       xla_ae_lines_pkg.SetAcctReversalAttrs
364409          (p_event_id             => l_event_id
364410          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
364411          ,p_calculate_acctd_flag => l_calculate_acctd_flag
364412          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
364413    END IF;
364414 
364415    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
364416        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
364417 
364418 --
364419 AcctLineType_61 (
364420  p_application_id  => p_application_id
364421  ,p_event_id     => l_event_id
364422  ,p_calculate_acctd_flag => l_calculate_acctd_flag
364423  ,p_calculate_g_l_flag => l_calculate_g_l_flag
364424  ,p_actual_flag => l_actual_flag
364425  ,p_balance_type_code => l_balance_type_code
364426  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
364427  
364428  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
364429  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
364430  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
364431  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
364432  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
364433  , p_source_11 => l_array_source_11(Idx)
364434  , p_source_84 => l_array_source_84(Idx)
364435  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
364436  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
364437  , p_source_88 => l_array_source_88(Idx)
364438  , p_source_91 => l_array_source_91(Idx)
364439  , p_source_92 => l_array_source_92(Idx)
364440  , p_source_93 => l_array_source_93(Idx)
364441  , p_source_94 => l_array_source_94(Idx)
364442  , p_source_95 => l_array_source_95(Idx)
364443  , p_source_97 => l_array_source_97(Idx)
364444  );
364445 If(l_balance_type_code = 'A') THEN
364446   l_actual_gain_loss_ref := l_gain_or_loss_ref;
364447 END IF;
364448 
364449 --
364450 
364451 
364452 --
364453 AcctLineType_65 (
364454  p_application_id  => p_application_id
364455  ,p_event_id     => l_event_id
364456  ,p_calculate_acctd_flag => l_calculate_acctd_flag
364457  ,p_calculate_g_l_flag => l_calculate_g_l_flag
364458  ,p_actual_flag => l_actual_flag
364459  ,p_balance_type_code => l_balance_type_code
364460  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
364461  
364462  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
364463  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
364464  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
364465  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
364466  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
364467  , p_source_11 => l_array_source_11(Idx)
364468  , p_source_84 => l_array_source_84(Idx)
364469  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
364470  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
364471  , p_source_88 => l_array_source_88(Idx)
364472  , p_source_91 => l_array_source_91(Idx)
364473  , p_source_92 => l_array_source_92(Idx)
364474  , p_source_93 => l_array_source_93(Idx)
364475  , p_source_94 => l_array_source_94(Idx)
364476  , p_source_95 => l_array_source_95(Idx)
364477  , p_source_97 => l_array_source_97(Idx)
364478  );
364479 If(l_balance_type_code = 'A') THEN
364480   l_actual_gain_loss_ref := l_gain_or_loss_ref;
364481 END IF;
364482 
364483 --
364484 
364485 
364486 --
364487 AcctLineType_122 (
364488  p_application_id  => p_application_id
364489  ,p_event_id     => l_event_id
364490  ,p_calculate_acctd_flag => l_calculate_acctd_flag
364491  ,p_calculate_g_l_flag => l_calculate_g_l_flag
364492  ,p_actual_flag => l_actual_flag
364493  ,p_balance_type_code => l_balance_type_code
364494  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
364495  
364496  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
364497  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
364498  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
364499  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
364500  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
364501  , p_source_11 => l_array_source_11(Idx)
364502  , p_source_84 => l_array_source_84(Idx)
364503  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
364504  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
364505  , p_source_88 => l_array_source_88(Idx)
364506  , p_source_91 => l_array_source_91(Idx)
364507  , p_source_92 => l_array_source_92(Idx)
364508  , p_source_93 => l_array_source_93(Idx)
364509  , p_source_94 => l_array_source_94(Idx)
364510  , p_source_95 => l_array_source_95(Idx)
364511  , p_source_97 => l_array_source_97(Idx)
364512  );
364513 If(l_balance_type_code = 'A') THEN
364514   l_actual_gain_loss_ref := l_gain_or_loss_ref;
364515 END IF;
364516 
364517 --
364518 
364519 
364520 --
364521 AcctLineType_271 (
364522  p_application_id  => p_application_id
364523  ,p_event_id     => l_event_id
364524  ,p_calculate_acctd_flag => l_calculate_acctd_flag
364525  ,p_calculate_g_l_flag => l_calculate_g_l_flag
364526  ,p_actual_flag => l_actual_flag
364527  ,p_balance_type_code => l_balance_type_code
364528  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
364529  
364530  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
364531  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
364532  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
364533  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
364534  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
364535  , p_source_15 => l_array_source_15(Idx)
364536  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
364537  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
364538  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
364539  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
364540  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
364541  , p_source_84 => l_array_source_84(Idx)
364542  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
364543  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
364544  , p_source_88 => l_array_source_88(Idx)
364545  , p_source_91 => l_array_source_91(Idx)
364546  , p_source_92 => l_array_source_92(Idx)
364547  , p_source_93 => l_array_source_93(Idx)
364548  , p_source_94 => l_array_source_94(Idx)
364549  , p_source_95 => l_array_source_95(Idx)
364550  , p_source_97 => l_array_source_97(Idx)
364551  , p_source_108 => l_array_source_108(Idx)
364552  );
364553 If(l_balance_type_code = 'A') THEN
364554   l_actual_gain_loss_ref := l_gain_or_loss_ref;
364555 END IF;
364556 
364557 --
364558 
364559       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
364560       -- or secondary ledger that has different currency with primary
364561       -- or alc that is calculated by sla
364562       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
364563             (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'))
364564 
364565 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
364566 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
364567           AND (l_actual_flag = 'A')) THEN
364568         XLA_AE_LINES_PKG.CreateGainOrLossLines(
364569           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
364570          ,p_application_id   => p_application_id
364571          ,p_amb_context_code => 'DEFAULT'
364572          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
364573          ,p_event_class_code => C_EVENT_CLASS_CODE
364574          ,p_event_type_code  => C_EVENT_TYPE_CODE
364575          
364576          ,p_gain_ccid        => -1
364577          ,p_loss_ccid        => -1
364578 
364579          ,p_actual_flag      => l_actual_flag
364580          ,p_enc_flag         => null
364581          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
364582          ,p_enc_g_l_ref      => null
364583          );
364584       END IF;
364585    END IF;
364586 END IF;
364587 
364588    ELSE
364589       --
364590       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
364591       --
364592       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
364593          trace
364594             (p_msg      => 'Trancaction revesal option is Y'
364595             ,p_level    => C_LEVEL_STATEMENT
364596             ,p_module   => l_log_module);
364597       END IF;
364598    END IF;
364599 
364600 END LOOP;
364601 l_result := XLA_AE_LINES_PKG.InsertLines ;
364602 end loop;
364603 close line_cur;
364604 
364605 
364606 --
364607 -- insert headers into xla_ae_headers_gt table
364608 --
364609 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
364610 
364611 -- insert into errors table here.
364612 
364613 END LOOP;
364614 
364615 --
364616 -- 4865292
364617 --
364618 -- Compare g_hdr_extract_count with event count in
364619 -- CreateHeadersAndLines.
364620 --
364621 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
364622 
364623 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
364624    trace (p_msg     => '# rows extracted from header extract objects '
364625                     || ' (running total): '
364626                     || g_hdr_extract_count
364627          ,p_level   => C_LEVEL_STATEMENT
364628          ,p_module  => l_log_module);
364629 END IF;
364630 
364631 CLOSE header_cur;
364632 --
364633 
364634 --
364635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
364636    trace
364637       (p_msg      => 'END of EventType_581'
364638       ,p_level    => C_LEVEL_PROCEDURE
364639       ,p_module   => l_log_module);
364640 END IF;
364641 --
364642 RETURN l_result;
364643 EXCEPTION
364644 WHEN xla_exceptions_pkg.application_exception THEN
364645    
364646 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
364647 
364648    
364649 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
364650 
364651    RAISE;
364652 
364653 WHEN NO_DATA_FOUND THEN
364654 
364655 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
364656 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
364657 
364658 FOR header_record IN header_cur
364659 LOOP
364660     l_array_header_events(header_record.event_id) := header_record.event_id;
364661 END LOOP;
364662 
364663 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
364664 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
364665 
364666 fnd_file.put_line(fnd_file.LOG, '                    ');
364667 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
364668 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
364669 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
364670 
364671 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
364672 LOOP
364673 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
364674 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
364675         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
364676 	END IF;
364677 END LOOP;
364678 
364679 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
364680 fnd_file.put_line(fnd_file.LOG, '                    ');
364681 
364682 
364683 xla_exceptions_pkg.raise_message
364684       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_581');
364685 
364686 
364687 WHEN OTHERS THEN
364688    xla_exceptions_pkg.raise_message
364689       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_581');
364690 END EventType_581;
364691 --
364692 
364693 ---------------------------------------
364694 --
364695 -- PRIVATE PROCEDURE
364696 --         insert_sources_582
364697 --
364698 ----------------------------------------
364699 --
364700 PROCEDURE insert_sources_582(
364701                                 p_target_ledger_id       IN NUMBER
364702                               , p_language               IN VARCHAR2
364703                               , p_sla_ledger_id          IN NUMBER
364704                               , p_pad_start_date         IN DATE
364705                               , p_pad_end_date           IN DATE
364706                          )
364707 IS
364708 
364709 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_SO_ISSUE';
364710 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
364711 p_apps_owner                   VARCHAR2(30);
364712 l_log_module                   VARCHAR2(240);
364713 BEGIN
364714 IF g_log_enabled THEN
364715       l_log_module := C_DEFAULT_MODULE||'.insert_sources_582';
364716 END IF;
364717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
364718 
364719       trace
364720          (p_msg      => 'BEGIN of insert_sources_582'
364721          ,p_level    => C_LEVEL_PROCEDURE
364722          ,p_module   => l_log_module);
364723 
364724 END IF;
364725 
364726 -- select APPS owner
364727 SELECT oracle_username
364728   INTO p_apps_owner
364729   FROM fnd_oracle_userid
364730  WHERE read_only_flag = 'U'
364731 ;
364732 
364733 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
364734       trace
364735          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
364736                         ' - p_language = '||p_language||
364737                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
364738                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
364739                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
364740                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
364741          ,p_level    => C_LEVEL_STATEMENT
364742          ,p_module   => l_log_module);
364743 END IF;
364744 
364745 
364746 --
364747 INSERT INTO xla_diag_sources --hdr1
364748 (
364749         event_id
364750       , ledger_id
364751       , sla_ledger_id
364752       , description_language
364753       , object_name
364754       , object_type_code
364755       , line_number
364756       , source_application_id
364757       , source_type_code
364758       , source_code
364759       , source_value
364760       , source_meaning
364761       , created_by
364762       , creation_date
364763       , last_update_date
364764       , last_updated_by
364765       , last_update_login
364766       , program_update_date
364767       , program_application_id
364768       , program_id
364769       , request_id
364770 )
364771 SELECT
364772         event_id
364773       , p_target_ledger_id
364774       , p_sla_ledger_id
364775       , p_language
364776       , object_name
364777       , object_type_code
364778       , line_number
364779       , source_application_id
364780       , source_type_code
364781       , source_code
364782       , SUBSTR(source_value ,1,1996)
364783       , SUBSTR(source_meaning,1,200)
364784       , xla_environment_pkg.g_Usr_Id
364785       , TRUNC(SYSDATE)
364786       , TRUNC(SYSDATE)
364787       , xla_environment_pkg.g_Usr_Id
364788       , xla_environment_pkg.g_Login_Id
364789       , TRUNC(SYSDATE)
364790       , xla_environment_pkg.g_Prog_Appl_Id
364791       , xla_environment_pkg.g_Prog_Id
364792       , xla_environment_pkg.g_Req_Id
364793   FROM (
364794        SELECT xet.event_id                  event_id
364795             , 0                             line_number
364796             , CASE r
364797                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
364798                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
364799                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
364800                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
364801                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
364802                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
364803                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
364804                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
364805                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
364806                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
364807                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
364808                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
364809                 
364810                ELSE null
364811               END                           object_name
364812             , CASE r
364813                 WHEN 1 THEN 'HEADER' 
364814                 WHEN 2 THEN 'HEADER' 
364815                 WHEN 3 THEN 'HEADER' 
364816                 WHEN 4 THEN 'HEADER' 
364817                 WHEN 5 THEN 'HEADER' 
364818                 WHEN 6 THEN 'HEADER' 
364819                 WHEN 7 THEN 'HEADER' 
364820                 WHEN 8 THEN 'HEADER' 
364821                 WHEN 9 THEN 'HEADER' 
364822                 WHEN 10 THEN 'HEADER' 
364823                 WHEN 11 THEN 'HEADER' 
364824                 WHEN 12 THEN 'HEADER' 
364825                 
364826                 ELSE null
364827               END                           object_type_code
364828             , CASE r
364829                 WHEN 1 THEN '707' 
364830                 WHEN 2 THEN '707' 
364831                 WHEN 3 THEN '707' 
364832                 WHEN 4 THEN '707' 
364833                 WHEN 5 THEN '707' 
364834                 WHEN 6 THEN '707' 
364835                 WHEN 7 THEN '707' 
364836                 WHEN 8 THEN '707' 
364837                 WHEN 9 THEN '707' 
364838                 WHEN 10 THEN '707' 
364839                 WHEN 11 THEN '707' 
364840                 WHEN 12 THEN '707' 
364841                 
364842                 ELSE null
364843               END                           source_application_id
364844             , 'S'             source_type_code
364845             , CASE r
364846                 WHEN 1 THEN 'TRANSACTION_ID' 
364847                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
364848                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
364849                 WHEN 4 THEN 'TRANSACTION_UOM' 
364850                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
364851                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
364852                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
364853                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
364854                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
364855                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
364856                 WHEN 11 THEN 'DISTRIBUTION_TYPE' 
364857                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
364858                 
364859                 ELSE null
364860               END                           source_code
364861             , CASE r
364862                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
364863                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
364864                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
364865                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
364866                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
364867                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
364868                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
364869                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
364870                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
364871                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
364872                 WHEN 11 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
364873                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
364874                 
364875                 ELSE null
364876               END                           source_value
364877             , CASE r
364878                 WHEN 11 THEN fvl85.meaning
364879                 WHEN 12 THEN fvl114.meaning
364880                 
364881                 ELSE null
364882               END               source_meaning
364883         FROM xla_events_gt     xet  
364884       , CST_XLA_INV_HEADERS_V  h1
364885       , CST_XLA_INV_REF_V  h3
364886       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
364887       , CST_XLA_INV_TXN_TYPES_REF_V  h5
364888       , CST_XLA_PLA_CATEGORY_REF_V  h6
364889   , fnd_lookup_values    fvl85
364890   , fnd_lookup_values    fvl114
364891             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
364892        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
364893          AND xet.event_type_code = C_EVENT_TYPE_CODE
364894             AND h1.event_id = xet.event_id
364895  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
364896 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
364897 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
364898   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
364899   AND fvl85.view_application_id(+) = 700
364900   AND fvl85.language(+)            = USERENV('LANG')
364901      AND fvl114.lookup_type(+)         = 'YES_NO'
364902   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
364903   AND fvl114.view_application_id(+) = 0
364904   AND fvl114.language(+)            = USERENV('LANG')
364905   
364906 )
364907 ;
364908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
364909 
364910       trace
364911          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
364912          ,p_level    => C_LEVEL_STATEMENT
364913          ,p_module   => l_log_module);
364914 
364915 END IF;
364916 --
364917 
364918 
364919 
364920 --
364921 INSERT INTO xla_diag_sources --line1
364922 (
364923         event_id
364924       , ledger_id
364925       , sla_ledger_id
364926       , description_language
364927       , object_name
364928       , object_type_code
364929       , line_number
364930       , source_application_id
364931       , source_type_code
364932       , source_code
364933       , source_value
364934       , source_meaning
364935       , created_by
364936       , creation_date
364937       , last_update_date
364938       , last_updated_by
364939       , last_update_login
364940       , program_update_date
364941       , program_application_id
364942       , program_id
364943       , request_id
364944 )
364945 SELECT  event_id
364946       , p_target_ledger_id
364947       , p_sla_ledger_id
364948       , p_language
364949       , object_name
364950       , object_type_code
364951       , line_number
364952       , source_application_id
364953       , source_type_code
364954       , source_code
364955       , SUBSTR(source_value,1,1996)
364956       , SUBSTR(source_meaning,1,200)
364957       , xla_environment_pkg.g_Usr_Id
364958       , TRUNC(SYSDATE)
364959       , TRUNC(SYSDATE)
364960       , xla_environment_pkg.g_Usr_Id
364961       , xla_environment_pkg.g_Login_Id
364962       , TRUNC(SYSDATE)
364963       , xla_environment_pkg.g_Prog_Appl_Id
364964       , xla_environment_pkg.g_Prog_Id
364965       , xla_environment_pkg.g_Req_Id
364966   FROM (
364967        SELECT xet.event_id                  event_id
364968             , l2.line_number                 line_number
364969             , CASE r
364970                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
364971                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
364972                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
364973                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
364974                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
364975                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
364976                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
364977                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
364978                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
364979                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
364980                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
364981                 
364982                ELSE null
364983               END                           object_name
364984             , CASE r
364985                 WHEN 1 THEN 'LINE' 
364986                 WHEN 2 THEN 'LINE' 
364987                 WHEN 3 THEN 'LINE' 
364988                 WHEN 4 THEN 'LINE' 
364989                 WHEN 5 THEN 'LINE' 
364990                 WHEN 6 THEN 'LINE' 
364991                 WHEN 7 THEN 'LINE' 
364992                 WHEN 8 THEN 'LINE' 
364993                 WHEN 9 THEN 'LINE' 
364994                 WHEN 10 THEN 'LINE' 
364995                 WHEN 11 THEN 'LINE' 
364996                 
364997                 ELSE null
364998               END                           object_type_code
364999             , CASE r
365000                 WHEN 1 THEN '707' 
365001                 WHEN 2 THEN '707' 
365002                 WHEN 3 THEN '707' 
365003                 WHEN 4 THEN '707' 
365004                 WHEN 5 THEN '707' 
365005                 WHEN 6 THEN '707' 
365006                 WHEN 7 THEN '707' 
365007                 WHEN 8 THEN '707' 
365008                 WHEN 9 THEN '707' 
365009                 WHEN 10 THEN '707' 
365010                 WHEN 11 THEN '707' 
365011                 
365012                 ELSE null
365013               END                           source_application_id
365014             , 'S'             source_type_code
365015             , CASE r
365016                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
365017                 WHEN 2 THEN 'COST_ELEMENT_ID' 
365018                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
365019                 WHEN 4 THEN 'CURRENCY_CODE' 
365020                 WHEN 5 THEN 'ENTERED_AMOUNT' 
365021                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
365022                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
365023                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
365024                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
365025                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
365026                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
365027                 
365028                 ELSE null
365029               END                           source_code
365030             , CASE r
365031                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
365032                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
365033                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
365034                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
365035                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
365036                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
365037                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
365038                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
365039                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
365040                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
365041                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
365042                 
365043                 ELSE null
365044               END                           source_value
365045             , CASE r
365046                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
365047                           1009615
365048                          ,TO_CHAR(l2.COST_ELEMENT_ID)
365049                          ,'COST_ELEMENT_ID'
365050                          ,'S'
365051                          ,707)
365052                 
365053                 ELSE null
365054               END               source_meaning
365055          FROM  xla_events_gt     xet  
365056         , CST_XLA_INV_LINES_V  l2
365057             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
365058         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
365059           AND xet.event_type_code = C_EVENT_TYPE_CODE
365060             AND l2.event_id          = xet.event_id
365061 
365062 )
365063 ;
365064 --
365065 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
365066 
365067       trace
365068          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
365069          ,p_level    => C_LEVEL_STATEMENT
365070          ,p_module   => l_log_module);
365071 
365072 END IF;
365073 
365074 
365075 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
365076       trace
365077          (p_msg      => 'END of insert_sources_582'
365078          ,p_level    => C_LEVEL_PROCEDURE
365079          ,p_module   => l_log_module);
365080 END IF;
365081 EXCEPTION
365082   WHEN xla_exceptions_pkg.application_exception THEN
365083       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
365084             trace
365085                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
365086                ,p_level    => C_LEVEL_EXCEPTION
365087                ,p_module   => l_log_module);
365088       END IF;
365089       RAISE;
365090   WHEN OTHERS THEN
365091       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
365092             trace
365093                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
365094                ,p_level    => C_LEVEL_EXCEPTION
365095                ,p_module   => l_log_module);
365096        END IF;
365097        xla_exceptions_pkg.raise_message
365098            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_582');
365099 END insert_sources_582;
365100 --
365101 
365102 ---------------------------------------
365103 --
365104 -- PRIVATE FUNCTION
365105 --         EventType_582
365106 --
365107 ----------------------------------------
365108 --
365109 FUNCTION EventType_582
365110        (p_application_id         IN NUMBER
365111        ,p_base_ledger_id         IN NUMBER
365112        ,p_target_ledger_id       IN NUMBER
365113        ,p_language               IN VARCHAR2
365114        ,p_currency_code          IN VARCHAR2
365115        ,p_sla_ledger_id          IN NUMBER
365116        ,p_pad_start_date         IN DATE
365117        ,p_pad_end_date           IN DATE
365118        ,p_primary_ledger_id      IN NUMBER)
365119 RETURN BOOLEAN IS
365120 --
365121 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_SO_ISSUE';
365122 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
365123 
365124 l_calculate_acctd_flag   VARCHAR2(1) :='N';
365125 l_calculate_g_l_flag     VARCHAR2(1) :='N';
365126 --
365127 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365128 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365129 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
365130 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
365131 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365132 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
365133 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
365134 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365135 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
365136 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
365137 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365138 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365139 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365140 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
365141 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
365142 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
365143 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
365144 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
365145 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
365146 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
365147 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
365148 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
365149 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
365150 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
365151 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
365152 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
365153 
365154 l_event_id                             NUMBER;
365155 l_previous_event_id                    NUMBER;
365156 l_first_event_id                       NUMBER;
365157 l_last_event_id                        NUMBER;
365158 
365159 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
365160 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
365161 --
365162 --
365163 l_result                    BOOLEAN := TRUE;
365164 l_rows                      NUMBER  := 1000;
365165 l_event_type_name           VARCHAR2(80) := 'Logical Sales Order Issue';
365166 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
365167 l_description               VARCHAR2(4000);
365168 l_transaction_reversal      NUMBER;
365169 l_ae_header_id              NUMBER;
365170 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
365171 l_log_module                VARCHAR2(240);
365172 --
365173 l_acct_reversal_source      VARCHAR2(30);
365174 l_trx_reversal_source       VARCHAR2(30);
365175 
365176 l_continue_with_lines       BOOLEAN := TRUE;
365177 --
365178 l_acc_rev_gl_date_source    DATE;                      -- 4262811
365179 --
365180 type t_array_event_id is table of number index by binary_integer;
365181 
365182 l_rec_array_event                    t_rec_array_event;
365183 l_null_rec_array_event               t_rec_array_event;
365184 l_array_ae_header_id                 xla_number_array_type;
365185 l_actual_flag                        VARCHAR2(1) := NULL;
365186 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
365187 l_balance_type_code                  VARCHAR2(1) :=NULL;
365188 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
365189 
365190 --
365191 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
365192 --
365193 
365194 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
365195 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
365196 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
365197 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
365198 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
365199 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
365200 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
365201 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
365202 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
365203 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
365204 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
365205 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
365206 
365207 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
365208 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
365209 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
365210 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
365211 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
365212 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
365213 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
365214 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
365215 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
365216 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
365217 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
365218 
365219 l_array_source_1              t_array_source_1;
365220 l_array_source_2              t_array_source_2;
365221 l_array_source_3              t_array_source_3;
365222 l_array_source_4              t_array_source_4;
365223 l_array_source_5              t_array_source_5;
365224 l_array_source_41              t_array_source_41;
365225 l_array_source_42              t_array_source_42;
365226 l_array_source_43              t_array_source_43;
365227 l_array_source_44              t_array_source_44;
365228 l_array_source_45              t_array_source_45;
365229 l_array_source_85              t_array_source_85;
365230 l_array_source_85_meaning      t_array_lookup_meaning;
365231 l_array_source_114              t_array_source_114;
365232 l_array_source_114_meaning      t_array_lookup_meaning;
365233 
365234 l_array_source_11      t_array_source_11;
365235 l_array_source_15      t_array_source_15;
365236 l_array_source_84      t_array_source_84;
365237 l_array_source_88      t_array_source_88;
365238 l_array_source_91      t_array_source_91;
365239 l_array_source_92      t_array_source_92;
365240 l_array_source_93      t_array_source_93;
365241 l_array_source_94      t_array_source_94;
365242 l_array_source_95      t_array_source_95;
365243 l_array_source_97      t_array_source_97;
365244 l_array_source_108      t_array_source_108;
365245 
365246 --
365247 CURSOR header_cur
365248 IS
365249 SELECT /*+ leading(xet) cardinality(xet,1) */
365250 -- Event Type Code: LOG_SO_ISSUE
365251 -- Event Class Code: SALES_ORDER
365252     xet.entity_id
365253   , xet.legal_entity_id
365254   , xet.entity_code
365255   , xet.transaction_number
365256   , xet.event_id
365257   , xet.event_class_code
365258   , xet.event_type_code
365259   , xet.event_number
365260   , xet.event_date
365261   , xet.transaction_date
365262   , xet.reference_num_1
365263   , xet.reference_num_2
365264   , xet.reference_num_3
365265   , xet.reference_num_4
365266   , xet.reference_char_1
365267   , xet.reference_char_2
365268   , xet.reference_char_3
365269   , xet.reference_char_4
365270   , xet.reference_date_1
365271   , xet.reference_date_2
365272   , xet.reference_date_3
365273   , xet.reference_date_4
365274   , xet.event_created_by
365275   , xet.budgetary_control_flag 
365276   , h1.TRANSACTION_ID    source_1
365277   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
365278   , h3.TRANSACTION_QUANTITY    source_3
365279   , h3.TRANSACTION_UOM    source_4
365280   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
365281   , h6.PLA_MATERIAL_ACCOUNT    source_41
365282   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
365283   , h6.PLA_RESOURCE_ACCOUNT    source_43
365284   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
365285   , h6.PLA_OVERHEAD_ACCOUNT    source_45
365286   , h1.DISTRIBUTION_TYPE    source_85
365287   , fvl85.meaning   source_85_meaning
365288   , h1.TRANSFER_TO_GL_INDICATOR    source_114
365289   , fvl114.meaning   source_114_meaning
365290   FROM xla_events_gt     xet 
365291   , CST_XLA_INV_HEADERS_V  h1
365292   , CST_XLA_INV_REF_V  h3
365293   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
365294   , CST_XLA_INV_TXN_TYPES_REF_V  h5
365295   , CST_XLA_PLA_CATEGORY_REF_V  h6
365296   , fnd_lookup_values    fvl85
365297   , fnd_lookup_values    fvl114
365298  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
365299    and xet.event_type_code = C_EVENT_TYPE_CODE
365300    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
365301  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
365302 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
365303 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
365304   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
365305   AND fvl85.view_application_id(+) = 700
365306   AND fvl85.language(+)            = USERENV('LANG')
365307      AND fvl114.lookup_type(+)         = 'YES_NO'
365308   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
365309   AND fvl114.view_application_id(+) = 0
365310   AND fvl114.language(+)            = USERENV('LANG')
365311   
365312  ORDER BY event_id
365313 ;
365314 
365315 
365316 --
365317 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
365318 IS
365319 SELECT /*+ leading(xet) cardinality(xet,1) */
365320 -- Event Type Code: LOG_SO_ISSUE
365321 -- Event Class Code: SALES_ORDER
365322     xet.entity_id
365323    ,xet.legal_entity_id
365324    ,xet.entity_code
365325    ,xet.transaction_number
365326    ,xet.event_id
365327    ,xet.event_class_code
365328    ,xet.event_type_code
365329    ,xet.event_number
365330    ,xet.event_date
365331    ,xet.transaction_date
365332    ,xet.reference_num_1
365333    ,xet.reference_num_2
365334    ,xet.reference_num_3
365335    ,xet.reference_num_4
365336    ,xet.reference_char_1
365337    ,xet.reference_char_2
365338    ,xet.reference_char_3
365339    ,xet.reference_char_4
365340    ,xet.reference_date_1
365341    ,xet.reference_date_2
365342    ,xet.reference_date_3
365343    ,xet.reference_date_4
365344    ,xet.event_created_by
365345    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
365346   , l2.CODE_COMBINATION_ID    source_11
365347   , l2.COST_ELEMENT_ID    source_15
365348   , l2.DISTRIBUTION_IDENTIFIER    source_84
365349   , l2.CURRENCY_CODE    source_88
365350   , l2.ENTERED_AMOUNT    source_91
365351   , l2.CURRENCY_CONVERSION_DATE    source_92
365352   , l2.CURRENCY_CONVERSION_RATE    source_93
365353   , l2.CURRENCY_CONVERSION_TYPE    source_94
365354   , l2.ACCOUNTED_AMOUNT    source_95
365355   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
365356   , l2.L_ORGANIZATION_CODE    source_108
365357   FROM xla_events_gt     xet 
365358   , CST_XLA_INV_LINES_V  l2
365359  WHERE xet.event_id between x_first_event_id and x_last_event_id
365360    and xet.event_date between p_pad_start_date and p_pad_end_date
365361    and xet.event_type_code = C_EVENT_TYPE_CODE
365362    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
365363 ;
365364 
365365 --
365366 BEGIN
365367 IF g_log_enabled THEN
365368    l_log_module := C_DEFAULT_MODULE||'.EventType_582';
365369 END IF;
365370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
365371    trace
365372       (p_msg      => 'BEGIN of EventType_582'
365373       ,p_level    => C_LEVEL_PROCEDURE
365374       ,p_module   => l_log_module);
365375 END IF;
365376 
365377 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
365378    trace
365379       (p_msg      => 'p_application_id = '||p_application_id||
365380                      ' - p_base_ledger_id = '||p_base_ledger_id||
365381                      ' - p_target_ledger_id  = '||p_target_ledger_id||
365382                      ' - p_language = '||p_language||
365383                      ' - p_currency_code = '||p_currency_code||
365384                      ' - p_sla_ledger_id = '||p_sla_ledger_id
365385       ,p_level    => C_LEVEL_STATEMENT
365386       ,p_module   => l_log_module);
365387 END IF;
365388 --
365389 -- initialze arrays
365390 --
365391 g_array_event.DELETE;
365392 l_rec_array_event := l_null_rec_array_event;
365393 --
365394 --------------------------------------
365395 -- 4262811 Initialze MPA Line Number
365396 --------------------------------------
365397 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
365398 
365399 --
365400 
365401 --
365402 OPEN header_cur;
365403 --
365404 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
365405    trace
365406    (p_msg      => 'SQL - FETCH header_cur'
365407    ,p_level    => C_LEVEL_STATEMENT
365408    ,p_module   => l_log_module);
365409 END IF;
365410 --
365411 LOOP
365412 FETCH header_cur BULK COLLECT INTO
365413         l_array_entity_id
365414       , l_array_legal_entity_id
365415       , l_array_entity_code
365416       , l_array_transaction_num
365417       , l_array_event_id
365418       , l_array_class_code
365419       , l_array_event_type
365420       , l_array_event_number
365421       , l_array_event_date
365422       , l_array_transaction_date
365423       , l_array_reference_num_1
365424       , l_array_reference_num_2
365425       , l_array_reference_num_3
365426       , l_array_reference_num_4
365427       , l_array_reference_char_1
365428       , l_array_reference_char_2
365429       , l_array_reference_char_3
365430       , l_array_reference_char_4
365431       , l_array_reference_date_1
365432       , l_array_reference_date_2
365433       , l_array_reference_date_3
365434       , l_array_reference_date_4
365435       , l_array_event_created_by
365436       , l_array_budgetary_control_flag 
365437       , l_array_source_1
365438       , l_array_source_2
365439       , l_array_source_3
365440       , l_array_source_4
365441       , l_array_source_5
365442       , l_array_source_41
365443       , l_array_source_42
365444       , l_array_source_43
365445       , l_array_source_44
365446       , l_array_source_45
365447       , l_array_source_85
365448       , l_array_source_85_meaning
365449       , l_array_source_114
365450       , l_array_source_114_meaning
365451       LIMIT l_rows;
365452 --
365453 IF (C_LEVEL_EVENT >= g_log_level) THEN
365454    trace
365455    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
365456    ,p_level    => C_LEVEL_EVENT
365457    ,p_module   => l_log_module);
365458 END IF;
365459 --
365460 EXIT WHEN l_array_entity_id.COUNT = 0;
365461 
365462 -- initialize arrays
365463 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
365464 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
365465 
365466 --
365467 -- Bug 4458708
365468 --
365469 XLA_AE_LINES_PKG.g_LineNumber := 0;
365470 
365471 
365472 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
365473 g_last_hdr_idx := l_array_event_id.LAST;
365474 --
365475 -- loop for the headers. Each iteration is for each header extract row
365476 -- fetched in header cursor
365477 --
365478 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
365479 
365480 --
365481 -- set event info as cache for other routines to refer event attributes
365482 --
365483 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
365484    (p_application_id           => p_application_id
365485    ,p_primary_ledger_id        => p_primary_ledger_id
365486    ,p_base_ledger_id           => p_base_ledger_id
365487    ,p_target_ledger_id         => p_target_ledger_id
365488    ,p_entity_id                => l_array_entity_id(hdr_idx)
365489    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
365490    ,p_entity_code              => l_array_entity_code(hdr_idx)
365491    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
365492    ,p_event_id                 => l_array_event_id(hdr_idx)
365493    ,p_event_class_code         => l_array_class_code(hdr_idx)
365494    ,p_event_type_code          => l_array_event_type(hdr_idx)
365495    ,p_event_number             => l_array_event_number(hdr_idx)
365496    ,p_event_date               => l_array_event_date(hdr_idx)
365497    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
365498    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
365499    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
365500    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
365501    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
365502    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
365503    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
365504    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
365505    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
365506    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
365507    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
365508    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
365509    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
365510    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
365511    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
365512 
365513 --
365514 -- set the status of entry to C_VALID (0)
365515 --
365516 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
365517 
365518 --
365519 -- initialize a row for ae header
365520 --
365521 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
365522 
365523 l_event_id := l_array_event_id(hdr_idx);
365524 
365525 --
365526 -- storing the hdr_idx for event. May be used by line cursor.
365527 --
365528 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
365529 
365530 --
365531 -- store sources from header extract. This can be improved to
365532 -- store only those sources from header extract that may be used in lines
365533 --
365534 
365535 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
365536 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
365537 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
365538 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
365539 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
365540 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
365541 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
365542 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
365543 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
365544 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
365545 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
365546 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
365547 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
365548 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
365549 
365550 --
365551 -- initilaize the status of ae headers for diffrent balance types
365552 -- the status is initialised to C_NOT_CREATED (2)
365553 --
365554 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
365555 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
365556 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
365557 
365558 --
365559 -- call api to validate and store accounting attributes for header
365560 --
365561 
365562 ------------------------------------------------------------
365563 -- Accrual Reversal : to get date for Standard Source (NONE)
365564 ------------------------------------------------------------
365565 l_acc_rev_gl_date_source := NULL;
365566 
365567      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
365568       l_rec_acct_attrs.array_date_value(1) := 
365569 xla_ae_sources_pkg.GetSystemSourceDate(
365570    p_source_code           => 'XLA_REFERENCE_DATE_1'
365571  , p_source_type_code      => 'Y'
365572  , p_source_application_id =>  602
365573 );
365574      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
365575       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
365576 
365577 
365578 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
365579 
365580 XLA_AE_HEADER_PKG.SetJeCategoryName;
365581 
365582 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
365583 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
365584 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
365585 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
365586 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
365587 
365588 
365589 --
365590 xla_ae_header_pkg.SetHdrDescription(
365591    p_description => Description_1 (
365592    p_application_id => p_application_id 
365593  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
365594  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
365595  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
365596  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
365597  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
365598    )
365599 );
365600 --
365601 
365602 -- No header level analytical criteria
365603 
365604 --
365605 --accounting attribute enhancement, bug 3612931
365606 --
365607 l_trx_reversal_source := SUBSTR(NULL, 1,30);
365608 
365609 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
365610    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
365611 
365612    xla_accounting_err_pkg.build_message
365613       (p_appli_s_name            => 'XLA'
365614       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
365615       ,p_token_1                 => 'ACCT_ATTR_NAME'
365616       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
365617       ,p_token_2                 => 'PRODUCT_NAME'
365618       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
365619       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
365620       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
365621       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
365622 
365623 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
365624    --
365625    -- following sets the accounting attributes needed to reverse
365626    -- accounting for a distributeion
365627    --
365628    xla_ae_lines_pkg.SetTrxReversalAttrs
365629       (p_event_id              => l_event_id
365630       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
365631       ,p_trx_reversal_source   => l_trx_reversal_source);
365632 
365633 END IF;
365634 
365635 
365636 ----------------------------------------------------------------
365637 -- 4262811 -  update the header statuses to invalid in need be
365638 ----------------------------------------------------------------
365639 --
365640 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
365641 
365642 
365643   -----------------------------------------------
365644   -- No accrual reversal for the event class/type
365645   -----------------------------------------------
365646 ----------------------------------------------------------------
365647 
365648 --
365649 -- this ends the header loop iteration for one bulk fetch
365650 --
365651 END LOOP;
365652 
365653 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
365654 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
365655 
365656 --
365657 -- insert dummy rows into lines gt table that were created due to
365658 -- transaction reversals
365659 --
365660 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
365661    l_result := XLA_AE_LINES_PKG.InsertLines;
365662 END IF;
365663 
365664 --
365665 -- reset the temp_line_num for each set of events fetched from header
365666 -- cursor rather than doing it for each new event in line cursor
365667 -- Bug 3939231
365668 --
365669 xla_ae_lines_pkg.g_temp_line_num := 0;
365670 
365671 
365672 
365673 --
365674 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
365675 --
365676 --
365677 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
365678 
365679       trace
365680          (p_msg      => 'SQL - FETCH line_cur'
365681          ,p_level    => C_LEVEL_STATEMENT
365682          ,p_module   => l_log_module);
365683 
365684 END IF;
365685 --
365686 --
365687 LOOP
365688   --
365689   FETCH line_cur BULK COLLECT INTO
365690         l_array_entity_id
365691       , l_array_legal_entity_id
365692       , l_array_entity_code
365693       , l_array_transaction_num
365694       , l_array_event_id
365695       , l_array_class_code
365696       , l_array_event_type
365697       , l_array_event_number
365698       , l_array_event_date
365699       , l_array_transaction_date
365700       , l_array_reference_num_1
365701       , l_array_reference_num_2
365702       , l_array_reference_num_3
365703       , l_array_reference_num_4
365704       , l_array_reference_char_1
365705       , l_array_reference_char_2
365706       , l_array_reference_char_3
365707       , l_array_reference_char_4
365708       , l_array_reference_date_1
365709       , l_array_reference_date_2
365710       , l_array_reference_date_3
365711       , l_array_reference_date_4
365712       , l_array_event_created_by
365713       , l_array_budgetary_control_flag
365714       , l_array_extract_line_num 
365715       , l_array_source_11
365716       , l_array_source_15
365717       , l_array_source_84
365718       , l_array_source_88
365719       , l_array_source_91
365720       , l_array_source_92
365721       , l_array_source_93
365722       , l_array_source_94
365723       , l_array_source_95
365724       , l_array_source_97
365725       , l_array_source_108
365726       LIMIT l_rows;
365727 
365728   --
365729   IF (C_LEVEL_EVENT >= g_log_level) THEN
365730             trace
365731                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
365732                ,p_level    => C_LEVEL_EVENT
365733                ,p_module   => l_log_module);
365734   END IF;
365735   --
365736   EXIT WHEN l_array_entity_id.count = 0;
365737 
365738   XLA_AE_LINES_PKG.g_rec_lines := null;
365739 
365740 --
365741 -- Bug 4458708
365742 --
365743 XLA_AE_LINES_PKG.g_LineNumber := 0;
365744 --
365745 --
365746 
365747 FOR Idx IN 1..l_array_event_id.count LOOP
365748    --
365749    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
365750    --
365751    l_event_id := l_array_event_id(idx);  -- 5648433
365752 
365753    --
365754    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
365755    --
365756 
365757    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
365758              (g_array_event(l_event_id).array_value_num('header_index'))
365759          ,'N'
365760          ) <> 'Y'
365761    THEN
365762       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
365763          trace
365764             (p_msg      => 'Trancaction revesal option is not Y '
365765             ,p_level    => C_LEVEL_STATEMENT
365766             ,p_module   => l_log_module);
365767       END IF;
365768 
365769 --
365770 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
365771 --
365772 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
365773 --
365774 -- set event info as cache for other routines to refer event attributes
365775 --
365776 
365777 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
365778    l_previous_event_id := l_event_id;
365779 
365780    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
365781       (p_application_id           => p_application_id
365782       ,p_primary_ledger_id        => p_primary_ledger_id
365783       ,p_base_ledger_id           => p_base_ledger_id
365784       ,p_target_ledger_id         => p_target_ledger_id
365785       ,p_entity_id                => l_array_entity_id(Idx)
365786       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
365787       ,p_entity_code              => l_array_entity_code(Idx)
365788       ,p_transaction_num          => l_array_transaction_num(Idx)
365789       ,p_event_id                 => l_array_event_id(Idx)
365790       ,p_event_class_code         => l_array_class_code(Idx)
365791       ,p_event_type_code          => l_array_event_type(Idx)
365792       ,p_event_number             => l_array_event_number(Idx)
365793       ,p_event_date               => l_array_event_date(Idx)
365794       ,p_transaction_date         => l_array_transaction_date(Idx)
365795       ,p_reference_num_1          => l_array_reference_num_1(Idx)
365796       ,p_reference_num_2          => l_array_reference_num_2(Idx)
365797       ,p_reference_num_3          => l_array_reference_num_3(Idx)
365798       ,p_reference_num_4          => l_array_reference_num_4(Idx)
365799       ,p_reference_char_1         => l_array_reference_char_1(Idx)
365800       ,p_reference_char_2         => l_array_reference_char_2(Idx)
365801       ,p_reference_char_3         => l_array_reference_char_3(Idx)
365802       ,p_reference_char_4         => l_array_reference_char_4(Idx)
365803       ,p_reference_date_1         => l_array_reference_date_1(Idx)
365804       ,p_reference_date_2         => l_array_reference_date_2(Idx)
365805       ,p_reference_date_3         => l_array_reference_date_3(Idx)
365806       ,p_reference_date_4         => l_array_reference_date_4(Idx)
365807       ,p_event_created_by         => l_array_event_created_by(Idx)
365808       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
365809        --
365810 END IF;
365811 
365812 
365813 
365814 --
365815 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
365816 
365817 l_acct_reversal_source := SUBSTR(NULL, 1,30);
365818 
365819 IF l_continue_with_lines THEN
365820    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
365821       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
365822 
365823       xla_accounting_err_pkg.build_message
365824          (p_appli_s_name            => 'XLA'
365825          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
365826          ,p_token_1                 => 'LINE_NUMBER'
365827          ,p_value_1                 => l_array_extract_line_num(Idx)
365828          ,p_token_2                 => 'PRODUCT_NAME'
365829          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
365830          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
365831          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
365832          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
365833 
365834    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
365835       --
365836       -- following sets the accounting attributes needed to reverse
365837       -- accounting for a distributeion
365838       --
365839 
365840       --
365841       -- 5217187
365842       --
365843       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
365844       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
365845                                        g_array_event(l_event_id).array_value_num('header_index'));
365846       --
365847       --
365848 
365849       -- No reversal code generated
365850 
365851       xla_ae_lines_pkg.SetAcctReversalAttrs
365852          (p_event_id             => l_event_id
365853          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
365854          ,p_calculate_acctd_flag => l_calculate_acctd_flag
365855          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
365856    END IF;
365857 
365858    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
365859        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
365860 
365861 --
365862 AcctLineType_118 (
365863  p_application_id  => p_application_id
365864  ,p_event_id     => l_event_id
365865  ,p_calculate_acctd_flag => l_calculate_acctd_flag
365866  ,p_calculate_g_l_flag => l_calculate_g_l_flag
365867  ,p_actual_flag => l_actual_flag
365868  ,p_balance_type_code => l_balance_type_code
365869  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
365870  
365871  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
365872  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
365873  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
365874  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
365875  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
365876  , p_source_11 => l_array_source_11(Idx)
365877  , p_source_84 => l_array_source_84(Idx)
365878  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
365879  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
365880  , p_source_88 => l_array_source_88(Idx)
365881  , p_source_91 => l_array_source_91(Idx)
365882  , p_source_92 => l_array_source_92(Idx)
365883  , p_source_93 => l_array_source_93(Idx)
365884  , p_source_94 => l_array_source_94(Idx)
365885  , p_source_95 => l_array_source_95(Idx)
365886  , p_source_97 => l_array_source_97(Idx)
365887  );
365888 If(l_balance_type_code = 'A') THEN
365889   l_actual_gain_loss_ref := l_gain_or_loss_ref;
365890 END IF;
365891 
365892 --
365893 
365894 
365895 --
365896 AcctLineType_257 (
365897  p_application_id  => p_application_id
365898  ,p_event_id     => l_event_id
365899  ,p_calculate_acctd_flag => l_calculate_acctd_flag
365900  ,p_calculate_g_l_flag => l_calculate_g_l_flag
365901  ,p_actual_flag => l_actual_flag
365902  ,p_balance_type_code => l_balance_type_code
365903  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
365904  
365905  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
365906  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
365907  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
365908  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
365909  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
365910  , p_source_15 => l_array_source_15(Idx)
365911  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
365912  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
365913  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
365914  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
365915  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
365916  , p_source_84 => l_array_source_84(Idx)
365917  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
365918  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
365919  , p_source_88 => l_array_source_88(Idx)
365920  , p_source_91 => l_array_source_91(Idx)
365921  , p_source_92 => l_array_source_92(Idx)
365922  , p_source_93 => l_array_source_93(Idx)
365923  , p_source_94 => l_array_source_94(Idx)
365924  , p_source_95 => l_array_source_95(Idx)
365925  , p_source_97 => l_array_source_97(Idx)
365926  , p_source_108 => l_array_source_108(Idx)
365927  );
365928 If(l_balance_type_code = 'A') THEN
365929   l_actual_gain_loss_ref := l_gain_or_loss_ref;
365930 END IF;
365931 
365932 --
365933 
365934       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
365935       -- or secondary ledger that has different currency with primary
365936       -- or alc that is calculated by sla
365937       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
365938             (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'))
365939 
365940 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
365941 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
365942           AND (l_actual_flag = 'A')) THEN
365943         XLA_AE_LINES_PKG.CreateGainOrLossLines(
365944           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
365945          ,p_application_id   => p_application_id
365946          ,p_amb_context_code => 'DEFAULT'
365947          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
365948          ,p_event_class_code => C_EVENT_CLASS_CODE
365949          ,p_event_type_code  => C_EVENT_TYPE_CODE
365950          
365951          ,p_gain_ccid        => -1
365952          ,p_loss_ccid        => -1
365953 
365954          ,p_actual_flag      => l_actual_flag
365955          ,p_enc_flag         => null
365956          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
365957          ,p_enc_g_l_ref      => null
365958          );
365959       END IF;
365960    END IF;
365961 END IF;
365962 
365963    ELSE
365964       --
365965       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
365966       --
365967       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
365968          trace
365969             (p_msg      => 'Trancaction revesal option is Y'
365970             ,p_level    => C_LEVEL_STATEMENT
365971             ,p_module   => l_log_module);
365972       END IF;
365973    END IF;
365974 
365975 END LOOP;
365976 l_result := XLA_AE_LINES_PKG.InsertLines ;
365977 end loop;
365978 close line_cur;
365979 
365980 
365981 --
365982 -- insert headers into xla_ae_headers_gt table
365983 --
365984 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
365985 
365986 -- insert into errors table here.
365987 
365988 END LOOP;
365989 
365990 --
365991 -- 4865292
365992 --
365993 -- Compare g_hdr_extract_count with event count in
365994 -- CreateHeadersAndLines.
365995 --
365996 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
365997 
365998 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
365999    trace (p_msg     => '# rows extracted from header extract objects '
366000                     || ' (running total): '
366001                     || g_hdr_extract_count
366002          ,p_level   => C_LEVEL_STATEMENT
366003          ,p_module  => l_log_module);
366004 END IF;
366005 
366006 CLOSE header_cur;
366007 --
366008 
366009 --
366010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
366011    trace
366012       (p_msg      => 'END of EventType_582'
366013       ,p_level    => C_LEVEL_PROCEDURE
366014       ,p_module   => l_log_module);
366015 END IF;
366016 --
366017 RETURN l_result;
366018 EXCEPTION
366019 WHEN xla_exceptions_pkg.application_exception THEN
366020    
366021 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
366022 
366023    
366024 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
366025 
366026    RAISE;
366027 
366028 WHEN NO_DATA_FOUND THEN
366029 
366030 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
366031 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
366032 
366033 FOR header_record IN header_cur
366034 LOOP
366035     l_array_header_events(header_record.event_id) := header_record.event_id;
366036 END LOOP;
366037 
366038 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
366039 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
366040 
366041 fnd_file.put_line(fnd_file.LOG, '                    ');
366042 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
366043 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
366044 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
366045 
366046 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
366047 LOOP
366048 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
366049 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
366050         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
366051 	END IF;
366052 END LOOP;
366053 
366054 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
366055 fnd_file.put_line(fnd_file.LOG, '                    ');
366056 
366057 
366058 xla_exceptions_pkg.raise_message
366059       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_582');
366060 
366061 
366062 WHEN OTHERS THEN
366063    xla_exceptions_pkg.raise_message
366064       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_582');
366065 END EventType_582;
366066 --
366067 
366068 ---------------------------------------
366069 --
366070 -- PRIVATE PROCEDURE
366071 --         insert_sources_583
366072 --
366073 ----------------------------------------
366074 --
366075 PROCEDURE insert_sources_583(
366076                                 p_target_ledger_id       IN NUMBER
366077                               , p_language               IN VARCHAR2
366078                               , p_sla_ledger_id          IN NUMBER
366079                               , p_pad_start_date         IN DATE
366080                               , p_pad_end_date           IN DATE
366081                          )
366082 IS
366083 
366084 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOT_ALL';
366085 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LOT';
366086 p_apps_owner                   VARCHAR2(30);
366087 l_log_module                   VARCHAR2(240);
366088 BEGIN
366089 IF g_log_enabled THEN
366090       l_log_module := C_DEFAULT_MODULE||'.insert_sources_583';
366091 END IF;
366092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
366093 
366094       trace
366095          (p_msg      => 'BEGIN of insert_sources_583'
366096          ,p_level    => C_LEVEL_PROCEDURE
366097          ,p_module   => l_log_module);
366098 
366099 END IF;
366100 
366101 -- select APPS owner
366102 SELECT oracle_username
366103   INTO p_apps_owner
366104   FROM fnd_oracle_userid
366105  WHERE read_only_flag = 'U'
366106 ;
366107 
366108 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
366109       trace
366110          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
366111                         ' - p_language = '||p_language||
366112                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
366113                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
366114                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
366115                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
366116          ,p_level    => C_LEVEL_STATEMENT
366117          ,p_module   => l_log_module);
366118 END IF;
366119 
366120 
366121 --
366122 INSERT INTO xla_diag_sources --hdr2
366123 (
366124         event_id
366125       , ledger_id
366126       , sla_ledger_id
366127       , description_language
366128       , object_name
366129       , object_type_code
366130       , line_number
366131       , source_application_id
366132       , source_type_code
366133       , source_code
366134       , source_value
366135       , source_meaning
366136       , created_by
366137       , creation_date
366138       , last_update_date
366139       , last_updated_by
366140       , last_update_login
366141       , program_update_date
366142       , program_application_id
366143       , program_id
366144       , request_id
366145 )
366146 SELECT
366147         event_id
366148       , p_target_ledger_id
366149       , p_sla_ledger_id
366150       , p_language
366151       , object_name
366152       , object_type_code
366153       , line_number
366154       , source_application_id
366155       , source_type_code
366156       , source_code
366157       , SUBSTR(source_value ,1,1996)
366158       , SUBSTR(source_meaning ,1,200)
366159       , xla_environment_pkg.g_Usr_Id
366160       , TRUNC(SYSDATE)
366161       , TRUNC(SYSDATE)
366162       , xla_environment_pkg.g_Usr_Id
366163       , xla_environment_pkg.g_Login_Id
366164       , TRUNC(SYSDATE)
366165       , xla_environment_pkg.g_Prog_Appl_Id
366166       , xla_environment_pkg.g_Prog_Id
366167       , xla_environment_pkg.g_Req_Id
366168   FROM (
366169        SELECT xet.event_id                  event_id
366170             , 0                          line_number
366171             , CASE r
366172                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
366173                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
366174                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
366175                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
366176                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
366177                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
366178                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
366179                 
366180                ELSE null
366181               END                           object_name
366182             , CASE r
366183                 WHEN 1 THEN 'HEADER' 
366184                 WHEN 2 THEN 'HEADER' 
366185                 WHEN 3 THEN 'HEADER' 
366186                 WHEN 4 THEN 'HEADER' 
366187                 WHEN 5 THEN 'HEADER' 
366188                 WHEN 6 THEN 'HEADER' 
366189                 WHEN 7 THEN 'HEADER' 
366190                 
366191                 ELSE null
366192               END                           object_type_code
366193             , CASE r
366194                 WHEN 1 THEN '707' 
366195                 WHEN 2 THEN '707' 
366196                 WHEN 3 THEN '707' 
366197                 WHEN 4 THEN '707' 
366198                 WHEN 5 THEN '707' 
366199                 WHEN 6 THEN '707' 
366200                 WHEN 7 THEN '707' 
366201                 
366202                 ELSE null
366203               END                           source_application_id
366204             , 'S'             source_type_code
366205             , CASE r
366206                 WHEN 1 THEN 'TRANSACTION_ID' 
366207                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
366208                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
366209                 WHEN 4 THEN 'TRANSACTION_UOM' 
366210                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
366211                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
366212                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
366213                 
366214                 ELSE null
366215               END                           source_code
366216             , CASE r
366217                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
366218                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
366219                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
366220                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
366221                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
366222                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
366223                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
366224                 
366225                 ELSE null
366226               END                           source_value
366227             , CASE r
366228                 WHEN 6 THEN fvl85.meaning
366229                 WHEN 7 THEN fvl114.meaning
366230                 
366231                 ELSE null
366232               END               source_meaning
366233          FROM xla_events_gt     xet  
366234       , CST_XLA_INV_HEADERS_V  h1
366235       , CST_XLA_INV_REF_V  h3
366236       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
366237       , CST_XLA_INV_TXN_TYPES_REF_V  h5
366238   , fnd_lookup_values    fvl85
366239   , fnd_lookup_values    fvl114
366240              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
366241          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
366242            AND xet.event_class_code = C_EVENT_CLASS_CODE
366243               AND h1.event_id = xet.event_id
366244  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl85.lookup_type(+)         = 
366245 'CST_DISTRIBUTION_TYPE'
366246   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
366247   AND fvl85.view_application_id(+) = 700
366248   AND fvl85.language(+)            = USERENV('LANG')
366249      AND fvl114.lookup_type(+)         = 'YES_NO'
366250   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
366251   AND fvl114.view_application_id(+) = 0
366252   AND fvl114.language(+)            = USERENV('LANG')
366253   
366254 )
366255 ;
366256 --
366257 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
366258 
366259       trace
366260          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
366261          ,p_level    => C_LEVEL_STATEMENT
366262          ,p_module   => l_log_module);
366263 
366264 END IF;
366265 --
366266 
366267 
366268 
366269 --
366270 INSERT INTO xla_diag_sources  --line2
366271 (
366272         event_id
366273       , ledger_id
366274       , sla_ledger_id
366275       , description_language
366276       , object_name
366277       , object_type_code
366278       , line_number
366279       , source_application_id
366280       , source_type_code
366281       , source_code
366282       , source_value
366283       , source_meaning
366284       , created_by
366285       , creation_date
366286       , last_update_date
366287       , last_updated_by
366288       , last_update_login
366289       , program_update_date
366290       , program_application_id
366291       , program_id
366292       , request_id
366293 )
366294 SELECT  event_id
366295       , p_target_ledger_id
366296       , p_sla_ledger_id
366297       , p_language
366298       , object_name
366299       , object_type_code
366300       , line_number
366301       , source_application_id
366302       , source_type_code
366303       , source_code
366304       , SUBSTR(source_value,1,1996)
366305       , SUBSTR(source_meaning ,1,200)
366306       , xla_environment_pkg.g_Usr_Id
366307       , TRUNC(SYSDATE)
366308       , TRUNC(SYSDATE)
366309       , xla_environment_pkg.g_Usr_Id
366310       , xla_environment_pkg.g_Login_Id
366311       , TRUNC(SYSDATE)
366312       , xla_environment_pkg.g_Prog_Appl_Id
366313       , xla_environment_pkg.g_Prog_Id
366314       , xla_environment_pkg.g_Req_Id
366315   FROM (
366316        SELECT xet.event_id                  event_id
366317             , l2.line_number                 line_number
366318             , CASE r
366319                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
366320                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
366321                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
366322                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
366323                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
366324                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
366325                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
366326                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
366327                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
366328                 
366329                ELSE null
366330               END                           object_name
366331             , CASE r
366332                 WHEN 1 THEN 'LINE' 
366333                 WHEN 2 THEN 'LINE' 
366334                 WHEN 3 THEN 'LINE' 
366335                 WHEN 4 THEN 'LINE' 
366336                 WHEN 5 THEN 'LINE' 
366337                 WHEN 6 THEN 'LINE' 
366338                 WHEN 7 THEN 'LINE' 
366339                 WHEN 8 THEN 'LINE' 
366340                 WHEN 9 THEN 'LINE' 
366341                 
366342                 ELSE null
366343               END                           object_type_code
366344             , CASE r
366345                 WHEN 1 THEN '707' 
366346                 WHEN 2 THEN '707' 
366347                 WHEN 3 THEN '707' 
366348                 WHEN 4 THEN '707' 
366349                 WHEN 5 THEN '707' 
366350                 WHEN 6 THEN '707' 
366351                 WHEN 7 THEN '707' 
366352                 WHEN 8 THEN '707' 
366353                 WHEN 9 THEN '707' 
366354                 
366355                 ELSE null
366356               END                           source_application_id
366357             , 'S'             source_type_code
366358             , CASE r
366359                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
366360                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
366361                 WHEN 3 THEN 'CURRENCY_CODE' 
366362                 WHEN 4 THEN 'ENTERED_AMOUNT' 
366363                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
366364                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
366365                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
366366                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
366367                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
366368                 
366369                 ELSE null
366370               END                           source_code
366371             , CASE r
366372                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
366373                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
366374                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
366375                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
366376                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
366377                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
366378                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
366379                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
366380                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
366381                 
366382                 ELSE null
366383               END                           source_value
366384             , null              source_meaning
366385          FROM  xla_events_gt     xet  
366386         , CST_XLA_INV_LINES_V  l2
366387             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
366388         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
366389           AND xet.event_class_code = C_EVENT_CLASS_CODE
366390             AND l2.event_id          = xet.event_id
366391 
366392 )
366393 ;
366394 --
366395 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
366396 
366397       trace
366398          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
366399          ,p_level    => C_LEVEL_STATEMENT
366400          ,p_module   => l_log_module);
366401 
366402 END IF;
366403 
366404 
366405 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
366406       trace
366407          (p_msg      => 'END of insert_sources_583'
366408          ,p_level    => C_LEVEL_PROCEDURE
366409          ,p_module   => l_log_module);
366410 END IF;
366411 EXCEPTION
366412   WHEN xla_exceptions_pkg.application_exception THEN
366413       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
366414             trace
366415                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
366416                ,p_level    => C_LEVEL_EXCEPTION
366417                ,p_module   => l_log_module);
366418       END IF;
366419       RAISE;
366420   WHEN OTHERS THEN
366421       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
366422             trace
366423                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
366424                ,p_level    => C_LEVEL_EXCEPTION
366425                ,p_module   => l_log_module);
366426        END IF;
366427        xla_exceptions_pkg.raise_message
366428            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_583');
366429 END insert_sources_583;
366430 --
366431 
366432 ---------------------------------------
366433 --
366434 -- PRIVATE FUNCTION
366435 --         EventClass_583
366436 --
366437 ----------------------------------------
366438 --
366439 FUNCTION EventClass_583
366440        (p_application_id         IN NUMBER
366441        ,p_base_ledger_id         IN NUMBER
366442        ,p_target_ledger_id       IN NUMBER
366443        ,p_language               IN VARCHAR2
366444        ,p_currency_code          IN VARCHAR2
366445        ,p_sla_ledger_id          IN NUMBER
366446        ,p_pad_start_date         IN DATE
366447        ,p_pad_end_date           IN DATE
366448        ,p_primary_ledger_id      IN NUMBER)
366449 RETURN BOOLEAN IS
366450 --
366451 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOT_ALL';
366452 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LOT';
366453 
366454 l_calculate_acctd_flag   VARCHAR2(1) :='N';
366455 l_calculate_g_l_flag     VARCHAR2(1) :='N';
366456 --
366457 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366458 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366459 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
366460 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
366461 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366462 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
366463 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
366464 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366465 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
366466 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
366467 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366468 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366469 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366470 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
366471 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
366472 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
366473 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
366474 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
366475 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
366476 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
366477 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
366478 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
366479 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
366480 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
366481 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
366482 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
366483 
366484 l_event_id                             NUMBER;
366485 l_previous_event_id                    NUMBER;
366486 l_first_event_id                       NUMBER;
366487 l_last_event_id                        NUMBER;
366488 
366489 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
366490 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
366491 --
366492 --
366493 l_result                    BOOLEAN := TRUE;
366494 l_rows                      NUMBER  := 1000;
366495 l_event_type_name           VARCHAR2(80) := 'All';
366496 l_event_class_name          VARCHAR2(80) := 'WIP Material Lot';
366497 l_description               VARCHAR2(4000);
366498 l_transaction_reversal      NUMBER;
366499 l_ae_header_id              NUMBER;
366500 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
366501 l_log_module                VARCHAR2(240);
366502 --
366503 l_acct_reversal_source      VARCHAR2(30);
366504 l_trx_reversal_source       VARCHAR2(30);
366505 
366506 l_continue_with_lines       BOOLEAN := TRUE;
366507 --
366508 l_acc_rev_gl_date_source    DATE;                      -- 4262811
366509 --
366510 type t_array_event_id is table of number index by binary_integer;
366511 
366512 l_rec_array_event                    t_rec_array_event;
366513 l_null_rec_array_event               t_rec_array_event;
366514 l_array_ae_header_id                 xla_number_array_type;
366515 l_actual_flag                        VARCHAR2(1) := NULL;
366516 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
366517 l_balance_type_code                  VARCHAR2(1) :=NULL;
366518 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
366519 
366520 --
366521 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
366522 --
366523 
366524 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
366525 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
366526 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
366527 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
366528 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
366529 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
366530 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
366531 
366532 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
366533 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
366534 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
366535 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
366536 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
366537 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
366538 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
366539 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
366540 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
366541 
366542 l_array_source_1              t_array_source_1;
366543 l_array_source_2              t_array_source_2;
366544 l_array_source_3              t_array_source_3;
366545 l_array_source_4              t_array_source_4;
366546 l_array_source_5              t_array_source_5;
366547 l_array_source_85              t_array_source_85;
366548 l_array_source_85_meaning      t_array_lookup_meaning;
366549 l_array_source_114              t_array_source_114;
366550 l_array_source_114_meaning      t_array_lookup_meaning;
366551 
366552 l_array_source_11      t_array_source_11;
366553 l_array_source_84      t_array_source_84;
366554 l_array_source_88      t_array_source_88;
366555 l_array_source_91      t_array_source_91;
366556 l_array_source_92      t_array_source_92;
366557 l_array_source_93      t_array_source_93;
366558 l_array_source_94      t_array_source_94;
366559 l_array_source_95      t_array_source_95;
366560 l_array_source_97      t_array_source_97;
366561 
366562 --
366563 CURSOR header_cur
366564 IS
366565 SELECT /*+ leading(xet) cardinality(xet,1) */
366566 -- Event Class Code: LOT
366567     xet.entity_id
366568    ,xet.legal_entity_id
366569    ,xet.entity_code
366570    ,xet.transaction_number
366571    ,xet.event_id
366572    ,xet.event_class_code
366573    ,xet.event_type_code
366574    ,xet.event_number
366575    ,xet.event_date
366576    ,xet.transaction_date
366577    ,xet.reference_num_1
366578    ,xet.reference_num_2
366579    ,xet.reference_num_3
366580    ,xet.reference_num_4
366581    ,xet.reference_char_1
366582    ,xet.reference_char_2
366583    ,xet.reference_char_3
366584    ,xet.reference_char_4
366585    ,xet.reference_date_1
366586    ,xet.reference_date_2
366587    ,xet.reference_date_3
366588    ,xet.reference_date_4
366589    ,xet.event_created_by
366590    ,xet.budgetary_control_flag 
366591   , h1.TRANSACTION_ID    source_1
366592   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
366593   , h3.TRANSACTION_QUANTITY    source_3
366594   , h3.TRANSACTION_UOM    source_4
366595   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
366596   , h1.DISTRIBUTION_TYPE    source_85
366597   , fvl85.meaning   source_85_meaning
366598   , h1.TRANSFER_TO_GL_INDICATOR    source_114
366599   , fvl114.meaning   source_114_meaning
366600   FROM xla_events_gt     xet 
366601   , CST_XLA_INV_HEADERS_V  h1
366602   , CST_XLA_INV_REF_V  h3
366603   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
366604   , CST_XLA_INV_TXN_TYPES_REF_V  h5
366605   , fnd_lookup_values    fvl85
366606   , fnd_lookup_values    fvl114
366607  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
366608    and xet.event_class_code = C_EVENT_CLASS_CODE
366609    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
366610  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl85.lookup_type(+)         = 
366611 'CST_DISTRIBUTION_TYPE'
366612   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
366613   AND fvl85.view_application_id(+) = 700
366614   AND fvl85.language(+)            = USERENV('LANG')
366615      AND fvl114.lookup_type(+)         = 'YES_NO'
366616   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
366617   AND fvl114.view_application_id(+) = 0
366618   AND fvl114.language(+)            = USERENV('LANG')
366619   
366620  ORDER BY event_id
366621 ;
366622 
366623 
366624 --
366625 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
366626 IS
366627 SELECT  /*+ leading(xet) cardinality(xet,1) */
366628 -- Event Class Code: LOT
366629     xet.entity_id
366630    ,xet.legal_entity_id
366631    ,xet.entity_code
366632    ,xet.transaction_number
366633    ,xet.event_id
366634    ,xet.event_class_code
366635    ,xet.event_type_code
366636    ,xet.event_number
366637    ,xet.event_date
366638    ,xet.transaction_date
366639    ,xet.reference_num_1
366640    ,xet.reference_num_2
366641    ,xet.reference_num_3
366642    ,xet.reference_num_4
366643    ,xet.reference_char_1
366644    ,xet.reference_char_2
366645    ,xet.reference_char_3
366646    ,xet.reference_char_4
366647    ,xet.reference_date_1
366648    ,xet.reference_date_2
366649    ,xet.reference_date_3
366650    ,xet.reference_date_4
366651    ,xet.event_created_by
366652    ,xet.budgetary_control_flag
366653  , l2.LINE_NUMBER  
366654   , l2.CODE_COMBINATION_ID    source_11
366655   , l2.DISTRIBUTION_IDENTIFIER    source_84
366656   , l2.CURRENCY_CODE    source_88
366657   , l2.ENTERED_AMOUNT    source_91
366658   , l2.CURRENCY_CONVERSION_DATE    source_92
366659   , l2.CURRENCY_CONVERSION_RATE    source_93
366660   , l2.CURRENCY_CONVERSION_TYPE    source_94
366661   , l2.ACCOUNTED_AMOUNT    source_95
366662   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
366663   FROM xla_events_gt     xet 
366664   , CST_XLA_INV_LINES_V  l2
366665  WHERE xet.event_id between x_first_event_id and x_last_event_id
366666    and xet.event_date between p_pad_start_date and p_pad_end_date
366667    and xet.event_class_code = C_EVENT_CLASS_CODE
366668    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
366669 ;
366670 
366671 --
366672 BEGIN
366673 IF g_log_enabled THEN
366674    l_log_module := C_DEFAULT_MODULE||'.EventClass_583';
366675 END IF;
366676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
366677    trace
366678       (p_msg      => 'BEGIN of EventClass_583'
366679       ,p_level    => C_LEVEL_PROCEDURE
366680       ,p_module   => l_log_module);
366681 END IF;
366682 
366683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
366684    trace
366685       (p_msg      => 'p_application_id = '||p_application_id||
366686                      ' - p_base_ledger_id = '||p_base_ledger_id||
366687                      ' - p_target_ledger_id  = '||p_target_ledger_id||
366688                      ' - p_language = '||p_language||
366689                      ' - p_currency_code = '||p_currency_code||
366690                      ' - p_sla_ledger_id = '||p_sla_ledger_id
366691       ,p_level    => C_LEVEL_STATEMENT
366692       ,p_module   => l_log_module);
366693 END IF;
366694 --
366695 -- initialze arrays
366696 --
366697 g_array_event.DELETE;
366698 l_rec_array_event := l_null_rec_array_event;
366699 --
366700 --------------------------------------
366701 -- 4262811 Initialze MPA Line Number
366702 --------------------------------------
366703 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
366704 
366705 --
366706 
366707 --
366708 OPEN header_cur;
366709 --
366710 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
366711    trace
366712    (p_msg      => 'SQL - FETCH header_cur'
366713    ,p_level    => C_LEVEL_STATEMENT
366714    ,p_module   => l_log_module);
366715 END IF;
366716 --
366717 LOOP
366718 FETCH header_cur BULK COLLECT INTO
366719         l_array_entity_id
366720       , l_array_legal_entity_id
366721       , l_array_entity_code
366722       , l_array_transaction_num
366723       , l_array_event_id
366724       , l_array_class_code
366725       , l_array_event_type
366726       , l_array_event_number
366727       , l_array_event_date
366728       , l_array_transaction_date
366729       , l_array_reference_num_1
366730       , l_array_reference_num_2
366731       , l_array_reference_num_3
366732       , l_array_reference_num_4
366733       , l_array_reference_char_1
366734       , l_array_reference_char_2
366735       , l_array_reference_char_3
366736       , l_array_reference_char_4
366737       , l_array_reference_date_1
366738       , l_array_reference_date_2
366739       , l_array_reference_date_3
366740       , l_array_reference_date_4
366741       , l_array_event_created_by
366742       , l_array_budgetary_control_flag 
366743       , l_array_source_1
366744       , l_array_source_2
366745       , l_array_source_3
366746       , l_array_source_4
366747       , l_array_source_5
366748       , l_array_source_85
366749       , l_array_source_85_meaning
366750       , l_array_source_114
366751       , l_array_source_114_meaning
366752       LIMIT l_rows;
366753 --
366754 IF (C_LEVEL_EVENT >= g_log_level) THEN
366755    trace
366756    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
366757    ,p_level    => C_LEVEL_EVENT
366758    ,p_module   => l_log_module);
366759 END IF;
366760 --
366761 EXIT WHEN l_array_entity_id.COUNT = 0;
366762 
366763 -- initialize arrays
366764 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
366765 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
366766 
366767 --
366768 -- Bug 4458708
366769 --
366770 XLA_AE_LINES_PKG.g_LineNumber := 0;
366771 
366772 
366773 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
366774 g_last_hdr_idx := l_array_event_id.LAST;
366775 --
366776 -- loop for the headers. Each iteration is for each header extract row
366777 -- fetched in header cursor
366778 --
366779 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
366780 
366781 --
366782 -- set event info as cache for other routines to refer event attributes
366783 --
366784 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
366785    (p_application_id           => p_application_id
366786    ,p_primary_ledger_id        => p_primary_ledger_id
366787    ,p_base_ledger_id           => p_base_ledger_id
366788    ,p_target_ledger_id         => p_target_ledger_id
366789    ,p_entity_id                => l_array_entity_id(hdr_idx)
366790    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
366791    ,p_entity_code              => l_array_entity_code(hdr_idx)
366792    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
366793    ,p_event_id                 => l_array_event_id(hdr_idx)
366794    ,p_event_class_code         => l_array_class_code(hdr_idx)
366795    ,p_event_type_code          => l_array_event_type(hdr_idx)
366796    ,p_event_number             => l_array_event_number(hdr_idx)
366797    ,p_event_date               => l_array_event_date(hdr_idx)
366798    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
366799    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
366800    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
366801    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
366802    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
366803    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
366804    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
366805    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
366806    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
366807    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
366808    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
366809    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
366810    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
366811    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
366812    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
366813 
366814 --
366815 -- set the status of entry to C_VALID (0)
366816 --
366817 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
366818 
366819 --
366820 -- initialize a row for ae header
366821 --
366822 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
366823 
366824 l_event_id := l_array_event_id(hdr_idx);
366825 
366826 --
366827 -- storing the hdr_idx for event. May be used by line cursor.
366828 --
366829 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
366830 
366831 --
366832 -- store sources from header extract. This can be improved to
366833 -- store only those sources from header extract that may be used in lines
366834 --
366835 
366836 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
366837 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
366838 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
366839 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
366840 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
366841 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
366842 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
366843 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
366844 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
366845 
366846 --
366847 -- initilaize the status of ae headers for diffrent balance types
366848 -- the status is initialised to C_NOT_CREATED (2)
366849 --
366850 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
366851 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
366852 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
366853 
366854 --
366855 -- call api to validate and store accounting attributes for header
366856 --
366857 
366858 ------------------------------------------------------------
366859 -- Accrual Reversal : to get date for Standard Source (NONE)
366860 ------------------------------------------------------------
366861 l_acc_rev_gl_date_source := NULL;
366862 
366863      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
366864       l_rec_acct_attrs.array_date_value(1) := 
366865 xla_ae_sources_pkg.GetSystemSourceDate(
366866    p_source_code           => 'XLA_REFERENCE_DATE_1'
366867  , p_source_type_code      => 'Y'
366868  , p_source_application_id =>  602
366869 );
366870      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
366871       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
366872 
366873 
366874 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
366875 
366876 XLA_AE_HEADER_PKG.SetJeCategoryName;
366877 
366878 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
366879 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
366880 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
366881 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
366882 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
366883 
366884 
366885 --
366886 xla_ae_header_pkg.SetHdrDescription(
366887    p_description => Description_1 (
366888    p_application_id => p_application_id 
366889  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
366890  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
366891  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
366892  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
366893  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
366894    )
366895 );
366896 --
366897 
366898 -- No header level analytical criteria
366899 
366900 --
366901 --accounting attribute enhancement, bug 3612931
366902 --
366903 l_trx_reversal_source := SUBSTR(NULL, 1,30);
366904 
366905 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
366906    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
366907 
366908    xla_accounting_err_pkg.build_message
366909       (p_appli_s_name            => 'XLA'
366910       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
366911       ,p_token_1                 => 'ACCT_ATTR_NAME'
366912       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
366913       ,p_token_2                 => 'PRODUCT_NAME'
366914       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
366915       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
366916       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
366917       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
366918 
366919 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
366920    --
366921    -- following sets the accounting attributes needed to reverse
366922    -- accounting for a distributeion
366923    --
366924    xla_ae_lines_pkg.SetTrxReversalAttrs
366925       (p_event_id              => l_event_id
366926       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
366927       ,p_trx_reversal_source   => l_trx_reversal_source);
366928 
366929 END IF;
366930 
366931 
366932 ----------------------------------------------------------------
366933 -- 4262811 -  update the header statuses to invalid in need be
366934 ----------------------------------------------------------------
366935 --
366936 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
366937 
366938 
366939   -----------------------------------------------
366940   -- No accrual reversal for the event class/type
366941   -----------------------------------------------
366942 ----------------------------------------------------------------
366943 
366944 --
366945 -- this ends the header loop iteration for one bulk fetch
366946 --
366947 END LOOP;
366948 
366949 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
366950 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
366951 
366952 --
366953 -- insert dummy rows into lines gt table that were created due to
366954 -- transaction reversals
366955 --
366956 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
366957    l_result := XLA_AE_LINES_PKG.InsertLines;
366958 END IF;
366959 
366960 --
366961 -- reset the temp_line_num for each set of events fetched from header
366962 -- cursor rather than doing it for each new event in line cursor
366963 -- Bug 3939231
366964 --
366965 xla_ae_lines_pkg.g_temp_line_num := 0;
366966 
366967 
366968 
366969 --
366970 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
366971 --
366972 --
366973 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
366974 
366975       trace
366976          (p_msg      => 'SQL - FETCH line_cur'
366977          ,p_level    => C_LEVEL_STATEMENT
366978          ,p_module   => l_log_module);
366979 
366980 END IF;
366981 --
366982 --
366983 LOOP
366984   --
366985   FETCH line_cur BULK COLLECT INTO
366986         l_array_entity_id
366987       , l_array_legal_entity_id
366988       , l_array_entity_code
366989       , l_array_transaction_num
366990       , l_array_event_id
366991       , l_array_class_code
366992       , l_array_event_type
366993       , l_array_event_number
366994       , l_array_event_date
366995       , l_array_transaction_date
366996       , l_array_reference_num_1
366997       , l_array_reference_num_2
366998       , l_array_reference_num_3
366999       , l_array_reference_num_4
367000       , l_array_reference_char_1
367001       , l_array_reference_char_2
367002       , l_array_reference_char_3
367003       , l_array_reference_char_4
367004       , l_array_reference_date_1
367005       , l_array_reference_date_2
367006       , l_array_reference_date_3
367007       , l_array_reference_date_4
367008       , l_array_event_created_by
367009       , l_array_budgetary_control_flag
367010       , l_array_extract_line_num 
367011       , l_array_source_11
367012       , l_array_source_84
367013       , l_array_source_88
367014       , l_array_source_91
367015       , l_array_source_92
367016       , l_array_source_93
367017       , l_array_source_94
367018       , l_array_source_95
367019       , l_array_source_97
367020       LIMIT l_rows;
367021 
367022   --
367023   IF (C_LEVEL_EVENT >= g_log_level) THEN
367024             trace
367025                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
367026                ,p_level    => C_LEVEL_EVENT
367027                ,p_module   => l_log_module);
367028   END IF;
367029   --
367030   EXIT WHEN l_array_entity_id.count = 0;
367031 
367032   XLA_AE_LINES_PKG.g_rec_lines := null;
367033 
367034 --
367035 -- Bug 4458708
367036 --
367037 XLA_AE_LINES_PKG.g_LineNumber := 0;
367038 --
367039 --
367040 
367041 FOR Idx IN 1..l_array_event_id.count LOOP
367042    --
367043    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
367044    --
367045    l_event_id := l_array_event_id(idx);  -- 5648433
367046 
367047    --
367048    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
367049    --
367050 
367051    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
367052              (g_array_event(l_event_id).array_value_num('header_index'))
367053          ,'N'
367054          ) <> 'Y'
367055    THEN
367056       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
367057          trace
367058             (p_msg      => 'Trancaction revesal option is not Y '
367059             ,p_level    => C_LEVEL_STATEMENT
367060             ,p_module   => l_log_module);
367061       END IF;
367062 
367063 --
367064 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
367065 --
367066 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
367067 --
367068 -- set event info as cache for other routines to refer event attributes
367069 --
367070 
367071 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
367072    l_previous_event_id := l_event_id;
367073 
367074    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
367075       (p_application_id           => p_application_id
367076       ,p_primary_ledger_id        => p_primary_ledger_id
367077       ,p_base_ledger_id           => p_base_ledger_id
367078       ,p_target_ledger_id         => p_target_ledger_id
367079       ,p_entity_id                => l_array_entity_id(Idx)
367080       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
367081       ,p_entity_code              => l_array_entity_code(Idx)
367082       ,p_transaction_num          => l_array_transaction_num(Idx)
367083       ,p_event_id                 => l_array_event_id(Idx)
367084       ,p_event_class_code         => l_array_class_code(Idx)
367085       ,p_event_type_code          => l_array_event_type(Idx)
367086       ,p_event_number             => l_array_event_number(Idx)
367087       ,p_event_date               => l_array_event_date(Idx)
367088       ,p_transaction_date         => l_array_transaction_date(Idx)
367089       ,p_reference_num_1          => l_array_reference_num_1(Idx)
367090       ,p_reference_num_2          => l_array_reference_num_2(Idx)
367091       ,p_reference_num_3          => l_array_reference_num_3(Idx)
367092       ,p_reference_num_4          => l_array_reference_num_4(Idx)
367093       ,p_reference_char_1         => l_array_reference_char_1(Idx)
367094       ,p_reference_char_2         => l_array_reference_char_2(Idx)
367095       ,p_reference_char_3         => l_array_reference_char_3(Idx)
367096       ,p_reference_char_4         => l_array_reference_char_4(Idx)
367097       ,p_reference_date_1         => l_array_reference_date_1(Idx)
367098       ,p_reference_date_2         => l_array_reference_date_2(Idx)
367099       ,p_reference_date_3         => l_array_reference_date_3(Idx)
367100       ,p_reference_date_4         => l_array_reference_date_4(Idx)
367101       ,p_event_created_by         => l_array_event_created_by(Idx)
367102       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
367103        --
367104 END IF;
367105 
367106 
367107 
367108 --
367109 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
367110 
367111 l_acct_reversal_source := SUBSTR(NULL, 1,30);
367112 
367113 IF l_continue_with_lines THEN
367114    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
367115       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
367116 
367117       xla_accounting_err_pkg.build_message
367118          (p_appli_s_name            => 'XLA'
367119          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
367120          ,p_token_1                 => 'LINE_NUMBER'
367121          ,p_value_1                 => l_array_extract_line_num(Idx)
367122          ,p_token_2                 => 'PRODUCT_NAME'
367123          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
367124          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
367125          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
367126          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
367127 
367128    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
367129       --
367130       -- following sets the accounting attributes needed to reverse
367131       -- accounting for a distributeion
367132       --
367133 
367134       --
367135       -- 5217187
367136       --
367137       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
367138       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
367139                                        g_array_event(l_event_id).array_value_num('header_index'));
367140       --
367141       --
367142 
367143       -- No reversal code generated
367144 
367145       xla_ae_lines_pkg.SetAcctReversalAttrs
367146          (p_event_id             => l_event_id
367147          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
367148          ,p_calculate_acctd_flag => l_calculate_acctd_flag
367149          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
367150    END IF;
367151 
367152    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
367153        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
367154 
367155 --
367156 AcctLineType_331 (
367157  p_application_id  => p_application_id
367158  ,p_event_id     => l_event_id
367159  ,p_calculate_acctd_flag => l_calculate_acctd_flag
367160  ,p_calculate_g_l_flag => l_calculate_g_l_flag
367161  ,p_actual_flag => l_actual_flag
367162  ,p_balance_type_code => l_balance_type_code
367163  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
367164  
367165  , p_source_11 => l_array_source_11(Idx)
367166  , p_source_84 => l_array_source_84(Idx)
367167  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
367168  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
367169  , p_source_88 => l_array_source_88(Idx)
367170  , p_source_91 => l_array_source_91(Idx)
367171  , p_source_92 => l_array_source_92(Idx)
367172  , p_source_93 => l_array_source_93(Idx)
367173  , p_source_94 => l_array_source_94(Idx)
367174  , p_source_95 => l_array_source_95(Idx)
367175  , p_source_97 => l_array_source_97(Idx)
367176  );
367177 If(l_balance_type_code = 'A') THEN
367178   l_actual_gain_loss_ref := l_gain_or_loss_ref;
367179 END IF;
367180 
367181 --
367182 
367183 
367184 --
367185 AcctLineType_537 (
367186  p_application_id  => p_application_id
367187  ,p_event_id     => l_event_id
367188  ,p_calculate_acctd_flag => l_calculate_acctd_flag
367189  ,p_calculate_g_l_flag => l_calculate_g_l_flag
367190  ,p_actual_flag => l_actual_flag
367191  ,p_balance_type_code => l_balance_type_code
367192  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
367193  
367194  , p_source_11 => l_array_source_11(Idx)
367195  , p_source_84 => l_array_source_84(Idx)
367196  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
367197  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
367198  , p_source_88 => l_array_source_88(Idx)
367199  , p_source_91 => l_array_source_91(Idx)
367200  , p_source_92 => l_array_source_92(Idx)
367201  , p_source_93 => l_array_source_93(Idx)
367202  , p_source_94 => l_array_source_94(Idx)
367203  , p_source_95 => l_array_source_95(Idx)
367204  , p_source_97 => l_array_source_97(Idx)
367205  );
367206 If(l_balance_type_code = 'A') THEN
367207   l_actual_gain_loss_ref := l_gain_or_loss_ref;
367208 END IF;
367209 
367210 --
367211 
367212       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
367213       -- or secondary ledger that has different currency with primary
367214       -- or alc that is calculated by sla
367215       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
367216             (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'))
367217 
367218 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
367219 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
367220           AND (l_actual_flag = 'A')) THEN
367221         XLA_AE_LINES_PKG.CreateGainOrLossLines(
367222           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
367223          ,p_application_id   => p_application_id
367224          ,p_amb_context_code => 'DEFAULT'
367225          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
367226          ,p_event_class_code => C_EVENT_CLASS_CODE
367227          ,p_event_type_code  => C_EVENT_TYPE_CODE
367228          
367229          ,p_gain_ccid        => -1
367230          ,p_loss_ccid        => -1
367231 
367232          ,p_actual_flag      => l_actual_flag
367233          ,p_enc_flag         => null
367234          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
367235          ,p_enc_g_l_ref      => null
367236          );
367237       END IF;
367238    END IF;
367239 END IF;
367240 
367241    ELSE
367242       --
367243       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
367244       --
367245       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
367246          trace
367247             (p_msg      => 'Trancaction revesal option is Y'
367248             ,p_level    => C_LEVEL_STATEMENT
367249             ,p_module   => l_log_module);
367250       END IF;
367251    END IF;
367252 
367253 END LOOP;
367254 l_result := XLA_AE_LINES_PKG.InsertLines ;
367255 end loop;
367256 close line_cur;
367257 
367258 
367259 --
367260 -- insert headers into xla_ae_headers_gt table
367261 --
367262 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
367263 
367264 -- insert into errors table here.
367265 
367266 END LOOP;
367267 
367268 --
367269 -- 4865292
367270 --
367271 -- Compare g_hdr_extract_count with event count in
367272 -- CreateHeadersAndLines.
367273 --
367274 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
367275 
367276 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
367277    trace (p_msg     => '# rows extracted from header extract objects '
367278                     || ' (running total): '
367279                     || g_hdr_extract_count
367280          ,p_level   => C_LEVEL_STATEMENT
367281          ,p_module  => l_log_module);
367282 END IF;
367283 
367284 CLOSE header_cur;
367285 --
367286 
367287 --
367288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
367289    trace
367290       (p_msg      => 'END of EventClass_583'
367291       ,p_level    => C_LEVEL_PROCEDURE
367292       ,p_module   => l_log_module);
367293 END IF;
367294 --
367295 RETURN l_result;
367296 EXCEPTION
367297 WHEN xla_exceptions_pkg.application_exception THEN
367298    
367299 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
367300 
367301    
367302 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
367303 
367304    RAISE;
367305 
367306 WHEN NO_DATA_FOUND THEN
367307 
367308 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
367309 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
367310 
367311 FOR header_record IN header_cur
367312 LOOP
367313     l_array_header_events(header_record.event_id) := header_record.event_id;
367314 END LOOP;
367315 
367316 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
367317 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
367318 
367319 fnd_file.put_line(fnd_file.LOG, '                    ');
367320 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
367321 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
367322 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
367323 
367324 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
367325 LOOP
367326 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
367327 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
367328         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
367329 	END IF;
367330 END LOOP;
367331 
367332 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
367333 fnd_file.put_line(fnd_file.LOG, '                    ');
367334 
367335 
367336 xla_exceptions_pkg.raise_message
367337       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_583');
367338 
367339 
367340 WHEN OTHERS THEN
367341    xla_exceptions_pkg.raise_message
367342       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_583');
367343 END EventClass_583;
367344 --
367345 
367346 ---------------------------------------
367347 --
367348 -- PRIVATE PROCEDURE
367349 --         insert_sources_584
367350 --
367351 ----------------------------------------
367352 --
367353 PROCEDURE insert_sources_584(
367354                                 p_target_ledger_id       IN NUMBER
367355                               , p_language               IN VARCHAR2
367356                               , p_sla_ledger_id          IN NUMBER
367357                               , p_pad_start_date         IN DATE
367358                               , p_pad_end_date           IN DATE
367359                          )
367360 IS
367361 
367362 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_ISSUE_RCPT_ALL';
367363 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_ISSUE_RCPT';
367364 p_apps_owner                   VARCHAR2(30);
367365 l_log_module                   VARCHAR2(240);
367366 BEGIN
367367 IF g_log_enabled THEN
367368       l_log_module := C_DEFAULT_MODULE||'.insert_sources_584';
367369 END IF;
367370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
367371 
367372       trace
367373          (p_msg      => 'BEGIN of insert_sources_584'
367374          ,p_level    => C_LEVEL_PROCEDURE
367375          ,p_module   => l_log_module);
367376 
367377 END IF;
367378 
367379 -- select APPS owner
367380 SELECT oracle_username
367381   INTO p_apps_owner
367382   FROM fnd_oracle_userid
367383  WHERE read_only_flag = 'U'
367384 ;
367385 
367386 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
367387       trace
367388          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
367389                         ' - p_language = '||p_language||
367390                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
367391                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
367392                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
367393                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
367394          ,p_level    => C_LEVEL_STATEMENT
367395          ,p_module   => l_log_module);
367396 END IF;
367397 
367398 
367399 --
367400 INSERT INTO xla_diag_sources --hdr2
367401 (
367402         event_id
367403       , ledger_id
367404       , sla_ledger_id
367405       , description_language
367406       , object_name
367407       , object_type_code
367408       , line_number
367409       , source_application_id
367410       , source_type_code
367411       , source_code
367412       , source_value
367413       , source_meaning
367414       , created_by
367415       , creation_date
367416       , last_update_date
367417       , last_updated_by
367418       , last_update_login
367419       , program_update_date
367420       , program_application_id
367421       , program_id
367422       , request_id
367423 )
367424 SELECT
367425         event_id
367426       , p_target_ledger_id
367427       , p_sla_ledger_id
367428       , p_language
367429       , object_name
367430       , object_type_code
367431       , line_number
367432       , source_application_id
367433       , source_type_code
367434       , source_code
367435       , SUBSTR(source_value ,1,1996)
367436       , SUBSTR(source_meaning ,1,200)
367437       , xla_environment_pkg.g_Usr_Id
367438       , TRUNC(SYSDATE)
367439       , TRUNC(SYSDATE)
367440       , xla_environment_pkg.g_Usr_Id
367441       , xla_environment_pkg.g_Login_Id
367442       , TRUNC(SYSDATE)
367443       , xla_environment_pkg.g_Prog_Appl_Id
367444       , xla_environment_pkg.g_Prog_Id
367445       , xla_environment_pkg.g_Req_Id
367446   FROM (
367447        SELECT xet.event_id                  event_id
367448             , 0                          line_number
367449             , CASE r
367450                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
367451                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
367452                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
367453                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
367454                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
367455                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
367456                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
367457                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
367458                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
367459                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
367460                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
367461                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
367462                 
367463                ELSE null
367464               END                           object_name
367465             , CASE r
367466                 WHEN 1 THEN 'HEADER' 
367467                 WHEN 2 THEN 'HEADER' 
367468                 WHEN 3 THEN 'HEADER' 
367469                 WHEN 4 THEN 'HEADER' 
367470                 WHEN 5 THEN 'HEADER' 
367471                 WHEN 6 THEN 'HEADER' 
367472                 WHEN 7 THEN 'HEADER' 
367473                 WHEN 8 THEN 'HEADER' 
367474                 WHEN 9 THEN 'HEADER' 
367475                 WHEN 10 THEN 'HEADER' 
367476                 WHEN 11 THEN 'HEADER' 
367477                 WHEN 12 THEN 'HEADER' 
367478                 
367479                 ELSE null
367480               END                           object_type_code
367481             , CASE r
367482                 WHEN 1 THEN '707' 
367483                 WHEN 2 THEN '707' 
367484                 WHEN 3 THEN '707' 
367485                 WHEN 4 THEN '707' 
367486                 WHEN 5 THEN '707' 
367487                 WHEN 6 THEN '707' 
367488                 WHEN 7 THEN '707' 
367489                 WHEN 8 THEN '707' 
367490                 WHEN 9 THEN '707' 
367491                 WHEN 10 THEN '707' 
367492                 WHEN 11 THEN '707' 
367493                 WHEN 12 THEN '707' 
367494                 
367495                 ELSE null
367496               END                           source_application_id
367497             , 'S'             source_type_code
367498             , CASE r
367499                 WHEN 1 THEN 'TRANSACTION_ID' 
367500                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
367501                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
367502                 WHEN 4 THEN 'TRANSACTION_UOM' 
367503                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
367504                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
367505                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
367506                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
367507                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
367508                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
367509                 WHEN 11 THEN 'DISTRIBUTION_TYPE' 
367510                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
367511                 
367512                 ELSE null
367513               END                           source_code
367514             , CASE r
367515                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
367516                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
367517                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
367518                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
367519                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
367520                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
367521                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
367522                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
367523                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
367524                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
367525                 WHEN 11 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
367526                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
367527                 
367528                 ELSE null
367529               END                           source_value
367530             , CASE r
367531                 WHEN 11 THEN fvl85.meaning
367532                 WHEN 12 THEN fvl114.meaning
367533                 
367534                 ELSE null
367535               END               source_meaning
367536          FROM xla_events_gt     xet  
367537       , CST_XLA_INV_HEADERS_V  h1
367538       , CST_XLA_INV_REF_V  h3
367539       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
367540       , CST_XLA_INV_TXN_TYPES_REF_V  h5
367541       , CST_XLA_PLA_CATEGORY_REF_V  h6
367542   , fnd_lookup_values    fvl85
367543   , fnd_lookup_values    fvl114
367544              ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
367545          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
367546            AND xet.event_class_code = C_EVENT_CLASS_CODE
367547               AND h1.event_id = xet.event_id
367548  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
367549 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
367550 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
367551   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
367552   AND fvl85.view_application_id(+) = 700
367553   AND fvl85.language(+)            = USERENV('LANG')
367554      AND fvl114.lookup_type(+)         = 'YES_NO'
367555   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
367556   AND fvl114.view_application_id(+) = 0
367557   AND fvl114.language(+)            = USERENV('LANG')
367558   
367559 )
367560 ;
367561 --
367562 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
367563 
367564       trace
367565          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
367566          ,p_level    => C_LEVEL_STATEMENT
367567          ,p_module   => l_log_module);
367568 
367569 END IF;
367570 --
367571 
367572 
367573 
367574 --
367575 INSERT INTO xla_diag_sources  --line2
367576 (
367577         event_id
367578       , ledger_id
367579       , sla_ledger_id
367580       , description_language
367581       , object_name
367582       , object_type_code
367583       , line_number
367584       , source_application_id
367585       , source_type_code
367586       , source_code
367587       , source_value
367588       , source_meaning
367589       , created_by
367590       , creation_date
367591       , last_update_date
367592       , last_updated_by
367593       , last_update_login
367594       , program_update_date
367595       , program_application_id
367596       , program_id
367597       , request_id
367598 )
367599 SELECT  event_id
367600       , p_target_ledger_id
367601       , p_sla_ledger_id
367602       , p_language
367603       , object_name
367604       , object_type_code
367605       , line_number
367606       , source_application_id
367607       , source_type_code
367608       , source_code
367609       , SUBSTR(source_value,1,1996)
367610       , SUBSTR(source_meaning ,1,200)
367611       , xla_environment_pkg.g_Usr_Id
367612       , TRUNC(SYSDATE)
367613       , TRUNC(SYSDATE)
367614       , xla_environment_pkg.g_Usr_Id
367615       , xla_environment_pkg.g_Login_Id
367616       , TRUNC(SYSDATE)
367617       , xla_environment_pkg.g_Prog_Appl_Id
367618       , xla_environment_pkg.g_Prog_Id
367619       , xla_environment_pkg.g_Req_Id
367620   FROM (
367621        SELECT xet.event_id                  event_id
367622             , l2.line_number                 line_number
367623             , CASE r
367624                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
367625                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
367626                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
367627                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
367628                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
367629                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
367630                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
367631                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
367632                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
367633                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
367634                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
367635                 
367636                ELSE null
367637               END                           object_name
367638             , CASE r
367639                 WHEN 1 THEN 'LINE' 
367640                 WHEN 2 THEN 'LINE' 
367641                 WHEN 3 THEN 'LINE' 
367642                 WHEN 4 THEN 'LINE' 
367643                 WHEN 5 THEN 'LINE' 
367644                 WHEN 6 THEN 'LINE' 
367645                 WHEN 7 THEN 'LINE' 
367646                 WHEN 8 THEN 'LINE' 
367647                 WHEN 9 THEN 'LINE' 
367648                 WHEN 10 THEN 'LINE' 
367649                 WHEN 11 THEN 'LINE' 
367650                 
367651                 ELSE null
367652               END                           object_type_code
367653             , CASE r
367654                 WHEN 1 THEN '707' 
367655                 WHEN 2 THEN '707' 
367656                 WHEN 3 THEN '707' 
367657                 WHEN 4 THEN '707' 
367658                 WHEN 5 THEN '707' 
367659                 WHEN 6 THEN '707' 
367660                 WHEN 7 THEN '707' 
367661                 WHEN 8 THEN '707' 
367662                 WHEN 9 THEN '707' 
367663                 WHEN 10 THEN '707' 
367664                 WHEN 11 THEN '707' 
367665                 
367666                 ELSE null
367667               END                           source_application_id
367668             , 'S'             source_type_code
367669             , CASE r
367670                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
367671                 WHEN 2 THEN 'COST_ELEMENT_ID' 
367672                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
367673                 WHEN 4 THEN 'CURRENCY_CODE' 
367674                 WHEN 5 THEN 'ENTERED_AMOUNT' 
367675                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
367676                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
367677                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
367678                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
367679                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
367680                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
367681                 
367682                 ELSE null
367683               END                           source_code
367684             , CASE r
367685                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
367686                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
367687                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
367688                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
367689                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
367690                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
367691                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
367692                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
367693                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
367694                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
367695                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
367696                 
367697                 ELSE null
367698               END                           source_value
367699             , CASE r
367700                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
367701                           1009615
367702                          ,TO_CHAR(l2.COST_ELEMENT_ID)
367703                          ,'COST_ELEMENT_ID'
367704                          ,'S'
367705                          ,707)
367706                 
367707                 ELSE null
367708               END               source_meaning
367709          FROM  xla_events_gt     xet  
367710         , CST_XLA_INV_LINES_V  l2
367711             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
367712         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
367713           AND xet.event_class_code = C_EVENT_CLASS_CODE
367714             AND l2.event_id          = xet.event_id
367715 
367716 )
367717 ;
367718 --
367719 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
367720 
367721       trace
367722          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
367723          ,p_level    => C_LEVEL_STATEMENT
367724          ,p_module   => l_log_module);
367725 
367726 END IF;
367727 
367728 
367729 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
367730       trace
367731          (p_msg      => 'END of insert_sources_584'
367732          ,p_level    => C_LEVEL_PROCEDURE
367733          ,p_module   => l_log_module);
367734 END IF;
367735 EXCEPTION
367736   WHEN xla_exceptions_pkg.application_exception THEN
367737       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
367738             trace
367739                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
367740                ,p_level    => C_LEVEL_EXCEPTION
367741                ,p_module   => l_log_module);
367742       END IF;
367743       RAISE;
367744   WHEN OTHERS THEN
367745       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
367746             trace
367747                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
367748                ,p_level    => C_LEVEL_EXCEPTION
367749                ,p_module   => l_log_module);
367750        END IF;
367751        xla_exceptions_pkg.raise_message
367752            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_584');
367753 END insert_sources_584;
367754 --
367755 
367756 ---------------------------------------
367757 --
367758 -- PRIVATE FUNCTION
367759 --         EventClass_584
367760 --
367761 ----------------------------------------
367762 --
367763 FUNCTION EventClass_584
367764        (p_application_id         IN NUMBER
367765        ,p_base_ledger_id         IN NUMBER
367766        ,p_target_ledger_id       IN NUMBER
367767        ,p_language               IN VARCHAR2
367768        ,p_currency_code          IN VARCHAR2
367769        ,p_sla_ledger_id          IN NUMBER
367770        ,p_pad_start_date         IN DATE
367771        ,p_pad_end_date           IN DATE
367772        ,p_primary_ledger_id      IN NUMBER)
367773 RETURN BOOLEAN IS
367774 --
367775 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_ISSUE_RCPT_ALL';
367776 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_ISSUE_RCPT';
367777 
367778 l_calculate_acctd_flag   VARCHAR2(1) :='N';
367779 l_calculate_g_l_flag     VARCHAR2(1) :='N';
367780 --
367781 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367782 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367783 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
367784 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
367785 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367786 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
367787 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
367788 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367789 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
367790 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
367791 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367792 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367793 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367794 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
367795 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
367796 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
367797 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
367798 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
367799 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
367800 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
367801 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
367802 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
367803 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
367804 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
367805 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
367806 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
367807 
367808 l_event_id                             NUMBER;
367809 l_previous_event_id                    NUMBER;
367810 l_first_event_id                       NUMBER;
367811 l_last_event_id                        NUMBER;
367812 
367813 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
367814 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
367815 --
367816 --
367817 l_result                    BOOLEAN := TRUE;
367818 l_rows                      NUMBER  := 1000;
367819 l_event_type_name           VARCHAR2(80) := 'All';
367820 l_event_class_name          VARCHAR2(80) := 'Miscellaneous';
367821 l_description               VARCHAR2(4000);
367822 l_transaction_reversal      NUMBER;
367823 l_ae_header_id              NUMBER;
367824 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
367825 l_log_module                VARCHAR2(240);
367826 --
367827 l_acct_reversal_source      VARCHAR2(30);
367828 l_trx_reversal_source       VARCHAR2(30);
367829 
367830 l_continue_with_lines       BOOLEAN := TRUE;
367831 --
367832 l_acc_rev_gl_date_source    DATE;                      -- 4262811
367833 --
367834 type t_array_event_id is table of number index by binary_integer;
367835 
367836 l_rec_array_event                    t_rec_array_event;
367837 l_null_rec_array_event               t_rec_array_event;
367838 l_array_ae_header_id                 xla_number_array_type;
367839 l_actual_flag                        VARCHAR2(1) := NULL;
367840 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
367841 l_balance_type_code                  VARCHAR2(1) :=NULL;
367842 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
367843 
367844 --
367845 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
367846 --
367847 
367848 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
367849 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
367850 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
367851 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
367852 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
367853 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
367854 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
367855 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
367856 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
367857 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
367858 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
367859 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
367860 
367861 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
367862 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
367863 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
367864 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
367865 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
367866 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
367867 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
367868 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
367869 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
367870 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
367871 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
367872 
367873 l_array_source_1              t_array_source_1;
367874 l_array_source_2              t_array_source_2;
367875 l_array_source_3              t_array_source_3;
367876 l_array_source_4              t_array_source_4;
367877 l_array_source_5              t_array_source_5;
367878 l_array_source_41              t_array_source_41;
367879 l_array_source_42              t_array_source_42;
367880 l_array_source_43              t_array_source_43;
367881 l_array_source_44              t_array_source_44;
367882 l_array_source_45              t_array_source_45;
367883 l_array_source_85              t_array_source_85;
367884 l_array_source_85_meaning      t_array_lookup_meaning;
367885 l_array_source_114              t_array_source_114;
367886 l_array_source_114_meaning      t_array_lookup_meaning;
367887 
367888 l_array_source_11      t_array_source_11;
367889 l_array_source_15      t_array_source_15;
367890 l_array_source_84      t_array_source_84;
367891 l_array_source_88      t_array_source_88;
367892 l_array_source_91      t_array_source_91;
367893 l_array_source_92      t_array_source_92;
367894 l_array_source_93      t_array_source_93;
367895 l_array_source_94      t_array_source_94;
367896 l_array_source_95      t_array_source_95;
367897 l_array_source_97      t_array_source_97;
367898 l_array_source_108      t_array_source_108;
367899 
367900 --
367901 CURSOR header_cur
367902 IS
367903 SELECT /*+ leading(xet) cardinality(xet,1) */
367904 -- Event Class Code: MISC_ISSUE_RCPT
367905     xet.entity_id
367906    ,xet.legal_entity_id
367907    ,xet.entity_code
367908    ,xet.transaction_number
367909    ,xet.event_id
367910    ,xet.event_class_code
367911    ,xet.event_type_code
367912    ,xet.event_number
367913    ,xet.event_date
367914    ,xet.transaction_date
367915    ,xet.reference_num_1
367916    ,xet.reference_num_2
367917    ,xet.reference_num_3
367918    ,xet.reference_num_4
367919    ,xet.reference_char_1
367920    ,xet.reference_char_2
367921    ,xet.reference_char_3
367922    ,xet.reference_char_4
367923    ,xet.reference_date_1
367924    ,xet.reference_date_2
367925    ,xet.reference_date_3
367926    ,xet.reference_date_4
367927    ,xet.event_created_by
367928    ,xet.budgetary_control_flag 
367929   , h1.TRANSACTION_ID    source_1
367930   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
367931   , h3.TRANSACTION_QUANTITY    source_3
367932   , h3.TRANSACTION_UOM    source_4
367933   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
367934   , h6.PLA_MATERIAL_ACCOUNT    source_41
367935   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
367936   , h6.PLA_RESOURCE_ACCOUNT    source_43
367937   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
367938   , h6.PLA_OVERHEAD_ACCOUNT    source_45
367939   , h1.DISTRIBUTION_TYPE    source_85
367940   , fvl85.meaning   source_85_meaning
367941   , h1.TRANSFER_TO_GL_INDICATOR    source_114
367942   , fvl114.meaning   source_114_meaning
367943   FROM xla_events_gt     xet 
367944   , CST_XLA_INV_HEADERS_V  h1
367945   , CST_XLA_INV_REF_V  h3
367946   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
367947   , CST_XLA_INV_TXN_TYPES_REF_V  h5
367948   , CST_XLA_PLA_CATEGORY_REF_V  h6
367949   , fnd_lookup_values    fvl85
367950   , fnd_lookup_values    fvl114
367951  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
367952    and xet.event_class_code = C_EVENT_CLASS_CODE
367953    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
367954  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
367955 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
367956 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
367957   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
367958   AND fvl85.view_application_id(+) = 700
367959   AND fvl85.language(+)            = USERENV('LANG')
367960      AND fvl114.lookup_type(+)         = 'YES_NO'
367961   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
367962   AND fvl114.view_application_id(+) = 0
367963   AND fvl114.language(+)            = USERENV('LANG')
367964   
367965  ORDER BY event_id
367966 ;
367967 
367968 
367969 --
367970 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
367971 IS
367972 SELECT  /*+ leading(xet) cardinality(xet,1) */
367973 -- Event Class Code: MISC_ISSUE_RCPT
367974     xet.entity_id
367975    ,xet.legal_entity_id
367976    ,xet.entity_code
367977    ,xet.transaction_number
367978    ,xet.event_id
367979    ,xet.event_class_code
367980    ,xet.event_type_code
367981    ,xet.event_number
367982    ,xet.event_date
367983    ,xet.transaction_date
367984    ,xet.reference_num_1
367985    ,xet.reference_num_2
367986    ,xet.reference_num_3
367987    ,xet.reference_num_4
367988    ,xet.reference_char_1
367989    ,xet.reference_char_2
367990    ,xet.reference_char_3
367991    ,xet.reference_char_4
367992    ,xet.reference_date_1
367993    ,xet.reference_date_2
367994    ,xet.reference_date_3
367995    ,xet.reference_date_4
367996    ,xet.event_created_by
367997    ,xet.budgetary_control_flag
367998  , l2.LINE_NUMBER  
367999   , l2.CODE_COMBINATION_ID    source_11
368000   , l2.COST_ELEMENT_ID    source_15
368001   , l2.DISTRIBUTION_IDENTIFIER    source_84
368002   , l2.CURRENCY_CODE    source_88
368003   , l2.ENTERED_AMOUNT    source_91
368004   , l2.CURRENCY_CONVERSION_DATE    source_92
368005   , l2.CURRENCY_CONVERSION_RATE    source_93
368006   , l2.CURRENCY_CONVERSION_TYPE    source_94
368007   , l2.ACCOUNTED_AMOUNT    source_95
368008   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
368009   , l2.L_ORGANIZATION_CODE    source_108
368010   FROM xla_events_gt     xet 
368011   , CST_XLA_INV_LINES_V  l2
368012  WHERE xet.event_id between x_first_event_id and x_last_event_id
368013    and xet.event_date between p_pad_start_date and p_pad_end_date
368014    and xet.event_class_code = C_EVENT_CLASS_CODE
368015    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
368016 ;
368017 
368018 --
368019 BEGIN
368020 IF g_log_enabled THEN
368021    l_log_module := C_DEFAULT_MODULE||'.EventClass_584';
368022 END IF;
368023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
368024    trace
368025       (p_msg      => 'BEGIN of EventClass_584'
368026       ,p_level    => C_LEVEL_PROCEDURE
368027       ,p_module   => l_log_module);
368028 END IF;
368029 
368030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368031    trace
368032       (p_msg      => 'p_application_id = '||p_application_id||
368033                      ' - p_base_ledger_id = '||p_base_ledger_id||
368034                      ' - p_target_ledger_id  = '||p_target_ledger_id||
368035                      ' - p_language = '||p_language||
368036                      ' - p_currency_code = '||p_currency_code||
368037                      ' - p_sla_ledger_id = '||p_sla_ledger_id
368038       ,p_level    => C_LEVEL_STATEMENT
368039       ,p_module   => l_log_module);
368040 END IF;
368041 --
368042 -- initialze arrays
368043 --
368044 g_array_event.DELETE;
368045 l_rec_array_event := l_null_rec_array_event;
368046 --
368047 --------------------------------------
368048 -- 4262811 Initialze MPA Line Number
368049 --------------------------------------
368050 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
368051 
368052 --
368053 
368054 --
368055 OPEN header_cur;
368056 --
368057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368058    trace
368059    (p_msg      => 'SQL - FETCH header_cur'
368060    ,p_level    => C_LEVEL_STATEMENT
368061    ,p_module   => l_log_module);
368062 END IF;
368063 --
368064 LOOP
368065 FETCH header_cur BULK COLLECT INTO
368066         l_array_entity_id
368067       , l_array_legal_entity_id
368068       , l_array_entity_code
368069       , l_array_transaction_num
368070       , l_array_event_id
368071       , l_array_class_code
368072       , l_array_event_type
368073       , l_array_event_number
368074       , l_array_event_date
368075       , l_array_transaction_date
368076       , l_array_reference_num_1
368077       , l_array_reference_num_2
368078       , l_array_reference_num_3
368079       , l_array_reference_num_4
368080       , l_array_reference_char_1
368081       , l_array_reference_char_2
368082       , l_array_reference_char_3
368083       , l_array_reference_char_4
368084       , l_array_reference_date_1
368085       , l_array_reference_date_2
368086       , l_array_reference_date_3
368087       , l_array_reference_date_4
368088       , l_array_event_created_by
368089       , l_array_budgetary_control_flag 
368090       , l_array_source_1
368091       , l_array_source_2
368092       , l_array_source_3
368093       , l_array_source_4
368094       , l_array_source_5
368095       , l_array_source_41
368096       , l_array_source_42
368097       , l_array_source_43
368098       , l_array_source_44
368099       , l_array_source_45
368100       , l_array_source_85
368101       , l_array_source_85_meaning
368102       , l_array_source_114
368103       , l_array_source_114_meaning
368104       LIMIT l_rows;
368105 --
368106 IF (C_LEVEL_EVENT >= g_log_level) THEN
368107    trace
368108    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
368109    ,p_level    => C_LEVEL_EVENT
368110    ,p_module   => l_log_module);
368111 END IF;
368112 --
368113 EXIT WHEN l_array_entity_id.COUNT = 0;
368114 
368115 -- initialize arrays
368116 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
368117 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
368118 
368119 --
368120 -- Bug 4458708
368121 --
368122 XLA_AE_LINES_PKG.g_LineNumber := 0;
368123 
368124 
368125 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
368126 g_last_hdr_idx := l_array_event_id.LAST;
368127 --
368128 -- loop for the headers. Each iteration is for each header extract row
368129 -- fetched in header cursor
368130 --
368131 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
368132 
368133 --
368134 -- set event info as cache for other routines to refer event attributes
368135 --
368136 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
368137    (p_application_id           => p_application_id
368138    ,p_primary_ledger_id        => p_primary_ledger_id
368139    ,p_base_ledger_id           => p_base_ledger_id
368140    ,p_target_ledger_id         => p_target_ledger_id
368141    ,p_entity_id                => l_array_entity_id(hdr_idx)
368142    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
368143    ,p_entity_code              => l_array_entity_code(hdr_idx)
368144    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
368145    ,p_event_id                 => l_array_event_id(hdr_idx)
368146    ,p_event_class_code         => l_array_class_code(hdr_idx)
368147    ,p_event_type_code          => l_array_event_type(hdr_idx)
368148    ,p_event_number             => l_array_event_number(hdr_idx)
368149    ,p_event_date               => l_array_event_date(hdr_idx)
368150    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
368151    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
368152    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
368153    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
368154    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
368155    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
368156    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
368157    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
368158    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
368159    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
368160    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
368161    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
368162    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
368163    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
368164    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
368165 
368166 --
368167 -- set the status of entry to C_VALID (0)
368168 --
368169 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
368170 
368171 --
368172 -- initialize a row for ae header
368173 --
368174 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
368175 
368176 l_event_id := l_array_event_id(hdr_idx);
368177 
368178 --
368179 -- storing the hdr_idx for event. May be used by line cursor.
368180 --
368181 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
368182 
368183 --
368184 -- store sources from header extract. This can be improved to
368185 -- store only those sources from header extract that may be used in lines
368186 --
368187 
368188 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
368189 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
368190 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
368191 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
368192 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
368193 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
368194 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
368195 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
368196 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
368197 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
368198 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
368199 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
368200 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
368201 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
368202 
368203 --
368204 -- initilaize the status of ae headers for diffrent balance types
368205 -- the status is initialised to C_NOT_CREATED (2)
368206 --
368207 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
368208 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
368209 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
368210 
368211 --
368212 -- call api to validate and store accounting attributes for header
368213 --
368214 
368215 ------------------------------------------------------------
368216 -- Accrual Reversal : to get date for Standard Source (NONE)
368217 ------------------------------------------------------------
368218 l_acc_rev_gl_date_source := NULL;
368219 
368220      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
368221       l_rec_acct_attrs.array_date_value(1) := 
368222 xla_ae_sources_pkg.GetSystemSourceDate(
368223    p_source_code           => 'XLA_REFERENCE_DATE_1'
368224  , p_source_type_code      => 'Y'
368225  , p_source_application_id =>  602
368226 );
368227      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
368228       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
368229 
368230 
368231 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
368232 
368233 XLA_AE_HEADER_PKG.SetJeCategoryName;
368234 
368235 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
368236 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
368237 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
368238 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
368239 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
368240 
368241 
368242 --
368243 xla_ae_header_pkg.SetHdrDescription(
368244    p_description => Description_1 (
368245    p_application_id => p_application_id 
368246  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
368247  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
368248  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
368249  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
368250  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
368251    )
368252 );
368253 --
368254 
368255 -- No header level analytical criteria
368256 
368257 --
368258 --accounting attribute enhancement, bug 3612931
368259 --
368260 l_trx_reversal_source := SUBSTR(NULL, 1,30);
368261 
368262 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
368263    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
368264 
368265    xla_accounting_err_pkg.build_message
368266       (p_appli_s_name            => 'XLA'
368267       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
368268       ,p_token_1                 => 'ACCT_ATTR_NAME'
368269       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
368270       ,p_token_2                 => 'PRODUCT_NAME'
368271       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
368272       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
368273       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
368274       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
368275 
368276 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
368277    --
368278    -- following sets the accounting attributes needed to reverse
368279    -- accounting for a distributeion
368280    --
368281    xla_ae_lines_pkg.SetTrxReversalAttrs
368282       (p_event_id              => l_event_id
368283       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
368284       ,p_trx_reversal_source   => l_trx_reversal_source);
368285 
368286 END IF;
368287 
368288 
368289 ----------------------------------------------------------------
368290 -- 4262811 -  update the header statuses to invalid in need be
368291 ----------------------------------------------------------------
368292 --
368293 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
368294 
368295 
368296   -----------------------------------------------
368297   -- No accrual reversal for the event class/type
368298   -----------------------------------------------
368299 ----------------------------------------------------------------
368300 
368301 --
368302 -- this ends the header loop iteration for one bulk fetch
368303 --
368304 END LOOP;
368305 
368306 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
368307 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
368308 
368309 --
368310 -- insert dummy rows into lines gt table that were created due to
368311 -- transaction reversals
368312 --
368313 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
368314    l_result := XLA_AE_LINES_PKG.InsertLines;
368315 END IF;
368316 
368317 --
368318 -- reset the temp_line_num for each set of events fetched from header
368319 -- cursor rather than doing it for each new event in line cursor
368320 -- Bug 3939231
368321 --
368322 xla_ae_lines_pkg.g_temp_line_num := 0;
368323 
368324 
368325 
368326 --
368327 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
368328 --
368329 --
368330 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368331 
368332       trace
368333          (p_msg      => 'SQL - FETCH line_cur'
368334          ,p_level    => C_LEVEL_STATEMENT
368335          ,p_module   => l_log_module);
368336 
368337 END IF;
368338 --
368339 --
368340 LOOP
368341   --
368342   FETCH line_cur BULK COLLECT INTO
368343         l_array_entity_id
368344       , l_array_legal_entity_id
368345       , l_array_entity_code
368346       , l_array_transaction_num
368347       , l_array_event_id
368348       , l_array_class_code
368349       , l_array_event_type
368350       , l_array_event_number
368351       , l_array_event_date
368352       , l_array_transaction_date
368353       , l_array_reference_num_1
368354       , l_array_reference_num_2
368355       , l_array_reference_num_3
368356       , l_array_reference_num_4
368357       , l_array_reference_char_1
368358       , l_array_reference_char_2
368359       , l_array_reference_char_3
368360       , l_array_reference_char_4
368361       , l_array_reference_date_1
368362       , l_array_reference_date_2
368363       , l_array_reference_date_3
368364       , l_array_reference_date_4
368365       , l_array_event_created_by
368366       , l_array_budgetary_control_flag
368367       , l_array_extract_line_num 
368368       , l_array_source_11
368369       , l_array_source_15
368370       , l_array_source_84
368371       , l_array_source_88
368372       , l_array_source_91
368373       , l_array_source_92
368374       , l_array_source_93
368375       , l_array_source_94
368376       , l_array_source_95
368377       , l_array_source_97
368378       , l_array_source_108
368379       LIMIT l_rows;
368380 
368381   --
368382   IF (C_LEVEL_EVENT >= g_log_level) THEN
368383             trace
368384                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
368385                ,p_level    => C_LEVEL_EVENT
368386                ,p_module   => l_log_module);
368387   END IF;
368388   --
368389   EXIT WHEN l_array_entity_id.count = 0;
368390 
368391   XLA_AE_LINES_PKG.g_rec_lines := null;
368392 
368393 --
368394 -- Bug 4458708
368395 --
368396 XLA_AE_LINES_PKG.g_LineNumber := 0;
368397 --
368398 --
368399 
368400 FOR Idx IN 1..l_array_event_id.count LOOP
368401    --
368402    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
368403    --
368404    l_event_id := l_array_event_id(idx);  -- 5648433
368405 
368406    --
368407    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
368408    --
368409 
368410    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
368411              (g_array_event(l_event_id).array_value_num('header_index'))
368412          ,'N'
368413          ) <> 'Y'
368414    THEN
368415       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368416          trace
368417             (p_msg      => 'Trancaction revesal option is not Y '
368418             ,p_level    => C_LEVEL_STATEMENT
368419             ,p_module   => l_log_module);
368420       END IF;
368421 
368422 --
368423 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
368424 --
368425 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
368426 --
368427 -- set event info as cache for other routines to refer event attributes
368428 --
368429 
368430 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
368431    l_previous_event_id := l_event_id;
368432 
368433    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
368434       (p_application_id           => p_application_id
368435       ,p_primary_ledger_id        => p_primary_ledger_id
368436       ,p_base_ledger_id           => p_base_ledger_id
368437       ,p_target_ledger_id         => p_target_ledger_id
368438       ,p_entity_id                => l_array_entity_id(Idx)
368439       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
368440       ,p_entity_code              => l_array_entity_code(Idx)
368441       ,p_transaction_num          => l_array_transaction_num(Idx)
368442       ,p_event_id                 => l_array_event_id(Idx)
368443       ,p_event_class_code         => l_array_class_code(Idx)
368444       ,p_event_type_code          => l_array_event_type(Idx)
368445       ,p_event_number             => l_array_event_number(Idx)
368446       ,p_event_date               => l_array_event_date(Idx)
368447       ,p_transaction_date         => l_array_transaction_date(Idx)
368448       ,p_reference_num_1          => l_array_reference_num_1(Idx)
368449       ,p_reference_num_2          => l_array_reference_num_2(Idx)
368450       ,p_reference_num_3          => l_array_reference_num_3(Idx)
368451       ,p_reference_num_4          => l_array_reference_num_4(Idx)
368452       ,p_reference_char_1         => l_array_reference_char_1(Idx)
368453       ,p_reference_char_2         => l_array_reference_char_2(Idx)
368454       ,p_reference_char_3         => l_array_reference_char_3(Idx)
368455       ,p_reference_char_4         => l_array_reference_char_4(Idx)
368456       ,p_reference_date_1         => l_array_reference_date_1(Idx)
368457       ,p_reference_date_2         => l_array_reference_date_2(Idx)
368458       ,p_reference_date_3         => l_array_reference_date_3(Idx)
368459       ,p_reference_date_4         => l_array_reference_date_4(Idx)
368460       ,p_event_created_by         => l_array_event_created_by(Idx)
368461       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
368462        --
368463 END IF;
368464 
368465 
368466 
368467 --
368468 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
368469 
368470 l_acct_reversal_source := SUBSTR(NULL, 1,30);
368471 
368472 IF l_continue_with_lines THEN
368473    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
368474       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
368475 
368476       xla_accounting_err_pkg.build_message
368477          (p_appli_s_name            => 'XLA'
368478          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
368479          ,p_token_1                 => 'LINE_NUMBER'
368480          ,p_value_1                 => l_array_extract_line_num(Idx)
368481          ,p_token_2                 => 'PRODUCT_NAME'
368482          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
368483          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
368484          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
368485          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
368486 
368487    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
368488       --
368489       -- following sets the accounting attributes needed to reverse
368490       -- accounting for a distributeion
368491       --
368492 
368493       --
368494       -- 5217187
368495       --
368496       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
368497       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
368498                                        g_array_event(l_event_id).array_value_num('header_index'));
368499       --
368500       --
368501 
368502       -- No reversal code generated
368503 
368504       xla_ae_lines_pkg.SetAcctReversalAttrs
368505          (p_event_id             => l_event_id
368506          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
368507          ,p_calculate_acctd_flag => l_calculate_acctd_flag
368508          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
368509    END IF;
368510 
368511    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
368512        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
368513 
368514 --
368515 AcctLineType_100 (
368516  p_application_id  => p_application_id
368517  ,p_event_id     => l_event_id
368518  ,p_calculate_acctd_flag => l_calculate_acctd_flag
368519  ,p_calculate_g_l_flag => l_calculate_g_l_flag
368520  ,p_actual_flag => l_actual_flag
368521  ,p_balance_type_code => l_balance_type_code
368522  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
368523  
368524  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
368525  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
368526  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
368527  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
368528  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
368529  , p_source_11 => l_array_source_11(Idx)
368530  , p_source_84 => l_array_source_84(Idx)
368531  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
368532  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
368533  , p_source_88 => l_array_source_88(Idx)
368534  , p_source_91 => l_array_source_91(Idx)
368535  , p_source_92 => l_array_source_92(Idx)
368536  , p_source_93 => l_array_source_93(Idx)
368537  , p_source_94 => l_array_source_94(Idx)
368538  , p_source_95 => l_array_source_95(Idx)
368539  , p_source_97 => l_array_source_97(Idx)
368540  );
368541 If(l_balance_type_code = 'A') THEN
368542   l_actual_gain_loss_ref := l_gain_or_loss_ref;
368543 END IF;
368544 
368545 --
368546 
368547 
368548 --
368549 AcctLineType_269 (
368550  p_application_id  => p_application_id
368551  ,p_event_id     => l_event_id
368552  ,p_calculate_acctd_flag => l_calculate_acctd_flag
368553  ,p_calculate_g_l_flag => l_calculate_g_l_flag
368554  ,p_actual_flag => l_actual_flag
368555  ,p_balance_type_code => l_balance_type_code
368556  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
368557  
368558  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
368559  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
368560  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
368561  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
368562  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
368563  , p_source_15 => l_array_source_15(Idx)
368564  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
368565  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
368566  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
368567  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
368568  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
368569  , p_source_84 => l_array_source_84(Idx)
368570  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
368571  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
368572  , p_source_88 => l_array_source_88(Idx)
368573  , p_source_91 => l_array_source_91(Idx)
368574  , p_source_92 => l_array_source_92(Idx)
368575  , p_source_93 => l_array_source_93(Idx)
368576  , p_source_94 => l_array_source_94(Idx)
368577  , p_source_95 => l_array_source_95(Idx)
368578  , p_source_97 => l_array_source_97(Idx)
368579  , p_source_108 => l_array_source_108(Idx)
368580  );
368581 If(l_balance_type_code = 'A') THEN
368582   l_actual_gain_loss_ref := l_gain_or_loss_ref;
368583 END IF;
368584 
368585 --
368586 
368587 
368588 --
368589 AcctLineType_355 (
368590  p_application_id  => p_application_id
368591  ,p_event_id     => l_event_id
368592  ,p_calculate_acctd_flag => l_calculate_acctd_flag
368593  ,p_calculate_g_l_flag => l_calculate_g_l_flag
368594  ,p_actual_flag => l_actual_flag
368595  ,p_balance_type_code => l_balance_type_code
368596  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
368597  
368598  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
368599  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
368600  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
368601  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
368602  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
368603  , p_source_11 => l_array_source_11(Idx)
368604  , p_source_84 => l_array_source_84(Idx)
368605  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
368606  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
368607  , p_source_88 => l_array_source_88(Idx)
368608  , p_source_91 => l_array_source_91(Idx)
368609  , p_source_92 => l_array_source_92(Idx)
368610  , p_source_93 => l_array_source_93(Idx)
368611  , p_source_94 => l_array_source_94(Idx)
368612  , p_source_95 => l_array_source_95(Idx)
368613  , p_source_97 => l_array_source_97(Idx)
368614  );
368615 If(l_balance_type_code = 'A') THEN
368616   l_actual_gain_loss_ref := l_gain_or_loss_ref;
368617 END IF;
368618 
368619 --
368620 
368621       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
368622       -- or secondary ledger that has different currency with primary
368623       -- or alc that is calculated by sla
368624       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
368625             (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'))
368626 
368627 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
368628 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
368629           AND (l_actual_flag = 'A')) THEN
368630         XLA_AE_LINES_PKG.CreateGainOrLossLines(
368631           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
368632          ,p_application_id   => p_application_id
368633          ,p_amb_context_code => 'DEFAULT'
368634          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
368635          ,p_event_class_code => C_EVENT_CLASS_CODE
368636          ,p_event_type_code  => C_EVENT_TYPE_CODE
368637          
368638          ,p_gain_ccid        => -1
368639          ,p_loss_ccid        => -1
368640 
368641          ,p_actual_flag      => l_actual_flag
368642          ,p_enc_flag         => null
368643          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
368644          ,p_enc_g_l_ref      => null
368645          );
368646       END IF;
368647    END IF;
368648 END IF;
368649 
368650    ELSE
368651       --
368652       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
368653       --
368654       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368655          trace
368656             (p_msg      => 'Trancaction revesal option is Y'
368657             ,p_level    => C_LEVEL_STATEMENT
368658             ,p_module   => l_log_module);
368659       END IF;
368660    END IF;
368661 
368662 END LOOP;
368663 l_result := XLA_AE_LINES_PKG.InsertLines ;
368664 end loop;
368665 close line_cur;
368666 
368667 
368668 --
368669 -- insert headers into xla_ae_headers_gt table
368670 --
368671 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
368672 
368673 -- insert into errors table here.
368674 
368675 END LOOP;
368676 
368677 --
368678 -- 4865292
368679 --
368680 -- Compare g_hdr_extract_count with event count in
368681 -- CreateHeadersAndLines.
368682 --
368683 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
368684 
368685 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368686    trace (p_msg     => '# rows extracted from header extract objects '
368687                     || ' (running total): '
368688                     || g_hdr_extract_count
368689          ,p_level   => C_LEVEL_STATEMENT
368690          ,p_module  => l_log_module);
368691 END IF;
368692 
368693 CLOSE header_cur;
368694 --
368695 
368696 --
368697 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
368698    trace
368699       (p_msg      => 'END of EventClass_584'
368700       ,p_level    => C_LEVEL_PROCEDURE
368701       ,p_module   => l_log_module);
368702 END IF;
368703 --
368704 RETURN l_result;
368705 EXCEPTION
368706 WHEN xla_exceptions_pkg.application_exception THEN
368707    
368708 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
368709 
368710    
368711 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
368712 
368713    RAISE;
368714 
368715 WHEN NO_DATA_FOUND THEN
368716 
368717 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
368718 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
368719 
368720 FOR header_record IN header_cur
368721 LOOP
368722     l_array_header_events(header_record.event_id) := header_record.event_id;
368723 END LOOP;
368724 
368725 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
368726 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
368727 
368728 fnd_file.put_line(fnd_file.LOG, '                    ');
368729 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
368730 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
368731 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
368732 
368733 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
368734 LOOP
368735 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
368736 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
368737         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
368738 	END IF;
368739 END LOOP;
368740 
368741 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
368742 fnd_file.put_line(fnd_file.LOG, '                    ');
368743 
368744 
368745 xla_exceptions_pkg.raise_message
368746       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_584');
368747 
368748 
368749 WHEN OTHERS THEN
368750    xla_exceptions_pkg.raise_message
368751       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_584');
368752 END EventClass_584;
368753 --
368754 
368755 ---------------------------------------
368756 --
368757 -- PRIVATE PROCEDURE
368758 --         insert_sources_585
368759 --
368760 ----------------------------------------
368761 --
368762 PROCEDURE insert_sources_585(
368763                                 p_target_ledger_id       IN NUMBER
368764                               , p_language               IN VARCHAR2
368765                               , p_sla_ledger_id          IN NUMBER
368766                               , p_pad_start_date         IN DATE
368767                               , p_pad_end_date           IN DATE
368768                          )
368769 IS
368770 
368771 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'OSP';
368772 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'OSP';
368773 p_apps_owner                   VARCHAR2(30);
368774 l_log_module                   VARCHAR2(240);
368775 BEGIN
368776 IF g_log_enabled THEN
368777       l_log_module := C_DEFAULT_MODULE||'.insert_sources_585';
368778 END IF;
368779 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
368780 
368781       trace
368782          (p_msg      => 'BEGIN of insert_sources_585'
368783          ,p_level    => C_LEVEL_PROCEDURE
368784          ,p_module   => l_log_module);
368785 
368786 END IF;
368787 
368788 -- select APPS owner
368789 SELECT oracle_username
368790   INTO p_apps_owner
368791   FROM fnd_oracle_userid
368792  WHERE read_only_flag = 'U'
368793 ;
368794 
368795 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368796       trace
368797          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
368798                         ' - p_language = '||p_language||
368799                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
368800                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
368801                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
368802                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
368803          ,p_level    => C_LEVEL_STATEMENT
368804          ,p_module   => l_log_module);
368805 END IF;
368806 
368807 
368808 --
368809 INSERT INTO xla_diag_sources --hdr1
368810 (
368811         event_id
368812       , ledger_id
368813       , sla_ledger_id
368814       , description_language
368815       , object_name
368816       , object_type_code
368817       , line_number
368818       , source_application_id
368819       , source_type_code
368820       , source_code
368821       , source_value
368822       , source_meaning
368823       , created_by
368824       , creation_date
368825       , last_update_date
368826       , last_updated_by
368827       , last_update_login
368828       , program_update_date
368829       , program_application_id
368830       , program_id
368831       , request_id
368832 )
368833 SELECT
368834         event_id
368835       , p_target_ledger_id
368836       , p_sla_ledger_id
368837       , p_language
368838       , object_name
368839       , object_type_code
368840       , line_number
368841       , source_application_id
368842       , source_type_code
368843       , source_code
368844       , SUBSTR(source_value ,1,1996)
368845       , SUBSTR(source_meaning,1,200)
368846       , xla_environment_pkg.g_Usr_Id
368847       , TRUNC(SYSDATE)
368848       , TRUNC(SYSDATE)
368849       , xla_environment_pkg.g_Usr_Id
368850       , xla_environment_pkg.g_Login_Id
368851       , TRUNC(SYSDATE)
368852       , xla_environment_pkg.g_Prog_Appl_Id
368853       , xla_environment_pkg.g_Prog_Id
368854       , xla_environment_pkg.g_Req_Id
368855   FROM (
368856        SELECT xet.event_id                  event_id
368857             , 0                             line_number
368858             , CASE r
368859                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
368860                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
368861                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
368862                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
368863                 WHEN 5 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
368864                 WHEN 6 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
368865                 WHEN 7 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
368866                 WHEN 8 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
368867                 WHEN 9 THEN 'CST_XLA_REP_ITEM_REF_V' 
368868                 WHEN 10 THEN 'CST_XLA_WIP_HEADERS_V' 
368869                 WHEN 11 THEN 'CST_XLA_WIP_HEADERS_V' 
368870                 WHEN 12 THEN 'CST_XLA_WIP_HEADERS_V' 
368871                 WHEN 13 THEN 'CST_XLA_WIP_HEADERS_V' 
368872                 WHEN 14 THEN 'CST_XLA_WIP_HEADERS_V' 
368873                 
368874                ELSE null
368875               END                           object_name
368876             , CASE r
368877                 WHEN 1 THEN 'HEADER' 
368878                 WHEN 2 THEN 'HEADER' 
368879                 WHEN 3 THEN 'HEADER' 
368880                 WHEN 4 THEN 'HEADER' 
368881                 WHEN 5 THEN 'HEADER' 
368882                 WHEN 6 THEN 'HEADER' 
368883                 WHEN 7 THEN 'HEADER' 
368884                 WHEN 8 THEN 'HEADER' 
368885                 WHEN 9 THEN 'HEADER' 
368886                 WHEN 10 THEN 'HEADER' 
368887                 WHEN 11 THEN 'HEADER' 
368888                 WHEN 12 THEN 'HEADER' 
368889                 WHEN 13 THEN 'HEADER' 
368890                 WHEN 14 THEN 'HEADER' 
368891                 
368892                 ELSE null
368893               END                           object_type_code
368894             , CASE r
368895                 WHEN 1 THEN '707' 
368896                 WHEN 2 THEN '707' 
368897                 WHEN 3 THEN '707' 
368898                 WHEN 4 THEN '707' 
368899                 WHEN 5 THEN '707' 
368900                 WHEN 6 THEN '707' 
368901                 WHEN 7 THEN '707' 
368902                 WHEN 8 THEN '707' 
368903                 WHEN 9 THEN '707' 
368904                 WHEN 10 THEN '707' 
368905                 WHEN 11 THEN '707' 
368906                 WHEN 12 THEN '707' 
368907                 WHEN 13 THEN '707' 
368908                 WHEN 14 THEN '707' 
368909                 
368910                 ELSE null
368911               END                           source_application_id
368912             , 'S'             source_type_code
368913             , CASE r
368914                 WHEN 1 THEN 'TRANSACTION_ID' 
368915                 WHEN 2 THEN 'TRANSACTION_UOM' 
368916                 WHEN 3 THEN 'PRIMARY_QUANTITY' 
368917                 WHEN 4 THEN 'WIP_TRANSACTION_TYPE_ID' 
368918                 WHEN 5 THEN 'INV_ITEM_EXPENSE_ACCT' 
368919                 WHEN 6 THEN 'DIS_JOB_BRIDGING_ACCT' 
368920                 WHEN 7 THEN 'WIP_ENTITY_TYPE' 
368921                 WHEN 8 THEN 'FLO_SCH_BRIDGING_ACCT' 
368922                 WHEN 9 THEN 'REP_ITM_BRIDGING_ACCT' 
368923                 WHEN 10 THEN 'DISTRIBUTION_TYPE' 
368924                 WHEN 11 THEN 'CURRENCY_CODE' 
368925                 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE' 
368926                 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE' 
368927                 WHEN 14 THEN 'TRANSFER_TO_GL_INDICATOR' 
368928                 
368929                 ELSE null
368930               END                           source_code
368931             , CASE r
368932                 WHEN 1 THEN TO_CHAR(h6.TRANSACTION_ID)
368933                 WHEN 2 THEN TO_CHAR(h6.TRANSACTION_UOM)
368934                 WHEN 3 THEN TO_CHAR(h6.PRIMARY_QUANTITY)
368935                 WHEN 4 THEN TO_CHAR(h6.WIP_TRANSACTION_TYPE_ID)
368936                 WHEN 5 THEN TO_CHAR(h3.INV_ITEM_EXPENSE_ACCT)
368937                 WHEN 6 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
368938                 WHEN 7 THEN TO_CHAR(h5.WIP_ENTITY_TYPE)
368939                 WHEN 8 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
368940                 WHEN 9 THEN TO_CHAR(h4.REP_ITM_BRIDGING_ACCT)
368941                 WHEN 10 THEN TO_CHAR(h6.DISTRIBUTION_TYPE)
368942                 WHEN 11 THEN TO_CHAR(h6.CURRENCY_CODE)
368943                 WHEN 12 THEN TO_CHAR(h6.CURRENCY_CONVERSION_DATE)
368944                 WHEN 13 THEN TO_CHAR(h6.CURRENCY_CONVERSION_RATE)
368945                 WHEN 14 THEN TO_CHAR(h6.TRANSFER_TO_GL_INDICATOR)
368946                 
368947                 ELSE null
368948               END                           source_value
368949             , CASE r
368950                 WHEN 4 THEN fvl7.meaning
368951                 WHEN 7 THEN fvl55.meaning
368952                 WHEN 10 THEN fvl85.meaning
368953                 WHEN 14 THEN fvl114.meaning
368954                 
368955                 ELSE null
368956               END               source_meaning
368957         FROM xla_events_gt     xet  
368958       , CST_XLA_DISCRETE_JOB_REF_V  h1
368959       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
368960       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h3
368961       , CST_XLA_REP_ITEM_REF_V  h4
368962       , CST_XLA_WIP_ENTITY_REF_V  h5
368963       , CST_XLA_WIP_HEADERS_V  h6
368964   , fnd_lookup_values    fvl7
368965   , fnd_lookup_values    fvl55
368966   , fnd_lookup_values    fvl85
368967   , fnd_lookup_values    fvl114
368968             ,(select rownum r from all_objects where rownum <= 14 and owner = p_apps_owner)
368969        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
368970          AND xet.event_type_code = C_EVENT_TYPE_CODE
368971             AND h6.event_id = xet.event_id
368972  AND h1.dis_job_wip_entity_id  (+) = h6.wip_entity_id AND h2.flo_sch_wip_entity_id  (+) = h6.wip_entity_id AND h3.inventory_item_id  (+) = h6.inventory_item_id  and h3.organization_id  (+) = h6.organization_id AND h4.rep_itm_wip_entity_id  (+) = h6.wip_entity_id  and h4.rep_itm_line_id  (+) = h6.line_id AND h5.wip_entity_id = h6.wip_entity_id   AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
368973   AND fvl7.lookup_code(+)         = h6.WIP_TRANSACTION_TYPE_ID
368974   AND fvl7.view_application_id(+) = 700
368975   AND fvl7.language(+)            = USERENV('LANG')
368976      AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
368977   AND fvl55.lookup_code(+)         = h5.WIP_ENTITY_TYPE
368978   AND fvl55.view_application_id(+) = 700
368979   AND fvl55.language(+)            = USERENV('LANG')
368980      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
368981   AND fvl85.lookup_code(+)         = h6.DISTRIBUTION_TYPE
368982   AND fvl85.view_application_id(+) = 700
368983   AND fvl85.language(+)            = USERENV('LANG')
368984      AND fvl114.lookup_type(+)         = 'YES_NO'
368985   AND fvl114.lookup_code(+)         = h6.TRANSFER_TO_GL_INDICATOR
368986   AND fvl114.view_application_id(+) = 0
368987   AND fvl114.language(+)            = USERENV('LANG')
368988   
368989 )
368990 ;
368991 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
368992 
368993       trace
368994          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
368995          ,p_level    => C_LEVEL_STATEMENT
368996          ,p_module   => l_log_module);
368997 
368998 END IF;
368999 --
369000 
369001 
369002 
369003 --
369004 INSERT INTO xla_diag_sources --line1
369005 (
369006         event_id
369007       , ledger_id
369008       , sla_ledger_id
369009       , description_language
369010       , object_name
369011       , object_type_code
369012       , line_number
369013       , source_application_id
369014       , source_type_code
369015       , source_code
369016       , source_value
369017       , source_meaning
369018       , created_by
369019       , creation_date
369020       , last_update_date
369021       , last_updated_by
369022       , last_update_login
369023       , program_update_date
369024       , program_application_id
369025       , program_id
369026       , request_id
369027 )
369028 SELECT  event_id
369029       , p_target_ledger_id
369030       , p_sla_ledger_id
369031       , p_language
369032       , object_name
369033       , object_type_code
369034       , line_number
369035       , source_application_id
369036       , source_type_code
369037       , source_code
369038       , SUBSTR(source_value,1,1996)
369039       , SUBSTR(source_meaning,1,200)
369040       , xla_environment_pkg.g_Usr_Id
369041       , TRUNC(SYSDATE)
369042       , TRUNC(SYSDATE)
369043       , xla_environment_pkg.g_Usr_Id
369044       , xla_environment_pkg.g_Login_Id
369045       , TRUNC(SYSDATE)
369046       , xla_environment_pkg.g_Prog_Appl_Id
369047       , xla_environment_pkg.g_Prog_Id
369048       , xla_environment_pkg.g_Req_Id
369049   FROM (
369050        SELECT xet.event_id                  event_id
369051             , l7.line_number                 line_number
369052             , CASE r
369053                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
369054                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
369055                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
369056                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
369057                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
369058                 
369059                ELSE null
369060               END                           object_name
369061             , CASE r
369062                 WHEN 1 THEN 'LINE' 
369063                 WHEN 2 THEN 'LINE' 
369064                 WHEN 3 THEN 'LINE' 
369065                 WHEN 4 THEN 'LINE' 
369066                 WHEN 5 THEN 'LINE' 
369067                 
369068                 ELSE null
369069               END                           object_type_code
369070             , CASE r
369071                 WHEN 1 THEN '707' 
369072                 WHEN 2 THEN '707' 
369073                 WHEN 3 THEN '707' 
369074                 WHEN 4 THEN '707' 
369075                 WHEN 5 THEN '707' 
369076                 
369077                 ELSE null
369078               END                           source_application_id
369079             , 'S'             source_type_code
369080             , CASE r
369081                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
369082                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
369083                 WHEN 3 THEN 'ENTERED_AMOUNT' 
369084                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
369085                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
369086                 
369087                 ELSE null
369088               END                           source_code
369089             , CASE r
369090                 WHEN 1 THEN TO_CHAR(l7.CODE_COMBINATION_ID)
369091                 WHEN 2 THEN TO_CHAR(l7.DISTRIBUTION_IDENTIFIER)
369092                 WHEN 3 THEN TO_CHAR(l7.ENTERED_AMOUNT)
369093                 WHEN 4 THEN TO_CHAR(l7.ACCOUNTED_AMOUNT)
369094                 WHEN 5 THEN TO_CHAR(l7.ACCOUNTING_LINE_TYPE_CODE)
369095                 
369096                 ELSE null
369097               END                           source_value
369098             , null              source_meaning
369099          FROM  xla_events_gt     xet  
369100         , CST_XLA_WIP_LINES_V  l7
369101             ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
369102         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
369103           AND xet.event_type_code = C_EVENT_TYPE_CODE
369104             AND l7.event_id          = xet.event_id
369105 
369106 )
369107 ;
369108 --
369109 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
369110 
369111       trace
369112          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
369113          ,p_level    => C_LEVEL_STATEMENT
369114          ,p_module   => l_log_module);
369115 
369116 END IF;
369117 
369118 
369119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
369120       trace
369121          (p_msg      => 'END of insert_sources_585'
369122          ,p_level    => C_LEVEL_PROCEDURE
369123          ,p_module   => l_log_module);
369124 END IF;
369125 EXCEPTION
369126   WHEN xla_exceptions_pkg.application_exception THEN
369127       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
369128             trace
369129                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
369130                ,p_level    => C_LEVEL_EXCEPTION
369131                ,p_module   => l_log_module);
369132       END IF;
369133       RAISE;
369134   WHEN OTHERS THEN
369135       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
369136             trace
369137                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
369138                ,p_level    => C_LEVEL_EXCEPTION
369139                ,p_module   => l_log_module);
369140        END IF;
369141        xla_exceptions_pkg.raise_message
369142            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_585');
369143 END insert_sources_585;
369144 --
369145 
369146 ---------------------------------------
369147 --
369148 -- PRIVATE FUNCTION
369149 --         EventType_585
369150 --
369151 ----------------------------------------
369152 --
369153 FUNCTION EventType_585
369154        (p_application_id         IN NUMBER
369155        ,p_base_ledger_id         IN NUMBER
369156        ,p_target_ledger_id       IN NUMBER
369157        ,p_language               IN VARCHAR2
369158        ,p_currency_code          IN VARCHAR2
369159        ,p_sla_ledger_id          IN NUMBER
369160        ,p_pad_start_date         IN DATE
369161        ,p_pad_end_date           IN DATE
369162        ,p_primary_ledger_id      IN NUMBER)
369163 RETURN BOOLEAN IS
369164 --
369165 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'OSP';
369166 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'OSP';
369167 
369168 l_calculate_acctd_flag   VARCHAR2(1) :='N';
369169 l_calculate_g_l_flag     VARCHAR2(1) :='N';
369170 --
369171 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369172 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369173 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
369174 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
369175 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369176 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
369177 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
369178 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369179 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
369180 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
369181 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369182 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369183 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369184 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
369185 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
369186 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
369187 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
369188 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
369189 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
369190 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
369191 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
369192 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
369193 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
369194 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
369195 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
369196 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
369197 
369198 l_event_id                             NUMBER;
369199 l_previous_event_id                    NUMBER;
369200 l_first_event_id                       NUMBER;
369201 l_last_event_id                        NUMBER;
369202 
369203 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
369204 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
369205 --
369206 --
369207 l_result                    BOOLEAN := TRUE;
369208 l_rows                      NUMBER  := 1000;
369209 l_event_type_name           VARCHAR2(80) := 'Outside Processing';
369210 l_event_class_name          VARCHAR2(80) := 'Outside Processing';
369211 l_description               VARCHAR2(4000);
369212 l_transaction_reversal      NUMBER;
369213 l_ae_header_id              NUMBER;
369214 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
369215 l_log_module                VARCHAR2(240);
369216 --
369217 l_acct_reversal_source      VARCHAR2(30);
369218 l_trx_reversal_source       VARCHAR2(30);
369219 
369220 l_continue_with_lines       BOOLEAN := TRUE;
369221 --
369222 l_acc_rev_gl_date_source    DATE;                      -- 4262811
369223 --
369224 type t_array_event_id is table of number index by binary_integer;
369225 
369226 l_rec_array_event                    t_rec_array_event;
369227 l_null_rec_array_event               t_rec_array_event;
369228 l_array_ae_header_id                 xla_number_array_type;
369229 l_actual_flag                        VARCHAR2(1) := NULL;
369230 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
369231 l_balance_type_code                  VARCHAR2(1) :=NULL;
369232 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
369233 
369234 --
369235 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
369236 --
369237 
369238 TYPE t_array_source_1 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
369239 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
369240 TYPE t_array_source_6 IS TABLE OF CST_XLA_WIP_HEADERS_V.PRIMARY_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
369241 TYPE t_array_source_7 IS TABLE OF CST_XLA_WIP_HEADERS_V.WIP_TRANSACTION_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
369242 TYPE t_array_source_53 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.INV_ITEM_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
369243 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
369244 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
369245 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
369246 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
369247 TYPE t_array_source_85 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
369248 TYPE t_array_source_88 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
369249 TYPE t_array_source_92 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
369250 TYPE t_array_source_93 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
369251 TYPE t_array_source_114 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
369252 
369253 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
369254 TYPE t_array_source_84 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
369255 TYPE t_array_source_91 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
369256 TYPE t_array_source_95 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
369257 TYPE t_array_source_97 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
369258 
369259 l_array_source_1              t_array_source_1;
369260 l_array_source_4              t_array_source_4;
369261 l_array_source_6              t_array_source_6;
369262 l_array_source_7              t_array_source_7;
369263 l_array_source_7_meaning      t_array_lookup_meaning;
369264 l_array_source_53              t_array_source_53;
369265 l_array_source_54              t_array_source_54;
369266 l_array_source_55              t_array_source_55;
369267 l_array_source_55_meaning      t_array_lookup_meaning;
369268 l_array_source_56              t_array_source_56;
369269 l_array_source_57              t_array_source_57;
369270 l_array_source_85              t_array_source_85;
369271 l_array_source_85_meaning      t_array_lookup_meaning;
369272 l_array_source_88              t_array_source_88;
369273 l_array_source_92              t_array_source_92;
369274 l_array_source_93              t_array_source_93;
369275 l_array_source_114              t_array_source_114;
369276 l_array_source_114_meaning      t_array_lookup_meaning;
369277 
369278 l_array_source_11      t_array_source_11;
369279 l_array_source_84      t_array_source_84;
369280 l_array_source_91      t_array_source_91;
369281 l_array_source_95      t_array_source_95;
369282 l_array_source_97      t_array_source_97;
369283 
369284 --
369285 CURSOR header_cur
369286 IS
369287 SELECT /*+ leading(xet) cardinality(xet,1) */
369288 -- Event Type Code: OSP
369289 -- Event Class Code: OSP
369290     xet.entity_id
369291   , xet.legal_entity_id
369292   , xet.entity_code
369293   , xet.transaction_number
369294   , xet.event_id
369295   , xet.event_class_code
369296   , xet.event_type_code
369297   , xet.event_number
369298   , xet.event_date
369299   , xet.transaction_date
369300   , xet.reference_num_1
369301   , xet.reference_num_2
369302   , xet.reference_num_3
369303   , xet.reference_num_4
369304   , xet.reference_char_1
369305   , xet.reference_char_2
369306   , xet.reference_char_3
369307   , xet.reference_char_4
369308   , xet.reference_date_1
369309   , xet.reference_date_2
369310   , xet.reference_date_3
369311   , xet.reference_date_4
369312   , xet.event_created_by
369313   , xet.budgetary_control_flag 
369314   , h6.TRANSACTION_ID    source_1
369315   , h6.TRANSACTION_UOM    source_4
369316   , h6.PRIMARY_QUANTITY    source_6
369317   , h6.WIP_TRANSACTION_TYPE_ID    source_7
369318   , fvl7.meaning   source_7_meaning
369319   , h3.INV_ITEM_EXPENSE_ACCT    source_53
369320   , h1.DIS_JOB_BRIDGING_ACCT    source_54
369321   , h5.WIP_ENTITY_TYPE    source_55
369322   , fvl55.meaning   source_55_meaning
369323   , h2.FLO_SCH_BRIDGING_ACCT    source_56
369324   , h4.REP_ITM_BRIDGING_ACCT    source_57
369325   , h6.DISTRIBUTION_TYPE    source_85
369326   , fvl85.meaning   source_85_meaning
369327   , h6.CURRENCY_CODE    source_88
369328   , h6.CURRENCY_CONVERSION_DATE    source_92
369329   , h6.CURRENCY_CONVERSION_RATE    source_93
369330   , h6.TRANSFER_TO_GL_INDICATOR    source_114
369331   , fvl114.meaning   source_114_meaning
369332   FROM xla_events_gt     xet 
369333   , CST_XLA_DISCRETE_JOB_REF_V  h1
369334   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
369335   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h3
369336   , CST_XLA_REP_ITEM_REF_V  h4
369337   , CST_XLA_WIP_ENTITY_REF_V  h5
369338   , CST_XLA_WIP_HEADERS_V  h6
369339   , fnd_lookup_values    fvl7
369340   , fnd_lookup_values    fvl55
369341   , fnd_lookup_values    fvl85
369342   , fnd_lookup_values    fvl114
369343  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
369344    and xet.event_type_code = C_EVENT_TYPE_CODE
369345    and xet.event_status_code <> 'N'  AND h6.event_id = xet.event_id
369346  AND h1.dis_job_wip_entity_id  (+) = h6.wip_entity_id AND h2.flo_sch_wip_entity_id  (+) = h6.wip_entity_id AND h3.INVENTORY_ITEM_ID  (+) = h6.INVENTORY_ITEM_ID  AND h3.ORGANIZATION_ID  (+) = h6.ORGANIZATION_ID AND h4.rep_itm_wip_entity_id  (+) = h6.wip_entity_id  AND h4.rep_itm_line_id  (+) = h6.line_id AND h5.wip_entity_id = h6.wip_entity_id   AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
369347   AND fvl7.lookup_code(+)         = h6.WIP_TRANSACTION_TYPE_ID
369348   AND fvl7.view_application_id(+) = 700
369349   AND fvl7.language(+)            = USERENV('LANG')
369350      AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
369351   AND fvl55.lookup_code(+)         = h5.WIP_ENTITY_TYPE
369352   AND fvl55.view_application_id(+) = 700
369353   AND fvl55.language(+)            = USERENV('LANG')
369354      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
369355   AND fvl85.lookup_code(+)         = h6.DISTRIBUTION_TYPE
369356   AND fvl85.view_application_id(+) = 700
369357   AND fvl85.language(+)            = USERENV('LANG')
369358      AND fvl114.lookup_type(+)         = 'YES_NO'
369359   AND fvl114.lookup_code(+)         = h6.TRANSFER_TO_GL_INDICATOR
369360   AND fvl114.view_application_id(+) = 0
369361   AND fvl114.language(+)            = USERENV('LANG')
369362   
369363  ORDER BY event_id
369364 ;
369365 
369366 
369367 --
369368 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
369369 IS
369370 SELECT /*+ leading(xet) cardinality(xet,1) */
369371 -- Event Type Code: OSP
369372 -- Event Class Code: OSP
369373     xet.entity_id
369374    ,xet.legal_entity_id
369375    ,xet.entity_code
369376    ,xet.transaction_number
369377    ,xet.event_id
369378    ,xet.event_class_code
369379    ,xet.event_type_code
369380    ,xet.event_number
369381    ,xet.event_date
369382    ,xet.transaction_date
369383    ,xet.reference_num_1
369384    ,xet.reference_num_2
369385    ,xet.reference_num_3
369386    ,xet.reference_num_4
369387    ,xet.reference_char_1
369388    ,xet.reference_char_2
369389    ,xet.reference_char_3
369390    ,xet.reference_char_4
369391    ,xet.reference_date_1
369392    ,xet.reference_date_2
369393    ,xet.reference_date_3
369394    ,xet.reference_date_4
369395    ,xet.event_created_by
369396    ,xet.budgetary_control_flag  , l7.LINE_NUMBER  
369397   , l7.CODE_COMBINATION_ID    source_11
369398   , l7.DISTRIBUTION_IDENTIFIER    source_84
369399   , l7.ENTERED_AMOUNT    source_91
369400   , l7.ACCOUNTED_AMOUNT    source_95
369401   , l7.ACCOUNTING_LINE_TYPE_CODE    source_97
369402   FROM xla_events_gt     xet 
369403   , CST_XLA_WIP_LINES_V  l7
369404  WHERE xet.event_id between x_first_event_id and x_last_event_id
369405    and xet.event_date between p_pad_start_date and p_pad_end_date
369406    and xet.event_type_code = C_EVENT_TYPE_CODE
369407    and xet.event_status_code <> 'N'   AND l7.event_id      = xet.event_id
369408 ;
369409 
369410 --
369411 BEGIN
369412 IF g_log_enabled THEN
369413    l_log_module := C_DEFAULT_MODULE||'.EventType_585';
369414 END IF;
369415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
369416    trace
369417       (p_msg      => 'BEGIN of EventType_585'
369418       ,p_level    => C_LEVEL_PROCEDURE
369419       ,p_module   => l_log_module);
369420 END IF;
369421 
369422 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
369423    trace
369424       (p_msg      => 'p_application_id = '||p_application_id||
369425                      ' - p_base_ledger_id = '||p_base_ledger_id||
369426                      ' - p_target_ledger_id  = '||p_target_ledger_id||
369427                      ' - p_language = '||p_language||
369428                      ' - p_currency_code = '||p_currency_code||
369429                      ' - p_sla_ledger_id = '||p_sla_ledger_id
369430       ,p_level    => C_LEVEL_STATEMENT
369431       ,p_module   => l_log_module);
369432 END IF;
369433 --
369434 -- initialze arrays
369435 --
369436 g_array_event.DELETE;
369437 l_rec_array_event := l_null_rec_array_event;
369438 --
369439 --------------------------------------
369440 -- 4262811 Initialze MPA Line Number
369441 --------------------------------------
369442 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
369443 
369444 --
369445 
369446 --
369447 OPEN header_cur;
369448 --
369449 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
369450    trace
369451    (p_msg      => 'SQL - FETCH header_cur'
369452    ,p_level    => C_LEVEL_STATEMENT
369453    ,p_module   => l_log_module);
369454 END IF;
369455 --
369456 LOOP
369457 FETCH header_cur BULK COLLECT INTO
369458         l_array_entity_id
369459       , l_array_legal_entity_id
369460       , l_array_entity_code
369461       , l_array_transaction_num
369462       , l_array_event_id
369463       , l_array_class_code
369464       , l_array_event_type
369465       , l_array_event_number
369466       , l_array_event_date
369467       , l_array_transaction_date
369468       , l_array_reference_num_1
369469       , l_array_reference_num_2
369470       , l_array_reference_num_3
369471       , l_array_reference_num_4
369472       , l_array_reference_char_1
369473       , l_array_reference_char_2
369474       , l_array_reference_char_3
369475       , l_array_reference_char_4
369476       , l_array_reference_date_1
369477       , l_array_reference_date_2
369478       , l_array_reference_date_3
369479       , l_array_reference_date_4
369480       , l_array_event_created_by
369481       , l_array_budgetary_control_flag 
369482       , l_array_source_1
369483       , l_array_source_4
369484       , l_array_source_6
369485       , l_array_source_7
369486       , l_array_source_7_meaning
369487       , l_array_source_53
369488       , l_array_source_54
369489       , l_array_source_55
369490       , l_array_source_55_meaning
369491       , l_array_source_56
369492       , l_array_source_57
369493       , l_array_source_85
369494       , l_array_source_85_meaning
369495       , l_array_source_88
369496       , l_array_source_92
369497       , l_array_source_93
369498       , l_array_source_114
369499       , l_array_source_114_meaning
369500       LIMIT l_rows;
369501 --
369502 IF (C_LEVEL_EVENT >= g_log_level) THEN
369503    trace
369504    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
369505    ,p_level    => C_LEVEL_EVENT
369506    ,p_module   => l_log_module);
369507 END IF;
369508 --
369509 EXIT WHEN l_array_entity_id.COUNT = 0;
369510 
369511 -- initialize arrays
369512 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
369513 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
369514 
369515 --
369516 -- Bug 4458708
369517 --
369518 XLA_AE_LINES_PKG.g_LineNumber := 0;
369519 
369520 
369521 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
369522 g_last_hdr_idx := l_array_event_id.LAST;
369523 --
369524 -- loop for the headers. Each iteration is for each header extract row
369525 -- fetched in header cursor
369526 --
369527 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
369528 
369529 --
369530 -- set event info as cache for other routines to refer event attributes
369531 --
369532 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
369533    (p_application_id           => p_application_id
369534    ,p_primary_ledger_id        => p_primary_ledger_id
369535    ,p_base_ledger_id           => p_base_ledger_id
369536    ,p_target_ledger_id         => p_target_ledger_id
369537    ,p_entity_id                => l_array_entity_id(hdr_idx)
369538    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
369539    ,p_entity_code              => l_array_entity_code(hdr_idx)
369540    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
369541    ,p_event_id                 => l_array_event_id(hdr_idx)
369542    ,p_event_class_code         => l_array_class_code(hdr_idx)
369543    ,p_event_type_code          => l_array_event_type(hdr_idx)
369544    ,p_event_number             => l_array_event_number(hdr_idx)
369545    ,p_event_date               => l_array_event_date(hdr_idx)
369546    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
369547    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
369548    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
369549    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
369550    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
369551    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
369552    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
369553    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
369554    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
369555    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
369556    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
369557    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
369558    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
369559    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
369560    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
369561 
369562 --
369563 -- set the status of entry to C_VALID (0)
369564 --
369565 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
369566 
369567 --
369568 -- initialize a row for ae header
369569 --
369570 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
369571 
369572 l_event_id := l_array_event_id(hdr_idx);
369573 
369574 --
369575 -- storing the hdr_idx for event. May be used by line cursor.
369576 --
369577 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
369578 
369579 --
369580 -- store sources from header extract. This can be improved to
369581 -- store only those sources from header extract that may be used in lines
369582 --
369583 
369584 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
369585 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
369586 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
369587 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
369588 g_array_event(l_event_id).array_value_char('source_7_meaning') := l_array_source_7_meaning(hdr_idx);
369589 g_array_event(l_event_id).array_value_num('source_53') := l_array_source_53(hdr_idx);
369590 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
369591 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
369592 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
369593 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
369594 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
369595 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
369596 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
369597 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
369598 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
369599 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
369600 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
369601 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
369602 
369603 --
369604 -- initilaize the status of ae headers for diffrent balance types
369605 -- the status is initialised to C_NOT_CREATED (2)
369606 --
369607 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
369608 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
369609 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
369610 
369611 --
369612 -- call api to validate and store accounting attributes for header
369613 --
369614 
369615 ------------------------------------------------------------
369616 -- Accrual Reversal : to get date for Standard Source (NONE)
369617 ------------------------------------------------------------
369618 l_acc_rev_gl_date_source := NULL;
369619 
369620      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
369621       l_rec_acct_attrs.array_date_value(1) := 
369622 xla_ae_sources_pkg.GetSystemSourceDate(
369623    p_source_code           => 'XLA_REFERENCE_DATE_1'
369624  , p_source_type_code      => 'Y'
369625  , p_source_application_id =>  602
369626 );
369627      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
369628       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
369629 
369630 
369631 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
369632 
369633 XLA_AE_HEADER_PKG.SetJeCategoryName;
369634 
369635 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
369636 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
369637 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
369638 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
369639 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
369640 
369641 
369642 --
369643 xla_ae_header_pkg.SetHdrDescription(
369644    p_description => Description_2 (
369645    p_application_id => p_application_id 
369646  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
369647  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
369648  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
369649  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
369650  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
369651    )
369652 );
369653 --
369654 
369655 -- No header level analytical criteria
369656 
369657 --
369658 --accounting attribute enhancement, bug 3612931
369659 --
369660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
369661 
369662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
369663    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
369664 
369665    xla_accounting_err_pkg.build_message
369666       (p_appli_s_name            => 'XLA'
369667       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
369668       ,p_token_1                 => 'ACCT_ATTR_NAME'
369669       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
369670       ,p_token_2                 => 'PRODUCT_NAME'
369671       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
369672       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
369673       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
369674       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
369675 
369676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
369677    --
369678    -- following sets the accounting attributes needed to reverse
369679    -- accounting for a distributeion
369680    --
369681    xla_ae_lines_pkg.SetTrxReversalAttrs
369682       (p_event_id              => l_event_id
369683       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
369684       ,p_trx_reversal_source   => l_trx_reversal_source);
369685 
369686 END IF;
369687 
369688 
369689 ----------------------------------------------------------------
369690 -- 4262811 -  update the header statuses to invalid in need be
369691 ----------------------------------------------------------------
369692 --
369693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
369694 
369695 
369696   -----------------------------------------------
369697   -- No accrual reversal for the event class/type
369698   -----------------------------------------------
369699 ----------------------------------------------------------------
369700 
369701 --
369702 -- this ends the header loop iteration for one bulk fetch
369703 --
369704 END LOOP;
369705 
369706 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
369707 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
369708 
369709 --
369710 -- insert dummy rows into lines gt table that were created due to
369711 -- transaction reversals
369712 --
369713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
369714    l_result := XLA_AE_LINES_PKG.InsertLines;
369715 END IF;
369716 
369717 --
369718 -- reset the temp_line_num for each set of events fetched from header
369719 -- cursor rather than doing it for each new event in line cursor
369720 -- Bug 3939231
369721 --
369722 xla_ae_lines_pkg.g_temp_line_num := 0;
369723 
369724 
369725 
369726 --
369727 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
369728 --
369729 --
369730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
369731 
369732       trace
369733          (p_msg      => 'SQL - FETCH line_cur'
369734          ,p_level    => C_LEVEL_STATEMENT
369735          ,p_module   => l_log_module);
369736 
369737 END IF;
369738 --
369739 --
369740 LOOP
369741   --
369742   FETCH line_cur BULK COLLECT INTO
369743         l_array_entity_id
369744       , l_array_legal_entity_id
369745       , l_array_entity_code
369746       , l_array_transaction_num
369747       , l_array_event_id
369748       , l_array_class_code
369749       , l_array_event_type
369750       , l_array_event_number
369751       , l_array_event_date
369752       , l_array_transaction_date
369753       , l_array_reference_num_1
369754       , l_array_reference_num_2
369755       , l_array_reference_num_3
369756       , l_array_reference_num_4
369757       , l_array_reference_char_1
369758       , l_array_reference_char_2
369759       , l_array_reference_char_3
369760       , l_array_reference_char_4
369761       , l_array_reference_date_1
369762       , l_array_reference_date_2
369763       , l_array_reference_date_3
369764       , l_array_reference_date_4
369765       , l_array_event_created_by
369766       , l_array_budgetary_control_flag
369767       , l_array_extract_line_num 
369768       , l_array_source_11
369769       , l_array_source_84
369770       , l_array_source_91
369771       , l_array_source_95
369772       , l_array_source_97
369773       LIMIT l_rows;
369774 
369775   --
369776   IF (C_LEVEL_EVENT >= g_log_level) THEN
369777             trace
369778                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
369779                ,p_level    => C_LEVEL_EVENT
369780                ,p_module   => l_log_module);
369781   END IF;
369782   --
369783   EXIT WHEN l_array_entity_id.count = 0;
369784 
369785   XLA_AE_LINES_PKG.g_rec_lines := null;
369786 
369787 --
369788 -- Bug 4458708
369789 --
369790 XLA_AE_LINES_PKG.g_LineNumber := 0;
369791 --
369792 --
369793 
369794 FOR Idx IN 1..l_array_event_id.count LOOP
369795    --
369796    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
369797    --
369798    l_event_id := l_array_event_id(idx);  -- 5648433
369799 
369800    --
369801    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
369802    --
369803 
369804    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
369805              (g_array_event(l_event_id).array_value_num('header_index'))
369806          ,'N'
369807          ) <> 'Y'
369808    THEN
369809       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
369810          trace
369811             (p_msg      => 'Trancaction revesal option is not Y '
369812             ,p_level    => C_LEVEL_STATEMENT
369813             ,p_module   => l_log_module);
369814       END IF;
369815 
369816 --
369817 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
369818 --
369819 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
369820 --
369821 -- set event info as cache for other routines to refer event attributes
369822 --
369823 
369824 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
369825    l_previous_event_id := l_event_id;
369826 
369827    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
369828       (p_application_id           => p_application_id
369829       ,p_primary_ledger_id        => p_primary_ledger_id
369830       ,p_base_ledger_id           => p_base_ledger_id
369831       ,p_target_ledger_id         => p_target_ledger_id
369832       ,p_entity_id                => l_array_entity_id(Idx)
369833       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
369834       ,p_entity_code              => l_array_entity_code(Idx)
369835       ,p_transaction_num          => l_array_transaction_num(Idx)
369836       ,p_event_id                 => l_array_event_id(Idx)
369837       ,p_event_class_code         => l_array_class_code(Idx)
369838       ,p_event_type_code          => l_array_event_type(Idx)
369839       ,p_event_number             => l_array_event_number(Idx)
369840       ,p_event_date               => l_array_event_date(Idx)
369841       ,p_transaction_date         => l_array_transaction_date(Idx)
369842       ,p_reference_num_1          => l_array_reference_num_1(Idx)
369843       ,p_reference_num_2          => l_array_reference_num_2(Idx)
369844       ,p_reference_num_3          => l_array_reference_num_3(Idx)
369845       ,p_reference_num_4          => l_array_reference_num_4(Idx)
369846       ,p_reference_char_1         => l_array_reference_char_1(Idx)
369847       ,p_reference_char_2         => l_array_reference_char_2(Idx)
369848       ,p_reference_char_3         => l_array_reference_char_3(Idx)
369849       ,p_reference_char_4         => l_array_reference_char_4(Idx)
369850       ,p_reference_date_1         => l_array_reference_date_1(Idx)
369851       ,p_reference_date_2         => l_array_reference_date_2(Idx)
369852       ,p_reference_date_3         => l_array_reference_date_3(Idx)
369853       ,p_reference_date_4         => l_array_reference_date_4(Idx)
369854       ,p_event_created_by         => l_array_event_created_by(Idx)
369855       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
369856        --
369857 END IF;
369858 
369859 
369860 
369861 --
369862 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
369863 
369864 l_acct_reversal_source := SUBSTR(NULL, 1,30);
369865 
369866 IF l_continue_with_lines THEN
369867    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
369868       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
369869 
369870       xla_accounting_err_pkg.build_message
369871          (p_appli_s_name            => 'XLA'
369872          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
369873          ,p_token_1                 => 'LINE_NUMBER'
369874          ,p_value_1                 => l_array_extract_line_num(Idx)
369875          ,p_token_2                 => 'PRODUCT_NAME'
369876          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
369877          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
369878          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
369879          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
369880 
369881    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
369882       --
369883       -- following sets the accounting attributes needed to reverse
369884       -- accounting for a distributeion
369885       --
369886 
369887       --
369888       -- 5217187
369889       --
369890       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
369891       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
369892                                        g_array_event(l_event_id).array_value_num('header_index'));
369893       --
369894       --
369895 
369896       -- No reversal code generated
369897 
369898       xla_ae_lines_pkg.SetAcctReversalAttrs
369899          (p_event_id             => l_event_id
369900          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
369901          ,p_calculate_acctd_flag => l_calculate_acctd_flag
369902          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
369903    END IF;
369904 
369905    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
369906        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
369907 
369908 --
369909 AcctLineType_319 (
369910  p_application_id  => p_application_id
369911  ,p_event_id     => l_event_id
369912  ,p_calculate_acctd_flag => l_calculate_acctd_flag
369913  ,p_calculate_g_l_flag => l_calculate_g_l_flag
369914  ,p_actual_flag => l_actual_flag
369915  ,p_balance_type_code => l_balance_type_code
369916  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
369917  
369918  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
369919  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
369920  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
369921  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
369922  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
369923  , p_source_11 => l_array_source_11(Idx)
369924  , p_source_84 => l_array_source_84(Idx)
369925  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
369926  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
369927  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
369928  , p_source_91 => l_array_source_91(Idx)
369929  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
369930  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
369931  , p_source_95 => l_array_source_95(Idx)
369932  , p_source_97 => l_array_source_97(Idx)
369933  );
369934 If(l_balance_type_code = 'A') THEN
369935   l_actual_gain_loss_ref := l_gain_or_loss_ref;
369936 END IF;
369937 
369938 --
369939 
369940 
369941 --
369942 AcctLineType_371 (
369943  p_application_id  => p_application_id
369944  ,p_event_id     => l_event_id
369945  ,p_calculate_acctd_flag => l_calculate_acctd_flag
369946  ,p_calculate_g_l_flag => l_calculate_g_l_flag
369947  ,p_actual_flag => l_actual_flag
369948  ,p_balance_type_code => l_balance_type_code
369949  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
369950  
369951  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
369952  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
369953  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
369954  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
369955  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
369956  , p_source_11 => l_array_source_11(Idx)
369957  , p_source_84 => l_array_source_84(Idx)
369958  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
369959  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
369960  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
369961  , p_source_91 => l_array_source_91(Idx)
369962  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
369963  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
369964  , p_source_95 => l_array_source_95(Idx)
369965  , p_source_97 => l_array_source_97(Idx)
369966  );
369967 If(l_balance_type_code = 'A') THEN
369968   l_actual_gain_loss_ref := l_gain_or_loss_ref;
369969 END IF;
369970 
369971 --
369972 
369973 
369974 --
369975 AcctLineType_413 (
369976  p_application_id  => p_application_id
369977  ,p_event_id     => l_event_id
369978  ,p_calculate_acctd_flag => l_calculate_acctd_flag
369979  ,p_calculate_g_l_flag => l_calculate_g_l_flag
369980  ,p_actual_flag => l_actual_flag
369981  ,p_balance_type_code => l_balance_type_code
369982  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
369983  
369984  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
369985  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
369986  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
369987  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
369988  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
369989  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
369990  , p_source_84 => l_array_source_84(Idx)
369991  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
369992  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
369993  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
369994  , p_source_91 => l_array_source_91(Idx)
369995  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
369996  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
369997  , p_source_95 => l_array_source_95(Idx)
369998  , p_source_97 => l_array_source_97(Idx)
369999  );
370000 If(l_balance_type_code = 'A') THEN
370001   l_actual_gain_loss_ref := l_gain_or_loss_ref;
370002 END IF;
370003 
370004 --
370005 
370006 
370007 --
370008 AcctLineType_463 (
370009  p_application_id  => p_application_id
370010  ,p_event_id     => l_event_id
370011  ,p_calculate_acctd_flag => l_calculate_acctd_flag
370012  ,p_calculate_g_l_flag => l_calculate_g_l_flag
370013  ,p_actual_flag => l_actual_flag
370014  ,p_balance_type_code => l_balance_type_code
370015  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
370016  
370017  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
370018  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
370019  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
370020  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
370021  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
370022  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
370023  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
370024  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
370025  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
370026  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
370027  , p_source_84 => l_array_source_84(Idx)
370028  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
370029  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
370030  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
370031  , p_source_91 => l_array_source_91(Idx)
370032  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
370033  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
370034  , p_source_95 => l_array_source_95(Idx)
370035  , p_source_97 => l_array_source_97(Idx)
370036  );
370037 If(l_balance_type_code = 'A') THEN
370038   l_actual_gain_loss_ref := l_gain_or_loss_ref;
370039 END IF;
370040 
370041 --
370042 
370043 
370044 --
370045 AcctLineType_491 (
370046  p_application_id  => p_application_id
370047  ,p_event_id     => l_event_id
370048  ,p_calculate_acctd_flag => l_calculate_acctd_flag
370049  ,p_calculate_g_l_flag => l_calculate_g_l_flag
370050  ,p_actual_flag => l_actual_flag
370051  ,p_balance_type_code => l_balance_type_code
370052  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
370053  
370054  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
370055  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
370056  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
370057  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
370058  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
370059  , p_source_11 => l_array_source_11(Idx)
370060  , p_source_84 => l_array_source_84(Idx)
370061  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
370062  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
370063  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
370064  , p_source_91 => l_array_source_91(Idx)
370065  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
370066  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
370067  , p_source_95 => l_array_source_95(Idx)
370068  , p_source_97 => l_array_source_97(Idx)
370069  );
370070 If(l_balance_type_code = 'A') THEN
370071   l_actual_gain_loss_ref := l_gain_or_loss_ref;
370072 END IF;
370073 
370074 --
370075 
370076 
370077 --
370078 AcctLineType_504 (
370079  p_application_id  => p_application_id
370080  ,p_event_id     => l_event_id
370081  ,p_calculate_acctd_flag => l_calculate_acctd_flag
370082  ,p_calculate_g_l_flag => l_calculate_g_l_flag
370083  ,p_actual_flag => l_actual_flag
370084  ,p_balance_type_code => l_balance_type_code
370085  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
370086  
370087  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
370088  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
370089  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
370090  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
370091  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
370092  , p_source_11 => l_array_source_11(Idx)
370093  , p_source_84 => l_array_source_84(Idx)
370094  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
370095  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
370096  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
370097  , p_source_91 => l_array_source_91(Idx)
370098  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
370099  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
370100  , p_source_95 => l_array_source_95(Idx)
370101  , p_source_97 => l_array_source_97(Idx)
370102  );
370103 If(l_balance_type_code = 'A') THEN
370104   l_actual_gain_loss_ref := l_gain_or_loss_ref;
370105 END IF;
370106 
370107 --
370108 
370109 
370110 --
370111 AcctLineType_512 (
370112  p_application_id  => p_application_id
370113  ,p_event_id     => l_event_id
370114  ,p_calculate_acctd_flag => l_calculate_acctd_flag
370115  ,p_calculate_g_l_flag => l_calculate_g_l_flag
370116  ,p_actual_flag => l_actual_flag
370117  ,p_balance_type_code => l_balance_type_code
370118  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
370119  
370120  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
370121  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
370122  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
370123  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
370124  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
370125  , p_source_11 => l_array_source_11(Idx)
370126  , p_source_84 => l_array_source_84(Idx)
370127  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
370128  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
370129  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
370130  , p_source_91 => l_array_source_91(Idx)
370131  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
370132  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
370133  , p_source_95 => l_array_source_95(Idx)
370134  , p_source_97 => l_array_source_97(Idx)
370135  );
370136 If(l_balance_type_code = 'A') THEN
370137   l_actual_gain_loss_ref := l_gain_or_loss_ref;
370138 END IF;
370139 
370140 --
370141 
370142 
370143 --
370144 AcctLineType_533 (
370145  p_application_id  => p_application_id
370146  ,p_event_id     => l_event_id
370147  ,p_calculate_acctd_flag => l_calculate_acctd_flag
370148  ,p_calculate_g_l_flag => l_calculate_g_l_flag
370149  ,p_actual_flag => l_actual_flag
370150  ,p_balance_type_code => l_balance_type_code
370151  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
370152  
370153  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
370154  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
370155  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
370156  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
370157  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
370158  , p_source_11 => l_array_source_11(Idx)
370159  , p_source_84 => l_array_source_84(Idx)
370160  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
370161  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
370162  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
370163  , p_source_91 => l_array_source_91(Idx)
370164  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
370165  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
370166  , p_source_95 => l_array_source_95(Idx)
370167  , p_source_97 => l_array_source_97(Idx)
370168  );
370169 If(l_balance_type_code = 'A') THEN
370170   l_actual_gain_loss_ref := l_gain_or_loss_ref;
370171 END IF;
370172 
370173 --
370174 
370175       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
370176       -- or secondary ledger that has different currency with primary
370177       -- or alc that is calculated by sla
370178       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
370179             (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'))
370180 
370181 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
370182 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
370183           AND (l_actual_flag = 'A')) THEN
370184         XLA_AE_LINES_PKG.CreateGainOrLossLines(
370185           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
370186          ,p_application_id   => p_application_id
370187          ,p_amb_context_code => 'DEFAULT'
370188          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
370189          ,p_event_class_code => C_EVENT_CLASS_CODE
370190          ,p_event_type_code  => C_EVENT_TYPE_CODE
370191          
370192          ,p_gain_ccid        => -1
370193          ,p_loss_ccid        => -1
370194 
370195          ,p_actual_flag      => l_actual_flag
370196          ,p_enc_flag         => null
370197          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
370198          ,p_enc_g_l_ref      => null
370199          );
370200       END IF;
370201    END IF;
370202 END IF;
370203 
370204    ELSE
370205       --
370206       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
370207       --
370208       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
370209          trace
370210             (p_msg      => 'Trancaction revesal option is Y'
370211             ,p_level    => C_LEVEL_STATEMENT
370212             ,p_module   => l_log_module);
370213       END IF;
370214    END IF;
370215 
370216 END LOOP;
370217 l_result := XLA_AE_LINES_PKG.InsertLines ;
370218 end loop;
370219 close line_cur;
370220 
370221 
370222 --
370223 -- insert headers into xla_ae_headers_gt table
370224 --
370225 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
370226 
370227 -- insert into errors table here.
370228 
370229 END LOOP;
370230 
370231 --
370232 -- 4865292
370233 --
370234 -- Compare g_hdr_extract_count with event count in
370235 -- CreateHeadersAndLines.
370236 --
370237 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
370238 
370239 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
370240    trace (p_msg     => '# rows extracted from header extract objects '
370241                     || ' (running total): '
370242                     || g_hdr_extract_count
370243          ,p_level   => C_LEVEL_STATEMENT
370244          ,p_module  => l_log_module);
370245 END IF;
370246 
370247 CLOSE header_cur;
370248 --
370249 
370250 --
370251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
370252    trace
370253       (p_msg      => 'END of EventType_585'
370254       ,p_level    => C_LEVEL_PROCEDURE
370255       ,p_module   => l_log_module);
370256 END IF;
370257 --
370258 RETURN l_result;
370259 EXCEPTION
370260 WHEN xla_exceptions_pkg.application_exception THEN
370261    
370262 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
370263 
370264    
370265 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
370266 
370267    RAISE;
370268 
370269 WHEN NO_DATA_FOUND THEN
370270 
370271 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
370272 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
370273 
370274 FOR header_record IN header_cur
370275 LOOP
370276     l_array_header_events(header_record.event_id) := header_record.event_id;
370277 END LOOP;
370278 
370279 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
370280 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
370281 
370282 fnd_file.put_line(fnd_file.LOG, '                    ');
370283 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
370284 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
370285 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
370286 
370287 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
370288 LOOP
370289 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
370290 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
370291         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
370292 	END IF;
370293 END LOOP;
370294 
370295 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
370296 fnd_file.put_line(fnd_file.LOG, '                    ');
370297 
370298 
370299 xla_exceptions_pkg.raise_message
370300       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_585');
370301 
370302 
370303 WHEN OTHERS THEN
370304    xla_exceptions_pkg.raise_message
370305       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_585');
370306 END EventType_585;
370307 --
370308 
370309 ---------------------------------------
370310 --
370311 -- PRIVATE PROCEDURE
370312 --         insert_sources_586
370313 --
370314 ----------------------------------------
370315 --
370316 PROCEDURE insert_sources_586(
370317                                 p_target_ledger_id       IN NUMBER
370318                               , p_language               IN VARCHAR2
370319                               , p_sla_ledger_id          IN NUMBER
370320                               , p_pad_start_date         IN DATE
370321                               , p_pad_end_date           IN DATE
370322                          )
370323 IS
370324 
370325 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
370326 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
370327 p_apps_owner                   VARCHAR2(30);
370328 l_log_module                   VARCHAR2(240);
370329 BEGIN
370330 IF g_log_enabled THEN
370331       l_log_module := C_DEFAULT_MODULE||'.insert_sources_586';
370332 END IF;
370333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
370334 
370335       trace
370336          (p_msg      => 'BEGIN of insert_sources_586'
370337          ,p_level    => C_LEVEL_PROCEDURE
370338          ,p_module   => l_log_module);
370339 
370340 END IF;
370341 
370342 -- select APPS owner
370343 SELECT oracle_username
370344   INTO p_apps_owner
370345   FROM fnd_oracle_userid
370346  WHERE read_only_flag = 'U'
370347 ;
370348 
370349 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
370350       trace
370351          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
370352                         ' - p_language = '||p_language||
370353                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
370354                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
370355                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
370356                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
370357          ,p_level    => C_LEVEL_STATEMENT
370358          ,p_module   => l_log_module);
370359 END IF;
370360 
370361 
370362 --
370363 INSERT INTO xla_diag_sources --hdr2
370364 (
370365         event_id
370366       , ledger_id
370367       , sla_ledger_id
370368       , description_language
370369       , object_name
370370       , object_type_code
370371       , line_number
370372       , source_application_id
370373       , source_type_code
370374       , source_code
370375       , source_value
370376       , source_meaning
370377       , created_by
370378       , creation_date
370379       , last_update_date
370380       , last_updated_by
370381       , last_update_login
370382       , program_update_date
370383       , program_application_id
370384       , program_id
370385       , request_id
370386 )
370387 SELECT
370388         event_id
370389       , p_target_ledger_id
370390       , p_sla_ledger_id
370391       , p_language
370392       , object_name
370393       , object_type_code
370394       , line_number
370395       , source_application_id
370396       , source_type_code
370397       , source_code
370398       , SUBSTR(source_value ,1,1996)
370399       , SUBSTR(source_meaning ,1,200)
370400       , xla_environment_pkg.g_Usr_Id
370401       , TRUNC(SYSDATE)
370402       , TRUNC(SYSDATE)
370403       , xla_environment_pkg.g_Usr_Id
370404       , xla_environment_pkg.g_Login_Id
370405       , TRUNC(SYSDATE)
370406       , xla_environment_pkg.g_Prog_Appl_Id
370407       , xla_environment_pkg.g_Prog_Id
370408       , xla_environment_pkg.g_Req_Id
370409   FROM (
370410        SELECT xet.event_id                  event_id
370411             , 0                          line_number
370412             , CASE r
370413                WHEN 1 THEN 'CST_XLA_RCV_REF_V' 
370414                 WHEN 2 THEN 'CST_XLA_RCV_REF_V' 
370415                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
370416                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
370417                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
370418                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
370419                 WHEN 7 THEN 'PO_DISTS_REF_V' 
370420                 WHEN 8 THEN 'CST_XLA_RCV_REF_V' 
370421                 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V' 
370422                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
370423                 WHEN 11 THEN 'PSA_CST_XLA_PEA_UPG_V' 
370424                 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V' 
370425                 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V' 
370426                 WHEN 14 THEN 'CST_XLA_RCV_HEADERS_V' 
370427                 WHEN 15 THEN 'PO_HEADERS_REF_V' 
370428                 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V' 
370429                 
370430                ELSE null
370431               END                           object_name
370432             , CASE r
370433                 WHEN 1 THEN 'HEADER' 
370434                 WHEN 2 THEN 'HEADER' 
370435                 WHEN 3 THEN 'HEADER' 
370436                 WHEN 4 THEN 'HEADER' 
370437                 WHEN 5 THEN 'HEADER' 
370438                 WHEN 6 THEN 'HEADER' 
370439                 WHEN 7 THEN 'HEADER' 
370440                 WHEN 8 THEN 'HEADER' 
370441                 WHEN 9 THEN 'HEADER' 
370442                 WHEN 10 THEN 'HEADER' 
370443                 WHEN 11 THEN 'HEADER' 
370444                 WHEN 12 THEN 'HEADER' 
370445                 WHEN 13 THEN 'HEADER' 
370446                 WHEN 14 THEN 'HEADER' 
370447                 WHEN 15 THEN 'HEADER' 
370448                 WHEN 16 THEN 'HEADER' 
370449                 
370450                 ELSE null
370451               END                           object_type_code
370452             , CASE r
370453                 WHEN 1 THEN '707' 
370454                 WHEN 2 THEN '707' 
370455                 WHEN 3 THEN '707' 
370456                 WHEN 4 THEN '707' 
370457                 WHEN 5 THEN '707' 
370458                 WHEN 6 THEN '707' 
370459                 WHEN 7 THEN '201' 
370460                 WHEN 8 THEN '707' 
370461                 WHEN 9 THEN '707' 
370462                 WHEN 10 THEN '707' 
370463                 WHEN 11 THEN '707' 
370464                 WHEN 12 THEN '707' 
370465                 WHEN 13 THEN '707' 
370466                 WHEN 14 THEN '707' 
370467                 WHEN 15 THEN '201' 
370468                 WHEN 16 THEN '707' 
370469                 
370470                 ELSE null
370471               END                           source_application_id
370472             , 'S'             source_type_code
370473             , CASE r
370474                 WHEN 1 THEN 'APPLIED_TO_APPL_ID' 
370475                 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
370476                 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE' 
370477                 WHEN 4 THEN 'PO_DISTRIBUTION_ID' 
370478                 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID' 
370479                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
370480                 WHEN 7 THEN 'PO_BUDGET_ACCOUNT' 
370481                 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
370482                 WHEN 9 THEN 'CURRENCY_CODE' 
370483                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
370484                 WHEN 11 THEN 'CST_PEA_ENC_UPG_OPTION' 
370485                 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE' 
370486                 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE' 
370487                 WHEN 14 THEN 'CURRENCY_CONVERSION_TYPE' 
370488                 WHEN 15 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
370489                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
370490                 
370491                 ELSE null
370492               END                           source_code
370493             , CASE r
370494                 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
370495                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
370496                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
370497                 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
370498                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
370499                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
370500                 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
370501                 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
370502                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
370503                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
370504                 WHEN 11 THEN TO_CHAR(h6.CST_PEA_ENC_UPG_OPTION)
370505                 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
370506                 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
370507                 WHEN 14 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
370508                 WHEN 15 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
370509                 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
370510                 
370511                 ELSE null
370512               END                           source_value
370513             , CASE r
370514                 WHEN 6 THEN fvl85.meaning
370515                 WHEN 16 THEN fvl114.meaning
370516                 
370517                 ELSE null
370518               END               source_meaning
370519          FROM xla_events_gt     xet  
370520       , CST_XLA_RCV_HEADERS_V  h1
370521       , CST_XLA_RCV_REF_V  h3
370522       , PO_DISTS_REF_V  h4
370523       , PO_HEADERS_REF_V  h5
370524       , PSA_CST_XLA_PEA_UPG_V  h6
370525   , fnd_lookup_values    fvl85
370526   , fnd_lookup_values    fvl114
370527              ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
370528          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
370529            AND xet.event_class_code = C_EVENT_CLASS_CODE
370530               AND h1.event_id = xet.event_id
370531  AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id  (+)  and h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.ref_rcv_accounting_event_id = h6.accounting_event_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
370532   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
370533   AND fvl85.view_application_id(+) = 700
370534   AND fvl85.language(+)            = USERENV('LANG')
370535      AND fvl114.lookup_type(+)         = 'YES_NO'
370536   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
370537   AND fvl114.view_application_id(+) = 0
370538   AND fvl114.language(+)            = USERENV('LANG')
370539   
370540 )
370541 ;
370542 --
370543 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
370544 
370545       trace
370546          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
370547          ,p_level    => C_LEVEL_STATEMENT
370548          ,p_module   => l_log_module);
370549 
370550 END IF;
370551 --
370552 
370553 
370554 
370555 --
370556 INSERT INTO xla_diag_sources  --line2
370557 (
370558         event_id
370559       , ledger_id
370560       , sla_ledger_id
370561       , description_language
370562       , object_name
370563       , object_type_code
370564       , line_number
370565       , source_application_id
370566       , source_type_code
370567       , source_code
370568       , source_value
370569       , source_meaning
370570       , created_by
370571       , creation_date
370572       , last_update_date
370573       , last_updated_by
370574       , last_update_login
370575       , program_update_date
370576       , program_application_id
370577       , program_id
370578       , request_id
370579 )
370580 SELECT  event_id
370581       , p_target_ledger_id
370582       , p_sla_ledger_id
370583       , p_language
370584       , object_name
370585       , object_type_code
370586       , line_number
370587       , source_application_id
370588       , source_type_code
370589       , source_code
370590       , SUBSTR(source_value,1,1996)
370591       , SUBSTR(source_meaning ,1,200)
370592       , xla_environment_pkg.g_Usr_Id
370593       , TRUNC(SYSDATE)
370594       , TRUNC(SYSDATE)
370595       , xla_environment_pkg.g_Usr_Id
370596       , xla_environment_pkg.g_Login_Id
370597       , TRUNC(SYSDATE)
370598       , xla_environment_pkg.g_Prog_Appl_Id
370599       , xla_environment_pkg.g_Prog_Id
370600       , xla_environment_pkg.g_Req_Id
370601   FROM (
370602        SELECT xet.event_id                  event_id
370603             , l2.line_number                 line_number
370604             , CASE r
370605                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
370606                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
370607                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
370608                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
370609                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
370610                 
370611                ELSE null
370612               END                           object_name
370613             , CASE r
370614                 WHEN 1 THEN 'LINE' 
370615                 WHEN 2 THEN 'LINE' 
370616                 WHEN 3 THEN 'LINE' 
370617                 WHEN 4 THEN 'LINE' 
370618                 WHEN 5 THEN 'LINE' 
370619                 
370620                 ELSE null
370621               END                           object_type_code
370622             , CASE r
370623                 WHEN 1 THEN '707' 
370624                 WHEN 2 THEN '707' 
370625                 WHEN 3 THEN '707' 
370626                 WHEN 4 THEN '707' 
370627                 WHEN 5 THEN '707' 
370628                 
370629                 ELSE null
370630               END                           source_application_id
370631             , 'S'             source_type_code
370632             , CASE r
370633                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
370634                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
370635                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
370636                 WHEN 4 THEN 'ENTERED_AMOUNT' 
370637                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
370638                 
370639                 ELSE null
370640               END                           source_code
370641             , CASE r
370642                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
370643                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
370644                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
370645                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
370646                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
370647                 
370648                 ELSE null
370649               END                           source_value
370650             , null              source_meaning
370651          FROM  xla_events_gt     xet  
370652         , CST_XLA_RCV_LINES_V  l2
370653             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
370654         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
370655           AND xet.event_class_code = C_EVENT_CLASS_CODE
370656             AND l2.event_id          = xet.event_id
370657 
370658 )
370659 ;
370660 --
370661 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
370662 
370663       trace
370664          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
370665          ,p_level    => C_LEVEL_STATEMENT
370666          ,p_module   => l_log_module);
370667 
370668 END IF;
370669 
370670 
370671 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
370672       trace
370673          (p_msg      => 'END of insert_sources_586'
370674          ,p_level    => C_LEVEL_PROCEDURE
370675          ,p_module   => l_log_module);
370676 END IF;
370677 EXCEPTION
370678   WHEN xla_exceptions_pkg.application_exception THEN
370679       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
370680             trace
370681                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
370682                ,p_level    => C_LEVEL_EXCEPTION
370683                ,p_module   => l_log_module);
370684       END IF;
370685       RAISE;
370686   WHEN OTHERS THEN
370687       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
370688             trace
370689                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
370690                ,p_level    => C_LEVEL_EXCEPTION
370691                ,p_module   => l_log_module);
370692        END IF;
370693        xla_exceptions_pkg.raise_message
370694            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_586');
370695 END insert_sources_586;
370696 --
370697 
370698 ---------------------------------------
370699 --
370700 -- PRIVATE FUNCTION
370701 --         EventClass_586
370702 --
370703 ----------------------------------------
370704 --
370705 FUNCTION EventClass_586
370706        (p_application_id         IN NUMBER
370707        ,p_base_ledger_id         IN NUMBER
370708        ,p_target_ledger_id       IN NUMBER
370709        ,p_language               IN VARCHAR2
370710        ,p_currency_code          IN VARCHAR2
370711        ,p_sla_ledger_id          IN NUMBER
370712        ,p_pad_start_date         IN DATE
370713        ,p_pad_end_date           IN DATE
370714        ,p_primary_ledger_id      IN NUMBER)
370715 RETURN BOOLEAN IS
370716 --
370717 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
370718 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
370719 
370720 l_calculate_acctd_flag   VARCHAR2(1) :='N';
370721 l_calculate_g_l_flag     VARCHAR2(1) :='N';
370722 --
370723 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370724 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370725 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
370726 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
370727 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370728 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
370729 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
370730 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370731 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
370732 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
370733 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370734 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370735 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370736 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
370737 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
370738 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
370739 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
370740 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
370741 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
370742 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
370743 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
370744 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
370745 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
370746 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
370747 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
370748 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
370749 
370750 l_event_id                             NUMBER;
370751 l_previous_event_id                    NUMBER;
370752 l_first_event_id                       NUMBER;
370753 l_last_event_id                        NUMBER;
370754 
370755 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
370756 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
370757 --
370758 --
370759 l_result                    BOOLEAN := TRUE;
370760 l_rows                      NUMBER  := 1000;
370761 l_event_type_name           VARCHAR2(80) := 'All';
370762 l_event_class_name          VARCHAR2(80) := 'Period End Accrual';
370763 l_description               VARCHAR2(4000);
370764 l_transaction_reversal      NUMBER;
370765 l_ae_header_id              NUMBER;
370766 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
370767 l_log_module                VARCHAR2(240);
370768 --
370769 l_acct_reversal_source      VARCHAR2(30);
370770 l_trx_reversal_source       VARCHAR2(30);
370771 
370772 l_continue_with_lines       BOOLEAN := TRUE;
370773 --
370774 l_acc_rev_gl_date_source    DATE;                      -- 4262811
370775 --
370776 type t_array_event_id is table of number index by binary_integer;
370777 
370778 l_rec_array_event                    t_rec_array_event;
370779 l_null_rec_array_event               t_rec_array_event;
370780 l_array_ae_header_id                 xla_number_array_type;
370781 l_actual_flag                        VARCHAR2(1) := NULL;
370782 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
370783 l_balance_type_code                  VARCHAR2(1) :=NULL;
370784 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
370785 
370786 --
370787 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
370788 --
370789 
370790 TYPE t_array_source_79 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
370791 TYPE t_array_source_80 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
370792 TYPE t_array_source_81 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
370793 TYPE t_array_source_82 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
370794 TYPE t_array_source_83 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
370795 TYPE t_array_source_85 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
370796 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
370797 TYPE t_array_source_87 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
370798 TYPE t_array_source_88 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
370799 TYPE t_array_source_89 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
370800 TYPE t_array_source_90 IS TABLE OF PSA_CST_XLA_PEA_UPG_V.CST_PEA_ENC_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
370801 TYPE t_array_source_92 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
370802 TYPE t_array_source_93 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
370803 TYPE t_array_source_94 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
370804 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
370805 TYPE t_array_source_114 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
370806 
370807 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
370808 TYPE t_array_source_78 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
370809 TYPE t_array_source_84 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
370810 TYPE t_array_source_91 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
370811 TYPE t_array_source_95 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
370812 
370813 l_array_source_79              t_array_source_79;
370814 l_array_source_80              t_array_source_80;
370815 l_array_source_81              t_array_source_81;
370816 l_array_source_82              t_array_source_82;
370817 l_array_source_83              t_array_source_83;
370818 l_array_source_85              t_array_source_85;
370819 l_array_source_85_meaning      t_array_lookup_meaning;
370820 l_array_source_86              t_array_source_86;
370821 l_array_source_87              t_array_source_87;
370822 l_array_source_88              t_array_source_88;
370823 l_array_source_89              t_array_source_89;
370824 l_array_source_90              t_array_source_90;
370825 l_array_source_92              t_array_source_92;
370826 l_array_source_93              t_array_source_93;
370827 l_array_source_94              t_array_source_94;
370828 l_array_source_96              t_array_source_96;
370829 l_array_source_114              t_array_source_114;
370830 l_array_source_114_meaning      t_array_lookup_meaning;
370831 
370832 l_array_source_11      t_array_source_11;
370833 l_array_source_78      t_array_source_78;
370834 l_array_source_84      t_array_source_84;
370835 l_array_source_91      t_array_source_91;
370836 l_array_source_95      t_array_source_95;
370837 
370838 --
370839 CURSOR header_cur
370840 IS
370841 SELECT /*+ leading(xet) cardinality(xet,1) */
370842 -- Event Class Code: PERIOD_END_ACCRUAL
370843     xet.entity_id
370844    ,xet.legal_entity_id
370845    ,xet.entity_code
370846    ,xet.transaction_number
370847    ,xet.event_id
370848    ,xet.event_class_code
370849    ,xet.event_type_code
370850    ,xet.event_number
370851    ,xet.event_date
370852    ,xet.transaction_date
370853    ,xet.reference_num_1
370854    ,xet.reference_num_2
370855    ,xet.reference_num_3
370856    ,xet.reference_num_4
370857    ,xet.reference_char_1
370858    ,xet.reference_char_2
370859    ,xet.reference_char_3
370860    ,xet.reference_char_4
370861    ,xet.reference_date_1
370862    ,xet.reference_date_2
370863    ,xet.reference_date_3
370864    ,xet.reference_date_4
370865    ,xet.event_created_by
370866    ,xet.budgetary_control_flag 
370867   , h3.APPLIED_TO_APPL_ID    source_79
370868   , h3.APPLIED_TO_DIST_LINK_TYPE    source_80
370869   , h3.APPLIED_TO_ENTITY_CODE    source_81
370870   , h3.PO_DISTRIBUTION_ID    source_82
370871   , h3.APPLIED_TO_PO_DOC_ID    source_83
370872   , h1.DISTRIBUTION_TYPE    source_85
370873   , fvl85.meaning   source_85_meaning
370874   , h4.PO_BUDGET_ACCOUNT    source_86
370875   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
370876   , h1.CURRENCY_CODE    source_88
370877   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
370878   , h6.CST_PEA_ENC_UPG_OPTION    source_90
370879   , h1.CURRENCY_CONVERSION_DATE    source_92
370880   , h1.CURRENCY_CONVERSION_RATE    source_93
370881   , h1.CURRENCY_CONVERSION_TYPE    source_94
370882   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_96
370883   , h1.TRANSFER_TO_GL_INDICATOR    source_114
370884   , fvl114.meaning   source_114_meaning
370885   FROM xla_events_gt     xet 
370886   , CST_XLA_RCV_HEADERS_V  h1
370887   , CST_XLA_RCV_REF_V  h3
370888   , PO_DISTS_REF_V  h4
370889   , PO_HEADERS_REF_V  h5
370890   , PSA_CST_XLA_PEA_UPG_V  h6
370891   , fnd_lookup_values    fvl85
370892   , fnd_lookup_values    fvl114
370893  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
370894    and xet.event_class_code = C_EVENT_CLASS_CODE
370895    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
370896  AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id  (+)  AND h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.ref_rcv_accounting_event_id = h6.accounting_event_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
370897   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
370898   AND fvl85.view_application_id(+) = 700
370899   AND fvl85.language(+)            = USERENV('LANG')
370900      AND fvl114.lookup_type(+)         = 'YES_NO'
370901   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
370902   AND fvl114.view_application_id(+) = 0
370903   AND fvl114.language(+)            = USERENV('LANG')
370904   
370905  ORDER BY event_id
370906 ;
370907 
370908 
370909 --
370910 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
370911 IS
370912 SELECT  /*+ leading(xet) cardinality(xet,1) */
370913 -- Event Class Code: PERIOD_END_ACCRUAL
370914     xet.entity_id
370915    ,xet.legal_entity_id
370916    ,xet.entity_code
370917    ,xet.transaction_number
370918    ,xet.event_id
370919    ,xet.event_class_code
370920    ,xet.event_type_code
370921    ,xet.event_number
370922    ,xet.event_date
370923    ,xet.transaction_date
370924    ,xet.reference_num_1
370925    ,xet.reference_num_2
370926    ,xet.reference_num_3
370927    ,xet.reference_num_4
370928    ,xet.reference_char_1
370929    ,xet.reference_char_2
370930    ,xet.reference_char_3
370931    ,xet.reference_char_4
370932    ,xet.reference_date_1
370933    ,xet.reference_date_2
370934    ,xet.reference_date_3
370935    ,xet.reference_date_4
370936    ,xet.event_created_by
370937    ,xet.budgetary_control_flag
370938  , l2.LINE_NUMBER  
370939   , l2.CODE_COMBINATION_ID    source_11
370940   , l2.RCV_ACCOUNTING_LINE_TYPE    source_78
370941   , l2.DISTRIBUTION_IDENTIFIER    source_84
370942   , l2.ENTERED_AMOUNT    source_91
370943   , l2.ACCOUNTED_AMOUNT    source_95
370944   FROM xla_events_gt     xet 
370945   , CST_XLA_RCV_LINES_V  l2
370946  WHERE xet.event_id between x_first_event_id and x_last_event_id
370947    and xet.event_date between p_pad_start_date and p_pad_end_date
370948    and xet.event_class_code = C_EVENT_CLASS_CODE
370949    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
370950 ;
370951 
370952 --
370953 BEGIN
370954 IF g_log_enabled THEN
370955    l_log_module := C_DEFAULT_MODULE||'.EventClass_586';
370956 END IF;
370957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
370958    trace
370959       (p_msg      => 'BEGIN of EventClass_586'
370960       ,p_level    => C_LEVEL_PROCEDURE
370961       ,p_module   => l_log_module);
370962 END IF;
370963 
370964 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
370965    trace
370966       (p_msg      => 'p_application_id = '||p_application_id||
370967                      ' - p_base_ledger_id = '||p_base_ledger_id||
370968                      ' - p_target_ledger_id  = '||p_target_ledger_id||
370969                      ' - p_language = '||p_language||
370970                      ' - p_currency_code = '||p_currency_code||
370971                      ' - p_sla_ledger_id = '||p_sla_ledger_id
370972       ,p_level    => C_LEVEL_STATEMENT
370973       ,p_module   => l_log_module);
370974 END IF;
370975 --
370976 -- initialze arrays
370977 --
370978 g_array_event.DELETE;
370979 l_rec_array_event := l_null_rec_array_event;
370980 --
370981 --------------------------------------
370982 -- 4262811 Initialze MPA Line Number
370983 --------------------------------------
370984 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
370985 
370986 --
370987 
370988 --
370989 OPEN header_cur;
370990 --
370991 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
370992    trace
370993    (p_msg      => 'SQL - FETCH header_cur'
370994    ,p_level    => C_LEVEL_STATEMENT
370995    ,p_module   => l_log_module);
370996 END IF;
370997 --
370998 LOOP
370999 FETCH header_cur BULK COLLECT INTO
371000         l_array_entity_id
371001       , l_array_legal_entity_id
371002       , l_array_entity_code
371003       , l_array_transaction_num
371004       , l_array_event_id
371005       , l_array_class_code
371006       , l_array_event_type
371007       , l_array_event_number
371008       , l_array_event_date
371009       , l_array_transaction_date
371010       , l_array_reference_num_1
371011       , l_array_reference_num_2
371012       , l_array_reference_num_3
371013       , l_array_reference_num_4
371014       , l_array_reference_char_1
371015       , l_array_reference_char_2
371016       , l_array_reference_char_3
371017       , l_array_reference_char_4
371018       , l_array_reference_date_1
371019       , l_array_reference_date_2
371020       , l_array_reference_date_3
371021       , l_array_reference_date_4
371022       , l_array_event_created_by
371023       , l_array_budgetary_control_flag 
371024       , l_array_source_79
371025       , l_array_source_80
371026       , l_array_source_81
371027       , l_array_source_82
371028       , l_array_source_83
371029       , l_array_source_85
371030       , l_array_source_85_meaning
371031       , l_array_source_86
371032       , l_array_source_87
371033       , l_array_source_88
371034       , l_array_source_89
371035       , l_array_source_90
371036       , l_array_source_92
371037       , l_array_source_93
371038       , l_array_source_94
371039       , l_array_source_96
371040       , l_array_source_114
371041       , l_array_source_114_meaning
371042       LIMIT l_rows;
371043 --
371044 IF (C_LEVEL_EVENT >= g_log_level) THEN
371045    trace
371046    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
371047    ,p_level    => C_LEVEL_EVENT
371048    ,p_module   => l_log_module);
371049 END IF;
371050 --
371051 EXIT WHEN l_array_entity_id.COUNT = 0;
371052 
371053 -- initialize arrays
371054 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
371055 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
371056 
371057 --
371058 -- Bug 4458708
371059 --
371060 XLA_AE_LINES_PKG.g_LineNumber := 0;
371061 
371062 
371063 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
371064 g_last_hdr_idx := l_array_event_id.LAST;
371065 --
371066 -- loop for the headers. Each iteration is for each header extract row
371067 -- fetched in header cursor
371068 --
371069 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
371070 
371071 --
371072 -- set event info as cache for other routines to refer event attributes
371073 --
371074 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
371075    (p_application_id           => p_application_id
371076    ,p_primary_ledger_id        => p_primary_ledger_id
371077    ,p_base_ledger_id           => p_base_ledger_id
371078    ,p_target_ledger_id         => p_target_ledger_id
371079    ,p_entity_id                => l_array_entity_id(hdr_idx)
371080    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
371081    ,p_entity_code              => l_array_entity_code(hdr_idx)
371082    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
371083    ,p_event_id                 => l_array_event_id(hdr_idx)
371084    ,p_event_class_code         => l_array_class_code(hdr_idx)
371085    ,p_event_type_code          => l_array_event_type(hdr_idx)
371086    ,p_event_number             => l_array_event_number(hdr_idx)
371087    ,p_event_date               => l_array_event_date(hdr_idx)
371088    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
371089    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
371090    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
371091    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
371092    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
371093    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
371094    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
371095    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
371096    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
371097    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
371098    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
371099    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
371100    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
371101    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
371102    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
371103 
371104 --
371105 -- set the status of entry to C_VALID (0)
371106 --
371107 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
371108 
371109 --
371110 -- initialize a row for ae header
371111 --
371112 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
371113 
371114 l_event_id := l_array_event_id(hdr_idx);
371115 
371116 --
371117 -- storing the hdr_idx for event. May be used by line cursor.
371118 --
371119 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
371120 
371121 --
371122 -- store sources from header extract. This can be improved to
371123 -- store only those sources from header extract that may be used in lines
371124 --
371125 
371126 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
371127 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
371128 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
371129 g_array_event(l_event_id).array_value_num('source_82') := l_array_source_82(hdr_idx);
371130 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
371131 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
371132 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
371133 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
371134 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
371135 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
371136 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
371137 g_array_event(l_event_id).array_value_char('source_90') := l_array_source_90(hdr_idx);
371138 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
371139 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
371140 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
371141 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
371142 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
371143 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
371144 
371145 --
371146 -- initilaize the status of ae headers for diffrent balance types
371147 -- the status is initialised to C_NOT_CREATED (2)
371148 --
371149 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
371150 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
371151 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
371152 
371153 --
371154 -- call api to validate and store accounting attributes for header
371155 --
371156 
371157 ------------------------------------------------------------
371158 -- Accrual Reversal : to get date for Standard Source (NONE)
371159 ------------------------------------------------------------
371160 l_acc_rev_gl_date_source := NULL;
371161 
371162      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
371163       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
371164      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
371165       l_rec_acct_attrs.array_date_value(2) := 
371166 xla_ae_sources_pkg.GetSystemSourceDate(
371167    p_source_code           => 'XLA_REFERENCE_DATE_1'
371168  , p_source_type_code      => 'Y'
371169  , p_source_application_id =>  602
371170 );
371171      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
371172       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
371173 
371174 
371175 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
371176 
371177 XLA_AE_HEADER_PKG.SetJeCategoryName;
371178 
371179 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
371180 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
371181 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
371182 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
371183 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
371184 
371185 
371186 -- No header level analytical criteria
371187 
371188 --
371189 --accounting attribute enhancement, bug 3612931
371190 --
371191 l_trx_reversal_source := SUBSTR(NULL, 1,30);
371192 
371193 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
371194    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
371195 
371196    xla_accounting_err_pkg.build_message
371197       (p_appli_s_name            => 'XLA'
371198       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
371199       ,p_token_1                 => 'ACCT_ATTR_NAME'
371200       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
371201       ,p_token_2                 => 'PRODUCT_NAME'
371202       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
371203       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
371204       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
371205       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
371206 
371207 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
371208    --
371209    -- following sets the accounting attributes needed to reverse
371210    -- accounting for a distributeion
371211    --
371212    xla_ae_lines_pkg.SetTrxReversalAttrs
371213       (p_event_id              => l_event_id
371214       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
371215       ,p_trx_reversal_source   => l_trx_reversal_source);
371216 
371217 END IF;
371218 
371219 
371220 ----------------------------------------------------------------
371221 -- 4262811 -  update the header statuses to invalid in need be
371222 ----------------------------------------------------------------
371223 --
371224 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
371225 
371226 
371227 --
371228 -- Generate the accrual reversal headers
371229 --
371230 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
371231 
371232 
371233 
371234 -- indicate that the accrual entry has a reversal entry
371235 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
371236 
371237 --
371238 -- initialize a row for ae header
371239 --
371240 g_last_hdr_idx := g_last_hdr_idx + 1;
371241 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
371242                                   p_hdr_idx        => g_last_hdr_idx) ;
371243 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num      (g_last_hdr_idx) := 1;
371244 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
371245                XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
371246 
371247 --
371248 -- record the index for the reversal entry, it will be used by the journal
371249 -- line creation
371250 --
371251 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
371252 
371253 --
371254 -- Populate the GL Date and override the GL date defined in the
371255 -- SetHdrAcctAttrs if necessary
371256 --
371257 
371258               ---------------------- XLA_FIRST_DAY_NEXT_GL_PERIOD ----------------------
371259               XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'XLA_FIRST_DAY_NEXT_GL_PERIOD';
371260               XLA_AE_HEADER_PKG.GetAccrualRevDate(g_last_hdr_idx
371261                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(g_last_hdr_idx)
371262                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
371263                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx));
371264               
371265 
371266 --
371267 -- Update the header status
371268 --
371269 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
371270 
371271 
371272 
371273 END IF;
371274 
371275 
371276 ----------------------------------------------------------------
371277 
371278 --
371279 -- this ends the header loop iteration for one bulk fetch
371280 --
371281 END LOOP;
371282 
371283 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
371284 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
371285 
371286 --
371287 -- insert dummy rows into lines gt table that were created due to
371288 -- transaction reversals
371289 --
371290 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
371291    l_result := XLA_AE_LINES_PKG.InsertLines;
371292 END IF;
371293 
371294 --
371295 -- reset the temp_line_num for each set of events fetched from header
371296 -- cursor rather than doing it for each new event in line cursor
371297 -- Bug 3939231
371298 --
371299 xla_ae_lines_pkg.g_temp_line_num := 0;
371300 
371301 
371302 
371303 --
371304 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
371305 --
371306 --
371307 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
371308 
371309       trace
371310          (p_msg      => 'SQL - FETCH line_cur'
371311          ,p_level    => C_LEVEL_STATEMENT
371312          ,p_module   => l_log_module);
371313 
371314 END IF;
371315 --
371316 --
371317 LOOP
371318   --
371319   FETCH line_cur BULK COLLECT INTO
371320         l_array_entity_id
371321       , l_array_legal_entity_id
371322       , l_array_entity_code
371323       , l_array_transaction_num
371324       , l_array_event_id
371325       , l_array_class_code
371326       , l_array_event_type
371327       , l_array_event_number
371328       , l_array_event_date
371329       , l_array_transaction_date
371330       , l_array_reference_num_1
371331       , l_array_reference_num_2
371332       , l_array_reference_num_3
371333       , l_array_reference_num_4
371334       , l_array_reference_char_1
371335       , l_array_reference_char_2
371336       , l_array_reference_char_3
371337       , l_array_reference_char_4
371338       , l_array_reference_date_1
371339       , l_array_reference_date_2
371340       , l_array_reference_date_3
371341       , l_array_reference_date_4
371342       , l_array_event_created_by
371343       , l_array_budgetary_control_flag
371344       , l_array_extract_line_num 
371345       , l_array_source_11
371346       , l_array_source_78
371347       , l_array_source_84
371348       , l_array_source_91
371349       , l_array_source_95
371350       LIMIT l_rows;
371351 
371352   --
371353   IF (C_LEVEL_EVENT >= g_log_level) THEN
371354             trace
371355                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
371356                ,p_level    => C_LEVEL_EVENT
371357                ,p_module   => l_log_module);
371358   END IF;
371359   --
371360   EXIT WHEN l_array_entity_id.count = 0;
371361 
371362   XLA_AE_LINES_PKG.g_rec_lines := null;
371363 
371364 --
371365 -- Bug 4458708
371366 --
371367 XLA_AE_LINES_PKG.g_LineNumber := 0;
371368 --
371369 --
371370 
371371 FOR Idx IN 1..l_array_event_id.count LOOP
371372    --
371373    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
371374    --
371375    l_event_id := l_array_event_id(idx);  -- 5648433
371376 
371377    --
371378    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
371379    --
371380 
371381    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
371382              (g_array_event(l_event_id).array_value_num('header_index'))
371383          ,'N'
371384          ) <> 'Y'
371385    THEN
371386       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
371387          trace
371388             (p_msg      => 'Trancaction revesal option is not Y '
371389             ,p_level    => C_LEVEL_STATEMENT
371390             ,p_module   => l_log_module);
371391       END IF;
371392 
371393 --
371394 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
371395 --
371396 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
371397 --
371398 -- set event info as cache for other routines to refer event attributes
371399 --
371400 
371401 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
371402    l_previous_event_id := l_event_id;
371403 
371404    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
371405       (p_application_id           => p_application_id
371406       ,p_primary_ledger_id        => p_primary_ledger_id
371407       ,p_base_ledger_id           => p_base_ledger_id
371408       ,p_target_ledger_id         => p_target_ledger_id
371409       ,p_entity_id                => l_array_entity_id(Idx)
371410       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
371411       ,p_entity_code              => l_array_entity_code(Idx)
371412       ,p_transaction_num          => l_array_transaction_num(Idx)
371413       ,p_event_id                 => l_array_event_id(Idx)
371414       ,p_event_class_code         => l_array_class_code(Idx)
371415       ,p_event_type_code          => l_array_event_type(Idx)
371416       ,p_event_number             => l_array_event_number(Idx)
371417       ,p_event_date               => l_array_event_date(Idx)
371418       ,p_transaction_date         => l_array_transaction_date(Idx)
371419       ,p_reference_num_1          => l_array_reference_num_1(Idx)
371420       ,p_reference_num_2          => l_array_reference_num_2(Idx)
371421       ,p_reference_num_3          => l_array_reference_num_3(Idx)
371422       ,p_reference_num_4          => l_array_reference_num_4(Idx)
371423       ,p_reference_char_1         => l_array_reference_char_1(Idx)
371424       ,p_reference_char_2         => l_array_reference_char_2(Idx)
371425       ,p_reference_char_3         => l_array_reference_char_3(Idx)
371426       ,p_reference_char_4         => l_array_reference_char_4(Idx)
371427       ,p_reference_date_1         => l_array_reference_date_1(Idx)
371428       ,p_reference_date_2         => l_array_reference_date_2(Idx)
371429       ,p_reference_date_3         => l_array_reference_date_3(Idx)
371430       ,p_reference_date_4         => l_array_reference_date_4(Idx)
371431       ,p_event_created_by         => l_array_event_created_by(Idx)
371432       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
371433        --
371434 END IF;
371435 
371436 
371437 
371438 --
371439 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
371440 
371441 l_acct_reversal_source := SUBSTR(NULL, 1,30);
371442 
371443 IF l_continue_with_lines THEN
371444    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
371445       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
371446 
371447       xla_accounting_err_pkg.build_message
371448          (p_appli_s_name            => 'XLA'
371449          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
371450          ,p_token_1                 => 'LINE_NUMBER'
371451          ,p_value_1                 => l_array_extract_line_num(Idx)
371452          ,p_token_2                 => 'PRODUCT_NAME'
371453          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
371454          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
371455          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
371456          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
371457 
371458    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
371459       --
371460       -- following sets the accounting attributes needed to reverse
371461       -- accounting for a distributeion
371462       --
371463 
371464       --
371465       -- 5217187
371466       --
371467       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
371468       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
371469                                        g_array_event(l_event_id).array_value_num('header_index'));
371470       --
371471       --
371472 
371473       -- No reversal code generated
371474 
371475       xla_ae_lines_pkg.SetAcctReversalAttrs
371476          (p_event_id             => l_event_id
371477          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
371478          ,p_calculate_acctd_flag => l_calculate_acctd_flag
371479          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
371480    END IF;
371481 
371482    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
371483        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
371484 
371485 --
371486 AcctLineType_37 (
371487  p_application_id  => p_application_id
371488  ,p_event_id     => l_event_id
371489  ,p_calculate_acctd_flag => l_calculate_acctd_flag
371490  ,p_calculate_g_l_flag => l_calculate_g_l_flag
371491  ,p_actual_flag => l_actual_flag
371492  ,p_balance_type_code => l_balance_type_code
371493  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
371494  
371495  , p_source_11 => l_array_source_11(Idx)
371496  , p_source_78 => l_array_source_78(Idx)
371497  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
371498  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
371499  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
371500  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
371501  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
371502  , p_source_84 => l_array_source_84(Idx)
371503  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
371504  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
371505  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
371506  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
371507  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
371508  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
371509  , p_source_90 => g_array_event(l_event_id).array_value_char('source_90')
371510  , p_source_91 => l_array_source_91(Idx)
371511  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
371512  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
371513  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
371514  , p_source_95 => l_array_source_95(Idx)
371515  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
371516  );
371517 If(l_balance_type_code = 'A') THEN
371518   l_actual_gain_loss_ref := l_gain_or_loss_ref;
371519 END IF;
371520 
371521 --
371522 
371523 
371524 --
371525 AcctLineType_43 (
371526  p_application_id  => p_application_id
371527  ,p_event_id     => l_event_id
371528  ,p_calculate_acctd_flag => l_calculate_acctd_flag
371529  ,p_calculate_g_l_flag => l_calculate_g_l_flag
371530  ,p_actual_flag => l_actual_flag
371531  ,p_balance_type_code => l_balance_type_code
371532  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
371533  
371534  , p_source_11 => l_array_source_11(Idx)
371535  , p_source_78 => l_array_source_78(Idx)
371536  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
371537  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
371538  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
371539  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
371540  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
371541  , p_source_84 => l_array_source_84(Idx)
371542  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
371543  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
371544  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
371545  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
371546  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
371547  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
371548  , p_source_90 => g_array_event(l_event_id).array_value_char('source_90')
371549  , p_source_91 => l_array_source_91(Idx)
371550  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
371551  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
371552  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
371553  , p_source_95 => l_array_source_95(Idx)
371554  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
371555  );
371556 If(l_balance_type_code = 'A') THEN
371557   l_actual_gain_loss_ref := l_gain_or_loss_ref;
371558 END IF;
371559 
371560 --
371561 
371562       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
371563       -- or secondary ledger that has different currency with primary
371564       -- or alc that is calculated by sla
371565       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
371566             (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'))
371567 
371568 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
371569 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
371570           AND (l_actual_flag = 'A')) THEN
371571         XLA_AE_LINES_PKG.CreateGainOrLossLines(
371572           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
371573          ,p_application_id   => p_application_id
371574          ,p_amb_context_code => 'DEFAULT'
371575          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
371576          ,p_event_class_code => C_EVENT_CLASS_CODE
371577          ,p_event_type_code  => C_EVENT_TYPE_CODE
371578          
371579          ,p_gain_ccid        => -1
371580          ,p_loss_ccid        => -1
371581 
371582          ,p_actual_flag      => l_actual_flag
371583          ,p_enc_flag         => null
371584          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
371585          ,p_enc_g_l_ref      => null
371586          );
371587       END IF;
371588    END IF;
371589 END IF;
371590 
371591    ELSE
371592       --
371593       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
371594       --
371595       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
371596          trace
371597             (p_msg      => 'Trancaction revesal option is Y'
371598             ,p_level    => C_LEVEL_STATEMENT
371599             ,p_module   => l_log_module);
371600       END IF;
371601    END IF;
371602 
371603 END LOOP;
371604 l_result := XLA_AE_LINES_PKG.InsertLines ;
371605 end loop;
371606 close line_cur;
371607 
371608 
371609 --
371610 -- insert headers into xla_ae_headers_gt table
371611 --
371612 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
371613 
371614 -- insert into errors table here.
371615 
371616 END LOOP;
371617 
371618 --
371619 -- 4865292
371620 --
371621 -- Compare g_hdr_extract_count with event count in
371622 -- CreateHeadersAndLines.
371623 --
371624 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
371625 
371626 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
371627    trace (p_msg     => '# rows extracted from header extract objects '
371628                     || ' (running total): '
371629                     || g_hdr_extract_count
371630          ,p_level   => C_LEVEL_STATEMENT
371631          ,p_module  => l_log_module);
371632 END IF;
371633 
371634 CLOSE header_cur;
371635 --
371636 
371637 --
371638 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
371639    trace
371640       (p_msg      => 'END of EventClass_586'
371641       ,p_level    => C_LEVEL_PROCEDURE
371642       ,p_module   => l_log_module);
371643 END IF;
371644 --
371645 RETURN l_result;
371646 EXCEPTION
371647 WHEN xla_exceptions_pkg.application_exception THEN
371648    
371649 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
371650 
371651    
371652 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
371653 
371654    RAISE;
371655 
371656 WHEN NO_DATA_FOUND THEN
371657 
371658 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
371659 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
371660 
371661 FOR header_record IN header_cur
371662 LOOP
371663     l_array_header_events(header_record.event_id) := header_record.event_id;
371664 END LOOP;
371665 
371666 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
371667 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
371668 
371669 fnd_file.put_line(fnd_file.LOG, '                    ');
371670 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
371671 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
371672 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
371673 
371674 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
371675 LOOP
371676 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
371677 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
371678         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
371679 	END IF;
371680 END LOOP;
371681 
371682 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
371683 fnd_file.put_line(fnd_file.LOG, '                    ');
371684 
371685 
371686 xla_exceptions_pkg.raise_message
371687       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_586');
371688 
371689 
371690 WHEN OTHERS THEN
371691    xla_exceptions_pkg.raise_message
371692       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_586');
371693 END EventClass_586;
371694 --
371695 
371696 ---------------------------------------
371697 --
371698 -- PRIVATE PROCEDURE
371699 --         insert_sources_587
371700 --
371701 ----------------------------------------
371702 --
371703 PROCEDURE insert_sources_587(
371704                                 p_target_ledger_id       IN NUMBER
371705                               , p_language               IN VARCHAR2
371706                               , p_sla_ledger_id          IN NUMBER
371707                               , p_pad_start_date         IN DATE
371708                               , p_pad_end_date           IN DATE
371709                          )
371710 IS
371711 
371712 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_ADJ';
371713 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
371714 p_apps_owner                   VARCHAR2(30);
371715 l_log_module                   VARCHAR2(240);
371716 BEGIN
371717 IF g_log_enabled THEN
371718       l_log_module := C_DEFAULT_MODULE||'.insert_sources_587';
371719 END IF;
371720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
371721 
371722       trace
371723          (p_msg      => 'BEGIN of insert_sources_587'
371724          ,p_level    => C_LEVEL_PROCEDURE
371725          ,p_module   => l_log_module);
371726 
371727 END IF;
371728 
371729 -- select APPS owner
371730 SELECT oracle_username
371731   INTO p_apps_owner
371732   FROM fnd_oracle_userid
371733  WHERE read_only_flag = 'U'
371734 ;
371735 
371736 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
371737       trace
371738          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
371739                         ' - p_language = '||p_language||
371740                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
371741                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
371742                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
371743                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
371744          ,p_level    => C_LEVEL_STATEMENT
371745          ,p_module   => l_log_module);
371746 END IF;
371747 
371748 
371749 --
371750 INSERT INTO xla_diag_sources --hdr1
371751 (
371752         event_id
371753       , ledger_id
371754       , sla_ledger_id
371755       , description_language
371756       , object_name
371757       , object_type_code
371758       , line_number
371759       , source_application_id
371760       , source_type_code
371761       , source_code
371762       , source_value
371763       , source_meaning
371764       , created_by
371765       , creation_date
371766       , last_update_date
371767       , last_updated_by
371768       , last_update_login
371769       , program_update_date
371770       , program_application_id
371771       , program_id
371772       , request_id
371773 )
371774 SELECT
371775         event_id
371776       , p_target_ledger_id
371777       , p_sla_ledger_id
371778       , p_language
371779       , object_name
371780       , object_type_code
371781       , line_number
371782       , source_application_id
371783       , source_type_code
371784       , source_code
371785       , SUBSTR(source_value ,1,1996)
371786       , SUBSTR(source_meaning,1,200)
371787       , xla_environment_pkg.g_Usr_Id
371788       , TRUNC(SYSDATE)
371789       , TRUNC(SYSDATE)
371790       , xla_environment_pkg.g_Usr_Id
371791       , xla_environment_pkg.g_Login_Id
371792       , TRUNC(SYSDATE)
371793       , xla_environment_pkg.g_Prog_Appl_Id
371794       , xla_environment_pkg.g_Prog_Id
371795       , xla_environment_pkg.g_Req_Id
371796   FROM (
371797        SELECT xet.event_id                  event_id
371798             , 0                             line_number
371799             , CASE r
371800                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
371801                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
371802                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
371803                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
371804                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
371805                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
371806                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
371807                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
371808                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
371809                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
371810                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
371811                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
371812                 WHEN 13 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
371813                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
371814                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
371815                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
371816                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
371817                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
371818                 WHEN 19 THEN 'PO_DISTS_REF_V' 
371819                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
371820                 WHEN 21 THEN 'CST_XLA_INV_REF_V' 
371821                 WHEN 22 THEN 'PO_HEADERS_REF_V' 
371822                 WHEN 23 THEN 'PSA_CST_XLA_UPG_V' 
371823                 WHEN 24 THEN 'CST_XLA_INV_REF_V' 
371824                 WHEN 25 THEN 'CST_XLA_INV_HEADERS_V' 
371825                 
371826                ELSE null
371827               END                           object_name
371828             , CASE r
371829                 WHEN 1 THEN 'HEADER' 
371830                 WHEN 2 THEN 'HEADER' 
371831                 WHEN 3 THEN 'HEADER' 
371832                 WHEN 4 THEN 'HEADER' 
371833                 WHEN 5 THEN 'HEADER' 
371834                 WHEN 6 THEN 'HEADER' 
371835                 WHEN 7 THEN 'HEADER' 
371836                 WHEN 8 THEN 'HEADER' 
371837                 WHEN 9 THEN 'HEADER' 
371838                 WHEN 10 THEN 'HEADER' 
371839                 WHEN 11 THEN 'HEADER' 
371840                 WHEN 12 THEN 'HEADER' 
371841                 WHEN 13 THEN 'HEADER' 
371842                 WHEN 14 THEN 'HEADER' 
371843                 WHEN 15 THEN 'HEADER' 
371844                 WHEN 16 THEN 'HEADER' 
371845                 WHEN 17 THEN 'HEADER' 
371846                 WHEN 18 THEN 'HEADER' 
371847                 WHEN 19 THEN 'HEADER' 
371848                 WHEN 20 THEN 'HEADER' 
371849                 WHEN 21 THEN 'HEADER' 
371850                 WHEN 22 THEN 'HEADER' 
371851                 WHEN 23 THEN 'HEADER' 
371852                 WHEN 24 THEN 'HEADER' 
371853                 WHEN 25 THEN 'HEADER' 
371854                 
371855                 ELSE null
371856               END                           object_type_code
371857             , CASE r
371858                 WHEN 1 THEN '707' 
371859                 WHEN 2 THEN '707' 
371860                 WHEN 3 THEN '707' 
371861                 WHEN 4 THEN '707' 
371862                 WHEN 5 THEN '707' 
371863                 WHEN 6 THEN '707' 
371864                 WHEN 7 THEN '707' 
371865                 WHEN 8 THEN '707' 
371866                 WHEN 9 THEN '707' 
371867                 WHEN 10 THEN '707' 
371868                 WHEN 11 THEN '707' 
371869                 WHEN 12 THEN '707' 
371870                 WHEN 13 THEN '707' 
371871                 WHEN 14 THEN '707' 
371872                 WHEN 15 THEN '707' 
371873                 WHEN 16 THEN '707' 
371874                 WHEN 17 THEN '707' 
371875                 WHEN 18 THEN '707' 
371876                 WHEN 19 THEN '201' 
371877                 WHEN 20 THEN '707' 
371878                 WHEN 21 THEN '707' 
371879                 WHEN 22 THEN '201' 
371880                 WHEN 23 THEN '707' 
371881                 WHEN 24 THEN '707' 
371882                 WHEN 25 THEN '707' 
371883                 
371884                 ELSE null
371885               END                           source_application_id
371886             , 'S'             source_type_code
371887             , CASE r
371888                 WHEN 1 THEN 'TRANSACTION_ID' 
371889                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
371890                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
371891                 WHEN 4 THEN 'TRANSACTION_UOM' 
371892                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
371893                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
371894                 WHEN 7 THEN 'PLA_EXPENSE_ACCOUNT' 
371895                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
371896                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
371897                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
371898                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
371899                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
371900                 WHEN 13 THEN 'INV_ORG_PUR_PRICE_VAR_ACCT' 
371901                 WHEN 14 THEN 'APPLIED_TO_APPL_ID' 
371902                 WHEN 15 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
371903                 WHEN 16 THEN 'APPLIED_TO_ENTITY_CODE' 
371904                 WHEN 17 THEN 'APPLIED_TO_PO_DOC_ID' 
371905                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
371906                 WHEN 19 THEN 'PO_BUDGET_ACCOUNT' 
371907                 WHEN 20 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
371908                 WHEN 21 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
371909                 WHEN 22 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
371910                 WHEN 23 THEN 'CST_ENCUM_UPG_OPTION' 
371911                 WHEN 24 THEN 'TXN_PO_DISTRIBUTION_ID' 
371912                 WHEN 25 THEN 'TRANSFER_TO_GL_INDICATOR' 
371913                 
371914                 ELSE null
371915               END                           source_code
371916             , CASE r
371917                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
371918                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
371919                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
371920                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
371921                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
371922                 WHEN 6 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
371923                 WHEN 7 THEN TO_CHAR(h8.PLA_EXPENSE_ACCOUNT)
371924                 WHEN 8 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
371925                 WHEN 9 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
371926                 WHEN 10 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
371927                 WHEN 11 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
371928                 WHEN 12 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
371929                 WHEN 13 THEN TO_CHAR(h3.INV_ORG_PUR_PRICE_VAR_ACCT)
371930                 WHEN 14 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
371931                 WHEN 15 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
371932                 WHEN 16 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
371933                 WHEN 17 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
371934                 WHEN 18 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
371935                 WHEN 19 THEN TO_CHAR(h9.PO_BUDGET_ACCOUNT)
371936                 WHEN 20 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
371937                 WHEN 21 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
371938                 WHEN 22 THEN TO_CHAR(h10.PURCH_ENCUMBRANCE_TYPE_ID)
371939                 WHEN 23 THEN TO_CHAR(h11.CST_ENCUM_UPG_OPTION)
371940                 WHEN 24 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
371941                 WHEN 25 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
371942                 
371943                 ELSE null
371944               END                           source_value
371945             , CASE r
371946                 WHEN 18 THEN fvl85.meaning
371947                 WHEN 25 THEN fvl114.meaning
371948                 
371949                 ELSE null
371950               END               source_meaning
371951         FROM xla_events_gt     xet  
371952       , CST_XLA_INV_HEADERS_V  h1
371953       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
371954       , CST_XLA_INV_REF_V  h4
371955       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
371956       , CST_XLA_INV_TXN_TYPES_REF_V  h7
371957       , CST_XLA_PLA_CATEGORY_REF_V  h8
371958       , PO_DISTS_REF_V  h9
371959       , PO_HEADERS_REF_V  h10
371960       , PSA_CST_XLA_UPG_V  h11
371961   , fnd_lookup_values    fvl85
371962   , fnd_lookup_values    fvl114
371963             ,(select rownum r from all_objects where rownum <= 25 and owner = p_apps_owner)
371964        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
371965          AND xet.event_type_code = C_EVENT_TYPE_CODE
371966             AND h1.event_id = xet.event_id
371967  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h6.inventory_item_id  (+) = h1.inventory_item_id  and h6.organization_id  (+) = h1.organization_id AND h7.inv_transaction_type_id = h1.transaction_type_id AND h8.pla_cat_organization_id  (+) = h1.organization_id 
371968 and h8.pla_cat_item_id          (+) = h1.inventory_item_id 
371969 and h8.pla_subinv_cg            (+) = h1.h_subinv_cg AND h4.txn_po_header_id = h9.po_header_id  (+)  and h4.txn_po_distribution_id = h9.po_distribution_id (+)  AND h4.txn_po_header_id = h10.po_header_id (+)  AND h4.rcv_transaction_id = h11.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
371970   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
371971   AND fvl85.view_application_id(+) = 700
371972   AND fvl85.language(+)            = USERENV('LANG')
371973      AND fvl114.lookup_type(+)         = 'YES_NO'
371974   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
371975   AND fvl114.view_application_id(+) = 0
371976   AND fvl114.language(+)            = USERENV('LANG')
371977   
371978 )
371979 ;
371980 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
371981 
371982       trace
371983          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
371984          ,p_level    => C_LEVEL_STATEMENT
371985          ,p_module   => l_log_module);
371986 
371987 END IF;
371988 --
371989 
371990 
371991 
371992 --
371993 INSERT INTO xla_diag_sources --line1
371994 (
371995         event_id
371996       , ledger_id
371997       , sla_ledger_id
371998       , description_language
371999       , object_name
372000       , object_type_code
372001       , line_number
372002       , source_application_id
372003       , source_type_code
372004       , source_code
372005       , source_value
372006       , source_meaning
372007       , created_by
372008       , creation_date
372009       , last_update_date
372010       , last_updated_by
372011       , last_update_login
372012       , program_update_date
372013       , program_application_id
372014       , program_id
372015       , request_id
372016 )
372017 SELECT  event_id
372018       , p_target_ledger_id
372019       , p_sla_ledger_id
372020       , p_language
372021       , object_name
372022       , object_type_code
372023       , line_number
372024       , source_application_id
372025       , source_type_code
372026       , source_code
372027       , SUBSTR(source_value,1,1996)
372028       , SUBSTR(source_meaning,1,200)
372029       , xla_environment_pkg.g_Usr_Id
372030       , TRUNC(SYSDATE)
372031       , TRUNC(SYSDATE)
372032       , xla_environment_pkg.g_Usr_Id
372033       , xla_environment_pkg.g_Login_Id
372034       , TRUNC(SYSDATE)
372035       , xla_environment_pkg.g_Prog_Appl_Id
372036       , xla_environment_pkg.g_Prog_Id
372037       , xla_environment_pkg.g_Req_Id
372038   FROM (
372039        SELECT xet.event_id                  event_id
372040             , l2.line_number                 line_number
372041             , CASE r
372042                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
372043                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
372044                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
372045                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
372046                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
372047                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
372048                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
372049                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
372050                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
372051                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
372052                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
372053                 WHEN 12 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
372054                 
372055                ELSE null
372056               END                           object_name
372057             , CASE r
372058                 WHEN 1 THEN 'LINE' 
372059                 WHEN 2 THEN 'LINE' 
372060                 WHEN 3 THEN 'LINE' 
372061                 WHEN 4 THEN 'LINE' 
372062                 WHEN 5 THEN 'LINE' 
372063                 WHEN 6 THEN 'LINE' 
372064                 WHEN 7 THEN 'LINE' 
372065                 WHEN 8 THEN 'LINE' 
372066                 WHEN 9 THEN 'LINE' 
372067                 WHEN 10 THEN 'LINE' 
372068                 WHEN 11 THEN 'LINE' 
372069                 WHEN 12 THEN 'LINE' 
372070                 
372071                 ELSE null
372072               END                           object_type_code
372073             , CASE r
372074                 WHEN 1 THEN '707' 
372075                 WHEN 2 THEN '707' 
372076                 WHEN 3 THEN '707' 
372077                 WHEN 4 THEN '707' 
372078                 WHEN 5 THEN '707' 
372079                 WHEN 6 THEN '707' 
372080                 WHEN 7 THEN '707' 
372081                 WHEN 8 THEN '707' 
372082                 WHEN 9 THEN '707' 
372083                 WHEN 10 THEN '707' 
372084                 WHEN 11 THEN '707' 
372085                 WHEN 12 THEN '707' 
372086                 
372087                 ELSE null
372088               END                           source_application_id
372089             , 'S'             source_type_code
372090             , CASE r
372091                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
372092                 WHEN 2 THEN 'COST_ELEMENT_ID' 
372093                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
372094                 WHEN 4 THEN 'CURRENCY_CODE' 
372095                 WHEN 5 THEN 'ENTERED_AMOUNT' 
372096                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
372097                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
372098                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
372099                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
372100                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
372101                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
372102                 WHEN 12 THEN 'ASSET_INVENTORY' 
372103                 
372104                 ELSE null
372105               END                           source_code
372106             , CASE r
372107                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
372108                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
372109                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
372110                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
372111                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
372112                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
372113                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
372114                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
372115                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
372116                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
372117                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
372118                 WHEN 12 THEN TO_CHAR(l5.ASSET_INVENTORY)
372119                 
372120                 ELSE null
372121               END                           source_value
372122             , CASE r
372123                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
372124                           1009615
372125                          ,TO_CHAR(l2.COST_ELEMENT_ID)
372126                          ,'COST_ELEMENT_ID'
372127                          ,'S'
372128                          ,707)
372129                 WHEN 12 THEN fvl110.meaning
372130                 
372131                 ELSE null
372132               END               source_meaning
372133          FROM  xla_events_gt     xet  
372134         , CST_XLA_INV_LINES_V  l2
372135         , CST_XLA_INV_SEC_INVS_REF_V  l5
372136   , fnd_lookup_values    fvl110
372137             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
372138         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
372139           AND xet.event_type_code = C_EVENT_TYPE_CODE
372140             AND l2.event_id          = xet.event_id
372141  AND l5.subinventory  (+) = l2.subinventory_code  and l5.subinv_organization_id  (+) = l2.l_organization_id   AND fvl110.lookup_type(+)         = 'YES_NO'
372142   AND fvl110.lookup_code(+)         = l5.ASSET_INVENTORY
372143   AND fvl110.view_application_id(+) = 0
372144   AND fvl110.language(+)            = USERENV('LANG')
372145   
372146 )
372147 ;
372148 --
372149 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
372150 
372151       trace
372152          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
372153          ,p_level    => C_LEVEL_STATEMENT
372154          ,p_module   => l_log_module);
372155 
372156 END IF;
372157 
372158 
372159 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
372160       trace
372161          (p_msg      => 'END of insert_sources_587'
372162          ,p_level    => C_LEVEL_PROCEDURE
372163          ,p_module   => l_log_module);
372164 END IF;
372165 EXCEPTION
372166   WHEN xla_exceptions_pkg.application_exception THEN
372167       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
372168             trace
372169                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
372170                ,p_level    => C_LEVEL_EXCEPTION
372171                ,p_module   => l_log_module);
372172       END IF;
372173       RAISE;
372174   WHEN OTHERS THEN
372175       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
372176             trace
372177                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
372178                ,p_level    => C_LEVEL_EXCEPTION
372179                ,p_module   => l_log_module);
372180        END IF;
372181        xla_exceptions_pkg.raise_message
372182            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_587');
372183 END insert_sources_587;
372184 --
372185 
372186 ---------------------------------------
372187 --
372188 -- PRIVATE FUNCTION
372189 --         EventType_587
372190 --
372191 ----------------------------------------
372192 --
372193 FUNCTION EventType_587
372194        (p_application_id         IN NUMBER
372195        ,p_base_ledger_id         IN NUMBER
372196        ,p_target_ledger_id       IN NUMBER
372197        ,p_language               IN VARCHAR2
372198        ,p_currency_code          IN VARCHAR2
372199        ,p_sla_ledger_id          IN NUMBER
372200        ,p_pad_start_date         IN DATE
372201        ,p_pad_end_date           IN DATE
372202        ,p_primary_ledger_id      IN NUMBER)
372203 RETURN BOOLEAN IS
372204 --
372205 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_ADJ';
372206 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
372207 
372208 l_calculate_acctd_flag   VARCHAR2(1) :='N';
372209 l_calculate_g_l_flag     VARCHAR2(1) :='N';
372210 --
372211 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372212 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372213 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
372214 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
372215 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372216 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
372217 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
372218 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372219 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
372220 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
372221 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372222 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372223 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372224 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
372225 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
372226 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
372227 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
372228 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
372229 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
372230 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
372231 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
372232 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
372233 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
372234 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
372235 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
372236 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
372237 
372238 l_event_id                             NUMBER;
372239 l_previous_event_id                    NUMBER;
372240 l_first_event_id                       NUMBER;
372241 l_last_event_id                        NUMBER;
372242 
372243 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
372244 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
372245 --
372246 --
372247 l_result                    BOOLEAN := TRUE;
372248 l_rows                      NUMBER  := 1000;
372249 l_event_type_name           VARCHAR2(80) := 'PO Delivery Adjustment';
372250 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
372251 l_description               VARCHAR2(4000);
372252 l_transaction_reversal      NUMBER;
372253 l_ae_header_id              NUMBER;
372254 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
372255 l_log_module                VARCHAR2(240);
372256 --
372257 l_acct_reversal_source      VARCHAR2(30);
372258 l_trx_reversal_source       VARCHAR2(30);
372259 
372260 l_continue_with_lines       BOOLEAN := TRUE;
372261 --
372262 l_acc_rev_gl_date_source    DATE;                      -- 4262811
372263 --
372264 type t_array_event_id is table of number index by binary_integer;
372265 
372266 l_rec_array_event                    t_rec_array_event;
372267 l_null_rec_array_event               t_rec_array_event;
372268 l_array_ae_header_id                 xla_number_array_type;
372269 l_actual_flag                        VARCHAR2(1) := NULL;
372270 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
372271 l_balance_type_code                  VARCHAR2(1) :=NULL;
372272 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
372273 
372274 --
372275 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
372276 --
372277 
372278 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
372279 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
372280 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
372281 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
372282 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
372283 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372284 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372285 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372286 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372287 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372288 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372289 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372290 TYPE t_array_source_58 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_PUR_PRICE_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
372291 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
372292 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
372293 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
372294 TYPE t_array_source_83 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
372295 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
372296 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
372297 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
372298 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
372299 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
372300 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
372301 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
372302 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
372303 
372304 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
372305 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
372306 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
372307 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
372308 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
372309 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
372310 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
372311 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
372312 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
372313 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
372314 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
372315 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
372316 
372317 l_array_source_1              t_array_source_1;
372318 l_array_source_2              t_array_source_2;
372319 l_array_source_3              t_array_source_3;
372320 l_array_source_4              t_array_source_4;
372321 l_array_source_5              t_array_source_5;
372322 l_array_source_22              t_array_source_22;
372323 l_array_source_24              t_array_source_24;
372324 l_array_source_41              t_array_source_41;
372325 l_array_source_42              t_array_source_42;
372326 l_array_source_43              t_array_source_43;
372327 l_array_source_44              t_array_source_44;
372328 l_array_source_45              t_array_source_45;
372329 l_array_source_58              t_array_source_58;
372330 l_array_source_79              t_array_source_79;
372331 l_array_source_80              t_array_source_80;
372332 l_array_source_81              t_array_source_81;
372333 l_array_source_83              t_array_source_83;
372334 l_array_source_85              t_array_source_85;
372335 l_array_source_85_meaning      t_array_lookup_meaning;
372336 l_array_source_86              t_array_source_86;
372337 l_array_source_87              t_array_source_87;
372338 l_array_source_89              t_array_source_89;
372339 l_array_source_96              t_array_source_96;
372340 l_array_source_100              t_array_source_100;
372341 l_array_source_101              t_array_source_101;
372342 l_array_source_114              t_array_source_114;
372343 l_array_source_114_meaning      t_array_lookup_meaning;
372344 
372345 l_array_source_11      t_array_source_11;
372346 l_array_source_15      t_array_source_15;
372347 l_array_source_84      t_array_source_84;
372348 l_array_source_88      t_array_source_88;
372349 l_array_source_91      t_array_source_91;
372350 l_array_source_92      t_array_source_92;
372351 l_array_source_93      t_array_source_93;
372352 l_array_source_94      t_array_source_94;
372353 l_array_source_95      t_array_source_95;
372354 l_array_source_97      t_array_source_97;
372355 l_array_source_108      t_array_source_108;
372356 l_array_source_110      t_array_source_110;
372357 l_array_source_110_meaning      t_array_lookup_meaning;
372358 
372359 --
372360 CURSOR header_cur
372361 IS
372362 SELECT /*+ leading(xet) cardinality(xet,1) */
372363 -- Event Type Code: PO_DEL_ADJ
372364 -- Event Class Code: PURCHASE_ORDER
372365     xet.entity_id
372366   , xet.legal_entity_id
372367   , xet.entity_code
372368   , xet.transaction_number
372369   , xet.event_id
372370   , xet.event_class_code
372371   , xet.event_type_code
372372   , xet.event_number
372373   , xet.event_date
372374   , xet.transaction_date
372375   , xet.reference_num_1
372376   , xet.reference_num_2
372377   , xet.reference_num_3
372378   , xet.reference_num_4
372379   , xet.reference_char_1
372380   , xet.reference_char_2
372381   , xet.reference_char_3
372382   , xet.reference_char_4
372383   , xet.reference_date_1
372384   , xet.reference_date_2
372385   , xet.reference_date_3
372386   , xet.reference_date_4
372387   , xet.event_created_by
372388   , xet.budgetary_control_flag 
372389   , h1.TRANSACTION_ID    source_1
372390   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
372391   , h4.TRANSACTION_QUANTITY    source_3
372392   , h4.TRANSACTION_UOM    source_4
372393   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
372394   , h8.PLA_BRIDGING_ACCOUNT    source_22
372395   , h8.PLA_EXPENSE_ACCOUNT    source_24
372396   , h8.PLA_MATERIAL_ACCOUNT    source_41
372397   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
372398   , h8.PLA_RESOURCE_ACCOUNT    source_43
372399   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
372400   , h8.PLA_OVERHEAD_ACCOUNT    source_45
372401   , h3.INV_ORG_PUR_PRICE_VAR_ACCT    source_58
372402   , h4.APPLIED_TO_APPL_ID    source_79
372403   , h4.APPLIED_TO_DIST_LINK_TYPE    source_80
372404   , h4.APPLIED_TO_ENTITY_CODE    source_81
372405   , h4.APPLIED_TO_PO_DOC_ID    source_83
372406   , h1.DISTRIBUTION_TYPE    source_85
372407   , fvl85.meaning   source_85_meaning
372408   , h9.PO_BUDGET_ACCOUNT    source_86
372409   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
372410   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
372411   , h10.PURCH_ENCUMBRANCE_TYPE_ID    source_96
372412   , h11.CST_ENCUM_UPG_OPTION    source_100
372413   , h4.TXN_PO_DISTRIBUTION_ID    source_101
372414   , h1.TRANSFER_TO_GL_INDICATOR    source_114
372415   , fvl114.meaning   source_114_meaning
372416   FROM xla_events_gt     xet 
372417   , CST_XLA_INV_HEADERS_V  h1
372418   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
372419   , CST_XLA_INV_REF_V  h4
372420   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
372421   , CST_XLA_INV_TXN_TYPES_REF_V  h7
372422   , CST_XLA_PLA_CATEGORY_REF_V  h8
372423   , PO_DISTS_REF_V  h9
372424   , PO_HEADERS_REF_V  h10
372425   , PSA_CST_XLA_UPG_V  h11
372426   , fnd_lookup_values    fvl85
372427   , fnd_lookup_values    fvl114
372428  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
372429    and xet.event_type_code = C_EVENT_TYPE_CODE
372430    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
372431  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
372432 AND h8.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
372433 AND h8.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG AND h4.txn_po_header_id = h9.po_header_id  (+)  AND h4.txn_po_distribution_id = h9.po_distribution_id (+)  AND h4.txn_po_header_id = h10.po_header_id (+)  AND h4.rcv_transaction_id = h11.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
372434   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
372435   AND fvl85.view_application_id(+) = 700
372436   AND fvl85.language(+)            = USERENV('LANG')
372437      AND fvl114.lookup_type(+)         = 'YES_NO'
372438   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
372439   AND fvl114.view_application_id(+) = 0
372440   AND fvl114.language(+)            = USERENV('LANG')
372441   
372442  ORDER BY event_id
372443 ;
372444 
372445 
372446 --
372447 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
372448 IS
372449 SELECT /*+ leading(xet) cardinality(xet,1) */
372450 -- Event Type Code: PO_DEL_ADJ
372451 -- Event Class Code: PURCHASE_ORDER
372452     xet.entity_id
372453    ,xet.legal_entity_id
372454    ,xet.entity_code
372455    ,xet.transaction_number
372456    ,xet.event_id
372457    ,xet.event_class_code
372458    ,xet.event_type_code
372459    ,xet.event_number
372460    ,xet.event_date
372461    ,xet.transaction_date
372462    ,xet.reference_num_1
372463    ,xet.reference_num_2
372464    ,xet.reference_num_3
372465    ,xet.reference_num_4
372466    ,xet.reference_char_1
372467    ,xet.reference_char_2
372468    ,xet.reference_char_3
372469    ,xet.reference_char_4
372470    ,xet.reference_date_1
372471    ,xet.reference_date_2
372472    ,xet.reference_date_3
372473    ,xet.reference_date_4
372474    ,xet.event_created_by
372475    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
372476   , l2.CODE_COMBINATION_ID    source_11
372477   , l2.COST_ELEMENT_ID    source_15
372478   , l2.DISTRIBUTION_IDENTIFIER    source_84
372479   , l2.CURRENCY_CODE    source_88
372480   , l2.ENTERED_AMOUNT    source_91
372481   , l2.CURRENCY_CONVERSION_DATE    source_92
372482   , l2.CURRENCY_CONVERSION_RATE    source_93
372483   , l2.CURRENCY_CONVERSION_TYPE    source_94
372484   , l2.ACCOUNTED_AMOUNT    source_95
372485   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
372486   , l2.L_ORGANIZATION_CODE    source_108
372487   , l5.ASSET_INVENTORY    source_110
372488   , fvl110.meaning   source_110_meaning
372489   FROM xla_events_gt     xet 
372490   , CST_XLA_INV_LINES_V  l2
372491   , CST_XLA_INV_SEC_INVS_REF_V  l5
372492   , fnd_lookup_values    fvl110
372493  WHERE xet.event_id between x_first_event_id and x_last_event_id
372494    and xet.event_date between p_pad_start_date and p_pad_end_date
372495    and xet.event_type_code = C_EVENT_TYPE_CODE
372496    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
372497  AND l5.SUBINVENTORY  (+) = l2.SUBINVENTORY_CODE  AND l5.SUBINV_ORGANIZATION_ID  (+) = l2.L_ORGANIZATION_ID   AND fvl110.lookup_type(+)         = 'YES_NO'
372498   AND fvl110.lookup_code(+)         = l5.ASSET_INVENTORY
372499   AND fvl110.view_application_id(+) = 0
372500   AND fvl110.language(+)            = USERENV('LANG')
372501   ;
372502 
372503 --
372504 BEGIN
372505 IF g_log_enabled THEN
372506    l_log_module := C_DEFAULT_MODULE||'.EventType_587';
372507 END IF;
372508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
372509    trace
372510       (p_msg      => 'BEGIN of EventType_587'
372511       ,p_level    => C_LEVEL_PROCEDURE
372512       ,p_module   => l_log_module);
372513 END IF;
372514 
372515 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
372516    trace
372517       (p_msg      => 'p_application_id = '||p_application_id||
372518                      ' - p_base_ledger_id = '||p_base_ledger_id||
372519                      ' - p_target_ledger_id  = '||p_target_ledger_id||
372520                      ' - p_language = '||p_language||
372521                      ' - p_currency_code = '||p_currency_code||
372522                      ' - p_sla_ledger_id = '||p_sla_ledger_id
372523       ,p_level    => C_LEVEL_STATEMENT
372524       ,p_module   => l_log_module);
372525 END IF;
372526 --
372527 -- initialze arrays
372528 --
372529 g_array_event.DELETE;
372530 l_rec_array_event := l_null_rec_array_event;
372531 --
372532 --------------------------------------
372533 -- 4262811 Initialze MPA Line Number
372534 --------------------------------------
372535 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
372536 
372537 --
372538 
372539 --
372540 OPEN header_cur;
372541 --
372542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
372543    trace
372544    (p_msg      => 'SQL - FETCH header_cur'
372545    ,p_level    => C_LEVEL_STATEMENT
372546    ,p_module   => l_log_module);
372547 END IF;
372548 --
372549 LOOP
372550 FETCH header_cur BULK COLLECT INTO
372551         l_array_entity_id
372552       , l_array_legal_entity_id
372553       , l_array_entity_code
372554       , l_array_transaction_num
372555       , l_array_event_id
372556       , l_array_class_code
372557       , l_array_event_type
372558       , l_array_event_number
372559       , l_array_event_date
372560       , l_array_transaction_date
372561       , l_array_reference_num_1
372562       , l_array_reference_num_2
372563       , l_array_reference_num_3
372564       , l_array_reference_num_4
372565       , l_array_reference_char_1
372566       , l_array_reference_char_2
372567       , l_array_reference_char_3
372568       , l_array_reference_char_4
372569       , l_array_reference_date_1
372570       , l_array_reference_date_2
372571       , l_array_reference_date_3
372572       , l_array_reference_date_4
372573       , l_array_event_created_by
372574       , l_array_budgetary_control_flag 
372575       , l_array_source_1
372576       , l_array_source_2
372577       , l_array_source_3
372578       , l_array_source_4
372579       , l_array_source_5
372580       , l_array_source_22
372581       , l_array_source_24
372582       , l_array_source_41
372583       , l_array_source_42
372584       , l_array_source_43
372585       , l_array_source_44
372586       , l_array_source_45
372587       , l_array_source_58
372588       , l_array_source_79
372589       , l_array_source_80
372590       , l_array_source_81
372591       , l_array_source_83
372592       , l_array_source_85
372593       , l_array_source_85_meaning
372594       , l_array_source_86
372595       , l_array_source_87
372596       , l_array_source_89
372597       , l_array_source_96
372598       , l_array_source_100
372599       , l_array_source_101
372600       , l_array_source_114
372601       , l_array_source_114_meaning
372602       LIMIT l_rows;
372603 --
372604 IF (C_LEVEL_EVENT >= g_log_level) THEN
372605    trace
372606    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
372607    ,p_level    => C_LEVEL_EVENT
372608    ,p_module   => l_log_module);
372609 END IF;
372610 --
372611 EXIT WHEN l_array_entity_id.COUNT = 0;
372612 
372613 -- initialize arrays
372614 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
372615 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
372616 
372617 --
372618 -- Bug 4458708
372619 --
372620 XLA_AE_LINES_PKG.g_LineNumber := 0;
372621 
372622 
372623 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
372624 g_last_hdr_idx := l_array_event_id.LAST;
372625 --
372626 -- loop for the headers. Each iteration is for each header extract row
372627 -- fetched in header cursor
372628 --
372629 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
372630 
372631 --
372632 -- set event info as cache for other routines to refer event attributes
372633 --
372634 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
372635    (p_application_id           => p_application_id
372636    ,p_primary_ledger_id        => p_primary_ledger_id
372637    ,p_base_ledger_id           => p_base_ledger_id
372638    ,p_target_ledger_id         => p_target_ledger_id
372639    ,p_entity_id                => l_array_entity_id(hdr_idx)
372640    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
372641    ,p_entity_code              => l_array_entity_code(hdr_idx)
372642    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
372643    ,p_event_id                 => l_array_event_id(hdr_idx)
372644    ,p_event_class_code         => l_array_class_code(hdr_idx)
372645    ,p_event_type_code          => l_array_event_type(hdr_idx)
372646    ,p_event_number             => l_array_event_number(hdr_idx)
372647    ,p_event_date               => l_array_event_date(hdr_idx)
372648    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
372649    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
372650    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
372651    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
372652    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
372653    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
372654    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
372655    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
372656    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
372657    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
372658    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
372659    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
372660    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
372661    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
372662    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
372663 
372664 --
372665 -- set the status of entry to C_VALID (0)
372666 --
372667 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
372668 
372669 --
372670 -- initialize a row for ae header
372671 --
372672 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
372673 
372674 l_event_id := l_array_event_id(hdr_idx);
372675 
372676 --
372677 -- storing the hdr_idx for event. May be used by line cursor.
372678 --
372679 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
372680 
372681 --
372682 -- store sources from header extract. This can be improved to
372683 -- store only those sources from header extract that may be used in lines
372684 --
372685 
372686 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
372687 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
372688 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
372689 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
372690 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
372691 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
372692 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
372693 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
372694 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
372695 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
372696 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
372697 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
372698 g_array_event(l_event_id).array_value_num('source_58') := l_array_source_58(hdr_idx);
372699 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
372700 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
372701 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
372702 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
372703 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
372704 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
372705 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
372706 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
372707 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
372708 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
372709 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
372710 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
372711 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
372712 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
372713 
372714 --
372715 -- initilaize the status of ae headers for diffrent balance types
372716 -- the status is initialised to C_NOT_CREATED (2)
372717 --
372718 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
372719 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
372720 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
372721 
372722 --
372723 -- call api to validate and store accounting attributes for header
372724 --
372725 
372726 ------------------------------------------------------------
372727 -- Accrual Reversal : to get date for Standard Source (NONE)
372728 ------------------------------------------------------------
372729 l_acc_rev_gl_date_source := NULL;
372730 
372731      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
372732       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
372733      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
372734       l_rec_acct_attrs.array_date_value(2) := 
372735 xla_ae_sources_pkg.GetSystemSourceDate(
372736    p_source_code           => 'XLA_REFERENCE_DATE_1'
372737  , p_source_type_code      => 'Y'
372738  , p_source_application_id =>  602
372739 );
372740      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
372741       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
372742 
372743 
372744 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
372745 
372746 XLA_AE_HEADER_PKG.SetJeCategoryName;
372747 
372748 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
372749 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
372750 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
372751 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
372752 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
372753 
372754 
372755 --
372756 xla_ae_header_pkg.SetHdrDescription(
372757    p_description => Description_1 (
372758    p_application_id => p_application_id 
372759  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
372760  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
372761  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
372762  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
372763  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
372764    )
372765 );
372766 --
372767 
372768 -- No header level analytical criteria
372769 
372770 --
372771 --accounting attribute enhancement, bug 3612931
372772 --
372773 l_trx_reversal_source := SUBSTR(NULL, 1,30);
372774 
372775 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
372776    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
372777 
372778    xla_accounting_err_pkg.build_message
372779       (p_appli_s_name            => 'XLA'
372780       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
372781       ,p_token_1                 => 'ACCT_ATTR_NAME'
372782       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
372783       ,p_token_2                 => 'PRODUCT_NAME'
372784       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
372785       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
372786       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
372787       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
372788 
372789 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
372790    --
372791    -- following sets the accounting attributes needed to reverse
372792    -- accounting for a distributeion
372793    --
372794    xla_ae_lines_pkg.SetTrxReversalAttrs
372795       (p_event_id              => l_event_id
372796       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
372797       ,p_trx_reversal_source   => l_trx_reversal_source);
372798 
372799 END IF;
372800 
372801 
372802 ----------------------------------------------------------------
372803 -- 4262811 -  update the header statuses to invalid in need be
372804 ----------------------------------------------------------------
372805 --
372806 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
372807 
372808 
372809   -----------------------------------------------
372810   -- No accrual reversal for the event class/type
372811   -----------------------------------------------
372812 ----------------------------------------------------------------
372813 
372814 --
372815 -- this ends the header loop iteration for one bulk fetch
372816 --
372817 END LOOP;
372818 
372819 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
372820 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
372821 
372822 --
372823 -- insert dummy rows into lines gt table that were created due to
372824 -- transaction reversals
372825 --
372826 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
372827    l_result := XLA_AE_LINES_PKG.InsertLines;
372828 END IF;
372829 
372830 --
372831 -- reset the temp_line_num for each set of events fetched from header
372832 -- cursor rather than doing it for each new event in line cursor
372833 -- Bug 3939231
372834 --
372835 xla_ae_lines_pkg.g_temp_line_num := 0;
372836 
372837 
372838 
372839 --
372840 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
372841 --
372842 --
372843 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
372844 
372845       trace
372846          (p_msg      => 'SQL - FETCH line_cur'
372847          ,p_level    => C_LEVEL_STATEMENT
372848          ,p_module   => l_log_module);
372849 
372850 END IF;
372851 --
372852 --
372853 LOOP
372854   --
372855   FETCH line_cur BULK COLLECT INTO
372856         l_array_entity_id
372857       , l_array_legal_entity_id
372858       , l_array_entity_code
372859       , l_array_transaction_num
372860       , l_array_event_id
372861       , l_array_class_code
372862       , l_array_event_type
372863       , l_array_event_number
372864       , l_array_event_date
372865       , l_array_transaction_date
372866       , l_array_reference_num_1
372867       , l_array_reference_num_2
372868       , l_array_reference_num_3
372869       , l_array_reference_num_4
372870       , l_array_reference_char_1
372871       , l_array_reference_char_2
372872       , l_array_reference_char_3
372873       , l_array_reference_char_4
372874       , l_array_reference_date_1
372875       , l_array_reference_date_2
372876       , l_array_reference_date_3
372877       , l_array_reference_date_4
372878       , l_array_event_created_by
372879       , l_array_budgetary_control_flag
372880       , l_array_extract_line_num 
372881       , l_array_source_11
372882       , l_array_source_15
372883       , l_array_source_84
372884       , l_array_source_88
372885       , l_array_source_91
372886       , l_array_source_92
372887       , l_array_source_93
372888       , l_array_source_94
372889       , l_array_source_95
372890       , l_array_source_97
372891       , l_array_source_108
372892       , l_array_source_110
372893       , l_array_source_110_meaning
372894       LIMIT l_rows;
372895 
372896   --
372897   IF (C_LEVEL_EVENT >= g_log_level) THEN
372898             trace
372899                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
372900                ,p_level    => C_LEVEL_EVENT
372901                ,p_module   => l_log_module);
372902   END IF;
372903   --
372904   EXIT WHEN l_array_entity_id.count = 0;
372905 
372906   XLA_AE_LINES_PKG.g_rec_lines := null;
372907 
372908 --
372909 -- Bug 4458708
372910 --
372911 XLA_AE_LINES_PKG.g_LineNumber := 0;
372912 --
372913 --
372914 
372915 FOR Idx IN 1..l_array_event_id.count LOOP
372916    --
372917    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
372918    --
372919    l_event_id := l_array_event_id(idx);  -- 5648433
372920 
372921    --
372922    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
372923    --
372924 
372925    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
372926              (g_array_event(l_event_id).array_value_num('header_index'))
372927          ,'N'
372928          ) <> 'Y'
372929    THEN
372930       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
372931          trace
372932             (p_msg      => 'Trancaction revesal option is not Y '
372933             ,p_level    => C_LEVEL_STATEMENT
372934             ,p_module   => l_log_module);
372935       END IF;
372936 
372937 --
372938 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
372939 --
372940 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
372941 --
372942 -- set event info as cache for other routines to refer event attributes
372943 --
372944 
372945 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
372946    l_previous_event_id := l_event_id;
372947 
372948    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
372949       (p_application_id           => p_application_id
372950       ,p_primary_ledger_id        => p_primary_ledger_id
372951       ,p_base_ledger_id           => p_base_ledger_id
372952       ,p_target_ledger_id         => p_target_ledger_id
372953       ,p_entity_id                => l_array_entity_id(Idx)
372954       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
372955       ,p_entity_code              => l_array_entity_code(Idx)
372956       ,p_transaction_num          => l_array_transaction_num(Idx)
372957       ,p_event_id                 => l_array_event_id(Idx)
372958       ,p_event_class_code         => l_array_class_code(Idx)
372959       ,p_event_type_code          => l_array_event_type(Idx)
372960       ,p_event_number             => l_array_event_number(Idx)
372961       ,p_event_date               => l_array_event_date(Idx)
372962       ,p_transaction_date         => l_array_transaction_date(Idx)
372963       ,p_reference_num_1          => l_array_reference_num_1(Idx)
372964       ,p_reference_num_2          => l_array_reference_num_2(Idx)
372965       ,p_reference_num_3          => l_array_reference_num_3(Idx)
372966       ,p_reference_num_4          => l_array_reference_num_4(Idx)
372967       ,p_reference_char_1         => l_array_reference_char_1(Idx)
372968       ,p_reference_char_2         => l_array_reference_char_2(Idx)
372969       ,p_reference_char_3         => l_array_reference_char_3(Idx)
372970       ,p_reference_char_4         => l_array_reference_char_4(Idx)
372971       ,p_reference_date_1         => l_array_reference_date_1(Idx)
372972       ,p_reference_date_2         => l_array_reference_date_2(Idx)
372973       ,p_reference_date_3         => l_array_reference_date_3(Idx)
372974       ,p_reference_date_4         => l_array_reference_date_4(Idx)
372975       ,p_event_created_by         => l_array_event_created_by(Idx)
372976       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
372977        --
372978 END IF;
372979 
372980 
372981 
372982 --
372983 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
372984 
372985 l_acct_reversal_source := SUBSTR(NULL, 1,30);
372986 
372987 IF l_continue_with_lines THEN
372988    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
372989       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
372990 
372991       xla_accounting_err_pkg.build_message
372992          (p_appli_s_name            => 'XLA'
372993          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
372994          ,p_token_1                 => 'LINE_NUMBER'
372995          ,p_value_1                 => l_array_extract_line_num(Idx)
372996          ,p_token_2                 => 'PRODUCT_NAME'
372997          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
372998          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
372999          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
373000          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
373001 
373002    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
373003       --
373004       -- following sets the accounting attributes needed to reverse
373005       -- accounting for a distributeion
373006       --
373007 
373008       --
373009       -- 5217187
373010       --
373011       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
373012       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
373013                                        g_array_event(l_event_id).array_value_num('header_index'));
373014       --
373015       --
373016 
373017       -- No reversal code generated
373018 
373019       xla_ae_lines_pkg.SetAcctReversalAttrs
373020          (p_event_id             => l_event_id
373021          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
373022          ,p_calculate_acctd_flag => l_calculate_acctd_flag
373023          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
373024    END IF;
373025 
373026    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
373027        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
373028 
373029 --
373030 AcctLineType_53 (
373031  p_application_id  => p_application_id
373032  ,p_event_id     => l_event_id
373033  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373034  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373035  ,p_actual_flag => l_actual_flag
373036  ,p_balance_type_code => l_balance_type_code
373037  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373038  
373039  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373040  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373041  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373042  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373043  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373044  , p_source_11 => l_array_source_11(Idx)
373045  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373046  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373047  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373048  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373049  , p_source_84 => l_array_source_84(Idx)
373050  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373051  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373052  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373053  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373054  , p_source_88 => l_array_source_88(Idx)
373055  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373056  , p_source_91 => l_array_source_91(Idx)
373057  , p_source_92 => l_array_source_92(Idx)
373058  , p_source_93 => l_array_source_93(Idx)
373059  , p_source_94 => l_array_source_94(Idx)
373060  , p_source_95 => l_array_source_95(Idx)
373061  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373062  , p_source_97 => l_array_source_97(Idx)
373063  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373064  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373065  );
373066 If(l_balance_type_code = 'A') THEN
373067   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373068 END IF;
373069 
373070 --
373071 
373072 
373073 --
373074 AcctLineType_85 (
373075  p_application_id  => p_application_id
373076  ,p_event_id     => l_event_id
373077  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373078  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373079  ,p_actual_flag => l_actual_flag
373080  ,p_balance_type_code => l_balance_type_code
373081  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373082  
373083  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373084  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373085  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373086  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373087  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373088  , p_source_11 => l_array_source_11(Idx)
373089  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373090  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373091  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373092  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373093  , p_source_84 => l_array_source_84(Idx)
373094  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373095  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373096  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373097  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373098  , p_source_88 => l_array_source_88(Idx)
373099  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373100  , p_source_91 => l_array_source_91(Idx)
373101  , p_source_92 => l_array_source_92(Idx)
373102  , p_source_93 => l_array_source_93(Idx)
373103  , p_source_94 => l_array_source_94(Idx)
373104  , p_source_95 => l_array_source_95(Idx)
373105  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373106  , p_source_97 => l_array_source_97(Idx)
373107  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373108  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373109  );
373110 If(l_balance_type_code = 'A') THEN
373111   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373112 END IF;
373113 
373114 --
373115 
373116 
373117 --
373118 AcctLineType_239 (
373119  p_application_id  => p_application_id
373120  ,p_event_id     => l_event_id
373121  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373122  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373123  ,p_actual_flag => l_actual_flag
373124  ,p_balance_type_code => l_balance_type_code
373125  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373126  
373127  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373128  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373129  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373130  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373131  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373132  , p_source_15 => l_array_source_15(Idx)
373133  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
373134  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
373135  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
373136  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
373137  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
373138  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373139  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373140  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373141  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373142  , p_source_84 => l_array_source_84(Idx)
373143  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373144  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373145  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373146  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373147  , p_source_88 => l_array_source_88(Idx)
373148  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373149  , p_source_91 => l_array_source_91(Idx)
373150  , p_source_92 => l_array_source_92(Idx)
373151  , p_source_93 => l_array_source_93(Idx)
373152  , p_source_94 => l_array_source_94(Idx)
373153  , p_source_95 => l_array_source_95(Idx)
373154  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373155  , p_source_97 => l_array_source_97(Idx)
373156  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373157  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373158  , p_source_108 => l_array_source_108(Idx)
373159  );
373160 If(l_balance_type_code = 'A') THEN
373161   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373162 END IF;
373163 
373164 --
373165 
373166 
373167 --
373168 AcctLineType_314 (
373169  p_application_id  => p_application_id
373170  ,p_event_id     => l_event_id
373171  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373172  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373173  ,p_actual_flag => l_actual_flag
373174  ,p_balance_type_code => l_balance_type_code
373175  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373176  
373177  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373178  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373179  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373180  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373181  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373182  , p_source_11 => l_array_source_11(Idx)
373183  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373184  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373185  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373186  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373187  , p_source_84 => l_array_source_84(Idx)
373188  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373189  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373190  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373191  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373192  , p_source_88 => l_array_source_88(Idx)
373193  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373194  , p_source_91 => l_array_source_91(Idx)
373195  , p_source_92 => l_array_source_92(Idx)
373196  , p_source_93 => l_array_source_93(Idx)
373197  , p_source_94 => l_array_source_94(Idx)
373198  , p_source_95 => l_array_source_95(Idx)
373199  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373200  , p_source_97 => l_array_source_97(Idx)
373201  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373202  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373203  );
373204 If(l_balance_type_code = 'A') THEN
373205   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373206 END IF;
373207 
373208 --
373209 
373210 
373211 --
373212 AcctLineType_356 (
373213  p_application_id  => p_application_id
373214  ,p_event_id     => l_event_id
373215  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373216  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373217  ,p_actual_flag => l_actual_flag
373218  ,p_balance_type_code => l_balance_type_code
373219  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373220  
373221  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373222  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373223  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373224  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373225  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373226  , p_source_11 => l_array_source_11(Idx)
373227  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373228  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373229  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373230  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373231  , p_source_84 => l_array_source_84(Idx)
373232  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373233  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373234  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373235  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373236  , p_source_88 => l_array_source_88(Idx)
373237  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373238  , p_source_91 => l_array_source_91(Idx)
373239  , p_source_92 => l_array_source_92(Idx)
373240  , p_source_93 => l_array_source_93(Idx)
373241  , p_source_94 => l_array_source_94(Idx)
373242  , p_source_95 => l_array_source_95(Idx)
373243  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373244  , p_source_97 => l_array_source_97(Idx)
373245  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373246  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373247  );
373248 If(l_balance_type_code = 'A') THEN
373249   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373250 END IF;
373251 
373252 --
373253 
373254 
373255 --
373256 AcctLineType_386 (
373257  p_application_id  => p_application_id
373258  ,p_event_id     => l_event_id
373259  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373260  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373261  ,p_actual_flag => l_actual_flag
373262  ,p_balance_type_code => l_balance_type_code
373263  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373264  
373265  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373266  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373267  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373268  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373269  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373270  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
373271  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373272  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373273  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373274  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373275  , p_source_84 => l_array_source_84(Idx)
373276  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373277  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373278  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373279  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373280  , p_source_88 => l_array_source_88(Idx)
373281  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373282  , p_source_91 => l_array_source_91(Idx)
373283  , p_source_92 => l_array_source_92(Idx)
373284  , p_source_93 => l_array_source_93(Idx)
373285  , p_source_94 => l_array_source_94(Idx)
373286  , p_source_95 => l_array_source_95(Idx)
373287  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373288  , p_source_97 => l_array_source_97(Idx)
373289  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373290  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373291  , p_source_110 => l_array_source_110(Idx)
373292  , p_source_110_meaning => l_array_source_110_meaning(Idx)
373293  );
373294 If(l_balance_type_code = 'A') THEN
373295   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373296 END IF;
373297 
373298 --
373299 
373300 
373301 --
373302 AcctLineType_412 (
373303  p_application_id  => p_application_id
373304  ,p_event_id     => l_event_id
373305  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373306  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373307  ,p_actual_flag => l_actual_flag
373308  ,p_balance_type_code => l_balance_type_code
373309  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373310  
373311  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373312  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373313  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373314  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373315  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373316  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
373317  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373318  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373319  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373320  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373321  , p_source_84 => l_array_source_84(Idx)
373322  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373323  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373324  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373325  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373326  , p_source_88 => l_array_source_88(Idx)
373327  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373328  , p_source_91 => l_array_source_91(Idx)
373329  , p_source_92 => l_array_source_92(Idx)
373330  , p_source_93 => l_array_source_93(Idx)
373331  , p_source_94 => l_array_source_94(Idx)
373332  , p_source_95 => l_array_source_95(Idx)
373333  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373334  , p_source_97 => l_array_source_97(Idx)
373335  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373336  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373337  , p_source_110 => l_array_source_110(Idx)
373338  , p_source_110_meaning => l_array_source_110_meaning(Idx)
373339  );
373340 If(l_balance_type_code = 'A') THEN
373341   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373342 END IF;
373343 
373344 --
373345 
373346 
373347 --
373348 AcctLineType_490 (
373349  p_application_id  => p_application_id
373350  ,p_event_id     => l_event_id
373351  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373352  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373353  ,p_actual_flag => l_actual_flag
373354  ,p_balance_type_code => l_balance_type_code
373355  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373356  
373357  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373358  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373359  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373360  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373361  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373362  , p_source_58 => g_array_event(l_event_id).array_value_num('source_58')
373363  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373364  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373365  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373366  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373367  , p_source_84 => l_array_source_84(Idx)
373368  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373369  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373370  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373371  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373372  , p_source_88 => l_array_source_88(Idx)
373373  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373374  , p_source_91 => l_array_source_91(Idx)
373375  , p_source_92 => l_array_source_92(Idx)
373376  , p_source_93 => l_array_source_93(Idx)
373377  , p_source_94 => l_array_source_94(Idx)
373378  , p_source_95 => l_array_source_95(Idx)
373379  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373380  , p_source_97 => l_array_source_97(Idx)
373381  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373382  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373383  );
373384 If(l_balance_type_code = 'A') THEN
373385   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373386 END IF;
373387 
373388 --
373389 
373390 
373391 --
373392 AcctLineType_496 (
373393  p_application_id  => p_application_id
373394  ,p_event_id     => l_event_id
373395  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373396  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373397  ,p_actual_flag => l_actual_flag
373398  ,p_balance_type_code => l_balance_type_code
373399  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373400  
373401  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373402  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373403  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373404  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373405  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373406  , p_source_11 => l_array_source_11(Idx)
373407  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373408  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373409  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373410  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373411  , p_source_84 => l_array_source_84(Idx)
373412  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373413  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373414  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373415  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373416  , p_source_88 => l_array_source_88(Idx)
373417  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373418  , p_source_91 => l_array_source_91(Idx)
373419  , p_source_92 => l_array_source_92(Idx)
373420  , p_source_93 => l_array_source_93(Idx)
373421  , p_source_94 => l_array_source_94(Idx)
373422  , p_source_95 => l_array_source_95(Idx)
373423  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373424  , p_source_97 => l_array_source_97(Idx)
373425  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373426  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373427  );
373428 If(l_balance_type_code = 'A') THEN
373429   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373430 END IF;
373431 
373432 --
373433 
373434 
373435 --
373436 AcctLineType_520 (
373437  p_application_id  => p_application_id
373438  ,p_event_id     => l_event_id
373439  ,p_calculate_acctd_flag => l_calculate_acctd_flag
373440  ,p_calculate_g_l_flag => l_calculate_g_l_flag
373441  ,p_actual_flag => l_actual_flag
373442  ,p_balance_type_code => l_balance_type_code
373443  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
373444  
373445  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
373446  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
373447  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
373448  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
373449  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
373450  , p_source_11 => l_array_source_11(Idx)
373451  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
373452  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
373453  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
373454  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
373455  , p_source_84 => l_array_source_84(Idx)
373456  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
373457  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
373458  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
373459  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
373460  , p_source_88 => l_array_source_88(Idx)
373461  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
373462  , p_source_91 => l_array_source_91(Idx)
373463  , p_source_92 => l_array_source_92(Idx)
373464  , p_source_93 => l_array_source_93(Idx)
373465  , p_source_94 => l_array_source_94(Idx)
373466  , p_source_95 => l_array_source_95(Idx)
373467  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
373468  , p_source_97 => l_array_source_97(Idx)
373469  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
373470  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
373471  );
373472 If(l_balance_type_code = 'A') THEN
373473   l_actual_gain_loss_ref := l_gain_or_loss_ref;
373474 END IF;
373475 
373476 --
373477 
373478       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
373479       -- or secondary ledger that has different currency with primary
373480       -- or alc that is calculated by sla
373481       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
373482             (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'))
373483 
373484 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
373485 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
373486           AND (l_actual_flag = 'A')) THEN
373487         XLA_AE_LINES_PKG.CreateGainOrLossLines(
373488           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
373489          ,p_application_id   => p_application_id
373490          ,p_amb_context_code => 'DEFAULT'
373491          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
373492          ,p_event_class_code => C_EVENT_CLASS_CODE
373493          ,p_event_type_code  => C_EVENT_TYPE_CODE
373494          
373495          ,p_gain_ccid        => -1
373496          ,p_loss_ccid        => -1
373497 
373498          ,p_actual_flag      => l_actual_flag
373499          ,p_enc_flag         => null
373500          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
373501          ,p_enc_g_l_ref      => null
373502          );
373503       END IF;
373504    END IF;
373505 END IF;
373506 
373507    ELSE
373508       --
373509       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
373510       --
373511       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
373512          trace
373513             (p_msg      => 'Trancaction revesal option is Y'
373514             ,p_level    => C_LEVEL_STATEMENT
373515             ,p_module   => l_log_module);
373516       END IF;
373517    END IF;
373518 
373519 END LOOP;
373520 l_result := XLA_AE_LINES_PKG.InsertLines ;
373521 end loop;
373522 close line_cur;
373523 
373524 
373525 --
373526 -- insert headers into xla_ae_headers_gt table
373527 --
373528 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
373529 
373530 -- insert into errors table here.
373531 
373532 END LOOP;
373533 
373534 --
373535 -- 4865292
373536 --
373537 -- Compare g_hdr_extract_count with event count in
373538 -- CreateHeadersAndLines.
373539 --
373540 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
373541 
373542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
373543    trace (p_msg     => '# rows extracted from header extract objects '
373544                     || ' (running total): '
373545                     || g_hdr_extract_count
373546          ,p_level   => C_LEVEL_STATEMENT
373547          ,p_module  => l_log_module);
373548 END IF;
373549 
373550 CLOSE header_cur;
373551 --
373552 
373553 --
373554 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
373555    trace
373556       (p_msg      => 'END of EventType_587'
373557       ,p_level    => C_LEVEL_PROCEDURE
373558       ,p_module   => l_log_module);
373559 END IF;
373560 --
373561 RETURN l_result;
373562 EXCEPTION
373563 WHEN xla_exceptions_pkg.application_exception THEN
373564    
373565 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
373566 
373567    
373568 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
373569 
373570    RAISE;
373571 
373572 WHEN NO_DATA_FOUND THEN
373573 
373574 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
373575 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
373576 
373577 FOR header_record IN header_cur
373578 LOOP
373579     l_array_header_events(header_record.event_id) := header_record.event_id;
373580 END LOOP;
373581 
373582 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
373583 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
373584 
373585 fnd_file.put_line(fnd_file.LOG, '                    ');
373586 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
373587 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
373588 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
373589 
373590 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
373591 LOOP
373592 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
373593 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
373594         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
373595 	END IF;
373596 END LOOP;
373597 
373598 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
373599 fnd_file.put_line(fnd_file.LOG, '                    ');
373600 
373601 
373602 xla_exceptions_pkg.raise_message
373603       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_587');
373604 
373605 
373606 WHEN OTHERS THEN
373607    xla_exceptions_pkg.raise_message
373608       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_587');
373609 END EventType_587;
373610 --
373611 
373612 ---------------------------------------
373613 --
373614 -- PRIVATE PROCEDURE
373615 --         insert_sources_588
373616 --
373617 ----------------------------------------
373618 --
373619 PROCEDURE insert_sources_588(
373620                                 p_target_ledger_id       IN NUMBER
373621                               , p_language               IN VARCHAR2
373622                               , p_sla_ledger_id          IN NUMBER
373623                               , p_pad_start_date         IN DATE
373624                               , p_pad_end_date           IN DATE
373625                          )
373626 IS
373627 
373628 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_INV';
373629 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
373630 p_apps_owner                   VARCHAR2(30);
373631 l_log_module                   VARCHAR2(240);
373632 BEGIN
373633 IF g_log_enabled THEN
373634       l_log_module := C_DEFAULT_MODULE||'.insert_sources_588';
373635 END IF;
373636 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
373637 
373638       trace
373639          (p_msg      => 'BEGIN of insert_sources_588'
373640          ,p_level    => C_LEVEL_PROCEDURE
373641          ,p_module   => l_log_module);
373642 
373643 END IF;
373644 
373645 -- select APPS owner
373646 SELECT oracle_username
373647   INTO p_apps_owner
373648   FROM fnd_oracle_userid
373649  WHERE read_only_flag = 'U'
373650 ;
373651 
373652 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
373653       trace
373654          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
373655                         ' - p_language = '||p_language||
373656                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
373657                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
373658                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
373659                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
373660          ,p_level    => C_LEVEL_STATEMENT
373661          ,p_module   => l_log_module);
373662 END IF;
373663 
373664 
373665 --
373666 INSERT INTO xla_diag_sources --hdr1
373667 (
373668         event_id
373669       , ledger_id
373670       , sla_ledger_id
373671       , description_language
373672       , object_name
373673       , object_type_code
373674       , line_number
373675       , source_application_id
373676       , source_type_code
373677       , source_code
373678       , source_value
373679       , source_meaning
373680       , created_by
373681       , creation_date
373682       , last_update_date
373683       , last_updated_by
373684       , last_update_login
373685       , program_update_date
373686       , program_application_id
373687       , program_id
373688       , request_id
373689 )
373690 SELECT
373691         event_id
373692       , p_target_ledger_id
373693       , p_sla_ledger_id
373694       , p_language
373695       , object_name
373696       , object_type_code
373697       , line_number
373698       , source_application_id
373699       , source_type_code
373700       , source_code
373701       , SUBSTR(source_value ,1,1996)
373702       , SUBSTR(source_meaning,1,200)
373703       , xla_environment_pkg.g_Usr_Id
373704       , TRUNC(SYSDATE)
373705       , TRUNC(SYSDATE)
373706       , xla_environment_pkg.g_Usr_Id
373707       , xla_environment_pkg.g_Login_Id
373708       , TRUNC(SYSDATE)
373709       , xla_environment_pkg.g_Prog_Appl_Id
373710       , xla_environment_pkg.g_Prog_Id
373711       , xla_environment_pkg.g_Req_Id
373712   FROM (
373713        SELECT xet.event_id                  event_id
373714             , 0                             line_number
373715             , CASE r
373716                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
373717                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
373718                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
373719                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
373720                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
373721                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
373722                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
373723                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
373724                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
373725                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
373726                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
373727                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
373728                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
373729                 WHEN 14 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
373730                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
373731                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
373732                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
373733                 WHEN 18 THEN 'CST_XLA_INV_REF_V' 
373734                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
373735                 WHEN 20 THEN 'PO_DISTS_REF_V' 
373736                 WHEN 21 THEN 'CST_XLA_INV_REF_V' 
373737                 WHEN 22 THEN 'CST_XLA_INV_REF_V' 
373738                 WHEN 23 THEN 'PO_HEADERS_REF_V' 
373739                 WHEN 24 THEN 'PSA_CST_XLA_UPG_V' 
373740                 WHEN 25 THEN 'CST_XLA_INV_REF_V' 
373741                 WHEN 26 THEN 'CST_XLA_INV_HEADERS_V' 
373742                 
373743                ELSE null
373744               END                           object_name
373745             , CASE r
373746                 WHEN 1 THEN 'HEADER' 
373747                 WHEN 2 THEN 'HEADER' 
373748                 WHEN 3 THEN 'HEADER' 
373749                 WHEN 4 THEN 'HEADER' 
373750                 WHEN 5 THEN 'HEADER' 
373751                 WHEN 6 THEN 'HEADER' 
373752                 WHEN 7 THEN 'HEADER' 
373753                 WHEN 8 THEN 'HEADER' 
373754                 WHEN 9 THEN 'HEADER' 
373755                 WHEN 10 THEN 'HEADER' 
373756                 WHEN 11 THEN 'HEADER' 
373757                 WHEN 12 THEN 'HEADER' 
373758                 WHEN 13 THEN 'HEADER' 
373759                 WHEN 14 THEN 'HEADER' 
373760                 WHEN 15 THEN 'HEADER' 
373761                 WHEN 16 THEN 'HEADER' 
373762                 WHEN 17 THEN 'HEADER' 
373763                 WHEN 18 THEN 'HEADER' 
373764                 WHEN 19 THEN 'HEADER' 
373765                 WHEN 20 THEN 'HEADER' 
373766                 WHEN 21 THEN 'HEADER' 
373767                 WHEN 22 THEN 'HEADER' 
373768                 WHEN 23 THEN 'HEADER' 
373769                 WHEN 24 THEN 'HEADER' 
373770                 WHEN 25 THEN 'HEADER' 
373771                 WHEN 26 THEN 'HEADER' 
373772                 
373773                 ELSE null
373774               END                           object_type_code
373775             , CASE r
373776                 WHEN 1 THEN '707' 
373777                 WHEN 2 THEN '707' 
373778                 WHEN 3 THEN '707' 
373779                 WHEN 4 THEN '707' 
373780                 WHEN 5 THEN '707' 
373781                 WHEN 6 THEN '707' 
373782                 WHEN 7 THEN '707' 
373783                 WHEN 8 THEN '707' 
373784                 WHEN 9 THEN '707' 
373785                 WHEN 10 THEN '707' 
373786                 WHEN 11 THEN '707' 
373787                 WHEN 12 THEN '707' 
373788                 WHEN 13 THEN '707' 
373789                 WHEN 14 THEN '707' 
373790                 WHEN 15 THEN '707' 
373791                 WHEN 16 THEN '707' 
373792                 WHEN 17 THEN '707' 
373793                 WHEN 18 THEN '707' 
373794                 WHEN 19 THEN '707' 
373795                 WHEN 20 THEN '201' 
373796                 WHEN 21 THEN '707' 
373797                 WHEN 22 THEN '707' 
373798                 WHEN 23 THEN '201' 
373799                 WHEN 24 THEN '707' 
373800                 WHEN 25 THEN '707' 
373801                 WHEN 26 THEN '707' 
373802                 
373803                 ELSE null
373804               END                           source_application_id
373805             , 'S'             source_type_code
373806             , CASE r
373807                 WHEN 1 THEN 'TRANSACTION_ID' 
373808                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
373809                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
373810                 WHEN 4 THEN 'TRANSACTION_UOM' 
373811                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
373812                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
373813                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
373814                 WHEN 8 THEN 'PLA_EXPENSE_ACCOUNT' 
373815                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
373816                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
373817                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
373818                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
373819                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
373820                 WHEN 14 THEN 'INV_ORG_PUR_PRICE_VAR_ACCT' 
373821                 WHEN 15 THEN 'APPLIED_TO_APPL_ID' 
373822                 WHEN 16 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
373823                 WHEN 17 THEN 'APPLIED_TO_ENTITY_CODE' 
373824                 WHEN 18 THEN 'APPLIED_TO_PO_DOC_ID' 
373825                 WHEN 19 THEN 'DISTRIBUTION_TYPE' 
373826                 WHEN 20 THEN 'PO_BUDGET_ACCOUNT' 
373827                 WHEN 21 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
373828                 WHEN 22 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
373829                 WHEN 23 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
373830                 WHEN 24 THEN 'CST_ENCUM_UPG_OPTION' 
373831                 WHEN 25 THEN 'TXN_PO_DISTRIBUTION_ID' 
373832                 WHEN 26 THEN 'TRANSFER_TO_GL_INDICATOR' 
373833                 
373834                 ELSE null
373835               END                           source_code
373836             , CASE r
373837                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
373838                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
373839                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
373840                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
373841                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
373842                 WHEN 6 THEN TO_CHAR(h4.INV_TXN_DISTRIBUTION_ACCT)
373843                 WHEN 7 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
373844                 WHEN 8 THEN TO_CHAR(h8.PLA_EXPENSE_ACCOUNT)
373845                 WHEN 9 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
373846                 WHEN 10 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
373847                 WHEN 11 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
373848                 WHEN 12 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
373849                 WHEN 13 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
373850                 WHEN 14 THEN TO_CHAR(h3.INV_ORG_PUR_PRICE_VAR_ACCT)
373851                 WHEN 15 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
373852                 WHEN 16 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
373853                 WHEN 17 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
373854                 WHEN 18 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
373855                 WHEN 19 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
373856                 WHEN 20 THEN TO_CHAR(h9.PO_BUDGET_ACCOUNT)
373857                 WHEN 21 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
373858                 WHEN 22 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
373859                 WHEN 23 THEN TO_CHAR(h10.PURCH_ENCUMBRANCE_TYPE_ID)
373860                 WHEN 24 THEN TO_CHAR(h11.CST_ENCUM_UPG_OPTION)
373861                 WHEN 25 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
373862                 WHEN 26 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
373863                 
373864                 ELSE null
373865               END                           source_value
373866             , CASE r
373867                 WHEN 19 THEN fvl85.meaning
373868                 WHEN 26 THEN fvl114.meaning
373869                 
373870                 ELSE null
373871               END               source_meaning
373872         FROM xla_events_gt     xet  
373873       , CST_XLA_INV_HEADERS_V  h1
373874       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
373875       , CST_XLA_INV_REF_V  h4
373876       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
373877       , CST_XLA_INV_TXN_TYPES_REF_V  h7
373878       , CST_XLA_PLA_CATEGORY_REF_V  h8
373879       , PO_DISTS_REF_V  h9
373880       , PO_HEADERS_REF_V  h10
373881       , PSA_CST_XLA_UPG_V  h11
373882   , fnd_lookup_values    fvl85
373883   , fnd_lookup_values    fvl114
373884             ,(select rownum r from all_objects where rownum <= 26 and owner = p_apps_owner)
373885        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
373886          AND xet.event_type_code = C_EVENT_TYPE_CODE
373887             AND h1.event_id = xet.event_id
373888  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h6.inventory_item_id  (+) = h1.inventory_item_id  and h6.organization_id  (+) = h1.organization_id AND h7.inv_transaction_type_id = h1.transaction_type_id AND h8.pla_cat_organization_id  (+) = h1.organization_id 
373889 and h8.pla_cat_item_id          (+) = h1.inventory_item_id 
373890 and h8.pla_subinv_cg            (+) = h1.h_subinv_cg AND h4.txn_po_header_id = h9.po_header_id  (+)  and h4.txn_po_distribution_id = h9.po_distribution_id (+)  AND h4.txn_po_header_id = h10.po_header_id (+)  AND h4.rcv_transaction_id = h11.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
373891   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
373892   AND fvl85.view_application_id(+) = 700
373893   AND fvl85.language(+)            = USERENV('LANG')
373894      AND fvl114.lookup_type(+)         = 'YES_NO'
373895   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
373896   AND fvl114.view_application_id(+) = 0
373897   AND fvl114.language(+)            = USERENV('LANG')
373898   
373899 )
373900 ;
373901 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
373902 
373903       trace
373904          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
373905          ,p_level    => C_LEVEL_STATEMENT
373906          ,p_module   => l_log_module);
373907 
373908 END IF;
373909 --
373910 
373911 
373912 
373913 --
373914 INSERT INTO xla_diag_sources --line1
373915 (
373916         event_id
373917       , ledger_id
373918       , sla_ledger_id
373919       , description_language
373920       , object_name
373921       , object_type_code
373922       , line_number
373923       , source_application_id
373924       , source_type_code
373925       , source_code
373926       , source_value
373927       , source_meaning
373928       , created_by
373929       , creation_date
373930       , last_update_date
373931       , last_updated_by
373932       , last_update_login
373933       , program_update_date
373934       , program_application_id
373935       , program_id
373936       , request_id
373937 )
373938 SELECT  event_id
373939       , p_target_ledger_id
373940       , p_sla_ledger_id
373941       , p_language
373942       , object_name
373943       , object_type_code
373944       , line_number
373945       , source_application_id
373946       , source_type_code
373947       , source_code
373948       , SUBSTR(source_value,1,1996)
373949       , SUBSTR(source_meaning,1,200)
373950       , xla_environment_pkg.g_Usr_Id
373951       , TRUNC(SYSDATE)
373952       , TRUNC(SYSDATE)
373953       , xla_environment_pkg.g_Usr_Id
373954       , xla_environment_pkg.g_Login_Id
373955       , TRUNC(SYSDATE)
373956       , xla_environment_pkg.g_Prog_Appl_Id
373957       , xla_environment_pkg.g_Prog_Id
373958       , xla_environment_pkg.g_Req_Id
373959   FROM (
373960        SELECT xet.event_id                  event_id
373961             , l2.line_number                 line_number
373962             , CASE r
373963                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
373964                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
373965                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
373966                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
373967                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
373968                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
373969                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
373970                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
373971                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
373972                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
373973                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
373974                 WHEN 12 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
373975                 
373976                ELSE null
373977               END                           object_name
373978             , CASE r
373979                 WHEN 1 THEN 'LINE' 
373980                 WHEN 2 THEN 'LINE' 
373981                 WHEN 3 THEN 'LINE' 
373982                 WHEN 4 THEN 'LINE' 
373983                 WHEN 5 THEN 'LINE' 
373984                 WHEN 6 THEN 'LINE' 
373985                 WHEN 7 THEN 'LINE' 
373986                 WHEN 8 THEN 'LINE' 
373987                 WHEN 9 THEN 'LINE' 
373988                 WHEN 10 THEN 'LINE' 
373989                 WHEN 11 THEN 'LINE' 
373990                 WHEN 12 THEN 'LINE' 
373991                 
373992                 ELSE null
373993               END                           object_type_code
373994             , CASE r
373995                 WHEN 1 THEN '707' 
373996                 WHEN 2 THEN '707' 
373997                 WHEN 3 THEN '707' 
373998                 WHEN 4 THEN '707' 
373999                 WHEN 5 THEN '707' 
374000                 WHEN 6 THEN '707' 
374001                 WHEN 7 THEN '707' 
374002                 WHEN 8 THEN '707' 
374003                 WHEN 9 THEN '707' 
374004                 WHEN 10 THEN '707' 
374005                 WHEN 11 THEN '707' 
374006                 WHEN 12 THEN '707' 
374007                 
374008                 ELSE null
374009               END                           source_application_id
374010             , 'S'             source_type_code
374011             , CASE r
374012                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
374013                 WHEN 2 THEN 'COST_ELEMENT_ID' 
374014                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
374015                 WHEN 4 THEN 'CURRENCY_CODE' 
374016                 WHEN 5 THEN 'ENTERED_AMOUNT' 
374017                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
374018                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
374019                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
374020                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
374021                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
374022                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
374023                 WHEN 12 THEN 'ASSET_INVENTORY' 
374024                 
374025                 ELSE null
374026               END                           source_code
374027             , CASE r
374028                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
374029                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
374030                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
374031                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
374032                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
374033                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
374034                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
374035                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
374036                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
374037                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
374038                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
374039                 WHEN 12 THEN TO_CHAR(l5.ASSET_INVENTORY)
374040                 
374041                 ELSE null
374042               END                           source_value
374043             , CASE r
374044                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
374045                           1009615
374046                          ,TO_CHAR(l2.COST_ELEMENT_ID)
374047                          ,'COST_ELEMENT_ID'
374048                          ,'S'
374049                          ,707)
374050                 WHEN 12 THEN fvl110.meaning
374051                 
374052                 ELSE null
374053               END               source_meaning
374054          FROM  xla_events_gt     xet  
374055         , CST_XLA_INV_LINES_V  l2
374056         , CST_XLA_INV_SEC_INVS_REF_V  l5
374057   , fnd_lookup_values    fvl110
374058             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
374059         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
374060           AND xet.event_type_code = C_EVENT_TYPE_CODE
374061             AND l2.event_id          = xet.event_id
374062  AND l5.subinventory  (+) = l2.subinventory_code  and l5.subinv_organization_id  (+) = l2.l_organization_id   AND fvl110.lookup_type(+)         = 'YES_NO'
374063   AND fvl110.lookup_code(+)         = l5.ASSET_INVENTORY
374064   AND fvl110.view_application_id(+) = 0
374065   AND fvl110.language(+)            = USERENV('LANG')
374066   
374067 )
374068 ;
374069 --
374070 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
374071 
374072       trace
374073          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
374074          ,p_level    => C_LEVEL_STATEMENT
374075          ,p_module   => l_log_module);
374076 
374077 END IF;
374078 
374079 
374080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
374081       trace
374082          (p_msg      => 'END of insert_sources_588'
374083          ,p_level    => C_LEVEL_PROCEDURE
374084          ,p_module   => l_log_module);
374085 END IF;
374086 EXCEPTION
374087   WHEN xla_exceptions_pkg.application_exception THEN
374088       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
374089             trace
374090                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
374091                ,p_level    => C_LEVEL_EXCEPTION
374092                ,p_module   => l_log_module);
374093       END IF;
374094       RAISE;
374095   WHEN OTHERS THEN
374096       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
374097             trace
374098                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
374099                ,p_level    => C_LEVEL_EXCEPTION
374100                ,p_module   => l_log_module);
374101        END IF;
374102        xla_exceptions_pkg.raise_message
374103            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_588');
374104 END insert_sources_588;
374105 --
374106 
374107 ---------------------------------------
374108 --
374109 -- PRIVATE FUNCTION
374110 --         EventType_588
374111 --
374112 ----------------------------------------
374113 --
374114 FUNCTION EventType_588
374115        (p_application_id         IN NUMBER
374116        ,p_base_ledger_id         IN NUMBER
374117        ,p_target_ledger_id       IN NUMBER
374118        ,p_language               IN VARCHAR2
374119        ,p_currency_code          IN VARCHAR2
374120        ,p_sla_ledger_id          IN NUMBER
374121        ,p_pad_start_date         IN DATE
374122        ,p_pad_end_date           IN DATE
374123        ,p_primary_ledger_id      IN NUMBER)
374124 RETURN BOOLEAN IS
374125 --
374126 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_INV';
374127 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
374128 
374129 l_calculate_acctd_flag   VARCHAR2(1) :='N';
374130 l_calculate_g_l_flag     VARCHAR2(1) :='N';
374131 --
374132 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374133 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374134 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
374135 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
374136 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374137 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
374138 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
374139 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374140 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
374141 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
374142 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374143 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374144 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374145 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
374146 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
374147 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
374148 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
374149 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
374150 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
374151 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
374152 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
374153 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
374154 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
374155 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
374156 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
374157 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
374158 
374159 l_event_id                             NUMBER;
374160 l_previous_event_id                    NUMBER;
374161 l_first_event_id                       NUMBER;
374162 l_last_event_id                        NUMBER;
374163 
374164 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
374165 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
374166 --
374167 --
374168 l_result                    BOOLEAN := TRUE;
374169 l_rows                      NUMBER  := 1000;
374170 l_event_type_name           VARCHAR2(80) := 'PO Delivery into Inventory';
374171 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
374172 l_description               VARCHAR2(4000);
374173 l_transaction_reversal      NUMBER;
374174 l_ae_header_id              NUMBER;
374175 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
374176 l_log_module                VARCHAR2(240);
374177 --
374178 l_acct_reversal_source      VARCHAR2(30);
374179 l_trx_reversal_source       VARCHAR2(30);
374180 
374181 l_continue_with_lines       BOOLEAN := TRUE;
374182 --
374183 l_acc_rev_gl_date_source    DATE;                      -- 4262811
374184 --
374185 type t_array_event_id is table of number index by binary_integer;
374186 
374187 l_rec_array_event                    t_rec_array_event;
374188 l_null_rec_array_event               t_rec_array_event;
374189 l_array_ae_header_id                 xla_number_array_type;
374190 l_actual_flag                        VARCHAR2(1) := NULL;
374191 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
374192 l_balance_type_code                  VARCHAR2(1) :=NULL;
374193 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
374194 
374195 --
374196 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
374197 --
374198 
374199 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
374200 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
374201 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
374202 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
374203 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
374204 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
374205 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374206 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374207 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374208 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374209 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374210 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374211 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374212 TYPE t_array_source_58 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_PUR_PRICE_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
374213 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
374214 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
374215 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
374216 TYPE t_array_source_83 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
374217 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
374218 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
374219 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
374220 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
374221 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
374222 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
374223 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
374224 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
374225 
374226 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
374227 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
374228 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
374229 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
374230 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
374231 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
374232 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
374233 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
374234 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
374235 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
374236 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
374237 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
374238 
374239 l_array_source_1              t_array_source_1;
374240 l_array_source_2              t_array_source_2;
374241 l_array_source_3              t_array_source_3;
374242 l_array_source_4              t_array_source_4;
374243 l_array_source_5              t_array_source_5;
374244 l_array_source_20              t_array_source_20;
374245 l_array_source_22              t_array_source_22;
374246 l_array_source_24              t_array_source_24;
374247 l_array_source_41              t_array_source_41;
374248 l_array_source_42              t_array_source_42;
374249 l_array_source_43              t_array_source_43;
374250 l_array_source_44              t_array_source_44;
374251 l_array_source_45              t_array_source_45;
374252 l_array_source_58              t_array_source_58;
374253 l_array_source_79              t_array_source_79;
374254 l_array_source_80              t_array_source_80;
374255 l_array_source_81              t_array_source_81;
374256 l_array_source_83              t_array_source_83;
374257 l_array_source_85              t_array_source_85;
374258 l_array_source_85_meaning      t_array_lookup_meaning;
374259 l_array_source_86              t_array_source_86;
374260 l_array_source_87              t_array_source_87;
374261 l_array_source_89              t_array_source_89;
374262 l_array_source_96              t_array_source_96;
374263 l_array_source_100              t_array_source_100;
374264 l_array_source_101              t_array_source_101;
374265 l_array_source_114              t_array_source_114;
374266 l_array_source_114_meaning      t_array_lookup_meaning;
374267 
374268 l_array_source_11      t_array_source_11;
374269 l_array_source_15      t_array_source_15;
374270 l_array_source_84      t_array_source_84;
374271 l_array_source_88      t_array_source_88;
374272 l_array_source_91      t_array_source_91;
374273 l_array_source_92      t_array_source_92;
374274 l_array_source_93      t_array_source_93;
374275 l_array_source_94      t_array_source_94;
374276 l_array_source_95      t_array_source_95;
374277 l_array_source_97      t_array_source_97;
374278 l_array_source_108      t_array_source_108;
374279 l_array_source_110      t_array_source_110;
374280 l_array_source_110_meaning      t_array_lookup_meaning;
374281 
374282 --
374283 CURSOR header_cur
374284 IS
374285 SELECT /*+ leading(xet) cardinality(xet,1) */
374286 -- Event Type Code: PO_DEL_INV
374287 -- Event Class Code: PURCHASE_ORDER
374288     xet.entity_id
374289   , xet.legal_entity_id
374290   , xet.entity_code
374291   , xet.transaction_number
374292   , xet.event_id
374293   , xet.event_class_code
374294   , xet.event_type_code
374295   , xet.event_number
374296   , xet.event_date
374297   , xet.transaction_date
374298   , xet.reference_num_1
374299   , xet.reference_num_2
374300   , xet.reference_num_3
374301   , xet.reference_num_4
374302   , xet.reference_char_1
374303   , xet.reference_char_2
374304   , xet.reference_char_3
374305   , xet.reference_char_4
374306   , xet.reference_date_1
374307   , xet.reference_date_2
374308   , xet.reference_date_3
374309   , xet.reference_date_4
374310   , xet.event_created_by
374311   , xet.budgetary_control_flag 
374312   , h1.TRANSACTION_ID    source_1
374313   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
374314   , h4.TRANSACTION_QUANTITY    source_3
374315   , h4.TRANSACTION_UOM    source_4
374316   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
374317   , h4.INV_TXN_DISTRIBUTION_ACCT    source_20
374318   , h8.PLA_BRIDGING_ACCOUNT    source_22
374319   , h8.PLA_EXPENSE_ACCOUNT    source_24
374320   , h8.PLA_MATERIAL_ACCOUNT    source_41
374321   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
374322   , h8.PLA_RESOURCE_ACCOUNT    source_43
374323   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
374324   , h8.PLA_OVERHEAD_ACCOUNT    source_45
374325   , h3.INV_ORG_PUR_PRICE_VAR_ACCT    source_58
374326   , h4.APPLIED_TO_APPL_ID    source_79
374327   , h4.APPLIED_TO_DIST_LINK_TYPE    source_80
374328   , h4.APPLIED_TO_ENTITY_CODE    source_81
374329   , h4.APPLIED_TO_PO_DOC_ID    source_83
374330   , h1.DISTRIBUTION_TYPE    source_85
374331   , fvl85.meaning   source_85_meaning
374332   , h9.PO_BUDGET_ACCOUNT    source_86
374333   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
374334   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
374335   , h10.PURCH_ENCUMBRANCE_TYPE_ID    source_96
374336   , h11.CST_ENCUM_UPG_OPTION    source_100
374337   , h4.TXN_PO_DISTRIBUTION_ID    source_101
374338   , h1.TRANSFER_TO_GL_INDICATOR    source_114
374339   , fvl114.meaning   source_114_meaning
374340   FROM xla_events_gt     xet 
374341   , CST_XLA_INV_HEADERS_V  h1
374342   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
374343   , CST_XLA_INV_REF_V  h4
374344   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
374345   , CST_XLA_INV_TXN_TYPES_REF_V  h7
374346   , CST_XLA_PLA_CATEGORY_REF_V  h8
374347   , PO_DISTS_REF_V  h9
374348   , PO_HEADERS_REF_V  h10
374349   , PSA_CST_XLA_UPG_V  h11
374350   , fnd_lookup_values    fvl85
374351   , fnd_lookup_values    fvl114
374352  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
374353    and xet.event_type_code = C_EVENT_TYPE_CODE
374354    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
374355  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
374356 AND h8.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
374357 AND h8.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG AND h4.txn_po_header_id = h9.po_header_id  (+)  AND h4.txn_po_distribution_id = h9.po_distribution_id (+)  AND h4.txn_po_header_id = h10.po_header_id (+)  AND h4.rcv_transaction_id = h11.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
374358   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
374359   AND fvl85.view_application_id(+) = 700
374360   AND fvl85.language(+)            = USERENV('LANG')
374361      AND fvl114.lookup_type(+)         = 'YES_NO'
374362   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
374363   AND fvl114.view_application_id(+) = 0
374364   AND fvl114.language(+)            = USERENV('LANG')
374365   
374366  ORDER BY event_id
374367 ;
374368 
374369 
374370 --
374371 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
374372 IS
374373 SELECT /*+ leading(xet) cardinality(xet,1) */
374374 -- Event Type Code: PO_DEL_INV
374375 -- Event Class Code: PURCHASE_ORDER
374376     xet.entity_id
374377    ,xet.legal_entity_id
374378    ,xet.entity_code
374379    ,xet.transaction_number
374380    ,xet.event_id
374381    ,xet.event_class_code
374382    ,xet.event_type_code
374383    ,xet.event_number
374384    ,xet.event_date
374385    ,xet.transaction_date
374386    ,xet.reference_num_1
374387    ,xet.reference_num_2
374388    ,xet.reference_num_3
374389    ,xet.reference_num_4
374390    ,xet.reference_char_1
374391    ,xet.reference_char_2
374392    ,xet.reference_char_3
374393    ,xet.reference_char_4
374394    ,xet.reference_date_1
374395    ,xet.reference_date_2
374396    ,xet.reference_date_3
374397    ,xet.reference_date_4
374398    ,xet.event_created_by
374399    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
374400   , l2.CODE_COMBINATION_ID    source_11
374401   , l2.COST_ELEMENT_ID    source_15
374402   , l2.DISTRIBUTION_IDENTIFIER    source_84
374403   , l2.CURRENCY_CODE    source_88
374404   , l2.ENTERED_AMOUNT    source_91
374405   , l2.CURRENCY_CONVERSION_DATE    source_92
374406   , l2.CURRENCY_CONVERSION_RATE    source_93
374407   , l2.CURRENCY_CONVERSION_TYPE    source_94
374408   , l2.ACCOUNTED_AMOUNT    source_95
374409   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
374410   , l2.L_ORGANIZATION_CODE    source_108
374411   , l5.ASSET_INVENTORY    source_110
374412   , fvl110.meaning   source_110_meaning
374413   FROM xla_events_gt     xet 
374414   , CST_XLA_INV_LINES_V  l2
374415   , CST_XLA_INV_SEC_INVS_REF_V  l5
374416   , fnd_lookup_values    fvl110
374417  WHERE xet.event_id between x_first_event_id and x_last_event_id
374418    and xet.event_date between p_pad_start_date and p_pad_end_date
374419    and xet.event_type_code = C_EVENT_TYPE_CODE
374420    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
374421  AND l5.SUBINVENTORY  (+) = l2.SUBINVENTORY_CODE  AND l5.SUBINV_ORGANIZATION_ID  (+) = l2.L_ORGANIZATION_ID   AND fvl110.lookup_type(+)         = 'YES_NO'
374422   AND fvl110.lookup_code(+)         = l5.ASSET_INVENTORY
374423   AND fvl110.view_application_id(+) = 0
374424   AND fvl110.language(+)            = USERENV('LANG')
374425   ;
374426 
374427 --
374428 BEGIN
374429 IF g_log_enabled THEN
374430    l_log_module := C_DEFAULT_MODULE||'.EventType_588';
374431 END IF;
374432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
374433    trace
374434       (p_msg      => 'BEGIN of EventType_588'
374435       ,p_level    => C_LEVEL_PROCEDURE
374436       ,p_module   => l_log_module);
374437 END IF;
374438 
374439 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
374440    trace
374441       (p_msg      => 'p_application_id = '||p_application_id||
374442                      ' - p_base_ledger_id = '||p_base_ledger_id||
374443                      ' - p_target_ledger_id  = '||p_target_ledger_id||
374444                      ' - p_language = '||p_language||
374445                      ' - p_currency_code = '||p_currency_code||
374446                      ' - p_sla_ledger_id = '||p_sla_ledger_id
374447       ,p_level    => C_LEVEL_STATEMENT
374448       ,p_module   => l_log_module);
374449 END IF;
374450 --
374451 -- initialze arrays
374452 --
374453 g_array_event.DELETE;
374454 l_rec_array_event := l_null_rec_array_event;
374455 --
374456 --------------------------------------
374457 -- 4262811 Initialze MPA Line Number
374458 --------------------------------------
374459 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
374460 
374461 --
374462 
374463 --
374464 OPEN header_cur;
374465 --
374466 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
374467    trace
374468    (p_msg      => 'SQL - FETCH header_cur'
374469    ,p_level    => C_LEVEL_STATEMENT
374470    ,p_module   => l_log_module);
374471 END IF;
374472 --
374473 LOOP
374474 FETCH header_cur BULK COLLECT INTO
374475         l_array_entity_id
374476       , l_array_legal_entity_id
374477       , l_array_entity_code
374478       , l_array_transaction_num
374479       , l_array_event_id
374480       , l_array_class_code
374481       , l_array_event_type
374482       , l_array_event_number
374483       , l_array_event_date
374484       , l_array_transaction_date
374485       , l_array_reference_num_1
374486       , l_array_reference_num_2
374487       , l_array_reference_num_3
374488       , l_array_reference_num_4
374489       , l_array_reference_char_1
374490       , l_array_reference_char_2
374491       , l_array_reference_char_3
374492       , l_array_reference_char_4
374493       , l_array_reference_date_1
374494       , l_array_reference_date_2
374495       , l_array_reference_date_3
374496       , l_array_reference_date_4
374497       , l_array_event_created_by
374498       , l_array_budgetary_control_flag 
374499       , l_array_source_1
374500       , l_array_source_2
374501       , l_array_source_3
374502       , l_array_source_4
374503       , l_array_source_5
374504       , l_array_source_20
374505       , l_array_source_22
374506       , l_array_source_24
374507       , l_array_source_41
374508       , l_array_source_42
374509       , l_array_source_43
374510       , l_array_source_44
374511       , l_array_source_45
374512       , l_array_source_58
374513       , l_array_source_79
374514       , l_array_source_80
374515       , l_array_source_81
374516       , l_array_source_83
374517       , l_array_source_85
374518       , l_array_source_85_meaning
374519       , l_array_source_86
374520       , l_array_source_87
374521       , l_array_source_89
374522       , l_array_source_96
374523       , l_array_source_100
374524       , l_array_source_101
374525       , l_array_source_114
374526       , l_array_source_114_meaning
374527       LIMIT l_rows;
374528 --
374529 IF (C_LEVEL_EVENT >= g_log_level) THEN
374530    trace
374531    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
374532    ,p_level    => C_LEVEL_EVENT
374533    ,p_module   => l_log_module);
374534 END IF;
374535 --
374536 EXIT WHEN l_array_entity_id.COUNT = 0;
374537 
374538 -- initialize arrays
374539 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
374540 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
374541 
374542 --
374543 -- Bug 4458708
374544 --
374545 XLA_AE_LINES_PKG.g_LineNumber := 0;
374546 
374547 
374548 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
374549 g_last_hdr_idx := l_array_event_id.LAST;
374550 --
374551 -- loop for the headers. Each iteration is for each header extract row
374552 -- fetched in header cursor
374553 --
374554 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
374555 
374556 --
374557 -- set event info as cache for other routines to refer event attributes
374558 --
374559 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
374560    (p_application_id           => p_application_id
374561    ,p_primary_ledger_id        => p_primary_ledger_id
374562    ,p_base_ledger_id           => p_base_ledger_id
374563    ,p_target_ledger_id         => p_target_ledger_id
374564    ,p_entity_id                => l_array_entity_id(hdr_idx)
374565    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
374566    ,p_entity_code              => l_array_entity_code(hdr_idx)
374567    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
374568    ,p_event_id                 => l_array_event_id(hdr_idx)
374569    ,p_event_class_code         => l_array_class_code(hdr_idx)
374570    ,p_event_type_code          => l_array_event_type(hdr_idx)
374571    ,p_event_number             => l_array_event_number(hdr_idx)
374572    ,p_event_date               => l_array_event_date(hdr_idx)
374573    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
374574    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
374575    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
374576    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
374577    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
374578    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
374579    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
374580    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
374581    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
374582    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
374583    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
374584    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
374585    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
374586    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
374587    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
374588 
374589 --
374590 -- set the status of entry to C_VALID (0)
374591 --
374592 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
374593 
374594 --
374595 -- initialize a row for ae header
374596 --
374597 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
374598 
374599 l_event_id := l_array_event_id(hdr_idx);
374600 
374601 --
374602 -- storing the hdr_idx for event. May be used by line cursor.
374603 --
374604 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
374605 
374606 --
374607 -- store sources from header extract. This can be improved to
374608 -- store only those sources from header extract that may be used in lines
374609 --
374610 
374611 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
374612 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
374613 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
374614 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
374615 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
374616 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
374617 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
374618 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
374619 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
374620 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
374621 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
374622 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
374623 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
374624 g_array_event(l_event_id).array_value_num('source_58') := l_array_source_58(hdr_idx);
374625 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
374626 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
374627 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
374628 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
374629 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
374630 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
374631 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
374632 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
374633 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
374634 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
374635 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
374636 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
374637 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
374638 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
374639 
374640 --
374641 -- initilaize the status of ae headers for diffrent balance types
374642 -- the status is initialised to C_NOT_CREATED (2)
374643 --
374644 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
374645 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
374646 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
374647 
374648 --
374649 -- call api to validate and store accounting attributes for header
374650 --
374651 
374652 ------------------------------------------------------------
374653 -- Accrual Reversal : to get date for Standard Source (NONE)
374654 ------------------------------------------------------------
374655 l_acc_rev_gl_date_source := NULL;
374656 
374657      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
374658       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
374659      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
374660       l_rec_acct_attrs.array_date_value(2) := 
374661 xla_ae_sources_pkg.GetSystemSourceDate(
374662    p_source_code           => 'XLA_REFERENCE_DATE_1'
374663  , p_source_type_code      => 'Y'
374664  , p_source_application_id =>  602
374665 );
374666      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
374667       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
374668 
374669 
374670 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
374671 
374672 XLA_AE_HEADER_PKG.SetJeCategoryName;
374673 
374674 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
374675 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
374676 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
374677 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
374678 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
374679 
374680 
374681 --
374682 xla_ae_header_pkg.SetHdrDescription(
374683    p_description => Description_1 (
374684    p_application_id => p_application_id 
374685  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
374686  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
374687  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
374688  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
374689  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
374690    )
374691 );
374692 --
374693 
374694 -- No header level analytical criteria
374695 
374696 --
374697 --accounting attribute enhancement, bug 3612931
374698 --
374699 l_trx_reversal_source := SUBSTR(NULL, 1,30);
374700 
374701 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
374702    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
374703 
374704    xla_accounting_err_pkg.build_message
374705       (p_appli_s_name            => 'XLA'
374706       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
374707       ,p_token_1                 => 'ACCT_ATTR_NAME'
374708       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
374709       ,p_token_2                 => 'PRODUCT_NAME'
374710       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
374711       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
374712       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
374713       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
374714 
374715 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
374716    --
374717    -- following sets the accounting attributes needed to reverse
374718    -- accounting for a distributeion
374719    --
374720    xla_ae_lines_pkg.SetTrxReversalAttrs
374721       (p_event_id              => l_event_id
374722       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
374723       ,p_trx_reversal_source   => l_trx_reversal_source);
374724 
374725 END IF;
374726 
374727 
374728 ----------------------------------------------------------------
374729 -- 4262811 -  update the header statuses to invalid in need be
374730 ----------------------------------------------------------------
374731 --
374732 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
374733 
374734 
374735   -----------------------------------------------
374736   -- No accrual reversal for the event class/type
374737   -----------------------------------------------
374738 ----------------------------------------------------------------
374739 
374740 --
374741 -- this ends the header loop iteration for one bulk fetch
374742 --
374743 END LOOP;
374744 
374745 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
374746 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
374747 
374748 --
374749 -- insert dummy rows into lines gt table that were created due to
374750 -- transaction reversals
374751 --
374752 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
374753    l_result := XLA_AE_LINES_PKG.InsertLines;
374754 END IF;
374755 
374756 --
374757 -- reset the temp_line_num for each set of events fetched from header
374758 -- cursor rather than doing it for each new event in line cursor
374759 -- Bug 3939231
374760 --
374761 xla_ae_lines_pkg.g_temp_line_num := 0;
374762 
374763 
374764 
374765 --
374766 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
374767 --
374768 --
374769 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
374770 
374771       trace
374772          (p_msg      => 'SQL - FETCH line_cur'
374773          ,p_level    => C_LEVEL_STATEMENT
374774          ,p_module   => l_log_module);
374775 
374776 END IF;
374777 --
374778 --
374779 LOOP
374780   --
374781   FETCH line_cur BULK COLLECT INTO
374782         l_array_entity_id
374783       , l_array_legal_entity_id
374784       , l_array_entity_code
374785       , l_array_transaction_num
374786       , l_array_event_id
374787       , l_array_class_code
374788       , l_array_event_type
374789       , l_array_event_number
374790       , l_array_event_date
374791       , l_array_transaction_date
374792       , l_array_reference_num_1
374793       , l_array_reference_num_2
374794       , l_array_reference_num_3
374795       , l_array_reference_num_4
374796       , l_array_reference_char_1
374797       , l_array_reference_char_2
374798       , l_array_reference_char_3
374799       , l_array_reference_char_4
374800       , l_array_reference_date_1
374801       , l_array_reference_date_2
374802       , l_array_reference_date_3
374803       , l_array_reference_date_4
374804       , l_array_event_created_by
374805       , l_array_budgetary_control_flag
374806       , l_array_extract_line_num 
374807       , l_array_source_11
374808       , l_array_source_15
374809       , l_array_source_84
374810       , l_array_source_88
374811       , l_array_source_91
374812       , l_array_source_92
374813       , l_array_source_93
374814       , l_array_source_94
374815       , l_array_source_95
374816       , l_array_source_97
374817       , l_array_source_108
374818       , l_array_source_110
374819       , l_array_source_110_meaning
374820       LIMIT l_rows;
374821 
374822   --
374823   IF (C_LEVEL_EVENT >= g_log_level) THEN
374824             trace
374825                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
374826                ,p_level    => C_LEVEL_EVENT
374827                ,p_module   => l_log_module);
374828   END IF;
374829   --
374830   EXIT WHEN l_array_entity_id.count = 0;
374831 
374832   XLA_AE_LINES_PKG.g_rec_lines := null;
374833 
374834 --
374835 -- Bug 4458708
374836 --
374837 XLA_AE_LINES_PKG.g_LineNumber := 0;
374838 --
374839 --
374840 
374841 FOR Idx IN 1..l_array_event_id.count LOOP
374842    --
374843    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
374844    --
374845    l_event_id := l_array_event_id(idx);  -- 5648433
374846 
374847    --
374848    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
374849    --
374850 
374851    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
374852              (g_array_event(l_event_id).array_value_num('header_index'))
374853          ,'N'
374854          ) <> 'Y'
374855    THEN
374856       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
374857          trace
374858             (p_msg      => 'Trancaction revesal option is not Y '
374859             ,p_level    => C_LEVEL_STATEMENT
374860             ,p_module   => l_log_module);
374861       END IF;
374862 
374863 --
374864 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
374865 --
374866 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
374867 --
374868 -- set event info as cache for other routines to refer event attributes
374869 --
374870 
374871 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
374872    l_previous_event_id := l_event_id;
374873 
374874    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
374875       (p_application_id           => p_application_id
374876       ,p_primary_ledger_id        => p_primary_ledger_id
374877       ,p_base_ledger_id           => p_base_ledger_id
374878       ,p_target_ledger_id         => p_target_ledger_id
374879       ,p_entity_id                => l_array_entity_id(Idx)
374880       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
374881       ,p_entity_code              => l_array_entity_code(Idx)
374882       ,p_transaction_num          => l_array_transaction_num(Idx)
374883       ,p_event_id                 => l_array_event_id(Idx)
374884       ,p_event_class_code         => l_array_class_code(Idx)
374885       ,p_event_type_code          => l_array_event_type(Idx)
374886       ,p_event_number             => l_array_event_number(Idx)
374887       ,p_event_date               => l_array_event_date(Idx)
374888       ,p_transaction_date         => l_array_transaction_date(Idx)
374889       ,p_reference_num_1          => l_array_reference_num_1(Idx)
374890       ,p_reference_num_2          => l_array_reference_num_2(Idx)
374891       ,p_reference_num_3          => l_array_reference_num_3(Idx)
374892       ,p_reference_num_4          => l_array_reference_num_4(Idx)
374893       ,p_reference_char_1         => l_array_reference_char_1(Idx)
374894       ,p_reference_char_2         => l_array_reference_char_2(Idx)
374895       ,p_reference_char_3         => l_array_reference_char_3(Idx)
374896       ,p_reference_char_4         => l_array_reference_char_4(Idx)
374897       ,p_reference_date_1         => l_array_reference_date_1(Idx)
374898       ,p_reference_date_2         => l_array_reference_date_2(Idx)
374899       ,p_reference_date_3         => l_array_reference_date_3(Idx)
374900       ,p_reference_date_4         => l_array_reference_date_4(Idx)
374901       ,p_event_created_by         => l_array_event_created_by(Idx)
374902       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
374903        --
374904 END IF;
374905 
374906 
374907 
374908 --
374909 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
374910 
374911 l_acct_reversal_source := SUBSTR(NULL, 1,30);
374912 
374913 IF l_continue_with_lines THEN
374914    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
374915       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
374916 
374917       xla_accounting_err_pkg.build_message
374918          (p_appli_s_name            => 'XLA'
374919          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
374920          ,p_token_1                 => 'LINE_NUMBER'
374921          ,p_value_1                 => l_array_extract_line_num(Idx)
374922          ,p_token_2                 => 'PRODUCT_NAME'
374923          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
374924          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
374925          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
374926          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
374927 
374928    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
374929       --
374930       -- following sets the accounting attributes needed to reverse
374931       -- accounting for a distributeion
374932       --
374933 
374934       --
374935       -- 5217187
374936       --
374937       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
374938       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
374939                                        g_array_event(l_event_id).array_value_num('header_index'));
374940       --
374941       --
374942 
374943       -- No reversal code generated
374944 
374945       xla_ae_lines_pkg.SetAcctReversalAttrs
374946          (p_event_id             => l_event_id
374947          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
374948          ,p_calculate_acctd_flag => l_calculate_acctd_flag
374949          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
374950    END IF;
374951 
374952    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
374953        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
374954 
374955 --
374956 AcctLineType_50 (
374957  p_application_id  => p_application_id
374958  ,p_event_id     => l_event_id
374959  ,p_calculate_acctd_flag => l_calculate_acctd_flag
374960  ,p_calculate_g_l_flag => l_calculate_g_l_flag
374961  ,p_actual_flag => l_actual_flag
374962  ,p_balance_type_code => l_balance_type_code
374963  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
374964  
374965  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
374966  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
374967  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
374968  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
374969  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
374970  , p_source_11 => l_array_source_11(Idx)
374971  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
374972  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
374973  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
374974  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
374975  , p_source_84 => l_array_source_84(Idx)
374976  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
374977  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
374978  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
374979  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
374980  , p_source_88 => l_array_source_88(Idx)
374981  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
374982  , p_source_91 => l_array_source_91(Idx)
374983  , p_source_92 => l_array_source_92(Idx)
374984  , p_source_93 => l_array_source_93(Idx)
374985  , p_source_94 => l_array_source_94(Idx)
374986  , p_source_95 => l_array_source_95(Idx)
374987  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
374988  , p_source_97 => l_array_source_97(Idx)
374989  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
374990  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
374991  );
374992 If(l_balance_type_code = 'A') THEN
374993   l_actual_gain_loss_ref := l_gain_or_loss_ref;
374994 END IF;
374995 
374996 --
374997 
374998 
374999 --
375000 AcctLineType_101 (
375001  p_application_id  => p_application_id
375002  ,p_event_id     => l_event_id
375003  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375004  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375005  ,p_actual_flag => l_actual_flag
375006  ,p_balance_type_code => l_balance_type_code
375007  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375008  
375009  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375010  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375011  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375012  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375013  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375014  , p_source_11 => l_array_source_11(Idx)
375015  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375016  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375017  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375018  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375019  , p_source_84 => l_array_source_84(Idx)
375020  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375021  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375022  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375023  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375024  , p_source_88 => l_array_source_88(Idx)
375025  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375026  , p_source_91 => l_array_source_91(Idx)
375027  , p_source_92 => l_array_source_92(Idx)
375028  , p_source_93 => l_array_source_93(Idx)
375029  , p_source_94 => l_array_source_94(Idx)
375030  , p_source_95 => l_array_source_95(Idx)
375031  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375032  , p_source_97 => l_array_source_97(Idx)
375033  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375034  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375035  );
375036 If(l_balance_type_code = 'A') THEN
375037   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375038 END IF;
375039 
375040 --
375041 
375042 
375043 --
375044 AcctLineType_240 (
375045  p_application_id  => p_application_id
375046  ,p_event_id     => l_event_id
375047  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375048  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375049  ,p_actual_flag => l_actual_flag
375050  ,p_balance_type_code => l_balance_type_code
375051  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375052  
375053  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375054  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375055  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375056  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375057  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375058  , p_source_15 => l_array_source_15(Idx)
375059  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
375060  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
375061  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
375062  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
375063  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
375064  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375065  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375066  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375067  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375068  , p_source_84 => l_array_source_84(Idx)
375069  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375070  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375071  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375072  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375073  , p_source_88 => l_array_source_88(Idx)
375074  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375075  , p_source_91 => l_array_source_91(Idx)
375076  , p_source_92 => l_array_source_92(Idx)
375077  , p_source_93 => l_array_source_93(Idx)
375078  , p_source_94 => l_array_source_94(Idx)
375079  , p_source_95 => l_array_source_95(Idx)
375080  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375081  , p_source_97 => l_array_source_97(Idx)
375082  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375083  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375084  , p_source_108 => l_array_source_108(Idx)
375085  );
375086 If(l_balance_type_code = 'A') THEN
375087   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375088 END IF;
375089 
375090 --
375091 
375092 
375093 --
375094 AcctLineType_315 (
375095  p_application_id  => p_application_id
375096  ,p_event_id     => l_event_id
375097  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375098  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375099  ,p_actual_flag => l_actual_flag
375100  ,p_balance_type_code => l_balance_type_code
375101  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375102  
375103  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375104  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375105  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375106  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375107  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375108  , p_source_11 => l_array_source_11(Idx)
375109  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375110  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375111  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375112  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375113  , p_source_84 => l_array_source_84(Idx)
375114  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375115  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375116  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375117  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375118  , p_source_88 => l_array_source_88(Idx)
375119  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375120  , p_source_91 => l_array_source_91(Idx)
375121  , p_source_92 => l_array_source_92(Idx)
375122  , p_source_93 => l_array_source_93(Idx)
375123  , p_source_94 => l_array_source_94(Idx)
375124  , p_source_95 => l_array_source_95(Idx)
375125  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375126  , p_source_97 => l_array_source_97(Idx)
375127  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375128  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375129  );
375130 If(l_balance_type_code = 'A') THEN
375131   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375132 END IF;
375133 
375134 --
375135 
375136 
375137 --
375138 AcctLineType_344 (
375139  p_application_id  => p_application_id
375140  ,p_event_id     => l_event_id
375141  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375142  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375143  ,p_actual_flag => l_actual_flag
375144  ,p_balance_type_code => l_balance_type_code
375145  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375146  
375147  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375148  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375149  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375150  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375151  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375152  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
375153  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375154  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375155  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375156  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375157  , p_source_84 => l_array_source_84(Idx)
375158  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375159  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375160  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375161  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375162  , p_source_88 => l_array_source_88(Idx)
375163  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375164  , p_source_91 => l_array_source_91(Idx)
375165  , p_source_92 => l_array_source_92(Idx)
375166  , p_source_93 => l_array_source_93(Idx)
375167  , p_source_94 => l_array_source_94(Idx)
375168  , p_source_95 => l_array_source_95(Idx)
375169  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375170  , p_source_97 => l_array_source_97(Idx)
375171  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375172  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375173  );
375174 If(l_balance_type_code = 'A') THEN
375175   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375176 END IF;
375177 
375178 --
375179 
375180 
375181 --
375182 AcctLineType_375 (
375183  p_application_id  => p_application_id
375184  ,p_event_id     => l_event_id
375185  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375186  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375187  ,p_actual_flag => l_actual_flag
375188  ,p_balance_type_code => l_balance_type_code
375189  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375190  
375191  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375192  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375193  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375194  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375195  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375196  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
375197  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375198  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375199  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375200  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375201  , p_source_84 => l_array_source_84(Idx)
375202  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375203  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375204  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375205  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375206  , p_source_88 => l_array_source_88(Idx)
375207  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375208  , p_source_91 => l_array_source_91(Idx)
375209  , p_source_92 => l_array_source_92(Idx)
375210  , p_source_93 => l_array_source_93(Idx)
375211  , p_source_94 => l_array_source_94(Idx)
375212  , p_source_95 => l_array_source_95(Idx)
375213  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375214  , p_source_97 => l_array_source_97(Idx)
375215  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375216  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375217  , p_source_110 => l_array_source_110(Idx)
375218  , p_source_110_meaning => l_array_source_110_meaning(Idx)
375219  );
375220 If(l_balance_type_code = 'A') THEN
375221   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375222 END IF;
375223 
375224 --
375225 
375226 
375227 --
375228 AcctLineType_407 (
375229  p_application_id  => p_application_id
375230  ,p_event_id     => l_event_id
375231  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375232  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375233  ,p_actual_flag => l_actual_flag
375234  ,p_balance_type_code => l_balance_type_code
375235  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375236  
375237  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375238  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375239  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375240  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375241  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375242  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
375243  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375244  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375245  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375246  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375247  , p_source_84 => l_array_source_84(Idx)
375248  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375249  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375250  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375251  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375252  , p_source_88 => l_array_source_88(Idx)
375253  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375254  , p_source_91 => l_array_source_91(Idx)
375255  , p_source_92 => l_array_source_92(Idx)
375256  , p_source_93 => l_array_source_93(Idx)
375257  , p_source_94 => l_array_source_94(Idx)
375258  , p_source_95 => l_array_source_95(Idx)
375259  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375260  , p_source_97 => l_array_source_97(Idx)
375261  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375262  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375263  , p_source_110 => l_array_source_110(Idx)
375264  , p_source_110_meaning => l_array_source_110_meaning(Idx)
375265  );
375266 If(l_balance_type_code = 'A') THEN
375267   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375268 END IF;
375269 
375270 --
375271 
375272 
375273 --
375274 AcctLineType_474 (
375275  p_application_id  => p_application_id
375276  ,p_event_id     => l_event_id
375277  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375278  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375279  ,p_actual_flag => l_actual_flag
375280  ,p_balance_type_code => l_balance_type_code
375281  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375282  
375283  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375284  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375285  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375286  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375287  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375288  , p_source_58 => g_array_event(l_event_id).array_value_num('source_58')
375289  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375290  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375291  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375292  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375293  , p_source_84 => l_array_source_84(Idx)
375294  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375295  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375296  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375297  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375298  , p_source_88 => l_array_source_88(Idx)
375299  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375300  , p_source_91 => l_array_source_91(Idx)
375301  , p_source_92 => l_array_source_92(Idx)
375302  , p_source_93 => l_array_source_93(Idx)
375303  , p_source_94 => l_array_source_94(Idx)
375304  , p_source_95 => l_array_source_95(Idx)
375305  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375306  , p_source_97 => l_array_source_97(Idx)
375307  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375308  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375309  );
375310 If(l_balance_type_code = 'A') THEN
375311   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375312 END IF;
375313 
375314 --
375315 
375316 
375317 --
375318 AcctLineType_501 (
375319  p_application_id  => p_application_id
375320  ,p_event_id     => l_event_id
375321  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375322  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375323  ,p_actual_flag => l_actual_flag
375324  ,p_balance_type_code => l_balance_type_code
375325  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375326  
375327  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375328  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375329  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375330  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375331  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375332  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
375333  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375334  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375335  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375336  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375337  , p_source_84 => l_array_source_84(Idx)
375338  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375339  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375340  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375341  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375342  , p_source_88 => l_array_source_88(Idx)
375343  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375344  , p_source_91 => l_array_source_91(Idx)
375345  , p_source_92 => l_array_source_92(Idx)
375346  , p_source_93 => l_array_source_93(Idx)
375347  , p_source_94 => l_array_source_94(Idx)
375348  , p_source_95 => l_array_source_95(Idx)
375349  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375350  , p_source_97 => l_array_source_97(Idx)
375351  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375352  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375353  );
375354 If(l_balance_type_code = 'A') THEN
375355   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375356 END IF;
375357 
375358 --
375359 
375360 
375361 --
375362 AcctLineType_522 (
375363  p_application_id  => p_application_id
375364  ,p_event_id     => l_event_id
375365  ,p_calculate_acctd_flag => l_calculate_acctd_flag
375366  ,p_calculate_g_l_flag => l_calculate_g_l_flag
375367  ,p_actual_flag => l_actual_flag
375368  ,p_balance_type_code => l_balance_type_code
375369  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
375370  
375371  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
375372  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
375373  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
375374  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
375375  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
375376  , p_source_11 => l_array_source_11(Idx)
375377  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
375378  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
375379  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
375380  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
375381  , p_source_84 => l_array_source_84(Idx)
375382  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
375383  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
375384  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
375385  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
375386  , p_source_88 => l_array_source_88(Idx)
375387  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
375388  , p_source_91 => l_array_source_91(Idx)
375389  , p_source_92 => l_array_source_92(Idx)
375390  , p_source_93 => l_array_source_93(Idx)
375391  , p_source_94 => l_array_source_94(Idx)
375392  , p_source_95 => l_array_source_95(Idx)
375393  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
375394  , p_source_97 => l_array_source_97(Idx)
375395  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
375396  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
375397  );
375398 If(l_balance_type_code = 'A') THEN
375399   l_actual_gain_loss_ref := l_gain_or_loss_ref;
375400 END IF;
375401 
375402 --
375403 
375404       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
375405       -- or secondary ledger that has different currency with primary
375406       -- or alc that is calculated by sla
375407       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
375408             (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'))
375409 
375410 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
375411 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
375412           AND (l_actual_flag = 'A')) THEN
375413         XLA_AE_LINES_PKG.CreateGainOrLossLines(
375414           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
375415          ,p_application_id   => p_application_id
375416          ,p_amb_context_code => 'DEFAULT'
375417          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
375418          ,p_event_class_code => C_EVENT_CLASS_CODE
375419          ,p_event_type_code  => C_EVENT_TYPE_CODE
375420          
375421          ,p_gain_ccid        => -1
375422          ,p_loss_ccid        => -1
375423 
375424          ,p_actual_flag      => l_actual_flag
375425          ,p_enc_flag         => null
375426          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
375427          ,p_enc_g_l_ref      => null
375428          );
375429       END IF;
375430    END IF;
375431 END IF;
375432 
375433    ELSE
375434       --
375435       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
375436       --
375437       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
375438          trace
375439             (p_msg      => 'Trancaction revesal option is Y'
375440             ,p_level    => C_LEVEL_STATEMENT
375441             ,p_module   => l_log_module);
375442       END IF;
375443    END IF;
375444 
375445 END LOOP;
375446 l_result := XLA_AE_LINES_PKG.InsertLines ;
375447 end loop;
375448 close line_cur;
375449 
375450 
375451 --
375452 -- insert headers into xla_ae_headers_gt table
375453 --
375454 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
375455 
375456 -- insert into errors table here.
375457 
375458 END LOOP;
375459 
375460 --
375461 -- 4865292
375462 --
375463 -- Compare g_hdr_extract_count with event count in
375464 -- CreateHeadersAndLines.
375465 --
375466 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
375467 
375468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
375469    trace (p_msg     => '# rows extracted from header extract objects '
375470                     || ' (running total): '
375471                     || g_hdr_extract_count
375472          ,p_level   => C_LEVEL_STATEMENT
375473          ,p_module  => l_log_module);
375474 END IF;
375475 
375476 CLOSE header_cur;
375477 --
375478 
375479 --
375480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
375481    trace
375482       (p_msg      => 'END of EventType_588'
375483       ,p_level    => C_LEVEL_PROCEDURE
375484       ,p_module   => l_log_module);
375485 END IF;
375486 --
375487 RETURN l_result;
375488 EXCEPTION
375489 WHEN xla_exceptions_pkg.application_exception THEN
375490    
375491 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
375492 
375493    
375494 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
375495 
375496    RAISE;
375497 
375498 WHEN NO_DATA_FOUND THEN
375499 
375500 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
375501 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
375502 
375503 FOR header_record IN header_cur
375504 LOOP
375505     l_array_header_events(header_record.event_id) := header_record.event_id;
375506 END LOOP;
375507 
375508 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
375509 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
375510 
375511 fnd_file.put_line(fnd_file.LOG, '                    ');
375512 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
375513 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
375514 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
375515 
375516 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
375517 LOOP
375518 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
375519 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
375520         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
375521 	END IF;
375522 END LOOP;
375523 
375524 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
375525 fnd_file.put_line(fnd_file.LOG, '                    ');
375526 
375527 
375528 xla_exceptions_pkg.raise_message
375529       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_588');
375530 
375531 
375532 WHEN OTHERS THEN
375533    xla_exceptions_pkg.raise_message
375534       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_588');
375535 END EventType_588;
375536 --
375537 
375538 ---------------------------------------
375539 --
375540 -- PRIVATE PROCEDURE
375541 --         insert_sources_589
375542 --
375543 ----------------------------------------
375544 --
375545 PROCEDURE insert_sources_589(
375546                                 p_target_ledger_id       IN NUMBER
375547                               , p_language               IN VARCHAR2
375548                               , p_sla_ledger_id          IN NUMBER
375549                               , p_pad_start_date         IN DATE
375550                               , p_pad_end_date           IN DATE
375551                          )
375552 IS
375553 
375554 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RCPT_REC_INSP_ALL';
375555 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RCPT_REC_INSP';
375556 p_apps_owner                   VARCHAR2(30);
375557 l_log_module                   VARCHAR2(240);
375558 BEGIN
375559 IF g_log_enabled THEN
375560       l_log_module := C_DEFAULT_MODULE||'.insert_sources_589';
375561 END IF;
375562 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
375563 
375564       trace
375565          (p_msg      => 'BEGIN of insert_sources_589'
375566          ,p_level    => C_LEVEL_PROCEDURE
375567          ,p_module   => l_log_module);
375568 
375569 END IF;
375570 
375571 -- select APPS owner
375572 SELECT oracle_username
375573   INTO p_apps_owner
375574   FROM fnd_oracle_userid
375575  WHERE read_only_flag = 'U'
375576 ;
375577 
375578 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
375579       trace
375580          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
375581                         ' - p_language = '||p_language||
375582                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
375583                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
375584                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
375585                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
375586          ,p_level    => C_LEVEL_STATEMENT
375587          ,p_module   => l_log_module);
375588 END IF;
375589 
375590 
375591 --
375592 INSERT INTO xla_diag_sources --hdr2
375593 (
375594         event_id
375595       , ledger_id
375596       , sla_ledger_id
375597       , description_language
375598       , object_name
375599       , object_type_code
375600       , line_number
375601       , source_application_id
375602       , source_type_code
375603       , source_code
375604       , source_value
375605       , source_meaning
375606       , created_by
375607       , creation_date
375608       , last_update_date
375609       , last_updated_by
375610       , last_update_login
375611       , program_update_date
375612       , program_application_id
375613       , program_id
375614       , request_id
375615 )
375616 SELECT
375617         event_id
375618       , p_target_ledger_id
375619       , p_sla_ledger_id
375620       , p_language
375621       , object_name
375622       , object_type_code
375623       , line_number
375624       , source_application_id
375625       , source_type_code
375626       , source_code
375627       , SUBSTR(source_value ,1,1996)
375628       , SUBSTR(source_meaning ,1,200)
375629       , xla_environment_pkg.g_Usr_Id
375630       , TRUNC(SYSDATE)
375631       , TRUNC(SYSDATE)
375632       , xla_environment_pkg.g_Usr_Id
375633       , xla_environment_pkg.g_Login_Id
375634       , TRUNC(SYSDATE)
375635       , xla_environment_pkg.g_Prog_Appl_Id
375636       , xla_environment_pkg.g_Prog_Id
375637       , xla_environment_pkg.g_Req_Id
375638   FROM (
375639        SELECT xet.event_id                  event_id
375640             , 0                          line_number
375641             , CASE r
375642                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
375643                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
375644                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
375645                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
375646                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
375647                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
375648                 
375649                ELSE null
375650               END                           object_name
375651             , CASE r
375652                 WHEN 1 THEN 'HEADER' 
375653                 WHEN 2 THEN 'HEADER' 
375654                 WHEN 3 THEN 'HEADER' 
375655                 WHEN 4 THEN 'HEADER' 
375656                 WHEN 5 THEN 'HEADER' 
375657                 WHEN 6 THEN 'HEADER' 
375658                 
375659                 ELSE null
375660               END                           object_type_code
375661             , CASE r
375662                 WHEN 1 THEN '707' 
375663                 WHEN 2 THEN '707' 
375664                 WHEN 3 THEN '707' 
375665                 WHEN 4 THEN '707' 
375666                 WHEN 5 THEN '707' 
375667                 WHEN 6 THEN '707' 
375668                 
375669                 ELSE null
375670               END                           source_application_id
375671             , 'S'             source_type_code
375672             , CASE r
375673                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
375674                 WHEN 2 THEN 'CURRENCY_CODE' 
375675                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
375676                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
375677                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
375678                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
375679                 
375680                 ELSE null
375681               END                           source_code
375682             , CASE r
375683                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
375684                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
375685                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
375686                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
375687                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
375688                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
375689                 
375690                 ELSE null
375691               END                           source_value
375692             , CASE r
375693                 WHEN 1 THEN fvl85.meaning
375694                 WHEN 6 THEN fvl114.meaning
375695                 
375696                 ELSE null
375697               END               source_meaning
375698          FROM xla_events_gt     xet  
375699       , CST_XLA_RCV_HEADERS_V  h1
375700   , fnd_lookup_values    fvl85
375701   , fnd_lookup_values    fvl114
375702              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
375703          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
375704            AND xet.event_class_code = C_EVENT_CLASS_CODE
375705               AND h1.event_id = xet.event_id
375706    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
375707   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
375708   AND fvl85.view_application_id(+) = 700
375709   AND fvl85.language(+)            = USERENV('LANG')
375710      AND fvl114.lookup_type(+)         = 'YES_NO'
375711   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
375712   AND fvl114.view_application_id(+) = 0
375713   AND fvl114.language(+)            = USERENV('LANG')
375714   
375715 )
375716 ;
375717 --
375718 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
375719 
375720       trace
375721          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
375722          ,p_level    => C_LEVEL_STATEMENT
375723          ,p_module   => l_log_module);
375724 
375725 END IF;
375726 --
375727 
375728 
375729 
375730 --
375731 INSERT INTO xla_diag_sources  --line2
375732 (
375733         event_id
375734       , ledger_id
375735       , sla_ledger_id
375736       , description_language
375737       , object_name
375738       , object_type_code
375739       , line_number
375740       , source_application_id
375741       , source_type_code
375742       , source_code
375743       , source_value
375744       , source_meaning
375745       , created_by
375746       , creation_date
375747       , last_update_date
375748       , last_updated_by
375749       , last_update_login
375750       , program_update_date
375751       , program_application_id
375752       , program_id
375753       , request_id
375754 )
375755 SELECT  event_id
375756       , p_target_ledger_id
375757       , p_sla_ledger_id
375758       , p_language
375759       , object_name
375760       , object_type_code
375761       , line_number
375762       , source_application_id
375763       , source_type_code
375764       , source_code
375765       , SUBSTR(source_value,1,1996)
375766       , SUBSTR(source_meaning ,1,200)
375767       , xla_environment_pkg.g_Usr_Id
375768       , TRUNC(SYSDATE)
375769       , TRUNC(SYSDATE)
375770       , xla_environment_pkg.g_Usr_Id
375771       , xla_environment_pkg.g_Login_Id
375772       , TRUNC(SYSDATE)
375773       , xla_environment_pkg.g_Prog_Appl_Id
375774       , xla_environment_pkg.g_Prog_Id
375775       , xla_environment_pkg.g_Req_Id
375776   FROM (
375777        SELECT xet.event_id                  event_id
375778             , l2.line_number                 line_number
375779             , CASE r
375780                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
375781                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
375782                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
375783                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
375784                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
375785                 
375786                ELSE null
375787               END                           object_name
375788             , CASE r
375789                 WHEN 1 THEN 'LINE' 
375790                 WHEN 2 THEN 'LINE' 
375791                 WHEN 3 THEN 'LINE' 
375792                 WHEN 4 THEN 'LINE' 
375793                 WHEN 5 THEN 'LINE' 
375794                 
375795                 ELSE null
375796               END                           object_type_code
375797             , CASE r
375798                 WHEN 1 THEN '707' 
375799                 WHEN 2 THEN '707' 
375800                 WHEN 3 THEN '707' 
375801                 WHEN 4 THEN '707' 
375802                 WHEN 5 THEN '707' 
375803                 
375804                 ELSE null
375805               END                           source_application_id
375806             , 'S'             source_type_code
375807             , CASE r
375808                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
375809                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
375810                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
375811                 WHEN 4 THEN 'ENTERED_AMOUNT' 
375812                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
375813                 
375814                 ELSE null
375815               END                           source_code
375816             , CASE r
375817                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
375818                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
375819                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
375820                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
375821                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
375822                 
375823                 ELSE null
375824               END                           source_value
375825             , null              source_meaning
375826          FROM  xla_events_gt     xet  
375827         , CST_XLA_RCV_LINES_V  l2
375828             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
375829         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
375830           AND xet.event_class_code = C_EVENT_CLASS_CODE
375831             AND l2.event_id          = xet.event_id
375832 
375833 )
375834 ;
375835 --
375836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
375837 
375838       trace
375839          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
375840          ,p_level    => C_LEVEL_STATEMENT
375841          ,p_module   => l_log_module);
375842 
375843 END IF;
375844 
375845 
375846 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
375847       trace
375848          (p_msg      => 'END of insert_sources_589'
375849          ,p_level    => C_LEVEL_PROCEDURE
375850          ,p_module   => l_log_module);
375851 END IF;
375852 EXCEPTION
375853   WHEN xla_exceptions_pkg.application_exception THEN
375854       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
375855             trace
375856                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
375857                ,p_level    => C_LEVEL_EXCEPTION
375858                ,p_module   => l_log_module);
375859       END IF;
375860       RAISE;
375861   WHEN OTHERS THEN
375862       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
375863             trace
375864                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
375865                ,p_level    => C_LEVEL_EXCEPTION
375866                ,p_module   => l_log_module);
375867        END IF;
375868        xla_exceptions_pkg.raise_message
375869            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_589');
375870 END insert_sources_589;
375871 --
375872 
375873 ---------------------------------------
375874 --
375875 -- PRIVATE FUNCTION
375876 --         EventClass_589
375877 --
375878 ----------------------------------------
375879 --
375880 FUNCTION EventClass_589
375881        (p_application_id         IN NUMBER
375882        ,p_base_ledger_id         IN NUMBER
375883        ,p_target_ledger_id       IN NUMBER
375884        ,p_language               IN VARCHAR2
375885        ,p_currency_code          IN VARCHAR2
375886        ,p_sla_ledger_id          IN NUMBER
375887        ,p_pad_start_date         IN DATE
375888        ,p_pad_end_date           IN DATE
375889        ,p_primary_ledger_id      IN NUMBER)
375890 RETURN BOOLEAN IS
375891 --
375892 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RCPT_REC_INSP_ALL';
375893 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RCPT_REC_INSP';
375894 
375895 l_calculate_acctd_flag   VARCHAR2(1) :='N';
375896 l_calculate_g_l_flag     VARCHAR2(1) :='N';
375897 --
375898 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375899 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375900 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
375901 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
375902 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375903 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
375904 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
375905 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375906 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
375907 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
375908 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375909 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375910 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375911 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
375912 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
375913 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
375914 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
375915 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
375916 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
375917 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
375918 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
375919 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
375920 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
375921 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
375922 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
375923 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
375924 
375925 l_event_id                             NUMBER;
375926 l_previous_event_id                    NUMBER;
375927 l_first_event_id                       NUMBER;
375928 l_last_event_id                        NUMBER;
375929 
375930 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
375931 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
375932 --
375933 --
375934 l_result                    BOOLEAN := TRUE;
375935 l_rows                      NUMBER  := 1000;
375936 l_event_type_name           VARCHAR2(80) := 'All';
375937 l_event_class_name          VARCHAR2(80) := 'Receipt into Receiving Inspection';
375938 l_description               VARCHAR2(4000);
375939 l_transaction_reversal      NUMBER;
375940 l_ae_header_id              NUMBER;
375941 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
375942 l_log_module                VARCHAR2(240);
375943 --
375944 l_acct_reversal_source      VARCHAR2(30);
375945 l_trx_reversal_source       VARCHAR2(30);
375946 
375947 l_continue_with_lines       BOOLEAN := TRUE;
375948 --
375949 l_acc_rev_gl_date_source    DATE;                      -- 4262811
375950 --
375951 type t_array_event_id is table of number index by binary_integer;
375952 
375953 l_rec_array_event                    t_rec_array_event;
375954 l_null_rec_array_event               t_rec_array_event;
375955 l_array_ae_header_id                 xla_number_array_type;
375956 l_actual_flag                        VARCHAR2(1) := NULL;
375957 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
375958 l_balance_type_code                  VARCHAR2(1) :=NULL;
375959 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
375960 
375961 --
375962 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
375963 --
375964 
375965 TYPE t_array_source_85 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
375966 TYPE t_array_source_88 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
375967 TYPE t_array_source_92 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
375968 TYPE t_array_source_93 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
375969 TYPE t_array_source_94 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
375970 TYPE t_array_source_114 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
375971 
375972 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
375973 TYPE t_array_source_78 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
375974 TYPE t_array_source_84 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
375975 TYPE t_array_source_91 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
375976 TYPE t_array_source_95 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
375977 
375978 l_array_source_85              t_array_source_85;
375979 l_array_source_85_meaning      t_array_lookup_meaning;
375980 l_array_source_88              t_array_source_88;
375981 l_array_source_92              t_array_source_92;
375982 l_array_source_93              t_array_source_93;
375983 l_array_source_94              t_array_source_94;
375984 l_array_source_114              t_array_source_114;
375985 l_array_source_114_meaning      t_array_lookup_meaning;
375986 
375987 l_array_source_11      t_array_source_11;
375988 l_array_source_78      t_array_source_78;
375989 l_array_source_84      t_array_source_84;
375990 l_array_source_91      t_array_source_91;
375991 l_array_source_95      t_array_source_95;
375992 
375993 --
375994 CURSOR header_cur
375995 IS
375996 SELECT /*+ leading(xet) cardinality(xet,1) */
375997 -- Event Class Code: RCPT_REC_INSP
375998     xet.entity_id
375999    ,xet.legal_entity_id
376000    ,xet.entity_code
376001    ,xet.transaction_number
376002    ,xet.event_id
376003    ,xet.event_class_code
376004    ,xet.event_type_code
376005    ,xet.event_number
376006    ,xet.event_date
376007    ,xet.transaction_date
376008    ,xet.reference_num_1
376009    ,xet.reference_num_2
376010    ,xet.reference_num_3
376011    ,xet.reference_num_4
376012    ,xet.reference_char_1
376013    ,xet.reference_char_2
376014    ,xet.reference_char_3
376015    ,xet.reference_char_4
376016    ,xet.reference_date_1
376017    ,xet.reference_date_2
376018    ,xet.reference_date_3
376019    ,xet.reference_date_4
376020    ,xet.event_created_by
376021    ,xet.budgetary_control_flag 
376022   , h1.DISTRIBUTION_TYPE    source_85
376023   , fvl85.meaning   source_85_meaning
376024   , h1.CURRENCY_CODE    source_88
376025   , h1.CURRENCY_CONVERSION_DATE    source_92
376026   , h1.CURRENCY_CONVERSION_RATE    source_93
376027   , h1.CURRENCY_CONVERSION_TYPE    source_94
376028   , h1.TRANSFER_TO_GL_INDICATOR    source_114
376029   , fvl114.meaning   source_114_meaning
376030   FROM xla_events_gt     xet 
376031   , CST_XLA_RCV_HEADERS_V  h1
376032   , fnd_lookup_values    fvl85
376033   , fnd_lookup_values    fvl114
376034  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
376035    and xet.event_class_code = C_EVENT_CLASS_CODE
376036    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
376037    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
376038   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
376039   AND fvl85.view_application_id(+) = 700
376040   AND fvl85.language(+)            = USERENV('LANG')
376041      AND fvl114.lookup_type(+)         = 'YES_NO'
376042   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
376043   AND fvl114.view_application_id(+) = 0
376044   AND fvl114.language(+)            = USERENV('LANG')
376045   
376046  ORDER BY event_id
376047 ;
376048 
376049 
376050 --
376051 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
376052 IS
376053 SELECT  /*+ leading(xet) cardinality(xet,1) */
376054 -- Event Class Code: RCPT_REC_INSP
376055     xet.entity_id
376056    ,xet.legal_entity_id
376057    ,xet.entity_code
376058    ,xet.transaction_number
376059    ,xet.event_id
376060    ,xet.event_class_code
376061    ,xet.event_type_code
376062    ,xet.event_number
376063    ,xet.event_date
376064    ,xet.transaction_date
376065    ,xet.reference_num_1
376066    ,xet.reference_num_2
376067    ,xet.reference_num_3
376068    ,xet.reference_num_4
376069    ,xet.reference_char_1
376070    ,xet.reference_char_2
376071    ,xet.reference_char_3
376072    ,xet.reference_char_4
376073    ,xet.reference_date_1
376074    ,xet.reference_date_2
376075    ,xet.reference_date_3
376076    ,xet.reference_date_4
376077    ,xet.event_created_by
376078    ,xet.budgetary_control_flag
376079  , l2.LINE_NUMBER  
376080   , l2.CODE_COMBINATION_ID    source_11
376081   , l2.RCV_ACCOUNTING_LINE_TYPE    source_78
376082   , l2.DISTRIBUTION_IDENTIFIER    source_84
376083   , l2.ENTERED_AMOUNT    source_91
376084   , l2.ACCOUNTED_AMOUNT    source_95
376085   FROM xla_events_gt     xet 
376086   , CST_XLA_RCV_LINES_V  l2
376087  WHERE xet.event_id between x_first_event_id and x_last_event_id
376088    and xet.event_date between p_pad_start_date and p_pad_end_date
376089    and xet.event_class_code = C_EVENT_CLASS_CODE
376090    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
376091 ;
376092 
376093 --
376094 BEGIN
376095 IF g_log_enabled THEN
376096    l_log_module := C_DEFAULT_MODULE||'.EventClass_589';
376097 END IF;
376098 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
376099    trace
376100       (p_msg      => 'BEGIN of EventClass_589'
376101       ,p_level    => C_LEVEL_PROCEDURE
376102       ,p_module   => l_log_module);
376103 END IF;
376104 
376105 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376106    trace
376107       (p_msg      => 'p_application_id = '||p_application_id||
376108                      ' - p_base_ledger_id = '||p_base_ledger_id||
376109                      ' - p_target_ledger_id  = '||p_target_ledger_id||
376110                      ' - p_language = '||p_language||
376111                      ' - p_currency_code = '||p_currency_code||
376112                      ' - p_sla_ledger_id = '||p_sla_ledger_id
376113       ,p_level    => C_LEVEL_STATEMENT
376114       ,p_module   => l_log_module);
376115 END IF;
376116 --
376117 -- initialze arrays
376118 --
376119 g_array_event.DELETE;
376120 l_rec_array_event := l_null_rec_array_event;
376121 --
376122 --------------------------------------
376123 -- 4262811 Initialze MPA Line Number
376124 --------------------------------------
376125 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
376126 
376127 --
376128 
376129 --
376130 OPEN header_cur;
376131 --
376132 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376133    trace
376134    (p_msg      => 'SQL - FETCH header_cur'
376135    ,p_level    => C_LEVEL_STATEMENT
376136    ,p_module   => l_log_module);
376137 END IF;
376138 --
376139 LOOP
376140 FETCH header_cur BULK COLLECT INTO
376141         l_array_entity_id
376142       , l_array_legal_entity_id
376143       , l_array_entity_code
376144       , l_array_transaction_num
376145       , l_array_event_id
376146       , l_array_class_code
376147       , l_array_event_type
376148       , l_array_event_number
376149       , l_array_event_date
376150       , l_array_transaction_date
376151       , l_array_reference_num_1
376152       , l_array_reference_num_2
376153       , l_array_reference_num_3
376154       , l_array_reference_num_4
376155       , l_array_reference_char_1
376156       , l_array_reference_char_2
376157       , l_array_reference_char_3
376158       , l_array_reference_char_4
376159       , l_array_reference_date_1
376160       , l_array_reference_date_2
376161       , l_array_reference_date_3
376162       , l_array_reference_date_4
376163       , l_array_event_created_by
376164       , l_array_budgetary_control_flag 
376165       , l_array_source_85
376166       , l_array_source_85_meaning
376167       , l_array_source_88
376168       , l_array_source_92
376169       , l_array_source_93
376170       , l_array_source_94
376171       , l_array_source_114
376172       , l_array_source_114_meaning
376173       LIMIT l_rows;
376174 --
376175 IF (C_LEVEL_EVENT >= g_log_level) THEN
376176    trace
376177    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
376178    ,p_level    => C_LEVEL_EVENT
376179    ,p_module   => l_log_module);
376180 END IF;
376181 --
376182 EXIT WHEN l_array_entity_id.COUNT = 0;
376183 
376184 -- initialize arrays
376185 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
376186 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
376187 
376188 --
376189 -- Bug 4458708
376190 --
376191 XLA_AE_LINES_PKG.g_LineNumber := 0;
376192 
376193 
376194 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
376195 g_last_hdr_idx := l_array_event_id.LAST;
376196 --
376197 -- loop for the headers. Each iteration is for each header extract row
376198 -- fetched in header cursor
376199 --
376200 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
376201 
376202 --
376203 -- set event info as cache for other routines to refer event attributes
376204 --
376205 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
376206    (p_application_id           => p_application_id
376207    ,p_primary_ledger_id        => p_primary_ledger_id
376208    ,p_base_ledger_id           => p_base_ledger_id
376209    ,p_target_ledger_id         => p_target_ledger_id
376210    ,p_entity_id                => l_array_entity_id(hdr_idx)
376211    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
376212    ,p_entity_code              => l_array_entity_code(hdr_idx)
376213    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
376214    ,p_event_id                 => l_array_event_id(hdr_idx)
376215    ,p_event_class_code         => l_array_class_code(hdr_idx)
376216    ,p_event_type_code          => l_array_event_type(hdr_idx)
376217    ,p_event_number             => l_array_event_number(hdr_idx)
376218    ,p_event_date               => l_array_event_date(hdr_idx)
376219    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
376220    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
376221    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
376222    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
376223    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
376224    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
376225    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
376226    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
376227    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
376228    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
376229    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
376230    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
376231    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
376232    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
376233    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
376234 
376235 --
376236 -- set the status of entry to C_VALID (0)
376237 --
376238 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
376239 
376240 --
376241 -- initialize a row for ae header
376242 --
376243 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
376244 
376245 l_event_id := l_array_event_id(hdr_idx);
376246 
376247 --
376248 -- storing the hdr_idx for event. May be used by line cursor.
376249 --
376250 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
376251 
376252 --
376253 -- store sources from header extract. This can be improved to
376254 -- store only those sources from header extract that may be used in lines
376255 --
376256 
376257 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
376258 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
376259 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
376260 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
376261 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
376262 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
376263 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
376264 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
376265 
376266 --
376267 -- initilaize the status of ae headers for diffrent balance types
376268 -- the status is initialised to C_NOT_CREATED (2)
376269 --
376270 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
376271 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
376272 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
376273 
376274 --
376275 -- call api to validate and store accounting attributes for header
376276 --
376277 
376278 ------------------------------------------------------------
376279 -- Accrual Reversal : to get date for Standard Source (NONE)
376280 ------------------------------------------------------------
376281 l_acc_rev_gl_date_source := NULL;
376282 
376283      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
376284       l_rec_acct_attrs.array_date_value(1) := 
376285 xla_ae_sources_pkg.GetSystemSourceDate(
376286    p_source_code           => 'XLA_REFERENCE_DATE_1'
376287  , p_source_type_code      => 'Y'
376288  , p_source_application_id =>  602
376289 );
376290      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
376291       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
376292 
376293 
376294 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
376295 
376296 XLA_AE_HEADER_PKG.SetJeCategoryName;
376297 
376298 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
376299 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
376300 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
376301 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
376302 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
376303 
376304 
376305 -- No header level analytical criteria
376306 
376307 --
376308 --accounting attribute enhancement, bug 3612931
376309 --
376310 l_trx_reversal_source := SUBSTR(NULL, 1,30);
376311 
376312 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
376313    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
376314 
376315    xla_accounting_err_pkg.build_message
376316       (p_appli_s_name            => 'XLA'
376317       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
376318       ,p_token_1                 => 'ACCT_ATTR_NAME'
376319       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
376320       ,p_token_2                 => 'PRODUCT_NAME'
376321       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
376322       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
376323       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
376324       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
376325 
376326 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
376327    --
376328    -- following sets the accounting attributes needed to reverse
376329    -- accounting for a distributeion
376330    --
376331    xla_ae_lines_pkg.SetTrxReversalAttrs
376332       (p_event_id              => l_event_id
376333       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
376334       ,p_trx_reversal_source   => l_trx_reversal_source);
376335 
376336 END IF;
376337 
376338 
376339 ----------------------------------------------------------------
376340 -- 4262811 -  update the header statuses to invalid in need be
376341 ----------------------------------------------------------------
376342 --
376343 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
376344 
376345 
376346   -----------------------------------------------
376347   -- No accrual reversal for the event class/type
376348   -----------------------------------------------
376349 ----------------------------------------------------------------
376350 
376351 --
376352 -- this ends the header loop iteration for one bulk fetch
376353 --
376354 END LOOP;
376355 
376356 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
376357 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
376358 
376359 --
376360 -- insert dummy rows into lines gt table that were created due to
376361 -- transaction reversals
376362 --
376363 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
376364    l_result := XLA_AE_LINES_PKG.InsertLines;
376365 END IF;
376366 
376367 --
376368 -- reset the temp_line_num for each set of events fetched from header
376369 -- cursor rather than doing it for each new event in line cursor
376370 -- Bug 3939231
376371 --
376372 xla_ae_lines_pkg.g_temp_line_num := 0;
376373 
376374 
376375 
376376 --
376377 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
376378 --
376379 --
376380 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376381 
376382       trace
376383          (p_msg      => 'SQL - FETCH line_cur'
376384          ,p_level    => C_LEVEL_STATEMENT
376385          ,p_module   => l_log_module);
376386 
376387 END IF;
376388 --
376389 --
376390 LOOP
376391   --
376392   FETCH line_cur BULK COLLECT INTO
376393         l_array_entity_id
376394       , l_array_legal_entity_id
376395       , l_array_entity_code
376396       , l_array_transaction_num
376397       , l_array_event_id
376398       , l_array_class_code
376399       , l_array_event_type
376400       , l_array_event_number
376401       , l_array_event_date
376402       , l_array_transaction_date
376403       , l_array_reference_num_1
376404       , l_array_reference_num_2
376405       , l_array_reference_num_3
376406       , l_array_reference_num_4
376407       , l_array_reference_char_1
376408       , l_array_reference_char_2
376409       , l_array_reference_char_3
376410       , l_array_reference_char_4
376411       , l_array_reference_date_1
376412       , l_array_reference_date_2
376413       , l_array_reference_date_3
376414       , l_array_reference_date_4
376415       , l_array_event_created_by
376416       , l_array_budgetary_control_flag
376417       , l_array_extract_line_num 
376418       , l_array_source_11
376419       , l_array_source_78
376420       , l_array_source_84
376421       , l_array_source_91
376422       , l_array_source_95
376423       LIMIT l_rows;
376424 
376425   --
376426   IF (C_LEVEL_EVENT >= g_log_level) THEN
376427             trace
376428                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
376429                ,p_level    => C_LEVEL_EVENT
376430                ,p_module   => l_log_module);
376431   END IF;
376432   --
376433   EXIT WHEN l_array_entity_id.count = 0;
376434 
376435   XLA_AE_LINES_PKG.g_rec_lines := null;
376436 
376437 --
376438 -- Bug 4458708
376439 --
376440 XLA_AE_LINES_PKG.g_LineNumber := 0;
376441 --
376442 --
376443 
376444 FOR Idx IN 1..l_array_event_id.count LOOP
376445    --
376446    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
376447    --
376448    l_event_id := l_array_event_id(idx);  -- 5648433
376449 
376450    --
376451    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
376452    --
376453 
376454    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
376455              (g_array_event(l_event_id).array_value_num('header_index'))
376456          ,'N'
376457          ) <> 'Y'
376458    THEN
376459       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376460          trace
376461             (p_msg      => 'Trancaction revesal option is not Y '
376462             ,p_level    => C_LEVEL_STATEMENT
376463             ,p_module   => l_log_module);
376464       END IF;
376465 
376466 --
376467 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
376468 --
376469 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
376470 --
376471 -- set event info as cache for other routines to refer event attributes
376472 --
376473 
376474 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
376475    l_previous_event_id := l_event_id;
376476 
376477    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
376478       (p_application_id           => p_application_id
376479       ,p_primary_ledger_id        => p_primary_ledger_id
376480       ,p_base_ledger_id           => p_base_ledger_id
376481       ,p_target_ledger_id         => p_target_ledger_id
376482       ,p_entity_id                => l_array_entity_id(Idx)
376483       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
376484       ,p_entity_code              => l_array_entity_code(Idx)
376485       ,p_transaction_num          => l_array_transaction_num(Idx)
376486       ,p_event_id                 => l_array_event_id(Idx)
376487       ,p_event_class_code         => l_array_class_code(Idx)
376488       ,p_event_type_code          => l_array_event_type(Idx)
376489       ,p_event_number             => l_array_event_number(Idx)
376490       ,p_event_date               => l_array_event_date(Idx)
376491       ,p_transaction_date         => l_array_transaction_date(Idx)
376492       ,p_reference_num_1          => l_array_reference_num_1(Idx)
376493       ,p_reference_num_2          => l_array_reference_num_2(Idx)
376494       ,p_reference_num_3          => l_array_reference_num_3(Idx)
376495       ,p_reference_num_4          => l_array_reference_num_4(Idx)
376496       ,p_reference_char_1         => l_array_reference_char_1(Idx)
376497       ,p_reference_char_2         => l_array_reference_char_2(Idx)
376498       ,p_reference_char_3         => l_array_reference_char_3(Idx)
376499       ,p_reference_char_4         => l_array_reference_char_4(Idx)
376500       ,p_reference_date_1         => l_array_reference_date_1(Idx)
376501       ,p_reference_date_2         => l_array_reference_date_2(Idx)
376502       ,p_reference_date_3         => l_array_reference_date_3(Idx)
376503       ,p_reference_date_4         => l_array_reference_date_4(Idx)
376504       ,p_event_created_by         => l_array_event_created_by(Idx)
376505       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
376506        --
376507 END IF;
376508 
376509 
376510 
376511 --
376512 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
376513 
376514 l_acct_reversal_source := SUBSTR(NULL, 1,30);
376515 
376516 IF l_continue_with_lines THEN
376517    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
376518       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
376519 
376520       xla_accounting_err_pkg.build_message
376521          (p_appli_s_name            => 'XLA'
376522          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
376523          ,p_token_1                 => 'LINE_NUMBER'
376524          ,p_value_1                 => l_array_extract_line_num(Idx)
376525          ,p_token_2                 => 'PRODUCT_NAME'
376526          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
376527          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
376528          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
376529          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
376530 
376531    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
376532       --
376533       -- following sets the accounting attributes needed to reverse
376534       -- accounting for a distributeion
376535       --
376536 
376537       --
376538       -- 5217187
376539       --
376540       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
376541       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
376542                                        g_array_event(l_event_id).array_value_num('header_index'));
376543       --
376544       --
376545 
376546       -- No reversal code generated
376547 
376548       xla_ae_lines_pkg.SetAcctReversalAttrs
376549          (p_event_id             => l_event_id
376550          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
376551          ,p_calculate_acctd_flag => l_calculate_acctd_flag
376552          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
376553    END IF;
376554 
376555    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
376556        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
376557 
376558 --
376559 AcctLineType_42 (
376560  p_application_id  => p_application_id
376561  ,p_event_id     => l_event_id
376562  ,p_calculate_acctd_flag => l_calculate_acctd_flag
376563  ,p_calculate_g_l_flag => l_calculate_g_l_flag
376564  ,p_actual_flag => l_actual_flag
376565  ,p_balance_type_code => l_balance_type_code
376566  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
376567  
376568  , p_source_11 => l_array_source_11(Idx)
376569  , p_source_78 => l_array_source_78(Idx)
376570  , p_source_84 => l_array_source_84(Idx)
376571  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
376572  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
376573  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
376574  , p_source_91 => l_array_source_91(Idx)
376575  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
376576  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
376577  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
376578  , p_source_95 => l_array_source_95(Idx)
376579  );
376580 If(l_balance_type_code = 'A') THEN
376581   l_actual_gain_loss_ref := l_gain_or_loss_ref;
376582 END IF;
376583 
376584 --
376585 
376586 
376587 --
376588 AcctLineType_54 (
376589  p_application_id  => p_application_id
376590  ,p_event_id     => l_event_id
376591  ,p_calculate_acctd_flag => l_calculate_acctd_flag
376592  ,p_calculate_g_l_flag => l_calculate_g_l_flag
376593  ,p_actual_flag => l_actual_flag
376594  ,p_balance_type_code => l_balance_type_code
376595  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
376596  
376597  , p_source_11 => l_array_source_11(Idx)
376598  , p_source_78 => l_array_source_78(Idx)
376599  , p_source_84 => l_array_source_84(Idx)
376600  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
376601  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
376602  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
376603  , p_source_91 => l_array_source_91(Idx)
376604  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
376605  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
376606  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
376607  , p_source_95 => l_array_source_95(Idx)
376608  );
376609 If(l_balance_type_code = 'A') THEN
376610   l_actual_gain_loss_ref := l_gain_or_loss_ref;
376611 END IF;
376612 
376613 --
376614 
376615 
376616 --
376617 AcctLineType_135 (
376618  p_application_id  => p_application_id
376619  ,p_event_id     => l_event_id
376620  ,p_calculate_acctd_flag => l_calculate_acctd_flag
376621  ,p_calculate_g_l_flag => l_calculate_g_l_flag
376622  ,p_actual_flag => l_actual_flag
376623  ,p_balance_type_code => l_balance_type_code
376624  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
376625  
376626  , p_source_11 => l_array_source_11(Idx)
376627  , p_source_78 => l_array_source_78(Idx)
376628  , p_source_84 => l_array_source_84(Idx)
376629  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
376630  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
376631  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
376632  , p_source_91 => l_array_source_91(Idx)
376633  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
376634  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
376635  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
376636  , p_source_95 => l_array_source_95(Idx)
376637  );
376638 If(l_balance_type_code = 'A') THEN
376639   l_actual_gain_loss_ref := l_gain_or_loss_ref;
376640 END IF;
376641 
376642 --
376643 
376644 
376645 --
376646 AcctLineType_139 (
376647  p_application_id  => p_application_id
376648  ,p_event_id     => l_event_id
376649  ,p_calculate_acctd_flag => l_calculate_acctd_flag
376650  ,p_calculate_g_l_flag => l_calculate_g_l_flag
376651  ,p_actual_flag => l_actual_flag
376652  ,p_balance_type_code => l_balance_type_code
376653  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
376654  
376655  , p_source_11 => l_array_source_11(Idx)
376656  , p_source_78 => l_array_source_78(Idx)
376657  , p_source_84 => l_array_source_84(Idx)
376658  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
376659  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
376660  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
376661  , p_source_91 => l_array_source_91(Idx)
376662  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
376663  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
376664  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
376665  , p_source_95 => l_array_source_95(Idx)
376666  );
376667 If(l_balance_type_code = 'A') THEN
376668   l_actual_gain_loss_ref := l_gain_or_loss_ref;
376669 END IF;
376670 
376671 --
376672 
376673 
376674 --
376675 AcctLineType_289 (
376676  p_application_id  => p_application_id
376677  ,p_event_id     => l_event_id
376678  ,p_calculate_acctd_flag => l_calculate_acctd_flag
376679  ,p_calculate_g_l_flag => l_calculate_g_l_flag
376680  ,p_actual_flag => l_actual_flag
376681  ,p_balance_type_code => l_balance_type_code
376682  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
376683  
376684  , p_source_11 => l_array_source_11(Idx)
376685  , p_source_78 => l_array_source_78(Idx)
376686  , p_source_84 => l_array_source_84(Idx)
376687  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
376688  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
376689  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
376690  , p_source_91 => l_array_source_91(Idx)
376691  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
376692  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
376693  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
376694  , p_source_95 => l_array_source_95(Idx)
376695  );
376696 If(l_balance_type_code = 'A') THEN
376697   l_actual_gain_loss_ref := l_gain_or_loss_ref;
376698 END IF;
376699 
376700 --
376701 
376702 
376703 --
376704 AcctLineType_497 (
376705  p_application_id  => p_application_id
376706  ,p_event_id     => l_event_id
376707  ,p_calculate_acctd_flag => l_calculate_acctd_flag
376708  ,p_calculate_g_l_flag => l_calculate_g_l_flag
376709  ,p_actual_flag => l_actual_flag
376710  ,p_balance_type_code => l_balance_type_code
376711  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
376712  
376713  , p_source_11 => l_array_source_11(Idx)
376714  , p_source_78 => l_array_source_78(Idx)
376715  , p_source_84 => l_array_source_84(Idx)
376716  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
376717  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
376718  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
376719  , p_source_91 => l_array_source_91(Idx)
376720  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
376721  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
376722  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
376723  , p_source_95 => l_array_source_95(Idx)
376724  );
376725 If(l_balance_type_code = 'A') THEN
376726   l_actual_gain_loss_ref := l_gain_or_loss_ref;
376727 END IF;
376728 
376729 --
376730 
376731       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
376732       -- or secondary ledger that has different currency with primary
376733       -- or alc that is calculated by sla
376734       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
376735             (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'))
376736 
376737 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
376738 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
376739           AND (l_actual_flag = 'A')) THEN
376740         XLA_AE_LINES_PKG.CreateGainOrLossLines(
376741           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
376742          ,p_application_id   => p_application_id
376743          ,p_amb_context_code => 'DEFAULT'
376744          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
376745          ,p_event_class_code => C_EVENT_CLASS_CODE
376746          ,p_event_type_code  => C_EVENT_TYPE_CODE
376747          
376748          ,p_gain_ccid        => -1
376749          ,p_loss_ccid        => -1
376750 
376751          ,p_actual_flag      => l_actual_flag
376752          ,p_enc_flag         => null
376753          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
376754          ,p_enc_g_l_ref      => null
376755          );
376756       END IF;
376757    END IF;
376758 END IF;
376759 
376760    ELSE
376761       --
376762       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
376763       --
376764       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376765          trace
376766             (p_msg      => 'Trancaction revesal option is Y'
376767             ,p_level    => C_LEVEL_STATEMENT
376768             ,p_module   => l_log_module);
376769       END IF;
376770    END IF;
376771 
376772 END LOOP;
376773 l_result := XLA_AE_LINES_PKG.InsertLines ;
376774 end loop;
376775 close line_cur;
376776 
376777 
376778 --
376779 -- insert headers into xla_ae_headers_gt table
376780 --
376781 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
376782 
376783 -- insert into errors table here.
376784 
376785 END LOOP;
376786 
376787 --
376788 -- 4865292
376789 --
376790 -- Compare g_hdr_extract_count with event count in
376791 -- CreateHeadersAndLines.
376792 --
376793 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
376794 
376795 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376796    trace (p_msg     => '# rows extracted from header extract objects '
376797                     || ' (running total): '
376798                     || g_hdr_extract_count
376799          ,p_level   => C_LEVEL_STATEMENT
376800          ,p_module  => l_log_module);
376801 END IF;
376802 
376803 CLOSE header_cur;
376804 --
376805 
376806 --
376807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
376808    trace
376809       (p_msg      => 'END of EventClass_589'
376810       ,p_level    => C_LEVEL_PROCEDURE
376811       ,p_module   => l_log_module);
376812 END IF;
376813 --
376814 RETURN l_result;
376815 EXCEPTION
376816 WHEN xla_exceptions_pkg.application_exception THEN
376817    
376818 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
376819 
376820    
376821 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
376822 
376823    RAISE;
376824 
376825 WHEN NO_DATA_FOUND THEN
376826 
376827 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
376828 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
376829 
376830 FOR header_record IN header_cur
376831 LOOP
376832     l_array_header_events(header_record.event_id) := header_record.event_id;
376833 END LOOP;
376834 
376835 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
376836 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
376837 
376838 fnd_file.put_line(fnd_file.LOG, '                    ');
376839 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
376840 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
376841 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
376842 
376843 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
376844 LOOP
376845 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
376846 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
376847         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
376848 	END IF;
376849 END LOOP;
376850 
376851 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
376852 fnd_file.put_line(fnd_file.LOG, '                    ');
376853 
376854 
376855 xla_exceptions_pkg.raise_message
376856       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_589');
376857 
376858 
376859 WHEN OTHERS THEN
376860    xla_exceptions_pkg.raise_message
376861       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_589');
376862 END EventClass_589;
376863 --
376864 
376865 ---------------------------------------
376866 --
376867 -- PRIVATE PROCEDURE
376868 --         insert_sources_590
376869 --
376870 ----------------------------------------
376871 --
376872 PROCEDURE insert_sources_590(
376873                                 p_target_ledger_id       IN NUMBER
376874                               , p_language               IN VARCHAR2
376875                               , p_sla_ledger_id          IN NUMBER
376876                               , p_pad_start_date         IN DATE
376877                               , p_pad_end_date           IN DATE
376878                          )
376879 IS
376880 
376881 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_ALL';
376882 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ';
376883 p_apps_owner                   VARCHAR2(30);
376884 l_log_module                   VARCHAR2(240);
376885 BEGIN
376886 IF g_log_enabled THEN
376887       l_log_module := C_DEFAULT_MODULE||'.insert_sources_590';
376888 END IF;
376889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
376890 
376891       trace
376892          (p_msg      => 'BEGIN of insert_sources_590'
376893          ,p_level    => C_LEVEL_PROCEDURE
376894          ,p_module   => l_log_module);
376895 
376896 END IF;
376897 
376898 -- select APPS owner
376899 SELECT oracle_username
376900   INTO p_apps_owner
376901   FROM fnd_oracle_userid
376902  WHERE read_only_flag = 'U'
376903 ;
376904 
376905 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376906       trace
376907          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
376908                         ' - p_language = '||p_language||
376909                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
376910                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
376911                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
376912                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
376913          ,p_level    => C_LEVEL_STATEMENT
376914          ,p_module   => l_log_module);
376915 END IF;
376916 
376917 
376918 --
376919 INSERT INTO xla_diag_sources --hdr2
376920 (
376921         event_id
376922       , ledger_id
376923       , sla_ledger_id
376924       , description_language
376925       , object_name
376926       , object_type_code
376927       , line_number
376928       , source_application_id
376929       , source_type_code
376930       , source_code
376931       , source_value
376932       , source_meaning
376933       , created_by
376934       , creation_date
376935       , last_update_date
376936       , last_updated_by
376937       , last_update_login
376938       , program_update_date
376939       , program_application_id
376940       , program_id
376941       , request_id
376942 )
376943 SELECT
376944         event_id
376945       , p_target_ledger_id
376946       , p_sla_ledger_id
376947       , p_language
376948       , object_name
376949       , object_type_code
376950       , line_number
376951       , source_application_id
376952       , source_type_code
376953       , source_code
376954       , SUBSTR(source_value ,1,1996)
376955       , SUBSTR(source_meaning ,1,200)
376956       , xla_environment_pkg.g_Usr_Id
376957       , TRUNC(SYSDATE)
376958       , TRUNC(SYSDATE)
376959       , xla_environment_pkg.g_Usr_Id
376960       , xla_environment_pkg.g_Login_Id
376961       , TRUNC(SYSDATE)
376962       , xla_environment_pkg.g_Prog_Appl_Id
376963       , xla_environment_pkg.g_Prog_Id
376964       , xla_environment_pkg.g_Req_Id
376965   FROM (
376966        SELECT xet.event_id                  event_id
376967             , 0                          line_number
376968             , CASE r
376969                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
376970                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
376971                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
376972                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
376973                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
376974                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
376975                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
376976                 
376977                ELSE null
376978               END                           object_name
376979             , CASE r
376980                 WHEN 1 THEN 'HEADER' 
376981                 WHEN 2 THEN 'HEADER' 
376982                 WHEN 3 THEN 'HEADER' 
376983                 WHEN 4 THEN 'HEADER' 
376984                 WHEN 5 THEN 'HEADER' 
376985                 WHEN 6 THEN 'HEADER' 
376986                 WHEN 7 THEN 'HEADER' 
376987                 
376988                 ELSE null
376989               END                           object_type_code
376990             , CASE r
376991                 WHEN 1 THEN '707' 
376992                 WHEN 2 THEN '707' 
376993                 WHEN 3 THEN '707' 
376994                 WHEN 4 THEN '707' 
376995                 WHEN 5 THEN '707' 
376996                 WHEN 6 THEN '707' 
376997                 WHEN 7 THEN '707' 
376998                 
376999                 ELSE null
377000               END                           source_application_id
377001             , 'S'             source_type_code
377002             , CASE r
377003                 WHEN 1 THEN 'TRANSACTION_ID' 
377004                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
377005                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
377006                 WHEN 4 THEN 'TRANSACTION_UOM' 
377007                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
377008                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
377009                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
377010                 
377011                 ELSE null
377012               END                           source_code
377013             , CASE r
377014                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
377015                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
377016                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
377017                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
377018                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
377019                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
377020                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
377021                 
377022                 ELSE null
377023               END                           source_value
377024             , CASE r
377025                 WHEN 6 THEN fvl85.meaning
377026                 WHEN 7 THEN fvl114.meaning
377027                 
377028                 ELSE null
377029               END               source_meaning
377030          FROM xla_events_gt     xet  
377031       , CST_XLA_INV_HEADERS_V  h1
377032       , CST_XLA_INV_REF_V  h3
377033       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
377034       , CST_XLA_INV_TXN_TYPES_REF_V  h5
377035   , fnd_lookup_values    fvl85
377036   , fnd_lookup_values    fvl114
377037              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
377038          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
377039            AND xet.event_class_code = C_EVENT_CLASS_CODE
377040               AND h1.event_id = xet.event_id
377041  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl85.lookup_type(+)         = 
377042 'CST_DISTRIBUTION_TYPE'
377043   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
377044   AND fvl85.view_application_id(+) = 700
377045   AND fvl85.language(+)            = USERENV('LANG')
377046      AND fvl114.lookup_type(+)         = 'YES_NO'
377047   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
377048   AND fvl114.view_application_id(+) = 0
377049   AND fvl114.language(+)            = USERENV('LANG')
377050   
377051 )
377052 ;
377053 --
377054 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
377055 
377056       trace
377057          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
377058          ,p_level    => C_LEVEL_STATEMENT
377059          ,p_module   => l_log_module);
377060 
377061 END IF;
377062 --
377063 
377064 
377065 
377066 --
377067 INSERT INTO xla_diag_sources  --line2
377068 (
377069         event_id
377070       , ledger_id
377071       , sla_ledger_id
377072       , description_language
377073       , object_name
377074       , object_type_code
377075       , line_number
377076       , source_application_id
377077       , source_type_code
377078       , source_code
377079       , source_value
377080       , source_meaning
377081       , created_by
377082       , creation_date
377083       , last_update_date
377084       , last_updated_by
377085       , last_update_login
377086       , program_update_date
377087       , program_application_id
377088       , program_id
377089       , request_id
377090 )
377091 SELECT  event_id
377092       , p_target_ledger_id
377093       , p_sla_ledger_id
377094       , p_language
377095       , object_name
377096       , object_type_code
377097       , line_number
377098       , source_application_id
377099       , source_type_code
377100       , source_code
377101       , SUBSTR(source_value,1,1996)
377102       , SUBSTR(source_meaning ,1,200)
377103       , xla_environment_pkg.g_Usr_Id
377104       , TRUNC(SYSDATE)
377105       , TRUNC(SYSDATE)
377106       , xla_environment_pkg.g_Usr_Id
377107       , xla_environment_pkg.g_Login_Id
377108       , TRUNC(SYSDATE)
377109       , xla_environment_pkg.g_Prog_Appl_Id
377110       , xla_environment_pkg.g_Prog_Id
377111       , xla_environment_pkg.g_Req_Id
377112   FROM (
377113        SELECT xet.event_id                  event_id
377114             , l2.line_number                 line_number
377115             , CASE r
377116                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
377117                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
377118                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
377119                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
377120                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
377121                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
377122                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
377123                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
377124                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
377125                 
377126                ELSE null
377127               END                           object_name
377128             , CASE r
377129                 WHEN 1 THEN 'LINE' 
377130                 WHEN 2 THEN 'LINE' 
377131                 WHEN 3 THEN 'LINE' 
377132                 WHEN 4 THEN 'LINE' 
377133                 WHEN 5 THEN 'LINE' 
377134                 WHEN 6 THEN 'LINE' 
377135                 WHEN 7 THEN 'LINE' 
377136                 WHEN 8 THEN 'LINE' 
377137                 WHEN 9 THEN 'LINE' 
377138                 
377139                 ELSE null
377140               END                           object_type_code
377141             , CASE r
377142                 WHEN 1 THEN '707' 
377143                 WHEN 2 THEN '707' 
377144                 WHEN 3 THEN '707' 
377145                 WHEN 4 THEN '707' 
377146                 WHEN 5 THEN '707' 
377147                 WHEN 6 THEN '707' 
377148                 WHEN 7 THEN '707' 
377149                 WHEN 8 THEN '707' 
377150                 WHEN 9 THEN '707' 
377151                 
377152                 ELSE null
377153               END                           source_application_id
377154             , 'S'             source_type_code
377155             , CASE r
377156                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
377157                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
377158                 WHEN 3 THEN 'CURRENCY_CODE' 
377159                 WHEN 4 THEN 'ENTERED_AMOUNT' 
377160                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
377161                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
377162                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
377163                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
377164                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
377165                 
377166                 ELSE null
377167               END                           source_code
377168             , CASE r
377169                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
377170                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
377171                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
377172                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
377173                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
377174                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
377175                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
377176                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
377177                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
377178                 
377179                 ELSE null
377180               END                           source_value
377181             , null              source_meaning
377182          FROM  xla_events_gt     xet  
377183         , CST_XLA_INV_LINES_V  l2
377184             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
377185         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
377186           AND xet.event_class_code = C_EVENT_CLASS_CODE
377187             AND l2.event_id          = xet.event_id
377188 
377189 )
377190 ;
377191 --
377192 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
377193 
377194       trace
377195          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
377196          ,p_level    => C_LEVEL_STATEMENT
377197          ,p_module   => l_log_module);
377198 
377199 END IF;
377200 
377201 
377202 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
377203       trace
377204          (p_msg      => 'END of insert_sources_590'
377205          ,p_level    => C_LEVEL_PROCEDURE
377206          ,p_module   => l_log_module);
377207 END IF;
377208 EXCEPTION
377209   WHEN xla_exceptions_pkg.application_exception THEN
377210       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
377211             trace
377212                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
377213                ,p_level    => C_LEVEL_EXCEPTION
377214                ,p_module   => l_log_module);
377215       END IF;
377216       RAISE;
377217   WHEN OTHERS THEN
377218       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
377219             trace
377220                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
377221                ,p_level    => C_LEVEL_EXCEPTION
377222                ,p_module   => l_log_module);
377223        END IF;
377224        xla_exceptions_pkg.raise_message
377225            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_590');
377226 END insert_sources_590;
377227 --
377228 
377229 ---------------------------------------
377230 --
377231 -- PRIVATE FUNCTION
377232 --         EventClass_590
377233 --
377234 ----------------------------------------
377235 --
377236 FUNCTION EventClass_590
377237        (p_application_id         IN NUMBER
377238        ,p_base_ledger_id         IN NUMBER
377239        ,p_target_ledger_id       IN NUMBER
377240        ,p_language               IN VARCHAR2
377241        ,p_currency_code          IN VARCHAR2
377242        ,p_sla_ledger_id          IN NUMBER
377243        ,p_pad_start_date         IN DATE
377244        ,p_pad_end_date           IN DATE
377245        ,p_primary_ledger_id      IN NUMBER)
377246 RETURN BOOLEAN IS
377247 --
377248 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_ALL';
377249 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ';
377250 
377251 l_calculate_acctd_flag   VARCHAR2(1) :='N';
377252 l_calculate_g_l_flag     VARCHAR2(1) :='N';
377253 --
377254 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377255 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377256 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
377257 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
377258 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377259 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
377260 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
377261 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377262 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
377263 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
377264 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377265 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377266 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377267 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
377268 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
377269 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
377270 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
377271 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
377272 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
377273 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
377274 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
377275 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
377276 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
377277 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
377278 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
377279 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
377280 
377281 l_event_id                             NUMBER;
377282 l_previous_event_id                    NUMBER;
377283 l_first_event_id                       NUMBER;
377284 l_last_event_id                        NUMBER;
377285 
377286 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
377287 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
377288 --
377289 --
377290 l_result                    BOOLEAN := TRUE;
377291 l_rows                      NUMBER  := 1000;
377292 l_event_type_name           VARCHAR2(80) := 'All';
377293 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment';
377294 l_description               VARCHAR2(4000);
377295 l_transaction_reversal      NUMBER;
377296 l_ae_header_id              NUMBER;
377297 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
377298 l_log_module                VARCHAR2(240);
377299 --
377300 l_acct_reversal_source      VARCHAR2(30);
377301 l_trx_reversal_source       VARCHAR2(30);
377302 
377303 l_continue_with_lines       BOOLEAN := TRUE;
377304 --
377305 l_acc_rev_gl_date_source    DATE;                      -- 4262811
377306 --
377307 type t_array_event_id is table of number index by binary_integer;
377308 
377309 l_rec_array_event                    t_rec_array_event;
377310 l_null_rec_array_event               t_rec_array_event;
377311 l_array_ae_header_id                 xla_number_array_type;
377312 l_actual_flag                        VARCHAR2(1) := NULL;
377313 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
377314 l_balance_type_code                  VARCHAR2(1) :=NULL;
377315 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
377316 
377317 --
377318 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
377319 --
377320 
377321 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
377322 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
377323 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
377324 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
377325 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
377326 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
377327 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
377328 
377329 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
377330 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
377331 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
377332 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
377333 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
377334 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
377335 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
377336 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
377337 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
377338 
377339 l_array_source_1              t_array_source_1;
377340 l_array_source_2              t_array_source_2;
377341 l_array_source_3              t_array_source_3;
377342 l_array_source_4              t_array_source_4;
377343 l_array_source_5              t_array_source_5;
377344 l_array_source_85              t_array_source_85;
377345 l_array_source_85_meaning      t_array_lookup_meaning;
377346 l_array_source_114              t_array_source_114;
377347 l_array_source_114_meaning      t_array_lookup_meaning;
377348 
377349 l_array_source_11      t_array_source_11;
377350 l_array_source_84      t_array_source_84;
377351 l_array_source_88      t_array_source_88;
377352 l_array_source_91      t_array_source_91;
377353 l_array_source_92      t_array_source_92;
377354 l_array_source_93      t_array_source_93;
377355 l_array_source_94      t_array_source_94;
377356 l_array_source_95      t_array_source_95;
377357 l_array_source_97      t_array_source_97;
377358 
377359 --
377360 CURSOR header_cur
377361 IS
377362 SELECT /*+ leading(xet) cardinality(xet,1) */
377363 -- Event Class Code: RETR_PRICE_ADJ
377364     xet.entity_id
377365    ,xet.legal_entity_id
377366    ,xet.entity_code
377367    ,xet.transaction_number
377368    ,xet.event_id
377369    ,xet.event_class_code
377370    ,xet.event_type_code
377371    ,xet.event_number
377372    ,xet.event_date
377373    ,xet.transaction_date
377374    ,xet.reference_num_1
377375    ,xet.reference_num_2
377376    ,xet.reference_num_3
377377    ,xet.reference_num_4
377378    ,xet.reference_char_1
377379    ,xet.reference_char_2
377380    ,xet.reference_char_3
377381    ,xet.reference_char_4
377382    ,xet.reference_date_1
377383    ,xet.reference_date_2
377384    ,xet.reference_date_3
377385    ,xet.reference_date_4
377386    ,xet.event_created_by
377387    ,xet.budgetary_control_flag 
377388   , h1.TRANSACTION_ID    source_1
377389   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
377390   , h3.TRANSACTION_QUANTITY    source_3
377391   , h3.TRANSACTION_UOM    source_4
377392   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
377393   , h1.DISTRIBUTION_TYPE    source_85
377394   , fvl85.meaning   source_85_meaning
377395   , h1.TRANSFER_TO_GL_INDICATOR    source_114
377396   , fvl114.meaning   source_114_meaning
377397   FROM xla_events_gt     xet 
377398   , CST_XLA_INV_HEADERS_V  h1
377399   , CST_XLA_INV_REF_V  h3
377400   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
377401   , CST_XLA_INV_TXN_TYPES_REF_V  h5
377402   , fnd_lookup_values    fvl85
377403   , fnd_lookup_values    fvl114
377404  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
377405    and xet.event_class_code = C_EVENT_CLASS_CODE
377406    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
377407  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl85.lookup_type(+)         = 
377408 'CST_DISTRIBUTION_TYPE'
377409   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
377410   AND fvl85.view_application_id(+) = 700
377411   AND fvl85.language(+)            = USERENV('LANG')
377412      AND fvl114.lookup_type(+)         = 'YES_NO'
377413   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
377414   AND fvl114.view_application_id(+) = 0
377415   AND fvl114.language(+)            = USERENV('LANG')
377416   
377417  ORDER BY event_id
377418 ;
377419 
377420 
377421 --
377422 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
377423 IS
377424 SELECT  /*+ leading(xet) cardinality(xet,1) */
377425 -- Event Class Code: RETR_PRICE_ADJ
377426     xet.entity_id
377427    ,xet.legal_entity_id
377428    ,xet.entity_code
377429    ,xet.transaction_number
377430    ,xet.event_id
377431    ,xet.event_class_code
377432    ,xet.event_type_code
377433    ,xet.event_number
377434    ,xet.event_date
377435    ,xet.transaction_date
377436    ,xet.reference_num_1
377437    ,xet.reference_num_2
377438    ,xet.reference_num_3
377439    ,xet.reference_num_4
377440    ,xet.reference_char_1
377441    ,xet.reference_char_2
377442    ,xet.reference_char_3
377443    ,xet.reference_char_4
377444    ,xet.reference_date_1
377445    ,xet.reference_date_2
377446    ,xet.reference_date_3
377447    ,xet.reference_date_4
377448    ,xet.event_created_by
377449    ,xet.budgetary_control_flag
377450  , l2.LINE_NUMBER  
377451   , l2.CODE_COMBINATION_ID    source_11
377452   , l2.DISTRIBUTION_IDENTIFIER    source_84
377453   , l2.CURRENCY_CODE    source_88
377454   , l2.ENTERED_AMOUNT    source_91
377455   , l2.CURRENCY_CONVERSION_DATE    source_92
377456   , l2.CURRENCY_CONVERSION_RATE    source_93
377457   , l2.CURRENCY_CONVERSION_TYPE    source_94
377458   , l2.ACCOUNTED_AMOUNT    source_95
377459   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
377460   FROM xla_events_gt     xet 
377461   , CST_XLA_INV_LINES_V  l2
377462  WHERE xet.event_id between x_first_event_id and x_last_event_id
377463    and xet.event_date between p_pad_start_date and p_pad_end_date
377464    and xet.event_class_code = C_EVENT_CLASS_CODE
377465    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
377466 ;
377467 
377468 --
377469 BEGIN
377470 IF g_log_enabled THEN
377471    l_log_module := C_DEFAULT_MODULE||'.EventClass_590';
377472 END IF;
377473 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
377474    trace
377475       (p_msg      => 'BEGIN of EventClass_590'
377476       ,p_level    => C_LEVEL_PROCEDURE
377477       ,p_module   => l_log_module);
377478 END IF;
377479 
377480 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
377481    trace
377482       (p_msg      => 'p_application_id = '||p_application_id||
377483                      ' - p_base_ledger_id = '||p_base_ledger_id||
377484                      ' - p_target_ledger_id  = '||p_target_ledger_id||
377485                      ' - p_language = '||p_language||
377486                      ' - p_currency_code = '||p_currency_code||
377487                      ' - p_sla_ledger_id = '||p_sla_ledger_id
377488       ,p_level    => C_LEVEL_STATEMENT
377489       ,p_module   => l_log_module);
377490 END IF;
377491 --
377492 -- initialze arrays
377493 --
377494 g_array_event.DELETE;
377495 l_rec_array_event := l_null_rec_array_event;
377496 --
377497 --------------------------------------
377498 -- 4262811 Initialze MPA Line Number
377499 --------------------------------------
377500 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
377501 
377502 --
377503 
377504 --
377505 OPEN header_cur;
377506 --
377507 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
377508    trace
377509    (p_msg      => 'SQL - FETCH header_cur'
377510    ,p_level    => C_LEVEL_STATEMENT
377511    ,p_module   => l_log_module);
377512 END IF;
377513 --
377514 LOOP
377515 FETCH header_cur BULK COLLECT INTO
377516         l_array_entity_id
377517       , l_array_legal_entity_id
377518       , l_array_entity_code
377519       , l_array_transaction_num
377520       , l_array_event_id
377521       , l_array_class_code
377522       , l_array_event_type
377523       , l_array_event_number
377524       , l_array_event_date
377525       , l_array_transaction_date
377526       , l_array_reference_num_1
377527       , l_array_reference_num_2
377528       , l_array_reference_num_3
377529       , l_array_reference_num_4
377530       , l_array_reference_char_1
377531       , l_array_reference_char_2
377532       , l_array_reference_char_3
377533       , l_array_reference_char_4
377534       , l_array_reference_date_1
377535       , l_array_reference_date_2
377536       , l_array_reference_date_3
377537       , l_array_reference_date_4
377538       , l_array_event_created_by
377539       , l_array_budgetary_control_flag 
377540       , l_array_source_1
377541       , l_array_source_2
377542       , l_array_source_3
377543       , l_array_source_4
377544       , l_array_source_5
377545       , l_array_source_85
377546       , l_array_source_85_meaning
377547       , l_array_source_114
377548       , l_array_source_114_meaning
377549       LIMIT l_rows;
377550 --
377551 IF (C_LEVEL_EVENT >= g_log_level) THEN
377552    trace
377553    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
377554    ,p_level    => C_LEVEL_EVENT
377555    ,p_module   => l_log_module);
377556 END IF;
377557 --
377558 EXIT WHEN l_array_entity_id.COUNT = 0;
377559 
377560 -- initialize arrays
377561 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
377562 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
377563 
377564 --
377565 -- Bug 4458708
377566 --
377567 XLA_AE_LINES_PKG.g_LineNumber := 0;
377568 
377569 
377570 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
377571 g_last_hdr_idx := l_array_event_id.LAST;
377572 --
377573 -- loop for the headers. Each iteration is for each header extract row
377574 -- fetched in header cursor
377575 --
377576 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
377577 
377578 --
377579 -- set event info as cache for other routines to refer event attributes
377580 --
377581 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
377582    (p_application_id           => p_application_id
377583    ,p_primary_ledger_id        => p_primary_ledger_id
377584    ,p_base_ledger_id           => p_base_ledger_id
377585    ,p_target_ledger_id         => p_target_ledger_id
377586    ,p_entity_id                => l_array_entity_id(hdr_idx)
377587    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
377588    ,p_entity_code              => l_array_entity_code(hdr_idx)
377589    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
377590    ,p_event_id                 => l_array_event_id(hdr_idx)
377591    ,p_event_class_code         => l_array_class_code(hdr_idx)
377592    ,p_event_type_code          => l_array_event_type(hdr_idx)
377593    ,p_event_number             => l_array_event_number(hdr_idx)
377594    ,p_event_date               => l_array_event_date(hdr_idx)
377595    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
377596    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
377597    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
377598    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
377599    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
377600    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
377601    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
377602    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
377603    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
377604    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
377605    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
377606    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
377607    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
377608    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
377609    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
377610 
377611 --
377612 -- set the status of entry to C_VALID (0)
377613 --
377614 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
377615 
377616 --
377617 -- initialize a row for ae header
377618 --
377619 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
377620 
377621 l_event_id := l_array_event_id(hdr_idx);
377622 
377623 --
377624 -- storing the hdr_idx for event. May be used by line cursor.
377625 --
377626 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
377627 
377628 --
377629 -- store sources from header extract. This can be improved to
377630 -- store only those sources from header extract that may be used in lines
377631 --
377632 
377633 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
377634 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
377635 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
377636 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
377637 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
377638 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
377639 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
377640 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
377641 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
377642 
377643 --
377644 -- initilaize the status of ae headers for diffrent balance types
377645 -- the status is initialised to C_NOT_CREATED (2)
377646 --
377647 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
377648 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
377649 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
377650 
377651 --
377652 -- call api to validate and store accounting attributes for header
377653 --
377654 
377655 ------------------------------------------------------------
377656 -- Accrual Reversal : to get date for Standard Source (NONE)
377657 ------------------------------------------------------------
377658 l_acc_rev_gl_date_source := NULL;
377659 
377660      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
377661       l_rec_acct_attrs.array_date_value(1) := 
377662 xla_ae_sources_pkg.GetSystemSourceDate(
377663    p_source_code           => 'XLA_REFERENCE_DATE_1'
377664  , p_source_type_code      => 'Y'
377665  , p_source_application_id =>  602
377666 );
377667      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
377668       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
377669 
377670 
377671 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
377672 
377673 XLA_AE_HEADER_PKG.SetJeCategoryName;
377674 
377675 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
377676 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
377677 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
377678 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
377679 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
377680 
377681 
377682 --
377683 xla_ae_header_pkg.SetHdrDescription(
377684    p_description => Description_1 (
377685    p_application_id => p_application_id 
377686  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
377687  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
377688  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
377689  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
377690  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
377691    )
377692 );
377693 --
377694 
377695 -- No header level analytical criteria
377696 
377697 --
377698 --accounting attribute enhancement, bug 3612931
377699 --
377700 l_trx_reversal_source := SUBSTR(NULL, 1,30);
377701 
377702 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
377703    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
377704 
377705    xla_accounting_err_pkg.build_message
377706       (p_appli_s_name            => 'XLA'
377707       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
377708       ,p_token_1                 => 'ACCT_ATTR_NAME'
377709       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
377710       ,p_token_2                 => 'PRODUCT_NAME'
377711       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
377712       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
377713       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
377714       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
377715 
377716 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
377717    --
377718    -- following sets the accounting attributes needed to reverse
377719    -- accounting for a distributeion
377720    --
377721    xla_ae_lines_pkg.SetTrxReversalAttrs
377722       (p_event_id              => l_event_id
377723       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
377724       ,p_trx_reversal_source   => l_trx_reversal_source);
377725 
377726 END IF;
377727 
377728 
377729 ----------------------------------------------------------------
377730 -- 4262811 -  update the header statuses to invalid in need be
377731 ----------------------------------------------------------------
377732 --
377733 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
377734 
377735 
377736   -----------------------------------------------
377737   -- No accrual reversal for the event class/type
377738   -----------------------------------------------
377739 ----------------------------------------------------------------
377740 
377741 --
377742 -- this ends the header loop iteration for one bulk fetch
377743 --
377744 END LOOP;
377745 
377746 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
377747 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
377748 
377749 --
377750 -- insert dummy rows into lines gt table that were created due to
377751 -- transaction reversals
377752 --
377753 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
377754    l_result := XLA_AE_LINES_PKG.InsertLines;
377755 END IF;
377756 
377757 --
377758 -- reset the temp_line_num for each set of events fetched from header
377759 -- cursor rather than doing it for each new event in line cursor
377760 -- Bug 3939231
377761 --
377762 xla_ae_lines_pkg.g_temp_line_num := 0;
377763 
377764 
377765 
377766 --
377767 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
377768 --
377769 --
377770 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
377771 
377772       trace
377773          (p_msg      => 'SQL - FETCH line_cur'
377774          ,p_level    => C_LEVEL_STATEMENT
377775          ,p_module   => l_log_module);
377776 
377777 END IF;
377778 --
377779 --
377780 LOOP
377781   --
377782   FETCH line_cur BULK COLLECT INTO
377783         l_array_entity_id
377784       , l_array_legal_entity_id
377785       , l_array_entity_code
377786       , l_array_transaction_num
377787       , l_array_event_id
377788       , l_array_class_code
377789       , l_array_event_type
377790       , l_array_event_number
377791       , l_array_event_date
377792       , l_array_transaction_date
377793       , l_array_reference_num_1
377794       , l_array_reference_num_2
377795       , l_array_reference_num_3
377796       , l_array_reference_num_4
377797       , l_array_reference_char_1
377798       , l_array_reference_char_2
377799       , l_array_reference_char_3
377800       , l_array_reference_char_4
377801       , l_array_reference_date_1
377802       , l_array_reference_date_2
377803       , l_array_reference_date_3
377804       , l_array_reference_date_4
377805       , l_array_event_created_by
377806       , l_array_budgetary_control_flag
377807       , l_array_extract_line_num 
377808       , l_array_source_11
377809       , l_array_source_84
377810       , l_array_source_88
377811       , l_array_source_91
377812       , l_array_source_92
377813       , l_array_source_93
377814       , l_array_source_94
377815       , l_array_source_95
377816       , l_array_source_97
377817       LIMIT l_rows;
377818 
377819   --
377820   IF (C_LEVEL_EVENT >= g_log_level) THEN
377821             trace
377822                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
377823                ,p_level    => C_LEVEL_EVENT
377824                ,p_module   => l_log_module);
377825   END IF;
377826   --
377827   EXIT WHEN l_array_entity_id.count = 0;
377828 
377829   XLA_AE_LINES_PKG.g_rec_lines := null;
377830 
377831 --
377832 -- Bug 4458708
377833 --
377834 XLA_AE_LINES_PKG.g_LineNumber := 0;
377835 --
377836 --
377837 
377838 FOR Idx IN 1..l_array_event_id.count LOOP
377839    --
377840    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
377841    --
377842    l_event_id := l_array_event_id(idx);  -- 5648433
377843 
377844    --
377845    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
377846    --
377847 
377848    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
377849              (g_array_event(l_event_id).array_value_num('header_index'))
377850          ,'N'
377851          ) <> 'Y'
377852    THEN
377853       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
377854          trace
377855             (p_msg      => 'Trancaction revesal option is not Y '
377856             ,p_level    => C_LEVEL_STATEMENT
377857             ,p_module   => l_log_module);
377858       END IF;
377859 
377860 --
377861 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
377862 --
377863 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
377864 --
377865 -- set event info as cache for other routines to refer event attributes
377866 --
377867 
377868 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
377869    l_previous_event_id := l_event_id;
377870 
377871    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
377872       (p_application_id           => p_application_id
377873       ,p_primary_ledger_id        => p_primary_ledger_id
377874       ,p_base_ledger_id           => p_base_ledger_id
377875       ,p_target_ledger_id         => p_target_ledger_id
377876       ,p_entity_id                => l_array_entity_id(Idx)
377877       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
377878       ,p_entity_code              => l_array_entity_code(Idx)
377879       ,p_transaction_num          => l_array_transaction_num(Idx)
377880       ,p_event_id                 => l_array_event_id(Idx)
377881       ,p_event_class_code         => l_array_class_code(Idx)
377882       ,p_event_type_code          => l_array_event_type(Idx)
377883       ,p_event_number             => l_array_event_number(Idx)
377884       ,p_event_date               => l_array_event_date(Idx)
377885       ,p_transaction_date         => l_array_transaction_date(Idx)
377886       ,p_reference_num_1          => l_array_reference_num_1(Idx)
377887       ,p_reference_num_2          => l_array_reference_num_2(Idx)
377888       ,p_reference_num_3          => l_array_reference_num_3(Idx)
377889       ,p_reference_num_4          => l_array_reference_num_4(Idx)
377890       ,p_reference_char_1         => l_array_reference_char_1(Idx)
377891       ,p_reference_char_2         => l_array_reference_char_2(Idx)
377892       ,p_reference_char_3         => l_array_reference_char_3(Idx)
377893       ,p_reference_char_4         => l_array_reference_char_4(Idx)
377894       ,p_reference_date_1         => l_array_reference_date_1(Idx)
377895       ,p_reference_date_2         => l_array_reference_date_2(Idx)
377896       ,p_reference_date_3         => l_array_reference_date_3(Idx)
377897       ,p_reference_date_4         => l_array_reference_date_4(Idx)
377898       ,p_event_created_by         => l_array_event_created_by(Idx)
377899       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
377900        --
377901 END IF;
377902 
377903 
377904 
377905 --
377906 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
377907 
377908 l_acct_reversal_source := SUBSTR(NULL, 1,30);
377909 
377910 IF l_continue_with_lines THEN
377911    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
377912       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
377913 
377914       xla_accounting_err_pkg.build_message
377915          (p_appli_s_name            => 'XLA'
377916          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
377917          ,p_token_1                 => 'LINE_NUMBER'
377918          ,p_value_1                 => l_array_extract_line_num(Idx)
377919          ,p_token_2                 => 'PRODUCT_NAME'
377920          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
377921          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
377922          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
377923          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
377924 
377925    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
377926       --
377927       -- following sets the accounting attributes needed to reverse
377928       -- accounting for a distributeion
377929       --
377930 
377931       --
377932       -- 5217187
377933       --
377934       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
377935       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
377936                                        g_array_event(l_event_id).array_value_num('header_index'));
377937       --
377938       --
377939 
377940       -- No reversal code generated
377941 
377942       xla_ae_lines_pkg.SetAcctReversalAttrs
377943          (p_event_id             => l_event_id
377944          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
377945          ,p_calculate_acctd_flag => l_calculate_acctd_flag
377946          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
377947    END IF;
377948 
377949    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
377950        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
377951 
377952 --
377953 AcctLineType_40 (
377954  p_application_id  => p_application_id
377955  ,p_event_id     => l_event_id
377956  ,p_calculate_acctd_flag => l_calculate_acctd_flag
377957  ,p_calculate_g_l_flag => l_calculate_g_l_flag
377958  ,p_actual_flag => l_actual_flag
377959  ,p_balance_type_code => l_balance_type_code
377960  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
377961  
377962  , p_source_11 => l_array_source_11(Idx)
377963  , p_source_84 => l_array_source_84(Idx)
377964  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
377965  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
377966  , p_source_88 => l_array_source_88(Idx)
377967  , p_source_91 => l_array_source_91(Idx)
377968  , p_source_92 => l_array_source_92(Idx)
377969  , p_source_93 => l_array_source_93(Idx)
377970  , p_source_94 => l_array_source_94(Idx)
377971  , p_source_95 => l_array_source_95(Idx)
377972  , p_source_97 => l_array_source_97(Idx)
377973  );
377974 If(l_balance_type_code = 'A') THEN
377975   l_actual_gain_loss_ref := l_gain_or_loss_ref;
377976 END IF;
377977 
377978 --
377979 
377980 
377981 --
377982 AcctLineType_518 (
377983  p_application_id  => p_application_id
377984  ,p_event_id     => l_event_id
377985  ,p_calculate_acctd_flag => l_calculate_acctd_flag
377986  ,p_calculate_g_l_flag => l_calculate_g_l_flag
377987  ,p_actual_flag => l_actual_flag
377988  ,p_balance_type_code => l_balance_type_code
377989  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
377990  
377991  , p_source_11 => l_array_source_11(Idx)
377992  , p_source_84 => l_array_source_84(Idx)
377993  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
377994  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
377995  , p_source_88 => l_array_source_88(Idx)
377996  , p_source_91 => l_array_source_91(Idx)
377997  , p_source_92 => l_array_source_92(Idx)
377998  , p_source_93 => l_array_source_93(Idx)
377999  , p_source_94 => l_array_source_94(Idx)
378000  , p_source_95 => l_array_source_95(Idx)
378001  , p_source_97 => l_array_source_97(Idx)
378002  );
378003 If(l_balance_type_code = 'A') THEN
378004   l_actual_gain_loss_ref := l_gain_or_loss_ref;
378005 END IF;
378006 
378007 --
378008 
378009       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
378010       -- or secondary ledger that has different currency with primary
378011       -- or alc that is calculated by sla
378012       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
378013             (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'))
378014 
378015 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
378016 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
378017           AND (l_actual_flag = 'A')) THEN
378018         XLA_AE_LINES_PKG.CreateGainOrLossLines(
378019           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
378020          ,p_application_id   => p_application_id
378021          ,p_amb_context_code => 'DEFAULT'
378022          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
378023          ,p_event_class_code => C_EVENT_CLASS_CODE
378024          ,p_event_type_code  => C_EVENT_TYPE_CODE
378025          
378026          ,p_gain_ccid        => -1
378027          ,p_loss_ccid        => -1
378028 
378029          ,p_actual_flag      => l_actual_flag
378030          ,p_enc_flag         => null
378031          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
378032          ,p_enc_g_l_ref      => null
378033          );
378034       END IF;
378035    END IF;
378036 END IF;
378037 
378038    ELSE
378039       --
378040       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
378041       --
378042       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378043          trace
378044             (p_msg      => 'Trancaction revesal option is Y'
378045             ,p_level    => C_LEVEL_STATEMENT
378046             ,p_module   => l_log_module);
378047       END IF;
378048    END IF;
378049 
378050 END LOOP;
378051 l_result := XLA_AE_LINES_PKG.InsertLines ;
378052 end loop;
378053 close line_cur;
378054 
378055 
378056 --
378057 -- insert headers into xla_ae_headers_gt table
378058 --
378059 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
378060 
378061 -- insert into errors table here.
378062 
378063 END LOOP;
378064 
378065 --
378066 -- 4865292
378067 --
378068 -- Compare g_hdr_extract_count with event count in
378069 -- CreateHeadersAndLines.
378070 --
378071 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
378072 
378073 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378074    trace (p_msg     => '# rows extracted from header extract objects '
378075                     || ' (running total): '
378076                     || g_hdr_extract_count
378077          ,p_level   => C_LEVEL_STATEMENT
378078          ,p_module  => l_log_module);
378079 END IF;
378080 
378081 CLOSE header_cur;
378082 --
378083 
378084 --
378085 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
378086    trace
378087       (p_msg      => 'END of EventClass_590'
378088       ,p_level    => C_LEVEL_PROCEDURE
378089       ,p_module   => l_log_module);
378090 END IF;
378091 --
378092 RETURN l_result;
378093 EXCEPTION
378094 WHEN xla_exceptions_pkg.application_exception THEN
378095    
378096 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
378097 
378098    
378099 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
378100 
378101    RAISE;
378102 
378103 WHEN NO_DATA_FOUND THEN
378104 
378105 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
378106 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
378107 
378108 FOR header_record IN header_cur
378109 LOOP
378110     l_array_header_events(header_record.event_id) := header_record.event_id;
378111 END LOOP;
378112 
378113 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
378114 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
378115 
378116 fnd_file.put_line(fnd_file.LOG, '                    ');
378117 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
378118 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
378119 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
378120 
378121 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
378122 LOOP
378123 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
378124 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
378125         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
378126 	END IF;
378127 END LOOP;
378128 
378129 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
378130 fnd_file.put_line(fnd_file.LOG, '                    ');
378131 
378132 
378133 xla_exceptions_pkg.raise_message
378134       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_590');
378135 
378136 
378137 WHEN OTHERS THEN
378138    xla_exceptions_pkg.raise_message
378139       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_590');
378140 END EventClass_590;
378141 --
378142 
378143 ---------------------------------------
378144 --
378145 -- PRIVATE PROCEDURE
378146 --         insert_sources_591
378147 --
378148 ----------------------------------------
378149 --
378150 PROCEDURE insert_sources_591(
378151                                 p_target_ledger_id       IN NUMBER
378152                               , p_language               IN VARCHAR2
378153                               , p_sla_ledger_id          IN NUMBER
378154                               , p_pad_start_date         IN DATE
378155                               , p_pad_end_date           IN DATE
378156                          )
378157 IS
378158 
378159 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_DEL_ALL';
378160 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
378161 p_apps_owner                   VARCHAR2(30);
378162 l_log_module                   VARCHAR2(240);
378163 BEGIN
378164 IF g_log_enabled THEN
378165       l_log_module := C_DEFAULT_MODULE||'.insert_sources_591';
378166 END IF;
378167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
378168 
378169       trace
378170          (p_msg      => 'BEGIN of insert_sources_591'
378171          ,p_level    => C_LEVEL_PROCEDURE
378172          ,p_module   => l_log_module);
378173 
378174 END IF;
378175 
378176 -- select APPS owner
378177 SELECT oracle_username
378178   INTO p_apps_owner
378179   FROM fnd_oracle_userid
378180  WHERE read_only_flag = 'U'
378181 ;
378182 
378183 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378184       trace
378185          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
378186                         ' - p_language = '||p_language||
378187                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
378188                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
378189                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
378190                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
378191          ,p_level    => C_LEVEL_STATEMENT
378192          ,p_module   => l_log_module);
378193 END IF;
378194 
378195 
378196 --
378197 INSERT INTO xla_diag_sources --hdr2
378198 (
378199         event_id
378200       , ledger_id
378201       , sla_ledger_id
378202       , description_language
378203       , object_name
378204       , object_type_code
378205       , line_number
378206       , source_application_id
378207       , source_type_code
378208       , source_code
378209       , source_value
378210       , source_meaning
378211       , created_by
378212       , creation_date
378213       , last_update_date
378214       , last_updated_by
378215       , last_update_login
378216       , program_update_date
378217       , program_application_id
378218       , program_id
378219       , request_id
378220 )
378221 SELECT
378222         event_id
378223       , p_target_ledger_id
378224       , p_sla_ledger_id
378225       , p_language
378226       , object_name
378227       , object_type_code
378228       , line_number
378229       , source_application_id
378230       , source_type_code
378231       , source_code
378232       , SUBSTR(source_value ,1,1996)
378233       , SUBSTR(source_meaning ,1,200)
378234       , xla_environment_pkg.g_Usr_Id
378235       , TRUNC(SYSDATE)
378236       , TRUNC(SYSDATE)
378237       , xla_environment_pkg.g_Usr_Id
378238       , xla_environment_pkg.g_Login_Id
378239       , TRUNC(SYSDATE)
378240       , xla_environment_pkg.g_Prog_Appl_Id
378241       , xla_environment_pkg.g_Prog_Id
378242       , xla_environment_pkg.g_Req_Id
378243   FROM (
378244        SELECT xet.event_id                  event_id
378245             , 0                          line_number
378246             , CASE r
378247                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
378248                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
378249                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
378250                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
378251                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
378252                 
378253                ELSE null
378254               END                           object_name
378255             , CASE r
378256                 WHEN 1 THEN 'HEADER' 
378257                 WHEN 2 THEN 'HEADER' 
378258                 WHEN 3 THEN 'HEADER' 
378259                 WHEN 4 THEN 'HEADER' 
378260                 WHEN 5 THEN 'HEADER' 
378261                 
378262                 ELSE null
378263               END                           object_type_code
378264             , CASE r
378265                 WHEN 1 THEN '707' 
378266                 WHEN 2 THEN '707' 
378267                 WHEN 3 THEN '707' 
378268                 WHEN 4 THEN '707' 
378269                 WHEN 5 THEN '707' 
378270                 
378271                 ELSE null
378272               END                           source_application_id
378273             , 'S'             source_type_code
378274             , CASE r
378275                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
378276                 WHEN 2 THEN 'CURRENCY_CODE' 
378277                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
378278                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
378279                 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR' 
378280                 
378281                 ELSE null
378282               END                           source_code
378283             , CASE r
378284                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
378285                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
378286                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
378287                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
378288                 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
378289                 
378290                 ELSE null
378291               END                           source_value
378292             , CASE r
378293                 WHEN 1 THEN fvl85.meaning
378294                 WHEN 5 THEN fvl114.meaning
378295                 
378296                 ELSE null
378297               END               source_meaning
378298          FROM xla_events_gt     xet  
378299       , CST_XLA_RCV_HEADERS_V  h1
378300   , fnd_lookup_values    fvl85
378301   , fnd_lookup_values    fvl114
378302              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
378303          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
378304            AND xet.event_class_code = C_EVENT_CLASS_CODE
378305               AND h1.event_id = xet.event_id
378306    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
378307   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
378308   AND fvl85.view_application_id(+) = 700
378309   AND fvl85.language(+)            = USERENV('LANG')
378310      AND fvl114.lookup_type(+)         = 'YES_NO'
378311   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
378312   AND fvl114.view_application_id(+) = 0
378313   AND fvl114.language(+)            = USERENV('LANG')
378314   
378315 )
378316 ;
378317 --
378318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378319 
378320       trace
378321          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
378322          ,p_level    => C_LEVEL_STATEMENT
378323          ,p_module   => l_log_module);
378324 
378325 END IF;
378326 --
378327 
378328 
378329 
378330 --
378331 INSERT INTO xla_diag_sources  --line2
378332 (
378333         event_id
378334       , ledger_id
378335       , sla_ledger_id
378336       , description_language
378337       , object_name
378338       , object_type_code
378339       , line_number
378340       , source_application_id
378341       , source_type_code
378342       , source_code
378343       , source_value
378344       , source_meaning
378345       , created_by
378346       , creation_date
378347       , last_update_date
378348       , last_updated_by
378349       , last_update_login
378350       , program_update_date
378351       , program_application_id
378352       , program_id
378353       , request_id
378354 )
378355 SELECT  event_id
378356       , p_target_ledger_id
378357       , p_sla_ledger_id
378358       , p_language
378359       , object_name
378360       , object_type_code
378361       , line_number
378362       , source_application_id
378363       , source_type_code
378364       , source_code
378365       , SUBSTR(source_value,1,1996)
378366       , SUBSTR(source_meaning ,1,200)
378367       , xla_environment_pkg.g_Usr_Id
378368       , TRUNC(SYSDATE)
378369       , TRUNC(SYSDATE)
378370       , xla_environment_pkg.g_Usr_Id
378371       , xla_environment_pkg.g_Login_Id
378372       , TRUNC(SYSDATE)
378373       , xla_environment_pkg.g_Prog_Appl_Id
378374       , xla_environment_pkg.g_Prog_Id
378375       , xla_environment_pkg.g_Req_Id
378376   FROM (
378377        SELECT xet.event_id                  event_id
378378             , l2.line_number                 line_number
378379             , CASE r
378380                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
378381                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
378382                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
378383                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
378384                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
378385                 
378386                ELSE null
378387               END                           object_name
378388             , CASE r
378389                 WHEN 1 THEN 'LINE' 
378390                 WHEN 2 THEN 'LINE' 
378391                 WHEN 3 THEN 'LINE' 
378392                 WHEN 4 THEN 'LINE' 
378393                 WHEN 5 THEN 'LINE' 
378394                 
378395                 ELSE null
378396               END                           object_type_code
378397             , CASE r
378398                 WHEN 1 THEN '707' 
378399                 WHEN 2 THEN '707' 
378400                 WHEN 3 THEN '707' 
378401                 WHEN 4 THEN '707' 
378402                 WHEN 5 THEN '707' 
378403                 
378404                 ELSE null
378405               END                           source_application_id
378406             , 'S'             source_type_code
378407             , CASE r
378408                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
378409                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
378410                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
378411                 WHEN 4 THEN 'ENTERED_AMOUNT' 
378412                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
378413                 
378414                 ELSE null
378415               END                           source_code
378416             , CASE r
378417                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
378418                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
378419                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
378420                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
378421                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
378422                 
378423                 ELSE null
378424               END                           source_value
378425             , null              source_meaning
378426          FROM  xla_events_gt     xet  
378427         , CST_XLA_RCV_LINES_V  l2
378428             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
378429         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
378430           AND xet.event_class_code = C_EVENT_CLASS_CODE
378431             AND l2.event_id          = xet.event_id
378432 
378433 )
378434 ;
378435 --
378436 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378437 
378438       trace
378439          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
378440          ,p_level    => C_LEVEL_STATEMENT
378441          ,p_module   => l_log_module);
378442 
378443 END IF;
378444 
378445 
378446 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
378447       trace
378448          (p_msg      => 'END of insert_sources_591'
378449          ,p_level    => C_LEVEL_PROCEDURE
378450          ,p_module   => l_log_module);
378451 END IF;
378452 EXCEPTION
378453   WHEN xla_exceptions_pkg.application_exception THEN
378454       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
378455             trace
378456                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
378457                ,p_level    => C_LEVEL_EXCEPTION
378458                ,p_module   => l_log_module);
378459       END IF;
378460       RAISE;
378461   WHEN OTHERS THEN
378462       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
378463             trace
378464                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
378465                ,p_level    => C_LEVEL_EXCEPTION
378466                ,p_module   => l_log_module);
378467        END IF;
378468        xla_exceptions_pkg.raise_message
378469            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_591');
378470 END insert_sources_591;
378471 --
378472 
378473 ---------------------------------------
378474 --
378475 -- PRIVATE FUNCTION
378476 --         EventClass_591
378477 --
378478 ----------------------------------------
378479 --
378480 FUNCTION EventClass_591
378481        (p_application_id         IN NUMBER
378482        ,p_base_ledger_id         IN NUMBER
378483        ,p_target_ledger_id       IN NUMBER
378484        ,p_language               IN VARCHAR2
378485        ,p_currency_code          IN VARCHAR2
378486        ,p_sla_ledger_id          IN NUMBER
378487        ,p_pad_start_date         IN DATE
378488        ,p_pad_end_date           IN DATE
378489        ,p_primary_ledger_id      IN NUMBER)
378490 RETURN BOOLEAN IS
378491 --
378492 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_DEL_ALL';
378493 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
378494 
378495 l_calculate_acctd_flag   VARCHAR2(1) :='N';
378496 l_calculate_g_l_flag     VARCHAR2(1) :='N';
378497 --
378498 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378499 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378500 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
378501 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
378502 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378503 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
378504 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
378505 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378506 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
378507 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
378508 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378509 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378510 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378511 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
378512 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
378513 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
378514 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
378515 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
378516 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
378517 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
378518 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
378519 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
378520 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
378521 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
378522 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
378523 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
378524 
378525 l_event_id                             NUMBER;
378526 l_previous_event_id                    NUMBER;
378527 l_first_event_id                       NUMBER;
378528 l_last_event_id                        NUMBER;
378529 
378530 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
378531 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
378532 --
378533 --
378534 l_result                    BOOLEAN := TRUE;
378535 l_rows                      NUMBER  := 1000;
378536 l_event_type_name           VARCHAR2(80) := 'All';
378537 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment to Delivery';
378538 l_description               VARCHAR2(4000);
378539 l_transaction_reversal      NUMBER;
378540 l_ae_header_id              NUMBER;
378541 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
378542 l_log_module                VARCHAR2(240);
378543 --
378544 l_acct_reversal_source      VARCHAR2(30);
378545 l_trx_reversal_source       VARCHAR2(30);
378546 
378547 l_continue_with_lines       BOOLEAN := TRUE;
378548 --
378549 l_acc_rev_gl_date_source    DATE;                      -- 4262811
378550 --
378551 type t_array_event_id is table of number index by binary_integer;
378552 
378553 l_rec_array_event                    t_rec_array_event;
378554 l_null_rec_array_event               t_rec_array_event;
378555 l_array_ae_header_id                 xla_number_array_type;
378556 l_actual_flag                        VARCHAR2(1) := NULL;
378557 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
378558 l_balance_type_code                  VARCHAR2(1) :=NULL;
378559 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
378560 
378561 --
378562 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
378563 --
378564 
378565 TYPE t_array_source_85 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
378566 TYPE t_array_source_88 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
378567 TYPE t_array_source_92 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
378568 TYPE t_array_source_93 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
378569 TYPE t_array_source_114 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
378570 
378571 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
378572 TYPE t_array_source_78 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
378573 TYPE t_array_source_84 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
378574 TYPE t_array_source_91 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
378575 TYPE t_array_source_95 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
378576 
378577 l_array_source_85              t_array_source_85;
378578 l_array_source_85_meaning      t_array_lookup_meaning;
378579 l_array_source_88              t_array_source_88;
378580 l_array_source_92              t_array_source_92;
378581 l_array_source_93              t_array_source_93;
378582 l_array_source_114              t_array_source_114;
378583 l_array_source_114_meaning      t_array_lookup_meaning;
378584 
378585 l_array_source_11      t_array_source_11;
378586 l_array_source_78      t_array_source_78;
378587 l_array_source_84      t_array_source_84;
378588 l_array_source_91      t_array_source_91;
378589 l_array_source_95      t_array_source_95;
378590 
378591 --
378592 CURSOR header_cur
378593 IS
378594 SELECT /*+ leading(xet) cardinality(xet,1) */
378595 -- Event Class Code: RETR_PRICE_ADJ_DEL
378596     xet.entity_id
378597    ,xet.legal_entity_id
378598    ,xet.entity_code
378599    ,xet.transaction_number
378600    ,xet.event_id
378601    ,xet.event_class_code
378602    ,xet.event_type_code
378603    ,xet.event_number
378604    ,xet.event_date
378605    ,xet.transaction_date
378606    ,xet.reference_num_1
378607    ,xet.reference_num_2
378608    ,xet.reference_num_3
378609    ,xet.reference_num_4
378610    ,xet.reference_char_1
378611    ,xet.reference_char_2
378612    ,xet.reference_char_3
378613    ,xet.reference_char_4
378614    ,xet.reference_date_1
378615    ,xet.reference_date_2
378616    ,xet.reference_date_3
378617    ,xet.reference_date_4
378618    ,xet.event_created_by
378619    ,xet.budgetary_control_flag 
378620   , h1.DISTRIBUTION_TYPE    source_85
378621   , fvl85.meaning   source_85_meaning
378622   , h1.CURRENCY_CODE    source_88
378623   , h1.CURRENCY_CONVERSION_DATE    source_92
378624   , h1.CURRENCY_CONVERSION_RATE    source_93
378625   , h1.TRANSFER_TO_GL_INDICATOR    source_114
378626   , fvl114.meaning   source_114_meaning
378627   FROM xla_events_gt     xet 
378628   , CST_XLA_RCV_HEADERS_V  h1
378629   , fnd_lookup_values    fvl85
378630   , fnd_lookup_values    fvl114
378631  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
378632    and xet.event_class_code = C_EVENT_CLASS_CODE
378633    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
378634    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
378635   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
378636   AND fvl85.view_application_id(+) = 700
378637   AND fvl85.language(+)            = USERENV('LANG')
378638      AND fvl114.lookup_type(+)         = 'YES_NO'
378639   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
378640   AND fvl114.view_application_id(+) = 0
378641   AND fvl114.language(+)            = USERENV('LANG')
378642   
378643  ORDER BY event_id
378644 ;
378645 
378646 
378647 --
378648 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
378649 IS
378650 SELECT  /*+ leading(xet) cardinality(xet,1) */
378651 -- Event Class Code: RETR_PRICE_ADJ_DEL
378652     xet.entity_id
378653    ,xet.legal_entity_id
378654    ,xet.entity_code
378655    ,xet.transaction_number
378656    ,xet.event_id
378657    ,xet.event_class_code
378658    ,xet.event_type_code
378659    ,xet.event_number
378660    ,xet.event_date
378661    ,xet.transaction_date
378662    ,xet.reference_num_1
378663    ,xet.reference_num_2
378664    ,xet.reference_num_3
378665    ,xet.reference_num_4
378666    ,xet.reference_char_1
378667    ,xet.reference_char_2
378668    ,xet.reference_char_3
378669    ,xet.reference_char_4
378670    ,xet.reference_date_1
378671    ,xet.reference_date_2
378672    ,xet.reference_date_3
378673    ,xet.reference_date_4
378674    ,xet.event_created_by
378675    ,xet.budgetary_control_flag
378676  , l2.LINE_NUMBER  
378677   , l2.CODE_COMBINATION_ID    source_11
378678   , l2.RCV_ACCOUNTING_LINE_TYPE    source_78
378679   , l2.DISTRIBUTION_IDENTIFIER    source_84
378680   , l2.ENTERED_AMOUNT    source_91
378681   , l2.ACCOUNTED_AMOUNT    source_95
378682   FROM xla_events_gt     xet 
378683   , CST_XLA_RCV_LINES_V  l2
378684  WHERE xet.event_id between x_first_event_id and x_last_event_id
378685    and xet.event_date between p_pad_start_date and p_pad_end_date
378686    and xet.event_class_code = C_EVENT_CLASS_CODE
378687    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
378688 ;
378689 
378690 --
378691 BEGIN
378692 IF g_log_enabled THEN
378693    l_log_module := C_DEFAULT_MODULE||'.EventClass_591';
378694 END IF;
378695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
378696    trace
378697       (p_msg      => 'BEGIN of EventClass_591'
378698       ,p_level    => C_LEVEL_PROCEDURE
378699       ,p_module   => l_log_module);
378700 END IF;
378701 
378702 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378703    trace
378704       (p_msg      => 'p_application_id = '||p_application_id||
378705                      ' - p_base_ledger_id = '||p_base_ledger_id||
378706                      ' - p_target_ledger_id  = '||p_target_ledger_id||
378707                      ' - p_language = '||p_language||
378708                      ' - p_currency_code = '||p_currency_code||
378709                      ' - p_sla_ledger_id = '||p_sla_ledger_id
378710       ,p_level    => C_LEVEL_STATEMENT
378711       ,p_module   => l_log_module);
378712 END IF;
378713 --
378714 -- initialze arrays
378715 --
378716 g_array_event.DELETE;
378717 l_rec_array_event := l_null_rec_array_event;
378718 --
378719 --------------------------------------
378720 -- 4262811 Initialze MPA Line Number
378721 --------------------------------------
378722 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
378723 
378724 --
378725 
378726 --
378727 OPEN header_cur;
378728 --
378729 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378730    trace
378731    (p_msg      => 'SQL - FETCH header_cur'
378732    ,p_level    => C_LEVEL_STATEMENT
378733    ,p_module   => l_log_module);
378734 END IF;
378735 --
378736 LOOP
378737 FETCH header_cur BULK COLLECT INTO
378738         l_array_entity_id
378739       , l_array_legal_entity_id
378740       , l_array_entity_code
378741       , l_array_transaction_num
378742       , l_array_event_id
378743       , l_array_class_code
378744       , l_array_event_type
378745       , l_array_event_number
378746       , l_array_event_date
378747       , l_array_transaction_date
378748       , l_array_reference_num_1
378749       , l_array_reference_num_2
378750       , l_array_reference_num_3
378751       , l_array_reference_num_4
378752       , l_array_reference_char_1
378753       , l_array_reference_char_2
378754       , l_array_reference_char_3
378755       , l_array_reference_char_4
378756       , l_array_reference_date_1
378757       , l_array_reference_date_2
378758       , l_array_reference_date_3
378759       , l_array_reference_date_4
378760       , l_array_event_created_by
378761       , l_array_budgetary_control_flag 
378762       , l_array_source_85
378763       , l_array_source_85_meaning
378764       , l_array_source_88
378765       , l_array_source_92
378766       , l_array_source_93
378767       , l_array_source_114
378768       , l_array_source_114_meaning
378769       LIMIT l_rows;
378770 --
378771 IF (C_LEVEL_EVENT >= g_log_level) THEN
378772    trace
378773    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
378774    ,p_level    => C_LEVEL_EVENT
378775    ,p_module   => l_log_module);
378776 END IF;
378777 --
378778 EXIT WHEN l_array_entity_id.COUNT = 0;
378779 
378780 -- initialize arrays
378781 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
378782 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
378783 
378784 --
378785 -- Bug 4458708
378786 --
378787 XLA_AE_LINES_PKG.g_LineNumber := 0;
378788 
378789 
378790 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
378791 g_last_hdr_idx := l_array_event_id.LAST;
378792 --
378793 -- loop for the headers. Each iteration is for each header extract row
378794 -- fetched in header cursor
378795 --
378796 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
378797 
378798 --
378799 -- set event info as cache for other routines to refer event attributes
378800 --
378801 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
378802    (p_application_id           => p_application_id
378803    ,p_primary_ledger_id        => p_primary_ledger_id
378804    ,p_base_ledger_id           => p_base_ledger_id
378805    ,p_target_ledger_id         => p_target_ledger_id
378806    ,p_entity_id                => l_array_entity_id(hdr_idx)
378807    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
378808    ,p_entity_code              => l_array_entity_code(hdr_idx)
378809    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
378810    ,p_event_id                 => l_array_event_id(hdr_idx)
378811    ,p_event_class_code         => l_array_class_code(hdr_idx)
378812    ,p_event_type_code          => l_array_event_type(hdr_idx)
378813    ,p_event_number             => l_array_event_number(hdr_idx)
378814    ,p_event_date               => l_array_event_date(hdr_idx)
378815    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
378816    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
378817    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
378818    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
378819    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
378820    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
378821    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
378822    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
378823    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
378824    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
378825    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
378826    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
378827    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
378828    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
378829    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
378830 
378831 --
378832 -- set the status of entry to C_VALID (0)
378833 --
378834 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
378835 
378836 --
378837 -- initialize a row for ae header
378838 --
378839 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
378840 
378841 l_event_id := l_array_event_id(hdr_idx);
378842 
378843 --
378844 -- storing the hdr_idx for event. May be used by line cursor.
378845 --
378846 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
378847 
378848 --
378849 -- store sources from header extract. This can be improved to
378850 -- store only those sources from header extract that may be used in lines
378851 --
378852 
378853 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
378854 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
378855 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
378856 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
378857 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
378858 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
378859 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
378860 
378861 --
378862 -- initilaize the status of ae headers for diffrent balance types
378863 -- the status is initialised to C_NOT_CREATED (2)
378864 --
378865 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
378866 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
378867 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
378868 
378869 --
378870 -- call api to validate and store accounting attributes for header
378871 --
378872 
378873 ------------------------------------------------------------
378874 -- Accrual Reversal : to get date for Standard Source (NONE)
378875 ------------------------------------------------------------
378876 l_acc_rev_gl_date_source := NULL;
378877 
378878      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
378879       l_rec_acct_attrs.array_date_value(1) := 
378880 xla_ae_sources_pkg.GetSystemSourceDate(
378881    p_source_code           => 'XLA_REFERENCE_DATE_1'
378882  , p_source_type_code      => 'Y'
378883  , p_source_application_id =>  602
378884 );
378885      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
378886       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
378887 
378888 
378889 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
378890 
378891 XLA_AE_HEADER_PKG.SetJeCategoryName;
378892 
378893 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
378894 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
378895 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
378896 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
378897 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
378898 
378899 
378900 -- No header level analytical criteria
378901 
378902 --
378903 --accounting attribute enhancement, bug 3612931
378904 --
378905 l_trx_reversal_source := SUBSTR(NULL, 1,30);
378906 
378907 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
378908    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
378909 
378910    xla_accounting_err_pkg.build_message
378911       (p_appli_s_name            => 'XLA'
378912       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
378913       ,p_token_1                 => 'ACCT_ATTR_NAME'
378914       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
378915       ,p_token_2                 => 'PRODUCT_NAME'
378916       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
378917       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
378918       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
378919       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
378920 
378921 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
378922    --
378923    -- following sets the accounting attributes needed to reverse
378924    -- accounting for a distributeion
378925    --
378926    xla_ae_lines_pkg.SetTrxReversalAttrs
378927       (p_event_id              => l_event_id
378928       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
378929       ,p_trx_reversal_source   => l_trx_reversal_source);
378930 
378931 END IF;
378932 
378933 
378934 ----------------------------------------------------------------
378935 -- 4262811 -  update the header statuses to invalid in need be
378936 ----------------------------------------------------------------
378937 --
378938 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
378939 
378940 
378941   -----------------------------------------------
378942   -- No accrual reversal for the event class/type
378943   -----------------------------------------------
378944 ----------------------------------------------------------------
378945 
378946 --
378947 -- this ends the header loop iteration for one bulk fetch
378948 --
378949 END LOOP;
378950 
378951 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
378952 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
378953 
378954 --
378955 -- insert dummy rows into lines gt table that were created due to
378956 -- transaction reversals
378957 --
378958 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
378959    l_result := XLA_AE_LINES_PKG.InsertLines;
378960 END IF;
378961 
378962 --
378963 -- reset the temp_line_num for each set of events fetched from header
378964 -- cursor rather than doing it for each new event in line cursor
378965 -- Bug 3939231
378966 --
378967 xla_ae_lines_pkg.g_temp_line_num := 0;
378968 
378969 
378970 
378971 --
378972 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
378973 --
378974 --
378975 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
378976 
378977       trace
378978          (p_msg      => 'SQL - FETCH line_cur'
378979          ,p_level    => C_LEVEL_STATEMENT
378980          ,p_module   => l_log_module);
378981 
378982 END IF;
378983 --
378984 --
378985 LOOP
378986   --
378987   FETCH line_cur BULK COLLECT INTO
378988         l_array_entity_id
378989       , l_array_legal_entity_id
378990       , l_array_entity_code
378991       , l_array_transaction_num
378992       , l_array_event_id
378993       , l_array_class_code
378994       , l_array_event_type
378995       , l_array_event_number
378996       , l_array_event_date
378997       , l_array_transaction_date
378998       , l_array_reference_num_1
378999       , l_array_reference_num_2
379000       , l_array_reference_num_3
379001       , l_array_reference_num_4
379002       , l_array_reference_char_1
379003       , l_array_reference_char_2
379004       , l_array_reference_char_3
379005       , l_array_reference_char_4
379006       , l_array_reference_date_1
379007       , l_array_reference_date_2
379008       , l_array_reference_date_3
379009       , l_array_reference_date_4
379010       , l_array_event_created_by
379011       , l_array_budgetary_control_flag
379012       , l_array_extract_line_num 
379013       , l_array_source_11
379014       , l_array_source_78
379015       , l_array_source_84
379016       , l_array_source_91
379017       , l_array_source_95
379018       LIMIT l_rows;
379019 
379020   --
379021   IF (C_LEVEL_EVENT >= g_log_level) THEN
379022             trace
379023                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
379024                ,p_level    => C_LEVEL_EVENT
379025                ,p_module   => l_log_module);
379026   END IF;
379027   --
379028   EXIT WHEN l_array_entity_id.count = 0;
379029 
379030   XLA_AE_LINES_PKG.g_rec_lines := null;
379031 
379032 --
379033 -- Bug 4458708
379034 --
379035 XLA_AE_LINES_PKG.g_LineNumber := 0;
379036 --
379037 --
379038 
379039 FOR Idx IN 1..l_array_event_id.count LOOP
379040    --
379041    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
379042    --
379043    l_event_id := l_array_event_id(idx);  -- 5648433
379044 
379045    --
379046    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
379047    --
379048 
379049    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
379050              (g_array_event(l_event_id).array_value_num('header_index'))
379051          ,'N'
379052          ) <> 'Y'
379053    THEN
379054       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379055          trace
379056             (p_msg      => 'Trancaction revesal option is not Y '
379057             ,p_level    => C_LEVEL_STATEMENT
379058             ,p_module   => l_log_module);
379059       END IF;
379060 
379061 --
379062 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
379063 --
379064 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
379065 --
379066 -- set event info as cache for other routines to refer event attributes
379067 --
379068 
379069 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
379070    l_previous_event_id := l_event_id;
379071 
379072    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
379073       (p_application_id           => p_application_id
379074       ,p_primary_ledger_id        => p_primary_ledger_id
379075       ,p_base_ledger_id           => p_base_ledger_id
379076       ,p_target_ledger_id         => p_target_ledger_id
379077       ,p_entity_id                => l_array_entity_id(Idx)
379078       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
379079       ,p_entity_code              => l_array_entity_code(Idx)
379080       ,p_transaction_num          => l_array_transaction_num(Idx)
379081       ,p_event_id                 => l_array_event_id(Idx)
379082       ,p_event_class_code         => l_array_class_code(Idx)
379083       ,p_event_type_code          => l_array_event_type(Idx)
379084       ,p_event_number             => l_array_event_number(Idx)
379085       ,p_event_date               => l_array_event_date(Idx)
379086       ,p_transaction_date         => l_array_transaction_date(Idx)
379087       ,p_reference_num_1          => l_array_reference_num_1(Idx)
379088       ,p_reference_num_2          => l_array_reference_num_2(Idx)
379089       ,p_reference_num_3          => l_array_reference_num_3(Idx)
379090       ,p_reference_num_4          => l_array_reference_num_4(Idx)
379091       ,p_reference_char_1         => l_array_reference_char_1(Idx)
379092       ,p_reference_char_2         => l_array_reference_char_2(Idx)
379093       ,p_reference_char_3         => l_array_reference_char_3(Idx)
379094       ,p_reference_char_4         => l_array_reference_char_4(Idx)
379095       ,p_reference_date_1         => l_array_reference_date_1(Idx)
379096       ,p_reference_date_2         => l_array_reference_date_2(Idx)
379097       ,p_reference_date_3         => l_array_reference_date_3(Idx)
379098       ,p_reference_date_4         => l_array_reference_date_4(Idx)
379099       ,p_event_created_by         => l_array_event_created_by(Idx)
379100       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
379101        --
379102 END IF;
379103 
379104 
379105 
379106 --
379107 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
379108 
379109 l_acct_reversal_source := SUBSTR(NULL, 1,30);
379110 
379111 IF l_continue_with_lines THEN
379112    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
379113       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
379114 
379115       xla_accounting_err_pkg.build_message
379116          (p_appli_s_name            => 'XLA'
379117          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
379118          ,p_token_1                 => 'LINE_NUMBER'
379119          ,p_value_1                 => l_array_extract_line_num(Idx)
379120          ,p_token_2                 => 'PRODUCT_NAME'
379121          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
379122          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
379123          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
379124          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
379125 
379126    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
379127       --
379128       -- following sets the accounting attributes needed to reverse
379129       -- accounting for a distributeion
379130       --
379131 
379132       --
379133       -- 5217187
379134       --
379135       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
379136       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
379137                                        g_array_event(l_event_id).array_value_num('header_index'));
379138       --
379139       --
379140 
379141       -- No reversal code generated
379142 
379143       xla_ae_lines_pkg.SetAcctReversalAttrs
379144          (p_event_id             => l_event_id
379145          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
379146          ,p_calculate_acctd_flag => l_calculate_acctd_flag
379147          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
379148    END IF;
379149 
379150    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
379151        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
379152 
379153 --
379154 AcctLineType_45 (
379155  p_application_id  => p_application_id
379156  ,p_event_id     => l_event_id
379157  ,p_calculate_acctd_flag => l_calculate_acctd_flag
379158  ,p_calculate_g_l_flag => l_calculate_g_l_flag
379159  ,p_actual_flag => l_actual_flag
379160  ,p_balance_type_code => l_balance_type_code
379161  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
379162  
379163  , p_source_11 => l_array_source_11(Idx)
379164  , p_source_78 => l_array_source_78(Idx)
379165  , p_source_84 => l_array_source_84(Idx)
379166  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
379167  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
379168  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
379169  , p_source_91 => l_array_source_91(Idx)
379170  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
379171  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
379172  , p_source_95 => l_array_source_95(Idx)
379173  );
379174 If(l_balance_type_code = 'A') THEN
379175   l_actual_gain_loss_ref := l_gain_or_loss_ref;
379176 END IF;
379177 
379178 --
379179 
379180 
379181 --
379182 AcctLineType_506 (
379183  p_application_id  => p_application_id
379184  ,p_event_id     => l_event_id
379185  ,p_calculate_acctd_flag => l_calculate_acctd_flag
379186  ,p_calculate_g_l_flag => l_calculate_g_l_flag
379187  ,p_actual_flag => l_actual_flag
379188  ,p_balance_type_code => l_balance_type_code
379189  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
379190  
379191  , p_source_11 => l_array_source_11(Idx)
379192  , p_source_78 => l_array_source_78(Idx)
379193  , p_source_84 => l_array_source_84(Idx)
379194  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
379195  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
379196  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
379197  , p_source_91 => l_array_source_91(Idx)
379198  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
379199  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
379200  , p_source_95 => l_array_source_95(Idx)
379201  );
379202 If(l_balance_type_code = 'A') THEN
379203   l_actual_gain_loss_ref := l_gain_or_loss_ref;
379204 END IF;
379205 
379206 --
379207 
379208 
379209 --
379210 AcctLineType_517 (
379211  p_application_id  => p_application_id
379212  ,p_event_id     => l_event_id
379213  ,p_calculate_acctd_flag => l_calculate_acctd_flag
379214  ,p_calculate_g_l_flag => l_calculate_g_l_flag
379215  ,p_actual_flag => l_actual_flag
379216  ,p_balance_type_code => l_balance_type_code
379217  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
379218  
379219  , p_source_11 => l_array_source_11(Idx)
379220  , p_source_78 => l_array_source_78(Idx)
379221  , p_source_84 => l_array_source_84(Idx)
379222  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
379223  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
379224  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
379225  , p_source_91 => l_array_source_91(Idx)
379226  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
379227  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
379228  , p_source_95 => l_array_source_95(Idx)
379229  );
379230 If(l_balance_type_code = 'A') THEN
379231   l_actual_gain_loss_ref := l_gain_or_loss_ref;
379232 END IF;
379233 
379234 --
379235 
379236       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
379237       -- or secondary ledger that has different currency with primary
379238       -- or alc that is calculated by sla
379239       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
379240             (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'))
379241 
379242 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
379243 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
379244           AND (l_actual_flag = 'A')) THEN
379245         XLA_AE_LINES_PKG.CreateGainOrLossLines(
379246           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
379247          ,p_application_id   => p_application_id
379248          ,p_amb_context_code => 'DEFAULT'
379249          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
379250          ,p_event_class_code => C_EVENT_CLASS_CODE
379251          ,p_event_type_code  => C_EVENT_TYPE_CODE
379252          
379253          ,p_gain_ccid        => -1
379254          ,p_loss_ccid        => -1
379255 
379256          ,p_actual_flag      => l_actual_flag
379257          ,p_enc_flag         => null
379258          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
379259          ,p_enc_g_l_ref      => null
379260          );
379261       END IF;
379262    END IF;
379263 END IF;
379264 
379265    ELSE
379266       --
379267       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
379268       --
379269       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379270          trace
379271             (p_msg      => 'Trancaction revesal option is Y'
379272             ,p_level    => C_LEVEL_STATEMENT
379273             ,p_module   => l_log_module);
379274       END IF;
379275    END IF;
379276 
379277 END LOOP;
379278 l_result := XLA_AE_LINES_PKG.InsertLines ;
379279 end loop;
379280 close line_cur;
379281 
379282 
379283 --
379284 -- insert headers into xla_ae_headers_gt table
379285 --
379286 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
379287 
379288 -- insert into errors table here.
379289 
379290 END LOOP;
379291 
379292 --
379293 -- 4865292
379294 --
379295 -- Compare g_hdr_extract_count with event count in
379296 -- CreateHeadersAndLines.
379297 --
379298 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
379299 
379300 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379301    trace (p_msg     => '# rows extracted from header extract objects '
379302                     || ' (running total): '
379303                     || g_hdr_extract_count
379304          ,p_level   => C_LEVEL_STATEMENT
379305          ,p_module  => l_log_module);
379306 END IF;
379307 
379308 CLOSE header_cur;
379309 --
379310 
379311 --
379312 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
379313    trace
379314       (p_msg      => 'END of EventClass_591'
379315       ,p_level    => C_LEVEL_PROCEDURE
379316       ,p_module   => l_log_module);
379317 END IF;
379318 --
379319 RETURN l_result;
379320 EXCEPTION
379321 WHEN xla_exceptions_pkg.application_exception THEN
379322    
379323 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
379324 
379325    
379326 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
379327 
379328    RAISE;
379329 
379330 WHEN NO_DATA_FOUND THEN
379331 
379332 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
379333 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
379334 
379335 FOR header_record IN header_cur
379336 LOOP
379337     l_array_header_events(header_record.event_id) := header_record.event_id;
379338 END LOOP;
379339 
379340 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
379341 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
379342 
379343 fnd_file.put_line(fnd_file.LOG, '                    ');
379344 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
379345 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
379346 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
379347 
379348 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
379349 LOOP
379350 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
379351 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
379352         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
379353 	END IF;
379354 END LOOP;
379355 
379356 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
379357 fnd_file.put_line(fnd_file.LOG, '                    ');
379358 
379359 
379360 xla_exceptions_pkg.raise_message
379361       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_591');
379362 
379363 
379364 WHEN OTHERS THEN
379365    xla_exceptions_pkg.raise_message
379366       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_591');
379367 END EventClass_591;
379368 --
379369 
379370 ---------------------------------------
379371 --
379372 -- PRIVATE PROCEDURE
379373 --         insert_sources_592
379374 --
379375 ----------------------------------------
379376 --
379377 PROCEDURE insert_sources_592(
379378                                 p_target_ledger_id       IN NUMBER
379379                               , p_language               IN VARCHAR2
379380                               , p_sla_ledger_id          IN NUMBER
379381                               , p_pad_start_date         IN DATE
379382                               , p_pad_end_date           IN DATE
379383                          )
379384 IS
379385 
379386 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_RCV_ALL';
379387 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
379388 p_apps_owner                   VARCHAR2(30);
379389 l_log_module                   VARCHAR2(240);
379390 BEGIN
379391 IF g_log_enabled THEN
379392       l_log_module := C_DEFAULT_MODULE||'.insert_sources_592';
379393 END IF;
379394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
379395 
379396       trace
379397          (p_msg      => 'BEGIN of insert_sources_592'
379398          ,p_level    => C_LEVEL_PROCEDURE
379399          ,p_module   => l_log_module);
379400 
379401 END IF;
379402 
379403 -- select APPS owner
379404 SELECT oracle_username
379405   INTO p_apps_owner
379406   FROM fnd_oracle_userid
379407  WHERE read_only_flag = 'U'
379408 ;
379409 
379410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379411       trace
379412          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
379413                         ' - p_language = '||p_language||
379414                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
379415                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
379416                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
379417                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
379418          ,p_level    => C_LEVEL_STATEMENT
379419          ,p_module   => l_log_module);
379420 END IF;
379421 
379422 
379423 --
379424 INSERT INTO xla_diag_sources --hdr2
379425 (
379426         event_id
379427       , ledger_id
379428       , sla_ledger_id
379429       , description_language
379430       , object_name
379431       , object_type_code
379432       , line_number
379433       , source_application_id
379434       , source_type_code
379435       , source_code
379436       , source_value
379437       , source_meaning
379438       , created_by
379439       , creation_date
379440       , last_update_date
379441       , last_updated_by
379442       , last_update_login
379443       , program_update_date
379444       , program_application_id
379445       , program_id
379446       , request_id
379447 )
379448 SELECT
379449         event_id
379450       , p_target_ledger_id
379451       , p_sla_ledger_id
379452       , p_language
379453       , object_name
379454       , object_type_code
379455       , line_number
379456       , source_application_id
379457       , source_type_code
379458       , source_code
379459       , SUBSTR(source_value ,1,1996)
379460       , SUBSTR(source_meaning ,1,200)
379461       , xla_environment_pkg.g_Usr_Id
379462       , TRUNC(SYSDATE)
379463       , TRUNC(SYSDATE)
379464       , xla_environment_pkg.g_Usr_Id
379465       , xla_environment_pkg.g_Login_Id
379466       , TRUNC(SYSDATE)
379467       , xla_environment_pkg.g_Prog_Appl_Id
379468       , xla_environment_pkg.g_Prog_Id
379469       , xla_environment_pkg.g_Req_Id
379470   FROM (
379471        SELECT xet.event_id                  event_id
379472             , 0                          line_number
379473             , CASE r
379474                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
379475                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
379476                 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V' 
379477                 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V' 
379478                 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V' 
379479                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
379480                 
379481                ELSE null
379482               END                           object_name
379483             , CASE r
379484                 WHEN 1 THEN 'HEADER' 
379485                 WHEN 2 THEN 'HEADER' 
379486                 WHEN 3 THEN 'HEADER' 
379487                 WHEN 4 THEN 'HEADER' 
379488                 WHEN 5 THEN 'HEADER' 
379489                 WHEN 6 THEN 'HEADER' 
379490                 
379491                 ELSE null
379492               END                           object_type_code
379493             , CASE r
379494                 WHEN 1 THEN '707' 
379495                 WHEN 2 THEN '707' 
379496                 WHEN 3 THEN '707' 
379497                 WHEN 4 THEN '707' 
379498                 WHEN 5 THEN '707' 
379499                 WHEN 6 THEN '707' 
379500                 
379501                 ELSE null
379502               END                           source_application_id
379503             , 'S'             source_type_code
379504             , CASE r
379505                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
379506                 WHEN 2 THEN 'CURRENCY_CODE' 
379507                 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE' 
379508                 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE' 
379509                 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE' 
379510                 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR' 
379511                 
379512                 ELSE null
379513               END                           source_code
379514             , CASE r
379515                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
379516                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
379517                 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
379518                 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
379519                 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
379520                 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
379521                 
379522                 ELSE null
379523               END                           source_value
379524             , CASE r
379525                 WHEN 1 THEN fvl85.meaning
379526                 WHEN 6 THEN fvl114.meaning
379527                 
379528                 ELSE null
379529               END               source_meaning
379530          FROM xla_events_gt     xet  
379531       , CST_XLA_RCV_HEADERS_V  h1
379532   , fnd_lookup_values    fvl85
379533   , fnd_lookup_values    fvl114
379534              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
379535          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
379536            AND xet.event_class_code = C_EVENT_CLASS_CODE
379537               AND h1.event_id = xet.event_id
379538    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
379539   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
379540   AND fvl85.view_application_id(+) = 700
379541   AND fvl85.language(+)            = USERENV('LANG')
379542      AND fvl114.lookup_type(+)         = 'YES_NO'
379543   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
379544   AND fvl114.view_application_id(+) = 0
379545   AND fvl114.language(+)            = USERENV('LANG')
379546   
379547 )
379548 ;
379549 --
379550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379551 
379552       trace
379553          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
379554          ,p_level    => C_LEVEL_STATEMENT
379555          ,p_module   => l_log_module);
379556 
379557 END IF;
379558 --
379559 
379560 
379561 
379562 --
379563 INSERT INTO xla_diag_sources  --line2
379564 (
379565         event_id
379566       , ledger_id
379567       , sla_ledger_id
379568       , description_language
379569       , object_name
379570       , object_type_code
379571       , line_number
379572       , source_application_id
379573       , source_type_code
379574       , source_code
379575       , source_value
379576       , source_meaning
379577       , created_by
379578       , creation_date
379579       , last_update_date
379580       , last_updated_by
379581       , last_update_login
379582       , program_update_date
379583       , program_application_id
379584       , program_id
379585       , request_id
379586 )
379587 SELECT  event_id
379588       , p_target_ledger_id
379589       , p_sla_ledger_id
379590       , p_language
379591       , object_name
379592       , object_type_code
379593       , line_number
379594       , source_application_id
379595       , source_type_code
379596       , source_code
379597       , SUBSTR(source_value,1,1996)
379598       , SUBSTR(source_meaning ,1,200)
379599       , xla_environment_pkg.g_Usr_Id
379600       , TRUNC(SYSDATE)
379601       , TRUNC(SYSDATE)
379602       , xla_environment_pkg.g_Usr_Id
379603       , xla_environment_pkg.g_Login_Id
379604       , TRUNC(SYSDATE)
379605       , xla_environment_pkg.g_Prog_Appl_Id
379606       , xla_environment_pkg.g_Prog_Id
379607       , xla_environment_pkg.g_Req_Id
379608   FROM (
379609        SELECT xet.event_id                  event_id
379610             , l2.line_number                 line_number
379611             , CASE r
379612                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
379613                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
379614                 WHEN 3 THEN 'CST_XLA_RCV_LINES_V' 
379615                 WHEN 4 THEN 'CST_XLA_RCV_LINES_V' 
379616                 WHEN 5 THEN 'CST_XLA_RCV_LINES_V' 
379617                 
379618                ELSE null
379619               END                           object_name
379620             , CASE r
379621                 WHEN 1 THEN 'LINE' 
379622                 WHEN 2 THEN 'LINE' 
379623                 WHEN 3 THEN 'LINE' 
379624                 WHEN 4 THEN 'LINE' 
379625                 WHEN 5 THEN 'LINE' 
379626                 
379627                 ELSE null
379628               END                           object_type_code
379629             , CASE r
379630                 WHEN 1 THEN '707' 
379631                 WHEN 2 THEN '707' 
379632                 WHEN 3 THEN '707' 
379633                 WHEN 4 THEN '707' 
379634                 WHEN 5 THEN '707' 
379635                 
379636                 ELSE null
379637               END                           source_application_id
379638             , 'S'             source_type_code
379639             , CASE r
379640                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
379641                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
379642                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
379643                 WHEN 4 THEN 'ENTERED_AMOUNT' 
379644                 WHEN 5 THEN 'ACCOUNTED_AMOUNT' 
379645                 
379646                 ELSE null
379647               END                           source_code
379648             , CASE r
379649                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
379650                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
379651                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
379652                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
379653                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
379654                 
379655                 ELSE null
379656               END                           source_value
379657             , null              source_meaning
379658          FROM  xla_events_gt     xet  
379659         , CST_XLA_RCV_LINES_V  l2
379660             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
379661         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
379662           AND xet.event_class_code = C_EVENT_CLASS_CODE
379663             AND l2.event_id          = xet.event_id
379664 
379665 )
379666 ;
379667 --
379668 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379669 
379670       trace
379671          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
379672          ,p_level    => C_LEVEL_STATEMENT
379673          ,p_module   => l_log_module);
379674 
379675 END IF;
379676 
379677 
379678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
379679       trace
379680          (p_msg      => 'END of insert_sources_592'
379681          ,p_level    => C_LEVEL_PROCEDURE
379682          ,p_module   => l_log_module);
379683 END IF;
379684 EXCEPTION
379685   WHEN xla_exceptions_pkg.application_exception THEN
379686       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
379687             trace
379688                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
379689                ,p_level    => C_LEVEL_EXCEPTION
379690                ,p_module   => l_log_module);
379691       END IF;
379692       RAISE;
379693   WHEN OTHERS THEN
379694       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
379695             trace
379696                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
379697                ,p_level    => C_LEVEL_EXCEPTION
379698                ,p_module   => l_log_module);
379699        END IF;
379700        xla_exceptions_pkg.raise_message
379701            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_592');
379702 END insert_sources_592;
379703 --
379704 
379705 ---------------------------------------
379706 --
379707 -- PRIVATE FUNCTION
379708 --         EventClass_592
379709 --
379710 ----------------------------------------
379711 --
379712 FUNCTION EventClass_592
379713        (p_application_id         IN NUMBER
379714        ,p_base_ledger_id         IN NUMBER
379715        ,p_target_ledger_id       IN NUMBER
379716        ,p_language               IN VARCHAR2
379717        ,p_currency_code          IN VARCHAR2
379718        ,p_sla_ledger_id          IN NUMBER
379719        ,p_pad_start_date         IN DATE
379720        ,p_pad_end_date           IN DATE
379721        ,p_primary_ledger_id      IN NUMBER)
379722 RETURN BOOLEAN IS
379723 --
379724 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RETR_PRICE_ADJ_RCV_ALL';
379725 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
379726 
379727 l_calculate_acctd_flag   VARCHAR2(1) :='N';
379728 l_calculate_g_l_flag     VARCHAR2(1) :='N';
379729 --
379730 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379731 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379732 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
379733 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
379734 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379735 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
379736 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
379737 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379738 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
379739 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
379740 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379741 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379742 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379743 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
379744 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
379745 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
379746 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
379747 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
379748 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
379749 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
379750 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
379751 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
379752 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
379753 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
379754 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
379755 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
379756 
379757 l_event_id                             NUMBER;
379758 l_previous_event_id                    NUMBER;
379759 l_first_event_id                       NUMBER;
379760 l_last_event_id                        NUMBER;
379761 
379762 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
379763 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
379764 --
379765 --
379766 l_result                    BOOLEAN := TRUE;
379767 l_rows                      NUMBER  := 1000;
379768 l_event_type_name           VARCHAR2(80) := 'All';
379769 l_event_class_name          VARCHAR2(80) := 'Retroactive Price Adjustment to Receipt';
379770 l_description               VARCHAR2(4000);
379771 l_transaction_reversal      NUMBER;
379772 l_ae_header_id              NUMBER;
379773 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
379774 l_log_module                VARCHAR2(240);
379775 --
379776 l_acct_reversal_source      VARCHAR2(30);
379777 l_trx_reversal_source       VARCHAR2(30);
379778 
379779 l_continue_with_lines       BOOLEAN := TRUE;
379780 --
379781 l_acc_rev_gl_date_source    DATE;                      -- 4262811
379782 --
379783 type t_array_event_id is table of number index by binary_integer;
379784 
379785 l_rec_array_event                    t_rec_array_event;
379786 l_null_rec_array_event               t_rec_array_event;
379787 l_array_ae_header_id                 xla_number_array_type;
379788 l_actual_flag                        VARCHAR2(1) := NULL;
379789 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
379790 l_balance_type_code                  VARCHAR2(1) :=NULL;
379791 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
379792 
379793 --
379794 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
379795 --
379796 
379797 TYPE t_array_source_85 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
379798 TYPE t_array_source_88 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
379799 TYPE t_array_source_92 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
379800 TYPE t_array_source_93 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
379801 TYPE t_array_source_94 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
379802 TYPE t_array_source_114 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
379803 
379804 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
379805 TYPE t_array_source_78 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
379806 TYPE t_array_source_84 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
379807 TYPE t_array_source_91 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
379808 TYPE t_array_source_95 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
379809 
379810 l_array_source_85              t_array_source_85;
379811 l_array_source_85_meaning      t_array_lookup_meaning;
379812 l_array_source_88              t_array_source_88;
379813 l_array_source_92              t_array_source_92;
379814 l_array_source_93              t_array_source_93;
379815 l_array_source_94              t_array_source_94;
379816 l_array_source_114              t_array_source_114;
379817 l_array_source_114_meaning      t_array_lookup_meaning;
379818 
379819 l_array_source_11      t_array_source_11;
379820 l_array_source_78      t_array_source_78;
379821 l_array_source_84      t_array_source_84;
379822 l_array_source_91      t_array_source_91;
379823 l_array_source_95      t_array_source_95;
379824 
379825 --
379826 CURSOR header_cur
379827 IS
379828 SELECT /*+ leading(xet) cardinality(xet,1) */
379829 -- Event Class Code: RETR_PRICE_ADJ_RCV
379830     xet.entity_id
379831    ,xet.legal_entity_id
379832    ,xet.entity_code
379833    ,xet.transaction_number
379834    ,xet.event_id
379835    ,xet.event_class_code
379836    ,xet.event_type_code
379837    ,xet.event_number
379838    ,xet.event_date
379839    ,xet.transaction_date
379840    ,xet.reference_num_1
379841    ,xet.reference_num_2
379842    ,xet.reference_num_3
379843    ,xet.reference_num_4
379844    ,xet.reference_char_1
379845    ,xet.reference_char_2
379846    ,xet.reference_char_3
379847    ,xet.reference_char_4
379848    ,xet.reference_date_1
379849    ,xet.reference_date_2
379850    ,xet.reference_date_3
379851    ,xet.reference_date_4
379852    ,xet.event_created_by
379853    ,xet.budgetary_control_flag 
379854   , h1.DISTRIBUTION_TYPE    source_85
379855   , fvl85.meaning   source_85_meaning
379856   , h1.CURRENCY_CODE    source_88
379857   , h1.CURRENCY_CONVERSION_DATE    source_92
379858   , h1.CURRENCY_CONVERSION_RATE    source_93
379859   , h1.CURRENCY_CONVERSION_TYPE    source_94
379860   , h1.TRANSFER_TO_GL_INDICATOR    source_114
379861   , fvl114.meaning   source_114_meaning
379862   FROM xla_events_gt     xet 
379863   , CST_XLA_RCV_HEADERS_V  h1
379864   , fnd_lookup_values    fvl85
379865   , fnd_lookup_values    fvl114
379866  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
379867    and xet.event_class_code = C_EVENT_CLASS_CODE
379868    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
379869    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
379870   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
379871   AND fvl85.view_application_id(+) = 700
379872   AND fvl85.language(+)            = USERENV('LANG')
379873      AND fvl114.lookup_type(+)         = 'YES_NO'
379874   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
379875   AND fvl114.view_application_id(+) = 0
379876   AND fvl114.language(+)            = USERENV('LANG')
379877   
379878  ORDER BY event_id
379879 ;
379880 
379881 
379882 --
379883 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
379884 IS
379885 SELECT  /*+ leading(xet) cardinality(xet,1) */
379886 -- Event Class Code: RETR_PRICE_ADJ_RCV
379887     xet.entity_id
379888    ,xet.legal_entity_id
379889    ,xet.entity_code
379890    ,xet.transaction_number
379891    ,xet.event_id
379892    ,xet.event_class_code
379893    ,xet.event_type_code
379894    ,xet.event_number
379895    ,xet.event_date
379896    ,xet.transaction_date
379897    ,xet.reference_num_1
379898    ,xet.reference_num_2
379899    ,xet.reference_num_3
379900    ,xet.reference_num_4
379901    ,xet.reference_char_1
379902    ,xet.reference_char_2
379903    ,xet.reference_char_3
379904    ,xet.reference_char_4
379905    ,xet.reference_date_1
379906    ,xet.reference_date_2
379907    ,xet.reference_date_3
379908    ,xet.reference_date_4
379909    ,xet.event_created_by
379910    ,xet.budgetary_control_flag
379911  , l2.LINE_NUMBER  
379912   , l2.CODE_COMBINATION_ID    source_11
379913   , l2.RCV_ACCOUNTING_LINE_TYPE    source_78
379914   , l2.DISTRIBUTION_IDENTIFIER    source_84
379915   , l2.ENTERED_AMOUNT    source_91
379916   , l2.ACCOUNTED_AMOUNT    source_95
379917   FROM xla_events_gt     xet 
379918   , CST_XLA_RCV_LINES_V  l2
379919  WHERE xet.event_id between x_first_event_id and x_last_event_id
379920    and xet.event_date between p_pad_start_date and p_pad_end_date
379921    and xet.event_class_code = C_EVENT_CLASS_CODE
379922    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
379923 ;
379924 
379925 --
379926 BEGIN
379927 IF g_log_enabled THEN
379928    l_log_module := C_DEFAULT_MODULE||'.EventClass_592';
379929 END IF;
379930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
379931    trace
379932       (p_msg      => 'BEGIN of EventClass_592'
379933       ,p_level    => C_LEVEL_PROCEDURE
379934       ,p_module   => l_log_module);
379935 END IF;
379936 
379937 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379938    trace
379939       (p_msg      => 'p_application_id = '||p_application_id||
379940                      ' - p_base_ledger_id = '||p_base_ledger_id||
379941                      ' - p_target_ledger_id  = '||p_target_ledger_id||
379942                      ' - p_language = '||p_language||
379943                      ' - p_currency_code = '||p_currency_code||
379944                      ' - p_sla_ledger_id = '||p_sla_ledger_id
379945       ,p_level    => C_LEVEL_STATEMENT
379946       ,p_module   => l_log_module);
379947 END IF;
379948 --
379949 -- initialze arrays
379950 --
379951 g_array_event.DELETE;
379952 l_rec_array_event := l_null_rec_array_event;
379953 --
379954 --------------------------------------
379955 -- 4262811 Initialze MPA Line Number
379956 --------------------------------------
379957 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
379958 
379959 --
379960 
379961 --
379962 OPEN header_cur;
379963 --
379964 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
379965    trace
379966    (p_msg      => 'SQL - FETCH header_cur'
379967    ,p_level    => C_LEVEL_STATEMENT
379968    ,p_module   => l_log_module);
379969 END IF;
379970 --
379971 LOOP
379972 FETCH header_cur BULK COLLECT INTO
379973         l_array_entity_id
379974       , l_array_legal_entity_id
379975       , l_array_entity_code
379976       , l_array_transaction_num
379977       , l_array_event_id
379978       , l_array_class_code
379979       , l_array_event_type
379980       , l_array_event_number
379981       , l_array_event_date
379982       , l_array_transaction_date
379983       , l_array_reference_num_1
379984       , l_array_reference_num_2
379985       , l_array_reference_num_3
379986       , l_array_reference_num_4
379987       , l_array_reference_char_1
379988       , l_array_reference_char_2
379989       , l_array_reference_char_3
379990       , l_array_reference_char_4
379991       , l_array_reference_date_1
379992       , l_array_reference_date_2
379993       , l_array_reference_date_3
379994       , l_array_reference_date_4
379995       , l_array_event_created_by
379996       , l_array_budgetary_control_flag 
379997       , l_array_source_85
379998       , l_array_source_85_meaning
379999       , l_array_source_88
380000       , l_array_source_92
380001       , l_array_source_93
380002       , l_array_source_94
380003       , l_array_source_114
380004       , l_array_source_114_meaning
380005       LIMIT l_rows;
380006 --
380007 IF (C_LEVEL_EVENT >= g_log_level) THEN
380008    trace
380009    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
380010    ,p_level    => C_LEVEL_EVENT
380011    ,p_module   => l_log_module);
380012 END IF;
380013 --
380014 EXIT WHEN l_array_entity_id.COUNT = 0;
380015 
380016 -- initialize arrays
380017 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
380018 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
380019 
380020 --
380021 -- Bug 4458708
380022 --
380023 XLA_AE_LINES_PKG.g_LineNumber := 0;
380024 
380025 
380026 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
380027 g_last_hdr_idx := l_array_event_id.LAST;
380028 --
380029 -- loop for the headers. Each iteration is for each header extract row
380030 -- fetched in header cursor
380031 --
380032 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
380033 
380034 --
380035 -- set event info as cache for other routines to refer event attributes
380036 --
380037 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
380038    (p_application_id           => p_application_id
380039    ,p_primary_ledger_id        => p_primary_ledger_id
380040    ,p_base_ledger_id           => p_base_ledger_id
380041    ,p_target_ledger_id         => p_target_ledger_id
380042    ,p_entity_id                => l_array_entity_id(hdr_idx)
380043    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
380044    ,p_entity_code              => l_array_entity_code(hdr_idx)
380045    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
380046    ,p_event_id                 => l_array_event_id(hdr_idx)
380047    ,p_event_class_code         => l_array_class_code(hdr_idx)
380048    ,p_event_type_code          => l_array_event_type(hdr_idx)
380049    ,p_event_number             => l_array_event_number(hdr_idx)
380050    ,p_event_date               => l_array_event_date(hdr_idx)
380051    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
380052    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
380053    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
380054    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
380055    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
380056    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
380057    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
380058    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
380059    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
380060    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
380061    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
380062    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
380063    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
380064    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
380065    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
380066 
380067 --
380068 -- set the status of entry to C_VALID (0)
380069 --
380070 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
380071 
380072 --
380073 -- initialize a row for ae header
380074 --
380075 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
380076 
380077 l_event_id := l_array_event_id(hdr_idx);
380078 
380079 --
380080 -- storing the hdr_idx for event. May be used by line cursor.
380081 --
380082 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
380083 
380084 --
380085 -- store sources from header extract. This can be improved to
380086 -- store only those sources from header extract that may be used in lines
380087 --
380088 
380089 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
380090 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
380091 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
380092 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
380093 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
380094 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
380095 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
380096 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
380097 
380098 --
380099 -- initilaize the status of ae headers for diffrent balance types
380100 -- the status is initialised to C_NOT_CREATED (2)
380101 --
380102 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
380103 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
380104 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
380105 
380106 --
380107 -- call api to validate and store accounting attributes for header
380108 --
380109 
380110 ------------------------------------------------------------
380111 -- Accrual Reversal : to get date for Standard Source (NONE)
380112 ------------------------------------------------------------
380113 l_acc_rev_gl_date_source := NULL;
380114 
380115      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
380116       l_rec_acct_attrs.array_date_value(1) := 
380117 xla_ae_sources_pkg.GetSystemSourceDate(
380118    p_source_code           => 'XLA_REFERENCE_DATE_1'
380119  , p_source_type_code      => 'Y'
380120  , p_source_application_id =>  602
380121 );
380122      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
380123       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
380124 
380125 
380126 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
380127 
380128 XLA_AE_HEADER_PKG.SetJeCategoryName;
380129 
380130 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
380131 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
380132 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
380133 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
380134 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
380135 
380136 
380137 -- No header level analytical criteria
380138 
380139 --
380140 --accounting attribute enhancement, bug 3612931
380141 --
380142 l_trx_reversal_source := SUBSTR(NULL, 1,30);
380143 
380144 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
380145    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
380146 
380147    xla_accounting_err_pkg.build_message
380148       (p_appli_s_name            => 'XLA'
380149       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
380150       ,p_token_1                 => 'ACCT_ATTR_NAME'
380151       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
380152       ,p_token_2                 => 'PRODUCT_NAME'
380153       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
380154       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
380155       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
380156       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
380157 
380158 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
380159    --
380160    -- following sets the accounting attributes needed to reverse
380161    -- accounting for a distributeion
380162    --
380163    xla_ae_lines_pkg.SetTrxReversalAttrs
380164       (p_event_id              => l_event_id
380165       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
380166       ,p_trx_reversal_source   => l_trx_reversal_source);
380167 
380168 END IF;
380169 
380170 
380171 ----------------------------------------------------------------
380172 -- 4262811 -  update the header statuses to invalid in need be
380173 ----------------------------------------------------------------
380174 --
380175 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
380176 
380177 
380178   -----------------------------------------------
380179   -- No accrual reversal for the event class/type
380180   -----------------------------------------------
380181 ----------------------------------------------------------------
380182 
380183 --
380184 -- this ends the header loop iteration for one bulk fetch
380185 --
380186 END LOOP;
380187 
380188 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
380189 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
380190 
380191 --
380192 -- insert dummy rows into lines gt table that were created due to
380193 -- transaction reversals
380194 --
380195 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
380196    l_result := XLA_AE_LINES_PKG.InsertLines;
380197 END IF;
380198 
380199 --
380200 -- reset the temp_line_num for each set of events fetched from header
380201 -- cursor rather than doing it for each new event in line cursor
380202 -- Bug 3939231
380203 --
380204 xla_ae_lines_pkg.g_temp_line_num := 0;
380205 
380206 
380207 
380208 --
380209 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
380210 --
380211 --
380212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
380213 
380214       trace
380215          (p_msg      => 'SQL - FETCH line_cur'
380216          ,p_level    => C_LEVEL_STATEMENT
380217          ,p_module   => l_log_module);
380218 
380219 END IF;
380220 --
380221 --
380222 LOOP
380223   --
380224   FETCH line_cur BULK COLLECT INTO
380225         l_array_entity_id
380226       , l_array_legal_entity_id
380227       , l_array_entity_code
380228       , l_array_transaction_num
380229       , l_array_event_id
380230       , l_array_class_code
380231       , l_array_event_type
380232       , l_array_event_number
380233       , l_array_event_date
380234       , l_array_transaction_date
380235       , l_array_reference_num_1
380236       , l_array_reference_num_2
380237       , l_array_reference_num_3
380238       , l_array_reference_num_4
380239       , l_array_reference_char_1
380240       , l_array_reference_char_2
380241       , l_array_reference_char_3
380242       , l_array_reference_char_4
380243       , l_array_reference_date_1
380244       , l_array_reference_date_2
380245       , l_array_reference_date_3
380246       , l_array_reference_date_4
380247       , l_array_event_created_by
380248       , l_array_budgetary_control_flag
380249       , l_array_extract_line_num 
380250       , l_array_source_11
380251       , l_array_source_78
380252       , l_array_source_84
380253       , l_array_source_91
380254       , l_array_source_95
380255       LIMIT l_rows;
380256 
380257   --
380258   IF (C_LEVEL_EVENT >= g_log_level) THEN
380259             trace
380260                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
380261                ,p_level    => C_LEVEL_EVENT
380262                ,p_module   => l_log_module);
380263   END IF;
380264   --
380265   EXIT WHEN l_array_entity_id.count = 0;
380266 
380267   XLA_AE_LINES_PKG.g_rec_lines := null;
380268 
380269 --
380270 -- Bug 4458708
380271 --
380272 XLA_AE_LINES_PKG.g_LineNumber := 0;
380273 --
380274 --
380275 
380276 FOR Idx IN 1..l_array_event_id.count LOOP
380277    --
380278    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
380279    --
380280    l_event_id := l_array_event_id(idx);  -- 5648433
380281 
380282    --
380283    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
380284    --
380285 
380286    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
380287              (g_array_event(l_event_id).array_value_num('header_index'))
380288          ,'N'
380289          ) <> 'Y'
380290    THEN
380291       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
380292          trace
380293             (p_msg      => 'Trancaction revesal option is not Y '
380294             ,p_level    => C_LEVEL_STATEMENT
380295             ,p_module   => l_log_module);
380296       END IF;
380297 
380298 --
380299 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
380300 --
380301 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
380302 --
380303 -- set event info as cache for other routines to refer event attributes
380304 --
380305 
380306 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
380307    l_previous_event_id := l_event_id;
380308 
380309    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
380310       (p_application_id           => p_application_id
380311       ,p_primary_ledger_id        => p_primary_ledger_id
380312       ,p_base_ledger_id           => p_base_ledger_id
380313       ,p_target_ledger_id         => p_target_ledger_id
380314       ,p_entity_id                => l_array_entity_id(Idx)
380315       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
380316       ,p_entity_code              => l_array_entity_code(Idx)
380317       ,p_transaction_num          => l_array_transaction_num(Idx)
380318       ,p_event_id                 => l_array_event_id(Idx)
380319       ,p_event_class_code         => l_array_class_code(Idx)
380320       ,p_event_type_code          => l_array_event_type(Idx)
380321       ,p_event_number             => l_array_event_number(Idx)
380322       ,p_event_date               => l_array_event_date(Idx)
380323       ,p_transaction_date         => l_array_transaction_date(Idx)
380324       ,p_reference_num_1          => l_array_reference_num_1(Idx)
380325       ,p_reference_num_2          => l_array_reference_num_2(Idx)
380326       ,p_reference_num_3          => l_array_reference_num_3(Idx)
380327       ,p_reference_num_4          => l_array_reference_num_4(Idx)
380328       ,p_reference_char_1         => l_array_reference_char_1(Idx)
380329       ,p_reference_char_2         => l_array_reference_char_2(Idx)
380330       ,p_reference_char_3         => l_array_reference_char_3(Idx)
380331       ,p_reference_char_4         => l_array_reference_char_4(Idx)
380332       ,p_reference_date_1         => l_array_reference_date_1(Idx)
380333       ,p_reference_date_2         => l_array_reference_date_2(Idx)
380334       ,p_reference_date_3         => l_array_reference_date_3(Idx)
380335       ,p_reference_date_4         => l_array_reference_date_4(Idx)
380336       ,p_event_created_by         => l_array_event_created_by(Idx)
380337       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
380338        --
380339 END IF;
380340 
380341 
380342 
380343 --
380344 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
380345 
380346 l_acct_reversal_source := SUBSTR(NULL, 1,30);
380347 
380348 IF l_continue_with_lines THEN
380349    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
380350       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
380351 
380352       xla_accounting_err_pkg.build_message
380353          (p_appli_s_name            => 'XLA'
380354          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
380355          ,p_token_1                 => 'LINE_NUMBER'
380356          ,p_value_1                 => l_array_extract_line_num(Idx)
380357          ,p_token_2                 => 'PRODUCT_NAME'
380358          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
380359          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
380360          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
380361          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
380362 
380363    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
380364       --
380365       -- following sets the accounting attributes needed to reverse
380366       -- accounting for a distributeion
380367       --
380368 
380369       --
380370       -- 5217187
380371       --
380372       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
380373       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
380374                                        g_array_event(l_event_id).array_value_num('header_index'));
380375       --
380376       --
380377 
380378       -- No reversal code generated
380379 
380380       xla_ae_lines_pkg.SetAcctReversalAttrs
380381          (p_event_id             => l_event_id
380382          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
380383          ,p_calculate_acctd_flag => l_calculate_acctd_flag
380384          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
380385    END IF;
380386 
380387    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
380388        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
380389 
380390 --
380391 AcctLineType_41 (
380392  p_application_id  => p_application_id
380393  ,p_event_id     => l_event_id
380394  ,p_calculate_acctd_flag => l_calculate_acctd_flag
380395  ,p_calculate_g_l_flag => l_calculate_g_l_flag
380396  ,p_actual_flag => l_actual_flag
380397  ,p_balance_type_code => l_balance_type_code
380398  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
380399  
380400  , p_source_11 => l_array_source_11(Idx)
380401  , p_source_78 => l_array_source_78(Idx)
380402  , p_source_84 => l_array_source_84(Idx)
380403  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
380404  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
380405  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
380406  , p_source_91 => l_array_source_91(Idx)
380407  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
380408  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
380409  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
380410  , p_source_95 => l_array_source_95(Idx)
380411  );
380412 If(l_balance_type_code = 'A') THEN
380413   l_actual_gain_loss_ref := l_gain_or_loss_ref;
380414 END IF;
380415 
380416 --
380417 
380418 
380419 --
380420 AcctLineType_140 (
380421  p_application_id  => p_application_id
380422  ,p_event_id     => l_event_id
380423  ,p_calculate_acctd_flag => l_calculate_acctd_flag
380424  ,p_calculate_g_l_flag => l_calculate_g_l_flag
380425  ,p_actual_flag => l_actual_flag
380426  ,p_balance_type_code => l_balance_type_code
380427  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
380428  
380429  , p_source_11 => l_array_source_11(Idx)
380430  , p_source_78 => l_array_source_78(Idx)
380431  , p_source_84 => l_array_source_84(Idx)
380432  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
380433  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
380434  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
380435  , p_source_91 => l_array_source_91(Idx)
380436  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
380437  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
380438  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
380439  , p_source_95 => l_array_source_95(Idx)
380440  );
380441 If(l_balance_type_code = 'A') THEN
380442   l_actual_gain_loss_ref := l_gain_or_loss_ref;
380443 END IF;
380444 
380445 --
380446 
380447 
380448 --
380449 AcctLineType_509 (
380450  p_application_id  => p_application_id
380451  ,p_event_id     => l_event_id
380452  ,p_calculate_acctd_flag => l_calculate_acctd_flag
380453  ,p_calculate_g_l_flag => l_calculate_g_l_flag
380454  ,p_actual_flag => l_actual_flag
380455  ,p_balance_type_code => l_balance_type_code
380456  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
380457  
380458  , p_source_11 => l_array_source_11(Idx)
380459  , p_source_78 => l_array_source_78(Idx)
380460  , p_source_84 => l_array_source_84(Idx)
380461  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
380462  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
380463  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
380464  , p_source_91 => l_array_source_91(Idx)
380465  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
380466  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
380467  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
380468  , p_source_95 => l_array_source_95(Idx)
380469  );
380470 If(l_balance_type_code = 'A') THEN
380471   l_actual_gain_loss_ref := l_gain_or_loss_ref;
380472 END IF;
380473 
380474 --
380475 
380476 
380477 --
380478 AcctLineType_516 (
380479  p_application_id  => p_application_id
380480  ,p_event_id     => l_event_id
380481  ,p_calculate_acctd_flag => l_calculate_acctd_flag
380482  ,p_calculate_g_l_flag => l_calculate_g_l_flag
380483  ,p_actual_flag => l_actual_flag
380484  ,p_balance_type_code => l_balance_type_code
380485  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
380486  
380487  , p_source_11 => l_array_source_11(Idx)
380488  , p_source_78 => l_array_source_78(Idx)
380489  , p_source_84 => l_array_source_84(Idx)
380490  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
380491  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
380492  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
380493  , p_source_91 => l_array_source_91(Idx)
380494  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
380495  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
380496  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
380497  , p_source_95 => l_array_source_95(Idx)
380498  );
380499 If(l_balance_type_code = 'A') THEN
380500   l_actual_gain_loss_ref := l_gain_or_loss_ref;
380501 END IF;
380502 
380503 --
380504 
380505       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
380506       -- or secondary ledger that has different currency with primary
380507       -- or alc that is calculated by sla
380508       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
380509             (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'))
380510 
380511 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
380512 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
380513           AND (l_actual_flag = 'A')) THEN
380514         XLA_AE_LINES_PKG.CreateGainOrLossLines(
380515           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
380516          ,p_application_id   => p_application_id
380517          ,p_amb_context_code => 'DEFAULT'
380518          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
380519          ,p_event_class_code => C_EVENT_CLASS_CODE
380520          ,p_event_type_code  => C_EVENT_TYPE_CODE
380521          
380522          ,p_gain_ccid        => -1
380523          ,p_loss_ccid        => -1
380524 
380525          ,p_actual_flag      => l_actual_flag
380526          ,p_enc_flag         => null
380527          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
380528          ,p_enc_g_l_ref      => null
380529          );
380530       END IF;
380531    END IF;
380532 END IF;
380533 
380534    ELSE
380535       --
380536       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
380537       --
380538       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
380539          trace
380540             (p_msg      => 'Trancaction revesal option is Y'
380541             ,p_level    => C_LEVEL_STATEMENT
380542             ,p_module   => l_log_module);
380543       END IF;
380544    END IF;
380545 
380546 END LOOP;
380547 l_result := XLA_AE_LINES_PKG.InsertLines ;
380548 end loop;
380549 close line_cur;
380550 
380551 
380552 --
380553 -- insert headers into xla_ae_headers_gt table
380554 --
380555 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
380556 
380557 -- insert into errors table here.
380558 
380559 END LOOP;
380560 
380561 --
380562 -- 4865292
380563 --
380564 -- Compare g_hdr_extract_count with event count in
380565 -- CreateHeadersAndLines.
380566 --
380567 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
380568 
380569 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
380570    trace (p_msg     => '# rows extracted from header extract objects '
380571                     || ' (running total): '
380572                     || g_hdr_extract_count
380573          ,p_level   => C_LEVEL_STATEMENT
380574          ,p_module  => l_log_module);
380575 END IF;
380576 
380577 CLOSE header_cur;
380578 --
380579 
380580 --
380581 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
380582    trace
380583       (p_msg      => 'END of EventClass_592'
380584       ,p_level    => C_LEVEL_PROCEDURE
380585       ,p_module   => l_log_module);
380586 END IF;
380587 --
380588 RETURN l_result;
380589 EXCEPTION
380590 WHEN xla_exceptions_pkg.application_exception THEN
380591    
380592 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
380593 
380594    
380595 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
380596 
380597    RAISE;
380598 
380599 WHEN NO_DATA_FOUND THEN
380600 
380601 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
380602 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
380603 
380604 FOR header_record IN header_cur
380605 LOOP
380606     l_array_header_events(header_record.event_id) := header_record.event_id;
380607 END LOOP;
380608 
380609 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
380610 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
380611 
380612 fnd_file.put_line(fnd_file.LOG, '                    ');
380613 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
380614 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
380615 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
380616 
380617 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
380618 LOOP
380619 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
380620 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
380621         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
380622 	END IF;
380623 END LOOP;
380624 
380625 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
380626 fnd_file.put_line(fnd_file.LOG, '                    ');
380627 
380628 
380629 xla_exceptions_pkg.raise_message
380630       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_592');
380631 
380632 
380633 WHEN OTHERS THEN
380634    xla_exceptions_pkg.raise_message
380635       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_592');
380636 END EventClass_592;
380637 --
380638 
380639 ---------------------------------------
380640 --
380641 -- PRIVATE PROCEDURE
380642 --         insert_sources_593
380643 --
380644 ----------------------------------------
380645 --
380646 PROCEDURE insert_sources_593(
380647                                 p_target_ledger_id       IN NUMBER
380648                               , p_language               IN VARCHAR2
380649                               , p_sla_ledger_id          IN NUMBER
380650                               , p_pad_start_date         IN DATE
380651                               , p_pad_end_date           IN DATE
380652                          )
380653 IS
380654 
380655 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_RI_INV';
380656 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
380657 p_apps_owner                   VARCHAR2(30);
380658 l_log_module                   VARCHAR2(240);
380659 BEGIN
380660 IF g_log_enabled THEN
380661       l_log_module := C_DEFAULT_MODULE||'.insert_sources_593';
380662 END IF;
380663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
380664 
380665       trace
380666          (p_msg      => 'BEGIN of insert_sources_593'
380667          ,p_level    => C_LEVEL_PROCEDURE
380668          ,p_module   => l_log_module);
380669 
380670 END IF;
380671 
380672 -- select APPS owner
380673 SELECT oracle_username
380674   INTO p_apps_owner
380675   FROM fnd_oracle_userid
380676  WHERE read_only_flag = 'U'
380677 ;
380678 
380679 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
380680       trace
380681          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
380682                         ' - p_language = '||p_language||
380683                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
380684                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
380685                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
380686                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
380687          ,p_level    => C_LEVEL_STATEMENT
380688          ,p_module   => l_log_module);
380689 END IF;
380690 
380691 
380692 --
380693 INSERT INTO xla_diag_sources --hdr1
380694 (
380695         event_id
380696       , ledger_id
380697       , sla_ledger_id
380698       , description_language
380699       , object_name
380700       , object_type_code
380701       , line_number
380702       , source_application_id
380703       , source_type_code
380704       , source_code
380705       , source_value
380706       , source_meaning
380707       , created_by
380708       , creation_date
380709       , last_update_date
380710       , last_updated_by
380711       , last_update_login
380712       , program_update_date
380713       , program_application_id
380714       , program_id
380715       , request_id
380716 )
380717 SELECT
380718         event_id
380719       , p_target_ledger_id
380720       , p_sla_ledger_id
380721       , p_language
380722       , object_name
380723       , object_type_code
380724       , line_number
380725       , source_application_id
380726       , source_type_code
380727       , source_code
380728       , SUBSTR(source_value ,1,1996)
380729       , SUBSTR(source_meaning,1,200)
380730       , xla_environment_pkg.g_Usr_Id
380731       , TRUNC(SYSDATE)
380732       , TRUNC(SYSDATE)
380733       , xla_environment_pkg.g_Usr_Id
380734       , xla_environment_pkg.g_Login_Id
380735       , TRUNC(SYSDATE)
380736       , xla_environment_pkg.g_Prog_Appl_Id
380737       , xla_environment_pkg.g_Prog_Id
380738       , xla_environment_pkg.g_Req_Id
380739   FROM (
380740        SELECT xet.event_id                  event_id
380741             , 0                             line_number
380742             , CASE r
380743                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
380744                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
380745                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
380746                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
380747                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
380748                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
380749                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
380750                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
380751                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
380752                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
380753                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
380754                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
380755                 WHEN 13 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
380756                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
380757                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
380758                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
380759                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
380760                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
380761                 WHEN 19 THEN 'PO_DISTS_REF_V' 
380762                 WHEN 20 THEN 'CST_XLA_INV_REF_V' 
380763                 WHEN 21 THEN 'CST_XLA_INV_REF_V' 
380764                 WHEN 22 THEN 'PO_HEADERS_REF_V' 
380765                 WHEN 23 THEN 'PSA_CST_XLA_UPG_V' 
380766                 WHEN 24 THEN 'CST_XLA_INV_REF_V' 
380767                 WHEN 25 THEN 'CST_XLA_INV_HEADERS_V' 
380768                 
380769                ELSE null
380770               END                           object_name
380771             , CASE r
380772                 WHEN 1 THEN 'HEADER' 
380773                 WHEN 2 THEN 'HEADER' 
380774                 WHEN 3 THEN 'HEADER' 
380775                 WHEN 4 THEN 'HEADER' 
380776                 WHEN 5 THEN 'HEADER' 
380777                 WHEN 6 THEN 'HEADER' 
380778                 WHEN 7 THEN 'HEADER' 
380779                 WHEN 8 THEN 'HEADER' 
380780                 WHEN 9 THEN 'HEADER' 
380781                 WHEN 10 THEN 'HEADER' 
380782                 WHEN 11 THEN 'HEADER' 
380783                 WHEN 12 THEN 'HEADER' 
380784                 WHEN 13 THEN 'HEADER' 
380785                 WHEN 14 THEN 'HEADER' 
380786                 WHEN 15 THEN 'HEADER' 
380787                 WHEN 16 THEN 'HEADER' 
380788                 WHEN 17 THEN 'HEADER' 
380789                 WHEN 18 THEN 'HEADER' 
380790                 WHEN 19 THEN 'HEADER' 
380791                 WHEN 20 THEN 'HEADER' 
380792                 WHEN 21 THEN 'HEADER' 
380793                 WHEN 22 THEN 'HEADER' 
380794                 WHEN 23 THEN 'HEADER' 
380795                 WHEN 24 THEN 'HEADER' 
380796                 WHEN 25 THEN 'HEADER' 
380797                 
380798                 ELSE null
380799               END                           object_type_code
380800             , CASE r
380801                 WHEN 1 THEN '707' 
380802                 WHEN 2 THEN '707' 
380803                 WHEN 3 THEN '707' 
380804                 WHEN 4 THEN '707' 
380805                 WHEN 5 THEN '707' 
380806                 WHEN 6 THEN '707' 
380807                 WHEN 7 THEN '707' 
380808                 WHEN 8 THEN '707' 
380809                 WHEN 9 THEN '707' 
380810                 WHEN 10 THEN '707' 
380811                 WHEN 11 THEN '707' 
380812                 WHEN 12 THEN '707' 
380813                 WHEN 13 THEN '707' 
380814                 WHEN 14 THEN '707' 
380815                 WHEN 15 THEN '707' 
380816                 WHEN 16 THEN '707' 
380817                 WHEN 17 THEN '707' 
380818                 WHEN 18 THEN '707' 
380819                 WHEN 19 THEN '201' 
380820                 WHEN 20 THEN '707' 
380821                 WHEN 21 THEN '707' 
380822                 WHEN 22 THEN '201' 
380823                 WHEN 23 THEN '707' 
380824                 WHEN 24 THEN '707' 
380825                 WHEN 25 THEN '707' 
380826                 
380827                 ELSE null
380828               END                           source_application_id
380829             , 'S'             source_type_code
380830             , CASE r
380831                 WHEN 1 THEN 'TRANSACTION_ID' 
380832                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
380833                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
380834                 WHEN 4 THEN 'TRANSACTION_UOM' 
380835                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
380836                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
380837                 WHEN 7 THEN 'PLA_EXPENSE_ACCOUNT' 
380838                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
380839                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
380840                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
380841                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
380842                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
380843                 WHEN 13 THEN 'INV_ORG_PUR_PRICE_VAR_ACCT' 
380844                 WHEN 14 THEN 'APPLIED_TO_APPL_ID' 
380845                 WHEN 15 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
380846                 WHEN 16 THEN 'APPLIED_TO_ENTITY_CODE' 
380847                 WHEN 17 THEN 'APPLIED_TO_PO_DOC_ID' 
380848                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
380849                 WHEN 19 THEN 'PO_BUDGET_ACCOUNT' 
380850                 WHEN 20 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
380851                 WHEN 21 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
380852                 WHEN 22 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
380853                 WHEN 23 THEN 'CST_ENCUM_UPG_OPTION' 
380854                 WHEN 24 THEN 'TXN_PO_DISTRIBUTION_ID' 
380855                 WHEN 25 THEN 'TRANSFER_TO_GL_INDICATOR' 
380856                 
380857                 ELSE null
380858               END                           source_code
380859             , CASE r
380860                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
380861                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
380862                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
380863                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
380864                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
380865                 WHEN 6 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
380866                 WHEN 7 THEN TO_CHAR(h8.PLA_EXPENSE_ACCOUNT)
380867                 WHEN 8 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
380868                 WHEN 9 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
380869                 WHEN 10 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
380870                 WHEN 11 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
380871                 WHEN 12 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
380872                 WHEN 13 THEN TO_CHAR(h3.INV_ORG_PUR_PRICE_VAR_ACCT)
380873                 WHEN 14 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
380874                 WHEN 15 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
380875                 WHEN 16 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
380876                 WHEN 17 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
380877                 WHEN 18 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
380878                 WHEN 19 THEN TO_CHAR(h9.PO_BUDGET_ACCOUNT)
380879                 WHEN 20 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
380880                 WHEN 21 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
380881                 WHEN 22 THEN TO_CHAR(h10.PURCH_ENCUMBRANCE_TYPE_ID)
380882                 WHEN 23 THEN TO_CHAR(h11.CST_ENCUM_UPG_OPTION)
380883                 WHEN 24 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
380884                 WHEN 25 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
380885                 
380886                 ELSE null
380887               END                           source_value
380888             , CASE r
380889                 WHEN 18 THEN fvl85.meaning
380890                 WHEN 25 THEN fvl114.meaning
380891                 
380892                 ELSE null
380893               END               source_meaning
380894         FROM xla_events_gt     xet  
380895       , CST_XLA_INV_HEADERS_V  h1
380896       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
380897       , CST_XLA_INV_REF_V  h4
380898       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
380899       , CST_XLA_INV_TXN_TYPES_REF_V  h7
380900       , CST_XLA_PLA_CATEGORY_REF_V  h8
380901       , PO_DISTS_REF_V  h9
380902       , PO_HEADERS_REF_V  h10
380903       , PSA_CST_XLA_UPG_V  h11
380904   , fnd_lookup_values    fvl85
380905   , fnd_lookup_values    fvl114
380906             ,(select rownum r from all_objects where rownum <= 25 and owner = p_apps_owner)
380907        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
380908          AND xet.event_type_code = C_EVENT_TYPE_CODE
380909             AND h1.event_id = xet.event_id
380910  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h6.inventory_item_id  (+) = h1.inventory_item_id  and h6.organization_id  (+) = h1.organization_id AND h7.inv_transaction_type_id = h1.transaction_type_id AND h8.pla_cat_organization_id  (+) = h1.organization_id 
380911 and h8.pla_cat_item_id          (+) = h1.inventory_item_id 
380912 and h8.pla_subinv_cg            (+) = h1.h_subinv_cg AND h4.txn_po_header_id = h9.po_header_id  (+)  and h4.txn_po_distribution_id = h9.po_distribution_id (+)  AND h4.txn_po_header_id = h10.po_header_id (+)  AND h4.rcv_transaction_id = h11.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
380913   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
380914   AND fvl85.view_application_id(+) = 700
380915   AND fvl85.language(+)            = USERENV('LANG')
380916      AND fvl114.lookup_type(+)         = 'YES_NO'
380917   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
380918   AND fvl114.view_application_id(+) = 0
380919   AND fvl114.language(+)            = USERENV('LANG')
380920   
380921 )
380922 ;
380923 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
380924 
380925       trace
380926          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
380927          ,p_level    => C_LEVEL_STATEMENT
380928          ,p_module   => l_log_module);
380929 
380930 END IF;
380931 --
380932 
380933 
380934 
380935 --
380936 INSERT INTO xla_diag_sources --line1
380937 (
380938         event_id
380939       , ledger_id
380940       , sla_ledger_id
380941       , description_language
380942       , object_name
380943       , object_type_code
380944       , line_number
380945       , source_application_id
380946       , source_type_code
380947       , source_code
380948       , source_value
380949       , source_meaning
380950       , created_by
380951       , creation_date
380952       , last_update_date
380953       , last_updated_by
380954       , last_update_login
380955       , program_update_date
380956       , program_application_id
380957       , program_id
380958       , request_id
380959 )
380960 SELECT  event_id
380961       , p_target_ledger_id
380962       , p_sla_ledger_id
380963       , p_language
380964       , object_name
380965       , object_type_code
380966       , line_number
380967       , source_application_id
380968       , source_type_code
380969       , source_code
380970       , SUBSTR(source_value,1,1996)
380971       , SUBSTR(source_meaning,1,200)
380972       , xla_environment_pkg.g_Usr_Id
380973       , TRUNC(SYSDATE)
380974       , TRUNC(SYSDATE)
380975       , xla_environment_pkg.g_Usr_Id
380976       , xla_environment_pkg.g_Login_Id
380977       , TRUNC(SYSDATE)
380978       , xla_environment_pkg.g_Prog_Appl_Id
380979       , xla_environment_pkg.g_Prog_Id
380980       , xla_environment_pkg.g_Req_Id
380981   FROM (
380982        SELECT xet.event_id                  event_id
380983             , l2.line_number                 line_number
380984             , CASE r
380985                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
380986                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
380987                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
380988                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
380989                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
380990                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
380991                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
380992                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
380993                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
380994                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
380995                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
380996                 WHEN 12 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
380997                 
380998                ELSE null
380999               END                           object_name
381000             , CASE r
381001                 WHEN 1 THEN 'LINE' 
381002                 WHEN 2 THEN 'LINE' 
381003                 WHEN 3 THEN 'LINE' 
381004                 WHEN 4 THEN 'LINE' 
381005                 WHEN 5 THEN 'LINE' 
381006                 WHEN 6 THEN 'LINE' 
381007                 WHEN 7 THEN 'LINE' 
381008                 WHEN 8 THEN 'LINE' 
381009                 WHEN 9 THEN 'LINE' 
381010                 WHEN 10 THEN 'LINE' 
381011                 WHEN 11 THEN 'LINE' 
381012                 WHEN 12 THEN 'LINE' 
381013                 
381014                 ELSE null
381015               END                           object_type_code
381016             , CASE r
381017                 WHEN 1 THEN '707' 
381018                 WHEN 2 THEN '707' 
381019                 WHEN 3 THEN '707' 
381020                 WHEN 4 THEN '707' 
381021                 WHEN 5 THEN '707' 
381022                 WHEN 6 THEN '707' 
381023                 WHEN 7 THEN '707' 
381024                 WHEN 8 THEN '707' 
381025                 WHEN 9 THEN '707' 
381026                 WHEN 10 THEN '707' 
381027                 WHEN 11 THEN '707' 
381028                 WHEN 12 THEN '707' 
381029                 
381030                 ELSE null
381031               END                           source_application_id
381032             , 'S'             source_type_code
381033             , CASE r
381034                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
381035                 WHEN 2 THEN 'COST_ELEMENT_ID' 
381036                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
381037                 WHEN 4 THEN 'CURRENCY_CODE' 
381038                 WHEN 5 THEN 'ENTERED_AMOUNT' 
381039                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
381040                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
381041                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
381042                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
381043                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
381044                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
381045                 WHEN 12 THEN 'ASSET_INVENTORY' 
381046                 
381047                 ELSE null
381048               END                           source_code
381049             , CASE r
381050                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
381051                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
381052                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
381053                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
381054                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
381055                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
381056                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
381057                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
381058                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
381059                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
381060                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
381061                 WHEN 12 THEN TO_CHAR(l5.ASSET_INVENTORY)
381062                 
381063                 ELSE null
381064               END                           source_value
381065             , CASE r
381066                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
381067                           1009615
381068                          ,TO_CHAR(l2.COST_ELEMENT_ID)
381069                          ,'COST_ELEMENT_ID'
381070                          ,'S'
381071                          ,707)
381072                 WHEN 12 THEN fvl110.meaning
381073                 
381074                 ELSE null
381075               END               source_meaning
381076          FROM  xla_events_gt     xet  
381077         , CST_XLA_INV_LINES_V  l2
381078         , CST_XLA_INV_SEC_INVS_REF_V  l5
381079   , fnd_lookup_values    fvl110
381080             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
381081         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
381082           AND xet.event_type_code = C_EVENT_TYPE_CODE
381083             AND l2.event_id          = xet.event_id
381084  AND l5.subinventory  (+) = l2.subinventory_code  and l5.subinv_organization_id  (+) = l2.l_organization_id   AND fvl110.lookup_type(+)         = 'YES_NO'
381085   AND fvl110.lookup_code(+)         = l5.ASSET_INVENTORY
381086   AND fvl110.view_application_id(+) = 0
381087   AND fvl110.language(+)            = USERENV('LANG')
381088   
381089 )
381090 ;
381091 --
381092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
381093 
381094       trace
381095          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
381096          ,p_level    => C_LEVEL_STATEMENT
381097          ,p_module   => l_log_module);
381098 
381099 END IF;
381100 
381101 
381102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
381103       trace
381104          (p_msg      => 'END of insert_sources_593'
381105          ,p_level    => C_LEVEL_PROCEDURE
381106          ,p_module   => l_log_module);
381107 END IF;
381108 EXCEPTION
381109   WHEN xla_exceptions_pkg.application_exception THEN
381110       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
381111             trace
381112                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
381113                ,p_level    => C_LEVEL_EXCEPTION
381114                ,p_module   => l_log_module);
381115       END IF;
381116       RAISE;
381117   WHEN OTHERS THEN
381118       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
381119             trace
381120                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
381121                ,p_level    => C_LEVEL_EXCEPTION
381122                ,p_module   => l_log_module);
381123        END IF;
381124        xla_exceptions_pkg.raise_message
381125            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_593');
381126 END insert_sources_593;
381127 --
381128 
381129 ---------------------------------------
381130 --
381131 -- PRIVATE FUNCTION
381132 --         EventType_593
381133 --
381134 ----------------------------------------
381135 --
381136 FUNCTION EventType_593
381137        (p_application_id         IN NUMBER
381138        ,p_base_ledger_id         IN NUMBER
381139        ,p_target_ledger_id       IN NUMBER
381140        ,p_language               IN VARCHAR2
381141        ,p_currency_code          IN VARCHAR2
381142        ,p_sla_ledger_id          IN NUMBER
381143        ,p_pad_start_date         IN DATE
381144        ,p_pad_end_date           IN DATE
381145        ,p_primary_ledger_id      IN NUMBER)
381146 RETURN BOOLEAN IS
381147 --
381148 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_RI_INV';
381149 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
381150 
381151 l_calculate_acctd_flag   VARCHAR2(1) :='N';
381152 l_calculate_g_l_flag     VARCHAR2(1) :='N';
381153 --
381154 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381155 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381156 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
381157 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
381158 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381159 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
381160 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
381161 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381162 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
381163 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
381164 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381165 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381166 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381167 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
381168 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
381169 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
381170 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
381171 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
381172 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
381173 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
381174 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
381175 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
381176 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
381177 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
381178 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
381179 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
381180 
381181 l_event_id                             NUMBER;
381182 l_previous_event_id                    NUMBER;
381183 l_first_event_id                       NUMBER;
381184 l_last_event_id                        NUMBER;
381185 
381186 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
381187 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
381188 --
381189 --
381190 l_result                    BOOLEAN := TRUE;
381191 l_rows                      NUMBER  := 1000;
381192 l_event_type_name           VARCHAR2(80) := 'Return to Receiving Inspection from Inventory';
381193 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
381194 l_description               VARCHAR2(4000);
381195 l_transaction_reversal      NUMBER;
381196 l_ae_header_id              NUMBER;
381197 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
381198 l_log_module                VARCHAR2(240);
381199 --
381200 l_acct_reversal_source      VARCHAR2(30);
381201 l_trx_reversal_source       VARCHAR2(30);
381202 
381203 l_continue_with_lines       BOOLEAN := TRUE;
381204 --
381205 l_acc_rev_gl_date_source    DATE;                      -- 4262811
381206 --
381207 type t_array_event_id is table of number index by binary_integer;
381208 
381209 l_rec_array_event                    t_rec_array_event;
381210 l_null_rec_array_event               t_rec_array_event;
381211 l_array_ae_header_id                 xla_number_array_type;
381212 l_actual_flag                        VARCHAR2(1) := NULL;
381213 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
381214 l_balance_type_code                  VARCHAR2(1) :=NULL;
381215 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
381216 
381217 --
381218 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
381219 --
381220 
381221 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
381222 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
381223 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
381224 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
381225 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
381226 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381227 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381228 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381229 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381230 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381231 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381232 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381233 TYPE t_array_source_58 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_PUR_PRICE_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
381234 TYPE t_array_source_79 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
381235 TYPE t_array_source_80 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
381236 TYPE t_array_source_81 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
381237 TYPE t_array_source_83 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
381238 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
381239 TYPE t_array_source_86 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
381240 TYPE t_array_source_87 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
381241 TYPE t_array_source_89 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
381242 TYPE t_array_source_96 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
381243 TYPE t_array_source_100 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
381244 TYPE t_array_source_101 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
381245 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
381246 
381247 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
381248 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
381249 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
381250 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
381251 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
381252 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
381253 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
381254 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
381255 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
381256 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
381257 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
381258 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
381259 
381260 l_array_source_1              t_array_source_1;
381261 l_array_source_2              t_array_source_2;
381262 l_array_source_3              t_array_source_3;
381263 l_array_source_4              t_array_source_4;
381264 l_array_source_5              t_array_source_5;
381265 l_array_source_22              t_array_source_22;
381266 l_array_source_24              t_array_source_24;
381267 l_array_source_41              t_array_source_41;
381268 l_array_source_42              t_array_source_42;
381269 l_array_source_43              t_array_source_43;
381270 l_array_source_44              t_array_source_44;
381271 l_array_source_45              t_array_source_45;
381272 l_array_source_58              t_array_source_58;
381273 l_array_source_79              t_array_source_79;
381274 l_array_source_80              t_array_source_80;
381275 l_array_source_81              t_array_source_81;
381276 l_array_source_83              t_array_source_83;
381277 l_array_source_85              t_array_source_85;
381278 l_array_source_85_meaning      t_array_lookup_meaning;
381279 l_array_source_86              t_array_source_86;
381280 l_array_source_87              t_array_source_87;
381281 l_array_source_89              t_array_source_89;
381282 l_array_source_96              t_array_source_96;
381283 l_array_source_100              t_array_source_100;
381284 l_array_source_101              t_array_source_101;
381285 l_array_source_114              t_array_source_114;
381286 l_array_source_114_meaning      t_array_lookup_meaning;
381287 
381288 l_array_source_11      t_array_source_11;
381289 l_array_source_15      t_array_source_15;
381290 l_array_source_84      t_array_source_84;
381291 l_array_source_88      t_array_source_88;
381292 l_array_source_91      t_array_source_91;
381293 l_array_source_92      t_array_source_92;
381294 l_array_source_93      t_array_source_93;
381295 l_array_source_94      t_array_source_94;
381296 l_array_source_95      t_array_source_95;
381297 l_array_source_97      t_array_source_97;
381298 l_array_source_108      t_array_source_108;
381299 l_array_source_110      t_array_source_110;
381300 l_array_source_110_meaning      t_array_lookup_meaning;
381301 
381302 --
381303 CURSOR header_cur
381304 IS
381305 SELECT /*+ leading(xet) cardinality(xet,1) */
381306 -- Event Type Code: RET_RI_INV
381307 -- Event Class Code: PURCHASE_ORDER
381308     xet.entity_id
381309   , xet.legal_entity_id
381310   , xet.entity_code
381311   , xet.transaction_number
381312   , xet.event_id
381313   , xet.event_class_code
381314   , xet.event_type_code
381315   , xet.event_number
381316   , xet.event_date
381317   , xet.transaction_date
381318   , xet.reference_num_1
381319   , xet.reference_num_2
381320   , xet.reference_num_3
381321   , xet.reference_num_4
381322   , xet.reference_char_1
381323   , xet.reference_char_2
381324   , xet.reference_char_3
381325   , xet.reference_char_4
381326   , xet.reference_date_1
381327   , xet.reference_date_2
381328   , xet.reference_date_3
381329   , xet.reference_date_4
381330   , xet.event_created_by
381331   , xet.budgetary_control_flag 
381332   , h1.TRANSACTION_ID    source_1
381333   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
381334   , h4.TRANSACTION_QUANTITY    source_3
381335   , h4.TRANSACTION_UOM    source_4
381336   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
381337   , h8.PLA_BRIDGING_ACCOUNT    source_22
381338   , h8.PLA_EXPENSE_ACCOUNT    source_24
381339   , h8.PLA_MATERIAL_ACCOUNT    source_41
381340   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
381341   , h8.PLA_RESOURCE_ACCOUNT    source_43
381342   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
381343   , h8.PLA_OVERHEAD_ACCOUNT    source_45
381344   , h3.INV_ORG_PUR_PRICE_VAR_ACCT    source_58
381345   , h4.APPLIED_TO_APPL_ID    source_79
381346   , h4.APPLIED_TO_DIST_LINK_TYPE    source_80
381347   , h4.APPLIED_TO_ENTITY_CODE    source_81
381348   , h4.APPLIED_TO_PO_DOC_ID    source_83
381349   , h1.DISTRIBUTION_TYPE    source_85
381350   , fvl85.meaning   source_85_meaning
381351   , h9.PO_BUDGET_ACCOUNT    source_86
381352   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_87
381353   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_89
381354   , h10.PURCH_ENCUMBRANCE_TYPE_ID    source_96
381355   , h11.CST_ENCUM_UPG_OPTION    source_100
381356   , h4.TXN_PO_DISTRIBUTION_ID    source_101
381357   , h1.TRANSFER_TO_GL_INDICATOR    source_114
381358   , fvl114.meaning   source_114_meaning
381359   FROM xla_events_gt     xet 
381360   , CST_XLA_INV_HEADERS_V  h1
381361   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
381362   , CST_XLA_INV_REF_V  h4
381363   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
381364   , CST_XLA_INV_TXN_TYPES_REF_V  h7
381365   , CST_XLA_PLA_CATEGORY_REF_V  h8
381366   , PO_DISTS_REF_V  h9
381367   , PO_HEADERS_REF_V  h10
381368   , PSA_CST_XLA_UPG_V  h11
381369   , fnd_lookup_values    fvl85
381370   , fnd_lookup_values    fvl114
381371  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
381372    and xet.event_type_code = C_EVENT_TYPE_CODE
381373    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
381374  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
381375 AND h8.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
381376 AND h8.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG AND h4.txn_po_header_id = h9.po_header_id  (+)  AND h4.txn_po_distribution_id = h9.po_distribution_id (+)  AND h4.txn_po_header_id = h10.po_header_id (+)  AND h4.rcv_transaction_id = h11.transaction_id (+)    AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
381377   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
381378   AND fvl85.view_application_id(+) = 700
381379   AND fvl85.language(+)            = USERENV('LANG')
381380      AND fvl114.lookup_type(+)         = 'YES_NO'
381381   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
381382   AND fvl114.view_application_id(+) = 0
381383   AND fvl114.language(+)            = USERENV('LANG')
381384   
381385  ORDER BY event_id
381386 ;
381387 
381388 
381389 --
381390 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
381391 IS
381392 SELECT /*+ leading(xet) cardinality(xet,1) */
381393 -- Event Type Code: RET_RI_INV
381394 -- Event Class Code: PURCHASE_ORDER
381395     xet.entity_id
381396    ,xet.legal_entity_id
381397    ,xet.entity_code
381398    ,xet.transaction_number
381399    ,xet.event_id
381400    ,xet.event_class_code
381401    ,xet.event_type_code
381402    ,xet.event_number
381403    ,xet.event_date
381404    ,xet.transaction_date
381405    ,xet.reference_num_1
381406    ,xet.reference_num_2
381407    ,xet.reference_num_3
381408    ,xet.reference_num_4
381409    ,xet.reference_char_1
381410    ,xet.reference_char_2
381411    ,xet.reference_char_3
381412    ,xet.reference_char_4
381413    ,xet.reference_date_1
381414    ,xet.reference_date_2
381415    ,xet.reference_date_3
381416    ,xet.reference_date_4
381417    ,xet.event_created_by
381418    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
381419   , l2.CODE_COMBINATION_ID    source_11
381420   , l2.COST_ELEMENT_ID    source_15
381421   , l2.DISTRIBUTION_IDENTIFIER    source_84
381422   , l2.CURRENCY_CODE    source_88
381423   , l2.ENTERED_AMOUNT    source_91
381424   , l2.CURRENCY_CONVERSION_DATE    source_92
381425   , l2.CURRENCY_CONVERSION_RATE    source_93
381426   , l2.CURRENCY_CONVERSION_TYPE    source_94
381427   , l2.ACCOUNTED_AMOUNT    source_95
381428   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
381429   , l2.L_ORGANIZATION_CODE    source_108
381430   , l5.ASSET_INVENTORY    source_110
381431   , fvl110.meaning   source_110_meaning
381432   FROM xla_events_gt     xet 
381433   , CST_XLA_INV_LINES_V  l2
381434   , CST_XLA_INV_SEC_INVS_REF_V  l5
381435   , fnd_lookup_values    fvl110
381436  WHERE xet.event_id between x_first_event_id and x_last_event_id
381437    and xet.event_date between p_pad_start_date and p_pad_end_date
381438    and xet.event_type_code = C_EVENT_TYPE_CODE
381439    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
381440  AND l5.SUBINVENTORY  (+) = l2.SUBINVENTORY_CODE  AND l5.SUBINV_ORGANIZATION_ID  (+) = l2.L_ORGANIZATION_ID   AND fvl110.lookup_type(+)         = 'YES_NO'
381441   AND fvl110.lookup_code(+)         = l5.ASSET_INVENTORY
381442   AND fvl110.view_application_id(+) = 0
381443   AND fvl110.language(+)            = USERENV('LANG')
381444   ;
381445 
381446 --
381447 BEGIN
381448 IF g_log_enabled THEN
381449    l_log_module := C_DEFAULT_MODULE||'.EventType_593';
381450 END IF;
381451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
381452    trace
381453       (p_msg      => 'BEGIN of EventType_593'
381454       ,p_level    => C_LEVEL_PROCEDURE
381455       ,p_module   => l_log_module);
381456 END IF;
381457 
381458 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
381459    trace
381460       (p_msg      => 'p_application_id = '||p_application_id||
381461                      ' - p_base_ledger_id = '||p_base_ledger_id||
381462                      ' - p_target_ledger_id  = '||p_target_ledger_id||
381463                      ' - p_language = '||p_language||
381464                      ' - p_currency_code = '||p_currency_code||
381465                      ' - p_sla_ledger_id = '||p_sla_ledger_id
381466       ,p_level    => C_LEVEL_STATEMENT
381467       ,p_module   => l_log_module);
381468 END IF;
381469 --
381470 -- initialze arrays
381471 --
381472 g_array_event.DELETE;
381473 l_rec_array_event := l_null_rec_array_event;
381474 --
381475 --------------------------------------
381476 -- 4262811 Initialze MPA Line Number
381477 --------------------------------------
381478 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
381479 
381480 --
381481 
381482 --
381483 OPEN header_cur;
381484 --
381485 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
381486    trace
381487    (p_msg      => 'SQL - FETCH header_cur'
381488    ,p_level    => C_LEVEL_STATEMENT
381489    ,p_module   => l_log_module);
381490 END IF;
381491 --
381492 LOOP
381493 FETCH header_cur BULK COLLECT INTO
381494         l_array_entity_id
381495       , l_array_legal_entity_id
381496       , l_array_entity_code
381497       , l_array_transaction_num
381498       , l_array_event_id
381499       , l_array_class_code
381500       , l_array_event_type
381501       , l_array_event_number
381502       , l_array_event_date
381503       , l_array_transaction_date
381504       , l_array_reference_num_1
381505       , l_array_reference_num_2
381506       , l_array_reference_num_3
381507       , l_array_reference_num_4
381508       , l_array_reference_char_1
381509       , l_array_reference_char_2
381510       , l_array_reference_char_3
381511       , l_array_reference_char_4
381512       , l_array_reference_date_1
381513       , l_array_reference_date_2
381514       , l_array_reference_date_3
381515       , l_array_reference_date_4
381516       , l_array_event_created_by
381517       , l_array_budgetary_control_flag 
381518       , l_array_source_1
381519       , l_array_source_2
381520       , l_array_source_3
381521       , l_array_source_4
381522       , l_array_source_5
381523       , l_array_source_22
381524       , l_array_source_24
381525       , l_array_source_41
381526       , l_array_source_42
381527       , l_array_source_43
381528       , l_array_source_44
381529       , l_array_source_45
381530       , l_array_source_58
381531       , l_array_source_79
381532       , l_array_source_80
381533       , l_array_source_81
381534       , l_array_source_83
381535       , l_array_source_85
381536       , l_array_source_85_meaning
381537       , l_array_source_86
381538       , l_array_source_87
381539       , l_array_source_89
381540       , l_array_source_96
381541       , l_array_source_100
381542       , l_array_source_101
381543       , l_array_source_114
381544       , l_array_source_114_meaning
381545       LIMIT l_rows;
381546 --
381547 IF (C_LEVEL_EVENT >= g_log_level) THEN
381548    trace
381549    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
381550    ,p_level    => C_LEVEL_EVENT
381551    ,p_module   => l_log_module);
381552 END IF;
381553 --
381554 EXIT WHEN l_array_entity_id.COUNT = 0;
381555 
381556 -- initialize arrays
381557 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
381558 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
381559 
381560 --
381561 -- Bug 4458708
381562 --
381563 XLA_AE_LINES_PKG.g_LineNumber := 0;
381564 
381565 
381566 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
381567 g_last_hdr_idx := l_array_event_id.LAST;
381568 --
381569 -- loop for the headers. Each iteration is for each header extract row
381570 -- fetched in header cursor
381571 --
381572 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
381573 
381574 --
381575 -- set event info as cache for other routines to refer event attributes
381576 --
381577 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
381578    (p_application_id           => p_application_id
381579    ,p_primary_ledger_id        => p_primary_ledger_id
381580    ,p_base_ledger_id           => p_base_ledger_id
381581    ,p_target_ledger_id         => p_target_ledger_id
381582    ,p_entity_id                => l_array_entity_id(hdr_idx)
381583    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
381584    ,p_entity_code              => l_array_entity_code(hdr_idx)
381585    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
381586    ,p_event_id                 => l_array_event_id(hdr_idx)
381587    ,p_event_class_code         => l_array_class_code(hdr_idx)
381588    ,p_event_type_code          => l_array_event_type(hdr_idx)
381589    ,p_event_number             => l_array_event_number(hdr_idx)
381590    ,p_event_date               => l_array_event_date(hdr_idx)
381591    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
381592    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
381593    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
381594    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
381595    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
381596    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
381597    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
381598    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
381599    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
381600    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
381601    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
381602    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
381603    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
381604    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
381605    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
381606 
381607 --
381608 -- set the status of entry to C_VALID (0)
381609 --
381610 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
381611 
381612 --
381613 -- initialize a row for ae header
381614 --
381615 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
381616 
381617 l_event_id := l_array_event_id(hdr_idx);
381618 
381619 --
381620 -- storing the hdr_idx for event. May be used by line cursor.
381621 --
381622 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
381623 
381624 --
381625 -- store sources from header extract. This can be improved to
381626 -- store only those sources from header extract that may be used in lines
381627 --
381628 
381629 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
381630 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
381631 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
381632 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
381633 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
381634 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
381635 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
381636 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
381637 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
381638 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
381639 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
381640 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
381641 g_array_event(l_event_id).array_value_num('source_58') := l_array_source_58(hdr_idx);
381642 g_array_event(l_event_id).array_value_num('source_79') := l_array_source_79(hdr_idx);
381643 g_array_event(l_event_id).array_value_char('source_80') := l_array_source_80(hdr_idx);
381644 g_array_event(l_event_id).array_value_char('source_81') := l_array_source_81(hdr_idx);
381645 g_array_event(l_event_id).array_value_num('source_83') := l_array_source_83(hdr_idx);
381646 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
381647 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
381648 g_array_event(l_event_id).array_value_num('source_86') := l_array_source_86(hdr_idx);
381649 g_array_event(l_event_id).array_value_num('source_87') := l_array_source_87(hdr_idx);
381650 g_array_event(l_event_id).array_value_num('source_89') := l_array_source_89(hdr_idx);
381651 g_array_event(l_event_id).array_value_num('source_96') := l_array_source_96(hdr_idx);
381652 g_array_event(l_event_id).array_value_char('source_100') := l_array_source_100(hdr_idx);
381653 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
381654 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
381655 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
381656 
381657 --
381658 -- initilaize the status of ae headers for diffrent balance types
381659 -- the status is initialised to C_NOT_CREATED (2)
381660 --
381661 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
381662 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
381663 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
381664 
381665 --
381666 -- call api to validate and store accounting attributes for header
381667 --
381668 
381669 ------------------------------------------------------------
381670 -- Accrual Reversal : to get date for Standard Source (NONE)
381671 ------------------------------------------------------------
381672 l_acc_rev_gl_date_source := NULL;
381673 
381674      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
381675       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_96');
381676      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
381677       l_rec_acct_attrs.array_date_value(2) := 
381678 xla_ae_sources_pkg.GetSystemSourceDate(
381679    p_source_code           => 'XLA_REFERENCE_DATE_1'
381680  , p_source_type_code      => 'Y'
381681  , p_source_application_id =>  602
381682 );
381683      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
381684       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_114');
381685 
381686 
381687 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
381688 
381689 XLA_AE_HEADER_PKG.SetJeCategoryName;
381690 
381691 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
381692 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
381693 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
381694 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
381695 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
381696 
381697 
381698 --
381699 xla_ae_header_pkg.SetHdrDescription(
381700    p_description => Description_1 (
381701    p_application_id => p_application_id 
381702  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
381703  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
381704  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
381705  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
381706  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
381707    )
381708 );
381709 --
381710 
381711 -- No header level analytical criteria
381712 
381713 --
381714 --accounting attribute enhancement, bug 3612931
381715 --
381716 l_trx_reversal_source := SUBSTR(NULL, 1,30);
381717 
381718 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
381719    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
381720 
381721    xla_accounting_err_pkg.build_message
381722       (p_appli_s_name            => 'XLA'
381723       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
381724       ,p_token_1                 => 'ACCT_ATTR_NAME'
381725       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
381726       ,p_token_2                 => 'PRODUCT_NAME'
381727       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
381728       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
381729       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
381730       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
381731 
381732 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
381733    --
381734    -- following sets the accounting attributes needed to reverse
381735    -- accounting for a distributeion
381736    --
381737    xla_ae_lines_pkg.SetTrxReversalAttrs
381738       (p_event_id              => l_event_id
381739       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
381740       ,p_trx_reversal_source   => l_trx_reversal_source);
381741 
381742 END IF;
381743 
381744 
381745 ----------------------------------------------------------------
381746 -- 4262811 -  update the header statuses to invalid in need be
381747 ----------------------------------------------------------------
381748 --
381749 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
381750 
381751 
381752   -----------------------------------------------
381753   -- No accrual reversal for the event class/type
381754   -----------------------------------------------
381755 ----------------------------------------------------------------
381756 
381757 --
381758 -- this ends the header loop iteration for one bulk fetch
381759 --
381760 END LOOP;
381761 
381762 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
381763 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
381764 
381765 --
381766 -- insert dummy rows into lines gt table that were created due to
381767 -- transaction reversals
381768 --
381769 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
381770    l_result := XLA_AE_LINES_PKG.InsertLines;
381771 END IF;
381772 
381773 --
381774 -- reset the temp_line_num for each set of events fetched from header
381775 -- cursor rather than doing it for each new event in line cursor
381776 -- Bug 3939231
381777 --
381778 xla_ae_lines_pkg.g_temp_line_num := 0;
381779 
381780 
381781 
381782 --
381783 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
381784 --
381785 --
381786 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
381787 
381788       trace
381789          (p_msg      => 'SQL - FETCH line_cur'
381790          ,p_level    => C_LEVEL_STATEMENT
381791          ,p_module   => l_log_module);
381792 
381793 END IF;
381794 --
381795 --
381796 LOOP
381797   --
381798   FETCH line_cur BULK COLLECT INTO
381799         l_array_entity_id
381800       , l_array_legal_entity_id
381801       , l_array_entity_code
381802       , l_array_transaction_num
381803       , l_array_event_id
381804       , l_array_class_code
381805       , l_array_event_type
381806       , l_array_event_number
381807       , l_array_event_date
381808       , l_array_transaction_date
381809       , l_array_reference_num_1
381810       , l_array_reference_num_2
381811       , l_array_reference_num_3
381812       , l_array_reference_num_4
381813       , l_array_reference_char_1
381814       , l_array_reference_char_2
381815       , l_array_reference_char_3
381816       , l_array_reference_char_4
381817       , l_array_reference_date_1
381818       , l_array_reference_date_2
381819       , l_array_reference_date_3
381820       , l_array_reference_date_4
381821       , l_array_event_created_by
381822       , l_array_budgetary_control_flag
381823       , l_array_extract_line_num 
381824       , l_array_source_11
381825       , l_array_source_15
381826       , l_array_source_84
381827       , l_array_source_88
381828       , l_array_source_91
381829       , l_array_source_92
381830       , l_array_source_93
381831       , l_array_source_94
381832       , l_array_source_95
381833       , l_array_source_97
381834       , l_array_source_108
381835       , l_array_source_110
381836       , l_array_source_110_meaning
381837       LIMIT l_rows;
381838 
381839   --
381840   IF (C_LEVEL_EVENT >= g_log_level) THEN
381841             trace
381842                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
381843                ,p_level    => C_LEVEL_EVENT
381844                ,p_module   => l_log_module);
381845   END IF;
381846   --
381847   EXIT WHEN l_array_entity_id.count = 0;
381848 
381849   XLA_AE_LINES_PKG.g_rec_lines := null;
381850 
381851 --
381852 -- Bug 4458708
381853 --
381854 XLA_AE_LINES_PKG.g_LineNumber := 0;
381855 --
381856 --
381857 
381858 FOR Idx IN 1..l_array_event_id.count LOOP
381859    --
381860    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
381861    --
381862    l_event_id := l_array_event_id(idx);  -- 5648433
381863 
381864    --
381865    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
381866    --
381867 
381868    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
381869              (g_array_event(l_event_id).array_value_num('header_index'))
381870          ,'N'
381871          ) <> 'Y'
381872    THEN
381873       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
381874          trace
381875             (p_msg      => 'Trancaction revesal option is not Y '
381876             ,p_level    => C_LEVEL_STATEMENT
381877             ,p_module   => l_log_module);
381878       END IF;
381879 
381880 --
381881 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
381882 --
381883 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
381884 --
381885 -- set event info as cache for other routines to refer event attributes
381886 --
381887 
381888 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
381889    l_previous_event_id := l_event_id;
381890 
381891    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
381892       (p_application_id           => p_application_id
381893       ,p_primary_ledger_id        => p_primary_ledger_id
381894       ,p_base_ledger_id           => p_base_ledger_id
381895       ,p_target_ledger_id         => p_target_ledger_id
381896       ,p_entity_id                => l_array_entity_id(Idx)
381897       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
381898       ,p_entity_code              => l_array_entity_code(Idx)
381899       ,p_transaction_num          => l_array_transaction_num(Idx)
381900       ,p_event_id                 => l_array_event_id(Idx)
381901       ,p_event_class_code         => l_array_class_code(Idx)
381902       ,p_event_type_code          => l_array_event_type(Idx)
381903       ,p_event_number             => l_array_event_number(Idx)
381904       ,p_event_date               => l_array_event_date(Idx)
381905       ,p_transaction_date         => l_array_transaction_date(Idx)
381906       ,p_reference_num_1          => l_array_reference_num_1(Idx)
381907       ,p_reference_num_2          => l_array_reference_num_2(Idx)
381908       ,p_reference_num_3          => l_array_reference_num_3(Idx)
381909       ,p_reference_num_4          => l_array_reference_num_4(Idx)
381910       ,p_reference_char_1         => l_array_reference_char_1(Idx)
381911       ,p_reference_char_2         => l_array_reference_char_2(Idx)
381912       ,p_reference_char_3         => l_array_reference_char_3(Idx)
381913       ,p_reference_char_4         => l_array_reference_char_4(Idx)
381914       ,p_reference_date_1         => l_array_reference_date_1(Idx)
381915       ,p_reference_date_2         => l_array_reference_date_2(Idx)
381916       ,p_reference_date_3         => l_array_reference_date_3(Idx)
381917       ,p_reference_date_4         => l_array_reference_date_4(Idx)
381918       ,p_event_created_by         => l_array_event_created_by(Idx)
381919       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
381920        --
381921 END IF;
381922 
381923 
381924 
381925 --
381926 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
381927 
381928 l_acct_reversal_source := SUBSTR(NULL, 1,30);
381929 
381930 IF l_continue_with_lines THEN
381931    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
381932       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
381933 
381934       xla_accounting_err_pkg.build_message
381935          (p_appli_s_name            => 'XLA'
381936          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
381937          ,p_token_1                 => 'LINE_NUMBER'
381938          ,p_value_1                 => l_array_extract_line_num(Idx)
381939          ,p_token_2                 => 'PRODUCT_NAME'
381940          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
381941          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
381942          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
381943          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
381944 
381945    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
381946       --
381947       -- following sets the accounting attributes needed to reverse
381948       -- accounting for a distributeion
381949       --
381950 
381951       --
381952       -- 5217187
381953       --
381954       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
381955       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
381956                                        g_array_event(l_event_id).array_value_num('header_index'));
381957       --
381958       --
381959 
381960       -- No reversal code generated
381961 
381962       xla_ae_lines_pkg.SetAcctReversalAttrs
381963          (p_event_id             => l_event_id
381964          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
381965          ,p_calculate_acctd_flag => l_calculate_acctd_flag
381966          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
381967    END IF;
381968 
381969    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
381970        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
381971 
381972 --
381973 AcctLineType_49 (
381974  p_application_id  => p_application_id
381975  ,p_event_id     => l_event_id
381976  ,p_calculate_acctd_flag => l_calculate_acctd_flag
381977  ,p_calculate_g_l_flag => l_calculate_g_l_flag
381978  ,p_actual_flag => l_actual_flag
381979  ,p_balance_type_code => l_balance_type_code
381980  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
381981  
381982  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
381983  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
381984  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
381985  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
381986  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
381987  , p_source_11 => l_array_source_11(Idx)
381988  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
381989  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
381990  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
381991  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
381992  , p_source_84 => l_array_source_84(Idx)
381993  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
381994  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
381995  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
381996  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
381997  , p_source_88 => l_array_source_88(Idx)
381998  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
381999  , p_source_91 => l_array_source_91(Idx)
382000  , p_source_92 => l_array_source_92(Idx)
382001  , p_source_93 => l_array_source_93(Idx)
382002  , p_source_94 => l_array_source_94(Idx)
382003  , p_source_95 => l_array_source_95(Idx)
382004  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382005  , p_source_97 => l_array_source_97(Idx)
382006  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382007  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382008  );
382009 If(l_balance_type_code = 'A') THEN
382010   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382011 END IF;
382012 
382013 --
382014 
382015 
382016 --
382017 AcctLineType_92 (
382018  p_application_id  => p_application_id
382019  ,p_event_id     => l_event_id
382020  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382021  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382022  ,p_actual_flag => l_actual_flag
382023  ,p_balance_type_code => l_balance_type_code
382024  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382025  
382026  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382027  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382028  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382029  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382030  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382031  , p_source_11 => l_array_source_11(Idx)
382032  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382033  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382034  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382035  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382036  , p_source_84 => l_array_source_84(Idx)
382037  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382038  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382039  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382040  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382041  , p_source_88 => l_array_source_88(Idx)
382042  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382043  , p_source_91 => l_array_source_91(Idx)
382044  , p_source_92 => l_array_source_92(Idx)
382045  , p_source_93 => l_array_source_93(Idx)
382046  , p_source_94 => l_array_source_94(Idx)
382047  , p_source_95 => l_array_source_95(Idx)
382048  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382049  , p_source_97 => l_array_source_97(Idx)
382050  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382051  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382052  );
382053 If(l_balance_type_code = 'A') THEN
382054   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382055 END IF;
382056 
382057 --
382058 
382059 
382060 --
382061 AcctLineType_280 (
382062  p_application_id  => p_application_id
382063  ,p_event_id     => l_event_id
382064  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382065  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382066  ,p_actual_flag => l_actual_flag
382067  ,p_balance_type_code => l_balance_type_code
382068  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382069  
382070  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382071  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382072  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382073  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382074  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382075  , p_source_15 => l_array_source_15(Idx)
382076  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
382077  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
382078  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
382079  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
382080  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
382081  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382082  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382083  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382084  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382085  , p_source_84 => l_array_source_84(Idx)
382086  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382087  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382088  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382089  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382090  , p_source_88 => l_array_source_88(Idx)
382091  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382092  , p_source_91 => l_array_source_91(Idx)
382093  , p_source_92 => l_array_source_92(Idx)
382094  , p_source_93 => l_array_source_93(Idx)
382095  , p_source_94 => l_array_source_94(Idx)
382096  , p_source_95 => l_array_source_95(Idx)
382097  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382098  , p_source_97 => l_array_source_97(Idx)
382099  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382100  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382101  , p_source_108 => l_array_source_108(Idx)
382102  );
382103 If(l_balance_type_code = 'A') THEN
382104   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382105 END IF;
382106 
382107 --
382108 
382109 
382110 --
382111 AcctLineType_317 (
382112  p_application_id  => p_application_id
382113  ,p_event_id     => l_event_id
382114  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382115  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382116  ,p_actual_flag => l_actual_flag
382117  ,p_balance_type_code => l_balance_type_code
382118  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382119  
382120  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382121  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382122  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382123  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382124  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382125  , p_source_11 => l_array_source_11(Idx)
382126  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382127  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382128  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382129  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382130  , p_source_84 => l_array_source_84(Idx)
382131  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382132  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382133  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382134  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382135  , p_source_88 => l_array_source_88(Idx)
382136  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382137  , p_source_91 => l_array_source_91(Idx)
382138  , p_source_92 => l_array_source_92(Idx)
382139  , p_source_93 => l_array_source_93(Idx)
382140  , p_source_94 => l_array_source_94(Idx)
382141  , p_source_95 => l_array_source_95(Idx)
382142  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382143  , p_source_97 => l_array_source_97(Idx)
382144  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382145  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382146  );
382147 If(l_balance_type_code = 'A') THEN
382148   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382149 END IF;
382150 
382151 --
382152 
382153 
382154 --
382155 AcctLineType_365 (
382156  p_application_id  => p_application_id
382157  ,p_event_id     => l_event_id
382158  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382159  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382160  ,p_actual_flag => l_actual_flag
382161  ,p_balance_type_code => l_balance_type_code
382162  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382163  
382164  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382165  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382166  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382167  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382168  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382169  , p_source_11 => l_array_source_11(Idx)
382170  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382171  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382172  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382173  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382174  , p_source_84 => l_array_source_84(Idx)
382175  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382176  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382177  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382178  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382179  , p_source_88 => l_array_source_88(Idx)
382180  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382181  , p_source_91 => l_array_source_91(Idx)
382182  , p_source_92 => l_array_source_92(Idx)
382183  , p_source_93 => l_array_source_93(Idx)
382184  , p_source_94 => l_array_source_94(Idx)
382185  , p_source_95 => l_array_source_95(Idx)
382186  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382187  , p_source_97 => l_array_source_97(Idx)
382188  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382189  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382190  );
382191 If(l_balance_type_code = 'A') THEN
382192   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382193 END IF;
382194 
382195 --
382196 
382197 
382198 --
382199 AcctLineType_390 (
382200  p_application_id  => p_application_id
382201  ,p_event_id     => l_event_id
382202  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382203  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382204  ,p_actual_flag => l_actual_flag
382205  ,p_balance_type_code => l_balance_type_code
382206  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382207  
382208  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382209  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382210  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382211  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382212  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382213  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
382214  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382215  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382216  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382217  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382218  , p_source_84 => l_array_source_84(Idx)
382219  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382220  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382221  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382222  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382223  , p_source_88 => l_array_source_88(Idx)
382224  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382225  , p_source_91 => l_array_source_91(Idx)
382226  , p_source_92 => l_array_source_92(Idx)
382227  , p_source_93 => l_array_source_93(Idx)
382228  , p_source_94 => l_array_source_94(Idx)
382229  , p_source_95 => l_array_source_95(Idx)
382230  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382231  , p_source_97 => l_array_source_97(Idx)
382232  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382233  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382234  , p_source_110 => l_array_source_110(Idx)
382235  , p_source_110_meaning => l_array_source_110_meaning(Idx)
382236  );
382237 If(l_balance_type_code = 'A') THEN
382238   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382239 END IF;
382240 
382241 --
382242 
382243 
382244 --
382245 AcctLineType_408 (
382246  p_application_id  => p_application_id
382247  ,p_event_id     => l_event_id
382248  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382249  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382250  ,p_actual_flag => l_actual_flag
382251  ,p_balance_type_code => l_balance_type_code
382252  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382253  
382254  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382255  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382256  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382257  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382258  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382259  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
382260  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382261  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382262  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382263  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382264  , p_source_84 => l_array_source_84(Idx)
382265  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382266  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382267  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382268  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382269  , p_source_88 => l_array_source_88(Idx)
382270  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382271  , p_source_91 => l_array_source_91(Idx)
382272  , p_source_92 => l_array_source_92(Idx)
382273  , p_source_93 => l_array_source_93(Idx)
382274  , p_source_94 => l_array_source_94(Idx)
382275  , p_source_95 => l_array_source_95(Idx)
382276  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382277  , p_source_97 => l_array_source_97(Idx)
382278  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382279  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382280  , p_source_110 => l_array_source_110(Idx)
382281  , p_source_110_meaning => l_array_source_110_meaning(Idx)
382282  );
382283 If(l_balance_type_code = 'A') THEN
382284   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382285 END IF;
382286 
382287 --
382288 
382289 
382290 --
382291 AcctLineType_485 (
382292  p_application_id  => p_application_id
382293  ,p_event_id     => l_event_id
382294  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382295  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382296  ,p_actual_flag => l_actual_flag
382297  ,p_balance_type_code => l_balance_type_code
382298  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382299  
382300  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382301  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382302  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382303  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382304  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382305  , p_source_58 => g_array_event(l_event_id).array_value_num('source_58')
382306  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382307  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382308  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382309  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382310  , p_source_84 => l_array_source_84(Idx)
382311  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382312  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382313  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382314  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382315  , p_source_88 => l_array_source_88(Idx)
382316  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382317  , p_source_91 => l_array_source_91(Idx)
382318  , p_source_92 => l_array_source_92(Idx)
382319  , p_source_93 => l_array_source_93(Idx)
382320  , p_source_94 => l_array_source_94(Idx)
382321  , p_source_95 => l_array_source_95(Idx)
382322  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382323  , p_source_97 => l_array_source_97(Idx)
382324  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382325  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382326  );
382327 If(l_balance_type_code = 'A') THEN
382328   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382329 END IF;
382330 
382331 --
382332 
382333 
382334 --
382335 AcctLineType_498 (
382336  p_application_id  => p_application_id
382337  ,p_event_id     => l_event_id
382338  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382339  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382340  ,p_actual_flag => l_actual_flag
382341  ,p_balance_type_code => l_balance_type_code
382342  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382343  
382344  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382345  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382346  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382347  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382348  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382349  , p_source_11 => l_array_source_11(Idx)
382350  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382351  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382352  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382353  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382354  , p_source_84 => l_array_source_84(Idx)
382355  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382356  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382357  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382358  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382359  , p_source_88 => l_array_source_88(Idx)
382360  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382361  , p_source_91 => l_array_source_91(Idx)
382362  , p_source_92 => l_array_source_92(Idx)
382363  , p_source_93 => l_array_source_93(Idx)
382364  , p_source_94 => l_array_source_94(Idx)
382365  , p_source_95 => l_array_source_95(Idx)
382366  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382367  , p_source_97 => l_array_source_97(Idx)
382368  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382369  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382370  );
382371 If(l_balance_type_code = 'A') THEN
382372   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382373 END IF;
382374 
382375 --
382376 
382377 
382378 --
382379 AcctLineType_523 (
382380  p_application_id  => p_application_id
382381  ,p_event_id     => l_event_id
382382  ,p_calculate_acctd_flag => l_calculate_acctd_flag
382383  ,p_calculate_g_l_flag => l_calculate_g_l_flag
382384  ,p_actual_flag => l_actual_flag
382385  ,p_balance_type_code => l_balance_type_code
382386  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
382387  
382388  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
382389  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
382390  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
382391  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
382392  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
382393  , p_source_11 => l_array_source_11(Idx)
382394  , p_source_79 => g_array_event(l_event_id).array_value_num('source_79')
382395  , p_source_80 => g_array_event(l_event_id).array_value_char('source_80')
382396  , p_source_81 => g_array_event(l_event_id).array_value_char('source_81')
382397  , p_source_83 => g_array_event(l_event_id).array_value_num('source_83')
382398  , p_source_84 => l_array_source_84(Idx)
382399  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
382400  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
382401  , p_source_86 => g_array_event(l_event_id).array_value_num('source_86')
382402  , p_source_87 => g_array_event(l_event_id).array_value_num('source_87')
382403  , p_source_88 => l_array_source_88(Idx)
382404  , p_source_89 => g_array_event(l_event_id).array_value_num('source_89')
382405  , p_source_91 => l_array_source_91(Idx)
382406  , p_source_92 => l_array_source_92(Idx)
382407  , p_source_93 => l_array_source_93(Idx)
382408  , p_source_94 => l_array_source_94(Idx)
382409  , p_source_95 => l_array_source_95(Idx)
382410  , p_source_96 => g_array_event(l_event_id).array_value_num('source_96')
382411  , p_source_97 => l_array_source_97(Idx)
382412  , p_source_100 => g_array_event(l_event_id).array_value_char('source_100')
382413  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
382414  );
382415 If(l_balance_type_code = 'A') THEN
382416   l_actual_gain_loss_ref := l_gain_or_loss_ref;
382417 END IF;
382418 
382419 --
382420 
382421       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
382422       -- or secondary ledger that has different currency with primary
382423       -- or alc that is calculated by sla
382424       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
382425             (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'))
382426 
382427 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
382428 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
382429           AND (l_actual_flag = 'A')) THEN
382430         XLA_AE_LINES_PKG.CreateGainOrLossLines(
382431           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
382432          ,p_application_id   => p_application_id
382433          ,p_amb_context_code => 'DEFAULT'
382434          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
382435          ,p_event_class_code => C_EVENT_CLASS_CODE
382436          ,p_event_type_code  => C_EVENT_TYPE_CODE
382437          
382438          ,p_gain_ccid        => -1
382439          ,p_loss_ccid        => -1
382440 
382441          ,p_actual_flag      => l_actual_flag
382442          ,p_enc_flag         => null
382443          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
382444          ,p_enc_g_l_ref      => null
382445          );
382446       END IF;
382447    END IF;
382448 END IF;
382449 
382450    ELSE
382451       --
382452       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
382453       --
382454       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
382455          trace
382456             (p_msg      => 'Trancaction revesal option is Y'
382457             ,p_level    => C_LEVEL_STATEMENT
382458             ,p_module   => l_log_module);
382459       END IF;
382460    END IF;
382461 
382462 END LOOP;
382463 l_result := XLA_AE_LINES_PKG.InsertLines ;
382464 end loop;
382465 close line_cur;
382466 
382467 
382468 --
382469 -- insert headers into xla_ae_headers_gt table
382470 --
382471 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
382472 
382473 -- insert into errors table here.
382474 
382475 END LOOP;
382476 
382477 --
382478 -- 4865292
382479 --
382480 -- Compare g_hdr_extract_count with event count in
382481 -- CreateHeadersAndLines.
382482 --
382483 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
382484 
382485 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
382486    trace (p_msg     => '# rows extracted from header extract objects '
382487                     || ' (running total): '
382488                     || g_hdr_extract_count
382489          ,p_level   => C_LEVEL_STATEMENT
382490          ,p_module  => l_log_module);
382491 END IF;
382492 
382493 CLOSE header_cur;
382494 --
382495 
382496 --
382497 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
382498    trace
382499       (p_msg      => 'END of EventType_593'
382500       ,p_level    => C_LEVEL_PROCEDURE
382501       ,p_module   => l_log_module);
382502 END IF;
382503 --
382504 RETURN l_result;
382505 EXCEPTION
382506 WHEN xla_exceptions_pkg.application_exception THEN
382507    
382508 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
382509 
382510    
382511 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
382512 
382513    RAISE;
382514 
382515 WHEN NO_DATA_FOUND THEN
382516 
382517 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
382518 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
382519 
382520 FOR header_record IN header_cur
382521 LOOP
382522     l_array_header_events(header_record.event_id) := header_record.event_id;
382523 END LOOP;
382524 
382525 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
382526 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
382527 
382528 fnd_file.put_line(fnd_file.LOG, '                    ');
382529 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
382530 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
382531 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
382532 
382533 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
382534 LOOP
382535 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
382536 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
382537         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
382538 	END IF;
382539 END LOOP;
382540 
382541 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
382542 fnd_file.put_line(fnd_file.LOG, '                    ');
382543 
382544 
382545 xla_exceptions_pkg.raise_message
382546       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_593');
382547 
382548 
382549 WHEN OTHERS THEN
382550    xla_exceptions_pkg.raise_message
382551       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_593');
382552 END EventType_593;
382553 --
382554 
382555 ---------------------------------------
382556 --
382557 -- PRIVATE PROCEDURE
382558 --         insert_sources_594
382559 --
382560 ----------------------------------------
382561 --
382562 PROCEDURE insert_sources_594(
382563                                 p_target_ledger_id       IN NUMBER
382564                               , p_language               IN VARCHAR2
382565                               , p_sla_ledger_id          IN NUMBER
382566                               , p_pad_start_date         IN DATE
382567                               , p_pad_end_date           IN DATE
382568                          )
382569 IS
382570 
382571 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RMA_RCPT';
382572 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
382573 p_apps_owner                   VARCHAR2(30);
382574 l_log_module                   VARCHAR2(240);
382575 BEGIN
382576 IF g_log_enabled THEN
382577       l_log_module := C_DEFAULT_MODULE||'.insert_sources_594';
382578 END IF;
382579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
382580 
382581       trace
382582          (p_msg      => 'BEGIN of insert_sources_594'
382583          ,p_level    => C_LEVEL_PROCEDURE
382584          ,p_module   => l_log_module);
382585 
382586 END IF;
382587 
382588 -- select APPS owner
382589 SELECT oracle_username
382590   INTO p_apps_owner
382591   FROM fnd_oracle_userid
382592  WHERE read_only_flag = 'U'
382593 ;
382594 
382595 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
382596       trace
382597          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
382598                         ' - p_language = '||p_language||
382599                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
382600                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
382601                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
382602                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
382603          ,p_level    => C_LEVEL_STATEMENT
382604          ,p_module   => l_log_module);
382605 END IF;
382606 
382607 
382608 --
382609 INSERT INTO xla_diag_sources --hdr1
382610 (
382611         event_id
382612       , ledger_id
382613       , sla_ledger_id
382614       , description_language
382615       , object_name
382616       , object_type_code
382617       , line_number
382618       , source_application_id
382619       , source_type_code
382620       , source_code
382621       , source_value
382622       , source_meaning
382623       , created_by
382624       , creation_date
382625       , last_update_date
382626       , last_updated_by
382627       , last_update_login
382628       , program_update_date
382629       , program_application_id
382630       , program_id
382631       , request_id
382632 )
382633 SELECT
382634         event_id
382635       , p_target_ledger_id
382636       , p_sla_ledger_id
382637       , p_language
382638       , object_name
382639       , object_type_code
382640       , line_number
382641       , source_application_id
382642       , source_type_code
382643       , source_code
382644       , SUBSTR(source_value ,1,1996)
382645       , SUBSTR(source_meaning,1,200)
382646       , xla_environment_pkg.g_Usr_Id
382647       , TRUNC(SYSDATE)
382648       , TRUNC(SYSDATE)
382649       , xla_environment_pkg.g_Usr_Id
382650       , xla_environment_pkg.g_Login_Id
382651       , TRUNC(SYSDATE)
382652       , xla_environment_pkg.g_Prog_Appl_Id
382653       , xla_environment_pkg.g_Prog_Id
382654       , xla_environment_pkg.g_Req_Id
382655   FROM (
382656        SELECT xet.event_id                  event_id
382657             , 0                             line_number
382658             , CASE r
382659                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
382660                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
382661                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
382662                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
382663                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
382664                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
382665                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
382666                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
382667                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
382668                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
382669                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
382670                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
382671                 
382672                ELSE null
382673               END                           object_name
382674             , CASE r
382675                 WHEN 1 THEN 'HEADER' 
382676                 WHEN 2 THEN 'HEADER' 
382677                 WHEN 3 THEN 'HEADER' 
382678                 WHEN 4 THEN 'HEADER' 
382679                 WHEN 5 THEN 'HEADER' 
382680                 WHEN 6 THEN 'HEADER' 
382681                 WHEN 7 THEN 'HEADER' 
382682                 WHEN 8 THEN 'HEADER' 
382683                 WHEN 9 THEN 'HEADER' 
382684                 WHEN 10 THEN 'HEADER' 
382685                 WHEN 11 THEN 'HEADER' 
382686                 WHEN 12 THEN 'HEADER' 
382687                 
382688                 ELSE null
382689               END                           object_type_code
382690             , CASE r
382691                 WHEN 1 THEN '707' 
382692                 WHEN 2 THEN '707' 
382693                 WHEN 3 THEN '707' 
382694                 WHEN 4 THEN '707' 
382695                 WHEN 5 THEN '707' 
382696                 WHEN 6 THEN '707' 
382697                 WHEN 7 THEN '707' 
382698                 WHEN 8 THEN '707' 
382699                 WHEN 9 THEN '707' 
382700                 WHEN 10 THEN '707' 
382701                 WHEN 11 THEN '707' 
382702                 WHEN 12 THEN '707' 
382703                 
382704                 ELSE null
382705               END                           source_application_id
382706             , 'S'             source_type_code
382707             , CASE r
382708                 WHEN 1 THEN 'TRANSACTION_ID' 
382709                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
382710                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
382711                 WHEN 4 THEN 'TRANSACTION_UOM' 
382712                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
382713                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
382714                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
382715                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
382716                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
382717                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
382718                 WHEN 11 THEN 'DISTRIBUTION_TYPE' 
382719                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
382720                 
382721                 ELSE null
382722               END                           source_code
382723             , CASE r
382724                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
382725                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
382726                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
382727                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
382728                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
382729                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
382730                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
382731                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
382732                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
382733                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
382734                 WHEN 11 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
382735                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
382736                 
382737                 ELSE null
382738               END                           source_value
382739             , CASE r
382740                 WHEN 11 THEN fvl85.meaning
382741                 WHEN 12 THEN fvl114.meaning
382742                 
382743                 ELSE null
382744               END               source_meaning
382745         FROM xla_events_gt     xet  
382746       , CST_XLA_INV_HEADERS_V  h1
382747       , CST_XLA_INV_REF_V  h3
382748       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
382749       , CST_XLA_INV_TXN_TYPES_REF_V  h5
382750       , CST_XLA_PLA_CATEGORY_REF_V  h6
382751   , fnd_lookup_values    fvl85
382752   , fnd_lookup_values    fvl114
382753             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
382754        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
382755          AND xet.event_type_code = C_EVENT_TYPE_CODE
382756             AND h1.event_id = xet.event_id
382757  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
382758 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
382759 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
382760   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
382761   AND fvl85.view_application_id(+) = 700
382762   AND fvl85.language(+)            = USERENV('LANG')
382763      AND fvl114.lookup_type(+)         = 'YES_NO'
382764   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
382765   AND fvl114.view_application_id(+) = 0
382766   AND fvl114.language(+)            = USERENV('LANG')
382767   
382768 )
382769 ;
382770 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
382771 
382772       trace
382773          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
382774          ,p_level    => C_LEVEL_STATEMENT
382775          ,p_module   => l_log_module);
382776 
382777 END IF;
382778 --
382779 
382780 
382781 
382782 --
382783 INSERT INTO xla_diag_sources --line1
382784 (
382785         event_id
382786       , ledger_id
382787       , sla_ledger_id
382788       , description_language
382789       , object_name
382790       , object_type_code
382791       , line_number
382792       , source_application_id
382793       , source_type_code
382794       , source_code
382795       , source_value
382796       , source_meaning
382797       , created_by
382798       , creation_date
382799       , last_update_date
382800       , last_updated_by
382801       , last_update_login
382802       , program_update_date
382803       , program_application_id
382804       , program_id
382805       , request_id
382806 )
382807 SELECT  event_id
382808       , p_target_ledger_id
382809       , p_sla_ledger_id
382810       , p_language
382811       , object_name
382812       , object_type_code
382813       , line_number
382814       , source_application_id
382815       , source_type_code
382816       , source_code
382817       , SUBSTR(source_value,1,1996)
382818       , SUBSTR(source_meaning,1,200)
382819       , xla_environment_pkg.g_Usr_Id
382820       , TRUNC(SYSDATE)
382821       , TRUNC(SYSDATE)
382822       , xla_environment_pkg.g_Usr_Id
382823       , xla_environment_pkg.g_Login_Id
382824       , TRUNC(SYSDATE)
382825       , xla_environment_pkg.g_Prog_Appl_Id
382826       , xla_environment_pkg.g_Prog_Id
382827       , xla_environment_pkg.g_Req_Id
382828   FROM (
382829        SELECT xet.event_id                  event_id
382830             , l2.line_number                 line_number
382831             , CASE r
382832                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
382833                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
382834                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
382835                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
382836                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
382837                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
382838                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
382839                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
382840                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
382841                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
382842                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
382843                 
382844                ELSE null
382845               END                           object_name
382846             , CASE r
382847                 WHEN 1 THEN 'LINE' 
382848                 WHEN 2 THEN 'LINE' 
382849                 WHEN 3 THEN 'LINE' 
382850                 WHEN 4 THEN 'LINE' 
382851                 WHEN 5 THEN 'LINE' 
382852                 WHEN 6 THEN 'LINE' 
382853                 WHEN 7 THEN 'LINE' 
382854                 WHEN 8 THEN 'LINE' 
382855                 WHEN 9 THEN 'LINE' 
382856                 WHEN 10 THEN 'LINE' 
382857                 WHEN 11 THEN 'LINE' 
382858                 
382859                 ELSE null
382860               END                           object_type_code
382861             , CASE r
382862                 WHEN 1 THEN '707' 
382863                 WHEN 2 THEN '707' 
382864                 WHEN 3 THEN '707' 
382865                 WHEN 4 THEN '707' 
382866                 WHEN 5 THEN '707' 
382867                 WHEN 6 THEN '707' 
382868                 WHEN 7 THEN '707' 
382869                 WHEN 8 THEN '707' 
382870                 WHEN 9 THEN '707' 
382871                 WHEN 10 THEN '707' 
382872                 WHEN 11 THEN '707' 
382873                 
382874                 ELSE null
382875               END                           source_application_id
382876             , 'S'             source_type_code
382877             , CASE r
382878                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
382879                 WHEN 2 THEN 'COST_ELEMENT_ID' 
382880                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
382881                 WHEN 4 THEN 'CURRENCY_CODE' 
382882                 WHEN 5 THEN 'ENTERED_AMOUNT' 
382883                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
382884                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
382885                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
382886                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
382887                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
382888                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
382889                 
382890                 ELSE null
382891               END                           source_code
382892             , CASE r
382893                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
382894                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
382895                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
382896                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
382897                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
382898                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
382899                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
382900                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
382901                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
382902                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
382903                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
382904                 
382905                 ELSE null
382906               END                           source_value
382907             , CASE r
382908                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
382909                           1009615
382910                          ,TO_CHAR(l2.COST_ELEMENT_ID)
382911                          ,'COST_ELEMENT_ID'
382912                          ,'S'
382913                          ,707)
382914                 
382915                 ELSE null
382916               END               source_meaning
382917          FROM  xla_events_gt     xet  
382918         , CST_XLA_INV_LINES_V  l2
382919             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
382920         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
382921           AND xet.event_type_code = C_EVENT_TYPE_CODE
382922             AND l2.event_id          = xet.event_id
382923 
382924 )
382925 ;
382926 --
382927 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
382928 
382929       trace
382930          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
382931          ,p_level    => C_LEVEL_STATEMENT
382932          ,p_module   => l_log_module);
382933 
382934 END IF;
382935 
382936 
382937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
382938       trace
382939          (p_msg      => 'END of insert_sources_594'
382940          ,p_level    => C_LEVEL_PROCEDURE
382941          ,p_module   => l_log_module);
382942 END IF;
382943 EXCEPTION
382944   WHEN xla_exceptions_pkg.application_exception THEN
382945       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
382946             trace
382947                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
382948                ,p_level    => C_LEVEL_EXCEPTION
382949                ,p_module   => l_log_module);
382950       END IF;
382951       RAISE;
382952   WHEN OTHERS THEN
382953       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
382954             trace
382955                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
382956                ,p_level    => C_LEVEL_EXCEPTION
382957                ,p_module   => l_log_module);
382958        END IF;
382959        xla_exceptions_pkg.raise_message
382960            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_594');
382961 END insert_sources_594;
382962 --
382963 
382964 ---------------------------------------
382965 --
382966 -- PRIVATE FUNCTION
382967 --         EventType_594
382968 --
382969 ----------------------------------------
382970 --
382971 FUNCTION EventType_594
382972        (p_application_id         IN NUMBER
382973        ,p_base_ledger_id         IN NUMBER
382974        ,p_target_ledger_id       IN NUMBER
382975        ,p_language               IN VARCHAR2
382976        ,p_currency_code          IN VARCHAR2
382977        ,p_sla_ledger_id          IN NUMBER
382978        ,p_pad_start_date         IN DATE
382979        ,p_pad_end_date           IN DATE
382980        ,p_primary_ledger_id      IN NUMBER)
382981 RETURN BOOLEAN IS
382982 --
382983 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RMA_RCPT';
382984 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
382985 
382986 l_calculate_acctd_flag   VARCHAR2(1) :='N';
382987 l_calculate_g_l_flag     VARCHAR2(1) :='N';
382988 --
382989 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
382990 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
382991 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
382992 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
382993 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
382994 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
382995 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
382996 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
382997 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
382998 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
382999 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
383000 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
383001 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
383002 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
383003 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
383004 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
383005 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
383006 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
383007 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
383008 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
383009 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
383010 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
383011 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
383012 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
383013 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
383014 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
383015 
383016 l_event_id                             NUMBER;
383017 l_previous_event_id                    NUMBER;
383018 l_first_event_id                       NUMBER;
383019 l_last_event_id                        NUMBER;
383020 
383021 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
383022 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
383023 --
383024 --
383025 l_result                    BOOLEAN := TRUE;
383026 l_rows                      NUMBER  := 1000;
383027 l_event_type_name           VARCHAR2(80) := 'RMA Receipt';
383028 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
383029 l_description               VARCHAR2(4000);
383030 l_transaction_reversal      NUMBER;
383031 l_ae_header_id              NUMBER;
383032 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
383033 l_log_module                VARCHAR2(240);
383034 --
383035 l_acct_reversal_source      VARCHAR2(30);
383036 l_trx_reversal_source       VARCHAR2(30);
383037 
383038 l_continue_with_lines       BOOLEAN := TRUE;
383039 --
383040 l_acc_rev_gl_date_source    DATE;                      -- 4262811
383041 --
383042 type t_array_event_id is table of number index by binary_integer;
383043 
383044 l_rec_array_event                    t_rec_array_event;
383045 l_null_rec_array_event               t_rec_array_event;
383046 l_array_ae_header_id                 xla_number_array_type;
383047 l_actual_flag                        VARCHAR2(1) := NULL;
383048 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
383049 l_balance_type_code                  VARCHAR2(1) :=NULL;
383050 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
383051 
383052 --
383053 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
383054 --
383055 
383056 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
383057 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
383058 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
383059 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
383060 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
383061 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
383062 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
383063 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
383064 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
383065 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
383066 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
383067 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
383068 
383069 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
383070 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
383071 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
383072 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
383073 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
383074 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
383075 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
383076 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
383077 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
383078 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
383079 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
383080 
383081 l_array_source_1              t_array_source_1;
383082 l_array_source_2              t_array_source_2;
383083 l_array_source_3              t_array_source_3;
383084 l_array_source_4              t_array_source_4;
383085 l_array_source_5              t_array_source_5;
383086 l_array_source_41              t_array_source_41;
383087 l_array_source_42              t_array_source_42;
383088 l_array_source_43              t_array_source_43;
383089 l_array_source_44              t_array_source_44;
383090 l_array_source_45              t_array_source_45;
383091 l_array_source_85              t_array_source_85;
383092 l_array_source_85_meaning      t_array_lookup_meaning;
383093 l_array_source_114              t_array_source_114;
383094 l_array_source_114_meaning      t_array_lookup_meaning;
383095 
383096 l_array_source_11      t_array_source_11;
383097 l_array_source_15      t_array_source_15;
383098 l_array_source_84      t_array_source_84;
383099 l_array_source_88      t_array_source_88;
383100 l_array_source_91      t_array_source_91;
383101 l_array_source_92      t_array_source_92;
383102 l_array_source_93      t_array_source_93;
383103 l_array_source_94      t_array_source_94;
383104 l_array_source_95      t_array_source_95;
383105 l_array_source_97      t_array_source_97;
383106 l_array_source_108      t_array_source_108;
383107 
383108 --
383109 CURSOR header_cur
383110 IS
383111 SELECT /*+ leading(xet) cardinality(xet,1) */
383112 -- Event Type Code: RMA_RCPT
383113 -- Event Class Code: SALES_ORDER
383114     xet.entity_id
383115   , xet.legal_entity_id
383116   , xet.entity_code
383117   , xet.transaction_number
383118   , xet.event_id
383119   , xet.event_class_code
383120   , xet.event_type_code
383121   , xet.event_number
383122   , xet.event_date
383123   , xet.transaction_date
383124   , xet.reference_num_1
383125   , xet.reference_num_2
383126   , xet.reference_num_3
383127   , xet.reference_num_4
383128   , xet.reference_char_1
383129   , xet.reference_char_2
383130   , xet.reference_char_3
383131   , xet.reference_char_4
383132   , xet.reference_date_1
383133   , xet.reference_date_2
383134   , xet.reference_date_3
383135   , xet.reference_date_4
383136   , xet.event_created_by
383137   , xet.budgetary_control_flag 
383138   , h1.TRANSACTION_ID    source_1
383139   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
383140   , h3.TRANSACTION_QUANTITY    source_3
383141   , h3.TRANSACTION_UOM    source_4
383142   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
383143   , h6.PLA_MATERIAL_ACCOUNT    source_41
383144   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
383145   , h6.PLA_RESOURCE_ACCOUNT    source_43
383146   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
383147   , h6.PLA_OVERHEAD_ACCOUNT    source_45
383148   , h1.DISTRIBUTION_TYPE    source_85
383149   , fvl85.meaning   source_85_meaning
383150   , h1.TRANSFER_TO_GL_INDICATOR    source_114
383151   , fvl114.meaning   source_114_meaning
383152   FROM xla_events_gt     xet 
383153   , CST_XLA_INV_HEADERS_V  h1
383154   , CST_XLA_INV_REF_V  h3
383155   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
383156   , CST_XLA_INV_TXN_TYPES_REF_V  h5
383157   , CST_XLA_PLA_CATEGORY_REF_V  h6
383158   , fnd_lookup_values    fvl85
383159   , fnd_lookup_values    fvl114
383160  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
383161    and xet.event_type_code = C_EVENT_TYPE_CODE
383162    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
383163  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
383164 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
383165 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
383166   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
383167   AND fvl85.view_application_id(+) = 700
383168   AND fvl85.language(+)            = USERENV('LANG')
383169      AND fvl114.lookup_type(+)         = 'YES_NO'
383170   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
383171   AND fvl114.view_application_id(+) = 0
383172   AND fvl114.language(+)            = USERENV('LANG')
383173   
383174  ORDER BY event_id
383175 ;
383176 
383177 
383178 --
383179 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
383180 IS
383181 SELECT /*+ leading(xet) cardinality(xet,1) */
383182 -- Event Type Code: RMA_RCPT
383183 -- Event Class Code: SALES_ORDER
383184     xet.entity_id
383185    ,xet.legal_entity_id
383186    ,xet.entity_code
383187    ,xet.transaction_number
383188    ,xet.event_id
383189    ,xet.event_class_code
383190    ,xet.event_type_code
383191    ,xet.event_number
383192    ,xet.event_date
383193    ,xet.transaction_date
383194    ,xet.reference_num_1
383195    ,xet.reference_num_2
383196    ,xet.reference_num_3
383197    ,xet.reference_num_4
383198    ,xet.reference_char_1
383199    ,xet.reference_char_2
383200    ,xet.reference_char_3
383201    ,xet.reference_char_4
383202    ,xet.reference_date_1
383203    ,xet.reference_date_2
383204    ,xet.reference_date_3
383205    ,xet.reference_date_4
383206    ,xet.event_created_by
383207    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
383208   , l2.CODE_COMBINATION_ID    source_11
383209   , l2.COST_ELEMENT_ID    source_15
383210   , l2.DISTRIBUTION_IDENTIFIER    source_84
383211   , l2.CURRENCY_CODE    source_88
383212   , l2.ENTERED_AMOUNT    source_91
383213   , l2.CURRENCY_CONVERSION_DATE    source_92
383214   , l2.CURRENCY_CONVERSION_RATE    source_93
383215   , l2.CURRENCY_CONVERSION_TYPE    source_94
383216   , l2.ACCOUNTED_AMOUNT    source_95
383217   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
383218   , l2.L_ORGANIZATION_CODE    source_108
383219   FROM xla_events_gt     xet 
383220   , CST_XLA_INV_LINES_V  l2
383221  WHERE xet.event_id between x_first_event_id and x_last_event_id
383222    and xet.event_date between p_pad_start_date and p_pad_end_date
383223    and xet.event_type_code = C_EVENT_TYPE_CODE
383224    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
383225 ;
383226 
383227 --
383228 BEGIN
383229 IF g_log_enabled THEN
383230    l_log_module := C_DEFAULT_MODULE||'.EventType_594';
383231 END IF;
383232 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
383233    trace
383234       (p_msg      => 'BEGIN of EventType_594'
383235       ,p_level    => C_LEVEL_PROCEDURE
383236       ,p_module   => l_log_module);
383237 END IF;
383238 
383239 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
383240    trace
383241       (p_msg      => 'p_application_id = '||p_application_id||
383242                      ' - p_base_ledger_id = '||p_base_ledger_id||
383243                      ' - p_target_ledger_id  = '||p_target_ledger_id||
383244                      ' - p_language = '||p_language||
383245                      ' - p_currency_code = '||p_currency_code||
383246                      ' - p_sla_ledger_id = '||p_sla_ledger_id
383247       ,p_level    => C_LEVEL_STATEMENT
383248       ,p_module   => l_log_module);
383249 END IF;
383250 --
383251 -- initialze arrays
383252 --
383253 g_array_event.DELETE;
383254 l_rec_array_event := l_null_rec_array_event;
383255 --
383256 --------------------------------------
383257 -- 4262811 Initialze MPA Line Number
383258 --------------------------------------
383259 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
383260 
383261 --
383262 
383263 --
383264 OPEN header_cur;
383265 --
383266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
383267    trace
383268    (p_msg      => 'SQL - FETCH header_cur'
383269    ,p_level    => C_LEVEL_STATEMENT
383270    ,p_module   => l_log_module);
383271 END IF;
383272 --
383273 LOOP
383274 FETCH header_cur BULK COLLECT INTO
383275         l_array_entity_id
383276       , l_array_legal_entity_id
383277       , l_array_entity_code
383278       , l_array_transaction_num
383279       , l_array_event_id
383280       , l_array_class_code
383281       , l_array_event_type
383282       , l_array_event_number
383283       , l_array_event_date
383284       , l_array_transaction_date
383285       , l_array_reference_num_1
383286       , l_array_reference_num_2
383287       , l_array_reference_num_3
383288       , l_array_reference_num_4
383289       , l_array_reference_char_1
383290       , l_array_reference_char_2
383291       , l_array_reference_char_3
383292       , l_array_reference_char_4
383293       , l_array_reference_date_1
383294       , l_array_reference_date_2
383295       , l_array_reference_date_3
383296       , l_array_reference_date_4
383297       , l_array_event_created_by
383298       , l_array_budgetary_control_flag 
383299       , l_array_source_1
383300       , l_array_source_2
383301       , l_array_source_3
383302       , l_array_source_4
383303       , l_array_source_5
383304       , l_array_source_41
383305       , l_array_source_42
383306       , l_array_source_43
383307       , l_array_source_44
383308       , l_array_source_45
383309       , l_array_source_85
383310       , l_array_source_85_meaning
383311       , l_array_source_114
383312       , l_array_source_114_meaning
383313       LIMIT l_rows;
383314 --
383315 IF (C_LEVEL_EVENT >= g_log_level) THEN
383316    trace
383317    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
383318    ,p_level    => C_LEVEL_EVENT
383319    ,p_module   => l_log_module);
383320 END IF;
383321 --
383322 EXIT WHEN l_array_entity_id.COUNT = 0;
383323 
383324 -- initialize arrays
383325 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
383326 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
383327 
383328 --
383329 -- Bug 4458708
383330 --
383331 XLA_AE_LINES_PKG.g_LineNumber := 0;
383332 
383333 
383334 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
383335 g_last_hdr_idx := l_array_event_id.LAST;
383336 --
383337 -- loop for the headers. Each iteration is for each header extract row
383338 -- fetched in header cursor
383339 --
383340 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
383341 
383342 --
383343 -- set event info as cache for other routines to refer event attributes
383344 --
383345 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
383346    (p_application_id           => p_application_id
383347    ,p_primary_ledger_id        => p_primary_ledger_id
383348    ,p_base_ledger_id           => p_base_ledger_id
383349    ,p_target_ledger_id         => p_target_ledger_id
383350    ,p_entity_id                => l_array_entity_id(hdr_idx)
383351    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
383352    ,p_entity_code              => l_array_entity_code(hdr_idx)
383353    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
383354    ,p_event_id                 => l_array_event_id(hdr_idx)
383355    ,p_event_class_code         => l_array_class_code(hdr_idx)
383356    ,p_event_type_code          => l_array_event_type(hdr_idx)
383357    ,p_event_number             => l_array_event_number(hdr_idx)
383358    ,p_event_date               => l_array_event_date(hdr_idx)
383359    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
383360    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
383361    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
383362    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
383363    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
383364    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
383365    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
383366    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
383367    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
383368    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
383369    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
383370    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
383371    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
383372    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
383373    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
383374 
383375 --
383376 -- set the status of entry to C_VALID (0)
383377 --
383378 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
383379 
383380 --
383381 -- initialize a row for ae header
383382 --
383383 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
383384 
383385 l_event_id := l_array_event_id(hdr_idx);
383386 
383387 --
383388 -- storing the hdr_idx for event. May be used by line cursor.
383389 --
383390 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
383391 
383392 --
383393 -- store sources from header extract. This can be improved to
383394 -- store only those sources from header extract that may be used in lines
383395 --
383396 
383397 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
383398 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
383399 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
383400 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
383401 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
383402 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
383403 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
383404 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
383405 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
383406 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
383407 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
383408 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
383409 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
383410 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
383411 
383412 --
383413 -- initilaize the status of ae headers for diffrent balance types
383414 -- the status is initialised to C_NOT_CREATED (2)
383415 --
383416 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
383417 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
383418 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
383419 
383420 --
383421 -- call api to validate and store accounting attributes for header
383422 --
383423 
383424 ------------------------------------------------------------
383425 -- Accrual Reversal : to get date for Standard Source (NONE)
383426 ------------------------------------------------------------
383427 l_acc_rev_gl_date_source := NULL;
383428 
383429      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
383430       l_rec_acct_attrs.array_date_value(1) := 
383431 xla_ae_sources_pkg.GetSystemSourceDate(
383432    p_source_code           => 'XLA_REFERENCE_DATE_1'
383433  , p_source_type_code      => 'Y'
383434  , p_source_application_id =>  602
383435 );
383436      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
383437       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
383438 
383439 
383440 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
383441 
383442 XLA_AE_HEADER_PKG.SetJeCategoryName;
383443 
383444 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
383445 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
383446 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
383447 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
383448 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
383449 
383450 
383451 --
383452 xla_ae_header_pkg.SetHdrDescription(
383453    p_description => Description_1 (
383454    p_application_id => p_application_id 
383455  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
383456  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
383457  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
383458  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
383459  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
383460    )
383461 );
383462 --
383463 
383464 -- No header level analytical criteria
383465 
383466 --
383467 --accounting attribute enhancement, bug 3612931
383468 --
383469 l_trx_reversal_source := SUBSTR(NULL, 1,30);
383470 
383471 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
383472    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
383473 
383474    xla_accounting_err_pkg.build_message
383475       (p_appli_s_name            => 'XLA'
383476       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
383477       ,p_token_1                 => 'ACCT_ATTR_NAME'
383478       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
383479       ,p_token_2                 => 'PRODUCT_NAME'
383480       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
383481       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
383482       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
383483       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
383484 
383485 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
383486    --
383487    -- following sets the accounting attributes needed to reverse
383488    -- accounting for a distributeion
383489    --
383490    xla_ae_lines_pkg.SetTrxReversalAttrs
383491       (p_event_id              => l_event_id
383492       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
383493       ,p_trx_reversal_source   => l_trx_reversal_source);
383494 
383495 END IF;
383496 
383497 
383498 ----------------------------------------------------------------
383499 -- 4262811 -  update the header statuses to invalid in need be
383500 ----------------------------------------------------------------
383501 --
383502 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
383503 
383504 
383505   -----------------------------------------------
383506   -- No accrual reversal for the event class/type
383507   -----------------------------------------------
383508 ----------------------------------------------------------------
383509 
383510 --
383511 -- this ends the header loop iteration for one bulk fetch
383512 --
383513 END LOOP;
383514 
383515 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
383516 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
383517 
383518 --
383519 -- insert dummy rows into lines gt table that were created due to
383520 -- transaction reversals
383521 --
383522 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
383523    l_result := XLA_AE_LINES_PKG.InsertLines;
383524 END IF;
383525 
383526 --
383527 -- reset the temp_line_num for each set of events fetched from header
383528 -- cursor rather than doing it for each new event in line cursor
383529 -- Bug 3939231
383530 --
383531 xla_ae_lines_pkg.g_temp_line_num := 0;
383532 
383533 
383534 
383535 --
383536 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
383537 --
383538 --
383539 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
383540 
383541       trace
383542          (p_msg      => 'SQL - FETCH line_cur'
383543          ,p_level    => C_LEVEL_STATEMENT
383544          ,p_module   => l_log_module);
383545 
383546 END IF;
383547 --
383548 --
383549 LOOP
383550   --
383551   FETCH line_cur BULK COLLECT INTO
383552         l_array_entity_id
383553       , l_array_legal_entity_id
383554       , l_array_entity_code
383555       , l_array_transaction_num
383556       , l_array_event_id
383557       , l_array_class_code
383558       , l_array_event_type
383559       , l_array_event_number
383560       , l_array_event_date
383561       , l_array_transaction_date
383562       , l_array_reference_num_1
383563       , l_array_reference_num_2
383564       , l_array_reference_num_3
383565       , l_array_reference_num_4
383566       , l_array_reference_char_1
383567       , l_array_reference_char_2
383568       , l_array_reference_char_3
383569       , l_array_reference_char_4
383570       , l_array_reference_date_1
383571       , l_array_reference_date_2
383572       , l_array_reference_date_3
383573       , l_array_reference_date_4
383574       , l_array_event_created_by
383575       , l_array_budgetary_control_flag
383576       , l_array_extract_line_num 
383577       , l_array_source_11
383578       , l_array_source_15
383579       , l_array_source_84
383580       , l_array_source_88
383581       , l_array_source_91
383582       , l_array_source_92
383583       , l_array_source_93
383584       , l_array_source_94
383585       , l_array_source_95
383586       , l_array_source_97
383587       , l_array_source_108
383588       LIMIT l_rows;
383589 
383590   --
383591   IF (C_LEVEL_EVENT >= g_log_level) THEN
383592             trace
383593                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
383594                ,p_level    => C_LEVEL_EVENT
383595                ,p_module   => l_log_module);
383596   END IF;
383597   --
383598   EXIT WHEN l_array_entity_id.count = 0;
383599 
383600   XLA_AE_LINES_PKG.g_rec_lines := null;
383601 
383602 --
383603 -- Bug 4458708
383604 --
383605 XLA_AE_LINES_PKG.g_LineNumber := 0;
383606 --
383607 --
383608 
383609 FOR Idx IN 1..l_array_event_id.count LOOP
383610    --
383611    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
383612    --
383613    l_event_id := l_array_event_id(idx);  -- 5648433
383614 
383615    --
383616    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
383617    --
383618 
383619    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
383620              (g_array_event(l_event_id).array_value_num('header_index'))
383621          ,'N'
383622          ) <> 'Y'
383623    THEN
383624       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
383625          trace
383626             (p_msg      => 'Trancaction revesal option is not Y '
383627             ,p_level    => C_LEVEL_STATEMENT
383628             ,p_module   => l_log_module);
383629       END IF;
383630 
383631 --
383632 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
383633 --
383634 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
383635 --
383636 -- set event info as cache for other routines to refer event attributes
383637 --
383638 
383639 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
383640    l_previous_event_id := l_event_id;
383641 
383642    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
383643       (p_application_id           => p_application_id
383644       ,p_primary_ledger_id        => p_primary_ledger_id
383645       ,p_base_ledger_id           => p_base_ledger_id
383646       ,p_target_ledger_id         => p_target_ledger_id
383647       ,p_entity_id                => l_array_entity_id(Idx)
383648       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
383649       ,p_entity_code              => l_array_entity_code(Idx)
383650       ,p_transaction_num          => l_array_transaction_num(Idx)
383651       ,p_event_id                 => l_array_event_id(Idx)
383652       ,p_event_class_code         => l_array_class_code(Idx)
383653       ,p_event_type_code          => l_array_event_type(Idx)
383654       ,p_event_number             => l_array_event_number(Idx)
383655       ,p_event_date               => l_array_event_date(Idx)
383656       ,p_transaction_date         => l_array_transaction_date(Idx)
383657       ,p_reference_num_1          => l_array_reference_num_1(Idx)
383658       ,p_reference_num_2          => l_array_reference_num_2(Idx)
383659       ,p_reference_num_3          => l_array_reference_num_3(Idx)
383660       ,p_reference_num_4          => l_array_reference_num_4(Idx)
383661       ,p_reference_char_1         => l_array_reference_char_1(Idx)
383662       ,p_reference_char_2         => l_array_reference_char_2(Idx)
383663       ,p_reference_char_3         => l_array_reference_char_3(Idx)
383664       ,p_reference_char_4         => l_array_reference_char_4(Idx)
383665       ,p_reference_date_1         => l_array_reference_date_1(Idx)
383666       ,p_reference_date_2         => l_array_reference_date_2(Idx)
383667       ,p_reference_date_3         => l_array_reference_date_3(Idx)
383668       ,p_reference_date_4         => l_array_reference_date_4(Idx)
383669       ,p_event_created_by         => l_array_event_created_by(Idx)
383670       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
383671        --
383672 END IF;
383673 
383674 
383675 
383676 --
383677 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
383678 
383679 l_acct_reversal_source := SUBSTR(NULL, 1,30);
383680 
383681 IF l_continue_with_lines THEN
383682    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
383683       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
383684 
383685       xla_accounting_err_pkg.build_message
383686          (p_appli_s_name            => 'XLA'
383687          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
383688          ,p_token_1                 => 'LINE_NUMBER'
383689          ,p_value_1                 => l_array_extract_line_num(Idx)
383690          ,p_token_2                 => 'PRODUCT_NAME'
383691          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
383692          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
383693          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
383694          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
383695 
383696    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
383697       --
383698       -- following sets the accounting attributes needed to reverse
383699       -- accounting for a distributeion
383700       --
383701 
383702       --
383703       -- 5217187
383704       --
383705       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
383706       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
383707                                        g_array_event(l_event_id).array_value_num('header_index'));
383708       --
383709       --
383710 
383711       -- No reversal code generated
383712 
383713       xla_ae_lines_pkg.SetAcctReversalAttrs
383714          (p_event_id             => l_event_id
383715          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
383716          ,p_calculate_acctd_flag => l_calculate_acctd_flag
383717          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
383718    END IF;
383719 
383720    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
383721        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
383722 
383723 --
383724 AcctLineType_60 (
383725  p_application_id  => p_application_id
383726  ,p_event_id     => l_event_id
383727  ,p_calculate_acctd_flag => l_calculate_acctd_flag
383728  ,p_calculate_g_l_flag => l_calculate_g_l_flag
383729  ,p_actual_flag => l_actual_flag
383730  ,p_balance_type_code => l_balance_type_code
383731  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
383732  
383733  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
383734  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
383735  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
383736  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
383737  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
383738  , p_source_11 => l_array_source_11(Idx)
383739  , p_source_84 => l_array_source_84(Idx)
383740  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
383741  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
383742  , p_source_88 => l_array_source_88(Idx)
383743  , p_source_91 => l_array_source_91(Idx)
383744  , p_source_92 => l_array_source_92(Idx)
383745  , p_source_93 => l_array_source_93(Idx)
383746  , p_source_94 => l_array_source_94(Idx)
383747  , p_source_95 => l_array_source_95(Idx)
383748  , p_source_97 => l_array_source_97(Idx)
383749  );
383750 If(l_balance_type_code = 'A') THEN
383751   l_actual_gain_loss_ref := l_gain_or_loss_ref;
383752 END IF;
383753 
383754 --
383755 
383756 
383757 --
383758 AcctLineType_71 (
383759  p_application_id  => p_application_id
383760  ,p_event_id     => l_event_id
383761  ,p_calculate_acctd_flag => l_calculate_acctd_flag
383762  ,p_calculate_g_l_flag => l_calculate_g_l_flag
383763  ,p_actual_flag => l_actual_flag
383764  ,p_balance_type_code => l_balance_type_code
383765  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
383766  
383767  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
383768  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
383769  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
383770  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
383771  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
383772  , p_source_11 => l_array_source_11(Idx)
383773  , p_source_84 => l_array_source_84(Idx)
383774  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
383775  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
383776  , p_source_88 => l_array_source_88(Idx)
383777  , p_source_91 => l_array_source_91(Idx)
383778  , p_source_92 => l_array_source_92(Idx)
383779  , p_source_93 => l_array_source_93(Idx)
383780  , p_source_94 => l_array_source_94(Idx)
383781  , p_source_95 => l_array_source_95(Idx)
383782  , p_source_97 => l_array_source_97(Idx)
383783  );
383784 If(l_balance_type_code = 'A') THEN
383785   l_actual_gain_loss_ref := l_gain_or_loss_ref;
383786 END IF;
383787 
383788 --
383789 
383790 
383791 --
383792 AcctLineType_102 (
383793  p_application_id  => p_application_id
383794  ,p_event_id     => l_event_id
383795  ,p_calculate_acctd_flag => l_calculate_acctd_flag
383796  ,p_calculate_g_l_flag => l_calculate_g_l_flag
383797  ,p_actual_flag => l_actual_flag
383798  ,p_balance_type_code => l_balance_type_code
383799  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
383800  
383801  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
383802  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
383803  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
383804  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
383805  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
383806  , p_source_11 => l_array_source_11(Idx)
383807  , p_source_84 => l_array_source_84(Idx)
383808  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
383809  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
383810  , p_source_88 => l_array_source_88(Idx)
383811  , p_source_91 => l_array_source_91(Idx)
383812  , p_source_92 => l_array_source_92(Idx)
383813  , p_source_93 => l_array_source_93(Idx)
383814  , p_source_94 => l_array_source_94(Idx)
383815  , p_source_95 => l_array_source_95(Idx)
383816  , p_source_97 => l_array_source_97(Idx)
383817  );
383818 If(l_balance_type_code = 'A') THEN
383819   l_actual_gain_loss_ref := l_gain_or_loss_ref;
383820 END IF;
383821 
383822 --
383823 
383824 
383825 --
383826 AcctLineType_120 (
383827  p_application_id  => p_application_id
383828  ,p_event_id     => l_event_id
383829  ,p_calculate_acctd_flag => l_calculate_acctd_flag
383830  ,p_calculate_g_l_flag => l_calculate_g_l_flag
383831  ,p_actual_flag => l_actual_flag
383832  ,p_balance_type_code => l_balance_type_code
383833  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
383834  
383835  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
383836  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
383837  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
383838  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
383839  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
383840  , p_source_11 => l_array_source_11(Idx)
383841  , p_source_84 => l_array_source_84(Idx)
383842  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
383843  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
383844  , p_source_88 => l_array_source_88(Idx)
383845  , p_source_91 => l_array_source_91(Idx)
383846  , p_source_92 => l_array_source_92(Idx)
383847  , p_source_93 => l_array_source_93(Idx)
383848  , p_source_94 => l_array_source_94(Idx)
383849  , p_source_95 => l_array_source_95(Idx)
383850  , p_source_97 => l_array_source_97(Idx)
383851  );
383852 If(l_balance_type_code = 'A') THEN
383853   l_actual_gain_loss_ref := l_gain_or_loss_ref;
383854 END IF;
383855 
383856 --
383857 
383858 
383859 --
383860 AcctLineType_281 (
383861  p_application_id  => p_application_id
383862  ,p_event_id     => l_event_id
383863  ,p_calculate_acctd_flag => l_calculate_acctd_flag
383864  ,p_calculate_g_l_flag => l_calculate_g_l_flag
383865  ,p_actual_flag => l_actual_flag
383866  ,p_balance_type_code => l_balance_type_code
383867  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
383868  
383869  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
383870  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
383871  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
383872  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
383873  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
383874  , p_source_15 => l_array_source_15(Idx)
383875  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
383876  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
383877  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
383878  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
383879  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
383880  , p_source_84 => l_array_source_84(Idx)
383881  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
383882  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
383883  , p_source_88 => l_array_source_88(Idx)
383884  , p_source_91 => l_array_source_91(Idx)
383885  , p_source_92 => l_array_source_92(Idx)
383886  , p_source_93 => l_array_source_93(Idx)
383887  , p_source_94 => l_array_source_94(Idx)
383888  , p_source_95 => l_array_source_95(Idx)
383889  , p_source_97 => l_array_source_97(Idx)
383890  , p_source_108 => l_array_source_108(Idx)
383891  );
383892 If(l_balance_type_code = 'A') THEN
383893   l_actual_gain_loss_ref := l_gain_or_loss_ref;
383894 END IF;
383895 
383896 --
383897 
383898       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
383899       -- or secondary ledger that has different currency with primary
383900       -- or alc that is calculated by sla
383901       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
383902             (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'))
383903 
383904 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
383905 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
383906           AND (l_actual_flag = 'A')) THEN
383907         XLA_AE_LINES_PKG.CreateGainOrLossLines(
383908           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
383909          ,p_application_id   => p_application_id
383910          ,p_amb_context_code => 'DEFAULT'
383911          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
383912          ,p_event_class_code => C_EVENT_CLASS_CODE
383913          ,p_event_type_code  => C_EVENT_TYPE_CODE
383914          
383915          ,p_gain_ccid        => -1
383916          ,p_loss_ccid        => -1
383917 
383918          ,p_actual_flag      => l_actual_flag
383919          ,p_enc_flag         => null
383920          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
383921          ,p_enc_g_l_ref      => null
383922          );
383923       END IF;
383924    END IF;
383925 END IF;
383926 
383927    ELSE
383928       --
383929       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
383930       --
383931       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
383932          trace
383933             (p_msg      => 'Trancaction revesal option is Y'
383934             ,p_level    => C_LEVEL_STATEMENT
383935             ,p_module   => l_log_module);
383936       END IF;
383937    END IF;
383938 
383939 END LOOP;
383940 l_result := XLA_AE_LINES_PKG.InsertLines ;
383941 end loop;
383942 close line_cur;
383943 
383944 
383945 --
383946 -- insert headers into xla_ae_headers_gt table
383947 --
383948 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
383949 
383950 -- insert into errors table here.
383951 
383952 END LOOP;
383953 
383954 --
383955 -- 4865292
383956 --
383957 -- Compare g_hdr_extract_count with event count in
383958 -- CreateHeadersAndLines.
383959 --
383960 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
383961 
383962 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
383963    trace (p_msg     => '# rows extracted from header extract objects '
383964                     || ' (running total): '
383965                     || g_hdr_extract_count
383966          ,p_level   => C_LEVEL_STATEMENT
383967          ,p_module  => l_log_module);
383968 END IF;
383969 
383970 CLOSE header_cur;
383971 --
383972 
383973 --
383974 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
383975    trace
383976       (p_msg      => 'END of EventType_594'
383977       ,p_level    => C_LEVEL_PROCEDURE
383978       ,p_module   => l_log_module);
383979 END IF;
383980 --
383981 RETURN l_result;
383982 EXCEPTION
383983 WHEN xla_exceptions_pkg.application_exception THEN
383984    
383985 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
383986 
383987    
383988 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
383989 
383990    RAISE;
383991 
383992 WHEN NO_DATA_FOUND THEN
383993 
383994 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
383995 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
383996 
383997 FOR header_record IN header_cur
383998 LOOP
383999     l_array_header_events(header_record.event_id) := header_record.event_id;
384000 END LOOP;
384001 
384002 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
384003 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
384004 
384005 fnd_file.put_line(fnd_file.LOG, '                    ');
384006 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
384007 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
384008 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
384009 
384010 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
384011 LOOP
384012 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
384013 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
384014         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
384015 	END IF;
384016 END LOOP;
384017 
384018 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
384019 fnd_file.put_line(fnd_file.LOG, '                    ');
384020 
384021 
384022 xla_exceptions_pkg.raise_message
384023       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_594');
384024 
384025 
384026 WHEN OTHERS THEN
384027    xla_exceptions_pkg.raise_message
384028       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_594');
384029 END EventType_594;
384030 --
384031 
384032 ---------------------------------------
384033 --
384034 -- PRIVATE PROCEDURE
384035 --         insert_sources_595
384036 --
384037 ----------------------------------------
384038 --
384039 PROCEDURE insert_sources_595(
384040                                 p_target_ledger_id       IN NUMBER
384041                               , p_language               IN VARCHAR2
384042                               , p_sla_ledger_id          IN NUMBER
384043                               , p_pad_start_date         IN DATE
384044                               , p_pad_end_date           IN DATE
384045                          )
384046 IS
384047 
384048 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RMA_RETURN';
384049 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
384050 p_apps_owner                   VARCHAR2(30);
384051 l_log_module                   VARCHAR2(240);
384052 BEGIN
384053 IF g_log_enabled THEN
384054       l_log_module := C_DEFAULT_MODULE||'.insert_sources_595';
384055 END IF;
384056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
384057 
384058       trace
384059          (p_msg      => 'BEGIN of insert_sources_595'
384060          ,p_level    => C_LEVEL_PROCEDURE
384061          ,p_module   => l_log_module);
384062 
384063 END IF;
384064 
384065 -- select APPS owner
384066 SELECT oracle_username
384067   INTO p_apps_owner
384068   FROM fnd_oracle_userid
384069  WHERE read_only_flag = 'U'
384070 ;
384071 
384072 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
384073       trace
384074          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
384075                         ' - p_language = '||p_language||
384076                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
384077                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
384078                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
384079                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
384080          ,p_level    => C_LEVEL_STATEMENT
384081          ,p_module   => l_log_module);
384082 END IF;
384083 
384084 
384085 --
384086 INSERT INTO xla_diag_sources --hdr1
384087 (
384088         event_id
384089       , ledger_id
384090       , sla_ledger_id
384091       , description_language
384092       , object_name
384093       , object_type_code
384094       , line_number
384095       , source_application_id
384096       , source_type_code
384097       , source_code
384098       , source_value
384099       , source_meaning
384100       , created_by
384101       , creation_date
384102       , last_update_date
384103       , last_updated_by
384104       , last_update_login
384105       , program_update_date
384106       , program_application_id
384107       , program_id
384108       , request_id
384109 )
384110 SELECT
384111         event_id
384112       , p_target_ledger_id
384113       , p_sla_ledger_id
384114       , p_language
384115       , object_name
384116       , object_type_code
384117       , line_number
384118       , source_application_id
384119       , source_type_code
384120       , source_code
384121       , SUBSTR(source_value ,1,1996)
384122       , SUBSTR(source_meaning,1,200)
384123       , xla_environment_pkg.g_Usr_Id
384124       , TRUNC(SYSDATE)
384125       , TRUNC(SYSDATE)
384126       , xla_environment_pkg.g_Usr_Id
384127       , xla_environment_pkg.g_Login_Id
384128       , TRUNC(SYSDATE)
384129       , xla_environment_pkg.g_Prog_Appl_Id
384130       , xla_environment_pkg.g_Prog_Id
384131       , xla_environment_pkg.g_Req_Id
384132   FROM (
384133        SELECT xet.event_id                  event_id
384134             , 0                             line_number
384135             , CASE r
384136                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
384137                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
384138                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
384139                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
384140                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
384141                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
384142                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
384143                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
384144                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
384145                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
384146                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
384147                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
384148                 
384149                ELSE null
384150               END                           object_name
384151             , CASE r
384152                 WHEN 1 THEN 'HEADER' 
384153                 WHEN 2 THEN 'HEADER' 
384154                 WHEN 3 THEN 'HEADER' 
384155                 WHEN 4 THEN 'HEADER' 
384156                 WHEN 5 THEN 'HEADER' 
384157                 WHEN 6 THEN 'HEADER' 
384158                 WHEN 7 THEN 'HEADER' 
384159                 WHEN 8 THEN 'HEADER' 
384160                 WHEN 9 THEN 'HEADER' 
384161                 WHEN 10 THEN 'HEADER' 
384162                 WHEN 11 THEN 'HEADER' 
384163                 WHEN 12 THEN 'HEADER' 
384164                 
384165                 ELSE null
384166               END                           object_type_code
384167             , CASE r
384168                 WHEN 1 THEN '707' 
384169                 WHEN 2 THEN '707' 
384170                 WHEN 3 THEN '707' 
384171                 WHEN 4 THEN '707' 
384172                 WHEN 5 THEN '707' 
384173                 WHEN 6 THEN '707' 
384174                 WHEN 7 THEN '707' 
384175                 WHEN 8 THEN '707' 
384176                 WHEN 9 THEN '707' 
384177                 WHEN 10 THEN '707' 
384178                 WHEN 11 THEN '707' 
384179                 WHEN 12 THEN '707' 
384180                 
384181                 ELSE null
384182               END                           source_application_id
384183             , 'S'             source_type_code
384184             , CASE r
384185                 WHEN 1 THEN 'TRANSACTION_ID' 
384186                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
384187                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
384188                 WHEN 4 THEN 'TRANSACTION_UOM' 
384189                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
384190                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
384191                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
384192                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
384193                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
384194                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
384195                 WHEN 11 THEN 'DISTRIBUTION_TYPE' 
384196                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
384197                 
384198                 ELSE null
384199               END                           source_code
384200             , CASE r
384201                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
384202                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
384203                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
384204                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
384205                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
384206                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
384207                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
384208                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
384209                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
384210                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
384211                 WHEN 11 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
384212                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
384213                 
384214                 ELSE null
384215               END                           source_value
384216             , CASE r
384217                 WHEN 11 THEN fvl85.meaning
384218                 WHEN 12 THEN fvl114.meaning
384219                 
384220                 ELSE null
384221               END               source_meaning
384222         FROM xla_events_gt     xet  
384223       , CST_XLA_INV_HEADERS_V  h1
384224       , CST_XLA_INV_REF_V  h3
384225       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
384226       , CST_XLA_INV_TXN_TYPES_REF_V  h5
384227       , CST_XLA_PLA_CATEGORY_REF_V  h6
384228   , fnd_lookup_values    fvl85
384229   , fnd_lookup_values    fvl114
384230             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
384231        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
384232          AND xet.event_type_code = C_EVENT_TYPE_CODE
384233             AND h1.event_id = xet.event_id
384234  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
384235 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
384236 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
384237   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
384238   AND fvl85.view_application_id(+) = 700
384239   AND fvl85.language(+)            = USERENV('LANG')
384240      AND fvl114.lookup_type(+)         = 'YES_NO'
384241   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
384242   AND fvl114.view_application_id(+) = 0
384243   AND fvl114.language(+)            = USERENV('LANG')
384244   
384245 )
384246 ;
384247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
384248 
384249       trace
384250          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
384251          ,p_level    => C_LEVEL_STATEMENT
384252          ,p_module   => l_log_module);
384253 
384254 END IF;
384255 --
384256 
384257 
384258 
384259 --
384260 INSERT INTO xla_diag_sources --line1
384261 (
384262         event_id
384263       , ledger_id
384264       , sla_ledger_id
384265       , description_language
384266       , object_name
384267       , object_type_code
384268       , line_number
384269       , source_application_id
384270       , source_type_code
384271       , source_code
384272       , source_value
384273       , source_meaning
384274       , created_by
384275       , creation_date
384276       , last_update_date
384277       , last_updated_by
384278       , last_update_login
384279       , program_update_date
384280       , program_application_id
384281       , program_id
384282       , request_id
384283 )
384284 SELECT  event_id
384285       , p_target_ledger_id
384286       , p_sla_ledger_id
384287       , p_language
384288       , object_name
384289       , object_type_code
384290       , line_number
384291       , source_application_id
384292       , source_type_code
384293       , source_code
384294       , SUBSTR(source_value,1,1996)
384295       , SUBSTR(source_meaning,1,200)
384296       , xla_environment_pkg.g_Usr_Id
384297       , TRUNC(SYSDATE)
384298       , TRUNC(SYSDATE)
384299       , xla_environment_pkg.g_Usr_Id
384300       , xla_environment_pkg.g_Login_Id
384301       , TRUNC(SYSDATE)
384302       , xla_environment_pkg.g_Prog_Appl_Id
384303       , xla_environment_pkg.g_Prog_Id
384304       , xla_environment_pkg.g_Req_Id
384305   FROM (
384306        SELECT xet.event_id                  event_id
384307             , l2.line_number                 line_number
384308             , CASE r
384309                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
384310                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
384311                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
384312                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
384313                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
384314                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
384315                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
384316                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
384317                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
384318                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
384319                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
384320                 
384321                ELSE null
384322               END                           object_name
384323             , CASE r
384324                 WHEN 1 THEN 'LINE' 
384325                 WHEN 2 THEN 'LINE' 
384326                 WHEN 3 THEN 'LINE' 
384327                 WHEN 4 THEN 'LINE' 
384328                 WHEN 5 THEN 'LINE' 
384329                 WHEN 6 THEN 'LINE' 
384330                 WHEN 7 THEN 'LINE' 
384331                 WHEN 8 THEN 'LINE' 
384332                 WHEN 9 THEN 'LINE' 
384333                 WHEN 10 THEN 'LINE' 
384334                 WHEN 11 THEN 'LINE' 
384335                 
384336                 ELSE null
384337               END                           object_type_code
384338             , CASE r
384339                 WHEN 1 THEN '707' 
384340                 WHEN 2 THEN '707' 
384341                 WHEN 3 THEN '707' 
384342                 WHEN 4 THEN '707' 
384343                 WHEN 5 THEN '707' 
384344                 WHEN 6 THEN '707' 
384345                 WHEN 7 THEN '707' 
384346                 WHEN 8 THEN '707' 
384347                 WHEN 9 THEN '707' 
384348                 WHEN 10 THEN '707' 
384349                 WHEN 11 THEN '707' 
384350                 
384351                 ELSE null
384352               END                           source_application_id
384353             , 'S'             source_type_code
384354             , CASE r
384355                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
384356                 WHEN 2 THEN 'COST_ELEMENT_ID' 
384357                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
384358                 WHEN 4 THEN 'CURRENCY_CODE' 
384359                 WHEN 5 THEN 'ENTERED_AMOUNT' 
384360                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
384361                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
384362                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
384363                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
384364                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
384365                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
384366                 
384367                 ELSE null
384368               END                           source_code
384369             , CASE r
384370                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
384371                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
384372                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
384373                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
384374                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
384375                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
384376                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
384377                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
384378                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
384379                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
384380                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
384381                 
384382                 ELSE null
384383               END                           source_value
384384             , CASE r
384385                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
384386                           1009615
384387                          ,TO_CHAR(l2.COST_ELEMENT_ID)
384388                          ,'COST_ELEMENT_ID'
384389                          ,'S'
384390                          ,707)
384391                 
384392                 ELSE null
384393               END               source_meaning
384394          FROM  xla_events_gt     xet  
384395         , CST_XLA_INV_LINES_V  l2
384396             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
384397         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
384398           AND xet.event_type_code = C_EVENT_TYPE_CODE
384399             AND l2.event_id          = xet.event_id
384400 
384401 )
384402 ;
384403 --
384404 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
384405 
384406       trace
384407          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
384408          ,p_level    => C_LEVEL_STATEMENT
384409          ,p_module   => l_log_module);
384410 
384411 END IF;
384412 
384413 
384414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
384415       trace
384416          (p_msg      => 'END of insert_sources_595'
384417          ,p_level    => C_LEVEL_PROCEDURE
384418          ,p_module   => l_log_module);
384419 END IF;
384420 EXCEPTION
384421   WHEN xla_exceptions_pkg.application_exception THEN
384422       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
384423             trace
384424                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
384425                ,p_level    => C_LEVEL_EXCEPTION
384426                ,p_module   => l_log_module);
384427       END IF;
384428       RAISE;
384429   WHEN OTHERS THEN
384430       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
384431             trace
384432                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
384433                ,p_level    => C_LEVEL_EXCEPTION
384434                ,p_module   => l_log_module);
384435        END IF;
384436        xla_exceptions_pkg.raise_message
384437            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_595');
384438 END insert_sources_595;
384439 --
384440 
384441 ---------------------------------------
384442 --
384443 -- PRIVATE FUNCTION
384444 --         EventType_595
384445 --
384446 ----------------------------------------
384447 --
384448 FUNCTION EventType_595
384449        (p_application_id         IN NUMBER
384450        ,p_base_ledger_id         IN NUMBER
384451        ,p_target_ledger_id       IN NUMBER
384452        ,p_language               IN VARCHAR2
384453        ,p_currency_code          IN VARCHAR2
384454        ,p_sla_ledger_id          IN NUMBER
384455        ,p_pad_start_date         IN DATE
384456        ,p_pad_end_date           IN DATE
384457        ,p_primary_ledger_id      IN NUMBER)
384458 RETURN BOOLEAN IS
384459 --
384460 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RMA_RETURN';
384461 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
384462 
384463 l_calculate_acctd_flag   VARCHAR2(1) :='N';
384464 l_calculate_g_l_flag     VARCHAR2(1) :='N';
384465 --
384466 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384467 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384468 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
384469 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
384470 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384471 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
384472 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
384473 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384474 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
384475 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
384476 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384477 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384478 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384479 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
384480 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
384481 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
384482 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
384483 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
384484 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
384485 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
384486 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
384487 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
384488 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
384489 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
384490 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
384491 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
384492 
384493 l_event_id                             NUMBER;
384494 l_previous_event_id                    NUMBER;
384495 l_first_event_id                       NUMBER;
384496 l_last_event_id                        NUMBER;
384497 
384498 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
384499 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
384500 --
384501 --
384502 l_result                    BOOLEAN := TRUE;
384503 l_rows                      NUMBER  := 1000;
384504 l_event_type_name           VARCHAR2(80) := 'RMA Return';
384505 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
384506 l_description               VARCHAR2(4000);
384507 l_transaction_reversal      NUMBER;
384508 l_ae_header_id              NUMBER;
384509 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
384510 l_log_module                VARCHAR2(240);
384511 --
384512 l_acct_reversal_source      VARCHAR2(30);
384513 l_trx_reversal_source       VARCHAR2(30);
384514 
384515 l_continue_with_lines       BOOLEAN := TRUE;
384516 --
384517 l_acc_rev_gl_date_source    DATE;                      -- 4262811
384518 --
384519 type t_array_event_id is table of number index by binary_integer;
384520 
384521 l_rec_array_event                    t_rec_array_event;
384522 l_null_rec_array_event               t_rec_array_event;
384523 l_array_ae_header_id                 xla_number_array_type;
384524 l_actual_flag                        VARCHAR2(1) := NULL;
384525 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
384526 l_balance_type_code                  VARCHAR2(1) :=NULL;
384527 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
384528 
384529 --
384530 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
384531 --
384532 
384533 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
384534 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
384535 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
384536 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
384537 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
384538 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
384539 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
384540 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
384541 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
384542 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
384543 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
384544 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
384545 
384546 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
384547 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
384548 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
384549 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
384550 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
384551 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
384552 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
384553 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
384554 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
384555 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
384556 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
384557 
384558 l_array_source_1              t_array_source_1;
384559 l_array_source_2              t_array_source_2;
384560 l_array_source_3              t_array_source_3;
384561 l_array_source_4              t_array_source_4;
384562 l_array_source_5              t_array_source_5;
384563 l_array_source_41              t_array_source_41;
384564 l_array_source_42              t_array_source_42;
384565 l_array_source_43              t_array_source_43;
384566 l_array_source_44              t_array_source_44;
384567 l_array_source_45              t_array_source_45;
384568 l_array_source_85              t_array_source_85;
384569 l_array_source_85_meaning      t_array_lookup_meaning;
384570 l_array_source_114              t_array_source_114;
384571 l_array_source_114_meaning      t_array_lookup_meaning;
384572 
384573 l_array_source_11      t_array_source_11;
384574 l_array_source_15      t_array_source_15;
384575 l_array_source_84      t_array_source_84;
384576 l_array_source_88      t_array_source_88;
384577 l_array_source_91      t_array_source_91;
384578 l_array_source_92      t_array_source_92;
384579 l_array_source_93      t_array_source_93;
384580 l_array_source_94      t_array_source_94;
384581 l_array_source_95      t_array_source_95;
384582 l_array_source_97      t_array_source_97;
384583 l_array_source_108      t_array_source_108;
384584 
384585 --
384586 CURSOR header_cur
384587 IS
384588 SELECT /*+ leading(xet) cardinality(xet,1) */
384589 -- Event Type Code: RMA_RETURN
384590 -- Event Class Code: SALES_ORDER
384591     xet.entity_id
384592   , xet.legal_entity_id
384593   , xet.entity_code
384594   , xet.transaction_number
384595   , xet.event_id
384596   , xet.event_class_code
384597   , xet.event_type_code
384598   , xet.event_number
384599   , xet.event_date
384600   , xet.transaction_date
384601   , xet.reference_num_1
384602   , xet.reference_num_2
384603   , xet.reference_num_3
384604   , xet.reference_num_4
384605   , xet.reference_char_1
384606   , xet.reference_char_2
384607   , xet.reference_char_3
384608   , xet.reference_char_4
384609   , xet.reference_date_1
384610   , xet.reference_date_2
384611   , xet.reference_date_3
384612   , xet.reference_date_4
384613   , xet.event_created_by
384614   , xet.budgetary_control_flag 
384615   , h1.TRANSACTION_ID    source_1
384616   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
384617   , h3.TRANSACTION_QUANTITY    source_3
384618   , h3.TRANSACTION_UOM    source_4
384619   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
384620   , h6.PLA_MATERIAL_ACCOUNT    source_41
384621   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
384622   , h6.PLA_RESOURCE_ACCOUNT    source_43
384623   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
384624   , h6.PLA_OVERHEAD_ACCOUNT    source_45
384625   , h1.DISTRIBUTION_TYPE    source_85
384626   , fvl85.meaning   source_85_meaning
384627   , h1.TRANSFER_TO_GL_INDICATOR    source_114
384628   , fvl114.meaning   source_114_meaning
384629   FROM xla_events_gt     xet 
384630   , CST_XLA_INV_HEADERS_V  h1
384631   , CST_XLA_INV_REF_V  h3
384632   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
384633   , CST_XLA_INV_TXN_TYPES_REF_V  h5
384634   , CST_XLA_PLA_CATEGORY_REF_V  h6
384635   , fnd_lookup_values    fvl85
384636   , fnd_lookup_values    fvl114
384637  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
384638    and xet.event_type_code = C_EVENT_TYPE_CODE
384639    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
384640  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
384641 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
384642 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
384643   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
384644   AND fvl85.view_application_id(+) = 700
384645   AND fvl85.language(+)            = USERENV('LANG')
384646      AND fvl114.lookup_type(+)         = 'YES_NO'
384647   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
384648   AND fvl114.view_application_id(+) = 0
384649   AND fvl114.language(+)            = USERENV('LANG')
384650   
384651  ORDER BY event_id
384652 ;
384653 
384654 
384655 --
384656 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
384657 IS
384658 SELECT /*+ leading(xet) cardinality(xet,1) */
384659 -- Event Type Code: RMA_RETURN
384660 -- Event Class Code: SALES_ORDER
384661     xet.entity_id
384662    ,xet.legal_entity_id
384663    ,xet.entity_code
384664    ,xet.transaction_number
384665    ,xet.event_id
384666    ,xet.event_class_code
384667    ,xet.event_type_code
384668    ,xet.event_number
384669    ,xet.event_date
384670    ,xet.transaction_date
384671    ,xet.reference_num_1
384672    ,xet.reference_num_2
384673    ,xet.reference_num_3
384674    ,xet.reference_num_4
384675    ,xet.reference_char_1
384676    ,xet.reference_char_2
384677    ,xet.reference_char_3
384678    ,xet.reference_char_4
384679    ,xet.reference_date_1
384680    ,xet.reference_date_2
384681    ,xet.reference_date_3
384682    ,xet.reference_date_4
384683    ,xet.event_created_by
384684    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
384685   , l2.CODE_COMBINATION_ID    source_11
384686   , l2.COST_ELEMENT_ID    source_15
384687   , l2.DISTRIBUTION_IDENTIFIER    source_84
384688   , l2.CURRENCY_CODE    source_88
384689   , l2.ENTERED_AMOUNT    source_91
384690   , l2.CURRENCY_CONVERSION_DATE    source_92
384691   , l2.CURRENCY_CONVERSION_RATE    source_93
384692   , l2.CURRENCY_CONVERSION_TYPE    source_94
384693   , l2.ACCOUNTED_AMOUNT    source_95
384694   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
384695   , l2.L_ORGANIZATION_CODE    source_108
384696   FROM xla_events_gt     xet 
384697   , CST_XLA_INV_LINES_V  l2
384698  WHERE xet.event_id between x_first_event_id and x_last_event_id
384699    and xet.event_date between p_pad_start_date and p_pad_end_date
384700    and xet.event_type_code = C_EVENT_TYPE_CODE
384701    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
384702 ;
384703 
384704 --
384705 BEGIN
384706 IF g_log_enabled THEN
384707    l_log_module := C_DEFAULT_MODULE||'.EventType_595';
384708 END IF;
384709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
384710    trace
384711       (p_msg      => 'BEGIN of EventType_595'
384712       ,p_level    => C_LEVEL_PROCEDURE
384713       ,p_module   => l_log_module);
384714 END IF;
384715 
384716 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
384717    trace
384718       (p_msg      => 'p_application_id = '||p_application_id||
384719                      ' - p_base_ledger_id = '||p_base_ledger_id||
384720                      ' - p_target_ledger_id  = '||p_target_ledger_id||
384721                      ' - p_language = '||p_language||
384722                      ' - p_currency_code = '||p_currency_code||
384723                      ' - p_sla_ledger_id = '||p_sla_ledger_id
384724       ,p_level    => C_LEVEL_STATEMENT
384725       ,p_module   => l_log_module);
384726 END IF;
384727 --
384728 -- initialze arrays
384729 --
384730 g_array_event.DELETE;
384731 l_rec_array_event := l_null_rec_array_event;
384732 --
384733 --------------------------------------
384734 -- 4262811 Initialze MPA Line Number
384735 --------------------------------------
384736 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
384737 
384738 --
384739 
384740 --
384741 OPEN header_cur;
384742 --
384743 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
384744    trace
384745    (p_msg      => 'SQL - FETCH header_cur'
384746    ,p_level    => C_LEVEL_STATEMENT
384747    ,p_module   => l_log_module);
384748 END IF;
384749 --
384750 LOOP
384751 FETCH header_cur BULK COLLECT INTO
384752         l_array_entity_id
384753       , l_array_legal_entity_id
384754       , l_array_entity_code
384755       , l_array_transaction_num
384756       , l_array_event_id
384757       , l_array_class_code
384758       , l_array_event_type
384759       , l_array_event_number
384760       , l_array_event_date
384761       , l_array_transaction_date
384762       , l_array_reference_num_1
384763       , l_array_reference_num_2
384764       , l_array_reference_num_3
384765       , l_array_reference_num_4
384766       , l_array_reference_char_1
384767       , l_array_reference_char_2
384768       , l_array_reference_char_3
384769       , l_array_reference_char_4
384770       , l_array_reference_date_1
384771       , l_array_reference_date_2
384772       , l_array_reference_date_3
384773       , l_array_reference_date_4
384774       , l_array_event_created_by
384775       , l_array_budgetary_control_flag 
384776       , l_array_source_1
384777       , l_array_source_2
384778       , l_array_source_3
384779       , l_array_source_4
384780       , l_array_source_5
384781       , l_array_source_41
384782       , l_array_source_42
384783       , l_array_source_43
384784       , l_array_source_44
384785       , l_array_source_45
384786       , l_array_source_85
384787       , l_array_source_85_meaning
384788       , l_array_source_114
384789       , l_array_source_114_meaning
384790       LIMIT l_rows;
384791 --
384792 IF (C_LEVEL_EVENT >= g_log_level) THEN
384793    trace
384794    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
384795    ,p_level    => C_LEVEL_EVENT
384796    ,p_module   => l_log_module);
384797 END IF;
384798 --
384799 EXIT WHEN l_array_entity_id.COUNT = 0;
384800 
384801 -- initialize arrays
384802 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
384803 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
384804 
384805 --
384806 -- Bug 4458708
384807 --
384808 XLA_AE_LINES_PKG.g_LineNumber := 0;
384809 
384810 
384811 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
384812 g_last_hdr_idx := l_array_event_id.LAST;
384813 --
384814 -- loop for the headers. Each iteration is for each header extract row
384815 -- fetched in header cursor
384816 --
384817 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
384818 
384819 --
384820 -- set event info as cache for other routines to refer event attributes
384821 --
384822 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
384823    (p_application_id           => p_application_id
384824    ,p_primary_ledger_id        => p_primary_ledger_id
384825    ,p_base_ledger_id           => p_base_ledger_id
384826    ,p_target_ledger_id         => p_target_ledger_id
384827    ,p_entity_id                => l_array_entity_id(hdr_idx)
384828    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
384829    ,p_entity_code              => l_array_entity_code(hdr_idx)
384830    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
384831    ,p_event_id                 => l_array_event_id(hdr_idx)
384832    ,p_event_class_code         => l_array_class_code(hdr_idx)
384833    ,p_event_type_code          => l_array_event_type(hdr_idx)
384834    ,p_event_number             => l_array_event_number(hdr_idx)
384835    ,p_event_date               => l_array_event_date(hdr_idx)
384836    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
384837    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
384838    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
384839    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
384840    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
384841    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
384842    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
384843    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
384844    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
384845    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
384846    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
384847    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
384848    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
384849    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
384850    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
384851 
384852 --
384853 -- set the status of entry to C_VALID (0)
384854 --
384855 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
384856 
384857 --
384858 -- initialize a row for ae header
384859 --
384860 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
384861 
384862 l_event_id := l_array_event_id(hdr_idx);
384863 
384864 --
384865 -- storing the hdr_idx for event. May be used by line cursor.
384866 --
384867 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
384868 
384869 --
384870 -- store sources from header extract. This can be improved to
384871 -- store only those sources from header extract that may be used in lines
384872 --
384873 
384874 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
384875 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
384876 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
384877 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
384878 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
384879 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
384880 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
384881 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
384882 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
384883 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
384884 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
384885 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
384886 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
384887 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
384888 
384889 --
384890 -- initilaize the status of ae headers for diffrent balance types
384891 -- the status is initialised to C_NOT_CREATED (2)
384892 --
384893 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
384894 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
384895 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
384896 
384897 --
384898 -- call api to validate and store accounting attributes for header
384899 --
384900 
384901 ------------------------------------------------------------
384902 -- Accrual Reversal : to get date for Standard Source (NONE)
384903 ------------------------------------------------------------
384904 l_acc_rev_gl_date_source := NULL;
384905 
384906      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
384907       l_rec_acct_attrs.array_date_value(1) := 
384908 xla_ae_sources_pkg.GetSystemSourceDate(
384909    p_source_code           => 'XLA_REFERENCE_DATE_1'
384910  , p_source_type_code      => 'Y'
384911  , p_source_application_id =>  602
384912 );
384913      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
384914       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
384915 
384916 
384917 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
384918 
384919 XLA_AE_HEADER_PKG.SetJeCategoryName;
384920 
384921 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
384922 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
384923 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
384924 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
384925 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
384926 
384927 
384928 -- No header level analytical criteria
384929 
384930 --
384931 --accounting attribute enhancement, bug 3612931
384932 --
384933 l_trx_reversal_source := SUBSTR(NULL, 1,30);
384934 
384935 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
384936    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
384937 
384938    xla_accounting_err_pkg.build_message
384939       (p_appli_s_name            => 'XLA'
384940       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
384941       ,p_token_1                 => 'ACCT_ATTR_NAME'
384942       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
384943       ,p_token_2                 => 'PRODUCT_NAME'
384944       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
384945       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
384946       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
384947       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
384948 
384949 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
384950    --
384951    -- following sets the accounting attributes needed to reverse
384952    -- accounting for a distributeion
384953    --
384954    xla_ae_lines_pkg.SetTrxReversalAttrs
384955       (p_event_id              => l_event_id
384956       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
384957       ,p_trx_reversal_source   => l_trx_reversal_source);
384958 
384959 END IF;
384960 
384961 
384962 ----------------------------------------------------------------
384963 -- 4262811 -  update the header statuses to invalid in need be
384964 ----------------------------------------------------------------
384965 --
384966 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
384967 
384968 
384969   -----------------------------------------------
384970   -- No accrual reversal for the event class/type
384971   -----------------------------------------------
384972 ----------------------------------------------------------------
384973 
384974 --
384975 -- this ends the header loop iteration for one bulk fetch
384976 --
384977 END LOOP;
384978 
384979 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
384980 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
384981 
384982 --
384983 -- insert dummy rows into lines gt table that were created due to
384984 -- transaction reversals
384985 --
384986 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
384987    l_result := XLA_AE_LINES_PKG.InsertLines;
384988 END IF;
384989 
384990 --
384991 -- reset the temp_line_num for each set of events fetched from header
384992 -- cursor rather than doing it for each new event in line cursor
384993 -- Bug 3939231
384994 --
384995 xla_ae_lines_pkg.g_temp_line_num := 0;
384996 
384997 
384998 
384999 --
385000 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
385001 --
385002 --
385003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385004 
385005       trace
385006          (p_msg      => 'SQL - FETCH line_cur'
385007          ,p_level    => C_LEVEL_STATEMENT
385008          ,p_module   => l_log_module);
385009 
385010 END IF;
385011 --
385012 --
385013 LOOP
385014   --
385015   FETCH line_cur BULK COLLECT INTO
385016         l_array_entity_id
385017       , l_array_legal_entity_id
385018       , l_array_entity_code
385019       , l_array_transaction_num
385020       , l_array_event_id
385021       , l_array_class_code
385022       , l_array_event_type
385023       , l_array_event_number
385024       , l_array_event_date
385025       , l_array_transaction_date
385026       , l_array_reference_num_1
385027       , l_array_reference_num_2
385028       , l_array_reference_num_3
385029       , l_array_reference_num_4
385030       , l_array_reference_char_1
385031       , l_array_reference_char_2
385032       , l_array_reference_char_3
385033       , l_array_reference_char_4
385034       , l_array_reference_date_1
385035       , l_array_reference_date_2
385036       , l_array_reference_date_3
385037       , l_array_reference_date_4
385038       , l_array_event_created_by
385039       , l_array_budgetary_control_flag
385040       , l_array_extract_line_num 
385041       , l_array_source_11
385042       , l_array_source_15
385043       , l_array_source_84
385044       , l_array_source_88
385045       , l_array_source_91
385046       , l_array_source_92
385047       , l_array_source_93
385048       , l_array_source_94
385049       , l_array_source_95
385050       , l_array_source_97
385051       , l_array_source_108
385052       LIMIT l_rows;
385053 
385054   --
385055   IF (C_LEVEL_EVENT >= g_log_level) THEN
385056             trace
385057                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
385058                ,p_level    => C_LEVEL_EVENT
385059                ,p_module   => l_log_module);
385060   END IF;
385061   --
385062   EXIT WHEN l_array_entity_id.count = 0;
385063 
385064   XLA_AE_LINES_PKG.g_rec_lines := null;
385065 
385066 --
385067 -- Bug 4458708
385068 --
385069 XLA_AE_LINES_PKG.g_LineNumber := 0;
385070 --
385071 --
385072 
385073 FOR Idx IN 1..l_array_event_id.count LOOP
385074    --
385075    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
385076    --
385077    l_event_id := l_array_event_id(idx);  -- 5648433
385078 
385079    --
385080    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
385081    --
385082 
385083    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
385084              (g_array_event(l_event_id).array_value_num('header_index'))
385085          ,'N'
385086          ) <> 'Y'
385087    THEN
385088       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385089          trace
385090             (p_msg      => 'Trancaction revesal option is not Y '
385091             ,p_level    => C_LEVEL_STATEMENT
385092             ,p_module   => l_log_module);
385093       END IF;
385094 
385095 --
385096 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
385097 --
385098 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
385099 --
385100 -- set event info as cache for other routines to refer event attributes
385101 --
385102 
385103 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
385104    l_previous_event_id := l_event_id;
385105 
385106    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
385107       (p_application_id           => p_application_id
385108       ,p_primary_ledger_id        => p_primary_ledger_id
385109       ,p_base_ledger_id           => p_base_ledger_id
385110       ,p_target_ledger_id         => p_target_ledger_id
385111       ,p_entity_id                => l_array_entity_id(Idx)
385112       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
385113       ,p_entity_code              => l_array_entity_code(Idx)
385114       ,p_transaction_num          => l_array_transaction_num(Idx)
385115       ,p_event_id                 => l_array_event_id(Idx)
385116       ,p_event_class_code         => l_array_class_code(Idx)
385117       ,p_event_type_code          => l_array_event_type(Idx)
385118       ,p_event_number             => l_array_event_number(Idx)
385119       ,p_event_date               => l_array_event_date(Idx)
385120       ,p_transaction_date         => l_array_transaction_date(Idx)
385121       ,p_reference_num_1          => l_array_reference_num_1(Idx)
385122       ,p_reference_num_2          => l_array_reference_num_2(Idx)
385123       ,p_reference_num_3          => l_array_reference_num_3(Idx)
385124       ,p_reference_num_4          => l_array_reference_num_4(Idx)
385125       ,p_reference_char_1         => l_array_reference_char_1(Idx)
385126       ,p_reference_char_2         => l_array_reference_char_2(Idx)
385127       ,p_reference_char_3         => l_array_reference_char_3(Idx)
385128       ,p_reference_char_4         => l_array_reference_char_4(Idx)
385129       ,p_reference_date_1         => l_array_reference_date_1(Idx)
385130       ,p_reference_date_2         => l_array_reference_date_2(Idx)
385131       ,p_reference_date_3         => l_array_reference_date_3(Idx)
385132       ,p_reference_date_4         => l_array_reference_date_4(Idx)
385133       ,p_event_created_by         => l_array_event_created_by(Idx)
385134       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
385135        --
385136 END IF;
385137 
385138 
385139 
385140 --
385141 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
385142 
385143 l_acct_reversal_source := SUBSTR(NULL, 1,30);
385144 
385145 IF l_continue_with_lines THEN
385146    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
385147       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
385148 
385149       xla_accounting_err_pkg.build_message
385150          (p_appli_s_name            => 'XLA'
385151          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
385152          ,p_token_1                 => 'LINE_NUMBER'
385153          ,p_value_1                 => l_array_extract_line_num(Idx)
385154          ,p_token_2                 => 'PRODUCT_NAME'
385155          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
385156          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
385157          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
385158          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
385159 
385160    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
385161       --
385162       -- following sets the accounting attributes needed to reverse
385163       -- accounting for a distributeion
385164       --
385165 
385166       --
385167       -- 5217187
385168       --
385169       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
385170       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
385171                                        g_array_event(l_event_id).array_value_num('header_index'));
385172       --
385173       --
385174 
385175       -- No reversal code generated
385176 
385177       xla_ae_lines_pkg.SetAcctReversalAttrs
385178          (p_event_id             => l_event_id
385179          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
385180          ,p_calculate_acctd_flag => l_calculate_acctd_flag
385181          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
385182    END IF;
385183 
385184    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
385185        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
385186 
385187 --
385188 AcctLineType_58 (
385189  p_application_id  => p_application_id
385190  ,p_event_id     => l_event_id
385191  ,p_calculate_acctd_flag => l_calculate_acctd_flag
385192  ,p_calculate_g_l_flag => l_calculate_g_l_flag
385193  ,p_actual_flag => l_actual_flag
385194  ,p_balance_type_code => l_balance_type_code
385195  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
385196  
385197  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
385198  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
385199  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
385200  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
385201  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
385202  , p_source_11 => l_array_source_11(Idx)
385203  , p_source_84 => l_array_source_84(Idx)
385204  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
385205  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
385206  , p_source_88 => l_array_source_88(Idx)
385207  , p_source_91 => l_array_source_91(Idx)
385208  , p_source_92 => l_array_source_92(Idx)
385209  , p_source_93 => l_array_source_93(Idx)
385210  , p_source_94 => l_array_source_94(Idx)
385211  , p_source_95 => l_array_source_95(Idx)
385212  , p_source_97 => l_array_source_97(Idx)
385213  );
385214 If(l_balance_type_code = 'A') THEN
385215   l_actual_gain_loss_ref := l_gain_or_loss_ref;
385216 END IF;
385217 
385218 --
385219 
385220 
385221 --
385222 AcctLineType_72 (
385223  p_application_id  => p_application_id
385224  ,p_event_id     => l_event_id
385225  ,p_calculate_acctd_flag => l_calculate_acctd_flag
385226  ,p_calculate_g_l_flag => l_calculate_g_l_flag
385227  ,p_actual_flag => l_actual_flag
385228  ,p_balance_type_code => l_balance_type_code
385229  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
385230  
385231  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
385232  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
385233  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
385234  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
385235  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
385236  , p_source_11 => l_array_source_11(Idx)
385237  , p_source_84 => l_array_source_84(Idx)
385238  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
385239  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
385240  , p_source_88 => l_array_source_88(Idx)
385241  , p_source_91 => l_array_source_91(Idx)
385242  , p_source_92 => l_array_source_92(Idx)
385243  , p_source_93 => l_array_source_93(Idx)
385244  , p_source_94 => l_array_source_94(Idx)
385245  , p_source_95 => l_array_source_95(Idx)
385246  , p_source_97 => l_array_source_97(Idx)
385247  );
385248 If(l_balance_type_code = 'A') THEN
385249   l_actual_gain_loss_ref := l_gain_or_loss_ref;
385250 END IF;
385251 
385252 --
385253 
385254 
385255 --
385256 AcctLineType_108 (
385257  p_application_id  => p_application_id
385258  ,p_event_id     => l_event_id
385259  ,p_calculate_acctd_flag => l_calculate_acctd_flag
385260  ,p_calculate_g_l_flag => l_calculate_g_l_flag
385261  ,p_actual_flag => l_actual_flag
385262  ,p_balance_type_code => l_balance_type_code
385263  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
385264  
385265  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
385266  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
385267  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
385268  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
385269  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
385270  , p_source_11 => l_array_source_11(Idx)
385271  , p_source_84 => l_array_source_84(Idx)
385272  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
385273  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
385274  , p_source_88 => l_array_source_88(Idx)
385275  , p_source_91 => l_array_source_91(Idx)
385276  , p_source_92 => l_array_source_92(Idx)
385277  , p_source_93 => l_array_source_93(Idx)
385278  , p_source_94 => l_array_source_94(Idx)
385279  , p_source_95 => l_array_source_95(Idx)
385280  , p_source_97 => l_array_source_97(Idx)
385281  );
385282 If(l_balance_type_code = 'A') THEN
385283   l_actual_gain_loss_ref := l_gain_or_loss_ref;
385284 END IF;
385285 
385286 --
385287 
385288 
385289 --
385290 AcctLineType_121 (
385291  p_application_id  => p_application_id
385292  ,p_event_id     => l_event_id
385293  ,p_calculate_acctd_flag => l_calculate_acctd_flag
385294  ,p_calculate_g_l_flag => l_calculate_g_l_flag
385295  ,p_actual_flag => l_actual_flag
385296  ,p_balance_type_code => l_balance_type_code
385297  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
385298  
385299  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
385300  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
385301  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
385302  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
385303  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
385304  , p_source_11 => l_array_source_11(Idx)
385305  , p_source_84 => l_array_source_84(Idx)
385306  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
385307  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
385308  , p_source_88 => l_array_source_88(Idx)
385309  , p_source_91 => l_array_source_91(Idx)
385310  , p_source_92 => l_array_source_92(Idx)
385311  , p_source_93 => l_array_source_93(Idx)
385312  , p_source_94 => l_array_source_94(Idx)
385313  , p_source_95 => l_array_source_95(Idx)
385314  , p_source_97 => l_array_source_97(Idx)
385315  );
385316 If(l_balance_type_code = 'A') THEN
385317   l_actual_gain_loss_ref := l_gain_or_loss_ref;
385318 END IF;
385319 
385320 --
385321 
385322 
385323 --
385324 AcctLineType_241 (
385325  p_application_id  => p_application_id
385326  ,p_event_id     => l_event_id
385327  ,p_calculate_acctd_flag => l_calculate_acctd_flag
385328  ,p_calculate_g_l_flag => l_calculate_g_l_flag
385329  ,p_actual_flag => l_actual_flag
385330  ,p_balance_type_code => l_balance_type_code
385331  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
385332  
385333  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
385334  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
385335  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
385336  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
385337  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
385338  , p_source_15 => l_array_source_15(Idx)
385339  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
385340  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
385341  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
385342  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
385343  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
385344  , p_source_84 => l_array_source_84(Idx)
385345  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
385346  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
385347  , p_source_88 => l_array_source_88(Idx)
385348  , p_source_91 => l_array_source_91(Idx)
385349  , p_source_92 => l_array_source_92(Idx)
385350  , p_source_93 => l_array_source_93(Idx)
385351  , p_source_94 => l_array_source_94(Idx)
385352  , p_source_95 => l_array_source_95(Idx)
385353  , p_source_97 => l_array_source_97(Idx)
385354  , p_source_108 => l_array_source_108(Idx)
385355  );
385356 If(l_balance_type_code = 'A') THEN
385357   l_actual_gain_loss_ref := l_gain_or_loss_ref;
385358 END IF;
385359 
385360 --
385361 
385362       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
385363       -- or secondary ledger that has different currency with primary
385364       -- or alc that is calculated by sla
385365       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
385366             (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'))
385367 
385368 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
385369 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
385370           AND (l_actual_flag = 'A')) THEN
385371         XLA_AE_LINES_PKG.CreateGainOrLossLines(
385372           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
385373          ,p_application_id   => p_application_id
385374          ,p_amb_context_code => 'DEFAULT'
385375          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
385376          ,p_event_class_code => C_EVENT_CLASS_CODE
385377          ,p_event_type_code  => C_EVENT_TYPE_CODE
385378          
385379          ,p_gain_ccid        => -1
385380          ,p_loss_ccid        => -1
385381 
385382          ,p_actual_flag      => l_actual_flag
385383          ,p_enc_flag         => null
385384          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
385385          ,p_enc_g_l_ref      => null
385386          );
385387       END IF;
385388    END IF;
385389 END IF;
385390 
385391    ELSE
385392       --
385393       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
385394       --
385395       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385396          trace
385397             (p_msg      => 'Trancaction revesal option is Y'
385398             ,p_level    => C_LEVEL_STATEMENT
385399             ,p_module   => l_log_module);
385400       END IF;
385401    END IF;
385402 
385403 END LOOP;
385404 l_result := XLA_AE_LINES_PKG.InsertLines ;
385405 end loop;
385406 close line_cur;
385407 
385408 
385409 --
385410 -- insert headers into xla_ae_headers_gt table
385411 --
385412 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
385413 
385414 -- insert into errors table here.
385415 
385416 END LOOP;
385417 
385418 --
385419 -- 4865292
385420 --
385421 -- Compare g_hdr_extract_count with event count in
385422 -- CreateHeadersAndLines.
385423 --
385424 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
385425 
385426 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385427    trace (p_msg     => '# rows extracted from header extract objects '
385428                     || ' (running total): '
385429                     || g_hdr_extract_count
385430          ,p_level   => C_LEVEL_STATEMENT
385431          ,p_module  => l_log_module);
385432 END IF;
385433 
385434 CLOSE header_cur;
385435 --
385436 
385437 --
385438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
385439    trace
385440       (p_msg      => 'END of EventType_595'
385441       ,p_level    => C_LEVEL_PROCEDURE
385442       ,p_module   => l_log_module);
385443 END IF;
385444 --
385445 RETURN l_result;
385446 EXCEPTION
385447 WHEN xla_exceptions_pkg.application_exception THEN
385448    
385449 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
385450 
385451    
385452 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
385453 
385454    RAISE;
385455 
385456 WHEN NO_DATA_FOUND THEN
385457 
385458 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
385459 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
385460 
385461 FOR header_record IN header_cur
385462 LOOP
385463     l_array_header_events(header_record.event_id) := header_record.event_id;
385464 END LOOP;
385465 
385466 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
385467 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
385468 
385469 fnd_file.put_line(fnd_file.LOG, '                    ');
385470 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
385471 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
385472 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
385473 
385474 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
385475 LOOP
385476 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
385477 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
385478         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
385479 	END IF;
385480 END LOOP;
385481 
385482 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
385483 fnd_file.put_line(fnd_file.LOG, '                    ');
385484 
385485 
385486 xla_exceptions_pkg.raise_message
385487       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_595');
385488 
385489 
385490 WHEN OTHERS THEN
385491    xla_exceptions_pkg.raise_message
385492       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_595');
385493 END EventType_595;
385494 --
385495 
385496 ---------------------------------------
385497 --
385498 -- PRIVATE PROCEDURE
385499 --         insert_sources_596
385500 --
385501 ----------------------------------------
385502 --
385503 PROCEDURE insert_sources_596(
385504                                 p_target_ledger_id       IN NUMBER
385505                               , p_language               IN VARCHAR2
385506                               , p_sla_ledger_id          IN NUMBER
385507                               , p_pad_start_date         IN DATE
385508                               , p_pad_end_date           IN DATE
385509                          )
385510 IS
385511 
385512 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SO_ISSUE';
385513 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
385514 p_apps_owner                   VARCHAR2(30);
385515 l_log_module                   VARCHAR2(240);
385516 BEGIN
385517 IF g_log_enabled THEN
385518       l_log_module := C_DEFAULT_MODULE||'.insert_sources_596';
385519 END IF;
385520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
385521 
385522       trace
385523          (p_msg      => 'BEGIN of insert_sources_596'
385524          ,p_level    => C_LEVEL_PROCEDURE
385525          ,p_module   => l_log_module);
385526 
385527 END IF;
385528 
385529 -- select APPS owner
385530 SELECT oracle_username
385531   INTO p_apps_owner
385532   FROM fnd_oracle_userid
385533  WHERE read_only_flag = 'U'
385534 ;
385535 
385536 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385537       trace
385538          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
385539                         ' - p_language = '||p_language||
385540                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
385541                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
385542                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
385543                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
385544          ,p_level    => C_LEVEL_STATEMENT
385545          ,p_module   => l_log_module);
385546 END IF;
385547 
385548 
385549 --
385550 INSERT INTO xla_diag_sources --hdr1
385551 (
385552         event_id
385553       , ledger_id
385554       , sla_ledger_id
385555       , description_language
385556       , object_name
385557       , object_type_code
385558       , line_number
385559       , source_application_id
385560       , source_type_code
385561       , source_code
385562       , source_value
385563       , source_meaning
385564       , created_by
385565       , creation_date
385566       , last_update_date
385567       , last_updated_by
385568       , last_update_login
385569       , program_update_date
385570       , program_application_id
385571       , program_id
385572       , request_id
385573 )
385574 SELECT
385575         event_id
385576       , p_target_ledger_id
385577       , p_sla_ledger_id
385578       , p_language
385579       , object_name
385580       , object_type_code
385581       , line_number
385582       , source_application_id
385583       , source_type_code
385584       , source_code
385585       , SUBSTR(source_value ,1,1996)
385586       , SUBSTR(source_meaning,1,200)
385587       , xla_environment_pkg.g_Usr_Id
385588       , TRUNC(SYSDATE)
385589       , TRUNC(SYSDATE)
385590       , xla_environment_pkg.g_Usr_Id
385591       , xla_environment_pkg.g_Login_Id
385592       , TRUNC(SYSDATE)
385593       , xla_environment_pkg.g_Prog_Appl_Id
385594       , xla_environment_pkg.g_Prog_Id
385595       , xla_environment_pkg.g_Req_Id
385596   FROM (
385597        SELECT xet.event_id                  event_id
385598             , 0                             line_number
385599             , CASE r
385600                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
385601                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
385602                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
385603                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
385604                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
385605                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
385606                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
385607                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
385608                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
385609                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
385610                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
385611                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
385612                 
385613                ELSE null
385614               END                           object_name
385615             , CASE r
385616                 WHEN 1 THEN 'HEADER' 
385617                 WHEN 2 THEN 'HEADER' 
385618                 WHEN 3 THEN 'HEADER' 
385619                 WHEN 4 THEN 'HEADER' 
385620                 WHEN 5 THEN 'HEADER' 
385621                 WHEN 6 THEN 'HEADER' 
385622                 WHEN 7 THEN 'HEADER' 
385623                 WHEN 8 THEN 'HEADER' 
385624                 WHEN 9 THEN 'HEADER' 
385625                 WHEN 10 THEN 'HEADER' 
385626                 WHEN 11 THEN 'HEADER' 
385627                 WHEN 12 THEN 'HEADER' 
385628                 
385629                 ELSE null
385630               END                           object_type_code
385631             , CASE r
385632                 WHEN 1 THEN '707' 
385633                 WHEN 2 THEN '707' 
385634                 WHEN 3 THEN '707' 
385635                 WHEN 4 THEN '707' 
385636                 WHEN 5 THEN '707' 
385637                 WHEN 6 THEN '707' 
385638                 WHEN 7 THEN '707' 
385639                 WHEN 8 THEN '707' 
385640                 WHEN 9 THEN '707' 
385641                 WHEN 10 THEN '707' 
385642                 WHEN 11 THEN '707' 
385643                 WHEN 12 THEN '707' 
385644                 
385645                 ELSE null
385646               END                           source_application_id
385647             , 'S'             source_type_code
385648             , CASE r
385649                 WHEN 1 THEN 'TRANSACTION_ID' 
385650                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
385651                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
385652                 WHEN 4 THEN 'TRANSACTION_UOM' 
385653                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
385654                 WHEN 6 THEN 'PLA_MATERIAL_ACCOUNT' 
385655                 WHEN 7 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
385656                 WHEN 8 THEN 'PLA_RESOURCE_ACCOUNT' 
385657                 WHEN 9 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
385658                 WHEN 10 THEN 'PLA_OVERHEAD_ACCOUNT' 
385659                 WHEN 11 THEN 'DISTRIBUTION_TYPE' 
385660                 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR' 
385661                 
385662                 ELSE null
385663               END                           source_code
385664             , CASE r
385665                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
385666                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
385667                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
385668                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
385669                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
385670                 WHEN 6 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
385671                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
385672                 WHEN 8 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
385673                 WHEN 9 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
385674                 WHEN 10 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
385675                 WHEN 11 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
385676                 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
385677                 
385678                 ELSE null
385679               END                           source_value
385680             , CASE r
385681                 WHEN 11 THEN fvl85.meaning
385682                 WHEN 12 THEN fvl114.meaning
385683                 
385684                 ELSE null
385685               END               source_meaning
385686         FROM xla_events_gt     xet  
385687       , CST_XLA_INV_HEADERS_V  h1
385688       , CST_XLA_INV_REF_V  h3
385689       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
385690       , CST_XLA_INV_TXN_TYPES_REF_V  h5
385691       , CST_XLA_PLA_CATEGORY_REF_V  h6
385692   , fnd_lookup_values    fvl85
385693   , fnd_lookup_values    fvl114
385694             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
385695        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
385696          AND xet.event_type_code = C_EVENT_TYPE_CODE
385697             AND h1.event_id = xet.event_id
385698  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id 
385699 and h6.pla_cat_item_id          (+) = h1.inventory_item_id 
385700 and h6.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
385701   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
385702   AND fvl85.view_application_id(+) = 700
385703   AND fvl85.language(+)            = USERENV('LANG')
385704      AND fvl114.lookup_type(+)         = 'YES_NO'
385705   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
385706   AND fvl114.view_application_id(+) = 0
385707   AND fvl114.language(+)            = USERENV('LANG')
385708   
385709 )
385710 ;
385711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385712 
385713       trace
385714          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
385715          ,p_level    => C_LEVEL_STATEMENT
385716          ,p_module   => l_log_module);
385717 
385718 END IF;
385719 --
385720 
385721 
385722 
385723 --
385724 INSERT INTO xla_diag_sources --line1
385725 (
385726         event_id
385727       , ledger_id
385728       , sla_ledger_id
385729       , description_language
385730       , object_name
385731       , object_type_code
385732       , line_number
385733       , source_application_id
385734       , source_type_code
385735       , source_code
385736       , source_value
385737       , source_meaning
385738       , created_by
385739       , creation_date
385740       , last_update_date
385741       , last_updated_by
385742       , last_update_login
385743       , program_update_date
385744       , program_application_id
385745       , program_id
385746       , request_id
385747 )
385748 SELECT  event_id
385749       , p_target_ledger_id
385750       , p_sla_ledger_id
385751       , p_language
385752       , object_name
385753       , object_type_code
385754       , line_number
385755       , source_application_id
385756       , source_type_code
385757       , source_code
385758       , SUBSTR(source_value,1,1996)
385759       , SUBSTR(source_meaning,1,200)
385760       , xla_environment_pkg.g_Usr_Id
385761       , TRUNC(SYSDATE)
385762       , TRUNC(SYSDATE)
385763       , xla_environment_pkg.g_Usr_Id
385764       , xla_environment_pkg.g_Login_Id
385765       , TRUNC(SYSDATE)
385766       , xla_environment_pkg.g_Prog_Appl_Id
385767       , xla_environment_pkg.g_Prog_Id
385768       , xla_environment_pkg.g_Req_Id
385769   FROM (
385770        SELECT xet.event_id                  event_id
385771             , l2.line_number                 line_number
385772             , CASE r
385773                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
385774                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
385775                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
385776                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
385777                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
385778                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
385779                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
385780                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
385781                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
385782                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
385783                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
385784                 
385785                ELSE null
385786               END                           object_name
385787             , CASE r
385788                 WHEN 1 THEN 'LINE' 
385789                 WHEN 2 THEN 'LINE' 
385790                 WHEN 3 THEN 'LINE' 
385791                 WHEN 4 THEN 'LINE' 
385792                 WHEN 5 THEN 'LINE' 
385793                 WHEN 6 THEN 'LINE' 
385794                 WHEN 7 THEN 'LINE' 
385795                 WHEN 8 THEN 'LINE' 
385796                 WHEN 9 THEN 'LINE' 
385797                 WHEN 10 THEN 'LINE' 
385798                 WHEN 11 THEN 'LINE' 
385799                 
385800                 ELSE null
385801               END                           object_type_code
385802             , CASE r
385803                 WHEN 1 THEN '707' 
385804                 WHEN 2 THEN '707' 
385805                 WHEN 3 THEN '707' 
385806                 WHEN 4 THEN '707' 
385807                 WHEN 5 THEN '707' 
385808                 WHEN 6 THEN '707' 
385809                 WHEN 7 THEN '707' 
385810                 WHEN 8 THEN '707' 
385811                 WHEN 9 THEN '707' 
385812                 WHEN 10 THEN '707' 
385813                 WHEN 11 THEN '707' 
385814                 
385815                 ELSE null
385816               END                           source_application_id
385817             , 'S'             source_type_code
385818             , CASE r
385819                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
385820                 WHEN 2 THEN 'COST_ELEMENT_ID' 
385821                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
385822                 WHEN 4 THEN 'CURRENCY_CODE' 
385823                 WHEN 5 THEN 'ENTERED_AMOUNT' 
385824                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
385825                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
385826                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
385827                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
385828                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
385829                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
385830                 
385831                 ELSE null
385832               END                           source_code
385833             , CASE r
385834                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
385835                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
385836                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
385837                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
385838                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
385839                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
385840                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
385841                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
385842                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
385843                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
385844                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
385845                 
385846                 ELSE null
385847               END                           source_value
385848             , CASE r
385849                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
385850                           1009615
385851                          ,TO_CHAR(l2.COST_ELEMENT_ID)
385852                          ,'COST_ELEMENT_ID'
385853                          ,'S'
385854                          ,707)
385855                 
385856                 ELSE null
385857               END               source_meaning
385858          FROM  xla_events_gt     xet  
385859         , CST_XLA_INV_LINES_V  l2
385860             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
385861         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
385862           AND xet.event_type_code = C_EVENT_TYPE_CODE
385863             AND l2.event_id          = xet.event_id
385864 
385865 )
385866 ;
385867 --
385868 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
385869 
385870       trace
385871          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
385872          ,p_level    => C_LEVEL_STATEMENT
385873          ,p_module   => l_log_module);
385874 
385875 END IF;
385876 
385877 
385878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
385879       trace
385880          (p_msg      => 'END of insert_sources_596'
385881          ,p_level    => C_LEVEL_PROCEDURE
385882          ,p_module   => l_log_module);
385883 END IF;
385884 EXCEPTION
385885   WHEN xla_exceptions_pkg.application_exception THEN
385886       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
385887             trace
385888                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
385889                ,p_level    => C_LEVEL_EXCEPTION
385890                ,p_module   => l_log_module);
385891       END IF;
385892       RAISE;
385893   WHEN OTHERS THEN
385894       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
385895             trace
385896                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
385897                ,p_level    => C_LEVEL_EXCEPTION
385898                ,p_module   => l_log_module);
385899        END IF;
385900        xla_exceptions_pkg.raise_message
385901            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_596');
385902 END insert_sources_596;
385903 --
385904 
385905 ---------------------------------------
385906 --
385907 -- PRIVATE FUNCTION
385908 --         EventType_596
385909 --
385910 ----------------------------------------
385911 --
385912 FUNCTION EventType_596
385913        (p_application_id         IN NUMBER
385914        ,p_base_ledger_id         IN NUMBER
385915        ,p_target_ledger_id       IN NUMBER
385916        ,p_language               IN VARCHAR2
385917        ,p_currency_code          IN VARCHAR2
385918        ,p_sla_ledger_id          IN NUMBER
385919        ,p_pad_start_date         IN DATE
385920        ,p_pad_end_date           IN DATE
385921        ,p_primary_ledger_id      IN NUMBER)
385922 RETURN BOOLEAN IS
385923 --
385924 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SO_ISSUE';
385925 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SALES_ORDER';
385926 
385927 l_calculate_acctd_flag   VARCHAR2(1) :='N';
385928 l_calculate_g_l_flag     VARCHAR2(1) :='N';
385929 --
385930 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385931 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385932 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
385933 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
385934 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385935 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
385936 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
385937 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385938 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
385939 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
385940 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385941 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385942 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385943 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
385944 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
385945 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
385946 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
385947 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
385948 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
385949 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
385950 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
385951 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
385952 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
385953 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
385954 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
385955 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
385956 
385957 l_event_id                             NUMBER;
385958 l_previous_event_id                    NUMBER;
385959 l_first_event_id                       NUMBER;
385960 l_last_event_id                        NUMBER;
385961 
385962 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
385963 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
385964 --
385965 --
385966 l_result                    BOOLEAN := TRUE;
385967 l_rows                      NUMBER  := 1000;
385968 l_event_type_name           VARCHAR2(80) := 'Sales Order Issue';
385969 l_event_class_name          VARCHAR2(80) := 'Sales Order Issue';
385970 l_description               VARCHAR2(4000);
385971 l_transaction_reversal      NUMBER;
385972 l_ae_header_id              NUMBER;
385973 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
385974 l_log_module                VARCHAR2(240);
385975 --
385976 l_acct_reversal_source      VARCHAR2(30);
385977 l_trx_reversal_source       VARCHAR2(30);
385978 
385979 l_continue_with_lines       BOOLEAN := TRUE;
385980 --
385981 l_acc_rev_gl_date_source    DATE;                      -- 4262811
385982 --
385983 type t_array_event_id is table of number index by binary_integer;
385984 
385985 l_rec_array_event                    t_rec_array_event;
385986 l_null_rec_array_event               t_rec_array_event;
385987 l_array_ae_header_id                 xla_number_array_type;
385988 l_actual_flag                        VARCHAR2(1) := NULL;
385989 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
385990 l_balance_type_code                  VARCHAR2(1) :=NULL;
385991 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
385992 
385993 --
385994 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
385995 --
385996 
385997 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
385998 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
385999 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
386000 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
386001 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
386002 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
386003 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
386004 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
386005 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
386006 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
386007 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
386008 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
386009 
386010 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
386011 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
386012 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
386013 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
386014 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
386015 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
386016 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
386017 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
386018 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
386019 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
386020 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
386021 
386022 l_array_source_1              t_array_source_1;
386023 l_array_source_2              t_array_source_2;
386024 l_array_source_3              t_array_source_3;
386025 l_array_source_4              t_array_source_4;
386026 l_array_source_5              t_array_source_5;
386027 l_array_source_41              t_array_source_41;
386028 l_array_source_42              t_array_source_42;
386029 l_array_source_43              t_array_source_43;
386030 l_array_source_44              t_array_source_44;
386031 l_array_source_45              t_array_source_45;
386032 l_array_source_85              t_array_source_85;
386033 l_array_source_85_meaning      t_array_lookup_meaning;
386034 l_array_source_114              t_array_source_114;
386035 l_array_source_114_meaning      t_array_lookup_meaning;
386036 
386037 l_array_source_11      t_array_source_11;
386038 l_array_source_15      t_array_source_15;
386039 l_array_source_84      t_array_source_84;
386040 l_array_source_88      t_array_source_88;
386041 l_array_source_91      t_array_source_91;
386042 l_array_source_92      t_array_source_92;
386043 l_array_source_93      t_array_source_93;
386044 l_array_source_94      t_array_source_94;
386045 l_array_source_95      t_array_source_95;
386046 l_array_source_97      t_array_source_97;
386047 l_array_source_108      t_array_source_108;
386048 
386049 --
386050 CURSOR header_cur
386051 IS
386052 SELECT /*+ leading(xet) cardinality(xet,1) */
386053 -- Event Type Code: SO_ISSUE
386054 -- Event Class Code: SALES_ORDER
386055     xet.entity_id
386056   , xet.legal_entity_id
386057   , xet.entity_code
386058   , xet.transaction_number
386059   , xet.event_id
386060   , xet.event_class_code
386061   , xet.event_type_code
386062   , xet.event_number
386063   , xet.event_date
386064   , xet.transaction_date
386065   , xet.reference_num_1
386066   , xet.reference_num_2
386067   , xet.reference_num_3
386068   , xet.reference_num_4
386069   , xet.reference_char_1
386070   , xet.reference_char_2
386071   , xet.reference_char_3
386072   , xet.reference_char_4
386073   , xet.reference_date_1
386074   , xet.reference_date_2
386075   , xet.reference_date_3
386076   , xet.reference_date_4
386077   , xet.event_created_by
386078   , xet.budgetary_control_flag 
386079   , h1.TRANSACTION_ID    source_1
386080   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
386081   , h3.TRANSACTION_QUANTITY    source_3
386082   , h3.TRANSACTION_UOM    source_4
386083   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
386084   , h6.PLA_MATERIAL_ACCOUNT    source_41
386085   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
386086   , h6.PLA_RESOURCE_ACCOUNT    source_43
386087   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
386088   , h6.PLA_OVERHEAD_ACCOUNT    source_45
386089   , h1.DISTRIBUTION_TYPE    source_85
386090   , fvl85.meaning   source_85_meaning
386091   , h1.TRANSFER_TO_GL_INDICATOR    source_114
386092   , fvl114.meaning   source_114_meaning
386093   FROM xla_events_gt     xet 
386094   , CST_XLA_INV_HEADERS_V  h1
386095   , CST_XLA_INV_REF_V  h3
386096   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
386097   , CST_XLA_INV_TXN_TYPES_REF_V  h5
386098   , CST_XLA_PLA_CATEGORY_REF_V  h6
386099   , fnd_lookup_values    fvl85
386100   , fnd_lookup_values    fvl114
386101  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
386102    and xet.event_type_code = C_EVENT_TYPE_CODE
386103    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
386104  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
386105 AND h6.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
386106 AND h6.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
386107   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
386108   AND fvl85.view_application_id(+) = 700
386109   AND fvl85.language(+)            = USERENV('LANG')
386110      AND fvl114.lookup_type(+)         = 'YES_NO'
386111   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
386112   AND fvl114.view_application_id(+) = 0
386113   AND fvl114.language(+)            = USERENV('LANG')
386114   
386115  ORDER BY event_id
386116 ;
386117 
386118 
386119 --
386120 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
386121 IS
386122 SELECT /*+ leading(xet) cardinality(xet,1) */
386123 -- Event Type Code: SO_ISSUE
386124 -- Event Class Code: SALES_ORDER
386125     xet.entity_id
386126    ,xet.legal_entity_id
386127    ,xet.entity_code
386128    ,xet.transaction_number
386129    ,xet.event_id
386130    ,xet.event_class_code
386131    ,xet.event_type_code
386132    ,xet.event_number
386133    ,xet.event_date
386134    ,xet.transaction_date
386135    ,xet.reference_num_1
386136    ,xet.reference_num_2
386137    ,xet.reference_num_3
386138    ,xet.reference_num_4
386139    ,xet.reference_char_1
386140    ,xet.reference_char_2
386141    ,xet.reference_char_3
386142    ,xet.reference_char_4
386143    ,xet.reference_date_1
386144    ,xet.reference_date_2
386145    ,xet.reference_date_3
386146    ,xet.reference_date_4
386147    ,xet.event_created_by
386148    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
386149   , l2.CODE_COMBINATION_ID    source_11
386150   , l2.COST_ELEMENT_ID    source_15
386151   , l2.DISTRIBUTION_IDENTIFIER    source_84
386152   , l2.CURRENCY_CODE    source_88
386153   , l2.ENTERED_AMOUNT    source_91
386154   , l2.CURRENCY_CONVERSION_DATE    source_92
386155   , l2.CURRENCY_CONVERSION_RATE    source_93
386156   , l2.CURRENCY_CONVERSION_TYPE    source_94
386157   , l2.ACCOUNTED_AMOUNT    source_95
386158   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
386159   , l2.L_ORGANIZATION_CODE    source_108
386160   FROM xla_events_gt     xet 
386161   , CST_XLA_INV_LINES_V  l2
386162  WHERE xet.event_id between x_first_event_id and x_last_event_id
386163    and xet.event_date between p_pad_start_date and p_pad_end_date
386164    and xet.event_type_code = C_EVENT_TYPE_CODE
386165    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
386166 ;
386167 
386168 --
386169 BEGIN
386170 IF g_log_enabled THEN
386171    l_log_module := C_DEFAULT_MODULE||'.EventType_596';
386172 END IF;
386173 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
386174    trace
386175       (p_msg      => 'BEGIN of EventType_596'
386176       ,p_level    => C_LEVEL_PROCEDURE
386177       ,p_module   => l_log_module);
386178 END IF;
386179 
386180 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
386181    trace
386182       (p_msg      => 'p_application_id = '||p_application_id||
386183                      ' - p_base_ledger_id = '||p_base_ledger_id||
386184                      ' - p_target_ledger_id  = '||p_target_ledger_id||
386185                      ' - p_language = '||p_language||
386186                      ' - p_currency_code = '||p_currency_code||
386187                      ' - p_sla_ledger_id = '||p_sla_ledger_id
386188       ,p_level    => C_LEVEL_STATEMENT
386189       ,p_module   => l_log_module);
386190 END IF;
386191 --
386192 -- initialze arrays
386193 --
386194 g_array_event.DELETE;
386195 l_rec_array_event := l_null_rec_array_event;
386196 --
386197 --------------------------------------
386198 -- 4262811 Initialze MPA Line Number
386199 --------------------------------------
386200 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
386201 
386202 --
386203 
386204 --
386205 OPEN header_cur;
386206 --
386207 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
386208    trace
386209    (p_msg      => 'SQL - FETCH header_cur'
386210    ,p_level    => C_LEVEL_STATEMENT
386211    ,p_module   => l_log_module);
386212 END IF;
386213 --
386214 LOOP
386215 FETCH header_cur BULK COLLECT INTO
386216         l_array_entity_id
386217       , l_array_legal_entity_id
386218       , l_array_entity_code
386219       , l_array_transaction_num
386220       , l_array_event_id
386221       , l_array_class_code
386222       , l_array_event_type
386223       , l_array_event_number
386224       , l_array_event_date
386225       , l_array_transaction_date
386226       , l_array_reference_num_1
386227       , l_array_reference_num_2
386228       , l_array_reference_num_3
386229       , l_array_reference_num_4
386230       , l_array_reference_char_1
386231       , l_array_reference_char_2
386232       , l_array_reference_char_3
386233       , l_array_reference_char_4
386234       , l_array_reference_date_1
386235       , l_array_reference_date_2
386236       , l_array_reference_date_3
386237       , l_array_reference_date_4
386238       , l_array_event_created_by
386239       , l_array_budgetary_control_flag 
386240       , l_array_source_1
386241       , l_array_source_2
386242       , l_array_source_3
386243       , l_array_source_4
386244       , l_array_source_5
386245       , l_array_source_41
386246       , l_array_source_42
386247       , l_array_source_43
386248       , l_array_source_44
386249       , l_array_source_45
386250       , l_array_source_85
386251       , l_array_source_85_meaning
386252       , l_array_source_114
386253       , l_array_source_114_meaning
386254       LIMIT l_rows;
386255 --
386256 IF (C_LEVEL_EVENT >= g_log_level) THEN
386257    trace
386258    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
386259    ,p_level    => C_LEVEL_EVENT
386260    ,p_module   => l_log_module);
386261 END IF;
386262 --
386263 EXIT WHEN l_array_entity_id.COUNT = 0;
386264 
386265 -- initialize arrays
386266 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
386267 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
386268 
386269 --
386270 -- Bug 4458708
386271 --
386272 XLA_AE_LINES_PKG.g_LineNumber := 0;
386273 
386274 
386275 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
386276 g_last_hdr_idx := l_array_event_id.LAST;
386277 --
386278 -- loop for the headers. Each iteration is for each header extract row
386279 -- fetched in header cursor
386280 --
386281 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
386282 
386283 --
386284 -- set event info as cache for other routines to refer event attributes
386285 --
386286 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
386287    (p_application_id           => p_application_id
386288    ,p_primary_ledger_id        => p_primary_ledger_id
386289    ,p_base_ledger_id           => p_base_ledger_id
386290    ,p_target_ledger_id         => p_target_ledger_id
386291    ,p_entity_id                => l_array_entity_id(hdr_idx)
386292    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
386293    ,p_entity_code              => l_array_entity_code(hdr_idx)
386294    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
386295    ,p_event_id                 => l_array_event_id(hdr_idx)
386296    ,p_event_class_code         => l_array_class_code(hdr_idx)
386297    ,p_event_type_code          => l_array_event_type(hdr_idx)
386298    ,p_event_number             => l_array_event_number(hdr_idx)
386299    ,p_event_date               => l_array_event_date(hdr_idx)
386300    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
386301    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
386302    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
386303    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
386304    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
386305    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
386306    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
386307    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
386308    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
386309    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
386310    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
386311    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
386312    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
386313    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
386314    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
386315 
386316 --
386317 -- set the status of entry to C_VALID (0)
386318 --
386319 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
386320 
386321 --
386322 -- initialize a row for ae header
386323 --
386324 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
386325 
386326 l_event_id := l_array_event_id(hdr_idx);
386327 
386328 --
386329 -- storing the hdr_idx for event. May be used by line cursor.
386330 --
386331 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
386332 
386333 --
386334 -- store sources from header extract. This can be improved to
386335 -- store only those sources from header extract that may be used in lines
386336 --
386337 
386338 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
386339 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
386340 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
386341 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
386342 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
386343 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
386344 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
386345 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
386346 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
386347 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
386348 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
386349 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
386350 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
386351 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
386352 
386353 --
386354 -- initilaize the status of ae headers for diffrent balance types
386355 -- the status is initialised to C_NOT_CREATED (2)
386356 --
386357 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
386358 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
386359 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
386360 
386361 --
386362 -- call api to validate and store accounting attributes for header
386363 --
386364 
386365 ------------------------------------------------------------
386366 -- Accrual Reversal : to get date for Standard Source (NONE)
386367 ------------------------------------------------------------
386368 l_acc_rev_gl_date_source := NULL;
386369 
386370      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
386371       l_rec_acct_attrs.array_date_value(1) := 
386372 xla_ae_sources_pkg.GetSystemSourceDate(
386373    p_source_code           => 'XLA_REFERENCE_DATE_1'
386374  , p_source_type_code      => 'Y'
386375  , p_source_application_id =>  602
386376 );
386377      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
386378       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
386379 
386380 
386381 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
386382 
386383 XLA_AE_HEADER_PKG.SetJeCategoryName;
386384 
386385 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
386386 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
386387 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
386388 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
386389 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
386390 
386391 
386392 --
386393 xla_ae_header_pkg.SetHdrDescription(
386394    p_description => Description_1 (
386395    p_application_id => p_application_id 
386396  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
386397  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
386398  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
386399  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
386400  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
386401    )
386402 );
386403 --
386404 
386405 -- No header level analytical criteria
386406 
386407 --
386408 --accounting attribute enhancement, bug 3612931
386409 --
386410 l_trx_reversal_source := SUBSTR(NULL, 1,30);
386411 
386412 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
386413    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
386414 
386415    xla_accounting_err_pkg.build_message
386416       (p_appli_s_name            => 'XLA'
386417       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
386418       ,p_token_1                 => 'ACCT_ATTR_NAME'
386419       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
386420       ,p_token_2                 => 'PRODUCT_NAME'
386421       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
386422       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
386423       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
386424       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
386425 
386426 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
386427    --
386428    -- following sets the accounting attributes needed to reverse
386429    -- accounting for a distributeion
386430    --
386431    xla_ae_lines_pkg.SetTrxReversalAttrs
386432       (p_event_id              => l_event_id
386433       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
386434       ,p_trx_reversal_source   => l_trx_reversal_source);
386435 
386436 END IF;
386437 
386438 
386439 ----------------------------------------------------------------
386440 -- 4262811 -  update the header statuses to invalid in need be
386441 ----------------------------------------------------------------
386442 --
386443 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
386444 
386445 
386446   -----------------------------------------------
386447   -- No accrual reversal for the event class/type
386448   -----------------------------------------------
386449 ----------------------------------------------------------------
386450 
386451 --
386452 -- this ends the header loop iteration for one bulk fetch
386453 --
386454 END LOOP;
386455 
386456 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
386457 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
386458 
386459 --
386460 -- insert dummy rows into lines gt table that were created due to
386461 -- transaction reversals
386462 --
386463 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
386464    l_result := XLA_AE_LINES_PKG.InsertLines;
386465 END IF;
386466 
386467 --
386468 -- reset the temp_line_num for each set of events fetched from header
386469 -- cursor rather than doing it for each new event in line cursor
386470 -- Bug 3939231
386471 --
386472 xla_ae_lines_pkg.g_temp_line_num := 0;
386473 
386474 
386475 
386476 --
386477 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
386478 --
386479 --
386480 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
386481 
386482       trace
386483          (p_msg      => 'SQL - FETCH line_cur'
386484          ,p_level    => C_LEVEL_STATEMENT
386485          ,p_module   => l_log_module);
386486 
386487 END IF;
386488 --
386489 --
386490 LOOP
386491   --
386492   FETCH line_cur BULK COLLECT INTO
386493         l_array_entity_id
386494       , l_array_legal_entity_id
386495       , l_array_entity_code
386496       , l_array_transaction_num
386497       , l_array_event_id
386498       , l_array_class_code
386499       , l_array_event_type
386500       , l_array_event_number
386501       , l_array_event_date
386502       , l_array_transaction_date
386503       , l_array_reference_num_1
386504       , l_array_reference_num_2
386505       , l_array_reference_num_3
386506       , l_array_reference_num_4
386507       , l_array_reference_char_1
386508       , l_array_reference_char_2
386509       , l_array_reference_char_3
386510       , l_array_reference_char_4
386511       , l_array_reference_date_1
386512       , l_array_reference_date_2
386513       , l_array_reference_date_3
386514       , l_array_reference_date_4
386515       , l_array_event_created_by
386516       , l_array_budgetary_control_flag
386517       , l_array_extract_line_num 
386518       , l_array_source_11
386519       , l_array_source_15
386520       , l_array_source_84
386521       , l_array_source_88
386522       , l_array_source_91
386523       , l_array_source_92
386524       , l_array_source_93
386525       , l_array_source_94
386526       , l_array_source_95
386527       , l_array_source_97
386528       , l_array_source_108
386529       LIMIT l_rows;
386530 
386531   --
386532   IF (C_LEVEL_EVENT >= g_log_level) THEN
386533             trace
386534                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
386535                ,p_level    => C_LEVEL_EVENT
386536                ,p_module   => l_log_module);
386537   END IF;
386538   --
386539   EXIT WHEN l_array_entity_id.count = 0;
386540 
386541   XLA_AE_LINES_PKG.g_rec_lines := null;
386542 
386543 --
386544 -- Bug 4458708
386545 --
386546 XLA_AE_LINES_PKG.g_LineNumber := 0;
386547 --
386548 --
386549 
386550 FOR Idx IN 1..l_array_event_id.count LOOP
386551    --
386552    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
386553    --
386554    l_event_id := l_array_event_id(idx);  -- 5648433
386555 
386556    --
386557    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
386558    --
386559 
386560    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
386561              (g_array_event(l_event_id).array_value_num('header_index'))
386562          ,'N'
386563          ) <> 'Y'
386564    THEN
386565       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
386566          trace
386567             (p_msg      => 'Trancaction revesal option is not Y '
386568             ,p_level    => C_LEVEL_STATEMENT
386569             ,p_module   => l_log_module);
386570       END IF;
386571 
386572 --
386573 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
386574 --
386575 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
386576 --
386577 -- set event info as cache for other routines to refer event attributes
386578 --
386579 
386580 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
386581    l_previous_event_id := l_event_id;
386582 
386583    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
386584       (p_application_id           => p_application_id
386585       ,p_primary_ledger_id        => p_primary_ledger_id
386586       ,p_base_ledger_id           => p_base_ledger_id
386587       ,p_target_ledger_id         => p_target_ledger_id
386588       ,p_entity_id                => l_array_entity_id(Idx)
386589       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
386590       ,p_entity_code              => l_array_entity_code(Idx)
386591       ,p_transaction_num          => l_array_transaction_num(Idx)
386592       ,p_event_id                 => l_array_event_id(Idx)
386593       ,p_event_class_code         => l_array_class_code(Idx)
386594       ,p_event_type_code          => l_array_event_type(Idx)
386595       ,p_event_number             => l_array_event_number(Idx)
386596       ,p_event_date               => l_array_event_date(Idx)
386597       ,p_transaction_date         => l_array_transaction_date(Idx)
386598       ,p_reference_num_1          => l_array_reference_num_1(Idx)
386599       ,p_reference_num_2          => l_array_reference_num_2(Idx)
386600       ,p_reference_num_3          => l_array_reference_num_3(Idx)
386601       ,p_reference_num_4          => l_array_reference_num_4(Idx)
386602       ,p_reference_char_1         => l_array_reference_char_1(Idx)
386603       ,p_reference_char_2         => l_array_reference_char_2(Idx)
386604       ,p_reference_char_3         => l_array_reference_char_3(Idx)
386605       ,p_reference_char_4         => l_array_reference_char_4(Idx)
386606       ,p_reference_date_1         => l_array_reference_date_1(Idx)
386607       ,p_reference_date_2         => l_array_reference_date_2(Idx)
386608       ,p_reference_date_3         => l_array_reference_date_3(Idx)
386609       ,p_reference_date_4         => l_array_reference_date_4(Idx)
386610       ,p_event_created_by         => l_array_event_created_by(Idx)
386611       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
386612        --
386613 END IF;
386614 
386615 
386616 
386617 --
386618 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
386619 
386620 l_acct_reversal_source := SUBSTR(NULL, 1,30);
386621 
386622 IF l_continue_with_lines THEN
386623    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
386624       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
386625 
386626       xla_accounting_err_pkg.build_message
386627          (p_appli_s_name            => 'XLA'
386628          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
386629          ,p_token_1                 => 'LINE_NUMBER'
386630          ,p_value_1                 => l_array_extract_line_num(Idx)
386631          ,p_token_2                 => 'PRODUCT_NAME'
386632          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
386633          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
386634          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
386635          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
386636 
386637    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
386638       --
386639       -- following sets the accounting attributes needed to reverse
386640       -- accounting for a distributeion
386641       --
386642 
386643       --
386644       -- 5217187
386645       --
386646       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
386647       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
386648                                        g_array_event(l_event_id).array_value_num('header_index'));
386649       --
386650       --
386651 
386652       -- No reversal code generated
386653 
386654       xla_ae_lines_pkg.SetAcctReversalAttrs
386655          (p_event_id             => l_event_id
386656          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
386657          ,p_calculate_acctd_flag => l_calculate_acctd_flag
386658          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
386659    END IF;
386660 
386661    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
386662        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
386663 
386664 --
386665 AcctLineType_62 (
386666  p_application_id  => p_application_id
386667  ,p_event_id     => l_event_id
386668  ,p_calculate_acctd_flag => l_calculate_acctd_flag
386669  ,p_calculate_g_l_flag => l_calculate_g_l_flag
386670  ,p_actual_flag => l_actual_flag
386671  ,p_balance_type_code => l_balance_type_code
386672  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
386673  
386674  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
386675  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
386676  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
386677  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
386678  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
386679  , p_source_11 => l_array_source_11(Idx)
386680  , p_source_84 => l_array_source_84(Idx)
386681  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
386682  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
386683  , p_source_88 => l_array_source_88(Idx)
386684  , p_source_91 => l_array_source_91(Idx)
386685  , p_source_92 => l_array_source_92(Idx)
386686  , p_source_93 => l_array_source_93(Idx)
386687  , p_source_94 => l_array_source_94(Idx)
386688  , p_source_95 => l_array_source_95(Idx)
386689  , p_source_97 => l_array_source_97(Idx)
386690  );
386691 If(l_balance_type_code = 'A') THEN
386692   l_actual_gain_loss_ref := l_gain_or_loss_ref;
386693 END IF;
386694 
386695 --
386696 
386697 
386698 --
386699 AcctLineType_74 (
386700  p_application_id  => p_application_id
386701  ,p_event_id     => l_event_id
386702  ,p_calculate_acctd_flag => l_calculate_acctd_flag
386703  ,p_calculate_g_l_flag => l_calculate_g_l_flag
386704  ,p_actual_flag => l_actual_flag
386705  ,p_balance_type_code => l_balance_type_code
386706  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
386707  
386708  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
386709  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
386710  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
386711  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
386712  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
386713  , p_source_11 => l_array_source_11(Idx)
386714  , p_source_84 => l_array_source_84(Idx)
386715  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
386716  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
386717  , p_source_88 => l_array_source_88(Idx)
386718  , p_source_91 => l_array_source_91(Idx)
386719  , p_source_92 => l_array_source_92(Idx)
386720  , p_source_93 => l_array_source_93(Idx)
386721  , p_source_94 => l_array_source_94(Idx)
386722  , p_source_95 => l_array_source_95(Idx)
386723  , p_source_97 => l_array_source_97(Idx)
386724  );
386725 If(l_balance_type_code = 'A') THEN
386726   l_actual_gain_loss_ref := l_gain_or_loss_ref;
386727 END IF;
386728 
386729 --
386730 
386731 
386732 --
386733 AcctLineType_109 (
386734  p_application_id  => p_application_id
386735  ,p_event_id     => l_event_id
386736  ,p_calculate_acctd_flag => l_calculate_acctd_flag
386737  ,p_calculate_g_l_flag => l_calculate_g_l_flag
386738  ,p_actual_flag => l_actual_flag
386739  ,p_balance_type_code => l_balance_type_code
386740  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
386741  
386742  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
386743  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
386744  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
386745  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
386746  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
386747  , p_source_11 => l_array_source_11(Idx)
386748  , p_source_84 => l_array_source_84(Idx)
386749  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
386750  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
386751  , p_source_88 => l_array_source_88(Idx)
386752  , p_source_91 => l_array_source_91(Idx)
386753  , p_source_92 => l_array_source_92(Idx)
386754  , p_source_93 => l_array_source_93(Idx)
386755  , p_source_94 => l_array_source_94(Idx)
386756  , p_source_95 => l_array_source_95(Idx)
386757  , p_source_97 => l_array_source_97(Idx)
386758  );
386759 If(l_balance_type_code = 'A') THEN
386760   l_actual_gain_loss_ref := l_gain_or_loss_ref;
386761 END IF;
386762 
386763 --
386764 
386765 
386766 --
386767 AcctLineType_119 (
386768  p_application_id  => p_application_id
386769  ,p_event_id     => l_event_id
386770  ,p_calculate_acctd_flag => l_calculate_acctd_flag
386771  ,p_calculate_g_l_flag => l_calculate_g_l_flag
386772  ,p_actual_flag => l_actual_flag
386773  ,p_balance_type_code => l_balance_type_code
386774  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
386775  
386776  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
386777  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
386778  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
386779  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
386780  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
386781  , p_source_11 => l_array_source_11(Idx)
386782  , p_source_84 => l_array_source_84(Idx)
386783  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
386784  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
386785  , p_source_88 => l_array_source_88(Idx)
386786  , p_source_91 => l_array_source_91(Idx)
386787  , p_source_92 => l_array_source_92(Idx)
386788  , p_source_93 => l_array_source_93(Idx)
386789  , p_source_94 => l_array_source_94(Idx)
386790  , p_source_95 => l_array_source_95(Idx)
386791  , p_source_97 => l_array_source_97(Idx)
386792  );
386793 If(l_balance_type_code = 'A') THEN
386794   l_actual_gain_loss_ref := l_gain_or_loss_ref;
386795 END IF;
386796 
386797 --
386798 
386799 
386800 --
386801 AcctLineType_242 (
386802  p_application_id  => p_application_id
386803  ,p_event_id     => l_event_id
386804  ,p_calculate_acctd_flag => l_calculate_acctd_flag
386805  ,p_calculate_g_l_flag => l_calculate_g_l_flag
386806  ,p_actual_flag => l_actual_flag
386807  ,p_balance_type_code => l_balance_type_code
386808  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
386809  
386810  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
386811  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
386812  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
386813  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
386814  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
386815  , p_source_15 => l_array_source_15(Idx)
386816  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
386817  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
386818  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
386819  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
386820  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
386821  , p_source_84 => l_array_source_84(Idx)
386822  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
386823  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
386824  , p_source_88 => l_array_source_88(Idx)
386825  , p_source_91 => l_array_source_91(Idx)
386826  , p_source_92 => l_array_source_92(Idx)
386827  , p_source_93 => l_array_source_93(Idx)
386828  , p_source_94 => l_array_source_94(Idx)
386829  , p_source_95 => l_array_source_95(Idx)
386830  , p_source_97 => l_array_source_97(Idx)
386831  , p_source_108 => l_array_source_108(Idx)
386832  );
386833 If(l_balance_type_code = 'A') THEN
386834   l_actual_gain_loss_ref := l_gain_or_loss_ref;
386835 END IF;
386836 
386837 --
386838 
386839       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
386840       -- or secondary ledger that has different currency with primary
386841       -- or alc that is calculated by sla
386842       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
386843             (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'))
386844 
386845 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
386846 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
386847           AND (l_actual_flag = 'A')) THEN
386848         XLA_AE_LINES_PKG.CreateGainOrLossLines(
386849           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
386850          ,p_application_id   => p_application_id
386851          ,p_amb_context_code => 'DEFAULT'
386852          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
386853          ,p_event_class_code => C_EVENT_CLASS_CODE
386854          ,p_event_type_code  => C_EVENT_TYPE_CODE
386855          
386856          ,p_gain_ccid        => -1
386857          ,p_loss_ccid        => -1
386858 
386859          ,p_actual_flag      => l_actual_flag
386860          ,p_enc_flag         => null
386861          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
386862          ,p_enc_g_l_ref      => null
386863          );
386864       END IF;
386865    END IF;
386866 END IF;
386867 
386868    ELSE
386869       --
386870       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
386871       --
386872       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
386873          trace
386874             (p_msg      => 'Trancaction revesal option is Y'
386875             ,p_level    => C_LEVEL_STATEMENT
386876             ,p_module   => l_log_module);
386877       END IF;
386878    END IF;
386879 
386880 END LOOP;
386881 l_result := XLA_AE_LINES_PKG.InsertLines ;
386882 end loop;
386883 close line_cur;
386884 
386885 
386886 --
386887 -- insert headers into xla_ae_headers_gt table
386888 --
386889 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
386890 
386891 -- insert into errors table here.
386892 
386893 END LOOP;
386894 
386895 --
386896 -- 4865292
386897 --
386898 -- Compare g_hdr_extract_count with event count in
386899 -- CreateHeadersAndLines.
386900 --
386901 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
386902 
386903 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
386904    trace (p_msg     => '# rows extracted from header extract objects '
386905                     || ' (running total): '
386906                     || g_hdr_extract_count
386907          ,p_level   => C_LEVEL_STATEMENT
386908          ,p_module  => l_log_module);
386909 END IF;
386910 
386911 CLOSE header_cur;
386912 --
386913 
386914 --
386915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
386916    trace
386917       (p_msg      => 'END of EventType_596'
386918       ,p_level    => C_LEVEL_PROCEDURE
386919       ,p_module   => l_log_module);
386920 END IF;
386921 --
386922 RETURN l_result;
386923 EXCEPTION
386924 WHEN xla_exceptions_pkg.application_exception THEN
386925    
386926 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
386927 
386928    
386929 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
386930 
386931    RAISE;
386932 
386933 WHEN NO_DATA_FOUND THEN
386934 
386935 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
386936 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
386937 
386938 FOR header_record IN header_cur
386939 LOOP
386940     l_array_header_events(header_record.event_id) := header_record.event_id;
386941 END LOOP;
386942 
386943 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
386944 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
386945 
386946 fnd_file.put_line(fnd_file.LOG, '                    ');
386947 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
386948 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
386949 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
386950 
386951 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
386952 LOOP
386953 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
386954 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
386955         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
386956 	END IF;
386957 END LOOP;
386958 
386959 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
386960 fnd_file.put_line(fnd_file.LOG, '                    ');
386961 
386962 
386963 xla_exceptions_pkg.raise_message
386964       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_596');
386965 
386966 
386967 WHEN OTHERS THEN
386968    xla_exceptions_pkg.raise_message
386969       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_596');
386970 END EventType_596;
386971 --
386972 
386973 ---------------------------------------
386974 --
386975 -- PRIVATE PROCEDURE
386976 --         insert_sources_597
386977 --
386978 ----------------------------------------
386979 --
386980 PROCEDURE insert_sources_597(
386981                                 p_target_ledger_id       IN NUMBER
386982                               , p_language               IN VARCHAR2
386983                               , p_sla_ledger_id          IN NUMBER
386984                               , p_pad_start_date         IN DATE
386985                               , p_pad_end_date           IN DATE
386986                          )
386987 IS
386988 
386989 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'STD_COST_UPD';
386990 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
386991 p_apps_owner                   VARCHAR2(30);
386992 l_log_module                   VARCHAR2(240);
386993 BEGIN
386994 IF g_log_enabled THEN
386995       l_log_module := C_DEFAULT_MODULE||'.insert_sources_597';
386996 END IF;
386997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
386998 
386999       trace
387000          (p_msg      => 'BEGIN of insert_sources_597'
387001          ,p_level    => C_LEVEL_PROCEDURE
387002          ,p_module   => l_log_module);
387003 
387004 END IF;
387005 
387006 -- select APPS owner
387007 SELECT oracle_username
387008   INTO p_apps_owner
387009   FROM fnd_oracle_userid
387010  WHERE read_only_flag = 'U'
387011 ;
387012 
387013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
387014       trace
387015          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
387016                         ' - p_language = '||p_language||
387017                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
387018                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
387019                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
387020                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
387021          ,p_level    => C_LEVEL_STATEMENT
387022          ,p_module   => l_log_module);
387023 END IF;
387024 
387025 
387026 --
387027 INSERT INTO xla_diag_sources --hdr1
387028 (
387029         event_id
387030       , ledger_id
387031       , sla_ledger_id
387032       , description_language
387033       , object_name
387034       , object_type_code
387035       , line_number
387036       , source_application_id
387037       , source_type_code
387038       , source_code
387039       , source_value
387040       , source_meaning
387041       , created_by
387042       , creation_date
387043       , last_update_date
387044       , last_updated_by
387045       , last_update_login
387046       , program_update_date
387047       , program_application_id
387048       , program_id
387049       , request_id
387050 )
387051 SELECT
387052         event_id
387053       , p_target_ledger_id
387054       , p_sla_ledger_id
387055       , p_language
387056       , object_name
387057       , object_type_code
387058       , line_number
387059       , source_application_id
387060       , source_type_code
387061       , source_code
387062       , SUBSTR(source_value ,1,1996)
387063       , SUBSTR(source_meaning,1,200)
387064       , xla_environment_pkg.g_Usr_Id
387065       , TRUNC(SYSDATE)
387066       , TRUNC(SYSDATE)
387067       , xla_environment_pkg.g_Usr_Id
387068       , xla_environment_pkg.g_Login_Id
387069       , TRUNC(SYSDATE)
387070       , xla_environment_pkg.g_Prog_Appl_Id
387071       , xla_environment_pkg.g_Prog_Id
387072       , xla_environment_pkg.g_Req_Id
387073   FROM (
387074        SELECT xet.event_id                  event_id
387075             , 0                             line_number
387076             , CASE r
387077                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
387078                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
387079                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
387080                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
387081                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
387082                 WHEN 6 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
387083                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
387084                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
387085                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
387086                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
387087                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
387088                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
387089                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
387090                 
387091                ELSE null
387092               END                           object_name
387093             , CASE r
387094                 WHEN 1 THEN 'HEADER' 
387095                 WHEN 2 THEN 'HEADER' 
387096                 WHEN 3 THEN 'HEADER' 
387097                 WHEN 4 THEN 'HEADER' 
387098                 WHEN 5 THEN 'HEADER' 
387099                 WHEN 6 THEN 'HEADER' 
387100                 WHEN 7 THEN 'HEADER' 
387101                 WHEN 8 THEN 'HEADER' 
387102                 WHEN 9 THEN 'HEADER' 
387103                 WHEN 10 THEN 'HEADER' 
387104                 WHEN 11 THEN 'HEADER' 
387105                 WHEN 12 THEN 'HEADER' 
387106                 WHEN 13 THEN 'HEADER' 
387107                 
387108                 ELSE null
387109               END                           object_type_code
387110             , CASE r
387111                 WHEN 1 THEN '707' 
387112                 WHEN 2 THEN '707' 
387113                 WHEN 3 THEN '707' 
387114                 WHEN 4 THEN '707' 
387115                 WHEN 5 THEN '707' 
387116                 WHEN 6 THEN '707' 
387117                 WHEN 7 THEN '707' 
387118                 WHEN 8 THEN '707' 
387119                 WHEN 9 THEN '707' 
387120                 WHEN 10 THEN '707' 
387121                 WHEN 11 THEN '707' 
387122                 WHEN 12 THEN '707' 
387123                 WHEN 13 THEN '707' 
387124                 
387125                 ELSE null
387126               END                           source_application_id
387127             , 'S'             source_type_code
387128             , CASE r
387129                 WHEN 1 THEN 'TRANSACTION_ID' 
387130                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
387131                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
387132                 WHEN 4 THEN 'TRANSACTION_UOM' 
387133                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
387134                 WHEN 6 THEN 'PRIMARY_COST_METHOD' 
387135                 WHEN 7 THEN 'PLA_MATERIAL_ACCOUNT' 
387136                 WHEN 8 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
387137                 WHEN 9 THEN 'PLA_RESOURCE_ACCOUNT' 
387138                 WHEN 10 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
387139                 WHEN 11 THEN 'PLA_OVERHEAD_ACCOUNT' 
387140                 WHEN 12 THEN 'DISTRIBUTION_TYPE' 
387141                 WHEN 13 THEN 'TRANSFER_TO_GL_INDICATOR' 
387142                 
387143                 ELSE null
387144               END                           source_code
387145             , CASE r
387146                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
387147                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
387148                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
387149                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
387150                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
387151                 WHEN 6 THEN TO_CHAR(h3.PRIMARY_COST_METHOD)
387152                 WHEN 7 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
387153                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
387154                 WHEN 9 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
387155                 WHEN 10 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
387156                 WHEN 11 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
387157                 WHEN 12 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
387158                 WHEN 13 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
387159                 
387160                 ELSE null
387161               END                           source_value
387162             , CASE r
387163                 WHEN 6 THEN fvl39.meaning
387164                 WHEN 12 THEN fvl85.meaning
387165                 WHEN 13 THEN fvl114.meaning
387166                 
387167                 ELSE null
387168               END               source_meaning
387169         FROM xla_events_gt     xet  
387170       , CST_XLA_INV_HEADERS_V  h1
387171       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
387172       , CST_XLA_INV_REF_V  h4
387173       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
387174       , CST_XLA_INV_TXN_TYPES_REF_V  h6
387175       , CST_XLA_PLA_CATEGORY_REF_V  h7
387176   , fnd_lookup_values    fvl39
387177   , fnd_lookup_values    fvl85
387178   , fnd_lookup_values    fvl114
387179             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
387180        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
387181          AND xet.event_type_code = C_EVENT_TYPE_CODE
387182             AND h1.event_id = xet.event_id
387183  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h7.pla_cat_organization_id  (+) = h1.organization_id 
387184 and h7.pla_cat_item_id          (+) = h1.inventory_item_id 
387185 and h7.pla_subinv_cg            (+) = h1.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
387186   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
387187   AND fvl39.view_application_id(+) = 700
387188   AND fvl39.language(+)            = USERENV('LANG')
387189      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
387190   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
387191   AND fvl85.view_application_id(+) = 700
387192   AND fvl85.language(+)            = USERENV('LANG')
387193      AND fvl114.lookup_type(+)         = 'YES_NO'
387194   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
387195   AND fvl114.view_application_id(+) = 0
387196   AND fvl114.language(+)            = USERENV('LANG')
387197   
387198 )
387199 ;
387200 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
387201 
387202       trace
387203          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
387204          ,p_level    => C_LEVEL_STATEMENT
387205          ,p_module   => l_log_module);
387206 
387207 END IF;
387208 --
387209 
387210 
387211 
387212 --
387213 INSERT INTO xla_diag_sources --line1
387214 (
387215         event_id
387216       , ledger_id
387217       , sla_ledger_id
387218       , description_language
387219       , object_name
387220       , object_type_code
387221       , line_number
387222       , source_application_id
387223       , source_type_code
387224       , source_code
387225       , source_value
387226       , source_meaning
387227       , created_by
387228       , creation_date
387229       , last_update_date
387230       , last_updated_by
387231       , last_update_login
387232       , program_update_date
387233       , program_application_id
387234       , program_id
387235       , request_id
387236 )
387237 SELECT  event_id
387238       , p_target_ledger_id
387239       , p_sla_ledger_id
387240       , p_language
387241       , object_name
387242       , object_type_code
387243       , line_number
387244       , source_application_id
387245       , source_type_code
387246       , source_code
387247       , SUBSTR(source_value,1,1996)
387248       , SUBSTR(source_meaning,1,200)
387249       , xla_environment_pkg.g_Usr_Id
387250       , TRUNC(SYSDATE)
387251       , TRUNC(SYSDATE)
387252       , xla_environment_pkg.g_Usr_Id
387253       , xla_environment_pkg.g_Login_Id
387254       , TRUNC(SYSDATE)
387255       , xla_environment_pkg.g_Prog_Appl_Id
387256       , xla_environment_pkg.g_Prog_Id
387257       , xla_environment_pkg.g_Req_Id
387258   FROM (
387259        SELECT xet.event_id                  event_id
387260             , l2.line_number                 line_number
387261             , CASE r
387262                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
387263                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
387264                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
387265                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
387266                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
387267                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
387268                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
387269                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
387270                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
387271                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
387272                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
387273                 
387274                ELSE null
387275               END                           object_name
387276             , CASE r
387277                 WHEN 1 THEN 'LINE' 
387278                 WHEN 2 THEN 'LINE' 
387279                 WHEN 3 THEN 'LINE' 
387280                 WHEN 4 THEN 'LINE' 
387281                 WHEN 5 THEN 'LINE' 
387282                 WHEN 6 THEN 'LINE' 
387283                 WHEN 7 THEN 'LINE' 
387284                 WHEN 8 THEN 'LINE' 
387285                 WHEN 9 THEN 'LINE' 
387286                 WHEN 10 THEN 'LINE' 
387287                 WHEN 11 THEN 'LINE' 
387288                 
387289                 ELSE null
387290               END                           object_type_code
387291             , CASE r
387292                 WHEN 1 THEN '707' 
387293                 WHEN 2 THEN '707' 
387294                 WHEN 3 THEN '707' 
387295                 WHEN 4 THEN '707' 
387296                 WHEN 5 THEN '707' 
387297                 WHEN 6 THEN '707' 
387298                 WHEN 7 THEN '707' 
387299                 WHEN 8 THEN '707' 
387300                 WHEN 9 THEN '707' 
387301                 WHEN 10 THEN '707' 
387302                 WHEN 11 THEN '707' 
387303                 
387304                 ELSE null
387305               END                           source_application_id
387306             , 'S'             source_type_code
387307             , CASE r
387308                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
387309                 WHEN 2 THEN 'COST_ELEMENT_ID' 
387310                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
387311                 WHEN 4 THEN 'CURRENCY_CODE' 
387312                 WHEN 5 THEN 'ENTERED_AMOUNT' 
387313                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
387314                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
387315                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
387316                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
387317                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
387318                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
387319                 
387320                 ELSE null
387321               END                           source_code
387322             , CASE r
387323                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
387324                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
387325                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
387326                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
387327                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
387328                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
387329                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
387330                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
387331                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
387332                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
387333                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
387334                 
387335                 ELSE null
387336               END                           source_value
387337             , CASE r
387338                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
387339                           1009615
387340                          ,TO_CHAR(l2.COST_ELEMENT_ID)
387341                          ,'COST_ELEMENT_ID'
387342                          ,'S'
387343                          ,707)
387344                 
387345                 ELSE null
387346               END               source_meaning
387347          FROM  xla_events_gt     xet  
387348         , CST_XLA_INV_LINES_V  l2
387349             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
387350         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
387351           AND xet.event_type_code = C_EVENT_TYPE_CODE
387352             AND l2.event_id          = xet.event_id
387353 
387354 )
387355 ;
387356 --
387357 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
387358 
387359       trace
387360          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
387361          ,p_level    => C_LEVEL_STATEMENT
387362          ,p_module   => l_log_module);
387363 
387364 END IF;
387365 
387366 
387367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
387368       trace
387369          (p_msg      => 'END of insert_sources_597'
387370          ,p_level    => C_LEVEL_PROCEDURE
387371          ,p_module   => l_log_module);
387372 END IF;
387373 EXCEPTION
387374   WHEN xla_exceptions_pkg.application_exception THEN
387375       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
387376             trace
387377                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
387378                ,p_level    => C_LEVEL_EXCEPTION
387379                ,p_module   => l_log_module);
387380       END IF;
387381       RAISE;
387382   WHEN OTHERS THEN
387383       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
387384             trace
387385                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
387386                ,p_level    => C_LEVEL_EXCEPTION
387387                ,p_module   => l_log_module);
387388        END IF;
387389        xla_exceptions_pkg.raise_message
387390            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_597');
387391 END insert_sources_597;
387392 --
387393 
387394 ---------------------------------------
387395 --
387396 -- PRIVATE FUNCTION
387397 --         EventType_597
387398 --
387399 ----------------------------------------
387400 --
387401 FUNCTION EventType_597
387402        (p_application_id         IN NUMBER
387403        ,p_base_ledger_id         IN NUMBER
387404        ,p_target_ledger_id       IN NUMBER
387405        ,p_language               IN VARCHAR2
387406        ,p_currency_code          IN VARCHAR2
387407        ,p_sla_ledger_id          IN NUMBER
387408        ,p_pad_start_date         IN DATE
387409        ,p_pad_end_date           IN DATE
387410        ,p_primary_ledger_id      IN NUMBER)
387411 RETURN BOOLEAN IS
387412 --
387413 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'STD_COST_UPD';
387414 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MTL_COST_UPD';
387415 
387416 l_calculate_acctd_flag   VARCHAR2(1) :='N';
387417 l_calculate_g_l_flag     VARCHAR2(1) :='N';
387418 --
387419 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387420 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387421 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
387422 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
387423 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387424 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
387425 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
387426 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387427 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
387428 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
387429 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387430 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387431 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387432 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
387433 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
387434 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
387435 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
387436 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
387437 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
387438 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
387439 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
387440 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
387441 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
387442 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
387443 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
387444 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
387445 
387446 l_event_id                             NUMBER;
387447 l_previous_event_id                    NUMBER;
387448 l_first_event_id                       NUMBER;
387449 l_last_event_id                        NUMBER;
387450 
387451 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
387452 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
387453 --
387454 --
387455 l_result                    BOOLEAN := TRUE;
387456 l_rows                      NUMBER  := 1000;
387457 l_event_type_name           VARCHAR2(80) := 'Standard Cost Update';
387458 l_event_class_name          VARCHAR2(80) := 'Material Cost Update';
387459 l_description               VARCHAR2(4000);
387460 l_transaction_reversal      NUMBER;
387461 l_ae_header_id              NUMBER;
387462 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
387463 l_log_module                VARCHAR2(240);
387464 --
387465 l_acct_reversal_source      VARCHAR2(30);
387466 l_trx_reversal_source       VARCHAR2(30);
387467 
387468 l_continue_with_lines       BOOLEAN := TRUE;
387469 --
387470 l_acc_rev_gl_date_source    DATE;                      -- 4262811
387471 --
387472 type t_array_event_id is table of number index by binary_integer;
387473 
387474 l_rec_array_event                    t_rec_array_event;
387475 l_null_rec_array_event               t_rec_array_event;
387476 l_array_ae_header_id                 xla_number_array_type;
387477 l_actual_flag                        VARCHAR2(1) := NULL;
387478 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
387479 l_balance_type_code                  VARCHAR2(1) :=NULL;
387480 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
387481 
387482 --
387483 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
387484 --
387485 
387486 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
387487 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
387488 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
387489 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
387490 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
387491 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
387492 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
387493 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
387494 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
387495 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
387496 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
387497 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
387498 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
387499 
387500 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
387501 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
387502 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
387503 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
387504 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
387505 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
387506 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
387507 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
387508 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
387509 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
387510 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
387511 
387512 l_array_source_1              t_array_source_1;
387513 l_array_source_2              t_array_source_2;
387514 l_array_source_3              t_array_source_3;
387515 l_array_source_4              t_array_source_4;
387516 l_array_source_5              t_array_source_5;
387517 l_array_source_39              t_array_source_39;
387518 l_array_source_39_meaning      t_array_lookup_meaning;
387519 l_array_source_41              t_array_source_41;
387520 l_array_source_42              t_array_source_42;
387521 l_array_source_43              t_array_source_43;
387522 l_array_source_44              t_array_source_44;
387523 l_array_source_45              t_array_source_45;
387524 l_array_source_85              t_array_source_85;
387525 l_array_source_85_meaning      t_array_lookup_meaning;
387526 l_array_source_114              t_array_source_114;
387527 l_array_source_114_meaning      t_array_lookup_meaning;
387528 
387529 l_array_source_11      t_array_source_11;
387530 l_array_source_15      t_array_source_15;
387531 l_array_source_84      t_array_source_84;
387532 l_array_source_88      t_array_source_88;
387533 l_array_source_91      t_array_source_91;
387534 l_array_source_92      t_array_source_92;
387535 l_array_source_93      t_array_source_93;
387536 l_array_source_94      t_array_source_94;
387537 l_array_source_95      t_array_source_95;
387538 l_array_source_97      t_array_source_97;
387539 l_array_source_108      t_array_source_108;
387540 
387541 --
387542 CURSOR header_cur
387543 IS
387544 SELECT /*+ leading(xet) cardinality(xet,1) */
387545 -- Event Type Code: STD_COST_UPD
387546 -- Event Class Code: MTL_COST_UPD
387547     xet.entity_id
387548   , xet.legal_entity_id
387549   , xet.entity_code
387550   , xet.transaction_number
387551   , xet.event_id
387552   , xet.event_class_code
387553   , xet.event_type_code
387554   , xet.event_number
387555   , xet.event_date
387556   , xet.transaction_date
387557   , xet.reference_num_1
387558   , xet.reference_num_2
387559   , xet.reference_num_3
387560   , xet.reference_num_4
387561   , xet.reference_char_1
387562   , xet.reference_char_2
387563   , xet.reference_char_3
387564   , xet.reference_char_4
387565   , xet.reference_date_1
387566   , xet.reference_date_2
387567   , xet.reference_date_3
387568   , xet.reference_date_4
387569   , xet.event_created_by
387570   , xet.budgetary_control_flag 
387571   , h1.TRANSACTION_ID    source_1
387572   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
387573   , h4.TRANSACTION_QUANTITY    source_3
387574   , h4.TRANSACTION_UOM    source_4
387575   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
387576   , h3.PRIMARY_COST_METHOD    source_39
387577   , fvl39.meaning   source_39_meaning
387578   , h7.PLA_MATERIAL_ACCOUNT    source_41
387579   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
387580   , h7.PLA_RESOURCE_ACCOUNT    source_43
387581   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
387582   , h7.PLA_OVERHEAD_ACCOUNT    source_45
387583   , h1.DISTRIBUTION_TYPE    source_85
387584   , fvl85.meaning   source_85_meaning
387585   , h1.TRANSFER_TO_GL_INDICATOR    source_114
387586   , fvl114.meaning   source_114_meaning
387587   FROM xla_events_gt     xet 
387588   , CST_XLA_INV_HEADERS_V  h1
387589   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
387590   , CST_XLA_INV_REF_V  h4
387591   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
387592   , CST_XLA_INV_TXN_TYPES_REF_V  h6
387593   , CST_XLA_PLA_CATEGORY_REF_V  h7
387594   , fnd_lookup_values    fvl39
387595   , fnd_lookup_values    fvl85
387596   , fnd_lookup_values    fvl114
387597  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
387598    and xet.event_type_code = C_EVENT_TYPE_CODE
387599    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
387600  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID 
387601 AND h7.PLA_CAT_ITEM_ID          (+) = h1.INVENTORY_ITEM_ID 
387602 AND h7.PLA_SUBINV_CG            (+) = h1.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
387603   AND fvl39.lookup_code(+)         = h3.PRIMARY_COST_METHOD
387604   AND fvl39.view_application_id(+) = 700
387605   AND fvl39.language(+)            = USERENV('LANG')
387606      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
387607   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
387608   AND fvl85.view_application_id(+) = 700
387609   AND fvl85.language(+)            = USERENV('LANG')
387610      AND fvl114.lookup_type(+)         = 'YES_NO'
387611   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
387612   AND fvl114.view_application_id(+) = 0
387613   AND fvl114.language(+)            = USERENV('LANG')
387614   
387615  ORDER BY event_id
387616 ;
387617 
387618 
387619 --
387620 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
387621 IS
387622 SELECT /*+ leading(xet) cardinality(xet,1) */
387623 -- Event Type Code: STD_COST_UPD
387624 -- Event Class Code: MTL_COST_UPD
387625     xet.entity_id
387626    ,xet.legal_entity_id
387627    ,xet.entity_code
387628    ,xet.transaction_number
387629    ,xet.event_id
387630    ,xet.event_class_code
387631    ,xet.event_type_code
387632    ,xet.event_number
387633    ,xet.event_date
387634    ,xet.transaction_date
387635    ,xet.reference_num_1
387636    ,xet.reference_num_2
387637    ,xet.reference_num_3
387638    ,xet.reference_num_4
387639    ,xet.reference_char_1
387640    ,xet.reference_char_2
387641    ,xet.reference_char_3
387642    ,xet.reference_char_4
387643    ,xet.reference_date_1
387644    ,xet.reference_date_2
387645    ,xet.reference_date_3
387646    ,xet.reference_date_4
387647    ,xet.event_created_by
387648    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
387649   , l2.CODE_COMBINATION_ID    source_11
387650   , l2.COST_ELEMENT_ID    source_15
387651   , l2.DISTRIBUTION_IDENTIFIER    source_84
387652   , l2.CURRENCY_CODE    source_88
387653   , l2.ENTERED_AMOUNT    source_91
387654   , l2.CURRENCY_CONVERSION_DATE    source_92
387655   , l2.CURRENCY_CONVERSION_RATE    source_93
387656   , l2.CURRENCY_CONVERSION_TYPE    source_94
387657   , l2.ACCOUNTED_AMOUNT    source_95
387658   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
387659   , l2.L_ORGANIZATION_CODE    source_108
387660   FROM xla_events_gt     xet 
387661   , CST_XLA_INV_LINES_V  l2
387662  WHERE xet.event_id between x_first_event_id and x_last_event_id
387663    and xet.event_date between p_pad_start_date and p_pad_end_date
387664    and xet.event_type_code = C_EVENT_TYPE_CODE
387665    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
387666 ;
387667 
387668 --
387669 BEGIN
387670 IF g_log_enabled THEN
387671    l_log_module := C_DEFAULT_MODULE||'.EventType_597';
387672 END IF;
387673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
387674    trace
387675       (p_msg      => 'BEGIN of EventType_597'
387676       ,p_level    => C_LEVEL_PROCEDURE
387677       ,p_module   => l_log_module);
387678 END IF;
387679 
387680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
387681    trace
387682       (p_msg      => 'p_application_id = '||p_application_id||
387683                      ' - p_base_ledger_id = '||p_base_ledger_id||
387684                      ' - p_target_ledger_id  = '||p_target_ledger_id||
387685                      ' - p_language = '||p_language||
387686                      ' - p_currency_code = '||p_currency_code||
387687                      ' - p_sla_ledger_id = '||p_sla_ledger_id
387688       ,p_level    => C_LEVEL_STATEMENT
387689       ,p_module   => l_log_module);
387690 END IF;
387691 --
387692 -- initialze arrays
387693 --
387694 g_array_event.DELETE;
387695 l_rec_array_event := l_null_rec_array_event;
387696 --
387697 --------------------------------------
387698 -- 4262811 Initialze MPA Line Number
387699 --------------------------------------
387700 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
387701 
387702 --
387703 
387704 --
387705 OPEN header_cur;
387706 --
387707 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
387708    trace
387709    (p_msg      => 'SQL - FETCH header_cur'
387710    ,p_level    => C_LEVEL_STATEMENT
387711    ,p_module   => l_log_module);
387712 END IF;
387713 --
387714 LOOP
387715 FETCH header_cur BULK COLLECT INTO
387716         l_array_entity_id
387717       , l_array_legal_entity_id
387718       , l_array_entity_code
387719       , l_array_transaction_num
387720       , l_array_event_id
387721       , l_array_class_code
387722       , l_array_event_type
387723       , l_array_event_number
387724       , l_array_event_date
387725       , l_array_transaction_date
387726       , l_array_reference_num_1
387727       , l_array_reference_num_2
387728       , l_array_reference_num_3
387729       , l_array_reference_num_4
387730       , l_array_reference_char_1
387731       , l_array_reference_char_2
387732       , l_array_reference_char_3
387733       , l_array_reference_char_4
387734       , l_array_reference_date_1
387735       , l_array_reference_date_2
387736       , l_array_reference_date_3
387737       , l_array_reference_date_4
387738       , l_array_event_created_by
387739       , l_array_budgetary_control_flag 
387740       , l_array_source_1
387741       , l_array_source_2
387742       , l_array_source_3
387743       , l_array_source_4
387744       , l_array_source_5
387745       , l_array_source_39
387746       , l_array_source_39_meaning
387747       , l_array_source_41
387748       , l_array_source_42
387749       , l_array_source_43
387750       , l_array_source_44
387751       , l_array_source_45
387752       , l_array_source_85
387753       , l_array_source_85_meaning
387754       , l_array_source_114
387755       , l_array_source_114_meaning
387756       LIMIT l_rows;
387757 --
387758 IF (C_LEVEL_EVENT >= g_log_level) THEN
387759    trace
387760    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
387761    ,p_level    => C_LEVEL_EVENT
387762    ,p_module   => l_log_module);
387763 END IF;
387764 --
387765 EXIT WHEN l_array_entity_id.COUNT = 0;
387766 
387767 -- initialize arrays
387768 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
387769 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
387770 
387771 --
387772 -- Bug 4458708
387773 --
387774 XLA_AE_LINES_PKG.g_LineNumber := 0;
387775 
387776 
387777 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
387778 g_last_hdr_idx := l_array_event_id.LAST;
387779 --
387780 -- loop for the headers. Each iteration is for each header extract row
387781 -- fetched in header cursor
387782 --
387783 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
387784 
387785 --
387786 -- set event info as cache for other routines to refer event attributes
387787 --
387788 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
387789    (p_application_id           => p_application_id
387790    ,p_primary_ledger_id        => p_primary_ledger_id
387791    ,p_base_ledger_id           => p_base_ledger_id
387792    ,p_target_ledger_id         => p_target_ledger_id
387793    ,p_entity_id                => l_array_entity_id(hdr_idx)
387794    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
387795    ,p_entity_code              => l_array_entity_code(hdr_idx)
387796    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
387797    ,p_event_id                 => l_array_event_id(hdr_idx)
387798    ,p_event_class_code         => l_array_class_code(hdr_idx)
387799    ,p_event_type_code          => l_array_event_type(hdr_idx)
387800    ,p_event_number             => l_array_event_number(hdr_idx)
387801    ,p_event_date               => l_array_event_date(hdr_idx)
387802    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
387803    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
387804    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
387805    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
387806    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
387807    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
387808    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
387809    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
387810    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
387811    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
387812    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
387813    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
387814    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
387815    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
387816    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
387817 
387818 --
387819 -- set the status of entry to C_VALID (0)
387820 --
387821 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
387822 
387823 --
387824 -- initialize a row for ae header
387825 --
387826 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
387827 
387828 l_event_id := l_array_event_id(hdr_idx);
387829 
387830 --
387831 -- storing the hdr_idx for event. May be used by line cursor.
387832 --
387833 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
387834 
387835 --
387836 -- store sources from header extract. This can be improved to
387837 -- store only those sources from header extract that may be used in lines
387838 --
387839 
387840 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
387841 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
387842 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
387843 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
387844 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
387845 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
387846 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
387847 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
387848 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
387849 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
387850 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
387851 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
387852 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
387853 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
387854 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
387855 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
387856 
387857 --
387858 -- initilaize the status of ae headers for diffrent balance types
387859 -- the status is initialised to C_NOT_CREATED (2)
387860 --
387861 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
387862 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
387863 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
387864 
387865 --
387866 -- call api to validate and store accounting attributes for header
387867 --
387868 
387869 ------------------------------------------------------------
387870 -- Accrual Reversal : to get date for Standard Source (NONE)
387871 ------------------------------------------------------------
387872 l_acc_rev_gl_date_source := NULL;
387873 
387874      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
387875       l_rec_acct_attrs.array_date_value(1) := 
387876 xla_ae_sources_pkg.GetSystemSourceDate(
387877    p_source_code           => 'XLA_REFERENCE_DATE_1'
387878  , p_source_type_code      => 'Y'
387879  , p_source_application_id =>  602
387880 );
387881      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
387882       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
387883 
387884 
387885 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
387886 
387887 XLA_AE_HEADER_PKG.SetJeCategoryName;
387888 
387889 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
387890 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
387891 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
387892 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
387893 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
387894 
387895 
387896 --
387897 xla_ae_header_pkg.SetHdrDescription(
387898    p_description => Description_1 (
387899    p_application_id => p_application_id 
387900  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
387901  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
387902  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
387903  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
387904  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
387905    )
387906 );
387907 --
387908 
387909 -- No header level analytical criteria
387910 
387911 --
387912 --accounting attribute enhancement, bug 3612931
387913 --
387914 l_trx_reversal_source := SUBSTR(NULL, 1,30);
387915 
387916 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
387917    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
387918 
387919    xla_accounting_err_pkg.build_message
387920       (p_appli_s_name            => 'XLA'
387921       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
387922       ,p_token_1                 => 'ACCT_ATTR_NAME'
387923       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
387924       ,p_token_2                 => 'PRODUCT_NAME'
387925       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
387926       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
387927       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
387928       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
387929 
387930 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
387931    --
387932    -- following sets the accounting attributes needed to reverse
387933    -- accounting for a distributeion
387934    --
387935    xla_ae_lines_pkg.SetTrxReversalAttrs
387936       (p_event_id              => l_event_id
387937       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
387938       ,p_trx_reversal_source   => l_trx_reversal_source);
387939 
387940 END IF;
387941 
387942 
387943 ----------------------------------------------------------------
387944 -- 4262811 -  update the header statuses to invalid in need be
387945 ----------------------------------------------------------------
387946 --
387947 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
387948 
387949 
387950   -----------------------------------------------
387951   -- No accrual reversal for the event class/type
387952   -----------------------------------------------
387953 ----------------------------------------------------------------
387954 
387955 --
387956 -- this ends the header loop iteration for one bulk fetch
387957 --
387958 END LOOP;
387959 
387960 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
387961 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
387962 
387963 --
387964 -- insert dummy rows into lines gt table that were created due to
387965 -- transaction reversals
387966 --
387967 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
387968    l_result := XLA_AE_LINES_PKG.InsertLines;
387969 END IF;
387970 
387971 --
387972 -- reset the temp_line_num for each set of events fetched from header
387973 -- cursor rather than doing it for each new event in line cursor
387974 -- Bug 3939231
387975 --
387976 xla_ae_lines_pkg.g_temp_line_num := 0;
387977 
387978 
387979 
387980 --
387981 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
387982 --
387983 --
387984 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
387985 
387986       trace
387987          (p_msg      => 'SQL - FETCH line_cur'
387988          ,p_level    => C_LEVEL_STATEMENT
387989          ,p_module   => l_log_module);
387990 
387991 END IF;
387992 --
387993 --
387994 LOOP
387995   --
387996   FETCH line_cur BULK COLLECT INTO
387997         l_array_entity_id
387998       , l_array_legal_entity_id
387999       , l_array_entity_code
388000       , l_array_transaction_num
388001       , l_array_event_id
388002       , l_array_class_code
388003       , l_array_event_type
388004       , l_array_event_number
388005       , l_array_event_date
388006       , l_array_transaction_date
388007       , l_array_reference_num_1
388008       , l_array_reference_num_2
388009       , l_array_reference_num_3
388010       , l_array_reference_num_4
388011       , l_array_reference_char_1
388012       , l_array_reference_char_2
388013       , l_array_reference_char_3
388014       , l_array_reference_char_4
388015       , l_array_reference_date_1
388016       , l_array_reference_date_2
388017       , l_array_reference_date_3
388018       , l_array_reference_date_4
388019       , l_array_event_created_by
388020       , l_array_budgetary_control_flag
388021       , l_array_extract_line_num 
388022       , l_array_source_11
388023       , l_array_source_15
388024       , l_array_source_84
388025       , l_array_source_88
388026       , l_array_source_91
388027       , l_array_source_92
388028       , l_array_source_93
388029       , l_array_source_94
388030       , l_array_source_95
388031       , l_array_source_97
388032       , l_array_source_108
388033       LIMIT l_rows;
388034 
388035   --
388036   IF (C_LEVEL_EVENT >= g_log_level) THEN
388037             trace
388038                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
388039                ,p_level    => C_LEVEL_EVENT
388040                ,p_module   => l_log_module);
388041   END IF;
388042   --
388043   EXIT WHEN l_array_entity_id.count = 0;
388044 
388045   XLA_AE_LINES_PKG.g_rec_lines := null;
388046 
388047 --
388048 -- Bug 4458708
388049 --
388050 XLA_AE_LINES_PKG.g_LineNumber := 0;
388051 --
388052 --
388053 
388054 FOR Idx IN 1..l_array_event_id.count LOOP
388055    --
388056    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
388057    --
388058    l_event_id := l_array_event_id(idx);  -- 5648433
388059 
388060    --
388061    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
388062    --
388063 
388064    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
388065              (g_array_event(l_event_id).array_value_num('header_index'))
388066          ,'N'
388067          ) <> 'Y'
388068    THEN
388069       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
388070          trace
388071             (p_msg      => 'Trancaction revesal option is not Y '
388072             ,p_level    => C_LEVEL_STATEMENT
388073             ,p_module   => l_log_module);
388074       END IF;
388075 
388076 --
388077 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
388078 --
388079 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
388080 --
388081 -- set event info as cache for other routines to refer event attributes
388082 --
388083 
388084 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
388085    l_previous_event_id := l_event_id;
388086 
388087    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
388088       (p_application_id           => p_application_id
388089       ,p_primary_ledger_id        => p_primary_ledger_id
388090       ,p_base_ledger_id           => p_base_ledger_id
388091       ,p_target_ledger_id         => p_target_ledger_id
388092       ,p_entity_id                => l_array_entity_id(Idx)
388093       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
388094       ,p_entity_code              => l_array_entity_code(Idx)
388095       ,p_transaction_num          => l_array_transaction_num(Idx)
388096       ,p_event_id                 => l_array_event_id(Idx)
388097       ,p_event_class_code         => l_array_class_code(Idx)
388098       ,p_event_type_code          => l_array_event_type(Idx)
388099       ,p_event_number             => l_array_event_number(Idx)
388100       ,p_event_date               => l_array_event_date(Idx)
388101       ,p_transaction_date         => l_array_transaction_date(Idx)
388102       ,p_reference_num_1          => l_array_reference_num_1(Idx)
388103       ,p_reference_num_2          => l_array_reference_num_2(Idx)
388104       ,p_reference_num_3          => l_array_reference_num_3(Idx)
388105       ,p_reference_num_4          => l_array_reference_num_4(Idx)
388106       ,p_reference_char_1         => l_array_reference_char_1(Idx)
388107       ,p_reference_char_2         => l_array_reference_char_2(Idx)
388108       ,p_reference_char_3         => l_array_reference_char_3(Idx)
388109       ,p_reference_char_4         => l_array_reference_char_4(Idx)
388110       ,p_reference_date_1         => l_array_reference_date_1(Idx)
388111       ,p_reference_date_2         => l_array_reference_date_2(Idx)
388112       ,p_reference_date_3         => l_array_reference_date_3(Idx)
388113       ,p_reference_date_4         => l_array_reference_date_4(Idx)
388114       ,p_event_created_by         => l_array_event_created_by(Idx)
388115       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
388116        --
388117 END IF;
388118 
388119 
388120 
388121 --
388122 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
388123 
388124 l_acct_reversal_source := SUBSTR(NULL, 1,30);
388125 
388126 IF l_continue_with_lines THEN
388127    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
388128       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
388129 
388130       xla_accounting_err_pkg.build_message
388131          (p_appli_s_name            => 'XLA'
388132          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
388133          ,p_token_1                 => 'LINE_NUMBER'
388134          ,p_value_1                 => l_array_extract_line_num(Idx)
388135          ,p_token_2                 => 'PRODUCT_NAME'
388136          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
388137          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
388138          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
388139          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
388140 
388141    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
388142       --
388143       -- following sets the accounting attributes needed to reverse
388144       -- accounting for a distributeion
388145       --
388146 
388147       --
388148       -- 5217187
388149       --
388150       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
388151       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
388152                                        g_array_event(l_event_id).array_value_num('header_index'));
388153       --
388154       --
388155 
388156       -- No reversal code generated
388157 
388158       xla_ae_lines_pkg.SetAcctReversalAttrs
388159          (p_event_id             => l_event_id
388160          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
388161          ,p_calculate_acctd_flag => l_calculate_acctd_flag
388162          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
388163    END IF;
388164 
388165    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
388166        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
388167 
388168 --
388169 AcctLineType_73 (
388170  p_application_id  => p_application_id
388171  ,p_event_id     => l_event_id
388172  ,p_calculate_acctd_flag => l_calculate_acctd_flag
388173  ,p_calculate_g_l_flag => l_calculate_g_l_flag
388174  ,p_actual_flag => l_actual_flag
388175  ,p_balance_type_code => l_balance_type_code
388176  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
388177  
388178  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
388179  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
388180  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
388181  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
388182  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
388183  , p_source_11 => l_array_source_11(Idx)
388184  , p_source_84 => l_array_source_84(Idx)
388185  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
388186  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
388187  , p_source_88 => l_array_source_88(Idx)
388188  , p_source_91 => l_array_source_91(Idx)
388189  , p_source_92 => l_array_source_92(Idx)
388190  , p_source_93 => l_array_source_93(Idx)
388191  , p_source_94 => l_array_source_94(Idx)
388192  , p_source_95 => l_array_source_95(Idx)
388193  , p_source_97 => l_array_source_97(Idx)
388194  );
388195 If(l_balance_type_code = 'A') THEN
388196   l_actual_gain_loss_ref := l_gain_or_loss_ref;
388197 END IF;
388198 
388199 --
388200 
388201 
388202 --
388203 AcctLineType_96 (
388204  p_application_id  => p_application_id
388205  ,p_event_id     => l_event_id
388206  ,p_calculate_acctd_flag => l_calculate_acctd_flag
388207  ,p_calculate_g_l_flag => l_calculate_g_l_flag
388208  ,p_actual_flag => l_actual_flag
388209  ,p_balance_type_code => l_balance_type_code
388210  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
388211  
388212  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
388213  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
388214  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
388215  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
388216  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
388217  , p_source_11 => l_array_source_11(Idx)
388218  , p_source_84 => l_array_source_84(Idx)
388219  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
388220  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
388221  , p_source_88 => l_array_source_88(Idx)
388222  , p_source_91 => l_array_source_91(Idx)
388223  , p_source_92 => l_array_source_92(Idx)
388224  , p_source_93 => l_array_source_93(Idx)
388225  , p_source_94 => l_array_source_94(Idx)
388226  , p_source_95 => l_array_source_95(Idx)
388227  , p_source_97 => l_array_source_97(Idx)
388228  );
388229 If(l_balance_type_code = 'A') THEN
388230   l_actual_gain_loss_ref := l_gain_or_loss_ref;
388231 END IF;
388232 
388233 --
388234 
388235 
388236 --
388237 AcctLineType_221 (
388238  p_application_id  => p_application_id
388239  ,p_event_id     => l_event_id
388240  ,p_calculate_acctd_flag => l_calculate_acctd_flag
388241  ,p_calculate_g_l_flag => l_calculate_g_l_flag
388242  ,p_actual_flag => l_actual_flag
388243  ,p_balance_type_code => l_balance_type_code
388244  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
388245  
388246  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
388247  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
388248  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
388249  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
388250  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
388251  , p_source_11 => l_array_source_11(Idx)
388252  , p_source_15 => l_array_source_15(Idx)
388253  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
388254  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
388255  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
388256  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
388257  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
388258  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
388259  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
388260  , p_source_84 => l_array_source_84(Idx)
388261  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
388262  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
388263  , p_source_88 => l_array_source_88(Idx)
388264  , p_source_91 => l_array_source_91(Idx)
388265  , p_source_92 => l_array_source_92(Idx)
388266  , p_source_93 => l_array_source_93(Idx)
388267  , p_source_94 => l_array_source_94(Idx)
388268  , p_source_95 => l_array_source_95(Idx)
388269  , p_source_97 => l_array_source_97(Idx)
388270  );
388271 If(l_balance_type_code = 'A') THEN
388272   l_actual_gain_loss_ref := l_gain_or_loss_ref;
388273 END IF;
388274 
388275 --
388276 
388277 
388278 --
388279 AcctLineType_249 (
388280  p_application_id  => p_application_id
388281  ,p_event_id     => l_event_id
388282  ,p_calculate_acctd_flag => l_calculate_acctd_flag
388283  ,p_calculate_g_l_flag => l_calculate_g_l_flag
388284  ,p_actual_flag => l_actual_flag
388285  ,p_balance_type_code => l_balance_type_code
388286  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
388287  
388288  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
388289  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
388290  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
388291  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
388292  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
388293  , p_source_15 => l_array_source_15(Idx)
388294  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
388295  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
388296  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
388297  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
388298  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
388299  , p_source_84 => l_array_source_84(Idx)
388300  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
388301  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
388302  , p_source_88 => l_array_source_88(Idx)
388303  , p_source_91 => l_array_source_91(Idx)
388304  , p_source_92 => l_array_source_92(Idx)
388305  , p_source_93 => l_array_source_93(Idx)
388306  , p_source_94 => l_array_source_94(Idx)
388307  , p_source_95 => l_array_source_95(Idx)
388308  , p_source_97 => l_array_source_97(Idx)
388309  , p_source_108 => l_array_source_108(Idx)
388310  );
388311 If(l_balance_type_code = 'A') THEN
388312   l_actual_gain_loss_ref := l_gain_or_loss_ref;
388313 END IF;
388314 
388315 --
388316 
388317       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
388318       -- or secondary ledger that has different currency with primary
388319       -- or alc that is calculated by sla
388320       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
388321             (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'))
388322 
388323 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
388324 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
388325           AND (l_actual_flag = 'A')) THEN
388326         XLA_AE_LINES_PKG.CreateGainOrLossLines(
388327           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
388328          ,p_application_id   => p_application_id
388329          ,p_amb_context_code => 'DEFAULT'
388330          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
388331          ,p_event_class_code => C_EVENT_CLASS_CODE
388332          ,p_event_type_code  => C_EVENT_TYPE_CODE
388333          
388334          ,p_gain_ccid        => -1
388335          ,p_loss_ccid        => -1
388336 
388337          ,p_actual_flag      => l_actual_flag
388338          ,p_enc_flag         => null
388339          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
388340          ,p_enc_g_l_ref      => null
388341          );
388342       END IF;
388343    END IF;
388344 END IF;
388345 
388346    ELSE
388347       --
388348       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
388349       --
388350       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
388351          trace
388352             (p_msg      => 'Trancaction revesal option is Y'
388353             ,p_level    => C_LEVEL_STATEMENT
388354             ,p_module   => l_log_module);
388355       END IF;
388356    END IF;
388357 
388358 END LOOP;
388359 l_result := XLA_AE_LINES_PKG.InsertLines ;
388360 end loop;
388361 close line_cur;
388362 
388363 
388364 --
388365 -- insert headers into xla_ae_headers_gt table
388366 --
388367 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
388368 
388369 -- insert into errors table here.
388370 
388371 END LOOP;
388372 
388373 --
388374 -- 4865292
388375 --
388376 -- Compare g_hdr_extract_count with event count in
388377 -- CreateHeadersAndLines.
388378 --
388379 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
388380 
388381 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
388382    trace (p_msg     => '# rows extracted from header extract objects '
388383                     || ' (running total): '
388384                     || g_hdr_extract_count
388385          ,p_level   => C_LEVEL_STATEMENT
388386          ,p_module  => l_log_module);
388387 END IF;
388388 
388389 CLOSE header_cur;
388390 --
388391 
388392 --
388393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
388394    trace
388395       (p_msg      => 'END of EventType_597'
388396       ,p_level    => C_LEVEL_PROCEDURE
388397       ,p_module   => l_log_module);
388398 END IF;
388399 --
388400 RETURN l_result;
388401 EXCEPTION
388402 WHEN xla_exceptions_pkg.application_exception THEN
388403    
388404 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
388405 
388406    
388407 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
388408 
388409    RAISE;
388410 
388411 WHEN NO_DATA_FOUND THEN
388412 
388413 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
388414 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
388415 
388416 FOR header_record IN header_cur
388417 LOOP
388418     l_array_header_events(header_record.event_id) := header_record.event_id;
388419 END LOOP;
388420 
388421 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
388422 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
388423 
388424 fnd_file.put_line(fnd_file.LOG, '                    ');
388425 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
388426 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
388427 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
388428 
388429 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
388430 LOOP
388431 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
388432 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
388433         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
388434 	END IF;
388435 END LOOP;
388436 
388437 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
388438 fnd_file.put_line(fnd_file.LOG, '                    ');
388439 
388440 
388441 xla_exceptions_pkg.raise_message
388442       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_597');
388443 
388444 
388445 WHEN OTHERS THEN
388446    xla_exceptions_pkg.raise_message
388447       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_597');
388448 END EventType_597;
388449 --
388450 
388451 ---------------------------------------
388452 --
388453 -- PRIVATE PROCEDURE
388454 --         insert_sources_598
388455 --
388456 ----------------------------------------
388457 --
388458 PROCEDURE insert_sources_598(
388459                                 p_target_ledger_id       IN NUMBER
388460                               , p_language               IN VARCHAR2
388461                               , p_sla_ledger_id          IN NUMBER
388462                               , p_pad_start_date         IN DATE
388463                               , p_pad_end_date           IN DATE
388464                          )
388465 IS
388466 
388467 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UAVG_COST_UPD';
388468 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
388469 p_apps_owner                   VARCHAR2(30);
388470 l_log_module                   VARCHAR2(240);
388471 BEGIN
388472 IF g_log_enabled THEN
388473       l_log_module := C_DEFAULT_MODULE||'.insert_sources_598';
388474 END IF;
388475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
388476 
388477       trace
388478          (p_msg      => 'BEGIN of insert_sources_598'
388479          ,p_level    => C_LEVEL_PROCEDURE
388480          ,p_module   => l_log_module);
388481 
388482 END IF;
388483 
388484 -- select APPS owner
388485 SELECT oracle_username
388486   INTO p_apps_owner
388487   FROM fnd_oracle_userid
388488  WHERE read_only_flag = 'U'
388489 ;
388490 
388491 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
388492       trace
388493          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
388494                         ' - p_language = '||p_language||
388495                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
388496                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
388497                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
388498                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
388499          ,p_level    => C_LEVEL_STATEMENT
388500          ,p_module   => l_log_module);
388501 END IF;
388502 
388503 
388504 --
388505 INSERT INTO xla_diag_sources --hdr1
388506 (
388507         event_id
388508       , ledger_id
388509       , sla_ledger_id
388510       , description_language
388511       , object_name
388512       , object_type_code
388513       , line_number
388514       , source_application_id
388515       , source_type_code
388516       , source_code
388517       , source_value
388518       , source_meaning
388519       , created_by
388520       , creation_date
388521       , last_update_date
388522       , last_updated_by
388523       , last_update_login
388524       , program_update_date
388525       , program_application_id
388526       , program_id
388527       , request_id
388528 )
388529 SELECT
388530         event_id
388531       , p_target_ledger_id
388532       , p_sla_ledger_id
388533       , p_language
388534       , object_name
388535       , object_type_code
388536       , line_number
388537       , source_application_id
388538       , source_type_code
388539       , source_code
388540       , SUBSTR(source_value ,1,1996)
388541       , SUBSTR(source_meaning,1,200)
388542       , xla_environment_pkg.g_Usr_Id
388543       , TRUNC(SYSDATE)
388544       , TRUNC(SYSDATE)
388545       , xla_environment_pkg.g_Usr_Id
388546       , xla_environment_pkg.g_Login_Id
388547       , TRUNC(SYSDATE)
388548       , xla_environment_pkg.g_Prog_Appl_Id
388549       , xla_environment_pkg.g_Prog_Id
388550       , xla_environment_pkg.g_Req_Id
388551   FROM (
388552        SELECT xet.event_id                  event_id
388553             , 0                             line_number
388554             , CASE r
388555                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
388556                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
388557                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
388558                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
388559                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
388560                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
388561                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
388562                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
388563                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
388564                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
388565                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
388566                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
388567                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
388568                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
388569                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
388570                 WHEN 16 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
388571                 WHEN 17 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
388572                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
388573                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
388574                 
388575                ELSE null
388576               END                           object_name
388577             , CASE r
388578                 WHEN 1 THEN 'HEADER' 
388579                 WHEN 2 THEN 'HEADER' 
388580                 WHEN 3 THEN 'HEADER' 
388581                 WHEN 4 THEN 'HEADER' 
388582                 WHEN 5 THEN 'HEADER' 
388583                 WHEN 6 THEN 'HEADER' 
388584                 WHEN 7 THEN 'HEADER' 
388585                 WHEN 8 THEN 'HEADER' 
388586                 WHEN 9 THEN 'HEADER' 
388587                 WHEN 10 THEN 'HEADER' 
388588                 WHEN 11 THEN 'HEADER' 
388589                 WHEN 12 THEN 'HEADER' 
388590                 WHEN 13 THEN 'HEADER' 
388591                 WHEN 14 THEN 'HEADER' 
388592                 WHEN 15 THEN 'HEADER' 
388593                 WHEN 16 THEN 'HEADER' 
388594                 WHEN 17 THEN 'HEADER' 
388595                 WHEN 18 THEN 'HEADER' 
388596                 WHEN 19 THEN 'HEADER' 
388597                 
388598                 ELSE null
388599               END                           object_type_code
388600             , CASE r
388601                 WHEN 1 THEN '707' 
388602                 WHEN 2 THEN '707' 
388603                 WHEN 3 THEN '707' 
388604                 WHEN 4 THEN '707' 
388605                 WHEN 5 THEN '707' 
388606                 WHEN 6 THEN '707' 
388607                 WHEN 7 THEN '707' 
388608                 WHEN 8 THEN '707' 
388609                 WHEN 9 THEN '707' 
388610                 WHEN 10 THEN '707' 
388611                 WHEN 11 THEN '707' 
388612                 WHEN 12 THEN '707' 
388613                 WHEN 13 THEN '707' 
388614                 WHEN 14 THEN '707' 
388615                 WHEN 15 THEN '707' 
388616                 WHEN 16 THEN '707' 
388617                 WHEN 17 THEN '707' 
388618                 WHEN 18 THEN '707' 
388619                 WHEN 19 THEN '707' 
388620                 
388621                 ELSE null
388622               END                           source_application_id
388623             , 'S'             source_type_code
388624             , CASE r
388625                 WHEN 1 THEN 'TRANSACTION_ID' 
388626                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
388627                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
388628                 WHEN 4 THEN 'TRANSACTION_UOM' 
388629                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
388630                 WHEN 6 THEN 'INV_TXN_MATERIAL_ACCT' 
388631                 WHEN 7 THEN 'INV_TXN_MAT_OVHD_ACCT' 
388632                 WHEN 8 THEN 'INV_TXN_RESOURCE_ACCT' 
388633                 WHEN 9 THEN 'INV_TXN_OUT_PROC_ACCT' 
388634                 WHEN 10 THEN 'INV_TXN_OVERHEAD_ACCT' 
388635                 WHEN 11 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
388636                 WHEN 12 THEN 'PLA_ACV_ACCOUNT' 
388637                 WHEN 13 THEN 'PLA_MATERIAL_ACCOUNT' 
388638                 WHEN 14 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
388639                 WHEN 15 THEN 'PLA_RESOURCE_ACCOUNT' 
388640                 WHEN 16 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
388641                 WHEN 17 THEN 'PLA_OVERHEAD_ACCOUNT' 
388642                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
388643                 WHEN 19 THEN 'TRANSFER_TO_GL_INDICATOR' 
388644                 
388645                 ELSE null
388646               END                           source_code
388647             , CASE r
388648                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
388649                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
388650                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
388651                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
388652                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
388653                 WHEN 6 THEN TO_CHAR(h3.INV_TXN_MATERIAL_ACCT)
388654                 WHEN 7 THEN TO_CHAR(h3.INV_TXN_MAT_OVHD_ACCT)
388655                 WHEN 8 THEN TO_CHAR(h3.INV_TXN_RESOURCE_ACCT)
388656                 WHEN 9 THEN TO_CHAR(h3.INV_TXN_OUT_PROC_ACCT)
388657                 WHEN 10 THEN TO_CHAR(h3.INV_TXN_OVERHEAD_ACCT)
388658                 WHEN 11 THEN TO_CHAR(h3.INV_TXN_DISTRIBUTION_ACCT)
388659                 WHEN 12 THEN TO_CHAR(h6.PLA_ACV_ACCOUNT)
388660                 WHEN 13 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
388661                 WHEN 14 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
388662                 WHEN 15 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
388663                 WHEN 16 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
388664                 WHEN 17 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
388665                 WHEN 18 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
388666                 WHEN 19 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
388667                 
388668                 ELSE null
388669               END                           source_value
388670             , CASE r
388671                 WHEN 18 THEN fvl85.meaning
388672                 WHEN 19 THEN fvl114.meaning
388673                 
388674                 ELSE null
388675               END               source_meaning
388676         FROM xla_events_gt     xet  
388677       , CST_XLA_INV_HEADERS_V  h1
388678       , CST_XLA_INV_REF_V  h3
388679       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
388680       , CST_XLA_INV_TXN_TYPES_REF_V  h5
388681       , CST_XLA_PLA_CATEGORY_REF_V  h6
388682   , fnd_lookup_values    fvl85
388683   , fnd_lookup_values    fvl114
388684             ,(select rownum r from all_objects where rownum <= 19 and owner = p_apps_owner)
388685        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
388686          AND xet.event_type_code = C_EVENT_TYPE_CODE
388687             AND h1.event_id = xet.event_id
388688  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id  (+) = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id  and h6.pla_cat_item_id   (+) = h1.inventory_item_id  and h6.pla_subinv_cg   (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
388689   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
388690   AND fvl85.view_application_id(+) = 700
388691   AND fvl85.language(+)            = USERENV('LANG')
388692      AND fvl114.lookup_type(+)         = 'YES_NO'
388693   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
388694   AND fvl114.view_application_id(+) = 0
388695   AND fvl114.language(+)            = USERENV('LANG')
388696   
388697 )
388698 ;
388699 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
388700 
388701       trace
388702          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
388703          ,p_level    => C_LEVEL_STATEMENT
388704          ,p_module   => l_log_module);
388705 
388706 END IF;
388707 --
388708 
388709 
388710 
388711 --
388712 INSERT INTO xla_diag_sources --line1
388713 (
388714         event_id
388715       , ledger_id
388716       , sla_ledger_id
388717       , description_language
388718       , object_name
388719       , object_type_code
388720       , line_number
388721       , source_application_id
388722       , source_type_code
388723       , source_code
388724       , source_value
388725       , source_meaning
388726       , created_by
388727       , creation_date
388728       , last_update_date
388729       , last_updated_by
388730       , last_update_login
388731       , program_update_date
388732       , program_application_id
388733       , program_id
388734       , request_id
388735 )
388736 SELECT  event_id
388737       , p_target_ledger_id
388738       , p_sla_ledger_id
388739       , p_language
388740       , object_name
388741       , object_type_code
388742       , line_number
388743       , source_application_id
388744       , source_type_code
388745       , source_code
388746       , SUBSTR(source_value,1,1996)
388747       , SUBSTR(source_meaning,1,200)
388748       , xla_environment_pkg.g_Usr_Id
388749       , TRUNC(SYSDATE)
388750       , TRUNC(SYSDATE)
388751       , xla_environment_pkg.g_Usr_Id
388752       , xla_environment_pkg.g_Login_Id
388753       , TRUNC(SYSDATE)
388754       , xla_environment_pkg.g_Prog_Appl_Id
388755       , xla_environment_pkg.g_Prog_Id
388756       , xla_environment_pkg.g_Req_Id
388757   FROM (
388758        SELECT xet.event_id                  event_id
388759             , l2.line_number                 line_number
388760             , CASE r
388761                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
388762                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
388763                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
388764                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
388765                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
388766                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
388767                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
388768                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
388769                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
388770                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
388771                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
388772                 
388773                ELSE null
388774               END                           object_name
388775             , CASE r
388776                 WHEN 1 THEN 'LINE' 
388777                 WHEN 2 THEN 'LINE' 
388778                 WHEN 3 THEN 'LINE' 
388779                 WHEN 4 THEN 'LINE' 
388780                 WHEN 5 THEN 'LINE' 
388781                 WHEN 6 THEN 'LINE' 
388782                 WHEN 7 THEN 'LINE' 
388783                 WHEN 8 THEN 'LINE' 
388784                 WHEN 9 THEN 'LINE' 
388785                 WHEN 10 THEN 'LINE' 
388786                 WHEN 11 THEN 'LINE' 
388787                 
388788                 ELSE null
388789               END                           object_type_code
388790             , CASE r
388791                 WHEN 1 THEN '707' 
388792                 WHEN 2 THEN '707' 
388793                 WHEN 3 THEN '707' 
388794                 WHEN 4 THEN '707' 
388795                 WHEN 5 THEN '707' 
388796                 WHEN 6 THEN '707' 
388797                 WHEN 7 THEN '707' 
388798                 WHEN 8 THEN '707' 
388799                 WHEN 9 THEN '707' 
388800                 WHEN 10 THEN '707' 
388801                 WHEN 11 THEN '707' 
388802                 
388803                 ELSE null
388804               END                           source_application_id
388805             , 'S'             source_type_code
388806             , CASE r
388807                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
388808                 WHEN 2 THEN 'COST_ELEMENT_ID' 
388809                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
388810                 WHEN 4 THEN 'CURRENCY_CODE' 
388811                 WHEN 5 THEN 'ENTERED_AMOUNT' 
388812                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
388813                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
388814                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
388815                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
388816                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
388817                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
388818                 
388819                 ELSE null
388820               END                           source_code
388821             , CASE r
388822                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
388823                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
388824                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
388825                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
388826                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
388827                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
388828                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
388829                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
388830                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
388831                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
388832                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
388833                 
388834                 ELSE null
388835               END                           source_value
388836             , CASE r
388837                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
388838                           1009615
388839                          ,TO_CHAR(l2.COST_ELEMENT_ID)
388840                          ,'COST_ELEMENT_ID'
388841                          ,'S'
388842                          ,707)
388843                 
388844                 ELSE null
388845               END               source_meaning
388846          FROM  xla_events_gt     xet  
388847         , CST_XLA_INV_LINES_V  l2
388848             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
388849         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
388850           AND xet.event_type_code = C_EVENT_TYPE_CODE
388851             AND l2.event_id          = xet.event_id
388852 
388853 )
388854 ;
388855 --
388856 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
388857 
388858       trace
388859          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
388860          ,p_level    => C_LEVEL_STATEMENT
388861          ,p_module   => l_log_module);
388862 
388863 END IF;
388864 
388865 
388866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
388867       trace
388868          (p_msg      => 'END of insert_sources_598'
388869          ,p_level    => C_LEVEL_PROCEDURE
388870          ,p_module   => l_log_module);
388871 END IF;
388872 EXCEPTION
388873   WHEN xla_exceptions_pkg.application_exception THEN
388874       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
388875             trace
388876                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
388877                ,p_level    => C_LEVEL_EXCEPTION
388878                ,p_module   => l_log_module);
388879       END IF;
388880       RAISE;
388881   WHEN OTHERS THEN
388882       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
388883             trace
388884                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
388885                ,p_level    => C_LEVEL_EXCEPTION
388886                ,p_module   => l_log_module);
388887        END IF;
388888        xla_exceptions_pkg.raise_message
388889            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_598');
388890 END insert_sources_598;
388891 --
388892 
388893 ---------------------------------------
388894 --
388895 -- PRIVATE FUNCTION
388896 --         EventType_598
388897 --
388898 ----------------------------------------
388899 --
388900 FUNCTION EventType_598
388901        (p_application_id         IN NUMBER
388902        ,p_base_ledger_id         IN NUMBER
388903        ,p_target_ledger_id       IN NUMBER
388904        ,p_language               IN VARCHAR2
388905        ,p_currency_code          IN VARCHAR2
388906        ,p_sla_ledger_id          IN NUMBER
388907        ,p_pad_start_date         IN DATE
388908        ,p_pad_end_date           IN DATE
388909        ,p_primary_ledger_id      IN NUMBER)
388910 RETURN BOOLEAN IS
388911 --
388912 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UAVG_COST_UPD';
388913 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
388914 
388915 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
388916 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
388917 --
388918 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388919 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388920 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
388921 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
388922 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388923 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
388924 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
388925 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388926 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
388927 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
388928 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388929 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388930 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388931 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
388932 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
388933 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
388934 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
388935 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
388936 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
388937 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
388938 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
388939 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
388940 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
388941 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
388942 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
388943 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
388944 
388945 l_event_id                             NUMBER;
388946 l_previous_event_id                    NUMBER;
388947 l_first_event_id                       NUMBER;
388948 l_last_event_id                        NUMBER;
388949 
388950 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
388951 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
388952 --
388953 --
388954 l_result                    BOOLEAN := TRUE;
388955 l_rows                      NUMBER  := 1000;
388956 l_event_type_name           VARCHAR2(80) := 'User-defined Cost Update';
388957 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
388958 l_description               VARCHAR2(4000);
388959 l_transaction_reversal      NUMBER;
388960 l_ae_header_id              NUMBER;
388961 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
388962 l_log_module                VARCHAR2(240);
388963 --
388964 l_acct_reversal_source      VARCHAR2(30);
388965 l_trx_reversal_source       VARCHAR2(30);
388966 
388967 l_continue_with_lines       BOOLEAN := TRUE;
388968 --
388969 l_acc_rev_gl_date_source    DATE;                      -- 4262811
388970 --
388971 type t_array_event_id is table of number index by binary_integer;
388972 
388973 l_rec_array_event                    t_rec_array_event;
388974 l_null_rec_array_event               t_rec_array_event;
388975 l_array_ae_header_id                 xla_number_array_type;
388976 l_actual_flag                        VARCHAR2(1) := NULL;
388977 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
388978 l_balance_type_code                  VARCHAR2(1) :=NULL;
388979 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
388980 
388981 --
388982 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
388983 --
388984 
388985 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
388986 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
388987 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
388988 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
388989 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
388990 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
388991 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_MAT_OVHD_ACCT%TYPE INDEX BY BINARY_INTEGER;
388992 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
388993 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_OUT_PROC_ACCT%TYPE INDEX BY BINARY_INTEGER;
388994 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
388995 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
388996 TYPE t_array_source_23 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_ACV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
388997 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
388998 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
388999 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
389000 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
389001 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
389002 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
389003 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
389004 
389005 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
389006 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
389007 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
389008 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
389009 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
389010 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
389011 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
389012 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
389013 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
389014 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
389015 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
389016 
389017 l_array_source_1              t_array_source_1;
389018 l_array_source_2              t_array_source_2;
389019 l_array_source_3              t_array_source_3;
389020 l_array_source_4              t_array_source_4;
389021 l_array_source_5              t_array_source_5;
389022 l_array_source_14              t_array_source_14;
389023 l_array_source_16              t_array_source_16;
389024 l_array_source_17              t_array_source_17;
389025 l_array_source_18              t_array_source_18;
389026 l_array_source_19              t_array_source_19;
389027 l_array_source_20              t_array_source_20;
389028 l_array_source_23              t_array_source_23;
389029 l_array_source_41              t_array_source_41;
389030 l_array_source_42              t_array_source_42;
389031 l_array_source_43              t_array_source_43;
389032 l_array_source_44              t_array_source_44;
389033 l_array_source_45              t_array_source_45;
389034 l_array_source_85              t_array_source_85;
389035 l_array_source_85_meaning      t_array_lookup_meaning;
389036 l_array_source_114              t_array_source_114;
389037 l_array_source_114_meaning      t_array_lookup_meaning;
389038 
389039 l_array_source_11      t_array_source_11;
389040 l_array_source_15      t_array_source_15;
389041 l_array_source_84      t_array_source_84;
389042 l_array_source_88      t_array_source_88;
389043 l_array_source_91      t_array_source_91;
389044 l_array_source_92      t_array_source_92;
389045 l_array_source_93      t_array_source_93;
389046 l_array_source_94      t_array_source_94;
389047 l_array_source_95      t_array_source_95;
389048 l_array_source_97      t_array_source_97;
389049 l_array_source_108      t_array_source_108;
389050 
389051 --
389052 CURSOR header_cur
389053 IS
389054 SELECT /*+ leading(xet) cardinality(xet,1) */
389055 -- Event Type Code: UAVG_COST_UPD
389056 -- Event Class Code: USER_DEFINE
389057     xet.entity_id
389058   , xet.legal_entity_id
389059   , xet.entity_code
389060   , xet.transaction_number
389061   , xet.event_id
389062   , xet.event_class_code
389063   , xet.event_type_code
389064   , xet.event_number
389065   , xet.event_date
389066   , xet.transaction_date
389067   , xet.reference_num_1
389068   , xet.reference_num_2
389069   , xet.reference_num_3
389070   , xet.reference_num_4
389071   , xet.reference_char_1
389072   , xet.reference_char_2
389073   , xet.reference_char_3
389074   , xet.reference_char_4
389075   , xet.reference_date_1
389076   , xet.reference_date_2
389077   , xet.reference_date_3
389078   , xet.reference_date_4
389079   , xet.event_created_by
389080   , xet.budgetary_control_flag 
389081   , h1.TRANSACTION_ID    source_1
389082   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
389083   , h3.TRANSACTION_QUANTITY    source_3
389084   , h3.TRANSACTION_UOM    source_4
389085   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
389086   , h3.INV_TXN_MATERIAL_ACCT    source_14
389087   , h3.INV_TXN_MAT_OVHD_ACCT    source_16
389088   , h3.INV_TXN_RESOURCE_ACCT    source_17
389089   , h3.INV_TXN_OUT_PROC_ACCT    source_18
389090   , h3.INV_TXN_OVERHEAD_ACCT    source_19
389091   , h3.INV_TXN_DISTRIBUTION_ACCT    source_20
389092   , h6.PLA_ACV_ACCOUNT    source_23
389093   , h6.PLA_MATERIAL_ACCOUNT    source_41
389094   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
389095   , h6.PLA_RESOURCE_ACCOUNT    source_43
389096   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
389097   , h6.PLA_OVERHEAD_ACCOUNT    source_45
389098   , h1.DISTRIBUTION_TYPE    source_85
389099   , fvl85.meaning   source_85_meaning
389100   , h1.TRANSFER_TO_GL_INDICATOR    source_114
389101   , fvl114.meaning   source_114_meaning
389102   FROM xla_events_gt     xet 
389103   , CST_XLA_INV_HEADERS_V  h1
389104   , CST_XLA_INV_REF_V  h3
389105   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
389106   , CST_XLA_INV_TXN_TYPES_REF_V  h5
389107   , CST_XLA_PLA_CATEGORY_REF_V  h6
389108   , fnd_lookup_values    fvl85
389109   , fnd_lookup_values    fvl114
389110  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
389111    and xet.event_type_code = C_EVENT_TYPE_CODE
389112    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
389113  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID  (+) = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID  AND h6.PLA_CAT_ITEM_ID   (+) = h1.INVENTORY_ITEM_ID  AND h6.PLA_SUBINV_CG   (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
389114   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
389115   AND fvl85.view_application_id(+) = 700
389116   AND fvl85.language(+)            = USERENV('LANG')
389117      AND fvl114.lookup_type(+)         = 'YES_NO'
389118   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
389119   AND fvl114.view_application_id(+) = 0
389120   AND fvl114.language(+)            = USERENV('LANG')
389121   
389122  ORDER BY event_id
389123 ;
389124 
389125 
389126 --
389127 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
389128 IS
389129 SELECT /*+ leading(xet) cardinality(xet,1) */
389130 -- Event Type Code: UAVG_COST_UPD
389131 -- Event Class Code: USER_DEFINE
389132     xet.entity_id
389133    ,xet.legal_entity_id
389134    ,xet.entity_code
389135    ,xet.transaction_number
389136    ,xet.event_id
389137    ,xet.event_class_code
389138    ,xet.event_type_code
389139    ,xet.event_number
389140    ,xet.event_date
389141    ,xet.transaction_date
389142    ,xet.reference_num_1
389143    ,xet.reference_num_2
389144    ,xet.reference_num_3
389145    ,xet.reference_num_4
389146    ,xet.reference_char_1
389147    ,xet.reference_char_2
389148    ,xet.reference_char_3
389149    ,xet.reference_char_4
389150    ,xet.reference_date_1
389151    ,xet.reference_date_2
389152    ,xet.reference_date_3
389153    ,xet.reference_date_4
389154    ,xet.event_created_by
389155    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
389156   , l2.CODE_COMBINATION_ID    source_11
389157   , l2.COST_ELEMENT_ID    source_15
389158   , l2.DISTRIBUTION_IDENTIFIER    source_84
389159   , l2.CURRENCY_CODE    source_88
389160   , l2.ENTERED_AMOUNT    source_91
389161   , l2.CURRENCY_CONVERSION_DATE    source_92
389162   , l2.CURRENCY_CONVERSION_RATE    source_93
389163   , l2.CURRENCY_CONVERSION_TYPE    source_94
389164   , l2.ACCOUNTED_AMOUNT    source_95
389165   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
389166   , l2.L_ORGANIZATION_CODE    source_108
389167   FROM xla_events_gt     xet 
389168   , CST_XLA_INV_LINES_V  l2
389169  WHERE xet.event_id between x_first_event_id and x_last_event_id
389170    and xet.event_date between p_pad_start_date and p_pad_end_date
389171    and xet.event_type_code = C_EVENT_TYPE_CODE
389172    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
389173 ;
389174 
389175 --
389176 BEGIN
389177 IF g_log_enabled THEN
389178    l_log_module := C_DEFAULT_MODULE||'.EventType_598';
389179 END IF;
389180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
389181    trace
389182       (p_msg      => 'BEGIN of EventType_598'
389183       ,p_level    => C_LEVEL_PROCEDURE
389184       ,p_module   => l_log_module);
389185 END IF;
389186 
389187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
389188    trace
389189       (p_msg      => 'p_application_id = '||p_application_id||
389190                      ' - p_base_ledger_id = '||p_base_ledger_id||
389191                      ' - p_target_ledger_id  = '||p_target_ledger_id||
389192                      ' - p_language = '||p_language||
389193                      ' - p_currency_code = '||p_currency_code||
389194                      ' - p_sla_ledger_id = '||p_sla_ledger_id
389195       ,p_level    => C_LEVEL_STATEMENT
389196       ,p_module   => l_log_module);
389197 END IF;
389198 --
389199 -- initialze arrays
389200 --
389201 g_array_event.DELETE;
389202 l_rec_array_event := l_null_rec_array_event;
389203 --
389204 --------------------------------------
389205 -- 4262811 Initialze MPA Line Number
389206 --------------------------------------
389207 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
389208 
389209 --
389210 
389211 --
389212 OPEN header_cur;
389213 --
389214 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
389215    trace
389216    (p_msg      => 'SQL - FETCH header_cur'
389217    ,p_level    => C_LEVEL_STATEMENT
389218    ,p_module   => l_log_module);
389219 END IF;
389220 --
389221 LOOP
389222 FETCH header_cur BULK COLLECT INTO
389223         l_array_entity_id
389224       , l_array_legal_entity_id
389225       , l_array_entity_code
389226       , l_array_transaction_num
389227       , l_array_event_id
389228       , l_array_class_code
389229       , l_array_event_type
389230       , l_array_event_number
389231       , l_array_event_date
389232       , l_array_transaction_date
389233       , l_array_reference_num_1
389234       , l_array_reference_num_2
389235       , l_array_reference_num_3
389236       , l_array_reference_num_4
389237       , l_array_reference_char_1
389238       , l_array_reference_char_2
389239       , l_array_reference_char_3
389240       , l_array_reference_char_4
389241       , l_array_reference_date_1
389242       , l_array_reference_date_2
389243       , l_array_reference_date_3
389244       , l_array_reference_date_4
389245       , l_array_event_created_by
389246       , l_array_budgetary_control_flag 
389247       , l_array_source_1
389248       , l_array_source_2
389249       , l_array_source_3
389250       , l_array_source_4
389251       , l_array_source_5
389252       , l_array_source_14
389253       , l_array_source_16
389254       , l_array_source_17
389255       , l_array_source_18
389256       , l_array_source_19
389257       , l_array_source_20
389258       , l_array_source_23
389259       , l_array_source_41
389260       , l_array_source_42
389261       , l_array_source_43
389262       , l_array_source_44
389263       , l_array_source_45
389264       , l_array_source_85
389265       , l_array_source_85_meaning
389266       , l_array_source_114
389267       , l_array_source_114_meaning
389268       LIMIT l_rows;
389269 --
389270 IF (C_LEVEL_EVENT >= g_log_level) THEN
389271    trace
389272    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
389273    ,p_level    => C_LEVEL_EVENT
389274    ,p_module   => l_log_module);
389275 END IF;
389276 --
389277 EXIT WHEN l_array_entity_id.COUNT = 0;
389278 
389279 -- initialize arrays
389280 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
389281 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
389282 
389283 --
389284 -- Bug 4458708
389285 --
389286 XLA_AE_LINES_PKG.g_LineNumber := 0;
389287 
389288 
389289 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
389290 g_last_hdr_idx := l_array_event_id.LAST;
389291 --
389292 -- loop for the headers. Each iteration is for each header extract row
389293 -- fetched in header cursor
389294 --
389295 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
389296 
389297 --
389298 -- set event info as cache for other routines to refer event attributes
389299 --
389300 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
389301    (p_application_id           => p_application_id
389302    ,p_primary_ledger_id        => p_primary_ledger_id
389303    ,p_base_ledger_id           => p_base_ledger_id
389304    ,p_target_ledger_id         => p_target_ledger_id
389305    ,p_entity_id                => l_array_entity_id(hdr_idx)
389306    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
389307    ,p_entity_code              => l_array_entity_code(hdr_idx)
389308    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
389309    ,p_event_id                 => l_array_event_id(hdr_idx)
389310    ,p_event_class_code         => l_array_class_code(hdr_idx)
389311    ,p_event_type_code          => l_array_event_type(hdr_idx)
389312    ,p_event_number             => l_array_event_number(hdr_idx)
389313    ,p_event_date               => l_array_event_date(hdr_idx)
389314    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
389315    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
389316    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
389317    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
389318    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
389319    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
389320    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
389321    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
389322    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
389323    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
389324    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
389325    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
389326    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
389327    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
389328    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
389329 
389330 --
389331 -- set the status of entry to C_VALID (0)
389332 --
389333 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
389334 
389335 --
389336 -- initialize a row for ae header
389337 --
389338 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
389339 
389340 l_event_id := l_array_event_id(hdr_idx);
389341 
389342 --
389343 -- storing the hdr_idx for event. May be used by line cursor.
389344 --
389345 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
389346 
389347 --
389348 -- store sources from header extract. This can be improved to
389349 -- store only those sources from header extract that may be used in lines
389350 --
389351 
389352 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
389353 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
389354 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
389355 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
389356 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
389357 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
389358 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
389359 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
389360 g_array_event(l_event_id).array_value_num('source_18') := l_array_source_18(hdr_idx);
389361 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
389362 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
389363 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
389364 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
389365 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
389366 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
389367 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
389368 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
389369 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
389370 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
389371 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
389372 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
389373 
389374 --
389375 -- initilaize the status of ae headers for diffrent balance types
389376 -- the status is initialised to C_NOT_CREATED (2)
389377 --
389378 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
389379 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
389380 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
389381 
389382 --
389383 -- call api to validate and store accounting attributes for header
389384 --
389385 
389386 ------------------------------------------------------------
389387 -- Accrual Reversal : to get date for Standard Source (NONE)
389388 ------------------------------------------------------------
389389 l_acc_rev_gl_date_source := NULL;
389390 
389391      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
389392       l_rec_acct_attrs.array_date_value(1) := 
389393 xla_ae_sources_pkg.GetSystemSourceDate(
389394    p_source_code           => 'XLA_REFERENCE_DATE_1'
389395  , p_source_type_code      => 'Y'
389396  , p_source_application_id =>  602
389397 );
389398      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
389399       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
389400 
389401 
389402 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
389403 
389404 XLA_AE_HEADER_PKG.SetJeCategoryName;
389405 
389406 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
389407 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
389408 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
389409 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
389410 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
389411 
389412 
389413 -- No header level analytical criteria
389414 
389415 --
389416 --accounting attribute enhancement, bug 3612931
389417 --
389418 l_trx_reversal_source := SUBSTR(NULL, 1,30);
389419 
389420 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
389421    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
389422 
389423    xla_accounting_err_pkg.build_message
389424       (p_appli_s_name            => 'XLA'
389425       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
389426       ,p_token_1                 => 'ACCT_ATTR_NAME'
389427       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
389428       ,p_token_2                 => 'PRODUCT_NAME'
389429       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
389430       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
389431       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
389432       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
389433 
389434 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
389435    --
389436    -- following sets the accounting attributes needed to reverse
389437    -- accounting for a distributeion
389438    --
389439    xla_ae_lines_pkg.SetTrxReversalAttrs
389440       (p_event_id              => l_event_id
389441       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
389442       ,p_trx_reversal_source   => l_trx_reversal_source);
389443 
389444 END IF;
389445 
389446 
389447 ----------------------------------------------------------------
389448 -- 4262811 -  update the header statuses to invalid in need be
389449 ----------------------------------------------------------------
389450 --
389451 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
389452 
389453 
389454   -----------------------------------------------
389455   -- No accrual reversal for the event class/type
389456   -----------------------------------------------
389457 ----------------------------------------------------------------
389458 
389459 --
389460 -- this ends the header loop iteration for one bulk fetch
389461 --
389462 END LOOP;
389463 
389464 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
389465 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
389466 
389467 --
389468 -- insert dummy rows into lines gt table that were created due to
389469 -- transaction reversals
389470 --
389471 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
389472    l_result := XLA_AE_LINES_PKG.InsertLines;
389473 END IF;
389474 
389475 --
389476 -- reset the temp_line_num for each set of events fetched from header
389477 -- cursor rather than doing it for each new event in line cursor
389478 -- Bug 3939231
389479 --
389480 xla_ae_lines_pkg.g_temp_line_num := 0;
389481 
389482 
389483 
389484 --
389485 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
389486 --
389487 --
389488 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
389489 
389490       trace
389491          (p_msg      => 'SQL - FETCH line_cur'
389492          ,p_level    => C_LEVEL_STATEMENT
389493          ,p_module   => l_log_module);
389494 
389495 END IF;
389496 --
389497 --
389498 LOOP
389499   --
389500   FETCH line_cur BULK COLLECT INTO
389501         l_array_entity_id
389502       , l_array_legal_entity_id
389503       , l_array_entity_code
389504       , l_array_transaction_num
389505       , l_array_event_id
389506       , l_array_class_code
389507       , l_array_event_type
389508       , l_array_event_number
389509       , l_array_event_date
389510       , l_array_transaction_date
389511       , l_array_reference_num_1
389512       , l_array_reference_num_2
389513       , l_array_reference_num_3
389514       , l_array_reference_num_4
389515       , l_array_reference_char_1
389516       , l_array_reference_char_2
389517       , l_array_reference_char_3
389518       , l_array_reference_char_4
389519       , l_array_reference_date_1
389520       , l_array_reference_date_2
389521       , l_array_reference_date_3
389522       , l_array_reference_date_4
389523       , l_array_event_created_by
389524       , l_array_budgetary_control_flag
389525       , l_array_extract_line_num 
389526       , l_array_source_11
389527       , l_array_source_15
389528       , l_array_source_84
389529       , l_array_source_88
389530       , l_array_source_91
389531       , l_array_source_92
389532       , l_array_source_93
389533       , l_array_source_94
389534       , l_array_source_95
389535       , l_array_source_97
389536       , l_array_source_108
389537       LIMIT l_rows;
389538 
389539   --
389540   IF (C_LEVEL_EVENT >= g_log_level) THEN
389541             trace
389542                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
389543                ,p_level    => C_LEVEL_EVENT
389544                ,p_module   => l_log_module);
389545   END IF;
389546   --
389547   EXIT WHEN l_array_entity_id.count = 0;
389548 
389549   XLA_AE_LINES_PKG.g_rec_lines := null;
389550 
389551 --
389552 -- Bug 4458708
389553 --
389554 XLA_AE_LINES_PKG.g_LineNumber := 0;
389555 --
389556 --
389557 
389558 FOR Idx IN 1..l_array_event_id.count LOOP
389559    --
389560    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
389561    --
389562    l_event_id := l_array_event_id(idx);  -- 5648433
389563 
389564    --
389565    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
389566    --
389567 
389568    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
389569              (g_array_event(l_event_id).array_value_num('header_index'))
389570          ,'N'
389571          ) <> 'Y'
389572    THEN
389573       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
389574          trace
389575             (p_msg      => 'Trancaction revesal option is not Y '
389576             ,p_level    => C_LEVEL_STATEMENT
389577             ,p_module   => l_log_module);
389578       END IF;
389579 
389580 --
389581 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
389582 --
389583 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
389584 --
389585 -- set event info as cache for other routines to refer event attributes
389586 --
389587 
389588 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
389589    l_previous_event_id := l_event_id;
389590 
389591    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
389592       (p_application_id           => p_application_id
389593       ,p_primary_ledger_id        => p_primary_ledger_id
389594       ,p_base_ledger_id           => p_base_ledger_id
389595       ,p_target_ledger_id         => p_target_ledger_id
389596       ,p_entity_id                => l_array_entity_id(Idx)
389597       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
389598       ,p_entity_code              => l_array_entity_code(Idx)
389599       ,p_transaction_num          => l_array_transaction_num(Idx)
389600       ,p_event_id                 => l_array_event_id(Idx)
389601       ,p_event_class_code         => l_array_class_code(Idx)
389602       ,p_event_type_code          => l_array_event_type(Idx)
389603       ,p_event_number             => l_array_event_number(Idx)
389604       ,p_event_date               => l_array_event_date(Idx)
389605       ,p_transaction_date         => l_array_transaction_date(Idx)
389606       ,p_reference_num_1          => l_array_reference_num_1(Idx)
389607       ,p_reference_num_2          => l_array_reference_num_2(Idx)
389608       ,p_reference_num_3          => l_array_reference_num_3(Idx)
389609       ,p_reference_num_4          => l_array_reference_num_4(Idx)
389610       ,p_reference_char_1         => l_array_reference_char_1(Idx)
389611       ,p_reference_char_2         => l_array_reference_char_2(Idx)
389612       ,p_reference_char_3         => l_array_reference_char_3(Idx)
389613       ,p_reference_char_4         => l_array_reference_char_4(Idx)
389614       ,p_reference_date_1         => l_array_reference_date_1(Idx)
389615       ,p_reference_date_2         => l_array_reference_date_2(Idx)
389616       ,p_reference_date_3         => l_array_reference_date_3(Idx)
389617       ,p_reference_date_4         => l_array_reference_date_4(Idx)
389618       ,p_event_created_by         => l_array_event_created_by(Idx)
389619       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
389620        --
389621 END IF;
389622 
389623 
389624 
389625 --
389626 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
389627 
389628 l_acct_reversal_source := SUBSTR(NULL, 1,30);
389629 
389630 IF l_continue_with_lines THEN
389631    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
389632       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
389633 
389634       xla_accounting_err_pkg.build_message
389635          (p_appli_s_name            => 'XLA'
389636          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
389637          ,p_token_1                 => 'LINE_NUMBER'
389638          ,p_value_1                 => l_array_extract_line_num(Idx)
389639          ,p_token_2                 => 'PRODUCT_NAME'
389640          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
389641          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
389642          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
389643          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
389644 
389645    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
389646       --
389647       -- following sets the accounting attributes needed to reverse
389648       -- accounting for a distributeion
389649       --
389650 
389651       --
389652       -- 5217187
389653       --
389654       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
389655       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
389656                                        g_array_event(l_event_id).array_value_num('header_index'));
389657       --
389658       --
389659 
389660       -- No reversal code generated
389661 
389662       xla_ae_lines_pkg.SetAcctReversalAttrs
389663          (p_event_id             => l_event_id
389664          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
389665          ,p_calculate_acctd_flag => l_calculate_acctd_flag
389666          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
389667    END IF;
389668 
389669    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
389670        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
389671 
389672 --
389673 AcctLineType_69 (
389674  p_application_id  => p_application_id
389675  ,p_event_id     => l_event_id
389676  ,p_calculate_acctd_flag => l_calculate_acctd_flag
389677  ,p_calculate_g_l_flag => l_calculate_g_l_flag
389678  ,p_actual_flag => l_actual_flag
389679  ,p_balance_type_code => l_balance_type_code
389680  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
389681  
389682  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
389683  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
389684  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
389685  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
389686  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
389687  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
389688  , p_source_15 => l_array_source_15(Idx)
389689  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
389690  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
389691  , p_source_18 => g_array_event(l_event_id).array_value_num('source_18')
389692  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
389693  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
389694  , p_source_84 => l_array_source_84(Idx)
389695  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
389696  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
389697  , p_source_88 => l_array_source_88(Idx)
389698  , p_source_91 => l_array_source_91(Idx)
389699  , p_source_92 => l_array_source_92(Idx)
389700  , p_source_93 => l_array_source_93(Idx)
389701  , p_source_94 => l_array_source_94(Idx)
389702  , p_source_95 => l_array_source_95(Idx)
389703  , p_source_97 => l_array_source_97(Idx)
389704  );
389705 If(l_balance_type_code = 'A') THEN
389706   l_actual_gain_loss_ref := l_gain_or_loss_ref;
389707 END IF;
389708 
389709 --
389710 
389711 
389712 --
389713 AcctLineType_110 (
389714  p_application_id  => p_application_id
389715  ,p_event_id     => l_event_id
389716  ,p_calculate_acctd_flag => l_calculate_acctd_flag
389717  ,p_calculate_g_l_flag => l_calculate_g_l_flag
389718  ,p_actual_flag => l_actual_flag
389719  ,p_balance_type_code => l_balance_type_code
389720  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
389721  
389722  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
389723  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
389724  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
389725  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
389726  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
389727  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
389728  , p_source_84 => l_array_source_84(Idx)
389729  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
389730  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
389731  , p_source_88 => l_array_source_88(Idx)
389732  , p_source_91 => l_array_source_91(Idx)
389733  , p_source_92 => l_array_source_92(Idx)
389734  , p_source_93 => l_array_source_93(Idx)
389735  , p_source_94 => l_array_source_94(Idx)
389736  , p_source_95 => l_array_source_95(Idx)
389737  , p_source_97 => l_array_source_97(Idx)
389738  );
389739 If(l_balance_type_code = 'A') THEN
389740   l_actual_gain_loss_ref := l_gain_or_loss_ref;
389741 END IF;
389742 
389743 --
389744 
389745 
389746 --
389747 AcctLineType_124 (
389748  p_application_id  => p_application_id
389749  ,p_event_id     => l_event_id
389750  ,p_calculate_acctd_flag => l_calculate_acctd_flag
389751  ,p_calculate_g_l_flag => l_calculate_g_l_flag
389752  ,p_actual_flag => l_actual_flag
389753  ,p_balance_type_code => l_balance_type_code
389754  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
389755  
389756  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
389757  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
389758  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
389759  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
389760  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
389761  , p_source_11 => l_array_source_11(Idx)
389762  , p_source_84 => l_array_source_84(Idx)
389763  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
389764  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
389765  , p_source_88 => l_array_source_88(Idx)
389766  , p_source_91 => l_array_source_91(Idx)
389767  , p_source_92 => l_array_source_92(Idx)
389768  , p_source_93 => l_array_source_93(Idx)
389769  , p_source_94 => l_array_source_94(Idx)
389770  , p_source_95 => l_array_source_95(Idx)
389771  , p_source_97 => l_array_source_97(Idx)
389772  );
389773 If(l_balance_type_code = 'A') THEN
389774   l_actual_gain_loss_ref := l_gain_or_loss_ref;
389775 END IF;
389776 
389777 --
389778 
389779 
389780 --
389781 AcctLineType_227 (
389782  p_application_id  => p_application_id
389783  ,p_event_id     => l_event_id
389784  ,p_calculate_acctd_flag => l_calculate_acctd_flag
389785  ,p_calculate_g_l_flag => l_calculate_g_l_flag
389786  ,p_actual_flag => l_actual_flag
389787  ,p_balance_type_code => l_balance_type_code
389788  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
389789  
389790  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
389791  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
389792  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
389793  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
389794  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
389795  , p_source_11 => l_array_source_11(Idx)
389796  , p_source_84 => l_array_source_84(Idx)
389797  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
389798  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
389799  , p_source_88 => l_array_source_88(Idx)
389800  , p_source_91 => l_array_source_91(Idx)
389801  , p_source_92 => l_array_source_92(Idx)
389802  , p_source_93 => l_array_source_93(Idx)
389803  , p_source_94 => l_array_source_94(Idx)
389804  , p_source_95 => l_array_source_95(Idx)
389805  , p_source_97 => l_array_source_97(Idx)
389806  );
389807 If(l_balance_type_code = 'A') THEN
389808   l_actual_gain_loss_ref := l_gain_or_loss_ref;
389809 END IF;
389810 
389811 --
389812 
389813 
389814 --
389815 AcctLineType_246 (
389816  p_application_id  => p_application_id
389817  ,p_event_id     => l_event_id
389818  ,p_calculate_acctd_flag => l_calculate_acctd_flag
389819  ,p_calculate_g_l_flag => l_calculate_g_l_flag
389820  ,p_actual_flag => l_actual_flag
389821  ,p_balance_type_code => l_balance_type_code
389822  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
389823  
389824  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
389825  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
389826  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
389827  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
389828  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
389829  , p_source_15 => l_array_source_15(Idx)
389830  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
389831  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
389832  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
389833  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
389834  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
389835  , p_source_84 => l_array_source_84(Idx)
389836  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
389837  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
389838  , p_source_88 => l_array_source_88(Idx)
389839  , p_source_91 => l_array_source_91(Idx)
389840  , p_source_92 => l_array_source_92(Idx)
389841  , p_source_93 => l_array_source_93(Idx)
389842  , p_source_94 => l_array_source_94(Idx)
389843  , p_source_95 => l_array_source_95(Idx)
389844  , p_source_97 => l_array_source_97(Idx)
389845  , p_source_108 => l_array_source_108(Idx)
389846  );
389847 If(l_balance_type_code = 'A') THEN
389848   l_actual_gain_loss_ref := l_gain_or_loss_ref;
389849 END IF;
389850 
389851 --
389852 
389853       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
389854       -- or secondary ledger that has different currency with primary
389855       -- or alc that is calculated by sla
389856       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
389857             (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'))
389858 
389859 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
389860 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
389861           AND (l_actual_flag = 'A')) THEN
389862         XLA_AE_LINES_PKG.CreateGainOrLossLines(
389863           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
389864          ,p_application_id   => p_application_id
389865          ,p_amb_context_code => 'DEFAULT'
389866          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
389867          ,p_event_class_code => C_EVENT_CLASS_CODE
389868          ,p_event_type_code  => C_EVENT_TYPE_CODE
389869          
389870          ,p_gain_ccid        => -1
389871          ,p_loss_ccid        => -1
389872 
389873          ,p_actual_flag      => l_actual_flag
389874          ,p_enc_flag         => null
389875          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
389876          ,p_enc_g_l_ref      => null
389877          );
389878       END IF;
389879    END IF;
389880 END IF;
389881 
389882    ELSE
389883       --
389884       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
389885       --
389886       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
389887          trace
389888             (p_msg      => 'Trancaction revesal option is Y'
389889             ,p_level    => C_LEVEL_STATEMENT
389890             ,p_module   => l_log_module);
389891       END IF;
389892    END IF;
389893 
389894 END LOOP;
389895 l_result := XLA_AE_LINES_PKG.InsertLines ;
389896 end loop;
389897 close line_cur;
389898 
389899 
389900 --
389901 -- insert headers into xla_ae_headers_gt table
389902 --
389903 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
389904 
389905 -- insert into errors table here.
389906 
389907 END LOOP;
389908 
389909 --
389910 -- 4865292
389911 --
389912 -- Compare g_hdr_extract_count with event count in
389913 -- CreateHeadersAndLines.
389914 --
389915 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
389916 
389917 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
389918    trace (p_msg     => '# rows extracted from header extract objects '
389919                     || ' (running total): '
389920                     || g_hdr_extract_count
389921          ,p_level   => C_LEVEL_STATEMENT
389922          ,p_module  => l_log_module);
389923 END IF;
389924 
389925 CLOSE header_cur;
389926 --
389927 
389928 --
389929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
389930    trace
389931       (p_msg      => 'END of EventType_598'
389932       ,p_level    => C_LEVEL_PROCEDURE
389933       ,p_module   => l_log_module);
389934 END IF;
389935 --
389936 RETURN l_result;
389937 EXCEPTION
389938 WHEN xla_exceptions_pkg.application_exception THEN
389939    
389940 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
389941 
389942    
389943 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
389944 
389945    RAISE;
389946 
389947 WHEN NO_DATA_FOUND THEN
389948 
389949 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
389950 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
389951 
389952 FOR header_record IN header_cur
389953 LOOP
389954     l_array_header_events(header_record.event_id) := header_record.event_id;
389955 END LOOP;
389956 
389957 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
389958 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
389959 
389960 fnd_file.put_line(fnd_file.LOG, '                    ');
389961 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
389962 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
389963 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
389964 
389965 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
389966 LOOP
389967 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
389968 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
389969         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
389970 	END IF;
389971 END LOOP;
389972 
389973 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
389974 fnd_file.put_line(fnd_file.LOG, '                    ');
389975 
389976 
389977 xla_exceptions_pkg.raise_message
389978       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_598');
389979 
389980 
389981 WHEN OTHERS THEN
389982    xla_exceptions_pkg.raise_message
389983       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_598');
389984 END EventType_598;
389985 --
389986 
389987 ---------------------------------------
389988 --
389989 -- PRIVATE PROCEDURE
389990 --         insert_sources_599
389991 --
389992 ----------------------------------------
389993 --
389994 PROCEDURE insert_sources_599(
389995                                 p_target_ledger_id       IN NUMBER
389996                               , p_language               IN VARCHAR2
389997                               , p_sla_ledger_id          IN NUMBER
389998                               , p_pad_start_date         IN DATE
389999                               , p_pad_end_date           IN DATE
390000                          )
390001 IS
390002 
390003 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UCG_TXFR';
390004 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
390005 p_apps_owner                   VARCHAR2(30);
390006 l_log_module                   VARCHAR2(240);
390007 BEGIN
390008 IF g_log_enabled THEN
390009       l_log_module := C_DEFAULT_MODULE||'.insert_sources_599';
390010 END IF;
390011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
390012 
390013       trace
390014          (p_msg      => 'BEGIN of insert_sources_599'
390015          ,p_level    => C_LEVEL_PROCEDURE
390016          ,p_module   => l_log_module);
390017 
390018 END IF;
390019 
390020 -- select APPS owner
390021 SELECT oracle_username
390022   INTO p_apps_owner
390023   FROM fnd_oracle_userid
390024  WHERE read_only_flag = 'U'
390025 ;
390026 
390027 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
390028       trace
390029          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
390030                         ' - p_language = '||p_language||
390031                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
390032                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
390033                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
390034                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
390035          ,p_level    => C_LEVEL_STATEMENT
390036          ,p_module   => l_log_module);
390037 END IF;
390038 
390039 
390040 --
390041 INSERT INTO xla_diag_sources --hdr1
390042 (
390043         event_id
390044       , ledger_id
390045       , sla_ledger_id
390046       , description_language
390047       , object_name
390048       , object_type_code
390049       , line_number
390050       , source_application_id
390051       , source_type_code
390052       , source_code
390053       , source_value
390054       , source_meaning
390055       , created_by
390056       , creation_date
390057       , last_update_date
390058       , last_updated_by
390059       , last_update_login
390060       , program_update_date
390061       , program_application_id
390062       , program_id
390063       , request_id
390064 )
390065 SELECT
390066         event_id
390067       , p_target_ledger_id
390068       , p_sla_ledger_id
390069       , p_language
390070       , object_name
390071       , object_type_code
390072       , line_number
390073       , source_application_id
390074       , source_type_code
390075       , source_code
390076       , SUBSTR(source_value ,1,1996)
390077       , SUBSTR(source_meaning,1,200)
390078       , xla_environment_pkg.g_Usr_Id
390079       , TRUNC(SYSDATE)
390080       , TRUNC(SYSDATE)
390081       , xla_environment_pkg.g_Usr_Id
390082       , xla_environment_pkg.g_Login_Id
390083       , TRUNC(SYSDATE)
390084       , xla_environment_pkg.g_Prog_Appl_Id
390085       , xla_environment_pkg.g_Prog_Id
390086       , xla_environment_pkg.g_Req_Id
390087   FROM (
390088        SELECT xet.event_id                  event_id
390089             , 0                             line_number
390090             , CASE r
390091                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
390092                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
390093                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
390094                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
390095                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
390096                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390097                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390098                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390099                 WHEN 9 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
390100                 WHEN 10 THEN 'CST_XLA_INV_HEADERS_V' 
390101                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
390102                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
390103                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
390104                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390105                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390106                 WHEN 16 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390107                 WHEN 17 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390108                 WHEN 18 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
390109                 WHEN 19 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
390110                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
390111                 WHEN 21 THEN 'CST_XLA_INV_HEADERS_V' 
390112                 
390113                ELSE null
390114               END                           object_name
390115             , CASE r
390116                 WHEN 1 THEN 'HEADER' 
390117                 WHEN 2 THEN 'HEADER' 
390118                 WHEN 3 THEN 'HEADER' 
390119                 WHEN 4 THEN 'HEADER' 
390120                 WHEN 5 THEN 'HEADER' 
390121                 WHEN 6 THEN 'HEADER' 
390122                 WHEN 7 THEN 'HEADER' 
390123                 WHEN 8 THEN 'HEADER' 
390124                 WHEN 9 THEN 'HEADER' 
390125                 WHEN 10 THEN 'HEADER' 
390126                 WHEN 11 THEN 'HEADER' 
390127                 WHEN 12 THEN 'HEADER' 
390128                 WHEN 13 THEN 'HEADER' 
390129                 WHEN 14 THEN 'HEADER' 
390130                 WHEN 15 THEN 'HEADER' 
390131                 WHEN 16 THEN 'HEADER' 
390132                 WHEN 17 THEN 'HEADER' 
390133                 WHEN 18 THEN 'HEADER' 
390134                 WHEN 19 THEN 'HEADER' 
390135                 WHEN 20 THEN 'HEADER' 
390136                 WHEN 21 THEN 'HEADER' 
390137                 
390138                 ELSE null
390139               END                           object_type_code
390140             , CASE r
390141                 WHEN 1 THEN '707' 
390142                 WHEN 2 THEN '707' 
390143                 WHEN 3 THEN '707' 
390144                 WHEN 4 THEN '707' 
390145                 WHEN 5 THEN '707' 
390146                 WHEN 6 THEN '707' 
390147                 WHEN 7 THEN '707' 
390148                 WHEN 8 THEN '707' 
390149                 WHEN 9 THEN '707' 
390150                 WHEN 10 THEN '707' 
390151                 WHEN 11 THEN '707' 
390152                 WHEN 12 THEN '707' 
390153                 WHEN 13 THEN '707' 
390154                 WHEN 14 THEN '707' 
390155                 WHEN 15 THEN '707' 
390156                 WHEN 16 THEN '707' 
390157                 WHEN 17 THEN '707' 
390158                 WHEN 18 THEN '707' 
390159                 WHEN 19 THEN '707' 
390160                 WHEN 20 THEN '707' 
390161                 WHEN 21 THEN '707' 
390162                 
390163                 ELSE null
390164               END                           source_application_id
390165             , 'S'             source_type_code
390166             , CASE r
390167                 WHEN 1 THEN 'TRANSACTION_ID' 
390168                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
390169                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
390170                 WHEN 4 THEN 'TRANSACTION_UOM' 
390171                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
390172                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
390173                 WHEN 7 THEN 'PLA_ACV_ACCOUNT' 
390174                 WHEN 8 THEN 'PLA_EXPENSE_ACCOUNT' 
390175                 WHEN 9 THEN 'TRF_PLA_EXPENSE_ACCT' 
390176                 WHEN 10 THEN 'H_TRANSFER_COST_GROUP_ID' 
390177                 WHEN 11 THEN 'H_COST_GROUP_ID' 
390178                 WHEN 12 THEN 'H_SUBINVENTORY_CODE' 
390179                 WHEN 13 THEN 'H_TRANSFER_SUBINVENTORY' 
390180                 WHEN 14 THEN 'PLA_MATERIAL_ACCOUNT' 
390181                 WHEN 15 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
390182                 WHEN 16 THEN 'PLA_RESOURCE_ACCOUNT' 
390183                 WHEN 17 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
390184                 WHEN 18 THEN 'PLA_OVERHEAD_ACCOUNT' 
390185                 WHEN 19 THEN 'TRF_PLA_BRIDGING_ACCT' 
390186                 WHEN 20 THEN 'DISTRIBUTION_TYPE' 
390187                 WHEN 21 THEN 'TRANSFER_TO_GL_INDICATOR' 
390188                 
390189                 ELSE null
390190               END                           source_code
390191             , CASE r
390192                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
390193                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
390194                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
390195                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
390196                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
390197                 WHEN 6 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
390198                 WHEN 7 THEN TO_CHAR(h6.PLA_ACV_ACCOUNT)
390199                 WHEN 8 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
390200                 WHEN 9 THEN TO_CHAR(h7.TRF_PLA_EXPENSE_ACCT)
390201                 WHEN 10 THEN TO_CHAR(h1.H_TRANSFER_COST_GROUP_ID)
390202                 WHEN 11 THEN TO_CHAR(h1.H_COST_GROUP_ID)
390203                 WHEN 12 THEN TO_CHAR(h1.H_SUBINVENTORY_CODE)
390204                 WHEN 13 THEN TO_CHAR(h1.H_TRANSFER_SUBINVENTORY)
390205                 WHEN 14 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
390206                 WHEN 15 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
390207                 WHEN 16 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
390208                 WHEN 17 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
390209                 WHEN 18 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
390210                 WHEN 19 THEN TO_CHAR(h7.TRF_PLA_BRIDGING_ACCT)
390211                 WHEN 20 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
390212                 WHEN 21 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
390213                 
390214                 ELSE null
390215               END                           source_value
390216             , CASE r
390217                 WHEN 20 THEN fvl85.meaning
390218                 WHEN 21 THEN fvl114.meaning
390219                 
390220                 ELSE null
390221               END               source_meaning
390222         FROM xla_events_gt     xet  
390223       , CST_XLA_INV_HEADERS_V  h1
390224       , CST_XLA_INV_REF_V  h3
390225       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
390226       , CST_XLA_INV_TXN_TYPES_REF_V  h5
390227       , CST_XLA_PLA_CATEGORY_REF_V  h6
390228       , CST_XLA_TRF_PLA_CAT_REF_V  h7
390229   , fnd_lookup_values    fvl85
390230   , fnd_lookup_values    fvl114
390231             ,(select rownum r from all_objects where rownum <= 21 and owner = p_apps_owner)
390232        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
390233          AND xet.event_type_code = C_EVENT_TYPE_CODE
390234             AND h1.event_id = xet.event_id
390235  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id  (+) = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id  and h6.pla_cat_item_id   (+) = h1.inventory_item_id  and h6.pla_subinv_cg   (+) = h1.h_subinv_cg AND h7.trf_pla_cat_organization_id  (+) = h1.transfer_organization_id  and h7.trf_pla_cat_item_id  (+) = h1.inventory_item_id  and h7.trf_pla_subinv_cg  (+) = h1.h_trf_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
390236   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
390237   AND fvl85.view_application_id(+) = 700
390238   AND fvl85.language(+)            = USERENV('LANG')
390239      AND fvl114.lookup_type(+)         = 'YES_NO'
390240   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
390241   AND fvl114.view_application_id(+) = 0
390242   AND fvl114.language(+)            = USERENV('LANG')
390243   
390244 )
390245 ;
390246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
390247 
390248       trace
390249          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
390250          ,p_level    => C_LEVEL_STATEMENT
390251          ,p_module   => l_log_module);
390252 
390253 END IF;
390254 --
390255 
390256 
390257 
390258 --
390259 INSERT INTO xla_diag_sources --line1
390260 (
390261         event_id
390262       , ledger_id
390263       , sla_ledger_id
390264       , description_language
390265       , object_name
390266       , object_type_code
390267       , line_number
390268       , source_application_id
390269       , source_type_code
390270       , source_code
390271       , source_value
390272       , source_meaning
390273       , created_by
390274       , creation_date
390275       , last_update_date
390276       , last_updated_by
390277       , last_update_login
390278       , program_update_date
390279       , program_application_id
390280       , program_id
390281       , request_id
390282 )
390283 SELECT  event_id
390284       , p_target_ledger_id
390285       , p_sla_ledger_id
390286       , p_language
390287       , object_name
390288       , object_type_code
390289       , line_number
390290       , source_application_id
390291       , source_type_code
390292       , source_code
390293       , SUBSTR(source_value,1,1996)
390294       , SUBSTR(source_meaning,1,200)
390295       , xla_environment_pkg.g_Usr_Id
390296       , TRUNC(SYSDATE)
390297       , TRUNC(SYSDATE)
390298       , xla_environment_pkg.g_Usr_Id
390299       , xla_environment_pkg.g_Login_Id
390300       , TRUNC(SYSDATE)
390301       , xla_environment_pkg.g_Prog_Appl_Id
390302       , xla_environment_pkg.g_Prog_Id
390303       , xla_environment_pkg.g_Req_Id
390304   FROM (
390305        SELECT xet.event_id                  event_id
390306             , l2.line_number                 line_number
390307             , CASE r
390308                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
390309                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
390310                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
390311                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
390312                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
390313                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
390314                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
390315                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
390316                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
390317                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
390318                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
390319                 WHEN 12 THEN 'CST_XLA_INV_LINES_V' 
390320                 
390321                ELSE null
390322               END                           object_name
390323             , CASE r
390324                 WHEN 1 THEN 'LINE' 
390325                 WHEN 2 THEN 'LINE' 
390326                 WHEN 3 THEN 'LINE' 
390327                 WHEN 4 THEN 'LINE' 
390328                 WHEN 5 THEN 'LINE' 
390329                 WHEN 6 THEN 'LINE' 
390330                 WHEN 7 THEN 'LINE' 
390331                 WHEN 8 THEN 'LINE' 
390332                 WHEN 9 THEN 'LINE' 
390333                 WHEN 10 THEN 'LINE' 
390334                 WHEN 11 THEN 'LINE' 
390335                 WHEN 12 THEN 'LINE' 
390336                 
390337                 ELSE null
390338               END                           object_type_code
390339             , CASE r
390340                 WHEN 1 THEN '707' 
390341                 WHEN 2 THEN '707' 
390342                 WHEN 3 THEN '707' 
390343                 WHEN 4 THEN '707' 
390344                 WHEN 5 THEN '707' 
390345                 WHEN 6 THEN '707' 
390346                 WHEN 7 THEN '707' 
390347                 WHEN 8 THEN '707' 
390348                 WHEN 9 THEN '707' 
390349                 WHEN 10 THEN '707' 
390350                 WHEN 11 THEN '707' 
390351                 WHEN 12 THEN '707' 
390352                 
390353                 ELSE null
390354               END                           source_application_id
390355             , 'S'             source_type_code
390356             , CASE r
390357                 WHEN 1 THEN 'COST_ELEMENT_ID' 
390358                 WHEN 2 THEN 'COST_GROUP_ID' 
390359                 WHEN 3 THEN 'SUBINVENTORY_CODE' 
390360                 WHEN 4 THEN 'DISTRIBUTION_IDENTIFIER' 
390361                 WHEN 5 THEN 'CURRENCY_CODE' 
390362                 WHEN 6 THEN 'ENTERED_AMOUNT' 
390363                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
390364                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
390365                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
390366                 WHEN 10 THEN 'ACCOUNTED_AMOUNT' 
390367                 WHEN 11 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
390368                 WHEN 12 THEN 'L_ORGANIZATION_CODE' 
390369                 
390370                 ELSE null
390371               END                           source_code
390372             , CASE r
390373                 WHEN 1 THEN TO_CHAR(l2.COST_ELEMENT_ID)
390374                 WHEN 2 THEN TO_CHAR(l2.COST_GROUP_ID)
390375                 WHEN 3 THEN TO_CHAR(l2.SUBINVENTORY_CODE)
390376                 WHEN 4 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
390377                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
390378                 WHEN 6 THEN TO_CHAR(l2.ENTERED_AMOUNT)
390379                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
390380                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
390381                 WHEN 9 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
390382                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
390383                 WHEN 11 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
390384                 WHEN 12 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
390385                 
390386                 ELSE null
390387               END                           source_value
390388             , CASE r
390389                 WHEN 1 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
390390                           1009615
390391                          ,TO_CHAR(l2.COST_ELEMENT_ID)
390392                          ,'COST_ELEMENT_ID'
390393                          ,'S'
390394                          ,707)
390395                 WHEN 3 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
390396                           1009622
390397                          ,TO_CHAR(l2.SUBINVENTORY_CODE)
390398                          ,'SUBINVENTORY_CODE'
390399                          ,'S'
390400                          ,707)
390401                 
390402                 ELSE null
390403               END               source_meaning
390404          FROM  xla_events_gt     xet  
390405         , CST_XLA_INV_LINES_V  l2
390406             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
390407         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
390408           AND xet.event_type_code = C_EVENT_TYPE_CODE
390409             AND l2.event_id          = xet.event_id
390410 
390411 )
390412 ;
390413 --
390414 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
390415 
390416       trace
390417          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
390418          ,p_level    => C_LEVEL_STATEMENT
390419          ,p_module   => l_log_module);
390420 
390421 END IF;
390422 
390423 
390424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
390425       trace
390426          (p_msg      => 'END of insert_sources_599'
390427          ,p_level    => C_LEVEL_PROCEDURE
390428          ,p_module   => l_log_module);
390429 END IF;
390430 EXCEPTION
390431   WHEN xla_exceptions_pkg.application_exception THEN
390432       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
390433             trace
390434                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
390435                ,p_level    => C_LEVEL_EXCEPTION
390436                ,p_module   => l_log_module);
390437       END IF;
390438       RAISE;
390439   WHEN OTHERS THEN
390440       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
390441             trace
390442                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
390443                ,p_level    => C_LEVEL_EXCEPTION
390444                ,p_module   => l_log_module);
390445        END IF;
390446        xla_exceptions_pkg.raise_message
390447            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_599');
390448 END insert_sources_599;
390449 --
390450 
390451 ---------------------------------------
390452 --
390453 -- PRIVATE FUNCTION
390454 --         EventType_599
390455 --
390456 ----------------------------------------
390457 --
390458 FUNCTION EventType_599
390459        (p_application_id         IN NUMBER
390460        ,p_base_ledger_id         IN NUMBER
390461        ,p_target_ledger_id       IN NUMBER
390462        ,p_language               IN VARCHAR2
390463        ,p_currency_code          IN VARCHAR2
390464        ,p_sla_ledger_id          IN NUMBER
390465        ,p_pad_start_date         IN DATE
390466        ,p_pad_end_date           IN DATE
390467        ,p_primary_ledger_id      IN NUMBER)
390468 RETURN BOOLEAN IS
390469 --
390470 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UCG_TXFR';
390471 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
390472 
390473 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
390474 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
390475 --
390476 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390477 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390478 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
390479 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
390480 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390481 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
390482 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
390483 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390484 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
390485 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
390486 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390487 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390488 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390489 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
390490 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
390491 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
390492 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
390493 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
390494 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
390495 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
390496 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
390497 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
390498 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
390499 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
390500 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
390501 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
390502 
390503 l_event_id                             NUMBER;
390504 l_previous_event_id                    NUMBER;
390505 l_first_event_id                       NUMBER;
390506 l_last_event_id                        NUMBER;
390507 
390508 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
390509 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
390510 --
390511 --
390512 l_result                    BOOLEAN := TRUE;
390513 l_rows                      NUMBER  := 1000;
390514 l_event_type_name           VARCHAR2(80) := 'User-defined Cost Group Transfer';
390515 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
390516 l_description               VARCHAR2(4000);
390517 l_transaction_reversal      NUMBER;
390518 l_ae_header_id              NUMBER;
390519 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
390520 l_log_module                VARCHAR2(240);
390521 --
390522 l_acct_reversal_source      VARCHAR2(30);
390523 l_trx_reversal_source       VARCHAR2(30);
390524 
390525 l_continue_with_lines       BOOLEAN := TRUE;
390526 --
390527 l_acc_rev_gl_date_source    DATE;                      -- 4262811
390528 --
390529 type t_array_event_id is table of number index by binary_integer;
390530 
390531 l_rec_array_event                    t_rec_array_event;
390532 l_null_rec_array_event               t_rec_array_event;
390533 l_array_ae_header_id                 xla_number_array_type;
390534 l_actual_flag                        VARCHAR2(1) := NULL;
390535 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
390536 l_balance_type_code                  VARCHAR2(1) :=NULL;
390537 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
390538 
390539 --
390540 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
390541 --
390542 
390543 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
390544 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
390545 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
390546 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
390547 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
390548 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390549 TYPE t_array_source_23 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_ACV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390550 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390551 TYPE t_array_source_25 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
390552 TYPE t_array_source_27 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
390553 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_HEADERS_V.H_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
390554 TYPE t_array_source_30 IS TABLE OF CST_XLA_INV_HEADERS_V.H_SUBINVENTORY_CODE%TYPE INDEX BY BINARY_INTEGER;
390555 TYPE t_array_source_31 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_SUBINVENTORY%TYPE INDEX BY BINARY_INTEGER;
390556 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390557 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390558 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390559 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390560 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
390561 TYPE t_array_source_47 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
390562 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
390563 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
390564 
390565 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
390566 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_LINES_V.COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
390567 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_LINES_V.SUBINVENTORY_CODE%TYPE INDEX BY BINARY_INTEGER;
390568 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
390569 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
390570 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
390571 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
390572 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
390573 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
390574 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
390575 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
390576 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
390577 
390578 l_array_source_1              t_array_source_1;
390579 l_array_source_2              t_array_source_2;
390580 l_array_source_3              t_array_source_3;
390581 l_array_source_4              t_array_source_4;
390582 l_array_source_5              t_array_source_5;
390583 l_array_source_22              t_array_source_22;
390584 l_array_source_23              t_array_source_23;
390585 l_array_source_24              t_array_source_24;
390586 l_array_source_25              t_array_source_25;
390587 l_array_source_27              t_array_source_27;
390588 l_array_source_28              t_array_source_28;
390589 l_array_source_30              t_array_source_30;
390590 l_array_source_31              t_array_source_31;
390591 l_array_source_41              t_array_source_41;
390592 l_array_source_42              t_array_source_42;
390593 l_array_source_43              t_array_source_43;
390594 l_array_source_44              t_array_source_44;
390595 l_array_source_45              t_array_source_45;
390596 l_array_source_47              t_array_source_47;
390597 l_array_source_85              t_array_source_85;
390598 l_array_source_85_meaning      t_array_lookup_meaning;
390599 l_array_source_114              t_array_source_114;
390600 l_array_source_114_meaning      t_array_lookup_meaning;
390601 
390602 l_array_source_15      t_array_source_15;
390603 l_array_source_26      t_array_source_26;
390604 l_array_source_29      t_array_source_29;
390605 l_array_source_84      t_array_source_84;
390606 l_array_source_88      t_array_source_88;
390607 l_array_source_91      t_array_source_91;
390608 l_array_source_92      t_array_source_92;
390609 l_array_source_93      t_array_source_93;
390610 l_array_source_94      t_array_source_94;
390611 l_array_source_95      t_array_source_95;
390612 l_array_source_97      t_array_source_97;
390613 l_array_source_108      t_array_source_108;
390614 
390615 --
390616 CURSOR header_cur
390617 IS
390618 SELECT /*+ leading(xet) cardinality(xet,1) */
390619 -- Event Type Code: UCG_TXFR
390620 -- Event Class Code: USER_DEFINE
390621     xet.entity_id
390622   , xet.legal_entity_id
390623   , xet.entity_code
390624   , xet.transaction_number
390625   , xet.event_id
390626   , xet.event_class_code
390627   , xet.event_type_code
390628   , xet.event_number
390629   , xet.event_date
390630   , xet.transaction_date
390631   , xet.reference_num_1
390632   , xet.reference_num_2
390633   , xet.reference_num_3
390634   , xet.reference_num_4
390635   , xet.reference_char_1
390636   , xet.reference_char_2
390637   , xet.reference_char_3
390638   , xet.reference_char_4
390639   , xet.reference_date_1
390640   , xet.reference_date_2
390641   , xet.reference_date_3
390642   , xet.reference_date_4
390643   , xet.event_created_by
390644   , xet.budgetary_control_flag 
390645   , h1.TRANSACTION_ID    source_1
390646   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
390647   , h3.TRANSACTION_QUANTITY    source_3
390648   , h3.TRANSACTION_UOM    source_4
390649   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
390650   , h6.PLA_BRIDGING_ACCOUNT    source_22
390651   , h6.PLA_ACV_ACCOUNT    source_23
390652   , h6.PLA_EXPENSE_ACCOUNT    source_24
390653   , h7.TRF_PLA_EXPENSE_ACCT    source_25
390654   , h1.H_TRANSFER_COST_GROUP_ID    source_27
390655   , h1.H_COST_GROUP_ID    source_28
390656   , h1.H_SUBINVENTORY_CODE    source_30
390657   , h1.H_TRANSFER_SUBINVENTORY    source_31
390658   , h6.PLA_MATERIAL_ACCOUNT    source_41
390659   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
390660   , h6.PLA_RESOURCE_ACCOUNT    source_43
390661   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
390662   , h6.PLA_OVERHEAD_ACCOUNT    source_45
390663   , h7.TRF_PLA_BRIDGING_ACCT    source_47
390664   , h1.DISTRIBUTION_TYPE    source_85
390665   , fvl85.meaning   source_85_meaning
390666   , h1.TRANSFER_TO_GL_INDICATOR    source_114
390667   , fvl114.meaning   source_114_meaning
390668   FROM xla_events_gt     xet 
390669   , CST_XLA_INV_HEADERS_V  h1
390670   , CST_XLA_INV_REF_V  h3
390671   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
390672   , CST_XLA_INV_TXN_TYPES_REF_V  h5
390673   , CST_XLA_PLA_CATEGORY_REF_V  h6
390674   , CST_XLA_TRF_PLA_CAT_REF_V  h7
390675   , fnd_lookup_values    fvl85
390676   , fnd_lookup_values    fvl114
390677  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
390678    and xet.event_type_code = C_EVENT_TYPE_CODE
390679    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
390680  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID  (+) = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID  AND h6.PLA_CAT_ITEM_ID   (+) = h1.INVENTORY_ITEM_ID  AND h6.PLA_SUBINV_CG   (+) = h1.H_SUBINV_CG AND h7.TRF_PLA_CAT_ORGANIZATION_ID  (+) = h1.TRANSFER_ORGANIZATION_ID  AND h7.TRF_PLA_CAT_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h7.TRF_PLA_SUBINV_CG  (+) = h1.H_TRF_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
390681   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
390682   AND fvl85.view_application_id(+) = 700
390683   AND fvl85.language(+)            = USERENV('LANG')
390684      AND fvl114.lookup_type(+)         = 'YES_NO'
390685   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
390686   AND fvl114.view_application_id(+) = 0
390687   AND fvl114.language(+)            = USERENV('LANG')
390688   
390689  ORDER BY event_id
390690 ;
390691 
390692 
390693 --
390694 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
390695 IS
390696 SELECT /*+ leading(xet) cardinality(xet,1) */
390697 -- Event Type Code: UCG_TXFR
390698 -- Event Class Code: USER_DEFINE
390699     xet.entity_id
390700    ,xet.legal_entity_id
390701    ,xet.entity_code
390702    ,xet.transaction_number
390703    ,xet.event_id
390704    ,xet.event_class_code
390705    ,xet.event_type_code
390706    ,xet.event_number
390707    ,xet.event_date
390708    ,xet.transaction_date
390709    ,xet.reference_num_1
390710    ,xet.reference_num_2
390711    ,xet.reference_num_3
390712    ,xet.reference_num_4
390713    ,xet.reference_char_1
390714    ,xet.reference_char_2
390715    ,xet.reference_char_3
390716    ,xet.reference_char_4
390717    ,xet.reference_date_1
390718    ,xet.reference_date_2
390719    ,xet.reference_date_3
390720    ,xet.reference_date_4
390721    ,xet.event_created_by
390722    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
390723   , l2.COST_ELEMENT_ID    source_15
390724   , l2.COST_GROUP_ID    source_26
390725   , l2.SUBINVENTORY_CODE    source_29
390726   , l2.DISTRIBUTION_IDENTIFIER    source_84
390727   , l2.CURRENCY_CODE    source_88
390728   , l2.ENTERED_AMOUNT    source_91
390729   , l2.CURRENCY_CONVERSION_DATE    source_92
390730   , l2.CURRENCY_CONVERSION_RATE    source_93
390731   , l2.CURRENCY_CONVERSION_TYPE    source_94
390732   , l2.ACCOUNTED_AMOUNT    source_95
390733   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
390734   , l2.L_ORGANIZATION_CODE    source_108
390735   FROM xla_events_gt     xet 
390736   , CST_XLA_INV_LINES_V  l2
390737  WHERE xet.event_id between x_first_event_id and x_last_event_id
390738    and xet.event_date between p_pad_start_date and p_pad_end_date
390739    and xet.event_type_code = C_EVENT_TYPE_CODE
390740    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
390741 ;
390742 
390743 --
390744 BEGIN
390745 IF g_log_enabled THEN
390746    l_log_module := C_DEFAULT_MODULE||'.EventType_599';
390747 END IF;
390748 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
390749    trace
390750       (p_msg      => 'BEGIN of EventType_599'
390751       ,p_level    => C_LEVEL_PROCEDURE
390752       ,p_module   => l_log_module);
390753 END IF;
390754 
390755 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
390756    trace
390757       (p_msg      => 'p_application_id = '||p_application_id||
390758                      ' - p_base_ledger_id = '||p_base_ledger_id||
390759                      ' - p_target_ledger_id  = '||p_target_ledger_id||
390760                      ' - p_language = '||p_language||
390761                      ' - p_currency_code = '||p_currency_code||
390762                      ' - p_sla_ledger_id = '||p_sla_ledger_id
390763       ,p_level    => C_LEVEL_STATEMENT
390764       ,p_module   => l_log_module);
390765 END IF;
390766 --
390767 -- initialze arrays
390768 --
390769 g_array_event.DELETE;
390770 l_rec_array_event := l_null_rec_array_event;
390771 --
390772 --------------------------------------
390773 -- 4262811 Initialze MPA Line Number
390774 --------------------------------------
390775 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
390776 
390777 --
390778 
390779 --
390780 OPEN header_cur;
390781 --
390782 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
390783    trace
390784    (p_msg      => 'SQL - FETCH header_cur'
390785    ,p_level    => C_LEVEL_STATEMENT
390786    ,p_module   => l_log_module);
390787 END IF;
390788 --
390789 LOOP
390790 FETCH header_cur BULK COLLECT INTO
390791         l_array_entity_id
390792       , l_array_legal_entity_id
390793       , l_array_entity_code
390794       , l_array_transaction_num
390795       , l_array_event_id
390796       , l_array_class_code
390797       , l_array_event_type
390798       , l_array_event_number
390799       , l_array_event_date
390800       , l_array_transaction_date
390801       , l_array_reference_num_1
390802       , l_array_reference_num_2
390803       , l_array_reference_num_3
390804       , l_array_reference_num_4
390805       , l_array_reference_char_1
390806       , l_array_reference_char_2
390807       , l_array_reference_char_3
390808       , l_array_reference_char_4
390809       , l_array_reference_date_1
390810       , l_array_reference_date_2
390811       , l_array_reference_date_3
390812       , l_array_reference_date_4
390813       , l_array_event_created_by
390814       , l_array_budgetary_control_flag 
390815       , l_array_source_1
390816       , l_array_source_2
390817       , l_array_source_3
390818       , l_array_source_4
390819       , l_array_source_5
390820       , l_array_source_22
390821       , l_array_source_23
390822       , l_array_source_24
390823       , l_array_source_25
390824       , l_array_source_27
390825       , l_array_source_28
390826       , l_array_source_30
390827       , l_array_source_31
390828       , l_array_source_41
390829       , l_array_source_42
390830       , l_array_source_43
390831       , l_array_source_44
390832       , l_array_source_45
390833       , l_array_source_47
390834       , l_array_source_85
390835       , l_array_source_85_meaning
390836       , l_array_source_114
390837       , l_array_source_114_meaning
390838       LIMIT l_rows;
390839 --
390840 IF (C_LEVEL_EVENT >= g_log_level) THEN
390841    trace
390842    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
390843    ,p_level    => C_LEVEL_EVENT
390844    ,p_module   => l_log_module);
390845 END IF;
390846 --
390847 EXIT WHEN l_array_entity_id.COUNT = 0;
390848 
390849 -- initialize arrays
390850 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
390851 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
390852 
390853 --
390854 -- Bug 4458708
390855 --
390856 XLA_AE_LINES_PKG.g_LineNumber := 0;
390857 
390858 
390859 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
390860 g_last_hdr_idx := l_array_event_id.LAST;
390861 --
390862 -- loop for the headers. Each iteration is for each header extract row
390863 -- fetched in header cursor
390864 --
390865 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
390866 
390867 --
390868 -- set event info as cache for other routines to refer event attributes
390869 --
390870 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
390871    (p_application_id           => p_application_id
390872    ,p_primary_ledger_id        => p_primary_ledger_id
390873    ,p_base_ledger_id           => p_base_ledger_id
390874    ,p_target_ledger_id         => p_target_ledger_id
390875    ,p_entity_id                => l_array_entity_id(hdr_idx)
390876    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
390877    ,p_entity_code              => l_array_entity_code(hdr_idx)
390878    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
390879    ,p_event_id                 => l_array_event_id(hdr_idx)
390880    ,p_event_class_code         => l_array_class_code(hdr_idx)
390881    ,p_event_type_code          => l_array_event_type(hdr_idx)
390882    ,p_event_number             => l_array_event_number(hdr_idx)
390883    ,p_event_date               => l_array_event_date(hdr_idx)
390884    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
390885    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
390886    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
390887    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
390888    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
390889    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
390890    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
390891    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
390892    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
390893    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
390894    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
390895    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
390896    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
390897    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
390898    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
390899 
390900 --
390901 -- set the status of entry to C_VALID (0)
390902 --
390903 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
390904 
390905 --
390906 -- initialize a row for ae header
390907 --
390908 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
390909 
390910 l_event_id := l_array_event_id(hdr_idx);
390911 
390912 --
390913 -- storing the hdr_idx for event. May be used by line cursor.
390914 --
390915 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
390916 
390917 --
390918 -- store sources from header extract. This can be improved to
390919 -- store only those sources from header extract that may be used in lines
390920 --
390921 
390922 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
390923 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
390924 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
390925 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
390926 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
390927 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
390928 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
390929 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
390930 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
390931 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
390932 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
390933 g_array_event(l_event_id).array_value_char('source_30') := l_array_source_30(hdr_idx);
390934 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
390935 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
390936 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
390937 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
390938 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
390939 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
390940 g_array_event(l_event_id).array_value_num('source_47') := l_array_source_47(hdr_idx);
390941 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
390942 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
390943 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
390944 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
390945 
390946 --
390947 -- initilaize the status of ae headers for diffrent balance types
390948 -- the status is initialised to C_NOT_CREATED (2)
390949 --
390950 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
390951 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
390952 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
390953 
390954 --
390955 -- call api to validate and store accounting attributes for header
390956 --
390957 
390958 ------------------------------------------------------------
390959 -- Accrual Reversal : to get date for Standard Source (NONE)
390960 ------------------------------------------------------------
390961 l_acc_rev_gl_date_source := NULL;
390962 
390963      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
390964       l_rec_acct_attrs.array_date_value(1) := 
390965 xla_ae_sources_pkg.GetSystemSourceDate(
390966    p_source_code           => 'XLA_REFERENCE_DATE_1'
390967  , p_source_type_code      => 'Y'
390968  , p_source_application_id =>  602
390969 );
390970      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
390971       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
390972 
390973 
390974 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
390975 
390976 XLA_AE_HEADER_PKG.SetJeCategoryName;
390977 
390978 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
390979 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
390980 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
390981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
390982 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
390983 
390984 
390985 -- No header level analytical criteria
390986 
390987 --
390988 --accounting attribute enhancement, bug 3612931
390989 --
390990 l_trx_reversal_source := SUBSTR(NULL, 1,30);
390991 
390992 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
390993    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
390994 
390995    xla_accounting_err_pkg.build_message
390996       (p_appli_s_name            => 'XLA'
390997       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
390998       ,p_token_1                 => 'ACCT_ATTR_NAME'
390999       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
391000       ,p_token_2                 => 'PRODUCT_NAME'
391001       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
391002       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
391003       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
391004       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
391005 
391006 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
391007    --
391008    -- following sets the accounting attributes needed to reverse
391009    -- accounting for a distributeion
391010    --
391011    xla_ae_lines_pkg.SetTrxReversalAttrs
391012       (p_event_id              => l_event_id
391013       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
391014       ,p_trx_reversal_source   => l_trx_reversal_source);
391015 
391016 END IF;
391017 
391018 
391019 ----------------------------------------------------------------
391020 -- 4262811 -  update the header statuses to invalid in need be
391021 ----------------------------------------------------------------
391022 --
391023 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
391024 
391025 
391026   -----------------------------------------------
391027   -- No accrual reversal for the event class/type
391028   -----------------------------------------------
391029 ----------------------------------------------------------------
391030 
391031 --
391032 -- this ends the header loop iteration for one bulk fetch
391033 --
391034 END LOOP;
391035 
391036 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
391037 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
391038 
391039 --
391040 -- insert dummy rows into lines gt table that were created due to
391041 -- transaction reversals
391042 --
391043 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
391044    l_result := XLA_AE_LINES_PKG.InsertLines;
391045 END IF;
391046 
391047 --
391048 -- reset the temp_line_num for each set of events fetched from header
391049 -- cursor rather than doing it for each new event in line cursor
391050 -- Bug 3939231
391051 --
391052 xla_ae_lines_pkg.g_temp_line_num := 0;
391053 
391054 
391055 
391056 --
391057 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
391058 --
391059 --
391060 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
391061 
391062       trace
391063          (p_msg      => 'SQL - FETCH line_cur'
391064          ,p_level    => C_LEVEL_STATEMENT
391065          ,p_module   => l_log_module);
391066 
391067 END IF;
391068 --
391069 --
391070 LOOP
391071   --
391072   FETCH line_cur BULK COLLECT INTO
391073         l_array_entity_id
391074       , l_array_legal_entity_id
391075       , l_array_entity_code
391076       , l_array_transaction_num
391077       , l_array_event_id
391078       , l_array_class_code
391079       , l_array_event_type
391080       , l_array_event_number
391081       , l_array_event_date
391082       , l_array_transaction_date
391083       , l_array_reference_num_1
391084       , l_array_reference_num_2
391085       , l_array_reference_num_3
391086       , l_array_reference_num_4
391087       , l_array_reference_char_1
391088       , l_array_reference_char_2
391089       , l_array_reference_char_3
391090       , l_array_reference_char_4
391091       , l_array_reference_date_1
391092       , l_array_reference_date_2
391093       , l_array_reference_date_3
391094       , l_array_reference_date_4
391095       , l_array_event_created_by
391096       , l_array_budgetary_control_flag
391097       , l_array_extract_line_num 
391098       , l_array_source_15
391099       , l_array_source_26
391100       , l_array_source_29
391101       , l_array_source_84
391102       , l_array_source_88
391103       , l_array_source_91
391104       , l_array_source_92
391105       , l_array_source_93
391106       , l_array_source_94
391107       , l_array_source_95
391108       , l_array_source_97
391109       , l_array_source_108
391110       LIMIT l_rows;
391111 
391112   --
391113   IF (C_LEVEL_EVENT >= g_log_level) THEN
391114             trace
391115                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
391116                ,p_level    => C_LEVEL_EVENT
391117                ,p_module   => l_log_module);
391118   END IF;
391119   --
391120   EXIT WHEN l_array_entity_id.count = 0;
391121 
391122   XLA_AE_LINES_PKG.g_rec_lines := null;
391123 
391124 --
391125 -- Bug 4458708
391126 --
391127 XLA_AE_LINES_PKG.g_LineNumber := 0;
391128 --
391129 --
391130 
391131 FOR Idx IN 1..l_array_event_id.count LOOP
391132    --
391133    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
391134    --
391135    l_event_id := l_array_event_id(idx);  -- 5648433
391136 
391137    --
391138    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
391139    --
391140 
391141    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
391142              (g_array_event(l_event_id).array_value_num('header_index'))
391143          ,'N'
391144          ) <> 'Y'
391145    THEN
391146       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
391147          trace
391148             (p_msg      => 'Trancaction revesal option is not Y '
391149             ,p_level    => C_LEVEL_STATEMENT
391150             ,p_module   => l_log_module);
391151       END IF;
391152 
391153 --
391154 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
391155 --
391156 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
391157 --
391158 -- set event info as cache for other routines to refer event attributes
391159 --
391160 
391161 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
391162    l_previous_event_id := l_event_id;
391163 
391164    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
391165       (p_application_id           => p_application_id
391166       ,p_primary_ledger_id        => p_primary_ledger_id
391167       ,p_base_ledger_id           => p_base_ledger_id
391168       ,p_target_ledger_id         => p_target_ledger_id
391169       ,p_entity_id                => l_array_entity_id(Idx)
391170       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
391171       ,p_entity_code              => l_array_entity_code(Idx)
391172       ,p_transaction_num          => l_array_transaction_num(Idx)
391173       ,p_event_id                 => l_array_event_id(Idx)
391174       ,p_event_class_code         => l_array_class_code(Idx)
391175       ,p_event_type_code          => l_array_event_type(Idx)
391176       ,p_event_number             => l_array_event_number(Idx)
391177       ,p_event_date               => l_array_event_date(Idx)
391178       ,p_transaction_date         => l_array_transaction_date(Idx)
391179       ,p_reference_num_1          => l_array_reference_num_1(Idx)
391180       ,p_reference_num_2          => l_array_reference_num_2(Idx)
391181       ,p_reference_num_3          => l_array_reference_num_3(Idx)
391182       ,p_reference_num_4          => l_array_reference_num_4(Idx)
391183       ,p_reference_char_1         => l_array_reference_char_1(Idx)
391184       ,p_reference_char_2         => l_array_reference_char_2(Idx)
391185       ,p_reference_char_3         => l_array_reference_char_3(Idx)
391186       ,p_reference_char_4         => l_array_reference_char_4(Idx)
391187       ,p_reference_date_1         => l_array_reference_date_1(Idx)
391188       ,p_reference_date_2         => l_array_reference_date_2(Idx)
391189       ,p_reference_date_3         => l_array_reference_date_3(Idx)
391190       ,p_reference_date_4         => l_array_reference_date_4(Idx)
391191       ,p_event_created_by         => l_array_event_created_by(Idx)
391192       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
391193        --
391194 END IF;
391195 
391196 
391197 
391198 --
391199 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
391200 
391201 l_acct_reversal_source := SUBSTR(NULL, 1,30);
391202 
391203 IF l_continue_with_lines THEN
391204    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
391205       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
391206 
391207       xla_accounting_err_pkg.build_message
391208          (p_appli_s_name            => 'XLA'
391209          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
391210          ,p_token_1                 => 'LINE_NUMBER'
391211          ,p_value_1                 => l_array_extract_line_num(Idx)
391212          ,p_token_2                 => 'PRODUCT_NAME'
391213          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
391214          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
391215          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
391216          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
391217 
391218    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
391219       --
391220       -- following sets the accounting attributes needed to reverse
391221       -- accounting for a distributeion
391222       --
391223 
391224       --
391225       -- 5217187
391226       --
391227       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
391228       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
391229                                        g_array_event(l_event_id).array_value_num('header_index'));
391230       --
391231       --
391232 
391233       -- No reversal code generated
391234 
391235       xla_ae_lines_pkg.SetAcctReversalAttrs
391236          (p_event_id             => l_event_id
391237          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
391238          ,p_calculate_acctd_flag => l_calculate_acctd_flag
391239          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
391240    END IF;
391241 
391242    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
391243        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
391244 
391245 --
391246 AcctLineType_103 (
391247  p_application_id  => p_application_id
391248  ,p_event_id     => l_event_id
391249  ,p_calculate_acctd_flag => l_calculate_acctd_flag
391250  ,p_calculate_g_l_flag => l_calculate_g_l_flag
391251  ,p_actual_flag => l_actual_flag
391252  ,p_balance_type_code => l_balance_type_code
391253  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
391254  
391255  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
391256  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
391257  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
391258  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
391259  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
391260  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
391261  , p_source_84 => l_array_source_84(Idx)
391262  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
391263  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
391264  , p_source_88 => l_array_source_88(Idx)
391265  , p_source_91 => l_array_source_91(Idx)
391266  , p_source_92 => l_array_source_92(Idx)
391267  , p_source_93 => l_array_source_93(Idx)
391268  , p_source_94 => l_array_source_94(Idx)
391269  , p_source_95 => l_array_source_95(Idx)
391270  , p_source_97 => l_array_source_97(Idx)
391271  );
391272 If(l_balance_type_code = 'A') THEN
391273   l_actual_gain_loss_ref := l_gain_or_loss_ref;
391274 END IF;
391275 
391276 --
391277 
391278 
391279 --
391280 AcctLineType_258 (
391281  p_application_id  => p_application_id
391282  ,p_event_id     => l_event_id
391283  ,p_calculate_acctd_flag => l_calculate_acctd_flag
391284  ,p_calculate_g_l_flag => l_calculate_g_l_flag
391285  ,p_actual_flag => l_actual_flag
391286  ,p_balance_type_code => l_balance_type_code
391287  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
391288  
391289  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
391290  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
391291  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
391292  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
391293  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
391294  , p_source_15 => l_array_source_15(Idx)
391295  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
391296  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
391297  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
391298  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
391299  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
391300  , p_source_84 => l_array_source_84(Idx)
391301  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
391302  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
391303  , p_source_88 => l_array_source_88(Idx)
391304  , p_source_91 => l_array_source_91(Idx)
391305  , p_source_92 => l_array_source_92(Idx)
391306  , p_source_93 => l_array_source_93(Idx)
391307  , p_source_94 => l_array_source_94(Idx)
391308  , p_source_95 => l_array_source_95(Idx)
391309  , p_source_97 => l_array_source_97(Idx)
391310  , p_source_108 => l_array_source_108(Idx)
391311  );
391312 If(l_balance_type_code = 'A') THEN
391313   l_actual_gain_loss_ref := l_gain_or_loss_ref;
391314 END IF;
391315 
391316 --
391317 
391318 
391319 --
391320 AcctLineType_332 (
391321  p_application_id  => p_application_id
391322  ,p_event_id     => l_event_id
391323  ,p_calculate_acctd_flag => l_calculate_acctd_flag
391324  ,p_calculate_g_l_flag => l_calculate_g_l_flag
391325  ,p_actual_flag => l_actual_flag
391326  ,p_balance_type_code => l_balance_type_code
391327  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
391328  
391329  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
391330  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
391331  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
391332  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
391333  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
391334  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
391335  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
391336  , p_source_26 => l_array_source_26(Idx)
391337  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
391338  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
391339  , p_source_29 => l_array_source_29(Idx)
391340  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
391341  , p_source_84 => l_array_source_84(Idx)
391342  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
391343  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
391344  , p_source_88 => l_array_source_88(Idx)
391345  , p_source_91 => l_array_source_91(Idx)
391346  , p_source_92 => l_array_source_92(Idx)
391347  , p_source_93 => l_array_source_93(Idx)
391348  , p_source_94 => l_array_source_94(Idx)
391349  , p_source_95 => l_array_source_95(Idx)
391350  , p_source_97 => l_array_source_97(Idx)
391351  );
391352 If(l_balance_type_code = 'A') THEN
391353   l_actual_gain_loss_ref := l_gain_or_loss_ref;
391354 END IF;
391355 
391356 --
391357 
391358 
391359 --
391360 AcctLineType_434 (
391361  p_application_id  => p_application_id
391362  ,p_event_id     => l_event_id
391363  ,p_calculate_acctd_flag => l_calculate_acctd_flag
391364  ,p_calculate_g_l_flag => l_calculate_g_l_flag
391365  ,p_actual_flag => l_actual_flag
391366  ,p_balance_type_code => l_balance_type_code
391367  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
391368  
391369  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
391370  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
391371  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
391372  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
391373  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
391374  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
391375  , p_source_26 => l_array_source_26(Idx)
391376  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
391377  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
391378  , p_source_29 => l_array_source_29(Idx)
391379  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
391380  , p_source_47 => g_array_event(l_event_id).array_value_num('source_47')
391381  , p_source_84 => l_array_source_84(Idx)
391382  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
391383  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
391384  , p_source_88 => l_array_source_88(Idx)
391385  , p_source_91 => l_array_source_91(Idx)
391386  , p_source_92 => l_array_source_92(Idx)
391387  , p_source_93 => l_array_source_93(Idx)
391388  , p_source_94 => l_array_source_94(Idx)
391389  , p_source_95 => l_array_source_95(Idx)
391390  , p_source_97 => l_array_source_97(Idx)
391391  );
391392 If(l_balance_type_code = 'A') THEN
391393   l_actual_gain_loss_ref := l_gain_or_loss_ref;
391394 END IF;
391395 
391396 --
391397 
391398 
391399 --
391400 AcctLineType_438 (
391401  p_application_id  => p_application_id
391402  ,p_event_id     => l_event_id
391403  ,p_calculate_acctd_flag => l_calculate_acctd_flag
391404  ,p_calculate_g_l_flag => l_calculate_g_l_flag
391405  ,p_actual_flag => l_actual_flag
391406  ,p_balance_type_code => l_balance_type_code
391407  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
391408  
391409  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
391410  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
391411  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
391412  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
391413  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
391414  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
391415  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
391416  , p_source_26 => l_array_source_26(Idx)
391417  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
391418  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
391419  , p_source_29 => l_array_source_29(Idx)
391420  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
391421  , p_source_84 => l_array_source_84(Idx)
391422  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
391423  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
391424  , p_source_88 => l_array_source_88(Idx)
391425  , p_source_91 => l_array_source_91(Idx)
391426  , p_source_92 => l_array_source_92(Idx)
391427  , p_source_93 => l_array_source_93(Idx)
391428  , p_source_94 => l_array_source_94(Idx)
391429  , p_source_95 => l_array_source_95(Idx)
391430  , p_source_97 => l_array_source_97(Idx)
391431  );
391432 If(l_balance_type_code = 'A') THEN
391433   l_actual_gain_loss_ref := l_gain_or_loss_ref;
391434 END IF;
391435 
391436 --
391437 
391438       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
391439       -- or secondary ledger that has different currency with primary
391440       -- or alc that is calculated by sla
391441       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
391442             (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'))
391443 
391444 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
391445 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
391446           AND (l_actual_flag = 'A')) THEN
391447         XLA_AE_LINES_PKG.CreateGainOrLossLines(
391448           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
391449          ,p_application_id   => p_application_id
391450          ,p_amb_context_code => 'DEFAULT'
391451          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
391452          ,p_event_class_code => C_EVENT_CLASS_CODE
391453          ,p_event_type_code  => C_EVENT_TYPE_CODE
391454          
391455          ,p_gain_ccid        => -1
391456          ,p_loss_ccid        => -1
391457 
391458          ,p_actual_flag      => l_actual_flag
391459          ,p_enc_flag         => null
391460          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
391461          ,p_enc_g_l_ref      => null
391462          );
391463       END IF;
391464    END IF;
391465 END IF;
391466 
391467    ELSE
391468       --
391469       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
391470       --
391471       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
391472          trace
391473             (p_msg      => 'Trancaction revesal option is Y'
391474             ,p_level    => C_LEVEL_STATEMENT
391475             ,p_module   => l_log_module);
391476       END IF;
391477    END IF;
391478 
391479 END LOOP;
391480 l_result := XLA_AE_LINES_PKG.InsertLines ;
391481 end loop;
391482 close line_cur;
391483 
391484 
391485 --
391486 -- insert headers into xla_ae_headers_gt table
391487 --
391488 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
391489 
391490 -- insert into errors table here.
391491 
391492 END LOOP;
391493 
391494 --
391495 -- 4865292
391496 --
391497 -- Compare g_hdr_extract_count with event count in
391498 -- CreateHeadersAndLines.
391499 --
391500 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
391501 
391502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
391503    trace (p_msg     => '# rows extracted from header extract objects '
391504                     || ' (running total): '
391505                     || g_hdr_extract_count
391506          ,p_level   => C_LEVEL_STATEMENT
391507          ,p_module  => l_log_module);
391508 END IF;
391509 
391510 CLOSE header_cur;
391511 --
391512 
391513 --
391514 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
391515    trace
391516       (p_msg      => 'END of EventType_599'
391517       ,p_level    => C_LEVEL_PROCEDURE
391518       ,p_module   => l_log_module);
391519 END IF;
391520 --
391521 RETURN l_result;
391522 EXCEPTION
391523 WHEN xla_exceptions_pkg.application_exception THEN
391524    
391525 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
391526 
391527    
391528 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
391529 
391530    RAISE;
391531 
391532 WHEN NO_DATA_FOUND THEN
391533 
391534 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
391535 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
391536 
391537 FOR header_record IN header_cur
391538 LOOP
391539     l_array_header_events(header_record.event_id) := header_record.event_id;
391540 END LOOP;
391541 
391542 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
391543 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
391544 
391545 fnd_file.put_line(fnd_file.LOG, '                    ');
391546 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
391547 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
391548 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
391549 
391550 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
391551 LOOP
391552 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
391553 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
391554         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
391555 	END IF;
391556 END LOOP;
391557 
391558 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
391559 fnd_file.put_line(fnd_file.LOG, '                    ');
391560 
391561 
391562 xla_exceptions_pkg.raise_message
391563       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_599');
391564 
391565 
391566 WHEN OTHERS THEN
391567    xla_exceptions_pkg.raise_message
391568       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_599');
391569 END EventType_599;
391570 --
391571 
391572 ---------------------------------------
391573 --
391574 -- PRIVATE PROCEDURE
391575 --         insert_sources_600
391576 --
391577 ----------------------------------------
391578 --
391579 PROCEDURE insert_sources_600(
391580                                 p_target_ledger_id       IN NUMBER
391581                               , p_language               IN VARCHAR2
391582                               , p_sla_ledger_id          IN NUMBER
391583                               , p_pad_start_date         IN DATE
391584                               , p_pad_end_date           IN DATE
391585                          )
391586 IS
391587 
391588 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT';
391589 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
391590 p_apps_owner                   VARCHAR2(30);
391591 l_log_module                   VARCHAR2(240);
391592 BEGIN
391593 IF g_log_enabled THEN
391594       l_log_module := C_DEFAULT_MODULE||'.insert_sources_600';
391595 END IF;
391596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
391597 
391598       trace
391599          (p_msg      => 'BEGIN of insert_sources_600'
391600          ,p_level    => C_LEVEL_PROCEDURE
391601          ,p_module   => l_log_module);
391602 
391603 END IF;
391604 
391605 -- select APPS owner
391606 SELECT oracle_username
391607   INTO p_apps_owner
391608   FROM fnd_oracle_userid
391609  WHERE read_only_flag = 'U'
391610 ;
391611 
391612 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
391613       trace
391614          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
391615                         ' - p_language = '||p_language||
391616                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
391617                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
391618                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
391619                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
391620          ,p_level    => C_LEVEL_STATEMENT
391621          ,p_module   => l_log_module);
391622 END IF;
391623 
391624 
391625 --
391626 INSERT INTO xla_diag_sources --hdr1
391627 (
391628         event_id
391629       , ledger_id
391630       , sla_ledger_id
391631       , description_language
391632       , object_name
391633       , object_type_code
391634       , line_number
391635       , source_application_id
391636       , source_type_code
391637       , source_code
391638       , source_value
391639       , source_meaning
391640       , created_by
391641       , creation_date
391642       , last_update_date
391643       , last_updated_by
391644       , last_update_login
391645       , program_update_date
391646       , program_application_id
391647       , program_id
391648       , request_id
391649 )
391650 SELECT
391651         event_id
391652       , p_target_ledger_id
391653       , p_sla_ledger_id
391654       , p_language
391655       , object_name
391656       , object_type_code
391657       , line_number
391658       , source_application_id
391659       , source_type_code
391660       , source_code
391661       , SUBSTR(source_value ,1,1996)
391662       , SUBSTR(source_meaning,1,200)
391663       , xla_environment_pkg.g_Usr_Id
391664       , TRUNC(SYSDATE)
391665       , TRUNC(SYSDATE)
391666       , xla_environment_pkg.g_Usr_Id
391667       , xla_environment_pkg.g_Login_Id
391668       , TRUNC(SYSDATE)
391669       , xla_environment_pkg.g_Prog_Appl_Id
391670       , xla_environment_pkg.g_Prog_Id
391671       , xla_environment_pkg.g_Req_Id
391672   FROM (
391673        SELECT xet.event_id                  event_id
391674             , 0                             line_number
391675             , CASE r
391676                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
391677                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
391678                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
391679                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
391680                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
391681                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
391682                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
391683                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
391684                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
391685                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
391686                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
391687                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
391688                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
391689                 WHEN 14 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
391690                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
391691                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
391692                 
391693                ELSE null
391694               END                           object_name
391695             , CASE r
391696                 WHEN 1 THEN 'HEADER' 
391697                 WHEN 2 THEN 'HEADER' 
391698                 WHEN 3 THEN 'HEADER' 
391699                 WHEN 4 THEN 'HEADER' 
391700                 WHEN 5 THEN 'HEADER' 
391701                 WHEN 6 THEN 'HEADER' 
391702                 WHEN 7 THEN 'HEADER' 
391703                 WHEN 8 THEN 'HEADER' 
391704                 WHEN 9 THEN 'HEADER' 
391705                 WHEN 10 THEN 'HEADER' 
391706                 WHEN 11 THEN 'HEADER' 
391707                 WHEN 12 THEN 'HEADER' 
391708                 WHEN 13 THEN 'HEADER' 
391709                 WHEN 14 THEN 'HEADER' 
391710                 WHEN 15 THEN 'HEADER' 
391711                 WHEN 16 THEN 'HEADER' 
391712                 
391713                 ELSE null
391714               END                           object_type_code
391715             , CASE r
391716                 WHEN 1 THEN '707' 
391717                 WHEN 2 THEN '707' 
391718                 WHEN 3 THEN '707' 
391719                 WHEN 4 THEN '707' 
391720                 WHEN 5 THEN '707' 
391721                 WHEN 6 THEN '707' 
391722                 WHEN 7 THEN '707' 
391723                 WHEN 8 THEN '707' 
391724                 WHEN 9 THEN '707' 
391725                 WHEN 10 THEN '707' 
391726                 WHEN 11 THEN '707' 
391727                 WHEN 12 THEN '707' 
391728                 WHEN 13 THEN '707' 
391729                 WHEN 14 THEN '707' 
391730                 WHEN 15 THEN '707' 
391731                 WHEN 16 THEN '707' 
391732                 
391733                 ELSE null
391734               END                           source_application_id
391735             , 'S'             source_type_code
391736             , CASE r
391737                 WHEN 1 THEN 'TRANSACTION_ID' 
391738                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
391739                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
391740                 WHEN 4 THEN 'TRANSACTION_UOM' 
391741                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
391742                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
391743                 WHEN 7 THEN 'INTERORG_EXPENSE_ACCOUNT' 
391744                 WHEN 8 THEN 'INTERORG_PAYABLES_ACCOUNT' 
391745                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
391746                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
391747                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
391748                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
391749                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
391750                 WHEN 14 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
391751                 WHEN 15 THEN 'DISTRIBUTION_TYPE' 
391752                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
391753                 
391754                 ELSE null
391755               END                           source_code
391756             , CASE r
391757                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
391758                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
391759                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
391760                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
391761                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
391762                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
391763                 WHEN 7 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
391764                 WHEN 8 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
391765                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
391766                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
391767                 WHEN 11 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
391768                 WHEN 12 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
391769                 WHEN 13 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
391770                 WHEN 14 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
391771                 WHEN 15 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
391772                 WHEN 16 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
391773                 
391774                 ELSE null
391775               END                           source_value
391776             , CASE r
391777                 WHEN 15 THEN fvl85.meaning
391778                 WHEN 16 THEN fvl114.meaning
391779                 
391780                 ELSE null
391781               END               source_meaning
391782         FROM xla_events_gt     xet  
391783       , CST_XLA_INTERORG_PARAMS_REF_V  h1
391784       , CST_XLA_INV_HEADERS_V  h2
391785       , CST_XLA_INV_REF_V  h4
391786       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
391787       , CST_XLA_INV_TXN_TYPES_REF_V  h6
391788       , CST_XLA_PLA_CATEGORY_REF_V  h7
391789   , fnd_lookup_values    fvl85
391790   , fnd_lookup_values    fvl114
391791             ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
391792        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
391793          AND xet.event_type_code = C_EVENT_TYPE_CODE
391794             AND h2.event_id = xet.event_id
391795   AND h1.event_id (+) = h2.event_id
391796  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id  (+) = h2.inventory_item_id  and h5.organization_id  (+) = h2.organization_id AND h6.inv_transaction_type_id  (+) = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id  and h7.pla_cat_item_id   (+) = h2.inventory_item_id  and h7.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
391797   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
391798   AND fvl85.view_application_id(+) = 700
391799   AND fvl85.language(+)            = USERENV('LANG')
391800      AND fvl114.lookup_type(+)         = 'YES_NO'
391801   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
391802   AND fvl114.view_application_id(+) = 0
391803   AND fvl114.language(+)            = USERENV('LANG')
391804   
391805 )
391806 ;
391807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
391808 
391809       trace
391810          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
391811          ,p_level    => C_LEVEL_STATEMENT
391812          ,p_module   => l_log_module);
391813 
391814 END IF;
391815 --
391816 
391817 
391818 
391819 --
391820 INSERT INTO xla_diag_sources --line1
391821 (
391822         event_id
391823       , ledger_id
391824       , sla_ledger_id
391825       , description_language
391826       , object_name
391827       , object_type_code
391828       , line_number
391829       , source_application_id
391830       , source_type_code
391831       , source_code
391832       , source_value
391833       , source_meaning
391834       , created_by
391835       , creation_date
391836       , last_update_date
391837       , last_updated_by
391838       , last_update_login
391839       , program_update_date
391840       , program_application_id
391841       , program_id
391842       , request_id
391843 )
391844 SELECT  event_id
391845       , p_target_ledger_id
391846       , p_sla_ledger_id
391847       , p_language
391848       , object_name
391849       , object_type_code
391850       , line_number
391851       , source_application_id
391852       , source_type_code
391853       , source_code
391854       , SUBSTR(source_value,1,1996)
391855       , SUBSTR(source_meaning,1,200)
391856       , xla_environment_pkg.g_Usr_Id
391857       , TRUNC(SYSDATE)
391858       , TRUNC(SYSDATE)
391859       , xla_environment_pkg.g_Usr_Id
391860       , xla_environment_pkg.g_Login_Id
391861       , TRUNC(SYSDATE)
391862       , xla_environment_pkg.g_Prog_Appl_Id
391863       , xla_environment_pkg.g_Prog_Id
391864       , xla_environment_pkg.g_Req_Id
391865   FROM (
391866        SELECT xet.event_id                  event_id
391867             , l3.line_number                 line_number
391868             , CASE r
391869                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
391870                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
391871                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
391872                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
391873                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
391874                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
391875                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
391876                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
391877                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
391878                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
391879                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
391880                 
391881                ELSE null
391882               END                           object_name
391883             , CASE r
391884                 WHEN 1 THEN 'LINE' 
391885                 WHEN 2 THEN 'LINE' 
391886                 WHEN 3 THEN 'LINE' 
391887                 WHEN 4 THEN 'LINE' 
391888                 WHEN 5 THEN 'LINE' 
391889                 WHEN 6 THEN 'LINE' 
391890                 WHEN 7 THEN 'LINE' 
391891                 WHEN 8 THEN 'LINE' 
391892                 WHEN 9 THEN 'LINE' 
391893                 WHEN 10 THEN 'LINE' 
391894                 WHEN 11 THEN 'LINE' 
391895                 
391896                 ELSE null
391897               END                           object_type_code
391898             , CASE r
391899                 WHEN 1 THEN '707' 
391900                 WHEN 2 THEN '707' 
391901                 WHEN 3 THEN '707' 
391902                 WHEN 4 THEN '707' 
391903                 WHEN 5 THEN '707' 
391904                 WHEN 6 THEN '707' 
391905                 WHEN 7 THEN '707' 
391906                 WHEN 8 THEN '707' 
391907                 WHEN 9 THEN '707' 
391908                 WHEN 10 THEN '707' 
391909                 WHEN 11 THEN '707' 
391910                 
391911                 ELSE null
391912               END                           source_application_id
391913             , 'S'             source_type_code
391914             , CASE r
391915                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
391916                 WHEN 2 THEN 'COST_ELEMENT_ID' 
391917                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
391918                 WHEN 4 THEN 'CURRENCY_CODE' 
391919                 WHEN 5 THEN 'ENTERED_AMOUNT' 
391920                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
391921                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
391922                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
391923                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
391924                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
391925                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
391926                 
391927                 ELSE null
391928               END                           source_code
391929             , CASE r
391930                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
391931                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
391932                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
391933                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
391934                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
391935                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
391936                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
391937                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
391938                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
391939                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
391940                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
391941                 
391942                 ELSE null
391943               END                           source_value
391944             , CASE r
391945                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
391946                           1009615
391947                          ,TO_CHAR(l3.COST_ELEMENT_ID)
391948                          ,'COST_ELEMENT_ID'
391949                          ,'S'
391950                          ,707)
391951                 
391952                 ELSE null
391953               END               source_meaning
391954          FROM  xla_events_gt     xet  
391955         , CST_XLA_INV_LINES_V  l3
391956             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
391957         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
391958           AND xet.event_type_code = C_EVENT_TYPE_CODE
391959             AND l3.event_id          = xet.event_id
391960 
391961 )
391962 ;
391963 --
391964 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
391965 
391966       trace
391967          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
391968          ,p_level    => C_LEVEL_STATEMENT
391969          ,p_module   => l_log_module);
391970 
391971 END IF;
391972 
391973 
391974 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
391975       trace
391976          (p_msg      => 'END of insert_sources_600'
391977          ,p_level    => C_LEVEL_PROCEDURE
391978          ,p_module   => l_log_module);
391979 END IF;
391980 EXCEPTION
391981   WHEN xla_exceptions_pkg.application_exception THEN
391982       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
391983             trace
391984                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
391985                ,p_level    => C_LEVEL_EXCEPTION
391986                ,p_module   => l_log_module);
391987       END IF;
391988       RAISE;
391989   WHEN OTHERS THEN
391990       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
391991             trace
391992                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
391993                ,p_level    => C_LEVEL_EXCEPTION
391994                ,p_module   => l_log_module);
391995        END IF;
391996        xla_exceptions_pkg.raise_message
391997            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_600');
391998 END insert_sources_600;
391999 --
392000 
392001 ---------------------------------------
392002 --
392003 -- PRIVATE FUNCTION
392004 --         EventType_600
392005 --
392006 ----------------------------------------
392007 --
392008 FUNCTION EventType_600
392009        (p_application_id         IN NUMBER
392010        ,p_base_ledger_id         IN NUMBER
392011        ,p_target_ledger_id       IN NUMBER
392012        ,p_language               IN VARCHAR2
392013        ,p_currency_code          IN VARCHAR2
392014        ,p_sla_ledger_id          IN NUMBER
392015        ,p_pad_start_date         IN DATE
392016        ,p_pad_end_date           IN DATE
392017        ,p_primary_ledger_id      IN NUMBER)
392018 RETURN BOOLEAN IS
392019 --
392020 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT';
392021 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
392022 
392023 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
392024 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
392025 --
392026 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392027 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392028 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
392029 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
392030 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392031 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
392032 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
392033 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392034 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
392035 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
392036 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392037 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392038 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392039 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
392040 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
392041 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
392042 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
392043 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
392044 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
392045 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
392046 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
392047 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
392048 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
392049 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
392050 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
392051 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
392052 
392053 l_event_id                             NUMBER;
392054 l_previous_event_id                    NUMBER;
392055 l_first_event_id                       NUMBER;
392056 l_last_event_id                        NUMBER;
392057 
392058 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
392059 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
392060 --
392061 --
392062 l_result                    BOOLEAN := TRUE;
392063 l_rows                      NUMBER  := 1000;
392064 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt';
392065 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
392066 l_description               VARCHAR2(4000);
392067 l_transaction_reversal      NUMBER;
392068 l_ae_header_id              NUMBER;
392069 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
392070 l_log_module                VARCHAR2(240);
392071 --
392072 l_acct_reversal_source      VARCHAR2(30);
392073 l_trx_reversal_source       VARCHAR2(30);
392074 
392075 l_continue_with_lines       BOOLEAN := TRUE;
392076 --
392077 l_acc_rev_gl_date_source    DATE;                      -- 4262811
392078 --
392079 type t_array_event_id is table of number index by binary_integer;
392080 
392081 l_rec_array_event                    t_rec_array_event;
392082 l_null_rec_array_event               t_rec_array_event;
392083 l_array_ae_header_id                 xla_number_array_type;
392084 l_actual_flag                        VARCHAR2(1) := NULL;
392085 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
392086 l_balance_type_code                  VARCHAR2(1) :=NULL;
392087 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
392088 
392089 --
392090 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
392091 --
392092 
392093 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
392094 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
392095 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
392096 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
392097 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
392098 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392099 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392100 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392101 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392102 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392103 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392104 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392105 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392106 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
392107 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
392108 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
392109 
392110 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
392111 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
392112 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
392113 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
392114 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
392115 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
392116 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
392117 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
392118 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
392119 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
392120 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
392121 
392122 l_array_source_1              t_array_source_1;
392123 l_array_source_2              t_array_source_2;
392124 l_array_source_3              t_array_source_3;
392125 l_array_source_4              t_array_source_4;
392126 l_array_source_5              t_array_source_5;
392127 l_array_source_22              t_array_source_22;
392128 l_array_source_34              t_array_source_34;
392129 l_array_source_35              t_array_source_35;
392130 l_array_source_41              t_array_source_41;
392131 l_array_source_42              t_array_source_42;
392132 l_array_source_43              t_array_source_43;
392133 l_array_source_44              t_array_source_44;
392134 l_array_source_45              t_array_source_45;
392135 l_array_source_59              t_array_source_59;
392136 l_array_source_85              t_array_source_85;
392137 l_array_source_85_meaning      t_array_lookup_meaning;
392138 l_array_source_114              t_array_source_114;
392139 l_array_source_114_meaning      t_array_lookup_meaning;
392140 
392141 l_array_source_11      t_array_source_11;
392142 l_array_source_15      t_array_source_15;
392143 l_array_source_84      t_array_source_84;
392144 l_array_source_88      t_array_source_88;
392145 l_array_source_91      t_array_source_91;
392146 l_array_source_92      t_array_source_92;
392147 l_array_source_93      t_array_source_93;
392148 l_array_source_94      t_array_source_94;
392149 l_array_source_95      t_array_source_95;
392150 l_array_source_97      t_array_source_97;
392151 l_array_source_108      t_array_source_108;
392152 
392153 --
392154 CURSOR header_cur
392155 IS
392156 SELECT /*+ leading(xet) cardinality(xet,1) */
392157 -- Event Type Code: UDIR_INTERORG_RCPT
392158 -- Event Class Code: USER_DEFINE
392159     xet.entity_id
392160   , xet.legal_entity_id
392161   , xet.entity_code
392162   , xet.transaction_number
392163   , xet.event_id
392164   , xet.event_class_code
392165   , xet.event_type_code
392166   , xet.event_number
392167   , xet.event_date
392168   , xet.transaction_date
392169   , xet.reference_num_1
392170   , xet.reference_num_2
392171   , xet.reference_num_3
392172   , xet.reference_num_4
392173   , xet.reference_char_1
392174   , xet.reference_char_2
392175   , xet.reference_char_3
392176   , xet.reference_char_4
392177   , xet.reference_date_1
392178   , xet.reference_date_2
392179   , xet.reference_date_3
392180   , xet.reference_date_4
392181   , xet.event_created_by
392182   , xet.budgetary_control_flag 
392183   , h2.TRANSACTION_ID    source_1
392184   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
392185   , h4.TRANSACTION_QUANTITY    source_3
392186   , h4.TRANSACTION_UOM    source_4
392187   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
392188   , h7.PLA_BRIDGING_ACCOUNT    source_22
392189   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
392190   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
392191   , h7.PLA_MATERIAL_ACCOUNT    source_41
392192   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
392193   , h7.PLA_RESOURCE_ACCOUNT    source_43
392194   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
392195   , h7.PLA_OVERHEAD_ACCOUNT    source_45
392196   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
392197   , h2.DISTRIBUTION_TYPE    source_85
392198   , fvl85.meaning   source_85_meaning
392199   , h2.TRANSFER_TO_GL_INDICATOR    source_114
392200   , fvl114.meaning   source_114_meaning
392201   FROM xla_events_gt     xet 
392202   , CST_XLA_INTERORG_PARAMS_REF_V  h1
392203   , CST_XLA_INV_HEADERS_V  h2
392204   , CST_XLA_INV_REF_V  h4
392205   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
392206   , CST_XLA_INV_TXN_TYPES_REF_V  h6
392207   , CST_XLA_PLA_CATEGORY_REF_V  h7
392208   , fnd_lookup_values    fvl85
392209   , fnd_lookup_values    fvl114
392210  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
392211    and xet.event_type_code = C_EVENT_TYPE_CODE
392212    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
392213   AND h1.event_id (+) = h2.event_id
392214  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h7.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h7.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
392215   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
392216   AND fvl85.view_application_id(+) = 700
392217   AND fvl85.language(+)            = USERENV('LANG')
392218      AND fvl114.lookup_type(+)         = 'YES_NO'
392219   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
392220   AND fvl114.view_application_id(+) = 0
392221   AND fvl114.language(+)            = USERENV('LANG')
392222   
392223  ORDER BY event_id
392224 ;
392225 
392226 
392227 --
392228 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
392229 IS
392230 SELECT /*+ leading(xet) cardinality(xet,1) */
392231 -- Event Type Code: UDIR_INTERORG_RCPT
392232 -- Event Class Code: USER_DEFINE
392233     xet.entity_id
392234    ,xet.legal_entity_id
392235    ,xet.entity_code
392236    ,xet.transaction_number
392237    ,xet.event_id
392238    ,xet.event_class_code
392239    ,xet.event_type_code
392240    ,xet.event_number
392241    ,xet.event_date
392242    ,xet.transaction_date
392243    ,xet.reference_num_1
392244    ,xet.reference_num_2
392245    ,xet.reference_num_3
392246    ,xet.reference_num_4
392247    ,xet.reference_char_1
392248    ,xet.reference_char_2
392249    ,xet.reference_char_3
392250    ,xet.reference_char_4
392251    ,xet.reference_date_1
392252    ,xet.reference_date_2
392253    ,xet.reference_date_3
392254    ,xet.reference_date_4
392255    ,xet.event_created_by
392256    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
392257   , l3.CODE_COMBINATION_ID    source_11
392258   , l3.COST_ELEMENT_ID    source_15
392259   , l3.DISTRIBUTION_IDENTIFIER    source_84
392260   , l3.CURRENCY_CODE    source_88
392261   , l3.ENTERED_AMOUNT    source_91
392262   , l3.CURRENCY_CONVERSION_DATE    source_92
392263   , l3.CURRENCY_CONVERSION_RATE    source_93
392264   , l3.CURRENCY_CONVERSION_TYPE    source_94
392265   , l3.ACCOUNTED_AMOUNT    source_95
392266   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
392267   , l3.L_ORGANIZATION_CODE    source_108
392268   FROM xla_events_gt     xet 
392269   , CST_XLA_INV_LINES_V  l3
392270  WHERE xet.event_id between x_first_event_id and x_last_event_id
392271    and xet.event_date between p_pad_start_date and p_pad_end_date
392272    and xet.event_type_code = C_EVENT_TYPE_CODE
392273    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
392274 ;
392275 
392276 --
392277 BEGIN
392278 IF g_log_enabled THEN
392279    l_log_module := C_DEFAULT_MODULE||'.EventType_600';
392280 END IF;
392281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
392282    trace
392283       (p_msg      => 'BEGIN of EventType_600'
392284       ,p_level    => C_LEVEL_PROCEDURE
392285       ,p_module   => l_log_module);
392286 END IF;
392287 
392288 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
392289    trace
392290       (p_msg      => 'p_application_id = '||p_application_id||
392291                      ' - p_base_ledger_id = '||p_base_ledger_id||
392292                      ' - p_target_ledger_id  = '||p_target_ledger_id||
392293                      ' - p_language = '||p_language||
392294                      ' - p_currency_code = '||p_currency_code||
392295                      ' - p_sla_ledger_id = '||p_sla_ledger_id
392296       ,p_level    => C_LEVEL_STATEMENT
392297       ,p_module   => l_log_module);
392298 END IF;
392299 --
392300 -- initialze arrays
392301 --
392302 g_array_event.DELETE;
392303 l_rec_array_event := l_null_rec_array_event;
392304 --
392305 --------------------------------------
392306 -- 4262811 Initialze MPA Line Number
392307 --------------------------------------
392308 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
392309 
392310 --
392311 
392312 --
392313 OPEN header_cur;
392314 --
392315 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
392316    trace
392317    (p_msg      => 'SQL - FETCH header_cur'
392318    ,p_level    => C_LEVEL_STATEMENT
392319    ,p_module   => l_log_module);
392320 END IF;
392321 --
392322 LOOP
392323 FETCH header_cur BULK COLLECT INTO
392324         l_array_entity_id
392325       , l_array_legal_entity_id
392326       , l_array_entity_code
392327       , l_array_transaction_num
392328       , l_array_event_id
392329       , l_array_class_code
392330       , l_array_event_type
392331       , l_array_event_number
392332       , l_array_event_date
392333       , l_array_transaction_date
392334       , l_array_reference_num_1
392335       , l_array_reference_num_2
392336       , l_array_reference_num_3
392337       , l_array_reference_num_4
392338       , l_array_reference_char_1
392339       , l_array_reference_char_2
392340       , l_array_reference_char_3
392341       , l_array_reference_char_4
392342       , l_array_reference_date_1
392343       , l_array_reference_date_2
392344       , l_array_reference_date_3
392345       , l_array_reference_date_4
392346       , l_array_event_created_by
392347       , l_array_budgetary_control_flag 
392348       , l_array_source_1
392349       , l_array_source_2
392350       , l_array_source_3
392351       , l_array_source_4
392352       , l_array_source_5
392353       , l_array_source_22
392354       , l_array_source_34
392355       , l_array_source_35
392356       , l_array_source_41
392357       , l_array_source_42
392358       , l_array_source_43
392359       , l_array_source_44
392360       , l_array_source_45
392361       , l_array_source_59
392362       , l_array_source_85
392363       , l_array_source_85_meaning
392364       , l_array_source_114
392365       , l_array_source_114_meaning
392366       LIMIT l_rows;
392367 --
392368 IF (C_LEVEL_EVENT >= g_log_level) THEN
392369    trace
392370    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
392371    ,p_level    => C_LEVEL_EVENT
392372    ,p_module   => l_log_module);
392373 END IF;
392374 --
392375 EXIT WHEN l_array_entity_id.COUNT = 0;
392376 
392377 -- initialize arrays
392378 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
392379 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
392380 
392381 --
392382 -- Bug 4458708
392383 --
392384 XLA_AE_LINES_PKG.g_LineNumber := 0;
392385 
392386 
392387 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
392388 g_last_hdr_idx := l_array_event_id.LAST;
392389 --
392390 -- loop for the headers. Each iteration is for each header extract row
392391 -- fetched in header cursor
392392 --
392393 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
392394 
392395 --
392396 -- set event info as cache for other routines to refer event attributes
392397 --
392398 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
392399    (p_application_id           => p_application_id
392400    ,p_primary_ledger_id        => p_primary_ledger_id
392401    ,p_base_ledger_id           => p_base_ledger_id
392402    ,p_target_ledger_id         => p_target_ledger_id
392403    ,p_entity_id                => l_array_entity_id(hdr_idx)
392404    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
392405    ,p_entity_code              => l_array_entity_code(hdr_idx)
392406    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
392407    ,p_event_id                 => l_array_event_id(hdr_idx)
392408    ,p_event_class_code         => l_array_class_code(hdr_idx)
392409    ,p_event_type_code          => l_array_event_type(hdr_idx)
392410    ,p_event_number             => l_array_event_number(hdr_idx)
392411    ,p_event_date               => l_array_event_date(hdr_idx)
392412    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
392413    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
392414    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
392415    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
392416    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
392417    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
392418    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
392419    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
392420    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
392421    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
392422    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
392423    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
392424    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
392425    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
392426    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
392427 
392428 --
392429 -- set the status of entry to C_VALID (0)
392430 --
392431 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
392432 
392433 --
392434 -- initialize a row for ae header
392435 --
392436 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
392437 
392438 l_event_id := l_array_event_id(hdr_idx);
392439 
392440 --
392441 -- storing the hdr_idx for event. May be used by line cursor.
392442 --
392443 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
392444 
392445 --
392446 -- store sources from header extract. This can be improved to
392447 -- store only those sources from header extract that may be used in lines
392448 --
392449 
392450 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
392451 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
392452 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
392453 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
392454 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
392455 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
392456 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
392457 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
392458 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
392459 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
392460 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
392461 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
392462 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
392463 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
392464 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
392465 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
392466 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
392467 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
392468 
392469 --
392470 -- initilaize the status of ae headers for diffrent balance types
392471 -- the status is initialised to C_NOT_CREATED (2)
392472 --
392473 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
392474 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
392475 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
392476 
392477 --
392478 -- call api to validate and store accounting attributes for header
392479 --
392480 
392481 ------------------------------------------------------------
392482 -- Accrual Reversal : to get date for Standard Source (NONE)
392483 ------------------------------------------------------------
392484 l_acc_rev_gl_date_source := NULL;
392485 
392486      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
392487       l_rec_acct_attrs.array_date_value(1) := 
392488 xla_ae_sources_pkg.GetSystemSourceDate(
392489    p_source_code           => 'XLA_REFERENCE_DATE_1'
392490  , p_source_type_code      => 'Y'
392491  , p_source_application_id =>  602
392492 );
392493      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
392494       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
392495 
392496 
392497 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
392498 
392499 XLA_AE_HEADER_PKG.SetJeCategoryName;
392500 
392501 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
392502 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
392503 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
392504 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
392505 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
392506 
392507 
392508 -- No header level analytical criteria
392509 
392510 --
392511 --accounting attribute enhancement, bug 3612931
392512 --
392513 l_trx_reversal_source := SUBSTR(NULL, 1,30);
392514 
392515 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
392516    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
392517 
392518    xla_accounting_err_pkg.build_message
392519       (p_appli_s_name            => 'XLA'
392520       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
392521       ,p_token_1                 => 'ACCT_ATTR_NAME'
392522       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
392523       ,p_token_2                 => 'PRODUCT_NAME'
392524       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
392525       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
392526       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
392527       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
392528 
392529 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
392530    --
392531    -- following sets the accounting attributes needed to reverse
392532    -- accounting for a distributeion
392533    --
392534    xla_ae_lines_pkg.SetTrxReversalAttrs
392535       (p_event_id              => l_event_id
392536       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
392537       ,p_trx_reversal_source   => l_trx_reversal_source);
392538 
392539 END IF;
392540 
392541 
392542 ----------------------------------------------------------------
392543 -- 4262811 -  update the header statuses to invalid in need be
392544 ----------------------------------------------------------------
392545 --
392546 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
392547 
392548 
392549   -----------------------------------------------
392550   -- No accrual reversal for the event class/type
392551   -----------------------------------------------
392552 ----------------------------------------------------------------
392553 
392554 --
392555 -- this ends the header loop iteration for one bulk fetch
392556 --
392557 END LOOP;
392558 
392559 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
392560 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
392561 
392562 --
392563 -- insert dummy rows into lines gt table that were created due to
392564 -- transaction reversals
392565 --
392566 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
392567    l_result := XLA_AE_LINES_PKG.InsertLines;
392568 END IF;
392569 
392570 --
392571 -- reset the temp_line_num for each set of events fetched from header
392572 -- cursor rather than doing it for each new event in line cursor
392573 -- Bug 3939231
392574 --
392575 xla_ae_lines_pkg.g_temp_line_num := 0;
392576 
392577 
392578 
392579 --
392580 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
392581 --
392582 --
392583 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
392584 
392585       trace
392586          (p_msg      => 'SQL - FETCH line_cur'
392587          ,p_level    => C_LEVEL_STATEMENT
392588          ,p_module   => l_log_module);
392589 
392590 END IF;
392591 --
392592 --
392593 LOOP
392594   --
392595   FETCH line_cur BULK COLLECT INTO
392596         l_array_entity_id
392597       , l_array_legal_entity_id
392598       , l_array_entity_code
392599       , l_array_transaction_num
392600       , l_array_event_id
392601       , l_array_class_code
392602       , l_array_event_type
392603       , l_array_event_number
392604       , l_array_event_date
392605       , l_array_transaction_date
392606       , l_array_reference_num_1
392607       , l_array_reference_num_2
392608       , l_array_reference_num_3
392609       , l_array_reference_num_4
392610       , l_array_reference_char_1
392611       , l_array_reference_char_2
392612       , l_array_reference_char_3
392613       , l_array_reference_char_4
392614       , l_array_reference_date_1
392615       , l_array_reference_date_2
392616       , l_array_reference_date_3
392617       , l_array_reference_date_4
392618       , l_array_event_created_by
392619       , l_array_budgetary_control_flag
392620       , l_array_extract_line_num 
392621       , l_array_source_11
392622       , l_array_source_15
392623       , l_array_source_84
392624       , l_array_source_88
392625       , l_array_source_91
392626       , l_array_source_92
392627       , l_array_source_93
392628       , l_array_source_94
392629       , l_array_source_95
392630       , l_array_source_97
392631       , l_array_source_108
392632       LIMIT l_rows;
392633 
392634   --
392635   IF (C_LEVEL_EVENT >= g_log_level) THEN
392636             trace
392637                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
392638                ,p_level    => C_LEVEL_EVENT
392639                ,p_module   => l_log_module);
392640   END IF;
392641   --
392642   EXIT WHEN l_array_entity_id.count = 0;
392643 
392644   XLA_AE_LINES_PKG.g_rec_lines := null;
392645 
392646 --
392647 -- Bug 4458708
392648 --
392649 XLA_AE_LINES_PKG.g_LineNumber := 0;
392650 --
392651 --
392652 
392653 FOR Idx IN 1..l_array_event_id.count LOOP
392654    --
392655    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
392656    --
392657    l_event_id := l_array_event_id(idx);  -- 5648433
392658 
392659    --
392660    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
392661    --
392662 
392663    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
392664              (g_array_event(l_event_id).array_value_num('header_index'))
392665          ,'N'
392666          ) <> 'Y'
392667    THEN
392668       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
392669          trace
392670             (p_msg      => 'Trancaction revesal option is not Y '
392671             ,p_level    => C_LEVEL_STATEMENT
392672             ,p_module   => l_log_module);
392673       END IF;
392674 
392675 --
392676 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
392677 --
392678 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
392679 --
392680 -- set event info as cache for other routines to refer event attributes
392681 --
392682 
392683 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
392684    l_previous_event_id := l_event_id;
392685 
392686    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
392687       (p_application_id           => p_application_id
392688       ,p_primary_ledger_id        => p_primary_ledger_id
392689       ,p_base_ledger_id           => p_base_ledger_id
392690       ,p_target_ledger_id         => p_target_ledger_id
392691       ,p_entity_id                => l_array_entity_id(Idx)
392692       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
392693       ,p_entity_code              => l_array_entity_code(Idx)
392694       ,p_transaction_num          => l_array_transaction_num(Idx)
392695       ,p_event_id                 => l_array_event_id(Idx)
392696       ,p_event_class_code         => l_array_class_code(Idx)
392697       ,p_event_type_code          => l_array_event_type(Idx)
392698       ,p_event_number             => l_array_event_number(Idx)
392699       ,p_event_date               => l_array_event_date(Idx)
392700       ,p_transaction_date         => l_array_transaction_date(Idx)
392701       ,p_reference_num_1          => l_array_reference_num_1(Idx)
392702       ,p_reference_num_2          => l_array_reference_num_2(Idx)
392703       ,p_reference_num_3          => l_array_reference_num_3(Idx)
392704       ,p_reference_num_4          => l_array_reference_num_4(Idx)
392705       ,p_reference_char_1         => l_array_reference_char_1(Idx)
392706       ,p_reference_char_2         => l_array_reference_char_2(Idx)
392707       ,p_reference_char_3         => l_array_reference_char_3(Idx)
392708       ,p_reference_char_4         => l_array_reference_char_4(Idx)
392709       ,p_reference_date_1         => l_array_reference_date_1(Idx)
392710       ,p_reference_date_2         => l_array_reference_date_2(Idx)
392711       ,p_reference_date_3         => l_array_reference_date_3(Idx)
392712       ,p_reference_date_4         => l_array_reference_date_4(Idx)
392713       ,p_event_created_by         => l_array_event_created_by(Idx)
392714       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
392715        --
392716 END IF;
392717 
392718 
392719 
392720 --
392721 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
392722 
392723 l_acct_reversal_source := SUBSTR(NULL, 1,30);
392724 
392725 IF l_continue_with_lines THEN
392726    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
392727       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
392728 
392729       xla_accounting_err_pkg.build_message
392730          (p_appli_s_name            => 'XLA'
392731          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
392732          ,p_token_1                 => 'LINE_NUMBER'
392733          ,p_value_1                 => l_array_extract_line_num(Idx)
392734          ,p_token_2                 => 'PRODUCT_NAME'
392735          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
392736          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
392737          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
392738          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
392739 
392740    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
392741       --
392742       -- following sets the accounting attributes needed to reverse
392743       -- accounting for a distributeion
392744       --
392745 
392746       --
392747       -- 5217187
392748       --
392749       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
392750       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
392751                                        g_array_event(l_event_id).array_value_num('header_index'));
392752       --
392753       --
392754 
392755       -- No reversal code generated
392756 
392757       xla_ae_lines_pkg.SetAcctReversalAttrs
392758          (p_event_id             => l_event_id
392759          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
392760          ,p_calculate_acctd_flag => l_calculate_acctd_flag
392761          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
392762    END IF;
392763 
392764    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
392765        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
392766 
392767 --
392768 AcctLineType_80 (
392769  p_application_id  => p_application_id
392770  ,p_event_id     => l_event_id
392771  ,p_calculate_acctd_flag => l_calculate_acctd_flag
392772  ,p_calculate_g_l_flag => l_calculate_g_l_flag
392773  ,p_actual_flag => l_actual_flag
392774  ,p_balance_type_code => l_balance_type_code
392775  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
392776  
392777  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
392778  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
392779  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
392780  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
392781  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
392782  , p_source_11 => l_array_source_11(Idx)
392783  , p_source_84 => l_array_source_84(Idx)
392784  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
392785  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
392786  , p_source_88 => l_array_source_88(Idx)
392787  , p_source_91 => l_array_source_91(Idx)
392788  , p_source_92 => l_array_source_92(Idx)
392789  , p_source_93 => l_array_source_93(Idx)
392790  , p_source_94 => l_array_source_94(Idx)
392791  , p_source_95 => l_array_source_95(Idx)
392792  , p_source_97 => l_array_source_97(Idx)
392793  );
392794 If(l_balance_type_code = 'A') THEN
392795   l_actual_gain_loss_ref := l_gain_or_loss_ref;
392796 END IF;
392797 
392798 --
392799 
392800 
392801 --
392802 AcctLineType_146 (
392803  p_application_id  => p_application_id
392804  ,p_event_id     => l_event_id
392805  ,p_calculate_acctd_flag => l_calculate_acctd_flag
392806  ,p_calculate_g_l_flag => l_calculate_g_l_flag
392807  ,p_actual_flag => l_actual_flag
392808  ,p_balance_type_code => l_balance_type_code
392809  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
392810  
392811  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
392812  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
392813  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
392814  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
392815  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
392816  , p_source_11 => l_array_source_11(Idx)
392817  , p_source_84 => l_array_source_84(Idx)
392818  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
392819  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
392820  , p_source_88 => l_array_source_88(Idx)
392821  , p_source_91 => l_array_source_91(Idx)
392822  , p_source_92 => l_array_source_92(Idx)
392823  , p_source_93 => l_array_source_93(Idx)
392824  , p_source_94 => l_array_source_94(Idx)
392825  , p_source_95 => l_array_source_95(Idx)
392826  , p_source_97 => l_array_source_97(Idx)
392827  );
392828 If(l_balance_type_code = 'A') THEN
392829   l_actual_gain_loss_ref := l_gain_or_loss_ref;
392830 END IF;
392831 
392832 --
392833 
392834 
392835 --
392836 AcctLineType_161 (
392837  p_application_id  => p_application_id
392838  ,p_event_id     => l_event_id
392839  ,p_calculate_acctd_flag => l_calculate_acctd_flag
392840  ,p_calculate_g_l_flag => l_calculate_g_l_flag
392841  ,p_actual_flag => l_actual_flag
392842  ,p_balance_type_code => l_balance_type_code
392843  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
392844  
392845  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
392846  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
392847  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
392848  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
392849  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
392850  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
392851  , p_source_84 => l_array_source_84(Idx)
392852  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
392853  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
392854  , p_source_88 => l_array_source_88(Idx)
392855  , p_source_91 => l_array_source_91(Idx)
392856  , p_source_92 => l_array_source_92(Idx)
392857  , p_source_93 => l_array_source_93(Idx)
392858  , p_source_94 => l_array_source_94(Idx)
392859  , p_source_95 => l_array_source_95(Idx)
392860  , p_source_97 => l_array_source_97(Idx)
392861  );
392862 If(l_balance_type_code = 'A') THEN
392863   l_actual_gain_loss_ref := l_gain_or_loss_ref;
392864 END IF;
392865 
392866 --
392867 
392868 
392869 --
392870 AcctLineType_200 (
392871  p_application_id  => p_application_id
392872  ,p_event_id     => l_event_id
392873  ,p_calculate_acctd_flag => l_calculate_acctd_flag
392874  ,p_calculate_g_l_flag => l_calculate_g_l_flag
392875  ,p_actual_flag => l_actual_flag
392876  ,p_balance_type_code => l_balance_type_code
392877  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
392878  
392879  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
392880  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
392881  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
392882  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
392883  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
392884  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
392885  , p_source_84 => l_array_source_84(Idx)
392886  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
392887  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
392888  , p_source_88 => l_array_source_88(Idx)
392889  , p_source_91 => l_array_source_91(Idx)
392890  , p_source_92 => l_array_source_92(Idx)
392891  , p_source_93 => l_array_source_93(Idx)
392892  , p_source_94 => l_array_source_94(Idx)
392893  , p_source_95 => l_array_source_95(Idx)
392894  , p_source_97 => l_array_source_97(Idx)
392895  );
392896 If(l_balance_type_code = 'A') THEN
392897   l_actual_gain_loss_ref := l_gain_or_loss_ref;
392898 END IF;
392899 
392900 --
392901 
392902 
392903 --
392904 AcctLineType_204 (
392905  p_application_id  => p_application_id
392906  ,p_event_id     => l_event_id
392907  ,p_calculate_acctd_flag => l_calculate_acctd_flag
392908  ,p_calculate_g_l_flag => l_calculate_g_l_flag
392909  ,p_actual_flag => l_actual_flag
392910  ,p_balance_type_code => l_balance_type_code
392911  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
392912  
392913  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
392914  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
392915  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
392916  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
392917  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
392918  , p_source_11 => l_array_source_11(Idx)
392919  , p_source_84 => l_array_source_84(Idx)
392920  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
392921  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
392922  , p_source_88 => l_array_source_88(Idx)
392923  , p_source_91 => l_array_source_91(Idx)
392924  , p_source_92 => l_array_source_92(Idx)
392925  , p_source_93 => l_array_source_93(Idx)
392926  , p_source_94 => l_array_source_94(Idx)
392927  , p_source_95 => l_array_source_95(Idx)
392928  , p_source_97 => l_array_source_97(Idx)
392929  );
392930 If(l_balance_type_code = 'A') THEN
392931   l_actual_gain_loss_ref := l_gain_or_loss_ref;
392932 END IF;
392933 
392934 --
392935 
392936 
392937 --
392938 AcctLineType_251 (
392939  p_application_id  => p_application_id
392940  ,p_event_id     => l_event_id
392941  ,p_calculate_acctd_flag => l_calculate_acctd_flag
392942  ,p_calculate_g_l_flag => l_calculate_g_l_flag
392943  ,p_actual_flag => l_actual_flag
392944  ,p_balance_type_code => l_balance_type_code
392945  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
392946  
392947  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
392948  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
392949  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
392950  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
392951  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
392952  , p_source_15 => l_array_source_15(Idx)
392953  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
392954  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
392955  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
392956  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
392957  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
392958  , p_source_84 => l_array_source_84(Idx)
392959  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
392960  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
392961  , p_source_88 => l_array_source_88(Idx)
392962  , p_source_91 => l_array_source_91(Idx)
392963  , p_source_92 => l_array_source_92(Idx)
392964  , p_source_93 => l_array_source_93(Idx)
392965  , p_source_94 => l_array_source_94(Idx)
392966  , p_source_95 => l_array_source_95(Idx)
392967  , p_source_97 => l_array_source_97(Idx)
392968  , p_source_108 => l_array_source_108(Idx)
392969  );
392970 If(l_balance_type_code = 'A') THEN
392971   l_actual_gain_loss_ref := l_gain_or_loss_ref;
392972 END IF;
392973 
392974 --
392975 
392976 
392977 --
392978 AcctLineType_293 (
392979  p_application_id  => p_application_id
392980  ,p_event_id     => l_event_id
392981  ,p_calculate_acctd_flag => l_calculate_acctd_flag
392982  ,p_calculate_g_l_flag => l_calculate_g_l_flag
392983  ,p_actual_flag => l_actual_flag
392984  ,p_balance_type_code => l_balance_type_code
392985  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
392986  
392987  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
392988  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
392989  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
392990  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
392991  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
392992  , p_source_11 => l_array_source_11(Idx)
392993  , p_source_84 => l_array_source_84(Idx)
392994  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
392995  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
392996  , p_source_88 => l_array_source_88(Idx)
392997  , p_source_91 => l_array_source_91(Idx)
392998  , p_source_92 => l_array_source_92(Idx)
392999  , p_source_93 => l_array_source_93(Idx)
393000  , p_source_94 => l_array_source_94(Idx)
393001  , p_source_95 => l_array_source_95(Idx)
393002  , p_source_97 => l_array_source_97(Idx)
393003  );
393004 If(l_balance_type_code = 'A') THEN
393005   l_actual_gain_loss_ref := l_gain_or_loss_ref;
393006 END IF;
393007 
393008 --
393009 
393010 
393011 --
393012 AcctLineType_337 (
393013  p_application_id  => p_application_id
393014  ,p_event_id     => l_event_id
393015  ,p_calculate_acctd_flag => l_calculate_acctd_flag
393016  ,p_calculate_g_l_flag => l_calculate_g_l_flag
393017  ,p_actual_flag => l_actual_flag
393018  ,p_balance_type_code => l_balance_type_code
393019  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
393020  
393021  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
393022  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
393023  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
393024  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
393025  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
393026  , p_source_11 => l_array_source_11(Idx)
393027  , p_source_84 => l_array_source_84(Idx)
393028  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
393029  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
393030  , p_source_88 => l_array_source_88(Idx)
393031  , p_source_91 => l_array_source_91(Idx)
393032  , p_source_92 => l_array_source_92(Idx)
393033  , p_source_93 => l_array_source_93(Idx)
393034  , p_source_94 => l_array_source_94(Idx)
393035  , p_source_95 => l_array_source_95(Idx)
393036  , p_source_97 => l_array_source_97(Idx)
393037  );
393038 If(l_balance_type_code = 'A') THEN
393039   l_actual_gain_loss_ref := l_gain_or_loss_ref;
393040 END IF;
393041 
393042 --
393043 
393044 
393045 --
393046 AcctLineType_391 (
393047  p_application_id  => p_application_id
393048  ,p_event_id     => l_event_id
393049  ,p_calculate_acctd_flag => l_calculate_acctd_flag
393050  ,p_calculate_g_l_flag => l_calculate_g_l_flag
393051  ,p_actual_flag => l_actual_flag
393052  ,p_balance_type_code => l_balance_type_code
393053  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
393054  
393055  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
393056  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
393057  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
393058  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
393059  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
393060  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
393061  , p_source_84 => l_array_source_84(Idx)
393062  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
393063  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
393064  , p_source_88 => l_array_source_88(Idx)
393065  , p_source_91 => l_array_source_91(Idx)
393066  , p_source_92 => l_array_source_92(Idx)
393067  , p_source_93 => l_array_source_93(Idx)
393068  , p_source_94 => l_array_source_94(Idx)
393069  , p_source_95 => l_array_source_95(Idx)
393070  , p_source_97 => l_array_source_97(Idx)
393071  );
393072 If(l_balance_type_code = 'A') THEN
393073   l_actual_gain_loss_ref := l_gain_or_loss_ref;
393074 END IF;
393075 
393076 --
393077 
393078 
393079 --
393080 AcctLineType_411 (
393081  p_application_id  => p_application_id
393082  ,p_event_id     => l_event_id
393083  ,p_calculate_acctd_flag => l_calculate_acctd_flag
393084  ,p_calculate_g_l_flag => l_calculate_g_l_flag
393085  ,p_actual_flag => l_actual_flag
393086  ,p_balance_type_code => l_balance_type_code
393087  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
393088  
393089  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
393090  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
393091  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
393092  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
393093  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
393094  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
393095  , p_source_84 => l_array_source_84(Idx)
393096  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
393097  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
393098  , p_source_88 => l_array_source_88(Idx)
393099  , p_source_91 => l_array_source_91(Idx)
393100  , p_source_92 => l_array_source_92(Idx)
393101  , p_source_93 => l_array_source_93(Idx)
393102  , p_source_94 => l_array_source_94(Idx)
393103  , p_source_95 => l_array_source_95(Idx)
393104  , p_source_97 => l_array_source_97(Idx)
393105  );
393106 If(l_balance_type_code = 'A') THEN
393107   l_actual_gain_loss_ref := l_gain_or_loss_ref;
393108 END IF;
393109 
393110 --
393111 
393112 
393113 --
393114 AcctLineType_484 (
393115  p_application_id  => p_application_id
393116  ,p_event_id     => l_event_id
393117  ,p_calculate_acctd_flag => l_calculate_acctd_flag
393118  ,p_calculate_g_l_flag => l_calculate_g_l_flag
393119  ,p_actual_flag => l_actual_flag
393120  ,p_balance_type_code => l_balance_type_code
393121  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
393122  
393123  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
393124  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
393125  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
393126  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
393127  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
393128  , p_source_11 => l_array_source_11(Idx)
393129  , p_source_84 => l_array_source_84(Idx)
393130  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
393131  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
393132  , p_source_88 => l_array_source_88(Idx)
393133  , p_source_91 => l_array_source_91(Idx)
393134  , p_source_92 => l_array_source_92(Idx)
393135  , p_source_93 => l_array_source_93(Idx)
393136  , p_source_94 => l_array_source_94(Idx)
393137  , p_source_95 => l_array_source_95(Idx)
393138  , p_source_97 => l_array_source_97(Idx)
393139  );
393140 If(l_balance_type_code = 'A') THEN
393141   l_actual_gain_loss_ref := l_gain_or_loss_ref;
393142 END IF;
393143 
393144 --
393145 
393146       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
393147       -- or secondary ledger that has different currency with primary
393148       -- or alc that is calculated by sla
393149       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
393150             (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'))
393151 
393152 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
393153 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
393154           AND (l_actual_flag = 'A')) THEN
393155         XLA_AE_LINES_PKG.CreateGainOrLossLines(
393156           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
393157          ,p_application_id   => p_application_id
393158          ,p_amb_context_code => 'DEFAULT'
393159          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
393160          ,p_event_class_code => C_EVENT_CLASS_CODE
393161          ,p_event_type_code  => C_EVENT_TYPE_CODE
393162          
393163          ,p_gain_ccid        => -1
393164          ,p_loss_ccid        => -1
393165 
393166          ,p_actual_flag      => l_actual_flag
393167          ,p_enc_flag         => null
393168          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
393169          ,p_enc_g_l_ref      => null
393170          );
393171       END IF;
393172    END IF;
393173 END IF;
393174 
393175    ELSE
393176       --
393177       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
393178       --
393179       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
393180          trace
393181             (p_msg      => 'Trancaction revesal option is Y'
393182             ,p_level    => C_LEVEL_STATEMENT
393183             ,p_module   => l_log_module);
393184       END IF;
393185    END IF;
393186 
393187 END LOOP;
393188 l_result := XLA_AE_LINES_PKG.InsertLines ;
393189 end loop;
393190 close line_cur;
393191 
393192 
393193 --
393194 -- insert headers into xla_ae_headers_gt table
393195 --
393196 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
393197 
393198 -- insert into errors table here.
393199 
393200 END LOOP;
393201 
393202 --
393203 -- 4865292
393204 --
393205 -- Compare g_hdr_extract_count with event count in
393206 -- CreateHeadersAndLines.
393207 --
393208 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
393209 
393210 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
393211    trace (p_msg     => '# rows extracted from header extract objects '
393212                     || ' (running total): '
393213                     || g_hdr_extract_count
393214          ,p_level   => C_LEVEL_STATEMENT
393215          ,p_module  => l_log_module);
393216 END IF;
393217 
393218 CLOSE header_cur;
393219 --
393220 
393221 --
393222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
393223    trace
393224       (p_msg      => 'END of EventType_600'
393225       ,p_level    => C_LEVEL_PROCEDURE
393226       ,p_module   => l_log_module);
393227 END IF;
393228 --
393229 RETURN l_result;
393230 EXCEPTION
393231 WHEN xla_exceptions_pkg.application_exception THEN
393232    
393233 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
393234 
393235    
393236 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
393237 
393238    RAISE;
393239 
393240 WHEN NO_DATA_FOUND THEN
393241 
393242 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
393243 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
393244 
393245 FOR header_record IN header_cur
393246 LOOP
393247     l_array_header_events(header_record.event_id) := header_record.event_id;
393248 END LOOP;
393249 
393250 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
393251 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
393252 
393253 fnd_file.put_line(fnd_file.LOG, '                    ');
393254 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
393255 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
393256 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
393257 
393258 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
393259 LOOP
393260 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
393261 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
393262         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
393263 	END IF;
393264 END LOOP;
393265 
393266 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
393267 fnd_file.put_line(fnd_file.LOG, '                    ');
393268 
393269 
393270 xla_exceptions_pkg.raise_message
393271       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_600');
393272 
393273 
393274 WHEN OTHERS THEN
393275    xla_exceptions_pkg.raise_message
393276       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_600');
393277 END EventType_600;
393278 --
393279 
393280 ---------------------------------------
393281 --
393282 -- PRIVATE PROCEDURE
393283 --         insert_sources_601
393284 --
393285 ----------------------------------------
393286 --
393287 PROCEDURE insert_sources_601(
393288                                 p_target_ledger_id       IN NUMBER
393289                               , p_language               IN VARCHAR2
393290                               , p_sla_ledger_id          IN NUMBER
393291                               , p_pad_start_date         IN DATE
393292                               , p_pad_end_date           IN DATE
393293                          )
393294 IS
393295 
393296 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_NO_TP';
393297 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
393298 p_apps_owner                   VARCHAR2(30);
393299 l_log_module                   VARCHAR2(240);
393300 BEGIN
393301 IF g_log_enabled THEN
393302       l_log_module := C_DEFAULT_MODULE||'.insert_sources_601';
393303 END IF;
393304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
393305 
393306       trace
393307          (p_msg      => 'BEGIN of insert_sources_601'
393308          ,p_level    => C_LEVEL_PROCEDURE
393309          ,p_module   => l_log_module);
393310 
393311 END IF;
393312 
393313 -- select APPS owner
393314 SELECT oracle_username
393315   INTO p_apps_owner
393316   FROM fnd_oracle_userid
393317  WHERE read_only_flag = 'U'
393318 ;
393319 
393320 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
393321       trace
393322          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
393323                         ' - p_language = '||p_language||
393324                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
393325                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
393326                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
393327                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
393328          ,p_level    => C_LEVEL_STATEMENT
393329          ,p_module   => l_log_module);
393330 END IF;
393331 
393332 
393333 --
393334 INSERT INTO xla_diag_sources --hdr1
393335 (
393336         event_id
393337       , ledger_id
393338       , sla_ledger_id
393339       , description_language
393340       , object_name
393341       , object_type_code
393342       , line_number
393343       , source_application_id
393344       , source_type_code
393345       , source_code
393346       , source_value
393347       , source_meaning
393348       , created_by
393349       , creation_date
393350       , last_update_date
393351       , last_updated_by
393352       , last_update_login
393353       , program_update_date
393354       , program_application_id
393355       , program_id
393356       , request_id
393357 )
393358 SELECT
393359         event_id
393360       , p_target_ledger_id
393361       , p_sla_ledger_id
393362       , p_language
393363       , object_name
393364       , object_type_code
393365       , line_number
393366       , source_application_id
393367       , source_type_code
393368       , source_code
393369       , SUBSTR(source_value ,1,1996)
393370       , SUBSTR(source_meaning,1,200)
393371       , xla_environment_pkg.g_Usr_Id
393372       , TRUNC(SYSDATE)
393373       , TRUNC(SYSDATE)
393374       , xla_environment_pkg.g_Usr_Id
393375       , xla_environment_pkg.g_Login_Id
393376       , TRUNC(SYSDATE)
393377       , xla_environment_pkg.g_Prog_Appl_Id
393378       , xla_environment_pkg.g_Prog_Id
393379       , xla_environment_pkg.g_Req_Id
393380   FROM (
393381        SELECT xet.event_id                  event_id
393382             , 0                             line_number
393383             , CASE r
393384                WHEN 1 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
393385                 WHEN 2 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
393386                 WHEN 3 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
393387                 WHEN 4 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
393388                 WHEN 5 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
393389                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
393390                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
393391                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
393392                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
393393                 WHEN 10 THEN 'CST_XLA_INV_HEADERS_V' 
393394                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
393395                 
393396                ELSE null
393397               END                           object_name
393398             , CASE r
393399                 WHEN 1 THEN 'HEADER' 
393400                 WHEN 2 THEN 'HEADER' 
393401                 WHEN 3 THEN 'HEADER' 
393402                 WHEN 4 THEN 'HEADER' 
393403                 WHEN 5 THEN 'HEADER' 
393404                 WHEN 6 THEN 'HEADER' 
393405                 WHEN 7 THEN 'HEADER' 
393406                 WHEN 8 THEN 'HEADER' 
393407                 WHEN 9 THEN 'HEADER' 
393408                 WHEN 10 THEN 'HEADER' 
393409                 WHEN 11 THEN 'HEADER' 
393410                 
393411                 ELSE null
393412               END                           object_type_code
393413             , CASE r
393414                 WHEN 1 THEN '707' 
393415                 WHEN 2 THEN '707' 
393416                 WHEN 3 THEN '707' 
393417                 WHEN 4 THEN '707' 
393418                 WHEN 5 THEN '707' 
393419                 WHEN 6 THEN '707' 
393420                 WHEN 7 THEN '707' 
393421                 WHEN 8 THEN '707' 
393422                 WHEN 9 THEN '707' 
393423                 WHEN 10 THEN '707' 
393424                 WHEN 11 THEN '707' 
393425                 
393426                 ELSE null
393427               END                           source_application_id
393428             , 'S'             source_type_code
393429             , CASE r
393430                 WHEN 1 THEN 'PLA_BRIDGING_ACCOUNT' 
393431                 WHEN 2 THEN 'INTERORG_EXPENSE_ACCOUNT' 
393432                 WHEN 3 THEN 'INTERORG_PAYABLES_ACCOUNT' 
393433                 WHEN 4 THEN 'PLA_MATERIAL_ACCOUNT' 
393434                 WHEN 5 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
393435                 WHEN 6 THEN 'PLA_RESOURCE_ACCOUNT' 
393436                 WHEN 7 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
393437                 WHEN 8 THEN 'PLA_OVERHEAD_ACCOUNT' 
393438                 WHEN 9 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
393439                 WHEN 10 THEN 'DISTRIBUTION_TYPE' 
393440                 WHEN 11 THEN 'TRANSFER_TO_GL_INDICATOR' 
393441                 
393442                 ELSE null
393443               END                           source_code
393444             , CASE r
393445                 WHEN 1 THEN TO_CHAR(h4.PLA_BRIDGING_ACCOUNT)
393446                 WHEN 2 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
393447                 WHEN 3 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
393448                 WHEN 4 THEN TO_CHAR(h4.PLA_MATERIAL_ACCOUNT)
393449                 WHEN 5 THEN TO_CHAR(h4.PLA_MATERIAL_OVERHEAD_ACCOUNT)
393450                 WHEN 6 THEN TO_CHAR(h4.PLA_RESOURCE_ACCOUNT)
393451                 WHEN 7 THEN TO_CHAR(h4.PLA_OUTSIDE_PROCESSING_ACCOUNT)
393452                 WHEN 8 THEN TO_CHAR(h4.PLA_OVERHEAD_ACCOUNT)
393453                 WHEN 9 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
393454                 WHEN 10 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
393455                 WHEN 11 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
393456                 
393457                 ELSE null
393458               END                           source_value
393459             , CASE r
393460                 WHEN 10 THEN fvl85.meaning
393461                 WHEN 11 THEN fvl114.meaning
393462                 
393463                 ELSE null
393464               END               source_meaning
393465         FROM xla_events_gt     xet  
393466       , CST_XLA_INTERORG_PARAMS_REF_V  h1
393467       , CST_XLA_INV_HEADERS_V  h2
393468       , CST_XLA_PLA_CATEGORY_REF_V  h4
393469   , fnd_lookup_values    fvl85
393470   , fnd_lookup_values    fvl114
393471             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
393472        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
393473          AND xet.event_type_code = C_EVENT_TYPE_CODE
393474             AND h2.event_id = xet.event_id
393475   AND h1.event_id (+) = h2.event_id
393476  AND h4.pla_cat_organization_id  (+) = h2.organization_id  and h4.pla_cat_item_id   (+) = h2.inventory_item_id  and h4.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
393477   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
393478   AND fvl85.view_application_id(+) = 700
393479   AND fvl85.language(+)            = USERENV('LANG')
393480      AND fvl114.lookup_type(+)         = 'YES_NO'
393481   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
393482   AND fvl114.view_application_id(+) = 0
393483   AND fvl114.language(+)            = USERENV('LANG')
393484   
393485 )
393486 ;
393487 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
393488 
393489       trace
393490          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
393491          ,p_level    => C_LEVEL_STATEMENT
393492          ,p_module   => l_log_module);
393493 
393494 END IF;
393495 --
393496 
393497 
393498 
393499 --
393500 INSERT INTO xla_diag_sources --line1
393501 (
393502         event_id
393503       , ledger_id
393504       , sla_ledger_id
393505       , description_language
393506       , object_name
393507       , object_type_code
393508       , line_number
393509       , source_application_id
393510       , source_type_code
393511       , source_code
393512       , source_value
393513       , source_meaning
393514       , created_by
393515       , creation_date
393516       , last_update_date
393517       , last_updated_by
393518       , last_update_login
393519       , program_update_date
393520       , program_application_id
393521       , program_id
393522       , request_id
393523 )
393524 SELECT  event_id
393525       , p_target_ledger_id
393526       , p_sla_ledger_id
393527       , p_language
393528       , object_name
393529       , object_type_code
393530       , line_number
393531       , source_application_id
393532       , source_type_code
393533       , source_code
393534       , SUBSTR(source_value,1,1996)
393535       , SUBSTR(source_meaning,1,200)
393536       , xla_environment_pkg.g_Usr_Id
393537       , TRUNC(SYSDATE)
393538       , TRUNC(SYSDATE)
393539       , xla_environment_pkg.g_Usr_Id
393540       , xla_environment_pkg.g_Login_Id
393541       , TRUNC(SYSDATE)
393542       , xla_environment_pkg.g_Prog_Appl_Id
393543       , xla_environment_pkg.g_Prog_Id
393544       , xla_environment_pkg.g_Req_Id
393545   FROM (
393546        SELECT xet.event_id                  event_id
393547             , l3.line_number                 line_number
393548             , CASE r
393549                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
393550                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
393551                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
393552                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
393553                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
393554                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
393555                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
393556                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
393557                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
393558                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
393559                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
393560                 
393561                ELSE null
393562               END                           object_name
393563             , CASE r
393564                 WHEN 1 THEN 'LINE' 
393565                 WHEN 2 THEN 'LINE' 
393566                 WHEN 3 THEN 'LINE' 
393567                 WHEN 4 THEN 'LINE' 
393568                 WHEN 5 THEN 'LINE' 
393569                 WHEN 6 THEN 'LINE' 
393570                 WHEN 7 THEN 'LINE' 
393571                 WHEN 8 THEN 'LINE' 
393572                 WHEN 9 THEN 'LINE' 
393573                 WHEN 10 THEN 'LINE' 
393574                 WHEN 11 THEN 'LINE' 
393575                 
393576                 ELSE null
393577               END                           object_type_code
393578             , CASE r
393579                 WHEN 1 THEN '707' 
393580                 WHEN 2 THEN '707' 
393581                 WHEN 3 THEN '707' 
393582                 WHEN 4 THEN '707' 
393583                 WHEN 5 THEN '707' 
393584                 WHEN 6 THEN '707' 
393585                 WHEN 7 THEN '707' 
393586                 WHEN 8 THEN '707' 
393587                 WHEN 9 THEN '707' 
393588                 WHEN 10 THEN '707' 
393589                 WHEN 11 THEN '707' 
393590                 
393591                 ELSE null
393592               END                           source_application_id
393593             , 'S'             source_type_code
393594             , CASE r
393595                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
393596                 WHEN 2 THEN 'COST_ELEMENT_ID' 
393597                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
393598                 WHEN 4 THEN 'CURRENCY_CODE' 
393599                 WHEN 5 THEN 'ENTERED_AMOUNT' 
393600                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
393601                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
393602                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
393603                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
393604                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
393605                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
393606                 
393607                 ELSE null
393608               END                           source_code
393609             , CASE r
393610                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
393611                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
393612                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
393613                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
393614                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
393615                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
393616                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
393617                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
393618                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
393619                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
393620                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
393621                 
393622                 ELSE null
393623               END                           source_value
393624             , CASE r
393625                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
393626                           1009615
393627                          ,TO_CHAR(l3.COST_ELEMENT_ID)
393628                          ,'COST_ELEMENT_ID'
393629                          ,'S'
393630                          ,707)
393631                 
393632                 ELSE null
393633               END               source_meaning
393634          FROM  xla_events_gt     xet  
393635         , CST_XLA_INV_LINES_V  l3
393636             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
393637         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
393638           AND xet.event_type_code = C_EVENT_TYPE_CODE
393639             AND l3.event_id          = xet.event_id
393640 
393641 )
393642 ;
393643 --
393644 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
393645 
393646       trace
393647          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
393648          ,p_level    => C_LEVEL_STATEMENT
393649          ,p_module   => l_log_module);
393650 
393651 END IF;
393652 
393653 
393654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
393655       trace
393656          (p_msg      => 'END of insert_sources_601'
393657          ,p_level    => C_LEVEL_PROCEDURE
393658          ,p_module   => l_log_module);
393659 END IF;
393660 EXCEPTION
393661   WHEN xla_exceptions_pkg.application_exception THEN
393662       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
393663             trace
393664                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
393665                ,p_level    => C_LEVEL_EXCEPTION
393666                ,p_module   => l_log_module);
393667       END IF;
393668       RAISE;
393669   WHEN OTHERS THEN
393670       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
393671             trace
393672                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
393673                ,p_level    => C_LEVEL_EXCEPTION
393674                ,p_module   => l_log_module);
393675        END IF;
393676        xla_exceptions_pkg.raise_message
393677            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_601');
393678 END insert_sources_601;
393679 --
393680 
393681 ---------------------------------------
393682 --
393683 -- PRIVATE FUNCTION
393684 --         EventType_601
393685 --
393686 ----------------------------------------
393687 --
393688 FUNCTION EventType_601
393689        (p_application_id         IN NUMBER
393690        ,p_base_ledger_id         IN NUMBER
393691        ,p_target_ledger_id       IN NUMBER
393692        ,p_language               IN VARCHAR2
393693        ,p_currency_code          IN VARCHAR2
393694        ,p_sla_ledger_id          IN NUMBER
393695        ,p_pad_start_date         IN DATE
393696        ,p_pad_end_date           IN DATE
393697        ,p_primary_ledger_id      IN NUMBER)
393698 RETURN BOOLEAN IS
393699 --
393700 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_NO_TP';
393701 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
393702 
393703 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
393704 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
393705 --
393706 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393707 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393708 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
393709 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
393710 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393711 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
393712 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
393713 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393714 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
393715 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
393716 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393717 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393718 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393719 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
393720 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
393721 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
393722 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
393723 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
393724 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
393725 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
393726 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
393727 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
393728 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
393729 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
393730 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
393731 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
393732 
393733 l_event_id                             NUMBER;
393734 l_previous_event_id                    NUMBER;
393735 l_first_event_id                       NUMBER;
393736 l_last_event_id                        NUMBER;
393737 
393738 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
393739 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
393740 --
393741 --
393742 l_result                    BOOLEAN := TRUE;
393743 l_rows                      NUMBER  := 1000;
393744 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt, No Transfer Price';
393745 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
393746 l_description               VARCHAR2(4000);
393747 l_transaction_reversal      NUMBER;
393748 l_ae_header_id              NUMBER;
393749 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
393750 l_log_module                VARCHAR2(240);
393751 --
393752 l_acct_reversal_source      VARCHAR2(30);
393753 l_trx_reversal_source       VARCHAR2(30);
393754 
393755 l_continue_with_lines       BOOLEAN := TRUE;
393756 --
393757 l_acc_rev_gl_date_source    DATE;                      -- 4262811
393758 --
393759 type t_array_event_id is table of number index by binary_integer;
393760 
393761 l_rec_array_event                    t_rec_array_event;
393762 l_null_rec_array_event               t_rec_array_event;
393763 l_array_ae_header_id                 xla_number_array_type;
393764 l_actual_flag                        VARCHAR2(1) := NULL;
393765 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
393766 l_balance_type_code                  VARCHAR2(1) :=NULL;
393767 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
393768 
393769 --
393770 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
393771 --
393772 
393773 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393774 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393775 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393776 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393777 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393778 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393779 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393780 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393781 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
393782 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
393783 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
393784 
393785 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
393786 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
393787 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
393788 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
393789 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
393790 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
393791 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
393792 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
393793 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
393794 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
393795 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
393796 
393797 l_array_source_22              t_array_source_22;
393798 l_array_source_34              t_array_source_34;
393799 l_array_source_35              t_array_source_35;
393800 l_array_source_41              t_array_source_41;
393801 l_array_source_42              t_array_source_42;
393802 l_array_source_43              t_array_source_43;
393803 l_array_source_44              t_array_source_44;
393804 l_array_source_45              t_array_source_45;
393805 l_array_source_59              t_array_source_59;
393806 l_array_source_85              t_array_source_85;
393807 l_array_source_85_meaning      t_array_lookup_meaning;
393808 l_array_source_114              t_array_source_114;
393809 l_array_source_114_meaning      t_array_lookup_meaning;
393810 
393811 l_array_source_11      t_array_source_11;
393812 l_array_source_15      t_array_source_15;
393813 l_array_source_84      t_array_source_84;
393814 l_array_source_88      t_array_source_88;
393815 l_array_source_91      t_array_source_91;
393816 l_array_source_92      t_array_source_92;
393817 l_array_source_93      t_array_source_93;
393818 l_array_source_94      t_array_source_94;
393819 l_array_source_95      t_array_source_95;
393820 l_array_source_97      t_array_source_97;
393821 l_array_source_108      t_array_source_108;
393822 
393823 --
393824 CURSOR header_cur
393825 IS
393826 SELECT /*+ leading(xet) cardinality(xet,1) */
393827 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
393828 -- Event Class Code: USER_DEFINE
393829     xet.entity_id
393830   , xet.legal_entity_id
393831   , xet.entity_code
393832   , xet.transaction_number
393833   , xet.event_id
393834   , xet.event_class_code
393835   , xet.event_type_code
393836   , xet.event_number
393837   , xet.event_date
393838   , xet.transaction_date
393839   , xet.reference_num_1
393840   , xet.reference_num_2
393841   , xet.reference_num_3
393842   , xet.reference_num_4
393843   , xet.reference_char_1
393844   , xet.reference_char_2
393845   , xet.reference_char_3
393846   , xet.reference_char_4
393847   , xet.reference_date_1
393848   , xet.reference_date_2
393849   , xet.reference_date_3
393850   , xet.reference_date_4
393851   , xet.event_created_by
393852   , xet.budgetary_control_flag 
393853   , h4.PLA_BRIDGING_ACCOUNT    source_22
393854   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
393855   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
393856   , h4.PLA_MATERIAL_ACCOUNT    source_41
393857   , h4.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
393858   , h4.PLA_RESOURCE_ACCOUNT    source_43
393859   , h4.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
393860   , h4.PLA_OVERHEAD_ACCOUNT    source_45
393861   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
393862   , h2.DISTRIBUTION_TYPE    source_85
393863   , fvl85.meaning   source_85_meaning
393864   , h2.TRANSFER_TO_GL_INDICATOR    source_114
393865   , fvl114.meaning   source_114_meaning
393866   FROM xla_events_gt     xet 
393867   , CST_XLA_INTERORG_PARAMS_REF_V  h1
393868   , CST_XLA_INV_HEADERS_V  h2
393869   , CST_XLA_PLA_CATEGORY_REF_V  h4
393870   , fnd_lookup_values    fvl85
393871   , fnd_lookup_values    fvl114
393872  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
393873    and xet.event_type_code = C_EVENT_TYPE_CODE
393874    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
393875   AND h1.event_id (+) = h2.event_id
393876  AND h4.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h4.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h4.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
393877   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
393878   AND fvl85.view_application_id(+) = 700
393879   AND fvl85.language(+)            = USERENV('LANG')
393880      AND fvl114.lookup_type(+)         = 'YES_NO'
393881   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
393882   AND fvl114.view_application_id(+) = 0
393883   AND fvl114.language(+)            = USERENV('LANG')
393884   
393885  ORDER BY event_id
393886 ;
393887 
393888 
393889 --
393890 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
393891 IS
393892 SELECT /*+ leading(xet) cardinality(xet,1) */
393893 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
393894 -- Event Class Code: USER_DEFINE
393895     xet.entity_id
393896    ,xet.legal_entity_id
393897    ,xet.entity_code
393898    ,xet.transaction_number
393899    ,xet.event_id
393900    ,xet.event_class_code
393901    ,xet.event_type_code
393902    ,xet.event_number
393903    ,xet.event_date
393904    ,xet.transaction_date
393905    ,xet.reference_num_1
393906    ,xet.reference_num_2
393907    ,xet.reference_num_3
393908    ,xet.reference_num_4
393909    ,xet.reference_char_1
393910    ,xet.reference_char_2
393911    ,xet.reference_char_3
393912    ,xet.reference_char_4
393913    ,xet.reference_date_1
393914    ,xet.reference_date_2
393915    ,xet.reference_date_3
393916    ,xet.reference_date_4
393917    ,xet.event_created_by
393918    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
393919   , l3.CODE_COMBINATION_ID    source_11
393920   , l3.COST_ELEMENT_ID    source_15
393921   , l3.DISTRIBUTION_IDENTIFIER    source_84
393922   , l3.CURRENCY_CODE    source_88
393923   , l3.ENTERED_AMOUNT    source_91
393924   , l3.CURRENCY_CONVERSION_DATE    source_92
393925   , l3.CURRENCY_CONVERSION_RATE    source_93
393926   , l3.CURRENCY_CONVERSION_TYPE    source_94
393927   , l3.ACCOUNTED_AMOUNT    source_95
393928   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
393929   , l3.L_ORGANIZATION_CODE    source_108
393930   FROM xla_events_gt     xet 
393931   , CST_XLA_INV_LINES_V  l3
393932  WHERE xet.event_id between x_first_event_id and x_last_event_id
393933    and xet.event_date between p_pad_start_date and p_pad_end_date
393934    and xet.event_type_code = C_EVENT_TYPE_CODE
393935    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
393936 ;
393937 
393938 --
393939 BEGIN
393940 IF g_log_enabled THEN
393941    l_log_module := C_DEFAULT_MODULE||'.EventType_601';
393942 END IF;
393943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
393944    trace
393945       (p_msg      => 'BEGIN of EventType_601'
393946       ,p_level    => C_LEVEL_PROCEDURE
393947       ,p_module   => l_log_module);
393948 END IF;
393949 
393950 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
393951    trace
393952       (p_msg      => 'p_application_id = '||p_application_id||
393953                      ' - p_base_ledger_id = '||p_base_ledger_id||
393954                      ' - p_target_ledger_id  = '||p_target_ledger_id||
393955                      ' - p_language = '||p_language||
393956                      ' - p_currency_code = '||p_currency_code||
393957                      ' - p_sla_ledger_id = '||p_sla_ledger_id
393958       ,p_level    => C_LEVEL_STATEMENT
393959       ,p_module   => l_log_module);
393960 END IF;
393961 --
393962 -- initialze arrays
393963 --
393964 g_array_event.DELETE;
393965 l_rec_array_event := l_null_rec_array_event;
393966 --
393967 --------------------------------------
393968 -- 4262811 Initialze MPA Line Number
393969 --------------------------------------
393970 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
393971 
393972 --
393973 
393974 --
393975 OPEN header_cur;
393976 --
393977 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
393978    trace
393979    (p_msg      => 'SQL - FETCH header_cur'
393980    ,p_level    => C_LEVEL_STATEMENT
393981    ,p_module   => l_log_module);
393982 END IF;
393983 --
393984 LOOP
393985 FETCH header_cur BULK COLLECT INTO
393986         l_array_entity_id
393987       , l_array_legal_entity_id
393988       , l_array_entity_code
393989       , l_array_transaction_num
393990       , l_array_event_id
393991       , l_array_class_code
393992       , l_array_event_type
393993       , l_array_event_number
393994       , l_array_event_date
393995       , l_array_transaction_date
393996       , l_array_reference_num_1
393997       , l_array_reference_num_2
393998       , l_array_reference_num_3
393999       , l_array_reference_num_4
394000       , l_array_reference_char_1
394001       , l_array_reference_char_2
394002       , l_array_reference_char_3
394003       , l_array_reference_char_4
394004       , l_array_reference_date_1
394005       , l_array_reference_date_2
394006       , l_array_reference_date_3
394007       , l_array_reference_date_4
394008       , l_array_event_created_by
394009       , l_array_budgetary_control_flag 
394010       , l_array_source_22
394011       , l_array_source_34
394012       , l_array_source_35
394013       , l_array_source_41
394014       , l_array_source_42
394015       , l_array_source_43
394016       , l_array_source_44
394017       , l_array_source_45
394018       , l_array_source_59
394019       , l_array_source_85
394020       , l_array_source_85_meaning
394021       , l_array_source_114
394022       , l_array_source_114_meaning
394023       LIMIT l_rows;
394024 --
394025 IF (C_LEVEL_EVENT >= g_log_level) THEN
394026    trace
394027    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
394028    ,p_level    => C_LEVEL_EVENT
394029    ,p_module   => l_log_module);
394030 END IF;
394031 --
394032 EXIT WHEN l_array_entity_id.COUNT = 0;
394033 
394034 -- initialize arrays
394035 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
394036 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
394037 
394038 --
394039 -- Bug 4458708
394040 --
394041 XLA_AE_LINES_PKG.g_LineNumber := 0;
394042 
394043 
394044 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
394045 g_last_hdr_idx := l_array_event_id.LAST;
394046 --
394047 -- loop for the headers. Each iteration is for each header extract row
394048 -- fetched in header cursor
394049 --
394050 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
394051 
394052 --
394053 -- set event info as cache for other routines to refer event attributes
394054 --
394055 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
394056    (p_application_id           => p_application_id
394057    ,p_primary_ledger_id        => p_primary_ledger_id
394058    ,p_base_ledger_id           => p_base_ledger_id
394059    ,p_target_ledger_id         => p_target_ledger_id
394060    ,p_entity_id                => l_array_entity_id(hdr_idx)
394061    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
394062    ,p_entity_code              => l_array_entity_code(hdr_idx)
394063    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
394064    ,p_event_id                 => l_array_event_id(hdr_idx)
394065    ,p_event_class_code         => l_array_class_code(hdr_idx)
394066    ,p_event_type_code          => l_array_event_type(hdr_idx)
394067    ,p_event_number             => l_array_event_number(hdr_idx)
394068    ,p_event_date               => l_array_event_date(hdr_idx)
394069    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
394070    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
394071    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
394072    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
394073    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
394074    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
394075    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
394076    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
394077    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
394078    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
394079    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
394080    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
394081    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
394082    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
394083    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
394084 
394085 --
394086 -- set the status of entry to C_VALID (0)
394087 --
394088 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
394089 
394090 --
394091 -- initialize a row for ae header
394092 --
394093 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
394094 
394095 l_event_id := l_array_event_id(hdr_idx);
394096 
394097 --
394098 -- storing the hdr_idx for event. May be used by line cursor.
394099 --
394100 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
394101 
394102 --
394103 -- store sources from header extract. This can be improved to
394104 -- store only those sources from header extract that may be used in lines
394105 --
394106 
394107 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
394108 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
394109 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
394110 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
394111 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
394112 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
394113 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
394114 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
394115 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
394116 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
394117 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
394118 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
394119 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
394120 
394121 --
394122 -- initilaize the status of ae headers for diffrent balance types
394123 -- the status is initialised to C_NOT_CREATED (2)
394124 --
394125 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
394126 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
394127 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
394128 
394129 --
394130 -- call api to validate and store accounting attributes for header
394131 --
394132 
394133 ------------------------------------------------------------
394134 -- Accrual Reversal : to get date for Standard Source (NONE)
394135 ------------------------------------------------------------
394136 l_acc_rev_gl_date_source := NULL;
394137 
394138      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
394139       l_rec_acct_attrs.array_date_value(1) := 
394140 xla_ae_sources_pkg.GetSystemSourceDate(
394141    p_source_code           => 'XLA_REFERENCE_DATE_1'
394142  , p_source_type_code      => 'Y'
394143  , p_source_application_id =>  602
394144 );
394145      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
394146       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
394147 
394148 
394149 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
394150 
394151 XLA_AE_HEADER_PKG.SetJeCategoryName;
394152 
394153 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
394154 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
394155 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
394156 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
394157 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
394158 
394159 
394160 -- No header level analytical criteria
394161 
394162 --
394163 --accounting attribute enhancement, bug 3612931
394164 --
394165 l_trx_reversal_source := SUBSTR(NULL, 1,30);
394166 
394167 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
394168    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
394169 
394170    xla_accounting_err_pkg.build_message
394171       (p_appli_s_name            => 'XLA'
394172       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
394173       ,p_token_1                 => 'ACCT_ATTR_NAME'
394174       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
394175       ,p_token_2                 => 'PRODUCT_NAME'
394176       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
394177       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
394178       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
394179       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
394180 
394181 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
394182    --
394183    -- following sets the accounting attributes needed to reverse
394184    -- accounting for a distributeion
394185    --
394186    xla_ae_lines_pkg.SetTrxReversalAttrs
394187       (p_event_id              => l_event_id
394188       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
394189       ,p_trx_reversal_source   => l_trx_reversal_source);
394190 
394191 END IF;
394192 
394193 
394194 ----------------------------------------------------------------
394195 -- 4262811 -  update the header statuses to invalid in need be
394196 ----------------------------------------------------------------
394197 --
394198 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
394199 
394200 
394201   -----------------------------------------------
394202   -- No accrual reversal for the event class/type
394203   -----------------------------------------------
394204 ----------------------------------------------------------------
394205 
394206 --
394207 -- this ends the header loop iteration for one bulk fetch
394208 --
394209 END LOOP;
394210 
394211 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
394212 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
394213 
394214 --
394215 -- insert dummy rows into lines gt table that were created due to
394216 -- transaction reversals
394217 --
394218 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
394219    l_result := XLA_AE_LINES_PKG.InsertLines;
394220 END IF;
394221 
394222 --
394223 -- reset the temp_line_num for each set of events fetched from header
394224 -- cursor rather than doing it for each new event in line cursor
394225 -- Bug 3939231
394226 --
394227 xla_ae_lines_pkg.g_temp_line_num := 0;
394228 
394229 
394230 
394231 --
394232 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
394233 --
394234 --
394235 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
394236 
394237       trace
394238          (p_msg      => 'SQL - FETCH line_cur'
394239          ,p_level    => C_LEVEL_STATEMENT
394240          ,p_module   => l_log_module);
394241 
394242 END IF;
394243 --
394244 --
394245 LOOP
394246   --
394247   FETCH line_cur BULK COLLECT INTO
394248         l_array_entity_id
394249       , l_array_legal_entity_id
394250       , l_array_entity_code
394251       , l_array_transaction_num
394252       , l_array_event_id
394253       , l_array_class_code
394254       , l_array_event_type
394255       , l_array_event_number
394256       , l_array_event_date
394257       , l_array_transaction_date
394258       , l_array_reference_num_1
394259       , l_array_reference_num_2
394260       , l_array_reference_num_3
394261       , l_array_reference_num_4
394262       , l_array_reference_char_1
394263       , l_array_reference_char_2
394264       , l_array_reference_char_3
394265       , l_array_reference_char_4
394266       , l_array_reference_date_1
394267       , l_array_reference_date_2
394268       , l_array_reference_date_3
394269       , l_array_reference_date_4
394270       , l_array_event_created_by
394271       , l_array_budgetary_control_flag
394272       , l_array_extract_line_num 
394273       , l_array_source_11
394274       , l_array_source_15
394275       , l_array_source_84
394276       , l_array_source_88
394277       , l_array_source_91
394278       , l_array_source_92
394279       , l_array_source_93
394280       , l_array_source_94
394281       , l_array_source_95
394282       , l_array_source_97
394283       , l_array_source_108
394284       LIMIT l_rows;
394285 
394286   --
394287   IF (C_LEVEL_EVENT >= g_log_level) THEN
394288             trace
394289                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
394290                ,p_level    => C_LEVEL_EVENT
394291                ,p_module   => l_log_module);
394292   END IF;
394293   --
394294   EXIT WHEN l_array_entity_id.count = 0;
394295 
394296   XLA_AE_LINES_PKG.g_rec_lines := null;
394297 
394298 --
394299 -- Bug 4458708
394300 --
394301 XLA_AE_LINES_PKG.g_LineNumber := 0;
394302 --
394303 --
394304 
394305 FOR Idx IN 1..l_array_event_id.count LOOP
394306    --
394307    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
394308    --
394309    l_event_id := l_array_event_id(idx);  -- 5648433
394310 
394311    --
394312    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
394313    --
394314 
394315    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
394316              (g_array_event(l_event_id).array_value_num('header_index'))
394317          ,'N'
394318          ) <> 'Y'
394319    THEN
394320       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
394321          trace
394322             (p_msg      => 'Trancaction revesal option is not Y '
394323             ,p_level    => C_LEVEL_STATEMENT
394324             ,p_module   => l_log_module);
394325       END IF;
394326 
394327 --
394328 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
394329 --
394330 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
394331 --
394332 -- set event info as cache for other routines to refer event attributes
394333 --
394334 
394335 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
394336    l_previous_event_id := l_event_id;
394337 
394338    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
394339       (p_application_id           => p_application_id
394340       ,p_primary_ledger_id        => p_primary_ledger_id
394341       ,p_base_ledger_id           => p_base_ledger_id
394342       ,p_target_ledger_id         => p_target_ledger_id
394343       ,p_entity_id                => l_array_entity_id(Idx)
394344       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
394345       ,p_entity_code              => l_array_entity_code(Idx)
394346       ,p_transaction_num          => l_array_transaction_num(Idx)
394347       ,p_event_id                 => l_array_event_id(Idx)
394348       ,p_event_class_code         => l_array_class_code(Idx)
394349       ,p_event_type_code          => l_array_event_type(Idx)
394350       ,p_event_number             => l_array_event_number(Idx)
394351       ,p_event_date               => l_array_event_date(Idx)
394352       ,p_transaction_date         => l_array_transaction_date(Idx)
394353       ,p_reference_num_1          => l_array_reference_num_1(Idx)
394354       ,p_reference_num_2          => l_array_reference_num_2(Idx)
394355       ,p_reference_num_3          => l_array_reference_num_3(Idx)
394356       ,p_reference_num_4          => l_array_reference_num_4(Idx)
394357       ,p_reference_char_1         => l_array_reference_char_1(Idx)
394358       ,p_reference_char_2         => l_array_reference_char_2(Idx)
394359       ,p_reference_char_3         => l_array_reference_char_3(Idx)
394360       ,p_reference_char_4         => l_array_reference_char_4(Idx)
394361       ,p_reference_date_1         => l_array_reference_date_1(Idx)
394362       ,p_reference_date_2         => l_array_reference_date_2(Idx)
394363       ,p_reference_date_3         => l_array_reference_date_3(Idx)
394364       ,p_reference_date_4         => l_array_reference_date_4(Idx)
394365       ,p_event_created_by         => l_array_event_created_by(Idx)
394366       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
394367        --
394368 END IF;
394369 
394370 
394371 
394372 --
394373 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
394374 
394375 l_acct_reversal_source := SUBSTR(NULL, 1,30);
394376 
394377 IF l_continue_with_lines THEN
394378    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
394379       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
394380 
394381       xla_accounting_err_pkg.build_message
394382          (p_appli_s_name            => 'XLA'
394383          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
394384          ,p_token_1                 => 'LINE_NUMBER'
394385          ,p_value_1                 => l_array_extract_line_num(Idx)
394386          ,p_token_2                 => 'PRODUCT_NAME'
394387          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
394388          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
394389          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
394390          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
394391 
394392    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
394393       --
394394       -- following sets the accounting attributes needed to reverse
394395       -- accounting for a distributeion
394396       --
394397 
394398       --
394399       -- 5217187
394400       --
394401       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
394402       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
394403                                        g_array_event(l_event_id).array_value_num('header_index'));
394404       --
394405       --
394406 
394407       -- No reversal code generated
394408 
394409       xla_ae_lines_pkg.SetAcctReversalAttrs
394410          (p_event_id             => l_event_id
394411          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
394412          ,p_calculate_acctd_flag => l_calculate_acctd_flag
394413          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
394414    END IF;
394415 
394416    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
394417        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
394418 
394419 --
394420 AcctLineType_88 (
394421  p_application_id  => p_application_id
394422  ,p_event_id     => l_event_id
394423  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394424  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394425  ,p_actual_flag => l_actual_flag
394426  ,p_balance_type_code => l_balance_type_code
394427  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394428  
394429  , p_source_11 => l_array_source_11(Idx)
394430  , p_source_84 => l_array_source_84(Idx)
394431  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394432  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394433  , p_source_88 => l_array_source_88(Idx)
394434  , p_source_91 => l_array_source_91(Idx)
394435  , p_source_92 => l_array_source_92(Idx)
394436  , p_source_93 => l_array_source_93(Idx)
394437  , p_source_94 => l_array_source_94(Idx)
394438  , p_source_95 => l_array_source_95(Idx)
394439  , p_source_97 => l_array_source_97(Idx)
394440  );
394441 If(l_balance_type_code = 'A') THEN
394442   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394443 END IF;
394444 
394445 --
394446 
394447 
394448 --
394449 AcctLineType_149 (
394450  p_application_id  => p_application_id
394451  ,p_event_id     => l_event_id
394452  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394453  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394454  ,p_actual_flag => l_actual_flag
394455  ,p_balance_type_code => l_balance_type_code
394456  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394457  
394458  , p_source_11 => l_array_source_11(Idx)
394459  , p_source_84 => l_array_source_84(Idx)
394460  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394461  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394462  , p_source_88 => l_array_source_88(Idx)
394463  , p_source_91 => l_array_source_91(Idx)
394464  , p_source_92 => l_array_source_92(Idx)
394465  , p_source_93 => l_array_source_93(Idx)
394466  , p_source_94 => l_array_source_94(Idx)
394467  , p_source_95 => l_array_source_95(Idx)
394468  , p_source_97 => l_array_source_97(Idx)
394469  );
394470 If(l_balance_type_code = 'A') THEN
394471   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394472 END IF;
394473 
394474 --
394475 
394476 
394477 --
394478 AcctLineType_167 (
394479  p_application_id  => p_application_id
394480  ,p_event_id     => l_event_id
394481  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394482  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394483  ,p_actual_flag => l_actual_flag
394484  ,p_balance_type_code => l_balance_type_code
394485  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394486  
394487  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
394488  , p_source_84 => l_array_source_84(Idx)
394489  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394490  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394491  , p_source_88 => l_array_source_88(Idx)
394492  , p_source_91 => l_array_source_91(Idx)
394493  , p_source_92 => l_array_source_92(Idx)
394494  , p_source_93 => l_array_source_93(Idx)
394495  , p_source_94 => l_array_source_94(Idx)
394496  , p_source_95 => l_array_source_95(Idx)
394497  , p_source_97 => l_array_source_97(Idx)
394498  );
394499 If(l_balance_type_code = 'A') THEN
394500   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394501 END IF;
394502 
394503 --
394504 
394505 
394506 --
394507 AcctLineType_195 (
394508  p_application_id  => p_application_id
394509  ,p_event_id     => l_event_id
394510  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394511  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394512  ,p_actual_flag => l_actual_flag
394513  ,p_balance_type_code => l_balance_type_code
394514  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394515  
394516  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
394517  , p_source_84 => l_array_source_84(Idx)
394518  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394519  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394520  , p_source_88 => l_array_source_88(Idx)
394521  , p_source_91 => l_array_source_91(Idx)
394522  , p_source_92 => l_array_source_92(Idx)
394523  , p_source_93 => l_array_source_93(Idx)
394524  , p_source_94 => l_array_source_94(Idx)
394525  , p_source_95 => l_array_source_95(Idx)
394526  , p_source_97 => l_array_source_97(Idx)
394527  );
394528 If(l_balance_type_code = 'A') THEN
394529   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394530 END IF;
394531 
394532 --
394533 
394534 
394535 --
394536 AcctLineType_215 (
394537  p_application_id  => p_application_id
394538  ,p_event_id     => l_event_id
394539  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394540  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394541  ,p_actual_flag => l_actual_flag
394542  ,p_balance_type_code => l_balance_type_code
394543  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394544  
394545  , p_source_11 => l_array_source_11(Idx)
394546  , p_source_84 => l_array_source_84(Idx)
394547  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394548  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394549  , p_source_88 => l_array_source_88(Idx)
394550  , p_source_91 => l_array_source_91(Idx)
394551  , p_source_92 => l_array_source_92(Idx)
394552  , p_source_93 => l_array_source_93(Idx)
394553  , p_source_94 => l_array_source_94(Idx)
394554  , p_source_95 => l_array_source_95(Idx)
394555  , p_source_97 => l_array_source_97(Idx)
394556  );
394557 If(l_balance_type_code = 'A') THEN
394558   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394559 END IF;
394560 
394561 --
394562 
394563 
394564 --
394565 AcctLineType_259 (
394566  p_application_id  => p_application_id
394567  ,p_event_id     => l_event_id
394568  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394569  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394570  ,p_actual_flag => l_actual_flag
394571  ,p_balance_type_code => l_balance_type_code
394572  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394573  
394574  , p_source_15 => l_array_source_15(Idx)
394575  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
394576  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
394577  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
394578  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
394579  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
394580  , p_source_84 => l_array_source_84(Idx)
394581  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394582  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394583  , p_source_88 => l_array_source_88(Idx)
394584  , p_source_91 => l_array_source_91(Idx)
394585  , p_source_92 => l_array_source_92(Idx)
394586  , p_source_93 => l_array_source_93(Idx)
394587  , p_source_94 => l_array_source_94(Idx)
394588  , p_source_95 => l_array_source_95(Idx)
394589  , p_source_97 => l_array_source_97(Idx)
394590  , p_source_108 => l_array_source_108(Idx)
394591  );
394592 If(l_balance_type_code = 'A') THEN
394593   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394594 END IF;
394595 
394596 --
394597 
394598 
394599 --
394600 AcctLineType_304 (
394601  p_application_id  => p_application_id
394602  ,p_event_id     => l_event_id
394603  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394604  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394605  ,p_actual_flag => l_actual_flag
394606  ,p_balance_type_code => l_balance_type_code
394607  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394608  
394609  , p_source_11 => l_array_source_11(Idx)
394610  , p_source_84 => l_array_source_84(Idx)
394611  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394612  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394613  , p_source_88 => l_array_source_88(Idx)
394614  , p_source_91 => l_array_source_91(Idx)
394615  , p_source_92 => l_array_source_92(Idx)
394616  , p_source_93 => l_array_source_93(Idx)
394617  , p_source_94 => l_array_source_94(Idx)
394618  , p_source_95 => l_array_source_95(Idx)
394619  , p_source_97 => l_array_source_97(Idx)
394620  );
394621 If(l_balance_type_code = 'A') THEN
394622   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394623 END IF;
394624 
394625 --
394626 
394627 
394628 --
394629 AcctLineType_338 (
394630  p_application_id  => p_application_id
394631  ,p_event_id     => l_event_id
394632  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394633  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394634  ,p_actual_flag => l_actual_flag
394635  ,p_balance_type_code => l_balance_type_code
394636  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394637  
394638  , p_source_11 => l_array_source_11(Idx)
394639  , p_source_84 => l_array_source_84(Idx)
394640  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394641  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394642  , p_source_88 => l_array_source_88(Idx)
394643  , p_source_91 => l_array_source_91(Idx)
394644  , p_source_92 => l_array_source_92(Idx)
394645  , p_source_93 => l_array_source_93(Idx)
394646  , p_source_94 => l_array_source_94(Idx)
394647  , p_source_95 => l_array_source_95(Idx)
394648  , p_source_97 => l_array_source_97(Idx)
394649  );
394650 If(l_balance_type_code = 'A') THEN
394651   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394652 END IF;
394653 
394654 --
394655 
394656 
394657 --
394658 AcctLineType_387 (
394659  p_application_id  => p_application_id
394660  ,p_event_id     => l_event_id
394661  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394662  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394663  ,p_actual_flag => l_actual_flag
394664  ,p_balance_type_code => l_balance_type_code
394665  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394666  
394667  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
394668  , p_source_84 => l_array_source_84(Idx)
394669  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394670  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394671  , p_source_88 => l_array_source_88(Idx)
394672  , p_source_91 => l_array_source_91(Idx)
394673  , p_source_92 => l_array_source_92(Idx)
394674  , p_source_93 => l_array_source_93(Idx)
394675  , p_source_94 => l_array_source_94(Idx)
394676  , p_source_95 => l_array_source_95(Idx)
394677  , p_source_97 => l_array_source_97(Idx)
394678  );
394679 If(l_balance_type_code = 'A') THEN
394680   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394681 END IF;
394682 
394683 --
394684 
394685 
394686 --
394687 AcctLineType_406 (
394688  p_application_id  => p_application_id
394689  ,p_event_id     => l_event_id
394690  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394691  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394692  ,p_actual_flag => l_actual_flag
394693  ,p_balance_type_code => l_balance_type_code
394694  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394695  
394696  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
394697  , p_source_84 => l_array_source_84(Idx)
394698  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394699  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394700  , p_source_88 => l_array_source_88(Idx)
394701  , p_source_91 => l_array_source_91(Idx)
394702  , p_source_92 => l_array_source_92(Idx)
394703  , p_source_93 => l_array_source_93(Idx)
394704  , p_source_94 => l_array_source_94(Idx)
394705  , p_source_95 => l_array_source_95(Idx)
394706  , p_source_97 => l_array_source_97(Idx)
394707  );
394708 If(l_balance_type_code = 'A') THEN
394709   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394710 END IF;
394711 
394712 --
394713 
394714 
394715 --
394716 AcctLineType_472 (
394717  p_application_id  => p_application_id
394718  ,p_event_id     => l_event_id
394719  ,p_calculate_acctd_flag => l_calculate_acctd_flag
394720  ,p_calculate_g_l_flag => l_calculate_g_l_flag
394721  ,p_actual_flag => l_actual_flag
394722  ,p_balance_type_code => l_balance_type_code
394723  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
394724  
394725  , p_source_11 => l_array_source_11(Idx)
394726  , p_source_84 => l_array_source_84(Idx)
394727  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
394728  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
394729  , p_source_88 => l_array_source_88(Idx)
394730  , p_source_91 => l_array_source_91(Idx)
394731  , p_source_92 => l_array_source_92(Idx)
394732  , p_source_93 => l_array_source_93(Idx)
394733  , p_source_94 => l_array_source_94(Idx)
394734  , p_source_95 => l_array_source_95(Idx)
394735  , p_source_97 => l_array_source_97(Idx)
394736  );
394737 If(l_balance_type_code = 'A') THEN
394738   l_actual_gain_loss_ref := l_gain_or_loss_ref;
394739 END IF;
394740 
394741 --
394742 
394743       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
394744       -- or secondary ledger that has different currency with primary
394745       -- or alc that is calculated by sla
394746       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
394747             (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'))
394748 
394749 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
394750 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
394751           AND (l_actual_flag = 'A')) THEN
394752         XLA_AE_LINES_PKG.CreateGainOrLossLines(
394753           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
394754          ,p_application_id   => p_application_id
394755          ,p_amb_context_code => 'DEFAULT'
394756          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
394757          ,p_event_class_code => C_EVENT_CLASS_CODE
394758          ,p_event_type_code  => C_EVENT_TYPE_CODE
394759          
394760          ,p_gain_ccid        => -1
394761          ,p_loss_ccid        => -1
394762 
394763          ,p_actual_flag      => l_actual_flag
394764          ,p_enc_flag         => null
394765          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
394766          ,p_enc_g_l_ref      => null
394767          );
394768       END IF;
394769    END IF;
394770 END IF;
394771 
394772    ELSE
394773       --
394774       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
394775       --
394776       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
394777          trace
394778             (p_msg      => 'Trancaction revesal option is Y'
394779             ,p_level    => C_LEVEL_STATEMENT
394780             ,p_module   => l_log_module);
394781       END IF;
394782    END IF;
394783 
394784 END LOOP;
394785 l_result := XLA_AE_LINES_PKG.InsertLines ;
394786 end loop;
394787 close line_cur;
394788 
394789 
394790 --
394791 -- insert headers into xla_ae_headers_gt table
394792 --
394793 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
394794 
394795 -- insert into errors table here.
394796 
394797 END LOOP;
394798 
394799 --
394800 -- 4865292
394801 --
394802 -- Compare g_hdr_extract_count with event count in
394803 -- CreateHeadersAndLines.
394804 --
394805 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
394806 
394807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
394808    trace (p_msg     => '# rows extracted from header extract objects '
394809                     || ' (running total): '
394810                     || g_hdr_extract_count
394811          ,p_level   => C_LEVEL_STATEMENT
394812          ,p_module  => l_log_module);
394813 END IF;
394814 
394815 CLOSE header_cur;
394816 --
394817 
394818 --
394819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
394820    trace
394821       (p_msg      => 'END of EventType_601'
394822       ,p_level    => C_LEVEL_PROCEDURE
394823       ,p_module   => l_log_module);
394824 END IF;
394825 --
394826 RETURN l_result;
394827 EXCEPTION
394828 WHEN xla_exceptions_pkg.application_exception THEN
394829    
394830 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
394831 
394832    
394833 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
394834 
394835    RAISE;
394836 
394837 WHEN NO_DATA_FOUND THEN
394838 
394839 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
394840 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
394841 
394842 FOR header_record IN header_cur
394843 LOOP
394844     l_array_header_events(header_record.event_id) := header_record.event_id;
394845 END LOOP;
394846 
394847 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
394848 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
394849 
394850 fnd_file.put_line(fnd_file.LOG, '                    ');
394851 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
394852 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
394853 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
394854 
394855 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
394856 LOOP
394857 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
394858 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
394859         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
394860 	END IF;
394861 END LOOP;
394862 
394863 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
394864 fnd_file.put_line(fnd_file.LOG, '                    ');
394865 
394866 
394867 xla_exceptions_pkg.raise_message
394868       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_601');
394869 
394870 
394871 WHEN OTHERS THEN
394872    xla_exceptions_pkg.raise_message
394873       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_601');
394874 END EventType_601;
394875 --
394876 
394877 ---------------------------------------
394878 --
394879 -- PRIVATE PROCEDURE
394880 --         insert_sources_602
394881 --
394882 ----------------------------------------
394883 --
394884 PROCEDURE insert_sources_602(
394885                                 p_target_ledger_id       IN NUMBER
394886                               , p_language               IN VARCHAR2
394887                               , p_sla_ledger_id          IN NUMBER
394888                               , p_pad_start_date         IN DATE
394889                               , p_pad_end_date           IN DATE
394890                          )
394891 IS
394892 
394893 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_TP';
394894 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
394895 p_apps_owner                   VARCHAR2(30);
394896 l_log_module                   VARCHAR2(240);
394897 BEGIN
394898 IF g_log_enabled THEN
394899       l_log_module := C_DEFAULT_MODULE||'.insert_sources_602';
394900 END IF;
394901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
394902 
394903       trace
394904          (p_msg      => 'BEGIN of insert_sources_602'
394905          ,p_level    => C_LEVEL_PROCEDURE
394906          ,p_module   => l_log_module);
394907 
394908 END IF;
394909 
394910 -- select APPS owner
394911 SELECT oracle_username
394912   INTO p_apps_owner
394913   FROM fnd_oracle_userid
394914  WHERE read_only_flag = 'U'
394915 ;
394916 
394917 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
394918       trace
394919          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
394920                         ' - p_language = '||p_language||
394921                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
394922                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
394923                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
394924                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
394925          ,p_level    => C_LEVEL_STATEMENT
394926          ,p_module   => l_log_module);
394927 END IF;
394928 
394929 
394930 --
394931 INSERT INTO xla_diag_sources --hdr1
394932 (
394933         event_id
394934       , ledger_id
394935       , sla_ledger_id
394936       , description_language
394937       , object_name
394938       , object_type_code
394939       , line_number
394940       , source_application_id
394941       , source_type_code
394942       , source_code
394943       , source_value
394944       , source_meaning
394945       , created_by
394946       , creation_date
394947       , last_update_date
394948       , last_updated_by
394949       , last_update_login
394950       , program_update_date
394951       , program_application_id
394952       , program_id
394953       , request_id
394954 )
394955 SELECT
394956         event_id
394957       , p_target_ledger_id
394958       , p_sla_ledger_id
394959       , p_language
394960       , object_name
394961       , object_type_code
394962       , line_number
394963       , source_application_id
394964       , source_type_code
394965       , source_code
394966       , SUBSTR(source_value ,1,1996)
394967       , SUBSTR(source_meaning,1,200)
394968       , xla_environment_pkg.g_Usr_Id
394969       , TRUNC(SYSDATE)
394970       , TRUNC(SYSDATE)
394971       , xla_environment_pkg.g_Usr_Id
394972       , xla_environment_pkg.g_Login_Id
394973       , TRUNC(SYSDATE)
394974       , xla_environment_pkg.g_Prog_Appl_Id
394975       , xla_environment_pkg.g_Prog_Id
394976       , xla_environment_pkg.g_Req_Id
394977   FROM (
394978        SELECT xet.event_id                  event_id
394979             , 0                             line_number
394980             , CASE r
394981                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
394982                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
394983                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
394984                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
394985                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
394986                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
394987                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
394988                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
394989                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
394990                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
394991                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
394992                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
394993                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
394994                 WHEN 14 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
394995                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
394996                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
394997                 
394998                ELSE null
394999               END                           object_name
395000             , CASE r
395001                 WHEN 1 THEN 'HEADER' 
395002                 WHEN 2 THEN 'HEADER' 
395003                 WHEN 3 THEN 'HEADER' 
395004                 WHEN 4 THEN 'HEADER' 
395005                 WHEN 5 THEN 'HEADER' 
395006                 WHEN 6 THEN 'HEADER' 
395007                 WHEN 7 THEN 'HEADER' 
395008                 WHEN 8 THEN 'HEADER' 
395009                 WHEN 9 THEN 'HEADER' 
395010                 WHEN 10 THEN 'HEADER' 
395011                 WHEN 11 THEN 'HEADER' 
395012                 WHEN 12 THEN 'HEADER' 
395013                 WHEN 13 THEN 'HEADER' 
395014                 WHEN 14 THEN 'HEADER' 
395015                 WHEN 15 THEN 'HEADER' 
395016                 WHEN 16 THEN 'HEADER' 
395017                 
395018                 ELSE null
395019               END                           object_type_code
395020             , CASE r
395021                 WHEN 1 THEN '707' 
395022                 WHEN 2 THEN '707' 
395023                 WHEN 3 THEN '707' 
395024                 WHEN 4 THEN '707' 
395025                 WHEN 5 THEN '707' 
395026                 WHEN 6 THEN '707' 
395027                 WHEN 7 THEN '707' 
395028                 WHEN 8 THEN '707' 
395029                 WHEN 9 THEN '707' 
395030                 WHEN 10 THEN '707' 
395031                 WHEN 11 THEN '707' 
395032                 WHEN 12 THEN '707' 
395033                 WHEN 13 THEN '707' 
395034                 WHEN 14 THEN '707' 
395035                 WHEN 15 THEN '707' 
395036                 WHEN 16 THEN '707' 
395037                 
395038                 ELSE null
395039               END                           source_application_id
395040             , 'S'             source_type_code
395041             , CASE r
395042                 WHEN 1 THEN 'TRANSACTION_ID' 
395043                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
395044                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
395045                 WHEN 4 THEN 'TRANSACTION_UOM' 
395046                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
395047                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
395048                 WHEN 7 THEN 'INTERORG_EXPENSE_ACCOUNT' 
395049                 WHEN 8 THEN 'INTERORG_PAYABLES_ACCOUNT' 
395050                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
395051                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
395052                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
395053                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
395054                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
395055                 WHEN 14 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
395056                 WHEN 15 THEN 'DISTRIBUTION_TYPE' 
395057                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
395058                 
395059                 ELSE null
395060               END                           source_code
395061             , CASE r
395062                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
395063                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
395064                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
395065                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
395066                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
395067                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
395068                 WHEN 7 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
395069                 WHEN 8 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
395070                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
395071                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
395072                 WHEN 11 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
395073                 WHEN 12 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
395074                 WHEN 13 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
395075                 WHEN 14 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
395076                 WHEN 15 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
395077                 WHEN 16 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
395078                 
395079                 ELSE null
395080               END                           source_value
395081             , CASE r
395082                 WHEN 15 THEN fvl85.meaning
395083                 WHEN 16 THEN fvl114.meaning
395084                 
395085                 ELSE null
395086               END               source_meaning
395087         FROM xla_events_gt     xet  
395088       , CST_XLA_INTERORG_PARAMS_REF_V  h1
395089       , CST_XLA_INV_HEADERS_V  h2
395090       , CST_XLA_INV_REF_V  h4
395091       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
395092       , CST_XLA_INV_TXN_TYPES_REF_V  h6
395093       , CST_XLA_PLA_CATEGORY_REF_V  h7
395094   , fnd_lookup_values    fvl85
395095   , fnd_lookup_values    fvl114
395096             ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
395097        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
395098          AND xet.event_type_code = C_EVENT_TYPE_CODE
395099             AND h2.event_id = xet.event_id
395100   AND h1.event_id (+) = h2.event_id
395101  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id  (+) = h2.inventory_item_id  and h5.organization_id  (+) = h2.organization_id AND h6.inv_transaction_type_id  (+) = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id  and h7.pla_cat_item_id   (+) = h2.inventory_item_id  and h7.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
395102   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
395103   AND fvl85.view_application_id(+) = 700
395104   AND fvl85.language(+)            = USERENV('LANG')
395105      AND fvl114.lookup_type(+)         = 'YES_NO'
395106   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
395107   AND fvl114.view_application_id(+) = 0
395108   AND fvl114.language(+)            = USERENV('LANG')
395109   
395110 )
395111 ;
395112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
395113 
395114       trace
395115          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
395116          ,p_level    => C_LEVEL_STATEMENT
395117          ,p_module   => l_log_module);
395118 
395119 END IF;
395120 --
395121 
395122 
395123 
395124 --
395125 INSERT INTO xla_diag_sources --line1
395126 (
395127         event_id
395128       , ledger_id
395129       , sla_ledger_id
395130       , description_language
395131       , object_name
395132       , object_type_code
395133       , line_number
395134       , source_application_id
395135       , source_type_code
395136       , source_code
395137       , source_value
395138       , source_meaning
395139       , created_by
395140       , creation_date
395141       , last_update_date
395142       , last_updated_by
395143       , last_update_login
395144       , program_update_date
395145       , program_application_id
395146       , program_id
395147       , request_id
395148 )
395149 SELECT  event_id
395150       , p_target_ledger_id
395151       , p_sla_ledger_id
395152       , p_language
395153       , object_name
395154       , object_type_code
395155       , line_number
395156       , source_application_id
395157       , source_type_code
395158       , source_code
395159       , SUBSTR(source_value,1,1996)
395160       , SUBSTR(source_meaning,1,200)
395161       , xla_environment_pkg.g_Usr_Id
395162       , TRUNC(SYSDATE)
395163       , TRUNC(SYSDATE)
395164       , xla_environment_pkg.g_Usr_Id
395165       , xla_environment_pkg.g_Login_Id
395166       , TRUNC(SYSDATE)
395167       , xla_environment_pkg.g_Prog_Appl_Id
395168       , xla_environment_pkg.g_Prog_Id
395169       , xla_environment_pkg.g_Req_Id
395170   FROM (
395171        SELECT xet.event_id                  event_id
395172             , l3.line_number                 line_number
395173             , CASE r
395174                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
395175                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
395176                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
395177                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
395178                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
395179                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
395180                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
395181                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
395182                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
395183                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
395184                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
395185                 
395186                ELSE null
395187               END                           object_name
395188             , CASE r
395189                 WHEN 1 THEN 'LINE' 
395190                 WHEN 2 THEN 'LINE' 
395191                 WHEN 3 THEN 'LINE' 
395192                 WHEN 4 THEN 'LINE' 
395193                 WHEN 5 THEN 'LINE' 
395194                 WHEN 6 THEN 'LINE' 
395195                 WHEN 7 THEN 'LINE' 
395196                 WHEN 8 THEN 'LINE' 
395197                 WHEN 9 THEN 'LINE' 
395198                 WHEN 10 THEN 'LINE' 
395199                 WHEN 11 THEN 'LINE' 
395200                 
395201                 ELSE null
395202               END                           object_type_code
395203             , CASE r
395204                 WHEN 1 THEN '707' 
395205                 WHEN 2 THEN '707' 
395206                 WHEN 3 THEN '707' 
395207                 WHEN 4 THEN '707' 
395208                 WHEN 5 THEN '707' 
395209                 WHEN 6 THEN '707' 
395210                 WHEN 7 THEN '707' 
395211                 WHEN 8 THEN '707' 
395212                 WHEN 9 THEN '707' 
395213                 WHEN 10 THEN '707' 
395214                 WHEN 11 THEN '707' 
395215                 
395216                 ELSE null
395217               END                           source_application_id
395218             , 'S'             source_type_code
395219             , CASE r
395220                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
395221                 WHEN 2 THEN 'COST_ELEMENT_ID' 
395222                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
395223                 WHEN 4 THEN 'CURRENCY_CODE' 
395224                 WHEN 5 THEN 'ENTERED_AMOUNT' 
395225                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
395226                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
395227                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
395228                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
395229                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
395230                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
395231                 
395232                 ELSE null
395233               END                           source_code
395234             , CASE r
395235                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
395236                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
395237                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
395238                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
395239                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
395240                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
395241                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
395242                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
395243                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
395244                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
395245                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
395246                 
395247                 ELSE null
395248               END                           source_value
395249             , CASE r
395250                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
395251                           1009615
395252                          ,TO_CHAR(l3.COST_ELEMENT_ID)
395253                          ,'COST_ELEMENT_ID'
395254                          ,'S'
395255                          ,707)
395256                 
395257                 ELSE null
395258               END               source_meaning
395259          FROM  xla_events_gt     xet  
395260         , CST_XLA_INV_LINES_V  l3
395261             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
395262         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
395263           AND xet.event_type_code = C_EVENT_TYPE_CODE
395264             AND l3.event_id          = xet.event_id
395265 
395266 )
395267 ;
395268 --
395269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
395270 
395271       trace
395272          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
395273          ,p_level    => C_LEVEL_STATEMENT
395274          ,p_module   => l_log_module);
395275 
395276 END IF;
395277 
395278 
395279 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
395280       trace
395281          (p_msg      => 'END of insert_sources_602'
395282          ,p_level    => C_LEVEL_PROCEDURE
395283          ,p_module   => l_log_module);
395284 END IF;
395285 EXCEPTION
395286   WHEN xla_exceptions_pkg.application_exception THEN
395287       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
395288             trace
395289                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
395290                ,p_level    => C_LEVEL_EXCEPTION
395291                ,p_module   => l_log_module);
395292       END IF;
395293       RAISE;
395294   WHEN OTHERS THEN
395295       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
395296             trace
395297                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
395298                ,p_level    => C_LEVEL_EXCEPTION
395299                ,p_module   => l_log_module);
395300        END IF;
395301        xla_exceptions_pkg.raise_message
395302            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_602');
395303 END insert_sources_602;
395304 --
395305 
395306 ---------------------------------------
395307 --
395308 -- PRIVATE FUNCTION
395309 --         EventType_602
395310 --
395311 ----------------------------------------
395312 --
395313 FUNCTION EventType_602
395314        (p_application_id         IN NUMBER
395315        ,p_base_ledger_id         IN NUMBER
395316        ,p_target_ledger_id       IN NUMBER
395317        ,p_language               IN VARCHAR2
395318        ,p_currency_code          IN VARCHAR2
395319        ,p_sla_ledger_id          IN NUMBER
395320        ,p_pad_start_date         IN DATE
395321        ,p_pad_end_date           IN DATE
395322        ,p_primary_ledger_id      IN NUMBER)
395323 RETURN BOOLEAN IS
395324 --
395325 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_RCPT_TP';
395326 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
395327 
395328 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
395329 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
395330 --
395331 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395332 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395333 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
395334 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
395335 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395336 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
395337 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
395338 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395339 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
395340 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
395341 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395342 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395343 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395344 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
395345 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
395346 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
395347 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
395348 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
395349 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
395350 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
395351 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
395352 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
395353 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
395354 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
395355 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
395356 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
395357 
395358 l_event_id                             NUMBER;
395359 l_previous_event_id                    NUMBER;
395360 l_first_event_id                       NUMBER;
395361 l_last_event_id                        NUMBER;
395362 
395363 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
395364 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
395365 --
395366 --
395367 l_result                    BOOLEAN := TRUE;
395368 l_rows                      NUMBER  := 1000;
395369 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Receipt, Transfer Price';
395370 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
395371 l_description               VARCHAR2(4000);
395372 l_transaction_reversal      NUMBER;
395373 l_ae_header_id              NUMBER;
395374 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
395375 l_log_module                VARCHAR2(240);
395376 --
395377 l_acct_reversal_source      VARCHAR2(30);
395378 l_trx_reversal_source       VARCHAR2(30);
395379 
395380 l_continue_with_lines       BOOLEAN := TRUE;
395381 --
395382 l_acc_rev_gl_date_source    DATE;                      -- 4262811
395383 --
395384 type t_array_event_id is table of number index by binary_integer;
395385 
395386 l_rec_array_event                    t_rec_array_event;
395387 l_null_rec_array_event               t_rec_array_event;
395388 l_array_ae_header_id                 xla_number_array_type;
395389 l_actual_flag                        VARCHAR2(1) := NULL;
395390 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
395391 l_balance_type_code                  VARCHAR2(1) :=NULL;
395392 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
395393 
395394 --
395395 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
395396 --
395397 
395398 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
395399 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
395400 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
395401 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
395402 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
395403 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395404 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395405 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395406 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395407 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395408 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395409 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395410 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395411 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
395412 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
395413 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
395414 
395415 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
395416 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
395417 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
395418 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
395419 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
395420 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
395421 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
395422 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
395423 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
395424 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
395425 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
395426 
395427 l_array_source_1              t_array_source_1;
395428 l_array_source_2              t_array_source_2;
395429 l_array_source_3              t_array_source_3;
395430 l_array_source_4              t_array_source_4;
395431 l_array_source_5              t_array_source_5;
395432 l_array_source_22              t_array_source_22;
395433 l_array_source_34              t_array_source_34;
395434 l_array_source_35              t_array_source_35;
395435 l_array_source_41              t_array_source_41;
395436 l_array_source_42              t_array_source_42;
395437 l_array_source_43              t_array_source_43;
395438 l_array_source_44              t_array_source_44;
395439 l_array_source_45              t_array_source_45;
395440 l_array_source_59              t_array_source_59;
395441 l_array_source_85              t_array_source_85;
395442 l_array_source_85_meaning      t_array_lookup_meaning;
395443 l_array_source_114              t_array_source_114;
395444 l_array_source_114_meaning      t_array_lookup_meaning;
395445 
395446 l_array_source_11      t_array_source_11;
395447 l_array_source_15      t_array_source_15;
395448 l_array_source_84      t_array_source_84;
395449 l_array_source_88      t_array_source_88;
395450 l_array_source_91      t_array_source_91;
395451 l_array_source_92      t_array_source_92;
395452 l_array_source_93      t_array_source_93;
395453 l_array_source_94      t_array_source_94;
395454 l_array_source_95      t_array_source_95;
395455 l_array_source_97      t_array_source_97;
395456 l_array_source_108      t_array_source_108;
395457 
395458 --
395459 CURSOR header_cur
395460 IS
395461 SELECT /*+ leading(xet) cardinality(xet,1) */
395462 -- Event Type Code: UDIR_INTERORG_RCPT_TP
395463 -- Event Class Code: USER_DEFINE
395464     xet.entity_id
395465   , xet.legal_entity_id
395466   , xet.entity_code
395467   , xet.transaction_number
395468   , xet.event_id
395469   , xet.event_class_code
395470   , xet.event_type_code
395471   , xet.event_number
395472   , xet.event_date
395473   , xet.transaction_date
395474   , xet.reference_num_1
395475   , xet.reference_num_2
395476   , xet.reference_num_3
395477   , xet.reference_num_4
395478   , xet.reference_char_1
395479   , xet.reference_char_2
395480   , xet.reference_char_3
395481   , xet.reference_char_4
395482   , xet.reference_date_1
395483   , xet.reference_date_2
395484   , xet.reference_date_3
395485   , xet.reference_date_4
395486   , xet.event_created_by
395487   , xet.budgetary_control_flag 
395488   , h2.TRANSACTION_ID    source_1
395489   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
395490   , h4.TRANSACTION_QUANTITY    source_3
395491   , h4.TRANSACTION_UOM    source_4
395492   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
395493   , h7.PLA_BRIDGING_ACCOUNT    source_22
395494   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
395495   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
395496   , h7.PLA_MATERIAL_ACCOUNT    source_41
395497   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
395498   , h7.PLA_RESOURCE_ACCOUNT    source_43
395499   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
395500   , h7.PLA_OVERHEAD_ACCOUNT    source_45
395501   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
395502   , h2.DISTRIBUTION_TYPE    source_85
395503   , fvl85.meaning   source_85_meaning
395504   , h2.TRANSFER_TO_GL_INDICATOR    source_114
395505   , fvl114.meaning   source_114_meaning
395506   FROM xla_events_gt     xet 
395507   , CST_XLA_INTERORG_PARAMS_REF_V  h1
395508   , CST_XLA_INV_HEADERS_V  h2
395509   , CST_XLA_INV_REF_V  h4
395510   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
395511   , CST_XLA_INV_TXN_TYPES_REF_V  h6
395512   , CST_XLA_PLA_CATEGORY_REF_V  h7
395513   , fnd_lookup_values    fvl85
395514   , fnd_lookup_values    fvl114
395515  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
395516    and xet.event_type_code = C_EVENT_TYPE_CODE
395517    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
395518   AND h1.event_id (+) = h2.event_id
395519  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h7.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h7.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
395520   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
395521   AND fvl85.view_application_id(+) = 700
395522   AND fvl85.language(+)            = USERENV('LANG')
395523      AND fvl114.lookup_type(+)         = 'YES_NO'
395524   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
395525   AND fvl114.view_application_id(+) = 0
395526   AND fvl114.language(+)            = USERENV('LANG')
395527   
395528  ORDER BY event_id
395529 ;
395530 
395531 
395532 --
395533 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
395534 IS
395535 SELECT /*+ leading(xet) cardinality(xet,1) */
395536 -- Event Type Code: UDIR_INTERORG_RCPT_TP
395537 -- Event Class Code: USER_DEFINE
395538     xet.entity_id
395539    ,xet.legal_entity_id
395540    ,xet.entity_code
395541    ,xet.transaction_number
395542    ,xet.event_id
395543    ,xet.event_class_code
395544    ,xet.event_type_code
395545    ,xet.event_number
395546    ,xet.event_date
395547    ,xet.transaction_date
395548    ,xet.reference_num_1
395549    ,xet.reference_num_2
395550    ,xet.reference_num_3
395551    ,xet.reference_num_4
395552    ,xet.reference_char_1
395553    ,xet.reference_char_2
395554    ,xet.reference_char_3
395555    ,xet.reference_char_4
395556    ,xet.reference_date_1
395557    ,xet.reference_date_2
395558    ,xet.reference_date_3
395559    ,xet.reference_date_4
395560    ,xet.event_created_by
395561    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
395562   , l3.CODE_COMBINATION_ID    source_11
395563   , l3.COST_ELEMENT_ID    source_15
395564   , l3.DISTRIBUTION_IDENTIFIER    source_84
395565   , l3.CURRENCY_CODE    source_88
395566   , l3.ENTERED_AMOUNT    source_91
395567   , l3.CURRENCY_CONVERSION_DATE    source_92
395568   , l3.CURRENCY_CONVERSION_RATE    source_93
395569   , l3.CURRENCY_CONVERSION_TYPE    source_94
395570   , l3.ACCOUNTED_AMOUNT    source_95
395571   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
395572   , l3.L_ORGANIZATION_CODE    source_108
395573   FROM xla_events_gt     xet 
395574   , CST_XLA_INV_LINES_V  l3
395575  WHERE xet.event_id between x_first_event_id and x_last_event_id
395576    and xet.event_date between p_pad_start_date and p_pad_end_date
395577    and xet.event_type_code = C_EVENT_TYPE_CODE
395578    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
395579 ;
395580 
395581 --
395582 BEGIN
395583 IF g_log_enabled THEN
395584    l_log_module := C_DEFAULT_MODULE||'.EventType_602';
395585 END IF;
395586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
395587    trace
395588       (p_msg      => 'BEGIN of EventType_602'
395589       ,p_level    => C_LEVEL_PROCEDURE
395590       ,p_module   => l_log_module);
395591 END IF;
395592 
395593 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
395594    trace
395595       (p_msg      => 'p_application_id = '||p_application_id||
395596                      ' - p_base_ledger_id = '||p_base_ledger_id||
395597                      ' - p_target_ledger_id  = '||p_target_ledger_id||
395598                      ' - p_language = '||p_language||
395599                      ' - p_currency_code = '||p_currency_code||
395600                      ' - p_sla_ledger_id = '||p_sla_ledger_id
395601       ,p_level    => C_LEVEL_STATEMENT
395602       ,p_module   => l_log_module);
395603 END IF;
395604 --
395605 -- initialze arrays
395606 --
395607 g_array_event.DELETE;
395608 l_rec_array_event := l_null_rec_array_event;
395609 --
395610 --------------------------------------
395611 -- 4262811 Initialze MPA Line Number
395612 --------------------------------------
395613 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
395614 
395615 --
395616 
395617 --
395618 OPEN header_cur;
395619 --
395620 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
395621    trace
395622    (p_msg      => 'SQL - FETCH header_cur'
395623    ,p_level    => C_LEVEL_STATEMENT
395624    ,p_module   => l_log_module);
395625 END IF;
395626 --
395627 LOOP
395628 FETCH header_cur BULK COLLECT INTO
395629         l_array_entity_id
395630       , l_array_legal_entity_id
395631       , l_array_entity_code
395632       , l_array_transaction_num
395633       , l_array_event_id
395634       , l_array_class_code
395635       , l_array_event_type
395636       , l_array_event_number
395637       , l_array_event_date
395638       , l_array_transaction_date
395639       , l_array_reference_num_1
395640       , l_array_reference_num_2
395641       , l_array_reference_num_3
395642       , l_array_reference_num_4
395643       , l_array_reference_char_1
395644       , l_array_reference_char_2
395645       , l_array_reference_char_3
395646       , l_array_reference_char_4
395647       , l_array_reference_date_1
395648       , l_array_reference_date_2
395649       , l_array_reference_date_3
395650       , l_array_reference_date_4
395651       , l_array_event_created_by
395652       , l_array_budgetary_control_flag 
395653       , l_array_source_1
395654       , l_array_source_2
395655       , l_array_source_3
395656       , l_array_source_4
395657       , l_array_source_5
395658       , l_array_source_22
395659       , l_array_source_34
395660       , l_array_source_35
395661       , l_array_source_41
395662       , l_array_source_42
395663       , l_array_source_43
395664       , l_array_source_44
395665       , l_array_source_45
395666       , l_array_source_59
395667       , l_array_source_85
395668       , l_array_source_85_meaning
395669       , l_array_source_114
395670       , l_array_source_114_meaning
395671       LIMIT l_rows;
395672 --
395673 IF (C_LEVEL_EVENT >= g_log_level) THEN
395674    trace
395675    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
395676    ,p_level    => C_LEVEL_EVENT
395677    ,p_module   => l_log_module);
395678 END IF;
395679 --
395680 EXIT WHEN l_array_entity_id.COUNT = 0;
395681 
395682 -- initialize arrays
395683 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
395684 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
395685 
395686 --
395687 -- Bug 4458708
395688 --
395689 XLA_AE_LINES_PKG.g_LineNumber := 0;
395690 
395691 
395692 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
395693 g_last_hdr_idx := l_array_event_id.LAST;
395694 --
395695 -- loop for the headers. Each iteration is for each header extract row
395696 -- fetched in header cursor
395697 --
395698 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
395699 
395700 --
395701 -- set event info as cache for other routines to refer event attributes
395702 --
395703 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
395704    (p_application_id           => p_application_id
395705    ,p_primary_ledger_id        => p_primary_ledger_id
395706    ,p_base_ledger_id           => p_base_ledger_id
395707    ,p_target_ledger_id         => p_target_ledger_id
395708    ,p_entity_id                => l_array_entity_id(hdr_idx)
395709    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
395710    ,p_entity_code              => l_array_entity_code(hdr_idx)
395711    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
395712    ,p_event_id                 => l_array_event_id(hdr_idx)
395713    ,p_event_class_code         => l_array_class_code(hdr_idx)
395714    ,p_event_type_code          => l_array_event_type(hdr_idx)
395715    ,p_event_number             => l_array_event_number(hdr_idx)
395716    ,p_event_date               => l_array_event_date(hdr_idx)
395717    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
395718    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
395719    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
395720    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
395721    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
395722    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
395723    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
395724    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
395725    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
395726    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
395727    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
395728    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
395729    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
395730    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
395731    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
395732 
395733 --
395734 -- set the status of entry to C_VALID (0)
395735 --
395736 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
395737 
395738 --
395739 -- initialize a row for ae header
395740 --
395741 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
395742 
395743 l_event_id := l_array_event_id(hdr_idx);
395744 
395745 --
395746 -- storing the hdr_idx for event. May be used by line cursor.
395747 --
395748 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
395749 
395750 --
395751 -- store sources from header extract. This can be improved to
395752 -- store only those sources from header extract that may be used in lines
395753 --
395754 
395755 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
395756 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
395757 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
395758 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
395759 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
395760 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
395761 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
395762 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
395763 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
395764 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
395765 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
395766 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
395767 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
395768 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
395769 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
395770 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
395771 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
395772 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
395773 
395774 --
395775 -- initilaize the status of ae headers for diffrent balance types
395776 -- the status is initialised to C_NOT_CREATED (2)
395777 --
395778 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
395779 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
395780 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
395781 
395782 --
395783 -- call api to validate and store accounting attributes for header
395784 --
395785 
395786 ------------------------------------------------------------
395787 -- Accrual Reversal : to get date for Standard Source (NONE)
395788 ------------------------------------------------------------
395789 l_acc_rev_gl_date_source := NULL;
395790 
395791      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
395792       l_rec_acct_attrs.array_date_value(1) := 
395793 xla_ae_sources_pkg.GetSystemSourceDate(
395794    p_source_code           => 'XLA_REFERENCE_DATE_1'
395795  , p_source_type_code      => 'Y'
395796  , p_source_application_id =>  602
395797 );
395798      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
395799       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
395800 
395801 
395802 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
395803 
395804 XLA_AE_HEADER_PKG.SetJeCategoryName;
395805 
395806 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
395807 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
395808 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
395809 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
395810 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
395811 
395812 
395813 -- No header level analytical criteria
395814 
395815 --
395816 --accounting attribute enhancement, bug 3612931
395817 --
395818 l_trx_reversal_source := SUBSTR(NULL, 1,30);
395819 
395820 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
395821    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
395822 
395823    xla_accounting_err_pkg.build_message
395824       (p_appli_s_name            => 'XLA'
395825       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
395826       ,p_token_1                 => 'ACCT_ATTR_NAME'
395827       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
395828       ,p_token_2                 => 'PRODUCT_NAME'
395829       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
395830       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
395831       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
395832       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
395833 
395834 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
395835    --
395836    -- following sets the accounting attributes needed to reverse
395837    -- accounting for a distributeion
395838    --
395839    xla_ae_lines_pkg.SetTrxReversalAttrs
395840       (p_event_id              => l_event_id
395841       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
395842       ,p_trx_reversal_source   => l_trx_reversal_source);
395843 
395844 END IF;
395845 
395846 
395847 ----------------------------------------------------------------
395848 -- 4262811 -  update the header statuses to invalid in need be
395849 ----------------------------------------------------------------
395850 --
395851 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
395852 
395853 
395854   -----------------------------------------------
395855   -- No accrual reversal for the event class/type
395856   -----------------------------------------------
395857 ----------------------------------------------------------------
395858 
395859 --
395860 -- this ends the header loop iteration for one bulk fetch
395861 --
395862 END LOOP;
395863 
395864 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
395865 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
395866 
395867 --
395868 -- insert dummy rows into lines gt table that were created due to
395869 -- transaction reversals
395870 --
395871 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
395872    l_result := XLA_AE_LINES_PKG.InsertLines;
395873 END IF;
395874 
395875 --
395876 -- reset the temp_line_num for each set of events fetched from header
395877 -- cursor rather than doing it for each new event in line cursor
395878 -- Bug 3939231
395879 --
395880 xla_ae_lines_pkg.g_temp_line_num := 0;
395881 
395882 
395883 
395884 --
395885 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
395886 --
395887 --
395888 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
395889 
395890       trace
395891          (p_msg      => 'SQL - FETCH line_cur'
395892          ,p_level    => C_LEVEL_STATEMENT
395893          ,p_module   => l_log_module);
395894 
395895 END IF;
395896 --
395897 --
395898 LOOP
395899   --
395900   FETCH line_cur BULK COLLECT INTO
395901         l_array_entity_id
395902       , l_array_legal_entity_id
395903       , l_array_entity_code
395904       , l_array_transaction_num
395905       , l_array_event_id
395906       , l_array_class_code
395907       , l_array_event_type
395908       , l_array_event_number
395909       , l_array_event_date
395910       , l_array_transaction_date
395911       , l_array_reference_num_1
395912       , l_array_reference_num_2
395913       , l_array_reference_num_3
395914       , l_array_reference_num_4
395915       , l_array_reference_char_1
395916       , l_array_reference_char_2
395917       , l_array_reference_char_3
395918       , l_array_reference_char_4
395919       , l_array_reference_date_1
395920       , l_array_reference_date_2
395921       , l_array_reference_date_3
395922       , l_array_reference_date_4
395923       , l_array_event_created_by
395924       , l_array_budgetary_control_flag
395925       , l_array_extract_line_num 
395926       , l_array_source_11
395927       , l_array_source_15
395928       , l_array_source_84
395929       , l_array_source_88
395930       , l_array_source_91
395931       , l_array_source_92
395932       , l_array_source_93
395933       , l_array_source_94
395934       , l_array_source_95
395935       , l_array_source_97
395936       , l_array_source_108
395937       LIMIT l_rows;
395938 
395939   --
395940   IF (C_LEVEL_EVENT >= g_log_level) THEN
395941             trace
395942                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
395943                ,p_level    => C_LEVEL_EVENT
395944                ,p_module   => l_log_module);
395945   END IF;
395946   --
395947   EXIT WHEN l_array_entity_id.count = 0;
395948 
395949   XLA_AE_LINES_PKG.g_rec_lines := null;
395950 
395951 --
395952 -- Bug 4458708
395953 --
395954 XLA_AE_LINES_PKG.g_LineNumber := 0;
395955 --
395956 --
395957 
395958 FOR Idx IN 1..l_array_event_id.count LOOP
395959    --
395960    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
395961    --
395962    l_event_id := l_array_event_id(idx);  -- 5648433
395963 
395964    --
395965    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
395966    --
395967 
395968    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
395969              (g_array_event(l_event_id).array_value_num('header_index'))
395970          ,'N'
395971          ) <> 'Y'
395972    THEN
395973       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
395974          trace
395975             (p_msg      => 'Trancaction revesal option is not Y '
395976             ,p_level    => C_LEVEL_STATEMENT
395977             ,p_module   => l_log_module);
395978       END IF;
395979 
395980 --
395981 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
395982 --
395983 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
395984 --
395985 -- set event info as cache for other routines to refer event attributes
395986 --
395987 
395988 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
395989    l_previous_event_id := l_event_id;
395990 
395991    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
395992       (p_application_id           => p_application_id
395993       ,p_primary_ledger_id        => p_primary_ledger_id
395994       ,p_base_ledger_id           => p_base_ledger_id
395995       ,p_target_ledger_id         => p_target_ledger_id
395996       ,p_entity_id                => l_array_entity_id(Idx)
395997       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
395998       ,p_entity_code              => l_array_entity_code(Idx)
395999       ,p_transaction_num          => l_array_transaction_num(Idx)
396000       ,p_event_id                 => l_array_event_id(Idx)
396001       ,p_event_class_code         => l_array_class_code(Idx)
396002       ,p_event_type_code          => l_array_event_type(Idx)
396003       ,p_event_number             => l_array_event_number(Idx)
396004       ,p_event_date               => l_array_event_date(Idx)
396005       ,p_transaction_date         => l_array_transaction_date(Idx)
396006       ,p_reference_num_1          => l_array_reference_num_1(Idx)
396007       ,p_reference_num_2          => l_array_reference_num_2(Idx)
396008       ,p_reference_num_3          => l_array_reference_num_3(Idx)
396009       ,p_reference_num_4          => l_array_reference_num_4(Idx)
396010       ,p_reference_char_1         => l_array_reference_char_1(Idx)
396011       ,p_reference_char_2         => l_array_reference_char_2(Idx)
396012       ,p_reference_char_3         => l_array_reference_char_3(Idx)
396013       ,p_reference_char_4         => l_array_reference_char_4(Idx)
396014       ,p_reference_date_1         => l_array_reference_date_1(Idx)
396015       ,p_reference_date_2         => l_array_reference_date_2(Idx)
396016       ,p_reference_date_3         => l_array_reference_date_3(Idx)
396017       ,p_reference_date_4         => l_array_reference_date_4(Idx)
396018       ,p_event_created_by         => l_array_event_created_by(Idx)
396019       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
396020        --
396021 END IF;
396022 
396023 
396024 
396025 --
396026 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
396027 
396028 l_acct_reversal_source := SUBSTR(NULL, 1,30);
396029 
396030 IF l_continue_with_lines THEN
396031    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
396032       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
396033 
396034       xla_accounting_err_pkg.build_message
396035          (p_appli_s_name            => 'XLA'
396036          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
396037          ,p_token_1                 => 'LINE_NUMBER'
396038          ,p_value_1                 => l_array_extract_line_num(Idx)
396039          ,p_token_2                 => 'PRODUCT_NAME'
396040          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
396041          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
396042          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
396043          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
396044 
396045    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
396046       --
396047       -- following sets the accounting attributes needed to reverse
396048       -- accounting for a distributeion
396049       --
396050 
396051       --
396052       -- 5217187
396053       --
396054       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
396055       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
396056                                        g_array_event(l_event_id).array_value_num('header_index'));
396057       --
396058       --
396059 
396060       -- No reversal code generated
396061 
396062       xla_ae_lines_pkg.SetAcctReversalAttrs
396063          (p_event_id             => l_event_id
396064          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
396065          ,p_calculate_acctd_flag => l_calculate_acctd_flag
396066          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
396067    END IF;
396068 
396069    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
396070        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
396071 
396072 --
396073 AcctLineType_104 (
396074  p_application_id  => p_application_id
396075  ,p_event_id     => l_event_id
396076  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396077  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396078  ,p_actual_flag => l_actual_flag
396079  ,p_balance_type_code => l_balance_type_code
396080  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396081  
396082  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396083  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396084  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396085  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396086  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396087  , p_source_11 => l_array_source_11(Idx)
396088  , p_source_84 => l_array_source_84(Idx)
396089  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396090  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396091  , p_source_88 => l_array_source_88(Idx)
396092  , p_source_91 => l_array_source_91(Idx)
396093  , p_source_92 => l_array_source_92(Idx)
396094  , p_source_93 => l_array_source_93(Idx)
396095  , p_source_94 => l_array_source_94(Idx)
396096  , p_source_95 => l_array_source_95(Idx)
396097  , p_source_97 => l_array_source_97(Idx)
396098  );
396099 If(l_balance_type_code = 'A') THEN
396100   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396101 END IF;
396102 
396103 --
396104 
396105 
396106 --
396107 AcctLineType_145 (
396108  p_application_id  => p_application_id
396109  ,p_event_id     => l_event_id
396110  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396111  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396112  ,p_actual_flag => l_actual_flag
396113  ,p_balance_type_code => l_balance_type_code
396114  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396115  
396116  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396117  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396118  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396119  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396120  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396121  , p_source_11 => l_array_source_11(Idx)
396122  , p_source_84 => l_array_source_84(Idx)
396123  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396124  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396125  , p_source_88 => l_array_source_88(Idx)
396126  , p_source_91 => l_array_source_91(Idx)
396127  , p_source_92 => l_array_source_92(Idx)
396128  , p_source_93 => l_array_source_93(Idx)
396129  , p_source_94 => l_array_source_94(Idx)
396130  , p_source_95 => l_array_source_95(Idx)
396131  , p_source_97 => l_array_source_97(Idx)
396132  );
396133 If(l_balance_type_code = 'A') THEN
396134   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396135 END IF;
396136 
396137 --
396138 
396139 
396140 --
396141 AcctLineType_162 (
396142  p_application_id  => p_application_id
396143  ,p_event_id     => l_event_id
396144  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396145  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396146  ,p_actual_flag => l_actual_flag
396147  ,p_balance_type_code => l_balance_type_code
396148  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396149  
396150  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396151  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396152  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396153  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396154  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396155  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
396156  , p_source_84 => l_array_source_84(Idx)
396157  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396158  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396159  , p_source_88 => l_array_source_88(Idx)
396160  , p_source_91 => l_array_source_91(Idx)
396161  , p_source_92 => l_array_source_92(Idx)
396162  , p_source_93 => l_array_source_93(Idx)
396163  , p_source_94 => l_array_source_94(Idx)
396164  , p_source_95 => l_array_source_95(Idx)
396165  , p_source_97 => l_array_source_97(Idx)
396166  );
396167 If(l_balance_type_code = 'A') THEN
396168   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396169 END IF;
396170 
396171 --
396172 
396173 
396174 --
396175 AcctLineType_186 (
396176  p_application_id  => p_application_id
396177  ,p_event_id     => l_event_id
396178  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396179  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396180  ,p_actual_flag => l_actual_flag
396181  ,p_balance_type_code => l_balance_type_code
396182  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396183  
396184  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396185  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396186  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396187  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396188  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396189  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
396190  , p_source_84 => l_array_source_84(Idx)
396191  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396192  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396193  , p_source_88 => l_array_source_88(Idx)
396194  , p_source_91 => l_array_source_91(Idx)
396195  , p_source_92 => l_array_source_92(Idx)
396196  , p_source_93 => l_array_source_93(Idx)
396197  , p_source_94 => l_array_source_94(Idx)
396198  , p_source_95 => l_array_source_95(Idx)
396199  , p_source_97 => l_array_source_97(Idx)
396200  );
396201 If(l_balance_type_code = 'A') THEN
396202   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396203 END IF;
396204 
396205 --
396206 
396207 
396208 --
396209 AcctLineType_209 (
396210  p_application_id  => p_application_id
396211  ,p_event_id     => l_event_id
396212  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396213  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396214  ,p_actual_flag => l_actual_flag
396215  ,p_balance_type_code => l_balance_type_code
396216  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396217  
396218  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396219  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396220  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396221  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396222  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396223  , p_source_11 => l_array_source_11(Idx)
396224  , p_source_84 => l_array_source_84(Idx)
396225  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396226  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396227  , p_source_88 => l_array_source_88(Idx)
396228  , p_source_91 => l_array_source_91(Idx)
396229  , p_source_92 => l_array_source_92(Idx)
396230  , p_source_93 => l_array_source_93(Idx)
396231  , p_source_94 => l_array_source_94(Idx)
396232  , p_source_95 => l_array_source_95(Idx)
396233  , p_source_97 => l_array_source_97(Idx)
396234  );
396235 If(l_balance_type_code = 'A') THEN
396236   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396237 END IF;
396238 
396239 --
396240 
396241 
396242 --
396243 AcctLineType_243 (
396244  p_application_id  => p_application_id
396245  ,p_event_id     => l_event_id
396246  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396247  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396248  ,p_actual_flag => l_actual_flag
396249  ,p_balance_type_code => l_balance_type_code
396250  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396251  
396252  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396253  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396254  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396255  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396256  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396257  , p_source_15 => l_array_source_15(Idx)
396258  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
396259  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
396260  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
396261  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
396262  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
396263  , p_source_84 => l_array_source_84(Idx)
396264  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396265  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396266  , p_source_88 => l_array_source_88(Idx)
396267  , p_source_91 => l_array_source_91(Idx)
396268  , p_source_92 => l_array_source_92(Idx)
396269  , p_source_93 => l_array_source_93(Idx)
396270  , p_source_94 => l_array_source_94(Idx)
396271  , p_source_95 => l_array_source_95(Idx)
396272  , p_source_97 => l_array_source_97(Idx)
396273  , p_source_108 => l_array_source_108(Idx)
396274  );
396275 If(l_balance_type_code = 'A') THEN
396276   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396277 END IF;
396278 
396279 --
396280 
396281 
396282 --
396283 AcctLineType_305 (
396284  p_application_id  => p_application_id
396285  ,p_event_id     => l_event_id
396286  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396287  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396288  ,p_actual_flag => l_actual_flag
396289  ,p_balance_type_code => l_balance_type_code
396290  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396291  
396292  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396293  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396294  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396295  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396296  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396297  , p_source_11 => l_array_source_11(Idx)
396298  , p_source_84 => l_array_source_84(Idx)
396299  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396300  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396301  , p_source_88 => l_array_source_88(Idx)
396302  , p_source_91 => l_array_source_91(Idx)
396303  , p_source_92 => l_array_source_92(Idx)
396304  , p_source_93 => l_array_source_93(Idx)
396305  , p_source_94 => l_array_source_94(Idx)
396306  , p_source_95 => l_array_source_95(Idx)
396307  , p_source_97 => l_array_source_97(Idx)
396308  );
396309 If(l_balance_type_code = 'A') THEN
396310   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396311 END IF;
396312 
396313 --
396314 
396315 
396316 --
396317 AcctLineType_333 (
396318  p_application_id  => p_application_id
396319  ,p_event_id     => l_event_id
396320  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396321  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396322  ,p_actual_flag => l_actual_flag
396323  ,p_balance_type_code => l_balance_type_code
396324  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396325  
396326  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396327  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396328  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396329  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396330  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396331  , p_source_11 => l_array_source_11(Idx)
396332  , p_source_84 => l_array_source_84(Idx)
396333  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396334  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396335  , p_source_88 => l_array_source_88(Idx)
396336  , p_source_91 => l_array_source_91(Idx)
396337  , p_source_92 => l_array_source_92(Idx)
396338  , p_source_93 => l_array_source_93(Idx)
396339  , p_source_94 => l_array_source_94(Idx)
396340  , p_source_95 => l_array_source_95(Idx)
396341  , p_source_97 => l_array_source_97(Idx)
396342  );
396343 If(l_balance_type_code = 'A') THEN
396344   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396345 END IF;
396346 
396347 --
396348 
396349 
396350 --
396351 AcctLineType_380 (
396352  p_application_id  => p_application_id
396353  ,p_event_id     => l_event_id
396354  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396355  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396356  ,p_actual_flag => l_actual_flag
396357  ,p_balance_type_code => l_balance_type_code
396358  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396359  
396360  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396361  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396362  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396363  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396364  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396365  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
396366  , p_source_84 => l_array_source_84(Idx)
396367  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396368  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396369  , p_source_88 => l_array_source_88(Idx)
396370  , p_source_91 => l_array_source_91(Idx)
396371  , p_source_92 => l_array_source_92(Idx)
396372  , p_source_93 => l_array_source_93(Idx)
396373  , p_source_94 => l_array_source_94(Idx)
396374  , p_source_95 => l_array_source_95(Idx)
396375  , p_source_97 => l_array_source_97(Idx)
396376  );
396377 If(l_balance_type_code = 'A') THEN
396378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396379 END IF;
396380 
396381 --
396382 
396383 
396384 --
396385 AcctLineType_405 (
396386  p_application_id  => p_application_id
396387  ,p_event_id     => l_event_id
396388  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396389  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396390  ,p_actual_flag => l_actual_flag
396391  ,p_balance_type_code => l_balance_type_code
396392  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396393  
396394  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396395  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396396  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396397  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396398  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396399  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
396400  , p_source_84 => l_array_source_84(Idx)
396401  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396402  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396403  , p_source_88 => l_array_source_88(Idx)
396404  , p_source_91 => l_array_source_91(Idx)
396405  , p_source_92 => l_array_source_92(Idx)
396406  , p_source_93 => l_array_source_93(Idx)
396407  , p_source_94 => l_array_source_94(Idx)
396408  , p_source_95 => l_array_source_95(Idx)
396409  , p_source_97 => l_array_source_97(Idx)
396410  );
396411 If(l_balance_type_code = 'A') THEN
396412   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396413 END IF;
396414 
396415 --
396416 
396417 
396418 --
396419 AcctLineType_483 (
396420  p_application_id  => p_application_id
396421  ,p_event_id     => l_event_id
396422  ,p_calculate_acctd_flag => l_calculate_acctd_flag
396423  ,p_calculate_g_l_flag => l_calculate_g_l_flag
396424  ,p_actual_flag => l_actual_flag
396425  ,p_balance_type_code => l_balance_type_code
396426  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
396427  
396428  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
396429  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
396430  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
396431  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
396432  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
396433  , p_source_11 => l_array_source_11(Idx)
396434  , p_source_84 => l_array_source_84(Idx)
396435  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
396436  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
396437  , p_source_88 => l_array_source_88(Idx)
396438  , p_source_91 => l_array_source_91(Idx)
396439  , p_source_92 => l_array_source_92(Idx)
396440  , p_source_93 => l_array_source_93(Idx)
396441  , p_source_94 => l_array_source_94(Idx)
396442  , p_source_95 => l_array_source_95(Idx)
396443  , p_source_97 => l_array_source_97(Idx)
396444  );
396445 If(l_balance_type_code = 'A') THEN
396446   l_actual_gain_loss_ref := l_gain_or_loss_ref;
396447 END IF;
396448 
396449 --
396450 
396451       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
396452       -- or secondary ledger that has different currency with primary
396453       -- or alc that is calculated by sla
396454       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
396455             (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'))
396456 
396457 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
396458 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
396459           AND (l_actual_flag = 'A')) THEN
396460         XLA_AE_LINES_PKG.CreateGainOrLossLines(
396461           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
396462          ,p_application_id   => p_application_id
396463          ,p_amb_context_code => 'DEFAULT'
396464          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
396465          ,p_event_class_code => C_EVENT_CLASS_CODE
396466          ,p_event_type_code  => C_EVENT_TYPE_CODE
396467          
396468          ,p_gain_ccid        => -1
396469          ,p_loss_ccid        => -1
396470 
396471          ,p_actual_flag      => l_actual_flag
396472          ,p_enc_flag         => null
396473          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
396474          ,p_enc_g_l_ref      => null
396475          );
396476       END IF;
396477    END IF;
396478 END IF;
396479 
396480    ELSE
396481       --
396482       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
396483       --
396484       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
396485          trace
396486             (p_msg      => 'Trancaction revesal option is Y'
396487             ,p_level    => C_LEVEL_STATEMENT
396488             ,p_module   => l_log_module);
396489       END IF;
396490    END IF;
396491 
396492 END LOOP;
396493 l_result := XLA_AE_LINES_PKG.InsertLines ;
396494 end loop;
396495 close line_cur;
396496 
396497 
396498 --
396499 -- insert headers into xla_ae_headers_gt table
396500 --
396501 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
396502 
396503 -- insert into errors table here.
396504 
396505 END LOOP;
396506 
396507 --
396508 -- 4865292
396509 --
396510 -- Compare g_hdr_extract_count with event count in
396511 -- CreateHeadersAndLines.
396512 --
396513 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
396514 
396515 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
396516    trace (p_msg     => '# rows extracted from header extract objects '
396517                     || ' (running total): '
396518                     || g_hdr_extract_count
396519          ,p_level   => C_LEVEL_STATEMENT
396520          ,p_module  => l_log_module);
396521 END IF;
396522 
396523 CLOSE header_cur;
396524 --
396525 
396526 --
396527 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
396528    trace
396529       (p_msg      => 'END of EventType_602'
396530       ,p_level    => C_LEVEL_PROCEDURE
396531       ,p_module   => l_log_module);
396532 END IF;
396533 --
396534 RETURN l_result;
396535 EXCEPTION
396536 WHEN xla_exceptions_pkg.application_exception THEN
396537    
396538 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
396539 
396540    
396541 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
396542 
396543    RAISE;
396544 
396545 WHEN NO_DATA_FOUND THEN
396546 
396547 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
396548 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
396549 
396550 FOR header_record IN header_cur
396551 LOOP
396552     l_array_header_events(header_record.event_id) := header_record.event_id;
396553 END LOOP;
396554 
396555 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
396556 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
396557 
396558 fnd_file.put_line(fnd_file.LOG, '                    ');
396559 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
396560 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
396561 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
396562 
396563 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
396564 LOOP
396565 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
396566 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
396567         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
396568 	END IF;
396569 END LOOP;
396570 
396571 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
396572 fnd_file.put_line(fnd_file.LOG, '                    ');
396573 
396574 
396575 xla_exceptions_pkg.raise_message
396576       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_602');
396577 
396578 
396579 WHEN OTHERS THEN
396580    xla_exceptions_pkg.raise_message
396581       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_602');
396582 END EventType_602;
396583 --
396584 
396585 ---------------------------------------
396586 --
396587 -- PRIVATE PROCEDURE
396588 --         insert_sources_603
396589 --
396590 ----------------------------------------
396591 --
396592 PROCEDURE insert_sources_603(
396593                                 p_target_ledger_id       IN NUMBER
396594                               , p_language               IN VARCHAR2
396595                               , p_sla_ledger_id          IN NUMBER
396596                               , p_pad_start_date         IN DATE
396597                               , p_pad_end_date           IN DATE
396598                          )
396599 IS
396600 
396601 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP';
396602 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
396603 p_apps_owner                   VARCHAR2(30);
396604 l_log_module                   VARCHAR2(240);
396605 BEGIN
396606 IF g_log_enabled THEN
396607       l_log_module := C_DEFAULT_MODULE||'.insert_sources_603';
396608 END IF;
396609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
396610 
396611       trace
396612          (p_msg      => 'BEGIN of insert_sources_603'
396613          ,p_level    => C_LEVEL_PROCEDURE
396614          ,p_module   => l_log_module);
396615 
396616 END IF;
396617 
396618 -- select APPS owner
396619 SELECT oracle_username
396620   INTO p_apps_owner
396621   FROM fnd_oracle_userid
396622  WHERE read_only_flag = 'U'
396623 ;
396624 
396625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
396626       trace
396627          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
396628                         ' - p_language = '||p_language||
396629                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
396630                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
396631                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
396632                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
396633          ,p_level    => C_LEVEL_STATEMENT
396634          ,p_module   => l_log_module);
396635 END IF;
396636 
396637 
396638 --
396639 INSERT INTO xla_diag_sources --hdr1
396640 (
396641         event_id
396642       , ledger_id
396643       , sla_ledger_id
396644       , description_language
396645       , object_name
396646       , object_type_code
396647       , line_number
396648       , source_application_id
396649       , source_type_code
396650       , source_code
396651       , source_value
396652       , source_meaning
396653       , created_by
396654       , creation_date
396655       , last_update_date
396656       , last_updated_by
396657       , last_update_login
396658       , program_update_date
396659       , program_application_id
396660       , program_id
396661       , request_id
396662 )
396663 SELECT
396664         event_id
396665       , p_target_ledger_id
396666       , p_sla_ledger_id
396667       , p_language
396668       , object_name
396669       , object_type_code
396670       , line_number
396671       , source_application_id
396672       , source_type_code
396673       , source_code
396674       , SUBSTR(source_value ,1,1996)
396675       , SUBSTR(source_meaning,1,200)
396676       , xla_environment_pkg.g_Usr_Id
396677       , TRUNC(SYSDATE)
396678       , TRUNC(SYSDATE)
396679       , xla_environment_pkg.g_Usr_Id
396680       , xla_environment_pkg.g_Login_Id
396681       , TRUNC(SYSDATE)
396682       , xla_environment_pkg.g_Prog_Appl_Id
396683       , xla_environment_pkg.g_Prog_Id
396684       , xla_environment_pkg.g_Req_Id
396685   FROM (
396686        SELECT xet.event_id                  event_id
396687             , 0                             line_number
396688             , CASE r
396689                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
396690                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
396691                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
396692                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
396693                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
396694                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
396695                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
396696                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
396697                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
396698                 WHEN 10 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
396699                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
396700                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
396701                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
396702                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
396703                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
396704                 WHEN 16 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
396705                 WHEN 17 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
396706                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
396707                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
396708                 
396709                ELSE null
396710               END                           object_name
396711             , CASE r
396712                 WHEN 1 THEN 'HEADER' 
396713                 WHEN 2 THEN 'HEADER' 
396714                 WHEN 3 THEN 'HEADER' 
396715                 WHEN 4 THEN 'HEADER' 
396716                 WHEN 5 THEN 'HEADER' 
396717                 WHEN 6 THEN 'HEADER' 
396718                 WHEN 7 THEN 'HEADER' 
396719                 WHEN 8 THEN 'HEADER' 
396720                 WHEN 9 THEN 'HEADER' 
396721                 WHEN 10 THEN 'HEADER' 
396722                 WHEN 11 THEN 'HEADER' 
396723                 WHEN 12 THEN 'HEADER' 
396724                 WHEN 13 THEN 'HEADER' 
396725                 WHEN 14 THEN 'HEADER' 
396726                 WHEN 15 THEN 'HEADER' 
396727                 WHEN 16 THEN 'HEADER' 
396728                 WHEN 17 THEN 'HEADER' 
396729                 WHEN 18 THEN 'HEADER' 
396730                 WHEN 19 THEN 'HEADER' 
396731                 
396732                 ELSE null
396733               END                           object_type_code
396734             , CASE r
396735                 WHEN 1 THEN '707' 
396736                 WHEN 2 THEN '707' 
396737                 WHEN 3 THEN '707' 
396738                 WHEN 4 THEN '707' 
396739                 WHEN 5 THEN '707' 
396740                 WHEN 6 THEN '707' 
396741                 WHEN 7 THEN '707' 
396742                 WHEN 8 THEN '707' 
396743                 WHEN 9 THEN '707' 
396744                 WHEN 10 THEN '707' 
396745                 WHEN 11 THEN '707' 
396746                 WHEN 12 THEN '707' 
396747                 WHEN 13 THEN '707' 
396748                 WHEN 14 THEN '707' 
396749                 WHEN 15 THEN '707' 
396750                 WHEN 16 THEN '707' 
396751                 WHEN 17 THEN '707' 
396752                 WHEN 18 THEN '707' 
396753                 WHEN 19 THEN '707' 
396754                 
396755                 ELSE null
396756               END                           source_application_id
396757             , 'S'             source_type_code
396758             , CASE r
396759                 WHEN 1 THEN 'TRANSACTION_ID' 
396760                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
396761                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
396762                 WHEN 4 THEN 'TRANSACTION_UOM' 
396763                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
396764                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
396765                 WHEN 7 THEN 'INV_TXN_TRANSPO_DIST_ACCT' 
396766                 WHEN 8 THEN 'INTERORG_REVENUE_ACCOUNT' 
396767                 WHEN 9 THEN 'INTERORG_PAYABLES_ACCOUNT' 
396768                 WHEN 10 THEN 'INTERORG_TXFR_CREDIT_ACCOUNT' 
396769                 WHEN 11 THEN 'PLA_MATERIAL_ACCOUNT' 
396770                 WHEN 12 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
396771                 WHEN 13 THEN 'PLA_RESOURCE_ACCOUNT' 
396772                 WHEN 14 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
396773                 WHEN 15 THEN 'PLA_OVERHEAD_ACCOUNT' 
396774                 WHEN 16 THEN 'INV_ORG_PUR_PRICE_VAR_ACCT' 
396775                 WHEN 17 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
396776                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
396777                 WHEN 19 THEN 'TRANSFER_TO_GL_INDICATOR' 
396778                 
396779                 ELSE null
396780               END                           source_code
396781             , CASE r
396782                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
396783                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
396784                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
396785                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
396786                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
396787                 WHEN 6 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
396788                 WHEN 7 THEN TO_CHAR(h5.INV_TXN_TRANSPO_DIST_ACCT)
396789                 WHEN 8 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
396790                 WHEN 9 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
396791                 WHEN 10 THEN TO_CHAR(h1.INTERORG_TXFR_CREDIT_ACCOUNT)
396792                 WHEN 11 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
396793                 WHEN 12 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
396794                 WHEN 13 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
396795                 WHEN 14 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
396796                 WHEN 15 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
396797                 WHEN 16 THEN TO_CHAR(h4.INV_ORG_PUR_PRICE_VAR_ACCT)
396798                 WHEN 17 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
396799                 WHEN 18 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
396800                 WHEN 19 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
396801                 
396802                 ELSE null
396803               END                           source_value
396804             , CASE r
396805                 WHEN 18 THEN fvl85.meaning
396806                 WHEN 19 THEN fvl114.meaning
396807                 
396808                 ELSE null
396809               END               source_meaning
396810         FROM xla_events_gt     xet  
396811       , CST_XLA_INTERORG_PARAMS_REF_V  h1
396812       , CST_XLA_INV_HEADERS_V  h2
396813       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
396814       , CST_XLA_INV_REF_V  h5
396815       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
396816       , CST_XLA_INV_TXN_TYPES_REF_V  h7
396817       , CST_XLA_PLA_CATEGORY_REF_V  h8
396818   , fnd_lookup_values    fvl85
396819   , fnd_lookup_values    fvl114
396820             ,(select rownum r from all_objects where rownum <= 19 and owner = p_apps_owner)
396821        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
396822          AND xet.event_type_code = C_EVENT_TYPE_CODE
396823             AND h2.event_id = xet.event_id
396824   AND h1.event_id (+) = h2.event_id
396825  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id  (+) = h2.inventory_item_id  and h6.organization_id  (+) = h2.organization_id AND h7.inv_transaction_type_id  (+) = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id  and h8.pla_cat_item_id   (+) = h2.inventory_item_id  and h8.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
396826   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
396827   AND fvl85.view_application_id(+) = 700
396828   AND fvl85.language(+)            = USERENV('LANG')
396829      AND fvl114.lookup_type(+)         = 'YES_NO'
396830   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
396831   AND fvl114.view_application_id(+) = 0
396832   AND fvl114.language(+)            = USERENV('LANG')
396833   
396834 )
396835 ;
396836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
396837 
396838       trace
396839          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
396840          ,p_level    => C_LEVEL_STATEMENT
396841          ,p_module   => l_log_module);
396842 
396843 END IF;
396844 --
396845 
396846 
396847 
396848 --
396849 INSERT INTO xla_diag_sources --line1
396850 (
396851         event_id
396852       , ledger_id
396853       , sla_ledger_id
396854       , description_language
396855       , object_name
396856       , object_type_code
396857       , line_number
396858       , source_application_id
396859       , source_type_code
396860       , source_code
396861       , source_value
396862       , source_meaning
396863       , created_by
396864       , creation_date
396865       , last_update_date
396866       , last_updated_by
396867       , last_update_login
396868       , program_update_date
396869       , program_application_id
396870       , program_id
396871       , request_id
396872 )
396873 SELECT  event_id
396874       , p_target_ledger_id
396875       , p_sla_ledger_id
396876       , p_language
396877       , object_name
396878       , object_type_code
396879       , line_number
396880       , source_application_id
396881       , source_type_code
396882       , source_code
396883       , SUBSTR(source_value,1,1996)
396884       , SUBSTR(source_meaning,1,200)
396885       , xla_environment_pkg.g_Usr_Id
396886       , TRUNC(SYSDATE)
396887       , TRUNC(SYSDATE)
396888       , xla_environment_pkg.g_Usr_Id
396889       , xla_environment_pkg.g_Login_Id
396890       , TRUNC(SYSDATE)
396891       , xla_environment_pkg.g_Prog_Appl_Id
396892       , xla_environment_pkg.g_Prog_Id
396893       , xla_environment_pkg.g_Req_Id
396894   FROM (
396895        SELECT xet.event_id                  event_id
396896             , l3.line_number                 line_number
396897             , CASE r
396898                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
396899                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
396900                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
396901                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
396902                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
396903                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
396904                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
396905                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
396906                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
396907                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
396908                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
396909                 
396910                ELSE null
396911               END                           object_name
396912             , CASE r
396913                 WHEN 1 THEN 'LINE' 
396914                 WHEN 2 THEN 'LINE' 
396915                 WHEN 3 THEN 'LINE' 
396916                 WHEN 4 THEN 'LINE' 
396917                 WHEN 5 THEN 'LINE' 
396918                 WHEN 6 THEN 'LINE' 
396919                 WHEN 7 THEN 'LINE' 
396920                 WHEN 8 THEN 'LINE' 
396921                 WHEN 9 THEN 'LINE' 
396922                 WHEN 10 THEN 'LINE' 
396923                 WHEN 11 THEN 'LINE' 
396924                 
396925                 ELSE null
396926               END                           object_type_code
396927             , CASE r
396928                 WHEN 1 THEN '707' 
396929                 WHEN 2 THEN '707' 
396930                 WHEN 3 THEN '707' 
396931                 WHEN 4 THEN '707' 
396932                 WHEN 5 THEN '707' 
396933                 WHEN 6 THEN '707' 
396934                 WHEN 7 THEN '707' 
396935                 WHEN 8 THEN '707' 
396936                 WHEN 9 THEN '707' 
396937                 WHEN 10 THEN '707' 
396938                 WHEN 11 THEN '707' 
396939                 
396940                 ELSE null
396941               END                           source_application_id
396942             , 'S'             source_type_code
396943             , CASE r
396944                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
396945                 WHEN 2 THEN 'COST_ELEMENT_ID' 
396946                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
396947                 WHEN 4 THEN 'CURRENCY_CODE' 
396948                 WHEN 5 THEN 'ENTERED_AMOUNT' 
396949                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
396950                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
396951                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
396952                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
396953                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
396954                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
396955                 
396956                 ELSE null
396957               END                           source_code
396958             , CASE r
396959                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
396960                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
396961                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
396962                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
396963                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
396964                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
396965                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
396966                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
396967                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
396968                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
396969                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
396970                 
396971                 ELSE null
396972               END                           source_value
396973             , CASE r
396974                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
396975                           1009615
396976                          ,TO_CHAR(l3.COST_ELEMENT_ID)
396977                          ,'COST_ELEMENT_ID'
396978                          ,'S'
396979                          ,707)
396980                 
396981                 ELSE null
396982               END               source_meaning
396983          FROM  xla_events_gt     xet  
396984         , CST_XLA_INV_LINES_V  l3
396985             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
396986         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
396987           AND xet.event_type_code = C_EVENT_TYPE_CODE
396988             AND l3.event_id          = xet.event_id
396989 
396990 )
396991 ;
396992 --
396993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
396994 
396995       trace
396996          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
396997          ,p_level    => C_LEVEL_STATEMENT
396998          ,p_module   => l_log_module);
396999 
397000 END IF;
397001 
397002 
397003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
397004       trace
397005          (p_msg      => 'END of insert_sources_603'
397006          ,p_level    => C_LEVEL_PROCEDURE
397007          ,p_module   => l_log_module);
397008 END IF;
397009 EXCEPTION
397010   WHEN xla_exceptions_pkg.application_exception THEN
397011       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
397012             trace
397013                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
397014                ,p_level    => C_LEVEL_EXCEPTION
397015                ,p_module   => l_log_module);
397016       END IF;
397017       RAISE;
397018   WHEN OTHERS THEN
397019       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
397020             trace
397021                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
397022                ,p_level    => C_LEVEL_EXCEPTION
397023                ,p_module   => l_log_module);
397024        END IF;
397025        xla_exceptions_pkg.raise_message
397026            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_603');
397027 END insert_sources_603;
397028 --
397029 
397030 ---------------------------------------
397031 --
397032 -- PRIVATE FUNCTION
397033 --         EventType_603
397034 --
397035 ----------------------------------------
397036 --
397037 FUNCTION EventType_603
397038        (p_application_id         IN NUMBER
397039        ,p_base_ledger_id         IN NUMBER
397040        ,p_target_ledger_id       IN NUMBER
397041        ,p_language               IN VARCHAR2
397042        ,p_currency_code          IN VARCHAR2
397043        ,p_sla_ledger_id          IN NUMBER
397044        ,p_pad_start_date         IN DATE
397045        ,p_pad_end_date           IN DATE
397046        ,p_primary_ledger_id      IN NUMBER)
397047 RETURN BOOLEAN IS
397048 --
397049 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP';
397050 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
397051 
397052 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
397053 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
397054 --
397055 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397056 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397057 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
397058 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
397059 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397060 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
397061 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
397062 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397063 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
397064 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
397065 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397066 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397067 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397068 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
397069 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
397070 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
397071 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
397072 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
397073 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
397074 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
397075 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
397076 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
397077 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
397078 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
397079 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
397080 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
397081 
397082 l_event_id                             NUMBER;
397083 l_previous_event_id                    NUMBER;
397084 l_first_event_id                       NUMBER;
397085 l_last_event_id                        NUMBER;
397086 
397087 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
397088 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
397089 --
397090 --
397091 l_result                    BOOLEAN := TRUE;
397092 l_rows                      NUMBER  := 1000;
397093 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment';
397094 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
397095 l_description               VARCHAR2(4000);
397096 l_transaction_reversal      NUMBER;
397097 l_ae_header_id              NUMBER;
397098 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
397099 l_log_module                VARCHAR2(240);
397100 --
397101 l_acct_reversal_source      VARCHAR2(30);
397102 l_trx_reversal_source       VARCHAR2(30);
397103 
397104 l_continue_with_lines       BOOLEAN := TRUE;
397105 --
397106 l_acc_rev_gl_date_source    DATE;                      -- 4262811
397107 --
397108 type t_array_event_id is table of number index by binary_integer;
397109 
397110 l_rec_array_event                    t_rec_array_event;
397111 l_null_rec_array_event               t_rec_array_event;
397112 l_array_ae_header_id                 xla_number_array_type;
397113 l_actual_flag                        VARCHAR2(1) := NULL;
397114 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
397115 l_balance_type_code                  VARCHAR2(1) :=NULL;
397116 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
397117 
397118 --
397119 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
397120 --
397121 
397122 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
397123 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
397124 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
397125 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
397126 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
397127 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397128 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_TRANSPO_DIST_ACCT%TYPE INDEX BY BINARY_INTEGER;
397129 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397130 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397131 TYPE t_array_source_40 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_TXFR_CREDIT_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397132 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397133 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397134 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397135 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397136 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397137 TYPE t_array_source_58 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_PUR_PRICE_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
397138 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
397139 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
397140 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
397141 
397142 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
397143 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
397144 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
397145 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
397146 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
397147 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
397148 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
397149 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
397150 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
397151 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
397152 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
397153 
397154 l_array_source_1              t_array_source_1;
397155 l_array_source_2              t_array_source_2;
397156 l_array_source_3              t_array_source_3;
397157 l_array_source_4              t_array_source_4;
397158 l_array_source_5              t_array_source_5;
397159 l_array_source_22              t_array_source_22;
397160 l_array_source_32              t_array_source_32;
397161 l_array_source_33              t_array_source_33;
397162 l_array_source_35              t_array_source_35;
397163 l_array_source_40              t_array_source_40;
397164 l_array_source_41              t_array_source_41;
397165 l_array_source_42              t_array_source_42;
397166 l_array_source_43              t_array_source_43;
397167 l_array_source_44              t_array_source_44;
397168 l_array_source_45              t_array_source_45;
397169 l_array_source_58              t_array_source_58;
397170 l_array_source_59              t_array_source_59;
397171 l_array_source_85              t_array_source_85;
397172 l_array_source_85_meaning      t_array_lookup_meaning;
397173 l_array_source_114              t_array_source_114;
397174 l_array_source_114_meaning      t_array_lookup_meaning;
397175 
397176 l_array_source_11      t_array_source_11;
397177 l_array_source_15      t_array_source_15;
397178 l_array_source_84      t_array_source_84;
397179 l_array_source_88      t_array_source_88;
397180 l_array_source_91      t_array_source_91;
397181 l_array_source_92      t_array_source_92;
397182 l_array_source_93      t_array_source_93;
397183 l_array_source_94      t_array_source_94;
397184 l_array_source_95      t_array_source_95;
397185 l_array_source_97      t_array_source_97;
397186 l_array_source_108      t_array_source_108;
397187 
397188 --
397189 CURSOR header_cur
397190 IS
397191 SELECT /*+ leading(xet) cardinality(xet,1) */
397192 -- Event Type Code: UDIR_INTERORG_SHIP
397193 -- Event Class Code: USER_DEFINE
397194     xet.entity_id
397195   , xet.legal_entity_id
397196   , xet.entity_code
397197   , xet.transaction_number
397198   , xet.event_id
397199   , xet.event_class_code
397200   , xet.event_type_code
397201   , xet.event_number
397202   , xet.event_date
397203   , xet.transaction_date
397204   , xet.reference_num_1
397205   , xet.reference_num_2
397206   , xet.reference_num_3
397207   , xet.reference_num_4
397208   , xet.reference_char_1
397209   , xet.reference_char_2
397210   , xet.reference_char_3
397211   , xet.reference_char_4
397212   , xet.reference_date_1
397213   , xet.reference_date_2
397214   , xet.reference_date_3
397215   , xet.reference_date_4
397216   , xet.event_created_by
397217   , xet.budgetary_control_flag 
397218   , h2.TRANSACTION_ID    source_1
397219   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
397220   , h5.TRANSACTION_QUANTITY    source_3
397221   , h5.TRANSACTION_UOM    source_4
397222   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
397223   , h8.PLA_BRIDGING_ACCOUNT    source_22
397224   , h5.INV_TXN_TRANSPO_DIST_ACCT    source_32
397225   , h1.INTERORG_REVENUE_ACCOUNT    source_33
397226   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
397227   , h1.INTERORG_TXFR_CREDIT_ACCOUNT    source_40
397228   , h8.PLA_MATERIAL_ACCOUNT    source_41
397229   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
397230   , h8.PLA_RESOURCE_ACCOUNT    source_43
397231   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
397232   , h8.PLA_OVERHEAD_ACCOUNT    source_45
397233   , h4.INV_ORG_PUR_PRICE_VAR_ACCT    source_58
397234   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
397235   , h2.DISTRIBUTION_TYPE    source_85
397236   , fvl85.meaning   source_85_meaning
397237   , h2.TRANSFER_TO_GL_INDICATOR    source_114
397238   , fvl114.meaning   source_114_meaning
397239   FROM xla_events_gt     xet 
397240   , CST_XLA_INTERORG_PARAMS_REF_V  h1
397241   , CST_XLA_INV_HEADERS_V  h2
397242   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
397243   , CST_XLA_INV_REF_V  h5
397244   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
397245   , CST_XLA_INV_TXN_TYPES_REF_V  h7
397246   , CST_XLA_PLA_CATEGORY_REF_V  h8
397247   , fnd_lookup_values    fvl85
397248   , fnd_lookup_values    fvl114
397249  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
397250    and xet.event_type_code = C_EVENT_TYPE_CODE
397251    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
397252   AND h1.event_id (+) = h2.event_id
397253  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h8.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h8.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
397254   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
397255   AND fvl85.view_application_id(+) = 700
397256   AND fvl85.language(+)            = USERENV('LANG')
397257      AND fvl114.lookup_type(+)         = 'YES_NO'
397258   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
397259   AND fvl114.view_application_id(+) = 0
397260   AND fvl114.language(+)            = USERENV('LANG')
397261   
397262  ORDER BY event_id
397263 ;
397264 
397265 
397266 --
397267 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
397268 IS
397269 SELECT /*+ leading(xet) cardinality(xet,1) */
397270 -- Event Type Code: UDIR_INTERORG_SHIP
397271 -- Event Class Code: USER_DEFINE
397272     xet.entity_id
397273    ,xet.legal_entity_id
397274    ,xet.entity_code
397275    ,xet.transaction_number
397276    ,xet.event_id
397277    ,xet.event_class_code
397278    ,xet.event_type_code
397279    ,xet.event_number
397280    ,xet.event_date
397281    ,xet.transaction_date
397282    ,xet.reference_num_1
397283    ,xet.reference_num_2
397284    ,xet.reference_num_3
397285    ,xet.reference_num_4
397286    ,xet.reference_char_1
397287    ,xet.reference_char_2
397288    ,xet.reference_char_3
397289    ,xet.reference_char_4
397290    ,xet.reference_date_1
397291    ,xet.reference_date_2
397292    ,xet.reference_date_3
397293    ,xet.reference_date_4
397294    ,xet.event_created_by
397295    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
397296   , l3.CODE_COMBINATION_ID    source_11
397297   , l3.COST_ELEMENT_ID    source_15
397298   , l3.DISTRIBUTION_IDENTIFIER    source_84
397299   , l3.CURRENCY_CODE    source_88
397300   , l3.ENTERED_AMOUNT    source_91
397301   , l3.CURRENCY_CONVERSION_DATE    source_92
397302   , l3.CURRENCY_CONVERSION_RATE    source_93
397303   , l3.CURRENCY_CONVERSION_TYPE    source_94
397304   , l3.ACCOUNTED_AMOUNT    source_95
397305   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
397306   , l3.L_ORGANIZATION_CODE    source_108
397307   FROM xla_events_gt     xet 
397308   , CST_XLA_INV_LINES_V  l3
397309  WHERE xet.event_id between x_first_event_id and x_last_event_id
397310    and xet.event_date between p_pad_start_date and p_pad_end_date
397311    and xet.event_type_code = C_EVENT_TYPE_CODE
397312    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
397313 ;
397314 
397315 --
397316 BEGIN
397317 IF g_log_enabled THEN
397318    l_log_module := C_DEFAULT_MODULE||'.EventType_603';
397319 END IF;
397320 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
397321    trace
397322       (p_msg      => 'BEGIN of EventType_603'
397323       ,p_level    => C_LEVEL_PROCEDURE
397324       ,p_module   => l_log_module);
397325 END IF;
397326 
397327 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
397328    trace
397329       (p_msg      => 'p_application_id = '||p_application_id||
397330                      ' - p_base_ledger_id = '||p_base_ledger_id||
397331                      ' - p_target_ledger_id  = '||p_target_ledger_id||
397332                      ' - p_language = '||p_language||
397333                      ' - p_currency_code = '||p_currency_code||
397334                      ' - p_sla_ledger_id = '||p_sla_ledger_id
397335       ,p_level    => C_LEVEL_STATEMENT
397336       ,p_module   => l_log_module);
397337 END IF;
397338 --
397339 -- initialze arrays
397340 --
397341 g_array_event.DELETE;
397342 l_rec_array_event := l_null_rec_array_event;
397343 --
397344 --------------------------------------
397345 -- 4262811 Initialze MPA Line Number
397346 --------------------------------------
397347 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
397348 
397349 --
397350 
397351 --
397352 OPEN header_cur;
397353 --
397354 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
397355    trace
397356    (p_msg      => 'SQL - FETCH header_cur'
397357    ,p_level    => C_LEVEL_STATEMENT
397358    ,p_module   => l_log_module);
397359 END IF;
397360 --
397361 LOOP
397362 FETCH header_cur BULK COLLECT INTO
397363         l_array_entity_id
397364       , l_array_legal_entity_id
397365       , l_array_entity_code
397366       , l_array_transaction_num
397367       , l_array_event_id
397368       , l_array_class_code
397369       , l_array_event_type
397370       , l_array_event_number
397371       , l_array_event_date
397372       , l_array_transaction_date
397373       , l_array_reference_num_1
397374       , l_array_reference_num_2
397375       , l_array_reference_num_3
397376       , l_array_reference_num_4
397377       , l_array_reference_char_1
397378       , l_array_reference_char_2
397379       , l_array_reference_char_3
397380       , l_array_reference_char_4
397381       , l_array_reference_date_1
397382       , l_array_reference_date_2
397383       , l_array_reference_date_3
397384       , l_array_reference_date_4
397385       , l_array_event_created_by
397386       , l_array_budgetary_control_flag 
397387       , l_array_source_1
397388       , l_array_source_2
397389       , l_array_source_3
397390       , l_array_source_4
397391       , l_array_source_5
397392       , l_array_source_22
397393       , l_array_source_32
397394       , l_array_source_33
397395       , l_array_source_35
397396       , l_array_source_40
397397       , l_array_source_41
397398       , l_array_source_42
397399       , l_array_source_43
397400       , l_array_source_44
397401       , l_array_source_45
397402       , l_array_source_58
397403       , l_array_source_59
397404       , l_array_source_85
397405       , l_array_source_85_meaning
397406       , l_array_source_114
397407       , l_array_source_114_meaning
397408       LIMIT l_rows;
397409 --
397410 IF (C_LEVEL_EVENT >= g_log_level) THEN
397411    trace
397412    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
397413    ,p_level    => C_LEVEL_EVENT
397414    ,p_module   => l_log_module);
397415 END IF;
397416 --
397417 EXIT WHEN l_array_entity_id.COUNT = 0;
397418 
397419 -- initialize arrays
397420 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
397421 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
397422 
397423 --
397424 -- Bug 4458708
397425 --
397426 XLA_AE_LINES_PKG.g_LineNumber := 0;
397427 
397428 
397429 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
397430 g_last_hdr_idx := l_array_event_id.LAST;
397431 --
397432 -- loop for the headers. Each iteration is for each header extract row
397433 -- fetched in header cursor
397434 --
397435 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
397436 
397437 --
397438 -- set event info as cache for other routines to refer event attributes
397439 --
397440 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
397441    (p_application_id           => p_application_id
397442    ,p_primary_ledger_id        => p_primary_ledger_id
397443    ,p_base_ledger_id           => p_base_ledger_id
397444    ,p_target_ledger_id         => p_target_ledger_id
397445    ,p_entity_id                => l_array_entity_id(hdr_idx)
397446    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
397447    ,p_entity_code              => l_array_entity_code(hdr_idx)
397448    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
397449    ,p_event_id                 => l_array_event_id(hdr_idx)
397450    ,p_event_class_code         => l_array_class_code(hdr_idx)
397451    ,p_event_type_code          => l_array_event_type(hdr_idx)
397452    ,p_event_number             => l_array_event_number(hdr_idx)
397453    ,p_event_date               => l_array_event_date(hdr_idx)
397454    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
397455    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
397456    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
397457    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
397458    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
397459    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
397460    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
397461    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
397462    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
397463    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
397464    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
397465    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
397466    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
397467    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
397468    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
397469 
397470 --
397471 -- set the status of entry to C_VALID (0)
397472 --
397473 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
397474 
397475 --
397476 -- initialize a row for ae header
397477 --
397478 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
397479 
397480 l_event_id := l_array_event_id(hdr_idx);
397481 
397482 --
397483 -- storing the hdr_idx for event. May be used by line cursor.
397484 --
397485 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
397486 
397487 --
397488 -- store sources from header extract. This can be improved to
397489 -- store only those sources from header extract that may be used in lines
397490 --
397491 
397492 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
397493 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
397494 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
397495 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
397496 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
397497 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
397498 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
397499 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
397500 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
397501 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
397502 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
397503 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
397504 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
397505 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
397506 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
397507 g_array_event(l_event_id).array_value_num('source_58') := l_array_source_58(hdr_idx);
397508 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
397509 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
397510 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
397511 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
397512 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
397513 
397514 --
397515 -- initilaize the status of ae headers for diffrent balance types
397516 -- the status is initialised to C_NOT_CREATED (2)
397517 --
397518 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
397519 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
397520 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
397521 
397522 --
397523 -- call api to validate and store accounting attributes for header
397524 --
397525 
397526 ------------------------------------------------------------
397527 -- Accrual Reversal : to get date for Standard Source (NONE)
397528 ------------------------------------------------------------
397529 l_acc_rev_gl_date_source := NULL;
397530 
397531      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
397532       l_rec_acct_attrs.array_date_value(1) := 
397533 xla_ae_sources_pkg.GetSystemSourceDate(
397534    p_source_code           => 'XLA_REFERENCE_DATE_1'
397535  , p_source_type_code      => 'Y'
397536  , p_source_application_id =>  602
397537 );
397538      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
397539       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
397540 
397541 
397542 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
397543 
397544 XLA_AE_HEADER_PKG.SetJeCategoryName;
397545 
397546 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
397547 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
397548 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
397549 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
397550 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
397551 
397552 
397553 -- No header level analytical criteria
397554 
397555 --
397556 --accounting attribute enhancement, bug 3612931
397557 --
397558 l_trx_reversal_source := SUBSTR(NULL, 1,30);
397559 
397560 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
397561    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
397562 
397563    xla_accounting_err_pkg.build_message
397564       (p_appli_s_name            => 'XLA'
397565       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
397566       ,p_token_1                 => 'ACCT_ATTR_NAME'
397567       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
397568       ,p_token_2                 => 'PRODUCT_NAME'
397569       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
397570       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
397571       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
397572       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
397573 
397574 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
397575    --
397576    -- following sets the accounting attributes needed to reverse
397577    -- accounting for a distributeion
397578    --
397579    xla_ae_lines_pkg.SetTrxReversalAttrs
397580       (p_event_id              => l_event_id
397581       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
397582       ,p_trx_reversal_source   => l_trx_reversal_source);
397583 
397584 END IF;
397585 
397586 
397587 ----------------------------------------------------------------
397588 -- 4262811 -  update the header statuses to invalid in need be
397589 ----------------------------------------------------------------
397590 --
397591 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
397592 
397593 
397594   -----------------------------------------------
397595   -- No accrual reversal for the event class/type
397596   -----------------------------------------------
397597 ----------------------------------------------------------------
397598 
397599 --
397600 -- this ends the header loop iteration for one bulk fetch
397601 --
397602 END LOOP;
397603 
397604 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
397605 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
397606 
397607 --
397608 -- insert dummy rows into lines gt table that were created due to
397609 -- transaction reversals
397610 --
397611 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
397612    l_result := XLA_AE_LINES_PKG.InsertLines;
397613 END IF;
397614 
397615 --
397616 -- reset the temp_line_num for each set of events fetched from header
397617 -- cursor rather than doing it for each new event in line cursor
397618 -- Bug 3939231
397619 --
397620 xla_ae_lines_pkg.g_temp_line_num := 0;
397621 
397622 
397623 
397624 --
397625 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
397626 --
397627 --
397628 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
397629 
397630       trace
397631          (p_msg      => 'SQL - FETCH line_cur'
397632          ,p_level    => C_LEVEL_STATEMENT
397633          ,p_module   => l_log_module);
397634 
397635 END IF;
397636 --
397637 --
397638 LOOP
397639   --
397640   FETCH line_cur BULK COLLECT INTO
397641         l_array_entity_id
397642       , l_array_legal_entity_id
397643       , l_array_entity_code
397644       , l_array_transaction_num
397645       , l_array_event_id
397646       , l_array_class_code
397647       , l_array_event_type
397648       , l_array_event_number
397649       , l_array_event_date
397650       , l_array_transaction_date
397651       , l_array_reference_num_1
397652       , l_array_reference_num_2
397653       , l_array_reference_num_3
397654       , l_array_reference_num_4
397655       , l_array_reference_char_1
397656       , l_array_reference_char_2
397657       , l_array_reference_char_3
397658       , l_array_reference_char_4
397659       , l_array_reference_date_1
397660       , l_array_reference_date_2
397661       , l_array_reference_date_3
397662       , l_array_reference_date_4
397663       , l_array_event_created_by
397664       , l_array_budgetary_control_flag
397665       , l_array_extract_line_num 
397666       , l_array_source_11
397667       , l_array_source_15
397668       , l_array_source_84
397669       , l_array_source_88
397670       , l_array_source_91
397671       , l_array_source_92
397672       , l_array_source_93
397673       , l_array_source_94
397674       , l_array_source_95
397675       , l_array_source_97
397676       , l_array_source_108
397677       LIMIT l_rows;
397678 
397679   --
397680   IF (C_LEVEL_EVENT >= g_log_level) THEN
397681             trace
397682                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
397683                ,p_level    => C_LEVEL_EVENT
397684                ,p_module   => l_log_module);
397685   END IF;
397686   --
397687   EXIT WHEN l_array_entity_id.count = 0;
397688 
397689   XLA_AE_LINES_PKG.g_rec_lines := null;
397690 
397691 --
397692 -- Bug 4458708
397693 --
397694 XLA_AE_LINES_PKG.g_LineNumber := 0;
397695 --
397696 --
397697 
397698 FOR Idx IN 1..l_array_event_id.count LOOP
397699    --
397700    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
397701    --
397702    l_event_id := l_array_event_id(idx);  -- 5648433
397703 
397704    --
397705    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
397706    --
397707 
397708    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
397709              (g_array_event(l_event_id).array_value_num('header_index'))
397710          ,'N'
397711          ) <> 'Y'
397712    THEN
397713       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
397714          trace
397715             (p_msg      => 'Trancaction revesal option is not Y '
397716             ,p_level    => C_LEVEL_STATEMENT
397717             ,p_module   => l_log_module);
397718       END IF;
397719 
397720 --
397721 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
397722 --
397723 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
397724 --
397725 -- set event info as cache for other routines to refer event attributes
397726 --
397727 
397728 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
397729    l_previous_event_id := l_event_id;
397730 
397731    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
397732       (p_application_id           => p_application_id
397733       ,p_primary_ledger_id        => p_primary_ledger_id
397734       ,p_base_ledger_id           => p_base_ledger_id
397735       ,p_target_ledger_id         => p_target_ledger_id
397736       ,p_entity_id                => l_array_entity_id(Idx)
397737       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
397738       ,p_entity_code              => l_array_entity_code(Idx)
397739       ,p_transaction_num          => l_array_transaction_num(Idx)
397740       ,p_event_id                 => l_array_event_id(Idx)
397741       ,p_event_class_code         => l_array_class_code(Idx)
397742       ,p_event_type_code          => l_array_event_type(Idx)
397743       ,p_event_number             => l_array_event_number(Idx)
397744       ,p_event_date               => l_array_event_date(Idx)
397745       ,p_transaction_date         => l_array_transaction_date(Idx)
397746       ,p_reference_num_1          => l_array_reference_num_1(Idx)
397747       ,p_reference_num_2          => l_array_reference_num_2(Idx)
397748       ,p_reference_num_3          => l_array_reference_num_3(Idx)
397749       ,p_reference_num_4          => l_array_reference_num_4(Idx)
397750       ,p_reference_char_1         => l_array_reference_char_1(Idx)
397751       ,p_reference_char_2         => l_array_reference_char_2(Idx)
397752       ,p_reference_char_3         => l_array_reference_char_3(Idx)
397753       ,p_reference_char_4         => l_array_reference_char_4(Idx)
397754       ,p_reference_date_1         => l_array_reference_date_1(Idx)
397755       ,p_reference_date_2         => l_array_reference_date_2(Idx)
397756       ,p_reference_date_3         => l_array_reference_date_3(Idx)
397757       ,p_reference_date_4         => l_array_reference_date_4(Idx)
397758       ,p_event_created_by         => l_array_event_created_by(Idx)
397759       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
397760        --
397761 END IF;
397762 
397763 
397764 
397765 --
397766 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
397767 
397768 l_acct_reversal_source := SUBSTR(NULL, 1,30);
397769 
397770 IF l_continue_with_lines THEN
397771    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
397772       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
397773 
397774       xla_accounting_err_pkg.build_message
397775          (p_appli_s_name            => 'XLA'
397776          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
397777          ,p_token_1                 => 'LINE_NUMBER'
397778          ,p_value_1                 => l_array_extract_line_num(Idx)
397779          ,p_token_2                 => 'PRODUCT_NAME'
397780          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
397781          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
397782          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
397783          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
397784 
397785    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
397786       --
397787       -- following sets the accounting attributes needed to reverse
397788       -- accounting for a distributeion
397789       --
397790 
397791       --
397792       -- 5217187
397793       --
397794       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
397795       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
397796                                        g_array_event(l_event_id).array_value_num('header_index'));
397797       --
397798       --
397799 
397800       -- No reversal code generated
397801 
397802       xla_ae_lines_pkg.SetAcctReversalAttrs
397803          (p_event_id             => l_event_id
397804          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
397805          ,p_calculate_acctd_flag => l_calculate_acctd_flag
397806          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
397807    END IF;
397808 
397809    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
397810        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
397811 
397812 --
397813 AcctLineType_148 (
397814  p_application_id  => p_application_id
397815  ,p_event_id     => l_event_id
397816  ,p_calculate_acctd_flag => l_calculate_acctd_flag
397817  ,p_calculate_g_l_flag => l_calculate_g_l_flag
397818  ,p_actual_flag => l_actual_flag
397819  ,p_balance_type_code => l_balance_type_code
397820  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
397821  
397822  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
397823  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
397824  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
397825  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
397826  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
397827  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
397828  , p_source_84 => l_array_source_84(Idx)
397829  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
397830  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
397831  , p_source_88 => l_array_source_88(Idx)
397832  , p_source_91 => l_array_source_91(Idx)
397833  , p_source_92 => l_array_source_92(Idx)
397834  , p_source_93 => l_array_source_93(Idx)
397835  , p_source_94 => l_array_source_94(Idx)
397836  , p_source_95 => l_array_source_95(Idx)
397837  , p_source_97 => l_array_source_97(Idx)
397838  );
397839 If(l_balance_type_code = 'A') THEN
397840   l_actual_gain_loss_ref := l_gain_or_loss_ref;
397841 END IF;
397842 
397843 --
397844 
397845 
397846 --
397847 AcctLineType_172 (
397848  p_application_id  => p_application_id
397849  ,p_event_id     => l_event_id
397850  ,p_calculate_acctd_flag => l_calculate_acctd_flag
397851  ,p_calculate_g_l_flag => l_calculate_g_l_flag
397852  ,p_actual_flag => l_actual_flag
397853  ,p_balance_type_code => l_balance_type_code
397854  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
397855  
397856  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
397857  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
397858  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
397859  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
397860  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
397861  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
397862  , p_source_84 => l_array_source_84(Idx)
397863  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
397864  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
397865  , p_source_88 => l_array_source_88(Idx)
397866  , p_source_91 => l_array_source_91(Idx)
397867  , p_source_92 => l_array_source_92(Idx)
397868  , p_source_93 => l_array_source_93(Idx)
397869  , p_source_94 => l_array_source_94(Idx)
397870  , p_source_95 => l_array_source_95(Idx)
397871  , p_source_97 => l_array_source_97(Idx)
397872  );
397873 If(l_balance_type_code = 'A') THEN
397874   l_actual_gain_loss_ref := l_gain_or_loss_ref;
397875 END IF;
397876 
397877 --
397878 
397879 
397880 --
397881 AcctLineType_175 (
397882  p_application_id  => p_application_id
397883  ,p_event_id     => l_event_id
397884  ,p_calculate_acctd_flag => l_calculate_acctd_flag
397885  ,p_calculate_g_l_flag => l_calculate_g_l_flag
397886  ,p_actual_flag => l_actual_flag
397887  ,p_balance_type_code => l_balance_type_code
397888  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
397889  
397890  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
397891  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
397892  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
397893  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
397894  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
397895  , p_source_11 => l_array_source_11(Idx)
397896  , p_source_84 => l_array_source_84(Idx)
397897  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
397898  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
397899  , p_source_88 => l_array_source_88(Idx)
397900  , p_source_91 => l_array_source_91(Idx)
397901  , p_source_92 => l_array_source_92(Idx)
397902  , p_source_93 => l_array_source_93(Idx)
397903  , p_source_94 => l_array_source_94(Idx)
397904  , p_source_95 => l_array_source_95(Idx)
397905  , p_source_97 => l_array_source_97(Idx)
397906  );
397907 If(l_balance_type_code = 'A') THEN
397908   l_actual_gain_loss_ref := l_gain_or_loss_ref;
397909 END IF;
397910 
397911 --
397912 
397913 
397914 --
397915 AcctLineType_203 (
397916  p_application_id  => p_application_id
397917  ,p_event_id     => l_event_id
397918  ,p_calculate_acctd_flag => l_calculate_acctd_flag
397919  ,p_calculate_g_l_flag => l_calculate_g_l_flag
397920  ,p_actual_flag => l_actual_flag
397921  ,p_balance_type_code => l_balance_type_code
397922  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
397923  
397924  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
397925  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
397926  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
397927  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
397928  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
397929  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
397930  , p_source_84 => l_array_source_84(Idx)
397931  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
397932  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
397933  , p_source_88 => l_array_source_88(Idx)
397934  , p_source_91 => l_array_source_91(Idx)
397935  , p_source_92 => l_array_source_92(Idx)
397936  , p_source_93 => l_array_source_93(Idx)
397937  , p_source_94 => l_array_source_94(Idx)
397938  , p_source_95 => l_array_source_95(Idx)
397939  , p_source_97 => l_array_source_97(Idx)
397940  );
397941 If(l_balance_type_code = 'A') THEN
397942   l_actual_gain_loss_ref := l_gain_or_loss_ref;
397943 END IF;
397944 
397945 --
397946 
397947 
397948 --
397949 AcctLineType_206 (
397950  p_application_id  => p_application_id
397951  ,p_event_id     => l_event_id
397952  ,p_calculate_acctd_flag => l_calculate_acctd_flag
397953  ,p_calculate_g_l_flag => l_calculate_g_l_flag
397954  ,p_actual_flag => l_actual_flag
397955  ,p_balance_type_code => l_balance_type_code
397956  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
397957  
397958  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
397959  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
397960  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
397961  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
397962  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
397963  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
397964  , p_source_84 => l_array_source_84(Idx)
397965  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
397966  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
397967  , p_source_88 => l_array_source_88(Idx)
397968  , p_source_91 => l_array_source_91(Idx)
397969  , p_source_92 => l_array_source_92(Idx)
397970  , p_source_93 => l_array_source_93(Idx)
397971  , p_source_94 => l_array_source_94(Idx)
397972  , p_source_95 => l_array_source_95(Idx)
397973  , p_source_97 => l_array_source_97(Idx)
397974  );
397975 If(l_balance_type_code = 'A') THEN
397976   l_actual_gain_loss_ref := l_gain_or_loss_ref;
397977 END IF;
397978 
397979 --
397980 
397981 
397982 --
397983 AcctLineType_282 (
397984  p_application_id  => p_application_id
397985  ,p_event_id     => l_event_id
397986  ,p_calculate_acctd_flag => l_calculate_acctd_flag
397987  ,p_calculate_g_l_flag => l_calculate_g_l_flag
397988  ,p_actual_flag => l_actual_flag
397989  ,p_balance_type_code => l_balance_type_code
397990  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
397991  
397992  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
397993  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
397994  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
397995  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
397996  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
397997  , p_source_15 => l_array_source_15(Idx)
397998  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
397999  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
398000  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
398001  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
398002  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
398003  , p_source_84 => l_array_source_84(Idx)
398004  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
398005  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
398006  , p_source_88 => l_array_source_88(Idx)
398007  , p_source_91 => l_array_source_91(Idx)
398008  , p_source_92 => l_array_source_92(Idx)
398009  , p_source_93 => l_array_source_93(Idx)
398010  , p_source_94 => l_array_source_94(Idx)
398011  , p_source_95 => l_array_source_95(Idx)
398012  , p_source_97 => l_array_source_97(Idx)
398013  , p_source_108 => l_array_source_108(Idx)
398014  );
398015 If(l_balance_type_code = 'A') THEN
398016   l_actual_gain_loss_ref := l_gain_or_loss_ref;
398017 END IF;
398018 
398019 --
398020 
398021 
398022 --
398023 AcctLineType_297 (
398024  p_application_id  => p_application_id
398025  ,p_event_id     => l_event_id
398026  ,p_calculate_acctd_flag => l_calculate_acctd_flag
398027  ,p_calculate_g_l_flag => l_calculate_g_l_flag
398028  ,p_actual_flag => l_actual_flag
398029  ,p_balance_type_code => l_balance_type_code
398030  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
398031  
398032  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
398033  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
398034  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
398035  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
398036  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
398037  , p_source_11 => l_array_source_11(Idx)
398038  , p_source_84 => l_array_source_84(Idx)
398039  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
398040  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
398041  , p_source_88 => l_array_source_88(Idx)
398042  , p_source_91 => l_array_source_91(Idx)
398043  , p_source_92 => l_array_source_92(Idx)
398044  , p_source_93 => l_array_source_93(Idx)
398045  , p_source_94 => l_array_source_94(Idx)
398046  , p_source_95 => l_array_source_95(Idx)
398047  , p_source_97 => l_array_source_97(Idx)
398048  );
398049 If(l_balance_type_code = 'A') THEN
398050   l_actual_gain_loss_ref := l_gain_or_loss_ref;
398051 END IF;
398052 
398053 --
398054 
398055 
398056 --
398057 AcctLineType_366 (
398058  p_application_id  => p_application_id
398059  ,p_event_id     => l_event_id
398060  ,p_calculate_acctd_flag => l_calculate_acctd_flag
398061  ,p_calculate_g_l_flag => l_calculate_g_l_flag
398062  ,p_actual_flag => l_actual_flag
398063  ,p_balance_type_code => l_balance_type_code
398064  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
398065  
398066  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
398067  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
398068  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
398069  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
398070  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
398071  , p_source_11 => l_array_source_11(Idx)
398072  , p_source_84 => l_array_source_84(Idx)
398073  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
398074  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
398075  , p_source_88 => l_array_source_88(Idx)
398076  , p_source_91 => l_array_source_91(Idx)
398077  , p_source_92 => l_array_source_92(Idx)
398078  , p_source_93 => l_array_source_93(Idx)
398079  , p_source_94 => l_array_source_94(Idx)
398080  , p_source_95 => l_array_source_95(Idx)
398081  , p_source_97 => l_array_source_97(Idx)
398082  );
398083 If(l_balance_type_code = 'A') THEN
398084   l_actual_gain_loss_ref := l_gain_or_loss_ref;
398085 END IF;
398086 
398087 --
398088 
398089 
398090 --
398091 AcctLineType_379 (
398092  p_application_id  => p_application_id
398093  ,p_event_id     => l_event_id
398094  ,p_calculate_acctd_flag => l_calculate_acctd_flag
398095  ,p_calculate_g_l_flag => l_calculate_g_l_flag
398096  ,p_actual_flag => l_actual_flag
398097  ,p_balance_type_code => l_balance_type_code
398098  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
398099  
398100  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
398101  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
398102  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
398103  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
398104  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
398105  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
398106  , p_source_84 => l_array_source_84(Idx)
398107  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
398108  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
398109  , p_source_88 => l_array_source_88(Idx)
398110  , p_source_91 => l_array_source_91(Idx)
398111  , p_source_92 => l_array_source_92(Idx)
398112  , p_source_93 => l_array_source_93(Idx)
398113  , p_source_94 => l_array_source_94(Idx)
398114  , p_source_95 => l_array_source_95(Idx)
398115  , p_source_97 => l_array_source_97(Idx)
398116  );
398117 If(l_balance_type_code = 'A') THEN
398118   l_actual_gain_loss_ref := l_gain_or_loss_ref;
398119 END IF;
398120 
398121 --
398122 
398123 
398124 --
398125 AcctLineType_449 (
398126  p_application_id  => p_application_id
398127  ,p_event_id     => l_event_id
398128  ,p_calculate_acctd_flag => l_calculate_acctd_flag
398129  ,p_calculate_g_l_flag => l_calculate_g_l_flag
398130  ,p_actual_flag => l_actual_flag
398131  ,p_balance_type_code => l_balance_type_code
398132  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
398133  
398134  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
398135  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
398136  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
398137  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
398138  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
398139  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
398140  , p_source_84 => l_array_source_84(Idx)
398141  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
398142  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
398143  , p_source_88 => l_array_source_88(Idx)
398144  , p_source_91 => l_array_source_91(Idx)
398145  , p_source_92 => l_array_source_92(Idx)
398146  , p_source_93 => l_array_source_93(Idx)
398147  , p_source_94 => l_array_source_94(Idx)
398148  , p_source_95 => l_array_source_95(Idx)
398149  , p_source_97 => l_array_source_97(Idx)
398150  );
398151 If(l_balance_type_code = 'A') THEN
398152   l_actual_gain_loss_ref := l_gain_or_loss_ref;
398153 END IF;
398154 
398155 --
398156 
398157 
398158 --
398159 AcctLineType_494 (
398160  p_application_id  => p_application_id
398161  ,p_event_id     => l_event_id
398162  ,p_calculate_acctd_flag => l_calculate_acctd_flag
398163  ,p_calculate_g_l_flag => l_calculate_g_l_flag
398164  ,p_actual_flag => l_actual_flag
398165  ,p_balance_type_code => l_balance_type_code
398166  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
398167  
398168  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
398169  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
398170  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
398171  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
398172  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
398173  , p_source_58 => g_array_event(l_event_id).array_value_num('source_58')
398174  , p_source_84 => l_array_source_84(Idx)
398175  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
398176  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
398177  , p_source_88 => l_array_source_88(Idx)
398178  , p_source_91 => l_array_source_91(Idx)
398179  , p_source_92 => l_array_source_92(Idx)
398180  , p_source_93 => l_array_source_93(Idx)
398181  , p_source_94 => l_array_source_94(Idx)
398182  , p_source_95 => l_array_source_95(Idx)
398183  , p_source_97 => l_array_source_97(Idx)
398184  );
398185 If(l_balance_type_code = 'A') THEN
398186   l_actual_gain_loss_ref := l_gain_or_loss_ref;
398187 END IF;
398188 
398189 --
398190 
398191       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
398192       -- or secondary ledger that has different currency with primary
398193       -- or alc that is calculated by sla
398194       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
398195             (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'))
398196 
398197 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
398198 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
398199           AND (l_actual_flag = 'A')) THEN
398200         XLA_AE_LINES_PKG.CreateGainOrLossLines(
398201           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
398202          ,p_application_id   => p_application_id
398203          ,p_amb_context_code => 'DEFAULT'
398204          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
398205          ,p_event_class_code => C_EVENT_CLASS_CODE
398206          ,p_event_type_code  => C_EVENT_TYPE_CODE
398207          
398208          ,p_gain_ccid        => -1
398209          ,p_loss_ccid        => -1
398210 
398211          ,p_actual_flag      => l_actual_flag
398212          ,p_enc_flag         => null
398213          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
398214          ,p_enc_g_l_ref      => null
398215          );
398216       END IF;
398217    END IF;
398218 END IF;
398219 
398220    ELSE
398221       --
398222       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
398223       --
398224       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
398225          trace
398226             (p_msg      => 'Trancaction revesal option is Y'
398227             ,p_level    => C_LEVEL_STATEMENT
398228             ,p_module   => l_log_module);
398229       END IF;
398230    END IF;
398231 
398232 END LOOP;
398233 l_result := XLA_AE_LINES_PKG.InsertLines ;
398234 end loop;
398235 close line_cur;
398236 
398237 
398238 --
398239 -- insert headers into xla_ae_headers_gt table
398240 --
398241 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
398242 
398243 -- insert into errors table here.
398244 
398245 END LOOP;
398246 
398247 --
398248 -- 4865292
398249 --
398250 -- Compare g_hdr_extract_count with event count in
398251 -- CreateHeadersAndLines.
398252 --
398253 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
398254 
398255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
398256    trace (p_msg     => '# rows extracted from header extract objects '
398257                     || ' (running total): '
398258                     || g_hdr_extract_count
398259          ,p_level   => C_LEVEL_STATEMENT
398260          ,p_module  => l_log_module);
398261 END IF;
398262 
398263 CLOSE header_cur;
398264 --
398265 
398266 --
398267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
398268    trace
398269       (p_msg      => 'END of EventType_603'
398270       ,p_level    => C_LEVEL_PROCEDURE
398271       ,p_module   => l_log_module);
398272 END IF;
398273 --
398274 RETURN l_result;
398275 EXCEPTION
398276 WHEN xla_exceptions_pkg.application_exception THEN
398277    
398278 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
398279 
398280    
398281 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
398282 
398283    RAISE;
398284 
398285 WHEN NO_DATA_FOUND THEN
398286 
398287 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
398288 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
398289 
398290 FOR header_record IN header_cur
398291 LOOP
398292     l_array_header_events(header_record.event_id) := header_record.event_id;
398293 END LOOP;
398294 
398295 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
398296 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
398297 
398298 fnd_file.put_line(fnd_file.LOG, '                    ');
398299 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
398300 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
398301 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
398302 
398303 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
398304 LOOP
398305 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
398306 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
398307         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
398308 	END IF;
398309 END LOOP;
398310 
398311 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
398312 fnd_file.put_line(fnd_file.LOG, '                    ');
398313 
398314 
398315 xla_exceptions_pkg.raise_message
398316       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_603');
398317 
398318 
398319 WHEN OTHERS THEN
398320    xla_exceptions_pkg.raise_message
398321       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_603');
398322 END EventType_603;
398323 --
398324 
398325 ---------------------------------------
398326 --
398327 -- PRIVATE PROCEDURE
398328 --         insert_sources_604
398329 --
398330 ----------------------------------------
398331 --
398332 PROCEDURE insert_sources_604(
398333                                 p_target_ledger_id       IN NUMBER
398334                               , p_language               IN VARCHAR2
398335                               , p_sla_ledger_id          IN NUMBER
398336                               , p_pad_start_date         IN DATE
398337                               , p_pad_end_date           IN DATE
398338                          )
398339 IS
398340 
398341 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_NO_TP';
398342 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
398343 p_apps_owner                   VARCHAR2(30);
398344 l_log_module                   VARCHAR2(240);
398345 BEGIN
398346 IF g_log_enabled THEN
398347       l_log_module := C_DEFAULT_MODULE||'.insert_sources_604';
398348 END IF;
398349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
398350 
398351       trace
398352          (p_msg      => 'BEGIN of insert_sources_604'
398353          ,p_level    => C_LEVEL_PROCEDURE
398354          ,p_module   => l_log_module);
398355 
398356 END IF;
398357 
398358 -- select APPS owner
398359 SELECT oracle_username
398360   INTO p_apps_owner
398361   FROM fnd_oracle_userid
398362  WHERE read_only_flag = 'U'
398363 ;
398364 
398365 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
398366       trace
398367          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
398368                         ' - p_language = '||p_language||
398369                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
398370                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
398371                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
398372                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
398373          ,p_level    => C_LEVEL_STATEMENT
398374          ,p_module   => l_log_module);
398375 END IF;
398376 
398377 
398378 --
398379 INSERT INTO xla_diag_sources --hdr1
398380 (
398381         event_id
398382       , ledger_id
398383       , sla_ledger_id
398384       , description_language
398385       , object_name
398386       , object_type_code
398387       , line_number
398388       , source_application_id
398389       , source_type_code
398390       , source_code
398391       , source_value
398392       , source_meaning
398393       , created_by
398394       , creation_date
398395       , last_update_date
398396       , last_updated_by
398397       , last_update_login
398398       , program_update_date
398399       , program_application_id
398400       , program_id
398401       , request_id
398402 )
398403 SELECT
398404         event_id
398405       , p_target_ledger_id
398406       , p_sla_ledger_id
398407       , p_language
398408       , object_name
398409       , object_type_code
398410       , line_number
398411       , source_application_id
398412       , source_type_code
398413       , source_code
398414       , SUBSTR(source_value ,1,1996)
398415       , SUBSTR(source_meaning,1,200)
398416       , xla_environment_pkg.g_Usr_Id
398417       , TRUNC(SYSDATE)
398418       , TRUNC(SYSDATE)
398419       , xla_environment_pkg.g_Usr_Id
398420       , xla_environment_pkg.g_Login_Id
398421       , TRUNC(SYSDATE)
398422       , xla_environment_pkg.g_Prog_Appl_Id
398423       , xla_environment_pkg.g_Prog_Id
398424       , xla_environment_pkg.g_Req_Id
398425   FROM (
398426        SELECT xet.event_id                  event_id
398427             , 0                             line_number
398428             , CASE r
398429                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
398430                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
398431                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
398432                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
398433                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
398434                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
398435                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
398436                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
398437                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
398438                 WHEN 10 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
398439                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
398440                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
398441                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
398442                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
398443                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
398444                 WHEN 16 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
398445                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
398446                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
398447                 
398448                ELSE null
398449               END                           object_name
398450             , CASE r
398451                 WHEN 1 THEN 'HEADER' 
398452                 WHEN 2 THEN 'HEADER' 
398453                 WHEN 3 THEN 'HEADER' 
398454                 WHEN 4 THEN 'HEADER' 
398455                 WHEN 5 THEN 'HEADER' 
398456                 WHEN 6 THEN 'HEADER' 
398457                 WHEN 7 THEN 'HEADER' 
398458                 WHEN 8 THEN 'HEADER' 
398459                 WHEN 9 THEN 'HEADER' 
398460                 WHEN 10 THEN 'HEADER' 
398461                 WHEN 11 THEN 'HEADER' 
398462                 WHEN 12 THEN 'HEADER' 
398463                 WHEN 13 THEN 'HEADER' 
398464                 WHEN 14 THEN 'HEADER' 
398465                 WHEN 15 THEN 'HEADER' 
398466                 WHEN 16 THEN 'HEADER' 
398467                 WHEN 17 THEN 'HEADER' 
398468                 WHEN 18 THEN 'HEADER' 
398469                 
398470                 ELSE null
398471               END                           object_type_code
398472             , CASE r
398473                 WHEN 1 THEN '707' 
398474                 WHEN 2 THEN '707' 
398475                 WHEN 3 THEN '707' 
398476                 WHEN 4 THEN '707' 
398477                 WHEN 5 THEN '707' 
398478                 WHEN 6 THEN '707' 
398479                 WHEN 7 THEN '707' 
398480                 WHEN 8 THEN '707' 
398481                 WHEN 9 THEN '707' 
398482                 WHEN 10 THEN '707' 
398483                 WHEN 11 THEN '707' 
398484                 WHEN 12 THEN '707' 
398485                 WHEN 13 THEN '707' 
398486                 WHEN 14 THEN '707' 
398487                 WHEN 15 THEN '707' 
398488                 WHEN 16 THEN '707' 
398489                 WHEN 17 THEN '707' 
398490                 WHEN 18 THEN '707' 
398491                 
398492                 ELSE null
398493               END                           source_application_id
398494             , 'S'             source_type_code
398495             , CASE r
398496                 WHEN 1 THEN 'TRANSACTION_ID' 
398497                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
398498                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
398499                 WHEN 4 THEN 'TRANSACTION_UOM' 
398500                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
398501                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
398502                 WHEN 7 THEN 'INV_TXN_TRANSPO_DIST_ACCT' 
398503                 WHEN 8 THEN 'INTERORG_REVENUE_ACCOUNT' 
398504                 WHEN 9 THEN 'INTERORG_PAYABLES_ACCOUNT' 
398505                 WHEN 10 THEN 'INTERORG_TXFR_CREDIT_ACCOUNT' 
398506                 WHEN 11 THEN 'PLA_MATERIAL_ACCOUNT' 
398507                 WHEN 12 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
398508                 WHEN 13 THEN 'PLA_RESOURCE_ACCOUNT' 
398509                 WHEN 14 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
398510                 WHEN 15 THEN 'PLA_OVERHEAD_ACCOUNT' 
398511                 WHEN 16 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
398512                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
398513                 WHEN 18 THEN 'TRANSFER_TO_GL_INDICATOR' 
398514                 
398515                 ELSE null
398516               END                           source_code
398517             , CASE r
398518                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
398519                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
398520                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
398521                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
398522                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
398523                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
398524                 WHEN 7 THEN TO_CHAR(h4.INV_TXN_TRANSPO_DIST_ACCT)
398525                 WHEN 8 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
398526                 WHEN 9 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
398527                 WHEN 10 THEN TO_CHAR(h1.INTERORG_TXFR_CREDIT_ACCOUNT)
398528                 WHEN 11 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
398529                 WHEN 12 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
398530                 WHEN 13 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
398531                 WHEN 14 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
398532                 WHEN 15 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
398533                 WHEN 16 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
398534                 WHEN 17 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
398535                 WHEN 18 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
398536                 
398537                 ELSE null
398538               END                           source_value
398539             , CASE r
398540                 WHEN 17 THEN fvl85.meaning
398541                 WHEN 18 THEN fvl114.meaning
398542                 
398543                 ELSE null
398544               END               source_meaning
398545         FROM xla_events_gt     xet  
398546       , CST_XLA_INTERORG_PARAMS_REF_V  h1
398547       , CST_XLA_INV_HEADERS_V  h2
398548       , CST_XLA_INV_REF_V  h4
398549       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
398550       , CST_XLA_INV_TXN_TYPES_REF_V  h6
398551       , CST_XLA_PLA_CATEGORY_REF_V  h7
398552   , fnd_lookup_values    fvl85
398553   , fnd_lookup_values    fvl114
398554             ,(select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
398555        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
398556          AND xet.event_type_code = C_EVENT_TYPE_CODE
398557             AND h2.event_id = xet.event_id
398558   AND h1.event_id (+) = h2.event_id
398559  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id  (+) = h2.inventory_item_id  and h5.organization_id  (+) = h2.organization_id AND h6.inv_transaction_type_id  (+) = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id  and h7.pla_cat_item_id   (+) = h2.inventory_item_id  and h7.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
398560   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
398561   AND fvl85.view_application_id(+) = 700
398562   AND fvl85.language(+)            = USERENV('LANG')
398563      AND fvl114.lookup_type(+)         = 'YES_NO'
398564   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
398565   AND fvl114.view_application_id(+) = 0
398566   AND fvl114.language(+)            = USERENV('LANG')
398567   
398568 )
398569 ;
398570 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
398571 
398572       trace
398573          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
398574          ,p_level    => C_LEVEL_STATEMENT
398575          ,p_module   => l_log_module);
398576 
398577 END IF;
398578 --
398579 
398580 
398581 
398582 --
398583 INSERT INTO xla_diag_sources --line1
398584 (
398585         event_id
398586       , ledger_id
398587       , sla_ledger_id
398588       , description_language
398589       , object_name
398590       , object_type_code
398591       , line_number
398592       , source_application_id
398593       , source_type_code
398594       , source_code
398595       , source_value
398596       , source_meaning
398597       , created_by
398598       , creation_date
398599       , last_update_date
398600       , last_updated_by
398601       , last_update_login
398602       , program_update_date
398603       , program_application_id
398604       , program_id
398605       , request_id
398606 )
398607 SELECT  event_id
398608       , p_target_ledger_id
398609       , p_sla_ledger_id
398610       , p_language
398611       , object_name
398612       , object_type_code
398613       , line_number
398614       , source_application_id
398615       , source_type_code
398616       , source_code
398617       , SUBSTR(source_value,1,1996)
398618       , SUBSTR(source_meaning,1,200)
398619       , xla_environment_pkg.g_Usr_Id
398620       , TRUNC(SYSDATE)
398621       , TRUNC(SYSDATE)
398622       , xla_environment_pkg.g_Usr_Id
398623       , xla_environment_pkg.g_Login_Id
398624       , TRUNC(SYSDATE)
398625       , xla_environment_pkg.g_Prog_Appl_Id
398626       , xla_environment_pkg.g_Prog_Id
398627       , xla_environment_pkg.g_Req_Id
398628   FROM (
398629        SELECT xet.event_id                  event_id
398630             , l3.line_number                 line_number
398631             , CASE r
398632                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
398633                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
398634                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
398635                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
398636                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
398637                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
398638                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
398639                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
398640                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
398641                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
398642                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
398643                 
398644                ELSE null
398645               END                           object_name
398646             , CASE r
398647                 WHEN 1 THEN 'LINE' 
398648                 WHEN 2 THEN 'LINE' 
398649                 WHEN 3 THEN 'LINE' 
398650                 WHEN 4 THEN 'LINE' 
398651                 WHEN 5 THEN 'LINE' 
398652                 WHEN 6 THEN 'LINE' 
398653                 WHEN 7 THEN 'LINE' 
398654                 WHEN 8 THEN 'LINE' 
398655                 WHEN 9 THEN 'LINE' 
398656                 WHEN 10 THEN 'LINE' 
398657                 WHEN 11 THEN 'LINE' 
398658                 
398659                 ELSE null
398660               END                           object_type_code
398661             , CASE r
398662                 WHEN 1 THEN '707' 
398663                 WHEN 2 THEN '707' 
398664                 WHEN 3 THEN '707' 
398665                 WHEN 4 THEN '707' 
398666                 WHEN 5 THEN '707' 
398667                 WHEN 6 THEN '707' 
398668                 WHEN 7 THEN '707' 
398669                 WHEN 8 THEN '707' 
398670                 WHEN 9 THEN '707' 
398671                 WHEN 10 THEN '707' 
398672                 WHEN 11 THEN '707' 
398673                 
398674                 ELSE null
398675               END                           source_application_id
398676             , 'S'             source_type_code
398677             , CASE r
398678                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
398679                 WHEN 2 THEN 'COST_ELEMENT_ID' 
398680                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
398681                 WHEN 4 THEN 'CURRENCY_CODE' 
398682                 WHEN 5 THEN 'ENTERED_AMOUNT' 
398683                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
398684                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
398685                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
398686                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
398687                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
398688                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
398689                 
398690                 ELSE null
398691               END                           source_code
398692             , CASE r
398693                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
398694                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
398695                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
398696                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
398697                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
398698                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
398699                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
398700                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
398701                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
398702                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
398703                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
398704                 
398705                 ELSE null
398706               END                           source_value
398707             , CASE r
398708                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
398709                           1009615
398710                          ,TO_CHAR(l3.COST_ELEMENT_ID)
398711                          ,'COST_ELEMENT_ID'
398712                          ,'S'
398713                          ,707)
398714                 
398715                 ELSE null
398716               END               source_meaning
398717          FROM  xla_events_gt     xet  
398718         , CST_XLA_INV_LINES_V  l3
398719             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
398720         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
398721           AND xet.event_type_code = C_EVENT_TYPE_CODE
398722             AND l3.event_id          = xet.event_id
398723 
398724 )
398725 ;
398726 --
398727 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
398728 
398729       trace
398730          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
398731          ,p_level    => C_LEVEL_STATEMENT
398732          ,p_module   => l_log_module);
398733 
398734 END IF;
398735 
398736 
398737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
398738       trace
398739          (p_msg      => 'END of insert_sources_604'
398740          ,p_level    => C_LEVEL_PROCEDURE
398741          ,p_module   => l_log_module);
398742 END IF;
398743 EXCEPTION
398744   WHEN xla_exceptions_pkg.application_exception THEN
398745       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
398746             trace
398747                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
398748                ,p_level    => C_LEVEL_EXCEPTION
398749                ,p_module   => l_log_module);
398750       END IF;
398751       RAISE;
398752   WHEN OTHERS THEN
398753       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
398754             trace
398755                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
398756                ,p_level    => C_LEVEL_EXCEPTION
398757                ,p_module   => l_log_module);
398758        END IF;
398759        xla_exceptions_pkg.raise_message
398760            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_604');
398761 END insert_sources_604;
398762 --
398763 
398764 ---------------------------------------
398765 --
398766 -- PRIVATE FUNCTION
398767 --         EventType_604
398768 --
398769 ----------------------------------------
398770 --
398771 FUNCTION EventType_604
398772        (p_application_id         IN NUMBER
398773        ,p_base_ledger_id         IN NUMBER
398774        ,p_target_ledger_id       IN NUMBER
398775        ,p_language               IN VARCHAR2
398776        ,p_currency_code          IN VARCHAR2
398777        ,p_sla_ledger_id          IN NUMBER
398778        ,p_pad_start_date         IN DATE
398779        ,p_pad_end_date           IN DATE
398780        ,p_primary_ledger_id      IN NUMBER)
398781 RETURN BOOLEAN IS
398782 --
398783 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_NO_TP';
398784 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
398785 
398786 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
398787 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
398788 --
398789 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398790 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398791 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
398792 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
398793 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398794 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
398795 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
398796 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398797 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
398798 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
398799 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398800 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398801 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398802 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
398803 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
398804 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
398805 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
398806 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
398807 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
398808 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
398809 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
398810 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
398811 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
398812 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
398813 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
398814 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
398815 
398816 l_event_id                             NUMBER;
398817 l_previous_event_id                    NUMBER;
398818 l_first_event_id                       NUMBER;
398819 l_last_event_id                        NUMBER;
398820 
398821 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
398822 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
398823 --
398824 --
398825 l_result                    BOOLEAN := TRUE;
398826 l_rows                      NUMBER  := 1000;
398827 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment, No Transfer Price';
398828 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
398829 l_description               VARCHAR2(4000);
398830 l_transaction_reversal      NUMBER;
398831 l_ae_header_id              NUMBER;
398832 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
398833 l_log_module                VARCHAR2(240);
398834 --
398835 l_acct_reversal_source      VARCHAR2(30);
398836 l_trx_reversal_source       VARCHAR2(30);
398837 
398838 l_continue_with_lines       BOOLEAN := TRUE;
398839 --
398840 l_acc_rev_gl_date_source    DATE;                      -- 4262811
398841 --
398842 type t_array_event_id is table of number index by binary_integer;
398843 
398844 l_rec_array_event                    t_rec_array_event;
398845 l_null_rec_array_event               t_rec_array_event;
398846 l_array_ae_header_id                 xla_number_array_type;
398847 l_actual_flag                        VARCHAR2(1) := NULL;
398848 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
398849 l_balance_type_code                  VARCHAR2(1) :=NULL;
398850 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
398851 
398852 --
398853 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
398854 --
398855 
398856 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
398857 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
398858 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
398859 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
398860 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
398861 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398862 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_TRANSPO_DIST_ACCT%TYPE INDEX BY BINARY_INTEGER;
398863 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398864 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398865 TYPE t_array_source_40 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_TXFR_CREDIT_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398866 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398867 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398868 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398869 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398870 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398871 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
398872 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
398873 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
398874 
398875 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
398876 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
398877 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
398878 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
398879 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
398880 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
398881 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
398882 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
398883 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
398884 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
398885 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
398886 
398887 l_array_source_1              t_array_source_1;
398888 l_array_source_2              t_array_source_2;
398889 l_array_source_3              t_array_source_3;
398890 l_array_source_4              t_array_source_4;
398891 l_array_source_5              t_array_source_5;
398892 l_array_source_22              t_array_source_22;
398893 l_array_source_32              t_array_source_32;
398894 l_array_source_33              t_array_source_33;
398895 l_array_source_35              t_array_source_35;
398896 l_array_source_40              t_array_source_40;
398897 l_array_source_41              t_array_source_41;
398898 l_array_source_42              t_array_source_42;
398899 l_array_source_43              t_array_source_43;
398900 l_array_source_44              t_array_source_44;
398901 l_array_source_45              t_array_source_45;
398902 l_array_source_59              t_array_source_59;
398903 l_array_source_85              t_array_source_85;
398904 l_array_source_85_meaning      t_array_lookup_meaning;
398905 l_array_source_114              t_array_source_114;
398906 l_array_source_114_meaning      t_array_lookup_meaning;
398907 
398908 l_array_source_11      t_array_source_11;
398909 l_array_source_15      t_array_source_15;
398910 l_array_source_84      t_array_source_84;
398911 l_array_source_88      t_array_source_88;
398912 l_array_source_91      t_array_source_91;
398913 l_array_source_92      t_array_source_92;
398914 l_array_source_93      t_array_source_93;
398915 l_array_source_94      t_array_source_94;
398916 l_array_source_95      t_array_source_95;
398917 l_array_source_97      t_array_source_97;
398918 l_array_source_108      t_array_source_108;
398919 
398920 --
398921 CURSOR header_cur
398922 IS
398923 SELECT /*+ leading(xet) cardinality(xet,1) */
398924 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
398925 -- Event Class Code: USER_DEFINE
398926     xet.entity_id
398927   , xet.legal_entity_id
398928   , xet.entity_code
398929   , xet.transaction_number
398930   , xet.event_id
398931   , xet.event_class_code
398932   , xet.event_type_code
398933   , xet.event_number
398934   , xet.event_date
398935   , xet.transaction_date
398936   , xet.reference_num_1
398937   , xet.reference_num_2
398938   , xet.reference_num_3
398939   , xet.reference_num_4
398940   , xet.reference_char_1
398941   , xet.reference_char_2
398942   , xet.reference_char_3
398943   , xet.reference_char_4
398944   , xet.reference_date_1
398945   , xet.reference_date_2
398946   , xet.reference_date_3
398947   , xet.reference_date_4
398948   , xet.event_created_by
398949   , xet.budgetary_control_flag 
398950   , h2.TRANSACTION_ID    source_1
398951   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
398952   , h4.TRANSACTION_QUANTITY    source_3
398953   , h4.TRANSACTION_UOM    source_4
398954   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
398955   , h7.PLA_BRIDGING_ACCOUNT    source_22
398956   , h4.INV_TXN_TRANSPO_DIST_ACCT    source_32
398957   , h1.INTERORG_REVENUE_ACCOUNT    source_33
398958   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
398959   , h1.INTERORG_TXFR_CREDIT_ACCOUNT    source_40
398960   , h7.PLA_MATERIAL_ACCOUNT    source_41
398961   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
398962   , h7.PLA_RESOURCE_ACCOUNT    source_43
398963   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
398964   , h7.PLA_OVERHEAD_ACCOUNT    source_45
398965   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
398966   , h2.DISTRIBUTION_TYPE    source_85
398967   , fvl85.meaning   source_85_meaning
398968   , h2.TRANSFER_TO_GL_INDICATOR    source_114
398969   , fvl114.meaning   source_114_meaning
398970   FROM xla_events_gt     xet 
398971   , CST_XLA_INTERORG_PARAMS_REF_V  h1
398972   , CST_XLA_INV_HEADERS_V  h2
398973   , CST_XLA_INV_REF_V  h4
398974   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
398975   , CST_XLA_INV_TXN_TYPES_REF_V  h6
398976   , CST_XLA_PLA_CATEGORY_REF_V  h7
398977   , fnd_lookup_values    fvl85
398978   , fnd_lookup_values    fvl114
398979  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
398980    and xet.event_type_code = C_EVENT_TYPE_CODE
398981    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
398982   AND h1.event_id (+) = h2.event_id
398983  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h7.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h7.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
398984   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
398985   AND fvl85.view_application_id(+) = 700
398986   AND fvl85.language(+)            = USERENV('LANG')
398987      AND fvl114.lookup_type(+)         = 'YES_NO'
398988   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
398989   AND fvl114.view_application_id(+) = 0
398990   AND fvl114.language(+)            = USERENV('LANG')
398991   
398992  ORDER BY event_id
398993 ;
398994 
398995 
398996 --
398997 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
398998 IS
398999 SELECT /*+ leading(xet) cardinality(xet,1) */
399000 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
399001 -- Event Class Code: USER_DEFINE
399002     xet.entity_id
399003    ,xet.legal_entity_id
399004    ,xet.entity_code
399005    ,xet.transaction_number
399006    ,xet.event_id
399007    ,xet.event_class_code
399008    ,xet.event_type_code
399009    ,xet.event_number
399010    ,xet.event_date
399011    ,xet.transaction_date
399012    ,xet.reference_num_1
399013    ,xet.reference_num_2
399014    ,xet.reference_num_3
399015    ,xet.reference_num_4
399016    ,xet.reference_char_1
399017    ,xet.reference_char_2
399018    ,xet.reference_char_3
399019    ,xet.reference_char_4
399020    ,xet.reference_date_1
399021    ,xet.reference_date_2
399022    ,xet.reference_date_3
399023    ,xet.reference_date_4
399024    ,xet.event_created_by
399025    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
399026   , l3.CODE_COMBINATION_ID    source_11
399027   , l3.COST_ELEMENT_ID    source_15
399028   , l3.DISTRIBUTION_IDENTIFIER    source_84
399029   , l3.CURRENCY_CODE    source_88
399030   , l3.ENTERED_AMOUNT    source_91
399031   , l3.CURRENCY_CONVERSION_DATE    source_92
399032   , l3.CURRENCY_CONVERSION_RATE    source_93
399033   , l3.CURRENCY_CONVERSION_TYPE    source_94
399034   , l3.ACCOUNTED_AMOUNT    source_95
399035   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
399036   , l3.L_ORGANIZATION_CODE    source_108
399037   FROM xla_events_gt     xet 
399038   , CST_XLA_INV_LINES_V  l3
399039  WHERE xet.event_id between x_first_event_id and x_last_event_id
399040    and xet.event_date between p_pad_start_date and p_pad_end_date
399041    and xet.event_type_code = C_EVENT_TYPE_CODE
399042    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
399043 ;
399044 
399045 --
399046 BEGIN
399047 IF g_log_enabled THEN
399048    l_log_module := C_DEFAULT_MODULE||'.EventType_604';
399049 END IF;
399050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
399051    trace
399052       (p_msg      => 'BEGIN of EventType_604'
399053       ,p_level    => C_LEVEL_PROCEDURE
399054       ,p_module   => l_log_module);
399055 END IF;
399056 
399057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
399058    trace
399059       (p_msg      => 'p_application_id = '||p_application_id||
399060                      ' - p_base_ledger_id = '||p_base_ledger_id||
399061                      ' - p_target_ledger_id  = '||p_target_ledger_id||
399062                      ' - p_language = '||p_language||
399063                      ' - p_currency_code = '||p_currency_code||
399064                      ' - p_sla_ledger_id = '||p_sla_ledger_id
399065       ,p_level    => C_LEVEL_STATEMENT
399066       ,p_module   => l_log_module);
399067 END IF;
399068 --
399069 -- initialze arrays
399070 --
399071 g_array_event.DELETE;
399072 l_rec_array_event := l_null_rec_array_event;
399073 --
399074 --------------------------------------
399075 -- 4262811 Initialze MPA Line Number
399076 --------------------------------------
399077 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
399078 
399079 --
399080 
399081 --
399082 OPEN header_cur;
399083 --
399084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
399085    trace
399086    (p_msg      => 'SQL - FETCH header_cur'
399087    ,p_level    => C_LEVEL_STATEMENT
399088    ,p_module   => l_log_module);
399089 END IF;
399090 --
399091 LOOP
399092 FETCH header_cur BULK COLLECT INTO
399093         l_array_entity_id
399094       , l_array_legal_entity_id
399095       , l_array_entity_code
399096       , l_array_transaction_num
399097       , l_array_event_id
399098       , l_array_class_code
399099       , l_array_event_type
399100       , l_array_event_number
399101       , l_array_event_date
399102       , l_array_transaction_date
399103       , l_array_reference_num_1
399104       , l_array_reference_num_2
399105       , l_array_reference_num_3
399106       , l_array_reference_num_4
399107       , l_array_reference_char_1
399108       , l_array_reference_char_2
399109       , l_array_reference_char_3
399110       , l_array_reference_char_4
399111       , l_array_reference_date_1
399112       , l_array_reference_date_2
399113       , l_array_reference_date_3
399114       , l_array_reference_date_4
399115       , l_array_event_created_by
399116       , l_array_budgetary_control_flag 
399117       , l_array_source_1
399118       , l_array_source_2
399119       , l_array_source_3
399120       , l_array_source_4
399121       , l_array_source_5
399122       , l_array_source_22
399123       , l_array_source_32
399124       , l_array_source_33
399125       , l_array_source_35
399126       , l_array_source_40
399127       , l_array_source_41
399128       , l_array_source_42
399129       , l_array_source_43
399130       , l_array_source_44
399131       , l_array_source_45
399132       , l_array_source_59
399133       , l_array_source_85
399134       , l_array_source_85_meaning
399135       , l_array_source_114
399136       , l_array_source_114_meaning
399137       LIMIT l_rows;
399138 --
399139 IF (C_LEVEL_EVENT >= g_log_level) THEN
399140    trace
399141    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
399142    ,p_level    => C_LEVEL_EVENT
399143    ,p_module   => l_log_module);
399144 END IF;
399145 --
399146 EXIT WHEN l_array_entity_id.COUNT = 0;
399147 
399148 -- initialize arrays
399149 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
399150 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
399151 
399152 --
399153 -- Bug 4458708
399154 --
399155 XLA_AE_LINES_PKG.g_LineNumber := 0;
399156 
399157 
399158 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
399159 g_last_hdr_idx := l_array_event_id.LAST;
399160 --
399161 -- loop for the headers. Each iteration is for each header extract row
399162 -- fetched in header cursor
399163 --
399164 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
399165 
399166 --
399167 -- set event info as cache for other routines to refer event attributes
399168 --
399169 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
399170    (p_application_id           => p_application_id
399171    ,p_primary_ledger_id        => p_primary_ledger_id
399172    ,p_base_ledger_id           => p_base_ledger_id
399173    ,p_target_ledger_id         => p_target_ledger_id
399174    ,p_entity_id                => l_array_entity_id(hdr_idx)
399175    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
399176    ,p_entity_code              => l_array_entity_code(hdr_idx)
399177    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
399178    ,p_event_id                 => l_array_event_id(hdr_idx)
399179    ,p_event_class_code         => l_array_class_code(hdr_idx)
399180    ,p_event_type_code          => l_array_event_type(hdr_idx)
399181    ,p_event_number             => l_array_event_number(hdr_idx)
399182    ,p_event_date               => l_array_event_date(hdr_idx)
399183    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
399184    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
399185    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
399186    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
399187    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
399188    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
399189    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
399190    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
399191    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
399192    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
399193    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
399194    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
399195    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
399196    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
399197    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
399198 
399199 --
399200 -- set the status of entry to C_VALID (0)
399201 --
399202 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
399203 
399204 --
399205 -- initialize a row for ae header
399206 --
399207 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
399208 
399209 l_event_id := l_array_event_id(hdr_idx);
399210 
399211 --
399212 -- storing the hdr_idx for event. May be used by line cursor.
399213 --
399214 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
399215 
399216 --
399217 -- store sources from header extract. This can be improved to
399218 -- store only those sources from header extract that may be used in lines
399219 --
399220 
399221 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
399222 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
399223 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
399224 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
399225 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
399226 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
399227 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
399228 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
399229 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
399230 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
399231 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
399232 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
399233 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
399234 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
399235 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
399236 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
399237 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
399238 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
399239 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
399240 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
399241 
399242 --
399243 -- initilaize the status of ae headers for diffrent balance types
399244 -- the status is initialised to C_NOT_CREATED (2)
399245 --
399246 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
399247 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
399248 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
399249 
399250 --
399251 -- call api to validate and store accounting attributes for header
399252 --
399253 
399254 ------------------------------------------------------------
399255 -- Accrual Reversal : to get date for Standard Source (NONE)
399256 ------------------------------------------------------------
399257 l_acc_rev_gl_date_source := NULL;
399258 
399259      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
399260       l_rec_acct_attrs.array_date_value(1) := 
399261 xla_ae_sources_pkg.GetSystemSourceDate(
399262    p_source_code           => 'XLA_REFERENCE_DATE_1'
399263  , p_source_type_code      => 'Y'
399264  , p_source_application_id =>  602
399265 );
399266      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
399267       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
399268 
399269 
399270 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
399271 
399272 XLA_AE_HEADER_PKG.SetJeCategoryName;
399273 
399274 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
399275 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
399276 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
399277 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
399278 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
399279 
399280 
399281 -- No header level analytical criteria
399282 
399283 --
399284 --accounting attribute enhancement, bug 3612931
399285 --
399286 l_trx_reversal_source := SUBSTR(NULL, 1,30);
399287 
399288 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
399289    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
399290 
399291    xla_accounting_err_pkg.build_message
399292       (p_appli_s_name            => 'XLA'
399293       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
399294       ,p_token_1                 => 'ACCT_ATTR_NAME'
399295       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
399296       ,p_token_2                 => 'PRODUCT_NAME'
399297       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
399298       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
399299       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
399300       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
399301 
399302 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
399303    --
399304    -- following sets the accounting attributes needed to reverse
399305    -- accounting for a distributeion
399306    --
399307    xla_ae_lines_pkg.SetTrxReversalAttrs
399308       (p_event_id              => l_event_id
399309       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
399310       ,p_trx_reversal_source   => l_trx_reversal_source);
399311 
399312 END IF;
399313 
399314 
399315 ----------------------------------------------------------------
399316 -- 4262811 -  update the header statuses to invalid in need be
399317 ----------------------------------------------------------------
399318 --
399319 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
399320 
399321 
399322   -----------------------------------------------
399323   -- No accrual reversal for the event class/type
399324   -----------------------------------------------
399325 ----------------------------------------------------------------
399326 
399327 --
399328 -- this ends the header loop iteration for one bulk fetch
399329 --
399330 END LOOP;
399331 
399332 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
399333 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
399334 
399335 --
399336 -- insert dummy rows into lines gt table that were created due to
399337 -- transaction reversals
399338 --
399339 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
399340    l_result := XLA_AE_LINES_PKG.InsertLines;
399341 END IF;
399342 
399343 --
399344 -- reset the temp_line_num for each set of events fetched from header
399345 -- cursor rather than doing it for each new event in line cursor
399346 -- Bug 3939231
399347 --
399348 xla_ae_lines_pkg.g_temp_line_num := 0;
399349 
399350 
399351 
399352 --
399353 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
399354 --
399355 --
399356 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
399357 
399358       trace
399359          (p_msg      => 'SQL - FETCH line_cur'
399360          ,p_level    => C_LEVEL_STATEMENT
399361          ,p_module   => l_log_module);
399362 
399363 END IF;
399364 --
399365 --
399366 LOOP
399367   --
399368   FETCH line_cur BULK COLLECT INTO
399369         l_array_entity_id
399370       , l_array_legal_entity_id
399371       , l_array_entity_code
399372       , l_array_transaction_num
399373       , l_array_event_id
399374       , l_array_class_code
399375       , l_array_event_type
399376       , l_array_event_number
399377       , l_array_event_date
399378       , l_array_transaction_date
399379       , l_array_reference_num_1
399380       , l_array_reference_num_2
399381       , l_array_reference_num_3
399382       , l_array_reference_num_4
399383       , l_array_reference_char_1
399384       , l_array_reference_char_2
399385       , l_array_reference_char_3
399386       , l_array_reference_char_4
399387       , l_array_reference_date_1
399388       , l_array_reference_date_2
399389       , l_array_reference_date_3
399390       , l_array_reference_date_4
399391       , l_array_event_created_by
399392       , l_array_budgetary_control_flag
399393       , l_array_extract_line_num 
399394       , l_array_source_11
399395       , l_array_source_15
399396       , l_array_source_84
399397       , l_array_source_88
399398       , l_array_source_91
399399       , l_array_source_92
399400       , l_array_source_93
399401       , l_array_source_94
399402       , l_array_source_95
399403       , l_array_source_97
399404       , l_array_source_108
399405       LIMIT l_rows;
399406 
399407   --
399408   IF (C_LEVEL_EVENT >= g_log_level) THEN
399409             trace
399410                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
399411                ,p_level    => C_LEVEL_EVENT
399412                ,p_module   => l_log_module);
399413   END IF;
399414   --
399415   EXIT WHEN l_array_entity_id.count = 0;
399416 
399417   XLA_AE_LINES_PKG.g_rec_lines := null;
399418 
399419 --
399420 -- Bug 4458708
399421 --
399422 XLA_AE_LINES_PKG.g_LineNumber := 0;
399423 --
399424 --
399425 
399426 FOR Idx IN 1..l_array_event_id.count LOOP
399427    --
399428    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
399429    --
399430    l_event_id := l_array_event_id(idx);  -- 5648433
399431 
399432    --
399433    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
399434    --
399435 
399436    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
399437              (g_array_event(l_event_id).array_value_num('header_index'))
399438          ,'N'
399439          ) <> 'Y'
399440    THEN
399441       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
399442          trace
399443             (p_msg      => 'Trancaction revesal option is not Y '
399444             ,p_level    => C_LEVEL_STATEMENT
399445             ,p_module   => l_log_module);
399446       END IF;
399447 
399448 --
399449 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
399450 --
399451 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
399452 --
399453 -- set event info as cache for other routines to refer event attributes
399454 --
399455 
399456 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
399457    l_previous_event_id := l_event_id;
399458 
399459    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
399460       (p_application_id           => p_application_id
399461       ,p_primary_ledger_id        => p_primary_ledger_id
399462       ,p_base_ledger_id           => p_base_ledger_id
399463       ,p_target_ledger_id         => p_target_ledger_id
399464       ,p_entity_id                => l_array_entity_id(Idx)
399465       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
399466       ,p_entity_code              => l_array_entity_code(Idx)
399467       ,p_transaction_num          => l_array_transaction_num(Idx)
399468       ,p_event_id                 => l_array_event_id(Idx)
399469       ,p_event_class_code         => l_array_class_code(Idx)
399470       ,p_event_type_code          => l_array_event_type(Idx)
399471       ,p_event_number             => l_array_event_number(Idx)
399472       ,p_event_date               => l_array_event_date(Idx)
399473       ,p_transaction_date         => l_array_transaction_date(Idx)
399474       ,p_reference_num_1          => l_array_reference_num_1(Idx)
399475       ,p_reference_num_2          => l_array_reference_num_2(Idx)
399476       ,p_reference_num_3          => l_array_reference_num_3(Idx)
399477       ,p_reference_num_4          => l_array_reference_num_4(Idx)
399478       ,p_reference_char_1         => l_array_reference_char_1(Idx)
399479       ,p_reference_char_2         => l_array_reference_char_2(Idx)
399480       ,p_reference_char_3         => l_array_reference_char_3(Idx)
399481       ,p_reference_char_4         => l_array_reference_char_4(Idx)
399482       ,p_reference_date_1         => l_array_reference_date_1(Idx)
399483       ,p_reference_date_2         => l_array_reference_date_2(Idx)
399484       ,p_reference_date_3         => l_array_reference_date_3(Idx)
399485       ,p_reference_date_4         => l_array_reference_date_4(Idx)
399486       ,p_event_created_by         => l_array_event_created_by(Idx)
399487       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
399488        --
399489 END IF;
399490 
399491 
399492 
399493 --
399494 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
399495 
399496 l_acct_reversal_source := SUBSTR(NULL, 1,30);
399497 
399498 IF l_continue_with_lines THEN
399499    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
399500       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
399501 
399502       xla_accounting_err_pkg.build_message
399503          (p_appli_s_name            => 'XLA'
399504          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
399505          ,p_token_1                 => 'LINE_NUMBER'
399506          ,p_value_1                 => l_array_extract_line_num(Idx)
399507          ,p_token_2                 => 'PRODUCT_NAME'
399508          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
399509          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
399510          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
399511          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
399512 
399513    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
399514       --
399515       -- following sets the accounting attributes needed to reverse
399516       -- accounting for a distributeion
399517       --
399518 
399519       --
399520       -- 5217187
399521       --
399522       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
399523       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
399524                                        g_array_event(l_event_id).array_value_num('header_index'));
399525       --
399526       --
399527 
399528       -- No reversal code generated
399529 
399530       xla_ae_lines_pkg.SetAcctReversalAttrs
399531          (p_event_id             => l_event_id
399532          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
399533          ,p_calculate_acctd_flag => l_calculate_acctd_flag
399534          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
399535    END IF;
399536 
399537    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
399538        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
399539 
399540 --
399541 AcctLineType_151 (
399542  p_application_id  => p_application_id
399543  ,p_event_id     => l_event_id
399544  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399545  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399546  ,p_actual_flag => l_actual_flag
399547  ,p_balance_type_code => l_balance_type_code
399548  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399549  
399550  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399551  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399552  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399553  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399554  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399555  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
399556  , p_source_84 => l_array_source_84(Idx)
399557  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399558  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399559  , p_source_88 => l_array_source_88(Idx)
399560  , p_source_91 => l_array_source_91(Idx)
399561  , p_source_92 => l_array_source_92(Idx)
399562  , p_source_93 => l_array_source_93(Idx)
399563  , p_source_94 => l_array_source_94(Idx)
399564  , p_source_95 => l_array_source_95(Idx)
399565  , p_source_97 => l_array_source_97(Idx)
399566  );
399567 If(l_balance_type_code = 'A') THEN
399568   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399569 END IF;
399570 
399571 --
399572 
399573 
399574 --
399575 AcctLineType_170 (
399576  p_application_id  => p_application_id
399577  ,p_event_id     => l_event_id
399578  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399579  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399580  ,p_actual_flag => l_actual_flag
399581  ,p_balance_type_code => l_balance_type_code
399582  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399583  
399584  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399585  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399586  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399587  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399588  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399589  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
399590  , p_source_84 => l_array_source_84(Idx)
399591  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399592  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399593  , p_source_88 => l_array_source_88(Idx)
399594  , p_source_91 => l_array_source_91(Idx)
399595  , p_source_92 => l_array_source_92(Idx)
399596  , p_source_93 => l_array_source_93(Idx)
399597  , p_source_94 => l_array_source_94(Idx)
399598  , p_source_95 => l_array_source_95(Idx)
399599  , p_source_97 => l_array_source_97(Idx)
399600  );
399601 If(l_balance_type_code = 'A') THEN
399602   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399603 END IF;
399604 
399605 --
399606 
399607 
399608 --
399609 AcctLineType_179 (
399610  p_application_id  => p_application_id
399611  ,p_event_id     => l_event_id
399612  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399613  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399614  ,p_actual_flag => l_actual_flag
399615  ,p_balance_type_code => l_balance_type_code
399616  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399617  
399618  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399619  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399620  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399621  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399622  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399623  , p_source_11 => l_array_source_11(Idx)
399624  , p_source_84 => l_array_source_84(Idx)
399625  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399626  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399627  , p_source_88 => l_array_source_88(Idx)
399628  , p_source_91 => l_array_source_91(Idx)
399629  , p_source_92 => l_array_source_92(Idx)
399630  , p_source_93 => l_array_source_93(Idx)
399631  , p_source_94 => l_array_source_94(Idx)
399632  , p_source_95 => l_array_source_95(Idx)
399633  , p_source_97 => l_array_source_97(Idx)
399634  );
399635 If(l_balance_type_code = 'A') THEN
399636   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399637 END IF;
399638 
399639 --
399640 
399641 
399642 --
399643 AcctLineType_202 (
399644  p_application_id  => p_application_id
399645  ,p_event_id     => l_event_id
399646  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399647  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399648  ,p_actual_flag => l_actual_flag
399649  ,p_balance_type_code => l_balance_type_code
399650  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399651  
399652  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399653  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399654  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399655  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399656  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399657  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
399658  , p_source_84 => l_array_source_84(Idx)
399659  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399660  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399661  , p_source_88 => l_array_source_88(Idx)
399662  , p_source_91 => l_array_source_91(Idx)
399663  , p_source_92 => l_array_source_92(Idx)
399664  , p_source_93 => l_array_source_93(Idx)
399665  , p_source_94 => l_array_source_94(Idx)
399666  , p_source_95 => l_array_source_95(Idx)
399667  , p_source_97 => l_array_source_97(Idx)
399668  );
399669 If(l_balance_type_code = 'A') THEN
399670   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399671 END IF;
399672 
399673 --
399674 
399675 
399676 --
399677 AcctLineType_208 (
399678  p_application_id  => p_application_id
399679  ,p_event_id     => l_event_id
399680  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399681  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399682  ,p_actual_flag => l_actual_flag
399683  ,p_balance_type_code => l_balance_type_code
399684  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399685  
399686  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399687  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399688  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399689  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399690  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399691  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
399692  , p_source_84 => l_array_source_84(Idx)
399693  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399694  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399695  , p_source_88 => l_array_source_88(Idx)
399696  , p_source_91 => l_array_source_91(Idx)
399697  , p_source_92 => l_array_source_92(Idx)
399698  , p_source_93 => l_array_source_93(Idx)
399699  , p_source_94 => l_array_source_94(Idx)
399700  , p_source_95 => l_array_source_95(Idx)
399701  , p_source_97 => l_array_source_97(Idx)
399702  );
399703 If(l_balance_type_code = 'A') THEN
399704   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399705 END IF;
399706 
399707 --
399708 
399709 
399710 --
399711 AcctLineType_286 (
399712  p_application_id  => p_application_id
399713  ,p_event_id     => l_event_id
399714  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399715  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399716  ,p_actual_flag => l_actual_flag
399717  ,p_balance_type_code => l_balance_type_code
399718  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399719  
399720  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399721  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399722  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399723  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399724  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399725  , p_source_15 => l_array_source_15(Idx)
399726  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
399727  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
399728  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
399729  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
399730  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
399731  , p_source_84 => l_array_source_84(Idx)
399732  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399733  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399734  , p_source_88 => l_array_source_88(Idx)
399735  , p_source_91 => l_array_source_91(Idx)
399736  , p_source_92 => l_array_source_92(Idx)
399737  , p_source_93 => l_array_source_93(Idx)
399738  , p_source_94 => l_array_source_94(Idx)
399739  , p_source_95 => l_array_source_95(Idx)
399740  , p_source_97 => l_array_source_97(Idx)
399741  , p_source_108 => l_array_source_108(Idx)
399742  );
399743 If(l_balance_type_code = 'A') THEN
399744   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399745 END IF;
399746 
399747 --
399748 
399749 
399750 --
399751 AcctLineType_306 (
399752  p_application_id  => p_application_id
399753  ,p_event_id     => l_event_id
399754  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399755  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399756  ,p_actual_flag => l_actual_flag
399757  ,p_balance_type_code => l_balance_type_code
399758  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399759  
399760  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399761  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399762  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399763  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399764  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399765  , p_source_11 => l_array_source_11(Idx)
399766  , p_source_84 => l_array_source_84(Idx)
399767  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399768  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399769  , p_source_88 => l_array_source_88(Idx)
399770  , p_source_91 => l_array_source_91(Idx)
399771  , p_source_92 => l_array_source_92(Idx)
399772  , p_source_93 => l_array_source_93(Idx)
399773  , p_source_94 => l_array_source_94(Idx)
399774  , p_source_95 => l_array_source_95(Idx)
399775  , p_source_97 => l_array_source_97(Idx)
399776  );
399777 If(l_balance_type_code = 'A') THEN
399778   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399779 END IF;
399780 
399781 --
399782 
399783 
399784 --
399785 AcctLineType_345 (
399786  p_application_id  => p_application_id
399787  ,p_event_id     => l_event_id
399788  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399789  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399790  ,p_actual_flag => l_actual_flag
399791  ,p_balance_type_code => l_balance_type_code
399792  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399793  
399794  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399795  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399796  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399797  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399798  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399799  , p_source_11 => l_array_source_11(Idx)
399800  , p_source_84 => l_array_source_84(Idx)
399801  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399802  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399803  , p_source_88 => l_array_source_88(Idx)
399804  , p_source_91 => l_array_source_91(Idx)
399805  , p_source_92 => l_array_source_92(Idx)
399806  , p_source_93 => l_array_source_93(Idx)
399807  , p_source_94 => l_array_source_94(Idx)
399808  , p_source_95 => l_array_source_95(Idx)
399809  , p_source_97 => l_array_source_97(Idx)
399810  );
399811 If(l_balance_type_code = 'A') THEN
399812   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399813 END IF;
399814 
399815 --
399816 
399817 
399818 --
399819 AcctLineType_378 (
399820  p_application_id  => p_application_id
399821  ,p_event_id     => l_event_id
399822  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399823  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399824  ,p_actual_flag => l_actual_flag
399825  ,p_balance_type_code => l_balance_type_code
399826  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399827  
399828  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399829  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399830  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399831  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399832  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399833  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
399834  , p_source_84 => l_array_source_84(Idx)
399835  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399836  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399837  , p_source_88 => l_array_source_88(Idx)
399838  , p_source_91 => l_array_source_91(Idx)
399839  , p_source_92 => l_array_source_92(Idx)
399840  , p_source_93 => l_array_source_93(Idx)
399841  , p_source_94 => l_array_source_94(Idx)
399842  , p_source_95 => l_array_source_95(Idx)
399843  , p_source_97 => l_array_source_97(Idx)
399844  );
399845 If(l_balance_type_code = 'A') THEN
399846   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399847 END IF;
399848 
399849 --
399850 
399851 
399852 --
399853 AcctLineType_450 (
399854  p_application_id  => p_application_id
399855  ,p_event_id     => l_event_id
399856  ,p_calculate_acctd_flag => l_calculate_acctd_flag
399857  ,p_calculate_g_l_flag => l_calculate_g_l_flag
399858  ,p_actual_flag => l_actual_flag
399859  ,p_balance_type_code => l_balance_type_code
399860  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
399861  
399862  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
399863  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
399864  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
399865  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
399866  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
399867  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
399868  , p_source_84 => l_array_source_84(Idx)
399869  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
399870  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
399871  , p_source_88 => l_array_source_88(Idx)
399872  , p_source_91 => l_array_source_91(Idx)
399873  , p_source_92 => l_array_source_92(Idx)
399874  , p_source_93 => l_array_source_93(Idx)
399875  , p_source_94 => l_array_source_94(Idx)
399876  , p_source_95 => l_array_source_95(Idx)
399877  , p_source_97 => l_array_source_97(Idx)
399878  );
399879 If(l_balance_type_code = 'A') THEN
399880   l_actual_gain_loss_ref := l_gain_or_loss_ref;
399881 END IF;
399882 
399883 --
399884 
399885       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
399886       -- or secondary ledger that has different currency with primary
399887       -- or alc that is calculated by sla
399888       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
399889             (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'))
399890 
399891 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
399892 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
399893           AND (l_actual_flag = 'A')) THEN
399894         XLA_AE_LINES_PKG.CreateGainOrLossLines(
399895           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
399896          ,p_application_id   => p_application_id
399897          ,p_amb_context_code => 'DEFAULT'
399898          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
399899          ,p_event_class_code => C_EVENT_CLASS_CODE
399900          ,p_event_type_code  => C_EVENT_TYPE_CODE
399901          
399902          ,p_gain_ccid        => -1
399903          ,p_loss_ccid        => -1
399904 
399905          ,p_actual_flag      => l_actual_flag
399906          ,p_enc_flag         => null
399907          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
399908          ,p_enc_g_l_ref      => null
399909          );
399910       END IF;
399911    END IF;
399912 END IF;
399913 
399914    ELSE
399915       --
399916       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
399917       --
399918       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
399919          trace
399920             (p_msg      => 'Trancaction revesal option is Y'
399921             ,p_level    => C_LEVEL_STATEMENT
399922             ,p_module   => l_log_module);
399923       END IF;
399924    END IF;
399925 
399926 END LOOP;
399927 l_result := XLA_AE_LINES_PKG.InsertLines ;
399928 end loop;
399929 close line_cur;
399930 
399931 
399932 --
399933 -- insert headers into xla_ae_headers_gt table
399934 --
399935 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
399936 
399937 -- insert into errors table here.
399938 
399939 END LOOP;
399940 
399941 --
399942 -- 4865292
399943 --
399944 -- Compare g_hdr_extract_count with event count in
399945 -- CreateHeadersAndLines.
399946 --
399947 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
399948 
399949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
399950    trace (p_msg     => '# rows extracted from header extract objects '
399951                     || ' (running total): '
399952                     || g_hdr_extract_count
399953          ,p_level   => C_LEVEL_STATEMENT
399954          ,p_module  => l_log_module);
399955 END IF;
399956 
399957 CLOSE header_cur;
399958 --
399959 
399960 --
399961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
399962    trace
399963       (p_msg      => 'END of EventType_604'
399964       ,p_level    => C_LEVEL_PROCEDURE
399965       ,p_module   => l_log_module);
399966 END IF;
399967 --
399968 RETURN l_result;
399969 EXCEPTION
399970 WHEN xla_exceptions_pkg.application_exception THEN
399971    
399972 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
399973 
399974    
399975 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
399976 
399977    RAISE;
399978 
399979 WHEN NO_DATA_FOUND THEN
399980 
399981 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
399982 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
399983 
399984 FOR header_record IN header_cur
399985 LOOP
399986     l_array_header_events(header_record.event_id) := header_record.event_id;
399987 END LOOP;
399988 
399989 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
399990 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
399991 
399992 fnd_file.put_line(fnd_file.LOG, '                    ');
399993 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
399994 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
399995 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
399996 
399997 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
399998 LOOP
399999 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
400000 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
400001         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
400002 	END IF;
400003 END LOOP;
400004 
400005 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
400006 fnd_file.put_line(fnd_file.LOG, '                    ');
400007 
400008 
400009 xla_exceptions_pkg.raise_message
400010       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_604');
400011 
400012 
400013 WHEN OTHERS THEN
400014    xla_exceptions_pkg.raise_message
400015       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_604');
400016 END EventType_604;
400017 --
400018 
400019 ---------------------------------------
400020 --
400021 -- PRIVATE PROCEDURE
400022 --         insert_sources_605
400023 --
400024 ----------------------------------------
400025 --
400026 PROCEDURE insert_sources_605(
400027                                 p_target_ledger_id       IN NUMBER
400028                               , p_language               IN VARCHAR2
400029                               , p_sla_ledger_id          IN NUMBER
400030                               , p_pad_start_date         IN DATE
400031                               , p_pad_end_date           IN DATE
400032                          )
400033 IS
400034 
400035 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_TP';
400036 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
400037 p_apps_owner                   VARCHAR2(30);
400038 l_log_module                   VARCHAR2(240);
400039 BEGIN
400040 IF g_log_enabled THEN
400041       l_log_module := C_DEFAULT_MODULE||'.insert_sources_605';
400042 END IF;
400043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
400044 
400045       trace
400046          (p_msg      => 'BEGIN of insert_sources_605'
400047          ,p_level    => C_LEVEL_PROCEDURE
400048          ,p_module   => l_log_module);
400049 
400050 END IF;
400051 
400052 -- select APPS owner
400053 SELECT oracle_username
400054   INTO p_apps_owner
400055   FROM fnd_oracle_userid
400056  WHERE read_only_flag = 'U'
400057 ;
400058 
400059 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
400060       trace
400061          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
400062                         ' - p_language = '||p_language||
400063                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
400064                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
400065                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
400066                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
400067          ,p_level    => C_LEVEL_STATEMENT
400068          ,p_module   => l_log_module);
400069 END IF;
400070 
400071 
400072 --
400073 INSERT INTO xla_diag_sources --hdr1
400074 (
400075         event_id
400076       , ledger_id
400077       , sla_ledger_id
400078       , description_language
400079       , object_name
400080       , object_type_code
400081       , line_number
400082       , source_application_id
400083       , source_type_code
400084       , source_code
400085       , source_value
400086       , source_meaning
400087       , created_by
400088       , creation_date
400089       , last_update_date
400090       , last_updated_by
400091       , last_update_login
400092       , program_update_date
400093       , program_application_id
400094       , program_id
400095       , request_id
400096 )
400097 SELECT
400098         event_id
400099       , p_target_ledger_id
400100       , p_sla_ledger_id
400101       , p_language
400102       , object_name
400103       , object_type_code
400104       , line_number
400105       , source_application_id
400106       , source_type_code
400107       , source_code
400108       , SUBSTR(source_value ,1,1996)
400109       , SUBSTR(source_meaning,1,200)
400110       , xla_environment_pkg.g_Usr_Id
400111       , TRUNC(SYSDATE)
400112       , TRUNC(SYSDATE)
400113       , xla_environment_pkg.g_Usr_Id
400114       , xla_environment_pkg.g_Login_Id
400115       , TRUNC(SYSDATE)
400116       , xla_environment_pkg.g_Prog_Appl_Id
400117       , xla_environment_pkg.g_Prog_Id
400118       , xla_environment_pkg.g_Req_Id
400119   FROM (
400120        SELECT xet.event_id                  event_id
400121             , 0                             line_number
400122             , CASE r
400123                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
400124                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
400125                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
400126                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
400127                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
400128                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
400129                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
400130                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
400131                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
400132                 WHEN 10 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
400133                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
400134                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
400135                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
400136                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
400137                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
400138                 WHEN 16 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
400139                 WHEN 17 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
400140                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
400141                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
400142                 
400143                ELSE null
400144               END                           object_name
400145             , CASE r
400146                 WHEN 1 THEN 'HEADER' 
400147                 WHEN 2 THEN 'HEADER' 
400148                 WHEN 3 THEN 'HEADER' 
400149                 WHEN 4 THEN 'HEADER' 
400150                 WHEN 5 THEN 'HEADER' 
400151                 WHEN 6 THEN 'HEADER' 
400152                 WHEN 7 THEN 'HEADER' 
400153                 WHEN 8 THEN 'HEADER' 
400154                 WHEN 9 THEN 'HEADER' 
400155                 WHEN 10 THEN 'HEADER' 
400156                 WHEN 11 THEN 'HEADER' 
400157                 WHEN 12 THEN 'HEADER' 
400158                 WHEN 13 THEN 'HEADER' 
400159                 WHEN 14 THEN 'HEADER' 
400160                 WHEN 15 THEN 'HEADER' 
400161                 WHEN 16 THEN 'HEADER' 
400162                 WHEN 17 THEN 'HEADER' 
400163                 WHEN 18 THEN 'HEADER' 
400164                 WHEN 19 THEN 'HEADER' 
400165                 
400166                 ELSE null
400167               END                           object_type_code
400168             , CASE r
400169                 WHEN 1 THEN '707' 
400170                 WHEN 2 THEN '707' 
400171                 WHEN 3 THEN '707' 
400172                 WHEN 4 THEN '707' 
400173                 WHEN 5 THEN '707' 
400174                 WHEN 6 THEN '707' 
400175                 WHEN 7 THEN '707' 
400176                 WHEN 8 THEN '707' 
400177                 WHEN 9 THEN '707' 
400178                 WHEN 10 THEN '707' 
400179                 WHEN 11 THEN '707' 
400180                 WHEN 12 THEN '707' 
400181                 WHEN 13 THEN '707' 
400182                 WHEN 14 THEN '707' 
400183                 WHEN 15 THEN '707' 
400184                 WHEN 16 THEN '707' 
400185                 WHEN 17 THEN '707' 
400186                 WHEN 18 THEN '707' 
400187                 WHEN 19 THEN '707' 
400188                 
400189                 ELSE null
400190               END                           source_application_id
400191             , 'S'             source_type_code
400192             , CASE r
400193                 WHEN 1 THEN 'TRANSACTION_ID' 
400194                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
400195                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
400196                 WHEN 4 THEN 'TRANSACTION_UOM' 
400197                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
400198                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
400199                 WHEN 7 THEN 'INV_TXN_TRANSPO_DIST_ACCT' 
400200                 WHEN 8 THEN 'INTERORG_REVENUE_ACCOUNT' 
400201                 WHEN 9 THEN 'INTERORG_PAYABLES_ACCOUNT' 
400202                 WHEN 10 THEN 'INTERORG_TXFR_CREDIT_ACCOUNT' 
400203                 WHEN 11 THEN 'PLA_MATERIAL_ACCOUNT' 
400204                 WHEN 12 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
400205                 WHEN 13 THEN 'PLA_RESOURCE_ACCOUNT' 
400206                 WHEN 14 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
400207                 WHEN 15 THEN 'PLA_OVERHEAD_ACCOUNT' 
400208                 WHEN 16 THEN 'INV_ORG_PUR_PRICE_VAR_ACCT' 
400209                 WHEN 17 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
400210                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
400211                 WHEN 19 THEN 'TRANSFER_TO_GL_INDICATOR' 
400212                 
400213                 ELSE null
400214               END                           source_code
400215             , CASE r
400216                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
400217                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
400218                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
400219                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
400220                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
400221                 WHEN 6 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
400222                 WHEN 7 THEN TO_CHAR(h5.INV_TXN_TRANSPO_DIST_ACCT)
400223                 WHEN 8 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
400224                 WHEN 9 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
400225                 WHEN 10 THEN TO_CHAR(h1.INTERORG_TXFR_CREDIT_ACCOUNT)
400226                 WHEN 11 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
400227                 WHEN 12 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
400228                 WHEN 13 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
400229                 WHEN 14 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
400230                 WHEN 15 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
400231                 WHEN 16 THEN TO_CHAR(h4.INV_ORG_PUR_PRICE_VAR_ACCT)
400232                 WHEN 17 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
400233                 WHEN 18 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
400234                 WHEN 19 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
400235                 
400236                 ELSE null
400237               END                           source_value
400238             , CASE r
400239                 WHEN 18 THEN fvl85.meaning
400240                 WHEN 19 THEN fvl114.meaning
400241                 
400242                 ELSE null
400243               END               source_meaning
400244         FROM xla_events_gt     xet  
400245       , CST_XLA_INTERORG_PARAMS_REF_V  h1
400246       , CST_XLA_INV_HEADERS_V  h2
400247       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
400248       , CST_XLA_INV_REF_V  h5
400249       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
400250       , CST_XLA_INV_TXN_TYPES_REF_V  h7
400251       , CST_XLA_PLA_CATEGORY_REF_V  h8
400252   , fnd_lookup_values    fvl85
400253   , fnd_lookup_values    fvl114
400254             ,(select rownum r from all_objects where rownum <= 19 and owner = p_apps_owner)
400255        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
400256          AND xet.event_type_code = C_EVENT_TYPE_CODE
400257             AND h2.event_id = xet.event_id
400258   AND h1.event_id (+) = h2.event_id
400259  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id  (+) = h2.inventory_item_id  and h6.organization_id  (+) = h2.organization_id AND h7.inv_transaction_type_id  (+) = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id  and h8.pla_cat_item_id   (+) = h2.inventory_item_id  and h8.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
400260   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
400261   AND fvl85.view_application_id(+) = 700
400262   AND fvl85.language(+)            = USERENV('LANG')
400263      AND fvl114.lookup_type(+)         = 'YES_NO'
400264   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
400265   AND fvl114.view_application_id(+) = 0
400266   AND fvl114.language(+)            = USERENV('LANG')
400267   
400268 )
400269 ;
400270 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
400271 
400272       trace
400273          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
400274          ,p_level    => C_LEVEL_STATEMENT
400275          ,p_module   => l_log_module);
400276 
400277 END IF;
400278 --
400279 
400280 
400281 
400282 --
400283 INSERT INTO xla_diag_sources --line1
400284 (
400285         event_id
400286       , ledger_id
400287       , sla_ledger_id
400288       , description_language
400289       , object_name
400290       , object_type_code
400291       , line_number
400292       , source_application_id
400293       , source_type_code
400294       , source_code
400295       , source_value
400296       , source_meaning
400297       , created_by
400298       , creation_date
400299       , last_update_date
400300       , last_updated_by
400301       , last_update_login
400302       , program_update_date
400303       , program_application_id
400304       , program_id
400305       , request_id
400306 )
400307 SELECT  event_id
400308       , p_target_ledger_id
400309       , p_sla_ledger_id
400310       , p_language
400311       , object_name
400312       , object_type_code
400313       , line_number
400314       , source_application_id
400315       , source_type_code
400316       , source_code
400317       , SUBSTR(source_value,1,1996)
400318       , SUBSTR(source_meaning,1,200)
400319       , xla_environment_pkg.g_Usr_Id
400320       , TRUNC(SYSDATE)
400321       , TRUNC(SYSDATE)
400322       , xla_environment_pkg.g_Usr_Id
400323       , xla_environment_pkg.g_Login_Id
400324       , TRUNC(SYSDATE)
400325       , xla_environment_pkg.g_Prog_Appl_Id
400326       , xla_environment_pkg.g_Prog_Id
400327       , xla_environment_pkg.g_Req_Id
400328   FROM (
400329        SELECT xet.event_id                  event_id
400330             , l3.line_number                 line_number
400331             , CASE r
400332                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
400333                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
400334                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
400335                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
400336                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
400337                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
400338                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
400339                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
400340                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
400341                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
400342                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
400343                 
400344                ELSE null
400345               END                           object_name
400346             , CASE r
400347                 WHEN 1 THEN 'LINE' 
400348                 WHEN 2 THEN 'LINE' 
400349                 WHEN 3 THEN 'LINE' 
400350                 WHEN 4 THEN 'LINE' 
400351                 WHEN 5 THEN 'LINE' 
400352                 WHEN 6 THEN 'LINE' 
400353                 WHEN 7 THEN 'LINE' 
400354                 WHEN 8 THEN 'LINE' 
400355                 WHEN 9 THEN 'LINE' 
400356                 WHEN 10 THEN 'LINE' 
400357                 WHEN 11 THEN 'LINE' 
400358                 
400359                 ELSE null
400360               END                           object_type_code
400361             , CASE r
400362                 WHEN 1 THEN '707' 
400363                 WHEN 2 THEN '707' 
400364                 WHEN 3 THEN '707' 
400365                 WHEN 4 THEN '707' 
400366                 WHEN 5 THEN '707' 
400367                 WHEN 6 THEN '707' 
400368                 WHEN 7 THEN '707' 
400369                 WHEN 8 THEN '707' 
400370                 WHEN 9 THEN '707' 
400371                 WHEN 10 THEN '707' 
400372                 WHEN 11 THEN '707' 
400373                 
400374                 ELSE null
400375               END                           source_application_id
400376             , 'S'             source_type_code
400377             , CASE r
400378                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
400379                 WHEN 2 THEN 'COST_ELEMENT_ID' 
400380                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
400381                 WHEN 4 THEN 'CURRENCY_CODE' 
400382                 WHEN 5 THEN 'ENTERED_AMOUNT' 
400383                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
400384                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
400385                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
400386                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
400387                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
400388                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
400389                 
400390                 ELSE null
400391               END                           source_code
400392             , CASE r
400393                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
400394                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
400395                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
400396                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
400397                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
400398                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
400399                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
400400                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
400401                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
400402                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
400403                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
400404                 
400405                 ELSE null
400406               END                           source_value
400407             , CASE r
400408                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
400409                           1009615
400410                          ,TO_CHAR(l3.COST_ELEMENT_ID)
400411                          ,'COST_ELEMENT_ID'
400412                          ,'S'
400413                          ,707)
400414                 
400415                 ELSE null
400416               END               source_meaning
400417          FROM  xla_events_gt     xet  
400418         , CST_XLA_INV_LINES_V  l3
400419             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
400420         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
400421           AND xet.event_type_code = C_EVENT_TYPE_CODE
400422             AND l3.event_id          = xet.event_id
400423 
400424 )
400425 ;
400426 --
400427 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
400428 
400429       trace
400430          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
400431          ,p_level    => C_LEVEL_STATEMENT
400432          ,p_module   => l_log_module);
400433 
400434 END IF;
400435 
400436 
400437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
400438       trace
400439          (p_msg      => 'END of insert_sources_605'
400440          ,p_level    => C_LEVEL_PROCEDURE
400441          ,p_module   => l_log_module);
400442 END IF;
400443 EXCEPTION
400444   WHEN xla_exceptions_pkg.application_exception THEN
400445       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
400446             trace
400447                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
400448                ,p_level    => C_LEVEL_EXCEPTION
400449                ,p_module   => l_log_module);
400450       END IF;
400451       RAISE;
400452   WHEN OTHERS THEN
400453       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
400454             trace
400455                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
400456                ,p_level    => C_LEVEL_EXCEPTION
400457                ,p_module   => l_log_module);
400458        END IF;
400459        xla_exceptions_pkg.raise_message
400460            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_605');
400461 END insert_sources_605;
400462 --
400463 
400464 ---------------------------------------
400465 --
400466 -- PRIVATE FUNCTION
400467 --         EventType_605
400468 --
400469 ----------------------------------------
400470 --
400471 FUNCTION EventType_605
400472        (p_application_id         IN NUMBER
400473        ,p_base_ledger_id         IN NUMBER
400474        ,p_target_ledger_id       IN NUMBER
400475        ,p_language               IN VARCHAR2
400476        ,p_currency_code          IN VARCHAR2
400477        ,p_sla_ledger_id          IN NUMBER
400478        ,p_pad_start_date         IN DATE
400479        ,p_pad_end_date           IN DATE
400480        ,p_primary_ledger_id      IN NUMBER)
400481 RETURN BOOLEAN IS
400482 --
400483 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UDIR_INTERORG_SHIP_TP';
400484 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
400485 
400486 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
400487 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
400488 --
400489 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400490 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400491 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
400492 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
400493 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400494 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
400495 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
400496 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400497 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
400498 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
400499 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400500 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400501 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400502 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
400503 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
400504 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
400505 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
400506 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
400507 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
400508 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
400509 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
400510 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
400511 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
400512 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
400513 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
400514 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
400515 
400516 l_event_id                             NUMBER;
400517 l_previous_event_id                    NUMBER;
400518 l_first_event_id                       NUMBER;
400519 l_last_event_id                        NUMBER;
400520 
400521 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
400522 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
400523 --
400524 --
400525 l_result                    BOOLEAN := TRUE;
400526 l_rows                      NUMBER  := 1000;
400527 l_event_type_name           VARCHAR2(80) := 'User-defined Direct Interorg Shipment, Transfer Price';
400528 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
400529 l_description               VARCHAR2(4000);
400530 l_transaction_reversal      NUMBER;
400531 l_ae_header_id              NUMBER;
400532 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
400533 l_log_module                VARCHAR2(240);
400534 --
400535 l_acct_reversal_source      VARCHAR2(30);
400536 l_trx_reversal_source       VARCHAR2(30);
400537 
400538 l_continue_with_lines       BOOLEAN := TRUE;
400539 --
400540 l_acc_rev_gl_date_source    DATE;                      -- 4262811
400541 --
400542 type t_array_event_id is table of number index by binary_integer;
400543 
400544 l_rec_array_event                    t_rec_array_event;
400545 l_null_rec_array_event               t_rec_array_event;
400546 l_array_ae_header_id                 xla_number_array_type;
400547 l_actual_flag                        VARCHAR2(1) := NULL;
400548 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
400549 l_balance_type_code                  VARCHAR2(1) :=NULL;
400550 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
400551 
400552 --
400553 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
400554 --
400555 
400556 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
400557 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
400558 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
400559 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
400560 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
400561 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400562 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_TRANSPO_DIST_ACCT%TYPE INDEX BY BINARY_INTEGER;
400563 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400564 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400565 TYPE t_array_source_40 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_TXFR_CREDIT_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400566 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400567 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400568 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400569 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400570 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400571 TYPE t_array_source_58 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_PUR_PRICE_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
400572 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
400573 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
400574 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
400575 
400576 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
400577 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
400578 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
400579 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
400580 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
400581 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
400582 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
400583 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
400584 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
400585 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
400586 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
400587 
400588 l_array_source_1              t_array_source_1;
400589 l_array_source_2              t_array_source_2;
400590 l_array_source_3              t_array_source_3;
400591 l_array_source_4              t_array_source_4;
400592 l_array_source_5              t_array_source_5;
400593 l_array_source_22              t_array_source_22;
400594 l_array_source_32              t_array_source_32;
400595 l_array_source_33              t_array_source_33;
400596 l_array_source_35              t_array_source_35;
400597 l_array_source_40              t_array_source_40;
400598 l_array_source_41              t_array_source_41;
400599 l_array_source_42              t_array_source_42;
400600 l_array_source_43              t_array_source_43;
400601 l_array_source_44              t_array_source_44;
400602 l_array_source_45              t_array_source_45;
400603 l_array_source_58              t_array_source_58;
400604 l_array_source_59              t_array_source_59;
400605 l_array_source_85              t_array_source_85;
400606 l_array_source_85_meaning      t_array_lookup_meaning;
400607 l_array_source_114              t_array_source_114;
400608 l_array_source_114_meaning      t_array_lookup_meaning;
400609 
400610 l_array_source_11      t_array_source_11;
400611 l_array_source_15      t_array_source_15;
400612 l_array_source_84      t_array_source_84;
400613 l_array_source_88      t_array_source_88;
400614 l_array_source_91      t_array_source_91;
400615 l_array_source_92      t_array_source_92;
400616 l_array_source_93      t_array_source_93;
400617 l_array_source_94      t_array_source_94;
400618 l_array_source_95      t_array_source_95;
400619 l_array_source_97      t_array_source_97;
400620 l_array_source_108      t_array_source_108;
400621 
400622 --
400623 CURSOR header_cur
400624 IS
400625 SELECT /*+ leading(xet) cardinality(xet,1) */
400626 -- Event Type Code: UDIR_INTERORG_SHIP_TP
400627 -- Event Class Code: USER_DEFINE
400628     xet.entity_id
400629   , xet.legal_entity_id
400630   , xet.entity_code
400631   , xet.transaction_number
400632   , xet.event_id
400633   , xet.event_class_code
400634   , xet.event_type_code
400635   , xet.event_number
400636   , xet.event_date
400637   , xet.transaction_date
400638   , xet.reference_num_1
400639   , xet.reference_num_2
400640   , xet.reference_num_3
400641   , xet.reference_num_4
400642   , xet.reference_char_1
400643   , xet.reference_char_2
400644   , xet.reference_char_3
400645   , xet.reference_char_4
400646   , xet.reference_date_1
400647   , xet.reference_date_2
400648   , xet.reference_date_3
400649   , xet.reference_date_4
400650   , xet.event_created_by
400651   , xet.budgetary_control_flag 
400652   , h2.TRANSACTION_ID    source_1
400653   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
400654   , h5.TRANSACTION_QUANTITY    source_3
400655   , h5.TRANSACTION_UOM    source_4
400656   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
400657   , h8.PLA_BRIDGING_ACCOUNT    source_22
400658   , h5.INV_TXN_TRANSPO_DIST_ACCT    source_32
400659   , h1.INTERORG_REVENUE_ACCOUNT    source_33
400660   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
400661   , h1.INTERORG_TXFR_CREDIT_ACCOUNT    source_40
400662   , h8.PLA_MATERIAL_ACCOUNT    source_41
400663   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
400664   , h8.PLA_RESOURCE_ACCOUNT    source_43
400665   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
400666   , h8.PLA_OVERHEAD_ACCOUNT    source_45
400667   , h4.INV_ORG_PUR_PRICE_VAR_ACCT    source_58
400668   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
400669   , h2.DISTRIBUTION_TYPE    source_85
400670   , fvl85.meaning   source_85_meaning
400671   , h2.TRANSFER_TO_GL_INDICATOR    source_114
400672   , fvl114.meaning   source_114_meaning
400673   FROM xla_events_gt     xet 
400674   , CST_XLA_INTERORG_PARAMS_REF_V  h1
400675   , CST_XLA_INV_HEADERS_V  h2
400676   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
400677   , CST_XLA_INV_REF_V  h5
400678   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
400679   , CST_XLA_INV_TXN_TYPES_REF_V  h7
400680   , CST_XLA_PLA_CATEGORY_REF_V  h8
400681   , fnd_lookup_values    fvl85
400682   , fnd_lookup_values    fvl114
400683  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
400684    and xet.event_type_code = C_EVENT_TYPE_CODE
400685    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
400686   AND h1.event_id (+) = h2.event_id
400687  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h8.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h8.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
400688   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
400689   AND fvl85.view_application_id(+) = 700
400690   AND fvl85.language(+)            = USERENV('LANG')
400691      AND fvl114.lookup_type(+)         = 'YES_NO'
400692   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
400693   AND fvl114.view_application_id(+) = 0
400694   AND fvl114.language(+)            = USERENV('LANG')
400695   
400696  ORDER BY event_id
400697 ;
400698 
400699 
400700 --
400701 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
400702 IS
400703 SELECT /*+ leading(xet) cardinality(xet,1) */
400704 -- Event Type Code: UDIR_INTERORG_SHIP_TP
400705 -- Event Class Code: USER_DEFINE
400706     xet.entity_id
400707    ,xet.legal_entity_id
400708    ,xet.entity_code
400709    ,xet.transaction_number
400710    ,xet.event_id
400711    ,xet.event_class_code
400712    ,xet.event_type_code
400713    ,xet.event_number
400714    ,xet.event_date
400715    ,xet.transaction_date
400716    ,xet.reference_num_1
400717    ,xet.reference_num_2
400718    ,xet.reference_num_3
400719    ,xet.reference_num_4
400720    ,xet.reference_char_1
400721    ,xet.reference_char_2
400722    ,xet.reference_char_3
400723    ,xet.reference_char_4
400724    ,xet.reference_date_1
400725    ,xet.reference_date_2
400726    ,xet.reference_date_3
400727    ,xet.reference_date_4
400728    ,xet.event_created_by
400729    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
400730   , l3.CODE_COMBINATION_ID    source_11
400731   , l3.COST_ELEMENT_ID    source_15
400732   , l3.DISTRIBUTION_IDENTIFIER    source_84
400733   , l3.CURRENCY_CODE    source_88
400734   , l3.ENTERED_AMOUNT    source_91
400735   , l3.CURRENCY_CONVERSION_DATE    source_92
400736   , l3.CURRENCY_CONVERSION_RATE    source_93
400737   , l3.CURRENCY_CONVERSION_TYPE    source_94
400738   , l3.ACCOUNTED_AMOUNT    source_95
400739   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
400740   , l3.L_ORGANIZATION_CODE    source_108
400741   FROM xla_events_gt     xet 
400742   , CST_XLA_INV_LINES_V  l3
400743  WHERE xet.event_id between x_first_event_id and x_last_event_id
400744    and xet.event_date between p_pad_start_date and p_pad_end_date
400745    and xet.event_type_code = C_EVENT_TYPE_CODE
400746    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
400747 ;
400748 
400749 --
400750 BEGIN
400751 IF g_log_enabled THEN
400752    l_log_module := C_DEFAULT_MODULE||'.EventType_605';
400753 END IF;
400754 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
400755    trace
400756       (p_msg      => 'BEGIN of EventType_605'
400757       ,p_level    => C_LEVEL_PROCEDURE
400758       ,p_module   => l_log_module);
400759 END IF;
400760 
400761 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
400762    trace
400763       (p_msg      => 'p_application_id = '||p_application_id||
400764                      ' - p_base_ledger_id = '||p_base_ledger_id||
400765                      ' - p_target_ledger_id  = '||p_target_ledger_id||
400766                      ' - p_language = '||p_language||
400767                      ' - p_currency_code = '||p_currency_code||
400768                      ' - p_sla_ledger_id = '||p_sla_ledger_id
400769       ,p_level    => C_LEVEL_STATEMENT
400770       ,p_module   => l_log_module);
400771 END IF;
400772 --
400773 -- initialze arrays
400774 --
400775 g_array_event.DELETE;
400776 l_rec_array_event := l_null_rec_array_event;
400777 --
400778 --------------------------------------
400779 -- 4262811 Initialze MPA Line Number
400780 --------------------------------------
400781 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
400782 
400783 --
400784 
400785 --
400786 OPEN header_cur;
400787 --
400788 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
400789    trace
400790    (p_msg      => 'SQL - FETCH header_cur'
400791    ,p_level    => C_LEVEL_STATEMENT
400792    ,p_module   => l_log_module);
400793 END IF;
400794 --
400795 LOOP
400796 FETCH header_cur BULK COLLECT INTO
400797         l_array_entity_id
400798       , l_array_legal_entity_id
400799       , l_array_entity_code
400800       , l_array_transaction_num
400801       , l_array_event_id
400802       , l_array_class_code
400803       , l_array_event_type
400804       , l_array_event_number
400805       , l_array_event_date
400806       , l_array_transaction_date
400807       , l_array_reference_num_1
400808       , l_array_reference_num_2
400809       , l_array_reference_num_3
400810       , l_array_reference_num_4
400811       , l_array_reference_char_1
400812       , l_array_reference_char_2
400813       , l_array_reference_char_3
400814       , l_array_reference_char_4
400815       , l_array_reference_date_1
400816       , l_array_reference_date_2
400817       , l_array_reference_date_3
400818       , l_array_reference_date_4
400819       , l_array_event_created_by
400820       , l_array_budgetary_control_flag 
400821       , l_array_source_1
400822       , l_array_source_2
400823       , l_array_source_3
400824       , l_array_source_4
400825       , l_array_source_5
400826       , l_array_source_22
400827       , l_array_source_32
400828       , l_array_source_33
400829       , l_array_source_35
400830       , l_array_source_40
400831       , l_array_source_41
400832       , l_array_source_42
400833       , l_array_source_43
400834       , l_array_source_44
400835       , l_array_source_45
400836       , l_array_source_58
400837       , l_array_source_59
400838       , l_array_source_85
400839       , l_array_source_85_meaning
400840       , l_array_source_114
400841       , l_array_source_114_meaning
400842       LIMIT l_rows;
400843 --
400844 IF (C_LEVEL_EVENT >= g_log_level) THEN
400845    trace
400846    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
400847    ,p_level    => C_LEVEL_EVENT
400848    ,p_module   => l_log_module);
400849 END IF;
400850 --
400851 EXIT WHEN l_array_entity_id.COUNT = 0;
400852 
400853 -- initialize arrays
400854 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
400855 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
400856 
400857 --
400858 -- Bug 4458708
400859 --
400860 XLA_AE_LINES_PKG.g_LineNumber := 0;
400861 
400862 
400863 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
400864 g_last_hdr_idx := l_array_event_id.LAST;
400865 --
400866 -- loop for the headers. Each iteration is for each header extract row
400867 -- fetched in header cursor
400868 --
400869 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
400870 
400871 --
400872 -- set event info as cache for other routines to refer event attributes
400873 --
400874 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
400875    (p_application_id           => p_application_id
400876    ,p_primary_ledger_id        => p_primary_ledger_id
400877    ,p_base_ledger_id           => p_base_ledger_id
400878    ,p_target_ledger_id         => p_target_ledger_id
400879    ,p_entity_id                => l_array_entity_id(hdr_idx)
400880    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
400881    ,p_entity_code              => l_array_entity_code(hdr_idx)
400882    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
400883    ,p_event_id                 => l_array_event_id(hdr_idx)
400884    ,p_event_class_code         => l_array_class_code(hdr_idx)
400885    ,p_event_type_code          => l_array_event_type(hdr_idx)
400886    ,p_event_number             => l_array_event_number(hdr_idx)
400887    ,p_event_date               => l_array_event_date(hdr_idx)
400888    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
400889    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
400890    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
400891    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
400892    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
400893    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
400894    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
400895    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
400896    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
400897    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
400898    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
400899    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
400900    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
400901    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
400902    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
400903 
400904 --
400905 -- set the status of entry to C_VALID (0)
400906 --
400907 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
400908 
400909 --
400910 -- initialize a row for ae header
400911 --
400912 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
400913 
400914 l_event_id := l_array_event_id(hdr_idx);
400915 
400916 --
400917 -- storing the hdr_idx for event. May be used by line cursor.
400918 --
400919 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
400920 
400921 --
400922 -- store sources from header extract. This can be improved to
400923 -- store only those sources from header extract that may be used in lines
400924 --
400925 
400926 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
400927 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
400928 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
400929 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
400930 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
400931 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
400932 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
400933 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
400934 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
400935 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
400936 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
400937 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
400938 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
400939 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
400940 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
400941 g_array_event(l_event_id).array_value_num('source_58') := l_array_source_58(hdr_idx);
400942 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
400943 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
400944 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
400945 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
400946 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
400947 
400948 --
400949 -- initilaize the status of ae headers for diffrent balance types
400950 -- the status is initialised to C_NOT_CREATED (2)
400951 --
400952 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
400953 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
400954 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
400955 
400956 --
400957 -- call api to validate and store accounting attributes for header
400958 --
400959 
400960 ------------------------------------------------------------
400961 -- Accrual Reversal : to get date for Standard Source (NONE)
400962 ------------------------------------------------------------
400963 l_acc_rev_gl_date_source := NULL;
400964 
400965      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
400966       l_rec_acct_attrs.array_date_value(1) := 
400967 xla_ae_sources_pkg.GetSystemSourceDate(
400968    p_source_code           => 'XLA_REFERENCE_DATE_1'
400969  , p_source_type_code      => 'Y'
400970  , p_source_application_id =>  602
400971 );
400972      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
400973       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
400974 
400975 
400976 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
400977 
400978 XLA_AE_HEADER_PKG.SetJeCategoryName;
400979 
400980 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
400981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
400982 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
400983 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
400984 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
400985 
400986 
400987 -- No header level analytical criteria
400988 
400989 --
400990 --accounting attribute enhancement, bug 3612931
400991 --
400992 l_trx_reversal_source := SUBSTR(NULL, 1,30);
400993 
400994 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
400995    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
400996 
400997    xla_accounting_err_pkg.build_message
400998       (p_appli_s_name            => 'XLA'
400999       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
401000       ,p_token_1                 => 'ACCT_ATTR_NAME'
401001       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
401002       ,p_token_2                 => 'PRODUCT_NAME'
401003       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
401004       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
401005       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
401006       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
401007 
401008 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
401009    --
401010    -- following sets the accounting attributes needed to reverse
401011    -- accounting for a distributeion
401012    --
401013    xla_ae_lines_pkg.SetTrxReversalAttrs
401014       (p_event_id              => l_event_id
401015       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
401016       ,p_trx_reversal_source   => l_trx_reversal_source);
401017 
401018 END IF;
401019 
401020 
401021 ----------------------------------------------------------------
401022 -- 4262811 -  update the header statuses to invalid in need be
401023 ----------------------------------------------------------------
401024 --
401025 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
401026 
401027 
401028   -----------------------------------------------
401029   -- No accrual reversal for the event class/type
401030   -----------------------------------------------
401031 ----------------------------------------------------------------
401032 
401033 --
401034 -- this ends the header loop iteration for one bulk fetch
401035 --
401036 END LOOP;
401037 
401038 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
401039 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
401040 
401041 --
401042 -- insert dummy rows into lines gt table that were created due to
401043 -- transaction reversals
401044 --
401045 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
401046    l_result := XLA_AE_LINES_PKG.InsertLines;
401047 END IF;
401048 
401049 --
401050 -- reset the temp_line_num for each set of events fetched from header
401051 -- cursor rather than doing it for each new event in line cursor
401052 -- Bug 3939231
401053 --
401054 xla_ae_lines_pkg.g_temp_line_num := 0;
401055 
401056 
401057 
401058 --
401059 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
401060 --
401061 --
401062 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
401063 
401064       trace
401065          (p_msg      => 'SQL - FETCH line_cur'
401066          ,p_level    => C_LEVEL_STATEMENT
401067          ,p_module   => l_log_module);
401068 
401069 END IF;
401070 --
401071 --
401072 LOOP
401073   --
401074   FETCH line_cur BULK COLLECT INTO
401075         l_array_entity_id
401076       , l_array_legal_entity_id
401077       , l_array_entity_code
401078       , l_array_transaction_num
401079       , l_array_event_id
401080       , l_array_class_code
401081       , l_array_event_type
401082       , l_array_event_number
401083       , l_array_event_date
401084       , l_array_transaction_date
401085       , l_array_reference_num_1
401086       , l_array_reference_num_2
401087       , l_array_reference_num_3
401088       , l_array_reference_num_4
401089       , l_array_reference_char_1
401090       , l_array_reference_char_2
401091       , l_array_reference_char_3
401092       , l_array_reference_char_4
401093       , l_array_reference_date_1
401094       , l_array_reference_date_2
401095       , l_array_reference_date_3
401096       , l_array_reference_date_4
401097       , l_array_event_created_by
401098       , l_array_budgetary_control_flag
401099       , l_array_extract_line_num 
401100       , l_array_source_11
401101       , l_array_source_15
401102       , l_array_source_84
401103       , l_array_source_88
401104       , l_array_source_91
401105       , l_array_source_92
401106       , l_array_source_93
401107       , l_array_source_94
401108       , l_array_source_95
401109       , l_array_source_97
401110       , l_array_source_108
401111       LIMIT l_rows;
401112 
401113   --
401114   IF (C_LEVEL_EVENT >= g_log_level) THEN
401115             trace
401116                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
401117                ,p_level    => C_LEVEL_EVENT
401118                ,p_module   => l_log_module);
401119   END IF;
401120   --
401121   EXIT WHEN l_array_entity_id.count = 0;
401122 
401123   XLA_AE_LINES_PKG.g_rec_lines := null;
401124 
401125 --
401126 -- Bug 4458708
401127 --
401128 XLA_AE_LINES_PKG.g_LineNumber := 0;
401129 --
401130 --
401131 
401132 FOR Idx IN 1..l_array_event_id.count LOOP
401133    --
401134    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
401135    --
401136    l_event_id := l_array_event_id(idx);  -- 5648433
401137 
401138    --
401139    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
401140    --
401141 
401142    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
401143              (g_array_event(l_event_id).array_value_num('header_index'))
401144          ,'N'
401145          ) <> 'Y'
401146    THEN
401147       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
401148          trace
401149             (p_msg      => 'Trancaction revesal option is not Y '
401150             ,p_level    => C_LEVEL_STATEMENT
401151             ,p_module   => l_log_module);
401152       END IF;
401153 
401154 --
401155 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
401156 --
401157 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
401158 --
401159 -- set event info as cache for other routines to refer event attributes
401160 --
401161 
401162 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
401163    l_previous_event_id := l_event_id;
401164 
401165    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
401166       (p_application_id           => p_application_id
401167       ,p_primary_ledger_id        => p_primary_ledger_id
401168       ,p_base_ledger_id           => p_base_ledger_id
401169       ,p_target_ledger_id         => p_target_ledger_id
401170       ,p_entity_id                => l_array_entity_id(Idx)
401171       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
401172       ,p_entity_code              => l_array_entity_code(Idx)
401173       ,p_transaction_num          => l_array_transaction_num(Idx)
401174       ,p_event_id                 => l_array_event_id(Idx)
401175       ,p_event_class_code         => l_array_class_code(Idx)
401176       ,p_event_type_code          => l_array_event_type(Idx)
401177       ,p_event_number             => l_array_event_number(Idx)
401178       ,p_event_date               => l_array_event_date(Idx)
401179       ,p_transaction_date         => l_array_transaction_date(Idx)
401180       ,p_reference_num_1          => l_array_reference_num_1(Idx)
401181       ,p_reference_num_2          => l_array_reference_num_2(Idx)
401182       ,p_reference_num_3          => l_array_reference_num_3(Idx)
401183       ,p_reference_num_4          => l_array_reference_num_4(Idx)
401184       ,p_reference_char_1         => l_array_reference_char_1(Idx)
401185       ,p_reference_char_2         => l_array_reference_char_2(Idx)
401186       ,p_reference_char_3         => l_array_reference_char_3(Idx)
401187       ,p_reference_char_4         => l_array_reference_char_4(Idx)
401188       ,p_reference_date_1         => l_array_reference_date_1(Idx)
401189       ,p_reference_date_2         => l_array_reference_date_2(Idx)
401190       ,p_reference_date_3         => l_array_reference_date_3(Idx)
401191       ,p_reference_date_4         => l_array_reference_date_4(Idx)
401192       ,p_event_created_by         => l_array_event_created_by(Idx)
401193       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
401194        --
401195 END IF;
401196 
401197 
401198 
401199 --
401200 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
401201 
401202 l_acct_reversal_source := SUBSTR(NULL, 1,30);
401203 
401204 IF l_continue_with_lines THEN
401205    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
401206       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
401207 
401208       xla_accounting_err_pkg.build_message
401209          (p_appli_s_name            => 'XLA'
401210          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
401211          ,p_token_1                 => 'LINE_NUMBER'
401212          ,p_value_1                 => l_array_extract_line_num(Idx)
401213          ,p_token_2                 => 'PRODUCT_NAME'
401214          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
401215          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
401216          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
401217          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
401218 
401219    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
401220       --
401221       -- following sets the accounting attributes needed to reverse
401222       -- accounting for a distributeion
401223       --
401224 
401225       --
401226       -- 5217187
401227       --
401228       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
401229       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
401230                                        g_array_event(l_event_id).array_value_num('header_index'));
401231       --
401232       --
401233 
401234       -- No reversal code generated
401235 
401236       xla_ae_lines_pkg.SetAcctReversalAttrs
401237          (p_event_id             => l_event_id
401238          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
401239          ,p_calculate_acctd_flag => l_calculate_acctd_flag
401240          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
401241    END IF;
401242 
401243    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
401244        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
401245 
401246 --
401247 AcctLineType_147 (
401248  p_application_id  => p_application_id
401249  ,p_event_id     => l_event_id
401250  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401251  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401252  ,p_actual_flag => l_actual_flag
401253  ,p_balance_type_code => l_balance_type_code
401254  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401255  
401256  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401257  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401258  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401259  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401260  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401261  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
401262  , p_source_84 => l_array_source_84(Idx)
401263  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401264  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401265  , p_source_88 => l_array_source_88(Idx)
401266  , p_source_91 => l_array_source_91(Idx)
401267  , p_source_92 => l_array_source_92(Idx)
401268  , p_source_93 => l_array_source_93(Idx)
401269  , p_source_94 => l_array_source_94(Idx)
401270  , p_source_95 => l_array_source_95(Idx)
401271  , p_source_97 => l_array_source_97(Idx)
401272  );
401273 If(l_balance_type_code = 'A') THEN
401274   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401275 END IF;
401276 
401277 --
401278 
401279 
401280 --
401281 AcctLineType_163 (
401282  p_application_id  => p_application_id
401283  ,p_event_id     => l_event_id
401284  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401285  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401286  ,p_actual_flag => l_actual_flag
401287  ,p_balance_type_code => l_balance_type_code
401288  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401289  
401290  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401291  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401292  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401293  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401294  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401295  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
401296  , p_source_84 => l_array_source_84(Idx)
401297  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401298  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401299  , p_source_88 => l_array_source_88(Idx)
401300  , p_source_91 => l_array_source_91(Idx)
401301  , p_source_92 => l_array_source_92(Idx)
401302  , p_source_93 => l_array_source_93(Idx)
401303  , p_source_94 => l_array_source_94(Idx)
401304  , p_source_95 => l_array_source_95(Idx)
401305  , p_source_97 => l_array_source_97(Idx)
401306  );
401307 If(l_balance_type_code = 'A') THEN
401308   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401309 END IF;
401310 
401311 --
401312 
401313 
401314 --
401315 AcctLineType_182 (
401316  p_application_id  => p_application_id
401317  ,p_event_id     => l_event_id
401318  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401319  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401320  ,p_actual_flag => l_actual_flag
401321  ,p_balance_type_code => l_balance_type_code
401322  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401323  
401324  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401325  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401326  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401327  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401328  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401329  , p_source_11 => l_array_source_11(Idx)
401330  , p_source_84 => l_array_source_84(Idx)
401331  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401332  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401333  , p_source_88 => l_array_source_88(Idx)
401334  , p_source_91 => l_array_source_91(Idx)
401335  , p_source_92 => l_array_source_92(Idx)
401336  , p_source_93 => l_array_source_93(Idx)
401337  , p_source_94 => l_array_source_94(Idx)
401338  , p_source_95 => l_array_source_95(Idx)
401339  , p_source_97 => l_array_source_97(Idx)
401340  );
401341 If(l_balance_type_code = 'A') THEN
401342   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401343 END IF;
401344 
401345 --
401346 
401347 
401348 --
401349 AcctLineType_194 (
401350  p_application_id  => p_application_id
401351  ,p_event_id     => l_event_id
401352  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401353  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401354  ,p_actual_flag => l_actual_flag
401355  ,p_balance_type_code => l_balance_type_code
401356  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401357  
401358  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401359  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401360  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401361  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401362  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401363  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
401364  , p_source_84 => l_array_source_84(Idx)
401365  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401366  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401367  , p_source_88 => l_array_source_88(Idx)
401368  , p_source_91 => l_array_source_91(Idx)
401369  , p_source_92 => l_array_source_92(Idx)
401370  , p_source_93 => l_array_source_93(Idx)
401371  , p_source_94 => l_array_source_94(Idx)
401372  , p_source_95 => l_array_source_95(Idx)
401373  , p_source_97 => l_array_source_97(Idx)
401374  );
401375 If(l_balance_type_code = 'A') THEN
401376   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401377 END IF;
401378 
401379 --
401380 
401381 
401382 --
401383 AcctLineType_211 (
401384  p_application_id  => p_application_id
401385  ,p_event_id     => l_event_id
401386  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401387  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401388  ,p_actual_flag => l_actual_flag
401389  ,p_balance_type_code => l_balance_type_code
401390  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401391  
401392  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401393  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401394  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401395  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401396  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401397  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
401398  , p_source_84 => l_array_source_84(Idx)
401399  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401400  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401401  , p_source_88 => l_array_source_88(Idx)
401402  , p_source_91 => l_array_source_91(Idx)
401403  , p_source_92 => l_array_source_92(Idx)
401404  , p_source_93 => l_array_source_93(Idx)
401405  , p_source_94 => l_array_source_94(Idx)
401406  , p_source_95 => l_array_source_95(Idx)
401407  , p_source_97 => l_array_source_97(Idx)
401408  );
401409 If(l_balance_type_code = 'A') THEN
401410   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401411 END IF;
401412 
401413 --
401414 
401415 
401416 --
401417 AcctLineType_287 (
401418  p_application_id  => p_application_id
401419  ,p_event_id     => l_event_id
401420  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401421  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401422  ,p_actual_flag => l_actual_flag
401423  ,p_balance_type_code => l_balance_type_code
401424  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401425  
401426  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401427  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401428  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401429  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401430  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401431  , p_source_15 => l_array_source_15(Idx)
401432  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
401433  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
401434  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
401435  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
401436  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
401437  , p_source_84 => l_array_source_84(Idx)
401438  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401439  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401440  , p_source_88 => l_array_source_88(Idx)
401441  , p_source_91 => l_array_source_91(Idx)
401442  , p_source_92 => l_array_source_92(Idx)
401443  , p_source_93 => l_array_source_93(Idx)
401444  , p_source_94 => l_array_source_94(Idx)
401445  , p_source_95 => l_array_source_95(Idx)
401446  , p_source_97 => l_array_source_97(Idx)
401447  , p_source_108 => l_array_source_108(Idx)
401448  );
401449 If(l_balance_type_code = 'A') THEN
401450   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401451 END IF;
401452 
401453 --
401454 
401455 
401456 --
401457 AcctLineType_316 (
401458  p_application_id  => p_application_id
401459  ,p_event_id     => l_event_id
401460  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401461  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401462  ,p_actual_flag => l_actual_flag
401463  ,p_balance_type_code => l_balance_type_code
401464  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401465  
401466  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401467  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401468  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401469  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401470  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401471  , p_source_11 => l_array_source_11(Idx)
401472  , p_source_84 => l_array_source_84(Idx)
401473  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401474  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401475  , p_source_88 => l_array_source_88(Idx)
401476  , p_source_91 => l_array_source_91(Idx)
401477  , p_source_92 => l_array_source_92(Idx)
401478  , p_source_93 => l_array_source_93(Idx)
401479  , p_source_94 => l_array_source_94(Idx)
401480  , p_source_95 => l_array_source_95(Idx)
401481  , p_source_97 => l_array_source_97(Idx)
401482  );
401483 If(l_balance_type_code = 'A') THEN
401484   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401485 END IF;
401486 
401487 --
401488 
401489 
401490 --
401491 AcctLineType_334 (
401492  p_application_id  => p_application_id
401493  ,p_event_id     => l_event_id
401494  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401495  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401496  ,p_actual_flag => l_actual_flag
401497  ,p_balance_type_code => l_balance_type_code
401498  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401499  
401500  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401501  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401502  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401503  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401504  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401505  , p_source_11 => l_array_source_11(Idx)
401506  , p_source_84 => l_array_source_84(Idx)
401507  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401508  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401509  , p_source_88 => l_array_source_88(Idx)
401510  , p_source_91 => l_array_source_91(Idx)
401511  , p_source_92 => l_array_source_92(Idx)
401512  , p_source_93 => l_array_source_93(Idx)
401513  , p_source_94 => l_array_source_94(Idx)
401514  , p_source_95 => l_array_source_95(Idx)
401515  , p_source_97 => l_array_source_97(Idx)
401516  );
401517 If(l_balance_type_code = 'A') THEN
401518   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401519 END IF;
401520 
401521 --
401522 
401523 
401524 --
401525 AcctLineType_374 (
401526  p_application_id  => p_application_id
401527  ,p_event_id     => l_event_id
401528  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401529  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401530  ,p_actual_flag => l_actual_flag
401531  ,p_balance_type_code => l_balance_type_code
401532  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401533  
401534  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401535  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401536  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401537  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401538  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401539  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
401540  , p_source_84 => l_array_source_84(Idx)
401541  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401542  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401543  , p_source_88 => l_array_source_88(Idx)
401544  , p_source_91 => l_array_source_91(Idx)
401545  , p_source_92 => l_array_source_92(Idx)
401546  , p_source_93 => l_array_source_93(Idx)
401547  , p_source_94 => l_array_source_94(Idx)
401548  , p_source_95 => l_array_source_95(Idx)
401549  , p_source_97 => l_array_source_97(Idx)
401550  );
401551 If(l_balance_type_code = 'A') THEN
401552   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401553 END IF;
401554 
401555 --
401556 
401557 
401558 --
401559 AcctLineType_446 (
401560  p_application_id  => p_application_id
401561  ,p_event_id     => l_event_id
401562  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401563  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401564  ,p_actual_flag => l_actual_flag
401565  ,p_balance_type_code => l_balance_type_code
401566  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401567  
401568  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401569  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401570  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401571  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401572  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401573  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
401574  , p_source_84 => l_array_source_84(Idx)
401575  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401576  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401577  , p_source_88 => l_array_source_88(Idx)
401578  , p_source_91 => l_array_source_91(Idx)
401579  , p_source_92 => l_array_source_92(Idx)
401580  , p_source_93 => l_array_source_93(Idx)
401581  , p_source_94 => l_array_source_94(Idx)
401582  , p_source_95 => l_array_source_95(Idx)
401583  , p_source_97 => l_array_source_97(Idx)
401584  );
401585 If(l_balance_type_code = 'A') THEN
401586   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401587 END IF;
401588 
401589 --
401590 
401591 
401592 --
401593 AcctLineType_489 (
401594  p_application_id  => p_application_id
401595  ,p_event_id     => l_event_id
401596  ,p_calculate_acctd_flag => l_calculate_acctd_flag
401597  ,p_calculate_g_l_flag => l_calculate_g_l_flag
401598  ,p_actual_flag => l_actual_flag
401599  ,p_balance_type_code => l_balance_type_code
401600  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
401601  
401602  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
401603  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
401604  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
401605  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
401606  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
401607  , p_source_58 => g_array_event(l_event_id).array_value_num('source_58')
401608  , p_source_84 => l_array_source_84(Idx)
401609  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
401610  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
401611  , p_source_88 => l_array_source_88(Idx)
401612  , p_source_91 => l_array_source_91(Idx)
401613  , p_source_92 => l_array_source_92(Idx)
401614  , p_source_93 => l_array_source_93(Idx)
401615  , p_source_94 => l_array_source_94(Idx)
401616  , p_source_95 => l_array_source_95(Idx)
401617  , p_source_97 => l_array_source_97(Idx)
401618  );
401619 If(l_balance_type_code = 'A') THEN
401620   l_actual_gain_loss_ref := l_gain_or_loss_ref;
401621 END IF;
401622 
401623 --
401624 
401625       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
401626       -- or secondary ledger that has different currency with primary
401627       -- or alc that is calculated by sla
401628       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
401629             (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'))
401630 
401631 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
401632 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
401633           AND (l_actual_flag = 'A')) THEN
401634         XLA_AE_LINES_PKG.CreateGainOrLossLines(
401635           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
401636          ,p_application_id   => p_application_id
401637          ,p_amb_context_code => 'DEFAULT'
401638          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
401639          ,p_event_class_code => C_EVENT_CLASS_CODE
401640          ,p_event_type_code  => C_EVENT_TYPE_CODE
401641          
401642          ,p_gain_ccid        => -1
401643          ,p_loss_ccid        => -1
401644 
401645          ,p_actual_flag      => l_actual_flag
401646          ,p_enc_flag         => null
401647          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
401648          ,p_enc_g_l_ref      => null
401649          );
401650       END IF;
401651    END IF;
401652 END IF;
401653 
401654    ELSE
401655       --
401656       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
401657       --
401658       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
401659          trace
401660             (p_msg      => 'Trancaction revesal option is Y'
401661             ,p_level    => C_LEVEL_STATEMENT
401662             ,p_module   => l_log_module);
401663       END IF;
401664    END IF;
401665 
401666 END LOOP;
401667 l_result := XLA_AE_LINES_PKG.InsertLines ;
401668 end loop;
401669 close line_cur;
401670 
401671 
401672 --
401673 -- insert headers into xla_ae_headers_gt table
401674 --
401675 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
401676 
401677 -- insert into errors table here.
401678 
401679 END LOOP;
401680 
401681 --
401682 -- 4865292
401683 --
401684 -- Compare g_hdr_extract_count with event count in
401685 -- CreateHeadersAndLines.
401686 --
401687 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
401688 
401689 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
401690    trace (p_msg     => '# rows extracted from header extract objects '
401691                     || ' (running total): '
401692                     || g_hdr_extract_count
401693          ,p_level   => C_LEVEL_STATEMENT
401694          ,p_module  => l_log_module);
401695 END IF;
401696 
401697 CLOSE header_cur;
401698 --
401699 
401700 --
401701 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
401702    trace
401703       (p_msg      => 'END of EventType_605'
401704       ,p_level    => C_LEVEL_PROCEDURE
401705       ,p_module   => l_log_module);
401706 END IF;
401707 --
401708 RETURN l_result;
401709 EXCEPTION
401710 WHEN xla_exceptions_pkg.application_exception THEN
401711    
401712 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
401713 
401714    
401715 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
401716 
401717    RAISE;
401718 
401719 WHEN NO_DATA_FOUND THEN
401720 
401721 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
401722 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
401723 
401724 FOR header_record IN header_cur
401725 LOOP
401726     l_array_header_events(header_record.event_id) := header_record.event_id;
401727 END LOOP;
401728 
401729 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
401730 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
401731 
401732 fnd_file.put_line(fnd_file.LOG, '                    ');
401733 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
401734 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
401735 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
401736 
401737 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
401738 LOOP
401739 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
401740 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
401741         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
401742 	END IF;
401743 END LOOP;
401744 
401745 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
401746 fnd_file.put_line(fnd_file.LOG, '                    ');
401747 
401748 
401749 xla_exceptions_pkg.raise_message
401750       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_605');
401751 
401752 
401753 WHEN OTHERS THEN
401754    xla_exceptions_pkg.raise_message
401755       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_605');
401756 END EventType_605;
401757 --
401758 
401759 ---------------------------------------
401760 --
401761 -- PRIVATE PROCEDURE
401762 --         insert_sources_606
401763 --
401764 ----------------------------------------
401765 --
401766 PROCEDURE insert_sources_606(
401767                                 p_target_ledger_id       IN NUMBER
401768                               , p_language               IN VARCHAR2
401769                               , p_sla_ledger_id          IN NUMBER
401770                               , p_pad_start_date         IN DATE
401771                               , p_pad_end_date           IN DATE
401772                          )
401773 IS
401774 
401775 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_RCPT_SENDER_SHIP';
401776 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
401777 p_apps_owner                   VARCHAR2(30);
401778 l_log_module                   VARCHAR2(240);
401779 BEGIN
401780 IF g_log_enabled THEN
401781       l_log_module := C_DEFAULT_MODULE||'.insert_sources_606';
401782 END IF;
401783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
401784 
401785       trace
401786          (p_msg      => 'BEGIN of insert_sources_606'
401787          ,p_level    => C_LEVEL_PROCEDURE
401788          ,p_module   => l_log_module);
401789 
401790 END IF;
401791 
401792 -- select APPS owner
401793 SELECT oracle_username
401794   INTO p_apps_owner
401795   FROM fnd_oracle_userid
401796  WHERE read_only_flag = 'U'
401797 ;
401798 
401799 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
401800       trace
401801          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
401802                         ' - p_language = '||p_language||
401803                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
401804                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
401805                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
401806                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
401807          ,p_level    => C_LEVEL_STATEMENT
401808          ,p_module   => l_log_module);
401809 END IF;
401810 
401811 
401812 --
401813 INSERT INTO xla_diag_sources --hdr1
401814 (
401815         event_id
401816       , ledger_id
401817       , sla_ledger_id
401818       , description_language
401819       , object_name
401820       , object_type_code
401821       , line_number
401822       , source_application_id
401823       , source_type_code
401824       , source_code
401825       , source_value
401826       , source_meaning
401827       , created_by
401828       , creation_date
401829       , last_update_date
401830       , last_updated_by
401831       , last_update_login
401832       , program_update_date
401833       , program_application_id
401834       , program_id
401835       , request_id
401836 )
401837 SELECT
401838         event_id
401839       , p_target_ledger_id
401840       , p_sla_ledger_id
401841       , p_language
401842       , object_name
401843       , object_type_code
401844       , line_number
401845       , source_application_id
401846       , source_type_code
401847       , source_code
401848       , SUBSTR(source_value ,1,1996)
401849       , SUBSTR(source_meaning,1,200)
401850       , xla_environment_pkg.g_Usr_Id
401851       , TRUNC(SYSDATE)
401852       , TRUNC(SYSDATE)
401853       , xla_environment_pkg.g_Usr_Id
401854       , xla_environment_pkg.g_Login_Id
401855       , TRUNC(SYSDATE)
401856       , xla_environment_pkg.g_Prog_Appl_Id
401857       , xla_environment_pkg.g_Prog_Id
401858       , xla_environment_pkg.g_Req_Id
401859   FROM (
401860        SELECT xet.event_id                  event_id
401861             , 0                             line_number
401862             , CASE r
401863                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
401864                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
401865                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
401866                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
401867                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
401868                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
401869                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
401870                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
401871                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
401872                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
401873                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
401874                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
401875                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
401876                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
401877                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
401878                 
401879                ELSE null
401880               END                           object_name
401881             , CASE r
401882                 WHEN 1 THEN 'HEADER' 
401883                 WHEN 2 THEN 'HEADER' 
401884                 WHEN 3 THEN 'HEADER' 
401885                 WHEN 4 THEN 'HEADER' 
401886                 WHEN 5 THEN 'HEADER' 
401887                 WHEN 6 THEN 'HEADER' 
401888                 WHEN 7 THEN 'HEADER' 
401889                 WHEN 8 THEN 'HEADER' 
401890                 WHEN 9 THEN 'HEADER' 
401891                 WHEN 10 THEN 'HEADER' 
401892                 WHEN 11 THEN 'HEADER' 
401893                 WHEN 12 THEN 'HEADER' 
401894                 WHEN 13 THEN 'HEADER' 
401895                 WHEN 14 THEN 'HEADER' 
401896                 WHEN 15 THEN 'HEADER' 
401897                 
401898                 ELSE null
401899               END                           object_type_code
401900             , CASE r
401901                 WHEN 1 THEN '707' 
401902                 WHEN 2 THEN '707' 
401903                 WHEN 3 THEN '707' 
401904                 WHEN 4 THEN '707' 
401905                 WHEN 5 THEN '707' 
401906                 WHEN 6 THEN '707' 
401907                 WHEN 7 THEN '707' 
401908                 WHEN 8 THEN '707' 
401909                 WHEN 9 THEN '707' 
401910                 WHEN 10 THEN '707' 
401911                 WHEN 11 THEN '707' 
401912                 WHEN 12 THEN '707' 
401913                 WHEN 13 THEN '707' 
401914                 WHEN 14 THEN '707' 
401915                 WHEN 15 THEN '707' 
401916                 
401917                 ELSE null
401918               END                           source_application_id
401919             , 'S'             source_type_code
401920             , CASE r
401921                 WHEN 1 THEN 'TRANSACTION_ID' 
401922                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
401923                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
401924                 WHEN 4 THEN 'TRANSACTION_UOM' 
401925                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
401926                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
401927                 WHEN 7 THEN 'PRIMARY_COST_METHOD' 
401928                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
401929                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
401930                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
401931                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
401932                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
401933                 WHEN 13 THEN 'INTERORG_BRIDGING_ACCOUNT' 
401934                 WHEN 14 THEN 'DISTRIBUTION_TYPE' 
401935                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
401936                 
401937                 ELSE null
401938               END                           source_code
401939             , CASE r
401940                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
401941                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
401942                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
401943                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
401944                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
401945                 WHEN 6 THEN TO_CHAR(h8.PLA_BRIDGING_ACCOUNT)
401946                 WHEN 7 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
401947                 WHEN 8 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
401948                 WHEN 9 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
401949                 WHEN 10 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
401950                 WHEN 11 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
401951                 WHEN 12 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
401952                 WHEN 13 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
401953                 WHEN 14 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
401954                 WHEN 15 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
401955                 
401956                 ELSE null
401957               END                           source_value
401958             , CASE r
401959                 WHEN 7 THEN fvl39.meaning
401960                 WHEN 14 THEN fvl85.meaning
401961                 WHEN 15 THEN fvl114.meaning
401962                 
401963                 ELSE null
401964               END               source_meaning
401965         FROM xla_events_gt     xet  
401966       , CST_XLA_INTERORG_PARAMS_REF_V  h1
401967       , CST_XLA_INV_HEADERS_V  h2
401968       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
401969       , CST_XLA_INV_REF_V  h5
401970       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
401971       , CST_XLA_INV_TXN_TYPES_REF_V  h7
401972       , CST_XLA_PLA_CATEGORY_REF_V  h8
401973   , fnd_lookup_values    fvl39
401974   , fnd_lookup_values    fvl85
401975   , fnd_lookup_values    fvl114
401976             ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
401977        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
401978          AND xet.event_type_code = C_EVENT_TYPE_CODE
401979             AND h2.event_id = xet.event_id
401980   AND h1.event_id (+) = h2.event_id
401981  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id  (+) = h2.inventory_item_id  and h6.organization_id  (+) = h2.organization_id AND h7.inv_transaction_type_id  (+) = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id  and h8.pla_cat_item_id   (+) = h2.inventory_item_id  and h8.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
401982   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
401983   AND fvl39.view_application_id(+) = 700
401984   AND fvl39.language(+)            = USERENV('LANG')
401985      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
401986   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
401987   AND fvl85.view_application_id(+) = 700
401988   AND fvl85.language(+)            = USERENV('LANG')
401989      AND fvl114.lookup_type(+)         = 'YES_NO'
401990   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
401991   AND fvl114.view_application_id(+) = 0
401992   AND fvl114.language(+)            = USERENV('LANG')
401993   
401994 )
401995 ;
401996 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
401997 
401998       trace
401999          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
402000          ,p_level    => C_LEVEL_STATEMENT
402001          ,p_module   => l_log_module);
402002 
402003 END IF;
402004 --
402005 
402006 
402007 
402008 --
402009 INSERT INTO xla_diag_sources --line1
402010 (
402011         event_id
402012       , ledger_id
402013       , sla_ledger_id
402014       , description_language
402015       , object_name
402016       , object_type_code
402017       , line_number
402018       , source_application_id
402019       , source_type_code
402020       , source_code
402021       , source_value
402022       , source_meaning
402023       , created_by
402024       , creation_date
402025       , last_update_date
402026       , last_updated_by
402027       , last_update_login
402028       , program_update_date
402029       , program_application_id
402030       , program_id
402031       , request_id
402032 )
402033 SELECT  event_id
402034       , p_target_ledger_id
402035       , p_sla_ledger_id
402036       , p_language
402037       , object_name
402038       , object_type_code
402039       , line_number
402040       , source_application_id
402041       , source_type_code
402042       , source_code
402043       , SUBSTR(source_value,1,1996)
402044       , SUBSTR(source_meaning,1,200)
402045       , xla_environment_pkg.g_Usr_Id
402046       , TRUNC(SYSDATE)
402047       , TRUNC(SYSDATE)
402048       , xla_environment_pkg.g_Usr_Id
402049       , xla_environment_pkg.g_Login_Id
402050       , TRUNC(SYSDATE)
402051       , xla_environment_pkg.g_Prog_Appl_Id
402052       , xla_environment_pkg.g_Prog_Id
402053       , xla_environment_pkg.g_Req_Id
402054   FROM (
402055        SELECT xet.event_id                  event_id
402056             , l3.line_number                 line_number
402057             , CASE r
402058                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
402059                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
402060                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
402061                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
402062                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
402063                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
402064                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
402065                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
402066                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
402067                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
402068                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
402069                 
402070                ELSE null
402071               END                           object_name
402072             , CASE r
402073                 WHEN 1 THEN 'LINE' 
402074                 WHEN 2 THEN 'LINE' 
402075                 WHEN 3 THEN 'LINE' 
402076                 WHEN 4 THEN 'LINE' 
402077                 WHEN 5 THEN 'LINE' 
402078                 WHEN 6 THEN 'LINE' 
402079                 WHEN 7 THEN 'LINE' 
402080                 WHEN 8 THEN 'LINE' 
402081                 WHEN 9 THEN 'LINE' 
402082                 WHEN 10 THEN 'LINE' 
402083                 WHEN 11 THEN 'LINE' 
402084                 
402085                 ELSE null
402086               END                           object_type_code
402087             , CASE r
402088                 WHEN 1 THEN '707' 
402089                 WHEN 2 THEN '707' 
402090                 WHEN 3 THEN '707' 
402091                 WHEN 4 THEN '707' 
402092                 WHEN 5 THEN '707' 
402093                 WHEN 6 THEN '707' 
402094                 WHEN 7 THEN '707' 
402095                 WHEN 8 THEN '707' 
402096                 WHEN 9 THEN '707' 
402097                 WHEN 10 THEN '707' 
402098                 WHEN 11 THEN '707' 
402099                 
402100                 ELSE null
402101               END                           source_application_id
402102             , 'S'             source_type_code
402103             , CASE r
402104                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
402105                 WHEN 2 THEN 'COST_ELEMENT_ID' 
402106                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
402107                 WHEN 4 THEN 'CURRENCY_CODE' 
402108                 WHEN 5 THEN 'ENTERED_AMOUNT' 
402109                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
402110                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
402111                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
402112                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
402113                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
402114                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
402115                 
402116                 ELSE null
402117               END                           source_code
402118             , CASE r
402119                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
402120                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
402121                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
402122                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
402123                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
402124                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
402125                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
402126                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
402127                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
402128                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
402129                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
402130                 
402131                 ELSE null
402132               END                           source_value
402133             , CASE r
402134                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
402135                           1009615
402136                          ,TO_CHAR(l3.COST_ELEMENT_ID)
402137                          ,'COST_ELEMENT_ID'
402138                          ,'S'
402139                          ,707)
402140                 
402141                 ELSE null
402142               END               source_meaning
402143          FROM  xla_events_gt     xet  
402144         , CST_XLA_INV_LINES_V  l3
402145             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
402146         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
402147           AND xet.event_type_code = C_EVENT_TYPE_CODE
402148             AND l3.event_id          = xet.event_id
402149 
402150 )
402151 ;
402152 --
402153 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
402154 
402155       trace
402156          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
402157          ,p_level    => C_LEVEL_STATEMENT
402158          ,p_module   => l_log_module);
402159 
402160 END IF;
402161 
402162 
402163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
402164       trace
402165          (p_msg      => 'END of insert_sources_606'
402166          ,p_level    => C_LEVEL_PROCEDURE
402167          ,p_module   => l_log_module);
402168 END IF;
402169 EXCEPTION
402170   WHEN xla_exceptions_pkg.application_exception THEN
402171       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
402172             trace
402173                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
402174                ,p_level    => C_LEVEL_EXCEPTION
402175                ,p_module   => l_log_module);
402176       END IF;
402177       RAISE;
402178   WHEN OTHERS THEN
402179       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
402180             trace
402181                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
402182                ,p_level    => C_LEVEL_EXCEPTION
402183                ,p_module   => l_log_module);
402184        END IF;
402185        xla_exceptions_pkg.raise_message
402186            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_606');
402187 END insert_sources_606;
402188 --
402189 
402190 ---------------------------------------
402191 --
402192 -- PRIVATE FUNCTION
402193 --         EventType_606
402194 --
402195 ----------------------------------------
402196 --
402197 FUNCTION EventType_606
402198        (p_application_id         IN NUMBER
402199        ,p_base_ledger_id         IN NUMBER
402200        ,p_target_ledger_id       IN NUMBER
402201        ,p_language               IN VARCHAR2
402202        ,p_currency_code          IN VARCHAR2
402203        ,p_sla_ledger_id          IN NUMBER
402204        ,p_pad_start_date         IN DATE
402205        ,p_pad_end_date           IN DATE
402206        ,p_primary_ledger_id      IN NUMBER)
402207 RETURN BOOLEAN IS
402208 --
402209 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_RCPT_SENDER_SHIP';
402210 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
402211 
402212 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
402213 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
402214 --
402215 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402216 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402217 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
402218 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
402219 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402220 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
402221 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
402222 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402223 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
402224 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
402225 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402226 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402227 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402228 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
402229 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
402230 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
402231 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
402232 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
402233 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
402234 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
402235 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
402236 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
402237 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
402238 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
402239 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
402240 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
402241 
402242 l_event_id                             NUMBER;
402243 l_previous_event_id                    NUMBER;
402244 l_first_event_id                       NUMBER;
402245 l_last_event_id                        NUMBER;
402246 
402247 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
402248 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
402249 --
402250 --
402251 l_result                    BOOLEAN := TRUE;
402252 l_rows                      NUMBER  := 1000;
402253 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - FOB Receipt';
402254 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
402255 l_description               VARCHAR2(4000);
402256 l_transaction_reversal      NUMBER;
402257 l_ae_header_id              NUMBER;
402258 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
402259 l_log_module                VARCHAR2(240);
402260 --
402261 l_acct_reversal_source      VARCHAR2(30);
402262 l_trx_reversal_source       VARCHAR2(30);
402263 
402264 l_continue_with_lines       BOOLEAN := TRUE;
402265 --
402266 l_acc_rev_gl_date_source    DATE;                      -- 4262811
402267 --
402268 type t_array_event_id is table of number index by binary_integer;
402269 
402270 l_rec_array_event                    t_rec_array_event;
402271 l_null_rec_array_event               t_rec_array_event;
402272 l_array_ae_header_id                 xla_number_array_type;
402273 l_actual_flag                        VARCHAR2(1) := NULL;
402274 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
402275 l_balance_type_code                  VARCHAR2(1) :=NULL;
402276 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
402277 
402278 --
402279 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
402280 --
402281 
402282 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
402283 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
402284 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
402285 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
402286 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
402287 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
402288 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
402289 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
402290 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
402291 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
402292 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
402293 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
402294 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
402295 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
402296 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
402297 
402298 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
402299 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
402300 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
402301 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
402302 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
402303 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
402304 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
402305 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
402306 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
402307 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
402308 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
402309 
402310 l_array_source_1              t_array_source_1;
402311 l_array_source_2              t_array_source_2;
402312 l_array_source_3              t_array_source_3;
402313 l_array_source_4              t_array_source_4;
402314 l_array_source_5              t_array_source_5;
402315 l_array_source_22              t_array_source_22;
402316 l_array_source_39              t_array_source_39;
402317 l_array_source_39_meaning      t_array_lookup_meaning;
402318 l_array_source_41              t_array_source_41;
402319 l_array_source_42              t_array_source_42;
402320 l_array_source_43              t_array_source_43;
402321 l_array_source_44              t_array_source_44;
402322 l_array_source_45              t_array_source_45;
402323 l_array_source_46              t_array_source_46;
402324 l_array_source_85              t_array_source_85;
402325 l_array_source_85_meaning      t_array_lookup_meaning;
402326 l_array_source_114              t_array_source_114;
402327 l_array_source_114_meaning      t_array_lookup_meaning;
402328 
402329 l_array_source_11      t_array_source_11;
402330 l_array_source_15      t_array_source_15;
402331 l_array_source_84      t_array_source_84;
402332 l_array_source_88      t_array_source_88;
402333 l_array_source_91      t_array_source_91;
402334 l_array_source_92      t_array_source_92;
402335 l_array_source_93      t_array_source_93;
402336 l_array_source_94      t_array_source_94;
402337 l_array_source_95      t_array_source_95;
402338 l_array_source_97      t_array_source_97;
402339 l_array_source_108      t_array_source_108;
402340 
402341 --
402342 CURSOR header_cur
402343 IS
402344 SELECT /*+ leading(xet) cardinality(xet,1) */
402345 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
402346 -- Event Class Code: USER_DEFINE
402347     xet.entity_id
402348   , xet.legal_entity_id
402349   , xet.entity_code
402350   , xet.transaction_number
402351   , xet.event_id
402352   , xet.event_class_code
402353   , xet.event_type_code
402354   , xet.event_number
402355   , xet.event_date
402356   , xet.transaction_date
402357   , xet.reference_num_1
402358   , xet.reference_num_2
402359   , xet.reference_num_3
402360   , xet.reference_num_4
402361   , xet.reference_char_1
402362   , xet.reference_char_2
402363   , xet.reference_char_3
402364   , xet.reference_char_4
402365   , xet.reference_date_1
402366   , xet.reference_date_2
402367   , xet.reference_date_3
402368   , xet.reference_date_4
402369   , xet.event_created_by
402370   , xet.budgetary_control_flag 
402371   , h2.TRANSACTION_ID    source_1
402372   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
402373   , h5.TRANSACTION_QUANTITY    source_3
402374   , h5.TRANSACTION_UOM    source_4
402375   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
402376   , h8.PLA_BRIDGING_ACCOUNT    source_22
402377   , h4.PRIMARY_COST_METHOD    source_39
402378   , fvl39.meaning   source_39_meaning
402379   , h8.PLA_MATERIAL_ACCOUNT    source_41
402380   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
402381   , h8.PLA_RESOURCE_ACCOUNT    source_43
402382   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
402383   , h8.PLA_OVERHEAD_ACCOUNT    source_45
402384   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
402385   , h2.DISTRIBUTION_TYPE    source_85
402386   , fvl85.meaning   source_85_meaning
402387   , h2.TRANSFER_TO_GL_INDICATOR    source_114
402388   , fvl114.meaning   source_114_meaning
402389   FROM xla_events_gt     xet 
402390   , CST_XLA_INTERORG_PARAMS_REF_V  h1
402391   , CST_XLA_INV_HEADERS_V  h2
402392   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
402393   , CST_XLA_INV_REF_V  h5
402394   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
402395   , CST_XLA_INV_TXN_TYPES_REF_V  h7
402396   , CST_XLA_PLA_CATEGORY_REF_V  h8
402397   , fnd_lookup_values    fvl39
402398   , fnd_lookup_values    fvl85
402399   , fnd_lookup_values    fvl114
402400  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
402401    and xet.event_type_code = C_EVENT_TYPE_CODE
402402    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
402403   AND h1.event_id (+) = h2.event_id
402404  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h8.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h8.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
402405   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
402406   AND fvl39.view_application_id(+) = 700
402407   AND fvl39.language(+)            = USERENV('LANG')
402408      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
402409   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
402410   AND fvl85.view_application_id(+) = 700
402411   AND fvl85.language(+)            = USERENV('LANG')
402412      AND fvl114.lookup_type(+)         = 'YES_NO'
402413   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
402414   AND fvl114.view_application_id(+) = 0
402415   AND fvl114.language(+)            = USERENV('LANG')
402416   
402417  ORDER BY event_id
402418 ;
402419 
402420 
402421 --
402422 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
402423 IS
402424 SELECT /*+ leading(xet) cardinality(xet,1) */
402425 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
402426 -- Event Class Code: USER_DEFINE
402427     xet.entity_id
402428    ,xet.legal_entity_id
402429    ,xet.entity_code
402430    ,xet.transaction_number
402431    ,xet.event_id
402432    ,xet.event_class_code
402433    ,xet.event_type_code
402434    ,xet.event_number
402435    ,xet.event_date
402436    ,xet.transaction_date
402437    ,xet.reference_num_1
402438    ,xet.reference_num_2
402439    ,xet.reference_num_3
402440    ,xet.reference_num_4
402441    ,xet.reference_char_1
402442    ,xet.reference_char_2
402443    ,xet.reference_char_3
402444    ,xet.reference_char_4
402445    ,xet.reference_date_1
402446    ,xet.reference_date_2
402447    ,xet.reference_date_3
402448    ,xet.reference_date_4
402449    ,xet.event_created_by
402450    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
402451   , l3.CODE_COMBINATION_ID    source_11
402452   , l3.COST_ELEMENT_ID    source_15
402453   , l3.DISTRIBUTION_IDENTIFIER    source_84
402454   , l3.CURRENCY_CODE    source_88
402455   , l3.ENTERED_AMOUNT    source_91
402456   , l3.CURRENCY_CONVERSION_DATE    source_92
402457   , l3.CURRENCY_CONVERSION_RATE    source_93
402458   , l3.CURRENCY_CONVERSION_TYPE    source_94
402459   , l3.ACCOUNTED_AMOUNT    source_95
402460   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
402461   , l3.L_ORGANIZATION_CODE    source_108
402462   FROM xla_events_gt     xet 
402463   , CST_XLA_INV_LINES_V  l3
402464  WHERE xet.event_id between x_first_event_id and x_last_event_id
402465    and xet.event_date between p_pad_start_date and p_pad_end_date
402466    and xet.event_type_code = C_EVENT_TYPE_CODE
402467    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
402468 ;
402469 
402470 --
402471 BEGIN
402472 IF g_log_enabled THEN
402473    l_log_module := C_DEFAULT_MODULE||'.EventType_606';
402474 END IF;
402475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
402476    trace
402477       (p_msg      => 'BEGIN of EventType_606'
402478       ,p_level    => C_LEVEL_PROCEDURE
402479       ,p_module   => l_log_module);
402480 END IF;
402481 
402482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
402483    trace
402484       (p_msg      => 'p_application_id = '||p_application_id||
402485                      ' - p_base_ledger_id = '||p_base_ledger_id||
402486                      ' - p_target_ledger_id  = '||p_target_ledger_id||
402487                      ' - p_language = '||p_language||
402488                      ' - p_currency_code = '||p_currency_code||
402489                      ' - p_sla_ledger_id = '||p_sla_ledger_id
402490       ,p_level    => C_LEVEL_STATEMENT
402491       ,p_module   => l_log_module);
402492 END IF;
402493 --
402494 -- initialze arrays
402495 --
402496 g_array_event.DELETE;
402497 l_rec_array_event := l_null_rec_array_event;
402498 --
402499 --------------------------------------
402500 -- 4262811 Initialze MPA Line Number
402501 --------------------------------------
402502 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
402503 
402504 --
402505 
402506 --
402507 OPEN header_cur;
402508 --
402509 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
402510    trace
402511    (p_msg      => 'SQL - FETCH header_cur'
402512    ,p_level    => C_LEVEL_STATEMENT
402513    ,p_module   => l_log_module);
402514 END IF;
402515 --
402516 LOOP
402517 FETCH header_cur BULK COLLECT INTO
402518         l_array_entity_id
402519       , l_array_legal_entity_id
402520       , l_array_entity_code
402521       , l_array_transaction_num
402522       , l_array_event_id
402523       , l_array_class_code
402524       , l_array_event_type
402525       , l_array_event_number
402526       , l_array_event_date
402527       , l_array_transaction_date
402528       , l_array_reference_num_1
402529       , l_array_reference_num_2
402530       , l_array_reference_num_3
402531       , l_array_reference_num_4
402532       , l_array_reference_char_1
402533       , l_array_reference_char_2
402534       , l_array_reference_char_3
402535       , l_array_reference_char_4
402536       , l_array_reference_date_1
402537       , l_array_reference_date_2
402538       , l_array_reference_date_3
402539       , l_array_reference_date_4
402540       , l_array_event_created_by
402541       , l_array_budgetary_control_flag 
402542       , l_array_source_1
402543       , l_array_source_2
402544       , l_array_source_3
402545       , l_array_source_4
402546       , l_array_source_5
402547       , l_array_source_22
402548       , l_array_source_39
402549       , l_array_source_39_meaning
402550       , l_array_source_41
402551       , l_array_source_42
402552       , l_array_source_43
402553       , l_array_source_44
402554       , l_array_source_45
402555       , l_array_source_46
402556       , l_array_source_85
402557       , l_array_source_85_meaning
402558       , l_array_source_114
402559       , l_array_source_114_meaning
402560       LIMIT l_rows;
402561 --
402562 IF (C_LEVEL_EVENT >= g_log_level) THEN
402563    trace
402564    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
402565    ,p_level    => C_LEVEL_EVENT
402566    ,p_module   => l_log_module);
402567 END IF;
402568 --
402569 EXIT WHEN l_array_entity_id.COUNT = 0;
402570 
402571 -- initialize arrays
402572 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
402573 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
402574 
402575 --
402576 -- Bug 4458708
402577 --
402578 XLA_AE_LINES_PKG.g_LineNumber := 0;
402579 
402580 
402581 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
402582 g_last_hdr_idx := l_array_event_id.LAST;
402583 --
402584 -- loop for the headers. Each iteration is for each header extract row
402585 -- fetched in header cursor
402586 --
402587 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
402588 
402589 --
402590 -- set event info as cache for other routines to refer event attributes
402591 --
402592 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
402593    (p_application_id           => p_application_id
402594    ,p_primary_ledger_id        => p_primary_ledger_id
402595    ,p_base_ledger_id           => p_base_ledger_id
402596    ,p_target_ledger_id         => p_target_ledger_id
402597    ,p_entity_id                => l_array_entity_id(hdr_idx)
402598    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
402599    ,p_entity_code              => l_array_entity_code(hdr_idx)
402600    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
402601    ,p_event_id                 => l_array_event_id(hdr_idx)
402602    ,p_event_class_code         => l_array_class_code(hdr_idx)
402603    ,p_event_type_code          => l_array_event_type(hdr_idx)
402604    ,p_event_number             => l_array_event_number(hdr_idx)
402605    ,p_event_date               => l_array_event_date(hdr_idx)
402606    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
402607    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
402608    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
402609    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
402610    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
402611    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
402612    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
402613    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
402614    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
402615    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
402616    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
402617    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
402618    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
402619    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
402620    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
402621 
402622 --
402623 -- set the status of entry to C_VALID (0)
402624 --
402625 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
402626 
402627 --
402628 -- initialize a row for ae header
402629 --
402630 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
402631 
402632 l_event_id := l_array_event_id(hdr_idx);
402633 
402634 --
402635 -- storing the hdr_idx for event. May be used by line cursor.
402636 --
402637 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
402638 
402639 --
402640 -- store sources from header extract. This can be improved to
402641 -- store only those sources from header extract that may be used in lines
402642 --
402643 
402644 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
402645 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
402646 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
402647 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
402648 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
402649 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
402650 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
402651 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
402652 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
402653 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
402654 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
402655 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
402656 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
402657 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
402658 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
402659 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
402660 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
402661 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
402662 
402663 --
402664 -- initilaize the status of ae headers for diffrent balance types
402665 -- the status is initialised to C_NOT_CREATED (2)
402666 --
402667 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
402668 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
402669 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
402670 
402671 --
402672 -- call api to validate and store accounting attributes for header
402673 --
402674 
402675 ------------------------------------------------------------
402676 -- Accrual Reversal : to get date for Standard Source (NONE)
402677 ------------------------------------------------------------
402678 l_acc_rev_gl_date_source := NULL;
402679 
402680      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
402681       l_rec_acct_attrs.array_date_value(1) := 
402682 xla_ae_sources_pkg.GetSystemSourceDate(
402683    p_source_code           => 'XLA_REFERENCE_DATE_1'
402684  , p_source_type_code      => 'Y'
402685  , p_source_application_id =>  602
402686 );
402687      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
402688       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
402689 
402690 
402691 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
402692 
402693 XLA_AE_HEADER_PKG.SetJeCategoryName;
402694 
402695 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
402696 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
402697 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
402698 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
402699 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
402700 
402701 
402702 -- No header level analytical criteria
402703 
402704 --
402705 --accounting attribute enhancement, bug 3612931
402706 --
402707 l_trx_reversal_source := SUBSTR(NULL, 1,30);
402708 
402709 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
402710    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
402711 
402712    xla_accounting_err_pkg.build_message
402713       (p_appli_s_name            => 'XLA'
402714       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
402715       ,p_token_1                 => 'ACCT_ATTR_NAME'
402716       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
402717       ,p_token_2                 => 'PRODUCT_NAME'
402718       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
402719       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
402720       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
402721       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
402722 
402723 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
402724    --
402725    -- following sets the accounting attributes needed to reverse
402726    -- accounting for a distributeion
402727    --
402728    xla_ae_lines_pkg.SetTrxReversalAttrs
402729       (p_event_id              => l_event_id
402730       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
402731       ,p_trx_reversal_source   => l_trx_reversal_source);
402732 
402733 END IF;
402734 
402735 
402736 ----------------------------------------------------------------
402737 -- 4262811 -  update the header statuses to invalid in need be
402738 ----------------------------------------------------------------
402739 --
402740 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
402741 
402742 
402743   -----------------------------------------------
402744   -- No accrual reversal for the event class/type
402745   -----------------------------------------------
402746 ----------------------------------------------------------------
402747 
402748 --
402749 -- this ends the header loop iteration for one bulk fetch
402750 --
402751 END LOOP;
402752 
402753 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
402754 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
402755 
402756 --
402757 -- insert dummy rows into lines gt table that were created due to
402758 -- transaction reversals
402759 --
402760 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
402761    l_result := XLA_AE_LINES_PKG.InsertLines;
402762 END IF;
402763 
402764 --
402765 -- reset the temp_line_num for each set of events fetched from header
402766 -- cursor rather than doing it for each new event in line cursor
402767 -- Bug 3939231
402768 --
402769 xla_ae_lines_pkg.g_temp_line_num := 0;
402770 
402771 
402772 
402773 --
402774 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
402775 --
402776 --
402777 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
402778 
402779       trace
402780          (p_msg      => 'SQL - FETCH line_cur'
402781          ,p_level    => C_LEVEL_STATEMENT
402782          ,p_module   => l_log_module);
402783 
402784 END IF;
402785 --
402786 --
402787 LOOP
402788   --
402789   FETCH line_cur BULK COLLECT INTO
402790         l_array_entity_id
402791       , l_array_legal_entity_id
402792       , l_array_entity_code
402793       , l_array_transaction_num
402794       , l_array_event_id
402795       , l_array_class_code
402796       , l_array_event_type
402797       , l_array_event_number
402798       , l_array_event_date
402799       , l_array_transaction_date
402800       , l_array_reference_num_1
402801       , l_array_reference_num_2
402802       , l_array_reference_num_3
402803       , l_array_reference_num_4
402804       , l_array_reference_char_1
402805       , l_array_reference_char_2
402806       , l_array_reference_char_3
402807       , l_array_reference_char_4
402808       , l_array_reference_date_1
402809       , l_array_reference_date_2
402810       , l_array_reference_date_3
402811       , l_array_reference_date_4
402812       , l_array_event_created_by
402813       , l_array_budgetary_control_flag
402814       , l_array_extract_line_num 
402815       , l_array_source_11
402816       , l_array_source_15
402817       , l_array_source_84
402818       , l_array_source_88
402819       , l_array_source_91
402820       , l_array_source_92
402821       , l_array_source_93
402822       , l_array_source_94
402823       , l_array_source_95
402824       , l_array_source_97
402825       , l_array_source_108
402826       LIMIT l_rows;
402827 
402828   --
402829   IF (C_LEVEL_EVENT >= g_log_level) THEN
402830             trace
402831                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
402832                ,p_level    => C_LEVEL_EVENT
402833                ,p_module   => l_log_module);
402834   END IF;
402835   --
402836   EXIT WHEN l_array_entity_id.count = 0;
402837 
402838   XLA_AE_LINES_PKG.g_rec_lines := null;
402839 
402840 --
402841 -- Bug 4458708
402842 --
402843 XLA_AE_LINES_PKG.g_LineNumber := 0;
402844 --
402845 --
402846 
402847 FOR Idx IN 1..l_array_event_id.count LOOP
402848    --
402849    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
402850    --
402851    l_event_id := l_array_event_id(idx);  -- 5648433
402852 
402853    --
402854    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
402855    --
402856 
402857    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
402858              (g_array_event(l_event_id).array_value_num('header_index'))
402859          ,'N'
402860          ) <> 'Y'
402861    THEN
402862       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
402863          trace
402864             (p_msg      => 'Trancaction revesal option is not Y '
402865             ,p_level    => C_LEVEL_STATEMENT
402866             ,p_module   => l_log_module);
402867       END IF;
402868 
402869 --
402870 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
402871 --
402872 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
402873 --
402874 -- set event info as cache for other routines to refer event attributes
402875 --
402876 
402877 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
402878    l_previous_event_id := l_event_id;
402879 
402880    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
402881       (p_application_id           => p_application_id
402882       ,p_primary_ledger_id        => p_primary_ledger_id
402883       ,p_base_ledger_id           => p_base_ledger_id
402884       ,p_target_ledger_id         => p_target_ledger_id
402885       ,p_entity_id                => l_array_entity_id(Idx)
402886       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
402887       ,p_entity_code              => l_array_entity_code(Idx)
402888       ,p_transaction_num          => l_array_transaction_num(Idx)
402889       ,p_event_id                 => l_array_event_id(Idx)
402890       ,p_event_class_code         => l_array_class_code(Idx)
402891       ,p_event_type_code          => l_array_event_type(Idx)
402892       ,p_event_number             => l_array_event_number(Idx)
402893       ,p_event_date               => l_array_event_date(Idx)
402894       ,p_transaction_date         => l_array_transaction_date(Idx)
402895       ,p_reference_num_1          => l_array_reference_num_1(Idx)
402896       ,p_reference_num_2          => l_array_reference_num_2(Idx)
402897       ,p_reference_num_3          => l_array_reference_num_3(Idx)
402898       ,p_reference_num_4          => l_array_reference_num_4(Idx)
402899       ,p_reference_char_1         => l_array_reference_char_1(Idx)
402900       ,p_reference_char_2         => l_array_reference_char_2(Idx)
402901       ,p_reference_char_3         => l_array_reference_char_3(Idx)
402902       ,p_reference_char_4         => l_array_reference_char_4(Idx)
402903       ,p_reference_date_1         => l_array_reference_date_1(Idx)
402904       ,p_reference_date_2         => l_array_reference_date_2(Idx)
402905       ,p_reference_date_3         => l_array_reference_date_3(Idx)
402906       ,p_reference_date_4         => l_array_reference_date_4(Idx)
402907       ,p_event_created_by         => l_array_event_created_by(Idx)
402908       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
402909        --
402910 END IF;
402911 
402912 
402913 
402914 --
402915 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
402916 
402917 l_acct_reversal_source := SUBSTR(NULL, 1,30);
402918 
402919 IF l_continue_with_lines THEN
402920    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
402921       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
402922 
402923       xla_accounting_err_pkg.build_message
402924          (p_appli_s_name            => 'XLA'
402925          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
402926          ,p_token_1                 => 'LINE_NUMBER'
402927          ,p_value_1                 => l_array_extract_line_num(Idx)
402928          ,p_token_2                 => 'PRODUCT_NAME'
402929          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
402930          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
402931          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
402932          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
402933 
402934    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
402935       --
402936       -- following sets the accounting attributes needed to reverse
402937       -- accounting for a distributeion
402938       --
402939 
402940       --
402941       -- 5217187
402942       --
402943       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
402944       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
402945                                        g_array_event(l_event_id).array_value_num('header_index'));
402946       --
402947       --
402948 
402949       -- No reversal code generated
402950 
402951       xla_ae_lines_pkg.SetAcctReversalAttrs
402952          (p_event_id             => l_event_id
402953          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
402954          ,p_calculate_acctd_flag => l_calculate_acctd_flag
402955          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
402956    END IF;
402957 
402958    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
402959        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
402960 
402961 --
402962 AcctLineType_226 (
402963  p_application_id  => p_application_id
402964  ,p_event_id     => l_event_id
402965  ,p_calculate_acctd_flag => l_calculate_acctd_flag
402966  ,p_calculate_g_l_flag => l_calculate_g_l_flag
402967  ,p_actual_flag => l_actual_flag
402968  ,p_balance_type_code => l_balance_type_code
402969  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
402970  
402971  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
402972  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
402973  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
402974  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
402975  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
402976  , p_source_11 => l_array_source_11(Idx)
402977  , p_source_15 => l_array_source_15(Idx)
402978  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
402979  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
402980  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
402981  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
402982  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
402983  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
402984  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
402985  , p_source_84 => l_array_source_84(Idx)
402986  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
402987  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
402988  , p_source_88 => l_array_source_88(Idx)
402989  , p_source_91 => l_array_source_91(Idx)
402990  , p_source_92 => l_array_source_92(Idx)
402991  , p_source_93 => l_array_source_93(Idx)
402992  , p_source_94 => l_array_source_94(Idx)
402993  , p_source_95 => l_array_source_95(Idx)
402994  , p_source_97 => l_array_source_97(Idx)
402995  );
402996 If(l_balance_type_code = 'A') THEN
402997   l_actual_gain_loss_ref := l_gain_or_loss_ref;
402998 END IF;
402999 
403000 --
403001 
403002 
403003 --
403004 AcctLineType_235 (
403005  p_application_id  => p_application_id
403006  ,p_event_id     => l_event_id
403007  ,p_calculate_acctd_flag => l_calculate_acctd_flag
403008  ,p_calculate_g_l_flag => l_calculate_g_l_flag
403009  ,p_actual_flag => l_actual_flag
403010  ,p_balance_type_code => l_balance_type_code
403011  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
403012  
403013  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
403014  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
403015  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
403016  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
403017  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
403018  , p_source_15 => l_array_source_15(Idx)
403019  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
403020  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
403021  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
403022  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
403023  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
403024  , p_source_84 => l_array_source_84(Idx)
403025  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
403026  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
403027  , p_source_88 => l_array_source_88(Idx)
403028  , p_source_91 => l_array_source_91(Idx)
403029  , p_source_92 => l_array_source_92(Idx)
403030  , p_source_93 => l_array_source_93(Idx)
403031  , p_source_94 => l_array_source_94(Idx)
403032  , p_source_95 => l_array_source_95(Idx)
403033  , p_source_97 => l_array_source_97(Idx)
403034  , p_source_108 => l_array_source_108(Idx)
403035  );
403036 If(l_balance_type_code = 'A') THEN
403037   l_actual_gain_loss_ref := l_gain_or_loss_ref;
403038 END IF;
403039 
403040 --
403041 
403042 
403043 --
403044 AcctLineType_346 (
403045  p_application_id  => p_application_id
403046  ,p_event_id     => l_event_id
403047  ,p_calculate_acctd_flag => l_calculate_acctd_flag
403048  ,p_calculate_g_l_flag => l_calculate_g_l_flag
403049  ,p_actual_flag => l_actual_flag
403050  ,p_balance_type_code => l_balance_type_code
403051  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
403052  
403053  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
403054  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
403055  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
403056  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
403057  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
403058  , p_source_11 => l_array_source_11(Idx)
403059  , p_source_84 => l_array_source_84(Idx)
403060  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
403061  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
403062  , p_source_88 => l_array_source_88(Idx)
403063  , p_source_91 => l_array_source_91(Idx)
403064  , p_source_92 => l_array_source_92(Idx)
403065  , p_source_93 => l_array_source_93(Idx)
403066  , p_source_94 => l_array_source_94(Idx)
403067  , p_source_95 => l_array_source_95(Idx)
403068  , p_source_97 => l_array_source_97(Idx)
403069  );
403070 If(l_balance_type_code = 'A') THEN
403071   l_actual_gain_loss_ref := l_gain_or_loss_ref;
403072 END IF;
403073 
403074 --
403075 
403076 
403077 --
403078 AcctLineType_404 (
403079  p_application_id  => p_application_id
403080  ,p_event_id     => l_event_id
403081  ,p_calculate_acctd_flag => l_calculate_acctd_flag
403082  ,p_calculate_g_l_flag => l_calculate_g_l_flag
403083  ,p_actual_flag => l_actual_flag
403084  ,p_balance_type_code => l_balance_type_code
403085  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
403086  
403087  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
403088  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
403089  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
403090  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
403091  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
403092  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
403093  , p_source_84 => l_array_source_84(Idx)
403094  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
403095  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
403096  , p_source_88 => l_array_source_88(Idx)
403097  , p_source_91 => l_array_source_91(Idx)
403098  , p_source_92 => l_array_source_92(Idx)
403099  , p_source_93 => l_array_source_93(Idx)
403100  , p_source_94 => l_array_source_94(Idx)
403101  , p_source_95 => l_array_source_95(Idx)
403102  , p_source_97 => l_array_source_97(Idx)
403103  );
403104 If(l_balance_type_code = 'A') THEN
403105   l_actual_gain_loss_ref := l_gain_or_loss_ref;
403106 END IF;
403107 
403108 --
403109 
403110 
403111 --
403112 AcctLineType_431 (
403113  p_application_id  => p_application_id
403114  ,p_event_id     => l_event_id
403115  ,p_calculate_acctd_flag => l_calculate_acctd_flag
403116  ,p_calculate_g_l_flag => l_calculate_g_l_flag
403117  ,p_actual_flag => l_actual_flag
403118  ,p_balance_type_code => l_balance_type_code
403119  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
403120  
403121  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
403122  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
403123  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
403124  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
403125  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
403126  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
403127  , p_source_84 => l_array_source_84(Idx)
403128  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
403129  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
403130  , p_source_88 => l_array_source_88(Idx)
403131  , p_source_91 => l_array_source_91(Idx)
403132  , p_source_92 => l_array_source_92(Idx)
403133  , p_source_93 => l_array_source_93(Idx)
403134  , p_source_94 => l_array_source_94(Idx)
403135  , p_source_95 => l_array_source_95(Idx)
403136  , p_source_97 => l_array_source_97(Idx)
403137  );
403138 If(l_balance_type_code = 'A') THEN
403139   l_actual_gain_loss_ref := l_gain_or_loss_ref;
403140 END IF;
403141 
403142 --
403143 
403144       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
403145       -- or secondary ledger that has different currency with primary
403146       -- or alc that is calculated by sla
403147       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
403148             (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'))
403149 
403150 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
403151 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
403152           AND (l_actual_flag = 'A')) THEN
403153         XLA_AE_LINES_PKG.CreateGainOrLossLines(
403154           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
403155          ,p_application_id   => p_application_id
403156          ,p_amb_context_code => 'DEFAULT'
403157          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
403158          ,p_event_class_code => C_EVENT_CLASS_CODE
403159          ,p_event_type_code  => C_EVENT_TYPE_CODE
403160          
403161          ,p_gain_ccid        => -1
403162          ,p_loss_ccid        => -1
403163 
403164          ,p_actual_flag      => l_actual_flag
403165          ,p_enc_flag         => null
403166          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
403167          ,p_enc_g_l_ref      => null
403168          );
403169       END IF;
403170    END IF;
403171 END IF;
403172 
403173    ELSE
403174       --
403175       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
403176       --
403177       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
403178          trace
403179             (p_msg      => 'Trancaction revesal option is Y'
403180             ,p_level    => C_LEVEL_STATEMENT
403181             ,p_module   => l_log_module);
403182       END IF;
403183    END IF;
403184 
403185 END LOOP;
403186 l_result := XLA_AE_LINES_PKG.InsertLines ;
403187 end loop;
403188 close line_cur;
403189 
403190 
403191 --
403192 -- insert headers into xla_ae_headers_gt table
403193 --
403194 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
403195 
403196 -- insert into errors table here.
403197 
403198 END LOOP;
403199 
403200 --
403201 -- 4865292
403202 --
403203 -- Compare g_hdr_extract_count with event count in
403204 -- CreateHeadersAndLines.
403205 --
403206 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
403207 
403208 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
403209    trace (p_msg     => '# rows extracted from header extract objects '
403210                     || ' (running total): '
403211                     || g_hdr_extract_count
403212          ,p_level   => C_LEVEL_STATEMENT
403213          ,p_module  => l_log_module);
403214 END IF;
403215 
403216 CLOSE header_cur;
403217 --
403218 
403219 --
403220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
403221    trace
403222       (p_msg      => 'END of EventType_606'
403223       ,p_level    => C_LEVEL_PROCEDURE
403224       ,p_module   => l_log_module);
403225 END IF;
403226 --
403227 RETURN l_result;
403228 EXCEPTION
403229 WHEN xla_exceptions_pkg.application_exception THEN
403230    
403231 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
403232 
403233    
403234 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
403235 
403236    RAISE;
403237 
403238 WHEN NO_DATA_FOUND THEN
403239 
403240 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
403241 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
403242 
403243 FOR header_record IN header_cur
403244 LOOP
403245     l_array_header_events(header_record.event_id) := header_record.event_id;
403246 END LOOP;
403247 
403248 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
403249 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
403250 
403251 fnd_file.put_line(fnd_file.LOG, '                    ');
403252 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
403253 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
403254 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
403255 
403256 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
403257 LOOP
403258 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
403259 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
403260         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
403261 	END IF;
403262 END LOOP;
403263 
403264 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
403265 fnd_file.put_line(fnd_file.LOG, '                    ');
403266 
403267 
403268 xla_exceptions_pkg.raise_message
403269       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_606');
403270 
403271 
403272 WHEN OTHERS THEN
403273    xla_exceptions_pkg.raise_message
403274       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_606');
403275 END EventType_606;
403276 --
403277 
403278 ---------------------------------------
403279 --
403280 -- PRIVATE PROCEDURE
403281 --         insert_sources_607
403282 --
403283 ----------------------------------------
403284 --
403285 PROCEDURE insert_sources_607(
403286                                 p_target_ledger_id       IN NUMBER
403287                               , p_language               IN VARCHAR2
403288                               , p_sla_ledger_id          IN NUMBER
403289                               , p_pad_start_date         IN DATE
403290                               , p_pad_end_date           IN DATE
403291                          )
403292 IS
403293 
403294 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
403295 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
403296 p_apps_owner                   VARCHAR2(30);
403297 l_log_module                   VARCHAR2(240);
403298 BEGIN
403299 IF g_log_enabled THEN
403300       l_log_module := C_DEFAULT_MODULE||'.insert_sources_607';
403301 END IF;
403302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
403303 
403304       trace
403305          (p_msg      => 'BEGIN of insert_sources_607'
403306          ,p_level    => C_LEVEL_PROCEDURE
403307          ,p_module   => l_log_module);
403308 
403309 END IF;
403310 
403311 -- select APPS owner
403312 SELECT oracle_username
403313   INTO p_apps_owner
403314   FROM fnd_oracle_userid
403315  WHERE read_only_flag = 'U'
403316 ;
403317 
403318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
403319       trace
403320          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
403321                         ' - p_language = '||p_language||
403322                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
403323                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
403324                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
403325                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
403326          ,p_level    => C_LEVEL_STATEMENT
403327          ,p_module   => l_log_module);
403328 END IF;
403329 
403330 
403331 --
403332 INSERT INTO xla_diag_sources --hdr1
403333 (
403334         event_id
403335       , ledger_id
403336       , sla_ledger_id
403337       , description_language
403338       , object_name
403339       , object_type_code
403340       , line_number
403341       , source_application_id
403342       , source_type_code
403343       , source_code
403344       , source_value
403345       , source_meaning
403346       , created_by
403347       , creation_date
403348       , last_update_date
403349       , last_updated_by
403350       , last_update_login
403351       , program_update_date
403352       , program_application_id
403353       , program_id
403354       , request_id
403355 )
403356 SELECT
403357         event_id
403358       , p_target_ledger_id
403359       , p_sla_ledger_id
403360       , p_language
403361       , object_name
403362       , object_type_code
403363       , line_number
403364       , source_application_id
403365       , source_type_code
403366       , source_code
403367       , SUBSTR(source_value ,1,1996)
403368       , SUBSTR(source_meaning,1,200)
403369       , xla_environment_pkg.g_Usr_Id
403370       , TRUNC(SYSDATE)
403371       , TRUNC(SYSDATE)
403372       , xla_environment_pkg.g_Usr_Id
403373       , xla_environment_pkg.g_Login_Id
403374       , TRUNC(SYSDATE)
403375       , xla_environment_pkg.g_Prog_Appl_Id
403376       , xla_environment_pkg.g_Prog_Id
403377       , xla_environment_pkg.g_Req_Id
403378   FROM (
403379        SELECT xet.event_id                  event_id
403380             , 0                             line_number
403381             , CASE r
403382                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
403383                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
403384                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
403385                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
403386                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
403387                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
403388                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
403389                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
403390                 WHEN 9 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
403391                 WHEN 10 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
403392                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
403393                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
403394                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
403395                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
403396                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
403397                 WHEN 16 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
403398                 WHEN 17 THEN 'CST_XLA_INV_HEADERS_V' 
403399                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
403400                 
403401                ELSE null
403402               END                           object_name
403403             , CASE r
403404                 WHEN 1 THEN 'HEADER' 
403405                 WHEN 2 THEN 'HEADER' 
403406                 WHEN 3 THEN 'HEADER' 
403407                 WHEN 4 THEN 'HEADER' 
403408                 WHEN 5 THEN 'HEADER' 
403409                 WHEN 6 THEN 'HEADER' 
403410                 WHEN 7 THEN 'HEADER' 
403411                 WHEN 8 THEN 'HEADER' 
403412                 WHEN 9 THEN 'HEADER' 
403413                 WHEN 10 THEN 'HEADER' 
403414                 WHEN 11 THEN 'HEADER' 
403415                 WHEN 12 THEN 'HEADER' 
403416                 WHEN 13 THEN 'HEADER' 
403417                 WHEN 14 THEN 'HEADER' 
403418                 WHEN 15 THEN 'HEADER' 
403419                 WHEN 16 THEN 'HEADER' 
403420                 WHEN 17 THEN 'HEADER' 
403421                 WHEN 18 THEN 'HEADER' 
403422                 
403423                 ELSE null
403424               END                           object_type_code
403425             , CASE r
403426                 WHEN 1 THEN '707' 
403427                 WHEN 2 THEN '707' 
403428                 WHEN 3 THEN '707' 
403429                 WHEN 4 THEN '707' 
403430                 WHEN 5 THEN '707' 
403431                 WHEN 6 THEN '707' 
403432                 WHEN 7 THEN '707' 
403433                 WHEN 8 THEN '707' 
403434                 WHEN 9 THEN '707' 
403435                 WHEN 10 THEN '707' 
403436                 WHEN 11 THEN '707' 
403437                 WHEN 12 THEN '707' 
403438                 WHEN 13 THEN '707' 
403439                 WHEN 14 THEN '707' 
403440                 WHEN 15 THEN '707' 
403441                 WHEN 16 THEN '707' 
403442                 WHEN 17 THEN '707' 
403443                 WHEN 18 THEN '707' 
403444                 
403445                 ELSE null
403446               END                           source_application_id
403447             , 'S'             source_type_code
403448             , CASE r
403449                 WHEN 1 THEN 'TRANSACTION_ID' 
403450                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
403451                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
403452                 WHEN 4 THEN 'TRANSACTION_UOM' 
403453                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
403454                 WHEN 6 THEN 'INV_TXN_TRANSPO_DIST_ACCT' 
403455                 WHEN 7 THEN 'INTERORG_EXPENSE_ACCOUNT' 
403456                 WHEN 8 THEN 'INTERORG_PAYABLES_ACCOUNT' 
403457                 WHEN 9 THEN 'INTERORG_PRICE_VAR_ACCOUNT' 
403458                 WHEN 10 THEN 'PRIMARY_COST_METHOD' 
403459                 WHEN 11 THEN 'PLA_MATERIAL_ACCOUNT' 
403460                 WHEN 12 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
403461                 WHEN 13 THEN 'PLA_RESOURCE_ACCOUNT' 
403462                 WHEN 14 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
403463                 WHEN 15 THEN 'PLA_OVERHEAD_ACCOUNT' 
403464                 WHEN 16 THEN 'INTERORG_BRIDGING_ACCOUNT' 
403465                 WHEN 17 THEN 'DISTRIBUTION_TYPE' 
403466                 WHEN 18 THEN 'TRANSFER_TO_GL_INDICATOR' 
403467                 
403468                 ELSE null
403469               END                           source_code
403470             , CASE r
403471                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
403472                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
403473                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
403474                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
403475                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
403476                 WHEN 6 THEN TO_CHAR(h5.INV_TXN_TRANSPO_DIST_ACCT)
403477                 WHEN 7 THEN TO_CHAR(h1.INTERORG_EXPENSE_ACCOUNT)
403478                 WHEN 8 THEN TO_CHAR(h1.INTERORG_PAYABLES_ACCOUNT)
403479                 WHEN 9 THEN TO_CHAR(h1.INTERORG_PRICE_VAR_ACCOUNT)
403480                 WHEN 10 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
403481                 WHEN 11 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
403482                 WHEN 12 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
403483                 WHEN 13 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
403484                 WHEN 14 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
403485                 WHEN 15 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
403486                 WHEN 16 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
403487                 WHEN 17 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
403488                 WHEN 18 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
403489                 
403490                 ELSE null
403491               END                           source_value
403492             , CASE r
403493                 WHEN 10 THEN fvl39.meaning
403494                 WHEN 17 THEN fvl85.meaning
403495                 WHEN 18 THEN fvl114.meaning
403496                 
403497                 ELSE null
403498               END               source_meaning
403499         FROM xla_events_gt     xet  
403500       , CST_XLA_INTERORG_PARAMS_REF_V  h1
403501       , CST_XLA_INV_HEADERS_V  h2
403502       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
403503       , CST_XLA_INV_REF_V  h5
403504       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
403505       , CST_XLA_INV_TXN_TYPES_REF_V  h7
403506       , CST_XLA_PLA_CATEGORY_REF_V  h8
403507   , fnd_lookup_values    fvl39
403508   , fnd_lookup_values    fvl85
403509   , fnd_lookup_values    fvl114
403510             ,(select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
403511        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
403512          AND xet.event_type_code = C_EVENT_TYPE_CODE
403513             AND h2.event_id = xet.event_id
403514   AND h1.event_id (+) = h2.event_id
403515  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id  (+) = h2.inventory_item_id  and h6.organization_id  (+) = h2.organization_id AND h7.inv_transaction_type_id  (+) = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id  and h8.pla_cat_item_id   (+) = h2.inventory_item_id  and h8.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
403516   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
403517   AND fvl39.view_application_id(+) = 700
403518   AND fvl39.language(+)            = USERENV('LANG')
403519      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
403520   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
403521   AND fvl85.view_application_id(+) = 700
403522   AND fvl85.language(+)            = USERENV('LANG')
403523      AND fvl114.lookup_type(+)         = 'YES_NO'
403524   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
403525   AND fvl114.view_application_id(+) = 0
403526   AND fvl114.language(+)            = USERENV('LANG')
403527   
403528 )
403529 ;
403530 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
403531 
403532       trace
403533          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
403534          ,p_level    => C_LEVEL_STATEMENT
403535          ,p_module   => l_log_module);
403536 
403537 END IF;
403538 --
403539 
403540 
403541 
403542 --
403543 INSERT INTO xla_diag_sources --line1
403544 (
403545         event_id
403546       , ledger_id
403547       , sla_ledger_id
403548       , description_language
403549       , object_name
403550       , object_type_code
403551       , line_number
403552       , source_application_id
403553       , source_type_code
403554       , source_code
403555       , source_value
403556       , source_meaning
403557       , created_by
403558       , creation_date
403559       , last_update_date
403560       , last_updated_by
403561       , last_update_login
403562       , program_update_date
403563       , program_application_id
403564       , program_id
403565       , request_id
403566 )
403567 SELECT  event_id
403568       , p_target_ledger_id
403569       , p_sla_ledger_id
403570       , p_language
403571       , object_name
403572       , object_type_code
403573       , line_number
403574       , source_application_id
403575       , source_type_code
403576       , source_code
403577       , SUBSTR(source_value,1,1996)
403578       , SUBSTR(source_meaning,1,200)
403579       , xla_environment_pkg.g_Usr_Id
403580       , TRUNC(SYSDATE)
403581       , TRUNC(SYSDATE)
403582       , xla_environment_pkg.g_Usr_Id
403583       , xla_environment_pkg.g_Login_Id
403584       , TRUNC(SYSDATE)
403585       , xla_environment_pkg.g_Prog_Appl_Id
403586       , xla_environment_pkg.g_Prog_Id
403587       , xla_environment_pkg.g_Req_Id
403588   FROM (
403589        SELECT xet.event_id                  event_id
403590             , l3.line_number                 line_number
403591             , CASE r
403592                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
403593                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
403594                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
403595                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
403596                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
403597                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
403598                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
403599                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
403600                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
403601                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
403602                 
403603                ELSE null
403604               END                           object_name
403605             , CASE r
403606                 WHEN 1 THEN 'LINE' 
403607                 WHEN 2 THEN 'LINE' 
403608                 WHEN 3 THEN 'LINE' 
403609                 WHEN 4 THEN 'LINE' 
403610                 WHEN 5 THEN 'LINE' 
403611                 WHEN 6 THEN 'LINE' 
403612                 WHEN 7 THEN 'LINE' 
403613                 WHEN 8 THEN 'LINE' 
403614                 WHEN 9 THEN 'LINE' 
403615                 WHEN 10 THEN 'LINE' 
403616                 
403617                 ELSE null
403618               END                           object_type_code
403619             , CASE r
403620                 WHEN 1 THEN '707' 
403621                 WHEN 2 THEN '707' 
403622                 WHEN 3 THEN '707' 
403623                 WHEN 4 THEN '707' 
403624                 WHEN 5 THEN '707' 
403625                 WHEN 6 THEN '707' 
403626                 WHEN 7 THEN '707' 
403627                 WHEN 8 THEN '707' 
403628                 WHEN 9 THEN '707' 
403629                 WHEN 10 THEN '707' 
403630                 
403631                 ELSE null
403632               END                           source_application_id
403633             , 'S'             source_type_code
403634             , CASE r
403635                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
403636                 WHEN 2 THEN 'COST_ELEMENT_ID' 
403637                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
403638                 WHEN 4 THEN 'CURRENCY_CODE' 
403639                 WHEN 5 THEN 'ENTERED_AMOUNT' 
403640                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
403641                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
403642                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
403643                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
403644                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
403645                 
403646                 ELSE null
403647               END                           source_code
403648             , CASE r
403649                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
403650                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
403651                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
403652                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
403653                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
403654                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
403655                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
403656                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
403657                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
403658                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
403659                 
403660                 ELSE null
403661               END                           source_value
403662             , CASE r
403663                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
403664                           1009615
403665                          ,TO_CHAR(l3.COST_ELEMENT_ID)
403666                          ,'COST_ELEMENT_ID'
403667                          ,'S'
403668                          ,707)
403669                 
403670                 ELSE null
403671               END               source_meaning
403672          FROM  xla_events_gt     xet  
403673         , CST_XLA_INV_LINES_V  l3
403674             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
403675         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
403676           AND xet.event_type_code = C_EVENT_TYPE_CODE
403677             AND l3.event_id          = xet.event_id
403678 
403679 )
403680 ;
403681 --
403682 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
403683 
403684       trace
403685          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
403686          ,p_level    => C_LEVEL_STATEMENT
403687          ,p_module   => l_log_module);
403688 
403689 END IF;
403690 
403691 
403692 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
403693       trace
403694          (p_msg      => 'END of insert_sources_607'
403695          ,p_level    => C_LEVEL_PROCEDURE
403696          ,p_module   => l_log_module);
403697 END IF;
403698 EXCEPTION
403699   WHEN xla_exceptions_pkg.application_exception THEN
403700       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
403701             trace
403702                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
403703                ,p_level    => C_LEVEL_EXCEPTION
403704                ,p_module   => l_log_module);
403705       END IF;
403706       RAISE;
403707   WHEN OTHERS THEN
403708       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
403709             trace
403710                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
403711                ,p_level    => C_LEVEL_EXCEPTION
403712                ,p_module   => l_log_module);
403713        END IF;
403714        xla_exceptions_pkg.raise_message
403715            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_607');
403716 END insert_sources_607;
403717 --
403718 
403719 ---------------------------------------
403720 --
403721 -- PRIVATE FUNCTION
403722 --         EventType_607
403723 --
403724 ----------------------------------------
403725 --
403726 FUNCTION EventType_607
403727        (p_application_id         IN NUMBER
403728        ,p_base_ledger_id         IN NUMBER
403729        ,p_target_ledger_id       IN NUMBER
403730        ,p_language               IN VARCHAR2
403731        ,p_currency_code          IN VARCHAR2
403732        ,p_sla_ledger_id          IN NUMBER
403733        ,p_pad_start_date         IN DATE
403734        ,p_pad_end_date           IN DATE
403735        ,p_primary_ledger_id      IN NUMBER)
403736 RETURN BOOLEAN IS
403737 --
403738 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
403739 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
403740 
403741 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
403742 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
403743 --
403744 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403745 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403746 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
403747 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
403748 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403749 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
403750 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
403751 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403752 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
403753 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
403754 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403755 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403756 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403757 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
403758 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
403759 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
403760 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
403761 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
403762 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
403763 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
403764 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
403765 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
403766 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
403767 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
403768 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
403769 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
403770 
403771 l_event_id                             NUMBER;
403772 l_previous_event_id                    NUMBER;
403773 l_first_event_id                       NUMBER;
403774 l_last_event_id                        NUMBER;
403775 
403776 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
403777 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
403778 --
403779 --
403780 l_result                    BOOLEAN := TRUE;
403781 l_rows                      NUMBER  := 1000;
403782 l_event_type_name           VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - No Transfer Price - FOB Shipment';
403783 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
403784 l_description               VARCHAR2(4000);
403785 l_transaction_reversal      NUMBER;
403786 l_ae_header_id              NUMBER;
403787 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
403788 l_log_module                VARCHAR2(240);
403789 --
403790 l_acct_reversal_source      VARCHAR2(30);
403791 l_trx_reversal_source       VARCHAR2(30);
403792 
403793 l_continue_with_lines       BOOLEAN := TRUE;
403794 --
403795 l_acc_rev_gl_date_source    DATE;                      -- 4262811
403796 --
403797 type t_array_event_id is table of number index by binary_integer;
403798 
403799 l_rec_array_event                    t_rec_array_event;
403800 l_null_rec_array_event               t_rec_array_event;
403801 l_array_ae_header_id                 xla_number_array_type;
403802 l_actual_flag                        VARCHAR2(1) := NULL;
403803 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
403804 l_balance_type_code                  VARCHAR2(1) :=NULL;
403805 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
403806 
403807 --
403808 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
403809 --
403810 
403811 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
403812 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
403813 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
403814 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
403815 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
403816 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_TRANSPO_DIST_ACCT%TYPE INDEX BY BINARY_INTEGER;
403817 TYPE t_array_source_34 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403818 TYPE t_array_source_35 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PAYABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403819 TYPE t_array_source_36 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PRICE_VAR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403820 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
403821 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403822 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403823 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403824 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403825 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403826 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
403827 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
403828 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
403829 
403830 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
403831 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
403832 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
403833 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
403834 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
403835 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
403836 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
403837 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
403838 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
403839 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
403840 
403841 l_array_source_1              t_array_source_1;
403842 l_array_source_2              t_array_source_2;
403843 l_array_source_3              t_array_source_3;
403844 l_array_source_4              t_array_source_4;
403845 l_array_source_5              t_array_source_5;
403846 l_array_source_32              t_array_source_32;
403847 l_array_source_34              t_array_source_34;
403848 l_array_source_35              t_array_source_35;
403849 l_array_source_36              t_array_source_36;
403850 l_array_source_39              t_array_source_39;
403851 l_array_source_39_meaning      t_array_lookup_meaning;
403852 l_array_source_41              t_array_source_41;
403853 l_array_source_42              t_array_source_42;
403854 l_array_source_43              t_array_source_43;
403855 l_array_source_44              t_array_source_44;
403856 l_array_source_45              t_array_source_45;
403857 l_array_source_46              t_array_source_46;
403858 l_array_source_85              t_array_source_85;
403859 l_array_source_85_meaning      t_array_lookup_meaning;
403860 l_array_source_114              t_array_source_114;
403861 l_array_source_114_meaning      t_array_lookup_meaning;
403862 
403863 l_array_source_11      t_array_source_11;
403864 l_array_source_15      t_array_source_15;
403865 l_array_source_84      t_array_source_84;
403866 l_array_source_88      t_array_source_88;
403867 l_array_source_91      t_array_source_91;
403868 l_array_source_92      t_array_source_92;
403869 l_array_source_93      t_array_source_93;
403870 l_array_source_94      t_array_source_94;
403871 l_array_source_95      t_array_source_95;
403872 l_array_source_97      t_array_source_97;
403873 
403874 --
403875 CURSOR header_cur
403876 IS
403877 SELECT /*+ leading(xet) cardinality(xet,1) */
403878 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
403879 -- Event Class Code: USER_DEFINE
403880     xet.entity_id
403881   , xet.legal_entity_id
403882   , xet.entity_code
403883   , xet.transaction_number
403884   , xet.event_id
403885   , xet.event_class_code
403886   , xet.event_type_code
403887   , xet.event_number
403888   , xet.event_date
403889   , xet.transaction_date
403890   , xet.reference_num_1
403891   , xet.reference_num_2
403892   , xet.reference_num_3
403893   , xet.reference_num_4
403894   , xet.reference_char_1
403895   , xet.reference_char_2
403896   , xet.reference_char_3
403897   , xet.reference_char_4
403898   , xet.reference_date_1
403899   , xet.reference_date_2
403900   , xet.reference_date_3
403901   , xet.reference_date_4
403902   , xet.event_created_by
403903   , xet.budgetary_control_flag 
403904   , h2.TRANSACTION_ID    source_1
403905   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
403906   , h5.TRANSACTION_QUANTITY    source_3
403907   , h5.TRANSACTION_UOM    source_4
403908   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
403909   , h5.INV_TXN_TRANSPO_DIST_ACCT    source_32
403910   , h1.INTERORG_EXPENSE_ACCOUNT    source_34
403911   , h1.INTERORG_PAYABLES_ACCOUNT    source_35
403912   , h1.INTERORG_PRICE_VAR_ACCOUNT    source_36
403913   , h4.PRIMARY_COST_METHOD    source_39
403914   , fvl39.meaning   source_39_meaning
403915   , h8.PLA_MATERIAL_ACCOUNT    source_41
403916   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
403917   , h8.PLA_RESOURCE_ACCOUNT    source_43
403918   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
403919   , h8.PLA_OVERHEAD_ACCOUNT    source_45
403920   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
403921   , h2.DISTRIBUTION_TYPE    source_85
403922   , fvl85.meaning   source_85_meaning
403923   , h2.TRANSFER_TO_GL_INDICATOR    source_114
403924   , fvl114.meaning   source_114_meaning
403925   FROM xla_events_gt     xet 
403926   , CST_XLA_INTERORG_PARAMS_REF_V  h1
403927   , CST_XLA_INV_HEADERS_V  h2
403928   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
403929   , CST_XLA_INV_REF_V  h5
403930   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
403931   , CST_XLA_INV_TXN_TYPES_REF_V  h7
403932   , CST_XLA_PLA_CATEGORY_REF_V  h8
403933   , fnd_lookup_values    fvl39
403934   , fnd_lookup_values    fvl85
403935   , fnd_lookup_values    fvl114
403936  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
403937    and xet.event_type_code = C_EVENT_TYPE_CODE
403938    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
403939   AND h1.event_id (+) = h2.event_id
403940  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h8.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h8.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
403941   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
403942   AND fvl39.view_application_id(+) = 700
403943   AND fvl39.language(+)            = USERENV('LANG')
403944      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
403945   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
403946   AND fvl85.view_application_id(+) = 700
403947   AND fvl85.language(+)            = USERENV('LANG')
403948      AND fvl114.lookup_type(+)         = 'YES_NO'
403949   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
403950   AND fvl114.view_application_id(+) = 0
403951   AND fvl114.language(+)            = USERENV('LANG')
403952   
403953  ORDER BY event_id
403954 ;
403955 
403956 
403957 --
403958 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
403959 IS
403960 SELECT /*+ leading(xet) cardinality(xet,1) */
403961 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
403962 -- Event Class Code: USER_DEFINE
403963     xet.entity_id
403964    ,xet.legal_entity_id
403965    ,xet.entity_code
403966    ,xet.transaction_number
403967    ,xet.event_id
403968    ,xet.event_class_code
403969    ,xet.event_type_code
403970    ,xet.event_number
403971    ,xet.event_date
403972    ,xet.transaction_date
403973    ,xet.reference_num_1
403974    ,xet.reference_num_2
403975    ,xet.reference_num_3
403976    ,xet.reference_num_4
403977    ,xet.reference_char_1
403978    ,xet.reference_char_2
403979    ,xet.reference_char_3
403980    ,xet.reference_char_4
403981    ,xet.reference_date_1
403982    ,xet.reference_date_2
403983    ,xet.reference_date_3
403984    ,xet.reference_date_4
403985    ,xet.event_created_by
403986    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
403987   , l3.CODE_COMBINATION_ID    source_11
403988   , l3.COST_ELEMENT_ID    source_15
403989   , l3.DISTRIBUTION_IDENTIFIER    source_84
403990   , l3.CURRENCY_CODE    source_88
403991   , l3.ENTERED_AMOUNT    source_91
403992   , l3.CURRENCY_CONVERSION_DATE    source_92
403993   , l3.CURRENCY_CONVERSION_RATE    source_93
403994   , l3.CURRENCY_CONVERSION_TYPE    source_94
403995   , l3.ACCOUNTED_AMOUNT    source_95
403996   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
403997   FROM xla_events_gt     xet 
403998   , CST_XLA_INV_LINES_V  l3
403999  WHERE xet.event_id between x_first_event_id and x_last_event_id
404000    and xet.event_date between p_pad_start_date and p_pad_end_date
404001    and xet.event_type_code = C_EVENT_TYPE_CODE
404002    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
404003 ;
404004 
404005 --
404006 BEGIN
404007 IF g_log_enabled THEN
404008    l_log_module := C_DEFAULT_MODULE||'.EventType_607';
404009 END IF;
404010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
404011    trace
404012       (p_msg      => 'BEGIN of EventType_607'
404013       ,p_level    => C_LEVEL_PROCEDURE
404014       ,p_module   => l_log_module);
404015 END IF;
404016 
404017 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
404018    trace
404019       (p_msg      => 'p_application_id = '||p_application_id||
404020                      ' - p_base_ledger_id = '||p_base_ledger_id||
404021                      ' - p_target_ledger_id  = '||p_target_ledger_id||
404022                      ' - p_language = '||p_language||
404023                      ' - p_currency_code = '||p_currency_code||
404024                      ' - p_sla_ledger_id = '||p_sla_ledger_id
404025       ,p_level    => C_LEVEL_STATEMENT
404026       ,p_module   => l_log_module);
404027 END IF;
404028 --
404029 -- initialze arrays
404030 --
404031 g_array_event.DELETE;
404032 l_rec_array_event := l_null_rec_array_event;
404033 --
404034 --------------------------------------
404035 -- 4262811 Initialze MPA Line Number
404036 --------------------------------------
404037 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
404038 
404039 --
404040 
404041 --
404042 OPEN header_cur;
404043 --
404044 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
404045    trace
404046    (p_msg      => 'SQL - FETCH header_cur'
404047    ,p_level    => C_LEVEL_STATEMENT
404048    ,p_module   => l_log_module);
404049 END IF;
404050 --
404051 LOOP
404052 FETCH header_cur BULK COLLECT INTO
404053         l_array_entity_id
404054       , l_array_legal_entity_id
404055       , l_array_entity_code
404056       , l_array_transaction_num
404057       , l_array_event_id
404058       , l_array_class_code
404059       , l_array_event_type
404060       , l_array_event_number
404061       , l_array_event_date
404062       , l_array_transaction_date
404063       , l_array_reference_num_1
404064       , l_array_reference_num_2
404065       , l_array_reference_num_3
404066       , l_array_reference_num_4
404067       , l_array_reference_char_1
404068       , l_array_reference_char_2
404069       , l_array_reference_char_3
404070       , l_array_reference_char_4
404071       , l_array_reference_date_1
404072       , l_array_reference_date_2
404073       , l_array_reference_date_3
404074       , l_array_reference_date_4
404075       , l_array_event_created_by
404076       , l_array_budgetary_control_flag 
404077       , l_array_source_1
404078       , l_array_source_2
404079       , l_array_source_3
404080       , l_array_source_4
404081       , l_array_source_5
404082       , l_array_source_32
404083       , l_array_source_34
404084       , l_array_source_35
404085       , l_array_source_36
404086       , l_array_source_39
404087       , l_array_source_39_meaning
404088       , l_array_source_41
404089       , l_array_source_42
404090       , l_array_source_43
404091       , l_array_source_44
404092       , l_array_source_45
404093       , l_array_source_46
404094       , l_array_source_85
404095       , l_array_source_85_meaning
404096       , l_array_source_114
404097       , l_array_source_114_meaning
404098       LIMIT l_rows;
404099 --
404100 IF (C_LEVEL_EVENT >= g_log_level) THEN
404101    trace
404102    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
404103    ,p_level    => C_LEVEL_EVENT
404104    ,p_module   => l_log_module);
404105 END IF;
404106 --
404107 EXIT WHEN l_array_entity_id.COUNT = 0;
404108 
404109 -- initialize arrays
404110 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
404111 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
404112 
404113 --
404114 -- Bug 4458708
404115 --
404116 XLA_AE_LINES_PKG.g_LineNumber := 0;
404117 
404118 
404119 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
404120 g_last_hdr_idx := l_array_event_id.LAST;
404121 --
404122 -- loop for the headers. Each iteration is for each header extract row
404123 -- fetched in header cursor
404124 --
404125 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
404126 
404127 --
404128 -- set event info as cache for other routines to refer event attributes
404129 --
404130 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
404131    (p_application_id           => p_application_id
404132    ,p_primary_ledger_id        => p_primary_ledger_id
404133    ,p_base_ledger_id           => p_base_ledger_id
404134    ,p_target_ledger_id         => p_target_ledger_id
404135    ,p_entity_id                => l_array_entity_id(hdr_idx)
404136    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
404137    ,p_entity_code              => l_array_entity_code(hdr_idx)
404138    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
404139    ,p_event_id                 => l_array_event_id(hdr_idx)
404140    ,p_event_class_code         => l_array_class_code(hdr_idx)
404141    ,p_event_type_code          => l_array_event_type(hdr_idx)
404142    ,p_event_number             => l_array_event_number(hdr_idx)
404143    ,p_event_date               => l_array_event_date(hdr_idx)
404144    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
404145    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
404146    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
404147    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
404148    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
404149    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
404150    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
404151    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
404152    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
404153    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
404154    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
404155    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
404156    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
404157    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
404158    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
404159 
404160 --
404161 -- set the status of entry to C_VALID (0)
404162 --
404163 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
404164 
404165 --
404166 -- initialize a row for ae header
404167 --
404168 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
404169 
404170 l_event_id := l_array_event_id(hdr_idx);
404171 
404172 --
404173 -- storing the hdr_idx for event. May be used by line cursor.
404174 --
404175 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
404176 
404177 --
404178 -- store sources from header extract. This can be improved to
404179 -- store only those sources from header extract that may be used in lines
404180 --
404181 
404182 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
404183 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
404184 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
404185 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
404186 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
404187 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
404188 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
404189 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
404190 g_array_event(l_event_id).array_value_num('source_36') := l_array_source_36(hdr_idx);
404191 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
404192 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
404193 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
404194 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
404195 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
404196 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
404197 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
404198 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
404199 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
404200 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
404201 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
404202 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
404203 
404204 --
404205 -- initilaize the status of ae headers for diffrent balance types
404206 -- the status is initialised to C_NOT_CREATED (2)
404207 --
404208 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
404209 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
404210 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
404211 
404212 --
404213 -- call api to validate and store accounting attributes for header
404214 --
404215 
404216 ------------------------------------------------------------
404217 -- Accrual Reversal : to get date for Standard Source (NONE)
404218 ------------------------------------------------------------
404219 l_acc_rev_gl_date_source := NULL;
404220 
404221      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
404222       l_rec_acct_attrs.array_date_value(1) := 
404223 xla_ae_sources_pkg.GetSystemSourceDate(
404224    p_source_code           => 'XLA_REFERENCE_DATE_1'
404225  , p_source_type_code      => 'Y'
404226  , p_source_application_id =>  602
404227 );
404228      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
404229       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
404230 
404231 
404232 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
404233 
404234 XLA_AE_HEADER_PKG.SetJeCategoryName;
404235 
404236 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
404237 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
404238 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
404239 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
404240 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
404241 
404242 
404243 -- No header level analytical criteria
404244 
404245 --
404246 --accounting attribute enhancement, bug 3612931
404247 --
404248 l_trx_reversal_source := SUBSTR(NULL, 1,30);
404249 
404250 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
404251    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
404252 
404253    xla_accounting_err_pkg.build_message
404254       (p_appli_s_name            => 'XLA'
404255       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
404256       ,p_token_1                 => 'ACCT_ATTR_NAME'
404257       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
404258       ,p_token_2                 => 'PRODUCT_NAME'
404259       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
404260       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
404261       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
404262       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
404263 
404264 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
404265    --
404266    -- following sets the accounting attributes needed to reverse
404267    -- accounting for a distributeion
404268    --
404269    xla_ae_lines_pkg.SetTrxReversalAttrs
404270       (p_event_id              => l_event_id
404271       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
404272       ,p_trx_reversal_source   => l_trx_reversal_source);
404273 
404274 END IF;
404275 
404276 
404277 ----------------------------------------------------------------
404278 -- 4262811 -  update the header statuses to invalid in need be
404279 ----------------------------------------------------------------
404280 --
404281 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
404282 
404283 
404284   -----------------------------------------------
404285   -- No accrual reversal for the event class/type
404286   -----------------------------------------------
404287 ----------------------------------------------------------------
404288 
404289 --
404290 -- this ends the header loop iteration for one bulk fetch
404291 --
404292 END LOOP;
404293 
404294 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
404295 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
404296 
404297 --
404298 -- insert dummy rows into lines gt table that were created due to
404299 -- transaction reversals
404300 --
404301 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
404302    l_result := XLA_AE_LINES_PKG.InsertLines;
404303 END IF;
404304 
404305 --
404306 -- reset the temp_line_num for each set of events fetched from header
404307 -- cursor rather than doing it for each new event in line cursor
404308 -- Bug 3939231
404309 --
404310 xla_ae_lines_pkg.g_temp_line_num := 0;
404311 
404312 
404313 
404314 --
404315 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
404316 --
404317 --
404318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
404319 
404320       trace
404321          (p_msg      => 'SQL - FETCH line_cur'
404322          ,p_level    => C_LEVEL_STATEMENT
404323          ,p_module   => l_log_module);
404324 
404325 END IF;
404326 --
404327 --
404328 LOOP
404329   --
404330   FETCH line_cur BULK COLLECT INTO
404331         l_array_entity_id
404332       , l_array_legal_entity_id
404333       , l_array_entity_code
404334       , l_array_transaction_num
404335       , l_array_event_id
404336       , l_array_class_code
404337       , l_array_event_type
404338       , l_array_event_number
404339       , l_array_event_date
404340       , l_array_transaction_date
404341       , l_array_reference_num_1
404342       , l_array_reference_num_2
404343       , l_array_reference_num_3
404344       , l_array_reference_num_4
404345       , l_array_reference_char_1
404346       , l_array_reference_char_2
404347       , l_array_reference_char_3
404348       , l_array_reference_char_4
404349       , l_array_reference_date_1
404350       , l_array_reference_date_2
404351       , l_array_reference_date_3
404352       , l_array_reference_date_4
404353       , l_array_event_created_by
404354       , l_array_budgetary_control_flag
404355       , l_array_extract_line_num 
404356       , l_array_source_11
404357       , l_array_source_15
404358       , l_array_source_84
404359       , l_array_source_88
404360       , l_array_source_91
404361       , l_array_source_92
404362       , l_array_source_93
404363       , l_array_source_94
404364       , l_array_source_95
404365       , l_array_source_97
404366       LIMIT l_rows;
404367 
404368   --
404369   IF (C_LEVEL_EVENT >= g_log_level) THEN
404370             trace
404371                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
404372                ,p_level    => C_LEVEL_EVENT
404373                ,p_module   => l_log_module);
404374   END IF;
404375   --
404376   EXIT WHEN l_array_entity_id.count = 0;
404377 
404378   XLA_AE_LINES_PKG.g_rec_lines := null;
404379 
404380 --
404381 -- Bug 4458708
404382 --
404383 XLA_AE_LINES_PKG.g_LineNumber := 0;
404384 --
404385 --
404386 
404387 FOR Idx IN 1..l_array_event_id.count LOOP
404388    --
404389    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
404390    --
404391    l_event_id := l_array_event_id(idx);  -- 5648433
404392 
404393    --
404394    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
404395    --
404396 
404397    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
404398              (g_array_event(l_event_id).array_value_num('header_index'))
404399          ,'N'
404400          ) <> 'Y'
404401    THEN
404402       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
404403          trace
404404             (p_msg      => 'Trancaction revesal option is not Y '
404405             ,p_level    => C_LEVEL_STATEMENT
404406             ,p_module   => l_log_module);
404407       END IF;
404408 
404409 --
404410 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
404411 --
404412 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
404413 --
404414 -- set event info as cache for other routines to refer event attributes
404415 --
404416 
404417 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
404418    l_previous_event_id := l_event_id;
404419 
404420    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
404421       (p_application_id           => p_application_id
404422       ,p_primary_ledger_id        => p_primary_ledger_id
404423       ,p_base_ledger_id           => p_base_ledger_id
404424       ,p_target_ledger_id         => p_target_ledger_id
404425       ,p_entity_id                => l_array_entity_id(Idx)
404426       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
404427       ,p_entity_code              => l_array_entity_code(Idx)
404428       ,p_transaction_num          => l_array_transaction_num(Idx)
404429       ,p_event_id                 => l_array_event_id(Idx)
404430       ,p_event_class_code         => l_array_class_code(Idx)
404431       ,p_event_type_code          => l_array_event_type(Idx)
404432       ,p_event_number             => l_array_event_number(Idx)
404433       ,p_event_date               => l_array_event_date(Idx)
404434       ,p_transaction_date         => l_array_transaction_date(Idx)
404435       ,p_reference_num_1          => l_array_reference_num_1(Idx)
404436       ,p_reference_num_2          => l_array_reference_num_2(Idx)
404437       ,p_reference_num_3          => l_array_reference_num_3(Idx)
404438       ,p_reference_num_4          => l_array_reference_num_4(Idx)
404439       ,p_reference_char_1         => l_array_reference_char_1(Idx)
404440       ,p_reference_char_2         => l_array_reference_char_2(Idx)
404441       ,p_reference_char_3         => l_array_reference_char_3(Idx)
404442       ,p_reference_char_4         => l_array_reference_char_4(Idx)
404443       ,p_reference_date_1         => l_array_reference_date_1(Idx)
404444       ,p_reference_date_2         => l_array_reference_date_2(Idx)
404445       ,p_reference_date_3         => l_array_reference_date_3(Idx)
404446       ,p_reference_date_4         => l_array_reference_date_4(Idx)
404447       ,p_event_created_by         => l_array_event_created_by(Idx)
404448       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
404449        --
404450 END IF;
404451 
404452 
404453 
404454 --
404455 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
404456 
404457 l_acct_reversal_source := SUBSTR(NULL, 1,30);
404458 
404459 IF l_continue_with_lines THEN
404460    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
404461       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
404462 
404463       xla_accounting_err_pkg.build_message
404464          (p_appli_s_name            => 'XLA'
404465          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
404466          ,p_token_1                 => 'LINE_NUMBER'
404467          ,p_value_1                 => l_array_extract_line_num(Idx)
404468          ,p_token_2                 => 'PRODUCT_NAME'
404469          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
404470          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
404471          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
404472          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
404473 
404474    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
404475       --
404476       -- following sets the accounting attributes needed to reverse
404477       -- accounting for a distributeion
404478       --
404479 
404480       --
404481       -- 5217187
404482       --
404483       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
404484       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
404485                                        g_array_event(l_event_id).array_value_num('header_index'));
404486       --
404487       --
404488 
404489       -- No reversal code generated
404490 
404491       xla_ae_lines_pkg.SetAcctReversalAttrs
404492          (p_event_id             => l_event_id
404493          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
404494          ,p_calculate_acctd_flag => l_calculate_acctd_flag
404495          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
404496    END IF;
404497 
404498    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
404499        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
404500 
404501 --
404502 AcctLineType_105 (
404503  p_application_id  => p_application_id
404504  ,p_event_id     => l_event_id
404505  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404506  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404507  ,p_actual_flag => l_actual_flag
404508  ,p_balance_type_code => l_balance_type_code
404509  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404510  
404511  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404512  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404513  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404514  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404515  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404516  , p_source_11 => l_array_source_11(Idx)
404517  , p_source_84 => l_array_source_84(Idx)
404518  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404519  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404520  , p_source_88 => l_array_source_88(Idx)
404521  , p_source_91 => l_array_source_91(Idx)
404522  , p_source_92 => l_array_source_92(Idx)
404523  , p_source_93 => l_array_source_93(Idx)
404524  , p_source_94 => l_array_source_94(Idx)
404525  , p_source_95 => l_array_source_95(Idx)
404526  , p_source_97 => l_array_source_97(Idx)
404527  );
404528 If(l_balance_type_code = 'A') THEN
404529   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404530 END IF;
404531 
404532 --
404533 
404534 
404535 --
404536 AcctLineType_136 (
404537  p_application_id  => p_application_id
404538  ,p_event_id     => l_event_id
404539  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404540  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404541  ,p_actual_flag => l_actual_flag
404542  ,p_balance_type_code => l_balance_type_code
404543  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404544  
404545  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404546  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404547  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404548  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404549  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404550  , p_source_11 => l_array_source_11(Idx)
404551  , p_source_84 => l_array_source_84(Idx)
404552  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404553  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404554  , p_source_88 => l_array_source_88(Idx)
404555  , p_source_91 => l_array_source_91(Idx)
404556  , p_source_92 => l_array_source_92(Idx)
404557  , p_source_93 => l_array_source_93(Idx)
404558  , p_source_94 => l_array_source_94(Idx)
404559  , p_source_95 => l_array_source_95(Idx)
404560  , p_source_97 => l_array_source_97(Idx)
404561  );
404562 If(l_balance_type_code = 'A') THEN
404563   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404564 END IF;
404565 
404566 --
404567 
404568 
404569 --
404570 AcctLineType_150 (
404571  p_application_id  => p_application_id
404572  ,p_event_id     => l_event_id
404573  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404574  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404575  ,p_actual_flag => l_actual_flag
404576  ,p_balance_type_code => l_balance_type_code
404577  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404578  
404579  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404580  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404581  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404582  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404583  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404584  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
404585  , p_source_84 => l_array_source_84(Idx)
404586  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404587  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404588  , p_source_88 => l_array_source_88(Idx)
404589  , p_source_91 => l_array_source_91(Idx)
404590  , p_source_92 => l_array_source_92(Idx)
404591  , p_source_93 => l_array_source_93(Idx)
404592  , p_source_94 => l_array_source_94(Idx)
404593  , p_source_95 => l_array_source_95(Idx)
404594  , p_source_97 => l_array_source_97(Idx)
404595  );
404596 If(l_balance_type_code = 'A') THEN
404597   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404598 END IF;
404599 
404600 --
404601 
404602 
404603 --
404604 AcctLineType_174 (
404605  p_application_id  => p_application_id
404606  ,p_event_id     => l_event_id
404607  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404608  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404609  ,p_actual_flag => l_actual_flag
404610  ,p_balance_type_code => l_balance_type_code
404611  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404612  
404613  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404614  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404615  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404616  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404617  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404618  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
404619  , p_source_84 => l_array_source_84(Idx)
404620  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404621  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404622  , p_source_88 => l_array_source_88(Idx)
404623  , p_source_91 => l_array_source_91(Idx)
404624  , p_source_92 => l_array_source_92(Idx)
404625  , p_source_93 => l_array_source_93(Idx)
404626  , p_source_94 => l_array_source_94(Idx)
404627  , p_source_95 => l_array_source_95(Idx)
404628  , p_source_97 => l_array_source_97(Idx)
404629  );
404630 If(l_balance_type_code = 'A') THEN
404631   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404632 END IF;
404633 
404634 --
404635 
404636 
404637 --
404638 AcctLineType_225 (
404639  p_application_id  => p_application_id
404640  ,p_event_id     => l_event_id
404641  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404642  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404643  ,p_actual_flag => l_actual_flag
404644  ,p_balance_type_code => l_balance_type_code
404645  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404646  
404647  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404648  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404649  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404650  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404651  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404652  , p_source_11 => l_array_source_11(Idx)
404653  , p_source_15 => l_array_source_15(Idx)
404654  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
404655  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
404656  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
404657  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
404658  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
404659  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
404660  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
404661  , p_source_84 => l_array_source_84(Idx)
404662  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404663  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404664  , p_source_88 => l_array_source_88(Idx)
404665  , p_source_91 => l_array_source_91(Idx)
404666  , p_source_92 => l_array_source_92(Idx)
404667  , p_source_93 => l_array_source_93(Idx)
404668  , p_source_94 => l_array_source_94(Idx)
404669  , p_source_95 => l_array_source_95(Idx)
404670  , p_source_97 => l_array_source_97(Idx)
404671  );
404672 If(l_balance_type_code = 'A') THEN
404673   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404674 END IF;
404675 
404676 --
404677 
404678 
404679 --
404680 AcctLineType_298 (
404681  p_application_id  => p_application_id
404682  ,p_event_id     => l_event_id
404683  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404684  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404685  ,p_actual_flag => l_actual_flag
404686  ,p_balance_type_code => l_balance_type_code
404687  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404688  
404689  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404690  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404691  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404692  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404693  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404694  , p_source_11 => l_array_source_11(Idx)
404695  , p_source_84 => l_array_source_84(Idx)
404696  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404697  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404698  , p_source_88 => l_array_source_88(Idx)
404699  , p_source_91 => l_array_source_91(Idx)
404700  , p_source_92 => l_array_source_92(Idx)
404701  , p_source_93 => l_array_source_93(Idx)
404702  , p_source_94 => l_array_source_94(Idx)
404703  , p_source_95 => l_array_source_95(Idx)
404704  , p_source_97 => l_array_source_97(Idx)
404705  );
404706 If(l_balance_type_code = 'A') THEN
404707   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404708 END IF;
404709 
404710 --
404711 
404712 
404713 --
404714 AcctLineType_352 (
404715  p_application_id  => p_application_id
404716  ,p_event_id     => l_event_id
404717  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404718  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404719  ,p_actual_flag => l_actual_flag
404720  ,p_balance_type_code => l_balance_type_code
404721  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404722  
404723  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404724  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404725  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404726  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404727  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404728  , p_source_11 => l_array_source_11(Idx)
404729  , p_source_84 => l_array_source_84(Idx)
404730  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404731  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404732  , p_source_88 => l_array_source_88(Idx)
404733  , p_source_91 => l_array_source_91(Idx)
404734  , p_source_92 => l_array_source_92(Idx)
404735  , p_source_93 => l_array_source_93(Idx)
404736  , p_source_94 => l_array_source_94(Idx)
404737  , p_source_95 => l_array_source_95(Idx)
404738  , p_source_97 => l_array_source_97(Idx)
404739  );
404740 If(l_balance_type_code = 'A') THEN
404741   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404742 END IF;
404743 
404744 --
404745 
404746 
404747 --
404748 AcctLineType_430 (
404749  p_application_id  => p_application_id
404750  ,p_event_id     => l_event_id
404751  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404752  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404753  ,p_actual_flag => l_actual_flag
404754  ,p_balance_type_code => l_balance_type_code
404755  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404756  
404757  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404758  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404759  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404760  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404761  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404762  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
404763  , p_source_84 => l_array_source_84(Idx)
404764  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404765  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404766  , p_source_88 => l_array_source_88(Idx)
404767  , p_source_91 => l_array_source_91(Idx)
404768  , p_source_92 => l_array_source_92(Idx)
404769  , p_source_93 => l_array_source_93(Idx)
404770  , p_source_94 => l_array_source_94(Idx)
404771  , p_source_95 => l_array_source_95(Idx)
404772  , p_source_97 => l_array_source_97(Idx)
404773  );
404774 If(l_balance_type_code = 'A') THEN
404775   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404776 END IF;
404777 
404778 --
404779 
404780 
404781 --
404782 AcctLineType_433 (
404783  p_application_id  => p_application_id
404784  ,p_event_id     => l_event_id
404785  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404786  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404787  ,p_actual_flag => l_actual_flag
404788  ,p_balance_type_code => l_balance_type_code
404789  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404790  
404791  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404792  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404793  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404794  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404795  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404796  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
404797  , p_source_84 => l_array_source_84(Idx)
404798  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404799  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404800  , p_source_88 => l_array_source_88(Idx)
404801  , p_source_91 => l_array_source_91(Idx)
404802  , p_source_92 => l_array_source_92(Idx)
404803  , p_source_93 => l_array_source_93(Idx)
404804  , p_source_94 => l_array_source_94(Idx)
404805  , p_source_95 => l_array_source_95(Idx)
404806  , p_source_97 => l_array_source_97(Idx)
404807  );
404808 If(l_balance_type_code = 'A') THEN
404809   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404810 END IF;
404811 
404812 --
404813 
404814 
404815 --
404816 AcctLineType_467 (
404817  p_application_id  => p_application_id
404818  ,p_event_id     => l_event_id
404819  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404820  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404821  ,p_actual_flag => l_actual_flag
404822  ,p_balance_type_code => l_balance_type_code
404823  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404824  
404825  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404826  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404827  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404828  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404829  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404830  , p_source_11 => l_array_source_11(Idx)
404831  , p_source_84 => l_array_source_84(Idx)
404832  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404833  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404834  , p_source_88 => l_array_source_88(Idx)
404835  , p_source_91 => l_array_source_91(Idx)
404836  , p_source_92 => l_array_source_92(Idx)
404837  , p_source_93 => l_array_source_93(Idx)
404838  , p_source_94 => l_array_source_94(Idx)
404839  , p_source_95 => l_array_source_95(Idx)
404840  , p_source_97 => l_array_source_97(Idx)
404841  );
404842 If(l_balance_type_code = 'A') THEN
404843   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404844 END IF;
404845 
404846 --
404847 
404848 
404849 --
404850 AcctLineType_482 (
404851  p_application_id  => p_application_id
404852  ,p_event_id     => l_event_id
404853  ,p_calculate_acctd_flag => l_calculate_acctd_flag
404854  ,p_calculate_g_l_flag => l_calculate_g_l_flag
404855  ,p_actual_flag => l_actual_flag
404856  ,p_balance_type_code => l_balance_type_code
404857  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
404858  
404859  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
404860  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
404861  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
404862  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
404863  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
404864  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
404865  , p_source_84 => l_array_source_84(Idx)
404866  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
404867  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
404868  , p_source_88 => l_array_source_88(Idx)
404869  , p_source_91 => l_array_source_91(Idx)
404870  , p_source_92 => l_array_source_92(Idx)
404871  , p_source_93 => l_array_source_93(Idx)
404872  , p_source_94 => l_array_source_94(Idx)
404873  , p_source_95 => l_array_source_95(Idx)
404874  , p_source_97 => l_array_source_97(Idx)
404875  );
404876 If(l_balance_type_code = 'A') THEN
404877   l_actual_gain_loss_ref := l_gain_or_loss_ref;
404878 END IF;
404879 
404880 --
404881 
404882       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
404883       -- or secondary ledger that has different currency with primary
404884       -- or alc that is calculated by sla
404885       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
404886             (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'))
404887 
404888 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
404889 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
404890           AND (l_actual_flag = 'A')) THEN
404891         XLA_AE_LINES_PKG.CreateGainOrLossLines(
404892           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
404893          ,p_application_id   => p_application_id
404894          ,p_amb_context_code => 'DEFAULT'
404895          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
404896          ,p_event_class_code => C_EVENT_CLASS_CODE
404897          ,p_event_type_code  => C_EVENT_TYPE_CODE
404898          
404899          ,p_gain_ccid        => -1
404900          ,p_loss_ccid        => -1
404901 
404902          ,p_actual_flag      => l_actual_flag
404903          ,p_enc_flag         => null
404904          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
404905          ,p_enc_g_l_ref      => null
404906          );
404907       END IF;
404908    END IF;
404909 END IF;
404910 
404911    ELSE
404912       --
404913       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
404914       --
404915       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
404916          trace
404917             (p_msg      => 'Trancaction revesal option is Y'
404918             ,p_level    => C_LEVEL_STATEMENT
404919             ,p_module   => l_log_module);
404920       END IF;
404921    END IF;
404922 
404923 END LOOP;
404924 l_result := XLA_AE_LINES_PKG.InsertLines ;
404925 end loop;
404926 close line_cur;
404927 
404928 
404929 --
404930 -- insert headers into xla_ae_headers_gt table
404931 --
404932 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
404933 
404934 -- insert into errors table here.
404935 
404936 END LOOP;
404937 
404938 --
404939 -- 4865292
404940 --
404941 -- Compare g_hdr_extract_count with event count in
404942 -- CreateHeadersAndLines.
404943 --
404944 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
404945 
404946 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
404947    trace (p_msg     => '# rows extracted from header extract objects '
404948                     || ' (running total): '
404949                     || g_hdr_extract_count
404950          ,p_level   => C_LEVEL_STATEMENT
404951          ,p_module  => l_log_module);
404952 END IF;
404953 
404954 CLOSE header_cur;
404955 --
404956 
404957 --
404958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
404959    trace
404960       (p_msg      => 'END of EventType_607'
404961       ,p_level    => C_LEVEL_PROCEDURE
404962       ,p_module   => l_log_module);
404963 END IF;
404964 --
404965 RETURN l_result;
404966 EXCEPTION
404967 WHEN xla_exceptions_pkg.application_exception THEN
404968    
404969 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
404970 
404971    
404972 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
404973 
404974    RAISE;
404975 
404976 WHEN NO_DATA_FOUND THEN
404977 
404978 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
404979 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
404980 
404981 FOR header_record IN header_cur
404982 LOOP
404983     l_array_header_events(header_record.event_id) := header_record.event_id;
404984 END LOOP;
404985 
404986 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
404987 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
404988 
404989 fnd_file.put_line(fnd_file.LOG, '                    ');
404990 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
404991 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
404992 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
404993 
404994 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
404995 LOOP
404996 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
404997 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
404998         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
404999 	END IF;
405000 END LOOP;
405001 
405002 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
405003 fnd_file.put_line(fnd_file.LOG, '                    ');
405004 
405005 
405006 xla_exceptions_pkg.raise_message
405007       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_607');
405008 
405009 
405010 WHEN OTHERS THEN
405011    xla_exceptions_pkg.raise_message
405012       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_607');
405013 END EventType_607;
405014 --
405015 
405016 ---------------------------------------
405017 --
405018 -- PRIVATE PROCEDURE
405019 --         insert_sources_608
405020 --
405021 ----------------------------------------
405022 --
405023 PROCEDURE insert_sources_608(
405024                                 p_target_ledger_id       IN NUMBER
405025                               , p_language               IN VARCHAR2
405026                               , p_sla_ledger_id          IN NUMBER
405027                               , p_pad_start_date         IN DATE
405028                               , p_pad_end_date           IN DATE
405029                          )
405030 IS
405031 
405032 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
405033 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
405034 p_apps_owner                   VARCHAR2(30);
405035 l_log_module                   VARCHAR2(240);
405036 BEGIN
405037 IF g_log_enabled THEN
405038       l_log_module := C_DEFAULT_MODULE||'.insert_sources_608';
405039 END IF;
405040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
405041 
405042       trace
405043          (p_msg      => 'BEGIN of insert_sources_608'
405044          ,p_level    => C_LEVEL_PROCEDURE
405045          ,p_module   => l_log_module);
405046 
405047 END IF;
405048 
405049 -- select APPS owner
405050 SELECT oracle_username
405051   INTO p_apps_owner
405052   FROM fnd_oracle_userid
405053  WHERE read_only_flag = 'U'
405054 ;
405055 
405056 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
405057       trace
405058          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
405059                         ' - p_language = '||p_language||
405060                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
405061                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
405062                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
405063                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
405064          ,p_level    => C_LEVEL_STATEMENT
405065          ,p_module   => l_log_module);
405066 END IF;
405067 
405068 
405069 --
405070 INSERT INTO xla_diag_sources --hdr1
405071 (
405072         event_id
405073       , ledger_id
405074       , sla_ledger_id
405075       , description_language
405076       , object_name
405077       , object_type_code
405078       , line_number
405079       , source_application_id
405080       , source_type_code
405081       , source_code
405082       , source_value
405083       , source_meaning
405084       , created_by
405085       , creation_date
405086       , last_update_date
405087       , last_updated_by
405088       , last_update_login
405089       , program_update_date
405090       , program_application_id
405091       , program_id
405092       , request_id
405093 )
405094 SELECT
405095         event_id
405096       , p_target_ledger_id
405097       , p_sla_ledger_id
405098       , p_language
405099       , object_name
405100       , object_type_code
405101       , line_number
405102       , source_application_id
405103       , source_type_code
405104       , source_code
405105       , SUBSTR(source_value ,1,1996)
405106       , SUBSTR(source_meaning,1,200)
405107       , xla_environment_pkg.g_Usr_Id
405108       , TRUNC(SYSDATE)
405109       , TRUNC(SYSDATE)
405110       , xla_environment_pkg.g_Usr_Id
405111       , xla_environment_pkg.g_Login_Id
405112       , TRUNC(SYSDATE)
405113       , xla_environment_pkg.g_Prog_Appl_Id
405114       , xla_environment_pkg.g_Prog_Id
405115       , xla_environment_pkg.g_Req_Id
405116   FROM (
405117        SELECT xet.event_id                  event_id
405118             , 0                             line_number
405119             , CASE r
405120                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
405121                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
405122                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
405123                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
405124                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
405125                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
405126                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
405127                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
405128                 WHEN 9 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
405129                 WHEN 10 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
405130                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
405131                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
405132                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
405133                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
405134                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
405135                 WHEN 16 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
405136                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
405137                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
405138                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
405139                 
405140                ELSE null
405141               END                           object_name
405142             , CASE r
405143                 WHEN 1 THEN 'HEADER' 
405144                 WHEN 2 THEN 'HEADER' 
405145                 WHEN 3 THEN 'HEADER' 
405146                 WHEN 4 THEN 'HEADER' 
405147                 WHEN 5 THEN 'HEADER' 
405148                 WHEN 6 THEN 'HEADER' 
405149                 WHEN 7 THEN 'HEADER' 
405150                 WHEN 8 THEN 'HEADER' 
405151                 WHEN 9 THEN 'HEADER' 
405152                 WHEN 10 THEN 'HEADER' 
405153                 WHEN 11 THEN 'HEADER' 
405154                 WHEN 12 THEN 'HEADER' 
405155                 WHEN 13 THEN 'HEADER' 
405156                 WHEN 14 THEN 'HEADER' 
405157                 WHEN 15 THEN 'HEADER' 
405158                 WHEN 16 THEN 'HEADER' 
405159                 WHEN 17 THEN 'HEADER' 
405160                 WHEN 18 THEN 'HEADER' 
405161                 WHEN 19 THEN 'HEADER' 
405162                 
405163                 ELSE null
405164               END                           object_type_code
405165             , CASE r
405166                 WHEN 1 THEN '707' 
405167                 WHEN 2 THEN '707' 
405168                 WHEN 3 THEN '707' 
405169                 WHEN 4 THEN '707' 
405170                 WHEN 5 THEN '707' 
405171                 WHEN 6 THEN '707' 
405172                 WHEN 7 THEN '707' 
405173                 WHEN 8 THEN '707' 
405174                 WHEN 9 THEN '707' 
405175                 WHEN 10 THEN '707' 
405176                 WHEN 11 THEN '707' 
405177                 WHEN 12 THEN '707' 
405178                 WHEN 13 THEN '707' 
405179                 WHEN 14 THEN '707' 
405180                 WHEN 15 THEN '707' 
405181                 WHEN 16 THEN '707' 
405182                 WHEN 17 THEN '707' 
405183                 WHEN 18 THEN '707' 
405184                 WHEN 19 THEN '707' 
405185                 
405186                 ELSE null
405187               END                           source_application_id
405188             , 'S'             source_type_code
405189             , CASE r
405190                 WHEN 1 THEN 'TRANSACTION_ID' 
405191                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
405192                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
405193                 WHEN 4 THEN 'TRANSACTION_UOM' 
405194                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
405195                 WHEN 6 THEN 'PLA_EXPENSE_ACCOUNT' 
405196                 WHEN 7 THEN 'INTERORG_PRICE_VAR_ACCOUNT' 
405197                 WHEN 8 THEN 'PROFIT_IN_INV_ACCOUNT' 
405198                 WHEN 9 THEN 'INV_ORG_EXPENSE_ACCT' 
405199                 WHEN 10 THEN 'PRIMARY_COST_METHOD' 
405200                 WHEN 11 THEN 'PLA_MATERIAL_ACCOUNT' 
405201                 WHEN 12 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
405202                 WHEN 13 THEN 'PLA_RESOURCE_ACCOUNT' 
405203                 WHEN 14 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
405204                 WHEN 15 THEN 'PLA_OVERHEAD_ACCOUNT' 
405205                 WHEN 16 THEN 'INTERORG_BRIDGING_ACCOUNT' 
405206                 WHEN 17 THEN 'INV_TXN_EXPENSE_ACCT' 
405207                 WHEN 18 THEN 'DISTRIBUTION_TYPE' 
405208                 WHEN 19 THEN 'TRANSFER_TO_GL_INDICATOR' 
405209                 
405210                 ELSE null
405211               END                           source_code
405212             , CASE r
405213                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
405214                 WHEN 2 THEN TO_CHAR(h6.ITEM_CONCATENATED_SEGMENTS)
405215                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
405216                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
405217                 WHEN 5 THEN TO_CHAR(h7.INV_TXN_TYPE_DESCRIPTION)
405218                 WHEN 6 THEN TO_CHAR(h8.PLA_EXPENSE_ACCOUNT)
405219                 WHEN 7 THEN TO_CHAR(h1.INTERORG_PRICE_VAR_ACCOUNT)
405220                 WHEN 8 THEN TO_CHAR(h1.PROFIT_IN_INV_ACCOUNT)
405221                 WHEN 9 THEN TO_CHAR(h4.INV_ORG_EXPENSE_ACCT)
405222                 WHEN 10 THEN TO_CHAR(h4.PRIMARY_COST_METHOD)
405223                 WHEN 11 THEN TO_CHAR(h8.PLA_MATERIAL_ACCOUNT)
405224                 WHEN 12 THEN TO_CHAR(h8.PLA_MATERIAL_OVERHEAD_ACCOUNT)
405225                 WHEN 13 THEN TO_CHAR(h8.PLA_RESOURCE_ACCOUNT)
405226                 WHEN 14 THEN TO_CHAR(h8.PLA_OUTSIDE_PROCESSING_ACCOUNT)
405227                 WHEN 15 THEN TO_CHAR(h8.PLA_OVERHEAD_ACCOUNT)
405228                 WHEN 16 THEN TO_CHAR(h1.INTERORG_BRIDGING_ACCOUNT)
405229                 WHEN 17 THEN TO_CHAR(h5.INV_TXN_EXPENSE_ACCT)
405230                 WHEN 18 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
405231                 WHEN 19 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
405232                 
405233                 ELSE null
405234               END                           source_value
405235             , CASE r
405236                 WHEN 10 THEN fvl39.meaning
405237                 WHEN 18 THEN fvl85.meaning
405238                 WHEN 19 THEN fvl114.meaning
405239                 
405240                 ELSE null
405241               END               source_meaning
405242         FROM xla_events_gt     xet  
405243       , CST_XLA_INTERORG_PARAMS_REF_V  h1
405244       , CST_XLA_INV_HEADERS_V  h2
405245       , CST_XLA_INV_ORG_PARAMS_REF_V  h4
405246       , CST_XLA_INV_REF_V  h5
405247       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
405248       , CST_XLA_INV_TXN_TYPES_REF_V  h7
405249       , CST_XLA_PLA_CATEGORY_REF_V  h8
405250   , fnd_lookup_values    fvl39
405251   , fnd_lookup_values    fvl85
405252   , fnd_lookup_values    fvl114
405253             ,(select rownum r from all_objects where rownum <= 19 and owner = p_apps_owner)
405254        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
405255          AND xet.event_type_code = C_EVENT_TYPE_CODE
405256             AND h2.event_id = xet.event_id
405257   AND h1.event_id (+) = h2.event_id
405258  AND h4.inv_organization_id  (+) = h2.organization_id AND h5.ref_transaction_id = h2.transaction_id AND h6.inventory_item_id  (+) = h2.inventory_item_id  and h6.organization_id  (+) = h2.organization_id AND h7.inv_transaction_type_id  (+) = h2.transaction_type_id AND h8.pla_cat_organization_id  (+) = h2.organization_id  and h8.pla_cat_item_id   (+) = h2.inventory_item_id  and h8.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
405259   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
405260   AND fvl39.view_application_id(+) = 700
405261   AND fvl39.language(+)            = USERENV('LANG')
405262      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
405263   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
405264   AND fvl85.view_application_id(+) = 700
405265   AND fvl85.language(+)            = USERENV('LANG')
405266      AND fvl114.lookup_type(+)         = 'YES_NO'
405267   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
405268   AND fvl114.view_application_id(+) = 0
405269   AND fvl114.language(+)            = USERENV('LANG')
405270   
405271 )
405272 ;
405273 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
405274 
405275       trace
405276          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
405277          ,p_level    => C_LEVEL_STATEMENT
405278          ,p_module   => l_log_module);
405279 
405280 END IF;
405281 --
405282 
405283 
405284 
405285 --
405286 INSERT INTO xla_diag_sources --line1
405287 (
405288         event_id
405289       , ledger_id
405290       , sla_ledger_id
405291       , description_language
405292       , object_name
405293       , object_type_code
405294       , line_number
405295       , source_application_id
405296       , source_type_code
405297       , source_code
405298       , source_value
405299       , source_meaning
405300       , created_by
405301       , creation_date
405302       , last_update_date
405303       , last_updated_by
405304       , last_update_login
405305       , program_update_date
405306       , program_application_id
405307       , program_id
405308       , request_id
405309 )
405310 SELECT  event_id
405311       , p_target_ledger_id
405312       , p_sla_ledger_id
405313       , p_language
405314       , object_name
405315       , object_type_code
405316       , line_number
405317       , source_application_id
405318       , source_type_code
405319       , source_code
405320       , SUBSTR(source_value,1,1996)
405321       , SUBSTR(source_meaning,1,200)
405322       , xla_environment_pkg.g_Usr_Id
405323       , TRUNC(SYSDATE)
405324       , TRUNC(SYSDATE)
405325       , xla_environment_pkg.g_Usr_Id
405326       , xla_environment_pkg.g_Login_Id
405327       , TRUNC(SYSDATE)
405328       , xla_environment_pkg.g_Prog_Appl_Id
405329       , xla_environment_pkg.g_Prog_Id
405330       , xla_environment_pkg.g_Req_Id
405331   FROM (
405332        SELECT xet.event_id                  event_id
405333             , l3.line_number                 line_number
405334             , CASE r
405335                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
405336                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
405337                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
405338                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
405339                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
405340                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
405341                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
405342                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
405343                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
405344                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
405345                 
405346                ELSE null
405347               END                           object_name
405348             , CASE r
405349                 WHEN 1 THEN 'LINE' 
405350                 WHEN 2 THEN 'LINE' 
405351                 WHEN 3 THEN 'LINE' 
405352                 WHEN 4 THEN 'LINE' 
405353                 WHEN 5 THEN 'LINE' 
405354                 WHEN 6 THEN 'LINE' 
405355                 WHEN 7 THEN 'LINE' 
405356                 WHEN 8 THEN 'LINE' 
405357                 WHEN 9 THEN 'LINE' 
405358                 WHEN 10 THEN 'LINE' 
405359                 
405360                 ELSE null
405361               END                           object_type_code
405362             , CASE r
405363                 WHEN 1 THEN '707' 
405364                 WHEN 2 THEN '707' 
405365                 WHEN 3 THEN '707' 
405366                 WHEN 4 THEN '707' 
405367                 WHEN 5 THEN '707' 
405368                 WHEN 6 THEN '707' 
405369                 WHEN 7 THEN '707' 
405370                 WHEN 8 THEN '707' 
405371                 WHEN 9 THEN '707' 
405372                 WHEN 10 THEN '707' 
405373                 
405374                 ELSE null
405375               END                           source_application_id
405376             , 'S'             source_type_code
405377             , CASE r
405378                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
405379                 WHEN 2 THEN 'COST_ELEMENT_ID' 
405380                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
405381                 WHEN 4 THEN 'CURRENCY_CODE' 
405382                 WHEN 5 THEN 'ENTERED_AMOUNT' 
405383                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
405384                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
405385                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
405386                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
405387                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
405388                 
405389                 ELSE null
405390               END                           source_code
405391             , CASE r
405392                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
405393                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
405394                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
405395                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
405396                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
405397                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
405398                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
405399                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
405400                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
405401                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
405402                 
405403                 ELSE null
405404               END                           source_value
405405             , CASE r
405406                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
405407                           1009615
405408                          ,TO_CHAR(l3.COST_ELEMENT_ID)
405409                          ,'COST_ELEMENT_ID'
405410                          ,'S'
405411                          ,707)
405412                 
405413                 ELSE null
405414               END               source_meaning
405415          FROM  xla_events_gt     xet  
405416         , CST_XLA_INV_LINES_V  l3
405417             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
405418         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
405419           AND xet.event_type_code = C_EVENT_TYPE_CODE
405420             AND l3.event_id          = xet.event_id
405421 
405422 )
405423 ;
405424 --
405425 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
405426 
405427       trace
405428          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
405429          ,p_level    => C_LEVEL_STATEMENT
405430          ,p_module   => l_log_module);
405431 
405432 END IF;
405433 
405434 
405435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
405436       trace
405437          (p_msg      => 'END of insert_sources_608'
405438          ,p_level    => C_LEVEL_PROCEDURE
405439          ,p_module   => l_log_module);
405440 END IF;
405441 EXCEPTION
405442   WHEN xla_exceptions_pkg.application_exception THEN
405443       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
405444             trace
405445                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
405446                ,p_level    => C_LEVEL_EXCEPTION
405447                ,p_module   => l_log_module);
405448       END IF;
405449       RAISE;
405450   WHEN OTHERS THEN
405451       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
405452             trace
405453                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
405454                ,p_level    => C_LEVEL_EXCEPTION
405455                ,p_module   => l_log_module);
405456        END IF;
405457        xla_exceptions_pkg.raise_message
405458            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_608');
405459 END insert_sources_608;
405460 --
405461 
405462 ---------------------------------------
405463 --
405464 -- PRIVATE FUNCTION
405465 --         EventType_608
405466 --
405467 ----------------------------------------
405468 --
405469 FUNCTION EventType_608
405470        (p_application_id         IN NUMBER
405471        ,p_base_ledger_id         IN NUMBER
405472        ,p_target_ledger_id       IN NUMBER
405473        ,p_language               IN VARCHAR2
405474        ,p_currency_code          IN VARCHAR2
405475        ,p_sla_ledger_id          IN NUMBER
405476        ,p_pad_start_date         IN DATE
405477        ,p_pad_end_date           IN DATE
405478        ,p_primary_ledger_id      IN NUMBER)
405479 RETURN BOOLEAN IS
405480 --
405481 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
405482 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
405483 
405484 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
405485 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
405486 --
405487 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405488 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405489 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
405490 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
405491 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405492 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
405493 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
405494 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405495 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
405496 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
405497 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405498 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405499 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405500 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
405501 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
405502 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
405503 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
405504 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
405505 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
405506 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
405507 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
405508 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
405509 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
405510 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
405511 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
405512 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
405513 
405514 l_event_id                             NUMBER;
405515 l_previous_event_id                    NUMBER;
405516 l_first_event_id                       NUMBER;
405517 l_last_event_id                        NUMBER;
405518 
405519 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
405520 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
405521 --
405522 --
405523 l_result                    BOOLEAN := TRUE;
405524 l_rows                      NUMBER  := 1000;
405525 l_event_type_name           VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - Transfer Price - FOB Shipment';
405526 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
405527 l_description               VARCHAR2(4000);
405528 l_transaction_reversal      NUMBER;
405529 l_ae_header_id              NUMBER;
405530 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
405531 l_log_module                VARCHAR2(240);
405532 --
405533 l_acct_reversal_source      VARCHAR2(30);
405534 l_trx_reversal_source       VARCHAR2(30);
405535 
405536 l_continue_with_lines       BOOLEAN := TRUE;
405537 --
405538 l_acc_rev_gl_date_source    DATE;                      -- 4262811
405539 --
405540 type t_array_event_id is table of number index by binary_integer;
405541 
405542 l_rec_array_event                    t_rec_array_event;
405543 l_null_rec_array_event               t_rec_array_event;
405544 l_array_ae_header_id                 xla_number_array_type;
405545 l_actual_flag                        VARCHAR2(1) := NULL;
405546 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
405547 l_balance_type_code                  VARCHAR2(1) :=NULL;
405548 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
405549 
405550 --
405551 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
405552 --
405553 
405554 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
405555 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
405556 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
405557 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
405558 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
405559 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405560 TYPE t_array_source_36 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_PRICE_VAR_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405561 TYPE t_array_source_37 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.PROFIT_IN_INV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405562 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
405563 TYPE t_array_source_39 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.PRIMARY_COST_METHOD%TYPE INDEX BY BINARY_INTEGER;
405564 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405565 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405566 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405567 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405568 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405569 TYPE t_array_source_46 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
405570 TYPE t_array_source_60 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
405571 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
405572 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
405573 
405574 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
405575 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
405576 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
405577 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
405578 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
405579 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
405580 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
405581 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
405582 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
405583 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
405584 
405585 l_array_source_1              t_array_source_1;
405586 l_array_source_2              t_array_source_2;
405587 l_array_source_3              t_array_source_3;
405588 l_array_source_4              t_array_source_4;
405589 l_array_source_5              t_array_source_5;
405590 l_array_source_24              t_array_source_24;
405591 l_array_source_36              t_array_source_36;
405592 l_array_source_37              t_array_source_37;
405593 l_array_source_38              t_array_source_38;
405594 l_array_source_39              t_array_source_39;
405595 l_array_source_39_meaning      t_array_lookup_meaning;
405596 l_array_source_41              t_array_source_41;
405597 l_array_source_42              t_array_source_42;
405598 l_array_source_43              t_array_source_43;
405599 l_array_source_44              t_array_source_44;
405600 l_array_source_45              t_array_source_45;
405601 l_array_source_46              t_array_source_46;
405602 l_array_source_60              t_array_source_60;
405603 l_array_source_85              t_array_source_85;
405604 l_array_source_85_meaning      t_array_lookup_meaning;
405605 l_array_source_114              t_array_source_114;
405606 l_array_source_114_meaning      t_array_lookup_meaning;
405607 
405608 l_array_source_11      t_array_source_11;
405609 l_array_source_15      t_array_source_15;
405610 l_array_source_84      t_array_source_84;
405611 l_array_source_88      t_array_source_88;
405612 l_array_source_91      t_array_source_91;
405613 l_array_source_92      t_array_source_92;
405614 l_array_source_93      t_array_source_93;
405615 l_array_source_94      t_array_source_94;
405616 l_array_source_95      t_array_source_95;
405617 l_array_source_97      t_array_source_97;
405618 
405619 --
405620 CURSOR header_cur
405621 IS
405622 SELECT /*+ leading(xet) cardinality(xet,1) */
405623 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
405624 -- Event Class Code: USER_DEFINE
405625     xet.entity_id
405626   , xet.legal_entity_id
405627   , xet.entity_code
405628   , xet.transaction_number
405629   , xet.event_id
405630   , xet.event_class_code
405631   , xet.event_type_code
405632   , xet.event_number
405633   , xet.event_date
405634   , xet.transaction_date
405635   , xet.reference_num_1
405636   , xet.reference_num_2
405637   , xet.reference_num_3
405638   , xet.reference_num_4
405639   , xet.reference_char_1
405640   , xet.reference_char_2
405641   , xet.reference_char_3
405642   , xet.reference_char_4
405643   , xet.reference_date_1
405644   , xet.reference_date_2
405645   , xet.reference_date_3
405646   , xet.reference_date_4
405647   , xet.event_created_by
405648   , xet.budgetary_control_flag 
405649   , h2.TRANSACTION_ID    source_1
405650   , h6.ITEM_CONCATENATED_SEGMENTS    source_2
405651   , h5.TRANSACTION_QUANTITY    source_3
405652   , h5.TRANSACTION_UOM    source_4
405653   , h7.INV_TXN_TYPE_DESCRIPTION    source_5
405654   , h8.PLA_EXPENSE_ACCOUNT    source_24
405655   , h1.INTERORG_PRICE_VAR_ACCOUNT    source_36
405656   , h1.PROFIT_IN_INV_ACCOUNT    source_37
405657   , h4.INV_ORG_EXPENSE_ACCT    source_38
405658   , h4.PRIMARY_COST_METHOD    source_39
405659   , fvl39.meaning   source_39_meaning
405660   , h8.PLA_MATERIAL_ACCOUNT    source_41
405661   , h8.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
405662   , h8.PLA_RESOURCE_ACCOUNT    source_43
405663   , h8.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
405664   , h8.PLA_OVERHEAD_ACCOUNT    source_45
405665   , h1.INTERORG_BRIDGING_ACCOUNT    source_46
405666   , h5.INV_TXN_EXPENSE_ACCT    source_60
405667   , h2.DISTRIBUTION_TYPE    source_85
405668   , fvl85.meaning   source_85_meaning
405669   , h2.TRANSFER_TO_GL_INDICATOR    source_114
405670   , fvl114.meaning   source_114_meaning
405671   FROM xla_events_gt     xet 
405672   , CST_XLA_INTERORG_PARAMS_REF_V  h1
405673   , CST_XLA_INV_HEADERS_V  h2
405674   , CST_XLA_INV_ORG_PARAMS_REF_V  h4
405675   , CST_XLA_INV_REF_V  h5
405676   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h6
405677   , CST_XLA_INV_TXN_TYPES_REF_V  h7
405678   , CST_XLA_PLA_CATEGORY_REF_V  h8
405679   , fnd_lookup_values    fvl39
405680   , fnd_lookup_values    fvl85
405681   , fnd_lookup_values    fvl114
405682  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
405683    and xet.event_type_code = C_EVENT_TYPE_CODE
405684    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
405685   AND h1.event_id (+) = h2.event_id
405686  AND h4.INV_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h5.ref_transaction_id = h2.transaction_id AND h6.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h6.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h7.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h8.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h8.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h8.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl39.lookup_type(+)         = 'MTL_PRIMARY_COST'
405687   AND fvl39.lookup_code(+)         = h4.PRIMARY_COST_METHOD
405688   AND fvl39.view_application_id(+) = 700
405689   AND fvl39.language(+)            = USERENV('LANG')
405690      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
405691   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
405692   AND fvl85.view_application_id(+) = 700
405693   AND fvl85.language(+)            = USERENV('LANG')
405694      AND fvl114.lookup_type(+)         = 'YES_NO'
405695   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
405696   AND fvl114.view_application_id(+) = 0
405697   AND fvl114.language(+)            = USERENV('LANG')
405698   
405699  ORDER BY event_id
405700 ;
405701 
405702 
405703 --
405704 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
405705 IS
405706 SELECT /*+ leading(xet) cardinality(xet,1) */
405707 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
405708 -- Event Class Code: USER_DEFINE
405709     xet.entity_id
405710    ,xet.legal_entity_id
405711    ,xet.entity_code
405712    ,xet.transaction_number
405713    ,xet.event_id
405714    ,xet.event_class_code
405715    ,xet.event_type_code
405716    ,xet.event_number
405717    ,xet.event_date
405718    ,xet.transaction_date
405719    ,xet.reference_num_1
405720    ,xet.reference_num_2
405721    ,xet.reference_num_3
405722    ,xet.reference_num_4
405723    ,xet.reference_char_1
405724    ,xet.reference_char_2
405725    ,xet.reference_char_3
405726    ,xet.reference_char_4
405727    ,xet.reference_date_1
405728    ,xet.reference_date_2
405729    ,xet.reference_date_3
405730    ,xet.reference_date_4
405731    ,xet.event_created_by
405732    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
405733   , l3.CODE_COMBINATION_ID    source_11
405734   , l3.COST_ELEMENT_ID    source_15
405735   , l3.DISTRIBUTION_IDENTIFIER    source_84
405736   , l3.CURRENCY_CODE    source_88
405737   , l3.ENTERED_AMOUNT    source_91
405738   , l3.CURRENCY_CONVERSION_DATE    source_92
405739   , l3.CURRENCY_CONVERSION_RATE    source_93
405740   , l3.CURRENCY_CONVERSION_TYPE    source_94
405741   , l3.ACCOUNTED_AMOUNT    source_95
405742   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
405743   FROM xla_events_gt     xet 
405744   , CST_XLA_INV_LINES_V  l3
405745  WHERE xet.event_id between x_first_event_id and x_last_event_id
405746    and xet.event_date between p_pad_start_date and p_pad_end_date
405747    and xet.event_type_code = C_EVENT_TYPE_CODE
405748    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
405749 ;
405750 
405751 --
405752 BEGIN
405753 IF g_log_enabled THEN
405754    l_log_module := C_DEFAULT_MODULE||'.EventType_608';
405755 END IF;
405756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
405757    trace
405758       (p_msg      => 'BEGIN of EventType_608'
405759       ,p_level    => C_LEVEL_PROCEDURE
405760       ,p_module   => l_log_module);
405761 END IF;
405762 
405763 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
405764    trace
405765       (p_msg      => 'p_application_id = '||p_application_id||
405766                      ' - p_base_ledger_id = '||p_base_ledger_id||
405767                      ' - p_target_ledger_id  = '||p_target_ledger_id||
405768                      ' - p_language = '||p_language||
405769                      ' - p_currency_code = '||p_currency_code||
405770                      ' - p_sla_ledger_id = '||p_sla_ledger_id
405771       ,p_level    => C_LEVEL_STATEMENT
405772       ,p_module   => l_log_module);
405773 END IF;
405774 --
405775 -- initialze arrays
405776 --
405777 g_array_event.DELETE;
405778 l_rec_array_event := l_null_rec_array_event;
405779 --
405780 --------------------------------------
405781 -- 4262811 Initialze MPA Line Number
405782 --------------------------------------
405783 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
405784 
405785 --
405786 
405787 --
405788 OPEN header_cur;
405789 --
405790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
405791    trace
405792    (p_msg      => 'SQL - FETCH header_cur'
405793    ,p_level    => C_LEVEL_STATEMENT
405794    ,p_module   => l_log_module);
405795 END IF;
405796 --
405797 LOOP
405798 FETCH header_cur BULK COLLECT INTO
405799         l_array_entity_id
405800       , l_array_legal_entity_id
405801       , l_array_entity_code
405802       , l_array_transaction_num
405803       , l_array_event_id
405804       , l_array_class_code
405805       , l_array_event_type
405806       , l_array_event_number
405807       , l_array_event_date
405808       , l_array_transaction_date
405809       , l_array_reference_num_1
405810       , l_array_reference_num_2
405811       , l_array_reference_num_3
405812       , l_array_reference_num_4
405813       , l_array_reference_char_1
405814       , l_array_reference_char_2
405815       , l_array_reference_char_3
405816       , l_array_reference_char_4
405817       , l_array_reference_date_1
405818       , l_array_reference_date_2
405819       , l_array_reference_date_3
405820       , l_array_reference_date_4
405821       , l_array_event_created_by
405822       , l_array_budgetary_control_flag 
405823       , l_array_source_1
405824       , l_array_source_2
405825       , l_array_source_3
405826       , l_array_source_4
405827       , l_array_source_5
405828       , l_array_source_24
405829       , l_array_source_36
405830       , l_array_source_37
405831       , l_array_source_38
405832       , l_array_source_39
405833       , l_array_source_39_meaning
405834       , l_array_source_41
405835       , l_array_source_42
405836       , l_array_source_43
405837       , l_array_source_44
405838       , l_array_source_45
405839       , l_array_source_46
405840       , l_array_source_60
405841       , l_array_source_85
405842       , l_array_source_85_meaning
405843       , l_array_source_114
405844       , l_array_source_114_meaning
405845       LIMIT l_rows;
405846 --
405847 IF (C_LEVEL_EVENT >= g_log_level) THEN
405848    trace
405849    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
405850    ,p_level    => C_LEVEL_EVENT
405851    ,p_module   => l_log_module);
405852 END IF;
405853 --
405854 EXIT WHEN l_array_entity_id.COUNT = 0;
405855 
405856 -- initialize arrays
405857 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
405858 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
405859 
405860 --
405861 -- Bug 4458708
405862 --
405863 XLA_AE_LINES_PKG.g_LineNumber := 0;
405864 
405865 
405866 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
405867 g_last_hdr_idx := l_array_event_id.LAST;
405868 --
405869 -- loop for the headers. Each iteration is for each header extract row
405870 -- fetched in header cursor
405871 --
405872 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
405873 
405874 --
405875 -- set event info as cache for other routines to refer event attributes
405876 --
405877 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
405878    (p_application_id           => p_application_id
405879    ,p_primary_ledger_id        => p_primary_ledger_id
405880    ,p_base_ledger_id           => p_base_ledger_id
405881    ,p_target_ledger_id         => p_target_ledger_id
405882    ,p_entity_id                => l_array_entity_id(hdr_idx)
405883    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
405884    ,p_entity_code              => l_array_entity_code(hdr_idx)
405885    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
405886    ,p_event_id                 => l_array_event_id(hdr_idx)
405887    ,p_event_class_code         => l_array_class_code(hdr_idx)
405888    ,p_event_type_code          => l_array_event_type(hdr_idx)
405889    ,p_event_number             => l_array_event_number(hdr_idx)
405890    ,p_event_date               => l_array_event_date(hdr_idx)
405891    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
405892    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
405893    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
405894    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
405895    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
405896    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
405897    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
405898    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
405899    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
405900    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
405901    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
405902    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
405903    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
405904    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
405905    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
405906 
405907 --
405908 -- set the status of entry to C_VALID (0)
405909 --
405910 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
405911 
405912 --
405913 -- initialize a row for ae header
405914 --
405915 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
405916 
405917 l_event_id := l_array_event_id(hdr_idx);
405918 
405919 --
405920 -- storing the hdr_idx for event. May be used by line cursor.
405921 --
405922 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
405923 
405924 --
405925 -- store sources from header extract. This can be improved to
405926 -- store only those sources from header extract that may be used in lines
405927 --
405928 
405929 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
405930 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
405931 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
405932 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
405933 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
405934 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
405935 g_array_event(l_event_id).array_value_num('source_36') := l_array_source_36(hdr_idx);
405936 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
405937 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
405938 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
405939 g_array_event(l_event_id).array_value_char('source_39_meaning') := l_array_source_39_meaning(hdr_idx);
405940 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
405941 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
405942 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
405943 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
405944 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
405945 g_array_event(l_event_id).array_value_num('source_46') := l_array_source_46(hdr_idx);
405946 g_array_event(l_event_id).array_value_num('source_60') := l_array_source_60(hdr_idx);
405947 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
405948 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
405949 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
405950 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
405951 
405952 --
405953 -- initilaize the status of ae headers for diffrent balance types
405954 -- the status is initialised to C_NOT_CREATED (2)
405955 --
405956 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
405957 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
405958 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
405959 
405960 --
405961 -- call api to validate and store accounting attributes for header
405962 --
405963 
405964 ------------------------------------------------------------
405965 -- Accrual Reversal : to get date for Standard Source (NONE)
405966 ------------------------------------------------------------
405967 l_acc_rev_gl_date_source := NULL;
405968 
405969      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
405970       l_rec_acct_attrs.array_date_value(1) := 
405971 xla_ae_sources_pkg.GetSystemSourceDate(
405972    p_source_code           => 'XLA_REFERENCE_DATE_1'
405973  , p_source_type_code      => 'Y'
405974  , p_source_application_id =>  602
405975 );
405976      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
405977       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
405978 
405979 
405980 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
405981 
405982 XLA_AE_HEADER_PKG.SetJeCategoryName;
405983 
405984 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
405985 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
405986 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
405987 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
405988 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
405989 
405990 
405991 -- No header level analytical criteria
405992 
405993 --
405994 --accounting attribute enhancement, bug 3612931
405995 --
405996 l_trx_reversal_source := SUBSTR(NULL, 1,30);
405997 
405998 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
405999    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
406000 
406001    xla_accounting_err_pkg.build_message
406002       (p_appli_s_name            => 'XLA'
406003       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
406004       ,p_token_1                 => 'ACCT_ATTR_NAME'
406005       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
406006       ,p_token_2                 => 'PRODUCT_NAME'
406007       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
406008       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
406009       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
406010       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
406011 
406012 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
406013    --
406014    -- following sets the accounting attributes needed to reverse
406015    -- accounting for a distributeion
406016    --
406017    xla_ae_lines_pkg.SetTrxReversalAttrs
406018       (p_event_id              => l_event_id
406019       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
406020       ,p_trx_reversal_source   => l_trx_reversal_source);
406021 
406022 END IF;
406023 
406024 
406025 ----------------------------------------------------------------
406026 -- 4262811 -  update the header statuses to invalid in need be
406027 ----------------------------------------------------------------
406028 --
406029 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
406030 
406031 
406032   -----------------------------------------------
406033   -- No accrual reversal for the event class/type
406034   -----------------------------------------------
406035 ----------------------------------------------------------------
406036 
406037 --
406038 -- this ends the header loop iteration for one bulk fetch
406039 --
406040 END LOOP;
406041 
406042 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
406043 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
406044 
406045 --
406046 -- insert dummy rows into lines gt table that were created due to
406047 -- transaction reversals
406048 --
406049 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
406050    l_result := XLA_AE_LINES_PKG.InsertLines;
406051 END IF;
406052 
406053 --
406054 -- reset the temp_line_num for each set of events fetched from header
406055 -- cursor rather than doing it for each new event in line cursor
406056 -- Bug 3939231
406057 --
406058 xla_ae_lines_pkg.g_temp_line_num := 0;
406059 
406060 
406061 
406062 --
406063 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
406064 --
406065 --
406066 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
406067 
406068       trace
406069          (p_msg      => 'SQL - FETCH line_cur'
406070          ,p_level    => C_LEVEL_STATEMENT
406071          ,p_module   => l_log_module);
406072 
406073 END IF;
406074 --
406075 --
406076 LOOP
406077   --
406078   FETCH line_cur BULK COLLECT INTO
406079         l_array_entity_id
406080       , l_array_legal_entity_id
406081       , l_array_entity_code
406082       , l_array_transaction_num
406083       , l_array_event_id
406084       , l_array_class_code
406085       , l_array_event_type
406086       , l_array_event_number
406087       , l_array_event_date
406088       , l_array_transaction_date
406089       , l_array_reference_num_1
406090       , l_array_reference_num_2
406091       , l_array_reference_num_3
406092       , l_array_reference_num_4
406093       , l_array_reference_char_1
406094       , l_array_reference_char_2
406095       , l_array_reference_char_3
406096       , l_array_reference_char_4
406097       , l_array_reference_date_1
406098       , l_array_reference_date_2
406099       , l_array_reference_date_3
406100       , l_array_reference_date_4
406101       , l_array_event_created_by
406102       , l_array_budgetary_control_flag
406103       , l_array_extract_line_num 
406104       , l_array_source_11
406105       , l_array_source_15
406106       , l_array_source_84
406107       , l_array_source_88
406108       , l_array_source_91
406109       , l_array_source_92
406110       , l_array_source_93
406111       , l_array_source_94
406112       , l_array_source_95
406113       , l_array_source_97
406114       LIMIT l_rows;
406115 
406116   --
406117   IF (C_LEVEL_EVENT >= g_log_level) THEN
406118             trace
406119                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
406120                ,p_level    => C_LEVEL_EVENT
406121                ,p_module   => l_log_module);
406122   END IF;
406123   --
406124   EXIT WHEN l_array_entity_id.count = 0;
406125 
406126   XLA_AE_LINES_PKG.g_rec_lines := null;
406127 
406128 --
406129 -- Bug 4458708
406130 --
406131 XLA_AE_LINES_PKG.g_LineNumber := 0;
406132 --
406133 --
406134 
406135 FOR Idx IN 1..l_array_event_id.count LOOP
406136    --
406137    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
406138    --
406139    l_event_id := l_array_event_id(idx);  -- 5648433
406140 
406141    --
406142    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
406143    --
406144 
406145    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
406146              (g_array_event(l_event_id).array_value_num('header_index'))
406147          ,'N'
406148          ) <> 'Y'
406149    THEN
406150       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
406151          trace
406152             (p_msg      => 'Trancaction revesal option is not Y '
406153             ,p_level    => C_LEVEL_STATEMENT
406154             ,p_module   => l_log_module);
406155       END IF;
406156 
406157 --
406158 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
406159 --
406160 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
406161 --
406162 -- set event info as cache for other routines to refer event attributes
406163 --
406164 
406165 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
406166    l_previous_event_id := l_event_id;
406167 
406168    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
406169       (p_application_id           => p_application_id
406170       ,p_primary_ledger_id        => p_primary_ledger_id
406171       ,p_base_ledger_id           => p_base_ledger_id
406172       ,p_target_ledger_id         => p_target_ledger_id
406173       ,p_entity_id                => l_array_entity_id(Idx)
406174       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
406175       ,p_entity_code              => l_array_entity_code(Idx)
406176       ,p_transaction_num          => l_array_transaction_num(Idx)
406177       ,p_event_id                 => l_array_event_id(Idx)
406178       ,p_event_class_code         => l_array_class_code(Idx)
406179       ,p_event_type_code          => l_array_event_type(Idx)
406180       ,p_event_number             => l_array_event_number(Idx)
406181       ,p_event_date               => l_array_event_date(Idx)
406182       ,p_transaction_date         => l_array_transaction_date(Idx)
406183       ,p_reference_num_1          => l_array_reference_num_1(Idx)
406184       ,p_reference_num_2          => l_array_reference_num_2(Idx)
406185       ,p_reference_num_3          => l_array_reference_num_3(Idx)
406186       ,p_reference_num_4          => l_array_reference_num_4(Idx)
406187       ,p_reference_char_1         => l_array_reference_char_1(Idx)
406188       ,p_reference_char_2         => l_array_reference_char_2(Idx)
406189       ,p_reference_char_3         => l_array_reference_char_3(Idx)
406190       ,p_reference_char_4         => l_array_reference_char_4(Idx)
406191       ,p_reference_date_1         => l_array_reference_date_1(Idx)
406192       ,p_reference_date_2         => l_array_reference_date_2(Idx)
406193       ,p_reference_date_3         => l_array_reference_date_3(Idx)
406194       ,p_reference_date_4         => l_array_reference_date_4(Idx)
406195       ,p_event_created_by         => l_array_event_created_by(Idx)
406196       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
406197        --
406198 END IF;
406199 
406200 
406201 
406202 --
406203 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
406204 
406205 l_acct_reversal_source := SUBSTR(NULL, 1,30);
406206 
406207 IF l_continue_with_lines THEN
406208    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
406209       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
406210 
406211       xla_accounting_err_pkg.build_message
406212          (p_appli_s_name            => 'XLA'
406213          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
406214          ,p_token_1                 => 'LINE_NUMBER'
406215          ,p_value_1                 => l_array_extract_line_num(Idx)
406216          ,p_token_2                 => 'PRODUCT_NAME'
406217          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
406218          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
406219          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
406220          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
406221 
406222    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
406223       --
406224       -- following sets the accounting attributes needed to reverse
406225       -- accounting for a distributeion
406226       --
406227 
406228       --
406229       -- 5217187
406230       --
406231       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
406232       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
406233                                        g_array_event(l_event_id).array_value_num('header_index'));
406234       --
406235       --
406236 
406237       -- No reversal code generated
406238 
406239       xla_ae_lines_pkg.SetAcctReversalAttrs
406240          (p_event_id             => l_event_id
406241          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
406242          ,p_calculate_acctd_flag => l_calculate_acctd_flag
406243          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
406244    END IF;
406245 
406246    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
406247        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
406248 
406249 --
406250 AcctLineType_97 (
406251  p_application_id  => p_application_id
406252  ,p_event_id     => l_event_id
406253  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406254  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406255  ,p_actual_flag => l_actual_flag
406256  ,p_balance_type_code => l_balance_type_code
406257  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406258  
406259  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406260  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406261  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406262  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406263  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406264  , p_source_11 => l_array_source_11(Idx)
406265  , p_source_84 => l_array_source_84(Idx)
406266  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406267  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406268  , p_source_88 => l_array_source_88(Idx)
406269  , p_source_91 => l_array_source_91(Idx)
406270  , p_source_92 => l_array_source_92(Idx)
406271  , p_source_93 => l_array_source_93(Idx)
406272  , p_source_94 => l_array_source_94(Idx)
406273  , p_source_95 => l_array_source_95(Idx)
406274  , p_source_97 => l_array_source_97(Idx)
406275  );
406276 If(l_balance_type_code = 'A') THEN
406277   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406278 END IF;
406279 
406280 --
406281 
406282 
406283 --
406284 AcctLineType_132 (
406285  p_application_id  => p_application_id
406286  ,p_event_id     => l_event_id
406287  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406288  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406289  ,p_actual_flag => l_actual_flag
406290  ,p_balance_type_code => l_balance_type_code
406291  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406292  
406293  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406294  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406295  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406296  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406297  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406298  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
406299  , p_source_84 => l_array_source_84(Idx)
406300  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406301  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406302  , p_source_88 => l_array_source_88(Idx)
406303  , p_source_91 => l_array_source_91(Idx)
406304  , p_source_92 => l_array_source_92(Idx)
406305  , p_source_93 => l_array_source_93(Idx)
406306  , p_source_94 => l_array_source_94(Idx)
406307  , p_source_95 => l_array_source_95(Idx)
406308  , p_source_97 => l_array_source_97(Idx)
406309  );
406310 If(l_balance_type_code = 'A') THEN
406311   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406312 END IF;
406313 
406314 --
406315 
406316 
406317 --
406318 AcctLineType_153 (
406319  p_application_id  => p_application_id
406320  ,p_event_id     => l_event_id
406321  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406322  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406323  ,p_actual_flag => l_actual_flag
406324  ,p_balance_type_code => l_balance_type_code
406325  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406326  
406327  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406328  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406329  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406330  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406331  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406332  , p_source_11 => l_array_source_11(Idx)
406333  , p_source_84 => l_array_source_84(Idx)
406334  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406335  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406336  , p_source_88 => l_array_source_88(Idx)
406337  , p_source_91 => l_array_source_91(Idx)
406338  , p_source_92 => l_array_source_92(Idx)
406339  , p_source_93 => l_array_source_93(Idx)
406340  , p_source_94 => l_array_source_94(Idx)
406341  , p_source_95 => l_array_source_95(Idx)
406342  , p_source_97 => l_array_source_97(Idx)
406343  );
406344 If(l_balance_type_code = 'A') THEN
406345   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406346 END IF;
406347 
406348 --
406349 
406350 
406351 --
406352 AcctLineType_171 (
406353  p_application_id  => p_application_id
406354  ,p_event_id     => l_event_id
406355  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406356  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406357  ,p_actual_flag => l_actual_flag
406358  ,p_balance_type_code => l_balance_type_code
406359  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406360  
406361  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406362  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406363  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406364  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406365  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406366  , p_source_11 => l_array_source_11(Idx)
406367  , p_source_84 => l_array_source_84(Idx)
406368  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406369  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406370  , p_source_88 => l_array_source_88(Idx)
406371  , p_source_91 => l_array_source_91(Idx)
406372  , p_source_92 => l_array_source_92(Idx)
406373  , p_source_93 => l_array_source_93(Idx)
406374  , p_source_94 => l_array_source_94(Idx)
406375  , p_source_95 => l_array_source_95(Idx)
406376  , p_source_97 => l_array_source_97(Idx)
406377  );
406378 If(l_balance_type_code = 'A') THEN
406379   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406380 END IF;
406381 
406382 --
406383 
406384 
406385 --
406386 AcctLineType_228 (
406387  p_application_id  => p_application_id
406388  ,p_event_id     => l_event_id
406389  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406390  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406391  ,p_actual_flag => l_actual_flag
406392  ,p_balance_type_code => l_balance_type_code
406393  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406394  
406395  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406396  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406397  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406398  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406399  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406400  , p_source_11 => l_array_source_11(Idx)
406401  , p_source_15 => l_array_source_15(Idx)
406402  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
406403  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
406404  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
406405  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
406406  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
406407  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
406408  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
406409  , p_source_84 => l_array_source_84(Idx)
406410  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406411  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406412  , p_source_88 => l_array_source_88(Idx)
406413  , p_source_91 => l_array_source_91(Idx)
406414  , p_source_92 => l_array_source_92(Idx)
406415  , p_source_93 => l_array_source_93(Idx)
406416  , p_source_94 => l_array_source_94(Idx)
406417  , p_source_95 => l_array_source_95(Idx)
406418  , p_source_97 => l_array_source_97(Idx)
406419  );
406420 If(l_balance_type_code = 'A') THEN
406421   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406422 END IF;
406423 
406424 --
406425 
406426 
406427 --
406428 AcctLineType_292 (
406429  p_application_id  => p_application_id
406430  ,p_event_id     => l_event_id
406431  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406432  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406433  ,p_actual_flag => l_actual_flag
406434  ,p_balance_type_code => l_balance_type_code
406435  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406436  
406437  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406438  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406439  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406440  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406441  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406442  , p_source_11 => l_array_source_11(Idx)
406443  , p_source_84 => l_array_source_84(Idx)
406444  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406445  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406446  , p_source_88 => l_array_source_88(Idx)
406447  , p_source_91 => l_array_source_91(Idx)
406448  , p_source_92 => l_array_source_92(Idx)
406449  , p_source_93 => l_array_source_93(Idx)
406450  , p_source_94 => l_array_source_94(Idx)
406451  , p_source_95 => l_array_source_95(Idx)
406452  , p_source_97 => l_array_source_97(Idx)
406453  );
406454 If(l_balance_type_code = 'A') THEN
406455   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406456 END IF;
406457 
406458 --
406459 
406460 
406461 --
406462 AcctLineType_325 (
406463  p_application_id  => p_application_id
406464  ,p_event_id     => l_event_id
406465  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406466  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406467  ,p_actual_flag => l_actual_flag
406468  ,p_balance_type_code => l_balance_type_code
406469  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406470  
406471  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406472  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406473  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406474  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406475  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406476  , p_source_11 => l_array_source_11(Idx)
406477  , p_source_84 => l_array_source_84(Idx)
406478  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406479  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406480  , p_source_88 => l_array_source_88(Idx)
406481  , p_source_91 => l_array_source_91(Idx)
406482  , p_source_92 => l_array_source_92(Idx)
406483  , p_source_93 => l_array_source_93(Idx)
406484  , p_source_94 => l_array_source_94(Idx)
406485  , p_source_95 => l_array_source_95(Idx)
406486  , p_source_97 => l_array_source_97(Idx)
406487  );
406488 If(l_balance_type_code = 'A') THEN
406489   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406490 END IF;
406491 
406492 --
406493 
406494 
406495 --
406496 AcctLineType_420 (
406497  p_application_id  => p_application_id
406498  ,p_event_id     => l_event_id
406499  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406500  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406501  ,p_actual_flag => l_actual_flag
406502  ,p_balance_type_code => l_balance_type_code
406503  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406504  
406505  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406506  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406507  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406508  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406509  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406510  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
406511  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
406512  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
406513  , p_source_39_meaning => g_array_event(l_event_id).array_value_char('source_39_meaning')
406514  , p_source_84 => l_array_source_84(Idx)
406515  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406516  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406517  , p_source_88 => l_array_source_88(Idx)
406518  , p_source_91 => l_array_source_91(Idx)
406519  , p_source_92 => l_array_source_92(Idx)
406520  , p_source_93 => l_array_source_93(Idx)
406521  , p_source_94 => l_array_source_94(Idx)
406522  , p_source_95 => l_array_source_95(Idx)
406523  , p_source_97 => l_array_source_97(Idx)
406524  );
406525 If(l_balance_type_code = 'A') THEN
406526   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406527 END IF;
406528 
406529 --
406530 
406531 
406532 --
406533 AcctLineType_427 (
406534  p_application_id  => p_application_id
406535  ,p_event_id     => l_event_id
406536  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406537  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406538  ,p_actual_flag => l_actual_flag
406539  ,p_balance_type_code => l_balance_type_code
406540  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406541  
406542  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406543  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406544  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406545  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406546  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406547  , p_source_46 => g_array_event(l_event_id).array_value_num('source_46')
406548  , p_source_84 => l_array_source_84(Idx)
406549  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406550  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406551  , p_source_88 => l_array_source_88(Idx)
406552  , p_source_91 => l_array_source_91(Idx)
406553  , p_source_92 => l_array_source_92(Idx)
406554  , p_source_93 => l_array_source_93(Idx)
406555  , p_source_94 => l_array_source_94(Idx)
406556  , p_source_95 => l_array_source_95(Idx)
406557  , p_source_97 => l_array_source_97(Idx)
406558  );
406559 If(l_balance_type_code = 'A') THEN
406560   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406561 END IF;
406562 
406563 --
406564 
406565 
406566 --
406567 AcctLineType_468 (
406568  p_application_id  => p_application_id
406569  ,p_event_id     => l_event_id
406570  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406571  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406572  ,p_actual_flag => l_actual_flag
406573  ,p_balance_type_code => l_balance_type_code
406574  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406575  
406576  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406577  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406578  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406579  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406580  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406581  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
406582  , p_source_84 => l_array_source_84(Idx)
406583  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406584  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406585  , p_source_88 => l_array_source_88(Idx)
406586  , p_source_91 => l_array_source_91(Idx)
406587  , p_source_92 => l_array_source_92(Idx)
406588  , p_source_93 => l_array_source_93(Idx)
406589  , p_source_94 => l_array_source_94(Idx)
406590  , p_source_95 => l_array_source_95(Idx)
406591  , p_source_97 => l_array_source_97(Idx)
406592  );
406593 If(l_balance_type_code = 'A') THEN
406594   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406595 END IF;
406596 
406597 --
406598 
406599 
406600 --
406601 AcctLineType_479 (
406602  p_application_id  => p_application_id
406603  ,p_event_id     => l_event_id
406604  ,p_calculate_acctd_flag => l_calculate_acctd_flag
406605  ,p_calculate_g_l_flag => l_calculate_g_l_flag
406606  ,p_actual_flag => l_actual_flag
406607  ,p_balance_type_code => l_balance_type_code
406608  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
406609  
406610  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
406611  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
406612  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
406613  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
406614  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
406615  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
406616  , p_source_84 => l_array_source_84(Idx)
406617  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
406618  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
406619  , p_source_88 => l_array_source_88(Idx)
406620  , p_source_91 => l_array_source_91(Idx)
406621  , p_source_92 => l_array_source_92(Idx)
406622  , p_source_93 => l_array_source_93(Idx)
406623  , p_source_94 => l_array_source_94(Idx)
406624  , p_source_95 => l_array_source_95(Idx)
406625  , p_source_97 => l_array_source_97(Idx)
406626  );
406627 If(l_balance_type_code = 'A') THEN
406628   l_actual_gain_loss_ref := l_gain_or_loss_ref;
406629 END IF;
406630 
406631 --
406632 
406633       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
406634       -- or secondary ledger that has different currency with primary
406635       -- or alc that is calculated by sla
406636       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
406637             (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'))
406638 
406639 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
406640 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
406641           AND (l_actual_flag = 'A')) THEN
406642         XLA_AE_LINES_PKG.CreateGainOrLossLines(
406643           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
406644          ,p_application_id   => p_application_id
406645          ,p_amb_context_code => 'DEFAULT'
406646          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
406647          ,p_event_class_code => C_EVENT_CLASS_CODE
406648          ,p_event_type_code  => C_EVENT_TYPE_CODE
406649          
406650          ,p_gain_ccid        => -1
406651          ,p_loss_ccid        => -1
406652 
406653          ,p_actual_flag      => l_actual_flag
406654          ,p_enc_flag         => null
406655          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
406656          ,p_enc_g_l_ref      => null
406657          );
406658       END IF;
406659    END IF;
406660 END IF;
406661 
406662    ELSE
406663       --
406664       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
406665       --
406666       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
406667          trace
406668             (p_msg      => 'Trancaction revesal option is Y'
406669             ,p_level    => C_LEVEL_STATEMENT
406670             ,p_module   => l_log_module);
406671       END IF;
406672    END IF;
406673 
406674 END LOOP;
406675 l_result := XLA_AE_LINES_PKG.InsertLines ;
406676 end loop;
406677 close line_cur;
406678 
406679 
406680 --
406681 -- insert headers into xla_ae_headers_gt table
406682 --
406683 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
406684 
406685 -- insert into errors table here.
406686 
406687 END LOOP;
406688 
406689 --
406690 -- 4865292
406691 --
406692 -- Compare g_hdr_extract_count with event count in
406693 -- CreateHeadersAndLines.
406694 --
406695 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
406696 
406697 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
406698    trace (p_msg     => '# rows extracted from header extract objects '
406699                     || ' (running total): '
406700                     || g_hdr_extract_count
406701          ,p_level   => C_LEVEL_STATEMENT
406702          ,p_module  => l_log_module);
406703 END IF;
406704 
406705 CLOSE header_cur;
406706 --
406707 
406708 --
406709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
406710    trace
406711       (p_msg      => 'END of EventType_608'
406712       ,p_level    => C_LEVEL_PROCEDURE
406713       ,p_module   => l_log_module);
406714 END IF;
406715 --
406716 RETURN l_result;
406717 EXCEPTION
406718 WHEN xla_exceptions_pkg.application_exception THEN
406719    
406720 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
406721 
406722    
406723 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
406724 
406725    RAISE;
406726 
406727 WHEN NO_DATA_FOUND THEN
406728 
406729 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
406730 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
406731 
406732 FOR header_record IN header_cur
406733 LOOP
406734     l_array_header_events(header_record.event_id) := header_record.event_id;
406735 END LOOP;
406736 
406737 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
406738 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
406739 
406740 fnd_file.put_line(fnd_file.LOG, '                    ');
406741 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
406742 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
406743 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
406744 
406745 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
406746 LOOP
406747 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
406748 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
406749         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
406750 	END IF;
406751 END LOOP;
406752 
406753 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
406754 fnd_file.put_line(fnd_file.LOG, '                    ');
406755 
406756 
406757 xla_exceptions_pkg.raise_message
406758       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_608');
406759 
406760 
406761 WHEN OTHERS THEN
406762    xla_exceptions_pkg.raise_message
406763       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_608');
406764 END EventType_608;
406765 --
406766 
406767 ---------------------------------------
406768 --
406769 -- PRIVATE PROCEDURE
406770 --         insert_sources_609
406771 --
406772 ----------------------------------------
406773 --
406774 PROCEDURE insert_sources_609(
406775                                 p_target_ledger_id       IN NUMBER
406776                               , p_language               IN VARCHAR2
406777                               , p_sla_ledger_id          IN NUMBER
406778                               , p_pad_start_date         IN DATE
406779                               , p_pad_end_date           IN DATE
406780                          )
406781 IS
406782 
406783 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
406784 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
406785 p_apps_owner                   VARCHAR2(30);
406786 l_log_module                   VARCHAR2(240);
406787 BEGIN
406788 IF g_log_enabled THEN
406789       l_log_module := C_DEFAULT_MODULE||'.insert_sources_609';
406790 END IF;
406791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
406792 
406793       trace
406794          (p_msg      => 'BEGIN of insert_sources_609'
406795          ,p_level    => C_LEVEL_PROCEDURE
406796          ,p_module   => l_log_module);
406797 
406798 END IF;
406799 
406800 -- select APPS owner
406801 SELECT oracle_username
406802   INTO p_apps_owner
406803   FROM fnd_oracle_userid
406804  WHERE read_only_flag = 'U'
406805 ;
406806 
406807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
406808       trace
406809          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
406810                         ' - p_language = '||p_language||
406811                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
406812                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
406813                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
406814                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
406815          ,p_level    => C_LEVEL_STATEMENT
406816          ,p_module   => l_log_module);
406817 END IF;
406818 
406819 
406820 --
406821 INSERT INTO xla_diag_sources --hdr1
406822 (
406823         event_id
406824       , ledger_id
406825       , sla_ledger_id
406826       , description_language
406827       , object_name
406828       , object_type_code
406829       , line_number
406830       , source_application_id
406831       , source_type_code
406832       , source_code
406833       , source_value
406834       , source_meaning
406835       , created_by
406836       , creation_date
406837       , last_update_date
406838       , last_updated_by
406839       , last_update_login
406840       , program_update_date
406841       , program_application_id
406842       , program_id
406843       , request_id
406844 )
406845 SELECT
406846         event_id
406847       , p_target_ledger_id
406848       , p_sla_ledger_id
406849       , p_language
406850       , object_name
406851       , object_type_code
406852       , line_number
406853       , source_application_id
406854       , source_type_code
406855       , source_code
406856       , SUBSTR(source_value ,1,1996)
406857       , SUBSTR(source_meaning,1,200)
406858       , xla_environment_pkg.g_Usr_Id
406859       , TRUNC(SYSDATE)
406860       , TRUNC(SYSDATE)
406861       , xla_environment_pkg.g_Usr_Id
406862       , xla_environment_pkg.g_Login_Id
406863       , TRUNC(SYSDATE)
406864       , xla_environment_pkg.g_Prog_Appl_Id
406865       , xla_environment_pkg.g_Prog_Id
406866       , xla_environment_pkg.g_Req_Id
406867   FROM (
406868        SELECT xet.event_id                  event_id
406869             , 0                             line_number
406870             , CASE r
406871                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
406872                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
406873                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
406874                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
406875                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
406876                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
406877                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
406878                 WHEN 8 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
406879                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
406880                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
406881                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
406882                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
406883                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
406884                 WHEN 14 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
406885                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
406886                 WHEN 16 THEN 'CST_XLA_INV_HEADERS_V' 
406887                 
406888                ELSE null
406889               END                           object_name
406890             , CASE r
406891                 WHEN 1 THEN 'HEADER' 
406892                 WHEN 2 THEN 'HEADER' 
406893                 WHEN 3 THEN 'HEADER' 
406894                 WHEN 4 THEN 'HEADER' 
406895                 WHEN 5 THEN 'HEADER' 
406896                 WHEN 6 THEN 'HEADER' 
406897                 WHEN 7 THEN 'HEADER' 
406898                 WHEN 8 THEN 'HEADER' 
406899                 WHEN 9 THEN 'HEADER' 
406900                 WHEN 10 THEN 'HEADER' 
406901                 WHEN 11 THEN 'HEADER' 
406902                 WHEN 12 THEN 'HEADER' 
406903                 WHEN 13 THEN 'HEADER' 
406904                 WHEN 14 THEN 'HEADER' 
406905                 WHEN 15 THEN 'HEADER' 
406906                 WHEN 16 THEN 'HEADER' 
406907                 
406908                 ELSE null
406909               END                           object_type_code
406910             , CASE r
406911                 WHEN 1 THEN '707' 
406912                 WHEN 2 THEN '707' 
406913                 WHEN 3 THEN '707' 
406914                 WHEN 4 THEN '707' 
406915                 WHEN 5 THEN '707' 
406916                 WHEN 6 THEN '707' 
406917                 WHEN 7 THEN '707' 
406918                 WHEN 8 THEN '707' 
406919                 WHEN 9 THEN '707' 
406920                 WHEN 10 THEN '707' 
406921                 WHEN 11 THEN '707' 
406922                 WHEN 12 THEN '707' 
406923                 WHEN 13 THEN '707' 
406924                 WHEN 14 THEN '707' 
406925                 WHEN 15 THEN '707' 
406926                 WHEN 16 THEN '707' 
406927                 
406928                 ELSE null
406929               END                           source_application_id
406930             , 'S'             source_type_code
406931             , CASE r
406932                 WHEN 1 THEN 'TRANSACTION_ID' 
406933                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
406934                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
406935                 WHEN 4 THEN 'TRANSACTION_UOM' 
406936                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
406937                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
406938                 WHEN 7 THEN 'INTERORG_REVENUE_ACCOUNT' 
406939                 WHEN 8 THEN 'INTERORG_TXFR_CREDIT_ACCOUNT' 
406940                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
406941                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
406942                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
406943                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
406944                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
406945                 WHEN 14 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
406946                 WHEN 15 THEN 'DISTRIBUTION_TYPE' 
406947                 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR' 
406948                 
406949                 ELSE null
406950               END                           source_code
406951             , CASE r
406952                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
406953                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
406954                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
406955                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
406956                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
406957                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
406958                 WHEN 7 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
406959                 WHEN 8 THEN TO_CHAR(h1.INTERORG_TXFR_CREDIT_ACCOUNT)
406960                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
406961                 WHEN 10 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
406962                 WHEN 11 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
406963                 WHEN 12 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
406964                 WHEN 13 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
406965                 WHEN 14 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
406966                 WHEN 15 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
406967                 WHEN 16 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
406968                 
406969                 ELSE null
406970               END                           source_value
406971             , CASE r
406972                 WHEN 15 THEN fvl85.meaning
406973                 WHEN 16 THEN fvl114.meaning
406974                 
406975                 ELSE null
406976               END               source_meaning
406977         FROM xla_events_gt     xet  
406978       , CST_XLA_INTERORG_PARAMS_REF_V  h1
406979       , CST_XLA_INV_HEADERS_V  h2
406980       , CST_XLA_INV_REF_V  h4
406981       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
406982       , CST_XLA_INV_TXN_TYPES_REF_V  h6
406983       , CST_XLA_PLA_CATEGORY_REF_V  h7
406984   , fnd_lookup_values    fvl85
406985   , fnd_lookup_values    fvl114
406986             ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
406987        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
406988          AND xet.event_type_code = C_EVENT_TYPE_CODE
406989             AND h2.event_id = xet.event_id
406990   AND h1.event_id (+) = h2.event_id
406991  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id  (+) = h2.inventory_item_id  and h5.organization_id  (+) = h2.organization_id AND h6.inv_transaction_type_id  (+) = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id  and h7.pla_cat_item_id   (+) = h2.inventory_item_id  and h7.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
406992   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
406993   AND fvl85.view_application_id(+) = 700
406994   AND fvl85.language(+)            = USERENV('LANG')
406995      AND fvl114.lookup_type(+)         = 'YES_NO'
406996   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
406997   AND fvl114.view_application_id(+) = 0
406998   AND fvl114.language(+)            = USERENV('LANG')
406999   
407000 )
407001 ;
407002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
407003 
407004       trace
407005          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
407006          ,p_level    => C_LEVEL_STATEMENT
407007          ,p_module   => l_log_module);
407008 
407009 END IF;
407010 --
407011 
407012 
407013 
407014 --
407015 INSERT INTO xla_diag_sources --line1
407016 (
407017         event_id
407018       , ledger_id
407019       , sla_ledger_id
407020       , description_language
407021       , object_name
407022       , object_type_code
407023       , line_number
407024       , source_application_id
407025       , source_type_code
407026       , source_code
407027       , source_value
407028       , source_meaning
407029       , created_by
407030       , creation_date
407031       , last_update_date
407032       , last_updated_by
407033       , last_update_login
407034       , program_update_date
407035       , program_application_id
407036       , program_id
407037       , request_id
407038 )
407039 SELECT  event_id
407040       , p_target_ledger_id
407041       , p_sla_ledger_id
407042       , p_language
407043       , object_name
407044       , object_type_code
407045       , line_number
407046       , source_application_id
407047       , source_type_code
407048       , source_code
407049       , SUBSTR(source_value,1,1996)
407050       , SUBSTR(source_meaning,1,200)
407051       , xla_environment_pkg.g_Usr_Id
407052       , TRUNC(SYSDATE)
407053       , TRUNC(SYSDATE)
407054       , xla_environment_pkg.g_Usr_Id
407055       , xla_environment_pkg.g_Login_Id
407056       , TRUNC(SYSDATE)
407057       , xla_environment_pkg.g_Prog_Appl_Id
407058       , xla_environment_pkg.g_Prog_Id
407059       , xla_environment_pkg.g_Req_Id
407060   FROM (
407061        SELECT xet.event_id                  event_id
407062             , l3.line_number                 line_number
407063             , CASE r
407064                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
407065                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
407066                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
407067                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
407068                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
407069                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
407070                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
407071                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
407072                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
407073                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
407074                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
407075                 
407076                ELSE null
407077               END                           object_name
407078             , CASE r
407079                 WHEN 1 THEN 'LINE' 
407080                 WHEN 2 THEN 'LINE' 
407081                 WHEN 3 THEN 'LINE' 
407082                 WHEN 4 THEN 'LINE' 
407083                 WHEN 5 THEN 'LINE' 
407084                 WHEN 6 THEN 'LINE' 
407085                 WHEN 7 THEN 'LINE' 
407086                 WHEN 8 THEN 'LINE' 
407087                 WHEN 9 THEN 'LINE' 
407088                 WHEN 10 THEN 'LINE' 
407089                 WHEN 11 THEN 'LINE' 
407090                 
407091                 ELSE null
407092               END                           object_type_code
407093             , CASE r
407094                 WHEN 1 THEN '707' 
407095                 WHEN 2 THEN '707' 
407096                 WHEN 3 THEN '707' 
407097                 WHEN 4 THEN '707' 
407098                 WHEN 5 THEN '707' 
407099                 WHEN 6 THEN '707' 
407100                 WHEN 7 THEN '707' 
407101                 WHEN 8 THEN '707' 
407102                 WHEN 9 THEN '707' 
407103                 WHEN 10 THEN '707' 
407104                 WHEN 11 THEN '707' 
407105                 
407106                 ELSE null
407107               END                           source_application_id
407108             , 'S'             source_type_code
407109             , CASE r
407110                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
407111                 WHEN 2 THEN 'COST_ELEMENT_ID' 
407112                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
407113                 WHEN 4 THEN 'CURRENCY_CODE' 
407114                 WHEN 5 THEN 'ENTERED_AMOUNT' 
407115                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
407116                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
407117                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
407118                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
407119                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
407120                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
407121                 
407122                 ELSE null
407123               END                           source_code
407124             , CASE r
407125                 WHEN 1 THEN TO_CHAR(l3.CODE_COMBINATION_ID)
407126                 WHEN 2 THEN TO_CHAR(l3.COST_ELEMENT_ID)
407127                 WHEN 3 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
407128                 WHEN 4 THEN TO_CHAR(l3.CURRENCY_CODE)
407129                 WHEN 5 THEN TO_CHAR(l3.ENTERED_AMOUNT)
407130                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
407131                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
407132                 WHEN 8 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
407133                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
407134                 WHEN 10 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
407135                 WHEN 11 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
407136                 
407137                 ELSE null
407138               END                           source_value
407139             , CASE r
407140                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
407141                           1009615
407142                          ,TO_CHAR(l3.COST_ELEMENT_ID)
407143                          ,'COST_ELEMENT_ID'
407144                          ,'S'
407145                          ,707)
407146                 
407147                 ELSE null
407148               END               source_meaning
407149          FROM  xla_events_gt     xet  
407150         , CST_XLA_INV_LINES_V  l3
407151             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
407152         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
407153           AND xet.event_type_code = C_EVENT_TYPE_CODE
407154             AND l3.event_id          = xet.event_id
407155 
407156 )
407157 ;
407158 --
407159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
407160 
407161       trace
407162          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
407163          ,p_level    => C_LEVEL_STATEMENT
407164          ,p_module   => l_log_module);
407165 
407166 END IF;
407167 
407168 
407169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
407170       trace
407171          (p_msg      => 'END of insert_sources_609'
407172          ,p_level    => C_LEVEL_PROCEDURE
407173          ,p_module   => l_log_module);
407174 END IF;
407175 EXCEPTION
407176   WHEN xla_exceptions_pkg.application_exception THEN
407177       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
407178             trace
407179                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
407180                ,p_level    => C_LEVEL_EXCEPTION
407181                ,p_module   => l_log_module);
407182       END IF;
407183       RAISE;
407184   WHEN OTHERS THEN
407185       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
407186             trace
407187                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
407188                ,p_level    => C_LEVEL_EXCEPTION
407189                ,p_module   => l_log_module);
407190        END IF;
407191        xla_exceptions_pkg.raise_message
407192            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_609');
407193 END insert_sources_609;
407194 --
407195 
407196 ---------------------------------------
407197 --
407198 -- PRIVATE FUNCTION
407199 --         EventType_609
407200 --
407201 ----------------------------------------
407202 --
407203 FUNCTION EventType_609
407204        (p_application_id         IN NUMBER
407205        ,p_base_ledger_id         IN NUMBER
407206        ,p_target_ledger_id       IN NUMBER
407207        ,p_language               IN VARCHAR2
407208        ,p_currency_code          IN VARCHAR2
407209        ,p_sla_ledger_id          IN NUMBER
407210        ,p_pad_start_date         IN DATE
407211        ,p_pad_end_date           IN DATE
407212        ,p_primary_ledger_id      IN NUMBER)
407213 RETURN BOOLEAN IS
407214 --
407215 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
407216 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
407217 
407218 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
407219 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
407220 --
407221 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407222 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407223 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
407224 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
407225 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407226 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
407227 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
407228 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407229 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
407230 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
407231 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407232 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407233 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407234 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
407235 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
407236 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
407237 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
407238 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
407239 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
407240 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
407241 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
407242 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
407243 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
407244 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
407245 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
407246 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
407247 
407248 l_event_id                             NUMBER;
407249 l_previous_event_id                    NUMBER;
407250 l_first_event_id                       NUMBER;
407251 l_last_event_id                        NUMBER;
407252 
407253 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
407254 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
407255 --
407256 --
407257 l_result                    BOOLEAN := TRUE;
407258 l_rows                      NUMBER  := 1000;
407259 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - No Transfer Price - FOB Shipment';
407260 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
407261 l_description               VARCHAR2(4000);
407262 l_transaction_reversal      NUMBER;
407263 l_ae_header_id              NUMBER;
407264 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
407265 l_log_module                VARCHAR2(240);
407266 --
407267 l_acct_reversal_source      VARCHAR2(30);
407268 l_trx_reversal_source       VARCHAR2(30);
407269 
407270 l_continue_with_lines       BOOLEAN := TRUE;
407271 --
407272 l_acc_rev_gl_date_source    DATE;                      -- 4262811
407273 --
407274 type t_array_event_id is table of number index by binary_integer;
407275 
407276 l_rec_array_event                    t_rec_array_event;
407277 l_null_rec_array_event               t_rec_array_event;
407278 l_array_ae_header_id                 xla_number_array_type;
407279 l_actual_flag                        VARCHAR2(1) := NULL;
407280 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
407281 l_balance_type_code                  VARCHAR2(1) :=NULL;
407282 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
407283 
407284 --
407285 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
407286 --
407287 
407288 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
407289 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
407290 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
407291 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
407292 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
407293 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407294 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407295 TYPE t_array_source_40 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_TXFR_CREDIT_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407296 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407297 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407298 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407299 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407300 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407301 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
407302 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
407303 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
407304 
407305 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
407306 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
407307 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
407308 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
407309 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
407310 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
407311 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
407312 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
407313 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
407314 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
407315 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
407316 
407317 l_array_source_1              t_array_source_1;
407318 l_array_source_2              t_array_source_2;
407319 l_array_source_3              t_array_source_3;
407320 l_array_source_4              t_array_source_4;
407321 l_array_source_5              t_array_source_5;
407322 l_array_source_22              t_array_source_22;
407323 l_array_source_33              t_array_source_33;
407324 l_array_source_40              t_array_source_40;
407325 l_array_source_41              t_array_source_41;
407326 l_array_source_42              t_array_source_42;
407327 l_array_source_43              t_array_source_43;
407328 l_array_source_44              t_array_source_44;
407329 l_array_source_45              t_array_source_45;
407330 l_array_source_59              t_array_source_59;
407331 l_array_source_85              t_array_source_85;
407332 l_array_source_85_meaning      t_array_lookup_meaning;
407333 l_array_source_114              t_array_source_114;
407334 l_array_source_114_meaning      t_array_lookup_meaning;
407335 
407336 l_array_source_11      t_array_source_11;
407337 l_array_source_15      t_array_source_15;
407338 l_array_source_84      t_array_source_84;
407339 l_array_source_88      t_array_source_88;
407340 l_array_source_91      t_array_source_91;
407341 l_array_source_92      t_array_source_92;
407342 l_array_source_93      t_array_source_93;
407343 l_array_source_94      t_array_source_94;
407344 l_array_source_95      t_array_source_95;
407345 l_array_source_97      t_array_source_97;
407346 l_array_source_108      t_array_source_108;
407347 
407348 --
407349 CURSOR header_cur
407350 IS
407351 SELECT /*+ leading(xet) cardinality(xet,1) */
407352 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
407353 -- Event Class Code: USER_DEFINE
407354     xet.entity_id
407355   , xet.legal_entity_id
407356   , xet.entity_code
407357   , xet.transaction_number
407358   , xet.event_id
407359   , xet.event_class_code
407360   , xet.event_type_code
407361   , xet.event_number
407362   , xet.event_date
407363   , xet.transaction_date
407364   , xet.reference_num_1
407365   , xet.reference_num_2
407366   , xet.reference_num_3
407367   , xet.reference_num_4
407368   , xet.reference_char_1
407369   , xet.reference_char_2
407370   , xet.reference_char_3
407371   , xet.reference_char_4
407372   , xet.reference_date_1
407373   , xet.reference_date_2
407374   , xet.reference_date_3
407375   , xet.reference_date_4
407376   , xet.event_created_by
407377   , xet.budgetary_control_flag 
407378   , h2.TRANSACTION_ID    source_1
407379   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
407380   , h4.TRANSACTION_QUANTITY    source_3
407381   , h4.TRANSACTION_UOM    source_4
407382   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
407383   , h7.PLA_BRIDGING_ACCOUNT    source_22
407384   , h1.INTERORG_REVENUE_ACCOUNT    source_33
407385   , h1.INTERORG_TXFR_CREDIT_ACCOUNT    source_40
407386   , h7.PLA_MATERIAL_ACCOUNT    source_41
407387   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
407388   , h7.PLA_RESOURCE_ACCOUNT    source_43
407389   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
407390   , h7.PLA_OVERHEAD_ACCOUNT    source_45
407391   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
407392   , h2.DISTRIBUTION_TYPE    source_85
407393   , fvl85.meaning   source_85_meaning
407394   , h2.TRANSFER_TO_GL_INDICATOR    source_114
407395   , fvl114.meaning   source_114_meaning
407396   FROM xla_events_gt     xet 
407397   , CST_XLA_INTERORG_PARAMS_REF_V  h1
407398   , CST_XLA_INV_HEADERS_V  h2
407399   , CST_XLA_INV_REF_V  h4
407400   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
407401   , CST_XLA_INV_TXN_TYPES_REF_V  h6
407402   , CST_XLA_PLA_CATEGORY_REF_V  h7
407403   , fnd_lookup_values    fvl85
407404   , fnd_lookup_values    fvl114
407405  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
407406    and xet.event_type_code = C_EVENT_TYPE_CODE
407407    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
407408   AND h1.event_id (+) = h2.event_id
407409  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h7.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h7.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
407410   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
407411   AND fvl85.view_application_id(+) = 700
407412   AND fvl85.language(+)            = USERENV('LANG')
407413      AND fvl114.lookup_type(+)         = 'YES_NO'
407414   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
407415   AND fvl114.view_application_id(+) = 0
407416   AND fvl114.language(+)            = USERENV('LANG')
407417   
407418  ORDER BY event_id
407419 ;
407420 
407421 
407422 --
407423 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
407424 IS
407425 SELECT /*+ leading(xet) cardinality(xet,1) */
407426 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
407427 -- Event Class Code: USER_DEFINE
407428     xet.entity_id
407429    ,xet.legal_entity_id
407430    ,xet.entity_code
407431    ,xet.transaction_number
407432    ,xet.event_id
407433    ,xet.event_class_code
407434    ,xet.event_type_code
407435    ,xet.event_number
407436    ,xet.event_date
407437    ,xet.transaction_date
407438    ,xet.reference_num_1
407439    ,xet.reference_num_2
407440    ,xet.reference_num_3
407441    ,xet.reference_num_4
407442    ,xet.reference_char_1
407443    ,xet.reference_char_2
407444    ,xet.reference_char_3
407445    ,xet.reference_char_4
407446    ,xet.reference_date_1
407447    ,xet.reference_date_2
407448    ,xet.reference_date_3
407449    ,xet.reference_date_4
407450    ,xet.event_created_by
407451    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
407452   , l3.CODE_COMBINATION_ID    source_11
407453   , l3.COST_ELEMENT_ID    source_15
407454   , l3.DISTRIBUTION_IDENTIFIER    source_84
407455   , l3.CURRENCY_CODE    source_88
407456   , l3.ENTERED_AMOUNT    source_91
407457   , l3.CURRENCY_CONVERSION_DATE    source_92
407458   , l3.CURRENCY_CONVERSION_RATE    source_93
407459   , l3.CURRENCY_CONVERSION_TYPE    source_94
407460   , l3.ACCOUNTED_AMOUNT    source_95
407461   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
407462   , l3.L_ORGANIZATION_CODE    source_108
407463   FROM xla_events_gt     xet 
407464   , CST_XLA_INV_LINES_V  l3
407465  WHERE xet.event_id between x_first_event_id and x_last_event_id
407466    and xet.event_date between p_pad_start_date and p_pad_end_date
407467    and xet.event_type_code = C_EVENT_TYPE_CODE
407468    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
407469 ;
407470 
407471 --
407472 BEGIN
407473 IF g_log_enabled THEN
407474    l_log_module := C_DEFAULT_MODULE||'.EventType_609';
407475 END IF;
407476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
407477    trace
407478       (p_msg      => 'BEGIN of EventType_609'
407479       ,p_level    => C_LEVEL_PROCEDURE
407480       ,p_module   => l_log_module);
407481 END IF;
407482 
407483 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
407484    trace
407485       (p_msg      => 'p_application_id = '||p_application_id||
407486                      ' - p_base_ledger_id = '||p_base_ledger_id||
407487                      ' - p_target_ledger_id  = '||p_target_ledger_id||
407488                      ' - p_language = '||p_language||
407489                      ' - p_currency_code = '||p_currency_code||
407490                      ' - p_sla_ledger_id = '||p_sla_ledger_id
407491       ,p_level    => C_LEVEL_STATEMENT
407492       ,p_module   => l_log_module);
407493 END IF;
407494 --
407495 -- initialze arrays
407496 --
407497 g_array_event.DELETE;
407498 l_rec_array_event := l_null_rec_array_event;
407499 --
407500 --------------------------------------
407501 -- 4262811 Initialze MPA Line Number
407502 --------------------------------------
407503 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
407504 
407505 --
407506 
407507 --
407508 OPEN header_cur;
407509 --
407510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
407511    trace
407512    (p_msg      => 'SQL - FETCH header_cur'
407513    ,p_level    => C_LEVEL_STATEMENT
407514    ,p_module   => l_log_module);
407515 END IF;
407516 --
407517 LOOP
407518 FETCH header_cur BULK COLLECT INTO
407519         l_array_entity_id
407520       , l_array_legal_entity_id
407521       , l_array_entity_code
407522       , l_array_transaction_num
407523       , l_array_event_id
407524       , l_array_class_code
407525       , l_array_event_type
407526       , l_array_event_number
407527       , l_array_event_date
407528       , l_array_transaction_date
407529       , l_array_reference_num_1
407530       , l_array_reference_num_2
407531       , l_array_reference_num_3
407532       , l_array_reference_num_4
407533       , l_array_reference_char_1
407534       , l_array_reference_char_2
407535       , l_array_reference_char_3
407536       , l_array_reference_char_4
407537       , l_array_reference_date_1
407538       , l_array_reference_date_2
407539       , l_array_reference_date_3
407540       , l_array_reference_date_4
407541       , l_array_event_created_by
407542       , l_array_budgetary_control_flag 
407543       , l_array_source_1
407544       , l_array_source_2
407545       , l_array_source_3
407546       , l_array_source_4
407547       , l_array_source_5
407548       , l_array_source_22
407549       , l_array_source_33
407550       , l_array_source_40
407551       , l_array_source_41
407552       , l_array_source_42
407553       , l_array_source_43
407554       , l_array_source_44
407555       , l_array_source_45
407556       , l_array_source_59
407557       , l_array_source_85
407558       , l_array_source_85_meaning
407559       , l_array_source_114
407560       , l_array_source_114_meaning
407561       LIMIT l_rows;
407562 --
407563 IF (C_LEVEL_EVENT >= g_log_level) THEN
407564    trace
407565    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
407566    ,p_level    => C_LEVEL_EVENT
407567    ,p_module   => l_log_module);
407568 END IF;
407569 --
407570 EXIT WHEN l_array_entity_id.COUNT = 0;
407571 
407572 -- initialize arrays
407573 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
407574 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
407575 
407576 --
407577 -- Bug 4458708
407578 --
407579 XLA_AE_LINES_PKG.g_LineNumber := 0;
407580 
407581 
407582 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
407583 g_last_hdr_idx := l_array_event_id.LAST;
407584 --
407585 -- loop for the headers. Each iteration is for each header extract row
407586 -- fetched in header cursor
407587 --
407588 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
407589 
407590 --
407591 -- set event info as cache for other routines to refer event attributes
407592 --
407593 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
407594    (p_application_id           => p_application_id
407595    ,p_primary_ledger_id        => p_primary_ledger_id
407596    ,p_base_ledger_id           => p_base_ledger_id
407597    ,p_target_ledger_id         => p_target_ledger_id
407598    ,p_entity_id                => l_array_entity_id(hdr_idx)
407599    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
407600    ,p_entity_code              => l_array_entity_code(hdr_idx)
407601    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
407602    ,p_event_id                 => l_array_event_id(hdr_idx)
407603    ,p_event_class_code         => l_array_class_code(hdr_idx)
407604    ,p_event_type_code          => l_array_event_type(hdr_idx)
407605    ,p_event_number             => l_array_event_number(hdr_idx)
407606    ,p_event_date               => l_array_event_date(hdr_idx)
407607    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
407608    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
407609    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
407610    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
407611    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
407612    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
407613    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
407614    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
407615    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
407616    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
407617    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
407618    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
407619    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
407620    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
407621    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
407622 
407623 --
407624 -- set the status of entry to C_VALID (0)
407625 --
407626 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
407627 
407628 --
407629 -- initialize a row for ae header
407630 --
407631 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
407632 
407633 l_event_id := l_array_event_id(hdr_idx);
407634 
407635 --
407636 -- storing the hdr_idx for event. May be used by line cursor.
407637 --
407638 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
407639 
407640 --
407641 -- store sources from header extract. This can be improved to
407642 -- store only those sources from header extract that may be used in lines
407643 --
407644 
407645 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
407646 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
407647 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
407648 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
407649 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
407650 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
407651 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
407652 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
407653 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
407654 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
407655 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
407656 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
407657 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
407658 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
407659 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
407660 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
407661 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
407662 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
407663 
407664 --
407665 -- initilaize the status of ae headers for diffrent balance types
407666 -- the status is initialised to C_NOT_CREATED (2)
407667 --
407668 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
407669 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
407670 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
407671 
407672 --
407673 -- call api to validate and store accounting attributes for header
407674 --
407675 
407676 ------------------------------------------------------------
407677 -- Accrual Reversal : to get date for Standard Source (NONE)
407678 ------------------------------------------------------------
407679 l_acc_rev_gl_date_source := NULL;
407680 
407681      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
407682       l_rec_acct_attrs.array_date_value(1) := 
407683 xla_ae_sources_pkg.GetSystemSourceDate(
407684    p_source_code           => 'XLA_REFERENCE_DATE_1'
407685  , p_source_type_code      => 'Y'
407686  , p_source_application_id =>  602
407687 );
407688      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
407689       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
407690 
407691 
407692 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
407693 
407694 XLA_AE_HEADER_PKG.SetJeCategoryName;
407695 
407696 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
407697 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
407698 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
407699 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
407700 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
407701 
407702 
407703 -- No header level analytical criteria
407704 
407705 --
407706 --accounting attribute enhancement, bug 3612931
407707 --
407708 l_trx_reversal_source := SUBSTR(NULL, 1,30);
407709 
407710 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
407711    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
407712 
407713    xla_accounting_err_pkg.build_message
407714       (p_appli_s_name            => 'XLA'
407715       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
407716       ,p_token_1                 => 'ACCT_ATTR_NAME'
407717       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
407718       ,p_token_2                 => 'PRODUCT_NAME'
407719       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
407720       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
407721       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
407722       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
407723 
407724 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
407725    --
407726    -- following sets the accounting attributes needed to reverse
407727    -- accounting for a distributeion
407728    --
407729    xla_ae_lines_pkg.SetTrxReversalAttrs
407730       (p_event_id              => l_event_id
407731       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
407732       ,p_trx_reversal_source   => l_trx_reversal_source);
407733 
407734 END IF;
407735 
407736 
407737 ----------------------------------------------------------------
407738 -- 4262811 -  update the header statuses to invalid in need be
407739 ----------------------------------------------------------------
407740 --
407741 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
407742 
407743 
407744   -----------------------------------------------
407745   -- No accrual reversal for the event class/type
407746   -----------------------------------------------
407747 ----------------------------------------------------------------
407748 
407749 --
407750 -- this ends the header loop iteration for one bulk fetch
407751 --
407752 END LOOP;
407753 
407754 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
407755 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
407756 
407757 --
407758 -- insert dummy rows into lines gt table that were created due to
407759 -- transaction reversals
407760 --
407761 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
407762    l_result := XLA_AE_LINES_PKG.InsertLines;
407763 END IF;
407764 
407765 --
407766 -- reset the temp_line_num for each set of events fetched from header
407767 -- cursor rather than doing it for each new event in line cursor
407768 -- Bug 3939231
407769 --
407770 xla_ae_lines_pkg.g_temp_line_num := 0;
407771 
407772 
407773 
407774 --
407775 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
407776 --
407777 --
407778 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
407779 
407780       trace
407781          (p_msg      => 'SQL - FETCH line_cur'
407782          ,p_level    => C_LEVEL_STATEMENT
407783          ,p_module   => l_log_module);
407784 
407785 END IF;
407786 --
407787 --
407788 LOOP
407789   --
407790   FETCH line_cur BULK COLLECT INTO
407791         l_array_entity_id
407792       , l_array_legal_entity_id
407793       , l_array_entity_code
407794       , l_array_transaction_num
407795       , l_array_event_id
407796       , l_array_class_code
407797       , l_array_event_type
407798       , l_array_event_number
407799       , l_array_event_date
407800       , l_array_transaction_date
407801       , l_array_reference_num_1
407802       , l_array_reference_num_2
407803       , l_array_reference_num_3
407804       , l_array_reference_num_4
407805       , l_array_reference_char_1
407806       , l_array_reference_char_2
407807       , l_array_reference_char_3
407808       , l_array_reference_char_4
407809       , l_array_reference_date_1
407810       , l_array_reference_date_2
407811       , l_array_reference_date_3
407812       , l_array_reference_date_4
407813       , l_array_event_created_by
407814       , l_array_budgetary_control_flag
407815       , l_array_extract_line_num 
407816       , l_array_source_11
407817       , l_array_source_15
407818       , l_array_source_84
407819       , l_array_source_88
407820       , l_array_source_91
407821       , l_array_source_92
407822       , l_array_source_93
407823       , l_array_source_94
407824       , l_array_source_95
407825       , l_array_source_97
407826       , l_array_source_108
407827       LIMIT l_rows;
407828 
407829   --
407830   IF (C_LEVEL_EVENT >= g_log_level) THEN
407831             trace
407832                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
407833                ,p_level    => C_LEVEL_EVENT
407834                ,p_module   => l_log_module);
407835   END IF;
407836   --
407837   EXIT WHEN l_array_entity_id.count = 0;
407838 
407839   XLA_AE_LINES_PKG.g_rec_lines := null;
407840 
407841 --
407842 -- Bug 4458708
407843 --
407844 XLA_AE_LINES_PKG.g_LineNumber := 0;
407845 --
407846 --
407847 
407848 FOR Idx IN 1..l_array_event_id.count LOOP
407849    --
407850    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
407851    --
407852    l_event_id := l_array_event_id(idx);  -- 5648433
407853 
407854    --
407855    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
407856    --
407857 
407858    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
407859              (g_array_event(l_event_id).array_value_num('header_index'))
407860          ,'N'
407861          ) <> 'Y'
407862    THEN
407863       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
407864          trace
407865             (p_msg      => 'Trancaction revesal option is not Y '
407866             ,p_level    => C_LEVEL_STATEMENT
407867             ,p_module   => l_log_module);
407868       END IF;
407869 
407870 --
407871 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
407872 --
407873 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
407874 --
407875 -- set event info as cache for other routines to refer event attributes
407876 --
407877 
407878 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
407879    l_previous_event_id := l_event_id;
407880 
407881    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
407882       (p_application_id           => p_application_id
407883       ,p_primary_ledger_id        => p_primary_ledger_id
407884       ,p_base_ledger_id           => p_base_ledger_id
407885       ,p_target_ledger_id         => p_target_ledger_id
407886       ,p_entity_id                => l_array_entity_id(Idx)
407887       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
407888       ,p_entity_code              => l_array_entity_code(Idx)
407889       ,p_transaction_num          => l_array_transaction_num(Idx)
407890       ,p_event_id                 => l_array_event_id(Idx)
407891       ,p_event_class_code         => l_array_class_code(Idx)
407892       ,p_event_type_code          => l_array_event_type(Idx)
407893       ,p_event_number             => l_array_event_number(Idx)
407894       ,p_event_date               => l_array_event_date(Idx)
407895       ,p_transaction_date         => l_array_transaction_date(Idx)
407896       ,p_reference_num_1          => l_array_reference_num_1(Idx)
407897       ,p_reference_num_2          => l_array_reference_num_2(Idx)
407898       ,p_reference_num_3          => l_array_reference_num_3(Idx)
407899       ,p_reference_num_4          => l_array_reference_num_4(Idx)
407900       ,p_reference_char_1         => l_array_reference_char_1(Idx)
407901       ,p_reference_char_2         => l_array_reference_char_2(Idx)
407902       ,p_reference_char_3         => l_array_reference_char_3(Idx)
407903       ,p_reference_char_4         => l_array_reference_char_4(Idx)
407904       ,p_reference_date_1         => l_array_reference_date_1(Idx)
407905       ,p_reference_date_2         => l_array_reference_date_2(Idx)
407906       ,p_reference_date_3         => l_array_reference_date_3(Idx)
407907       ,p_reference_date_4         => l_array_reference_date_4(Idx)
407908       ,p_event_created_by         => l_array_event_created_by(Idx)
407909       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
407910        --
407911 END IF;
407912 
407913 
407914 
407915 --
407916 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
407917 
407918 l_acct_reversal_source := SUBSTR(NULL, 1,30);
407919 
407920 IF l_continue_with_lines THEN
407921    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
407922       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
407923 
407924       xla_accounting_err_pkg.build_message
407925          (p_appli_s_name            => 'XLA'
407926          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
407927          ,p_token_1                 => 'LINE_NUMBER'
407928          ,p_value_1                 => l_array_extract_line_num(Idx)
407929          ,p_token_2                 => 'PRODUCT_NAME'
407930          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
407931          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
407932          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
407933          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
407934 
407935    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
407936       --
407937       -- following sets the accounting attributes needed to reverse
407938       -- accounting for a distributeion
407939       --
407940 
407941       --
407942       -- 5217187
407943       --
407944       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
407945       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
407946                                        g_array_event(l_event_id).array_value_num('header_index'));
407947       --
407948       --
407949 
407950       -- No reversal code generated
407951 
407952       xla_ae_lines_pkg.SetAcctReversalAttrs
407953          (p_event_id             => l_event_id
407954          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
407955          ,p_calculate_acctd_flag => l_calculate_acctd_flag
407956          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
407957    END IF;
407958 
407959    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
407960        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
407961 
407962 --
407963 AcctLineType_59 (
407964  p_application_id  => p_application_id
407965  ,p_event_id     => l_event_id
407966  ,p_calculate_acctd_flag => l_calculate_acctd_flag
407967  ,p_calculate_g_l_flag => l_calculate_g_l_flag
407968  ,p_actual_flag => l_actual_flag
407969  ,p_balance_type_code => l_balance_type_code
407970  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
407971  
407972  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
407973  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
407974  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
407975  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
407976  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
407977  , p_source_11 => l_array_source_11(Idx)
407978  , p_source_84 => l_array_source_84(Idx)
407979  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
407980  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
407981  , p_source_88 => l_array_source_88(Idx)
407982  , p_source_91 => l_array_source_91(Idx)
407983  , p_source_92 => l_array_source_92(Idx)
407984  , p_source_93 => l_array_source_93(Idx)
407985  , p_source_94 => l_array_source_94(Idx)
407986  , p_source_95 => l_array_source_95(Idx)
407987  , p_source_97 => l_array_source_97(Idx)
407988  );
407989 If(l_balance_type_code = 'A') THEN
407990   l_actual_gain_loss_ref := l_gain_or_loss_ref;
407991 END IF;
407992 
407993 --
407994 
407995 
407996 --
407997 AcctLineType_176 (
407998  p_application_id  => p_application_id
407999  ,p_event_id     => l_event_id
408000  ,p_calculate_acctd_flag => l_calculate_acctd_flag
408001  ,p_calculate_g_l_flag => l_calculate_g_l_flag
408002  ,p_actual_flag => l_actual_flag
408003  ,p_balance_type_code => l_balance_type_code
408004  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
408005  
408006  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
408007  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
408008  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
408009  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
408010  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
408011  , p_source_11 => l_array_source_11(Idx)
408012  , p_source_84 => l_array_source_84(Idx)
408013  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
408014  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
408015  , p_source_88 => l_array_source_88(Idx)
408016  , p_source_91 => l_array_source_91(Idx)
408017  , p_source_92 => l_array_source_92(Idx)
408018  , p_source_93 => l_array_source_93(Idx)
408019  , p_source_94 => l_array_source_94(Idx)
408020  , p_source_95 => l_array_source_95(Idx)
408021  , p_source_97 => l_array_source_97(Idx)
408022  );
408023 If(l_balance_type_code = 'A') THEN
408024   l_actual_gain_loss_ref := l_gain_or_loss_ref;
408025 END IF;
408026 
408027 --
408028 
408029 
408030 --
408031 AcctLineType_198 (
408032  p_application_id  => p_application_id
408033  ,p_event_id     => l_event_id
408034  ,p_calculate_acctd_flag => l_calculate_acctd_flag
408035  ,p_calculate_g_l_flag => l_calculate_g_l_flag
408036  ,p_actual_flag => l_actual_flag
408037  ,p_balance_type_code => l_balance_type_code
408038  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
408039  
408040  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
408041  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
408042  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
408043  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
408044  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
408045  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
408046  , p_source_84 => l_array_source_84(Idx)
408047  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
408048  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
408049  , p_source_88 => l_array_source_88(Idx)
408050  , p_source_91 => l_array_source_91(Idx)
408051  , p_source_92 => l_array_source_92(Idx)
408052  , p_source_93 => l_array_source_93(Idx)
408053  , p_source_94 => l_array_source_94(Idx)
408054  , p_source_95 => l_array_source_95(Idx)
408055  , p_source_97 => l_array_source_97(Idx)
408056  );
408057 If(l_balance_type_code = 'A') THEN
408058   l_actual_gain_loss_ref := l_gain_or_loss_ref;
408059 END IF;
408060 
408061 --
408062 
408063 
408064 --
408065 AcctLineType_213 (
408066  p_application_id  => p_application_id
408067  ,p_event_id     => l_event_id
408068  ,p_calculate_acctd_flag => l_calculate_acctd_flag
408069  ,p_calculate_g_l_flag => l_calculate_g_l_flag
408070  ,p_actual_flag => l_actual_flag
408071  ,p_balance_type_code => l_balance_type_code
408072  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
408073  
408074  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
408075  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
408076  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
408077  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
408078  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
408079  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
408080  , p_source_84 => l_array_source_84(Idx)
408081  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
408082  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
408083  , p_source_88 => l_array_source_88(Idx)
408084  , p_source_91 => l_array_source_91(Idx)
408085  , p_source_92 => l_array_source_92(Idx)
408086  , p_source_93 => l_array_source_93(Idx)
408087  , p_source_94 => l_array_source_94(Idx)
408088  , p_source_95 => l_array_source_95(Idx)
408089  , p_source_97 => l_array_source_97(Idx)
408090  );
408091 If(l_balance_type_code = 'A') THEN
408092   l_actual_gain_loss_ref := l_gain_or_loss_ref;
408093 END IF;
408094 
408095 --
408096 
408097 
408098 --
408099 AcctLineType_260 (
408100  p_application_id  => p_application_id
408101  ,p_event_id     => l_event_id
408102  ,p_calculate_acctd_flag => l_calculate_acctd_flag
408103  ,p_calculate_g_l_flag => l_calculate_g_l_flag
408104  ,p_actual_flag => l_actual_flag
408105  ,p_balance_type_code => l_balance_type_code
408106  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
408107  
408108  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
408109  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
408110  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
408111  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
408112  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
408113  , p_source_15 => l_array_source_15(Idx)
408114  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
408115  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
408116  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
408117  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
408118  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
408119  , p_source_84 => l_array_source_84(Idx)
408120  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
408121  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
408122  , p_source_88 => l_array_source_88(Idx)
408123  , p_source_91 => l_array_source_91(Idx)
408124  , p_source_92 => l_array_source_92(Idx)
408125  , p_source_93 => l_array_source_93(Idx)
408126  , p_source_94 => l_array_source_94(Idx)
408127  , p_source_95 => l_array_source_95(Idx)
408128  , p_source_97 => l_array_source_97(Idx)
408129  , p_source_108 => l_array_source_108(Idx)
408130  );
408131 If(l_balance_type_code = 'A') THEN
408132   l_actual_gain_loss_ref := l_gain_or_loss_ref;
408133 END IF;
408134 
408135 --
408136 
408137 
408138 --
408139 AcctLineType_367 (
408140  p_application_id  => p_application_id
408141  ,p_event_id     => l_event_id
408142  ,p_calculate_acctd_flag => l_calculate_acctd_flag
408143  ,p_calculate_g_l_flag => l_calculate_g_l_flag
408144  ,p_actual_flag => l_actual_flag
408145  ,p_balance_type_code => l_balance_type_code
408146  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
408147  
408148  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
408149  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
408150  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
408151  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
408152  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
408153  , p_source_11 => l_array_source_11(Idx)
408154  , p_source_84 => l_array_source_84(Idx)
408155  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
408156  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
408157  , p_source_88 => l_array_source_88(Idx)
408158  , p_source_91 => l_array_source_91(Idx)
408159  , p_source_92 => l_array_source_92(Idx)
408160  , p_source_93 => l_array_source_93(Idx)
408161  , p_source_94 => l_array_source_94(Idx)
408162  , p_source_95 => l_array_source_95(Idx)
408163  , p_source_97 => l_array_source_97(Idx)
408164  );
408165 If(l_balance_type_code = 'A') THEN
408166   l_actual_gain_loss_ref := l_gain_or_loss_ref;
408167 END IF;
408168 
408169 --
408170 
408171 
408172 --
408173 AcctLineType_397 (
408174  p_application_id  => p_application_id
408175  ,p_event_id     => l_event_id
408176  ,p_calculate_acctd_flag => l_calculate_acctd_flag
408177  ,p_calculate_g_l_flag => l_calculate_g_l_flag
408178  ,p_actual_flag => l_actual_flag
408179  ,p_balance_type_code => l_balance_type_code
408180  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
408181  
408182  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
408183  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
408184  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
408185  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
408186  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
408187  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
408188  , p_source_84 => l_array_source_84(Idx)
408189  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
408190  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
408191  , p_source_88 => l_array_source_88(Idx)
408192  , p_source_91 => l_array_source_91(Idx)
408193  , p_source_92 => l_array_source_92(Idx)
408194  , p_source_93 => l_array_source_93(Idx)
408195  , p_source_94 => l_array_source_94(Idx)
408196  , p_source_95 => l_array_source_95(Idx)
408197  , p_source_97 => l_array_source_97(Idx)
408198  );
408199 If(l_balance_type_code = 'A') THEN
408200   l_actual_gain_loss_ref := l_gain_or_loss_ref;
408201 END IF;
408202 
408203 --
408204 
408205 
408206 --
408207 AcctLineType_453 (
408208  p_application_id  => p_application_id
408209  ,p_event_id     => l_event_id
408210  ,p_calculate_acctd_flag => l_calculate_acctd_flag
408211  ,p_calculate_g_l_flag => l_calculate_g_l_flag
408212  ,p_actual_flag => l_actual_flag
408213  ,p_balance_type_code => l_balance_type_code
408214  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
408215  
408216  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
408217  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
408218  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
408219  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
408220  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
408221  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
408222  , p_source_84 => l_array_source_84(Idx)
408223  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
408224  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
408225  , p_source_88 => l_array_source_88(Idx)
408226  , p_source_91 => l_array_source_91(Idx)
408227  , p_source_92 => l_array_source_92(Idx)
408228  , p_source_93 => l_array_source_93(Idx)
408229  , p_source_94 => l_array_source_94(Idx)
408230  , p_source_95 => l_array_source_95(Idx)
408231  , p_source_97 => l_array_source_97(Idx)
408232  );
408233 If(l_balance_type_code = 'A') THEN
408234   l_actual_gain_loss_ref := l_gain_or_loss_ref;
408235 END IF;
408236 
408237 --
408238 
408239       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
408240       -- or secondary ledger that has different currency with primary
408241       -- or alc that is calculated by sla
408242       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
408243             (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'))
408244 
408245 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
408246 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
408247           AND (l_actual_flag = 'A')) THEN
408248         XLA_AE_LINES_PKG.CreateGainOrLossLines(
408249           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
408250          ,p_application_id   => p_application_id
408251          ,p_amb_context_code => 'DEFAULT'
408252          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
408253          ,p_event_class_code => C_EVENT_CLASS_CODE
408254          ,p_event_type_code  => C_EVENT_TYPE_CODE
408255          
408256          ,p_gain_ccid        => -1
408257          ,p_loss_ccid        => -1
408258 
408259          ,p_actual_flag      => l_actual_flag
408260          ,p_enc_flag         => null
408261          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
408262          ,p_enc_g_l_ref      => null
408263          );
408264       END IF;
408265    END IF;
408266 END IF;
408267 
408268    ELSE
408269       --
408270       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
408271       --
408272       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
408273          trace
408274             (p_msg      => 'Trancaction revesal option is Y'
408275             ,p_level    => C_LEVEL_STATEMENT
408276             ,p_module   => l_log_module);
408277       END IF;
408278    END IF;
408279 
408280 END LOOP;
408281 l_result := XLA_AE_LINES_PKG.InsertLines ;
408282 end loop;
408283 close line_cur;
408284 
408285 
408286 --
408287 -- insert headers into xla_ae_headers_gt table
408288 --
408289 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
408290 
408291 -- insert into errors table here.
408292 
408293 END LOOP;
408294 
408295 --
408296 -- 4865292
408297 --
408298 -- Compare g_hdr_extract_count with event count in
408299 -- CreateHeadersAndLines.
408300 --
408301 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
408302 
408303 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
408304    trace (p_msg     => '# rows extracted from header extract objects '
408305                     || ' (running total): '
408306                     || g_hdr_extract_count
408307          ,p_level   => C_LEVEL_STATEMENT
408308          ,p_module  => l_log_module);
408309 END IF;
408310 
408311 CLOSE header_cur;
408312 --
408313 
408314 --
408315 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
408316    trace
408317       (p_msg      => 'END of EventType_609'
408318       ,p_level    => C_LEVEL_PROCEDURE
408319       ,p_module   => l_log_module);
408320 END IF;
408321 --
408322 RETURN l_result;
408323 EXCEPTION
408324 WHEN xla_exceptions_pkg.application_exception THEN
408325    
408326 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
408327 
408328    
408329 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
408330 
408331    RAISE;
408332 
408333 WHEN NO_DATA_FOUND THEN
408334 
408335 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
408336 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
408337 
408338 FOR header_record IN header_cur
408339 LOOP
408340     l_array_header_events(header_record.event_id) := header_record.event_id;
408341 END LOOP;
408342 
408343 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
408344 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
408345 
408346 fnd_file.put_line(fnd_file.LOG, '                    ');
408347 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
408348 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
408349 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
408350 
408351 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
408352 LOOP
408353 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
408354 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
408355         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
408356 	END IF;
408357 END LOOP;
408358 
408359 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
408360 fnd_file.put_line(fnd_file.LOG, '                    ');
408361 
408362 
408363 xla_exceptions_pkg.raise_message
408364       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_609');
408365 
408366 
408367 WHEN OTHERS THEN
408368    xla_exceptions_pkg.raise_message
408369       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_609');
408370 END EventType_609;
408371 --
408372 
408373 ---------------------------------------
408374 --
408375 -- PRIVATE PROCEDURE
408376 --         insert_sources_610
408377 --
408378 ----------------------------------------
408379 --
408380 PROCEDURE insert_sources_610(
408381                                 p_target_ledger_id       IN NUMBER
408382                               , p_language               IN VARCHAR2
408383                               , p_sla_ledger_id          IN NUMBER
408384                               , p_pad_start_date         IN DATE
408385                               , p_pad_end_date           IN DATE
408386                          )
408387 IS
408388 
408389 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_TP';
408390 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
408391 p_apps_owner                   VARCHAR2(30);
408392 l_log_module                   VARCHAR2(240);
408393 BEGIN
408394 IF g_log_enabled THEN
408395       l_log_module := C_DEFAULT_MODULE||'.insert_sources_610';
408396 END IF;
408397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
408398 
408399       trace
408400          (p_msg      => 'BEGIN of insert_sources_610'
408401          ,p_level    => C_LEVEL_PROCEDURE
408402          ,p_module   => l_log_module);
408403 
408404 END IF;
408405 
408406 -- select APPS owner
408407 SELECT oracle_username
408408   INTO p_apps_owner
408409   FROM fnd_oracle_userid
408410  WHERE read_only_flag = 'U'
408411 ;
408412 
408413 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
408414       trace
408415          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
408416                         ' - p_language = '||p_language||
408417                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
408418                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
408419                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
408420                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
408421          ,p_level    => C_LEVEL_STATEMENT
408422          ,p_module   => l_log_module);
408423 END IF;
408424 
408425 
408426 --
408427 INSERT INTO xla_diag_sources --hdr1
408428 (
408429         event_id
408430       , ledger_id
408431       , sla_ledger_id
408432       , description_language
408433       , object_name
408434       , object_type_code
408435       , line_number
408436       , source_application_id
408437       , source_type_code
408438       , source_code
408439       , source_value
408440       , source_meaning
408441       , created_by
408442       , creation_date
408443       , last_update_date
408444       , last_updated_by
408445       , last_update_login
408446       , program_update_date
408447       , program_application_id
408448       , program_id
408449       , request_id
408450 )
408451 SELECT
408452         event_id
408453       , p_target_ledger_id
408454       , p_sla_ledger_id
408455       , p_language
408456       , object_name
408457       , object_type_code
408458       , line_number
408459       , source_application_id
408460       , source_type_code
408461       , source_code
408462       , SUBSTR(source_value ,1,1996)
408463       , SUBSTR(source_meaning,1,200)
408464       , xla_environment_pkg.g_Usr_Id
408465       , TRUNC(SYSDATE)
408466       , TRUNC(SYSDATE)
408467       , xla_environment_pkg.g_Usr_Id
408468       , xla_environment_pkg.g_Login_Id
408469       , TRUNC(SYSDATE)
408470       , xla_environment_pkg.g_Prog_Appl_Id
408471       , xla_environment_pkg.g_Prog_Id
408472       , xla_environment_pkg.g_Req_Id
408473   FROM (
408474        SELECT xet.event_id                  event_id
408475             , 0                             line_number
408476             , CASE r
408477                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
408478                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
408479                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
408480                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
408481                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
408482                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
408483                 WHEN 7 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
408484                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
408485                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
408486                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
408487                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
408488                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
408489                 WHEN 13 THEN 'CST_XLA_INTERORG_PARAMS_REF_V' 
408490                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
408491                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
408492                 
408493                ELSE null
408494               END                           object_name
408495             , CASE r
408496                 WHEN 1 THEN 'HEADER' 
408497                 WHEN 2 THEN 'HEADER' 
408498                 WHEN 3 THEN 'HEADER' 
408499                 WHEN 4 THEN 'HEADER' 
408500                 WHEN 5 THEN 'HEADER' 
408501                 WHEN 6 THEN 'HEADER' 
408502                 WHEN 7 THEN 'HEADER' 
408503                 WHEN 8 THEN 'HEADER' 
408504                 WHEN 9 THEN 'HEADER' 
408505                 WHEN 10 THEN 'HEADER' 
408506                 WHEN 11 THEN 'HEADER' 
408507                 WHEN 12 THEN 'HEADER' 
408508                 WHEN 13 THEN 'HEADER' 
408509                 WHEN 14 THEN 'HEADER' 
408510                 WHEN 15 THEN 'HEADER' 
408511                 
408512                 ELSE null
408513               END                           object_type_code
408514             , CASE r
408515                 WHEN 1 THEN '707' 
408516                 WHEN 2 THEN '707' 
408517                 WHEN 3 THEN '707' 
408518                 WHEN 4 THEN '707' 
408519                 WHEN 5 THEN '707' 
408520                 WHEN 6 THEN '707' 
408521                 WHEN 7 THEN '707' 
408522                 WHEN 8 THEN '707' 
408523                 WHEN 9 THEN '707' 
408524                 WHEN 10 THEN '707' 
408525                 WHEN 11 THEN '707' 
408526                 WHEN 12 THEN '707' 
408527                 WHEN 13 THEN '707' 
408528                 WHEN 14 THEN '707' 
408529                 WHEN 15 THEN '707' 
408530                 
408531                 ELSE null
408532               END                           source_application_id
408533             , 'S'             source_type_code
408534             , CASE r
408535                 WHEN 1 THEN 'TRANSACTION_ID' 
408536                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
408537                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
408538                 WHEN 4 THEN 'TRANSACTION_UOM' 
408539                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
408540                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
408541                 WHEN 7 THEN 'INTERORG_REVENUE_ACCOUNT' 
408542                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
408543                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
408544                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
408545                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
408546                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
408547                 WHEN 13 THEN 'INTERORG_RECEIVABLES_ACCOUNT' 
408548                 WHEN 14 THEN 'DISTRIBUTION_TYPE' 
408549                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
408550                 
408551                 ELSE null
408552               END                           source_code
408553             , CASE r
408554                 WHEN 1 THEN TO_CHAR(h2.TRANSACTION_ID)
408555                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
408556                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
408557                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
408558                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
408559                 WHEN 6 THEN TO_CHAR(h7.PLA_BRIDGING_ACCOUNT)
408560                 WHEN 7 THEN TO_CHAR(h1.INTERORG_REVENUE_ACCOUNT)
408561                 WHEN 8 THEN TO_CHAR(h7.PLA_MATERIAL_ACCOUNT)
408562                 WHEN 9 THEN TO_CHAR(h7.PLA_MATERIAL_OVERHEAD_ACCOUNT)
408563                 WHEN 10 THEN TO_CHAR(h7.PLA_RESOURCE_ACCOUNT)
408564                 WHEN 11 THEN TO_CHAR(h7.PLA_OUTSIDE_PROCESSING_ACCOUNT)
408565                 WHEN 12 THEN TO_CHAR(h7.PLA_OVERHEAD_ACCOUNT)
408566                 WHEN 13 THEN TO_CHAR(h1.INTERORG_RECEIVABLES_ACCOUNT)
408567                 WHEN 14 THEN TO_CHAR(h2.DISTRIBUTION_TYPE)
408568                 WHEN 15 THEN TO_CHAR(h2.TRANSFER_TO_GL_INDICATOR)
408569                 
408570                 ELSE null
408571               END                           source_value
408572             , CASE r
408573                 WHEN 14 THEN fvl85.meaning
408574                 WHEN 15 THEN fvl114.meaning
408575                 
408576                 ELSE null
408577               END               source_meaning
408578         FROM xla_events_gt     xet  
408579       , CST_XLA_INTERORG_PARAMS_REF_V  h1
408580       , CST_XLA_INV_HEADERS_V  h2
408581       , CST_XLA_INV_REF_V  h4
408582       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
408583       , CST_XLA_INV_TXN_TYPES_REF_V  h6
408584       , CST_XLA_PLA_CATEGORY_REF_V  h7
408585   , fnd_lookup_values    fvl85
408586   , fnd_lookup_values    fvl114
408587             ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
408588        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
408589          AND xet.event_type_code = C_EVENT_TYPE_CODE
408590             AND h2.event_id = xet.event_id
408591   AND h1.event_id (+) = h2.event_id
408592  AND h4.ref_transaction_id = h2.transaction_id AND h5.inventory_item_id  (+) = h2.inventory_item_id  and h5.organization_id  (+) = h2.organization_id AND h6.inv_transaction_type_id  (+) = h2.transaction_type_id AND h7.pla_cat_organization_id  (+) = h2.organization_id  and h7.pla_cat_item_id   (+) = h2.inventory_item_id  and h7.pla_subinv_cg   (+) = h2.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
408593   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
408594   AND fvl85.view_application_id(+) = 700
408595   AND fvl85.language(+)            = USERENV('LANG')
408596      AND fvl114.lookup_type(+)         = 'YES_NO'
408597   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
408598   AND fvl114.view_application_id(+) = 0
408599   AND fvl114.language(+)            = USERENV('LANG')
408600   
408601 )
408602 ;
408603 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
408604 
408605       trace
408606          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
408607          ,p_level    => C_LEVEL_STATEMENT
408608          ,p_module   => l_log_module);
408609 
408610 END IF;
408611 --
408612 
408613 
408614 
408615 --
408616 INSERT INTO xla_diag_sources --line1
408617 (
408618         event_id
408619       , ledger_id
408620       , sla_ledger_id
408621       , description_language
408622       , object_name
408623       , object_type_code
408624       , line_number
408625       , source_application_id
408626       , source_type_code
408627       , source_code
408628       , source_value
408629       , source_meaning
408630       , created_by
408631       , creation_date
408632       , last_update_date
408633       , last_updated_by
408634       , last_update_login
408635       , program_update_date
408636       , program_application_id
408637       , program_id
408638       , request_id
408639 )
408640 SELECT  event_id
408641       , p_target_ledger_id
408642       , p_sla_ledger_id
408643       , p_language
408644       , object_name
408645       , object_type_code
408646       , line_number
408647       , source_application_id
408648       , source_type_code
408649       , source_code
408650       , SUBSTR(source_value,1,1996)
408651       , SUBSTR(source_meaning,1,200)
408652       , xla_environment_pkg.g_Usr_Id
408653       , TRUNC(SYSDATE)
408654       , TRUNC(SYSDATE)
408655       , xla_environment_pkg.g_Usr_Id
408656       , xla_environment_pkg.g_Login_Id
408657       , TRUNC(SYSDATE)
408658       , xla_environment_pkg.g_Prog_Appl_Id
408659       , xla_environment_pkg.g_Prog_Id
408660       , xla_environment_pkg.g_Req_Id
408661   FROM (
408662        SELECT xet.event_id                  event_id
408663             , l3.line_number                 line_number
408664             , CASE r
408665                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
408666                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
408667                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
408668                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
408669                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
408670                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
408671                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
408672                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
408673                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
408674                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
408675                 
408676                ELSE null
408677               END                           object_name
408678             , CASE r
408679                 WHEN 1 THEN 'LINE' 
408680                 WHEN 2 THEN 'LINE' 
408681                 WHEN 3 THEN 'LINE' 
408682                 WHEN 4 THEN 'LINE' 
408683                 WHEN 5 THEN 'LINE' 
408684                 WHEN 6 THEN 'LINE' 
408685                 WHEN 7 THEN 'LINE' 
408686                 WHEN 8 THEN 'LINE' 
408687                 WHEN 9 THEN 'LINE' 
408688                 WHEN 10 THEN 'LINE' 
408689                 
408690                 ELSE null
408691               END                           object_type_code
408692             , CASE r
408693                 WHEN 1 THEN '707' 
408694                 WHEN 2 THEN '707' 
408695                 WHEN 3 THEN '707' 
408696                 WHEN 4 THEN '707' 
408697                 WHEN 5 THEN '707' 
408698                 WHEN 6 THEN '707' 
408699                 WHEN 7 THEN '707' 
408700                 WHEN 8 THEN '707' 
408701                 WHEN 9 THEN '707' 
408702                 WHEN 10 THEN '707' 
408703                 
408704                 ELSE null
408705               END                           source_application_id
408706             , 'S'             source_type_code
408707             , CASE r
408708                 WHEN 1 THEN 'COST_ELEMENT_ID' 
408709                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
408710                 WHEN 3 THEN 'CURRENCY_CODE' 
408711                 WHEN 4 THEN 'ENTERED_AMOUNT' 
408712                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
408713                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
408714                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
408715                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
408716                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
408717                 WHEN 10 THEN 'L_ORGANIZATION_CODE' 
408718                 
408719                 ELSE null
408720               END                           source_code
408721             , CASE r
408722                 WHEN 1 THEN TO_CHAR(l3.COST_ELEMENT_ID)
408723                 WHEN 2 THEN TO_CHAR(l3.DISTRIBUTION_IDENTIFIER)
408724                 WHEN 3 THEN TO_CHAR(l3.CURRENCY_CODE)
408725                 WHEN 4 THEN TO_CHAR(l3.ENTERED_AMOUNT)
408726                 WHEN 5 THEN TO_CHAR(l3.CURRENCY_CONVERSION_DATE)
408727                 WHEN 6 THEN TO_CHAR(l3.CURRENCY_CONVERSION_RATE)
408728                 WHEN 7 THEN TO_CHAR(l3.CURRENCY_CONVERSION_TYPE)
408729                 WHEN 8 THEN TO_CHAR(l3.ACCOUNTED_AMOUNT)
408730                 WHEN 9 THEN TO_CHAR(l3.ACCOUNTING_LINE_TYPE_CODE)
408731                 WHEN 10 THEN TO_CHAR(l3.L_ORGANIZATION_CODE)
408732                 
408733                 ELSE null
408734               END                           source_value
408735             , CASE r
408736                 WHEN 1 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
408737                           1009615
408738                          ,TO_CHAR(l3.COST_ELEMENT_ID)
408739                          ,'COST_ELEMENT_ID'
408740                          ,'S'
408741                          ,707)
408742                 
408743                 ELSE null
408744               END               source_meaning
408745          FROM  xla_events_gt     xet  
408746         , CST_XLA_INV_LINES_V  l3
408747             ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
408748         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
408749           AND xet.event_type_code = C_EVENT_TYPE_CODE
408750             AND l3.event_id          = xet.event_id
408751 
408752 )
408753 ;
408754 --
408755 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
408756 
408757       trace
408758          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
408759          ,p_level    => C_LEVEL_STATEMENT
408760          ,p_module   => l_log_module);
408761 
408762 END IF;
408763 
408764 
408765 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
408766       trace
408767          (p_msg      => 'END of insert_sources_610'
408768          ,p_level    => C_LEVEL_PROCEDURE
408769          ,p_module   => l_log_module);
408770 END IF;
408771 EXCEPTION
408772   WHEN xla_exceptions_pkg.application_exception THEN
408773       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
408774             trace
408775                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
408776                ,p_level    => C_LEVEL_EXCEPTION
408777                ,p_module   => l_log_module);
408778       END IF;
408779       RAISE;
408780   WHEN OTHERS THEN
408781       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
408782             trace
408783                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
408784                ,p_level    => C_LEVEL_EXCEPTION
408785                ,p_module   => l_log_module);
408786        END IF;
408787        xla_exceptions_pkg.raise_message
408788            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_610');
408789 END insert_sources_610;
408790 --
408791 
408792 ---------------------------------------
408793 --
408794 -- PRIVATE FUNCTION
408795 --         EventType_610
408796 --
408797 ----------------------------------------
408798 --
408799 FUNCTION EventType_610
408800        (p_application_id         IN NUMBER
408801        ,p_base_ledger_id         IN NUMBER
408802        ,p_target_ledger_id       IN NUMBER
408803        ,p_language               IN VARCHAR2
408804        ,p_currency_code          IN VARCHAR2
408805        ,p_sla_ledger_id          IN NUMBER
408806        ,p_pad_start_date         IN DATE
408807        ,p_pad_end_date           IN DATE
408808        ,p_primary_ledger_id      IN NUMBER)
408809 RETURN BOOLEAN IS
408810 --
408811 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UFOB_SHIP_SENDER_SHIP_TP';
408812 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
408813 
408814 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
408815 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
408816 --
408817 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408818 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408819 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
408820 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
408821 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408822 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
408823 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
408824 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408825 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
408826 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
408827 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408828 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408829 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408830 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
408831 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
408832 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
408833 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
408834 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
408835 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
408836 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
408837 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
408838 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
408839 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
408840 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
408841 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
408842 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
408843 
408844 l_event_id                             NUMBER;
408845 l_previous_event_id                    NUMBER;
408846 l_first_event_id                       NUMBER;
408847 l_last_event_id                        NUMBER;
408848 
408849 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
408850 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
408851 --
408852 --
408853 l_result                    BOOLEAN := TRUE;
408854 l_rows                      NUMBER  := 1000;
408855 l_event_type_name           VARCHAR2(80) := 'User-defined Sender Intransit Shipment - Transfer Price - FOB Shipment';
408856 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
408857 l_description               VARCHAR2(4000);
408858 l_transaction_reversal      NUMBER;
408859 l_ae_header_id              NUMBER;
408860 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
408861 l_log_module                VARCHAR2(240);
408862 --
408863 l_acct_reversal_source      VARCHAR2(30);
408864 l_trx_reversal_source       VARCHAR2(30);
408865 
408866 l_continue_with_lines       BOOLEAN := TRUE;
408867 --
408868 l_acc_rev_gl_date_source    DATE;                      -- 4262811
408869 --
408870 type t_array_event_id is table of number index by binary_integer;
408871 
408872 l_rec_array_event                    t_rec_array_event;
408873 l_null_rec_array_event               t_rec_array_event;
408874 l_array_ae_header_id                 xla_number_array_type;
408875 l_actual_flag                        VARCHAR2(1) := NULL;
408876 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
408877 l_balance_type_code                  VARCHAR2(1) :=NULL;
408878 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
408879 
408880 --
408881 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
408882 --
408883 
408884 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
408885 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
408886 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
408887 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
408888 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
408889 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408890 TYPE t_array_source_33 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_REVENUE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408891 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408892 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408893 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408894 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408895 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408896 TYPE t_array_source_59 IS TABLE OF CST_XLA_INTERORG_PARAMS_REF_V.INTERORG_RECEIVABLES_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
408897 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
408898 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
408899 
408900 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
408901 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
408902 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
408903 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
408904 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
408905 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
408906 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
408907 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
408908 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
408909 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
408910 
408911 l_array_source_1              t_array_source_1;
408912 l_array_source_2              t_array_source_2;
408913 l_array_source_3              t_array_source_3;
408914 l_array_source_4              t_array_source_4;
408915 l_array_source_5              t_array_source_5;
408916 l_array_source_22              t_array_source_22;
408917 l_array_source_33              t_array_source_33;
408918 l_array_source_41              t_array_source_41;
408919 l_array_source_42              t_array_source_42;
408920 l_array_source_43              t_array_source_43;
408921 l_array_source_44              t_array_source_44;
408922 l_array_source_45              t_array_source_45;
408923 l_array_source_59              t_array_source_59;
408924 l_array_source_85              t_array_source_85;
408925 l_array_source_85_meaning      t_array_lookup_meaning;
408926 l_array_source_114              t_array_source_114;
408927 l_array_source_114_meaning      t_array_lookup_meaning;
408928 
408929 l_array_source_15      t_array_source_15;
408930 l_array_source_84      t_array_source_84;
408931 l_array_source_88      t_array_source_88;
408932 l_array_source_91      t_array_source_91;
408933 l_array_source_92      t_array_source_92;
408934 l_array_source_93      t_array_source_93;
408935 l_array_source_94      t_array_source_94;
408936 l_array_source_95      t_array_source_95;
408937 l_array_source_97      t_array_source_97;
408938 l_array_source_108      t_array_source_108;
408939 
408940 --
408941 CURSOR header_cur
408942 IS
408943 SELECT /*+ leading(xet) cardinality(xet,1) */
408944 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
408945 -- Event Class Code: USER_DEFINE
408946     xet.entity_id
408947   , xet.legal_entity_id
408948   , xet.entity_code
408949   , xet.transaction_number
408950   , xet.event_id
408951   , xet.event_class_code
408952   , xet.event_type_code
408953   , xet.event_number
408954   , xet.event_date
408955   , xet.transaction_date
408956   , xet.reference_num_1
408957   , xet.reference_num_2
408958   , xet.reference_num_3
408959   , xet.reference_num_4
408960   , xet.reference_char_1
408961   , xet.reference_char_2
408962   , xet.reference_char_3
408963   , xet.reference_char_4
408964   , xet.reference_date_1
408965   , xet.reference_date_2
408966   , xet.reference_date_3
408967   , xet.reference_date_4
408968   , xet.event_created_by
408969   , xet.budgetary_control_flag 
408970   , h2.TRANSACTION_ID    source_1
408971   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
408972   , h4.TRANSACTION_QUANTITY    source_3
408973   , h4.TRANSACTION_UOM    source_4
408974   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
408975   , h7.PLA_BRIDGING_ACCOUNT    source_22
408976   , h1.INTERORG_REVENUE_ACCOUNT    source_33
408977   , h7.PLA_MATERIAL_ACCOUNT    source_41
408978   , h7.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
408979   , h7.PLA_RESOURCE_ACCOUNT    source_43
408980   , h7.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
408981   , h7.PLA_OVERHEAD_ACCOUNT    source_45
408982   , h1.INTERORG_RECEIVABLES_ACCOUNT    source_59
408983   , h2.DISTRIBUTION_TYPE    source_85
408984   , fvl85.meaning   source_85_meaning
408985   , h2.TRANSFER_TO_GL_INDICATOR    source_114
408986   , fvl114.meaning   source_114_meaning
408987   FROM xla_events_gt     xet 
408988   , CST_XLA_INTERORG_PARAMS_REF_V  h1
408989   , CST_XLA_INV_HEADERS_V  h2
408990   , CST_XLA_INV_REF_V  h4
408991   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
408992   , CST_XLA_INV_TXN_TYPES_REF_V  h6
408993   , CST_XLA_PLA_CATEGORY_REF_V  h7
408994   , fnd_lookup_values    fvl85
408995   , fnd_lookup_values    fvl114
408996  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
408997    and xet.event_type_code = C_EVENT_TYPE_CODE
408998    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
408999   AND h1.event_id (+) = h2.event_id
409000  AND h4.ref_transaction_id = h2.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h2.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID  (+) = h2.TRANSACTION_TYPE_ID AND h7.PLA_CAT_ORGANIZATION_ID  (+) = h2.ORGANIZATION_ID  AND h7.PLA_CAT_ITEM_ID   (+) = h2.INVENTORY_ITEM_ID  AND h7.PLA_SUBINV_CG   (+) = h2.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
409001   AND fvl85.lookup_code(+)         = h2.DISTRIBUTION_TYPE
409002   AND fvl85.view_application_id(+) = 700
409003   AND fvl85.language(+)            = USERENV('LANG')
409004      AND fvl114.lookup_type(+)         = 'YES_NO'
409005   AND fvl114.lookup_code(+)         = h2.TRANSFER_TO_GL_INDICATOR
409006   AND fvl114.view_application_id(+) = 0
409007   AND fvl114.language(+)            = USERENV('LANG')
409008   
409009  ORDER BY event_id
409010 ;
409011 
409012 
409013 --
409014 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
409015 IS
409016 SELECT /*+ leading(xet) cardinality(xet,1) */
409017 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
409018 -- Event Class Code: USER_DEFINE
409019     xet.entity_id
409020    ,xet.legal_entity_id
409021    ,xet.entity_code
409022    ,xet.transaction_number
409023    ,xet.event_id
409024    ,xet.event_class_code
409025    ,xet.event_type_code
409026    ,xet.event_number
409027    ,xet.event_date
409028    ,xet.transaction_date
409029    ,xet.reference_num_1
409030    ,xet.reference_num_2
409031    ,xet.reference_num_3
409032    ,xet.reference_num_4
409033    ,xet.reference_char_1
409034    ,xet.reference_char_2
409035    ,xet.reference_char_3
409036    ,xet.reference_char_4
409037    ,xet.reference_date_1
409038    ,xet.reference_date_2
409039    ,xet.reference_date_3
409040    ,xet.reference_date_4
409041    ,xet.event_created_by
409042    ,xet.budgetary_control_flag  , l3.LINE_NUMBER  
409043   , l3.COST_ELEMENT_ID    source_15
409044   , l3.DISTRIBUTION_IDENTIFIER    source_84
409045   , l3.CURRENCY_CODE    source_88
409046   , l3.ENTERED_AMOUNT    source_91
409047   , l3.CURRENCY_CONVERSION_DATE    source_92
409048   , l3.CURRENCY_CONVERSION_RATE    source_93
409049   , l3.CURRENCY_CONVERSION_TYPE    source_94
409050   , l3.ACCOUNTED_AMOUNT    source_95
409051   , l3.ACCOUNTING_LINE_TYPE_CODE    source_97
409052   , l3.L_ORGANIZATION_CODE    source_108
409053   FROM xla_events_gt     xet 
409054   , CST_XLA_INV_LINES_V  l3
409055  WHERE xet.event_id between x_first_event_id and x_last_event_id
409056    and xet.event_date between p_pad_start_date and p_pad_end_date
409057    and xet.event_type_code = C_EVENT_TYPE_CODE
409058    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
409059 ;
409060 
409061 --
409062 BEGIN
409063 IF g_log_enabled THEN
409064    l_log_module := C_DEFAULT_MODULE||'.EventType_610';
409065 END IF;
409066 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
409067    trace
409068       (p_msg      => 'BEGIN of EventType_610'
409069       ,p_level    => C_LEVEL_PROCEDURE
409070       ,p_module   => l_log_module);
409071 END IF;
409072 
409073 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
409074    trace
409075       (p_msg      => 'p_application_id = '||p_application_id||
409076                      ' - p_base_ledger_id = '||p_base_ledger_id||
409077                      ' - p_target_ledger_id  = '||p_target_ledger_id||
409078                      ' - p_language = '||p_language||
409079                      ' - p_currency_code = '||p_currency_code||
409080                      ' - p_sla_ledger_id = '||p_sla_ledger_id
409081       ,p_level    => C_LEVEL_STATEMENT
409082       ,p_module   => l_log_module);
409083 END IF;
409084 --
409085 -- initialze arrays
409086 --
409087 g_array_event.DELETE;
409088 l_rec_array_event := l_null_rec_array_event;
409089 --
409090 --------------------------------------
409091 -- 4262811 Initialze MPA Line Number
409092 --------------------------------------
409093 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
409094 
409095 --
409096 
409097 --
409098 OPEN header_cur;
409099 --
409100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
409101    trace
409102    (p_msg      => 'SQL - FETCH header_cur'
409103    ,p_level    => C_LEVEL_STATEMENT
409104    ,p_module   => l_log_module);
409105 END IF;
409106 --
409107 LOOP
409108 FETCH header_cur BULK COLLECT INTO
409109         l_array_entity_id
409110       , l_array_legal_entity_id
409111       , l_array_entity_code
409112       , l_array_transaction_num
409113       , l_array_event_id
409114       , l_array_class_code
409115       , l_array_event_type
409116       , l_array_event_number
409117       , l_array_event_date
409118       , l_array_transaction_date
409119       , l_array_reference_num_1
409120       , l_array_reference_num_2
409121       , l_array_reference_num_3
409122       , l_array_reference_num_4
409123       , l_array_reference_char_1
409124       , l_array_reference_char_2
409125       , l_array_reference_char_3
409126       , l_array_reference_char_4
409127       , l_array_reference_date_1
409128       , l_array_reference_date_2
409129       , l_array_reference_date_3
409130       , l_array_reference_date_4
409131       , l_array_event_created_by
409132       , l_array_budgetary_control_flag 
409133       , l_array_source_1
409134       , l_array_source_2
409135       , l_array_source_3
409136       , l_array_source_4
409137       , l_array_source_5
409138       , l_array_source_22
409139       , l_array_source_33
409140       , l_array_source_41
409141       , l_array_source_42
409142       , l_array_source_43
409143       , l_array_source_44
409144       , l_array_source_45
409145       , l_array_source_59
409146       , l_array_source_85
409147       , l_array_source_85_meaning
409148       , l_array_source_114
409149       , l_array_source_114_meaning
409150       LIMIT l_rows;
409151 --
409152 IF (C_LEVEL_EVENT >= g_log_level) THEN
409153    trace
409154    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
409155    ,p_level    => C_LEVEL_EVENT
409156    ,p_module   => l_log_module);
409157 END IF;
409158 --
409159 EXIT WHEN l_array_entity_id.COUNT = 0;
409160 
409161 -- initialize arrays
409162 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
409163 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
409164 
409165 --
409166 -- Bug 4458708
409167 --
409168 XLA_AE_LINES_PKG.g_LineNumber := 0;
409169 
409170 
409171 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
409172 g_last_hdr_idx := l_array_event_id.LAST;
409173 --
409174 -- loop for the headers. Each iteration is for each header extract row
409175 -- fetched in header cursor
409176 --
409177 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
409178 
409179 --
409180 -- set event info as cache for other routines to refer event attributes
409181 --
409182 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
409183    (p_application_id           => p_application_id
409184    ,p_primary_ledger_id        => p_primary_ledger_id
409185    ,p_base_ledger_id           => p_base_ledger_id
409186    ,p_target_ledger_id         => p_target_ledger_id
409187    ,p_entity_id                => l_array_entity_id(hdr_idx)
409188    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
409189    ,p_entity_code              => l_array_entity_code(hdr_idx)
409190    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
409191    ,p_event_id                 => l_array_event_id(hdr_idx)
409192    ,p_event_class_code         => l_array_class_code(hdr_idx)
409193    ,p_event_type_code          => l_array_event_type(hdr_idx)
409194    ,p_event_number             => l_array_event_number(hdr_idx)
409195    ,p_event_date               => l_array_event_date(hdr_idx)
409196    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
409197    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
409198    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
409199    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
409200    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
409201    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
409202    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
409203    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
409204    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
409205    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
409206    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
409207    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
409208    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
409209    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
409210    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
409211 
409212 --
409213 -- set the status of entry to C_VALID (0)
409214 --
409215 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
409216 
409217 --
409218 -- initialize a row for ae header
409219 --
409220 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
409221 
409222 l_event_id := l_array_event_id(hdr_idx);
409223 
409224 --
409225 -- storing the hdr_idx for event. May be used by line cursor.
409226 --
409227 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
409228 
409229 --
409230 -- store sources from header extract. This can be improved to
409231 -- store only those sources from header extract that may be used in lines
409232 --
409233 
409234 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
409235 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
409236 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
409237 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
409238 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
409239 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
409240 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
409241 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
409242 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
409243 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
409244 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
409245 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
409246 g_array_event(l_event_id).array_value_num('source_59') := l_array_source_59(hdr_idx);
409247 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
409248 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
409249 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
409250 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
409251 
409252 --
409253 -- initilaize the status of ae headers for diffrent balance types
409254 -- the status is initialised to C_NOT_CREATED (2)
409255 --
409256 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
409257 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
409258 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
409259 
409260 --
409261 -- call api to validate and store accounting attributes for header
409262 --
409263 
409264 ------------------------------------------------------------
409265 -- Accrual Reversal : to get date for Standard Source (NONE)
409266 ------------------------------------------------------------
409267 l_acc_rev_gl_date_source := NULL;
409268 
409269      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
409270       l_rec_acct_attrs.array_date_value(1) := 
409271 xla_ae_sources_pkg.GetSystemSourceDate(
409272    p_source_code           => 'XLA_REFERENCE_DATE_1'
409273  , p_source_type_code      => 'Y'
409274  , p_source_application_id =>  602
409275 );
409276      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
409277       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
409278 
409279 
409280 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
409281 
409282 XLA_AE_HEADER_PKG.SetJeCategoryName;
409283 
409284 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
409285 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
409286 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
409287 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
409288 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
409289 
409290 
409291 -- No header level analytical criteria
409292 
409293 --
409294 --accounting attribute enhancement, bug 3612931
409295 --
409296 l_trx_reversal_source := SUBSTR(NULL, 1,30);
409297 
409298 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
409299    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
409300 
409301    xla_accounting_err_pkg.build_message
409302       (p_appli_s_name            => 'XLA'
409303       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
409304       ,p_token_1                 => 'ACCT_ATTR_NAME'
409305       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
409306       ,p_token_2                 => 'PRODUCT_NAME'
409307       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
409308       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
409309       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
409310       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
409311 
409312 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
409313    --
409314    -- following sets the accounting attributes needed to reverse
409315    -- accounting for a distributeion
409316    --
409317    xla_ae_lines_pkg.SetTrxReversalAttrs
409318       (p_event_id              => l_event_id
409319       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
409320       ,p_trx_reversal_source   => l_trx_reversal_source);
409321 
409322 END IF;
409323 
409324 
409325 ----------------------------------------------------------------
409326 -- 4262811 -  update the header statuses to invalid in need be
409327 ----------------------------------------------------------------
409328 --
409329 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
409330 
409331 
409332   -----------------------------------------------
409333   -- No accrual reversal for the event class/type
409334   -----------------------------------------------
409335 ----------------------------------------------------------------
409336 
409337 --
409338 -- this ends the header loop iteration for one bulk fetch
409339 --
409340 END LOOP;
409341 
409342 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
409343 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
409344 
409345 --
409346 -- insert dummy rows into lines gt table that were created due to
409347 -- transaction reversals
409348 --
409349 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
409350    l_result := XLA_AE_LINES_PKG.InsertLines;
409351 END IF;
409352 
409353 --
409354 -- reset the temp_line_num for each set of events fetched from header
409355 -- cursor rather than doing it for each new event in line cursor
409356 -- Bug 3939231
409357 --
409358 xla_ae_lines_pkg.g_temp_line_num := 0;
409359 
409360 
409361 
409362 --
409363 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
409364 --
409365 --
409366 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
409367 
409368       trace
409369          (p_msg      => 'SQL - FETCH line_cur'
409370          ,p_level    => C_LEVEL_STATEMENT
409371          ,p_module   => l_log_module);
409372 
409373 END IF;
409374 --
409375 --
409376 LOOP
409377   --
409378   FETCH line_cur BULK COLLECT INTO
409379         l_array_entity_id
409380       , l_array_legal_entity_id
409381       , l_array_entity_code
409382       , l_array_transaction_num
409383       , l_array_event_id
409384       , l_array_class_code
409385       , l_array_event_type
409386       , l_array_event_number
409387       , l_array_event_date
409388       , l_array_transaction_date
409389       , l_array_reference_num_1
409390       , l_array_reference_num_2
409391       , l_array_reference_num_3
409392       , l_array_reference_num_4
409393       , l_array_reference_char_1
409394       , l_array_reference_char_2
409395       , l_array_reference_char_3
409396       , l_array_reference_char_4
409397       , l_array_reference_date_1
409398       , l_array_reference_date_2
409399       , l_array_reference_date_3
409400       , l_array_reference_date_4
409401       , l_array_event_created_by
409402       , l_array_budgetary_control_flag
409403       , l_array_extract_line_num 
409404       , l_array_source_15
409405       , l_array_source_84
409406       , l_array_source_88
409407       , l_array_source_91
409408       , l_array_source_92
409409       , l_array_source_93
409410       , l_array_source_94
409411       , l_array_source_95
409412       , l_array_source_97
409413       , l_array_source_108
409414       LIMIT l_rows;
409415 
409416   --
409417   IF (C_LEVEL_EVENT >= g_log_level) THEN
409418             trace
409419                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
409420                ,p_level    => C_LEVEL_EVENT
409421                ,p_module   => l_log_module);
409422   END IF;
409423   --
409424   EXIT WHEN l_array_entity_id.count = 0;
409425 
409426   XLA_AE_LINES_PKG.g_rec_lines := null;
409427 
409428 --
409429 -- Bug 4458708
409430 --
409431 XLA_AE_LINES_PKG.g_LineNumber := 0;
409432 --
409433 --
409434 
409435 FOR Idx IN 1..l_array_event_id.count LOOP
409436    --
409437    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
409438    --
409439    l_event_id := l_array_event_id(idx);  -- 5648433
409440 
409441    --
409442    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
409443    --
409444 
409445    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
409446              (g_array_event(l_event_id).array_value_num('header_index'))
409447          ,'N'
409448          ) <> 'Y'
409449    THEN
409450       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
409451          trace
409452             (p_msg      => 'Trancaction revesal option is not Y '
409453             ,p_level    => C_LEVEL_STATEMENT
409454             ,p_module   => l_log_module);
409455       END IF;
409456 
409457 --
409458 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
409459 --
409460 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
409461 --
409462 -- set event info as cache for other routines to refer event attributes
409463 --
409464 
409465 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
409466    l_previous_event_id := l_event_id;
409467 
409468    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
409469       (p_application_id           => p_application_id
409470       ,p_primary_ledger_id        => p_primary_ledger_id
409471       ,p_base_ledger_id           => p_base_ledger_id
409472       ,p_target_ledger_id         => p_target_ledger_id
409473       ,p_entity_id                => l_array_entity_id(Idx)
409474       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
409475       ,p_entity_code              => l_array_entity_code(Idx)
409476       ,p_transaction_num          => l_array_transaction_num(Idx)
409477       ,p_event_id                 => l_array_event_id(Idx)
409478       ,p_event_class_code         => l_array_class_code(Idx)
409479       ,p_event_type_code          => l_array_event_type(Idx)
409480       ,p_event_number             => l_array_event_number(Idx)
409481       ,p_event_date               => l_array_event_date(Idx)
409482       ,p_transaction_date         => l_array_transaction_date(Idx)
409483       ,p_reference_num_1          => l_array_reference_num_1(Idx)
409484       ,p_reference_num_2          => l_array_reference_num_2(Idx)
409485       ,p_reference_num_3          => l_array_reference_num_3(Idx)
409486       ,p_reference_num_4          => l_array_reference_num_4(Idx)
409487       ,p_reference_char_1         => l_array_reference_char_1(Idx)
409488       ,p_reference_char_2         => l_array_reference_char_2(Idx)
409489       ,p_reference_char_3         => l_array_reference_char_3(Idx)
409490       ,p_reference_char_4         => l_array_reference_char_4(Idx)
409491       ,p_reference_date_1         => l_array_reference_date_1(Idx)
409492       ,p_reference_date_2         => l_array_reference_date_2(Idx)
409493       ,p_reference_date_3         => l_array_reference_date_3(Idx)
409494       ,p_reference_date_4         => l_array_reference_date_4(Idx)
409495       ,p_event_created_by         => l_array_event_created_by(Idx)
409496       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
409497        --
409498 END IF;
409499 
409500 
409501 
409502 --
409503 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
409504 
409505 l_acct_reversal_source := SUBSTR(NULL, 1,30);
409506 
409507 IF l_continue_with_lines THEN
409508    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
409509       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
409510 
409511       xla_accounting_err_pkg.build_message
409512          (p_appli_s_name            => 'XLA'
409513          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
409514          ,p_token_1                 => 'LINE_NUMBER'
409515          ,p_value_1                 => l_array_extract_line_num(Idx)
409516          ,p_token_2                 => 'PRODUCT_NAME'
409517          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
409518          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
409519          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
409520          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
409521 
409522    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
409523       --
409524       -- following sets the accounting attributes needed to reverse
409525       -- accounting for a distributeion
409526       --
409527 
409528       --
409529       -- 5217187
409530       --
409531       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
409532       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
409533                                        g_array_event(l_event_id).array_value_num('header_index'));
409534       --
409535       --
409536 
409537       -- No reversal code generated
409538 
409539       xla_ae_lines_pkg.SetAcctReversalAttrs
409540          (p_event_id             => l_event_id
409541          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
409542          ,p_calculate_acctd_flag => l_calculate_acctd_flag
409543          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
409544    END IF;
409545 
409546    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
409547        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
409548 
409549 --
409550 AcctLineType_188 (
409551  p_application_id  => p_application_id
409552  ,p_event_id     => l_event_id
409553  ,p_calculate_acctd_flag => l_calculate_acctd_flag
409554  ,p_calculate_g_l_flag => l_calculate_g_l_flag
409555  ,p_actual_flag => l_actual_flag
409556  ,p_balance_type_code => l_balance_type_code
409557  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
409558  
409559  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
409560  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
409561  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
409562  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
409563  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
409564  , p_source_59 => g_array_event(l_event_id).array_value_num('source_59')
409565  , p_source_84 => l_array_source_84(Idx)
409566  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
409567  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
409568  , p_source_88 => l_array_source_88(Idx)
409569  , p_source_91 => l_array_source_91(Idx)
409570  , p_source_92 => l_array_source_92(Idx)
409571  , p_source_93 => l_array_source_93(Idx)
409572  , p_source_94 => l_array_source_94(Idx)
409573  , p_source_95 => l_array_source_95(Idx)
409574  , p_source_97 => l_array_source_97(Idx)
409575  );
409576 If(l_balance_type_code = 'A') THEN
409577   l_actual_gain_loss_ref := l_gain_or_loss_ref;
409578 END IF;
409579 
409580 --
409581 
409582 
409583 --
409584 AcctLineType_247 (
409585  p_application_id  => p_application_id
409586  ,p_event_id     => l_event_id
409587  ,p_calculate_acctd_flag => l_calculate_acctd_flag
409588  ,p_calculate_g_l_flag => l_calculate_g_l_flag
409589  ,p_actual_flag => l_actual_flag
409590  ,p_balance_type_code => l_balance_type_code
409591  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
409592  
409593  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
409594  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
409595  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
409596  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
409597  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
409598  , p_source_15 => l_array_source_15(Idx)
409599  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
409600  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
409601  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
409602  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
409603  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
409604  , p_source_84 => l_array_source_84(Idx)
409605  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
409606  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
409607  , p_source_88 => l_array_source_88(Idx)
409608  , p_source_91 => l_array_source_91(Idx)
409609  , p_source_92 => l_array_source_92(Idx)
409610  , p_source_93 => l_array_source_93(Idx)
409611  , p_source_94 => l_array_source_94(Idx)
409612  , p_source_95 => l_array_source_95(Idx)
409613  , p_source_97 => l_array_source_97(Idx)
409614  , p_source_108 => l_array_source_108(Idx)
409615  );
409616 If(l_balance_type_code = 'A') THEN
409617   l_actual_gain_loss_ref := l_gain_or_loss_ref;
409618 END IF;
409619 
409620 --
409621 
409622 
409623 --
409624 AcctLineType_394 (
409625  p_application_id  => p_application_id
409626  ,p_event_id     => l_event_id
409627  ,p_calculate_acctd_flag => l_calculate_acctd_flag
409628  ,p_calculate_g_l_flag => l_calculate_g_l_flag
409629  ,p_actual_flag => l_actual_flag
409630  ,p_balance_type_code => l_balance_type_code
409631  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
409632  
409633  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
409634  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
409635  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
409636  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
409637  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
409638  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
409639  , p_source_84 => l_array_source_84(Idx)
409640  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
409641  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
409642  , p_source_88 => l_array_source_88(Idx)
409643  , p_source_91 => l_array_source_91(Idx)
409644  , p_source_92 => l_array_source_92(Idx)
409645  , p_source_93 => l_array_source_93(Idx)
409646  , p_source_94 => l_array_source_94(Idx)
409647  , p_source_95 => l_array_source_95(Idx)
409648  , p_source_97 => l_array_source_97(Idx)
409649  );
409650 If(l_balance_type_code = 'A') THEN
409651   l_actual_gain_loss_ref := l_gain_or_loss_ref;
409652 END IF;
409653 
409654 --
409655 
409656 
409657 --
409658 AcctLineType_454 (
409659  p_application_id  => p_application_id
409660  ,p_event_id     => l_event_id
409661  ,p_calculate_acctd_flag => l_calculate_acctd_flag
409662  ,p_calculate_g_l_flag => l_calculate_g_l_flag
409663  ,p_actual_flag => l_actual_flag
409664  ,p_balance_type_code => l_balance_type_code
409665  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
409666  
409667  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
409668  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
409669  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
409670  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
409671  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
409672  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
409673  , p_source_84 => l_array_source_84(Idx)
409674  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
409675  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
409676  , p_source_88 => l_array_source_88(Idx)
409677  , p_source_91 => l_array_source_91(Idx)
409678  , p_source_92 => l_array_source_92(Idx)
409679  , p_source_93 => l_array_source_93(Idx)
409680  , p_source_94 => l_array_source_94(Idx)
409681  , p_source_95 => l_array_source_95(Idx)
409682  , p_source_97 => l_array_source_97(Idx)
409683  );
409684 If(l_balance_type_code = 'A') THEN
409685   l_actual_gain_loss_ref := l_gain_or_loss_ref;
409686 END IF;
409687 
409688 --
409689 
409690       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
409691       -- or secondary ledger that has different currency with primary
409692       -- or alc that is calculated by sla
409693       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
409694             (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'))
409695 
409696 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
409697 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
409698           AND (l_actual_flag = 'A')) THEN
409699         XLA_AE_LINES_PKG.CreateGainOrLossLines(
409700           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
409701          ,p_application_id   => p_application_id
409702          ,p_amb_context_code => 'DEFAULT'
409703          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
409704          ,p_event_class_code => C_EVENT_CLASS_CODE
409705          ,p_event_type_code  => C_EVENT_TYPE_CODE
409706          
409707          ,p_gain_ccid        => -1
409708          ,p_loss_ccid        => -1
409709 
409710          ,p_actual_flag      => l_actual_flag
409711          ,p_enc_flag         => null
409712          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
409713          ,p_enc_g_l_ref      => null
409714          );
409715       END IF;
409716    END IF;
409717 END IF;
409718 
409719    ELSE
409720       --
409721       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
409722       --
409723       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
409724          trace
409725             (p_msg      => 'Trancaction revesal option is Y'
409726             ,p_level    => C_LEVEL_STATEMENT
409727             ,p_module   => l_log_module);
409728       END IF;
409729    END IF;
409730 
409731 END LOOP;
409732 l_result := XLA_AE_LINES_PKG.InsertLines ;
409733 end loop;
409734 close line_cur;
409735 
409736 
409737 --
409738 -- insert headers into xla_ae_headers_gt table
409739 --
409740 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
409741 
409742 -- insert into errors table here.
409743 
409744 END LOOP;
409745 
409746 --
409747 -- 4865292
409748 --
409749 -- Compare g_hdr_extract_count with event count in
409750 -- CreateHeadersAndLines.
409751 --
409752 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
409753 
409754 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
409755    trace (p_msg     => '# rows extracted from header extract objects '
409756                     || ' (running total): '
409757                     || g_hdr_extract_count
409758          ,p_level   => C_LEVEL_STATEMENT
409759          ,p_module  => l_log_module);
409760 END IF;
409761 
409762 CLOSE header_cur;
409763 --
409764 
409765 --
409766 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
409767    trace
409768       (p_msg      => 'END of EventType_610'
409769       ,p_level    => C_LEVEL_PROCEDURE
409770       ,p_module   => l_log_module);
409771 END IF;
409772 --
409773 RETURN l_result;
409774 EXCEPTION
409775 WHEN xla_exceptions_pkg.application_exception THEN
409776    
409777 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
409778 
409779    
409780 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
409781 
409782    RAISE;
409783 
409784 WHEN NO_DATA_FOUND THEN
409785 
409786 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
409787 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
409788 
409789 FOR header_record IN header_cur
409790 LOOP
409791     l_array_header_events(header_record.event_id) := header_record.event_id;
409792 END LOOP;
409793 
409794 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
409795 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
409796 
409797 fnd_file.put_line(fnd_file.LOG, '                    ');
409798 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
409799 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
409800 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
409801 
409802 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
409803 LOOP
409804 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
409805 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
409806         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
409807 	END IF;
409808 END LOOP;
409809 
409810 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
409811 fnd_file.put_line(fnd_file.LOG, '                    ');
409812 
409813 
409814 xla_exceptions_pkg.raise_message
409815       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_610');
409816 
409817 
409818 WHEN OTHERS THEN
409819    xla_exceptions_pkg.raise_message
409820       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_610');
409821 END EventType_610;
409822 --
409823 
409824 ---------------------------------------
409825 --
409826 -- PRIVATE PROCEDURE
409827 --         insert_sources_611
409828 --
409829 ----------------------------------------
409830 --
409831 PROCEDURE insert_sources_611(
409832                                 p_target_ledger_id       IN NUMBER
409833                               , p_language               IN VARCHAR2
409834                               , p_sla_ledger_id          IN NUMBER
409835                               , p_pad_start_date         IN DATE
409836                               , p_pad_end_date           IN DATE
409837                          )
409838 IS
409839 
409840 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UIPV_TXFR';
409841 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
409842 p_apps_owner                   VARCHAR2(30);
409843 l_log_module                   VARCHAR2(240);
409844 BEGIN
409845 IF g_log_enabled THEN
409846       l_log_module := C_DEFAULT_MODULE||'.insert_sources_611';
409847 END IF;
409848 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
409849 
409850       trace
409851          (p_msg      => 'BEGIN of insert_sources_611'
409852          ,p_level    => C_LEVEL_PROCEDURE
409853          ,p_module   => l_log_module);
409854 
409855 END IF;
409856 
409857 -- select APPS owner
409858 SELECT oracle_username
409859   INTO p_apps_owner
409860   FROM fnd_oracle_userid
409861  WHERE read_only_flag = 'U'
409862 ;
409863 
409864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
409865       trace
409866          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
409867                         ' - p_language = '||p_language||
409868                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
409869                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
409870                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
409871                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
409872          ,p_level    => C_LEVEL_STATEMENT
409873          ,p_module   => l_log_module);
409874 END IF;
409875 
409876 
409877 --
409878 INSERT INTO xla_diag_sources --hdr1
409879 (
409880         event_id
409881       , ledger_id
409882       , sla_ledger_id
409883       , description_language
409884       , object_name
409885       , object_type_code
409886       , line_number
409887       , source_application_id
409888       , source_type_code
409889       , source_code
409890       , source_value
409891       , source_meaning
409892       , created_by
409893       , creation_date
409894       , last_update_date
409895       , last_updated_by
409896       , last_update_login
409897       , program_update_date
409898       , program_application_id
409899       , program_id
409900       , request_id
409901 )
409902 SELECT
409903         event_id
409904       , p_target_ledger_id
409905       , p_sla_ledger_id
409906       , p_language
409907       , object_name
409908       , object_type_code
409909       , line_number
409910       , source_application_id
409911       , source_type_code
409912       , source_code
409913       , SUBSTR(source_value ,1,1996)
409914       , SUBSTR(source_meaning,1,200)
409915       , xla_environment_pkg.g_Usr_Id
409916       , TRUNC(SYSDATE)
409917       , TRUNC(SYSDATE)
409918       , xla_environment_pkg.g_Usr_Id
409919       , xla_environment_pkg.g_Login_Id
409920       , TRUNC(SYSDATE)
409921       , xla_environment_pkg.g_Prog_Appl_Id
409922       , xla_environment_pkg.g_Prog_Id
409923       , xla_environment_pkg.g_Req_Id
409924   FROM (
409925        SELECT xet.event_id                  event_id
409926             , 0                             line_number
409927             , CASE r
409928                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
409929                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
409930                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
409931                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
409932                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
409933                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
409934                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
409935                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
409936                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
409937                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
409938                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
409939                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
409940                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
409941                 WHEN 14 THEN 'CST_XLA_INV_HEADERS_V' 
409942                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
409943                 WHEN 16 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
409944                 WHEN 17 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
409945                 WHEN 18 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
409946                 WHEN 19 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
409947                 WHEN 20 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
409948                 WHEN 21 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
409949                 WHEN 22 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
409950                 WHEN 23 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
409951                 WHEN 24 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
409952                 WHEN 25 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
409953                 WHEN 26 THEN 'CST_XLA_INV_HEADERS_V' 
409954                 WHEN 27 THEN 'CST_XLA_INV_HEADERS_V' 
409955                 
409956                ELSE null
409957               END                           object_name
409958             , CASE r
409959                 WHEN 1 THEN 'HEADER' 
409960                 WHEN 2 THEN 'HEADER' 
409961                 WHEN 3 THEN 'HEADER' 
409962                 WHEN 4 THEN 'HEADER' 
409963                 WHEN 5 THEN 'HEADER' 
409964                 WHEN 6 THEN 'HEADER' 
409965                 WHEN 7 THEN 'HEADER' 
409966                 WHEN 8 THEN 'HEADER' 
409967                 WHEN 9 THEN 'HEADER' 
409968                 WHEN 10 THEN 'HEADER' 
409969                 WHEN 11 THEN 'HEADER' 
409970                 WHEN 12 THEN 'HEADER' 
409971                 WHEN 13 THEN 'HEADER' 
409972                 WHEN 14 THEN 'HEADER' 
409973                 WHEN 15 THEN 'HEADER' 
409974                 WHEN 16 THEN 'HEADER' 
409975                 WHEN 17 THEN 'HEADER' 
409976                 WHEN 18 THEN 'HEADER' 
409977                 WHEN 19 THEN 'HEADER' 
409978                 WHEN 20 THEN 'HEADER' 
409979                 WHEN 21 THEN 'HEADER' 
409980                 WHEN 22 THEN 'HEADER' 
409981                 WHEN 23 THEN 'HEADER' 
409982                 WHEN 24 THEN 'HEADER' 
409983                 WHEN 25 THEN 'HEADER' 
409984                 WHEN 26 THEN 'HEADER' 
409985                 WHEN 27 THEN 'HEADER' 
409986                 
409987                 ELSE null
409988               END                           object_type_code
409989             , CASE r
409990                 WHEN 1 THEN '707' 
409991                 WHEN 2 THEN '707' 
409992                 WHEN 3 THEN '707' 
409993                 WHEN 4 THEN '707' 
409994                 WHEN 5 THEN '707' 
409995                 WHEN 6 THEN '707' 
409996                 WHEN 7 THEN '707' 
409997                 WHEN 8 THEN '707' 
409998                 WHEN 9 THEN '707' 
409999                 WHEN 10 THEN '707' 
410000                 WHEN 11 THEN '707' 
410001                 WHEN 12 THEN '707' 
410002                 WHEN 13 THEN '707' 
410003                 WHEN 14 THEN '707' 
410004                 WHEN 15 THEN '707' 
410005                 WHEN 16 THEN '707' 
410006                 WHEN 17 THEN '707' 
410007                 WHEN 18 THEN '707' 
410008                 WHEN 19 THEN '707' 
410009                 WHEN 20 THEN '707' 
410010                 WHEN 21 THEN '707' 
410011                 WHEN 22 THEN '707' 
410012                 WHEN 23 THEN '707' 
410013                 WHEN 24 THEN '707' 
410014                 WHEN 25 THEN '707' 
410015                 WHEN 26 THEN '707' 
410016                 WHEN 27 THEN '707' 
410017                 
410018                 ELSE null
410019               END                           source_application_id
410020             , 'S'             source_type_code
410021             , CASE r
410022                 WHEN 1 THEN 'TRANSACTION_ID' 
410023                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
410024                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
410025                 WHEN 4 THEN 'TRANSACTION_UOM' 
410026                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
410027                 WHEN 6 THEN 'INV_TXN_MATERIAL_ACCT' 
410028                 WHEN 7 THEN 'INV_TXN_MAT_OVHD_ACCT' 
410029                 WHEN 8 THEN 'INV_TXN_RESOURCE_ACCT' 
410030                 WHEN 9 THEN 'INV_TXN_OUT_PROC_ACCT' 
410031                 WHEN 10 THEN 'INV_TXN_OVERHEAD_ACCT' 
410032                 WHEN 11 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
410033                 WHEN 12 THEN 'PLA_ACV_ACCOUNT' 
410034                 WHEN 13 THEN 'H_TRANSFER_COST_GROUP_ID' 
410035                 WHEN 14 THEN 'H_COST_GROUP_ID' 
410036                 WHEN 15 THEN 'H_TRANSFER_SUBINVENTORY' 
410037                 WHEN 16 THEN 'PLA_MATERIAL_ACCOUNT' 
410038                 WHEN 17 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
410039                 WHEN 18 THEN 'PLA_RESOURCE_ACCOUNT' 
410040                 WHEN 19 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
410041                 WHEN 20 THEN 'PLA_OVERHEAD_ACCOUNT' 
410042                 WHEN 21 THEN 'TRF_PLA_MATERIAL_ACCT' 
410043                 WHEN 22 THEN 'TRF_PLA_MATERIAL_OVERHEAD_ACCT' 
410044                 WHEN 23 THEN 'TRF_PLA_RESOURCE_ACCT' 
410045                 WHEN 24 THEN 'TRF_PLA_OUTSIDE_PROCESS_ACCT' 
410046                 WHEN 25 THEN 'TRF_PLA_OVERHEAD_ACCT' 
410047                 WHEN 26 THEN 'DISTRIBUTION_TYPE' 
410048                 WHEN 27 THEN 'TRANSFER_TO_GL_INDICATOR' 
410049                 
410050                 ELSE null
410051               END                           source_code
410052             , CASE r
410053                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
410054                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
410055                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
410056                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
410057                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
410058                 WHEN 6 THEN TO_CHAR(h3.INV_TXN_MATERIAL_ACCT)
410059                 WHEN 7 THEN TO_CHAR(h3.INV_TXN_MAT_OVHD_ACCT)
410060                 WHEN 8 THEN TO_CHAR(h3.INV_TXN_RESOURCE_ACCT)
410061                 WHEN 9 THEN TO_CHAR(h3.INV_TXN_OUT_PROC_ACCT)
410062                 WHEN 10 THEN TO_CHAR(h3.INV_TXN_OVERHEAD_ACCT)
410063                 WHEN 11 THEN TO_CHAR(h3.INV_TXN_DISTRIBUTION_ACCT)
410064                 WHEN 12 THEN TO_CHAR(h6.PLA_ACV_ACCOUNT)
410065                 WHEN 13 THEN TO_CHAR(h1.H_TRANSFER_COST_GROUP_ID)
410066                 WHEN 14 THEN TO_CHAR(h1.H_COST_GROUP_ID)
410067                 WHEN 15 THEN TO_CHAR(h1.H_TRANSFER_SUBINVENTORY)
410068                 WHEN 16 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
410069                 WHEN 17 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
410070                 WHEN 18 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
410071                 WHEN 19 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
410072                 WHEN 20 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
410073                 WHEN 21 THEN TO_CHAR(h7.TRF_PLA_MATERIAL_ACCT)
410074                 WHEN 22 THEN TO_CHAR(h7.TRF_PLA_MATERIAL_OVERHEAD_ACCT)
410075                 WHEN 23 THEN TO_CHAR(h7.TRF_PLA_RESOURCE_ACCT)
410076                 WHEN 24 THEN TO_CHAR(h7.TRF_PLA_OUTSIDE_PROCESS_ACCT)
410077                 WHEN 25 THEN TO_CHAR(h7.TRF_PLA_OVERHEAD_ACCT)
410078                 WHEN 26 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
410079                 WHEN 27 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
410080                 
410081                 ELSE null
410082               END                           source_value
410083             , CASE r
410084                 WHEN 26 THEN fvl85.meaning
410085                 WHEN 27 THEN fvl114.meaning
410086                 
410087                 ELSE null
410088               END               source_meaning
410089         FROM xla_events_gt     xet  
410090       , CST_XLA_INV_HEADERS_V  h1
410091       , CST_XLA_INV_REF_V  h3
410092       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
410093       , CST_XLA_INV_TXN_TYPES_REF_V  h5
410094       , CST_XLA_PLA_CATEGORY_REF_V  h6
410095       , CST_XLA_TRF_PLA_CAT_REF_V  h7
410096   , fnd_lookup_values    fvl85
410097   , fnd_lookup_values    fvl114
410098             ,(select rownum r from all_objects where rownum <= 27 and owner = p_apps_owner)
410099        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
410100          AND xet.event_type_code = C_EVENT_TYPE_CODE
410101             AND h1.event_id = xet.event_id
410102  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id  (+) = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id  and h6.pla_cat_item_id   (+) = h1.inventory_item_id  and h6.pla_subinv_cg   (+) = h1.h_subinv_cg AND h7.trf_pla_cat_organization_id  (+) = h1.transfer_organization_id  and h7.trf_pla_cat_item_id  (+) = h1.inventory_item_id  and h7.trf_pla_subinv_cg  (+) = h1.h_trf_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
410103   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
410104   AND fvl85.view_application_id(+) = 700
410105   AND fvl85.language(+)            = USERENV('LANG')
410106      AND fvl114.lookup_type(+)         = 'YES_NO'
410107   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
410108   AND fvl114.view_application_id(+) = 0
410109   AND fvl114.language(+)            = USERENV('LANG')
410110   
410111 )
410112 ;
410113 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
410114 
410115       trace
410116          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
410117          ,p_level    => C_LEVEL_STATEMENT
410118          ,p_module   => l_log_module);
410119 
410120 END IF;
410121 --
410122 
410123 
410124 
410125 --
410126 INSERT INTO xla_diag_sources --line1
410127 (
410128         event_id
410129       , ledger_id
410130       , sla_ledger_id
410131       , description_language
410132       , object_name
410133       , object_type_code
410134       , line_number
410135       , source_application_id
410136       , source_type_code
410137       , source_code
410138       , source_value
410139       , source_meaning
410140       , created_by
410141       , creation_date
410142       , last_update_date
410143       , last_updated_by
410144       , last_update_login
410145       , program_update_date
410146       , program_application_id
410147       , program_id
410148       , request_id
410149 )
410150 SELECT  event_id
410151       , p_target_ledger_id
410152       , p_sla_ledger_id
410153       , p_language
410154       , object_name
410155       , object_type_code
410156       , line_number
410157       , source_application_id
410158       , source_type_code
410159       , source_code
410160       , SUBSTR(source_value,1,1996)
410161       , SUBSTR(source_meaning,1,200)
410162       , xla_environment_pkg.g_Usr_Id
410163       , TRUNC(SYSDATE)
410164       , TRUNC(SYSDATE)
410165       , xla_environment_pkg.g_Usr_Id
410166       , xla_environment_pkg.g_Login_Id
410167       , TRUNC(SYSDATE)
410168       , xla_environment_pkg.g_Prog_Appl_Id
410169       , xla_environment_pkg.g_Prog_Id
410170       , xla_environment_pkg.g_Req_Id
410171   FROM (
410172        SELECT xet.event_id                  event_id
410173             , l2.line_number                 line_number
410174             , CASE r
410175                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
410176                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
410177                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
410178                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
410179                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
410180                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
410181                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
410182                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
410183                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
410184                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
410185                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
410186                 WHEN 12 THEN 'CST_XLA_INV_LINES_V' 
410187                 
410188                ELSE null
410189               END                           object_name
410190             , CASE r
410191                 WHEN 1 THEN 'LINE' 
410192                 WHEN 2 THEN 'LINE' 
410193                 WHEN 3 THEN 'LINE' 
410194                 WHEN 4 THEN 'LINE' 
410195                 WHEN 5 THEN 'LINE' 
410196                 WHEN 6 THEN 'LINE' 
410197                 WHEN 7 THEN 'LINE' 
410198                 WHEN 8 THEN 'LINE' 
410199                 WHEN 9 THEN 'LINE' 
410200                 WHEN 10 THEN 'LINE' 
410201                 WHEN 11 THEN 'LINE' 
410202                 WHEN 12 THEN 'LINE' 
410203                 
410204                 ELSE null
410205               END                           object_type_code
410206             , CASE r
410207                 WHEN 1 THEN '707' 
410208                 WHEN 2 THEN '707' 
410209                 WHEN 3 THEN '707' 
410210                 WHEN 4 THEN '707' 
410211                 WHEN 5 THEN '707' 
410212                 WHEN 6 THEN '707' 
410213                 WHEN 7 THEN '707' 
410214                 WHEN 8 THEN '707' 
410215                 WHEN 9 THEN '707' 
410216                 WHEN 10 THEN '707' 
410217                 WHEN 11 THEN '707' 
410218                 WHEN 12 THEN '707' 
410219                 
410220                 ELSE null
410221               END                           source_application_id
410222             , 'S'             source_type_code
410223             , CASE r
410224                 WHEN 1 THEN 'COST_ELEMENT_ID' 
410225                 WHEN 2 THEN 'COST_GROUP_ID' 
410226                 WHEN 3 THEN 'SUBINVENTORY_CODE' 
410227                 WHEN 4 THEN 'DISTRIBUTION_IDENTIFIER' 
410228                 WHEN 5 THEN 'CURRENCY_CODE' 
410229                 WHEN 6 THEN 'ENTERED_AMOUNT' 
410230                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
410231                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
410232                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
410233                 WHEN 10 THEN 'ACCOUNTED_AMOUNT' 
410234                 WHEN 11 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
410235                 WHEN 12 THEN 'L_ORGANIZATION_CODE' 
410236                 
410237                 ELSE null
410238               END                           source_code
410239             , CASE r
410240                 WHEN 1 THEN TO_CHAR(l2.COST_ELEMENT_ID)
410241                 WHEN 2 THEN TO_CHAR(l2.COST_GROUP_ID)
410242                 WHEN 3 THEN TO_CHAR(l2.SUBINVENTORY_CODE)
410243                 WHEN 4 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
410244                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
410245                 WHEN 6 THEN TO_CHAR(l2.ENTERED_AMOUNT)
410246                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
410247                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
410248                 WHEN 9 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
410249                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
410250                 WHEN 11 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
410251                 WHEN 12 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
410252                 
410253                 ELSE null
410254               END                           source_value
410255             , CASE r
410256                 WHEN 1 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
410257                           1009615
410258                          ,TO_CHAR(l2.COST_ELEMENT_ID)
410259                          ,'COST_ELEMENT_ID'
410260                          ,'S'
410261                          ,707)
410262                 WHEN 3 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
410263                           1009622
410264                          ,TO_CHAR(l2.SUBINVENTORY_CODE)
410265                          ,'SUBINVENTORY_CODE'
410266                          ,'S'
410267                          ,707)
410268                 
410269                 ELSE null
410270               END               source_meaning
410271          FROM  xla_events_gt     xet  
410272         , CST_XLA_INV_LINES_V  l2
410273             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
410274         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
410275           AND xet.event_type_code = C_EVENT_TYPE_CODE
410276             AND l2.event_id          = xet.event_id
410277 
410278 )
410279 ;
410280 --
410281 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
410282 
410283       trace
410284          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
410285          ,p_level    => C_LEVEL_STATEMENT
410286          ,p_module   => l_log_module);
410287 
410288 END IF;
410289 
410290 
410291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
410292       trace
410293          (p_msg      => 'END of insert_sources_611'
410294          ,p_level    => C_LEVEL_PROCEDURE
410295          ,p_module   => l_log_module);
410296 END IF;
410297 EXCEPTION
410298   WHEN xla_exceptions_pkg.application_exception THEN
410299       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
410300             trace
410301                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
410302                ,p_level    => C_LEVEL_EXCEPTION
410303                ,p_module   => l_log_module);
410304       END IF;
410305       RAISE;
410306   WHEN OTHERS THEN
410307       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
410308             trace
410309                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
410310                ,p_level    => C_LEVEL_EXCEPTION
410311                ,p_module   => l_log_module);
410312        END IF;
410313        xla_exceptions_pkg.raise_message
410314            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_611');
410315 END insert_sources_611;
410316 --
410317 
410318 ---------------------------------------
410319 --
410320 -- PRIVATE FUNCTION
410321 --         EventType_611
410322 --
410323 ----------------------------------------
410324 --
410325 FUNCTION EventType_611
410326        (p_application_id         IN NUMBER
410327        ,p_base_ledger_id         IN NUMBER
410328        ,p_target_ledger_id       IN NUMBER
410329        ,p_language               IN VARCHAR2
410330        ,p_currency_code          IN VARCHAR2
410331        ,p_sla_ledger_id          IN NUMBER
410332        ,p_pad_start_date         IN DATE
410333        ,p_pad_end_date           IN DATE
410334        ,p_primary_ledger_id      IN NUMBER)
410335 RETURN BOOLEAN IS
410336 --
410337 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UIPV_TXFR';
410338 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
410339 
410340 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
410341 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
410342 --
410343 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410344 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410345 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
410346 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
410347 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410348 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
410349 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
410350 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410351 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
410352 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
410353 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410354 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410355 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410356 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
410357 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
410358 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
410359 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
410360 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
410361 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
410362 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
410363 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
410364 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
410365 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
410366 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
410367 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
410368 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
410369 
410370 l_event_id                             NUMBER;
410371 l_previous_event_id                    NUMBER;
410372 l_first_event_id                       NUMBER;
410373 l_last_event_id                        NUMBER;
410374 
410375 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
410376 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
410377 --
410378 --
410379 l_result                    BOOLEAN := TRUE;
410380 l_rows                      NUMBER  := 1000;
410381 l_event_type_name           VARCHAR2(80) := 'User-defined Invoice Price Variance Transfer';
410382 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
410383 l_description               VARCHAR2(4000);
410384 l_transaction_reversal      NUMBER;
410385 l_ae_header_id              NUMBER;
410386 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
410387 l_log_module                VARCHAR2(240);
410388 --
410389 l_acct_reversal_source      VARCHAR2(30);
410390 l_trx_reversal_source       VARCHAR2(30);
410391 
410392 l_continue_with_lines       BOOLEAN := TRUE;
410393 --
410394 l_acc_rev_gl_date_source    DATE;                      -- 4262811
410395 --
410396 type t_array_event_id is table of number index by binary_integer;
410397 
410398 l_rec_array_event                    t_rec_array_event;
410399 l_null_rec_array_event               t_rec_array_event;
410400 l_array_ae_header_id                 xla_number_array_type;
410401 l_actual_flag                        VARCHAR2(1) := NULL;
410402 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
410403 l_balance_type_code                  VARCHAR2(1) :=NULL;
410404 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
410405 
410406 --
410407 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
410408 --
410409 
410410 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
410411 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
410412 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
410413 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
410414 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
410415 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
410416 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_MAT_OVHD_ACCT%TYPE INDEX BY BINARY_INTEGER;
410417 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
410418 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_OUT_PROC_ACCT%TYPE INDEX BY BINARY_INTEGER;
410419 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
410420 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
410421 TYPE t_array_source_23 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_ACV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
410422 TYPE t_array_source_27 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
410423 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_HEADERS_V.H_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
410424 TYPE t_array_source_31 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_SUBINVENTORY%TYPE INDEX BY BINARY_INTEGER;
410425 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
410426 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
410427 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
410428 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
410429 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
410430 TYPE t_array_source_48 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
410431 TYPE t_array_source_49 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_MATERIAL_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
410432 TYPE t_array_source_50 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
410433 TYPE t_array_source_51 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_OUTSIDE_PROCESS_ACCT%TYPE INDEX BY BINARY_INTEGER;
410434 TYPE t_array_source_52 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
410435 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
410436 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
410437 
410438 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
410439 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_LINES_V.COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
410440 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_LINES_V.SUBINVENTORY_CODE%TYPE INDEX BY BINARY_INTEGER;
410441 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
410442 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
410443 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
410444 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
410445 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
410446 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
410447 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
410448 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
410449 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
410450 
410451 l_array_source_1              t_array_source_1;
410452 l_array_source_2              t_array_source_2;
410453 l_array_source_3              t_array_source_3;
410454 l_array_source_4              t_array_source_4;
410455 l_array_source_5              t_array_source_5;
410456 l_array_source_14              t_array_source_14;
410457 l_array_source_16              t_array_source_16;
410458 l_array_source_17              t_array_source_17;
410459 l_array_source_18              t_array_source_18;
410460 l_array_source_19              t_array_source_19;
410461 l_array_source_20              t_array_source_20;
410462 l_array_source_23              t_array_source_23;
410463 l_array_source_27              t_array_source_27;
410464 l_array_source_28              t_array_source_28;
410465 l_array_source_31              t_array_source_31;
410466 l_array_source_41              t_array_source_41;
410467 l_array_source_42              t_array_source_42;
410468 l_array_source_43              t_array_source_43;
410469 l_array_source_44              t_array_source_44;
410470 l_array_source_45              t_array_source_45;
410471 l_array_source_48              t_array_source_48;
410472 l_array_source_49              t_array_source_49;
410473 l_array_source_50              t_array_source_50;
410474 l_array_source_51              t_array_source_51;
410475 l_array_source_52              t_array_source_52;
410476 l_array_source_85              t_array_source_85;
410477 l_array_source_85_meaning      t_array_lookup_meaning;
410478 l_array_source_114              t_array_source_114;
410479 l_array_source_114_meaning      t_array_lookup_meaning;
410480 
410481 l_array_source_15      t_array_source_15;
410482 l_array_source_26      t_array_source_26;
410483 l_array_source_29      t_array_source_29;
410484 l_array_source_84      t_array_source_84;
410485 l_array_source_88      t_array_source_88;
410486 l_array_source_91      t_array_source_91;
410487 l_array_source_92      t_array_source_92;
410488 l_array_source_93      t_array_source_93;
410489 l_array_source_94      t_array_source_94;
410490 l_array_source_95      t_array_source_95;
410491 l_array_source_97      t_array_source_97;
410492 l_array_source_108      t_array_source_108;
410493 
410494 --
410495 CURSOR header_cur
410496 IS
410497 SELECT /*+ leading(xet) cardinality(xet,1) */
410498 -- Event Type Code: UIPV_TXFR
410499 -- Event Class Code: USER_DEFINE
410500     xet.entity_id
410501   , xet.legal_entity_id
410502   , xet.entity_code
410503   , xet.transaction_number
410504   , xet.event_id
410505   , xet.event_class_code
410506   , xet.event_type_code
410507   , xet.event_number
410508   , xet.event_date
410509   , xet.transaction_date
410510   , xet.reference_num_1
410511   , xet.reference_num_2
410512   , xet.reference_num_3
410513   , xet.reference_num_4
410514   , xet.reference_char_1
410515   , xet.reference_char_2
410516   , xet.reference_char_3
410517   , xet.reference_char_4
410518   , xet.reference_date_1
410519   , xet.reference_date_2
410520   , xet.reference_date_3
410521   , xet.reference_date_4
410522   , xet.event_created_by
410523   , xet.budgetary_control_flag 
410524   , h1.TRANSACTION_ID    source_1
410525   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
410526   , h3.TRANSACTION_QUANTITY    source_3
410527   , h3.TRANSACTION_UOM    source_4
410528   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
410529   , h3.INV_TXN_MATERIAL_ACCT    source_14
410530   , h3.INV_TXN_MAT_OVHD_ACCT    source_16
410531   , h3.INV_TXN_RESOURCE_ACCT    source_17
410532   , h3.INV_TXN_OUT_PROC_ACCT    source_18
410533   , h3.INV_TXN_OVERHEAD_ACCT    source_19
410534   , h3.INV_TXN_DISTRIBUTION_ACCT    source_20
410535   , h6.PLA_ACV_ACCOUNT    source_23
410536   , h1.H_TRANSFER_COST_GROUP_ID    source_27
410537   , h1.H_COST_GROUP_ID    source_28
410538   , h1.H_TRANSFER_SUBINVENTORY    source_31
410539   , h6.PLA_MATERIAL_ACCOUNT    source_41
410540   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
410541   , h6.PLA_RESOURCE_ACCOUNT    source_43
410542   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
410543   , h6.PLA_OVERHEAD_ACCOUNT    source_45
410544   , h7.TRF_PLA_MATERIAL_ACCT    source_48
410545   , h7.TRF_PLA_MATERIAL_OVERHEAD_ACCT    source_49
410546   , h7.TRF_PLA_RESOURCE_ACCT    source_50
410547   , h7.TRF_PLA_OUTSIDE_PROCESS_ACCT    source_51
410548   , h7.TRF_PLA_OVERHEAD_ACCT    source_52
410549   , h1.DISTRIBUTION_TYPE    source_85
410550   , fvl85.meaning   source_85_meaning
410551   , h1.TRANSFER_TO_GL_INDICATOR    source_114
410552   , fvl114.meaning   source_114_meaning
410553   FROM xla_events_gt     xet 
410554   , CST_XLA_INV_HEADERS_V  h1
410555   , CST_XLA_INV_REF_V  h3
410556   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
410557   , CST_XLA_INV_TXN_TYPES_REF_V  h5
410558   , CST_XLA_PLA_CATEGORY_REF_V  h6
410559   , CST_XLA_TRF_PLA_CAT_REF_V  h7
410560   , fnd_lookup_values    fvl85
410561   , fnd_lookup_values    fvl114
410562  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
410563    and xet.event_type_code = C_EVENT_TYPE_CODE
410564    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
410565  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID  (+) = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID  AND h6.PLA_CAT_ITEM_ID   (+) = h1.INVENTORY_ITEM_ID  AND h6.PLA_SUBINV_CG   (+) = h1.H_SUBINV_CG AND h7.TRF_PLA_CAT_ORGANIZATION_ID  (+) = h1.TRANSFER_ORGANIZATION_ID  AND h7.TRF_PLA_CAT_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h7.TRF_PLA_SUBINV_CG  (+) = h1.H_TRF_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
410566   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
410567   AND fvl85.view_application_id(+) = 700
410568   AND fvl85.language(+)            = USERENV('LANG')
410569      AND fvl114.lookup_type(+)         = 'YES_NO'
410570   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
410571   AND fvl114.view_application_id(+) = 0
410572   AND fvl114.language(+)            = USERENV('LANG')
410573   
410574  ORDER BY event_id
410575 ;
410576 
410577 
410578 --
410579 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
410580 IS
410581 SELECT /*+ leading(xet) cardinality(xet,1) */
410582 -- Event Type Code: UIPV_TXFR
410583 -- Event Class Code: USER_DEFINE
410584     xet.entity_id
410585    ,xet.legal_entity_id
410586    ,xet.entity_code
410587    ,xet.transaction_number
410588    ,xet.event_id
410589    ,xet.event_class_code
410590    ,xet.event_type_code
410591    ,xet.event_number
410592    ,xet.event_date
410593    ,xet.transaction_date
410594    ,xet.reference_num_1
410595    ,xet.reference_num_2
410596    ,xet.reference_num_3
410597    ,xet.reference_num_4
410598    ,xet.reference_char_1
410599    ,xet.reference_char_2
410600    ,xet.reference_char_3
410601    ,xet.reference_char_4
410602    ,xet.reference_date_1
410603    ,xet.reference_date_2
410604    ,xet.reference_date_3
410605    ,xet.reference_date_4
410606    ,xet.event_created_by
410607    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
410608   , l2.COST_ELEMENT_ID    source_15
410609   , l2.COST_GROUP_ID    source_26
410610   , l2.SUBINVENTORY_CODE    source_29
410611   , l2.DISTRIBUTION_IDENTIFIER    source_84
410612   , l2.CURRENCY_CODE    source_88
410613   , l2.ENTERED_AMOUNT    source_91
410614   , l2.CURRENCY_CONVERSION_DATE    source_92
410615   , l2.CURRENCY_CONVERSION_RATE    source_93
410616   , l2.CURRENCY_CONVERSION_TYPE    source_94
410617   , l2.ACCOUNTED_AMOUNT    source_95
410618   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
410619   , l2.L_ORGANIZATION_CODE    source_108
410620   FROM xla_events_gt     xet 
410621   , CST_XLA_INV_LINES_V  l2
410622  WHERE xet.event_id between x_first_event_id and x_last_event_id
410623    and xet.event_date between p_pad_start_date and p_pad_end_date
410624    and xet.event_type_code = C_EVENT_TYPE_CODE
410625    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
410626 ;
410627 
410628 --
410629 BEGIN
410630 IF g_log_enabled THEN
410631    l_log_module := C_DEFAULT_MODULE||'.EventType_611';
410632 END IF;
410633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
410634    trace
410635       (p_msg      => 'BEGIN of EventType_611'
410636       ,p_level    => C_LEVEL_PROCEDURE
410637       ,p_module   => l_log_module);
410638 END IF;
410639 
410640 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
410641    trace
410642       (p_msg      => 'p_application_id = '||p_application_id||
410643                      ' - p_base_ledger_id = '||p_base_ledger_id||
410644                      ' - p_target_ledger_id  = '||p_target_ledger_id||
410645                      ' - p_language = '||p_language||
410646                      ' - p_currency_code = '||p_currency_code||
410647                      ' - p_sla_ledger_id = '||p_sla_ledger_id
410648       ,p_level    => C_LEVEL_STATEMENT
410649       ,p_module   => l_log_module);
410650 END IF;
410651 --
410652 -- initialze arrays
410653 --
410654 g_array_event.DELETE;
410655 l_rec_array_event := l_null_rec_array_event;
410656 --
410657 --------------------------------------
410658 -- 4262811 Initialze MPA Line Number
410659 --------------------------------------
410660 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
410661 
410662 --
410663 
410664 --
410665 OPEN header_cur;
410666 --
410667 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
410668    trace
410669    (p_msg      => 'SQL - FETCH header_cur'
410670    ,p_level    => C_LEVEL_STATEMENT
410671    ,p_module   => l_log_module);
410672 END IF;
410673 --
410674 LOOP
410675 FETCH header_cur BULK COLLECT INTO
410676         l_array_entity_id
410677       , l_array_legal_entity_id
410678       , l_array_entity_code
410679       , l_array_transaction_num
410680       , l_array_event_id
410681       , l_array_class_code
410682       , l_array_event_type
410683       , l_array_event_number
410684       , l_array_event_date
410685       , l_array_transaction_date
410686       , l_array_reference_num_1
410687       , l_array_reference_num_2
410688       , l_array_reference_num_3
410689       , l_array_reference_num_4
410690       , l_array_reference_char_1
410691       , l_array_reference_char_2
410692       , l_array_reference_char_3
410693       , l_array_reference_char_4
410694       , l_array_reference_date_1
410695       , l_array_reference_date_2
410696       , l_array_reference_date_3
410697       , l_array_reference_date_4
410698       , l_array_event_created_by
410699       , l_array_budgetary_control_flag 
410700       , l_array_source_1
410701       , l_array_source_2
410702       , l_array_source_3
410703       , l_array_source_4
410704       , l_array_source_5
410705       , l_array_source_14
410706       , l_array_source_16
410707       , l_array_source_17
410708       , l_array_source_18
410709       , l_array_source_19
410710       , l_array_source_20
410711       , l_array_source_23
410712       , l_array_source_27
410713       , l_array_source_28
410714       , l_array_source_31
410715       , l_array_source_41
410716       , l_array_source_42
410717       , l_array_source_43
410718       , l_array_source_44
410719       , l_array_source_45
410720       , l_array_source_48
410721       , l_array_source_49
410722       , l_array_source_50
410723       , l_array_source_51
410724       , l_array_source_52
410725       , l_array_source_85
410726       , l_array_source_85_meaning
410727       , l_array_source_114
410728       , l_array_source_114_meaning
410729       LIMIT l_rows;
410730 --
410731 IF (C_LEVEL_EVENT >= g_log_level) THEN
410732    trace
410733    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
410734    ,p_level    => C_LEVEL_EVENT
410735    ,p_module   => l_log_module);
410736 END IF;
410737 --
410738 EXIT WHEN l_array_entity_id.COUNT = 0;
410739 
410740 -- initialize arrays
410741 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
410742 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
410743 
410744 --
410745 -- Bug 4458708
410746 --
410747 XLA_AE_LINES_PKG.g_LineNumber := 0;
410748 
410749 
410750 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
410751 g_last_hdr_idx := l_array_event_id.LAST;
410752 --
410753 -- loop for the headers. Each iteration is for each header extract row
410754 -- fetched in header cursor
410755 --
410756 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
410757 
410758 --
410759 -- set event info as cache for other routines to refer event attributes
410760 --
410761 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
410762    (p_application_id           => p_application_id
410763    ,p_primary_ledger_id        => p_primary_ledger_id
410764    ,p_base_ledger_id           => p_base_ledger_id
410765    ,p_target_ledger_id         => p_target_ledger_id
410766    ,p_entity_id                => l_array_entity_id(hdr_idx)
410767    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
410768    ,p_entity_code              => l_array_entity_code(hdr_idx)
410769    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
410770    ,p_event_id                 => l_array_event_id(hdr_idx)
410771    ,p_event_class_code         => l_array_class_code(hdr_idx)
410772    ,p_event_type_code          => l_array_event_type(hdr_idx)
410773    ,p_event_number             => l_array_event_number(hdr_idx)
410774    ,p_event_date               => l_array_event_date(hdr_idx)
410775    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
410776    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
410777    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
410778    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
410779    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
410780    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
410781    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
410782    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
410783    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
410784    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
410785    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
410786    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
410787    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
410788    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
410789    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
410790 
410791 --
410792 -- set the status of entry to C_VALID (0)
410793 --
410794 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
410795 
410796 --
410797 -- initialize a row for ae header
410798 --
410799 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
410800 
410801 l_event_id := l_array_event_id(hdr_idx);
410802 
410803 --
410804 -- storing the hdr_idx for event. May be used by line cursor.
410805 --
410806 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
410807 
410808 --
410809 -- store sources from header extract. This can be improved to
410810 -- store only those sources from header extract that may be used in lines
410811 --
410812 
410813 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
410814 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
410815 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
410816 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
410817 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
410818 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
410819 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
410820 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
410821 g_array_event(l_event_id).array_value_num('source_18') := l_array_source_18(hdr_idx);
410822 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
410823 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
410824 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
410825 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
410826 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
410827 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
410828 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
410829 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
410830 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
410831 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
410832 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
410833 g_array_event(l_event_id).array_value_num('source_48') := l_array_source_48(hdr_idx);
410834 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
410835 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
410836 g_array_event(l_event_id).array_value_num('source_51') := l_array_source_51(hdr_idx);
410837 g_array_event(l_event_id).array_value_num('source_52') := l_array_source_52(hdr_idx);
410838 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
410839 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
410840 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
410841 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
410842 
410843 --
410844 -- initilaize the status of ae headers for diffrent balance types
410845 -- the status is initialised to C_NOT_CREATED (2)
410846 --
410847 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
410848 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
410849 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
410850 
410851 --
410852 -- call api to validate and store accounting attributes for header
410853 --
410854 
410855 ------------------------------------------------------------
410856 -- Accrual Reversal : to get date for Standard Source (NONE)
410857 ------------------------------------------------------------
410858 l_acc_rev_gl_date_source := NULL;
410859 
410860      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
410861       l_rec_acct_attrs.array_date_value(1) := 
410862 xla_ae_sources_pkg.GetSystemSourceDate(
410863    p_source_code           => 'XLA_REFERENCE_DATE_1'
410864  , p_source_type_code      => 'Y'
410865  , p_source_application_id =>  602
410866 );
410867      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
410868       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
410869 
410870 
410871 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
410872 
410873 XLA_AE_HEADER_PKG.SetJeCategoryName;
410874 
410875 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
410876 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
410877 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
410878 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
410879 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
410880 
410881 
410882 -- No header level analytical criteria
410883 
410884 --
410885 --accounting attribute enhancement, bug 3612931
410886 --
410887 l_trx_reversal_source := SUBSTR(NULL, 1,30);
410888 
410889 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
410890    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
410891 
410892    xla_accounting_err_pkg.build_message
410893       (p_appli_s_name            => 'XLA'
410894       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
410895       ,p_token_1                 => 'ACCT_ATTR_NAME'
410896       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
410897       ,p_token_2                 => 'PRODUCT_NAME'
410898       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
410899       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
410900       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
410901       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
410902 
410903 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
410904    --
410905    -- following sets the accounting attributes needed to reverse
410906    -- accounting for a distributeion
410907    --
410908    xla_ae_lines_pkg.SetTrxReversalAttrs
410909       (p_event_id              => l_event_id
410910       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
410911       ,p_trx_reversal_source   => l_trx_reversal_source);
410912 
410913 END IF;
410914 
410915 
410916 ----------------------------------------------------------------
410917 -- 4262811 -  update the header statuses to invalid in need be
410918 ----------------------------------------------------------------
410919 --
410920 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
410921 
410922 
410923   -----------------------------------------------
410924   -- No accrual reversal for the event class/type
410925   -----------------------------------------------
410926 ----------------------------------------------------------------
410927 
410928 --
410929 -- this ends the header loop iteration for one bulk fetch
410930 --
410931 END LOOP;
410932 
410933 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
410934 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
410935 
410936 --
410937 -- insert dummy rows into lines gt table that were created due to
410938 -- transaction reversals
410939 --
410940 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
410941    l_result := XLA_AE_LINES_PKG.InsertLines;
410942 END IF;
410943 
410944 --
410945 -- reset the temp_line_num for each set of events fetched from header
410946 -- cursor rather than doing it for each new event in line cursor
410947 -- Bug 3939231
410948 --
410949 xla_ae_lines_pkg.g_temp_line_num := 0;
410950 
410951 
410952 
410953 --
410954 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
410955 --
410956 --
410957 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
410958 
410959       trace
410960          (p_msg      => 'SQL - FETCH line_cur'
410961          ,p_level    => C_LEVEL_STATEMENT
410962          ,p_module   => l_log_module);
410963 
410964 END IF;
410965 --
410966 --
410967 LOOP
410968   --
410969   FETCH line_cur BULK COLLECT INTO
410970         l_array_entity_id
410971       , l_array_legal_entity_id
410972       , l_array_entity_code
410973       , l_array_transaction_num
410974       , l_array_event_id
410975       , l_array_class_code
410976       , l_array_event_type
410977       , l_array_event_number
410978       , l_array_event_date
410979       , l_array_transaction_date
410980       , l_array_reference_num_1
410981       , l_array_reference_num_2
410982       , l_array_reference_num_3
410983       , l_array_reference_num_4
410984       , l_array_reference_char_1
410985       , l_array_reference_char_2
410986       , l_array_reference_char_3
410987       , l_array_reference_char_4
410988       , l_array_reference_date_1
410989       , l_array_reference_date_2
410990       , l_array_reference_date_3
410991       , l_array_reference_date_4
410992       , l_array_event_created_by
410993       , l_array_budgetary_control_flag
410994       , l_array_extract_line_num 
410995       , l_array_source_15
410996       , l_array_source_26
410997       , l_array_source_29
410998       , l_array_source_84
410999       , l_array_source_88
411000       , l_array_source_91
411001       , l_array_source_92
411002       , l_array_source_93
411003       , l_array_source_94
411004       , l_array_source_95
411005       , l_array_source_97
411006       , l_array_source_108
411007       LIMIT l_rows;
411008 
411009   --
411010   IF (C_LEVEL_EVENT >= g_log_level) THEN
411011             trace
411012                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
411013                ,p_level    => C_LEVEL_EVENT
411014                ,p_module   => l_log_module);
411015   END IF;
411016   --
411017   EXIT WHEN l_array_entity_id.count = 0;
411018 
411019   XLA_AE_LINES_PKG.g_rec_lines := null;
411020 
411021 --
411022 -- Bug 4458708
411023 --
411024 XLA_AE_LINES_PKG.g_LineNumber := 0;
411025 --
411026 --
411027 
411028 FOR Idx IN 1..l_array_event_id.count LOOP
411029    --
411030    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
411031    --
411032    l_event_id := l_array_event_id(idx);  -- 5648433
411033 
411034    --
411035    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
411036    --
411037 
411038    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
411039              (g_array_event(l_event_id).array_value_num('header_index'))
411040          ,'N'
411041          ) <> 'Y'
411042    THEN
411043       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
411044          trace
411045             (p_msg      => 'Trancaction revesal option is not Y '
411046             ,p_level    => C_LEVEL_STATEMENT
411047             ,p_module   => l_log_module);
411048       END IF;
411049 
411050 --
411051 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
411052 --
411053 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
411054 --
411055 -- set event info as cache for other routines to refer event attributes
411056 --
411057 
411058 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
411059    l_previous_event_id := l_event_id;
411060 
411061    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
411062       (p_application_id           => p_application_id
411063       ,p_primary_ledger_id        => p_primary_ledger_id
411064       ,p_base_ledger_id           => p_base_ledger_id
411065       ,p_target_ledger_id         => p_target_ledger_id
411066       ,p_entity_id                => l_array_entity_id(Idx)
411067       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
411068       ,p_entity_code              => l_array_entity_code(Idx)
411069       ,p_transaction_num          => l_array_transaction_num(Idx)
411070       ,p_event_id                 => l_array_event_id(Idx)
411071       ,p_event_class_code         => l_array_class_code(Idx)
411072       ,p_event_type_code          => l_array_event_type(Idx)
411073       ,p_event_number             => l_array_event_number(Idx)
411074       ,p_event_date               => l_array_event_date(Idx)
411075       ,p_transaction_date         => l_array_transaction_date(Idx)
411076       ,p_reference_num_1          => l_array_reference_num_1(Idx)
411077       ,p_reference_num_2          => l_array_reference_num_2(Idx)
411078       ,p_reference_num_3          => l_array_reference_num_3(Idx)
411079       ,p_reference_num_4          => l_array_reference_num_4(Idx)
411080       ,p_reference_char_1         => l_array_reference_char_1(Idx)
411081       ,p_reference_char_2         => l_array_reference_char_2(Idx)
411082       ,p_reference_char_3         => l_array_reference_char_3(Idx)
411083       ,p_reference_char_4         => l_array_reference_char_4(Idx)
411084       ,p_reference_date_1         => l_array_reference_date_1(Idx)
411085       ,p_reference_date_2         => l_array_reference_date_2(Idx)
411086       ,p_reference_date_3         => l_array_reference_date_3(Idx)
411087       ,p_reference_date_4         => l_array_reference_date_4(Idx)
411088       ,p_event_created_by         => l_array_event_created_by(Idx)
411089       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
411090        --
411091 END IF;
411092 
411093 
411094 
411095 --
411096 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
411097 
411098 l_acct_reversal_source := SUBSTR(NULL, 1,30);
411099 
411100 IF l_continue_with_lines THEN
411101    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
411102       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
411103 
411104       xla_accounting_err_pkg.build_message
411105          (p_appli_s_name            => 'XLA'
411106          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
411107          ,p_token_1                 => 'LINE_NUMBER'
411108          ,p_value_1                 => l_array_extract_line_num(Idx)
411109          ,p_token_2                 => 'PRODUCT_NAME'
411110          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
411111          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
411112          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
411113          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
411114 
411115    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
411116       --
411117       -- following sets the accounting attributes needed to reverse
411118       -- accounting for a distributeion
411119       --
411120 
411121       --
411122       -- 5217187
411123       --
411124       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
411125       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
411126                                        g_array_event(l_event_id).array_value_num('header_index'));
411127       --
411128       --
411129 
411130       -- No reversal code generated
411131 
411132       xla_ae_lines_pkg.SetAcctReversalAttrs
411133          (p_event_id             => l_event_id
411134          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
411135          ,p_calculate_acctd_flag => l_calculate_acctd_flag
411136          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
411137    END IF;
411138 
411139    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
411140        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
411141 
411142 --
411143 AcctLineType_76 (
411144  p_application_id  => p_application_id
411145  ,p_event_id     => l_event_id
411146  ,p_calculate_acctd_flag => l_calculate_acctd_flag
411147  ,p_calculate_g_l_flag => l_calculate_g_l_flag
411148  ,p_actual_flag => l_actual_flag
411149  ,p_balance_type_code => l_balance_type_code
411150  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
411151  
411152  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
411153  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
411154  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
411155  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
411156  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
411157  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
411158  , p_source_15 => l_array_source_15(Idx)
411159  , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
411160  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
411161  , p_source_18 => g_array_event(l_event_id).array_value_num('source_18')
411162  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
411163  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
411164  , p_source_84 => l_array_source_84(Idx)
411165  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
411166  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
411167  , p_source_88 => l_array_source_88(Idx)
411168  , p_source_91 => l_array_source_91(Idx)
411169  , p_source_92 => l_array_source_92(Idx)
411170  , p_source_93 => l_array_source_93(Idx)
411171  , p_source_94 => l_array_source_94(Idx)
411172  , p_source_95 => l_array_source_95(Idx)
411173  , p_source_97 => l_array_source_97(Idx)
411174  );
411175 If(l_balance_type_code = 'A') THEN
411176   l_actual_gain_loss_ref := l_gain_or_loss_ref;
411177 END IF;
411178 
411179 --
411180 
411181 
411182 --
411183 AcctLineType_111 (
411184  p_application_id  => p_application_id
411185  ,p_event_id     => l_event_id
411186  ,p_calculate_acctd_flag => l_calculate_acctd_flag
411187  ,p_calculate_g_l_flag => l_calculate_g_l_flag
411188  ,p_actual_flag => l_actual_flag
411189  ,p_balance_type_code => l_balance_type_code
411190  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
411191  
411192  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
411193  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
411194  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
411195  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
411196  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
411197  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
411198  , p_source_84 => l_array_source_84(Idx)
411199  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
411200  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
411201  , p_source_88 => l_array_source_88(Idx)
411202  , p_source_91 => l_array_source_91(Idx)
411203  , p_source_92 => l_array_source_92(Idx)
411204  , p_source_93 => l_array_source_93(Idx)
411205  , p_source_94 => l_array_source_94(Idx)
411206  , p_source_95 => l_array_source_95(Idx)
411207  , p_source_97 => l_array_source_97(Idx)
411208  );
411209 If(l_balance_type_code = 'A') THEN
411210   l_actual_gain_loss_ref := l_gain_or_loss_ref;
411211 END IF;
411212 
411213 --
411214 
411215 
411216 --
411217 AcctLineType_223 (
411218  p_application_id  => p_application_id
411219  ,p_event_id     => l_event_id
411220  ,p_calculate_acctd_flag => l_calculate_acctd_flag
411221  ,p_calculate_g_l_flag => l_calculate_g_l_flag
411222  ,p_actual_flag => l_actual_flag
411223  ,p_balance_type_code => l_balance_type_code
411224  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
411225  
411226  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
411227  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
411228  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
411229  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
411230  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
411231  , p_source_15 => l_array_source_15(Idx)
411232  , p_source_26 => l_array_source_26(Idx)
411233  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
411234  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
411235  , p_source_29 => l_array_source_29(Idx)
411236  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
411237  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
411238  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
411239  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
411240  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
411241  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
411242  , p_source_48 => g_array_event(l_event_id).array_value_num('source_48')
411243  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
411244  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
411245  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
411246  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
411247  , p_source_84 => l_array_source_84(Idx)
411248  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
411249  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
411250  , p_source_88 => l_array_source_88(Idx)
411251  , p_source_91 => l_array_source_91(Idx)
411252  , p_source_92 => l_array_source_92(Idx)
411253  , p_source_93 => l_array_source_93(Idx)
411254  , p_source_94 => l_array_source_94(Idx)
411255  , p_source_95 => l_array_source_95(Idx)
411256  , p_source_97 => l_array_source_97(Idx)
411257  );
411258 If(l_balance_type_code = 'A') THEN
411259   l_actual_gain_loss_ref := l_gain_or_loss_ref;
411260 END IF;
411261 
411262 --
411263 
411264 
411265 --
411266 AcctLineType_272 (
411267  p_application_id  => p_application_id
411268  ,p_event_id     => l_event_id
411269  ,p_calculate_acctd_flag => l_calculate_acctd_flag
411270  ,p_calculate_g_l_flag => l_calculate_g_l_flag
411271  ,p_actual_flag => l_actual_flag
411272  ,p_balance_type_code => l_balance_type_code
411273  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
411274  
411275  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
411276  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
411277  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
411278  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
411279  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
411280  , p_source_15 => l_array_source_15(Idx)
411281  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
411282  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
411283  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
411284  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
411285  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
411286  , p_source_84 => l_array_source_84(Idx)
411287  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
411288  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
411289  , p_source_88 => l_array_source_88(Idx)
411290  , p_source_91 => l_array_source_91(Idx)
411291  , p_source_92 => l_array_source_92(Idx)
411292  , p_source_93 => l_array_source_93(Idx)
411293  , p_source_94 => l_array_source_94(Idx)
411294  , p_source_95 => l_array_source_95(Idx)
411295  , p_source_97 => l_array_source_97(Idx)
411296  , p_source_108 => l_array_source_108(Idx)
411297  );
411298 If(l_balance_type_code = 'A') THEN
411299   l_actual_gain_loss_ref := l_gain_or_loss_ref;
411300 END IF;
411301 
411302 --
411303 
411304       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
411305       -- or secondary ledger that has different currency with primary
411306       -- or alc that is calculated by sla
411307       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
411308             (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'))
411309 
411310 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
411311 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
411312           AND (l_actual_flag = 'A')) THEN
411313         XLA_AE_LINES_PKG.CreateGainOrLossLines(
411314           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
411315          ,p_application_id   => p_application_id
411316          ,p_amb_context_code => 'DEFAULT'
411317          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
411318          ,p_event_class_code => C_EVENT_CLASS_CODE
411319          ,p_event_type_code  => C_EVENT_TYPE_CODE
411320          
411321          ,p_gain_ccid        => -1
411322          ,p_loss_ccid        => -1
411323 
411324          ,p_actual_flag      => l_actual_flag
411325          ,p_enc_flag         => null
411326          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
411327          ,p_enc_g_l_ref      => null
411328          );
411329       END IF;
411330    END IF;
411331 END IF;
411332 
411333    ELSE
411334       --
411335       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
411336       --
411337       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
411338          trace
411339             (p_msg      => 'Trancaction revesal option is Y'
411340             ,p_level    => C_LEVEL_STATEMENT
411341             ,p_module   => l_log_module);
411342       END IF;
411343    END IF;
411344 
411345 END LOOP;
411346 l_result := XLA_AE_LINES_PKG.InsertLines ;
411347 end loop;
411348 close line_cur;
411349 
411350 
411351 --
411352 -- insert headers into xla_ae_headers_gt table
411353 --
411354 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
411355 
411356 -- insert into errors table here.
411357 
411358 END LOOP;
411359 
411360 --
411361 -- 4865292
411362 --
411363 -- Compare g_hdr_extract_count with event count in
411364 -- CreateHeadersAndLines.
411365 --
411366 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
411367 
411368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
411369    trace (p_msg     => '# rows extracted from header extract objects '
411370                     || ' (running total): '
411371                     || g_hdr_extract_count
411372          ,p_level   => C_LEVEL_STATEMENT
411373          ,p_module  => l_log_module);
411374 END IF;
411375 
411376 CLOSE header_cur;
411377 --
411378 
411379 --
411380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
411381    trace
411382       (p_msg      => 'END of EventType_611'
411383       ,p_level    => C_LEVEL_PROCEDURE
411384       ,p_module   => l_log_module);
411385 END IF;
411386 --
411387 RETURN l_result;
411388 EXCEPTION
411389 WHEN xla_exceptions_pkg.application_exception THEN
411390    
411391 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
411392 
411393    
411394 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
411395 
411396    RAISE;
411397 
411398 WHEN NO_DATA_FOUND THEN
411399 
411400 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
411401 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
411402 
411403 FOR header_record IN header_cur
411404 LOOP
411405     l_array_header_events(header_record.event_id) := header_record.event_id;
411406 END LOOP;
411407 
411408 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
411409 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
411410 
411411 fnd_file.put_line(fnd_file.LOG, '                    ');
411412 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
411413 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
411414 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
411415 
411416 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
411417 LOOP
411418 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
411419 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
411420         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
411421 	END IF;
411422 END LOOP;
411423 
411424 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
411425 fnd_file.put_line(fnd_file.LOG, '                    ');
411426 
411427 
411428 xla_exceptions_pkg.raise_message
411429       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_611');
411430 
411431 
411432 WHEN OTHERS THEN
411433    xla_exceptions_pkg.raise_message
411434       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_611');
411435 END EventType_611;
411436 --
411437 
411438 ---------------------------------------
411439 --
411440 -- PRIVATE PROCEDURE
411441 --         insert_sources_612
411442 --
411443 ----------------------------------------
411444 --
411445 PROCEDURE insert_sources_612(
411446                                 p_target_ledger_id       IN NUMBER
411447                               , p_language               IN VARCHAR2
411448                               , p_sla_ledger_id          IN NUMBER
411449                               , p_pad_start_date         IN DATE
411450                               , p_pad_end_date           IN DATE
411451                          )
411452 IS
411453 
411454 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_ISSUE';
411455 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
411456 p_apps_owner                   VARCHAR2(30);
411457 l_log_module                   VARCHAR2(240);
411458 BEGIN
411459 IF g_log_enabled THEN
411460       l_log_module := C_DEFAULT_MODULE||'.insert_sources_612';
411461 END IF;
411462 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
411463 
411464       trace
411465          (p_msg      => 'BEGIN of insert_sources_612'
411466          ,p_level    => C_LEVEL_PROCEDURE
411467          ,p_module   => l_log_module);
411468 
411469 END IF;
411470 
411471 -- select APPS owner
411472 SELECT oracle_username
411473   INTO p_apps_owner
411474   FROM fnd_oracle_userid
411475  WHERE read_only_flag = 'U'
411476 ;
411477 
411478 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
411479       trace
411480          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
411481                         ' - p_language = '||p_language||
411482                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
411483                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
411484                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
411485                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
411486          ,p_level    => C_LEVEL_STATEMENT
411487          ,p_module   => l_log_module);
411488 END IF;
411489 
411490 
411491 --
411492 INSERT INTO xla_diag_sources --hdr1
411493 (
411494         event_id
411495       , ledger_id
411496       , sla_ledger_id
411497       , description_language
411498       , object_name
411499       , object_type_code
411500       , line_number
411501       , source_application_id
411502       , source_type_code
411503       , source_code
411504       , source_value
411505       , source_meaning
411506       , created_by
411507       , creation_date
411508       , last_update_date
411509       , last_updated_by
411510       , last_update_login
411511       , program_update_date
411512       , program_application_id
411513       , program_id
411514       , request_id
411515 )
411516 SELECT
411517         event_id
411518       , p_target_ledger_id
411519       , p_sla_ledger_id
411520       , p_language
411521       , object_name
411522       , object_type_code
411523       , line_number
411524       , source_application_id
411525       , source_type_code
411526       , source_code
411527       , SUBSTR(source_value ,1,1996)
411528       , SUBSTR(source_meaning,1,200)
411529       , xla_environment_pkg.g_Usr_Id
411530       , TRUNC(SYSDATE)
411531       , TRUNC(SYSDATE)
411532       , xla_environment_pkg.g_Usr_Id
411533       , xla_environment_pkg.g_Login_Id
411534       , TRUNC(SYSDATE)
411535       , xla_environment_pkg.g_Prog_Appl_Id
411536       , xla_environment_pkg.g_Prog_Id
411537       , xla_environment_pkg.g_Req_Id
411538   FROM (
411539        SELECT xet.event_id                  event_id
411540             , 0                             line_number
411541             , CASE r
411542                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
411543                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
411544                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
411545                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
411546                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
411547                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
411548                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
411549                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
411550                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
411551                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
411552                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
411553                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
411554                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
411555                 
411556                ELSE null
411557               END                           object_name
411558             , CASE r
411559                 WHEN 1 THEN 'HEADER' 
411560                 WHEN 2 THEN 'HEADER' 
411561                 WHEN 3 THEN 'HEADER' 
411562                 WHEN 4 THEN 'HEADER' 
411563                 WHEN 5 THEN 'HEADER' 
411564                 WHEN 6 THEN 'HEADER' 
411565                 WHEN 7 THEN 'HEADER' 
411566                 WHEN 8 THEN 'HEADER' 
411567                 WHEN 9 THEN 'HEADER' 
411568                 WHEN 10 THEN 'HEADER' 
411569                 WHEN 11 THEN 'HEADER' 
411570                 WHEN 12 THEN 'HEADER' 
411571                 WHEN 13 THEN 'HEADER' 
411572                 
411573                 ELSE null
411574               END                           object_type_code
411575             , CASE r
411576                 WHEN 1 THEN '707' 
411577                 WHEN 2 THEN '707' 
411578                 WHEN 3 THEN '707' 
411579                 WHEN 4 THEN '707' 
411580                 WHEN 5 THEN '707' 
411581                 WHEN 6 THEN '707' 
411582                 WHEN 7 THEN '707' 
411583                 WHEN 8 THEN '707' 
411584                 WHEN 9 THEN '707' 
411585                 WHEN 10 THEN '707' 
411586                 WHEN 11 THEN '707' 
411587                 WHEN 12 THEN '707' 
411588                 WHEN 13 THEN '707' 
411589                 
411590                 ELSE null
411591               END                           source_application_id
411592             , 'S'             source_type_code
411593             , CASE r
411594                 WHEN 1 THEN 'TRANSACTION_ID' 
411595                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
411596                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
411597                 WHEN 4 THEN 'TRANSACTION_UOM' 
411598                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
411599                 WHEN 6 THEN 'PLA_ACV_ACCOUNT' 
411600                 WHEN 7 THEN 'PLA_MATERIAL_ACCOUNT' 
411601                 WHEN 8 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
411602                 WHEN 9 THEN 'PLA_RESOURCE_ACCOUNT' 
411603                 WHEN 10 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
411604                 WHEN 11 THEN 'PLA_OVERHEAD_ACCOUNT' 
411605                 WHEN 12 THEN 'DISTRIBUTION_TYPE' 
411606                 WHEN 13 THEN 'TRANSFER_TO_GL_INDICATOR' 
411607                 
411608                 ELSE null
411609               END                           source_code
411610             , CASE r
411611                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
411612                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
411613                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
411614                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
411615                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
411616                 WHEN 6 THEN TO_CHAR(h6.PLA_ACV_ACCOUNT)
411617                 WHEN 7 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
411618                 WHEN 8 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
411619                 WHEN 9 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
411620                 WHEN 10 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
411621                 WHEN 11 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
411622                 WHEN 12 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
411623                 WHEN 13 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
411624                 
411625                 ELSE null
411626               END                           source_value
411627             , CASE r
411628                 WHEN 12 THEN fvl85.meaning
411629                 WHEN 13 THEN fvl114.meaning
411630                 
411631                 ELSE null
411632               END               source_meaning
411633         FROM xla_events_gt     xet  
411634       , CST_XLA_INV_HEADERS_V  h1
411635       , CST_XLA_INV_REF_V  h3
411636       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
411637       , CST_XLA_INV_TXN_TYPES_REF_V  h5
411638       , CST_XLA_PLA_CATEGORY_REF_V  h6
411639   , fnd_lookup_values    fvl85
411640   , fnd_lookup_values    fvl114
411641             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
411642        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
411643          AND xet.event_type_code = C_EVENT_TYPE_CODE
411644             AND h1.event_id = xet.event_id
411645  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id  (+) = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id  and h6.pla_cat_item_id   (+) = h1.inventory_item_id  and h6.pla_subinv_cg   (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
411646   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
411647   AND fvl85.view_application_id(+) = 700
411648   AND fvl85.language(+)            = USERENV('LANG')
411649      AND fvl114.lookup_type(+)         = 'YES_NO'
411650   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
411651   AND fvl114.view_application_id(+) = 0
411652   AND fvl114.language(+)            = USERENV('LANG')
411653   
411654 )
411655 ;
411656 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
411657 
411658       trace
411659          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
411660          ,p_level    => C_LEVEL_STATEMENT
411661          ,p_module   => l_log_module);
411662 
411663 END IF;
411664 --
411665 
411666 
411667 
411668 --
411669 INSERT INTO xla_diag_sources --line1
411670 (
411671         event_id
411672       , ledger_id
411673       , sla_ledger_id
411674       , description_language
411675       , object_name
411676       , object_type_code
411677       , line_number
411678       , source_application_id
411679       , source_type_code
411680       , source_code
411681       , source_value
411682       , source_meaning
411683       , created_by
411684       , creation_date
411685       , last_update_date
411686       , last_updated_by
411687       , last_update_login
411688       , program_update_date
411689       , program_application_id
411690       , program_id
411691       , request_id
411692 )
411693 SELECT  event_id
411694       , p_target_ledger_id
411695       , p_sla_ledger_id
411696       , p_language
411697       , object_name
411698       , object_type_code
411699       , line_number
411700       , source_application_id
411701       , source_type_code
411702       , source_code
411703       , SUBSTR(source_value,1,1996)
411704       , SUBSTR(source_meaning,1,200)
411705       , xla_environment_pkg.g_Usr_Id
411706       , TRUNC(SYSDATE)
411707       , TRUNC(SYSDATE)
411708       , xla_environment_pkg.g_Usr_Id
411709       , xla_environment_pkg.g_Login_Id
411710       , TRUNC(SYSDATE)
411711       , xla_environment_pkg.g_Prog_Appl_Id
411712       , xla_environment_pkg.g_Prog_Id
411713       , xla_environment_pkg.g_Req_Id
411714   FROM (
411715        SELECT xet.event_id                  event_id
411716             , l2.line_number                 line_number
411717             , CASE r
411718                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
411719                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
411720                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
411721                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
411722                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
411723                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
411724                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
411725                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
411726                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
411727                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
411728                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
411729                 
411730                ELSE null
411731               END                           object_name
411732             , CASE r
411733                 WHEN 1 THEN 'LINE' 
411734                 WHEN 2 THEN 'LINE' 
411735                 WHEN 3 THEN 'LINE' 
411736                 WHEN 4 THEN 'LINE' 
411737                 WHEN 5 THEN 'LINE' 
411738                 WHEN 6 THEN 'LINE' 
411739                 WHEN 7 THEN 'LINE' 
411740                 WHEN 8 THEN 'LINE' 
411741                 WHEN 9 THEN 'LINE' 
411742                 WHEN 10 THEN 'LINE' 
411743                 WHEN 11 THEN 'LINE' 
411744                 
411745                 ELSE null
411746               END                           object_type_code
411747             , CASE r
411748                 WHEN 1 THEN '707' 
411749                 WHEN 2 THEN '707' 
411750                 WHEN 3 THEN '707' 
411751                 WHEN 4 THEN '707' 
411752                 WHEN 5 THEN '707' 
411753                 WHEN 6 THEN '707' 
411754                 WHEN 7 THEN '707' 
411755                 WHEN 8 THEN '707' 
411756                 WHEN 9 THEN '707' 
411757                 WHEN 10 THEN '707' 
411758                 WHEN 11 THEN '707' 
411759                 
411760                 ELSE null
411761               END                           source_application_id
411762             , 'S'             source_type_code
411763             , CASE r
411764                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
411765                 WHEN 2 THEN 'COST_ELEMENT_ID' 
411766                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
411767                 WHEN 4 THEN 'CURRENCY_CODE' 
411768                 WHEN 5 THEN 'ENTERED_AMOUNT' 
411769                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
411770                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
411771                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
411772                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
411773                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
411774                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
411775                 
411776                 ELSE null
411777               END                           source_code
411778             , CASE r
411779                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
411780                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
411781                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
411782                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
411783                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
411784                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
411785                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
411786                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
411787                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
411788                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
411789                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
411790                 
411791                 ELSE null
411792               END                           source_value
411793             , CASE r
411794                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
411795                           1009615
411796                          ,TO_CHAR(l2.COST_ELEMENT_ID)
411797                          ,'COST_ELEMENT_ID'
411798                          ,'S'
411799                          ,707)
411800                 
411801                 ELSE null
411802               END               source_meaning
411803          FROM  xla_events_gt     xet  
411804         , CST_XLA_INV_LINES_V  l2
411805             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
411806         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
411807           AND xet.event_type_code = C_EVENT_TYPE_CODE
411808             AND l2.event_id          = xet.event_id
411809 
411810 )
411811 ;
411812 --
411813 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
411814 
411815       trace
411816          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
411817          ,p_level    => C_LEVEL_STATEMENT
411818          ,p_module   => l_log_module);
411819 
411820 END IF;
411821 
411822 
411823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
411824       trace
411825          (p_msg      => 'END of insert_sources_612'
411826          ,p_level    => C_LEVEL_PROCEDURE
411827          ,p_module   => l_log_module);
411828 END IF;
411829 EXCEPTION
411830   WHEN xla_exceptions_pkg.application_exception THEN
411831       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
411832             trace
411833                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
411834                ,p_level    => C_LEVEL_EXCEPTION
411835                ,p_module   => l_log_module);
411836       END IF;
411837       RAISE;
411838   WHEN OTHERS THEN
411839       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
411840             trace
411841                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
411842                ,p_level    => C_LEVEL_EXCEPTION
411843                ,p_module   => l_log_module);
411844        END IF;
411845        xla_exceptions_pkg.raise_message
411846            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_612');
411847 END insert_sources_612;
411848 --
411849 
411850 ---------------------------------------
411851 --
411852 -- PRIVATE FUNCTION
411853 --         EventType_612
411854 --
411855 ----------------------------------------
411856 --
411857 FUNCTION EventType_612
411858        (p_application_id         IN NUMBER
411859        ,p_base_ledger_id         IN NUMBER
411860        ,p_target_ledger_id       IN NUMBER
411861        ,p_language               IN VARCHAR2
411862        ,p_currency_code          IN VARCHAR2
411863        ,p_sla_ledger_id          IN NUMBER
411864        ,p_pad_start_date         IN DATE
411865        ,p_pad_end_date           IN DATE
411866        ,p_primary_ledger_id      IN NUMBER)
411867 RETURN BOOLEAN IS
411868 --
411869 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_ISSUE';
411870 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
411871 
411872 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
411873 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
411874 --
411875 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411876 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411877 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
411878 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
411879 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411880 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
411881 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
411882 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411883 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
411884 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
411885 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411886 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411887 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411888 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
411889 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
411890 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
411891 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
411892 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
411893 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
411894 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
411895 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
411896 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
411897 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
411898 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
411899 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
411900 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
411901 
411902 l_event_id                             NUMBER;
411903 l_previous_event_id                    NUMBER;
411904 l_first_event_id                       NUMBER;
411905 l_last_event_id                        NUMBER;
411906 
411907 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
411908 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
411909 --
411910 --
411911 l_result                    BOOLEAN := TRUE;
411912 l_rows                      NUMBER  := 1000;
411913 l_event_type_name           VARCHAR2(80) := 'User-defined Issue';
411914 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
411915 l_description               VARCHAR2(4000);
411916 l_transaction_reversal      NUMBER;
411917 l_ae_header_id              NUMBER;
411918 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
411919 l_log_module                VARCHAR2(240);
411920 --
411921 l_acct_reversal_source      VARCHAR2(30);
411922 l_trx_reversal_source       VARCHAR2(30);
411923 
411924 l_continue_with_lines       BOOLEAN := TRUE;
411925 --
411926 l_acc_rev_gl_date_source    DATE;                      -- 4262811
411927 --
411928 type t_array_event_id is table of number index by binary_integer;
411929 
411930 l_rec_array_event                    t_rec_array_event;
411931 l_null_rec_array_event               t_rec_array_event;
411932 l_array_ae_header_id                 xla_number_array_type;
411933 l_actual_flag                        VARCHAR2(1) := NULL;
411934 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
411935 l_balance_type_code                  VARCHAR2(1) :=NULL;
411936 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
411937 
411938 --
411939 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
411940 --
411941 
411942 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
411943 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
411944 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
411945 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
411946 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
411947 TYPE t_array_source_23 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_ACV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
411948 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
411949 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
411950 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
411951 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
411952 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
411953 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
411954 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
411955 
411956 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
411957 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
411958 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
411959 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
411960 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
411961 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
411962 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
411963 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
411964 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
411965 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
411966 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
411967 
411968 l_array_source_1              t_array_source_1;
411969 l_array_source_2              t_array_source_2;
411970 l_array_source_3              t_array_source_3;
411971 l_array_source_4              t_array_source_4;
411972 l_array_source_5              t_array_source_5;
411973 l_array_source_23              t_array_source_23;
411974 l_array_source_41              t_array_source_41;
411975 l_array_source_42              t_array_source_42;
411976 l_array_source_43              t_array_source_43;
411977 l_array_source_44              t_array_source_44;
411978 l_array_source_45              t_array_source_45;
411979 l_array_source_85              t_array_source_85;
411980 l_array_source_85_meaning      t_array_lookup_meaning;
411981 l_array_source_114              t_array_source_114;
411982 l_array_source_114_meaning      t_array_lookup_meaning;
411983 
411984 l_array_source_11      t_array_source_11;
411985 l_array_source_15      t_array_source_15;
411986 l_array_source_84      t_array_source_84;
411987 l_array_source_88      t_array_source_88;
411988 l_array_source_91      t_array_source_91;
411989 l_array_source_92      t_array_source_92;
411990 l_array_source_93      t_array_source_93;
411991 l_array_source_94      t_array_source_94;
411992 l_array_source_95      t_array_source_95;
411993 l_array_source_97      t_array_source_97;
411994 l_array_source_108      t_array_source_108;
411995 
411996 --
411997 CURSOR header_cur
411998 IS
411999 SELECT /*+ leading(xet) cardinality(xet,1) */
412000 -- Event Type Code: UMISC_ISSUE
412001 -- Event Class Code: USER_DEFINE
412002     xet.entity_id
412003   , xet.legal_entity_id
412004   , xet.entity_code
412005   , xet.transaction_number
412006   , xet.event_id
412007   , xet.event_class_code
412008   , xet.event_type_code
412009   , xet.event_number
412010   , xet.event_date
412011   , xet.transaction_date
412012   , xet.reference_num_1
412013   , xet.reference_num_2
412014   , xet.reference_num_3
412015   , xet.reference_num_4
412016   , xet.reference_char_1
412017   , xet.reference_char_2
412018   , xet.reference_char_3
412019   , xet.reference_char_4
412020   , xet.reference_date_1
412021   , xet.reference_date_2
412022   , xet.reference_date_3
412023   , xet.reference_date_4
412024   , xet.event_created_by
412025   , xet.budgetary_control_flag 
412026   , h1.TRANSACTION_ID    source_1
412027   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
412028   , h3.TRANSACTION_QUANTITY    source_3
412029   , h3.TRANSACTION_UOM    source_4
412030   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
412031   , h6.PLA_ACV_ACCOUNT    source_23
412032   , h6.PLA_MATERIAL_ACCOUNT    source_41
412033   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
412034   , h6.PLA_RESOURCE_ACCOUNT    source_43
412035   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
412036   , h6.PLA_OVERHEAD_ACCOUNT    source_45
412037   , h1.DISTRIBUTION_TYPE    source_85
412038   , fvl85.meaning   source_85_meaning
412039   , h1.TRANSFER_TO_GL_INDICATOR    source_114
412040   , fvl114.meaning   source_114_meaning
412041   FROM xla_events_gt     xet 
412042   , CST_XLA_INV_HEADERS_V  h1
412043   , CST_XLA_INV_REF_V  h3
412044   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
412045   , CST_XLA_INV_TXN_TYPES_REF_V  h5
412046   , CST_XLA_PLA_CATEGORY_REF_V  h6
412047   , fnd_lookup_values    fvl85
412048   , fnd_lookup_values    fvl114
412049  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
412050    and xet.event_type_code = C_EVENT_TYPE_CODE
412051    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
412052  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID  (+) = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID  AND h6.PLA_CAT_ITEM_ID   (+) = h1.INVENTORY_ITEM_ID  AND h6.PLA_SUBINV_CG   (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
412053   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
412054   AND fvl85.view_application_id(+) = 700
412055   AND fvl85.language(+)            = USERENV('LANG')
412056      AND fvl114.lookup_type(+)         = 'YES_NO'
412057   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
412058   AND fvl114.view_application_id(+) = 0
412059   AND fvl114.language(+)            = USERENV('LANG')
412060   
412061  ORDER BY event_id
412062 ;
412063 
412064 
412065 --
412066 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
412067 IS
412068 SELECT /*+ leading(xet) cardinality(xet,1) */
412069 -- Event Type Code: UMISC_ISSUE
412070 -- Event Class Code: USER_DEFINE
412071     xet.entity_id
412072    ,xet.legal_entity_id
412073    ,xet.entity_code
412074    ,xet.transaction_number
412075    ,xet.event_id
412076    ,xet.event_class_code
412077    ,xet.event_type_code
412078    ,xet.event_number
412079    ,xet.event_date
412080    ,xet.transaction_date
412081    ,xet.reference_num_1
412082    ,xet.reference_num_2
412083    ,xet.reference_num_3
412084    ,xet.reference_num_4
412085    ,xet.reference_char_1
412086    ,xet.reference_char_2
412087    ,xet.reference_char_3
412088    ,xet.reference_char_4
412089    ,xet.reference_date_1
412090    ,xet.reference_date_2
412091    ,xet.reference_date_3
412092    ,xet.reference_date_4
412093    ,xet.event_created_by
412094    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
412095   , l2.CODE_COMBINATION_ID    source_11
412096   , l2.COST_ELEMENT_ID    source_15
412097   , l2.DISTRIBUTION_IDENTIFIER    source_84
412098   , l2.CURRENCY_CODE    source_88
412099   , l2.ENTERED_AMOUNT    source_91
412100   , l2.CURRENCY_CONVERSION_DATE    source_92
412101   , l2.CURRENCY_CONVERSION_RATE    source_93
412102   , l2.CURRENCY_CONVERSION_TYPE    source_94
412103   , l2.ACCOUNTED_AMOUNT    source_95
412104   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
412105   , l2.L_ORGANIZATION_CODE    source_108
412106   FROM xla_events_gt     xet 
412107   , CST_XLA_INV_LINES_V  l2
412108  WHERE xet.event_id between x_first_event_id and x_last_event_id
412109    and xet.event_date between p_pad_start_date and p_pad_end_date
412110    and xet.event_type_code = C_EVENT_TYPE_CODE
412111    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
412112 ;
412113 
412114 --
412115 BEGIN
412116 IF g_log_enabled THEN
412117    l_log_module := C_DEFAULT_MODULE||'.EventType_612';
412118 END IF;
412119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
412120    trace
412121       (p_msg      => 'BEGIN of EventType_612'
412122       ,p_level    => C_LEVEL_PROCEDURE
412123       ,p_module   => l_log_module);
412124 END IF;
412125 
412126 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
412127    trace
412128       (p_msg      => 'p_application_id = '||p_application_id||
412129                      ' - p_base_ledger_id = '||p_base_ledger_id||
412130                      ' - p_target_ledger_id  = '||p_target_ledger_id||
412131                      ' - p_language = '||p_language||
412132                      ' - p_currency_code = '||p_currency_code||
412133                      ' - p_sla_ledger_id = '||p_sla_ledger_id
412134       ,p_level    => C_LEVEL_STATEMENT
412135       ,p_module   => l_log_module);
412136 END IF;
412137 --
412138 -- initialze arrays
412139 --
412140 g_array_event.DELETE;
412141 l_rec_array_event := l_null_rec_array_event;
412142 --
412143 --------------------------------------
412144 -- 4262811 Initialze MPA Line Number
412145 --------------------------------------
412146 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
412147 
412148 --
412149 
412150 --
412151 OPEN header_cur;
412152 --
412153 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
412154    trace
412155    (p_msg      => 'SQL - FETCH header_cur'
412156    ,p_level    => C_LEVEL_STATEMENT
412157    ,p_module   => l_log_module);
412158 END IF;
412159 --
412160 LOOP
412161 FETCH header_cur BULK COLLECT INTO
412162         l_array_entity_id
412163       , l_array_legal_entity_id
412164       , l_array_entity_code
412165       , l_array_transaction_num
412166       , l_array_event_id
412167       , l_array_class_code
412168       , l_array_event_type
412169       , l_array_event_number
412170       , l_array_event_date
412171       , l_array_transaction_date
412172       , l_array_reference_num_1
412173       , l_array_reference_num_2
412174       , l_array_reference_num_3
412175       , l_array_reference_num_4
412176       , l_array_reference_char_1
412177       , l_array_reference_char_2
412178       , l_array_reference_char_3
412179       , l_array_reference_char_4
412180       , l_array_reference_date_1
412181       , l_array_reference_date_2
412182       , l_array_reference_date_3
412183       , l_array_reference_date_4
412184       , l_array_event_created_by
412185       , l_array_budgetary_control_flag 
412186       , l_array_source_1
412187       , l_array_source_2
412188       , l_array_source_3
412189       , l_array_source_4
412190       , l_array_source_5
412191       , l_array_source_23
412192       , l_array_source_41
412193       , l_array_source_42
412194       , l_array_source_43
412195       , l_array_source_44
412196       , l_array_source_45
412197       , l_array_source_85
412198       , l_array_source_85_meaning
412199       , l_array_source_114
412200       , l_array_source_114_meaning
412201       LIMIT l_rows;
412202 --
412203 IF (C_LEVEL_EVENT >= g_log_level) THEN
412204    trace
412205    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
412206    ,p_level    => C_LEVEL_EVENT
412207    ,p_module   => l_log_module);
412208 END IF;
412209 --
412210 EXIT WHEN l_array_entity_id.COUNT = 0;
412211 
412212 -- initialize arrays
412213 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
412214 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
412215 
412216 --
412217 -- Bug 4458708
412218 --
412219 XLA_AE_LINES_PKG.g_LineNumber := 0;
412220 
412221 
412222 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
412223 g_last_hdr_idx := l_array_event_id.LAST;
412224 --
412225 -- loop for the headers. Each iteration is for each header extract row
412226 -- fetched in header cursor
412227 --
412228 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
412229 
412230 --
412231 -- set event info as cache for other routines to refer event attributes
412232 --
412233 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
412234    (p_application_id           => p_application_id
412235    ,p_primary_ledger_id        => p_primary_ledger_id
412236    ,p_base_ledger_id           => p_base_ledger_id
412237    ,p_target_ledger_id         => p_target_ledger_id
412238    ,p_entity_id                => l_array_entity_id(hdr_idx)
412239    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
412240    ,p_entity_code              => l_array_entity_code(hdr_idx)
412241    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
412242    ,p_event_id                 => l_array_event_id(hdr_idx)
412243    ,p_event_class_code         => l_array_class_code(hdr_idx)
412244    ,p_event_type_code          => l_array_event_type(hdr_idx)
412245    ,p_event_number             => l_array_event_number(hdr_idx)
412246    ,p_event_date               => l_array_event_date(hdr_idx)
412247    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
412248    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
412249    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
412250    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
412251    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
412252    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
412253    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
412254    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
412255    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
412256    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
412257    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
412258    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
412259    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
412260    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
412261    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
412262 
412263 --
412264 -- set the status of entry to C_VALID (0)
412265 --
412266 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
412267 
412268 --
412269 -- initialize a row for ae header
412270 --
412271 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
412272 
412273 l_event_id := l_array_event_id(hdr_idx);
412274 
412275 --
412276 -- storing the hdr_idx for event. May be used by line cursor.
412277 --
412278 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
412279 
412280 --
412281 -- store sources from header extract. This can be improved to
412282 -- store only those sources from header extract that may be used in lines
412283 --
412284 
412285 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
412286 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
412287 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
412288 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
412289 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
412290 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
412291 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
412292 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
412293 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
412294 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
412295 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
412296 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
412297 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
412298 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
412299 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
412300 
412301 --
412302 -- initilaize the status of ae headers for diffrent balance types
412303 -- the status is initialised to C_NOT_CREATED (2)
412304 --
412305 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
412306 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
412307 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
412308 
412309 --
412310 -- call api to validate and store accounting attributes for header
412311 --
412312 
412313 ------------------------------------------------------------
412314 -- Accrual Reversal : to get date for Standard Source (NONE)
412315 ------------------------------------------------------------
412316 l_acc_rev_gl_date_source := NULL;
412317 
412318      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
412319       l_rec_acct_attrs.array_date_value(1) := 
412320 xla_ae_sources_pkg.GetSystemSourceDate(
412321    p_source_code           => 'XLA_REFERENCE_DATE_1'
412322  , p_source_type_code      => 'Y'
412323  , p_source_application_id =>  602
412324 );
412325      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
412326       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
412327 
412328 
412329 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
412330 
412331 XLA_AE_HEADER_PKG.SetJeCategoryName;
412332 
412333 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
412334 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
412335 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
412336 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
412337 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
412338 
412339 
412340 -- No header level analytical criteria
412341 
412342 --
412343 --accounting attribute enhancement, bug 3612931
412344 --
412345 l_trx_reversal_source := SUBSTR(NULL, 1,30);
412346 
412347 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
412348    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
412349 
412350    xla_accounting_err_pkg.build_message
412351       (p_appli_s_name            => 'XLA'
412352       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
412353       ,p_token_1                 => 'ACCT_ATTR_NAME'
412354       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
412355       ,p_token_2                 => 'PRODUCT_NAME'
412356       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
412357       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
412358       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
412359       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
412360 
412361 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
412362    --
412363    -- following sets the accounting attributes needed to reverse
412364    -- accounting for a distributeion
412365    --
412366    xla_ae_lines_pkg.SetTrxReversalAttrs
412367       (p_event_id              => l_event_id
412368       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
412369       ,p_trx_reversal_source   => l_trx_reversal_source);
412370 
412371 END IF;
412372 
412373 
412374 ----------------------------------------------------------------
412375 -- 4262811 -  update the header statuses to invalid in need be
412376 ----------------------------------------------------------------
412377 --
412378 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
412379 
412380 
412381   -----------------------------------------------
412382   -- No accrual reversal for the event class/type
412383   -----------------------------------------------
412384 ----------------------------------------------------------------
412385 
412386 --
412387 -- this ends the header loop iteration for one bulk fetch
412388 --
412389 END LOOP;
412390 
412391 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
412392 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
412393 
412394 --
412395 -- insert dummy rows into lines gt table that were created due to
412396 -- transaction reversals
412397 --
412398 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
412399    l_result := XLA_AE_LINES_PKG.InsertLines;
412400 END IF;
412401 
412402 --
412403 -- reset the temp_line_num for each set of events fetched from header
412404 -- cursor rather than doing it for each new event in line cursor
412405 -- Bug 3939231
412406 --
412407 xla_ae_lines_pkg.g_temp_line_num := 0;
412408 
412409 
412410 
412411 --
412412 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
412413 --
412414 --
412415 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
412416 
412417       trace
412418          (p_msg      => 'SQL - FETCH line_cur'
412419          ,p_level    => C_LEVEL_STATEMENT
412420          ,p_module   => l_log_module);
412421 
412422 END IF;
412423 --
412424 --
412425 LOOP
412426   --
412427   FETCH line_cur BULK COLLECT INTO
412428         l_array_entity_id
412429       , l_array_legal_entity_id
412430       , l_array_entity_code
412431       , l_array_transaction_num
412432       , l_array_event_id
412433       , l_array_class_code
412434       , l_array_event_type
412435       , l_array_event_number
412436       , l_array_event_date
412437       , l_array_transaction_date
412438       , l_array_reference_num_1
412439       , l_array_reference_num_2
412440       , l_array_reference_num_3
412441       , l_array_reference_num_4
412442       , l_array_reference_char_1
412443       , l_array_reference_char_2
412444       , l_array_reference_char_3
412445       , l_array_reference_char_4
412446       , l_array_reference_date_1
412447       , l_array_reference_date_2
412448       , l_array_reference_date_3
412449       , l_array_reference_date_4
412450       , l_array_event_created_by
412451       , l_array_budgetary_control_flag
412452       , l_array_extract_line_num 
412453       , l_array_source_11
412454       , l_array_source_15
412455       , l_array_source_84
412456       , l_array_source_88
412457       , l_array_source_91
412458       , l_array_source_92
412459       , l_array_source_93
412460       , l_array_source_94
412461       , l_array_source_95
412462       , l_array_source_97
412463       , l_array_source_108
412464       LIMIT l_rows;
412465 
412466   --
412467   IF (C_LEVEL_EVENT >= g_log_level) THEN
412468             trace
412469                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
412470                ,p_level    => C_LEVEL_EVENT
412471                ,p_module   => l_log_module);
412472   END IF;
412473   --
412474   EXIT WHEN l_array_entity_id.count = 0;
412475 
412476   XLA_AE_LINES_PKG.g_rec_lines := null;
412477 
412478 --
412479 -- Bug 4458708
412480 --
412481 XLA_AE_LINES_PKG.g_LineNumber := 0;
412482 --
412483 --
412484 
412485 FOR Idx IN 1..l_array_event_id.count LOOP
412486    --
412487    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
412488    --
412489    l_event_id := l_array_event_id(idx);  -- 5648433
412490 
412491    --
412492    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
412493    --
412494 
412495    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
412496              (g_array_event(l_event_id).array_value_num('header_index'))
412497          ,'N'
412498          ) <> 'Y'
412499    THEN
412500       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
412501          trace
412502             (p_msg      => 'Trancaction revesal option is not Y '
412503             ,p_level    => C_LEVEL_STATEMENT
412504             ,p_module   => l_log_module);
412505       END IF;
412506 
412507 --
412508 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
412509 --
412510 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
412511 --
412512 -- set event info as cache for other routines to refer event attributes
412513 --
412514 
412515 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
412516    l_previous_event_id := l_event_id;
412517 
412518    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
412519       (p_application_id           => p_application_id
412520       ,p_primary_ledger_id        => p_primary_ledger_id
412521       ,p_base_ledger_id           => p_base_ledger_id
412522       ,p_target_ledger_id         => p_target_ledger_id
412523       ,p_entity_id                => l_array_entity_id(Idx)
412524       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
412525       ,p_entity_code              => l_array_entity_code(Idx)
412526       ,p_transaction_num          => l_array_transaction_num(Idx)
412527       ,p_event_id                 => l_array_event_id(Idx)
412528       ,p_event_class_code         => l_array_class_code(Idx)
412529       ,p_event_type_code          => l_array_event_type(Idx)
412530       ,p_event_number             => l_array_event_number(Idx)
412531       ,p_event_date               => l_array_event_date(Idx)
412532       ,p_transaction_date         => l_array_transaction_date(Idx)
412533       ,p_reference_num_1          => l_array_reference_num_1(Idx)
412534       ,p_reference_num_2          => l_array_reference_num_2(Idx)
412535       ,p_reference_num_3          => l_array_reference_num_3(Idx)
412536       ,p_reference_num_4          => l_array_reference_num_4(Idx)
412537       ,p_reference_char_1         => l_array_reference_char_1(Idx)
412538       ,p_reference_char_2         => l_array_reference_char_2(Idx)
412539       ,p_reference_char_3         => l_array_reference_char_3(Idx)
412540       ,p_reference_char_4         => l_array_reference_char_4(Idx)
412541       ,p_reference_date_1         => l_array_reference_date_1(Idx)
412542       ,p_reference_date_2         => l_array_reference_date_2(Idx)
412543       ,p_reference_date_3         => l_array_reference_date_3(Idx)
412544       ,p_reference_date_4         => l_array_reference_date_4(Idx)
412545       ,p_event_created_by         => l_array_event_created_by(Idx)
412546       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
412547        --
412548 END IF;
412549 
412550 
412551 
412552 --
412553 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
412554 
412555 l_acct_reversal_source := SUBSTR(NULL, 1,30);
412556 
412557 IF l_continue_with_lines THEN
412558    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
412559       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
412560 
412561       xla_accounting_err_pkg.build_message
412562          (p_appli_s_name            => 'XLA'
412563          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
412564          ,p_token_1                 => 'LINE_NUMBER'
412565          ,p_value_1                 => l_array_extract_line_num(Idx)
412566          ,p_token_2                 => 'PRODUCT_NAME'
412567          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
412568          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
412569          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
412570          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
412571 
412572    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
412573       --
412574       -- following sets the accounting attributes needed to reverse
412575       -- accounting for a distributeion
412576       --
412577 
412578       --
412579       -- 5217187
412580       --
412581       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
412582       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
412583                                        g_array_event(l_event_id).array_value_num('header_index'));
412584       --
412585       --
412586 
412587       -- No reversal code generated
412588 
412589       xla_ae_lines_pkg.SetAcctReversalAttrs
412590          (p_event_id             => l_event_id
412591          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
412592          ,p_calculate_acctd_flag => l_calculate_acctd_flag
412593          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
412594    END IF;
412595 
412596    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
412597        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
412598 
412599 --
412600 AcctLineType_98 (
412601  p_application_id  => p_application_id
412602  ,p_event_id     => l_event_id
412603  ,p_calculate_acctd_flag => l_calculate_acctd_flag
412604  ,p_calculate_g_l_flag => l_calculate_g_l_flag
412605  ,p_actual_flag => l_actual_flag
412606  ,p_balance_type_code => l_balance_type_code
412607  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
412608  
412609  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
412610  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
412611  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
412612  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
412613  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
412614  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
412615  , p_source_84 => l_array_source_84(Idx)
412616  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
412617  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
412618  , p_source_88 => l_array_source_88(Idx)
412619  , p_source_91 => l_array_source_91(Idx)
412620  , p_source_92 => l_array_source_92(Idx)
412621  , p_source_93 => l_array_source_93(Idx)
412622  , p_source_94 => l_array_source_94(Idx)
412623  , p_source_95 => l_array_source_95(Idx)
412624  , p_source_97 => l_array_source_97(Idx)
412625  );
412626 If(l_balance_type_code = 'A') THEN
412627   l_actual_gain_loss_ref := l_gain_or_loss_ref;
412628 END IF;
412629 
412630 --
412631 
412632 
412633 --
412634 AcctLineType_252 (
412635  p_application_id  => p_application_id
412636  ,p_event_id     => l_event_id
412637  ,p_calculate_acctd_flag => l_calculate_acctd_flag
412638  ,p_calculate_g_l_flag => l_calculate_g_l_flag
412639  ,p_actual_flag => l_actual_flag
412640  ,p_balance_type_code => l_balance_type_code
412641  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
412642  
412643  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
412644  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
412645  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
412646  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
412647  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
412648  , p_source_15 => l_array_source_15(Idx)
412649  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
412650  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
412651  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
412652  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
412653  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
412654  , p_source_84 => l_array_source_84(Idx)
412655  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
412656  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
412657  , p_source_88 => l_array_source_88(Idx)
412658  , p_source_91 => l_array_source_91(Idx)
412659  , p_source_92 => l_array_source_92(Idx)
412660  , p_source_93 => l_array_source_93(Idx)
412661  , p_source_94 => l_array_source_94(Idx)
412662  , p_source_95 => l_array_source_95(Idx)
412663  , p_source_97 => l_array_source_97(Idx)
412664  , p_source_108 => l_array_source_108(Idx)
412665  );
412666 If(l_balance_type_code = 'A') THEN
412667   l_actual_gain_loss_ref := l_gain_or_loss_ref;
412668 END IF;
412669 
412670 --
412671 
412672 
412673 --
412674 AcctLineType_326 (
412675  p_application_id  => p_application_id
412676  ,p_event_id     => l_event_id
412677  ,p_calculate_acctd_flag => l_calculate_acctd_flag
412678  ,p_calculate_g_l_flag => l_calculate_g_l_flag
412679  ,p_actual_flag => l_actual_flag
412680  ,p_balance_type_code => l_balance_type_code
412681  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
412682  
412683  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
412684  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
412685  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
412686  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
412687  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
412688  , p_source_11 => l_array_source_11(Idx)
412689  , p_source_84 => l_array_source_84(Idx)
412690  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
412691  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
412692  , p_source_88 => l_array_source_88(Idx)
412693  , p_source_91 => l_array_source_91(Idx)
412694  , p_source_92 => l_array_source_92(Idx)
412695  , p_source_93 => l_array_source_93(Idx)
412696  , p_source_94 => l_array_source_94(Idx)
412697  , p_source_95 => l_array_source_95(Idx)
412698  , p_source_97 => l_array_source_97(Idx)
412699  );
412700 If(l_balance_type_code = 'A') THEN
412701   l_actual_gain_loss_ref := l_gain_or_loss_ref;
412702 END IF;
412703 
412704 --
412705 
412706       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
412707       -- or secondary ledger that has different currency with primary
412708       -- or alc that is calculated by sla
412709       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
412710             (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'))
412711 
412712 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
412713 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
412714           AND (l_actual_flag = 'A')) THEN
412715         XLA_AE_LINES_PKG.CreateGainOrLossLines(
412716           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
412717          ,p_application_id   => p_application_id
412718          ,p_amb_context_code => 'DEFAULT'
412719          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
412720          ,p_event_class_code => C_EVENT_CLASS_CODE
412721          ,p_event_type_code  => C_EVENT_TYPE_CODE
412722          
412723          ,p_gain_ccid        => -1
412724          ,p_loss_ccid        => -1
412725 
412726          ,p_actual_flag      => l_actual_flag
412727          ,p_enc_flag         => null
412728          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
412729          ,p_enc_g_l_ref      => null
412730          );
412731       END IF;
412732    END IF;
412733 END IF;
412734 
412735    ELSE
412736       --
412737       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
412738       --
412739       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
412740          trace
412741             (p_msg      => 'Trancaction revesal option is Y'
412742             ,p_level    => C_LEVEL_STATEMENT
412743             ,p_module   => l_log_module);
412744       END IF;
412745    END IF;
412746 
412747 END LOOP;
412748 l_result := XLA_AE_LINES_PKG.InsertLines ;
412749 end loop;
412750 close line_cur;
412751 
412752 
412753 --
412754 -- insert headers into xla_ae_headers_gt table
412755 --
412756 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
412757 
412758 -- insert into errors table here.
412759 
412760 END LOOP;
412761 
412762 --
412763 -- 4865292
412764 --
412765 -- Compare g_hdr_extract_count with event count in
412766 -- CreateHeadersAndLines.
412767 --
412768 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
412769 
412770 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
412771    trace (p_msg     => '# rows extracted from header extract objects '
412772                     || ' (running total): '
412773                     || g_hdr_extract_count
412774          ,p_level   => C_LEVEL_STATEMENT
412775          ,p_module  => l_log_module);
412776 END IF;
412777 
412778 CLOSE header_cur;
412779 --
412780 
412781 --
412782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
412783    trace
412784       (p_msg      => 'END of EventType_612'
412785       ,p_level    => C_LEVEL_PROCEDURE
412786       ,p_module   => l_log_module);
412787 END IF;
412788 --
412789 RETURN l_result;
412790 EXCEPTION
412791 WHEN xla_exceptions_pkg.application_exception THEN
412792    
412793 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
412794 
412795    
412796 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
412797 
412798    RAISE;
412799 
412800 WHEN NO_DATA_FOUND THEN
412801 
412802 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
412803 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
412804 
412805 FOR header_record IN header_cur
412806 LOOP
412807     l_array_header_events(header_record.event_id) := header_record.event_id;
412808 END LOOP;
412809 
412810 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
412811 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
412812 
412813 fnd_file.put_line(fnd_file.LOG, '                    ');
412814 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
412815 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
412816 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
412817 
412818 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
412819 LOOP
412820 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
412821 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
412822         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
412823 	END IF;
412824 END LOOP;
412825 
412826 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
412827 fnd_file.put_line(fnd_file.LOG, '                    ');
412828 
412829 
412830 xla_exceptions_pkg.raise_message
412831       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_612');
412832 
412833 
412834 WHEN OTHERS THEN
412835    xla_exceptions_pkg.raise_message
412836       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_612');
412837 END EventType_612;
412838 --
412839 
412840 ---------------------------------------
412841 --
412842 -- PRIVATE PROCEDURE
412843 --         insert_sources_613
412844 --
412845 ----------------------------------------
412846 --
412847 PROCEDURE insert_sources_613(
412848                                 p_target_ledger_id       IN NUMBER
412849                               , p_language               IN VARCHAR2
412850                               , p_sla_ledger_id          IN NUMBER
412851                               , p_pad_start_date         IN DATE
412852                               , p_pad_end_date           IN DATE
412853                          )
412854 IS
412855 
412856 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_RCPT';
412857 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
412858 p_apps_owner                   VARCHAR2(30);
412859 l_log_module                   VARCHAR2(240);
412860 BEGIN
412861 IF g_log_enabled THEN
412862       l_log_module := C_DEFAULT_MODULE||'.insert_sources_613';
412863 END IF;
412864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
412865 
412866       trace
412867          (p_msg      => 'BEGIN of insert_sources_613'
412868          ,p_level    => C_LEVEL_PROCEDURE
412869          ,p_module   => l_log_module);
412870 
412871 END IF;
412872 
412873 -- select APPS owner
412874 SELECT oracle_username
412875   INTO p_apps_owner
412876   FROM fnd_oracle_userid
412877  WHERE read_only_flag = 'U'
412878 ;
412879 
412880 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
412881       trace
412882          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
412883                         ' - p_language = '||p_language||
412884                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
412885                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
412886                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
412887                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
412888          ,p_level    => C_LEVEL_STATEMENT
412889          ,p_module   => l_log_module);
412890 END IF;
412891 
412892 
412893 --
412894 INSERT INTO xla_diag_sources --hdr1
412895 (
412896         event_id
412897       , ledger_id
412898       , sla_ledger_id
412899       , description_language
412900       , object_name
412901       , object_type_code
412902       , line_number
412903       , source_application_id
412904       , source_type_code
412905       , source_code
412906       , source_value
412907       , source_meaning
412908       , created_by
412909       , creation_date
412910       , last_update_date
412911       , last_updated_by
412912       , last_update_login
412913       , program_update_date
412914       , program_application_id
412915       , program_id
412916       , request_id
412917 )
412918 SELECT
412919         event_id
412920       , p_target_ledger_id
412921       , p_sla_ledger_id
412922       , p_language
412923       , object_name
412924       , object_type_code
412925       , line_number
412926       , source_application_id
412927       , source_type_code
412928       , source_code
412929       , SUBSTR(source_value ,1,1996)
412930       , SUBSTR(source_meaning,1,200)
412931       , xla_environment_pkg.g_Usr_Id
412932       , TRUNC(SYSDATE)
412933       , TRUNC(SYSDATE)
412934       , xla_environment_pkg.g_Usr_Id
412935       , xla_environment_pkg.g_Login_Id
412936       , TRUNC(SYSDATE)
412937       , xla_environment_pkg.g_Prog_Appl_Id
412938       , xla_environment_pkg.g_Prog_Id
412939       , xla_environment_pkg.g_Req_Id
412940   FROM (
412941        SELECT xet.event_id                  event_id
412942             , 0                             line_number
412943             , CASE r
412944                WHEN 1 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
412945                 WHEN 2 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
412946                 WHEN 3 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
412947                 WHEN 4 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
412948                 WHEN 5 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
412949                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
412950                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
412951                 WHEN 8 THEN 'CST_XLA_INV_HEADERS_V' 
412952                 
412953                ELSE null
412954               END                           object_name
412955             , CASE r
412956                 WHEN 1 THEN 'HEADER' 
412957                 WHEN 2 THEN 'HEADER' 
412958                 WHEN 3 THEN 'HEADER' 
412959                 WHEN 4 THEN 'HEADER' 
412960                 WHEN 5 THEN 'HEADER' 
412961                 WHEN 6 THEN 'HEADER' 
412962                 WHEN 7 THEN 'HEADER' 
412963                 WHEN 8 THEN 'HEADER' 
412964                 
412965                 ELSE null
412966               END                           object_type_code
412967             , CASE r
412968                 WHEN 1 THEN '707' 
412969                 WHEN 2 THEN '707' 
412970                 WHEN 3 THEN '707' 
412971                 WHEN 4 THEN '707' 
412972                 WHEN 5 THEN '707' 
412973                 WHEN 6 THEN '707' 
412974                 WHEN 7 THEN '707' 
412975                 WHEN 8 THEN '707' 
412976                 
412977                 ELSE null
412978               END                           source_application_id
412979             , 'S'             source_type_code
412980             , CASE r
412981                 WHEN 1 THEN 'PLA_ACV_ACCOUNT' 
412982                 WHEN 2 THEN 'PLA_MATERIAL_ACCOUNT' 
412983                 WHEN 3 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
412984                 WHEN 4 THEN 'PLA_RESOURCE_ACCOUNT' 
412985                 WHEN 5 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
412986                 WHEN 6 THEN 'PLA_OVERHEAD_ACCOUNT' 
412987                 WHEN 7 THEN 'DISTRIBUTION_TYPE' 
412988                 WHEN 8 THEN 'TRANSFER_TO_GL_INDICATOR' 
412989                 
412990                 ELSE null
412991               END                           source_code
412992             , CASE r
412993                 WHEN 1 THEN TO_CHAR(h3.PLA_ACV_ACCOUNT)
412994                 WHEN 2 THEN TO_CHAR(h3.PLA_MATERIAL_ACCOUNT)
412995                 WHEN 3 THEN TO_CHAR(h3.PLA_MATERIAL_OVERHEAD_ACCOUNT)
412996                 WHEN 4 THEN TO_CHAR(h3.PLA_RESOURCE_ACCOUNT)
412997                 WHEN 5 THEN TO_CHAR(h3.PLA_OUTSIDE_PROCESSING_ACCOUNT)
412998                 WHEN 6 THEN TO_CHAR(h3.PLA_OVERHEAD_ACCOUNT)
412999                 WHEN 7 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
413000                 WHEN 8 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
413001                 
413002                 ELSE null
413003               END                           source_value
413004             , CASE r
413005                 WHEN 7 THEN fvl85.meaning
413006                 WHEN 8 THEN fvl114.meaning
413007                 
413008                 ELSE null
413009               END               source_meaning
413010         FROM xla_events_gt     xet  
413011       , CST_XLA_INV_HEADERS_V  h1
413012       , CST_XLA_PLA_CATEGORY_REF_V  h3
413013   , fnd_lookup_values    fvl85
413014   , fnd_lookup_values    fvl114
413015             ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
413016        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
413017          AND xet.event_type_code = C_EVENT_TYPE_CODE
413018             AND h1.event_id = xet.event_id
413019  AND h3.pla_cat_organization_id  (+) = h1.organization_id  and h3.pla_cat_item_id   (+) = h1.inventory_item_id  and h3.pla_subinv_cg   (+) = h1.h_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
413020   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
413021   AND fvl85.view_application_id(+) = 700
413022   AND fvl85.language(+)            = USERENV('LANG')
413023      AND fvl114.lookup_type(+)         = 'YES_NO'
413024   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
413025   AND fvl114.view_application_id(+) = 0
413026   AND fvl114.language(+)            = USERENV('LANG')
413027   
413028 )
413029 ;
413030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
413031 
413032       trace
413033          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
413034          ,p_level    => C_LEVEL_STATEMENT
413035          ,p_module   => l_log_module);
413036 
413037 END IF;
413038 --
413039 
413040 
413041 
413042 --
413043 INSERT INTO xla_diag_sources --line1
413044 (
413045         event_id
413046       , ledger_id
413047       , sla_ledger_id
413048       , description_language
413049       , object_name
413050       , object_type_code
413051       , line_number
413052       , source_application_id
413053       , source_type_code
413054       , source_code
413055       , source_value
413056       , source_meaning
413057       , created_by
413058       , creation_date
413059       , last_update_date
413060       , last_updated_by
413061       , last_update_login
413062       , program_update_date
413063       , program_application_id
413064       , program_id
413065       , request_id
413066 )
413067 SELECT  event_id
413068       , p_target_ledger_id
413069       , p_sla_ledger_id
413070       , p_language
413071       , object_name
413072       , object_type_code
413073       , line_number
413074       , source_application_id
413075       , source_type_code
413076       , source_code
413077       , SUBSTR(source_value,1,1996)
413078       , SUBSTR(source_meaning,1,200)
413079       , xla_environment_pkg.g_Usr_Id
413080       , TRUNC(SYSDATE)
413081       , TRUNC(SYSDATE)
413082       , xla_environment_pkg.g_Usr_Id
413083       , xla_environment_pkg.g_Login_Id
413084       , TRUNC(SYSDATE)
413085       , xla_environment_pkg.g_Prog_Appl_Id
413086       , xla_environment_pkg.g_Prog_Id
413087       , xla_environment_pkg.g_Req_Id
413088   FROM (
413089        SELECT xet.event_id                  event_id
413090             , l2.line_number                 line_number
413091             , CASE r
413092                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
413093                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
413094                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
413095                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
413096                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
413097                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
413098                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
413099                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
413100                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
413101                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
413102                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
413103                 
413104                ELSE null
413105               END                           object_name
413106             , CASE r
413107                 WHEN 1 THEN 'LINE' 
413108                 WHEN 2 THEN 'LINE' 
413109                 WHEN 3 THEN 'LINE' 
413110                 WHEN 4 THEN 'LINE' 
413111                 WHEN 5 THEN 'LINE' 
413112                 WHEN 6 THEN 'LINE' 
413113                 WHEN 7 THEN 'LINE' 
413114                 WHEN 8 THEN 'LINE' 
413115                 WHEN 9 THEN 'LINE' 
413116                 WHEN 10 THEN 'LINE' 
413117                 WHEN 11 THEN 'LINE' 
413118                 
413119                 ELSE null
413120               END                           object_type_code
413121             , CASE r
413122                 WHEN 1 THEN '707' 
413123                 WHEN 2 THEN '707' 
413124                 WHEN 3 THEN '707' 
413125                 WHEN 4 THEN '707' 
413126                 WHEN 5 THEN '707' 
413127                 WHEN 6 THEN '707' 
413128                 WHEN 7 THEN '707' 
413129                 WHEN 8 THEN '707' 
413130                 WHEN 9 THEN '707' 
413131                 WHEN 10 THEN '707' 
413132                 WHEN 11 THEN '707' 
413133                 
413134                 ELSE null
413135               END                           source_application_id
413136             , 'S'             source_type_code
413137             , CASE r
413138                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
413139                 WHEN 2 THEN 'COST_ELEMENT_ID' 
413140                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
413141                 WHEN 4 THEN 'CURRENCY_CODE' 
413142                 WHEN 5 THEN 'ENTERED_AMOUNT' 
413143                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
413144                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
413145                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
413146                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
413147                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
413148                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
413149                 
413150                 ELSE null
413151               END                           source_code
413152             , CASE r
413153                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
413154                 WHEN 2 THEN TO_CHAR(l2.COST_ELEMENT_ID)
413155                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
413156                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
413157                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
413158                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
413159                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
413160                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
413161                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
413162                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
413163                 WHEN 11 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
413164                 
413165                 ELSE null
413166               END                           source_value
413167             , CASE r
413168                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
413169                           1009615
413170                          ,TO_CHAR(l2.COST_ELEMENT_ID)
413171                          ,'COST_ELEMENT_ID'
413172                          ,'S'
413173                          ,707)
413174                 
413175                 ELSE null
413176               END               source_meaning
413177          FROM  xla_events_gt     xet  
413178         , CST_XLA_INV_LINES_V  l2
413179             ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
413180         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
413181           AND xet.event_type_code = C_EVENT_TYPE_CODE
413182             AND l2.event_id          = xet.event_id
413183 
413184 )
413185 ;
413186 --
413187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
413188 
413189       trace
413190          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
413191          ,p_level    => C_LEVEL_STATEMENT
413192          ,p_module   => l_log_module);
413193 
413194 END IF;
413195 
413196 
413197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
413198       trace
413199          (p_msg      => 'END of insert_sources_613'
413200          ,p_level    => C_LEVEL_PROCEDURE
413201          ,p_module   => l_log_module);
413202 END IF;
413203 EXCEPTION
413204   WHEN xla_exceptions_pkg.application_exception THEN
413205       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
413206             trace
413207                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
413208                ,p_level    => C_LEVEL_EXCEPTION
413209                ,p_module   => l_log_module);
413210       END IF;
413211       RAISE;
413212   WHEN OTHERS THEN
413213       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
413214             trace
413215                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
413216                ,p_level    => C_LEVEL_EXCEPTION
413217                ,p_module   => l_log_module);
413218        END IF;
413219        xla_exceptions_pkg.raise_message
413220            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_613');
413221 END insert_sources_613;
413222 --
413223 
413224 ---------------------------------------
413225 --
413226 -- PRIVATE FUNCTION
413227 --         EventType_613
413228 --
413229 ----------------------------------------
413230 --
413231 FUNCTION EventType_613
413232        (p_application_id         IN NUMBER
413233        ,p_base_ledger_id         IN NUMBER
413234        ,p_target_ledger_id       IN NUMBER
413235        ,p_language               IN VARCHAR2
413236        ,p_currency_code          IN VARCHAR2
413237        ,p_sla_ledger_id          IN NUMBER
413238        ,p_pad_start_date         IN DATE
413239        ,p_pad_end_date           IN DATE
413240        ,p_primary_ledger_id      IN NUMBER)
413241 RETURN BOOLEAN IS
413242 --
413243 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'UMISC_RCPT';
413244 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
413245 
413246 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
413247 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
413248 --
413249 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413250 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413251 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
413252 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
413253 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413254 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
413255 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
413256 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413257 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
413258 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
413259 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413260 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413261 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413262 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
413263 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
413264 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
413265 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
413266 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
413267 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
413268 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
413269 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
413270 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
413271 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
413272 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
413273 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
413274 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
413275 
413276 l_event_id                             NUMBER;
413277 l_previous_event_id                    NUMBER;
413278 l_first_event_id                       NUMBER;
413279 l_last_event_id                        NUMBER;
413280 
413281 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
413282 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
413283 --
413284 --
413285 l_result                    BOOLEAN := TRUE;
413286 l_rows                      NUMBER  := 1000;
413287 l_event_type_name           VARCHAR2(80) := 'User-defined Receipt';
413288 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
413289 l_description               VARCHAR2(4000);
413290 l_transaction_reversal      NUMBER;
413291 l_ae_header_id              NUMBER;
413292 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
413293 l_log_module                VARCHAR2(240);
413294 --
413295 l_acct_reversal_source      VARCHAR2(30);
413296 l_trx_reversal_source       VARCHAR2(30);
413297 
413298 l_continue_with_lines       BOOLEAN := TRUE;
413299 --
413300 l_acc_rev_gl_date_source    DATE;                      -- 4262811
413301 --
413302 type t_array_event_id is table of number index by binary_integer;
413303 
413304 l_rec_array_event                    t_rec_array_event;
413305 l_null_rec_array_event               t_rec_array_event;
413306 l_array_ae_header_id                 xla_number_array_type;
413307 l_actual_flag                        VARCHAR2(1) := NULL;
413308 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
413309 l_balance_type_code                  VARCHAR2(1) :=NULL;
413310 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
413311 
413312 --
413313 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
413314 --
413315 
413316 TYPE t_array_source_23 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_ACV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
413317 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
413318 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
413319 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
413320 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
413321 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
413322 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
413323 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
413324 
413325 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
413326 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
413327 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
413328 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
413329 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
413330 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
413331 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
413332 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
413333 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
413334 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
413335 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
413336 
413337 l_array_source_23              t_array_source_23;
413338 l_array_source_41              t_array_source_41;
413339 l_array_source_42              t_array_source_42;
413340 l_array_source_43              t_array_source_43;
413341 l_array_source_44              t_array_source_44;
413342 l_array_source_45              t_array_source_45;
413343 l_array_source_85              t_array_source_85;
413344 l_array_source_85_meaning      t_array_lookup_meaning;
413345 l_array_source_114              t_array_source_114;
413346 l_array_source_114_meaning      t_array_lookup_meaning;
413347 
413348 l_array_source_11      t_array_source_11;
413349 l_array_source_15      t_array_source_15;
413350 l_array_source_84      t_array_source_84;
413351 l_array_source_88      t_array_source_88;
413352 l_array_source_91      t_array_source_91;
413353 l_array_source_92      t_array_source_92;
413354 l_array_source_93      t_array_source_93;
413355 l_array_source_94      t_array_source_94;
413356 l_array_source_95      t_array_source_95;
413357 l_array_source_97      t_array_source_97;
413358 l_array_source_108      t_array_source_108;
413359 
413360 --
413361 CURSOR header_cur
413362 IS
413363 SELECT /*+ leading(xet) cardinality(xet,1) */
413364 -- Event Type Code: UMISC_RCPT
413365 -- Event Class Code: USER_DEFINE
413366     xet.entity_id
413367   , xet.legal_entity_id
413368   , xet.entity_code
413369   , xet.transaction_number
413370   , xet.event_id
413371   , xet.event_class_code
413372   , xet.event_type_code
413373   , xet.event_number
413374   , xet.event_date
413375   , xet.transaction_date
413376   , xet.reference_num_1
413377   , xet.reference_num_2
413378   , xet.reference_num_3
413379   , xet.reference_num_4
413380   , xet.reference_char_1
413381   , xet.reference_char_2
413382   , xet.reference_char_3
413383   , xet.reference_char_4
413384   , xet.reference_date_1
413385   , xet.reference_date_2
413386   , xet.reference_date_3
413387   , xet.reference_date_4
413388   , xet.event_created_by
413389   , xet.budgetary_control_flag 
413390   , h3.PLA_ACV_ACCOUNT    source_23
413391   , h3.PLA_MATERIAL_ACCOUNT    source_41
413392   , h3.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
413393   , h3.PLA_RESOURCE_ACCOUNT    source_43
413394   , h3.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
413395   , h3.PLA_OVERHEAD_ACCOUNT    source_45
413396   , h1.DISTRIBUTION_TYPE    source_85
413397   , fvl85.meaning   source_85_meaning
413398   , h1.TRANSFER_TO_GL_INDICATOR    source_114
413399   , fvl114.meaning   source_114_meaning
413400   FROM xla_events_gt     xet 
413401   , CST_XLA_INV_HEADERS_V  h1
413402   , CST_XLA_PLA_CATEGORY_REF_V  h3
413403   , fnd_lookup_values    fvl85
413404   , fnd_lookup_values    fvl114
413405  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
413406    and xet.event_type_code = C_EVENT_TYPE_CODE
413407    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
413408  AND h3.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID  AND h3.PLA_CAT_ITEM_ID   (+) = h1.INVENTORY_ITEM_ID  AND h3.PLA_SUBINV_CG   (+) = h1.H_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
413409   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
413410   AND fvl85.view_application_id(+) = 700
413411   AND fvl85.language(+)            = USERENV('LANG')
413412      AND fvl114.lookup_type(+)         = 'YES_NO'
413413   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
413414   AND fvl114.view_application_id(+) = 0
413415   AND fvl114.language(+)            = USERENV('LANG')
413416   
413417  ORDER BY event_id
413418 ;
413419 
413420 
413421 --
413422 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
413423 IS
413424 SELECT /*+ leading(xet) cardinality(xet,1) */
413425 -- Event Type Code: UMISC_RCPT
413426 -- Event Class Code: USER_DEFINE
413427     xet.entity_id
413428    ,xet.legal_entity_id
413429    ,xet.entity_code
413430    ,xet.transaction_number
413431    ,xet.event_id
413432    ,xet.event_class_code
413433    ,xet.event_type_code
413434    ,xet.event_number
413435    ,xet.event_date
413436    ,xet.transaction_date
413437    ,xet.reference_num_1
413438    ,xet.reference_num_2
413439    ,xet.reference_num_3
413440    ,xet.reference_num_4
413441    ,xet.reference_char_1
413442    ,xet.reference_char_2
413443    ,xet.reference_char_3
413444    ,xet.reference_char_4
413445    ,xet.reference_date_1
413446    ,xet.reference_date_2
413447    ,xet.reference_date_3
413448    ,xet.reference_date_4
413449    ,xet.event_created_by
413450    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
413451   , l2.CODE_COMBINATION_ID    source_11
413452   , l2.COST_ELEMENT_ID    source_15
413453   , l2.DISTRIBUTION_IDENTIFIER    source_84
413454   , l2.CURRENCY_CODE    source_88
413455   , l2.ENTERED_AMOUNT    source_91
413456   , l2.CURRENCY_CONVERSION_DATE    source_92
413457   , l2.CURRENCY_CONVERSION_RATE    source_93
413458   , l2.CURRENCY_CONVERSION_TYPE    source_94
413459   , l2.ACCOUNTED_AMOUNT    source_95
413460   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
413461   , l2.L_ORGANIZATION_CODE    source_108
413462   FROM xla_events_gt     xet 
413463   , CST_XLA_INV_LINES_V  l2
413464  WHERE xet.event_id between x_first_event_id and x_last_event_id
413465    and xet.event_date between p_pad_start_date and p_pad_end_date
413466    and xet.event_type_code = C_EVENT_TYPE_CODE
413467    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
413468 ;
413469 
413470 --
413471 BEGIN
413472 IF g_log_enabled THEN
413473    l_log_module := C_DEFAULT_MODULE||'.EventType_613';
413474 END IF;
413475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
413476    trace
413477       (p_msg      => 'BEGIN of EventType_613'
413478       ,p_level    => C_LEVEL_PROCEDURE
413479       ,p_module   => l_log_module);
413480 END IF;
413481 
413482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
413483    trace
413484       (p_msg      => 'p_application_id = '||p_application_id||
413485                      ' - p_base_ledger_id = '||p_base_ledger_id||
413486                      ' - p_target_ledger_id  = '||p_target_ledger_id||
413487                      ' - p_language = '||p_language||
413488                      ' - p_currency_code = '||p_currency_code||
413489                      ' - p_sla_ledger_id = '||p_sla_ledger_id
413490       ,p_level    => C_LEVEL_STATEMENT
413491       ,p_module   => l_log_module);
413492 END IF;
413493 --
413494 -- initialze arrays
413495 --
413496 g_array_event.DELETE;
413497 l_rec_array_event := l_null_rec_array_event;
413498 --
413499 --------------------------------------
413500 -- 4262811 Initialze MPA Line Number
413501 --------------------------------------
413502 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
413503 
413504 --
413505 
413506 --
413507 OPEN header_cur;
413508 --
413509 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
413510    trace
413511    (p_msg      => 'SQL - FETCH header_cur'
413512    ,p_level    => C_LEVEL_STATEMENT
413513    ,p_module   => l_log_module);
413514 END IF;
413515 --
413516 LOOP
413517 FETCH header_cur BULK COLLECT INTO
413518         l_array_entity_id
413519       , l_array_legal_entity_id
413520       , l_array_entity_code
413521       , l_array_transaction_num
413522       , l_array_event_id
413523       , l_array_class_code
413524       , l_array_event_type
413525       , l_array_event_number
413526       , l_array_event_date
413527       , l_array_transaction_date
413528       , l_array_reference_num_1
413529       , l_array_reference_num_2
413530       , l_array_reference_num_3
413531       , l_array_reference_num_4
413532       , l_array_reference_char_1
413533       , l_array_reference_char_2
413534       , l_array_reference_char_3
413535       , l_array_reference_char_4
413536       , l_array_reference_date_1
413537       , l_array_reference_date_2
413538       , l_array_reference_date_3
413539       , l_array_reference_date_4
413540       , l_array_event_created_by
413541       , l_array_budgetary_control_flag 
413542       , l_array_source_23
413543       , l_array_source_41
413544       , l_array_source_42
413545       , l_array_source_43
413546       , l_array_source_44
413547       , l_array_source_45
413548       , l_array_source_85
413549       , l_array_source_85_meaning
413550       , l_array_source_114
413551       , l_array_source_114_meaning
413552       LIMIT l_rows;
413553 --
413554 IF (C_LEVEL_EVENT >= g_log_level) THEN
413555    trace
413556    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
413557    ,p_level    => C_LEVEL_EVENT
413558    ,p_module   => l_log_module);
413559 END IF;
413560 --
413561 EXIT WHEN l_array_entity_id.COUNT = 0;
413562 
413563 -- initialize arrays
413564 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
413565 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
413566 
413567 --
413568 -- Bug 4458708
413569 --
413570 XLA_AE_LINES_PKG.g_LineNumber := 0;
413571 
413572 
413573 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
413574 g_last_hdr_idx := l_array_event_id.LAST;
413575 --
413576 -- loop for the headers. Each iteration is for each header extract row
413577 -- fetched in header cursor
413578 --
413579 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
413580 
413581 --
413582 -- set event info as cache for other routines to refer event attributes
413583 --
413584 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
413585    (p_application_id           => p_application_id
413586    ,p_primary_ledger_id        => p_primary_ledger_id
413587    ,p_base_ledger_id           => p_base_ledger_id
413588    ,p_target_ledger_id         => p_target_ledger_id
413589    ,p_entity_id                => l_array_entity_id(hdr_idx)
413590    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
413591    ,p_entity_code              => l_array_entity_code(hdr_idx)
413592    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
413593    ,p_event_id                 => l_array_event_id(hdr_idx)
413594    ,p_event_class_code         => l_array_class_code(hdr_idx)
413595    ,p_event_type_code          => l_array_event_type(hdr_idx)
413596    ,p_event_number             => l_array_event_number(hdr_idx)
413597    ,p_event_date               => l_array_event_date(hdr_idx)
413598    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
413599    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
413600    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
413601    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
413602    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
413603    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
413604    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
413605    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
413606    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
413607    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
413608    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
413609    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
413610    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
413611    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
413612    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
413613 
413614 --
413615 -- set the status of entry to C_VALID (0)
413616 --
413617 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
413618 
413619 --
413620 -- initialize a row for ae header
413621 --
413622 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
413623 
413624 l_event_id := l_array_event_id(hdr_idx);
413625 
413626 --
413627 -- storing the hdr_idx for event. May be used by line cursor.
413628 --
413629 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
413630 
413631 --
413632 -- store sources from header extract. This can be improved to
413633 -- store only those sources from header extract that may be used in lines
413634 --
413635 
413636 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
413637 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
413638 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
413639 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
413640 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
413641 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
413642 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
413643 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
413644 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
413645 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
413646 
413647 --
413648 -- initilaize the status of ae headers for diffrent balance types
413649 -- the status is initialised to C_NOT_CREATED (2)
413650 --
413651 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
413652 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
413653 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
413654 
413655 --
413656 -- call api to validate and store accounting attributes for header
413657 --
413658 
413659 ------------------------------------------------------------
413660 -- Accrual Reversal : to get date for Standard Source (NONE)
413661 ------------------------------------------------------------
413662 l_acc_rev_gl_date_source := NULL;
413663 
413664      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
413665       l_rec_acct_attrs.array_date_value(1) := 
413666 xla_ae_sources_pkg.GetSystemSourceDate(
413667    p_source_code           => 'XLA_REFERENCE_DATE_1'
413668  , p_source_type_code      => 'Y'
413669  , p_source_application_id =>  602
413670 );
413671      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
413672       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
413673 
413674 
413675 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
413676 
413677 XLA_AE_HEADER_PKG.SetJeCategoryName;
413678 
413679 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
413680 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
413681 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
413682 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
413683 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
413684 
413685 
413686 -- No header level analytical criteria
413687 
413688 --
413689 --accounting attribute enhancement, bug 3612931
413690 --
413691 l_trx_reversal_source := SUBSTR(NULL, 1,30);
413692 
413693 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
413694    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
413695 
413696    xla_accounting_err_pkg.build_message
413697       (p_appli_s_name            => 'XLA'
413698       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
413699       ,p_token_1                 => 'ACCT_ATTR_NAME'
413700       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
413701       ,p_token_2                 => 'PRODUCT_NAME'
413702       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
413703       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
413704       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
413705       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
413706 
413707 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
413708    --
413709    -- following sets the accounting attributes needed to reverse
413710    -- accounting for a distributeion
413711    --
413712    xla_ae_lines_pkg.SetTrxReversalAttrs
413713       (p_event_id              => l_event_id
413714       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
413715       ,p_trx_reversal_source   => l_trx_reversal_source);
413716 
413717 END IF;
413718 
413719 
413720 ----------------------------------------------------------------
413721 -- 4262811 -  update the header statuses to invalid in need be
413722 ----------------------------------------------------------------
413723 --
413724 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
413725 
413726 
413727   -----------------------------------------------
413728   -- No accrual reversal for the event class/type
413729   -----------------------------------------------
413730 ----------------------------------------------------------------
413731 
413732 --
413733 -- this ends the header loop iteration for one bulk fetch
413734 --
413735 END LOOP;
413736 
413737 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
413738 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
413739 
413740 --
413741 -- insert dummy rows into lines gt table that were created due to
413742 -- transaction reversals
413743 --
413744 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
413745    l_result := XLA_AE_LINES_PKG.InsertLines;
413746 END IF;
413747 
413748 --
413749 -- reset the temp_line_num for each set of events fetched from header
413750 -- cursor rather than doing it for each new event in line cursor
413751 -- Bug 3939231
413752 --
413753 xla_ae_lines_pkg.g_temp_line_num := 0;
413754 
413755 
413756 
413757 --
413758 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
413759 --
413760 --
413761 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
413762 
413763       trace
413764          (p_msg      => 'SQL - FETCH line_cur'
413765          ,p_level    => C_LEVEL_STATEMENT
413766          ,p_module   => l_log_module);
413767 
413768 END IF;
413769 --
413770 --
413771 LOOP
413772   --
413773   FETCH line_cur BULK COLLECT INTO
413774         l_array_entity_id
413775       , l_array_legal_entity_id
413776       , l_array_entity_code
413777       , l_array_transaction_num
413778       , l_array_event_id
413779       , l_array_class_code
413780       , l_array_event_type
413781       , l_array_event_number
413782       , l_array_event_date
413783       , l_array_transaction_date
413784       , l_array_reference_num_1
413785       , l_array_reference_num_2
413786       , l_array_reference_num_3
413787       , l_array_reference_num_4
413788       , l_array_reference_char_1
413789       , l_array_reference_char_2
413790       , l_array_reference_char_3
413791       , l_array_reference_char_4
413792       , l_array_reference_date_1
413793       , l_array_reference_date_2
413794       , l_array_reference_date_3
413795       , l_array_reference_date_4
413796       , l_array_event_created_by
413797       , l_array_budgetary_control_flag
413798       , l_array_extract_line_num 
413799       , l_array_source_11
413800       , l_array_source_15
413801       , l_array_source_84
413802       , l_array_source_88
413803       , l_array_source_91
413804       , l_array_source_92
413805       , l_array_source_93
413806       , l_array_source_94
413807       , l_array_source_95
413808       , l_array_source_97
413809       , l_array_source_108
413810       LIMIT l_rows;
413811 
413812   --
413813   IF (C_LEVEL_EVENT >= g_log_level) THEN
413814             trace
413815                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
413816                ,p_level    => C_LEVEL_EVENT
413817                ,p_module   => l_log_module);
413818   END IF;
413819   --
413820   EXIT WHEN l_array_entity_id.count = 0;
413821 
413822   XLA_AE_LINES_PKG.g_rec_lines := null;
413823 
413824 --
413825 -- Bug 4458708
413826 --
413827 XLA_AE_LINES_PKG.g_LineNumber := 0;
413828 --
413829 --
413830 
413831 FOR Idx IN 1..l_array_event_id.count LOOP
413832    --
413833    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
413834    --
413835    l_event_id := l_array_event_id(idx);  -- 5648433
413836 
413837    --
413838    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
413839    --
413840 
413841    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
413842              (g_array_event(l_event_id).array_value_num('header_index'))
413843          ,'N'
413844          ) <> 'Y'
413845    THEN
413846       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
413847          trace
413848             (p_msg      => 'Trancaction revesal option is not Y '
413849             ,p_level    => C_LEVEL_STATEMENT
413850             ,p_module   => l_log_module);
413851       END IF;
413852 
413853 --
413854 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
413855 --
413856 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
413857 --
413858 -- set event info as cache for other routines to refer event attributes
413859 --
413860 
413861 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
413862    l_previous_event_id := l_event_id;
413863 
413864    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
413865       (p_application_id           => p_application_id
413866       ,p_primary_ledger_id        => p_primary_ledger_id
413867       ,p_base_ledger_id           => p_base_ledger_id
413868       ,p_target_ledger_id         => p_target_ledger_id
413869       ,p_entity_id                => l_array_entity_id(Idx)
413870       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
413871       ,p_entity_code              => l_array_entity_code(Idx)
413872       ,p_transaction_num          => l_array_transaction_num(Idx)
413873       ,p_event_id                 => l_array_event_id(Idx)
413874       ,p_event_class_code         => l_array_class_code(Idx)
413875       ,p_event_type_code          => l_array_event_type(Idx)
413876       ,p_event_number             => l_array_event_number(Idx)
413877       ,p_event_date               => l_array_event_date(Idx)
413878       ,p_transaction_date         => l_array_transaction_date(Idx)
413879       ,p_reference_num_1          => l_array_reference_num_1(Idx)
413880       ,p_reference_num_2          => l_array_reference_num_2(Idx)
413881       ,p_reference_num_3          => l_array_reference_num_3(Idx)
413882       ,p_reference_num_4          => l_array_reference_num_4(Idx)
413883       ,p_reference_char_1         => l_array_reference_char_1(Idx)
413884       ,p_reference_char_2         => l_array_reference_char_2(Idx)
413885       ,p_reference_char_3         => l_array_reference_char_3(Idx)
413886       ,p_reference_char_4         => l_array_reference_char_4(Idx)
413887       ,p_reference_date_1         => l_array_reference_date_1(Idx)
413888       ,p_reference_date_2         => l_array_reference_date_2(Idx)
413889       ,p_reference_date_3         => l_array_reference_date_3(Idx)
413890       ,p_reference_date_4         => l_array_reference_date_4(Idx)
413891       ,p_event_created_by         => l_array_event_created_by(Idx)
413892       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
413893        --
413894 END IF;
413895 
413896 
413897 
413898 --
413899 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
413900 
413901 l_acct_reversal_source := SUBSTR(NULL, 1,30);
413902 
413903 IF l_continue_with_lines THEN
413904    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
413905       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
413906 
413907       xla_accounting_err_pkg.build_message
413908          (p_appli_s_name            => 'XLA'
413909          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
413910          ,p_token_1                 => 'LINE_NUMBER'
413911          ,p_value_1                 => l_array_extract_line_num(Idx)
413912          ,p_token_2                 => 'PRODUCT_NAME'
413913          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
413914          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
413915          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
413916          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
413917 
413918    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
413919       --
413920       -- following sets the accounting attributes needed to reverse
413921       -- accounting for a distributeion
413922       --
413923 
413924       --
413925       -- 5217187
413926       --
413927       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
413928       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
413929                                        g_array_event(l_event_id).array_value_num('header_index'));
413930       --
413931       --
413932 
413933       -- No reversal code generated
413934 
413935       xla_ae_lines_pkg.SetAcctReversalAttrs
413936          (p_event_id             => l_event_id
413937          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
413938          ,p_calculate_acctd_flag => l_calculate_acctd_flag
413939          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
413940    END IF;
413941 
413942    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
413943        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
413944 
413945 --
413946 AcctLineType_112 (
413947  p_application_id  => p_application_id
413948  ,p_event_id     => l_event_id
413949  ,p_calculate_acctd_flag => l_calculate_acctd_flag
413950  ,p_calculate_g_l_flag => l_calculate_g_l_flag
413951  ,p_actual_flag => l_actual_flag
413952  ,p_balance_type_code => l_balance_type_code
413953  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
413954  
413955  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
413956  , p_source_84 => l_array_source_84(Idx)
413957  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
413958  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
413959  , p_source_88 => l_array_source_88(Idx)
413960  , p_source_91 => l_array_source_91(Idx)
413961  , p_source_92 => l_array_source_92(Idx)
413962  , p_source_93 => l_array_source_93(Idx)
413963  , p_source_94 => l_array_source_94(Idx)
413964  , p_source_95 => l_array_source_95(Idx)
413965  , p_source_97 => l_array_source_97(Idx)
413966  );
413967 If(l_balance_type_code = 'A') THEN
413968   l_actual_gain_loss_ref := l_gain_or_loss_ref;
413969 END IF;
413970 
413971 --
413972 
413973 
413974 --
413975 AcctLineType_253 (
413976  p_application_id  => p_application_id
413977  ,p_event_id     => l_event_id
413978  ,p_calculate_acctd_flag => l_calculate_acctd_flag
413979  ,p_calculate_g_l_flag => l_calculate_g_l_flag
413980  ,p_actual_flag => l_actual_flag
413981  ,p_balance_type_code => l_balance_type_code
413982  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
413983  
413984  , p_source_15 => l_array_source_15(Idx)
413985  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
413986  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
413987  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
413988  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
413989  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
413990  , p_source_84 => l_array_source_84(Idx)
413991  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
413992  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
413993  , p_source_88 => l_array_source_88(Idx)
413994  , p_source_91 => l_array_source_91(Idx)
413995  , p_source_92 => l_array_source_92(Idx)
413996  , p_source_93 => l_array_source_93(Idx)
413997  , p_source_94 => l_array_source_94(Idx)
413998  , p_source_95 => l_array_source_95(Idx)
413999  , p_source_97 => l_array_source_97(Idx)
414000  , p_source_108 => l_array_source_108(Idx)
414001  );
414002 If(l_balance_type_code = 'A') THEN
414003   l_actual_gain_loss_ref := l_gain_or_loss_ref;
414004 END IF;
414005 
414006 --
414007 
414008 
414009 --
414010 AcctLineType_368 (
414011  p_application_id  => p_application_id
414012  ,p_event_id     => l_event_id
414013  ,p_calculate_acctd_flag => l_calculate_acctd_flag
414014  ,p_calculate_g_l_flag => l_calculate_g_l_flag
414015  ,p_actual_flag => l_actual_flag
414016  ,p_balance_type_code => l_balance_type_code
414017  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
414018  
414019  , p_source_11 => l_array_source_11(Idx)
414020  , p_source_84 => l_array_source_84(Idx)
414021  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
414022  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
414023  , p_source_88 => l_array_source_88(Idx)
414024  , p_source_91 => l_array_source_91(Idx)
414025  , p_source_92 => l_array_source_92(Idx)
414026  , p_source_93 => l_array_source_93(Idx)
414027  , p_source_94 => l_array_source_94(Idx)
414028  , p_source_95 => l_array_source_95(Idx)
414029  , p_source_97 => l_array_source_97(Idx)
414030  );
414031 If(l_balance_type_code = 'A') THEN
414032   l_actual_gain_loss_ref := l_gain_or_loss_ref;
414033 END IF;
414034 
414035 --
414036 
414037       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
414038       -- or secondary ledger that has different currency with primary
414039       -- or alc that is calculated by sla
414040       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
414041             (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'))
414042 
414043 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
414044 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
414045           AND (l_actual_flag = 'A')) THEN
414046         XLA_AE_LINES_PKG.CreateGainOrLossLines(
414047           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
414048          ,p_application_id   => p_application_id
414049          ,p_amb_context_code => 'DEFAULT'
414050          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
414051          ,p_event_class_code => C_EVENT_CLASS_CODE
414052          ,p_event_type_code  => C_EVENT_TYPE_CODE
414053          
414054          ,p_gain_ccid        => -1
414055          ,p_loss_ccid        => -1
414056 
414057          ,p_actual_flag      => l_actual_flag
414058          ,p_enc_flag         => null
414059          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
414060          ,p_enc_g_l_ref      => null
414061          );
414062       END IF;
414063    END IF;
414064 END IF;
414065 
414066    ELSE
414067       --
414068       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
414069       --
414070       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
414071          trace
414072             (p_msg      => 'Trancaction revesal option is Y'
414073             ,p_level    => C_LEVEL_STATEMENT
414074             ,p_module   => l_log_module);
414075       END IF;
414076    END IF;
414077 
414078 END LOOP;
414079 l_result := XLA_AE_LINES_PKG.InsertLines ;
414080 end loop;
414081 close line_cur;
414082 
414083 
414084 --
414085 -- insert headers into xla_ae_headers_gt table
414086 --
414087 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
414088 
414089 -- insert into errors table here.
414090 
414091 END LOOP;
414092 
414093 --
414094 -- 4865292
414095 --
414096 -- Compare g_hdr_extract_count with event count in
414097 -- CreateHeadersAndLines.
414098 --
414099 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
414100 
414101 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
414102    trace (p_msg     => '# rows extracted from header extract objects '
414103                     || ' (running total): '
414104                     || g_hdr_extract_count
414105          ,p_level   => C_LEVEL_STATEMENT
414106          ,p_module  => l_log_module);
414107 END IF;
414108 
414109 CLOSE header_cur;
414110 --
414111 
414112 --
414113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
414114    trace
414115       (p_msg      => 'END of EventType_613'
414116       ,p_level    => C_LEVEL_PROCEDURE
414117       ,p_module   => l_log_module);
414118 END IF;
414119 --
414120 RETURN l_result;
414121 EXCEPTION
414122 WHEN xla_exceptions_pkg.application_exception THEN
414123    
414124 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
414125 
414126    
414127 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
414128 
414129    RAISE;
414130 
414131 WHEN NO_DATA_FOUND THEN
414132 
414133 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
414134 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
414135 
414136 FOR header_record IN header_cur
414137 LOOP
414138     l_array_header_events(header_record.event_id) := header_record.event_id;
414139 END LOOP;
414140 
414141 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
414142 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
414143 
414144 fnd_file.put_line(fnd_file.LOG, '                    ');
414145 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
414146 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
414147 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
414148 
414149 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
414150 LOOP
414151 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
414152 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
414153         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
414154 	END IF;
414155 END LOOP;
414156 
414157 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
414158 fnd_file.put_line(fnd_file.LOG, '                    ');
414159 
414160 
414161 xla_exceptions_pkg.raise_message
414162       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_613');
414163 
414164 
414165 WHEN OTHERS THEN
414166    xla_exceptions_pkg.raise_message
414167       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_613');
414168 END EventType_613;
414169 --
414170 
414171 ---------------------------------------
414172 --
414173 -- PRIVATE PROCEDURE
414174 --         insert_sources_614
414175 --
414176 ----------------------------------------
414177 --
414178 PROCEDURE insert_sources_614(
414179                                 p_target_ledger_id       IN NUMBER
414180                               , p_language               IN VARCHAR2
414181                               , p_sla_ledger_id          IN NUMBER
414182                               , p_pad_start_date         IN DATE
414183                               , p_pad_end_date           IN DATE
414184                          )
414185 IS
414186 
414187 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USUB_TXFR';
414188 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
414189 p_apps_owner                   VARCHAR2(30);
414190 l_log_module                   VARCHAR2(240);
414191 BEGIN
414192 IF g_log_enabled THEN
414193       l_log_module := C_DEFAULT_MODULE||'.insert_sources_614';
414194 END IF;
414195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
414196 
414197       trace
414198          (p_msg      => 'BEGIN of insert_sources_614'
414199          ,p_level    => C_LEVEL_PROCEDURE
414200          ,p_module   => l_log_module);
414201 
414202 END IF;
414203 
414204 -- select APPS owner
414205 SELECT oracle_username
414206   INTO p_apps_owner
414207   FROM fnd_oracle_userid
414208  WHERE read_only_flag = 'U'
414209 ;
414210 
414211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
414212       trace
414213          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
414214                         ' - p_language = '||p_language||
414215                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
414216                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
414217                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
414218                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
414219          ,p_level    => C_LEVEL_STATEMENT
414220          ,p_module   => l_log_module);
414221 END IF;
414222 
414223 
414224 --
414225 INSERT INTO xla_diag_sources --hdr1
414226 (
414227         event_id
414228       , ledger_id
414229       , sla_ledger_id
414230       , description_language
414231       , object_name
414232       , object_type_code
414233       , line_number
414234       , source_application_id
414235       , source_type_code
414236       , source_code
414237       , source_value
414238       , source_meaning
414239       , created_by
414240       , creation_date
414241       , last_update_date
414242       , last_updated_by
414243       , last_update_login
414244       , program_update_date
414245       , program_application_id
414246       , program_id
414247       , request_id
414248 )
414249 SELECT
414250         event_id
414251       , p_target_ledger_id
414252       , p_sla_ledger_id
414253       , p_language
414254       , object_name
414255       , object_type_code
414256       , line_number
414257       , source_application_id
414258       , source_type_code
414259       , source_code
414260       , SUBSTR(source_value ,1,1996)
414261       , SUBSTR(source_meaning,1,200)
414262       , xla_environment_pkg.g_Usr_Id
414263       , TRUNC(SYSDATE)
414264       , TRUNC(SYSDATE)
414265       , xla_environment_pkg.g_Usr_Id
414266       , xla_environment_pkg.g_Login_Id
414267       , TRUNC(SYSDATE)
414268       , xla_environment_pkg.g_Prog_Appl_Id
414269       , xla_environment_pkg.g_Prog_Id
414270       , xla_environment_pkg.g_Req_Id
414271   FROM (
414272        SELECT xet.event_id                  event_id
414273             , 0                             line_number
414274             , CASE r
414275                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
414276                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
414277                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
414278                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
414279                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
414280                 WHEN 6 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414281                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414282                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414283                 WHEN 9 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
414284                 WHEN 10 THEN 'CST_XLA_INV_HEADERS_V' 
414285                 WHEN 11 THEN 'CST_XLA_INV_HEADERS_V' 
414286                 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V' 
414287                 WHEN 13 THEN 'CST_XLA_INV_HEADERS_V' 
414288                 WHEN 14 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414289                 WHEN 15 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414290                 WHEN 16 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414291                 WHEN 17 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414292                 WHEN 18 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
414293                 WHEN 19 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
414294                 WHEN 20 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
414295                 WHEN 21 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
414296                 WHEN 22 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
414297                 WHEN 23 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
414298                 WHEN 24 THEN 'CST_XLA_TRF_PLA_CAT_REF_V' 
414299                 WHEN 25 THEN 'CST_XLA_INV_HEADERS_V' 
414300                 WHEN 26 THEN 'CST_XLA_INV_HEADERS_V' 
414301                 
414302                ELSE null
414303               END                           object_name
414304             , CASE r
414305                 WHEN 1 THEN 'HEADER' 
414306                 WHEN 2 THEN 'HEADER' 
414307                 WHEN 3 THEN 'HEADER' 
414308                 WHEN 4 THEN 'HEADER' 
414309                 WHEN 5 THEN 'HEADER' 
414310                 WHEN 6 THEN 'HEADER' 
414311                 WHEN 7 THEN 'HEADER' 
414312                 WHEN 8 THEN 'HEADER' 
414313                 WHEN 9 THEN 'HEADER' 
414314                 WHEN 10 THEN 'HEADER' 
414315                 WHEN 11 THEN 'HEADER' 
414316                 WHEN 12 THEN 'HEADER' 
414317                 WHEN 13 THEN 'HEADER' 
414318                 WHEN 14 THEN 'HEADER' 
414319                 WHEN 15 THEN 'HEADER' 
414320                 WHEN 16 THEN 'HEADER' 
414321                 WHEN 17 THEN 'HEADER' 
414322                 WHEN 18 THEN 'HEADER' 
414323                 WHEN 19 THEN 'HEADER' 
414324                 WHEN 20 THEN 'HEADER' 
414325                 WHEN 21 THEN 'HEADER' 
414326                 WHEN 22 THEN 'HEADER' 
414327                 WHEN 23 THEN 'HEADER' 
414328                 WHEN 24 THEN 'HEADER' 
414329                 WHEN 25 THEN 'HEADER' 
414330                 WHEN 26 THEN 'HEADER' 
414331                 
414332                 ELSE null
414333               END                           object_type_code
414334             , CASE r
414335                 WHEN 1 THEN '707' 
414336                 WHEN 2 THEN '707' 
414337                 WHEN 3 THEN '707' 
414338                 WHEN 4 THEN '707' 
414339                 WHEN 5 THEN '707' 
414340                 WHEN 6 THEN '707' 
414341                 WHEN 7 THEN '707' 
414342                 WHEN 8 THEN '707' 
414343                 WHEN 9 THEN '707' 
414344                 WHEN 10 THEN '707' 
414345                 WHEN 11 THEN '707' 
414346                 WHEN 12 THEN '707' 
414347                 WHEN 13 THEN '707' 
414348                 WHEN 14 THEN '707' 
414349                 WHEN 15 THEN '707' 
414350                 WHEN 16 THEN '707' 
414351                 WHEN 17 THEN '707' 
414352                 WHEN 18 THEN '707' 
414353                 WHEN 19 THEN '707' 
414354                 WHEN 20 THEN '707' 
414355                 WHEN 21 THEN '707' 
414356                 WHEN 22 THEN '707' 
414357                 WHEN 23 THEN '707' 
414358                 WHEN 24 THEN '707' 
414359                 WHEN 25 THEN '707' 
414360                 WHEN 26 THEN '707' 
414361                 
414362                 ELSE null
414363               END                           source_application_id
414364             , 'S'             source_type_code
414365             , CASE r
414366                 WHEN 1 THEN 'TRANSACTION_ID' 
414367                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
414368                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
414369                 WHEN 4 THEN 'TRANSACTION_UOM' 
414370                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
414371                 WHEN 6 THEN 'PLA_BRIDGING_ACCOUNT' 
414372                 WHEN 7 THEN 'PLA_ACV_ACCOUNT' 
414373                 WHEN 8 THEN 'PLA_EXPENSE_ACCOUNT' 
414374                 WHEN 9 THEN 'TRF_PLA_EXPENSE_ACCT' 
414375                 WHEN 10 THEN 'H_TRANSFER_COST_GROUP_ID' 
414376                 WHEN 11 THEN 'H_COST_GROUP_ID' 
414377                 WHEN 12 THEN 'H_SUBINVENTORY_CODE' 
414378                 WHEN 13 THEN 'H_TRANSFER_SUBINVENTORY' 
414379                 WHEN 14 THEN 'PLA_MATERIAL_ACCOUNT' 
414380                 WHEN 15 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
414381                 WHEN 16 THEN 'PLA_RESOURCE_ACCOUNT' 
414382                 WHEN 17 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
414383                 WHEN 18 THEN 'PLA_OVERHEAD_ACCOUNT' 
414384                 WHEN 19 THEN 'TRF_PLA_BRIDGING_ACCT' 
414385                 WHEN 20 THEN 'TRF_PLA_MATERIAL_ACCT' 
414386                 WHEN 21 THEN 'TRF_PLA_MATERIAL_OVERHEAD_ACCT' 
414387                 WHEN 22 THEN 'TRF_PLA_RESOURCE_ACCT' 
414388                 WHEN 23 THEN 'TRF_PLA_OUTSIDE_PROCESS_ACCT' 
414389                 WHEN 24 THEN 'TRF_PLA_OVERHEAD_ACCT' 
414390                 WHEN 25 THEN 'DISTRIBUTION_TYPE' 
414391                 WHEN 26 THEN 'TRANSFER_TO_GL_INDICATOR' 
414392                 
414393                 ELSE null
414394               END                           source_code
414395             , CASE r
414396                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
414397                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
414398                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
414399                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
414400                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
414401                 WHEN 6 THEN TO_CHAR(h6.PLA_BRIDGING_ACCOUNT)
414402                 WHEN 7 THEN TO_CHAR(h6.PLA_ACV_ACCOUNT)
414403                 WHEN 8 THEN TO_CHAR(h6.PLA_EXPENSE_ACCOUNT)
414404                 WHEN 9 THEN TO_CHAR(h7.TRF_PLA_EXPENSE_ACCT)
414405                 WHEN 10 THEN TO_CHAR(h1.H_TRANSFER_COST_GROUP_ID)
414406                 WHEN 11 THEN TO_CHAR(h1.H_COST_GROUP_ID)
414407                 WHEN 12 THEN TO_CHAR(h1.H_SUBINVENTORY_CODE)
414408                 WHEN 13 THEN TO_CHAR(h1.H_TRANSFER_SUBINVENTORY)
414409                 WHEN 14 THEN TO_CHAR(h6.PLA_MATERIAL_ACCOUNT)
414410                 WHEN 15 THEN TO_CHAR(h6.PLA_MATERIAL_OVERHEAD_ACCOUNT)
414411                 WHEN 16 THEN TO_CHAR(h6.PLA_RESOURCE_ACCOUNT)
414412                 WHEN 17 THEN TO_CHAR(h6.PLA_OUTSIDE_PROCESSING_ACCOUNT)
414413                 WHEN 18 THEN TO_CHAR(h6.PLA_OVERHEAD_ACCOUNT)
414414                 WHEN 19 THEN TO_CHAR(h7.TRF_PLA_BRIDGING_ACCT)
414415                 WHEN 20 THEN TO_CHAR(h7.TRF_PLA_MATERIAL_ACCT)
414416                 WHEN 21 THEN TO_CHAR(h7.TRF_PLA_MATERIAL_OVERHEAD_ACCT)
414417                 WHEN 22 THEN TO_CHAR(h7.TRF_PLA_RESOURCE_ACCT)
414418                 WHEN 23 THEN TO_CHAR(h7.TRF_PLA_OUTSIDE_PROCESS_ACCT)
414419                 WHEN 24 THEN TO_CHAR(h7.TRF_PLA_OVERHEAD_ACCT)
414420                 WHEN 25 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
414421                 WHEN 26 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
414422                 
414423                 ELSE null
414424               END                           source_value
414425             , CASE r
414426                 WHEN 25 THEN fvl85.meaning
414427                 WHEN 26 THEN fvl114.meaning
414428                 
414429                 ELSE null
414430               END               source_meaning
414431         FROM xla_events_gt     xet  
414432       , CST_XLA_INV_HEADERS_V  h1
414433       , CST_XLA_INV_REF_V  h3
414434       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
414435       , CST_XLA_INV_TXN_TYPES_REF_V  h5
414436       , CST_XLA_PLA_CATEGORY_REF_V  h6
414437       , CST_XLA_TRF_PLA_CAT_REF_V  h7
414438   , fnd_lookup_values    fvl85
414439   , fnd_lookup_values    fvl114
414440             ,(select rownum r from all_objects where rownum <= 26 and owner = p_apps_owner)
414441        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
414442          AND xet.event_type_code = C_EVENT_TYPE_CODE
414443             AND h1.event_id = xet.event_id
414444  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id  (+) = h1.inventory_item_id  and h4.organization_id  (+) = h1.organization_id AND h5.inv_transaction_type_id  (+) = h1.transaction_type_id AND h6.pla_cat_organization_id  (+) = h1.organization_id  and h6.pla_cat_item_id   (+) = h1.inventory_item_id  and h6.pla_subinv_cg   (+) = h1.h_subinv_cg AND h7.trf_pla_cat_organization_id  (+) = h1.transfer_organization_id  and h7.trf_pla_cat_item_id  (+) = h1.inventory_item_id  and h7.trf_pla_subinv_cg  (+) = h1.h_trf_subinv_cg   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
414445   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
414446   AND fvl85.view_application_id(+) = 700
414447   AND fvl85.language(+)            = USERENV('LANG')
414448      AND fvl114.lookup_type(+)         = 'YES_NO'
414449   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
414450   AND fvl114.view_application_id(+) = 0
414451   AND fvl114.language(+)            = USERENV('LANG')
414452   
414453 )
414454 ;
414455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
414456 
414457       trace
414458          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
414459          ,p_level    => C_LEVEL_STATEMENT
414460          ,p_module   => l_log_module);
414461 
414462 END IF;
414463 --
414464 
414465 
414466 
414467 --
414468 INSERT INTO xla_diag_sources --line1
414469 (
414470         event_id
414471       , ledger_id
414472       , sla_ledger_id
414473       , description_language
414474       , object_name
414475       , object_type_code
414476       , line_number
414477       , source_application_id
414478       , source_type_code
414479       , source_code
414480       , source_value
414481       , source_meaning
414482       , created_by
414483       , creation_date
414484       , last_update_date
414485       , last_updated_by
414486       , last_update_login
414487       , program_update_date
414488       , program_application_id
414489       , program_id
414490       , request_id
414491 )
414492 SELECT  event_id
414493       , p_target_ledger_id
414494       , p_sla_ledger_id
414495       , p_language
414496       , object_name
414497       , object_type_code
414498       , line_number
414499       , source_application_id
414500       , source_type_code
414501       , source_code
414502       , SUBSTR(source_value,1,1996)
414503       , SUBSTR(source_meaning,1,200)
414504       , xla_environment_pkg.g_Usr_Id
414505       , TRUNC(SYSDATE)
414506       , TRUNC(SYSDATE)
414507       , xla_environment_pkg.g_Usr_Id
414508       , xla_environment_pkg.g_Login_Id
414509       , TRUNC(SYSDATE)
414510       , xla_environment_pkg.g_Prog_Appl_Id
414511       , xla_environment_pkg.g_Prog_Id
414512       , xla_environment_pkg.g_Req_Id
414513   FROM (
414514        SELECT xet.event_id                  event_id
414515             , l2.line_number                 line_number
414516             , CASE r
414517                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
414518                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
414519                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
414520                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
414521                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
414522                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
414523                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
414524                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
414525                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
414526                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
414527                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
414528                 WHEN 12 THEN 'CST_XLA_INV_LINES_V' 
414529                 
414530                ELSE null
414531               END                           object_name
414532             , CASE r
414533                 WHEN 1 THEN 'LINE' 
414534                 WHEN 2 THEN 'LINE' 
414535                 WHEN 3 THEN 'LINE' 
414536                 WHEN 4 THEN 'LINE' 
414537                 WHEN 5 THEN 'LINE' 
414538                 WHEN 6 THEN 'LINE' 
414539                 WHEN 7 THEN 'LINE' 
414540                 WHEN 8 THEN 'LINE' 
414541                 WHEN 9 THEN 'LINE' 
414542                 WHEN 10 THEN 'LINE' 
414543                 WHEN 11 THEN 'LINE' 
414544                 WHEN 12 THEN 'LINE' 
414545                 
414546                 ELSE null
414547               END                           object_type_code
414548             , CASE r
414549                 WHEN 1 THEN '707' 
414550                 WHEN 2 THEN '707' 
414551                 WHEN 3 THEN '707' 
414552                 WHEN 4 THEN '707' 
414553                 WHEN 5 THEN '707' 
414554                 WHEN 6 THEN '707' 
414555                 WHEN 7 THEN '707' 
414556                 WHEN 8 THEN '707' 
414557                 WHEN 9 THEN '707' 
414558                 WHEN 10 THEN '707' 
414559                 WHEN 11 THEN '707' 
414560                 WHEN 12 THEN '707' 
414561                 
414562                 ELSE null
414563               END                           source_application_id
414564             , 'S'             source_type_code
414565             , CASE r
414566                 WHEN 1 THEN 'COST_ELEMENT_ID' 
414567                 WHEN 2 THEN 'COST_GROUP_ID' 
414568                 WHEN 3 THEN 'SUBINVENTORY_CODE' 
414569                 WHEN 4 THEN 'DISTRIBUTION_IDENTIFIER' 
414570                 WHEN 5 THEN 'CURRENCY_CODE' 
414571                 WHEN 6 THEN 'ENTERED_AMOUNT' 
414572                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
414573                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
414574                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
414575                 WHEN 10 THEN 'ACCOUNTED_AMOUNT' 
414576                 WHEN 11 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
414577                 WHEN 12 THEN 'L_ORGANIZATION_CODE' 
414578                 
414579                 ELSE null
414580               END                           source_code
414581             , CASE r
414582                 WHEN 1 THEN TO_CHAR(l2.COST_ELEMENT_ID)
414583                 WHEN 2 THEN TO_CHAR(l2.COST_GROUP_ID)
414584                 WHEN 3 THEN TO_CHAR(l2.SUBINVENTORY_CODE)
414585                 WHEN 4 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
414586                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
414587                 WHEN 6 THEN TO_CHAR(l2.ENTERED_AMOUNT)
414588                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
414589                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
414590                 WHEN 9 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
414591                 WHEN 10 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
414592                 WHEN 11 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
414593                 WHEN 12 THEN TO_CHAR(l2.L_ORGANIZATION_CODE)
414594                 
414595                 ELSE null
414596               END                           source_value
414597             , CASE r
414598                 WHEN 1 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
414599                           1009615
414600                          ,TO_CHAR(l2.COST_ELEMENT_ID)
414601                          ,'COST_ELEMENT_ID'
414602                          ,'S'
414603                          ,707)
414604                 WHEN 3 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
414605                           1009622
414606                          ,TO_CHAR(l2.SUBINVENTORY_CODE)
414607                          ,'SUBINVENTORY_CODE'
414608                          ,'S'
414609                          ,707)
414610                 
414611                 ELSE null
414612               END               source_meaning
414613          FROM  xla_events_gt     xet  
414614         , CST_XLA_INV_LINES_V  l2
414615             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
414616         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
414617           AND xet.event_type_code = C_EVENT_TYPE_CODE
414618             AND l2.event_id          = xet.event_id
414619 
414620 )
414621 ;
414622 --
414623 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
414624 
414625       trace
414626          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
414627          ,p_level    => C_LEVEL_STATEMENT
414628          ,p_module   => l_log_module);
414629 
414630 END IF;
414631 
414632 
414633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
414634       trace
414635          (p_msg      => 'END of insert_sources_614'
414636          ,p_level    => C_LEVEL_PROCEDURE
414637          ,p_module   => l_log_module);
414638 END IF;
414639 EXCEPTION
414640   WHEN xla_exceptions_pkg.application_exception THEN
414641       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
414642             trace
414643                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
414644                ,p_level    => C_LEVEL_EXCEPTION
414645                ,p_module   => l_log_module);
414646       END IF;
414647       RAISE;
414648   WHEN OTHERS THEN
414649       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
414650             trace
414651                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
414652                ,p_level    => C_LEVEL_EXCEPTION
414653                ,p_module   => l_log_module);
414654        END IF;
414655        xla_exceptions_pkg.raise_message
414656            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_614');
414657 END insert_sources_614;
414658 --
414659 
414660 ---------------------------------------
414661 --
414662 -- PRIVATE FUNCTION
414663 --         EventType_614
414664 --
414665 ----------------------------------------
414666 --
414667 FUNCTION EventType_614
414668        (p_application_id         IN NUMBER
414669        ,p_base_ledger_id         IN NUMBER
414670        ,p_target_ledger_id       IN NUMBER
414671        ,p_language               IN VARCHAR2
414672        ,p_currency_code          IN VARCHAR2
414673        ,p_sla_ledger_id          IN NUMBER
414674        ,p_pad_start_date         IN DATE
414675        ,p_pad_end_date           IN DATE
414676        ,p_primary_ledger_id      IN NUMBER)
414677 RETURN BOOLEAN IS
414678 --
414679 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USUB_TXFR';
414680 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USER_DEFINE';
414681 
414682 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
414683 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
414684 --
414685 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414686 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414687 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
414688 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
414689 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414690 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
414691 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
414692 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414693 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
414694 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
414695 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414696 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414697 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414698 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
414699 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
414700 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
414701 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
414702 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
414703 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
414704 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
414705 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
414706 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
414707 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
414708 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
414709 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
414710 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
414711 
414712 l_event_id                             NUMBER;
414713 l_previous_event_id                    NUMBER;
414714 l_first_event_id                       NUMBER;
414715 l_last_event_id                        NUMBER;
414716 
414717 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
414718 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
414719 --
414720 --
414721 l_result                    BOOLEAN := TRUE;
414722 l_rows                      NUMBER  := 1000;
414723 l_event_type_name           VARCHAR2(80) := 'User-defined Subinventory Transfer';
414724 l_event_class_name          VARCHAR2(80) := 'User Defined Inventory Transaction Class';
414725 l_description               VARCHAR2(4000);
414726 l_transaction_reversal      NUMBER;
414727 l_ae_header_id              NUMBER;
414728 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
414729 l_log_module                VARCHAR2(240);
414730 --
414731 l_acct_reversal_source      VARCHAR2(30);
414732 l_trx_reversal_source       VARCHAR2(30);
414733 
414734 l_continue_with_lines       BOOLEAN := TRUE;
414735 --
414736 l_acc_rev_gl_date_source    DATE;                      -- 4262811
414737 --
414738 type t_array_event_id is table of number index by binary_integer;
414739 
414740 l_rec_array_event                    t_rec_array_event;
414741 l_null_rec_array_event               t_rec_array_event;
414742 l_array_ae_header_id                 xla_number_array_type;
414743 l_actual_flag                        VARCHAR2(1) := NULL;
414744 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
414745 l_balance_type_code                  VARCHAR2(1) :=NULL;
414746 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
414747 
414748 --
414749 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
414750 --
414751 
414752 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
414753 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
414754 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
414755 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
414756 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
414757 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414758 TYPE t_array_source_23 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_ACV_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414759 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414760 TYPE t_array_source_25 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_EXPENSE_ACCT%TYPE INDEX BY BINARY_INTEGER;
414761 TYPE t_array_source_27 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
414762 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_HEADERS_V.H_COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
414763 TYPE t_array_source_30 IS TABLE OF CST_XLA_INV_HEADERS_V.H_SUBINVENTORY_CODE%TYPE INDEX BY BINARY_INTEGER;
414764 TYPE t_array_source_31 IS TABLE OF CST_XLA_INV_HEADERS_V.H_TRANSFER_SUBINVENTORY%TYPE INDEX BY BINARY_INTEGER;
414765 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414766 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414767 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414768 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414769 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
414770 TYPE t_array_source_47 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
414771 TYPE t_array_source_48 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
414772 TYPE t_array_source_49 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_MATERIAL_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
414773 TYPE t_array_source_50 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
414774 TYPE t_array_source_51 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_OUTSIDE_PROCESS_ACCT%TYPE INDEX BY BINARY_INTEGER;
414775 TYPE t_array_source_52 IS TABLE OF CST_XLA_TRF_PLA_CAT_REF_V.TRF_PLA_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
414776 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
414777 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
414778 
414779 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
414780 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_LINES_V.COST_GROUP_ID%TYPE INDEX BY BINARY_INTEGER;
414781 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_LINES_V.SUBINVENTORY_CODE%TYPE INDEX BY BINARY_INTEGER;
414782 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
414783 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
414784 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
414785 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
414786 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
414787 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
414788 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
414789 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
414790 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
414791 
414792 l_array_source_1              t_array_source_1;
414793 l_array_source_2              t_array_source_2;
414794 l_array_source_3              t_array_source_3;
414795 l_array_source_4              t_array_source_4;
414796 l_array_source_5              t_array_source_5;
414797 l_array_source_22              t_array_source_22;
414798 l_array_source_23              t_array_source_23;
414799 l_array_source_24              t_array_source_24;
414800 l_array_source_25              t_array_source_25;
414801 l_array_source_27              t_array_source_27;
414802 l_array_source_28              t_array_source_28;
414803 l_array_source_30              t_array_source_30;
414804 l_array_source_31              t_array_source_31;
414805 l_array_source_41              t_array_source_41;
414806 l_array_source_42              t_array_source_42;
414807 l_array_source_43              t_array_source_43;
414808 l_array_source_44              t_array_source_44;
414809 l_array_source_45              t_array_source_45;
414810 l_array_source_47              t_array_source_47;
414811 l_array_source_48              t_array_source_48;
414812 l_array_source_49              t_array_source_49;
414813 l_array_source_50              t_array_source_50;
414814 l_array_source_51              t_array_source_51;
414815 l_array_source_52              t_array_source_52;
414816 l_array_source_85              t_array_source_85;
414817 l_array_source_85_meaning      t_array_lookup_meaning;
414818 l_array_source_114              t_array_source_114;
414819 l_array_source_114_meaning      t_array_lookup_meaning;
414820 
414821 l_array_source_15      t_array_source_15;
414822 l_array_source_26      t_array_source_26;
414823 l_array_source_29      t_array_source_29;
414824 l_array_source_84      t_array_source_84;
414825 l_array_source_88      t_array_source_88;
414826 l_array_source_91      t_array_source_91;
414827 l_array_source_92      t_array_source_92;
414828 l_array_source_93      t_array_source_93;
414829 l_array_source_94      t_array_source_94;
414830 l_array_source_95      t_array_source_95;
414831 l_array_source_97      t_array_source_97;
414832 l_array_source_108      t_array_source_108;
414833 
414834 --
414835 CURSOR header_cur
414836 IS
414837 SELECT /*+ leading(xet) cardinality(xet,1) */
414838 -- Event Type Code: USUB_TXFR
414839 -- Event Class Code: USER_DEFINE
414840     xet.entity_id
414841   , xet.legal_entity_id
414842   , xet.entity_code
414843   , xet.transaction_number
414844   , xet.event_id
414845   , xet.event_class_code
414846   , xet.event_type_code
414847   , xet.event_number
414848   , xet.event_date
414849   , xet.transaction_date
414850   , xet.reference_num_1
414851   , xet.reference_num_2
414852   , xet.reference_num_3
414853   , xet.reference_num_4
414854   , xet.reference_char_1
414855   , xet.reference_char_2
414856   , xet.reference_char_3
414857   , xet.reference_char_4
414858   , xet.reference_date_1
414859   , xet.reference_date_2
414860   , xet.reference_date_3
414861   , xet.reference_date_4
414862   , xet.event_created_by
414863   , xet.budgetary_control_flag 
414864   , h1.TRANSACTION_ID    source_1
414865   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
414866   , h3.TRANSACTION_QUANTITY    source_3
414867   , h3.TRANSACTION_UOM    source_4
414868   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
414869   , h6.PLA_BRIDGING_ACCOUNT    source_22
414870   , h6.PLA_ACV_ACCOUNT    source_23
414871   , h6.PLA_EXPENSE_ACCOUNT    source_24
414872   , h7.TRF_PLA_EXPENSE_ACCT    source_25
414873   , h1.H_TRANSFER_COST_GROUP_ID    source_27
414874   , h1.H_COST_GROUP_ID    source_28
414875   , h1.H_SUBINVENTORY_CODE    source_30
414876   , h1.H_TRANSFER_SUBINVENTORY    source_31
414877   , h6.PLA_MATERIAL_ACCOUNT    source_41
414878   , h6.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
414879   , h6.PLA_RESOURCE_ACCOUNT    source_43
414880   , h6.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
414881   , h6.PLA_OVERHEAD_ACCOUNT    source_45
414882   , h7.TRF_PLA_BRIDGING_ACCT    source_47
414883   , h7.TRF_PLA_MATERIAL_ACCT    source_48
414884   , h7.TRF_PLA_MATERIAL_OVERHEAD_ACCT    source_49
414885   , h7.TRF_PLA_RESOURCE_ACCT    source_50
414886   , h7.TRF_PLA_OUTSIDE_PROCESS_ACCT    source_51
414887   , h7.TRF_PLA_OVERHEAD_ACCT    source_52
414888   , h1.DISTRIBUTION_TYPE    source_85
414889   , fvl85.meaning   source_85_meaning
414890   , h1.TRANSFER_TO_GL_INDICATOR    source_114
414891   , fvl114.meaning   source_114_meaning
414892   FROM xla_events_gt     xet 
414893   , CST_XLA_INV_HEADERS_V  h1
414894   , CST_XLA_INV_REF_V  h3
414895   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
414896   , CST_XLA_INV_TXN_TYPES_REF_V  h5
414897   , CST_XLA_PLA_CATEGORY_REF_V  h6
414898   , CST_XLA_TRF_PLA_CAT_REF_V  h7
414899   , fnd_lookup_values    fvl85
414900   , fnd_lookup_values    fvl114
414901  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
414902    and xet.event_type_code = C_EVENT_TYPE_CODE
414903    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
414904  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h4.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID  (+) = h1.TRANSACTION_TYPE_ID AND h6.PLA_CAT_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID  AND h6.PLA_CAT_ITEM_ID   (+) = h1.INVENTORY_ITEM_ID  AND h6.PLA_SUBINV_CG   (+) = h1.H_SUBINV_CG AND h7.TRF_PLA_CAT_ORGANIZATION_ID  (+) = h1.TRANSFER_ORGANIZATION_ID  AND h7.TRF_PLA_CAT_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h7.TRF_PLA_SUBINV_CG  (+) = h1.H_TRF_SUBINV_CG   AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
414905   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
414906   AND fvl85.view_application_id(+) = 700
414907   AND fvl85.language(+)            = USERENV('LANG')
414908      AND fvl114.lookup_type(+)         = 'YES_NO'
414909   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
414910   AND fvl114.view_application_id(+) = 0
414911   AND fvl114.language(+)            = USERENV('LANG')
414912   
414913  ORDER BY event_id
414914 ;
414915 
414916 
414917 --
414918 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
414919 IS
414920 SELECT /*+ leading(xet) cardinality(xet,1) */
414921 -- Event Type Code: USUB_TXFR
414922 -- Event Class Code: USER_DEFINE
414923     xet.entity_id
414924    ,xet.legal_entity_id
414925    ,xet.entity_code
414926    ,xet.transaction_number
414927    ,xet.event_id
414928    ,xet.event_class_code
414929    ,xet.event_type_code
414930    ,xet.event_number
414931    ,xet.event_date
414932    ,xet.transaction_date
414933    ,xet.reference_num_1
414934    ,xet.reference_num_2
414935    ,xet.reference_num_3
414936    ,xet.reference_num_4
414937    ,xet.reference_char_1
414938    ,xet.reference_char_2
414939    ,xet.reference_char_3
414940    ,xet.reference_char_4
414941    ,xet.reference_date_1
414942    ,xet.reference_date_2
414943    ,xet.reference_date_3
414944    ,xet.reference_date_4
414945    ,xet.event_created_by
414946    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
414947   , l2.COST_ELEMENT_ID    source_15
414948   , l2.COST_GROUP_ID    source_26
414949   , l2.SUBINVENTORY_CODE    source_29
414950   , l2.DISTRIBUTION_IDENTIFIER    source_84
414951   , l2.CURRENCY_CODE    source_88
414952   , l2.ENTERED_AMOUNT    source_91
414953   , l2.CURRENCY_CONVERSION_DATE    source_92
414954   , l2.CURRENCY_CONVERSION_RATE    source_93
414955   , l2.CURRENCY_CONVERSION_TYPE    source_94
414956   , l2.ACCOUNTED_AMOUNT    source_95
414957   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
414958   , l2.L_ORGANIZATION_CODE    source_108
414959   FROM xla_events_gt     xet 
414960   , CST_XLA_INV_LINES_V  l2
414961  WHERE xet.event_id between x_first_event_id and x_last_event_id
414962    and xet.event_date between p_pad_start_date and p_pad_end_date
414963    and xet.event_type_code = C_EVENT_TYPE_CODE
414964    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
414965 ;
414966 
414967 --
414968 BEGIN
414969 IF g_log_enabled THEN
414970    l_log_module := C_DEFAULT_MODULE||'.EventType_614';
414971 END IF;
414972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
414973    trace
414974       (p_msg      => 'BEGIN of EventType_614'
414975       ,p_level    => C_LEVEL_PROCEDURE
414976       ,p_module   => l_log_module);
414977 END IF;
414978 
414979 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
414980    trace
414981       (p_msg      => 'p_application_id = '||p_application_id||
414982                      ' - p_base_ledger_id = '||p_base_ledger_id||
414983                      ' - p_target_ledger_id  = '||p_target_ledger_id||
414984                      ' - p_language = '||p_language||
414985                      ' - p_currency_code = '||p_currency_code||
414986                      ' - p_sla_ledger_id = '||p_sla_ledger_id
414987       ,p_level    => C_LEVEL_STATEMENT
414988       ,p_module   => l_log_module);
414989 END IF;
414990 --
414991 -- initialze arrays
414992 --
414993 g_array_event.DELETE;
414994 l_rec_array_event := l_null_rec_array_event;
414995 --
414996 --------------------------------------
414997 -- 4262811 Initialze MPA Line Number
414998 --------------------------------------
414999 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
415000 
415001 --
415002 
415003 --
415004 OPEN header_cur;
415005 --
415006 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
415007    trace
415008    (p_msg      => 'SQL - FETCH header_cur'
415009    ,p_level    => C_LEVEL_STATEMENT
415010    ,p_module   => l_log_module);
415011 END IF;
415012 --
415013 LOOP
415014 FETCH header_cur BULK COLLECT INTO
415015         l_array_entity_id
415016       , l_array_legal_entity_id
415017       , l_array_entity_code
415018       , l_array_transaction_num
415019       , l_array_event_id
415020       , l_array_class_code
415021       , l_array_event_type
415022       , l_array_event_number
415023       , l_array_event_date
415024       , l_array_transaction_date
415025       , l_array_reference_num_1
415026       , l_array_reference_num_2
415027       , l_array_reference_num_3
415028       , l_array_reference_num_4
415029       , l_array_reference_char_1
415030       , l_array_reference_char_2
415031       , l_array_reference_char_3
415032       , l_array_reference_char_4
415033       , l_array_reference_date_1
415034       , l_array_reference_date_2
415035       , l_array_reference_date_3
415036       , l_array_reference_date_4
415037       , l_array_event_created_by
415038       , l_array_budgetary_control_flag 
415039       , l_array_source_1
415040       , l_array_source_2
415041       , l_array_source_3
415042       , l_array_source_4
415043       , l_array_source_5
415044       , l_array_source_22
415045       , l_array_source_23
415046       , l_array_source_24
415047       , l_array_source_25
415048       , l_array_source_27
415049       , l_array_source_28
415050       , l_array_source_30
415051       , l_array_source_31
415052       , l_array_source_41
415053       , l_array_source_42
415054       , l_array_source_43
415055       , l_array_source_44
415056       , l_array_source_45
415057       , l_array_source_47
415058       , l_array_source_48
415059       , l_array_source_49
415060       , l_array_source_50
415061       , l_array_source_51
415062       , l_array_source_52
415063       , l_array_source_85
415064       , l_array_source_85_meaning
415065       , l_array_source_114
415066       , l_array_source_114_meaning
415067       LIMIT l_rows;
415068 --
415069 IF (C_LEVEL_EVENT >= g_log_level) THEN
415070    trace
415071    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
415072    ,p_level    => C_LEVEL_EVENT
415073    ,p_module   => l_log_module);
415074 END IF;
415075 --
415076 EXIT WHEN l_array_entity_id.COUNT = 0;
415077 
415078 -- initialize arrays
415079 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
415080 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
415081 
415082 --
415083 -- Bug 4458708
415084 --
415085 XLA_AE_LINES_PKG.g_LineNumber := 0;
415086 
415087 
415088 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
415089 g_last_hdr_idx := l_array_event_id.LAST;
415090 --
415091 -- loop for the headers. Each iteration is for each header extract row
415092 -- fetched in header cursor
415093 --
415094 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
415095 
415096 --
415097 -- set event info as cache for other routines to refer event attributes
415098 --
415099 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
415100    (p_application_id           => p_application_id
415101    ,p_primary_ledger_id        => p_primary_ledger_id
415102    ,p_base_ledger_id           => p_base_ledger_id
415103    ,p_target_ledger_id         => p_target_ledger_id
415104    ,p_entity_id                => l_array_entity_id(hdr_idx)
415105    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
415106    ,p_entity_code              => l_array_entity_code(hdr_idx)
415107    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
415108    ,p_event_id                 => l_array_event_id(hdr_idx)
415109    ,p_event_class_code         => l_array_class_code(hdr_idx)
415110    ,p_event_type_code          => l_array_event_type(hdr_idx)
415111    ,p_event_number             => l_array_event_number(hdr_idx)
415112    ,p_event_date               => l_array_event_date(hdr_idx)
415113    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
415114    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
415115    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
415116    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
415117    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
415118    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
415119    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
415120    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
415121    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
415122    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
415123    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
415124    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
415125    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
415126    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
415127    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
415128 
415129 --
415130 -- set the status of entry to C_VALID (0)
415131 --
415132 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
415133 
415134 --
415135 -- initialize a row for ae header
415136 --
415137 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
415138 
415139 l_event_id := l_array_event_id(hdr_idx);
415140 
415141 --
415142 -- storing the hdr_idx for event. May be used by line cursor.
415143 --
415144 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
415145 
415146 --
415147 -- store sources from header extract. This can be improved to
415148 -- store only those sources from header extract that may be used in lines
415149 --
415150 
415151 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
415152 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
415153 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
415154 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
415155 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
415156 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
415157 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
415158 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
415159 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
415160 g_array_event(l_event_id).array_value_num('source_27') := l_array_source_27(hdr_idx);
415161 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
415162 g_array_event(l_event_id).array_value_char('source_30') := l_array_source_30(hdr_idx);
415163 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
415164 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
415165 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
415166 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
415167 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
415168 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
415169 g_array_event(l_event_id).array_value_num('source_47') := l_array_source_47(hdr_idx);
415170 g_array_event(l_event_id).array_value_num('source_48') := l_array_source_48(hdr_idx);
415171 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
415172 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
415173 g_array_event(l_event_id).array_value_num('source_51') := l_array_source_51(hdr_idx);
415174 g_array_event(l_event_id).array_value_num('source_52') := l_array_source_52(hdr_idx);
415175 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
415176 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
415177 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
415178 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
415179 
415180 --
415181 -- initilaize the status of ae headers for diffrent balance types
415182 -- the status is initialised to C_NOT_CREATED (2)
415183 --
415184 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
415185 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
415186 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
415187 
415188 --
415189 -- call api to validate and store accounting attributes for header
415190 --
415191 
415192 ------------------------------------------------------------
415193 -- Accrual Reversal : to get date for Standard Source (NONE)
415194 ------------------------------------------------------------
415195 l_acc_rev_gl_date_source := NULL;
415196 
415197      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
415198       l_rec_acct_attrs.array_date_value(1) := 
415199 xla_ae_sources_pkg.GetSystemSourceDate(
415200    p_source_code           => 'XLA_REFERENCE_DATE_1'
415201  , p_source_type_code      => 'Y'
415202  , p_source_application_id =>  602
415203 );
415204      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
415205       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
415206 
415207 
415208 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
415209 
415210 XLA_AE_HEADER_PKG.SetJeCategoryName;
415211 
415212 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
415213 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
415214 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
415215 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
415216 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
415217 
415218 
415219 -- No header level analytical criteria
415220 
415221 --
415222 --accounting attribute enhancement, bug 3612931
415223 --
415224 l_trx_reversal_source := SUBSTR(NULL, 1,30);
415225 
415226 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
415227    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
415228 
415229    xla_accounting_err_pkg.build_message
415230       (p_appli_s_name            => 'XLA'
415231       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
415232       ,p_token_1                 => 'ACCT_ATTR_NAME'
415233       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
415234       ,p_token_2                 => 'PRODUCT_NAME'
415235       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
415236       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
415237       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
415238       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
415239 
415240 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
415241    --
415242    -- following sets the accounting attributes needed to reverse
415243    -- accounting for a distributeion
415244    --
415245    xla_ae_lines_pkg.SetTrxReversalAttrs
415246       (p_event_id              => l_event_id
415247       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
415248       ,p_trx_reversal_source   => l_trx_reversal_source);
415249 
415250 END IF;
415251 
415252 
415253 ----------------------------------------------------------------
415254 -- 4262811 -  update the header statuses to invalid in need be
415255 ----------------------------------------------------------------
415256 --
415257 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
415258 
415259 
415260   -----------------------------------------------
415261   -- No accrual reversal for the event class/type
415262   -----------------------------------------------
415263 ----------------------------------------------------------------
415264 
415265 --
415266 -- this ends the header loop iteration for one bulk fetch
415267 --
415268 END LOOP;
415269 
415270 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
415271 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
415272 
415273 --
415274 -- insert dummy rows into lines gt table that were created due to
415275 -- transaction reversals
415276 --
415277 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
415278    l_result := XLA_AE_LINES_PKG.InsertLines;
415279 END IF;
415280 
415281 --
415282 -- reset the temp_line_num for each set of events fetched from header
415283 -- cursor rather than doing it for each new event in line cursor
415284 -- Bug 3939231
415285 --
415286 xla_ae_lines_pkg.g_temp_line_num := 0;
415287 
415288 
415289 
415290 --
415291 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
415292 --
415293 --
415294 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
415295 
415296       trace
415297          (p_msg      => 'SQL - FETCH line_cur'
415298          ,p_level    => C_LEVEL_STATEMENT
415299          ,p_module   => l_log_module);
415300 
415301 END IF;
415302 --
415303 --
415304 LOOP
415305   --
415306   FETCH line_cur BULK COLLECT INTO
415307         l_array_entity_id
415308       , l_array_legal_entity_id
415309       , l_array_entity_code
415310       , l_array_transaction_num
415311       , l_array_event_id
415312       , l_array_class_code
415313       , l_array_event_type
415314       , l_array_event_number
415315       , l_array_event_date
415316       , l_array_transaction_date
415317       , l_array_reference_num_1
415318       , l_array_reference_num_2
415319       , l_array_reference_num_3
415320       , l_array_reference_num_4
415321       , l_array_reference_char_1
415322       , l_array_reference_char_2
415323       , l_array_reference_char_3
415324       , l_array_reference_char_4
415325       , l_array_reference_date_1
415326       , l_array_reference_date_2
415327       , l_array_reference_date_3
415328       , l_array_reference_date_4
415329       , l_array_event_created_by
415330       , l_array_budgetary_control_flag
415331       , l_array_extract_line_num 
415332       , l_array_source_15
415333       , l_array_source_26
415334       , l_array_source_29
415335       , l_array_source_84
415336       , l_array_source_88
415337       , l_array_source_91
415338       , l_array_source_92
415339       , l_array_source_93
415340       , l_array_source_94
415341       , l_array_source_95
415342       , l_array_source_97
415343       , l_array_source_108
415344       LIMIT l_rows;
415345 
415346   --
415347   IF (C_LEVEL_EVENT >= g_log_level) THEN
415348             trace
415349                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
415350                ,p_level    => C_LEVEL_EVENT
415351                ,p_module   => l_log_module);
415352   END IF;
415353   --
415354   EXIT WHEN l_array_entity_id.count = 0;
415355 
415356   XLA_AE_LINES_PKG.g_rec_lines := null;
415357 
415358 --
415359 -- Bug 4458708
415360 --
415361 XLA_AE_LINES_PKG.g_LineNumber := 0;
415362 --
415363 --
415364 
415365 FOR Idx IN 1..l_array_event_id.count LOOP
415366    --
415367    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
415368    --
415369    l_event_id := l_array_event_id(idx);  -- 5648433
415370 
415371    --
415372    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
415373    --
415374 
415375    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
415376              (g_array_event(l_event_id).array_value_num('header_index'))
415377          ,'N'
415378          ) <> 'Y'
415379    THEN
415380       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
415381          trace
415382             (p_msg      => 'Trancaction revesal option is not Y '
415383             ,p_level    => C_LEVEL_STATEMENT
415384             ,p_module   => l_log_module);
415385       END IF;
415386 
415387 --
415388 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
415389 --
415390 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
415391 --
415392 -- set event info as cache for other routines to refer event attributes
415393 --
415394 
415395 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
415396    l_previous_event_id := l_event_id;
415397 
415398    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
415399       (p_application_id           => p_application_id
415400       ,p_primary_ledger_id        => p_primary_ledger_id
415401       ,p_base_ledger_id           => p_base_ledger_id
415402       ,p_target_ledger_id         => p_target_ledger_id
415403       ,p_entity_id                => l_array_entity_id(Idx)
415404       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
415405       ,p_entity_code              => l_array_entity_code(Idx)
415406       ,p_transaction_num          => l_array_transaction_num(Idx)
415407       ,p_event_id                 => l_array_event_id(Idx)
415408       ,p_event_class_code         => l_array_class_code(Idx)
415409       ,p_event_type_code          => l_array_event_type(Idx)
415410       ,p_event_number             => l_array_event_number(Idx)
415411       ,p_event_date               => l_array_event_date(Idx)
415412       ,p_transaction_date         => l_array_transaction_date(Idx)
415413       ,p_reference_num_1          => l_array_reference_num_1(Idx)
415414       ,p_reference_num_2          => l_array_reference_num_2(Idx)
415415       ,p_reference_num_3          => l_array_reference_num_3(Idx)
415416       ,p_reference_num_4          => l_array_reference_num_4(Idx)
415417       ,p_reference_char_1         => l_array_reference_char_1(Idx)
415418       ,p_reference_char_2         => l_array_reference_char_2(Idx)
415419       ,p_reference_char_3         => l_array_reference_char_3(Idx)
415420       ,p_reference_char_4         => l_array_reference_char_4(Idx)
415421       ,p_reference_date_1         => l_array_reference_date_1(Idx)
415422       ,p_reference_date_2         => l_array_reference_date_2(Idx)
415423       ,p_reference_date_3         => l_array_reference_date_3(Idx)
415424       ,p_reference_date_4         => l_array_reference_date_4(Idx)
415425       ,p_event_created_by         => l_array_event_created_by(Idx)
415426       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
415427        --
415428 END IF;
415429 
415430 
415431 
415432 --
415433 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
415434 
415435 l_acct_reversal_source := SUBSTR(NULL, 1,30);
415436 
415437 IF l_continue_with_lines THEN
415438    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
415439       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
415440 
415441       xla_accounting_err_pkg.build_message
415442          (p_appli_s_name            => 'XLA'
415443          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
415444          ,p_token_1                 => 'LINE_NUMBER'
415445          ,p_value_1                 => l_array_extract_line_num(Idx)
415446          ,p_token_2                 => 'PRODUCT_NAME'
415447          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
415448          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
415449          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
415450          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
415451 
415452    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
415453       --
415454       -- following sets the accounting attributes needed to reverse
415455       -- accounting for a distributeion
415456       --
415457 
415458       --
415459       -- 5217187
415460       --
415461       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
415462       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
415463                                        g_array_event(l_event_id).array_value_num('header_index'));
415464       --
415465       --
415466 
415467       -- No reversal code generated
415468 
415469       xla_ae_lines_pkg.SetAcctReversalAttrs
415470          (p_event_id             => l_event_id
415471          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
415472          ,p_calculate_acctd_flag => l_calculate_acctd_flag
415473          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
415474    END IF;
415475 
415476    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
415477        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
415478 
415479 --
415480 AcctLineType_113 (
415481  p_application_id  => p_application_id
415482  ,p_event_id     => l_event_id
415483  ,p_calculate_acctd_flag => l_calculate_acctd_flag
415484  ,p_calculate_g_l_flag => l_calculate_g_l_flag
415485  ,p_actual_flag => l_actual_flag
415486  ,p_balance_type_code => l_balance_type_code
415487  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
415488  
415489  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
415490  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
415491  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
415492  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
415493  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
415494  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
415495  , p_source_84 => l_array_source_84(Idx)
415496  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
415497  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
415498  , p_source_88 => l_array_source_88(Idx)
415499  , p_source_91 => l_array_source_91(Idx)
415500  , p_source_92 => l_array_source_92(Idx)
415501  , p_source_93 => l_array_source_93(Idx)
415502  , p_source_94 => l_array_source_94(Idx)
415503  , p_source_95 => l_array_source_95(Idx)
415504  , p_source_97 => l_array_source_97(Idx)
415505  );
415506 If(l_balance_type_code = 'A') THEN
415507   l_actual_gain_loss_ref := l_gain_or_loss_ref;
415508 END IF;
415509 
415510 --
415511 
415512 
415513 --
415514 AcctLineType_261 (
415515  p_application_id  => p_application_id
415516  ,p_event_id     => l_event_id
415517  ,p_calculate_acctd_flag => l_calculate_acctd_flag
415518  ,p_calculate_g_l_flag => l_calculate_g_l_flag
415519  ,p_actual_flag => l_actual_flag
415520  ,p_balance_type_code => l_balance_type_code
415521  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
415522  
415523  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
415524  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
415525  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
415526  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
415527  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
415528  , p_source_15 => l_array_source_15(Idx)
415529  , p_source_26 => l_array_source_26(Idx)
415530  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
415531  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
415532  , p_source_29 => l_array_source_29(Idx)
415533  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
415534  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
415535  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
415536  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
415537  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
415538  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
415539  , p_source_48 => g_array_event(l_event_id).array_value_num('source_48')
415540  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
415541  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
415542  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
415543  , p_source_52 => g_array_event(l_event_id).array_value_num('source_52')
415544  , p_source_84 => l_array_source_84(Idx)
415545  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
415546  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
415547  , p_source_88 => l_array_source_88(Idx)
415548  , p_source_91 => l_array_source_91(Idx)
415549  , p_source_92 => l_array_source_92(Idx)
415550  , p_source_93 => l_array_source_93(Idx)
415551  , p_source_94 => l_array_source_94(Idx)
415552  , p_source_95 => l_array_source_95(Idx)
415553  , p_source_97 => l_array_source_97(Idx)
415554  , p_source_108 => l_array_source_108(Idx)
415555  );
415556 If(l_balance_type_code = 'A') THEN
415557   l_actual_gain_loss_ref := l_gain_or_loss_ref;
415558 END IF;
415559 
415560 --
415561 
415562 
415563 --
415564 AcctLineType_357 (
415565  p_application_id  => p_application_id
415566  ,p_event_id     => l_event_id
415567  ,p_calculate_acctd_flag => l_calculate_acctd_flag
415568  ,p_calculate_g_l_flag => l_calculate_g_l_flag
415569  ,p_actual_flag => l_actual_flag
415570  ,p_balance_type_code => l_balance_type_code
415571  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
415572  
415573  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
415574  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
415575  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
415576  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
415577  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
415578  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
415579  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
415580  , p_source_26 => l_array_source_26(Idx)
415581  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
415582  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
415583  , p_source_29 => l_array_source_29(Idx)
415584  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
415585  , p_source_84 => l_array_source_84(Idx)
415586  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
415587  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
415588  , p_source_88 => l_array_source_88(Idx)
415589  , p_source_91 => l_array_source_91(Idx)
415590  , p_source_92 => l_array_source_92(Idx)
415591  , p_source_93 => l_array_source_93(Idx)
415592  , p_source_94 => l_array_source_94(Idx)
415593  , p_source_95 => l_array_source_95(Idx)
415594  , p_source_97 => l_array_source_97(Idx)
415595  );
415596 If(l_balance_type_code = 'A') THEN
415597   l_actual_gain_loss_ref := l_gain_or_loss_ref;
415598 END IF;
415599 
415600 --
415601 
415602 
415603 --
415604 AcctLineType_436 (
415605  p_application_id  => p_application_id
415606  ,p_event_id     => l_event_id
415607  ,p_calculate_acctd_flag => l_calculate_acctd_flag
415608  ,p_calculate_g_l_flag => l_calculate_g_l_flag
415609  ,p_actual_flag => l_actual_flag
415610  ,p_balance_type_code => l_balance_type_code
415611  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
415612  
415613  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
415614  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
415615  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
415616  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
415617  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
415618  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
415619  , p_source_26 => l_array_source_26(Idx)
415620  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
415621  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
415622  , p_source_29 => l_array_source_29(Idx)
415623  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
415624  , p_source_47 => g_array_event(l_event_id).array_value_num('source_47')
415625  , p_source_84 => l_array_source_84(Idx)
415626  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
415627  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
415628  , p_source_88 => l_array_source_88(Idx)
415629  , p_source_91 => l_array_source_91(Idx)
415630  , p_source_92 => l_array_source_92(Idx)
415631  , p_source_93 => l_array_source_93(Idx)
415632  , p_source_94 => l_array_source_94(Idx)
415633  , p_source_95 => l_array_source_95(Idx)
415634  , p_source_97 => l_array_source_97(Idx)
415635  );
415636 If(l_balance_type_code = 'A') THEN
415637   l_actual_gain_loss_ref := l_gain_or_loss_ref;
415638 END IF;
415639 
415640 --
415641 
415642 
415643 --
415644 AcctLineType_439 (
415645  p_application_id  => p_application_id
415646  ,p_event_id     => l_event_id
415647  ,p_calculate_acctd_flag => l_calculate_acctd_flag
415648  ,p_calculate_g_l_flag => l_calculate_g_l_flag
415649  ,p_actual_flag => l_actual_flag
415650  ,p_balance_type_code => l_balance_type_code
415651  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
415652  
415653  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
415654  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
415655  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
415656  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
415657  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
415658  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
415659  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
415660  , p_source_26 => l_array_source_26(Idx)
415661  , p_source_27 => g_array_event(l_event_id).array_value_num('source_27')
415662  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
415663  , p_source_29 => l_array_source_29(Idx)
415664  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
415665  , p_source_84 => l_array_source_84(Idx)
415666  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
415667  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
415668  , p_source_88 => l_array_source_88(Idx)
415669  , p_source_91 => l_array_source_91(Idx)
415670  , p_source_92 => l_array_source_92(Idx)
415671  , p_source_93 => l_array_source_93(Idx)
415672  , p_source_94 => l_array_source_94(Idx)
415673  , p_source_95 => l_array_source_95(Idx)
415674  , p_source_97 => l_array_source_97(Idx)
415675  );
415676 If(l_balance_type_code = 'A') THEN
415677   l_actual_gain_loss_ref := l_gain_or_loss_ref;
415678 END IF;
415679 
415680 --
415681 
415682       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
415683       -- or secondary ledger that has different currency with primary
415684       -- or alc that is calculated by sla
415685       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
415686             (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'))
415687 
415688 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
415689 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
415690           AND (l_actual_flag = 'A')) THEN
415691         XLA_AE_LINES_PKG.CreateGainOrLossLines(
415692           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
415693          ,p_application_id   => p_application_id
415694          ,p_amb_context_code => 'DEFAULT'
415695          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
415696          ,p_event_class_code => C_EVENT_CLASS_CODE
415697          ,p_event_type_code  => C_EVENT_TYPE_CODE
415698          
415699          ,p_gain_ccid        => -1
415700          ,p_loss_ccid        => -1
415701 
415702          ,p_actual_flag      => l_actual_flag
415703          ,p_enc_flag         => null
415704          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
415705          ,p_enc_g_l_ref      => null
415706          );
415707       END IF;
415708    END IF;
415709 END IF;
415710 
415711    ELSE
415712       --
415713       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
415714       --
415715       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
415716          trace
415717             (p_msg      => 'Trancaction revesal option is Y'
415718             ,p_level    => C_LEVEL_STATEMENT
415719             ,p_module   => l_log_module);
415720       END IF;
415721    END IF;
415722 
415723 END LOOP;
415724 l_result := XLA_AE_LINES_PKG.InsertLines ;
415725 end loop;
415726 close line_cur;
415727 
415728 
415729 --
415730 -- insert headers into xla_ae_headers_gt table
415731 --
415732 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
415733 
415734 -- insert into errors table here.
415735 
415736 END LOOP;
415737 
415738 --
415739 -- 4865292
415740 --
415741 -- Compare g_hdr_extract_count with event count in
415742 -- CreateHeadersAndLines.
415743 --
415744 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
415745 
415746 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
415747    trace (p_msg     => '# rows extracted from header extract objects '
415748                     || ' (running total): '
415749                     || g_hdr_extract_count
415750          ,p_level   => C_LEVEL_STATEMENT
415751          ,p_module  => l_log_module);
415752 END IF;
415753 
415754 CLOSE header_cur;
415755 --
415756 
415757 --
415758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
415759    trace
415760       (p_msg      => 'END of EventType_614'
415761       ,p_level    => C_LEVEL_PROCEDURE
415762       ,p_module   => l_log_module);
415763 END IF;
415764 --
415765 RETURN l_result;
415766 EXCEPTION
415767 WHEN xla_exceptions_pkg.application_exception THEN
415768    
415769 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
415770 
415771    
415772 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
415773 
415774    RAISE;
415775 
415776 WHEN NO_DATA_FOUND THEN
415777 
415778 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
415779 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
415780 
415781 FOR header_record IN header_cur
415782 LOOP
415783     l_array_header_events(header_record.event_id) := header_record.event_id;
415784 END LOOP;
415785 
415786 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
415787 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
415788 
415789 fnd_file.put_line(fnd_file.LOG, '                    ');
415790 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
415791 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
415792 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
415793 
415794 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
415795 LOOP
415796 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
415797 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
415798         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
415799 	END IF;
415800 END LOOP;
415801 
415802 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
415803 fnd_file.put_line(fnd_file.LOG, '                    ');
415804 
415805 
415806 xla_exceptions_pkg.raise_message
415807       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_614');
415808 
415809 
415810 WHEN OTHERS THEN
415811    xla_exceptions_pkg.raise_message
415812       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_614');
415813 END EventType_614;
415814 --
415815 
415816 ---------------------------------------
415817 --
415818 -- PRIVATE PROCEDURE
415819 --         insert_sources_615
415820 --
415821 ----------------------------------------
415822 --
415823 PROCEDURE insert_sources_615(
415824                                 p_target_ledger_id       IN NUMBER
415825                               , p_language               IN VARCHAR2
415826                               , p_sla_ledger_id          IN NUMBER
415827                               , p_pad_start_date         IN DATE
415828                               , p_pad_end_date           IN DATE
415829                          )
415830 IS
415831 
415832 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'VARIANCE_ALL';
415833 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'VARIANCE';
415834 p_apps_owner                   VARCHAR2(30);
415835 l_log_module                   VARCHAR2(240);
415836 BEGIN
415837 IF g_log_enabled THEN
415838       l_log_module := C_DEFAULT_MODULE||'.insert_sources_615';
415839 END IF;
415840 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
415841 
415842       trace
415843          (p_msg      => 'BEGIN of insert_sources_615'
415844          ,p_level    => C_LEVEL_PROCEDURE
415845          ,p_module   => l_log_module);
415846 
415847 END IF;
415848 
415849 -- select APPS owner
415850 SELECT oracle_username
415851   INTO p_apps_owner
415852   FROM fnd_oracle_userid
415853  WHERE read_only_flag = 'U'
415854 ;
415855 
415856 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
415857       trace
415858          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
415859                         ' - p_language = '||p_language||
415860                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
415861                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
415862                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
415863                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
415864          ,p_level    => C_LEVEL_STATEMENT
415865          ,p_module   => l_log_module);
415866 END IF;
415867 
415868 
415869 --
415870 INSERT INTO xla_diag_sources --hdr2
415871 (
415872         event_id
415873       , ledger_id
415874       , sla_ledger_id
415875       , description_language
415876       , object_name
415877       , object_type_code
415878       , line_number
415879       , source_application_id
415880       , source_type_code
415881       , source_code
415882       , source_value
415883       , source_meaning
415884       , created_by
415885       , creation_date
415886       , last_update_date
415887       , last_updated_by
415888       , last_update_login
415889       , program_update_date
415890       , program_application_id
415891       , program_id
415892       , request_id
415893 )
415894 SELECT
415895         event_id
415896       , p_target_ledger_id
415897       , p_sla_ledger_id
415898       , p_language
415899       , object_name
415900       , object_type_code
415901       , line_number
415902       , source_application_id
415903       , source_type_code
415904       , source_code
415905       , SUBSTR(source_value ,1,1996)
415906       , SUBSTR(source_meaning ,1,200)
415907       , xla_environment_pkg.g_Usr_Id
415908       , TRUNC(SYSDATE)
415909       , TRUNC(SYSDATE)
415910       , xla_environment_pkg.g_Usr_Id
415911       , xla_environment_pkg.g_Login_Id
415912       , TRUNC(SYSDATE)
415913       , xla_environment_pkg.g_Prog_Appl_Id
415914       , xla_environment_pkg.g_Prog_Id
415915       , xla_environment_pkg.g_Req_Id
415916   FROM (
415917        SELECT xet.event_id                  event_id
415918             , 0                          line_number
415919             , CASE r
415920                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
415921                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
415922                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
415923                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
415924                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
415925                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
415926                 WHEN 7 THEN 'CST_XLA_WIP_HEADERS_V' 
415927                 WHEN 8 THEN 'CST_XLA_WIP_HEADERS_V' 
415928                 WHEN 9 THEN 'CST_XLA_WIP_HEADERS_V' 
415929                 WHEN 10 THEN 'CST_XLA_WIP_HEADERS_V' 
415930                 
415931                ELSE null
415932               END                           object_name
415933             , CASE r
415934                 WHEN 1 THEN 'HEADER' 
415935                 WHEN 2 THEN 'HEADER' 
415936                 WHEN 3 THEN 'HEADER' 
415937                 WHEN 4 THEN 'HEADER' 
415938                 WHEN 5 THEN 'HEADER' 
415939                 WHEN 6 THEN 'HEADER' 
415940                 WHEN 7 THEN 'HEADER' 
415941                 WHEN 8 THEN 'HEADER' 
415942                 WHEN 9 THEN 'HEADER' 
415943                 WHEN 10 THEN 'HEADER' 
415944                 
415945                 ELSE null
415946               END                           object_type_code
415947             , CASE r
415948                 WHEN 1 THEN '707' 
415949                 WHEN 2 THEN '707' 
415950                 WHEN 3 THEN '707' 
415951                 WHEN 4 THEN '707' 
415952                 WHEN 5 THEN '707' 
415953                 WHEN 6 THEN '707' 
415954                 WHEN 7 THEN '707' 
415955                 WHEN 8 THEN '707' 
415956                 WHEN 9 THEN '707' 
415957                 WHEN 10 THEN '707' 
415958                 
415959                 ELSE null
415960               END                           source_application_id
415961             , 'S'             source_type_code
415962             , CASE r
415963                 WHEN 1 THEN 'TRANSACTION_ID' 
415964                 WHEN 2 THEN 'TRANSACTION_UOM' 
415965                 WHEN 3 THEN 'PRIMARY_QUANTITY' 
415966                 WHEN 4 THEN 'WIP_TRANSACTION_TYPE_ID' 
415967                 WHEN 5 THEN 'DISTRIBUTION_TYPE' 
415968                 WHEN 6 THEN 'CURRENCY_CODE' 
415969                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
415970                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
415971                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
415972                 WHEN 10 THEN 'TRANSFER_TO_GL_INDICATOR' 
415973                 
415974                 ELSE null
415975               END                           source_code
415976             , CASE r
415977                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
415978                 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_UOM)
415979                 WHEN 3 THEN TO_CHAR(h1.PRIMARY_QUANTITY)
415980                 WHEN 4 THEN TO_CHAR(h1.WIP_TRANSACTION_TYPE_ID)
415981                 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
415982                 WHEN 6 THEN TO_CHAR(h1.CURRENCY_CODE)
415983                 WHEN 7 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
415984                 WHEN 8 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
415985                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
415986                 WHEN 10 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
415987                 
415988                 ELSE null
415989               END                           source_value
415990             , CASE r
415991                 WHEN 4 THEN fvl7.meaning
415992                 WHEN 5 THEN fvl85.meaning
415993                 WHEN 10 THEN fvl114.meaning
415994                 
415995                 ELSE null
415996               END               source_meaning
415997          FROM xla_events_gt     xet  
415998       , CST_XLA_WIP_HEADERS_V  h1
415999   , fnd_lookup_values    fvl7
416000   , fnd_lookup_values    fvl85
416001   , fnd_lookup_values    fvl114
416002              ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
416003          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
416004            AND xet.event_class_code = C_EVENT_CLASS_CODE
416005               AND h1.event_id = xet.event_id
416006    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
416007   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
416008   AND fvl7.view_application_id(+) = 700
416009   AND fvl7.language(+)            = USERENV('LANG')
416010      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
416011   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
416012   AND fvl85.view_application_id(+) = 700
416013   AND fvl85.language(+)            = USERENV('LANG')
416014      AND fvl114.lookup_type(+)         = 'YES_NO'
416015   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
416016   AND fvl114.view_application_id(+) = 0
416017   AND fvl114.language(+)            = USERENV('LANG')
416018   
416019 )
416020 ;
416021 --
416022 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
416023 
416024       trace
416025          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
416026          ,p_level    => C_LEVEL_STATEMENT
416027          ,p_module   => l_log_module);
416028 
416029 END IF;
416030 --
416031 
416032 
416033 
416034 --
416035 INSERT INTO xla_diag_sources  --line2
416036 (
416037         event_id
416038       , ledger_id
416039       , sla_ledger_id
416040       , description_language
416041       , object_name
416042       , object_type_code
416043       , line_number
416044       , source_application_id
416045       , source_type_code
416046       , source_code
416047       , source_value
416048       , source_meaning
416049       , created_by
416050       , creation_date
416051       , last_update_date
416052       , last_updated_by
416053       , last_update_login
416054       , program_update_date
416055       , program_application_id
416056       , program_id
416057       , request_id
416058 )
416059 SELECT  event_id
416060       , p_target_ledger_id
416061       , p_sla_ledger_id
416062       , p_language
416063       , object_name
416064       , object_type_code
416065       , line_number
416066       , source_application_id
416067       , source_type_code
416068       , source_code
416069       , SUBSTR(source_value,1,1996)
416070       , SUBSTR(source_meaning ,1,200)
416071       , xla_environment_pkg.g_Usr_Id
416072       , TRUNC(SYSDATE)
416073       , TRUNC(SYSDATE)
416074       , xla_environment_pkg.g_Usr_Id
416075       , xla_environment_pkg.g_Login_Id
416076       , TRUNC(SYSDATE)
416077       , xla_environment_pkg.g_Prog_Appl_Id
416078       , xla_environment_pkg.g_Prog_Id
416079       , xla_environment_pkg.g_Req_Id
416080   FROM (
416081        SELECT xet.event_id                  event_id
416082             , l2.line_number                 line_number
416083             , CASE r
416084                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
416085                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
416086                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
416087                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
416088                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
416089                 
416090                ELSE null
416091               END                           object_name
416092             , CASE r
416093                 WHEN 1 THEN 'LINE' 
416094                 WHEN 2 THEN 'LINE' 
416095                 WHEN 3 THEN 'LINE' 
416096                 WHEN 4 THEN 'LINE' 
416097                 WHEN 5 THEN 'LINE' 
416098                 
416099                 ELSE null
416100               END                           object_type_code
416101             , CASE r
416102                 WHEN 1 THEN '707' 
416103                 WHEN 2 THEN '707' 
416104                 WHEN 3 THEN '707' 
416105                 WHEN 4 THEN '707' 
416106                 WHEN 5 THEN '707' 
416107                 
416108                 ELSE null
416109               END                           source_application_id
416110             , 'S'             source_type_code
416111             , CASE r
416112                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
416113                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
416114                 WHEN 3 THEN 'ENTERED_AMOUNT' 
416115                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
416116                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
416117                 
416118                 ELSE null
416119               END                           source_code
416120             , CASE r
416121                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
416122                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
416123                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
416124                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
416125                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
416126                 
416127                 ELSE null
416128               END                           source_value
416129             , null              source_meaning
416130          FROM  xla_events_gt     xet  
416131         , CST_XLA_WIP_LINES_V  l2
416132             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
416133         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
416134           AND xet.event_class_code = C_EVENT_CLASS_CODE
416135             AND l2.event_id          = xet.event_id
416136 
416137 )
416138 ;
416139 --
416140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
416141 
416142       trace
416143          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
416144          ,p_level    => C_LEVEL_STATEMENT
416145          ,p_module   => l_log_module);
416146 
416147 END IF;
416148 
416149 
416150 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
416151       trace
416152          (p_msg      => 'END of insert_sources_615'
416153          ,p_level    => C_LEVEL_PROCEDURE
416154          ,p_module   => l_log_module);
416155 END IF;
416156 EXCEPTION
416157   WHEN xla_exceptions_pkg.application_exception THEN
416158       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
416159             trace
416160                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
416161                ,p_level    => C_LEVEL_EXCEPTION
416162                ,p_module   => l_log_module);
416163       END IF;
416164       RAISE;
416165   WHEN OTHERS THEN
416166       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
416167             trace
416168                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
416169                ,p_level    => C_LEVEL_EXCEPTION
416170                ,p_module   => l_log_module);
416171        END IF;
416172        xla_exceptions_pkg.raise_message
416173            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_615');
416174 END insert_sources_615;
416175 --
416176 
416177 ---------------------------------------
416178 --
416179 -- PRIVATE FUNCTION
416180 --         EventClass_615
416181 --
416182 ----------------------------------------
416183 --
416184 FUNCTION EventClass_615
416185        (p_application_id         IN NUMBER
416186        ,p_base_ledger_id         IN NUMBER
416187        ,p_target_ledger_id       IN NUMBER
416188        ,p_language               IN VARCHAR2
416189        ,p_currency_code          IN VARCHAR2
416190        ,p_sla_ledger_id          IN NUMBER
416191        ,p_pad_start_date         IN DATE
416192        ,p_pad_end_date           IN DATE
416193        ,p_primary_ledger_id      IN NUMBER)
416194 RETURN BOOLEAN IS
416195 --
416196 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'VARIANCE_ALL';
416197 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'VARIANCE';
416198 
416199 l_calculate_acctd_flag   VARCHAR2(1) :='N';
416200 l_calculate_g_l_flag     VARCHAR2(1) :='N';
416201 --
416202 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416203 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416204 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
416205 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
416206 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416207 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
416208 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
416209 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416210 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
416211 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
416212 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416213 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416214 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416215 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
416216 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
416217 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
416218 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
416219 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
416220 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
416221 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
416222 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
416223 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
416224 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
416225 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
416226 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
416227 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
416228 
416229 l_event_id                             NUMBER;
416230 l_previous_event_id                    NUMBER;
416231 l_first_event_id                       NUMBER;
416232 l_last_event_id                        NUMBER;
416233 
416234 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
416235 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
416236 --
416237 --
416238 l_result                    BOOLEAN := TRUE;
416239 l_rows                      NUMBER  := 1000;
416240 l_event_type_name           VARCHAR2(80) := 'All';
416241 l_event_class_name          VARCHAR2(80) := 'WIP Variance';
416242 l_description               VARCHAR2(4000);
416243 l_transaction_reversal      NUMBER;
416244 l_ae_header_id              NUMBER;
416245 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
416246 l_log_module                VARCHAR2(240);
416247 --
416248 l_acct_reversal_source      VARCHAR2(30);
416249 l_trx_reversal_source       VARCHAR2(30);
416250 
416251 l_continue_with_lines       BOOLEAN := TRUE;
416252 --
416253 l_acc_rev_gl_date_source    DATE;                      -- 4262811
416254 --
416255 type t_array_event_id is table of number index by binary_integer;
416256 
416257 l_rec_array_event                    t_rec_array_event;
416258 l_null_rec_array_event               t_rec_array_event;
416259 l_array_ae_header_id                 xla_number_array_type;
416260 l_actual_flag                        VARCHAR2(1) := NULL;
416261 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
416262 l_balance_type_code                  VARCHAR2(1) :=NULL;
416263 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
416264 
416265 --
416266 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
416267 --
416268 
416269 TYPE t_array_source_1 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
416270 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
416271 TYPE t_array_source_6 IS TABLE OF CST_XLA_WIP_HEADERS_V.PRIMARY_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
416272 TYPE t_array_source_7 IS TABLE OF CST_XLA_WIP_HEADERS_V.WIP_TRANSACTION_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
416273 TYPE t_array_source_85 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
416274 TYPE t_array_source_88 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
416275 TYPE t_array_source_92 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
416276 TYPE t_array_source_93 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
416277 TYPE t_array_source_94 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
416278 TYPE t_array_source_114 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
416279 
416280 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
416281 TYPE t_array_source_84 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
416282 TYPE t_array_source_91 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
416283 TYPE t_array_source_95 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
416284 TYPE t_array_source_97 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
416285 
416286 l_array_source_1              t_array_source_1;
416287 l_array_source_4              t_array_source_4;
416288 l_array_source_6              t_array_source_6;
416289 l_array_source_7              t_array_source_7;
416290 l_array_source_7_meaning      t_array_lookup_meaning;
416291 l_array_source_85              t_array_source_85;
416292 l_array_source_85_meaning      t_array_lookup_meaning;
416293 l_array_source_88              t_array_source_88;
416294 l_array_source_92              t_array_source_92;
416295 l_array_source_93              t_array_source_93;
416296 l_array_source_94              t_array_source_94;
416297 l_array_source_114              t_array_source_114;
416298 l_array_source_114_meaning      t_array_lookup_meaning;
416299 
416300 l_array_source_11      t_array_source_11;
416301 l_array_source_84      t_array_source_84;
416302 l_array_source_91      t_array_source_91;
416303 l_array_source_95      t_array_source_95;
416304 l_array_source_97      t_array_source_97;
416305 
416306 --
416307 CURSOR header_cur
416308 IS
416309 SELECT /*+ leading(xet) cardinality(xet,1) */
416310 -- Event Class Code: VARIANCE
416311     xet.entity_id
416312    ,xet.legal_entity_id
416313    ,xet.entity_code
416314    ,xet.transaction_number
416315    ,xet.event_id
416316    ,xet.event_class_code
416317    ,xet.event_type_code
416318    ,xet.event_number
416319    ,xet.event_date
416320    ,xet.transaction_date
416321    ,xet.reference_num_1
416322    ,xet.reference_num_2
416323    ,xet.reference_num_3
416324    ,xet.reference_num_4
416325    ,xet.reference_char_1
416326    ,xet.reference_char_2
416327    ,xet.reference_char_3
416328    ,xet.reference_char_4
416329    ,xet.reference_date_1
416330    ,xet.reference_date_2
416331    ,xet.reference_date_3
416332    ,xet.reference_date_4
416333    ,xet.event_created_by
416334    ,xet.budgetary_control_flag 
416335   , h1.TRANSACTION_ID    source_1
416336   , h1.TRANSACTION_UOM    source_4
416337   , h1.PRIMARY_QUANTITY    source_6
416338   , h1.WIP_TRANSACTION_TYPE_ID    source_7
416339   , fvl7.meaning   source_7_meaning
416340   , h1.DISTRIBUTION_TYPE    source_85
416341   , fvl85.meaning   source_85_meaning
416342   , h1.CURRENCY_CODE    source_88
416343   , h1.CURRENCY_CONVERSION_DATE    source_92
416344   , h1.CURRENCY_CONVERSION_RATE    source_93
416345   , h1.CURRENCY_CONVERSION_TYPE    source_94
416346   , h1.TRANSFER_TO_GL_INDICATOR    source_114
416347   , fvl114.meaning   source_114_meaning
416348   FROM xla_events_gt     xet 
416349   , CST_XLA_WIP_HEADERS_V  h1
416350   , fnd_lookup_values    fvl7
416351   , fnd_lookup_values    fvl85
416352   , fnd_lookup_values    fvl114
416353  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
416354    and xet.event_class_code = C_EVENT_CLASS_CODE
416355    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
416356    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
416357   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
416358   AND fvl7.view_application_id(+) = 700
416359   AND fvl7.language(+)            = USERENV('LANG')
416360      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
416361   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
416362   AND fvl85.view_application_id(+) = 700
416363   AND fvl85.language(+)            = USERENV('LANG')
416364      AND fvl114.lookup_type(+)         = 'YES_NO'
416365   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
416366   AND fvl114.view_application_id(+) = 0
416367   AND fvl114.language(+)            = USERENV('LANG')
416368   
416369  ORDER BY event_id
416370 ;
416371 
416372 
416373 --
416374 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
416375 IS
416376 SELECT  /*+ leading(xet) cardinality(xet,1) */
416377 -- Event Class Code: VARIANCE
416378     xet.entity_id
416379    ,xet.legal_entity_id
416380    ,xet.entity_code
416381    ,xet.transaction_number
416382    ,xet.event_id
416383    ,xet.event_class_code
416384    ,xet.event_type_code
416385    ,xet.event_number
416386    ,xet.event_date
416387    ,xet.transaction_date
416388    ,xet.reference_num_1
416389    ,xet.reference_num_2
416390    ,xet.reference_num_3
416391    ,xet.reference_num_4
416392    ,xet.reference_char_1
416393    ,xet.reference_char_2
416394    ,xet.reference_char_3
416395    ,xet.reference_char_4
416396    ,xet.reference_date_1
416397    ,xet.reference_date_2
416398    ,xet.reference_date_3
416399    ,xet.reference_date_4
416400    ,xet.event_created_by
416401    ,xet.budgetary_control_flag
416402  , l2.LINE_NUMBER  
416403   , l2.CODE_COMBINATION_ID    source_11
416404   , l2.DISTRIBUTION_IDENTIFIER    source_84
416405   , l2.ENTERED_AMOUNT    source_91
416406   , l2.ACCOUNTED_AMOUNT    source_95
416407   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
416408   FROM xla_events_gt     xet 
416409   , CST_XLA_WIP_LINES_V  l2
416410  WHERE xet.event_id between x_first_event_id and x_last_event_id
416411    and xet.event_date between p_pad_start_date and p_pad_end_date
416412    and xet.event_class_code = C_EVENT_CLASS_CODE
416413    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
416414 ;
416415 
416416 --
416417 BEGIN
416418 IF g_log_enabled THEN
416419    l_log_module := C_DEFAULT_MODULE||'.EventClass_615';
416420 END IF;
416421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
416422    trace
416423       (p_msg      => 'BEGIN of EventClass_615'
416424       ,p_level    => C_LEVEL_PROCEDURE
416425       ,p_module   => l_log_module);
416426 END IF;
416427 
416428 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
416429    trace
416430       (p_msg      => 'p_application_id = '||p_application_id||
416431                      ' - p_base_ledger_id = '||p_base_ledger_id||
416432                      ' - p_target_ledger_id  = '||p_target_ledger_id||
416433                      ' - p_language = '||p_language||
416434                      ' - p_currency_code = '||p_currency_code||
416435                      ' - p_sla_ledger_id = '||p_sla_ledger_id
416436       ,p_level    => C_LEVEL_STATEMENT
416437       ,p_module   => l_log_module);
416438 END IF;
416439 --
416440 -- initialze arrays
416441 --
416442 g_array_event.DELETE;
416443 l_rec_array_event := l_null_rec_array_event;
416444 --
416445 --------------------------------------
416446 -- 4262811 Initialze MPA Line Number
416447 --------------------------------------
416448 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
416449 
416450 --
416451 
416452 --
416453 OPEN header_cur;
416454 --
416455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
416456    trace
416457    (p_msg      => 'SQL - FETCH header_cur'
416458    ,p_level    => C_LEVEL_STATEMENT
416459    ,p_module   => l_log_module);
416460 END IF;
416461 --
416462 LOOP
416463 FETCH header_cur BULK COLLECT INTO
416464         l_array_entity_id
416465       , l_array_legal_entity_id
416466       , l_array_entity_code
416467       , l_array_transaction_num
416468       , l_array_event_id
416469       , l_array_class_code
416470       , l_array_event_type
416471       , l_array_event_number
416472       , l_array_event_date
416473       , l_array_transaction_date
416474       , l_array_reference_num_1
416475       , l_array_reference_num_2
416476       , l_array_reference_num_3
416477       , l_array_reference_num_4
416478       , l_array_reference_char_1
416479       , l_array_reference_char_2
416480       , l_array_reference_char_3
416481       , l_array_reference_char_4
416482       , l_array_reference_date_1
416483       , l_array_reference_date_2
416484       , l_array_reference_date_3
416485       , l_array_reference_date_4
416486       , l_array_event_created_by
416487       , l_array_budgetary_control_flag 
416488       , l_array_source_1
416489       , l_array_source_4
416490       , l_array_source_6
416491       , l_array_source_7
416492       , l_array_source_7_meaning
416493       , l_array_source_85
416494       , l_array_source_85_meaning
416495       , l_array_source_88
416496       , l_array_source_92
416497       , l_array_source_93
416498       , l_array_source_94
416499       , l_array_source_114
416500       , l_array_source_114_meaning
416501       LIMIT l_rows;
416502 --
416503 IF (C_LEVEL_EVENT >= g_log_level) THEN
416504    trace
416505    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
416506    ,p_level    => C_LEVEL_EVENT
416507    ,p_module   => l_log_module);
416508 END IF;
416509 --
416510 EXIT WHEN l_array_entity_id.COUNT = 0;
416511 
416512 -- initialize arrays
416513 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
416514 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
416515 
416516 --
416517 -- Bug 4458708
416518 --
416519 XLA_AE_LINES_PKG.g_LineNumber := 0;
416520 
416521 
416522 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
416523 g_last_hdr_idx := l_array_event_id.LAST;
416524 --
416525 -- loop for the headers. Each iteration is for each header extract row
416526 -- fetched in header cursor
416527 --
416528 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
416529 
416530 --
416531 -- set event info as cache for other routines to refer event attributes
416532 --
416533 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
416534    (p_application_id           => p_application_id
416535    ,p_primary_ledger_id        => p_primary_ledger_id
416536    ,p_base_ledger_id           => p_base_ledger_id
416537    ,p_target_ledger_id         => p_target_ledger_id
416538    ,p_entity_id                => l_array_entity_id(hdr_idx)
416539    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
416540    ,p_entity_code              => l_array_entity_code(hdr_idx)
416541    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
416542    ,p_event_id                 => l_array_event_id(hdr_idx)
416543    ,p_event_class_code         => l_array_class_code(hdr_idx)
416544    ,p_event_type_code          => l_array_event_type(hdr_idx)
416545    ,p_event_number             => l_array_event_number(hdr_idx)
416546    ,p_event_date               => l_array_event_date(hdr_idx)
416547    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
416548    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
416549    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
416550    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
416551    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
416552    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
416553    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
416554    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
416555    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
416556    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
416557    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
416558    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
416559    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
416560    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
416561    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
416562 
416563 --
416564 -- set the status of entry to C_VALID (0)
416565 --
416566 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
416567 
416568 --
416569 -- initialize a row for ae header
416570 --
416571 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
416572 
416573 l_event_id := l_array_event_id(hdr_idx);
416574 
416575 --
416576 -- storing the hdr_idx for event. May be used by line cursor.
416577 --
416578 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
416579 
416580 --
416581 -- store sources from header extract. This can be improved to
416582 -- store only those sources from header extract that may be used in lines
416583 --
416584 
416585 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
416586 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
416587 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
416588 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
416589 g_array_event(l_event_id).array_value_char('source_7_meaning') := l_array_source_7_meaning(hdr_idx);
416590 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
416591 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
416592 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
416593 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
416594 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
416595 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
416596 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
416597 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
416598 
416599 --
416600 -- initilaize the status of ae headers for diffrent balance types
416601 -- the status is initialised to C_NOT_CREATED (2)
416602 --
416603 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
416604 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
416605 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
416606 
416607 --
416608 -- call api to validate and store accounting attributes for header
416609 --
416610 
416611 ------------------------------------------------------------
416612 -- Accrual Reversal : to get date for Standard Source (NONE)
416613 ------------------------------------------------------------
416614 l_acc_rev_gl_date_source := NULL;
416615 
416616      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
416617       l_rec_acct_attrs.array_date_value(1) := 
416618 xla_ae_sources_pkg.GetSystemSourceDate(
416619    p_source_code           => 'XLA_REFERENCE_DATE_1'
416620  , p_source_type_code      => 'Y'
416621  , p_source_application_id =>  602
416622 );
416623      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
416624       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
416625 
416626 
416627 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
416628 
416629 XLA_AE_HEADER_PKG.SetJeCategoryName;
416630 
416631 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
416632 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
416633 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
416634 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
416635 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
416636 
416637 
416638 --
416639 xla_ae_header_pkg.SetHdrDescription(
416640    p_description => Description_2 (
416641    p_application_id => p_application_id 
416642  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
416643  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
416644  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
416645  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
416646  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
416647    )
416648 );
416649 --
416650 
416651 -- No header level analytical criteria
416652 
416653 --
416654 --accounting attribute enhancement, bug 3612931
416655 --
416656 l_trx_reversal_source := SUBSTR(NULL, 1,30);
416657 
416658 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
416659    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
416660 
416661    xla_accounting_err_pkg.build_message
416662       (p_appli_s_name            => 'XLA'
416663       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
416664       ,p_token_1                 => 'ACCT_ATTR_NAME'
416665       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
416666       ,p_token_2                 => 'PRODUCT_NAME'
416667       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
416668       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
416669       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
416670       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
416671 
416672 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
416673    --
416674    -- following sets the accounting attributes needed to reverse
416675    -- accounting for a distributeion
416676    --
416677    xla_ae_lines_pkg.SetTrxReversalAttrs
416678       (p_event_id              => l_event_id
416679       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
416680       ,p_trx_reversal_source   => l_trx_reversal_source);
416681 
416682 END IF;
416683 
416684 
416685 ----------------------------------------------------------------
416686 -- 4262811 -  update the header statuses to invalid in need be
416687 ----------------------------------------------------------------
416688 --
416689 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
416690 
416691 
416692   -----------------------------------------------
416693   -- No accrual reversal for the event class/type
416694   -----------------------------------------------
416695 ----------------------------------------------------------------
416696 
416697 --
416698 -- this ends the header loop iteration for one bulk fetch
416699 --
416700 END LOOP;
416701 
416702 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
416703 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
416704 
416705 --
416706 -- insert dummy rows into lines gt table that were created due to
416707 -- transaction reversals
416708 --
416709 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
416710    l_result := XLA_AE_LINES_PKG.InsertLines;
416711 END IF;
416712 
416713 --
416714 -- reset the temp_line_num for each set of events fetched from header
416715 -- cursor rather than doing it for each new event in line cursor
416716 -- Bug 3939231
416717 --
416718 xla_ae_lines_pkg.g_temp_line_num := 0;
416719 
416720 
416721 
416722 --
416723 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
416724 --
416725 --
416726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
416727 
416728       trace
416729          (p_msg      => 'SQL - FETCH line_cur'
416730          ,p_level    => C_LEVEL_STATEMENT
416731          ,p_module   => l_log_module);
416732 
416733 END IF;
416734 --
416735 --
416736 LOOP
416737   --
416738   FETCH line_cur BULK COLLECT INTO
416739         l_array_entity_id
416740       , l_array_legal_entity_id
416741       , l_array_entity_code
416742       , l_array_transaction_num
416743       , l_array_event_id
416744       , l_array_class_code
416745       , l_array_event_type
416746       , l_array_event_number
416747       , l_array_event_date
416748       , l_array_transaction_date
416749       , l_array_reference_num_1
416750       , l_array_reference_num_2
416751       , l_array_reference_num_3
416752       , l_array_reference_num_4
416753       , l_array_reference_char_1
416754       , l_array_reference_char_2
416755       , l_array_reference_char_3
416756       , l_array_reference_char_4
416757       , l_array_reference_date_1
416758       , l_array_reference_date_2
416759       , l_array_reference_date_3
416760       , l_array_reference_date_4
416761       , l_array_event_created_by
416762       , l_array_budgetary_control_flag
416763       , l_array_extract_line_num 
416764       , l_array_source_11
416765       , l_array_source_84
416766       , l_array_source_91
416767       , l_array_source_95
416768       , l_array_source_97
416769       LIMIT l_rows;
416770 
416771   --
416772   IF (C_LEVEL_EVENT >= g_log_level) THEN
416773             trace
416774                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
416775                ,p_level    => C_LEVEL_EVENT
416776                ,p_module   => l_log_module);
416777   END IF;
416778   --
416779   EXIT WHEN l_array_entity_id.count = 0;
416780 
416781   XLA_AE_LINES_PKG.g_rec_lines := null;
416782 
416783 --
416784 -- Bug 4458708
416785 --
416786 XLA_AE_LINES_PKG.g_LineNumber := 0;
416787 --
416788 --
416789 
416790 FOR Idx IN 1..l_array_event_id.count LOOP
416791    --
416792    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
416793    --
416794    l_event_id := l_array_event_id(idx);  -- 5648433
416795 
416796    --
416797    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
416798    --
416799 
416800    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
416801              (g_array_event(l_event_id).array_value_num('header_index'))
416802          ,'N'
416803          ) <> 'Y'
416804    THEN
416805       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
416806          trace
416807             (p_msg      => 'Trancaction revesal option is not Y '
416808             ,p_level    => C_LEVEL_STATEMENT
416809             ,p_module   => l_log_module);
416810       END IF;
416811 
416812 --
416813 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
416814 --
416815 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
416816 --
416817 -- set event info as cache for other routines to refer event attributes
416818 --
416819 
416820 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
416821    l_previous_event_id := l_event_id;
416822 
416823    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
416824       (p_application_id           => p_application_id
416825       ,p_primary_ledger_id        => p_primary_ledger_id
416826       ,p_base_ledger_id           => p_base_ledger_id
416827       ,p_target_ledger_id         => p_target_ledger_id
416828       ,p_entity_id                => l_array_entity_id(Idx)
416829       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
416830       ,p_entity_code              => l_array_entity_code(Idx)
416831       ,p_transaction_num          => l_array_transaction_num(Idx)
416832       ,p_event_id                 => l_array_event_id(Idx)
416833       ,p_event_class_code         => l_array_class_code(Idx)
416834       ,p_event_type_code          => l_array_event_type(Idx)
416835       ,p_event_number             => l_array_event_number(Idx)
416836       ,p_event_date               => l_array_event_date(Idx)
416837       ,p_transaction_date         => l_array_transaction_date(Idx)
416838       ,p_reference_num_1          => l_array_reference_num_1(Idx)
416839       ,p_reference_num_2          => l_array_reference_num_2(Idx)
416840       ,p_reference_num_3          => l_array_reference_num_3(Idx)
416841       ,p_reference_num_4          => l_array_reference_num_4(Idx)
416842       ,p_reference_char_1         => l_array_reference_char_1(Idx)
416843       ,p_reference_char_2         => l_array_reference_char_2(Idx)
416844       ,p_reference_char_3         => l_array_reference_char_3(Idx)
416845       ,p_reference_char_4         => l_array_reference_char_4(Idx)
416846       ,p_reference_date_1         => l_array_reference_date_1(Idx)
416847       ,p_reference_date_2         => l_array_reference_date_2(Idx)
416848       ,p_reference_date_3         => l_array_reference_date_3(Idx)
416849       ,p_reference_date_4         => l_array_reference_date_4(Idx)
416850       ,p_event_created_by         => l_array_event_created_by(Idx)
416851       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
416852        --
416853 END IF;
416854 
416855 
416856 
416857 --
416858 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
416859 
416860 l_acct_reversal_source := SUBSTR(NULL, 1,30);
416861 
416862 IF l_continue_with_lines THEN
416863    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
416864       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
416865 
416866       xla_accounting_err_pkg.build_message
416867          (p_appli_s_name            => 'XLA'
416868          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
416869          ,p_token_1                 => 'LINE_NUMBER'
416870          ,p_value_1                 => l_array_extract_line_num(Idx)
416871          ,p_token_2                 => 'PRODUCT_NAME'
416872          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
416873          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
416874          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
416875          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
416876 
416877    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
416878       --
416879       -- following sets the accounting attributes needed to reverse
416880       -- accounting for a distributeion
416881       --
416882 
416883       --
416884       -- 5217187
416885       --
416886       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
416887       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
416888                                        g_array_event(l_event_id).array_value_num('header_index'));
416889       --
416890       --
416891 
416892       -- No reversal code generated
416893 
416894       xla_ae_lines_pkg.SetAcctReversalAttrs
416895          (p_event_id             => l_event_id
416896          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
416897          ,p_calculate_acctd_flag => l_calculate_acctd_flag
416898          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
416899    END IF;
416900 
416901    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
416902        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
416903 
416904 --
416905 AcctLineType_534 (
416906  p_application_id  => p_application_id
416907  ,p_event_id     => l_event_id
416908  ,p_calculate_acctd_flag => l_calculate_acctd_flag
416909  ,p_calculate_g_l_flag => l_calculate_g_l_flag
416910  ,p_actual_flag => l_actual_flag
416911  ,p_balance_type_code => l_balance_type_code
416912  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
416913  
416914  , p_source_11 => l_array_source_11(Idx)
416915  , p_source_84 => l_array_source_84(Idx)
416916  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
416917  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
416918  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
416919  , p_source_91 => l_array_source_91(Idx)
416920  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
416921  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
416922  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
416923  , p_source_95 => l_array_source_95(Idx)
416924  , p_source_97 => l_array_source_97(Idx)
416925  );
416926 If(l_balance_type_code = 'A') THEN
416927   l_actual_gain_loss_ref := l_gain_or_loss_ref;
416928 END IF;
416929 
416930 --
416931 
416932 
416933 --
416934 AcctLineType_541 (
416935  p_application_id  => p_application_id
416936  ,p_event_id     => l_event_id
416937  ,p_calculate_acctd_flag => l_calculate_acctd_flag
416938  ,p_calculate_g_l_flag => l_calculate_g_l_flag
416939  ,p_actual_flag => l_actual_flag
416940  ,p_balance_type_code => l_balance_type_code
416941  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
416942  
416943  , p_source_11 => l_array_source_11(Idx)
416944  , p_source_84 => l_array_source_84(Idx)
416945  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
416946  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
416947  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
416948  , p_source_91 => l_array_source_91(Idx)
416949  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
416950  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
416951  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
416952  , p_source_95 => l_array_source_95(Idx)
416953  , p_source_97 => l_array_source_97(Idx)
416954  );
416955 If(l_balance_type_code = 'A') THEN
416956   l_actual_gain_loss_ref := l_gain_or_loss_ref;
416957 END IF;
416958 
416959 --
416960 
416961       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
416962       -- or secondary ledger that has different currency with primary
416963       -- or alc that is calculated by sla
416964       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
416965             (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'))
416966 
416967 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
416968 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
416969           AND (l_actual_flag = 'A')) THEN
416970         XLA_AE_LINES_PKG.CreateGainOrLossLines(
416971           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
416972          ,p_application_id   => p_application_id
416973          ,p_amb_context_code => 'DEFAULT'
416974          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
416975          ,p_event_class_code => C_EVENT_CLASS_CODE
416976          ,p_event_type_code  => C_EVENT_TYPE_CODE
416977          
416978          ,p_gain_ccid        => -1
416979          ,p_loss_ccid        => -1
416980 
416981          ,p_actual_flag      => l_actual_flag
416982          ,p_enc_flag         => null
416983          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
416984          ,p_enc_g_l_ref      => null
416985          );
416986       END IF;
416987    END IF;
416988 END IF;
416989 
416990    ELSE
416991       --
416992       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
416993       --
416994       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
416995          trace
416996             (p_msg      => 'Trancaction revesal option is Y'
416997             ,p_level    => C_LEVEL_STATEMENT
416998             ,p_module   => l_log_module);
416999       END IF;
417000    END IF;
417001 
417002 END LOOP;
417003 l_result := XLA_AE_LINES_PKG.InsertLines ;
417004 end loop;
417005 close line_cur;
417006 
417007 
417008 --
417009 -- insert headers into xla_ae_headers_gt table
417010 --
417011 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
417012 
417013 -- insert into errors table here.
417014 
417015 END LOOP;
417016 
417017 --
417018 -- 4865292
417019 --
417020 -- Compare g_hdr_extract_count with event count in
417021 -- CreateHeadersAndLines.
417022 --
417023 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
417024 
417025 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
417026    trace (p_msg     => '# rows extracted from header extract objects '
417027                     || ' (running total): '
417028                     || g_hdr_extract_count
417029          ,p_level   => C_LEVEL_STATEMENT
417030          ,p_module  => l_log_module);
417031 END IF;
417032 
417033 CLOSE header_cur;
417034 --
417035 
417036 --
417037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
417038    trace
417039       (p_msg      => 'END of EventClass_615'
417040       ,p_level    => C_LEVEL_PROCEDURE
417041       ,p_module   => l_log_module);
417042 END IF;
417043 --
417044 RETURN l_result;
417045 EXCEPTION
417046 WHEN xla_exceptions_pkg.application_exception THEN
417047    
417048 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
417049 
417050    
417051 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
417052 
417053    RAISE;
417054 
417055 WHEN NO_DATA_FOUND THEN
417056 
417057 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
417058 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
417059 
417060 FOR header_record IN header_cur
417061 LOOP
417062     l_array_header_events(header_record.event_id) := header_record.event_id;
417063 END LOOP;
417064 
417065 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
417066 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
417067 
417068 fnd_file.put_line(fnd_file.LOG, '                    ');
417069 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
417070 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
417071 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
417072 
417073 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
417074 LOOP
417075 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
417076 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
417077         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
417078 	END IF;
417079 END LOOP;
417080 
417081 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
417082 fnd_file.put_line(fnd_file.LOG, '                    ');
417083 
417084 
417085 xla_exceptions_pkg.raise_message
417086       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_615');
417087 
417088 
417089 WHEN OTHERS THEN
417090    xla_exceptions_pkg.raise_message
417091       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_615');
417092 END EventClass_615;
417093 --
417094 
417095 ---------------------------------------
417096 --
417097 -- PRIVATE PROCEDURE
417098 --         insert_sources_616
417099 --
417100 ----------------------------------------
417101 --
417102 PROCEDURE insert_sources_616(
417103                                 p_target_ledger_id       IN NUMBER
417104                               , p_language               IN VARCHAR2
417105                               , p_sla_ledger_id          IN NUMBER
417106                               , p_pad_start_date         IN DATE
417107                               , p_pad_end_date           IN DATE
417108                          )
417109 IS
417110 
417111 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_ASSEMBLY_COMPLETION';
417112 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
417113 p_apps_owner                   VARCHAR2(30);
417114 l_log_module                   VARCHAR2(240);
417115 BEGIN
417116 IF g_log_enabled THEN
417117       l_log_module := C_DEFAULT_MODULE||'.insert_sources_616';
417118 END IF;
417119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
417120 
417121       trace
417122          (p_msg      => 'BEGIN of insert_sources_616'
417123          ,p_level    => C_LEVEL_PROCEDURE
417124          ,p_module   => l_log_module);
417125 
417126 END IF;
417127 
417128 -- select APPS owner
417129 SELECT oracle_username
417130   INTO p_apps_owner
417131   FROM fnd_oracle_userid
417132  WHERE read_only_flag = 'U'
417133 ;
417134 
417135 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
417136       trace
417137          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
417138                         ' - p_language = '||p_language||
417139                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
417140                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
417141                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
417142                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
417143          ,p_level    => C_LEVEL_STATEMENT
417144          ,p_module   => l_log_module);
417145 END IF;
417146 
417147 
417148 --
417149 INSERT INTO xla_diag_sources --hdr1
417150 (
417151         event_id
417152       , ledger_id
417153       , sla_ledger_id
417154       , description_language
417155       , object_name
417156       , object_type_code
417157       , line_number
417158       , source_application_id
417159       , source_type_code
417160       , source_code
417161       , source_value
417162       , source_meaning
417163       , created_by
417164       , creation_date
417165       , last_update_date
417166       , last_updated_by
417167       , last_update_login
417168       , program_update_date
417169       , program_application_id
417170       , program_id
417171       , request_id
417172 )
417173 SELECT
417174         event_id
417175       , p_target_ledger_id
417176       , p_sla_ledger_id
417177       , p_language
417178       , object_name
417179       , object_type_code
417180       , line_number
417181       , source_application_id
417182       , source_type_code
417183       , source_code
417184       , SUBSTR(source_value ,1,1996)
417185       , SUBSTR(source_meaning,1,200)
417186       , xla_environment_pkg.g_Usr_Id
417187       , TRUNC(SYSDATE)
417188       , TRUNC(SYSDATE)
417189       , xla_environment_pkg.g_Usr_Id
417190       , xla_environment_pkg.g_Login_Id
417191       , TRUNC(SYSDATE)
417192       , xla_environment_pkg.g_Prog_Appl_Id
417193       , xla_environment_pkg.g_Prog_Id
417194       , xla_environment_pkg.g_Req_Id
417195   FROM (
417196        SELECT xet.event_id                  event_id
417197             , 0                             line_number
417198             , CASE r
417199                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
417200                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
417201                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
417202                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
417203                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
417204                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
417205                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
417206                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
417207                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
417208                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
417209                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
417210                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
417211                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
417212                 WHEN 14 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
417213                 WHEN 15 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
417214                 WHEN 16 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
417215                 WHEN 17 THEN 'CST_XLA_REP_ITEM_REF_V' 
417216                 WHEN 18 THEN 'CST_XLA_INV_REF_V' 
417217                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
417218                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
417219                 WHEN 21 THEN 'CST_XLA_INV_HEADERS_V' 
417220                 
417221                ELSE null
417222               END                           object_name
417223             , CASE r
417224                 WHEN 1 THEN 'HEADER' 
417225                 WHEN 2 THEN 'HEADER' 
417226                 WHEN 3 THEN 'HEADER' 
417227                 WHEN 4 THEN 'HEADER' 
417228                 WHEN 5 THEN 'HEADER' 
417229                 WHEN 6 THEN 'HEADER' 
417230                 WHEN 7 THEN 'HEADER' 
417231                 WHEN 8 THEN 'HEADER' 
417232                 WHEN 9 THEN 'HEADER' 
417233                 WHEN 10 THEN 'HEADER' 
417234                 WHEN 11 THEN 'HEADER' 
417235                 WHEN 12 THEN 'HEADER' 
417236                 WHEN 13 THEN 'HEADER' 
417237                 WHEN 14 THEN 'HEADER' 
417238                 WHEN 15 THEN 'HEADER' 
417239                 WHEN 16 THEN 'HEADER' 
417240                 WHEN 17 THEN 'HEADER' 
417241                 WHEN 18 THEN 'HEADER' 
417242                 WHEN 19 THEN 'HEADER' 
417243                 WHEN 20 THEN 'HEADER' 
417244                 WHEN 21 THEN 'HEADER' 
417245                 
417246                 ELSE null
417247               END                           object_type_code
417248             , CASE r
417249                 WHEN 1 THEN '707' 
417250                 WHEN 2 THEN '707' 
417251                 WHEN 3 THEN '707' 
417252                 WHEN 4 THEN '707' 
417253                 WHEN 5 THEN '707' 
417254                 WHEN 6 THEN '707' 
417255                 WHEN 7 THEN '707' 
417256                 WHEN 8 THEN '707' 
417257                 WHEN 9 THEN '707' 
417258                 WHEN 10 THEN '707' 
417259                 WHEN 11 THEN '707' 
417260                 WHEN 12 THEN '707' 
417261                 WHEN 13 THEN '707' 
417262                 WHEN 14 THEN '707' 
417263                 WHEN 15 THEN '707' 
417264                 WHEN 16 THEN '707' 
417265                 WHEN 17 THEN '707' 
417266                 WHEN 18 THEN '707' 
417267                 WHEN 19 THEN '707' 
417268                 WHEN 20 THEN '707' 
417269                 WHEN 21 THEN '707' 
417270                 
417271                 ELSE null
417272               END                           source_application_id
417273             , 'S'             source_type_code
417274             , CASE r
417275                 WHEN 1 THEN 'TRANSACTION_ID' 
417276                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
417277                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
417278                 WHEN 4 THEN 'TRANSACTION_UOM' 
417279                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
417280                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
417281                 WHEN 7 THEN 'INV_ORG_AVG_COST_VAR_ACCT' 
417282                 WHEN 8 THEN 'PLA_BRIDGING_ACCOUNT' 
417283                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
417284                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
417285                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
417286                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
417287                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
417288                 WHEN 14 THEN 'DIS_JOB_BRIDGING_ACCT' 
417289                 WHEN 15 THEN 'WIP_ENTITY_TYPE' 
417290                 WHEN 16 THEN 'FLO_SCH_BRIDGING_ACCT' 
417291                 WHEN 17 THEN 'REP_ITM_BRIDGING_ACCT' 
417292                 WHEN 18 THEN 'TRANSACTION_SOURCE_ID' 
417293                 WHEN 19 THEN 'TRANSACTION_ACTION_ID' 
417294                 WHEN 20 THEN 'DISTRIBUTION_TYPE' 
417295                 WHEN 21 THEN 'TRANSFER_TO_GL_INDICATOR' 
417296                 
417297                 ELSE null
417298               END                           source_code
417299             , CASE r
417300                 WHEN 1 THEN TO_CHAR(h3.TRANSACTION_ID)
417301                 WHEN 2 THEN TO_CHAR(h8.ITEM_CONCATENATED_SEGMENTS)
417302                 WHEN 3 THEN TO_CHAR(h6.TRANSACTION_QUANTITY)
417303                 WHEN 4 THEN TO_CHAR(h6.TRANSACTION_UOM)
417304                 WHEN 5 THEN TO_CHAR(h9.INV_TXN_TYPE_DESCRIPTION)
417305                 WHEN 6 THEN TO_CHAR(h6.INV_TXN_DISTRIBUTION_ACCT)
417306                 WHEN 7 THEN TO_CHAR(h5.INV_ORG_AVG_COST_VAR_ACCT)
417307                 WHEN 8 THEN TO_CHAR(h10.PLA_BRIDGING_ACCOUNT)
417308                 WHEN 9 THEN TO_CHAR(h10.PLA_MATERIAL_ACCOUNT)
417309                 WHEN 10 THEN TO_CHAR(h10.PLA_MATERIAL_OVERHEAD_ACCOUNT)
417310                 WHEN 11 THEN TO_CHAR(h10.PLA_RESOURCE_ACCOUNT)
417311                 WHEN 12 THEN TO_CHAR(h10.PLA_OUTSIDE_PROCESSING_ACCOUNT)
417312                 WHEN 13 THEN TO_CHAR(h10.PLA_OVERHEAD_ACCOUNT)
417313                 WHEN 14 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
417314                 WHEN 15 THEN TO_CHAR(h13.WIP_ENTITY_TYPE)
417315                 WHEN 16 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
417316                 WHEN 17 THEN TO_CHAR(h11.REP_ITM_BRIDGING_ACCT)
417317                 WHEN 18 THEN TO_CHAR(h6.TRANSACTION_SOURCE_ID)
417318                 WHEN 19 THEN TO_CHAR(h3.TRANSACTION_ACTION_ID)
417319                 WHEN 20 THEN TO_CHAR(h3.DISTRIBUTION_TYPE)
417320                 WHEN 21 THEN TO_CHAR(h3.TRANSFER_TO_GL_INDICATOR)
417321                 
417322                 ELSE null
417323               END                           source_value
417324             , CASE r
417325                 WHEN 15 THEN fvl55.meaning
417326                 WHEN 19 THEN fvl62.meaning
417327                 WHEN 20 THEN fvl85.meaning
417328                 WHEN 21 THEN fvl114.meaning
417329                 
417330                 ELSE null
417331               END               source_meaning
417332         FROM xla_events_gt     xet  
417333       , CST_XLA_DISCRETE_JOB_REF_V  h1
417334       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
417335       , CST_XLA_INV_HEADERS_V  h3
417336       , CST_XLA_INV_ORG_PARAMS_REF_V  h5
417337       , CST_XLA_INV_REF_V  h6
417338       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h8
417339       , CST_XLA_INV_TXN_TYPES_REF_V  h9
417340       , CST_XLA_PLA_CATEGORY_REF_V  h10
417341       , CST_XLA_REP_ITEM_REF_V  h11
417342       , CST_XLA_WIP_ENTITY_REF_V  h13
417343   , fnd_lookup_values    fvl55
417344   , fnd_lookup_values    fvl62
417345   , fnd_lookup_values    fvl85
417346   , fnd_lookup_values    fvl114
417347             ,(select rownum r from all_objects where rownum <= 21 and owner = p_apps_owner)
417348        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
417349          AND xet.event_type_code = C_EVENT_TYPE_CODE
417350             AND h3.event_id = xet.event_id
417351  AND h1.dis_job_wip_entity_id  (+) = h6.transaction_source_id AND h2.flo_sch_wip_entity_id  (+) = h6.transaction_source_id AND h5.inv_organization_id  (+) = h3.organization_id AND h6.ref_transaction_id = h3.transaction_id AND h8.inventory_item_id = h3.inventory_item_id and h8.organization_id = h3.organization_id AND h9.inv_transaction_type_id = h3.transaction_type_id AND h10.pla_cat_organization_id  (+) = h3.organization_id 
417352 and h10.pla_cat_item_id          (+) = h3.inventory_item_id 
417353 and h10.pla_subinv_cg            (+) = h3.h_subinv_cg AND h11.rep_itm_wip_entity_id  (+) = h6.transaction_source_id  and h11.rep_itm_line_id  (+) = h6.repetitive_line_id AND h13.wip_entity_id  (+) = h6.transaction_source_id   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
417354   AND fvl55.lookup_code(+)         = h13.WIP_ENTITY_TYPE
417355   AND fvl55.view_application_id(+) = 700
417356   AND fvl55.language(+)            = USERENV('LANG')
417357      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
417358   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
417359   AND fvl62.view_application_id(+) = 700
417360   AND fvl62.language(+)            = USERENV('LANG')
417361      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
417362   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
417363   AND fvl85.view_application_id(+) = 700
417364   AND fvl85.language(+)            = USERENV('LANG')
417365      AND fvl114.lookup_type(+)         = 'YES_NO'
417366   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
417367   AND fvl114.view_application_id(+) = 0
417368   AND fvl114.language(+)            = USERENV('LANG')
417369   
417370 )
417371 ;
417372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
417373 
417374       trace
417375          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
417376          ,p_level    => C_LEVEL_STATEMENT
417377          ,p_module   => l_log_module);
417378 
417379 END IF;
417380 --
417381 
417382 
417383 
417384 --
417385 INSERT INTO xla_diag_sources --line1
417386 (
417387         event_id
417388       , ledger_id
417389       , sla_ledger_id
417390       , description_language
417391       , object_name
417392       , object_type_code
417393       , line_number
417394       , source_application_id
417395       , source_type_code
417396       , source_code
417397       , source_value
417398       , source_meaning
417399       , created_by
417400       , creation_date
417401       , last_update_date
417402       , last_updated_by
417403       , last_update_login
417404       , program_update_date
417405       , program_application_id
417406       , program_id
417407       , request_id
417408 )
417409 SELECT  event_id
417410       , p_target_ledger_id
417411       , p_sla_ledger_id
417412       , p_language
417413       , object_name
417414       , object_type_code
417415       , line_number
417416       , source_application_id
417417       , source_type_code
417418       , source_code
417419       , SUBSTR(source_value,1,1996)
417420       , SUBSTR(source_meaning,1,200)
417421       , xla_environment_pkg.g_Usr_Id
417422       , TRUNC(SYSDATE)
417423       , TRUNC(SYSDATE)
417424       , xla_environment_pkg.g_Usr_Id
417425       , xla_environment_pkg.g_Login_Id
417426       , TRUNC(SYSDATE)
417427       , xla_environment_pkg.g_Prog_Appl_Id
417428       , xla_environment_pkg.g_Prog_Id
417429       , xla_environment_pkg.g_Req_Id
417430   FROM (
417431        SELECT xet.event_id                  event_id
417432             , l4.line_number                 line_number
417433             , CASE r
417434                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
417435                 WHEN 2 THEN 'CST_XLA_RES_OVH_REF_V' 
417436                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
417437                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
417438                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
417439                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
417440                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
417441                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
417442                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
417443                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
417444                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
417445                 WHEN 12 THEN 'CST_XLA_INV_LINES_V' 
417446                 WHEN 13 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
417447                 
417448                ELSE null
417449               END                           object_name
417450             , CASE r
417451                 WHEN 1 THEN 'LINE' 
417452                 WHEN 2 THEN 'LINE' 
417453                 WHEN 3 THEN 'LINE' 
417454                 WHEN 4 THEN 'LINE' 
417455                 WHEN 5 THEN 'LINE' 
417456                 WHEN 6 THEN 'LINE' 
417457                 WHEN 7 THEN 'LINE' 
417458                 WHEN 8 THEN 'LINE' 
417459                 WHEN 9 THEN 'LINE' 
417460                 WHEN 10 THEN 'LINE' 
417461                 WHEN 11 THEN 'LINE' 
417462                 WHEN 12 THEN 'LINE' 
417463                 WHEN 13 THEN 'LINE' 
417464                 
417465                 ELSE null
417466               END                           object_type_code
417467             , CASE r
417468                 WHEN 1 THEN '707' 
417469                 WHEN 2 THEN '707' 
417470                 WHEN 3 THEN '707' 
417471                 WHEN 4 THEN '707' 
417472                 WHEN 5 THEN '707' 
417473                 WHEN 6 THEN '707' 
417474                 WHEN 7 THEN '707' 
417475                 WHEN 8 THEN '707' 
417476                 WHEN 9 THEN '707' 
417477                 WHEN 10 THEN '707' 
417478                 WHEN 11 THEN '707' 
417479                 WHEN 12 THEN '707' 
417480                 WHEN 13 THEN '707' 
417481                 
417482                 ELSE null
417483               END                           source_application_id
417484             , 'S'             source_type_code
417485             , CASE r
417486                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
417487                 WHEN 2 THEN 'RES_OVH_ABSORPTION_ACCT' 
417488                 WHEN 3 THEN 'COST_ELEMENT_ID' 
417489                 WHEN 4 THEN 'DISTRIBUTION_IDENTIFIER' 
417490                 WHEN 5 THEN 'CURRENCY_CODE' 
417491                 WHEN 6 THEN 'ENTERED_AMOUNT' 
417492                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
417493                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
417494                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
417495                 WHEN 10 THEN 'ACCOUNTED_AMOUNT' 
417496                 WHEN 11 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
417497                 WHEN 12 THEN 'L_ORGANIZATION_CODE' 
417498                 WHEN 13 THEN 'ASSET_INVENTORY' 
417499                 
417500                 ELSE null
417501               END                           source_code
417502             , CASE r
417503                 WHEN 1 THEN TO_CHAR(l4.CODE_COMBINATION_ID)
417504                 WHEN 2 THEN TO_CHAR(l12.RES_OVH_ABSORPTION_ACCT)
417505                 WHEN 3 THEN TO_CHAR(l4.COST_ELEMENT_ID)
417506                 WHEN 4 THEN TO_CHAR(l4.DISTRIBUTION_IDENTIFIER)
417507                 WHEN 5 THEN TO_CHAR(l4.CURRENCY_CODE)
417508                 WHEN 6 THEN TO_CHAR(l4.ENTERED_AMOUNT)
417509                 WHEN 7 THEN TO_CHAR(l4.CURRENCY_CONVERSION_DATE)
417510                 WHEN 8 THEN TO_CHAR(l4.CURRENCY_CONVERSION_RATE)
417511                 WHEN 9 THEN TO_CHAR(l4.CURRENCY_CONVERSION_TYPE)
417512                 WHEN 10 THEN TO_CHAR(l4.ACCOUNTED_AMOUNT)
417513                 WHEN 11 THEN TO_CHAR(l4.ACCOUNTING_LINE_TYPE_CODE)
417514                 WHEN 12 THEN TO_CHAR(l4.L_ORGANIZATION_CODE)
417515                 WHEN 13 THEN TO_CHAR(l7.ASSET_INVENTORY)
417516                 
417517                 ELSE null
417518               END                           source_value
417519             , CASE r
417520                 WHEN 3 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
417521                           1009615
417522                          ,TO_CHAR(l4.COST_ELEMENT_ID)
417523                          ,'COST_ELEMENT_ID'
417524                          ,'S'
417525                          ,707)
417526                 WHEN 13 THEN fvl110.meaning
417527                 
417528                 ELSE null
417529               END               source_meaning
417530          FROM  xla_events_gt     xet  
417531         , CST_XLA_INV_LINES_V  l4
417532         , CST_XLA_INV_SEC_INVS_REF_V  l7
417533         , CST_XLA_RES_OVH_REF_V  l12
417534   , fnd_lookup_values    fvl110
417535             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
417536         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
417537           AND xet.event_type_code = C_EVENT_TYPE_CODE
417538             AND l4.event_id          = xet.event_id
417539  AND l7.subinventory  (+) = l4.subinventory_code  and l7.subinv_organization_id  (+) = l4.l_organization_id AND l12.resource_id  (+) = l4.material_overhead_id   AND fvl110.lookup_type(+)         = 'YES_NO'
417540   AND fvl110.lookup_code(+)         = l7.ASSET_INVENTORY
417541   AND fvl110.view_application_id(+) = 0
417542   AND fvl110.language(+)            = USERENV('LANG')
417543   
417544 )
417545 ;
417546 --
417547 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
417548 
417549       trace
417550          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
417551          ,p_level    => C_LEVEL_STATEMENT
417552          ,p_module   => l_log_module);
417553 
417554 END IF;
417555 
417556 
417557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
417558       trace
417559          (p_msg      => 'END of insert_sources_616'
417560          ,p_level    => C_LEVEL_PROCEDURE
417561          ,p_module   => l_log_module);
417562 END IF;
417563 EXCEPTION
417564   WHEN xla_exceptions_pkg.application_exception THEN
417565       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
417566             trace
417567                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
417568                ,p_level    => C_LEVEL_EXCEPTION
417569                ,p_module   => l_log_module);
417570       END IF;
417571       RAISE;
417572   WHEN OTHERS THEN
417573       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
417574             trace
417575                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
417576                ,p_level    => C_LEVEL_EXCEPTION
417577                ,p_module   => l_log_module);
417578        END IF;
417579        xla_exceptions_pkg.raise_message
417580            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_616');
417581 END insert_sources_616;
417582 --
417583 
417584 ---------------------------------------
417585 --
417586 -- PRIVATE FUNCTION
417587 --         EventType_616
417588 --
417589 ----------------------------------------
417590 --
417591 FUNCTION EventType_616
417592        (p_application_id         IN NUMBER
417593        ,p_base_ledger_id         IN NUMBER
417594        ,p_target_ledger_id       IN NUMBER
417595        ,p_language               IN VARCHAR2
417596        ,p_currency_code          IN VARCHAR2
417597        ,p_sla_ledger_id          IN NUMBER
417598        ,p_pad_start_date         IN DATE
417599        ,p_pad_end_date           IN DATE
417600        ,p_primary_ledger_id      IN NUMBER)
417601 RETURN BOOLEAN IS
417602 --
417603 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_ASSEMBLY_COMPLETION';
417604 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
417605 
417606 l_calculate_acctd_flag   VARCHAR2(1) :='N';
417607 l_calculate_g_l_flag     VARCHAR2(1) :='N';
417608 --
417609 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417610 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417611 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
417612 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
417613 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417614 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
417615 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
417616 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417617 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
417618 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
417619 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417620 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417621 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417622 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
417623 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
417624 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
417625 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
417626 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
417627 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
417628 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
417629 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
417630 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
417631 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
417632 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
417633 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
417634 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
417635 
417636 l_event_id                             NUMBER;
417637 l_previous_event_id                    NUMBER;
417638 l_first_event_id                       NUMBER;
417639 l_last_event_id                        NUMBER;
417640 
417641 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
417642 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
417643 --
417644 --
417645 l_result                    BOOLEAN := TRUE;
417646 l_rows                      NUMBER  := 1000;
417647 l_event_type_name           VARCHAR2(80) := 'WIP Assembly Completion';
417648 l_event_class_name          VARCHAR2(80) := 'WIP Material';
417649 l_description               VARCHAR2(4000);
417650 l_transaction_reversal      NUMBER;
417651 l_ae_header_id              NUMBER;
417652 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
417653 l_log_module                VARCHAR2(240);
417654 --
417655 l_acct_reversal_source      VARCHAR2(30);
417656 l_trx_reversal_source       VARCHAR2(30);
417657 
417658 l_continue_with_lines       BOOLEAN := TRUE;
417659 --
417660 l_acc_rev_gl_date_source    DATE;                      -- 4262811
417661 --
417662 type t_array_event_id is table of number index by binary_integer;
417663 
417664 l_rec_array_event                    t_rec_array_event;
417665 l_null_rec_array_event               t_rec_array_event;
417666 l_array_ae_header_id                 xla_number_array_type;
417667 l_actual_flag                        VARCHAR2(1) := NULL;
417668 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
417669 l_balance_type_code                  VARCHAR2(1) :=NULL;
417670 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
417671 
417672 --
417673 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
417674 --
417675 
417676 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
417677 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
417678 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
417679 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
417680 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
417681 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
417682 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_AVG_COST_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
417683 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
417684 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
417685 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
417686 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
417687 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
417688 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
417689 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
417690 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
417691 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
417692 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
417693 TYPE t_array_source_61 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_SOURCE_ID%TYPE INDEX BY BINARY_INTEGER;
417694 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
417695 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
417696 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
417697 
417698 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
417699 TYPE t_array_source_13 IS TABLE OF CST_XLA_RES_OVH_REF_V.RES_OVH_ABSORPTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
417700 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
417701 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
417702 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
417703 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
417704 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
417705 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
417706 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
417707 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
417708 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
417709 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
417710 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
417711 
417712 l_array_source_1              t_array_source_1;
417713 l_array_source_2              t_array_source_2;
417714 l_array_source_3              t_array_source_3;
417715 l_array_source_4              t_array_source_4;
417716 l_array_source_5              t_array_source_5;
417717 l_array_source_20              t_array_source_20;
417718 l_array_source_21              t_array_source_21;
417719 l_array_source_22              t_array_source_22;
417720 l_array_source_41              t_array_source_41;
417721 l_array_source_42              t_array_source_42;
417722 l_array_source_43              t_array_source_43;
417723 l_array_source_44              t_array_source_44;
417724 l_array_source_45              t_array_source_45;
417725 l_array_source_54              t_array_source_54;
417726 l_array_source_55              t_array_source_55;
417727 l_array_source_55_meaning      t_array_lookup_meaning;
417728 l_array_source_56              t_array_source_56;
417729 l_array_source_57              t_array_source_57;
417730 l_array_source_61              t_array_source_61;
417731 l_array_source_62              t_array_source_62;
417732 l_array_source_62_meaning      t_array_lookup_meaning;
417733 l_array_source_85              t_array_source_85;
417734 l_array_source_85_meaning      t_array_lookup_meaning;
417735 l_array_source_114              t_array_source_114;
417736 l_array_source_114_meaning      t_array_lookup_meaning;
417737 
417738 l_array_source_11      t_array_source_11;
417739 l_array_source_13      t_array_source_13;
417740 l_array_source_15      t_array_source_15;
417741 l_array_source_84      t_array_source_84;
417742 l_array_source_88      t_array_source_88;
417743 l_array_source_91      t_array_source_91;
417744 l_array_source_92      t_array_source_92;
417745 l_array_source_93      t_array_source_93;
417746 l_array_source_94      t_array_source_94;
417747 l_array_source_95      t_array_source_95;
417748 l_array_source_97      t_array_source_97;
417749 l_array_source_108      t_array_source_108;
417750 l_array_source_110      t_array_source_110;
417751 l_array_source_110_meaning      t_array_lookup_meaning;
417752 
417753 --
417754 CURSOR header_cur
417755 IS
417756 SELECT /*+ leading(xet) cardinality(xet,1) */
417757 -- Event Type Code: WIP_ASSEMBLY_COMPLETION
417758 -- Event Class Code: WIP_MTL
417759     xet.entity_id
417760   , xet.legal_entity_id
417761   , xet.entity_code
417762   , xet.transaction_number
417763   , xet.event_id
417764   , xet.event_class_code
417765   , xet.event_type_code
417766   , xet.event_number
417767   , xet.event_date
417768   , xet.transaction_date
417769   , xet.reference_num_1
417770   , xet.reference_num_2
417771   , xet.reference_num_3
417772   , xet.reference_num_4
417773   , xet.reference_char_1
417774   , xet.reference_char_2
417775   , xet.reference_char_3
417776   , xet.reference_char_4
417777   , xet.reference_date_1
417778   , xet.reference_date_2
417779   , xet.reference_date_3
417780   , xet.reference_date_4
417781   , xet.event_created_by
417782   , xet.budgetary_control_flag 
417783   , h3.TRANSACTION_ID    source_1
417784   , h8.ITEM_CONCATENATED_SEGMENTS    source_2
417785   , h6.TRANSACTION_QUANTITY    source_3
417786   , h6.TRANSACTION_UOM    source_4
417787   , h9.INV_TXN_TYPE_DESCRIPTION    source_5
417788   , h6.INV_TXN_DISTRIBUTION_ACCT    source_20
417789   , h5.INV_ORG_AVG_COST_VAR_ACCT    source_21
417790   , h10.PLA_BRIDGING_ACCOUNT    source_22
417791   , h10.PLA_MATERIAL_ACCOUNT    source_41
417792   , h10.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
417793   , h10.PLA_RESOURCE_ACCOUNT    source_43
417794   , h10.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
417795   , h10.PLA_OVERHEAD_ACCOUNT    source_45
417796   , h1.DIS_JOB_BRIDGING_ACCT    source_54
417797   , h13.WIP_ENTITY_TYPE    source_55
417798   , fvl55.meaning   source_55_meaning
417799   , h2.FLO_SCH_BRIDGING_ACCT    source_56
417800   , h11.REP_ITM_BRIDGING_ACCT    source_57
417801   , h6.TRANSACTION_SOURCE_ID    source_61
417802   , h3.TRANSACTION_ACTION_ID    source_62
417803   , fvl62.meaning   source_62_meaning
417804   , h3.DISTRIBUTION_TYPE    source_85
417805   , fvl85.meaning   source_85_meaning
417806   , h3.TRANSFER_TO_GL_INDICATOR    source_114
417807   , fvl114.meaning   source_114_meaning
417808   FROM xla_events_gt     xet 
417809   , CST_XLA_DISCRETE_JOB_REF_V  h1
417810   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
417811   , CST_XLA_INV_HEADERS_V  h3
417812   , CST_XLA_INV_ORG_PARAMS_REF_V  h5
417813   , CST_XLA_INV_REF_V  h6
417814   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h8
417815   , CST_XLA_INV_TXN_TYPES_REF_V  h9
417816   , CST_XLA_PLA_CATEGORY_REF_V  h10
417817   , CST_XLA_REP_ITEM_REF_V  h11
417818   , CST_XLA_WIP_ENTITY_REF_V  h13
417819   , fnd_lookup_values    fvl55
417820   , fnd_lookup_values    fvl62
417821   , fnd_lookup_values    fvl85
417822   , fnd_lookup_values    fvl114
417823  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
417824    and xet.event_type_code = C_EVENT_TYPE_CODE
417825    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
417826  AND h1.DIS_JOB_WIP_ENTITY_ID  (+) = h6.TRANSACTION_SOURCE_ID AND h2.FLO_SCH_WIP_ENTITY_ID  (+) = h6.TRANSACTION_SOURCE_ID AND h5.INV_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID AND h6.ref_transaction_id = h3.transaction_id AND h8.INVENTORY_ITEM_ID = h3.INVENTORY_ITEM_ID AND h8.ORGANIZATION_ID = h3.ORGANIZATION_ID AND h9.INV_TRANSACTION_TYPE_ID = h3.TRANSACTION_TYPE_ID AND h10.PLA_CAT_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID 
417827 AND h10.PLA_CAT_ITEM_ID          (+) = h3.INVENTORY_ITEM_ID 
417828 AND h10.PLA_SUBINV_CG            (+) = h3.H_SUBINV_CG AND h11.rep_itm_wip_entity_id  (+) = h6.transaction_source_id  AND h11.rep_itm_line_id  (+) = h6.repetitive_line_id AND h13.WIP_ENTITY_ID  (+) = h6.TRANSACTION_SOURCE_ID   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
417829   AND fvl55.lookup_code(+)         = h13.WIP_ENTITY_TYPE
417830   AND fvl55.view_application_id(+) = 700
417831   AND fvl55.language(+)            = USERENV('LANG')
417832      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
417833   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
417834   AND fvl62.view_application_id(+) = 700
417835   AND fvl62.language(+)            = USERENV('LANG')
417836      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
417837   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
417838   AND fvl85.view_application_id(+) = 700
417839   AND fvl85.language(+)            = USERENV('LANG')
417840      AND fvl114.lookup_type(+)         = 'YES_NO'
417841   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
417842   AND fvl114.view_application_id(+) = 0
417843   AND fvl114.language(+)            = USERENV('LANG')
417844   
417845  ORDER BY event_id
417846 ;
417847 
417848 
417849 --
417850 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
417851 IS
417852 SELECT /*+ leading(xet) cardinality(xet,1) */
417853 -- Event Type Code: WIP_ASSEMBLY_COMPLETION
417854 -- Event Class Code: WIP_MTL
417855     xet.entity_id
417856    ,xet.legal_entity_id
417857    ,xet.entity_code
417858    ,xet.transaction_number
417859    ,xet.event_id
417860    ,xet.event_class_code
417861    ,xet.event_type_code
417862    ,xet.event_number
417863    ,xet.event_date
417864    ,xet.transaction_date
417865    ,xet.reference_num_1
417866    ,xet.reference_num_2
417867    ,xet.reference_num_3
417868    ,xet.reference_num_4
417869    ,xet.reference_char_1
417870    ,xet.reference_char_2
417871    ,xet.reference_char_3
417872    ,xet.reference_char_4
417873    ,xet.reference_date_1
417874    ,xet.reference_date_2
417875    ,xet.reference_date_3
417876    ,xet.reference_date_4
417877    ,xet.event_created_by
417878    ,xet.budgetary_control_flag  , l4.LINE_NUMBER  
417879   , l4.CODE_COMBINATION_ID    source_11
417880   , l12.RES_OVH_ABSORPTION_ACCT    source_13
417881   , l4.COST_ELEMENT_ID    source_15
417882   , l4.DISTRIBUTION_IDENTIFIER    source_84
417883   , l4.CURRENCY_CODE    source_88
417884   , l4.ENTERED_AMOUNT    source_91
417885   , l4.CURRENCY_CONVERSION_DATE    source_92
417886   , l4.CURRENCY_CONVERSION_RATE    source_93
417887   , l4.CURRENCY_CONVERSION_TYPE    source_94
417888   , l4.ACCOUNTED_AMOUNT    source_95
417889   , l4.ACCOUNTING_LINE_TYPE_CODE    source_97
417890   , l4.L_ORGANIZATION_CODE    source_108
417891   , l7.ASSET_INVENTORY    source_110
417892   , fvl110.meaning   source_110_meaning
417893   FROM xla_events_gt     xet 
417894   , CST_XLA_INV_LINES_V  l4
417895   , CST_XLA_INV_SEC_INVS_REF_V  l7
417896   , CST_XLA_RES_OVH_REF_V  l12
417897   , fnd_lookup_values    fvl110
417898  WHERE xet.event_id between x_first_event_id and x_last_event_id
417899    and xet.event_date between p_pad_start_date and p_pad_end_date
417900    and xet.event_type_code = C_EVENT_TYPE_CODE
417901    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
417902  AND l7.SUBINVENTORY  (+) = l4.SUBINVENTORY_CODE  AND l7.SUBINV_ORGANIZATION_ID  (+) = l4.L_ORGANIZATION_ID AND l12.resource_id  (+) = l4.material_overhead_id   AND fvl110.lookup_type(+)         = 'YES_NO'
417903   AND fvl110.lookup_code(+)         = l7.ASSET_INVENTORY
417904   AND fvl110.view_application_id(+) = 0
417905   AND fvl110.language(+)            = USERENV('LANG')
417906   ;
417907 
417908 --
417909 BEGIN
417910 IF g_log_enabled THEN
417911    l_log_module := C_DEFAULT_MODULE||'.EventType_616';
417912 END IF;
417913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
417914    trace
417915       (p_msg      => 'BEGIN of EventType_616'
417916       ,p_level    => C_LEVEL_PROCEDURE
417917       ,p_module   => l_log_module);
417918 END IF;
417919 
417920 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
417921    trace
417922       (p_msg      => 'p_application_id = '||p_application_id||
417923                      ' - p_base_ledger_id = '||p_base_ledger_id||
417924                      ' - p_target_ledger_id  = '||p_target_ledger_id||
417925                      ' - p_language = '||p_language||
417926                      ' - p_currency_code = '||p_currency_code||
417927                      ' - p_sla_ledger_id = '||p_sla_ledger_id
417928       ,p_level    => C_LEVEL_STATEMENT
417929       ,p_module   => l_log_module);
417930 END IF;
417931 --
417932 -- initialze arrays
417933 --
417934 g_array_event.DELETE;
417935 l_rec_array_event := l_null_rec_array_event;
417936 --
417937 --------------------------------------
417938 -- 4262811 Initialze MPA Line Number
417939 --------------------------------------
417940 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
417941 
417942 --
417943 
417944 --
417945 OPEN header_cur;
417946 --
417947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
417948    trace
417949    (p_msg      => 'SQL - FETCH header_cur'
417950    ,p_level    => C_LEVEL_STATEMENT
417951    ,p_module   => l_log_module);
417952 END IF;
417953 --
417954 LOOP
417955 FETCH header_cur BULK COLLECT INTO
417956         l_array_entity_id
417957       , l_array_legal_entity_id
417958       , l_array_entity_code
417959       , l_array_transaction_num
417960       , l_array_event_id
417961       , l_array_class_code
417962       , l_array_event_type
417963       , l_array_event_number
417964       , l_array_event_date
417965       , l_array_transaction_date
417966       , l_array_reference_num_1
417967       , l_array_reference_num_2
417968       , l_array_reference_num_3
417969       , l_array_reference_num_4
417970       , l_array_reference_char_1
417971       , l_array_reference_char_2
417972       , l_array_reference_char_3
417973       , l_array_reference_char_4
417974       , l_array_reference_date_1
417975       , l_array_reference_date_2
417976       , l_array_reference_date_3
417977       , l_array_reference_date_4
417978       , l_array_event_created_by
417979       , l_array_budgetary_control_flag 
417980       , l_array_source_1
417981       , l_array_source_2
417982       , l_array_source_3
417983       , l_array_source_4
417984       , l_array_source_5
417985       , l_array_source_20
417986       , l_array_source_21
417987       , l_array_source_22
417988       , l_array_source_41
417989       , l_array_source_42
417990       , l_array_source_43
417991       , l_array_source_44
417992       , l_array_source_45
417993       , l_array_source_54
417994       , l_array_source_55
417995       , l_array_source_55_meaning
417996       , l_array_source_56
417997       , l_array_source_57
417998       , l_array_source_61
417999       , l_array_source_62
418000       , l_array_source_62_meaning
418001       , l_array_source_85
418002       , l_array_source_85_meaning
418003       , l_array_source_114
418004       , l_array_source_114_meaning
418005       LIMIT l_rows;
418006 --
418007 IF (C_LEVEL_EVENT >= g_log_level) THEN
418008    trace
418009    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
418010    ,p_level    => C_LEVEL_EVENT
418011    ,p_module   => l_log_module);
418012 END IF;
418013 --
418014 EXIT WHEN l_array_entity_id.COUNT = 0;
418015 
418016 -- initialize arrays
418017 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
418018 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
418019 
418020 --
418021 -- Bug 4458708
418022 --
418023 XLA_AE_LINES_PKG.g_LineNumber := 0;
418024 
418025 
418026 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
418027 g_last_hdr_idx := l_array_event_id.LAST;
418028 --
418029 -- loop for the headers. Each iteration is for each header extract row
418030 -- fetched in header cursor
418031 --
418032 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
418033 
418034 --
418035 -- set event info as cache for other routines to refer event attributes
418036 --
418037 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
418038    (p_application_id           => p_application_id
418039    ,p_primary_ledger_id        => p_primary_ledger_id
418040    ,p_base_ledger_id           => p_base_ledger_id
418041    ,p_target_ledger_id         => p_target_ledger_id
418042    ,p_entity_id                => l_array_entity_id(hdr_idx)
418043    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
418044    ,p_entity_code              => l_array_entity_code(hdr_idx)
418045    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
418046    ,p_event_id                 => l_array_event_id(hdr_idx)
418047    ,p_event_class_code         => l_array_class_code(hdr_idx)
418048    ,p_event_type_code          => l_array_event_type(hdr_idx)
418049    ,p_event_number             => l_array_event_number(hdr_idx)
418050    ,p_event_date               => l_array_event_date(hdr_idx)
418051    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
418052    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
418053    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
418054    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
418055    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
418056    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
418057    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
418058    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
418059    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
418060    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
418061    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
418062    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
418063    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
418064    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
418065    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
418066 
418067 --
418068 -- set the status of entry to C_VALID (0)
418069 --
418070 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
418071 
418072 --
418073 -- initialize a row for ae header
418074 --
418075 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
418076 
418077 l_event_id := l_array_event_id(hdr_idx);
418078 
418079 --
418080 -- storing the hdr_idx for event. May be used by line cursor.
418081 --
418082 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
418083 
418084 --
418085 -- store sources from header extract. This can be improved to
418086 -- store only those sources from header extract that may be used in lines
418087 --
418088 
418089 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
418090 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
418091 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
418092 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
418093 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
418094 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
418095 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
418096 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
418097 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
418098 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
418099 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
418100 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
418101 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
418102 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
418103 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
418104 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
418105 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
418106 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
418107 g_array_event(l_event_id).array_value_num('source_61') := l_array_source_61(hdr_idx);
418108 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
418109 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
418110 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
418111 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
418112 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
418113 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
418114 
418115 --
418116 -- initilaize the status of ae headers for diffrent balance types
418117 -- the status is initialised to C_NOT_CREATED (2)
418118 --
418119 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
418120 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
418121 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
418122 
418123 --
418124 -- call api to validate and store accounting attributes for header
418125 --
418126 
418127 ------------------------------------------------------------
418128 -- Accrual Reversal : to get date for Standard Source (NONE)
418129 ------------------------------------------------------------
418130 l_acc_rev_gl_date_source := NULL;
418131 
418132      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
418133       l_rec_acct_attrs.array_date_value(1) := 
418134 xla_ae_sources_pkg.GetSystemSourceDate(
418135    p_source_code           => 'XLA_REFERENCE_DATE_1'
418136  , p_source_type_code      => 'Y'
418137  , p_source_application_id =>  602
418138 );
418139      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
418140       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
418141 
418142 
418143 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
418144 
418145 XLA_AE_HEADER_PKG.SetJeCategoryName;
418146 
418147 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
418148 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
418149 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
418150 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
418151 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
418152 
418153 
418154 --
418155 xla_ae_header_pkg.SetHdrDescription(
418156    p_description => Description_1 (
418157    p_application_id => p_application_id 
418158  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418159  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418160  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418161  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418162  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418163    )
418164 );
418165 --
418166 
418167 -- No header level analytical criteria
418168 
418169 --
418170 --accounting attribute enhancement, bug 3612931
418171 --
418172 l_trx_reversal_source := SUBSTR(NULL, 1,30);
418173 
418174 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
418175    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
418176 
418177    xla_accounting_err_pkg.build_message
418178       (p_appli_s_name            => 'XLA'
418179       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
418180       ,p_token_1                 => 'ACCT_ATTR_NAME'
418181       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
418182       ,p_token_2                 => 'PRODUCT_NAME'
418183       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
418184       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
418185       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
418186       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
418187 
418188 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
418189    --
418190    -- following sets the accounting attributes needed to reverse
418191    -- accounting for a distributeion
418192    --
418193    xla_ae_lines_pkg.SetTrxReversalAttrs
418194       (p_event_id              => l_event_id
418195       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
418196       ,p_trx_reversal_source   => l_trx_reversal_source);
418197 
418198 END IF;
418199 
418200 
418201 ----------------------------------------------------------------
418202 -- 4262811 -  update the header statuses to invalid in need be
418203 ----------------------------------------------------------------
418204 --
418205 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
418206 
418207 
418208   -----------------------------------------------
418209   -- No accrual reversal for the event class/type
418210   -----------------------------------------------
418211 ----------------------------------------------------------------
418212 
418213 --
418214 -- this ends the header loop iteration for one bulk fetch
418215 --
418216 END LOOP;
418217 
418218 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
418219 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
418220 
418221 --
418222 -- insert dummy rows into lines gt table that were created due to
418223 -- transaction reversals
418224 --
418225 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
418226    l_result := XLA_AE_LINES_PKG.InsertLines;
418227 END IF;
418228 
418229 --
418230 -- reset the temp_line_num for each set of events fetched from header
418231 -- cursor rather than doing it for each new event in line cursor
418232 -- Bug 3939231
418233 --
418234 xla_ae_lines_pkg.g_temp_line_num := 0;
418235 
418236 
418237 
418238 --
418239 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
418240 --
418241 --
418242 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
418243 
418244       trace
418245          (p_msg      => 'SQL - FETCH line_cur'
418246          ,p_level    => C_LEVEL_STATEMENT
418247          ,p_module   => l_log_module);
418248 
418249 END IF;
418250 --
418251 --
418252 LOOP
418253   --
418254   FETCH line_cur BULK COLLECT INTO
418255         l_array_entity_id
418256       , l_array_legal_entity_id
418257       , l_array_entity_code
418258       , l_array_transaction_num
418259       , l_array_event_id
418260       , l_array_class_code
418261       , l_array_event_type
418262       , l_array_event_number
418263       , l_array_event_date
418264       , l_array_transaction_date
418265       , l_array_reference_num_1
418266       , l_array_reference_num_2
418267       , l_array_reference_num_3
418268       , l_array_reference_num_4
418269       , l_array_reference_char_1
418270       , l_array_reference_char_2
418271       , l_array_reference_char_3
418272       , l_array_reference_char_4
418273       , l_array_reference_date_1
418274       , l_array_reference_date_2
418275       , l_array_reference_date_3
418276       , l_array_reference_date_4
418277       , l_array_event_created_by
418278       , l_array_budgetary_control_flag
418279       , l_array_extract_line_num 
418280       , l_array_source_11
418281       , l_array_source_13
418282       , l_array_source_15
418283       , l_array_source_84
418284       , l_array_source_88
418285       , l_array_source_91
418286       , l_array_source_92
418287       , l_array_source_93
418288       , l_array_source_94
418289       , l_array_source_95
418290       , l_array_source_97
418291       , l_array_source_108
418292       , l_array_source_110
418293       , l_array_source_110_meaning
418294       LIMIT l_rows;
418295 
418296   --
418297   IF (C_LEVEL_EVENT >= g_log_level) THEN
418298             trace
418299                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
418300                ,p_level    => C_LEVEL_EVENT
418301                ,p_module   => l_log_module);
418302   END IF;
418303   --
418304   EXIT WHEN l_array_entity_id.count = 0;
418305 
418306   XLA_AE_LINES_PKG.g_rec_lines := null;
418307 
418308 --
418309 -- Bug 4458708
418310 --
418311 XLA_AE_LINES_PKG.g_LineNumber := 0;
418312 --
418313 --
418314 
418315 FOR Idx IN 1..l_array_event_id.count LOOP
418316    --
418317    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
418318    --
418319    l_event_id := l_array_event_id(idx);  -- 5648433
418320 
418321    --
418322    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
418323    --
418324 
418325    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
418326              (g_array_event(l_event_id).array_value_num('header_index'))
418327          ,'N'
418328          ) <> 'Y'
418329    THEN
418330       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
418331          trace
418332             (p_msg      => 'Trancaction revesal option is not Y '
418333             ,p_level    => C_LEVEL_STATEMENT
418334             ,p_module   => l_log_module);
418335       END IF;
418336 
418337 --
418338 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
418339 --
418340 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
418341 --
418342 -- set event info as cache for other routines to refer event attributes
418343 --
418344 
418345 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
418346    l_previous_event_id := l_event_id;
418347 
418348    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
418349       (p_application_id           => p_application_id
418350       ,p_primary_ledger_id        => p_primary_ledger_id
418351       ,p_base_ledger_id           => p_base_ledger_id
418352       ,p_target_ledger_id         => p_target_ledger_id
418353       ,p_entity_id                => l_array_entity_id(Idx)
418354       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
418355       ,p_entity_code              => l_array_entity_code(Idx)
418356       ,p_transaction_num          => l_array_transaction_num(Idx)
418357       ,p_event_id                 => l_array_event_id(Idx)
418358       ,p_event_class_code         => l_array_class_code(Idx)
418359       ,p_event_type_code          => l_array_event_type(Idx)
418360       ,p_event_number             => l_array_event_number(Idx)
418361       ,p_event_date               => l_array_event_date(Idx)
418362       ,p_transaction_date         => l_array_transaction_date(Idx)
418363       ,p_reference_num_1          => l_array_reference_num_1(Idx)
418364       ,p_reference_num_2          => l_array_reference_num_2(Idx)
418365       ,p_reference_num_3          => l_array_reference_num_3(Idx)
418366       ,p_reference_num_4          => l_array_reference_num_4(Idx)
418367       ,p_reference_char_1         => l_array_reference_char_1(Idx)
418368       ,p_reference_char_2         => l_array_reference_char_2(Idx)
418369       ,p_reference_char_3         => l_array_reference_char_3(Idx)
418370       ,p_reference_char_4         => l_array_reference_char_4(Idx)
418371       ,p_reference_date_1         => l_array_reference_date_1(Idx)
418372       ,p_reference_date_2         => l_array_reference_date_2(Idx)
418373       ,p_reference_date_3         => l_array_reference_date_3(Idx)
418374       ,p_reference_date_4         => l_array_reference_date_4(Idx)
418375       ,p_event_created_by         => l_array_event_created_by(Idx)
418376       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
418377        --
418378 END IF;
418379 
418380 
418381 
418382 --
418383 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
418384 
418385 l_acct_reversal_source := SUBSTR(NULL, 1,30);
418386 
418387 IF l_continue_with_lines THEN
418388    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
418389       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
418390 
418391       xla_accounting_err_pkg.build_message
418392          (p_appli_s_name            => 'XLA'
418393          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
418394          ,p_token_1                 => 'LINE_NUMBER'
418395          ,p_value_1                 => l_array_extract_line_num(Idx)
418396          ,p_token_2                 => 'PRODUCT_NAME'
418397          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
418398          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
418399          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
418400          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
418401 
418402    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
418403       --
418404       -- following sets the accounting attributes needed to reverse
418405       -- accounting for a distributeion
418406       --
418407 
418408       --
418409       -- 5217187
418410       --
418411       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
418412       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
418413                                        g_array_event(l_event_id).array_value_num('header_index'));
418414       --
418415       --
418416 
418417       -- No reversal code generated
418418 
418419       xla_ae_lines_pkg.SetAcctReversalAttrs
418420          (p_event_id             => l_event_id
418421          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
418422          ,p_calculate_acctd_flag => l_calculate_acctd_flag
418423          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
418424    END IF;
418425 
418426    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
418427        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
418428 
418429 --
418430 AcctLineType_89 (
418431  p_application_id  => p_application_id
418432  ,p_event_id     => l_event_id
418433  ,p_calculate_acctd_flag => l_calculate_acctd_flag
418434  ,p_calculate_g_l_flag => l_calculate_g_l_flag
418435  ,p_actual_flag => l_actual_flag
418436  ,p_balance_type_code => l_balance_type_code
418437  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
418438  
418439  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418440  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418441  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418442  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418443  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418444  , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
418445  , p_source_84 => l_array_source_84(Idx)
418446  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
418447  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
418448  , p_source_88 => l_array_source_88(Idx)
418449  , p_source_91 => l_array_source_91(Idx)
418450  , p_source_92 => l_array_source_92(Idx)
418451  , p_source_93 => l_array_source_93(Idx)
418452  , p_source_94 => l_array_source_94(Idx)
418453  , p_source_95 => l_array_source_95(Idx)
418454  , p_source_97 => l_array_source_97(Idx)
418455  );
418456 If(l_balance_type_code = 'A') THEN
418457   l_actual_gain_loss_ref := l_gain_or_loss_ref;
418458 END IF;
418459 
418460 --
418461 
418462 
418463 --
418464 AcctLineType_273 (
418465  p_application_id  => p_application_id
418466  ,p_event_id     => l_event_id
418467  ,p_calculate_acctd_flag => l_calculate_acctd_flag
418468  ,p_calculate_g_l_flag => l_calculate_g_l_flag
418469  ,p_actual_flag => l_actual_flag
418470  ,p_balance_type_code => l_balance_type_code
418471  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
418472  
418473  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418474  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418475  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418476  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418477  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418478  , p_source_15 => l_array_source_15(Idx)
418479  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
418480  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
418481  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
418482  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
418483  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
418484  , p_source_84 => l_array_source_84(Idx)
418485  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
418486  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
418487  , p_source_88 => l_array_source_88(Idx)
418488  , p_source_91 => l_array_source_91(Idx)
418489  , p_source_92 => l_array_source_92(Idx)
418490  , p_source_93 => l_array_source_93(Idx)
418491  , p_source_94 => l_array_source_94(Idx)
418492  , p_source_95 => l_array_source_95(Idx)
418493  , p_source_97 => l_array_source_97(Idx)
418494  , p_source_108 => l_array_source_108(Idx)
418495  );
418496 If(l_balance_type_code = 'A') THEN
418497   l_actual_gain_loss_ref := l_gain_or_loss_ref;
418498 END IF;
418499 
418500 --
418501 
418502 
418503 --
418504 AcctLineType_307 (
418505  p_application_id  => p_application_id
418506  ,p_event_id     => l_event_id
418507  ,p_calculate_acctd_flag => l_calculate_acctd_flag
418508  ,p_calculate_g_l_flag => l_calculate_g_l_flag
418509  ,p_actual_flag => l_actual_flag
418510  ,p_balance_type_code => l_balance_type_code
418511  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
418512  
418513  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418514  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418515  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418516  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418517  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418518  , p_source_13 => l_array_source_13(Idx)
418519  , p_source_84 => l_array_source_84(Idx)
418520  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
418521  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
418522  , p_source_88 => l_array_source_88(Idx)
418523  , p_source_91 => l_array_source_91(Idx)
418524  , p_source_92 => l_array_source_92(Idx)
418525  , p_source_93 => l_array_source_93(Idx)
418526  , p_source_94 => l_array_source_94(Idx)
418527  , p_source_95 => l_array_source_95(Idx)
418528  , p_source_97 => l_array_source_97(Idx)
418529  );
418530 If(l_balance_type_code = 'A') THEN
418531   l_actual_gain_loss_ref := l_gain_or_loss_ref;
418532 END IF;
418533 
418534 --
418535 
418536 
418537 --
418538 AcctLineType_369 (
418539  p_application_id  => p_application_id
418540  ,p_event_id     => l_event_id
418541  ,p_calculate_acctd_flag => l_calculate_acctd_flag
418542  ,p_calculate_g_l_flag => l_calculate_g_l_flag
418543  ,p_actual_flag => l_actual_flag
418544  ,p_balance_type_code => l_balance_type_code
418545  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
418546  
418547  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418548  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418549  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418550  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418551  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418552  , p_source_11 => l_array_source_11(Idx)
418553  , p_source_84 => l_array_source_84(Idx)
418554  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
418555  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
418556  , p_source_88 => l_array_source_88(Idx)
418557  , p_source_91 => l_array_source_91(Idx)
418558  , p_source_92 => l_array_source_92(Idx)
418559  , p_source_93 => l_array_source_93(Idx)
418560  , p_source_94 => l_array_source_94(Idx)
418561  , p_source_95 => l_array_source_95(Idx)
418562  , p_source_97 => l_array_source_97(Idx)
418563  );
418564 If(l_balance_type_code = 'A') THEN
418565   l_actual_gain_loss_ref := l_gain_or_loss_ref;
418566 END IF;
418567 
418568 --
418569 
418570 
418571 --
418572 AcctLineType_388 (
418573  p_application_id  => p_application_id
418574  ,p_event_id     => l_event_id
418575  ,p_calculate_acctd_flag => l_calculate_acctd_flag
418576  ,p_calculate_g_l_flag => l_calculate_g_l_flag
418577  ,p_actual_flag => l_actual_flag
418578  ,p_balance_type_code => l_balance_type_code
418579  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
418580  
418581  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418582  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418583  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418584  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418585  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418586  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
418587  , p_source_84 => l_array_source_84(Idx)
418588  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
418589  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
418590  , p_source_88 => l_array_source_88(Idx)
418591  , p_source_91 => l_array_source_91(Idx)
418592  , p_source_92 => l_array_source_92(Idx)
418593  , p_source_93 => l_array_source_93(Idx)
418594  , p_source_94 => l_array_source_94(Idx)
418595  , p_source_95 => l_array_source_95(Idx)
418596  , p_source_97 => l_array_source_97(Idx)
418597  , p_source_110 => l_array_source_110(Idx)
418598  , p_source_110_meaning => l_array_source_110_meaning(Idx)
418599  );
418600 If(l_balance_type_code = 'A') THEN
418601   l_actual_gain_loss_ref := l_gain_or_loss_ref;
418602 END IF;
418603 
418604 --
418605 
418606 
418607 --
418608 AcctLineType_461 (
418609  p_application_id  => p_application_id
418610  ,p_event_id     => l_event_id
418611  ,p_calculate_acctd_flag => l_calculate_acctd_flag
418612  ,p_calculate_g_l_flag => l_calculate_g_l_flag
418613  ,p_actual_flag => l_actual_flag
418614  ,p_balance_type_code => l_balance_type_code
418615  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
418616  
418617  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418618  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418619  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418620  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418621  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418622  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
418623  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
418624  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
418625  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
418626  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
418627  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
418628  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
418629  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
418630  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
418631  , p_source_84 => l_array_source_84(Idx)
418632  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
418633  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
418634  , p_source_88 => l_array_source_88(Idx)
418635  , p_source_91 => l_array_source_91(Idx)
418636  , p_source_92 => l_array_source_92(Idx)
418637  , p_source_93 => l_array_source_93(Idx)
418638  , p_source_94 => l_array_source_94(Idx)
418639  , p_source_95 => l_array_source_95(Idx)
418640  , p_source_97 => l_array_source_97(Idx)
418641  , p_source_110 => l_array_source_110(Idx)
418642  , p_source_110_meaning => l_array_source_110_meaning(Idx)
418643  );
418644 If(l_balance_type_code = 'A') THEN
418645   l_actual_gain_loss_ref := l_gain_or_loss_ref;
418646 END IF;
418647 
418648 --
418649 
418650 
418651 --
418652 AcctLineType_528 (
418653  p_application_id  => p_application_id
418654  ,p_event_id     => l_event_id
418655  ,p_calculate_acctd_flag => l_calculate_acctd_flag
418656  ,p_calculate_g_l_flag => l_calculate_g_l_flag
418657  ,p_actual_flag => l_actual_flag
418658  ,p_balance_type_code => l_balance_type_code
418659  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
418660  
418661  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
418662  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
418663  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
418664  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
418665  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
418666  , p_source_11 => l_array_source_11(Idx)
418667  , p_source_84 => l_array_source_84(Idx)
418668  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
418669  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
418670  , p_source_88 => l_array_source_88(Idx)
418671  , p_source_91 => l_array_source_91(Idx)
418672  , p_source_92 => l_array_source_92(Idx)
418673  , p_source_93 => l_array_source_93(Idx)
418674  , p_source_94 => l_array_source_94(Idx)
418675  , p_source_95 => l_array_source_95(Idx)
418676  , p_source_97 => l_array_source_97(Idx)
418677  );
418678 If(l_balance_type_code = 'A') THEN
418679   l_actual_gain_loss_ref := l_gain_or_loss_ref;
418680 END IF;
418681 
418682 --
418683 
418684       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
418685       -- or secondary ledger that has different currency with primary
418686       -- or alc that is calculated by sla
418687       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
418688             (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'))
418689 
418690 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
418691 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
418692           AND (l_actual_flag = 'A')) THEN
418693         XLA_AE_LINES_PKG.CreateGainOrLossLines(
418694           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
418695          ,p_application_id   => p_application_id
418696          ,p_amb_context_code => 'DEFAULT'
418697          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
418698          ,p_event_class_code => C_EVENT_CLASS_CODE
418699          ,p_event_type_code  => C_EVENT_TYPE_CODE
418700          
418701          ,p_gain_ccid        => -1
418702          ,p_loss_ccid        => -1
418703 
418704          ,p_actual_flag      => l_actual_flag
418705          ,p_enc_flag         => null
418706          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
418707          ,p_enc_g_l_ref      => null
418708          );
418709       END IF;
418710    END IF;
418711 END IF;
418712 
418713    ELSE
418714       --
418715       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
418716       --
418717       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
418718          trace
418719             (p_msg      => 'Trancaction revesal option is Y'
418720             ,p_level    => C_LEVEL_STATEMENT
418721             ,p_module   => l_log_module);
418722       END IF;
418723    END IF;
418724 
418725 END LOOP;
418726 l_result := XLA_AE_LINES_PKG.InsertLines ;
418727 end loop;
418728 close line_cur;
418729 
418730 
418731 --
418732 -- insert headers into xla_ae_headers_gt table
418733 --
418734 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
418735 
418736 -- insert into errors table here.
418737 
418738 END LOOP;
418739 
418740 --
418741 -- 4865292
418742 --
418743 -- Compare g_hdr_extract_count with event count in
418744 -- CreateHeadersAndLines.
418745 --
418746 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
418747 
418748 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
418749    trace (p_msg     => '# rows extracted from header extract objects '
418750                     || ' (running total): '
418751                     || g_hdr_extract_count
418752          ,p_level   => C_LEVEL_STATEMENT
418753          ,p_module  => l_log_module);
418754 END IF;
418755 
418756 CLOSE header_cur;
418757 --
418758 
418759 --
418760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
418761    trace
418762       (p_msg      => 'END of EventType_616'
418763       ,p_level    => C_LEVEL_PROCEDURE
418764       ,p_module   => l_log_module);
418765 END IF;
418766 --
418767 RETURN l_result;
418768 EXCEPTION
418769 WHEN xla_exceptions_pkg.application_exception THEN
418770    
418771 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
418772 
418773    
418774 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
418775 
418776    RAISE;
418777 
418778 WHEN NO_DATA_FOUND THEN
418779 
418780 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
418781 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
418782 
418783 FOR header_record IN header_cur
418784 LOOP
418785     l_array_header_events(header_record.event_id) := header_record.event_id;
418786 END LOOP;
418787 
418788 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
418789 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
418790 
418791 fnd_file.put_line(fnd_file.LOG, '                    ');
418792 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
418793 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
418794 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
418795 
418796 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
418797 LOOP
418798 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
418799 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
418800         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
418801 	END IF;
418802 END LOOP;
418803 
418804 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
418805 fnd_file.put_line(fnd_file.LOG, '                    ');
418806 
418807 
418808 xla_exceptions_pkg.raise_message
418809       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_616');
418810 
418811 
418812 WHEN OTHERS THEN
418813    xla_exceptions_pkg.raise_message
418814       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_616');
418815 END EventType_616;
418816 --
418817 
418818 ---------------------------------------
418819 --
418820 -- PRIVATE PROCEDURE
418821 --         insert_sources_617
418822 --
418823 ----------------------------------------
418824 --
418825 PROCEDURE insert_sources_617(
418826                                 p_target_ledger_id       IN NUMBER
418827                               , p_language               IN VARCHAR2
418828                               , p_sla_ledger_id          IN NUMBER
418829                               , p_pad_start_date         IN DATE
418830                               , p_pad_end_date           IN DATE
418831                          )
418832 IS
418833 
418834 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_ASSEMBLY_RETURN';
418835 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
418836 p_apps_owner                   VARCHAR2(30);
418837 l_log_module                   VARCHAR2(240);
418838 BEGIN
418839 IF g_log_enabled THEN
418840       l_log_module := C_DEFAULT_MODULE||'.insert_sources_617';
418841 END IF;
418842 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
418843 
418844       trace
418845          (p_msg      => 'BEGIN of insert_sources_617'
418846          ,p_level    => C_LEVEL_PROCEDURE
418847          ,p_module   => l_log_module);
418848 
418849 END IF;
418850 
418851 -- select APPS owner
418852 SELECT oracle_username
418853   INTO p_apps_owner
418854   FROM fnd_oracle_userid
418855  WHERE read_only_flag = 'U'
418856 ;
418857 
418858 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
418859       trace
418860          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
418861                         ' - p_language = '||p_language||
418862                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
418863                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
418864                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
418865                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
418866          ,p_level    => C_LEVEL_STATEMENT
418867          ,p_module   => l_log_module);
418868 END IF;
418869 
418870 
418871 --
418872 INSERT INTO xla_diag_sources --hdr1
418873 (
418874         event_id
418875       , ledger_id
418876       , sla_ledger_id
418877       , description_language
418878       , object_name
418879       , object_type_code
418880       , line_number
418881       , source_application_id
418882       , source_type_code
418883       , source_code
418884       , source_value
418885       , source_meaning
418886       , created_by
418887       , creation_date
418888       , last_update_date
418889       , last_updated_by
418890       , last_update_login
418891       , program_update_date
418892       , program_application_id
418893       , program_id
418894       , request_id
418895 )
418896 SELECT
418897         event_id
418898       , p_target_ledger_id
418899       , p_sla_ledger_id
418900       , p_language
418901       , object_name
418902       , object_type_code
418903       , line_number
418904       , source_application_id
418905       , source_type_code
418906       , source_code
418907       , SUBSTR(source_value ,1,1996)
418908       , SUBSTR(source_meaning,1,200)
418909       , xla_environment_pkg.g_Usr_Id
418910       , TRUNC(SYSDATE)
418911       , TRUNC(SYSDATE)
418912       , xla_environment_pkg.g_Usr_Id
418913       , xla_environment_pkg.g_Login_Id
418914       , TRUNC(SYSDATE)
418915       , xla_environment_pkg.g_Prog_Appl_Id
418916       , xla_environment_pkg.g_Prog_Id
418917       , xla_environment_pkg.g_Req_Id
418918   FROM (
418919        SELECT xet.event_id                  event_id
418920             , 0                             line_number
418921             , CASE r
418922                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
418923                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
418924                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
418925                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
418926                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
418927                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
418928                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
418929                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
418930                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
418931                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
418932                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
418933                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
418934                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
418935                 WHEN 14 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
418936                 WHEN 15 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
418937                 WHEN 16 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
418938                 WHEN 17 THEN 'CST_XLA_REP_ITEM_REF_V' 
418939                 WHEN 18 THEN 'CST_XLA_INV_REF_V' 
418940                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
418941                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
418942                 WHEN 21 THEN 'CST_XLA_INV_HEADERS_V' 
418943                 
418944                ELSE null
418945               END                           object_name
418946             , CASE r
418947                 WHEN 1 THEN 'HEADER' 
418948                 WHEN 2 THEN 'HEADER' 
418949                 WHEN 3 THEN 'HEADER' 
418950                 WHEN 4 THEN 'HEADER' 
418951                 WHEN 5 THEN 'HEADER' 
418952                 WHEN 6 THEN 'HEADER' 
418953                 WHEN 7 THEN 'HEADER' 
418954                 WHEN 8 THEN 'HEADER' 
418955                 WHEN 9 THEN 'HEADER' 
418956                 WHEN 10 THEN 'HEADER' 
418957                 WHEN 11 THEN 'HEADER' 
418958                 WHEN 12 THEN 'HEADER' 
418959                 WHEN 13 THEN 'HEADER' 
418960                 WHEN 14 THEN 'HEADER' 
418961                 WHEN 15 THEN 'HEADER' 
418962                 WHEN 16 THEN 'HEADER' 
418963                 WHEN 17 THEN 'HEADER' 
418964                 WHEN 18 THEN 'HEADER' 
418965                 WHEN 19 THEN 'HEADER' 
418966                 WHEN 20 THEN 'HEADER' 
418967                 WHEN 21 THEN 'HEADER' 
418968                 
418969                 ELSE null
418970               END                           object_type_code
418971             , CASE r
418972                 WHEN 1 THEN '707' 
418973                 WHEN 2 THEN '707' 
418974                 WHEN 3 THEN '707' 
418975                 WHEN 4 THEN '707' 
418976                 WHEN 5 THEN '707' 
418977                 WHEN 6 THEN '707' 
418978                 WHEN 7 THEN '707' 
418979                 WHEN 8 THEN '707' 
418980                 WHEN 9 THEN '707' 
418981                 WHEN 10 THEN '707' 
418982                 WHEN 11 THEN '707' 
418983                 WHEN 12 THEN '707' 
418984                 WHEN 13 THEN '707' 
418985                 WHEN 14 THEN '707' 
418986                 WHEN 15 THEN '707' 
418987                 WHEN 16 THEN '707' 
418988                 WHEN 17 THEN '707' 
418989                 WHEN 18 THEN '707' 
418990                 WHEN 19 THEN '707' 
418991                 WHEN 20 THEN '707' 
418992                 WHEN 21 THEN '707' 
418993                 
418994                 ELSE null
418995               END                           source_application_id
418996             , 'S'             source_type_code
418997             , CASE r
418998                 WHEN 1 THEN 'TRANSACTION_ID' 
418999                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
419000                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
419001                 WHEN 4 THEN 'TRANSACTION_UOM' 
419002                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
419003                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
419004                 WHEN 7 THEN 'INV_ORG_AVG_COST_VAR_ACCT' 
419005                 WHEN 8 THEN 'PLA_BRIDGING_ACCOUNT' 
419006                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
419007                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
419008                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
419009                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
419010                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
419011                 WHEN 14 THEN 'DIS_JOB_BRIDGING_ACCT' 
419012                 WHEN 15 THEN 'WIP_ENTITY_TYPE' 
419013                 WHEN 16 THEN 'FLO_SCH_BRIDGING_ACCT' 
419014                 WHEN 17 THEN 'REP_ITM_BRIDGING_ACCT' 
419015                 WHEN 18 THEN 'TRANSACTION_SOURCE_ID' 
419016                 WHEN 19 THEN 'TRANSACTION_ACTION_ID' 
419017                 WHEN 20 THEN 'DISTRIBUTION_TYPE' 
419018                 WHEN 21 THEN 'TRANSFER_TO_GL_INDICATOR' 
419019                 
419020                 ELSE null
419021               END                           source_code
419022             , CASE r
419023                 WHEN 1 THEN TO_CHAR(h3.TRANSACTION_ID)
419024                 WHEN 2 THEN TO_CHAR(h8.ITEM_CONCATENATED_SEGMENTS)
419025                 WHEN 3 THEN TO_CHAR(h6.TRANSACTION_QUANTITY)
419026                 WHEN 4 THEN TO_CHAR(h6.TRANSACTION_UOM)
419027                 WHEN 5 THEN TO_CHAR(h9.INV_TXN_TYPE_DESCRIPTION)
419028                 WHEN 6 THEN TO_CHAR(h6.INV_TXN_DISTRIBUTION_ACCT)
419029                 WHEN 7 THEN TO_CHAR(h5.INV_ORG_AVG_COST_VAR_ACCT)
419030                 WHEN 8 THEN TO_CHAR(h10.PLA_BRIDGING_ACCOUNT)
419031                 WHEN 9 THEN TO_CHAR(h10.PLA_MATERIAL_ACCOUNT)
419032                 WHEN 10 THEN TO_CHAR(h10.PLA_MATERIAL_OVERHEAD_ACCOUNT)
419033                 WHEN 11 THEN TO_CHAR(h10.PLA_RESOURCE_ACCOUNT)
419034                 WHEN 12 THEN TO_CHAR(h10.PLA_OUTSIDE_PROCESSING_ACCOUNT)
419035                 WHEN 13 THEN TO_CHAR(h10.PLA_OVERHEAD_ACCOUNT)
419036                 WHEN 14 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
419037                 WHEN 15 THEN TO_CHAR(h13.WIP_ENTITY_TYPE)
419038                 WHEN 16 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
419039                 WHEN 17 THEN TO_CHAR(h11.REP_ITM_BRIDGING_ACCT)
419040                 WHEN 18 THEN TO_CHAR(h6.TRANSACTION_SOURCE_ID)
419041                 WHEN 19 THEN TO_CHAR(h3.TRANSACTION_ACTION_ID)
419042                 WHEN 20 THEN TO_CHAR(h3.DISTRIBUTION_TYPE)
419043                 WHEN 21 THEN TO_CHAR(h3.TRANSFER_TO_GL_INDICATOR)
419044                 
419045                 ELSE null
419046               END                           source_value
419047             , CASE r
419048                 WHEN 15 THEN fvl55.meaning
419049                 WHEN 19 THEN fvl62.meaning
419050                 WHEN 20 THEN fvl85.meaning
419051                 WHEN 21 THEN fvl114.meaning
419052                 
419053                 ELSE null
419054               END               source_meaning
419055         FROM xla_events_gt     xet  
419056       , CST_XLA_DISCRETE_JOB_REF_V  h1
419057       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
419058       , CST_XLA_INV_HEADERS_V  h3
419059       , CST_XLA_INV_ORG_PARAMS_REF_V  h5
419060       , CST_XLA_INV_REF_V  h6
419061       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h8
419062       , CST_XLA_INV_TXN_TYPES_REF_V  h9
419063       , CST_XLA_PLA_CATEGORY_REF_V  h10
419064       , CST_XLA_REP_ITEM_REF_V  h11
419065       , CST_XLA_WIP_ENTITY_REF_V  h13
419066   , fnd_lookup_values    fvl55
419067   , fnd_lookup_values    fvl62
419068   , fnd_lookup_values    fvl85
419069   , fnd_lookup_values    fvl114
419070             ,(select rownum r from all_objects where rownum <= 21 and owner = p_apps_owner)
419071        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
419072          AND xet.event_type_code = C_EVENT_TYPE_CODE
419073             AND h3.event_id = xet.event_id
419074  AND h1.dis_job_wip_entity_id  (+) = h6.transaction_source_id AND h2.flo_sch_wip_entity_id  (+) = h6.transaction_source_id AND h5.inv_organization_id  (+) = h3.organization_id AND h6.ref_transaction_id = h3.transaction_id AND h8.inventory_item_id = h3.inventory_item_id and h8.organization_id = h3.organization_id AND h9.inv_transaction_type_id = h3.transaction_type_id AND h10.pla_cat_organization_id  (+) = h3.organization_id 
419075 and h10.pla_cat_item_id          (+) = h3.inventory_item_id 
419076 and h10.pla_subinv_cg            (+) = h3.h_subinv_cg AND h11.rep_itm_wip_entity_id  (+) = h6.transaction_source_id  and h11.rep_itm_line_id  (+) = h6.repetitive_line_id AND h13.wip_entity_id  (+) = h6.transaction_source_id   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
419077   AND fvl55.lookup_code(+)         = h13.WIP_ENTITY_TYPE
419078   AND fvl55.view_application_id(+) = 700
419079   AND fvl55.language(+)            = USERENV('LANG')
419080      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
419081   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
419082   AND fvl62.view_application_id(+) = 700
419083   AND fvl62.language(+)            = USERENV('LANG')
419084      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
419085   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
419086   AND fvl85.view_application_id(+) = 700
419087   AND fvl85.language(+)            = USERENV('LANG')
419088      AND fvl114.lookup_type(+)         = 'YES_NO'
419089   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
419090   AND fvl114.view_application_id(+) = 0
419091   AND fvl114.language(+)            = USERENV('LANG')
419092   
419093 )
419094 ;
419095 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
419096 
419097       trace
419098          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
419099          ,p_level    => C_LEVEL_STATEMENT
419100          ,p_module   => l_log_module);
419101 
419102 END IF;
419103 --
419104 
419105 
419106 
419107 --
419108 INSERT INTO xla_diag_sources --line1
419109 (
419110         event_id
419111       , ledger_id
419112       , sla_ledger_id
419113       , description_language
419114       , object_name
419115       , object_type_code
419116       , line_number
419117       , source_application_id
419118       , source_type_code
419119       , source_code
419120       , source_value
419121       , source_meaning
419122       , created_by
419123       , creation_date
419124       , last_update_date
419125       , last_updated_by
419126       , last_update_login
419127       , program_update_date
419128       , program_application_id
419129       , program_id
419130       , request_id
419131 )
419132 SELECT  event_id
419133       , p_target_ledger_id
419134       , p_sla_ledger_id
419135       , p_language
419136       , object_name
419137       , object_type_code
419138       , line_number
419139       , source_application_id
419140       , source_type_code
419141       , source_code
419142       , SUBSTR(source_value,1,1996)
419143       , SUBSTR(source_meaning,1,200)
419144       , xla_environment_pkg.g_Usr_Id
419145       , TRUNC(SYSDATE)
419146       , TRUNC(SYSDATE)
419147       , xla_environment_pkg.g_Usr_Id
419148       , xla_environment_pkg.g_Login_Id
419149       , TRUNC(SYSDATE)
419150       , xla_environment_pkg.g_Prog_Appl_Id
419151       , xla_environment_pkg.g_Prog_Id
419152       , xla_environment_pkg.g_Req_Id
419153   FROM (
419154        SELECT xet.event_id                  event_id
419155             , l4.line_number                 line_number
419156             , CASE r
419157                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
419158                 WHEN 2 THEN 'CST_XLA_RES_OVH_REF_V' 
419159                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
419160                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
419161                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
419162                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
419163                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
419164                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
419165                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
419166                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
419167                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
419168                 WHEN 12 THEN 'CST_XLA_INV_LINES_V' 
419169                 WHEN 13 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
419170                 
419171                ELSE null
419172               END                           object_name
419173             , CASE r
419174                 WHEN 1 THEN 'LINE' 
419175                 WHEN 2 THEN 'LINE' 
419176                 WHEN 3 THEN 'LINE' 
419177                 WHEN 4 THEN 'LINE' 
419178                 WHEN 5 THEN 'LINE' 
419179                 WHEN 6 THEN 'LINE' 
419180                 WHEN 7 THEN 'LINE' 
419181                 WHEN 8 THEN 'LINE' 
419182                 WHEN 9 THEN 'LINE' 
419183                 WHEN 10 THEN 'LINE' 
419184                 WHEN 11 THEN 'LINE' 
419185                 WHEN 12 THEN 'LINE' 
419186                 WHEN 13 THEN 'LINE' 
419187                 
419188                 ELSE null
419189               END                           object_type_code
419190             , CASE r
419191                 WHEN 1 THEN '707' 
419192                 WHEN 2 THEN '707' 
419193                 WHEN 3 THEN '707' 
419194                 WHEN 4 THEN '707' 
419195                 WHEN 5 THEN '707' 
419196                 WHEN 6 THEN '707' 
419197                 WHEN 7 THEN '707' 
419198                 WHEN 8 THEN '707' 
419199                 WHEN 9 THEN '707' 
419200                 WHEN 10 THEN '707' 
419201                 WHEN 11 THEN '707' 
419202                 WHEN 12 THEN '707' 
419203                 WHEN 13 THEN '707' 
419204                 
419205                 ELSE null
419206               END                           source_application_id
419207             , 'S'             source_type_code
419208             , CASE r
419209                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
419210                 WHEN 2 THEN 'RES_OVH_ABSORPTION_ACCT' 
419211                 WHEN 3 THEN 'COST_ELEMENT_ID' 
419212                 WHEN 4 THEN 'DISTRIBUTION_IDENTIFIER' 
419213                 WHEN 5 THEN 'CURRENCY_CODE' 
419214                 WHEN 6 THEN 'ENTERED_AMOUNT' 
419215                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
419216                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
419217                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
419218                 WHEN 10 THEN 'ACCOUNTED_AMOUNT' 
419219                 WHEN 11 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
419220                 WHEN 12 THEN 'L_ORGANIZATION_CODE' 
419221                 WHEN 13 THEN 'ASSET_INVENTORY' 
419222                 
419223                 ELSE null
419224               END                           source_code
419225             , CASE r
419226                 WHEN 1 THEN TO_CHAR(l4.CODE_COMBINATION_ID)
419227                 WHEN 2 THEN TO_CHAR(l12.RES_OVH_ABSORPTION_ACCT)
419228                 WHEN 3 THEN TO_CHAR(l4.COST_ELEMENT_ID)
419229                 WHEN 4 THEN TO_CHAR(l4.DISTRIBUTION_IDENTIFIER)
419230                 WHEN 5 THEN TO_CHAR(l4.CURRENCY_CODE)
419231                 WHEN 6 THEN TO_CHAR(l4.ENTERED_AMOUNT)
419232                 WHEN 7 THEN TO_CHAR(l4.CURRENCY_CONVERSION_DATE)
419233                 WHEN 8 THEN TO_CHAR(l4.CURRENCY_CONVERSION_RATE)
419234                 WHEN 9 THEN TO_CHAR(l4.CURRENCY_CONVERSION_TYPE)
419235                 WHEN 10 THEN TO_CHAR(l4.ACCOUNTED_AMOUNT)
419236                 WHEN 11 THEN TO_CHAR(l4.ACCOUNTING_LINE_TYPE_CODE)
419237                 WHEN 12 THEN TO_CHAR(l4.L_ORGANIZATION_CODE)
419238                 WHEN 13 THEN TO_CHAR(l7.ASSET_INVENTORY)
419239                 
419240                 ELSE null
419241               END                           source_value
419242             , CASE r
419243                 WHEN 3 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
419244                           1009615
419245                          ,TO_CHAR(l4.COST_ELEMENT_ID)
419246                          ,'COST_ELEMENT_ID'
419247                          ,'S'
419248                          ,707)
419249                 WHEN 13 THEN fvl110.meaning
419250                 
419251                 ELSE null
419252               END               source_meaning
419253          FROM  xla_events_gt     xet  
419254         , CST_XLA_INV_LINES_V  l4
419255         , CST_XLA_INV_SEC_INVS_REF_V  l7
419256         , CST_XLA_RES_OVH_REF_V  l12
419257   , fnd_lookup_values    fvl110
419258             ,(select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
419259         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
419260           AND xet.event_type_code = C_EVENT_TYPE_CODE
419261             AND l4.event_id          = xet.event_id
419262  AND l7.subinventory  (+) = l4.subinventory_code  and l7.subinv_organization_id  (+) = l4.l_organization_id AND l12.resource_id  (+) = l4.material_overhead_id   AND fvl110.lookup_type(+)         = 'YES_NO'
419263   AND fvl110.lookup_code(+)         = l7.ASSET_INVENTORY
419264   AND fvl110.view_application_id(+) = 0
419265   AND fvl110.language(+)            = USERENV('LANG')
419266   
419267 )
419268 ;
419269 --
419270 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
419271 
419272       trace
419273          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
419274          ,p_level    => C_LEVEL_STATEMENT
419275          ,p_module   => l_log_module);
419276 
419277 END IF;
419278 
419279 
419280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
419281       trace
419282          (p_msg      => 'END of insert_sources_617'
419283          ,p_level    => C_LEVEL_PROCEDURE
419284          ,p_module   => l_log_module);
419285 END IF;
419286 EXCEPTION
419287   WHEN xla_exceptions_pkg.application_exception THEN
419288       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
419289             trace
419290                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
419291                ,p_level    => C_LEVEL_EXCEPTION
419292                ,p_module   => l_log_module);
419293       END IF;
419294       RAISE;
419295   WHEN OTHERS THEN
419296       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
419297             trace
419298                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
419299                ,p_level    => C_LEVEL_EXCEPTION
419300                ,p_module   => l_log_module);
419301        END IF;
419302        xla_exceptions_pkg.raise_message
419303            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_617');
419304 END insert_sources_617;
419305 --
419306 
419307 ---------------------------------------
419308 --
419309 -- PRIVATE FUNCTION
419310 --         EventType_617
419311 --
419312 ----------------------------------------
419313 --
419314 FUNCTION EventType_617
419315        (p_application_id         IN NUMBER
419316        ,p_base_ledger_id         IN NUMBER
419317        ,p_target_ledger_id       IN NUMBER
419318        ,p_language               IN VARCHAR2
419319        ,p_currency_code          IN VARCHAR2
419320        ,p_sla_ledger_id          IN NUMBER
419321        ,p_pad_start_date         IN DATE
419322        ,p_pad_end_date           IN DATE
419323        ,p_primary_ledger_id      IN NUMBER)
419324 RETURN BOOLEAN IS
419325 --
419326 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_ASSEMBLY_RETURN';
419327 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
419328 
419329 l_calculate_acctd_flag   VARCHAR2(1) :='N';
419330 l_calculate_g_l_flag     VARCHAR2(1) :='N';
419331 --
419332 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419333 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419334 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
419335 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
419336 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419337 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
419338 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
419339 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419340 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
419341 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
419342 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419343 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419344 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419345 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
419346 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
419347 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
419348 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
419349 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
419350 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
419351 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
419352 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
419353 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
419354 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
419355 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
419356 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
419357 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
419358 
419359 l_event_id                             NUMBER;
419360 l_previous_event_id                    NUMBER;
419361 l_first_event_id                       NUMBER;
419362 l_last_event_id                        NUMBER;
419363 
419364 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
419365 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
419366 --
419367 --
419368 l_result                    BOOLEAN := TRUE;
419369 l_rows                      NUMBER  := 1000;
419370 l_event_type_name           VARCHAR2(80) := 'WIP Assembly Return';
419371 l_event_class_name          VARCHAR2(80) := 'WIP Material';
419372 l_description               VARCHAR2(4000);
419373 l_transaction_reversal      NUMBER;
419374 l_ae_header_id              NUMBER;
419375 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
419376 l_log_module                VARCHAR2(240);
419377 --
419378 l_acct_reversal_source      VARCHAR2(30);
419379 l_trx_reversal_source       VARCHAR2(30);
419380 
419381 l_continue_with_lines       BOOLEAN := TRUE;
419382 --
419383 l_acc_rev_gl_date_source    DATE;                      -- 4262811
419384 --
419385 type t_array_event_id is table of number index by binary_integer;
419386 
419387 l_rec_array_event                    t_rec_array_event;
419388 l_null_rec_array_event               t_rec_array_event;
419389 l_array_ae_header_id                 xla_number_array_type;
419390 l_actual_flag                        VARCHAR2(1) := NULL;
419391 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
419392 l_balance_type_code                  VARCHAR2(1) :=NULL;
419393 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
419394 
419395 --
419396 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
419397 --
419398 
419399 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
419400 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
419401 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
419402 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
419403 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
419404 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
419405 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.INV_ORG_AVG_COST_VAR_ACCT%TYPE INDEX BY BINARY_INTEGER;
419406 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
419407 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
419408 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
419409 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
419410 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
419411 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
419412 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
419413 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
419414 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
419415 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
419416 TYPE t_array_source_61 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_SOURCE_ID%TYPE INDEX BY BINARY_INTEGER;
419417 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
419418 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
419419 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
419420 
419421 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
419422 TYPE t_array_source_13 IS TABLE OF CST_XLA_RES_OVH_REF_V.RES_OVH_ABSORPTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
419423 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
419424 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
419425 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
419426 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
419427 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
419428 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
419429 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
419430 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
419431 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
419432 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
419433 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
419434 
419435 l_array_source_1              t_array_source_1;
419436 l_array_source_2              t_array_source_2;
419437 l_array_source_3              t_array_source_3;
419438 l_array_source_4              t_array_source_4;
419439 l_array_source_5              t_array_source_5;
419440 l_array_source_20              t_array_source_20;
419441 l_array_source_21              t_array_source_21;
419442 l_array_source_22              t_array_source_22;
419443 l_array_source_41              t_array_source_41;
419444 l_array_source_42              t_array_source_42;
419445 l_array_source_43              t_array_source_43;
419446 l_array_source_44              t_array_source_44;
419447 l_array_source_45              t_array_source_45;
419448 l_array_source_54              t_array_source_54;
419449 l_array_source_55              t_array_source_55;
419450 l_array_source_55_meaning      t_array_lookup_meaning;
419451 l_array_source_56              t_array_source_56;
419452 l_array_source_57              t_array_source_57;
419453 l_array_source_61              t_array_source_61;
419454 l_array_source_62              t_array_source_62;
419455 l_array_source_62_meaning      t_array_lookup_meaning;
419456 l_array_source_85              t_array_source_85;
419457 l_array_source_85_meaning      t_array_lookup_meaning;
419458 l_array_source_114              t_array_source_114;
419459 l_array_source_114_meaning      t_array_lookup_meaning;
419460 
419461 l_array_source_11      t_array_source_11;
419462 l_array_source_13      t_array_source_13;
419463 l_array_source_15      t_array_source_15;
419464 l_array_source_84      t_array_source_84;
419465 l_array_source_88      t_array_source_88;
419466 l_array_source_91      t_array_source_91;
419467 l_array_source_92      t_array_source_92;
419468 l_array_source_93      t_array_source_93;
419469 l_array_source_94      t_array_source_94;
419470 l_array_source_95      t_array_source_95;
419471 l_array_source_97      t_array_source_97;
419472 l_array_source_108      t_array_source_108;
419473 l_array_source_110      t_array_source_110;
419474 l_array_source_110_meaning      t_array_lookup_meaning;
419475 
419476 --
419477 CURSOR header_cur
419478 IS
419479 SELECT /*+ leading(xet) cardinality(xet,1) */
419480 -- Event Type Code: WIP_ASSEMBLY_RETURN
419481 -- Event Class Code: WIP_MTL
419482     xet.entity_id
419483   , xet.legal_entity_id
419484   , xet.entity_code
419485   , xet.transaction_number
419486   , xet.event_id
419487   , xet.event_class_code
419488   , xet.event_type_code
419489   , xet.event_number
419490   , xet.event_date
419491   , xet.transaction_date
419492   , xet.reference_num_1
419493   , xet.reference_num_2
419494   , xet.reference_num_3
419495   , xet.reference_num_4
419496   , xet.reference_char_1
419497   , xet.reference_char_2
419498   , xet.reference_char_3
419499   , xet.reference_char_4
419500   , xet.reference_date_1
419501   , xet.reference_date_2
419502   , xet.reference_date_3
419503   , xet.reference_date_4
419504   , xet.event_created_by
419505   , xet.budgetary_control_flag 
419506   , h3.TRANSACTION_ID    source_1
419507   , h8.ITEM_CONCATENATED_SEGMENTS    source_2
419508   , h6.TRANSACTION_QUANTITY    source_3
419509   , h6.TRANSACTION_UOM    source_4
419510   , h9.INV_TXN_TYPE_DESCRIPTION    source_5
419511   , h6.INV_TXN_DISTRIBUTION_ACCT    source_20
419512   , h5.INV_ORG_AVG_COST_VAR_ACCT    source_21
419513   , h10.PLA_BRIDGING_ACCOUNT    source_22
419514   , h10.PLA_MATERIAL_ACCOUNT    source_41
419515   , h10.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
419516   , h10.PLA_RESOURCE_ACCOUNT    source_43
419517   , h10.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
419518   , h10.PLA_OVERHEAD_ACCOUNT    source_45
419519   , h1.DIS_JOB_BRIDGING_ACCT    source_54
419520   , h13.WIP_ENTITY_TYPE    source_55
419521   , fvl55.meaning   source_55_meaning
419522   , h2.FLO_SCH_BRIDGING_ACCT    source_56
419523   , h11.REP_ITM_BRIDGING_ACCT    source_57
419524   , h6.TRANSACTION_SOURCE_ID    source_61
419525   , h3.TRANSACTION_ACTION_ID    source_62
419526   , fvl62.meaning   source_62_meaning
419527   , h3.DISTRIBUTION_TYPE    source_85
419528   , fvl85.meaning   source_85_meaning
419529   , h3.TRANSFER_TO_GL_INDICATOR    source_114
419530   , fvl114.meaning   source_114_meaning
419531   FROM xla_events_gt     xet 
419532   , CST_XLA_DISCRETE_JOB_REF_V  h1
419533   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
419534   , CST_XLA_INV_HEADERS_V  h3
419535   , CST_XLA_INV_ORG_PARAMS_REF_V  h5
419536   , CST_XLA_INV_REF_V  h6
419537   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h8
419538   , CST_XLA_INV_TXN_TYPES_REF_V  h9
419539   , CST_XLA_PLA_CATEGORY_REF_V  h10
419540   , CST_XLA_REP_ITEM_REF_V  h11
419541   , CST_XLA_WIP_ENTITY_REF_V  h13
419542   , fnd_lookup_values    fvl55
419543   , fnd_lookup_values    fvl62
419544   , fnd_lookup_values    fvl85
419545   , fnd_lookup_values    fvl114
419546  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
419547    and xet.event_type_code = C_EVENT_TYPE_CODE
419548    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
419549  AND h1.DIS_JOB_WIP_ENTITY_ID  (+) = h6.TRANSACTION_SOURCE_ID AND h2.FLO_SCH_WIP_ENTITY_ID  (+) = h6.TRANSACTION_SOURCE_ID AND h5.INV_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID AND h6.ref_transaction_id = h3.transaction_id AND h8.INVENTORY_ITEM_ID = h3.INVENTORY_ITEM_ID AND h8.ORGANIZATION_ID = h3.ORGANIZATION_ID AND h9.INV_TRANSACTION_TYPE_ID = h3.TRANSACTION_TYPE_ID AND h10.PLA_CAT_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID 
419550 AND h10.PLA_CAT_ITEM_ID          (+) = h3.INVENTORY_ITEM_ID 
419551 AND h10.PLA_SUBINV_CG            (+) = h3.H_SUBINV_CG AND h11.rep_itm_wip_entity_id  (+) = h6.transaction_source_id  AND h11.rep_itm_line_id  (+) = h6.repetitive_line_id AND h13.WIP_ENTITY_ID  (+) = h6.TRANSACTION_SOURCE_ID   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
419552   AND fvl55.lookup_code(+)         = h13.WIP_ENTITY_TYPE
419553   AND fvl55.view_application_id(+) = 700
419554   AND fvl55.language(+)            = USERENV('LANG')
419555      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
419556   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
419557   AND fvl62.view_application_id(+) = 700
419558   AND fvl62.language(+)            = USERENV('LANG')
419559      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
419560   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
419561   AND fvl85.view_application_id(+) = 700
419562   AND fvl85.language(+)            = USERENV('LANG')
419563      AND fvl114.lookup_type(+)         = 'YES_NO'
419564   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
419565   AND fvl114.view_application_id(+) = 0
419566   AND fvl114.language(+)            = USERENV('LANG')
419567   
419568  ORDER BY event_id
419569 ;
419570 
419571 
419572 --
419573 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
419574 IS
419575 SELECT /*+ leading(xet) cardinality(xet,1) */
419576 -- Event Type Code: WIP_ASSEMBLY_RETURN
419577 -- Event Class Code: WIP_MTL
419578     xet.entity_id
419579    ,xet.legal_entity_id
419580    ,xet.entity_code
419581    ,xet.transaction_number
419582    ,xet.event_id
419583    ,xet.event_class_code
419584    ,xet.event_type_code
419585    ,xet.event_number
419586    ,xet.event_date
419587    ,xet.transaction_date
419588    ,xet.reference_num_1
419589    ,xet.reference_num_2
419590    ,xet.reference_num_3
419591    ,xet.reference_num_4
419592    ,xet.reference_char_1
419593    ,xet.reference_char_2
419594    ,xet.reference_char_3
419595    ,xet.reference_char_4
419596    ,xet.reference_date_1
419597    ,xet.reference_date_2
419598    ,xet.reference_date_3
419599    ,xet.reference_date_4
419600    ,xet.event_created_by
419601    ,xet.budgetary_control_flag  , l4.LINE_NUMBER  
419602   , l4.CODE_COMBINATION_ID    source_11
419603   , l12.RES_OVH_ABSORPTION_ACCT    source_13
419604   , l4.COST_ELEMENT_ID    source_15
419605   , l4.DISTRIBUTION_IDENTIFIER    source_84
419606   , l4.CURRENCY_CODE    source_88
419607   , l4.ENTERED_AMOUNT    source_91
419608   , l4.CURRENCY_CONVERSION_DATE    source_92
419609   , l4.CURRENCY_CONVERSION_RATE    source_93
419610   , l4.CURRENCY_CONVERSION_TYPE    source_94
419611   , l4.ACCOUNTED_AMOUNT    source_95
419612   , l4.ACCOUNTING_LINE_TYPE_CODE    source_97
419613   , l4.L_ORGANIZATION_CODE    source_108
419614   , l7.ASSET_INVENTORY    source_110
419615   , fvl110.meaning   source_110_meaning
419616   FROM xla_events_gt     xet 
419617   , CST_XLA_INV_LINES_V  l4
419618   , CST_XLA_INV_SEC_INVS_REF_V  l7
419619   , CST_XLA_RES_OVH_REF_V  l12
419620   , fnd_lookup_values    fvl110
419621  WHERE xet.event_id between x_first_event_id and x_last_event_id
419622    and xet.event_date between p_pad_start_date and p_pad_end_date
419623    and xet.event_type_code = C_EVENT_TYPE_CODE
419624    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
419625  AND l7.SUBINVENTORY  (+) = l4.SUBINVENTORY_CODE  AND l7.SUBINV_ORGANIZATION_ID  (+) = l4.L_ORGANIZATION_ID AND l12.resource_id  (+) = l4.material_overhead_id   AND fvl110.lookup_type(+)         = 'YES_NO'
419626   AND fvl110.lookup_code(+)         = l7.ASSET_INVENTORY
419627   AND fvl110.view_application_id(+) = 0
419628   AND fvl110.language(+)            = USERENV('LANG')
419629   ;
419630 
419631 --
419632 BEGIN
419633 IF g_log_enabled THEN
419634    l_log_module := C_DEFAULT_MODULE||'.EventType_617';
419635 END IF;
419636 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
419637    trace
419638       (p_msg      => 'BEGIN of EventType_617'
419639       ,p_level    => C_LEVEL_PROCEDURE
419640       ,p_module   => l_log_module);
419641 END IF;
419642 
419643 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
419644    trace
419645       (p_msg      => 'p_application_id = '||p_application_id||
419646                      ' - p_base_ledger_id = '||p_base_ledger_id||
419647                      ' - p_target_ledger_id  = '||p_target_ledger_id||
419648                      ' - p_language = '||p_language||
419649                      ' - p_currency_code = '||p_currency_code||
419650                      ' - p_sla_ledger_id = '||p_sla_ledger_id
419651       ,p_level    => C_LEVEL_STATEMENT
419652       ,p_module   => l_log_module);
419653 END IF;
419654 --
419655 -- initialze arrays
419656 --
419657 g_array_event.DELETE;
419658 l_rec_array_event := l_null_rec_array_event;
419659 --
419660 --------------------------------------
419661 -- 4262811 Initialze MPA Line Number
419662 --------------------------------------
419663 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
419664 
419665 --
419666 
419667 --
419668 OPEN header_cur;
419669 --
419670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
419671    trace
419672    (p_msg      => 'SQL - FETCH header_cur'
419673    ,p_level    => C_LEVEL_STATEMENT
419674    ,p_module   => l_log_module);
419675 END IF;
419676 --
419677 LOOP
419678 FETCH header_cur BULK COLLECT INTO
419679         l_array_entity_id
419680       , l_array_legal_entity_id
419681       , l_array_entity_code
419682       , l_array_transaction_num
419683       , l_array_event_id
419684       , l_array_class_code
419685       , l_array_event_type
419686       , l_array_event_number
419687       , l_array_event_date
419688       , l_array_transaction_date
419689       , l_array_reference_num_1
419690       , l_array_reference_num_2
419691       , l_array_reference_num_3
419692       , l_array_reference_num_4
419693       , l_array_reference_char_1
419694       , l_array_reference_char_2
419695       , l_array_reference_char_3
419696       , l_array_reference_char_4
419697       , l_array_reference_date_1
419698       , l_array_reference_date_2
419699       , l_array_reference_date_3
419700       , l_array_reference_date_4
419701       , l_array_event_created_by
419702       , l_array_budgetary_control_flag 
419703       , l_array_source_1
419704       , l_array_source_2
419705       , l_array_source_3
419706       , l_array_source_4
419707       , l_array_source_5
419708       , l_array_source_20
419709       , l_array_source_21
419710       , l_array_source_22
419711       , l_array_source_41
419712       , l_array_source_42
419713       , l_array_source_43
419714       , l_array_source_44
419715       , l_array_source_45
419716       , l_array_source_54
419717       , l_array_source_55
419718       , l_array_source_55_meaning
419719       , l_array_source_56
419720       , l_array_source_57
419721       , l_array_source_61
419722       , l_array_source_62
419723       , l_array_source_62_meaning
419724       , l_array_source_85
419725       , l_array_source_85_meaning
419726       , l_array_source_114
419727       , l_array_source_114_meaning
419728       LIMIT l_rows;
419729 --
419730 IF (C_LEVEL_EVENT >= g_log_level) THEN
419731    trace
419732    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
419733    ,p_level    => C_LEVEL_EVENT
419734    ,p_module   => l_log_module);
419735 END IF;
419736 --
419737 EXIT WHEN l_array_entity_id.COUNT = 0;
419738 
419739 -- initialize arrays
419740 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
419741 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
419742 
419743 --
419744 -- Bug 4458708
419745 --
419746 XLA_AE_LINES_PKG.g_LineNumber := 0;
419747 
419748 
419749 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
419750 g_last_hdr_idx := l_array_event_id.LAST;
419751 --
419752 -- loop for the headers. Each iteration is for each header extract row
419753 -- fetched in header cursor
419754 --
419755 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
419756 
419757 --
419758 -- set event info as cache for other routines to refer event attributes
419759 --
419760 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
419761    (p_application_id           => p_application_id
419762    ,p_primary_ledger_id        => p_primary_ledger_id
419763    ,p_base_ledger_id           => p_base_ledger_id
419764    ,p_target_ledger_id         => p_target_ledger_id
419765    ,p_entity_id                => l_array_entity_id(hdr_idx)
419766    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
419767    ,p_entity_code              => l_array_entity_code(hdr_idx)
419768    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
419769    ,p_event_id                 => l_array_event_id(hdr_idx)
419770    ,p_event_class_code         => l_array_class_code(hdr_idx)
419771    ,p_event_type_code          => l_array_event_type(hdr_idx)
419772    ,p_event_number             => l_array_event_number(hdr_idx)
419773    ,p_event_date               => l_array_event_date(hdr_idx)
419774    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
419775    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
419776    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
419777    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
419778    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
419779    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
419780    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
419781    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
419782    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
419783    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
419784    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
419785    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
419786    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
419787    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
419788    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
419789 
419790 --
419791 -- set the status of entry to C_VALID (0)
419792 --
419793 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
419794 
419795 --
419796 -- initialize a row for ae header
419797 --
419798 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
419799 
419800 l_event_id := l_array_event_id(hdr_idx);
419801 
419802 --
419803 -- storing the hdr_idx for event. May be used by line cursor.
419804 --
419805 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
419806 
419807 --
419808 -- store sources from header extract. This can be improved to
419809 -- store only those sources from header extract that may be used in lines
419810 --
419811 
419812 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
419813 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
419814 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
419815 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
419816 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
419817 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
419818 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
419819 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
419820 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
419821 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
419822 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
419823 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
419824 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
419825 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
419826 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
419827 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
419828 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
419829 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
419830 g_array_event(l_event_id).array_value_num('source_61') := l_array_source_61(hdr_idx);
419831 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
419832 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
419833 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
419834 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
419835 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
419836 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
419837 
419838 --
419839 -- initilaize the status of ae headers for diffrent balance types
419840 -- the status is initialised to C_NOT_CREATED (2)
419841 --
419842 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
419843 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
419844 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
419845 
419846 --
419847 -- call api to validate and store accounting attributes for header
419848 --
419849 
419850 ------------------------------------------------------------
419851 -- Accrual Reversal : to get date for Standard Source (NONE)
419852 ------------------------------------------------------------
419853 l_acc_rev_gl_date_source := NULL;
419854 
419855      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
419856       l_rec_acct_attrs.array_date_value(1) := 
419857 xla_ae_sources_pkg.GetSystemSourceDate(
419858    p_source_code           => 'XLA_REFERENCE_DATE_1'
419859  , p_source_type_code      => 'Y'
419860  , p_source_application_id =>  602
419861 );
419862      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
419863       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
419864 
419865 
419866 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
419867 
419868 XLA_AE_HEADER_PKG.SetJeCategoryName;
419869 
419870 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
419871 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
419872 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
419873 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
419874 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
419875 
419876 
419877 --
419878 xla_ae_header_pkg.SetHdrDescription(
419879    p_description => Description_1 (
419880    p_application_id => p_application_id 
419881  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
419882  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
419883  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
419884  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
419885  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
419886    )
419887 );
419888 --
419889 
419890 -- No header level analytical criteria
419891 
419892 --
419893 --accounting attribute enhancement, bug 3612931
419894 --
419895 l_trx_reversal_source := SUBSTR(NULL, 1,30);
419896 
419897 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
419898    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
419899 
419900    xla_accounting_err_pkg.build_message
419901       (p_appli_s_name            => 'XLA'
419902       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
419903       ,p_token_1                 => 'ACCT_ATTR_NAME'
419904       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
419905       ,p_token_2                 => 'PRODUCT_NAME'
419906       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
419907       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
419908       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
419909       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
419910 
419911 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
419912    --
419913    -- following sets the accounting attributes needed to reverse
419914    -- accounting for a distributeion
419915    --
419916    xla_ae_lines_pkg.SetTrxReversalAttrs
419917       (p_event_id              => l_event_id
419918       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
419919       ,p_trx_reversal_source   => l_trx_reversal_source);
419920 
419921 END IF;
419922 
419923 
419924 ----------------------------------------------------------------
419925 -- 4262811 -  update the header statuses to invalid in need be
419926 ----------------------------------------------------------------
419927 --
419928 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
419929 
419930 
419931   -----------------------------------------------
419932   -- No accrual reversal for the event class/type
419933   -----------------------------------------------
419934 ----------------------------------------------------------------
419935 
419936 --
419937 -- this ends the header loop iteration for one bulk fetch
419938 --
419939 END LOOP;
419940 
419941 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
419942 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
419943 
419944 --
419945 -- insert dummy rows into lines gt table that were created due to
419946 -- transaction reversals
419947 --
419948 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
419949    l_result := XLA_AE_LINES_PKG.InsertLines;
419950 END IF;
419951 
419952 --
419953 -- reset the temp_line_num for each set of events fetched from header
419954 -- cursor rather than doing it for each new event in line cursor
419955 -- Bug 3939231
419956 --
419957 xla_ae_lines_pkg.g_temp_line_num := 0;
419958 
419959 
419960 
419961 --
419962 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
419963 --
419964 --
419965 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
419966 
419967       trace
419968          (p_msg      => 'SQL - FETCH line_cur'
419969          ,p_level    => C_LEVEL_STATEMENT
419970          ,p_module   => l_log_module);
419971 
419972 END IF;
419973 --
419974 --
419975 LOOP
419976   --
419977   FETCH line_cur BULK COLLECT INTO
419978         l_array_entity_id
419979       , l_array_legal_entity_id
419980       , l_array_entity_code
419981       , l_array_transaction_num
419982       , l_array_event_id
419983       , l_array_class_code
419984       , l_array_event_type
419985       , l_array_event_number
419986       , l_array_event_date
419987       , l_array_transaction_date
419988       , l_array_reference_num_1
419989       , l_array_reference_num_2
419990       , l_array_reference_num_3
419991       , l_array_reference_num_4
419992       , l_array_reference_char_1
419993       , l_array_reference_char_2
419994       , l_array_reference_char_3
419995       , l_array_reference_char_4
419996       , l_array_reference_date_1
419997       , l_array_reference_date_2
419998       , l_array_reference_date_3
419999       , l_array_reference_date_4
420000       , l_array_event_created_by
420001       , l_array_budgetary_control_flag
420002       , l_array_extract_line_num 
420003       , l_array_source_11
420004       , l_array_source_13
420005       , l_array_source_15
420006       , l_array_source_84
420007       , l_array_source_88
420008       , l_array_source_91
420009       , l_array_source_92
420010       , l_array_source_93
420011       , l_array_source_94
420012       , l_array_source_95
420013       , l_array_source_97
420014       , l_array_source_108
420015       , l_array_source_110
420016       , l_array_source_110_meaning
420017       LIMIT l_rows;
420018 
420019   --
420020   IF (C_LEVEL_EVENT >= g_log_level) THEN
420021             trace
420022                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
420023                ,p_level    => C_LEVEL_EVENT
420024                ,p_module   => l_log_module);
420025   END IF;
420026   --
420027   EXIT WHEN l_array_entity_id.count = 0;
420028 
420029   XLA_AE_LINES_PKG.g_rec_lines := null;
420030 
420031 --
420032 -- Bug 4458708
420033 --
420034 XLA_AE_LINES_PKG.g_LineNumber := 0;
420035 --
420036 --
420037 
420038 FOR Idx IN 1..l_array_event_id.count LOOP
420039    --
420040    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
420041    --
420042    l_event_id := l_array_event_id(idx);  -- 5648433
420043 
420044    --
420045    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
420046    --
420047 
420048    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
420049              (g_array_event(l_event_id).array_value_num('header_index'))
420050          ,'N'
420051          ) <> 'Y'
420052    THEN
420053       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
420054          trace
420055             (p_msg      => 'Trancaction revesal option is not Y '
420056             ,p_level    => C_LEVEL_STATEMENT
420057             ,p_module   => l_log_module);
420058       END IF;
420059 
420060 --
420061 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
420062 --
420063 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
420064 --
420065 -- set event info as cache for other routines to refer event attributes
420066 --
420067 
420068 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
420069    l_previous_event_id := l_event_id;
420070 
420071    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
420072       (p_application_id           => p_application_id
420073       ,p_primary_ledger_id        => p_primary_ledger_id
420074       ,p_base_ledger_id           => p_base_ledger_id
420075       ,p_target_ledger_id         => p_target_ledger_id
420076       ,p_entity_id                => l_array_entity_id(Idx)
420077       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
420078       ,p_entity_code              => l_array_entity_code(Idx)
420079       ,p_transaction_num          => l_array_transaction_num(Idx)
420080       ,p_event_id                 => l_array_event_id(Idx)
420081       ,p_event_class_code         => l_array_class_code(Idx)
420082       ,p_event_type_code          => l_array_event_type(Idx)
420083       ,p_event_number             => l_array_event_number(Idx)
420084       ,p_event_date               => l_array_event_date(Idx)
420085       ,p_transaction_date         => l_array_transaction_date(Idx)
420086       ,p_reference_num_1          => l_array_reference_num_1(Idx)
420087       ,p_reference_num_2          => l_array_reference_num_2(Idx)
420088       ,p_reference_num_3          => l_array_reference_num_3(Idx)
420089       ,p_reference_num_4          => l_array_reference_num_4(Idx)
420090       ,p_reference_char_1         => l_array_reference_char_1(Idx)
420091       ,p_reference_char_2         => l_array_reference_char_2(Idx)
420092       ,p_reference_char_3         => l_array_reference_char_3(Idx)
420093       ,p_reference_char_4         => l_array_reference_char_4(Idx)
420094       ,p_reference_date_1         => l_array_reference_date_1(Idx)
420095       ,p_reference_date_2         => l_array_reference_date_2(Idx)
420096       ,p_reference_date_3         => l_array_reference_date_3(Idx)
420097       ,p_reference_date_4         => l_array_reference_date_4(Idx)
420098       ,p_event_created_by         => l_array_event_created_by(Idx)
420099       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
420100        --
420101 END IF;
420102 
420103 
420104 
420105 --
420106 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
420107 
420108 l_acct_reversal_source := SUBSTR(NULL, 1,30);
420109 
420110 IF l_continue_with_lines THEN
420111    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
420112       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
420113 
420114       xla_accounting_err_pkg.build_message
420115          (p_appli_s_name            => 'XLA'
420116          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
420117          ,p_token_1                 => 'LINE_NUMBER'
420118          ,p_value_1                 => l_array_extract_line_num(Idx)
420119          ,p_token_2                 => 'PRODUCT_NAME'
420120          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
420121          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
420122          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
420123          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
420124 
420125    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
420126       --
420127       -- following sets the accounting attributes needed to reverse
420128       -- accounting for a distributeion
420129       --
420130 
420131       --
420132       -- 5217187
420133       --
420134       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
420135       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
420136                                        g_array_event(l_event_id).array_value_num('header_index'));
420137       --
420138       --
420139 
420140       -- No reversal code generated
420141 
420142       xla_ae_lines_pkg.SetAcctReversalAttrs
420143          (p_event_id             => l_event_id
420144          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
420145          ,p_calculate_acctd_flag => l_calculate_acctd_flag
420146          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
420147    END IF;
420148 
420149    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
420150        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
420151 
420152 --
420153 AcctLineType_86 (
420154  p_application_id  => p_application_id
420155  ,p_event_id     => l_event_id
420156  ,p_calculate_acctd_flag => l_calculate_acctd_flag
420157  ,p_calculate_g_l_flag => l_calculate_g_l_flag
420158  ,p_actual_flag => l_actual_flag
420159  ,p_balance_type_code => l_balance_type_code
420160  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
420161  
420162  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
420163  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
420164  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
420165  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
420166  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
420167  , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
420168  , p_source_84 => l_array_source_84(Idx)
420169  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
420170  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
420171  , p_source_88 => l_array_source_88(Idx)
420172  , p_source_91 => l_array_source_91(Idx)
420173  , p_source_92 => l_array_source_92(Idx)
420174  , p_source_93 => l_array_source_93(Idx)
420175  , p_source_94 => l_array_source_94(Idx)
420176  , p_source_95 => l_array_source_95(Idx)
420177  , p_source_97 => l_array_source_97(Idx)
420178  );
420179 If(l_balance_type_code = 'A') THEN
420180   l_actual_gain_loss_ref := l_gain_or_loss_ref;
420181 END IF;
420182 
420183 --
420184 
420185 
420186 --
420187 AcctLineType_262 (
420188  p_application_id  => p_application_id
420189  ,p_event_id     => l_event_id
420190  ,p_calculate_acctd_flag => l_calculate_acctd_flag
420191  ,p_calculate_g_l_flag => l_calculate_g_l_flag
420192  ,p_actual_flag => l_actual_flag
420193  ,p_balance_type_code => l_balance_type_code
420194  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
420195  
420196  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
420197  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
420198  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
420199  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
420200  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
420201  , p_source_15 => l_array_source_15(Idx)
420202  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
420203  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
420204  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
420205  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
420206  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
420207  , p_source_84 => l_array_source_84(Idx)
420208  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
420209  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
420210  , p_source_88 => l_array_source_88(Idx)
420211  , p_source_91 => l_array_source_91(Idx)
420212  , p_source_92 => l_array_source_92(Idx)
420213  , p_source_93 => l_array_source_93(Idx)
420214  , p_source_94 => l_array_source_94(Idx)
420215  , p_source_95 => l_array_source_95(Idx)
420216  , p_source_97 => l_array_source_97(Idx)
420217  , p_source_108 => l_array_source_108(Idx)
420218  );
420219 If(l_balance_type_code = 'A') THEN
420220   l_actual_gain_loss_ref := l_gain_or_loss_ref;
420221 END IF;
420222 
420223 --
420224 
420225 
420226 --
420227 AcctLineType_311 (
420228  p_application_id  => p_application_id
420229  ,p_event_id     => l_event_id
420230  ,p_calculate_acctd_flag => l_calculate_acctd_flag
420231  ,p_calculate_g_l_flag => l_calculate_g_l_flag
420232  ,p_actual_flag => l_actual_flag
420233  ,p_balance_type_code => l_balance_type_code
420234  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
420235  
420236  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
420237  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
420238  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
420239  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
420240  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
420241  , p_source_13 => l_array_source_13(Idx)
420242  , p_source_84 => l_array_source_84(Idx)
420243  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
420244  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
420245  , p_source_88 => l_array_source_88(Idx)
420246  , p_source_91 => l_array_source_91(Idx)
420247  , p_source_92 => l_array_source_92(Idx)
420248  , p_source_93 => l_array_source_93(Idx)
420249  , p_source_94 => l_array_source_94(Idx)
420250  , p_source_95 => l_array_source_95(Idx)
420251  , p_source_97 => l_array_source_97(Idx)
420252  );
420253 If(l_balance_type_code = 'A') THEN
420254   l_actual_gain_loss_ref := l_gain_or_loss_ref;
420255 END IF;
420256 
420257 --
420258 
420259 
420260 --
420261 AcctLineType_353 (
420262  p_application_id  => p_application_id
420263  ,p_event_id     => l_event_id
420264  ,p_calculate_acctd_flag => l_calculate_acctd_flag
420265  ,p_calculate_g_l_flag => l_calculate_g_l_flag
420266  ,p_actual_flag => l_actual_flag
420267  ,p_balance_type_code => l_balance_type_code
420268  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
420269  
420270  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
420271  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
420272  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
420273  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
420274  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
420275  , p_source_11 => l_array_source_11(Idx)
420276  , p_source_84 => l_array_source_84(Idx)
420277  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
420278  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
420279  , p_source_88 => l_array_source_88(Idx)
420280  , p_source_91 => l_array_source_91(Idx)
420281  , p_source_92 => l_array_source_92(Idx)
420282  , p_source_93 => l_array_source_93(Idx)
420283  , p_source_94 => l_array_source_94(Idx)
420284  , p_source_95 => l_array_source_95(Idx)
420285  , p_source_97 => l_array_source_97(Idx)
420286  );
420287 If(l_balance_type_code = 'A') THEN
420288   l_actual_gain_loss_ref := l_gain_or_loss_ref;
420289 END IF;
420290 
420291 --
420292 
420293 
420294 --
420295 AcctLineType_377 (
420296  p_application_id  => p_application_id
420297  ,p_event_id     => l_event_id
420298  ,p_calculate_acctd_flag => l_calculate_acctd_flag
420299  ,p_calculate_g_l_flag => l_calculate_g_l_flag
420300  ,p_actual_flag => l_actual_flag
420301  ,p_balance_type_code => l_balance_type_code
420302  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
420303  
420304  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
420305  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
420306  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
420307  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
420308  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
420309  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
420310  , p_source_84 => l_array_source_84(Idx)
420311  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
420312  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
420313  , p_source_88 => l_array_source_88(Idx)
420314  , p_source_91 => l_array_source_91(Idx)
420315  , p_source_92 => l_array_source_92(Idx)
420316  , p_source_93 => l_array_source_93(Idx)
420317  , p_source_94 => l_array_source_94(Idx)
420318  , p_source_95 => l_array_source_95(Idx)
420319  , p_source_97 => l_array_source_97(Idx)
420320  , p_source_110 => l_array_source_110(Idx)
420321  , p_source_110_meaning => l_array_source_110_meaning(Idx)
420322  );
420323 If(l_balance_type_code = 'A') THEN
420324   l_actual_gain_loss_ref := l_gain_or_loss_ref;
420325 END IF;
420326 
420327 --
420328 
420329 
420330 --
420331 AcctLineType_458 (
420332  p_application_id  => p_application_id
420333  ,p_event_id     => l_event_id
420334  ,p_calculate_acctd_flag => l_calculate_acctd_flag
420335  ,p_calculate_g_l_flag => l_calculate_g_l_flag
420336  ,p_actual_flag => l_actual_flag
420337  ,p_balance_type_code => l_balance_type_code
420338  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
420339  
420340  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
420341  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
420342  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
420343  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
420344  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
420345  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
420346  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
420347  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
420348  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
420349  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
420350  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
420351  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
420352  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
420353  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
420354  , p_source_84 => l_array_source_84(Idx)
420355  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
420356  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
420357  , p_source_88 => l_array_source_88(Idx)
420358  , p_source_91 => l_array_source_91(Idx)
420359  , p_source_92 => l_array_source_92(Idx)
420360  , p_source_93 => l_array_source_93(Idx)
420361  , p_source_94 => l_array_source_94(Idx)
420362  , p_source_95 => l_array_source_95(Idx)
420363  , p_source_97 => l_array_source_97(Idx)
420364  , p_source_110 => l_array_source_110(Idx)
420365  , p_source_110_meaning => l_array_source_110_meaning(Idx)
420366  );
420367 If(l_balance_type_code = 'A') THEN
420368   l_actual_gain_loss_ref := l_gain_or_loss_ref;
420369 END IF;
420370 
420371 --
420372 
420373 
420374 --
420375 AcctLineType_538 (
420376  p_application_id  => p_application_id
420377  ,p_event_id     => l_event_id
420378  ,p_calculate_acctd_flag => l_calculate_acctd_flag
420379  ,p_calculate_g_l_flag => l_calculate_g_l_flag
420380  ,p_actual_flag => l_actual_flag
420381  ,p_balance_type_code => l_balance_type_code
420382  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
420383  
420384  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
420385  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
420386  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
420387  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
420388  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
420389  , p_source_11 => l_array_source_11(Idx)
420390  , p_source_84 => l_array_source_84(Idx)
420391  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
420392  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
420393  , p_source_88 => l_array_source_88(Idx)
420394  , p_source_91 => l_array_source_91(Idx)
420395  , p_source_92 => l_array_source_92(Idx)
420396  , p_source_93 => l_array_source_93(Idx)
420397  , p_source_94 => l_array_source_94(Idx)
420398  , p_source_95 => l_array_source_95(Idx)
420399  , p_source_97 => l_array_source_97(Idx)
420400  );
420401 If(l_balance_type_code = 'A') THEN
420402   l_actual_gain_loss_ref := l_gain_or_loss_ref;
420403 END IF;
420404 
420405 --
420406 
420407       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
420408       -- or secondary ledger that has different currency with primary
420409       -- or alc that is calculated by sla
420410       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
420411             (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'))
420412 
420413 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
420414 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
420415           AND (l_actual_flag = 'A')) THEN
420416         XLA_AE_LINES_PKG.CreateGainOrLossLines(
420417           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
420418          ,p_application_id   => p_application_id
420419          ,p_amb_context_code => 'DEFAULT'
420420          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
420421          ,p_event_class_code => C_EVENT_CLASS_CODE
420422          ,p_event_type_code  => C_EVENT_TYPE_CODE
420423          
420424          ,p_gain_ccid        => -1
420425          ,p_loss_ccid        => -1
420426 
420427          ,p_actual_flag      => l_actual_flag
420428          ,p_enc_flag         => null
420429          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
420430          ,p_enc_g_l_ref      => null
420431          );
420432       END IF;
420433    END IF;
420434 END IF;
420435 
420436    ELSE
420437       --
420438       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
420439       --
420440       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
420441          trace
420442             (p_msg      => 'Trancaction revesal option is Y'
420443             ,p_level    => C_LEVEL_STATEMENT
420444             ,p_module   => l_log_module);
420445       END IF;
420446    END IF;
420447 
420448 END LOOP;
420449 l_result := XLA_AE_LINES_PKG.InsertLines ;
420450 end loop;
420451 close line_cur;
420452 
420453 
420454 --
420455 -- insert headers into xla_ae_headers_gt table
420456 --
420457 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
420458 
420459 -- insert into errors table here.
420460 
420461 END LOOP;
420462 
420463 --
420464 -- 4865292
420465 --
420466 -- Compare g_hdr_extract_count with event count in
420467 -- CreateHeadersAndLines.
420468 --
420469 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
420470 
420471 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
420472    trace (p_msg     => '# rows extracted from header extract objects '
420473                     || ' (running total): '
420474                     || g_hdr_extract_count
420475          ,p_level   => C_LEVEL_STATEMENT
420476          ,p_module  => l_log_module);
420477 END IF;
420478 
420479 CLOSE header_cur;
420480 --
420481 
420482 --
420483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
420484    trace
420485       (p_msg      => 'END of EventType_617'
420486       ,p_level    => C_LEVEL_PROCEDURE
420487       ,p_module   => l_log_module);
420488 END IF;
420489 --
420490 RETURN l_result;
420491 EXCEPTION
420492 WHEN xla_exceptions_pkg.application_exception THEN
420493    
420494 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
420495 
420496    
420497 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
420498 
420499    RAISE;
420500 
420501 WHEN NO_DATA_FOUND THEN
420502 
420503 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
420504 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
420505 
420506 FOR header_record IN header_cur
420507 LOOP
420508     l_array_header_events(header_record.event_id) := header_record.event_id;
420509 END LOOP;
420510 
420511 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
420512 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
420513 
420514 fnd_file.put_line(fnd_file.LOG, '                    ');
420515 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
420516 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
420517 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
420518 
420519 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
420520 LOOP
420521 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
420522 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
420523         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
420524 	END IF;
420525 END LOOP;
420526 
420527 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
420528 fnd_file.put_line(fnd_file.LOG, '                    ');
420529 
420530 
420531 xla_exceptions_pkg.raise_message
420532       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_617');
420533 
420534 
420535 WHEN OTHERS THEN
420536    xla_exceptions_pkg.raise_message
420537       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_617');
420538 END EventType_617;
420539 --
420540 
420541 ---------------------------------------
420542 --
420543 -- PRIVATE PROCEDURE
420544 --         insert_sources_618
420545 --
420546 ----------------------------------------
420547 --
420548 PROCEDURE insert_sources_618(
420549                                 p_target_ledger_id       IN NUMBER
420550                               , p_language               IN VARCHAR2
420551                               , p_sla_ledger_id          IN NUMBER
420552                               , p_pad_start_date         IN DATE
420553                               , p_pad_end_date           IN DATE
420554                          )
420555 IS
420556 
420557 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COMP_ISSUE';
420558 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
420559 p_apps_owner                   VARCHAR2(30);
420560 l_log_module                   VARCHAR2(240);
420561 BEGIN
420562 IF g_log_enabled THEN
420563       l_log_module := C_DEFAULT_MODULE||'.insert_sources_618';
420564 END IF;
420565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
420566 
420567       trace
420568          (p_msg      => 'BEGIN of insert_sources_618'
420569          ,p_level    => C_LEVEL_PROCEDURE
420570          ,p_module   => l_log_module);
420571 
420572 END IF;
420573 
420574 -- select APPS owner
420575 SELECT oracle_username
420576   INTO p_apps_owner
420577   FROM fnd_oracle_userid
420578  WHERE read_only_flag = 'U'
420579 ;
420580 
420581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
420582       trace
420583          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
420584                         ' - p_language = '||p_language||
420585                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
420586                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
420587                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
420588                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
420589          ,p_level    => C_LEVEL_STATEMENT
420590          ,p_module   => l_log_module);
420591 END IF;
420592 
420593 
420594 --
420595 INSERT INTO xla_diag_sources --hdr1
420596 (
420597         event_id
420598       , ledger_id
420599       , sla_ledger_id
420600       , description_language
420601       , object_name
420602       , object_type_code
420603       , line_number
420604       , source_application_id
420605       , source_type_code
420606       , source_code
420607       , source_value
420608       , source_meaning
420609       , created_by
420610       , creation_date
420611       , last_update_date
420612       , last_updated_by
420613       , last_update_login
420614       , program_update_date
420615       , program_application_id
420616       , program_id
420617       , request_id
420618 )
420619 SELECT
420620         event_id
420621       , p_target_ledger_id
420622       , p_sla_ledger_id
420623       , p_language
420624       , object_name
420625       , object_type_code
420626       , line_number
420627       , source_application_id
420628       , source_type_code
420629       , source_code
420630       , SUBSTR(source_value ,1,1996)
420631       , SUBSTR(source_meaning,1,200)
420632       , xla_environment_pkg.g_Usr_Id
420633       , TRUNC(SYSDATE)
420634       , TRUNC(SYSDATE)
420635       , xla_environment_pkg.g_Usr_Id
420636       , xla_environment_pkg.g_Login_Id
420637       , TRUNC(SYSDATE)
420638       , xla_environment_pkg.g_Prog_Appl_Id
420639       , xla_environment_pkg.g_Prog_Id
420640       , xla_environment_pkg.g_Req_Id
420641   FROM (
420642        SELECT xet.event_id                  event_id
420643             , 0                             line_number
420644             , CASE r
420645                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
420646                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
420647                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
420648                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
420649                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
420650                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
420651                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
420652                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
420653                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
420654                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
420655                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
420656                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
420657                 WHEN 13 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
420658                 WHEN 14 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
420659                 WHEN 15 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
420660                 WHEN 16 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
420661                 WHEN 17 THEN 'CST_XLA_REP_ITEM_REF_V' 
420662                 WHEN 18 THEN 'CST_XLA_INV_REF_V' 
420663                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
420664                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
420665                 WHEN 21 THEN 'CST_XLA_INV_HEADERS_V' 
420666                 
420667                ELSE null
420668               END                           object_name
420669             , CASE r
420670                 WHEN 1 THEN 'HEADER' 
420671                 WHEN 2 THEN 'HEADER' 
420672                 WHEN 3 THEN 'HEADER' 
420673                 WHEN 4 THEN 'HEADER' 
420674                 WHEN 5 THEN 'HEADER' 
420675                 WHEN 6 THEN 'HEADER' 
420676                 WHEN 7 THEN 'HEADER' 
420677                 WHEN 8 THEN 'HEADER' 
420678                 WHEN 9 THEN 'HEADER' 
420679                 WHEN 10 THEN 'HEADER' 
420680                 WHEN 11 THEN 'HEADER' 
420681                 WHEN 12 THEN 'HEADER' 
420682                 WHEN 13 THEN 'HEADER' 
420683                 WHEN 14 THEN 'HEADER' 
420684                 WHEN 15 THEN 'HEADER' 
420685                 WHEN 16 THEN 'HEADER' 
420686                 WHEN 17 THEN 'HEADER' 
420687                 WHEN 18 THEN 'HEADER' 
420688                 WHEN 19 THEN 'HEADER' 
420689                 WHEN 20 THEN 'HEADER' 
420690                 WHEN 21 THEN 'HEADER' 
420691                 
420692                 ELSE null
420693               END                           object_type_code
420694             , CASE r
420695                 WHEN 1 THEN '707' 
420696                 WHEN 2 THEN '707' 
420697                 WHEN 3 THEN '707' 
420698                 WHEN 4 THEN '707' 
420699                 WHEN 5 THEN '707' 
420700                 WHEN 6 THEN '707' 
420701                 WHEN 7 THEN '707' 
420702                 WHEN 8 THEN '707' 
420703                 WHEN 9 THEN '707' 
420704                 WHEN 10 THEN '707' 
420705                 WHEN 11 THEN '707' 
420706                 WHEN 12 THEN '707' 
420707                 WHEN 13 THEN '707' 
420708                 WHEN 14 THEN '707' 
420709                 WHEN 15 THEN '707' 
420710                 WHEN 16 THEN '707' 
420711                 WHEN 17 THEN '707' 
420712                 WHEN 18 THEN '707' 
420713                 WHEN 19 THEN '707' 
420714                 WHEN 20 THEN '707' 
420715                 WHEN 21 THEN '707' 
420716                 
420717                 ELSE null
420718               END                           source_application_id
420719             , 'S'             source_type_code
420720             , CASE r
420721                 WHEN 1 THEN 'TRANSACTION_ID' 
420722                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
420723                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
420724                 WHEN 4 THEN 'TRANSACTION_UOM' 
420725                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
420726                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
420727                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
420728                 WHEN 8 THEN 'PLA_EXPENSE_ACCOUNT' 
420729                 WHEN 9 THEN 'PLA_MATERIAL_ACCOUNT' 
420730                 WHEN 10 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
420731                 WHEN 11 THEN 'PLA_RESOURCE_ACCOUNT' 
420732                 WHEN 12 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
420733                 WHEN 13 THEN 'PLA_OVERHEAD_ACCOUNT' 
420734                 WHEN 14 THEN 'DIS_JOB_BRIDGING_ACCT' 
420735                 WHEN 15 THEN 'WIP_ENTITY_TYPE' 
420736                 WHEN 16 THEN 'FLO_SCH_BRIDGING_ACCT' 
420737                 WHEN 17 THEN 'REP_ITM_BRIDGING_ACCT' 
420738                 WHEN 18 THEN 'TRANSACTION_SOURCE_ID' 
420739                 WHEN 19 THEN 'TRANSACTION_ACTION_ID' 
420740                 WHEN 20 THEN 'DISTRIBUTION_TYPE' 
420741                 WHEN 21 THEN 'TRANSFER_TO_GL_INDICATOR' 
420742                 
420743                 ELSE null
420744               END                           source_code
420745             , CASE r
420746                 WHEN 1 THEN TO_CHAR(h3.TRANSACTION_ID)
420747                 WHEN 2 THEN TO_CHAR(h7.ITEM_CONCATENATED_SEGMENTS)
420748                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
420749                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
420750                 WHEN 5 THEN TO_CHAR(h8.INV_TXN_TYPE_DESCRIPTION)
420751                 WHEN 6 THEN TO_CHAR(h5.INV_TXN_DISTRIBUTION_ACCT)
420752                 WHEN 7 THEN TO_CHAR(h9.PLA_BRIDGING_ACCOUNT)
420753                 WHEN 8 THEN TO_CHAR(h9.PLA_EXPENSE_ACCOUNT)
420754                 WHEN 9 THEN TO_CHAR(h9.PLA_MATERIAL_ACCOUNT)
420755                 WHEN 10 THEN TO_CHAR(h9.PLA_MATERIAL_OVERHEAD_ACCOUNT)
420756                 WHEN 11 THEN TO_CHAR(h9.PLA_RESOURCE_ACCOUNT)
420757                 WHEN 12 THEN TO_CHAR(h9.PLA_OUTSIDE_PROCESSING_ACCOUNT)
420758                 WHEN 13 THEN TO_CHAR(h9.PLA_OVERHEAD_ACCOUNT)
420759                 WHEN 14 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
420760                 WHEN 15 THEN TO_CHAR(h11.WIP_ENTITY_TYPE)
420761                 WHEN 16 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
420762                 WHEN 17 THEN TO_CHAR(h10.REP_ITM_BRIDGING_ACCT)
420763                 WHEN 18 THEN TO_CHAR(h5.TRANSACTION_SOURCE_ID)
420764                 WHEN 19 THEN TO_CHAR(h3.TRANSACTION_ACTION_ID)
420765                 WHEN 20 THEN TO_CHAR(h3.DISTRIBUTION_TYPE)
420766                 WHEN 21 THEN TO_CHAR(h3.TRANSFER_TO_GL_INDICATOR)
420767                 
420768                 ELSE null
420769               END                           source_value
420770             , CASE r
420771                 WHEN 15 THEN fvl55.meaning
420772                 WHEN 19 THEN fvl62.meaning
420773                 WHEN 20 THEN fvl85.meaning
420774                 WHEN 21 THEN fvl114.meaning
420775                 
420776                 ELSE null
420777               END               source_meaning
420778         FROM xla_events_gt     xet  
420779       , CST_XLA_DISCRETE_JOB_REF_V  h1
420780       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
420781       , CST_XLA_INV_HEADERS_V  h3
420782       , CST_XLA_INV_REF_V  h5
420783       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
420784       , CST_XLA_INV_TXN_TYPES_REF_V  h8
420785       , CST_XLA_PLA_CATEGORY_REF_V  h9
420786       , CST_XLA_REP_ITEM_REF_V  h10
420787       , CST_XLA_WIP_ENTITY_REF_V  h11
420788   , fnd_lookup_values    fvl55
420789   , fnd_lookup_values    fvl62
420790   , fnd_lookup_values    fvl85
420791   , fnd_lookup_values    fvl114
420792             ,(select rownum r from all_objects where rownum <= 21 and owner = p_apps_owner)
420793        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
420794          AND xet.event_type_code = C_EVENT_TYPE_CODE
420795             AND h3.event_id = xet.event_id
420796  AND h1.dis_job_wip_entity_id  (+) = h5.transaction_source_id AND h2.flo_sch_wip_entity_id  (+) = h5.transaction_source_id AND h5.ref_transaction_id = h3.transaction_id AND h7.inventory_item_id = h3.inventory_item_id and h7.organization_id = h3.organization_id AND h8.inv_transaction_type_id = h3.transaction_type_id AND h9.pla_cat_organization_id  (+) = h3.organization_id 
420797 and h9.pla_cat_item_id          (+) = h3.inventory_item_id 
420798 and h9.pla_subinv_cg            (+) = h3.h_subinv_cg AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  and h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.wip_entity_id  (+) = h5.transaction_source_id   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
420799   AND fvl55.lookup_code(+)         = h11.WIP_ENTITY_TYPE
420800   AND fvl55.view_application_id(+) = 700
420801   AND fvl55.language(+)            = USERENV('LANG')
420802      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
420803   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
420804   AND fvl62.view_application_id(+) = 700
420805   AND fvl62.language(+)            = USERENV('LANG')
420806      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
420807   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
420808   AND fvl85.view_application_id(+) = 700
420809   AND fvl85.language(+)            = USERENV('LANG')
420810      AND fvl114.lookup_type(+)         = 'YES_NO'
420811   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
420812   AND fvl114.view_application_id(+) = 0
420813   AND fvl114.language(+)            = USERENV('LANG')
420814   
420815 )
420816 ;
420817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
420818 
420819       trace
420820          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
420821          ,p_level    => C_LEVEL_STATEMENT
420822          ,p_module   => l_log_module);
420823 
420824 END IF;
420825 --
420826 
420827 
420828 
420829 --
420830 INSERT INTO xla_diag_sources --line1
420831 (
420832         event_id
420833       , ledger_id
420834       , sla_ledger_id
420835       , description_language
420836       , object_name
420837       , object_type_code
420838       , line_number
420839       , source_application_id
420840       , source_type_code
420841       , source_code
420842       , source_value
420843       , source_meaning
420844       , created_by
420845       , creation_date
420846       , last_update_date
420847       , last_updated_by
420848       , last_update_login
420849       , program_update_date
420850       , program_application_id
420851       , program_id
420852       , request_id
420853 )
420854 SELECT  event_id
420855       , p_target_ledger_id
420856       , p_sla_ledger_id
420857       , p_language
420858       , object_name
420859       , object_type_code
420860       , line_number
420861       , source_application_id
420862       , source_type_code
420863       , source_code
420864       , SUBSTR(source_value,1,1996)
420865       , SUBSTR(source_meaning,1,200)
420866       , xla_environment_pkg.g_Usr_Id
420867       , TRUNC(SYSDATE)
420868       , TRUNC(SYSDATE)
420869       , xla_environment_pkg.g_Usr_Id
420870       , xla_environment_pkg.g_Login_Id
420871       , TRUNC(SYSDATE)
420872       , xla_environment_pkg.g_Prog_Appl_Id
420873       , xla_environment_pkg.g_Prog_Id
420874       , xla_environment_pkg.g_Req_Id
420875   FROM (
420876        SELECT xet.event_id                  event_id
420877             , l4.line_number                 line_number
420878             , CASE r
420879                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
420880                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
420881                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
420882                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
420883                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
420884                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
420885                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
420886                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
420887                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
420888                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
420889                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
420890                 WHEN 12 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
420891                 
420892                ELSE null
420893               END                           object_name
420894             , CASE r
420895                 WHEN 1 THEN 'LINE' 
420896                 WHEN 2 THEN 'LINE' 
420897                 WHEN 3 THEN 'LINE' 
420898                 WHEN 4 THEN 'LINE' 
420899                 WHEN 5 THEN 'LINE' 
420900                 WHEN 6 THEN 'LINE' 
420901                 WHEN 7 THEN 'LINE' 
420902                 WHEN 8 THEN 'LINE' 
420903                 WHEN 9 THEN 'LINE' 
420904                 WHEN 10 THEN 'LINE' 
420905                 WHEN 11 THEN 'LINE' 
420906                 WHEN 12 THEN 'LINE' 
420907                 
420908                 ELSE null
420909               END                           object_type_code
420910             , CASE r
420911                 WHEN 1 THEN '707' 
420912                 WHEN 2 THEN '707' 
420913                 WHEN 3 THEN '707' 
420914                 WHEN 4 THEN '707' 
420915                 WHEN 5 THEN '707' 
420916                 WHEN 6 THEN '707' 
420917                 WHEN 7 THEN '707' 
420918                 WHEN 8 THEN '707' 
420919                 WHEN 9 THEN '707' 
420920                 WHEN 10 THEN '707' 
420921                 WHEN 11 THEN '707' 
420922                 WHEN 12 THEN '707' 
420923                 
420924                 ELSE null
420925               END                           source_application_id
420926             , 'S'             source_type_code
420927             , CASE r
420928                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
420929                 WHEN 2 THEN 'COST_ELEMENT_ID' 
420930                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
420931                 WHEN 4 THEN 'CURRENCY_CODE' 
420932                 WHEN 5 THEN 'ENTERED_AMOUNT' 
420933                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
420934                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
420935                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
420936                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
420937                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
420938                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
420939                 WHEN 12 THEN 'ASSET_INVENTORY' 
420940                 
420941                 ELSE null
420942               END                           source_code
420943             , CASE r
420944                 WHEN 1 THEN TO_CHAR(l4.CODE_COMBINATION_ID)
420945                 WHEN 2 THEN TO_CHAR(l4.COST_ELEMENT_ID)
420946                 WHEN 3 THEN TO_CHAR(l4.DISTRIBUTION_IDENTIFIER)
420947                 WHEN 4 THEN TO_CHAR(l4.CURRENCY_CODE)
420948                 WHEN 5 THEN TO_CHAR(l4.ENTERED_AMOUNT)
420949                 WHEN 6 THEN TO_CHAR(l4.CURRENCY_CONVERSION_DATE)
420950                 WHEN 7 THEN TO_CHAR(l4.CURRENCY_CONVERSION_RATE)
420951                 WHEN 8 THEN TO_CHAR(l4.CURRENCY_CONVERSION_TYPE)
420952                 WHEN 9 THEN TO_CHAR(l4.ACCOUNTED_AMOUNT)
420953                 WHEN 10 THEN TO_CHAR(l4.ACCOUNTING_LINE_TYPE_CODE)
420954                 WHEN 11 THEN TO_CHAR(l4.L_ORGANIZATION_CODE)
420955                 WHEN 12 THEN TO_CHAR(l6.ASSET_INVENTORY)
420956                 
420957                 ELSE null
420958               END                           source_value
420959             , CASE r
420960                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
420961                           1009615
420962                          ,TO_CHAR(l4.COST_ELEMENT_ID)
420963                          ,'COST_ELEMENT_ID'
420964                          ,'S'
420965                          ,707)
420966                 WHEN 12 THEN fvl110.meaning
420967                 
420968                 ELSE null
420969               END               source_meaning
420970          FROM  xla_events_gt     xet  
420971         , CST_XLA_INV_LINES_V  l4
420972         , CST_XLA_INV_SEC_INVS_REF_V  l6
420973   , fnd_lookup_values    fvl110
420974             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
420975         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
420976           AND xet.event_type_code = C_EVENT_TYPE_CODE
420977             AND l4.event_id          = xet.event_id
420978  AND l6.subinventory  (+) = l4.subinventory_code  and l6.subinv_organization_id  (+) = l4.l_organization_id   AND fvl110.lookup_type(+)         = 'YES_NO'
420979   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
420980   AND fvl110.view_application_id(+) = 0
420981   AND fvl110.language(+)            = USERENV('LANG')
420982   
420983 )
420984 ;
420985 --
420986 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
420987 
420988       trace
420989          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
420990          ,p_level    => C_LEVEL_STATEMENT
420991          ,p_module   => l_log_module);
420992 
420993 END IF;
420994 
420995 
420996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
420997       trace
420998          (p_msg      => 'END of insert_sources_618'
420999          ,p_level    => C_LEVEL_PROCEDURE
421000          ,p_module   => l_log_module);
421001 END IF;
421002 EXCEPTION
421003   WHEN xla_exceptions_pkg.application_exception THEN
421004       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
421005             trace
421006                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
421007                ,p_level    => C_LEVEL_EXCEPTION
421008                ,p_module   => l_log_module);
421009       END IF;
421010       RAISE;
421011   WHEN OTHERS THEN
421012       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
421013             trace
421014                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
421015                ,p_level    => C_LEVEL_EXCEPTION
421016                ,p_module   => l_log_module);
421017        END IF;
421018        xla_exceptions_pkg.raise_message
421019            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_618');
421020 END insert_sources_618;
421021 --
421022 
421023 ---------------------------------------
421024 --
421025 -- PRIVATE FUNCTION
421026 --         EventType_618
421027 --
421028 ----------------------------------------
421029 --
421030 FUNCTION EventType_618
421031        (p_application_id         IN NUMBER
421032        ,p_base_ledger_id         IN NUMBER
421033        ,p_target_ledger_id       IN NUMBER
421034        ,p_language               IN VARCHAR2
421035        ,p_currency_code          IN VARCHAR2
421036        ,p_sla_ledger_id          IN NUMBER
421037        ,p_pad_start_date         IN DATE
421038        ,p_pad_end_date           IN DATE
421039        ,p_primary_ledger_id      IN NUMBER)
421040 RETURN BOOLEAN IS
421041 --
421042 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COMP_ISSUE';
421043 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
421044 
421045 l_calculate_acctd_flag   VARCHAR2(1) :='N';
421046 l_calculate_g_l_flag     VARCHAR2(1) :='N';
421047 --
421048 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421049 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421050 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
421051 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
421052 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421053 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
421054 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
421055 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421056 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
421057 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
421058 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421059 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421060 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421061 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
421062 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
421063 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
421064 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
421065 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
421066 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
421067 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
421068 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
421069 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
421070 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
421071 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
421072 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
421073 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
421074 
421075 l_event_id                             NUMBER;
421076 l_previous_event_id                    NUMBER;
421077 l_first_event_id                       NUMBER;
421078 l_last_event_id                        NUMBER;
421079 
421080 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
421081 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
421082 --
421083 --
421084 l_result                    BOOLEAN := TRUE;
421085 l_rows                      NUMBER  := 1000;
421086 l_event_type_name           VARCHAR2(80) := 'WIP Component Issue';
421087 l_event_class_name          VARCHAR2(80) := 'WIP Material';
421088 l_description               VARCHAR2(4000);
421089 l_transaction_reversal      NUMBER;
421090 l_ae_header_id              NUMBER;
421091 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
421092 l_log_module                VARCHAR2(240);
421093 --
421094 l_acct_reversal_source      VARCHAR2(30);
421095 l_trx_reversal_source       VARCHAR2(30);
421096 
421097 l_continue_with_lines       BOOLEAN := TRUE;
421098 --
421099 l_acc_rev_gl_date_source    DATE;                      -- 4262811
421100 --
421101 type t_array_event_id is table of number index by binary_integer;
421102 
421103 l_rec_array_event                    t_rec_array_event;
421104 l_null_rec_array_event               t_rec_array_event;
421105 l_array_ae_header_id                 xla_number_array_type;
421106 l_actual_flag                        VARCHAR2(1) := NULL;
421107 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
421108 l_balance_type_code                  VARCHAR2(1) :=NULL;
421109 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
421110 
421111 --
421112 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
421113 --
421114 
421115 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
421116 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
421117 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
421118 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
421119 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
421120 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
421121 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
421122 TYPE t_array_source_24 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_EXPENSE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
421123 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
421124 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
421125 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
421126 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
421127 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
421128 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
421129 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
421130 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
421131 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
421132 TYPE t_array_source_61 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_SOURCE_ID%TYPE INDEX BY BINARY_INTEGER;
421133 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
421134 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
421135 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
421136 
421137 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
421138 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
421139 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
421140 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
421141 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
421142 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
421143 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
421144 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
421145 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
421146 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
421147 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
421148 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
421149 
421150 l_array_source_1              t_array_source_1;
421151 l_array_source_2              t_array_source_2;
421152 l_array_source_3              t_array_source_3;
421153 l_array_source_4              t_array_source_4;
421154 l_array_source_5              t_array_source_5;
421155 l_array_source_20              t_array_source_20;
421156 l_array_source_22              t_array_source_22;
421157 l_array_source_24              t_array_source_24;
421158 l_array_source_41              t_array_source_41;
421159 l_array_source_42              t_array_source_42;
421160 l_array_source_43              t_array_source_43;
421161 l_array_source_44              t_array_source_44;
421162 l_array_source_45              t_array_source_45;
421163 l_array_source_54              t_array_source_54;
421164 l_array_source_55              t_array_source_55;
421165 l_array_source_55_meaning      t_array_lookup_meaning;
421166 l_array_source_56              t_array_source_56;
421167 l_array_source_57              t_array_source_57;
421168 l_array_source_61              t_array_source_61;
421169 l_array_source_62              t_array_source_62;
421170 l_array_source_62_meaning      t_array_lookup_meaning;
421171 l_array_source_85              t_array_source_85;
421172 l_array_source_85_meaning      t_array_lookup_meaning;
421173 l_array_source_114              t_array_source_114;
421174 l_array_source_114_meaning      t_array_lookup_meaning;
421175 
421176 l_array_source_11      t_array_source_11;
421177 l_array_source_15      t_array_source_15;
421178 l_array_source_84      t_array_source_84;
421179 l_array_source_88      t_array_source_88;
421180 l_array_source_91      t_array_source_91;
421181 l_array_source_92      t_array_source_92;
421182 l_array_source_93      t_array_source_93;
421183 l_array_source_94      t_array_source_94;
421184 l_array_source_95      t_array_source_95;
421185 l_array_source_97      t_array_source_97;
421186 l_array_source_108      t_array_source_108;
421187 l_array_source_110      t_array_source_110;
421188 l_array_source_110_meaning      t_array_lookup_meaning;
421189 
421190 --
421191 CURSOR header_cur
421192 IS
421193 SELECT /*+ leading(xet) cardinality(xet,1) */
421194 -- Event Type Code: WIP_COMP_ISSUE
421195 -- Event Class Code: WIP_MTL
421196     xet.entity_id
421197   , xet.legal_entity_id
421198   , xet.entity_code
421199   , xet.transaction_number
421200   , xet.event_id
421201   , xet.event_class_code
421202   , xet.event_type_code
421203   , xet.event_number
421204   , xet.event_date
421205   , xet.transaction_date
421206   , xet.reference_num_1
421207   , xet.reference_num_2
421208   , xet.reference_num_3
421209   , xet.reference_num_4
421210   , xet.reference_char_1
421211   , xet.reference_char_2
421212   , xet.reference_char_3
421213   , xet.reference_char_4
421214   , xet.reference_date_1
421215   , xet.reference_date_2
421216   , xet.reference_date_3
421217   , xet.reference_date_4
421218   , xet.event_created_by
421219   , xet.budgetary_control_flag 
421220   , h3.TRANSACTION_ID    source_1
421221   , h7.ITEM_CONCATENATED_SEGMENTS    source_2
421222   , h5.TRANSACTION_QUANTITY    source_3
421223   , h5.TRANSACTION_UOM    source_4
421224   , h8.INV_TXN_TYPE_DESCRIPTION    source_5
421225   , h5.INV_TXN_DISTRIBUTION_ACCT    source_20
421226   , h9.PLA_BRIDGING_ACCOUNT    source_22
421227   , h9.PLA_EXPENSE_ACCOUNT    source_24
421228   , h9.PLA_MATERIAL_ACCOUNT    source_41
421229   , h9.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
421230   , h9.PLA_RESOURCE_ACCOUNT    source_43
421231   , h9.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
421232   , h9.PLA_OVERHEAD_ACCOUNT    source_45
421233   , h1.DIS_JOB_BRIDGING_ACCT    source_54
421234   , h11.WIP_ENTITY_TYPE    source_55
421235   , fvl55.meaning   source_55_meaning
421236   , h2.FLO_SCH_BRIDGING_ACCT    source_56
421237   , h10.REP_ITM_BRIDGING_ACCT    source_57
421238   , h5.TRANSACTION_SOURCE_ID    source_61
421239   , h3.TRANSACTION_ACTION_ID    source_62
421240   , fvl62.meaning   source_62_meaning
421241   , h3.DISTRIBUTION_TYPE    source_85
421242   , fvl85.meaning   source_85_meaning
421243   , h3.TRANSFER_TO_GL_INDICATOR    source_114
421244   , fvl114.meaning   source_114_meaning
421245   FROM xla_events_gt     xet 
421246   , CST_XLA_DISCRETE_JOB_REF_V  h1
421247   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
421248   , CST_XLA_INV_HEADERS_V  h3
421249   , CST_XLA_INV_REF_V  h5
421250   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
421251   , CST_XLA_INV_TXN_TYPES_REF_V  h8
421252   , CST_XLA_PLA_CATEGORY_REF_V  h9
421253   , CST_XLA_REP_ITEM_REF_V  h10
421254   , CST_XLA_WIP_ENTITY_REF_V  h11
421255   , fnd_lookup_values    fvl55
421256   , fnd_lookup_values    fvl62
421257   , fnd_lookup_values    fvl85
421258   , fnd_lookup_values    fvl114
421259  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
421260    and xet.event_type_code = C_EVENT_TYPE_CODE
421261    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
421262  AND h1.DIS_JOB_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h2.FLO_SCH_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h5.ref_transaction_id = h3.transaction_id AND h7.INVENTORY_ITEM_ID = h3.INVENTORY_ITEM_ID AND h7.ORGANIZATION_ID = h3.ORGANIZATION_ID AND h8.INV_TRANSACTION_TYPE_ID = h3.TRANSACTION_TYPE_ID AND h9.PLA_CAT_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID 
421263 AND h9.PLA_CAT_ITEM_ID          (+) = h3.INVENTORY_ITEM_ID 
421264 AND h9.PLA_SUBINV_CG            (+) = h3.H_SUBINV_CG AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  AND h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
421265   AND fvl55.lookup_code(+)         = h11.WIP_ENTITY_TYPE
421266   AND fvl55.view_application_id(+) = 700
421267   AND fvl55.language(+)            = USERENV('LANG')
421268      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
421269   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
421270   AND fvl62.view_application_id(+) = 700
421271   AND fvl62.language(+)            = USERENV('LANG')
421272      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
421273   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
421274   AND fvl85.view_application_id(+) = 700
421275   AND fvl85.language(+)            = USERENV('LANG')
421276      AND fvl114.lookup_type(+)         = 'YES_NO'
421277   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
421278   AND fvl114.view_application_id(+) = 0
421279   AND fvl114.language(+)            = USERENV('LANG')
421280   
421281  ORDER BY event_id
421282 ;
421283 
421284 
421285 --
421286 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
421287 IS
421288 SELECT /*+ leading(xet) cardinality(xet,1) */
421289 -- Event Type Code: WIP_COMP_ISSUE
421290 -- Event Class Code: WIP_MTL
421291     xet.entity_id
421292    ,xet.legal_entity_id
421293    ,xet.entity_code
421294    ,xet.transaction_number
421295    ,xet.event_id
421296    ,xet.event_class_code
421297    ,xet.event_type_code
421298    ,xet.event_number
421299    ,xet.event_date
421300    ,xet.transaction_date
421301    ,xet.reference_num_1
421302    ,xet.reference_num_2
421303    ,xet.reference_num_3
421304    ,xet.reference_num_4
421305    ,xet.reference_char_1
421306    ,xet.reference_char_2
421307    ,xet.reference_char_3
421308    ,xet.reference_char_4
421309    ,xet.reference_date_1
421310    ,xet.reference_date_2
421311    ,xet.reference_date_3
421312    ,xet.reference_date_4
421313    ,xet.event_created_by
421314    ,xet.budgetary_control_flag  , l4.LINE_NUMBER  
421315   , l4.CODE_COMBINATION_ID    source_11
421316   , l4.COST_ELEMENT_ID    source_15
421317   , l4.DISTRIBUTION_IDENTIFIER    source_84
421318   , l4.CURRENCY_CODE    source_88
421319   , l4.ENTERED_AMOUNT    source_91
421320   , l4.CURRENCY_CONVERSION_DATE    source_92
421321   , l4.CURRENCY_CONVERSION_RATE    source_93
421322   , l4.CURRENCY_CONVERSION_TYPE    source_94
421323   , l4.ACCOUNTED_AMOUNT    source_95
421324   , l4.ACCOUNTING_LINE_TYPE_CODE    source_97
421325   , l4.L_ORGANIZATION_CODE    source_108
421326   , l6.ASSET_INVENTORY    source_110
421327   , fvl110.meaning   source_110_meaning
421328   FROM xla_events_gt     xet 
421329   , CST_XLA_INV_LINES_V  l4
421330   , CST_XLA_INV_SEC_INVS_REF_V  l6
421331   , fnd_lookup_values    fvl110
421332  WHERE xet.event_id between x_first_event_id and x_last_event_id
421333    and xet.event_date between p_pad_start_date and p_pad_end_date
421334    and xet.event_type_code = C_EVENT_TYPE_CODE
421335    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
421336  AND l6.SUBINVENTORY  (+) = l4.SUBINVENTORY_CODE  AND l6.SUBINV_ORGANIZATION_ID  (+) = l4.L_ORGANIZATION_ID   AND fvl110.lookup_type(+)         = 'YES_NO'
421337   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
421338   AND fvl110.view_application_id(+) = 0
421339   AND fvl110.language(+)            = USERENV('LANG')
421340   ;
421341 
421342 --
421343 BEGIN
421344 IF g_log_enabled THEN
421345    l_log_module := C_DEFAULT_MODULE||'.EventType_618';
421346 END IF;
421347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
421348    trace
421349       (p_msg      => 'BEGIN of EventType_618'
421350       ,p_level    => C_LEVEL_PROCEDURE
421351       ,p_module   => l_log_module);
421352 END IF;
421353 
421354 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
421355    trace
421356       (p_msg      => 'p_application_id = '||p_application_id||
421357                      ' - p_base_ledger_id = '||p_base_ledger_id||
421358                      ' - p_target_ledger_id  = '||p_target_ledger_id||
421359                      ' - p_language = '||p_language||
421360                      ' - p_currency_code = '||p_currency_code||
421361                      ' - p_sla_ledger_id = '||p_sla_ledger_id
421362       ,p_level    => C_LEVEL_STATEMENT
421363       ,p_module   => l_log_module);
421364 END IF;
421365 --
421366 -- initialze arrays
421367 --
421368 g_array_event.DELETE;
421369 l_rec_array_event := l_null_rec_array_event;
421370 --
421371 --------------------------------------
421372 -- 4262811 Initialze MPA Line Number
421373 --------------------------------------
421374 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
421375 
421376 --
421377 
421378 --
421379 OPEN header_cur;
421380 --
421381 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
421382    trace
421383    (p_msg      => 'SQL - FETCH header_cur'
421384    ,p_level    => C_LEVEL_STATEMENT
421385    ,p_module   => l_log_module);
421386 END IF;
421387 --
421388 LOOP
421389 FETCH header_cur BULK COLLECT INTO
421390         l_array_entity_id
421391       , l_array_legal_entity_id
421392       , l_array_entity_code
421393       , l_array_transaction_num
421394       , l_array_event_id
421395       , l_array_class_code
421396       , l_array_event_type
421397       , l_array_event_number
421398       , l_array_event_date
421399       , l_array_transaction_date
421400       , l_array_reference_num_1
421401       , l_array_reference_num_2
421402       , l_array_reference_num_3
421403       , l_array_reference_num_4
421404       , l_array_reference_char_1
421405       , l_array_reference_char_2
421406       , l_array_reference_char_3
421407       , l_array_reference_char_4
421408       , l_array_reference_date_1
421409       , l_array_reference_date_2
421410       , l_array_reference_date_3
421411       , l_array_reference_date_4
421412       , l_array_event_created_by
421413       , l_array_budgetary_control_flag 
421414       , l_array_source_1
421415       , l_array_source_2
421416       , l_array_source_3
421417       , l_array_source_4
421418       , l_array_source_5
421419       , l_array_source_20
421420       , l_array_source_22
421421       , l_array_source_24
421422       , l_array_source_41
421423       , l_array_source_42
421424       , l_array_source_43
421425       , l_array_source_44
421426       , l_array_source_45
421427       , l_array_source_54
421428       , l_array_source_55
421429       , l_array_source_55_meaning
421430       , l_array_source_56
421431       , l_array_source_57
421432       , l_array_source_61
421433       , l_array_source_62
421434       , l_array_source_62_meaning
421435       , l_array_source_85
421436       , l_array_source_85_meaning
421437       , l_array_source_114
421438       , l_array_source_114_meaning
421439       LIMIT l_rows;
421440 --
421441 IF (C_LEVEL_EVENT >= g_log_level) THEN
421442    trace
421443    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
421444    ,p_level    => C_LEVEL_EVENT
421445    ,p_module   => l_log_module);
421446 END IF;
421447 --
421448 EXIT WHEN l_array_entity_id.COUNT = 0;
421449 
421450 -- initialize arrays
421451 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
421452 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
421453 
421454 --
421455 -- Bug 4458708
421456 --
421457 XLA_AE_LINES_PKG.g_LineNumber := 0;
421458 
421459 
421460 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
421461 g_last_hdr_idx := l_array_event_id.LAST;
421462 --
421463 -- loop for the headers. Each iteration is for each header extract row
421464 -- fetched in header cursor
421465 --
421466 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
421467 
421468 --
421469 -- set event info as cache for other routines to refer event attributes
421470 --
421471 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
421472    (p_application_id           => p_application_id
421473    ,p_primary_ledger_id        => p_primary_ledger_id
421474    ,p_base_ledger_id           => p_base_ledger_id
421475    ,p_target_ledger_id         => p_target_ledger_id
421476    ,p_entity_id                => l_array_entity_id(hdr_idx)
421477    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
421478    ,p_entity_code              => l_array_entity_code(hdr_idx)
421479    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
421480    ,p_event_id                 => l_array_event_id(hdr_idx)
421481    ,p_event_class_code         => l_array_class_code(hdr_idx)
421482    ,p_event_type_code          => l_array_event_type(hdr_idx)
421483    ,p_event_number             => l_array_event_number(hdr_idx)
421484    ,p_event_date               => l_array_event_date(hdr_idx)
421485    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
421486    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
421487    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
421488    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
421489    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
421490    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
421491    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
421492    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
421493    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
421494    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
421495    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
421496    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
421497    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
421498    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
421499    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
421500 
421501 --
421502 -- set the status of entry to C_VALID (0)
421503 --
421504 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
421505 
421506 --
421507 -- initialize a row for ae header
421508 --
421509 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
421510 
421511 l_event_id := l_array_event_id(hdr_idx);
421512 
421513 --
421514 -- storing the hdr_idx for event. May be used by line cursor.
421515 --
421516 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
421517 
421518 --
421519 -- store sources from header extract. This can be improved to
421520 -- store only those sources from header extract that may be used in lines
421521 --
421522 
421523 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
421524 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
421525 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
421526 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
421527 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
421528 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
421529 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
421530 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
421531 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
421532 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
421533 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
421534 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
421535 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
421536 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
421537 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
421538 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
421539 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
421540 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
421541 g_array_event(l_event_id).array_value_num('source_61') := l_array_source_61(hdr_idx);
421542 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
421543 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
421544 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
421545 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
421546 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
421547 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
421548 
421549 --
421550 -- initilaize the status of ae headers for diffrent balance types
421551 -- the status is initialised to C_NOT_CREATED (2)
421552 --
421553 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
421554 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
421555 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
421556 
421557 --
421558 -- call api to validate and store accounting attributes for header
421559 --
421560 
421561 ------------------------------------------------------------
421562 -- Accrual Reversal : to get date for Standard Source (NONE)
421563 ------------------------------------------------------------
421564 l_acc_rev_gl_date_source := NULL;
421565 
421566      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
421567       l_rec_acct_attrs.array_date_value(1) := 
421568 xla_ae_sources_pkg.GetSystemSourceDate(
421569    p_source_code           => 'XLA_REFERENCE_DATE_1'
421570  , p_source_type_code      => 'Y'
421571  , p_source_application_id =>  602
421572 );
421573      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
421574       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
421575 
421576 
421577 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
421578 
421579 XLA_AE_HEADER_PKG.SetJeCategoryName;
421580 
421581 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
421582 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
421583 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
421584 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
421585 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
421586 
421587 
421588 --
421589 xla_ae_header_pkg.SetHdrDescription(
421590    p_description => Description_1 (
421591    p_application_id => p_application_id 
421592  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
421593  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
421594  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
421595  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
421596  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
421597    )
421598 );
421599 --
421600 
421601 -- No header level analytical criteria
421602 
421603 --
421604 --accounting attribute enhancement, bug 3612931
421605 --
421606 l_trx_reversal_source := SUBSTR(NULL, 1,30);
421607 
421608 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
421609    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
421610 
421611    xla_accounting_err_pkg.build_message
421612       (p_appli_s_name            => 'XLA'
421613       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
421614       ,p_token_1                 => 'ACCT_ATTR_NAME'
421615       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
421616       ,p_token_2                 => 'PRODUCT_NAME'
421617       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
421618       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
421619       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
421620       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
421621 
421622 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
421623    --
421624    -- following sets the accounting attributes needed to reverse
421625    -- accounting for a distributeion
421626    --
421627    xla_ae_lines_pkg.SetTrxReversalAttrs
421628       (p_event_id              => l_event_id
421629       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
421630       ,p_trx_reversal_source   => l_trx_reversal_source);
421631 
421632 END IF;
421633 
421634 
421635 ----------------------------------------------------------------
421636 -- 4262811 -  update the header statuses to invalid in need be
421637 ----------------------------------------------------------------
421638 --
421639 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
421640 
421641 
421642   -----------------------------------------------
421643   -- No accrual reversal for the event class/type
421644   -----------------------------------------------
421645 ----------------------------------------------------------------
421646 
421647 --
421648 -- this ends the header loop iteration for one bulk fetch
421649 --
421650 END LOOP;
421651 
421652 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
421653 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
421654 
421655 --
421656 -- insert dummy rows into lines gt table that were created due to
421657 -- transaction reversals
421658 --
421659 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
421660    l_result := XLA_AE_LINES_PKG.InsertLines;
421661 END IF;
421662 
421663 --
421664 -- reset the temp_line_num for each set of events fetched from header
421665 -- cursor rather than doing it for each new event in line cursor
421666 -- Bug 3939231
421667 --
421668 xla_ae_lines_pkg.g_temp_line_num := 0;
421669 
421670 
421671 
421672 --
421673 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
421674 --
421675 --
421676 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
421677 
421678       trace
421679          (p_msg      => 'SQL - FETCH line_cur'
421680          ,p_level    => C_LEVEL_STATEMENT
421681          ,p_module   => l_log_module);
421682 
421683 END IF;
421684 --
421685 --
421686 LOOP
421687   --
421688   FETCH line_cur BULK COLLECT INTO
421689         l_array_entity_id
421690       , l_array_legal_entity_id
421691       , l_array_entity_code
421692       , l_array_transaction_num
421693       , l_array_event_id
421694       , l_array_class_code
421695       , l_array_event_type
421696       , l_array_event_number
421697       , l_array_event_date
421698       , l_array_transaction_date
421699       , l_array_reference_num_1
421700       , l_array_reference_num_2
421701       , l_array_reference_num_3
421702       , l_array_reference_num_4
421703       , l_array_reference_char_1
421704       , l_array_reference_char_2
421705       , l_array_reference_char_3
421706       , l_array_reference_char_4
421707       , l_array_reference_date_1
421708       , l_array_reference_date_2
421709       , l_array_reference_date_3
421710       , l_array_reference_date_4
421711       , l_array_event_created_by
421712       , l_array_budgetary_control_flag
421713       , l_array_extract_line_num 
421714       , l_array_source_11
421715       , l_array_source_15
421716       , l_array_source_84
421717       , l_array_source_88
421718       , l_array_source_91
421719       , l_array_source_92
421720       , l_array_source_93
421721       , l_array_source_94
421722       , l_array_source_95
421723       , l_array_source_97
421724       , l_array_source_108
421725       , l_array_source_110
421726       , l_array_source_110_meaning
421727       LIMIT l_rows;
421728 
421729   --
421730   IF (C_LEVEL_EVENT >= g_log_level) THEN
421731             trace
421732                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
421733                ,p_level    => C_LEVEL_EVENT
421734                ,p_module   => l_log_module);
421735   END IF;
421736   --
421737   EXIT WHEN l_array_entity_id.count = 0;
421738 
421739   XLA_AE_LINES_PKG.g_rec_lines := null;
421740 
421741 --
421742 -- Bug 4458708
421743 --
421744 XLA_AE_LINES_PKG.g_LineNumber := 0;
421745 --
421746 --
421747 
421748 FOR Idx IN 1..l_array_event_id.count LOOP
421749    --
421750    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
421751    --
421752    l_event_id := l_array_event_id(idx);  -- 5648433
421753 
421754    --
421755    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
421756    --
421757 
421758    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
421759              (g_array_event(l_event_id).array_value_num('header_index'))
421760          ,'N'
421761          ) <> 'Y'
421762    THEN
421763       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
421764          trace
421765             (p_msg      => 'Trancaction revesal option is not Y '
421766             ,p_level    => C_LEVEL_STATEMENT
421767             ,p_module   => l_log_module);
421768       END IF;
421769 
421770 --
421771 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
421772 --
421773 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
421774 --
421775 -- set event info as cache for other routines to refer event attributes
421776 --
421777 
421778 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
421779    l_previous_event_id := l_event_id;
421780 
421781    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
421782       (p_application_id           => p_application_id
421783       ,p_primary_ledger_id        => p_primary_ledger_id
421784       ,p_base_ledger_id           => p_base_ledger_id
421785       ,p_target_ledger_id         => p_target_ledger_id
421786       ,p_entity_id                => l_array_entity_id(Idx)
421787       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
421788       ,p_entity_code              => l_array_entity_code(Idx)
421789       ,p_transaction_num          => l_array_transaction_num(Idx)
421790       ,p_event_id                 => l_array_event_id(Idx)
421791       ,p_event_class_code         => l_array_class_code(Idx)
421792       ,p_event_type_code          => l_array_event_type(Idx)
421793       ,p_event_number             => l_array_event_number(Idx)
421794       ,p_event_date               => l_array_event_date(Idx)
421795       ,p_transaction_date         => l_array_transaction_date(Idx)
421796       ,p_reference_num_1          => l_array_reference_num_1(Idx)
421797       ,p_reference_num_2          => l_array_reference_num_2(Idx)
421798       ,p_reference_num_3          => l_array_reference_num_3(Idx)
421799       ,p_reference_num_4          => l_array_reference_num_4(Idx)
421800       ,p_reference_char_1         => l_array_reference_char_1(Idx)
421801       ,p_reference_char_2         => l_array_reference_char_2(Idx)
421802       ,p_reference_char_3         => l_array_reference_char_3(Idx)
421803       ,p_reference_char_4         => l_array_reference_char_4(Idx)
421804       ,p_reference_date_1         => l_array_reference_date_1(Idx)
421805       ,p_reference_date_2         => l_array_reference_date_2(Idx)
421806       ,p_reference_date_3         => l_array_reference_date_3(Idx)
421807       ,p_reference_date_4         => l_array_reference_date_4(Idx)
421808       ,p_event_created_by         => l_array_event_created_by(Idx)
421809       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
421810        --
421811 END IF;
421812 
421813 
421814 
421815 --
421816 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
421817 
421818 l_acct_reversal_source := SUBSTR(NULL, 1,30);
421819 
421820 IF l_continue_with_lines THEN
421821    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
421822       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
421823 
421824       xla_accounting_err_pkg.build_message
421825          (p_appli_s_name            => 'XLA'
421826          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
421827          ,p_token_1                 => 'LINE_NUMBER'
421828          ,p_value_1                 => l_array_extract_line_num(Idx)
421829          ,p_token_2                 => 'PRODUCT_NAME'
421830          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
421831          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
421832          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
421833          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
421834 
421835    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
421836       --
421837       -- following sets the accounting attributes needed to reverse
421838       -- accounting for a distributeion
421839       --
421840 
421841       --
421842       -- 5217187
421843       --
421844       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
421845       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
421846                                        g_array_event(l_event_id).array_value_num('header_index'));
421847       --
421848       --
421849 
421850       -- No reversal code generated
421851 
421852       xla_ae_lines_pkg.SetAcctReversalAttrs
421853          (p_event_id             => l_event_id
421854          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
421855          ,p_calculate_acctd_flag => l_calculate_acctd_flag
421856          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
421857    END IF;
421858 
421859    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
421860        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
421861 
421862 --
421863 AcctLineType_90 (
421864  p_application_id  => p_application_id
421865  ,p_event_id     => l_event_id
421866  ,p_calculate_acctd_flag => l_calculate_acctd_flag
421867  ,p_calculate_g_l_flag => l_calculate_g_l_flag
421868  ,p_actual_flag => l_actual_flag
421869  ,p_balance_type_code => l_balance_type_code
421870  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
421871  
421872  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
421873  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
421874  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
421875  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
421876  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
421877  , p_source_11 => l_array_source_11(Idx)
421878  , p_source_84 => l_array_source_84(Idx)
421879  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
421880  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
421881  , p_source_88 => l_array_source_88(Idx)
421882  , p_source_91 => l_array_source_91(Idx)
421883  , p_source_92 => l_array_source_92(Idx)
421884  , p_source_93 => l_array_source_93(Idx)
421885  , p_source_94 => l_array_source_94(Idx)
421886  , p_source_95 => l_array_source_95(Idx)
421887  , p_source_97 => l_array_source_97(Idx)
421888  );
421889 If(l_balance_type_code = 'A') THEN
421890   l_actual_gain_loss_ref := l_gain_or_loss_ref;
421891 END IF;
421892 
421893 --
421894 
421895 
421896 --
421897 AcctLineType_263 (
421898  p_application_id  => p_application_id
421899  ,p_event_id     => l_event_id
421900  ,p_calculate_acctd_flag => l_calculate_acctd_flag
421901  ,p_calculate_g_l_flag => l_calculate_g_l_flag
421902  ,p_actual_flag => l_actual_flag
421903  ,p_balance_type_code => l_balance_type_code
421904  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
421905  
421906  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
421907  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
421908  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
421909  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
421910  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
421911  , p_source_15 => l_array_source_15(Idx)
421912  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
421913  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
421914  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
421915  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
421916  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
421917  , p_source_84 => l_array_source_84(Idx)
421918  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
421919  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
421920  , p_source_88 => l_array_source_88(Idx)
421921  , p_source_91 => l_array_source_91(Idx)
421922  , p_source_92 => l_array_source_92(Idx)
421923  , p_source_93 => l_array_source_93(Idx)
421924  , p_source_94 => l_array_source_94(Idx)
421925  , p_source_95 => l_array_source_95(Idx)
421926  , p_source_97 => l_array_source_97(Idx)
421927  , p_source_108 => l_array_source_108(Idx)
421928  );
421929 If(l_balance_type_code = 'A') THEN
421930   l_actual_gain_loss_ref := l_gain_or_loss_ref;
421931 END IF;
421932 
421933 --
421934 
421935 
421936 --
421937 AcctLineType_294 (
421938  p_application_id  => p_application_id
421939  ,p_event_id     => l_event_id
421940  ,p_calculate_acctd_flag => l_calculate_acctd_flag
421941  ,p_calculate_g_l_flag => l_calculate_g_l_flag
421942  ,p_actual_flag => l_actual_flag
421943  ,p_balance_type_code => l_balance_type_code
421944  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
421945  
421946  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
421947  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
421948  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
421949  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
421950  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
421951  , p_source_11 => l_array_source_11(Idx)
421952  , p_source_84 => l_array_source_84(Idx)
421953  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
421954  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
421955  , p_source_88 => l_array_source_88(Idx)
421956  , p_source_91 => l_array_source_91(Idx)
421957  , p_source_92 => l_array_source_92(Idx)
421958  , p_source_93 => l_array_source_93(Idx)
421959  , p_source_94 => l_array_source_94(Idx)
421960  , p_source_95 => l_array_source_95(Idx)
421961  , p_source_97 => l_array_source_97(Idx)
421962  );
421963 If(l_balance_type_code = 'A') THEN
421964   l_actual_gain_loss_ref := l_gain_or_loss_ref;
421965 END IF;
421966 
421967 --
421968 
421969 
421970 --
421971 AcctLineType_327 (
421972  p_application_id  => p_application_id
421973  ,p_event_id     => l_event_id
421974  ,p_calculate_acctd_flag => l_calculate_acctd_flag
421975  ,p_calculate_g_l_flag => l_calculate_g_l_flag
421976  ,p_actual_flag => l_actual_flag
421977  ,p_balance_type_code => l_balance_type_code
421978  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
421979  
421980  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
421981  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
421982  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
421983  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
421984  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
421985  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
421986  , p_source_84 => l_array_source_84(Idx)
421987  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
421988  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
421989  , p_source_88 => l_array_source_88(Idx)
421990  , p_source_91 => l_array_source_91(Idx)
421991  , p_source_92 => l_array_source_92(Idx)
421992  , p_source_93 => l_array_source_93(Idx)
421993  , p_source_94 => l_array_source_94(Idx)
421994  , p_source_95 => l_array_source_95(Idx)
421995  , p_source_97 => l_array_source_97(Idx)
421996  );
421997 If(l_balance_type_code = 'A') THEN
421998   l_actual_gain_loss_ref := l_gain_or_loss_ref;
421999 END IF;
422000 
422001 --
422002 
422003 
422004 --
422005 AcctLineType_384 (
422006  p_application_id  => p_application_id
422007  ,p_event_id     => l_event_id
422008  ,p_calculate_acctd_flag => l_calculate_acctd_flag
422009  ,p_calculate_g_l_flag => l_calculate_g_l_flag
422010  ,p_actual_flag => l_actual_flag
422011  ,p_balance_type_code => l_balance_type_code
422012  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
422013  
422014  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
422015  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
422016  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
422017  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
422018  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
422019  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
422020  , p_source_84 => l_array_source_84(Idx)
422021  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
422022  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
422023  , p_source_88 => l_array_source_88(Idx)
422024  , p_source_91 => l_array_source_91(Idx)
422025  , p_source_92 => l_array_source_92(Idx)
422026  , p_source_93 => l_array_source_93(Idx)
422027  , p_source_94 => l_array_source_94(Idx)
422028  , p_source_95 => l_array_source_95(Idx)
422029  , p_source_97 => l_array_source_97(Idx)
422030  , p_source_110 => l_array_source_110(Idx)
422031  , p_source_110_meaning => l_array_source_110_meaning(Idx)
422032  );
422033 If(l_balance_type_code = 'A') THEN
422034   l_actual_gain_loss_ref := l_gain_or_loss_ref;
422035 END IF;
422036 
422037 --
422038 
422039 
422040 --
422041 AcctLineType_465 (
422042  p_application_id  => p_application_id
422043  ,p_event_id     => l_event_id
422044  ,p_calculate_acctd_flag => l_calculate_acctd_flag
422045  ,p_calculate_g_l_flag => l_calculate_g_l_flag
422046  ,p_actual_flag => l_actual_flag
422047  ,p_balance_type_code => l_balance_type_code
422048  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
422049  
422050  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
422051  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
422052  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
422053  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
422054  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
422055  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
422056  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
422057  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
422058  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
422059  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
422060  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
422061  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
422062  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
422063  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
422064  , p_source_84 => l_array_source_84(Idx)
422065  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
422066  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
422067  , p_source_88 => l_array_source_88(Idx)
422068  , p_source_91 => l_array_source_91(Idx)
422069  , p_source_92 => l_array_source_92(Idx)
422070  , p_source_93 => l_array_source_93(Idx)
422071  , p_source_94 => l_array_source_94(Idx)
422072  , p_source_95 => l_array_source_95(Idx)
422073  , p_source_97 => l_array_source_97(Idx)
422074  , p_source_110 => l_array_source_110(Idx)
422075  , p_source_110_meaning => l_array_source_110_meaning(Idx)
422076  );
422077 If(l_balance_type_code = 'A') THEN
422078   l_actual_gain_loss_ref := l_gain_or_loss_ref;
422079 END IF;
422080 
422081 --
422082 
422083 
422084 --
422085 AcctLineType_532 (
422086  p_application_id  => p_application_id
422087  ,p_event_id     => l_event_id
422088  ,p_calculate_acctd_flag => l_calculate_acctd_flag
422089  ,p_calculate_g_l_flag => l_calculate_g_l_flag
422090  ,p_actual_flag => l_actual_flag
422091  ,p_balance_type_code => l_balance_type_code
422092  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
422093  
422094  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
422095  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
422096  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
422097  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
422098  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
422099  , p_source_11 => l_array_source_11(Idx)
422100  , p_source_84 => l_array_source_84(Idx)
422101  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
422102  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
422103  , p_source_88 => l_array_source_88(Idx)
422104  , p_source_91 => l_array_source_91(Idx)
422105  , p_source_92 => l_array_source_92(Idx)
422106  , p_source_93 => l_array_source_93(Idx)
422107  , p_source_94 => l_array_source_94(Idx)
422108  , p_source_95 => l_array_source_95(Idx)
422109  , p_source_97 => l_array_source_97(Idx)
422110  );
422111 If(l_balance_type_code = 'A') THEN
422112   l_actual_gain_loss_ref := l_gain_or_loss_ref;
422113 END IF;
422114 
422115 --
422116 
422117       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
422118       -- or secondary ledger that has different currency with primary
422119       -- or alc that is calculated by sla
422120       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
422121             (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'))
422122 
422123 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
422124 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
422125           AND (l_actual_flag = 'A')) THEN
422126         XLA_AE_LINES_PKG.CreateGainOrLossLines(
422127           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
422128          ,p_application_id   => p_application_id
422129          ,p_amb_context_code => 'DEFAULT'
422130          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
422131          ,p_event_class_code => C_EVENT_CLASS_CODE
422132          ,p_event_type_code  => C_EVENT_TYPE_CODE
422133          
422134          ,p_gain_ccid        => -1
422135          ,p_loss_ccid        => -1
422136 
422137          ,p_actual_flag      => l_actual_flag
422138          ,p_enc_flag         => null
422139          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
422140          ,p_enc_g_l_ref      => null
422141          );
422142       END IF;
422143    END IF;
422144 END IF;
422145 
422146    ELSE
422147       --
422148       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
422149       --
422150       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
422151          trace
422152             (p_msg      => 'Trancaction revesal option is Y'
422153             ,p_level    => C_LEVEL_STATEMENT
422154             ,p_module   => l_log_module);
422155       END IF;
422156    END IF;
422157 
422158 END LOOP;
422159 l_result := XLA_AE_LINES_PKG.InsertLines ;
422160 end loop;
422161 close line_cur;
422162 
422163 
422164 --
422165 -- insert headers into xla_ae_headers_gt table
422166 --
422167 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
422168 
422169 -- insert into errors table here.
422170 
422171 END LOOP;
422172 
422173 --
422174 -- 4865292
422175 --
422176 -- Compare g_hdr_extract_count with event count in
422177 -- CreateHeadersAndLines.
422178 --
422179 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
422180 
422181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
422182    trace (p_msg     => '# rows extracted from header extract objects '
422183                     || ' (running total): '
422184                     || g_hdr_extract_count
422185          ,p_level   => C_LEVEL_STATEMENT
422186          ,p_module  => l_log_module);
422187 END IF;
422188 
422189 CLOSE header_cur;
422190 --
422191 
422192 --
422193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
422194    trace
422195       (p_msg      => 'END of EventType_618'
422196       ,p_level    => C_LEVEL_PROCEDURE
422197       ,p_module   => l_log_module);
422198 END IF;
422199 --
422200 RETURN l_result;
422201 EXCEPTION
422202 WHEN xla_exceptions_pkg.application_exception THEN
422203    
422204 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
422205 
422206    
422207 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
422208 
422209    RAISE;
422210 
422211 WHEN NO_DATA_FOUND THEN
422212 
422213 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
422214 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
422215 
422216 FOR header_record IN header_cur
422217 LOOP
422218     l_array_header_events(header_record.event_id) := header_record.event_id;
422219 END LOOP;
422220 
422221 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
422222 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
422223 
422224 fnd_file.put_line(fnd_file.LOG, '                    ');
422225 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
422226 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
422227 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
422228 
422229 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
422230 LOOP
422231 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
422232 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
422233         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
422234 	END IF;
422235 END LOOP;
422236 
422237 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
422238 fnd_file.put_line(fnd_file.LOG, '                    ');
422239 
422240 
422241 xla_exceptions_pkg.raise_message
422242       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_618');
422243 
422244 
422245 WHEN OTHERS THEN
422246    xla_exceptions_pkg.raise_message
422247       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_618');
422248 END EventType_618;
422249 --
422250 
422251 ---------------------------------------
422252 --
422253 -- PRIVATE PROCEDURE
422254 --         insert_sources_619
422255 --
422256 ----------------------------------------
422257 --
422258 PROCEDURE insert_sources_619(
422259                                 p_target_ledger_id       IN NUMBER
422260                               , p_language               IN VARCHAR2
422261                               , p_sla_ledger_id          IN NUMBER
422262                               , p_pad_start_date         IN DATE
422263                               , p_pad_end_date           IN DATE
422264                          )
422265 IS
422266 
422267 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COMP_RETURN';
422268 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
422269 p_apps_owner                   VARCHAR2(30);
422270 l_log_module                   VARCHAR2(240);
422271 BEGIN
422272 IF g_log_enabled THEN
422273       l_log_module := C_DEFAULT_MODULE||'.insert_sources_619';
422274 END IF;
422275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
422276 
422277       trace
422278          (p_msg      => 'BEGIN of insert_sources_619'
422279          ,p_level    => C_LEVEL_PROCEDURE
422280          ,p_module   => l_log_module);
422281 
422282 END IF;
422283 
422284 -- select APPS owner
422285 SELECT oracle_username
422286   INTO p_apps_owner
422287   FROM fnd_oracle_userid
422288  WHERE read_only_flag = 'U'
422289 ;
422290 
422291 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
422292       trace
422293          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
422294                         ' - p_language = '||p_language||
422295                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
422296                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
422297                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
422298                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
422299          ,p_level    => C_LEVEL_STATEMENT
422300          ,p_module   => l_log_module);
422301 END IF;
422302 
422303 
422304 --
422305 INSERT INTO xla_diag_sources --hdr1
422306 (
422307         event_id
422308       , ledger_id
422309       , sla_ledger_id
422310       , description_language
422311       , object_name
422312       , object_type_code
422313       , line_number
422314       , source_application_id
422315       , source_type_code
422316       , source_code
422317       , source_value
422318       , source_meaning
422319       , created_by
422320       , creation_date
422321       , last_update_date
422322       , last_updated_by
422323       , last_update_login
422324       , program_update_date
422325       , program_application_id
422326       , program_id
422327       , request_id
422328 )
422329 SELECT
422330         event_id
422331       , p_target_ledger_id
422332       , p_sla_ledger_id
422333       , p_language
422334       , object_name
422335       , object_type_code
422336       , line_number
422337       , source_application_id
422338       , source_type_code
422339       , source_code
422340       , SUBSTR(source_value ,1,1996)
422341       , SUBSTR(source_meaning,1,200)
422342       , xla_environment_pkg.g_Usr_Id
422343       , TRUNC(SYSDATE)
422344       , TRUNC(SYSDATE)
422345       , xla_environment_pkg.g_Usr_Id
422346       , xla_environment_pkg.g_Login_Id
422347       , TRUNC(SYSDATE)
422348       , xla_environment_pkg.g_Prog_Appl_Id
422349       , xla_environment_pkg.g_Prog_Id
422350       , xla_environment_pkg.g_Req_Id
422351   FROM (
422352        SELECT xet.event_id                  event_id
422353             , 0                             line_number
422354             , CASE r
422355                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
422356                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
422357                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
422358                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
422359                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
422360                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
422361                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
422362                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
422363                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
422364                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
422365                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
422366                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
422367                 WHEN 13 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
422368                 WHEN 14 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
422369                 WHEN 15 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
422370                 WHEN 16 THEN 'CST_XLA_REP_ITEM_REF_V' 
422371                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
422372                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
422373                 WHEN 19 THEN 'CST_XLA_INV_HEADERS_V' 
422374                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
422375                 
422376                ELSE null
422377               END                           object_name
422378             , CASE r
422379                 WHEN 1 THEN 'HEADER' 
422380                 WHEN 2 THEN 'HEADER' 
422381                 WHEN 3 THEN 'HEADER' 
422382                 WHEN 4 THEN 'HEADER' 
422383                 WHEN 5 THEN 'HEADER' 
422384                 WHEN 6 THEN 'HEADER' 
422385                 WHEN 7 THEN 'HEADER' 
422386                 WHEN 8 THEN 'HEADER' 
422387                 WHEN 9 THEN 'HEADER' 
422388                 WHEN 10 THEN 'HEADER' 
422389                 WHEN 11 THEN 'HEADER' 
422390                 WHEN 12 THEN 'HEADER' 
422391                 WHEN 13 THEN 'HEADER' 
422392                 WHEN 14 THEN 'HEADER' 
422393                 WHEN 15 THEN 'HEADER' 
422394                 WHEN 16 THEN 'HEADER' 
422395                 WHEN 17 THEN 'HEADER' 
422396                 WHEN 18 THEN 'HEADER' 
422397                 WHEN 19 THEN 'HEADER' 
422398                 WHEN 20 THEN 'HEADER' 
422399                 
422400                 ELSE null
422401               END                           object_type_code
422402             , CASE r
422403                 WHEN 1 THEN '707' 
422404                 WHEN 2 THEN '707' 
422405                 WHEN 3 THEN '707' 
422406                 WHEN 4 THEN '707' 
422407                 WHEN 5 THEN '707' 
422408                 WHEN 6 THEN '707' 
422409                 WHEN 7 THEN '707' 
422410                 WHEN 8 THEN '707' 
422411                 WHEN 9 THEN '707' 
422412                 WHEN 10 THEN '707' 
422413                 WHEN 11 THEN '707' 
422414                 WHEN 12 THEN '707' 
422415                 WHEN 13 THEN '707' 
422416                 WHEN 14 THEN '707' 
422417                 WHEN 15 THEN '707' 
422418                 WHEN 16 THEN '707' 
422419                 WHEN 17 THEN '707' 
422420                 WHEN 18 THEN '707' 
422421                 WHEN 19 THEN '707' 
422422                 WHEN 20 THEN '707' 
422423                 
422424                 ELSE null
422425               END                           source_application_id
422426             , 'S'             source_type_code
422427             , CASE r
422428                 WHEN 1 THEN 'TRANSACTION_ID' 
422429                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
422430                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
422431                 WHEN 4 THEN 'TRANSACTION_UOM' 
422432                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
422433                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
422434                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
422435                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
422436                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
422437                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
422438                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
422439                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
422440                 WHEN 13 THEN 'DIS_JOB_BRIDGING_ACCT' 
422441                 WHEN 14 THEN 'WIP_ENTITY_TYPE' 
422442                 WHEN 15 THEN 'FLO_SCH_BRIDGING_ACCT' 
422443                 WHEN 16 THEN 'REP_ITM_BRIDGING_ACCT' 
422444                 WHEN 17 THEN 'TRANSACTION_SOURCE_ID' 
422445                 WHEN 18 THEN 'TRANSACTION_ACTION_ID' 
422446                 WHEN 19 THEN 'DISTRIBUTION_TYPE' 
422447                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
422448                 
422449                 ELSE null
422450               END                           source_code
422451             , CASE r
422452                 WHEN 1 THEN TO_CHAR(h3.TRANSACTION_ID)
422453                 WHEN 2 THEN TO_CHAR(h7.ITEM_CONCATENATED_SEGMENTS)
422454                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
422455                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
422456                 WHEN 5 THEN TO_CHAR(h8.INV_TXN_TYPE_DESCRIPTION)
422457                 WHEN 6 THEN TO_CHAR(h5.INV_TXN_DISTRIBUTION_ACCT)
422458                 WHEN 7 THEN TO_CHAR(h9.PLA_BRIDGING_ACCOUNT)
422459                 WHEN 8 THEN TO_CHAR(h9.PLA_MATERIAL_ACCOUNT)
422460                 WHEN 9 THEN TO_CHAR(h9.PLA_MATERIAL_OVERHEAD_ACCOUNT)
422461                 WHEN 10 THEN TO_CHAR(h9.PLA_RESOURCE_ACCOUNT)
422462                 WHEN 11 THEN TO_CHAR(h9.PLA_OUTSIDE_PROCESSING_ACCOUNT)
422463                 WHEN 12 THEN TO_CHAR(h9.PLA_OVERHEAD_ACCOUNT)
422464                 WHEN 13 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
422465                 WHEN 14 THEN TO_CHAR(h11.WIP_ENTITY_TYPE)
422466                 WHEN 15 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
422467                 WHEN 16 THEN TO_CHAR(h10.REP_ITM_BRIDGING_ACCT)
422468                 WHEN 17 THEN TO_CHAR(h5.TRANSACTION_SOURCE_ID)
422469                 WHEN 18 THEN TO_CHAR(h3.TRANSACTION_ACTION_ID)
422470                 WHEN 19 THEN TO_CHAR(h3.DISTRIBUTION_TYPE)
422471                 WHEN 20 THEN TO_CHAR(h3.TRANSFER_TO_GL_INDICATOR)
422472                 
422473                 ELSE null
422474               END                           source_value
422475             , CASE r
422476                 WHEN 14 THEN fvl55.meaning
422477                 WHEN 18 THEN fvl62.meaning
422478                 WHEN 19 THEN fvl85.meaning
422479                 WHEN 20 THEN fvl114.meaning
422480                 
422481                 ELSE null
422482               END               source_meaning
422483         FROM xla_events_gt     xet  
422484       , CST_XLA_DISCRETE_JOB_REF_V  h1
422485       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
422486       , CST_XLA_INV_HEADERS_V  h3
422487       , CST_XLA_INV_REF_V  h5
422488       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
422489       , CST_XLA_INV_TXN_TYPES_REF_V  h8
422490       , CST_XLA_PLA_CATEGORY_REF_V  h9
422491       , CST_XLA_REP_ITEM_REF_V  h10
422492       , CST_XLA_WIP_ENTITY_REF_V  h11
422493   , fnd_lookup_values    fvl55
422494   , fnd_lookup_values    fvl62
422495   , fnd_lookup_values    fvl85
422496   , fnd_lookup_values    fvl114
422497             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
422498        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
422499          AND xet.event_type_code = C_EVENT_TYPE_CODE
422500             AND h3.event_id = xet.event_id
422501  AND h1.dis_job_wip_entity_id  (+) = h5.transaction_source_id AND h2.flo_sch_wip_entity_id  (+) = h5.transaction_source_id AND h5.ref_transaction_id = h3.transaction_id AND h7.inventory_item_id = h3.inventory_item_id and h7.organization_id = h3.organization_id AND h8.inv_transaction_type_id = h3.transaction_type_id AND h9.pla_cat_organization_id  (+) = h3.organization_id 
422502 and h9.pla_cat_item_id          (+) = h3.inventory_item_id 
422503 and h9.pla_subinv_cg            (+) = h3.h_subinv_cg AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  and h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.wip_entity_id  (+) = h5.transaction_source_id   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
422504   AND fvl55.lookup_code(+)         = h11.WIP_ENTITY_TYPE
422505   AND fvl55.view_application_id(+) = 700
422506   AND fvl55.language(+)            = USERENV('LANG')
422507      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
422508   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
422509   AND fvl62.view_application_id(+) = 700
422510   AND fvl62.language(+)            = USERENV('LANG')
422511      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
422512   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
422513   AND fvl85.view_application_id(+) = 700
422514   AND fvl85.language(+)            = USERENV('LANG')
422515      AND fvl114.lookup_type(+)         = 'YES_NO'
422516   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
422517   AND fvl114.view_application_id(+) = 0
422518   AND fvl114.language(+)            = USERENV('LANG')
422519   
422520 )
422521 ;
422522 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
422523 
422524       trace
422525          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
422526          ,p_level    => C_LEVEL_STATEMENT
422527          ,p_module   => l_log_module);
422528 
422529 END IF;
422530 --
422531 
422532 
422533 
422534 --
422535 INSERT INTO xla_diag_sources --line1
422536 (
422537         event_id
422538       , ledger_id
422539       , sla_ledger_id
422540       , description_language
422541       , object_name
422542       , object_type_code
422543       , line_number
422544       , source_application_id
422545       , source_type_code
422546       , source_code
422547       , source_value
422548       , source_meaning
422549       , created_by
422550       , creation_date
422551       , last_update_date
422552       , last_updated_by
422553       , last_update_login
422554       , program_update_date
422555       , program_application_id
422556       , program_id
422557       , request_id
422558 )
422559 SELECT  event_id
422560       , p_target_ledger_id
422561       , p_sla_ledger_id
422562       , p_language
422563       , object_name
422564       , object_type_code
422565       , line_number
422566       , source_application_id
422567       , source_type_code
422568       , source_code
422569       , SUBSTR(source_value,1,1996)
422570       , SUBSTR(source_meaning,1,200)
422571       , xla_environment_pkg.g_Usr_Id
422572       , TRUNC(SYSDATE)
422573       , TRUNC(SYSDATE)
422574       , xla_environment_pkg.g_Usr_Id
422575       , xla_environment_pkg.g_Login_Id
422576       , TRUNC(SYSDATE)
422577       , xla_environment_pkg.g_Prog_Appl_Id
422578       , xla_environment_pkg.g_Prog_Id
422579       , xla_environment_pkg.g_Req_Id
422580   FROM (
422581        SELECT xet.event_id                  event_id
422582             , l4.line_number                 line_number
422583             , CASE r
422584                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
422585                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
422586                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
422587                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
422588                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
422589                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
422590                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
422591                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
422592                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
422593                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
422594                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
422595                 WHEN 12 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
422596                 
422597                ELSE null
422598               END                           object_name
422599             , CASE r
422600                 WHEN 1 THEN 'LINE' 
422601                 WHEN 2 THEN 'LINE' 
422602                 WHEN 3 THEN 'LINE' 
422603                 WHEN 4 THEN 'LINE' 
422604                 WHEN 5 THEN 'LINE' 
422605                 WHEN 6 THEN 'LINE' 
422606                 WHEN 7 THEN 'LINE' 
422607                 WHEN 8 THEN 'LINE' 
422608                 WHEN 9 THEN 'LINE' 
422609                 WHEN 10 THEN 'LINE' 
422610                 WHEN 11 THEN 'LINE' 
422611                 WHEN 12 THEN 'LINE' 
422612                 
422613                 ELSE null
422614               END                           object_type_code
422615             , CASE r
422616                 WHEN 1 THEN '707' 
422617                 WHEN 2 THEN '707' 
422618                 WHEN 3 THEN '707' 
422619                 WHEN 4 THEN '707' 
422620                 WHEN 5 THEN '707' 
422621                 WHEN 6 THEN '707' 
422622                 WHEN 7 THEN '707' 
422623                 WHEN 8 THEN '707' 
422624                 WHEN 9 THEN '707' 
422625                 WHEN 10 THEN '707' 
422626                 WHEN 11 THEN '707' 
422627                 WHEN 12 THEN '707' 
422628                 
422629                 ELSE null
422630               END                           source_application_id
422631             , 'S'             source_type_code
422632             , CASE r
422633                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
422634                 WHEN 2 THEN 'COST_ELEMENT_ID' 
422635                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
422636                 WHEN 4 THEN 'CURRENCY_CODE' 
422637                 WHEN 5 THEN 'ENTERED_AMOUNT' 
422638                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
422639                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
422640                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
422641                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
422642                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
422643                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
422644                 WHEN 12 THEN 'ASSET_INVENTORY' 
422645                 
422646                 ELSE null
422647               END                           source_code
422648             , CASE r
422649                 WHEN 1 THEN TO_CHAR(l4.CODE_COMBINATION_ID)
422650                 WHEN 2 THEN TO_CHAR(l4.COST_ELEMENT_ID)
422651                 WHEN 3 THEN TO_CHAR(l4.DISTRIBUTION_IDENTIFIER)
422652                 WHEN 4 THEN TO_CHAR(l4.CURRENCY_CODE)
422653                 WHEN 5 THEN TO_CHAR(l4.ENTERED_AMOUNT)
422654                 WHEN 6 THEN TO_CHAR(l4.CURRENCY_CONVERSION_DATE)
422655                 WHEN 7 THEN TO_CHAR(l4.CURRENCY_CONVERSION_RATE)
422656                 WHEN 8 THEN TO_CHAR(l4.CURRENCY_CONVERSION_TYPE)
422657                 WHEN 9 THEN TO_CHAR(l4.ACCOUNTED_AMOUNT)
422658                 WHEN 10 THEN TO_CHAR(l4.ACCOUNTING_LINE_TYPE_CODE)
422659                 WHEN 11 THEN TO_CHAR(l4.L_ORGANIZATION_CODE)
422660                 WHEN 12 THEN TO_CHAR(l6.ASSET_INVENTORY)
422661                 
422662                 ELSE null
422663               END                           source_value
422664             , CASE r
422665                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
422666                           1009615
422667                          ,TO_CHAR(l4.COST_ELEMENT_ID)
422668                          ,'COST_ELEMENT_ID'
422669                          ,'S'
422670                          ,707)
422671                 WHEN 12 THEN fvl110.meaning
422672                 
422673                 ELSE null
422674               END               source_meaning
422675          FROM  xla_events_gt     xet  
422676         , CST_XLA_INV_LINES_V  l4
422677         , CST_XLA_INV_SEC_INVS_REF_V  l6
422678   , fnd_lookup_values    fvl110
422679             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
422680         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
422681           AND xet.event_type_code = C_EVENT_TYPE_CODE
422682             AND l4.event_id          = xet.event_id
422683  AND l6.subinventory  (+) = l4.subinventory_code  and l6.subinv_organization_id  (+) = l4.l_organization_id   AND fvl110.lookup_type(+)         = 'YES_NO'
422684   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
422685   AND fvl110.view_application_id(+) = 0
422686   AND fvl110.language(+)            = USERENV('LANG')
422687   
422688 )
422689 ;
422690 --
422691 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
422692 
422693       trace
422694          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
422695          ,p_level    => C_LEVEL_STATEMENT
422696          ,p_module   => l_log_module);
422697 
422698 END IF;
422699 
422700 
422701 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
422702       trace
422703          (p_msg      => 'END of insert_sources_619'
422704          ,p_level    => C_LEVEL_PROCEDURE
422705          ,p_module   => l_log_module);
422706 END IF;
422707 EXCEPTION
422708   WHEN xla_exceptions_pkg.application_exception THEN
422709       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
422710             trace
422711                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
422712                ,p_level    => C_LEVEL_EXCEPTION
422713                ,p_module   => l_log_module);
422714       END IF;
422715       RAISE;
422716   WHEN OTHERS THEN
422717       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
422718             trace
422719                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
422720                ,p_level    => C_LEVEL_EXCEPTION
422721                ,p_module   => l_log_module);
422722        END IF;
422723        xla_exceptions_pkg.raise_message
422724            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_619');
422725 END insert_sources_619;
422726 --
422727 
422728 ---------------------------------------
422729 --
422730 -- PRIVATE FUNCTION
422731 --         EventType_619
422732 --
422733 ----------------------------------------
422734 --
422735 FUNCTION EventType_619
422736        (p_application_id         IN NUMBER
422737        ,p_base_ledger_id         IN NUMBER
422738        ,p_target_ledger_id       IN NUMBER
422739        ,p_language               IN VARCHAR2
422740        ,p_currency_code          IN VARCHAR2
422741        ,p_sla_ledger_id          IN NUMBER
422742        ,p_pad_start_date         IN DATE
422743        ,p_pad_end_date           IN DATE
422744        ,p_primary_ledger_id      IN NUMBER)
422745 RETURN BOOLEAN IS
422746 --
422747 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COMP_RETURN';
422748 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
422749 
422750 l_calculate_acctd_flag   VARCHAR2(1) :='N';
422751 l_calculate_g_l_flag     VARCHAR2(1) :='N';
422752 --
422753 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422754 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422755 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
422756 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
422757 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422758 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
422759 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
422760 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422761 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
422762 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
422763 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422764 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422765 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422766 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
422767 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
422768 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
422769 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
422770 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
422771 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
422772 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
422773 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
422774 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
422775 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
422776 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
422777 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
422778 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
422779 
422780 l_event_id                             NUMBER;
422781 l_previous_event_id                    NUMBER;
422782 l_first_event_id                       NUMBER;
422783 l_last_event_id                        NUMBER;
422784 
422785 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
422786 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
422787 --
422788 --
422789 l_result                    BOOLEAN := TRUE;
422790 l_rows                      NUMBER  := 1000;
422791 l_event_type_name           VARCHAR2(80) := 'WIP Component Return';
422792 l_event_class_name          VARCHAR2(80) := 'WIP Material';
422793 l_description               VARCHAR2(4000);
422794 l_transaction_reversal      NUMBER;
422795 l_ae_header_id              NUMBER;
422796 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
422797 l_log_module                VARCHAR2(240);
422798 --
422799 l_acct_reversal_source      VARCHAR2(30);
422800 l_trx_reversal_source       VARCHAR2(30);
422801 
422802 l_continue_with_lines       BOOLEAN := TRUE;
422803 --
422804 l_acc_rev_gl_date_source    DATE;                      -- 4262811
422805 --
422806 type t_array_event_id is table of number index by binary_integer;
422807 
422808 l_rec_array_event                    t_rec_array_event;
422809 l_null_rec_array_event               t_rec_array_event;
422810 l_array_ae_header_id                 xla_number_array_type;
422811 l_actual_flag                        VARCHAR2(1) := NULL;
422812 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
422813 l_balance_type_code                  VARCHAR2(1) :=NULL;
422814 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
422815 
422816 --
422817 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
422818 --
422819 
422820 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
422821 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
422822 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
422823 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
422824 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
422825 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
422826 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
422827 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
422828 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
422829 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
422830 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
422831 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
422832 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
422833 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
422834 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
422835 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
422836 TYPE t_array_source_61 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_SOURCE_ID%TYPE INDEX BY BINARY_INTEGER;
422837 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
422838 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
422839 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
422840 
422841 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
422842 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
422843 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
422844 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
422845 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
422846 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
422847 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
422848 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
422849 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
422850 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
422851 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
422852 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
422853 
422854 l_array_source_1              t_array_source_1;
422855 l_array_source_2              t_array_source_2;
422856 l_array_source_3              t_array_source_3;
422857 l_array_source_4              t_array_source_4;
422858 l_array_source_5              t_array_source_5;
422859 l_array_source_20              t_array_source_20;
422860 l_array_source_22              t_array_source_22;
422861 l_array_source_41              t_array_source_41;
422862 l_array_source_42              t_array_source_42;
422863 l_array_source_43              t_array_source_43;
422864 l_array_source_44              t_array_source_44;
422865 l_array_source_45              t_array_source_45;
422866 l_array_source_54              t_array_source_54;
422867 l_array_source_55              t_array_source_55;
422868 l_array_source_55_meaning      t_array_lookup_meaning;
422869 l_array_source_56              t_array_source_56;
422870 l_array_source_57              t_array_source_57;
422871 l_array_source_61              t_array_source_61;
422872 l_array_source_62              t_array_source_62;
422873 l_array_source_62_meaning      t_array_lookup_meaning;
422874 l_array_source_85              t_array_source_85;
422875 l_array_source_85_meaning      t_array_lookup_meaning;
422876 l_array_source_114              t_array_source_114;
422877 l_array_source_114_meaning      t_array_lookup_meaning;
422878 
422879 l_array_source_11      t_array_source_11;
422880 l_array_source_15      t_array_source_15;
422881 l_array_source_84      t_array_source_84;
422882 l_array_source_88      t_array_source_88;
422883 l_array_source_91      t_array_source_91;
422884 l_array_source_92      t_array_source_92;
422885 l_array_source_93      t_array_source_93;
422886 l_array_source_94      t_array_source_94;
422887 l_array_source_95      t_array_source_95;
422888 l_array_source_97      t_array_source_97;
422889 l_array_source_108      t_array_source_108;
422890 l_array_source_110      t_array_source_110;
422891 l_array_source_110_meaning      t_array_lookup_meaning;
422892 
422893 --
422894 CURSOR header_cur
422895 IS
422896 SELECT /*+ leading(xet) cardinality(xet,1) */
422897 -- Event Type Code: WIP_COMP_RETURN
422898 -- Event Class Code: WIP_MTL
422899     xet.entity_id
422900   , xet.legal_entity_id
422901   , xet.entity_code
422902   , xet.transaction_number
422903   , xet.event_id
422904   , xet.event_class_code
422905   , xet.event_type_code
422906   , xet.event_number
422907   , xet.event_date
422908   , xet.transaction_date
422909   , xet.reference_num_1
422910   , xet.reference_num_2
422911   , xet.reference_num_3
422912   , xet.reference_num_4
422913   , xet.reference_char_1
422914   , xet.reference_char_2
422915   , xet.reference_char_3
422916   , xet.reference_char_4
422917   , xet.reference_date_1
422918   , xet.reference_date_2
422919   , xet.reference_date_3
422920   , xet.reference_date_4
422921   , xet.event_created_by
422922   , xet.budgetary_control_flag 
422923   , h3.TRANSACTION_ID    source_1
422924   , h7.ITEM_CONCATENATED_SEGMENTS    source_2
422925   , h5.TRANSACTION_QUANTITY    source_3
422926   , h5.TRANSACTION_UOM    source_4
422927   , h8.INV_TXN_TYPE_DESCRIPTION    source_5
422928   , h5.INV_TXN_DISTRIBUTION_ACCT    source_20
422929   , h9.PLA_BRIDGING_ACCOUNT    source_22
422930   , h9.PLA_MATERIAL_ACCOUNT    source_41
422931   , h9.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
422932   , h9.PLA_RESOURCE_ACCOUNT    source_43
422933   , h9.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
422934   , h9.PLA_OVERHEAD_ACCOUNT    source_45
422935   , h1.DIS_JOB_BRIDGING_ACCT    source_54
422936   , h11.WIP_ENTITY_TYPE    source_55
422937   , fvl55.meaning   source_55_meaning
422938   , h2.FLO_SCH_BRIDGING_ACCT    source_56
422939   , h10.REP_ITM_BRIDGING_ACCT    source_57
422940   , h5.TRANSACTION_SOURCE_ID    source_61
422941   , h3.TRANSACTION_ACTION_ID    source_62
422942   , fvl62.meaning   source_62_meaning
422943   , h3.DISTRIBUTION_TYPE    source_85
422944   , fvl85.meaning   source_85_meaning
422945   , h3.TRANSFER_TO_GL_INDICATOR    source_114
422946   , fvl114.meaning   source_114_meaning
422947   FROM xla_events_gt     xet 
422948   , CST_XLA_DISCRETE_JOB_REF_V  h1
422949   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
422950   , CST_XLA_INV_HEADERS_V  h3
422951   , CST_XLA_INV_REF_V  h5
422952   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
422953   , CST_XLA_INV_TXN_TYPES_REF_V  h8
422954   , CST_XLA_PLA_CATEGORY_REF_V  h9
422955   , CST_XLA_REP_ITEM_REF_V  h10
422956   , CST_XLA_WIP_ENTITY_REF_V  h11
422957   , fnd_lookup_values    fvl55
422958   , fnd_lookup_values    fvl62
422959   , fnd_lookup_values    fvl85
422960   , fnd_lookup_values    fvl114
422961  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
422962    and xet.event_type_code = C_EVENT_TYPE_CODE
422963    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
422964  AND h1.DIS_JOB_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h2.FLO_SCH_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h5.ref_transaction_id = h3.transaction_id AND h7.INVENTORY_ITEM_ID = h3.INVENTORY_ITEM_ID AND h7.ORGANIZATION_ID = h3.ORGANIZATION_ID AND h8.INV_TRANSACTION_TYPE_ID = h3.TRANSACTION_TYPE_ID AND h9.PLA_CAT_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID 
422965 AND h9.PLA_CAT_ITEM_ID          (+) = h3.INVENTORY_ITEM_ID 
422966 AND h9.PLA_SUBINV_CG            (+) = h3.H_SUBINV_CG AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  AND h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
422967   AND fvl55.lookup_code(+)         = h11.WIP_ENTITY_TYPE
422968   AND fvl55.view_application_id(+) = 700
422969   AND fvl55.language(+)            = USERENV('LANG')
422970      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
422971   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
422972   AND fvl62.view_application_id(+) = 700
422973   AND fvl62.language(+)            = USERENV('LANG')
422974      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
422975   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
422976   AND fvl85.view_application_id(+) = 700
422977   AND fvl85.language(+)            = USERENV('LANG')
422978      AND fvl114.lookup_type(+)         = 'YES_NO'
422979   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
422980   AND fvl114.view_application_id(+) = 0
422981   AND fvl114.language(+)            = USERENV('LANG')
422982   
422983  ORDER BY event_id
422984 ;
422985 
422986 
422987 --
422988 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
422989 IS
422990 SELECT /*+ leading(xet) cardinality(xet,1) */
422991 -- Event Type Code: WIP_COMP_RETURN
422992 -- Event Class Code: WIP_MTL
422993     xet.entity_id
422994    ,xet.legal_entity_id
422995    ,xet.entity_code
422996    ,xet.transaction_number
422997    ,xet.event_id
422998    ,xet.event_class_code
422999    ,xet.event_type_code
423000    ,xet.event_number
423001    ,xet.event_date
423002    ,xet.transaction_date
423003    ,xet.reference_num_1
423004    ,xet.reference_num_2
423005    ,xet.reference_num_3
423006    ,xet.reference_num_4
423007    ,xet.reference_char_1
423008    ,xet.reference_char_2
423009    ,xet.reference_char_3
423010    ,xet.reference_char_4
423011    ,xet.reference_date_1
423012    ,xet.reference_date_2
423013    ,xet.reference_date_3
423014    ,xet.reference_date_4
423015    ,xet.event_created_by
423016    ,xet.budgetary_control_flag  , l4.LINE_NUMBER  
423017   , l4.CODE_COMBINATION_ID    source_11
423018   , l4.COST_ELEMENT_ID    source_15
423019   , l4.DISTRIBUTION_IDENTIFIER    source_84
423020   , l4.CURRENCY_CODE    source_88
423021   , l4.ENTERED_AMOUNT    source_91
423022   , l4.CURRENCY_CONVERSION_DATE    source_92
423023   , l4.CURRENCY_CONVERSION_RATE    source_93
423024   , l4.CURRENCY_CONVERSION_TYPE    source_94
423025   , l4.ACCOUNTED_AMOUNT    source_95
423026   , l4.ACCOUNTING_LINE_TYPE_CODE    source_97
423027   , l4.L_ORGANIZATION_CODE    source_108
423028   , l6.ASSET_INVENTORY    source_110
423029   , fvl110.meaning   source_110_meaning
423030   FROM xla_events_gt     xet 
423031   , CST_XLA_INV_LINES_V  l4
423032   , CST_XLA_INV_SEC_INVS_REF_V  l6
423033   , fnd_lookup_values    fvl110
423034  WHERE xet.event_id between x_first_event_id and x_last_event_id
423035    and xet.event_date between p_pad_start_date and p_pad_end_date
423036    and xet.event_type_code = C_EVENT_TYPE_CODE
423037    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
423038  AND l6.SUBINVENTORY  (+) = l4.SUBINVENTORY_CODE  AND l6.SUBINV_ORGANIZATION_ID  (+) = l4.L_ORGANIZATION_ID   AND fvl110.lookup_type(+)         = 'YES_NO'
423039   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
423040   AND fvl110.view_application_id(+) = 0
423041   AND fvl110.language(+)            = USERENV('LANG')
423042   ;
423043 
423044 --
423045 BEGIN
423046 IF g_log_enabled THEN
423047    l_log_module := C_DEFAULT_MODULE||'.EventType_619';
423048 END IF;
423049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
423050    trace
423051       (p_msg      => 'BEGIN of EventType_619'
423052       ,p_level    => C_LEVEL_PROCEDURE
423053       ,p_module   => l_log_module);
423054 END IF;
423055 
423056 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
423057    trace
423058       (p_msg      => 'p_application_id = '||p_application_id||
423059                      ' - p_base_ledger_id = '||p_base_ledger_id||
423060                      ' - p_target_ledger_id  = '||p_target_ledger_id||
423061                      ' - p_language = '||p_language||
423062                      ' - p_currency_code = '||p_currency_code||
423063                      ' - p_sla_ledger_id = '||p_sla_ledger_id
423064       ,p_level    => C_LEVEL_STATEMENT
423065       ,p_module   => l_log_module);
423066 END IF;
423067 --
423068 -- initialze arrays
423069 --
423070 g_array_event.DELETE;
423071 l_rec_array_event := l_null_rec_array_event;
423072 --
423073 --------------------------------------
423074 -- 4262811 Initialze MPA Line Number
423075 --------------------------------------
423076 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
423077 
423078 --
423079 
423080 --
423081 OPEN header_cur;
423082 --
423083 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
423084    trace
423085    (p_msg      => 'SQL - FETCH header_cur'
423086    ,p_level    => C_LEVEL_STATEMENT
423087    ,p_module   => l_log_module);
423088 END IF;
423089 --
423090 LOOP
423091 FETCH header_cur BULK COLLECT INTO
423092         l_array_entity_id
423093       , l_array_legal_entity_id
423094       , l_array_entity_code
423095       , l_array_transaction_num
423096       , l_array_event_id
423097       , l_array_class_code
423098       , l_array_event_type
423099       , l_array_event_number
423100       , l_array_event_date
423101       , l_array_transaction_date
423102       , l_array_reference_num_1
423103       , l_array_reference_num_2
423104       , l_array_reference_num_3
423105       , l_array_reference_num_4
423106       , l_array_reference_char_1
423107       , l_array_reference_char_2
423108       , l_array_reference_char_3
423109       , l_array_reference_char_4
423110       , l_array_reference_date_1
423111       , l_array_reference_date_2
423112       , l_array_reference_date_3
423113       , l_array_reference_date_4
423114       , l_array_event_created_by
423115       , l_array_budgetary_control_flag 
423116       , l_array_source_1
423117       , l_array_source_2
423118       , l_array_source_3
423119       , l_array_source_4
423120       , l_array_source_5
423121       , l_array_source_20
423122       , l_array_source_22
423123       , l_array_source_41
423124       , l_array_source_42
423125       , l_array_source_43
423126       , l_array_source_44
423127       , l_array_source_45
423128       , l_array_source_54
423129       , l_array_source_55
423130       , l_array_source_55_meaning
423131       , l_array_source_56
423132       , l_array_source_57
423133       , l_array_source_61
423134       , l_array_source_62
423135       , l_array_source_62_meaning
423136       , l_array_source_85
423137       , l_array_source_85_meaning
423138       , l_array_source_114
423139       , l_array_source_114_meaning
423140       LIMIT l_rows;
423141 --
423142 IF (C_LEVEL_EVENT >= g_log_level) THEN
423143    trace
423144    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
423145    ,p_level    => C_LEVEL_EVENT
423146    ,p_module   => l_log_module);
423147 END IF;
423148 --
423149 EXIT WHEN l_array_entity_id.COUNT = 0;
423150 
423151 -- initialize arrays
423152 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
423153 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
423154 
423155 --
423156 -- Bug 4458708
423157 --
423158 XLA_AE_LINES_PKG.g_LineNumber := 0;
423159 
423160 
423161 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
423162 g_last_hdr_idx := l_array_event_id.LAST;
423163 --
423164 -- loop for the headers. Each iteration is for each header extract row
423165 -- fetched in header cursor
423166 --
423167 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
423168 
423169 --
423170 -- set event info as cache for other routines to refer event attributes
423171 --
423172 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
423173    (p_application_id           => p_application_id
423174    ,p_primary_ledger_id        => p_primary_ledger_id
423175    ,p_base_ledger_id           => p_base_ledger_id
423176    ,p_target_ledger_id         => p_target_ledger_id
423177    ,p_entity_id                => l_array_entity_id(hdr_idx)
423178    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
423179    ,p_entity_code              => l_array_entity_code(hdr_idx)
423180    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
423181    ,p_event_id                 => l_array_event_id(hdr_idx)
423182    ,p_event_class_code         => l_array_class_code(hdr_idx)
423183    ,p_event_type_code          => l_array_event_type(hdr_idx)
423184    ,p_event_number             => l_array_event_number(hdr_idx)
423185    ,p_event_date               => l_array_event_date(hdr_idx)
423186    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
423187    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
423188    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
423189    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
423190    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
423191    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
423192    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
423193    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
423194    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
423195    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
423196    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
423197    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
423198    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
423199    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
423200    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
423201 
423202 --
423203 -- set the status of entry to C_VALID (0)
423204 --
423205 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
423206 
423207 --
423208 -- initialize a row for ae header
423209 --
423210 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
423211 
423212 l_event_id := l_array_event_id(hdr_idx);
423213 
423214 --
423215 -- storing the hdr_idx for event. May be used by line cursor.
423216 --
423217 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
423218 
423219 --
423220 -- store sources from header extract. This can be improved to
423221 -- store only those sources from header extract that may be used in lines
423222 --
423223 
423224 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
423225 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
423226 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
423227 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
423228 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
423229 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
423230 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
423231 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
423232 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
423233 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
423234 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
423235 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
423236 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
423237 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
423238 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
423239 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
423240 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
423241 g_array_event(l_event_id).array_value_num('source_61') := l_array_source_61(hdr_idx);
423242 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
423243 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
423244 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
423245 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
423246 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
423247 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
423248 
423249 --
423250 -- initilaize the status of ae headers for diffrent balance types
423251 -- the status is initialised to C_NOT_CREATED (2)
423252 --
423253 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
423254 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
423255 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
423256 
423257 --
423258 -- call api to validate and store accounting attributes for header
423259 --
423260 
423261 ------------------------------------------------------------
423262 -- Accrual Reversal : to get date for Standard Source (NONE)
423263 ------------------------------------------------------------
423264 l_acc_rev_gl_date_source := NULL;
423265 
423266      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
423267       l_rec_acct_attrs.array_date_value(1) := 
423268 xla_ae_sources_pkg.GetSystemSourceDate(
423269    p_source_code           => 'XLA_REFERENCE_DATE_1'
423270  , p_source_type_code      => 'Y'
423271  , p_source_application_id =>  602
423272 );
423273      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
423274       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
423275 
423276 
423277 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
423278 
423279 XLA_AE_HEADER_PKG.SetJeCategoryName;
423280 
423281 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
423282 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
423283 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
423284 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
423285 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
423286 
423287 
423288 --
423289 xla_ae_header_pkg.SetHdrDescription(
423290    p_description => Description_1 (
423291    p_application_id => p_application_id 
423292  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423293  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423294  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423295  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423296  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423297    )
423298 );
423299 --
423300 
423301 -- No header level analytical criteria
423302 
423303 --
423304 --accounting attribute enhancement, bug 3612931
423305 --
423306 l_trx_reversal_source := SUBSTR(NULL, 1,30);
423307 
423308 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
423309    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
423310 
423311    xla_accounting_err_pkg.build_message
423312       (p_appli_s_name            => 'XLA'
423313       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
423314       ,p_token_1                 => 'ACCT_ATTR_NAME'
423315       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
423316       ,p_token_2                 => 'PRODUCT_NAME'
423317       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
423318       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
423319       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
423320       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
423321 
423322 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
423323    --
423324    -- following sets the accounting attributes needed to reverse
423325    -- accounting for a distributeion
423326    --
423327    xla_ae_lines_pkg.SetTrxReversalAttrs
423328       (p_event_id              => l_event_id
423329       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
423330       ,p_trx_reversal_source   => l_trx_reversal_source);
423331 
423332 END IF;
423333 
423334 
423335 ----------------------------------------------------------------
423336 -- 4262811 -  update the header statuses to invalid in need be
423337 ----------------------------------------------------------------
423338 --
423339 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
423340 
423341 
423342   -----------------------------------------------
423343   -- No accrual reversal for the event class/type
423344   -----------------------------------------------
423345 ----------------------------------------------------------------
423346 
423347 --
423348 -- this ends the header loop iteration for one bulk fetch
423349 --
423350 END LOOP;
423351 
423352 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
423353 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
423354 
423355 --
423356 -- insert dummy rows into lines gt table that were created due to
423357 -- transaction reversals
423358 --
423359 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
423360    l_result := XLA_AE_LINES_PKG.InsertLines;
423361 END IF;
423362 
423363 --
423364 -- reset the temp_line_num for each set of events fetched from header
423365 -- cursor rather than doing it for each new event in line cursor
423366 -- Bug 3939231
423367 --
423368 xla_ae_lines_pkg.g_temp_line_num := 0;
423369 
423370 
423371 
423372 --
423373 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
423374 --
423375 --
423376 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
423377 
423378       trace
423379          (p_msg      => 'SQL - FETCH line_cur'
423380          ,p_level    => C_LEVEL_STATEMENT
423381          ,p_module   => l_log_module);
423382 
423383 END IF;
423384 --
423385 --
423386 LOOP
423387   --
423388   FETCH line_cur BULK COLLECT INTO
423389         l_array_entity_id
423390       , l_array_legal_entity_id
423391       , l_array_entity_code
423392       , l_array_transaction_num
423393       , l_array_event_id
423394       , l_array_class_code
423395       , l_array_event_type
423396       , l_array_event_number
423397       , l_array_event_date
423398       , l_array_transaction_date
423399       , l_array_reference_num_1
423400       , l_array_reference_num_2
423401       , l_array_reference_num_3
423402       , l_array_reference_num_4
423403       , l_array_reference_char_1
423404       , l_array_reference_char_2
423405       , l_array_reference_char_3
423406       , l_array_reference_char_4
423407       , l_array_reference_date_1
423408       , l_array_reference_date_2
423409       , l_array_reference_date_3
423410       , l_array_reference_date_4
423411       , l_array_event_created_by
423412       , l_array_budgetary_control_flag
423413       , l_array_extract_line_num 
423414       , l_array_source_11
423415       , l_array_source_15
423416       , l_array_source_84
423417       , l_array_source_88
423418       , l_array_source_91
423419       , l_array_source_92
423420       , l_array_source_93
423421       , l_array_source_94
423422       , l_array_source_95
423423       , l_array_source_97
423424       , l_array_source_108
423425       , l_array_source_110
423426       , l_array_source_110_meaning
423427       LIMIT l_rows;
423428 
423429   --
423430   IF (C_LEVEL_EVENT >= g_log_level) THEN
423431             trace
423432                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
423433                ,p_level    => C_LEVEL_EVENT
423434                ,p_module   => l_log_module);
423435   END IF;
423436   --
423437   EXIT WHEN l_array_entity_id.count = 0;
423438 
423439   XLA_AE_LINES_PKG.g_rec_lines := null;
423440 
423441 --
423442 -- Bug 4458708
423443 --
423444 XLA_AE_LINES_PKG.g_LineNumber := 0;
423445 --
423446 --
423447 
423448 FOR Idx IN 1..l_array_event_id.count LOOP
423449    --
423450    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
423451    --
423452    l_event_id := l_array_event_id(idx);  -- 5648433
423453 
423454    --
423455    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
423456    --
423457 
423458    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
423459              (g_array_event(l_event_id).array_value_num('header_index'))
423460          ,'N'
423461          ) <> 'Y'
423462    THEN
423463       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
423464          trace
423465             (p_msg      => 'Trancaction revesal option is not Y '
423466             ,p_level    => C_LEVEL_STATEMENT
423467             ,p_module   => l_log_module);
423468       END IF;
423469 
423470 --
423471 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
423472 --
423473 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
423474 --
423475 -- set event info as cache for other routines to refer event attributes
423476 --
423477 
423478 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
423479    l_previous_event_id := l_event_id;
423480 
423481    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
423482       (p_application_id           => p_application_id
423483       ,p_primary_ledger_id        => p_primary_ledger_id
423484       ,p_base_ledger_id           => p_base_ledger_id
423485       ,p_target_ledger_id         => p_target_ledger_id
423486       ,p_entity_id                => l_array_entity_id(Idx)
423487       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
423488       ,p_entity_code              => l_array_entity_code(Idx)
423489       ,p_transaction_num          => l_array_transaction_num(Idx)
423490       ,p_event_id                 => l_array_event_id(Idx)
423491       ,p_event_class_code         => l_array_class_code(Idx)
423492       ,p_event_type_code          => l_array_event_type(Idx)
423493       ,p_event_number             => l_array_event_number(Idx)
423494       ,p_event_date               => l_array_event_date(Idx)
423495       ,p_transaction_date         => l_array_transaction_date(Idx)
423496       ,p_reference_num_1          => l_array_reference_num_1(Idx)
423497       ,p_reference_num_2          => l_array_reference_num_2(Idx)
423498       ,p_reference_num_3          => l_array_reference_num_3(Idx)
423499       ,p_reference_num_4          => l_array_reference_num_4(Idx)
423500       ,p_reference_char_1         => l_array_reference_char_1(Idx)
423501       ,p_reference_char_2         => l_array_reference_char_2(Idx)
423502       ,p_reference_char_3         => l_array_reference_char_3(Idx)
423503       ,p_reference_char_4         => l_array_reference_char_4(Idx)
423504       ,p_reference_date_1         => l_array_reference_date_1(Idx)
423505       ,p_reference_date_2         => l_array_reference_date_2(Idx)
423506       ,p_reference_date_3         => l_array_reference_date_3(Idx)
423507       ,p_reference_date_4         => l_array_reference_date_4(Idx)
423508       ,p_event_created_by         => l_array_event_created_by(Idx)
423509       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
423510        --
423511 END IF;
423512 
423513 
423514 
423515 --
423516 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
423517 
423518 l_acct_reversal_source := SUBSTR(NULL, 1,30);
423519 
423520 IF l_continue_with_lines THEN
423521    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
423522       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
423523 
423524       xla_accounting_err_pkg.build_message
423525          (p_appli_s_name            => 'XLA'
423526          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
423527          ,p_token_1                 => 'LINE_NUMBER'
423528          ,p_value_1                 => l_array_extract_line_num(Idx)
423529          ,p_token_2                 => 'PRODUCT_NAME'
423530          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
423531          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
423532          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
423533          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
423534 
423535    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
423536       --
423537       -- following sets the accounting attributes needed to reverse
423538       -- accounting for a distributeion
423539       --
423540 
423541       --
423542       -- 5217187
423543       --
423544       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
423545       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
423546                                        g_array_event(l_event_id).array_value_num('header_index'));
423547       --
423548       --
423549 
423550       -- No reversal code generated
423551 
423552       xla_ae_lines_pkg.SetAcctReversalAttrs
423553          (p_event_id             => l_event_id
423554          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
423555          ,p_calculate_acctd_flag => l_calculate_acctd_flag
423556          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
423557    END IF;
423558 
423559    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
423560        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
423561 
423562 --
423563 AcctLineType_94 (
423564  p_application_id  => p_application_id
423565  ,p_event_id     => l_event_id
423566  ,p_calculate_acctd_flag => l_calculate_acctd_flag
423567  ,p_calculate_g_l_flag => l_calculate_g_l_flag
423568  ,p_actual_flag => l_actual_flag
423569  ,p_balance_type_code => l_balance_type_code
423570  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
423571  
423572  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423573  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423574  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423575  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423576  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423577  , p_source_11 => l_array_source_11(Idx)
423578  , p_source_84 => l_array_source_84(Idx)
423579  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
423580  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
423581  , p_source_88 => l_array_source_88(Idx)
423582  , p_source_91 => l_array_source_91(Idx)
423583  , p_source_92 => l_array_source_92(Idx)
423584  , p_source_93 => l_array_source_93(Idx)
423585  , p_source_94 => l_array_source_94(Idx)
423586  , p_source_95 => l_array_source_95(Idx)
423587  , p_source_97 => l_array_source_97(Idx)
423588  );
423589 If(l_balance_type_code = 'A') THEN
423590   l_actual_gain_loss_ref := l_gain_or_loss_ref;
423591 END IF;
423592 
423593 --
423594 
423595 
423596 --
423597 AcctLineType_264 (
423598  p_application_id  => p_application_id
423599  ,p_event_id     => l_event_id
423600  ,p_calculate_acctd_flag => l_calculate_acctd_flag
423601  ,p_calculate_g_l_flag => l_calculate_g_l_flag
423602  ,p_actual_flag => l_actual_flag
423603  ,p_balance_type_code => l_balance_type_code
423604  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
423605  
423606  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423607  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423608  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423609  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423610  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423611  , p_source_15 => l_array_source_15(Idx)
423612  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
423613  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
423614  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
423615  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
423616  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
423617  , p_source_84 => l_array_source_84(Idx)
423618  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
423619  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
423620  , p_source_88 => l_array_source_88(Idx)
423621  , p_source_91 => l_array_source_91(Idx)
423622  , p_source_92 => l_array_source_92(Idx)
423623  , p_source_93 => l_array_source_93(Idx)
423624  , p_source_94 => l_array_source_94(Idx)
423625  , p_source_95 => l_array_source_95(Idx)
423626  , p_source_97 => l_array_source_97(Idx)
423627  , p_source_108 => l_array_source_108(Idx)
423628  );
423629 If(l_balance_type_code = 'A') THEN
423630   l_actual_gain_loss_ref := l_gain_or_loss_ref;
423631 END IF;
423632 
423633 --
423634 
423635 
423636 --
423637 AcctLineType_308 (
423638  p_application_id  => p_application_id
423639  ,p_event_id     => l_event_id
423640  ,p_calculate_acctd_flag => l_calculate_acctd_flag
423641  ,p_calculate_g_l_flag => l_calculate_g_l_flag
423642  ,p_actual_flag => l_actual_flag
423643  ,p_balance_type_code => l_balance_type_code
423644  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
423645  
423646  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423647  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423648  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423649  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423650  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423651  , p_source_11 => l_array_source_11(Idx)
423652  , p_source_84 => l_array_source_84(Idx)
423653  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
423654  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
423655  , p_source_88 => l_array_source_88(Idx)
423656  , p_source_91 => l_array_source_91(Idx)
423657  , p_source_92 => l_array_source_92(Idx)
423658  , p_source_93 => l_array_source_93(Idx)
423659  , p_source_94 => l_array_source_94(Idx)
423660  , p_source_95 => l_array_source_95(Idx)
423661  , p_source_97 => l_array_source_97(Idx)
423662  );
423663 If(l_balance_type_code = 'A') THEN
423664   l_actual_gain_loss_ref := l_gain_or_loss_ref;
423665 END IF;
423666 
423667 --
423668 
423669 
423670 --
423671 AcctLineType_354 (
423672  p_application_id  => p_application_id
423673  ,p_event_id     => l_event_id
423674  ,p_calculate_acctd_flag => l_calculate_acctd_flag
423675  ,p_calculate_g_l_flag => l_calculate_g_l_flag
423676  ,p_actual_flag => l_actual_flag
423677  ,p_balance_type_code => l_balance_type_code
423678  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
423679  
423680  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423681  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423682  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423683  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423684  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423685  , p_source_11 => l_array_source_11(Idx)
423686  , p_source_84 => l_array_source_84(Idx)
423687  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
423688  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
423689  , p_source_88 => l_array_source_88(Idx)
423690  , p_source_91 => l_array_source_91(Idx)
423691  , p_source_92 => l_array_source_92(Idx)
423692  , p_source_93 => l_array_source_93(Idx)
423693  , p_source_94 => l_array_source_94(Idx)
423694  , p_source_95 => l_array_source_95(Idx)
423695  , p_source_97 => l_array_source_97(Idx)
423696  );
423697 If(l_balance_type_code = 'A') THEN
423698   l_actual_gain_loss_ref := l_gain_or_loss_ref;
423699 END IF;
423700 
423701 --
423702 
423703 
423704 --
423705 AcctLineType_392 (
423706  p_application_id  => p_application_id
423707  ,p_event_id     => l_event_id
423708  ,p_calculate_acctd_flag => l_calculate_acctd_flag
423709  ,p_calculate_g_l_flag => l_calculate_g_l_flag
423710  ,p_actual_flag => l_actual_flag
423711  ,p_balance_type_code => l_balance_type_code
423712  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
423713  
423714  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423715  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423716  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423717  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423718  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423719  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
423720  , p_source_84 => l_array_source_84(Idx)
423721  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
423722  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
423723  , p_source_88 => l_array_source_88(Idx)
423724  , p_source_91 => l_array_source_91(Idx)
423725  , p_source_92 => l_array_source_92(Idx)
423726  , p_source_93 => l_array_source_93(Idx)
423727  , p_source_94 => l_array_source_94(Idx)
423728  , p_source_95 => l_array_source_95(Idx)
423729  , p_source_97 => l_array_source_97(Idx)
423730  , p_source_110 => l_array_source_110(Idx)
423731  , p_source_110_meaning => l_array_source_110_meaning(Idx)
423732  );
423733 If(l_balance_type_code = 'A') THEN
423734   l_actual_gain_loss_ref := l_gain_or_loss_ref;
423735 END IF;
423736 
423737 --
423738 
423739 
423740 --
423741 AcctLineType_464 (
423742  p_application_id  => p_application_id
423743  ,p_event_id     => l_event_id
423744  ,p_calculate_acctd_flag => l_calculate_acctd_flag
423745  ,p_calculate_g_l_flag => l_calculate_g_l_flag
423746  ,p_actual_flag => l_actual_flag
423747  ,p_balance_type_code => l_balance_type_code
423748  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
423749  
423750  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423751  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423752  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423753  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423754  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423755  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
423756  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
423757  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
423758  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
423759  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
423760  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
423761  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
423762  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
423763  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
423764  , p_source_84 => l_array_source_84(Idx)
423765  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
423766  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
423767  , p_source_88 => l_array_source_88(Idx)
423768  , p_source_91 => l_array_source_91(Idx)
423769  , p_source_92 => l_array_source_92(Idx)
423770  , p_source_93 => l_array_source_93(Idx)
423771  , p_source_94 => l_array_source_94(Idx)
423772  , p_source_95 => l_array_source_95(Idx)
423773  , p_source_97 => l_array_source_97(Idx)
423774  , p_source_110 => l_array_source_110(Idx)
423775  , p_source_110_meaning => l_array_source_110_meaning(Idx)
423776  );
423777 If(l_balance_type_code = 'A') THEN
423778   l_actual_gain_loss_ref := l_gain_or_loss_ref;
423779 END IF;
423780 
423781 --
423782 
423783 
423784 --
423785 AcctLineType_525 (
423786  p_application_id  => p_application_id
423787  ,p_event_id     => l_event_id
423788  ,p_calculate_acctd_flag => l_calculate_acctd_flag
423789  ,p_calculate_g_l_flag => l_calculate_g_l_flag
423790  ,p_actual_flag => l_actual_flag
423791  ,p_balance_type_code => l_balance_type_code
423792  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
423793  
423794  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
423795  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
423796  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
423797  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
423798  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
423799  , p_source_11 => l_array_source_11(Idx)
423800  , p_source_84 => l_array_source_84(Idx)
423801  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
423802  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
423803  , p_source_88 => l_array_source_88(Idx)
423804  , p_source_91 => l_array_source_91(Idx)
423805  , p_source_92 => l_array_source_92(Idx)
423806  , p_source_93 => l_array_source_93(Idx)
423807  , p_source_94 => l_array_source_94(Idx)
423808  , p_source_95 => l_array_source_95(Idx)
423809  , p_source_97 => l_array_source_97(Idx)
423810  );
423811 If(l_balance_type_code = 'A') THEN
423812   l_actual_gain_loss_ref := l_gain_or_loss_ref;
423813 END IF;
423814 
423815 --
423816 
423817       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
423818       -- or secondary ledger that has different currency with primary
423819       -- or alc that is calculated by sla
423820       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
423821             (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'))
423822 
423823 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
423824 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
423825           AND (l_actual_flag = 'A')) THEN
423826         XLA_AE_LINES_PKG.CreateGainOrLossLines(
423827           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
423828          ,p_application_id   => p_application_id
423829          ,p_amb_context_code => 'DEFAULT'
423830          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
423831          ,p_event_class_code => C_EVENT_CLASS_CODE
423832          ,p_event_type_code  => C_EVENT_TYPE_CODE
423833          
423834          ,p_gain_ccid        => -1
423835          ,p_loss_ccid        => -1
423836 
423837          ,p_actual_flag      => l_actual_flag
423838          ,p_enc_flag         => null
423839          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
423840          ,p_enc_g_l_ref      => null
423841          );
423842       END IF;
423843    END IF;
423844 END IF;
423845 
423846    ELSE
423847       --
423848       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
423849       --
423850       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
423851          trace
423852             (p_msg      => 'Trancaction revesal option is Y'
423853             ,p_level    => C_LEVEL_STATEMENT
423854             ,p_module   => l_log_module);
423855       END IF;
423856    END IF;
423857 
423858 END LOOP;
423859 l_result := XLA_AE_LINES_PKG.InsertLines ;
423860 end loop;
423861 close line_cur;
423862 
423863 
423864 --
423865 -- insert headers into xla_ae_headers_gt table
423866 --
423867 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
423868 
423869 -- insert into errors table here.
423870 
423871 END LOOP;
423872 
423873 --
423874 -- 4865292
423875 --
423876 -- Compare g_hdr_extract_count with event count in
423877 -- CreateHeadersAndLines.
423878 --
423879 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
423880 
423881 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
423882    trace (p_msg     => '# rows extracted from header extract objects '
423883                     || ' (running total): '
423884                     || g_hdr_extract_count
423885          ,p_level   => C_LEVEL_STATEMENT
423886          ,p_module  => l_log_module);
423887 END IF;
423888 
423889 CLOSE header_cur;
423890 --
423891 
423892 --
423893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
423894    trace
423895       (p_msg      => 'END of EventType_619'
423896       ,p_level    => C_LEVEL_PROCEDURE
423897       ,p_module   => l_log_module);
423898 END IF;
423899 --
423900 RETURN l_result;
423901 EXCEPTION
423902 WHEN xla_exceptions_pkg.application_exception THEN
423903    
423904 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
423905 
423906    
423907 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
423908 
423909    RAISE;
423910 
423911 WHEN NO_DATA_FOUND THEN
423912 
423913 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
423914 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
423915 
423916 FOR header_record IN header_cur
423917 LOOP
423918     l_array_header_events(header_record.event_id) := header_record.event_id;
423919 END LOOP;
423920 
423921 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
423922 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
423923 
423924 fnd_file.put_line(fnd_file.LOG, '                    ');
423925 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
423926 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
423927 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
423928 
423929 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
423930 LOOP
423931 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
423932 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
423933         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
423934 	END IF;
423935 END LOOP;
423936 
423937 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
423938 fnd_file.put_line(fnd_file.LOG, '                    ');
423939 
423940 
423941 xla_exceptions_pkg.raise_message
423942       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_619');
423943 
423944 
423945 WHEN OTHERS THEN
423946    xla_exceptions_pkg.raise_message
423947       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_619');
423948 END EventType_619;
423949 --
423950 
423951 ---------------------------------------
423952 --
423953 -- PRIVATE PROCEDURE
423954 --         insert_sources_620
423955 --
423956 ----------------------------------------
423957 --
423958 PROCEDURE insert_sources_620(
423959                                 p_target_ledger_id       IN NUMBER
423960                               , p_language               IN VARCHAR2
423961                               , p_sla_ledger_id          IN NUMBER
423962                               , p_pad_start_date         IN DATE
423963                               , p_pad_end_date           IN DATE
423964                          )
423965 IS
423966 
423967 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_UPD_ALL';
423968 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST_UPD';
423969 p_apps_owner                   VARCHAR2(30);
423970 l_log_module                   VARCHAR2(240);
423971 BEGIN
423972 IF g_log_enabled THEN
423973       l_log_module := C_DEFAULT_MODULE||'.insert_sources_620';
423974 END IF;
423975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
423976 
423977       trace
423978          (p_msg      => 'BEGIN of insert_sources_620'
423979          ,p_level    => C_LEVEL_PROCEDURE
423980          ,p_module   => l_log_module);
423981 
423982 END IF;
423983 
423984 -- select APPS owner
423985 SELECT oracle_username
423986   INTO p_apps_owner
423987   FROM fnd_oracle_userid
423988  WHERE read_only_flag = 'U'
423989 ;
423990 
423991 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
423992       trace
423993          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
423994                         ' - p_language = '||p_language||
423995                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
423996                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
423997                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
423998                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
423999          ,p_level    => C_LEVEL_STATEMENT
424000          ,p_module   => l_log_module);
424001 END IF;
424002 
424003 
424004 --
424005 INSERT INTO xla_diag_sources --hdr2
424006 (
424007         event_id
424008       , ledger_id
424009       , sla_ledger_id
424010       , description_language
424011       , object_name
424012       , object_type_code
424013       , line_number
424014       , source_application_id
424015       , source_type_code
424016       , source_code
424017       , source_value
424018       , source_meaning
424019       , created_by
424020       , creation_date
424021       , last_update_date
424022       , last_updated_by
424023       , last_update_login
424024       , program_update_date
424025       , program_application_id
424026       , program_id
424027       , request_id
424028 )
424029 SELECT
424030         event_id
424031       , p_target_ledger_id
424032       , p_sla_ledger_id
424033       , p_language
424034       , object_name
424035       , object_type_code
424036       , line_number
424037       , source_application_id
424038       , source_type_code
424039       , source_code
424040       , SUBSTR(source_value ,1,1996)
424041       , SUBSTR(source_meaning ,1,200)
424042       , xla_environment_pkg.g_Usr_Id
424043       , TRUNC(SYSDATE)
424044       , TRUNC(SYSDATE)
424045       , xla_environment_pkg.g_Usr_Id
424046       , xla_environment_pkg.g_Login_Id
424047       , TRUNC(SYSDATE)
424048       , xla_environment_pkg.g_Prog_Appl_Id
424049       , xla_environment_pkg.g_Prog_Id
424050       , xla_environment_pkg.g_Req_Id
424051   FROM (
424052        SELECT xet.event_id                  event_id
424053             , 0                          line_number
424054             , CASE r
424055                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
424056                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
424057                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
424058                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
424059                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
424060                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
424061                 WHEN 7 THEN 'CST_XLA_WIP_HEADERS_V' 
424062                 WHEN 8 THEN 'CST_XLA_WIP_HEADERS_V' 
424063                 WHEN 9 THEN 'CST_XLA_WIP_HEADERS_V' 
424064                 WHEN 10 THEN 'CST_XLA_WIP_HEADERS_V' 
424065                 
424066                ELSE null
424067               END                           object_name
424068             , CASE r
424069                 WHEN 1 THEN 'HEADER' 
424070                 WHEN 2 THEN 'HEADER' 
424071                 WHEN 3 THEN 'HEADER' 
424072                 WHEN 4 THEN 'HEADER' 
424073                 WHEN 5 THEN 'HEADER' 
424074                 WHEN 6 THEN 'HEADER' 
424075                 WHEN 7 THEN 'HEADER' 
424076                 WHEN 8 THEN 'HEADER' 
424077                 WHEN 9 THEN 'HEADER' 
424078                 WHEN 10 THEN 'HEADER' 
424079                 
424080                 ELSE null
424081               END                           object_type_code
424082             , CASE r
424083                 WHEN 1 THEN '707' 
424084                 WHEN 2 THEN '707' 
424085                 WHEN 3 THEN '707' 
424086                 WHEN 4 THEN '707' 
424087                 WHEN 5 THEN '707' 
424088                 WHEN 6 THEN '707' 
424089                 WHEN 7 THEN '707' 
424090                 WHEN 8 THEN '707' 
424091                 WHEN 9 THEN '707' 
424092                 WHEN 10 THEN '707' 
424093                 
424094                 ELSE null
424095               END                           source_application_id
424096             , 'S'             source_type_code
424097             , CASE r
424098                 WHEN 1 THEN 'TRANSACTION_ID' 
424099                 WHEN 2 THEN 'TRANSACTION_UOM' 
424100                 WHEN 3 THEN 'PRIMARY_QUANTITY' 
424101                 WHEN 4 THEN 'WIP_TRANSACTION_TYPE_ID' 
424102                 WHEN 5 THEN 'DISTRIBUTION_TYPE' 
424103                 WHEN 6 THEN 'CURRENCY_CODE' 
424104                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
424105                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
424106                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
424107                 WHEN 10 THEN 'TRANSFER_TO_GL_INDICATOR' 
424108                 
424109                 ELSE null
424110               END                           source_code
424111             , CASE r
424112                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
424113                 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_UOM)
424114                 WHEN 3 THEN TO_CHAR(h1.PRIMARY_QUANTITY)
424115                 WHEN 4 THEN TO_CHAR(h1.WIP_TRANSACTION_TYPE_ID)
424116                 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
424117                 WHEN 6 THEN TO_CHAR(h1.CURRENCY_CODE)
424118                 WHEN 7 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
424119                 WHEN 8 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
424120                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
424121                 WHEN 10 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
424122                 
424123                 ELSE null
424124               END                           source_value
424125             , CASE r
424126                 WHEN 4 THEN fvl7.meaning
424127                 WHEN 5 THEN fvl85.meaning
424128                 WHEN 10 THEN fvl114.meaning
424129                 
424130                 ELSE null
424131               END               source_meaning
424132          FROM xla_events_gt     xet  
424133       , CST_XLA_WIP_HEADERS_V  h1
424134   , fnd_lookup_values    fvl7
424135   , fnd_lookup_values    fvl85
424136   , fnd_lookup_values    fvl114
424137              ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
424138          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
424139            AND xet.event_class_code = C_EVENT_CLASS_CODE
424140               AND h1.event_id = xet.event_id
424141    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
424142   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
424143   AND fvl7.view_application_id(+) = 700
424144   AND fvl7.language(+)            = USERENV('LANG')
424145      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
424146   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
424147   AND fvl85.view_application_id(+) = 700
424148   AND fvl85.language(+)            = USERENV('LANG')
424149      AND fvl114.lookup_type(+)         = 'YES_NO'
424150   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
424151   AND fvl114.view_application_id(+) = 0
424152   AND fvl114.language(+)            = USERENV('LANG')
424153   
424154 )
424155 ;
424156 --
424157 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
424158 
424159       trace
424160          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
424161          ,p_level    => C_LEVEL_STATEMENT
424162          ,p_module   => l_log_module);
424163 
424164 END IF;
424165 --
424166 
424167 
424168 
424169 --
424170 INSERT INTO xla_diag_sources  --line2
424171 (
424172         event_id
424173       , ledger_id
424174       , sla_ledger_id
424175       , description_language
424176       , object_name
424177       , object_type_code
424178       , line_number
424179       , source_application_id
424180       , source_type_code
424181       , source_code
424182       , source_value
424183       , source_meaning
424184       , created_by
424185       , creation_date
424186       , last_update_date
424187       , last_updated_by
424188       , last_update_login
424189       , program_update_date
424190       , program_application_id
424191       , program_id
424192       , request_id
424193 )
424194 SELECT  event_id
424195       , p_target_ledger_id
424196       , p_sla_ledger_id
424197       , p_language
424198       , object_name
424199       , object_type_code
424200       , line_number
424201       , source_application_id
424202       , source_type_code
424203       , source_code
424204       , SUBSTR(source_value,1,1996)
424205       , SUBSTR(source_meaning ,1,200)
424206       , xla_environment_pkg.g_Usr_Id
424207       , TRUNC(SYSDATE)
424208       , TRUNC(SYSDATE)
424209       , xla_environment_pkg.g_Usr_Id
424210       , xla_environment_pkg.g_Login_Id
424211       , TRUNC(SYSDATE)
424212       , xla_environment_pkg.g_Prog_Appl_Id
424213       , xla_environment_pkg.g_Prog_Id
424214       , xla_environment_pkg.g_Req_Id
424215   FROM (
424216        SELECT xet.event_id                  event_id
424217             , l2.line_number                 line_number
424218             , CASE r
424219                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
424220                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
424221                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
424222                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
424223                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
424224                 
424225                ELSE null
424226               END                           object_name
424227             , CASE r
424228                 WHEN 1 THEN 'LINE' 
424229                 WHEN 2 THEN 'LINE' 
424230                 WHEN 3 THEN 'LINE' 
424231                 WHEN 4 THEN 'LINE' 
424232                 WHEN 5 THEN 'LINE' 
424233                 
424234                 ELSE null
424235               END                           object_type_code
424236             , CASE r
424237                 WHEN 1 THEN '707' 
424238                 WHEN 2 THEN '707' 
424239                 WHEN 3 THEN '707' 
424240                 WHEN 4 THEN '707' 
424241                 WHEN 5 THEN '707' 
424242                 
424243                 ELSE null
424244               END                           source_application_id
424245             , 'S'             source_type_code
424246             , CASE r
424247                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
424248                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
424249                 WHEN 3 THEN 'ENTERED_AMOUNT' 
424250                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
424251                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
424252                 
424253                 ELSE null
424254               END                           source_code
424255             , CASE r
424256                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
424257                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
424258                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
424259                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
424260                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
424261                 
424262                 ELSE null
424263               END                           source_value
424264             , null              source_meaning
424265          FROM  xla_events_gt     xet  
424266         , CST_XLA_WIP_LINES_V  l2
424267             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
424268         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
424269           AND xet.event_class_code = C_EVENT_CLASS_CODE
424270             AND l2.event_id          = xet.event_id
424271 
424272 )
424273 ;
424274 --
424275 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
424276 
424277       trace
424278          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
424279          ,p_level    => C_LEVEL_STATEMENT
424280          ,p_module   => l_log_module);
424281 
424282 END IF;
424283 
424284 
424285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
424286       trace
424287          (p_msg      => 'END of insert_sources_620'
424288          ,p_level    => C_LEVEL_PROCEDURE
424289          ,p_module   => l_log_module);
424290 END IF;
424291 EXCEPTION
424292   WHEN xla_exceptions_pkg.application_exception THEN
424293       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
424294             trace
424295                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
424296                ,p_level    => C_LEVEL_EXCEPTION
424297                ,p_module   => l_log_module);
424298       END IF;
424299       RAISE;
424300   WHEN OTHERS THEN
424301       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
424302             trace
424303                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
424304                ,p_level    => C_LEVEL_EXCEPTION
424305                ,p_module   => l_log_module);
424306        END IF;
424307        xla_exceptions_pkg.raise_message
424308            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_620');
424309 END insert_sources_620;
424310 --
424311 
424312 ---------------------------------------
424313 --
424314 -- PRIVATE FUNCTION
424315 --         EventClass_620
424316 --
424317 ----------------------------------------
424318 --
424319 FUNCTION EventClass_620
424320        (p_application_id         IN NUMBER
424321        ,p_base_ledger_id         IN NUMBER
424322        ,p_target_ledger_id       IN NUMBER
424323        ,p_language               IN VARCHAR2
424324        ,p_currency_code          IN VARCHAR2
424325        ,p_sla_ledger_id          IN NUMBER
424326        ,p_pad_start_date         IN DATE
424327        ,p_pad_end_date           IN DATE
424328        ,p_primary_ledger_id      IN NUMBER)
424329 RETURN BOOLEAN IS
424330 --
424331 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_UPD_ALL';
424332 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST_UPD';
424333 
424334 l_calculate_acctd_flag   VARCHAR2(1) :='N';
424335 l_calculate_g_l_flag     VARCHAR2(1) :='N';
424336 --
424337 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424338 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424339 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
424340 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
424341 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424342 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
424343 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
424344 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424345 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
424346 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
424347 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424348 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424349 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424350 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
424351 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
424352 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
424353 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
424354 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
424355 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
424356 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
424357 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
424358 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
424359 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
424360 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
424361 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
424362 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
424363 
424364 l_event_id                             NUMBER;
424365 l_previous_event_id                    NUMBER;
424366 l_first_event_id                       NUMBER;
424367 l_last_event_id                        NUMBER;
424368 
424369 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
424370 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
424371 --
424372 --
424373 l_result                    BOOLEAN := TRUE;
424374 l_rows                      NUMBER  := 1000;
424375 l_event_type_name           VARCHAR2(80) := 'All';
424376 l_event_class_name          VARCHAR2(80) := 'WIP Cost Update';
424377 l_description               VARCHAR2(4000);
424378 l_transaction_reversal      NUMBER;
424379 l_ae_header_id              NUMBER;
424380 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
424381 l_log_module                VARCHAR2(240);
424382 --
424383 l_acct_reversal_source      VARCHAR2(30);
424384 l_trx_reversal_source       VARCHAR2(30);
424385 
424386 l_continue_with_lines       BOOLEAN := TRUE;
424387 --
424388 l_acc_rev_gl_date_source    DATE;                      -- 4262811
424389 --
424390 type t_array_event_id is table of number index by binary_integer;
424391 
424392 l_rec_array_event                    t_rec_array_event;
424393 l_null_rec_array_event               t_rec_array_event;
424394 l_array_ae_header_id                 xla_number_array_type;
424395 l_actual_flag                        VARCHAR2(1) := NULL;
424396 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
424397 l_balance_type_code                  VARCHAR2(1) :=NULL;
424398 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
424399 
424400 --
424401 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
424402 --
424403 
424404 TYPE t_array_source_1 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
424405 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
424406 TYPE t_array_source_6 IS TABLE OF CST_XLA_WIP_HEADERS_V.PRIMARY_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
424407 TYPE t_array_source_7 IS TABLE OF CST_XLA_WIP_HEADERS_V.WIP_TRANSACTION_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
424408 TYPE t_array_source_85 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
424409 TYPE t_array_source_88 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
424410 TYPE t_array_source_92 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
424411 TYPE t_array_source_93 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
424412 TYPE t_array_source_94 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
424413 TYPE t_array_source_114 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
424414 
424415 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
424416 TYPE t_array_source_84 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
424417 TYPE t_array_source_91 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
424418 TYPE t_array_source_95 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
424419 TYPE t_array_source_97 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
424420 
424421 l_array_source_1              t_array_source_1;
424422 l_array_source_4              t_array_source_4;
424423 l_array_source_6              t_array_source_6;
424424 l_array_source_7              t_array_source_7;
424425 l_array_source_7_meaning      t_array_lookup_meaning;
424426 l_array_source_85              t_array_source_85;
424427 l_array_source_85_meaning      t_array_lookup_meaning;
424428 l_array_source_88              t_array_source_88;
424429 l_array_source_92              t_array_source_92;
424430 l_array_source_93              t_array_source_93;
424431 l_array_source_94              t_array_source_94;
424432 l_array_source_114              t_array_source_114;
424433 l_array_source_114_meaning      t_array_lookup_meaning;
424434 
424435 l_array_source_11      t_array_source_11;
424436 l_array_source_84      t_array_source_84;
424437 l_array_source_91      t_array_source_91;
424438 l_array_source_95      t_array_source_95;
424439 l_array_source_97      t_array_source_97;
424440 
424441 --
424442 CURSOR header_cur
424443 IS
424444 SELECT /*+ leading(xet) cardinality(xet,1) */
424445 -- Event Class Code: WIP_COST_UPD
424446     xet.entity_id
424447    ,xet.legal_entity_id
424448    ,xet.entity_code
424449    ,xet.transaction_number
424450    ,xet.event_id
424451    ,xet.event_class_code
424452    ,xet.event_type_code
424453    ,xet.event_number
424454    ,xet.event_date
424455    ,xet.transaction_date
424456    ,xet.reference_num_1
424457    ,xet.reference_num_2
424458    ,xet.reference_num_3
424459    ,xet.reference_num_4
424460    ,xet.reference_char_1
424461    ,xet.reference_char_2
424462    ,xet.reference_char_3
424463    ,xet.reference_char_4
424464    ,xet.reference_date_1
424465    ,xet.reference_date_2
424466    ,xet.reference_date_3
424467    ,xet.reference_date_4
424468    ,xet.event_created_by
424469    ,xet.budgetary_control_flag 
424470   , h1.TRANSACTION_ID    source_1
424471   , h1.TRANSACTION_UOM    source_4
424472   , h1.PRIMARY_QUANTITY    source_6
424473   , h1.WIP_TRANSACTION_TYPE_ID    source_7
424474   , fvl7.meaning   source_7_meaning
424475   , h1.DISTRIBUTION_TYPE    source_85
424476   , fvl85.meaning   source_85_meaning
424477   , h1.CURRENCY_CODE    source_88
424478   , h1.CURRENCY_CONVERSION_DATE    source_92
424479   , h1.CURRENCY_CONVERSION_RATE    source_93
424480   , h1.CURRENCY_CONVERSION_TYPE    source_94
424481   , h1.TRANSFER_TO_GL_INDICATOR    source_114
424482   , fvl114.meaning   source_114_meaning
424483   FROM xla_events_gt     xet 
424484   , CST_XLA_WIP_HEADERS_V  h1
424485   , fnd_lookup_values    fvl7
424486   , fnd_lookup_values    fvl85
424487   , fnd_lookup_values    fvl114
424488  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
424489    and xet.event_class_code = C_EVENT_CLASS_CODE
424490    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
424491    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
424492   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
424493   AND fvl7.view_application_id(+) = 700
424494   AND fvl7.language(+)            = USERENV('LANG')
424495      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
424496   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
424497   AND fvl85.view_application_id(+) = 700
424498   AND fvl85.language(+)            = USERENV('LANG')
424499      AND fvl114.lookup_type(+)         = 'YES_NO'
424500   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
424501   AND fvl114.view_application_id(+) = 0
424502   AND fvl114.language(+)            = USERENV('LANG')
424503   
424504  ORDER BY event_id
424505 ;
424506 
424507 
424508 --
424509 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
424510 IS
424511 SELECT  /*+ leading(xet) cardinality(xet,1) */
424512 -- Event Class Code: WIP_COST_UPD
424513     xet.entity_id
424514    ,xet.legal_entity_id
424515    ,xet.entity_code
424516    ,xet.transaction_number
424517    ,xet.event_id
424518    ,xet.event_class_code
424519    ,xet.event_type_code
424520    ,xet.event_number
424521    ,xet.event_date
424522    ,xet.transaction_date
424523    ,xet.reference_num_1
424524    ,xet.reference_num_2
424525    ,xet.reference_num_3
424526    ,xet.reference_num_4
424527    ,xet.reference_char_1
424528    ,xet.reference_char_2
424529    ,xet.reference_char_3
424530    ,xet.reference_char_4
424531    ,xet.reference_date_1
424532    ,xet.reference_date_2
424533    ,xet.reference_date_3
424534    ,xet.reference_date_4
424535    ,xet.event_created_by
424536    ,xet.budgetary_control_flag
424537  , l2.LINE_NUMBER  
424538   , l2.CODE_COMBINATION_ID    source_11
424539   , l2.DISTRIBUTION_IDENTIFIER    source_84
424540   , l2.ENTERED_AMOUNT    source_91
424541   , l2.ACCOUNTED_AMOUNT    source_95
424542   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
424543   FROM xla_events_gt     xet 
424544   , CST_XLA_WIP_LINES_V  l2
424545  WHERE xet.event_id between x_first_event_id and x_last_event_id
424546    and xet.event_date between p_pad_start_date and p_pad_end_date
424547    and xet.event_class_code = C_EVENT_CLASS_CODE
424548    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
424549 ;
424550 
424551 --
424552 BEGIN
424553 IF g_log_enabled THEN
424554    l_log_module := C_DEFAULT_MODULE||'.EventClass_620';
424555 END IF;
424556 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
424557    trace
424558       (p_msg      => 'BEGIN of EventClass_620'
424559       ,p_level    => C_LEVEL_PROCEDURE
424560       ,p_module   => l_log_module);
424561 END IF;
424562 
424563 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
424564    trace
424565       (p_msg      => 'p_application_id = '||p_application_id||
424566                      ' - p_base_ledger_id = '||p_base_ledger_id||
424567                      ' - p_target_ledger_id  = '||p_target_ledger_id||
424568                      ' - p_language = '||p_language||
424569                      ' - p_currency_code = '||p_currency_code||
424570                      ' - p_sla_ledger_id = '||p_sla_ledger_id
424571       ,p_level    => C_LEVEL_STATEMENT
424572       ,p_module   => l_log_module);
424573 END IF;
424574 --
424575 -- initialze arrays
424576 --
424577 g_array_event.DELETE;
424578 l_rec_array_event := l_null_rec_array_event;
424579 --
424580 --------------------------------------
424581 -- 4262811 Initialze MPA Line Number
424582 --------------------------------------
424583 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
424584 
424585 --
424586 
424587 --
424588 OPEN header_cur;
424589 --
424590 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
424591    trace
424592    (p_msg      => 'SQL - FETCH header_cur'
424593    ,p_level    => C_LEVEL_STATEMENT
424594    ,p_module   => l_log_module);
424595 END IF;
424596 --
424597 LOOP
424598 FETCH header_cur BULK COLLECT INTO
424599         l_array_entity_id
424600       , l_array_legal_entity_id
424601       , l_array_entity_code
424602       , l_array_transaction_num
424603       , l_array_event_id
424604       , l_array_class_code
424605       , l_array_event_type
424606       , l_array_event_number
424607       , l_array_event_date
424608       , l_array_transaction_date
424609       , l_array_reference_num_1
424610       , l_array_reference_num_2
424611       , l_array_reference_num_3
424612       , l_array_reference_num_4
424613       , l_array_reference_char_1
424614       , l_array_reference_char_2
424615       , l_array_reference_char_3
424616       , l_array_reference_char_4
424617       , l_array_reference_date_1
424618       , l_array_reference_date_2
424619       , l_array_reference_date_3
424620       , l_array_reference_date_4
424621       , l_array_event_created_by
424622       , l_array_budgetary_control_flag 
424623       , l_array_source_1
424624       , l_array_source_4
424625       , l_array_source_6
424626       , l_array_source_7
424627       , l_array_source_7_meaning
424628       , l_array_source_85
424629       , l_array_source_85_meaning
424630       , l_array_source_88
424631       , l_array_source_92
424632       , l_array_source_93
424633       , l_array_source_94
424634       , l_array_source_114
424635       , l_array_source_114_meaning
424636       LIMIT l_rows;
424637 --
424638 IF (C_LEVEL_EVENT >= g_log_level) THEN
424639    trace
424640    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
424641    ,p_level    => C_LEVEL_EVENT
424642    ,p_module   => l_log_module);
424643 END IF;
424644 --
424645 EXIT WHEN l_array_entity_id.COUNT = 0;
424646 
424647 -- initialize arrays
424648 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
424649 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
424650 
424651 --
424652 -- Bug 4458708
424653 --
424654 XLA_AE_LINES_PKG.g_LineNumber := 0;
424655 
424656 
424657 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
424658 g_last_hdr_idx := l_array_event_id.LAST;
424659 --
424660 -- loop for the headers. Each iteration is for each header extract row
424661 -- fetched in header cursor
424662 --
424663 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
424664 
424665 --
424666 -- set event info as cache for other routines to refer event attributes
424667 --
424668 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
424669    (p_application_id           => p_application_id
424670    ,p_primary_ledger_id        => p_primary_ledger_id
424671    ,p_base_ledger_id           => p_base_ledger_id
424672    ,p_target_ledger_id         => p_target_ledger_id
424673    ,p_entity_id                => l_array_entity_id(hdr_idx)
424674    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
424675    ,p_entity_code              => l_array_entity_code(hdr_idx)
424676    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
424677    ,p_event_id                 => l_array_event_id(hdr_idx)
424678    ,p_event_class_code         => l_array_class_code(hdr_idx)
424679    ,p_event_type_code          => l_array_event_type(hdr_idx)
424680    ,p_event_number             => l_array_event_number(hdr_idx)
424681    ,p_event_date               => l_array_event_date(hdr_idx)
424682    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
424683    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
424684    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
424685    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
424686    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
424687    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
424688    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
424689    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
424690    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
424691    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
424692    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
424693    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
424694    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
424695    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
424696    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
424697 
424698 --
424699 -- set the status of entry to C_VALID (0)
424700 --
424701 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
424702 
424703 --
424704 -- initialize a row for ae header
424705 --
424706 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
424707 
424708 l_event_id := l_array_event_id(hdr_idx);
424709 
424710 --
424711 -- storing the hdr_idx for event. May be used by line cursor.
424712 --
424713 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
424714 
424715 --
424716 -- store sources from header extract. This can be improved to
424717 -- store only those sources from header extract that may be used in lines
424718 --
424719 
424720 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
424721 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
424722 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
424723 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
424724 g_array_event(l_event_id).array_value_char('source_7_meaning') := l_array_source_7_meaning(hdr_idx);
424725 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
424726 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
424727 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
424728 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
424729 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
424730 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
424731 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
424732 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
424733 
424734 --
424735 -- initilaize the status of ae headers for diffrent balance types
424736 -- the status is initialised to C_NOT_CREATED (2)
424737 --
424738 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
424739 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
424740 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
424741 
424742 --
424743 -- call api to validate and store accounting attributes for header
424744 --
424745 
424746 ------------------------------------------------------------
424747 -- Accrual Reversal : to get date for Standard Source (NONE)
424748 ------------------------------------------------------------
424749 l_acc_rev_gl_date_source := NULL;
424750 
424751      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
424752       l_rec_acct_attrs.array_date_value(1) := 
424753 xla_ae_sources_pkg.GetSystemSourceDate(
424754    p_source_code           => 'XLA_REFERENCE_DATE_1'
424755  , p_source_type_code      => 'Y'
424756  , p_source_application_id =>  602
424757 );
424758      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
424759       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
424760 
424761 
424762 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
424763 
424764 XLA_AE_HEADER_PKG.SetJeCategoryName;
424765 
424766 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
424767 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
424768 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
424769 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
424770 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
424771 
424772 
424773 --
424774 xla_ae_header_pkg.SetHdrDescription(
424775    p_description => Description_2 (
424776    p_application_id => p_application_id 
424777  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
424778  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
424779  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
424780  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
424781  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
424782    )
424783 );
424784 --
424785 
424786 -- No header level analytical criteria
424787 
424788 --
424789 --accounting attribute enhancement, bug 3612931
424790 --
424791 l_trx_reversal_source := SUBSTR(NULL, 1,30);
424792 
424793 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
424794    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
424795 
424796    xla_accounting_err_pkg.build_message
424797       (p_appli_s_name            => 'XLA'
424798       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
424799       ,p_token_1                 => 'ACCT_ATTR_NAME'
424800       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
424801       ,p_token_2                 => 'PRODUCT_NAME'
424802       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
424803       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
424804       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
424805       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
424806 
424807 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
424808    --
424809    -- following sets the accounting attributes needed to reverse
424810    -- accounting for a distributeion
424811    --
424812    xla_ae_lines_pkg.SetTrxReversalAttrs
424813       (p_event_id              => l_event_id
424814       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
424815       ,p_trx_reversal_source   => l_trx_reversal_source);
424816 
424817 END IF;
424818 
424819 
424820 ----------------------------------------------------------------
424821 -- 4262811 -  update the header statuses to invalid in need be
424822 ----------------------------------------------------------------
424823 --
424824 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
424825 
424826 
424827   -----------------------------------------------
424828   -- No accrual reversal for the event class/type
424829   -----------------------------------------------
424830 ----------------------------------------------------------------
424831 
424832 --
424833 -- this ends the header loop iteration for one bulk fetch
424834 --
424835 END LOOP;
424836 
424837 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
424838 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
424839 
424840 --
424841 -- insert dummy rows into lines gt table that were created due to
424842 -- transaction reversals
424843 --
424844 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
424845    l_result := XLA_AE_LINES_PKG.InsertLines;
424846 END IF;
424847 
424848 --
424849 -- reset the temp_line_num for each set of events fetched from header
424850 -- cursor rather than doing it for each new event in line cursor
424851 -- Bug 3939231
424852 --
424853 xla_ae_lines_pkg.g_temp_line_num := 0;
424854 
424855 
424856 
424857 --
424858 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
424859 --
424860 --
424861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
424862 
424863       trace
424864          (p_msg      => 'SQL - FETCH line_cur'
424865          ,p_level    => C_LEVEL_STATEMENT
424866          ,p_module   => l_log_module);
424867 
424868 END IF;
424869 --
424870 --
424871 LOOP
424872   --
424873   FETCH line_cur BULK COLLECT INTO
424874         l_array_entity_id
424875       , l_array_legal_entity_id
424876       , l_array_entity_code
424877       , l_array_transaction_num
424878       , l_array_event_id
424879       , l_array_class_code
424880       , l_array_event_type
424881       , l_array_event_number
424882       , l_array_event_date
424883       , l_array_transaction_date
424884       , l_array_reference_num_1
424885       , l_array_reference_num_2
424886       , l_array_reference_num_3
424887       , l_array_reference_num_4
424888       , l_array_reference_char_1
424889       , l_array_reference_char_2
424890       , l_array_reference_char_3
424891       , l_array_reference_char_4
424892       , l_array_reference_date_1
424893       , l_array_reference_date_2
424894       , l_array_reference_date_3
424895       , l_array_reference_date_4
424896       , l_array_event_created_by
424897       , l_array_budgetary_control_flag
424898       , l_array_extract_line_num 
424899       , l_array_source_11
424900       , l_array_source_84
424901       , l_array_source_91
424902       , l_array_source_95
424903       , l_array_source_97
424904       LIMIT l_rows;
424905 
424906   --
424907   IF (C_LEVEL_EVENT >= g_log_level) THEN
424908             trace
424909                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
424910                ,p_level    => C_LEVEL_EVENT
424911                ,p_module   => l_log_module);
424912   END IF;
424913   --
424914   EXIT WHEN l_array_entity_id.count = 0;
424915 
424916   XLA_AE_LINES_PKG.g_rec_lines := null;
424917 
424918 --
424919 -- Bug 4458708
424920 --
424921 XLA_AE_LINES_PKG.g_LineNumber := 0;
424922 --
424923 --
424924 
424925 FOR Idx IN 1..l_array_event_id.count LOOP
424926    --
424927    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
424928    --
424929    l_event_id := l_array_event_id(idx);  -- 5648433
424930 
424931    --
424932    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
424933    --
424934 
424935    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
424936              (g_array_event(l_event_id).array_value_num('header_index'))
424937          ,'N'
424938          ) <> 'Y'
424939    THEN
424940       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
424941          trace
424942             (p_msg      => 'Trancaction revesal option is not Y '
424943             ,p_level    => C_LEVEL_STATEMENT
424944             ,p_module   => l_log_module);
424945       END IF;
424946 
424947 --
424948 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
424949 --
424950 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
424951 --
424952 -- set event info as cache for other routines to refer event attributes
424953 --
424954 
424955 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
424956    l_previous_event_id := l_event_id;
424957 
424958    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
424959       (p_application_id           => p_application_id
424960       ,p_primary_ledger_id        => p_primary_ledger_id
424961       ,p_base_ledger_id           => p_base_ledger_id
424962       ,p_target_ledger_id         => p_target_ledger_id
424963       ,p_entity_id                => l_array_entity_id(Idx)
424964       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
424965       ,p_entity_code              => l_array_entity_code(Idx)
424966       ,p_transaction_num          => l_array_transaction_num(Idx)
424967       ,p_event_id                 => l_array_event_id(Idx)
424968       ,p_event_class_code         => l_array_class_code(Idx)
424969       ,p_event_type_code          => l_array_event_type(Idx)
424970       ,p_event_number             => l_array_event_number(Idx)
424971       ,p_event_date               => l_array_event_date(Idx)
424972       ,p_transaction_date         => l_array_transaction_date(Idx)
424973       ,p_reference_num_1          => l_array_reference_num_1(Idx)
424974       ,p_reference_num_2          => l_array_reference_num_2(Idx)
424975       ,p_reference_num_3          => l_array_reference_num_3(Idx)
424976       ,p_reference_num_4          => l_array_reference_num_4(Idx)
424977       ,p_reference_char_1         => l_array_reference_char_1(Idx)
424978       ,p_reference_char_2         => l_array_reference_char_2(Idx)
424979       ,p_reference_char_3         => l_array_reference_char_3(Idx)
424980       ,p_reference_char_4         => l_array_reference_char_4(Idx)
424981       ,p_reference_date_1         => l_array_reference_date_1(Idx)
424982       ,p_reference_date_2         => l_array_reference_date_2(Idx)
424983       ,p_reference_date_3         => l_array_reference_date_3(Idx)
424984       ,p_reference_date_4         => l_array_reference_date_4(Idx)
424985       ,p_event_created_by         => l_array_event_created_by(Idx)
424986       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
424987        --
424988 END IF;
424989 
424990 
424991 
424992 --
424993 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
424994 
424995 l_acct_reversal_source := SUBSTR(NULL, 1,30);
424996 
424997 IF l_continue_with_lines THEN
424998    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
424999       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
425000 
425001       xla_accounting_err_pkg.build_message
425002          (p_appli_s_name            => 'XLA'
425003          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
425004          ,p_token_1                 => 'LINE_NUMBER'
425005          ,p_value_1                 => l_array_extract_line_num(Idx)
425006          ,p_token_2                 => 'PRODUCT_NAME'
425007          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
425008          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
425009          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
425010          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
425011 
425012    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
425013       --
425014       -- following sets the accounting attributes needed to reverse
425015       -- accounting for a distributeion
425016       --
425017 
425018       --
425019       -- 5217187
425020       --
425021       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
425022       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
425023                                        g_array_event(l_event_id).array_value_num('header_index'));
425024       --
425025       --
425026 
425027       -- No reversal code generated
425028 
425029       xla_ae_lines_pkg.SetAcctReversalAttrs
425030          (p_event_id             => l_event_id
425031          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
425032          ,p_calculate_acctd_flag => l_calculate_acctd_flag
425033          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
425034    END IF;
425035 
425036    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
425037        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
425038 
425039 --
425040 AcctLineType_66 (
425041  p_application_id  => p_application_id
425042  ,p_event_id     => l_event_id
425043  ,p_calculate_acctd_flag => l_calculate_acctd_flag
425044  ,p_calculate_g_l_flag => l_calculate_g_l_flag
425045  ,p_actual_flag => l_actual_flag
425046  ,p_balance_type_code => l_balance_type_code
425047  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
425048  
425049  , p_source_11 => l_array_source_11(Idx)
425050  , p_source_84 => l_array_source_84(Idx)
425051  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
425052  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
425053  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
425054  , p_source_91 => l_array_source_91(Idx)
425055  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
425056  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
425057  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
425058  , p_source_95 => l_array_source_95(Idx)
425059  , p_source_97 => l_array_source_97(Idx)
425060  );
425061 If(l_balance_type_code = 'A') THEN
425062   l_actual_gain_loss_ref := l_gain_or_loss_ref;
425063 END IF;
425064 
425065 --
425066 
425067 
425068 --
425069 AcctLineType_529 (
425070  p_application_id  => p_application_id
425071  ,p_event_id     => l_event_id
425072  ,p_calculate_acctd_flag => l_calculate_acctd_flag
425073  ,p_calculate_g_l_flag => l_calculate_g_l_flag
425074  ,p_actual_flag => l_actual_flag
425075  ,p_balance_type_code => l_balance_type_code
425076  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
425077  
425078  , p_source_11 => l_array_source_11(Idx)
425079  , p_source_84 => l_array_source_84(Idx)
425080  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
425081  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
425082  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
425083  , p_source_91 => l_array_source_91(Idx)
425084  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
425085  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
425086  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
425087  , p_source_95 => l_array_source_95(Idx)
425088  , p_source_97 => l_array_source_97(Idx)
425089  );
425090 If(l_balance_type_code = 'A') THEN
425091   l_actual_gain_loss_ref := l_gain_or_loss_ref;
425092 END IF;
425093 
425094 --
425095 
425096       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
425097       -- or secondary ledger that has different currency with primary
425098       -- or alc that is calculated by sla
425099       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
425100             (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'))
425101 
425102 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
425103 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
425104           AND (l_actual_flag = 'A')) THEN
425105         XLA_AE_LINES_PKG.CreateGainOrLossLines(
425106           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
425107          ,p_application_id   => p_application_id
425108          ,p_amb_context_code => 'DEFAULT'
425109          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
425110          ,p_event_class_code => C_EVENT_CLASS_CODE
425111          ,p_event_type_code  => C_EVENT_TYPE_CODE
425112          
425113          ,p_gain_ccid        => -1
425114          ,p_loss_ccid        => -1
425115 
425116          ,p_actual_flag      => l_actual_flag
425117          ,p_enc_flag         => null
425118          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
425119          ,p_enc_g_l_ref      => null
425120          );
425121       END IF;
425122    END IF;
425123 END IF;
425124 
425125    ELSE
425126       --
425127       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
425128       --
425129       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
425130          trace
425131             (p_msg      => 'Trancaction revesal option is Y'
425132             ,p_level    => C_LEVEL_STATEMENT
425133             ,p_module   => l_log_module);
425134       END IF;
425135    END IF;
425136 
425137 END LOOP;
425138 l_result := XLA_AE_LINES_PKG.InsertLines ;
425139 end loop;
425140 close line_cur;
425141 
425142 
425143 --
425144 -- insert headers into xla_ae_headers_gt table
425145 --
425146 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
425147 
425148 -- insert into errors table here.
425149 
425150 END LOOP;
425151 
425152 --
425153 -- 4865292
425154 --
425155 -- Compare g_hdr_extract_count with event count in
425156 -- CreateHeadersAndLines.
425157 --
425158 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
425159 
425160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
425161    trace (p_msg     => '# rows extracted from header extract objects '
425162                     || ' (running total): '
425163                     || g_hdr_extract_count
425164          ,p_level   => C_LEVEL_STATEMENT
425165          ,p_module  => l_log_module);
425166 END IF;
425167 
425168 CLOSE header_cur;
425169 --
425170 
425171 --
425172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
425173    trace
425174       (p_msg      => 'END of EventClass_620'
425175       ,p_level    => C_LEVEL_PROCEDURE
425176       ,p_module   => l_log_module);
425177 END IF;
425178 --
425179 RETURN l_result;
425180 EXCEPTION
425181 WHEN xla_exceptions_pkg.application_exception THEN
425182    
425183 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
425184 
425185    
425186 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
425187 
425188    RAISE;
425189 
425190 WHEN NO_DATA_FOUND THEN
425191 
425192 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
425193 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
425194 
425195 FOR header_record IN header_cur
425196 LOOP
425197     l_array_header_events(header_record.event_id) := header_record.event_id;
425198 END LOOP;
425199 
425200 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
425201 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
425202 
425203 fnd_file.put_line(fnd_file.LOG, '                    ');
425204 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
425205 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
425206 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
425207 
425208 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
425209 LOOP
425210 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
425211 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
425212         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
425213 	END IF;
425214 END LOOP;
425215 
425216 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
425217 fnd_file.put_line(fnd_file.LOG, '                    ');
425218 
425219 
425220 xla_exceptions_pkg.raise_message
425221       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_620');
425222 
425223 
425224 WHEN OTHERS THEN
425225    xla_exceptions_pkg.raise_message
425226       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_620');
425227 END EventClass_620;
425228 --
425229 
425230 ---------------------------------------
425231 --
425232 -- PRIVATE PROCEDURE
425233 --         insert_sources_621
425234 --
425235 ----------------------------------------
425236 --
425237 PROCEDURE insert_sources_621(
425238                                 p_target_ledger_id       IN NUMBER
425239                               , p_language               IN VARCHAR2
425240                               , p_sla_ledger_id          IN NUMBER
425241                               , p_pad_start_date         IN DATE
425242                               , p_pad_end_date           IN DATE
425243                          )
425244 IS
425245 
425246 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_EST_SCRAP_REVERSAL';
425247 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
425248 p_apps_owner                   VARCHAR2(30);
425249 l_log_module                   VARCHAR2(240);
425250 BEGIN
425251 IF g_log_enabled THEN
425252       l_log_module := C_DEFAULT_MODULE||'.insert_sources_621';
425253 END IF;
425254 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
425255 
425256       trace
425257          (p_msg      => 'BEGIN of insert_sources_621'
425258          ,p_level    => C_LEVEL_PROCEDURE
425259          ,p_module   => l_log_module);
425260 
425261 END IF;
425262 
425263 -- select APPS owner
425264 SELECT oracle_username
425265   INTO p_apps_owner
425266   FROM fnd_oracle_userid
425267  WHERE read_only_flag = 'U'
425268 ;
425269 
425270 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
425271       trace
425272          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
425273                         ' - p_language = '||p_language||
425274                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
425275                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
425276                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
425277                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
425278          ,p_level    => C_LEVEL_STATEMENT
425279          ,p_module   => l_log_module);
425280 END IF;
425281 
425282 
425283 --
425284 INSERT INTO xla_diag_sources --hdr1
425285 (
425286         event_id
425287       , ledger_id
425288       , sla_ledger_id
425289       , description_language
425290       , object_name
425291       , object_type_code
425292       , line_number
425293       , source_application_id
425294       , source_type_code
425295       , source_code
425296       , source_value
425297       , source_meaning
425298       , created_by
425299       , creation_date
425300       , last_update_date
425301       , last_updated_by
425302       , last_update_login
425303       , program_update_date
425304       , program_application_id
425305       , program_id
425306       , request_id
425307 )
425308 SELECT
425309         event_id
425310       , p_target_ledger_id
425311       , p_sla_ledger_id
425312       , p_language
425313       , object_name
425314       , object_type_code
425315       , line_number
425316       , source_application_id
425317       , source_type_code
425318       , source_code
425319       , SUBSTR(source_value ,1,1996)
425320       , SUBSTR(source_meaning,1,200)
425321       , xla_environment_pkg.g_Usr_Id
425322       , TRUNC(SYSDATE)
425323       , TRUNC(SYSDATE)
425324       , xla_environment_pkg.g_Usr_Id
425325       , xla_environment_pkg.g_Login_Id
425326       , TRUNC(SYSDATE)
425327       , xla_environment_pkg.g_Prog_Appl_Id
425328       , xla_environment_pkg.g_Prog_Id
425329       , xla_environment_pkg.g_Req_Id
425330   FROM (
425331        SELECT xet.event_id                  event_id
425332             , 0                             line_number
425333             , CASE r
425334                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
425335                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
425336                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
425337                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
425338                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
425339                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
425340                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
425341                 
425342                ELSE null
425343               END                           object_name
425344             , CASE r
425345                 WHEN 1 THEN 'HEADER' 
425346                 WHEN 2 THEN 'HEADER' 
425347                 WHEN 3 THEN 'HEADER' 
425348                 WHEN 4 THEN 'HEADER' 
425349                 WHEN 5 THEN 'HEADER' 
425350                 WHEN 6 THEN 'HEADER' 
425351                 WHEN 7 THEN 'HEADER' 
425352                 
425353                 ELSE null
425354               END                           object_type_code
425355             , CASE r
425356                 WHEN 1 THEN '707' 
425357                 WHEN 2 THEN '707' 
425358                 WHEN 3 THEN '707' 
425359                 WHEN 4 THEN '707' 
425360                 WHEN 5 THEN '707' 
425361                 WHEN 6 THEN '707' 
425362                 WHEN 7 THEN '707' 
425363                 
425364                 ELSE null
425365               END                           source_application_id
425366             , 'S'             source_type_code
425367             , CASE r
425368                 WHEN 1 THEN 'TRANSACTION_ID' 
425369                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
425370                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
425371                 WHEN 4 THEN 'TRANSACTION_UOM' 
425372                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
425373                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
425374                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
425375                 
425376                 ELSE null
425377               END                           source_code
425378             , CASE r
425379                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
425380                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
425381                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
425382                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
425383                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
425384                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
425385                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
425386                 
425387                 ELSE null
425388               END                           source_value
425389             , CASE r
425390                 WHEN 6 THEN fvl85.meaning
425391                 WHEN 7 THEN fvl114.meaning
425392                 
425393                 ELSE null
425394               END               source_meaning
425395         FROM xla_events_gt     xet  
425396       , CST_XLA_INV_HEADERS_V  h1
425397       , CST_XLA_INV_REF_V  h3
425398       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
425399       , CST_XLA_INV_TXN_TYPES_REF_V  h5
425400   , fnd_lookup_values    fvl85
425401   , fnd_lookup_values    fvl114
425402             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
425403        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
425404          AND xet.event_type_code = C_EVENT_TYPE_CODE
425405             AND h1.event_id = xet.event_id
425406  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl85.lookup_type(+)         = 
425407 'CST_DISTRIBUTION_TYPE'
425408   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
425409   AND fvl85.view_application_id(+) = 700
425410   AND fvl85.language(+)            = USERENV('LANG')
425411      AND fvl114.lookup_type(+)         = 'YES_NO'
425412   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
425413   AND fvl114.view_application_id(+) = 0
425414   AND fvl114.language(+)            = USERENV('LANG')
425415   
425416 )
425417 ;
425418 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
425419 
425420       trace
425421          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
425422          ,p_level    => C_LEVEL_STATEMENT
425423          ,p_module   => l_log_module);
425424 
425425 END IF;
425426 --
425427 
425428 
425429 
425430 --
425431 INSERT INTO xla_diag_sources --line1
425432 (
425433         event_id
425434       , ledger_id
425435       , sla_ledger_id
425436       , description_language
425437       , object_name
425438       , object_type_code
425439       , line_number
425440       , source_application_id
425441       , source_type_code
425442       , source_code
425443       , source_value
425444       , source_meaning
425445       , created_by
425446       , creation_date
425447       , last_update_date
425448       , last_updated_by
425449       , last_update_login
425450       , program_update_date
425451       , program_application_id
425452       , program_id
425453       , request_id
425454 )
425455 SELECT  event_id
425456       , p_target_ledger_id
425457       , p_sla_ledger_id
425458       , p_language
425459       , object_name
425460       , object_type_code
425461       , line_number
425462       , source_application_id
425463       , source_type_code
425464       , source_code
425465       , SUBSTR(source_value,1,1996)
425466       , SUBSTR(source_meaning,1,200)
425467       , xla_environment_pkg.g_Usr_Id
425468       , TRUNC(SYSDATE)
425469       , TRUNC(SYSDATE)
425470       , xla_environment_pkg.g_Usr_Id
425471       , xla_environment_pkg.g_Login_Id
425472       , TRUNC(SYSDATE)
425473       , xla_environment_pkg.g_Prog_Appl_Id
425474       , xla_environment_pkg.g_Prog_Id
425475       , xla_environment_pkg.g_Req_Id
425476   FROM (
425477        SELECT xet.event_id                  event_id
425478             , l2.line_number                 line_number
425479             , CASE r
425480                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
425481                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
425482                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
425483                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
425484                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
425485                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
425486                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
425487                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
425488                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
425489                 
425490                ELSE null
425491               END                           object_name
425492             , CASE r
425493                 WHEN 1 THEN 'LINE' 
425494                 WHEN 2 THEN 'LINE' 
425495                 WHEN 3 THEN 'LINE' 
425496                 WHEN 4 THEN 'LINE' 
425497                 WHEN 5 THEN 'LINE' 
425498                 WHEN 6 THEN 'LINE' 
425499                 WHEN 7 THEN 'LINE' 
425500                 WHEN 8 THEN 'LINE' 
425501                 WHEN 9 THEN 'LINE' 
425502                 
425503                 ELSE null
425504               END                           object_type_code
425505             , CASE r
425506                 WHEN 1 THEN '707' 
425507                 WHEN 2 THEN '707' 
425508                 WHEN 3 THEN '707' 
425509                 WHEN 4 THEN '707' 
425510                 WHEN 5 THEN '707' 
425511                 WHEN 6 THEN '707' 
425512                 WHEN 7 THEN '707' 
425513                 WHEN 8 THEN '707' 
425514                 WHEN 9 THEN '707' 
425515                 
425516                 ELSE null
425517               END                           source_application_id
425518             , 'S'             source_type_code
425519             , CASE r
425520                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
425521                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
425522                 WHEN 3 THEN 'CURRENCY_CODE' 
425523                 WHEN 4 THEN 'ENTERED_AMOUNT' 
425524                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
425525                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
425526                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
425527                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
425528                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
425529                 
425530                 ELSE null
425531               END                           source_code
425532             , CASE r
425533                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
425534                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
425535                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
425536                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
425537                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
425538                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
425539                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
425540                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
425541                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
425542                 
425543                 ELSE null
425544               END                           source_value
425545             , null              source_meaning
425546          FROM  xla_events_gt     xet  
425547         , CST_XLA_INV_LINES_V  l2
425548             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
425549         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
425550           AND xet.event_type_code = C_EVENT_TYPE_CODE
425551             AND l2.event_id          = xet.event_id
425552 
425553 )
425554 ;
425555 --
425556 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
425557 
425558       trace
425559          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
425560          ,p_level    => C_LEVEL_STATEMENT
425561          ,p_module   => l_log_module);
425562 
425563 END IF;
425564 
425565 
425566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
425567       trace
425568          (p_msg      => 'END of insert_sources_621'
425569          ,p_level    => C_LEVEL_PROCEDURE
425570          ,p_module   => l_log_module);
425571 END IF;
425572 EXCEPTION
425573   WHEN xla_exceptions_pkg.application_exception THEN
425574       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
425575             trace
425576                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
425577                ,p_level    => C_LEVEL_EXCEPTION
425578                ,p_module   => l_log_module);
425579       END IF;
425580       RAISE;
425581   WHEN OTHERS THEN
425582       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
425583             trace
425584                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
425585                ,p_level    => C_LEVEL_EXCEPTION
425586                ,p_module   => l_log_module);
425587        END IF;
425588        xla_exceptions_pkg.raise_message
425589            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_621');
425590 END insert_sources_621;
425591 --
425592 
425593 ---------------------------------------
425594 --
425595 -- PRIVATE FUNCTION
425596 --         EventType_621
425597 --
425598 ----------------------------------------
425599 --
425600 FUNCTION EventType_621
425601        (p_application_id         IN NUMBER
425602        ,p_base_ledger_id         IN NUMBER
425603        ,p_target_ledger_id       IN NUMBER
425604        ,p_language               IN VARCHAR2
425605        ,p_currency_code          IN VARCHAR2
425606        ,p_sla_ledger_id          IN NUMBER
425607        ,p_pad_start_date         IN DATE
425608        ,p_pad_end_date           IN DATE
425609        ,p_primary_ledger_id      IN NUMBER)
425610 RETURN BOOLEAN IS
425611 --
425612 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_EST_SCRAP_REVERSAL';
425613 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
425614 
425615 l_calculate_acctd_flag   VARCHAR2(1) :='N';
425616 l_calculate_g_l_flag     VARCHAR2(1) :='N';
425617 --
425618 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425619 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425620 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
425621 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
425622 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425623 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
425624 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
425625 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425626 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
425627 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
425628 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425629 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425630 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425631 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
425632 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
425633 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
425634 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
425635 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
425636 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
425637 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
425638 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
425639 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
425640 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
425641 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
425642 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
425643 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
425644 
425645 l_event_id                             NUMBER;
425646 l_previous_event_id                    NUMBER;
425647 l_first_event_id                       NUMBER;
425648 l_last_event_id                        NUMBER;
425649 
425650 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
425651 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
425652 --
425653 --
425654 l_result                    BOOLEAN := TRUE;
425655 l_rows                      NUMBER  := 1000;
425656 l_event_type_name           VARCHAR2(80) := 'WIP Estimated Scrap Reversal';
425657 l_event_class_name          VARCHAR2(80) := 'WIP Material';
425658 l_description               VARCHAR2(4000);
425659 l_transaction_reversal      NUMBER;
425660 l_ae_header_id              NUMBER;
425661 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
425662 l_log_module                VARCHAR2(240);
425663 --
425664 l_acct_reversal_source      VARCHAR2(30);
425665 l_trx_reversal_source       VARCHAR2(30);
425666 
425667 l_continue_with_lines       BOOLEAN := TRUE;
425668 --
425669 l_acc_rev_gl_date_source    DATE;                      -- 4262811
425670 --
425671 type t_array_event_id is table of number index by binary_integer;
425672 
425673 l_rec_array_event                    t_rec_array_event;
425674 l_null_rec_array_event               t_rec_array_event;
425675 l_array_ae_header_id                 xla_number_array_type;
425676 l_actual_flag                        VARCHAR2(1) := NULL;
425677 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
425678 l_balance_type_code                  VARCHAR2(1) :=NULL;
425679 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
425680 
425681 --
425682 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
425683 --
425684 
425685 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
425686 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
425687 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
425688 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
425689 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
425690 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
425691 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
425692 
425693 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
425694 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
425695 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
425696 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
425697 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
425698 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
425699 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
425700 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
425701 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
425702 
425703 l_array_source_1              t_array_source_1;
425704 l_array_source_2              t_array_source_2;
425705 l_array_source_3              t_array_source_3;
425706 l_array_source_4              t_array_source_4;
425707 l_array_source_5              t_array_source_5;
425708 l_array_source_85              t_array_source_85;
425709 l_array_source_85_meaning      t_array_lookup_meaning;
425710 l_array_source_114              t_array_source_114;
425711 l_array_source_114_meaning      t_array_lookup_meaning;
425712 
425713 l_array_source_11      t_array_source_11;
425714 l_array_source_84      t_array_source_84;
425715 l_array_source_88      t_array_source_88;
425716 l_array_source_91      t_array_source_91;
425717 l_array_source_92      t_array_source_92;
425718 l_array_source_93      t_array_source_93;
425719 l_array_source_94      t_array_source_94;
425720 l_array_source_95      t_array_source_95;
425721 l_array_source_97      t_array_source_97;
425722 
425723 --
425724 CURSOR header_cur
425725 IS
425726 SELECT /*+ leading(xet) cardinality(xet,1) */
425727 -- Event Type Code: WIP_EST_SCRAP_REVERSAL
425728 -- Event Class Code: WIP_MTL
425729     xet.entity_id
425730   , xet.legal_entity_id
425731   , xet.entity_code
425732   , xet.transaction_number
425733   , xet.event_id
425734   , xet.event_class_code
425735   , xet.event_type_code
425736   , xet.event_number
425737   , xet.event_date
425738   , xet.transaction_date
425739   , xet.reference_num_1
425740   , xet.reference_num_2
425741   , xet.reference_num_3
425742   , xet.reference_num_4
425743   , xet.reference_char_1
425744   , xet.reference_char_2
425745   , xet.reference_char_3
425746   , xet.reference_char_4
425747   , xet.reference_date_1
425748   , xet.reference_date_2
425749   , xet.reference_date_3
425750   , xet.reference_date_4
425751   , xet.event_created_by
425752   , xet.budgetary_control_flag 
425753   , h1.TRANSACTION_ID    source_1
425754   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
425755   , h3.TRANSACTION_QUANTITY    source_3
425756   , h3.TRANSACTION_UOM    source_4
425757   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
425758   , h1.DISTRIBUTION_TYPE    source_85
425759   , fvl85.meaning   source_85_meaning
425760   , h1.TRANSFER_TO_GL_INDICATOR    source_114
425761   , fvl114.meaning   source_114_meaning
425762   FROM xla_events_gt     xet 
425763   , CST_XLA_INV_HEADERS_V  h1
425764   , CST_XLA_INV_REF_V  h3
425765   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
425766   , CST_XLA_INV_TXN_TYPES_REF_V  h5
425767   , fnd_lookup_values    fvl85
425768   , fnd_lookup_values    fvl114
425769  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
425770    and xet.event_type_code = C_EVENT_TYPE_CODE
425771    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
425772  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl85.lookup_type(+)         = 
425773 'CST_DISTRIBUTION_TYPE'
425774   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
425775   AND fvl85.view_application_id(+) = 700
425776   AND fvl85.language(+)            = USERENV('LANG')
425777      AND fvl114.lookup_type(+)         = 'YES_NO'
425778   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
425779   AND fvl114.view_application_id(+) = 0
425780   AND fvl114.language(+)            = USERENV('LANG')
425781   
425782  ORDER BY event_id
425783 ;
425784 
425785 
425786 --
425787 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
425788 IS
425789 SELECT /*+ leading(xet) cardinality(xet,1) */
425790 -- Event Type Code: WIP_EST_SCRAP_REVERSAL
425791 -- Event Class Code: WIP_MTL
425792     xet.entity_id
425793    ,xet.legal_entity_id
425794    ,xet.entity_code
425795    ,xet.transaction_number
425796    ,xet.event_id
425797    ,xet.event_class_code
425798    ,xet.event_type_code
425799    ,xet.event_number
425800    ,xet.event_date
425801    ,xet.transaction_date
425802    ,xet.reference_num_1
425803    ,xet.reference_num_2
425804    ,xet.reference_num_3
425805    ,xet.reference_num_4
425806    ,xet.reference_char_1
425807    ,xet.reference_char_2
425808    ,xet.reference_char_3
425809    ,xet.reference_char_4
425810    ,xet.reference_date_1
425811    ,xet.reference_date_2
425812    ,xet.reference_date_3
425813    ,xet.reference_date_4
425814    ,xet.event_created_by
425815    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
425816   , l2.CODE_COMBINATION_ID    source_11
425817   , l2.DISTRIBUTION_IDENTIFIER    source_84
425818   , l2.CURRENCY_CODE    source_88
425819   , l2.ENTERED_AMOUNT    source_91
425820   , l2.CURRENCY_CONVERSION_DATE    source_92
425821   , l2.CURRENCY_CONVERSION_RATE    source_93
425822   , l2.CURRENCY_CONVERSION_TYPE    source_94
425823   , l2.ACCOUNTED_AMOUNT    source_95
425824   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
425825   FROM xla_events_gt     xet 
425826   , CST_XLA_INV_LINES_V  l2
425827  WHERE xet.event_id between x_first_event_id and x_last_event_id
425828    and xet.event_date between p_pad_start_date and p_pad_end_date
425829    and xet.event_type_code = C_EVENT_TYPE_CODE
425830    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
425831 ;
425832 
425833 --
425834 BEGIN
425835 IF g_log_enabled THEN
425836    l_log_module := C_DEFAULT_MODULE||'.EventType_621';
425837 END IF;
425838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
425839    trace
425840       (p_msg      => 'BEGIN of EventType_621'
425841       ,p_level    => C_LEVEL_PROCEDURE
425842       ,p_module   => l_log_module);
425843 END IF;
425844 
425845 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
425846    trace
425847       (p_msg      => 'p_application_id = '||p_application_id||
425848                      ' - p_base_ledger_id = '||p_base_ledger_id||
425849                      ' - p_target_ledger_id  = '||p_target_ledger_id||
425850                      ' - p_language = '||p_language||
425851                      ' - p_currency_code = '||p_currency_code||
425852                      ' - p_sla_ledger_id = '||p_sla_ledger_id
425853       ,p_level    => C_LEVEL_STATEMENT
425854       ,p_module   => l_log_module);
425855 END IF;
425856 --
425857 -- initialze arrays
425858 --
425859 g_array_event.DELETE;
425860 l_rec_array_event := l_null_rec_array_event;
425861 --
425862 --------------------------------------
425863 -- 4262811 Initialze MPA Line Number
425864 --------------------------------------
425865 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
425866 
425867 --
425868 
425869 --
425870 OPEN header_cur;
425871 --
425872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
425873    trace
425874    (p_msg      => 'SQL - FETCH header_cur'
425875    ,p_level    => C_LEVEL_STATEMENT
425876    ,p_module   => l_log_module);
425877 END IF;
425878 --
425879 LOOP
425880 FETCH header_cur BULK COLLECT INTO
425881         l_array_entity_id
425882       , l_array_legal_entity_id
425883       , l_array_entity_code
425884       , l_array_transaction_num
425885       , l_array_event_id
425886       , l_array_class_code
425887       , l_array_event_type
425888       , l_array_event_number
425889       , l_array_event_date
425890       , l_array_transaction_date
425891       , l_array_reference_num_1
425892       , l_array_reference_num_2
425893       , l_array_reference_num_3
425894       , l_array_reference_num_4
425895       , l_array_reference_char_1
425896       , l_array_reference_char_2
425897       , l_array_reference_char_3
425898       , l_array_reference_char_4
425899       , l_array_reference_date_1
425900       , l_array_reference_date_2
425901       , l_array_reference_date_3
425902       , l_array_reference_date_4
425903       , l_array_event_created_by
425904       , l_array_budgetary_control_flag 
425905       , l_array_source_1
425906       , l_array_source_2
425907       , l_array_source_3
425908       , l_array_source_4
425909       , l_array_source_5
425910       , l_array_source_85
425911       , l_array_source_85_meaning
425912       , l_array_source_114
425913       , l_array_source_114_meaning
425914       LIMIT l_rows;
425915 --
425916 IF (C_LEVEL_EVENT >= g_log_level) THEN
425917    trace
425918    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
425919    ,p_level    => C_LEVEL_EVENT
425920    ,p_module   => l_log_module);
425921 END IF;
425922 --
425923 EXIT WHEN l_array_entity_id.COUNT = 0;
425924 
425925 -- initialize arrays
425926 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
425927 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
425928 
425929 --
425930 -- Bug 4458708
425931 --
425932 XLA_AE_LINES_PKG.g_LineNumber := 0;
425933 
425934 
425935 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
425936 g_last_hdr_idx := l_array_event_id.LAST;
425937 --
425938 -- loop for the headers. Each iteration is for each header extract row
425939 -- fetched in header cursor
425940 --
425941 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
425942 
425943 --
425944 -- set event info as cache for other routines to refer event attributes
425945 --
425946 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
425947    (p_application_id           => p_application_id
425948    ,p_primary_ledger_id        => p_primary_ledger_id
425949    ,p_base_ledger_id           => p_base_ledger_id
425950    ,p_target_ledger_id         => p_target_ledger_id
425951    ,p_entity_id                => l_array_entity_id(hdr_idx)
425952    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
425953    ,p_entity_code              => l_array_entity_code(hdr_idx)
425954    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
425955    ,p_event_id                 => l_array_event_id(hdr_idx)
425956    ,p_event_class_code         => l_array_class_code(hdr_idx)
425957    ,p_event_type_code          => l_array_event_type(hdr_idx)
425958    ,p_event_number             => l_array_event_number(hdr_idx)
425959    ,p_event_date               => l_array_event_date(hdr_idx)
425960    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
425961    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
425962    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
425963    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
425964    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
425965    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
425966    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
425967    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
425968    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
425969    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
425970    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
425971    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
425972    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
425973    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
425974    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
425975 
425976 --
425977 -- set the status of entry to C_VALID (0)
425978 --
425979 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
425980 
425981 --
425982 -- initialize a row for ae header
425983 --
425984 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
425985 
425986 l_event_id := l_array_event_id(hdr_idx);
425987 
425988 --
425989 -- storing the hdr_idx for event. May be used by line cursor.
425990 --
425991 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
425992 
425993 --
425994 -- store sources from header extract. This can be improved to
425995 -- store only those sources from header extract that may be used in lines
425996 --
425997 
425998 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
425999 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
426000 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
426001 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
426002 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
426003 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
426004 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
426005 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
426006 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
426007 
426008 --
426009 -- initilaize the status of ae headers for diffrent balance types
426010 -- the status is initialised to C_NOT_CREATED (2)
426011 --
426012 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
426013 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
426014 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
426015 
426016 --
426017 -- call api to validate and store accounting attributes for header
426018 --
426019 
426020 ------------------------------------------------------------
426021 -- Accrual Reversal : to get date for Standard Source (NONE)
426022 ------------------------------------------------------------
426023 l_acc_rev_gl_date_source := NULL;
426024 
426025      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
426026       l_rec_acct_attrs.array_date_value(1) := 
426027 xla_ae_sources_pkg.GetSystemSourceDate(
426028    p_source_code           => 'XLA_REFERENCE_DATE_1'
426029  , p_source_type_code      => 'Y'
426030  , p_source_application_id =>  602
426031 );
426032      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
426033       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
426034 
426035 
426036 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
426037 
426038 XLA_AE_HEADER_PKG.SetJeCategoryName;
426039 
426040 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
426041 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
426042 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
426043 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
426044 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
426045 
426046 
426047 --
426048 xla_ae_header_pkg.SetHdrDescription(
426049    p_description => Description_1 (
426050    p_application_id => p_application_id 
426051  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
426052  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
426053  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
426054  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
426055  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
426056    )
426057 );
426058 --
426059 
426060 -- No header level analytical criteria
426061 
426062 --
426063 --accounting attribute enhancement, bug 3612931
426064 --
426065 l_trx_reversal_source := SUBSTR(NULL, 1,30);
426066 
426067 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
426068    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
426069 
426070    xla_accounting_err_pkg.build_message
426071       (p_appli_s_name            => 'XLA'
426072       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
426073       ,p_token_1                 => 'ACCT_ATTR_NAME'
426074       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
426075       ,p_token_2                 => 'PRODUCT_NAME'
426076       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
426077       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
426078       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
426079       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
426080 
426081 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
426082    --
426083    -- following sets the accounting attributes needed to reverse
426084    -- accounting for a distributeion
426085    --
426086    xla_ae_lines_pkg.SetTrxReversalAttrs
426087       (p_event_id              => l_event_id
426088       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
426089       ,p_trx_reversal_source   => l_trx_reversal_source);
426090 
426091 END IF;
426092 
426093 
426094 ----------------------------------------------------------------
426095 -- 4262811 -  update the header statuses to invalid in need be
426096 ----------------------------------------------------------------
426097 --
426098 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
426099 
426100 
426101   -----------------------------------------------
426102   -- No accrual reversal for the event class/type
426103   -----------------------------------------------
426104 ----------------------------------------------------------------
426105 
426106 --
426107 -- this ends the header loop iteration for one bulk fetch
426108 --
426109 END LOOP;
426110 
426111 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
426112 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
426113 
426114 --
426115 -- insert dummy rows into lines gt table that were created due to
426116 -- transaction reversals
426117 --
426118 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
426119    l_result := XLA_AE_LINES_PKG.InsertLines;
426120 END IF;
426121 
426122 --
426123 -- reset the temp_line_num for each set of events fetched from header
426124 -- cursor rather than doing it for each new event in line cursor
426125 -- Bug 3939231
426126 --
426127 xla_ae_lines_pkg.g_temp_line_num := 0;
426128 
426129 
426130 
426131 --
426132 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
426133 --
426134 --
426135 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
426136 
426137       trace
426138          (p_msg      => 'SQL - FETCH line_cur'
426139          ,p_level    => C_LEVEL_STATEMENT
426140          ,p_module   => l_log_module);
426141 
426142 END IF;
426143 --
426144 --
426145 LOOP
426146   --
426147   FETCH line_cur BULK COLLECT INTO
426148         l_array_entity_id
426149       , l_array_legal_entity_id
426150       , l_array_entity_code
426151       , l_array_transaction_num
426152       , l_array_event_id
426153       , l_array_class_code
426154       , l_array_event_type
426155       , l_array_event_number
426156       , l_array_event_date
426157       , l_array_transaction_date
426158       , l_array_reference_num_1
426159       , l_array_reference_num_2
426160       , l_array_reference_num_3
426161       , l_array_reference_num_4
426162       , l_array_reference_char_1
426163       , l_array_reference_char_2
426164       , l_array_reference_char_3
426165       , l_array_reference_char_4
426166       , l_array_reference_date_1
426167       , l_array_reference_date_2
426168       , l_array_reference_date_3
426169       , l_array_reference_date_4
426170       , l_array_event_created_by
426171       , l_array_budgetary_control_flag
426172       , l_array_extract_line_num 
426173       , l_array_source_11
426174       , l_array_source_84
426175       , l_array_source_88
426176       , l_array_source_91
426177       , l_array_source_92
426178       , l_array_source_93
426179       , l_array_source_94
426180       , l_array_source_95
426181       , l_array_source_97
426182       LIMIT l_rows;
426183 
426184   --
426185   IF (C_LEVEL_EVENT >= g_log_level) THEN
426186             trace
426187                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
426188                ,p_level    => C_LEVEL_EVENT
426189                ,p_module   => l_log_module);
426190   END IF;
426191   --
426192   EXIT WHEN l_array_entity_id.count = 0;
426193 
426194   XLA_AE_LINES_PKG.g_rec_lines := null;
426195 
426196 --
426197 -- Bug 4458708
426198 --
426199 XLA_AE_LINES_PKG.g_LineNumber := 0;
426200 --
426201 --
426202 
426203 FOR Idx IN 1..l_array_event_id.count LOOP
426204    --
426205    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
426206    --
426207    l_event_id := l_array_event_id(idx);  -- 5648433
426208 
426209    --
426210    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
426211    --
426212 
426213    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
426214              (g_array_event(l_event_id).array_value_num('header_index'))
426215          ,'N'
426216          ) <> 'Y'
426217    THEN
426218       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
426219          trace
426220             (p_msg      => 'Trancaction revesal option is not Y '
426221             ,p_level    => C_LEVEL_STATEMENT
426222             ,p_module   => l_log_module);
426223       END IF;
426224 
426225 --
426226 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
426227 --
426228 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
426229 --
426230 -- set event info as cache for other routines to refer event attributes
426231 --
426232 
426233 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
426234    l_previous_event_id := l_event_id;
426235 
426236    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
426237       (p_application_id           => p_application_id
426238       ,p_primary_ledger_id        => p_primary_ledger_id
426239       ,p_base_ledger_id           => p_base_ledger_id
426240       ,p_target_ledger_id         => p_target_ledger_id
426241       ,p_entity_id                => l_array_entity_id(Idx)
426242       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
426243       ,p_entity_code              => l_array_entity_code(Idx)
426244       ,p_transaction_num          => l_array_transaction_num(Idx)
426245       ,p_event_id                 => l_array_event_id(Idx)
426246       ,p_event_class_code         => l_array_class_code(Idx)
426247       ,p_event_type_code          => l_array_event_type(Idx)
426248       ,p_event_number             => l_array_event_number(Idx)
426249       ,p_event_date               => l_array_event_date(Idx)
426250       ,p_transaction_date         => l_array_transaction_date(Idx)
426251       ,p_reference_num_1          => l_array_reference_num_1(Idx)
426252       ,p_reference_num_2          => l_array_reference_num_2(Idx)
426253       ,p_reference_num_3          => l_array_reference_num_3(Idx)
426254       ,p_reference_num_4          => l_array_reference_num_4(Idx)
426255       ,p_reference_char_1         => l_array_reference_char_1(Idx)
426256       ,p_reference_char_2         => l_array_reference_char_2(Idx)
426257       ,p_reference_char_3         => l_array_reference_char_3(Idx)
426258       ,p_reference_char_4         => l_array_reference_char_4(Idx)
426259       ,p_reference_date_1         => l_array_reference_date_1(Idx)
426260       ,p_reference_date_2         => l_array_reference_date_2(Idx)
426261       ,p_reference_date_3         => l_array_reference_date_3(Idx)
426262       ,p_reference_date_4         => l_array_reference_date_4(Idx)
426263       ,p_event_created_by         => l_array_event_created_by(Idx)
426264       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
426265        --
426266 END IF;
426267 
426268 
426269 
426270 --
426271 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
426272 
426273 l_acct_reversal_source := SUBSTR(NULL, 1,30);
426274 
426275 IF l_continue_with_lines THEN
426276    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
426277       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
426278 
426279       xla_accounting_err_pkg.build_message
426280          (p_appli_s_name            => 'XLA'
426281          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
426282          ,p_token_1                 => 'LINE_NUMBER'
426283          ,p_value_1                 => l_array_extract_line_num(Idx)
426284          ,p_token_2                 => 'PRODUCT_NAME'
426285          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
426286          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
426287          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
426288          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
426289 
426290    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
426291       --
426292       -- following sets the accounting attributes needed to reverse
426293       -- accounting for a distributeion
426294       --
426295 
426296       --
426297       -- 5217187
426298       --
426299       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
426300       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
426301                                        g_array_event(l_event_id).array_value_num('header_index'));
426302       --
426303       --
426304 
426305       -- No reversal code generated
426306 
426307       xla_ae_lines_pkg.SetAcctReversalAttrs
426308          (p_event_id             => l_event_id
426309          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
426310          ,p_calculate_acctd_flag => l_calculate_acctd_flag
426311          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
426312    END IF;
426313 
426314    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
426315        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
426316 
426317 --
426318 AcctLineType_323 (
426319  p_application_id  => p_application_id
426320  ,p_event_id     => l_event_id
426321  ,p_calculate_acctd_flag => l_calculate_acctd_flag
426322  ,p_calculate_g_l_flag => l_calculate_g_l_flag
426323  ,p_actual_flag => l_actual_flag
426324  ,p_balance_type_code => l_balance_type_code
426325  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
426326  
426327  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
426328  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
426329  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
426330  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
426331  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
426332  , p_source_11 => l_array_source_11(Idx)
426333  , p_source_84 => l_array_source_84(Idx)
426334  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
426335  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
426336  , p_source_88 => l_array_source_88(Idx)
426337  , p_source_91 => l_array_source_91(Idx)
426338  , p_source_92 => l_array_source_92(Idx)
426339  , p_source_93 => l_array_source_93(Idx)
426340  , p_source_94 => l_array_source_94(Idx)
426341  , p_source_95 => l_array_source_95(Idx)
426342  , p_source_97 => l_array_source_97(Idx)
426343  );
426344 If(l_balance_type_code = 'A') THEN
426345   l_actual_gain_loss_ref := l_gain_or_loss_ref;
426346 END IF;
426347 
426348 --
426349 
426350 
426351 --
426352 AcctLineType_539 (
426353  p_application_id  => p_application_id
426354  ,p_event_id     => l_event_id
426355  ,p_calculate_acctd_flag => l_calculate_acctd_flag
426356  ,p_calculate_g_l_flag => l_calculate_g_l_flag
426357  ,p_actual_flag => l_actual_flag
426358  ,p_balance_type_code => l_balance_type_code
426359  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
426360  
426361  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
426362  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
426363  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
426364  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
426365  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
426366  , p_source_11 => l_array_source_11(Idx)
426367  , p_source_84 => l_array_source_84(Idx)
426368  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
426369  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
426370  , p_source_88 => l_array_source_88(Idx)
426371  , p_source_91 => l_array_source_91(Idx)
426372  , p_source_92 => l_array_source_92(Idx)
426373  , p_source_93 => l_array_source_93(Idx)
426374  , p_source_94 => l_array_source_94(Idx)
426375  , p_source_95 => l_array_source_95(Idx)
426376  , p_source_97 => l_array_source_97(Idx)
426377  );
426378 If(l_balance_type_code = 'A') THEN
426379   l_actual_gain_loss_ref := l_gain_or_loss_ref;
426380 END IF;
426381 
426382 --
426383 
426384       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
426385       -- or secondary ledger that has different currency with primary
426386       -- or alc that is calculated by sla
426387       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
426388             (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'))
426389 
426390 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
426391 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
426392           AND (l_actual_flag = 'A')) THEN
426393         XLA_AE_LINES_PKG.CreateGainOrLossLines(
426394           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
426395          ,p_application_id   => p_application_id
426396          ,p_amb_context_code => 'DEFAULT'
426397          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
426398          ,p_event_class_code => C_EVENT_CLASS_CODE
426399          ,p_event_type_code  => C_EVENT_TYPE_CODE
426400          
426401          ,p_gain_ccid        => -1
426402          ,p_loss_ccid        => -1
426403 
426404          ,p_actual_flag      => l_actual_flag
426405          ,p_enc_flag         => null
426406          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
426407          ,p_enc_g_l_ref      => null
426408          );
426409       END IF;
426410    END IF;
426411 END IF;
426412 
426413    ELSE
426414       --
426415       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
426416       --
426417       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
426418          trace
426419             (p_msg      => 'Trancaction revesal option is Y'
426420             ,p_level    => C_LEVEL_STATEMENT
426421             ,p_module   => l_log_module);
426422       END IF;
426423    END IF;
426424 
426425 END LOOP;
426426 l_result := XLA_AE_LINES_PKG.InsertLines ;
426427 end loop;
426428 close line_cur;
426429 
426430 
426431 --
426432 -- insert headers into xla_ae_headers_gt table
426433 --
426434 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
426435 
426436 -- insert into errors table here.
426437 
426438 END LOOP;
426439 
426440 --
426441 -- 4865292
426442 --
426443 -- Compare g_hdr_extract_count with event count in
426444 -- CreateHeadersAndLines.
426445 --
426446 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
426447 
426448 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
426449    trace (p_msg     => '# rows extracted from header extract objects '
426450                     || ' (running total): '
426451                     || g_hdr_extract_count
426452          ,p_level   => C_LEVEL_STATEMENT
426453          ,p_module  => l_log_module);
426454 END IF;
426455 
426456 CLOSE header_cur;
426457 --
426458 
426459 --
426460 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
426461    trace
426462       (p_msg      => 'END of EventType_621'
426463       ,p_level    => C_LEVEL_PROCEDURE
426464       ,p_module   => l_log_module);
426465 END IF;
426466 --
426467 RETURN l_result;
426468 EXCEPTION
426469 WHEN xla_exceptions_pkg.application_exception THEN
426470    
426471 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
426472 
426473    
426474 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
426475 
426476    RAISE;
426477 
426478 WHEN NO_DATA_FOUND THEN
426479 
426480 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
426481 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
426482 
426483 FOR header_record IN header_cur
426484 LOOP
426485     l_array_header_events(header_record.event_id) := header_record.event_id;
426486 END LOOP;
426487 
426488 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
426489 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
426490 
426491 fnd_file.put_line(fnd_file.LOG, '                    ');
426492 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
426493 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
426494 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
426495 
426496 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
426497 LOOP
426498 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
426499 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
426500         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
426501 	END IF;
426502 END LOOP;
426503 
426504 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
426505 fnd_file.put_line(fnd_file.LOG, '                    ');
426506 
426507 
426508 xla_exceptions_pkg.raise_message
426509       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_621');
426510 
426511 
426512 WHEN OTHERS THEN
426513    xla_exceptions_pkg.raise_message
426514       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_621');
426515 END EventType_621;
426516 --
426517 
426518 ---------------------------------------
426519 --
426520 -- PRIVATE PROCEDURE
426521 --         insert_sources_622
426522 --
426523 ----------------------------------------
426524 --
426525 PROCEDURE insert_sources_622(
426526                                 p_target_ledger_id       IN NUMBER
426527                               , p_language               IN VARCHAR2
426528                               , p_sla_ledger_id          IN NUMBER
426529                               , p_pad_start_date         IN DATE
426530                               , p_pad_end_date           IN DATE
426531                          )
426532 IS
426533 
426534 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_LOT_ALL';
426535 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_LOT';
426536 p_apps_owner                   VARCHAR2(30);
426537 l_log_module                   VARCHAR2(240);
426538 BEGIN
426539 IF g_log_enabled THEN
426540       l_log_module := C_DEFAULT_MODULE||'.insert_sources_622';
426541 END IF;
426542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
426543 
426544       trace
426545          (p_msg      => 'BEGIN of insert_sources_622'
426546          ,p_level    => C_LEVEL_PROCEDURE
426547          ,p_module   => l_log_module);
426548 
426549 END IF;
426550 
426551 -- select APPS owner
426552 SELECT oracle_username
426553   INTO p_apps_owner
426554   FROM fnd_oracle_userid
426555  WHERE read_only_flag = 'U'
426556 ;
426557 
426558 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
426559       trace
426560          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
426561                         ' - p_language = '||p_language||
426562                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
426563                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
426564                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
426565                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
426566          ,p_level    => C_LEVEL_STATEMENT
426567          ,p_module   => l_log_module);
426568 END IF;
426569 
426570 
426571 --
426572 INSERT INTO xla_diag_sources --hdr2
426573 (
426574         event_id
426575       , ledger_id
426576       , sla_ledger_id
426577       , description_language
426578       , object_name
426579       , object_type_code
426580       , line_number
426581       , source_application_id
426582       , source_type_code
426583       , source_code
426584       , source_value
426585       , source_meaning
426586       , created_by
426587       , creation_date
426588       , last_update_date
426589       , last_updated_by
426590       , last_update_login
426591       , program_update_date
426592       , program_application_id
426593       , program_id
426594       , request_id
426595 )
426596 SELECT
426597         event_id
426598       , p_target_ledger_id
426599       , p_sla_ledger_id
426600       , p_language
426601       , object_name
426602       , object_type_code
426603       , line_number
426604       , source_application_id
426605       , source_type_code
426606       , source_code
426607       , SUBSTR(source_value ,1,1996)
426608       , SUBSTR(source_meaning ,1,200)
426609       , xla_environment_pkg.g_Usr_Id
426610       , TRUNC(SYSDATE)
426611       , TRUNC(SYSDATE)
426612       , xla_environment_pkg.g_Usr_Id
426613       , xla_environment_pkg.g_Login_Id
426614       , TRUNC(SYSDATE)
426615       , xla_environment_pkg.g_Prog_Appl_Id
426616       , xla_environment_pkg.g_Prog_Id
426617       , xla_environment_pkg.g_Req_Id
426618   FROM (
426619        SELECT xet.event_id                  event_id
426620             , 0                          line_number
426621             , CASE r
426622                WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V' 
426623                 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V' 
426624                 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V' 
426625                 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V' 
426626                 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V' 
426627                 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V' 
426628                 WHEN 7 THEN 'CST_XLA_WIP_HEADERS_V' 
426629                 WHEN 8 THEN 'CST_XLA_WIP_HEADERS_V' 
426630                 WHEN 9 THEN 'CST_XLA_WIP_HEADERS_V' 
426631                 WHEN 10 THEN 'CST_XLA_WIP_HEADERS_V' 
426632                 
426633                ELSE null
426634               END                           object_name
426635             , CASE r
426636                 WHEN 1 THEN 'HEADER' 
426637                 WHEN 2 THEN 'HEADER' 
426638                 WHEN 3 THEN 'HEADER' 
426639                 WHEN 4 THEN 'HEADER' 
426640                 WHEN 5 THEN 'HEADER' 
426641                 WHEN 6 THEN 'HEADER' 
426642                 WHEN 7 THEN 'HEADER' 
426643                 WHEN 8 THEN 'HEADER' 
426644                 WHEN 9 THEN 'HEADER' 
426645                 WHEN 10 THEN 'HEADER' 
426646                 
426647                 ELSE null
426648               END                           object_type_code
426649             , CASE r
426650                 WHEN 1 THEN '707' 
426651                 WHEN 2 THEN '707' 
426652                 WHEN 3 THEN '707' 
426653                 WHEN 4 THEN '707' 
426654                 WHEN 5 THEN '707' 
426655                 WHEN 6 THEN '707' 
426656                 WHEN 7 THEN '707' 
426657                 WHEN 8 THEN '707' 
426658                 WHEN 9 THEN '707' 
426659                 WHEN 10 THEN '707' 
426660                 
426661                 ELSE null
426662               END                           source_application_id
426663             , 'S'             source_type_code
426664             , CASE r
426665                 WHEN 1 THEN 'TRANSACTION_ID' 
426666                 WHEN 2 THEN 'TRANSACTION_UOM' 
426667                 WHEN 3 THEN 'PRIMARY_QUANTITY' 
426668                 WHEN 4 THEN 'WIP_TRANSACTION_TYPE_ID' 
426669                 WHEN 5 THEN 'DISTRIBUTION_TYPE' 
426670                 WHEN 6 THEN 'CURRENCY_CODE' 
426671                 WHEN 7 THEN 'CURRENCY_CONVERSION_DATE' 
426672                 WHEN 8 THEN 'CURRENCY_CONVERSION_RATE' 
426673                 WHEN 9 THEN 'CURRENCY_CONVERSION_TYPE' 
426674                 WHEN 10 THEN 'TRANSFER_TO_GL_INDICATOR' 
426675                 
426676                 ELSE null
426677               END                           source_code
426678             , CASE r
426679                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
426680                 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_UOM)
426681                 WHEN 3 THEN TO_CHAR(h1.PRIMARY_QUANTITY)
426682                 WHEN 4 THEN TO_CHAR(h1.WIP_TRANSACTION_TYPE_ID)
426683                 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
426684                 WHEN 6 THEN TO_CHAR(h1.CURRENCY_CODE)
426685                 WHEN 7 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
426686                 WHEN 8 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
426687                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
426688                 WHEN 10 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
426689                 
426690                 ELSE null
426691               END                           source_value
426692             , CASE r
426693                 WHEN 4 THEN fvl7.meaning
426694                 WHEN 5 THEN fvl85.meaning
426695                 WHEN 10 THEN fvl114.meaning
426696                 
426697                 ELSE null
426698               END               source_meaning
426699          FROM xla_events_gt     xet  
426700       , CST_XLA_WIP_HEADERS_V  h1
426701   , fnd_lookup_values    fvl7
426702   , fnd_lookup_values    fvl85
426703   , fnd_lookup_values    fvl114
426704              ,(select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
426705          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
426706            AND xet.event_class_code = C_EVENT_CLASS_CODE
426707               AND h1.event_id = xet.event_id
426708    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
426709   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
426710   AND fvl7.view_application_id(+) = 700
426711   AND fvl7.language(+)            = USERENV('LANG')
426712      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
426713   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
426714   AND fvl85.view_application_id(+) = 700
426715   AND fvl85.language(+)            = USERENV('LANG')
426716      AND fvl114.lookup_type(+)         = 'YES_NO'
426717   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
426718   AND fvl114.view_application_id(+) = 0
426719   AND fvl114.language(+)            = USERENV('LANG')
426720   
426721 )
426722 ;
426723 --
426724 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
426725 
426726       trace
426727          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
426728          ,p_level    => C_LEVEL_STATEMENT
426729          ,p_module   => l_log_module);
426730 
426731 END IF;
426732 --
426733 
426734 
426735 
426736 --
426737 INSERT INTO xla_diag_sources  --line2
426738 (
426739         event_id
426740       , ledger_id
426741       , sla_ledger_id
426742       , description_language
426743       , object_name
426744       , object_type_code
426745       , line_number
426746       , source_application_id
426747       , source_type_code
426748       , source_code
426749       , source_value
426750       , source_meaning
426751       , created_by
426752       , creation_date
426753       , last_update_date
426754       , last_updated_by
426755       , last_update_login
426756       , program_update_date
426757       , program_application_id
426758       , program_id
426759       , request_id
426760 )
426761 SELECT  event_id
426762       , p_target_ledger_id
426763       , p_sla_ledger_id
426764       , p_language
426765       , object_name
426766       , object_type_code
426767       , line_number
426768       , source_application_id
426769       , source_type_code
426770       , source_code
426771       , SUBSTR(source_value,1,1996)
426772       , SUBSTR(source_meaning ,1,200)
426773       , xla_environment_pkg.g_Usr_Id
426774       , TRUNC(SYSDATE)
426775       , TRUNC(SYSDATE)
426776       , xla_environment_pkg.g_Usr_Id
426777       , xla_environment_pkg.g_Login_Id
426778       , TRUNC(SYSDATE)
426779       , xla_environment_pkg.g_Prog_Appl_Id
426780       , xla_environment_pkg.g_Prog_Id
426781       , xla_environment_pkg.g_Req_Id
426782   FROM (
426783        SELECT xet.event_id                  event_id
426784             , l2.line_number                 line_number
426785             , CASE r
426786                WHEN 1 THEN 'CST_XLA_WIP_LINES_V' 
426787                 WHEN 2 THEN 'CST_XLA_WIP_LINES_V' 
426788                 WHEN 3 THEN 'CST_XLA_WIP_LINES_V' 
426789                 WHEN 4 THEN 'CST_XLA_WIP_LINES_V' 
426790                 WHEN 5 THEN 'CST_XLA_WIP_LINES_V' 
426791                 
426792                ELSE null
426793               END                           object_name
426794             , CASE r
426795                 WHEN 1 THEN 'LINE' 
426796                 WHEN 2 THEN 'LINE' 
426797                 WHEN 3 THEN 'LINE' 
426798                 WHEN 4 THEN 'LINE' 
426799                 WHEN 5 THEN 'LINE' 
426800                 
426801                 ELSE null
426802               END                           object_type_code
426803             , CASE r
426804                 WHEN 1 THEN '707' 
426805                 WHEN 2 THEN '707' 
426806                 WHEN 3 THEN '707' 
426807                 WHEN 4 THEN '707' 
426808                 WHEN 5 THEN '707' 
426809                 
426810                 ELSE null
426811               END                           source_application_id
426812             , 'S'             source_type_code
426813             , CASE r
426814                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
426815                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
426816                 WHEN 3 THEN 'ENTERED_AMOUNT' 
426817                 WHEN 4 THEN 'ACCOUNTED_AMOUNT' 
426818                 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
426819                 
426820                 ELSE null
426821               END                           source_code
426822             , CASE r
426823                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
426824                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
426825                 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
426826                 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
426827                 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
426828                 
426829                 ELSE null
426830               END                           source_value
426831             , null              source_meaning
426832          FROM  xla_events_gt     xet  
426833         , CST_XLA_WIP_LINES_V  l2
426834             , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
426835         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
426836           AND xet.event_class_code = C_EVENT_CLASS_CODE
426837             AND l2.event_id          = xet.event_id
426838 
426839 )
426840 ;
426841 --
426842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
426843 
426844       trace
426845          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
426846          ,p_level    => C_LEVEL_STATEMENT
426847          ,p_module   => l_log_module);
426848 
426849 END IF;
426850 
426851 
426852 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
426853       trace
426854          (p_msg      => 'END of insert_sources_622'
426855          ,p_level    => C_LEVEL_PROCEDURE
426856          ,p_module   => l_log_module);
426857 END IF;
426858 EXCEPTION
426859   WHEN xla_exceptions_pkg.application_exception THEN
426860       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
426861             trace
426862                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
426863                ,p_level    => C_LEVEL_EXCEPTION
426864                ,p_module   => l_log_module);
426865       END IF;
426866       RAISE;
426867   WHEN OTHERS THEN
426868       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
426869             trace
426870                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
426871                ,p_level    => C_LEVEL_EXCEPTION
426872                ,p_module   => l_log_module);
426873        END IF;
426874        xla_exceptions_pkg.raise_message
426875            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_622');
426876 END insert_sources_622;
426877 --
426878 
426879 ---------------------------------------
426880 --
426881 -- PRIVATE FUNCTION
426882 --         EventClass_622
426883 --
426884 ----------------------------------------
426885 --
426886 FUNCTION EventClass_622
426887        (p_application_id         IN NUMBER
426888        ,p_base_ledger_id         IN NUMBER
426889        ,p_target_ledger_id       IN NUMBER
426890        ,p_language               IN VARCHAR2
426891        ,p_currency_code          IN VARCHAR2
426892        ,p_sla_ledger_id          IN NUMBER
426893        ,p_pad_start_date         IN DATE
426894        ,p_pad_end_date           IN DATE
426895        ,p_primary_ledger_id      IN NUMBER)
426896 RETURN BOOLEAN IS
426897 --
426898 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_LOT_ALL';
426899 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_LOT';
426900 
426901 l_calculate_acctd_flag   VARCHAR2(1) :='N';
426902 l_calculate_g_l_flag     VARCHAR2(1) :='N';
426903 --
426904 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426905 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426906 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
426907 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
426908 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426909 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
426910 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
426911 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426912 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
426913 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
426914 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426915 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426916 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426917 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
426918 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
426919 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
426920 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
426921 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
426922 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
426923 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
426924 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
426925 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
426926 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
426927 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
426928 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
426929 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
426930 
426931 l_event_id                             NUMBER;
426932 l_previous_event_id                    NUMBER;
426933 l_first_event_id                       NUMBER;
426934 l_last_event_id                        NUMBER;
426935 
426936 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
426937 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
426938 --
426939 --
426940 l_result                    BOOLEAN := TRUE;
426941 l_rows                      NUMBER  := 1000;
426942 l_event_type_name           VARCHAR2(80) := 'All';
426943 l_event_class_name          VARCHAR2(80) := 'WIP Lot';
426944 l_description               VARCHAR2(4000);
426945 l_transaction_reversal      NUMBER;
426946 l_ae_header_id              NUMBER;
426947 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
426948 l_log_module                VARCHAR2(240);
426949 --
426950 l_acct_reversal_source      VARCHAR2(30);
426951 l_trx_reversal_source       VARCHAR2(30);
426952 
426953 l_continue_with_lines       BOOLEAN := TRUE;
426954 --
426955 l_acc_rev_gl_date_source    DATE;                      -- 4262811
426956 --
426957 type t_array_event_id is table of number index by binary_integer;
426958 
426959 l_rec_array_event                    t_rec_array_event;
426960 l_null_rec_array_event               t_rec_array_event;
426961 l_array_ae_header_id                 xla_number_array_type;
426962 l_actual_flag                        VARCHAR2(1) := NULL;
426963 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
426964 l_balance_type_code                  VARCHAR2(1) :=NULL;
426965 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
426966 
426967 --
426968 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
426969 --
426970 
426971 TYPE t_array_source_1 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
426972 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
426973 TYPE t_array_source_6 IS TABLE OF CST_XLA_WIP_HEADERS_V.PRIMARY_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
426974 TYPE t_array_source_7 IS TABLE OF CST_XLA_WIP_HEADERS_V.WIP_TRANSACTION_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
426975 TYPE t_array_source_85 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
426976 TYPE t_array_source_88 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
426977 TYPE t_array_source_92 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
426978 TYPE t_array_source_93 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
426979 TYPE t_array_source_94 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
426980 TYPE t_array_source_114 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
426981 
426982 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
426983 TYPE t_array_source_84 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
426984 TYPE t_array_source_91 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
426985 TYPE t_array_source_95 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
426986 TYPE t_array_source_97 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
426987 
426988 l_array_source_1              t_array_source_1;
426989 l_array_source_4              t_array_source_4;
426990 l_array_source_6              t_array_source_6;
426991 l_array_source_7              t_array_source_7;
426992 l_array_source_7_meaning      t_array_lookup_meaning;
426993 l_array_source_85              t_array_source_85;
426994 l_array_source_85_meaning      t_array_lookup_meaning;
426995 l_array_source_88              t_array_source_88;
426996 l_array_source_92              t_array_source_92;
426997 l_array_source_93              t_array_source_93;
426998 l_array_source_94              t_array_source_94;
426999 l_array_source_114              t_array_source_114;
427000 l_array_source_114_meaning      t_array_lookup_meaning;
427001 
427002 l_array_source_11      t_array_source_11;
427003 l_array_source_84      t_array_source_84;
427004 l_array_source_91      t_array_source_91;
427005 l_array_source_95      t_array_source_95;
427006 l_array_source_97      t_array_source_97;
427007 
427008 --
427009 CURSOR header_cur
427010 IS
427011 SELECT /*+ leading(xet) cardinality(xet,1) */
427012 -- Event Class Code: WIP_LOT
427013     xet.entity_id
427014    ,xet.legal_entity_id
427015    ,xet.entity_code
427016    ,xet.transaction_number
427017    ,xet.event_id
427018    ,xet.event_class_code
427019    ,xet.event_type_code
427020    ,xet.event_number
427021    ,xet.event_date
427022    ,xet.transaction_date
427023    ,xet.reference_num_1
427024    ,xet.reference_num_2
427025    ,xet.reference_num_3
427026    ,xet.reference_num_4
427027    ,xet.reference_char_1
427028    ,xet.reference_char_2
427029    ,xet.reference_char_3
427030    ,xet.reference_char_4
427031    ,xet.reference_date_1
427032    ,xet.reference_date_2
427033    ,xet.reference_date_3
427034    ,xet.reference_date_4
427035    ,xet.event_created_by
427036    ,xet.budgetary_control_flag 
427037   , h1.TRANSACTION_ID    source_1
427038   , h1.TRANSACTION_UOM    source_4
427039   , h1.PRIMARY_QUANTITY    source_6
427040   , h1.WIP_TRANSACTION_TYPE_ID    source_7
427041   , fvl7.meaning   source_7_meaning
427042   , h1.DISTRIBUTION_TYPE    source_85
427043   , fvl85.meaning   source_85_meaning
427044   , h1.CURRENCY_CODE    source_88
427045   , h1.CURRENCY_CONVERSION_DATE    source_92
427046   , h1.CURRENCY_CONVERSION_RATE    source_93
427047   , h1.CURRENCY_CONVERSION_TYPE    source_94
427048   , h1.TRANSFER_TO_GL_INDICATOR    source_114
427049   , fvl114.meaning   source_114_meaning
427050   FROM xla_events_gt     xet 
427051   , CST_XLA_WIP_HEADERS_V  h1
427052   , fnd_lookup_values    fvl7
427053   , fnd_lookup_values    fvl85
427054   , fnd_lookup_values    fvl114
427055  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
427056    and xet.event_class_code = C_EVENT_CLASS_CODE
427057    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
427058    AND fvl7.lookup_type(+)         = 'WIP_TRANSACTION_TYPE'
427059   AND fvl7.lookup_code(+)         = h1.WIP_TRANSACTION_TYPE_ID
427060   AND fvl7.view_application_id(+) = 700
427061   AND fvl7.language(+)            = USERENV('LANG')
427062      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
427063   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
427064   AND fvl85.view_application_id(+) = 700
427065   AND fvl85.language(+)            = USERENV('LANG')
427066      AND fvl114.lookup_type(+)         = 'YES_NO'
427067   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
427068   AND fvl114.view_application_id(+) = 0
427069   AND fvl114.language(+)            = USERENV('LANG')
427070   
427071  ORDER BY event_id
427072 ;
427073 
427074 
427075 --
427076 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
427077 IS
427078 SELECT  /*+ leading(xet) cardinality(xet,1) */
427079 -- Event Class Code: WIP_LOT
427080     xet.entity_id
427081    ,xet.legal_entity_id
427082    ,xet.entity_code
427083    ,xet.transaction_number
427084    ,xet.event_id
427085    ,xet.event_class_code
427086    ,xet.event_type_code
427087    ,xet.event_number
427088    ,xet.event_date
427089    ,xet.transaction_date
427090    ,xet.reference_num_1
427091    ,xet.reference_num_2
427092    ,xet.reference_num_3
427093    ,xet.reference_num_4
427094    ,xet.reference_char_1
427095    ,xet.reference_char_2
427096    ,xet.reference_char_3
427097    ,xet.reference_char_4
427098    ,xet.reference_date_1
427099    ,xet.reference_date_2
427100    ,xet.reference_date_3
427101    ,xet.reference_date_4
427102    ,xet.event_created_by
427103    ,xet.budgetary_control_flag
427104  , l2.LINE_NUMBER  
427105   , l2.CODE_COMBINATION_ID    source_11
427106   , l2.DISTRIBUTION_IDENTIFIER    source_84
427107   , l2.ENTERED_AMOUNT    source_91
427108   , l2.ACCOUNTED_AMOUNT    source_95
427109   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
427110   FROM xla_events_gt     xet 
427111   , CST_XLA_WIP_LINES_V  l2
427112  WHERE xet.event_id between x_first_event_id and x_last_event_id
427113    and xet.event_date between p_pad_start_date and p_pad_end_date
427114    and xet.event_class_code = C_EVENT_CLASS_CODE
427115    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
427116 ;
427117 
427118 --
427119 BEGIN
427120 IF g_log_enabled THEN
427121    l_log_module := C_DEFAULT_MODULE||'.EventClass_622';
427122 END IF;
427123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
427124    trace
427125       (p_msg      => 'BEGIN of EventClass_622'
427126       ,p_level    => C_LEVEL_PROCEDURE
427127       ,p_module   => l_log_module);
427128 END IF;
427129 
427130 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
427131    trace
427132       (p_msg      => 'p_application_id = '||p_application_id||
427133                      ' - p_base_ledger_id = '||p_base_ledger_id||
427134                      ' - p_target_ledger_id  = '||p_target_ledger_id||
427135                      ' - p_language = '||p_language||
427136                      ' - p_currency_code = '||p_currency_code||
427137                      ' - p_sla_ledger_id = '||p_sla_ledger_id
427138       ,p_level    => C_LEVEL_STATEMENT
427139       ,p_module   => l_log_module);
427140 END IF;
427141 --
427142 -- initialze arrays
427143 --
427144 g_array_event.DELETE;
427145 l_rec_array_event := l_null_rec_array_event;
427146 --
427147 --------------------------------------
427148 -- 4262811 Initialze MPA Line Number
427149 --------------------------------------
427150 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
427151 
427152 --
427153 
427154 --
427155 OPEN header_cur;
427156 --
427157 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
427158    trace
427159    (p_msg      => 'SQL - FETCH header_cur'
427160    ,p_level    => C_LEVEL_STATEMENT
427161    ,p_module   => l_log_module);
427162 END IF;
427163 --
427164 LOOP
427165 FETCH header_cur BULK COLLECT INTO
427166         l_array_entity_id
427167       , l_array_legal_entity_id
427168       , l_array_entity_code
427169       , l_array_transaction_num
427170       , l_array_event_id
427171       , l_array_class_code
427172       , l_array_event_type
427173       , l_array_event_number
427174       , l_array_event_date
427175       , l_array_transaction_date
427176       , l_array_reference_num_1
427177       , l_array_reference_num_2
427178       , l_array_reference_num_3
427179       , l_array_reference_num_4
427180       , l_array_reference_char_1
427181       , l_array_reference_char_2
427182       , l_array_reference_char_3
427183       , l_array_reference_char_4
427184       , l_array_reference_date_1
427185       , l_array_reference_date_2
427186       , l_array_reference_date_3
427187       , l_array_reference_date_4
427188       , l_array_event_created_by
427189       , l_array_budgetary_control_flag 
427190       , l_array_source_1
427191       , l_array_source_4
427192       , l_array_source_6
427193       , l_array_source_7
427194       , l_array_source_7_meaning
427195       , l_array_source_85
427196       , l_array_source_85_meaning
427197       , l_array_source_88
427198       , l_array_source_92
427199       , l_array_source_93
427200       , l_array_source_94
427201       , l_array_source_114
427202       , l_array_source_114_meaning
427203       LIMIT l_rows;
427204 --
427205 IF (C_LEVEL_EVENT >= g_log_level) THEN
427206    trace
427207    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
427208    ,p_level    => C_LEVEL_EVENT
427209    ,p_module   => l_log_module);
427210 END IF;
427211 --
427212 EXIT WHEN l_array_entity_id.COUNT = 0;
427213 
427214 -- initialize arrays
427215 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
427216 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
427217 
427218 --
427219 -- Bug 4458708
427220 --
427221 XLA_AE_LINES_PKG.g_LineNumber := 0;
427222 
427223 
427224 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
427225 g_last_hdr_idx := l_array_event_id.LAST;
427226 --
427227 -- loop for the headers. Each iteration is for each header extract row
427228 -- fetched in header cursor
427229 --
427230 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
427231 
427232 --
427233 -- set event info as cache for other routines to refer event attributes
427234 --
427235 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
427236    (p_application_id           => p_application_id
427237    ,p_primary_ledger_id        => p_primary_ledger_id
427238    ,p_base_ledger_id           => p_base_ledger_id
427239    ,p_target_ledger_id         => p_target_ledger_id
427240    ,p_entity_id                => l_array_entity_id(hdr_idx)
427241    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
427242    ,p_entity_code              => l_array_entity_code(hdr_idx)
427243    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
427244    ,p_event_id                 => l_array_event_id(hdr_idx)
427245    ,p_event_class_code         => l_array_class_code(hdr_idx)
427246    ,p_event_type_code          => l_array_event_type(hdr_idx)
427247    ,p_event_number             => l_array_event_number(hdr_idx)
427248    ,p_event_date               => l_array_event_date(hdr_idx)
427249    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
427250    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
427251    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
427252    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
427253    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
427254    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
427255    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
427256    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
427257    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
427258    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
427259    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
427260    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
427261    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
427262    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
427263    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
427264 
427265 --
427266 -- set the status of entry to C_VALID (0)
427267 --
427268 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
427269 
427270 --
427271 -- initialize a row for ae header
427272 --
427273 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
427274 
427275 l_event_id := l_array_event_id(hdr_idx);
427276 
427277 --
427278 -- storing the hdr_idx for event. May be used by line cursor.
427279 --
427280 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
427281 
427282 --
427283 -- store sources from header extract. This can be improved to
427284 -- store only those sources from header extract that may be used in lines
427285 --
427286 
427287 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
427288 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
427289 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
427290 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
427291 g_array_event(l_event_id).array_value_char('source_7_meaning') := l_array_source_7_meaning(hdr_idx);
427292 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
427293 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
427294 g_array_event(l_event_id).array_value_char('source_88') := l_array_source_88(hdr_idx);
427295 g_array_event(l_event_id).array_value_date('source_92') := l_array_source_92(hdr_idx);
427296 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
427297 g_array_event(l_event_id).array_value_char('source_94') := l_array_source_94(hdr_idx);
427298 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
427299 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
427300 
427301 --
427302 -- initilaize the status of ae headers for diffrent balance types
427303 -- the status is initialised to C_NOT_CREATED (2)
427304 --
427305 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
427306 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
427307 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
427308 
427309 --
427310 -- call api to validate and store accounting attributes for header
427311 --
427312 
427313 ------------------------------------------------------------
427314 -- Accrual Reversal : to get date for Standard Source (NONE)
427315 ------------------------------------------------------------
427316 l_acc_rev_gl_date_source := NULL;
427317 
427318      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
427319       l_rec_acct_attrs.array_date_value(1) := 
427320 xla_ae_sources_pkg.GetSystemSourceDate(
427321    p_source_code           => 'XLA_REFERENCE_DATE_1'
427322  , p_source_type_code      => 'Y'
427323  , p_source_application_id =>  602
427324 );
427325      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
427326       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
427327 
427328 
427329 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
427330 
427331 XLA_AE_HEADER_PKG.SetJeCategoryName;
427332 
427333 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
427334 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
427335 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
427336 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
427337 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
427338 
427339 
427340 --
427341 xla_ae_header_pkg.SetHdrDescription(
427342    p_description => Description_2 (
427343    p_application_id => p_application_id 
427344  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
427345  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
427346  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
427347  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
427348  , p_source_7_meaning => g_array_event(l_event_id).array_value_char('source_7_meaning')
427349    )
427350 );
427351 --
427352 
427353 -- No header level analytical criteria
427354 
427355 --
427356 --accounting attribute enhancement, bug 3612931
427357 --
427358 l_trx_reversal_source := SUBSTR(NULL, 1,30);
427359 
427360 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
427361    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
427362 
427363    xla_accounting_err_pkg.build_message
427364       (p_appli_s_name            => 'XLA'
427365       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
427366       ,p_token_1                 => 'ACCT_ATTR_NAME'
427367       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
427368       ,p_token_2                 => 'PRODUCT_NAME'
427369       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
427370       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
427371       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
427372       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
427373 
427374 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
427375    --
427376    -- following sets the accounting attributes needed to reverse
427377    -- accounting for a distributeion
427378    --
427379    xla_ae_lines_pkg.SetTrxReversalAttrs
427380       (p_event_id              => l_event_id
427381       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
427382       ,p_trx_reversal_source   => l_trx_reversal_source);
427383 
427384 END IF;
427385 
427386 
427387 ----------------------------------------------------------------
427388 -- 4262811 -  update the header statuses to invalid in need be
427389 ----------------------------------------------------------------
427390 --
427391 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
427392 
427393 
427394   -----------------------------------------------
427395   -- No accrual reversal for the event class/type
427396   -----------------------------------------------
427397 ----------------------------------------------------------------
427398 
427399 --
427400 -- this ends the header loop iteration for one bulk fetch
427401 --
427402 END LOOP;
427403 
427404 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
427405 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
427406 
427407 --
427408 -- insert dummy rows into lines gt table that were created due to
427409 -- transaction reversals
427410 --
427411 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
427412    l_result := XLA_AE_LINES_PKG.InsertLines;
427413 END IF;
427414 
427415 --
427416 -- reset the temp_line_num for each set of events fetched from header
427417 -- cursor rather than doing it for each new event in line cursor
427418 -- Bug 3939231
427419 --
427420 xla_ae_lines_pkg.g_temp_line_num := 0;
427421 
427422 
427423 
427424 --
427425 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
427426 --
427427 --
427428 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
427429 
427430       trace
427431          (p_msg      => 'SQL - FETCH line_cur'
427432          ,p_level    => C_LEVEL_STATEMENT
427433          ,p_module   => l_log_module);
427434 
427435 END IF;
427436 --
427437 --
427438 LOOP
427439   --
427440   FETCH line_cur BULK COLLECT INTO
427441         l_array_entity_id
427442       , l_array_legal_entity_id
427443       , l_array_entity_code
427444       , l_array_transaction_num
427445       , l_array_event_id
427446       , l_array_class_code
427447       , l_array_event_type
427448       , l_array_event_number
427449       , l_array_event_date
427450       , l_array_transaction_date
427451       , l_array_reference_num_1
427452       , l_array_reference_num_2
427453       , l_array_reference_num_3
427454       , l_array_reference_num_4
427455       , l_array_reference_char_1
427456       , l_array_reference_char_2
427457       , l_array_reference_char_3
427458       , l_array_reference_char_4
427459       , l_array_reference_date_1
427460       , l_array_reference_date_2
427461       , l_array_reference_date_3
427462       , l_array_reference_date_4
427463       , l_array_event_created_by
427464       , l_array_budgetary_control_flag
427465       , l_array_extract_line_num 
427466       , l_array_source_11
427467       , l_array_source_84
427468       , l_array_source_91
427469       , l_array_source_95
427470       , l_array_source_97
427471       LIMIT l_rows;
427472 
427473   --
427474   IF (C_LEVEL_EVENT >= g_log_level) THEN
427475             trace
427476                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
427477                ,p_level    => C_LEVEL_EVENT
427478                ,p_module   => l_log_module);
427479   END IF;
427480   --
427481   EXIT WHEN l_array_entity_id.count = 0;
427482 
427483   XLA_AE_LINES_PKG.g_rec_lines := null;
427484 
427485 --
427486 -- Bug 4458708
427487 --
427488 XLA_AE_LINES_PKG.g_LineNumber := 0;
427489 --
427490 --
427491 
427492 FOR Idx IN 1..l_array_event_id.count LOOP
427493    --
427494    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
427495    --
427496    l_event_id := l_array_event_id(idx);  -- 5648433
427497 
427498    --
427499    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
427500    --
427501 
427502    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
427503              (g_array_event(l_event_id).array_value_num('header_index'))
427504          ,'N'
427505          ) <> 'Y'
427506    THEN
427507       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
427508          trace
427509             (p_msg      => 'Trancaction revesal option is not Y '
427510             ,p_level    => C_LEVEL_STATEMENT
427511             ,p_module   => l_log_module);
427512       END IF;
427513 
427514 --
427515 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
427516 --
427517 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
427518 --
427519 -- set event info as cache for other routines to refer event attributes
427520 --
427521 
427522 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
427523    l_previous_event_id := l_event_id;
427524 
427525    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
427526       (p_application_id           => p_application_id
427527       ,p_primary_ledger_id        => p_primary_ledger_id
427528       ,p_base_ledger_id           => p_base_ledger_id
427529       ,p_target_ledger_id         => p_target_ledger_id
427530       ,p_entity_id                => l_array_entity_id(Idx)
427531       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
427532       ,p_entity_code              => l_array_entity_code(Idx)
427533       ,p_transaction_num          => l_array_transaction_num(Idx)
427534       ,p_event_id                 => l_array_event_id(Idx)
427535       ,p_event_class_code         => l_array_class_code(Idx)
427536       ,p_event_type_code          => l_array_event_type(Idx)
427537       ,p_event_number             => l_array_event_number(Idx)
427538       ,p_event_date               => l_array_event_date(Idx)
427539       ,p_transaction_date         => l_array_transaction_date(Idx)
427540       ,p_reference_num_1          => l_array_reference_num_1(Idx)
427541       ,p_reference_num_2          => l_array_reference_num_2(Idx)
427542       ,p_reference_num_3          => l_array_reference_num_3(Idx)
427543       ,p_reference_num_4          => l_array_reference_num_4(Idx)
427544       ,p_reference_char_1         => l_array_reference_char_1(Idx)
427545       ,p_reference_char_2         => l_array_reference_char_2(Idx)
427546       ,p_reference_char_3         => l_array_reference_char_3(Idx)
427547       ,p_reference_char_4         => l_array_reference_char_4(Idx)
427548       ,p_reference_date_1         => l_array_reference_date_1(Idx)
427549       ,p_reference_date_2         => l_array_reference_date_2(Idx)
427550       ,p_reference_date_3         => l_array_reference_date_3(Idx)
427551       ,p_reference_date_4         => l_array_reference_date_4(Idx)
427552       ,p_event_created_by         => l_array_event_created_by(Idx)
427553       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
427554        --
427555 END IF;
427556 
427557 
427558 
427559 --
427560 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
427561 
427562 l_acct_reversal_source := SUBSTR(NULL, 1,30);
427563 
427564 IF l_continue_with_lines THEN
427565    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
427566       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
427567 
427568       xla_accounting_err_pkg.build_message
427569          (p_appli_s_name            => 'XLA'
427570          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
427571          ,p_token_1                 => 'LINE_NUMBER'
427572          ,p_value_1                 => l_array_extract_line_num(Idx)
427573          ,p_token_2                 => 'PRODUCT_NAME'
427574          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
427575          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
427576          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
427577          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
427578 
427579    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
427580       --
427581       -- following sets the accounting attributes needed to reverse
427582       -- accounting for a distributeion
427583       --
427584 
427585       --
427586       -- 5217187
427587       --
427588       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
427589       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
427590                                        g_array_event(l_event_id).array_value_num('header_index'));
427591       --
427592       --
427593 
427594       -- No reversal code generated
427595 
427596       xla_ae_lines_pkg.SetAcctReversalAttrs
427597          (p_event_id             => l_event_id
427598          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
427599          ,p_calculate_acctd_flag => l_calculate_acctd_flag
427600          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
427601    END IF;
427602 
427603    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
427604        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
427605 
427606 --
427607 AcctLineType_324 (
427608  p_application_id  => p_application_id
427609  ,p_event_id     => l_event_id
427610  ,p_calculate_acctd_flag => l_calculate_acctd_flag
427611  ,p_calculate_g_l_flag => l_calculate_g_l_flag
427612  ,p_actual_flag => l_actual_flag
427613  ,p_balance_type_code => l_balance_type_code
427614  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
427615  
427616  , p_source_11 => l_array_source_11(Idx)
427617  , p_source_84 => l_array_source_84(Idx)
427618  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
427619  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
427620  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
427621  , p_source_91 => l_array_source_91(Idx)
427622  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
427623  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
427624  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
427625  , p_source_95 => l_array_source_95(Idx)
427626  , p_source_97 => l_array_source_97(Idx)
427627  );
427628 If(l_balance_type_code = 'A') THEN
427629   l_actual_gain_loss_ref := l_gain_or_loss_ref;
427630 END IF;
427631 
427632 --
427633 
427634 
427635 --
427636 AcctLineType_536 (
427637  p_application_id  => p_application_id
427638  ,p_event_id     => l_event_id
427639  ,p_calculate_acctd_flag => l_calculate_acctd_flag
427640  ,p_calculate_g_l_flag => l_calculate_g_l_flag
427641  ,p_actual_flag => l_actual_flag
427642  ,p_balance_type_code => l_balance_type_code
427643  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
427644  
427645  , p_source_11 => l_array_source_11(Idx)
427646  , p_source_84 => l_array_source_84(Idx)
427647  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
427648  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
427649  , p_source_88 => g_array_event(l_event_id).array_value_char('source_88')
427650  , p_source_91 => l_array_source_91(Idx)
427651  , p_source_92 => g_array_event(l_event_id).array_value_date('source_92')
427652  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
427653  , p_source_94 => g_array_event(l_event_id).array_value_char('source_94')
427654  , p_source_95 => l_array_source_95(Idx)
427655  , p_source_97 => l_array_source_97(Idx)
427656  );
427657 If(l_balance_type_code = 'A') THEN
427658   l_actual_gain_loss_ref := l_gain_or_loss_ref;
427659 END IF;
427660 
427661 --
427662 
427663       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
427664       -- or secondary ledger that has different currency with primary
427665       -- or alc that is calculated by sla
427666       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
427667             (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'))
427668 
427669 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
427670 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
427671           AND (l_actual_flag = 'A')) THEN
427672         XLA_AE_LINES_PKG.CreateGainOrLossLines(
427673           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
427674          ,p_application_id   => p_application_id
427675          ,p_amb_context_code => 'DEFAULT'
427676          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
427677          ,p_event_class_code => C_EVENT_CLASS_CODE
427678          ,p_event_type_code  => C_EVENT_TYPE_CODE
427679          
427680          ,p_gain_ccid        => -1
427681          ,p_loss_ccid        => -1
427682 
427683          ,p_actual_flag      => l_actual_flag
427684          ,p_enc_flag         => null
427685          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
427686          ,p_enc_g_l_ref      => null
427687          );
427688       END IF;
427689    END IF;
427690 END IF;
427691 
427692    ELSE
427693       --
427694       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
427695       --
427696       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
427697          trace
427698             (p_msg      => 'Trancaction revesal option is Y'
427699             ,p_level    => C_LEVEL_STATEMENT
427700             ,p_module   => l_log_module);
427701       END IF;
427702    END IF;
427703 
427704 END LOOP;
427705 l_result := XLA_AE_LINES_PKG.InsertLines ;
427706 end loop;
427707 close line_cur;
427708 
427709 
427710 --
427711 -- insert headers into xla_ae_headers_gt table
427712 --
427713 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
427714 
427715 -- insert into errors table here.
427716 
427717 END LOOP;
427718 
427719 --
427720 -- 4865292
427721 --
427722 -- Compare g_hdr_extract_count with event count in
427723 -- CreateHeadersAndLines.
427724 --
427725 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
427726 
427727 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
427728    trace (p_msg     => '# rows extracted from header extract objects '
427729                     || ' (running total): '
427730                     || g_hdr_extract_count
427731          ,p_level   => C_LEVEL_STATEMENT
427732          ,p_module  => l_log_module);
427733 END IF;
427734 
427735 CLOSE header_cur;
427736 --
427737 
427738 --
427739 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
427740    trace
427741       (p_msg      => 'END of EventClass_622'
427742       ,p_level    => C_LEVEL_PROCEDURE
427743       ,p_module   => l_log_module);
427744 END IF;
427745 --
427746 RETURN l_result;
427747 EXCEPTION
427748 WHEN xla_exceptions_pkg.application_exception THEN
427749    
427750 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
427751 
427752    
427753 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
427754 
427755    RAISE;
427756 
427757 WHEN NO_DATA_FOUND THEN
427758 
427759 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
427760 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
427761 
427762 FOR header_record IN header_cur
427763 LOOP
427764     l_array_header_events(header_record.event_id) := header_record.event_id;
427765 END LOOP;
427766 
427767 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
427768 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
427769 
427770 fnd_file.put_line(fnd_file.LOG, '                    ');
427771 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
427772 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
427773 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
427774 
427775 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
427776 LOOP
427777 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
427778 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
427779         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
427780 	END IF;
427781 END LOOP;
427782 
427783 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
427784 fnd_file.put_line(fnd_file.LOG, '                    ');
427785 
427786 
427787 xla_exceptions_pkg.raise_message
427788       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_622');
427789 
427790 
427791 WHEN OTHERS THEN
427792    xla_exceptions_pkg.raise_message
427793       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventClass_622');
427794 END EventClass_622;
427795 --
427796 
427797 ---------------------------------------
427798 --
427799 -- PRIVATE PROCEDURE
427800 --         insert_sources_623
427801 --
427802 ----------------------------------------
427803 --
427804 PROCEDURE insert_sources_623(
427805                                 p_target_ledger_id       IN NUMBER
427806                               , p_language               IN VARCHAR2
427807                               , p_sla_ledger_id          IN NUMBER
427808                               , p_pad_start_date         IN DATE
427809                               , p_pad_end_date           IN DATE
427810                          )
427811 IS
427812 
427813 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_NEG_COMP_ISSUE';
427814 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
427815 p_apps_owner                   VARCHAR2(30);
427816 l_log_module                   VARCHAR2(240);
427817 BEGIN
427818 IF g_log_enabled THEN
427819       l_log_module := C_DEFAULT_MODULE||'.insert_sources_623';
427820 END IF;
427821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
427822 
427823       trace
427824          (p_msg      => 'BEGIN of insert_sources_623'
427825          ,p_level    => C_LEVEL_PROCEDURE
427826          ,p_module   => l_log_module);
427827 
427828 END IF;
427829 
427830 -- select APPS owner
427831 SELECT oracle_username
427832   INTO p_apps_owner
427833   FROM fnd_oracle_userid
427834  WHERE read_only_flag = 'U'
427835 ;
427836 
427837 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
427838       trace
427839          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
427840                         ' - p_language = '||p_language||
427841                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
427842                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
427843                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
427844                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
427845          ,p_level    => C_LEVEL_STATEMENT
427846          ,p_module   => l_log_module);
427847 END IF;
427848 
427849 
427850 --
427851 INSERT INTO xla_diag_sources --hdr1
427852 (
427853         event_id
427854       , ledger_id
427855       , sla_ledger_id
427856       , description_language
427857       , object_name
427858       , object_type_code
427859       , line_number
427860       , source_application_id
427861       , source_type_code
427862       , source_code
427863       , source_value
427864       , source_meaning
427865       , created_by
427866       , creation_date
427867       , last_update_date
427868       , last_updated_by
427869       , last_update_login
427870       , program_update_date
427871       , program_application_id
427872       , program_id
427873       , request_id
427874 )
427875 SELECT
427876         event_id
427877       , p_target_ledger_id
427878       , p_sla_ledger_id
427879       , p_language
427880       , object_name
427881       , object_type_code
427882       , line_number
427883       , source_application_id
427884       , source_type_code
427885       , source_code
427886       , SUBSTR(source_value ,1,1996)
427887       , SUBSTR(source_meaning,1,200)
427888       , xla_environment_pkg.g_Usr_Id
427889       , TRUNC(SYSDATE)
427890       , TRUNC(SYSDATE)
427891       , xla_environment_pkg.g_Usr_Id
427892       , xla_environment_pkg.g_Login_Id
427893       , TRUNC(SYSDATE)
427894       , xla_environment_pkg.g_Prog_Appl_Id
427895       , xla_environment_pkg.g_Prog_Id
427896       , xla_environment_pkg.g_Req_Id
427897   FROM (
427898        SELECT xet.event_id                  event_id
427899             , 0                             line_number
427900             , CASE r
427901                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
427902                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
427903                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
427904                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
427905                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
427906                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
427907                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
427908                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
427909                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
427910                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
427911                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
427912                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
427913                 WHEN 13 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
427914                 WHEN 14 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
427915                 WHEN 15 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
427916                 WHEN 16 THEN 'CST_XLA_REP_ITEM_REF_V' 
427917                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
427918                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
427919                 WHEN 19 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
427920                 WHEN 20 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
427921                 WHEN 21 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
427922                 WHEN 22 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
427923                 WHEN 23 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
427924                 WHEN 24 THEN 'CST_XLA_REP_SCHED_REF_V' 
427925                 WHEN 25 THEN 'CST_XLA_REP_SCHED_REF_V' 
427926                 WHEN 26 THEN 'CST_XLA_REP_SCHED_REF_V' 
427927                 WHEN 27 THEN 'CST_XLA_REP_SCHED_REF_V' 
427928                 WHEN 28 THEN 'CST_XLA_REP_SCHED_REF_V' 
427929                 WHEN 29 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
427930                 WHEN 30 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
427931                 WHEN 31 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
427932                 WHEN 32 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
427933                 WHEN 33 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
427934                 WHEN 34 THEN 'CST_XLA_INV_HEADERS_V' 
427935                 WHEN 35 THEN 'CST_XLA_INV_HEADERS_V' 
427936                 
427937                ELSE null
427938               END                           object_name
427939             , CASE r
427940                 WHEN 1 THEN 'HEADER' 
427941                 WHEN 2 THEN 'HEADER' 
427942                 WHEN 3 THEN 'HEADER' 
427943                 WHEN 4 THEN 'HEADER' 
427944                 WHEN 5 THEN 'HEADER' 
427945                 WHEN 6 THEN 'HEADER' 
427946                 WHEN 7 THEN 'HEADER' 
427947                 WHEN 8 THEN 'HEADER' 
427948                 WHEN 9 THEN 'HEADER' 
427949                 WHEN 10 THEN 'HEADER' 
427950                 WHEN 11 THEN 'HEADER' 
427951                 WHEN 12 THEN 'HEADER' 
427952                 WHEN 13 THEN 'HEADER' 
427953                 WHEN 14 THEN 'HEADER' 
427954                 WHEN 15 THEN 'HEADER' 
427955                 WHEN 16 THEN 'HEADER' 
427956                 WHEN 17 THEN 'HEADER' 
427957                 WHEN 18 THEN 'HEADER' 
427958                 WHEN 19 THEN 'HEADER' 
427959                 WHEN 20 THEN 'HEADER' 
427960                 WHEN 21 THEN 'HEADER' 
427961                 WHEN 22 THEN 'HEADER' 
427962                 WHEN 23 THEN 'HEADER' 
427963                 WHEN 24 THEN 'HEADER' 
427964                 WHEN 25 THEN 'HEADER' 
427965                 WHEN 26 THEN 'HEADER' 
427966                 WHEN 27 THEN 'HEADER' 
427967                 WHEN 28 THEN 'HEADER' 
427968                 WHEN 29 THEN 'HEADER' 
427969                 WHEN 30 THEN 'HEADER' 
427970                 WHEN 31 THEN 'HEADER' 
427971                 WHEN 32 THEN 'HEADER' 
427972                 WHEN 33 THEN 'HEADER' 
427973                 WHEN 34 THEN 'HEADER' 
427974                 WHEN 35 THEN 'HEADER' 
427975                 
427976                 ELSE null
427977               END                           object_type_code
427978             , CASE r
427979                 WHEN 1 THEN '707' 
427980                 WHEN 2 THEN '707' 
427981                 WHEN 3 THEN '707' 
427982                 WHEN 4 THEN '707' 
427983                 WHEN 5 THEN '707' 
427984                 WHEN 6 THEN '707' 
427985                 WHEN 7 THEN '707' 
427986                 WHEN 8 THEN '707' 
427987                 WHEN 9 THEN '707' 
427988                 WHEN 10 THEN '707' 
427989                 WHEN 11 THEN '707' 
427990                 WHEN 12 THEN '707' 
427991                 WHEN 13 THEN '707' 
427992                 WHEN 14 THEN '707' 
427993                 WHEN 15 THEN '707' 
427994                 WHEN 16 THEN '707' 
427995                 WHEN 17 THEN '707' 
427996                 WHEN 18 THEN '707' 
427997                 WHEN 19 THEN '707' 
427998                 WHEN 20 THEN '707' 
427999                 WHEN 21 THEN '707' 
428000                 WHEN 22 THEN '707' 
428001                 WHEN 23 THEN '707' 
428002                 WHEN 24 THEN '707' 
428003                 WHEN 25 THEN '707' 
428004                 WHEN 26 THEN '707' 
428005                 WHEN 27 THEN '707' 
428006                 WHEN 28 THEN '707' 
428007                 WHEN 29 THEN '707' 
428008                 WHEN 30 THEN '707' 
428009                 WHEN 31 THEN '707' 
428010                 WHEN 32 THEN '707' 
428011                 WHEN 33 THEN '707' 
428012                 WHEN 34 THEN '707' 
428013                 WHEN 35 THEN '707' 
428014                 
428015                 ELSE null
428016               END                           source_application_id
428017             , 'S'             source_type_code
428018             , CASE r
428019                 WHEN 1 THEN 'TRANSACTION_ID' 
428020                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
428021                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
428022                 WHEN 4 THEN 'TRANSACTION_UOM' 
428023                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
428024                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
428025                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
428026                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
428027                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
428028                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
428029                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
428030                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
428031                 WHEN 13 THEN 'DIS_JOB_BRIDGING_ACCT' 
428032                 WHEN 14 THEN 'WIP_ENTITY_TYPE' 
428033                 WHEN 15 THEN 'FLO_SCH_BRIDGING_ACCT' 
428034                 WHEN 16 THEN 'REP_ITM_BRIDGING_ACCT' 
428035                 WHEN 17 THEN 'TRANSACTION_SOURCE_ID' 
428036                 WHEN 18 THEN 'TRANSACTION_ACTION_ID' 
428037                 WHEN 19 THEN 'DIS_JOB_MATERIAL_ACCT' 
428038                 WHEN 20 THEN 'DIS_JOB_MAT_OVH_ACCT' 
428039                 WHEN 21 THEN 'DIS_JOB_RESOURCE_ACCT' 
428040                 WHEN 22 THEN 'DIS_JOB_OUT_PROC_ACCT' 
428041                 WHEN 23 THEN 'DIS_JOB_OVERHEAD_ACCT' 
428042                 WHEN 24 THEN 'REP_SCHED_MATERIAL_ACCOUNT' 
428043                 WHEN 25 THEN 'REP_SCHED_MAT_OVHD_ACCOUNT' 
428044                 WHEN 26 THEN 'REP_SCHED_RESOURCE_ACCOUNT' 
428045                 WHEN 27 THEN 'REP_SCHED_OUT_PROC_ACCOUNT' 
428046                 WHEN 28 THEN 'REP_SCHED_OVERHEAD_ACCOUNT' 
428047                 WHEN 29 THEN 'FLO_SCH_MATERIAL_ACCT' 
428048                 WHEN 30 THEN 'FLO_SCH_MAT_OVHD_ACCT' 
428049                 WHEN 31 THEN 'FLO_SCH_RESOURCE_ACCT' 
428050                 WHEN 32 THEN 'FLO_SCH_OUT_PROC_ACCT' 
428051                 WHEN 33 THEN 'FLO_SCH_OVERHEAD_ACCT' 
428052                 WHEN 34 THEN 'DISTRIBUTION_TYPE' 
428053                 WHEN 35 THEN 'TRANSFER_TO_GL_INDICATOR' 
428054                 
428055                 ELSE null
428056               END                           source_code
428057             , CASE r
428058                 WHEN 1 THEN TO_CHAR(h3.TRANSACTION_ID)
428059                 WHEN 2 THEN TO_CHAR(h7.ITEM_CONCATENATED_SEGMENTS)
428060                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
428061                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
428062                 WHEN 5 THEN TO_CHAR(h8.INV_TXN_TYPE_DESCRIPTION)
428063                 WHEN 6 THEN TO_CHAR(h5.INV_TXN_DISTRIBUTION_ACCT)
428064                 WHEN 7 THEN TO_CHAR(h9.PLA_BRIDGING_ACCOUNT)
428065                 WHEN 8 THEN TO_CHAR(h9.PLA_MATERIAL_ACCOUNT)
428066                 WHEN 9 THEN TO_CHAR(h9.PLA_MATERIAL_OVERHEAD_ACCOUNT)
428067                 WHEN 10 THEN TO_CHAR(h9.PLA_RESOURCE_ACCOUNT)
428068                 WHEN 11 THEN TO_CHAR(h9.PLA_OUTSIDE_PROCESSING_ACCOUNT)
428069                 WHEN 12 THEN TO_CHAR(h9.PLA_OVERHEAD_ACCOUNT)
428070                 WHEN 13 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
428071                 WHEN 14 THEN TO_CHAR(h12.WIP_ENTITY_TYPE)
428072                 WHEN 15 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
428073                 WHEN 16 THEN TO_CHAR(h10.REP_ITM_BRIDGING_ACCT)
428074                 WHEN 17 THEN TO_CHAR(h5.TRANSACTION_SOURCE_ID)
428075                 WHEN 18 THEN TO_CHAR(h3.TRANSACTION_ACTION_ID)
428076                 WHEN 19 THEN TO_CHAR(h1.DIS_JOB_MATERIAL_ACCT)
428077                 WHEN 20 THEN TO_CHAR(h1.DIS_JOB_MAT_OVH_ACCT)
428078                 WHEN 21 THEN TO_CHAR(h1.DIS_JOB_RESOURCE_ACCT)
428079                 WHEN 22 THEN TO_CHAR(h1.DIS_JOB_OUT_PROC_ACCT)
428080                 WHEN 23 THEN TO_CHAR(h1.DIS_JOB_OVERHEAD_ACCT)
428081                 WHEN 24 THEN TO_CHAR(h11.REP_SCHED_MATERIAL_ACCOUNT)
428082                 WHEN 25 THEN TO_CHAR(h11.REP_SCHED_MAT_OVHD_ACCOUNT)
428083                 WHEN 26 THEN TO_CHAR(h11.REP_SCHED_RESOURCE_ACCOUNT)
428084                 WHEN 27 THEN TO_CHAR(h11.REP_SCHED_OUT_PROC_ACCOUNT)
428085                 WHEN 28 THEN TO_CHAR(h11.REP_SCHED_OVERHEAD_ACCOUNT)
428086                 WHEN 29 THEN TO_CHAR(h2.FLO_SCH_MATERIAL_ACCT)
428087                 WHEN 30 THEN TO_CHAR(h2.FLO_SCH_MAT_OVHD_ACCT)
428088                 WHEN 31 THEN TO_CHAR(h2.FLO_SCH_RESOURCE_ACCT)
428089                 WHEN 32 THEN TO_CHAR(h2.FLO_SCH_OUT_PROC_ACCT)
428090                 WHEN 33 THEN TO_CHAR(h2.FLO_SCH_OVERHEAD_ACCT)
428091                 WHEN 34 THEN TO_CHAR(h3.DISTRIBUTION_TYPE)
428092                 WHEN 35 THEN TO_CHAR(h3.TRANSFER_TO_GL_INDICATOR)
428093                 
428094                 ELSE null
428095               END                           source_value
428096             , CASE r
428097                 WHEN 14 THEN fvl55.meaning
428098                 WHEN 18 THEN fvl62.meaning
428099                 WHEN 34 THEN fvl85.meaning
428100                 WHEN 35 THEN fvl114.meaning
428101                 
428102                 ELSE null
428103               END               source_meaning
428104         FROM xla_events_gt     xet  
428105       , CST_XLA_DISCRETE_JOB_REF_V  h1
428106       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
428107       , CST_XLA_INV_HEADERS_V  h3
428108       , CST_XLA_INV_REF_V  h5
428109       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
428110       , CST_XLA_INV_TXN_TYPES_REF_V  h8
428111       , CST_XLA_PLA_CATEGORY_REF_V  h9
428112       , CST_XLA_REP_ITEM_REF_V  h10
428113       , CST_XLA_REP_SCHED_REF_V  h11
428114       , CST_XLA_WIP_ENTITY_REF_V  h12
428115   , fnd_lookup_values    fvl55
428116   , fnd_lookup_values    fvl62
428117   , fnd_lookup_values    fvl85
428118   , fnd_lookup_values    fvl114
428119             ,(select rownum r from all_objects where rownum <= 35 and owner = p_apps_owner)
428120        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
428121          AND xet.event_type_code = C_EVENT_TYPE_CODE
428122             AND h3.event_id = xet.event_id
428123  AND h1.dis_job_wip_entity_id  (+) = h5.transaction_source_id AND h2.flo_sch_wip_entity_id  (+) = h5.transaction_source_id AND h5.ref_transaction_id = h3.transaction_id AND h7.inventory_item_id = h3.inventory_item_id and h7.organization_id = h3.organization_id AND h8.inv_transaction_type_id = h3.transaction_type_id AND h9.pla_cat_organization_id  (+) = h3.organization_id 
428124 and h9.pla_cat_item_id          (+) = h3.inventory_item_id 
428125 and h9.pla_subinv_cg            (+) = h3.h_subinv_cg AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  and h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.transaction_id  (+) = h5.ref_transaction_id AND h12.wip_entity_id  (+) = h5.transaction_source_id   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
428126   AND fvl55.lookup_code(+)         = h12.WIP_ENTITY_TYPE
428127   AND fvl55.view_application_id(+) = 700
428128   AND fvl55.language(+)            = USERENV('LANG')
428129      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
428130   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
428131   AND fvl62.view_application_id(+) = 700
428132   AND fvl62.language(+)            = USERENV('LANG')
428133      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
428134   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
428135   AND fvl85.view_application_id(+) = 700
428136   AND fvl85.language(+)            = USERENV('LANG')
428137      AND fvl114.lookup_type(+)         = 'YES_NO'
428138   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
428139   AND fvl114.view_application_id(+) = 0
428140   AND fvl114.language(+)            = USERENV('LANG')
428141   
428142 )
428143 ;
428144 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
428145 
428146       trace
428147          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
428148          ,p_level    => C_LEVEL_STATEMENT
428149          ,p_module   => l_log_module);
428150 
428151 END IF;
428152 --
428153 
428154 
428155 
428156 --
428157 INSERT INTO xla_diag_sources --line1
428158 (
428159         event_id
428160       , ledger_id
428161       , sla_ledger_id
428162       , description_language
428163       , object_name
428164       , object_type_code
428165       , line_number
428166       , source_application_id
428167       , source_type_code
428168       , source_code
428169       , source_value
428170       , source_meaning
428171       , created_by
428172       , creation_date
428173       , last_update_date
428174       , last_updated_by
428175       , last_update_login
428176       , program_update_date
428177       , program_application_id
428178       , program_id
428179       , request_id
428180 )
428181 SELECT  event_id
428182       , p_target_ledger_id
428183       , p_sla_ledger_id
428184       , p_language
428185       , object_name
428186       , object_type_code
428187       , line_number
428188       , source_application_id
428189       , source_type_code
428190       , source_code
428191       , SUBSTR(source_value,1,1996)
428192       , SUBSTR(source_meaning,1,200)
428193       , xla_environment_pkg.g_Usr_Id
428194       , TRUNC(SYSDATE)
428195       , TRUNC(SYSDATE)
428196       , xla_environment_pkg.g_Usr_Id
428197       , xla_environment_pkg.g_Login_Id
428198       , TRUNC(SYSDATE)
428199       , xla_environment_pkg.g_Prog_Appl_Id
428200       , xla_environment_pkg.g_Prog_Id
428201       , xla_environment_pkg.g_Req_Id
428202   FROM (
428203        SELECT xet.event_id                  event_id
428204             , l4.line_number                 line_number
428205             , CASE r
428206                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
428207                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
428208                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
428209                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
428210                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
428211                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
428212                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
428213                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
428214                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
428215                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
428216                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
428217                 WHEN 12 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
428218                 
428219                ELSE null
428220               END                           object_name
428221             , CASE r
428222                 WHEN 1 THEN 'LINE' 
428223                 WHEN 2 THEN 'LINE' 
428224                 WHEN 3 THEN 'LINE' 
428225                 WHEN 4 THEN 'LINE' 
428226                 WHEN 5 THEN 'LINE' 
428227                 WHEN 6 THEN 'LINE' 
428228                 WHEN 7 THEN 'LINE' 
428229                 WHEN 8 THEN 'LINE' 
428230                 WHEN 9 THEN 'LINE' 
428231                 WHEN 10 THEN 'LINE' 
428232                 WHEN 11 THEN 'LINE' 
428233                 WHEN 12 THEN 'LINE' 
428234                 
428235                 ELSE null
428236               END                           object_type_code
428237             , CASE r
428238                 WHEN 1 THEN '707' 
428239                 WHEN 2 THEN '707' 
428240                 WHEN 3 THEN '707' 
428241                 WHEN 4 THEN '707' 
428242                 WHEN 5 THEN '707' 
428243                 WHEN 6 THEN '707' 
428244                 WHEN 7 THEN '707' 
428245                 WHEN 8 THEN '707' 
428246                 WHEN 9 THEN '707' 
428247                 WHEN 10 THEN '707' 
428248                 WHEN 11 THEN '707' 
428249                 WHEN 12 THEN '707' 
428250                 
428251                 ELSE null
428252               END                           source_application_id
428253             , 'S'             source_type_code
428254             , CASE r
428255                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
428256                 WHEN 2 THEN 'COST_ELEMENT_ID' 
428257                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
428258                 WHEN 4 THEN 'CURRENCY_CODE' 
428259                 WHEN 5 THEN 'ENTERED_AMOUNT' 
428260                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
428261                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
428262                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
428263                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
428264                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
428265                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
428266                 WHEN 12 THEN 'ASSET_INVENTORY' 
428267                 
428268                 ELSE null
428269               END                           source_code
428270             , CASE r
428271                 WHEN 1 THEN TO_CHAR(l4.CODE_COMBINATION_ID)
428272                 WHEN 2 THEN TO_CHAR(l4.COST_ELEMENT_ID)
428273                 WHEN 3 THEN TO_CHAR(l4.DISTRIBUTION_IDENTIFIER)
428274                 WHEN 4 THEN TO_CHAR(l4.CURRENCY_CODE)
428275                 WHEN 5 THEN TO_CHAR(l4.ENTERED_AMOUNT)
428276                 WHEN 6 THEN TO_CHAR(l4.CURRENCY_CONVERSION_DATE)
428277                 WHEN 7 THEN TO_CHAR(l4.CURRENCY_CONVERSION_RATE)
428278                 WHEN 8 THEN TO_CHAR(l4.CURRENCY_CONVERSION_TYPE)
428279                 WHEN 9 THEN TO_CHAR(l4.ACCOUNTED_AMOUNT)
428280                 WHEN 10 THEN TO_CHAR(l4.ACCOUNTING_LINE_TYPE_CODE)
428281                 WHEN 11 THEN TO_CHAR(l4.L_ORGANIZATION_CODE)
428282                 WHEN 12 THEN TO_CHAR(l6.ASSET_INVENTORY)
428283                 
428284                 ELSE null
428285               END                           source_value
428286             , CASE r
428287                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
428288                           1009615
428289                          ,TO_CHAR(l4.COST_ELEMENT_ID)
428290                          ,'COST_ELEMENT_ID'
428291                          ,'S'
428292                          ,707)
428293                 WHEN 12 THEN fvl110.meaning
428294                 
428295                 ELSE null
428296               END               source_meaning
428297          FROM  xla_events_gt     xet  
428298         , CST_XLA_INV_LINES_V  l4
428299         , CST_XLA_INV_SEC_INVS_REF_V  l6
428300   , fnd_lookup_values    fvl110
428301             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
428302         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
428303           AND xet.event_type_code = C_EVENT_TYPE_CODE
428304             AND l4.event_id          = xet.event_id
428305  AND l6.subinventory  (+) = l4.subinventory_code  and l6.subinv_organization_id  (+) = l4.l_organization_id   AND fvl110.lookup_type(+)         = 'YES_NO'
428306   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
428307   AND fvl110.view_application_id(+) = 0
428308   AND fvl110.language(+)            = USERENV('LANG')
428309   
428310 )
428311 ;
428312 --
428313 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
428314 
428315       trace
428316          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
428317          ,p_level    => C_LEVEL_STATEMENT
428318          ,p_module   => l_log_module);
428319 
428320 END IF;
428321 
428322 
428323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
428324       trace
428325          (p_msg      => 'END of insert_sources_623'
428326          ,p_level    => C_LEVEL_PROCEDURE
428327          ,p_module   => l_log_module);
428328 END IF;
428329 EXCEPTION
428330   WHEN xla_exceptions_pkg.application_exception THEN
428331       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
428332             trace
428333                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
428334                ,p_level    => C_LEVEL_EXCEPTION
428335                ,p_module   => l_log_module);
428336       END IF;
428337       RAISE;
428338   WHEN OTHERS THEN
428339       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
428340             trace
428341                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
428342                ,p_level    => C_LEVEL_EXCEPTION
428343                ,p_module   => l_log_module);
428344        END IF;
428345        xla_exceptions_pkg.raise_message
428346            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_623');
428347 END insert_sources_623;
428348 --
428349 
428350 ---------------------------------------
428351 --
428352 -- PRIVATE FUNCTION
428353 --         EventType_623
428354 --
428355 ----------------------------------------
428356 --
428357 FUNCTION EventType_623
428358        (p_application_id         IN NUMBER
428359        ,p_base_ledger_id         IN NUMBER
428360        ,p_target_ledger_id       IN NUMBER
428361        ,p_language               IN VARCHAR2
428362        ,p_currency_code          IN VARCHAR2
428363        ,p_sla_ledger_id          IN NUMBER
428364        ,p_pad_start_date         IN DATE
428365        ,p_pad_end_date           IN DATE
428366        ,p_primary_ledger_id      IN NUMBER)
428367 RETURN BOOLEAN IS
428368 --
428369 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_NEG_COMP_ISSUE';
428370 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
428371 
428372 l_calculate_acctd_flag   VARCHAR2(1) :='N';
428373 l_calculate_g_l_flag     VARCHAR2(1) :='N';
428374 --
428375 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428376 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428377 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
428378 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
428379 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428380 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
428381 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
428382 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428383 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
428384 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
428385 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428386 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428387 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428388 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
428389 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
428390 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
428391 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
428392 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
428393 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
428394 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
428395 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
428396 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
428397 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
428398 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
428399 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
428400 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
428401 
428402 l_event_id                             NUMBER;
428403 l_previous_event_id                    NUMBER;
428404 l_first_event_id                       NUMBER;
428405 l_last_event_id                        NUMBER;
428406 
428407 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
428408 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
428409 --
428410 --
428411 l_result                    BOOLEAN := TRUE;
428412 l_rows                      NUMBER  := 1000;
428413 l_event_type_name           VARCHAR2(80) := 'WIP Negative Component Issue';
428414 l_event_class_name          VARCHAR2(80) := 'WIP Material';
428415 l_description               VARCHAR2(4000);
428416 l_transaction_reversal      NUMBER;
428417 l_ae_header_id              NUMBER;
428418 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
428419 l_log_module                VARCHAR2(240);
428420 --
428421 l_acct_reversal_source      VARCHAR2(30);
428422 l_trx_reversal_source       VARCHAR2(30);
428423 
428424 l_continue_with_lines       BOOLEAN := TRUE;
428425 --
428426 l_acc_rev_gl_date_source    DATE;                      -- 4262811
428427 --
428428 type t_array_event_id is table of number index by binary_integer;
428429 
428430 l_rec_array_event                    t_rec_array_event;
428431 l_null_rec_array_event               t_rec_array_event;
428432 l_array_ae_header_id                 xla_number_array_type;
428433 l_actual_flag                        VARCHAR2(1) := NULL;
428434 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
428435 l_balance_type_code                  VARCHAR2(1) :=NULL;
428436 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
428437 
428438 --
428439 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
428440 --
428441 
428442 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
428443 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
428444 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
428445 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
428446 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
428447 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
428448 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428449 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428450 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428451 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428452 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428453 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428454 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
428455 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
428456 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
428457 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
428458 TYPE t_array_source_61 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_SOURCE_ID%TYPE INDEX BY BINARY_INTEGER;
428459 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
428460 TYPE t_array_source_63 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
428461 TYPE t_array_source_64 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_MAT_OVH_ACCT%TYPE INDEX BY BINARY_INTEGER;
428462 TYPE t_array_source_65 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
428463 TYPE t_array_source_66 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_OUT_PROC_ACCT%TYPE INDEX BY BINARY_INTEGER;
428464 TYPE t_array_source_67 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
428465 TYPE t_array_source_68 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428466 TYPE t_array_source_69 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_MAT_OVHD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428467 TYPE t_array_source_70 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428468 TYPE t_array_source_71 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_OUT_PROC_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428469 TYPE t_array_source_72 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
428470 TYPE t_array_source_73 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
428471 TYPE t_array_source_74 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_MAT_OVHD_ACCT%TYPE INDEX BY BINARY_INTEGER;
428472 TYPE t_array_source_75 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
428473 TYPE t_array_source_76 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_OUT_PROC_ACCT%TYPE INDEX BY BINARY_INTEGER;
428474 TYPE t_array_source_77 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
428475 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
428476 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
428477 
428478 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
428479 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
428480 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
428481 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
428482 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
428483 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
428484 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
428485 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
428486 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
428487 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
428488 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
428489 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
428490 
428491 l_array_source_1              t_array_source_1;
428492 l_array_source_2              t_array_source_2;
428493 l_array_source_3              t_array_source_3;
428494 l_array_source_4              t_array_source_4;
428495 l_array_source_5              t_array_source_5;
428496 l_array_source_20              t_array_source_20;
428497 l_array_source_22              t_array_source_22;
428498 l_array_source_41              t_array_source_41;
428499 l_array_source_42              t_array_source_42;
428500 l_array_source_43              t_array_source_43;
428501 l_array_source_44              t_array_source_44;
428502 l_array_source_45              t_array_source_45;
428503 l_array_source_54              t_array_source_54;
428504 l_array_source_55              t_array_source_55;
428505 l_array_source_55_meaning      t_array_lookup_meaning;
428506 l_array_source_56              t_array_source_56;
428507 l_array_source_57              t_array_source_57;
428508 l_array_source_61              t_array_source_61;
428509 l_array_source_62              t_array_source_62;
428510 l_array_source_62_meaning      t_array_lookup_meaning;
428511 l_array_source_63              t_array_source_63;
428512 l_array_source_64              t_array_source_64;
428513 l_array_source_65              t_array_source_65;
428514 l_array_source_66              t_array_source_66;
428515 l_array_source_67              t_array_source_67;
428516 l_array_source_68              t_array_source_68;
428517 l_array_source_69              t_array_source_69;
428518 l_array_source_70              t_array_source_70;
428519 l_array_source_71              t_array_source_71;
428520 l_array_source_72              t_array_source_72;
428521 l_array_source_73              t_array_source_73;
428522 l_array_source_74              t_array_source_74;
428523 l_array_source_75              t_array_source_75;
428524 l_array_source_76              t_array_source_76;
428525 l_array_source_77              t_array_source_77;
428526 l_array_source_85              t_array_source_85;
428527 l_array_source_85_meaning      t_array_lookup_meaning;
428528 l_array_source_114              t_array_source_114;
428529 l_array_source_114_meaning      t_array_lookup_meaning;
428530 
428531 l_array_source_11      t_array_source_11;
428532 l_array_source_15      t_array_source_15;
428533 l_array_source_84      t_array_source_84;
428534 l_array_source_88      t_array_source_88;
428535 l_array_source_91      t_array_source_91;
428536 l_array_source_92      t_array_source_92;
428537 l_array_source_93      t_array_source_93;
428538 l_array_source_94      t_array_source_94;
428539 l_array_source_95      t_array_source_95;
428540 l_array_source_97      t_array_source_97;
428541 l_array_source_108      t_array_source_108;
428542 l_array_source_110      t_array_source_110;
428543 l_array_source_110_meaning      t_array_lookup_meaning;
428544 
428545 --
428546 CURSOR header_cur
428547 IS
428548 SELECT /*+ leading(xet) cardinality(xet,1) */
428549 -- Event Type Code: WIP_NEG_COMP_ISSUE
428550 -- Event Class Code: WIP_MTL
428551     xet.entity_id
428552   , xet.legal_entity_id
428553   , xet.entity_code
428554   , xet.transaction_number
428555   , xet.event_id
428556   , xet.event_class_code
428557   , xet.event_type_code
428558   , xet.event_number
428559   , xet.event_date
428560   , xet.transaction_date
428561   , xet.reference_num_1
428562   , xet.reference_num_2
428563   , xet.reference_num_3
428564   , xet.reference_num_4
428565   , xet.reference_char_1
428566   , xet.reference_char_2
428567   , xet.reference_char_3
428568   , xet.reference_char_4
428569   , xet.reference_date_1
428570   , xet.reference_date_2
428571   , xet.reference_date_3
428572   , xet.reference_date_4
428573   , xet.event_created_by
428574   , xet.budgetary_control_flag 
428575   , h3.TRANSACTION_ID    source_1
428576   , h7.ITEM_CONCATENATED_SEGMENTS    source_2
428577   , h5.TRANSACTION_QUANTITY    source_3
428578   , h5.TRANSACTION_UOM    source_4
428579   , h8.INV_TXN_TYPE_DESCRIPTION    source_5
428580   , h5.INV_TXN_DISTRIBUTION_ACCT    source_20
428581   , h9.PLA_BRIDGING_ACCOUNT    source_22
428582   , h9.PLA_MATERIAL_ACCOUNT    source_41
428583   , h9.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
428584   , h9.PLA_RESOURCE_ACCOUNT    source_43
428585   , h9.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
428586   , h9.PLA_OVERHEAD_ACCOUNT    source_45
428587   , h1.DIS_JOB_BRIDGING_ACCT    source_54
428588   , h12.WIP_ENTITY_TYPE    source_55
428589   , fvl55.meaning   source_55_meaning
428590   , h2.FLO_SCH_BRIDGING_ACCT    source_56
428591   , h10.REP_ITM_BRIDGING_ACCT    source_57
428592   , h5.TRANSACTION_SOURCE_ID    source_61
428593   , h3.TRANSACTION_ACTION_ID    source_62
428594   , fvl62.meaning   source_62_meaning
428595   , h1.DIS_JOB_MATERIAL_ACCT    source_63
428596   , h1.DIS_JOB_MAT_OVH_ACCT    source_64
428597   , h1.DIS_JOB_RESOURCE_ACCT    source_65
428598   , h1.DIS_JOB_OUT_PROC_ACCT    source_66
428599   , h1.DIS_JOB_OVERHEAD_ACCT    source_67
428600   , h11.REP_SCHED_MATERIAL_ACCOUNT    source_68
428601   , h11.REP_SCHED_MAT_OVHD_ACCOUNT    source_69
428602   , h11.REP_SCHED_RESOURCE_ACCOUNT    source_70
428603   , h11.REP_SCHED_OUT_PROC_ACCOUNT    source_71
428604   , h11.REP_SCHED_OVERHEAD_ACCOUNT    source_72
428605   , h2.FLO_SCH_MATERIAL_ACCT    source_73
428606   , h2.FLO_SCH_MAT_OVHD_ACCT    source_74
428607   , h2.FLO_SCH_RESOURCE_ACCT    source_75
428608   , h2.FLO_SCH_OUT_PROC_ACCT    source_76
428609   , h2.FLO_SCH_OVERHEAD_ACCT    source_77
428610   , h3.DISTRIBUTION_TYPE    source_85
428611   , fvl85.meaning   source_85_meaning
428612   , h3.TRANSFER_TO_GL_INDICATOR    source_114
428613   , fvl114.meaning   source_114_meaning
428614   FROM xla_events_gt     xet 
428615   , CST_XLA_DISCRETE_JOB_REF_V  h1
428616   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
428617   , CST_XLA_INV_HEADERS_V  h3
428618   , CST_XLA_INV_REF_V  h5
428619   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
428620   , CST_XLA_INV_TXN_TYPES_REF_V  h8
428621   , CST_XLA_PLA_CATEGORY_REF_V  h9
428622   , CST_XLA_REP_ITEM_REF_V  h10
428623   , CST_XLA_REP_SCHED_REF_V  h11
428624   , CST_XLA_WIP_ENTITY_REF_V  h12
428625   , fnd_lookup_values    fvl55
428626   , fnd_lookup_values    fvl62
428627   , fnd_lookup_values    fvl85
428628   , fnd_lookup_values    fvl114
428629  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
428630    and xet.event_type_code = C_EVENT_TYPE_CODE
428631    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
428632  AND h1.DIS_JOB_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h2.FLO_SCH_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h5.ref_transaction_id = h3.transaction_id AND h7.INVENTORY_ITEM_ID = h3.INVENTORY_ITEM_ID AND h7.ORGANIZATION_ID = h3.ORGANIZATION_ID AND h8.INV_TRANSACTION_TYPE_ID = h3.TRANSACTION_TYPE_ID AND h9.PLA_CAT_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID 
428633 AND h9.PLA_CAT_ITEM_ID          (+) = h3.INVENTORY_ITEM_ID 
428634 AND h9.PLA_SUBINV_CG            (+) = h3.H_SUBINV_CG AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  AND h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.transaction_id  (+) = h5.ref_transaction_id AND h12.WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
428635   AND fvl55.lookup_code(+)         = h12.WIP_ENTITY_TYPE
428636   AND fvl55.view_application_id(+) = 700
428637   AND fvl55.language(+)            = USERENV('LANG')
428638      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
428639   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
428640   AND fvl62.view_application_id(+) = 700
428641   AND fvl62.language(+)            = USERENV('LANG')
428642      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
428643   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
428644   AND fvl85.view_application_id(+) = 700
428645   AND fvl85.language(+)            = USERENV('LANG')
428646      AND fvl114.lookup_type(+)         = 'YES_NO'
428647   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
428648   AND fvl114.view_application_id(+) = 0
428649   AND fvl114.language(+)            = USERENV('LANG')
428650   
428651  ORDER BY event_id
428652 ;
428653 
428654 
428655 --
428656 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
428657 IS
428658 SELECT /*+ leading(xet) cardinality(xet,1) */
428659 -- Event Type Code: WIP_NEG_COMP_ISSUE
428660 -- Event Class Code: WIP_MTL
428661     xet.entity_id
428662    ,xet.legal_entity_id
428663    ,xet.entity_code
428664    ,xet.transaction_number
428665    ,xet.event_id
428666    ,xet.event_class_code
428667    ,xet.event_type_code
428668    ,xet.event_number
428669    ,xet.event_date
428670    ,xet.transaction_date
428671    ,xet.reference_num_1
428672    ,xet.reference_num_2
428673    ,xet.reference_num_3
428674    ,xet.reference_num_4
428675    ,xet.reference_char_1
428676    ,xet.reference_char_2
428677    ,xet.reference_char_3
428678    ,xet.reference_char_4
428679    ,xet.reference_date_1
428680    ,xet.reference_date_2
428681    ,xet.reference_date_3
428682    ,xet.reference_date_4
428683    ,xet.event_created_by
428684    ,xet.budgetary_control_flag  , l4.LINE_NUMBER  
428685   , l4.CODE_COMBINATION_ID    source_11
428686   , l4.COST_ELEMENT_ID    source_15
428687   , l4.DISTRIBUTION_IDENTIFIER    source_84
428688   , l4.CURRENCY_CODE    source_88
428689   , l4.ENTERED_AMOUNT    source_91
428690   , l4.CURRENCY_CONVERSION_DATE    source_92
428691   , l4.CURRENCY_CONVERSION_RATE    source_93
428692   , l4.CURRENCY_CONVERSION_TYPE    source_94
428693   , l4.ACCOUNTED_AMOUNT    source_95
428694   , l4.ACCOUNTING_LINE_TYPE_CODE    source_97
428695   , l4.L_ORGANIZATION_CODE    source_108
428696   , l6.ASSET_INVENTORY    source_110
428697   , fvl110.meaning   source_110_meaning
428698   FROM xla_events_gt     xet 
428699   , CST_XLA_INV_LINES_V  l4
428700   , CST_XLA_INV_SEC_INVS_REF_V  l6
428701   , fnd_lookup_values    fvl110
428702  WHERE xet.event_id between x_first_event_id and x_last_event_id
428703    and xet.event_date between p_pad_start_date and p_pad_end_date
428704    and xet.event_type_code = C_EVENT_TYPE_CODE
428705    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
428706  AND l6.SUBINVENTORY  (+) = l4.SUBINVENTORY_CODE  AND l6.SUBINV_ORGANIZATION_ID  (+) = l4.L_ORGANIZATION_ID   AND fvl110.lookup_type(+)         = 'YES_NO'
428707   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
428708   AND fvl110.view_application_id(+) = 0
428709   AND fvl110.language(+)            = USERENV('LANG')
428710   ;
428711 
428712 --
428713 BEGIN
428714 IF g_log_enabled THEN
428715    l_log_module := C_DEFAULT_MODULE||'.EventType_623';
428716 END IF;
428717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
428718    trace
428719       (p_msg      => 'BEGIN of EventType_623'
428720       ,p_level    => C_LEVEL_PROCEDURE
428721       ,p_module   => l_log_module);
428722 END IF;
428723 
428724 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
428725    trace
428726       (p_msg      => 'p_application_id = '||p_application_id||
428727                      ' - p_base_ledger_id = '||p_base_ledger_id||
428728                      ' - p_target_ledger_id  = '||p_target_ledger_id||
428729                      ' - p_language = '||p_language||
428730                      ' - p_currency_code = '||p_currency_code||
428731                      ' - p_sla_ledger_id = '||p_sla_ledger_id
428732       ,p_level    => C_LEVEL_STATEMENT
428733       ,p_module   => l_log_module);
428734 END IF;
428735 --
428736 -- initialze arrays
428737 --
428738 g_array_event.DELETE;
428739 l_rec_array_event := l_null_rec_array_event;
428740 --
428741 --------------------------------------
428742 -- 4262811 Initialze MPA Line Number
428743 --------------------------------------
428744 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
428745 
428746 --
428747 
428748 --
428749 OPEN header_cur;
428750 --
428751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
428752    trace
428753    (p_msg      => 'SQL - FETCH header_cur'
428754    ,p_level    => C_LEVEL_STATEMENT
428755    ,p_module   => l_log_module);
428756 END IF;
428757 --
428758 LOOP
428759 FETCH header_cur BULK COLLECT INTO
428760         l_array_entity_id
428761       , l_array_legal_entity_id
428762       , l_array_entity_code
428763       , l_array_transaction_num
428764       , l_array_event_id
428765       , l_array_class_code
428766       , l_array_event_type
428767       , l_array_event_number
428768       , l_array_event_date
428769       , l_array_transaction_date
428770       , l_array_reference_num_1
428771       , l_array_reference_num_2
428772       , l_array_reference_num_3
428773       , l_array_reference_num_4
428774       , l_array_reference_char_1
428775       , l_array_reference_char_2
428776       , l_array_reference_char_3
428777       , l_array_reference_char_4
428778       , l_array_reference_date_1
428779       , l_array_reference_date_2
428780       , l_array_reference_date_3
428781       , l_array_reference_date_4
428782       , l_array_event_created_by
428783       , l_array_budgetary_control_flag 
428784       , l_array_source_1
428785       , l_array_source_2
428786       , l_array_source_3
428787       , l_array_source_4
428788       , l_array_source_5
428789       , l_array_source_20
428790       , l_array_source_22
428791       , l_array_source_41
428792       , l_array_source_42
428793       , l_array_source_43
428794       , l_array_source_44
428795       , l_array_source_45
428796       , l_array_source_54
428797       , l_array_source_55
428798       , l_array_source_55_meaning
428799       , l_array_source_56
428800       , l_array_source_57
428801       , l_array_source_61
428802       , l_array_source_62
428803       , l_array_source_62_meaning
428804       , l_array_source_63
428805       , l_array_source_64
428806       , l_array_source_65
428807       , l_array_source_66
428808       , l_array_source_67
428809       , l_array_source_68
428810       , l_array_source_69
428811       , l_array_source_70
428812       , l_array_source_71
428813       , l_array_source_72
428814       , l_array_source_73
428815       , l_array_source_74
428816       , l_array_source_75
428817       , l_array_source_76
428818       , l_array_source_77
428819       , l_array_source_85
428820       , l_array_source_85_meaning
428821       , l_array_source_114
428822       , l_array_source_114_meaning
428823       LIMIT l_rows;
428824 --
428825 IF (C_LEVEL_EVENT >= g_log_level) THEN
428826    trace
428827    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
428828    ,p_level    => C_LEVEL_EVENT
428829    ,p_module   => l_log_module);
428830 END IF;
428831 --
428832 EXIT WHEN l_array_entity_id.COUNT = 0;
428833 
428834 -- initialize arrays
428835 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
428836 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
428837 
428838 --
428839 -- Bug 4458708
428840 --
428841 XLA_AE_LINES_PKG.g_LineNumber := 0;
428842 
428843 
428844 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
428845 g_last_hdr_idx := l_array_event_id.LAST;
428846 --
428847 -- loop for the headers. Each iteration is for each header extract row
428848 -- fetched in header cursor
428849 --
428850 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
428851 
428852 --
428853 -- set event info as cache for other routines to refer event attributes
428854 --
428855 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
428856    (p_application_id           => p_application_id
428857    ,p_primary_ledger_id        => p_primary_ledger_id
428858    ,p_base_ledger_id           => p_base_ledger_id
428859    ,p_target_ledger_id         => p_target_ledger_id
428860    ,p_entity_id                => l_array_entity_id(hdr_idx)
428861    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
428862    ,p_entity_code              => l_array_entity_code(hdr_idx)
428863    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
428864    ,p_event_id                 => l_array_event_id(hdr_idx)
428865    ,p_event_class_code         => l_array_class_code(hdr_idx)
428866    ,p_event_type_code          => l_array_event_type(hdr_idx)
428867    ,p_event_number             => l_array_event_number(hdr_idx)
428868    ,p_event_date               => l_array_event_date(hdr_idx)
428869    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
428870    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
428871    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
428872    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
428873    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
428874    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
428875    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
428876    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
428877    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
428878    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
428879    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
428880    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
428881    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
428882    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
428883    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
428884 
428885 --
428886 -- set the status of entry to C_VALID (0)
428887 --
428888 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
428889 
428890 --
428891 -- initialize a row for ae header
428892 --
428893 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
428894 
428895 l_event_id := l_array_event_id(hdr_idx);
428896 
428897 --
428898 -- storing the hdr_idx for event. May be used by line cursor.
428899 --
428900 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
428901 
428902 --
428903 -- store sources from header extract. This can be improved to
428904 -- store only those sources from header extract that may be used in lines
428905 --
428906 
428907 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
428908 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
428909 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
428910 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
428911 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
428912 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
428913 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
428914 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
428915 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
428916 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
428917 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
428918 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
428919 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
428920 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
428921 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
428922 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
428923 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
428924 g_array_event(l_event_id).array_value_num('source_61') := l_array_source_61(hdr_idx);
428925 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
428926 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
428927 g_array_event(l_event_id).array_value_num('source_63') := l_array_source_63(hdr_idx);
428928 g_array_event(l_event_id).array_value_num('source_64') := l_array_source_64(hdr_idx);
428929 g_array_event(l_event_id).array_value_num('source_65') := l_array_source_65(hdr_idx);
428930 g_array_event(l_event_id).array_value_num('source_66') := l_array_source_66(hdr_idx);
428931 g_array_event(l_event_id).array_value_num('source_67') := l_array_source_67(hdr_idx);
428932 g_array_event(l_event_id).array_value_num('source_68') := l_array_source_68(hdr_idx);
428933 g_array_event(l_event_id).array_value_num('source_69') := l_array_source_69(hdr_idx);
428934 g_array_event(l_event_id).array_value_num('source_70') := l_array_source_70(hdr_idx);
428935 g_array_event(l_event_id).array_value_num('source_71') := l_array_source_71(hdr_idx);
428936 g_array_event(l_event_id).array_value_num('source_72') := l_array_source_72(hdr_idx);
428937 g_array_event(l_event_id).array_value_num('source_73') := l_array_source_73(hdr_idx);
428938 g_array_event(l_event_id).array_value_num('source_74') := l_array_source_74(hdr_idx);
428939 g_array_event(l_event_id).array_value_num('source_75') := l_array_source_75(hdr_idx);
428940 g_array_event(l_event_id).array_value_num('source_76') := l_array_source_76(hdr_idx);
428941 g_array_event(l_event_id).array_value_num('source_77') := l_array_source_77(hdr_idx);
428942 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
428943 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
428944 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
428945 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
428946 
428947 --
428948 -- initilaize the status of ae headers for diffrent balance types
428949 -- the status is initialised to C_NOT_CREATED (2)
428950 --
428951 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
428952 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
428953 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
428954 
428955 --
428956 -- call api to validate and store accounting attributes for header
428957 --
428958 
428959 ------------------------------------------------------------
428960 -- Accrual Reversal : to get date for Standard Source (NONE)
428961 ------------------------------------------------------------
428962 l_acc_rev_gl_date_source := NULL;
428963 
428964      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
428965       l_rec_acct_attrs.array_date_value(1) := 
428966 xla_ae_sources_pkg.GetSystemSourceDate(
428967    p_source_code           => 'XLA_REFERENCE_DATE_1'
428968  , p_source_type_code      => 'Y'
428969  , p_source_application_id =>  602
428970 );
428971      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
428972       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
428973 
428974 
428975 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
428976 
428977 XLA_AE_HEADER_PKG.SetJeCategoryName;
428978 
428979 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
428980 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
428981 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
428982 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
428983 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
428984 
428985 
428986 --
428987 xla_ae_header_pkg.SetHdrDescription(
428988    p_description => Description_1 (
428989    p_application_id => p_application_id 
428990  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
428991  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
428992  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
428993  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
428994  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
428995    )
428996 );
428997 --
428998 
428999 -- No header level analytical criteria
429000 
429001 --
429002 --accounting attribute enhancement, bug 3612931
429003 --
429004 l_trx_reversal_source := SUBSTR(NULL, 1,30);
429005 
429006 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
429007    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
429008 
429009    xla_accounting_err_pkg.build_message
429010       (p_appli_s_name            => 'XLA'
429011       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
429012       ,p_token_1                 => 'ACCT_ATTR_NAME'
429013       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
429014       ,p_token_2                 => 'PRODUCT_NAME'
429015       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
429016       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
429017       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
429018       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
429019 
429020 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
429021    --
429022    -- following sets the accounting attributes needed to reverse
429023    -- accounting for a distributeion
429024    --
429025    xla_ae_lines_pkg.SetTrxReversalAttrs
429026       (p_event_id              => l_event_id
429027       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
429028       ,p_trx_reversal_source   => l_trx_reversal_source);
429029 
429030 END IF;
429031 
429032 
429033 ----------------------------------------------------------------
429034 -- 4262811 -  update the header statuses to invalid in need be
429035 ----------------------------------------------------------------
429036 --
429037 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
429038 
429039 
429040   -----------------------------------------------
429041   -- No accrual reversal for the event class/type
429042   -----------------------------------------------
429043 ----------------------------------------------------------------
429044 
429045 --
429046 -- this ends the header loop iteration for one bulk fetch
429047 --
429048 END LOOP;
429049 
429050 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
429051 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
429052 
429053 --
429054 -- insert dummy rows into lines gt table that were created due to
429055 -- transaction reversals
429056 --
429057 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
429058    l_result := XLA_AE_LINES_PKG.InsertLines;
429059 END IF;
429060 
429061 --
429062 -- reset the temp_line_num for each set of events fetched from header
429063 -- cursor rather than doing it for each new event in line cursor
429064 -- Bug 3939231
429065 --
429066 xla_ae_lines_pkg.g_temp_line_num := 0;
429067 
429068 
429069 
429070 --
429071 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
429072 --
429073 --
429074 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
429075 
429076       trace
429077          (p_msg      => 'SQL - FETCH line_cur'
429078          ,p_level    => C_LEVEL_STATEMENT
429079          ,p_module   => l_log_module);
429080 
429081 END IF;
429082 --
429083 --
429084 LOOP
429085   --
429086   FETCH line_cur BULK COLLECT INTO
429087         l_array_entity_id
429088       , l_array_legal_entity_id
429089       , l_array_entity_code
429090       , l_array_transaction_num
429091       , l_array_event_id
429092       , l_array_class_code
429093       , l_array_event_type
429094       , l_array_event_number
429095       , l_array_event_date
429096       , l_array_transaction_date
429097       , l_array_reference_num_1
429098       , l_array_reference_num_2
429099       , l_array_reference_num_3
429100       , l_array_reference_num_4
429101       , l_array_reference_char_1
429102       , l_array_reference_char_2
429103       , l_array_reference_char_3
429104       , l_array_reference_char_4
429105       , l_array_reference_date_1
429106       , l_array_reference_date_2
429107       , l_array_reference_date_3
429108       , l_array_reference_date_4
429109       , l_array_event_created_by
429110       , l_array_budgetary_control_flag
429111       , l_array_extract_line_num 
429112       , l_array_source_11
429113       , l_array_source_15
429114       , l_array_source_84
429115       , l_array_source_88
429116       , l_array_source_91
429117       , l_array_source_92
429118       , l_array_source_93
429119       , l_array_source_94
429120       , l_array_source_95
429121       , l_array_source_97
429122       , l_array_source_108
429123       , l_array_source_110
429124       , l_array_source_110_meaning
429125       LIMIT l_rows;
429126 
429127   --
429128   IF (C_LEVEL_EVENT >= g_log_level) THEN
429129             trace
429130                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
429131                ,p_level    => C_LEVEL_EVENT
429132                ,p_module   => l_log_module);
429133   END IF;
429134   --
429135   EXIT WHEN l_array_entity_id.count = 0;
429136 
429137   XLA_AE_LINES_PKG.g_rec_lines := null;
429138 
429139 --
429140 -- Bug 4458708
429141 --
429142 XLA_AE_LINES_PKG.g_LineNumber := 0;
429143 --
429144 --
429145 
429146 FOR Idx IN 1..l_array_event_id.count LOOP
429147    --
429148    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
429149    --
429150    l_event_id := l_array_event_id(idx);  -- 5648433
429151 
429152    --
429153    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
429154    --
429155 
429156    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
429157              (g_array_event(l_event_id).array_value_num('header_index'))
429158          ,'N'
429159          ) <> 'Y'
429160    THEN
429161       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
429162          trace
429163             (p_msg      => 'Trancaction revesal option is not Y '
429164             ,p_level    => C_LEVEL_STATEMENT
429165             ,p_module   => l_log_module);
429166       END IF;
429167 
429168 --
429169 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
429170 --
429171 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
429172 --
429173 -- set event info as cache for other routines to refer event attributes
429174 --
429175 
429176 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
429177    l_previous_event_id := l_event_id;
429178 
429179    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
429180       (p_application_id           => p_application_id
429181       ,p_primary_ledger_id        => p_primary_ledger_id
429182       ,p_base_ledger_id           => p_base_ledger_id
429183       ,p_target_ledger_id         => p_target_ledger_id
429184       ,p_entity_id                => l_array_entity_id(Idx)
429185       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
429186       ,p_entity_code              => l_array_entity_code(Idx)
429187       ,p_transaction_num          => l_array_transaction_num(Idx)
429188       ,p_event_id                 => l_array_event_id(Idx)
429189       ,p_event_class_code         => l_array_class_code(Idx)
429190       ,p_event_type_code          => l_array_event_type(Idx)
429191       ,p_event_number             => l_array_event_number(Idx)
429192       ,p_event_date               => l_array_event_date(Idx)
429193       ,p_transaction_date         => l_array_transaction_date(Idx)
429194       ,p_reference_num_1          => l_array_reference_num_1(Idx)
429195       ,p_reference_num_2          => l_array_reference_num_2(Idx)
429196       ,p_reference_num_3          => l_array_reference_num_3(Idx)
429197       ,p_reference_num_4          => l_array_reference_num_4(Idx)
429198       ,p_reference_char_1         => l_array_reference_char_1(Idx)
429199       ,p_reference_char_2         => l_array_reference_char_2(Idx)
429200       ,p_reference_char_3         => l_array_reference_char_3(Idx)
429201       ,p_reference_char_4         => l_array_reference_char_4(Idx)
429202       ,p_reference_date_1         => l_array_reference_date_1(Idx)
429203       ,p_reference_date_2         => l_array_reference_date_2(Idx)
429204       ,p_reference_date_3         => l_array_reference_date_3(Idx)
429205       ,p_reference_date_4         => l_array_reference_date_4(Idx)
429206       ,p_event_created_by         => l_array_event_created_by(Idx)
429207       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
429208        --
429209 END IF;
429210 
429211 
429212 
429213 --
429214 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
429215 
429216 l_acct_reversal_source := SUBSTR(NULL, 1,30);
429217 
429218 IF l_continue_with_lines THEN
429219    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
429220       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
429221 
429222       xla_accounting_err_pkg.build_message
429223          (p_appli_s_name            => 'XLA'
429224          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
429225          ,p_token_1                 => 'LINE_NUMBER'
429226          ,p_value_1                 => l_array_extract_line_num(Idx)
429227          ,p_token_2                 => 'PRODUCT_NAME'
429228          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
429229          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
429230          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
429231          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
429232 
429233    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
429234       --
429235       -- following sets the accounting attributes needed to reverse
429236       -- accounting for a distributeion
429237       --
429238 
429239       --
429240       -- 5217187
429241       --
429242       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
429243       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
429244                                        g_array_event(l_event_id).array_value_num('header_index'));
429245       --
429246       --
429247 
429248       -- No reversal code generated
429249 
429250       xla_ae_lines_pkg.SetAcctReversalAttrs
429251          (p_event_id             => l_event_id
429252          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
429253          ,p_calculate_acctd_flag => l_calculate_acctd_flag
429254          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
429255    END IF;
429256 
429257    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
429258        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
429259 
429260 --
429261 AcctLineType_81 (
429262  p_application_id  => p_application_id
429263  ,p_event_id     => l_event_id
429264  ,p_calculate_acctd_flag => l_calculate_acctd_flag
429265  ,p_calculate_g_l_flag => l_calculate_g_l_flag
429266  ,p_actual_flag => l_actual_flag
429267  ,p_balance_type_code => l_balance_type_code
429268  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
429269  
429270  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
429271  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
429272  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
429273  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
429274  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
429275  , p_source_11 => l_array_source_11(Idx)
429276  , p_source_84 => l_array_source_84(Idx)
429277  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
429278  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
429279  , p_source_88 => l_array_source_88(Idx)
429280  , p_source_91 => l_array_source_91(Idx)
429281  , p_source_92 => l_array_source_92(Idx)
429282  , p_source_93 => l_array_source_93(Idx)
429283  , p_source_94 => l_array_source_94(Idx)
429284  , p_source_95 => l_array_source_95(Idx)
429285  , p_source_97 => l_array_source_97(Idx)
429286  );
429287 If(l_balance_type_code = 'A') THEN
429288   l_actual_gain_loss_ref := l_gain_or_loss_ref;
429289 END IF;
429290 
429291 --
429292 
429293 
429294 --
429295 AcctLineType_274 (
429296  p_application_id  => p_application_id
429297  ,p_event_id     => l_event_id
429298  ,p_calculate_acctd_flag => l_calculate_acctd_flag
429299  ,p_calculate_g_l_flag => l_calculate_g_l_flag
429300  ,p_actual_flag => l_actual_flag
429301  ,p_balance_type_code => l_balance_type_code
429302  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
429303  
429304  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
429305  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
429306  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
429307  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
429308  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
429309  , p_source_15 => l_array_source_15(Idx)
429310  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
429311  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
429312  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
429313  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
429314  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
429315  , p_source_84 => l_array_source_84(Idx)
429316  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
429317  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
429318  , p_source_88 => l_array_source_88(Idx)
429319  , p_source_91 => l_array_source_91(Idx)
429320  , p_source_92 => l_array_source_92(Idx)
429321  , p_source_93 => l_array_source_93(Idx)
429322  , p_source_94 => l_array_source_94(Idx)
429323  , p_source_95 => l_array_source_95(Idx)
429324  , p_source_97 => l_array_source_97(Idx)
429325  , p_source_108 => l_array_source_108(Idx)
429326  );
429327 If(l_balance_type_code = 'A') THEN
429328   l_actual_gain_loss_ref := l_gain_or_loss_ref;
429329 END IF;
429330 
429331 --
429332 
429333 
429334 --
429335 AcctLineType_309 (
429336  p_application_id  => p_application_id
429337  ,p_event_id     => l_event_id
429338  ,p_calculate_acctd_flag => l_calculate_acctd_flag
429339  ,p_calculate_g_l_flag => l_calculate_g_l_flag
429340  ,p_actual_flag => l_actual_flag
429341  ,p_balance_type_code => l_balance_type_code
429342  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
429343  
429344  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
429345  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
429346  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
429347  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
429348  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
429349  , p_source_11 => l_array_source_11(Idx)
429350  , p_source_84 => l_array_source_84(Idx)
429351  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
429352  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
429353  , p_source_88 => l_array_source_88(Idx)
429354  , p_source_91 => l_array_source_91(Idx)
429355  , p_source_92 => l_array_source_92(Idx)
429356  , p_source_93 => l_array_source_93(Idx)
429357  , p_source_94 => l_array_source_94(Idx)
429358  , p_source_95 => l_array_source_95(Idx)
429359  , p_source_97 => l_array_source_97(Idx)
429360  );
429361 If(l_balance_type_code = 'A') THEN
429362   l_actual_gain_loss_ref := l_gain_or_loss_ref;
429363 END IF;
429364 
429365 --
429366 
429367 
429368 --
429369 AcctLineType_322 (
429370  p_application_id  => p_application_id
429371  ,p_event_id     => l_event_id
429372  ,p_calculate_acctd_flag => l_calculate_acctd_flag
429373  ,p_calculate_g_l_flag => l_calculate_g_l_flag
429374  ,p_actual_flag => l_actual_flag
429375  ,p_balance_type_code => l_balance_type_code
429376  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
429377  
429378  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
429379  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
429380  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
429381  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
429382  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
429383  , p_source_11 => l_array_source_11(Idx)
429384  , p_source_84 => l_array_source_84(Idx)
429385  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
429386  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
429387  , p_source_88 => l_array_source_88(Idx)
429388  , p_source_91 => l_array_source_91(Idx)
429389  , p_source_92 => l_array_source_92(Idx)
429390  , p_source_93 => l_array_source_93(Idx)
429391  , p_source_94 => l_array_source_94(Idx)
429392  , p_source_95 => l_array_source_95(Idx)
429393  , p_source_97 => l_array_source_97(Idx)
429394  );
429395 If(l_balance_type_code = 'A') THEN
429396   l_actual_gain_loss_ref := l_gain_or_loss_ref;
429397 END IF;
429398 
429399 --
429400 
429401 
429402 --
429403 AcctLineType_393 (
429404  p_application_id  => p_application_id
429405  ,p_event_id     => l_event_id
429406  ,p_calculate_acctd_flag => l_calculate_acctd_flag
429407  ,p_calculate_g_l_flag => l_calculate_g_l_flag
429408  ,p_actual_flag => l_actual_flag
429409  ,p_balance_type_code => l_balance_type_code
429410  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
429411  
429412  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
429413  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
429414  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
429415  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
429416  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
429417  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
429418  , p_source_84 => l_array_source_84(Idx)
429419  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
429420  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
429421  , p_source_88 => l_array_source_88(Idx)
429422  , p_source_91 => l_array_source_91(Idx)
429423  , p_source_92 => l_array_source_92(Idx)
429424  , p_source_93 => l_array_source_93(Idx)
429425  , p_source_94 => l_array_source_94(Idx)
429426  , p_source_95 => l_array_source_95(Idx)
429427  , p_source_97 => l_array_source_97(Idx)
429428  , p_source_110 => l_array_source_110(Idx)
429429  , p_source_110_meaning => l_array_source_110_meaning(Idx)
429430  );
429431 If(l_balance_type_code = 'A') THEN
429432   l_actual_gain_loss_ref := l_gain_or_loss_ref;
429433 END IF;
429434 
429435 --
429436 
429437 
429438 --
429439 AcctLineType_460 (
429440  p_application_id  => p_application_id
429441  ,p_event_id     => l_event_id
429442  ,p_calculate_acctd_flag => l_calculate_acctd_flag
429443  ,p_calculate_g_l_flag => l_calculate_g_l_flag
429444  ,p_actual_flag => l_actual_flag
429445  ,p_balance_type_code => l_balance_type_code
429446  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
429447  
429448  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
429449  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
429450  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
429451  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
429452  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
429453  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
429454  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
429455  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
429456  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
429457  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
429458  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
429459  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
429460  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
429461  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
429462  , p_source_84 => l_array_source_84(Idx)
429463  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
429464  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
429465  , p_source_88 => l_array_source_88(Idx)
429466  , p_source_91 => l_array_source_91(Idx)
429467  , p_source_92 => l_array_source_92(Idx)
429468  , p_source_93 => l_array_source_93(Idx)
429469  , p_source_94 => l_array_source_94(Idx)
429470  , p_source_95 => l_array_source_95(Idx)
429471  , p_source_97 => l_array_source_97(Idx)
429472  , p_source_110 => l_array_source_110(Idx)
429473  , p_source_110_meaning => l_array_source_110_meaning(Idx)
429474  );
429475 If(l_balance_type_code = 'A') THEN
429476   l_actual_gain_loss_ref := l_gain_or_loss_ref;
429477 END IF;
429478 
429479 --
429480 
429481 
429482 --
429483 AcctLineType_535 (
429484  p_application_id  => p_application_id
429485  ,p_event_id     => l_event_id
429486  ,p_calculate_acctd_flag => l_calculate_acctd_flag
429487  ,p_calculate_g_l_flag => l_calculate_g_l_flag
429488  ,p_actual_flag => l_actual_flag
429489  ,p_balance_type_code => l_balance_type_code
429490  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
429491  
429492  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
429493  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
429494  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
429495  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
429496  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
429497  , p_source_15 => l_array_source_15(Idx)
429498  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
429499  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
429500  , p_source_63 => g_array_event(l_event_id).array_value_num('source_63')
429501  , p_source_64 => g_array_event(l_event_id).array_value_num('source_64')
429502  , p_source_65 => g_array_event(l_event_id).array_value_num('source_65')
429503  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
429504  , p_source_67 => g_array_event(l_event_id).array_value_num('source_67')
429505  , p_source_68 => g_array_event(l_event_id).array_value_num('source_68')
429506  , p_source_69 => g_array_event(l_event_id).array_value_num('source_69')
429507  , p_source_70 => g_array_event(l_event_id).array_value_num('source_70')
429508  , p_source_71 => g_array_event(l_event_id).array_value_num('source_71')
429509  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
429510  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
429511  , p_source_74 => g_array_event(l_event_id).array_value_num('source_74')
429512  , p_source_75 => g_array_event(l_event_id).array_value_num('source_75')
429513  , p_source_76 => g_array_event(l_event_id).array_value_num('source_76')
429514  , p_source_77 => g_array_event(l_event_id).array_value_num('source_77')
429515  , p_source_84 => l_array_source_84(Idx)
429516  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
429517  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
429518  , p_source_88 => l_array_source_88(Idx)
429519  , p_source_91 => l_array_source_91(Idx)
429520  , p_source_92 => l_array_source_92(Idx)
429521  , p_source_93 => l_array_source_93(Idx)
429522  , p_source_94 => l_array_source_94(Idx)
429523  , p_source_95 => l_array_source_95(Idx)
429524  , p_source_97 => l_array_source_97(Idx)
429525  );
429526 If(l_balance_type_code = 'A') THEN
429527   l_actual_gain_loss_ref := l_gain_or_loss_ref;
429528 END IF;
429529 
429530 --
429531 
429532       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
429533       -- or secondary ledger that has different currency with primary
429534       -- or alc that is calculated by sla
429535       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
429536             (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'))
429537 
429538 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
429539 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
429540           AND (l_actual_flag = 'A')) THEN
429541         XLA_AE_LINES_PKG.CreateGainOrLossLines(
429542           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
429543          ,p_application_id   => p_application_id
429544          ,p_amb_context_code => 'DEFAULT'
429545          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
429546          ,p_event_class_code => C_EVENT_CLASS_CODE
429547          ,p_event_type_code  => C_EVENT_TYPE_CODE
429548          
429549          ,p_gain_ccid        => -1
429550          ,p_loss_ccid        => -1
429551 
429552          ,p_actual_flag      => l_actual_flag
429553          ,p_enc_flag         => null
429554          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
429555          ,p_enc_g_l_ref      => null
429556          );
429557       END IF;
429558    END IF;
429559 END IF;
429560 
429561    ELSE
429562       --
429563       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
429564       --
429565       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
429566          trace
429567             (p_msg      => 'Trancaction revesal option is Y'
429568             ,p_level    => C_LEVEL_STATEMENT
429569             ,p_module   => l_log_module);
429570       END IF;
429571    END IF;
429572 
429573 END LOOP;
429574 l_result := XLA_AE_LINES_PKG.InsertLines ;
429575 end loop;
429576 close line_cur;
429577 
429578 
429579 --
429580 -- insert headers into xla_ae_headers_gt table
429581 --
429582 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
429583 
429584 -- insert into errors table here.
429585 
429586 END LOOP;
429587 
429588 --
429589 -- 4865292
429590 --
429591 -- Compare g_hdr_extract_count with event count in
429592 -- CreateHeadersAndLines.
429593 --
429594 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
429595 
429596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
429597    trace (p_msg     => '# rows extracted from header extract objects '
429598                     || ' (running total): '
429599                     || g_hdr_extract_count
429600          ,p_level   => C_LEVEL_STATEMENT
429601          ,p_module  => l_log_module);
429602 END IF;
429603 
429604 CLOSE header_cur;
429605 --
429606 
429607 --
429608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
429609    trace
429610       (p_msg      => 'END of EventType_623'
429611       ,p_level    => C_LEVEL_PROCEDURE
429612       ,p_module   => l_log_module);
429613 END IF;
429614 --
429615 RETURN l_result;
429616 EXCEPTION
429617 WHEN xla_exceptions_pkg.application_exception THEN
429618    
429619 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
429620 
429621    
429622 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
429623 
429624    RAISE;
429625 
429626 WHEN NO_DATA_FOUND THEN
429627 
429628 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
429629 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
429630 
429631 FOR header_record IN header_cur
429632 LOOP
429633     l_array_header_events(header_record.event_id) := header_record.event_id;
429634 END LOOP;
429635 
429636 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
429637 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
429638 
429639 fnd_file.put_line(fnd_file.LOG, '                    ');
429640 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
429641 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
429642 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
429643 
429644 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
429645 LOOP
429646 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
429647 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
429648         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
429649 	END IF;
429650 END LOOP;
429651 
429652 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
429653 fnd_file.put_line(fnd_file.LOG, '                    ');
429654 
429655 
429656 xla_exceptions_pkg.raise_message
429657       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_623');
429658 
429659 
429660 WHEN OTHERS THEN
429661    xla_exceptions_pkg.raise_message
429662       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_623');
429663 END EventType_623;
429664 --
429665 
429666 ---------------------------------------
429667 --
429668 -- PRIVATE PROCEDURE
429669 --         insert_sources_624
429670 --
429671 ----------------------------------------
429672 --
429673 PROCEDURE insert_sources_624(
429674                                 p_target_ledger_id       IN NUMBER
429675                               , p_language               IN VARCHAR2
429676                               , p_sla_ledger_id          IN NUMBER
429677                               , p_pad_start_date         IN DATE
429678                               , p_pad_end_date           IN DATE
429679                          )
429680 IS
429681 
429682 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_NEG_COMP_RETURN';
429683 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
429684 p_apps_owner                   VARCHAR2(30);
429685 l_log_module                   VARCHAR2(240);
429686 BEGIN
429687 IF g_log_enabled THEN
429688       l_log_module := C_DEFAULT_MODULE||'.insert_sources_624';
429689 END IF;
429690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
429691 
429692       trace
429693          (p_msg      => 'BEGIN of insert_sources_624'
429694          ,p_level    => C_LEVEL_PROCEDURE
429695          ,p_module   => l_log_module);
429696 
429697 END IF;
429698 
429699 -- select APPS owner
429700 SELECT oracle_username
429701   INTO p_apps_owner
429702   FROM fnd_oracle_userid
429703  WHERE read_only_flag = 'U'
429704 ;
429705 
429706 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
429707       trace
429708          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
429709                         ' - p_language = '||p_language||
429710                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
429711                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
429712                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
429713                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
429714          ,p_level    => C_LEVEL_STATEMENT
429715          ,p_module   => l_log_module);
429716 END IF;
429717 
429718 
429719 --
429720 INSERT INTO xla_diag_sources --hdr1
429721 (
429722         event_id
429723       , ledger_id
429724       , sla_ledger_id
429725       , description_language
429726       , object_name
429727       , object_type_code
429728       , line_number
429729       , source_application_id
429730       , source_type_code
429731       , source_code
429732       , source_value
429733       , source_meaning
429734       , created_by
429735       , creation_date
429736       , last_update_date
429737       , last_updated_by
429738       , last_update_login
429739       , program_update_date
429740       , program_application_id
429741       , program_id
429742       , request_id
429743 )
429744 SELECT
429745         event_id
429746       , p_target_ledger_id
429747       , p_sla_ledger_id
429748       , p_language
429749       , object_name
429750       , object_type_code
429751       , line_number
429752       , source_application_id
429753       , source_type_code
429754       , source_code
429755       , SUBSTR(source_value ,1,1996)
429756       , SUBSTR(source_meaning,1,200)
429757       , xla_environment_pkg.g_Usr_Id
429758       , TRUNC(SYSDATE)
429759       , TRUNC(SYSDATE)
429760       , xla_environment_pkg.g_Usr_Id
429761       , xla_environment_pkg.g_Login_Id
429762       , TRUNC(SYSDATE)
429763       , xla_environment_pkg.g_Prog_Appl_Id
429764       , xla_environment_pkg.g_Prog_Id
429765       , xla_environment_pkg.g_Req_Id
429766   FROM (
429767        SELECT xet.event_id                  event_id
429768             , 0                             line_number
429769             , CASE r
429770                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
429771                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
429772                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
429773                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
429774                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
429775                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
429776                 WHEN 7 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
429777                 WHEN 8 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
429778                 WHEN 9 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
429779                 WHEN 10 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
429780                 WHEN 11 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
429781                 WHEN 12 THEN 'CST_XLA_PLA_CATEGORY_REF_V' 
429782                 WHEN 13 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
429783                 WHEN 14 THEN 'CST_XLA_WIP_ENTITY_REF_V' 
429784                 WHEN 15 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
429785                 WHEN 16 THEN 'CST_XLA_REP_ITEM_REF_V' 
429786                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
429787                 WHEN 18 THEN 'CST_XLA_INV_HEADERS_V' 
429788                 WHEN 19 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
429789                 WHEN 20 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
429790                 WHEN 21 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
429791                 WHEN 22 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
429792                 WHEN 23 THEN 'CST_XLA_DISCRETE_JOB_REF_V' 
429793                 WHEN 24 THEN 'CST_XLA_REP_SCHED_REF_V' 
429794                 WHEN 25 THEN 'CST_XLA_REP_SCHED_REF_V' 
429795                 WHEN 26 THEN 'CST_XLA_REP_SCHED_REF_V' 
429796                 WHEN 27 THEN 'CST_XLA_REP_SCHED_REF_V' 
429797                 WHEN 28 THEN 'CST_XLA_REP_SCHED_REF_V' 
429798                 WHEN 29 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
429799                 WHEN 30 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
429800                 WHEN 31 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
429801                 WHEN 32 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
429802                 WHEN 33 THEN 'CST_XLA_FLOW_SCHEDULE_REF_V' 
429803                 WHEN 34 THEN 'CST_XLA_INV_HEADERS_V' 
429804                 WHEN 35 THEN 'CST_XLA_INV_HEADERS_V' 
429805                 
429806                ELSE null
429807               END                           object_name
429808             , CASE r
429809                 WHEN 1 THEN 'HEADER' 
429810                 WHEN 2 THEN 'HEADER' 
429811                 WHEN 3 THEN 'HEADER' 
429812                 WHEN 4 THEN 'HEADER' 
429813                 WHEN 5 THEN 'HEADER' 
429814                 WHEN 6 THEN 'HEADER' 
429815                 WHEN 7 THEN 'HEADER' 
429816                 WHEN 8 THEN 'HEADER' 
429817                 WHEN 9 THEN 'HEADER' 
429818                 WHEN 10 THEN 'HEADER' 
429819                 WHEN 11 THEN 'HEADER' 
429820                 WHEN 12 THEN 'HEADER' 
429821                 WHEN 13 THEN 'HEADER' 
429822                 WHEN 14 THEN 'HEADER' 
429823                 WHEN 15 THEN 'HEADER' 
429824                 WHEN 16 THEN 'HEADER' 
429825                 WHEN 17 THEN 'HEADER' 
429826                 WHEN 18 THEN 'HEADER' 
429827                 WHEN 19 THEN 'HEADER' 
429828                 WHEN 20 THEN 'HEADER' 
429829                 WHEN 21 THEN 'HEADER' 
429830                 WHEN 22 THEN 'HEADER' 
429831                 WHEN 23 THEN 'HEADER' 
429832                 WHEN 24 THEN 'HEADER' 
429833                 WHEN 25 THEN 'HEADER' 
429834                 WHEN 26 THEN 'HEADER' 
429835                 WHEN 27 THEN 'HEADER' 
429836                 WHEN 28 THEN 'HEADER' 
429837                 WHEN 29 THEN 'HEADER' 
429838                 WHEN 30 THEN 'HEADER' 
429839                 WHEN 31 THEN 'HEADER' 
429840                 WHEN 32 THEN 'HEADER' 
429841                 WHEN 33 THEN 'HEADER' 
429842                 WHEN 34 THEN 'HEADER' 
429843                 WHEN 35 THEN 'HEADER' 
429844                 
429845                 ELSE null
429846               END                           object_type_code
429847             , CASE r
429848                 WHEN 1 THEN '707' 
429849                 WHEN 2 THEN '707' 
429850                 WHEN 3 THEN '707' 
429851                 WHEN 4 THEN '707' 
429852                 WHEN 5 THEN '707' 
429853                 WHEN 6 THEN '707' 
429854                 WHEN 7 THEN '707' 
429855                 WHEN 8 THEN '707' 
429856                 WHEN 9 THEN '707' 
429857                 WHEN 10 THEN '707' 
429858                 WHEN 11 THEN '707' 
429859                 WHEN 12 THEN '707' 
429860                 WHEN 13 THEN '707' 
429861                 WHEN 14 THEN '707' 
429862                 WHEN 15 THEN '707' 
429863                 WHEN 16 THEN '707' 
429864                 WHEN 17 THEN '707' 
429865                 WHEN 18 THEN '707' 
429866                 WHEN 19 THEN '707' 
429867                 WHEN 20 THEN '707' 
429868                 WHEN 21 THEN '707' 
429869                 WHEN 22 THEN '707' 
429870                 WHEN 23 THEN '707' 
429871                 WHEN 24 THEN '707' 
429872                 WHEN 25 THEN '707' 
429873                 WHEN 26 THEN '707' 
429874                 WHEN 27 THEN '707' 
429875                 WHEN 28 THEN '707' 
429876                 WHEN 29 THEN '707' 
429877                 WHEN 30 THEN '707' 
429878                 WHEN 31 THEN '707' 
429879                 WHEN 32 THEN '707' 
429880                 WHEN 33 THEN '707' 
429881                 WHEN 34 THEN '707' 
429882                 WHEN 35 THEN '707' 
429883                 
429884                 ELSE null
429885               END                           source_application_id
429886             , 'S'             source_type_code
429887             , CASE r
429888                 WHEN 1 THEN 'TRANSACTION_ID' 
429889                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
429890                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
429891                 WHEN 4 THEN 'TRANSACTION_UOM' 
429892                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
429893                 WHEN 6 THEN 'INV_TXN_DISTRIBUTION_ACCT' 
429894                 WHEN 7 THEN 'PLA_BRIDGING_ACCOUNT' 
429895                 WHEN 8 THEN 'PLA_MATERIAL_ACCOUNT' 
429896                 WHEN 9 THEN 'PLA_MATERIAL_OVERHEAD_ACCOUNT' 
429897                 WHEN 10 THEN 'PLA_RESOURCE_ACCOUNT' 
429898                 WHEN 11 THEN 'PLA_OUTSIDE_PROCESSING_ACCOUNT' 
429899                 WHEN 12 THEN 'PLA_OVERHEAD_ACCOUNT' 
429900                 WHEN 13 THEN 'DIS_JOB_BRIDGING_ACCT' 
429901                 WHEN 14 THEN 'WIP_ENTITY_TYPE' 
429902                 WHEN 15 THEN 'FLO_SCH_BRIDGING_ACCT' 
429903                 WHEN 16 THEN 'REP_ITM_BRIDGING_ACCT' 
429904                 WHEN 17 THEN 'TRANSACTION_SOURCE_ID' 
429905                 WHEN 18 THEN 'TRANSACTION_ACTION_ID' 
429906                 WHEN 19 THEN 'DIS_JOB_MATERIAL_ACCT' 
429907                 WHEN 20 THEN 'DIS_JOB_MAT_OVH_ACCT' 
429908                 WHEN 21 THEN 'DIS_JOB_RESOURCE_ACCT' 
429909                 WHEN 22 THEN 'DIS_JOB_OUT_PROC_ACCT' 
429910                 WHEN 23 THEN 'DIS_JOB_OVERHEAD_ACCT' 
429911                 WHEN 24 THEN 'REP_SCHED_MATERIAL_ACCOUNT' 
429912                 WHEN 25 THEN 'REP_SCHED_MAT_OVHD_ACCOUNT' 
429913                 WHEN 26 THEN 'REP_SCHED_RESOURCE_ACCOUNT' 
429914                 WHEN 27 THEN 'REP_SCHED_OUT_PROC_ACCOUNT' 
429915                 WHEN 28 THEN 'REP_SCHED_OVERHEAD_ACCOUNT' 
429916                 WHEN 29 THEN 'FLO_SCH_MATERIAL_ACCT' 
429917                 WHEN 30 THEN 'FLO_SCH_MAT_OVHD_ACCT' 
429918                 WHEN 31 THEN 'FLO_SCH_RESOURCE_ACCT' 
429919                 WHEN 32 THEN 'FLO_SCH_OUT_PROC_ACCT' 
429920                 WHEN 33 THEN 'FLO_SCH_OVERHEAD_ACCT' 
429921                 WHEN 34 THEN 'DISTRIBUTION_TYPE' 
429922                 WHEN 35 THEN 'TRANSFER_TO_GL_INDICATOR' 
429923                 
429924                 ELSE null
429925               END                           source_code
429926             , CASE r
429927                 WHEN 1 THEN TO_CHAR(h3.TRANSACTION_ID)
429928                 WHEN 2 THEN TO_CHAR(h7.ITEM_CONCATENATED_SEGMENTS)
429929                 WHEN 3 THEN TO_CHAR(h5.TRANSACTION_QUANTITY)
429930                 WHEN 4 THEN TO_CHAR(h5.TRANSACTION_UOM)
429931                 WHEN 5 THEN TO_CHAR(h8.INV_TXN_TYPE_DESCRIPTION)
429932                 WHEN 6 THEN TO_CHAR(h5.INV_TXN_DISTRIBUTION_ACCT)
429933                 WHEN 7 THEN TO_CHAR(h9.PLA_BRIDGING_ACCOUNT)
429934                 WHEN 8 THEN TO_CHAR(h9.PLA_MATERIAL_ACCOUNT)
429935                 WHEN 9 THEN TO_CHAR(h9.PLA_MATERIAL_OVERHEAD_ACCOUNT)
429936                 WHEN 10 THEN TO_CHAR(h9.PLA_RESOURCE_ACCOUNT)
429937                 WHEN 11 THEN TO_CHAR(h9.PLA_OUTSIDE_PROCESSING_ACCOUNT)
429938                 WHEN 12 THEN TO_CHAR(h9.PLA_OVERHEAD_ACCOUNT)
429939                 WHEN 13 THEN TO_CHAR(h1.DIS_JOB_BRIDGING_ACCT)
429940                 WHEN 14 THEN TO_CHAR(h12.WIP_ENTITY_TYPE)
429941                 WHEN 15 THEN TO_CHAR(h2.FLO_SCH_BRIDGING_ACCT)
429942                 WHEN 16 THEN TO_CHAR(h10.REP_ITM_BRIDGING_ACCT)
429943                 WHEN 17 THEN TO_CHAR(h5.TRANSACTION_SOURCE_ID)
429944                 WHEN 18 THEN TO_CHAR(h3.TRANSACTION_ACTION_ID)
429945                 WHEN 19 THEN TO_CHAR(h1.DIS_JOB_MATERIAL_ACCT)
429946                 WHEN 20 THEN TO_CHAR(h1.DIS_JOB_MAT_OVH_ACCT)
429947                 WHEN 21 THEN TO_CHAR(h1.DIS_JOB_RESOURCE_ACCT)
429948                 WHEN 22 THEN TO_CHAR(h1.DIS_JOB_OUT_PROC_ACCT)
429949                 WHEN 23 THEN TO_CHAR(h1.DIS_JOB_OVERHEAD_ACCT)
429950                 WHEN 24 THEN TO_CHAR(h11.REP_SCHED_MATERIAL_ACCOUNT)
429951                 WHEN 25 THEN TO_CHAR(h11.REP_SCHED_MAT_OVHD_ACCOUNT)
429952                 WHEN 26 THEN TO_CHAR(h11.REP_SCHED_RESOURCE_ACCOUNT)
429953                 WHEN 27 THEN TO_CHAR(h11.REP_SCHED_OUT_PROC_ACCOUNT)
429954                 WHEN 28 THEN TO_CHAR(h11.REP_SCHED_OVERHEAD_ACCOUNT)
429955                 WHEN 29 THEN TO_CHAR(h2.FLO_SCH_MATERIAL_ACCT)
429956                 WHEN 30 THEN TO_CHAR(h2.FLO_SCH_MAT_OVHD_ACCT)
429957                 WHEN 31 THEN TO_CHAR(h2.FLO_SCH_RESOURCE_ACCT)
429958                 WHEN 32 THEN TO_CHAR(h2.FLO_SCH_OUT_PROC_ACCT)
429959                 WHEN 33 THEN TO_CHAR(h2.FLO_SCH_OVERHEAD_ACCT)
429960                 WHEN 34 THEN TO_CHAR(h3.DISTRIBUTION_TYPE)
429961                 WHEN 35 THEN TO_CHAR(h3.TRANSFER_TO_GL_INDICATOR)
429962                 
429963                 ELSE null
429964               END                           source_value
429965             , CASE r
429966                 WHEN 14 THEN fvl55.meaning
429967                 WHEN 18 THEN fvl62.meaning
429968                 WHEN 34 THEN fvl85.meaning
429969                 WHEN 35 THEN fvl114.meaning
429970                 
429971                 ELSE null
429972               END               source_meaning
429973         FROM xla_events_gt     xet  
429974       , CST_XLA_DISCRETE_JOB_REF_V  h1
429975       , CST_XLA_FLOW_SCHEDULE_REF_V  h2
429976       , CST_XLA_INV_HEADERS_V  h3
429977       , CST_XLA_INV_REF_V  h5
429978       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
429979       , CST_XLA_INV_TXN_TYPES_REF_V  h8
429980       , CST_XLA_PLA_CATEGORY_REF_V  h9
429981       , CST_XLA_REP_ITEM_REF_V  h10
429982       , CST_XLA_REP_SCHED_REF_V  h11
429983       , CST_XLA_WIP_ENTITY_REF_V  h12
429984   , fnd_lookup_values    fvl55
429985   , fnd_lookup_values    fvl62
429986   , fnd_lookup_values    fvl85
429987   , fnd_lookup_values    fvl114
429988             ,(select rownum r from all_objects where rownum <= 35 and owner = p_apps_owner)
429989        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
429990          AND xet.event_type_code = C_EVENT_TYPE_CODE
429991             AND h3.event_id = xet.event_id
429992  AND h1.dis_job_wip_entity_id  (+) = h5.transaction_source_id AND h2.flo_sch_wip_entity_id  (+) = h5.transaction_source_id AND h5.ref_transaction_id = h3.transaction_id AND h7.inventory_item_id = h3.inventory_item_id and h7.organization_id = h3.organization_id AND h8.inv_transaction_type_id = h3.transaction_type_id AND h9.pla_cat_organization_id  (+) = h3.organization_id 
429993 and h9.pla_cat_item_id          (+) = h3.inventory_item_id 
429994 and h9.pla_subinv_cg            (+) = h3.h_subinv_cg AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  and h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.transaction_id  (+) = h5.ref_transaction_id AND h12.wip_entity_id  (+) = h5.transaction_source_id   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
429995   AND fvl55.lookup_code(+)         = h12.WIP_ENTITY_TYPE
429996   AND fvl55.view_application_id(+) = 700
429997   AND fvl55.language(+)            = USERENV('LANG')
429998      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
429999   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
430000   AND fvl62.view_application_id(+) = 700
430001   AND fvl62.language(+)            = USERENV('LANG')
430002      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
430003   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
430004   AND fvl85.view_application_id(+) = 700
430005   AND fvl85.language(+)            = USERENV('LANG')
430006      AND fvl114.lookup_type(+)         = 'YES_NO'
430007   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
430008   AND fvl114.view_application_id(+) = 0
430009   AND fvl114.language(+)            = USERENV('LANG')
430010   
430011 )
430012 ;
430013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
430014 
430015       trace
430016          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
430017          ,p_level    => C_LEVEL_STATEMENT
430018          ,p_module   => l_log_module);
430019 
430020 END IF;
430021 --
430022 
430023 
430024 
430025 --
430026 INSERT INTO xla_diag_sources --line1
430027 (
430028         event_id
430029       , ledger_id
430030       , sla_ledger_id
430031       , description_language
430032       , object_name
430033       , object_type_code
430034       , line_number
430035       , source_application_id
430036       , source_type_code
430037       , source_code
430038       , source_value
430039       , source_meaning
430040       , created_by
430041       , creation_date
430042       , last_update_date
430043       , last_updated_by
430044       , last_update_login
430045       , program_update_date
430046       , program_application_id
430047       , program_id
430048       , request_id
430049 )
430050 SELECT  event_id
430051       , p_target_ledger_id
430052       , p_sla_ledger_id
430053       , p_language
430054       , object_name
430055       , object_type_code
430056       , line_number
430057       , source_application_id
430058       , source_type_code
430059       , source_code
430060       , SUBSTR(source_value,1,1996)
430061       , SUBSTR(source_meaning,1,200)
430062       , xla_environment_pkg.g_Usr_Id
430063       , TRUNC(SYSDATE)
430064       , TRUNC(SYSDATE)
430065       , xla_environment_pkg.g_Usr_Id
430066       , xla_environment_pkg.g_Login_Id
430067       , TRUNC(SYSDATE)
430068       , xla_environment_pkg.g_Prog_Appl_Id
430069       , xla_environment_pkg.g_Prog_Id
430070       , xla_environment_pkg.g_Req_Id
430071   FROM (
430072        SELECT xet.event_id                  event_id
430073             , l4.line_number                 line_number
430074             , CASE r
430075                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
430076                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
430077                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
430078                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
430079                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
430080                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
430081                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
430082                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
430083                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
430084                 WHEN 10 THEN 'CST_XLA_INV_LINES_V' 
430085                 WHEN 11 THEN 'CST_XLA_INV_LINES_V' 
430086                 WHEN 12 THEN 'CST_XLA_INV_SEC_INVS_REF_V' 
430087                 
430088                ELSE null
430089               END                           object_name
430090             , CASE r
430091                 WHEN 1 THEN 'LINE' 
430092                 WHEN 2 THEN 'LINE' 
430093                 WHEN 3 THEN 'LINE' 
430094                 WHEN 4 THEN 'LINE' 
430095                 WHEN 5 THEN 'LINE' 
430096                 WHEN 6 THEN 'LINE' 
430097                 WHEN 7 THEN 'LINE' 
430098                 WHEN 8 THEN 'LINE' 
430099                 WHEN 9 THEN 'LINE' 
430100                 WHEN 10 THEN 'LINE' 
430101                 WHEN 11 THEN 'LINE' 
430102                 WHEN 12 THEN 'LINE' 
430103                 
430104                 ELSE null
430105               END                           object_type_code
430106             , CASE r
430107                 WHEN 1 THEN '707' 
430108                 WHEN 2 THEN '707' 
430109                 WHEN 3 THEN '707' 
430110                 WHEN 4 THEN '707' 
430111                 WHEN 5 THEN '707' 
430112                 WHEN 6 THEN '707' 
430113                 WHEN 7 THEN '707' 
430114                 WHEN 8 THEN '707' 
430115                 WHEN 9 THEN '707' 
430116                 WHEN 10 THEN '707' 
430117                 WHEN 11 THEN '707' 
430118                 WHEN 12 THEN '707' 
430119                 
430120                 ELSE null
430121               END                           source_application_id
430122             , 'S'             source_type_code
430123             , CASE r
430124                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
430125                 WHEN 2 THEN 'COST_ELEMENT_ID' 
430126                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
430127                 WHEN 4 THEN 'CURRENCY_CODE' 
430128                 WHEN 5 THEN 'ENTERED_AMOUNT' 
430129                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
430130                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
430131                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
430132                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
430133                 WHEN 10 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
430134                 WHEN 11 THEN 'L_ORGANIZATION_CODE' 
430135                 WHEN 12 THEN 'ASSET_INVENTORY' 
430136                 
430137                 ELSE null
430138               END                           source_code
430139             , CASE r
430140                 WHEN 1 THEN TO_CHAR(l4.CODE_COMBINATION_ID)
430141                 WHEN 2 THEN TO_CHAR(l4.COST_ELEMENT_ID)
430142                 WHEN 3 THEN TO_CHAR(l4.DISTRIBUTION_IDENTIFIER)
430143                 WHEN 4 THEN TO_CHAR(l4.CURRENCY_CODE)
430144                 WHEN 5 THEN TO_CHAR(l4.ENTERED_AMOUNT)
430145                 WHEN 6 THEN TO_CHAR(l4.CURRENCY_CONVERSION_DATE)
430146                 WHEN 7 THEN TO_CHAR(l4.CURRENCY_CONVERSION_RATE)
430147                 WHEN 8 THEN TO_CHAR(l4.CURRENCY_CONVERSION_TYPE)
430148                 WHEN 9 THEN TO_CHAR(l4.ACCOUNTED_AMOUNT)
430149                 WHEN 10 THEN TO_CHAR(l4.ACCOUNTING_LINE_TYPE_CODE)
430150                 WHEN 11 THEN TO_CHAR(l4.L_ORGANIZATION_CODE)
430151                 WHEN 12 THEN TO_CHAR(l6.ASSET_INVENTORY)
430152                 
430153                 ELSE null
430154               END                           source_value
430155             , CASE r
430156                 WHEN 2 THEN XLA_00707_AAD_S_000020_PKG.GetMeaning(
430157                           1009615
430158                          ,TO_CHAR(l4.COST_ELEMENT_ID)
430159                          ,'COST_ELEMENT_ID'
430160                          ,'S'
430161                          ,707)
430162                 WHEN 12 THEN fvl110.meaning
430163                 
430164                 ELSE null
430165               END               source_meaning
430166          FROM  xla_events_gt     xet  
430167         , CST_XLA_INV_LINES_V  l4
430168         , CST_XLA_INV_SEC_INVS_REF_V  l6
430169   , fnd_lookup_values    fvl110
430170             ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
430171         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
430172           AND xet.event_type_code = C_EVENT_TYPE_CODE
430173             AND l4.event_id          = xet.event_id
430174  AND l6.subinventory  (+) = l4.subinventory_code  and l6.subinv_organization_id  (+) = l4.l_organization_id   AND fvl110.lookup_type(+)         = 'YES_NO'
430175   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
430176   AND fvl110.view_application_id(+) = 0
430177   AND fvl110.language(+)            = USERENV('LANG')
430178   
430179 )
430180 ;
430181 --
430182 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
430183 
430184       trace
430185          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
430186          ,p_level    => C_LEVEL_STATEMENT
430187          ,p_module   => l_log_module);
430188 
430189 END IF;
430190 
430191 
430192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
430193       trace
430194          (p_msg      => 'END of insert_sources_624'
430195          ,p_level    => C_LEVEL_PROCEDURE
430196          ,p_module   => l_log_module);
430197 END IF;
430198 EXCEPTION
430199   WHEN xla_exceptions_pkg.application_exception THEN
430200       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
430201             trace
430202                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
430203                ,p_level    => C_LEVEL_EXCEPTION
430204                ,p_module   => l_log_module);
430205       END IF;
430206       RAISE;
430207   WHEN OTHERS THEN
430208       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
430209             trace
430210                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
430211                ,p_level    => C_LEVEL_EXCEPTION
430212                ,p_module   => l_log_module);
430213        END IF;
430214        xla_exceptions_pkg.raise_message
430215            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_624');
430216 END insert_sources_624;
430217 --
430218 
430219 ---------------------------------------
430220 --
430221 -- PRIVATE FUNCTION
430222 --         EventType_624
430223 --
430224 ----------------------------------------
430225 --
430226 FUNCTION EventType_624
430227        (p_application_id         IN NUMBER
430228        ,p_base_ledger_id         IN NUMBER
430229        ,p_target_ledger_id       IN NUMBER
430230        ,p_language               IN VARCHAR2
430231        ,p_currency_code          IN VARCHAR2
430232        ,p_sla_ledger_id          IN NUMBER
430233        ,p_pad_start_date         IN DATE
430234        ,p_pad_end_date           IN DATE
430235        ,p_primary_ledger_id      IN NUMBER)
430236 RETURN BOOLEAN IS
430237 --
430238 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_NEG_COMP_RETURN';
430239 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
430240 
430241 l_calculate_acctd_flag   VARCHAR2(1) :='N';
430242 l_calculate_g_l_flag     VARCHAR2(1) :='N';
430243 --
430244 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430245 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430246 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
430247 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
430248 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430249 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
430250 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
430251 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430252 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
430253 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
430254 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430255 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430256 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430257 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
430258 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
430259 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
430260 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
430261 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
430262 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
430263 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
430264 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
430265 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
430266 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
430267 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
430268 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
430269 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
430270 
430271 l_event_id                             NUMBER;
430272 l_previous_event_id                    NUMBER;
430273 l_first_event_id                       NUMBER;
430274 l_last_event_id                        NUMBER;
430275 
430276 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
430277 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
430278 --
430279 --
430280 l_result                    BOOLEAN := TRUE;
430281 l_rows                      NUMBER  := 1000;
430282 l_event_type_name           VARCHAR2(80) := 'WIP Negative Component Return';
430283 l_event_class_name          VARCHAR2(80) := 'WIP Material';
430284 l_description               VARCHAR2(4000);
430285 l_transaction_reversal      NUMBER;
430286 l_ae_header_id              NUMBER;
430287 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
430288 l_log_module                VARCHAR2(240);
430289 --
430290 l_acct_reversal_source      VARCHAR2(30);
430291 l_trx_reversal_source       VARCHAR2(30);
430292 
430293 l_continue_with_lines       BOOLEAN := TRUE;
430294 --
430295 l_acc_rev_gl_date_source    DATE;                      -- 4262811
430296 --
430297 type t_array_event_id is table of number index by binary_integer;
430298 
430299 l_rec_array_event                    t_rec_array_event;
430300 l_null_rec_array_event               t_rec_array_event;
430301 l_array_ae_header_id                 xla_number_array_type;
430302 l_actual_flag                        VARCHAR2(1) := NULL;
430303 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
430304 l_balance_type_code                  VARCHAR2(1) :=NULL;
430305 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
430306 
430307 --
430308 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
430309 --
430310 
430311 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
430312 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
430313 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
430314 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
430315 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
430316 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.INV_TXN_DISTRIBUTION_ACCT%TYPE INDEX BY BINARY_INTEGER;
430317 TYPE t_array_source_22 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_BRIDGING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430318 TYPE t_array_source_41 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430319 TYPE t_array_source_42 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_MATERIAL_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430320 TYPE t_array_source_43 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430321 TYPE t_array_source_44 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OUTSIDE_PROCESSING_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430322 TYPE t_array_source_45 IS TABLE OF CST_XLA_PLA_CATEGORY_REF_V.PLA_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430323 TYPE t_array_source_54 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
430324 TYPE t_array_source_55 IS TABLE OF CST_XLA_WIP_ENTITY_REF_V.WIP_ENTITY_TYPE%TYPE INDEX BY BINARY_INTEGER;
430325 TYPE t_array_source_56 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
430326 TYPE t_array_source_57 IS TABLE OF CST_XLA_REP_ITEM_REF_V.REP_ITM_BRIDGING_ACCT%TYPE INDEX BY BINARY_INTEGER;
430327 TYPE t_array_source_61 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_SOURCE_ID%TYPE INDEX BY BINARY_INTEGER;
430328 TYPE t_array_source_62 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
430329 TYPE t_array_source_63 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
430330 TYPE t_array_source_64 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_MAT_OVH_ACCT%TYPE INDEX BY BINARY_INTEGER;
430331 TYPE t_array_source_65 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
430332 TYPE t_array_source_66 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_OUT_PROC_ACCT%TYPE INDEX BY BINARY_INTEGER;
430333 TYPE t_array_source_67 IS TABLE OF CST_XLA_DISCRETE_JOB_REF_V.DIS_JOB_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
430334 TYPE t_array_source_68 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_MATERIAL_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430335 TYPE t_array_source_69 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_MAT_OVHD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430336 TYPE t_array_source_70 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_RESOURCE_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430337 TYPE t_array_source_71 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_OUT_PROC_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430338 TYPE t_array_source_72 IS TABLE OF CST_XLA_REP_SCHED_REF_V.REP_SCHED_OVERHEAD_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
430339 TYPE t_array_source_73 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_MATERIAL_ACCT%TYPE INDEX BY BINARY_INTEGER;
430340 TYPE t_array_source_74 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_MAT_OVHD_ACCT%TYPE INDEX BY BINARY_INTEGER;
430341 TYPE t_array_source_75 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_RESOURCE_ACCT%TYPE INDEX BY BINARY_INTEGER;
430342 TYPE t_array_source_76 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_OUT_PROC_ACCT%TYPE INDEX BY BINARY_INTEGER;
430343 TYPE t_array_source_77 IS TABLE OF CST_XLA_FLOW_SCHEDULE_REF_V.FLO_SCH_OVERHEAD_ACCT%TYPE INDEX BY BINARY_INTEGER;
430344 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
430345 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
430346 
430347 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
430348 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.COST_ELEMENT_ID%TYPE INDEX BY BINARY_INTEGER;
430349 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
430350 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
430351 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
430352 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
430353 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
430354 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
430355 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
430356 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
430357 TYPE t_array_source_108 IS TABLE OF CST_XLA_INV_LINES_V.L_ORGANIZATION_CODE%TYPE INDEX BY BINARY_INTEGER;
430358 TYPE t_array_source_110 IS TABLE OF CST_XLA_INV_SEC_INVS_REF_V.ASSET_INVENTORY%TYPE INDEX BY BINARY_INTEGER;
430359 
430360 l_array_source_1              t_array_source_1;
430361 l_array_source_2              t_array_source_2;
430362 l_array_source_3              t_array_source_3;
430363 l_array_source_4              t_array_source_4;
430364 l_array_source_5              t_array_source_5;
430365 l_array_source_20              t_array_source_20;
430366 l_array_source_22              t_array_source_22;
430367 l_array_source_41              t_array_source_41;
430368 l_array_source_42              t_array_source_42;
430369 l_array_source_43              t_array_source_43;
430370 l_array_source_44              t_array_source_44;
430371 l_array_source_45              t_array_source_45;
430372 l_array_source_54              t_array_source_54;
430373 l_array_source_55              t_array_source_55;
430374 l_array_source_55_meaning      t_array_lookup_meaning;
430375 l_array_source_56              t_array_source_56;
430376 l_array_source_57              t_array_source_57;
430377 l_array_source_61              t_array_source_61;
430378 l_array_source_62              t_array_source_62;
430379 l_array_source_62_meaning      t_array_lookup_meaning;
430380 l_array_source_63              t_array_source_63;
430381 l_array_source_64              t_array_source_64;
430382 l_array_source_65              t_array_source_65;
430383 l_array_source_66              t_array_source_66;
430384 l_array_source_67              t_array_source_67;
430385 l_array_source_68              t_array_source_68;
430386 l_array_source_69              t_array_source_69;
430387 l_array_source_70              t_array_source_70;
430388 l_array_source_71              t_array_source_71;
430389 l_array_source_72              t_array_source_72;
430390 l_array_source_73              t_array_source_73;
430391 l_array_source_74              t_array_source_74;
430392 l_array_source_75              t_array_source_75;
430393 l_array_source_76              t_array_source_76;
430394 l_array_source_77              t_array_source_77;
430395 l_array_source_85              t_array_source_85;
430396 l_array_source_85_meaning      t_array_lookup_meaning;
430397 l_array_source_114              t_array_source_114;
430398 l_array_source_114_meaning      t_array_lookup_meaning;
430399 
430400 l_array_source_11      t_array_source_11;
430401 l_array_source_15      t_array_source_15;
430402 l_array_source_84      t_array_source_84;
430403 l_array_source_88      t_array_source_88;
430404 l_array_source_91      t_array_source_91;
430405 l_array_source_92      t_array_source_92;
430406 l_array_source_93      t_array_source_93;
430407 l_array_source_94      t_array_source_94;
430408 l_array_source_95      t_array_source_95;
430409 l_array_source_97      t_array_source_97;
430410 l_array_source_108      t_array_source_108;
430411 l_array_source_110      t_array_source_110;
430412 l_array_source_110_meaning      t_array_lookup_meaning;
430413 
430414 --
430415 CURSOR header_cur
430416 IS
430417 SELECT /*+ leading(xet) cardinality(xet,1) */
430418 -- Event Type Code: WIP_NEG_COMP_RETURN
430419 -- Event Class Code: WIP_MTL
430420     xet.entity_id
430421   , xet.legal_entity_id
430422   , xet.entity_code
430423   , xet.transaction_number
430424   , xet.event_id
430425   , xet.event_class_code
430426   , xet.event_type_code
430427   , xet.event_number
430428   , xet.event_date
430429   , xet.transaction_date
430430   , xet.reference_num_1
430431   , xet.reference_num_2
430432   , xet.reference_num_3
430433   , xet.reference_num_4
430434   , xet.reference_char_1
430435   , xet.reference_char_2
430436   , xet.reference_char_3
430437   , xet.reference_char_4
430438   , xet.reference_date_1
430439   , xet.reference_date_2
430440   , xet.reference_date_3
430441   , xet.reference_date_4
430442   , xet.event_created_by
430443   , xet.budgetary_control_flag 
430444   , h3.TRANSACTION_ID    source_1
430445   , h7.ITEM_CONCATENATED_SEGMENTS    source_2
430446   , h5.TRANSACTION_QUANTITY    source_3
430447   , h5.TRANSACTION_UOM    source_4
430448   , h8.INV_TXN_TYPE_DESCRIPTION    source_5
430449   , h5.INV_TXN_DISTRIBUTION_ACCT    source_20
430450   , h9.PLA_BRIDGING_ACCOUNT    source_22
430451   , h9.PLA_MATERIAL_ACCOUNT    source_41
430452   , h9.PLA_MATERIAL_OVERHEAD_ACCOUNT    source_42
430453   , h9.PLA_RESOURCE_ACCOUNT    source_43
430454   , h9.PLA_OUTSIDE_PROCESSING_ACCOUNT    source_44
430455   , h9.PLA_OVERHEAD_ACCOUNT    source_45
430456   , h1.DIS_JOB_BRIDGING_ACCT    source_54
430457   , h12.WIP_ENTITY_TYPE    source_55
430458   , fvl55.meaning   source_55_meaning
430459   , h2.FLO_SCH_BRIDGING_ACCT    source_56
430460   , h10.REP_ITM_BRIDGING_ACCT    source_57
430461   , h5.TRANSACTION_SOURCE_ID    source_61
430462   , h3.TRANSACTION_ACTION_ID    source_62
430463   , fvl62.meaning   source_62_meaning
430464   , h1.DIS_JOB_MATERIAL_ACCT    source_63
430465   , h1.DIS_JOB_MAT_OVH_ACCT    source_64
430466   , h1.DIS_JOB_RESOURCE_ACCT    source_65
430467   , h1.DIS_JOB_OUT_PROC_ACCT    source_66
430468   , h1.DIS_JOB_OVERHEAD_ACCT    source_67
430469   , h11.REP_SCHED_MATERIAL_ACCOUNT    source_68
430470   , h11.REP_SCHED_MAT_OVHD_ACCOUNT    source_69
430471   , h11.REP_SCHED_RESOURCE_ACCOUNT    source_70
430472   , h11.REP_SCHED_OUT_PROC_ACCOUNT    source_71
430473   , h11.REP_SCHED_OVERHEAD_ACCOUNT    source_72
430474   , h2.FLO_SCH_MATERIAL_ACCT    source_73
430475   , h2.FLO_SCH_MAT_OVHD_ACCT    source_74
430476   , h2.FLO_SCH_RESOURCE_ACCT    source_75
430477   , h2.FLO_SCH_OUT_PROC_ACCT    source_76
430478   , h2.FLO_SCH_OVERHEAD_ACCT    source_77
430479   , h3.DISTRIBUTION_TYPE    source_85
430480   , fvl85.meaning   source_85_meaning
430481   , h3.TRANSFER_TO_GL_INDICATOR    source_114
430482   , fvl114.meaning   source_114_meaning
430483   FROM xla_events_gt     xet 
430484   , CST_XLA_DISCRETE_JOB_REF_V  h1
430485   , CST_XLA_FLOW_SCHEDULE_REF_V  h2
430486   , CST_XLA_INV_HEADERS_V  h3
430487   , CST_XLA_INV_REF_V  h5
430488   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h7
430489   , CST_XLA_INV_TXN_TYPES_REF_V  h8
430490   , CST_XLA_PLA_CATEGORY_REF_V  h9
430491   , CST_XLA_REP_ITEM_REF_V  h10
430492   , CST_XLA_REP_SCHED_REF_V  h11
430493   , CST_XLA_WIP_ENTITY_REF_V  h12
430494   , fnd_lookup_values    fvl55
430495   , fnd_lookup_values    fvl62
430496   , fnd_lookup_values    fvl85
430497   , fnd_lookup_values    fvl114
430498  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
430499    and xet.event_type_code = C_EVENT_TYPE_CODE
430500    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
430501  AND h1.DIS_JOB_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h2.FLO_SCH_WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID AND h5.ref_transaction_id = h3.transaction_id AND h7.INVENTORY_ITEM_ID = h3.INVENTORY_ITEM_ID AND h7.ORGANIZATION_ID = h3.ORGANIZATION_ID AND h8.INV_TRANSACTION_TYPE_ID = h3.TRANSACTION_TYPE_ID AND h9.PLA_CAT_ORGANIZATION_ID  (+) = h3.ORGANIZATION_ID 
430502 AND h9.PLA_CAT_ITEM_ID          (+) = h3.INVENTORY_ITEM_ID 
430503 AND h9.PLA_SUBINV_CG            (+) = h3.H_SUBINV_CG AND h10.rep_itm_wip_entity_id  (+) = h5.transaction_source_id  AND h10.rep_itm_line_id  (+) = h5.repetitive_line_id AND h11.transaction_id  (+) = h5.ref_transaction_id AND h12.WIP_ENTITY_ID  (+) = h5.TRANSACTION_SOURCE_ID   AND fvl55.lookup_type(+)         = 'WIP_ENTITY'
430504   AND fvl55.lookup_code(+)         = h12.WIP_ENTITY_TYPE
430505   AND fvl55.view_application_id(+) = 700
430506   AND fvl55.language(+)            = USERENV('LANG')
430507      AND fvl62.lookup_type(+)         = 'MTL_TRANSACTION_ACTION'
430508   AND fvl62.lookup_code(+)         = h3.TRANSACTION_ACTION_ID
430509   AND fvl62.view_application_id(+) = 700
430510   AND fvl62.language(+)            = USERENV('LANG')
430511      AND fvl85.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
430512   AND fvl85.lookup_code(+)         = h3.DISTRIBUTION_TYPE
430513   AND fvl85.view_application_id(+) = 700
430514   AND fvl85.language(+)            = USERENV('LANG')
430515      AND fvl114.lookup_type(+)         = 'YES_NO'
430516   AND fvl114.lookup_code(+)         = h3.TRANSFER_TO_GL_INDICATOR
430517   AND fvl114.view_application_id(+) = 0
430518   AND fvl114.language(+)            = USERENV('LANG')
430519   
430520  ORDER BY event_id
430521 ;
430522 
430523 
430524 --
430525 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
430526 IS
430527 SELECT /*+ leading(xet) cardinality(xet,1) */
430528 -- Event Type Code: WIP_NEG_COMP_RETURN
430529 -- Event Class Code: WIP_MTL
430530     xet.entity_id
430531    ,xet.legal_entity_id
430532    ,xet.entity_code
430533    ,xet.transaction_number
430534    ,xet.event_id
430535    ,xet.event_class_code
430536    ,xet.event_type_code
430537    ,xet.event_number
430538    ,xet.event_date
430539    ,xet.transaction_date
430540    ,xet.reference_num_1
430541    ,xet.reference_num_2
430542    ,xet.reference_num_3
430543    ,xet.reference_num_4
430544    ,xet.reference_char_1
430545    ,xet.reference_char_2
430546    ,xet.reference_char_3
430547    ,xet.reference_char_4
430548    ,xet.reference_date_1
430549    ,xet.reference_date_2
430550    ,xet.reference_date_3
430551    ,xet.reference_date_4
430552    ,xet.event_created_by
430553    ,xet.budgetary_control_flag  , l4.LINE_NUMBER  
430554   , l4.CODE_COMBINATION_ID    source_11
430555   , l4.COST_ELEMENT_ID    source_15
430556   , l4.DISTRIBUTION_IDENTIFIER    source_84
430557   , l4.CURRENCY_CODE    source_88
430558   , l4.ENTERED_AMOUNT    source_91
430559   , l4.CURRENCY_CONVERSION_DATE    source_92
430560   , l4.CURRENCY_CONVERSION_RATE    source_93
430561   , l4.CURRENCY_CONVERSION_TYPE    source_94
430562   , l4.ACCOUNTED_AMOUNT    source_95
430563   , l4.ACCOUNTING_LINE_TYPE_CODE    source_97
430564   , l4.L_ORGANIZATION_CODE    source_108
430565   , l6.ASSET_INVENTORY    source_110
430566   , fvl110.meaning   source_110_meaning
430567   FROM xla_events_gt     xet 
430568   , CST_XLA_INV_LINES_V  l4
430569   , CST_XLA_INV_SEC_INVS_REF_V  l6
430570   , fnd_lookup_values    fvl110
430571  WHERE xet.event_id between x_first_event_id and x_last_event_id
430572    and xet.event_date between p_pad_start_date and p_pad_end_date
430573    and xet.event_type_code = C_EVENT_TYPE_CODE
430574    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
430575  AND l6.SUBINVENTORY  (+) = l4.SUBINVENTORY_CODE  AND l6.SUBINV_ORGANIZATION_ID  (+) = l4.L_ORGANIZATION_ID   AND fvl110.lookup_type(+)         = 'YES_NO'
430576   AND fvl110.lookup_code(+)         = l6.ASSET_INVENTORY
430577   AND fvl110.view_application_id(+) = 0
430578   AND fvl110.language(+)            = USERENV('LANG')
430579   ;
430580 
430581 --
430582 BEGIN
430583 IF g_log_enabled THEN
430584    l_log_module := C_DEFAULT_MODULE||'.EventType_624';
430585 END IF;
430586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
430587    trace
430588       (p_msg      => 'BEGIN of EventType_624'
430589       ,p_level    => C_LEVEL_PROCEDURE
430590       ,p_module   => l_log_module);
430591 END IF;
430592 
430593 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
430594    trace
430595       (p_msg      => 'p_application_id = '||p_application_id||
430596                      ' - p_base_ledger_id = '||p_base_ledger_id||
430597                      ' - p_target_ledger_id  = '||p_target_ledger_id||
430598                      ' - p_language = '||p_language||
430599                      ' - p_currency_code = '||p_currency_code||
430600                      ' - p_sla_ledger_id = '||p_sla_ledger_id
430601       ,p_level    => C_LEVEL_STATEMENT
430602       ,p_module   => l_log_module);
430603 END IF;
430604 --
430605 -- initialze arrays
430606 --
430607 g_array_event.DELETE;
430608 l_rec_array_event := l_null_rec_array_event;
430609 --
430610 --------------------------------------
430611 -- 4262811 Initialze MPA Line Number
430612 --------------------------------------
430613 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
430614 
430615 --
430616 
430617 --
430618 OPEN header_cur;
430619 --
430620 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
430621    trace
430622    (p_msg      => 'SQL - FETCH header_cur'
430623    ,p_level    => C_LEVEL_STATEMENT
430624    ,p_module   => l_log_module);
430625 END IF;
430626 --
430627 LOOP
430628 FETCH header_cur BULK COLLECT INTO
430629         l_array_entity_id
430630       , l_array_legal_entity_id
430631       , l_array_entity_code
430632       , l_array_transaction_num
430633       , l_array_event_id
430634       , l_array_class_code
430635       , l_array_event_type
430636       , l_array_event_number
430637       , l_array_event_date
430638       , l_array_transaction_date
430639       , l_array_reference_num_1
430640       , l_array_reference_num_2
430641       , l_array_reference_num_3
430642       , l_array_reference_num_4
430643       , l_array_reference_char_1
430644       , l_array_reference_char_2
430645       , l_array_reference_char_3
430646       , l_array_reference_char_4
430647       , l_array_reference_date_1
430648       , l_array_reference_date_2
430649       , l_array_reference_date_3
430650       , l_array_reference_date_4
430651       , l_array_event_created_by
430652       , l_array_budgetary_control_flag 
430653       , l_array_source_1
430654       , l_array_source_2
430655       , l_array_source_3
430656       , l_array_source_4
430657       , l_array_source_5
430658       , l_array_source_20
430659       , l_array_source_22
430660       , l_array_source_41
430661       , l_array_source_42
430662       , l_array_source_43
430663       , l_array_source_44
430664       , l_array_source_45
430665       , l_array_source_54
430666       , l_array_source_55
430667       , l_array_source_55_meaning
430668       , l_array_source_56
430669       , l_array_source_57
430670       , l_array_source_61
430671       , l_array_source_62
430672       , l_array_source_62_meaning
430673       , l_array_source_63
430674       , l_array_source_64
430675       , l_array_source_65
430676       , l_array_source_66
430677       , l_array_source_67
430678       , l_array_source_68
430679       , l_array_source_69
430680       , l_array_source_70
430681       , l_array_source_71
430682       , l_array_source_72
430683       , l_array_source_73
430684       , l_array_source_74
430685       , l_array_source_75
430686       , l_array_source_76
430687       , l_array_source_77
430688       , l_array_source_85
430689       , l_array_source_85_meaning
430690       , l_array_source_114
430691       , l_array_source_114_meaning
430692       LIMIT l_rows;
430693 --
430694 IF (C_LEVEL_EVENT >= g_log_level) THEN
430695    trace
430696    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
430697    ,p_level    => C_LEVEL_EVENT
430698    ,p_module   => l_log_module);
430699 END IF;
430700 --
430701 EXIT WHEN l_array_entity_id.COUNT = 0;
430702 
430703 -- initialize arrays
430704 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
430705 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
430706 
430707 --
430708 -- Bug 4458708
430709 --
430710 XLA_AE_LINES_PKG.g_LineNumber := 0;
430711 
430712 
430713 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
430714 g_last_hdr_idx := l_array_event_id.LAST;
430715 --
430716 -- loop for the headers. Each iteration is for each header extract row
430717 -- fetched in header cursor
430718 --
430719 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
430720 
430721 --
430722 -- set event info as cache for other routines to refer event attributes
430723 --
430724 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
430725    (p_application_id           => p_application_id
430726    ,p_primary_ledger_id        => p_primary_ledger_id
430727    ,p_base_ledger_id           => p_base_ledger_id
430728    ,p_target_ledger_id         => p_target_ledger_id
430729    ,p_entity_id                => l_array_entity_id(hdr_idx)
430730    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
430731    ,p_entity_code              => l_array_entity_code(hdr_idx)
430732    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
430733    ,p_event_id                 => l_array_event_id(hdr_idx)
430734    ,p_event_class_code         => l_array_class_code(hdr_idx)
430735    ,p_event_type_code          => l_array_event_type(hdr_idx)
430736    ,p_event_number             => l_array_event_number(hdr_idx)
430737    ,p_event_date               => l_array_event_date(hdr_idx)
430738    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
430739    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
430740    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
430741    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
430742    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
430743    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
430744    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
430745    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
430746    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
430747    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
430748    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
430749    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
430750    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
430751    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
430752    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
430753 
430754 --
430755 -- set the status of entry to C_VALID (0)
430756 --
430757 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
430758 
430759 --
430760 -- initialize a row for ae header
430761 --
430762 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
430763 
430764 l_event_id := l_array_event_id(hdr_idx);
430765 
430766 --
430767 -- storing the hdr_idx for event. May be used by line cursor.
430768 --
430769 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
430770 
430771 --
430772 -- store sources from header extract. This can be improved to
430773 -- store only those sources from header extract that may be used in lines
430774 --
430775 
430776 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
430777 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
430778 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
430779 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
430780 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
430781 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
430782 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
430783 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
430784 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
430785 g_array_event(l_event_id).array_value_num('source_43') := l_array_source_43(hdr_idx);
430786 g_array_event(l_event_id).array_value_num('source_44') := l_array_source_44(hdr_idx);
430787 g_array_event(l_event_id).array_value_num('source_45') := l_array_source_45(hdr_idx);
430788 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
430789 g_array_event(l_event_id).array_value_num('source_55') := l_array_source_55(hdr_idx);
430790 g_array_event(l_event_id).array_value_char('source_55_meaning') := l_array_source_55_meaning(hdr_idx);
430791 g_array_event(l_event_id).array_value_num('source_56') := l_array_source_56(hdr_idx);
430792 g_array_event(l_event_id).array_value_num('source_57') := l_array_source_57(hdr_idx);
430793 g_array_event(l_event_id).array_value_num('source_61') := l_array_source_61(hdr_idx);
430794 g_array_event(l_event_id).array_value_num('source_62') := l_array_source_62(hdr_idx);
430795 g_array_event(l_event_id).array_value_char('source_62_meaning') := l_array_source_62_meaning(hdr_idx);
430796 g_array_event(l_event_id).array_value_num('source_63') := l_array_source_63(hdr_idx);
430797 g_array_event(l_event_id).array_value_num('source_64') := l_array_source_64(hdr_idx);
430798 g_array_event(l_event_id).array_value_num('source_65') := l_array_source_65(hdr_idx);
430799 g_array_event(l_event_id).array_value_num('source_66') := l_array_source_66(hdr_idx);
430800 g_array_event(l_event_id).array_value_num('source_67') := l_array_source_67(hdr_idx);
430801 g_array_event(l_event_id).array_value_num('source_68') := l_array_source_68(hdr_idx);
430802 g_array_event(l_event_id).array_value_num('source_69') := l_array_source_69(hdr_idx);
430803 g_array_event(l_event_id).array_value_num('source_70') := l_array_source_70(hdr_idx);
430804 g_array_event(l_event_id).array_value_num('source_71') := l_array_source_71(hdr_idx);
430805 g_array_event(l_event_id).array_value_num('source_72') := l_array_source_72(hdr_idx);
430806 g_array_event(l_event_id).array_value_num('source_73') := l_array_source_73(hdr_idx);
430807 g_array_event(l_event_id).array_value_num('source_74') := l_array_source_74(hdr_idx);
430808 g_array_event(l_event_id).array_value_num('source_75') := l_array_source_75(hdr_idx);
430809 g_array_event(l_event_id).array_value_num('source_76') := l_array_source_76(hdr_idx);
430810 g_array_event(l_event_id).array_value_num('source_77') := l_array_source_77(hdr_idx);
430811 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
430812 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
430813 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
430814 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
430815 
430816 --
430817 -- initilaize the status of ae headers for diffrent balance types
430818 -- the status is initialised to C_NOT_CREATED (2)
430819 --
430820 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
430821 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
430822 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
430823 
430824 --
430825 -- call api to validate and store accounting attributes for header
430826 --
430827 
430828 ------------------------------------------------------------
430829 -- Accrual Reversal : to get date for Standard Source (NONE)
430830 ------------------------------------------------------------
430831 l_acc_rev_gl_date_source := NULL;
430832 
430833      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
430834       l_rec_acct_attrs.array_date_value(1) := 
430835 xla_ae_sources_pkg.GetSystemSourceDate(
430836    p_source_code           => 'XLA_REFERENCE_DATE_1'
430837  , p_source_type_code      => 'Y'
430838  , p_source_application_id =>  602
430839 );
430840      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
430841       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
430842 
430843 
430844 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
430845 
430846 XLA_AE_HEADER_PKG.SetJeCategoryName;
430847 
430848 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
430849 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
430850 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
430851 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
430852 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
430853 
430854 
430855 --
430856 xla_ae_header_pkg.SetHdrDescription(
430857    p_description => Description_1 (
430858    p_application_id => p_application_id 
430859  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
430860  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
430861  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
430862  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
430863  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
430864    )
430865 );
430866 --
430867 
430868 -- No header level analytical criteria
430869 
430870 --
430871 --accounting attribute enhancement, bug 3612931
430872 --
430873 l_trx_reversal_source := SUBSTR(NULL, 1,30);
430874 
430875 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
430876    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
430877 
430878    xla_accounting_err_pkg.build_message
430879       (p_appli_s_name            => 'XLA'
430880       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
430881       ,p_token_1                 => 'ACCT_ATTR_NAME'
430882       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
430883       ,p_token_2                 => 'PRODUCT_NAME'
430884       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
430885       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
430886       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
430887       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
430888 
430889 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
430890    --
430891    -- following sets the accounting attributes needed to reverse
430892    -- accounting for a distributeion
430893    --
430894    xla_ae_lines_pkg.SetTrxReversalAttrs
430895       (p_event_id              => l_event_id
430896       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
430897       ,p_trx_reversal_source   => l_trx_reversal_source);
430898 
430899 END IF;
430900 
430901 
430902 ----------------------------------------------------------------
430903 -- 4262811 -  update the header statuses to invalid in need be
430904 ----------------------------------------------------------------
430905 --
430906 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
430907 
430908 
430909   -----------------------------------------------
430910   -- No accrual reversal for the event class/type
430911   -----------------------------------------------
430912 ----------------------------------------------------------------
430913 
430914 --
430915 -- this ends the header loop iteration for one bulk fetch
430916 --
430917 END LOOP;
430918 
430919 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
430920 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
430921 
430922 --
430923 -- insert dummy rows into lines gt table that were created due to
430924 -- transaction reversals
430925 --
430926 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
430927    l_result := XLA_AE_LINES_PKG.InsertLines;
430928 END IF;
430929 
430930 --
430931 -- reset the temp_line_num for each set of events fetched from header
430932 -- cursor rather than doing it for each new event in line cursor
430933 -- Bug 3939231
430934 --
430935 xla_ae_lines_pkg.g_temp_line_num := 0;
430936 
430937 
430938 
430939 --
430940 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
430941 --
430942 --
430943 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
430944 
430945       trace
430946          (p_msg      => 'SQL - FETCH line_cur'
430947          ,p_level    => C_LEVEL_STATEMENT
430948          ,p_module   => l_log_module);
430949 
430950 END IF;
430951 --
430952 --
430953 LOOP
430954   --
430955   FETCH line_cur BULK COLLECT INTO
430956         l_array_entity_id
430957       , l_array_legal_entity_id
430958       , l_array_entity_code
430959       , l_array_transaction_num
430960       , l_array_event_id
430961       , l_array_class_code
430962       , l_array_event_type
430963       , l_array_event_number
430964       , l_array_event_date
430965       , l_array_transaction_date
430966       , l_array_reference_num_1
430967       , l_array_reference_num_2
430968       , l_array_reference_num_3
430969       , l_array_reference_num_4
430970       , l_array_reference_char_1
430971       , l_array_reference_char_2
430972       , l_array_reference_char_3
430973       , l_array_reference_char_4
430974       , l_array_reference_date_1
430975       , l_array_reference_date_2
430976       , l_array_reference_date_3
430977       , l_array_reference_date_4
430978       , l_array_event_created_by
430979       , l_array_budgetary_control_flag
430980       , l_array_extract_line_num 
430981       , l_array_source_11
430982       , l_array_source_15
430983       , l_array_source_84
430984       , l_array_source_88
430985       , l_array_source_91
430986       , l_array_source_92
430987       , l_array_source_93
430988       , l_array_source_94
430989       , l_array_source_95
430990       , l_array_source_97
430991       , l_array_source_108
430992       , l_array_source_110
430993       , l_array_source_110_meaning
430994       LIMIT l_rows;
430995 
430996   --
430997   IF (C_LEVEL_EVENT >= g_log_level) THEN
430998             trace
430999                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
431000                ,p_level    => C_LEVEL_EVENT
431001                ,p_module   => l_log_module);
431002   END IF;
431003   --
431004   EXIT WHEN l_array_entity_id.count = 0;
431005 
431006   XLA_AE_LINES_PKG.g_rec_lines := null;
431007 
431008 --
431009 -- Bug 4458708
431010 --
431011 XLA_AE_LINES_PKG.g_LineNumber := 0;
431012 --
431013 --
431014 
431015 FOR Idx IN 1..l_array_event_id.count LOOP
431016    --
431017    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
431018    --
431019    l_event_id := l_array_event_id(idx);  -- 5648433
431020 
431021    --
431022    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
431023    --
431024 
431025    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
431026              (g_array_event(l_event_id).array_value_num('header_index'))
431027          ,'N'
431028          ) <> 'Y'
431029    THEN
431030       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
431031          trace
431032             (p_msg      => 'Trancaction revesal option is not Y '
431033             ,p_level    => C_LEVEL_STATEMENT
431034             ,p_module   => l_log_module);
431035       END IF;
431036 
431037 --
431038 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
431039 --
431040 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
431041 --
431042 -- set event info as cache for other routines to refer event attributes
431043 --
431044 
431045 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
431046    l_previous_event_id := l_event_id;
431047 
431048    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
431049       (p_application_id           => p_application_id
431050       ,p_primary_ledger_id        => p_primary_ledger_id
431051       ,p_base_ledger_id           => p_base_ledger_id
431052       ,p_target_ledger_id         => p_target_ledger_id
431053       ,p_entity_id                => l_array_entity_id(Idx)
431054       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
431055       ,p_entity_code              => l_array_entity_code(Idx)
431056       ,p_transaction_num          => l_array_transaction_num(Idx)
431057       ,p_event_id                 => l_array_event_id(Idx)
431058       ,p_event_class_code         => l_array_class_code(Idx)
431059       ,p_event_type_code          => l_array_event_type(Idx)
431060       ,p_event_number             => l_array_event_number(Idx)
431061       ,p_event_date               => l_array_event_date(Idx)
431062       ,p_transaction_date         => l_array_transaction_date(Idx)
431063       ,p_reference_num_1          => l_array_reference_num_1(Idx)
431064       ,p_reference_num_2          => l_array_reference_num_2(Idx)
431065       ,p_reference_num_3          => l_array_reference_num_3(Idx)
431066       ,p_reference_num_4          => l_array_reference_num_4(Idx)
431067       ,p_reference_char_1         => l_array_reference_char_1(Idx)
431068       ,p_reference_char_2         => l_array_reference_char_2(Idx)
431069       ,p_reference_char_3         => l_array_reference_char_3(Idx)
431070       ,p_reference_char_4         => l_array_reference_char_4(Idx)
431071       ,p_reference_date_1         => l_array_reference_date_1(Idx)
431072       ,p_reference_date_2         => l_array_reference_date_2(Idx)
431073       ,p_reference_date_3         => l_array_reference_date_3(Idx)
431074       ,p_reference_date_4         => l_array_reference_date_4(Idx)
431075       ,p_event_created_by         => l_array_event_created_by(Idx)
431076       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
431077        --
431078 END IF;
431079 
431080 
431081 
431082 --
431083 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
431084 
431085 l_acct_reversal_source := SUBSTR(NULL, 1,30);
431086 
431087 IF l_continue_with_lines THEN
431088    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
431089       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
431090 
431091       xla_accounting_err_pkg.build_message
431092          (p_appli_s_name            => 'XLA'
431093          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
431094          ,p_token_1                 => 'LINE_NUMBER'
431095          ,p_value_1                 => l_array_extract_line_num(Idx)
431096          ,p_token_2                 => 'PRODUCT_NAME'
431097          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
431098          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
431099          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
431100          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
431101 
431102    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
431103       --
431104       -- following sets the accounting attributes needed to reverse
431105       -- accounting for a distributeion
431106       --
431107 
431108       --
431109       -- 5217187
431110       --
431111       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
431112       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
431113                                        g_array_event(l_event_id).array_value_num('header_index'));
431114       --
431115       --
431116 
431117       -- No reversal code generated
431118 
431119       xla_ae_lines_pkg.SetAcctReversalAttrs
431120          (p_event_id             => l_event_id
431121          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
431122          ,p_calculate_acctd_flag => l_calculate_acctd_flag
431123          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
431124    END IF;
431125 
431126    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
431127        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
431128 
431129 --
431130 AcctLineType_114 (
431131  p_application_id  => p_application_id
431132  ,p_event_id     => l_event_id
431133  ,p_calculate_acctd_flag => l_calculate_acctd_flag
431134  ,p_calculate_g_l_flag => l_calculate_g_l_flag
431135  ,p_actual_flag => l_actual_flag
431136  ,p_balance_type_code => l_balance_type_code
431137  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
431138  
431139  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
431140  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
431141  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
431142  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
431143  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
431144  , p_source_11 => l_array_source_11(Idx)
431145  , p_source_84 => l_array_source_84(Idx)
431146  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
431147  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
431148  , p_source_88 => l_array_source_88(Idx)
431149  , p_source_91 => l_array_source_91(Idx)
431150  , p_source_92 => l_array_source_92(Idx)
431151  , p_source_93 => l_array_source_93(Idx)
431152  , p_source_94 => l_array_source_94(Idx)
431153  , p_source_95 => l_array_source_95(Idx)
431154  , p_source_97 => l_array_source_97(Idx)
431155  );
431156 If(l_balance_type_code = 'A') THEN
431157   l_actual_gain_loss_ref := l_gain_or_loss_ref;
431158 END IF;
431159 
431160 --
431161 
431162 
431163 --
431164 AcctLineType_254 (
431165  p_application_id  => p_application_id
431166  ,p_event_id     => l_event_id
431167  ,p_calculate_acctd_flag => l_calculate_acctd_flag
431168  ,p_calculate_g_l_flag => l_calculate_g_l_flag
431169  ,p_actual_flag => l_actual_flag
431170  ,p_balance_type_code => l_balance_type_code
431171  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
431172  
431173  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
431174  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
431175  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
431176  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
431177  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
431178  , p_source_15 => l_array_source_15(Idx)
431179  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
431180  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
431181  , p_source_43 => g_array_event(l_event_id).array_value_num('source_43')
431182  , p_source_44 => g_array_event(l_event_id).array_value_num('source_44')
431183  , p_source_45 => g_array_event(l_event_id).array_value_num('source_45')
431184  , p_source_84 => l_array_source_84(Idx)
431185  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
431186  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
431187  , p_source_88 => l_array_source_88(Idx)
431188  , p_source_91 => l_array_source_91(Idx)
431189  , p_source_92 => l_array_source_92(Idx)
431190  , p_source_93 => l_array_source_93(Idx)
431191  , p_source_94 => l_array_source_94(Idx)
431192  , p_source_95 => l_array_source_95(Idx)
431193  , p_source_97 => l_array_source_97(Idx)
431194  , p_source_108 => l_array_source_108(Idx)
431195  );
431196 If(l_balance_type_code = 'A') THEN
431197   l_actual_gain_loss_ref := l_gain_or_loss_ref;
431198 END IF;
431199 
431200 --
431201 
431202 
431203 --
431204 AcctLineType_312 (
431205  p_application_id  => p_application_id
431206  ,p_event_id     => l_event_id
431207  ,p_calculate_acctd_flag => l_calculate_acctd_flag
431208  ,p_calculate_g_l_flag => l_calculate_g_l_flag
431209  ,p_actual_flag => l_actual_flag
431210  ,p_balance_type_code => l_balance_type_code
431211  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
431212  
431213  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
431214  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
431215  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
431216  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
431217  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
431218  , p_source_11 => l_array_source_11(Idx)
431219  , p_source_84 => l_array_source_84(Idx)
431220  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
431221  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
431222  , p_source_88 => l_array_source_88(Idx)
431223  , p_source_91 => l_array_source_91(Idx)
431224  , p_source_92 => l_array_source_92(Idx)
431225  , p_source_93 => l_array_source_93(Idx)
431226  , p_source_94 => l_array_source_94(Idx)
431227  , p_source_95 => l_array_source_95(Idx)
431228  , p_source_97 => l_array_source_97(Idx)
431229  );
431230 If(l_balance_type_code = 'A') THEN
431231   l_actual_gain_loss_ref := l_gain_or_loss_ref;
431232 END IF;
431233 
431234 --
431235 
431236 
431237 --
431238 AcctLineType_321 (
431239  p_application_id  => p_application_id
431240  ,p_event_id     => l_event_id
431241  ,p_calculate_acctd_flag => l_calculate_acctd_flag
431242  ,p_calculate_g_l_flag => l_calculate_g_l_flag
431243  ,p_actual_flag => l_actual_flag
431244  ,p_balance_type_code => l_balance_type_code
431245  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
431246  
431247  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
431248  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
431249  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
431250  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
431251  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
431252  , p_source_11 => l_array_source_11(Idx)
431253  , p_source_84 => l_array_source_84(Idx)
431254  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
431255  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
431256  , p_source_88 => l_array_source_88(Idx)
431257  , p_source_91 => l_array_source_91(Idx)
431258  , p_source_92 => l_array_source_92(Idx)
431259  , p_source_93 => l_array_source_93(Idx)
431260  , p_source_94 => l_array_source_94(Idx)
431261  , p_source_95 => l_array_source_95(Idx)
431262  , p_source_97 => l_array_source_97(Idx)
431263  );
431264 If(l_balance_type_code = 'A') THEN
431265   l_actual_gain_loss_ref := l_gain_or_loss_ref;
431266 END IF;
431267 
431268 --
431269 
431270 
431271 --
431272 AcctLineType_381 (
431273  p_application_id  => p_application_id
431274  ,p_event_id     => l_event_id
431275  ,p_calculate_acctd_flag => l_calculate_acctd_flag
431276  ,p_calculate_g_l_flag => l_calculate_g_l_flag
431277  ,p_actual_flag => l_actual_flag
431278  ,p_balance_type_code => l_balance_type_code
431279  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
431280  
431281  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
431282  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
431283  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
431284  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
431285  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
431286  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
431287  , p_source_84 => l_array_source_84(Idx)
431288  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
431289  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
431290  , p_source_88 => l_array_source_88(Idx)
431291  , p_source_91 => l_array_source_91(Idx)
431292  , p_source_92 => l_array_source_92(Idx)
431293  , p_source_93 => l_array_source_93(Idx)
431294  , p_source_94 => l_array_source_94(Idx)
431295  , p_source_95 => l_array_source_95(Idx)
431296  , p_source_97 => l_array_source_97(Idx)
431297  , p_source_110 => l_array_source_110(Idx)
431298  , p_source_110_meaning => l_array_source_110_meaning(Idx)
431299  );
431300 If(l_balance_type_code = 'A') THEN
431301   l_actual_gain_loss_ref := l_gain_or_loss_ref;
431302 END IF;
431303 
431304 --
431305 
431306 
431307 --
431308 AcctLineType_462 (
431309  p_application_id  => p_application_id
431310  ,p_event_id     => l_event_id
431311  ,p_calculate_acctd_flag => l_calculate_acctd_flag
431312  ,p_calculate_g_l_flag => l_calculate_g_l_flag
431313  ,p_actual_flag => l_actual_flag
431314  ,p_balance_type_code => l_balance_type_code
431315  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
431316  
431317  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
431318  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
431319  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
431320  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
431321  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
431322  , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
431323  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
431324  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
431325  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
431326  , p_source_56 => g_array_event(l_event_id).array_value_num('source_56')
431327  , p_source_57 => g_array_event(l_event_id).array_value_num('source_57')
431328  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
431329  , p_source_62 => g_array_event(l_event_id).array_value_num('source_62')
431330  , p_source_62_meaning => g_array_event(l_event_id).array_value_char('source_62_meaning')
431331  , p_source_84 => l_array_source_84(Idx)
431332  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
431333  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
431334  , p_source_88 => l_array_source_88(Idx)
431335  , p_source_91 => l_array_source_91(Idx)
431336  , p_source_92 => l_array_source_92(Idx)
431337  , p_source_93 => l_array_source_93(Idx)
431338  , p_source_94 => l_array_source_94(Idx)
431339  , p_source_95 => l_array_source_95(Idx)
431340  , p_source_97 => l_array_source_97(Idx)
431341  , p_source_110 => l_array_source_110(Idx)
431342  , p_source_110_meaning => l_array_source_110_meaning(Idx)
431343  );
431344 If(l_balance_type_code = 'A') THEN
431345   l_actual_gain_loss_ref := l_gain_or_loss_ref;
431346 END IF;
431347 
431348 --
431349 
431350 
431351 --
431352 AcctLineType_530 (
431353  p_application_id  => p_application_id
431354  ,p_event_id     => l_event_id
431355  ,p_calculate_acctd_flag => l_calculate_acctd_flag
431356  ,p_calculate_g_l_flag => l_calculate_g_l_flag
431357  ,p_actual_flag => l_actual_flag
431358  ,p_balance_type_code => l_balance_type_code
431359  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
431360  
431361  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
431362  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
431363  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
431364  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
431365  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
431366  , p_source_15 => l_array_source_15(Idx)
431367  , p_source_55 => g_array_event(l_event_id).array_value_num('source_55')
431368  , p_source_55_meaning => g_array_event(l_event_id).array_value_char('source_55_meaning')
431369  , p_source_63 => g_array_event(l_event_id).array_value_num('source_63')
431370  , p_source_64 => g_array_event(l_event_id).array_value_num('source_64')
431371  , p_source_65 => g_array_event(l_event_id).array_value_num('source_65')
431372  , p_source_66 => g_array_event(l_event_id).array_value_num('source_66')
431373  , p_source_67 => g_array_event(l_event_id).array_value_num('source_67')
431374  , p_source_68 => g_array_event(l_event_id).array_value_num('source_68')
431375  , p_source_69 => g_array_event(l_event_id).array_value_num('source_69')
431376  , p_source_70 => g_array_event(l_event_id).array_value_num('source_70')
431377  , p_source_71 => g_array_event(l_event_id).array_value_num('source_71')
431378  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
431379  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
431380  , p_source_74 => g_array_event(l_event_id).array_value_num('source_74')
431381  , p_source_75 => g_array_event(l_event_id).array_value_num('source_75')
431382  , p_source_76 => g_array_event(l_event_id).array_value_num('source_76')
431383  , p_source_77 => g_array_event(l_event_id).array_value_num('source_77')
431384  , p_source_84 => l_array_source_84(Idx)
431385  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
431386  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
431387  , p_source_88 => l_array_source_88(Idx)
431388  , p_source_91 => l_array_source_91(Idx)
431389  , p_source_92 => l_array_source_92(Idx)
431390  , p_source_93 => l_array_source_93(Idx)
431391  , p_source_94 => l_array_source_94(Idx)
431392  , p_source_95 => l_array_source_95(Idx)
431393  , p_source_97 => l_array_source_97(Idx)
431394  );
431395 If(l_balance_type_code = 'A') THEN
431396   l_actual_gain_loss_ref := l_gain_or_loss_ref;
431397 END IF;
431398 
431399 --
431400 
431401       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
431402       -- or secondary ledger that has different currency with primary
431403       -- or alc that is calculated by sla
431404       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
431405             (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'))
431406 
431407 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
431408 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
431409           AND (l_actual_flag = 'A')) THEN
431410         XLA_AE_LINES_PKG.CreateGainOrLossLines(
431411           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
431412          ,p_application_id   => p_application_id
431413          ,p_amb_context_code => 'DEFAULT'
431414          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
431415          ,p_event_class_code => C_EVENT_CLASS_CODE
431416          ,p_event_type_code  => C_EVENT_TYPE_CODE
431417          
431418          ,p_gain_ccid        => -1
431419          ,p_loss_ccid        => -1
431420 
431421          ,p_actual_flag      => l_actual_flag
431422          ,p_enc_flag         => null
431423          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
431424          ,p_enc_g_l_ref      => null
431425          );
431426       END IF;
431427    END IF;
431428 END IF;
431429 
431430    ELSE
431431       --
431432       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
431433       --
431434       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
431435          trace
431436             (p_msg      => 'Trancaction revesal option is Y'
431437             ,p_level    => C_LEVEL_STATEMENT
431438             ,p_module   => l_log_module);
431439       END IF;
431440    END IF;
431441 
431442 END LOOP;
431443 l_result := XLA_AE_LINES_PKG.InsertLines ;
431444 end loop;
431445 close line_cur;
431446 
431447 
431448 --
431449 -- insert headers into xla_ae_headers_gt table
431450 --
431451 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
431452 
431453 -- insert into errors table here.
431454 
431455 END LOOP;
431456 
431457 --
431458 -- 4865292
431459 --
431460 -- Compare g_hdr_extract_count with event count in
431461 -- CreateHeadersAndLines.
431462 --
431463 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
431464 
431465 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
431466    trace (p_msg     => '# rows extracted from header extract objects '
431467                     || ' (running total): '
431468                     || g_hdr_extract_count
431469          ,p_level   => C_LEVEL_STATEMENT
431470          ,p_module  => l_log_module);
431471 END IF;
431472 
431473 CLOSE header_cur;
431474 --
431475 
431476 --
431477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
431478    trace
431479       (p_msg      => 'END of EventType_624'
431480       ,p_level    => C_LEVEL_PROCEDURE
431481       ,p_module   => l_log_module);
431482 END IF;
431483 --
431484 RETURN l_result;
431485 EXCEPTION
431486 WHEN xla_exceptions_pkg.application_exception THEN
431487    
431488 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
431489 
431490    
431491 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
431492 
431493    RAISE;
431494 
431495 WHEN NO_DATA_FOUND THEN
431496 
431497 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
431498 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
431499 
431500 FOR header_record IN header_cur
431501 LOOP
431502     l_array_header_events(header_record.event_id) := header_record.event_id;
431503 END LOOP;
431504 
431505 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
431506 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
431507 
431508 fnd_file.put_line(fnd_file.LOG, '                    ');
431509 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
431510 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
431511 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
431512 
431513 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
431514 LOOP
431515 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
431516 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
431517         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
431518 	END IF;
431519 END LOOP;
431520 
431521 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
431522 fnd_file.put_line(fnd_file.LOG, '                    ');
431523 
431524 
431525 xla_exceptions_pkg.raise_message
431526       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_624');
431527 
431528 
431529 WHEN OTHERS THEN
431530    xla_exceptions_pkg.raise_message
431531       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_624');
431532 END EventType_624;
431533 --
431534 
431535 ---------------------------------------
431536 --
431537 -- PRIVATE PROCEDURE
431538 --         insert_sources_625
431539 --
431540 ----------------------------------------
431541 --
431542 PROCEDURE insert_sources_625(
431543                                 p_target_ledger_id       IN NUMBER
431544                               , p_language               IN VARCHAR2
431545                               , p_sla_ledger_id          IN NUMBER
431546                               , p_pad_start_date         IN DATE
431547                               , p_pad_end_date           IN DATE
431548                          )
431549 IS
431550 
431551 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_SCRAP';
431552 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_MTL';
431553 p_apps_owner                   VARCHAR2(30);
431554 l_log_module                   VARCHAR2(240);
431555 BEGIN
431556 IF g_log_enabled THEN
431557       l_log_module := C_DEFAULT_MODULE||'.insert_sources_625';
431558 END IF;
431559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
431560 
431561       trace
431562          (p_msg      => 'BEGIN of insert_sources_625'
431563          ,p_level    => C_LEVEL_PROCEDURE
431564          ,p_module   => l_log_module);
431565 
431566 END IF;
431567 
431568 -- select APPS owner
431569 SELECT oracle_username
431570   INTO p_apps_owner
431571   FROM fnd_oracle_userid
431572  WHERE read_only_flag = 'U'
431573 ;
431574 
431575 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
431576       trace
431577          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
431578                         ' - p_language = '||p_language||
431579                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
431580                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
431581                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
431582                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
431583          ,p_level    => C_LEVEL_STATEMENT
431584          ,p_module   => l_log_module);
431585 END IF;
431586 
431587 
431588 --
431589 INSERT INTO xla_diag_sources --hdr1
431590 (
431591         event_id
431592       , ledger_id
431593       , sla_ledger_id
431594       , description_language
431595       , object_name
431596       , object_type_code
431597       , line_number
431598       , source_application_id
431599       , source_type_code
431600       , source_code
431601       , source_value
431602       , source_meaning
431603       , created_by
431604       , creation_date
431605       , last_update_date
431606       , last_updated_by
431607       , last_update_login
431608       , program_update_date
431609       , program_application_id
431610       , program_id
431611       , request_id
431612 )
431613 SELECT
431614         event_id
431615       , p_target_ledger_id
431616       , p_sla_ledger_id
431617       , p_language
431618       , object_name
431619       , object_type_code
431620       , line_number
431621       , source_application_id
431622       , source_type_code
431623       , source_code
431624       , SUBSTR(source_value ,1,1996)
431625       , SUBSTR(source_meaning,1,200)
431626       , xla_environment_pkg.g_Usr_Id
431627       , TRUNC(SYSDATE)
431628       , TRUNC(SYSDATE)
431629       , xla_environment_pkg.g_Usr_Id
431630       , xla_environment_pkg.g_Login_Id
431631       , TRUNC(SYSDATE)
431632       , xla_environment_pkg.g_Prog_Appl_Id
431633       , xla_environment_pkg.g_Prog_Id
431634       , xla_environment_pkg.g_Req_Id
431635   FROM (
431636        SELECT xet.event_id                  event_id
431637             , 0                             line_number
431638             , CASE r
431639                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
431640                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
431641                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
431642                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
431643                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
431644                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
431645                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
431646                 
431647                ELSE null
431648               END                           object_name
431649             , CASE r
431650                 WHEN 1 THEN 'HEADER' 
431651                 WHEN 2 THEN 'HEADER' 
431652                 WHEN 3 THEN 'HEADER' 
431653                 WHEN 4 THEN 'HEADER' 
431654                 WHEN 5 THEN 'HEADER' 
431655                 WHEN 6 THEN 'HEADER' 
431656                 WHEN 7 THEN 'HEADER' 
431657                 
431658                 ELSE null
431659               END                           object_type_code
431660             , CASE r
431661                 WHEN 1 THEN '707' 
431662                 WHEN 2 THEN '707' 
431663                 WHEN 3 THEN '707' 
431664                 WHEN 4 THEN '707' 
431665                 WHEN 5 THEN '707' 
431666                 WHEN 6 THEN '707' 
431667                 WHEN 7 THEN '707' 
431668                 
431669                 ELSE null
431670               END                           source_application_id
431671             , 'S'             source_type_code
431672             , CASE r
431673                 WHEN 1 THEN 'TRANSACTION_ID' 
431674                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
431675                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
431676                 WHEN 4 THEN 'TRANSACTION_UOM' 
431677                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
431678                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
431679                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
431680                 
431681                 ELSE null
431682               END                           source_code
431683             , CASE r
431684                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
431685                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
431686                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
431687                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
431688                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
431689                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
431690                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
431691                 
431692                 ELSE null
431693               END                           source_value
431694             , CASE r
431695                 WHEN 6 THEN fvl85.meaning
431696                 WHEN 7 THEN fvl114.meaning
431697                 
431698                 ELSE null
431699               END               source_meaning
431700         FROM xla_events_gt     xet  
431701       , CST_XLA_INV_HEADERS_V  h1
431702       , CST_XLA_INV_REF_V  h3
431703       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
431704       , CST_XLA_INV_TXN_TYPES_REF_V  h5
431705   , fnd_lookup_values    fvl85
431706   , fnd_lookup_values    fvl114
431707             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
431708        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
431709          AND xet.event_type_code = C_EVENT_TYPE_CODE
431710             AND h1.event_id = xet.event_id
431711  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl85.lookup_type(+)         = 
431712 'CST_DISTRIBUTION_TYPE'
431713   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
431714   AND fvl85.view_application_id(+) = 700
431715   AND fvl85.language(+)            = USERENV('LANG')
431716      AND fvl114.lookup_type(+)         = 'YES_NO'
431717   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
431718   AND fvl114.view_application_id(+) = 0
431719   AND fvl114.language(+)            = USERENV('LANG')
431720   
431721 )
431722 ;
431723 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
431724 
431725       trace
431726          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
431727          ,p_level    => C_LEVEL_STATEMENT
431728          ,p_module   => l_log_module);
431729 
431730 END IF;
431731 --
431732 
431733 
431734 
431735 --
431736 INSERT INTO xla_diag_sources --line1
431737 (
431738         event_id
431739       , ledger_id
431740       , sla_ledger_id
431741       , description_language
431742       , object_name
431743       , object_type_code
431744       , line_number
431745       , source_application_id
431746       , source_type_code
431747       , source_code
431748       , source_value
431749       , source_meaning
431750       , created_by
431751       , creation_date
431752       , last_update_date
431753       , last_updated_by
431754       , last_update_login
431755       , program_update_date
431756       , program_application_id
431757       , program_id
431758       , request_id
431759 )
431760 SELECT  event_id
431761       , p_target_ledger_id
431762       , p_sla_ledger_id
431763       , p_language
431764       , object_name
431765       , object_type_code
431766       , line_number
431767       , source_application_id
431768       , source_type_code
431769       , source_code
431770       , SUBSTR(source_value,1,1996)
431771       , SUBSTR(source_meaning,1,200)
431772       , xla_environment_pkg.g_Usr_Id
431773       , TRUNC(SYSDATE)
431774       , TRUNC(SYSDATE)
431775       , xla_environment_pkg.g_Usr_Id
431776       , xla_environment_pkg.g_Login_Id
431777       , TRUNC(SYSDATE)
431778       , xla_environment_pkg.g_Prog_Appl_Id
431779       , xla_environment_pkg.g_Prog_Id
431780       , xla_environment_pkg.g_Req_Id
431781   FROM (
431782        SELECT xet.event_id                  event_id
431783             , l2.line_number                 line_number
431784             , CASE r
431785                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
431786                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
431787                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
431788                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
431789                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
431790                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
431791                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
431792                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
431793                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
431794                 
431795                ELSE null
431796               END                           object_name
431797             , CASE r
431798                 WHEN 1 THEN 'LINE' 
431799                 WHEN 2 THEN 'LINE' 
431800                 WHEN 3 THEN 'LINE' 
431801                 WHEN 4 THEN 'LINE' 
431802                 WHEN 5 THEN 'LINE' 
431803                 WHEN 6 THEN 'LINE' 
431804                 WHEN 7 THEN 'LINE' 
431805                 WHEN 8 THEN 'LINE' 
431806                 WHEN 9 THEN 'LINE' 
431807                 
431808                 ELSE null
431809               END                           object_type_code
431810             , CASE r
431811                 WHEN 1 THEN '707' 
431812                 WHEN 2 THEN '707' 
431813                 WHEN 3 THEN '707' 
431814                 WHEN 4 THEN '707' 
431815                 WHEN 5 THEN '707' 
431816                 WHEN 6 THEN '707' 
431817                 WHEN 7 THEN '707' 
431818                 WHEN 8 THEN '707' 
431819                 WHEN 9 THEN '707' 
431820                 
431821                 ELSE null
431822               END                           source_application_id
431823             , 'S'             source_type_code
431824             , CASE r
431825                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
431826                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
431827                 WHEN 3 THEN 'CURRENCY_CODE' 
431828                 WHEN 4 THEN 'ENTERED_AMOUNT' 
431829                 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE' 
431830                 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE' 
431831                 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE' 
431832                 WHEN 8 THEN 'ACCOUNTED_AMOUNT' 
431833                 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
431834                 
431835                 ELSE null
431836               END                           source_code
431837             , CASE r
431838                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
431839                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
431840                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
431841                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
431842                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
431843                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
431844                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
431845                 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
431846                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
431847                 
431848                 ELSE null
431849               END                           source_value
431850             , null              source_meaning
431851          FROM  xla_events_gt     xet  
431852         , CST_XLA_INV_LINES_V  l2
431853             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
431854         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
431855           AND xet.event_type_code = C_EVENT_TYPE_CODE
431856             AND l2.event_id          = xet.event_id
431857 
431858 )
431859 ;
431860 --
431861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
431862 
431863       trace
431864          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
431865          ,p_level    => C_LEVEL_STATEMENT
431866          ,p_module   => l_log_module);
431867 
431868 END IF;
431869 
431870 
431871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
431872       trace
431873          (p_msg      => 'END of insert_sources_625'
431874          ,p_level    => C_LEVEL_PROCEDURE
431875          ,p_module   => l_log_module);
431876 END IF;
431877 EXCEPTION
431878   WHEN xla_exceptions_pkg.application_exception THEN
431879       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
431880             trace
431881                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
431882                ,p_level    => C_LEVEL_EXCEPTION
431883                ,p_module   => l_log_module);
431884       END IF;
431885       RAISE;
431886   WHEN OTHERS THEN
431887       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
431888             trace
431889                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
431890                ,p_level    => C_LEVEL_EXCEPTION
431891                ,p_module   => l_log_module);
431892        END IF;
431893        xla_exceptions_pkg.raise_message
431894            (p_location => 'XLA_00707_AAD_S_000020_PKG.insert_sources_625');
431895 END insert_sources_625;
431896 --
431897 
431898 ---------------------------------------
431899 --
431900 -- PRIVATE FUNCTION
431901 --         EventType_625
431902 --
431903 ----------------------------------------
431904 --
431905 FUNCTION EventType_625
431906        (p_application_id         IN NUMBER
431907        ,p_base_ledger_id         IN NUMBER
431908        ,p_target_ledger_id       IN NUMBER
431909        ,p_language               IN VARCHAR2
431910        ,p_currency_code          IN VARCHAR2
431911        ,p_sla_ledger_id          IN NUMBER
431912        ,p_pad_start_date         IN DATE
431913        ,p_pad_end_date           IN DATE
431914        ,p_primary_ledger_id      IN NUMBER)
431915 RETURN BOOLEAN IS
431916 --
431917 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_SCRAP';
431918 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_MTL';
431919 
431920 l_calculate_acctd_flag   VARCHAR2(1) :='N';
431921 l_calculate_g_l_flag     VARCHAR2(1) :='N';
431922 --
431923 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431924 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431925 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
431926 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
431927 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431928 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
431929 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
431930 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431931 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
431932 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
431933 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431934 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431935 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431936 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
431937 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
431938 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
431939 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
431940 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
431941 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
431942 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
431943 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
431944 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
431945 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
431946 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
431947 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
431948 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
431949 
431950 l_event_id                             NUMBER;
431951 l_previous_event_id                    NUMBER;
431952 l_first_event_id                       NUMBER;
431953 l_last_event_id                        NUMBER;
431954 
431955 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
431956 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
431957 --
431958 --
431959 l_result                    BOOLEAN := TRUE;
431960 l_rows                      NUMBER  := 1000;
431961 l_event_type_name           VARCHAR2(80) := 'WIP Assembly Scrap';
431962 l_event_class_name          VARCHAR2(80) := 'WIP Material';
431963 l_description               VARCHAR2(4000);
431964 l_transaction_reversal      NUMBER;
431965 l_ae_header_id              NUMBER;
431966 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
431967 l_log_module                VARCHAR2(240);
431968 --
431969 l_acct_reversal_source      VARCHAR2(30);
431970 l_trx_reversal_source       VARCHAR2(30);
431971 
431972 l_continue_with_lines       BOOLEAN := TRUE;
431973 --
431974 l_acc_rev_gl_date_source    DATE;                      -- 4262811
431975 --
431976 type t_array_event_id is table of number index by binary_integer;
431977 
431978 l_rec_array_event                    t_rec_array_event;
431979 l_null_rec_array_event               t_rec_array_event;
431980 l_array_ae_header_id                 xla_number_array_type;
431981 l_actual_flag                        VARCHAR2(1) := NULL;
431982 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
431983 l_balance_type_code                  VARCHAR2(1) :=NULL;
431984 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
431985 
431986 --
431987 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
431988 --
431989 
431990 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
431991 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
431992 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
431993 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
431994 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
431995 TYPE t_array_source_85 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
431996 TYPE t_array_source_114 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
431997 
431998 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
431999 TYPE t_array_source_84 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
432000 TYPE t_array_source_88 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
432001 TYPE t_array_source_91 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
432002 TYPE t_array_source_92 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
432003 TYPE t_array_source_93 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
432004 TYPE t_array_source_94 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
432005 TYPE t_array_source_95 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
432006 TYPE t_array_source_97 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
432007 
432008 l_array_source_1              t_array_source_1;
432009 l_array_source_2              t_array_source_2;
432010 l_array_source_3              t_array_source_3;
432011 l_array_source_4              t_array_source_4;
432012 l_array_source_5              t_array_source_5;
432013 l_array_source_85              t_array_source_85;
432014 l_array_source_85_meaning      t_array_lookup_meaning;
432015 l_array_source_114              t_array_source_114;
432016 l_array_source_114_meaning      t_array_lookup_meaning;
432017 
432018 l_array_source_11      t_array_source_11;
432019 l_array_source_84      t_array_source_84;
432020 l_array_source_88      t_array_source_88;
432021 l_array_source_91      t_array_source_91;
432022 l_array_source_92      t_array_source_92;
432023 l_array_source_93      t_array_source_93;
432024 l_array_source_94      t_array_source_94;
432025 l_array_source_95      t_array_source_95;
432026 l_array_source_97      t_array_source_97;
432027 
432028 --
432029 CURSOR header_cur
432030 IS
432031 SELECT /*+ leading(xet) cardinality(xet,1) */
432032 -- Event Type Code: WIP_SCRAP
432033 -- Event Class Code: WIP_MTL
432034     xet.entity_id
432035   , xet.legal_entity_id
432036   , xet.entity_code
432037   , xet.transaction_number
432038   , xet.event_id
432039   , xet.event_class_code
432040   , xet.event_type_code
432041   , xet.event_number
432042   , xet.event_date
432043   , xet.transaction_date
432044   , xet.reference_num_1
432045   , xet.reference_num_2
432046   , xet.reference_num_3
432047   , xet.reference_num_4
432048   , xet.reference_char_1
432049   , xet.reference_char_2
432050   , xet.reference_char_3
432051   , xet.reference_char_4
432052   , xet.reference_date_1
432053   , xet.reference_date_2
432054   , xet.reference_date_3
432055   , xet.reference_date_4
432056   , xet.event_created_by
432057   , xet.budgetary_control_flag 
432058   , h1.TRANSACTION_ID    source_1
432059   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
432060   , h3.TRANSACTION_QUANTITY    source_3
432061   , h3.TRANSACTION_UOM    source_4
432062   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
432063   , h1.DISTRIBUTION_TYPE    source_85
432064   , fvl85.meaning   source_85_meaning
432065   , h1.TRANSFER_TO_GL_INDICATOR    source_114
432066   , fvl114.meaning   source_114_meaning
432067   FROM xla_events_gt     xet 
432068   , CST_XLA_INV_HEADERS_V  h1
432069   , CST_XLA_INV_REF_V  h3
432070   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
432071   , CST_XLA_INV_TXN_TYPES_REF_V  h5
432072   , fnd_lookup_values    fvl85
432073   , fnd_lookup_values    fvl114
432074  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
432075    and xet.event_type_code = C_EVENT_TYPE_CODE
432076    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
432077  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl85.lookup_type(+)         = 
432078 'CST_DISTRIBUTION_TYPE'
432079   AND fvl85.lookup_code(+)         = h1.DISTRIBUTION_TYPE
432080   AND fvl85.view_application_id(+) = 700
432081   AND fvl85.language(+)            = USERENV('LANG')
432082      AND fvl114.lookup_type(+)         = 'YES_NO'
432083   AND fvl114.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
432084   AND fvl114.view_application_id(+) = 0
432085   AND fvl114.language(+)            = USERENV('LANG')
432086   
432087  ORDER BY event_id
432088 ;
432089 
432090 
432091 --
432092 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
432093 IS
432094 SELECT /*+ leading(xet) cardinality(xet,1) */
432095 -- Event Type Code: WIP_SCRAP
432096 -- Event Class Code: WIP_MTL
432097     xet.entity_id
432098    ,xet.legal_entity_id
432099    ,xet.entity_code
432100    ,xet.transaction_number
432101    ,xet.event_id
432102    ,xet.event_class_code
432103    ,xet.event_type_code
432104    ,xet.event_number
432105    ,xet.event_date
432106    ,xet.transaction_date
432107    ,xet.reference_num_1
432108    ,xet.reference_num_2
432109    ,xet.reference_num_3
432110    ,xet.reference_num_4
432111    ,xet.reference_char_1
432112    ,xet.reference_char_2
432113    ,xet.reference_char_3
432114    ,xet.reference_char_4
432115    ,xet.reference_date_1
432116    ,xet.reference_date_2
432117    ,xet.reference_date_3
432118    ,xet.reference_date_4
432119    ,xet.event_created_by
432120    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
432121   , l2.CODE_COMBINATION_ID    source_11
432122   , l2.DISTRIBUTION_IDENTIFIER    source_84
432123   , l2.CURRENCY_CODE    source_88
432124   , l2.ENTERED_AMOUNT    source_91
432125   , l2.CURRENCY_CONVERSION_DATE    source_92
432126   , l2.CURRENCY_CONVERSION_RATE    source_93
432127   , l2.CURRENCY_CONVERSION_TYPE    source_94
432128   , l2.ACCOUNTED_AMOUNT    source_95
432129   , l2.ACCOUNTING_LINE_TYPE_CODE    source_97
432130   FROM xla_events_gt     xet 
432131   , CST_XLA_INV_LINES_V  l2
432132  WHERE xet.event_id between x_first_event_id and x_last_event_id
432133    and xet.event_date between p_pad_start_date and p_pad_end_date
432134    and xet.event_type_code = C_EVENT_TYPE_CODE
432135    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
432136 ;
432137 
432138 --
432139 BEGIN
432140 IF g_log_enabled THEN
432141    l_log_module := C_DEFAULT_MODULE||'.EventType_625';
432142 END IF;
432143 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
432144    trace
432145       (p_msg      => 'BEGIN of EventType_625'
432146       ,p_level    => C_LEVEL_PROCEDURE
432147       ,p_module   => l_log_module);
432148 END IF;
432149 
432150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432151    trace
432152       (p_msg      => 'p_application_id = '||p_application_id||
432153                      ' - p_base_ledger_id = '||p_base_ledger_id||
432154                      ' - p_target_ledger_id  = '||p_target_ledger_id||
432155                      ' - p_language = '||p_language||
432156                      ' - p_currency_code = '||p_currency_code||
432157                      ' - p_sla_ledger_id = '||p_sla_ledger_id
432158       ,p_level    => C_LEVEL_STATEMENT
432159       ,p_module   => l_log_module);
432160 END IF;
432161 --
432162 -- initialze arrays
432163 --
432164 g_array_event.DELETE;
432165 l_rec_array_event := l_null_rec_array_event;
432166 --
432167 --------------------------------------
432168 -- 4262811 Initialze MPA Line Number
432169 --------------------------------------
432170 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
432171 
432172 --
432173 
432174 --
432175 OPEN header_cur;
432176 --
432177 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432178    trace
432179    (p_msg      => 'SQL - FETCH header_cur'
432180    ,p_level    => C_LEVEL_STATEMENT
432181    ,p_module   => l_log_module);
432182 END IF;
432183 --
432184 LOOP
432185 FETCH header_cur BULK COLLECT INTO
432186         l_array_entity_id
432187       , l_array_legal_entity_id
432188       , l_array_entity_code
432189       , l_array_transaction_num
432190       , l_array_event_id
432191       , l_array_class_code
432192       , l_array_event_type
432193       , l_array_event_number
432194       , l_array_event_date
432195       , l_array_transaction_date
432196       , l_array_reference_num_1
432197       , l_array_reference_num_2
432198       , l_array_reference_num_3
432199       , l_array_reference_num_4
432200       , l_array_reference_char_1
432201       , l_array_reference_char_2
432202       , l_array_reference_char_3
432203       , l_array_reference_char_4
432204       , l_array_reference_date_1
432205       , l_array_reference_date_2
432206       , l_array_reference_date_3
432207       , l_array_reference_date_4
432208       , l_array_event_created_by
432209       , l_array_budgetary_control_flag 
432210       , l_array_source_1
432211       , l_array_source_2
432212       , l_array_source_3
432213       , l_array_source_4
432214       , l_array_source_5
432215       , l_array_source_85
432216       , l_array_source_85_meaning
432217       , l_array_source_114
432218       , l_array_source_114_meaning
432219       LIMIT l_rows;
432220 --
432221 IF (C_LEVEL_EVENT >= g_log_level) THEN
432222    trace
432223    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
432224    ,p_level    => C_LEVEL_EVENT
432225    ,p_module   => l_log_module);
432226 END IF;
432227 --
432228 EXIT WHEN l_array_entity_id.COUNT = 0;
432229 
432230 -- initialize arrays
432231 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
432232 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
432233 
432234 --
432235 -- Bug 4458708
432236 --
432237 XLA_AE_LINES_PKG.g_LineNumber := 0;
432238 
432239 
432240 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
432241 g_last_hdr_idx := l_array_event_id.LAST;
432242 --
432243 -- loop for the headers. Each iteration is for each header extract row
432244 -- fetched in header cursor
432245 --
432246 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
432247 
432248 --
432249 -- set event info as cache for other routines to refer event attributes
432250 --
432251 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
432252    (p_application_id           => p_application_id
432253    ,p_primary_ledger_id        => p_primary_ledger_id
432254    ,p_base_ledger_id           => p_base_ledger_id
432255    ,p_target_ledger_id         => p_target_ledger_id
432256    ,p_entity_id                => l_array_entity_id(hdr_idx)
432257    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
432258    ,p_entity_code              => l_array_entity_code(hdr_idx)
432259    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
432260    ,p_event_id                 => l_array_event_id(hdr_idx)
432261    ,p_event_class_code         => l_array_class_code(hdr_idx)
432262    ,p_event_type_code          => l_array_event_type(hdr_idx)
432263    ,p_event_number             => l_array_event_number(hdr_idx)
432264    ,p_event_date               => l_array_event_date(hdr_idx)
432265    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
432266    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
432267    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
432268    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
432269    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
432270    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
432271    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
432272    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
432273    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
432274    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
432275    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
432276    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
432277    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
432278    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
432279    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
432280 
432281 --
432282 -- set the status of entry to C_VALID (0)
432283 --
432284 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
432285 
432286 --
432287 -- initialize a row for ae header
432288 --
432289 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
432290 
432291 l_event_id := l_array_event_id(hdr_idx);
432292 
432293 --
432294 -- storing the hdr_idx for event. May be used by line cursor.
432295 --
432296 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
432297 
432298 --
432299 -- store sources from header extract. This can be improved to
432300 -- store only those sources from header extract that may be used in lines
432301 --
432302 
432303 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
432304 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
432305 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
432306 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
432307 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
432308 g_array_event(l_event_id).array_value_char('source_85') := l_array_source_85(hdr_idx);
432309 g_array_event(l_event_id).array_value_char('source_85_meaning') := l_array_source_85_meaning(hdr_idx);
432310 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
432311 g_array_event(l_event_id).array_value_char('source_114_meaning') := l_array_source_114_meaning(hdr_idx);
432312 
432313 --
432314 -- initilaize the status of ae headers for diffrent balance types
432315 -- the status is initialised to C_NOT_CREATED (2)
432316 --
432317 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
432318 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
432319 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
432320 
432321 --
432322 -- call api to validate and store accounting attributes for header
432323 --
432324 
432325 ------------------------------------------------------------
432326 -- Accrual Reversal : to get date for Standard Source (NONE)
432327 ------------------------------------------------------------
432328 l_acc_rev_gl_date_source := NULL;
432329 
432330      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
432331       l_rec_acct_attrs.array_date_value(1) := 
432332 xla_ae_sources_pkg.GetSystemSourceDate(
432333    p_source_code           => 'XLA_REFERENCE_DATE_1'
432334  , p_source_type_code      => 'Y'
432335  , p_source_application_id =>  602
432336 );
432337      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
432338       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_114');
432339 
432340 
432341 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
432342 
432343 XLA_AE_HEADER_PKG.SetJeCategoryName;
432344 
432345 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
432346 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
432347 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
432348 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
432349 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
432350 
432351 
432352 --
432353 xla_ae_header_pkg.SetHdrDescription(
432354    p_description => Description_1 (
432355    p_application_id => p_application_id 
432356  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
432357  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
432358  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
432359  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
432360  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
432361    )
432362 );
432363 --
432364 
432365 -- No header level analytical criteria
432366 
432367 --
432368 --accounting attribute enhancement, bug 3612931
432369 --
432370 l_trx_reversal_source := SUBSTR(NULL, 1,30);
432371 
432372 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
432373    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
432374 
432375    xla_accounting_err_pkg.build_message
432376       (p_appli_s_name            => 'XLA'
432377       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
432378       ,p_token_1                 => 'ACCT_ATTR_NAME'
432379       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
432380       ,p_token_2                 => 'PRODUCT_NAME'
432381       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
432382       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
432383       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
432384       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
432385 
432386 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
432387    --
432388    -- following sets the accounting attributes needed to reverse
432389    -- accounting for a distributeion
432390    --
432391    xla_ae_lines_pkg.SetTrxReversalAttrs
432392       (p_event_id              => l_event_id
432393       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
432394       ,p_trx_reversal_source   => l_trx_reversal_source);
432395 
432396 END IF;
432397 
432398 
432399 ----------------------------------------------------------------
432400 -- 4262811 -  update the header statuses to invalid in need be
432401 ----------------------------------------------------------------
432402 --
432403 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
432404 
432405 
432406   -----------------------------------------------
432407   -- No accrual reversal for the event class/type
432408   -----------------------------------------------
432409 ----------------------------------------------------------------
432410 
432411 --
432412 -- this ends the header loop iteration for one bulk fetch
432413 --
432414 END LOOP;
432415 
432416 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
432417 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
432418 
432419 --
432420 -- insert dummy rows into lines gt table that were created due to
432421 -- transaction reversals
432422 --
432423 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
432424    l_result := XLA_AE_LINES_PKG.InsertLines;
432425 END IF;
432426 
432427 --
432428 -- reset the temp_line_num for each set of events fetched from header
432429 -- cursor rather than doing it for each new event in line cursor
432430 -- Bug 3939231
432431 --
432432 xla_ae_lines_pkg.g_temp_line_num := 0;
432433 
432434 
432435 
432436 --
432437 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
432438 --
432439 --
432440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432441 
432442       trace
432443          (p_msg      => 'SQL - FETCH line_cur'
432444          ,p_level    => C_LEVEL_STATEMENT
432445          ,p_module   => l_log_module);
432446 
432447 END IF;
432448 --
432449 --
432450 LOOP
432451   --
432452   FETCH line_cur BULK COLLECT INTO
432453         l_array_entity_id
432454       , l_array_legal_entity_id
432455       , l_array_entity_code
432456       , l_array_transaction_num
432457       , l_array_event_id
432458       , l_array_class_code
432459       , l_array_event_type
432460       , l_array_event_number
432461       , l_array_event_date
432462       , l_array_transaction_date
432463       , l_array_reference_num_1
432464       , l_array_reference_num_2
432465       , l_array_reference_num_3
432466       , l_array_reference_num_4
432467       , l_array_reference_char_1
432468       , l_array_reference_char_2
432469       , l_array_reference_char_3
432470       , l_array_reference_char_4
432471       , l_array_reference_date_1
432472       , l_array_reference_date_2
432473       , l_array_reference_date_3
432474       , l_array_reference_date_4
432475       , l_array_event_created_by
432476       , l_array_budgetary_control_flag
432477       , l_array_extract_line_num 
432478       , l_array_source_11
432479       , l_array_source_84
432480       , l_array_source_88
432481       , l_array_source_91
432482       , l_array_source_92
432483       , l_array_source_93
432484       , l_array_source_94
432485       , l_array_source_95
432486       , l_array_source_97
432487       LIMIT l_rows;
432488 
432489   --
432490   IF (C_LEVEL_EVENT >= g_log_level) THEN
432491             trace
432492                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
432493                ,p_level    => C_LEVEL_EVENT
432494                ,p_module   => l_log_module);
432495   END IF;
432496   --
432497   EXIT WHEN l_array_entity_id.count = 0;
432498 
432499   XLA_AE_LINES_PKG.g_rec_lines := null;
432500 
432501 --
432502 -- Bug 4458708
432503 --
432504 XLA_AE_LINES_PKG.g_LineNumber := 0;
432505 --
432506 --
432507 
432508 FOR Idx IN 1..l_array_event_id.count LOOP
432509    --
432510    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
432511    --
432512    l_event_id := l_array_event_id(idx);  -- 5648433
432513 
432514    --
432515    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
432516    --
432517 
432518    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
432519              (g_array_event(l_event_id).array_value_num('header_index'))
432520          ,'N'
432521          ) <> 'Y'
432522    THEN
432523       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432524          trace
432525             (p_msg      => 'Trancaction revesal option is not Y '
432526             ,p_level    => C_LEVEL_STATEMENT
432527             ,p_module   => l_log_module);
432528       END IF;
432529 
432530 --
432531 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
432532 --
432533 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
432534 --
432535 -- set event info as cache for other routines to refer event attributes
432536 --
432537 
432538 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
432539    l_previous_event_id := l_event_id;
432540 
432541    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
432542       (p_application_id           => p_application_id
432543       ,p_primary_ledger_id        => p_primary_ledger_id
432544       ,p_base_ledger_id           => p_base_ledger_id
432545       ,p_target_ledger_id         => p_target_ledger_id
432546       ,p_entity_id                => l_array_entity_id(Idx)
432547       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
432548       ,p_entity_code              => l_array_entity_code(Idx)
432549       ,p_transaction_num          => l_array_transaction_num(Idx)
432550       ,p_event_id                 => l_array_event_id(Idx)
432551       ,p_event_class_code         => l_array_class_code(Idx)
432552       ,p_event_type_code          => l_array_event_type(Idx)
432553       ,p_event_number             => l_array_event_number(Idx)
432554       ,p_event_date               => l_array_event_date(Idx)
432555       ,p_transaction_date         => l_array_transaction_date(Idx)
432556       ,p_reference_num_1          => l_array_reference_num_1(Idx)
432557       ,p_reference_num_2          => l_array_reference_num_2(Idx)
432558       ,p_reference_num_3          => l_array_reference_num_3(Idx)
432559       ,p_reference_num_4          => l_array_reference_num_4(Idx)
432560       ,p_reference_char_1         => l_array_reference_char_1(Idx)
432561       ,p_reference_char_2         => l_array_reference_char_2(Idx)
432562       ,p_reference_char_3         => l_array_reference_char_3(Idx)
432563       ,p_reference_char_4         => l_array_reference_char_4(Idx)
432564       ,p_reference_date_1         => l_array_reference_date_1(Idx)
432565       ,p_reference_date_2         => l_array_reference_date_2(Idx)
432566       ,p_reference_date_3         => l_array_reference_date_3(Idx)
432567       ,p_reference_date_4         => l_array_reference_date_4(Idx)
432568       ,p_event_created_by         => l_array_event_created_by(Idx)
432569       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
432570        --
432571 END IF;
432572 
432573 
432574 
432575 --
432576 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
432577 
432578 l_acct_reversal_source := SUBSTR(NULL, 1,30);
432579 
432580 IF l_continue_with_lines THEN
432581    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
432582       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
432583 
432584       xla_accounting_err_pkg.build_message
432585          (p_appli_s_name            => 'XLA'
432586          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
432587          ,p_token_1                 => 'LINE_NUMBER'
432588          ,p_value_1                 => l_array_extract_line_num(Idx)
432589          ,p_token_2                 => 'PRODUCT_NAME'
432590          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
432591          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
432592          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
432593          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
432594 
432595    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
432596       --
432597       -- following sets the accounting attributes needed to reverse
432598       -- accounting for a distributeion
432599       --
432600 
432601       --
432602       -- 5217187
432603       --
432604       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
432605       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
432606                                        g_array_event(l_event_id).array_value_num('header_index'));
432607       --
432608       --
432609 
432610       -- No reversal code generated
432611 
432612       xla_ae_lines_pkg.SetAcctReversalAttrs
432613          (p_event_id             => l_event_id
432614          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
432615          ,p_calculate_acctd_flag => l_calculate_acctd_flag
432616          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
432617    END IF;
432618 
432619    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
432620        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
432621 
432622 --
432623 AcctLineType_335 (
432624  p_application_id  => p_application_id
432625  ,p_event_id     => l_event_id
432626  ,p_calculate_acctd_flag => l_calculate_acctd_flag
432627  ,p_calculate_g_l_flag => l_calculate_g_l_flag
432628  ,p_actual_flag => l_actual_flag
432629  ,p_balance_type_code => l_balance_type_code
432630  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
432631  
432632  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
432633  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
432634  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
432635  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
432636  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
432637  , p_source_11 => l_array_source_11(Idx)
432638  , p_source_84 => l_array_source_84(Idx)
432639  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
432640  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
432641  , p_source_88 => l_array_source_88(Idx)
432642  , p_source_91 => l_array_source_91(Idx)
432643  , p_source_92 => l_array_source_92(Idx)
432644  , p_source_93 => l_array_source_93(Idx)
432645  , p_source_94 => l_array_source_94(Idx)
432646  , p_source_95 => l_array_source_95(Idx)
432647  , p_source_97 => l_array_source_97(Idx)
432648  );
432649 If(l_balance_type_code = 'A') THEN
432650   l_actual_gain_loss_ref := l_gain_or_loss_ref;
432651 END IF;
432652 
432653 --
432654 
432655 
432656 --
432657 AcctLineType_540 (
432658  p_application_id  => p_application_id
432659  ,p_event_id     => l_event_id
432660  ,p_calculate_acctd_flag => l_calculate_acctd_flag
432661  ,p_calculate_g_l_flag => l_calculate_g_l_flag
432662  ,p_actual_flag => l_actual_flag
432663  ,p_balance_type_code => l_balance_type_code
432664  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
432665  
432666  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
432667  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
432668  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
432669  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
432670  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
432671  , p_source_11 => l_array_source_11(Idx)
432672  , p_source_84 => l_array_source_84(Idx)
432673  , p_source_85 => g_array_event(l_event_id).array_value_char('source_85')
432674  , p_source_85_meaning => g_array_event(l_event_id).array_value_char('source_85_meaning')
432675  , p_source_88 => l_array_source_88(Idx)
432676  , p_source_91 => l_array_source_91(Idx)
432677  , p_source_92 => l_array_source_92(Idx)
432678  , p_source_93 => l_array_source_93(Idx)
432679  , p_source_94 => l_array_source_94(Idx)
432680  , p_source_95 => l_array_source_95(Idx)
432681  , p_source_97 => l_array_source_97(Idx)
432682  );
432683 If(l_balance_type_code = 'A') THEN
432684   l_actual_gain_loss_ref := l_gain_or_loss_ref;
432685 END IF;
432686 
432687 --
432688 
432689       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
432690       -- or secondary ledger that has different currency with primary
432691       -- or alc that is calculated by sla
432692       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
432693             (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'))
432694 
432695 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
432696 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
432697           AND (l_actual_flag = 'A')) THEN
432698         XLA_AE_LINES_PKG.CreateGainOrLossLines(
432699           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
432700          ,p_application_id   => p_application_id
432701          ,p_amb_context_code => 'DEFAULT'
432702          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
432703          ,p_event_class_code => C_EVENT_CLASS_CODE
432704          ,p_event_type_code  => C_EVENT_TYPE_CODE
432705          
432706          ,p_gain_ccid        => -1
432707          ,p_loss_ccid        => -1
432708 
432709          ,p_actual_flag      => l_actual_flag
432710          ,p_enc_flag         => null
432711          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
432712          ,p_enc_g_l_ref      => null
432713          );
432714       END IF;
432715    END IF;
432716 END IF;
432717 
432718    ELSE
432719       --
432720       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
432721       --
432722       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432723          trace
432724             (p_msg      => 'Trancaction revesal option is Y'
432725             ,p_level    => C_LEVEL_STATEMENT
432726             ,p_module   => l_log_module);
432727       END IF;
432728    END IF;
432729 
432730 END LOOP;
432731 l_result := XLA_AE_LINES_PKG.InsertLines ;
432732 end loop;
432733 close line_cur;
432734 
432735 
432736 --
432737 -- insert headers into xla_ae_headers_gt table
432738 --
432739 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
432740 
432741 -- insert into errors table here.
432742 
432743 END LOOP;
432744 
432745 --
432746 -- 4865292
432747 --
432748 -- Compare g_hdr_extract_count with event count in
432749 -- CreateHeadersAndLines.
432750 --
432751 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
432752 
432753 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432754    trace (p_msg     => '# rows extracted from header extract objects '
432755                     || ' (running total): '
432756                     || g_hdr_extract_count
432757          ,p_level   => C_LEVEL_STATEMENT
432758          ,p_module  => l_log_module);
432759 END IF;
432760 
432761 CLOSE header_cur;
432762 --
432763 
432764 --
432765 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
432766    trace
432767       (p_msg      => 'END of EventType_625'
432768       ,p_level    => C_LEVEL_PROCEDURE
432769       ,p_module   => l_log_module);
432770 END IF;
432771 --
432772 RETURN l_result;
432773 EXCEPTION
432774 WHEN xla_exceptions_pkg.application_exception THEN
432775    
432776 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
432777 
432778    
432779 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
432780 
432781    RAISE;
432782 
432783 WHEN NO_DATA_FOUND THEN
432784 
432785 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
432786 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
432787 
432788 FOR header_record IN header_cur
432789 LOOP
432790     l_array_header_events(header_record.event_id) := header_record.event_id;
432791 END LOOP;
432792 
432793 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
432794 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
432795 
432796 fnd_file.put_line(fnd_file.LOG, '                    ');
432797 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
432798 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
432799 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
432800 
432801 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
432802 LOOP
432803 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
432804 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
432805         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
432806 	END IF;
432807 END LOOP;
432808 
432809 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
432810 fnd_file.put_line(fnd_file.LOG, '                    ');
432811 
432812 
432813 xla_exceptions_pkg.raise_message
432814       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_625');
432815 
432816 
432817 WHEN OTHERS THEN
432818    xla_exceptions_pkg.raise_message
432819       (p_location => 'XLA_00707_AAD_S_000020_PKG.EventType_625');
432820 END EventType_625;
432821 --
432822 
432823 --
432824 --+============================================+
432825 --|                                            |
432826 --|  PRIVATE FUNCTION                          |
432827 --|                                            |
432828 --+============================================+
432829 --
432830 FUNCTION CreateHeadersAndLines
432831        (p_application_id         IN NUMBER
432832        ,p_base_ledger_id         IN NUMBER
432833        ,p_target_ledger_id       IN NUMBER
432834        ,p_pad_start_date         IN DATE
432835        ,p_pad_end_date           IN DATE
432836        ,p_primary_ledger_id      IN NUMBER)
432837 RETURN BOOLEAN IS
432838 l_created                   BOOLEAN:=FALSE;
432839 l_event_id                  NUMBER;
432840 l_event_date                DATE;
432841 l_language                  VARCHAR2(30);
432842 l_currency_code             VARCHAR2(30);
432843 l_sla_ledger_id             NUMBER;
432844 l_log_module                VARCHAR2(240);
432845 
432846 BEGIN
432847 --
432848 IF g_log_enabled THEN
432849    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
432850 END IF;
432851 --
432852 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
432853    trace
432854       (p_msg      => 'BEGIN of CreateHeadersAndLines'
432855       ,p_level    => C_LEVEL_PROCEDURE
432856       ,p_module   => l_log_module);
432857 END IF;
432858 
432859 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
432860 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
432861 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
432862 
432863 --
432864 -- initialize array of lines with NULL
432865 --
432866 xla_ae_lines_pkg.SetNullLine;
432867 
432868 --
432869 -- initialize header extract count -- Bug 4865292
432870 --
432871 g_hdr_extract_count:= 0;
432872 
432873 
432874 l_created := EventClass_544(
432875    p_application_id         => p_application_id
432876  , p_base_ledger_id         => p_base_ledger_id
432877  , p_target_ledger_id       => p_target_ledger_id
432878  , p_language               => l_language
432879  , p_currency_code          => l_currency_code
432880  , p_sla_ledger_id          => l_sla_ledger_id
432881  , p_pad_start_date         => p_pad_start_date
432882  , p_pad_end_date           => p_pad_end_date
432883  , p_primary_ledger_id      => p_primary_ledger_id
432884 );
432885 
432886 
432887 
432888      IF ( g_diagnostics_mode ='Y' ) THEN
432889 
432890          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432891           trace
432892               (p_msg      => 'CALL Transaction Objects Diagnostics'
432893               ,p_level    => C_LEVEL_STATEMENT
432894               ,p_module   => l_log_module);
432895 
432896          END IF;
432897 
432898          insert_sources_544(
432899                           p_target_ledger_id => p_target_ledger_id
432900                         , p_language         => l_language
432901                         , p_sla_ledger_id    => l_sla_ledger_id
432902                         , p_pad_start_date   => p_pad_start_date
432903                         , p_pad_end_date     => p_pad_end_date
432904                           );
432905 
432906      END IF;
432907 
432908 l_created := EventClass_545(
432909    p_application_id         => p_application_id
432910  , p_base_ledger_id         => p_base_ledger_id
432911  , p_target_ledger_id       => p_target_ledger_id
432912  , p_language               => l_language
432913  , p_currency_code          => l_currency_code
432914  , p_sla_ledger_id          => l_sla_ledger_id
432915  , p_pad_start_date         => p_pad_start_date
432916  , p_pad_end_date           => p_pad_end_date
432917  , p_primary_ledger_id      => p_primary_ledger_id
432918 );
432919 
432920 
432921 
432922      IF ( g_diagnostics_mode ='Y' ) THEN
432923 
432924          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432925           trace
432926               (p_msg      => 'CALL Transaction Objects Diagnostics'
432927               ,p_level    => C_LEVEL_STATEMENT
432928               ,p_module   => l_log_module);
432929 
432930          END IF;
432931 
432932          insert_sources_545(
432933                           p_target_ledger_id => p_target_ledger_id
432934                         , p_language         => l_language
432935                         , p_sla_ledger_id    => l_sla_ledger_id
432936                         , p_pad_start_date   => p_pad_start_date
432937                         , p_pad_end_date     => p_pad_end_date
432938                           );
432939 
432940      END IF;
432941 
432942  l_created :=  EventType_546(
432943    p_application_id         => p_application_id
432944  , p_base_ledger_id         => p_base_ledger_id
432945  , p_target_ledger_id       => p_target_ledger_id
432946  , p_language               => l_language
432947  , p_currency_code          => l_currency_code
432948  , p_sla_ledger_id          => l_sla_ledger_id
432949  , p_pad_start_date         => p_pad_start_date
432950  , p_pad_end_date           => p_pad_end_date
432951  , p_primary_ledger_id      => p_primary_ledger_id
432952 );
432953 
432954 
432955 
432956      IF ( g_diagnostics_mode ='Y' ) THEN
432957 
432958          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432959           trace
432960               (p_msg      => 'CALL Transaction Objects Diagnostics'
432961               ,p_level    => C_LEVEL_STATEMENT
432962               ,p_module   => l_log_module);
432963 
432964          END IF;
432965 
432966          insert_sources_546(
432967                           p_target_ledger_id => p_target_ledger_id
432968                         , p_language         => l_language
432969                         , p_sla_ledger_id    => l_sla_ledger_id
432970                         , p_pad_start_date   => p_pad_start_date
432971                         , p_pad_end_date     => p_pad_end_date
432972                           );
432973 
432974      END IF;
432975 
432976  l_created :=  EventType_547(
432977    p_application_id         => p_application_id
432978  , p_base_ledger_id         => p_base_ledger_id
432979  , p_target_ledger_id       => p_target_ledger_id
432980  , p_language               => l_language
432981  , p_currency_code          => l_currency_code
432982  , p_sla_ledger_id          => l_sla_ledger_id
432983  , p_pad_start_date         => p_pad_start_date
432984  , p_pad_end_date           => p_pad_end_date
432985  , p_primary_ledger_id      => p_primary_ledger_id
432986 );
432987 
432988 
432989 
432990      IF ( g_diagnostics_mode ='Y' ) THEN
432991 
432992          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
432993           trace
432994               (p_msg      => 'CALL Transaction Objects Diagnostics'
432995               ,p_level    => C_LEVEL_STATEMENT
432996               ,p_module   => l_log_module);
432997 
432998          END IF;
432999 
433000          insert_sources_547(
433001                           p_target_ledger_id => p_target_ledger_id
433002                         , p_language         => l_language
433003                         , p_sla_ledger_id    => l_sla_ledger_id
433004                         , p_pad_start_date   => p_pad_start_date
433005                         , p_pad_end_date     => p_pad_end_date
433006                           );
433007 
433008      END IF;
433009 
433010  l_created :=  EventType_548(
433011    p_application_id         => p_application_id
433012  , p_base_ledger_id         => p_base_ledger_id
433013  , p_target_ledger_id       => p_target_ledger_id
433014  , p_language               => l_language
433015  , p_currency_code          => l_currency_code
433016  , p_sla_ledger_id          => l_sla_ledger_id
433017  , p_pad_start_date         => p_pad_start_date
433018  , p_pad_end_date           => p_pad_end_date
433019  , p_primary_ledger_id      => p_primary_ledger_id
433020 );
433021 
433022 
433023 
433024      IF ( g_diagnostics_mode ='Y' ) THEN
433025 
433026          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433027           trace
433028               (p_msg      => 'CALL Transaction Objects Diagnostics'
433029               ,p_level    => C_LEVEL_STATEMENT
433030               ,p_module   => l_log_module);
433031 
433032          END IF;
433033 
433034          insert_sources_548(
433035                           p_target_ledger_id => p_target_ledger_id
433036                         , p_language         => l_language
433037                         , p_sla_ledger_id    => l_sla_ledger_id
433038                         , p_pad_start_date   => p_pad_start_date
433039                         , p_pad_end_date     => p_pad_end_date
433040                           );
433041 
433042      END IF;
433043 
433044 l_created := EventClass_549(
433045    p_application_id         => p_application_id
433046  , p_base_ledger_id         => p_base_ledger_id
433047  , p_target_ledger_id       => p_target_ledger_id
433048  , p_language               => l_language
433049  , p_currency_code          => l_currency_code
433050  , p_sla_ledger_id          => l_sla_ledger_id
433051  , p_pad_start_date         => p_pad_start_date
433052  , p_pad_end_date           => p_pad_end_date
433053  , p_primary_ledger_id      => p_primary_ledger_id
433054 );
433055 
433056 
433057 
433058      IF ( g_diagnostics_mode ='Y' ) THEN
433059 
433060          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433061           trace
433062               (p_msg      => 'CALL Transaction Objects Diagnostics'
433063               ,p_level    => C_LEVEL_STATEMENT
433064               ,p_module   => l_log_module);
433065 
433066          END IF;
433067 
433068          insert_sources_549(
433069                           p_target_ledger_id => p_target_ledger_id
433070                         , p_language         => l_language
433071                         , p_sla_ledger_id    => l_sla_ledger_id
433072                         , p_pad_start_date   => p_pad_start_date
433073                         , p_pad_end_date     => p_pad_end_date
433074                           );
433075 
433076      END IF;
433077 
433078 l_created := EventClass_550(
433079    p_application_id         => p_application_id
433080  , p_base_ledger_id         => p_base_ledger_id
433081  , p_target_ledger_id       => p_target_ledger_id
433082  , p_language               => l_language
433083  , p_currency_code          => l_currency_code
433084  , p_sla_ledger_id          => l_sla_ledger_id
433085  , p_pad_start_date         => p_pad_start_date
433086  , p_pad_end_date           => p_pad_end_date
433087  , p_primary_ledger_id      => p_primary_ledger_id
433088 );
433089 
433090 
433091 
433092      IF ( g_diagnostics_mode ='Y' ) THEN
433093 
433094          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433095           trace
433096               (p_msg      => 'CALL Transaction Objects Diagnostics'
433097               ,p_level    => C_LEVEL_STATEMENT
433098               ,p_module   => l_log_module);
433099 
433100          END IF;
433101 
433102          insert_sources_550(
433103                           p_target_ledger_id => p_target_ledger_id
433104                         , p_language         => l_language
433105                         , p_sla_ledger_id    => l_sla_ledger_id
433106                         , p_pad_start_date   => p_pad_start_date
433107                         , p_pad_end_date     => p_pad_end_date
433108                           );
433109 
433110      END IF;
433111 
433112 l_created := EventClass_551(
433113    p_application_id         => p_application_id
433114  , p_base_ledger_id         => p_base_ledger_id
433115  , p_target_ledger_id       => p_target_ledger_id
433116  , p_language               => l_language
433117  , p_currency_code          => l_currency_code
433118  , p_sla_ledger_id          => l_sla_ledger_id
433119  , p_pad_start_date         => p_pad_start_date
433120  , p_pad_end_date           => p_pad_end_date
433121  , p_primary_ledger_id      => p_primary_ledger_id
433122 );
433123 
433124 
433125 
433126      IF ( g_diagnostics_mode ='Y' ) THEN
433127 
433128          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433129           trace
433130               (p_msg      => 'CALL Transaction Objects Diagnostics'
433131               ,p_level    => C_LEVEL_STATEMENT
433132               ,p_module   => l_log_module);
433133 
433134          END IF;
433135 
433136          insert_sources_551(
433137                           p_target_ledger_id => p_target_ledger_id
433138                         , p_language         => l_language
433139                         , p_sla_ledger_id    => l_sla_ledger_id
433140                         , p_pad_start_date   => p_pad_start_date
433141                         , p_pad_end_date     => p_pad_end_date
433142                           );
433143 
433144      END IF;
433145 
433146 l_created := EventClass_552(
433147    p_application_id         => p_application_id
433148  , p_base_ledger_id         => p_base_ledger_id
433149  , p_target_ledger_id       => p_target_ledger_id
433150  , p_language               => l_language
433151  , p_currency_code          => l_currency_code
433152  , p_sla_ledger_id          => l_sla_ledger_id
433153  , p_pad_start_date         => p_pad_start_date
433154  , p_pad_end_date           => p_pad_end_date
433155  , p_primary_ledger_id      => p_primary_ledger_id
433156 );
433157 
433158 
433159 
433160      IF ( g_diagnostics_mode ='Y' ) THEN
433161 
433162          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433163           trace
433164               (p_msg      => 'CALL Transaction Objects Diagnostics'
433165               ,p_level    => C_LEVEL_STATEMENT
433166               ,p_module   => l_log_module);
433167 
433168          END IF;
433169 
433170          insert_sources_552(
433171                           p_target_ledger_id => p_target_ledger_id
433172                         , p_language         => l_language
433173                         , p_sla_ledger_id    => l_sla_ledger_id
433174                         , p_pad_start_date   => p_pad_start_date
433175                         , p_pad_end_date     => p_pad_end_date
433176                           );
433177 
433178      END IF;
433179 
433180  l_created :=  EventType_553(
433181    p_application_id         => p_application_id
433182  , p_base_ledger_id         => p_base_ledger_id
433183  , p_target_ledger_id       => p_target_ledger_id
433184  , p_language               => l_language
433185  , p_currency_code          => l_currency_code
433186  , p_sla_ledger_id          => l_sla_ledger_id
433187  , p_pad_start_date         => p_pad_start_date
433188  , p_pad_end_date           => p_pad_end_date
433189  , p_primary_ledger_id      => p_primary_ledger_id
433190 );
433191 
433192 
433193 
433194      IF ( g_diagnostics_mode ='Y' ) THEN
433195 
433196          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433197           trace
433198               (p_msg      => 'CALL Transaction Objects Diagnostics'
433199               ,p_level    => C_LEVEL_STATEMENT
433200               ,p_module   => l_log_module);
433201 
433202          END IF;
433203 
433204          insert_sources_553(
433205                           p_target_ledger_id => p_target_ledger_id
433206                         , p_language         => l_language
433207                         , p_sla_ledger_id    => l_sla_ledger_id
433208                         , p_pad_start_date   => p_pad_start_date
433209                         , p_pad_end_date     => p_pad_end_date
433210                           );
433211 
433212      END IF;
433213 
433214  l_created :=  EventType_554(
433215    p_application_id         => p_application_id
433216  , p_base_ledger_id         => p_base_ledger_id
433217  , p_target_ledger_id       => p_target_ledger_id
433218  , p_language               => l_language
433219  , p_currency_code          => l_currency_code
433220  , p_sla_ledger_id          => l_sla_ledger_id
433221  , p_pad_start_date         => p_pad_start_date
433222  , p_pad_end_date           => p_pad_end_date
433223  , p_primary_ledger_id      => p_primary_ledger_id
433224 );
433225 
433226 
433227 
433228      IF ( g_diagnostics_mode ='Y' ) THEN
433229 
433230          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433231           trace
433232               (p_msg      => 'CALL Transaction Objects Diagnostics'
433233               ,p_level    => C_LEVEL_STATEMENT
433234               ,p_module   => l_log_module);
433235 
433236          END IF;
433237 
433238          insert_sources_554(
433239                           p_target_ledger_id => p_target_ledger_id
433240                         , p_language         => l_language
433241                         , p_sla_ledger_id    => l_sla_ledger_id
433242                         , p_pad_start_date   => p_pad_start_date
433243                         , p_pad_end_date     => p_pad_end_date
433244                           );
433245 
433246      END IF;
433247 
433248  l_created :=  EventType_555(
433249    p_application_id         => p_application_id
433250  , p_base_ledger_id         => p_base_ledger_id
433251  , p_target_ledger_id       => p_target_ledger_id
433252  , p_language               => l_language
433253  , p_currency_code          => l_currency_code
433254  , p_sla_ledger_id          => l_sla_ledger_id
433255  , p_pad_start_date         => p_pad_start_date
433256  , p_pad_end_date           => p_pad_end_date
433257  , p_primary_ledger_id      => p_primary_ledger_id
433258 );
433259 
433260 
433261 
433262      IF ( g_diagnostics_mode ='Y' ) THEN
433263 
433264          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433265           trace
433266               (p_msg      => 'CALL Transaction Objects Diagnostics'
433267               ,p_level    => C_LEVEL_STATEMENT
433268               ,p_module   => l_log_module);
433269 
433270          END IF;
433271 
433272          insert_sources_555(
433273                           p_target_ledger_id => p_target_ledger_id
433274                         , p_language         => l_language
433275                         , p_sla_ledger_id    => l_sla_ledger_id
433276                         , p_pad_start_date   => p_pad_start_date
433277                         , p_pad_end_date     => p_pad_end_date
433278                           );
433279 
433280      END IF;
433281 
433282  l_created :=  EventType_556(
433283    p_application_id         => p_application_id
433284  , p_base_ledger_id         => p_base_ledger_id
433285  , p_target_ledger_id       => p_target_ledger_id
433286  , p_language               => l_language
433287  , p_currency_code          => l_currency_code
433288  , p_sla_ledger_id          => l_sla_ledger_id
433289  , p_pad_start_date         => p_pad_start_date
433290  , p_pad_end_date           => p_pad_end_date
433291  , p_primary_ledger_id      => p_primary_ledger_id
433292 );
433293 
433294 
433295 
433296      IF ( g_diagnostics_mode ='Y' ) THEN
433297 
433298          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433299           trace
433300               (p_msg      => 'CALL Transaction Objects Diagnostics'
433301               ,p_level    => C_LEVEL_STATEMENT
433302               ,p_module   => l_log_module);
433303 
433304          END IF;
433305 
433306          insert_sources_556(
433307                           p_target_ledger_id => p_target_ledger_id
433308                         , p_language         => l_language
433309                         , p_sla_ledger_id    => l_sla_ledger_id
433310                         , p_pad_start_date   => p_pad_start_date
433311                         , p_pad_end_date     => p_pad_end_date
433312                           );
433313 
433314      END IF;
433315 
433316  l_created :=  EventType_557(
433317    p_application_id         => p_application_id
433318  , p_base_ledger_id         => p_base_ledger_id
433319  , p_target_ledger_id       => p_target_ledger_id
433320  , p_language               => l_language
433321  , p_currency_code          => l_currency_code
433322  , p_sla_ledger_id          => l_sla_ledger_id
433323  , p_pad_start_date         => p_pad_start_date
433324  , p_pad_end_date           => p_pad_end_date
433325  , p_primary_ledger_id      => p_primary_ledger_id
433326 );
433327 
433328 
433329 
433330      IF ( g_diagnostics_mode ='Y' ) THEN
433331 
433332          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433333           trace
433334               (p_msg      => 'CALL Transaction Objects Diagnostics'
433335               ,p_level    => C_LEVEL_STATEMENT
433336               ,p_module   => l_log_module);
433337 
433338          END IF;
433339 
433340          insert_sources_557(
433341                           p_target_ledger_id => p_target_ledger_id
433342                         , p_language         => l_language
433343                         , p_sla_ledger_id    => l_sla_ledger_id
433344                         , p_pad_start_date   => p_pad_start_date
433345                         , p_pad_end_date     => p_pad_end_date
433346                           );
433347 
433348      END IF;
433349 
433350  l_created :=  EventType_558(
433351    p_application_id         => p_application_id
433352  , p_base_ledger_id         => p_base_ledger_id
433353  , p_target_ledger_id       => p_target_ledger_id
433354  , p_language               => l_language
433355  , p_currency_code          => l_currency_code
433356  , p_sla_ledger_id          => l_sla_ledger_id
433357  , p_pad_start_date         => p_pad_start_date
433358  , p_pad_end_date           => p_pad_end_date
433359  , p_primary_ledger_id      => p_primary_ledger_id
433360 );
433361 
433362 
433363 
433364      IF ( g_diagnostics_mode ='Y' ) THEN
433365 
433366          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433367           trace
433368               (p_msg      => 'CALL Transaction Objects Diagnostics'
433369               ,p_level    => C_LEVEL_STATEMENT
433370               ,p_module   => l_log_module);
433371 
433372          END IF;
433373 
433374          insert_sources_558(
433375                           p_target_ledger_id => p_target_ledger_id
433376                         , p_language         => l_language
433377                         , p_sla_ledger_id    => l_sla_ledger_id
433378                         , p_pad_start_date   => p_pad_start_date
433379                         , p_pad_end_date     => p_pad_end_date
433380                           );
433381 
433382      END IF;
433383 
433384  l_created :=  EventType_559(
433385    p_application_id         => p_application_id
433386  , p_base_ledger_id         => p_base_ledger_id
433387  , p_target_ledger_id       => p_target_ledger_id
433388  , p_language               => l_language
433389  , p_currency_code          => l_currency_code
433390  , p_sla_ledger_id          => l_sla_ledger_id
433391  , p_pad_start_date         => p_pad_start_date
433392  , p_pad_end_date           => p_pad_end_date
433393  , p_primary_ledger_id      => p_primary_ledger_id
433394 );
433395 
433396 
433397 
433398      IF ( g_diagnostics_mode ='Y' ) THEN
433399 
433400          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433401           trace
433402               (p_msg      => 'CALL Transaction Objects Diagnostics'
433403               ,p_level    => C_LEVEL_STATEMENT
433404               ,p_module   => l_log_module);
433405 
433406          END IF;
433407 
433408          insert_sources_559(
433409                           p_target_ledger_id => p_target_ledger_id
433410                         , p_language         => l_language
433411                         , p_sla_ledger_id    => l_sla_ledger_id
433412                         , p_pad_start_date   => p_pad_start_date
433413                         , p_pad_end_date     => p_pad_end_date
433414                           );
433415 
433416      END IF;
433417 
433418  l_created :=  EventType_560(
433419    p_application_id         => p_application_id
433420  , p_base_ledger_id         => p_base_ledger_id
433421  , p_target_ledger_id       => p_target_ledger_id
433422  , p_language               => l_language
433423  , p_currency_code          => l_currency_code
433424  , p_sla_ledger_id          => l_sla_ledger_id
433425  , p_pad_start_date         => p_pad_start_date
433426  , p_pad_end_date           => p_pad_end_date
433427  , p_primary_ledger_id      => p_primary_ledger_id
433428 );
433429 
433430 
433431 
433432      IF ( g_diagnostics_mode ='Y' ) THEN
433433 
433434          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433435           trace
433436               (p_msg      => 'CALL Transaction Objects Diagnostics'
433437               ,p_level    => C_LEVEL_STATEMENT
433438               ,p_module   => l_log_module);
433439 
433440          END IF;
433441 
433442          insert_sources_560(
433443                           p_target_ledger_id => p_target_ledger_id
433444                         , p_language         => l_language
433445                         , p_sla_ledger_id    => l_sla_ledger_id
433446                         , p_pad_start_date   => p_pad_start_date
433447                         , p_pad_end_date     => p_pad_end_date
433448                           );
433449 
433450      END IF;
433451 
433452  l_created :=  EventType_561(
433453    p_application_id         => p_application_id
433454  , p_base_ledger_id         => p_base_ledger_id
433455  , p_target_ledger_id       => p_target_ledger_id
433456  , p_language               => l_language
433457  , p_currency_code          => l_currency_code
433458  , p_sla_ledger_id          => l_sla_ledger_id
433459  , p_pad_start_date         => p_pad_start_date
433460  , p_pad_end_date           => p_pad_end_date
433461  , p_primary_ledger_id      => p_primary_ledger_id
433462 );
433463 
433464 
433465 
433466      IF ( g_diagnostics_mode ='Y' ) THEN
433467 
433468          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433469           trace
433470               (p_msg      => 'CALL Transaction Objects Diagnostics'
433471               ,p_level    => C_LEVEL_STATEMENT
433472               ,p_module   => l_log_module);
433473 
433474          END IF;
433475 
433476          insert_sources_561(
433477                           p_target_ledger_id => p_target_ledger_id
433478                         , p_language         => l_language
433479                         , p_sla_ledger_id    => l_sla_ledger_id
433480                         , p_pad_start_date   => p_pad_start_date
433481                         , p_pad_end_date     => p_pad_end_date
433482                           );
433483 
433484      END IF;
433485 
433486  l_created :=  EventType_562(
433487    p_application_id         => p_application_id
433488  , p_base_ledger_id         => p_base_ledger_id
433489  , p_target_ledger_id       => p_target_ledger_id
433490  , p_language               => l_language
433491  , p_currency_code          => l_currency_code
433492  , p_sla_ledger_id          => l_sla_ledger_id
433493  , p_pad_start_date         => p_pad_start_date
433494  , p_pad_end_date           => p_pad_end_date
433495  , p_primary_ledger_id      => p_primary_ledger_id
433496 );
433497 
433498 
433499 
433500      IF ( g_diagnostics_mode ='Y' ) THEN
433501 
433502          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433503           trace
433504               (p_msg      => 'CALL Transaction Objects Diagnostics'
433505               ,p_level    => C_LEVEL_STATEMENT
433506               ,p_module   => l_log_module);
433507 
433508          END IF;
433509 
433510          insert_sources_562(
433511                           p_target_ledger_id => p_target_ledger_id
433512                         , p_language         => l_language
433513                         , p_sla_ledger_id    => l_sla_ledger_id
433514                         , p_pad_start_date   => p_pad_start_date
433515                         , p_pad_end_date     => p_pad_end_date
433516                           );
433517 
433518      END IF;
433519 
433520  l_created :=  EventType_563(
433521    p_application_id         => p_application_id
433522  , p_base_ledger_id         => p_base_ledger_id
433523  , p_target_ledger_id       => p_target_ledger_id
433524  , p_language               => l_language
433525  , p_currency_code          => l_currency_code
433526  , p_sla_ledger_id          => l_sla_ledger_id
433527  , p_pad_start_date         => p_pad_start_date
433528  , p_pad_end_date           => p_pad_end_date
433529  , p_primary_ledger_id      => p_primary_ledger_id
433530 );
433531 
433532 
433533 
433534      IF ( g_diagnostics_mode ='Y' ) THEN
433535 
433536          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433537           trace
433538               (p_msg      => 'CALL Transaction Objects Diagnostics'
433539               ,p_level    => C_LEVEL_STATEMENT
433540               ,p_module   => l_log_module);
433541 
433542          END IF;
433543 
433544          insert_sources_563(
433545                           p_target_ledger_id => p_target_ledger_id
433546                         , p_language         => l_language
433547                         , p_sla_ledger_id    => l_sla_ledger_id
433548                         , p_pad_start_date   => p_pad_start_date
433549                         , p_pad_end_date     => p_pad_end_date
433550                           );
433551 
433552      END IF;
433553 
433554  l_created :=  EventType_564(
433555    p_application_id         => p_application_id
433556  , p_base_ledger_id         => p_base_ledger_id
433557  , p_target_ledger_id       => p_target_ledger_id
433558  , p_language               => l_language
433559  , p_currency_code          => l_currency_code
433560  , p_sla_ledger_id          => l_sla_ledger_id
433561  , p_pad_start_date         => p_pad_start_date
433562  , p_pad_end_date           => p_pad_end_date
433563  , p_primary_ledger_id      => p_primary_ledger_id
433564 );
433565 
433566 
433567 
433568      IF ( g_diagnostics_mode ='Y' ) THEN
433569 
433570          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433571           trace
433572               (p_msg      => 'CALL Transaction Objects Diagnostics'
433573               ,p_level    => C_LEVEL_STATEMENT
433574               ,p_module   => l_log_module);
433575 
433576          END IF;
433577 
433578          insert_sources_564(
433579                           p_target_ledger_id => p_target_ledger_id
433580                         , p_language         => l_language
433581                         , p_sla_ledger_id    => l_sla_ledger_id
433582                         , p_pad_start_date   => p_pad_start_date
433583                         , p_pad_end_date     => p_pad_end_date
433584                           );
433585 
433586      END IF;
433587 
433588  l_created :=  EventType_565(
433589    p_application_id         => p_application_id
433590  , p_base_ledger_id         => p_base_ledger_id
433591  , p_target_ledger_id       => p_target_ledger_id
433592  , p_language               => l_language
433593  , p_currency_code          => l_currency_code
433594  , p_sla_ledger_id          => l_sla_ledger_id
433595  , p_pad_start_date         => p_pad_start_date
433596  , p_pad_end_date           => p_pad_end_date
433597  , p_primary_ledger_id      => p_primary_ledger_id
433598 );
433599 
433600 
433601 
433602      IF ( g_diagnostics_mode ='Y' ) THEN
433603 
433604          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433605           trace
433606               (p_msg      => 'CALL Transaction Objects Diagnostics'
433607               ,p_level    => C_LEVEL_STATEMENT
433608               ,p_module   => l_log_module);
433609 
433610          END IF;
433611 
433612          insert_sources_565(
433613                           p_target_ledger_id => p_target_ledger_id
433614                         , p_language         => l_language
433615                         , p_sla_ledger_id    => l_sla_ledger_id
433616                         , p_pad_start_date   => p_pad_start_date
433617                         , p_pad_end_date     => p_pad_end_date
433618                           );
433619 
433620      END IF;
433621 
433622 l_created := EventClass_566(
433623    p_application_id         => p_application_id
433624  , p_base_ledger_id         => p_base_ledger_id
433625  , p_target_ledger_id       => p_target_ledger_id
433626  , p_language               => l_language
433627  , p_currency_code          => l_currency_code
433628  , p_sla_ledger_id          => l_sla_ledger_id
433629  , p_pad_start_date         => p_pad_start_date
433630  , p_pad_end_date           => p_pad_end_date
433631  , p_primary_ledger_id      => p_primary_ledger_id
433632 );
433633 
433634 
433635 
433636      IF ( g_diagnostics_mode ='Y' ) THEN
433637 
433638          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433639           trace
433640               (p_msg      => 'CALL Transaction Objects Diagnostics'
433641               ,p_level    => C_LEVEL_STATEMENT
433642               ,p_module   => l_log_module);
433643 
433644          END IF;
433645 
433646          insert_sources_566(
433647                           p_target_ledger_id => p_target_ledger_id
433648                         , p_language         => l_language
433649                         , p_sla_ledger_id    => l_sla_ledger_id
433650                         , p_pad_start_date   => p_pad_start_date
433651                         , p_pad_end_date     => p_pad_end_date
433652                           );
433653 
433654      END IF;
433655 
433656  l_created :=  EventType_567(
433657    p_application_id         => p_application_id
433658  , p_base_ledger_id         => p_base_ledger_id
433659  , p_target_ledger_id       => p_target_ledger_id
433660  , p_language               => l_language
433661  , p_currency_code          => l_currency_code
433662  , p_sla_ledger_id          => l_sla_ledger_id
433663  , p_pad_start_date         => p_pad_start_date
433664  , p_pad_end_date           => p_pad_end_date
433665  , p_primary_ledger_id      => p_primary_ledger_id
433666 );
433667 
433668 
433669 
433670      IF ( g_diagnostics_mode ='Y' ) THEN
433671 
433672          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433673           trace
433674               (p_msg      => 'CALL Transaction Objects Diagnostics'
433675               ,p_level    => C_LEVEL_STATEMENT
433676               ,p_module   => l_log_module);
433677 
433678          END IF;
433679 
433680          insert_sources_567(
433681                           p_target_ledger_id => p_target_ledger_id
433682                         , p_language         => l_language
433683                         , p_sla_ledger_id    => l_sla_ledger_id
433684                         , p_pad_start_date   => p_pad_start_date
433685                         , p_pad_end_date     => p_pad_end_date
433686                           );
433687 
433688      END IF;
433689 
433690  l_created :=  EventType_568(
433691    p_application_id         => p_application_id
433692  , p_base_ledger_id         => p_base_ledger_id
433693  , p_target_ledger_id       => p_target_ledger_id
433694  , p_language               => l_language
433695  , p_currency_code          => l_currency_code
433696  , p_sla_ledger_id          => l_sla_ledger_id
433697  , p_pad_start_date         => p_pad_start_date
433698  , p_pad_end_date           => p_pad_end_date
433699  , p_primary_ledger_id      => p_primary_ledger_id
433700 );
433701 
433702 
433703 
433704      IF ( g_diagnostics_mode ='Y' ) THEN
433705 
433706          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433707           trace
433708               (p_msg      => 'CALL Transaction Objects Diagnostics'
433709               ,p_level    => C_LEVEL_STATEMENT
433710               ,p_module   => l_log_module);
433711 
433712          END IF;
433713 
433714          insert_sources_568(
433715                           p_target_ledger_id => p_target_ledger_id
433716                         , p_language         => l_language
433717                         , p_sla_ledger_id    => l_sla_ledger_id
433718                         , p_pad_start_date   => p_pad_start_date
433719                         , p_pad_end_date     => p_pad_end_date
433720                           );
433721 
433722      END IF;
433723 
433724  l_created :=  EventType_569(
433725    p_application_id         => p_application_id
433726  , p_base_ledger_id         => p_base_ledger_id
433727  , p_target_ledger_id       => p_target_ledger_id
433728  , p_language               => l_language
433729  , p_currency_code          => l_currency_code
433730  , p_sla_ledger_id          => l_sla_ledger_id
433731  , p_pad_start_date         => p_pad_start_date
433732  , p_pad_end_date           => p_pad_end_date
433733  , p_primary_ledger_id      => p_primary_ledger_id
433734 );
433735 
433736 
433737 
433738      IF ( g_diagnostics_mode ='Y' ) THEN
433739 
433740          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433741           trace
433742               (p_msg      => 'CALL Transaction Objects Diagnostics'
433743               ,p_level    => C_LEVEL_STATEMENT
433744               ,p_module   => l_log_module);
433745 
433746          END IF;
433747 
433748          insert_sources_569(
433749                           p_target_ledger_id => p_target_ledger_id
433750                         , p_language         => l_language
433751                         , p_sla_ledger_id    => l_sla_ledger_id
433752                         , p_pad_start_date   => p_pad_start_date
433753                         , p_pad_end_date     => p_pad_end_date
433754                           );
433755 
433756      END IF;
433757 
433758  l_created :=  EventType_570(
433759    p_application_id         => p_application_id
433760  , p_base_ledger_id         => p_base_ledger_id
433761  , p_target_ledger_id       => p_target_ledger_id
433762  , p_language               => l_language
433763  , p_currency_code          => l_currency_code
433764  , p_sla_ledger_id          => l_sla_ledger_id
433765  , p_pad_start_date         => p_pad_start_date
433766  , p_pad_end_date           => p_pad_end_date
433767  , p_primary_ledger_id      => p_primary_ledger_id
433768 );
433769 
433770 
433771 
433772      IF ( g_diagnostics_mode ='Y' ) THEN
433773 
433774          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433775           trace
433776               (p_msg      => 'CALL Transaction Objects Diagnostics'
433777               ,p_level    => C_LEVEL_STATEMENT
433778               ,p_module   => l_log_module);
433779 
433780          END IF;
433781 
433782          insert_sources_570(
433783                           p_target_ledger_id => p_target_ledger_id
433784                         , p_language         => l_language
433785                         , p_sla_ledger_id    => l_sla_ledger_id
433786                         , p_pad_start_date   => p_pad_start_date
433787                         , p_pad_end_date     => p_pad_end_date
433788                           );
433789 
433790      END IF;
433791 
433792  l_created :=  EventType_571(
433793    p_application_id         => p_application_id
433794  , p_base_ledger_id         => p_base_ledger_id
433795  , p_target_ledger_id       => p_target_ledger_id
433796  , p_language               => l_language
433797  , p_currency_code          => l_currency_code
433798  , p_sla_ledger_id          => l_sla_ledger_id
433799  , p_pad_start_date         => p_pad_start_date
433800  , p_pad_end_date           => p_pad_end_date
433801  , p_primary_ledger_id      => p_primary_ledger_id
433802 );
433803 
433804 
433805 
433806      IF ( g_diagnostics_mode ='Y' ) THEN
433807 
433808          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433809           trace
433810               (p_msg      => 'CALL Transaction Objects Diagnostics'
433811               ,p_level    => C_LEVEL_STATEMENT
433812               ,p_module   => l_log_module);
433813 
433814          END IF;
433815 
433816          insert_sources_571(
433817                           p_target_ledger_id => p_target_ledger_id
433818                         , p_language         => l_language
433819                         , p_sla_ledger_id    => l_sla_ledger_id
433820                         , p_pad_start_date   => p_pad_start_date
433821                         , p_pad_end_date     => p_pad_end_date
433822                           );
433823 
433824      END IF;
433825 
433826 l_created := EventClass_572(
433827    p_application_id         => p_application_id
433828  , p_base_ledger_id         => p_base_ledger_id
433829  , p_target_ledger_id       => p_target_ledger_id
433830  , p_language               => l_language
433831  , p_currency_code          => l_currency_code
433832  , p_sla_ledger_id          => l_sla_ledger_id
433833  , p_pad_start_date         => p_pad_start_date
433834  , p_pad_end_date           => p_pad_end_date
433835  , p_primary_ledger_id      => p_primary_ledger_id
433836 );
433837 
433838 
433839 
433840      IF ( g_diagnostics_mode ='Y' ) THEN
433841 
433842          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433843           trace
433844               (p_msg      => 'CALL Transaction Objects Diagnostics'
433845               ,p_level    => C_LEVEL_STATEMENT
433846               ,p_module   => l_log_module);
433847 
433848          END IF;
433849 
433850          insert_sources_572(
433851                           p_target_ledger_id => p_target_ledger_id
433852                         , p_language         => l_language
433853                         , p_sla_ledger_id    => l_sla_ledger_id
433854                         , p_pad_start_date   => p_pad_start_date
433855                         , p_pad_end_date     => p_pad_end_date
433856                           );
433857 
433858      END IF;
433859 
433860 l_created := EventClass_573(
433861    p_application_id         => p_application_id
433862  , p_base_ledger_id         => p_base_ledger_id
433863  , p_target_ledger_id       => p_target_ledger_id
433864  , p_language               => l_language
433865  , p_currency_code          => l_currency_code
433866  , p_sla_ledger_id          => l_sla_ledger_id
433867  , p_pad_start_date         => p_pad_start_date
433868  , p_pad_end_date           => p_pad_end_date
433869  , p_primary_ledger_id      => p_primary_ledger_id
433870 );
433871 
433872 
433873 
433874      IF ( g_diagnostics_mode ='Y' ) THEN
433875 
433876          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433877           trace
433878               (p_msg      => 'CALL Transaction Objects Diagnostics'
433879               ,p_level    => C_LEVEL_STATEMENT
433880               ,p_module   => l_log_module);
433881 
433882          END IF;
433883 
433884          insert_sources_573(
433885                           p_target_ledger_id => p_target_ledger_id
433886                         , p_language         => l_language
433887                         , p_sla_ledger_id    => l_sla_ledger_id
433888                         , p_pad_start_date   => p_pad_start_date
433889                         , p_pad_end_date     => p_pad_end_date
433890                           );
433891 
433892      END IF;
433893 
433894  l_created :=  EventType_574(
433895    p_application_id         => p_application_id
433896  , p_base_ledger_id         => p_base_ledger_id
433897  , p_target_ledger_id       => p_target_ledger_id
433898  , p_language               => l_language
433899  , p_currency_code          => l_currency_code
433900  , p_sla_ledger_id          => l_sla_ledger_id
433901  , p_pad_start_date         => p_pad_start_date
433902  , p_pad_end_date           => p_pad_end_date
433903  , p_primary_ledger_id      => p_primary_ledger_id
433904 );
433905 
433906 
433907 
433908      IF ( g_diagnostics_mode ='Y' ) THEN
433909 
433910          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433911           trace
433912               (p_msg      => 'CALL Transaction Objects Diagnostics'
433913               ,p_level    => C_LEVEL_STATEMENT
433914               ,p_module   => l_log_module);
433915 
433916          END IF;
433917 
433918          insert_sources_574(
433919                           p_target_ledger_id => p_target_ledger_id
433920                         , p_language         => l_language
433921                         , p_sla_ledger_id    => l_sla_ledger_id
433922                         , p_pad_start_date   => p_pad_start_date
433923                         , p_pad_end_date     => p_pad_end_date
433924                           );
433925 
433926      END IF;
433927 
433928  l_created :=  EventType_575(
433929    p_application_id         => p_application_id
433930  , p_base_ledger_id         => p_base_ledger_id
433931  , p_target_ledger_id       => p_target_ledger_id
433932  , p_language               => l_language
433933  , p_currency_code          => l_currency_code
433934  , p_sla_ledger_id          => l_sla_ledger_id
433935  , p_pad_start_date         => p_pad_start_date
433936  , p_pad_end_date           => p_pad_end_date
433937  , p_primary_ledger_id      => p_primary_ledger_id
433938 );
433939 
433940 
433941 
433942      IF ( g_diagnostics_mode ='Y' ) THEN
433943 
433944          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433945           trace
433946               (p_msg      => 'CALL Transaction Objects Diagnostics'
433947               ,p_level    => C_LEVEL_STATEMENT
433948               ,p_module   => l_log_module);
433949 
433950          END IF;
433951 
433952          insert_sources_575(
433953                           p_target_ledger_id => p_target_ledger_id
433954                         , p_language         => l_language
433955                         , p_sla_ledger_id    => l_sla_ledger_id
433956                         , p_pad_start_date   => p_pad_start_date
433957                         , p_pad_end_date     => p_pad_end_date
433958                           );
433959 
433960      END IF;
433961 
433962  l_created :=  EventType_576(
433963    p_application_id         => p_application_id
433964  , p_base_ledger_id         => p_base_ledger_id
433965  , p_target_ledger_id       => p_target_ledger_id
433966  , p_language               => l_language
433967  , p_currency_code          => l_currency_code
433968  , p_sla_ledger_id          => l_sla_ledger_id
433969  , p_pad_start_date         => p_pad_start_date
433970  , p_pad_end_date           => p_pad_end_date
433971  , p_primary_ledger_id      => p_primary_ledger_id
433972 );
433973 
433974 
433975 
433976      IF ( g_diagnostics_mode ='Y' ) THEN
433977 
433978          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
433979           trace
433980               (p_msg      => 'CALL Transaction Objects Diagnostics'
433981               ,p_level    => C_LEVEL_STATEMENT
433982               ,p_module   => l_log_module);
433983 
433984          END IF;
433985 
433986          insert_sources_576(
433987                           p_target_ledger_id => p_target_ledger_id
433988                         , p_language         => l_language
433989                         , p_sla_ledger_id    => l_sla_ledger_id
433990                         , p_pad_start_date   => p_pad_start_date
433991                         , p_pad_end_date     => p_pad_end_date
433992                           );
433993 
433994      END IF;
433995 
433996  l_created :=  EventType_577(
433997    p_application_id         => p_application_id
433998  , p_base_ledger_id         => p_base_ledger_id
433999  , p_target_ledger_id       => p_target_ledger_id
434000  , p_language               => l_language
434001  , p_currency_code          => l_currency_code
434002  , p_sla_ledger_id          => l_sla_ledger_id
434003  , p_pad_start_date         => p_pad_start_date
434004  , p_pad_end_date           => p_pad_end_date
434005  , p_primary_ledger_id      => p_primary_ledger_id
434006 );
434007 
434008 
434009 
434010      IF ( g_diagnostics_mode ='Y' ) THEN
434011 
434012          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434013           trace
434014               (p_msg      => 'CALL Transaction Objects Diagnostics'
434015               ,p_level    => C_LEVEL_STATEMENT
434016               ,p_module   => l_log_module);
434017 
434018          END IF;
434019 
434020          insert_sources_577(
434021                           p_target_ledger_id => p_target_ledger_id
434022                         , p_language         => l_language
434023                         , p_sla_ledger_id    => l_sla_ledger_id
434024                         , p_pad_start_date   => p_pad_start_date
434025                         , p_pad_end_date     => p_pad_end_date
434026                           );
434027 
434028      END IF;
434029 
434030  l_created :=  EventType_578(
434031    p_application_id         => p_application_id
434032  , p_base_ledger_id         => p_base_ledger_id
434033  , p_target_ledger_id       => p_target_ledger_id
434034  , p_language               => l_language
434035  , p_currency_code          => l_currency_code
434036  , p_sla_ledger_id          => l_sla_ledger_id
434037  , p_pad_start_date         => p_pad_start_date
434038  , p_pad_end_date           => p_pad_end_date
434039  , p_primary_ledger_id      => p_primary_ledger_id
434040 );
434041 
434042 
434043 
434044      IF ( g_diagnostics_mode ='Y' ) THEN
434045 
434046          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434047           trace
434048               (p_msg      => 'CALL Transaction Objects Diagnostics'
434049               ,p_level    => C_LEVEL_STATEMENT
434050               ,p_module   => l_log_module);
434051 
434052          END IF;
434053 
434054          insert_sources_578(
434055                           p_target_ledger_id => p_target_ledger_id
434056                         , p_language         => l_language
434057                         , p_sla_ledger_id    => l_sla_ledger_id
434058                         , p_pad_start_date   => p_pad_start_date
434059                         , p_pad_end_date     => p_pad_end_date
434060                           );
434061 
434062      END IF;
434063 
434064  l_created :=  EventType_579(
434065    p_application_id         => p_application_id
434066  , p_base_ledger_id         => p_base_ledger_id
434067  , p_target_ledger_id       => p_target_ledger_id
434068  , p_language               => l_language
434069  , p_currency_code          => l_currency_code
434070  , p_sla_ledger_id          => l_sla_ledger_id
434071  , p_pad_start_date         => p_pad_start_date
434072  , p_pad_end_date           => p_pad_end_date
434073  , p_primary_ledger_id      => p_primary_ledger_id
434074 );
434075 
434076 
434077 
434078      IF ( g_diagnostics_mode ='Y' ) THEN
434079 
434080          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434081           trace
434082               (p_msg      => 'CALL Transaction Objects Diagnostics'
434083               ,p_level    => C_LEVEL_STATEMENT
434084               ,p_module   => l_log_module);
434085 
434086          END IF;
434087 
434088          insert_sources_579(
434089                           p_target_ledger_id => p_target_ledger_id
434090                         , p_language         => l_language
434091                         , p_sla_ledger_id    => l_sla_ledger_id
434092                         , p_pad_start_date   => p_pad_start_date
434093                         , p_pad_end_date     => p_pad_end_date
434094                           );
434095 
434096      END IF;
434097 
434098  l_created :=  EventType_580(
434099    p_application_id         => p_application_id
434100  , p_base_ledger_id         => p_base_ledger_id
434101  , p_target_ledger_id       => p_target_ledger_id
434102  , p_language               => l_language
434103  , p_currency_code          => l_currency_code
434104  , p_sla_ledger_id          => l_sla_ledger_id
434105  , p_pad_start_date         => p_pad_start_date
434106  , p_pad_end_date           => p_pad_end_date
434107  , p_primary_ledger_id      => p_primary_ledger_id
434108 );
434109 
434110 
434111 
434112      IF ( g_diagnostics_mode ='Y' ) THEN
434113 
434114          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434115           trace
434116               (p_msg      => 'CALL Transaction Objects Diagnostics'
434117               ,p_level    => C_LEVEL_STATEMENT
434118               ,p_module   => l_log_module);
434119 
434120          END IF;
434121 
434122          insert_sources_580(
434123                           p_target_ledger_id => p_target_ledger_id
434124                         , p_language         => l_language
434125                         , p_sla_ledger_id    => l_sla_ledger_id
434126                         , p_pad_start_date   => p_pad_start_date
434127                         , p_pad_end_date     => p_pad_end_date
434128                           );
434129 
434130      END IF;
434131 
434132  l_created :=  EventType_581(
434133    p_application_id         => p_application_id
434134  , p_base_ledger_id         => p_base_ledger_id
434135  , p_target_ledger_id       => p_target_ledger_id
434136  , p_language               => l_language
434137  , p_currency_code          => l_currency_code
434138  , p_sla_ledger_id          => l_sla_ledger_id
434139  , p_pad_start_date         => p_pad_start_date
434140  , p_pad_end_date           => p_pad_end_date
434141  , p_primary_ledger_id      => p_primary_ledger_id
434142 );
434143 
434144 
434145 
434146      IF ( g_diagnostics_mode ='Y' ) THEN
434147 
434148          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434149           trace
434150               (p_msg      => 'CALL Transaction Objects Diagnostics'
434151               ,p_level    => C_LEVEL_STATEMENT
434152               ,p_module   => l_log_module);
434153 
434154          END IF;
434155 
434156          insert_sources_581(
434157                           p_target_ledger_id => p_target_ledger_id
434158                         , p_language         => l_language
434159                         , p_sla_ledger_id    => l_sla_ledger_id
434160                         , p_pad_start_date   => p_pad_start_date
434161                         , p_pad_end_date     => p_pad_end_date
434162                           );
434163 
434164      END IF;
434165 
434166  l_created :=  EventType_582(
434167    p_application_id         => p_application_id
434168  , p_base_ledger_id         => p_base_ledger_id
434169  , p_target_ledger_id       => p_target_ledger_id
434170  , p_language               => l_language
434171  , p_currency_code          => l_currency_code
434172  , p_sla_ledger_id          => l_sla_ledger_id
434173  , p_pad_start_date         => p_pad_start_date
434174  , p_pad_end_date           => p_pad_end_date
434175  , p_primary_ledger_id      => p_primary_ledger_id
434176 );
434177 
434178 
434179 
434180      IF ( g_diagnostics_mode ='Y' ) THEN
434181 
434182          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434183           trace
434184               (p_msg      => 'CALL Transaction Objects Diagnostics'
434185               ,p_level    => C_LEVEL_STATEMENT
434186               ,p_module   => l_log_module);
434187 
434188          END IF;
434189 
434190          insert_sources_582(
434191                           p_target_ledger_id => p_target_ledger_id
434192                         , p_language         => l_language
434193                         , p_sla_ledger_id    => l_sla_ledger_id
434194                         , p_pad_start_date   => p_pad_start_date
434195                         , p_pad_end_date     => p_pad_end_date
434196                           );
434197 
434198      END IF;
434199 
434200 l_created := EventClass_583(
434201    p_application_id         => p_application_id
434202  , p_base_ledger_id         => p_base_ledger_id
434203  , p_target_ledger_id       => p_target_ledger_id
434204  , p_language               => l_language
434205  , p_currency_code          => l_currency_code
434206  , p_sla_ledger_id          => l_sla_ledger_id
434207  , p_pad_start_date         => p_pad_start_date
434208  , p_pad_end_date           => p_pad_end_date
434209  , p_primary_ledger_id      => p_primary_ledger_id
434210 );
434211 
434212 
434213 
434214      IF ( g_diagnostics_mode ='Y' ) THEN
434215 
434216          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434217           trace
434218               (p_msg      => 'CALL Transaction Objects Diagnostics'
434219               ,p_level    => C_LEVEL_STATEMENT
434220               ,p_module   => l_log_module);
434221 
434222          END IF;
434223 
434224          insert_sources_583(
434225                           p_target_ledger_id => p_target_ledger_id
434226                         , p_language         => l_language
434227                         , p_sla_ledger_id    => l_sla_ledger_id
434228                         , p_pad_start_date   => p_pad_start_date
434229                         , p_pad_end_date     => p_pad_end_date
434230                           );
434231 
434232      END IF;
434233 
434234 l_created := EventClass_584(
434235    p_application_id         => p_application_id
434236  , p_base_ledger_id         => p_base_ledger_id
434237  , p_target_ledger_id       => p_target_ledger_id
434238  , p_language               => l_language
434239  , p_currency_code          => l_currency_code
434240  , p_sla_ledger_id          => l_sla_ledger_id
434241  , p_pad_start_date         => p_pad_start_date
434242  , p_pad_end_date           => p_pad_end_date
434243  , p_primary_ledger_id      => p_primary_ledger_id
434244 );
434245 
434246 
434247 
434248      IF ( g_diagnostics_mode ='Y' ) THEN
434249 
434250          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434251           trace
434252               (p_msg      => 'CALL Transaction Objects Diagnostics'
434253               ,p_level    => C_LEVEL_STATEMENT
434254               ,p_module   => l_log_module);
434255 
434256          END IF;
434257 
434258          insert_sources_584(
434259                           p_target_ledger_id => p_target_ledger_id
434260                         , p_language         => l_language
434261                         , p_sla_ledger_id    => l_sla_ledger_id
434262                         , p_pad_start_date   => p_pad_start_date
434263                         , p_pad_end_date     => p_pad_end_date
434264                           );
434265 
434266      END IF;
434267 
434268  l_created :=  EventType_585(
434269    p_application_id         => p_application_id
434270  , p_base_ledger_id         => p_base_ledger_id
434271  , p_target_ledger_id       => p_target_ledger_id
434272  , p_language               => l_language
434273  , p_currency_code          => l_currency_code
434274  , p_sla_ledger_id          => l_sla_ledger_id
434275  , p_pad_start_date         => p_pad_start_date
434276  , p_pad_end_date           => p_pad_end_date
434277  , p_primary_ledger_id      => p_primary_ledger_id
434278 );
434279 
434280 
434281 
434282      IF ( g_diagnostics_mode ='Y' ) THEN
434283 
434284          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434285           trace
434286               (p_msg      => 'CALL Transaction Objects Diagnostics'
434287               ,p_level    => C_LEVEL_STATEMENT
434288               ,p_module   => l_log_module);
434289 
434290          END IF;
434291 
434292          insert_sources_585(
434293                           p_target_ledger_id => p_target_ledger_id
434294                         , p_language         => l_language
434295                         , p_sla_ledger_id    => l_sla_ledger_id
434296                         , p_pad_start_date   => p_pad_start_date
434297                         , p_pad_end_date     => p_pad_end_date
434298                           );
434299 
434300      END IF;
434301 
434302 l_created := EventClass_586(
434303    p_application_id         => p_application_id
434304  , p_base_ledger_id         => p_base_ledger_id
434305  , p_target_ledger_id       => p_target_ledger_id
434306  , p_language               => l_language
434307  , p_currency_code          => l_currency_code
434308  , p_sla_ledger_id          => l_sla_ledger_id
434309  , p_pad_start_date         => p_pad_start_date
434310  , p_pad_end_date           => p_pad_end_date
434311  , p_primary_ledger_id      => p_primary_ledger_id
434312 );
434313 
434314 
434315 
434316      IF ( g_diagnostics_mode ='Y' ) THEN
434317 
434318          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434319           trace
434320               (p_msg      => 'CALL Transaction Objects Diagnostics'
434321               ,p_level    => C_LEVEL_STATEMENT
434322               ,p_module   => l_log_module);
434323 
434324          END IF;
434325 
434326          insert_sources_586(
434327                           p_target_ledger_id => p_target_ledger_id
434328                         , p_language         => l_language
434329                         , p_sla_ledger_id    => l_sla_ledger_id
434330                         , p_pad_start_date   => p_pad_start_date
434331                         , p_pad_end_date     => p_pad_end_date
434332                           );
434333 
434334      END IF;
434335 
434336  l_created :=  EventType_587(
434337    p_application_id         => p_application_id
434338  , p_base_ledger_id         => p_base_ledger_id
434339  , p_target_ledger_id       => p_target_ledger_id
434340  , p_language               => l_language
434341  , p_currency_code          => l_currency_code
434342  , p_sla_ledger_id          => l_sla_ledger_id
434343  , p_pad_start_date         => p_pad_start_date
434344  , p_pad_end_date           => p_pad_end_date
434345  , p_primary_ledger_id      => p_primary_ledger_id
434346 );
434347 
434348 
434349 
434350      IF ( g_diagnostics_mode ='Y' ) THEN
434351 
434352          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434353           trace
434354               (p_msg      => 'CALL Transaction Objects Diagnostics'
434355               ,p_level    => C_LEVEL_STATEMENT
434356               ,p_module   => l_log_module);
434357 
434358          END IF;
434359 
434360          insert_sources_587(
434361                           p_target_ledger_id => p_target_ledger_id
434362                         , p_language         => l_language
434363                         , p_sla_ledger_id    => l_sla_ledger_id
434364                         , p_pad_start_date   => p_pad_start_date
434365                         , p_pad_end_date     => p_pad_end_date
434366                           );
434367 
434368      END IF;
434369 
434370  l_created :=  EventType_588(
434371    p_application_id         => p_application_id
434372  , p_base_ledger_id         => p_base_ledger_id
434373  , p_target_ledger_id       => p_target_ledger_id
434374  , p_language               => l_language
434375  , p_currency_code          => l_currency_code
434376  , p_sla_ledger_id          => l_sla_ledger_id
434377  , p_pad_start_date         => p_pad_start_date
434378  , p_pad_end_date           => p_pad_end_date
434379  , p_primary_ledger_id      => p_primary_ledger_id
434380 );
434381 
434382 
434383 
434384      IF ( g_diagnostics_mode ='Y' ) THEN
434385 
434386          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434387           trace
434388               (p_msg      => 'CALL Transaction Objects Diagnostics'
434389               ,p_level    => C_LEVEL_STATEMENT
434390               ,p_module   => l_log_module);
434391 
434392          END IF;
434393 
434394          insert_sources_588(
434395                           p_target_ledger_id => p_target_ledger_id
434396                         , p_language         => l_language
434397                         , p_sla_ledger_id    => l_sla_ledger_id
434398                         , p_pad_start_date   => p_pad_start_date
434399                         , p_pad_end_date     => p_pad_end_date
434400                           );
434401 
434402      END IF;
434403 
434404 l_created := EventClass_589(
434405    p_application_id         => p_application_id
434406  , p_base_ledger_id         => p_base_ledger_id
434407  , p_target_ledger_id       => p_target_ledger_id
434408  , p_language               => l_language
434409  , p_currency_code          => l_currency_code
434410  , p_sla_ledger_id          => l_sla_ledger_id
434411  , p_pad_start_date         => p_pad_start_date
434412  , p_pad_end_date           => p_pad_end_date
434413  , p_primary_ledger_id      => p_primary_ledger_id
434414 );
434415 
434416 
434417 
434418      IF ( g_diagnostics_mode ='Y' ) THEN
434419 
434420          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434421           trace
434422               (p_msg      => 'CALL Transaction Objects Diagnostics'
434423               ,p_level    => C_LEVEL_STATEMENT
434424               ,p_module   => l_log_module);
434425 
434426          END IF;
434427 
434428          insert_sources_589(
434429                           p_target_ledger_id => p_target_ledger_id
434430                         , p_language         => l_language
434431                         , p_sla_ledger_id    => l_sla_ledger_id
434432                         , p_pad_start_date   => p_pad_start_date
434433                         , p_pad_end_date     => p_pad_end_date
434434                           );
434435 
434436      END IF;
434437 
434438 l_created := EventClass_590(
434439    p_application_id         => p_application_id
434440  , p_base_ledger_id         => p_base_ledger_id
434441  , p_target_ledger_id       => p_target_ledger_id
434442  , p_language               => l_language
434443  , p_currency_code          => l_currency_code
434444  , p_sla_ledger_id          => l_sla_ledger_id
434445  , p_pad_start_date         => p_pad_start_date
434446  , p_pad_end_date           => p_pad_end_date
434447  , p_primary_ledger_id      => p_primary_ledger_id
434448 );
434449 
434450 
434451 
434452      IF ( g_diagnostics_mode ='Y' ) THEN
434453 
434454          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434455           trace
434456               (p_msg      => 'CALL Transaction Objects Diagnostics'
434457               ,p_level    => C_LEVEL_STATEMENT
434458               ,p_module   => l_log_module);
434459 
434460          END IF;
434461 
434462          insert_sources_590(
434463                           p_target_ledger_id => p_target_ledger_id
434464                         , p_language         => l_language
434465                         , p_sla_ledger_id    => l_sla_ledger_id
434466                         , p_pad_start_date   => p_pad_start_date
434467                         , p_pad_end_date     => p_pad_end_date
434468                           );
434469 
434470      END IF;
434471 
434472 l_created := EventClass_591(
434473    p_application_id         => p_application_id
434474  , p_base_ledger_id         => p_base_ledger_id
434475  , p_target_ledger_id       => p_target_ledger_id
434476  , p_language               => l_language
434477  , p_currency_code          => l_currency_code
434478  , p_sla_ledger_id          => l_sla_ledger_id
434479  , p_pad_start_date         => p_pad_start_date
434480  , p_pad_end_date           => p_pad_end_date
434481  , p_primary_ledger_id      => p_primary_ledger_id
434482 );
434483 
434484 
434485 
434486      IF ( g_diagnostics_mode ='Y' ) THEN
434487 
434488          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434489           trace
434490               (p_msg      => 'CALL Transaction Objects Diagnostics'
434491               ,p_level    => C_LEVEL_STATEMENT
434492               ,p_module   => l_log_module);
434493 
434494          END IF;
434495 
434496          insert_sources_591(
434497                           p_target_ledger_id => p_target_ledger_id
434498                         , p_language         => l_language
434499                         , p_sla_ledger_id    => l_sla_ledger_id
434500                         , p_pad_start_date   => p_pad_start_date
434501                         , p_pad_end_date     => p_pad_end_date
434502                           );
434503 
434504      END IF;
434505 
434506 l_created := EventClass_592(
434507    p_application_id         => p_application_id
434508  , p_base_ledger_id         => p_base_ledger_id
434509  , p_target_ledger_id       => p_target_ledger_id
434510  , p_language               => l_language
434511  , p_currency_code          => l_currency_code
434512  , p_sla_ledger_id          => l_sla_ledger_id
434513  , p_pad_start_date         => p_pad_start_date
434514  , p_pad_end_date           => p_pad_end_date
434515  , p_primary_ledger_id      => p_primary_ledger_id
434516 );
434517 
434518 
434519 
434520      IF ( g_diagnostics_mode ='Y' ) THEN
434521 
434522          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434523           trace
434524               (p_msg      => 'CALL Transaction Objects Diagnostics'
434525               ,p_level    => C_LEVEL_STATEMENT
434526               ,p_module   => l_log_module);
434527 
434528          END IF;
434529 
434530          insert_sources_592(
434531                           p_target_ledger_id => p_target_ledger_id
434532                         , p_language         => l_language
434533                         , p_sla_ledger_id    => l_sla_ledger_id
434534                         , p_pad_start_date   => p_pad_start_date
434535                         , p_pad_end_date     => p_pad_end_date
434536                           );
434537 
434538      END IF;
434539 
434540  l_created :=  EventType_593(
434541    p_application_id         => p_application_id
434542  , p_base_ledger_id         => p_base_ledger_id
434543  , p_target_ledger_id       => p_target_ledger_id
434544  , p_language               => l_language
434545  , p_currency_code          => l_currency_code
434546  , p_sla_ledger_id          => l_sla_ledger_id
434547  , p_pad_start_date         => p_pad_start_date
434548  , p_pad_end_date           => p_pad_end_date
434549  , p_primary_ledger_id      => p_primary_ledger_id
434550 );
434551 
434552 
434553 
434554      IF ( g_diagnostics_mode ='Y' ) THEN
434555 
434556          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434557           trace
434558               (p_msg      => 'CALL Transaction Objects Diagnostics'
434559               ,p_level    => C_LEVEL_STATEMENT
434560               ,p_module   => l_log_module);
434561 
434562          END IF;
434563 
434564          insert_sources_593(
434565                           p_target_ledger_id => p_target_ledger_id
434566                         , p_language         => l_language
434567                         , p_sla_ledger_id    => l_sla_ledger_id
434568                         , p_pad_start_date   => p_pad_start_date
434569                         , p_pad_end_date     => p_pad_end_date
434570                           );
434571 
434572      END IF;
434573 
434574  l_created :=  EventType_594(
434575    p_application_id         => p_application_id
434576  , p_base_ledger_id         => p_base_ledger_id
434577  , p_target_ledger_id       => p_target_ledger_id
434578  , p_language               => l_language
434579  , p_currency_code          => l_currency_code
434580  , p_sla_ledger_id          => l_sla_ledger_id
434581  , p_pad_start_date         => p_pad_start_date
434582  , p_pad_end_date           => p_pad_end_date
434583  , p_primary_ledger_id      => p_primary_ledger_id
434584 );
434585 
434586 
434587 
434588      IF ( g_diagnostics_mode ='Y' ) THEN
434589 
434590          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434591           trace
434592               (p_msg      => 'CALL Transaction Objects Diagnostics'
434593               ,p_level    => C_LEVEL_STATEMENT
434594               ,p_module   => l_log_module);
434595 
434596          END IF;
434597 
434598          insert_sources_594(
434599                           p_target_ledger_id => p_target_ledger_id
434600                         , p_language         => l_language
434601                         , p_sla_ledger_id    => l_sla_ledger_id
434602                         , p_pad_start_date   => p_pad_start_date
434603                         , p_pad_end_date     => p_pad_end_date
434604                           );
434605 
434606      END IF;
434607 
434608  l_created :=  EventType_595(
434609    p_application_id         => p_application_id
434610  , p_base_ledger_id         => p_base_ledger_id
434611  , p_target_ledger_id       => p_target_ledger_id
434612  , p_language               => l_language
434613  , p_currency_code          => l_currency_code
434614  , p_sla_ledger_id          => l_sla_ledger_id
434615  , p_pad_start_date         => p_pad_start_date
434616  , p_pad_end_date           => p_pad_end_date
434617  , p_primary_ledger_id      => p_primary_ledger_id
434618 );
434619 
434620 
434621 
434622      IF ( g_diagnostics_mode ='Y' ) THEN
434623 
434624          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434625           trace
434626               (p_msg      => 'CALL Transaction Objects Diagnostics'
434627               ,p_level    => C_LEVEL_STATEMENT
434628               ,p_module   => l_log_module);
434629 
434630          END IF;
434631 
434632          insert_sources_595(
434633                           p_target_ledger_id => p_target_ledger_id
434634                         , p_language         => l_language
434635                         , p_sla_ledger_id    => l_sla_ledger_id
434636                         , p_pad_start_date   => p_pad_start_date
434637                         , p_pad_end_date     => p_pad_end_date
434638                           );
434639 
434640      END IF;
434641 
434642  l_created :=  EventType_596(
434643    p_application_id         => p_application_id
434644  , p_base_ledger_id         => p_base_ledger_id
434645  , p_target_ledger_id       => p_target_ledger_id
434646  , p_language               => l_language
434647  , p_currency_code          => l_currency_code
434648  , p_sla_ledger_id          => l_sla_ledger_id
434649  , p_pad_start_date         => p_pad_start_date
434650  , p_pad_end_date           => p_pad_end_date
434651  , p_primary_ledger_id      => p_primary_ledger_id
434652 );
434653 
434654 
434655 
434656      IF ( g_diagnostics_mode ='Y' ) THEN
434657 
434658          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434659           trace
434660               (p_msg      => 'CALL Transaction Objects Diagnostics'
434661               ,p_level    => C_LEVEL_STATEMENT
434662               ,p_module   => l_log_module);
434663 
434664          END IF;
434665 
434666          insert_sources_596(
434667                           p_target_ledger_id => p_target_ledger_id
434668                         , p_language         => l_language
434669                         , p_sla_ledger_id    => l_sla_ledger_id
434670                         , p_pad_start_date   => p_pad_start_date
434671                         , p_pad_end_date     => p_pad_end_date
434672                           );
434673 
434674      END IF;
434675 
434676  l_created :=  EventType_597(
434677    p_application_id         => p_application_id
434678  , p_base_ledger_id         => p_base_ledger_id
434679  , p_target_ledger_id       => p_target_ledger_id
434680  , p_language               => l_language
434681  , p_currency_code          => l_currency_code
434682  , p_sla_ledger_id          => l_sla_ledger_id
434683  , p_pad_start_date         => p_pad_start_date
434684  , p_pad_end_date           => p_pad_end_date
434685  , p_primary_ledger_id      => p_primary_ledger_id
434686 );
434687 
434688 
434689 
434690      IF ( g_diagnostics_mode ='Y' ) THEN
434691 
434692          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434693           trace
434694               (p_msg      => 'CALL Transaction Objects Diagnostics'
434695               ,p_level    => C_LEVEL_STATEMENT
434696               ,p_module   => l_log_module);
434697 
434698          END IF;
434699 
434700          insert_sources_597(
434701                           p_target_ledger_id => p_target_ledger_id
434702                         , p_language         => l_language
434703                         , p_sla_ledger_id    => l_sla_ledger_id
434704                         , p_pad_start_date   => p_pad_start_date
434705                         , p_pad_end_date     => p_pad_end_date
434706                           );
434707 
434708      END IF;
434709 
434710  l_created :=  EventType_598(
434711    p_application_id         => p_application_id
434712  , p_base_ledger_id         => p_base_ledger_id
434713  , p_target_ledger_id       => p_target_ledger_id
434714  , p_language               => l_language
434715  , p_currency_code          => l_currency_code
434716  , p_sla_ledger_id          => l_sla_ledger_id
434717  , p_pad_start_date         => p_pad_start_date
434718  , p_pad_end_date           => p_pad_end_date
434719  , p_primary_ledger_id      => p_primary_ledger_id
434720 );
434721 
434722 
434723 
434724      IF ( g_diagnostics_mode ='Y' ) THEN
434725 
434726          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434727           trace
434728               (p_msg      => 'CALL Transaction Objects Diagnostics'
434729               ,p_level    => C_LEVEL_STATEMENT
434730               ,p_module   => l_log_module);
434731 
434732          END IF;
434733 
434734          insert_sources_598(
434735                           p_target_ledger_id => p_target_ledger_id
434736                         , p_language         => l_language
434737                         , p_sla_ledger_id    => l_sla_ledger_id
434738                         , p_pad_start_date   => p_pad_start_date
434739                         , p_pad_end_date     => p_pad_end_date
434740                           );
434741 
434742      END IF;
434743 
434744  l_created :=  EventType_599(
434745    p_application_id         => p_application_id
434746  , p_base_ledger_id         => p_base_ledger_id
434747  , p_target_ledger_id       => p_target_ledger_id
434748  , p_language               => l_language
434749  , p_currency_code          => l_currency_code
434750  , p_sla_ledger_id          => l_sla_ledger_id
434751  , p_pad_start_date         => p_pad_start_date
434752  , p_pad_end_date           => p_pad_end_date
434753  , p_primary_ledger_id      => p_primary_ledger_id
434754 );
434755 
434756 
434757 
434758      IF ( g_diagnostics_mode ='Y' ) THEN
434759 
434760          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434761           trace
434762               (p_msg      => 'CALL Transaction Objects Diagnostics'
434763               ,p_level    => C_LEVEL_STATEMENT
434764               ,p_module   => l_log_module);
434765 
434766          END IF;
434767 
434768          insert_sources_599(
434769                           p_target_ledger_id => p_target_ledger_id
434770                         , p_language         => l_language
434771                         , p_sla_ledger_id    => l_sla_ledger_id
434772                         , p_pad_start_date   => p_pad_start_date
434773                         , p_pad_end_date     => p_pad_end_date
434774                           );
434775 
434776      END IF;
434777 
434778  l_created :=  EventType_600(
434779    p_application_id         => p_application_id
434780  , p_base_ledger_id         => p_base_ledger_id
434781  , p_target_ledger_id       => p_target_ledger_id
434782  , p_language               => l_language
434783  , p_currency_code          => l_currency_code
434784  , p_sla_ledger_id          => l_sla_ledger_id
434785  , p_pad_start_date         => p_pad_start_date
434786  , p_pad_end_date           => p_pad_end_date
434787  , p_primary_ledger_id      => p_primary_ledger_id
434788 );
434789 
434790 
434791 
434792      IF ( g_diagnostics_mode ='Y' ) THEN
434793 
434794          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434795           trace
434796               (p_msg      => 'CALL Transaction Objects Diagnostics'
434797               ,p_level    => C_LEVEL_STATEMENT
434798               ,p_module   => l_log_module);
434799 
434800          END IF;
434801 
434802          insert_sources_600(
434803                           p_target_ledger_id => p_target_ledger_id
434804                         , p_language         => l_language
434805                         , p_sla_ledger_id    => l_sla_ledger_id
434806                         , p_pad_start_date   => p_pad_start_date
434807                         , p_pad_end_date     => p_pad_end_date
434808                           );
434809 
434810      END IF;
434811 
434812  l_created :=  EventType_601(
434813    p_application_id         => p_application_id
434814  , p_base_ledger_id         => p_base_ledger_id
434815  , p_target_ledger_id       => p_target_ledger_id
434816  , p_language               => l_language
434817  , p_currency_code          => l_currency_code
434818  , p_sla_ledger_id          => l_sla_ledger_id
434819  , p_pad_start_date         => p_pad_start_date
434820  , p_pad_end_date           => p_pad_end_date
434821  , p_primary_ledger_id      => p_primary_ledger_id
434822 );
434823 
434824 
434825 
434826      IF ( g_diagnostics_mode ='Y' ) THEN
434827 
434828          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434829           trace
434830               (p_msg      => 'CALL Transaction Objects Diagnostics'
434831               ,p_level    => C_LEVEL_STATEMENT
434832               ,p_module   => l_log_module);
434833 
434834          END IF;
434835 
434836          insert_sources_601(
434837                           p_target_ledger_id => p_target_ledger_id
434838                         , p_language         => l_language
434839                         , p_sla_ledger_id    => l_sla_ledger_id
434840                         , p_pad_start_date   => p_pad_start_date
434841                         , p_pad_end_date     => p_pad_end_date
434842                           );
434843 
434844      END IF;
434845 
434846  l_created :=  EventType_602(
434847    p_application_id         => p_application_id
434848  , p_base_ledger_id         => p_base_ledger_id
434849  , p_target_ledger_id       => p_target_ledger_id
434850  , p_language               => l_language
434851  , p_currency_code          => l_currency_code
434852  , p_sla_ledger_id          => l_sla_ledger_id
434853  , p_pad_start_date         => p_pad_start_date
434854  , p_pad_end_date           => p_pad_end_date
434855  , p_primary_ledger_id      => p_primary_ledger_id
434856 );
434857 
434858 
434859 
434860      IF ( g_diagnostics_mode ='Y' ) THEN
434861 
434862          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434863           trace
434864               (p_msg      => 'CALL Transaction Objects Diagnostics'
434865               ,p_level    => C_LEVEL_STATEMENT
434866               ,p_module   => l_log_module);
434867 
434868          END IF;
434869 
434870          insert_sources_602(
434871                           p_target_ledger_id => p_target_ledger_id
434872                         , p_language         => l_language
434873                         , p_sla_ledger_id    => l_sla_ledger_id
434874                         , p_pad_start_date   => p_pad_start_date
434875                         , p_pad_end_date     => p_pad_end_date
434876                           );
434877 
434878      END IF;
434879 
434880  l_created :=  EventType_603(
434881    p_application_id         => p_application_id
434882  , p_base_ledger_id         => p_base_ledger_id
434883  , p_target_ledger_id       => p_target_ledger_id
434884  , p_language               => l_language
434885  , p_currency_code          => l_currency_code
434886  , p_sla_ledger_id          => l_sla_ledger_id
434887  , p_pad_start_date         => p_pad_start_date
434888  , p_pad_end_date           => p_pad_end_date
434889  , p_primary_ledger_id      => p_primary_ledger_id
434890 );
434891 
434892 
434893 
434894      IF ( g_diagnostics_mode ='Y' ) THEN
434895 
434896          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434897           trace
434898               (p_msg      => 'CALL Transaction Objects Diagnostics'
434899               ,p_level    => C_LEVEL_STATEMENT
434900               ,p_module   => l_log_module);
434901 
434902          END IF;
434903 
434904          insert_sources_603(
434905                           p_target_ledger_id => p_target_ledger_id
434906                         , p_language         => l_language
434907                         , p_sla_ledger_id    => l_sla_ledger_id
434908                         , p_pad_start_date   => p_pad_start_date
434909                         , p_pad_end_date     => p_pad_end_date
434910                           );
434911 
434912      END IF;
434913 
434914  l_created :=  EventType_604(
434915    p_application_id         => p_application_id
434916  , p_base_ledger_id         => p_base_ledger_id
434917  , p_target_ledger_id       => p_target_ledger_id
434918  , p_language               => l_language
434919  , p_currency_code          => l_currency_code
434920  , p_sla_ledger_id          => l_sla_ledger_id
434921  , p_pad_start_date         => p_pad_start_date
434922  , p_pad_end_date           => p_pad_end_date
434923  , p_primary_ledger_id      => p_primary_ledger_id
434924 );
434925 
434926 
434927 
434928      IF ( g_diagnostics_mode ='Y' ) THEN
434929 
434930          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434931           trace
434932               (p_msg      => 'CALL Transaction Objects Diagnostics'
434933               ,p_level    => C_LEVEL_STATEMENT
434934               ,p_module   => l_log_module);
434935 
434936          END IF;
434937 
434938          insert_sources_604(
434939                           p_target_ledger_id => p_target_ledger_id
434940                         , p_language         => l_language
434941                         , p_sla_ledger_id    => l_sla_ledger_id
434942                         , p_pad_start_date   => p_pad_start_date
434943                         , p_pad_end_date     => p_pad_end_date
434944                           );
434945 
434946      END IF;
434947 
434948  l_created :=  EventType_605(
434949    p_application_id         => p_application_id
434950  , p_base_ledger_id         => p_base_ledger_id
434951  , p_target_ledger_id       => p_target_ledger_id
434952  , p_language               => l_language
434953  , p_currency_code          => l_currency_code
434954  , p_sla_ledger_id          => l_sla_ledger_id
434955  , p_pad_start_date         => p_pad_start_date
434956  , p_pad_end_date           => p_pad_end_date
434957  , p_primary_ledger_id      => p_primary_ledger_id
434958 );
434959 
434960 
434961 
434962      IF ( g_diagnostics_mode ='Y' ) THEN
434963 
434964          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434965           trace
434966               (p_msg      => 'CALL Transaction Objects Diagnostics'
434967               ,p_level    => C_LEVEL_STATEMENT
434968               ,p_module   => l_log_module);
434969 
434970          END IF;
434971 
434972          insert_sources_605(
434973                           p_target_ledger_id => p_target_ledger_id
434974                         , p_language         => l_language
434975                         , p_sla_ledger_id    => l_sla_ledger_id
434976                         , p_pad_start_date   => p_pad_start_date
434977                         , p_pad_end_date     => p_pad_end_date
434978                           );
434979 
434980      END IF;
434981 
434982  l_created :=  EventType_606(
434983    p_application_id         => p_application_id
434984  , p_base_ledger_id         => p_base_ledger_id
434985  , p_target_ledger_id       => p_target_ledger_id
434986  , p_language               => l_language
434987  , p_currency_code          => l_currency_code
434988  , p_sla_ledger_id          => l_sla_ledger_id
434989  , p_pad_start_date         => p_pad_start_date
434990  , p_pad_end_date           => p_pad_end_date
434991  , p_primary_ledger_id      => p_primary_ledger_id
434992 );
434993 
434994 
434995 
434996      IF ( g_diagnostics_mode ='Y' ) THEN
434997 
434998          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
434999           trace
435000               (p_msg      => 'CALL Transaction Objects Diagnostics'
435001               ,p_level    => C_LEVEL_STATEMENT
435002               ,p_module   => l_log_module);
435003 
435004          END IF;
435005 
435006          insert_sources_606(
435007                           p_target_ledger_id => p_target_ledger_id
435008                         , p_language         => l_language
435009                         , p_sla_ledger_id    => l_sla_ledger_id
435010                         , p_pad_start_date   => p_pad_start_date
435011                         , p_pad_end_date     => p_pad_end_date
435012                           );
435013 
435014      END IF;
435015 
435016  l_created :=  EventType_607(
435017    p_application_id         => p_application_id
435018  , p_base_ledger_id         => p_base_ledger_id
435019  , p_target_ledger_id       => p_target_ledger_id
435020  , p_language               => l_language
435021  , p_currency_code          => l_currency_code
435022  , p_sla_ledger_id          => l_sla_ledger_id
435023  , p_pad_start_date         => p_pad_start_date
435024  , p_pad_end_date           => p_pad_end_date
435025  , p_primary_ledger_id      => p_primary_ledger_id
435026 );
435027 
435028 
435029 
435030      IF ( g_diagnostics_mode ='Y' ) THEN
435031 
435032          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435033           trace
435034               (p_msg      => 'CALL Transaction Objects Diagnostics'
435035               ,p_level    => C_LEVEL_STATEMENT
435036               ,p_module   => l_log_module);
435037 
435038          END IF;
435039 
435040          insert_sources_607(
435041                           p_target_ledger_id => p_target_ledger_id
435042                         , p_language         => l_language
435043                         , p_sla_ledger_id    => l_sla_ledger_id
435044                         , p_pad_start_date   => p_pad_start_date
435045                         , p_pad_end_date     => p_pad_end_date
435046                           );
435047 
435048      END IF;
435049 
435050  l_created :=  EventType_608(
435051    p_application_id         => p_application_id
435052  , p_base_ledger_id         => p_base_ledger_id
435053  , p_target_ledger_id       => p_target_ledger_id
435054  , p_language               => l_language
435055  , p_currency_code          => l_currency_code
435056  , p_sla_ledger_id          => l_sla_ledger_id
435057  , p_pad_start_date         => p_pad_start_date
435058  , p_pad_end_date           => p_pad_end_date
435059  , p_primary_ledger_id      => p_primary_ledger_id
435060 );
435061 
435062 
435063 
435064      IF ( g_diagnostics_mode ='Y' ) THEN
435065 
435066          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435067           trace
435068               (p_msg      => 'CALL Transaction Objects Diagnostics'
435069               ,p_level    => C_LEVEL_STATEMENT
435070               ,p_module   => l_log_module);
435071 
435072          END IF;
435073 
435074          insert_sources_608(
435075                           p_target_ledger_id => p_target_ledger_id
435076                         , p_language         => l_language
435077                         , p_sla_ledger_id    => l_sla_ledger_id
435078                         , p_pad_start_date   => p_pad_start_date
435079                         , p_pad_end_date     => p_pad_end_date
435080                           );
435081 
435082      END IF;
435083 
435084  l_created :=  EventType_609(
435085    p_application_id         => p_application_id
435086  , p_base_ledger_id         => p_base_ledger_id
435087  , p_target_ledger_id       => p_target_ledger_id
435088  , p_language               => l_language
435089  , p_currency_code          => l_currency_code
435090  , p_sla_ledger_id          => l_sla_ledger_id
435091  , p_pad_start_date         => p_pad_start_date
435092  , p_pad_end_date           => p_pad_end_date
435093  , p_primary_ledger_id      => p_primary_ledger_id
435094 );
435095 
435096 
435097 
435098      IF ( g_diagnostics_mode ='Y' ) THEN
435099 
435100          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435101           trace
435102               (p_msg      => 'CALL Transaction Objects Diagnostics'
435103               ,p_level    => C_LEVEL_STATEMENT
435104               ,p_module   => l_log_module);
435105 
435106          END IF;
435107 
435108          insert_sources_609(
435109                           p_target_ledger_id => p_target_ledger_id
435110                         , p_language         => l_language
435111                         , p_sla_ledger_id    => l_sla_ledger_id
435112                         , p_pad_start_date   => p_pad_start_date
435113                         , p_pad_end_date     => p_pad_end_date
435114                           );
435115 
435116      END IF;
435117 
435118  l_created :=  EventType_610(
435119    p_application_id         => p_application_id
435120  , p_base_ledger_id         => p_base_ledger_id
435121  , p_target_ledger_id       => p_target_ledger_id
435122  , p_language               => l_language
435123  , p_currency_code          => l_currency_code
435124  , p_sla_ledger_id          => l_sla_ledger_id
435125  , p_pad_start_date         => p_pad_start_date
435126  , p_pad_end_date           => p_pad_end_date
435127  , p_primary_ledger_id      => p_primary_ledger_id
435128 );
435129 
435130 
435131 
435132      IF ( g_diagnostics_mode ='Y' ) THEN
435133 
435134          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435135           trace
435136               (p_msg      => 'CALL Transaction Objects Diagnostics'
435137               ,p_level    => C_LEVEL_STATEMENT
435138               ,p_module   => l_log_module);
435139 
435140          END IF;
435141 
435142          insert_sources_610(
435143                           p_target_ledger_id => p_target_ledger_id
435144                         , p_language         => l_language
435145                         , p_sla_ledger_id    => l_sla_ledger_id
435146                         , p_pad_start_date   => p_pad_start_date
435147                         , p_pad_end_date     => p_pad_end_date
435148                           );
435149 
435150      END IF;
435151 
435152  l_created :=  EventType_611(
435153    p_application_id         => p_application_id
435154  , p_base_ledger_id         => p_base_ledger_id
435155  , p_target_ledger_id       => p_target_ledger_id
435156  , p_language               => l_language
435157  , p_currency_code          => l_currency_code
435158  , p_sla_ledger_id          => l_sla_ledger_id
435159  , p_pad_start_date         => p_pad_start_date
435160  , p_pad_end_date           => p_pad_end_date
435161  , p_primary_ledger_id      => p_primary_ledger_id
435162 );
435163 
435164 
435165 
435166      IF ( g_diagnostics_mode ='Y' ) THEN
435167 
435168          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435169           trace
435170               (p_msg      => 'CALL Transaction Objects Diagnostics'
435171               ,p_level    => C_LEVEL_STATEMENT
435172               ,p_module   => l_log_module);
435173 
435174          END IF;
435175 
435176          insert_sources_611(
435177                           p_target_ledger_id => p_target_ledger_id
435178                         , p_language         => l_language
435179                         , p_sla_ledger_id    => l_sla_ledger_id
435180                         , p_pad_start_date   => p_pad_start_date
435181                         , p_pad_end_date     => p_pad_end_date
435182                           );
435183 
435184      END IF;
435185 
435186  l_created :=  EventType_612(
435187    p_application_id         => p_application_id
435188  , p_base_ledger_id         => p_base_ledger_id
435189  , p_target_ledger_id       => p_target_ledger_id
435190  , p_language               => l_language
435191  , p_currency_code          => l_currency_code
435192  , p_sla_ledger_id          => l_sla_ledger_id
435193  , p_pad_start_date         => p_pad_start_date
435194  , p_pad_end_date           => p_pad_end_date
435195  , p_primary_ledger_id      => p_primary_ledger_id
435196 );
435197 
435198 
435199 
435200      IF ( g_diagnostics_mode ='Y' ) THEN
435201 
435202          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435203           trace
435204               (p_msg      => 'CALL Transaction Objects Diagnostics'
435205               ,p_level    => C_LEVEL_STATEMENT
435206               ,p_module   => l_log_module);
435207 
435208          END IF;
435209 
435210          insert_sources_612(
435211                           p_target_ledger_id => p_target_ledger_id
435212                         , p_language         => l_language
435213                         , p_sla_ledger_id    => l_sla_ledger_id
435214                         , p_pad_start_date   => p_pad_start_date
435215                         , p_pad_end_date     => p_pad_end_date
435216                           );
435217 
435218      END IF;
435219 
435220  l_created :=  EventType_613(
435221    p_application_id         => p_application_id
435222  , p_base_ledger_id         => p_base_ledger_id
435223  , p_target_ledger_id       => p_target_ledger_id
435224  , p_language               => l_language
435225  , p_currency_code          => l_currency_code
435226  , p_sla_ledger_id          => l_sla_ledger_id
435227  , p_pad_start_date         => p_pad_start_date
435228  , p_pad_end_date           => p_pad_end_date
435229  , p_primary_ledger_id      => p_primary_ledger_id
435230 );
435231 
435232 
435233 
435234      IF ( g_diagnostics_mode ='Y' ) THEN
435235 
435236          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435237           trace
435238               (p_msg      => 'CALL Transaction Objects Diagnostics'
435239               ,p_level    => C_LEVEL_STATEMENT
435240               ,p_module   => l_log_module);
435241 
435242          END IF;
435243 
435244          insert_sources_613(
435245                           p_target_ledger_id => p_target_ledger_id
435246                         , p_language         => l_language
435247                         , p_sla_ledger_id    => l_sla_ledger_id
435248                         , p_pad_start_date   => p_pad_start_date
435249                         , p_pad_end_date     => p_pad_end_date
435250                           );
435251 
435252      END IF;
435253 
435254  l_created :=  EventType_614(
435255    p_application_id         => p_application_id
435256  , p_base_ledger_id         => p_base_ledger_id
435257  , p_target_ledger_id       => p_target_ledger_id
435258  , p_language               => l_language
435259  , p_currency_code          => l_currency_code
435260  , p_sla_ledger_id          => l_sla_ledger_id
435261  , p_pad_start_date         => p_pad_start_date
435262  , p_pad_end_date           => p_pad_end_date
435263  , p_primary_ledger_id      => p_primary_ledger_id
435264 );
435265 
435266 
435267 
435268      IF ( g_diagnostics_mode ='Y' ) THEN
435269 
435270          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435271           trace
435272               (p_msg      => 'CALL Transaction Objects Diagnostics'
435273               ,p_level    => C_LEVEL_STATEMENT
435274               ,p_module   => l_log_module);
435275 
435276          END IF;
435277 
435278          insert_sources_614(
435279                           p_target_ledger_id => p_target_ledger_id
435280                         , p_language         => l_language
435281                         , p_sla_ledger_id    => l_sla_ledger_id
435282                         , p_pad_start_date   => p_pad_start_date
435283                         , p_pad_end_date     => p_pad_end_date
435284                           );
435285 
435286      END IF;
435287 
435288 l_created := EventClass_615(
435289    p_application_id         => p_application_id
435290  , p_base_ledger_id         => p_base_ledger_id
435291  , p_target_ledger_id       => p_target_ledger_id
435292  , p_language               => l_language
435293  , p_currency_code          => l_currency_code
435294  , p_sla_ledger_id          => l_sla_ledger_id
435295  , p_pad_start_date         => p_pad_start_date
435296  , p_pad_end_date           => p_pad_end_date
435297  , p_primary_ledger_id      => p_primary_ledger_id
435298 );
435299 
435300 
435301 
435302      IF ( g_diagnostics_mode ='Y' ) THEN
435303 
435304          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435305           trace
435306               (p_msg      => 'CALL Transaction Objects Diagnostics'
435307               ,p_level    => C_LEVEL_STATEMENT
435308               ,p_module   => l_log_module);
435309 
435310          END IF;
435311 
435312          insert_sources_615(
435313                           p_target_ledger_id => p_target_ledger_id
435314                         , p_language         => l_language
435315                         , p_sla_ledger_id    => l_sla_ledger_id
435316                         , p_pad_start_date   => p_pad_start_date
435317                         , p_pad_end_date     => p_pad_end_date
435318                           );
435319 
435320      END IF;
435321 
435322  l_created :=  EventType_616(
435323    p_application_id         => p_application_id
435324  , p_base_ledger_id         => p_base_ledger_id
435325  , p_target_ledger_id       => p_target_ledger_id
435326  , p_language               => l_language
435327  , p_currency_code          => l_currency_code
435328  , p_sla_ledger_id          => l_sla_ledger_id
435329  , p_pad_start_date         => p_pad_start_date
435330  , p_pad_end_date           => p_pad_end_date
435331  , p_primary_ledger_id      => p_primary_ledger_id
435332 );
435333 
435334 
435335 
435336      IF ( g_diagnostics_mode ='Y' ) THEN
435337 
435338          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435339           trace
435340               (p_msg      => 'CALL Transaction Objects Diagnostics'
435341               ,p_level    => C_LEVEL_STATEMENT
435342               ,p_module   => l_log_module);
435343 
435344          END IF;
435345 
435346          insert_sources_616(
435347                           p_target_ledger_id => p_target_ledger_id
435348                         , p_language         => l_language
435349                         , p_sla_ledger_id    => l_sla_ledger_id
435350                         , p_pad_start_date   => p_pad_start_date
435351                         , p_pad_end_date     => p_pad_end_date
435352                           );
435353 
435354      END IF;
435355 
435356  l_created :=  EventType_617(
435357    p_application_id         => p_application_id
435358  , p_base_ledger_id         => p_base_ledger_id
435359  , p_target_ledger_id       => p_target_ledger_id
435360  , p_language               => l_language
435361  , p_currency_code          => l_currency_code
435362  , p_sla_ledger_id          => l_sla_ledger_id
435363  , p_pad_start_date         => p_pad_start_date
435364  , p_pad_end_date           => p_pad_end_date
435365  , p_primary_ledger_id      => p_primary_ledger_id
435366 );
435367 
435368 
435369 
435370      IF ( g_diagnostics_mode ='Y' ) THEN
435371 
435372          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435373           trace
435374               (p_msg      => 'CALL Transaction Objects Diagnostics'
435375               ,p_level    => C_LEVEL_STATEMENT
435376               ,p_module   => l_log_module);
435377 
435378          END IF;
435379 
435380          insert_sources_617(
435381                           p_target_ledger_id => p_target_ledger_id
435382                         , p_language         => l_language
435383                         , p_sla_ledger_id    => l_sla_ledger_id
435384                         , p_pad_start_date   => p_pad_start_date
435385                         , p_pad_end_date     => p_pad_end_date
435386                           );
435387 
435388      END IF;
435389 
435390  l_created :=  EventType_618(
435391    p_application_id         => p_application_id
435392  , p_base_ledger_id         => p_base_ledger_id
435393  , p_target_ledger_id       => p_target_ledger_id
435394  , p_language               => l_language
435395  , p_currency_code          => l_currency_code
435396  , p_sla_ledger_id          => l_sla_ledger_id
435397  , p_pad_start_date         => p_pad_start_date
435398  , p_pad_end_date           => p_pad_end_date
435399  , p_primary_ledger_id      => p_primary_ledger_id
435400 );
435401 
435402 
435403 
435404      IF ( g_diagnostics_mode ='Y' ) THEN
435405 
435406          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435407           trace
435408               (p_msg      => 'CALL Transaction Objects Diagnostics'
435409               ,p_level    => C_LEVEL_STATEMENT
435410               ,p_module   => l_log_module);
435411 
435412          END IF;
435413 
435414          insert_sources_618(
435415                           p_target_ledger_id => p_target_ledger_id
435416                         , p_language         => l_language
435417                         , p_sla_ledger_id    => l_sla_ledger_id
435418                         , p_pad_start_date   => p_pad_start_date
435419                         , p_pad_end_date     => p_pad_end_date
435420                           );
435421 
435422      END IF;
435423 
435424  l_created :=  EventType_619(
435425    p_application_id         => p_application_id
435426  , p_base_ledger_id         => p_base_ledger_id
435427  , p_target_ledger_id       => p_target_ledger_id
435428  , p_language               => l_language
435429  , p_currency_code          => l_currency_code
435430  , p_sla_ledger_id          => l_sla_ledger_id
435431  , p_pad_start_date         => p_pad_start_date
435432  , p_pad_end_date           => p_pad_end_date
435433  , p_primary_ledger_id      => p_primary_ledger_id
435434 );
435435 
435436 
435437 
435438      IF ( g_diagnostics_mode ='Y' ) THEN
435439 
435440          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435441           trace
435442               (p_msg      => 'CALL Transaction Objects Diagnostics'
435443               ,p_level    => C_LEVEL_STATEMENT
435444               ,p_module   => l_log_module);
435445 
435446          END IF;
435447 
435448          insert_sources_619(
435449                           p_target_ledger_id => p_target_ledger_id
435450                         , p_language         => l_language
435451                         , p_sla_ledger_id    => l_sla_ledger_id
435452                         , p_pad_start_date   => p_pad_start_date
435453                         , p_pad_end_date     => p_pad_end_date
435454                           );
435455 
435456      END IF;
435457 
435458 l_created := EventClass_620(
435459    p_application_id         => p_application_id
435460  , p_base_ledger_id         => p_base_ledger_id
435461  , p_target_ledger_id       => p_target_ledger_id
435462  , p_language               => l_language
435463  , p_currency_code          => l_currency_code
435464  , p_sla_ledger_id          => l_sla_ledger_id
435465  , p_pad_start_date         => p_pad_start_date
435466  , p_pad_end_date           => p_pad_end_date
435467  , p_primary_ledger_id      => p_primary_ledger_id
435468 );
435469 
435470 
435471 
435472      IF ( g_diagnostics_mode ='Y' ) THEN
435473 
435474          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435475           trace
435476               (p_msg      => 'CALL Transaction Objects Diagnostics'
435477               ,p_level    => C_LEVEL_STATEMENT
435478               ,p_module   => l_log_module);
435479 
435480          END IF;
435481 
435482          insert_sources_620(
435483                           p_target_ledger_id => p_target_ledger_id
435484                         , p_language         => l_language
435485                         , p_sla_ledger_id    => l_sla_ledger_id
435486                         , p_pad_start_date   => p_pad_start_date
435487                         , p_pad_end_date     => p_pad_end_date
435488                           );
435489 
435490      END IF;
435491 
435492  l_created :=  EventType_621(
435493    p_application_id         => p_application_id
435494  , p_base_ledger_id         => p_base_ledger_id
435495  , p_target_ledger_id       => p_target_ledger_id
435496  , p_language               => l_language
435497  , p_currency_code          => l_currency_code
435498  , p_sla_ledger_id          => l_sla_ledger_id
435499  , p_pad_start_date         => p_pad_start_date
435500  , p_pad_end_date           => p_pad_end_date
435501  , p_primary_ledger_id      => p_primary_ledger_id
435502 );
435503 
435504 
435505 
435506      IF ( g_diagnostics_mode ='Y' ) THEN
435507 
435508          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435509           trace
435510               (p_msg      => 'CALL Transaction Objects Diagnostics'
435511               ,p_level    => C_LEVEL_STATEMENT
435512               ,p_module   => l_log_module);
435513 
435514          END IF;
435515 
435516          insert_sources_621(
435517                           p_target_ledger_id => p_target_ledger_id
435518                         , p_language         => l_language
435519                         , p_sla_ledger_id    => l_sla_ledger_id
435520                         , p_pad_start_date   => p_pad_start_date
435521                         , p_pad_end_date     => p_pad_end_date
435522                           );
435523 
435524      END IF;
435525 
435526 l_created := EventClass_622(
435527    p_application_id         => p_application_id
435528  , p_base_ledger_id         => p_base_ledger_id
435529  , p_target_ledger_id       => p_target_ledger_id
435530  , p_language               => l_language
435531  , p_currency_code          => l_currency_code
435532  , p_sla_ledger_id          => l_sla_ledger_id
435533  , p_pad_start_date         => p_pad_start_date
435534  , p_pad_end_date           => p_pad_end_date
435535  , p_primary_ledger_id      => p_primary_ledger_id
435536 );
435537 
435538 
435539 
435540      IF ( g_diagnostics_mode ='Y' ) THEN
435541 
435542          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435543           trace
435544               (p_msg      => 'CALL Transaction Objects Diagnostics'
435545               ,p_level    => C_LEVEL_STATEMENT
435546               ,p_module   => l_log_module);
435547 
435548          END IF;
435549 
435550          insert_sources_622(
435551                           p_target_ledger_id => p_target_ledger_id
435552                         , p_language         => l_language
435553                         , p_sla_ledger_id    => l_sla_ledger_id
435554                         , p_pad_start_date   => p_pad_start_date
435555                         , p_pad_end_date     => p_pad_end_date
435556                           );
435557 
435558      END IF;
435559 
435560  l_created :=  EventType_623(
435561    p_application_id         => p_application_id
435562  , p_base_ledger_id         => p_base_ledger_id
435563  , p_target_ledger_id       => p_target_ledger_id
435564  , p_language               => l_language
435565  , p_currency_code          => l_currency_code
435566  , p_sla_ledger_id          => l_sla_ledger_id
435567  , p_pad_start_date         => p_pad_start_date
435568  , p_pad_end_date           => p_pad_end_date
435569  , p_primary_ledger_id      => p_primary_ledger_id
435570 );
435571 
435572 
435573 
435574      IF ( g_diagnostics_mode ='Y' ) THEN
435575 
435576          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435577           trace
435578               (p_msg      => 'CALL Transaction Objects Diagnostics'
435579               ,p_level    => C_LEVEL_STATEMENT
435580               ,p_module   => l_log_module);
435581 
435582          END IF;
435583 
435584          insert_sources_623(
435585                           p_target_ledger_id => p_target_ledger_id
435586                         , p_language         => l_language
435587                         , p_sla_ledger_id    => l_sla_ledger_id
435588                         , p_pad_start_date   => p_pad_start_date
435589                         , p_pad_end_date     => p_pad_end_date
435590                           );
435591 
435592      END IF;
435593 
435594  l_created :=  EventType_624(
435595    p_application_id         => p_application_id
435596  , p_base_ledger_id         => p_base_ledger_id
435597  , p_target_ledger_id       => p_target_ledger_id
435598  , p_language               => l_language
435599  , p_currency_code          => l_currency_code
435600  , p_sla_ledger_id          => l_sla_ledger_id
435601  , p_pad_start_date         => p_pad_start_date
435602  , p_pad_end_date           => p_pad_end_date
435603  , p_primary_ledger_id      => p_primary_ledger_id
435604 );
435605 
435606 
435607 
435608      IF ( g_diagnostics_mode ='Y' ) THEN
435609 
435610          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435611           trace
435612               (p_msg      => 'CALL Transaction Objects Diagnostics'
435613               ,p_level    => C_LEVEL_STATEMENT
435614               ,p_module   => l_log_module);
435615 
435616          END IF;
435617 
435618          insert_sources_624(
435619                           p_target_ledger_id => p_target_ledger_id
435620                         , p_language         => l_language
435621                         , p_sla_ledger_id    => l_sla_ledger_id
435622                         , p_pad_start_date   => p_pad_start_date
435623                         , p_pad_end_date     => p_pad_end_date
435624                           );
435625 
435626      END IF;
435627 
435628  l_created :=  EventType_625(
435629    p_application_id         => p_application_id
435630  , p_base_ledger_id         => p_base_ledger_id
435631  , p_target_ledger_id       => p_target_ledger_id
435632  , p_language               => l_language
435633  , p_currency_code          => l_currency_code
435634  , p_sla_ledger_id          => l_sla_ledger_id
435635  , p_pad_start_date         => p_pad_start_date
435636  , p_pad_end_date           => p_pad_end_date
435637  , p_primary_ledger_id      => p_primary_ledger_id
435638 );
435639 
435640 
435641 
435642      IF ( g_diagnostics_mode ='Y' ) THEN
435643 
435644          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435645           trace
435646               (p_msg      => 'CALL Transaction Objects Diagnostics'
435647               ,p_level    => C_LEVEL_STATEMENT
435648               ,p_module   => l_log_module);
435649 
435650          END IF;
435651 
435652          insert_sources_625(
435653                           p_target_ledger_id => p_target_ledger_id
435654                         , p_language         => l_language
435655                         , p_sla_ledger_id    => l_sla_ledger_id
435656                         , p_pad_start_date   => p_pad_start_date
435657                         , p_pad_end_date     => p_pad_end_date
435658                           );
435659 
435660      END IF;
435661 
435662 
435663  --
435664  -- Bug 4865292
435665  -- When the number of events and that of header extract do not match,
435666  -- set the no header extract flag to indicate there are some issues
435667  -- in header extract.
435668  --
435669  -- Event count context is set in xla_accounting_pkg.unit_processor.
435670  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
435671  -- to report it as a general error.
435672  --
435673  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
435674  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
435675 
435676      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435677         trace
435678           (p_msg      => '# of extracted headers and events does not match'
435679           ,p_level    => C_LEVEL_STATEMENT
435680           ,p_module   => l_log_module);
435681 
435682         trace
435683           (p_msg      => '# of extracted headers: '
435684                          ||g_hdr_extract_count
435685           ,p_level    => C_LEVEL_STATEMENT
435686           ,p_module   => l_log_module);
435687 
435688         trace
435689           (p_msg      => '# of events in xla_events_gt: '
435690                          ||xla_context_pkg.get_event_count_context
435691           ,p_level    => C_LEVEL_STATEMENT
435692           ,p_module   => l_log_module);
435693 
435694         trace
435695           (p_msg      => 'Event No Header Extract Context: '
435696                          ||xla_context_pkg.get_event_nohdr_context
435697           ,p_level    => C_LEVEL_STATEMENT
435698           ,p_module   => l_log_module);
435699 
435700      END IF;
435701 
435702 
435703      xla_context_pkg.set_event_nohdr_context
435704        (p_nohdr_extract_flag => 'Y'
435705        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
435706 
435707      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435708         trace
435709           (p_msg      => 'No Header Extract Flag is set to Y'
435710           ,p_level    => C_LEVEL_STATEMENT
435711           ,p_module   => l_log_module);
435712      END IF;
435713 
435714  END IF;
435715 
435716 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
435717    trace
435718       (p_msg      => 'END of CreateHeadersAndLines'
435719       ,p_level    => C_LEVEL_PROCEDURE
435720       ,p_module   => l_log_module);
435721 END IF;
435722 
435723 RETURN l_created;
435724 EXCEPTION
435725 WHEN xla_exceptions_pkg.application_exception THEN
435726    RAISE;
435727 WHEN OTHERS THEN
435728    xla_exceptions_pkg.raise_message
435729       (p_location => 'XLA_00707_AAD_S_000020_PKG.CreateHeadersAndLines');
435730 END CreateHeadersAndLines;
435731 --
435732 --
435733 
435734 --
435735 --+============================================+
435736 --|                                            |
435737 --|  PUBLIC FUNCTION                           |
435738 --|                                            |
435739 --+============================================+
435740 --
435741 FUNCTION CreateJournalEntries
435742        (p_application_id         IN NUMBER
435743        ,p_base_ledger_id         IN NUMBER
435744        ,p_pad_start_date         IN DATE
435745        ,p_pad_end_date           IN DATE
435746        ,p_primary_ledger_id      IN NUMBER)
435747 RETURN NUMBER IS
435748 l_log_module                   VARCHAR2(240);
435749 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
435750 l_temp_result                  BOOLEAN;
435751 l_result                       NUMBER;
435752 BEGIN
435753 --
435754 IF g_log_enabled THEN
435755    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
435756 END IF;
435757 --
435758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
435759    trace
435760       (p_msg      => 'BEGIN of CreateJournalEntries'||
435761                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
435762       ,p_level    => C_LEVEL_PROCEDURE
435763       ,p_module   => l_log_module);
435764 
435765 END IF;
435766 
435767 --
435768 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
435769 
435770 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
435771    trace
435772       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
435773       ,p_level    => C_LEVEL_STATEMENT
435774       ,p_module   => l_log_module);
435775 END IF;
435776 --
435777 xla_ae_journal_entry_pkg.SetProductAcctDefinition
435778    (p_product_rule_code      => 'PI_COST_MANAGEMENT_ENC'
435779    ,p_product_rule_type_code => 'S'
435780    ,p_product_rule_version   => ''
435781    ,p_product_rule_name      => 'Permanent Inventory Cost Management Encumbrance'
435782    ,p_amb_context_code       => 'DEFAULT'
435783    );
435784 
435785 l_array_ledgers :=
435786    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
435787       (p_base_ledger_id  => p_base_ledger_id);
435788 
435789 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
435790    l_temp_result :=
435791       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
435792          (p_application_id           => p_application_id
435793          ,p_base_ledger_id           => p_base_ledger_id
435794          ,p_target_ledger_id         => l_array_ledgers(Idx)
435795          ,p_primary_ledger_id        => p_primary_ledger_id
435796          ,p_pad_start_date           => p_pad_start_date
435797          ,p_pad_end_date             => p_pad_end_date);
435798 
435799    l_temp_result :=
435800       l_temp_result AND
435801       CreateHeadersAndLines
435802          (p_application_id             => p_application_id
435803          ,p_base_ledger_id             => p_base_ledger_id
435804          ,p_target_ledger_id           => l_array_ledgers(Idx)
435805          ,p_pad_start_date             => p_pad_start_date
435806          ,p_pad_end_date               => p_pad_end_date
435807          ,p_primary_ledger_id          => p_primary_ledger_id
435808          );
435809 END LOOP;
435810 
435811 
435812 IF (g_diagnostics_mode = 'Y' AND
435813     C_LEVEL_UNEXPECTED >= g_log_level AND
435814     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
435815 
435816    xla_accounting_dump_pkg.acctg_event_extract_log(
435817     p_application_id  => p_application_id
435818     ,p_request_id     => xla_environment_pkg.g_Req_Id
435819    );
435820 
435821 END IF;
435822 
435823 CASE l_temp_result
435824   WHEN TRUE THEN l_result := 0;
435825   ELSE l_result := 2;
435826 END CASE;
435827 
435828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
435829    trace
435830       (p_msg      => 'return value. = '||TO_CHAR(l_result)
435831       ,p_level    => C_LEVEL_PROCEDURE
435832       ,p_module   => l_log_module);
435833    trace
435834       (p_msg      => 'END of CreateJournalEntries '
435835       ,p_level    => C_LEVEL_PROCEDURE
435836       ,p_module   => l_log_module);
435837 END IF;
435838 
435839 RETURN l_result;
435840 EXCEPTION
435841 WHEN xla_exceptions_pkg.application_exception THEN
435842    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
435843    trace
435844       (p_msg      => 'ERROR. = '||sqlerrm
435845       ,p_level    => C_LEVEL_PROCEDURE
435846       ,p_module   => l_log_module);
435847    END IF;
435848    RAISE;
435849 WHEN OTHERS THEN
435850    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
435851    trace
435852       (p_msg      => 'ERROR. = '||sqlerrm
435853       ,p_level    => C_LEVEL_PROCEDURE
435854       ,p_module   => l_log_module);
435855    END IF;
435856    xla_exceptions_pkg.raise_message
435857       (p_location => 'XLA_00707_AAD_S_000020_PKG.CreateJournalEntries');
435858 END CreateJournalEntries;
435859 --
435860 --=============================================================================
435861 --
435862 --
435863 --
435864 --
435865 --
435866 --
435867 --
435868 --
435869 --
435870 --
435871 --
435872 --
435873 --
435874 --
435875 --
435876 --
435877 --
435878 --
435879 --
435880 --
435881 --
435882 --
435883 --=============================================================================
435884 --=============================================================================
435885 --          *********** Initialization routine **********
435886 --=============================================================================
435887 
435888 BEGIN
435889    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
435890    g_log_enabled    := fnd_log.test
435891                           (log_level  => g_log_level
435892                           ,module     => C_DEFAULT_MODULE);
435893 
435894    IF NOT g_log_enabled  THEN
435895       g_log_level := C_LEVEL_LOG_DISABLED;
435896    END IF;
435897 --
435898 END XLA_00707_AAD_S_000020_PKG;
435899 --